From 40f74ff8b8800dae57491a6004972d2bfe829601 Mon Sep 17 00:00:00 2001 From: pbldp <> Date: Sat, 14 Feb 2009 13:18:42 +0000 Subject: [PATCH] Generated candidates for 0.63 --- .../Peter-Bieringer/Linux+IPv6-HOWTO.de.html | 2499 ++++++++--------- .../Peter-Bieringer/Linux+IPv6-HOWTO.de.pdf | Bin 738365 -> 732842 bytes .../Peter-Bieringer/Linux+IPv6-HOWTO.de.sgml | 191 +- .../Peter-Bieringer/Linux+IPv6-HOWTO.html | 2462 ++++++++-------- .../Peter-Bieringer/Linux+IPv6-HOWTO.sgml | 205 +- 5 files changed, 2614 insertions(+), 2743 deletions(-) diff --git a/LDP/users/Peter-Bieringer/Linux+IPv6-HOWTO.de.html b/LDP/users/Peter-Bieringer/Linux+IPv6-HOWTO.de.html index 30e00df1..65ab218d 100644 --- a/LDP/users/Peter-Bieringer/Linux+IPv6-HOWTO.de.html +++ b/LDP/users/Peter-Bieringer/Linux+IPv6-HOWTO.de.html @@ -58,6 +58,40 @@ COLSPAN="3" >
Das Ziel des Linux IPv6 HOWTO ist die Beantwortung von Basis- und Experten-Fragen zum Thema IPv6 mit Linux-Betriebssystemen. Dieses HOWTO will dem Leser genug Informationen bereitstellen, um IPv6-Anwendungen auf Linux Computer installieren, konfigurieren und anwenden zu können. Zwischen-Versionen sind auf
Verfasst von und urheberrechtlich geschützt durch Peter Bieringer © 2001-2006.
Verfasst von und urheberrechtlich geschützt durch Peter Bieringer © 2001-2009.Deutsche Übersetzung:
Verfasst von und urheberrechtlich geschützt durch Georg Käfer © 2002-2003.
Verfasst von und urheberrechtlich geschützt durch Georg Käfer © 2002-2003, weitergeführt von Peter Bieringer © 2004-2009.Dieses Linux IPv6 HOWTO wird unter der GNU GPL Version 2 herausgegeben: - -
Dieses Linux IPv6 HOWTO wird unter der GNU GPL Version 2 herausgegeben:Dieses Linux IPv6 HOWTO ist ein Handbuch zur Anwendung und Konfiguration von IPv6 auf Linux-Systemen.
Copyright © 2001-2007 Peter Bieringer -Deutsche Übersetzung Copyright © 2002-2003 Georg Käfer
Copyright © 2001-2009 Peter Bieringer +Deutsche Übersetzung Copyright © 2002-2003 Georg Käfer, weitergeführt von Peter Bieringer © 2004-2009.Diese Dokumentation ist freie Software; Sie können diese unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation publiziert, entweder unter Version 2 oder optional jede höhere Version redistribuieren und/oder modifizieren.
Dieses Programm wird in der Hoffnung verteilt, dass es für Sie nutzvoll ist, jedoch OHNE JEDWEDER GEWÄHRLEISTUNG; sogar ohne der implizierten Gewährleistung der MARKTFÄHIGKEIT oder der FÄHIGKEIT ZU EINEM BESONDEREN ZWECK bzw. VORSATZ. Weitere Details finden Sie in der GNU General Public License.
Zusammen mit diesem Dokument sollten Sie eine Kopie der GNU General Public License erhalten haben; Wenn dem nicht so ist, können Sie sich an folgende Adresse wenden: Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Zusammen mit diesem Dokument sollten Sie eine Kopie der GNU General Public License erhalten haben; Wenn dem nicht so ist, können Sie sich an folgende Adresse wenden: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA.2003-04-09: Französische Übersetzung ist in Arbeit.
2003-05-09: Französische Übersetzung ist verfügbar.
2003-08-15: Spanische Übersetzung ist in Arbeit.
2003-05-09: Französische Übersetzung ist verfügbar2003-10-16: Italienische Übersetzung ist in Arbeit.
2004-03-12: Italienische Übersetzung ist verfügbar.
2004-03-12: Italienische Übersetzung ist verfügbar2005-07-25: Türkische Übersetzung ist verfügbar
2008-07-30: Spanische Übersetzung ist verfügbar (aber noch nicht abgeschlossen)
Die originale englische Version dieses HOWTOs wurde mit LyX Version 1.5.1 auf einem Fedora Core 7 System mit SGML-Template (DocBook book) erstellt. Alle Dateien sind unter Die originale englische Version dieses HOWTOs wurde mit LyX Version 1.6.1 auf einem Fedora 10 Linux System mit SGML-Template (DocBook book) erstellt. Alle Dateien sind unter TLDP-CVS / users / Peter-Bieringer
IPv6 ist ein neues Schicht 3 Vermittlungsprotokoll (siehe linuxports/howto/intro_to_networking/ISO - OSI Model) und es wird IPv4 (auch als IP bekannt) ablösen. IPv4 wurde vor langer Zeit entworfen (IPv6 ist ein neues Schicht 3 Vermittlungsprotokoll und es wird IPv4 (auch als IP bekannt) ablösen. IPv4 wurde vor langer Zeit entworfen (RFC 760 / Internet Protocol
USAGI versucht, so viel wie möglich ihrer Erweiterungen darin zu integrieren.
Einige, aber nicht alle, wurden in die Serie 2.4.x integriert (backported). Folglich sind in der Kernel Serie 2.4.x einige (viele) Erweiterungen nicht enthalten und es werden auch nicht alle Spezifikationen aktueller Drafts oder RFCs erfüllt (siehe: IP Version 6 Working Group (ipv6) Charter). Dies kann einige Inkompatibilitäts-Probleme zu anderen Betriebssystemen bewirken.
2.4. FAQ (Grundlagen)
2.4.1. Warum wird der Nachfolger von IPv4 nun IPv6 und nicht IPv5 genannt?
2.4.2. IPv6 Adressen: Warum ist die Anzahl der Bits so groß?
2.4.3. IPv6 Adressen: Warum ist die Bit-Anzahl bei einem neuen Design so klein?
3.1. Adressen ohne speziellen Präfix
3.1.1. Localhost Adresse
3.1.2. Unspezifische Adresse
3.1.3. IPv6 Adressen mit eingebetteter IPv4 Adresse
3.1.3.1. IPv4 Adressen in IPv6 Format
3.1.3.2. IPv4 kompatible IPv6 Adressen
3.2. Netzteil der Adresse (Präfix)
3.2.1. Link-lokaler Adress-Typ
3.2.2. Site-lokaler Adress-Typ
3.2.3. Unique Local IPv6 Unicast Adressen
3.2.4. Globaler Adress-Typ ("Aggregatable global unicast")
3.2.4.1. 6bone Test-Adressen
3.2.4.2. 6to4 Adressen
3.2.4.3. Durch einen Provider zugewiesene Adressen für ein hierarchisches Routing
3.2.4.4. Für Beispiele und Dokumentationen reservierte Adressen
3.2.5. Multicast-Addressen
3.2.5.1. Multicast-Bereiche
3.2.5.2. Multicast-Typen
3.2.5.3. Erforderliche node link-local Multicast Adresse
3.2.6. Anycast-Adressen
3.2.6.1. Subnet-Router Anycast-Adresse
3.3. Adress-Typen (Host-Teil)
3.3.1. Automatisch erstellte Adressen (auch unter dem Namen stateless bekannt)
3.3.1.1. Datenschutzproblem mit automatisch erstellten Adressen sowie eine Lösung
3.3.2. Manuell festgelegte Adressen
3.4. Präfixlängen für das Routing
3.4.1. Präfixlängen ("netmasks" genannt)
3.4.2. Zutreffende Routen
4.1.1. Überprüfung der IPv6 Unterstützung im aktuellen Kernel
4.1.2. IPv6 Module laden
4.1.2.1. Automatisches Laden des Moduls
4.1.3. Kernel-Kompilierung mit IPv6 Funktionalität
4.1.3.1. Kompilieren eines Standard-Kernels
4.1.3.2. Kompilieren eines Kernels mit USAGI-Erweiterungen
4.1.4. IPv6 kompatible Netzwerkgeräte
4.1.4.1. Gegenwärtig bekannte Verbindungsarten, die niemals IPv6 fähig sein werden
4.1.4.2. Bekannte Verbindungsarten, die gegenwärtig IPv6 nicht unterstützen
4.2. IPv6 kompatible Tools zur Netzwerkkonfiguration
4.2.1. net-tools Paket
4.2.2. iproute Paket
Sie können die tar-Version downladen und neu kompilieren: Original FTP source sowie FTP-Spiegel (Info fehlt)
Sie können nach einem passenden RPM Paket unter
4.3. IPv6 Test/Debug-Programme
4.3.1.1. Das Interface für einen IPv6 ping bestimmen
4.3.1.2. Ping6 zu Multicast-Adressen
4.3.4.1. IPv6 ping zur Adresse 2001:0db8:100:f101::1 über einen lokalen Link
4.3.4.2. IPv6 ping zur Adresse 2001:0db8:100::1 über einen IPv6-in-IPv4 Tunnel geroutet
4.4. IPv6 kompatible Programme
4.5. IPv6 kompatible Client-Programme (Auswahl)
4.5.1. DNS-Überprüfung der IPv6 Adress-Auflösung
www.join.uni-muenster.de. is an alias for tolot.join.uni-muenster.de. -tolot.join.uni-muenster.de. has AAAA address 2001:638:500:101:2e0:81ff:fe24:37c64.5.2. IPv6 kompatible Telnet Client-Programme
4.5.3. IPv6 kompatible ssh Client-Programme
4.5.3.1. openssh
4.5.3.2. ssh.com
4.5.4. IPv6 kompatible Web-Browser
Ältere Browser-Versionen verstehen ebenfalls keine URL mit IPv6 Adressen wie z.B. http://[3ffe:400:100::1]/http://[2001:a60:9002:1::186:6]/ (die angegebene URL funktioniert nur mit einem IPv6 kompatiblen Browser!).
Ein kleiner Test ist diese URL mit einem gegebenen Browser und ohne Proxy zu verwenden.
4.5.4.1. URLs zum testen
4.6. IPv6 kompatible Server
4.7.1. Anwendung diverser Tools
4.7.1.1. Q: ping6 zu einer link-lokalen Adresse funktioniert nicht
4.7.1.2. Q: ping6 oder traceroute6 funktioniert nicht als normaler Benutzer
5.1. Unterschiedliche Netzwerk-Geräte
5.1.1. Physikalische Devices
5.1.2. Virtuelle Devices
5.1.2.1. IPv6-in-IPv4 Tunnel Interfaces
5.1.2.2. PPP Interfaces
5.1.2.3. ISDN HDLC Interfaces
5.1.2.4. ISDN PPP Interfaces
5.1.2.5. SLIP + PLIP
5.1.2.6. Ether-tap Device
5.1.2.7. tun Device
5.1.2.8. ATM
5.1.2.9. Sonstige
5.2. Interfaces ein/aus-schalten
5.2.1. Verwendung von "ip"
5.2.2. Verwendung von "ifconfig"
6.1. Bestehende IPv6 Adressen anzeigen
6.1.1. Verwendung von "ip"
6.1.2. Verwendung von "ifconfig"
6.2. Hinzufügen einer IPv6 Adresse
6.2.1. Verwendung von "ip"
6.2.2. Verwendung von "ifconfig"
6.3. IPv6 Adressen entfernen
6.3.1. Verwendung von "ip"
6.3.2. Verwendung von "ifconfig"
7.1. Bestehende IPv6-Routen anzeigen
7.1.1. Verwendung von "ip"
7.1.2. Verwendung von "route"
7.2. Eine IPv6-Route über ein Gateway hinzufügen
7.2.1. Verwendung von "ip"
7.2.2. Verwendung von "route"
7.3. Eine IPv6-Route über ein Gateway entfernen
7.3.1. Verwendung von "ip"
7.3.2. Verwendung von "route"
# /sbin/route -A inet6 del <ipv6network>/<prefixlength> gw <ipv6address> [dev <device>]# /sbin/route -A inet6 del <ipv6network>/<prefixlength> gw <ipv6address> [dev +¬ <device>]7.4. Eine IPv6-Route über ein Interface hinzufügen
7.4.1. Verwendung von "ip"
7.4.2. Verwendung von "route"
7.5. Eine IPv6-Route über ein Interface entfernen
7.5.1. Verwendung von "ip"
7.5.2. Verwendung von "route"
7.6. FAQ für IPv6-Routen
7.6.1. Unterstützung einer IPv6 Default-Route
7.6.1.1. Clients (kein Routing eines Paketes!)
7.6.1.2. Router & Paketweiterleitung
8.1. Netzwerkumgebung mit “ip” anzeigen
8.2. Tabelle der Netzwerkumgebung mit “ip” editieren
8.2.1. Eintrag manuell hinzufügen
8.2.2. Eintrag manuell entfernen
8.2.3. Erweiterte Einstellungen
Kapitel 9. Konfiguration eines IPv6-in-IPv4 Tunnels
Beim verlassen Ihres Links steht Ihnen kein IPv6 fähiges Netzwerk zur Verfügung. Aus diesem Grund benötigen Sie zum erreichen des weltweiten IPv6 Internet einen IPv6-in-IPv4 Tunnel.
Wenn zum Verlassen des lokalen Netzwerks keine native IPv6-Anbindung vorhanden ist, wird zum Erreichen des weltweiten IPv6 Internet ein IPv6-in-IPv4 Tunnel benötigt.Es gibt unterschiedliche Tunnel-Mechanismen sowie einige Möglichkeiten zum Einrichten eines Tunnels.
9.1. Tunnelarten
9.1.1. Statische Punkt-zu-Punkt Tunnel: 6bone
9.1.2. Automatische Tunnel
9.1.3.1. Erstellen eines 6to4 Präfixes
9.1.3.2. 6to4 Tunnel zum Upstream
9.1.3.3. 6to4 Tunnel zum Downstream
9.1.3.4. Möglicher 6to4 Verkehr
9.2. Bestehende Tunnel anzeigen
9.2.1. Verwendung von "ip"
9.2.2. Verwendung von "route"
9.3.1. Einen Punkt-zu-Punkt Tunnel hinzufügen
9.3.1.1. Verwendung von "ip"
9.3.1.2. Verwendung von "ifconfig" und "route" (nicht empfehlenswert)
9.3.1.3. Verwendung allein von "route"
9.3.2. Punkt-zu-Punkt Tunnel entfernen
9.3.2.1. Verwendung von "ip"
9.3.2.2. Verwendung von "ifconfig" und "route" (nicht empfehlenswert, da unbequem)
9.3.2.3. Verwendung von "route"
9.3.3. Nummerierte Punkt-zu-Punkt Tunnel
9.4.1. 6to4 Tunnel hinzufügen
9.4.1.1. Verwendung von "ip" und einem dedizierten Tunnel-Device
# /sbin/ip tunnel add tun6to4 mode sit ttl <ttldefault> remote any local <localipv4address># /sbin/ip tunnel add tun6to4 mode sit ttl <ttldefault> remote any local +¬ <localipv4address>9.4.1.2. Verwendung von "ifconfig" und "route" sowie einem generischen Tunnel-Device "sit0" (nicht empfehlenswert)
9.4.2. 6to4 Tunnel entfernen
9.4.2.1. Verwendung von "ip" und einem dedizierten Tunnel-Device
9.4.2.2. Verwendung von "ifconfig" und "route" sowie einem generischen Tunnel-Device "sit0" (nicht empfehlenswert)
Kapitel 10. IPv4-in-IPv6 Tunnel konfigurieren
Diese Tunnel-Art wird derzeit vorwiegend in Test-Umgebungen verwendet. Das Kapitel ist aus diesem Grund noch leer. Allerdings scheint die Unterstützung for Linux momentan noch zu fehlen (03/2004).
In der Zwischenzeit finden Sie hier mehr Informationen: RFC 2473 / Generic Packet Tunneling in IPv6 Specification
spezifiziert den Mechanismus, um unterschiedliche Pakettypen (einschließlich IPv4) über IPv6 zu tunneln.ANMERKUNG: Unterstützung für IPv4-in-IPv6 Tunnel ist erst seit Kernel Version 2.6.22 verfügbar.
10.1. Anzeigen von existierenden Tunnels
Anwendung:
# /sbin/ip -6 tunnel show [<device>]Beispiel:
# /sbin/ip -6 tunnel show mode any +ip6tnl0: ipv6/ipv6 remote :: local :: encaplimit 0 hoplimit 0 tclass 0x00 flowlabel 0x00000 (flowinfo 0x00000000) +ip6tnl1: ip/ipv6 remote fd00:0:0:2::a local fd00:0:0:2::1 dev eth1 encaplimit 4 hoplimit 64 tclass 0x00 flowlabel 0x00000 (flowinfo 0x00000000)ANMERKUNG: wenn "mode any" nicht angegeben wird, werde nur IPv6-in-IPv6 Tunnels angezeigt.
10.2. Konfiguration eines Punkt-zu-Punkt Tunnels
Anwendung für die Erzeugung einer 4over6 Tunnel-Schnittstelle (welche danach aber noch nicht aktiv ist)
# /sbin/ip tunnel add <device> mode ip4ip6 remote <ipv6addressofforeigntunnel> local <ipv6addresslocal>Anwendung (allgemeines Beispiel für drei Tunnels):
# /sbin/ip -6 tunnel add ip6tnl1 mode ip4ip6 remote <ipv6addressofforeigntunnel1> local <ipv6addresslocal> +# /sbin/ip link set dev ip6tnl1 up +# /sbin/ip -6 route add <prefixtoroute1> dev ip6tnl1 metric 1 + +# /sbin/ip -6 tunnel add ip6tnl2 mode ip4ip6 remote <ipv6addressofforeigntunnel2> local <ipv6addresslocal> +# /sbin/ip link set dev ip6tnl2 up +# /sbin/ip -6 route add <prefixtoroute2> dev ip6tnl2 metric 1 + +# /sbin/ip -6 tunnel add ip6tnl3 mode ip4ip6 remote <ipv6addressofforeigntunnel3> local <ipv6addresslocal> +# /sbin/ip link set dev ip6tnl3 up +# /sbin/ip -6 route add <prefixtoroute3> dev ip6tnl3 metric 110.3. Löschen von Punkt-zu-Punkt-Tunnels
Anwendung für das Löschen einer Tunnel-Schnittstelle:
# /sbin/ip -6 tunnel del <device>Anwendung (allgemeines Beispiel für drei Tunnels):
# /sbin/ip -6 route del <prefixtoroute1> dev ip6tnl1 +# /sbin/ip link set ip6tnl1 down +# /sbin/ip -6 tunnel del ip6tnl1 + +# /sbin/ip -6 route del <prefixtoroute2> dev ip6tnl2 +# /sbin/ip link set ip6tnl2 down +# /sbin/ip -6 tunnel del ip6tnl2 + +# /sbin/ip -6 route del <prefixtoroute3> dev ip6tnl3 +# /sbin/ip link set ip6tnl3 down +# /sbin/ip -6 tunnel del ip6tnl311.1. Zugriff auf das /proc-Dateisystem
11.1.1. Verwendung von "cat" und "echo"
11.1.1.1. Wert anzeigen
11.1.1.2. Wert einstellen
11.1.2. Verwendung von "sysctl"
11.1.2.1. Wert anzeigen
11.1.2.2. Wert einstellen
11.1.2.3. Sonstiges
11.1.3. Werte im /proc-Dateisystem
11.2.1. conf/default/*
11.2.2. conf/all/*
11.2.2.1. conf/all/forwarding
11.2.3. conf/interface/*
11.2.3.1. accept_ra
11.2.3.2. accept_redirects
11.2.3.3. autoconf
11.2.3.4. dad_transmits
11.2.3.5. forwarding
11.2.3.6. hop_limit
11.2.3.7. mtu
11.2.3.8. router_solicitation_delay
11.2.3.9. router_solicitation_interval
11.2.3.10. router_solicitations
11.2.4. neigh/default/*
11.2.4.1. gc_thresh1
11.2.4.2. gc_thresh2
11.2.4.3. gc_thresh3
ZEBRA: netlink-listen error: No buffer space available, type=RTM_NEWROUTE(24), seq=426, pid=0ZEBRA: netlink-listen error: No buffer space available, type=RTM_NEWROUTE(24), +¬ seq=426, pid=011.2.4.4. gc_interval
11.2.5. neigh/interface/*
11.2.5.1. anycast_delay
11.2.5.2. gc_stale_time
11.2.5.3. proxy_qlen
11.2.5.4. unres_qlen
11.2.5.5. app_solicit
11.2.5.6. locktime
11.2.5.7. retrans_time
11.2.5.8. base_reachable_time
11.2.5.9. mcast_solicit
11.2.5.10. ucast_solicit
11.2.5.11. delay_first_probe_time
11.2.5.12. proxy_delay
11.2.6. route/*
11.2.6.1. flush
11.2.6.2. gc_interval
11.2.6.3. gc_thresh
11.2.6.4. mtu_expires
11.2.6.5. gc_elasticity
11.2.6.6. gc_min_interval
11.2.6.7. gc_timeout
11.2.6.8. min_adv_mss
11.2.6.9. max_size
11.3.1. ip_*
11.3.1.1. ip_local_port_range
11.3.2. tcp_*
11.3.3. icmp_*
11.3.4. Sonstige Einträge
11.4.1. if_inet6
11.4.2. ipv6_route
11.4.3. sockstat6
11.4.4. tcp6
11.4.5. udp6
11.4.6. igmp6
11.4.7. raw6
11.4.8. ip6_flowlabel
11.4.9. rt6_stats
11.4.10. snmp6
11.4.11. ip6_tables_names
Kapitel 13. Adress-Auflösung
Die Auflösung von Namen zu einer IPv4- bzw. IPv6-Adresse wird üblicherweise durch die Benutzung einer libc resolver Bibliothek durchgeführt. Es sind einige Seltsamkeiten bekannt bei der Nutzung der Funktion getaddrinfo.
Mehr Information kann dazu aktuell gefunden werden unter Linux & IPv6: getaddrinfo and search domains - Research and RFC 3484 on Linux.
Mehr Infos hierzu in späteren Versionen...
Kapitel 13. Netzwerk-Fehlersuche
Kapitel 14. Netzwerk-Fehlersuche13.1. Server Socket-Anbindung14.1. Server Socket-Anbindung
13.1.1. Überprüfung der Server Socket-Anbindung mit “netstat”14.1.1. Überprüfung der Server Socket-Anbindung mit “netstat”
Es ist immer von Interesse welche Sockets eines Knotens gerade aktiv sind. Mit “netstat” können Sie die betreffenden Informationen abfragen:
13.2. tcpdump-Beispiele14.2. tcpdump-BeispieleHier folgen einige Beispiele von (mit tcpdump) aufgezeichneten Paketen, die hoffentlich bei Ihrer Fehlersuche nützlich sein können.
13.2.1. Router-Erkennung14.2.1. Router-Erkennung
13.2.1.1. Router Advertisement14.2.1.1. Router Advertisement
13.2.1.2. Router Anfrage14.2.1.2. Router Anfrage
13.2.2. Neighbor-Erkennung14.2.2. Neighbor-Erkennung
13.2.2.1. Neighbor discovery solicitation zur Entdeckung doppelter Adressen14.2.2.1. Neighbor discovery solicitation zur Entdeckung doppelter Adressen
Folgende Pakete werden vom Knoten mit der Schicht 2 MAC Adresse “0:12:34:12:34:56” während der automatischen Konfiguration an die solicited-node link-lokale Multicast Adresse gesendet. Es wird überprüft, ob eine potentielle Adresse bereits von einem anderen Knoten am Link verwendet wird.
13.2.2.2. Neighbor discovery solicitation zur Host oder Gateway-Suche14.2.2.2. Neighbor discovery solicitation zur Host oder Gateway-Suche
Kapitel 14. Unterstützung einer ständigen IPv6-Konfiguration in Linux DistributionenKapitel 15. Unterstützung einer ständigen IPv6-Konfiguration in Linux DistributionenEinige Linux-Distributionen unterstützen bereits eine permanente IPv6 Konfiguration. Hierbei werden sowohl bestehende oder als auch neue Konfiguration- und Skriptdateien verwendet sowie tlw. IPv4 Skripte abgeändert.
14.1. Red Hat Linux und “Klone”15.1. Red Hat Linux und “Klone”
Seitdem der Autor begann das
14.1.1. Test der IPv6-Unterstützung bei Netzwerk-Konfigurations-Scripts15.1.1. Test der IPv6-Unterstützung bei Netzwerk-Konfigurations-Scripts
Sie können überprüfen, ob Ihre Distribution eine permanente IPv6 Konfiguration unter Verwendung der Skript-Sammlung des Autors unterstützt. Folgende script library sollte existieren:
14.1.2. Kurze Anleitung zum aktivieren von IPv6 bei RHL 7.1, 7.2, 7.3, ...15.1.2. Kurze Anleitung zum aktivieren von IPv6 bei RHL 7.1, 7.2, 7.3, ...
14.2. SuSE Linux15.2. SuSE Linux
Seit neueren 7.x Versionen gibt es eine wirklich rudimentäre Unterstützung für IPv6, siehe /etc/rc.config für Details.
14.2.1. SuSE Linux 7.315.2.1. SuSE Linux 7.3
14.2.2. SuSE Linux 8.015.2.2. SuSE Linux 8.0
14.2.2.1. IPv6-Adress-Konfiguration15.2.2.1. IPv6-Adress-Konfiguration
Editiere Datei /etc/sysconfig/network/ifcfg-<Interface-Name> und setze folgende Variable entsprechend
14.2.2.2. Zusätzliche information15.2.2.2. Zusätzliche information
Siehe Datei /usr/share/doc/packages/sysconfig/README
14.2.3. SuSE Linux 8.115.2.3. SuSE Linux 8.1
14.2.3.1. IPv6-Adress-Konfiguration15.2.3.1. IPv6-Adress-Konfiguration
Editiere Datei /etc/sysconfig/network/ifcfg-<Interface-Name> und setze folgende Variable entsprechend
14.2.3.2. Zusätzliche information15.2.3.2. Zusätzliche information
Siehe Datei /usr/share/doc/packages/sysconfig/Network
14.3. Debian Linux15.3. Debian LinuxFolgende Information wurde von Stephane Bortzmeyer <bortzmeyer at nic dot fr> beigesteuert.
14.3.1. Weiterführende Informationen15.3.1. Weiterführende Informationen
IPv6 on Debian Linux von Craig Small
IPv6 with Debian LinuxKapitel 15. Automatische KonfigurationKapitel 16. Automatische Konfiguration
15.1. Stateless Auto-Konfiguration16.1. Stateless Auto-Konfiguration
Wird unterstützt und kann bei der zugewiesenen link-lokalen Adressen beobachtet werden, sobald ein IPv6 fähiges Interface aktiv ist.
15.2. Stateful Auto-Konfiguration unter Verwendung des Router Advertisement Daemon (radvd)16.2. Stateful Auto-Konfiguration unter Verwendung des Router Advertisement Daemon (radvd)
Mehr Infos hierzu in späteren Versionen. Siehe unten im Abschnitt
15.3. Dynamic Host Configuration Protocol v6 (DHCPv6)16.3. Dynamic Host Configuration Protocol v6 (DHCPv6)
Nach einer langen Zeit der Diskussion wurde Kapitel 16. MobilitätKapitel 17. Mobilität
Kapitel 17. Firewall-FunktionalitätKapitel 18. Firewall-Funktionalität16.1. Allgemeines17.1. Allgemeines
16.1.1. Mobilität eines Knotens (Node Mobility)17.1.1. Mobilität eines Knotens (Node Mobility)
Die Unterstützung für IPv6-Mobilität in Linux kann durch die Installation der MIPL2-Implementierung aktviert werden, welche hier zu finden ist:
Diese Implementierung ist konform zur RFC 3775. Sie besteht aus einem Kernel-Patch und einen Mobilitäts-Daemon (genannt mip6d). Die Version 2.0.1 passt für Linux kernel 2.6.15.
Installation und Setup sind im Linux Mobile IPv6 HOWTO beschrieben: Installation und Setup sind im http://gnist.org/~lars/doc/Mobile-IPv6-HOWTO/Mobile-IPv6-HOWTO.html (temporärer Link)
Linux Mobile IPv6 HOWTO beschrieben.16.1.2. Netzwerk-Mobililtät17.1.2. Netzwerk-Mobililtät
Zusätzlich existiert die Implementierung der Netzwerk-Mobilität für Linux, genannt NEPL, und basiert auf MIPL. Diese steht auch zur Verfügung unter:
16.1.3. Links17.1.3. Links
USAGI-patched Mobile IPv6 for Linux (UMIP):http://umip.linux-ipv6.org/
Deploying IPsec/IKE-protected MIPv6 under Linux:http://natisbad.org/MIPv6/
HIP Implementierungen: http://infrahip.hiit.fi/, http://hip4inter.net/, http://www.openhip.org/
Die IPv6 Firewall-Funktionalität ist wichtig; vor allem dann, wenn Sie auf Ihren internen Netzen IPv6 mit globalen IPv6 Adressen einsetzen. In IPv6 werden - im Unterschied zu IPv4, wo interne Hosts automatisch durch private IPv6 Adressen geschützt werden (17.1. Firewall-Funktionalität mit netfilter618.1. Firewall-Funktionalität mit netfilter6
Von Haus aus unterstützt wird die IPv6-Firewall-Funktionalität im Kernel erst ab Version 2.4+. In älteren 2.2+ Versionen können sie nur mit Protocol 41 das generelle Tunnel von IPv6-in-IPv4-Paketen filtern.
Beobachten Sie nach der Installation ihr Regelset, siehe Abschnitt Abschnitt 18.3Abschnitt 19.3.
Kernels ab Version 2.6.20 unterstützen den IPv6-Verbindungsstatus (connection tracking) vollständig.
17.1.1. Weitere Informationen18.1.1. Weitere Informationen
17.2. Vorbereitung18.2. Vorbereitung
Dies ist nur notwendig, wenn der mitgelieferte Kernel und Netfilter nicht den Ansprüchen genügt und neue Featurs bereits verfügbar sind, jedoch noch nicht beinhaltet.
17.2.1. Quellen besorgen18.2.1. Quellen besorgen
Besorgen Sie sich den aktuellsten Kernel:
17.2.2. Quellen entpacken18.2.2. Quellen entpacken
Wechseln Sie in das Source-Verzeichnis:
17.2.3. Neueste iptables/IPv6-relevante Patches den Kernel-Quellen hinzufügen18.2.3. Neueste iptables/IPv6-relevante Patches den Kernel-Quellen hinzufügen
Wechseln Sie in das iptables Verzeichnis
17.2.4. Konfiguration, kompilieren und Installation eines neues Kernels18.2.4. Konfiguration, kompilieren und Installation eines neues Kernels
Wechseln Sie zu den Kernel-Quellen
17.2.5. iptables neu kompilieren und installieren18.2.5. iptables neu kompilieren und installieren
Stellen Sie sicher, dass obige Kernel-Sourceverzeichnisstruktur unter /usr/src/linux liegt
17.3. Verwendung18.3. Verwendung
17.3.1. Unterstützung im Kernel18.3.1. Unterstützung im Kernel
Laden Sie das Modul (falls dies im Kernel so kompiliert wurde):
17.3.2. Die Benützung von iptables lernen18.3.2. Die Benützung von iptables lernen
17.3.2.1. Auflistung aller netfilter Einträge18.3.2.1. Auflistung aller netfilter Einträge
17.3.2.2. Auflistung angegebener Filter18.3.2.2. Auflistung angegebener Filter
17.3.2.3. Hinzufügen einer Log-Regel zum Input-Filter mit Optionen18.3.2.3. Hinzufügen einer Log-Regel zum Input-Filter mit Optionen
17.3.2.4. Hinzufügen einer Drop-Regel zum Input-Filter18.3.2.4. Hinzufügen einer Drop-Regel zum Input-Filter
17.3.2.5. Löschen einer Regel mit Hilfe der Regelnummer18.3.2.5. Löschen einer Regel mit Hilfe der Regelnummer
17.3.2.6. Aktiviere die Auswertung des Verbindungsstatus (connection tracking)18.3.2.6. Aktiviere die Auswertung des Verbindungsstatus (connection tracking)
Seit Kernel-Version 2.6.20 ist die Auswertung des IPv6-Verbindungsstatus gut unterstützt. Die bis dahin statuslosen Filterregeln sollten ersetzt werden..
17.3.2.7. ICMPv6 erlauben18.3.2.7. ICMPv6 erlauben
Bei älteren Kernelversionen (unpatched kernel 2.4.5 und iptables-1.2.2) kann keine nähere Spezifizierung des ICMPv6-Typs vorgenommen werden:
17.3.2.8. Rate-limiting18.3.2.8. Rate-limiting
Da es zu einem ICMPv6 Storm kommen kann (der Autor hat dies bereits mehrfach beobachtet), sollten sie das rate limiting zumindest für das ICMP Regelset einsetzen. Zusätzlich sollten auch die Logging Regeln mit rate limiting geschützt werden, um DoS Attacken gegen das syslog sowie gegen die Logdateien enthaltenden Patitionen entgegenzuwirken. Ein Beispiel für ein rate limited ICMPv6 sieht wie folgt aus:
17.3.2.9. Eingehende SSH-Verbindung erlauben18.3.2.9. Eingehende SSH-Verbindung erlauben
Im folgenden Beispiel werden eingehende SSH-Verbindungen von einer speziellen IPv6 Adresse zugelassen:
17.3.2.10. Getunnelten IPv6-in-IPv4 Datenverkehr erlauben18.3.2.10. Getunnelten IPv6-in-IPv4 Datenverkehr erlauben
Um getunnelte IPv6-in-IPv4 Pakete zu akzeptieren, müssen Sie in Ihrem IPv4 Firewall-Setup entsprechende Regeln einzufügen, z.B.
17.3.2.11. Schutz gegen eingehende TCP-Verbindungs-Anfragen18.3.2.11. Schutz gegen eingehende TCP-Verbindungs-Anfragen
SEHR EMPFOHLEN! Aus Sicherheitsgründen sollten Sie auf jeden Fall eine Regel inkludieren, wodurch eingehende TCP-Verbindungs-Anfragen geblockt werden. Wenn Sie andere Interfacenamen verwenden, müssen Sie die Option "-i" entsprechend anpassen!
17.3.2.12. Schutz gegen eingehende UDP-Verbindungs-Anfragen18.3.2.12. Schutz gegen eingehende UDP-Verbindungs-Anfragen
EBENFALLS SEHR EMPHOLEN! Wie bereits im Kapitel Firewall erwähnt, ist es möglich die Ports bei ausgehenden UDP/TCP-Verbindungen zu kontrollieren. Im Falle, dass all Ihre IPv6 Systeme lokale Ports verwenden, z.B. von 32768 bis 60999, dann können sie ebenfalls UDP Verbindungen filtern (bis das Verbindungs-Tracking funktioniert):
17.3.3. Anwendungsbeispiele18.3.3. Anwendungsbeispiele
17.3.3.1. Einfaches Beispiel für Fedora Core18.3.3.1. Einfaches Beispiel für Fedora
Folgende Zeilen zeigen eine einfache Firewall-Konfiguration für Fedora Core 6 (ab Kernel-Version 2.6.20). Ausgehend von dem Origina (generiert durch system-config-firewall) wurden Modifikationen für die Unterstützung des Verbindungsstatus und der Rückgabe der passenden ICMPv6-Meldung für Rejects. Eingehende SSH (Port 22) Verbindungen sind erlaubt.
Folgende Zeilen zeigen eine einfache Firewall-Konfiguration für Fedora 6 (ab Kernel-Version 2.6.20). Ausgehend von dem Origina (generiert durch system-config-firewall) wurden Modifikationen für die Unterstützung des Verbindungsstatus und der Rückgabe der passenden ICMPv6-Meldung für Rejects. Eingehende SSH (Port 22) Verbindungen sind erlaubt.
17.3.3.2. Umfangreicheres Beispiel18.3.3.2. Umfangreicheres Beispiel
Folgende Zeilen zeigen ein umfangreicheres Setup. Happy netfilter6 Regelset erstellen...
Kapitel 18. SicherheitKapitel 19. Sicherheit18.1. Sicherheit des Knoten19.1. Sicherheit des Knoten
Es wird sehr empfohlen alle verfügbaren Patches einzuspielen sowie alle nicht benötigten Dienste zu deaktivieren. Ebenfalls sollten Sie lokales firewalling aktivieren und binden Sie die Dienste ausschließlich an benötigte IPv4/IPv6 Adressen.
18.2. Zugangsbeschränkungen19.2. Zugangsbeschränkungen
Viele Dienste setzen die tcp_wrapper Bibliothek für die Zugangskontrolle ein. Eine Beschreibung finden Sie unter 18.3. IPv6 Sicherheitsüberwachung19.3. IPv6 Sicherheitsüberwachung
Aktuell gibt es keine komfortablen Sicherheitstools mit denen man ein System über ein Netzwerk nach IPv6 relevanten Sicherheitslücken hin überprüfen kann. Weder
18.3.1. Rechtsfragen19.3.1. Rechtsfragen
ACHTUNG: Bitte stellen Sie immer sicher, dass Sie ausschließlich ihr eigenes Netzwerk scannen oder einen Scan nur nach Erhalt einer schriftlichen Erlaubnis durchführen. Andernfalls haben sie mit rechtlichen Konsequenzen zu rechnen! @@ -10871,8 +11123,8 @@ CLASS="SECT2" >
18.3.2. Sicherheitsüberwachung mit IPv6 fähigen netcat19.3.2. Sicherheitsüberwachung mit IPv6 fähigen netcat
Mit dem IPv6 fähigen netcat (siehe
18.3.3. Sicherheitsüberwachung mit IPv6 fähigen NMap19.3.3. Sicherheitsüberwachung mit IPv6 fähigen NMap
18.3.4. Sicherheitsüberwachung mit IPv6 fähigen strobe19.3.4. Sicherheitsüberwachung mit IPv6 fähigen strobe
Strobe ist (im Vergleich zu NMap) ein low budget Portscanner. Allerdings gibt es für Strobe einen IPv6 Patch (siehe
18.3.5. Überwachungsergebnisse19.3.5. Überwachungsergebnisse
Falls das Ergebnis einer Überwachung nicht Ihren IPv6 Sicherheitsrichtlinien entspricht, schließen Sie die Lücken mit Hilfe der IPv6-Firewall-Funktionalität, z.B. mit netfilter6 (siehe Kapitel 19. Verschlüsselung und AuthentifizierungKapitel 20. Verschlüsselung und Authentifizierung
Zum Unterschied zu IPv4 ist die Verschlüsselung und die Authentifizierung ein zwingendes Feature bei IPv6. Diese Features werden normalerweise mit IPsec implementiert (das auch von IPv4 verwendet wird).
19.1. Nutzungsarten von Verschlüsselung und Authentifizierung20.1. Nutzungsarten von Verschlüsselung und Authentifizierung
Zwei Arten von Verschlüsselung und Authentifzierung einer Verbindung sind möglich:
19.1.1. Transport-Modus20.1.1. Transport-Modus
Der Transport-Modus ist ein Modus nur für Ende-zu-Ende-Verbindungen. Hier wird nur die Nutzlast (üblicherweise ICMP, TCP oder UDP) mit deren entsprechenden Headern verschlüsselt, wogegen der IP-Header nicht verschlüsselt wird (aber üblicherweise in die Authentifizierung eingebunden wird).
19.1.2. Tunnel-Modus20.1.2. Tunnel-Modus
Der Tunnel-Modus kann einerseits für eine Ende-zu-Ende wie auch für eine Gatewas-zu-Gateway-Verbindung genutzt werden. Hier wird das komplette IP-Paket verschlüsselt und ein neuer IP-Header vorangestellt .
19.2. Unterstützung im Kernel (ESP und AH)20.2. Unterstützung im Kernel (ESP und AH)
19.2.1. Unterstützung im vanilla Linux Kernel 2.4.x20.2.1. Unterstützung im vanilla Linux Kernel 2.4.x
Fehlt in vanilla 2.4. In der Vergangenheit gab es einen Grund, die Linux Kernel Quellen frei von Export/Import-Kontrollgesetzen bzgl. Verschlüsselungs-Techniken zu halten. Dies ist auch ein Grund, wieso
19.2.2. Unterstützung im vanilla Linux kernel 2.6.x20.2.2. Unterstützung im vanilla Linux kernel 2.6.x
Aktuelle Versionen (zum Zeitpunkt des Schreibens 2.6.9 und neuer) unterstützt IPsec für IPv4 und IPv6.
19.3. Automatischer Schlüssel-Austausch (IKE)20.3. Automatischer Schlüssel-Austausch (IKE)
IPsec benötigt einen Schlüsselaustausch mit einem “Geheimnis”. Dieser Vorgang wird meistens automatisch durch sogenannte IKE-Daemons durchgeführt. Diese führen ebenso die Authentifizierung der Partner durch, entweder durch ein gemeinsam bekanntes Geheimnis (auch “pre-shared secret” genannt) oder bei RSA-Schlüssel (z.B. aus X.509 Zertifikaten).
19.3.1. IKE-Daemon “racoon”20.3.1. IKE-Daemon “racoon”
Der IKE-Daemon “racoon” ist vom KAME-Project und auf Linux portiert worden. Aktuelle Linux-Distributionen beinhalten diesen Daemon im Paket “ipsec-tools”. Zwei Programme sind für ein funktionierendes IPsec-Setup notwendig. Siehe dazu auch das
19.3.1.1. Manipulation der IPsec SA/SP Datenbank mit dem Werkzeug “setkey”20.3.1.1. Manipulation der IPsec SA/SP Datenbank mit dem Werkzeug “setkey”
“setkey” ist für die Definition der Security Policy (SP) im Kernel wichtig.
19.3.1.2. Konfiguration des IKE-Daemon “racoon”20.3.1.2. Konfiguration des IKE-Daemon “racoon”
“racoon” benötigt eine Konfigurationsdatei zur Ausführung. Es beinhaltet zu der Security Policy entprechenden Einstellungen, welche vorher mit “setkey” definiert wurde.
19.3.1.3. IPsec mit IKE-Daemon “racoon” starten20.3.1.3. IPsec mit IKE-Daemon “racoon” starten
Zum Schluss muss der Daemon gestartet werden. Beim ersten Mal sollte Debug- & Vordergrund-Modus aktiviert werden. Das folgende Beispiel zeigt eine erfolgreiche Aushandlung von IKE-Phase 1 (ISAKMP-SA) und 2 (IPsec-SA):
19.3.2. IKE-Daemon “pluto”20.3.2. IKE-Daemon “pluto”
Der IKE-Daemon “pluto” ist in den Paketen der *S/WAN-Projekte beinhaltet. Das *S/WAN-Projekt startete zu Anfags als
19.3.2.1. Konfiguration des IKE-Daemon “pluto”20.3.2.1. Konfiguration des IKE-Daemon “pluto”
Die Konfiguration ist der zu IPv4 sehr ähnlich, nur eine wichtige Option ist notwendig.
19.3.2.2. IPsec mit IKE daemon “pluto” starten20.3.2.2. IPsec mit IKE daemon “pluto” starten
Wenn die Installation von Openswan erfolgreich war, sollte ein initscript zum Starten von IPsec zur Verfügung stehen. Dann einfach auf jedem Partner folgendes ausführen:
19.4. Anmerkungen:20.4. Anmerkungen:
Bei Linux Kernel 2.6.x kann der IPsec-Status und die Policy auch mit “ip” angezeigt werden:
Kapitel 20. Quality of Service (QoS)Kapitel 21. Quality of Service (QoS)IPv6 unterstützt QoS durch die Anwendung von Flow Labels und Traffic Classes. QoS kann mittels “tc” (im Paket “iproute” enthalten) kontrolliert werden.
Kapitel 21. Hinweise zu IPv6 kompatiblen DaemonsKapitel 22. Hinweise zu IPv6 kompatiblen Daemons
Im folgenden Kapitel werden einige Hinweise zu IPv6 kompatiblen Daemons gegeben.
21.1. Berkeley Internet Name Domain (BIND) daemon “named”22.1. Berkeley Internet Name Domain (BIND) daemon “named”Seit der Version 9 wird IPv6 unterstützt. Setzen Sie immer die neuest verfügbare Version ein. Zumindest muss Version 9.1.3 eingesetzt werden, da ältere Versionen Sicherheitslöcher beinhalten können, die von Remote entsprechend ausgenutzt werden können.
21.1.1. Auf IPv6 Adressen hören22.1.1. Auf IPv6 Adressen hören
Anmerkung: Im Gegensatz zu IPv4 können bei aktuellen Versionen Server Sockets nicht an dedizierte IPv6 Adressen gebunden werden, es ist folglich
21.1.1.1. BIND named konfigurieren, damit er auf IPv6 Adressen antwortet22.1.1.1. BIND named konfigurieren, damit er auf IPv6 Adressen antwortet
Folgende Optionen müssen geändert werden, damit IPv6 aktiviert wird
21.1.1.2. BIND named konfigurieren, damit er auf IPv6 Adressen nicht antwortet22.1.1.2. BIND named konfigurieren, damit er auf IPv6 Adressen nicht antwortet
Folgende Optionen müssen geändert werden, damit IPv6 deaktiviert wird:
21.1.2. Access Control Lists (ACL) mit IPv6 Unterstützung22.1.2. Access Control Lists (ACL) mit IPv6 Unterstützung
ACLs mit IPv6 Adressen sind realisierbar und sollten wann immer möglich eingesetzt werden. Ein Beispiel:
21.1.3. Anfragen mit festen IPv6 Adressen senden22.1.3. Anfragen mit festen IPv6 Adressen senden
Diese Option ist nicht verpflichtend, ev. aber benötigt:
21.1.4. Pro Zone definierte feste IPv6 Adressen22.1.4. Pro Zone definierte feste IPv6 Adressen
Es ist möglich pro Zone mehrere IPv6 Adressen zu definieren.
21.1.4.1. Transfer source Adresse22.1.4.1. Transfer source Adresse
Die Transfer source Adresse wird für ausgehende Zonentransfers verwendet:
21.1.4.2. Notify source Adresse22.1.4.2. Notify source Adresse
Die Notify source Adresse wird für ausgehende notify Mitteilungen verwendet:
21.1.5. IPv6 DNS zone files Beispiele22.1.5. IPv6 DNS zone files Beispiele
Einige Informationen finden Sie auch unter
21.1.6. IPv6 bezogene DNS-Daten bereitstellen22.1.6. IPv6 bezogene DNS-Daten bereitstellen
Für IPv6 wurden neue Reverse Lookup Arten und Root Zonen definiert:
21.1.6.1. Aktuell beste Praxis22.1.6.1. Aktuell beste Praxis
Da es mit den neuen Formaten noch Probleme gibt, ist die aktuell beste Praxis:
21.1.7. IPv6 Verbindung überprüfen22.1.7. IPv6 Verbindung überprüfen
Ob BIND auf einen IPv6 socket hört bzw. IPv6 Daten bereitstellt, können Sie anhand folgender Beispiele überprüfen.
21.1.7.1. IPv6 Verbindung durch ACL abgelehnt22.1.7.1. IPv6 Verbindung durch ACL abgelehnt
Eine IPv6 Verbindung kann durch Angabe eines dedizierten Server, der abgefragt werden soll, erzwungen werden:
21.1.7.2. Erfolgreiche IPv6 Verbindung22.1.7.2. Erfolgreiche IPv6 Verbindung
Eine erfolgreiche IPv6 Verbindung sieht wie folgt aus:
21.2. Internet super daemon (xinetd)22.2. Internet super daemon (xinetd)IPv6 wird ungefähr seit der 21.3. Webserver Apache2 (httpd2)22.3. Webserver Apache2 (httpd2)
IPv6 wird beim Apache Webserver durch die Entwickler seit der Version 2.0.14 unterstützt. Verfügbare Patches für die alte 1.3.x Serie sind inzwischen nicht mehr aktuell und sollten nicht mehr in öffentlich zugänglichen Umgebungen eingesetzt werden. Verfügbar sind die Patches noch unter
21.3.1. Auf IPv6 Adressen hören22.3.1. Auf IPv6 Adressen hören
Anmerkung: Virtuelle Hosts mit IPv6 Adressen sind bis zur Version 2.0.28 nicht operabel (es gibt für die Version 2.0.28 einen Patch). Testen Sie aber immer zuerst die neueste Version, da ältere Versionen mitunter auch Sicherheitsprobleme mit sich bringen können.
21.3.1.1. Virtueller Host mit IPv6 Adresse22.3.1.1. Virtueller Host mit IPv6 Adresse
21.3.1.2. Virtueller Host mit IPv4 und IPv6 Adresse22.3.1.2. Virtueller Host mit IPv4 und IPv6 Adresse
21.3.1.3. Zusätzliche Anmerkungen22.3.1.3. Zusätzliche Anmerkungen
Apache2 unterstützt eine Methode namens “sendfile”, um die Auslieferung von Datenn zu beschleunigen. Einige NIC-Treiber unterstützen auch offline das Berechnen der Checksumme. In einigen Fällen kann dies zu Verbindungsproblemen und ungültigen TCP-Checksummen führen. In diesen Fällen ist “sendfile” zu deaktivieren, entweder durch Rekompilieren unter der Benützung der configure-Option “--without-sendfile” oder durch Benützung der Direktive "EnableSendfile off" in der Konfigurationsdatei.
21.4. Router Advertisement Daemon (radvd)22.4. Router Advertisement Daemon (radvd)Der Router Advertisement Daemon ist auf einem LAN dann sehr sinnvoll, wenn die Clients automatisch konfiguriert werden sollen. Der Daemon selbst sollte auf einem Linux Gateway Router eingerichtet sein (es hat nicht notwendigerweise das default IPv4 Gateway zu sein, Vorsicht also wer am LAN Router Advertisements versendet).
21.4.1. radvd konfigurieren22.4.1. radvd konfigurieren
21.4.1.1. Einfache Konfiguration22.4.1.1. Einfache Konfiguration
Die Konfigurationsdatei des radvd ist normalerweise die Datei /etc/radvd.conf. Eine einfache Konfiguration sieht wie folgt aus:
21.4.1.2. Spezielle 6to4 Konfiguration22.4.1.2. Spezielle 6to4 Konfiguration
Seit der Version 0.6.2pl3 wird die automatische (Neu)-Erstellung des Präfixes abhängig von der IPv4 Adresse eines angegebenen Interfaces unterstützt. Dies kann dazu eingesetzt werden, die Advertisements dann in einem LAN zu verteilen, nachdem das 6to4 tunneling geändert wurde. Zumeist eingesetzt wird dies hinter einem dynamischen dial-on-demand Linux Router. Wegen der sicherlich kürzeren Lebensdauer dieser Präfixe (nach jedem dial-up ist ein anderes Präfix gültig), wird der Wert der Lebensdauer auf einen minimalen Wert gesetzt:
21.4.2. Fehlersuche22.4.2. Fehlersuche
Mit dem Programm “radvdump” können Sie gesendete und empfangene Advertisements detailliert betrachten. Die Anwendung ist einfach:
21.5. Dynamic Host Configuration v6 Server (dhcp6s)22.5. Dynamic Host Configuration v6 Server (dhcp6s)DHCPv6 kann für stateful Konfiguration benutzt werden. Der Daemon selbst muß nicht unbedingt auf dem Linux-Standard-Router laufen.
21.5.1. Konfiguration des DHCPv6-Servers (dhcp6s)22.5.1. Konfiguration des DHCPv6-Servers (dhcp6s)
21.5.1.1. Einfache Konfiguration22.5.1.1. Einfache Konfiguration
Die Konfigurationsdatei des dhcp6s ist normalerweise /etc/dhcp6s.conf. Ein einfaches Beispiel sieht wie folgt aus:
21.5.2. Konfiguration des DHCPv6-Client (dhcp6s)22.5.2. Konfiguration des DHCPv6-Client (dhcp6s)
21.5.2.1. Einfache Konfiguration22.5.2.1. Einfache Konfiguration
Die Konfigurationsdatei von dhcp6c ist normalerweise /etc/dhcp6c.conf. Ein einfaches Beispiel sieht wie folgt aus:
21.5.3. Benutzung22.5.3. Benutzung
21.5.3.1. dhcp6s22.5.3.1. dhcp6s
Starten des Servers, z.B. durch
21.5.3.2. dhcp6c22.5.3.2. dhcp6c
Starten des Clients im Vordergrund, z.B. durch
21.5.4. Fehlersuche22.5.4. Fehlersuche
21.5.4.1. dhcp6s22.5.4.1. dhcp6s
Der Server hat einen Vordergrund und zwei Debug-Schalter (von denen beide benutzt werden sollten), hier ein Beispiel:
21.5.4.2. dhcp6c22.5.4.2. dhcp6c
Der Client hat einen Vordergrund und zwei Debug-Schalter, hier ein Beispiel:
21.6. tcp_wrapper22.6. tcp_wrapperMit der tcp_wrapper Programmbibliothek können Sie Ihre Dienste gegen Missbrauch schützen.
21.6.1. Filter-Funktionalität22.6.1. Filter-Funktionalität
Sie können tcp_wrapper für folgende Zwecke einsetzen:
21.6.2. Welches Programm benützt tcp_wrapper22.6.2. Welches Programm benützt tcp_wrapper
Folgende Programme sind bekannt:
21.6.3. Anwendung22.6.3. Anwendung
Der tcp_wrapper wird durch zwei Dateien konfiguriert und kontrolliert: /etc/hosts.allow sowie /etc/hosts.deny. Weitere Informationen finden Sie mit:
21.6.3.1. Beispiel für /etc/hosts.allow22.6.3.1. Beispiel für /etc/hosts.allow
In dieser Datei wird ein Dienst pro Zeile eingetragen, der positiv gefiltert werden soll (d.h. Verbindungen werden erlaubt).
21.6.3.2. Beispiel für /etc/hosts.deny22.6.3.2. Beispiel für /etc/hosts.deny
In dieser Datei werden alle Einträge negativ gefiltert. Und normalerweise sollen alle Verbindungen unterbunden werden:
21.6.4. Protokollierung22.6.4. Protokollierung
Entsprechend der Syslog Daemon Konfiguration in der Datei /etc/syslog.conf protokolliert der tcp_wrapper normalerweise in die Datei /var/log/secure.
21.6.4.1. Abgelehnte Verbindung22.6.4.1. Abgelehnte Verbindung
Das Logging einer abgelehnten IPv4-Verbindung zu einem durch den xinetd überwachten Daytime Dienst sieht wie folgt aus:
21.6.4.2. Akzeptierte Verbindung22.6.4.2. Akzeptierte Verbindung
Das Logging einer akzeptierten IPv4-Verbindung zu einem durch den xinetd überwachten Daytime Dienst sieht wie folgt aus:
21.7. vsftpd22.7. vsftpd21.7.1. Auf IPv6-Adressen lauschen22.7.1. Auf IPv6-Adressen lauschen
Editiere die Konfigurationsdatei, üblicherweise /etc/vsftpd/vsftpd.conf, und setze die Option für das “listen” wie folgt:
21.8. proftpd22.8. proftpd21.8.1. Auf IPv6-Adressen lauschen22.8.1. Auf IPv6-Adressen lauschen
Editiere die Konfigurationsdatei, üblicherweise /etc/proftpd.conf, allerdings ist hier zu beachten, daß dies in der Konfigurationsart virtueller Host nicht 100% logisch ist
21.9. Andere Daemons22.9. Andere DaemonsSeit einiger Zeit ist dies meist einfach, suchen Sie einfach nach einer Kommandozeilen-Option oder einer Konfigurationsvariable, um das Lauschen an IPv6-Adressen zu aktivieren. Schauen Sie dazu in den Manual-Seiten des Daemons oder in den entsprechenden FAQs nach. Es kann allerdings durchaus sein, daß sich der Daemon nur an die IPv6-“any”-Adresse (::) binden läßt und kein dediziertes Binden an eine spezielle IPv6-Adresse möglich ist (das hängt von der Unterstützung des Programmierers ab).
Kapitel 22. ProgrammierungKapitel 23. Programmierung22.1. Programmierung mit Nutzung der C-API23.1. Programmierung mit Nutzung der C-API
Dieser Abschnitt ist momentan nicht in Deutsch verfügbar, die englische Version ist verfügbar unter:
22.2. Andere Programmiersprachen23.2. Andere Programmiersprachen
22.2.1. JAVA23.2.1. JAVA
In Sun Java Versionen ab 1.4 ist Unterstützung für IPv6 vorhanden, siehe dazu auch die Klasse
22.2.2. Perl23.2.2. Perl
Stand Mai 2007 ist nichts bekannt, daß der Kern von Perl IPv6 nativ unterstützt. Dies kann allerdings aktiviert werden durch Benützung des folgenden Moduls:
Kapitel 23. InteroperabilitätKapitel 24. InteroperabilitätDas Kapitel 24. Weitere Informationen und URLsKapitel 25. Weitere Informationen und URLs
24.1. Gedruckte Bücher, Artikel, Onlinerezensionen25.1. Gedruckte Bücher, Artikel, Onlinerezensionen
24.1.1. Gedruckte Bücher (Englisch)25.1.1. Gedruckte Bücher (Englisch)
24.1.1.1. Cisco25.1.1.1. Cisco
24.1.1.2. Allgemein25.1.1.2. Allgemein
Understanding IPV6 von Davies, Joseph; ISBN 0735612455; Datum der Veröffentlichung: 05/01/2001; 350 Seiten. -Understanding IPV6 von Davies, Joseph; ISBN 0735612455; Datum der Veröffentlichung: 13/11/2002; 544 Seiten. von Davies, Joseph; ISBN 0735612455; Datum der Veröffentlichung: 05/01/2001; 350 Seiten.24.1.2. Artikel, eBooks, Online Rezensionen25.1.2. Artikel, eBooks, Online Rezensionen
Aufbruch in die neue Welt - IPv6 in IPv4 Netzen von Dipl.Ing. Ralf Döring, TU Illmenau, 1999
Migration and Co-existence of IPv4 and IPv6 in Residential Networks24.1.3. Wissenschaftliche Publikationen (Kurzbeschreibungen, Bibliographien, Online Quellen)25.1.3. Wissenschaftliche Publikationen (Kurzbeschreibungen, Bibliographien, Online Quellen)
Siehe auch:
24.1.4. Sonstiges25.1.4. Sonstiges
Mehr Infos gibt es unter: 24.2. Konferenzen und Meetings25.2. Konferenzen und Meetings
Fehlt etwas? Vorschläge sind willkommen!
24.3. Online-Informationen25.3. Online-Informationen24.3.1. Mit dem IPv6 Backbone verbinden25.3.1. Mit dem IPv6 Backbone verbindenMehr Infos in späteren Versionen... Vorschläge sind Willkommen!
24.3.1.1. Globale Registrierungsstellen25.3.1.1. Globale RegistrierungsstellenSiehe regionale Registrierungsstellen.
24.3.1.2. Regionale Haupt-Registrierungsstellen25.3.1.2. Regionale Haupt-Registrierungsstellen24.3.1.3. Tunnel-Broker25.3.1.3. Tunnel-BrokerAnmerkung: Eine Tunnel-Broker Liste ist im Abschnitt 24.3.1.4. 6to425.3.1.4. 6to4
24.3.1.5. ISATAP25.3.1.5. ISATAP24.3.2. Neueste Nachrichten und URLs zu anderen Dokumenten25.3.2. Neueste Nachrichten und URLs zu anderen Dokumenten
24.3.3. Protokoll-Informationen25.3.3. Protokoll-Informationen
24.3.3.1. IPv6 bezogene Request For Comments (RFCs)25.3.3.1. IPv6 bezogene Request For Comments (RFCs)
Das veröffentlichen einer Liste mit IPv6 relevanter RFCs geht über den Rahmen dieses Dokumentes hinaus, unter folgenden Links können Sie jedenfalls diverse Listen finden:
24.3.3.2. Aktuelle Entwürfe diverser Arbeitsgruppen25.3.3.2. Aktuelle Entwürfe diverser Arbeitsgruppen
Aktuelle (auch) IPv6-bezogene Drafts finden Sie hier:
24.3.3.3. Sonstige25.3.3.3. Sonstige
24.3.4. Weitere Informationen25.3.4. Weitere Informationen
Linux Optimized Link State Routing Protocol (OLSR) IPv6 HOWTO
24.3.4.1. Linux Informationen25.3.4.1. Linux Informationen
24.3.4.2. Informationen zu Linux-Distributionen25.3.4.2. Informationen zu Linux-Distributionen
Fedora Core FedoraDebian Linux, Craig Small's IPv6 information and statusIPv6 with Debian Linux
24.3.4.3. Allgemeine Informationen25.3.4.3. Allgemeine Informationen
UK IPv6 Resource Centre - Großbritannien
internet || siteinternet2 Working Group - Presentation (HTML + PPT) from IPv6 Workshops: (Stateless Autoconfiguration, IPv6 Addressing, USAGI, Provider Independent IPv6 Addressing and other topics).
IPv6 & TCP Resources List
Klingon IPv6 tools, Klingon IPv6 tools (native IPv6 only access): IPv6 Firewall Beispiele, Bandbreiten-Tests sowie Portscanner
Fehlt etwas? Vorschläge sind Willkommen!
24.3.4.4. Marktforschung25.3.4.4. Marktforschung24.3.4.5. Patente25.3.4.5. Patente
Kanadische Patentdatenbank: Home, Search (Basis Suche, einfach IPv6 im Suchfeld eingeben ;-); 84 Dokumente gefunden, 22.12.2002)
Espacenet - Euorpäische Patentinformationen: -National Offices, Members of Espacenet(IPv6: 84 Dokumente, 22.12.2002)
Delphion Research:
24.3.5. Sortiert nach Ländern25.3.5. Sortiert nach Ländern
24.3.5.1. Europa25.3.5.1. Europa
24.3.5.2. Australien25.3.5.2. Australien
24.3.5.3. Belgien25.3.5.3. Belgien
Vorschläge sind Willkommen!
24.3.5.4. Brasilien25.3.5.4. Brasilien
24.3.5.5. China25.3.5.5. China
Vorschläge sind Willkommen!
24.3.5.6. Deutschland25.3.5.6. Deutschland
24.3.5.7. Frankreich25.3.5.7. Frankreich
24.3.5.8. Großbritannien25.3.5.8. Großbritannien
24.3.5.9. Indien25.3.5.9. Indien
Vorschläge sind Willkommen!
Vorschläge sind willkommen!24.3.5.10. Italien25.3.5.10. Italien
24.3.5.11. Japan25.3.5.11. Japan
24.3.5.12. Korea25.3.5.12. Korea
24.3.5.13. Mexiko25.3.5.13. Mexiko
24.3.5.14. Niederlande25.3.5.14. Niederlande
24.3.5.15. Österreich25.3.5.15. Österreich
24.3.5.16. Portugal25.3.5.16. Portugal
Vorschläge sind willkommen!24.3.5.17. Russland25.3.5.17. Russland
24.3.5.18. Schweiz25.3.5.18. Schweiz
Vorschläge sind willkommen!
SWITCH: Das Schweizer Erziehungs- & Wissenschaftsnetzwerk
24.3.6. Sortiert nach Betriebssystemen25.3.6. Sortiert nach Betriebssystemen
24.3.6.1. *BSD25.3.6.1. *BSD
FreeBSD Ports: Ipv6BUGAT - BSD Usergroup Austria - www.bugat.at: FreeBSD IPv6 Tunnel (deutsche Sprache)
24.3.6.2. Cisco IOS25.3.6.2. Cisco IOS
24.3.6.3. Compaq
IPv6 at Compaq - Präsentationen, White Papers, Dokumentation...
24.3.6.4. HPUX25.3.6.3. HPUX
24.3.6.5. IBM25.3.6.4. IBM
24.3.6.6. Microsoft25.3.6.5. Microsoft
Getting Started with the Microsoft IPv6 Technology Preview for Windows 2000
Internet Connection Firewall Does Not Block Internet Protocol Version 6 Trafficmsdn - Microsoft Windows CE .NET - IPv6 commands
msdn - search for IPv6 (100 Ergebnisse, 22.12.2002)
24.3.6.7. Solaris25.3.6.6. Solaris
24.3.6.8. Sumitoma25.3.6.7. Sumitoma
24.3.6.9. ZebOS25.3.6.8. ZebOS
24.3.7. IPv6 Sicherheit25.3.7. IPv6 SicherheitNewOrder.box.sk (search for IPv6) (Artikel, Exploits, Datei-Datenbank etc.)24.3.8. Programm-Listen25.3.8. Programm-Listen
24.3.8.1. Analyse-Werkzeuge25.3.8.1. Analyse-Werkzeuge
24.3.8.2. IPv6 Produkte25.3.8.2. IPv6 Produkte
Posadis 0.50.624.3.8.3. SNMP25.3.8.3. SNMP24.4. IPv6 Infrastruktur25.4. IPv6 Infrastruktur
24.4.1. Statistiken25.4.1. Statistiken
24.4.2. Internet Exchanges25.4.2. Internet Exchanges
Eine weitere Liste von IPv6 Internet Exchanges gibt es unter: 24.4.2.1. Deutschland25.4.2.1. Deutschland
24.4.2.2. Estlanda25.4.2.2. Estlanda24.4.2.3. Europa25.4.2.3. Europa24.4.2.4. Frankreich25.4.2.4. Frankreich24.4.2.5. Großbritannien25.4.2.5. Großbritannien24.4.2.6. Japan25.4.2.6. Japan24.4.2.7. Korea25.4.2.7. Korea24.4.2.8. Niederlande25.4.2.8. Niederlande24.4.2.9. USA25.4.2.9. USANY6IX: New York City IPv6 basierter Internet Exchange
PAIX24.4.3. Tunnel broker25.4.3. Tunnel broker
Auch interessant: 24.4.3.1. Belgien25.4.3.1. Belgien
Fehlt etwas? Vorschläge sind willkommen!
24.4.3.2. Canada25.4.3.2. Canada24.4.3.3. China25.4.3.3. ChinaFehlt etwas? Vorschläge sind willkommen!
24.4.3.4. Deutschland25.4.3.4. Deutschland24.4.3.5. Estlanda25.4.3.5. Estlanda24.4.3.6. Großbritannien25.4.3.6. GroßbritannienNTT, Großbritannien - IPv6 Versuch. IPv4 Tunnel und native IPv6 Standleitungs-Verbindungen. POPs gibt es in: London, Düsseldorf, New Jersey (USA, East Coast) Cupertino (USA, West Coast) Tokio24.4.3.7. Italien25.4.3.7. Italien24.4.3.8. Japan25.4.3.8. JapanFehlt etwas? Vorschläge sind willkommen!
Internet Initiative Japan (Japanese language) - IPv6 native Standleitungs- und IPv6 tunneling Service
24.4.3.9. Malaysia25.4.3.9. MalaysiaFehlt etwas? Vorschläge sind willkommen!
24.4.3.10. Niederlande25.4.3.10. Niederlande24.4.3.11. Norwegen25.4.3.11. Norwegen24.4.3.12. Spanien25.4.3.12. Spanien24.4.3.13. Schweiz25.4.3.13. SchweizFehlt etwas? Vorschläge sind willkommen!
Tunnelbroker AS8758, Dolphins Network Systems (seit 20.12.2002 online)
24.4.3.14. USA25.4.3.14. USA24.4.3.15. Singapore25.4.3.15. SingaporeFehlt etwas? Vorschläge sind Willkommen!
http://tunnel-broker.singnet.com.sg/, with NAT and IPsec option
24.4.3.16. Weitere Tunnel broker...25.4.3.16. Weitere Tunnel broker...24.4.4. Native IPv6 Dienste25.4.4. Native IPv6 DiensteAnmerkung: Die folgenden Dienste sind meist nur mit einer gültigen IPv6 Verbbindung erreichbar!
24.4.4.1. Net News (NNTP)25.4.4.1. Net News (NNTP)Fehlt etwas? Vorschläge sind Willkommen!
24.4.4.2. Spiele Server25.4.4.2. Spiele Server24.4.4.3. IRC Server25.4.4.3. IRC ServerFehlt etwas? Vorschläge sind Willkommen!
24.4.4.4. Radiosender, Musik-Streams25.4.4.4. Radiosender, Musik-Streams
Fehlt etwas? Vorschläge sind Willkommen!
24.4.4.5. Web Server25.4.4.5. Web Server24.5. Mailinglisten25.5. MailinglistenWeitere Listen von Mailinglisten sind verfügbar unter:
Schwerpunkt Schwerpunkt
Request e-mail Adresse Request e-mail Adresse
Abonnieren Abonnieren
e-mail Adresse der Mailingliste e-mail Adresse der Mailingliste
Sprache Sprache
Zugang via WWW Zugang via WWW
Linux Kernel Networking inkl. IPv6 Linux Kernel Networking inkl. IPv6
majordomo (at) vger.kernel.org majordomo (at) vger.kernel.org
netdev netdev
netdev (at) vger.kernel.org netdev (at) vger.kernel.org
Englisch Englisch
Mobile IP(v6) für Linux Mobile IP(v6) für Linux
Web-based, see URL Web-based, see URL
mipl mipl
mipl (at) mobile-ipv6.org mipl (at) mobile-ipv6.org
Englisch Englisch
Linux IPv6 User & USAGI Linux IPv6 User & USAGI
usagi-users-ctl (at) linux-ipv6.org usagi-users-ctl (at) linux-ipv6.org
usagi-users (at) linux-ipv6.org usagi-users (at) linux-ipv6.org
Englisch Englisch
IPv6 und Debian Linux IPv6 und Debian Linux
Web-based, siehe URL Web-based, siehe URL
debian-ipv6 (at) lists.debian.org debian-ipv6 (at) lists.debian.org
Englisch Englisch
6bone 6bone
majordomo (at) isi.edu majordomo (at) isi.edu
6bone 6bone
6bone (at) isi.edu 6bone (at) isi.edu
Englisch Englisch
IPv6 User allgemein IPv6 User allgemein
majordomo (at) ipv6.org majordomo (at) ipv6.org
users users
users (at) ipv6.org users (at) ipv6.org
Englisch Englisch
24.6. Online-Werkzeuge25.6. Online-Werkzeuge Bugtracking Internet Programme (1) Bugtracking Internet Programme (1)
bugtraq-subscribe (at) securityfocus.com bugtraq-subscribe (at) securityfocus.com
bugtraq (at) securityfocus.com (3) bugtraq (at) securityfocus.com (3)
Englisch Englisch
24.6.1. Test-Werkzeuge25.6.1. Test-Werkzeuge
finger, nslookup, ping, traceroute, whois: UK IPv6 Resource Centre / The test page
ping, traceroute, tracepath, 6bone registry, DNS: http://www.cnri.dit.ie/cgi-bin/check_aaaa.pl
IPv6 Adress Analye Werkzeug (ähnlich zur Informations-Option von ipv6calc)
24.6.2. Informationsbeschaffung25.6.2. Informationsbeschaffung
24.6.3. IPv6 Looking Glasses25.6.3. IPv6 Looking Glasses
24.6.4. Hilfsapplikationen25.6.4. Hilfsapplikationen
24.7. Trainings, Seminare25.7. Trainings, SeminareIPv6 Training and Workshop, AERAsec, Deutschland (derzeit nur in deutscher Sprache)
CIW Internetworking Professional Training CBT CD24.8. 'Die Online Entdeckung' ...25.8. 'Die Online Entdeckung' ...
IPv6: Addressing The Needs Of the Future von Yankee Group (Autor)
Kapitel 25. Versions-Überblick / Danksagung / Zum Schluss
Kapitel 26. Versions-Überblick / Danksagung / Zum Schluss25.1. Versions-Überblick26.1. Versions-Überblick
Die Versionen x.y. werden im Internet veröffentlicht.
25.1.1. Ausgabe 0.x26.1.1. Ausgabe 0.x
25.1.1.1. Englische Sprachversion (Peter Bieringer's Original)26.1.1.1. Englische Sprachversion (Peter Bieringer's Original)
Die Historie der Änderungen der englischen Sprachversion finden Sie dort:
25.1.1.2. Deutsche Sprachversion26.1.1.2. Deutsche Sprachversion
- 0.63.de.1
2009-02-14/PB: Sync mit Original
- 0.62.de.1
2008-11-09/PB: Sync mit Original
- 0.61.1.de.3
25.2. Danksagung26.2. Danksagung
Dieser feinen Liste hinzugefügt werden können Sie am schnellsten, indem Sie mir Bug fixes, Korrekturen und/oder Updates schicken ;-)
25.2.1. Primärer Dank...26.2.1. Primärer Dank...25.2.2. Sonstiger Dank...26.2.2. Sonstiger Dank...
25.2.2.1. Verwaltung des Dokuments26.2.2.1. Verwaltung des Dokuments
Als Neuling ein LDP HOWTO zu schreiben (in LyX schreiben sowie SGML konformer Export zu DocBook) ist nicht so einfach, wie von so manchem behauptet wird. Es gibt einige sonderbare Fallen... Nichtsdestoweniger Dank an:
25.2.2.2. Inhalt des Dokuments26.2.2.2. Inhalt des DokumentsMein Dank für Fixes und Hinweise ist hier aufgelistet - und die Liste wird mit der Zeit sicherlich länger werden... @@ -17353,8 +17234,8 @@ CLASS="SECT1" >
25.3. Zum Schluss26.3. Zum Schluss
Danke für's Lesen. Hoffentlich ist es von Nutzen!
Ca;UY%wY**bxy{KtN#Wii)n7Xkv}TS0>Gt zm^X=nf|?jBV(b-TtPuq@c129FMD+JPXXZZl-sk=O13Poi%$zxM=CnC8&;36hck_<1 zS6x(9XiFy2iF8}4t!-ReV%^mjUESrPtIICBy6Z((cl+bj-t~QJvbokoOR|t`O|_)* zZLJB@eL~nwaK=Od4$@sRGZmeMtAw4^iAQSp`emV+nIR7q%v(u zv)C23bOrncEo4p0Z~@O-@Ee8;c-~@OzK< y&>dC?Wt-@}*vM|g*qrQKTG z=n6MJ&KG~Aez|MfNbeV2iXi2qrKhAh^+D-Y3u$w~eH32Qf+OPoV+1T~uDqWwzZt`# z=F$$!im~3|U2_?S%(Aiajne&NVGsFZ*f`iDmvJPxX`Fsfn?2+7d)l1Ts()n7R{KZZ z{NfD;nKWJiv##0i#>*gC9kS6>wRz2E^E|(MWr`h;ETmd uRv z$XwOx`R22Mp68{~`PQ^~dXm?q{Ve{}Z!|mFyrDhQZQ0g*ODd6XO`7&W-oWa7ga?wT zjL9dw(dLG<=k<^snr=xY*>4GNVAotu>D*{GQQGi;=k-jnok1v{WFxn>c+EArWTdlf zTiSF_dU-z~y=2X{{$4{FeXt7~&3Q@Y)H1{?H?t4&{O 2o%%vtMYlqOd?glj!n3Il2_j~SI`w`G>z#1ESq4gB%P&OlDV|GVIQxdi?T_h z`9azn=_ON%*1XxA7D^Y~ihY>&Mwg{?CNaz#R7NGjp~)PZ@kVuP%K=>bJqx^nM&@3r zP9fn;m*G_B+48^WS>9-dWGx0>bs}4U%;{Vn*_l8lvF`Q2IZQ7VxT*X5<=rz`nNTKc zo*vF}2|(4~AoZTCH_%MVdVWPZ2}RNnFKq_pyyh|>uFrtN$vK%vTN;+Q?J&h5YuH{* z<{_YL(?nM0pGdT3%x-O(H%qgSb5!18X-*yC`Q=%mIil&gNh}Qi3(31A&GNC{kjk7e zUNV~m$$Y`AKY&F6qGMkWXg`C0HV^R1d!- |lu z^! ezr%cZ5S>g9K4<^0xvP9an>;~1x0IJ9csgs!kYgT)->!Nah2AH-( zuw D!Jkh6?1Cn*yegRy_J?g*7lgB0lDv856~B4IM4*%) z>4LCmBA0^lH?%U{lq1OL6B%mfQ!rm%xicxVoz*PZ0P@C5FxhhxWxB$eNmedlI>y`f zZF`wWc9J)&iYb5tVkXTlNID#7zIFl&cReyrk?4_T7hxf=qU#6BWRN+!DE@)6`1Abo ziewuUNfl(nA{xQc>B+?hg5}gfUS&53-X?NU@XMN6J3!%Y@=>U@A>oyGM*yMAF+D6L z0BW2B74|;}JgvM;<&e**LdvvHfW-lr^aj1$1VDwAm+YmS$V 3~YnB}% %$yMc z+FXYI+cp`9Bfkg9mt_#rN#)_T4Ac W=SuL(NZyv0D@D7G@}7HJ@uU z2UH dWkA8V`IpS^UX=lv1%R9mw(WS@Cc^z{pRxpPaZ-~ga5rC?yX)?QR z^@jA!s#Hq}=UJ)7S4HHeBU!691X{Ozj*VyKSuU?)rq^UxHZ5$Fq K^Cx?W4O8eNokJ#yysODaVNl2BIbf{JOX?O^nTImH`D6IukSWkprLT%S#0?}z z RNKtNqfn}W_B)r#a`Yq8 z$;rW~2YcPCqXtAanKUl}W><9fI5sg3MZP7INr<^oua1N&s+>~O3~IuBNaBfPLXjuV z#+L|blc;s_+q7bAc{n^Q@A@W1G;3xfs?Dxx7Nl1hX7Y8d-oSx{M3i2cLZPK?=7b5w zWySJU2@?oOq^%Q@1r*Ejr~Jm+T+Z=CBCATT!W?(Bcl6*2M6T6^)@Gudab>mQXPP&s zq8pz$+8c*Eqh3x!*F+9m<1Bx$xnZr})BIwZH@Yql0TU@Pg%GgfY^6=@0e)Ze(KK&> z8Cm1^F%M3K74xd8>x4G>7UVHT7#lp-QZR!T`2GC6>Sc54F =QI?fwoE fcc{+5{O|GJ7|){G zaw0Un_ISUKeqA@)8*ENL!5enC(x*tdWSj7rQm)`^q=Ms*g5!&Vn~v~cI2~~dYuKru zp5X0gE j7lc7YRL@ f zY+p>zf#!%)y-}V{&s;wX5 r`({y-q$PQ&NZ^WHOmqUaqksnY0U; zOzJ`g{D{;w+m2zRk1zLnmnBnX+X{rxW3#-`ExOQQhbdtUrF%++(o8e8ofWOz!9RuB z-eF=LIx_xxwl{24N>?Y+UZ!E&D{B=oFgvej6CQn@S8J|6&1 Gip* zb*^`I* TX}5wm0|0$g|enq_RoF3UjY>8)O! zd2*RIR--WI4JdCYOXiCUG1~f?XD;`~SZx)qmTDnoY*n@hqMWX0Mbc>>JP<*3rkS=J zDtvrA|7^X*8z$W!_%I_MyaLp8lTVmnUR~}L%&jXR(ufu8r=2U1R~;+7N#=-^w0lVE z&Rt1ekComEJB6lIXzKr6iELW7${T0?yOJ*NUd8GixXN22Aig H>wm>?)b%nZT|&iy_L-@|Ig{2dn|x-<-vSSe`!Si?aZ^Z4Dq3)?ngZyT-3Gwligj)8|v`hoOmIKY#C$pIbK6Q6?PRVs}lHM zS7xT!ayDacdWnDFlsfaPbNK6_={QtRpW}_GQ56`@D`D1m^OdI*66GK!{*rT<$QS1@ zkwcfW#g8}_oVu=MB0oLX>pyr#Dq*z~4ws@sKvbE)8E+}m_7!x!aIH7NY|GK~jkVs$ z(TTWPPHCW3SSyvVhzG49gs5F5_3ZOl7L9}`UK`HyhL_GDX=kwPa}eDt;H%GL@YeIe z_TKZ@l)pS5`A~O0OYz+K@YZzsFsu_BY>U(_?WFjX)aiJyb<)AHopjLi0)T(s88G6; z3!q5$0%4|<4Y5?14=(UV6nAGTWp*7;uT$62>+)6<&86!w!voeIunyTY^((Y*Z!v(D ztYZkB(&P*2_|A3cn7uO*0ME+T(HCM^^!Ne)EW0q!<|@q>{eZQ6??T%C@&}+i?gzs4 z*HHK54{?Gzf53;se#nPM<*SOrM}CM^HRgwW=zbA(E9C2>OT3Kv@ogxE>n~!uAIsP6 z@-=ml&M#%Psp);OH@+zJQ)w0YgtISZJl!dOy4V}lJ?-SXIr3um;f+7?CYqmLES4rQ z9PDTOWkLh!E2Mi~!kxX%>lb^C4Kr|%EbnBj00~w !U;$0 z_N_~0;uZ#8b>b^8XP2b)QndFoKW14)-f%!5@|vh0(%*(CFY#uWXD(%ZFTKQT>Mxai zQm_<`Lj }s3
OHz9y5%#$5)YEW57v8i!#_wk7s$&$jJbXlqOEo7i_>Z2f(+Gslk##emuJ zo}Hgpoyy~hGC^^I)A*TUd(@((WVIp U!F3z=Uf7>XeRl?m^fUGFiB#`0`5r(wTT zF0j~ASto 6Tdwj(*XBz2itzVWR)zOA zS6t=Qbs-YJKfw22<&CPbj$MStwaYMp&^CQdx2wSUr1k94Bd-dy%~$J@9PeG_^&dS0 zZnm4rX=kiRTUPyDbkK-Z!V!ba`9Jkq@LSbUx%a0ig_6ZZcR%jH%wVyZRZ^XJwKuG; z#AAV3OyWGSeBf$!_U*gD@{_9(od5VKatng=wjZ)r E~Ww;)^g?lX>&!aHF*piiAri%(@F%XW;tDafBn= zvR`<^ZEPk28BW=5t8^khb!SJ2Ygs>k-m3Pwb5|_vIDKhE#xR s8Tcyv+Sf8f)7hpVYhF_}--9v1A^b6wT)1P}y)p2f4n;Xw%YO}8Q$`dQ* z&0WyGs&&rNCFAF=n73@%ycOdYFYH*oX55O?=WsfhZe6fy$>LBfg0i^kHAr;pNMOfH z@YQ_wbFV>(A4)_{>4U{^R#DnoMHOjl`OMt#ON7LE4G|}|m! RVO%n&&bLY{Opul&**;prYR%YOw8Ft}@qe$Qz0xd8s`SA-svg-pw}z^GrX{pi*> z>{@nETr8!{x^HM0_)nt^2QpYd*Lh>UA2-_4>K-e{x$~xUQWuS5G^INKTS=5oDxVaY z*mSuc5pex=SRN{WKcn*&Wub7&Dd|c(xBfMUSQ1x}IW{d^c4oG9?!40$ws*94%v%-Z zD DWy(vj%hKA@cnKS<2|c^{f4qMwMBFGsT&arI{$BO zWRZ0KX8Er{O+$lfuRnbwb1n)FbM3Fa;hxgibomW{SIlF@KlwGRfm9e`T7QE@T*B~a z5#NpG{NG?ee)$_Pnte0p3J?Fr8&;!;hZIj+;n3$M#aIs-8V=?#G+2kU70c 5BQ| zO~-G&{$=AwnO(nSs;^(|)%GFs#j *Z1-=a^P#0 z-wf&1WQ+)GOs}Hr+jcXfzH H_{IQUuzQfW%r~?6$^IYWRY1Meln-D95N6w+48K{w>Ji~ zY_4!-oJ>HO@qIZSNR;+N5JzGbv$MXW2|y$k9q$ApzbRa9&B3rM8}n&KGp}f0uy9%H zf`toLwVu8(x^(t9qqq1k;A8`p%7aA2VEwvuNr;GJSjgBofbP-@J66qGQ7WFzjiYeA zQmAMg7VQtOLc(a;UwPV^sOE;-EMNAiU%G5whae{cA)|z1kb2N9L&=WjHm4?AlRh z+QxVylNCCuI ($1wwJC`DDU5N^ggRJ;-=S##3 zTZq#m58crW62}6#qZup >NXai4yNM%Z5=n%yZ{1AnbkXhXq{>xTN^;n5ZrbDx ztu2(u&4S3ydh^*P?*LP{1Ne=@37Jg2)f-l8ZQ^jWf`~~4O`7L!MN+k|W^~mr-EQ-S z)>zv)gtrm4AmA|Ath^Jubmu &2*QiT}?Q3E0^a_Xfd5y`^urAQxWx6RViGU6jaOP=ET*AXX5I7-6QJ%^~?6 z-pJaFjnx(DlrcBH1YxG%K}rv?is^yN^|L#?p$BEGsT~5Voh*! BV7Xr*!v%Ml? z<8wv4&7O1oFeWmh3x@SHf1qhQADWvxy`kk9YqFZ{e %wy z_)kRI8Fw>7UGVGw$O>+`+d6u6rrVzop Jd>7v1efN4}wMs*D%KKCPOn=AU2RZM0(5op% z-AD#e7iR09yn0+joS0_w<)87T?Kw_JGt*@U)0lQQYBo5_@y(TYvl~jza_CV5P`mDC ztil8AhL5Kax9xwAH;NM!*~Vd~DcR1t5PE=gOhrabSovRPJ<~k@0AV3D>u$LR@(kI^ zgm>M;R2FXa>T73^JtRGb3w6PTV0qNNtit;KOy#HddZT@7gqfor6aje&*5CX0di$WW zx5?4o*!v^~r}AjRgbmvmO{3uEKCd?*8i#xw5OdKsrgO;;SwM|*K6^iZCCcElIrrmy zSbHv OQj%tGo3A5NO}# z4I5lypAlyZme?wZndaU{!Q@wy{R;EUHb~O*F^at&0 mP$27+P{V z-D0kPh(*vK+dqKq9)#0O{&DIrc*y&{S@k#_DX-uB7pQj6 +3#;!A0t>)V##F0lF5L^ z&PT~dxbiWq-2qS207K83+U8zbO)oK8GHP(>E_3=g En#k#~G)OGdAj0k#Xuc zW7Y9Yv*~H}$80gonx0`g>xK4no`E~{Ae{(%vsu=PU>yAfANoG))i=z@So5SJW37wg zPIV!&o1Wl|L_=h%Ub{c(4J{3kWeAb&*^kVUQ=eq?ExTd*KRk&dx4J2$yJ@Mx=~g|s z_elf*dY$x$r@T?V)n2A!d!PgLdzV%0ULEz_r~a=}htYKzGf#V?FbGs{o%=M)SEA8@ zQ|&cz3L((lPjki=YV=9Z{9ldEW|uQFMf1>SLFf<9aN38nD|V<#{ykLGmK>kScX5J) zX8W2oFOZkA_zV_atZ37@7oG8kXT9b+a{psOmZoaWT>Bhai2}JsLn`GM9cvP|ijx3) z(3~x?0svKS5L%U+Ber|vq_MipyPxyQea(YO%1Lwo?rJZ<(dLL3S)twAIl}nWi{7y6 z1SwGxWEbl^fw~vR#k~C@G}3uY{wo@OE6#{H{3UN--!!p3g4Ib$mqBG?h9`(dZkbJ+ zt6su+0DQc82S`aw?p`h~MuIyMUH*zn8uPLR7+`w608KA?8K_Awcz!R^=&-^wnu=t$ z4<`fXsh7Q!`Q;1jxW-ptrR)DH30H*dGiK@w;B(q5u=9!+QK!G>b5BV=#r>4C4zueM zl<)3Wy!vTywKI5J+%@A2ql`0*GR`o{IKzmn0a=uatTT*A({*KQNt=GJN6uBVW_bgw zT=SB*ug!CA?nB0Gz9q{&6;k8X9n2yNmcNQ4R}%Niy0{mnFS7Y1M4gxmeZ{XKc|kki zoP+6v9XRFZ4uGTsIY1ipDje1RGLrO_*XU~RzOdTPi^vGaA(k)^`M)oFjWx-*N+&6^ z6H`eWcX yt@PY~7 zhKrwk1J>E_I)4!{ZtjEQoZ|dWCQfo3eUj~E+4;;j>GAO$K)>}SBC}%$xegZ4-oq#Y zj@*gndSZt+UaXb*a*Ss)qAf9X2LyfIxsyJZzQJax+eM!@yg{Nzf`yh%qK7~n!-yY# z(k`~&_P5zeSMBmf_DN`VngvWH)3WIt;4TN4HY4AH%HO?N>@dxCB3kU=&VDP{&(n7j zF30*_>kX+&a3KIH5_`(A^=+C=-?y2~yE`G|gY(&+ZMz6fSU3rpkl60ve)BdxR=tJT zxqKITE+OZaNzJuOkc^5z(IgWXP~3ep_Z l$J#_a R~p&iF$hE9li5`5!%!{t ; ziHmX$BxP&HJ27Xx$NrrBu(JVr!JzP3T9SYZX4$J=zXPp19-^XVfEWZ>7lh8bAavFR zp~;D|;>iY~D@^TY-im?NAk5kjT1D2{Y5Z?Z^$qXCdr$A@)z(V5iR37zLuf|QvCIt< z5WJfYB<-2&S-brP$+p&Wy!-!w9RBMNVs7b#Y!}HnMotiROqof$h&fqHB}6?ZE6`|; zc-I?;(IzWUqYIZMI) B}rs08CX9- zva-^v)|x}Hw#U=<;`h8UwAD=9=iY;P?IBE(U50EXxs|Ld-
OJp!OO#2g<#rPJS9(s9AtZiax!+LB z^}{%S7!Ev}46PO$?yU{2mfIkbgDd-*wkmxfX$fh};Ax0#&NK(HJUegohE_??kKGGV zAWc@&*y^~r7$1zYP+`X4kh0d4e~L-+%~^hZCGu6GauTr2WX$rfQBzqP!U>6LG`;q= zkG#Xpy`RFs8-L^VuTFDp&H78Y7rAQ1B_k_c!lo|lv-D$5L_QzyH}&PvgaKV+C?!JK zHfG#X8cjQv+4`T*mTX(@uE|v^WQttg`E&*zNH&NNnI3x(eAj(~-+9s=Ooc&Ta2cj8 zWxCA7;<#=PV&}tu(aWKqLWQsPcmsRWhr|wrg_8wgDDunNYZ1B=KM#Pv{1k<{;d3OK z>=K)j!GzNZ3FtZK*FQ&2w!BJg;b*%UDfdt0sU%&%-zXf>O(Go3dH?hdmV}+&=5PNL zV~Yel)*4A7nug3okAa*11 `2Y28-rIiDqK zeU^%>J+$Y4*PjcAne}D JirXurBw806(5lk+3|O6UWv zu^14m-1x=LuFKg>v9J@DD#pQO3QLW!VY7Mg3rUaB#$;)T;0PL9Wf5(xj)fdAYeG7c zUiTV|qb85t0OGp|Bi2|26Sg&pQ&}#J0^I&3+OU>fvc4SY! c|%%jur=_D zD{wTu3JA1iwm;Ood7$rim&~q$h)1zv2qMH|$~j4Vb_DA64L1~1>Vo!3YTi=D+Bb+v zP`5pl=WNK#)PBd{9G>)*s7RIB{0*8*4rQ@z EwumX3AIQI%#%fonJem zV{xlw9<;8Wv$(Z=PU~s!p_@aqNPHOQI)KTuKV)*b6ieJaSHifxbS^8Anc!e8U)r zKo{NDgZ6p@uxB+!E$(*}7LWL%dIOo;Ug9OzCzylD7Vcxq+P~0~K2Gidf%oa `fHd>H#iLyECWK(aW1v%>gSLAGvp8wS}<9{1f$Z1^t7|J$Ek#lJXIhTfzb7=@U z4O>?L=<*QEcYXY`is{|(?=m*g)fN7+Vonb0r9mS(h%B`5joS&exe{9vqKhp#Q|Ka= zq`Q|O$Gd6T$i0NRT!|scwL&!{yY(W*w{sf&%o`WbNzRY6EnIA{8l=R2#15D1SqD@S zc9RH0cN`5dYO-ecMScT=#BD|f!Qp5$Cs%Q+`SnUT2*Z&phq6)SHW$u3w-QK }EFyn%Hd+s_}^TN6l-oXpOuP11U|$i18u{SW~fh%9OLR6i^?IiYiY3_%RM z8SBTG+Wze5purG~Huzykl_YC3DXccRV67gHc{B!Tvh_i)8q1SRMy8dra$;>gz3yoA z>+R8^wfE(!zoz+uutYlg3;<|x6Ndw<2GEzpeY+D2gri6bxotTc;hq6Z=|4^W7}L<; z4|VcU^s30m#3)2rdxMXGoO6b5&KbHnXXxgfp__AtZq6CHIeX$=k#i}YIhW#@vtjCr zyp1{YzcsM)HX>YMP8s5d_iyBehFAeO8{JLYKwlnlP%A*gipm@bjOgnouz&L<#wKmi z|9WuVZSYxVoz=Q#VaI&ULzHAT(XNqH2cCPu4z09GTZJ+ vbB6nJP^*f35E(kE#tEO0vx4{}hpjwsElu-W z3sciX2v(zqY1+q^<69+)JY&*JrGUKlB{;*zHi@?Da3F3QO`ZMq5VSat*jJ&fJ^3Gbw zJ8L2DtcAR@7I-5=z1+OB7I>4wm94dqch*AQSqph*E%2^{g>%M2-d;d)Cwg5g@ 81K)OX5{Fa-KXO@%7GeM zkoXNIW^KMCy2}#|XD}kIn$1OR{xF)_up`uDFpa&4@y~Wo>UOWSr^4ZaxY%r9Ab94% z1eV$JLs*qTzF(=~POhHFE+k?ld2;!ZFm2w2X)&98b8^z3X}%f-)t+wf>-x~#UjHGt z5?1E?kz`|)0VN?@I#GUVP5INX=6CInuYs$Gh0Ug72XFwz{5dU-$0enim=GNN42(oZ zq#6oxG@v%PdaLB TsxS({ha;Gi)vZyl40Z6_$@ TidLE nPS7zN`suRO-UXg$ZE;}Zsk7ahzb4(lS_i}#^HXwjfo*7U|fl5 z3Bt55F(+Iq!3Puk0|a9-1N-ta2RtCh6KGjji+B%lg&PNBjFhAbqJku`K#h^>C;EqB zKBG6uAts8-fh7V5&c&o4u#PdM8?GeDfY;2_KAS$tA4Kb-MNy?D3}@}kozzbaFO(Nt zV&SuCOR_#@_auKb%_KBa#q9;q7STvpK5eF^{r)v^qk_SfALt)R1Ia0<=B|gxV1xts zVH4FJjZqNf6*zy2CYoyT+(9@kKhGjiBvXc%i~8;w$CH@LF(QSP&x?FmFw=epZGu=H z2f`#0_C^K}Q?ae})qrAaWu!=JO)gXgb@(B0Bl(2{UC5{xj8%l=F)79+nT7?u)uX3Q zRpuXuAPxSU7qn~Tj6@w8Zd=GniFj)LYD@0#&{{Jv2xnB89~|oMXJg9hnZUkyYx*7- zK7=xH!G)D~6<84sD`&n(93&BBN~^rlM{3BFW<~n>38j*`az7e8b2t9oBj59fV3a$1 z%dceNCH5q&gTW;s)w)7S2pPeoOw-bhXwR&}u=6h6pDAi)idbHioIZ=)Bw-US>2pR# zA0@^;eQ0p+!^7}xFx`pAa0$|eQfN#1PlMmLM 2QCP88Ok<024Yu3`yRb6uZtEl4i-o2y8d=#o>gk-kpfd zkV(jcWvFWn{L z?^00mE(L|Vt7^XS^pX4D28(!v$d#@6=bja+;FTa-?`~riG)Oh%7(O^a7o{pVyR+cz zPV@2 0ebtu2)M@sG2)ZUW!3|ysk5S{s5~RbZoz;xRmb>*r{k7rL32fU zif YhcAXdu_6*vWN6EhS~Rjv)!6|8X{BI}HE!Ux^WtYiFYT4RU~>uJ3daW~Rt zGx=z=jN4NTsrJ-Aj)761JPZOI&>Y+=v4*pau%u1R(MaBs>*U1C#7JL$EWB{i_i21N zS%DR5{Yu6~%GBK9)iY)ZWt@@z&9T1Zb6dta&Mz+~d`!^VTE684Yo?o7hX?HQljHn> z*t b@VqD@_N`O}*)NS^fQ=!Br zFF2cgi)&^rN_9Gj?IEj>CdjJJLWxmcD5hK#tixJSaQU|dmw#Ju`L_j^e_L?*w}p&7 zlPoxsui#9+f;0IF&g3gNldm8qUr$oa3NA0hJac5=Yfe0YB^*DQBD=7AR}3$4$p)CS zCga(+ok2S3F((o>drTm1I1O^MzU-TfuB@q^LQr? m8s$X1`O=XE#s7XxubPukJ~TK+4{6B3_6IXzw`DK?%*Qi7v?|Ckgsu zQ*rG}{Uqki=@NI?AXKS=4yc+`56#4h=D{_&t1fXxqRz4xu;Ngv*w D|PbDe}?)p%{T^}kq)md<=v*1)` z!K%(6H@RSM&1=ME<8gK`3^o5e4sS3B4)ryK @qD;!4nfyPrS9)iS9t>A z`@~!fgcDAnxNa^R?79=!8}EzId10 f9%1WfZhe|TL<6g nX^xtYgXu1{pF7_lQ&)1S zJ;AfZnq#HVJApPoo{r$2{58k?eHQq`>PqgmO9R!x3m0HyHJl9Wl05gNZd>4wskKH# z6cet}G?`l#a@_cefNI{_u?xY&+8Ghhgq@qho-+g3y; `I= zIHr{#^oAt%?L$id_|vJdQC$ZN_1{zJW8f-2% QPWjHfrBxqY+@sST<#=^bJ06w&xuX~rl+*h=N@%QEO zS_raWIUO8+8cTD3KS@7a?vLqR63OK?QWdQY=F8>&D6!5!Ot{kFG085=ij;X5dOx znVVL?CX43KwYn0_y4<|8!XM^ay=gYh!K~L sNhilDctC$=q0FJUxtn!C*w=|}zK$-LN)x;(~ zo(HB+uR!r#w3;mvJnG|YOdf=@Q)^re5qGcl`^YPvHaab *aTafbP_ z-9PMbc*-5&GLkjl`NP`f{9&aZe^?8iKdfcWZ~?G2=4P6v`7CDJRB~!7&t^v_&qBB2 zs}pI}m!(a|S#a8K=liV@pqI|_2MC@L`ZB%Oz)86UF@Uveu 8SDe!HK;KZDPZugl3H ?IzfYet`i&y@z}K!K_Kp!iHeoH(hV0u zzxtIRAV&nfh!{u!LmdRuvc~V<*jADxkZ4omL-o;pi~I>o*z+zr%bEsC$Hix<2{e>T zU8E+^Q0`0@)B+9VPIajX)R{ZiWl-&zx9(P=v){bfKVriwcA7>yHDHq>N=lZ84cM5& zR{1IOn;+rh{ 9O7`fK%@`DQUYcB$fM8eK)k(9jd=GMzNPWez;Paf~p z^@cdKvjGQUiiF7$X7C!nzT~YDSWknPhg^;uM*I>b`T|Lh*7??Ot3B8}oVh7Wg!_{? zlQVhv<`@VrlX+KA IzH{c|M)}Ztz5NIVqS`YnRKq-ukpx*b5}|$#U=83H8tk>EBsuiwXH_B&+CA) zZKD8HY+Xe`Ds-~8B9WoOhNWCZUMh5{ZACII6^f*-NJ*zQvgj&OQlUIKvb|HrP029! z=-+~*wO7U2R%8+ap_|NA Pf=XRV_gj7um zrZ!Teqj2U)g^fnJ3c 4wTPiACxHtu5~GO|+keAiZJ ziwL4wLDZh!IshS|RX|j9cEHwxs n qNcL4lDw4H(izBp5oF1Tn##&j zB1OVZW$(Lp+$~;;hs^ V6oXp-Pis>j^hmneK@pDNXL=f$?nlC5nf=ut?Y`I_{6(LPUNb#mo z2q3JVjOeJG$bw` _xYB04HB5+`YORHtntlZ)smQrDy+Bq=FcQV}AW*Xc)86v jwWLMlR{k|QA%5ma^mM06C11OgG# zw4fBSnJRYvoHz qfvMJhrerQ0~7qBtKDfDq9_R$GLK7Q|HO zOh$ARhXm3lf~ihFqM{0UVKVDl>&g*nmWq&12{}^{(NP7(EYwjlvrs{GB6(%dP(vYT zWv)dH)j@?Yvi0?3P(-heQN$C`E9?Erb{* *kvA>bF5S}YO#c?^;k%|!4lp-H0Da5a! z8Y(Houl5>{l}?5K`N77pQ{e!@OOXn2@3gPXTU>cJ0+3KmA+rVf(3?U+3ud93qCyY} z)f6II5DA?rDr9LwHARIsv8Z+mKlAdWfP}d6)UQ;8xTeKv;WdUL^1PKT6(L! m8Qj4pVnsrZdY z!97$}R20yE?wxttNlrjQUB#;+LdDRZqCz-6)K#btAwa0BsF2Box(f9n{2l5lDug1c ztE~P =u)eLnNI!K#@RLy3^{&7#Y zD*?DsEES;);7YMngk
$_hm$or<>Vw5~rjf_$j1 zP;ElA(4(S42p?)IF2V{$LTyEb_7S4WjZuLJQRRM^RD@K`b&65IX?>Bea^hmU*U@!0 zIq@L51QkMv1;j61Mk*8{Br8{*1R`WsGS#Ibq$)YhQjsg#zbG%6jSaf$xFpj^MTjej z5mbae6+dJt^NlF1f*5%GZebC#f*2?KN>`*p*2)GXWfbJUl#7_6WVA&QQ&foH6}nXD z2OXqHROGbwSwxhdSENZg^r(>2jDnC0(4d03@p?&d{i&f7_u{!ChVLvDMWS*mk8$lA z=qjy|?a+|llni?nQ{6s!ZXvK7q#{IBRc$(SsZz<#gy0(bR7ih_>fSC_M7UNf6-A;V z{iWAXT_ODi)lgljtIs9mB4Wrl0SGb0w3P}t)$u?2K}Zy;D=JtB`((JAjPPMPbgELq z?PTbOqll@V4wV%OMQ9o-D-?=$5z;i(hWv96bL(VPIj2Kqg+dXkhmk)NijES}6tOK3 z;qs@1UZJW&oycTERfYDDxms1F@*nk~HAOxpI4=+(qRc`nLXv{CRD>i|bw_}pNDk3< z{D56pR }rE xP(x86qzE+>6|$(R zp{)Kvyh%lfsYr15gtg+OJ1g|1_~ipdt4K{5Ak +Fy}?X(eFjIHh&xg_=l>Bzb%}n7>*;?p0txP^}sFlCqX% z{-F}$F-s{I@#Btyl#BQ&FNX>!qgyc4KN%Gj;x9S*lTle3YM+d5$WZxY#AZ#0x`*GF zlX7u|d0$D&MIosHA0B-Q=#v%W%sr|r)8UCUDQAlFDv&{Uo(+xKCT`KzC#4BxQ9* zVH}Tll|~U5FY0k#Hj#3OpfId^wO0_Z;35CzWEZ*DeD%9b(7qF_;#Z9g_nNML7crO# zT_d$D+$+2KT^P-i?%t{KxMJ zOSy<1ztJn@5IymNGpLn-|MQAa=mKe2B@=2DlD%mVYL$XS4Kkrp5if)wYcSn{xESuO zT_G1q{ZcOCM}oeTL;fp>p38*#L<}b`q7?hn XL#IIMgK?%;7f>iUTOYLq(#Y9iDV4eiw<) zudB3#6@pQyMhddyaiPr8oBctZ$QK1XZRy;z?F;jKv#UF2LHjZubsr}`=rV8R%2j7C zo3~P0+O;lzUA=1QoTVM7FPy)61wRb1v_n8Fc>|Es+E*@|qfPBBf_j>n%3J(CUFB`w zy*HCmGw~L`XV(l@o~PX658;o5S#gU$o JqpDeq(D`i(Y~x5md%oUp&zSm_q%iPXxSFBKytU! zH+Ny=L;31O0>wMy6uPfo*)Ang0&ged=hoZ(+Oh<1UES`FlOKxG%8EO UMvC z-zv~~v)>)0NRbD1@*O Nd_VS(nK4m0= ze0Qf`FPB&b{1J+fTD|TrznSOFQRDLGz+R`#TReZ^>LpUc!{5}HO@H)zl%=@JK%rvJ zf`uJ2^%VDt<>R-1gyLL2)3)>Htyt3D0pDdw_EzwPtJ)W9nWs7c?-5WtZ7#UWA5^)d zeR2EQD;G+KX;OEk!)N~FmzSj#uYol@kN`_9Zts{2TVY5jNY9R?E6!?{UP;}j%^)-R zF2844S}`2dV_Ew`Sx@dz^KDGmEbsqF$9Db5f|r6@KQbV{X8I>(o%CGNe#X)j Mw)u;7=XWci&CrQ)omD;AC8H;GoypU-O!^2v$|SbokpzDrHoEd8@Tplg >K#(8 z7D`ynFQ3Uz(ARPL80&@lw(Wl7L=O8(>M0)MP*HUqMMce-Sm*2SAq}dr)9>jY!mp~+ z>jPBOs#z0*tG`#OWuB4hBtPRuG9jl3rS;QBdJVl@`b@0B_1cdtUab1m2T^)oUEue! zXpjobq$d*0jsvQSc9YXbvZIqz+bGg2d+R jMc}i#B6J^LZ#H22{nCBOq_gHqsaA_B*311*%BX5t#p>S&e1aNS z#cKBsXptglt|+lP?1ELX^W?jj&j~X2UgI9I!#&EPX(cD4BZRJkY0Hkc%%kKmT$6 zSf05Y`6Ivb5aA;$M;uz})W*3@_-u8sn$N3*& zvu7NrJo#h4A}bkdf=!fd)Fz8!qhBK(bE6MtWI!?gV)eqL)W>PUW$Npm@*6vC?ob3? zz=DmaZf K`xtPHUhy^8@EE|R&t-leOR=n(xJ?jMkrzeCEVlI}6ti5h z7-bcou-d4_H7sE*m5GtgW59AG6P P-(go1 z)D3`j_2oVOz%s@W)<&%AQFCN~yjlFI-^it__{!Q~k?V!yLUX~ryq9J}K(3b8h0P{v z%P{vplkwlX*RR%;SDA|Gb04VjsreDXUybN+Sn7|U-gE#I?-hk$uDnmiitaplH2z*{ z%Wxi^mxlk=-qYq=?LEk$cAFL;(T9UH!V(!Y+9L|aEWKZP#MEUInm^nx_-1+QjlxT= z(CaZlUIQ(~ek7?^wXnupiq$#V763OhAAk%}+S;w0rz>p9ZWMD@P_nCG)21R_ zBiQw1x>zj(&fH7S6Sn%*wK*Fn3l e1gVP9`vjDRoy5<@pizX2mNO45+T}Teg_OC-X{^Q%UOI(5LlPY z;hGUS9NB{814MyknimX0{*K+|*Kk2W7_uk?ac-w F3vu}NXY4?MSMnQt#6K?M1YUU*~7!^#_3Gy54zCk3S|q;%24esvju>s}QG zjN4B<7H+$H10WEOszc7B&9@Kh?D&<$XX&Z%h#RFtN~hbB-EV_zPFN97_X>F+z_?EG zi1IQwW(D6*ifySjjgR`3aDP-gVSnczMV#XJAN`ydU?s~yY(%T$Y98o6P;H)l)URST z(GE#~F`qmtv*C3UG0M$|$NXvz5o4<_E=hFt)#@ouN}6ICL&Xw1hj@eX;;nR9;~ttU zZbkFVV@zErE%M)Ve_R%h7PZe)$^<1V9!ks>pl;Pw(-2hz4>aIsw7!ql!NZnrJW`&_ z>mu3WXpop=dLTt~ +|(r4au@T0u;rx2pm8`A8uYo9=76Xm#6q~ntmYHW<# zjmqJh`S1y3d|TUw7lc4@qk-2amCdM+X;-P=_6|Ls|D<%EG+%oN@>`x{R`G=qUVQ3F z=|63%{ze1uDX5sIbbSWDizD~AeB-eSMMJ}4#mR6)Wx4(Gr)0RS!LMpGce}#iHz~a9 z3cDGEZcDJu8g({o;#sWQ!*N2)lBcCxr+|Lp3Oc{XTtSr4BxG0|-I!;pZ=XkbP-AP6 z!SZIW40hBr3`QJC7R{`EhCNQ9Do^1LuCV1Lz+P0aq+MIx5n)$}q^xb7O-GAXo1FvD z4l|zhYisO*vs-3PJI&f>Sq7|~O8K$wyPlPC(`M_-Law+Kz;U1X*w)9ikJJx%1=J3B zPG*obhnKPFXSjl_n=xA89Xr72Hl|ZJG&DQ*7qs=%B}5yAq2|!Q?Qo|(LU3r~gqjK4 zK^u^zS-5%4cHtgM$iyb|zm((?TMdICjw{uF*Xo%3k*3{Wqv^Qk+3>NkL~l)g9;+%= zE4J3z)Rqw`Yhw%5@p}|ej^#-~(~bhEvngwlNhQq(GEmiD{pxCat`STsW5)i~9~iGB z6g8d7GJ ydm8Xc0oimnE@}+4TRRh_g)gJP&$fFwK{%CVIqEP z465T|gjmCr-H`X`mmn{K4HK8J3Wb`Olg%li8SpX#1ER!@2OD_a(aKbk6k@DIy^7II zFH4V61B{;vFwf9qNi7!t*E$YQSL|YfnOB$~F1q?jHj^!!6ZP9BvxTmFMS71aPqL=W zt*;2aj`==t{p{Jr{QABslg*lex}u6!q|>}QU%coWGiu%QkZvKw+WN_>(tqAsuaCcq ze6q;^4up7&`QTNarXh07IA-W;el35GeOtIlA;U58I(PI&@SOJ=h~Y(IX5f=*A#HZj z!o2JXm7<}#{awJ)W?u@t6cWcX=4xUInQ4CqPv>fy%d{zhcIoHOuAuRccm59d1J?Kt zK~O!x2!hrlWw5xYh-nKlbIh#Q?O?iizj&R+!wFSU_~`3`bY5d0bvCOl(tqBJ!oB7_ z{J6-AIizHQnMpgOe_l>Ggmph>hwXARP0jD5z^RnD>E>^)Q1PC28b{h@;RRa?aWVJ} zI?bgw97dlr-jHt6W<4# @`rCJ10SJtOAF23Jr^&nCWw{a}}W`?<_d&!3|8;1>8$u!pJHN&i5rTX4iq z(KnPnBx-2RvZY{yX%<|hr?j~lvCIfDX&4V*leJ{_AaLn4t*dLs?9w698vEnN$1tJz z7D0-{MYD$OJu@G-@+BD{LO7c*7eOcL5@>pS3^*=D@iJhNCR6zq_IG?7jttD$w-jT? zoTtB~80TfW=-t?Cd2`JiS&fxy^Xek#U=+wAeG)X5i?OERZP%4XrVa~A`*kUAoMMye zqCG^2qWQtm2?ZB;ZG6K${T8q-NNs!DO=04vNXl>C)_KPK3{FNG-w`031>J BE*rVgAc+M*Sv{XH9zXrWOlqGN(Z3CCzLAw;Yt#}GTDC!DflK)t2P zSL}h`Xfl`4rZ#>aA>hL8=6)L2Qi@UtqkqRgXcDjH=8dU%muX6u_%%(FOO$l16ODOA z$s9k6a4+gPGRyBJu9vQ =m3DeFbj2{ICyH5=c9z%uK#jo2@*yyw?|sP5S&Q~thR)#ly>3}#ajim|DIk#5tf z|LbguV6k2XAg ~9!h$9kLC(W<^Z!OyV32MbtQ(MF)6GnO_-f@)2i1E___t2v2TZH}8 zk7UHCB$MY=&-+ODm+8FuPe^;$M@kKTz?ex) %RUA-n~~)(PO|oYrdAL0378JD`H02-<9%=}T>FWv z5^>O5>S4(vKOv~cb-^gY%yzNt`;uz>qMuW}C|(U#@#)14kT@_Ik#XR75I+tqL6{bV zMc170;6RX_{we!MP}i{Qk3NN9@@@9lvIcR(g!;&oQlc=Tds}l{iZqf=mVe2zR_)d< zt*vbK3rbJPw*^572ZzuhB_5`UN*TR{6&*w)w2?ua4z~%CvHDl#h@ XUq +MN(uq*c?EMUThQbw67`;a+ z;I!_Elt3b?jpTUYtUa>NP`WG%l0-8qBmMGv-GAxoji9RzDfRqZI!?5y4VV8Me;~%j zX{@W0J{LA_Q+s_9-O6ObZe!pYnT*mpeipzz4C{D&%s{d;)_wyD1O6$aMwg7+9H#J3 zzlkSZqSd7uD5EKv5meIR@?wU>L@2)(B#cQw@t-33n2;V|e9fp5xF8tTWJdmrPXee1 zk2W -JrYrgQl}(;AqK2Bbz{IW^Pk_>vS)gy{FlX{ zpdo}ywBSOxe{u!!mFhBalY^h-vfhJDG>uF$YrTg9zL9RT*55nB6*OqVPny;8B)r>9 zal1lH1qqDyb~&fTenrA7V-4I(zi1vU9J!ZmkVp7wX^oVm2QB?}uMQ)B*QqlQk%~-L zVZM{jh%9Mg?6(vGw|=@5T!6-0{H+YbWL#%4LQ1Sv+wT;pBA%7sNgLuy`fXn=!Him( zZ%b}Q|MML~AyRGUdUdWiZ7z7&CZ7tB>+PDxa=MnoW9D|v_od)6TCQ2`zNqy`=4o`N zNd(c25tEb>;@6(ODOZszf16QVC=dlAV%KO+=px;sx+Jn&M~-T=+Z+)aX~Gk@F~RQM z-gbL~!~?Uv3mYz8ok1Y&rJCOPExw*e(Og-1&G`7v6LTlZ$Z?G<^v7irykgUmt* pjE72Y00g%*{7R)gD~xf;)up|F (<^I{wau#46tX{F-&J3*w%L+cKJ{y4{A+p7 zt7IgJ4c_OMH&@5TC-3%sD#4tnIDZ@vU#=KzsohIjZ;XI+AtKS7S1x3Rl~DgY14~Jw zQ5W=si(f8h`%sXfjNiSynh>cTmu2JGj_%#DCNrzMEFg@yn}CYBtb2J)O^gpE1^$-q z<#PHbyRF&0M*}GcCWFWTj$;_LJ;_5(^kC{T7J;26v!n+^E5wXsNiV*<2ir5g;BqE- zH`TP&h&NG Aoz-89_;zYC|t!D!#!~%?HFajlB~U zSR0a^65Tp_V bZt}GXID |d;FMQbjjKY zCXay=IKmXSCJcWXViiV5d}=})&MW#lGvv6k@1zfO>IW3!=){c#rx#t!Ts z?w-b{Tyka)6D!yCs%Dz*hejQ>ct*pFMPigxbII0Br<#XPqXUtu9UrJ9g%Gxtg=F7F zw_Q9al10q#q-%9t^dN3PO?gdMk}x%LA!iZ?UR>VWY#LBr(U~4^Uk`L4=n7J)bv5|I zhV|tS8H`5`vz8|Ehc2Z25dd3pO^wY8l0S4_@<#w{b2g~4@k9B;KFuY61<;m9q{ema zLIV{ja)*a=v!%v$?R;KptlKGn1i<#rwA2K^_J$fYNv DSV)-M$gPT-xHH~lfY*79PuvY6-KLybCFbo)* zS}%VD!1jnrY69S35p%&J=7L3Zj190XB3CozuK?>{6 mSXq|R?zc)ScwtV6*U9i?ZUo-~=wKDGLfxle74yL=k}BXnS^t)P?A1Z} z!>vp3<9*Zwz`-ISN2GZt(7`GOKjBAB03EDi@GE{i2M}}}tRfb$!y{Nk_uG8*94sRC zQ2-MFyG86wxF4(oI#@+4Ee9Q}BBq+F30Bel*cz>Zt(XrM(J4|s1zXXb6-iCdbFhe= zF7nSed$Csj2&NcpMU;Xa9z`Df;nu||^9r8fb6po~`04-A_0HjyHB0+&Y}=mLHYO8i zV%xU8W81cEXJTh!+qN-DemUoP&-Xsp_nv3{wXd~%_pY_Nx~r?Y?z_J3{AUpVQv>Jk zi~7GG@oTY7G4+H*M`!;FImaMuYvW{W c(~Ocn+hcVUwtv&|nLx8Dx0v zlUL7bElYZqSURBdU@kxv& w4Cln&uo&tw{VEq86Oi0FV{=789u!PmlfFo&}A4cKBGT=uayzC;69kqeMB%ka%x z=;)`dcYseD`}jkxteZlX2}%8Ef}RE0T&F0#uzi|kcFB*Faw=jNa =fW`K3+ z(NIcA_5S1?&Rzsx7Z6$M$OoW;V(_jLDA|IaZg(t8ncxz>xzUv1W5r_cq#V8vj)sT# z(FV&JbZxV*@^**?%NqVjfV~mfY$d1yr}5hIJXgz5Rm2_4r4ST5Q2cBmO+Td1gp)G> z_6qO{%+rWB3FkplH#b*c4qAdxeKHM FY_!!okFNFS zUh#YjZ6;q$l#8nHjv#!sVSy0AISVPbmaxwo5Vln<#ty?wt81e!9 1l2@! zw=#!Jt|~ykjq|hNn0oPkk89|XC3#sNWzk(a9jqKa=xOe@Yr)I_34xrVU&<*lZLiB` ziDgIh1d-pk)-H5jYH6o~TmXh%_o|nGO0xa}d!{l#Y9Ta@U5Wm$)G0*BkZ36uo{%X2 zP2R8Y{(t0UL;VYt{lDbM>|fu0O-?ev7sTxU%+24LqYik($X$0d+-~s*p!dI?A=2^- zbHC&2@$~hM1I+=gW`bu2B|bm+Ff=5er^Ru?fYeq(h1n8RP&Y8su+UVzZ(*v(@8-~& z-xii8WDG{!(+)E1=yrSc>&CaAUtftRB$`%%-tFH8`N>5TR*Gi&MUagT6%Oj1{i$T1 z)94hx?c^SZ*Gxhy-42W>l$fH1q>S~8D5RN`?8grMHvU@4QaFfKx))y$QPPBEr5Q!u zoVv?iP=^s<-5!_H&jiT`z;_v@Atj>T<4ofJsx)8>a*}9In#CNaY|LBHC$_kqE3KEs zY(q;2>Iz*+sp!lWd6FoPlz5XVPRIq?#T=(({6}1Qs5W0(PsFVs=R7H_l6r5r+?b?d ztT71BfQu~2w={CE{j^e?1TvKe%D5iQls+CKAm}>Tc)7G(15a}o5C~FjmJ5p;mr%Pi z?97W9#}ccVVb7;7L|)aVH_Fm2UXB-C=9}q ~v zT3FG@c`0JPH5MpZiIkIG>cm8uh;AsK>%v4WppNo;g)tq3=Drg9gcXyTm9(LHKyP1C z9lCy{8Y>;yWjQoBVC0a6K`B}h6=G8Gm?TW_v)C%PS8t(MzjQE`0{thbC6ihus5Xe^ zG~pOMIwTsTT#qvRK)!hd9Wz;!8haF{!rXTzaDyf&^AtFhh_7*}^YkH@nb#AK&~B<6 z)T=-+7)~3E8*7h@E)@J>0CBHHPJks5L9DRQlN-#I3gWs9=ovZ9SBBuy2BHNY5W!E8 z@Q*GW)KUV26Q&C;7AIK#)1v{`Oc0|S7cQzLCnHBi6u!?%@tue+SR4g-S1zJ=k KAK8H7nBoWcuM^6cDOn}gYMO!aotsY=L2d9ZP9KHZ!#9&WGAoZ`O zWTJ}(n23M1L?|+bAIb+;jz-mlYsUT(PwtmEJQXukC ic?dv6~p|O$w zfT7hc5==DkN7<6=VS{(7M&YtY7oZQ=SCcmZAa`I*(47ud_QpaEZ%7eEgj =rpVnl3I)aIyF*J6>w3Fa2qmTkp8{em1svBRPl&5DflM< zV?Bgp$}M9;YVZqHiUyQ@S_LIkga^V+Cv&FXx=^x;eeU3T0pFL(DPX47K?rLVO7k?F z$6+k#Xq7b b|tk2exAj-gBg;4wYQpW5l`SxIka^;a8!WB-0 z@eVoGIKqTFa?4OaXZp?iAMiKmXO9SSlT2X*bpAjD--pv8qx+4=1 K90hO^JcPJ 5*IVqo=s%njYNIaO0By09M0RrrTtD)|KMAUt}Q47u-XX#y7l6Vxi$q~JhW zu;bS>vx%q0`g-{i1{WhZZ~zPfXc5qgMVTfwWm|MXefR-EFdsGYSPVt7%^5gL#z%rt zU<&fcuf=OJ!1ilKKP_X7hxg!1$sc9inugO%o}|KYRPsV6`o$_MxNjTvsaP7OegD8C zcY<4kQbwT! *#qt|Hw*?R?*ZoWzWanDC2Z*&Z?~O|s8>00h7dNYdR2Zr?wa zKIFM2uS>Tn{fMtuoA0Rgj|@7?jUKhTF`BugT!FUoS=M-QT!tPt!oHKqg$tyryZE^e zSD41r>V#!V#CaU#Gy$;Z0(ECC^0?0Q<4vv7o)Y9s9?|o`lPwF_mb=Hftf+X8zI~ B)i=lix^yk?4jnJIrveO WhNB$@Jgfuvw?#d-g?UIn{ZZuB8q?57=KUKm0rTSgJRtV{MJT7z=nux-=JIw# z6M_5wjrRxY0i~Mv3Vp{0kF6Rur@UW}aW`Z$*}DwrfU0s!1J5ul0vQ+2 yEqetX(rI>7j}xM-qMM>igU&h0SXQt{#^r?$_4Xq#IQMe^;; z-a>D3*)P=lh{|Zl6 g7?H=l3qe1aO;$yBFbwfKyfIVF^la zN&wd`0EDC;2nkGqfU$;-I@3>kIzOWgsZswSH%x^NG?ab^|4+%=A1TyN6uTBJT91y{ zpg}yCh#!p}IRtXWp3&JQL*R0vmmO`A?Ajf-B@QS6k0R4&-0}%9@I wD$ymB*)d2lCar?0aaDBFvqe z!MbN4{-}<_(w%s6pIYLtnpFxo8*gl!&DOEpRkta^WLH<_WO7uc-cg2=xSAH%c z0N>z8m$t-uPgm};qbw6+_n=#|LS7=w@*<=cH8*kWZoRB|9Cv0T^xn>oz5GO_5PSLg zfZomw@~d@adLw9FaOG#8lamDoZEZAIa8`;)+&d9rw261Ri#`)q)(!<(JSO|kv)Y+? zj=A#?em!i6WBtcVO#%I6s1mgWku2X7KxJJrPN08s2sE;GvfPr-qq&IY%GO?hRn7}! z2@WC6lhT|Zn$p{cwfvGazSOIJ*e{vGgnneyXyNIB <3gw zH$;2gI|uIkLiZvnX;aAF%8u?t2=DRw#KTw!_{=9S{T|LN?m^W9wJ-372eyr+0OSqt z?bPX<8_gAYkhz%A8AX^EFvML?$eXQ>jt4tWnqII$Z^m6GitecJl@+CEY|E!u)|iTr z5C5mcsp*5lymH2L-Dk>i0#S?d_FF}KLY2>z8i8E0>rqti`Bg=+^~ZzXP8A%eRzDAf z=WV!9X) $}@@Pqqd?r%7Ft0FTYRG?7QVn!vq{o->fY+O@msBw0HtuZ| kSo1-iXuxEZv zmV_Ao8L`s7WkrtJvDUV)i#Z%C^Zm!B?%j*s#U gKq1r7fe( zE8>`C^6q3$wfx}HK!I9-4}c%E=^#*{^JwXGJ1}aO`QCNs;CxrTB}1RQBrGm;zw{}_ zqL`F!)GD=7De)7b;ZT!TaPR#9c%_iaHs;%uVONbn9rUvbrIu=p3lwq=yP1l3xCjXi zH|Bj;l+0(1BCnXvTEmXc>-r||giA!os4C?;0mME=I%>|n{`}llDIoe(5fiOfhv8<| zbyl9o&G#8nSAt!0)$wfxJ259Znx0~}=NNcMmn)w(rC~Z%B!e5RdqOcGfCll`d#SvG zWeG 9Cc*Eqo_#i~u?3j8PFh-4e6rY7eScs~ zT4RSvY2BM)$~!>SDU@B0dfg5?pLf{a4!SmI(Wa9QXt#-6CDqN3v!Bi>b$xkDUxGw5 zdagBbf*s_-!o0I;BTcc|CyzQhv12J}4w-52UWXmNs@TO^fVxr0);CxmQ0K}YzL4o= zsFMX6e&`7ixB=u@4eygeq7t$PcYZ>u-lg&5Md2Xc-h?HqJ=1bD_Ar=Gc3zjxFkG+F z`RI2YE;Q N7`RvFSye>O1RP(AM5evs(=6-n`257&hcD@@dcE2l-nFw?A zAK}C6gkGycLc8kfc0IogegZ|c1?>H=Uuq0vWAqg(`icpEMYjLRo&EwS{I7fZ7uU$& z-BXso+|z%RZ2I^0x6sjVjWq{U36!tUk<&!Nkx>3siZ=@;1A+?{mS;#PyoeQ4g|%gz z#%8h+#4n$z(RSl;x4Js`i61~EvZ~6P)HF1jpBqy7Sf3Q~Nuui5S@ci4_K_4HF#;cx z6!K{t&yLu}FRjgb$oN-Ot&xCmqf9E9UgJcvhgSK*A-yvXM(a4o(aN5FV >2xvN-eH zsEHozy%l?jG{tO2xyqEmU1UQ(U;`rgH3x~bKDi(Yw%~L&Q@P4M(VwX!F-f`f@se65 z(sV>>n+_7`cJi_o6C!{L`#d!k>&!4=V@EU)&MJSbROLu8*|DC^uzqru9z-WC|DPJ7 zeuZKVYV#otz<3k{_L;3jb}-*lQ@J4&cDaUW__N`+3wMczzu5!Rfs`>74`%l_G9!jq zz%}ccfiJ27ndrlyXdZz0gVPSLC;jka1)bAMlM%!+Yb*AvahL*7g+7ZLSnNuqv-Pt- znXvgfhO6UKxWHxl-`humgO)Kp$P(2Vpa=6}C&5*=l2t@(qkvMzwhq`sE1BgBT11LC ziiR7Y7bD|@lU3LmL`8{vn1mlQ&e1lgVbSP}QbS Kk>o}8*=y6EvLR}1Pjz%Sh!#&LFlG3@6? zMVhbE@(&CZ;VWaptcu+QtzcTN&lUHnR7Z1Q@`{=P3lyOncIy$8m0UJdoHHk%1h>od zXYV%6X3@7D&hzpm$W}yh5i6egQZi)u>omghub&rJ0 p;r?9 LLMdrvuJ}6b3wb^VRMKZxgz* z4=s$X@@qukQEdi#aN=fBxL5HrVW3FV>3g^ADk#{7@|Rf{ee}?a=RypB=TFZZQJehY zg^AFh4{JmJ8c#N3G8z?q3vMGeh=>blXTYC&QL@0UDWfu9qWFUeW71e0VX`(aN)`Q8 zA+0@%MJ!s7)*+rmzi|s`KSfauJ#>gQ#xh8idHtD@?UZTeo{GIzvT?l~!F0bQYFboa z{oDhTXVxItXL1P^Bn}cn@i1S;X$R;_322aD+hD&|vll&aut2}$2GFljq-8j=0bq?) z{>Dj%h^@2+GF6_=X7o#_ycqfx&j@NxlsRH3gq0_Pc R}?7v1rC7zINIydpdrI? z_i!R21*1AkQbzY;v5@t9s)g@a*%Tu%VZxu1_AI}r4_m9hjpFUy$%QTB55Pk8=LO1M z&T)5ru^s6$*sS}Eezf#?e6h;SQBM1bgU?us{LcYp^PFz2Dh{tuOYb=LM`B*)Mil7; z)$<=Sw6?DcCeH0By8EGI0_WxX(u}$XUQ8>1kK2`uirLiK&|wK504`3Fa$&A9YSg~g z8^BND0%FXz;^}VCi)Hjy3n1<5z)8hYurIr}Q=j)U2QQe?SOOC-D#7gdIACzMQ@i=D zIte~Vv*B(iW@(g?g&K8?b-vfE*C!$(%kol4YjBY-Zizu8c&L~y?xkFlI3aYiwCHxA zi*E(cl`g@&4Uz`y*wIIUn$@~G@Dkv;^)gk$);MB=T=`&AOECHN2-tI~!@{@eK$O-| z#BYy31E`&=+{i@Mm(C-I+8SUL>drtUdEs{?c4dxV{t$z|z&Jau-pKronbDjQ8L(SP zeQ_3pwJ-WxUV)w3rEK+K*?VcX_Vnk#&NG#^FM+dZMRv$sxg`${Jmw8=2SBnjVNnJ# zF*1M!wCHnM3Q+y}1eiAXwc>Jw)?ABwBvZk6KCbeJ1HFYm_iR_^xcI*ENVsP6h$@kl z4!@fK1T(5h=4ZkIjW;DfcaM1ubtDYF(Tes|tMc) GZxU!_-w&9T8=lmvv+^rciBK@Go)-0F~Ae dH?XiE!qXTd*ubiBabEY1-$A&V8nEe%}i*cn#~ z9S?QLMcObz$xyqR*FH`M{IZI6%UpQkO^q75wq)Y0`Z09|c_krmv6xcf!}4m)wkG*a zZAa^ElA_YJ2tE6qUKvs7F^ly^cHQ@lt(ruceiDUa2hi`^UHm)6E3jBsg`1+&;%!nV z^ri@pBEQU!;*BAC>)Kdl=;MIF{k*8mllZ3}Y+~f2zreIW=7(9XgJU}>uGA&o%IoZA z#N+FtPvzs$v0lffbjxzR7yQqpa{Dgd(T|x5OcknuXTy1AdYqMC*wl%LsGmYDR-OrG zpC%74`T%*eEOn{xs!t|9%=s9)ztc=|$}(SE#?OW+sDo`8%es@RCZC~>(ix=l_nN!Y zbJ7*CWb9{nRsbE`&A-0mcKXa$x*M`Cp&y7y=x+7Fm`qXAbY{8|uDxhD3EvUj%ktX} z!j&WM#wa#kY#49%Teyc+0JZCp)0KRDVDsfPj{}n0Ms_tcjt~J159DP RI;T6Z(6>_VH*u z%>fWhydze>Hx6dQj=mcBqix`VbX?0TBtP9x3RG6#h5?Q*v-(fSTdG@9s`f25AG^eC z?B wI$wN&c7YU(-Cs8 z`s>&_IJ;<<7SGI>lb@uyh;1^y&mYRNxpZ3mvVYe3IK02zB78e3+VBb5KO43ei3MC% zd|DKCVx>7~+Oo~LJ Ty})a!ELPlTip z+IX1~l=L={uHVOhCAe)&JW$vh|I{wfTEfT9{!A^GPBgco7~Q%?^#bowZn9A5D4)CT zJ?+e)PdUww7Jd$C8qcb^w#2&xQ3iOhl{Z8VjZcbvwBtNWh@aXD=$ z@2>mczd3zB6uw*hP2tE}F`c+-5%hx}-zQ=qChi^m6qfyuOw6?-Px|AizO_Pk+@2Va zaoq0k$Da#S{^k$EP3zBawL4J;0KoN@r#xT%%*OdSidZsG9-YI>nLo#|8k54)_UQxC z#YismZyw42=a8`evqSPlJ^DZAd+gx #@J*RqBp< zuC>ul#@_dUJeGm&Jj73$No~XrAQ|_Qak<<`0IsrQUI~LdSc(se{(_4d&MK@>AT;Cv z$?+5$a<{if8J#{-3q*Yhgg&$o(}D&QMyC{1-fUYO-7W!J958L?b-&7qga{E0iVg`m zOZcM{PKE RBPN3hm)zNt7>Vt$#qC!uU?WWaBw@)RoR|u06s?{kC%CC6Ry97 zHCrYy66L@3mw9`RTcTu_jnzKBrO3)qshf;xbf@wi5gx=Raq=w%pu)h)Qg*UL2374> zCUq@dovqn)t6g+9mG(71^{rVd9}jwOybqwruM}SV_L#d!SMGWQyWJ?)yAtWJ(P+K& z+^~UU$lJvb{WRMP02C=oP?{e0{IDfUDcwx})GuLCG!6D(sga#rJ!oH{zpT+^37eQl z^WTAr;ry1-??^hg|NOwu-{@-R3JYlP7e}4*)ChDdq~_jn)V@l0Ir$!s8_F*#&Mhln zt=3CrKZBQ1I7I$}l+HiK<`jLMJazI4x)QK@y{l%)xA@v$^L2WF8|q?ZgkBHK?sRui zy;kG$Hra&;Qo7BBUFK#tcPE^`E+AAbN_;TBC5Oa6g}cuf!Y5g-$enuk2Z!GtG%hA9 zUesgl1~#y@t-NF5$)nrpVL~}O#hxP$VRHyh03pku^0_jDgU+;wrlgdqE>mYQqc|%> z=0_S;jGPyN001QJrWgtT(1wfsV4-8^McZH^PwplNfR*f9gT&J~-r(Y@$)NJ)@-ilZ z{VFxXp>f<}X{>@@unrLskaqG%?&b$u5=O%k03L}SB>{LhrhV_RB}<2<$oBNoWP?`4 zO1@}D=+(si^n7xx^NQo@@WO&ex9{78+F0Z1+EPIm0C36C2@UU!MLTe?>(jN>ej06$ zy2T(se;=mhE_Db);40>4jVKmD(Ip2FKp3)$tm6Mo5zGKDLhWgor9b1{g{%7}0r|V` zgEQaMuez(7yiCJcuQZEGz6IQXnCix%?GE?M)V+~DQxgG9{N5c|Eg_|P)DjUcdTMqa zET~s;SuGw*oRdRvPYYXI`N5&g>=ga;#Zv9IffkY8q&>yC%Wmjw F#l~u{v!MQhm4Ca8tghW7=P5iY8L!GI`qW> ztqA=M 2SGvfq3ddLtAp> zq?xuxZIHDhCnXPqeClN9#D&ML`Gx@-{FPG2x$032*QEs>(8UHl{CGWU(?p9|tnKv} zp2Tk5f!`V!67qBH%)-5k(X-^+BR3yZ_M^;r;A)kPb4~p~wzoMKMcWvPX9|10!l_ek z@%^CrQ~58Y K+OZ@5NgmG5>B3Hvh#>cqceAAWPbdT@o~BpCUa= zli>G3K<`b|VTbpwQg Q{b720+U-DDkso(LHtROvWg@Fj{;S zyE$GJI~wzIRe>}jRTWE^Dk81OeL(0al%J%AFZhV#xXtbi%T8nI3ca*e18q>ahktdW zY?9&UcmgsiWz%S%{YLJtxF*jotJxG#9bB4_Iq4l`)KifC+USipVT5P6NJHsZC`x*> zGSRKM2cU+uIJJ)|`(0`;L^a0dD(C2_F=ij OK7(EQH4R1` ziqVZvImbN8msCx lXpt8on}en zM!-Zau72-!kbFX@Ga6RJRWJSVBasN@JK5+cY`Xbf3kg&!`4Wwnu{<1L>6ij+HX}cQ zJcd^av4$iXdI)z_5!hjKOD5!g>H5{(jnAv{g$IY9Av4+Y&5Z+Z>QHuWMpc329{Dnu z#gJ3dMI;z$DD=V^c6lVV*WX3#?Xl~V6Ogur#kV(O#F?D{jjqXNX*=1;J7dR-?^Dui z=OPef*-zEQi`f0s%zat&e(%G6F{fMY-pT{Ez%uz&KGKe6gMSLXyxqj?KA6}HHW>9` z*JBiIHnKJz3SSkKf$Alkb-+HHk55_dERx(Hq=s8(PK3WvP};_ewE1R6_SfRN2f#$j zGZRUyUsj)F_+-GxTKYtP+pruOP703jw1x>Fht}SeE9NbE2od!%W-(o)&EiSw{VPhS zP(7R*h{-0OXk+>(ZJ^b(V5!nIgj}J@TC*m+NBV @~6Gxr)IC;w>>G{6K+#hD<8 %UbW5mUV_is)gLS|=$1uIlEXe5zoO( eAU8y*= z4o&HH^2 Kva0xF=E( zWV E4>1Mxseq&5olrZc${t8Mba715=JVPnA}^L$ebX~XJTaynmfuOA z>ZLaMb(cpVSOIvg+y_-#%Qg6It>E$BKVGe&9^Nlt9O=-~ONk_WoOfsqgA|9nd;nZV zfi&9LH8Bk_JddxPeHrm;tqN;=7ThWB_&zT1t~a0+YtHueOHX=PeMCEd&aWCifi{bQ zZT_2u`RAOzFLsN6@A(DPA=yy>%8&lLnc+&2|MQh2_f^XF|7`w~RJ0v;MUlLYRHd~y zKcZzC)d!mY-u$R7Xt7NP97K(wZUR4oJqSY~R($)_{T4;_HqXYij(SoN#$+ymuWY z#S|cT@P;8tui~!0Ffjfsk^T)Ya?^uA75Ucsc%#YuTUPk
ymQ`6ldBk zT2bsBXl+=+Q7dJrq1x2bMemJWyR@9ry_xby8G4H8UUw}M*_5TLhEJgP1`Yj5{-V2t zR32JYQEr?wjge?hI2APDr{ZXl5>;QkmSSH{nF@56M{};kG-8RHT%D41gx6q@cv^DX ztU+0w>|F48V3KusM_@eXjr>exNqY9#ZCVj|+417OQUf?my3+#Kb&3SJz3y!4%sjX1 zJ)@@802<%V$&oy%n=GlI2#Kd&E1AmC74)U{bUJ1~nJjB-#N1TCYQkmJd^$^D)G0Fq zSab9=+2hs@ `^9G^|kS#VIyHrK|c_ ztlYInp`27YGM5=r1#!Ih!~zZT0f1zR|4}QD_Q`1(vE=cTEwcXPjvr(JA