332 lines
16 KiB
HTML
332 lines
16 KiB
HTML
|
<!DOCTYPE html>
|
||
|
<html lang="en">
|
||
|
<head>
|
||
|
<meta charset="utf-8">
|
||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
<meta name="description" content="">
|
||
|
<meta name="author" content="">
|
||
|
<link rel="shortcut icon" href="../../../../../../assets/img/favicon.png">
|
||
|
|
||
|
<title>How to install and update programs on Linux </title>
|
||
|
|
||
|
<!-- Bootstrap core CSS -->
|
||
|
<link href="../../assets/css/bootstrap.css" rel="stylesheet">
|
||
|
<link href="../../assets/css/xt256.css" rel="stylesheet">
|
||
|
|
||
|
|
||
|
|
||
|
<!-- Custom styles for this template -->
|
||
|
<link href="../../assets/css/main.css" rel="stylesheet">
|
||
|
|
||
|
|
||
|
|
||
|
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||
|
<!--[if lt IE 9]>
|
||
|
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
|
||
|
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
|
||
|
<![endif]-->
|
||
|
</head>
|
||
|
|
||
|
<body>
|
||
|
|
||
|
<!-- Static navbar -->
|
||
|
<div class="navbar navbar-inverse-anon navbar-static-top">
|
||
|
<div class="container">
|
||
|
<div class="navbar-header">
|
||
|
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
|
||
|
<span class="icon-bar"></span>
|
||
|
<span class="icon-bar"></span>
|
||
|
<span class="icon-bar"></span>
|
||
|
</button>
|
||
|
<a class="navbar-brand-anon" href="\index.html">nihilist`s Blog</a>
|
||
|
</div>
|
||
|
<div class="navbar-collapse collapse">
|
||
|
<ul class="nav navbar-nav navbar-right">
|
||
|
|
||
|
<li><a href="/about.html">About</a></li>
|
||
|
<li><a href="/blog.html">Categories</a></li>
|
||
|
<li><a href="https://blog.nihilism.network/donate.html">Donate</a></li>
|
||
|
<li><a href="/contact.html">Contact</a></li>
|
||
|
</ul>
|
||
|
</div><!--/.nav-collapse -->
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
<!-- +++++ Posts Lists +++++ -->
|
||
|
<!-- +++++ First Post +++++ -->
|
||
|
<div id="anon2">
|
||
|
<div class="container">
|
||
|
<div class="row">
|
||
|
<div class="col-lg-8 col-lg-offset-2">
|
||
|
<a href="../anon.html">Previous Page</a></br></br><p><img src="../../assets/img/user.png" width="50px" height="50px"> <ba>nihilist@mainpc - 2024-06-16</ba></p>
|
||
|
<h1>How to install and update programs on Linux </h1>
|
||
|
<img src="0.png" style="width:250px">
|
||
|
<p>In this tutorial, we're going to take a look at how you can install and update your programs on linux:</p>
|
||
|
|
||
|
</div>
|
||
|
</div><!-- /row -->
|
||
|
</div> <!-- /container -->
|
||
|
</div><!-- /grey -->
|
||
|
|
||
|
<!-- +++++ Second Post +++++ -->
|
||
|
<div id="anon3">
|
||
|
<div class="container">
|
||
|
<div class="row">
|
||
|
<div class="col-lg-8 col-lg-offset-2">
|
||
|
<h2><b>Apt: Updating the repositories and packages </b></h2>
|
||
|
<p>First we need to open up a terminal:</p>
|
||
|
<img src="1.png" class="imgRz">
|
||
|
<p>and then we can run the following command <b>sudo apt update</b> to make sure that our linux OS has the data regarding which are latest package versions:</p>
|
||
|
<pre><code class="nim">
|
||
|
nihilist@mainpc:~$ sudo apt update
|
||
|
[sudo] password for nihilist:
|
||
|
Hit:1 http://deb.debian.org/debian bookworm InRelease
|
||
|
Get:2 http://security.debian.org/debian-security bookworm-security InRelease [48.0 kB]
|
||
|
Get:3 http://deb.debian.org/debian bookworm-updates InRelease [55.4 kB]
|
||
|
Hit:4 https://repository.mullvad.net/deb/stable bookworm InRelease
|
||
|
Get:5 http://security.debian.org/debian-security bookworm-security/main Sources [99.0 kB]
|
||
|
Get:6 http://security.debian.org/debian-security bookworm-security/main amd64 Packages [160 kB]
|
||
|
Get:7 http://security.debian.org/debian-security bookworm-security/main Translation-en [96.4 kB]
|
||
|
Get:8 https://packages.element.io/debian default InRelease [3,618 B]
|
||
|
Get:9 https://packages.element.io/debian default/main amd64 Packages [1,030 B]
|
||
|
Get:10 tor+http://deb.w5j6stm77zs6652pgsij4awcjeel3eco7kvipheu6mtr623eyyehj4yd.onion bookworm InRelease [62.0 kB]
|
||
|
Get:11 tor+http://deb.w5j6stm77zs6652pgsij4awcjeel3eco7kvipheu6mtr623eyyehj4yd.onion bookworm/main amd64 Packages [36.1 kB]
|
||
|
Fetched 561 kB in 20s (28.5 kB/s)
|
||
|
Reading package lists... Done
|
||
|
Building dependency tree... Done
|
||
|
Reading state information... Done
|
||
|
24 packages can be upgraded. Run 'apt list --upgradable' to see them.
|
||
|
|
||
|
</code></pre>
|
||
|
|
||
|
<p>And at the bottom you see that there are 24 packages that can be upgraded, so we run <b>sudo apt upgrade</b> to make sure that those packages are on the latest available versions:</p>
|
||
|
<pre><code class="nim">
|
||
|
nihilist@mainpc:~$ sudo apt upgrade
|
||
|
Reading package lists... Done
|
||
|
Building dependency tree... Done
|
||
|
Reading state information... Done
|
||
|
Calculating upgrade... Done
|
||
|
The following packages were automatically installed and are no longer required:
|
||
|
default-jdk-headless libice-dev libpthread-stubs0-dev libsm-dev libwpe-1.0-1 libwpebackend-fdo-1.0-1 libx11-dev libxau-dev libxcb1-dev libxdmcp-dev libxt-dev linux-image-6.1.0-17-amd64 openjdk-17-jdk openjdk-17-jdk-headless x11proto-dev
|
||
|
xorg-sgml-doctools xtrans-dev
|
||
|
Use 'sudo apt autoremove' to remove them.
|
||
|
The following packages will be upgraded:
|
||
|
element-desktop ffmpeg firefox-esr gir1.2-gst-plugins-base-1.0 gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-plugins-base gstreamer1.0-x libarchive-tools libarchive13 libavcodec59 libavdevice59 libavfilter8 libavformat59 libavutil57
|
||
|
libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0 libpostproc56 libswresample4 libswscale6 python3-pil python3-pil.imagetk tb-updater thunderbird
|
||
|
24 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
|
||
|
Need to get 134 MB/234 MB of archives.
|
||
|
After this operation, 5,378 kB of additional disk space will be used.
|
||
|
Do you want to continue? [Y/n] y
|
||
|
|
||
|
</code></pre>
|
||
|
|
||
|
<p>Here we press y and enter to continue, then let it run:</p>
|
||
|
<pre><code class="nim">
|
||
|
Do you want to continue? [Y/n] y
|
||
|
Get:1 http://security.debian.org/debian-security bookworm-security/main amd64 libswscale6 amd64 7:5.1.5-0+deb12u1 [215 kB]
|
||
|
Get:2 http://security.debian.org/debian-security bookworm-security/main amd64 libavdevice59 amd64 7:5.1.5-0+deb12u1 [114 kB]
|
||
|
Get:3 http://security.debian.org/debian-security bookworm-security/main amd64 libavformat59 amd64 7:5.1.5-0+deb12u1 [1,102 kB]
|
||
|
Get:4 http://security.debian.org/debian-security bookworm-security/main amd64 libavfilter8 amd64 7:5.1.5-0+deb12u1 [3,703 kB]
|
||
|
Get:5 http://security.debian.org/debian-security bookworm-security/main amd64 libavcodec59 amd64 7:5.1.5-0+deb12u1 [5,216 kB]
|
||
|
Get:6 http://security.debian.org/debian-security bookworm-security/main amd64 libavutil57 amd64 7:5.1.5-0+deb12u1 [363 kB]
|
||
|
Get:7 http://security.debian.org/debian-security bookworm-security/main amd64 libpostproc56 amd64 7:5.1.5-0+deb12u1 [94.0 kB]
|
||
|
Get:8 http://security.debian.org/debian-security bookworm-security/main amd64 libswresample4 amd64 7:5.1.5-0+deb12u1 [97.3 kB]
|
||
|
Get:9 http://security.debian.org/debian-security bookworm-security/main amd64 ffmpeg amd64 7:5.1.5-0+deb12u1 [1,814 kB]
|
||
|
Get:10 http://security.debian.org/debian-security bookworm-security/main amd64 firefox-esr amd64 115.12.0esr-1~deb12u1 [63.1 MB]
|
||
|
Get:11 tor+http://deb.w5j6stm77zs6652pgsij4awcjeel3eco7kvipheu6mtr623eyyehj4yd.onion bookworm/main amd64 tb-updater all 3:33.4-1 [245 kB]
|
||
|
Get:12 http://security.debian.org/debian-security bookworm-security/main amd64 thunderbird amd64 1:115.12.0-1~deb12u1 [58.3 MB]
|
||
|
Fetched 134 MB in 20s (6,658 kB/s)
|
||
|
Reading changelogs... Done
|
||
|
(Reading database ... 219964 files and directories currently installed.)
|
||
|
Preparing to unpack .../00-element-desktop_1.11.68_amd64.deb ...
|
||
|
Unpacking element-desktop (1.11.68) over (1.11.67) ...
|
||
|
Preparing to unpack .../01-libswscale6_7%3a5.1.5-0+deb12u1_amd64.deb ...
|
||
|
Unpacking libswscale6:amd64 (7:5.1.5-0+deb12u1) over (7:5.1.4-0+deb12u1) ...
|
||
|
Preparing to unpack .../02-libavdevice59_7%3a5.1.5-0+deb12u1_amd64.deb ...
|
||
|
Unpacking libavdevice59:amd64 (7:5.1.5-0+deb12u1) over (7:5.1.4-0+deb12u1) ...
|
||
|
Preparing to unpack .../03-libavformat59_7%3a5.1.5-0+deb12u1_amd64.deb ...
|
||
|
Unpacking libavformat59:amd64 (7:5.1.5-0+deb12u1) over (7:5.1.4-0+deb12u1) ...
|
||
|
Preparing to unpack .../04-libavfilter8_7%3a5.1.5-0+deb12u1_amd64.deb ...
|
||
|
Unpacking libavfilter8:amd64 (7:5.1.5-0+deb12u1) over (7:5.1.4-0+deb12u1) ...
|
||
|
Preparing to unpack .../05-libavcodec59_7%3a5.1.5-0+deb12u1_amd64.deb ...
|
||
|
Unpacking libavcodec59:amd64 (7:5.1.5-0+deb12u1) over (7:5.1.4-0+deb12u1) ...
|
||
|
Preparing to unpack .../06-libavutil57_7%3a5.1.5-0+deb12u1_amd64.deb ...
|
||
|
Unpacking libavutil57:amd64 (7:5.1.5-0+deb12u1) over (7:5.1.4-0+deb12u1) ...
|
||
|
Preparing to unpack .../07-libpostproc56_7%3a5.1.5-0+deb12u1_amd64.deb ...
|
||
|
Unpacking libpostproc56:amd64 (7:5.1.5-0+deb12u1) over (7:5.1.4-0+deb12u1) ...
|
||
|
Preparing to unpack .../08-libswresample4_7%3a5.1.5-0+deb12u1_amd64.deb ...
|
||
|
Unpacking libswresample4:amd64 (7:5.1.5-0+deb12u1) over (7:5.1.4-0+deb12u1) ...
|
||
|
Preparing to unpack .../09-ffmpeg_7%3a5.1.5-0+deb12u1_amd64.deb ...
|
||
|
Unpacking ffmpeg (7:5.1.5-0+deb12u1) over (7:5.1.4-0+deb12u1) ...
|
||
|
Preparing to unpack .../10-firefox-esr_115.12.0esr-1~deb12u1_amd64.deb ...
|
||
|
Leaving 'diversion of /usr/bin/firefox to /usr/bin/firefox.real by firefox-esr'
|
||
|
Unpacking firefox-esr (115.12.0esr-1~deb12u1) over (115.11.0esr-1~deb12u1) ...
|
||
|
Preparing to unpack .../11-libgstreamer-plugins-base1.0-0_1.22.0-3+deb12u2_amd64.deb ...
|
||
|
Unpacking libgstreamer-plugins-base1.0-0:amd64 (1.22.0-3+deb12u2) over (1.22.0-3+deb12u1) ...
|
||
|
Preparing to unpack .../12-libgstreamer-gl1.0-0_1.22.0-3+deb12u2_amd64.deb ...
|
||
|
Unpacking libgstreamer-gl1.0-0:amd64 (1.22.0-3+deb12u2) over (1.22.0-3+deb12u1) ...
|
||
|
Preparing to unpack .../13-gir1.2-gst-plugins-base-1.0_1.22.0-3+deb12u2_amd64.deb ...
|
||
|
Unpacking gir1.2-gst-plugins-base-1.0:amd64 (1.22.0-3+deb12u2) over (1.22.0-3+deb12u1) ...
|
||
|
Preparing to unpack .../14-gstreamer1.0-alsa_1.22.0-3+deb12u2_amd64.deb ...
|
||
|
Unpacking gstreamer1.0-alsa:amd64 (1.22.0-3+deb12u2) over (1.22.0-3+deb12u1) ...
|
||
|
Preparing to unpack .../15-gstreamer1.0-gl_1.22.0-3+deb12u2_amd64.deb ...
|
||
|
Unpacking gstreamer1.0-gl:amd64 (1.22.0-3+deb12u2) over (1.22.0-3+deb12u1) ...
|
||
|
Preparing to unpack .../16-gstreamer1.0-plugins-base_1.22.0-3+deb12u2_amd64.deb ...
|
||
|
Unpacking gstreamer1.0-plugins-base:amd64 (1.22.0-3+deb12u2) over (1.22.0-3+deb12u1) ...
|
||
|
Preparing to unpack .../17-gstreamer1.0-x_1.22.0-3+deb12u2_amd64.deb ...
|
||
|
Unpacking gstreamer1.0-x:amd64 (1.22.0-3+deb12u2) over (1.22.0-3+deb12u1) ...
|
||
|
Preparing to unpack .../18-libarchive-tools_3.6.2-1+deb12u1_amd64.deb ...
|
||
|
Unpacking libarchive-tools (3.6.2-1+deb12u1) over (3.6.2-1) ...
|
||
|
Preparing to unpack .../19-libarchive13_3.6.2-1+deb12u1_amd64.deb ...
|
||
|
Unpacking libarchive13:amd64 (3.6.2-1+deb12u1) over (3.6.2-1) ...
|
||
|
Preparing to unpack .../20-python3-pil.imagetk_9.4.0-1.1+deb12u1_amd64.deb ...
|
||
|
Unpacking python3-pil.imagetk:amd64 (9.4.0-1.1+deb12u1) over (9.4.0-1.1+b1) ...
|
||
|
Preparing to unpack .../21-python3-pil_9.4.0-1.1+deb12u1_amd64.deb ...
|
||
|
Unpacking python3-pil:amd64 (9.4.0-1.1+deb12u1) over (9.4.0-1.1+b1) ...
|
||
|
Preparing to unpack .../22-tb-updater_3%3a33.4-1_all.deb ...
|
||
|
Unpacking tb-updater (3:33.4-1) over (3:33.0-1) ...
|
||
|
Preparing to unpack .../23-thunderbird_1%3a115.12.0-1~deb12u1_amd64.deb ...
|
||
|
Unpacking thunderbird (1:115.12.0-1~deb12u1) over (1:115.11.0-1~deb12u1) ...
|
||
|
Setting up libarchive13:amd64 (3.6.2-1+deb12u1) ...
|
||
|
Setting up element-desktop (1.11.68) ...
|
||
|
update-alternatives is /usr/bin/update-alternatives
|
||
|
Setting up libgstreamer-plugins-base1.0-0:amd64 (1.22.0-3+deb12u2) ...
|
||
|
Setting up python3-pil:amd64 (9.4.0-1.1+deb12u1) ...
|
||
|
Setting up libavutil57:amd64 (7:5.1.5-0+deb12u1) ...
|
||
|
Setting up libgstreamer-gl1.0-0:amd64 (1.22.0-3+deb12u2) ...
|
||
|
Setting up gstreamer1.0-plugins-base:amd64 (1.22.0-3+deb12u2) ...
|
||
|
Setting up python3-pil.imagetk:amd64 (9.4.0-1.1+deb12u1) ...
|
||
|
Setting up libswresample4:amd64 (7:5.1.5-0+deb12u1) ...
|
||
|
Setting up thunderbird (1:115.12.0-1~deb12u1) ...
|
||
|
Skipping profile in /etc/apparmor.d/disable: usr.bin.thunderbird
|
||
|
Setting up libpostproc56:amd64 (7:5.1.5-0+deb12u1) ...
|
||
|
Setting up libavcodec59:amd64 (7:5.1.5-0+deb12u1) ...
|
||
|
Setting up libswscale6:amd64 (7:5.1.5-0+deb12u1) ...
|
||
|
Setting up firefox-esr (115.12.0esr-1~deb12u1) ...
|
||
|
Setting up gstreamer1.0-gl:amd64 (1.22.0-3+deb12u2) ...
|
||
|
Setting up libarchive-tools (3.6.2-1+deb12u1) ...
|
||
|
Setting up gstreamer1.0-x:amd64 (1.22.0-3+deb12u2) ...
|
||
|
Setting up gstreamer1.0-alsa:amd64 (1.22.0-3+deb12u2) ...
|
||
|
Setting up libavformat59:amd64 (7:5.1.5-0+deb12u1) ...
|
||
|
Setting up gir1.2-gst-plugins-base-1.0:amd64 (1.22.0-3+deb12u2) ...
|
||
|
Setting up libavfilter8:amd64 (7:5.1.5-0+deb12u1) ...
|
||
|
Setting up tb-updater (3:33.4-1) ...
|
||
|
INFO: Using '--postinst' option but outside of Qubes Template, skipping, ok.
|
||
|
Setting up libavdevice59:amd64 (7:5.1.5-0+deb12u1) ...
|
||
|
Setting up ffmpeg (7:5.1.5-0+deb12u1) ...
|
||
|
Processing triggers for desktop-file-utils (0.26-1) ...
|
||
|
Processing triggers for hicolor-icon-theme (0.17-2) ...
|
||
|
Processing triggers for libc-bin (2.36-9+deb12u7) ...
|
||
|
Processing triggers for man-db (2.11.2-2) ...
|
||
|
Processing triggers for mailcap (3.70+nmu1) ...
|
||
|
Scanning processes...
|
||
|
Scanning candidates...
|
||
|
Scanning linux images...
|
||
|
|
||
|
Running kernel seems to be up-to-date.
|
||
|
|
||
|
Restarting services...
|
||
|
systemctl restart fwupd.service
|
||
|
|
||
|
No containers need to be restarted.
|
||
|
|
||
|
User sessions running outdated binaries:
|
||
|
nihilist @ session #2: cinnamon[1513], element-desktop[103821,103826,103827,103829], firefox-esr[1238857]
|
||
|
nihilist @ user manager service: systemd[1229]
|
||
|
|
||
|
No VM guests are running outdated hypervisor (qemu) binaries on this host.
|
||
|
|
||
|
</code></pre>
|
||
|
<p>during the package upgrade it can prompt you if you want to restart processes:</p>
|
||
|
<img src="2.png" class="imgRz">
|
||
|
<p>Just press enter to allow the process to be restarted, and for the package upgrade to finish.</p>
|
||
|
</div>
|
||
|
</div><!-- /row -->
|
||
|
</div> <!-- /container -->
|
||
|
</div><!-- /white -->
|
||
|
|
||
|
<div id="anon2">
|
||
|
<div class="container">
|
||
|
<div class="row">
|
||
|
<div class="col-lg-8 col-lg-offset-2">
|
||
|
<h2><b>Installing new packages on Linux</b></h2> </br> </br>
|
||
|
<p>First we can use the <b>apt search pkgname</b> command to look for available packages: </p>
|
||
|
<pre><code class="nim">
|
||
|
nihilist@mainpc:~$ apt search firefox-esr
|
||
|
Sorting... Done
|
||
|
Full Text Search... Done
|
||
|
|
||
|
firefox-esr/stable-security,now 115.12.0esr-1~deb12u1 amd64
|
||
|
Mozilla Firefox web browser - Extended Support Release (ESR)
|
||
|
|
||
|
</code></pre>
|
||
|
|
||
|
<p>Here we see that the firefox package is available, so let's install it with the <b>apt install pgkname</b> command:</p>
|
||
|
<pre><code class="nim">
|
||
|
nihilist@mainpc:~$ sudo apt install firefox-esr -y
|
||
|
Reading package lists... Done
|
||
|
Building dependency tree... Done
|
||
|
Reading state information... Done
|
||
|
firefox-esr is already the newest version (115.12.0esr-1~deb12u1).
|
||
|
|
||
|
</code></pre>
|
||
|
|
||
|
<p>And then you can launch it:</p>
|
||
|
<pre><code class="nim">
|
||
|
nihilist@mainpc:~$ which firefox
|
||
|
/usr/bin/firefox
|
||
|
nihilist@mainpc:~$ firefox
|
||
|
|
||
|
</code></pre>
|
||
|
<img src="3.png" class="imgRz">
|
||
|
<p>and if you want to remove the package you can use the command <b>apt purge firefox-esr</b></p>
|
||
|
<p>Next, Bob can setup <a href="../hypervisorsetup/index.html">an open-source hypervisor</a> on his linux laptop to properly <a href="../internetsegmentation/index.html">segment</a> his internet usage.</p>
|
||
|
|
||
|
</div>
|
||
|
</div><!-- /row -->
|
||
|
</div> <!-- /container -->
|
||
|
</div><!-- /white -->
|
||
|
|
||
|
|
||
|
<!-- +++++ Footer Section +++++ -->
|
||
|
|
||
|
<div id="anonb">
|
||
|
<div class="container">
|
||
|
<div class="row">
|
||
|
<div class="col-lg-4">
|
||
|
<h4>Nihilism</h4>
|
||
|
<p>
|
||
|
Until there is Nothing left.
|
||
|
|
||
|
</p>
|
||
|
</div><!-- /col-lg-4 -->
|
||
|
|
||
|
<div class="col-lg-4">
|
||
|
<h4>My Links</h4>
|
||
|
<p>
|
||
|
|
||
|
<a target="_blank" rel="noopener noreferrer" href="http://blog.nihilism.network/rss/feed.xml">RSS Feed</a><br/><a target="_blank" rel="noopener noreferrer" href="https://matrix.to/#/#nihilism:m.datura.network">Matrix Chat</a><br/>
|
||
|
|
||
|
</p>
|
||
|
</div><!-- /col-lg-4 -->
|
||
|
|
||
|
<div class="col-lg-4">
|
||
|
<h4>About nihilist</h4>
|
||
|
<p style="word-wrap: break-word;"><u>Donate XMR:</u> 8AUYjhQeG3D5aodJDtqG499N5jXXM71gYKD8LgSsFB9BUV1o7muLv3DXHoydRTK4SZaaUBq4EAUqpZHLrX2VZLH71Jrd9k8</p></br><p><u>Contact:</u> nihilist@nihilism.network (<a href="https://nihilism.network/nihilist.pubkey">PGP</a>)</p>
|
||
|
</div><!-- /col-lg-4 -->
|
||
|
|
||
|
</div>
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<!-- Bootstrap core JavaScript
|
||
|
================================================== -->
|
||
|
<!-- Placed at the end of the document so the pages load faster -->
|
||
|
|
||
|
</body>
|
||
|
</html>
|