From 3621d86f8c58569a82cadbec702e6d61d16531d6 Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 20 Aug 2024 12:24:54 +0200 Subject: [PATCH] Fertig lol? --- .gitignore | 8 +- 000_main.tex | 14 +- 030_einleitung.tex | 4 +- 050_hardwareauswahl.tex | 4 +- 060_1_implementierung.tex | 434 +++++ 060_2_implementierung_basisstation.tex | 131 -- 060_3_implementierung_basisstation.tex | 115 -- 060_4_implementierung_rover.tex | 105 -- 060_5_implementierung_rover.tex | 94 - 065_1_bewertung.tex | 64 + 065_2_bewertung.tex | 63 - 070_resuemee.tex | 2 +- 190_cd.tex | 8 +- 999_eidesstattlicheErklärung.tex | 13 - Notes.txt | 6 +- img/rover.jpg | Bin 281802 -> 0 bytes img/rover.png | Bin 0 -> 2491968 bytes observation.pdf | 2203 ++++++++++++++++++++++++ selbstgemacht.pdf | Bin 0 -> 65879 bytes 19 files changed, 2720 insertions(+), 548 deletions(-) delete mode 100644 060_2_implementierung_basisstation.tex delete mode 100644 060_3_implementierung_basisstation.tex delete mode 100644 060_4_implementierung_rover.tex delete mode 100644 060_5_implementierung_rover.tex delete mode 100644 065_2_bewertung.tex delete mode 100644 999_eidesstattlicheErklärung.tex delete mode 100644 img/rover.jpg create mode 100644 img/rover.png create mode 100644 observation.pdf create mode 100644 selbstgemacht.pdf diff --git a/.gitignore b/.gitignore index f50d783..9d45fef 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ /build /output + + ## Core latex/pdflatex auxiliary files: *.aux *.lof @@ -301,4 +303,8 @@ TSWLatexianTemp* # REVTeX puts footnotes in the bibliography by default, unless the nofootinbib # option is specified. Footnotes are the stored in a file with suffix Notes.bib. # Uncomment the next line to have this generated file ignored. -#*Notes.bib \ No newline at end of file +#*Notes.bib + + +!/observation.pdf +!/selbstgemacht.pdf diff --git a/000_main.tex b/000_main.tex index c7944e4..9ff5eb4 100644 --- a/000_main.tex +++ b/000_main.tex @@ -73,6 +73,7 @@ % ============= Package Einstellungen & Sonstiges ============= %Besondere Trennungen \hyphenation{Be-obach-tungs-kor-rek-turen} +\hyphenation{Lo-Ra-Wan} % ============= Dokumentbeginn ============= @@ -117,20 +118,9 @@ \include{050_hardwareauswahl} - \begingroup - \let\clearpage\relax \include{060_1_implementierung} - \include{060_2_implementierung_basisstation} - \include{060_3_implementierung_basisstation} - \include{060_4_implementierung_rover} - \include{060_5_implementierung_rover} - \endgroup - \begingroup - \let\clearpage\relax \include{065_1_bewertung} - \include{065_2_bewertung} - \endgroup \include{070_resuemee} @@ -151,6 +141,6 @@ title={Literaturverzeichnis} ] - \include{999_eidesstattlicheErklärung} + \includepdf[pages=-]{selbstgemacht.pdf} \end{document} diff --git a/030_einleitung.tex b/030_einleitung.tex index e3a240d..7c5085f 100644 --- a/030_einleitung.tex +++ b/030_einleitung.tex @@ -23,14 +23,14 @@ \begin{figure}[ht] \centering - \includegraphics[width=0.5\linewidth]{img/rover.jpg} + \includegraphics[width=0.7\linewidth]{img/rover.png} \caption{Abbildung des Rovers} \label{fig:rover} \end{figure} \begin{figure}[ht] \centering - \includegraphics[width=0.5\linewidth]{img/fernbedienung.png} + \includegraphics[width=0.7\linewidth]{img/fernbedienung.png} \caption{Abbildung der Fernbedienung für den Rover} \label{fig:fernbedienung} \end{figure} diff --git a/050_hardwareauswahl.tex b/050_hardwareauswahl.tex index 2ccb539..bec0223 100644 --- a/050_hardwareauswahl.tex +++ b/050_hardwareauswahl.tex @@ -17,7 +17,7 @@ \section{PoE-Hardware} \label{sec:PoE-Hardware} - Das vorhandene Netzwerkkabel mit angelegtem PoE++ wird bereits von dem erwähnten LoRaWan-Gateway genutzt, weshalb die folgenden beiden Komponenten benötigt werden, um beiden Installationen Strom zuzuführen und eine Netzwerkverbindung bereitzustellen. + Das vorhandene Netzwerkkabel mit angelegtem PoE++ wird bereits von dem LoRaWan-Gateway genutzt, weshalb die folgenden beiden Komponenten benötigt werden, um beiden Installationen Strom zuzuführen und eine Netzwerkverbindung bereitzustellen. \subsection{PoE-Extender} Der gewählte Extender kann als Ethernet-Switch betrachtet werden, der sich selbst über die Stromversorgung des PoE-Kabels am Eingang versorgt und gleichzeitig zwei Ausgangsports bietet, an denen auch PoE anliegt. Die Leistung wird dabei zwischen den beiden Ports aufgeteilt, sodass es sich nach der Aufteilung nur noch um PoE+ Ports handelt. Die verfügbare Leistung je Port würde somit \(30W\) betragen, dies stellt die Versorgung der vorhanden Installation sicher, da im Datenblatt des LoRaWAN Gateways \cite[]{lorawangateway} eine Stromaufnahme von unter \(10W\) aufgeführt wird. @@ -58,7 +58,7 @@ \section{Installationskasten} Für Installation der nicht wasserfesten Komponenten wird ein Installationskasten benötigt, um diese zu schützen. Für ein einheitlicheres Bild wurde ein Kasten von derselben Firma, wie der vorhandene gewählt. Allerdings wurde für günstigere Temperaturen in dem Kasten die helle Ausführung gewählt. Bei dem Installationskasten handelt es sich um den \texttt{KF 5000 H} von der Firma Hensel. Laut des Datenblatts \cite{kasten} verfügt dieser über die Schutzklassen IP66, TP67 und IP69. Unter dem Punkt Umgebungsbedingungen wird als Einsatzgebiet die ungeschützte Installation genannt, dabei ist die Umgebungstemperatur von \(-25^\circ C\) bis \(70^\circ C\) angegeben. Als Ausnahme wird die maximale Umgebungstemperatur über 24 Stunden mit \(55^\circ C\) angegeben. Durch diese Eigenschaften ist der Kasten für die Dachinstallation geeignet. \par - Die Innenmaße bieten bei einer hochkantigen Ausrichtung einen Installationsraum von 320x215x106mm (hxbxt). Somit lassen sich der Computer, der PoE-Splitter und das GNSS-Modul nebeneinander platzieren. Die Montage soll auf einer Hutschiene stattfinden, die dem Kasten noch hinzugefügt wird. Außerdem müssen für den Computer und das GNSS-Modul entsprechende Halterungen geschaffen werden. + Die Innenmaße bieten bei einer hochkantigen Ausrichtung einen Raum von 320x215x106mm (hxbxt). Somit lassen sich der Computer, der PoE-Splitter und das GNSS-Modul nebeneinander platzieren. Die Montage soll auf einer Hutschiene stattfinden, die dem Kasten noch hinzugefügt wird. Außerdem müssen für den Computer und das GNSS-Modul entsprechende Halterungen geschaffen werden. \section{Gyroskop} \label{sec:gyroskop} diff --git a/060_1_implementierung.tex b/060_1_implementierung.tex index 5c9f20d..cf3c7b1 100644 --- a/060_1_implementierung.tex +++ b/060_1_implementierung.tex @@ -1,2 +1,436 @@ \chapter{Implementierung} Im folgenden Teil dieser Arbeit wird auf den Aufbau der Basisstation eingegangen, dabei wird der mechanische Aufbau sowie die Implementierung und Einrichtung der Station erläutert. Außerdem werden die Erweiterungen des Rovers ausführlich beschrieben, dazu gehören die Implementierung weiterer Softwarekomponenten sowie der Einbau des GY-521 Moduls (siehe Abschnitt \ref{sec:gyroskop}). + + + \section{Basisstation} + \label{sec:Basisstation} + Für die Errichtung der Referenzstation stellte sich zunächst die Frage, wie das System aufgebaut werden soll. Dabei sind die bereits beschriebenen Anforderungen im Abschnitt \ref{sec:referenzstation_req} entstanden. Um das System den Anforderungen entsprechend erstellen zu können, wurde die Hardwareauswahl in dem vorangegangenen Kapitel \ref{cha:Hardwareauswahl} bereits beschrieben. Deshalb wird in diesem Abschnitt, die noch fehlende Installation und Konfiguration der Komponenten thematisiert. Weiterhin werden für die vollständige Montage Formteile benötigt, welche mit einem 3D-Drucker produziert werden sollen. + + \subsection{Installation Betriebssystem} + Im ersten Schritt muss die Betriebsbereitschaft des Servers hergestellt werden. Dafür muss ein Betriebssystem installiert werden. Dazu soll das in Unterabschnitt \ref{ssec:debian} beschriebene Debian genutzt werden. + \par + Da der Server über übliche Anschlüsse für einen Monitor verfügt, kann die Installation über den Installationsassistenten mittels Tastatur und Bildschirm durchgeführt werden. Dafür wurde die iso-Datei von Debian so auf einen USB-Stick geschrieben, dass dieser bootfähig ist. Während der Installation wurden die meisten Einstellungen bei ihrem Standard belassen. + \par + Nach der erfolgreichen Installation des Betriebssystems wurde sich zunächst als root-Benutzer angemeldet, um die ersten grundlegenden Einstellungen zu tätigen. + + \subsubsection{Netzwerk} + Nach der Installation bezieht der Server seine Netzwerkkonfiguration über einen DHCP-Server. Für eine feste Installation eines Servers ist die manuelle Konfiguration der Netzwerkschnittstelle dringend empfohlen, damit die IP-Adresse zu jeder Zeit persistent und bekannt ist. Dafür müssen zwei Dateien editiert werden und der Name des Netzwerkinterfaces muss bekannt sein. + Die erste Datei mit dem Pfad \url{/etc/network/interfaces} enthält die Konfigurationen aller auf dem System verfügbaren Interfaces. Da der Server lediglich über ein Interface verfügt, kann in der Datei auch der Name des Interfaces abgelesen werden. + \par + Die zweite Datei ist unter dem Pfad \url{/etc/resolv.conf} zu finden und definiert die zu benutzenden DNS-Server. Dabei wird in jeder Zeile nach dem folgenden Muster ein Nameserver angegeben: \flqq nameserver xxx.xxx.xxx.xxx\frqq. In dem Netz der FH-Dortmund lauten die IP-Adressen der Nameserver \mintinline{text}|172.22.1.10| und \mintinline{text}|172.22.1.20|. + \par + Die Netzwerkkonfiguration wurde durch einen Mitarbeiter im Hardwarelabor der FH-Dortmund festgelegt und im System eingepflegt. Wenn die Bearbeitung der Datei abgeschlossen ist, muss das Netzwerkinterface neu gestartet werden. Dies kann mit dem Befehl \mintinline{bash}|ifdown | gefolgt von \mintinline{bash}|ifup | oder einem Neustart des Computers erfolgen. + + \subsubsection{Sudo} + Sudo ist ein Programm aus den Paketquellen von Debian, dass es anderen Nutzern erlauben kann, Befehle mit root-Rechten auszuführen. Diese Vorgehensweise empfiehlt sich, damit nicht alle Befehle automatisch mit root-Rechten ausgeführt und das vollständige System über ein normales Benutzerkonto gesteuert werden kann. Das Paket kann mit dem Paketverwaltungstool \mintinline{bash}|apt-get| installiert werden. Davor sollten die Paketquellen jedoch aktualisiert und möglich Paketupdates installiert werden. Um die Aktualisierung und die Installation auszuführen, müssen diese Befehle ausgeführt werden: + + \begin{minted}[linenos, gobble=5]{bash} + apt-get update + apt-get upgrade + apt-get install sudo + \end{minted} + + Im Anschluss müssen die Benutzer, welche neben dem root-Benutzer ebenfalls Befehle mit erweiterten Rechten ausführen können sollen, in die Benutzergruppe \mintinline{text}|sudo| hinzugefügt werden. Für den bei der Installation automatisch erstellen Benutzer \mintinline{text}|rtk| sieht der Befehl wie folgt aus: \mintinline{bash}|usermod -aG sudo rtk|. + Danach wird der root-Benutzer abgemeldet und nur noch der rtk-Benutzer verwendet. Befehle können nun mit einem vorangestellten \mintinline{bash}|sudo| als Administrator ausgeführt werden. + + \subsubsection{SSH-Server} + Der SSH-Server wird ebenfalls über die Paketquellen installiert, der Paketname entspricht der Überschrift dieses Abschnitts. Mit einem SSH-Server wird die Verwaltung des Systems über das Netzwerk ermöglicht und damit der Zugriff auf das Terminal erheblich zu vereinfacht. Der Server kann mit den Standardeinstellungen betrieben werden, für eine erhöhte Sicherheit wird jedoch der Log-in mit dem root-Benutzer verboten. Dafür wird in der Konfigurationsdatei (\url{/etc/ssh/sshd_config}) die Zeile \mintinline{text}|PermitRootLogin no| ergänzt und der SSH-Server anschließend mit \mintinline{bash}|sudo service sshd restart| neu gestartet. + \par + Ab diesem Zeitpunkt der Installation kann der Server ohne Monitor und Tastatur betrieben werden. Es ist nur noch eine die Netzwerkverbindung und die Stromversorgung notwendig. Für den Log-in wird ein SSH-Client, die Zugangsdaten und die Adresse des Servers benötigt. + + \subsection{ser2net vorbereiten} + Die Konfiguration der GNSS-Module von u-blox lässt sich am einfachsten mit dem u-center (siehe Abschnitt \ref{sssec:u-blox}) erledigen. Da das u-center ausschließlich unter Windows verfügbar und ein Programm mit grafischer Oberfläche ist, kann es nicht auf dem Server ausgeführt werden. Allerdings ist es nicht praktikabel, das GNSS-Modul aus dem System der Referenzstation zu entfernen, um es an einem anderen Computer zu konfigurieren. Deshalb bietet sich die Installation von ser2net an, damit die Verbindung zwischen dem u-center und dem GNSS-Modul über eine Netzwerkverbindung aufgebaut werden kann. + \par + Die Installation erfolgt über die Paketquellen mit \mintinline{bash}|sudo apt-get install ser2net|. Das Programm wird dem Betriebssystem als Service hinzugefügt und läuft damit ständig. Da die Verbindung nur zur Verfügung stehen soll, wenn diese auch benötigt wird, kann der automatische Start des Service beim Bootvorgang mit dem Befehl + + \begin{minted}[linenos, gobble=4]{bash} + sudo systemctl disable ser2net +\end{minted} + + deaktiviert werden. Die nächsten beiden Befehle sind zum Starten und Stoppen des Services. Nach der Deaktivierung läuft der Service weiter, bis der Computer neu gestartet oder der Service mit dem ersten Befehl gestoppt wird. + + \begin{minted}[linenos, gobble=4]{bash} + sudo systemctl stop ser2net + sudo systemctl start ser2net +\end{minted} + + Um ein serielles Interface über ser2net im Netzwerk freizugeben, muss dieses in der Konfigurationsdatei (\url{/etc/ser2net.yaml}) deklariert werden. Dafür muss der Gerätepfad des GNSS-Moduls bekannt sein. Dieser kann herausgefunden werden, indem das Modul an einen USB-Port angesteckt und in dem Verzeichnis \url{/dev} nach einer neuen Datei geschaut wird, welche mit \mintinline{text}|tty| beginnt. In der Konfigurationsdatei wird der folgende Yaml-Block ergänzt: + + \begin{minted}[linenos, gobble=4, tabsize=4]{yaml} + connection: &ZEDF9P + accepter: tcp,1234 + enable: on + connector: serialdev,/dev/ttyUSB0,38400n81,local + \end{minted} + + Sollte der Service zum Zeitpunkt der Konfiguration aktiv gewesen sein, muss es mit dem genannten Befehl gestoppt und kann anschließend je nach Bedarf aktiviert werden. Sobald der Service aus Abschnitt \ref{ssec:pushService} aktiv ist, muss dieser gestoppt werden, bevor eine Verbindung zu ser2net aufgebaut wird. Wenn dies nicht geschieht, ist es nicht vorhersehbar, an welchen Service die ankommenden Daten des GNSS-Moduls geleitet werden. + + \subsection{RTKLib installieren} + Die in den Grundlagen unter \ref{sssec:rtklib} beschriebene RTKLib ist nicht über die Paketquellen verfügbar und muss deshalb auf dem Server kompiliert werden. Um das Projekt von GitHub klonen zu können, muss Git installiert werden. Außerdem wird als Abhängigkeit die Bibliothek \mintinline[]{text}|libpng-dev| benötigt. Der Compiler inklusive weiterer benötigter Tools wie \mintinline[]{text}|make| ist in dem Paket \mintinline[]{text}|build-essential| enthalten. Für die vollständige Installation wird die folgende Befehlsfolge in dem Home-Verzeichnis des rtk-Benutzers benötigt: + + \begin{minted}[linenos, gobble=4]{bash} + sudo apt-get update + sudo apt-get install git + sudo apt-get install libpng-dev + sudo apt-get install build-essential + + git clone https://github.com/rtklibexplorer/RTKLIB.git + cd RTKLIB/app/consapp/ + make + make install +\end{minted} + + \subsection{Dachinstallation} + Die Installation auf dem Dach wurde in ihren groben Zügen bei der in der Einleitung des Kapitels \ref{cha:Hardwareauswahl} beschriebenen Begehung des Installationsortes geplant. Von diesem Plan wurde die in dem Kapitel folgende Hardwareauswahl abgeleitet. Im ersten Schritt sollen nun alle Vorbereitungen getroffen werden, welche von dem Installationsort unabhängig sind. Im Anschluss wird die eigentliche Montage auf dem Dach vorgenommen. + + \subsubsection{Befestigungen} + Die anzubringenden Komponenten benötigen Halterungen und Befestigungspunkte. Diese werden im Folgenden beschrieben: + + \begin{itemize} + \item die \textbf{Antenne} soll am Ende des C-Profils, welches zur Verlängerung des Pfostens dient, befestigt werden. Dafür wurde ein Formteil konstruiert (siehe Abbildung \ref{fig:antenneHalterung}). Im Wesentlichen besteht dieses Teil aus einem Quader, welcher in das C-Profil eingeführt werden kann. Der Quader verfügt über eine Bohrung, damit dieser mittels einer Schrauben-Mutter-Kombination am C-Profil fixiert werden kann. Am oberen Ende befindet sich ein Gewinde, auf welches die Antenne aufgeschraubt werden kann, + + \item der \textbf{Installationskasten} soll unterhalb des vorhandenen Kastens am Pfosten angebracht werden. Als Maße stehen der gemessene Durchmesser des Pfostens (\(90mm\)) und der aus dem Datenblatt \cite[]{kasten} verfügbare Lochabstand der Befestigungslöcher des Kastens. Mit diesen Werten konnte eine Halterung konstruiert werden, welche aus zwei Halbschalen besteht. Eine Halbschale verfügt über abstehende Arme mit vorhandenen Löchern für M4-Schrauben, an denen der Kasten befestigt werden kann. Die M4-Schrauben können von hinten mit der passenden Mutter gesichert werden. In die gleiche Halbschale können passgenau M8-Muttern eingelegt werden. Die andere Halbschale verfügt über die Löcher und Vertiefungen, um diese mit zwei M8-Schrauben an der anderen Halbschale befestigen zu können. Die Halterungen wurden für den oberen und den unteren Teil des Kastens jeweils einmal gedruckt. Eine Halterung ist in Abbildung \ref{fig:halbschalen} zu sehen, + + \item für den \textbf{Server} wird eine Halterung benötigt, damit dieser an der Hutschiene im Installationskasten befestigt werden kann. Es bot sich an, die mitgelieferten Winkel und Schrauben des Computers in die Konstruktion einzubeziehen. Die Winkel sind für die Wandmontage gedacht und werden nach Herstellervorgaben auf der Rückseite des Computers befestigt, sodass nach der Montage der Winkel Befestigungspunkte neben dem Computer benutzbar sind. Die Winkel haben einen Versatz, der den Computer theoretisch etwas von der Wand hervorstehen lassen würde. Um die Befestigung an der Hutschiene zu ermöglichen, wurden die Winkel um \(180^\circ\) verdreht. Dadurch entsteht auf der Rückseite des Computers ein breites Trapez mit geringer Höhe. Diese Form wurde als Grundplatte für den Adapter genutzt. Auf dieser Grundplatte befinden sich neben der Aufnahme für die Hutschiene herausstehende Kegel, welche genutzt werden, um den Adapter mittels der am Winkel vorgesehenen Löcher zur Wandmontage zu fixieren, (siehe Abbildung \ref{fig:pcHalter}) + + \item die letzte Konstruktion soll das \textbf{GNSS-Modul} ebenfalls an der Hutschiene fixieren. Das Formteil ist ein etwas in die Länge gezogene Quader. An einem Ende befindet sich der Mechanismus für die Hutschiene. Für das Modul ist eine Vertiefung mit Aussparungen für die Anschlüsse eingefügt worden. Das Modul wird durch das Einschieben einer Deckplatte gesichert. Das Formteil wird in Abbildung \ref{fig:gnssHalter} gezeigt. + \end{itemize} + + + \begin{figure}[htbp] + \centering + \begin{minipage}[b]{0.40\textwidth} + \centering + \includegraphics[width=\textwidth]{img/antenneHalterung.png} + \caption{Formteil für die Befestigung der Antenne} + \label{fig:antenneHalterung} + \end{minipage} + \hfill + \begin{minipage}[b]{0.40\textwidth} + \centering + \includegraphics[width=\textwidth]{img/halbschalen.png} + \caption{Halterung für den Installationskasten am Mast} + \label{fig:halbschalen} + \end{minipage} + \end{figure} + + + \begin{figure}[htbp] + \centering + \begin{minipage}[b]{0.40\textwidth} + \centering + \includegraphics[width=\textwidth]{img/pcHalter.png} + \caption{Montageplatte für den Server auf einer Hutschiene} + \label{fig:pcHalter} + \end{minipage} + \hfill + \begin{minipage}[b]{0.40\textwidth} + \centering + \includegraphics[width=\textwidth]{img/gnssHalter.png} + \caption{Gehäuse für das GNSS-Modul zur Befestigung auf einer Hutschiene} + \label{fig:gnssHalter} + \end{minipage} + \centering + \end{figure} + + \subsubsection{Installationskasten bestücken} + Der Installationskasten kann weitgehend vorbereitet werden. Dafür wurden zunächst ein Loch an der unteren Seite gebohrt, welches groß genug ist, um einen RJ45-Stecker durchzuführen. Weiterhin wurde die Hutschiene von der mittleren Position um eine Befestigungsmöglichkeit weiter nach oben verschoben, damit im unteren Raum mehr Platz für Kabel bleibt. Danach wurden die beiden Halbschalen an der Rückseite des Kastens befestigt, weil die Löcher für die Befestigungen durch die Komponenten teilweise verdeckt werden. Anschließend konnten die Komponenten an der Hutschiene befestigt werden. Die Komponenten wurden rechtsbündig verbaut. Dabei wurde der PoE-Splitter links neben dem Server und das GNSS-Modul rechts neben dem Server eingehackt. Diese beiden Komponenten auf je einer Seite des Computers zu befestigen, vereinfacht die Kabelführung. Der PoE-Splitter befindet sich auf der linken Seite, weil dieser die beste Klemmwirkung an der Hutschiene aufweist und so das Verrücken der anderen Komponenten verhindert. + \par + Um den Computer über den PoE-Splitter mit Strom zu versorgen, wurde ein Kabel mit einem Hohlbuchsenstecker konfektioniert. Das andere Ende des Kabels wurde verzinnt und an dem Blockterminal des Splitters angebracht. Das Netzwerkkabel von dem PoE-Splitter zu dem Server konnte ebenfalls schon eingesetzt werden. Mit einem USB-C auf USB-A Kabel wurde die Verbindung zwischen dem GNSS-Modul und dem Server hergestellt. Das Antennenkabel wurde durch das gebohrte Loch geführt und an dem GNSS-Modul angeschraubt. Der vorbereitete Installationskasten wird in Abbildung \ref{fig:vorbereitetKasten} dargestellt. + \par + Als weitere Vorbereitung wurden weitere benötigte Netzwerkkabel bereitgelegt und Adapter für die Antennenmontage wurde an dem C-Profil befestigt. + + \begin{figure}[ht] + \centering + \includegraphics[width=0.5\linewidth]{img/installationskasten.png} + \caption{Der für die Montage vorbereitete Installationskasten} + \label{fig:vorbereitetKasten} + \end{figure} + + \subsubsection{Montage} + Die Montage begann mit der Befestigung des Installationskastens. Dafür wurde in je eine Halbschale ein griffiges Klebeband eingebracht, um den Halt zu verbessern. Der Kasten wurde an den Pfosten gehalten und durch die dazugehörigen Halbschalen fixiert. Daraufhin wurde die Antenne an dem C-Profil befestigt und das Antennenkabel angeschlossenen. Das C-Profil wurde an den bei der Begehung besprochen Befestigungspunkten angebracht. Das Antennenkabel wurde mit Kabelbindern an dem C-Profil befestigt. + \par + Als Nächstes musste der PoE-Extender in den vorhandenen Anschlusskasten eingebracht werden. Dieser wurde ebenfalls an der Hutschiene befestigt. Das von dem LoRaWAN-Gateway kommende Ethernetkabel wurde aus der Hutschienen-RJ45-Buchse entnommen und in mit dem ersten Ausgang des Extenders verbunden. Der Eingang wurde mit dem nun freien Port an der Hutschiene verbunden. Danach wurde kontrolliert, ob das vorhandene System wieder einsatzbereit ist. Für die letzte herzustellende Verbindung zwischen dem PoE-Extender und dem PoE-Splitter, musste das Loch in dem vorhandenen Installationskasten etwas aufgebohrt werden. Danach konnte das Kabel verlegt werden, wobei die überschüssige Länge des Kabels im neuen Installationskasten aufgewickelt wurde. Die Abbildung \ref{fig:poeextenderkasten} zeigt den verbauten Extender im Installationskasten. Durch die Betriebs-LED des Servers und den LEDs des Netzwerkinterfaces konnte schon während der Installation festgestellt werden, dass der Server mit Strom versorgt wird und einen Link aufbauen konnten. + + \begin{figure}[ht] + \centering + \includegraphics[width=0.5\linewidth]{img/extenderkasten.png} + \caption{Vorhandener Installationskasten mit eingebrachtem PoE-Extender} + \label{fig:poeextenderkasten} + \end{figure} + + \subsection{Antennenposition bestimmen} + Die jetzt folgenden Schritte wurde alle von einem Remote-Arbeitsplatz durchgeführt. + \par + Damit die Antennenposition bestimmt werden kann, sind im grundlegenden drei Schritte notwendig: + + \setlist{noitemsep} + \begin{enumerate} + \item Rohdaten des GNSS-Moduls aufzeichnen, + \item die Rohdaten in das RINEX-Format konvertieren + \item und die Daten von einem PostProcessing Dienst auswerten lassen. + \end{enumerate} + \setlist{} + + Damit die Rohdaten aufgezeichnet werden können, muss das Modul so konfiguriert werden, dass es diese ausgibt. Dafür wird das u-center und die Verbindung über ser2net genutzt. Die dafür benötigte Installation unter Windows, sowie die grundlegende Nutzung vom u-center wird im Anhang \ref{cha:winAndUcenter} beschrieben. Im u-center muss der Nachrichtentyp RAWX für die USB-Schnittstelle aktiviert werden. Ob die benötigten Daten gesendet werden, kann in Packet-View vom u-center kontrolliert werden. + \par + Die Aufzeichnung der Daten übernimmt der Kommunikations-Server der RTKLib. Das Programm heißt in der Kommandozeilenversion \mintinline[]{text}|STR2STR| und kann einen Dateneingang auf mehrere Datenausgänge übertragen. In diesem Fall werden die Daten des GNSS-Moduls in eine Datei geschrieben. Die meisten PostProcessing Dienste verarbeiten bis zu 24 Stunden Aufzeichnungslänge. Deshalb wird für die höchste Genauigkeit genau diese Dauer für die Einmessung verwendet. Die Länge der Aufzeichnung wird über den \mintinline[]{bash}|timeout| Befehl gesteuert. Damit die Aufzeichnung nicht als Kind-Prozess der Remote-Sitzung läuft, wird das Hilfsprogramm \mintinline[]{bash}|screen| installiert, da ansonsten ein Abbruch der Verbindung auch die Aufzeichnung frühzeitig beenden würde. Aus dieser Beschreibung ergibt sich diese Befehlsfolge: + + \begin{minted}[linenos, gobble=4, breaklines]{bash} + sudo apt-get update + sudo apt-get install screen + + screen + + cd ~ + timeout 24h ./RTKLIB/app/consapp/str2str/gcc/str2str -in serial://ttyACM0:9600:8:n:1:off -out observation.ubx + \end{minted} + + Die screen-Sitzung kann mit der Tastenkombinationen \keys{\ctrl + A} gefolgt von \keys{D} verlassen werden. + \par + Sobald die Aufzeichnung beendet ist, müssen die Daten in das allgemeingültige RINEX-Format umgewandelt werden. Dafür bietet die RTKLib einen RINEX Konverter an. Zur Benutzung im Terminal muss das Programm \mintinline[]{bash}|convbin| aufgerufen werden. Die Konvertierung erfolgt mit: + + \begin{minted}[linenos, gobble=4, breaklines]{bash} + cd ~ + ./RTKLIB/app/consapp/convbin/gcc/convbin -od -os -oi -ot -ti 30 observation.ubx + \end{minted} + + Für die Erklärung der verwendeten Optionen folgt ein Ausschnitt aus dem Manual der RTKLib \cite[97]{rtklibMan}: \glqq + + \setlist{noitemsep} + \begin{itemize}[label=-] + \item od include doppler frequency in rinex obs + \item os include snr in rinex obs + \item oi include iono correction in rinex nav header + \item ot include time correction in rinex nav header + \item ti tint observation data interval (s) + \end{itemize} + \setlist{} + \grqq . + \par + Die umgewandelte Datei muss anschließend an einen PostProcessing Dienst übermittelt werden, der gewählte Dienst erhält die Daten über ein Formular im Browser, deshalb ist die einfachste Variante die Datei \url{ubservation.obs} auf einen Rechner mit einer Desktopumgebung zu kopieren. Dafür wurde die Datei mit dem Programm \mintinline[]{bash}|scp| über SSH kopiert. + \par + Nach einigen Stunden wird die Auswertung per E-Mail versandt. In dem erhaltenen Archiv befinden sich eine PDF (siehe Anhang \ref{cha:auswerungObservation}) in der die Auswertung grafisch veranschaulicht wird und neben anderen Dateien die Datei \url{observation.sum}. In dieser wird ab Zeile 69 die Position der Antenne im Erdkoordinatensystem angegeben. Zusätzlich werden geschätzt Genauigkeiten angegeben, diese liegen je nach Achse zwischen \(1,8mm\) und \(5,2mm\). + \par + Die Koordinaten für X, Y und Z müssen nun über das u-center in das GNSS-Modul programmiert werden. Dafür muss in der Konfigurationsansicht der TMODE ausgewählt werden. In den Einstellungen des TMODE muss der Modus auf \texttt{fixed} eingestellt werden, danach können die Koordinaten im gleichen Fenster eingetragen werden. Damit das Modul auch die Korrekturdaten ausgibt, kann in das Fenster zur Konfiguration der Nachrichten gewechselt werden. Dort sollten die Nachrichten für die Rohdaten wieder entfernt werden, um das Datenaufkommen zu reduzieren. Danach können die RTCM3 Nachrichten mit den Nummern 1005, 1074, 1084, 1094, 1124 und 1230 aktiviert werden. Ob die Konfiguration erfolgreich war, kann wieder im Packet-View Fenster kontrolliert werden. Diese finale Konfiguration des Moduls sollte in den Flash des Moduls geschrieben werden, damit auch über einen Neustart hinweg verfügbar zu sein. Dafür kann in der Menüleiste der Punkt \texttt{Save Config} ausgewählt werden. + + \subsection{Service einrichten} + \label{ssec:pushService} + Die von dem GNSS-Modul generierten Korrekturdaten müssen kontinuierlich an den Ntrip-Caster weitergeleitet werden. Dafür wird der bereits zuvor genutzte Kommunikations-Server der RTKLib verwendet. Als Ausgang wird anstelle der Datei nun der Ntrip-Caster angegeben. + \par + Damit die Ausgabe automatisch protokolliert wird und der Kommunikations-Server auch nach einem Neustart des Servers automatisch startet, wird dem Betriebssystem ein Service hinzugefügt. Dafür muss eine Datei mit root-Rechten und der Endung \texttt{.service}, welche den Service definiert, unter dem Pfad \url{/etc/systemd/system} erstellt werden. Der Inhalt der erstellten Datei \texttt{rtk.service} sieht wie folgt aus: + + \begin{minted}[linenos, gobble=4, breaklines]{bash} + [Unit] + Description=Push RTCM correction data from serial to caster + After=network-online.target + + [Service] + Type=simple + ExecStart=/home/rtk/pushRtcm2Caster.sh + + [Install] + WantedBy=multi-user.target + \end{minted} + + Das auszuführende Skript enthält zum aktuellen Zeitpunkt lediglich den Aufruf des Kommunikationsservers mit den benötigten Parametern. + + \begin{minted}[linenos, gobble=4, breaklines]{bash} + #!/bin/bash + /home/rtk/RTKLIB/app/consapp/str2str/gcc/str2str -in serial://ttyACM0:9600:8:n:1:off -out ntrips://:password@rtk2go.com:2101/GER-Dortmund + \end{minted} + + Anschließend muss der Service aktiviert und gestartet werden. + + \begin{minted}[linenos, gobble=4, breaklines]{bash} + sudo systemctl activate rtk + sudo systemctl start rtk + \end{minted} + + In den Logs kann die übermittelte Datenmenge oder auftretende Fehler betrachtet werden. Wenn der Caster die Daten akzeptiert, erscheint der zuvor bei rtk2go registrierte Mount Point \texttt{GER-Dortmund} in der Mount Point Tabelle unter \url{rtk2go.com:2101} + + \section{Rover} + Die Implementierungen für den Rover beginnen mit der Integration des Gyroskops. Dies umschließt den Einbau der Hardware und das Einbinden der Sensorwerte in die dafür vorgesehene Komponente. Im nächsten Schritt wird der Ntrip-Client dem System hinzugefügt, damit in den folgenden Prozessen die hochgenaue Positionsbestimmung verfügbar ist. Sobald das GNSS-Modul die Korrekturdaten verarbeitet, kann die Implementierung der Verwaltung für die Routen beginnen. Danach sind alle Voraussetzungen gegeben, um den Modus zum Routen aufzeichnen programmieren zu können. Daraufhin können die Algorithmen für das automatische Befahren der Route entwickelt werden. + + \subsection{Gyroskop installieren} + Die elektrische Verbindung des Moduls wird über vier Pins hergestellt, dabei handelt es sich um die zwei I2C Leitungen sowie Masse und die Spannungsversorgung. Das Modul kann mit \(+5V\) betrieben werden. Auf der Hauptplatine sind Pin-Leisten vorhanden, um weitere I2C-Module, welche mit \(+5V\) betrieben werden können, dem System hinzufügen zu können. + \par + Das Modul wird mit einer nicht bestückten Pin-Leise geliefert. Daher bestand die Möglichkeit eine gewinkelte Pin-Leiste einzulöten. Es wurde eben diese Pin-Leiste gewählt, um das Modul waagerecht mit einer weiteren Platine verbinden zu können. Bei der zusätzlichen Platine handelt es sich lediglich um einen Verteiler, welcher in Abbildung \ref{fig:gyroPlatine} gezeigt wird. Dort ist zu sehen, wie der Verteiler, durch seine L-Form, an einem Querbalken mit einer Maul-Büroklammer befestigt wird. Das MPU-6050 Module wird seitlich an eine ebenfalls gewinkelte Sockel-Leiste eingesteckt. Auf der Oberseite der Platine befinden sich drei weitere Konnektoren, an denen das Display und das Magnetometer angeschlossen werden. Zwei der Konnektoren sind für das Magnetometer, um es entweder an den I2C-Bus des ESP32 oder an den Auxiliary-I2C-Bus des MPU-6050 anzuschließen. Auf der Unterseite der Platine ist ein Kabel angelötet, welches auf die Hauptplatine gesteckt wird. + \par + + \begin{wrapfigure}{r}{0.4\textwidth} + \centering + \includegraphics[width=0.38\textwidth]{img/gyroPlatine.jpg} + \caption{I2C Verteilung mit abgeschlossen Gyroskop} + \label{fig:gyroPlatine} + \end{wrapfigure} + + Durch diese weitere Platine wurde zum einen der benötigte feste Platz für das neue Modul geschaffen und zum anderen die Möglichkeit offen gehalten, den bereits verbauten Kompass nun über den MPU-6050 zu nutzen, um eine 9-Achsen Sensorfusion zu ermöglichen. Der Versuch diese 9-Achsen Sensorfusion zu implementieren ist gescheitert. Der Hersteller wirbt zwar mit dieser Funktion, jedoch ist die Rechenleitung des Chips nicht ausreichend hoch genug, damit die Funktion umgesetzt werden kann. Daher müssten Berechnung dafür auf den ESP32 ausgelagert werden\cite[]{9achsfail}. Dieser Weg wurde aufgrund der Komplexität nicht weiter verfolgt. + \par + Die Einbindung des Sensors in den vorhandenen Programmcode erfolgte mit der bereits vorhanden \mintinline{c++}|class SensorData|. Für die Kommunikation mit dem Sensor wird die Bibliothek \texttt{I2Cdevlib-MPU6050} verwendet. Der Klasse wurden neben einer Funktion zum Datenerhalt, die Funktion \mintinline{c++}|void enableGyroscope(); | hinzugefügt. Diese erzeugt ein Objekt für den MPU-6050 und initialisiert sowohl den MPU-6050 als auch den verbauten Digital Motion Processor. Außerdem werden ermittelte Offsets eingestellt. Die periodische aufgerufene \mintinline{c++}|void run(); | Funktion wurde ebenfalls erweitertet und überprüft jetzt in jedem Durchgang, ob neue Daten des Sensors verfügbar sind und verarbeitet diese dann. + + + \subsection{Ntrip Client} + \label{ssec:ntripclient} + Die Implementierungen des Clients orientiert sich an dem von der RTCM herausgegebenen Paper \glqq Best Practices for Ntrip Client developers\grqq \cite{NTRIPWorkingGroup2023}. Zudem können beide Revisionen des Protokolls mit dem Client benutzt werden. Die Revision 1 ist offiziell von der RTCM als \texttt{outdated} markiert. Der in dieser Arbeit verwendete Caster \url{rtk2go.com} gibt jedoch in seinen Statistiken an, dass \(95\%\) der eingehenden Verbindungen die Revision 1 verwenden. Zusätzlich kann durch die Implementierung beider Revisionen, die angegeben Abwärtskompatibilität getestet werden. Des Weiteren wird die Authentisierung mit Benutzernamen und Kennwort sowie die Übermittlung des eigenen Standorts an den Caster implementiert. Der eigene Standort ist für Caster wichtig, welche mit einem Netz aus Referenzstationen betrieben werden. Die Implementierung erfolgt also, damit der Rover auch abseits der errichteten Referenzstation von anderen Anbietern mit Korrekturdaten versorgt werden kann. + + \subsubsection{Einstellungen} + Eine Instanz des Clients fordert die Adresse des Casters, den Mountpoint, die Zugangsdaten und das GNSS-Modul als Parameter für den Konstruktor, diese sind nur durch eine neue Instanz änderbar. Der Benutzername und das Passwort können ignoriert werden, wenn eine Anmeldung bei dem Caster ohne Zugangsdaten möglich ist. + \par + Eine erstellte Instanz verfügt über vier Einstellungsmöglichkeiten. Diese können entweder aktiviert oder deaktiviert werden. + + \setlist{noitemsep} + \begin{itemize}[] + \item Automatisches Wiederverbinden bei Verbindungsabbrüchen \texttt{(default : true)} + \item Die eigene Position übertragen \texttt{(default : false)} + \item Ntrip Revision 1 verwenden \texttt{(default : false)} + \item Den Client selbst aktivieren \texttt{(default : true)} + \end{itemize} + \setlist{} + + \subsubsection{Zustandsautomat} + Der Ntrip Client wurde nach dem Schema eines Zustandsautomaten entworfen, welcher in Abbildung \ref{fig:NTRIPClientStates} skizziert wird. Im Folgenden wird auf die Funktionalitäten der einzelnen Zustände eingegangen. Die Zustände werden durch das \mintinline{c++}|enum NTRIPClientStates| definiert. + + \begin{figure}[ht] + \centering + \includegraphics[width=\linewidth]{img/ntripClientStates.png} + \caption{Skizzierung des Zustandsautomaten des Ntrip Clients} + \label{fig:NTRIPClientStates} + \end{figure} + + \begin{itemize} + \item \textbf{openingConnection} In diesem Zustand wird versucht, die Verbindung zu dem Caster aufzubauen. Dafür wird zwischen den Revisionen von Ntrip unterschieden, ob die Position gesendet werden soll und ob Zugangsdaten angegeben worden sind. Sollte der Verbindungsaufbau scheitern, wird in den \texttt{waiting} Zustand gewechselt, ansonsten in den \texttt{pushingData} Zustand. + \item \textbf{pushingData} Wenn eine Verbindung zu dem Caster besteht, befindet sich der Client in diesem Zustand und leitet die empfangenen Daten an das GNSS-Modul weiter. Es kann nur in den \texttt{closingConnection} Zustand gewechselt werden. + \item \textbf{closingConnection} Sollte der Ntrip Client deaktiviert oder ein Timeout festgestellt werden, wird in diesen Zustand gewechselt, damit die Verbindung aus Sicht des Clients ordnungsgemäß beendet wird. Sobald die Verbindung getrennt ist, wird der \texttt{waiting} Zustand aktiv. + \item \textbf{waiting} Wenn dieser Zustand betreten wird, wurde die Verbindung getrennt und es wird darauf gewartet in den \texttt{openingConnection} Zustand zu wechseln. Dafür muss entweder der Client wieder aktiviert werden oder die automatische Wiederverbindung muss aktiviert sein. + \item \textbf{notAvailable} Dieser Zustand wird betreten, wenn keine Verbindung zum Internet bereitsteht. + \end{itemize} + + \subsection{Routen Management} + \label{ssec:route_management} + Die Implementierung der Routen Verwaltung erfolgt über die \mintinline{c++}|class Route|, welche eine Liste zur Speicherung der Punkte nutzt. Die Punkte sind Instanzen der \mintinline{c++}|class Point|. Es herrscht also eine 1 zu n Beziehung zwischen \mintinline{c++}|class Route| und \mintinline{c++}|class Point|. + + \subsubsection{Postionen mit \mintinline{c++}|class Point|} + Eine Instanz dieser Klasse besteht aus den Koordinaten, welche in dem \mintinline{c++}|struct Coordinates| als zwei \mintinline{c++}|double| Werte gespeichert werden. Zusätzlich kann die Zeit der Erzeugung und die geschätzte Genauigkeit des Punktes angegeben und gespeichert werden. Neben den Methoden zur Datenkontrolle und Zugriff wird die Funktionalität der Klasse durch diese beiden Funktionen gegeben: + + \begin{itemize} + \item \mintinline{c++}|double distanceTo(Point); | Errechnet die Entfernung zwischen den Koordinaten der Instanz zu dem gegebenen Punkt. Für die Berechnung wird die Erdkrümmung vernachlässigt, deshalb kann der Satz des Pythagoras genutzt werden. Dafür müssen die in Grad angegebenen Koordinaten zunächst in Radianten umgewandelt und anschließend in ein kartesisches Koordinatensystem überführt werden. Anschließend kann die Entfernung der beiden Punkte berechnet werden. Dafür werden die beiden Koordinaten einer Achse voneinander abgezogen und anschließend quadriert. Die Ergebnisse der beiden Achsen werden schließlich aufsummiert und radiziert. + + \begin{eqnarray} + d = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2} + \end{eqnarray} + + \item \mintinline{c++}|int16_t courseTo(Point); | Errechnet den Kurs von dem aktuellen Punkt zu dem gegebenen Punkt und gibt ihn in Grad aus. \(0^\circ\) entspricht Norden. Von da an wird im Uhrzeigersinn weiter gezählt, sodass \(270^\circ\) etwa einen Kurs nach Westen angeben würden. Für die Berechnung müssen die Längen- und Breitengrade zunächst in Radianten umgewandelt werden. Anschließend kann dann mit der Formel + + \begin{eqnarray} + \theta = \text{atan2}(\sin(\Delta \lambda)cos(\phi_2), \cos(\phi_1)\sin(\phi_2) - \sin(\phi_1)\cos(\phi_2)\cos(\Delta \lambda)) + \end{eqnarray} + + mit + + \begin{eqnarray} + \Delta \lambda &=& \lambda_2 - \lambda_1 \\ + \phi_1, \phi_2 &\widehat{=}& \text{Breitengrade der Punkte} \\ + \lambda_1, \lambda_2 &\widehat{=}& \text{Längengrad der Punkte} + \end{eqnarray} + + Anschließend muss \(\theta\) wieder in Grad umgewandelt und mit dem modulo-Operator auf den Wertebereich \(0 \text{ bis } 360\) normalisiert werden. + \end{itemize} + + \subsubsection{Postionsspeicherung mit \mintinline{c++}|class Route|} + Die Klasse nutzt die Implementierung der Liste aus der C++ Standardbibliothek. Überdies wird ein Iterator für diese Liste von der Klasse verwaltet. Mit primitiven Datentypen wird festgehalten, ob die Route gestartet und der wievielte Punkt gerade aus der Route selektiert ist. + \par + Die Funktionen der Klasse beschränken sich darauf, den Iterator und die Liste zu verwalten. Der Liste können nur Daten hinzugefügt werden. Die Entfernung einzelner Punkte ist nicht möglich und erfordert das Löschen der gesamten Liste. Es kann jeweils der nächste oder der vorherige Punkt ausgewählt werden. Die Route kann am Ende oder am Anfang gestartet werden. Soll die Route im umgekehrter Reihenfolge abgefahren werden, muss diese am Ende gestartet und immer der vorherige Punkt der Route abgerufen werden. Bei einem Fehler, weil beispielsweise keine Route aufgezeichnet wurde, wird von Funktionen eine Instanz von der \mintinline{c++}|class Point| mit den Koordinaten \(0 \text{ und } 0\) zurückgegeben. Dies kann von der aufrufenden Funktion überprüft werden, dafür wurde eigens die Funktion \mintinline{c++}|bool Point::isValid(); | implementiert. + \par + Damit Informationen über die Route abgefragt werden können, wurde ein Datentyp hinzugefügt. Das \mintinline{c++}|struct RouteInfo| enthält die Gesamtzahl der in der Route gespeicherten Punkte sowie den Index des selektierten Punktes. + + \subsubsection{Verwaltung über das Menü} + In die vorhandene Menüstruktur wurde in der ersten Ebene der Punkt \flqq Route\frqq{} als Untermenü hinzugefügt. Dieses Menü stellt die in der folgenden Liste erläuterten Funktionen bereit. Für einige dieser Funktionen wird auf eine entwickelte HTTP-API zugegriffen, deshalb muss für diese Funktionen eine Internetverbindung bestehen. Die serverseitige Implementierung der API wird im Anhang \ref{cha:httpApi} beschrieben. Werden Teile der API auf dem Rover genutzt, zeigt dieser den HTTP-Code an. Mit diesem kann erkannt werden, ob die ausgeführte Operation korrekt ausgeführt wurde. + + \begin{itemize} + \item \textbf{Points} - Unter diesem Punkt können die einzelnen Koordinaten der in der Route gespeicherten Punkte betrachtet werden. + \item \textbf{Clear} - Löscht die aktuell lokal erstellte Route. + \item \textbf{Import} - Bei Auswahl dieses Punktes muss der Benutzer die ID der Route wissen, mit der diese exportiert wurde. Sofern die gewählte ID existiert, wird die Route heruntergeladen und steht dem Rover nun zur Verfügung. Wenn bereits eine Route lokal vorhanden war, wird diese durch importierte überschrieben. In diesem Fall könnte die gefährdete Route vorher exportiert werden. + \item \textbf{Export} - Mit dieser Funktionen können Routen für die spätere Verwendung gesichert werden. Dafür muss ihnen eine ID zugewiesen werden, unter dieser ID lässt sich die Route später wieder abrufen. + \item \textbf{Delete} - Mit Delete kann eine exportierte Route mit ihrer ID gelöscht werden, dies betrifft allerdings nicht aktuell lokal vorhandene Route. + \end{itemize} + + + \subsection[Navigation]{\mintinline{c++}|class Navigation|} + \label{ssec:navigation_implementation} + Diese Klasse vereinigt die Verwaltung der Route mit den Sensorwerten wie die Positionsdaten und Ausrichtung, damit die eigentliche Navigation bereitgestellt werden kann. Außerdem werden die Anforderungen an die Genauigkeit überwacht. Die Navigation wird von den Modi zur Aufzeichnung und Abfahrt der Route benötigt. + \par + Es wurde ein \mintinline{c++}|enum Status| implementiert, welcher von einigen Funktionen der Klasse genutzt wird, um Informationen über das Ergebnis der aufgerufenen Funktion zu informieren. Es kann mitgeteilt werden, ob Änderungen vorgenommen wurden oder die aktuelle Genauigkeit mangelhaft ist. Zusätzlich besteht die Möglichkeit über den Abschluss einer Aktion zu informieren. Des Weiteren wird in derselben Header-Datei das \mintinline{c++}|struct CourseCorrection| definiert, um die Distanz und die anzuwendende Kurskorrektur zum Zielpunkt in einem Datentypen zu vereinen. + + \subsection{Modus - Route aufzeichnen} + Um eine Route aufzeichnen zu können, wurde zum einen die \mintinline{c++}|class CaptureRoute| implementiert, welche von der bereits vorhanden Klasse zum manuellen Verfahren des Rovers erbt und damit auch in der Hierarchie des \texttt{DiveModi} Interfaces zu finden ist. Dadurch kann der Modus dem bestehenden System ohne weitere Änderungen hinzugefügt werden. + \par + Die Instanz der \mintinline{c++}|class Navigation| wird von dem aktuellen Modus erzeugt. Dafür wird Komponente \texttt{SensorData} benötigt und eine Route. Die \texttt{SensorData} Komponente wird jedem \texttt{DriveModi} über den Konstruktor zur Verfügung gestellt. Wenn keine Route übergeben wird, erzeugt die \texttt{Navigation} eine eigene. Da eine neue Route aufgezeichnet werden soll, ist dieses Verhalten gewollt. + \par + Um die aktuellen Koordinaten der Route hinzuzufügen, muss der Aktions-Button auf der Fernbedienung gedrückt werden. Dadurch versucht \texttt{Navigation} die Route zu erweitern. Dies kann fehlschlagen, wenn die Genauigkeit der aktuellen Position nicht den eingestellten Anforderungen entspricht oder die aktuelle Position zu nah an der, sofern vorhanden, vorherigen ist. Der minimale Abstand zwischen zwei Punkten kann ebenfalls eingestellt werden. Auch der maximale Abstand zwischen zwei Punkten ist definiert und kann eingestellt werden. Wenn die gesamte Route aufgezeichnet wurde, kann der Modus verlassen werden. Dabei wird die Instanz von Navigationsklasse zerstört und damit auch die dort gehaltene Route. Deshalb wird diese zwischengespeichert und überschreibt gegebenenfalls die zuletzt gespeicherte Route. Ein Überschreiben erfolgt nur, wenn die Route mindestens über zwei Einträge verfügt. Die Datenhaltung der Route wird über statische Funktionen und Member in der Klasse \texttt{Route} realisiert. Die zwischengespeicherte Route ist dementsprechend nicht persistent. + \par + Der Modus wird über einen Menüeintrag gestartet. Während der Modus aktiv ist, werden im Menü neben Informationen über Sensorwerte und die bisher aufgezeichnete Route auch Einstellungen zu der geforderten Genauigkeit geboten. + + \subsection{Modus - Route abfahren} + \label{ssec:route_drive} + Die Funktionalität, erfasste Routen abzufahren, erfordert die Zusammenarbeit mehrerer Komponenten. Zunächst wird beschrieben, wie die Navigationsklasse den Kurs zum Zielpunkt berechnet und die Navigationsanweisungen gibt und bestimmt, ab wann ein Punkt als erreicht gilt. Die Anweisungen müssen von dem Autopiloten umgesetzt werden, dafür muss sich dieser auf den Zielpunkt ausrichten und die Strecke mit angepasster Geschwindigkeit zurücklegen. + \par + Der letztendlich ausführende Modus nennt sich \texttt{Autopilot} und wird wie \texttt{CaptureRoute} in das System eingebunden, da dieser Modus, um den Rover an die Startposition der Route fahren zu können, ebenfalls von dem Modus zum manuellen Verfahren erbt. Während der Autopilot die Steuerung übernimmt, werden keine Eingaben von dem Joystick zum Verfahren des Rovers akzeptiert. Sofern der Autopilot verfügbar ist, kann dieser durch das Betätigen der Aktions-Taste aktiviert und auch wieder deaktiviert werden. + \par + Auch der \texttt{Autopilot} verfügt über ein Menü, über welches dieser aufgerufen wird. Das Menü stellt Status-, Sensor-, Routen- und Navigationsinformationen zur Verfügung und ermöglicht das Einstellen der wie präzise ein Punkt angefahren werden muss, ob nach Abschluss der Route diese von vorn gestartet werden soll und ob der aktuelle Zielpunkt eingefroren werden soll, was dazu führt, dass die Route an diesem Punkt pausiert wird. + + \subsubsection{Kursberechnung} + Das Ziel der Kursberechnung ist es, eine vorzeichenbehaftete Kurskorrektur in Grad zu erzeugen. Dafür muss die aktuelle Ausrichtung bekannt sein. Für diese Information stehen drei Quellen zur Verfügung. + + \begin{itemize} + \item Das Magnetometer liefert absolute Werte, welche die Ausrichtung laut Datenblatt \cite[]{QST} im optimalen Fall auf \(2^\circ\) genau beschreiben. + \item Die nächste Quelle ergibt sich aus den gefahrenen Strecken des Rovers. Dafür wird der erste Punkt nach einer Rotation und der letzte Punkt vor einer Rotation festgehalten und daraus die Ausrichtung mit der \mintinline{c++}|int16_t Point::courseTo(Point&); | Methode berechnet. Diese Variante ist bei kurzen Strecken ungenau und wird mit steigendem Abstand zwischen den Punkten genauer, wenn die Positionsbestimmung im niedrigen Zentimeterbereich erfolgt. Sollte der Rover durch den Untergrund oder andere Fehlern keine Gerade fahren, sondern eine leichte Kurve, wird dieses Verfahren ungenauer. + \item Es bleibt noch das hinzugefügte Gyroskop. Dieses kann keine absoluten Werte bestimmen. Dafür kann es präzise relative Drehwerte angeben. Es eignet sich also, um bei einem vorgegebenen Winkel die Drehung zu überwachen. Die Genauigkeit hätte zusätzlich erhöht werden können, wenn die Implementierung der 9-Achsen Sensorfusion funktional gewesen wäre. + \end{itemize} + + Nachdem die Datenquelle ausgewählt wurde, muss der Kurs von der aktuellen Position zum Zielpunkt berechnet werden. Von diesem Ergebnis wird die aktuelle Ausrichtung subtrahiert. Anschließend muss das Resultat auf den gewünschten Wertbereich normiert werden. + + \subsubsection{Navigationsanweisungen} + Aus der berechneten Kurskorrektur und dem verbleibenden Abstand zum Zielpunkt wird Navigationsanweisung erstellt. Die Informationen in das folgende \mintinline{c++}|struct| verpackt: + + \begin{minted}[linenos, gobble=5, breaklines]{c++} + struct CourseCorrection + { + int16_t correction; + double distance; + }; + \end{minted} + + Wenn die Navigationsanweisungen bei der Navigationsklasse abgefragt werden, muss das genannte \mintinline{c++}|struct| der Funktion als Referenz übergeben werden. Der Rückgabewert wird für das bereits beschriebene \mintinline{c++}|enum Navigation::Status| verwendet. Darüber wird mitgeteilt, ob die Navigationsanweisungen aktualisiert wurden oder weshalb dies nicht geschah. Zum Beispiel, wenn der Rover seine Position nicht wesentlich verändert hat, die aktuelle Positionsbestimmung zu ungenau ist oder das Ziel erreicht wurde. + + \subsubsection{Autopilot Aufbau} + Der Autopilot ist einem Zustandsautomaten nachempfunden. In den verschiedenen Zuständen können unterschiedliche und gleiche Funktionen aufgerufen werden. Die beiden häufigsten Funktionsaufrufe in den verschiedenen Status sollen erläutert werden: + + \begin{itemize} + \item \mintinline{c++}|void Autopilot::askNavigationForOrder(); | holt sich die aktuellen Navigationsanweisungen von \texttt{Navigation} und wertet dabei den zurückgegebenen Status aus. Durch diese Auswertung können Zustandsübergänge auftreten. Beispielsweise bei vollständiger abgefahrener Route oder mangelnder Genauigkeit bei der Positionsbestimmung. Sollte der zweite Fall eintreten, wird der vorherige Zustand gespeichert, in welchen zurückgekehrt wird, wenn die Genauigkeit wieder den Anforderungen entspricht und + \item \mintinline{c++}|void Autopilot::checkButtonInput(); | überprüft, ob der Aktions-Button gedrückt ist. Wenn die Eingabe vorliegt, werden Zustandswechsel durchgeführt, wie selbstständiges Fahren aktivieren und deaktivieren. + \end{itemize} + + Die folgende Tabelle \ref{tab:autopilot} listet die Zustände auf und beschreibt die Funktionalitäten der einzelnen Zustände. Dabei wird in der Spalte \texttt{Update} angegeben, ob die Navigationsanweisungen mit der beschriebenen Funktion in diesem Zustand aktualisiert werden und mit der Spalte \texttt{Check} wird das gleich für die Überprüfung der Benutzereingaben dargestellt. + + \begin{table}[] + \centering + \begin{tabular}{|l|c|c|l|} + \hline + Zustand & \multicolumn{1}{l|}{Update} & \multicolumn{1}{l|}{Check} & Beschreibung \\ \hline + InsufficientAccuracy & x & - & -Warten auf bessere Genauigkeit \\ \hline + NoRoute & - & - & -Autopilot nicht verfügbar \\ \hline + None & - & - & -Default Zustand zum Programmbeginn \\ \hline + NavigationStarted & x & x & \begin{tabular}[c]{@{}l@{}}-Autopilot initialisiert\\ -Auf Benutzereingabe warten\end{tabular} \\ \hline + GetToStartPoint & x & - & \begin{tabular}[c]{@{}l@{}}-Warten bis Benutzer den Rover in die \\ Nähe des Startpunktes gebracht hat\\ -Fahren mit dem Joystick möglich\end{tabular} \\ \hline + SelfDrivingAvailable & x & x & \begin{tabular}[c]{@{}l@{}}-Autopilot bereit\\ -Auf Benutzereingabe warten\end{tabular} \\ \hline + SelfDriving & x & x & \begin{tabular}[c]{@{}l@{}}-Rover fährt geradeaus bis die\\ Abweichung zu groß ist.\end{tabular} \\ \hline + SelfDrivingRotate & x & - & -Abweichung korrigieren \\ \hline + TargetReached & - & - & -Navigation abgeschlossen \\ \hline + \end{tabular} + \caption{Auflistung und Beschreibung der Zustände des Autopiloten} + \label{tab:autopilot} + \end{table} + + \subsubsection{Ausrichten} + Wenn der Rover zu weit von dem Kurs abweicht und damit nicht mehr ausreichend genau auf den Zielpunkt ausgerichtet ist, wird von dem Zustand \texttt{SelfDriving} in den Zustand \texttt{SelfDrivingRotate} gewechselt. Dieser Wechsel kann nur aus \texttt{SelfDriving} erfolgen und beginnt damit, die Rotation einzuleiten. Dabei wird Drehrichtung der Rotation durch das Vorzeichen der gegebenen Kurskorrektur bestimmt. Ab diesem Zeitpunkt wird durchgehend überprüft, wann sich der Rover weit genug gedreht hat, um die Rotation rechtzeitig zu beenden. Anschließend wird wieder in den vorherigen Zustand gewechselt. diff --git a/060_2_implementierung_basisstation.tex b/060_2_implementierung_basisstation.tex deleted file mode 100644 index 3579fb6..0000000 --- a/060_2_implementierung_basisstation.tex +++ /dev/null @@ -1,131 +0,0 @@ - -\section{Basisstation} - \label{sec:Basisstation} - Für die Errichtung der Referenzstation stellte sich zunächst die Frage, wie das System aufgebaut werden soll. Dabei sind die bereits beschriebenen Anforderungen im Abschnitt \ref{sec:referenzstation_req} entstanden. Um das System den Anforderungen entsprechend erstellen zu können, wurde die Hardwareauswahl in dem vorangegangenen Kapitel \ref{cha:Hardwareauswahl} bereits beschrieben. Deshalb wird in diesem Abschnitt, die noch fehlende Installation und Konfiguration der Komponenten thematisiert. Weiterhin werden für die vollständige Montage Formteile benötigt, welche mit einem 3D-Drucker produziert werden sollen. - - \subsection{Installation Betriebssystem} - Im ersten Schritt muss die Betriebsbereitschaft des Servers hergestellt werden. Dafür muss ein Betriebssystem installiert werden. Dazu soll das in Unterabschnitt \ref{ssec:debian} beschriebene Debian genutzt werden. - \par - Da der Server über übliche Anschlüsse für einen Monitor verfügt, kann die Installation über den Installationsassistenten mittels Tastatur und Bildschirm durchgeführt werden. Dafür wurde die iso-Datei von Debian so auf einen USB-Stick geschrieben, dass dieser bootfähig ist. Während der Installation wurden die meisten Einstellungen bei ihrem Standard belassen. - \par - Nach der erfolgreichen Installation des Betriebssystems wurde sich zunächst als root-Benutzer angemeldet, um die ersten grundlegenden Einstellungen zu tätigen. - - \subsubsection{Netzwerk} - Nach der Installation bezieht der Server seine Netzwerkkonfiguration über einen DHCP-Server. Für eine feste Installation eines Servers ist die manuelle Konfiguration der Netzwerkschnittstelle dringend empfohlen, damit die IP-Adresse zu jeder Zeit persistent und bekannt ist. Dafür müssen zwei Dateien editiert werden und der Name des Netzwerkinterfaces muss bekannt sein. - Die erste Datei mit dem Pfad \url{/etc/network/interfaces} enthält die Konfigurationen aller auf dem System verfügbaren Interfaces. Da der Server lediglich über ein Interface verfügt, kann in der Datei auch der Name des Interfaces abgelesen werden. - \par - Die zweite Datei ist unter dem Pfad \url{/etc/resolv.conf} zu finden und definiert die zu benutzenden DNS-Server. Dabei wird in jeder Zeile nach dem folgenden Muster ein Nameserver angegeben: \flqq nameserver xxx.xxx.xxx.xxx\frqq. In dem Netz der FH-Dortmund lauten die IP-Adressen der Nameserver \mintinline{text}|172.22.1.10| und \mintinline{text}|172.22.1.20|. - \par - Die Netzwerkkonfiguration wurde durch einen Mitarbeiter im Hardwarelabor der FH-Dortmund festgelegt und im System eingepflegt. Wenn die Bearbeitung der Datei abgeschlossen ist, muss das Netzwerkinterface neu gestartet werden. Dies kann mit dem Befehl \mintinline{bash}|ifdown | gefolgt von \mintinline{bash}|ifup | oder einem Neustart des Computers erfolgen. - - \subsubsection{Sudo} - Sudo ist ein Programm aus den Paketquellen von Debian, dass es anderen Nutzern erlauben kann, Befehle mit root-Rechten auszuführen. Diese Vorgehensweise empfiehlt sich, damit nicht alle Befehle automatisch mit root-Rechten ausgeführt und das vollständige System über ein normales Benutzerkonto gesteuert werden kann. Das Paket kann mit dem Paketverwaltungstool \mintinline{bash}|apt-get| installiert werden. Davor sollten die Paketquellen jedoch aktualisiert und möglich Paketupdates installiert werden. Um die Aktualisierung und die Installation auszuführen, müssen diese Befehle ausgeführt werden: - - \begin{minted}[linenos, gobble=5]{bash} - apt-get update - apt-get upgrade - apt-get install sudo - \end{minted} - - Im Anschluss müssen die Benutzer, welche neben dem root-Benutzer ebenfalls Befehle mit erweiterten Rechten ausführen können sollen, in die Benutzergruppe \mintinline{text}|sudo| hinzugefügt werden. Für den bei der Installation automatisch erstellen Benutzer \mintinline{text}|rtk| sieht der Befehl wie folgt aus: \mintinline{bash}|usermod -aG sudo rtk|. - Danach wird der root-Benutzer abgemeldet und nur noch der rtk-Benutzer verwendet. Befehle können nun mit einem vorangestellten \mintinline{bash}|sudo| als Administrator ausgeführt werden. - - \subsubsection{SSH-Server} - Der SSH-Server wird ebenfalls über die Paketquellen installiert, der Paketname entspricht der Überschrift dieses Abschnitts. Mit einem SSH-Server wird die Verwaltung des Systems über das Netzwerk ermöglicht und damit der Zugriff auf das Terminal erheblich zu vereinfacht. Der Server kann mit den Standardeinstellungen betrieben werden, für eine erhöhte Sicherheit wird jedoch der Log-in mit dem root-Benutzer verboten. Dafür wird in der Konfigurationsdatei (\url{/etc/ssh/sshd_config}) die Zeile \mintinline{text}|PermitRootLogin no| ergänzt und der SSH-Server anschließend mit \mintinline{bash}|sudo service sshd restart| neu gestartet. - \par - Ab diesem Zeitpunkt der Installation kann der Server ohne Monitor und Tastatur betrieben werden. Es ist nur noch eine die Netzwerkverbindung und die Stromversorgung notwendig. Für den Log-in wird ein SSH-Client, die Zugangsdaten und die Adresse des Servers benötigt. - - \subsection{ser2net vorbereiten} - Die Konfiguration der GNSS-Module von u-blox lässt sich am einfachsten mit dem u-center (siehe Abschnitt \ref{sssec:u-blox}) erledigen. Da das u-center ausschließlich unter Windows verfügbar und ein Programm mit grafischer Oberfläche ist, kann es nicht auf dem Server ausgeführt werden. Allerdings ist es nicht praktikabel, das GNSS-Modul aus dem System der Referenzstation zu entfernen, um es an einem anderen Computer zu konfigurieren. Deshalb bietet sich die Installation von ser2net an, damit die Verbindung zwischen dem u-center und dem GNSS-Modul über eine Netzwerkverbindung aufgebaut werden kann. - \par - Die Installation erfolgt über die Paketquellen mit \mintinline{bash}|sudo apt-get install ser2net|. Das Programm wird dem Betriebssystem als Service hinzugefügt und läuft damit ständig. Da die Verbindung nur zur Verfügung stehen soll, wenn diese auch benötigt wird, kann der automatische Start des Service beim Bootvorgang mit dem Befehl - - \begin{minted}[linenos, gobble=4]{bash} - sudo systemctl disable ser2net - \end{minted} - - deaktiviert werden. Die nächsten beiden Befehle sind zum Starten und Stoppen des Services. Nach der Deaktivierung läuft der Service weiter, bis der Computer neu gestartet oder der Service mit dem ersten Befehl gestoppt wird. - - \begin{minted}[linenos, gobble=4]{bash} - sudo systemctl stop ser2net - sudo systemctl start ser2net - \end{minted} - - Um ein serielles Interface über ser2net im Netzwerk freizugeben, muss dieses in der Konfigurationsdatei (\url{/etc/ser2net.yaml}) deklariert werden. Dafür muss der Gerätepfad des GNSS-Moduls bekannt sein. Dieser kann herausgefunden werden, indem das Modul an einen USB-Port angesteckt und in dem Verzeichnis \url{/dev} nach einer neuen Datei geschaut wird, welche mit \mintinline{text}|tty| beginnt. In der Konfigurationsdatei wird der folgende Yaml-Block ergänzt: - - \begin{minted}[linenos, gobble=4, tabsize=4]{yaml} - connection: &ZEDF9P - accepter: tcp,1234 - enable: on - connector: serialdev,/dev/ttyUSB0,38400n81,local - \end{minted} - - Sollte der Service zum Zeitpunkt der Konfiguration aktiv gewesen sein, muss es mit dem genannten Befehl gestoppt und kann anschließend je nach Bedarf aktiviert werden. Sobald der Service aus Abschnitt \ref{ssec:pushService} aktiv ist, muss dieser gestoppt werden, bevor eine Verbindung zu ser2net aufgebaut wird. Wenn dies nicht geschieht, ist es nicht vorhersehbar, an welchen Service die ankommenden Daten des GNSS-Moduls geleitet werden. - - \subsection{RTKLib installieren} - Die in den Grundlagen unter \ref{sssec:rtklib} beschriebene RTKLib ist nicht über die Paketquellen verfügbar und muss deshalb auf dem Server kompiliert werden. Um das Projekt von GitHub klonen zu können, muss Git installiert werden. Außerdem wird als Abhängigkeit die Bibliothek \mintinline[]{text}|libpng-dev| benötigt. Der Compiler inklusive weiterer benötigter Tools wie \mintinline[]{text}|make| ist in dem Paket \mintinline[]{text}|build-essential| enthalten. Für die vollständige Installation wird die folgende Befehlsfolge in dem Home-Verzeichnis des rtk-Benutzers benötigt: - - \begin{minted}[linenos, gobble=4]{bash} - sudo apt-get update - sudo apt-get install git - sudo apt-get install libpng-dev - sudo apt-get install build-essential - - git clone https://github.com/rtklibexplorer/RTKLIB.git - cd RTKLIB/app/consapp/ - make - make install - \end{minted} - - \subsection{Dachinstallation} - Die Installation auf dem Dach wurde in ihren groben Zügen bei der in der Einleitung des Kapitels \ref{cha:Hardwareauswahl} beschriebenen Begehung des Installationsortes geplant. Von diesem Plan wurde die in dem Kapitel folgende Hardwareauswahl abgeleitet. Im ersten Schritt sollen nun alle Vorbereitungen getroffen werden, welche von dem Installationsort unabhängig sind. Im Anschluss wird die eigentliche Montage auf dem Dach vorgenommen. - - \subsubsection{Befestigungen} - Die anzubringenden Komponenten benötigen Halterungen und Befestigungspunkte. Diese werden im Folgenden beschrieben: - - \begin{itemize} - \item die \textbf{Antenne} soll am Ende des C-Profils, welches zur Verlängerung des Pfostens dient, befestigt werden. Dafür wurde ein Formteil konstruiert (siehe Abbildung \ref{fig:antenneHalterung}). Im Wesentlichen besteht dieses Teil aus einem Quader, welcher in das C-Profil eingeführt werden kann. Der Quader verfügt über eine Bohrung, damit dieser mittels einer Schrauben-Mutter-Kombination am C-Profil fixiert werden kann. Am oberen Ende befindet sich ein Gewinde, auf welches die Antenne aufgeschraubt werden kann, - - \item der \textbf{Installationskasten} soll unterhalb des vorhandenen Kastens am Pfosten angebracht werden. Als Maße stehen der gemessene Durchmesser des Pfostens (\(90mm\)) und der aus dem Datenblatt \cite[]{kasten} verfügbare Lochabstand der Befestigungslöcher des Kastens. Mit diesen Werten konnte eine Halterung konstruiert werden, welche aus zwei Halbschalen besteht. Eine Halbschale verfügt über abstehende Arme mit vorhandenen Löchern für M4-Schrauben, an denen der Kasten befestigt werden kann. Die M4-Schrauben können von hinten mit der passenden Mutter gesichert werden. In die gleiche Halbschale können passgenau M8-Muttern eingelegt werden. Die andere Halbschale verfügt über die Löcher und Vertiefungen, um diese mit zwei M8-Schrauben an der anderen Halbschale befestigen zu können. Die Halterungen wurden für den oberen und den unteren Teil des Kastens jeweils einmal gedruckt. Eine Halterung ist in Abbildung \ref{fig:halbschalen} zu sehen, - - \item für den \textbf{Server} wird eine Halterung benötigt, damit dieser an der Hutschiene im Installationskasten befestigt werden kann. Es bot sich an, die mitgelieferten Winkel und Schrauben des Computers in die Konstruktion einzubeziehen. Die Winkel sind für die Wandmontage gedacht und werden nach Herstellervorgaben auf der Rückseite des Computers befestigt, sodass nach der Montage der Winkel Befestigungspunkte neben dem Computer benutzbar sind. Die Winkel haben einen Versatz, der den Computer theoretisch etwas von der Wand hervorstehen lassen würde. Um die Befestigung an der Hutschiene zu ermöglichen, wurden die Winkel um \(180^\circ\) verdreht. Dadurch entsteht auf der Rückseite des Computers ein breites Trapez mit geringer Höhe. Diese Form wurde als Grundplatte für den Adapter genutzt. Auf dieser Grundplatte befinden sich neben der Aufnahme für die Hutschiene herausstehende Kegel, welche genutzt werden, um den Adapter mittels der am Winkel vorgesehenen Löcher zur Wandmontage zu fixieren, (siehe Abbildung \ref{fig:pcHalter}) - - \item die letzte Konstruktion soll das \textbf{GNSS-Modul} ebenfalls an der Hutschiene fixieren. Das Formteil ist ein etwas in die Länge gezogene Quader. An einem Ende befindet sich der Mechanismus für die Hutschiene. Für das Modul ist eine Vertiefung mit Aussparungen für die Anschlüsse eingefügt worden. Das Modul wird durch das Einschieben einer Deckplatte gesichert. Das Formteil wird in Abbildung \ref{fig:gnssHalter} gezeigt. - \end{itemize} - - - \begin{figure}[htbp] - \centering - \begin{minipage}[b]{0.40\textwidth} - \centering - \includegraphics[width=\textwidth]{img/antenneHalterung.png} - \caption{Formteil für die Befestigung der Antenne} - \label{fig:antenneHalterung} - \end{minipage} - \hfill - \begin{minipage}[b]{0.40\textwidth} - \centering - \includegraphics[width=\textwidth]{img/halbschalen.png} - \caption{Halterung für den Installationskasten am Mast} - \label{fig:halbschalen} - \end{minipage} - \end{figure} - - - \begin{figure}[htbp] - \centering - \begin{minipage}[b]{0.40\textwidth} - \centering - \includegraphics[width=\textwidth]{img/pcHalter.png} - \caption{Montageplatte für den Server auf einer Hutschiene} - \label{fig:pcHalter} - \end{minipage} - \hfill - \begin{minipage}[b]{0.40\textwidth} - \centering - \includegraphics[width=\textwidth]{img/gnssHalter.png} - \caption{Gehäuse für das GNSS-Modul zur Befestigung auf einer Hutschiene} - \label{fig:gnssHalter} - \end{minipage} - \centering - \end{figure} diff --git a/060_3_implementierung_basisstation.tex b/060_3_implementierung_basisstation.tex deleted file mode 100644 index abd43cd..0000000 --- a/060_3_implementierung_basisstation.tex +++ /dev/null @@ -1,115 +0,0 @@ -\subsubsection{Installationskasten bestücken} - Der Installationskasten kann weitgehend vorbereitet werden. Dafür wurden zunächst ein Loch an der unteren Seite gebohrt, welches groß genug ist, um einen RJ45-Stecker durchzuführen. Weiterhin wurde die Hutschiene von der mittleren Position um eine Befestigungsmöglichkeit weiter nach oben verschoben, damit im unteren Raum mehr Platz für Kabel bleibt. Danach wurden die beiden Halbschalen an der Rückseite des Kastens befestigt, weil die Löcher für die Befestigungen durch die Komponenten teilweise verdeckt werden. Anschließend konnten die Komponenten an der Hutschiene befestigt werden. Die Komponenten wurden rechtsbündig verbaut. Dabei wurde der PoE-Splitter links neben dem Server und das GNSS-Modul rechts neben dem Server eingehackt. Diese beiden Komponenten auf je einer Seite des Computers zu befestigen, vereinfacht die Kabelführung. Der PoE-Splitter befindet sich auf der linken Seite, weil dieser die beste Klemmwirkung an der Hutschiene aufweist und so das Verrücken der anderen Komponenten verhindert. - \par - Um den Computer über den PoE-Splitter mit Strom zu versorgen, wurde ein Kabel mit einem Hohlbuchsenstecker konfektioniert. Das andere Ende des Kabels wurde verzinnt und an dem Blockterminal des Splitters angebracht. Das Netzwerkkabel von dem PoE-Splitter zu dem Server konnte ebenfalls schon eingesetzt werden. Mit einem USB-C auf USB-A Kabel wurde die Verbindung zwischen dem GNSS-Modul und dem Server hergestellt. Das Antennenkabel wurde durch das gebohrte Loch geführt und an dem GNSS-Modul angeschraubt. Der vorbereitete Installationskasten wird in Abbildung \ref{fig:vorbereitetKasten} dargestellt. - \par - Als weitere Vorbereitung wurden weitere benötigte Netzwerkkabel bereitgelegt und Adapter für die Antennenmontage wurde an dem C-Profil befestigt. - - \begin{figure}[ht] - \centering - \includegraphics[width=0.5\linewidth]{img/installationskasten.png} - \caption{Der für die Montage vorbereitete Installationskasten} - \label{fig:vorbereitetKasten} - \end{figure} - -\subsubsection{Montage} - Die Montage begann mit der Befestigung des Installationskastens. Dafür wurde in je eine Halbschale ein griffiges Klebeband eingebracht, um den Halt zu verbessern. Der Kasten wurde an den Pfosten gehalten und durch die dazugehörigen Halbschalen fixiert. Daraufhin wurde die Antenne an dem C-Profil befestigt und das Antennenkabel angeschlossenen. Das C-Profil wurde an den bei der Begehung besprochen Befestigungspunkten angebracht. Das Antennenkabel wurde mit Kabelbindern an dem C-Profil befestigt. - \par - Als Nächstes musste der PoE-Extender in den vorhandenen Anschlusskasten eingebracht werden. Dieser wurde ebenfalls an der Hutschiene befestigt. Das von dem LoRaWAN-Gateway kommende Ethernetkabel wurde aus der Hutschienen-RJ45-Buchse entnommen und in mit dem ersten Ausgang des Extenders verbunden. Der Eingang wurde mit dem nun freien Port an der Hutschiene verbunden. Danach wurde kontrolliert, ob das vorhandene System wieder einsatzbereit ist. Für die letzte herzustellende Verbindung zwischen dem PoE-Extender und dem PoE-Splitter, musste das Loch in dem vorhandenen Installationskasten etwas aufgebohrt werden. Danach konnte das Kabel verlegt werden, wobei die überschüssige Länge des Kabels im neuen Installationskasten aufgewickelt wurde. Die Abbildung \ref{fig:poeextenderkasten} zeigt den verbauten Extender im Installationskasten. Durch die Betriebs-LED des Servers und den LEDs des Netzwerkinterfaces konnte schon während der Installation festgestellt werden, dass der Server mit Strom versorgt wird und einen Link aufbauen konnten. - - \begin{figure}[ht] - \centering - \includegraphics[width=0.5\linewidth]{img/extenderkasten.png} - \caption{Vorhandener Installationskasten mit eingebrachtem PoE-Extender} - \label{fig:poeextenderkasten} - \end{figure} - -\subsection{Antennenposition bestimmen} - Die jetzt folgenden Schritte wurde alle von einem Remote-Arbeitsplatz durchgeführt. - \par - Damit die Antennenposition bestimmt werden kann, sind im grundlegenden drei Schritte notwendig: - - \setlist{noitemsep} - \begin{enumerate} - \item Rohdaten des GNSS-Moduls aufzeichnen, - \item die Rohdaten in das RINEX-Format konvertieren - \item und die Daten von einem PostProcessing Dienst auswerten lassen. - \end{enumerate} - \setlist{} - - Damit die Rohdaten aufgezeichnet werden können, muss das Modul so konfiguriert werden, dass es diese ausgibt. Dafür wird das u-center und die Verbindung über ser2net genutzt. Die dafür benötigte Installation unter Windows, sowie die grundlegende Nutzung vom u-center wird im Anhang \ref{cha:winAndUcenter} beschrieben. Im u-center muss der Nachrichtentyp RAWX für die USB-Schnittstelle aktiviert werden. Ob die benötigten Daten gesendet werden, kann in Packet-View vom u-center kontrolliert werden. - \par - Die Aufzeichnung der Daten übernimmt der Kommunikations-Server der RTKLib. Das Programm heißt in der Kommandozeilenversion \mintinline[]{text}|STR2STR| und kann einen Dateneingang auf mehrere Datenausgänge übertragen. In diesem Fall werden die Daten des GNSS-Moduls in eine Datei geschrieben. Die meisten PostProcessing Dienste verarbeiten bis zu 24 Stunden Aufzeichnungslänge. Deshalb wird für die höchste Genauigkeit genau diese Dauer für die Einmessung verwendet. Die Länge der Aufzeichnung wird über den \mintinline[]{bash}|timeout| Befehl gesteuert. Damit die Aufzeichnung nicht als Kind-Prozess der Remote-Sitzung läuft, wird das Hilfsprogramm \mintinline[]{bash}|screen| installiert, da ansonsten ein Abbruch der Verbindung auch die Aufzeichnung frühzeitig beenden würde. Aus dieser Beschreibung ergibt sich diese Befehlsfolge: - - \begin{minted}[linenos, gobble=4, breaklines]{bash} - sudo apt-get update - sudo apt-get install screen - - screen - - cd ~ - timeout 24h ./RTKLIB/app/consapp/str2str/gcc/str2str -in serial://ttyACM0:9600:8:n:1:off -out observation.ubx - \end{minted} - - Die screen-Sitzung kann mit der Tastenkombinationen \keys{\ctrl + A} gefolgt von \keys{D} verlassen werden. - \par - Sobald die Aufzeichnung beendet ist, müssen die Daten in das allgemeingültige RINEX-Format umgewandelt werden. Dafür bietet die RTKLib einen RINEX Konverter an. Zur Benutzung im Terminal muss das Programm \mintinline[]{bash}|convbin| aufgerufen werden. Die Konvertierung erfolgt mit: - - \begin{minted}[linenos, gobble=4, breaklines]{bash} - cd ~ - ./RTKLIB/app/consapp/convbin/gcc/convbin -od -os -oi -ot -ti 30 observation.ubx - \end{minted} - - Für die Erklärung der verwendeten Optionen folgt ein Ausschnitt aus dem Manual der RTKLib \cite[97]{rtklibMan}: \glqq - - \setlist{noitemsep} - \begin{itemize}[label=-] - \item od include doppler frequency in rinex obs - \item os include snr in rinex obs - \item oi include iono correction in rinex nav header - \item ot include time correction in rinex nav header - \item ti tint observation data interval (s) - \end{itemize} - \setlist{} - \grqq . - \par - Die umgewandelte Datei muss anschließend an einen PostProcessing Dienst übermittelt werden, der gewählte Dienst erhält die Daten über ein Formular im Browser, deshalb ist die einfachste Variante die Datei \url{ubservation.obs} auf einen Rechner mit einer Desktopumgebung zu kopieren. Dafür wurde die Datei mit dem Programm \mintinline[]{bash}|scp| über SSH kopiert. - \par - Nach einigen Stunden wird die Auswertung per E-Mail versandt. In dem erhaltenen Archiv befinden sich eine PDF (siehe Anhang \ref{cha:auswerungObservation}) in der die Auswertung grafisch veranschaulicht wird und neben anderen Dateien die Datei \url{observation.sum}. In dieser wird ab Zeile 69 die Position der Antenne im Erdkoordinatensystem angegeben. Zusätzlich werden geschätzt Genauigkeiten angegeben, diese liegen je nach Achse zwischen \(1,8mm\) und \(5,2mm\). - \par - Die Koordinaten für X, Y und Z müssen nun über das u-center in das GNSS-Modul programmiert werden. Dafür muss in der Konfigurationsansicht der TMODE ausgewählt werden. In den Einstellungen des TMODE muss der Modus auf \texttt{fixed} eingestellt werden, danach können die Koordinaten im gleichen Fenster eingetragen werden. Damit das Modul auch die Korrekturdaten ausgibt, kann in das Fenster zur Konfiguration der Nachrichten gewechselt werden. Dort sollten die Nachrichten für die Rohdaten wieder entfernt werden, um das Datenaufkommen zu reduzieren. Danach können die RTCM3 Nachrichten mit den Nummern 1005, 1074, 1084, 1094, 1124 und 1230 aktiviert werden. Ob die Konfiguration erfolgreich war, kann wieder im Packet-View Fenster kontrolliert werden. Diese finale Konfiguration des Moduls sollte in den Flash des Moduls geschrieben werden, damit auch über einen Neustart hinweg verfügbar zu sein. Dafür kann in der Menüleiste der Punkt \texttt{Save Config} ausgewählt werden. - -\subsection{Service einrichten} - \label{ssec:pushService} - Die von dem GNSS-Modul generierten Korrekturdaten müssen kontinuierlich an den Ntrip-Caster weitergeleitet werden. Dafür wird der bereits zuvor genutzte Kommunikations-Server der RTKLib verwendet. Als Ausgang wird anstelle der Datei nun der Ntrip-Caster angegeben. - \par - Damit die Ausgabe automatisch protokolliert wird und der Kommunikations-Server auch nach einem Neustart des Servers automatisch startet, wird dem Betriebssystem ein Service hinzugefügt. Dafür muss eine Datei mit root-Rechten und der Endung \texttt{.service}, welche den Service definiert, unter dem Pfad \url{/etc/systemd/system} erstellt werden. Der Inhalt der erstellten Datei \texttt{rtk.service} sieht wie folgt aus: - - \begin{minted}[linenos, gobble=4, breaklines]{bash} - [Unit] - Description=Push RTCM correction data from serial to caster - After=network-online.target - - [Service] - Type=simple - ExecStart=/home/rtk/pushRtcm2Caster.sh - - [Install] - WantedBy=multi-user.target - \end{minted} - - Das auszuführende Skript enthält zum aktuellen Zeitpunkt lediglich den Aufruf des Kommunikationsservers mit den benötigten Parametern. - - \begin{minted}[linenos, gobble=4, breaklines]{bash} - #!/bin/bash - /home/rtk/RTKLIB/app/consapp/str2str/gcc/str2str -in serial://ttyACM0:9600:8:n:1:off -out ntrips://:password@rtk2go.com:2101/GER-Dortmund - \end{minted} - - Anschließend muss der Service aktiviert und gestartet werden. - - \begin{minted}[linenos, gobble=4, breaklines]{bash} - sudo systemctl activate rtk - sudo systemctl start rtk - \end{minted} - - In den Logs kann die übermittelte Datenmenge oder auftretende Fehler betrachtet werden. Wenn der Caster die Daten akzeptiert, erscheint der zuvor bei rtk2go registrierte Mount Point \texttt{GER-Dortmund} in der Mount Point Tabelle unter \url{rtk2go.com:2101} diff --git a/060_4_implementierung_rover.tex b/060_4_implementierung_rover.tex deleted file mode 100644 index 561f8e2..0000000 --- a/060_4_implementierung_rover.tex +++ /dev/null @@ -1,105 +0,0 @@ -\section{Rover} - Die Implementierungen für den Rover beginnen mit der Integration des Gyroskops. Dies umschließt den Einbau der Hardware und das Einbinden der Sensorwerte in die dafür vorgesehene Komponente. Im nächsten Schritt wird der Ntrip-Client dem System hinzugefügt, damit in den folgenden Prozessen die hochgenaue Positionsbestimmung verfügbar ist. Sobald das GNSS-Modul die Korrekturdaten verarbeitet, kann die Implementierung der Verwaltung für die Routen beginnen. Danach sind alle Voraussetzungen gegeben, um den Modus zum Routen aufzeichnen programmieren zu können. Daraufhin können die Algorithmen für das automatische Befahren der Route entwickelt werden. - - \subsection{Gyroskop installieren} - Die elektrische Verbindung des Moduls wird über vier Pins hergestellt, dabei handelt es sich um die zwei I2C Leitungen sowie Masse und die Spannungsversorgung. Das Modul kann mit \(+5V\) betrieben werden. Auf der Hauptplatine sind Pin-Leisten vorhanden, um weitere I2C-Module, welche mit \(+5V\) betrieben werden können, dem System hinzufügen zu können. - \par - Das Modul wird mit einer nicht bestückten Pin-Leise geliefert. Daher bestand die Möglichkeit eine gewinkelte Pin-Leiste einzulöten. Es wurde eben diese Pin-Leiste gewählt, um das Modul waagerecht mit einer weiteren Platine verbinden zu können. Bei der zusätzlichen Platine handelt es sich lediglich um einen Verteiler, welcher in Abbildung \ref{fig:gyroPlatine} gezeigt wird. Dort ist zu sehen, wie der Verteiler, durch seine L-Form, an einem Querbalken mit einer Maul-Büroklammer befestigt wird. Das MPU-6050 Module wird seitlich an eine ebenfalls gewinkelte Sockel-Leiste eingesteckt. Auf der Oberseite der Platine befinden sich drei weitere Konnektoren, an denen das Display und das Magnetometer angeschlossen werden. Zwei der Konnektoren sind für das Magnetometer, um es entweder an den I2C-Bus des ESP32 oder an den Auxiliary-I2C-Bus des MPU-6050 anzuschließen. Auf der Unterseite der Platine ist ein Kabel angelötet, welches auf die Hauptplatine gesteckt wird. - \par - - \begin{wrapfigure}{r}{0.4\textwidth} - \centering - \includegraphics[width=0.38\textwidth]{img/gyroPlatine.jpg} - \caption{I2C Verteilung mit abgeschlossen Gyroskop} - \label{fig:gyroPlatine} - \end{wrapfigure} - - Durch diese weitere Platine wurde zum einen der benötigte feste Platz für das neue Modul geschaffen und zum anderen die Möglichkeit offen gehalten, den bereits verbauten Kompass nun über den MPU-6050 zu nutzen, um eine 9-Achsen Sensorfusion zu ermöglichen. Der Versuch diese 9-Achsen Sensorfusion zu implementieren ist gescheitert. Der Hersteller wirbt zwar mit dieser Funktion, jedoch ist die Rechenleitung des Chips nicht ausreichend hoch genug, damit die Funktion umgesetzt werden kann. Daher müssten Berechnung dafür auf den ESP32 ausgelagert werden\cite[]{9achsfail}. Dieser Weg wurde aufgrund der Komplexität nicht weiter verfolgt. - \par - Die Einbindung des Sensors in den vorhandenen Programmcode erfolgte mit der bereits vorhanden \mintinline{c++}|class SensorData|. Für die Kommunikation mit dem Sensor wird die Bibliothek \texttt{I2Cdevlib-MPU6050} verwendet. Der Klasse wurden neben einer Funktion zum Datenerhalt, die Funktion \mintinline{c++}|void enableGyroscope(); | hinzugefügt. Diese erzeugt ein Objekt für den MPU-6050 und initialisiert sowohl den MPU-6050 als auch den verbauten Digital Motion Processor. Außerdem werden ermittelte Offsets eingestellt. Die periodische aufgerufene \mintinline{c++}|void run(); | Funktion wurde ebenfalls erweitertet und überprüft jetzt in jedem Durchgang, ob neue Daten des Sensors verfügbar sind und verarbeitet diese dann. - - - \subsection{Ntrip Client} - \label{ssec:ntripclient} - Die Implementierungen des Clients orientiert sich an dem von der RTCM herausgegebenen Paper \glqq Best Practices for Ntrip Client developers\grqq \cite{NTRIPWorkingGroup2023}. Zudem können beide Revisionen des Protokolls mit dem Client benutzt werden. Die Revision 1 ist offiziell von der RTCM als \texttt{outdated} markiert. Der in dieser Arbeit verwendete Caster \url{rtk2go.com} gibt jedoch in seinen Statistiken an, dass \(95\%\) der eingehenden Verbindungen die Revision 1 verwenden. Zusätzlich kann durch die Implementierung beider Revisionen, die angegeben Abwärtskompatibilität getestet werden. Des Weiteren wird die Authentisierung mit Benutzernamen und Kennwort sowie die Übermittlung des eigenen Standorts an den Caster implementiert. Der eigene Standort ist für Caster wichtig, welche mit einem Netz aus Referenzstationen betrieben werden. Die Implementierung erfolgt also, damit der Rover auch abseits der errichteten Referenzstation von anderen Anbietern mit Korrekturdaten versorgt werden kann. - - \subsubsection{Einstellungen} - Eine Instanz des Clients fordert die Adresse des Casters, den Mountpoint, die Zugangsdaten und das GNSS-Modul als Parameter für den Konstruktor, diese sind nur durch eine neue Instanz änderbar. Der Benutzername und das Passwort können ignoriert werden, wenn eine Anmeldung bei dem Caster ohne Zugangsdaten möglich ist. - \par - Eine erstellte Instanz verfügt über vier Einstellungsmöglichkeiten. Diese können entweder aktiviert oder deaktiviert werden. - - \setlist{noitemsep} - \begin{itemize}[] - \item Automatisches Wiederverbinden bei Verbindungsabbrüchen \texttt{(default : true)} - \item Die eigene Position übertragen \texttt{(default : false)} - \item Ntrip Revision 1 verwenden \texttt{(default : false)} - \item Den Client selbst aktivieren \texttt{(default : true)} - \end{itemize} - \setlist{} - - \subsubsection{Zustandsautomat} - Der Ntrip Client wurde nach dem Schema eines Zustandsautomaten entworfen, welcher in Abbildung \ref{fig:NTRIPClientStates} skizziert wird. Im Folgenden wird auf die Funktionalitäten der einzelnen Zustände eingegangen. Die Zustände werden durch das \mintinline{c++}|enum NTRIPClientStates| definiert. - - \begin{figure}[ht] - \centering - \includegraphics[width=\linewidth]{img/ntripClientStates.png} - \caption{Skizzierung des Zustandsautomaten des Ntrip Clients} - \label{fig:NTRIPClientStates} - \end{figure} - - \begin{itemize} - \item \textbf{openingConnection} In diesem Zustand wird versucht, die Verbindung zu dem Caster aufzubauen. Dafür wird zwischen den Revisionen von Ntrip unterschieden, ob die Position gesendet werden soll und ob Zugangsdaten angegeben worden sind. Sollte der Verbindungsaufbau scheitern, wird in den \texttt{waiting} Zustand gewechselt, ansonsten in den \texttt{pushingData} Zustand. - \item \textbf{pushingData} Wenn eine Verbindung zu dem Caster besteht, befindet sich der Client in diesem Zustand und leitet die empfangenen Daten an das GNSS-Modul weiter. Es kann nur in den \texttt{closingConnection} Zustand gewechselt werden. - \item \textbf{closingConnection} Sollte der Ntrip Client deaktiviert oder ein Timeout festgestellt werden, wird in diesen Zustand gewechselt, damit die Verbindung aus Sicht des Clients ordnungsgemäß beendet wird. Sobald die Verbindung getrennt ist, wird der \texttt{waiting} Zustand aktiv. - \item \textbf{waiting} Wenn dieser Zustand betreten wird, wurde die Verbindung getrennt und es wird darauf gewartet in den \texttt{openingConnection} Zustand zu wechseln. Dafür muss entweder der Client wieder aktiviert werden oder die automatische Wiederverbindung muss aktiviert sein. - \item \textbf{notAvailable} Dieser Zustand wird betreten, wenn keine Verbindung zum Internet bereitsteht. - \end{itemize} - - \subsection{Routen Management} - \label{ssec:route_management} - Die Implementierung der Routen Verwaltung erfolgt über die \mintinline{c++}|class Route|, welche eine Liste zur Speicherung der Punkte nutzt. Die Punkte sind Instanzen der \mintinline{c++}|class Point|. Es herrscht also eine 1 zu n Beziehung zwischen \mintinline{c++}|class Route| und \mintinline{c++}|class Point|. - - \subsubsection{Postionen mit \mintinline{c++}|class Point|} - Eine Instanz dieser Klasse besteht unter anderem aus den Koordinaten, welche in dem \mintinline{c++}|struct Coordinates| als zwei \mintinline{c++}|double| Werte gespeichert werden. Zusätzlich kann die Zeit der Erzeugung und die geschätzte Genauigkeit des Punktes angegeben und gespeichert werden. Neben den Methoden zur Datenkontrolle und Zugriff wird die Funktionalität der Klasse durch diese beiden Funktionen gegeben: - - \begin{itemize} - \item \mintinline{c++}|double distanceTo(Point); | Errechnet die Entfernung zwischen den Koordinaten der Instanz zu dem gegebenen Punkt. Für die Berechnung wird die Erdkrümmung vernachlässigt, deshalb kann der Satz des Pythagoras genutzt werden. Dafür müssen die in Grad angegebenen Koordinaten zunächst in Radianten umgewandelt und anschließend in ein kartesisches Koordinatensystem überführt werden. Anschließend kann die Entfernung der beiden Punkte berechnet werden. Dafür werden die beiden Koordinaten einer Achse voneinander abgezogen und anschließend quadriert. Die Ergebnisse der beiden Achsen werden schließlich aufsummiert und radiziert. - - \begin{eqnarray} - d = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2} - \end{eqnarray} - - \item \mintinline{c++}|int16_t courseTo(Point); | Errechnet den Kurs von dem aktuellen Punkt zu dem gegebenen Punkt und gibt ihn in Grad aus. \(0^\circ\) entspricht Norden. Von da an wird im Uhrzeigersinn weiter gezählt, sodass \(270^\circ\) etwa einen Kurs nach Westen angeben würden. Für die Berechnung müssen die Längen- und Breitengrade zunächst in Radianten umgewandelt werden. Anschließend kann dann mit der Formel - - \begin{eqnarray} - \theta = \text{atan2}(\sin(\Delta \lambda)cos(\phi_2), \cos(\phi_1)\sin(\phi_2) - \sin(\phi_1)\cos(\phi_2)\cos(\Delta \lambda)) - \end{eqnarray} - - mit - - \begin{eqnarray} - \Delta \lambda &=& \lambda_2 - \lambda_1 \\ - \phi_1, \phi_2 &\widehat{=}& \text{Breitengrade der Punkte} \\ - \lambda_1, \lambda_2 &\widehat{=}& \text{Längengrad der Punkte} - \end{eqnarray} - - Anschließend muss \(\theta\) wieder in Grad umgewandelt und mit dem modulo-Operator auf den Wertebereich \(0 \text{ bis } 360\) normalisiert werden. - \end{itemize} - - \subsubsection{Postionsspeicherung mit \mintinline{c++}|class Route|} - Die Klasse nutzt die Implementierung der Liste aus der C++ Standardbibliothek. Überdies wird ein Iterator für diese Liste von der Klasse verwaltet. Mit primitiven Datentypen wird festgehalten, ob die Route gestartet und der wievielte Punkt gerade aus der Route selektiert ist. - \par - Die Funktionen der Klasse beschränken sich darauf, den Iterator und die Liste zu verwalten. Der Liste können nur Daten hinzugefügt werden. Die Entfernung einzelner Punkte ist nicht möglich und erfordert das Löschen der gesamten Liste. Es kann jeweils der nächste oder der vorherige Punkt ausgewählt werden. Die Route kann am Ende oder am Anfang gestartet werden. Soll die Route im umgekehrter Reihenfolge abgefahren werden, muss diese am Ende gestartet und immer der vorherige Punkt der Route abgerufen werden. Bei einem Fehler, weil beispielsweise keine Route aufgezeichnet wurde, wird von Funktionen eine Instanz von der \mintinline{c++}|class Point| mit den Koordinaten \(0 \text{ und } 0\) zurückgegeben. Dies kann von der aufrufenden Funktion überprüft werden, dafür wurde eigens die Funktion \mintinline{c++}|bool Point::isValid(); | implementiert. - \par - Damit Informationen über die Route abgefragt werden können, wurde ein Datentyp hinzugefügt. Das \mintinline{c++}|struct RouteInfo| enthält die Gesamtzahl der in der Route gespeicherten Punkte sowie den Index des selektierten Punktes. - - \subsubsection{Verwaltung über das Menü} - In die vorhandene Menüstruktur wurde in der ersten Ebene der Punkt \flqq Route\frqq{} als Untermenü hinzugefügt. Dieses Menü stellt die in der folgenden Liste erläuterten Funktionen bereit. Für einige dieser Funktionen wird auf eine entwickelte HTTP-API zugegriffen, deshalb muss für diese Funktionen eine Internetverbindung bestehen. Die serverseitige Implementierung der API wird im Anhang \ref{cha:httpApi} beschrieben. Werden Teile der API auf dem Rover genutzt, zeigt dieser den HTTP-Code an. Mit diesem kann erkannt werden, ob die ausgeführte Operation korrekt ausgeführt wurde. - - \begin{itemize} - \item \textbf{Points} - Unter diesem Punkt können die einzelnen Koordinaten der in der Route gespeicherten Punkte betrachtet werden. - \item \textbf{Clear} - Löscht die aktuell lokal erstellte Route. - \item \textbf{Import} - Bei Auswahl dieses Punktes muss der Benutzer die ID der Route wissen, mit der diese exportiert wurde. Sofern die gewählte ID existiert, wird die Route heruntergeladen und steht dem Rover nun zur Verfügung. Wenn bereits eine Route lokal vorhanden war, wird diese durch importierte überschrieben. In diesem Fall könnte die gefährdete Route vorher exportiert werden. - \item \textbf{Export} - Mit dieser Funktionen können Routen für die spätere Verwendung gesichert werden. Dafür muss ihnen eine ID zugewiesen werden, unter dieser ID lässt sich die Route später wieder abrufen. - \item \textbf{Delete} - Mit Delete kann eine exportierte Route mit ihrer ID gelöscht werden, dies betrifft allerdings nicht aktuell lokal vorhandene Route. - \end{itemize} diff --git a/060_5_implementierung_rover.tex b/060_5_implementierung_rover.tex deleted file mode 100644 index 4c0c6f4..0000000 --- a/060_5_implementierung_rover.tex +++ /dev/null @@ -1,94 +0,0 @@ -\subsection[Navigation]{\mintinline{c++}|class Navigation|} - \label{ssec:navigation_implementation} - Diese Klasse vereinigt die Verwaltung der Route mit den Sensorwerten wie die Positionsdaten und Ausrichtung, damit die eigentliche Navigation bereitgestellt werden kann. Außerdem werden die Anforderungen an die Genauigkeit überwacht. Die Navigation wird von den Modi zur Aufzeichnung und Abfahrt der Route benötigt. - \par - Es wurde ein \mintinline{c++}|enum Status| implementiert, welcher von einigen Funktionen der Klasse genutzt wird, um Informationen über das Ergebnis der aufgerufenen Funktion zu informieren. Es kann mitgeteilt werden, ob Änderungen vorgenommen wurden oder die aktuelle Genauigkeit mangelhaft ist. Zusätzlich besteht die Möglichkeit über den Abschluss einer Aktion zu informieren. Des Weiteren wird in derselben Header-Datei das \mintinline{c++}|struct CourseCorrection| definiert, um die Distanz und die anzuwendende Kurskorrektur zum Zielpunkt in einem Datentypen zu vereinen. - -\subsection{Modus - Route aufzeichnen} - Um eine Route aufzeichnen zu können, wurde zum einen die \mintinline{c++}|class CaptureRoute| implementiert, welche von der bereits vorhanden Klasse zum manuellen Verfahren des Rovers erbt und damit auch in der Hierarchie des \texttt{DiveModi} Interfaces zu finden ist. Dadurch kann der Modus dem bestehenden System ohne weitere Änderungen hinzugefügt werden. - \par - Die Instanz der \mintinline{c++}|class Navigation| wird von dem aktuellen Modus erzeugt. Dafür wird Komponente \texttt{SensorData} benötigt und eine Route. Die \texttt{SensorData} Komponente wird jedem \texttt{DriveModi} über den Konstruktor zur Verfügung gestellt. Wenn keine Route übergeben wird, erzeugt die \texttt{Navigation} eine eigene. Da eine neue Route aufgezeichnet werden soll, ist dieses Verhalten gewollt. - \par - Um die aktuellen Koordinaten der Route hinzuzufügen, muss der Aktions-Button auf der Fernbedienung gedrückt werden. Dadurch versucht \texttt{Navigation} die Route zu erweitern. Dies kann fehlschlagen, wenn die Genauigkeit der aktuellen Position nicht den eingestellten Anforderungen entspricht oder die aktuelle Position zu nah an der, sofern vorhanden, vorherigen ist. Der minimale Abstand zwischen zwei Punkten kann ebenfalls eingestellt werden. Auch der maximale Abstand zwischen zwei Punkten ist definiert und kann eingestellt werden. Wenn die gesamte Route aufgezeichnet wurde, kann der Modus verlassen werden. Dabei wird die Instanz von Navigationsklasse zerstört und damit auch die dort gehaltene Route. Deshalb wird diese zwischengespeichert und überschreibt gegebenenfalls die zuletzt gespeicherte Route. Ein Überschreiben erfolgt nur, wenn die Route mindestens über zwei Einträge verfügt. Die Datenhaltung der Route wird über statische Funktionen und Member in der Klasse \texttt{Route} realisiert. Die zwischengespeicherte Route ist dementsprechend nicht persistent. - \par - Der Modus wird über einen Menüeintrag gestartet. Während der Modus aktiv ist, werden im Menü neben Informationen über Sensorwerte und die bisher aufgezeichnete Route auch Einstellungen zu der geforderten Genauigkeit geboten. - -\subsection{Modus - Route abfahren} - \label{ssec:route_drive} - Die Funktionalität, erfasste Routen abzufahren, erfordert die Zusammenarbeit mehrerer Komponenten. Zunächst wird beschrieben, wie die Navigationsklasse den Kurs zum Zielpunkt berechnet und die Navigationsanweisungen gibt und bestimmt, ab wann ein Punkt als erreicht gilt. Die Anweisungen müssen von dem Autopiloten umgesetzt werden, dafür muss sich dieser auf den Zielpunkt ausrichten und die Strecke mit angepasster Geschwindigkeit zurücklegen. - \par - Der letztendlich ausführende Modus nennt sich \texttt{Autopilot} und wird wie \texttt{CaptureRoute} in das System eingebunden, da dieser Modus, um den Rover an die Startposition der Route fahren zu können, ebenfalls von dem Modus zum manuellen Verfahren erbt. Während der Autopilot die Steuerung übernimmt, werden keine Eingaben von dem Joystick zum Verfahren des Rovers akzeptiert. Sofern der Autopilot verfügbar ist, kann dieser durch das Betätigen der Aktions-Taste aktiviert und auch wieder deaktiviert werden. - \par - Auch der \texttt{Autopilot} verfügt über ein Menü, über welches dieser aufgerufen wird. Das Menü stellt Status-, Sensor-, Routen- und Navigationsinformationen zur Verfügung und ermöglicht das Einstellen der wie präzise ein Punkt angefahren werden muss, ob nach Abschluss der Route diese von vorn gestartet werden soll und ob der aktuelle Zielpunkt eingefroren werden soll, was dazu führt, dass die Route an diesem Punkt pausiert wird. - - \subsubsection{Kursberechnung} - Das Ziel der Kursberechnung ist es, eine vorzeichenbehaftete Kurskorrektur in Grad zu erzeugen. Dafür muss die aktuelle Ausrichtung bekannt sein. Für diese Information stehen drei Quellen zur Verfügung. - - \begin{itemize} - \item Das Magnetometer liefert absolute Werte, welche die Ausrichtung laut Datenblatt \cite[]{QST} im optimalen Fall auf \(2^\circ\) genau beschreiben. - \item Die nächste Quelle ergibt sich aus den gefahrenen Strecken des Rovers. Dafür wird der erste Punkt nach einer Rotation und der letzte Punkt vor einer Rotation festgehalten und daraus die Ausrichtung mit der \mintinline{c++}|int16_t Point::courseTo(Point&); | Methode berechnet. Diese Variante ist bei kurzen Strecken ungenau und wird mit steigendem Abstand zwischen den Punkten genauer, wenn die Positionsbestimmung im niedrigen Zentimeterbereich erfolgt. Sollte der Rover durch den Untergrund oder andere Fehlern keine Gerade fahren, sondern eine leichte Kurve, wird dieses Verfahren ungenauer. - \item Es bleibt noch das hinzugefügte Gyroskop. Dieses kann keine absoluten Werte bestimmen. Dafür kann es präzise relative Drehwerte angeben. Es eignet sich also, um bei einem vorgegebenen Winkel die Drehung zu überwachen. Die Genauigkeit hätte zusätzlich erhöht werden können, wenn die Implementierung der 9-Achsen Sensorfusion funktional gewesen wäre. - \end{itemize} - - Nachdem die Datenquelle ausgewählt wurde, muss der Kurs von der aktuellen Position zum Zielpunkt berechnet werden. Von diesem Ergebnis wird die aktuelle Ausrichtung subtrahiert. Anschließend muss das Resultat auf den gewünschten Wertbereich normiert werden. - - \subsubsection{Navigationsanweisungen} - Aus der berechneten Kurskorrektur und dem verbleibenden Abstand zum Zielpunkt wird Navigationsanweisung erstellt. Die Informationen in das folgende \mintinline{c++}|struct| verpackt: - - \begin{minted}[linenos, gobble=5, breaklines]{c++} - struct CourseCorrection - { - int16_t correction; - double distance; - }; - \end{minted} - - Wenn die Navigationsanweisungen bei der Navigationsklasse abgefragt werden, muss das genannte \mintinline{c++}|struct| der Funktion als Referenz übergeben werden. Der Rückgabewert wird für das bereits beschriebene \mintinline{c++}|enum Navigation::Status| verwendet. Darüber wird mitgeteilt, ob die Navigationsanweisungen aktualisiert wurden oder weshalb dies nicht geschah. Zum Beispiel, wenn der Rover seine Position nicht wesentlich verändert hat, die aktuelle Positionsbestimmung zu ungenau ist oder das Ziel erreicht wurde. - - \subsubsection{Autopilot Aufbau} - Der Autopilot ist einem Zustandsautomaten nachempfunden. In den verschiedenen Zuständen können unterschiedliche und gleiche Funktionen aufgerufen werden. Die beiden häufigsten Funktionsaufrufe in den verschiedenen Status sollen erläutert werden: - - \begin{itemize} - \item \mintinline{c++}|void Autopilot::askNavigationForOrder(); | holt sich die aktuellen Navigationsanweisungen von \texttt{Navigation} und wertet dabei den zurückgegebenen Status aus. Durch diese Auswertung können Zustandsübergänge auftreten. Beispielsweise bei vollständiger abgefahrener Route oder mangelnder Genauigkeit bei der Positionsbestimmung. Sollte der zweite Fall eintreten, wird der vorherige Zustand gespeichert, in welchen zurückgekehrt wird, wenn die Genauigkeit wieder den Anforderungen entspricht und - \item \mintinline{c++}|void Autopilot::checkButtonInput(); | überprüft, ob der Aktions-Button gedrückt ist. Wenn die Eingabe vorliegt, werden Zustandswechsel durchgeführt, wie selbstständiges Fahren aktivieren und deaktivieren. - \end{itemize} - - Die folgende Tabelle \ref{tab:autopilot} listet die Zustände auf und beschreibt die Funktionalitäten der einzelnen Zustände. Dabei wird in der Spalte \texttt{Update} angegeben, ob die Navigationsanweisungen mit der beschriebenen Funktion in diesem Zustand aktualisiert werden und mit der Spalte \texttt{Check} wird das gleich für die Überprüfung der Benutzereingaben dargestellt. - - \begin{table}[] - \centering - \begin{tabular}{|l|c|c|l|} - \hline - Zustand & \multicolumn{1}{l|}{Update} & \multicolumn{1}{l|}{Check} & Beschreibung \\ \hline - InsufficientAccuracy & x & - & -Warten auf bessere Genauigkeit \\ \hline - NoRoute & - & - & -Autopilot nicht verfügbar \\ \hline - None & - & - & -Default Zustand zum Programmbeginn \\ \hline - NavigationStarted & x & x & \begin{tabular}[c]{@{}l@{}}-Autopilot initialisiert\\ -Auf Benutzereingabe warten\end{tabular} \\ \hline - GetToStartPoint & x & - & \begin{tabular}[c]{@{}l@{}}-Warten bis Benutzer den Rover in die \\ Nähe des Startpunktes gebracht hat\\ -Fahren mit dem Joystick möglich\end{tabular} \\ \hline - SelfDrivingAvailable & x & x & \begin{tabular}[c]{@{}l@{}}-Autopilot bereit\\ -Auf Benutzereingabe warten\end{tabular} \\ \hline - SelfDriving & x & x & \begin{tabular}[c]{@{}l@{}}-Rover fährt geradeaus bis die\\ Abweichung zu groß ist.\end{tabular} \\ \hline - SelfDrivingRotate & x & - & -Abweichung korrigieren \\ \hline - TargetReached & - & - & -Navigation abgeschlossen \\ \hline - \end{tabular} - \caption{Auflistung und Beschreibung der Zustände des Autopiloten} - \label{tab:autopilot} - \end{table} - - \subsubsection{Ausrichten} - Wenn der Rover zu weit von dem Kurs abweicht und damit nicht mehr ausreichend genau auf den Zielpunkt ausgerichtet ist, wird von dem Zustand \texttt{SelfDriving} in den Zustand \texttt{SelfDrivingRotate} gewechselt. Dieser Wechsel kann nur aus \texttt{SelfDriving} erfolgen und beginnt damit, die Rotation einzuleiten. Dabei wird Drehrichtung der Rotation durch das Vorzeichen der gegebenen Kurskorrektur bestimmt. Ab diesem Zeitpunkt wird durchgehend überprüft, wann sich der Rover weit genug gedreht hat, um die Rotation rechtzeitig zu beenden. Anschließend wird wieder in den vorherigen Zustand gewechselt. - - \subsubsection{Geschwindigkeit} - Die Geschwindigkeit wird je nach Abstand zu dem Zielpunkt eingestellt. Dabei gibt es drei verschiedene Abstandszonen. Die Werte für Geschwindigkeit und Abstand werden in Tabelle \ref{tab:roverSpeed} beschrieben. Die Geschwindigkeit wird im Nahbereich deutlich reduziert, um einfacher auf Abweichungen reagieren zu können. - - \begin{table}[] - \centering - \begin{tabular}{|l|c|c|} - \hline - Bereich & \multicolumn{1}{l|}{Abstand {[}m{]}} & \multicolumn{1}{l|}{Geschwindigkeit {[}m/s{]}} \\ \hline - fern & 2!!! & 2 \\ \hline - mittel & 1!!! & 1 \\ \hline - nah & 0,75!!! & 0,5 \\ \hline - \end{tabular} - \caption{Geschwindigkeit der Rovers je nach Abstand zum Zielpunkt} - \label{tab:roverSpeed} - \end{table} diff --git a/065_1_bewertung.tex b/065_1_bewertung.tex index 393b0d8..e9794ce 100644 --- a/065_1_bewertung.tex +++ b/065_1_bewertung.tex @@ -157,3 +157,67 @@ \item Errechnet man die gleichen Mittelwerte für die Zeit bis zur Fix-Lösung, erreicht rtk2go ebenfalls einen fast eine Sekunde schnelleren Wert. \item Die Messergebnisse scheinen eher von der Umgebung des Teststandorts, als der Entfernung zu der Referenzstation, abhängig zu sein. \end{itemize} + + \section{Tests} + \label{sec:tests} + Die folgenden Tests beschäftigen sich alle mit dem Rover und sollen die einzelnen implementierten Komponenten sowie deren zusammenwirken überprüfen. Die Tests sind in der Reihenfolge so sortiert, dass für den jeweils nächsten Test der vorherige erfolgreich abgeschlossen sein muss. + + \subsection{Route aufzeichnen} + Für die Aufzeichnung muss der Rover zunächst in den \texttt{Capture Route} Modus versetzt werden. Dadurch wird automatisch der Ntrip-Client gestartet und es muss gewartet werden, bis das GNSS-Modul die eingestellte Genauigkeit erreicht hat. Dies kann im Menü überprüft werden. Währenddessen kann der Rover bereits verfahren und somit an den Startpunkt der Route gefahren werden. Anschließend wird der Befehl zur Speicherung des aktuellen Punktes über den Joystick gegeben. Nach jedem Speicherbefehl wird das Ergebnis im Menü überprüft. Sollte der aktuelle Punkt nicht gespeichert worden sein, liegt dies meistens an einer mangelhaften Positionsgenauigkeit. In diesem Fall wird gewartet bis diese wieder den Anforderungen entspricht. + \par + Es wurde für diesen Test eine Route, bestehend aus sechs Koordinatenpaaren, erfolgreich aufgezeichnet. + + \subsubsection{Koordinaten Plausibilität} + Die Koordinaten wurden in der Webversion von Google Earth markiert und miteinander verbunden, siehe Abbildung \ref{fig:roverRouteGoogleEarth}. Während der Aufzeichnung der Route wurde darauf geachtet, markante Punkte, welche auch auf Satellitenbildern zu erkennen sind, zu benutzen. Deshalb wurden hauptsächlich Regenwassereinläufe als Positionen genutzt. Diese sind auf der Abbildung als kleine Rechtecke unter den Markierungen zu erkennen. Unter der Bedingung, dass die Positionierung der Bilder in Google Earth der Realität entspricht, treffen die aufgezeichneten Koordinaten die gewählten Punkte und können daher als plausibel betrachtet werden. + + \begin{figure}[ht] + \centering + \includegraphics[width=\linewidth]{img/roverRouteGoogleEarth.png} + \caption{Abbildung einer aufgezeichneten Route in Google Earth\protect\footnote[3]{Quelle Google Earth. (2024) Bild eines Parkplatzes der an der Emil-Figge-Straße in Dortmund, Deutschland {[51.496567 N 7.418032 E]} Zugriff am 19.08.24, von \url{https://earth.google.com/web/}}} + \label{fig:roverRouteGoogleEarth} + \end{figure} + + \subsection{Routen Management} + Die Verwaltung der Routen kann getestet werden, indem die einzelnen Aktionen zur Routenverwaltung ausgeführt werden. Als Vorbereitung muss eine Route aufgezeichnet werden, dementsprechend muss der vorausgegangene Test \texttt{Route aufzeichnen} erfolgreich abgeschlossen worden sein. Für den Umfang dieses Tests wurde festgelegt, dass die Route 10 Punkte beinhalten soll. Die Anzahl der bereits aufgezeichneten Punkte kann im Menü des Aufzeichnungsmodus verfolgt und abschließend im Menü \texttt{Route} überprüft werden. In diesem Menü können die einzelnen Koordinaten der Punkte betrachtet werden. Diese werden wieder notiert, um die Richtigkeit der Daten im Verlauf des Tests prüfen zu können. + + \subsubsection{Route exportieren} + Nach Abschluss der Vorbereitung kann die Route exportiert werden. Dafür muss der zugehörige Menüpunkt aufgerufen werden. In diesem muss eine \texttt{ID} für die Route vergeben werden. In diesem Fall wird dafür die Zahl \(98\) gewählt. Nach der Bestätigung wird der Ausgang des Exports mitgeteilt. In diesem Fall erscheint die Meldung \glqq \texttt{Export complete}\grqq\ mit dem Code \(201\). Zur Überprüfung der gespeicherten Daten kann die Route über die folgende URL abgerufen werden: \url{https://rover.kleiax.de/api/98}. Die empfangenen Daten des Endpunktes der API entsprechen den übermittelten Daten. + \par + Ein erneuter Versuch, die Route mit derselben \texttt{ID} zu exportieren, schlägt richtigerweise mit dem Code \(419\) fehl, da die \texttt{ID} bereits verwendet wird und dadurch sichergestellt werden kann, dass diese nicht durch eine fehlerhafte Eingabe überschrieben oder verfälscht wird. + + \subsubsection{Route importieren} + Um überprüfen zu können, ob die exportierte Route bei dem folgenden Test auch tatsächlich wieder geladen wird, muss zunächst die zwischengespeicherte Route gelöscht werden. Dafür existiert der Menüeintrag \glqq\texttt{Clear}\grqq\ oder der Rover wird neu gestartet. Für den Test wurde ein Neustart über das Menü ausgeführt. In dem Menüeintrag \texttt{Points} kann zusätzlich überprüft werden, ob eine Route vorhanden ist. Der eigentliche Test besteht darin, über den Menüpunkt \texttt{import} die zuvor gewählte \texttt{ID} zu selektieren und anschließend durch die Bestätigung den Import auszuführen. Bei einem Erfolg wird die Meldung \glqq \texttt{Import Complete}\grqq\ mit dem Code \(202\) erwartet. + \par + Nach dem Erhalt der Erfolgsbestätigung wurden die importierten Koordinaten mit den exportierten Koordinaten abgeglichen und es wurde Gleichheit festgestellt. Der Versuch eine nicht existierende Route zu importierten, schlägt erfolgreich mit dem Code \(418\) fehl. + + \subsubsection{Route löschen} + Die Löschung konnte ebenfalls erfolgreich getestet werden, indem der passende Menüeintrag ausgewählt und wieder die \texttt{ID} \(98\) ausgewählt wurde. Die Rückmeldung lautete \glqq \texttt{Delete complete}\grqq\ mit dem Code \(202\). Der Versuch, die bereits gelöschte ID erneut zu löschen, wird mit dem Fehlercode \(418\) quittiert. Zur Überprüfung, ob die Daten gelöscht wurden, kann die API-URL aus dem ersten Test aufgerufen oder es kann versucht werden, die gelöscht Route zu importieren. Beides schlägt wie erwartet mit dem Code \(418\) fehl. + + \subsection{Route abfahren} + Die Zielfunktion des Rovers wurde mit einer Route vor einem Gebäude der FH Dortmund getestet. Die Punkte der Route ergeben miteinander verbunden ein Fünfeck. Der Rover konnte die aufgezeichnete Route abfahren. Dabei fiel auf, dass der Rover besonders einen Punkt verfehlte und um diesen zu erreichen, wendete und ihn dann traf. Dieses Verhalten trat bei jeder Runde auf. Ansonsten verlief der Test den Anforderungen entsprechend und zeigte, dass Fehler während der Navigation korrigiert werden können. Im Anhang \ref{cha:cd} wird der Pfad zu einer Videoaufzeichnung des Tests angegeben. + \par + Der Test wurde einige Stunden später erneut ausgeführt. Dabei wurde beobachtet, dass sich die ganze Route um ungefähr 20 cm von dem Gebäude entfernt hat. Aufgrund der Tatsache, dass alle Punkte gleichermaßen von diesem Phänomen betroffen waren, wird davon ausgegangen, dass das GNSS-Modul durch die Abschattung des Gebäudes einem Offset unterlag. + + \subsubsection{Genuigkeitsprüfung} + Der Rover soll die autonome Navigation unterbrechen, sobald die verfügbare Genauigkeit des GNSS-Moduls einen Schwellwert unterschreitet. Dieses Verhalten wurde getestet, indem das W-LAN, welches die Internetverbindung für den Rover bereitstellt, abgeschaltet wurde. Der Rover fuhr anschließend etwa 16 Sekunden weiter und blieb dann stehen. Die Verzögerung ist dadurch zu erklären, dass das GNSS-Modul auch ohne neue Korrekturdaten zeitweise die geforderte Genauigkeit bereitstellen kann. Deshalb passt das Ergebnis zu dem erwarteten Verhalten. + \par + Zusätzlich konnte durch Wiederherstellen des W-LANs getestet werden, ob die Navigation wieder fortgesetzt wird, sobald die Genauigkeit den Anforderungen entspricht. Dieser Test konnte ebenfalls mit einem positiven Ergebnis abgeschlossen werden. Der Rover benötigte ungefähr 27 Sekunden, um die Navigation fortzusetzen. Diese Zeit ergibt sich zum einen aus den Warteschleifen, welche die Verbindungsversuche begrenzen und zum anderen durch das GNSS-Modul, welches die Korrekturdaten zunächst verarbeiten muss. + + + \section{Rover} + Während der Nutzung im Zuge der Entwicklung und der Tests sind allgemeine Erkenntnisse zu dem Rover erlangt worden. Diese werden im Folgenden thematisiert und beziehen sich hauptsächlich auf die Handhabung und die Umweltanforderungen, welche durch die Architektur des Rovers gestellt werden. + + \subsection{W-LAN} + Durch die benötigten Korrekturdaten für das GNSS-Modul, welche über das Internet übertragen werden, muss der Rover stets auf eine Internetverbindung zugreifen können. Der Vorteil dieser Übertragungsmethode liegt in der Verfügbarkeit im Gegensatz zu spezielleren Lösungen. Dadurch wird nicht zwingend eine eigene Basisstation benötigt. Das Problem liegt darin, wie die Verbindung hergestellt wird. Im aktuellen Ausbau verfügt der Rover lediglich über W-LAN. Den bereits in Kapitel \ref{ssec:wlan-description} beschriebenen Spezifikationen, kann die Reichweite von W-LAN Netzwerken entnommen werden. Mit den vom Rover unterstützen \(2,4 GHz\) Band, mit der besten Reichweite, ist eine Abdeckung des Einsatzgebietes sehr aufwendig. Außerdem ist die Konfiguration des Rovers für Änderungen des W-LANs durch Konfiguration oder Standortwechsel anfällig. + \par + Die aktuelle Lösung besteht darin, ein Mobilfunktelefon mit aktivierten W-LAN Access Point in der Nähe des Rovers zu halten oder dieses in dem Rover mitfahren zu lassen. Allerdings werden dadurch nicht alle zuvor genannten Probleme behoben, daher wäre an dieser Stelle eine Optimierung, welche diesen Umweg überflüssig werden lässt, angebracht. + + \subsection{Handhabung} + Die Steuerung des Rovers ist an die Fernbedienung gebunden, welche ebenfalls das \(2,4 GHz\) Band nutzt und damit denselben Reichweiten Einschränkungen unterliegt. Für den aktuellen Entwicklungsstand des Rovers reicht dies aus, insbesondere weil das Bedienkonzept zu diesem Zeitpunkt den Sichtkontakt zu dem Rover für viele Aktionen voraussetzt. + \par + Des Weiteren gibt es nur wenige Fehler, auf welche der Rover reagieren kann, wie der Verlust der Korrekturdaten oder eine zu geringe Spannung des Akkus. Alle anderen Fehler können nicht detektiert werden. Die erkennbaren Fehler können dem Nutzer nur mitgeteilt werden, wenn sich dieser mit der aktivierten Fernbedienung in Reichweite befindet und der Nutzer sich in dem richtigen Menüpunkt befindet. Lediglich die Abschaltung des Rovers aufgrund eines zu geringen Ladestands wird auf dem Display ohne Benutzereingabe angezeigt. + + \subsection{Korrekturen während der Navigation} + Während einer Kurskorrektur in der Navigation wirkt der Rover sehr stockend. Dieser Eindruck entsteht, weil der Rover vor jeder Kurskorrektur bis zum Stillstand abbremst. Zusätzlich muss für die Rotation um die eigene Achse genügend Kraft aufgebracht werden, um den Grip der Reifen zu überwinden. Bei diesen Leistungen am Motor ist es in dieser Arbeit nicht gelungen, Drehungen um wenige Grad auf der Stelle auszuführen, weil der plötzliche Verlust des Grips der Reifen zu einer stoßartigen Drehung führt. + \par + Aufgrund dieser Problemstellungen wird eine Kurskorrektur erst ausgeführt, wenn die Abweichung groß genug ist. Durch diese Vorgehensweise neigt der Rover eher dazu, an einem Ziel vorbeizufahren. Der Algorithmus für die Kurskorrektur wurde angesichts der steigenden Komplexität nicht angepasst. diff --git a/065_2_bewertung.tex b/065_2_bewertung.tex deleted file mode 100644 index 149a35d..0000000 --- a/065_2_bewertung.tex +++ /dev/null @@ -1,63 +0,0 @@ -\section{Tests} - \label{sec:tests} - Die folgenden Tests beschäftigen sich alle mit dem Rover und sollen die einzelnen implementierten Komponenten sowie deren zusammenwirken überprüfen. Die Tests sind in der Reihenfolge so sortiert, dass für den jeweils nächsten Test der vorherige erfolgreich abgeschlossen sein muss. - - \subsection{Route aufzeichnen} - Für die Aufzeichnung muss der Rover zunächst in den \texttt{Capture Route} Modus versetzt werden. Dadurch wird automatisch der Ntrip-Client gestartet und es muss gewartet werden, bis das GNSS-Modul die eingestellte Genauigkeit erreicht hat. Dies kann im Menü überprüft werden. Währenddessen kann der Rover bereits verfahren und somit an den Startpunkt der Route gefahren werden. Anschließend wird der Befehl zur Speicherung des aktuellen Punktes über den Joystick gegeben. Nach jedem Speicherbefehl wird das Ergebnis im Menü überprüft. Sollte der aktuelle Punkt nicht gespeichert worden sein, liegt dies meistens an einer mangelhaften Positionsgenauigkeit. In diesem Fall wird gewartet bis diese wieder den Anforderungen entspricht. - \par - Es wurde für diesen Test eine Route, bestehend aus sechs Koordinatenpaaren, erfolgreich aufgezeichnet. - - \subsubsection{Koordinaten Plausibilität} - Die Koordinaten wurden in der Webversion von Google Earth markiert und miteinander verbunden, siehe Abbildung \ref{fig:roverRouteGoogleEarth}. Während der Aufzeichnung der Route wurde darauf geachtet, markante Punkte, welche auch auf Satellitenbildern zu erkennen sind, zu benutzen. Deshalb wurden hauptsächlich Regenwassereinläufe als Positionen genutzt. Diese sind auf der Abbildung als kleine Rechtecke unter den Markierungen zu erkennen. Unter der Bedingung, dass die Positionierung der Bilder in Google Earth der Realität entspricht, treffen die aufgezeichneten Koordinaten die gewählten Punkte und können daher als plausibel betrachtet werden. - - \begin{figure}[ht] - \centering - \includegraphics[width=\linewidth]{img/roverRouteGoogleEarth.png} - \caption{Abbildung einer aufgezeichneten Route in Google Earth\protect\footnote[3]{Quelle Google Earth. (2024) Bild eines Parkplatzes der an der Emil-Figge-Straße in Dortmund, Deutschland {[51.496567 N 7.418032 E]} Zugriff am 19.08.24, von \url{https://earth.google.com/web/}}} - \label{fig:roverRouteGoogleEarth} - \end{figure} - - \subsection{Routen Management} - Die Verwaltung der Routen kann getestet werden, indem die einzelnen Aktionen zur Routenverwaltung ausgeführt werden. Als Vorbereitung muss eine Route aufgezeichnet werden, dementsprechend muss der vorausgegangene Test \texttt{Route aufzeichnen} erfolgreich abgeschlossen worden sein. Für den Umfang dieses Tests wurde festgelegt, dass die Route 10 Punkte beinhalten soll. Die Anzahl der bereits aufgezeichneten Punkte kann im Menü des Aufzeichnungsmodus verfolgt und abschließend im Menü \texttt{Route} überprüft werden. In diesem Menü können die einzelnen Koordinaten der Punkte betrachtet werden. Diese werden wieder notiert, um die Richtigkeit der Daten im Verlauf des Tests prüfen zu können. - - \subsubsection{Route exportieren} - Nach Abschluss der Vorbereitung kann die Route exportiert werden. Dafür muss der zugehörige Menüpunkt aufgerufen werden. In diesem muss eine \texttt{ID} für die Route vergeben werden. In diesem Fall wird dafür die Zahl \(98\) gewählt. Nach der Bestätigung wird der Ausgang des Exports mitgeteilt. In diesem Fall erscheint die Meldung \glqq \texttt{Export complete}\grqq\ mit dem Code \(201\). Zur Überprüfung der gespeicherten Daten kann die Route über die folgende URL abgerufen werden: \url{https://rover.kleiax.de/api/98}. Die empfangenen Daten des Endpunktes der API entsprechen den übermittelten Daten. - \par - Ein erneuter Versuch, die Route mit derselben \texttt{ID} zu exportieren, schlägt richtigerweise mit dem Code \(419\) fehl, da die \texttt{ID} bereits verwendet wird und dadurch sichergestellt werden kann, dass diese nicht durch eine fehlerhafte Eingabe überschrieben oder verfälscht wird. - - \subsubsection{Route importieren} - Um überprüfen zu können, ob die exportierte Route bei dem folgenden Test auch tatsächlich wieder geladen wird, muss zunächst die zwischengespeicherte Route gelöscht werden. Dafür existiert der Menüeintrag \glqq\texttt{Clear}\grqq\ oder der Rover wird neu gestartet. Für den Test wurde ein Neustart über das Menü ausgeführt. In dem Menüeintrag \texttt{Points} kann zusätzlich überprüft werden, ob eine Route vorhanden ist. Der eigentliche Test besteht darin, über den Menüpunkt \texttt{import} die zuvor gewählte \texttt{ID} zu selektieren und anschließend durch die Bestätigung den Import auszuführen. Bei einem Erfolg wird die Meldung \glqq \texttt{Import Complete}\grqq\ mit dem Code \(202\) erwartet. - \par - Nach dem Erhalt der Erfolgsbestätigung wurden die importierten Koordinaten mit den exportierten Koordinaten abgeglichen und es wurde Gleichheit festgestellt. Der Versuch eine nicht existierende Route zu importierten, schlägt erfolgreich mit dem Code \(418\) fehl. - - \subsubsection{Route löschen} - Die Löschung konnte ebenfalls erfolgreich getestet werden, indem der passende Menüeintrag ausgewählt und wieder die \texttt{ID} \(98\) ausgewählt wurde. Die Rückmeldung lautete \glqq \texttt{Delete complete}\grqq\ mit dem Code \(202\). Der Versuch, die bereits gelöschte ID erneut zu löschen, wird mit dem Fehlercode \(418\) quittiert. Zur Überprüfung, ob die Daten gelöscht wurden, kann die API-URL aus dem ersten Test aufgerufen oder es kann versucht werden, die gelöscht Route zu importieren. Beides schlägt wie erwartet mit dem Code \(418\) fehl. - - \subsection{Route abfahren} - Die Zielfunktion des Rovers wurde mit einer Route vor einem Gebäude der FH Dortmund getestet. Die Punkte der Route ergeben miteinander verbunden ein Fünfeck. Der Rover konnte die aufgezeichnete Route abfahren. Dabei fiel auf, dass der Rover besonders einen Punkt verfehlte und um diesen zu erreichen, wendete und ihn dann traf. Dieses Verhalten trat bei jeder Runde auf. Ansonsten verlief der Test den Anforderungen entsprechend und zeigte, dass Fehler während der Navigation korrigiert werden können. Im Anhang \ref{cha:cd} wird der Pfad zu einer Videoaufzeichnung des Tests angegeben. - \par - Der Test wurde einige Stunden später erneut ausgeführt. Dabei wurde beobachtet, dass sich die ganze Route um ungefähr 20 cm von dem Gebäude entfernt hat. Aufgrund der Tatsache, dass alle Punkte gleichermaßen von diesem Phänomen betroffen waren, wird davon ausgegangen, dass das GNSS-Modul durch die Abschattung des Gebäudes einem Offset unterlag. - - \subsubsection{Genuigkeitsprüfung} - Der Rover soll die autonome Navigation unterbrechen, sobald die verfügbare Genauigkeit des GNSS-Moduls einen Schwellwert unterschreitet. Dieses Verhalten wurde getestet, indem das W-LAN, welches die Internetverbindung für den Rover bereitstellt, abgeschaltet wurde. Der Rover fuhr anschließend etwa 16 Sekunden weiter und blieb dann stehen. Die Verzögerung ist dadurch zu erklären, dass das GNSS-Modul auch ohne neue Korrekturdaten zeitweise die geforderte Genauigkeit bereitstellen kann. Deshalb passt das Ergebnis zu dem erwarteten Verhalten. - \par - Zusätzlich konnte durch Wiederherstellen des W-LANs getestet werden, ob die Navigation wieder fortgesetzt wird, sobald die Genauigkeit den Anforderungen entspricht. Dieser Test konnte ebenfalls mit einem positiven Ergebnis abgeschlossen werden. Der Rover benötigte ungefähr 27 Sekunden, um die Navigation fortzusetzen. Diese Zeit ergibt sich zum einen aus den Warteschleifen, welche die Verbindungsversuche begrenzen und zum anderen durch das GNSS-Modul, welches die Korrekturdaten zunächst verarbeiten muss. - - -\section{Rover} - Während der Nutzung im Zuge der Entwicklung und der Tests sind allgemeine Erkenntnisse zu dem Rover erlangt worden. Diese werden im Folgenden thematisiert und beziehen sich hauptsächlich auf die Handhabung und die Umweltanforderungen, welche durch die Architektur des Rovers gestellt werden. - - \subsection{W-LAN} - Durch die benötigten Korrekturdaten für das GNSS-Modul, welche über das Internet übertragen werden, muss der Rover stets auf eine Internetverbindung zugreifen können. Der Vorteil dieser Übertragungsmethode liegt in der Verfügbarkeit im Gegensatz zu spezielleren Lösungen. Dadurch wird nicht zwingend eine eigene Basisstation benötigt. Das Problem liegt darin, wie die Verbindung hergestellt wird. Im aktuellen Ausbau verfügt der Rover lediglich über W-LAN. Den bereits in Kapitel \ref{ssec:wlan-description} beschriebenen Spezifikationen, kann die Reichweite von W-LAN Netzwerken entnommen werden. Mit den vom Rover unterstützen \(2,4 GHz\) Band, mit der besten Reichweite, ist eine Abdeckung des Einsatzgebietes sehr aufwendig. Außerdem ist die Konfiguration des Rovers für Änderungen des W-LANs durch Konfiguration oder Standortwechsel anfällig. - \par - Die aktuelle Lösung besteht darin, ein Mobilfunktelefon mit aktivierten W-LAN Access Point in der Nähe des Rovers zu halten oder dieses in dem Rover mitfahren zu lassen. Allerdings werden dadurch nicht alle zuvor genannten Probleme behoben, daher wäre an dieser Stelle eine Optimierung, welche diesen Umweg überflüssig werden lässt, angebracht. - - \subsection{Handhabung} - Die Steuerung des Rovers ist an die Fernbedienung gebunden, welche ebenfalls das \(2,4 GHz\) Band nutzt und damit denselben Reichweiten Einschränkungen unterliegt. Für den aktuellen Entwicklungsstand des Rovers reicht dies aus, insbesondere weil das Bedienkonzept zu diesem Zeitpunkt den Sichtkontakt zu dem Rover für viele Aktionen voraussetzt. - \par - Des Weiteren gibt es nur wenige Fehler, auf welche der Rover reagieren kann, wie der Verlust der Korrekturdaten oder eine zu geringe Spannung des Akkus. Alle anderen Fehler können nicht detektiert werden. Die erkennbaren Fehler können dem Nutzer nur mitgeteilt werden, wenn sich dieser mit der aktivierten Fernbedienung in Reichweite befindet und der Nutzer sich in dem richtigen Menüpunkt befindet. Lediglich die Abschaltung des Rovers aufgrund eines zu geringen Ladestands wird auf dem Display ohne Benutzereingabe angezeigt. - - \subsection{Korrekturen während der Navigation} - Während einer Kurskorrektur in der Navigation wirkt der Rover sehr stockend. Dieser Eindruck entsteht, weil der Rover vor jeder Kurskorrektur bis zum Stillstand abbremst. Zusätzlich muss für die Rotation um die eigene Achse genügend Kraft aufgebracht werden, um den Grip der Reifen zu überwinden. Bei diesen Leistungen am Motor ist es in dieser Arbeit nicht gelungen, Drehungen um wenige Grad auf der Stelle auszuführen, weil der plötzliche Verlust des Grips der Reifen zu einer stoßartigen Drehung führt. - \par - Aufgrund dieser Problemstellungen wird eine Kurskorrektur erst ausgeführt, wenn die Abweichung groß genug ist. Durch diese Vorgehensweise neigt der Rover eher dazu, an einem Ziel vorbeizufahren. Der Algorithmus für die Kurskorrektur wurde angesichts der steigenden Komplexität nicht angepasst. diff --git a/070_resuemee.tex b/070_resuemee.tex index a02d990..4c5f18f 100644 --- a/070_resuemee.tex +++ b/070_resuemee.tex @@ -56,4 +56,4 @@ Mit diesem Projekt könnte die Qualität der Referenzstation verbessert werden, weil so das Monitoring und die Wartbarkeit vereinfacht werden würden. Zusätzlich würde dadurch eine gewisse Erweiterbarkeit dem System hinzugefügt werden, da dadurch weitere Dienste mit Korrekturdaten versorgt werden könnten. \subsection{Temperaturbeständigkeit der Referenzstation} - Der in der Bewertung beschriebene Ausfall der Referenzstation ist der Wahrscheinlichkeit nach auf sehr hohe Außentemperaturen zurückzuführen. Daher empfiehlt es sich, für die Langlebigkeit der Komponenten im Installationskasten sowie der Ausfallsicherheit eine Isolierung in den Kasten einzubringen. + Der in der Bewertung beschriebene Ausfall der Referenzstation ist auf sehr hohe Außentemperaturen zurückzuführen. Daher empfiehlt es sich, für die Langlebigkeit der Komponenten im Installationskasten sowie der Ausfallsicherheit eine Isolierung in den Kasten einzubringen. diff --git a/190_cd.tex b/190_cd.tex index 91ec253..fe97a95 100644 --- a/190_cd.tex +++ b/190_cd.tex @@ -1,10 +1,10 @@ \chapter{Programmcode und Dokumentation} \label{cha:cd} - Auf der beiliegenden CD befindet sich im Ordner Doxygen die generierte Dokumentation des Rovers. Diese ist für die Ansicht in einem Webbrowser optimiert, dafür die Datei \flqq index.html\frqq{} öffnen. + Die beiliegende CD enthält weitere Daten zu dieser Arbeit. Im Hauptverzeichnis befindet sich diese Arbeit als PDF-Datei. Das Literaturverzeichnis wurde zusätzlich als separate PDF-Datei beigelegt. Einiger der Quellen im Literaturverzeichnis sind in dem Ordner \texttt{Quellen} zu finden. \par - In dem Ordner Rover befindet sich der Quellcode für den Rover. Das Projekt kann mit dem Programm Visual Studio Code geöffnet werden, zusätzlich wird die Erweiterung PlatformIO benötigt. Das Selbe gilt für den Ordner RemoteControl, in welchem sich der Quellcode für die Fernbedienung befindet. + Weiterhin befinden sich in dem Ordner \texttt{Medien} die verwendeten Bilder, welche in weiteren Unterordnern sortiert sind. Zudem liegt das Video des Rovers bei, wie dieser autonom fährt. \par - Der Ordner mit dem Namen 3D enthält alle gedruckten Formteile in dem stl-Format. + Der Ordner \texttt{Rover} enthält den Programmcode sowie die Dokumentation in jeweils separaten Ordnern. Die Doxygen Dokumentation wird am besten über die Datei \texttt{index.html} geöffnet. Der Programmcode wurde mit dem Editor \texttt{Visual Studio Code} und der Erweiterung \texttt{PlatformIO} geschrieben. Des Weiteren enthält der Unterordner \texttt{API} den undokumentierten Code der API für die Routenverwaltung. \par - In weiteren Ordnern befinden sich die Datei für die erstellte Platine und Datenblätter. + Der letzte Ordner enthält die Dateien, welche der Referenzstation zugeordnet werden können. Dazu gehören unter anderem die in dem Unterordner \texttt{3D} befindlichen Projektdateien der Formteile für das Programm \texttt{FreeCAD} sowie die Auswertung der Antennenposition. diff --git a/999_eidesstattlicheErklärung.tex b/999_eidesstattlicheErklärung.tex deleted file mode 100644 index f214db6..0000000 --- a/999_eidesstattlicheErklärung.tex +++ /dev/null @@ -1,13 +0,0 @@ -\addchap[Eidesstattliche Erklärung]{} - -\section*{Eidesstattliche Erklärung} - Ich versichere an Eides statt, dass ich die vorliegende Arbeit selbständig angefertigt und mich keiner fremden Hilfe bedient sowie keine anderen als die angegebenen Quellen und Hilfsmittel benutzt habe. Alle Stellen, die wörtlich oder sinngemäß veröffentlichten oder nicht veröffentlichten Schriften und anderen Quellen entnommen sind, habe ich als solche kenntlich gemacht. Diese Arbeit hat in gleicher oder ähnlicher Form noch keiner Prüfungsbehörde vorgelegen. - \\ - \\ - Dortmund, den \today - -\section*{Erklärung} - Mir ist bekannt, dass nach § 156 StGB bzw. § 163 StGB eine falsche Versicherung an Eides Statt bzw. eine fahrlässige falsche Versicherung an Eides Statt mit Freiheitsstrafe bis zu drei Jahren bzw. bis zu einem Jahr oder mit Geldstrafe bestraft werden kann. - \\ - \\ - Dortmund, den \today \ No newline at end of file diff --git a/Notes.txt b/Notes.txt index e13c5a9..a6562fb 100644 --- a/Notes.txt +++ b/Notes.txt @@ -1,6 +1,2 @@ -Bild vom Rover ersetzen (Farben der Teile sollen zu sehen sein) -Gleichungen Quellenangaben Video Ton weg und schneiden -Dateien wieder zusammenfassen für ref Bug -Anhang CD beschreiben und CD erstellen -Eigenständigkeitserklärung +cd bauen diff --git a/img/rover.jpg b/img/rover.jpg deleted file mode 100644 index 90f6d74fa6eff6d99050f566a2c5b29f306eb521..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 281802 zcmb4q_g7Qf6K^1NDS`_3x#=0IEh zu)bK3jEoG(XY&F5nFe`+6y)R;RJZCtbaizg+S;(~ zJB(oZW(L~Y#ygG8EG(@MR(eLeY<9tIcEGLR|1%<^sHmu-q_Ry#Wg8r(4TJxG%bx*| zrjneKVgXpj6eO!D1J;!J^B80R0?C3mS1SYhe*%`1k(E~fDJpGh{kDQ+Wx$&vEC0U% z4B95MIml^hnb^v2Lo1l#?P4Kj9+`!TAvI9@CiA$?ql4O>p+#dmkUF)0f41<7&stWp zL^%}GH*M+t&&#I#KR=uAO=EKMn<^8{|Et7G5vvYJ>}=6{Gs+INX^Lk0g7C#!6ka=&+T$XI#4$?&wW#eZkfcmKm%gy3 zaNmgsgRSM!G^6SN4V)spqpV{hN@*&0pi5IUDr_00$FhWmJS;QiM@Dbp?4!k)(o5&L zNiHEH@HrSV$%4)+C&aa;zJclqbO|zEW+)KRoE&)4_d8u)7z8low3}7&vJx7A0C5X( z&3K~k93FQ8gYP>*4n`T5zoN9^f>9sEzR=6Xc_mOO^kV@6UIynl)7W&Yrt@YLu$9G? zgMBCJ7Kx2kjJ)nf{Hi7)Es4^47K5*+SPe)yJ}4FlbAnKZ8Am+rY1`qq8}VI0crWmD z5P4ruQw^E$J4M{#GXBL4vBUrAsqt|)%7L}Gv&Xr*EJX|8KJHQ=G?&G|2vK^o^%ry* zY)En@Y1v(^A6{&6=~$Zdz9SD#H=gYxxxcX|E*|MaYB#s%vSv!odX!Z!VwK4RNR%S~ zD{FD=jkgf%z$z&doU|x^$nc?oRodat`JMnBp%1K6bOBwxru|5)v5MYoYZ6pne3_xk zg`?U6q6}dD6dG|k&{pEWQ(0Hj)Ip&#=MYM>0Oa*;gNXno8e0?WHBMQuK^USx0;T1u zq58x~1?q`iG@@TV`5&G{k;AE~Ye~2X)qgFOsUc_;06F@UV_*)-Q82Dg_C2JUVaPc!{ALE)DrrIIAoH6I-a3{)Tzs_ zP{|pV*6;et)n$gi6#B%a#Jsg==Mg6S?D%`(@D03Nv6Qp$18Y4^JO-Aw$|tGem@}i> z1CfO9O}D^AmATg)$v+T!8P*ZQP8)S6q6#rwXYtZ;@(*yRzIY6Y>1?^ zJ3^ZSfxgZHC7%bVj7L(wNwh1qlx8!q(N~e&Tk#EcSMT+o_K3p6V3tGSdvSq51VLV{Y$W zQ4ReZWrVs;Uc>}?FwNU~k`A~o1(?l~w0xUa`W#hXR&c^TSO@g~e9aG0vwh<7`f~hA zsLq7@))PD}D-+xAT;(=WTi47GWu`slZ;l=-uY_%Y`2&^yw;J+^$=o3aH4 z8mN6Q`(%8e@`M%7Jzsg0msEYNF&?m`U3~_B)Rve=Kq9_UR|vT@YD>^*@i9G`;i{u9 z6WJ&^XQw%|ns~{YXbd1;?TN?ODPZH)4%MH^#O3(QHXI_GZpL(Wc&Z^UQQJ}QeH$O_P) zCJEGrP64e2AVp`o6{lK07j_B5=2+)*-fWCTqp+y7Vo!=nR}60BinPz-JI#SqAdSlO zs`SXL@v~O_gt05{nG~zBq4EA)JbGA&rYy6BL8nDqXK=b>jf?J-*3pq!&Iulh>@tS3 zmXx<*;im1n^C}nM5>ITUM@r0bfu1eCC*hP>1SoLUTUCS<)fXVz{Y!uM2v1_Lv_wyw zF4fHV8|PnoGpq+igl629ujqzm?Z9V%rkdwQbGzXQ^RF96S5~lO3pxYG+pRpW0;BQ? zbB2_ot_EYrP}V{+%6M*6N2rNiHGboYuP%RwOb(LIyZ<mlS4p_?9<>)CPy|O&glBBKt@CljUtHi+-f10jP&vu!twoP|# zjDE2ao2&;O{Z*EYpj3=l+LSLat8Iq0dWmh zU#A#8ZGJQn8Pu!4e7a+UB4^&I=fXctk+Y&(p}@bczVBV?WcEsRvwYr;JFKG8QM znxmgr9Bm*%__7slLX8RDC1EO`rv*OrR(f+4{{+Q%ziBJPlm_&lrYH$<7MvPtryR9f znMQ*igT~xIVj_glE#xgE*|u^LX@~qlO1s;dez6c1Ce9WYvVSLY;`)HTyrQ$X#v|TH zNByx~h&eG)c|O!!1E~0^(j(kGmd_RHePd=&27{?E|ITYGeFtzX=@o>%fOxsWFYLXm zsQjn+4TeyNTdjUhC*G!WvAr@6`)?Ve`n)ZSv)Dwv#TfwFU!>6tBP18d8CO3K1 z)o1(BTsh>zK(Ls9vJ0TZ;%)*6Hsla+ewx`J3v~Kf9#N!RmQ%S)vm3pV(nvlVa|4wP z-%9N$ryl8+KVbF}(iWR6VbaU++6Y9uwS}vhE~jB|_CoYBK4Y6M=Mp5#Gq#BGn0AR5 zcb-}Vw*r=RxgQbCBEB587hev1jvB?)5uAlafy6op7)n`hyaBAk&CHGX(Z*roAaQOE zDpQp{hR-5|0>;%c;X}9ahKOX@gSDwc_?3WgZ;CQL<0AEWXSiPydys?blBFF_} zfmvUDFZ}(AKcHmck<}Z%$NZ&wh4j#WhOB`1?*g_4Q)A|wvSaMMR|(3m_CVsoK|pt61r zoM_7b+cLQJKpvSrOJzf1jEBCOW!p{WoIj zcTiwHX=&UcMAj?z%qlQaH`e{E7KRQT{QX4X>`(ER)UG4mj~`jv7yCOhnC4|SgMSZC z{7Mg+=|DL{A2>Gi=u)4CGgB#gefvb)J``bpBcg5dZ#6980#SSX`>X!zu0FGlyj|_r z$YM*cUlO8+5H`L8q+Op8x_iGpSt5^oAn8gtS3IAz$)vY**1)x~h@d z9bq^&cL)*N)OwQmI6DEvniM~Ll|IzGGoFi(R23l3Zj(@7?Vvmssh(gvEr$l6IZ*C3 zj{Sc&|`2bVuc8U9_~VnGjcQ2Gy6g%b$eeqr`MPiPeg~Jq=2Okzi=I4=7yM$Swu@RiQ*8-^<>K9dE6wii)j9hbx~VitTbCrMlHG_ zx(dh_wmt+#mOV4e6EDbBj8G_hBS6Y8sgxb&qP9WgBGGs(mu+T75mX?Gr!hDL$L5}- zUEOs;|I%K0G&;mUJi8pixIUn$DA;F&R0WnD>CG29?@#?btC&LGN-XtqSt0+F*fUWiBn%F6;e` zpgh{r!zF4pS39*32RSGo6d4IL&5hs63N%!cd7alfzFQfE^$hUuY|`c$uwrdVvNw%i z7eevKu&ENh&%jDVVUbuypy5KyMLr7H*}(m3717~Bcs%w@R7wMr6rr|d7!8)BoK=l|PU22s8o< z)z)1$k(%IjallPUD|)ltZ}$7r>pF%}viZiX_||6EjgS?Wu9;Ej&2en18K9|4yH0uP z$N^*A;k$sI%@Uf1j~*E0)XInVAQh(?xX1>5qN+$I4xToRrzZ6ymY=am@wN~_XOjk7 zk1oSku&?X0a}xNC(-PYRzLVraMXHc%>dr$2QCb60nR_`coNTejwaDerh{v0`vT+k( z0I`|Yb7`LUG zGC0W8*blK6Mp0>lNUi(gSKI>Y0ST>Fj|b;0aDkX=bxO8)G_g#ZCgVx43cLhykgf3e zLHUu-H;-$*w}{bzdIyX>6~z_r2N*Cjz_5|}@53I8R+jw(2qy3w{omoK7Fm@ZNwcwV zs|gq==vfXYw8ou>o#X(s@R1G{rhy<6y$j&_7S>^+nFTvUIc$48eCTGhJjkD)+hclm zK@TfOe0*Zr{cL$*P`m6$3Te#)>aEu@k2@|)O_Ql}zjiL|2GZkk{(nq=d8&(FR#Xr$UEJSFfg*}G9WGjHd&(DmC8C76ZA{au9vU&-z z$UsoRlFRjw69Jvnut!ae4)rHnWA2brEP|BW@i!QstcduW(?{r8o}b$R_` zJ8&Z{=jBca^521;I}9mIP7(*U7zJl@kYF5j|C+#z7@#}5w z51Z}kF!86icYRV|@Qb@SQv-@F0|ffnCL6h zRfh8d?>IZ#YQ}n-Vy9xJr$eBm-6&S$(WO72l$r;bp2>$oYn6Ye2DWX-cpqB6JMr|z zmEgl|YeT_H?zImU-Tuox^AjC;;GE^LW}dWEm}R}~x&yoB*dI z!%H3uhc?oqHYyum+nxRJwH(%g!i?yzgce61zFrwOuhO(1`VrO`3UPoQ@FF%=C#Si; z6)I9aJyO)ralugRX3dkLqq>zCm#BdOr>?`$F(NX z0ER&>9ee}n7*Ayx_I=|L{Z)Y#gY6}nr-<9_;OG0o%5h2ldLGJiuP6Plkc240K8@MoS=K=d z4moeVk$Aw@f`y693~`i}!QLZ}h2pq+RTOU>d}BjJ4a2eFjS~z z)+l9a#x&=03xZL(LzHg}^jSsfHB(+Qp#&;#i!Y{{7(ua4^cIRCtsBuY$ZUmRuwrl9{Lr(E74$T(?0)cWoBmu`gOx%+ls*5QM23^63q7#HsyN*lsE9qAs^-< z?mbZ9W7;I<8_2@T&gO1nn5f<@y=l~oo2YM;ST3pC@Xa3$W*tb?G*`P5e|$AymEqg-6F7%jARQhY&7Bg(j0RxRVVp zrbQa5a%1m|UlERK9hY1yMWb7^Yoc?UrwS@QCl@XY6T(pVijzpkBM^c%PeFha$*c%; zuq0t5@@}`9j=QBJLaAFNf?zFam1i{p`yrQWBDQnzH!g@A=-%s+dq^~z1C{P)6;;5{^v_) zfYY<{GJUpJBF1W{aSn>Yq(_Kb^V>h%j`3l~x6=JG)UA@znDAPIPJzsKb}36?Kea!@ ziKB&h_kk$>p-)pHXJTq%HhhmC-NaDwHk@r4!Bi&Z&zY{?6SNeFWthePot_JY)=T zw^Fk3SeydIeUR-+6yf8V({Y%s?}Tcd*o%iYOX}~F;?;TFo(`^+5JHpO@2sL)C>Af{ z2rGc`!9L$mY_pmUYR7RpLef`mFs{Plo)*LIaFfg=w*|yP6h?0Q!t)FVq>V2!0gJEr zHvvrAwL)}yf&?G>)?`Pu-dly#Yr*I#TAYstO=xzDuf2^IL|fPDX_V`w(9P zo8M7ouDui!v_tzsojE$g(q@?YogWEP`{Gl+lK+4N`O|a1xN}AmLw`W451*Y;+w3HM zf!>m*?#O+?`0BD&LUP*xX&;rkhW|)yq_*Xiby_gOzq43oNF7lywb6)5)8#HT*GNkD zaiQC1PVgMZ*sQeSvVxQnGw!ZvDW(mzr5_IslSvW=p%KXu9BXR96t8XHP-+UW~(Z+51& z&6M=SE(iNelHLlEj``;vPO8{J)RSD$pXY)X%~1Yz?YYxNK1{BPRO4aL0@2+7W|R;0 zcPS_CXVnKDnUJeVTU!a|wKET9mn%+==6s!Py4^i2XMc*k|K!4n_fH3Gtgo4w?eyKB z_gVKHg|-s?SJ1cG(3|g&im{EVzt|_RU5j3>OEqlz6xkK!%kjtW@cjdZ4<*aci%y7LLn((kYy|>=d@G6 zTfei16p|C9oL%PPSj*eE0%2tE>}}!Jz28w-XQZuRU{u8irpd+4mMR$Ngyz=&<;Bu- zQCZiZy4hq!A4W9!>KKnRwT)|n@4g2Pti1=NW0DjS;+W;SV5&Wan|8$Kg>cJU1?v(+ z^>(Jk+6`qjUE`$?i}7r6!XMC4&iHuW&|zDE>wLttV97xZ-)wQwe(nP*KTJ;_0CTr_ z>9y1dbRBYO{cDm8gg3%&BL+?o-R z_x%*s$k%+k%ahR9%*I$<4$=t9dL_Ml3AwHDRYP<1HUR7$ z)H^UYzSN(h*U|~FqsDxr2NIf4}O#rt>*G^GybtqCBl&^7mc{)w?Bb=UoP7wu6u3QbkSKyLRInX6p7F&4or?`O4 zK#(~?;?(&I#8*WIV6RUx_{^MldE4Sx6OD_6PfL9ecL%!3_m<}m@9$73tk*LKbkZyQ z+??p#+T>15h%;CF3D9px2|o%S4WD8OL;ii!ZrTH7L=1llL!ul`&o2yPcG@Iv-E4h>}_T?v9hMQ;V!RWkaZ$5paUOuQ5sUFZlE^>%Kgt#~*LqlUJS_Ki(Gyzj-VKG-My{d1w5I zIevOUFYr>KAm{D)%L6;VKKS>*A<+${L*n~&Ud3C~U)0}DztcPRmPxBG&AM#tZaMr> z&%g;hlw9@Z{KbaBAxF?pe5J&*Vxax>+cxjxAGo`_*wk<&?RQRlk(EqESjFt#jwgD* zaQlA=%9iU6I(U{1N&9Pl1%Azr%y1&1R!R-WA`C}{);@|d@l-Y&6>-T`T>AclFrM?; zDD~N@XftjO+;Rs?+NR@s^vT!zq8=_4oZ#8&&f(`Pd=F9$YL0|L;35T-lN|Lj85~RU zTr??_Ho$S>fNabu0~llY?lRh=hlNn0+gm|#k8qF#?Wjt)f@^507uJ-O4K+UXs?#c# ze=z9Hclyp$(ooP1*-I*)Qy(t{_^Zn+GuG!tV(%mCU|y^h+qLh`ZDmwjV{*lky6IrwrVwD^VVVqX(qNOP#YI^w1MStnga-j%Q$kmj@B7~ISH z)NN^jQAwV1;%>8@l=5kD_#LM4^+zu#3k8SmfrCBX(03UUCM*@VLS+QFSta%EI8M7- zihR79@w8Xc5=Qm%8v?rG*FrV0PyhB6;+!D8S1lJc>wJ5HOh9|=dj1WltW>VKQBt zGKC)1MropXL-{-^ePQapxoN2b+k*ZtJrqCtC=0!7k>=P#5Uieh#z&{IkoCFjE!f>T zia_jL3tk_wQQC*7ob^WTtWD;2TCfOrEG{%xBSP$XNZE1FEUnrVmQEkhYx28`wQ9;L z{gJ~{7#KqQqX95XR`94mZ=&b5g@Mh|U(KUiO>>9d3@)=Tw=r~Egl#}^VPE83->EKo z9rW}sTlSmo2EJ-Hns)r+>w6dQ*-@`chzCwnHsX!NqDY^iH5^Ua?g*7!X)1&mBILrC z15CFfo;Ir|Hw4bHKBid>frT0)PoUWkmlSIFxx2j~FV+-+yRnDLiT9k5QTeP3HGwwJ zDnTw2J~_*UPqlZ&9(6<5QU0c=h{8(Zsfb>M;&S46%RlVE)@jwTEu{w`4Rm9;nmH%-o;*(r?Lpd@9c3z?9G^Zp;Nt+t}uZu2tOp- zK%LxH?qAl&h-+P*L8-~kg4UGP`#dGDVmotz+zU;oLf>q~r=%em+_M7WZqqWJ-|b;QLZ)#c1~C&VS4qw2cbX-$?c1>f zA#*Xr%MDEQTVtTh_iKy)2Tr{(%2R#gJ<@)c9F>;^8Ax~6%19Lqwmg52n)}X##rI&v zs_tLlmKNNbnRR?yvbZnO*##FFT*|`t4>2{H(jEzIk_g{gN9WZkEnkka<8dz#R&nS$nz>7lv{s zD*BU)Y?5U<;O9+fdyPYTrIp+o{?4k+U(Z%@0e-bThXqC*y6V>mR6Q=w#J7bNXcs+E z1nPSf^~qE(C$33TC+Dl|m&}kCXWt=}3%<8XlJ5@c^F8|A>ii+YKRA7KNVVuu;8$O# z7pp$c6h@jSlzU&KO!^$!7;mMQ3jJ21aqz;^)_Y&IU=HdNvEm)w9Jm` z6tfx+&^t=MzLf6zklP$j?RKLC*^+i39;taA#cb~g48aW3l=njwGcjK8QHLjKkwHTo zT5*sZbbAM^2vSXNtwhhZl)@9yjkpQQoSG2Z)wf%h+8qcJKiY=AxP&#p9XQUqXd%l& zPqhz-&*XJp(uJ+t*>9$(Xnj(7fGyYP^w3odQP%($YleJU9fa5|WA{@9^THQQo%(2| zCfvDxp{_X4U-y$5{NJ#T)`^jJK|_~M9%TTXwpSSjD_(xKo?JP?zXDR)mSAf2y+lBV z^sp>mH@cKT(fghDaw)eD`57Nyo2^T8XQeI9& z$MN`qUz|tObBUoA&dwVjUYeVqoB3b_6-@VB*Mp_lTN`}%*8YB?zGF>^I(1CxU*z_K zu4L;4_2T2>yZ@;*-=&^2w02R=qW0^}z=T_|+3)f&7TNp+-NUaGjRc`IpDIyVoTshi z_MW@0yfd&!*@z^t&#!;?WAZG+e%G(om=-TZpIIYkrDPe@?YpP-{#!2W4~W_k{|6Kjw0EcT{#I#!&f^5jg>Ss3Gojfx{qD$p zd>(jeS#PpJ=1S!ZsU)mYW(8O#eQR^tyKlN6vvWpzHM$PsP54q?rNpkyidx$JbKM&LrmJSf1HeL;^WlJ{t{xDRT<7rOjAYDYEIPQd*fpP9`it=-FCZRWV6~#O`no> z;*i58bL^tBdR<2=AHg%MwIy0A=B;#The}#HC=XfTzLVlo4TaK2`5ZDu)QT4wLDTqMm@^7dI`lFB9{Y+xQ{t=XTPq}NnpUZqIs zC`)$MpNK#ohSO0)O7vlmSuG>ysT(S1GV#-cllWQ-S3;EPt|&O<;loVf$=m4J^96?y zC6zora(NEtSN.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

<#dRmB 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 z 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 z zis&XtP%KfZqAK8pIR=;LmT7K{Ge_K!ywxUS6pZXL59zGytc7nDH334P&z#mB^UVam zSt*UNT37013i?PCjLg#PBl<_5G?cNM(&M(foZ}B%YOiEwG|e!M-&pr-}mPNvfkIc@-&h(PZ-E$8O;{@)U~#&PjjmS znj~`{!w}C2kdJoM1GRH4uX^TZbwiCLb6Qh%-p#0Fw*VcLS9;FAIxQjXn9OH7f{IEx zhvB4lnMQ$?1o@!cwCis;F{Qh4mu3V3_NJB?(PcJ>ta zPY9NZvnO*`H5!I3rEby&w;D0CABsK86^9_OQ}8ocH@$io0ftCrP`eL`RXs$Gy{O(G zdD6TM%kPjxAKn?eNoPNh6m z#C1{KKq7wHcJa8+&1Ow;m?d}-7DMMWuS9!`j-1VS2XOpRt|8F^g&1NE-!)jQXf7wX zS$_}`S60#hG*w)|+v+nkX`HGNiljD@#cL&9*zEg@FL5Bo+p5*Zb)>fzYyzy2HQ%0Ie!KcSpMbvsRQ9JLvFISKGW!oC8 z4!F-FnpO##C;X-;e60~etR>IV!)-@mD@w}g8a9ge-Uz^RRZELI;^-_;EDoV^!XyoL{>=1*k+c@mgfv|504e- z!`?IYp+*-`z|ttuM)wJ(1T59kbT3SqLcRGYzCU`!tz(jg8E2TJF|!|>R`su>x`g^m zXp9vtyJEY}nbECdEU*RD@@c7hbcQxlGZ#M9!Q!N+m(4FaEH-h!cIz^z&XJ5(Nm34x z$mX^^Mbj=iZSxy|?ik=^v6RgzCMeE)*2~T=SZ4t5UqIcnf*pysgI3#TBDnsu)^GZrd-4?4azLaJcJ^Y5>+MtKi#o>7 zqB@Z2U1~OB0!i&`oB{W*u3NGhT1Y{XJZDqvH?M*=`tlB-HpO?Ij`fdYvuo6S%0X38 zT)XAh`S#2vX5xQ;Vw7BV%Caac68-6q=N zP+J;6*ih!_FqBA#xj3T4Qb-sH4|HvSX?W$DIE!SGDXdxr*QM=WNLd&J*sT$|8bJs) z0R*Gu(~xx)%6IS!b47~fB)kZNNIq*&(Tfpkit(r;`+U;ZHpy@UmMgc@^G3M2F$^LG zA9@R385igQhZw1iX^U{s+T;c(JYt7&da=n9EN8S%7~_h|7gt{J4222YX1#xM@d$#e z5JusuCFsTf0H|Tkxx<*n>iap_DlZ@8}R0`&{&1?8=yhs%IVW9?SzU1A#v3{CD}FjwM` zJxVEhgbQ>)nMO1GQDttGadRYh3=PTTpEXA>*JiisEWC^y=DC@z86`LYhuqg;*LqBr znRr)H9x+_Z@_VpBQ$>VZ+SvMkYVh{(XpW^{BxD+?(fVkrxnmMne(^qUZ_<%~u)miW(LUKGX@at$~`+SdKBx2;1s8 zG;0bk0U%w3w#Y6Z=r2OfV!<4j2)Ev8I@XJ8mjZ98?ij2LRJY zgX#KBU%cZ7oOq!r_LHQOPgwNpyV(?5LfAZFPujln8aR4)VG}Ho zfHCH{KSlaQ`hD2EpX>OqqeU27Nr(WQ+a{{Ho}1KRx@n>j1i8)#t)x0)k0&Gw$hS*a z=Q6~jzQ+xU*8pcuc=J^UBl6Dt0M$S$zt(F=0!YAnsk!7;Tx!K*&vF$U5-I?~?%Ilw zu1>~~={D0^UR>PVO41f53V5q5qej`uG{v-l=eTo05Zps!)MH3x%g(PM5*1V=V0o{nbP@jm+zVABNbTqT zE9Ez`p}o1%!)KsS#Ul*7ulrS_fk?|P{{S@)cq48yC{kS)KHY_Au)&A{fs9odAq$2B zIi*@>-h>bWH3ZYr!m0FzZ_arCKXJPIs!-50G&-4jfh1y}*UiUI3n zOQb$aHZh(kK9lGdw>EQ6aIAwjE*Zd{{Yr6AY`^&XU#Di{YKu}FMPA*N9i?_(XK7J$EhuPb08M)oRPl* zxht!?o4K=dD*$|Ex-aQ`Xnkj50La7d{7`*b-_u<=5rG){{TsBUoUTUA~(hbbN8Rp?xh>@B+t9z9K;@l7$ymKfQAKfOwFNh3dFTUQ+}5^{(| z27Z#dK~h5>6w?{HhB9gcgTbd;rOd0h6uVhmu1JRqcrFN)5paz(X|FHqOz`BEZ9-(z}~icNMRPRJ+vAZSBBr-D+78sOBrPy)%OP;2jy%)WeM|7l#v}#UV|vLFnBn(HVDS$Qlei>6-kB|Du&`4ps= zAAP9+P#goKr#Y`Pjs3y1zG%8CT}&B?ko&*ls!WD3B#^rO>2kmtt3Iu@Qxisw zlw@fiy;0dg_KeV8T_Xylnj%Ll?hw-r)y#(+b;Jeu(}Q74gJA8o3kx5YKnty<-q zCjx*7Tad=1U`gEPlT1qs+espUl^hxj50zzMxv8qHyBOsUpKtd3)}Kv=+V`jwx^o10 zmD9IRT%d269G{XySAE>pg15nqc82PBXfvql@3BXwg6c}cj+I5jX+)=4d z&06{9yJ2;5b0?b83L$azAqse6HZ(Gt@-(r>Iz~lkbq=g9dS$h$#uTqC2K9b}c@2zL zg5d+JsR&5(L72V9VG=ule?a2AEt&2`umnzimGMQiyAX8s+7sE0GoF0VKMfyoL<{+A z$UZ6fR?-DhbDR)=da%OdrCU!K*2h2H=k}`q0PxkV%KHmO%j9{j11x=C(F|m<&AXc2Sb-`#1_GU#p9IuMaHOv`WIKhF=vB<5?o9ZTt z+$6-uzU&6|hdYTUW$d(1=WI|_OBN+{g*YOjYrBK0+svw7a!zsyr{nF*8#}aRPwLL~ z^MM?LWevXoc%!7(T`&*DG>nb(jMElZdu}1Y?ULB}sYXY*X%ZY1AFE(%iye0A93sSZ zH_~xh-8-)=z(;i=q54}NH8FM4o3MzwXuflduV1O&or<9 z01-O3vOTGbuEAnmdW#Uv_NA|7kg~;W`rLWX70f@VX1E0uX(!LcYIM7(E&(>O{%9Wj znufGso?Pg=g=d>PF+WXfiBLlAERr!Q08+kd9>vS*D#IZ1erf2Bc_a?tWMF-d%^HG9 zEGa65Vu*Zv)$eg6%N!Cq$ERikVrh4QKNha%S}*ApTX~_l>K6&#?MDzgQ#{d3ODsY- zppoNdQ;@3JIi%oOZYH=(nR^i-9lw)D{0t^v#rB#kezWGQdWL1U_7~1cVNs|)QaH*h z6Q5~e=kG+dZ_9Y0k&uzjC=ihs13vBzJq)(moXRk9;uDt8Bey#{%e)vh%$Eu3KdX0&a=?W0MCEH_;7UNBq9D3VWZ zy_%0{3Ty60**^#3t1#qm4{Ri1As}ZU?oAaXSJ)Ae&1cyQWVvOLBVfzUO>5z!Lck1ToN-9l$N(c)8n~yK8Ypy^)Hx!xW1Q$XCXt+l za-V$dSC-|`NRaE_>ZETIw4ubfAKRKs@p%|6h2s^@x=xPEaF<1qNqi4z8(`2RyNM8} z1UDbCq}K8~W-=n_(YYpsZ|#~9-2fIO>iMKC3i>c?u;!a#YA|m z&ZRYoq)JqS$;qyfj)FkO-Ia+rJ67*c=l-l1yM7>!|#w?IUnO zhxCeSNX@&lwoo9Af`u8#6gcdX;&Uf)v?v2(n%j(9UXlz2cKWeTTl9N-XrxF^g=`X2 zdYa#sKTothI!9|@(ur6vxxRmTEzO_dR^nX+TNwEnt@t{6!wZt#-Np-YD3;~B6GB3{ z`n}aOoVmW246<9uvjMQqar0U4(qfiO!EWuK=LPYTT~+*|E4@n_DJloBXT>V8Owly3 zyKDZ|7^bh6Jv0|K@Zs){jiKv%QZ{kF?%Ln%uXHHK2Qlm%0w%d8vMx4Dku! zJ+~jERMqmO$43%ctcf5}9C+rBZ_=%lYmf$UzWip79k?kPI~`o&g>cS^AXPXUQ(E%R zzJNp}cyy^8wl=Itx{Rcik-feM+PZmQW`L`Ldw_d>DL3elqQlkl~fL6b{se0xlvlF=NBv3ez8jkqn?LZL56pYUM3%1Z!$!h-y07#xq)Gu@Yw& z0i}Tz)L~AMO+r*fD$b=tom%teox8S(Tt%A)2bv4R6UL0)qp6!GCp2h6 zv{D$M(BtpsuWQs}kz_I>4%qmii-eVzNhz%HQmjpcsk(-WaXeP}jMeTe8DLj~4<2*- zQnuzrkTh&Vj(k<&npjRFlh}Do(~PlS$D-7B=N$d(v~#9b?%w(_71D)}Y#x>B7P4At z8at659C)OJZn79I1_=FCp=o<8YG9b_hrl&Z7^iqbm|NTD?@Y8d*XkJi$S_&iNi$F9Phx*b>+*nN<-XAz-cUU z55S?|54~#j!)zpr@PslErHJuaOahVy;A|^#%t+|@#xdfTjM2vRQiU!_B=c2AXe3!8 z##HBh=*|EHnpuvABaGH6^YQfGMf#B6wl3H6K>D%&02SH@V4RttWdw{BK5OCK6RgkD z+!RnrY;RvgvbejR-7cFdN4rR_SBImX?mB6nc_m2WV2Cr3R7+P$wZz0Mn`E|Y6m*=q+vGwz*)Ffc&{TgIB+02n=j6PX7RU#|lgiP~a6A zCu5&ADG8axcLj!pEwJXZ(|RnK)_TEi*PYX%NayA_8& zTfdrf+LIaEIjv4vy*`6wdlj@1&wFsLNy{MGxi3&(*-6wITR7Mfd^KQAGcvl!=eP|G zBr&q>ljPT4dB-c(x+`B-O=eM$VTRc|?O#gt=Ucbyy)Xq)+#b{SuZf8Rmn@>Uy%E&j z$E-&laF4z#t~uJ<^<9_Y`j2@R45ymIn5F9n0EsmZa5eM~SwO92-pAG}=N&o!01tK} zeZw~tM_mMy+eHwU7ZGXQF}*L;dM$@kT~?{so17D!>hVk=yE+^6@M+M|xXTSLe^nMZ zuA$Jc`hWY8cN64%R%^o<{^IWBlxQS0HJgU&QzHX+)xO0(N(MjEno5psd`kDLJ!CaPM%_$QO(yEOkB8@`> zj8$1hPoLVPio%HuW_JjmRc%Mp!MA0Za@g9j?Bx*Li3bGNSdZO_Wbr}B%@KxHR^!D8 z3?1uhuG-`Y7O~XigN%+SuDj5kD%Yr_---d#*I(>s zXWtd|sK>y?SRb_`m!jUYHL+y&=i8cACj)9d%xfi!D-tuD5maJWSbiM5>fzmw&1kk! zBsxgb8DYPg=lV62_Or-kk=YAuE26r{Nw9f{?NuuQB%1y}i6)Xy#d&%;4&C{+QMxQ@ zCQ{tyo=}~~&P_p_w(!P*K+g1y{EKd`=sl^q6}Dq80FE<~a1JX4f?RbetV@1t3~8Wt z*7Nb5Em(~seAfl)A5yKqQdm@FP*-2oWnQ1sr6XY&Ad2|a+~(?eCVm?r8V|Ab4vzg+ z$~&~$C*S$4_l;I#C0xOs+go_^HK-FC*_GE0UuWWx0ONaGqK83)aL z^ZM4yo|PJ^fL!Xp$BOBu^-8uoF=cbkE9d_J)hqYCxU(c_3BUYNsN@IKJ}`6t0JSsH zEgJ6n7y!v;8oz2(oCY3p4R)W?ix0$g2fHIGf`jTSXV~cKydp#ZAH{xsl@xUglad25 z&P{%fnU%V9s7_p_!oNFStdZVME+f*qjt}!eL?L{Cn(S`!tX?jdEZ#7Dl{`|8MS5h| z3`hc*UY8Q6GfU6KeJiH_08Z~_0d5?x%@eKkE`jMg6E*yzdC$`qIjqF5oy85Uq-CVv z;F>p8>5TT@>Nc{efT$Wk;8wXD#><&nS|J}Xipmp4eG z3%Me*@XT_@db&rWPwHd2`%w-nNUH2Ag@Z0WpS@U`4D#r4?9^Xud{nCye3wY$QtnOw z9&71dhxA~|-}RA|kNuc6=ih61uIXij#nI%{aBk=;g?W15<{!&M5nY~%j` zHGBfQ05MHXXDnF47bl8ZM3GPDsgL)qYZfTXSzB%f)!ctbkq@gQW*JD(k^U=))i23^=Hmgj_Ka3EPA1rbst&B;qGE#>Vsdt%W>qhVE*+#JjG7d3uDzx#tM}TUPtAT;X z-liv&l;l*0VZfqSyJ&NeHB#c%-a>y79^Y-K&xYMj^#nGZQVpr0C+QaQzvN^OjL@H= zfDgYP&1rW~03sMC%~>K>Qd#n9>SGQ1Q-#W%M>MpZKH(2Ld}6wYNsJsJ$Id8ddy*WA zX_3ddWMUZz#TFS?7$Uk!p+|DB7d~-FUG#s|7RH**gi+Q&km<%vb#uhFoh4R1n2P0= z%Hla!BRWoVT_d|s)5iH_6{%UV%t^bF{N|Xoi#xyZMX>3&J!}Y41rw7s{Kml>4apE4+4uEe_F6TDTv&mJ5_pnT*L&iX~XT7-xSwY>M4I_ zdy9q@m1`Z;(1?j;L-dhTRsneCJC_FpwRPfEgQZ6q3Ro8XskMxu z$8AUy67#7$0^Tb6!Y=G`d8xImF%u~y1qys`RS`)Vmv;n{#VpV+(su}N6j>uK!xCk{ z&ND&J^`C9S4J2n6q*U!%-E4=5GwmST6^p919QsRS@l{|d=Ydop=C;bZN{vIB-08{N zgg$YeX$wnXJcCnd$BNbLv}ILBrTbQBBSM!dQaH)e$W z2bxau?E_^9DtV(!RaO#eVZ9a=$tuU%X}RuTCVB;C>vd6ZKPY&2nPN0awVyJo-Bb11y+35l~^*2_?WSz^v70 zM5^rW=LzDyZ*CFU;S6)~b4*EUts2K6(}R*}=mZhQBZ-4GH5rIXHtUj3FLUKo%-cMt)#TEcN?afl; z%>fS-TD5X9#aT}**lkrA8QgAo#{!%YzJ@3P1BxoyK{(Z~5)r7c#T00OtS=xMt2X^^ za!{tH8C)plgLM{V4+`Z6BAn3C$bI_aJW+J%IbUiYCa#`YKZJhK)Ip5y1~{s`Is&|4 z?Xj&$;u5F>+KD?++rBZ9A^Yo?mrJa4rGBB{^}+;JBf{q%)yoZ zJ+$KWOKXJ@+{Ue|?OK=JCf-O?+qyG1-nr@eOu*@oX)D83F|ZS*i(>?l=`X`)IHZ60 zbEn9fp^%1CoaFOaQQRyyLOaiLk2Rw$#A-pekZ3+LL>vDAg(ncSu+B7|a=D}pgx0}K ztOR~rPIFq;eQH>MLc>AZb6a+jz~@YXBzO7Zis533T6bp3LO3|)g5&VlO(ndiZvbMu zd+v%zk?jx=23bCTYUS@NnmMG>p&$EA2A4P~7WQkQ@=Ud7_mNO$ks5$;#(7muq&;F&G&0n%PFsUG9$sp879MJD4{58B<6^RGpvX~jMi7%dQ z2fTPW+x$^=DvYv$AU@&;if{y;T`J!786t-@sF3Q3@cdB1jHxIjzCrPfQ*fzhjBGuJ z<6~K7+VL(+OEY$t;-42#%L@x>9LxuiwNWzLPaG1*Zs87}%hkRqOTL^LW0K}#Wxxck z)C-=YENcR}_i776miU3A>U`wphP-4@kP_NiPB!zsGCJHc-}YZCplJuerPrd(Et)o> z9d^O3DEd{rcAxb~JGyk_eAcTImTcE|dY&b>SyhhDrzVlUF2yxM=ogmz*H9x^dwK{8 z1~Nu!8pUN|RzV;;>C;%P;~%8kEa*!OYIzU6JA2WsZY_$bKu*{mDfv)G2Ws2^-f>IE z0PIPJJ;mmPa&!7#7$pEVJmQQxJ-S7qRYv^ddfIp<)UC}@YiCE+{{X%PHE@g;@W!Ir zH6*vqZ&`Hcpn+qWGWvhTd#1^6cEJh-apcyttjeM^DoWDUrzPTw85E*M$@^20L8DU4 zxLkOoM3(|hC{!Qft#^8m6ipq+JmKnVR$`Y@mQfr*lq&*SqS9E};OUtQaC26;xQrFYR>40?E;rmxiqEyx%@hh0Ppe+X9tu2bGYnvjjVmm7z35c9R6FH%%_{`fokm!mNQqQ@ zgP%3AaLBlhQWH+#=fxILBaPs=7ZNsL)0WSQB6V8{Lo{>5!#FEh7bo!tFf%w~fHSr$ z(e#9O5X?f7Glkl-Tb(v;2XzuiSb?36cdXl}Cz9da%LNU{rYvp$01Xo4ksfdXIiobP ziKGkxh_wwQrs&8VpeVZxjzt#YIO9`1u%<}k6zE}%S@sVUt=;TWsY1JOKYG+=#vD=G zN~|AFpmWC*IsX6(%tfWb$m&1aCp*=VX12W2VGJ01uxmc&r&!A|p59l2ZAT{r;T*#iW)gd}7gCmXe17_MSTX1kC&vBCm4s@y&k4}w>Q{@M#A zjM`;pc8(W6sP1c1r`sebx`A>x1-CVmZ*g=$Ny^Cx;N%Qbkluc9%W6HpwQmK1uJZ-xP zHH-#76}3IYYDiP6Un9jOBrsja9O58^HV!{}(>4*kxhWx18ZhJ9S89vA zVyrk?fAJCZ7<+Oqi;?H%w&sMng6#xy3`jX+RG!9E8rR(z@+m8nmLF>-2-{Gr*x%1@ z?PIMEilXTuM-L0Oeltaq>E>W00T1_itGipvsgP-t$fTqo^OgyiYcIr*nLO}BZ9fOUB_k=AtHscImO-r01B{wmjOw^A38K|xDfTg7Y@0(+a2 zR+iu^6+!gYaj8Uuw-5Us&)aHl->BS2GV77qco{raGf5*pzzT-EHs{@gov}+Boiyh+ zJx{2Mc-u@Z&2$m^UdGxrTZiss>cQL!x?ZT|2k}=QiUn^WHtEvS#I|0pi-_$FH5L={V0MDq5_{DH+-VgCzIdbW#Wz(RW zr(9i0E{PNpv4eni_^fTpf_bBcWdJiDcY#pj71A)Ge)P(5OMyg57Z|DtSYXo3nIxUh ziY}!jvO7bk0d|aJ!6Gf9amP4b`c(b0WAA*IXDP`ZYS&2{Dh~F7Kkcm8vb{CTaljCc+bHAa zjc&nBfwfW7 zMk~p`n(ZTvqLZkScP6BqjOU6Q91cYRq$fDdYF04H${Qd7N9l7E>bB<_h7^oYyMoJ~ z@l5n@cU40!+6H&6X^*Y-%Yi3Pi&@I(8z0)fZX+$#;~Izn^YdF>Q?ErVLLB`g6`9gP z+;u>}o*1eldun)v3#yK>XSxigch-|dSPwR2qAco~Y+ZmwM zw3LDQOfm6V*2=Cj$fx%ek~(U#2`!}?@Byh-ytZvD4OMh0Zv$>%kN*J0s~9bY#@;Xg z02Z;+smz#GM#1}2kaZMc?o<9KhK;468^(k76gITAKuRL#_Nq1PM}a~YiVktL5m^aU zV1oj=k5P321TB+;ir>AxB?ygA2Rm2KeO&C;W!UeYDkGboLoLHdNjW}fiMYis!~iky zDiTt)8jTeg0qDcUE`lz zE=GJ-1=Xpym4V1#737)B%K77(+PV?-D=fx8F?Tdjy%M5NR9UFmivUl}eWpl^e%kn- zqQfVu?D3FQ#?|+Q#IfY_Rt({iKm&Sl-ICcuu0T1UMuo00v~H{Th%F05pq1XJ!|9JS z&nwOyFvCDRb6ZS>-d^CtosDL6tLb`=PCto=BddT2A9~r-s(BRh4>U?j-pyfR)G1a7 z!2ynW&TB$t(zvXNa${h?XMN~6e^GkY>dx{@TS)$paKeH8J2%&zM)Rm$jFcL~9&?^6 zoArLQ>hgrfcg=TxlC^G^(4i7GUSE5D#86`Y08pyl0k+PY86#2g<*$sF<)KuZIH3($$$ee+>bT#-j8h8eOlQL_&e9yZDQ<4 z99{sRZYLz<_}Z%8m+Adz5hO^Y`2vWs?Ub&E)1VCMUBw3gztV^n`MXyv5FRtNbzM8q zeIm{@?<&b4`QJ6tMiK5@u^|1avI3@6atE3zD?XcHXrV2wV;_AYoIugG5EW0gLIRJ6 zYyIrXdI+T<3a!l-Y2f+JQG_#YGN7M(JM62B0YuSCjwJM8`aOC-`C=* z)&7#U^pB*vbbQ{*?pdpcGKO8atksVQ5?nS0rQ*Ey@AWay*wiEQjj9VVJGRvtRH+OY zoDMNW5Cm}Ai3WyL>fG&DFMl~8@V{LnuYz*W!`d{E@~5$ym9S!UlLRf|4zos9zmWg|)4 z{pzh7Gln2(#VY%-)11-KCT3NT;1NOX15qeOX^Tc~;SwC?gkf08(%aP9GQ%r79I^35 z7H4Q>(Fi0TnhRV@gQ_qw@F?GoQzn@d0(c^V@GOi<%zwoaf|G`Ca*;=81Ogi%_^E3( z)3lrZ)l`G<<5L`p3;rJ~?K_$rmdzUHS^a^cK>CRRhFgv3MJ5w+2>76+EheLvlK^J~ z(-9VS)D(kEpeu%T01B*^iX_Zwu=`X1eQ4QW#G0cAZSeU0>eAdj!;|#mfr=4nK9K(a z@kPN^)Tt6>LD(835H+-Iujy_omWqnlx;mGYKY9;W>IEYxNXO~LYBOPf$4}ClX)L7B z>`qE-X%E9saIbjG3%2B*O)9MhS911DMZ%0Q!uHI zb~RAMMn}e^UA{$nFx}T?03VT3vS(m$D!sjl4?&aHbYu_JSvVD?*Y0aP9V6>M{IQ-Ic@@l#y zBl57{YO{7_+k;j}o)MUvHE=JbhI@(yLV=x*)NhMajm2g`;X0%JR!?+XOoNZaLsX$M~496lFwf>{Nn)7r(2X!UOjfg)r zt8Sg>4{fwC=OUsNC`@2voy!x9*E-y!ptZh%IbA1>sn+TtA4&@07lsn?0yYJ!zQ1ol6(`jWLw@` z7%?V&<2eGR8>uHkjy5n#cWyKG=zpy0Q=K6@}o`dEC@e(F=Lp%^yT%N z4)cN!fmF9WM&3n>wC*GN3i+<~Wmk{$0dbEtg?!=_DzbLl^ks8IFF#%C0@1WaW0?oI zd90gGry-G~o-X5_OAMNsE*WGx-(08bIKag*VI)zKvMS}iYQ(FKq0_FECBZSacE;P# z?|M|GKJ}R_yyVld!_wTCrd1M;ese}WRvy{6i)0&B8CDmv+Y=n;MvqEFHDjFA zLlwDl2rDnnYc0yuh_jF+3JiN>QA&nCnT-{VCD-8ODJ$oFx1z69h_0CrwER|azfCD@ zkwznD41Zdk>nEv?!9+x}%A>(n!8DYeURYSfkC=~=D<0+No!pswnfd|wrW)IRsXAMM z5Y~ip+ml%_bvcVXVLNJhW!TgUzr%>qZ}&04+*MxcFva9wY51#*>(_HixOmG-Lg#(( zXqMMu-3`VO$lTE0_7Gy}X5($Ml|RnGs4>L8uyjIsX6-jUNR3)?p;vW9kQ=wNz=UM$wE7 zsCN;gpbEGH{{S=+<`)1kAo!z~EV@X*=9Q`O&GiW6hE|d`!wxGl&#k;J?{LrfhCXYg zxiGW2f79Z)ez55Gz1Xk-{U)MX>Z9tB%`{CL#i;#yn-%L==Z^AeJ8?3;54E#gmqnbd z>)=4z{#Q7yxVp5a^s1nY0e~^h8P?RDQZpxpw z#~IOwL6trUs@z9@v8i(u$@Ma#@M^PZ*}8;xF_(nMbHb6g-k1DQNX@*g{kPx&`aIG$ z7HrP?Vu?$cUPHji@kTXpe+a0S%O_~IK`XW?uA)}wPO!Xu??P3U;@1(} zNA2NAIi)`bJj$9xhCp{Y*iork77nQaNY0jwV^Q&5hUl5sTj7D{=7AqixwMv9C1ETq zbM2?>?cpyUc({#iAoa;N0uP7eaL7{aqU-Z<17vY$@XBGG3}P6$=p z=7haYF8H(^v_<_yb62{&x<|xN8KXNL1I19Bv0F~TZB7ep)#S61Il@HavYX>O=gl&< zMkVj8OrC0Df&(yRx(hMfsV5Z{AHH^6u6Gz;EfFBgB))R%)fXKcvRJUhRRhWV~N}`hG4&0iyqo>?)Q7oazAYp2)A96(u z+EmmXA3*7G&(kHiylf5h=8w~%Hu19Ken;&>kE%s=VwMpmhL7XTXheI-ujyq{F-C)u zWzN;pf<1KW}fDJEh z#@iCj8RKAUrt~LVwCUYOYx~3ih4wGrvtq&I{-1TrewuD0aAoC?9qKwI{r><-mEh`@ z(yV#eikebyTJ@vWZZ55^34xB$5^;*&{{ZlV1>Kp8tMue|3#1iMQybSM>YK#A>Rs5q z@oC5HSj2hF5?5I+=9(YNiJXxc_^ON%kTF`3n^mYJ)ShYy!kW`5jgI)IEo|-NG0AZ` zQh5{$0jpMiDw2P+x`1Z*6=2MqR)IUx9~i8@qtxWPI0_<*;8t_&+zcP{Rthnb zllGvIqe&=BY4>mQS{)MIZn~|!I?QPJX2;DU0U&)kLHb8EXe5;{5usrl=gnrUeWp2M zwu&IK7ho{i{{V^$y0pe-aH;0F=IS>SMVFCPlnep-s1n{!BwAU>9~GM0u(|4;G!jw$ z<87-xUZDhs+~-YmQKA!&Kp%ga9E{5N)Vgab>S61aw(-dqxa#2IvMzdzuc=m25csU3 z=Q{;q<7$u_I=!d<+L#_ou%iTXLRL((0fKm?nTbvL_@V1;RFD&>S*(hs7-~Gy?a~Ue z0OTWbMIINyI*;*3Tc<&d8i(Gs1fGj)8YvI2Jm!t~OIV{_5wGz}wc=^gNZ;ax_^ksG z+JScoW*MB9guE z#Ci8?BOxQ0Mrmp~hgn(6vqsA2(!QujCa4eOWuD?Hxt(W>)Cju7%XC=D6; z=M`m3A4jt49WvrIDI_I+OKvMbMbji)tkDvDX1-x-(mH;yR_a)%AERE>@BaV}+!>Ya zuN;nW9<>>+_FGPzqa~vm^O{Z1O+r9qIQ!Q+dUU7&p5cfb`?##`t#M^z6D)I?CL`$w zdZ<5M^=*xzXkb9jJ}c(EXQ;nYxYTwTsg?<^uAWF>es|3$Ev>>x!Q)|%6$M-O%>~VS zxH0kKy@E!3RUX%XDA3#$p=sC}_Z})?trWReZRwzLy!&emf?FeMD$62}Gm%VRO?3o} z4k_-FcGi~*{ikDC@m>RkZKW-8SY(z z;}{2O8qTy^bc_C)KtXN5{prA?@l#`r)@MZ)4u$Nb)^%<(#`UnHH**|$s}g~8vYNtk zhzTp?*8S+h6IgR)ZJZJc_%s|3T=dM>-BB*1Z^|w1{i~;#i*B6S21HSX6vTNJWO17G z392HJE>!uT_{U8zcj^!%QnE7~6Y-k*92SddG>SL&6HMH6OGUl!q+uC18*@PGcOuuN zTuwHSsSBSp7yg{uwEm#Dk(Vi)f6Z+F08{!bmpw+n#Dpp^CvUi|ujofXo^G1`Lh%ZR zIU2mzU;Rh24AGdB4I`Q|`5&uPf1%E}!2pl=uaiVZkNqUq*1c}=N71x*7r4hHSIPu= zIumwdu%l7ie@*&$mT7LJ8xAYz>Od>-)rsjVA!*WJ8gN)|TbUUO20-&sN7I)Wu8*Y+ zC^J}A>PxQGziJAm!z5OtCZGfH5*W_@X|Cd`?lL^m77eB4kSX^4fA-e_{Y3ttMP!m# zbhlY1kYKX@nyalJ>JP4MdR431*tnAAhB6P+UkSLnx|aCf&oOI^>J6XxuUtxGxOwN0 zvp(l0k)6XSLe0+&QYbD700%r* znXqywc`cI1_Nt8e6b4sUZBP4A3q&^*rU@7Vtg(1kHHAQtOM1#cypLogIrLgDV3d>6q8!yvdR*h7RHC*6wFPLBWwnTnglTx0S~%HJ1Fx+zyAR4WMVS9XJN7)X^E=eT`jT_ z2R!TxP7bIM1Xs+2O_g;SYenb1UEG@J4ObBl4v?q zf$%Em<5o!EVz8pcCZX=;ps6I4{%9nE-xYDF{U-o(Mx)H?HY>dhkT)w=W0C&=y$e=+ ziY=i_CZT|}QSDLV?L>cW^rWm=$qoEbnm2P!_@cz7QK{VGgr!1n&0I)FwOMdzi;@OJ zY)&c+#IBa8)%bjFr&iol;aC%#ABsSaSzL(7;QRSMPg z=Bzv0Uf|w?NCe?G8_p|6~~&t;q6`ZET%R-7K)cP(+v`#Qhq8=Oi2c8 z9w-t`EJI8C*XEFWLW8Lv2jZhc5=^6S6=>Eu(2=v$Ynl=gL@cL|wHHN( zbb*It5Y@lZeM56@Ldw`$=A>jE;4o+sPFRedDrTDd2TAL8_i6c(fc`h4&eGgGfd{uv zH4ioMwYrsDG;UWPdgyvbt8T2BM9tk!G4Ly&Tsm`KN=~0E*utwW;j_&&(JWHxl;q;E z`ah{`x{?K17CAq(*4!)J{Kitt^IWeO>AC_*3$%k9k$^sEYVQoCJ7C5~6wZi$6cAlD@4vfZT9Rracq**(PN9gfDvskAxI3CqF z1lFWt)=jOfksyjTXL$y4YhiyS;(|of0N$95saQ)gjU5upn_ zOvV_|Vj!r=-+DmF4Zm_Q+9W4dMFkmT0i~JIm=@ET1jZ>$TOCEP%xg9`4{BJSQv1Oh z(-y+r;yF+ooEi#26sW0hI_vnaAzOQq8~$J;eLgC;78cM+DJ>dr@M!VbM-n$>O1a?E zNd>sj$g&LalT&+i5CwxtVfL)F8nL&uQsuRut8Wx2uWg7CTbBejqQH5pNp#n0ipr|Q zV2n~AFLA6^BA^{+RoaC=rr_#!nkI|?09N!eeSqbO@t=x|YbSwNYgr;cs;w(VG^(*J zj9}56QdekzF`Sdl4ts<<6NwMiOU)I;a%+iNLF5k<3){9u1MrU0KG_(pO3f#6+qb$7 zl8?Uh-L_{|metlU54e-fXTfAHE(*x381fH_+_mY7BQR)@6#36IsfI0Mk)jUHulLPF z_VG_3X_PvxF=uR+>TTFME;eR7*E!UuyRx}_H?a7t8L<~V8V;j&{g()%l_wdjyZ(_b zb0Uo?u->#ILpm$RHi=2#8qzYv=&%+t5zY-%aaR^^8v=Mgdh~cx?lsh3M+=My*f9C{ ztUHJ!B>13W&O;)y!uxrxNbccSdr}doS2C#aHeg~tN6lLeBWhwpR7TXjM8%y0Bj%Sq zMp<`O#b>8*u7mXFni?h}pemi37e1c)_LP>L@@HJ{+6{ z@sHky{Vqu&2rk37ldEA$Ptq1RboXR%r!3w-YK=kqmrwxpKnlNt*&MM{BytX_;I2&9 z_k=|g$_e%`Qn{}B*P+?mAe~|o0nTZ!#66GY+gPf`rvcO)(Q(asf1t}{c9$39QRGGi zbko>Fa?K=g=_G%QR-|NhmRD8O->CgUsXX(vY;D#&w>du)hn6j{OHf@s&c`}_DRXlq zH*Cjsll1&nn%gw$|v)z;8kM9ZSBmLZK#|b!sis_f|{ zWK|@)W+d=PtsANPNf?_CpNfu{P2fo2?!4`<<9egIM{Y3L*UoC!S24^+nDC$TK$+~GhJW}v#-z)4&&`byJHJagNuxCS0E_pDU7xU^J9Q7(PE_^k+{?R!)n$=?UT zqe5L?+IOObMkV@lKxo;d1sv?e8Yki6Gc3-Uqyv3B??!+IVh9VXjL`Uolv~A?Y?@i_ zppr6X;*QoWJ21$=tlRjbwk9&Ai8weFsOL$~_#tlPFk3%WYS_E!ghHXzk9Bj`v7|O- zG_VfG2NZ-IZfgmlFu7!1jwyc_eG=k0WlbX?@w(D>a6xN1aNtgM1g=1&VC(kJ63(YG zw#7#@+?}aygD{y8`>@M`O=Y+TQok1RBILz5`lQp4KYG2T?DJYo>nMCakicUij&04w znR!vCR{Fz^ekh$X+6Z87+#)zsZl~w%MK2A!GHp9HtY?~O;*YYD9H<*K??M|myeX)Yp>qd!&- z)y02NAEzo>G)jh2Np@~{t@7vFlZlq{Bv}TTuy^rF+*>`f;r3I*3Ox35X)gqT#m>ii zi%ZRn7XZ3(lg)Z#$<_KK7ctJF+Uw~*?Z4ip^QOsV9;ANipZKcDVZ&Sd)9=dAW4w~u zeG(RQ@(ol)ob%fgASI(4l|MAq<>kD#{osLRI}ui$V7XBC><5CinJhYH_XCd=L=&li z0|ONQ08Hu9UR%u|A4YLWWrC8})%LFY(pI55eq4QPsN$gFx^XFV%Zx}iuD;tV(%9qP zM&`49Nzxam-F_+-QmwzV?kUcbFrTN9lcWmpQu*+kd#?tDoG^c z6@wBO<(J*0)?y~&>P8|bT!B#%@B8?nsrQ`ZpPDXljPv%bBF7Q&%|qjC@0xKfM3C#$ zzsaPC86f9sNSYbJJ5-Z_iuS_1cdaU!-l}p`)%FIZfdDU)QE=UiWnnEqkbr5?l(h^^_}a7tROdA#An#Xv z;8m0Yo-;r(&S#4P3x=S0e)D@iR81PMEuOy2~uA`Af5~ej=9Vb31%`piyI}Kh4;**xiC!7xA70;7X zT`<&WBr>!f;gOuxS~gpPK)};aT16BBK^p;`#SU4PUn&kUjPF)6V}$h#lgHH#iAt^q z6b0(tLMcFwi|B0jm;{{S>jicQu30R2X$ z+vcKMXL)V=%tB@y=p_k$Iu9K>DYZOocSjM~cNY#Ng$){%c)8HxnPdV|3MJA%w{!Y;rWVYiU_U%%0)C`*^4o>I3qPbJK(P zatZTW-BRk>DD=G1>OM1E<>UK=X_hU)98o|c^1}0<6vezlMl|CeCbGJv!*t7Mo=#&L zhCXZOeMi=PR`Oykj+HbYNWPg8Z7k{rIn8sIiT=OT?RssS1`6X|J}ZZkPN#BpNpQ~0 za1~B@ueX0kJs0>C{{T?G)VD4&3vogAPfGOo`e#M9w2eSjLC4N3n*OQ6?a=OJjf%Ri z)!5k$F<_EMgIS)buui9AEJc7;Twu_CFOj;1)U0kMEP=7TJ=5)DJx0nO&MH-K^TbpwPX>B5q0P{_SRZnocGb*Bcj+0y;t-X6a z_jcE&GbAJ0TaBwxn$-TH`nvAbWa<4oJ()R~YvkI*O(c%yR&Gh=wz_Xy#jLPj4(e$k z4<@;3A6$=>Awv^^@l~B(SsF&q>8}OG4tB2w0e9k{kN_ayedxOLAAM1q8Lvp-9ONI` zjcoy!-hP_R9=Er5A&BG+ zzr_$Xh^l95gBfJW+OFfkY>KA2S#-GD?Ll-^G466jR!x97HBptuo^$4otkaT!C}FuzLP+Ma+ydXVYR@_(Es%0Htb-sfNe2hwx<@*y$%zk|JUyvo!|hgr7^FVd0lp1- zTS<`W2nzg)+6g6!snraDlgK|bz9xt3xie%qk85uZ2$uPWMHf^FNjTfwgpX>x$VoreCvC>It^ zsi>jb^$H5DrOm!s4y3C`a<7%0YPR>2zzRM}P~~M}Sw`pPgVRQ=+M#?<`;15gl0{UV zKTSrgob5zifog_}E2qssa1Q30gsg}P{Zt4s(d{)-;1&CGS~6P+P?a9x^I3|8C17`M zXu4t~f;|8Hvai%X`R$!oo|j z)6W8n_=Se%M`-h?ZM}SlqjfvWdz~@P-I6haeAihIQ|dQOsSZ&_E0v8--9%8r&^(f$ zMq{%b>1l0=%0n3{eB!b{71bt95)2?2ruu!~P@Qz#TuB;^0#ZfvZWWfz)ls!;*o{0< znk2EiR*hJ+obRxujm_9nuiALOyq|EOCEe3N>`u7XgXXu4>qc43QxcMbr*fous=T)^ z8DK__fl1rJd2v1{;cIDHSA_Lr7yQ!4-=gBN(iRy401C4gel&V9PwQfh=G$`5tQN zX)Lj7MU7Zw{$a&r+Vu;RzY9Jv4hiv5b+d7GJXXl!Cc@O)bqAIr$!n@Zz$XNQWHkD)a{{Wiu%47yO$kLhAet&AqT5iA{%iTZF6Uwb6K4( zQ7jUyb2xGSX}bxgfk?WMv<<^awm)hMtM=!^K;6&W;;nSiNHpV1o=?R!H0Z9q%aNe@ z1XXV$is8go*es(ZzG%=1WX}*T`V@Kjp~-BLzSwk+fGD>HSt46@$s@{dNEMRanDHI||%IZIQ6xXXIutkv{?V8dOGQuMdf;9LPgg0@l>`)y2%{6%a zv{Doi=M|MKQc6iwkOSljs3pbB-PUvT5sqmi5W!-{CXTkws&gS`13FDZcbYGBSsyFC z0FkGM-GEfl;*>}Zp@Tw5+$mB{{yr(VU__66mZ)G$3$Z0WniP?jZ5SGt9ZJJh3<2((T&l=3SC-t( zajQ`n+*R)F%AhN}f~gdapqW(h;-gC$o-?5PtIUfb%bg?UhZE_LyKc16FixB756wka zvo~Z%5d}x;pvdc~QggWdKxZ{*<7mu^(lCgPu}VV4^+y{wu;(Yu41GzOX>HWOF=hVD z&?CFLiJCcyXvn}H6`>NOFqvaIB|NS;puEW(Y|S!~+_oxXrj|2Y#~P#&s*|5{3d;Wg zP`a|4Rq*dCgPk?GdlVP;{{UX1Km!|MgA_LQ@QZRo5x8dm0L3vaDboAbj(-S-7>jOO z;+`EoNqezK+YTD8Z|&`rEXP438dPWb%?^I2Zx^~LHK7{{n2=~J;AP0A_Nut;w#W9R%qH z!OH?bOyZ+9D8p8$WsH|)!C_2WTBLoX?(W&h{iIRFVJd!MeQ6J=d z)bz_pu4bC*YlcOOBN?Ucu4Ilxi2ne#{0vr%2=KzofCe%^-&GN9R`}41she<3WDEA! zHN1=!ff%hw3N&U?LKN_Jub*{mx47$0(PU)fZYtvIy0<10ph^gr{wvovLKzAHlAG!k zm(sdL)ONw{?gQ%?Tpic=q8R58yjpcOai1ouHnsX~%W7ADq=TBx>m5qjCpaTn7@$aQ zT_fxd%0E+Q8gWQn+C?P#Oo5%a{i{+lYbUIA5>;VV)Jez`jfY8|@@9>-Me(0C(o4|e z)Cf_p0|zy7^G7m+hAXx)kNK;N=$$j9ix~8@Vn-jSR@*tahfKtVQP0}3pq$%Z2%(s} zILQQTKbmA;Nf&tBFw@4IRKr@ZT*kJ-C}-4uGgY4D;LbK{BC66imt9*2r=S@dA&lsV~vEx*G6GTy)TcUxDOa?3Iec1X>LX4biDU4UmA!S+O zkhZp26p@U1uEycttlhx`2jkmWt-^3can+tANI(`n#8`ej^;Ir;fAnqPBT(evBMohb)%z&P)OYEPW4WWBy-~4T}%67kyxgQ zib)Y9d9BLDh5&sY)3?Pg&60lAF-;(oNJ2$YVqfXFckO(=dvYg~^ zRj8crOxea{e4iAiaQO3E7EuI?B=R#+by?d;-{P{18gBAkOjHl%lVeDg;CB^#(CXeQ zpn#K{QEb25)I}|l2Htk3`gC~Nyws}>nb%+qPNLh26p^SW6)1F$YZbV@yo?dGcqkjG z$*)F33?G`d06b!fp)5^ZR31%32F}}xx}nDO5*uo|fI+Hath)j$0Qk#UXr{Mh_C@cf`$3V0pv*k{ z(xwz#v}ybAio>Vjdxf2pG%LpDlSvjC`;uo-JXWH|+6CTH18e{pr7j_kGLI?BvFG5{ zrE}@Yb;i$AC5O~DtkdmcK5Iv>EQ747k9I~zcJW9`u1=r^2RqkJZ^tUB*dN-Q>2KSS z*mwgJsL<<`e4Yr$6l(@mkS29CYhq#Ro2fgk+v0_pNXcWpGGhgC=g!p(j2DcG#lJ#@ zS+SNhUfxIouZ7pe5XQ_wL5iBtUA_MFREsp-m5kR@szem$l1?#Q5_(4Hu1kP1oZ_ah zmng9j;-P`yF7>H-V{u{;u4BY)`l&f3L8zkS0g&G`)$&_LexNf}08tQXT;rORh-vt% ztK=}me$`;Wk+37ktLPuyRb{~%YU$*q<+M!VOLl0b9|sh*<;PNy1an+D3%EHory^<_ z^Fd%VX>pUDD(f~a(>+twtRfM`D>9EH(=qzXubJd%-Hx$Ib`%k%e~L1W**aHF*r{tc zqu+IFnO14;TO{WhHQCtut>c9vWXplct~m(U5t0sQ<*;}5kU6BQjV`Ix?s}sBGHTGXke^q*9aHL&M z9WkKCw*tNrrF;$0wF18cF7!VLEHNG*QeB0hT1!Ig$dZ>n&KI>LXm-}`7|vZ!UU3M zeYWvk0@=pa=v6Vc=bDPe5-E&oQ9w6DHkMGS^IMa2=p1R*bq}>CKSUBIw2~=?k{v=p z3q=I&+HH>Xr0pH78g**b=9lW0QrTWb9+HtBcg|`$s)IaXew=YuMrZ>)!pe53&Pm&9 z@xa(^Rb%Zntw)<5#SPnl26Iy6u)+;Sj|HjH8d1jhtczM%yAVnYe$}XSA^^%49~3BG zDhNzt?@cNzCZa!#(PStv=PGb2GMcwL(>=AuMg<6}XE>=^RHi+^?NX>Y`LAS?jO||D zpn#(^T>_}19%|X5#4-XZJ3|{9l4^`d+*WH+3Yh>Zjq_JmF*_N*FdqVe9HmZ87B^7E zfZY7lSA&f?U4ilOUI2rdx3q#sHC}&eC0}P5KeY%9YQ+@*Imh{-z5qMoh^OfU)rrX3 zhZrsAB8ou9Gl~dYkx|?$mB%&hUIlq%!(gsxiZCH_;(&5@6w?h&zQf{z;|?%3tqKBa z>dpu$&zgf#xZu$bCEEnUVyI>XwE{9JLBBiH0t07H{Lnso(E*PmF1z#Uy9bfV46Ski|_DOiA40m_oBAjt|XBQox77QN1>{?7;U39^d()M;~p9 zmj3{XyGTS~cV^E1D!~tDsNoo66+>?(lBZ4u64hgO2`t59C){!L(7j0|q*KQSO}H~Q zH#o*CQYMq0zMExx$L_D@xwg z$o=WWh2z1~S5a$7LVvh7rqzH`^GdrGAZ{_|6(z`EN}LMKtw9!7R?cXSlFT(Jsxqvg zk+nj+sx$$&&T1`Ns-_R364>$j}=`*x%Q|i;($t^ljD!{XvHVajRFm!6z3=l(EMVl8{{V^+AKUIf6asKaJMU0(rz^-C(M)Fq z>EHLIu9=}tWO6Zzu_+6yp6f1=u+BvUz-8VR_k2*>C)}G4HRW#G21ACe$0{gBKmm-0 z9%#{CTqwhCzZArMM0T{wfxh(-!5zsgk_B&y+AAFP^1hi98RXGTt+O~5&+at5wigI} z>Im>b%>agly{bcelR)k7PmvHABiH``aHNt~R?xblA2da}xeN zNx|lfptVq%l_1m+k^rh8{`AF+nk7-102|{KG^s8%9Y6tC{jRu$}f{O9dT++C`6+9}sbQ0N%x(v2YnrdsgipTgU)b|*NIQXs- zIWFUqDLE%j6@v0UDYoj9+u9^4GX^It`go~G?yfIj8W!{wW3k5>qDqb32F(?tCkgNzgd97Ou$x?EU11wq9t3UBswbD~Ud1da!A~28*h^**3L0Lh&l$Cw? z;g3YAz`{b(?0iBTTh;zyBL zeY%@F);;{U5=5+R`=I&Nrxb~}cpXfjfsKZ)D=@B-Xrhwb$2$~d#xQAXexVdHOAWlu z-#<=H*sPg4ylCf9Ev$3#N-Dg!Ed9Zx@wIOg{<=Ah#<<V@z&;1f0||L-U~I7;_k7V(>Iq?0hD|@cXBbvxB&LiX zroAK|mOEo{RA@~!Ov-^+Fy#Ev?TH|&u77&Wi}8x2yNrI3fwfgGWr&k5NIpd|b+49( zEb)W;P|feKm0VVRzfs)88!?leMu;w=52S$VeCC*H>C~4cZW9W4KQw4=qKN8Y>@>41 zGswD%gdA^9%M>xjGlq_sy6||5Zp8lpG+i+^H#qp9qeknP$S2~7qD?x6Hsn(cd83G& z1)zvj$_6kf!btIw*gqJn>IO3D?!`=5OUNCakr!$Kjbn|nFvgfSY$Q00kK&55MKbAO zxZLMzV_NC|0M|R#-Pb~_`w{V3^GO8Gv4?Dvkxj@g;hZRBI=m6J93%tT`B^+2JJiJ1 zLS9^2T|7WBP$}fOR)uDoCYYbl22bxrom@F$h`@|w3RNYB+C`Hr3W5O6+tU*CI$S|4 zQZuHNI}qH8Q6q_=#A-}nKmh>afE1+Fjz$0p{pHsMs1z{3NZV4m-MtwA7N0MLx z!eeUkT2B*qgO*eo?T$&Txq7^^yi5R!BnMC)Dv8ruwlk`$W~m*rT+1TsR|s@$H?3A_7=p4dXzVto8qaQ;%rP8> zHt@&A4PcTKD(aH4J29;(Vs|X7Dw3llRy4_a<%%!?4gsbkLi4>FLnKltK%htg;<@WP zTa(lc(QzfQ&cxOFjNgS-S7(#BJ>VLYx^ZBp4{S-CspopQ&8WPvH|h$g)DN_e6|vL$ zY?2~HE1amR^oazqMn0Bp@mmJt@arIzI2$mm;VCx-hJ-xGg!_@*VbfJl-qqP&rsV^Xs3<$~%LSJkMW)8esBtXA=zBfNjf71ceQQAG1- zn`L4Gk-aGzsOho9(%Uq$vgbI?1v`4*ig=R_ zr~$(%z@#mskyd4$rjrkaI=HQ3Q_;+~1HYxCVfsj=u34sGuPYh)n0Tikjws<)X)wg_ z+tuKjHn$)IXD5tpRg#Goh;pm#@h6&A>fNLod#49}Yj7e-3J`Gl`g~*dsz_smVnkQL z+X9JMJwDVrFfw72dXpkV90`5RyKh=yWC5gD&}!fXu4kyjB-bpB6pE*vClo`ABHSTZ zf|9;yu&X)L8#t_MKA!OFiX$qU`}e7ft`F2@W$K@vnxk$T;An&F6lL+;h2{4YE>gAR7InZeM2;V z#g`qc)E%!31`qkJj#WaD-7clVk+J>hd6lAIyo$ZenT>mp$VzfBX@2WA11o;?K?z9Y z&NnsN`a`G5aX7hw^fD(W=D2%>EgEV1g9_~WZPd1%Iyj?kCSR)@)@xDR%JD=JIpzjM z-M9Irx|gVI>|$Qhhn-j!KPI@z?q!{uRGDBgNvQ%gS2~y;Pc_G$HO0=yY9V)o+N*Xck_78$I%ggA6nVYPGD5^Fli$)T&1+!6`jYTFGP z?wZjtXhx;`R(L++uVe9A{U-IDOmDdR)o<*Vx?}@mOHh@av$UG@d_VHsew z*w!t>nHZ9G%_Re7%Mxg8YRBTM%~2WJt(~edUf>+n1ci056|kxmMk_kTHa_~%Ckipm zW~_MNo$6Ir6gI_Cq5|3;0$7mf^XxBvoQjPo-tD6Bbu5c zyHXgCXiTIGin_ML1DkZ=#tMAa!Nprj>8+)Ep+BL<5MJP@Wyc8YQOq(-6=wQW67r=w4OJP7*UF-+j+U}mqpX7KqGewe;#SG566e%-}A2c_<TFh)S6QAM?4xQ11Lr? zNB;nBn1;!cUgXiXyaUek_J6JNi;H>SnWL5>2=j^wSI^qJ&r`@v$81ws3*B#Wk$L z?lpZI3a)*+O?q+;$&lWDDinjZpikPg!h~-`L9wcuo;dSXC9e~MRdNByT$=M^JDP^} zZoGZ!viE97U1~5z58ifhy%@^MyB&>Fy{if_wGl#vH>u9Vw)9V_u-sHWjFo+{RtRpJ zeRkH#0v^<|1!6u8eeJqWOz57Aia0IZ@4I0AJMmvP>1OILPNeW4Cm<_hiesYs>h-$B zFkSZKiE$g{ek*aB?Y#}t;lJtf-1Vqq?WiY2y8~Yw^*z*gKC8Tor`ksisuD7sSKb{_ ztv!Tkagc+G;Js~OZ*OGpX#{B_ZpTjMsQK(8NzzHuIL$`2Q1q|jbiO19Q23%NA;~!) z)De=v73R8bm|d+vb`{E8N+Vn@!^JGUTIK=-ZSDKiS9Yig$i`~-6G3eTUBETS+4bpE z<*|cGbvx;AWYROB{8hxJuP2wR^)$7M9PGxI>yR5e)wGm?$}^}^>ivYsW>*|CoEi+W zJk8vhi?_+#)|pab2NWe%b_3?66uWK3KMYEQ5-U2mrM16k>ZX0oobgZzX2*)LQXB1A zwQ*!6Qv##B*uf^e6piyz4i5OnO+|ucym6+e4NgI+V|uQdx{>Crr=7N;vBvnQXsVi>KsX1QF-Awk zcr+_?X-Ll4rXCK@xmmaQG-N$YqYN-=r%&qhP*(^^B%JxG$Vmf=4{0HZPCQqEB>RPU zJ0Zv;6=3@L#RVH?uPFBu@m_78aaL6)I!FWWL{-5%=7QR^?adL&;{??ef}M_kdeETN z=ApP0R($+b2oyvi+P%rD0&`a5iVKW+uN+lI_2bC^(PBd=it|`XHm-?=wVsk1B$FmB#(sPeAbLH1Op=` zvrT&5+d`5~38p)x1~5$)DG(8ye>D@#HEb976fn7!^N;`)V{q)a+Z8fOtT0xp3YEq- zsM3tM!3|LIX&V~3hz0?3xT!FxjI(n^c_w5V8oJyT-MFA649E($58kdI10c904k~Gj z7e;J@MO9Ywnpr^H5m$)dl2|AoG*#l&B-&2GuOu$AU^d37+*TmQ+x%jRT&sXjJOfY= zTIo!d-hvUCw6#&Ea!<&pn&rbQs2Ii$)K{2keLg75k+9;I4$mhZ+K}XDKqDSa0p4Og zpj9J%bM3IGR)y127Bi2&)!?pj0LD2r11PbH4z}F!Se;g4^E6r5Q{qt3kfdu~Nfn7R zNBE*xK2P4Y8KJ>3N71J=^0l0+hxWZ!@EM4_EHZo^X<4I^5BE@GNXZ z?0r?!MD`&=$L?ah(H|aRqOFX8MLmCD@yzk+0I9~}kvUZ=+mZ1>;-n1JA~Q>&MoFns z&H{i*t?q- z;QdGDuWa^`dro_Fwg#OaSI%gbtbs~)z#p|mI~*~r#bbP+T|%6<>B32nI0iR4B-6bU zro_=%b_v-;kX)=_4jo1-6~1Fi($O7WG)2<8uik|%>!DkDAOI7L;+3=N z1!W=@A(w6VHBPhCWu6rnQ8Ju@1!C7(%S*Fm4sH#eC0t|M%}$7f>2g3*DwZSSu)F<3 z@FnJLQ?JvGG4~W(8-{yz{9FEU1YmG0HPgt~#LlwFt(IMdCvSBkrnZb1PBZtb`&Kzu zEOd;FA2b$5koQ+1Ml-!*R}@L+xkgE45s|(#S=Ux=bv%EasZj5|YOFYRk-*kQIH4HD zyizb2Cwkv3V;15G1g0Ywx5Hwre<}qfh;-Nr)tc%vY^+xfK4}TAE$-uGml3$&{MTKW z%SOYi!8MCTbfF&`HD!U>leo-e8Lv&#RicQ^AS!q%wN_Iln9>tiI|6s8lzFZUfH^pf zc%^5!(=tg5epWXWy~;GHp~*&WJ}b~7LZKx(K-(wHR%#`kq`2-9dp{L)3vTV9Y4=~04cmr8CF z5VC6@Et)JISynPt04z`ZP+8a=_NAd&6@ZuKt=SVisL~|^PGw)vW*i34r)`nGIbUM$e}YdnJXp$EYbp9X+kIA9i&I1*ZU4h}VOgCkYfg#j>O;jwl<_NXNCRm@EJ0-+W30gyg z$f5QgKXR~aQ5yC+G$f#q4*24NM|-vmORH5D817&if#<~q?m>i`Cd20gR}}1btr%FY z0+4@JDlVc9rXqbZpeCE`+ujXY!V$jIyzgj_tJ+lksY924`gUFU6kT?*t+;h*6leFV z{!G#xDmEKn(sTA?C}q|$wicYV5Gl+mRH(rxnu|fZ63Csn8%g`tbhZv5VJqfdMLX1Q zE$ydPc?c(xYs0g9`LN6nj49rXv0B;Ks$HC+U9m#x&)SYfCkd#8AI)mrSWb={=Sbp^ zl?u87s1O|f^h8N>G|ti9LaPZQ+$r9iBC{>{XVlJer|R7C5y8C_&J=9ujxGnoJ zlQAIshZw0^ohEg;n&qQ_kf3XE<4~;*lXZNZJ>t3g^%9%-s$bbpEDb%R&aV5I0qy?+;j0+#`0gn=qr#mqe_13tEje`O!nYoH)m=H9=$3E{rdR4C)&746mbe{zA zMAubo2WgCt^pU}*qL$rbEDpB#u4wg`$Oht5s14L`Ysu75W@wZycmvHEmD9E!64D$l zGmnbFzUnrD2GTOaY}Q5ZR=IW|On@FhtO@UbG^+^_N#6pPY5Sg`vzZ1^f}{7PP4ug5 zK!BLY#%PQ!W`TQh769i>Y+GGh+*t@aDgf|BYZ=w;uON8s%u)d^H&a>)VQFOVI95CD z#d1AH%*8Nd3#Z50hT`lX%*s^plT@|UKWQe7i3M_ZCaWFHY6I(x3=lBFxoIvQF4(=e zjg$LBQDpovC@tXF@5LE)mUEQ|=Sc)<=gl%49Enp&&dh6$xatzaEHT9v6bz6C*{yTe zHQFq5s4{P+nfr)yXsOs(!|+V&-_-3B$0t4%nFV-qclmQ z(5<=8?NM@uKh0DOG4oA8;ziXggCD(1poug$xlf8G);eCuWY%N$uH4#|%uR9A<0~TaG0kdQ+TODo-(>m)J*{f5hE6G-hXj3RjKz0=pT^2y406#R#sdxiND>99@@k-5u9+n&Y z*GXLL3t3X9k1}rRnnMak>fPYwEd`>KL^E1vA*&~vuhj?LVJk9mLtt6 z+!{vb7@*H_8C^a;D>gNzWxQ`6O$JMa$2`(cGU>o46fId9+|-l{|3XH<1McA~)p&433KSS_C9jX71VHAS?K;j37R+NxT{OAmD}_iZB`Urh?) zW|7G`#R5heFgT_H%|CEx2WnZi82GBD2H;ek^Gp=YdcBI0J}DxiiJ-m$(1uF@M&3GmYxvJ63E_3G*VLD28tNmK0jE%rEMBm z9LI7QBW=ry#Z|5?=873iKrD_xDmSHUBS?&$z#?Q%%v0{w`&N{lMipjA3b8+|`81^V zl3v{-MpL_|bDgtIOIEUF(>(B?NPrm0$NW%bzM42)RwD9)?!mwHt1cYxwQUc(-;jS#?SsdtA3{F1vr5)o#B#{tZ@G!*jS`4i?)f}vgjU=xo zmxjhU7FczX?fROft-xWu5?*$$WI?QKyAa3stq~Ma1(@YzkMyqKibBVuTO`2FsLY&V zwdV~Wrvw$q{{S_M)w)!DNu`$DcBdO3I*oL40JG?IW^PFNq+aMW z(x8CG7k)XWr&05HVY#%O;h7ir%>`FZR|7oezK3@YPq@_phB+q#C7YV&?s^ghlHw;| z0M3t!>8?2En!KzBBQ#J|@&c|@<9Z%LNL5B3z^z7TGY}4OLj|S!c&%8hW}Qx$^240* zKvj+wA;DK0X{yL^#tcL^G%*O&2|BoZ(USe5l3LUnGM{*#v4c@Rqg*QEKtt|Op9Cs6CRR_mcVl9xk~!8ONQnGwTB zAy#jzerfBgyPlnO1;xAQlLK`-*5ft$653H|62&}#lo-u${{Yl3scaw#4566#ubSNY zhpS9mHQ;MQH$#M7{8WM?CMn$X|CnE=s(+?vh52F!(xwG&icsQsluoQebzqs~nG z{`C_^E+q8vGR&ZnwO!;19#Q&x(~?{pf+T ze$|~>5|HC@UMurbk`_C0R&lRt%UGdMM%7N)T;yhqtER1}pW2Cq^p0^*t~1RUmsJg+ zP~1>lvXM(ja>wG0qzZzB@C8t~IPp>qS)yT8(r7K3l^|6s*rB6q7}(WGGB%YWghptQ z;UokMRHlxu&~v?8@qNvRs!1>h>D8JMa9i3m{?x-wf(m4e4A9yacN#~wtKBNPTixcR zZdpbYkUrGK*QAW3j0&6zjE@4X_?G3#VfUyv3VxLWm}s4r8-uEXh~`2xkZNO`srK#r zQGXU!bIlW1Xjn&v3#<2~8aDvy0*Lo&=OuTl_Z7c-8VOugO&PbLveiX#P-^8)Dxe(D zR2pX1-b(xSG|(rIF(fVR-|Ur;^qmgKM1i6a&X@jny~3|jCK?lWhOw; z9WH(->cpRTB-LV%7*rTaD3C74niPAU02EUY$f&YBUk5Ct=Zf~c@VKLuD1aUFP^*p3 z^_GIxe6DI4zSyIHtW<-fXNo6fOq=c~6-GLT?X_PIp^N=BW`i;v4Y)jfRiutmfIA$0 zsIUdtDJK= zG3}U&$YHsh;kXmUr&=zkSb66AJ$#k!- zM$*S6X%fWsc`YpM?qarl<6w0CtBfl0E}}D9yBE{t395f`3xC;^|<1!aN6BuXSb(()#vGQ2zA3CWu&Hs z$F@K~9~BYZPXN;!9X}PNLnMohN>qxxcN0WL9-4yiOaB1hYA`mV3u`Nbswr@OC??+e z76mUO$v>*9&_y9DY~geBLAkS)MpSD-@ky~6)P#l}Dk!tXA~9K1;BBZ?qjtAaVshE= zXr}iu1%3A7m1Y^p7|jQSnHq@Rnzd0Y2FBxxPdeK|jq6g?9V5y|k|-VN)`IHo0dTQ! zL9Nc8aC#Nwi!>y&2r*-q9NKX^RdSjYp$;+;+34Z1$2?}XgXh3TSGdn)v~VR zEsEr13RQ`WVEL`Cfh@gB(nyZ4sPpkc>Foq_-Pqlti9bO*+U+u17F1v`oVu> z3#5EjHTAPVSRKx;YI=62mpJi78swH(ozJ^^37CwEV&D=z;BCccKF1-oeW)~JjwvF` zoKU8PI;7QCc?I)+Jzb z_NOBwomey*22ch-;-XevdjKehHY90n$21vdbwU%G0FxQO-l;6402pI6n-#m#dYrL9 zBAYCXbG2woIob`>PcD?>6rt(u zcOx&-5Mwp5JFL1@a2R>4yO}0QilNB!T4vSbism4ZW%pywNTW;-AbF}QEv$t1?aA$VTBW+J!{h-Q4-Mv`-b;pV z-+Y1bnkV2cXWw z$nHeK&J{=7GGls!450)eKv;OqTIR|1M<_Z2ZGlC2X0mAAM}Al2w~BRc1aPWKit}WW z59z2nKp~mHQX?GhJ}Ap>OGwB=C>n_Zp6W9jWz>of@kv|tK){)k+vEY_jGtr;iDSa^ zn$nugU8_lLA&Noz{8S~Jl3EzeC)kykeIS!(zU~BkxDI zoux zT(Kt^=AzYH;4oeSEgJs1g|z6vo@p?d3KW$K10LcRLJLeXX4L zy+E;l%Pp)LYo{h;Gxldlf7@IIKea6sw=Jeen+!Hp-U3R^UQNN@7;ImQRYKVs0u7>XqbnaETB05mIEO~WiHCR~ij#e7vRnqHgJ zOv#6E+Hv+L6k?lu`(?b6+_Y>!I2hnoZT*X}SF?^karb*@Ce>QtIVD>@-MKZQ@EBDK zH*)Blft+nkV+lvoZCy#Z#aXz>a8vy{()mB>X6te2@)!S~+C=q>QKP(zwxHftnDhuiAb^G2e`rh%QTG z#wuxydx&IKc7+43tvUFr3lvYxcGV%Rp=|OE2r)yru$@)$&u=<48Ep)G5~BGOR8zD?;W|++7x8OdUDSD%LF%Gl6fR{N$Qx3$owY$>#Goe~y;kOEVwDU}sK{`3t3D<;EB>ExWD2?!T<40+mkhh}UtzmF zI_e~}o7)&%7t@{Vi}e?#j2V{6M9>ZMoFDOBCs^axE->z^_NfFH2f(8;1$H_Lli<)@ zcgYpKXAeVggJLLmO0BpQlw^k9pN8Q;-n5uW)B)`kc$Q5*)!wvw@gLGF!g#^R0*vVt zx0%lCwKolt4docc6Y-#NiUhZ1jwl&<-D0f08cU1})ZWtdl*5(_IAugp3JC&b(XAw}d9JY8KX&38v5gj)R zs$K>u_%7VQWtuWFJc?>z9-nUotk2tt)sM-i*6dqbNEu5ubAiq(>)X1wQ3tkM=BfBu zzZZ!nReWS;6x1Un)uXapI=o6w1Z4A0E!;BAqzxEc=^jNdHH^12;h9!n(ssou1oPT; z69mIlgUA~ZS3@H18)RwH2{q?{d895qL)7JVF?8n;D&VtV)}^($Q!KCTbH3i;ReR@4 zSqX>`qXn09{waQ=!>JJr8sZ_`ar{sbk)33g;(K=Fjb|U?gA%t>G07GIL&@0x0E&IB z;*pW%aI+{niQ6@tG<$34ZZ$&_tgZdTZ&jAoYlvDt;BotLS=UVRb!#ahfmLI`GHSpz zrFVZUpPG^DxCcl@;MIw1KGFkh%^ddRuY*^O7B>MUWs#duOz(;>Q|cl+c*KZW=#Wf* z6pCL+X6`rueAcm>PTltVtR{mxKp-~xCYFxYI2Kv-Y>G~r^~rmt62|!};)Jpy9_q+) zcOcco(d?E>yCW=8=p<^=Yg?wrEKv^f1}Dg@)W5Zb44v&IhE5l1Ja;zN5%#SZmOkv0 zSh3fhnl0Ie;|ix!bCXq)V;dBeGKY#*JC%?J7)yjWQO;?gWS(HMG8M+6K^)dGy;D>V z60FBgbEdH;XOiEx>_V3TYh?aooJbW$#F0uQ@yUF#lkJU88yi-!G)QKa&NYS*0tL%E zP;YKUv+0Tqk%sP__cXse{MT&78Dsq~SG=$Jf^Q6+u3}a)Dinz_XL#*CL*Q+E4w=7>!AF7vsQZq*C z@C6OV-YJ=EAZP55Tb9*W*BvTO*m(WX{8r->t;7&X{{T?3>B-3e&4Nh?M{X_2ZgSexNSq2#^l$Ima|9XOBP_-lR_q zNF+Z{`&O75XfD<+tC6phE5pp45 zeho`AlZsyAPTD%R#av5Rs#wbsMl$Shqwif0s69K>Y-}y>E~7daXOZz-DlfKFMYsjF^>eDsIUuoD-WO7$#+v1wFo-f0)5tg7yjt&hmXKYyIxT{-Rmtm2C zTUPNbDk~LaDHKS&Q9D7iiZ)cXaaL_4aZ%Dhqg^SJUKn6&(x??xVZ~=wF9tBxP)_E( zoNZnwPX7Qk8pYMVYT@orQ&R;^!J$c<*R^BnsTgI-)zrXPH9&1XYQ!+& zh=B^={Z!KcX*1@kT8_|-J5>x=rlo;btIWINpbBa%yw#9oW`+OKZ}FN3`_NaDN*0Oq~;at1-D z(D?h%Nsmy-pvc{@bsjjYyqXm1=8&FJ{@Aiz*K~scK?Fs~wNLawySASkk|UjgE_i zF}KJRb%-Q+f>7D;Yb_rR9e3naNBmZKmq^6%mHUHI(w!i}-rtIW$IvvK`KA?sVnrag zBeuC1-kSVGZ>JP6O+C&%r{=8)bSL%x^gU%?D0VdxCSO*q=&)6d-3*d`S!%R)@o3P; zTXR%aI(wPH_@=FG7GflxP!l`;)iI{$ruvLfyTuKTTn)|zZ409?1ffm1tV4NYV*u>7 zPwiAsQ$zq+ATlS$F<4g8oek|7%{OlfPQwX?9&4FCrMVI@wTL8tdQRi7Ud*3fjGxoy zn6BpL%e8E?ca<2O^GPN3vb#ptaS}Ji4RKF-b0JwBm;vWiEps7>gO+Cwa!xp-PN%5) znP4p)s-bb@3g)jmgq=-+y_XKWEeRE3C8HS(H_58HEQo*srB0$MYU0|Cpwbl><7%pb z7IJf)>dNL%_9Fo`VC2<8X_K|6{P9|hbW5r_i1H8q^$>h|(4;jM94Gu+Q`GbHW)XeBA45RtR;DC$8p z4LjzI5Z`KPtq2=RX1%K>qB2V0@lrsln(@Kl`@B=u)@tY;<-ck}VfUii%n^w>sMK^; zGDetQ6nU?It;K7qJ9O8RzSWZy(7R=_B+kaPQrHkA)UEceRnk_<^-&@y?FA%?H{xRx z``a52j;XFraj9R9^Zz~{?&^ed95^)R7B?@g{me8-G=ce{s$C3WsT3m*W`9xw;E75i41 z!ooH(7ZSw84TG*}ReOcF($BFu+ltg^m7>(CpXR9?L@sp&{pqQNW|_5UE_2N%_=$Cs zD(&-Hu>}rw4Rv>lIR;_@Nar-rk528$A(3VGF5y0DfX#7mN(~{lG%;;ua@kpXPM=ec z73;K!GA*N-n0exYFB`P@4ee2+)e_b_l+Lfq@@bCJ+)RmZ2sCLd!e$u0f@*~p-YD>+ zQIGq9;;s00kp5NK3OEFsV8AWs0mfq-oYmUi((&+;5C@E6ffqMpLAr2NPb1==OWP@l zkUzPH{wX_~Co%|QL!f=?)ATvmAxQT78X9uZW4w`(n+!gRYR1Y}X%Wygql!w}*=>l6 zykMEXRx?FQX`-LKZ*%yW*Z80dSkDB`ZXz+`gIXzLcRx;7x4Qsmk2JzJb4-_nv}5T& zGrdb$+RJ$xJ2K57(x?f=18~7SRxzxhNjnzB3IPl#8Rz!4#0>L9jxva1pW2#=^O~iw zj@ghwJ{CRCw=|)#Z)@0XZ-S>F)_v8DmCWRcA65qHaZaaIx0*@Fn7X!9jTrY*(@K_+ zDQ0fdov@iXtkuTXRq9BvgB~SMmE2OXUB>ps)+~@RMksI7=Cec=%&!Ul;hJe8bwVUn z8pZ~ZimsZo=(vI)(umuU9(SV&)j?R>I3psJRgbzPd}=|A(rs#n*YyO!w@J8c|eWBbrL^TT%!X__)e!QQhcw_6rY z(#t53PRKKgG!QIOhM9B$$KJH#5nM(bHXDEi2RcQ>P!SN424k_1Vwe|QNTATMN`nCN z{MOaVt3=Bv)MFVLt69lv$}q~f@kWUCF%;0j_(nRJ$8lruJl4gn)v88egJOeDX<2h( zhEB@p(su)zPS{%*B%R+wH;;;zF1IdwGcb%wtP}%i z#$zaE&XbOF@tPdX1-WpNGl$3J=YR7|N=hrk3kZZyQkZWlQPRo^Ic>7Zm z&1Ufgw-|m~JcIF7>36Mlc5P&Y0HbFjm|%}+0c?KNW$JU5>`I-y3<5m;>X&^;S=brp zj5ZHAsw#%uMFqN|NEaDnOvDAulSJ@^K)4JCG^b7L7B|Bx5;6N$qh7-dOz{cL8JlOitB3O82*FCA5T2Ut?LeF^l+_ zWr(C;<(7pO)^E>|VA4?X-VGXf3$6^S8E>Gu#wc*~sT8?~A$d{u6sO`H=Xmbd3N}(| z#%LOrIpvAQprgnBYLEzJk%Uo?X5%z2r3PUy8<8rUpSZ1?2+?8^L=>rBe)O#CIm4LQ znk8-WLGWo{Ws{QVql6q9)|Y6ChfrIQ_n_Qah@e8uShtXPs}GJ-tXL$nNh7F%kA~Y7 z%UoE@j7ayV$l|_-)YdC)OE2cLc_%eh5lhod5u|GE!7E#pncg?ApD^qN}TMJ?C83Wgx~tX`cs{%%vFbV=@I zxBNmpXioZuE9wz+TU%>k35n5Ha8OezYi%fEqX@eJPTR3aRska8$&+$_n&o@fdBY0O zptqe%1~IWH8=7+Up5vz>)VUm}=A3x#pqPOly}X_cWpxX9;+3aKSxb1%)YZ%*J*Rrw z61NWq<8X1kJz%#scJCyYqT(=qmu%Dls>n#dHa6OYa?cD=h>$UD!v6quYEO*Y^`Q=j zyGfB3OAmM2pSM^|!zc`_c&=(Ix$b1wDi~#7sRqKPY0c9E_@Qp`$QSplShJ@=dwUh2 zbxDxSb^|~0NOazz1n|hx$QniD1I1(;h?eeFnbuCw&Y(H1Ydbh3LeK>r;7Qu2mGpWk zmUPt_W(>MPUlpHe(ryjgEYq<}>KpS+tZ4 zm6k>-2_;7rop_?>rmS{xl$Ds}hb$0_W=5jOZ}lO@AzUCK{0aAn#gN zT}XG9C~T&Aa0AE}Z{*Q>TsBbv&mM+8MLHyl3N3~kQOIwe< zy;-c}gh>KN%H)tYG>zrFvKyPAMYMp76&TO>rI)O{NRN9XEXp(tXWTw%iMrB?J6jk- zNKi_|<5$(1S`gP)3@)MuKhdarkMB;zk@ZL|c?}MYVHKQwTdg8ogfeiq#0K?3qB`w z?XzqdwkCkd448@MjacwA%`t!4X^{ewsj#JPEQ`t|!h)Y_)MA#JSvp<9#~L#;agnj2 zlOJrOGu9>rb@zrn02gdA8kol=w?D-SE}*t4*tbl5&1W4aMy=XKf>CuAOP>RQnx)K( zrPA3GN_ie>IWIK0W}GuOfm0pBF0eF(K55lSy2ID_XMZ@%*HdUd_*f0VjPjfHJnK&2X0 zjy7;LWxKxPMVL+bN9Vc=IDkiq=C0c=ekd{>wJ#>9l+&EI&M{hWS%(Vf zxc%zAGp85BN;W&zt0slgoC?LRlaQ4(dv?h3D1(1BR3}bPnkZH65-S?tknlj*iu8K3 zy-Kdxt6+c#rkI8rjxkkevA!`yD~<$H0rN;w$8%oD|3%DR{Rlo&y+|@>=sX5dr z4udVZz^^_rjjEn%*xP<-0`e~WP+3lP6xRpcRU;>AsbESp?nPJ?_^&o|_NWv@<$f_% zX#Ie$=i;CN=7@?&$T*;?mO+P&v-cH70h?}Vg;tRJj!2=pf=E$=RC+Yh-0o?B%!f-U z)ADImN7OgmQ&G2lgkW6$t7ncoa6(rt00+X zX^yPosIuT;z$@`ZNfKfe)FS-T6LjFqn^_fy-ZcO0NB(JTGP z-h**yp~J$(e`>gnImyu4Skm%a-C91POQkRnNXRj8+SKuyyIZV?9@{D_(Oksj36yX1 z;=Io4#nc>+V~mmHQ4lJOjm-t8DEOUpo+>0=ORhKCm}$7DR3y2_?^lhr z$*X-oHJm2_bjYLksS9^MtEN=|3spPo8 z6yWHWf=vkUN`u0j*KctX+^(D*UU5;=?FFREge92ZgIU((b5>rHGF%3@mjM2dYffKG zSuAR>i38^hNaTFh{OvH4xM9MtoK<9sStoN7drF*rt2(&hy5~VQH%wqG(1^o(erpa3 zYwM{s+uJ;#>`DyczN;0yP$S8EDlpT*u4AfoJ8qjWJt>17&KF@@mCva8{{UaHo&rSC zGB1)vW5FXp0n`kC2D(pF^~>&|0~z5^s&nla&2urzB~a{`UyAF`*AAhk7PFyn!5{C% z1?|}V1xWiXyNrz8>Lx<(d5G!2wyU*F9*m)e(1=m`0t!_*ZNB#{RD znj=L8z|@b1_^l$Q8%e#;xJLLVnxorH2IMmRsBdQ~0z!;@ill7l*)B;QC?pABY^J39 znm6LyuH#dD(crqy(;y@7L!Y%HdoZG+l$pujKfMeegPOF83mrTPJP<6H1CzA?t=|NZ zzuvT_yE57cSd6yY(v4-7qCtT2~k$PWAIktwKj*xpSJ>>R0Y% z*Kl=arVgEL)T1mW(An5#vM{Ytnn8`v#c15QMG6SwpP$py^y0FpXHSt?SI!)P7a;Fc zDCDugI5aKzAQ~%zSe`M>2yewPR$O^eQ&1{ErU)Fe@tXSN1_7^eT-A2q%5zf9V zqjpp}qGHGUd>Y`Qw0OXfKIfX-x9Tqv#-M67jBZw}sO)uu7v)U}EuG0RxK<+=29=Ae zM(#|&t$J>;Zy7zalU02TMdiP=vbWfpLh?46QNaDGt=5pZ1zDK=>atvvnOzaL@j~=r zWS-Gt*7}M2@lD5l0a9+FEX4DU1tBzqpq0lSD7N=j^ClFoqq76?Ok-M_EnW`gv!;Fl ztc&@;PTYz?JAx^D&eArEW@TgWcB&*(lp<$WLE{_$0Gd_R?5BZFnM;Q7O*b!oO+gV^ zK-l@DzY`otP}(^j81F%nS!6}*7mSW_Y73>{hf+_eNbo486C`3r51{T1QaRPgj_M_K z^5Ab;5ePJ_a7(BYvXerPhCvoYKekVbH{l$NnN_}Ynm=et?*TxK^Fv#C;E;vgD2)5d z5CJyWQ~H&^RZ`gg6$=>1lm5|KMmL%A!`eBgzYb!FT_EmIWm?@l#2F$b^RUMB^Bpj= zISIe&tv9rX{XMRV807PK3bpY1oM?BRENdEwcx>&Un@&}sTkD@Ev21Qu$xjt)| zcMy>90$5}dREwxz56m*YjQu$@M@=Mg#~wpBw``hor(LwR>~uMed2DPeAMxV;$zwnx zkZwsF)BQH!%V^f*9@zS{ZJGzJBC@-;joLJn;~Iwbk$$%JU@fE)q>cK}ZB8pgY^xMe zNEeZlP29vKRS}E;Grbgy5=y9{L~2{ayAeZ{=^&WL3@s$}bniSqk?HN%CnK zY@Hk_l&R0pG#aZ9;ua$u-OL!pS#-+~dwGvL6KMwLIx<&C*Wjs^cfpY;@Q-QTqT5hNKZITca zjo6w2>kMsQ@dN@sohLb`?rkES1a2}97_1wplsSjDT zMu<3FBysootcB?pFrieGEN%KprEWSs!j%vqe>wZnHP_2^YcMCcrAYI(DR}Q~EQpNA z2~coHlU%1xf?_30#4CeZL!_%Hm=r1R;90AxwMnFa~YO0G2F)I_@fJva!C;c zUpW<<)WzyuCWHnOccRMIhUUs(;SXnDE1qdN7Heoy;sz30v~l!3;Bs$BNPJCe