pax_global_header00006660000000000000000000000064114143656430014521gustar00rootroot0000000000000052 comment=cbc5d206780dae799111a9ca68b40b9001057074 crossroads-2.65/000077500000000000000000000000001141436564300136375ustar00rootroot00000000000000crossroads-2.65/ChangeLog000066400000000000000000000415401141436564300154150ustar00rootroot000000000000002.65 [KK 2010-04-26] - Bugfix in backend/connect.cc - if the determination whether a back end is available goes haywire, the client socket may stay open and not be consumed. Thanks Franz J. for reporting! 2.64 [KK 2010-01-29] - Fixed signal handling for start/stop/restart. - Web interface now immediately shuts down at a stop request, so that next xr instances can grab the web interface port immediately. 2.63 [KK 2010-01-11] - Previous 2.62 stamped as stable, 2.63 will be the new development trunk. 2.62 [KK 2010-01-08] - Fixed possible coredump cause in Balancer::serve(), which might explain some troubles during high load (many really concurrent requests). 2.61 [KK 2009-11-17] - Netbuffer::netwrite() will abort after 5 attempts that yield 0 written bytes. Probable cause of CPU hogging - thx Franz J. for reporting. - Fixed potential cause of crashes in base class for Dispatcher (algorithm handler would not get initialized in the constructors). 2.60 [KK 2009-11-02] - Some errors demoted to informational messages to choke the amount of log information that's generated. 2.59 [KK 2009-10-14] - Bugfix in logger handling of xrctl, read http://xrforum.org/viewtopic.php?t=495 if you fancy. Thanks Hobbit for reporting this! 2.58 [KK 2009-10-14] - Added test/ftp.xml as a sample ftp service configuration. - Implemented URL-based dispatching: flag --url-match/-j, present in xrctl, tested in test/urlmatch.xml, added to web interface - Usage information now shows long versions of flags first. 2.57 [KK 2009-09-14] - Output of "xrctl status" colorized when a service is not running, thanks Frederik D. for the suggestion and the code! - Small cleanup of xrctl's usage information. 2.56 [KK 2009-05-26] - Bugfix in cleaning of IPStore map - Implemented flag --remove-reservations (xrctl: tag: removereservations) - Timeouts adjusted: all read time outs set to 30, client-write set to 5, backend-write set to 3 - Implemented tag prefixtimestamp in system block to force timestamping. 2.55 [KK 2009-05-13] - Implemented connection error counting of back ends. - Select-handling revised: atomic readability and writeability checks, see xr/fdset/wait.cc and wait_r(), wait_w(), wait_rw(). - Checks for connect() success can be configured to verify only writeable status of a socket (see xr/backend/connect.cc, macro CONNECTCHECK_ONLY_WRITABLE in xr/etc/Makefile.class). - Added test/xr-mysql-connect. - Added commands kill and killstart to xrctl. Action restart renamed to stopstart. - Added simple benchmarking under test/: xr-http-test (based on an older script) and xr-smtp-test. Plus a simple analyzer of the reported timings, xr-analyze-test. - Revamped stored-ip dispatcher, added IPStore class to keep track of clients. 2.54 [KK 2009-04-29] - Stamped new STABLE version. 2.53 [KK 2009-04-24] - test/xr-client-ping now can live without LWP::UserAgent. When this Perl module is not present, the script will fall back to wget/curl. - Upon thread kill, sockets are closed using socketclose() (sys/socketclose.cc), which also shutdown()s the socket. - Bugfix in xrctl regarding new format of client/backend timeout. 2.52 [KK 2009-04-21] - Bugfix in the roundrobin dispatcher. When only one back end would be up, then the roundrobin dispatcher would incorrectly compute the right back end. This bug only became visible with host-matching in HTTP mode. 2.51 [KK 2009-04-15] - Separate "write" timeouts introduced in flags -t and -T - Web interface activity overview includes client ip addresses - Added test/xr-client-ping (see docs) 2.50 [KK 2009-03-30] - Bugfix in activation of the onfail script in the checkup thread. - Compilation flag -Werror only passed to the compiler when on the development system Thera.local (see xr/etc/Makefile.class). - Onstart, onend and onfail scripts (when present) are invoked with a third argument, the number of connections at the time - Set-Cookie header directive (see the HTTP dispatcher) attaches an explicit path "/". - Rewired the tcp dispatcher and http dispatcher to use a common buffer inside the tcp dispatcher (instead of 2 separate ones). 2.49 [KK 2009-03-27] - Implemented onfail hook (to complement onstart/onend, flag -y). 2.48 [KK 2009-03-26] - Implemented onstart/onend hooks (flags -z, -Z). - Sticky HTTP mode inspects the URI (parameter XRTarget) when no sticky cookie is present. 2.47 [KK 2009-03-04] - Stored-ip dispatching was enhanced to "anticipate" reconnects from previously seen clients. The number of anticipated connections is taken into account when dispatching a new client. - Bugfix in command line parsing of dispatch mode lax-stored-ip (would be recognized as strict). 2.46 [KK 2009-02-18] - Dispatcher-related classes moved under directory xr/Dispatchers/. - UDP balancer implementation started (code stubs in place). - xrctl bugfixed: a backend-scope maxconnections statement would confuse the global server block. Thanks Rajeev for reporting. 2.45 [KK 2009-02-18] - Usage information formatted. - Rubberstamped "stable"! 2.44 [KK 2009-02-11] - Reviewed code for "throw"s (edited for consistency). - Bug in Webinterface::execute() (during accept()). Thanks Vladimir T. for reporting and testing. 2.43 [KK 2009-02-09] - Added Httpbuffer::replaceheader() methods - Added flag -I (to replace Host: headers), integrated in xrctl / webinterface - Webinterface reports approx. # of open fd's and the limit (in activity) 2.42 [KK 2009-01-28] - Bugfix in "xrctl generateconfig". The activity info introduced before (which the web interface now emites), confused xrctl. - Bugfix in sys/ipmatch.cc: mask matching corrected for systems where longs are not 4 bytes (64bit systems). - Bugfix in hashed-ip dispatch mode: When no back ends were available, the dispatcher would crash (fixed). - XSLT stylesheet that transforms web interface slightly changed to improve the looks. - Bugfix in xrctl's "rotate" action. Thanks "ncisrael" for reporting it in the forum. 2.41 [KK 2009-01-05] - Bugfix in xrctl, thanks Eddie for reporting it. 2.40 [KK 2009-01-03] - Netbuffer::read() failures are no longer logged as errors, but as verbose messages. - XML configuration now supports "logger" to redefine logger program. - Small changes to xrctl: ps command is auto-guessed when not specified in the XML configuration. 2.39 [KK 2008-12-04] - Added Httpbuffer::reset() - The HTTP dispatcher will show back end error returns (when the HTTP code is in the 400 or 500 range) - main() will show runtime limits when invoked with -v - The HTTP dispatcher no longer downgrades to HTTP/1.0 and closed connections. Webserver back ends can do this. - Exceptions during the sending of an error page in HTTP mode are discarded, no longer logged. - Mutex lock added around thread startups (see Thread::start()), when requested soq in sys/sys. - Mutex locks around malloc()/realloc(), when requested so in sys/sys. - Fixed possible socket leak in TcpDispatcher::execute(). The back end socket might not have been closed when the dispatch phase crashed. - Dispatchers are now derived from a new base class Dispatcher, in preparation for UDP handling. - Timestamp handling centralized in a class Timestamp. - Messaging (msg(), debugmsg(), reportmsg(), warnmsg()) centralized. - Started threads are administered in Threadlist. Separate threads are killable from the web interface, or all threads to a given back end. 2.38 [KK 2008-11-19] - Bugfix in xrctl: Weights and max connections in back ends are now passed correctly. - Added version ID to xrctl. 2.37 [KK 2008-11-17] - Main accept-loop in Balancer::serve() doesn't throw an exception when a network connection can't be accepted. The reason is shown in a warnmsg(). 2.36 [KK 2008-11-11] - Typo bugfix in xrctl, fixed. - xrctl will take the environment's PATH if no path is given in the configuration. 2.35 [KK 2008-11-11] - The wakeup and checkup thread are always started, even when no wakeups or checkups are defined. Reason is that later these timers can be set in the web interface, so we want the threads running. When no checks/wakeups are applicable, the threads will recheck each 30 secs. - Server type (tcp/http) made configurable through the web interface. 2.34 [KK 2008-11-09] - Fixed sys/str2parts.cc for 64bit systems. 2.33 [KK 2008-11-07] - Solaris portability for gcc 3.4 issues in Tcpdispatcher::execute() - Removed warnings about non-found libraries (on systems that don't need them) - Support for DESTDIR setting in top Makefile (for debian packaging) - Man pages added as doc/xr.1, doc/xrctl.1 and doc/xrctl.xml.5. 2.32 [KK 2008-11-05] - Bugfix in "stored-ip" dispatching algorithm. 2.31 [KK 2008-10-30] - Changes related to XML-style configuration file support. A new-style xrctl is in provided and during "make install" put in BINDIR (normally: /usr/sbin). See test/sampleconf.xml for an example of a configuration file. - Added webinterface URI's to control DOS-protection related settings. - Added DOS-protection variables to XML-output of the web interface. - Server-wide maxconnection tag output moved into dosprotection block. - Added display of such variables to the style sheet that renders the XML in a browser. - Added option close-sockets-fast to XML output and to website URI controls. - Added allow-from and deny-from lists to XML output and to website URI controls. - Added the primary distribution site to the top-level Makefile as macro. This now shows up in "xr -V". The version ID and site also show up at the bottom of the web interface screen. - Target "uninstall" added to the top-level Makefile. - Bugfix in Netbuffer::netwrite(). When the remote connection would be hung up, XR would be blissfully unaware. SIGPIPE signals are now ignored. - Implemented flag -g / --backend-check. Alternatives: connect:ip:port, get:ip:port[/uri], external:program. - Added back end check type to the web interface reports, created control at web interface for /backend/NR/backendcheck/VALUE to change it. Added to XML configuration parsing. - Docs updated, ofc. - Status of balancer shown in web interface. Minor bugfix in xrctl. - Added flags -E/-e (hard/soft-maxconn-excess, to call an external program). Also added to web interface with controls and updated docs. - Added mutex locks around cerr output catch-blocks of exceptions. - Added more checks for memory allocation faults. - Implemented DNS caching of back end host names (flag -F, --dns-cache-timeout). Also implemented in web interface output and controls. - Implemented adding and/or deleting back ends from the user interface, including scripting URI's. - Implemented generation of a new configuration using "xrctl generateconfig". 2.30 [KK 2008-10-25] - Reversioned to 2.30 in prepration for STABLE release. - Bugfix in Netbuffer::netwrite() (debug output of written data) - SIGPIPE gets ignored, see sys/main.cc - Fixed re-entrancy issues for gethostbyname() that applies to some unices. See Backend::connect() (xr/backend/connect.cc). 2.22 [KK 2008-10-16] - Implemented up/down state in back ends. Fixed up the docs. - Rewrote msg() and debugmsg() handling: these are now macros that call _msg() and _debugmsg() depending on verbose/debug flags. The argument is a Mstr object, used to concatenate strings with ints, doubles and so on. 2.21 [KK 2008-10-14] - Fixed round-robin dispatching with only 1 configured back end. The bug was that on the next-time around, no "other" back end would be found. - Centralized reading/writing from fd's and buffer handling into class Netbuffer. This removes superfluous buffer copying in the HTTP dispatcher. - Rewrote HTTP dispatcher & (hopefully) optimized it. - Added Profiler class and xr/etc/xrprof tool. - Many other small changes. - Added docs on maxconn flags and weighted-load dispatching. - THIS VERSION IS A REWRITE OF THE HTTP DISPATCHER. IT IS ALPHA-QUALITY. 2.20 [KK 2008-10-13] - Fixed -C flag recognition, --close-sockets-fast worked, but I'd omitted -C from the flag set. - Ongoing optimization work. 2.19 [KK 2008-10-13] - Changed the TCP Dispatcher to allow for setting a maximum # connection attempts per client, with options to either defer the connection or drop it. - Added a dispatch mdoe "weighted-load" for randomly picking a back end based on the inverse of their respective load averages. (gem) - Verbose/debug options in the web interface are now rendered as select boxes. - Web interface errors are rendered on the client as an HTML error page. - Docs updated regarding web interface URI's. - Turned on compliler optimizing (had forgotten that before!) - Docs updated regarding web interface URI's. 2.18 [KK 2008-10-08] - Improved command line parsing, so that when --checkup-interval is used, suppression of "--wakeup-interval 0" is no longer needed. 2.17 [KK 2008-10-07] - Type sizes reported in "xr -V" - Fixed nasty bug in sys/fdwrite.cc 2.16 [KK 2008-10-05] - Enhanced web interface to show debug, verbose and traffic log states - Altering parameters for the web interface get sent in encoded form - Option --log-traffic was renamed to --log-traffic-dir for consistency - Enhanced web interface to modify client and back end timeouts - Enhanced web interface to modify wakeup / checkup intervals. 2.15 - Sanity checks in Config::parsecmdline(): -w/-c together throws error. - Network sends are now using write(), unless under Solaris, which uses send(). - --log-traffic logs to file with as the base name: the request number. - System (uname) is recorded during compilation and displayed in "xr -V" 2.14 [KK 2008-09-30] - Removed spurious debug message. - Fixed usage info for buffer size flag (should be -B, not -b). - Implemented flag -l (--log-traffic). 2.13 [KK 2008-09-17] - Porting issues resolved for older MacOSX (10.3, 10.4) - Bugfix in XML emitting of web interface. Most browsers didn't even notice.. 2.12 [KK 2008-09-10] - Small code changes for g++ v3.x backward-compatibility support. (Thanks Simon M.) - Web interface: layout enhanced, more modification options - Code cleanup, duplications removed - Network sending ignores some errno's and retries (see sys/fdwrite.cc) - Web interface retries binding to its socket (incase a previous instance hasn't terminated yet) - Web interface returns an HTTP error page (status 500 only, no content) during errors 2.11 [KK 2008-09-04] - Bugfix in "first-active" dispatch mode. Previously XR would gobble up fd's when no back end was available. - Web interface (first version) implemented. 2.10 [KK 2008-09-02] - Bugfix in host match mode. When a back end doesn't match anything, then the client isn't served. (Previously the dispatcher would fall back to least-connections over all known back ends.) - In HTTP mode, a 502 error gets returned to the client when dispatching fails or when back end processing goes haywire. There is just one error page, 502 error header, 0 bytes content length. - Implemented back end weights for least-connections dispatching. - Bugfix in Backend::connect(): Socket gets closed when connecting fails. 2.09 [KK 2008-09-01] --host-match code implemented 2.08 [KK 2008-08-31] I'd forgotten to include the 'P' into the set of allowed flags (--prefix-timestamp would work, -P not). Fixed. 2.07 [KK 2008-08-28] Stupid bug in 2.06, sorry that 2.06 got out.. Fixed. 2.06 [KK 2008-08-27] Upped c-conf to 1.14. xrctl updated: 'ps' command format also suitable for SunOS. New class Mutex implemented. Mutex-locks are now more fine-grained (per one global or static). Solaris9 port w/gcc 3.4.6 done. 2.05 [KK 2008-08-15] Thrown errors now based on std::exeception. "xr -V" shows compilation settings. Code reorganized into directory hierarchy. 2.04 [KK 2008-08-11] Mutex in Thread class is now a static. Implemented dispatching algorithm "stored clent ip", in the variants strict and lax. Flag -n / --tryout implemented. Implemented in xrctl. 2.03 [KK 2008-08-10] Updated docs regarding the mailing list. Fixed verbose display upon accepting a client ("current back end states"). Implemented dispatching algorithm "hashed client ip", in the variants strict and lax. 2.02 [KK 2008-08-09] Changes to the Makefile & some sources to avoid warnings under RHL (thanks, Simon M.). Bytes processed by a back end is now administered in TcpDispatcher::writechunk() and not readchunk(). Reason: In HTTP mode, the target back end is not yet known upon the first read -- the first read from the client comes before dispatching. Thanks Simon M. for the bug report. All select()'s now check for errno==EINTR, incase XR gets a signal -1 (for status report). 2.01 [KK 2008-08-08] Implemented flag -C (--close-sockets-fast): this option *can* be used under heavy stress when too many network sockets remain in TIME_WAIT state (try with 'netstat -n | grep TIME_WAIT'). Syntax of xrctl is checked upon "make commit". Added documentation about Solaris tcp_time_wait_interval and Linux ip_conntrack_max. Added documentation about binding XR to the same port, using different bind-to IP's. 2.00 [KK 2008-08-07] Release of 2.00. crossroads-2.65/Makefile000066400000000000000000000064161141436564300153060ustar00rootroot00000000000000# Top-level Makefile for XR # ------------------------- VER = 2.65 PREFIX = $(DESTDIR)/usr BINDIR = $(PREFIX)/sbin MANDIR = $(PREFIX)/share/man TAR = /tmp/crossroads-$(VER).tar.gz AUTHOR = Karel Kubat MAINTAINER = Karel Kubat DISTSITE = http://crossroads.e-tunity.com BASE = $(shell pwd) foo: @echo @echo 'Choose:' @echo ' make local - local program construction' @echo ' make localprof - local, with profiling info' @echo ' make localmem - local, with memory debugging' @echo ' make install - installation to $(BINDIR)' @echo ' make uninstall - removes installed programs' @echo ' make clean - removal after local/install' @echo ' make tar - pack sources in an archive' @echo ' make commit - commit to repository (maintainer only)' @echo local: mkdir -p xr/build xr/etc/gettools /usr/local/bin xr/etc c-conf e-ver xr/etc/e-ver ChangeLog $(VER) BASE=$(BASE) AUTHOR='$(AUTHOR)' MAINTAINER='$(MAINTAINER)' \ DISTSITE='$(DISTSITE)' MEMDEBUG=$(MEMDEBUG)\ VER='$(VER)' PROF=$(PROF) PROFILER=$(PROFILER) $(MAKE) -C xr localprof: PROF=-pg PROFILER=-DPROFILER make local localmem: MEMDEBUG=-DMEMDEBUG make local install: local $(BINDIR)/xrctl install-manpages mkdir -p $(BINDIR) BASE=$(BASE) AUTHOR='$(AUTHOR)' MAINTAINER='$(MAINTAINER)' \ DISTSITE='$(DISTSITE)' \ VER='$(VER)' BINDIR=$(BINDIR) $(MAKE) -C xr install @echo @echo ' The balancer program xr is now installed to $(BINDIR).' @echo ' The control script xrctl is installed there too. In order to' @echo ' use it, you will have to create /etc/xrctl.xml (if you have' @echo ' not done so yet). See "man xrctl.xml" for an example.' @echo @echo ' Have fun with Crossroads $(VER),' @echo ' -- $(MAINTAINER)' @echo $(BINDIR)/xrctl: xrctl/xrctl Makefile sed 's:__VER__:$(VER):' < xrctl/xrctl > $(BINDIR)/xrctl chmod +x $(BINDIR)/xrctl install-manpages: $(MANDIR)/man1/xr.1 $(MANDIR)/man1/xrctl.1 \ $(MANDIR)/man5/xrctl.xml.5 $(MANDIR)/man1/xr.1: doc/xr.1 mkdir -p $(MANDIR)/man1 cp $< $@ $(MANDIR)/man1/xrctl.1: doc/xrctl.1 mkdir -p $(MANDIR)/man1 cp $< $@ $(MANDIR)/man5/xrctl.xml.5: doc/xrctl.xml.5 mkdir -p $(MANDIR)/man5 cp $< $@ uninstall: rm -f $(BINDIR)/xr $(BINDIR)/xrctl @echo @echo 'The balancer binary xr and the control script xrctl have been' @echo 'removed from $(BINDIR).' @echo @if [ -f /etc/xrctl.xml ] ; then \ echo 'The configuration /etc/xrctl.xml still exists. Remove this' ; \ echo 'by hand if you are sure you will not be needing it.'; \ else \ echo 'Configuration /etc/xrctl.xml was not found. Maybe you have'; \ echo 'it in a different location or under a different name.'; \ echo 'If so, consider removing it by hand.'; \ fi; @echo @echo 'XR was uninstalled!' clean: rm -rf xr/build/* find . -name gmon.out -exec rm {} \; tar: clean rm -rf $(TAR) /tmp/crossroads-$(VER) cd ..; cp -r crossroads /tmp/crossroads-$(VER) cd /tmp; tar czf $(TAR) \ --exclude .git --exclude .svn --exclude crossroads-$(VER)/xr/build \ crossroads-$(VER) rm -rf /tmp/crossroads-$(VER) @echo @echo 'Sources now tarred into $(TAR)' commit: local clean test `svn status | grep '^\?' | wc -l` -eq 0 || \ (echo 'SVN not fully up to date: run "svn status"' && exit 1) perl -c xrctl/xrctl svn -m $(VER) commit crossroads-2.65/doc/000077500000000000000000000000001141436564300144045ustar00rootroot00000000000000crossroads-2.65/doc/fig/000077500000000000000000000000001141436564300151515ustar00rootroot00000000000000crossroads-2.65/doc/fig/cluster.graffle000066400000000000000000000331541141436564300201700ustar00rootroot00000000000000 ActiveLayerIndex 0 AutoAdjust CanvasColor w 1 CanvasOrigin {0, 0} CanvasScale 1 ColumnAlign 1 ColumnSpacing 36 CreationDate 2008-07-15 11:11:27 +0200 Creator Karel Kubat DisplayScale 1 cm = 1 cm GraphDocumentVersion 5 GraphicsList Class LineGraphic Head ID 4 ID 30 Points {288.594, 104.284} {367.5, 102.219} Style stroke HeadArrow FilledArrow TailArrow 0 Tail ID 27 Class LineGraphic Head ID 27 ID 29 Points {116.479, 138.195} {154.614, 126.669} Style stroke HeadArrow FilledArrow TailArrow 0 Tail ID 9 Class LineGraphic Head ID 27 ID 28 Points {116.486, 80.1664} {153.816, 89.2202} Style stroke HeadArrow FilledArrow TailArrow 0 Tail ID 8 Bounds {{147, 61}, {152, 90}} Class ShapedGraphic ID 27 Shape Cloud Class LineGraphic Head ID 7 ID 26 Points {421.842, 114.609} {454.158, 130.391} Style stroke HeadArrow FilledArrow TailArrow 0 Tail ID 4 Class LineGraphic Head ID 6 ID 25 Points {422.5, 101.5} {453.5, 101.5} Style stroke HeadArrow FilledArrow TailArrow 0 Tail ID 4 Class LineGraphic Head ID 5 ID 24 Points {421.842, 88.3909} {454.158, 72.6091} Style stroke HeadArrow FilledArrow TailArrow 0 Tail ID 4 Bounds {{62, 131}, {54, 31}} Class ShapedGraphic ID 9 Shape Rectangle Style stroke CornerRadius 5 Text Text {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf330 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 Client} Bounds {{62, 58}, {54, 31}} Class ShapedGraphic ID 8 Shape Rectangle Style stroke CornerRadius 5 Text Text {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf330 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 Client} Bounds {{454, 128}, {54, 31}} Class ShapedGraphic ID 7 Shape Rectangle Style stroke CornerRadius 5 Text Text {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf330 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 B3} Bounds {{454, 86}, {54, 31}} Class ShapedGraphic ID 6 Shape Rectangle Style stroke CornerRadius 5 Text Text {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf330 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 B2} Bounds {{454, 44}, {54, 31}} Class ShapedGraphic ID 5 Shape Rectangle Style stroke CornerRadius 5 Text Text {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf330 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 B1} Bounds {{368, 86}, {54, 31}} Class ShapedGraphic ID 4 Shape Rectangle Style stroke CornerRadius 5 Text Text {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf330 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 XR} Bounds {{355, 35}, {166, 133}} Class ShapedGraphic ID 3 Shape Rectangle Style stroke CornerRadius 5 Text Text {\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf330 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 Cluster\ \ \ \ \ \ \ \ \ \ \ \ \ } GridInfo GuidesLocked NO GuidesVisible YES HPages 1 ImageCounter 1 IsPalette NO KeepToScale Layers Lock NO Name Layer 1 Print YES View YES LayoutInfo LayoutTarget 3 LinksVisible NO MagnetsVisible NO MasterSheet Master 1 MasterSheets ActiveLayerIndex 0 AutoAdjust CanvasColor w 1 CanvasOrigin {0, 0} CanvasScale 1 ColumnAlign 1 ColumnSpacing 36 DisplayScale 1 cm = 1 cm GraphicsList GridInfo HPages 1 IsPalette NO KeepToScale Layers Lock NO Name Layer 1 Print YES View YES LayoutInfo LayoutTarget 3 Orientation 2 OutlineStyle Basic RowAlign 1 RowSpacing 36 SheetTitle Master 1 UniqueID 1 VPages 1 ModificationDate 2008-07-15 11:15:13 +0200 Modifier Karel Kubat NotesVisible NO Orientation 2 OriginVisible NO OutlineStyle Basic PageBreaks YES PrintInfo NSBottomMargin coded BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG NSLeftMargin coded BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG NSPaperName string A4 NSPaperSize size {595.2, 841.8} NSRightMargin coded BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG NSTopMargin coded BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG ReadOnly NO RowAlign 1 RowSpacing 36 SheetTitle Canvas 1 SmartAlignmentGuidesActive YES SmartDistanceGuidesActive YES UniqueID 1 UseEntirePage VPages 1 WindowInfo CurrentSheet 0 DrawerOpen DrawerTab Outline DrawerWidth 209 FitInWindow Frame {{537, 57}, {593, 939}} ShowRuler ShowStatusBar VisibleRegion {{0, 0}, {578, 825}} Zoom 1 crossroads-2.65/doc/xr.1000066400000000000000000000040531141436564300151210ustar00rootroot00000000000000.TH "XR" "1" "Nov 6, 2008" "Crossroads" "Man Page" .SH "NAME" xr \- Crossroads Load Balancer & Fail Over Utility .SH "SYNOPSIS" \fBxr [--verbose] [--web-interface XRSERVER:PORT] --server tcp:XRSERVER:PORT --backend BACKEND:PORT [--backend BACKEND:PORT] ...\fR .SH "DESCRIPTION" This manual page briefly documents XR, the Crossroads Load Balancer & Fail Over Utility. XR is an open source load balancer and fail over utility for TCP based services. It is a dae mon running in user space, and features extensive configurability, polling of back ends using wake up calls, status reporting, many algorithms to select the 'right' back end for a reques t (and user-defined algorithms for very special cases), and much more. XR is service-independent: it is usable for any TCP service, such as HTTP(S), SSH, SMTP, dat abase connections. In the case of HTTP balancing, XR handles multiple host balancing, and can provide session stickiness for back end processes that need sessions, but aren't session-awa re of other back ends. XR furthermore features a management web interface and can be run as a stand-alone daemon, or via inetd. Execute 'xr -h' to get a complete list of available command-line parameters. .SH "EXAMPLE" xr --verbose --server tcp:0:80 --backend 10.1.1.1:80 --backend 10.1.1.2:80 --backend 10.1.1. 3:80 --web-interface 0:8001 This instructs XR to listen to port 80 and to dispatch traffic to the servers 10.1.1.1, 10.1.1.2 and 10.1.1.2, port 80. A web interface for the balancer is started on port 8001. Direct your browser to the server running XR. You will see the pages served by one of the three back ends. The console where XR is started, will show what's going on (due to the presence of --verbose). Direct your browser to the server running XR, but port 8001. You will see the web interface, which shows the status, and where you can alter some settings. .SH "SEE ALSO" xrctl(1) .SH "AUTHOR" XR was written by Karel Kubat . Web page: http://crossroads.e-tunity.com .P This man page was written by Frederik Dannemare . crossroads-2.65/doc/xr.odt000066400000000000000000006265141141436564300155630ustar00rootroot00000000000000PK=<^2 ''mimetypeapplication/vnd.oasis.opendocument.textPK=<Configurations2/statusbar/PK=<'Configurations2/accelerator/current.xmlPKPK=<Configurations2/floater/PK=<Configurations2/popupmenu/PK=<Configurations2/progressbar/PK=<Configurations2/menubar/PK=<Configurations2/toolbar/PK=<Configurations2/images/Bitmaps/PK=</CC-Pictures/10000000000001E1000000D761463138.pngPNG  IHDR|~]ClIDATxw\GǯQA.`ÊXF5101j^+&Ɩ 5j4EE-w18v~eݝߜ9sL'OXAS  "-`^DA̋h yA(!0L28т Ueu:]^Xq!E">@hV57l"т $'gϞy昘ooÇ+W2:nܸ`hb<?Ξ=;5gT!ݮ]XHszk~BRy{m۶[:t ׯpC{۷o6m3g_*8[BhA ;!$...k2۷oܸ[!Bq>{ 5ݨQ@_{͞=;cׯ_pWWjժ@!zWtF4Z0(=d_Ϝ9"2I]bŭ[ٳgƍݻw_v-i4_qssAMB 5ϛ7+W`VTǐ!MihAR u^-Zd)ܷoO?wAp-V;p/^|sDDԩSjժW`87|]v}ٲd;3т $Py93 {{E#K( pww\ `vih DUg`ă;m$_6k:fh4* k֬δ-v S2'3R*O)gqh6?hFI۴3:EAH&$PiYheFFeAl4T"-BPe@%)ZY#m^*0תC_g8т $DLؠj5_|@gY],m!%2RD{34VYa Z&strт V^հ $if"gaьh )בI*LdVgB4Z}HnUAvh  rт E4ZF hA0/v~=IxhA0M#S9H1hEhA0ǹ5k,h<ǏϘ1wrmihA0 wގ;>&={-.1Ңт`lDMF^ft4ڵkx4rH4lȦh Y!L.Fxٲe˪YF ai.`x9rn4W4Z#)FJ0p|+W /8_~\<3nT+eʔWu;wرcG{```=J.M=jRjv#dQw B"eԨQΝK6o{۶m =ժU:u TRuAyѣG˔)Y/P@XX G_q`mÜ|Ux⾾_o9pʕ+jt z:?y6+a0o{EC{gYhQ*9d{&ŋ`[~g ٳ>m3 \qMG-4H^_}ȑ#.}Û5k˩tXrCʐ88 | ޻w͛a'Bnժ{7iҤK<8K4:q`]ĉ5jР^+ :&& Ib0aR/ӧO;^zoFpppv+,)u0Ka\t P0ЙUVҥMJ Ѩ(]ΦF u+VwfOFg}pB5}[???4CS^4F+'?23~ׯ_W_M& FSAv)Yeˢi2e mUbbPgct#GL޽{6ro+ViVvmv'懸۷O/$bG;>`Ə?dȐnݺ[ƍUF Ge˖Ix.][.$'įM$X()xf&`2LŋCMҲHׯ_?((2=gH-XLg0>֭[:Xk׮"HE(]ڡt+R͛7.]j{eڵ+>.n7:,G֪U ?p@3DEun f23~Ӎ.cFF رc۶mdsɧOJm@ܺu ʠ6@WX}4=߆R-ZJM;WN 3f̠=M49|tt+Y
S] s*,,lŊA,ACh&O< 6lٲ%߿fѣGRؾ.ZsOuuU9/~p{Ft׮]S7 7nܼys`փ;0'ǎzURW RJt˷z3:ÇO4 gȐ!'Nprr2Dg4Z& (`R(g:,VY?x -#X¿`ۨ_549("_IBJ@o^zAAAY@atO8w ]cǎuooo(ѣӼl1owܶm۠Qܹ3`4Ts͝;7y򫄤Ӯ];~~~aS:;=:iB"##+Vk. Ь˗;qt93(ܔcС:u)=h & ?JHN{Ϟ=_}%Ka_oٲrʋ-[謩ycCٱc79skx XR+VrB+QdժU!AAAWhO1w@JO52d@RdÇôD֭[ѧϟL2F٨$Ӽ$;9p6=lgvZXֺ&!E+VXx^ؓQxa?GTP'O¦T*c;IkGM)aɓRعswRHՄAC y@C'UXOhJ*mmc]\\_F 9}tBCT̼6|ٰa޽{.Et}ƌ'Жpjժ˩7dH!D{H(v4JQ*-h"~JɵTiXH.NLΰĉVuel)TѼJ-\ft)eIK8w@{Ƕ*^ttG,,T^MUr<v4sげ@͋O{?aD5Vh ~clr… kÛmx}!R$ʖ_;T[Ç4ŎڧY5`ꄡ&@Uw?BiO>]jU~|MϞ=~. };VX<?^?eLNƪZC3ɳA4`;|zѼ 4G߼y+'bƍʔ)CټhMY}Dh2Y@xd2L'9:8|PsS2 9ȗ/.'taԨQ 6̬K%9,$jY,Fi4txHSɈ֬* P.;ߟh)!a'8ctJutXP"qA5Z9 L5;wX/!$O>dΜ9 ߗTKnR[И1]v7=_|ٳg:th̙t-[tdYȔ)SNCu|޽| ډ+Z׷^z=ھ}ߑ#G<==-[6|p\t...^!AeAYk x\jneP%KSBs)4mڴA-Z>S@%,Y@vի 븁bͽNYk@!Ӑo4zh?L[h1xW^yEGY~={Zm۶mΝhH3FOht@@MM4r4SalhJURx{9sni!pҥK.\5m;(y[rٺuk.g Yt)}oߞ8qiz*j߿{hƍxp.@ /^lРǏ7nnޥB ݼySk%Odm]iHԾj>TVm…|AA`J(QBի;99s7'ADO|˖- jҤ ͛<{\ҥ:iҤu֩g(qqq0:t萒 ?>ů9 P%ؘ1c'|nӮ]\]]SR0 @۶mhgϞmO׮])«B'Tvڟ~رcS#8k֬gϞ5j>S$^˃hK0{Vܹsܸ֭qB_)ڵkarʥT?vTYf|rMXnnn/>|ɒ%Sr@'`w顡kkv}LR3z:ڳqqq3gΰaÌ. GK+0`O͚5 VZu+kӑ+ XJѯ)l@iS-|޼yqbŊ0=zt+V8w\?W\[mh*RƍKw6mX!~;n= }}kb.]n@n݊;  *)A4LsV1u:R)_XOb `9JF|t<Ǚ-9qRGݻaDs wƍ͛7[s0-[vȑ:uJcɒ%;v숌̟?;wꫯ&ý:]o 1ZFR=dȐE)Rb푴o^۹s۷og+;=JwnѰFuС|LXXՓhtb~uP7n|r2/;v㏻uKboBzD4J2͟)^pŋ'N.|aꫯFitA^Z5yԔT@ft9hPuJO8駟.]T3_LЛɗ/oX&$DHHHZJ.ݱcGˢeʕ&L2dHkw **JF' ^FMyq}7"ffA/6TPaݕ*U Ep `ۢYb.]|Ǐ=zt߾}SlDw@.UM㑬[yMvYD ^xThVv+W@`۷nݺׯGR9bcr]NdQ;w,~ g͚\hѥx5k駟otL; <8o޼<]܁"(.r>>g[D͗_~yq(uҥ 4lذ… ].S#lAYd-\ OA9y={R '`._ʖ-s)S/__~2)A AFΝ; 40hS.]Z@RJ,pi )m2J,>vةSzyyk#FHbhP'Ҍm۶2\S޽J#S:)uz_&<SDYf3棏>TRnFstQݢ`U^rh!#|9tQ v=zt)+@LbŊ}xVZ]t,Yjٳׯ4)Yx<޽/x7sæ4-/gg)S9r̙knٲeƍQ` 2$_|]t1 mؽ{(P`jPu}6FS/xXm۶ "&!?wߝ5k;wXkB.`ZdLH^jjwZ{~z'''2a8ʕ vRp3g}JbOSNʕR >sAMFx90ԩf‚Lw1""aÆƕќrOj<^{ ݻ.aM)R$::W IO>/^D;wns>>u!GBa?+I3Mo?m{ƍiѣGdwfI@ڴik_25m8vX@@}NNNd#:Ȉ ̕+W`/]Abbbt93M^5yÇiyZ:~8J8sLڣY{_LҺup??ZX7XdJ$TT J'SZRy慄ԬYFdJ!;:ĈZF"AP6j4 u۱c+ ٳQNK^xqȐcǖ,Y2WAcDXuG :::((̙3踠 9&4Lik0TâePGڵ]v ?~<"}={6:IKܹs…iJxxB8ގ3G AFhiJlH W//M._r4jo-Fΐ+q 6"EZ/Xl+_(6oPmۺ䊇h#h'7axF$0dI/j/ 5<:ps`&s:iuhݺuTT>ooYf2YjE{… {.oذ7ã[nx'!'3mNCf 3eʔ'OҶkǎaџc֭kTy{h0lIZMeZ6KURbEOO4jcƌI{Θ1rE/=^ VPxxXhN.^6-Z4l@sXa qP;$-8:0իt~~~GA}!0BBBڴizdtI֎&hؐdڨ% h׎X%w9zƬ k׮TÇ=zSoҥKӧOO!s|App0T\Xf͵k:utΝH35iP['''R ǎY*,%-8B{iڶmΝ;a8–)SٳƏo aakA#3 61b,I&}Wh<]rxh5_tˉi.AjhλVF*U;w￟6mZR:wܶm[ȷ.jqxJ,K/Mr ls)D ?Zjոq|+V(IwqQd^i#-$ = *-\;3~bS;rU_~vM8… ,شi͛ccc/_&bAӗ.]jiS/.SfXb~]|޷Tr<<<зbŊٳg߻w-9ތիCǓ|:ۋsŋС>_hN;foo-[l޼9ZBUdfRmÜOee<TP!(2z8rHXX.Qa)G{g7nԨQsΥ?Q'@q jժԩSvEYNT7o=zd@M4Az0\kҶ̩Ԭ$(lp 5ϴLÇ͋_?o߾ ў]|'-[hѢ"E87ƍǏGwĉ;wnݺupۇ?"qnݺ5z/nݺ^^^UjNOesߥgJ:!$;uN=NT Ke˖wyZ%M 7)ώ8fݺuPdރFt"K{`9B&LrAhbÆ ]vB|́޽ANRS+.$%h3elTVM3Vgggv(`U5 4udg W xH*Mc (F~hv܉7f͚}g=svƓ@7mc|?V.ڥK 'f͚#FXRÔ4F' 1G06lq; rgtV{I&-]Դ o x DY)Tf`?Oϗ/L`˳'NQ}겪]AEaMkjڴ)޶?H%D/޻wor`ţ7@~dP3q ܙ`YW#b> )g֭C}ʔ) UV9ht qA削RØByرW~gh,dr~~~C z"SMPJ2GcH4o)Ma3ќʊgUr$OJGFw00mڴ֯_?1UF__ŋwOwޜވ̬RCMϚ"VpvYH - pԨQxW 71cL5ZV\TԵ !4?"Q5uL1a#AN%DnJR jO#YӐ$/NL4I.4GQTdVKdOG?OpUV*UbbbКC^q˗/_re^B/qU+ѣG[9y;wڵkC) sOh* D3lȲqO4 BA~tN0QҸH2[nָqJ*UF Ge˖}.]׭[wٲevO:3r8HA2n "NJOn˳ bCI`# A$;؀n-Zډk׮mܸqP[޽{Pv:] LfjިQ#|͓M4Wg5Rz /]g'SNǏW^"En޼Vhҥb׮]`>0Y=FDץ I %"aʐL9h$uYUg692ݢtblљL֪H'g k4 cuwwg7 78@mpbWuGp<4:I*y4dsoQۢ//=߆Rӌ^YzcǎagU6iæi6`c#d !ՠ*5/u.kRd*T ru~91*5$aN $y4FsiC<Z =`SZr¡P!7b(4 Aڴ.#A{j=ʕvĐ+Sk1٭$Ul$~iDI'qkv]Y4q,Ж(@dʂ h۸fRg2W%XDY쒠F; &!Ď $)  @ScTjFT_t,\h1I$6^ΡWˠj4˴]/WCmK#eApg4[7 voOPKBbf2AӟTf/aLr k4kJl];:mC8Y7, /-mr*SLHDnkzTY!iVϓxkJnK2 Q&&65v8MDfƹaJ%/\\\.\`,oK9iFl Tڒp/'SeEMhMhfeΎ*P1Z΂|W#G4 o֬.;}`l6ҟp+dvq0sU^չ$lX*ߙ}yKHHHZJ.ݱcGˢeʕ&LlhM(P} ISfKzsz8bkqB[lHԠB wTRhh Pq G'NrZ;vjooe˖=Zμy|||^5VL],/K_c 6rܷdPbEتaaak׾r ...K@'h5UH4ov{r٧R- K˛7/QȃƔۙ Nȱ<;yw'oZ$ՋIOeTM0* ZpiŮX3+KEZ~xX{d$,ͶYxҀL <$Ⱥ ¨8ƃ4aTD&ʦ*IH|v(,efwF&Ug׌}BwȤ$]B!o/[^ G\8ΕC]-&e \ 4Vrsz'~}2Kb!ƒ=Y<D՘ffisB))A ً|;xA4yB lJު;i:-}d2M-1Ob[m`70h`"#Z4:L+qXkD[d=CA0ՔVsAiF%ݰ458KͶhB4Z$sT9)U Ea/ ,phA0˘^ۆQA!Iӄ% -ƣf%4EDhQaT$B4Z̋Q т E4ZF hA"-`^DA̋h yA0/т E4ZF hA"-`^DA̋h yA0/т E4ZF hA"-`^DA̋h yA0/т E4ZF hA"-`^DA̋h y?7{(IENDB`PK=-`9cgswY>?9Z>JZq(aT)NdBWQKݷvk? Tg}o-$kanwδwbs>[y)vwW7dDbN+KǏ|gYa@gVݩ9Dy;_)e*]xc'i`^ZyWƐQFƐ=Wmv?u~>k W?i3Q?wIߝ[Mq_\P_A s~>qCyា›MDS.Y1kp}q'fJþXI1_j5Ѝd﮲k-^ [_d5:tc7OeᎩ %_?wYj/օåOq:OKb[E1ʷhya/W7jl.iӦ̐ޟTV8~VF2Qgzi&Fc0v!p!wٝVCqOQ H/?M)&6W5ʪƶ~KZ-]{-:?Y?:utk/tnY5ػ\s9텊cWGX{Z)t-v[ pI~nZ\/J1F~/6~iG-xk&mvM|yQM?ts.XT6_~*6ZdKM4 #\/>g+=gv*N_i4axϷ\Bg,^b% ΜAKNJoJtK:9xWkӡDO Ct_N{# ψVJ>jm4[W7~{,+:Q/G_!bZ -)=W6UViq{t"-:2Q?q}ZczYj>3I1tЙF~]W'\=5҃Ifz4K6a>!/c<U׆w߱#VLL<.*k_^qdtzT@?ٽ0|v%w,=ɔTR\}篝r.xTj);hcV} hzL+WnnHCϱk5Pͥekc-Y}u{^ᅬ{WV,=>'aR JyrE-?wq{OcLC'LG%οqSM_ꇩq{5(/WO"qRꘀY,>͗8'5?*ʫϟcs-{TOw]nSo&ulcr05JhQ J<<1ofvs Rn=mOiҿCA F%|Mz*jp#GN91Όi%ݻu`UqNt<OQˊ]93%djk՟}Yaut 0fCQEg[}/ppIa(=bfx7G6;kZhK¡}׿i>>3;e$[&Y$pilk0Zyֹ/2bs;B_w3؞EAߞoOА<0oD_}{Mȫ#6vH\m!|ܢ[ + 7m}?gWu6z A^֨4,4?H-ۅo/cZq8\YlE%e8qTT[bgݛ7edoɖKܮ}"zwH7}\_(HpۋnD7^-.sqn~)\SxXܗ`j]UyX^1Vq itrk+s]`;SIAս+~ZZ\- 4S t `k_%_f e.o/0pgCNmq}w5=!d(oMZv.PUZ N{{sFEZZ)ωd yb}}Ip 悬.!GCj4W M{FoCѠD]'B E#I1\rcކ [> S7'[+ W‰arbu {Ȇʜ ȊVX`CyM\ ZvwH\98.})Ռૐ/}$C{ 0vˊsp N݆yufU3%U[,ocz^PSG;5v)K(Q=)8pSbݷ ̜7m7mO.HJ$ 9dm{J$3>ldv)clzF#`zf с9</}dDC QyCC8ې=IuLVCrcSo3ڨQPT-yy 1^fJ%(eeLpdFAVYmW_iUjru|udUZT#l>odHWW lIi\wXcD(~*퐜Vmrx| Ѫu vʾR#d/8&K]q B@IJJ2%-](cD:Դh7LՖZ¯rw&@7uXQqio @ ;+Nf9q8?S nd mo\nz^4*:Qa-ډV071D\p8EnQJLsj!+lP!͉?)zKjcCe/ҳn)IL|ʴ )0Z}:MN^&/Bh[&{OU_ue¤x##qfASH _c4IurB5/}+9%ɒ aD ݪf,(qE ? ,M!np:]JzҊHTNzׁfy 3tz总RWiSv@D3I˩RF x^K9{_C* gFi&NiDXsKt-}3=xkÿ~rO޾n=C*?f)1\I"KЙr!7%@שzK9w [*;b-hO5xx##JUIRY(۩tcZl6i+q?kD#]9ňF%IU)TOMKA vэh|:KD:i 烪] rPthDL`uΎHo~P(Uښם22ƭaC mL؞*gG*ULzܠy RZ#;B/жץ`V6{O=RQaXѵ!ۥD52k3\jfRNǫA4 ! FWz@1pu3GU4qht =S F :XViBttn9ЍqNA4M&<0l(\B ?TWy 5ɡ~k{x _A!5ɡ~@c`mW}Jگ " H  + ?# u[=ɖ!jkT^C~7 X uAP_G4Jc#.pa3#xaۼ /?,~, 8rvb;ra'ӖxGOϧWgVUqnee~avh)^_v>yĤ?$ިŧʇ( l!=#$egz.nC?+.c7 ğntg5\R8(dgĥbqi輕k^^R(2ӯx W7* :w.K_[89Wf`f"v! %*nDZ믽#9(qUk໳ -NJ{2lPxi.2ڏ1l&}+`P_7I/ҙz6{yfX)Ȏ9rK;L%C'Iq%Pw)(%}plFc~o:dB c|y]+c:0)܃?vH% ?ρn0M~SePTLhsSpHG1@dhA}d@ c;E%mYǡ3i$,!hx3m1DFWÐC7K8P?n(o d/SY@qDbS]AG6ܐv1(+8U Ɛ C8)eVZExNx2JFkT5_%j:W}קd/@t~QA C~O7Lo+Wz9LqGlq&v?0{ʨ+;>&'PW*3EcLJOh ѝ=Ck [0cToR m~2Z@AFϟRZQ8k?&{\(w& TLߔ0+;nӥ" -hO5?#xA/ =~T!i`5Yg(;>BSX?ÀKp"J^  P_WdjETfDi'fb r3^4VJLTe404fhmRHV.[Z*W>GErhz#ӗ+fj(TA{_ B 2Ԡ*2QLz_:U1'N+ӖPV*+ H" H  aC]A-h" HCkPal+ؾt% WAP_AA}EAu#]SVcj-=(RVJP+WR{+r݈ޱW mF1z(jT+uryTA#Y z߻O4++ܑQ˭W20(/? s}%ݿPipc'D^nu/em~+*[gR]i%'gpz+O>M2,euJo em5Ņ7C#;H&$125Ʃɪݍ򔽮x׭~:}|NǿҸbIfbj_w .㎁I$E>Mw9w?D|JhLe@ a8F̃ܵ1d.-s51?Jg| h`%fED 5Ti\c e8W'Ψ:x5V +E&q 3_ww.[pV^y6jM]yo4A}3L$|7ǮD̆fHϞd>;%ҵ{T#Wb.SP~c0M AJ []㟩cuf1^  VMK#P 95$Lc#g-yW2;( CJ'//a;_]rr6ywOJ]Y3L}tr Xdn-YX!9ёbJ RÝ}OƇ^wpv6jͶp ^J[nSǒ`[a/̔tZ9 rn9Q‚xvDŃڴؼWHp`ЀZZq+2C]Ie%GYg_fY﵄DU輓8vX.~QY q?1 0<ɥ7*D]k,#Lj+#>CH,jIX6E '7xy0 ތ \xxLFK/6lo,Ul gVUm5qꖗ]t?`LvPݫrs`S}ghC 溿|ojO,#k29U6sq9dg%bq o1y^"&5Iy/gӔ5W.T=7øM^fE ;w $aPD)Ͼc%ߪdz"Jջ ;|` Ѝ&fV~nog)gf1B=?"qDEbޒNSY[}BYti-+Ip3}o]K sodLdDjqJnJ~$Ą:R[݌Zv\4Om /.\z0 ~R,;>49w uiDDX^]Zhy;ok.T㕆d 뢯̃{PĖ֎P}܃Agi&>-$.ې_!cƪ -N` {_SMiWi:Uu]YV]ts I 4-VEfy2 [dDb#X՟XvڲD X{ҪNu#?&6}]ujh&a ɋ\~k:dB c|y]陳GK M)-+Pi)-0_Jv-2pɃ:Y*3weTF%NJR2J8rz9IΝP.pDgFE=,"O4Z81F@WrOe֋ Ds- M@cƈB4abV/4ݸ-g %'CŐqMPV]@^ƥAT鍪/.)9zMy|+)M3(@z(DWJP4ܿPuoT]k2]jrсui-vjѓ-'9&#) ĠUb5&qcjFb̞nyw,}Iq;qq=WlB ;F[;3a&=h"lVyHN'xWߒCwL(<@I1cȇ,ON$l|{%2s]^VOgKAখS=[/#!Ao8&ҺB ~ٻ >/]Tw&6ERi_*Xc̠.:bsYp#W"?f<涏='tD m'WS>75\:/` c 9|'EOYZ`Iml^|ɘ X4ךS nd mo>fL\^QW4G0қ 6Vs4'yQDYYrs["~N b§3Vw4 o&؍]Kf[^M]jg$jG.'ճ+'ż7eUD"-~\=eT}Օ ftJ\uR$LdG:ֹ G:P_ŅN r5k(/KMNz\4$o"$~Mc}[J(xv 0X-w:L#!eM4+TI=rVZMȤkF]m$j|ǖӷ;?ETK82Rބ%YG&ZjV*G<{vIn|bvpNՕIΫ{j}kU4}gP2VlCo',0m%ͯ8܃&kpWw6vw{c"H>9U{˰ҊHTNz#1uN=,+2n|ՏCo addޘwV.J_eH Qi'ADTɂ<^jGQ(Wsk:&s&1_Jޛ.iRl pT[ȮpDּJxEӬvd DJmP@``u Abdjи^'DTh|av; t_}g^S} vU^$4uRƃ+Bԕ5zٽľwe^:pyx+jtgߜIvZeWNs4/ڧn,w XαWq>KiGiQU};Gխ25k&zTEYF^,P_Wժ }}AT | ONh*+[%ΞRpp>ڕ U)[R۠1tlA\/+2i]7E"zwX\#kJ$ev#F(̤^gJ1hh貿5ᩚ#3\jfRNRÌNjZ9tۿiy7ٞ*'@F]M?'Pȋ쮪RiՈF^e7R(9C{B׋^/;|*7Q] vMt?6{(QʚBtWdjETfDw4;꣎>t]l/UYgVUz5b65٣ .^ (4&w yL{l}4t_Pϸq"D:'Wl(V*C${wi➠0qntD-]3t[`>5g`"2H(atai=NZh}" < ë]F' uFXl_A  iOkA~EAKKtU?C[@RiRt^rWAdyEv᭯?ƍ  ,ȨLv]Z@}EA*JF,q7+ 2 y " R.URhhP(@ösg~mS'X24Tެ1c ;K}&RGuqB_ %ذʙػ[ywn#r7㋓qqg~Gw:%PF5u6|⇙y^PwA . @QO r7POqE$_n7LzN׆'m43O-KJ$ 9p'!m2jQ^>wxQ:3DDh~]wmjฬ}8/=),?1"a`nT*<cJ JynE\/)MGk_[89Wf`f"g^Z]sǞͷg^2QuXQa/ -#7~Qagn܎Ie^̰̄oL3Kӡ>qAH`HS@X-c|aE۬IK+'D6;Ҋ !ٙ@7'-n\¥7_Iy^ &َwj6yWkdczlx^{е\LgDF\--͐!ٷm44u€sW<4P%eBXfc;"2܇5.ܮ_ӞhI'ۃ_A(>9}KNOgd (z]PG :\cwo.iV7:Z3_&[h`{ @+^\\̜fρ?{Kܫpnt!*.Q3顛%sP(;5U/pv\l=oVտ)P_AX]2¦$sG'4iw{\#xvhp]xτw r-ДqZЩxUޥ Ւ EIYr)+6R͖eKiDX} vS n"K/t #9CN8h[hA{6H ɋ4o4>~g2dwwF8TKe3t~,?68%NڲA:=AqWEu!B䨮Ae 44ȉqF޿\ˡJtvbi'*۵M T}#9Tvgr_VP+)nޙ mA@t jiJhɕD aa SxMa&D~1Enk*Ϊ;+lᗩ| geaBGʎ\&(qv<|B߈`A)P^CM(CA&xШ j Xwnn< 'd?F-^" ǚFc~Sl}uZiS8۰* cba7X%A5z <ARTj5s v::ݨ r5CC#[_[hܨ ?R lAkؐd Ȉbzh" HCkPa`"HFE+ 2,]ZB MRt^.0 2@Ֆ᭯?ƍ  ,h 2dw+ 2PT6B0dT^ 2,'C" H  .JgO乧*j7jS6=s͊>2D4ovr\} 4`E ne1Ƀ*}BRn5*MnY"w'F!jd, u[=R澹Q1l4naQp7DžY66ԥP_bv1~kwb8 _+Ӧ=Y\ |adA:eu ?'<7A~_@\zWl\`#/?,~, 8xfPA $125Ɖ+*s/ȒYa 1ey%-2'|ˏ LUdkCߚlN]V`2Hg&H? ,2;b=+NXlG#Nfz,"{D&M%'W.W۸w^洄DU輓8voN8|6юAӗ x/0k>y럮{%:,7X}s'ʺ;i5㧳&\bo8j:AAu{k rleDM`DAfjgO(71Jǧ RoU~(ț>#8 ș (~Yj~?ZɡEi:ⴉ6QE+xXz;#$1\Su@\AF:-J큲F $ѵ%6p~y {h'\sYkK6ԓ @#&bhvTR֬1Lҋ\B]Ye š:rnt8DR#4į^gCxl Lp~]ؒŸ́M ^y޸{/YMm䷶JNI{O!y3Ox !K ͉?)zKjcCe/WG^ _[\'kc:[<}OraXFڋ*nqk~{T b>9H7&ONh 4}nD#fQ\߄ %t3,7`9u(&96gfJ9?Qf#aEwiwxQhP}(OxnU]J}1G_-k6Rǯ8܃&kOH;/;WÝX/WO ?uL,%b5\%24K?!X4)8)Miyr= mf;ewDx~x&)FWߝ)!6d`.VeF斌m6tsĥYVu4.%weJ=T*QgHQ Е;#_.ՀNSOW2XEq R9P{yX;eG=U*OS4OAѴ)[S*mhwUzS*+ztyw4ȁ4@ƳzH"tVSXfER4k^WaK4N~ CaiB 8/Ш5эNN AO1)TcHtȧ.拱1szԼfA}EAAAWAdQio׾>,?N`Ӎ  ---׮]344o}mQq" ȟ\pjK1xZaCZAz0r/ _A!5m0Bam#2B^گ ti Nn67Kҽ{ Ȁ֟YF}EAhdd4 d2ݻwjAPT*F!Jjܨ 2,'C" H  .JX RJ@|/*ʦηLso[S߮)1ps5C䅣~sPsz}Xy b 1~F~g^LOs֫2` NCɟB2$ Cn %l6G EKS, GICR~uСL1 [0c- GeDnCA0g"?n(Aዕ-94'pJ7ƇnM( {1_݉>Lu-Y"mLStDS]>zE ;w $auzG:2š?FHV$,MSք[l,^R#T 7y)w#r9`{(Z!8#2n_N]f!^<>}yk̚㓄Wv EE=PyCZuȐ^H3)ui럑|f_ v-ɕ_|zτ=>0wz48ڒu'ܪL:HK/姁8TۗW R[dr,ɹQ8 [ {ŘG@Ku' Ec#6%pN}:d\?YW_֪<]m4A1M/]fKffepoOqGįfܙwJ$pX^Dqm>- x8Xg$q_֣HA'9CٻɖoD!\&jAOB i^ax_U,%=k/&O: k$IVt:#8=yuh11IL* Օ鯩ɤżNm1WZTQ 3myAy y?.+O nr 9eCmïU7kG1/CC+c-6fXvZqytv}qܤb/"4}<D˟5&xHDGD䘕S nd mon-9>ϭ{ ӠthDM Q@>SA xiD!fgNɐTPܻpGh<_ N>qI/|uH0ET]nq0=< Iz\' (²"vHPw9CgD7,Sk6__ZI׮}O}zŴ p=C7_FpW @ ړ * a5(NA7L*vܲ;BAcgw|u1a{T%׳LzChtƭaC mf딭HmP}lGD:{J5jW*/JkQ=%weJ=y,*x*921;AA/El5*CL]QhLfmN*b LJэ{'+3u`K׻AF3@w6 3e72iX$_ :U0hnϼ Xş<ţ<~mƹ3Uӷ1 jWn$śwCLm(<_BQ/`M,b0VV†ݨ\]s+Asr3i$ؾqѬbH=lK.{zߒ ?,!14͂stۤDϰܥC_9d-Bˋ(MvIu:drtV6ӧf&kjRyFqe"Ì_ח5m޹Cyqݩh!IXzR\XO?\{%%iLIA&iR-?- (ORvAB&C\A_ڤ|-"}X zqU,(;ն6ܺ76GSV-UGQ--?d2+> m%ݼp#Z?l(g.FrѦE2}kҧs騌E:$pD|+V1fʭby@II 8?Gon5y [_u87JkJԩ>4KCn}aQn{Ȯ*<7 cz6\IufB_]N#e7./5Khqb6d&È]_ [fK̘vKo3{$kZR [nFݽ K׬o9'AnBY_&N-TZ<~-/~z{UG< Rhy/~(̳ XC_yk>t5iAyb{C9i.j^lIbqeƟλ_JS4/,rQQ,3B,}8~ø GǦv"9t~^90bK ( -#~5f:Π"T&p4pzT$!ABdY8\M#eept#Hm7Y 8HEp)T6VNRjc `X) `<-։CD+F4ں(JҭyӀ-`A_G.\\!H!p kd)8ey>A!Oٸ !CfӔR_ʯ ӟCwH`a]]˦N3z|{!H Q~?2m;p-AbEعs(XYgXkpap9l6Tǎuth5Wp% _&suZm^(zX|EӮsXمWυBIENDB`PK=<@-Pictures/100000000000027B000001F109571736.pngPNG  IHDR{IDATx@?ϐ!CLPP@ Ȇ^;(uDoB(F&uofKyoa]RPASHQl~gj:>L9;>y<:A0A" 9@EAs  栯 \iQ4ڮ.^ޡw X[eX̻W1}qA!ՎKԟ}v˗L;++!K3oQ#GޭQqA'X^*gb<<<\q/\pɃ&'7c}dggR9*. 245]޸rHk_2ePs _ONxfT\AĬt+ƌ$&&؝# WPFˋ'ɈRL.wA1+]]yy?h>,Pwv-ʭ;8Y_~Gݺ%|-H_-C S?m1!1*. b>:ujD`:W*p>]0UuĶD/(;n߭_8%#IK2'|yeww;lZqjR, E ^vXl;gZMkZ lׯ[Ibs[EA~3]8yĉܪT"26_5}4}vR׬ Q OǺn+2}F\"DnUDZbמ=.e߉,ԉI-^}]A{DrƬ2ct8OSƨKeCKz˳W;a {JŅ /~U1Q[iA]qߋVCnɰ#4}ƌƄ?sq¿͕Ym_)?~ϟ|QAsbC ]ו_4 zq醟Heh|{ZAwZm'",IU]}ok˸7F$2ESֳLqY$D"(+kʍh疞9i@v#rGs3= ^ S<ŅtaHq T_|)[EAn... ÚaM\Ikɴ&J$R{߸6;/|~^}fғM[ ;-[iWUkod;g:=6,3uMQ_MCOb 3dt4]V#FÈ.;b{?U;kی 3+?*I] RVaAmPo㙑JrKց<'y|z%]HX%t7؄F?fP_Yw3Hhv Bފm\6wPPi0_t>8[6 .^O8VUzz547">R5߻G_&-*ihuaFA>nGvQzH<~(n?av`pE{O}ědi$c? 9AKtByqxGJ-+=֓"f95bJajZ"#G9 zo}\k fΚ4{+oӛ@[SYji=JuxϧQQPt>||$68D%I!N-[+ĻQΪJ9 PA0f>\V8m6-mX/ #dzAQ>T[kBWJ\4 ǮS'z]=VH ^5gUoA3n;;jw4(- `F/x!%0)cMOS#L5Vbӵ#`>`mu| Ge|$~;l\621a.^`ΈΪ{Kl#fkL ).[-)L$:MO1 I2VyDnVnޣ6cN(W-u5ց.(a 7Yl[qh^.ʼpPKr081iީSf5xYh(hoDʾ58eJۉvElאlD7NO{pz5U8Q{`w"nV*)4|" >C_':Җyٞ;*}_FE&RS҈c +)|^3VzՕ cBWݗ>#(n1,N֕y0!%*y-|҅RmASt$e$wv_:ll-QZZԹ']+G:s*W7w={܏1 MerALڲuɏ'5_]镹E1XdtB-QH*X'O7,r9ROD²kN3ŎMGc. d$dGO1`XE_ǵ KOY݆+Ӣh^ '[EJ}mKC7lA3lmq=yx ˵#>S7-kx<7ϰwϺSSmmO7K _aofo6Rnf-QNQFIZ@YYu_'[7Rl@";s4]ٮ$' &my:٠ TY*Kb۱{NJ_rZ|LZ xuk;FMS7(  Vc?ofY% Ms"f[[ߑ8w&?DnoXe普55( rKPsDnG}1^b3zW^ٳ {K &fax? bV/yɴ>|?Y9i `$;;O:^[[qbxz:S} +++a^^.F[~[v>Gpjxxp]\FQ㮬{" C-N6;c奺|YTjMwP.,[Y(&MSGGT\Ad zFuTWWV=r o?!_-k<>c^K]7. !^g*@lV_ܬ@(_wRרϥ., =Kal7vƗDp'\~.dz[dl1IL!]bA[ǔcj#k4 WylΗ/jꦴ'(͕*y\ޱܾyx!Oem9/ mǫ[fW}K,^?xw(ǧe%X!z2JX*%8uguA˓;GF=^o"<`d)?- K<29y WOU+q;{ӭ)n%o$:jC{;D~j ͽԌd*ԧ6gу/i:X:CeTf5/uA^!Gf[1ˌ̔<ϋӂ=K?zO0# 3E1_ rbJq)^N7ய@P}&ΩSfSV¨Z꓎Ǹ<ٳ9j`P٭%KV5`fʪՂ &T]Apn 6_[t]!0:a9=ר@D W K^}$ZSPkO5#<\qnPȀ4 zCm rUCfAd  9諸Cfp# c> bPqA" 9tן>U{mC|ס~X~f gD7.핋HC`rnZ Ad2@q.N7FDп$/q3]i7D4p6YN~Jz>}3cnͽ~S.ؐZ2_|# UCi۟>JYoPjtӋn`ɺi)Aa@ $.eaItV~ƛaa^wl?*gJsP^?-D }C7RM*d>Tx0x9&h2LNMK! ?)'F):?;J{r?Ji|RvTz'z.dz[dl1$mtM@%RGo~3"ru$6`6v\8)guabQW|eO'e;o9Th')U$-nClEfV$j؟C/9q!I#9b+= ]Nol崩By0^6tJ^wab?&{hH2劜9cv85=g ɺ_vݡ?,R VEMd {L{CaŅeq8?#˞g8Ϫ<+呑i+lwiܻW,~ͭ'x@_Bk'8^pJ˕T-dQRhiϖWnqo (UZ.oɖ'w ɥyE[c5 [+$o7yG41Вې%T-|*]M_X->%lh{^hwSOe +Wỷ}<7xH+JQR\~coU肄|g8{<149gEcy Yfqp^ ɰL污ip%CSkl%'1_t9dĞ{ iϽfEҲ#M>P_0xdqA FՕG5NS b} ]PYּ?>,E|+@rg\^ CUyBjt3Ibm%H[Kiju&ʮJI'nEs濚7$J (=Lx8GyĄ-KE;H*j<_=I[ څB3ԌKS RHlz:V Nʆya$Nke@v zGmknHں2+ Qӛ!^:0f$S&f:. 2V鯅H|[7w[y'28O<&@ On햾9(0vcn,R K w0{cHh=f.$&tʘ+,_D! uh mABxnsIvNgST}YXf'pcBgdy.vU6ή}[A7fIжc サo`ƵmȟZjdud`!1x]9 LKUyѕ3iyʼ9Mu!{+](sKJuza10m6л ,MVqEJ/o[JZA9 :37@'`;]U@`OA >!塼vkcj w$ɵbNдT(JO (gM0=; | 9%]v~§GV$ ueOBy@Ԓ]%&3Rq  -k!_A Dӹ+ ǜFFm5֜כM`PFUX1m X,wm W_EA 7HxWjBAˤ.2+/8 |- ;dV G - ;}qAlY%Ͷ2>d8bĈ^ nRuF'T\A|,r/*. T\AdЪ[[Z`7|;Ep=ǚM[O7|G<Ü1gL ͌9Ԇ rP a#mU{Ќe0Xq5}XKZgkM==1Ǵ&BDO 2x9|ǾYL 7N6 ч\G[՞qybu6i>=w|ռP ?^^ ܡ_;[Ev9 Ea|Ҷ6.L= JoFvXh/fɛtTzeI&u*ҏZ? + $+ݘ~\ib^ϘJ+m[oso=sf*_pU>9`uZ+DxХ>Dˌ=yI2-2퐮7ͺN{ϑ̑T䇤mK<&윿Δg nnqL>lnNC?w1uEϝxCpI~YKqu܂g+S7EƸՄ@m9/ mǫ[fW}K,^y\IXIB%%᱾m'V(28M3VygURqٓ<$PAA_7mXYYsvV tGYU82{+$VGemCCI+Te{DW=jWyzS:K%sxg[[/ҝkk뺗#nV4j⸳ynN)K#H&iS̶[$=g)<3.VY~Lj,Pa0۲X٤[:&;+5DmE5Z/k.( _8;GA71^c:o $dZn lAscIZX5adl P9 Dn }WnG!F΀Jy^˓&n=sF*ێl'&ic}dqa+Oig"oCj~mfN)@ƻ_\S",u-H-8\2+ @m(EtT=E}|Us~U["(\X7m]HόOm`QIYPJYEMTCj9_**c8..*5<:P^%;&vrGao{,;j?9/7Wd(&/1}bEDwUg ~;m{Ǹ{h $#I  YR;463˘Kݜ ,b2unXEFo4fOH?幷م2w>QgZܒ&֭׶;shjaJwѡ1/u#8e@'Ã&CzF뗄kfr}zdEO А)x:3h{:$I5Ꞝ"^S͑$n , 1պ8AR(=)4p5lapCa's0UʏQ@EmYˋ |͐*JK`ݒ<ϋӂ=Ki^1r#(%JZ g.⯥ @lUbq^=R:]>h%[0Ua(6e\ go1&^+n.E,%U7mGYH륺QjIlI1?^v9()^N֓e}X7O^~l!5_l1 -jJ5(OE(l~w4MyLݥ{Wbz-:ٵM"a*vJkš/.[HH䀢Z9=Lqd/-{]Iٔ-f,Yրu!àȞk\O7h1}(iQ淶3|aPrüc4*P080íl9}YםqCcB&eQZ8 pgXք+`.#Ta  T\A|twwz@oPqAsqI[[[CԲCOo:*. b>~|}w-Ap-_)EAsWqs̊DRE > Xf[YQhwNuww+ʭ[b" Q=66ƏSZvvv>|7A1<LJb !@R577 `2E %.ooA1|AA*. 2[^ԲlKW$KVӪbl(pӼ77mU<Ü'N7hϑCmD}~hm?tt3m8<) V8M%D>@"Ϫ6F‚mQ~]!"3Ex;x;*>uĤW~O駝0hn Eoo;V}Ыmɗ3S :qצ AZ+]^E}Xŧڪ{*s'G_U!zgpf4(;+0 ӚuW'A,h?*gJj?`}oQ4> T*ڤBK>GPQ(e,cW1vM1.Me'{}uYe Z0r+ˁvV-ߚH*=<zP{빏OiDxR\'2]fO]wKm$=mtM֝ Gwv{4dD&?$mKN_ u$6`6v\8_pU~ɓZ:-jCƢ8'xL}?_-m?oԐDw~3"ٜOHݘ^F^KDžp0E!_MxFso% s>m'2vqO5b]{t~;ĜEn}/Yqlر$JI^ne_.`{ESӉ1+"]{5WρZ.;e*9]QVxYC~ ?Z \-?.'w(L{XN[áe%(8g{O/D;NpdiϽfEҲ#M>P_0xdW啢"C<Ŷ(R295MϹo_]Ҿ:2WLcc5¬ssbEEij#ڎ2=HǠ-w6 6ȨJI'`̤•]Dx$Qۉ; m [GiA{lp̦ /LuCTK6sho3h\vAefY<ɪJ9\W3^!As-/yFVH 3i%kB 5:g{DW=jWyzS:@֝Q?L*k*`z=" vD<8\!pLxT>0Cm{6|-Z3[pZ)L0Xthu6ȁaygWh k-΢c%ÊlD\l;db='dvHx{ːXptw#6xy5ĜW!4; ĄNsEMiM2vַ;\hTxfvC͆m_{ne> ˭jN7-?unwղ6(;P3d<;~{̣ .] -vƆip;[8A}ZO)xkJDnJs!faUy;OM`ov@5,A0p-A>["ؗ brfQT!cIV.+(ӓl?نxd]x13WNNN2Zd~榄Mſs8s?K8,0{`} ֏L. ;dV G 'z8 / `tEADzel65˾s[Tnj|A1걱1~Ųý騸 x>>>,ְzJjnnh1DQqAd2)&K](*. b>,r/*. T\AdЪ[[Z`?Xnme8s9#TӑUbPƏ̫*~{dx{!6 A> (3F۪.~(}kQ*9e2"ĪO'C,7&Z'`~O 㚧G"Ϫ6F‚mQ]0}ĆZgHvÈ cBΑFwO7 "x_/ʋ =iڊUsy7v|[# ֘LkƀЂm+ 5]vr6MǾYL 3[CW^Kן~WyQR"k?)ng0"x{s!l1eo !9}a z裸 ;PEi%<|='?ss"g$ѻxKfv*b2rRMCKHH9ELbvmcge5_bdq"×9w-vM1.Me'{͘ź8$rrR@(_Ʒ?)-9}'} ݵ&6`T;4N,{ҟk5Ķ#ȽGR"WT4?Oj)4[2E?rӵ]^!ޕ!Pztڕ ෭x˹M3q|7 N,V8\3qF߻,U\`ӥޚ+\mhTeeգڻ/D;NpQW!,\7ß~tM~/r{lr)P_X->%lh{~qRBWGn3'xqX_,CLMAt[rY 3M1v3oM4; "6^~ZTI><"`̞% ⑨Oęf;ܜLWefYXnmUsLْSZ53M'#e}$Nc[dxm:qc(?H'ҢCv>5 !?vK DnX:yņ]fY1%3N4B2_[ ್!:+VUTp\T]N3s^n>>c( O$ZOO>2{d❒u6R \999Ylk-U%ϛr#]!l?z #}2qBKZAh $#I7$$*Sy2Nϵ#^XOLүPQ[)"_3X@-&=tZn}Rؑ`sLA8mUEW?ǟ2o$qS `aM"6}2EyQp6جw:77fsOH s7p/B8f 27`ݒ<ϋӂ=Ki^vn &hTO+j x-E90TG(^N7W>jz/ս)Bqd/-{]b)(o},Uf7y9ɢ6) þv|<ҽTv1Yŀ|hImbƽ^쥗JU7Eb{fw kUj7)03H?BBLl&6o.YRk6.0(gMl.ג!½{#m7x#*`9萣/1(jKE#27`9#T,iDA T\A1 6"?PO: *. bN:::NZ.7%e ; b*nY11[*82aSGA1˖Ul++w;,ΩnRuEEAǣzllkl<|po:*. b>x<e _)*EEAɤ(j(.qvI{ eз bPqACnmUj`H (3F۪.~(}kQ*9e2"": ,{ҟkkh̀պ59rČպR aL9FYY/6Ey|잴Umōf{୑Y\Y@l4-|#4տ#.hoǤ`}̱v[!ۛf_.ȮKܖlNRda>~yxyy I;sa+HPz WsmkSܣ^I١${l狅6|t-ܕyRM|z5p"2Ϧ< ].o ?c`t_bdQ@$\z GzlЉݡtm,u nEʏh~BTS{D-@QB; 4ùtȨzlVj'ʷM2^18VV{)-WVRyEIIxȞZm'V(27 N,V8\3qF櫹KbIڳũ"cjBږdކ,jSmC9BY-nև?"@ S/1Rqw*rA>ڐ=GܮR3*ԭz$L>w}ؙvjܔ? ^'$.?F7?0ĖG#)P$mٶ8`4Øyk' *H[KjtH*|̡ KCӮynN)K#HyNڔVD,T #Ly[ 2t]īmF2(*V7fx<_?ږeeӓ9ռB򤉣ۯ~k3UGcY@JMVQ G D-hHض-w]M'@0sq= `O!)H#pQٱ 6 2pD 0 \9Nة6eċ_EŽOoO;vqyZ !mn7ZI<&mH:@ .XuøDZ2*2S% jlh<}ֶK.YRx5% ۾41;8nᅶ Ǎ ̓z2!-:4`Ӫ^S },ApQq 97j_)} `BZcu-.޸D$g֤~q /[vpvfJlZTH^s,H rK DnX:yņ]f0zY.ħ-:cmsgexݤrq F1&g #}2qBX8=1H> I.ɨ ԯ$2Nϵ ^<А)h \kvT%Dٶ,{+](s꣒?"-)jwSEf5-hb2( 3sI>?頻xWEl*CL(?GejvI^YO4]bqPK4J [ Iۢ`c1yPagt&Oͱד(*aSEȄj?Zoيۡ7A1O?}P[a>kᾊ 8 / `X" 9諸Cfppc 0a  wz8g_82nn.#D"H]5.aT\ @TUf$DA jYW\HƂH0?/(kL?D_Kkj@j%/ BTB]1Af`3 ÌBϺt>99r0dhD3fG˳W;C^l#gϝ/-gb0 f9xfW}}}hzZڣw>=,3$q;;3``0̤T={g/eo/PdxW.Suoj[)Es?By4`0 R\ɊB( Zm>5qBs[n$hhi{m;2uUCDa`0ÀFJoNj *ߖJ#?Y;lff$sTMS'nWZ`Ź,Κe}cWu滞~XoO0 fh%*||W֣+ G9^8J4֝8y|ѓߪRk:Ȓn UYV}hXU\>-fLfxolդ3gʏ{9t׮[Ktd?q3o)Yx Kr]hKATVte+7UX]Wuߤ]𮓾Н]<݃?.I_تo½F #m3ỏ &m>R*ͬA?h5s' -X$kfrtf2*_=sU; c6A ).#THm7Vwl}5yd|K.YN x{UN P;?WC=?q3ײ[谜6ڇ7ӳ I΅Qo-9BFna>=h..8JGbp5&)S!]U+m޷s?>h]Oi9kYO}%Gr_~BϮ*]2d|S'k:f]%[vC7g y<5.8B2V:PṤq3,An*y7(aڣO{a*m~CNhʡ!G#bٴ\ Ѕ/B5+agեP URHR GBΠeބ~8 g${wFHJ"5/~VvBNXzu:"nRqd^O(+ٓPHQPL<O:ZA{BNП\S?ؼl - F `_Z #kNteK87!V}y[׆ythȎábaQFlnX)nT#nоc,U\]\ZNV-UoU0#y*AV{2`Qü!t՝{j=xԍE>w4G^) Ay:I1tߔڎwXah[o[ӦQh+cfO9?.2lXo{s/n L1tDES ݷ-hűI;~xp&+Q kn{)ͽӫncbq}2 HQ_U{ah>OE6y`X*Xl~quW:|-BFl_n_hH}MduvXc>*@FaJZǕEAwksn=hRA+QHcxNs=/I1$Q\:\yC]"T M~(20RPKql.Ce21> }דIU&J]2)b\qV8x}7eqZbLƇUQs-i`鞃 ^g7Z%c;5uwa̞!,M!rrye=~T(}8%6zG^NKqFuGšŅOFZKaӠN_ )ګy۪Doyb8cwHӻ~=:a]7Qơ_ ǸI&!Vhf$kr|o֨OˬϴZVa݈F.~cϗu6vC Ч]AϹȮծ&bDkߔWE76&,O&VKù.mpQL9 i d sM{sg=ced%ӈ#xH.ˌWR+!xWk(h܉WBMc˼bZeWԖׂJ?ɥq2YR3tcԣ>b .\2eo!4H*8劯;'ˢ3sR I(LpM_JS|5JkMw]F EX fS\ !ƸZ%륭UW$mes&SŠShXk<ʰ6$ݣ#OK[kouT:Rʮlh%`"෡uTKc;Sذ'2e$Bk:?!,߼ދenyXT\(IM?y>O=rnt _HwxI~Ԅͳrὂ;eH$[jjE,GyAA[ǙWO w0"EOlK,Qcd)dіo 71AhG4.OV⼤$UQ;iՂ{X%(M&⿦ՎJcYVv͍ΞNRr(fU)d-ڮpjN"FiaK.5P-]4x] Yz<%]!.qҒ"sw8K,=YJkԉ“MVid|۹Y̛W2c#~F+70⒴1.;2ʤ>~x"Lr֖t]lɪ?=}j킥lPRɽ'Zhx_?*nAittLiy[.OJ6_Pv`S뛈;Y>(y"((mvδ]b])燵c>1շ{̹^7e~OC-3 a|`-%g8|"7HP&8`2joZ~?:hw7-rd)B# b*$b0qPVQ#󳹼Eώ SS~ٺeࢮz^ 6`7&u:kTK<꓍C$̛EWmv(%{ [Z=꤯0 ϮX0aOd䙦˜*BGI޵Bt1> ZKr =^tUi |k#'0JWڗQ\>BdM  u/dCc0S}\"Eq #"ti+LۢT@Lk+;] +REM63S?|cjPhVZP(j*r J)!OTsM5l)Be1tAQʗw(P0hy*5~2Y/2{#?eMrƘW閩H uA=J!<ԇ'Įe;+S:d0,Rp4Vvf8>\V 5PHZ,&F*dBZWCfQ<&b1)サ5Xxqʘj]%(6qSL$$ۚe]]qƯ +Fم`~Ԟmm>Q;lB({5wtqt@gbng,{g`0)B _;;q48c{7V( Q#b0 fR!H..ӟ/uϜ9?ȫ6+.`& 8g}{L*5$d [z$1pc0)PԍF35 vyB1.`vd.u`S#c\ ˯T;3 ؂f|>l6n+.`&Flg@$ 1cƽw5W;r/63ΗM7V\ L66,2d]jiŲ w+->`0Rw @7e/_ow42kIGSN~хtqh+.`&$BQ(pr_mH+we;2u~|Ê`0F#uj *ߖ#'F0d;d7<`Oӧ&̩Ri7NVq;tWDW7,{z`$ 1#=J(UJs*G#W*Wsqh;qx'UtQ!%Q)5UYؿ\]d|{jR]1EY|[~P]ޗU3ė? |9݄U~?.-9%ɝ `F R\Go@٭D10Tj>?Ȝů]L7WŸ;kh9?^\?O0͝K3ǨJ^;LK Zb}װrv6UUPSA1( R94shD7v<ЗK2P7>R!Z)KQ GKBV^KW;~w3/2B\vdPq-Z-恝wNXFAQE<6H޻C#4qR;13I0혰?)=M+Hƭ\Z-I_ i}u x9Fkܡ|Zk{>Gc+._LLG +6S˚qv2N KCu-@[{s\MQ@qbZtt,ȅ>Ő`Ѡ fTF0Wnm;o[^cv.+UMKA9W.6ך@S{WtgL(4dʿT¨p9ܣUm1rx&!nj6B KNP]hJfmwWP":;TW9+4z6_Ҵ,\˞tGYj9Y#Դ9o@r&gN pOqᅠ꤮Sᑙ+ ZLJ#';}Pe⓷+ %Cc72݉X;+Z7,y*(8r/d6qsNx;H<$ݗy{w.i|/㧛Q>4M#\[QImU0Uݨ $mb?O]0Mc3) P7Uqz(<`֧[[Y8j$$$*D!!e1nL\ !Bq{:[ s켯έZM3=ˮޚQOܳg<ϲ!:1D_$7`#**WPr)[j%+?+%MU;gږCBlܠNnk_񝭏e &$F٫T;ӗ38F185Aur7kIDyNe }߾%K{waǙ@c+vBPz61`0ID"Ly/ױcjO?s w l(92Tqa2i ss- W =1̔bCF̙̈́I; <`0IS}s߼.pc0)`0w:;r~`A[<ьχ- ``0dhD3fG˳W; /63ΗM7V\ L66,2<]jiŲ w+->`0Rw @7e/_owd\ѭӢ}t!]܇<G`0I).dEP F60\p[-74w=fJ g>Lݪe"߰b0 a@Hrl}jZ0ʷjsGv@xz4=}jɜ*v 7\OΌ67,{z\a0̽hQBRWqe=pT'Dc݉={* ,JЯq`Ž(Ν{XbRlzOvd%F;=8zҒS|q\EY|˯`b8OԶo|n%qɦZWG-~}ddܣ*u\m(ƝXMĊ{Q*UHh86}MBҋweT*`ܷ*`8zV?a|a0 *CC=F|ic } *_) *ux~KPj+ f֮.GeBQGBΠ|Vc`}XЀÙRXPLboɓJ՞;Xpye9 3V?eN٬b+ŹgAAJ_{("CRM|1-23 %wWl q8T\RhyAUo| 3Ƚ-MGz}ܬl }R. /G;&OJp`Qe"բ[yv۩sNۖWؤ $*ս`.s%GE]:ۯ(OZT=X#}GOs'V[!8(xġ>y#g+V*|$ٙ{k+?@FYiŵÄSQˍEa;KI䡎OUc)(};r -$jvz ˩Ix&oNśYO6 ijQt:zL9 ت ОOe,%!67GPu]hjXS0C@ĵC⩍q*KK[Y7?H2M~AZ ?7l MLd*jؐtCH<ǸSsT˾%oˮuk])4&%% ҎIxt"LjKM[75sBX@qWX%uǝGv.PYٳEK@hƒ^agZ֖t]lɪ?=}j킥lPRɽ'8}AM[&}\5E\{"3DjEp<$7܈WeKuCOiVUV8Zx"YPjj +,kY厌 񜣒t_)9;BF*-=%KKVGgǟȈ?f 3(G7Y5f=@Se]b0  *Fsrw&[_C=u,s9TP1gdޟdAt8/a*s>+ 5!(LYhhw$7߬5Qj8K~ҾV =Wֈ[E7A7L_/m֛KSR~`Bш{sגr +yRY 3.`} Ngv s캻@f>bLC Oj`əğ=6WvjU}v+ ȱi6Cq1*Sa. 岹|&: )Wʵ;wO^-QBܳ *,/>HSO6CZ&ՃXjMwSk82)T];EeSt:B.wnѾ_P#3 (ZJYyقV.\ 2-rk A[ZZ_ |aiw0 >o;>yJflG#merrg^=/3HF(:U8LQQ\>B] ʭ5W>[$H.9pdh-is~?:+yKP2.ZW~vYFU4L$,WZ7e~iqt(wCZ[v{E*unl x}벒VK:lCrǂ`D>08M@:PS?YRw,K tkiM>Lp_mƉ4d>:f4v^,ۮ>Ղz*l. 1RKs]PiPX eevcM1D-S%. vji~LD=Cw ;4lˑԒ&QQ`0(4{_/u@-sR~q}.( ˑ4ڈ5wsoY6׬v3 3i`Ř1d[s \\8Ζ\xuݴ{~`Xq1:sfFhY.  Xq1 3yh >ԣ&Ӏ`0IOOϏ?haa[|Gz <3WIL)tc\ `&}s߼.pc0)`0GTT- p?9Ve2پ}<"V\ LOp+noo~;+.`&6I\.okkh-b`0ARi4Q\.b`0P#b`0 f2`0JѡPcğ[*=kTBRw$*^sveLh}\G;y`eȟRu9uMI\<Ǚa|}`0F\sJEua>oR]qda]巽f+-x/RgPeVI yŁ 񑅰.+Ƈ4YC%S@㳎nW;FZ:9:]5Y<[=[5.85s6^#M2zѡ1OؾU#'|KYqck`+~':!<8^;Ez|%FnPȕrG -J#E0&,Y F#"+gk5k+uW 1̢kjxC%#]Ph\(]OD_kq5ï6C.m PxN=o\EQ|v:7n3깝v{fKr}z8H-PRܪCۙΚ -T)P~0ggk'cA>WV>C-OWP%J.7<^l?JU4YʮA*7 . H(ݘJ0Y?LOOq퍇N[Qʣ]r&- YJCvgAABL;~w3/ Y,pthv0'kű$v\C\㫚Ub"Cdߋ_8tǍ|$qzpa0,3OljʻRCJִ0ƒKGEɴi9́vOvTV{D]p%n_oc pPV:JUk}حߠT`JrI@zHnmp_F{^ .>cF&L~'oЗ5kl~Ei}Һ^訧D -Vy0/%^V_^u8KgnO%)EI7/{-?vGRV* !!c/m`x{7ҹ.0V’i/T׬8+p*|mn5e([zǭAue׆Ǯx̖auHqx +-+'䳬䡃_s˽w_ǹI[Τ, Vvm9E'j[=a].p0keICCmr">~ i^G~\[Zb^gVx+.yi_3[,_᫺[f1fzںU(wqX窤á򎟈JP5>AKM߲+Ss $b]'(xB|?(y ~h+9WV\G=H6VZ璵Tdͷ` Z? AQRa8Ri6Ʈ"3DvJqTc_Д=>.%Ox_,nq ~6@Akxg}S++^+`0CqOHn3Z득Vں HBh=AΦ|e/=9\b܌uD!"m.aKpGЋ/KGAEEhMIIFHu5So;lvhO2io)oxDQ Fz滶oo9ڀ }Ld潊m8 6#D\k0@ZW7[0I^p)d-)|m\YERmE8ҍCuM>g`0ŹB?Czzv\ hĥ<ݚƍ4 tgsA!;,+9`Y`3:LJca J$tJ;Jz'X+WڴQi75VT4C"$h :|z/ꗹeb W DE1_qaKCaT3\1ON5ƚAc{YL6=ɅO3q[M.O ˮlh%`"tЦ6`d!T[ͪ> y<>mpxew_|U"d2n\rˆTl@ѪGt9oYH ]v0ն"Xys Tx`#J%q27 7mϸ@!KRy9 k)s BCŵ\CVpOkF5E\$ ll c>y'G>C3z&O0K9_ch0ņ=oRݪaēSEE^ťX[TIZ+tXp􋪉P>l?Liy[n)h/u<FXdc<źLG1KV+[>=lu[/rv@ jH($yu.0 h41ƶK20)N\e^f|e.UoS|E;$^s:dJ Ơ'lrJLF &`}Fmeʗw(PfI ga Bs;51/ \ & ?,WXz W38z/tdZP(j*yN ë@~*-0=1Zr-z/NAm)B``)LR,°M1 51*e(1K r\*tu 5FƊshc:Q>4"gǹqkJ{em$?-`08 z@Q]uŶmZ yHBa/ `0CE󡜠p01 Lzzz~G >܊ۣep=V\ LMSۋɃJ+n{u`S1.`0o^LEtzVpb0LQ|b0 f򈊪e0$R 'jL&۷[Ċ`0cs Lnoc`0f===L uXq1 3yPT6EXq1 3yaVe &&EI: 7!6GWLA -XzVe 9~bK*ɕ>/ jiywhz6_Ajs?Kʀ t]S&r&c7|vUK72㫂.*s}?FFI8gznK9Ӆ"M EI?/zoiz|;[S& [W6f]n{.+ ?R js_e\eͯ54g7*Fuog>6Ykt?(%^+zU|AbLV`p5!Qk*%슶tGÒ3 uFh6lь6ȣBFkApLg^vets>k&*cf"D~P)a}, ys~k7cqz \SG? 4H*A`BuK(%Rbd[%n$.]*e}vm.JhZXH${F^nZ~};s3sfޛ[ ˏs`O͉ H^9gYx%kD4mެ,̐9.-=-_Y%Q]D'ED̮s*߈&2ʐ]ayTP[pRd̴ӬD '>5*Fy3uhf{T:$()Y@+"_DCSꝙ -mK]hn軹UQ"PaO;ZY+醻T LF <4q (ڛ D(h0Rw bVLTU"^B1}Uv53w.;99zM2_]1Dl?~23䯗'ESFbUֹ /c2~Pwޓ'O}Eue~;]hude7f!e@ tzz`F [u=DZF͊@I.:vc e ܴlbGW}{Ѕd?%V1ބYgvF:մ9Dw9K^ K9|~𘏫ݓ/ JgAaf,5Wͺ{Y02]8ŮDf/̒^eMɥ*M ɅSi5ikb)OxxU蓽yuZjqį닗Ng>/G3}qQ^}CxV\O ('IUg6h{E套Y]lp$ Ԣ "+4:PƫLaJLը7_~RPXI  Jh-Fu9WЌ~(WsX|j7a7=ȪYitqv{bPgPvu[z[_y Fz%)R:$z1VB]# ,t_Nar螤: ];*X>c5Ї8~p(V/7^V0$O1 m>LZEBU*yey 57ܟ`gjdc v40V jl։.]0OȘX4wJ1(ß~R, Ey] :\/[j\W ^ 1Y\(3~q(:T\VX}V;ML%,}>+/;Yr7=T1V&JbDYu+Z7sjgyĵs7;ޕ})K\`pVIasq>;qBC!o_IDŎ`G?Ѯ(6Dq[3p|L/|ebwt&1'5D|'pz箰uT+< S 38'oxs/ӂq)BI2EZ-(|w@R`hN dѣ[>KcSN_Sy@k_o&69٦[X/~_ZAq|k0/t+h#mȩ`2VT9{"g[r$ij *"\sV4͎ςs_/-5ymHrU<:ĸ XuƷDi2 +=j8 Y@>>4-MuHcJƆyW=9 멖F.ѯ߿}#^&kvO8l95ruڄ8Ur"nDh׍mc՜|`Ԛ:!ݫm5h6 1D&0^CId;k! 1o<* {LKה42t$n$Cqc^sRӥ|J\ :$%wo eJkxR?bghv3%{'Bͺ1 B:+غXD,Q5]8cR#1;p&gef`l a7x1%Ir~|@ \ * gcn$+I~6hBnY";;FN>cV Dɺ`[ʾ<٩ z[;*OLKiHLxpWT9:9ȉgO?oUgCsnnE%Vc&vMwD (`Sdƚ5 L>?Gf" ;*[0-?Eѧ!2TnP9խw53ՠ1$71LK.όxH#"hTI84#E eFg1z(:+ GzbxXV9h7 8ew9W]/zR駸7HWF4H&cl3~. ;>ݻ>l9dɻD36F\x#,|!:;?8F\Lj צg 6 F\L%W^̎ aą@ }n)ml8O$ /bS(@ 8MO#ځL1)oh@ SG\\#Hѽl=dǎ10B dxNìYz;22_È @ B[~e"{zzˆ @ $"]]q!2ueq0/L0B dQ)d*3^=kt @;O+-HM~-ΣFD\_nqػn"<(UJ껻|߲8S-=|"=xC O=NtK2;/]аusVL{aMjJd;ַHwڻb2^@3ӀZqJde&#@'DaY)5if| OZiV"z?~di"N3@@qsvi~(WsX|j7a7=ȪY榺{Rں|@GkT> 7'8f{E套Y]lp8.HqXuN7I%Ffjhd!EZ,*F cb xxνfǬk|fu$zdeaG=ll@=YeR}^)sbZ=z )͖Y@?t@&0>eXwWe7A&yR2@vxKL0݈֯NM(q[a7};8bd<&7KkLӡMdٍȮ!4~Sz{-̟갡R@!:͡x8{o@)n[])+zOzaB .ZXn!FdKo &kx5]RVa tJpجqPOHp_{JhNc"X E $ V̻̊\Ny&CgHʷ.ȀO Q/IUlpiB 3جx }u`e db3T;ⶢr}K "쉺Uż_ L J,u]dNԒϼLn0a4u"WxӉbW @ݭKIcO<˙ktEJM>L 4KZ O5ˋcʥ98mw(N`Z3A:XZ>ᒟU箰uT+x!O KSЭ:Ele[Gƿm>vNE k.!--)GD/սڛ[,k]X)hjŦJ Q` Hv0RLP)HeiI& fVsh!oO4/-;Iy%=m9D=N%fyhyKS@xZ}8Dž@ H$mlt?K7dǎ10B dxNìYS;22_È @ B?8铏\.W #.@<O Lvvaą@ 1#0B 2 @ iE1ݯ"3="=]^o>貐? F$})K)qB<5%W:GTTsNq?`Imv^_ _Q*%j״/׮.dOLcaP3g+rkYfӻapQƗ &:&c]! ?h|՟_&GӚO&lʫh3w#4Tٙ:2`zRMPB4;?# N5s\t~\;$y 6_ w}Xy?ؾ&?l,ey\֙j.~]}s2u~0kiymTXn9 ¤ZXbd} FGWs_D~AG_@fi4c~C94`},='?>2fa frCGŪs_(wwJ.@)gho.sJ~u+C(тd/:  8f~^$SU9Grs }IŻ>0e0H^5}AA60~J,t.,NΉXVfT7G}rޚK#sfO݀}K MOܷ%q`_AMfmaxu]K"0acj; ^`Hߨ .:ng mn6~ȋku3{rFHn[DmwSTVt "IBDMl?>Lson")m IP:PawA6!vg愘O .~ ԺƟp`}&Gh]VZedY T敕p)ckf\OXΐ{E套 oIc n}g'S\ /D]UbjA<]-0 zJ@7?Itl: D}Ɂ>wձX 7 }?eTs_o,.l &*M ɅSi5ikb/ J˺WzWY;樒~;K5 L4(42SCC9_عluOw< T~^Cj\[h 3E{=_x@l#FӫrnR۟^nv˓Z m{C}AU&c]+H ?32oթ) rΡm͒w>w`#/ Z`q \5r>22{4?fՔor\`^ʹ$sYw6 WLgaݸ{Rotq{r,34iK7PgnN)WsI˶@r.q wo>}@x{= RV%Gǻ94bWf*~a(mJ.W_PIg{"#[vq|ɮKAb &5;,:+$ym٧>✦ o0wA$,.#7NvH7ҋ9lf(0>4Զ#GE%kma7h*` y r cbd\_}Fcy(Op@tɫE)ݽ{Q Q HcKYF ''=#FjTi)nCbgDYUMLōd?*UY-U׮)Mso()?MM.nV0m G^f(j%^+?d/MB1F,CLgwߔ^@ oBe_oIR P X`v9_]Yj^Rig'ߝ!-|Qa:8*(( Ivx`/A+^S_XW=|z/5ZVp>A\^%Nɺx2'jg^X NL e>WwgNvytb4XX`@鵡9a5b@lOZn%f"rY)z1aD i Gb䰑@-]C-u;ǭ Q±XWDq<$$z;ڽd7/ȔuA]Ke8y02;PK?'ʪ\:q?bK#ᢧݱƁ2Ldcz^ƓSFsfgA/y棇;**؂K=G|srI}&t` [_p_^ٓ*+lS2k\_炘"Xgw^>\_R.`aH p۶; x&R/gJnҽ9+e4{h{{{GN5Lexg.AyKSm߽[8NlHL[k ?8P)j&QdK4 PDbWRtu^&>Pws#tPqt1R L.ڵЍ.v󕖱1¢D3DGǀfЊbC?MgrЕ4ȚjADD?I?l|k#䕚;;E) H 17?ek~hOC>WPv(dY 31" sf;odd0Dlf5j t mI_a[R^Z*zqnRhIv!i[EA^G2'Dc5GQE"B;b߽調&ZCЎ!lmyKK.D\Wao쪍3"x./ĠwB=Њ-mKOCx%>׻4iFXmtWPyMݱt2WC4wPMXqnRA3VlI):v :bhm Zgh e @D>wAW@pI"Ū~ 1;ij7!J"ִ(DJij;K0T6$ӜDKv+0yEmcjؐ2B,U'E퉺A-ʵ @M"6-yA"-HlR2KC 'wlH8eu+mx*6I`D@XU{ޟpDXg\(Kpx"ѼKnQ$)TH] ª`VxBt;ȔH$]AB%V9 S0}:ݰgK7v{4=k =C6)}k9e*!$}-\sM!xRPHD"f0fw@Kљz4qXeͼ޼ I=HK8YBKyPyV$7G[ 0>q^4":L  ϻ2 Ko1!heHǖˀ$2ƒEH$g11ZVbO"W "sA2PʁBrPU=&A?/IWi1 ci:Em)|{¥y;OZvA] ;g]#.ctM}Ő @z[d1ׁDdLO0Z 2<Sq!2u5^G*h0lq!2 _zN̎ aą@ }n)ml8O$ /bS(@ 8MO#ځL1)oh@ SG\\#Hd~rjttT&;{F\Li5KUqGFFkqq!2uP({{oU8ryOO]q!2uxD\d7H:f28F\@q!2(UDW2qG^'l@ p6o+m]*՟ L{_}3l9'ΝϠ?xPʔ־Hvz.H>pF'p( 1fzA47BGy h>lO}Aߍ=3|?a?>?-?j֍GR.[̘ 骳#_5'oyUJ껻SXrNq?`IHs,ѿL,J(rZO46 o\^?sv R{*FlU}i6w0e||_3f,18~AܦOO[aDBߗ[TsQKh|՟_&GӚO&lʫhֺ'iBv9SY+~j{}ՈhLZ+ AG )x >h{U+ҝS[2xNGǵCz!,}g Lx{ϲ<.Li?WWzEm|}[ܾ9Q:|?tH|?MpY^4V[N`"3b,J7Aun hyL@'%R9 WogNQ:Yؿ791ON{3x^GtSoVjOu.C8 "6ͦΐ&`J/r{EOސ( FauaMl:V_3]*̍H!#WE@чa tKvx ơ3Je,zVUl^[ybdvRkeTŪs_8j#R)*n@LB4+s4?ssJD0:nxlZ/d0OMI͏${T 'h #8f~^$SU9)&5b`*H^5}AV~J,t.,NΉXVJEɯ]?r)'WWJn-\MX7/L&'ؿf[ےuڸS ~ۦpN=BM'`4G`Ft|5?z!LؘNǷ#x[?]8a,J59y_dI"^\yf_"Ԩmڻ)*+Nv¾Hq$"@S1ۏdOz1rպJER #!)JCN~Rq]: yi˴ ٵ.8 <6'|o`Hvt}n Dw̝E;͸,p|›-^JvƳ^Jd[,;Pڔt/1;_)n#6eEjNv\C"O 4Y/}`^VcֵO>a:# xy6<~p;Zg? k^7[~f?^=g)*U)o\H.JIN^]KQ*^fIw;_;qÑמ߻א:Z9e][r\`^ʹ$sYw6 WXQ,7E)yey 57ܟ`T/^F;u K5+W'_V-;- 2W)֐ J G=ll@mLsN˹Imr{UP-Oj9t'ַ%mWsvi 832oթ) rΡbAKL\5r>22{4?Qod:vߒ~Uջ+XOЉVUElRcDd"o6om F9^!'@LYr+辜mw#~kͼ.q wo>}@x{]l1Vv%Ffjh4okj6 7tORTbdn|ɮKAb &5;,:+$ǽ}9Z)e٧>✦ o0{wQ15Mq{ ' <`890ҋ9\\¬;͸Os%Q;B] 59' U[LI Qv7};8;UY-IDރ%@2hnLJWˀn)=Ni^F>Е\K)XTr-a\^~Wv0!j* Q+M~HȦ Szk@WxF4d4Jo)^X% ^J%|&D_ ( Hg4 fk͔1 q3a n6) p)ݽ{@08x۴hdReLDG{7v~R^#.ؠmHU vkr;r1S ]D{Mɨ< Eao ~g7e'v8hZ81/: :s\uhI憴kШPdV+*@} 3qꄈuZA=AnUGǏHiCHV`wH ~[n0\̚IpY+8/pߎƸlw w[TBzA0=LF!ZNMu25]RVa)K)ahei+ `2X}E[ZJP92O]2շQ}Rt&UڒϬgj bHʷ.ʁ!( (B٤dmG/eI`>DQΎ:Y*3UƐj0*`;O5!\%uLsfvtpLZ53 O|6|x3""P(Ɓy]dG&-"hˑT㇊1_Fv3iyMb\]sP1 q;*]OJSù'@R)к^`z/Y cjo .K|A]sh[URI~wٓpDvBQm(~~U8]]\J Bk' &kr'u']ћ3fk@94xvuQ"$VpMuZ[|"2XEjR|f9NSgQѽgʼP%@m3}qAz8Y&ɬ%yaUEtwJ '2AUz;[۳Y'Zj>RutXW -1+Uymmq֕9IaTj\V ^Lp:Q^Wv@TCZ/F8sut 020ߎb]aI $$hNA&z8LH$J[;캤q`new<$~NUunҁwXx0ɿO_oa$T<-O NKwRiҌF.i>iRtpo8/PV +$[Q-))L$O?w\'?ې :>˙ktEJMQk/|ebwt6 LLnNJ ["z{nH*(P\pbYCkˇK~ Y{x>n>Ot!{?p} i+o-n^pmr)ct?*[3p|AC$8 }^\o)8YHreqg(qR,`\Y:,r{.NL?in=,<%/|T:I=Wܲ@*Vv<0oiJMWsk\t=DR.`aC"iw*VyExl]Yϫ3<90 ME+o*v/EWweO9#wY![wX}%}-4:; Sf8) 5gbFNJA~uqdܥ =xt d39 L7Ќd[LGJ(%g9+! ͮ ރ-ؤձ%%k1"x./Ġw;yB>#,unbeX<;=N?S>RЉhRhѽ2Ȁw0EvGw7)O$Cǐ"BeOy mO4;+;Q+c|ToХYLF!ݫKm5ϢX2Xr!2v+zob1L7f`" vuT,`$HaD̄!<]uyc¢wA}gT񪲶tWPyMݱt2WC4wPMX0rQ,W7/ #9{3MLdg3bD>ݒPbJd_WZƦ3W!R\+x'sn~3d#4Cf)]SP8H@Bҷ)2@_"PJbõϕU2}=Qi; =5v:V uZ/Ȫ=fO8l"Q߶ic)(Ub)1U%%S(NZ'Nߦޱu@DtBU"1ԂDɩgJd0A1-Ax$3ė)0bZ`[T*ZNB:X:1f-H*ӵ&b&Lw {6-r 6MM8pZaq\ϐMJ9s@voNʀ̫|Uwꕇ{hpQ+NKљUX` o[cE)CJ[{0ԛ7!>' 6ci^0јj<XәHY 1X/`51e,DϾD2PʁBrP,Qu&d:^d3$b+tȓ'-\LhLtT|t7we'ӎ5 XC&-6Zno%_O0B O;891B<hzdPgO5`ą@ ԡ0:{iF~að `ą@ T2<<|U;;ݻ3;k0@ Sǫp~:hm?@g6оOus\@[4mR'xJ4h~\f:xAc 3f6hR΢mv^_ _[_<{t⾈N~ge9%L4ؖtw̳߻33Ag.aWj҃5C(\l6D36YbdA?Y} wԲ7sJ%/*L6+cyPz1 _QMǻZ2K/m~C???yšS1_qPWSA~|Qɥ@wI'Ѕ:CR%~d I]z8Qڅ$,۝}Ub5ܥHtaqRtN]9[Qe_ayk:/Uho.sWǮK&Wy NR^s4?=O5R؋d^Q%w%Qp)id4(zl7EeERN N!q,GQPZtkjDSwj>ɾ}榟]T$vL*H%"WA&7Tp U7,2qӒaJ^$)!=:*Hkr. |5?z!&lLM|[ND蹻#h29?*EYDa 4I[sIRC@x+Id0Oh-HFѨzJdd£?k<ĒBgGlK C#Pu0Y:53C!>"8.PNv %l&ߕ/Db:E5$뢗7=Wt웮(yJ@Y8*6D^41;Ը., vR~KΣ3rc J!8r.71ݳ͂9O+-*/̮n}K=d^\{/ټڬ=YeR}^)sb_@@.=g (Z}CPufA$w`KIQʛ$$|ɮKAb &5;,:+$䷋J襸{"NhMSfǛpGϤ[uis朗s䡾*Apu N d2 KD\Y )^Ds@t/}@x{B)Jeċ /+~&<4+ 21Ww6`M\-C 4 *ȋ6_C`Ԗp 5RV*ےvJQ[^^4.zvZJOK^ kt^+XL$w& <>2/9̙;1~TT;g=2EE_,S(M=|674}g-Y~> 0O:}7(+:D!ZӯWqO8`N:8k}~)b9QW d_zR{\zj$o{(Ņ~%&)s\PbrwJJ\]74.,FuW?C@j7V .HEk]^,]z?}qP풵"kpwLvŋ*0ғi]+,|=7'*{`eEtFuIOpKVW] AN$NQmsȧ玷h)ۅe猪R:1ywdUI_QSEÉ ]F@E[ ~ظfFifOFt#Y7be QXy xmHxnEOK߃4fvq08dʾ7ƃ_Tzs|x\3\t> kEk'{Y!Utd. 0F;l~X}/EqŢΑ'J 5?*TGuG:e9W뮏?$gŅYgR ʏjLbQVeEW$3 )@[fրp0(Pq'7ۚ_+y <fi[=岦[VX(Zֲ},? ~ M'Nt>jgI5됮/!.ܺ0iμ_4w 3-z<31:pO /;%e 'UK"V/yt>wLle!}>Zͼ$m"iT}=[7nRqS4<+H)|&^@nMҳfd^14 Lp:[ӨMחu/fKuqI!uE+]+ Tb\DocLsl :<}Toܻ8O:K=&l!IU[Npvy9ӹR buk}]SzbUok۟6b3~!1oBzM`&sVoeW>Qz vNj;+LobooP,GWJ:`)wGrKBcGۄN]V2݆ec#VG%e}%4=Y`ͫX{t.#g RУm*(\RJck>)nzmlƙ/NhvjJ`|xR3Bڤ6$ˎdY[O-!XlKG̯e5}5,FgCwo:yqHGILW?[,bG2N_7IFyxhq`Pڌ/ƼZ"2FIw.cw Xl Ơ" VI)z6AHϟ?Nm1 L+Wv|sK1qpƊqK`Om}dI>. LƊADu>UEzL@AB||=I66?3% S ( *. 'tۏ($ĚRܺu "2Yp8~~~L&~#"(ʎN}A 2P/aLpzjT\APqAd"ԊRD}YsztdwP]u|}mK%kگgOkX@X mIk|vloObzZ Q!m)=~gV^W®1'|,Tr[e{xeKz}|'Aj\Yڎ3Rٷ'VE7O#iTmJ*  Jiq!w8 ȃMPP(ZG&HÙw1usZ̐G|SٕUt8LoKO*Kc1`N>gV-yJCnj;[J`_)]U}JSjUNn_)AAM8!_ 4i/Z?&AU- KʓpRc7Ns&^BMi|2ERrSohV6GҊN 3#g?R'Cuq͆K|k4jo]_YF/Rt@fqkQ *C_SϽ7\H*Dl;JJqNRA?jܐ{}2(uKoZh%#20S\U{A6d>i/Bc}Ԙ"60.{Yt4Jm&G__2MaF'm} *:e>n=K}kOmguU^[UNpw}^M:,%&vn,KXQ){oqzNžjeI.o9v4Jl>\K9$c}j^bUC[NjثM*9o|իLNҩwni{E$k02wkHyCBsGflgD5MO.G$ϹX$]4"]e3nVf &{-F82x;9kK^/ R#}ꪼ?iCP4_fɾ3ªKoSWEU[vB()X*OZB@?O!`G<9cl}S|j 4kr=67nLQWHJA̩r^Ⱦ>ycv-e^RXѨ|rtghKzh,N]];b^QZ|r榖u ,wFpa/Ws_ I\( BRc)o:m&3"3Zq dU 6IӅ|y}$9Q&]ƚ9g&Jxآhmn?}͠2R;XUP% {mG'j7V A`⪿(f0ܪnƶ /{o9󴳻ݥz] L|f9:%x2?y xΛ#* ̠DݠƼq3Ź7l7_/LiR 4]RMu6{E)qCzd 'ҵ9&Y[2)tTUioB>Ɇҏh]} ĤHʱjNU>S -Q2S@5u5v >J'A7}HL{L7C#_rJ@J./TU6˰ylIxI6 XqU_c8oŘ l.Zӑ_,imVQ],ÍQW Aq JmݹaaY1ϱ펻H g7O-1B눤11  z8E i|zͫ zCMxzCb]\iI+.sW <;6͔92īR#@H񺹁Y 1vۋC:;oNid 't7A0=;WB/9Ю5ܨ,Ƙ32$16n)IO tU TbB,'A&1B$TLwG>_R R(nÞ$t)ɬmQ($ 7?6RzEBm$f뵛R1``BCO+*ƆdY~qEbS`Ġ^iM H!TheC?&on6lH(X LP% tnVb^nzmrCDflJV0"ڂ0$wVJƼ>irڱswq3?bqsKܔW_1bbǜ>⡽-+ gG,GA{f: 5 ^<Hh }˸^gC#=JFFQb!Nί8󣚄YqRB3Z Ɗo kՆ5H" EAAA&T\A& Z߫G&-ZÊ' ƻPq,?^T\dbMqu Qq,\ͽ.pƊqK`Om}}\Aw=+Ń:`"b =& d!>$I{q2irj``@P8Qq,<ޚ.2 &nL8ɼ)(ʎN}A 2P/իLpzjT\APqAd"@}056@wo?=ծaq\إA,=Fvw z5Z l zW|`OPJ%#XV-yJC0c!ǻBUҔZ>7IAd{,'S$ +7zW'S[&83lEssvMs.7ɻf-sRqNB j]:yz0ܪ@{#JyH-Ww]Z(ںUٽ͡O!,ߵϰ:}"Y[4ґx;ʹW+%V9q>gi[xa6:_OUo++9#zMD6uQTk'. STɀRMӪcl "՟,Q\2> Ⱦ># dGq@vkR;眮e@ /Jژg+H,U ⢵. j=Яs(c/^TAHBd>i ]ǽ]f%dʱBCy"n(ThIMRӚ*:ItbTic<ڭ~.w$Mt!9zC=0 2AN: ^V.W,Gv}I6T~EK &4[g@14DN j }`k`P?ާ;E"ܚ?'@~O== ;g:B߿om*^ߎNQ֐D71 o0O7ܸDNf\% K *L[kj/Q۔gp-Ftݸe (ΩM;7F7Mx% Br4^|ޓx"Ne@1h wZ?^ATIWT(Q$"' AeȍS.kZe4r!4KS!fK,{W|p٦+#SKb :4.:{Z3,]b^4e@yv rǽt}rG~6Oݑ-)q?,Fs&zoct-GԕBPܮ. LƊAA2DA3BIENDB`PK=< layout-cacheM?KQ羾ZQXgAf!!"cCk@ݴADMIps=upoP9 eF&|0=2I`p ܅-039ӼƼ 洐*Ά>KU‹J~=$coe{l[<ÅPrģ^U{*| FhUlh>jܷ(ܱOIAAPKؓPK=< content.xmlٖș&x?Ort$M,D+"#:S5Sj4Μs4Wsf /f 0.,SuK `of}?>CA$iG/Z'^ዣ_x0zce^e|7닣i~7?Mֻ'"R_ݘoP_$faeL>>6;8OW=~o2MBz;Vu̯:>|R4wER4~/j0#KHIA/ӯFKH}qվzI0c=T( lۏ+_LL$뽕)ˈN፺xm7>"]A/Mmo$~rzIp484a&V[x3mP u2[8œyF@j[AD$~臰rH?‚Ɠ"KO[7ָG/;7=p ~O/\D?oɋOngn<`q_i74 ,t$[g1~r/l%"^tN[{ndK'JRΑOI+ǏAE}c!c?8R-Y٣Q=a 0)#\7ƫNܸs9Nsvqh>FC}UCm]t:C}LC=-[0)<29o&~Fsnb/eyi}7M^ GbG|œ*_w,CAgɛK7zldw@3/~ zlC߻&4#;af?rtEMy0"[dZvsۭo{/7tsn5wI{7tq޺Z9Գskonkеw%?4^yv*\V0'#^,%Sv/ݸ?_Rĉrէ]A$#o75"76Ii3jN@~Ѳ'su*,͍lJBmdO~-<7|rs;9KXf~_i f!4Pl*.g3EB A/:_v9^} UZ[Nr_V,Fܻ;o#ےmFMXlwv ɂ 6qo9q&߰y:{"rslw(9sPlwY7PBJ;`y[_VcN5Q`w2tW4'6;v /Kz/۟$;-ن+bA\xJ'w 2}{#lP{#dKifl#`>7~o8_ZPR{#9 d#l9ga̭u \{#WujlEgeWĒJS:L&ᴺwS[Vˉņ͔_`ڐ/qv=z-F\tIrղ^BKN vn7]Wى +Yuwaty\IP{O7]pw0Ȯ^}:ӌW^[5g9+utZ6eiWl#*{[E4}Va-#xJig{SBV}ʹ`Yۻ:-=Y7+z>\..K}y ejķ'~v.!O|{T||Ϸw^>CCK琹>S'OѠ5 sYBA)|l4sGw~ئ=¼D#Ϊ|>G>aV9&O !B_f*1=¬z#j]^ 1="ve=sL|}rȭ]YA#r.ySA>n}~Zc_IL5tVD#@>@B/;B="˕Z=B=^yjx[wGZmڧwj+>o5|Jkv>U w>]'z>Y{#7kz,z,z,zhy K/p\uGv9ۗP9)>pOjSӷT>HܧԺSGٹ\{]DDjnt띟)ZmbCV6˴D,mJd( AT'qdThѾn MG9E֏L~C8j0Fr;pZO~vs.6=h\\\b#fRn5bʝ]_(UZO3-^/|'|}:bA`#X&fy)gSWY2_Z36&mnB^mP-A생^ U͡_1 (e͗=-VTtXGfyXʐ>qw ݄aF &3;̲^w 2 -&nA|0Dwz7֯Ƃ]&- VaQy3e?&qݢ??iRȒi?*U{ Qu56fo6@ז[Ձ~-Z  @ߎ;"[$ \$oh97EJ>_=?O;,D2gcsTP8Hd^ `(D5_'G^?o83m|փn?͌G !"n85㱏 h|D@CR3C?VO^J>}An.QO,.ApuriTFI<8$Rm?wEa[CH!@/{m H~RM>]ddtQ;OhcJ*>+2iCSRa%f& xPOdzNe\TwPA;AuT6qPAuN;J'TwP٠;~trPAuT?T:9TwPA;AuT6~ᠺTwPAuN;AKTwP 䠺;~trPAu՟ _9A'TwPAC;lPAuT?:9*TwPAg@/VwX䰺;~trXau՟z;~trXauV?T:9χ]RV? :9*VwXabVwXauN;auWauN;J'VwXY갺A'VwXaC;|X-uXaà;auV>:aauVwXP䰺?VweKVwX0䰺;~trXau՟;~trXauV?T:9φۮnVwXauN;auWauN;J'VwX[갺A'VwXaC;|X-uXaà;auV>:aauVwXP䰺?VwuKVwX0䰺;~trXau՟;~trXauV?T:9χ]RV? :9*VwXanVwXauN;auWauN;J'VwXٰz-uXaà;auV>:aauVwXP䰺?VwuKVwX0䰺;~trXau՟;~trXauV?T:9χ]RV? :9*VwXanVwXauN;auK8]kA4\O!jg:,d\:K56ɜs2خfrי|r|ѹ\w._\s2frי|edlA+Nxtr @t @簺A'VwXaC;|XUsXaà;auV'Vq0i): q?==e9~?ҘDQ?P0zqQ&^8COQ=%tAQ_xqdd,_W$u}"4Q`dU=I x\¯ !ݎ٘ey(Y -p SF#l'ȂH4IvzIL6#O?LW 'ni}znܟ?)ޖTx;5eTџ+qo'pV>-7x_´!Пi34owa8MG`؝ Ӧ֍DRm̘C n2H.MOo]m{Mi[=<^Ll'ͼc+kl_`^!& Op<퍼1\̒JpzDia#e05lO>B㷷}T2g>..oz ؈\[lfF1a;8?w`).{ Iʄ`/ G~Ev}+՝f0ɞ_#8w=+ #B%ܹOe4ZfxS~'>/F+ViOfsMLnU R$Soc 0~Y5b z&֥PrDZt4pYRj rޤrQyT.ST<e/,@U\3]2knes.w ,\Ynr ( p` Pjl*TM՗D^".`Rf W+A7D{ *tɖ ʵ&5FiUH E|4Ay6\.˻ |)lOOw'P惨'"~r1h|6?+ez:LIgK2]YPitwMwoɌ6Ha:X$jNFnjVaq؂v6&NH7fV4 i>>% Q*(‘|jn3W]`0 ]?"? z^#-Vdtzdgޢ%e0S&~q݊HVc=x E=?tg^/ >~{DY=gӮ v{Q) tY2z}J,šm UjZ(3)3|>wr)Z5Gvu)`q j,j~w#@ϤEwg=bXn[V { ǣ_^uqB0JaFvaVl׽}U-# ~ިmG^ԧSDᆴ\X=灯g^"> o:˭.Em<ȼS0q;/v51,j+U/M-B/c B4A Mřl%?#:~}/||-%xL=lN%^)B{E"YE%b>f Ja q$ [K2@^frV%CAtAĿwћ[^ @Κc|;K31^qlx+|˞[푭׸5;[~HVS>76gyTIN[1=Zd7^lF:{B!}c<4slbKiw!]gKuWea%jHd[%wYaIj`m}KgtTx2&Jr /Wɤ*;[a%l/-Wta/;KqaWǀu]8e.ߦݟuŌaLf>vrމ-?0{7A:lv:e^SŔ˻.vV9B* @2638\]hJGP2F$%|ʑJ-RX"OtЫ`{ZHc o(J .]}h6WH#MʮA)q=tk6(4Zuviuhx$?屧m w‹#<4l=EӜrfb]J n^SbD0Z3FC:tH1H-h{V(B-ICav=& @~C,ޚyCȶ AIHu} +vqbl`dm0;OS D{ ne՝$эLU?g4HUd!#(Cq0WԂOD/r% nAJBUaS_7ԊzzM`CV" "IT== |<|]YMDwvxmxr{>8ף@ttF@Bjsw$~xdHFYl[ a!/$Ɛ?ڬ:Ӆ?]u#Mg Mфǹ$/@f Do-F+ iGP:em5ڝ/یvqY5`:u8u=5kA#I|>1| 䒟.dתo(%,#)ʮ!؟yQb@LH@Xa?A{Xo R# ?X+gv.}߶<8RCԤ5а,o(QT7Z,LM} tY" fWH KASoXKDŒADCQgAɚ 0("TiA0Ytv MjFdWee{ٺn$6Ҹf4zH[on#c RY#R[JA}Z/&) a5*)nh@wfRˬ3NFZ)V.~464bX6EWoM+Ĥfp'}4D3-vE_!p7hg9We,ˁ_Nrlw,g@,8܄)F^'0riNE ]f :?nìI|BjEc,RxIY.ROiߤ[< HSi@Lbҹ xi|r :Nг)e,7 d,ىe2wgr3.Rs[0o▾lV.mhpmKU.˜+S{llXwޖ/^8> .ܺ9J0) f fus 8WWrYI* F2 HUB&=[-XEIE6"DOoFQ6;^QFYL#)!`<\ M1Y Z"PڂQ8bȸnxyLrw0VZᄲZ&y2d3V }9)&]Wݤ]>Ucd #Y%EB8fGB};D8}lτ(?3&qϣ:@! Hw:u-oq, qʀ_m(O% y] =@lMĘvxץ^p^syJpb :apٜ2\kbCϲZύ[f1!X! Sf|H7]ho*!-!QC'>S%AW9g*q [Ty~}Q#<_SL)ΒD ܱBX:qj&Ӟ:Lԉϔ>ްĬVI-jNVq[Ap*",ݭ9?Y^ GFv3V룗DT!mԺ {!&$+xy5V()wȘQGU"~J86 RC9S}5}P:jg;ru&hU}BiBw]4<~m@K" vYD8F UU{EeZ[z6Y2hq}~bZO<~CS_2nF AztyQwD{\!ZΝȀƃ{Ƥ=XDo]^-'Xw$ܟҊ)^h=Z98w"@I,n6Db/X Hx?u}h/i>e\WF@j" b(@.4. >Nm~c\Y~o?Lc yȹL`޷@On=+dLw ÷<4q4?K^痶-9vT \d"-!OLJg3D>rFOVU5%O;WIclj8Q,a?҄zĺ 'F먆!d26JNi-N:)ֈ?шjP rP Z~=ӰcIPzInI&"DC;eS2.Go0MQ>{^NCi{JT†upY35RX&>ec(3(oA4}$(ȹ2є #c!#q.]h!<:Dzc2j8Զѽ!=Gvc\ 7iE;B:W3 >H% G> =h@ӓ 5I$+ yKt5":>&,w kOp'_O'xEFaBK" д4L$ ʧj\5YR ٔhZc\J2he i-K4[n: BL=Hŵ0S,WhnED>JxE4Jd2` IA<+]RăQLb 5.w7N}K4,2&8 WV@#2غY_ !V*J"4.DmQsOdF20Q֟ 56Qg"ׁxwjKBKHP<§RDVAN#Fyq݈p*#&n:kZ#-6s6'o> l.q)ԬdA\l\1zFSj&Ӭi ?< W&@ -+dV ZXꁏ~~ *(TRY|;`Pl#hhL64ME"t!i6P-p54AqW`4D2 ޢ ِt}g[/m/{f2Q#oz0R;Ӂ;v#o^`&Rxڞn%MwM Pݢ'xag9șscǵMn', /ۗfbnNK^ZlFMy#[)4jCĨ$Mes7z'7^q-j\?EY W O)yXAWSf'D`0ET,)efDlb5ou=tB,UقHScQ{yuzk틫svy KsUs޾0@9rXOehAJf#ϝ}ơ)~S%O6tSΠr(LJ{T@r/&}0t>Vc{A7)^2Y;dwܝfu[ٵ8_\IUHd/6F[ZƱ?>DuF6wbTWKlR-p?}x&GiBNCZ؊IiL)33k堊[ɝ Xp"8OC9LEKT<~<[(j=-b b^6ؽV$dGVfM2%5_pNtsJXp] PEL"9FI ȇl/ma䅣f7!׶>]hZMwѾ4/W qVۉP1 @ȟdYwƷFξV VFRVg'큦D%.r-L`XLewJ5FtB@2S)о3j4`/.$ >р0459 mƧa%)zI"7\2RX@2OJeYȗ^)FO^"ek?4[i%CXOO޵2\Z*sU'f}x#!{Ɨr3j隮(S~ /Fz@8tSIU!%y=U6VT#BllL Th):a^SBȯ"x@K6ituE"orNp&6{Sڦ#$(@J3"+ɓx,374fC/ ]  "<)j1-F!5$ѭ%*Boy߉pb jVؗm> }0:}"BmI?OEE6 z!z#:xT*%)x\MJZ_">ѸR>XdR~}*o2/`Vٮ&F3s<:aZz]o??;97zןLX@\WL. d:S7]djs)HMG "nNBJmG1e ӱ+= pHp/d'UF6ڹ5{ԑvvy=uc`a&CѺ8ÀRr ? 0\c:U/EF!XOlb[DvBi $kU#XZy*ͬtee#.ļ9B?hm[BED-Ov6$]DctLj?j?!d\/@I6qR$DʉWN B%! / '<](I~&,ey!k]ߖuelR d5k> b?m UXXH%WbYaF`n47, 5m),NiԴ4IiluB8%0@ HR^SGvt-XJ&O+վl4ZF#yx_)2D|'I"H7ѵC͊G>%*_$F# }/e ~ AQqMwbA3K?T#c( C>iS)l٪v<$J~27=kݗSְ2`xaRV/Wq:LUvJ";$F] )apu^( >t_RvL̙)e X5Ź>!e 8K?Fĥy*u2Jhf[67P A:GΛCDJGsm,L.қմJFз0\ع)P%e'$U~| }P.p& !BݎMb~o+R[^d?d,EE6!|[K$ 'q‚M*`3Q+{j[}7otd-& ($׏Fa3Φеk/Fbq4<ӷp1%"ҋ1%_X{r֮@ .a Ej{YԑIx>M卲 %?]:FU@(ټ/d-}IJB^j0 ^j||) 0d=8#qa󹯥Mon~ÖfqB+ذZRm6NC\R\'3[Sb6O*}D!?MX (E0`m+Tw2)2Vzq |΁WB>N#l[ܵ{@ 'cWncyS,Q٭7CZf`orad|ٍIK{RBVeeCĻVUrs 9߄Fc,T`ylf0أLڇ!!}lx.-7s=:wHd׶L{]b#C5UEnғҡZОJ bT ,g-"Vƅ: kʑ@!>n7ZWhv "ca˶.Ol4a bo++ LI,/*~hC4 2tuO%#6 hG'Tr?j-R>4C3HKk*hVP•9 |/yP!:y yT;q04|Sr'RTyX;_p=eٸ T 5Jbʒk *uWrG\dڙ??seǃ}"3`f\3meKȉ`}]k!Z+)pupdq\L L:rC yT4QDGE\88e @B$!rWHS^hY+DVɫUHbV^*N8H)NZ/0#JU* g75+;1#i lX-R@$Ա0w E<$); ؿΉk u~_9_4V:Kkr.gU&%V?AOT0=rN@'69NJ*ߥǹd|qhW,WBp"PkDc_ \f 'vZ! X!FYH^tgPZƹ蜪ę3+O,J) J$S+Vo,Z8V8K6Ds ȯG*͊X ҹTzHUP{X.6JTs!$rۦFΗW7Vj5*=d`]CZp,ͽIT/( h!7hfҥ.1Uׄq+lm@*,-0ƒ44DVmV\fy%Z^4>f$GlC3sѵ˒ɀϚGdR)8A(~wʥStΩRlh a\WlITr.tmf u ̷yfm~ɟU¹ ,Ȑe65Ht7گvT,N0Cls&[҆ɺ=I(c:]Yi'JHbYK/ާpf!G2n&E0)sKn@e]* )f+>H4  /g-s7F[spx`odLJ3dZ ]"9PE @B} Ԕ+eZ#[(9nR;f7#3w=b ́:1 1Y\Y`R783 IʗTHH'+6XRf-x:䷡?$5UfFi)' 2=55|(tq;a-jg=,Uk|`x 9n>}^LC KMAz=HlQ3tE YdFI?ύ@ 9+2 C`F~BS8I)ĚѺJߥ\t gpi %~N :ˊdubr]xc@I3`N!zZcvĈǨ %KCt܇a+T}LZ&d <ѱJ!G5qd:2`6wڑp01\F"9GoJfS*3S~ae&}>RA`2ٱ CLN4IJEky ?]P|lvdF:\R{*li­;L,EM Uc>EaJF~'>e.jFcZcDlT`(Td*Zy>(|J|c;i=+rf}̀msXVCyO}6Ay2*LU!~l7OItH~ўEpfL>M n.mA1@RҌ"S{0@M,]0kO)ZK~K_bc@ Bq6ԐǏ0s1eԀ@̼@h*fBL~<ZQɰ?'noW YUyEpm5ef-G,ؓEA2*nN_F1调4O^0.[%dO]ڨі-iXmwo]xư1DB+X>2G)qw۹ {pe{ h 7yyq2:t!4Xd> zI:ʟJڮoN,2Cr 1j%v{n2r$޿o:bY+>qԠX`&:m+-~q"p*&JWfWJ%\?ΫTD,')cΡ."B=浄dTSJ4$ ~ym0`2Ȉc ךp!N~N/!m$[v|v̬HXK:Ee 3]r*c2(n2o  qbmcnUiJW_U` Zo,᫰#*9\"@EűJj8*+i& vG*U(4s* s1:k6 u$`^݇6a-!oSv>L͙Kcg]r͋[id$։Y}QR=8Y 8J&=fHI΁^J“$[Zyֹ\8 J"+G˼mۦRD4?pz X\%{dE]#xٟs!XدP*VtD~!]i:Q}sƱZ1BGٕmm~>y ڲ5N­nJ/ahe[w]-.f PsrȥҠ2*)/6R ʨefיoeR"!j؟Q/,ekm`u\Zȏ(BG< Yȵ0PCPŧSⰯ񋜸A?v.O'R>h.b0J@kJ$)N!?| &+߮.1Hؠ^%JHb aKq]v۰$=Q %a@XD)j9R;3"g%A6kx)Liulf4v(waLMHcx(k40Ω3j;%lW0ߚIںg>%ėo) aPM߹#/ͰAEPgMG_GeZ8;h_v:Rwn.Qy " o:3$+ǨT *lZ# qA25V'J& KA=1qj}B,J} C80gW< %#356Qohу4ԗ'I(rn(,IFh>FJQDv`LOArߦA(('>3:.!a`X)d^eKh7޸;U("@cXz(*1ذ\.D!2ީWN#0a'^r\2#NVgBT@,`4 .5GRjVG6MӉ*Z5V&Wc0Qwq@ˉ2 [8'\9)+ @L3mb6yGt1 páWip}G0u>rVsz8ƀuRǽ`ARySS+M,0kձ1 M6OF[HV%jdH_˝}I{뢊cHV:a.h^tZggK P=^$Gyf>}\= FriLn+iMuָbŷP 2Xn0}5lb;japҝ -.r=dav?M*sxsz*h;BH¢5s}eTxvqf'UV8؆8!bL_n)2ͧꃅ_iϗfJ b,OFL念d\k^rj~^u.F!.*[gt~X&q-#Ё"8#W(N[o5WAy[i8cצim2+G; Yfd,syT7W5SF-_}/Ϸ*~dˡSa;Zn{Q {Dl|upNơ}GV+%תb^Beu-(lЪ"N3{\%e~^2U*[6׺\T>y,fJѮ)cfOMIL 1Jr0V_ PCx, J.VLl*i^S@uQ oڇ:g˜R^ګV%?v~ ROۥO;U' UUat1C N'~6:Sul9vJ*?ea, нrnaKtaw0̂d U#Zv9he(ni[Ըh](5oxϝ03}o Ww4Tm|.*E.!F{91>:QA_\`6 OCcUz5KV>=Ud3x#fS]2{eQ2L WxU6[-f,ٌc:w FyYB'R2}K_О{xۻA,lkzV ϫD-ؘ|7*erxf彭SEOHRvrǀBEB,b1DWїe]&/3RҢ6`?O5~ [J1z E'/w2C,",hfERSec$u_4B3fOI}dR-Oa15\W(wی;˄-5p<Ґpw4S葑u( LG y9% ,,GD忴 U,~3b̂4 Q!)v *gC GJ?Nsn'e[h$wtSdiPUn^xUaվl4Z1N6bcr鼡-d+*y~Yc>$WQ.ij ٝxsN칊P21"99Fͻ!M+Uw' !E`HIrڼOY@P#5S!4:FYO2 hgG'Y!QlȲnQ,{KR3 UԗQ2ܛא|edjї@6X$yJi]r+*<]D0 3 = *9Pc0; \J5|0H*0R`poKxռ:3\޹h^w./*k+U7׍XR;72G^qrW|%_x+cvFƸTsn9%./v숷phVAK$"vr;qX'l(R1᎐[@a>ΐesuOefZ"r/Q?fx;!Nr9Kd1O9ˌz>D=wa!HH?Z]'|SA9.c`(M ?&%?!Q>2cV^^w.e~N %,{iO@+ga\!mMpDt2=e.@YN17}4HzdBnٵ:͗s] C8Ƶ'W1yZ37GƧElGz^`W?g,xaJ&A)қRZ^yYʈE؇XIP3}Mm!8 rþ(W*b'ٕ{Ah}xeQD 0(qL,G"ޏ(0vQ SX䉂xfyI.gyw#OZ PSh3Ҩ`d$`CJj =FI0U \yE0֊WeuQnZI Z (ig_6eYاVHzgJ%<gM]:П K;0:`J_g"E?5| u",y뗴DX"գ$zHfZU $$*et'sIy 2]fVWlemuӼ.=-3{PF]vr9z.YXWPgIJsVP\$';g `BoQou)-ԖdO% /y7-dO)GR|0v7N枦bf^ qoH +id[x^|RI~!cw2#;Ӈ"A/U>L_, Ό.E-/Kʝ7?nT|'^] bs~~*}Kb(6sΌ驒ڿ6:BHKQđ2^*R4`/)A "E>&ۚ(bn~Z*3*ͽXaN`Vj8^cM\pjRSA-TO*jkL ?M@;CػbB~HsP#z4 90Kg[I+hf~:is~7|5  zி̺+ݮ9Ld_G ŭ(FQVa}BGuԨAzk֑T/-SȟZo q$U?VVs/:?]aP*x4㸯?:dN xJEA]фNlj|:ٺ3c8UgȮ^j 4w>|_tu6@o<`6Zx%@.UPx&Dw2(D"CAo~2{8,) -~EL wʪ¡dTLV؈Cx=C$GN-O d*SȊɌ3@\ġP瑢k}tojvaR/h}@Bl2@GCbB>Xm{$J{xW4=!:5Żں[ZEжT(:v7-V̲D]uɲ?'cL>,4*a@lŠG'+%GRjȓ%"C_l-cư&8@: th3/8 >VWtlb NyεV؂}t<׮KڔtRLR Ma3SjziO(ZqNez)YO &Aؖ%-o<0y}`Rk&V Qe?o]VoSSe`pSgtٳ|'}:58SCBw5j'PbCqae-rv>jPRZ-$&pXT٥t _gl~ ozXq JNKuUd <([iy8,Eƚ.BORd\FTA/Qp #(]ek1RɁ:amSfZ ,8ISrפ\t_*N<SNiN-!#\k] sEP;Uv)(͑s*[\bEx6P<d 4@e =,(fѱ|x`^X(Dx_0`j\s UcUfiN$ԏ#Bc =Q$k, #܆D|pgoa0Hgmxu4,?Epc*xr)mJFQX]o4?Zqc\MVmӱ2¨+/njx2r IߴR uـ>$ yItO/1&4V+zSj]c<7f]꺞?6-r:6$x¹(uY㓋`[-BNxѢďbR)SE)00КL ba#;XL.5 BKǽyX,muKu`C6,a3#ͣ9P9EHRE$ "r6~0A^dcW=tj~Rb~? p|ax0'*HGz6H=zK7O/Zu;숋zыuG= ̏Ѿ\S:_m1clO)oF|4Ӿ|Mռ>l]v.hx$?s5J ő{Ѳdfa|$;I;xqvaӸ贮ؾ"|l]P̞|۷{bU{'] T;KЁ/cȿjGDĢAL)1D^yJ8~B @7Vf`:FV-OuMf1i6:v)U*=8uK+X,v$XČ~9|Pk#tK sP !P3_ed3X2{R<욄@V} 8Ju] h N F5q0wl]3~+mF:R*eH{x/͇0, T'#V-f}TcST%5>$ïR m:NڧȽ90E'b!G/r_Q}._Ȱ !a= GƨMT:V<iBס{3{L'+Vbr.&F8 VJU/xN)@0MṿOVpIf,zCq@U , k͍#G_o6!9H=ofC}̴}IjOo[o( 41a~$/*@DT7ٖW*++3+_*At0V,rTFԭ5.vrp%g#OTr xD/@chƉK ǐRL0,pC/l`㔎?zq <> ЁGTf+gծmED\ƒ >*Ԧj" ?<~Ȭ$vFt 18O͓rU] Tf^=h|A4 Z^ovOz*y+NDs^ĩ F%бJ @ডw7̛c"?úl["&Si$ uy=G}0,E\UP @DF_@u3-.=ܐ?{[%֟!X}l"%Ul5|mX E%|:yv8\䆘PB̔=D 9)BuqJE9 ǭ:AbC3WjS&fJ_艥j.I*IqP޹Wvڿ"Sa'b| @Fyp1\,6o+Xb7̥|fJɀP1/}]Bec>`n&jb9,@0sZrWRмRZ3b+s)YT8R6_g1qژpÈO#e g|f\VC˚2/n%RSdyz#buާwCW.e0LN%Qz.D*N^7Վ^Dpi"O+ea%^`)b0"O;F~V0B.NxݠAwd6 cg<'`"?IƋ&qʂU@>2|HLmDP,:jJ;@,q15=0^c)gL}9%ΨlT̯ Xm\&md_p$Xv”yʮHZ2rjuTLObדϡi(UҸKYbCoPRWĢVR$'¼O$Oqp‰ 0sB#YlQ!7H91~cW$~ KJxƤIUHAiỎK f0R svqTZhC aSvPDhF{B?bS@AK;92 .=ƺ8~$`Հrvyd3;vWu@:7%cF] ~UkIg\.9X^ۧb90S55[)?Y!2"wqOLP; <Q4[|7 3lb\gb7wv"POZ?hsٸ+da 9$}ɜÍOji!b=0Lp s6EqC00fvלY9;׵,K2w;zyS'S8WJ41 L'L촧x Scnqkmx7Cyxi%G1]FEHFް̫#ɂ*)g =k^N\٭e[r < 3T ñuެFi<]71urYfYKH!״i^gŸ8o{{"蹹,\By릷 Ao|%%7X >e"NH>ae1W}<QB,(6P2ΤFn΃qĹgbbU ф峃Ypi4ՇG1枭gŜ2tl_rΛ[Ŵ*~ K;&H$ZɑWld(Ě}z1{YLj~;7 8 |dGa仅_Pog]ݐ7xo z:Wb 9MaD > z_ԕ(gk|jIG] W|.WW%YFӡP~Oޓj+yJ(xԵ>E IhϺYl;fN)g<e>)]~` mJQL++I=92{Bs*!>6"K,Un3϶W8hj $s_es MRRb]bW74 y)%t=sxR%>+ Ĝ_A戢n?X8-;cI_L7QvxX a+c]ǞckӉ_{,*ϣ5{Ԃ-hM o(Z|:Y|vm''㩚~4[|޳Xdpi8u}O ,I3D4fmGU~d(6B5>8*_7m-N>LJoSŶCހ+W:5o0]&DS3{<6m$X$__,qD*=oR~= v^( KpG?%o88MZpXrlľکOVZko-6!SP~4[J$!7ᮆUR""709i`u߽_ί9\'oG>\qp,&&Mj8ynzGCwN{c|sᘃU^~ߴD\a\<%ȠqZ)'{Ie|l Jᅛnȝ}RsՇ]όަ++/N!UKd0<'N &YbއN ? ># *)Cf2f1 :o}SF[הanX$ּf?gAMƫgL-DӴQԱзsm OJSPvwWck Z%T~Hl.~gת|Jݧ*1d11K\`Et UUk[ʪV +v38 ݼNB )ucoG@>>7,2h265yMӀm9)i}NeVd*>Z j/B9ZbRԎY՘OV/_W9.1 Ta_i,Ķ8K<A, 2˻X@AtJ:a0 2ƎkpVO*gM1nP{qar:c?>!;%X5LpvjY6T&V,-Cɭ“8Pegk+Z=989t8iN+업@?AW.lz6zOJk7dž;;MDG,d(^a H%\޹RD4ci3R vS Ê&C G4el&<w`.j7q*~a$&>FY!&IӵY1KvjAckߔ9mU[mrS?g~"^P^;b}W>$@+ȱ¡=*O*DZR]GTpk#3K=cu<:"`WXMJO}Co`6ZH/q?{Yf.uU%י'$';xO XOÑܞ1M'캑cw䒅: WfaJp'h1z^̮gheΪ;4`ݐ#ߍSgQe  U Iug" Z/ω|e +8IH`ktA8!{&ا#/mR¥ N aRaG71NƟ141Ŀ.: E1?0ηx40u'&n4?n4SĂ'3+8D8MOe1'Iws:`*ǼhyG)yHq˷d wrjRg7o/kuI%=Y)Zr7>6oGjq6:g- b"Wrc# ^.!{vL/ EhZAZ4ty+;֎B`dii0gHqOvkVa<_lZlnjmן/Kv6n)(aaZHE w!GC2?pEJFyԪ^* $˱v-?σ~o0 8I'}d|\EB .r $yhaqXZјKh9{[$C] sO`Ox-aq s!a$kߓN(יO.zB*'1&-R՚fGQX7ve,!Fh$p[ÕKL߹W .MKl:`5 gMqHe\@+K#"2^- 9ױr9EE*UP9%50u2nauS*G9)}x9<obঁL4!g5VX)m_[7^ёIJ=BЖ|p&rA#t5iv=,$4<԰ R뱺4- !h=1P@>1]K98B_;V?*f2.q $۳/__6/NvӲŤ0QZVc0zeFmDMݪ;GG~'jRDwzݣn}Tu~Ow0R+.W]Y& -]%`.iHgZv#8,}:N30?w {dxXK氀HˈH!x|# - r"t׎}IF%:*?</$G(>lj? 8?K$kahShKCػ^0x#+YW~aJ#8hXt{e!Ba.J}xuz϶9<8 ~q@."+Ks1|ߌ86 M tbM.,r3B`[rJϰ Cf @v(Iv!1Bf@_] 7<ȁtZ pX(!}Oۧ0X'\|-Y?6ș?*: _zK we)c*G)nB өn',8)\& [IȈtr@<̳( X[c$fpY! 7/%4@>m`Y|n+}6'+A;-] HqnMr +КA0~ߩ:'1 0daƍq[@<i0 غ kɻwXW =ukU2ԃ?(HB;秺=]6h0%V:anD˒_CpH LqƩtC1KMڃɂVxۙLYŞƽSwkyj{?be<I|둸<E^B!.&>ya08W|l ,u-Ι*pL]ٷhL^&†~cQ%(ˠsn^( 2=%%DlVstON(曌{'GyeپbT߂56tW1#[x+LX&a T\䑵{2TڰS[?Fd$WStN{JP;8M[lg?Y="9h6@u[ [ 0Hhv# ?ƚ9ô~:91BAXh\ۘ_ 3tk>o%O`S?+E.ujb_@f ; *@NW|Ff^3NL}-QxMU&9_dSS`2,}+Z}eE{a[ wggIE@f Dpּ,ɸCܚP<4NPzyОAfWGnb S1h4xgvqQ.E΅3#.y>EA@ģWH5_.ߟgDUrXY1$HoQ|b eN*GG+4`ȟFv =]Rё:Pi?mЩs^Z}@I)@Ӻ[X;fMᑜ]OPAŴ;4$]\;û Moms韕}͋a5IX'yJ<)&{t0|pghW)z ӼƕE{D Aexz9ICCRj;wꔺ2nB@r`*IcM nz~jWR|\gKzN0ed8hr|vɰ|q`8^%C}V1 1v|璡k/ʏ]yk.baKwبSKC K i+pA$fswh_#rk$3XN<bR_`0,&Vd\v/hF9u}o]L]&jf3)HN3~2;w[W.P慔G$($:(=,E|udD q㺔M' zvU#n LVJrlWh&Sp1л>І R``YAøl g4,DM CG܇W.VYmr _]ל:FEFcjg>8'X˃Ge'ڭ-'v{rx=Q[babY_<AeW#W\z>`ڢ!Қ;=\?$e84 qN簻ԭt`Q@3Ys^%!+)E[Jб{ 斂KtA=)=,%0e | LW9楗"O`k0=1NrZХ5D6'"8`j\Nm0ĺbn+3Hȗ3ܭ{G`[DXi<0Fku"f]tϿdЭC pL[jrΆ#ԯba (vB*,KTVV~"!OSh)PJz4G8 ?)4j"t;>e;QCk(ڰu+c7D=!eOyc_PꄎiT8xo>y;rfUq8 Qg;ÔW,VlZ6[rx] ‰'0. F ҝpES|:lp[hym{N1BПOn8pavGM`od #LL ΥS9@aVa+uǽAwo|vf#d)bʌi!sod9C kK~:ڔtUL0@NvȠfD2RVqT튀q.'(ܔգ dԄ,\tm ~5@% T>D>d 59di)vq[pf6l8ekNr!ZP=6l#Gy'橜:"7uR\Xe,*L6jx+[;g#X|l㐟>f /:2x Qӗ{Tؔ2B?+̶9]hhn0M8t W WpUמM?\Ɵt•, ŭvΑe&0ON#ĺ3i2_U֐/!h Ak Zi)bM?s,%m!l>V>M8ks_n]۞9G`RM~sʽOU[͞.A %~{gsLt-y2upPR"deAvV@ !Yahտڒ CUj5)f\b/VVR y8d`foK_wb{q;w^dm{*yW:}#wcg4CQK6A֖ vsnW vBoJ+e nNRK޸>[`a>7%K楠cvZK~9q1.d Hq@Ah](V2|yZwF#LEXfusPNo+hMOU=mQA ̲0:I|5hvuAI^yT FLK'i7yy#@nÑg1\v{tW&kE=*M>F9:M>+M1ɥvu*#b-\X.Ghd˟bP CEPX5X ȖiX<d)!zjc{u8J lwr&3LVO@f[Xb6)i%<]) PGTN+ڷq Tn,r$Q(cܐLK4ܠ.H'.!ǚbNsFP/r0bѶ^l!!M:[R*ZNŌ^wRi &{ Yq$-`8g;c5RvfA<8T×V~=?99:8j{UB+5< [ȈRBz]7 &OxD}s-}ﯓTS8+lRӻ & UNRdE?_K,>0}m Ut9;8u~~}' q2u~sv'޹IDU*0ëSS:αr"<*ot" b5wbCqo-$xZd3~ qrc^N\aA/:?o8?*6\jR7g>I=sǾ?j=<6 -<[|=ƪH+ / ֖;!8rfka4{~ Zj$qaQ/8Z3䢤Jwp7ԡכAXaP=B2G] 5z 9G;<>cJǓ^~lP 9oR LVP he(cdGlJъ26;BrQJi{.SxsPc7 "GVfI}8'mZr _$0iosC,MR;:rZ]jp3Q>֨0Y$»G]B 7)UMe_ vw2W7aCO2\i{Cg߃q_ܷ_kJF/Ѯg'Ty[F(q>Qs)9+PK ؅5 l2;.22.#P<]❰^U`pP?9Bmr!2&YmuVVBi~H=ZFʟD;J׼ {!++'q/: ۢ(ϡ]h?od5̓4c -'d^,'6q8E3wF"/?j&}Z) Q3|| S&ݣCߙM^Af\z4^2Wؚ;ZOBR', ds&P_.Xj~'*"޲+Z-M}-ي5`^M"6IQ+a+RA&ra\{۰ݑAz8?Sp+TՏRnfEFQRΏ~b@,-CͪVZbl1$-dƹn ;9K|(DcgzԦX$"l8۶]` ~VMȑHwtjKR>hS$4V/! w1b,E'FWDtVmCFq( bWﯜ0?OƌCi 5xBMcTm˶r["ru jn= J fsjCBnNBs+d]@ABꍨ!;n{*nBM7a^5q{Lx4sfBW2H%* <-\M701[|9a̘ںzyy~q UB2̙Xmh)-^0")aN GS5v­+j6a.Q|'Le^#&^VPcێ1-QeWs+6a,c5s8u#`Pedϗ.h fn„Oގaޕ |@ M)>~?Iu>34 'D;6/̰s|s}}9;T3mȃpخ-Kt>M<߃?67޿vgIMDL]qhGEI؊ܟ6oxnp"RFf:K], m6Is _]Kg!Kie/[٫pǽBR+CxfZXN 9fX]Dt@ |+lCix a/?5='?3hrl5%bnNcOT1'2BણZm'EA'OU <9rT 9_kSԦt{'77قw+T#oZ&Zb0[q {5G`O17@0G_tdR؛f[\(3%@s^Gd2a-xS]l4'@pOAKn|ʹHoG/bЦe*LjĦdvC"ǣD:H7lLuOSqy7΄YL`(Gۂem̟]ٲM 6h;/4!> #&`s*wF]5i9fn.ydF !uU-tH4m]\~&UFg3n4}*8=wiԗ<ڹ i&S?˶b?(Jewc+^ ǎ6H>WSc ޝ]i'p+iM\`Ԃ}@pr=85Ȫ܊=tEsi^72"G=6aM@y%ߔswGbb|{y=n<n/5}PҬHyzfdސMa;OkEz{{T7eMJ)vWEa]QPb2W%Gibc U``- Bz6"o-Eof0Gui0 gsU;6/tBjLc6颦=o6BxϬ󰥍-H1^Tϑk$AnCA\)lI Gn6mtq)C3aed<|>`[b#$HSfeC6 53gޘNSF&I 8Û8-0v=g?= |T~X Gn|nbf"0pK T֡G JɆQۅG4x(&?т_(4{aN{uj8UJ lselD^ 0JU=P7>xpqma1C+4 [6ߙԹON]ӥt;u. R'0ѯ}UnHX#O >mdtw՞-U><R ~\#BLj:YARoJ_Bjh(2gYG$C#EZ4ҋ4O##&) J ZG$Nd/G>s %dx>ghsϾ/mzO {v*۳tmڳtO9&4" So|o֞ř2:Pf$=j-9*? A3vn3 3g &M[  Kco؜TyQ5V ` Қ񤉒W :4GGhQ=M|aט4͞4ջxy 8\:JI(ǎ:UKqt2h^|Q\}a5&u⧓'5hC[y5"Uq`70"nl_tA̰)oN[y{vo`">?5pT473hWV́iK<\M}|(qjT8-AVq͕23EL%*Ѯ*皥 c&OGx:/DYRW5֟N\7,Ӭ669Ϋ-B\HptNes ʾ7qߙWIlT pH'b0 &nP'@@(cM? +xLK–G(Q8 ?M`3*MŞ =ZAg .O7AϝKq 1~.zj$lJ7D%>l!Ht` 9k|`ɐ_!篼x@p(PKm;A4PK=< styles.xml][~0h$b[tg&@ٴNZmueIg[Kʋ(QwJEF<$!yHtf%~>uU`F翿>c.|"7;0U- W'VE1 y'vždSbv OleB[ 6=SbQ2:o#ʧ$PF~S_4M5B8΂ ]Ryt,tU_pL,Vd)URаjFC5 ilPyMO޼'=ta{>Rbd"Uȏdb( VI6@)-oK~D~ @ p G6a:})J`ʩ8BiVAaE/`D-("KlaAF‚T0Np{-pA7H>}d#_R6Qgob|&1 OW`=X}'%a530 G&+ ^a껭MQY!D>brd čNʒ:"R< ^Qfޠ}ٯ8 ,la/ ^P^7X&kC>dsnE:7rY> &s0}ҦOU %8 (g>auB%)-OSv犮ZnnZt\(S}1.zc9'Ld9$^ ^`_4 %#FDj em(LZ[1Y-njܴzx)fא#e ѯtΥ$$̪ÇL0Į4PS6p!Hd[sV4 gkmZuW.!sBFGhPj%:j84 ad>FPVwgLyw@a{Eywǩy+QUg_InίDLCy]v]?]}vd#s-D w DxˋU n?伲cSYlBDE)Bj壩ƪw3)..xDM*%+[>v^W{w'-[^zEp~9Hz%t&TJػIb̯.ueGUF0jA-X죟kB6o -FfuGxk]glu*X^|.,P7,IBqy1_w(B!}knǜРEn ;b2o F\%N_?2K

1E{:0[%$eWĽ7CSdRCO)K 4L)Vl(n 5pfufJkj9Mk4='g',]@* 4U@f%z=\-12czL֏ɖlُɖl{87Z$2[&wGW5ք`>?EK_Jdۭ"6-eTG)n+eJHMySzmN\}[͇[w~^>ܦ1W!ќʽ~-۾1έ۱m?ܺq<ܦe[m *?*?[pxlD(q(>lxWJB_A#iaέ)]0ucZz^N׽ ]ܫ)^sqWcmiT/wzmYVmTtUc0wzv˽TW3<]6^ֵ|]^:/vlG?6|wZTGX mqK@H$*e̍^>,|#[Y Ќ|x1͘chF>f|9/ἇ$^L3m ~ޡFϲ?]EᇡU"0:W^@Y{e;;xj@4!cEAI3P4-P=|M?b<ϐs)/n)?f]QVmy Q F$mj-3Ϙמ<6Sr/?myUtˮ'̚eUz /8rz~;N$E H VM},Wk⻅rj QXFծ^`J;i%\Tmټ NR0[2{7cO'd赓^/M2g]ʭ6|sB`4~5 13R.h ElQpXBdFPޕIaݔ*vKrEUً KԌhEOPK~7`QQ~PK=<5?g@@meta.xml NeoOffice/3.0.1$Unix OpenOffice.org_project/Patch 32008-07-15T10:23:00Karel Kubat2010-01-29T01:13:27en745PT50H53M21SPK=<Thumbnails/thumbnail.pngETN !=5ݚ%xpwkwh,wiy;g[oSu-nSʊDppp2?;*588uY Q5ϬlK]l?2QFDSɏ"8'jy v;A ܫ{.s.:;z?b c=L)^yi:б`ٯ廣)0gIUSCB&\z:"^63fwӈ$K[0nq\qP'"_)^`%]v*CrY=4-n+xq^|V9;|lR0`Y|f;>` Bp&%纆dh ؇+Ggf"^ٞMU+-QP&񯰅\/"k _ak:ߥ/V+Yn|כՌLOmy|EIq VbySvf뤸U^Wֵë\?o$ٱ<}p ),m`t~w.Oɢh;\۪yeN0sh$l)`c$B+v8][K ⇬婽7Wa?0$~|?-c 1o.)G&Ũ]j`"2G3XI+UeAZ&]hW,HԠZK^qumQ p޺}kvl>-|2 l=6c>УvoMyW=~sWY*仉 P{wVGP;Lp dy>쏙8lUq <^SR r(y)d>ժBa"-5zx([:uwU;n.~/X*Qz%XP+/M֩}~׬Y0ި*Κe0JS1ME5&b!%J<̄l%Og\!Y \5V6Y?UױJvboTɞ@c0ֱ{V⿋4|#Sz%ՉݠVGDzR$]٥~8 <U+sk[R RDSYǵEs=y ֹϰfF@_8%'3h_YRQ}O{"'xxFS-?.ԉuWMy 20'ز""]yM`HkDZ<{pUiqYc_' zLZp+VT2r- _є/ t)fZէO~Vl/=_f4aˢ-x!?6v>< "@] >ߌ |}X&e1|]0~,'t%0C qW؎J?>_M]n"չ@E@zOcK3ǐG6v+go p^߲o4(YI!=q*jo& >M[T=}jƸpD-J1XpAx:/mm4I7'{ƹ括p*|"ygxL^lnm/}uP_RZ2 AS;7֒HQ[e(g=\|ԩ`&ȋ=q$ gky m !g>Iue 2Y,id=CC>||߷7xCQ=_ɔ—U͑ O!Z_PI`4"V dŜಥ/ 2 jMqLKs|PӳhSp"HQWV=|'u :i)$t{oYY|R/!IEibhSU'ϭ}r#`7@w abmg-twVG 6^@#Gs"{ +oUVS@}J ZAmoUL:kzX3W`;S2ӾŴñϼYe5G8ցpKLK0RMoL_6Xd}MgUgc "nѫ$l>{di1Ts߇$8wب'N4!B^+,}ʺwV5H^~ySHطnnm_Z )kZ+~; &G_ye`tdgxX/Ic9 `q,a6ڬіBRRk "%<ʥ$4a2WSr1M% gWe Tʤ<_e i<+EqC텋ZL:mv{nSܶgVr.lJY@pg۸^qM[ʿxQQoRm/Uٙ,A+$,sɗ}3B{n/ߪAX7𽭛~.L>?rC]fM9bz^[̷ʖ,rR'zi": ziÕķsU6j/tf lxAm~GS%†$ g_<Іb=GAoZɟ ded9Shƣ_Hp>D  q3KpKL^KGq"F3n<;_0?";_~ )JE0œH] 3o:^ c?gv1Hɼ^xrj3b'c4T =4ɛH,l7OY4U1>tiX^-6ʠ|@_U\r`E 887b ӟ`f9VO0099 `%>Gnԝ莜!dqMclwbcH d2 DzE9~~,zr/NKsb`+,w+uޡte.+I,1%^|;` tg>/ts6I&%rt_x)i\G!eǟvkGap pr}pתdbaJM1tU&='5H1:[C98׍6~X;+_Ffefrmܽ̅X[=`WpYH%'Ɵ-S̈DPSaRœ])#Lr1B/4P**RP,}[Jfk8CMT9˛ϛȰk.'mBBR-;sm6 \S'_s}T2-\5jseY']}"XYcJN$e3v!feȕi%h505Bgg+H,\<ښα7/3׆Ij8t #dћ.&Ʈpz`y2rt- C FG#|0AL|m%^!ӿs/=~EQ:ޟk&ZBi'4T-_y.VŘo.Xh{~D`P\'0cW\M+|hAg[F:J'~UFtgʯ QWAO:d6Op(X*IЪWdszd iL6T'?}>В]d RZ޿>w; D]^2?kk+ cnϪ ,s NJS,史Ѹ4FꐇJCTT,lHx'?um,8V]}8'כ6I0\R ݰV f市 %=!^^"5G,̣@s^}ckpYZ gJ4;R`4eÚ>:NKlKw!p%TS 2;%^6R\$+<#HM ĭ?~RKΚ(2xճm@diG n[8Tr{c&u]"jc)GQoWQ#-n+fG`j,^#WzSY{tg1 DGZ8'“)!Ftrbi$Ϭ88w#LCfB8)5]+PK&Ҍ'+xj ӈ㢏+uA8RHf3<+Ł_-4bJLqvoEP,+PL)B M9f0~8qp>70֎9 v)peVBb4kU ٌ6ͮlv€DIf6;IID*, QHgJF3eB|&jوMZŢkd䨄n9knQ gtO~ӡqbnJMExҭGĥʭ¨ZHEGb)1tl0nE4]1 ݗzݬ"HYwAІfK,-PRJ|x'¼Izlp4ViR|n}u5% F]@f)bGi~?Ȼ2K>_%ZSў;:KXЍT0CE*yӈ$Q5ΩRήWx&]#t!)x\j~M&ۃ;Zgwa%|C2fǙgW!V5 4b-H$ltkRb1sl Q`kBȟ~i[L"UM~I u "N'?u4o,O q>`\oGS2,g=/Uv$.ԣI)B:;g:"Hg/L1Tܰӱ\굽WaLfFq׹OӰJgerE}HO` 4@=s,*мiWǥM.DždkzHOtŸבFJ@*@>.+8w1JƯU8jPpbgK+{5;t^v[~'k7t=o7Sd#qi6PL6gw% `]}4a@ķsEHIY3:r,ס͎$0dÈ@ ~Lݪ`'1 {*7['x8`SO~%OkjiKōqGn/Sɜ zɾ'A;_A e~~Sn!5]pKN9=ROM4@Ln B cd.k( Jᾯ;k~wȕeŸd)l`n]o)Oá&?9|gtIm(0Zby<9"9)|6}?+WʾJZb_k&r1͜Q 3 K25bi\fTU,W|/N.  \Czz \4mV\D\A%$]yfayx:V#Ri~,6xM*SrUS)Z9T,-R|[ _sBw(y¯sQNt qMdEUv;0RJ%eu>%5Y՟]>%')qOkXU8DCO[QulBOJ(u=WCgp %߰J[ tUP1{[$=[PA)}U7D ǦkzyOJΓ^\7хizHu)9擗}S*yLPtao2(2g{ʜrg_Jo(As|&])dZ=.^!J0y]g7oR Sh# ǁǼcs! JF\,cyzĝNqH'@v s7Zbt UՂdeL,95Vx!7$XA])ӉS3;LLX{v܅Dڦ~ZNWr s-= e*JaxDݖ"c2폹XXR&gvac-^irYCKr+Xʿ 2R ٩Ĥ-WxqڞcƁd<$"oZ ͣQ6M;?/ GBn)eѸZUA8Kck!0`fh~p,bDxT%xb- KDff,C}=`Lg-|h>^su[ V[ !UO!a #W{Y>S[LSٕ8ށ=!M>w \Q6ֈV  * ҍ;cݔ8Tz.MT6{Qey>ex'*5KoJ*JԈPK M,/PK=<Thumbnails/thumbnail.pdft%߶tǶQܱ[wl۶mvǶmp{w۵kךsZk.{|E*' 1Јa$d 3榗22v0!dã@4p0Z: [;Z¸d$jU}o_߬>r~R9<9 BdJ) n5YC*G$$28TM 1Ƴ/»6uMOJOP1\{JsM Nq9|LͷCt;ĖR5H}6wvT>zH}ZSQ2s]~hgG7⊋VjMU=Z/`CTr[݉{POC+Flv}/8KkprzFnK{\]O%wN*DgaM p~I-D .4~_k傅*E V(>sYg-PC%w?l-!3e KIe`P  Y0˩qqH.;+E^O I#Zf:DHħ~Z2̍vE<{TY\$B֌"ǨWܾqa@c{^cϏƆ+ BQq]*P +.UzAkHq۔D0Z`*e[Q9?.,U:XbChhA>4+RjhBRA -3qY>XQ"U/Qf4?UZ-Ĥ,ktiH2Z /y`83Z[]~~r- 1sO[N3gA'2xS]Bspr VUnJy@?EK#]qFgf61CI/(fIm$`p/)cvnzP)EMP:=HL(- 1lhg`Pr8HCKex@#+$m_p{g3uF14ŕ_ r')C&kEnl\O-㰨 mC֑ q2KgکLQB]D뻁:ڵ/]ӊ15%5H1ou6fDDAܨ<9i/"$7-Zu▽7g%Ѫ$E kFz;iߛ qP.a; U!M6G1n^9ET ;V µk2JJq; ˥S>&q/ah6 xBn3 HKkgɴNzv f!KR]!@-Q1JBt߻# ϛ/J0.y5%ʭ@#c %fށؓ:BڥQMV9;]/ZuS,:oyYOq}{eüCqre9.V,moU-ahSTn)l1a{J\8gΒIeKc_/BeJp}d@QNtJ &Z(i{b$/pI8/ꋬ $lmKA  M88Eqf. _pZauDB zb{c Y|; PM`-^6Zռ= H`̃ao2s2o 8*Ϟl2j48WFbI: E6L=b5A,כ.px pk4<8O:>q_&UxaߖqRSBfUx e~(PbH|[D0:cY6ޙq,qŬ"ެ^[Y7%(iY$wz{ײUGO һCx{Jnm'7g\#14ƽ/ԙ*/:Q6r#Ď8-| 38?nEu ,yY [5<{cJ?'SƳp0UUs }ߖ8˷$kCfE+NKraͦ\y~;~Fͣc3 ?1YUd&p4^JT[iJv"R!,:&%Χ=<ܯ$ũBYs5rYK8댎3!#(p$/-Bxcow_4-vb%/Ie611 8B'{=MP s.!Cs9{Z~q Y9nQjDi"UO*wI[$SꋅXDkq5ItD.QxڐCM ^9eBq E03ىAY7z`%IqIw:Ŋ"Wɐ=jrX \<@h]^_z2Z(ngWv|t81|PIJ9aCz::|ءߵXKCi9e ^D*i/<x$k\~g;6Kvxe %ÖߐW ?{P/ۊ߽}cl5@Zf[\T0=%j$8=rßXN 55-֊mCBh@LIչ<xV"@:iߘo^/`-I˿SR 351XÈ0r#Pj㕅E ::6URש׺;ʀ\Iscr#p]|bEqmPր8R#)vmZϢhwvXԨ]C@a~>SdD~) nI"G?!9r"TXtM-M.w=vjXYVGⴢ)*IL9 Y/׶QfL9Jl Amnaf%kks>ԧ{0gf[dzZ2N²nAa;]> O6XDܕ'UH+G7:`)$!>]$"@:pU(bsh&&w˔&shnzk+Z!r"W"Vw%+9\|܂YM@/ ߍ#hdu.R[J3QJwvrBF:V0h+IYi 5!~A8هiFGE(6ŭʇu\wR3#ۑ*[^ArRME8uCb&x3! TjB*)Wsk֪j}9]2b?NPg&8VHt>E|)@‚Vwt/o+q^^+jFlf-$k%WEu"{Eb˒)j/-6yE{#F1 Ķ䗰BkDCξQ؎$C4`O8 B81oq3oB8,q~(}j.cLT%3S`.۪#FYCv3r#KecPG.SPHʋTM/A&ʣᤲdFrѕoG obe}ަ'O-W*;ʘ8s}a0FK]o؏k_7(9c?,u%lΕox,CO%1.yWlYrGb@J~ݴj^ f^&j]ȣ1Qt g_EP#w^"]W#`"#^ӴEM{mr 'n>h&#7zZt.enR{/+S\;6mXSœp~;yeI~z/X,AK!_tm-?? ?3+_N8Y,t O @@0Fdh:|)aQ+Y|XoFWAUP2~$<0?U pJUB̰.h 3psZ*ތӌPʧW׎ǕO)B$5\ ֻJ70Z`>\ Ku;›\m.>tct٘vU ` m{;S6J94F_]Jx^U+Z̍yh/h:\MJ~LGfdi Lz~KxIdbb2x#*tki'Z]O.䙟Jx3͆hNI7^b]nvgWzM&&ۈa*`I'hT=eW\+w?tH-hm+f+XOnqH W2rէק>hCa{V\<*O_/D1ei,z[\H{l>8V"6̯7M}A0vV>vSExM$l.UĊGldәWYg(E*V/#_#-IpZImaGq JT/O R4BX܈3M.lX5;sW$s𨪨w̪=E:(L S=fCK҂?*T7csnPYY0~J\]g7Ʋ#&Q])~;qt ׯy侘t2-PG'(Nܡ^ԳjxO}QYvާ P  W˱<á>p ¹J+i@"E1(!)QRmcIk0ŋٶI{ e-e 8+U3F*Ei<ˑGXXͰPњ5:_XE }e= *I#%ЪxӚ/a{&p8y&b2S< &ZBOv*H_ iۉpWKExn_څUP( P?y{w~)! uG+ oyUp9mvʰ"V 63W8ZAe썵h5bEj>芾jm >>gFNFe^8t9`/\$7*%\{ry`j 8$5;,z$tCҶтr3La`?2ad=imgo k:"o8xl|\C4N|5 ^ WGm31A xcˑU2y^;e& fu v:U>d?Bbk9 LۃäWjqз'towvi;#١nh58FA}-#j*:EzjǩۣWC1tV]-vzY[(NuƲ.Ww{7#nspzBru)`fKymuj:j~G颞%HP*,5@I8r_95gŻLGf6: Y6/e8vg y]XtuGJ&mxbX)'WL_[V:p!n$uܨqF^V);ZT,;Ci2whM2jwTtЁmTE0e0e >R&Bj@g89I}\FS˺ԙxFij/KDҮ=,}qb1m3\k=b''`t-I@l[q8sCidb7r;A)ykSgIJyCV[֥ klts^ /tJeYu|(#ESn/=~"xJV.–++>P==7cO/}TtP Ŗ!'B cqy!>xG%MFb5:#&:i^kLwFÝwM[gq}ȮIN$d]["1T1x7Q|_>kƯǀ+dtY)׽~ݱ}jR"E`U$ȉK] ?P4**}Cmg٣<;ʟ)zP\wn@SBL0%KA W֧S- 8<!uuzffJ/2ltT2#=eqSn%WUO.˼]OP]J~:eZ|8]5bZj\o_OSQy6 e? /DFeۻڃaݣcC0r[Ă}ޥÐFb銠 2)5"(yvo یxYTG*+(KuP2P0v-C(fU=z {`y6$7m_!{Zf{צ ^" )ow Jfc‹R(/y~cܭuW˲jh +Bs'"g]ũ^Rad7Ҡ"Spf2Yg̽װgoyx8*dߢZƒ:Kg{죶o:JۆVUJS!mZ|~쮆B&357ru0)wUI\ ?y)T̵@@/7Qc+If9]IqL͓Ԩi2zH̾>XRziz}Û]Q+ LdhTi.pbn oO;scMʸRpdLzi 1Pǹq⧙Bnsj " BN"fˮC:)BC NvR6' <,Ayul'e p`Ťcw9盚3Mof#]?,*]Z>CV=O%N*nY]1WT0U_}If0QAb80XÑA)O(gSL`-2 Qao&F*~,>YZ{s~)!p`mX]"A3%= B*]|fR #= ~8i R)ʹHy-qKw4^q@msFڀ$Wik”wQY_P'(4a4Z/.֢`~e ˙Aowavwh'J(!삚lD s93JB/ J7@G9WH%ql)bxk8zFɔ3ϪpnCKXt xzq6KCd1YLd]qq}sYz #4GZ&Z%d9+υ)@WŖQy/T iVyǓM\SK#?b1+Hܮ@acҶrnqn<# ##ogoƴ^Ӕ+i}3þۏڞCΣ ncs _SK^Ⱦt ozW{*9jޓ\$̏m|m_XwU;Y=?n"M~`]zˆ"4_,pg24fz7s8}rGvxwv~hq6Q#4Ei$)%z%5|]qHS_Oٴ]lU\tq\)їS # 7 փ` v )VZ8p$?a(÷5KCQkQ;~P)ILA4אrӭp|4,Մ =kiWȲxc<|O!];{9_?%?_WS7_p^܎Z[-Yȭ5t~+QciN{WAV6n&*5QO(Q'k,G`]c,G:_@\m V†v6vVll B6b&LB?edbK1'db AAkB Z@`fb%X8ѵ7A??bNV$H`hG Һ.&Ԉ #%?zZ2s!#۟j׃? ?~o}3swfϫ?]?Q/S A]{ÿ+ bעrmMLtR0+}kS+?R_R_Jx,M+;VVbo<ވl{p8vPD8ҌMOd\L4 V>4r:xIc>/  k/JD)]] dJA_Nqi91Z: oZ3-&GfgB! ]4giq2JD;#異] 0>14Z^vAuuwNÿ +Uːc.}+t6ZS:*oQ:ӝ[-xp^z Q3@/W[|uG= S&!1ҳ vBH}L y&ÏmW$ CJ}/r*EsZRL~oN$N;tbNHe{IdpU+42g&MWz޻ٝ`3O@;7H>ǻ)PD!d[^S h3X˸}9"2;A:e 2#,uq4G*>,Cv*D> Oe7ѮYCk DDVRi&3]YƯ,!A54E|3g8~詑Ӽi}: d1Y;C[l]Zrv {ĥ)@ETKh8>cDn+x mk*%b%?P]WZ})W-WF|o#>r\S Ht b^p d%ZN@ &2lsF4}S"QpGɕ ~]ۄuz2BQٝ#RI6)o ccS?jh@V>:*9MBz.P E5 ^der D*UHK@V_Zs%CY{ NjgM' J5qKJ?Gw#yݔ[ I?vb3Ωq/`nn8Ne,ʠrjE=+n%qUH@fGa9iM}Oi#Owg ɓGn#H[@,˜* 3PּSEjnDZ“T]NrfIGUd‘p[YYmɮ7~n {X,6BHaEll9w|e$e&ϡ֌lҌBiƐ]ؾ @QMV]h@tD*J(mAM(Bf}L/AAY#cSqqr6F^%}ZkZ)d.`H b ^I\wZe@jdE>nE+D_(|e0=Ɲ4x\ȷY4G:8Yﻔe]E]E#6[g>=/T_CdN s}"jjs?י ,Qx3D;Q;&KCܪkBg$BZ֏;Hdd})=gYVIǿ\^PnG@M=d;؍$?Te"6pk;Q|;UTUpD1_~$pY4)[2{w}b}LGnJ!DQvXѬk(оxQgûx;!$"x=ș_Mb7[! +y}HIt|sMppmP;7ED~ _ f^ >8lt{mxn iDl]=c2[!wx 64=z[h=@ܒ I7ټఢ("%uKѤ> 7}ي룚y:l#O+SmO⽹Z,$''A6͔^WB>Sbw$XԂO1`^J褤j^T]U=AW# c7ǣ G]P"8~{{`ͫ0P'+t&Xlb'Wf%<:-ݺ01yyE@Dlj?vl4 mwg5P@#"T PVZm5b׍ ~{C|vH32S:922S佤4kYp'8gl:Bnvl\cifʍ^f$f~i&*(cy!D^_F,CKBsXzҧ6 #߳$GPվ4,˪ %)!ؑR]k(PP}?"NY\KAzӾu.d݄{}WP[FKw &b4C!CA|ƹ;Uw֨iX5; @$,. /  ,b22;0_ߜLTBZ "*ݿ(ӿaLF?1 x;0^`3/lO/C{|0yoؙ޼|ǥ9aaxHHL0`!34O^ي_J=5 J%h~e3h*cPs8?967WPYNud_xVtx_6>j6y]ާ3LbK>bV#sRIZkwͦf>9-烓XxOќ!#Wrm-CAwL l`cPz2݇`Tydb׼ .WgNO҅-m<\0s1L{=9B+O%u!/yi-ؖua,Cwkp,$CNpwwGϽ{o5笮z>0&>8nzz%#:Jɠu:̡ٽb@6 Rj(F%]U֐oz.(S4ހDhz A[}BrjhCvaVZ(=DZucΖVSAWmRgb<4ɾ)( ^/Yu/ѥ$%"}sQ,KvNW:8w{C"NSSbHH:IRyd'fS _.8h T 'jj%.`lr_Қ_$X^tTaY(+b9Y,>qMfGګ[qK )1tłL?vn[Ye.T['¥by.9:c|^'YP̤=7R봓𺢫ϝ!Ҋȏۼ%j.YdTK0בZ,L?JTkpy.AC ٹNys~\ABdxhA.`qd-a:vo,+TbܛO9jp&NIkkuw$}aGd{uYhF}\ɹ yUuz>:\( 2n)<<>%X}CBf{>z7{#Ǩph8Z;tsA|L-+39F\K<ەl[|6iv=b=U Qal=PhڣQ[wcNAWDCyxm]akjaqXTJ6nL^3![]-Lԡ'nHX'vLg UPrNr%LtJz9Kaw[>%G*ϩFT`aA]1#KowUt} &%bCz` n'(UAL "l=`W4k [Wblթ41<ʮ"O}FqPef͕z!4,+aÝo{h\9̇8gu]0u~;aYzޮvoo}ppv,o +ϫ~% J\vWhは{ؽ{bH Uv~QoL@^̆ J,eq>QA?{Ôg"}idpqwDH{㶛NևyRӾ8BSǝ#_:Jz~& ^ަs0+%~@`gAk蒆Ϙ΃EyEH];5:+ k^AuUGb%CE-PΫ Ic?_BcV6F.钗g:{ny id/Mq:mZWeh`H՜XlLA./tEn׮U8Nҳ]Xߤ ]gŞ6: XZEԡkQyk5mJgN0ُ|?~Z2SdO -.K$09~V +99j󅓯ӡOY3,BP'GL0gVOTnX[4mhpP jѹ}袔 ' 븨,_\B"[@؉8ĄeaؽȺ@erFV}Gשk ka$c#O'g\vdWW;OGt[<"Ь(5n\h%HkiY,t^gX*?0CF[ѶnP%߁}ApTvhFWSlǿ$458EAё4f(I[rϘAȞ~prs!TV.+mfcn_%ͺ탘?MIS(Owsah$^娤H\Njx$$q,F>G!x`tNL윱G WQ}ImJO$a@+1~ >Cˈzr ǣPxm\pd=!x9.s O{EE+NTE=, T$'yeg~R}&O\X)~LM/ȵt ׸QbPJ?ßQ-5Y\.ۅ2X*hUwI}u^C + &mBjkvՆ".0\.IWKBt ֐"HpyZ_4ryp6C{it0К`(WXXdA Ay'K#^Kr^r/j6F+ixDE>xЏ$U㚮Ԡ8)jc䝣%bm9u_wjy[ɾWtNf``$T`.JCC8,$iYi ;,ImNNxz3GDȎ*uq:Di9<ӢdF_wcaju~ =&h} , vr6JfZC{Ӗ|]-P f1>W9Kf?AVˡ%Qg/+"GT0 %OZZWW{+j.MC]LsL,HҜS0)" yj-4= bc/\y8INQQEMtcQK{d-0sF_cL0C5OAާ\M.4|bY`]`ȆIơJZD`hogOpd,=DJ\?ƒٹTz66őrD>%~UPSW/@GRT\=֭Rw?g UL9IN=>m) ,0#A‚ʍI<;04/@1lQ2b{":k>EiD%ZC\oDadp{##y +M׺|v#CM%Y7\/Z?Č^?}-KV{ÁzFhҳKņyHa*c&YJ$M(/` mfUWS,:gdM4UIО1H*@ #ౣx˜U.ٕ0ձ.}dA8D2P~}b#8A;Eƭ)4 $XR*}1E0K)}X(P.$9+ q+x%i) 7<>4wxguS$1[hO>Wp@)9tZ2㡑%pqi)HޤYIt ֘S)樫yib΂_=9Xَh)3KԬjֵ)t5G\QncÁ"Ma~>IJ[`q4ooTt[mG\-V5w#礐VwW۞_ (e g&_$pyqָ{8ܮв5TΗh)-p4+'&eo;:%:*G Ի/*:(':ڢHMEJr6 YhqQǡ`Uk9NKSҽl g}{wÚ/ QH9BK>[@y_#Q:#1$CŸyYuw_{^Db9)쬳U^,[IlNΤw7bscՁ/2 s]T\ޭ%n_ ,ZƐA~@u+) p g%;.!y[܏d3 @i4LIE@nvl!tUxG Z~Zzf_V(5 ߘ ,g|d%"UH><,!V%zP$v.cc;.y>${Pҿ@2X 5Vs.8]N?4H2CLO1O+AX۠ۗMx%)' R 1r8DqOA"LO:`ϼ ;yqQI"FA?M4 {YƠ0?(W P7sֆd9#0 WTP* \GGc83#G)A9Jx`HNШ^_cW4>y.QF?~xJrv!O&q :wƣw 3+B]EEEPoNIGݻJ,f.L psy$,J 22JU ŎղCuZ! Κ! UA=a@qb̤)50yCy>цAu4*kIcG6+c@-U,If!ؕVRH+-4FWϰ6srήP-k;N)C BzN(q~S;Hy8l=6'a(mRn*Wbb*,s~ cgVt(90<-T$4ɾ(עw)[O}=:VPtQNqiCyx/4SJLg5?FI@rSC/_??BXcU1ӝ͂XGx/%8:X -`[‡Ư~q"&z-edMjT"z'fK u;j!o! ߬t [/V=Ckxw8VcCa#}QF,(^PSY:Qppuv9TVUTU'@Z=tGXATЏ9B̷̏{A/X,KmV3y]dKA.Cq$mPjn+׫i@%Vi͝%hG4NK y-U5JXU7v7WǷ%es~ک{zA:IW^5A28ժجtǑr͋ݙ9DvƱq354\mY'R0kd-޺}=6Z35 듊 `Ns-O0\xp YZY19"{++smEaѡO}ZFK&XL n0U9ȃ)ه*Wl|%_J%=2MV7φ].FݤV_w#ۃU#Zn W*KA,@ Ô?ħIYaoDVB҂ X#ģHCŜtM3H +Urs&ZJA眏 wUrDkw@4Q }dcUQGNnM(5bb\D{r`'aVWY@z*YN %Ҳmx U. )d5Y~62pmHm@n\$v4WgdqgDH[L$ᓬ)G͵H@h]2Y@@N jSq[w;w.00Y.fb홞-Ue%B<)%ӴI3vh[~2|(  됊+&]`vp=ʫJXwmg 'f=$\3)H\!Ge1Aۀg}F+Ufyw-se9"huȚPHLdeLJ21z,q$4S&M SGiH=ࠊAA]rÔ0/`F~NJ#ficڞg ) cw-c4 q&*SּD#ڸg,tݩh.wVr3xOR4n׈WPc[e0 :P U؅rI(VOYawN<q-Cfsar#KDF{G&0wͅwY-Hb"Сm.Ye+o"6X.+5#w0 o]dJ902.IHsLn&$_Fzn'cw&Զ#QZc(FC#̅_+0L'Nء#)HN5 Pybuwj]~`Tj0(Ƨqbpߜrq0Wn{Cu#TE[tU?-҉Y e,,8}8PeFPَ^CpSiE~bNX,0xA|PP=1v:6 .*p46d~:Gza1$z$0+[ݴ*BK*_wP*Q)>uhWЩՌNcvzY7xp Gt1C()e x 5IFI=u HmJ\͟'je%n/EmMT6+%A T ས%c$d./C8,T*j{>t(T)|H HR=c=\91}d09u;U޸{C˾,iB{[jIhx}߼VI|ƒZVdY1Bzu;ZFO^zy<{ij7貉az:L6f}0⛭hI);3 v=Z*1[!g=^K}(,PI˄#y7R~  gCiv?秂"@nR1&$ 49d39a+aj UqFqMGj-mϧ*"K__gSn^Q+厣rhIP%"V)]Ǖ&[{rj܋* =)|чҳ{N0yfeTEL N6|)#ݼl4 L<7 l%0P|;8oM}xEINH1]W.GsNVOB7 c[gf 6Q aMM}og^;].|-yQ;@Z.Ip ݑ8up"gJ]^O[ߵxOܼub( ˶p'CPIAL٘!@ZJn#1w1*1;*܉*.^=6x2QܳzwX|nƠZ\$ŽJf; -O^mNtLreL;H4&OԱ)EaVxzGsyJeĜHrd&X8Q&\%) -AUnrCcM*t9K'NKX)nѥ/YA3}!anRo墟/0/80Mr ,$'j[=CN7M/Hx ClMҀ:{5T$ٶfh'w1D#'"Нx{YC; `uH#Jo,>sh]5Q3jWuı6J|uትC*CP*rGD!TI#z=yۼME^mQx? 4xɮiy[)L?|U A^gbawy4wС8 L}5ˏˑҌO[r۰M#6bàie %NrQ4 FYB"Iт;q* '&G&yN5ɠ R'3b_NF~pQ0 H> (#N(Ȏ&,hhڄ>LcJe?9ȴ۽ ts:5 ǿ)ZYZY fRm&@{ROFƿ2:*r01_,> ?1p/F_/ߺy=_ް{zf?,,LlozJ`EL ,Ll~;~103` 37/uOD,i^4,m[xXaaK5a ݻ-UpWJ4A} d}vA Þɡu !FUc$ gbS'AgPHԔ!vZ)b1+mgknkknNP O)}1QWP#\b=;B+DF m?_ ~aO$55$OI3 A^ўwFʿꗲ{Se Jazs7N!U&`]@8;f *F[(+ 41TWLW /d&6cQ7 /o:6t=<%NSG|2[ ,*2܏y˜35kQ?EX{|LDL0;8v/( e.Fiy$,1u6]j":3esja5O;R V!G?c;r>\Kz\J"m%JewW,]wqJXHy{^u| j)ѪH99xм-Z[/T}kH 1i_cZbHx`lSWXi.5oAo˘LʏO(au4vS?[;vdPiVN;v^G{5GOEO \%6, kұX Itԍ3ERE,m0tPQv^byB3$52:̷]~j|h;8XK/; Ê+ӳ "P7d&,]L?x+jsڔΣ+^B)_:ʙm)JUԠ`f_"{< Z80j7ˣn2x2~3uƏk`78[!-ۏ_!=Z:ӧ"4B*@v tcZV 0>X  uHdɄWgHRGM7hݽ?v;nq,o/5Fșm1} 0HS3=~&/3S JU0._74BZiܨ.txoQwNK% '?hX k%eMoAfUR:{*5*VJUSW=euk12E08L؛dΑ422Yn%kuj0k-7MJz(iΥp5ylś*)oLpAZl|<]Ƴv()srQ*N>kuD"鵲v/R.5@U[\։^._,26A$6V.;63*,HsSzX^:J'\90^7j\r#`q%b&Nꋜ?XLK!x d3sC} ~[*;c*Ev(?gwGws^e0gNiȜ9Mmgһy{uH]҄|5!*>'?,aX$J"[}SZ.2> 8:]󷟏ZHUXtbh.ma'zu/VG\ޭ]oQ"[/2` 1@wX~+8V]]]ʲ+s7:JId.(d_UUU<cUR;ɍ\ Mū/t~+>N# I~٘VHe5[ԼmZK`CLHN$W\_^ޔ6/cMt(ӭ&dde0)RAsԚ"&)-g 1]njş,9Ds7c=3Tr_ᚩJK^nrrNJ<ʏRwEáRU4p:R]Ե]"Y! mߟ7xHsml_4c LuyΥLzh5 4_]Ej aK҅,rqZvjB*;Ml( {8:#16C?P}Nȟ8S@[S2wx @ʼn^;(I hS .E BRтlbHP;Fn@pp#$h8%֍K@EzK<y tE%8J㜜$jmJXka >\4"+iA憶PscUSY:&R3C$:$t_o,5}׶?y ߟ._ppwu?SqXNVP+_ ċ4-xr#\/jaw=t}`! ANÖr4DM.tͩ, 1/[ŷ s L _qTW49*M(qm>I3 Elo_ELRU<JށƤ*wɣWo6ϒ_X"TJ&Ԧ2lz;XdDdڢ1ܸϨ,ѩ[fѿ+ rBYg.8g?o#|E-6-M&+(T.N <]~21pEqRupM kM~1(W hڛKbۆvK~PKyln PK=<^2 ''mimetypePK=<MConfigurations2/statusbar/PK=<'Configurations2/accelerator/current.xmlPK=<Configurations2/floater/PK=<Configurations2/popupmenu/PK=<JConfigurations2/progressbar/PK=<Configurations2/menubar/PK=<Configurations2/toolbar/PK=<Configurations2/images/Bitmaps/PK=</CC--Pictures/10000000000001E1000000D761463138.pngPK=> stream x][m}߿b=aǶ$_ rP@Ko4@~s!;ZeiH,y{~~fㇿ=޾;_/7ӷc{\?T1I^Iկ>-?#59ۗV U>[7Vu]XWrX_573czȵJ@p] T@ՂW#M'kׯoŽRj8VQ c'ϧAUou+;5HE-ߓjAr,+ c璐+yUE z^YhJx?H9MlonAe̊-f.sGI8J@9lzh cP>J, }Xk:O*O*,AZP15P)162UuLR!L{R=;[>+_,CEua@t"$<-$kJdqjAJD4vX2ەCEahƢƄE1dnCj}7WQһ/(c+!i/ 05qGŕd>9RRa ge=gn.!4ȩPl 6S[Zpft qE1Xu%$lݎmP;B<'!WVUst5Rǥ'_ɾP#v5{8mC+} Mh[l[%$qA*ets;4h:bD_g#\`,ZFwgrd^Ϙu,&_#r2,OC؜zMs嬌FAz6iwhҍh*Q*uc##Լݙ9lD㼑b_J#Dvg=3V`x-ʿM<w]Վ%їnHnk?v 3'9"]x,FmcƩ]^4}*7>C새+#ю#Q(.kYY n;GbR2$bHF}΋g0R2ЬTts1. ŏ#('Y%zN[Sn7p78D.̓ʿIE'D);ZK:u[1, aU JUF?) RSTav)e4%#ac{i/+)@0['JTtJX ׄ~ǚ~p]kHűyی%\N5TvxV*XKUz)T;2 e/$$@:1NEs, Vk_bBc^u NʓUf`pFOՕO*^Pd\W+ytg4R f W+էUC\XwGhmj}>k`)XLௗ([<88z'nmHfaEî&G4"͑eoMNAQ[VNDS< GpTR `.ǴlEFgfx+ y͕h:o0Lb#Tݳ Yb Ck:noE:{ؠOafb {=KY1VRT2â@v~ӎ= Vg:ȓ?Ǟ5?yDwP}Iě|;W5r"Y2FJ92=޾U* sŰ0 ?Fb/T(>:A#(T:*@%Yn9Ϡq# @`#ΫJEnl?FncۤHS`,D4:\_-T[˯c\#ڏ% hWKڏP4s( *F)-n@_VRe&h&\TҊdQfy]us}%1׺; G%][܍IFwT"})5$| .N wC붼:dxE:zc/yGgu%'G"YZiWn|h3#mERw./:xbjJ37P}blZR BCpuss%FY#G?.SBoKANuĞSnqՖzrr8Fm' u㖫\-!n2lM~"(H8ȯuN2ADes!#)s'oyq}1ׅix@bLwHbP)JO֓D8RDTXZR$ETnn;E9u9.:5pc.`';5K@F^#q97eftSuy:o}9yOޅItT|JH2mVҋӛ P.uԎ=f qU*Z=gН*y JBYVp]Yl|PۂJ/9xzou6hP1$g 3+z [}+FڧWؤ}hLW8:~ s*!LW؞RJJ_BsW ̓)0:M3ӣjBӓmL(+dA\,+chRƪǘ6RjyK۔ogN1GuE ?+k_:`^9h SH8g_j&}i'BI g pH(EmԞz>V*ƗIAO OB**<P Ri,})p7jR;j E*>(u RM Vcm.QQ4JӃ!{"Ap,eqwIQRMmJ*#n<4\h_|rkTfr#O4PB` cQ6#e>#jF]UB;X9 {^PLyjFhxs qUNKuBIIPm֭E@#WM7yj$gƞ!S)IJ93 {V<v挨>< ?/zxPgպs=`YgBxn m>1]>BIˆ.zp$rJ+ kOF$q]+2-QMFʼnq(ϙB 5>Us}G}x峯 ,߯7q: ;sP,}[,qV^譴,ќ=W̓g+ZdA 7,g~^xꍫIs|9.8KV #w$ BNn{y2?eϊA/}W:kI\a|u\/ iEV)-տ2$E{ZR&^,y21a僚{l DײGRK]WZ#(נ|VS5[lsxDT~6)ϪɵS%&/Y|K^DmeQ]+EReQr$jp?+LuQZDg\ ׅ:`\9D#Ǎ6F'+}pT~[qU꓏@DNOY#]rjn筴aU^O,c?v< M]ǟӸ/}|J ?a9+mKgͤrǸ? endstream endobj 3 0 obj 4825 endobj 21 0 obj <> stream xʖwb]bA$䩌 .;vNz}OERRج=ېԢC8h7o_~{=/1luo7c/t㏿Wcoj//Gl}_mK~_+4~I^RKG]lwi}NZZXLNkY_럝V˭iݼڏf-?o/O6j/헻sg Oow7'w/oMyK/1y?|Oy㼻㽘~RyB]<,-V]ˣzj_*N~:hc#Oo!t-[Oek]=R6Ќ1W? s}3}c&Kt=5}~D]\}#m.VXJqwU}CU_t͜<[;U>Wl8ͭ#{{kyqbG-aGzzUrU6rU6rU6rUvrUvtUUAW] ] ]2te誢j誡 i/Hv!Bڅ i.]Hv!Bڅ i.]Hv!BڅkI;,A=S-:LUyjuOĨO߽RWWʴAL2 5TݨR||HߗߪW}_~ΐa|\h}Omc6ysj^ 圳mj.% T]ut@W]@W:縑JNNʎ *JJJЕ+ i/H{A ^ i/H{Aڅ i.]Hv!Bڅ i.]Hv!Bڅ i.]Hv!BڅnH!톴nH!톴nH's\Zw/RgԕRufL]+U}5se\کRhPOJUJ}2W̕ *\jPO KT޺٪ɉ,s/3?\sIկFCMw1;ݎ I?4&7'}tٯU?sj:#Q91euI\U:YjU_羻3a w7!_G ڲZ#=9׸U¯+i{%6JG_:UyE V%SWnIT5'm/Vpy{egzFL.>$;㜾xѢ&ܑ~='\#c3~N~VXٜ Ht{ $sq |y?6TjAt:60&׋F9yGah|T]|PA^Pm UtUЕЕЕ+CW*誡誣@WF i.]Hv!Bڅ i.]Hv!Bڅ i.]Hv!B i7ݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐvC iH{E+^W"kQTP÷d^c$$Y}~w1 /aw'mk>l3_jLUgH.y*g(}K Jvݹå{w叕s]=,+x_Tm_T5TUGW] t5@W:'ڥ*L'ejAW]t%t%te^ i/H{A ^ Bڅ i.]Hv!Bڅ i.]Hv!Bڅ i.]Hv!B i7ݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐvC iH{E+^W3Rs,o) vxyu;xϱ|>hp&>7OE.[476VHsۑas5,0795uigY뚿oqp~(ndם[nOEUH}>U<aXwϵRJ+YWi~FI3W)Wk NJFJT=Uj\Bz#Wc'WqsW:4WdTJD \~*ѮJ\5_DvYѮhAFMDD}m"MDh7#*nhF[#ڭ։s.Dg._D'$j݈sCgMoj]S㌼{⫙B[|0Jkp޹ˎPvR[s:j:AmI%WԂ *JJЕ+ i/H{A ^ i/H{Aڅ i.]Hv!Bڅ i.]Hv!Bڅ i.]Hyο_EZD>G dh\kX]6گ"W *Hչ_E6TZ*rJ*rx\UjJ*RuW*u@k~UJ*RuW *fA,Cxe_ŜWhq 9 Gk,v]_D>ܑ~f ]2+6ݵ0Ao<%~G8sK -M9(zoc\-ZA;\E!n:.{/Asm.W+yy =BZNkvtN=#o_2_Zy*F\SU'ɓ5TRs }hxk?x:s:x:rƵڈq KՒ3 OJ۔'㲜q1~NO_#]3Fډsr4qsx:qۈ5tulnL-T +NǪѱ|\=jtla 8p_N8Ka-Wqu8v'N\[|xޡ {ue6 ?OZ{F W4goL_0yzȏ͛zl8R+RaoQpeūa’s*jZ:0WOdv$T ZϵVA;r/Gl^ SmϽRK///^ xू^xi-nv [`W]v +`W]v +`W]v +`Wkk3P_p5tn-rbjSR*5UبRQ[JT7Թ,)TA+z[ y`E3]iuk3?H;sI榹N|M yfѾ>x]5LU0U_dž3ť3ge=_W{WꬿV'ܨn=_Vk8GS\%i{?KY%4mZ h-Ks/e/"""bK/TK/t/-]v +`W]v +`W]v +`W]v 5`׀]v 5`׀]v 5`׀]v 5`׀]v 5`׀OIUߛz8j88K'UZ_2NԷ8o׌NqU[x{!kDuZ Զ誣@W*:&\mr]tUUAWBWBW i/H{A ^ i/Hv!Bڅ i.]Hv!Bڅ i.]Hv!Bڅ i.]HvC i7A6ߟ jOUsuC_K K6ƷުVy$`w- U_礼W@ojH6O;|0R*s1N-ȗ?SqԎk66R UCuZUAWBWBWBW ]UtUUEW ]5tUGW] t5Ձtu+!Bڅ i.]Hv!Bڅ i.]Hv!Bڅ i.]Hv!톴nH!톴nH!톴nH!톴nH!톴nH!톴nH!k)S0RH:r\o6a؏QɮM=?MsIn^sW c ױ>I}^-۽u՚jwy\ zZsLvUj`g]w_Uߚ\)8WU1̌ݫauC:|HрsRO{Nuϑޡs[~wϽo_X-nXSw s7Nsgvro˜} oUx|O#ܫL TmUru&RɕvtUUAWBWBWBW ]UtUUEW ]5tUGW] t i.ݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐH@2m%%؈y@F +%% +uї}?uur.{Ԙ2ԘP3g0/m\jĮc"Zfڭ!gܯS[gwriϪܚC1gzY{GoWC9ZŷZ=p=Sȝ޽5˪Q.KpEի.3M"9?۸,c׶6R;"sPvt@W] tu\őJ@zitUUAWBWBW ]Bڅ i.]Hv!Bڅ inH!톴nH!톴fej;g^H";h=b{E_!DRLJe:QT51ReJ<~fA>2< 67x;fu:fzY(f}_\mz~%lSrџ>=TSG皛;fԘmfW0GtapǮ>470Hk170ݞf399SvJG>{?8oQ[ZQ=HUUAW]t%t%teЕ*j誡:jB .]Hv!Bڅ i.]Hv!Bڅ i.]Hv!Bڅ i.ݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐOjԕRKjJ5WzMMzo)Q?)UTꓚRՠRԔٞ4[^S::[?[>虯[^}59\siokriK9Fykغm~o2#۔UoO?n&)]1#;ݵdnu3*ˆ:H 誠 2teUEW]5tUCW]ut5@W] i.]Hv!Bڅ i.]Hv!Bڅ i.]Hv!Bڅ inH!톴v"H{H!l 9Vs(SXQ6$~n=ZcEکRmJԓUjTT]'S01Rԓ *I=jPOl[w{K #;հ~Qkuf#UYIYi{z?+3csS5I?"FQ.1wXbZ-W!yZs& R Aj/@WFΤA*:誠 2teUEWHv!Bڅ i.]Hv!톴nH!톴nH!톴>Fkԕ4R[H;oI#SWHNڕ42u%T51R *IjPOl[oפN4`V_&ο$$i|ŷ_FqoIRߒƥ%=U_ƥyUma<:y56uZFYv>_*tykݡQݱH=v6;_٬'UT7%U AjAW] ] ] ]2tUUEW]5tUGW]ut5@W:A i.]Hv!Bڅ i.]Hv!Bڅ i.]Hv!BڅnH!톴nH!톴nH!톴nH!톴nH!톴nH!톴^WRu^K: [j}zq{:o0=}>.%][:JՙnK:/覾=+ݎ k]ÞчWC lBQrS|wڢ֯հU?3{[Fݟ?30'V#'$Iss ]2tUUEW ]5tUGW] t5@W:Z?JHv!Bڅ i.]Hv!Bڅ i.]Hv!Bڅ inH!톴nH!톴nH!톴nH!톴nHIz;AO05y&8vjA?LAVUJٞdQaׁ~[&J0s&\`1_1|t!ؐ`fR>Gy'l$yg#M&J#<|{}ΘT>u3Ϸr;6vjwjl({ʚ;԰sGq暟Ewyq2=sDa5kV?kA-j1wN܃g#g=^Xev(Q[H]ϡT5T]t%t%t%teUEW]UtUCW]ut@W]@W2ݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐvC i7"iH'cjO>3FF1^\15Z$c|E߁=Cu;ߐxSC8g/eҮ6?:#OlwBغW/7Wkjjqim~5o[P`rP*:Ձru!#\sH%W2P *JJJЕ*誡+ i/H{A ^]Hv!Bڅ i.]Hv!Bڅ i.]Hv!Bڅ i.]H!톴nH!톴nH!톴nH!톴nH!톴nH!톴ҾގsVOwjG:+GnXڧ}MGu-X}?{$5<!v+$/mg|8r&n6ƭ~w11gi,?'ݯ u01m85,ץ%-޶W*4W;ؼxpw׏ul6{Mn6T ATUEW]UtUCW]ut@W]@W:H%W@誠+ i/H{A ^ i/H{A ^ i.]Hv!Bڅ i.]Hv!Bڅ i.]Hv!Bڅ inH!톴nH!톴nH!톴nH!톴nH!톴nH!톴nH'js5d2衽%),ؾQˮ%gKmM_ %kA>^jH^W}wRHݏ#VyM#T?=Z6J(K N) V;0簌lU9~G֠wG9!'w+^ݱqY ̫dZ/ums .%2_ë_Xjڊ-#4_ j=' [c{ŽjEUP%Wɕ"AEW]t%t%t%teUEW]UtUCW]꟢A=79& oTTïx 꾍1+luNL *^|7jPT/F2UJ<~F}2ujJQL]>کRZF}2uQBO5CjJ}:R3Cohgk^' +d$C|E?1ݾbW}ug7 {UcaZrwU3, zϵ2,P\5_v^\{ͣUwRe }v\VμgimpSVo+UVRnJݽ=P?c?'K8^us ȵ^@k66/x9r/r/r/r/s/= x)ी/^ TRK/]v +`WšTkLսr&egB^Xp^۩RRLPaLVT;R]TGB*ӤQ_&UT곜&U *5dZNԷ;m6t~M 6$$!|Esu.>׆f_>VfMfw'.յ'n6 XԐ y< ya;wK [2Ͽ gc˲cuK=?3n-yt<{A[;ZQ=HչԂ *JJЕ+CW]UtUCW ]ut@W] t]Hv!Bڅ i.]Hv!Bڅ i.]Hv!Bڅ i.]H!톴nH!톴nH!톴nH!톴NY^NpJ8:NF ׄ *Uc/-*h+-yІoׄzvlÀsOV|>ϕ/=g]bX_|ݤ9vr_Nn|oǾ|!7yz={7zw-l|%|QذMa՗Wug3۳WXw`ΰJdž;0W8 U辽a~N߹rdqvxZMA: 窡 ]誢j誣:j] Wk}I$Wɕv!Bڅ i.]Hv!Bڅ i.]Hv!Bڅ i7ݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐvC i7} zC\A5W}Ø[^^{SoN^w#?'K>{U%>m/5춵+>GnG_fW-eaLuC9Gnn cBͫuw׍>HZ={4ֶNW>f)L0a{;} 8qWk.kdLF6TѕЕ+CW]UtUUCW ]utUGW] tu]zR\i'WBڅ i.]Hv!Bڅ i.]Hv!Bڅ i.]H!톴nH!톴nH!톴nH!톴nH!톴nH!톴nH!ԓzR_SO=4_Z{<׬$|gJ竾䊟szԓyoRRuݷsoRR-d]:sX)#_G#8חko>s[ՙ2W5g'L\XZt斒٥vj:ps&w>6ܱU_Ր.U_E]E}jWx6MŸHھ >ū&1E6rZ x1RK/4K/t2/x9ˑ{ @˽kkkkkk|j9OO?UCGlK? gk{k󹤿-E7f=gqY\wyOqٓ-笾ָӻ>&uNEp磸.ud;LإMϱ˒ ~Wü-K[z$/d~:XB ~Co>>uT?Ԫ;qNf0ٷhe3{!f.sQZH a/) )Wu 7Ce#}};ƳWjoM|%ܷ\o *rW @*i-Fߙ27(\ȿ)SW1UF<~"ST_yL"SVԊL"S‘+2jJȔFZ)Q?)UTRՠR32e[%o}N` (YR>L7s+ssK C/5.ߏG9džqݫ~`T2=sUx Y2_|;6lW;Q0^Gyݐ;es zR+M:jtu\TruRՙO@-誠++++CWHv!Bڅ i.]Hv!BK3|}5}擒|_O*|sU*^zJ*UE*5_z*5_zx\/O*mQOKOKUJ}ejy%7 Z֯x'dK1^:^yb5j9YGͫjPsdޞNs2Waqu f\{ℰ/)_*W[q&^_t._pLͫe7lz.i}TiK7N}.ݿĞ/{̿[g^yFĄ H3O;Qkoh# x)EEE ^*xु^:xृ^x9^܋kkkkkSS+mS<փ_і]'>Կs}8VpTgz]Woj\Q\{«omy5̢:^ c5omÜVysD&W5Sh9/֞Eb廤N PͫaE9 n\рs(XH[tQg۝gs+Q7:HmFjGW]ut5@W:AsE;J;*誠++++CWv!Bڅ i.]Hv!Bڅ i7ݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐOIУy!!\o5jL-Xڻx!9uE!M/_r\CWŷW_j1pG>nYv9)kzaHzMj85Uᦆ_+PZ72sϕ'3ݼ%܃qPvޞSjOXZ\{#CvR8CW0?h߽VTRMvR+誢誣@W:9ljTr\sHEW]t i.]Hv!Bڅ i.]sTrQ:$jOL6GugY%?ڠRkSTjqJ9)WUʠVRsSVQ*8jJ9N:8jJ hJ,zlTXRu@>%UTXRՠRĒٞ$_3{5:5?Y\XN?W_bn\ug˿jRRgncS_7l|UQݝ8:rךl=q|¦Xݵ68w}}My˷{>zz9oTrU"^չԂ *JJЕ+CW]UtUCW ]ut^ Bڅ i.]Hv!Bڅ i.]Hv!Bڅ i.]Hv!B i7ݐvC i7ݐvC i7ݐvC i7ݐB=WI={KQ#xN6~#jHGy \mPB=W *uPOJXڳ|MGuz?z}>M.OKvIGKvJXVw~b?7帩\6E#wKa—GҖ}dc|䥆h9&ʸ-ou#Wcc(w݇;~=Vc]q v tW0Mxx`j ~:ZϵVA/ 4K/ 2^r^^^^^^ xxxv +`W]v +`W]kkkkkkV`حnv?A!/^:iP8`x?[>ayrlwO[ٯg_wFIF3A}|7-b볢I*Z^3d%A| JW:sn2/01%gYG</:w8}du endstream endobj 22 0 obj 18463 endobj 123 0 obj <> stream x]qWu.RUϱ0Ɂ\$ q &n%U=syKwoO/?n_׿j/K׿o~^˿/5-^G_|ײݿ>_&M4ub}wq;uߜZ̫-Uj}{x]1g9uםڣ;N5qsj$q\nm؜}-"^g.߿:WŞu[Lފ;R6;/[֮ʣN':EvzEҷGd"ٷG x%I}'q{t罫e\*_=~>>c|? !z9&5@MQ-Jwr;t%Jѕ+EW ]%tUBW]etUUAWgWjq :}jGNm'|VseRwqOYP) *ebP){=J T4S ja*e**G;U*'TnTTRRZ[3UmTfTVR՛+ JJAԻTy&|}$uҤC\FV)k;3/zoBM7>j\]ZI^}mwCq?Bxn]GJg,h.r9hڔU?g$oW|ju+5iwR JjT3]LN*誢jHD+ɕJvt%JЕ+EW ]Bi]vAi]vAi]vAiW]vEiW]vEiW]vEiW]vEiW]vEiW]vEi7ݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐvCڏ4fV~ jG *hI ilՕ^e4f;~Ÿ"*.lޖwrܚKamG1~JqOߢ} k>0"+]ki_19ܑeyavIe]R},Tyz|(ZqSPW@ oyC4E{IZNQlsf5vj}#[A-v%[WJ dpF+UrW&2J;J\\e#WrU\U[ǰVJ7]7]w]w]h?RSJvJk"5횉vDU!ڏ*~MEj#ڵG$]\ nB2߽Մ6:6a5Rciбذغӱ5ѱ>)Gc6cFύ :}i]r{F{yDer4$ǧIuk{?_;Ϻ]?i9~N6Nj}<)7h1P(%n޳806뚻;ƿ.쑙\:GS;|=~,nJ EX__'e;>w埛%[T8I UCUBW]etUAW]UtUUEW ]5r:K#] t+ҮH"튴+ҮH"튴+ҮH"튴+ҮH"튴nc~o9LI2EC[`e>z_'G˝F>3 h0omO>y~dx>nwmJ;eI+옸xI]9֦u^3߆|a9ι'[7~ܔyMN0i-7k%Xbh^(xQ^xI% ^ x)ी ^*xi`W]vU`W]vU`W]vU`W]vU`W]vU`W]v%6-r-"ߟvl'hiiN۷gF jX@gDZҷq@*yS\36 U@*}H*#5,A@*c6YYXc&Yyd^[aWEI]:9um Goo pukdE?jP{x9P8C3Nk̥Nܵy`?خ#oc`9؁֩ݓZHoՄj#52* 誢jG*:&ācB] Bi]vAi]vAi]vAi]vAiW]vEiW]vEiW]vEiW]vEiW]vEiW]vEi7ݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐvC iBOq1!.TnOf6j>*|&m`e~=,7Lo} yCn=Zso E.-5c`- j-NYϜiPb}:֧Ⱦuz]:iWc}oNK_psRݎY͗EUN*7r5sZUrU Sc5+6p%#Ůd, Bb5+ɕ&r\+#ڏ~P%ڏvDg6jD4U3WENSbW]h?vWF \>ޏD_S!ڏ}U%ڵG6Who@c:\6vvWB\)~H5nhD[&-GWhJj#ڭ~bWi#FhOsu0}pRW" _'#{Je1$%H8$5D[\?Ohi7Oz}7Zؗ-wt1tRN5,(#kMiBPͤ UC]etUAW]tUUEW ]5tձ\Tru,"\˅@t%Jѕ+]vAi]vAi]vAi]vAiW]vEiW]vEiW]vEiW]vEiW]vEiW]vEiWݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐs(T sz\}VFѣH}hn|^>׳7j"X 4^xI% ^ x)ी ^*xiु{-b[؋kkkkk&`7go;?Xך褬z(coa S;޷%=G{r%Ntf^کǝ]-~8ަkZTe-b D'O}]c>hn6wgP&A5UFW]tUUEW]UtU#W#uJt'W+AW])Rt+ҮH"튴+ҮH"튴+ҮH"튴+ҮH!톴nH!톴>ޫ꿵fͩc-}#<|lVwڜ>&Tl9Tf˱ZRZזj_[Fj*5Fbxy%V *52Kʳ=L,{%r]'.ˍFv[}" [\e.ou].u].]gvqkipz;6/n眗q?h_>NK=SH@3j% dK/RK/4b/P^IwkmB&E/ + + +  * * * * * *{ h+k/I4urfFsO}[kJ6⪌Xh%ʈ4⪌8F W1f5`Y\`_-U9KYX35[}ѻ]q\' E!>j3vpM*\N9jxͥkC:q;MH̩׉y4F|&5ǪZI* *誢j誑XXsQ tJѕ+]vAi]vAi]vAi]vAiW]vEiW]vEiW]vEiW]vEiW]vEiW]vEi7ݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐvC i7ݐvC i7 a]jXP5_H}h",HNʖ{#L.l]j$->ƒGNCF8lZ/!}f丽8uPOO p,Yr_(_#Wf67eۡ5*M3ݩ]վMNOQMFZu괍ֶ{WNj:->^>B *sQT iG52誠 誢jJ7rҝ\Nπ*JЕ+EWH"튴+ҮH"튴+ҮH"튴+ҮHyt6h+guzOF|hR)lnV}jJJRcKڨRc|)T U*T19*Uc)RLjSUjD@=#OfyBՠRgTygEhKUdy]gBŸy-&goz8]r!%ʶEsإR1N}i[@P}sUwŜ:!9uiO{u\vf Dio17]!wXU*׷WW}kjv;:O@sԚx;ɹB˾cgwa.s;rAq3 UCUtUFW]tUUEW]UtU#WsJ"u'Ws*JЕ+EWH"튴+ҮH"튴+ҮH"튴+ҮH"튴+nH!톴nH!톴q(RG BmP&7[ơH;KCڨR#jJUhC:Hq(T+TCJF'xv4⏝ۙ}~j $cǜܲU4{lTJ1WjUlESt}>Jdy(F}=cׁqbSBW#DA/[F۬gӱo 4dٿ<3j/ݴywXDOGWN[th}ngXDSSw) %ב(P\ai}R8΁u 4RX.o@6WȩV#G^-;NQcT"f7lh;4F7_lSYA!3ȘYBwxeg~9UA̬;RD$5_Yk2:W}?FB5.v7R{^.>BG&2*5>BP*v}DjۨRͨRc#PϱPPs#T *u}D<۳ }z_%ž_}#2'~IGG}?I`|ǯ-c endstream endobj 124 0 obj 9801 endobj 178 0 obj <> stream x]Meuei=&32I`A 牪s;{ы.>IEox/o~o~zo>%(:^~~>__o~%? x )!_?|CJ㿱>f/_!2/};~O-]͚>kײZ݁6Py!ۤadicH?1(Plc 1k(LJlۍK{tAE waLGE$wE I;iʵ ))1mO'״ `:!h QʬM#din.uVp취X;I3rV(c'NԤPC^gеZ_X=FGfAB&N`eӥ6Z@>6bA@B0GQJȬ=4řS]ҐqsTFxl>ҪWñtj|3xvYmfnQ: u;.ٌ㪃L5̛B|ՒMa ZqU[hHq j 'rR<&e7c+ O* w>Rkhpݎ`g@GE 3`G(dط99Ic\ \%w vGٖkuBNiڳ]LZ<҉R>k0)t%'k|-_ȡf|6ƽi\x:(}K@Tqށ7;#A"L;p8|s#r:wtaYtb}qt=0^E,9eA8Ep EW 쀣ilC肢[Qčn'zv3b5g\wB9*"&8$q2 qZ<6k]`)!4pj+ғaX9͇l&)P\$A^N#ZW8@IE"AI F(^IF<آ⌚vz8۸.!n-p7ɍbdt7"w<_;` Z7 y0bR#ä)V~5-hR7x @ bܹdCd`L%2]Ԁ{'/-;hcEj(40Zx+8녦M?84#C#/=ccD!vk=x&#Qr֔0DK$RצNkzw6Qc rgi>ȎGCˇ7dҐ:1=lmSn'ilJA[TqÞ| Hu[󶁖^!/oHqjEyEʡQWAГ-=44,zl ȉos89W)aB.z¥Vn(]t;yf8spy],A{qe픘q_싅în])(ggn7͚Yo t3# \JT26$n) M_'\>øh̒h;e噧>Gsrv_o0[sO4:>Όa`?Ն79?{h;O k2]zh*K^tΤo@׵ xۤÚhfab ^@R L\BE|R#)Th̷-l Yib_5bIVOkΠuZ݈xv1^2 HˉZCӗRH&%#cC#duN'bEP@8+a$O!mPL{@>S_9"#q|Lxo5a6ɧ'$6:(;>E!u![^~ڵo18Ao6;Xl甊h+"gNdm0<DF?HaU~(qevVJS.QZ.:pffO@(@cO1(J,OŒӄ$_.|m|3CoqJ_@vmBU:\[`G hEr %+S‰PE{VΜ+B.a]@#(RQ\>oKu{u)+BSQZhy>BB%!$"o4#yōQ^ZzA3y; `g-^,Bx q `z' =xfu"2?m/rO0<5ظQ4nȗ)}w7^{qb? [Goo@̱|>qǕN24 >J2glOChKO rz}u]3K3֝nLYl5oM'zR3+#^VpRɾ)s; qw=Wk$`,3zf~(_A-MWPmFzivMΘ"W D. {bM6 vxǶ&3Wwi=HojϺy JtyQt6GHEcd%V]|iȉȤ\giJW[ ʙىĹOB)afk>G7zֵ@FEO\3J,5rxvzVjS2+-Y'VrFZLt)qqKד8mzg|zNl xYyRRB(Ur5 V'n;E2S{pk>.⺍}rqVEzF6/tSvS*HF|ѵyBZ(TEr5W)| j8p#'ܟnnQJpusS{qAիvT '^> NGv335}^^.˫vؓkݺ>uFWon. 9xٔ}$}]@~!km@rQ#`DEL"N|%h&pKPKԆ8wc1lĶ.2CRJMz)b.HUS7w͇Ai)/|Q;NIi%uۼOԀԂ<]yO> ˸}+ș)4=GZcaz@z4֟ݩIP2+[v]Jcfadmf qUrsGˋ +9Dmm15<m.ZBm丞Iթ8Z#DjBʦ7V9N, s?؁˹Aփ=n+P%׃6 Æˣv_ `U7V8χ)9fBCqԦ_j'h*~Ԇ@E\ygًDg}`B*S}N 2Sq亦)J¨ JQbC{V{)gv{^ @*q8kxͯ۠/T(0i]@K%ssgv^8 JA)Flٛ7yeFm8 H6SS+|cH;'7o02!,(|ppa;쾔@:,GUt3U\D<#]s.ざ}ȳr@{NT\ڠT~gW(KiEwtЊlښ?eo³ˏJagAvn8XI1\}zMWEb5^uln6CE.VvIAmRY+~\\ׄ@tIDž( u~T\R7J6`ErQyGޠp]&73U JWIr\=@VpB>:N\ xqoB34^,4*vPI=T5G.sHzԽd`*$0HZFZ%V7rC'QQSxqarwrֵw^٦Ttkw?>*[8O8n@,2w!)7X|.yIk~j?-!&j?5Ǘr[НyІܠ7Q :PέVUP=M7 zLA׻&r}Z`j|Kځf5)kdfxAMn`vVH goZыZ4/%Swc.ʼ-pA+ԾMaDog&gY01 nF;Jp {q,ڡ=uLWC̤E.{. l6m堩_ʙ;H[OR4^tu wu(#Gq%Xd4>޻df$kTJP)V%͒8{#9]`sJsrv r;=.aZʠ+wxg]˓>hwtw&=\ߔsKtkm {A6 0jPUO';˙ [rA^@KȞfqf͉"O4={7Mx{9"%0))bzb`\@z{v\oC1ku[]knMd/Μ*@/5w(i@/Jx-׼ %?'߄ݠřzhӷAߡ+fnjaj({I>" j-i&d)#7Iպ8Y5+*j3y=Vv`JRgw( wjZ*^hnpLrTAϓwc+Zv'O:)Iz[=ꤴEXBqڻig 8pVa _V(zs̒$bB3֩ϒ\hCiº 8.=w(]"|߀SZu ޠT ^gle4Mm !r‰|~Ћm,7zќYpt6VPdw +. Bg6I|#oުCѳʙmLzKŇYrzq,!TawqPsw.{\+y ܷA͊ Ej_,,\lPVz)U&}% Ԩf3_Y,b%r~w#D6]^%ᐓz`Qw۠.PZk iY٠ J S5iOW]DrG.3'|!9e5Uq/([s5N+y&+ M8As9[w9r+,H7eԓ̢ST 0tGD Q,oZ֗OlW>96ݥ?U'<)mFgMʶbԮAIа렡wiZᾖO8B=1jԷŨ z H>DpZȯ 8x.Ԭ$1vK]ϛ\>p _59:1m,=az%GrfOə{>q*Zj3d9eoÉQZa+a"Qzm,%͐MjJw庹pCwR8?O)Ĩ%ǃ-0/a8yi\ud|Z_Wmf/I '8qBIށ$~=PyJܥԴ-O=j|ֵِ 7(F(rlr@ruW7]]K>\N. :A("3ˍ5΁t峬1i) <CUn'[ECkݐ kW x>ソo%/3\`A,z]HxoaghXS4hž7Պ*IV8J)r?Xwb$T8S xK?3&K$#ER8sD qhZA^b5B)]ƕNIbʒށX.h8&&yVUP!^P7)  %f>>ZirwDp׸LKGA/|BrF?ڦF?`yvMee1hW_ \#!IV@\H,+0CtX3.7ZP1Qn v"S81NCԊk*ZV򚗺"vkl[:mljwN_Pt.VV"VxxIE(;V@RQh:F=s&^XѺ3u:p]PNiN5ĘSqg=3#tYK },qJPP;K:#,V(V>PNfx - >4=&V_Ӛ5؁㭎 U!ug.@ K2O^/{6N&rhR>/T"FD|˲\Jfnw7y@m@{ bVkO+` F% Je@ P""6ĉe ۱}>qA^cphCTU蹥Ċ,JZzRJwݠȨo7er`H^ mI>M=3{=j+k Ja Cr];cuF-wUaT{ u};XbWT%$U"{áHQ`~(7 }y 9̉GcaL\i,%h,ҹY5wpA3Vf?)>"@PM^ԡ*$u*{+9fP"řd^"No}IN2@Ne(9UL^%`F:Gɳ3"Th{ۘG]=ʁ4%ư晞==6aB,b:ֱ7w7w Zfw<#F G޾1v?2@{w49۱L)jk˲CȻ K(VEJ^yQF^~Om'x O+IsgP{V3{63}`fuS:B)q7]6_P#n5ؚ=ӛo$zSzc6J_n8tAEo4D|¹?7kzѻUk 7.#E pB$6/%(W\7^J>*>z5ImV44L5oN+8q{+mfzէV1Iɫ{T$+>6kԺAҋфct7Xz% 'i6=yMdb@ي\#1\yĠoCWL/̑3Rڐ#g*6EƴaEyYLn ץǟK1"% AU+Bi( p0BM IwG(y+rmШguǣ3}>^#"%zE'~?wO j^<>,V8ww?;9> stream xy\UM+s@qB(˴nMK3oMWlԺ}j~'PҜ58^+8  &*9|/=Ϗ}OG#g^^k^+/OQEQEQEQEQEQEQEQ¿1*vXojoZopq) qe_~矬ߋ\n@{>EQn g9#W^ yמz꩏>hW\˾}Z] XҥK?K>s*Ԋ(6,aF5k֠A ^O>)Wܞ={.^F#|s s}W._|XږJ+ H׬Ys۶mYYY6mdᅬB1cʕ+ϝ;wر^zկ_?&&朅 6̜9311ɓ'srr8^ZUZQcY… [֭ӧSN@֏>(]'ŋԩgիW?޷oߋ/x}sYvw}tSLH7-OVVE1 -|UeĈǏ!#DDQct'pw*--w޸I&j޼yժU;r_Zrʜ^DHiPVEC q\tgΜiٲ%6iDWӱĘg> ֭0?#hѢunРP7?tPݱoYx㎸ 6{xu8*M?F(ydCp\x f5j@QTSNիW/XO6:?Hqbb3Zn닪=ˮ]%K,]vښ5kbsssIH{:cEQCJ·'3%u$Z*3:emqIP/kc 6@#1$K/_駟Duҝ(JEc'N|YYY"I ]>ֺm|FСC6 1:/ZQj!F{ (j2 "<gLgϞB˫+:ʡ(baU4ͱbk+op0?q$a賾Z(r-׮tw˗/_xQ\>" Nۍs6N~%?>+ȵ*-ˊڡ\#,> VEeIRy[YQxו]Y\G~+E+*ֻ~(WZNZϊ(p ܣ\ k(KѝEQEQEQEQEQEQv{gthDj z N>}ZZ5zMquժU)wJ: [媑VcmϞ=˭PdIuP5%NSjiE1܀O?q:uTfffrrrlll%<V(qʝҧP Jx+Wiii{Rݠ)wJ:@M>P+Tųp/jϜ9wܰaJ%NSjZAPVs^t)'''###11q۶mWV%:[T)(;<1 )wJ:@M>P+团(7>|r,[L%~RRRBBBL򎏼2tP S} pJxϟ8q"--m7n\hJTKKs;O&P*ъY ^\`JW=u=GR;O&PTpΝLMMݵk׆ T=GDSjZAPVbH4EO%NJ*eAlDhϑ8.MM>D+QvgD+ QvgJQBn~=ׯ_m?Ϩ[hJ:@M>P+xk%?h1FݒDS]usؠ8(IĞ5zb+E hq$;tfeeٳ!ц2_kl]%rx*PvG2gڵgϞݮ]2e 'W_Oa$ZƟ={BZ1?*юD/X@>5k ԩSklr 8_wTV rNIĬ(G%q(C1uQQQw}\xG&hg+WpV5~̘1f@]Ή8Vv+ WϢ8J4nB y<׾}YКxܭ[0RDHDKo7ٱ-X?-ٮ+pO_SqF%qk1%Z8iSD1Z2G&B&rY ؋& s>-|o 0S3ͨD;$Νo-+3gн4(UZ51\]qa=RdY4YŋHR`7+++333==СC+p3thb[)D;$:&&QFAAA_M+ĉIII&5^v9'N%f"/FZę2Yd]i6'Oܱcٳ @\zL2e˖XbժURJU\f͚O?oݽ{1c,]JbL&?meQv%Z&q5j֭[6F1X,v+..u0_Fz Ef͚?qƈpڵ[hA7oޜO='E9r6bĈ;K*Tkٲȑ#wڅ\FB *юcrD'}7lyY$B6g$f"'bɵ⌳E3QN:hXz 2dӦM\S=z(N:w}h~=I%ux=={> 76KyQA%q̟QhǏ:th8"IL/cE7^ a z$RnݺzÇti j>}*UԴiSj S[$1\8 %1NZw)*юcrD@+W RRRbcca $Zb&r*~)ʻFT4&~{yAogΜ~>,Bm S[#3Ip 򑇒y Ñ2D~nϋXJ?\!bN>MWWF9VZU$86))e8ڴ3BVkU .j޽kҥ {$rmҤ SN0(!.OOO0am۶{͛5k֢Ew}7 _~ƍ[z5Rb/r]Z%q̟Q.h#G$$$DGG/_΄g{/6L;vl|Xd W'΃%f"'~T}fcV Ƙ8g40777;;ڵ/?;/cNtXN8A"* o+W^@ ^`ʕ++VXxɓ ԡCFyyy)hٲ%uF֐kYCߒ*юcrDs!tq[lYt= |}}u/rľ}~/ʅ RRR|I;|wDԫC֫WJ*>---햴TNRyjԨwyӦMd&ж^ҰJehVHOM63r4jܧO 3} Vb,|-79Ndǎuy޽撇d1Q_MRv.=GA9cF瘘FHN—SO@%F ό2TTޛ4iƸI 3ܱcLjQ(ӦM>裫Vp4ENDUV~~~rUX[E jc: $i;_)F8qG\#c/ݻF >֭+?tD `hv,?%G ri UV޽;X{X! wDpve˖7~@K*unxBJݻ7nhD/[wr*^Ȼf,Y7.P.]׿k$N &ߞxDo R s]!OnѢO?Mq5 En,h{<[k`2elzHteS]5kz{{?쳇+q͛m>|8(8ի9 #m, (o Ph4ɠ6zRirő#GzyyY3Y鸜$:2aH3gn|د5']Kd1A"iVhP]BCC)ttvvHxRi \rvϟ/F{g\;%SY ,OWTj 68=9@S[9V.+UԹsgc}ڵk*UFٳBK-=.,DX^Yf8pm2I ȅsRnܹsᄌ8ȳgʸt_X%چSNq޽;b|OQ [Ns`ҝ!>}ns2ey~[kqnBڵk `MK^z)==vYTHmgy{{K^ݸM$ژ}>s_>Νs[ᘂ[#\W"6J)2e_zx{5~'h,Kh-Se˃5jE\Yjդ+)/ӮqJtbbb֭}||ƌtYSY?88Sߔ#K~5kN"MHtIx؈8>93yPrL r|yXd:-RW.6b$N4Rҡ`G=jԨHtIx؈8]~gv%Æ {W<\ [oEDDXSLF=thDyqu&}:]).Q<"t<>"9:H4hݻwRhdÞ={"_nΝ; SJ~uBF˖-m6>=hB-̜9SNeʔZT`+3tڕ:3{vq%tСnݺM4qpʁK%Zj>>^V"DSeq,׽w^n ZvΝ;}t,;t~{>֭[/>۰aúuOB@h+UTl;3UUV WFc5z鋽+u |%,[6+|ӥKy@jՊղ|i3Ahep8wcN(n>P (DNG"7Pv"ﹹ8رbݼ?/O#e:ujժ栍+VfN/Ut >~#*N~?.u6za%y%:ϲ:6 E DE9-ϲkVFiӦY/0,̟Ds~+W^zW,FB֬Ycǎ䬬,zW$:$*U!"!gϞ7|?M0 1%TÓ'O9rtժUe7$4mڴ{MXJt"11UV>>>cƌGpLJ~͐[vpEM6UT>| <)Pv6>|xȑHRI5j߮[xE]w*WJ*KPv rCLLL=_a,Y=BCCcbbdB,vméSzPw\,%%e߾}ըD;,ubw]^;vx:4| 60a¼y֭[-9Jj;wȐ/kժUT)]:TxF}}}=zO.42q9Y<^%P^AAAUTi׮")S]8hׯ_;x`vv t8+V.y:L?PX>>>~իWo۶z %<^%Pj#G2^ A"O|.#r6:=lh޼9YSI%K;\\;nܸvwuMnXŋS:ƒ:yTc˖-n֯s=1118.цϯ^tH vz-ZȺ뮲eˮ\rÆ <ҥKr|uԡkz W7P%333qGwi#pbÈ,__%7]voEs;8@$CTF)[/ϗ-[FJ* 4ˌqơxit`Æ DH7onܹ݊3}9rǚ5knݺÇDjXhOkJW=u=Gu}r NS|ѣGC1d؈8VyKfeeqk7k֌K{ױa6p_>Fqggg2GDD,\𫯾BuR7CJ⟇>qovʕ[lٳg<%̶J|c,b[hc'3)aK)/׫W֡Cnm~usnAvZ9y$ $=};rU^V'|w_~%=ѷ:\z?>h rNj'7 }vNy?~|˖-WNƺBOB M4ׯy„ gϦ@322N:uj`Teg$ KKK1y%N>H֘d1conڴIB$5dh [DDŋ7||S?s=w}}Ǵ#G?K>4%e!A%q̟QNhk -K"S%K4mUϳMw(7СCz)oo>hɒ%`HVn*F6lX+W\8ݻ7Ϟ=&NC[lq3ߴi./7nܸ֭[(pV3*Otر_~7$$dڴiTpZ-]T9O%?\$6^q۶mE"+ʔ)ӠAٰƲ<''~;wnذN0vX[nuԹ{mGk[lٺumy9r_=s̅  ?P TT?rI6Pvg+$ZF9ܼys p>_wi&d 2e?ODUR%wOve˖ 6P?oѣq6lXHHɓCCC1hƍ鼐GG}.Z ɨgy7ٳgk׎>,,ź[n]V^z'[hZ(ǪU_g86))I=\6ʱcIch|̙3i$}v_)H9uF1DUFKXn݊wyW_4jԈۄ84i[oaizI2`roĈ"4| ,Xb9O)8Rsrrd1\$9O%8(T*LYfXX GKn;8EMT|sG,_΄Q`,W:x`>,Yd_ltbf 3,gF6ƭUzǎproN#2C ӧقoW^r֭ͦc,121'|͏>?|衇;$ dԴiӎ;v'2VeA+dѣǏ?uT37**^gdd+~߃D;S$jᜏ?N]Zl@Y`*o::= v-&&> /@S^,][hQ<hȉE?uڑ5khӈرcќCE~=ZC"GSuE/7n\lYԘ %Ν;zȑNρ["..S7zd\ ƍ7a„iӦ͜9oݡ92L5# y8hFA%q2eTP9;@ԯ_tFDxKgϞ͛76$KD*frdff""B^)dK>vn+IƎDNvV5^SRR`۶m+W\p5H\Ruޝ_'xVZe-<xNI&!VΝ+#'{GժZ=<䓈l u>nϨqÆ _z7xM6H2쓱Æ î IT+&3.ʊkg¦Lߘ1ce944TԘ"CZKVB7l@2ciO'| ę8aJ8K#;"tDs<rDsgϲ G! r<SO=wn<+aPNS \WPY:Q(53I7c0Ql/N|DI[Cdd#7NSW^yRJ/sRit ʕ+GWC8  Qc|2(r]vQ(RSS322;&ΙL36x5*ю,5jԈ;ŗXoooG3Dsy6{ɞ6Mǡdɒ}Q[ > zE`h*))FyEA6n;M&>|Fq۷o'(V=壥8`Fӂ,#E[Yqe˖-S 2^tisժU)^z?!eT/i˛̥Q.Ixnjj<86-όd{JٛRƜ8 *юc2DYީ侮Y7~^A qSUT_~Ŋ7Jtff&& cf5zVdFe SEVc#k, b[l*",l'҂d-!!!111%%s r~15bcG߸q5700E5Y~ݻwGoZh߾}:tEO?<t_|@q#\'AR.̆I5xqȲxfcVA%q̟Qfϴϙ3A6&soݺ:Fi\D(Mn5.h1FgҝԤ;1Z֝6ZU p.X[h(gyQIGESRROrʰ}hyd#V#]r%Zf$9,+e F*"2eN*΂J܆˪DkEg1Gn0r+ 1[[rfddEԄB@i[@ucl۶?رC^0qaejjjzz(3|: &?Og)Pv???n@zmr ]5:?lk3[9"CLNN>pha>W#ƔfLm$ ePq.h  t%00}2JEb{Yw.T$vz-͕&,BZf8|8Rf|f1l k8J/_@ @p&B{v|1ʕ+CAl*UrbEkG2 BN_H<4fsl=*^,4q:*N>5tPD oOAlv%]pAaD%.QTMezJq.2!rGi,z,c'222bcc7nhQ'ZhH 7"''kQb;5E)Ⅸ?CvvvZZ\zt Tѣ'P:Yرc|i^tHJ“P?FiR1!-<<\F9>VYeEm9Jl󑭢eY؊T-b~Dhvrr2=Ĉcرcnl4SEo><u2!ҤL)YcB%NSc C6:㏲YF!N0|dKYX6$"!|u*-}3n߾ݘ@5k֬)S|@UG t1!ҤL)YcB%N5jZaմ^Ͳ%w.c1c(u/pg)R{̘ y!55u߾}˗/\ Ts1&Q&eJg]=f+[/ގYGW$V4F!]EC"##'Pt 'Q)%kLHč-oBߠ^]obEb*-e:..nΝ@8 i&eJ(qCeV$殔=\fY TsFiLH3> stream x}Me;r;z[lж zl]_C}:wKki/e栨w3R(v("t}o?/^Z 5?}}˵/>G|>Oy"\'%k1^Տ^SO飓s}BÕOsuB?/Kt[_~Y#>턮B;=L'7tLq_o{}O|CĮOpOl-n= sk _s/hB׿&P^2L'7bL+ rLD*TkY2= ;|Vó.n‡:߻6o/SOݸ.? ] 췝޿_N+l+(l]o`-q턩Nu?"Fhde?y3/_ W?8$@]@ؒ@ܘ|\  !9MhBa3 (?kT͋"FɨD"QBm ]FC,Hp#^ f0DM/=nϚA15sVVhAhL(JG3_P+Bь몿~Fx2N"_9Mv(bKJ.cIk pz0u_Z( nT '; {|Q51]xdf4Ȉo`fPTunzi"h"hKQsL?u~6iEfm03"94ׅ mEz}1})\1?hޚ}57n-1T4(똤ዱ! K*@ڙ_Q@i݂ƚ8UY5B>5ԐaNaL|p5Կ Lcx2~yo_ی_k/@~ @س5ME5w"_l7䅇F ?@]:uB$w SZjγࢋ$W*U@-nNJSeKzyUl Euq%n 笓Z/e!=,wXS8{E@hE+@CD*dVЮ!lUh"=|}< lCcƨS@*ҳ>K|w:,ʳM~QK]A@"H'9)s$qR9]rM`GoL.b!si`c.34s2;xq,\.["hZ>lLJʄn>l}(`vʣyy0V1Oqa'BӤ}Q6ŷyĿQ3mOz;aon'U P-|z:y72eF4̃7}F(~<>EF72vF57#?Fz_h' lݦ_L  M,ieV#-ymGھ+o}[x3O(+t*r'N d/EC8ŀbEzbC(Zw#=CJuwKq.Bh[8t*Iu!xx_WۮLʅ Grb:hgKoh:*Vz~:v -J < 5=oYUjFbI V۱~E۽!q3UŊJ> M>"xdN<ƈQcHY5(h1^R[c=qݘX7 Dvu7'3dBp,A ̱@н.oTci ^8o&?I. 2(ҋ^]0i0CdADT߸mc\8 JJǭՏ|vWH[C%I%a~ j{6Y 2ƂHvwf ZMGA,uʏm e(x.;.qN)t7*R;-Dt˟Z[ClS CG.x`P8YzRP𢅽ʃ*ZT15=xA|[C3{Xk'^X ɋX|%n*9X/IR#{w&wV[]y5BJ32V4.N{ W9! Bwks$pEjf3#׍ %/XI&T9ɉ6szPO[!zr Ŝ|X*EBL=!|WXWlppn+HBጰ;нΊ]xE+b^UZ4omX"x 4 T{(Xu3e FGu$k]7X/W݇YbI7 ҧ_;5eUB zq mg( :XNk#~3[N{ft*dhQxExWTI>GWXOzqZ*xO|l #'ٓʸ r:ob/ ZIdo}jEEx{\3RyIRW]T觼Uk0Mۨ7p{o"@b0-y o*\tkljJ7R H8j]g[nO&K EGu uW^\be(EgȾW1#oBʈ P^V'̼'+V&i"J)E(XkB)?i% JIz摪Qq/pV0P˕ MN yAwֿPQBs#+@\5o"@MɖfJr^GaO%/!߶tL/~ξځk?4f8GٓJn}V2]wO]rҙ4_Gbl+E:ǯ_mgXHv12G , /F@I/H>JY fI!Eq;oz]묚ٺW/P]n_TJ^q) xɭp %=^-^^̣*_G3Lrmyi53WP~JZ;`FdvB_s 02ZX8QFs׉m٪Fw؝ib$:%">_S֍Fz?zBe<82Tg0RuI=4Q85iZzLNQ׈P>FՈ/e wL`z6iɆ"j/6uIj3*pmAlȻ ++7NvqF{N ͙$uV܆< tE ((i&nВt/(Q4=ҋcnR]oalڭNι>򓺲\90Ԥp>{SA`7ʺkݗj<ʯ*7V ^S?҇ inݙ^Qµ¨60jѷJbZiLSX2O<ٸ's]43%ޱRim,غJg <[9EBe=X6EXF/1e%a ^veAgy.A,5B E K}> {P% (ȕsr\g"?6XG 󞀵A'߻]ޣPxO=9Iہq4u爳>~=}ζ8|L\f: |W({gȈ "#n/RQ+vڲָF !(29U- -%Sl)srf{amodB8#zU_GW@;R/uiW cKE`k% <{o|b$&5١>m]P9sIRǽ%.RwC(m~~3 p /C;^c,Uih|v{\<Զۣu<׆{}™T$(!{VNr$V-֥SԿ `'{i 9_ |;p1t葋NX# -SB#nIusقi˶8l}e[f;Zl,:YFVKNYpco&Ol8?{EU JlBNu('eآ*W~Qk$%JP pؚ\ռTejiK3So4qϹRuXͽc;H[F["Lba{@;[VK>[D1hOS Ǣsc:k}#X<+(yz;|(ߎVGRƅQ&9/Mg& pr3sl_\#r!\F%j^tLhx h !tLYqc9 0lVgDϘroJ$wNG9om'hKV'멠҃vV[1|9xgky𒤛[=Ļ=~Qg+N G!W \|w;/,J1 c9ife%w7#bVXRPm(y3L2`F.N 5vJQ M(t)EUov<&;f6%PbOYjlokY#A[d`K %oLa4/z6XRvhafS);Sҫ3_j'{{KB(E45ZxH+7W7{K55(S8ǘ' 7xcnP`±b[>;zo׉``2/=Mg=M8mfq֧K'z nIvpD;iWzTTK;+XcOڸi=#Isʚa.P*FE w~0TiAb?}E-]xQEs5%w@rdHOq(H;XatJYnw>?=!fu-j8a+q 53b~L{ګՂӓ8{^b\aE_ C+#=Q5/ae3|-nL,jN{*@`x_`W詙)q۪*nfY6{Eޟ)BFBۣU|<˯%=KE{,Mb@p#H`6.j>b0'Kަ槼عm[c 8YHfĭazPnS%3S <&ڮ}ŌQQ=@+N V9hz2`čW6TBfDY׫?Y3G,r}n&HS͗-|nn":?u"}UXJλyCU9'ȥ3o4+ƬgN3eN:JЋ˅Zdd+].$X/ttղ>p,_q`-Pʱ0?ʉ^vtGܵn"ᇣuRsмGR#Yr)oBHzui\ZDmY7Ae*UBSK=X5}J/ &!TJܛ #[kaxKQU? Vx)@μ*Ў3h "gG" S dnLt@FjE{CVik 3l zWզC鰇"kJN3zx%}9gtW5Nؐ!GgO^O_n9z˚|=U@1_vN :䶮=U)tHjRcGRKi qBEj<)zFMpq<6?V`^4E n/N :̿*l%8wt/\g74R"7e57:9ٟwR ~Dr't{L iR=X?,']rsA>szE[yK}UMC.sznP!!/~!FnM.'M>@oxN`U<j{N@w`we֣A\Fo(#Ꮟs^ 9쮢rD:=s1'1nDSn V<)(>MdM&'r+h}pR=Ұ|=j:MWP zO\.kzMĪ.Un_F!b0!{IaٳOU%ځ-^]#.d}I{C+7=M%rĹiqC8ݐ6¢?SڞϋἈt^ǑW΋8^V6[p9ڃju_2jpNB"V#+N\p74/*:M{'9eUԎ#+bLh#N䉏TFRaC0^g^2b:ynӃ]3 ="1C]" KZYk(B{;cXݸ˙FeRBuı8@|( jfJΪu꠱a$VeOiZR(`͚̓4xU}<EGsQ2v@-G(DMkG!қGwh&gΈ3pa ooəĹG++m{&gquh~9}2'IQ/eLR !h]Hr xA!^P HOeZ_i}zLZ2oi}7޺QJc\EaGAW +8ճܙKmDw 0#׉w.ا|Lsc/`F`VPz5&Uys}(#:f${*h6HI| 6׈!Zq*15܊'ܗu%gw0wy#K-®ggyWףNW%X|rGt7ZK g]Ye?Z Ka`Qa%~X?؛(r lV,*.t5@A>sѽ.;R@αus(w^JbY]Irj߅V@ڪ_fIϼr^wYFkgW-P>f{ jjQqztVe "xiW:=ΞYs)h;%U"#ر)!jcRr,5.6ɞ@,sM2Ǒov;HjJ7WhyݢZb_^5"\}LcM{ON5),YP#pd !U/}dNnP _g)ōIk(iyMc5n%@O}كQcl3=W+( FU*\A6 0}T85R=%O[?J^. #5X焒g8 ڔ==,I[ҤyeIw%^"/TC<)(7l˱4R(Z9{1`e8آAc$k c_!kUs#;Jأ̡̬XԚX[7j?Z{wSW5wsm43bަ'w5=>`<5Gkr#&cPԈ)"VWv5r"ĉҀf ~ HCr?9+@/?Ptzχ=-1U;~wA.vA/XgODXbed(J Va&E%YPɠ>̳5CjR*ZkfJ^GSR4G6/b=ѓP/ 墎R ޥSk ԪimQ*h6tԩ(JѬ^Q:3ϧ8IX*]yH}]aLQJ<Qvո-Q|jQ:i?:rZ`1zUN*ә\>kiTs:xc X*)4LSGL9bf5&`xnw۶'XMұ}CXxXohbmn703XMW'VjǾp. VR,4="BkEJ(4"Ovr( /Hq0WBP@ǧ c!Ы1ޚ*.q#dPБ5A^{9pfpoqiz9:`f ( Ӿ[Uʞr3+@7{z^9(HU94}C9u gN0%͠,N [tAϜȮR9N3Eٳw8SIAك3hK%EkY!-ꑣBx#]Y}EuZ7dYmp%-czt佢&slEoF@;͞y ES]qx2b}[ոΦV9Eg{5܂ib0L( #N:A|1wNh ;WIbMV@+.J7׉SK-0/Q=b\qcU8ykbCUHU\ATeoL%V>dMowԆq>R> 5cI򛋚zU: Ejd(zu]惦"Mè AJFAzPp,X\ A*LS" pi̤r(zc=+ގQԥNP2.$/2Yut;PzD%I>UJF5FJT+k/>vْfxcR>wVm>ud_uеn%rbX2PzԲu,]w%_^XU8{C*oY8RcPWhmIpMX3qnSB<\jT//y8R>()V+{JwҺ#COLp.IͫuTo-P 7ܙ:2h ,V"XRʂ9 R3g\_LPQӹ-A<ɾùy;ʻo]Az):gAUHO{C(Y=`E!eҺwikPT`c4 :CZsfT.]zo4):IooPƠSՍOykmT7WI+6}ӒgANN/PcmK%kp[ú>eD(ƧJ 7@9"m3:fgי1:U)qT}H#|W=W}!#vohB ' &Poe,%TX<| j֑2\U_rS\sr۳=Thy d3f.bQ7 ^rY`$گ0 [|4%oB9][(ng˶3'3_hNMJ2ުgحE3BW^T@|UTCԗVXzj-#̢uߊPQ)K'N=l!EAt@#"]XRYWS5/>_ δJ(rq! &{j(5mDkI\D82X `Vոo7mL)'¸VpP2Y)hh=9r.k|]8x*uҪO2>6?$+A{3/C3{5ݧ\.5Cd gos~"Y5);.`swepbδ`ܶp *-okBMif_0 1/ޝKG]8t*sfϺ2[xwoBݍUԍ{5zkLb]aHrX[g\*s(nJBIZPԵ&q9Q.kFQaG_q!0\-̔vq{ɪkwEЇ0>;ʉ+eUԸVC\j*hz t B><>h#^'E_vE{KWH.|3=[Wcv,u2> stream x}[e{|Ϻn` U.a xƃ{SZktRTqBP_ï~__} _ߗQ>nc|OKo~5~>˯~>ڗOn76~is~׵^Gفu۴s]!üQ ӵ96!#R>IAv3Bb$u\ pN g=@[`>6?.M!o!34*Q$,)HM#EȁV`)\GB(a e(GL#IJJ_-1.J]M5STZĸ>E#QQrY|y0I:qZ9֚SF{wr޵?5pV'hI  bUAs]e -m(8sGv<҃P*}Z,ZYZ-@8gխ!w3fEA&A5~Bh9h!g-]kj88iǑ#l HӞ`֗_ę]e iX_?hvrh#.x0i'Ki MY-:bM~Ђ)QkV qB:%myLj ҙ?ݼ<7\t~)aYkZG r8 Ï&OmEo9e.zCo(RƢ+~Wd "(+ħ{(8 F< 5 u7Rw7rm5;yyt?`49n!=EƯ#b|EЧxr_"]ԯI1J=֦V\ ^zHjqwAQfPR>b- =|_?gn@8 EX< P< TONHC\rm.j&}aCS2Y=MҪ Lш4vCG5$ ]4 r8+m3YJHZ]O~u~ ~SOc `8F yTaLJq6}bQT9˧L瓂)_z G"y zxw|q_MP*0P_Af V-jxY7:ڙD=ӂ8cnF7q2Bb bGH6pE@+f&ԀC8rL- E>Wgޤ=z#z(v{2{ArJ+D)k |rrDZ'%Ay-qZ:9~e+H~m?ȍUl\Qm8qn_[#kDy9DN%~oCjl+(\BGg$on]a _:;)nʎ0y ,og @/wIFk ~Kw`<>2@S0~_A0 u2ߗv.7A (GF}](6Lk~^9ckyÒs`ɁS 0^ ႲiyǍKl$X:Ѷ9_hgH L^"Y>틯YC}3bvzW@AW7® x}X<\G-{8?SiԤ79~ Ot,t%.+Lj+Es[K^O${1KХ'M^,e6X?f(7 <[,uI3&hY+;m#p5ikJmex˰)BS%M֥gy).g4sŸ[ ʦos JVyc v; n ; S>N}M^OuFS^O.#-ڠrrۼ08iP=\WHqª'.l:q\۠L|ՙc劦[%ӱVoS6(TS;Pc~CRrVH&U!)%nMr!mr J iu8ܠdo1( \Q%d8pV JH@v#8AOtFJ1׎6R\غ{̕Kn#+zPJ"-q%' jC0aXIƒj3%K.@yÙ=UF7R՚?ZQ@Ir ɼXqk$J=H K8˕&:?-7SO[xwpGbI( E%^V& k.1 |ѓ=̩Qb`.(yKlTʅ@F/Qj8T+BR 0hЭ1a#;%%ֵ5ORѾwxahڞ<{WgU- oO ٸ>8`i?~wSĊ)1tFCiki񲓾Ia(g6qsaLdWDO0QˉbA>WkDӝe{] +i֒5#8tllb\НwCRmIZpc%'!'))̊&W4G-fdh2yJֳ!:Sv@.2\&N٘7w'n)Nl.2^R*iZRsy.v7)༔zCVX*~W#AmÑZYبDmDa:{T'dQI葘 d:I(=q,pI:mr_~|?_~o|?·' ?$ajDZ^rI͞.lgg F aco;0쩉vM@+j;_A20N*z~lUr}#7>n-bNq_a?Siwy7h6d2>gi4e&ʶ6kaƻ=ʻwɂqGM)QnxT|oě?L$}Ti]ѾAHX׊\#3YjW.ơءLaa ]׵A[ >vyP&ۗl@ici1\xMw)tm+fyE2\+r~ g8F#ހP^KcsaLzñ҂K+, .)y!0 uzO8xqK0,+83JP*'*~:Tg&:8CmbWD8І3S|7;%[.A@_tԊ'v~JyU_(=YOL73PU;@9Ab[m4Dt^ g]~ן$۠qZЫ]i]Δ3 3A8HDX"V{{Li6(=ma+UcmnPj[p[lI͓WWqy}6.pu6B]:Fݕdvx?* ߀4oKӒ<ÏRp#םh뙓s^atZQ]9]`@o\N8WbU63;t;`E|;3?pp ih5Nz0w=ߢV跙;j%fJnTC"T( I:u>,\ Jq\r#4{LR9{[pun ; S<+M(?S|T aL7|%ӊj:qߒR578XPn($J':SH/z& %@m-"VNC,)9w 1O^V\2]oXO}o!7GDn0-%Hx&=7f&:wvXN%5Ķ%`XQ1xH+M7(xbpU>%Om 3+@ UL憢NN}ߓ>)Tpԫ6@AS"~4W$xrw r9\H5dcݫocKURb_A+xO>Vtǎt~B!ʑ94)SUٛ窵J?sI]Jb]ٳ3 o)x{]erN!hB^-e;=WmD,tx_iڜjg*˸ڟ jhu~$n+YԎk%or潾Ty-keȨ~M 頛_D;xy(:9ʧntnz~œ8.S|pл⊡_51 AOϽoz^O3xEwW]}7W=~nP#SJ1X[M6ӡ$%[EjPX] W̕('T἞RTZ5w'P%V qfgVFd $=詈P|%N`K_+ӺVcљNI6nM_ACoM_}|D.ri:ZsDQurqzrBZTnCNnVda)#:RBogz)u7=R;gv +> ݓ k娽37}fi >y MO9%,Þ h:ݚ<(KV i `sb_@Lq ģS>#cy7(bћm#?2XjV_}7yh6i1 Jㄳ?[Qw$Qi\ADdq" APC( ARoa5FQFSLEy`SM&z&䤴nZ{ZjYGJgN $&TBzEF'NbU?"WReQ}p,;zDb]d4b=DiJ2?Y~c20.PgO Hi}i񥙁@fjCZՍK!<@-eNr J@ycZ8s qʚY=4 Ѐ\k!Q6Z VWh*|D[[1hjXj6֫]a=lcoaM A1gr]^]B*k@BZymEtVr@ҝ*{YR6F>l"yHBgNjH#98\(yTO7"W!W#0N,g$TQK\n3]h,5_?;;C%CӪI/ ҙB%E;\Xt:h @&z'*əkt ЪrN[lZj߂{RZWHGTQ.8, qRǡs8;a5Z@/4v#&w)jeTe_&BJn,nsq,ZLJ8{=]8䭇%8n?F:EM#P)weѳ-^͋q6 :ծdACh_(@^l.w w㩾ƺsL~̷0ݵ]Pz:eXzBXJQ$#Qss8g7ί,h%SD<c9ςp<c9^;2}w_YZg, \-gYTREɸUjQA;P:wVʱ0X[{*<C}u9/B3 [=H֒<롵ɕAs ]hU<+Y]ϘHh5m%gM }szJ|'h9Bw,pF?C{y:^,3:'4%ìݓza]f™GEn|'^&W.?^!fOmOE=1&Ce/ yeۅ- &&vү>5_P33+̅;V}%V݋`$%Y ~妨X ݠTz^i>uAAk csFa<=6, 3oTAzGК jQ±ƥZ5*eE?'oB+o(#4d>ؤCW&V#RۉjZ0c(\]P%(&?Xb= (W[q-"j :g\w ytK1$Ί)3E6(J|&*QxYfR`;IIo}kVa^gx~āiu(a$HY'>$o_MBn ==_i6HN@IxURz~`(?I蒫:D5&1nN# &"CřFo(}d 6JnA(֯W;D\AlP`eg5˥&#iT^y;YY^)jQynّh+`}eUW?˕XlHt&5h(0ltޅ4W-8hG 8tj*^pIkTrH ۸K7 98QqГAJ;cdžw9^&COnH1iR@smLɸVI"`K \ P _putXͤ7g|&™IR.H^#)"zHJV3Esűt|hY}黰uz{kZ,Z|KB)庀Lq&GD ԻS3ߥ6ZjR)~h TB?Ic* F)6&j5qnNȵ{9I^OT).^`*QX5'm V3_ײsCUd]Ao(/eV84қ\q+R~:ԩo4a2&tчn\6誡)HYVhj)4E}3(E9NL+CѢg$I8 $Jw)~jl:|/ĜOu~wKm]#8;geFm[lጸFRKQf!=\ЉݍѶڲOa$unEuޠޚl;JsO#S͛+엘<_Q 6 2q;nHq#9!ҥHpnC`F±L,Y.&j5LҊdL+ڡV^#.L-<(ډ~ +)ّ\9VVtLsTߝGMRcw=1*DzBqCEc'tC#m)]j\*jZSG{ g:E2'w< Rpq|qE^oW^,-jw V^fHT~+ Cr({ᑜ5Zk$DkTvĪVZOfemRE0AocqwZW vBZ5*[eeҁf'h I$Wǂ=d~Èvt< J.=!&<莂^H*-)Kw''理PSִ!=GPfNwnG z3Um.G⡬[?{o(uR3@8A_PgFV `E|AOߵz_șglPjVY 58Mb#vC<"E9™H"+y &>>xYEZ|Y^@ 5ܰ\@?* 4_YroZ5;jz@aݏ*W-9p g(QnCl9w{p.?ӁȬ3'iQXU [@ +ߐ3mqד.LO-tk*T^U=z2B-U9>y_~3a1հ`]&OƑXJu;l+5^9#o圓 nJ)E&W;0Ԕ<6#5)(z=%`w*Vg=J+ 'q&v)q;8K]tEB?ɢcV3JwX:چ]u=M-ÃJ@t_ZxUݥ[M}0[M6PcKVxJxan~xJc?[A/'qX\.xxJ F;1ݺ]=\RRC9@is VKdG,}_ypp7kCJz- Gj_ZZWp_a.\|RvL# ))CŗrA-GW}hegz°QUuiE A躦fT|kݽIh09oZ@#w 7kXee/_z~^]^l˛qs*x=9-FM+L^wZR7Ӓ% gWsVĮ |-6窅*4H $B[dKo]YOۨW.ިXi]H}_/(ٳZ%w{ۮWI7- {+*ޯYKY䙘S"zS~`z/{FmFAzoG_{ wCrcjZFb;?=A@XE. (lc%' J9(w'ksE%tB"R~7L-R![RfrI?6C53.epAZGl%w %ASD&9t+er?lv༆m)L94%52b"z # Df:HMAPOr@QnN=o&ɟlȽ{3wٯY|Вyݥj'T7gnsƆW{CI&5#^F#D#_TGCl m>kGDG~G W9sEv(zTho qؗþ<_8ʚ+v)U% ƕZ7о{(-(7r{gY #_y bwaHq$(FME[#ɼO{ ]/mPʿ4\AQHǦr"H{+ɝq{yf>KP5X0qmjfmpkC.tjE(rr.S?ivKtTw:ߌ"D .ԩ`O<={p븡1C.l(֩ y{NʅޗP=kUoc*kQ6$?W{mH-]9NMF%5nLQnW7. H1yNgL1xSy#y#.'XvjR*\0JFo_S-4't"V%dhL:X(:as0_ .K+1\]Zju[TI;&5+3Pr`PՋSS߹C/$͹{xmݐ %9l[ƹ?:= y%z6axtLEv=GkV4 ٴJx^Cњ>$ڙF)V5mtk.ʯrwyNo~)kS wLv?|~me0C11Sc4\ʀA `_zqO1+9s/R̛`Kޏ~+vngwm6PfzO]j7`W7[AE6+7&>۴b_@.bܝ7 ̑Ry 2qmІ{gWd|s_Zj2NZU!lcKXQDuHIo(W4섕LƦ@ܧVdJ`5[2.Pn7R`%c[NX noጱdo}u4V(鍅%Ε 9 q3%:Ҋ_5޲A! ha9VL3~;j9$uoC);^1MЕ-rm]uJ(!'_vqAo.u3|Wd)<:[JhqOh\j/ZX"K'Kdd,XF8vp y.t\nkWmƸ{>C#( l] Yt%-^`%-:TV RP$% `vofxnҷJ`. fUG&pqɯ}M"4 ^-S} #RqAg]PLXD(J"N/?>xƃˆ33\a5'_zO']/_ endstream endobj 298 0 obj 15200 endobj 325 0 obj <> stream x]e7rW\K*}1n;$`$&0C&c-f/kK/^JZ5W?O_Fyx^~O/~_>o[ǟ_w?*~ϗ~L%ƗuOq6@y#&byv{{ b #8@18?:HE1Px)@K'gRkmZU"QmTt6HK-PIlKyzB[n/ep1U nN 9EKM0*<# (ozMw~9@dU6R9Drr\T3-(èMf6Gm2hYŇ}xM8:Tw|6,dqR=30ko¬eʸjS*sq䯉ֹVZwڝ=|X3m40PsCa}B~𙜲kYݲx 8/$i"Bɤ\8ZS9k&UAnD.q\p=b ;;\2<]Hy]K# %ғVKؠ:m-@VG*țBA[FHRR (Ql3$9J6HZ@Ssu%P;X1N"= 0QP}B@[փc.&>'pT3s Ϡ8̑w>K1؏eN\ 6F)]ƛgȫ;"w,ȽhC0wDĠV]=Z6gNr丐c BsFyU=^&gZX5Yxc4bgCA*qW0rEdu!nǫr4rElOu"n?)=UZ\%=D!{F%YR2|=_'*6XVhv q vbވ֤$+ՠ%{JH]1ς"\٫UNہ'{BI|]{`|'> ۓ57( 9܎"Pmݯ`a]7UJW!Gjn*ɸRJ-E-r/P׵zGkam<]^WuP[U*9s9<9wz;v-rB_ 4dqVg}o" |(nQeSp3t*^v+'-ĝEj6R[.q9[["h>l+p]Zrmb^)(Xۖ)FqۥZ\ISsU(oCJSseIfu2K".G뒛ǵT4tìї5xSyOр jJ^}9g,,X^~f'iֵImNDQYmZ`Fg8.vѰ嶓.Fxm^cOyOhu"fIL B]9jH6:7u* *QLJo -ZKp/X5:zւqȽt(HH&_'[yn{0b+_/[l<(?'km'\čD]w3$n{[9_)ϛJສ5ܞS[9۲tT~m@O (5TSKJ=>C^ɴύ~2mTLjܞ]|ϧi}wM8_ѕ7+)U;q4%xVɊ(r帚T -(Er%53\\\] [`\=_;̟O  ٵI諑JҭSކȤ>T}H*_W%,8Lxͧ+ yOEƥ>Z;;^V+IGӪq9Z0G?rd*m˽Z8yrdpϻ {", yf{Ԥu*&ssnW 5(!zU"~ɶ rYG͍zX4#>  ȺBÑ$Qm-*GTH}211~Xn# .~\Ȳ꣉zte[a.?#(AiSz׹VwOin"/JFj(4vk*0uVg:wMg Oy-yܶv7wdf7[QId1Z߉)"w;tީrvH,P{*x|䎻ήݶW޲k*J#2nmOmA.8w`jj}vQ8<|T2 n+rȳ@f;gT}jY /4P.++~,w'ʀ4yhW'K~ :3[{[U&,r;,(&d8y,ʉg;E sfzɇed~V2VH+`Z":yj\ -:uzso\%n:Uȍ[O#'>q Qż}ys-BٝugVu*l~ݥʗsʪʾ:l]Wt~du&,֒wKZ5ވ}ciUDo1rީO\nZMTK9MMy/m{*:H{̙y5PߒZMr35R^):XUHR(|݅mm0COxT+K;𜌾 *|Q&SW-ɗtz9xփ/up!-Vhԓ$R0]d"I}+Xx槂MIMJF!$[ߍu2Zɳ~qsJ 6ֳddI]8&gefS67 Wy=xY9Ȉ!98\OYw_~__)뵵^Vϫ=cܿ|>:Tv{]7 endstream endobj 326 0 obj 6266 endobj 344 0 obj <> stream x}[uq+|v c$qpg֖gUɻ/~-RU:o~O?r_Ւ޿?|׷^8}u߾|%__-SI_}ϣ?Ӈ|ol~kߒ?7M~c?ׇu~C>ﷸM~c>׷uۛۛoۛۛ/_W?xya^K{}_?_my//?2_߿yicR5vs\dmX =Bl/>mO;]3I7e8 h&!_FS<}7G.ɗ H8쯾\޲FDE{hжцrG%/FBŞA~!f21$msCU9m ۆ"L*A0~7V Vq έlFw0yލPPI"픿[XRimg7FR03m gM'z\1,aɡ9^1JVsv9NKų^L!h =;F7n\"5vvUq%1@c ]Keڐ-ۨ+,]e7}$Լ&mqזTz?51tۧEN"vKDv -ݽ"GbȻvc 1m5$&gry 1C ZHT#]"b_4gzW}$^ s]X7CzeV|H21i7^yc2gŖqP{U1ioҎb,tֵ?pvBEΙpxq6$D1bF.ء-):riA ] }[59+)H3nÈ8;ٔZ#4 LxL#ғh*qB9NR7l!'19"4g2o&m$2 $ p<MIpcK` ujKG0ƻ|9:W3ko0MHKǣ,-Mi&J]zɇ8S@#U9EmK;XeCǃm[@*S} gb]VffmavT|⪤;@quUV[ZE,a>l{}QO(vC5W{%Xަ卣onH$@'0O_mQ$F;3K㻩3s#Ge RQ-4c'#mrɏjp55jTMUrE)6K\9EA_ RPi$ O8ZeCmIOϳo$eFL@GiT ]ösc}7h+U22yn~"Q}$w=kGBEh٬(\(gEbmNU{]@m zFTߠi9s+:$?w3aCD}$#R7si͛p"Jn[Ѐԫ^02ٚLҢ(.ep)} /o_^~v@e>1P)WgG ~Tv6B#ͭ;sTrkRϕDmVjf=xqgvotF{:7vP*`W*47 91.F-B%#iߜCp9UhW5*H l ȈWo\NZ7urjmn4l\ Xh-Na=dgjcyqZdDqsk"s WV6l՗=@YŒzt>7#qhWkY$F?ٖGiXq}au\3 2݈783LAeI z}]VV66wкN Q9-N/LPvcgq{A0N'+T>ZSVt ?tfӒ'͏nAOrfe;ŲqzYvuNfkVXḳ~Zk o0b0=l(Ex]M#tv>i7߭Vh֐v]QT0l͌Zj4~Ɇ VX@lk)ĝ+اܭa{He%KK{dYP&EOecgVbQÞ`+9%jvA(ug-hn#He+1jO4څkR7,s023[r|5' J4)m6&JEOgaf[f[[Z,V`B<4^hvHSArmp6o%-R"4D $*h; LUmH.֯#⫸:ͱf4c1] +a?]yYжxUj3RUADZ+[C;9l;_LEib>KU5*zܢcsYj$ҍ٣M6'GNA\0d\p4cX8RI۴-m{=<#|=%/M 3(ELUQяJ`DUWJCw |nkmb0&7H[W?g42-]0*^Ŭw.3Zޢ*uqt>-핫0ZޔLxäXkuzLf܈S)dKe\6;v}^8'fg98gAFA6=mS(oJh'RJZGmkDOlH3Hhg: o=Ӗ tDU@#FsmuGvDYQL9F)|q<ζϑrc51x-+b#&GY`X>J_Hi?kͩ-_.=CKb+4#99D1K8^QFaMsYBe\pV Yh!ŎQ縩c[.gC.{E+#w?( qU݃tjIԿmoK[xJeD9/vʮҩ m:M)c|fsY1(~3QK 5UwXܟےJw&9K@^G{n8VK~)̽EՅbd*.JJ45뀜3P>`zF(HqtqrtؒG^RK:ـtS@pZZSZP3(-h'ZiNńބR_:i՟8U3m㐪Z;LeGGJw>ğ aSpHR@Ar5q˴q&qd"EFJwtf1@Υȏ7Z?ѣPϽbMvQ5Z6V"'!Yrg)I<-G c+%Rf,%&Y0*)=Y0#Kfύ8,l=+Kxݹ`q.=ɹٳ,=~\0ۦU6%-hV6TY0ېfm `C%gC}`Y~dy-H6tt^:FDU'ReFB'r1aaCqSH3pcM4)f8ˢdJW^4+YדC;F *'ml} /4e8 @NhLRf ~5 ðVϕ4-lRL~ʛR' gѲ,om  _F\/.*97ةϙs5:f ĹߘAXzycΗoy.=($Y=3}7f aCiOīqDאj[+~.KTR]=ͼ9hpLQˣO:9*wSs [ |b3%QDB+sA:`Jw3Y^蹀^䰊)N^7ztaCbBm"l7FUz7h'dIUB^A88@mNp(kbufR41QޮF1YըbF`o{v7usE[Xjҹ"0-zBc1 r%w˶X1xcGHq2"%VbB;jNVTr MG.(fsp$ϴ)]$*R0#r 9^yl[!I vdyUMbH\hh$Np!.,Y=]@3d!`wyyT^RL)ɛA i%76gy "`~˭ [x#h;ӠL%iEU ~GC%(ʖlzgbm[OJ,IUodmȯ"ԕIBX_jC15ׅb̗6œo۶5 hѦ9rZ^-/ qڨ\LI;IZt;Ul}7uz*3}jcMF/FE( *7_ai.=d؎^`J~kL'pKZ8>VF3&LZl;)͛)ҹ`}v Ƽ޼ d)mr;I3=XqF7b%@+qŸ"&s6F2penO)ކS(.60vT)4NQzS^nB„Yo[ an{u;FW>+v. Msᢘt)8ΰl8qW蔹m'.i!!6 }AN+1ڣ->uqCܟO4v5%YTNr=*S.sa )(;D_a.U@Ĺ@:2)RꆦXE )m<&K?ahӪ*4C JGjiŋM+'_,lZb`ʲ6Xe0 6\!;WhU޹B ~ oj;W'CB3KVk3벛!Xd`]v3겛W &נE®tQz k̳Ui8ߠjogdrU1˅&00eU,Vs'RZg M!QWUǦ^X&N7Əy&ik;(NTͻ]PnW1-s)Li 4Con Zf{Q@f1cL]cfP誥ji+]╮GsJףpeP"VE+]撕GQb(}o:-c_R%=Ҝv2n uO/E50z։Q+dc^jX}񰴡"a^J~,'H`&MeZ(箣LoYn4j8E\h?i7%pES', y%ܒA 8ŕXy+@2{9-A SF pC\݌#1lycrڻh~^o9ѣљVVHtNX y|WgJ%nC"hJdCzia;lQ%WDPEisItHDBtl´ƴ"S(Vo<-$m"ʻRD10IߣS(oLh߸»SgLv#}6ZIla-{<J+3}~өϺYו>+}ֵhϺYו>ϨGC1| p U߽jgPA,TYPuL S̴7^B 1iOM!/H_ވ /ݘtoL I{Z%K`,D{hͧf->lZll~.(~RÈDw6*=&绛VdȠSܲ=׵"/[yhl}`E Q.;݇8qJ+JGY$+Jns(/?J t/l}wrÇ|4p>diK6Z2d9JU-N} ^AD I@()}.m)m屢K|%dz͞yRJWQLܻp QaNP1b}{Tg# VB6R#,1&t'lO~r=HRoqMOޛ# Tq8"zꠣQ9tq"J6'9bX*z JևVҥ*vEiW3ahSč%`JZE|ȕr__?myviߚӠQ:Àȟ-?/vA endstream endobj 345 0 obj 10658 endobj 411 0 obj <> stream x]]e}_qX*}1t0LCC c ْ=[k]7֑T_*-J___> /{j/⣽?/?Ǘ>68[~}.G})E~>廟D})h_=w}_d%rRy(WbqZN.q% **41wJ"H(L-w-W*ٶvGk:Ռ~Kp宿K^M|V'R3D҈" 8+Eqg' 8 PxFG[b \y!Яkg{ȶd 1b6M+P[[Wi nsjӛ͜3Fv[]t SU> y2iƶd34#T׶~=R)~"[omH%+hBBBfYĨNh.M0I8gii*G6縄]mNKB#) y㸐Z<,m[Ũ `HE$P(QE)⪌ٕ$xrA7!б&}xDL q;B{\["$8l#yvLxC*%6Ie(,,GQ'jBypTm0*NhiǓUҵqSw,k'{nHŞ L=6sP1B4;" G,<"(+ٶUj\gqj&mRu7SfK!=#螡sɝ 2y q"P~X2k==FuQ J*\L٪m*Zf}Hޤh[9aCxyMՒkPjF*&(l8gI #w>PW1yG{\)@X)`#KE/M;=ei"j%Ř"j˂(Fm%jmz4j t Cw3,n%f%@|}=b $e.V[H:TD<lc>!}uϳƵ-h!϶5c$5zJ ctR)W=LJ3q.UgRQ<@3[VmUaL5?|uձQujmc#k +Pg,PY'ӒPȕ 甈rabycyI{$gI ,?^& *pYւ\! 5I <9t9zP-Q^ OǝoꊨǽT4_"-:HF><ї1[Ƨ4W5(k rͷ^PHq89mtalJFZWsnx$frc񭢆(/UW,58nmV: ?B uY)jaζw;RP umn7QԢ<uDgV<&]盠8Epo̟:Ijss$RgKL%Yii龳%U2/gO0,ck~#J8xT£"觧-[z\+뽗z]B@% Z}o꽗Cz\dr~c]*%c(-\QJQ G}q=ll.F[-moVK[qAyHSY@~sasգґ+IYjܐx =*_ȹӄBߩUמ[]Oׄ;^ϽQmr0.'/!GEpNjqxÞCu6ދ< sF:zW\P74yI#rUirӍ$x;E?hwZkϱt9R?8g)nK~rʶ8 q%*`jZ6Qנo,fHfw󭟕K[DQ͝gKv`hT^@ˌsI,Kȓa[F03=H(m7&\OrJ(MZQnvQ̤3GW8.Dħ^kFɢs]8\+A :E?E8FJrPج:놊QYFa:kz*Vb䳏Yۭml0cDhY s4\ۿ?r)cU.gKԜDz^DaPCO ǹ= k.zq% "=IEhq'pEi|iSBQ)OD*"Ø6,T)SORF->Q P0lK:Rr&? U+z`Zg `H`ȣz=,Jg;Ro+-Hz3}JYڸ'Uv|=b>gfV>ѵ!!/|r4,-|^0C]<}3xգgU]$2O\/O.IU"ƅ5<-4hq3Qvf:%7gڼ׽ ^7 GܞSTypɔWp8+V݈b5/r -g# UwP6TƎޮSmK R'V'm]rri\CJr}f6Ϻ7Wik qӀ .';c[yvL,:^]zs]\i{2"RTzLUSrf5Rul}%yq%EiHqx|+׾+xms]N^'pzR\{xiiIo9!>DGAߥ.Wol@~_bFgq/fiR[繶TQkCboJ6VZeñ|xdo*;J{0]?} wDz"cHt-YI^H\yæhؒnEW@/zj @e m9{92gFx|jZrE*!T*gG.dny=Wp7E Q" ܜq\~\~\K4]&Y-o,+i嘿PX7å#)w#s4_;UOx˒;n{]#rszXx$3U${=KKֻI I'9go*XY<5˟slamGs c JjjJGPic~ ŐW$="hrxw|`aDtIC **P6 h=?PՅK-R͓xO=mGYy+$g׏1զZß[2zsvk|Tn~#{1(W~JWZ\OG/ӛk.|̥P+)cJ!_(OmX@Ϙ$egċm>ʓ'+J^3ZqL&Gaɝ&m6*kxb(FRc$kv ꎛNs8nieMԘI oVг iq"Pzԓ+a&1WLWo-si<.9a8>3 KKdI$d<"r@]vմjt:Ĭ^rLb;=i9_EDI/W|RaVC]J %=YPnhygqli|{f ؖ@xHq h9z ?OPE@  Om{=nP7䙟{u1ݖ5"DŽ} R_rugь|۸lf?j t5n@S|c⼉Țd3%[a\9tQ"*+q5 ٵ`m٩-=mq'\_ X.Ϣ5 w;y/]+QZǥ ~CG'&%$I6A?ˮ컡5 }@JF-+z+vkRhDh$?1Z/\7r/!$>{ts*T~Q\f\ΖW-]CXcAi)]@SBCiA=R3rE Z[v/АtV';C]K[J gR5j^R %|_2B\n&I_1K=?w\b mИxmB)8lM^I\[1失g9~/~qRJfJV?ב>|?_hǗ;xN? endstream endobj 412 0 obj 5983 endobj 430 0 obj <> stream x}Ke;<E=jK'Ɔ}MtepQGsn V BG_oӗz{-o?//?~zO?׿GZs__P^_/4ӯ%4//WS_ZG^Z~Y5.ZVPp? #@@'\%>!, x}CB3 ? Zcz}f9T#5tzyvu%c%BfT~GNVo(p>~9f`֪'\yЛM5Mcn#tvR+[(LI |F<$, ^}@Z%Inֈ༱"A8@IۭI&D"Ʃmr B^ؗbuwqqҼhQB@QE/ 4㵲h}W:/ 8o|iՊ\w!DC3Aתu=П "2pKD~Bh#+k{dHM#燜h}Eķx;x)`!PBh>h/xrO܌9~وǿ x ᠽVV<ؼ ?" V [+ 3-|č+ҬѼ( m۳n6"'E2%(o RH/ЫEJW))uAoR >͈Mq$7Fk#Rp%y_~L{q5@uқ"qΗ^s:Cǵ< c܉Әkx*1m -#ձl/#qH1fWpcV *A&elWqH< A~"@9$.H ECAq>QP:J|CP9 nSWN6  u&GQ݌W=P4Bb2d#KXń6Kc;rP @S@p46x +d8YPD\>˵7$PHLt.J vb= 衠+ec3JWñ(]ryh8}~FhGyK2OI.V(j?x#cpƒBMOW< Jp|`)ZYb0J@}LF01e#d6=k%`ȜO&5nwVV8o% C&L փ2'|0oIhx_iv+wn4 8W6μ19-@&YL{4yi{$,VmAxa7ɛ zn( ]PS'PG fCXے`U= 2Ñ.Ɉ1T"EjK;hS嘻=s#.lLQuD( ];qs_m2w'yݤrseb=I63t"rr=DUZGldbȿ~!{Qtܹ (lyKMG=6]w71ZpA3/n@@NÜ@[ՉI|Ca CGT&}-M@ˆWJp4kG(Ũ*3x Ő=}e+AE;Qr֤(nī7&%Rh J~`86"1N$*u mh{S.m2EypĹpkۃܐnSX \F5- ҁlȨM'bH tr ^X;1&$:RCy rOI{$^S ژ6#*e i8CˍWfvA S0 p6XQ|!EtXB޼z'rBX#׬a-!K7J5,Kx](p e`2׿]RiʖB#)dLEzfM594h_8T͉Y S5wr`Fl>H71ݤ@yɮrYP57μGav/(,_r6X7:jnڊ('xjފQ~@(V I H-~\2QP|J1]Rb륰ж)4OV)4'C6NVR57J; |zG$ Wp;"EE 8S_T zvrFb%Bn TOK zQtu]6^߹F\1DM;m&>9V 7p>73'HIn7-r,=}bEu8X?̵M3R2Bx ͪh-1! t˿De鹡|\:.ƦPx8/69iu2(a\~eP+B)sg}:qʓˣ@_IeZE. ;X7fwv(n-stN7rS3qI^ [چ2t\xXZ OX_(߆OaG>m\ pf(AC[Q㌵H 5%&me5IMZN,yL׽BcOIf|"'tJ%i=Ii=w~TR3WICvɛUJZ~*w\@(TrXp,&8yћ@{+(' rSKH׉ϝ,Ƌdy G ]>> ooA\5/ ׾0$N Oȍnw u֩6HcME35V^#2Wwe+zdtc (33(J'zJ=ɯ|dw;$e2 d J\UDfP`*^w10NW#[ @iu509Q*9P|Zk:)|%XC$)μ00C`$yHp< 샺z/R-MSJk=l\-ee1`8MRbzJG(Bř3- cJ\PP .\8hˍȺvHD_B4.Y[EˤCviNeLct!/R^X-9:QXu6?da}Uq[˞ Q퍢Ϛ$- M 4yGVJ^ װ-gq'niQwkjKWAL]^" y30G?w۾o ?K@,idu,߈f='O( 2 Mͨ"iz,0oV`gDϰ *)!)|`^P@z @:r Z3n\Et7W+xk$ESpJ񪒞yDlx |/ޡE%Em s[]N~{yO,Ms&fWՖ0<ҝ<.ܩ0},bˡ#|EܹpV`C`!z9_Vz>j^AG'c`ToSSJo,Jz3dQ81J^ǥMGvhRkFUM&AkaKk9w WF RK*}[&^ʙQw;u&R$풢'|]+ L^ WLC;[;*/mϺ^XBq wG Dy D&gAy=39F~ vĖw7O³@+QrOPzE^hݪ5F*y8YZwXyeJ+7(ZE V[{ܘ;Jk| ZH1Va<=$4c*t!/(N6FM[Rrޙxҍ4/ot47+B)lH+Ȉ{^+By)oe<3d>W QRrd# >:E_ΤR{DP|I~| :g ߿ЬhPIeV\bۚн:kBOEqZW(ްȤNå˽s|nI |hR4T_)g5(J1 ͉QKI4X /P=oY14 < ys7~7=\p9"JDŽ<뉂(u<6֥vaqbgjkqqڼW[ }dNW& u[g(GD(w=+%@h$@lְykű֪g/}H.wL^(]n98@/4'F+3ėDMB+9HFi)^J5iy64%yȫ>K*.`>I2o"f,"1LqqK.c{ɏ+QJ`K/g[ry zV\ؒIn4xk m*]s<#t4mRk@k%c<(zp7|~˺ol!eQsʭc^w۸Z h.@;z4wAW,2wvCiOвU5&yeR/d]w2|qAbˉ*"bGZ(]_ɥ)n:x^{m7D,TI|@.o+_+d+z뤘@,@s܋'z]zpvLB9ן%'fvCH"Mu֩kzI_B!Q-q-AҞP*G./6hBgzYRi(_ qяgZq qVz;1HmS0:)hWO>Ҧ^\&㤠K^*)j3N@@8+Ж`~Hk؛PK~n+o+nde[Yt%8h Z쎨) K!7j,qFKmֈW94ӲBsiV\ЛGqr&d i5oLR_GP8ʞ H޻M7ɥ^mMT$o4#VGEJS2׾ћAs2>~70Ģo % FQ*u$b@l|e2~̶FJ#Esam0W)HJvkM-׿r[5pbȄXQ%J(}ٯHɱz$9=ʱQL(Ev!lIPF]IpĘM~y$t5?pT+N:ȱ=+8jt" q]3H Ջ(OC^1^Ep:߮-(,jΫd9G96$J^H+J\xZS!;6~w[,ٲ?r QfX?+"O DM\n 5$ RgOe,Vq?Ue,B +TMG(Te=W(%V(Nmthɷ"ˊ }SAwxHr;H;KzH%ϣe ; t].\0+p_P"4%=.>#`h,4=p~w{M9j=-y 0B׎FV ZE$>?zU) ;T D Zj=[ Fp}hXz/Fd WNaNaGo[Pmq]RnO -O Zgن'BuJ]ƑBPHכ7 bE;VSz9"#^0/ǿܠq+~W]'- 0&jkB(mA/rg;طNс{:)^/J-_ՈR7pЩjd<ҝA;ӝjLނρtt({J[GQTTLJq Uм|H3{u z $egE$=3i%h֑FP3~Z=dN8UZg@tq%:h ՙľ#'MW ~h"]|AǡqEi2I@rⳗI\+f>5>v4b<Ϟ= @Vcc\]k|^w& _}AxT g?q';y\Y +nCчʅ{C |\>V.|BrfT.d 4 C+n"*ԗg"S }\T<+Y5vV.rA|noS!}ۉhrg :ϒ|cHRoF;5t_U '#j|Mn"=2|[ҩR4+%jD(nj;q;Լ]' vk%P9,",Ubd,)h56X\J_{RZc.]_nčFL)OBB k_zuܫCnCu |Y>W,:d! [_CutF YH!؇Y}8{u#ΉP@CCu}XգZ87>JfuoEYQ/ݢ![4 q :EhH1d%@7eJC8%&[;Á1 lՍAb,EN-PNU [u.~KlǃK6tC9"0V*'f {SKx(Gdb&+RYE.Sro*6:j5-?"'>+j,a>JbeJ}rگ<^\N|hj?֛AbUvi>"5uRҕ/Ra &9t`?=u26 tt 2~j_@/J /u>l ]L ]X#`$]:Ǒ4(!gtn8kX")Ib*xI/XJ2],8 TOJ͋K)^=;ei bP7-H>ZIx.SQ%"*v⅟;) E49WG"aUW^Dı[K; jI.~E~%/FɹkMD'>yĉ=ux Wf_I5h]^Kq TbPXil?xqj2z~e!q{l՝ITv!F#7㇎fuШ8FiP#qc-%>wީCiQfov5bhB ^pzށgbᷩ{YPJMgr!4!@4CE4sŨۤ+=DuJQTQhv¹ m4NsԎXt_!=j8C/1GW.c+r6S^m'JBGsR|j+ƙB&M:BSj>蓅px.m&v-WmNcRbe XZGrPېOZ7R[lezlRWS;Zj=$iMW8-׼ 2>lDz^C>S zC#dF)u/e\a6T j#}^Q-PSU5Ǿe+qJ'^=ޔ7f]M߿$׺o W/@K|J: 2IAoI޶SmgC B#_L?H?\rs2z[ jޔ[H %*NanWi$knTJԈA'_eݡUY{Z|t#X<Ca?4_XtVy'5/cΡ&''k̝cЃxv3izJ{sKI+ciNGIeF|ҡ$rRIz- ˖$4! 9;/W b*Bӽ|2mbb=7 J"M4Ib&)!X$0 5w࣌=VK]8؃a?wZ-%qjo1L2.Ęb7^t➶ `PY0K;@\'CąIcCUq{/K],"Y8/,(]ُ¤qN+.LNJ饂Ō+9dw [n#"Y=mEXߵWdۣ*>_t{ΚgfͶb绝޲mRx wcLw蚞3dRg dPL܎" HrtT#zYvx2LS \>vR}AvD`X:"h`خ&N,p \X@nj!hu;B|Lqޭ`HƲRKZi;5i|G=G.ޞS;ߛI ZaW:a31'f&:Uft | qoB'}H8<%"VxVZ]0èh(ZEp?.@ +lW 6Gb]K ֬ ݟwܻ[*,|4o.a9mRˑG A(WNpjc)q'bҕγ"捳\J|yޗV܈8EQk?hdgHvҌh'͈ 5̑8.o]j_gwK6kR |/0ߙ(W\"mlU /7Tu5W^ajb;xVeZnTN=5 <H \YQlZg-ibb9HmOrKW<@Thl~PwSaJo90q __??{ðɵ^jXk/׿_}t_z |_qb endstream endobj 431 0 obj 11926 endobj 457 0 obj <> stream x}]e9{|mIOh* a6iɻKIQuH ŗb"B#~~ǿ//?ߗ%^F/=Ǐ?/__w|TGZ~?G㗿/S/5fo?%ן/` ;0ô#iZ(;F:i NCyQZ aƌD±Ʀ#B;B ;lKr8POUr6VW)0pA{8%Q ;q%SMM$)$hۄPePJPC(2B 9R^2դܤ\gĪ"5^$S(U 7@QrR 4sf\u)9%WUsw#ı$2_QŮǽdEԘYF׹5N<׿OtF}#)WjϟV_茋;0HS sϸ'>v2cHyC MuSݒe0k@gм~ HĂ羍{B޾N@eX9g: qQx" ˫O@A `E3Gt9✆dY B ASF*KPOxЮvUtC rZf^v}]RZ[DQf,,Arl4y2%)7B:8<~42c}v IE;^˛:H@+D8MyyBrus49rhI';YlpL'uBhEPq^q!u؂m+':x©mwNݖԀn,Hp.$7%Q+Nɽə {NB5W 2ww2?M/`ֿ/ts ݯ eIa]Ruٷ{- N5Us(-5X^P`Alv¹}L_ja 7}hnST{Ĩbđ8@1qQ?1/kQJb$9qRVv/$˸*jpz}WuӴUEˑiA_uِ3KKObsV%FGxG̯o59oZ癚e?5R1Hik UMd)G-5}/J> fnf[[@(mD⺯S@ABJb_" `K@"[(sF2XXo5bcc \∖queX' c+ׁti]^%Iomۺƙ[(q]:HreÔ9hAWMU9AHߗ)3r=\hU2@5~yDh3m4i.ΞXA6Mn5F*4) wM(F|ZD(^ zbK2Enc >ѕX@ .sTQK(uhV^tA)u5{Wu `͔̋~0rOTT"R 4P5UetVqmJln 5R`K 5KR"ХׯuD .]g`G;VFxDIB@0I+%dĆVj߅>%{F S؈hWG)LkRRNSO tĪ$~ m)?[o ӜjAAYUa؝dHURm(}/$yKP׵lP̿VVDXz1(Pn'@(Wo!,ˈ-F!Jlg-O3XbCy#R=`<"w̺Hc,#hN|WmpC oW[=>R7:! 7^]4$Kng+W(FhtMYE,-aЙbX\7g/C}yj>_)oDwѬޝNConQbCKs*vtX~X`oJJgE+%%V^r:[ҏu-OVH<,Ybes 3b EeƉNNhۜtX3 y8ry 6u)O ^VO\=NOn7`?Q2lK;эm}{f޶=p]Rm7yH9;![>H}ڈzaG YoPjTɥx G͐qx/RtA>1F:"baփl*oVץv`!_nF;rLIyIqazG|<;ARo9' '}Je;}6'Hf9I^8Z󨙓+WMp^y%[̩4XCYX0lcoQr0y/T[;5_PͿԂ^C;Ntנ%CkPEji/rmc)pDhF(V={TQLmj۹6L)wyFmAƙ+ՊZj™?)™?]"y?{ =.!9qsB . ag/.cq K)|yYNվGF A=R"%7TZ-Cu{?w;xu-1J*Ϫt>F >UnD Hg68n#Yx?) }o@ 9Ka[|E 9)v\ٟ4ذDL?D($80%N^vA[Dj BZH~w-BbHC]MEkZP.33}Q 8%)sl%+* Ԡ,zG4[;KZkzrN!1ύ3TQ#CyE7ZRtty> IfJY 0h2lV<0Sf aMKy†%RF"Tm:q~4n5Ι,NLmf$kC-Z l3:+P xv9:DN+(R̩~(PݭAʧ{MzfC[< aꍌn^b5Haf%Y8VwZT$cSzӅ`~vUH3Qb9VE>t[Xa3} P>j*DF;slP<:49nH o- Po׻vKG햮 Sf  xXi*VvRqݧ~XrljHe: dD=#p[V:X5VwDW}pr]o٩>+/JֻSJ^ӺVnz^oQ#g`XIy2ɫҡҔy閒-[iBnV#X 8~Q='uAߵr3ϗWf6Sj.4:pݎVt;$W晒fcKGmb (H$˲ыrbQORh~6'GssZc_~&|evlxlQ0%/?so~\Z{|ǦpTUZ]~;](=bߠɽķZHo\#.q^쾭J}ADouкHB[@(=H_5N=.+7/Wro~xv*Nw=<{?4PJ(G곤􍺤n2Q~o(7zuptkpOM$HJҰ2BuB@tktu)LcfJ!%xVR-#ha&pu[&wk:R;ǒg<0^%g'72EVЎOF@厴.C(Hl?$Б% |+QV* PN$a 46 OJ=w z:fMX|}XU}x8w>'򨕜t-Gn^¥>8ЃGoo{Fʲw\δШm΋ҵLűqb, sx¹"ﯪۻUΒ==Kyʝ 软[16y%J?º &!uD`& \d k3cҲZ\ps`*ZiMӸlAh hy 5.( 9d D@D;BZ,(+$1葭 ݤ(eDRi+AP_XM_OkڲYORfnR2c#= zUMt1_UN^ZlEr8=rS5S%jq޿{6P>Uޗ:Tm}oq5Svt=}|[oڍ0Ow-'}ZaY8<rd|3S<#1=7=^;br=w޻Yr^m_8$I($כ%I:}1k; JX;ei5W,J^y+&{~Rw%MnG9%Ji#9EZy 9.wmIYY ~-"5ƲDR?%\>aG#Bs`>ѳAqy~K.r,pYyAɞ}&YGD{D6s`_uc~ 9{*ޞP^l3)Y"qf#Ɇң9Dq|zJҌ8ӖJrBoܛ_JO'*_ViKi,mJ7eWvw\*(s PȅmE3u@g'5pQ JZg~= 5Zy B;yvnA- WG$i- uG֣6Qm,=Ls[~iKQR<-||&]?!~#%s^ڡn@G=/CW{,I]Z8L'vͅIk2k7.\ =j$V%1ݶèSUɹ[٦}ftJa{/1ۺ z94߬i?ofk2@VCݬ|Kq;(v{sƶ^X4i9fV^# y08Mq0^qr^/ \o)Ժ!V7MY,&I\BdWdiݻNñ4a]G"P3mǫQMk(Ho;/(p-mǘAjz7^+(8$vmT9N3^OK8  +̰]tOfR~3PPпDzE; `}$㪔~>լ5 b]G *V;}LOH. l^"#AYYͪ(+d>9*@#{z󜺔٫_ۋyuz9h/:ݑn-zBq [#-"%˜H^"4;xpЯO' {OѪ$'7i#a|!}d/>j [|ޟ)_VI 76 MmCTmQdЂa'׊? ZEҽs8`eq;pΐ8PnήɥE3` BVbգO[*:^ΆJ7t+ME't +zJIQhJBk*Ec<`UN[k,hwr eF(%I<|<;.:y{5רx+ĀZNK +`^l !*(Ƈ־D5VFJ|Bo7]Bs)̷m`ytXHEl+$v|7Vt݂zUoR&]ymjaz棥d| VJ f+cJj=QŃ[鬱j(t=&IANRjb\ F%H5%UVث $6у?HFݰe=/`@=ȧ@rG$u y5!,f<&Cx,џRTl$yeۺp)}ĊT?A36ME/FPnd]n]GFG4f巨 H{ϔۈ?_7knv9rV )t>>Z2J䁶u)3JMzW!g |`G `Et%3e6jh(75ȶ~DiCr!S6Ƽ:VD%- 89hs];ڇٿu;G#Wi,0i#x~B\~v@ZP|jMzO y<w2Ev"-:f MN_&BϾ[y;jy-gKZ8P1_Pl3j?dϜ&M>yw7 ,@ϯ H9cyvR]T譋>=իOJp{AF(J HJ`utD~vu9t` B?ŽiȱގWZw>yRmT@OBD[JVŚtiM*aT83٠Hne$UZ}I1 NieO%V+qGTۺ1f`9,-Apf,JâjU&q=ߠp]zѧ~h0Rl]QU,U'6\֐TfufnPjnU?{jP;{)WjQ -7ҧo>JrܬnnjJhv:5<` PC9%T떘VƢR#T`ɩhې!S`۷_ݰ[9!@*uV92/kIr&[ȑ ,{yr̖z{H'Vc=܅7̑yhL5p d Xe.ac5pbpfȁC; UՎRYGɑwܷ𐀢|Hk3R0._Pg p]tu gzf%㖝#ZkyJ+Iu ][,r$aLЋVj?3 [BLu d:vfRRC0ZSY[[%o;rQO@cqaѺԓ5ڀcckűl@8{NEҚ:*ߑنQrKzp 7$V9pyj)ZǁR,鰞T{)1N3y!3dϓUVĔ\8e?Ě}LR) ųs~;={Ő̼Mr'Nz;>3z6J! @ 3yG[kfjڀ&z ƕɭG.;߹ذ"7!.$v{|mKoZ}_Z4}$ yt}9#LYJoy)ۑ"m'3SBKUX|4Amy2Ʀ֢wn5zj/vJ3׭ild%f爬js=g;pgIn~aJB- IsƓW՜Zmtɹwfj/wQ+(ΠΠa`^>̠0IYf?HSsܔSV{`V %Gӏ֚;-BKEr,*Slo.Am{X c8. 27zFsk=eo(gAB8{r3]mgbge5L.S{vk}p ?JA9L (Xkšg?^׈ay壭?_k?}G'4y endstream endobj 458 0 obj 15190 endobj 511 0 obj <> stream x}[e{zg]` `L <&q08@ sD:[k]hU<(֦(*|oo~__߷-u_׷ߟ?noRo^}_~?~[hڷϳIo~_mFJH5XNn; 6 bcդf1˗Oa1e xm (79}_+H-])$ZbaR#PˮցVr\IBͺ˧l I $h%#h -q6)@*rR> Tͧd"ͧ/l>eUzId)vVˇi)FiecY[i׿7S@q*E\mi$tSDj;.DŽݐP w)Œl -`|r&-l #9,J|,j8T`S~ ic[шPcfdfd13VoJv ^f3\NXX-[+eЋ`ikCF-%ifAqH5Zh\<=U%liNHMPyXEt"v$05@혳P EӰ]¹LA1sy_ٝF+mOakoq8}uM5:t͝/AN$ޠ-A5Ӎσ1.`0@BF:nRںuF-i/,*WCz}h'#m",Em#Ҩz+}ZQimܴjK#_KEiq @ll9ƃȱՒ#+\|i/3l-nq>q\V%!Qӗ @檎vz~5rø}%zhN Ea-TZm`ك`7>zlKC*ζM G*?PUiΎD/0z@96/ +rKh FmqJ*(IUS1Cn{^q=bO_O®U 51c؆V=}o7~3F iGvvx%4Ͼ|K2֍?"e%hzoet<JyeMu{ i Ƽ!t]9];pi>Δ11]G2qѣrBl48@lc~Fjqo!`FE:DP=C:B+eB3VS?ZTVփX{炾PecAV Jo}+ɯ~ڬv+jäר^wP~ws3CzJz ,nB3 ~y/-F$1z^$0 bq^RxEEH{#e`6RIn7ӵ-.*d?tmq_i 5lև"5DZIBhioM-Usd:5$@`j H&=Ѻqj('-~hnP%5Id1Z-O 9lg^9_9:$",f. ̡y,0jOc5PZ&dr冚ٶvAYSV<uti1N~1 $aGrлTiWS0<3𚥍CbBvL9';~YlmaϺ}#j|9㊧pޏӀ?QJ7x P 81Bz~w.v kCD!_kPD<+"Yaҋ'WӉ)øH+̖z ƥk!"6#TYW-5A0b@wA}GBY CYըpX솎z@*gEJLR9_5uЪF5˸:PbF)W6#aJ6hUՃE2'pQO1aFF{ڍf_~qA~@)=r3&,v dQ 8n݄rB5nrE(l i(ARegi믬 X2"E}<6uLI~R5f$"R \D\c~/l" HF%:u:1&yfJs=lR2kv'̝Arg][[¿ t1* 4Y:R)j eom!D-x4Weo#c#jbt221M.[R)$n|$OO ۨVC:%&tFX&elpa|R[0.OHg˅=fa}\Gmh1)zGzª*40IP}dFXw- j?1DlDUsGz|Kؒoʚ-8*877 +۬lLB8+iN*!pึH/EY;V8jEzQjL8J%K>R߮ W7?p}g` nͯnvY^6?D kG"_ÚM[S6SL{KİqƁ6*ϚGȚ\V)zKlTZp"/gHH}qkHCPV H :jbi=fB*_ͪ9|JuD5خZO\(fҒzc\!Zuφ+pF*Ňh^ՠj*QR :z$2؝S[0j .ЋLJH' =kn@VB%d>*NHDS®j t1F۫2u]ho'fTSRI7Uab1o #!!`фQZᄉIix8"!>?S}Eճ'( /mXIiź寒\[(6-Ɏ^m~ӳ[tJًQs R{9w*RQ3L<)Ij>֒( dS\a[iEKh+·S ꇒMawɭ`ϔD@A9v;nd#ڤ+9 yhe3T{FR3 K0_gM 0|jvX}~lt7odMs#(n:vn=);ޔQ`BbF% VA;1UhFjsXV4VOD~&MvQ+@~O""*wE]DV׬n^uE8qm[qxֽV%yQ0FlGI!ϖH`jwیx 3⊱eqFѫ˞8ݤEG LLo%v~06OPw[(mG+=j|Y`l) dV|_qEķʉg/ QQ5U\,-'/R!%Γ\WVi`)5.e"t\; "05dr>y']"O}=KK)Ib2elkq {A6)e#gԈgɸF%O=43[ݘ 5k~SD9dU*DNόR5OUUUBhh3_ZH0 T΀xv0e6!߳ CW7e!m^-ow*ZDCP!!pD/}\X"Z\PFCH\\*K2]ЉK IYy!)|rQk85HC?$cxAµ$}Eq0$TUe;osn/*Y%knF{J"08_J~GP+7cn^uM+j{|O2s*DûjUR[L [jFRlE#^aqUJyLC$W/t*-VS,Y¦b}p>P5i}f1YϷd)X*J k;ꝰkB3[|Cv6]V3BZky?r v 傿\/$Pv?3".W8!w7M[M}/m-p!3kplkdP$_c^W\:eQL3PT+#g F)X+FŏJIu e1/GmUHj_q܁T  ٻ m* 'D FZutq,\9*(keQg>S >cq 0q+%!muOOUp}B˘oJxe|f0Wgj~փs"R0CoF|2k3LY -yɕ_ߨ̥ o8UrAyZ~z%Syn Z^S;hr:h2ۃ]IF%a糊i5ZZ~+n-w7GF`{;wSU5t{ kO"3Z$’PvSeA ǜm$ ߊ^YU[rn䕩~@*%1A@h}R1O3KkKght9cr}([z}]V6Bq4:haӑZONi&O,Qcۤ~%g-ϞT4+ *k v*!Y;c݁ H݁R~y v_ꍈI,{}0E_1ͺK>{;UXQ/kCzڄSNىDiu*oݢF}:XWD_uZljqbn_K/Wި6 ]e׮{^TWϔ-'W7E3}wWR ኞjIҗB?jHђ)*Mv)ùaTOؿ/-5W%v9ù^Dq1x]+̕(r=Be3Yq.Z} MUo=|b}ĈT09xFzj堿|J($, 4(1{?8PN]ۑgg .gJIZ AU /î.*O&SmIaM5h<re1ˤڝA%WjY%Ѵn{.8k>" M"; Vv ]9!j#:.@ƥvD$&Jrrr+ChY@* TZe\ kETWփVAT.Ym`M4M.-O{~j]j:yYmw֩EE6*JdLbJ3ie Ku& ab.Z׸t|[GpGI|Ì֖h~׮RYsl`\##z5:i\FshZzEM_cAEklԇWTsyT^iDvQ2sRYe뙢63oV5ϳ)EZs٩t=i}S]K+Z'8B*6mQGV3 ݡf͝${^7wUg: ]m9pډ+zpVz ^kKRPGZNkX=nK5j+=}i{YмcAmxiSm|ڟx>1ֈT># vZAVh݊-e3=1@kVi @@-\_ I[h\Rqxk=49_8iGnؘB.Մz;nHDLH5Rp(3b^ [;ԱS<ш[*Y37t*Q pgl؄D5R3)jnw޿{jڈPwkyUp7"E Y݉*n/ʑzitJZHͬŪ{gܔg֒gAk)FJq=Jrmh2y+kpG}/-v j#%j h 6MF)K9|Qʴ FȚ(*XWL^cݟBHZFKKPfBe߽Mu ZXghDu9ފӄ - ?~l,Фևyl=u =>}X+A*QZ<.rř_Pb^CYNVlH5X=c?~ơUv5$Qa`ki1̓'WޮqPͭB0zC"݉o~M FmmQW&C(27:w (F$Kl{vm4SEbwIq:ȱe=HD)ǤǺewNI$L/8ti $ѓy/*B?rv_XSֿnTB _8a*d'h\D'rwvROrե-ۢS+E&<И8$a^Bٌy5,+;t1xH'˞Eq=s$BLkȌZKk~"ѮyvpnVLՅ~,./Žz6.E[=ݏ$|δ54e~w[~d#" N@䗙& TCٻ0osWK}OkT+qqEOW+z~xQAJ)y3@aQ+yխm /y0ReZ^%Y jidKr*9R\eC*U @%xg9.fZ5*z{9糠X36-2qWj'-0=;]o'l=#2J0v:"P+((₮zZRB]颩1m4nj FJ7_T1H O('ׯoTz*7JwLZӟf-*l>ʉcfJI~h"  [ h#Iن\ m *x{ĶtGBaQ3mgC>DmM/_vl\^+\Djz|TJHE'͕_`±^Eع"jF^sWT>T~6 <nz[W ^\!_-Ңfuu7C]ݭgzY(5gK\!BgJ(%"9|)VK+ Y*տ-' dXTIE{&vlMZd괊(AE÷#j Xh;+)K/d,nTr̈́ٮgj>6+JͨDbvfՕ3zE N&i^C[ CxR ,Y!b;5\*>˸_MD:%Ԏf~/V[hF-TCMvs 'I6J*DTVGixxA\`T=GڿTvGpx鲇 {:M}iCDW7"Ɖ5)݇W8+lmlP|<4P\AN̙%IdP [IV6֖b4_V6:5_]ԟgȌtT G%P=rtY9X`9`W+}&w`Hi&ilrƒ*dmi@i=rK֫lƒ\ \3Z/p)o#j-hh9sf*{lPr9=sB >dQʳ8p*;l۰kH#DrösEu;^W=;lJqaKȳZ_Wt?IǪڣ5 6虞h' -9Rb%1 lZv%LEX*T·R=zF^"BΨ-|:ZU""9wEARu$ǁqR\υ*9e,4#t;ֳ 9(oqǵ\,޷*֭(S7Kjzl>ћqmw{. KLԫealq0T]qU݋ \A˨?‰KL||0J܊ށjl+Kɰ؂JuI\ɫp%h?SB?b/rq)d{r"<\PܽF؈F}((Q l>\yAjt\U׸A>74.qRQR%f(ȑKݵ_T DW^OoA#% ,g>x(I~K!2 jÞQdq RWˠ:ٮ`;-\;儕V9ivX'pkLDy*J^s㊀sPrU$͒k4u KןΕ qm.c Z@ppE\;ʩcѳR-; ɐ>l?1b*q@=TWzX_`xpWЦ=S@H v݁~8Na} pů3WeZ7C04.y֙MzYرNc>1 ydia_r?F m.'D.].Tu#m =PV߇hlQudWwpǁZ_YzE{E)])[ |KJ^38dr.v%EB19|Kb<Q !ñI*2erMuz}\[31>GkyK:ryzwêd=W1l^$gW s7q8J;DEW:蟿Q9+@R !.W_ZRnT*j,(&YN#@|Pn?k`,T)L)z_@NXQlHtq0.%&Tƃ yRL옰gz+-)(E'9 r6mU\5Z%Q>Q@}eEx+UF-I7YJrה'"g#y+o C5)*jG-P<ٌJj{:`6M>?QR QX 'U4fIݧ!.McoN艰{,TuF"$aN;') HEܿ |uz ¹ Fwˇ&(0#sVw߿('a]ćCmMԘ6](}S@Z3 {v-ɍz E`\ aQ(gTg \1 MzжIN<}\Q*5⬽oręڥRD O5Gk[Yڄ]k- !?.-@14X\ 4|-!?r /qp@w3na[:HEY+d5O4rF^B(6Iު7)\v{Z~d7MK<*$Gʴ#ۡ S?3V }s~r)IIg')Ia7OSE\: < #|ֳ\?aA#+Q3)~N!&䘲Sc6gP@m/w*+|6/"|L!.;";;{܊ML-2EU9P{[Ćse_4'Q['O!Rp.D-Uݣ(Q|DIޛJ4vzCэ] Yfzv\ҵsI]O5ԅݥ`UHeo)k>dBaB6e%!y}aŶeɶKتo$lDq+@Dm7_"*n~g_$<-5aEP|?ׅ!E[hA ğn\-Jl%i޿kZkrJ!| hRL up\ϾzϺL23R靇̈v_P:J`5|OrlG# 5߿S1˽UF(zTSnMrIq^G\g*OUC͜#4Fa:+| ҧL1.@Iޞ>C{˕؛6_Άђ>w 7-Ϧcpӻp*ew^m9S7%NZ\ɪT-ыK`3 VN@4ݬ.":f{;J=H(z!v~/fVFQO^ry咍J0DL%$W69I={%%h8#> Sش*k7'ցʹ9儠׫#+&g3:7>Pt/)_7F dL='BrmsD LvYq\ݮ+qK?,䩗jͧgȼ˂2Zc>ePU%5XCfr5D%+ᬍW߄Ögkr Q웮96RD20sQ62>ڞQj{~KZ (}zؗPR4Nm?`MB:Iw?R !uQk4#*rҠl|!BE5+ZCCDD9?#NlrLφ5c)#h]5>%.6J+[= % şc#ϼc nHaAqðr G='ZW1ss}']m)>8=)㸷w\JVdFoW|j1iJ`>7r)2}( 튁+jK3?8 )šWq]->88XM`5o.JN+*xwXaf <5&R~p~lcm}:c˵5*֧ޞU3U^ib3 )IK+BtI#)#hQ3Oio7dK=xYJ\I4-?E;!W|ЏQR@mVmbeUOG>%⏃gj鶙vۙJmrl _c*㰊Aw*\Gs4_L`9}aTs<urJFFW6>ñl8!Q. VوY&屪>Kw+>}b>E;j</pL!;e4_ykRނ!4;.Q^A XT ye26.M"rYne@u=뒄%7rYqi'}iGQ8#k2.%3AAjafR({u zr^ZVgƀN:bX0H^S ~oC)R}Ts$Ez!Wm4ߩTJ_z`f쫀S2ptP&n>ͧ{4zsz+~Wegޏ 6FiGvəW~C-RFkW`1=ҿ][ruK>{M)n}ЖaƶTf|[{}+ׄ>^8=GB-q/5fש$i׹Ky,-n4%z.)%v04.}D3&vҠ?UzE*t'gMT/KS0z"RFDꪺ`}q^-.[;Q%{ŝ_'7*Ŷ|F9P^ mHżA=v)P\Tv.T{Ik 8i=Wڎ~GBi4f6HɄi~ HTbey(9H9Po\'o)[ J=A)bGj8x\EhY^SC z}J\1E*9ye-VnF1G ψA.*Tӑ'}FEЗ;JI֐+[ _v1+WՈ8_*~.1isVjkoPT,*ZoȞSfLҸ;\a<98/4VxPlo\m-V5b Q/p,Feɫ T#| hH\[X`p t+g?+&lMg؛ ~ *p\ݡy/DA1ȅ|?r#pOacG i$SdEYɶv6^XJB/}h*gqN4xl4m~FE٣4U\ӎ;Z0ܓ?D R,n݋)-$rmUF> P1BOZ-`t3r"(qGU 37r2έdd\D|f %"."D;2tK*%8܇JO Z1ioKظƥl &ɱH={O+AJ5"" $V`> ;Jbb4 ){[Վ%^I7XA ɴbFaɫe93Qhs y6Cil^@Q3Af;wC-OY7dV>sȇCʑtOfVr{%@M[N8[zl0t@~ݭS==-7􈍼ɭ[c+P RoOɀ˗Vjřf_Ll{?~,qy"B O5X_  o6cfQ*nA%~JLu)L̨ո}ѻF7iwͱ]'NJUuT*VyD9~lB<}Kk^!J 9E:-O9> stream x}[e9{|u@U x< ~n3a?Ni$)u-MP(>w/?⾸=/-o/8}t{oo>ʗGJG]ߦmo߯O߯Kݯ-~5|%|F.o?K >| $~п~ݟG?)/%~_}.0~ ` ;)/SC&Xq8w0ɄXH,:D'Ur@~D}>s, o+Uj̷sh^Ϩ[%Qb|-wm0*nGւh\@j$Da>X; "Btb."*W~ʛVِsJĄԑHP<ݒ`TZQV|-!BH(3h6CoZj#[W_,ri:?֯)uA*(*CZHcQǔaD 1ѱ4,YN (Sp# Q5."ɡ9yF(WDhRЫb Cf&^3q)\$1l2_(3Q0XO0Kesߞ^z"35w]u`=_|iӲԸEBG9PheX""N/0Z1w MgXt>.:Hewx-BဂyGDz4O>&nbRnDfU}0[vM\ ,)BVo~6Ehq!>Ø8mʰzF>D.C٢-r  6"|XߎN<|d;į0$ߍ !~ov}}kL+ѤdMIJ6!?pjGLdۢ1!=KX1Zm V&P3%ccW4K&o 7rn8fjz8Í=_C.lgP_픜3 @K"cA^{p7Uxr G-q i'-@Вu\$4hg OlH|u14bt74IHaTI)8_;U F߭cP`/ͷ|mh$AR7DQ#|g :t(hUTJQ*tsؐC! 9V/h0:ߊuͣl`rx wbZGhH.D,`1mhd+< 5V)eO3K^|rP,bbHc D\4u /~tIr5WD=/E*9Ԓg%Iy'J;S+h}1Gs$G4%7JZCާL#()dpTRڙ,ļؐDjRGZq% g! ͣf6fL1<9Rd<誥.V`@qRp8p"9cBi|(0 Ё Q6'$:9Cmr@}9 ٳ{m(imA58ڢk",lC̸l{;nm3Xy({=!ѽ DeU[]4A*t]\AJ\`"]f&J:rH0z#ƳVntl44EKQ=GvR CS/0#>ti ;Jg|DM7)#PN IU'`fb%ͤLZ@N#:Z0jáֲ<"E:e Wct@^?i=IQ}U^fcgJ|N ^lp/a/ e=MK._VZI^+act]_LP* s 2Y`UthyZ%\;Diؐ?GDm.> 9i }рR9|ʧﳋ.rvgo "H[, gAܜM7bxER[߆IB @Qqt<D]Tq8P:2̖ecǫ8'z:XpjtT17=siFɠ^/\GIG;>eu909bR]R9/8GhjN,w~n(~d3Qc GZrB -"GW=\L`k NJP2΃Vh9,RwR iE;(g;6Co !C*h_1$: "TE!\|#WŦ/6%Y?4a_h:hrG@y&O6lo{@h_ojG )̇ 鏻ؖ-REXsRCR1? G1iGn蚣8xm-Z吭Z˜g`"@|D}yPd7ۀcb Fħwd6fԘjq>$(mk!8#̃ER/WP?P@Q8xF瑿o (%1mчg4 %?|9^vG52ޖPgtkηy$Sߟyt vǑ5^UGD:~Qq<޳9whϱ2f;tYg4hG{a󳵢~9zJjy @Z0Z;Gj]I %è|XSes}s+ vVWΑ;Wq䣜|檕gzc;M8c(EԃԃTVTNaPywM(}%*5w'NJ8vEeƏ߫uT5"]h{3¨6>_Uw j&2. 9;>g`l*z({n%8Lx%W˾:SL9D;mǐ=Ho uc=G{# ?K?7԰d^oEU}"7EGTxjbmC1~-}oI, EeGerCs@E=*'lt|}E^t9f;޾K%g+juA;nc#刃fmmF<\ɃckUۨu:Lܥh Η3J$6]uFgıV Gn>HJE-(CAs'FsDh?DGZShMhR@JTQEh<|¨V D"YPSr]p'HeΗ$YmT'r)9QP> ]D TQ)u1pDU p-|ZQFdbZlQ]3֬V;{pr(U󘣽9e?ZU/@+~Z itlI/0:G1e7r)LGJmVKNlwQ7=Ӑ)l#c6~srYN!eVxCOP1Jvd2EVSQ# g;}l(R8SYq.Cvn-T̿wOQvQ} ty B5qҎ ?#Zn3T }lE FJv~鷚Rhs/w$V+MbkTW<YsFomK\~68R tڶ?dWSz'FzPJKk[[zZBɌ5WZ7lfd%e⎢*ؖ=چ3JNS gr#]4ꆒZI^5(Wp$G%~S ~-M|q]qe3yQF1iCو8*ʌRVL,re[+)a7D)!\Q?·(wMVaz0cSip:[-HyK1(rfǝܲ_{MiO񎷾 jedK˺ml#J {XuŹ"xY[os+;nZ%]#%@t왟EPշm}BYj -u+w#{/L (D 5y 1$ۮv |J[V6Om]X8h!)S5ѭwQ>7U[(]Q0y7g8,i0O3Ѥx>,@7ko8Rz'Io>齻g tQ~pbI"͡wD(}Mѱ}Ĉ jF6HDrN lE095T@a_n(FiFCDI xDm(zv|vJ8\!ֱ|1B%@i3_ gL-w;b-28} WC@c )e[Rcmn:GԥFN[䆳j Rm-]J ɖo'N6J %fvE`E6&6-lhFİQT<0s,Ȋ#d(_w*,uV`4PQV~=3!ΰjE{tnm 7s;"$yhW%= I*%*l"-J0nY31=@%юdύ-l\P8њIVtWbS MS[>6ږ/s[f/5`x4`x4`\P-%g-OVKI|HbSrzq @qsZGms\Gz]{>s~˰=\UkGSk]-S71`@aonM` -5D xx]uHifl(a*); D\8>DS (_:!bɶv-G5רR/'vŘ)PV@}7x/g[׋rǐ%X9oJ13ה21Պ~4 KU$XmT(w$:ᑂTcAL6m(-'D#p{35cxh",I{Qi8RfƐ3bG.e&9iz{^4>hx]y8W<χt%ӽ~+Aخѭ-AD*m[#B^vm@J>mq E܉A=z=**;s+3q#:S |C=O5ΝjIZYZUm _.J3 (FHciAkP*p0ls,7- jJTԃpPwy ~:_ OîZt1/UHEtd__UK79ՈUT3kl&'p\řs)d"kr>pBΎC|CM՚F^%#&'r|A :^?^2*5}wke ̝ e Q-1øYCKT^ۚRmm?Q\J:L mo?*È\Q8mmI /)iT?_DZFj2aD# (^}T1?=W+8wCGR{PhVs3\V\!9VճWz&gLgHg=Dn^,T2G}FЖ0^C.&Du0g:P]ӹ3/* )K20I)#I(!tmiP^4Ǝ]Y@un(e)Z.jQE/2uY$@XH&ZA,9f{Ei_FQm9JڇgݸnG;4bp߬̌R&yשjA#/K(,9QYYՔEbݭQIvE~˪j|-r[)vyD9Ύcad;FE6gz\@p>/~.|j[zEKv`LlI̝ߜc/XɆl>8NsZ-%n@m:nT8̀q>lm5"KP J5Aղ e=(i[+W.,){DA }8]hn5rEһsQrl;%HI`mHIJ$.(Aa[<Ci4[6GWA(Edbx)gKm9ESl5!JU(H"(ϒk"A"'JE߰"[mmzу0 !fSotvQ=BEa]KT2: bɢVfDxq 1òwv4_񒞃dPr6O>4m&B)c.=J +JodUű} God*{1w+|2h%\:n{\yR=ϛJKe>EpD.tNrgN<#kBכJO$',ȃFA^|ᴇ"m5f_z~/&PZs5Zs9Z p\Pl F]EGCճwxbԣEJ;FBpO2]=ӽ#Y4ߑ7t05w[C `goEgD)G7ȯF%ZwE As6Fw11^q[+GhE6L t㸌(:|ӵr mUJ)Δ+!miX4xk$K|)KJSPm#Q]DH#_zؖJHetE3W<%+Є `-O2Ct3!Qu|Iڝ1ܕn J wsy@N *4)}8w)]!,q.Tt$"$ET/j@ˢu[m]QI jHb {AV<`QRQMﶎc42Uȝ/:eKQ`pf(Y#Z9,P[%!^^H Q?k;3US"s-lږ\UZmH>h7޵>LXCAB2"OaB_1G9E/a»QJPh*N\\'d/%5*7z#ՈfY#EPzr3ܨ~QfFrq%q%3cі/}Ql4Q2*G)b_THy tuuA8 wc!]{޲VTߙ9cB[ıuty^ZFn=}ҚfŊC=%;gѣ\1K蒷# .;tEvǔhT9#=Y)^^jT]xQP## }%@ݬ 7J*hGx__U_m抅r/rt9ƃs+ĺGbp,V]^{ia6@$e/FxzXH&j rDފ*2b[蹆 _XEr${N@GݍVzcP4-J"= ]I:Uj=4IF3ˆlқІWcH^GxHܨwXmURq$)3Jʹ}"9ތE KupT|rLcKzFvhCz)SN<%{J'w$Ty]d5z2Dinhuᶶ{bwG*%/xF$s{ȷe/Zrc`j]*DoR֎(AeG늧V_Ԍw>9x&ȞCd2Lq)hS ۊ*ž~ByƞkCM\-FN^zUM?٘C~$`e_{Pj,1jxyH~y|oi/9 Xpg)f'Jyk)ǻ]jdu9Yo鮊J>@fuW-.GlYmqzw(Hv/)Qi'{ۈ,UwpEvĸ $-/55~x:n} >_?So(nLK:L^KG: ݉@+h1s\v#պ(u~ޗm&G{WlO(yԈðyDEFzQ(I& p+MQ2=nn\l ۿ̝xeW_n=OD-q޿̝n['sf;j+Wʉȑ?& Sݾؼt`BÁkLw's3wIpG1;#n~}|6= gլ9> |cNJOoh~|9^IJjCS6p:şF(N7bC$hQv;FRs#bon֖22P @)Ju27Bqh\P Jbn[[7RiԾKZ> ʇD + )E$)Jq@)|dg7:JqR7q}U~WO^%{q_ R4^υ^]2o4.pwvz.A2\Fe빸ƽ4 %߁R/CvdW[<}E53Weٹ'6h-sKjǖLl ܺ _Nv'd}˞.=Ńz[NUb j>Slz89mخخO|y)Q uN㰇=jNV < = % = ?B;%Wr:ql;z}FB~ꅖPm1fu M$(k~bftW[\[|r"&)#IE( 4E|GE|GEq'E\=)n9(n[2MET-"ƃ"".q}7Qy*BAhz*Ah>KomAWrP5~P?LǢSyP;Lʤ@S7xT7zT&KzRc:(B>IaSԈ2㪦NeZ:jkTUmUmUm}12-촪㪶ӪFj{ZVӪ|Z"lYO;qN("* 7p>P zP)+R7J㴷T7N[>Jʧ8B"LE\h;(BAO[}!SDۗ".4Qp賂m9(׃" i})㑮R?q\!.R Pm%:3z>+* b, )3P*ZP?Ђ2Jj>3+$U=8+;jFm5ld[mc%Bm3|fҾm%GeVrTmP.GZТp̙ɔ̇vW}6?}%ƅr4{XMJM(5M֨hb'F\c vU}u^h@)NiJ2 }))3qr̹h*l:RV|}]O(S+;{grpN=|MpG.ޝ5p'p}B"ua=Tc>x;랧{P<t|{NP.R.PNPP JÅH(S'pё__~cu!&m:V#|au]d2Kqϟ endstream endobj 542 0 obj 13698 endobj 588 0 obj <> stream x}]˭9r}scIO0iL!NrmLb yUڽ}h}jK*՗)U?~ۿ˟w?o[2ws>?_pu>B/oj{־ۿ嚿)W&Xkb}l}^K}ޔļoᅤ۟?_TO?ů/ʴ۟緿ߤן<~}1ӿd_@A4`ynl>e%*ھAf&(E;(U#hcHR(@RO?#II_mb~ 僘b$&ALNKLh &ob>KQ꯫f\o.8͗I7^n\>ɋ)뙬|B;~wXE7egQ3-US6Pք4e ->e̩|߷jqjE-lΌ+g +zRP' (ET'(3(Ր#)Ta 0NѐR@JTRu!C)gTFJJ?"(U )O-HVQPB;L{"P ghlH)ؑBY2Z$ eLRV"R W-(.}ErZJ^[k@)<PJE[?!iaY7F/-\-\ PXv?c*{E/Cݿ1 SnJdI xx8$@<"bj\  EmlfW= #ml; }lN Ewg&h.EZaKEb:l?gK,۔~%e/;ї9 *mHXO+ K1HϮN#[4.{a\6L̶l >2BQcڍ?4ޚ~3v r5rKr%'Cn#r]%\Oq"Cd!}:#I}W";94~ZYs3BIyKb-7Ã?|pu~"þ>~.Z RA>47sP_hbSrO%ڞ/<]b(ۜEr"΂l}3y!-*pTjK܈Tďŗʽ_,O<%V/ZҦR×^/_AwW6ާཁ pQ}χR :C?6˾M@<,SG(3@i/ _i`]VN-{q} M/;jc[6}p`sB!Osi9}M8OZs7PGsJqAZwCRSƥ]5-WC[E2R7 X5 ;' Yw B~`Rћ${CH@&!hevsfpfR.⪵¼ Er+Ռ{j RLYw5ώCpCs󛇆Pӱ_;6bRC Wi \<ӢKhԖ7cUɱĘ뿜C'gfJl(8f?#s8qêVNMKZl]K"AJzvC :\KcF(64TrMMϛ.Z51!GHrrC(:.2V2+qMc-@rj߀; F-CPh45"H%vP;̑VV^,\2ONO\ߴ]WcEZy nu`Ƹx5FHr\ݜJnNDy%75x"HMp]rFu P5v55FBX(}{Tؕx"&ē+LX( 灜?W"J+99+&+.6{*II[z#zY[H+Wt Fejen6mIfE vvsJ|g XFtb`DY, 6ȹ J@g:GLrQs {FbZIvAW@<>WRiVEڡΰa}U{!W]AJcPs8Zhyx&

b~arBXFD{oG1jDR ǒ|i O*ȓ8yAjhYAWrf/Vz)_tvۭj47:PjH9wIMWYj֚+HNÍVUQGY/QF.)!(L. wuĪfXw=\ۑu3<:EO߭$U57:vۑQg]Xyʻu{ؔ&ugݝG%š=mQJD{(]1F+l&gZNc ɽ; ~wwހg ȝ}pG lV{_w\P\܃ }rM-^'Jӻ3 <o__yrd\XpPMrp0 2 gA\>f̜o"^%17NѫP"|%:ƚk$yC7(%#V懻ٴGP WK36 vʼn8N6](OsCSE{~~_G4P&3Fr}}ʶL=[p6(ߙBM]V=8ac2ffMаyeQΙH޲4$zн_GM yLdRa54ɁYJ&KZ{H5+%eܠd|?W-(E7{%rFe;eIdyZ~'^Iy 󻃗kS]Ed:Ĵȁ^N Sm,QDz-!wK,2B+z(I؍Lf>zW_ONXNwvt,;jݠS.7J]|E"(0)ud8{\Sti6z 9"zQ430P'ċwVY^J.̯ VrT%fX8YCZP cz2]Jj̮Qjʮ-yr /v: vP#jݷ坏Pss:YR#S׊9Tq*R.nn|Ju tDI+ Ƌ5ʭLֈR^b'>桔Oi?v)j?zowo)]o ]Y͛m$Wϗg$Px[{`/g=/>3lJ w q8mD*RE +DV)!-([T&y;+jMܣ>TxYX:Ř{W9oZ5ro$N0ጊGЛ,&Ev+⌙Q)[]類ʎ6>Ǣ^Ry-yF)Ĺ ^a}qSIc49 v;Bky\7iǍz}4(k=/VofN֋r<'*֊dO1zhtں}r9 -&f&H %J }# Nirb ru)|; 2;cѺ,wi]\r.vnJd 7)u0TJs$sD,ʍ!~CL{M/bΙ:KA9 6^b݀Gs(w8:бFoc} r3k%=z>Fd8/;0\NH5> I-hVAbJ=~dxhq9x@@*#2z)M!2z %4'K_2^!q^ 5ș+wil$͗z/g%R7 B)+y? u "xE`+.tpUj_fKĩd-iy/C`+%NfP;#7RtP+UZjmyĂ{bOjl) U~ہj.P7hO]N)+Y)5@Z' f;`|<Ӆ3GKUn3gH*ϋ %w/JԠROx dтnG:#^U$8Tz|5ɿOП՗~T ];<72D۰gZfeq@Mz웡r'e?$ǮtmfKPPDt 3]Ia_p$[][n[F(ݤnWv܌rӯRV2nZ_sbݙ`T%RW{VUJ.Z5g.}z+%3Pw}=㶤IiL-[ے|שwV;zK]V헒ж E 976v-#WУCƙwrXrR/iXLvtE'ڈ3Fh~2<'ޜ41.,[2|澒DMzHN.3v:PzD&5y7GA^yd=t yW[_}Py)d'VI%ĈrSHr}YxteE*f(M(<< 3sK)Kƕ@r!wf_J"2RѸhe2?c)hhJՌ"QRYέٮ5j7HӁmZ5RbPqZ?3&)m1%DEgXKrjMɓ2}H͛c%bƋYh7h$Mk-r8IFgn}d+ 9E-wFt Yt~(@Z (т~9Iem[++t~>XQ[+RȀ8s fYDKz9hW`WP2z'3 c, UX35M7w*?ښ*\mUI{Y^ %|>TC{Cί{|02n $Kuz?ӊ;bdg$NL;yKrt}aQz^V,u7Bnת~(/{%έ;j]Rgq`]~ú6PwL@IpGa7mFQt6٥;Y+jXUy@1KIVX͌,i5tQ$:%ӺkT(Aoql %׸k <d2 C\rcؠT٤LjK}ܹ$G+J"ZsvѰ4_q\5S7o+ZDZa9LN1VKIrV^R#Q*mP { ɓNn=vCPӘgsYٝ$^>t&HQ2rج\xIn8v[n~p@%jx-$)ɞ.1br/zN>?+婄 [׍>mKD_|<JSZ,~"7C.c[v.7n~S@ܒQΎkR@Yp{Ɋ@rBёp^HM4V8SܡX.qy~C.7kש^;[7*o ?ɱH3-;UN;[ _\;6:%Rm[(ys˦W63f9\k(y Gn܋Gabxoș!5<}]Lۚ G1.mZT~aL!<[/z`Xz䝁>7St9Z-7wVLuvRm²ࢸnXu]Qu;j߻# 38xFҝ;o(7;ƕ@)\U).\H`*\*ǻ@("rR8/Z7jޒ: Oh.ZO>Ńe|^v(*W ,qXL(܈*_9r8٪/W,$jh,Ƚ49/Zֽڏ?";)Od/p)=3G,"i6S ).Z@muKXفX4o5j˅~֣s aKl_ L%3IHDo7A)^].\I:*͆U_̔$5 l&Qp^z6"vѥۄ^zy8@y*+"v\Q4{fSkF'U=rro(FfY#OHj*s =19s͸.r!Vr#`uvݩxR, DHC(B V,[iEP"}z]9Qc>[T4Tzd~&\@i݊~_kPQĚߑv_UJ^ 2ERl뎔 Ajel*/gr&kvƬS m엋.-Yw)&܎\.'vNh'5l!~ݯYH~{-a ɿh=-S92`K |))t |Ǩ0;^\ey{w8ɷ"{.sC8ȀB8S}U׬^u-l)z+I'o%"D$V+L(D|zEbыAjGUϚjhVP4`A'97únNNh ݎP -gK2,pd&y¹{<ɅuΤ򟆴piH(A6 u]LN3RB\Ƽ[ϠuXP*iU0ĩ);'X>Ԗ6!|z)(58?{=&Oޠ&ñ_0h/Z0=!vfa$=6P]P.P!oe|FٟufQ_ɿ7ڏq*PD/ Iݒ[kTk+wɿ$dlΰZ~qrz]D7UwWn@ (@`3wQcY6]63Qƚ^3_VH[bSw4r Jq|]䎺@ wh3aj&`hJ75^ qlbiJ'Lb994`͡Ժ)Z/׋cr.Z'rۻj٠j{ qT0~ȫO2v'w.I1mരeD t}w8 aQjY @[Cp"3owݡOm3 9 w LbFCӪM#RN:.|CRy 4S :~!Eh}2 : da y w&.aw=D7 WuHl0ߟoǼ  aiӤ} w`f]O#LNÕn9ʿI(ݒ)C(8̓y}`):ցEE B3[)ՑDA2GYum.ZFhDHiyq: myq0̠RJ9r1ƌJ-ѥ89ty;J}k JOvҥ^uMRb>i%!n[!g7N];a]7]u ݀Q ה=7 sg`Y-gV:B#۪9@pȍy6J;EwHMJ|I 6{x7 ݖ>b7)\we35Wg_IBf5P-řqSFp?[)ǖP(/VA.g: G :q Mߑ%.q\r̓Ҷ#tQSH,ur+,zPz2I< \돻 bGIiVQ*K!rLX`ɉ#_Na(:XVaՐR}o^j]Dae\fęEVU+XaEVX!LMVJчK7v[wۺx4ΔBM%lfX1??N_O~Ee>ǚ,_eӯ +5_rijϷ5o0@ endstream endobj 589 0 obj 17467 endobj 607 0 obj <> stream x}]e9{<%h*k O2iЮ#T7IriBP(>?׿~g}_8lk㷿%~插G]w4/6|^/kr~WNAC _7˷O-Q?/RE~}?_gu%RPYuZK'X ҆e[9?nݵܱៈnIk2sSe @w,HȿZ'hv3+wN~an'o_> i4x@d>1Qfb-ĩN8E3cxQu)P 8Ub[)h)Tm*p 5By}>Ud^a =|;=|;=p7C=TCɲ*lD30jm*tD+p 9?=p~Fg;=RsDFMCz8QCEU*(S8S~+bĩS5)D[BN NYؤmK; w6 lvgf;F6I&)t$ɲMRذIMhNmmBMhN6i;`_AșmDI_I7m&MN]6Xe ;llNIb~n4)Fe$5?&)>4ۂ5mm)n3R]5ؘS0?!9~zMk_4/B BjN ?L,n]]$޼5h KC0j=Aͦ Z } qw9hV>ś+ f[\| ij U-ߣ3]Њb99=ƛռkcI2.[xƅ"ƅp>s<ֈ%K#sHfNBfx (kqWk8h\ʯ.DuY3 ){ph" e=Ќ*2 _*00VTHs$.(V$wHqK*yDqZE+uE;8"r=\ߕyY#Mz]),AN}lV6JMħג <-TIЖ{FkA4-$.\p;JWJK6"Ug倜iaCҥ9CFE_ |]JRf4ŵ!4*xUa>Hy,VU .(~iJzX%bFAs!IDs9A _:,uX%bau|xIOmxXCJrEBf{Ã+yl}sע )x9w9u[X ڪ4v[|na'.-C.(γ |B~~8ޭ=DҺ`B"73Y|E^"|v.¹ÞsF>.8h;٨Q}9+;Qf:F Fuyި$<>6%y^cǙs ]JɄ'>-k[Fё:dD='ϾvQ(%O׾i&) ~ BR0;vڞܐ(1Zg>07(8]Az{҄;Wx/hK#KǕvܤf'c:&1 >WED@iod֌=E> svpx͈6 :@ɡ~ь;H 8GXPCi_P騤f03H)`7BI%(D{O\]MA_RܵrPޛldP15d޹6sjU!>e1#␋8OԶ V[t*t6%_1փLtiD9f!N ҹ *FTe}o$FH2Їa5-FrL%DH}GGF( DUPCK|δ!U#<9QL/ѼY Z1_/|-JLxyhAϻti,+\^zbz@'W<(^@Uf@熀v5QRAw{/:f&W&JҌL94O#*dϵxq#b)\hQ,dmJ'&G!}vq+*e$W)Ϣ[t&]E~Ϲ ao79 b,|҉R+YV$Mx5e%Ed6LNZ ~C 'JhSA0lTWdJ>T4yMf;{x7,H6Euлq:Q<Nfwi.0R.Fėi*4(sRZkx~San wGD^CN9A'>s /=7QZ^'Tߍ.zJ}]-R;7EqDT *-PٌA٨քH&yɣxS |DJ_zаɗ-.Nn=+S{+Iõ y0Z`|'x/dȓ{([J=Zv?Qg /9wi?f8HHLCݐmjitʻuϒw3NVDK=-/jF^P?qU@9sc"{nP[T[IGR}He-/JiR >!J;]K4پd?ls$žՃ~8o67`ExG ~AwFc8(!w2}vz~yl\q~q_RA悝Y>4TQd2^ ůc,sOPE) <$g8ےWcE>Rhp)~w?K^Z-g Z`6夅 rɕrE{): E-DZ3=۽+|IkB|/ЖKfͻP%Wdojc빠8=[LōQXJ~7 @{Jyf+QY]{FeiDcc[AC >Ԫ%Ne)ъHRx XT,*JEW/DU3߯6MSd#NK > r`m#]:J9V8\m`{6JEW.\Tù!4]!+;`vx`'Ulx.Lt5}V$ݶSJMH@+&8DK"rö5iJx/(%.xɇ`Ujـ\)~zMJKNP}v#"rKQ[5sEi[QPW#}RHxxW;5 .*^G~$ N.|^@&>SmD=W˩=e6Ys@Qc/(@Q`k Xiddc{,maljL= 0A2I9ܶ R(e ^Rh;=;!"̆FST=4ɍ5#LmghM_!9L$oi罆TV d˳U,;WVR o{[ 2o⤷һ.C^ߌ`IFxARNϼ9r-_qiKgW-GU^YƂv=Ŭ8yW9?ƄD nLx䮸x;Hy$CD:dB"8c8ނ4+ ȋOhn+pXkʴ ~* kiťF#2^9EWuiez9h>e Z!_g׮st ,МHVw14Ȋ=k49ԖOogաpH?_窚V#Vf;b;mY ; 7X:H y-_du Fʧq7W@4ĸ!k.K[r+DhXQz<G\LO7%DBNRš g$eӷw%@EYB5 UGZ=>H14 cɞ K +%|ə懮Z\|%Qy:K4mZOԞ~$]n*鈖OJ]eZ(V`O+kR<`%V:V-yFh;ɭ4 V PY~:/Zg鲓<]%\q?pD@׏I怺@F=1f@x\U h@NY.lkK[tmCKOƠa8rj\U=g )%aYtf3A]-ӃqQ:+(#\@q8` rrټٖ,hCq!ߵYQ 5/ɶա ͵iz[>NS8EKE_,5lzS:р"9^׋9o(%Ix[;Jz<;UoF1ڞh{jwC;Hpsœ 62:T-^Q_GH@m]4ٍ-)5-!JAROTn 4wy(}`/&+gߐt0KOF dHkҫar8XIs)*nXuqfۅvbRHʐ'u#\͍aU9|pExf3蕨؝<wbn)Iz) ')t?m`Ge{΂s_ڿ4]7YNJg׈'Vk+[ZWnat#N}"7YcMH]78Me/-Qsb&K[yhe$p4DrNGS*t󃤍(3& GIu(1:t7lKuryCT4x5\+{FR S 4d%\p|҉IwwBNȲpUixo~8ݶW$#iu:d$mFp̎&J,(F" e`_yE:TI)2#os'~\)(m 8 WDCNI)*SrNqM"S|cLѓ8U.=ڒSe%xs3Y1~'LP7X(Ljcdto1Q'9LBߥGidQSpʂqbnɑA_Me.ă9(VNg#!Xh tǣ3zSqCc)^?v 9! l3^z҃~Z[ԤDV {qSc*g zqCƑ$xQg|jEA %-wHoHwDh#=j:0atmYf6{ad,f#9evYFlDw{0sDn0j<Yz~^9yTԣj)/#TآLI4#"9e9"r<(Tmv 0;fGfvn6;$:f3GR^= (S`Q6@C{'^r|oRVC.YX>ћ">)KH/:)z%9aE*ךqh?2R^k:p+X0תgaP%DU@]o(=ud[+ p[,PjCemE9;7M;\Eq4!|NjjneQPwRnp:[dGyrp⏼UUase!czIeGkYrrRy+I-V!žT"8%"Թl /.+ď4V*eφ2At ĴӸ@l/@1AtMr)QK(G{$&|P df}/4Ucm,#WYlȹ+YrsAǫ9\sx/=:QZ(Qv_W4j*Ú4Q[CM!ceHDU@7JQFpw^0Y ҼsJdWQ>᳖=s`ӡuAԊ(r6sh ;]yke"7$%!$9/4)Q(@ 9QA-7`E)Pz}%. _CqfRJ#q kfIs*z\!#߆Y2 P*TPw #ͼJRY,n1Yf~3Dī}x=!gx껍$nm]PM,~kKFr'MVJkNʻ`.❿c6fo0m)$ذ[,`kgau6ŖvX:2.(FI|j;Égs`FUŇؤJ.( ̠ VVYȉһV8RR5vgE3T;QO#9"`^p$V|p~%lgD@зc? J+3n+D)oIxnRH‹>?B{;B|uߺR,Rqh%IkwOVP]2ڒqrR4^=G# 2F!F=sW%$*Xh$VoH{zCIrzqZ'995N4GO4SuQȇ5NPm^FDo[K6~ݑdq$ es@+nEI4r#Jz_"MRurUbqv[!O|GK$^;+t_BI - {^Wq"^*82!U-)󺊏qd)4`zYD )&]@94Cm~^q#XM(hgs Jj{Y?;Etd.u8-%_ycod; X9<;|Mt*G32i/6VsmrF y҈θ`ן$^QNkTrMD'q+sڃ !7Tm&Wr$"Q>ƹnN:w 4Ffh+L[`i&QRW~l}zt2=pZ4MعzA'iG#'wvЖ6V۝0h2#aZ iTϬp=x,D|3#qJwph)=xa h`+kev[R'm,q.>?|#%ӥ{]!DU9d Nq)DدzxB}O}7H5O2Ψ-#&zڪ$Z#h*d(̝7zuXs ǖڛ&e5҅+y`#Wr+ETUm6,"Po{Rml XG酊OovWsNe=(91,>J߮z+ڐS iSe d[+[瞑85L4i._+tAjFx uٗk˛B]Yn.+P+P~{FWP϶a#ԊC B85z?ozi#Ԃ˷P϶!ԂPZjDBx9S!84PBV~(DM!hYBLtSfA|(DGn+N H  !'V7~(hk 1Qr([!&Jd8hEN<djTYq%S8^Fdf%q8QFI(N3QO4Qf7~VfA 8Es+N#V^|ӫtԸs<Π$ jiKw/yk7z8ղxQ44JGq֊ӨmQFgc-mqgiw-$ᖻ5ծz}ay˫:){y}[s;n͉MEX^wvX^g۝x1W185WEX^w:QJoST*r~uX^h˫ԽQFL1}W$L 4eL5ez[_u;_u;_uO_ub;_u;_u;_Uqj(DwB2I~ꉿi͛hk$fVQ&eR_$V&EU\ܾWUT _UȍBjn_UHgvցSW=9|Չ7|]*{oWU +/lI9 eQ78Ug;_U<|UEU'vrrqW:rUxn_UܾWU]Uny>d7n=|uA0nQ{si SU&elI`_yV!=nH,9s˛nqqt1w#JkG^J8"L #EM~j*ʆ,5xQVe{~N4+,[uK%ޡ>Jc|-tݜc_Pq$ൌl~#U$!d*M#˅_%5@ z g7^vm0RxŏW_n"´hTeϾk(/^έ1*ø_ERs?x=1g#楓;W?J[jƹG^KŹ<*>> o˿ǿlCm;ˁ*^۲㇯/ ,}EBEB ϯv< endstream endobj 608 0 obj 13282 endobj 637 0 obj <> stream x}] 9rE[vg qkdM6e?GGzWvfhHo}T*UW?~׿~~}q_s_㗖//__pڝjZ_SI_1|m!y://7^^ǟry}_?/r?O~뿔bww0 ;|s#k}!فͽـFְ[T=;: 0λdЌB%"i"2}c 葇+n@JD(J-+nmEavf K+7FWGj髁42 ^&x'Ny=Kv(.)EA(O(8f.D-PoZ@hBhHdE%UDhBE1w1:1=k엕Y~5篗]:G,Niė-ۊFZ_;֧Ӎ]\p1 #`+P3 v RccЄ WHJgU_/@ 5$r_JV Q#m@apf_?G^ p %$";1ЙCBr>^|;Zzk%ːA}R_C?JZh^m.Tj"(@7&dCOڡ˱f N~VOl]2CFv8 "nĥxK_VuGɱDZy=}CZ ۲]@Pn (I$* }_Ԡhf'5sJ>;V")8Ў N88qlk)p*E9TO >/BעIO {0uZN/Ah^pNSwN: t52tzAA:8^_:NR3̐NM h)o g쭙j g웽5sA~hf.\ГU4SAfJh4rL1֬aiZ[5wƢBNM 1ڐS3J ֩:5BZBu 1"5zNq\_8]ENa'N_^֩w^NySFNa%{\}Ʃn8b;WEh"A;zZ\N}x<zO)uXG)9ɡNQ (.:2U|Y}z%^폱};}ۧQ߉}[羽Rz(Q~GR}wkɣ\ЧGp:ykɣ\ГG)x޷Q*澽 8ŷD 8u(?PQf.6rNhNT@L|k悞hNJB^W勽Nd_* [:Bc©ĉ╥/{HӞZ͎\ŎPЂf>\L( \v =Urvݪ@4{ϜYGf1afj'wk$z#`#Gv&9ЕU{lPttfvX*E(0RmC6Iβ:7mkF $O*SB فX8Sq 5vC2TRXK AR4%V 2*>+$w@- B' V3A!fbRڄ)_gF9̑G]4"Pv`E%_3v2v!/㼽 =.94OW9Ijp518IO  8I0<q,8 *˜b !fupXHŮTTp |ѩ8wV(zл(z;L˔H)|J_!Cn)r_bS=^f/ jLǚq"B󔽦Eh"΂bR\c;<]7ƀPJn3')J{+۠" '+M٠Uo%DT=\T#ho*.qPCGɯRbLIp7,0C҂?hYuѭcxH@~/ Z@ҙ<$ #< Ч8Lj| D!A8{X"BV=̊'>=:(4\MD J;{$Z)Q}$[F2hKUÅHQ$ozQF(\X8xk,yAF0Kn.(wVHm*Gb\_  W?KdN%2@1([jHB(6_0 Q+QmBvBkU K4R5rsC7,-XN,?ty9WF´sY@0wcA?Z%)礇&M5g'y>+xDv'8_#Pr BilrP*;3|z/6si`,[qA9Ԩ92ʀȩ^BZ7s?DAʎ|N'-JN#aMEn#^%rwQw tjrZ tfk@`i]h~o0tvBGLxQk9ZBZqÅMKa<=ZwpƘHI@'eX&zΡ$\PvKU)g[a5F>vKO [z3Ra<{l:NG4eiѡ)(xqDf96Ey)vq8E\x>hi/QVAy1 em?:[o+=V, &VdCk8FVFtS}jf>ZpޚZkub{Ď#1;w=:< $ۺ"2wδř<[ƓԈf0ej}<Y2pGr KőTVvRip-)}^Q(|GA:> ƑOe{Y2q۠yQ|ڄB\D*i:Z(ae+EJՂ<c+Q^J73SEC^Q2i+wL(AʔpstHtq}.K%r- \'{qjL(, l@ i@yw;JrjK%#vA)S^~jf+P+,~ٛFhvVYlEsyYIKȚ+ 8RxU 6҇~؊ZFPEhT bt7)2% YAĪ^pfGp$iZd]*3&"MrnGXV6Bxw3j6ƙ]@|m$q$g,#t(F>]3"|M@7D:46R1MMPޠTW`VmAߥSf;M7a[i'[#n EKgHk.$>rcd O'9GkAz) M{r֣ǖAsp \B @/+}Jq \~W[juPR,EVÕNY> rѳ8#o뻘oN@/6(! : XQe@q=aAPu;.QB=YGlXZ-S\=kzb$9+ɯ mr; /6_KHzZ(_9SE';4u.,U*ާ;Q_|pGzNmcv5mzJe6ٝs!GFXS"89jl*q3mIɻ@9s]zڌy fAШ bR#H*{&Kbd@#ҨXҨmE(9'+q`uWhHR' #zAD QmZ$'Y$/Ն 3k򑢏1ȵ3ʤM |øxRܲ5cE[ X GƅJqK#y રJtJam*]&]wtf:7zΗ;_ʷWQTqV쩳ne Զ%#^ꧼΧ݃f*҃eRݡXr">`"k]Z_[豄%)"#6>y>Y_xTwtCwH)]'gr<}"3J辄XqPkx;yQ m"9$&+|.CV,jX<ԈP FvR X7R` 6IPȪpw->Ao?n83cͰMCB*Xn}xHjŋ isZQc#ۼ[[6KԴ:ŗ&[kNu joU[V)ey1%M]󦌶Ze&z2mtGZI>V/U)V5y-#nϒl+q[ RV .uv:s$]b(][ 1@F{~=<ܪ[ps}gFRk ppiXD]{y nA#E`C~oiw9Z$NӝO 2, ^BƳhmΣ=oyZNH6GcNF~GkHy48Dڍ?_DžEl:.:0;wtrߚAJ.v VHHtB 1r#˄3y- Hl<-$vE=Hu 0 պGzQq,FGRFKgvV}^\^p:_5/mh5S2mXj+Xjjk.݊c9/$Z< =^v4w%Wnrdrh1ȧhȧ :tyW$`n|N^*ߥ/m,JRі7{IZlmp:mӆ9plK1'N x8m,ᴱƂNVAYw3u$eO,ځta9>ԑ̒UIr9B RXR _aUA~Ϋ52~#rj,%28#wOiϜ.A Q9NA>r# Rި5˚TZnK"FA `'Ճ&Q/('#)$_lhmQy92K7kY(]W%W.;W՚.?.kd^(Jb< FbG&stp -eVcd fe-Ҽ $+e}G^BQ5bFȹE]6bEǞq*HVwG :jRVEώ*w . 5Kd?@ 1e.%1;nNHY R5 JS+ Wjf{6|8&7o @bF:(v^7.(d.yE a/؄r׫XQej$2ґT;oRȏD^̭\<ѻ@ bG3KO~wϙmj؝!ࣛ{o7:;=ҍﶭwۧy$u;7֙}pmca- }fD g4C^`vqĝl# ù Q-0I[ɖum983Jp$Xu iܚYQ5(_y{NP'g'Xno`\ kOËPQz!轛I mBFaf7۳ @1cmWͣq݅l?tE@nqf;}T^Xߣ5(|U[Q583=;BQ;(&n`S l,m$Wo@P6ߴ Hg}=^ᅡT0sUbcoiWMrOY3SbH#pd%Th4VvE} =s (\Jʠ e9sEګ#."# ('{)PMA Uylc.5=X JIWMɜTR>:&Y JrȧS00աc/JldhF@J W]q mrFKQzC:c__Jֲ ţPǟURuh7IO66(NJրj[KB#=]Vfrd-8V#(^$zL̐p,.2Jq'wќEsF A"+FU|FBJ#uhcf>g7v}͖(*k(j7d9 @3r)Plzo݃Vvd+Dcj+z D #axǡ 4~lRkJt.=B8K,!t·ɲEe$٠.C͜Q}: xk(Wz '{]~6*B^pY^ws.]lMLY%TN h˸+ȹ+9ܿR/nYzSخߓ[ltGoH=&d[);lL47t$jwouTga6GO}g|AuǍ,^pcc,,Tx>Rߜ1O;etn<3O,>bEQ]v᫸è\#j@gès|$l񠤤O*(B>LqjfgNd+"7l0.( \uxiq3{U(6'ي԰.G49G,yu`%?=f{u0=7,) 6p7ͺO0,( yuWuFtia)QV8β`>m_u[N; v=Ѽ\ok Ǝ(Ki&eeGXЩbR~%G$VK &!֥-O \f̎ges]zgR9z1B\CNmܱ[;=f+xqA \rruI ůrvۅQi SBmYiA}#t#PFFSp3Gqy&yyp5OcdPXwW`vQ8N7ϳyĐA踆$g8ݰ"#^S3 8̙ ^JpEغ+)0ZG]jFjdv=0|(~$-h*e#g= &y55+^TߌrFjkzz" Rˮ9PjlY˭bbb'lOζRrSJhM t v=*@']4,ZɞeY3rp2fTqRZnz(43YkЮN{rgm,9Sݙ7y$d \2N=83(>@4A^#1Жߥ}qq#J>bG嫹l0k[5<{K>Y3h)`f>vX KcSX ӥ{]iMp avXgNUTYVQpbv+D8 }F'o Z~Fq. (TP{^ Gzo]3[-g%J}`䍄Fm EAZC|v;!G_+oh{Lɓ.7q߶;o<#CQ7wG.:oy^hPU s!)YB)n- +:)q-9n7JG+$nO~`؏.θDd:_r75/b-b]0N)8.Gjɭ(vrs#ȀN^T}U߭4ޞ>Xi~ScQ&9]0HNNj Fk-'ɋ` ϖ7IgnVS~8M~^7WMrw7eN7z*r.'͠+ sEE(9岲toΣMvT"E㑘饦f^J ƛHZ^.=" /Y(zU>5y k&7 Yx+U*=NVx!q6jAV7;; N)vdYTJWky*ƩJ]L -ɧ>@CZEτyZR~z4Cx $'Um*]弐!gْ¯r6gsϳ >8{bfaw8K24(Gxm cɪ=8Rf^Cn8['^ryzS/MkST y:!w[A.+e $g.wg¥̸%ClYMk7,ӅQF} ^s7kᅔ#FlSIw&sѥE9M j#2׼tݓa$wi8/]DoĬ҅Q?̄)bKOkeE fX2?Uj+N\I3ԔX=_"zgRT8ss{A|)j."&B rrJ}Y$4'q*AcT.| VoFG(\PFTkoD2= KWHH/g`wD/쨝[Yֈ3^<ۛtJF-SK$ ^?餚=^5aۓ p6RaR]i|3>q"DׇʹfGS5l3?NI0w9JAl9Vq*OL/ŏ[Z_=UqX#m;WƹQXj}8R[qX$' `+@JqUF9uv8tL:Wgʻ0ac۸B2jíAwEԼ Lݾ+|[+ CҸE[C$}Bϣg [>eR{B>RC]"9ECG r*ַE\}q\3F)hyTJSP,1!FE+%XWI6fPRP},StX.Z>.|~!|~R#hPZ[2eqJsj\Dv)8K/ްhY9/J/2*5tk0G-Fc^Tb#f9SQc74FDxŪfcuv?rX/^;q>@p)I%}<|v(v!A1_ 8RC}qQw-zAz mFqf6-O=$B+63ұW=:ZvkݬRȣf녢pf꭭WHC{Ch65){O}Krj9W urwRT?_qDԪE6Z8Zʀ2v 4){ ~͹AXgOwi1} n: vjdpgN GJqkHQH^m={JD lPZY| -LRE?׀caI{JiAǎ.vw.?t67yɕ:Ù+! KBCX\]=GM֝5lMFKS ۰ˀmǓZ} 2\$Vkx\q"8-lb!eҠ5s,X-R#fY#FbGm䦳iKBg3v Gmnq{`3g=KJy5w nwhu>(e;o|Ϻ;As*+H]reR~[7 }9,قnqN(}QK5'D/҂,b\|0>OV%AmImD 2@)iBaM3Q"2φYXYL S֡Xr'r%\be)R'Oz; %Ťg)9}9fwmP'i~wxGQg%^#4=PIB䱦z]>}\JIяYbs=֡dߢ|y([&oXXpuJw"qy4dE2jn>ZKm,U r4[Y܅2Z e"}EfyEZ/))/nB%ֺqIĶ2EcyCMʠ=Ǟ?Z v<ua[C65:m@u4ULL}Ĵ H1O|-i}:ĉ @9Ď`Ec#Eq"l6JJM'|byA)́|ǵ VSCpm0zx,.(.<eM4Fmn89s@M<Iꁤ7U쥍 'Kz Q}U䣰jqqE?i]~G] f7 -7S1Ă7δDAQ +ƄE_J(*:aOdD^*ZG+q w oJb1MbڽIC͠<ߑXd/u+.'+0ߝj/&Ůyo*Lz* 5Yg38;SjݧVUG_h8" 2wn= 6/?˿tѷ|cs\W=/5b# |aMkĿdWvg{,?_k? endstream endobj 638 0 obj 14208 endobj 670 0 obj <> stream x}]e9{|-)MCWWdžxzep0Wgk-|q$KC#|~ǿ/?O?/חY__Hӗ׈1 |ۿ_~}>/~ _{??~>&|)XG\9xv#[q{T$ p%74 *|CH@!qS*8/uGZy ߌ\Nğ?N _(|`߹E :%]{$l7F{\I{#BB^… .c"X@!v]M;u-!wp75,~MB8 3ҹ^+, 2Z8jhvKB|(gB/f9(:L86V//EP;k qy3#a)SEXBeS$~}eĩ$96dĸQqL~ΉmQF(1mR@@ "ҘpS4RR*ҧ_%*a{dYA(a JRNXՈPcm"5r@(H+C]&c4Oe(jVZ̒{6CKg@Pw{*"N=+5Ol7c#:An<+ZwZgG^`ҼA5g&p5iR9Pc8@ ܑ2kdNI>2/FQmmSۆ;EW#pکIE72B)JnY0c$"w0~;g:VvlDM#nm&t`ՠ{RA?j׆jKw>W*8 T{jzӹ4k^@H=X Yo %@ xwN".Q닰E2`I~`Ptb(Eu9,EM7Xeʹ{LH[/Rd p`]ʔ=w?~g'iFvT wIZ& 3S3nrx4bYce8vOzݼ(QHJ@)Qf(5y{}q'St]RfFzG8 GY[4?nӼYSKQ3ى iNcR$@"G8n ގt; \x{s2㎲gg|Y?zh¨Zi"XDޠ}!FS>Fıx8-{Ĺ9gN %`]ұ$?Sߟ-苻 vC6 @5sΒҁ -pH)˙IPclK; omZͅqҊ\/_R~E$9$%y\ k ~(2L-hF18Ϳ8}EGƔԨ?Gփ'ّ {6E)q6/FqH FRF;3{ؒu$RrFBW#{DJ`R(WT1 8\CR^%<#Zʣj6.yQ*h{2Y9rsr& !oG!6l׼E\քY4z~Q1MINĸ~S:j|娩Sܰ}t'~u&=y+㰭WZAtô $'ysз{y7Px3lco"Z< 6QT>7۵X;ÖGYQ FoL<@o4 ybE4O 5vN3$$&螙zw[ӴfR*fE:(y;k0,)5Ycg P{ү]X+83^zdWh.DN)bXlC҉R3KTpTp6$m{ -,p%3oT&ߺiih0Bښm/wyr ƍRrp1=)t#1'rA{y*@rr#VhnG$7p+=kyC}b;: tbGL^;z{gU(uɅ,8\#B)4ZmOJ$Z|2wҗY8s2cG(?3J?/mDJ ZDo @)O{+l9PQ(z86:Dt'YNHq4jMiK Z%of(gtƜDd}zB(U5NWhTU*+!!-Z裂x֢RRP{;-;h"u+E xe)$=oڡRPyI#7:Gi^7i0@H@*,#jXD9!Cl7(xf*G)!kmՆF.AieRpa$rֲ܁ud#t{,iZ @#_@g. Xf):.u$-s>$88y1E襫rf35\m:F/]]fvڑ0  (7P1FݦF3B:Q@84^JGyAto)U+2XGz+X`2y?ȱKSDu镂r>Y>] Tr|QCELo1Pl_CY&Ƿ"Ef7Nݑ-`l<Eq<E[<'.xʸQ=Gkv#_Ps.KyESZ~/~mz[t7K u=z'PIiq`v'qͅdu.c)qYjkFM  @anUeC0vw C'̡hƨ%+t;BڌЭIzy h :g;pi GЬ Bf ̞C0^ zݲD!lJIg(Fk{Pw9/-5Oت IL訒 ͳ }Ju<؆P7M|i:哥IY[IƗo{o-rg[<(؉ْ,nyt6QCZ]oю"{9ݎbc`wFO7Ҿ[< FskxsDi0YT@礛^)z  n(f3WDƱUbeM2`x"Q"dR>`!R4,"JdT"{+^B>T@v1u6!UHn]% @.&!BH ʩXqb0WHz 7 49MMϜ;?`e7|^~T{FVyR<@ :z{bq qNI6=joVLքw 2Zg2TE23wrA?Rv4bdʐl$m2U{ޭdhE[EDd'Z%$z;k%5Me yP9efLIMr)֑)l mS"|:pc\Qѥ<ŠvBvMc\/f6A{z HnlEba0ڱ]#$g][t6yj^ܫҾ# 7SF2/tp2s?4ѿD/a 9?[p+'+dxA/ۉV|„Pz%(2,'z=zc5k Ѿ33kҘr?/V;Gw RԥvE[wW(Χ8KFy"!%-ft7X5Ċ2]wfG 'J7bM'y(ǻME_ KˎkE(zʬ=tߓ8f~+'Z{{}lR^ &aSCL{NIxtS`qd%|Fhő(e7 ] rKU)1/HN Br?52p@+83r" Бp,'(-/B[`ꖘPNC}ԼIcb^)1i $JƛΏp ROيL)| ץ̽J |yZo.0Q_Jq_B(%uJC:]7ynltZrwd׃_J~Gaz4iTGbKGw-7%iYN OCNK(q,%e>\wJ{&`^P휼ķ n@ZPY H JC:qȜwQiʹQ8/JIᡢ헦'y;YJѳ=R(,zqh>983O3驒}$֪'wt~>95N+ LOvW\ĸ ?uY޴P Eyn4K|?fknq.5W)+{H ZiwUY4o9ZXU!ZΠvEx$<='£Vi"u"Zz[eYr d]4,6Su!pw;(I#tX8olfg7d pS].N˯H^̅qh^q{x)ߟb 'FqnQ x~ Dɛzg PF,9f\n˷wK+ۗͅHBO~=HQ ")vTMsk-j="\viU)5əZɛ_B2ƭb5n+r%I In^Vџ3h aC+^YX=3@ľ~,v{{<'*iYUC v`TW'N:>`|D, ~oHyScvcV`,Ѣ_(d]ˉ3EWdiuWV@,Yn:(#l?Z;Тh\5tfi#ˆ|dNjR\%R {@uqvUp3rȼмK=!*eG R\ظDrC _GW[tT%C^szлWЂ^19)o4N\7;! Og"\HR^3pq51)/oFl;}n;OdR<6rmrMA8w+I\N-t& 5;'JvmU3wdcTZ;T:8uCЇ.s{jyyW<% q櫢ȺRQ.UEud9ͅڻ*k5,L+`h\A&tr?ty(y~X' ;}Wu UYJ|M5 VDo95#o5'-`SUL5.E`+EelAb$3IC9xmw;E{[7ZWׯޠ}֯Y7hʺVYao+xbע<&/Zzܨnu=΋H7DF`"}"mFo@bNđ"jiŴ2" 8X7D" Ȃ"j e^ HEjsV'Zx2P(ԱjĩV'nTG4"i=YuʵQ%5e wQ;z}D {ؼ䀴\qc [!ƉRQ-.y+9^{wJG 2c Xg G,ټQ3sQQu<.ctp] "J&!_Xu$PF 2jk5VyTkDJv`L<r32\7zghCq:Ăx@94J=Ob(ZMr7zNqإF/8 U ^Z=Q,;—r>sc~6[V&i.=5a8}.("|9B? U3ƶH]Ak,GQ)z;gɉތџ|VR5,B>7+jPV*iӗQ3KU+߰j/+)Inm^qC4vPz$"YYIn}^k0q"h]Cz l9kRU)ﯬ{Qa>[e{i U)2^oG6?eɼ&B U|W38* ܯoU2O,@LC7z;q]7rGg2C"j!@BFꡓI»n)LbB% D$:wKJ7!)d/-r|,"}2e[D*cQc6+d[yC{ـ֦y6LP0k1ˁ%\=mrkr5[tnmgAɥ")IG0X~Hc5騞+ a^h@k!JiHOR#-.,7<5面SOrl$ڼUѷ5E߲  qc5!w``og72)yβ\|"U}CQ襣䗎⃝x,i'z:ö 2"7!5r{$btDKn ̎eML- E ̮F!#V0@Gx$4nʸѯ)W":"J82ґPrQ$J`o[nqbkgպ(94Ve'Vh:sA,iV<.PxQoI%JRë4ܨ `3* \z[l$hYrp^Im Jd5jFhd)AN']ne{7o8yfɁI`1ФIj͙4xcn$JRgҀo.?l%ƉNzJ7R;FYZ[NjI-';)KncUZ[rlG8gw޳U{$ϻyaMEU#[ߌTC(Ú¯7;pKm'ʱ ,VeRkdQxzߓRIS![8pVO[:t>G}Kl"} jͣ>Qe7aQ #&aʻ=URů0m}#Ec#Y|B~eY\P$+/5LoѶ'{= An=bG1#Ysoo0F 9qԬ"/qu[q*0`F 4.]+tރo #~S'I a|GS|\dC|DžfKEV}m%j̹V8EX5aYoDq*+=J(/whF״MӔs]4_[ ^3QF!HPΌby@t/Pg{(qlıte5ut$VDxab Lvsb7:>rx#*@)4 tzdYPoP+$ҭWuAZD+jJ͗My{rlBr 1&ZpݭE*|Va,G&.߅!*akK?#OSBS#ߦ׬m *E-u ^YE(ߓŏ[ Ԭ%N7}}Ucg$zn}n 6 o xqqݮ.:@}%YJcQ/b8#J9lORQ%wH \Ev( !UP/(]p!ﺆG!~}x!xo # ܮ!q5LuC؟YOJMTy: 墛нtE\,ziBrfqiucyPxoV?QuS?JQuC)1>9y4=|yD ?\H8ql>aԍo{I(kK D-_떃WJ˜FKQ%%I` 1OI)tQqHirSȤyPC* 4$*%5y0ɻS#y^|}PI|}P/I5(š5x -%[+v?>;,ɄtQOiAvn~ݻ͊'0vwNؤ7m'é ( ^~M<;ӗv31약K\o(5I1'XF8nF{,B`T(\3SĊf97shĂKA T2`}Q:^SݴW*v5~@h7[뙽zڵRbAjp@3,3&8 l WJ!5;yb(NRZ?nf`RJ&X-P !;&h!)i\hKz4%sT;u[%uqݐƵf$tIZ_Leefo %^Ǝ#4=Q_~cn_+b 2:6ބzp,_a9>~?Gyx7zJϗ_?; endstream endobj 671 0 obj 16678 endobj 700 0 obj <> stream x}[-{ǩ[*r ӆynzC71Z%EQǮPDh)t;oo~׿۟_}i{v}?>#/Pۙ|o^zET?_ozzznZozzKz9~\o^-'?Z" [Eg7y)y6PWZ <E=Wv|FꪝbE7ɳc ڌhOvSQ(-AO,'@ϼX*‚lO?%.X򪠉{@~Y zJJ\@S)aL{>T AҫUy؇f ]]QQh{b7CF:໌w)b|[2 yDdE-c9ZJXx5 :ǐmeXߢ셽a@*:'l_>a;ho p#|zRtw)p;48 P# 3n9'h@U#|aG`j+lQhEvt`Тt`w'AS/ M.br SA9=A-5E7ck:ZhRxmi=)עRtҪ#rr 흵sՐt&մ-'_Toh>#IN,jcAu>&~p` 4fQ 9To?T>[k6ٟEK ?꙳m|%͓=S/+媺_>vuĨz*G\@wъfq~Pd8dʆ[n4]woFxdDcJ`A_]fJN珚)A2#M(3}7PesF[1"~l(sRZnTgj3dGբs` WCm`7Tā釈 qmz\ݿ2: 11Ŕ6i7Y.>\&{?s " 62_hTc9>j ZLTTӦE m cύxhQJۋ-je $~/3t*{Jˀ |ڵ (6?}GDiT@,ǐ$$E(s11s?=ړFƝĕzwh;vNDgz. ,p<b8(qT`Gs|4z_:40R(~3{s#M1ò#J`lzDġbCE8";KXVN1U)Qbb߽)恮RL1.S]%J]J1W)f^O1OeaP y ^[D{aXɻE-ch0`HF,^2bH }c7Uj'7gRSч3%߄eČZgA`?Z-HQ\;/m%ϖ4(үۛ!8!%GRDMA JvAX\Z $m*Q,K_:1&笈T“cMB{Ҵ 'jى@aH'ZSI\94DRX6/BZҷ-+~ Be՞yJ;+4@[;a8`z 9T' g2m SLyuB{)NdBLrn2ct+YYgm)J{u=lCelbu+WTrͽ@D% $YPxE놴ij1 T5lsLy*GwjS^JQ q2~Y&z3d2>9&Ψ:Ji smsW(0<^ 'mZ)BXX%\DYה;wl,CXv*qM5:{h8C!}>19{&_#s%B"QNH9Q[mCKAKPR2K,񊱎}5)M4Ii%y-+a]y`^}E=ފ}Wזp}]Yy;*V9E[H(nY=jv\;"(iji[~@lmFxCA Um R!DDv[ rzJDl9DzH'ӵCsFQDQR6=7N%&#lZZ g֦8jRitj+Q[qIz.zzYc_L/}1~I{lGDEB{CdSX0UD#6Rf;]2P:E4(K m Xbz9SX(ο:2o m(N* j?CA 5yQTآdu^>u#m< u:z_q]n)? םmQKƚq`7'D,ynt\! "J=I"1$}ȷo*MGl"!n\ zT-^ tzW'$x\ݛPOVSO|* ]܌l":fyxB|3ilҩPHㄾׂq U9Ĵ?5PrZ[N@#.d{#qyN,'y8 n`&F-04F3ECzC3OkErYs/ {Q;  S@S$umuX6Nnj\Xoz2aa]M  ʺS{mIn]Jb^ Ruݺ.ܺD߆QS 7hh-)uڠ 5EkJ5EJ4JhW2h@SvWTբzm0ߧؖqܿ@o=П-Qk;̿zBqw\ۿ˿&&+M?(Z==jyߪfoQoQ[tV%ݿZB˷ [m*.[أXO)L]mΗ\)vHc:FS騠){TD$ kڦRJө`S@cO0i=ti]]~ $K)vJkGDtqMa!d)ܨ%*h)aD5|l4 JѦ(EԤ]ll'zMe*SQ='c񴲰~#K]UjYbC!v` <'x p1Ct9j1wNilNX=x=޳9alN=x愦ٜ{6'fs.ٜ{6lN9Ugsj6' {gsBlNhfs&yH<5Q |!Jf!ȚSC; {JzV2yVe=G *{ԅMm*,ΧmF *kG *{G *{G *MTPOU *k,kSA)MeY TP٣O=TP§J}*80MDmWN:b.(gw'ONiwTX<x'O=SawT<x'O;y*.䩰;yzTSU֓*y*N {BwThْ>~ݯ|' /0""(ԉD(ԉ&"]U6%ߗ7zwNP"hk)p؉ىȨy5_-Ȩ7j0JUtԌ^'"J*'"f'"n""&"Pɕ/_=3xfۋ߽w:]v>uSI,B9c=5c=O9D՘"UND_(_nQRIWFY']]QOڍόU%6+Z{+JѬ]Զ냫Ѭ4mec={(h`8t7(Fɘ@&zA&Vt,tדE}j]d-S^qѢxzYxAH;}_tSphnk ),OZsC޿JXowU޿{-O C$z*Io9ҕ}UbB~b q(j Kq3t({[J;ELQf}gWh'RQPJϪܨ?) XmRЎ^r^{:f"sk+%羥`b0+vW7 47ll?(ui*DO#4'JM(~f]Ҳ0R&{sBjjw'&i9Z#MXڠXF`R刖AoQ+zŢͅ+^j]~bG,^[/l-2.,Kf]}١~i.Dm4ws͗b,Ѳ P6r~[ |3ɨ&3g*79xlF|[܌P+sq<ג/JUlkuLxek7(`PKwXx [~w*+led'tIO3ޚJl/j\c4Wd"è'j]RqPJW'm(+@]6jIUdDz.*ѨP+־'5ӊk:p/%p!*+T6%]2U].GUȁ7_Ɲ& Z#v%sKzw]C櫂oRنKeۉ^V;ЦO*me';G.ȫb2{kUKUO? ~;;C"C^2{@Zb>jAQӶ(~h.C(G\hk(' &Mb٨׭'Dc6b5Pl' _io4.veVRUo٢+/AsGtܯ͏ܼ/\GUn~@WrB;7/sten^Iy WyUt*7?j^GY_ͫ*7zn^mrCwn~|GUn^X͝Wzn^Н|U~W5{n~]GUn~ܼ*y%敖=7t(r󣵫ܼ Mwh/~;kMu CZ֜᫔?f jllę6W}DH~^ Uƚ/BF/1Alo+~McylS=1 z-h=Iw` @ʟG@W\9З~|.N~\{Y"׷7#2q}ptZ\_?ܓEԓYH%&NR$aYJf,Kbh/ 96"5l/&< `H-ei i'zZwn=fY^sOMNt؎"wf)$S&e\@).h]M͞Ӊ*H{=gC_RC?'=%m#ꁎ'ӱeI*{\t/DPP8{}׺[f-ڰ=i[j/&f*RϬ`}D H,[0^Tsz(EePԆoY> JR ]hH]|`J7F# okN1fCFc`sS}qoGZgD|R{Ӂ( G\q7~3Uk&~h"lb{}bKH)i'A! ;PʂZ쨙*U@)4ʦ (I..Wķ}Z01S(kF+sᴠ e}D(19w!aY:z$tZs¶bΞA&B@,J(h`̵ @lkU~'vۈ(<LHkI_j"Sѻknz/E44dQd5Dj@B*Uc{> [N4Ǿ )͑abF0RњI-FLHErb"*a's(J:uNWѩ#rsOwN o :K:K:PSNWtj])U锒*'])MSd9Q;ɖ f5l]V&[ l-)7&[ZKec2By@el龍9Zs ;.sexC~BK<'7,]ٰWrς(-D2NWIߩfmZ =7Im[Y[c>_od*7re߶odF72\ž ]ž%Q}#72}#]Rپ 72ռ7"k}#]žž,]%WF&toD}#lCtodb }#S׾b߈7"}#ʇ|߈e7"k.}#f72].Lk߈,iFLZ}#R c-(N}v=i@Ҿw/`S1d rw Ş(+5F'4ЍkaPlwK>nZCMG~}ڗMte"Ii4 5D8 گ~Q|bl7UoНugp|6Cլơ6Us]r) g%Mh_kS=)+J!yIQ _;仹c4toz(]v cLeqOH(U"A8c.IkcZ29QtR:vvA8uέ3fV/mv5|yc1h+1~ 3nҧ$v'zk.اo(dD2>kaE(ˇ-Î^Ėc1P^:I`tlcqdKJ)E%=ہMY;Ψ"[m v DȚi$̴R奓c׉-lۘ ,r;q vJFvF}n%"( t*3UnGuvD{@Wr;M7gPy8fum*'Y@TIY1u Zh74z,K;"t~)|eU1ER%Q5 PpKD(_?)}D4BfF/b@- NFRNP@(f|'W8%Ӟׁ^mh `5:"bО(3@9mE "흠@c&:In 5j!^@vb/WA~gA;F"D__U7n{9MSʹ!>j-E*42g߬ =hqDوh(q;Aqq tEq]8!MD{n7jAKtJ*_S%QjNKt\jnԼZeick_. tD,]- MF/F(ZVs/)y=[#|[T~Dj%QvD7ʮ^S%}NKtJ˞JVhG.vhc~7vU"vUX_*m*U)OHvUjҮ]R=&Y'^dtB6M$J #/_>~@Kym{V9cxXTkUe*xN\3r` ̯-stj$mЅLjDQ&MBS"vbY**%9=Bb;mEχ^j2H/sķ`(@ZWSYQjٕ!T\'ʌg~}W#9]{ ?Js}zW,K,5c{ieнҮILbkkU6e9{HQ֛aLh|*z/Ld&wJC6(',Uy5tqh3Xfe߿{-[N ƫ A4DjiWEO Mɻ{zI$*Hv&B+3)(]CҧOJ}Čhٯ!j)y=SpVqq} 6%e/Aj UKr@^ u [P iJf^JhRj ALd|ms9:MOJqِC(I@eHӮTlKR'Iלm8WRYbʤ]EW 5Ed;cYYh+A$qh=avÒDQLNjgl` d]*%h&m9ړ=Jl_BEmSk('#wĔӨ'zN-A۔N4F :U/:u* %Hic)طZ !OdHFNOY^* E:]pLk\NX r'q5զa|-od;֨j[AZMµV5G=fQFL!kO 6iSJ5(^l*ΖU^ɦj=}PYXkn-7h+4ˣKޯu4=czĎ<n8av9:F*d G vh)Eo|0ڽeln{R`S hPOj-m.|0EffRE1c(zkD?\iĵ=cRѓr˾GۀkH!MkZmxs}uF[땦c*B_1]ѭ8yY%G1B8f[UˮcH!O eZRQ,{G *gVlST.[]ՂU%:Uzl O a*KkeŰs#qZ}̾iҮB¾=x@U*KwcV- W@mq gj~芞U 3R;hͩ,P*]clUv +=9EOb:_M v|صdh=a?a ]7V}WzTmG ݅8Ջ3%Q&姇]z"JgɃhng)l9eeF96Q=4bYw5ׄ&=ZwК#(;vhQMv^2%s>rh#:zIJvN?s܍9ؙShʟDy);ĩ?ڤFvr^\iuz/d42jK# m" j*Uw/ag{ 9Ch{+kMvS1%jcmj b2fCmRsFSg6ǰ9V]PSɵsJ,(4ŷ'lck]VDT5ۭW|\6E߉iC {@W\|"?(](wj|%洼ֻ6O'`w%w&`n~@by7@WyעEcn~U3O nVz75*Lϔ [L|gZG2l\M1l)VDMaYgLMs1t7 7}@2\.t|t]@Wn:Еn 7MGkWnu7j\*n:ʮTt+7߽to72n:JtYS4VnnPwSZwS啛FGi x{1f1ꣷlǃmG榪fwQ6-T՜ 7 "wq7U2*]ֺME榣kBME{n7*MwivBWG'hjzQ)A;1GFSwcDJ`5tmvxCIUֳl;ۡ v)v N]Rv ~g;=wC^v(Kwg;ĞPzl]4o׿}g2Jxc#zFt$/\|k*ϿSk_~(?ӷxj endstream endobj 701 0 obj 13135 endobj 758 0 obj <> stream x}[{|c/` .=0LOi7L 1ߟ-o2)\Nl}BPD}/o~__?}q?◖G/8}t{O5}/%Ż<>xmI~?~?Y~\_Տ/o_i__[?yoKP}ͽHy+aVP^hnЌ6mh;954%V.hp\Q_Zp"=#@"\ 8EЗl5RNPShhp ʅS)TBhԖ|ѩT=TGhEN[BN!=!pg.^t*B}>(EwwX_c|7XPܛ? ͣgkIc>E17wlm jX06h'K@;},GE9=|7Ol5?3qB_vKbNd } )eGWG+`m Of9i%O]v~z?t9zNe@yL6Ўk H s" J H|0 c -#$\gflk[UgZF2j+$ĊC(Jm2b_e48I|eGpy  Y>>dkpސKt@ bq< ܠ/O\Q@e^*EOC5MDz!im4oU)xhC {"7CDZgNp8{8\Osﳭm*450ɣ C 4X:l|CKa\po$QUoObLrlRz\(`:rl0@ОilBZq)Έ.sO;|qsU>kݎv:mNg:pKa硣6ª.Zh~4?V;4?"5x{OHRz`gs9i%CJqaaP v thl#e/+a3bKt~f}Yvz᯽[~5&)@ >y%/|8迧xtJ'Պڑ^ _&ntgy AKe5x >DC\/aBhrŎN-:bG^Njq86#=|pSxz(Ys3crkJH : -V"WeqG<`7,mLnָ-ZPTUow4΀=ܻRA8hզ1n;dqڝfEg/SP"5W@hjy(U92]-$™n<\4Ċʲݷ+[EWC-"H+Bcrhc'ȱqV;EGO$-cu 4VysB)@[q,B ZOp-T[M RrZaq,M#>XrEq†Vz\Pu]<8r~T/sFAӑQS5\nVaxo>ֈPq54YspʎP>&=MD(YPGeqw,氹?h9w阎Yl]Mz6T; nF Ú3Ұfr<# 6/k;O JY#@~9(bUvpdKYe("sEuduwjnJF5_>2<.<aKGȎPwHHjx.\mhy㾶d|Ys5Mcs(Q[2)- sJxaT!)@'":>~`#Vrj=Yy7xKP4x951/Irt1FER*'!m8ozd\8ЊK-^GЉH.: cᶦS5$r%GvpS. }eP݇vh .hRE׿RG ff.H2xHZN2i|dIkw+gYRl%l@@ :-fF܁ EW]@ϴrk/ Pgt-Tqӥ]XQ9VM ygTgA1zޙPĊzB7zEB́N3QK\# IM 8ABt -T9tC^ p%p:z ͠xP9ŊiDި9[J Bq-:]V_b'}D5G KkYC1X<";5oʸJVtњ*PEik39A:(9],H@j(o^@r77 ,Jq&Ym*FrzMB)q8f/{n)-*'aT{;r9&WpAޒΑ Z/sԛV.kgX=s[8<, U =s[w3$ /;Tg%wԮ)Zlۋ,(pj)vf1*j-2Ty96ߥ#L4JEfiQ !m}3n"85278Sfl僑UO+q5_/Ġ1WE{ey SfG'? iZKq-9EC(%t^PBGB(x #݁j$tDUh΄(3'rHG/mc{1yL&5h/+,g- Nُ(t\n5RArխIfPzLM_5 >&\y%t3kW#kWs3D)}5E ՙh%^M ?t|KdJ_GޕGZʣٍ7NjjTk=(f%Imw v :"#83y 0HL0. r{)BtL ٷcR \(py>.n>e: X ]ra!^9֋Y k^Ps«/!QyǪ/[)z )VW 3"%VgE?4Rޭe}fW\9yfv5wP<}$$;Q, fJ<1-~TW?=1glbA)G|f{A) —RF˪hb:k,ٔp)eĉR}9Rm([ ђ+I5NJ9rrV×2fM.O!va6 N$a^p}QvVD#9FXC1+Y\d-z7(jD]r۸=U4T2oZ F \@(f}<aՎEcx2pk7T5"Wq5=^,F̸a"d@u)k7 ,ib]c՟#Q AQ O7t2bS.}BԦNGEJJBt}(j2M*(yV7rSqTsk3.Dz\z/sV oǎ:u&~݁a[Ħ2#zH}c|:}e+ـ-_wOԇg YC%r$6!V1lY p6()}x񂪮hML:Epњ|Oқ5يI."&LoAсYBLb BF9P-=VC_V-kn41~^tIrbkYGv$Do>y룘 YqZ95nUN;J#?Ql, g 3v϶AP5+y3f7(FsMPj¨yǻyڂE_zHhzzWKA;r9ALyy3E~7ZZ%ԘhI:*yZ, ͸LHotҋ_VH|rw[B.##W7^&aɅ ym:bnw\&R7 x!o 5YJe,F*i~:!o -~s*wpglLE8SM!De׼Ċ gZ7rp2mn g*\,󙪬uqR`JñL 7NZm,uveC7ihC(&J3%+'9 E?&B7 پɼ:9* #d4Vq&N+P'EH97+ؠx`V*NDȣG5v8VclRrwrLZA]IPkh؄ϫEuk0up؉Vz$UÎP*wX$;. EpajF8, DB(>K{`⽯kpg"Fk.1XNbTʞv.ue nPJE$wk5B5jA酚Cs]yoҡC!₤ǼP`aܸz? {2{# nW9k^;$^ũ=(9\m,i'z"vvS}xȊ}LQT3Sz{%1EehXƑ$cJ/{%0J^;lW {~u~}d:v_>C6H~_= Xf-ߣA BQⰖFqazS?Noq'B]]#`rl^{\֊ {x T}4xZ˻g6TE%~ Fa腥d7n6ph}9ɀ2|.c?;faXj)AAPuizOJ>##f*k115}(%oHHsz-;Fr[QPߌU8Gیң%7se~dcaN^I ޘ=,A7hP7 ;$ xz ݬv ,B-:@ILX<Ϳim@.(5d"ݭ$yP3ѧ, J]еĽ5BS"&@ %Y+DOTzzh^j˘PvG2hU١Դo7AɓCGdO>(?74ǐԖchDieMK2(FQ`TO\n&=Qn.&Ngx}JNݙV&\14MAM:EKLV)A:7[EmIktk @jmwvrC01LMVVvn*y-\iUc8toM1IWSD='E˓+}J,򦶙Q IO]ESGE_GP[~G_VZfIA&[2c{l)Ƅ~Šm.}mӖ6긃k39IyQucٷq1qx&I^E ;ON:xB7&~)5-;h"yy,Z\Y zZ-1mn8Ֆr,` n6Lv O!G,C;)Le,RF+tCmoDBFIr vޑ,mzܐlxGh>&תX!^$){8Ʒ8n̰K++O,96f3fR3b,Rz#HKmQ8i;Sr] \jָ̰|`?mSӚ?=2 6"KxMW虡NP1w vl1X!݂P^G),n&?vWȩn}h8ngAa`| qVtjbY1D9b80p'P$s(٧;:*hw,C^g)v["^,pjb)響4ASמ HqDz D !HW>CF)#v#{V[8rvPcW, ~3\Gu\BY6@B(F},I SuO#ʯMEW5۠lMěmKFIv'VSa穎8_3(z@489:*`q^cy9{ka{rBd]lb3L6+W)%Q͗Z:eypiǪ#H~<ˤ<\=/K .8ׅyN/S(;мB+@9<%tEN[o)JOEz8$Q/8#V"E_򻥶 KCWj`mc(#*h8/9Έ{y4/,jA PB\Z{Q8ܵ ,\q*#ˡ~4,-qAzy 5 LQ$^lbǥX.Z%AipFՋF%Z#c%Z#[tn&hhyIBGֺ3+>'{)R~9F{m(mNVP#o(e\E@gT L+edHyw}!o[.L0'~@D5/qɯz{tAisw#dK](8l5UnPg-0(p:5/(=LJ砾mDr"t}]*張>EkCWkjqnjjqբ@Z\r^.Fz\.>^..bx5o; x"AܹcA({Xؙ襰T'mɰ,'NII3XT")|5B/W綼k]Ic& %rtXS;vn̢wǾ07mqmy3 Hr nuA#xjrubu&H}^\ DZԮ$,JQduۗ#^+%7jҝg z:tIu-z.<4YQgԎW)0O XwY黩 6ĘPn_t2Kұ)e-! |t\G[uX G:G}rn?tr_#'_?GRpـ=#-'sV\voiy'H n5_0y:N;}'wC;@1>;[+mfAKUDpsDZG>/wjLy>׃dT$̹YFg -A:W8QQZ@|wrŌ@w>;Գ#m"QڪGjY$@ZFZBԞ.VўPUyӓk@lcT.ZgƍиhDNh'T?E.%A̎HVͣqY`"ku$-"xiUuByOD*$$N):V!sJN=kQ9r`o)}\B7A IQp[#b^5E|5rE3,*YPa\E,8-dRP'[W`d&_9dY~u. ܨ#fA'mћ@!A8B:ufF1u/h&gg{KI[2z泣S_,"\7 4XT 6M4.~[*Zg p!.w2(.#к@&71եu 4&8=6!` Wʎ%m 5k 7崙F&Y.#;zEyi{0E,kAHBWb(!J<|yuW2myQ$&%UbY>7!-\DKEV#`Yp.ҺB$$=,0Y ]1|pUJ!NjsgK21iFUYZ(`IRfzL}\Yr)^ޫsx5;g˟;ְ5JހX^cU_峘F- Jr6 > @Q|wti ڜ8e{vK&W5PrL j#/ w.JaF!3nTQU5V̓PiUJNPrq+`űzCE8E8(]9Q7 z4!*#2;"*%2JpP/>*7zŸDѬTքljrg@!y/,Bf+B;HЌzah]VlUk>ZW~7uSF2Zw=F+mPjDc+v8e' 9yweIQ؀6ܩZ1KN.DE@7]VpR~f)=rqMs;9)#ETǔX$Ty%fS&.ovW ZF%܅rt7^V̂B/b- Y'4 ;530>=3 D30>= 4 @=AY||hڦp# ! O3FS@V;o=)׽|iDžӦA1OW.d4N k$\7 Pb|zL=E׶67ǎvGLCԋ;}usl˕2Xɣw[U)$`?#J=6=M]m})n]Hڣ|# š[m0I;|yWrJw,ΕR1[) nP$ `MQ3<=!+oyoèR$);IxRʺ5.g'7/FRH*d,Cɍ5sY}ҾXRZӜofҦĺKk-GO\>E5<@t|[3n5ul8I>eՕr/;[S[QKmyohƪD_9>Kn\6)?VsXX\P 8QDKǎ7(]CˉD tö6BnRyMYK2.JQ0: Wp`Om\82JץfTЇJUj] GL_Z}QC2Qri GOJF(rfxFH`4ީe˘=RwxQNU9OjނX}D/59ZQHNIgV,ygKwB׻ʱʌȵRügYkPtJk#zo:k,e9͉zo4(_8).t+XV\At7K fKq.26ΪGv/e (,Wgs /`Yjව{zċۀ]朝K4QYɼPBxX Jږ.A,lXlxvڰBg^Ĺ䃍KMk|I5=I[ݲ8AwZ(m!V@zDa(7 vHg;N#;W!PjP u7g˒t4[]WVEo<\Zc 0VS!P}B%CF:"DUs'w* ],'sd oC<L?wzy}=ͬvfAÂ-BbdN AzlPj7nB}ZzA#%!tyd?y\\#ƼSB1. q~ HOz|V/ޠYkSmQ=wZanr\Ie[/uZ%=֧QJ׋FmɎ38]#8GBB١@>s*5rIh㠺9C/6(M:hNwP[qg&/RBFk%uεtا=]~2.cg2eK>v^te)EFC.vuԁwPN6\٫ VI6<)zu6dR6!{y~cˏx֊ώ},H{*8t7 XO/Ax{yG8cWzKzWs )QD&mkQx$ozHQ!Eu]S-2o!t&YFRFKWG '/i*)k+{__??{0-34#5Xc0/|￿FOR~qOqa9 endstream endobj 759 0 obj 14411 endobj 788 0 obj <> stream x}[ˮ}}=:ݞLLb0 @a~^ҳƴT)UW?~߿_~_{kҒڿ}v{O5}}^#SI_ o}y??/~O|m_k/1|u寿)ko?4vXË` X#_v`ߦ-L//m@;m. F '鲛jMB<а nX/ /1߱ߔ_dgP*WҺVWw}X5K^%8;w;wnM6/^/ 9 wHԂPEC)#PIpJiܐ I5P˨ qŗ=6!w҅uDynL1HeM!-B9i5i˅fb%;rV1iӅ9y%/zj}IO O[tRr7)tQO/iYA"RJ3>et3 ЂgaU.$$H.gDjEJqhQqd/˧+;OG}ٷϒ6<>zFTp8܆_sH_P!(~NCJ5(;՞_2v? |χV5!ln9&߃[$;&KPV!nxۮ_Xԅ/? !gҺVk vD޵3jݚ37; p执FvU_J ӂ W.O^a!~#- 8f~Y"%#}X qŐT.DЦi\=Wm0/VP.p%׷|.׍_Q2W Zckb.F'ZҰg}v$-Ҹ+ )"VAV黪ɑn*@{yD@g͢'.2Bx vՔH %)򰫞9I@yD0AEfRE΢~56VfP~Fh1.w%wrv&.j  B0g fR>!(>E/5Gťrѯ.6v~ߩί_q,q.h& ǢoI"1H +4=PQb{N_99=3c1dwѱk !HR.KyI2TwsRKNi_ma(xq@b{5+a=CH;!qɚ Ϊ~8O1&[JPPsm jA]<<}# ('{%7N Bo*0V#Pi6nBj +mL(7RKkZnih14i$٠ g;/9ę)7g (CXcLnQ(@rAwH'DiHEK1^dw5{ -:Kf(=oNŃn6}D'A7{ً_z#/:[HH+[H:z T:wz]ẄsOݎ>F&0n^[2R G'>m(Di \,{+?ǝHD N2i3pK>>o4 z8}ii!1M_4V_X3MVZ7e19bf;vn.ufPpפyO4YKAjxl"B]sQHg @Wg]X݃Erbl[yb5)· - t=h3ΜH󈳥+`,QdKt=9,5/VK=Vf;<ܝ.LEs7D/% Й"!Q iƑgPxɿ- 揠0beElQAK#@+RFJZ@ӅDg$m0HOn:>c19Ma/]3a^# +JHH+R&blAJZlH{"?" \j3勝H]bbYB:R2ċ0j㎬D˶#kަ.7eqmے xêqÓh'{tRe)<3keΦG9(>]isH3wp1XH_@ 'C&}ѡkW"Fջ[!qKbvucA1"9$ T+Nxq(|M_^1g0I0w-PEMWa*KE鋾c8$*@G O0G 4Ђ|US#޻HIQZ؂JiGDApѪE=ڶRV iI6D=v$:#nSW[Q9r[.R7V{RFXϣYd363'tpBdsMi]lkކ:gWjtF2~է(ֶ5,< V!_Ndr0]r %"q4;elZqzŨmI|0In4KdPKʮ~`؃ׂ^D&Iv $m&2"Grjg> we5o fA@JFc{M}- zÑx$& 3ӧb0ne[(~n@Ǚ)g±َQ[ z|_wAqGhE ʂ@ř2bGYYq%%.W8y܄/CQO:vR(I(ŴD ̛+R.RZVPJ{> xkA^xgu8(ԞA ќ7I͊P;A|V"rD(v6Gt3UrsB O {:n0ykVrf:%-KU( ?]n .+xT+tD L,q\.z0`,l!꣆KlCt/񯓖W2g~F 1l nr nP:>Ԧy?en#4%~3H>,ċzz+ܠڎk2rlzȄbGm{7B1ɱ-bXo@eDi~(r{|9'szR-TBm@GNJ%9DHVĶA)5#)*#-A*X#%svR)BDJ[t3i= [ tT.<¶|I 6PL7e5ǽR$1~VIZĄtkDVn BiYIӸJv EU)YvZBN}p)Z$.V!9<8-+$BTJ䋵E]r]7F' U 8=rXx勤E-~骙T$[Qe.;9LJ VƮ1ٴw|6s@Qc #ӊ|7 A.ݠMn,( n=tpu3L7;0pϷrt;a]qi$GƿN uMJ.&eqIݛE7)ls2_t;޳Qsg7x[CkU9\Zq 'Ʋ64..ZmfҪGΓQu~QG&] Fi76(I(X-N4VyQb!ԫ7^22g[& XzD)S”ѢJƱ%Q ܨP+4Tr3{oP";n2Bi$e5%sa~/(ޟĹj -ݴ&%f'kåF.21Z"y#/b֮ș87 +5RH7;!j3x`ۺ/ae): J*pFZYQi裯5dk }$5n!-p !T)]΁d/+:$Ut :JfFe?ߠ rTwj.~S1nG9So<4=D~l)|_@;[#͐bκ$nPr1+B%7[`^lg<Prn1Et 0[q!7w} }*`k ֮M H83MJtJ{%ɱ/A&ooP H ]wR2T)h,}SzX>0P>լF`UU))]3roЂP.:^1g3{<43#fG쬪7;YSj~@Hb\jdw3WߙT4Z踟v^f< T!WF(=$wFWUe F)mcDΝy(4}c'x+aH)FkL{hQϾ*vt c=469w9Ap'y)/Mf.׈2İ;R7Pц%g"/Mʼ6E6WtI&rDMêqn&hMn]R]f$hql|q@hCRp)R8,MЊyA1Bq,jΖ`;J[l+[U=[d*dmHd!{bN* Ǚ3I>.hCy֝x;!χN |(H 7~bм1I/5eOdE0x(k^:x2І%X)8-%m(q, 4DѢ/DTN.h*! 85rҖPPUb5`RQBd-H2J3w)'l%'.H3^qV8ϮIj9%ręEFQiyv`0RvIj, {JwKwY[i,%e\E:3)!9g sE-Ttv&{a; IYQJz ]0E Ut`4Nstj2d &u [)J 7[qۑTFx9gCI|CٚQ5sVuKCNɡǐH[?H~ꋄ)Hi@Kr%?@Y/a(]݅xCgzJ"7-QsH~\[ 2ڏo ޡuo/5sq`pG0A%V=ԯY׍d}3)c=#x'Z+,޸~3[Ͼ3AO^kf^RJP&u={m,J}Vp&>1Um~//"ޏ._/OvgٚϩmPPW5;=Q xFshv`AoZ(JWKQ{㬥&ߕ$ǂN_NVH4o:UMcieք@CIj|2` z)m'@dꜜ;TB┑[ L>}A|܂QƧ g7A+#ƁN>ұWQܲ)C!y!x5>Gw|lش)C`}ocoyi;x\c 2Q3 aouX[f?]ӒJp{R.z޾SzWͻEã}}^dAgmo.(ǢH3/E`ERF@77(ɧ"?ʎm 9҆ U wuM"e5>΃IIKyN(x#΁z>߂f &T;<̻X%tzke!"YCz+S+J3vQG:2ISq]rm%:'R 7:~8؂)ܤ*E*KH)*mp/M|tG,ʨrV!YVĪtͽ.5O8'6l*c9uȣ;|cP|rcVC;dĚ[J`eQauaO7L%)DvYNk^3Rp ns'ոxtVVA1:H*ڋD>vq"DG+[tVXJ@*snap(BOQzzTJAdN\7%8lqwǁ!DbޘőPBi0̟:>(n /C>Ͻȟ[h~#=!%FO[sG VgvԾT8u_P*46 F\xfg׳C\;nэT:Xa sn_p]Łww|BIg0!JStZtX@.k%AҿWP?Q5֒\kOnc):ޭ犒{gEbCzH vI:_R[cݷk=CCxrs]"k~~)*7VVZ\%5)F-Yg9͛DJ׭@{˷q,?babG\tN١P\Q#SI~:_$'ՊP*h8Wr:a_Fy`]`bqӉX -|flpFΉfl ^7H{#Mn_㰣K/['m^*~GMa83VTStvcGiǚ JA#P׊<6scԺ֙PV#f$5F̠Iǝ\94ü]c)UZ_t#M";S"ѫ$UTet 2tb7Nx+=x}^rgSېtjXkAQϔmamRRPOYS{oY7F /u1z9UTP3t9Uu;…7U)39 \w*5ę^hxZGf ١?B;XcU@|'ݺ;zȁb d 6 ߌHf mgw|8+\2ö(kQJî˙vw8.;J)Em#JbeʼnraGE{]J^m]y@ Jn qD>te.XJChHη8 +[.qr\弑NoiD\JK:B9"-.R~4ݚC$jt)G:0Zo%rAޚ6JuE7؀AP ղ#1EO2WɁh{#-Hv+Ʃ $,xdyoF3(: 5a}H^2>GX#}H[dRQPΜD%Vn!}O;H;0"K~izRkI)v+,`ÈbJ]JM} = EψYV=(%;J_BR[F/*%T4'>u)5."ORT6(5A/ ^M_-~HzV*IJ#g*6SLt|Ax܏'׭4w;F!?ڰ"1giO~gI8S`<ݛ4'VoLA/ ,OdeϲfUeG%S"=Z(s8s '5:WY*O7(^09Ú<&ek F4O1h{`p`S7j;IքR]PfR# &= J5rcI ++WT/90;On3S-y Jo ɮaY ۺԌ2r tv}II+kεA)*~:a7V-xQ8x-N1zu ko@fh4^ NgT47i=)+B)xѶD{wmռrlÝ+#p0/ɉTKސ{8/Ea7] GP)Haԃ4mc1|~ŨUKFM"ݖX_ Vd&8nߐ (G  $oq@i;;DkrtlP?vd٫r4N픠I-y__>HOav~܎1*Lh10;Ǚˑx6cbǢu88ªj݋8Sqz="Ć/ l.WHkruxx[ EJ]zï.V9Yǔv:&k-w[h]jn<ӏ#S75G?qbRG|WP[ݳLΪ-oVo$36n9QB BFTXiSۚ׽)gSFP:k) /b|b^OO dg q~₉JFGrsYM=3'Æ'^o>a٢pPg\{NJ0]$|BGjIeoؑVamqJIwDAԺ`/鉸}e -3Ї0CWϸԝV)>5!8R;Yv8H)Bf;8\vm>0a>ck3' ]2n2|Z2^xơjNϔևU^4&%zRXMM8Uo;; 5~p&LYu*s &%5Pa^LdPϥ4l,s$ +NKJ}@)Lߜf/Y7.{r< GR#qRK, y|C5ϪE6 ŵ"ȡ|oĎ/0r{ck!+7#rG7`  $. vq-Bȍ@%>65RB.+/WRzDIcQ)9Pr0жF x&f9CίLnPZ6iJu rArC 8&i9 (EQ2{BiUJ\ ~xˍ̐GQA9" U>ZnVev#kt(Q_F~ v#iP%U[E# :aWE'eT3*7e,g e_#۳w۬] ,S|(,g@U$2 );Ao){)^4C)46S38q4j{{4ـ(i?}rf~mwtwZr~#EQ) }wIO(nF(zq^+:r(mfY5^m~0o+?@ҨO)4 x8()/N'tKWWD`KP+w$W_Mj8EDzkH) 1?cM~(fs8]*P@cH!6;7HhI |hQ Ilk{ 7G>83J_"sZonPjՐhۡ`  k~ J_b׎?c3GR팃t#= űN{k҅;b٠[Pv^3bfǘ+mP2ZqLsJ:F w<šJzBE5Tf`Ŝ*[gs$;wKj:Sq#\zѿ63A ą^Z >~ߨ8:Or\J5y.FY: 5Owhl$j8%#to/Titt;J"l;.pp]Ԑ?\PeN ڝ' әLeB3x -w2]} K }|> }aU@)rRkavLm@JPBrf_.H6(Etŏ6ĊR- X|p]oP |\V|mӑV8s!p^IRIp6'`G6'Ċ^EdV3^4oy*NZbeN\74;))p, u#t׭^M\hp&zBmEZPmSm -\t,Org9ѢQ&D׿F;wcWhHp*"Ѵ]v;%wTvcVs"`5'JcsbrkKt䤺IeU>Zj1u=s@=!Zd(͗ $4m>2={")W<&G)Y[hoҫVMK|KYqU~w]Ț4Z6ʣ/ 3\:d A: #d6ꡠK-qosRT$ϼG 雰PޘPuKF&z,>><؛oQm{laJu•m[ze,uGUZ%<ɾ }}E(VX8u?Q5JegL{Wf]=$ƺ(=XԊdec$<IJk]#EpxjXU)#Jrp|E9^RZ_RR3w^Q4y ON#f2BA OQ.(I?ﰣ@GHj?C@Mgu{۬@qg-Hob H@PZ#mU;_e8=0;NJ1拭/;`,yy{$q;.(ze1Y͡"V>ګIh%i(KWN+ ;18֥8,'FQ^j(祖̄$42@4E`e!Ub.Gd4+ Qqrs93#g5hZ5wѡq_5vT̤th+gnjho@ΜԍNg4?p gbW#YJo3j&7l_{TJEdbq:c{1Jblف߶N/6Qs J)ƈ`ӣuębx;_l`JZGNdg{hR -._,6A`'{Q͘M)iN=DwUz`oZyݱ 6  n8o Ew=6qEv?%(j[. Gag cD(;N ޞTXY? #?4HΌРg.qϺ@E(+F~F$OTUJeQץKr/9?>I:AFR2~QHp@kۺT/1P-!; "/@eh@,%|wkEJtK%gp}stHES%y3]Zd@;G/U/DzOݎhٵ=HY3;Lk+r]{V{,^jbc#iƋ{{LQCZ tSF (O( jTGPOPg\reQUbխC^Tf|sN;UeQ"TmHۃ/ifL9dP_aRּOF?fEAaQiZ$.=FB HhJ=FBPPD_gb~ϞYcNt#,J! iXjRxafH-˘Hg#EiXJ}$Ah,Ժ|əCAR CAH)4ZQ3 0. iQP fyHe__??vѬ~ڬ~'#œ'?^׈2G8_ϗ_?l endstream endobj 789 0 obj 16398 endobj 822 0 obj <> stream x}[e{z+`pL I y0b#ZK{x$Q"k?__~?\_s_KKk×_p_/T%%\_/0?o_o_d5?_?Ok—? >&|)Zے_5@q‹jV_ZXzaz$W ׅf.[I k\Ɩ?4I`3B'jH0N+"4_/[U.L':3/Za,A[u+br/= O<~W8)~)gRwpNEZVjJ\@([ # (C 0h SMbBU*u)[f)X3&]CF!:C(ZK2A&6q% yۉh1s|T~Ъ2Bqr1pG1qJFHІ wXzQ39c|Y'ւPK3 <ݗ./ nd;;2S(PpS@)C(2,)e/;uV-X.il&lgq,b\Ziʵ @ DnwD r=IAE )tLp?dDe\O OAh>X:~"ϯWlK "uQۃg!yr̡+8q}c:HCwt?\n Q B @ILRQ&1 Cb3!ndž PN6YnS\2;#B΍  -pN=3~LRѨm$TIwPyɸ^=@@fQ9T%Pbs.R|فLRb o䴲U i&:Eq]% ?=uqio uK-mP3Eu_VL[t{Mʣe#9p.x~ ZJǶpִ[Rm:bBa"Fr8R'Pt>[$>˪9)JZ3>rZ?8 n"QG"c~m("[=(FQD9i{R0ϷH^^ɱ{j±aLyqB'G8D'ץcBS")} Ԡb2W/y|DZC/G5"Gl@I  qF) >|$1W;/M6Ja VeO ue9&#Ap'fT~ P}I K iT/5;Ç7}"z&{(vw-x] !lEĕD\cN NQ/Ҫl HVPP1K-JDaA: 1,Ѱ烞kiH, 6'W+\K1HO3F8O Z:>2]J9Vn OIJ5@,ŭ+$5hЏh,<ѽK?‹!| &ōS#0m۹) (<1m/&F{ Pa0.+Ӈw={,F' Hzrk7H# $k:rGG% o~(zpc %DE"XmK SR{-_yAjѸzJ"l6qY'y2- $g W5)9^(2tw{$nERrf@~Tt=ER#s8[,GzUT:B5:ٲЃƶgR iwvpol\ơv:i͛`/($mV$ǦPVgc>PrqUvz K< ,i qNYuxrzn\^ëWZ>@٤+ 0'0\vAy4OQبzgJ^Ed?.Ptq#;Z9X=7 ; He/^Vw#%A| ™jV\Bd#{,f7 W 50S8vɿuѺ,DŽ|Pj tb6`Ȫ?4N@s`oZn^Jar]Z t|.ZP~pfoG Ih g(k[ ھ-[B6/$ZSEy(4o;3Bkw>(W"ΐt)n\H8r 5i mW^]2BQ`I:楪ªl]ȉ8N6Z]fi:v=\j@Eg9^b'1X8 ?,{CcER .u=.!r3YWR晿=| LN[f` [@(So PWa |FjJ(y9rC1t ʼn+5y `OpG&S3g5 K'jn>~׫zN2r B!3s<S> }MHסJy׆P TqM_:7BEjPf:I@*@CCɠ#18Ko򶯄{AF8BСo}YRJQp۾j[Bh3 N dZu~S;-:LI84n(VvpFB)%'=g|%4s `KFK1Hg9~іcT=bJ@bLY_kFd,9'fD\'gZ=3yWѯ/[J 4%/"݃$0p^=y1$j>9vm#9"[*GN$_7Gv6@ {RvPrt/\wk{; Ẹ#8qN@w(\8dXuk}|r8S+ֈ4YT# t$uteD6nVp?0z; 9s@y" nclz^ 1k¥QиB8K=t֝_7<+☷7Y_he^D+dt/(qft-n(Zu)iڝp#+egqhsu)#K] EӆՃYdWE ¸q̗(J{@>90c >u̔,rJ=fi=3+֛,' 7[ŨIen'8J3>sŏpĜ~^ԥ̔ED` 6s3 oFc:PQ:xmdȸ_rÁ#z\O}Ң*'a {T@+L +1)v=R#kKKNT*LN3R )EԊOlGQ %3O )A+9d أرZW݆i+h^և==c U!z nv/nGR6UJEP HqxQz H!Wejy.5.W)a=mifyY/!z}?)ӓ|6TgݔzĠ;2gHL\8"9g޿m$[EHc+@f%8;޿$/IZ{H/ӎ 7 sd+afނZsD4\4xwrjI C˖d[DK" wKcSջLe$uGJP 98WW^5 X 0" B͗twl; FoĀBJ:/ g^-z!_9/XdBz>Rq.'+Jx?D(f2i?hK5Qӽt`70mA:Ѽv~1Xq*N:HgH۷V-U`jR,vs.@6+^$]t7Nĩ{kM5^=t3ǎ<(ͶL+o,3cs~nۛ\~snu}tPG:`˝\y }xqg-}xcE 8e 0477xռ%猠 plr(M%ZEIt%?;fvqQ~6PZ ֯nEs]ʪ)˼q"*S7(%~QZVR 򆴠Q[{JѺP8Hw;hG*vЬTN>Uj8"#y;;p%:fjvx!%oL99`EãfI֣uϡ{nC aF $6o$be-r nB5kUHVg7=S3KN7JPME(8#Խl5?@)&]`I@fVΙ~SyJЕ;W\36#,|FŞ(5)ہ+\(u;ALJ4 _[nob!52rb nk?o:- "#Ghɛ7pFrCgn*޲E\0O٪E֖U][9]#sC`3Л`~+ HawTr12NI81yIώ'J F;Wp'3\bKK{"VaNvԀP1oD7"UjnR^%U)5lj:9gek+x x+ޥ㵘Vxݿۤnu$d+)qr.yQ( Prau@م|H.RwizH7ǢHeb¼8FKFv/~΅Zy㢹Q,ng8Wof<5a;{'؀|a%[%!Jվ9(ً )͞!\͈,fUV MKuPB(L>huC)9Hi5z\4.,vZ5 P6o$>hJ US u= %+X*riŀ1.%%ANFNJ^iKZ&-H!-H%3-HmMFV[" 49Xk(!dRk]$5SxXYH%yHN+:H_jRվQJce59Rfo^(Iݾrz lowIM)m;,ww+fbVؖEl9{eϲ2*gfŲ̈n]]əuLaQ=L]eal]2 ںi@(s,CW;}4߰{ X#tf-K(hQjI |r2@mLzl|$}U+yݺΨ+@}a 1*g&H.)#g%*ۘLY"MK~Ksw4k)_+A,͎boE[ЋpVJZځ3 y/ŷ=#&e+Gsc imHR"Kr݊NEsqiG"e烥mQRü(FC3Pt3]ixp%5ݱ> ״DLd.RNJ-c̰mA_T^骇WqM}/W39g~|pkK~n)Dϭ\V2Z~nznt=RQ gQV@4?^%7\NKXA:G+$%,2D<uEɚP|v\ +.@LĶKSB)>\.(G˽M`>ʙc b=*: .gW{? -+R(jD:Qjĉ|Ϩ\H v~$.z}k*G.TT~YvCkq$ZˋJ V1Nn[YKk$5.Q2Kr=VDQatz?_3yK}uKOzWN%F^%mMC%36?պܓחr*8sɕ6:8tPt;X5/%Q%I ^fxͰ/Q X/v#@9Q[*DҖ p,g)[,'Q3D:H_J5g$}%Dnc9HD'{IeV"><" *9c]籤zb 7v/mw^k"fل π{FvR8ـ=5I7ta'[GiM{SqHO=~gƓrRP U:3{݉oȱ^Y-iw̘-ӑz23aGn6=8ӳ t=sWʉRrCXQvq{JnQiJ@I?cC3AƪB圏8S' )vH9NoJ)0OU2ӶjrT&XoBVQ<[p{z-i`ߌ_Tr40R>ЧJeCPY>d9Q $B|R/ O3/x< }ӗ36oxoUwΥ*ƠW$MJKOIٌD9tvҥ3=5#t WiU8 r+H&e;zke,*:bO ;#<؝:e_fWmeg8KlEZKdEr5I֭ЎFg~rT fUzHQDioYbGNRrsQOw/0 $[k|jFͩ߸߅*(z,TaԟqJ;nq0`:r-aIXǣj"%^U GĠB-2Eoc&0*9]_`ByMjV#kZIn=Y/Y#k73Q#z^_Rb_-=&RYϸ]J=$spiW,wZ?;Bَjjm\ݿ6rS_5i~` GR4ZH=/߭+mχ&h2C}FaMLa֪ބL8z|gnO~[s{f^F,s@m#x +@6n-xq)w闍բzxܲO 7c)> RmQk1D? n0cVüI zO& aNBEBʸ Δu#/Pr:CRbWv4V e۟wҁgjqIjZz?-1lJ֣WIJ%8LґwUzH Ԯ9_%fdQÎ;g2K*yX\տ# ~tNW]w\Ղ,E.0jd(Kh:聞X~)_AYSzu nq)ur6#O9O!{a>{X4&A%CY͆gh0֖BHuYLzPIw҇+#X@u|,c1.^zX9xNxIm B)NkfÞ|3B8a%șőDc*Yo#iG t{!^"z9zVB߇ZLR~Z7]#rW B]_~ro.^:H:!䃖H239 gޢUUܓ׮KꗑLqoEХ P 5:B#C;paK qPI*F9Jͯ_z)IvI93{!]UEԫ~e}檔y4njZ4}~l\x|*7:@)'C,Pj87Zɱ`OX13.Gr*Eqҗ:/鄯Mdze(CƩ'Xu4I꩒.c0o:ro$׍E)qF (kgQ/'`>ҟ]yEWQ*Si%Ju\p39\CQh__bh#FCT{sPo)T*tݬ:}Y"El$2bjCxyB9<"~,9I44Njw5  ^~uIgLdU2xSjV$QfosLK!x\bM] %W"zQF yjqX gDjCᖑxZ Z |D1Rm=a/>.P% 1S{;ʔ|菠_[ f&Gິ#J.Kfzi{@iP QƐR12o/P3LRkcS}.+e$6p/>xۇF .a3a~;ʌir;ƎXmiP ;Kb|9#(>R6@B'dXFh|\%UJAh8Jq&:$'[i /_ňp\~x[Z2V#h9H먭z=jY X B96MZ4y!&F1(*~Ђc-p)˺M6?Ժ~g{CJճL3{Z/J9=#PGС/`Ů5EZOfοo<1NYZGnn .'mMaL1E4H͐SX Oڙjpڙ歝8+ޱlaɒ?!6qawwUғ]#mv/nqǾG6 keG62-⸁i^I[%R˂%cF \.!5p@GUMtJhSպKQaCmUsqLXVSTum-J3,x֍ٻE U,/c$QRGB(%[\@+~_hR\HŬ8|WԻm{bnGKC&NS|]1^xG %3"zVTI ^x0J9-1V<\Aøf6魨aͨyoAﶡp͊ZEE1S郞*@(,XjBbMOSFT.u7}V$f4X.pHք^Ab;kh-vrm1:?{?'6cdwO1+ԳD/ *Kk\n"tn(1j冂7;27jGyRZ͜P|B8ʹ =RN˸RӅu R2) c9BoeZc@#1t)5qm Xi?)!@^!rà?YJ祈?ZF QWx k+ 8fCVfCJy;6ҬE&jj+ MGUuމEGw |Ny7V+2=bN$3h5?BXA(5yC3Ό~V(J{f*>@ Jz"p5s DIRFq+Wa }Jg*](9TdX^rxf,GᗛAF3TpTdvU'kLu(hn:DXu y`!VoA2,v7S+4l$iY50(؋ 'Aƍ_X JG.ej4VZ_ t:1B(~_#B3ՙ/@vZ.ROE2xe!|gh(y):=~jRRA{wzm=9Цs`%:z:-m^?l^b:~ݦmPA0RX=)>p=ҽ'vxdT kJ?F-HyW{ugY-* f[?7XXKq&aO;YQ 3ӎzie縢, *Zy,u=3Z'O|3r H,H+JK]{l L!RԘ!S!R:,W_붎r%.$Ɏ7ʥ j7mDAz~p%u ހJ5⋮$捱MVDBv(v<_.DT6ˉe|W$'TgrCil$MIFrN(ҙgCZqrY8)ЙTpyr?XvAD SJ=L7&#=&}O"bC6|O ;? 3I]Cn fn7^l?c7]ƗL( GWs۾ PF#e[UCH7NٱG޿ۿM:*&pב V1#qOIsuh|ۄܚC %*.c(`o-,?BPT y!wot(o#pᯋR>bECq㨊R])T[(*ۺO4e,IhQS&#k0rքtЭsH/~6.Cz E/Pj_9 TB2C/շ틤HJm`G95rl*̀F2XI(94#V8KA+숿KeL$ -3r]uVB֥Zrn{(jUu^K -T&*bno{i`fV҂/r80^{hէ| f|~! ~~zD֛~vw)"c@) OXr!8 0ˍ:M,RJAȯűUe?CxfB1'x.\\z7%휨׬@#9оUBIs۹)A ޒ@%ӭ'JްjR-zfϊ3{}9'N)*ϧ(H) T"q#U\_JA1R~QXy]Dao!)(y 8+_IZߚ_f{`}}S>@#ڻ11. Ū`Ceh^Q";noRXhUZץCI`^$!SPq>)i1CP^$8g,cJ2! GW߷\MNv|^ }{\Jn FGjdpNPn*J/KҀnpH?$CYq|P!q c.%1^؟kpI.ƅ71]xr/+]+:鞿۴l"H|C'7F|#_C.@^o@/.a-O'jsB;H!!CRU)O7xjihG?#Jj_츷{:?.TfԀKW5Dic(TT [J]H}3zD_*]j3р>/ X~EBozPb{^rrf#H)ʙuN3@!1 :2>-lFTNrl@r|BBLCu)$,i:=cP:bZC,((lyc5m{"kñ{ OB:v;h% ]`ݚ) *ƐWly$#Ūq2y-du5M o_Aj>Mڸ -ߐ7MLR!_]J|AyQ~md.Cp6+x0|lbGo^H F x;Z0ZΦZb˴TH9TV߂$BRyB>Q*2EAȽ. S]GVIđy UBCA!4 z|zemf>1.㚱@֣E ѫ:>L#VYM@= IlTXAq#Y_!Ob giJuLP0ѧBg)ӌb#%]M /Rzu 1wKT1W_kkc"GvuZ}Y`ă1m_vZ)DXH<)I=͕z.}h$[/YxlEo1yx0mbdœ'?^׈):ןϗ_?} endstream endobj 823 0 obj 16866 endobj 854 0 obj <> stream x]ˮeqWܱW|_`@Rˉd؈XPf=\kE!hзzXX _㟿?|/%\/nu˟~^//7~ۯ? /Hר|^b|/[wew?}Cz B5E99"8|}J2@3be%Ɩ}l%z+*Жc[Gn VNphTBM />"t+H7ł2cmF.KZOP)''Zh H+\ C8~tփ&PCoGriK+u\ڹKKf*5N e^N{6+ːĴ4zlT=qs ؆"eH;c~w(m ]cl%] h hC*uG=sqVqvi_;y{:[8vIFG:gbbK9rh~Q+Vk87KOKʀim7x/!3U;[# =\)r 63-BAs*`sN'sFo8qF6u*/؝rEnqSl -(x@/{@+Bz{=hPsF;pnj0]FmVK`} ad} v.a`d-׌Ǯ0Q-q,)oV5iǴ4hhY62Bҁ3q*b4 <. /J=E%_Z`]Q[gqHZ;#K2Uus?3BU^b!SxKrBz͂pt,42_HZzH$jV$`!Z@}DzZ>X}^ =a%pӉ>1x+,>d+1ExO0Chc+'v83U8i}Bq-jD@._ѯF:Z_eJ8z=躍ߦJ@EzJ }G.1OvΧGb_ʑ8O_̷#1{ϮݴnDc;rmWe@}:i緧ʥ/nqGjXc\C򌬠?=RHY E9D͍JV‰"t4bo0nwJQ߉BB(#18u@pa.Rִ&KRӾ dk* NߞjDwm@'(`] RG_k }A#j9`30vS?m#8"jk+PA>j')\ǭUf^1rG^,_zedᴗX8%a߉LCIB痢`,}=aNW$vb#_0\ooEz׵k#kW tp%RVUAYxB伹 S~wð8ZA }F7 aLMIy:FRѷ2ńޡ`}i:39sXوtIzyQToZJ|sˮzЧÆ5n)D,`яlP&Y9l9irՄlHʆ8QQV@Q0~rkz!=X[3SQljк l LYt - 3#"=E{P.X BAˢֶI|PBWcɕ2Ij-0P/ĩRJ +Gb@4rVNimNe)$g\ X@R Y CDR^O|z>V{Bɂ'^U{ Asœj_ى|sGX'`g^0DԬuxgb}$؀bļ-byD(]dY2a3&|MG}܀@Jx<9m@PaM)FC`b^IK*TELTZ6\0P LW/,8 H/gW^/׭ "z` Eu{(ɷ g+JVa\wt>fKC6En`p,9g<|g<E^Ftrz4g.09 싞ؓW=".F=``3n L>BzpW`|yOcH>dHi =T~RJ3' \~;E,{Ҝ#<2hMϵ"({*L#v<c.MjCPP`mb0H ܠɈ')x\͜ʃoP̥(< &t5 _Y*'Ync1@eRe*A\ vF ӑe9s7Nᛉyd Hz*fC}1 J*+P$gAʾ*~[eRvi5ԙL)ҌV@Ax/Nr\z>O) z@mÐ)(h Y83 r.M䱑") 8I\\y;qVXŽ-xG*brªwi{K&`J83(%:Wq8mgԭ<"'痿Ƞ*#SEƐv@O H}ݸZu鎟@@hsJA=RaU/]ޡ[(͘Yǀ\N8o6"Sp] /A'z)PBt8ԕUʖiO8Kc>)e Lü V.J!=- H |HÙW`*-P+ԦWS("jz& 'C9vA ',l2˅5M8[[6[*eK9S ;WFqڐOgpP^_SK\ëUҵtШRy *rs`3 zP5Io)Y`9wfhbZ%VBGX缴xj}Rv?[_'i=`` Z3 ,0qYƸ{ꍳpK~w|3;;Jn#]ȷ>-0Vތa3Ő,4Gb +K[eo,%9F\@s[` fq n_f}NV3ꁑ tJY#bė e~+nԊ.TaUcM7~n{cIc xo5'575i57ƚjXs[IcM9_ݠOkujXk*N g>i}Xs>iA4֔Xyc͍WOkJNzcmfܥjy4vj^$F;lco_h?PI,ɫF}QcIfRrM-Hϊj/Gf%Y;@o/9DɉwVԼ9t%WgEŃZA "ɖ(U^4ÃC'tk^9uofPa~d/Vz(۲uܼ}K W4}@ gʓ*~ 83<`oRK U꿍twԞVB:hc (w~a|EaO]$ؒT+]iAOIypBėz@Kq^c@,3B1 ;:y q*cvժ<{cí KuGq%P9 9ۦZoUGE.&񇟆|ΐ Ӻ6_Sv3;N,@^k =-Yw5V묢5™>$\>ޤ>rUjI3RGN݋x%7hu "ao\ÿOɆɆ_y!U4E{MPo7 ֢lĀqa?=h^jd ;Fqtɵɟl#/pB7Ӣ2xQ.9~?m^ $P)a0=.A'ߪL\-Տ:w"A:IxXtYq݌'MP`; U:*==Ť ɥu]qrl_z|S' '>skL@Rd?^xEjڧfN~fV8ϧgԸ}iV%o)&kJs&}FP*teH'Q 몹9ۍ'.0o'E=auЎ-~8`{EA+#]g.[m`Q=7(RWΔduorlIߘ z0B(%I.zX4 z=жj4Ęaxڨg׏'*܀97] CQuF6 rVnݦkTIB$ѧ\b5aw*$T.u(O(zTs㬘7dH1qF & ]ӵ&ų#IG=҆5g5q; wK;:c;cX}{L:J ϕ~px@q[+=paGJR3VjW-< |hNxzQ;;Hܠ |^x1D+IMӍJ2]ayQnlV@~jC8|"zCGqy R[L8jrn̋z/)v¡xN~:ߥ`# p~3.RsfܨW\!vx{ñK=at BAq@(uɇbք=s4r@_i+[șyH qOד|܉^«geYxv'6lTɟ3|]^OFnbG@bUsě{9I܏r9_jxQ:gV/{7m$FꮵbZoB08;?(Ŋ"J3s=AknE̷l+~6i yũ,t&w\6>?GdO_X]g_XO>"_]_X xv}a x3rѸtr\!zX~+T,Bͦoc7(Ew3 [ <- m8ϑW"GzǑށJWB Nmv+j)Ra+_7NWeS庳|GF+~@5y Ju'h-dOYc" ֒mvL<;Ѓ}]J3r XJV 5!G1=A|@i^v3zzKzz&>|`S#=dhNG4oY]պkB/mރIY%;x#[ b7\4us=JW7+`_;iרy\ˉǵ/6k@>QP:⑯A.jp*r=kJDԘ6Zzj=|>1=Lpx l7 0=O!wh#^7 zoEHb(a?@"N`0*L[$93od: I63^+.} kJA\f«1nTJe%6@wϐ3{ Uk'jlZ #.RW͍AZ3\oҾ_`۠-ieV5=E,`9Q轃6c(~GBq;J)ZE 10]blNdKI't-LWcW.x!%&i*~ðBU[k˦ZGGEQM(lkO?=`y}_T3ۻ`Գ!H|gx_6}ұ \ὤR]ꌲRWgȓS[p=HEU`ӫĹdzN~_oTOrj݁6(HFAxO*)qRى?{{vS m(xK8-^/}I>^X7,^5CGoh'miIsoBv lU%Kޔ!I B3w*5{lUc7H?ʹOW4}S%B_|734e6/~?^ MǺ?>>|z/~\i+\ea2=_l?a6U endstream endobj 855 0 obj 7803 endobj 868 0 obj <> stream xpy뵓MWN^ڠcl0)ۘSS&ALM eh-Xa7X؅# ^KZI\IЏՏW7½ﻻXRDpIy3x>w}V=,'4o9;ΞMJJQnTT TT6Th7B뷝8ua!.n^w_{Eˡm^PP!QQר59N.4/rO}K{M7j@o~oz**oH_̙3DŹW\}\ԅ0ضcccp믿oLS_]8uugZv QAPyP^{5t?=۷_}ڍ%4oo}ٵkב#GΝ;tMӴ N?Q5{gKo(#⾱ˤ[ڞvqļ@1VQ|СYT+:_vkT5Ji̫ʜ\:X?4m/8qٳH^=M~fE?߿UHtųvޕsv[YLz3#_}Ut'p̙ʑʞ={PQoogT+~ꕩDWz]T$P/MZ0lwB.T*?X!.^Ξ~d_|q$;zɓʙ3(<>$W(E Ld $t>C|bʳ?<74g_9]2YGΖwMEd^9b'N8|0%@z}}+_@ܕUj:êg 4'1_E )ln0<oer0*cVUi]k_I]Ň+cf''X,"!ۿE IѣG;&>>KQ̿|lGΛ_FGޗHG{7#O>&>ke{G=>x}oף/vIlqo?³o8[,j˿wQB%9rСCE'kQJp5a2ӨD4l9;(ʙ| zbn8|dP0t< %cp^[{e>@ B}dE4G uiaa"Qvb//gD:*09+Y&3 3 f"r \&z+oCBt [Rqn;HtqQ=^xQS>x,DIEgl#gmyxr_rÇ$ T𗻌"]͞PxN2KR Q;> q 1Gc{1# υL0S!6g[i :3h5޼u!i4DrqdWɁ͚e \Ъr \&̷ H׎?~ɓ' E}(3! 'Q xe>D}?&)NdO.d)ϿuV-YQaPb=|矟&*Z n` dAfRצÉܴ$ųQ2g@ftp0_,&eV.&V5,M=30ajl=f%FB1\-#n??yƜ+&89Ѽ%`Yr,)\l`3t*ḊzlR,=p 17wsTBB ۩SΐܳgVJx xWw cE/_9RD]/`G>L}E;b㚞ةݷg7e=^ "!E1~[oM¯$~cB[|OjHh.:5=Xȑ%r/[`SM5)0E*y-mK(b5#GJ]c=z5$pΝ_}3){ޱCu^>gӧOS/TΞ?"G|7N0pM]N<~kT TT$TӧOO>?m}~plT/T/9sgմau)g Nճ!3ioY8U 2[\OPGLP>7q,YveG2RKHLSQs{z/n1T>L,=sfw\ 9CQ-^{.KQw]?/r_HMYСP9տۚs h9fObECC?بk%vl6g?bI$po foɓ?wQQQᯬkUc^XGtVURKRԔ:YJJ/ @ҿ4D:,KS+P`ԅ7w⍷߾H0ZhC\>W\y@R9=4CQϹyb; l歷H~؝wn7>{k^b?L?TV.Op."oL"Nf)e#(VO3}xi|?ԓ ~|}ڸJ<c{?|\gt.pvJx"ò${+_aQ?W`{(ff|&lS&5oJtpQ~\]Nx5%2\)^ʏД-\/Ry"$n-FıOr`˥-!2OU*1Th,GH9Ǖ Xa$YD.(} 9|?brbp)<kU D`aMM>WؒbȅL|b(;c&(FQkJ1'Қ(XZcQYn_:ED䆧`t +\T%\m ̔x~\68{6-Ba D_\2^$ zXX+3<:7td>RD&j bZR!) H S00B|H><S6Fg 3ԙ+Z&'Kʼn|n$`W`P8%(-r;K']Z5][TVE. _^+٢9&­ n5]&9 NP,vXX؜ G#82jWG7wz$Bp_8OP EH]`"))B5஠5b'ʩYBk{"uXh\z R ^í .y`L3F!uVʌp+9nd=/h1D_\VW'#Z.m?L;t?,IpQjMijDS2xPvVDłNʜ0`j[8n&HՌejXp٪Li٘Q4ecnagj)ϊ CR )|.X9k6{^ t@o ℬ tvw@үı+w]/X7TpMnl<]bӽ`Z{qcٔBEroMsӔm|YHqwѵ1e JuVSS=lN)#5VoNʜJZC4Sw -("*c^US(ο|1RD8R`,r_Ik8`rۄ:v)+wց5\CMIM;b .p:֑yU;h_h;@&Nq5\{]׉V) ^^{@ MXbΝO?m{V;TST_GAp:٦kfO8 N *@/d.HQ\Ź ng&+ʜ"2%ug}4lWgkyrP.bo -*0еm; 7,c lնfw㽛)VXj 7BSXs֖\C@qS( 2hhQ.'aooN3ߕˣAk27/X㿡ٰEqAp% ڂ&MD=v={=xpi>A Q T0+!;h&dpc<BA_ Estn|S;t?ڗ4 +Aٓ*=afܼM !sҌfJ[d6 H$[䬃tzЕXIp E,sL]bO''16CL)4d>ŗgʬ,' E ;H!&E46[MTp/4yDkd }ǰZiXS%,'\!R\zno ey">$LN5v <KL){jn]FX|?Cѵ{"(T${m{U X/%vb; Oo]qR觨~s<!gzH0޼9EW`[NQyi˭V`شkx Upy͠$:U8݋Gp.1˶K(e<'5}fN>[łSp&'EpU.券GHX9rZ+qV\IT"HbI&m%N`Y} N\Cޥl"5MtO Id<"'cRnp€FVSJ%EBUjXEeei:/kM< u^[ KҜn+"Υ󪑌͊憨+i,OxsDTR8 4r8e#/xЦBBeNURv0¡&c) 1rRQ"jU Eey"1lPWqs㘽3 gUuv ;CpL_G}0R9kaTMU5%ȨZMWU3D@au b[0/jmK}UҚpf5.gisR9W.e)s43С@@Vؽ{wW|@@Vv$yst:.1ϛw6оЄ)\WWeY: z>Š銖z٧o,xX SCYFD}牁n >ג\OՌsUm(f`3ˤ L>&w%>}q>[mvM S4ZPT8+|6LQAAon j>֟-(\EfE1treǂk5zqTaS`{(&&w;޶e.ѧDOFtOyzʚebu JXd!Q+ڦ~y%ߏ|9VT3 `=E{@ˣA; )@o̘zm >Ä|ĄDddUmù̀k"o-bS͵젙8I?@xV]01D.F2SD_ >Wui,|i?WBM-ze*Y:|{/.:Qđ(6gk{hʗa<śNٛr2bv0ؖ(vK QZnѵB=[3^2RZ)Я09'FzZVpO3~.2ia pNJ>kx6Lny` Re wAU%Q6cHX.rZ[(I!5sْ<) W/CAEIMUn{d8n*%_p+zE;zͣ @7bu]PGr[b%.em^՘v)x2NL-5+̭JR*q.:XV*8XڜPr1k3m#9MG* S&hIEad4WiieYHN 9UaJ]jiMT$JqE $QDUu듪>_)Rr6.ЍX{{YAvn >WLnxykFt9;Hl}. ;bm:5\sNv]'Zvzy /4au;w>?NZPMQ}:h_hl} SO;9 yg MXU;h_h͂k誂 YQ7܍A3YLyV|v;.'py@&N :jFgxNu8HVt\-x>N@L[Ha&Xk%qfRHy/ }XAp U+:SCrf+Hh jTXL&%H 2#hd&>V.OG[׭]bb^_tUQliFQ*4TU RwqRk_LNn.@^Ey\9$|fKO)qt #OEs78 糃$a 1>?L?B̄fgl5t\.KY)UR[d"ω,:3}/M !35^%|ՓoEQKpGѠTK;)э׷ۨ) صE: JmeO:EX0BYCa &d{Qk .-:[fTJxJSF1P(Og>263Bᥘ表0Tht!STÃOtS԰)6PCa}NxX,f.8bL97Ȭ\{% :\LQf ,ZKSYt mX\}A)D4@%J6S4 .á 9 +"B-#u`x zv,}{& $RBCI50Q:Ogy">4pL5sSKC53aCEGq31,?_-R,MѮw kOG$TYWS Bf'7է\.SdNKL)xٖpFa4,G[2g:/G$ fnjy.򬏮->j3jxU~EYtcNӔ/+Kݷ4Xo>z8:(w Xb5\9'K8ճAkܠ)]˚laN VK}e+tf -Jks0@)j|.i wAUYWx'K nuO5\}d4u}X)*KPErk nU)&Vp)t.[Dpl6DkIUMIx$2JA ɱ(m{#S+r}/Is2g9vNNŌK|}gTp7gx[]- NRǓ\W` 1%RGk Y 'ۂ>{Ղ.M؎~h&ցSU1sׂXt9;H9 Mb]UmX[q]O&)_^og`:E.e]S_Җ8l}~iR*o8sl}. ;bm:5\sNv]'Zvzy /4au;w>?NZPMQ}:h_hl} SO;9 yg MXU;h_h͂k誂L[4 ڻrT)K5*U"L 2s:SЄ)WT "iӊ..R x%xkT*E`*n4au5TQHO Cʙq\"-TQa$TrAp75az(K|KWh&F(]ܺSЄ)Zͅ(*R /u2q]3Λ@p7ωx֍h(LkB%4Xg>raǕM~:0 h5[d#safޜ0g)OG'Ap׮}Q!sҌfJ 9: :EX06 d )-AeDnX>'K1B~<<^Bեhbψ^ *\gU,R~|%.%+iVHA@WftQ]8 -OD8O#ʳ\vk.pŘ$sLoO׻yH$Jk.S4 .áMn?sY4E+ZQm@p7M`50(j$>''16C0 lz-! SL/s"bHfZg+C:' 뫭z}A'seaJy'k\!)юRXb)e/RQ[KrҦSX>'Pȭݬ\6ÑhnjpqJY \*:ec!sH["j8\bZFV5+l} S޽_˶hڡ:t(оЄ)v%vjj>С@@]):< 9]Ez ;b.^>?H|55߻oǬ}|nٺ.9]Eàw"}w}7n{ Gίܿ|9]EàLygϝ;>Uȋԉ]7\}\OUk 8uٳg_]S=y+wXp=~3g?v>TvVtA7vNNNG9)gԮZ++ܾ?>ַv:ǻNS6N̈>vt1CE&̷ti Шf #`޵6vNkSMK&ɗ^zi޽JĚ?)n)'L~{zMc7?tSﬧ3X<f妋h5.$hRA`{tG R~je(.+Xc)/ݰ0^Ub#D.[pd_-" |'WzPS*b3A,gAj&0@k<-L哉9lٜ RT8gzS{ rڮ/+ʑ\\S T"V^#` ۶m bŶO?g[ɥ?MmK;/}'zy?IeOoܛ|h}z .KSv'v 8I`9E)]fl8^p׊BeR+Pl!}v\itlaxDF -Zk [/H@o h]pr !f\]x84FT=H$`iXC30N fIF{V`B}EO17NrQ@QۅqYR Jl]oN[5%@OHXkyܐYLqDO#NW 䈭XR^b?0Q-m$n5f¦2"Oy2f' pz f*6yÙ(ac:ݏn` 0X.^8yb)4)"=S!yGKQj~Ft)P{c`=it:/|B _8x>f/,hyӁU*W-Dj޿ '!;, ,ĝ6FpfJJ&)YgpXTXy^euD|z 3G`4@YL+lEkѬŸHXF.''ѝ*!U{cЩ` wu\...Mx4IQ{h_(*`W;?8*Wyd`?yJq#j̜ x2enEjٌ*ն`ԦV~lޣ%pT1sstGjҸRBG,B N :Cq/O65iz|csہ?|CU//0̒89HWȌ+^擶YRR$e9fB~W+KVH@{2eqBU«t"_6pD1OB]oa0ϕHdT%Ԥ,U$p+G ő(sA^a59ڢ”g\knI|[p4)YM)8Dp漆{kVE2+VR2}!farxu|u].e{26 KY2kR[74j!M](UyE0w)gȗ\otV|AFD%%xpzc`=iG[{j? ?kMC>gZ38pp("[KL\-dxsRgθ5]LµxRĄǷ {sXu/BCؾz;q h}ql9v᠉DL%Bg >e]7M@@SεR9Cx1kժH0P˵5QbTt2S~*X+_-kK7H5õ.x9QN٫d>40\< j5\ iPn`# B CN8̎Fvɾ/T[]k{t[7=v~>9x;u\WҪ2iͻtT.]cu}J4P0X۷l |M@};~wo$ i|Ayud/^wl>nbq"*Mӕs_߾03kW2CǵձŻuOR >zo>x0կ~GS-btEv?3V'NmދʃJza3;iǎ&&_2R >hP,ǎs2-uV x[^*nky>U*|`}pD+׭} >fU|[uu>'*ۧÇv_8r~U_ ~)gAp=|@W0e2wysΟ?}큣OuU<+w>u}6WtA7kÿ/N:uٵ-/s著ιr>sfc'a=AekgAp=|@WQxc/xȑ|vM龲_?h}kr>I >=iAHp:$58xϔVzo>NM|غ?J1^r:*_Q&vqago཯{x<wǏ?!}ɖ=;ܶrL8@?[Y)oO{⓷QyqT_+}bF&֦HEs+ɤmη P;܎oPApm&ŊmJ϶ܓK}[=,Yf$IeOoܛ|h}z .to)?* ĘPYhvS!6 N[-L9sDC(iH\*6 糃扑̔I|.(qOQn|܌*SQӡ+&̓4 DXӇlf3#\HTT, d4( ,"ݷo~͘#@7!<:1tᓥwٿǶOd]p38 1Fgd(ωQE J px %FK 2 T#fZ,`͚Q42ŘO&hQTXC㿯=g 5oPAp/,nyyzcu/<EQS3]^8ϛwUj'Rx~o!& YY2+I.HdX##_eyx؎pm%˔ŌG| 1k7⁺ InC̒y~EګnQ2a',m*2^[]>;dNgDLu83z'Vي<@O4 Y%toE[ 4]w݅lMRW{C=J>*iՎ/aNwرO д5'^D2x/#QC5QNn\2GIEr;rpkKKڂENQuV%`+rQJ5]p=촮q/CYDZ.y 4޻gJR}Evcߤ>އ?HQq/O65iz|csہ?|aw)GS˓\)<\xN 9UaJOogDS2᥻Ad)9%,D!Vrˊcp+%rZgRJ3/)%$ίS(h >_)R KҜn+8Fw5\9)DFLM_ rs& Tx(_K}_oPAp۷oAMzr+E}q >ק {/&jj۟M+jio}+=,ĺ~7HՌeUqǗtVMS+$1Åj({sUƒPmWLd/ms}ޱ 6 [Č$MVWGgOX85{/***[; sA0ػ;/ނʀJʃJzyC;6gMނʀJҶY}000000oŋoym ^ CW>As{^ eg\{-Uo-[ץ >h.^o?{JrKWWT.\UeʎWh'Ŝ&L*XwBlG2]<,@.!Ԭ=jXt'lclIK4hZFkFp=%{z3Gr>3~v7|+ߺPo׿y.k?SsS~pc,AG>o*o Ÿ}?/KV7Ba^q#GGo׿-kH|7?G\P.S} X6 Qַn} _x׿i_PymE}ſwtd?je `@߂ "^{MӴ?P7_X7Gۻ4{o AA ~>= #מ+ˈpʗz뭯]S~?8zBgQ^.-e bFLfe^<ϿUSiU|BJn q\CZ~_|饗W/TU|wGg?OO~ǯ~念 @jsS@Yវ \y?>ޮ >)~_(PL/U?saHd忽q ypѿ5sO(6~iܗ;2aa+9ݹbs˿^/_}_2̿=zNWֹk?\M2$_r۰n7xDѥ pG?QD(!=99y3UW|{_{O T?#;] ?¿[?n~wpS2\̭j2pSRK=\)Dfp%JjkбSrʍa6dR:bȹH# eZnR$f ѥ p'>/}K(UюKs Cz)O|=z]՗&|x~>?omڟok?Dx{@I{B᪶trЃy4U ן^7!3̲wAئÕ:Ip mmRpK  __y饗o:d/^ Nӿ/ο>tKoM': n_׿|:{O|C#hr'琚$պkq#ͨr zh*MAwmYL^J_=H;<G;Jg džaDeb[xg7ܸ4.M3$OJ~^~W_E9ۮo{?'o~)iWE?/?1Q[?<#\pt~?n]l>cT=]mfKM[9Jd&F,ZB3ƚz{\u'\9եV%ǧwhJ..n3MlKsv]DWU}6y+H<|?~~8{23_>] y6 fZ៖̚a#f.}l[ΝV~d~ʶ)4m9Ub#}mDW^y孷?OF>oF^Kr[cg~qq564vvBL.-=7 <7840o~>mM|B U;Z'}/k?qp2WdsC;{NO>d.i~Q{n}4ݺu޽{us(vHSO} 8,hлs΃4Ebw~[#)ק'c6 >O-"}}{; `sPAHX(B= \"cp6(׳=.( o^Zځ(^;X4РK$vw,R%<QH۹]pvN O2 H n%1>w d [.0WDK$vw,6'Ple󛲴[&m}e4ͦ2zrI]uKN:.uĭ,ːO["hUz׈pڕe,c ֻͦuQj&kϮtNUVemE@sJum@נӹugs(OE4/`-ࡀW pBL^caWWw;t|/ #R3$|ONuw~{ufI ;\hU\gnG7&RU1x;@:#N̻Yګdiۆnf)0g>WR]C=|JW> b܎=Bz%Y-rLIo!T Zn\I>}#v?h%;  1ݪg7H:m!H xvq l7zx[ē|i8ȭC g$=4ݼ0t2itwzӜ5 4 '.Yn(zMS3s{{'n0FQ 4`KMI`j"얅2!; يMJ=ܚnNK^̨mф,ٍQS|~pj_=2k.5U}P̛'Hrg] 4 &# yuOgޒ2^u zx[v sȑbhU&_ "Q.r}\K]n2,u7>z-ܐ}٫Um䖼&q]DC\Ja:x5od{ռ%e I@ w. z@DbwB<6]YCi i09+O1E~1p{A_eW^GC"}}`1Ad.%{6 z@?fՀzƍ{wig znݺwg]<S7ξܹo/ M>p{Aݻ KS`sPA~ڑHX(B= \"c6 6 5IkamNjS7+bA5S1ԒYA ֮Ino`N*mTE:?4 R;ns-Iwoz|ڽ̫a,$.6r|˸0|TJB3ܐ(ra3$ڇZW=0d4^Ƨ0ŒZʖ%<.^lnfmɤgJ)Y7fy­ Wkkb'=Vp-"=8u|kH( ɶdJus \gNetb"L-#KQUB TXA.DYh瓕Ncdb v3SB:%jxQe,t~۴JG]JWvCd$ I&.H+]UpIVd[Ek;m8Ҟ1uȃFoUYH zMu7&2Zuyw,2Rt2]fK|ֹ) c«sgRs%]\qŀQA7:G5]n8AopښmaҴU=>5&IZMF280;hIY8襳|G8|TNh (5G}MCD)o:(aWXf$J=)ݾ\;ۈY qg^nUZ(3܋`PbbK 'q"6_J^v&[싻EL-k0IfMڶy+ezy?fnWz3J ) ,IQԪͤ.fᑎuUbÏ >#-E;R;{ZI !sUFw>l^IU˨4+pA/p9Вq 臆B:/U+Ɋ=vpFf베<*p8A+`k61xz?htdvkv'.:-:K^vdax3-8KhR.K2.s:J Ll\s߰FO<ɗF{,=I{:ʡ68Դ*Klɝ.?u39 Z;Z2HC+th Mr[⤰Dz$V-2ciV.2qmr1ѩ{z Jj$c94%82,]Se,\}dR1ZF)^K.D$\{xR ʲJYSS>Hp=#Z3I $L! QƊ۴DUBk VnY8WeYά<0Р$\Wy-@F%#MPnGȲL)7 X`!3*S6L0Uq/l@xKԹR#)>se:y.e/ MLNQegM&zH8n>p GAGXq_Ow)ͽ3=2Upu!.?^Bm֞e>M9aW _ R,wE6^jKN!1.^il)͜)^q ŧz}ͨr tφh2p.[Ԑ)&*⩦xhYG]>c&-iP194h5C? {)׌e]+7 S w:S,ҩzdA|hD"ZhCU㡁lF:oRd#Xʇy$pZޱZ X;Rw`5n} @@@@@@@@@@@@@@Rbϸ `anƏKzƍ{wig)@tPܺu޽{us(vHSO} 8`NBΝ;^Q]j䄽/<5kVOYb~cp|J=(}ϒ7q?o{2&i S“~[hJȽO#EŬ*4>%7n> I7(m\!ՓG7;hDyfQMEp k1LZ.^nC+rYTrs=s{z[ltC"R_ k~ z5]7z[xZ'3tR6GK3tS/!?-\HEmNaڪ3wZδ$1f oL],OWa2ңIӷjMm7TA`| +nJϟ'n>w($NeF)^/?I9ol9h^ -y[o̤ Y]̐>z-7 3Hi@ᲀ|Yn+|cdboەe& :$&[ *A tJPiz z1[|&ITnD̙j%46SlF18F1K1X|8&T_VUk,&N9GR;e A,sYRL]7ݺ a!2͹fpǔQ!]V=G;d`Ee}|vs"87* 'V{J8K!%݉hVy̡ [:9vU2ܷv[MYw*Sp-e+ۢE! f(>¥ ?( c:e_2|&+P2.!d3>lҁ&䭸pA) 1o,<:txcm۸HK|{SgW>(T(UDW]}W>Un&2r 8N(x&=OKYGw/m1P[ KW)V6ҁ"iwzoy<ݰ SœvdЪ$9p. 8S;CYc* վRU"#XJcQBnn-tpr/3pҕ-Qܡa<4f4R5Apjyסk]ФfmQfEHVma[Dηve*69MpK4nFd MCoB+ ;'l zEN*ΰRɳӽyPF ۲\krxGƌ?n3lЏ Opy.KSgwcNnoy-$_Ʃn~&M"PFݩ$eރbRYеÁv$?XZnpIz>;Ո;0)K{y4ѺԥjsbX&^7o+(ҙu${ζ@^'.,2-EZ1^ma\0qZn tFx"q<_Mo˾N~dllp27UPc>E&4v2)ÒC\7ji\#JWqU 87g;l7<5 ux'L~B!Y^Jn#\'dOC])SvvtP W82\ˋE~qed(s .̨{2]S~5ýȻ!{lr:zMܪ <$ڇyw(ǝoe=H IK&rc!\q&0ZYշ: pf#V#}GUz9w2yFDkedhv/z&`h&:T:^ZvsJ*E.;[ <ߥMuۨ 7`מfUaaOg2 F@څ ?:h训-#=/9rVEto> {d&l1c7!@΀r<']:IO8K@H < M]#'|P66I7~ cq7Н(զohZ_9#O^0Ce"{"h<|^a`G^6h 7O' L|95pb ;p=+9utlLSʦ4_BtpƯ,)|k_Uʒ(52wxN[itS;䔲ƊNu8]iHpUwR.Z ormaWAU3osɶX5*ưdV ~!ւOս>O$eu$ĕ{kNc: Y9iCs^+y92gDd] HmsY :WM6zeê[z):wMᎩ <^>@ErɔOh;J8r}S[ֵr3>+{[i^Q,*P Z82L#Yt1;C(sTFCci>phY՟=\${-Η=h#M4+]{ȏ|^ /h0n ;$6rW9k+/uSq./w&[x^v#_ ;a!ogAl.6XfbqמL(C@]@py/pɰc/o{;2Zm)%ּ!OS[=kI8v+4@dîќ''V9O͎ ӖgYuBtnԹ:LҔfWnҔ~KS%.PLH7”mem C=?&ols[vǡ \5y<—q"rс"x KK}#\_z!AK$vw, /w}wwQ<퐦H_@q= @ŋ/(+:i4E_  s)g | 7v % @SO=uƍ=W;i4E_ :(nݺu޽ϺyO;)ק>n}0!AqΝ|{1ig)@tPܽ{w~i ~l>!A?H$vw, /@DbwBl>!AMeZ%0^{=@67NJ7j@f!V.2'HG|q S0$~$ܿ(nR SQS$e%0ju;y \%=8ł${UI4z%I*bٰO/\P]/!?==ǔ×.IYO^Z0蠈ZR.K@d+Vkfs_nەe'nmgNz\lN:.%mgsN+ܜo[^a%.eFhU+FoUYdǮJ~u;ͭqi:ltiʼ؄[cnE':vr*kЋܺVXAEfp}ρ)5OOKbIteKw, /Ы5 ll~Kю&CI7Q[p+xL]nBar^?# 4Ki )ցS~>4BOz%E=6V‡MT ^MfV>(T}s;6W9dq1~-n@DbwB!`0Z> UIR, zQUi呛 ]FK5R+Dha­\B cR:zM?"Rvw D bm؄K-вGE6 v8Ў6(% m_FA.ݱP| "^c]K a8QeYg8^PuA¥jAA^ %@z0*VA7պ]ebrΊhvDžpvOñ,u9˭(Z \"c!IZݙ+j.wJ~ ) L45pݷyd6cؒ|[Bx>e躮h;aXG~q@BCj&G[|#nd+Ehvd{;Ƿz:~ZzULB]\;CZ;w)n-V J;15q"W;j]JR$'~1@=>-0|ǟ{*eKNG e'|0T'\#\dU.|f-ېC)auޡ碭;t4>V//0zvdH UmF!kf->yz ł iG"cp6F4%J0: 4+-~Mf$7x\ Lќ\[AK$vw, /@DbwBl>!AK$vw, /@DbwBl>!Aqwy;|wig)@tP⋲,ʫ(vHSO} 8`NBXA2{ƽP7@ >(pc7~\@tP!AK$vw, /kp^{=p6䂬 q cj`޿iNJ/*G+G54K;uw{q6NJWhQR}Q惟A"\Cj2Tضb^"@斲0I 4 *SP qvUŵz=֑Oɸ1uZxa_e=n11M䏃 g7XcJJk}ԐjAwݥFSr?_GjՙxsͳvVf!"@1L%R+0iٺDz½67 4p>䳏!2Lm/OA.ɸ1x!~GRPgNH4{ Lo )OHe0_X&7Z'Ï($mXWOYmY{w)})~U15-:ꥱ_ {=@m<׽fY6Lln,t~DC+6rszp-e;tZ)RRB薤N%oIQ;,u'rkIK;EW)[SƢ&neɓ,y"G'^}|-o6Ir}-7ZI'+GYn[KN%u%]TqR,uSUEN[P}~w$>8X:ׇJ58jWY~Lj5or!T]vG~;喊Nl)I3IN5od=@F%$ Yv|, '/1̚UqZ6oy` h-6nvtJQпItܭ$Qiܖ9#^(l+ʞcIɨn횸#b#ub2Q%ŮA'\%l]G6;^,Cp 2EatAp-uXK{?SzE5m<n'n+%t-t85d<:ڕD/WI߶7SL vdЪ$90Yt)!)_ kJr#IFf_Tfp5K{=z{4lW>(T܎UנU n_9:߃B"^;WpS|%U?S^IQ8[aZ=T>@t6hGJ/2`rE)hWQ9UI7 m}H{E.!i] sSzɶTUm/{>_v-~isT{zMj^1A5nj(|J fwO5̈́8Cv#FwP,0g ٌA;sIH$,n+S'<Pez:%|YQ~x+?CY/!tm;b ]wJnvJ]ՒKBq;{KEpiTA?28.Ama.:H֑,u:Bd2Xu3~<E/)G c7" P&UѰ7ѐ5\1Mߌ;nб= vԵ.[iJ2 DZ2lKt˓I.f];hGR{Dv9[B׈T]ݝv&LyJ:ʡ68Դ*2K/ -вYKy}錢 p15i*oD >I5lN(YMz5^?F;=P"M ox;"۹ˏh%\#H Tn&vDCJc#w=r0zI 1~7`= _91{2 U^FMA2Y?w Bp%e:{xY^P-)zϐR.V% 7Oֲ7E4QAe20kmg[.VRy!dOʿh惀5 8&DQ0γ=V),Y9˭VD]n蠏{Q|mQ9+mb~QN#HYy)kpdNMP.$)* R0mνDE}&i!|5ixNRoƱr;F$P2"M 5F"4cS٣Սfjn.\+8鞦BK|`LT'y@ȼY8IcK1ܭvf]pE_`=*iD5<5TvʠD Ku65 G5U7j"*8>3ٌ<82tJ%Jm%iE*hrT_=&a-(GNcS.Z޲&ި6zȆ]{$n'6pFY?Np'nF4Sʪg0=*T9\0-Al}S6 :W'eu$Vpq4C@]e Oaa2Yoe]okFMjTG{Htp[1/½675-$F/)#ȭ5w1n+Hr/,{Ky{Ǒ{PYU›IG4qclaωrH&b)-ܒW,Wٵ&$QusN=C.i#MN O-F;eчrvի k*H_~ٻ2dI„KZh#\S ʿ!> \wjdWp聓>ȿM#O.c0b,j?`E-G BwDS:AXꮷ?\;n=m5mRe.z_ZSCzh~)e*4cr[Gpf-zmYY މ̚a<ԯTǦ>6#ì?Li> Qm yEET9VXuӨ+[7]RBAw#-aN"i3y- nY0U;! Tx@S~۪Mqg#Ǩ|r~#yNtqdC:(ු\Svcj`޿iNJ|0[A/'%+4T} dM@Ui_tPא }gJ1> {E!I6j܊\)n11MdV:#.gLD߿z]s*^.v}Ci}]2;RϗDr="gZ/ZYY\3(X1ˊ,tP9Z2z)r K jAw ubki^ka'{qwQ _[+l0LB oO_>X錸1x!vG\wl}~yBn2* i拶;w񜹹oX~1NQI4[2@H7x3mj 1zGA'\lQsrY^ @reiVΙSVGW&K\c>o%.eWkfDr՞RnWIuκ;7YfnyD)䨙_JWv"kv%ԡUF|2 [v6I}o%>p.[;7ɳNv,l)I5.?Pon1Ln಩v<BV U\nCޘua,TLu7vNT_,{ٕΉ8)wFoT~•:e_{=@muqLV6E@k޶!3N;( YrEoLNu3z.u\$iKwh ʮ}M'i|:|+)AOř.hmHtCWAc*dq1~-C L#5Mt-~kv-E;RxVh=ըK7Ud ރb^vuuXKϧSJ?LZҕAښۉLM,RAUm~9[[(" pVn&0 m}H{E.!i] sSzUɶTUm/{Ն(#pk6y) B<:~6&y++$I6nw+&FA9Ln 6lC6UL)$J{oJUmrn@BeҍwE|K(ln_9>v|+FLfI]#1%~tcGoN̓^ 8}ZJ]a4ձ֓b17RE꽥"@4ՠ~pl^8"K|l[wV /H]NVx+#˗ے(8AnQ]SJNxQZZHֻbjqK^;SFC]3'R\\(PӪ 4QY6L>OYWH#rϪJdq8x`DlkHj 9NoI=aD +x)қE\%:"5Gq{I2'w F62h8]+":;}Ԙ>E)3XuDy,n 5Rvj[E6s#7*N{s#p h+vD(_oN;^x!bLbX<'uuBz8=xz#,|s )ǡ9L]A'\I@x/^!@! G Ki6V>̻qIr v#2Gőyhr2RvSbXɎUFc"ikn{AJR9]Mx*._5i â)4FlXuK(GNcS.Z -kxBFpڣ|$L#I9p#m,a w7E4,}L1)<,Ƒs+pǾVCp9 %Mr4b씲 u>Ewz({ģWeGAM#_75ʍb vʍ=tO-;3pdc8_{=@m[YoJ]~[clJdM(gQwݕL(:_|ٝd3Iꬸ:;hKVt(@T 2o}Q6>Դo-eXT|d}fu >e7DaR]~ y=d nJV[Ewx]/V|ݠ*H#eȒr9 ha申 rtF~%)SU&y'ت%H ',5kew%\I`[J]Q{46g;!FNrpǭmޚ6opr]'m[riM pI82KS1_#@ۖ`_ 6k^tօ47LAЏLslxXj M==fBW,+YHRTsY[7Z*d@1ƘM<ƑnDGm@ Fї2oDzgespZ䩙n&|w?pa[45}7/'>"g89OAczWAL=q)|s)XPB` \"h6o/@d!K SplGwn䟳O-s=p"Hf3ˌkE^R,m{R-m+|9{=@mn)ޖ3`,D! Iny+D6\S'?Q%JiOcW0JK>B΋m{?QKQG}9+zx$%3~?"D ɷDUUEVTݹuu݁50\9cJ9'"%R y>-[zܔ7϶eY.u\!&?( W$: i¸7O/\Tɶ~|a(U$­ʤ3!hUjx=~ywv6RN-tKR'ܛw@'T܆ r3whϮtN^񛍢@ܖOYJ:YilӕmEs$oN.~Boe!wKyaGpQLé>lE.rȎ4^-*+v&e> ]m mX5EAM.neYn%>tڃqEzsDiph;KWiJ(Kn+Z4NY^:͏Fzڜo]1K~!9aSg9-E;R{xʍ3y>%t!1 ^LkU.L0$^9u1ZW,4]-ta8v{:V>(Tpڰ;gwxZzܔl"Q6NRڙtmg;b ]gIx*aKAqO*;,7C~lKUUƼ]:Ĭ" ֆADG*LeaiҒ)e]7X@|+PР/eP)}9+ 4RT6N&ݐ%hµ9UI7 wIuVؑBy塃"H@z2mlZ8wK)TWtRY:&%Snn~TZ,@;ʨUY6T xMDc#Tɳ8tCmpiU<#C=&y΄ćLpoK7xGR:̀}s_]60d];hG^ʣi8`FR²Z% Fvi&,8M; 8*v )Iuӎ[iܪ |)#E&)X#ӟL:/u̡(]Jp's4׃Y gAjmg2c:(&R;yƥBpqʴU`{:=AQ$pV:JY^<Og yTag%)bPi9xddgyٻMṂ^p݄ W- 3Xn51 5RsC 7kd :7zBxFbq!ostn DvĴxLkFsΊ4yY.+rYVpu;( jpĠ~MF9{bׂQiң^K&7 $ʖx'Fst#֖9DK j=\MpU[@Y  q9VT-'YWptҥ)N@}n3\bEr2ihRo&)31eIymnUDn8.6ʾs9?t* IVBu+<~` ࠃr9#}AEp-m#t od[)WqڡZs9Lj/~6%{Rb jszJYħ-L\;Zs_3j(D# fd3im[_wYZdxA6dR.1h AC3eW^(0Yx)hn/<PW ѝ9-۲qW|#e-(:YO7QÙ4^ HK6湢>yMͩo.:hV&.UtyLyy Q>NVGú}Vf'xcR\ Y&~qT/]Q;YxT-Ǫt);<|p@D}wd]V_?2?oIeqA߾9|^,F;?hOh<0vRO]TUpbIp}soĪxssMv"v-wd0gE$8Z<62yr0دˋ5޵ϣOk^e^K()1˳UR˹4ٌ 4O,h/BdzyACvk4.7q"eU, 'JH9\ )'%Mwyo9Gp{龇mnc5]p\+Tqk/\]3i)U8/r웦vxTlL}̗I>N x2Ul7_ҕ!% i '.Ul7_pRR;^|\a8)@p)`s 0_|uxļur9%/pR޲fG[[i>!SB+|.qpUl7@` 7|&B7o޼}r $-xTG܃l7w>~fHX<񨎬 !؜oB>|/Ț{&>|xxx=  /H|w^Վ ؜oBC\gM|w8 \CϷ?esdp??_ 3XWarOwdBT ; k3bh:'O.$x-".ϫ-=+^? j[ѡ}6؞P:՞˶6\ ։|\S _\b ȝL:>ŗ85::j>1AHnl[dnZȬѿw|nrd> |oROf!$@{j<.)p Wv넢3uTNSeH+^GC4@Ʃ.eS= ]`dmWY*3ZYQgYM3iN]xP" Ɣ~C~.x0Y̊lFv7藣^IMlVO?49BR4W,/)4P4=oІTlŸqEcG[ΤM[wqf'iwho&tjN=[鮧c@]V="KnY jf \|yiNw$.3|EpzNN+xl)ӥxhGy>YEUQjjs;@x޽d#aU1& zO;娦_+:[ABdRC2#aX$I]-W ы˱&aa*[V@ج g4eD7AINܕu-҂rkNbRg|+""#!Srϫȼ+MEz7O(`Q7*Q)hja0بY^['qݩrz!t |})p xez/zf ;¯idq V&mj֌$T'[k4g޶HVR2?˚*S+ZQA9f˖w-h/K1>ӝ;lȻu&l:#$׼xߗ ;˸+HIcuc7[ j:EU+jyFv= Y?C-f䎊n8P+vU[}BS [ՕiLO9V\fv+~_ U#*"96a3ᮅ\*IdUۻѤ٥Q^^ZM.EAÍVa\ye0͂Y#mCvբcDMɽ4;YZx{bmҷke!5ױܵ8p:*e%_-6{ Wsr9W.dH4 g4D*_]ܒ7K#otެw2 ΰMpKIG?3"!u*!Hapskv4;{wcJ%۵ ;*4biy9W+u)NpͅȮ+_ج -VO")[-z=AK̂ȼMl"\yBb7~E>VUl Inqo] &3Bad"J\g"dN8,JgGR+Mת|lxM'x4b׎u9%AQA\Mݦ3ՂᢎՇuoraurv flp˓mS.9\c@˒u]]Qg}p&^9ǂЪf 0|׫6'4XUc'.pyٓG] mu毮]4X!Nsj_ep kA[}sLyZ5f \'.3l\Z,ak>9=Ȱ ɶWWa!MOn~~I~k-.Kc~2,E] )r3i9ܒEN)"TǤagzkP<ĪrkdE//k8up z .B[ V` ǂ7{JHYUIK كAC_c1p܄<)j۵8g؝ b /wGzuP="!e %.37M=yˇ||k-% Z\JFKpVM[ț\r*ӌ?pzZiϬ#]'Zt\mg{/ܹ8 z#M} ؜oBC\gM|w8n26п˗/no@RiGudM=|w޲6g 4hxƣ:&`s K~UM_ %jп͛7o߾܀IŦA3Ց5 M}ݻ?-#g<#kA6пÇ>}' xƣ:&`s MS3"M}vpxc26п@pA9߄݇ 6QsOҰn6!9Ap7 mۧ=SC 3Z]2F޳@YA<o؄>pd0g1ʝ:E!m<"$@;=FS@pu"YrI1*STbz9[Mn=%MU-W$1o'"s=<.idL{vWzԳ*p:ZVsDj'fLk#WQ$jdܥvE.B/e40!.3&͙ZneK~Ws²5+kb"r=2%wvU,׏z{!7nɵu|st"z:2.X3%,|,ܜ]mkRʨ2\n僿hZm_=16*D b~`\wiz!_t keD\gMCSI3Em n'c <;dM #hRMT e+Qv,<4)52˝kgz;ޙ=Y쀨^{=\˿&Ўh\NGgZԴ"9p8CDҐ{I>ʹ k"s(HZ&*VxlkeD\gMCK|OM%NRE:&g2B? {}VRqjתWcCQ+\L*#cmƱY;:ʥ]+sو*4w%:WM\gMCG7K"sWQrME}STC,FM8p=uں*9JtEpiYhM:Τ[n8n24??>%$LF7/̑ɳTdSCM ET|רrxT>Z7rz^s\e*ɦu9"8/`{,;Eo2pA\gMwy®+s\~=𚮋{ /;s\>NS@paI?'<3ߤ@pasw|=2o^ȗѿI#.3&`s Ap7M}˗_77 4hxƣ:&`s ߿oYO3Tlx> stream x}}M+Lvn}e6V;ef}ږ3kmHC42 1mr*fRZNӭiWb `[%آ-R rNcx\jWZgvxy<t```````;lk ;+8;&gb>8~Ŗ\"y/&}&zݩk]hgQ^ʗHvܺ4n¹,:SNB.${)vܶ:ۥ3+[r ׳v;nHvZg r){Y:cy3y`[ yM7okNل.B箘O>N^7ztObu氮e7͝<|B])I|ˑ=]Op: LNԷ\H^ Ydg1!7ng5e4ݮ{{𞅖XO&sw):ɧ{~Q/v#Gϫ맏Sco׽'6MXhnx:hʷ72{gSV)3=ekE}ɮ=aYSzld}aHČMk s5hK<߽g asCXZf2޲r}D/Y]v<{yy䥂s;|[(+V?5c^{ |{ !Xg7r2/&}f =G6˸sgȋ&щcG_JܧKT𔩏EqO2ey< y6{bM<Π]Ggۛ{&qeʴջ[x쎩7yo{Troڌ}:}32r?MixLO^2;%}-U_0TĕYOm>5뾎y~v}cN 3Sz_yZ=ɫy 1ivK$@t;^q-n|փghr> \d͕&7G"w_gI[n}pn2p%{];KQSlߵNyNӟ?^>{⧲k//;_Xk'n1vM7>^[}k쵈~">hp6{p_߫٢ :߻R% 8;}t=]7[}pޕ](-Fn65?~c$nɯ}Vt}]//GKXgS˫iz#8PWq6:͞4eO [)1wta[8ΝgϠK[[γJҖup=Iβ]Ιˋ`h&vWq``````````````׆#r{4j ; 2!'(_@0ʬܞ`|CMeeU3W3-.]FPwK_~epyݨԮXH쭵6:`utJ:}fXSl-sl)";\Wf(jV8R1^G~!E*5{dm^Z`xY`)tK{=y+Q(is"T'?phZ&pMPxTY:W(@)Ub}TWr~ UbK.ĸy5`ɫ5W* ^)vT( < Y 1xeܦ 5jp11F}YC%l4RuCQY+֣ !ꑮ&$)[gQ!z[fUH<=R SCv>Z5jWU]e,;Hgv,jp8ge)^6e%Fiɍ$H0?f+ybbtWs KZg]vɔ'*LTJ簗^R3#3z5Ԙ<#KJܻJ^QP:~čW:r^j'K񙖌+ܜlPA)4ezC~d/26?thkge%תHVĂeqr^"M3:^wa;q.1+&Ay@^р2H}ND۶h٨D+˫fzOeՍ_zߵԝ_Ķ)ۋ/ ;+v@^G]CȨm;[N isHm. Ub޾EӽԦn+ؑ-ƝW9 Qf5v5bIYx)Ѯ-r+:EeK^ݞ"j+#yDr7_CCRXcV^ЦR3#3hvCR#)EUJ)*\͌;ozyIbi'ԑr2xD@^GFnEkH:37\b߳sc+%)Vtz (V逵] .S ?MyN ޑ']K^f 8Qf-M UeVDUXE) lQ!ol#ZrxhFՐ /vAeVCnO0P؁aY =@` 우{r{4j ; 2!'(_@0ʬܞ`| (z vR-. +]yW+(r^W dv`|4$deȷ^92WcSYiWQaҸ}XH쭵ƟLuY=*B='4++(*0g}D:L͒hZj{zNsRavEDiR̊_$hvYR֝p3[ub=v~UF5bQ>t#K+).ߒl ('mKZ\GQG -nPVcuY=^3v|尯TOtZD=P뭺% ^>Z^DC$63~r\UuB{4 4$1e[aTq1ד<@P1F9,R/uvͅ'(72`yi ?lWd5jHf=\'/cOl%2ن TqC[܉/m7;XyeV빭eq 1;yxvV3逯Xh|w^qe?Ԥ"@35_Zo`G6Z Ҩ+ =)C%uzfΗ=?XʊM^Kt s`76)-e/TPKgÖҗMW$Noyj} `<@MUWg CMfP /$QXAwtDѓI%2<`*Ww;boo.BCbUi1(}"^yݭ pV16G˸ÅyeVo [.W9 JHR΢R#[ >I]҃R!^ˢP.\zPutKr= _3d]SE{Q聩x|)- hse NwF֤d C"ejgvLwu#} 6 H¡-nƫ+!J+^TeY<<`Ti5Weq8ֳbqm6fJVuգJ(&QhfKsv#e VI7-MW`j8ɫ4*i/beWCcVV fQTwYvI&@^G &Y(16qtdv,Bj^/>&d;l)3[ @h&9i7-S״ J3Lگ{Ez~.[ƕgA +dlz^Bɶ;9dqJАcȲs<G-ϗJsliГW,O"n2]2k Gײn.cVƶ=6i;qJBpmpi/7[]n6"LחJk2{IXIyݗ?3UR \M2qn5QEcK1ZcrWȚqkFN9[m_ϽD+ZN ia3yaǍ>[}MO~ݡ00UIm*"qi5qO7 &:˴ѧ&BF-3z\ڏ`8Gr4FшqѠ^qE(6(%GК j.vE5ؒfUo&li0tP^z5[ewFqfʢD "]/ΗjjuYmYr <"('K_<~-লD-d5\qDE?':"O]í'8zV\Taǔ#Eyz]LKrGW?/o6Rc׊;WT 0h l> -y,-Kg"+UZGUr"F7'<9,Of8[B)1kjtOmл{#y%yeVwIY-R"pJGKd)>Ӓ>9QQ6`zC2B|;'KL2Žy5Y c+_}n`e$)ױit/Hx`P{C~>ی$ejrN}ŽqX6]˖upiK=Ct5U3lN7ڸ1פC*ӯU3S/ΗU<`xFyF-@ǻCѹn[zӆׯⴷ{36X?y ωz_z"͞sFӸhfx}#Ϻ\)n乯ʣ /Ԣ.=C-_+aCU)9@^U ƍ֛MtD4YS-RHwDA ;wMvXB!|b\Vl -jU53*>4ʊ:ڱ4zGБkڪP)Z g?Re'~0l,5ܸ0z3 @O4 dq.z72=X9`,H$X)0?_6v.kL#(:,KU}PՖF)|<ڕWPׄDrd*|y%x\ڏr۔WVn^5a+{eHY(`}.F9[^GU2e־{@d{+$+5-`eʫ*`kζdħ eיqW+UӐGu >EM)&Ŭ}ݓW%3c=ap WU$I`PudY]ik#mJaS4?&I2kh++Ij%|5QcwReZ&kV UR89b+8VF"FeS^(X{IG:RVhO^~pCyX,VZ*}fҋW՚d"NY ػ˺$s╘>\㰡!F簏S 52"]ZQ_1TMIu5p-.zgJޫRtzI%1}pW)kzt2M̽4zN(V$dusytUԂ6!'(_{[M7fL؋!@;@䦸^xM$:R^3c/d 'xwRk&El|`rS:tQ_mJ / @n ("0L(P0)@^4`BM1D^Uӑʫ u5 P.| ėFO-ϵ6)U՞FFf ciAZ\}RGF("c˗cP?k,jnm,ERK\{rЩMXWEST£J:"9uQL%y JrzFifrmKg=E8uWԒ4nvy; #ѽk*,ZeFqW z!fIky 3 ;)6FhBuCO 6dn=wŁtjGkEdPJ.1fKqWsF|j|~p=@Mn&4U;v"_KѾrw n|j*N{bT$7gK^phrxZQc=ފnT@bcI:ˁvyK4)= pQkt+ Izُ+Le2|c2jMK0L׳]NMgD*0ڜr7b=U2bk7e[|JWv5ohOP1NW`/]I!Tl4͔pFT=FBU`b.-oWIt15{Mْ5~E]wdmK5;`6).7ˢ\Z@ZOJm9LZ2`ƁgT:f ǫ*(16qzB(=llQMyN`].^pHid{Q>uږjHŝ^db =49 rSciW 5 gӛbcKW.3Qڒծ2ӝ]lߨ&?֌M!`Bx^(lv~KVxvȵO6⠤5W.-@uX>kH,h8!۳ޣ+0*Mav-JQa2ڪF7:#ѽk&'k4J Utu%KuUHE/'fmNis$.vSrt^Z;D^D~% .ċ@WvX*:Z@>evw rSV8TCekE5$a`jO c3tU⡷TlWp[4lFI+b[f;b, qptq0T7ix1-#viCO(kfkwqS!&Դ|5|yuxvqb[bZ$(G)d(š$T|ȓ-21Q&`dbWke cilWl>S4Z;L,/`qyJyڬT`)'&zFЯd7XAy5\b2mJyEuTq jr˫<8AOJN0:+9Fo޽zi&Ѭԡ{8Wi^xEӾ?fL؋!(HO C)E5?"p 8 :tQ_mJ8G4g@=W`45 Fo%ETiE u5M[9JZ\ZXa'Cy2ES!uLz B''4瑆 :/1 [K Y 1d[lQ4FG#!! gC>y-(+]2ZؙfɫTqXAj_6z=R-`mj \3ڸsx݉]&*h)J ˫5!ig;L Uv&Y7i6j94(@ iʱ4jL͔Xj.ZCu nM{6jEHr"l񨏸jko+_rס'._cwz^{=/ׅbtc&aFh_<=uy !]^۵(EhӸI )ՐnycMU 91y:P$3C%u Ƒ0ym=/ \ z(uu1W%fŒˈZ(@ if+jFBekE UHT?zc\ bɒ$p[]Hٗ|-k!yI^]B5OCRcw,e*qYth`k3Bk!@ {DXn<9EI|;'KL2{UcjX{*x[-UyV ِFoWk'g(j[xFqzc׀1^rٹXg񸧚Jf EU\g NQit#Ylgثsd}fph@WɖX1J8@ i6jSG:~b cihYJѶ(}[#Y m6'np"1e־ESYDŞlhQN8 7Դk5c_2 li@^Դk5ǷVH W5yFSi@^4g@C$:R^3c/ ?DRRk&E@^po  pog56aHWطǘm {8WE_ᇥ/~q塇z7z{ۢLu%ՕL؋!(ry}Svx^-s;W2c/ 5zzk?3gΟ?aG~GCnJ]䏽+-//G?:y;=W[z?t?O`;R}{ʿ!vŒ?"p 8 }a̙X ot~|^ZǿͩߵgM~veF` 8d2_;u;;j˼^x£??op_·A}?p@^qHMS92MJKYZQ5=zW_mۧwԼO{o3}om?ODc8 >vyuk;[)yE19}+(}z<ĉm^;=?|ޣh?T>B!'z?ܻGn~;_|m[Os~0OrJ*TC96u㫋@|u똇*,xw JPK{JHy:XI &2Wb3ɣO^YEzرzy 7Ny-/ 5LE P{uc/=y''zr_x3hWT\OVk?o:p*~輝Sү&Kop߼鯜8})kS^u!۵L"hZk*9_I#lW(/60~ܚ)qd'__}U$'O{J"*OxN򲜭i{ 6#KJiˬHyUe$N-24q/RڽWMqPodiVf%T '7;vqo Eޝߴ6G?/96#g-XQ¿gמ%z=$=k2hu"Omd&ߒ]v#A:Uq -(4m]cPH6Գ&>yH^xӧOK6{Q+ߑ7m~78J?}W/u~_8~]~o'gڧ۟EEKr^w'.q8h/r{i š󝊲ScH6Г3g^SN;w=st2>u=>~Iu~wࣈ>݋6PT&0;CEQDڪ(={C/>Q9r}unN@qb{8˫,&Zb~'0vz޿s?5wq>w>K؋!\\^&^ӟ[3=>}fQ++CyQ5zugo/((&(>(VW2c/ lξ]䃁>m(#HxH endstream endobj 870 0 obj 15878 endobj 872 0 obj <> stream x][q~žŶ0۟6%)4Z{z썱{^hf߿|ǿ}ߛ{s[K_ooo~?}s__K.}^߼Oo[[Ǩ  =+y ղg;ӃP yBXcX2~9:7"H=@rJ=ijdZ KhB̭I׊҆DЊPq#"-rŃG8× ɡAB'IB$ D/ti93It~ H"ZoE/ڋZ@(r25 %VYj` dG(j/څi'/ 8#b"i-7W)sa\DGA?cKH)Ac zEkU&_$(wXQ 尢崞HD;=Izr8I"kE- 9aVZǟ:ݺt놥ë QXAvٞ]hf/ Uߙw%kq OyU>+Rb[}96pE앙-<&WiUlW8?W/%*zz ȣZ !kK3!PweTY%BDRU*z=9H BY|hRcVbDojCiDՃ4^+pt={0/ἀs'DAڍla^] v5632LGM^$Iaлa ?~͚@>G>D LA 48|%㭱,M `ĺ/QS\m)FRJ 1c6u[єnD%mum-<-v͟ժr0i1yQEŁ0fqhJCЕߌyLZX[Y!蛗}7\h+z֤aI !.` YE]}Y56%%&1DGP2N7[չڲft z ҪDfyFg#\ZxWv1=0yᄞ];rwпPoCD;X4/(`^<O*ǩ;v#ݮwXV(b 7uA1w˗W"ʍJѺP9jO)ZIE>ԡ JW[I [)y/̋+şyqxҸ7 y/ bEW61V,_#R-W*j҅Xn'JB(E 㹏_cѷ%c-` )N" )EޡC(]]#usd;EFyÂa1TX-)9V'VҬ)14~tvU.K+__7mM\Z[AC;B/n /p }8 Cn;R^(r>[5m2ı5p(nюW\hVQgM}1bX9N/ؖ!}o K.ȇ["kd V0#bxa>e6%;%sXe= 큊롬6#a6oZ^|ݯxn{ғuA$~j!..5yc3]5qU}x{ђ}ոSBU`u"XNu+&_y7c!ugs_e21a!bD7L۸׺d bɝ>uWU[2$)':iS-R헲IvyD1x7T6#LBnUU_{f?#q+`+ܿ;^8/:g\ JW#((l2P.ƀPrnᐪ˫8sy{|Aȕ+贬R"yp.[l= vD]Ƣ;Δ;kW9j:fĉS cKE"h͡d+KJپ[K!t)UO&+C&dv"͌YZ?cBANqʨT偿|s:K>hɼSZk8XڭhEKQ49u}'CO?OO=N2dE O6U7 ?G<N]q}.pFH|n8'HFkrQ5QxԄ+Z0Yt 2S籎wYM$.jE p H|wjS^H ^{%P_.(hG$f RO z)}?xTheƒv./ ۥn!<8+^MwԵiaRY*5Dϊ'WAbY'rE>(RCekVi=l䱢qj P ɨ{YJ-#3I*`˼qJYjB|cI>8Ѹ |်MAE tJ- 3Hx- 3[)JmU8z;;hȨ.+;F)"yMdC`F}N8e2YJ:Xy) -'d <6wؾ1kCldT1+/z@,ܥʟm8fi-ڢ?YR)M~ZS,(tأG1Gs/YprU{JX.؊Q jϺ?qk Zptlj:)Ai5h{uXQ>(=ǯ#ˈ-@p- Ssvhj. JiX;,PtdZw9,Ze$>l:'5H0'KӺYCűtH ֚=K*},d8mZƢ-*ue}I:4QvR5:54h,W;O8U[㑅%-,8a@!8nWAp֤O~yv=vg!Wd=%5jyiE-=?ZЏ"2r\9Hdܜ##" 3:1* ;rMDI*@I^["`{ݒF=gzF+UobW|A̼Uk.1yuL *N of#Ԝzy@WjwQ\Th-'ᰛ~2{=jeo+=q֦Mʙyvy&Kky7;zӔ xh#pۏ.,0:# }|mf4;[Z5Nɶ 'G2f+s)z֑v!87\`T\a=_$NSzqoZG9odca=|,3xԫq(ՠ+hu:K#IΆL#HP*ȱ1+#yWTPżR_nh-hʽ[r%#pF#2JX5K jeKF׏$W;Bʚ$r8^d.rرJzMe( U=HtzCn`j=Nk8jn"rh(-9mvJ s @%5B_R#G7RZRAQ:V |#EzUibi+ g%vf*v cth=at_E59FswM \.=1͆[o;$\@t}|kb*qVJvZ-/[e,Հy)b`^z*z xH IZL^P⼹{0#iU<8[u- KZ1|q%g8Zrr3 NR:Q*[a["J7dwP9nJ=1xmDRzQGH 0oy6g:D;o*,a-P<P1w@ @ "Y%ɲ9W+AGv!([G5Ҋ qc^#]q`ELKF4N4"3_PcY<Ґ"."tƜ4y-O#Xr,dvרv*Ш^%{OSQ8{ɞ:Q6JOLzFz-j%R{8yV\YdJ[ZnFC>mKRiTO$5$֥NZ IvNb4һSvw%z*,X6ed>R/`e7,@ѵ峘gV) ^h|<[BZ?r_@&#}uk+&\/_ӊ,T+0~bt=?9hSl,q?}Qnȳ $Gr28=XMk92$1IJKTד<`y ș͈g6!( h(١5jA*4(Z9k0|.g\j԰8 !Ѯr$VV-1-S;9*ܫ#q&oVH_@zԀPwE8Z-6zT[K Uj+Ju&tWRB"aII)P>b򖺞SA촽~z/(Js^Z{dvn[]-@h xFRO!F&B| /l[ëJ$2@j|t>j{]fplA(JRskfш\M堪D,P zy Jׄw)x7cs􃈒NanXjɇ2NΣe/ۛJ']y+·T%u]S^ac L %U.׮d-h64k.kTjiMrX áW`%{_?86-znd*Ei2iiZ@o-ЛE ٴHgf,ЛE iך-co]лEִh2V:+='[>Qk,3&*eDKΏd2:RVxkqïUkYZ_~3WW|[Bu1$1邢P YcKskk,]c^Z%VK&.QgEq=fr{25Ez)'NEęԾYGT%@()5):D"jUԃ 2hJ00 %5,oZ[J\u/ЁT@ZGJc.XOgsFro%=R4ﺞ [qXܣktc+p@'*1NSG2u:;1|خGѲT)~"Vj\PbZ2"z%Ϟ97dOYߐTqE[c_+p oz2TH=]J{R<ёvP̀I8TQn"Ejpбwj- bjY 7r#!FZB{#j 1=E8S,oZmGV^$ l(-q_/Zr":S9;hlg'-ySCFƊ:A<`u(aG%LʄX>,@|ӶRϿhN) Hw?&:8-]ȴ-=x~)F߯kYJgߌؒ {=p@τ_ pފ9,ڕk'cXdC%ё:=ޒ{UDIdU$[g0-I"O`rEz[˺p]o!/oݦoyx/} H>yx@_(J tS,Л|Xxo(578؛7/ЛypUeHHjLl/ iwnilorqT&S#K't=՗c±d*\yZ44UwT%5,Bx@9HGÖvEwY d(Z۸f[//{eb GIc7~{^})Zj%?^}n"Ys52Jr[Ht-"'N 7@=DGBOX/(֣uS|XL7>GŊƪ3͎4;#L@ BJMC@(Q|ك :tJrA1EAKxE Yͪt:Q+i $qN0b2弭jvBō2Fk"qX*;7+8{eGZڛ"ʦ2H_{J:Q*{9QބP+JxG(aNڣ nQԻx4 )C9$gёK "ӁƢ{fC Zz|h'_ہo=/>&KgoϒNXXRfǦiP,srZr`J*s cZwZ)M.얱PW*Jyj'JPh>L3Hw ~2Hu@#M-[3a*0vyowkl _ƼCwRRSڞGXLj@h. o?RYY7ej53+>;\_ʔP+ͭ55J;Q.9伕uñ9H+8V}EŅ0OVDAaMhT X*= x47-c{;,n4:\gt51GJ-(u'[T!%3vsA稸)5~=؜h <7I(uH2+ZQ|g2w4ZEW x3HrRIr[H\OƎݜGxpKuJ!oܾLus V<3:$ܕnҴd6*kIR!c 4=kվJ}[(2D@cb;tٻu* P'9!?Cw6 NtZ@h@I:&`G:= z8!nh}^I+]g0sY[R5<]q DaM샛- !]c{@7|x^e5X5wHu/nZ k= _(zC8w]m{T<qd'<`)TRSv@e)Ӽ۝RUiZ3$݊L~;`d/#I=]:4RboENi#@ɻs8voL$q#yKtr^{TQ#FWDָVلx,]Z%qq\QAIk\+;3X%g5АΔBvAQtAR*9\-yn3F!(5z*=osR@y%-O8O^"EdmmnJFּwZjN-T\Ij襯vOҼQ8[Bْ%wŎXQv 7oy3^<y[qY? 1-Ƣmua[L7,@|gbn֨Z?  Y8 nut녮_nlS`5k N!2ق)іij]νC(`-&)dwXr#RZqtғ4^VԫTbߵwҵԦ`-+JB(cvY;?zk:(EW~b(y %Y:0-tθhyϠN4U:0s66|ѲԼ\%EhjˈVƲ`Eaww|LWit%V)qLho9e[0))Y*B7> stream x}[-9õu}+{1}_1/w|Oâ_|[?ׅ=?7Ty}ovy}Q?׷q-~sߔ?>7|޼|yz͵כ7Wzo?ҽ,W2[?-嫤?~/s_~oZ{K?.MUKk54``j̯?O-|znT7: Зs ڦ h@UVXG@SW9njǂ 4\I8_{F>mt*=+RnC'0\rC0%iv [˜b. ,D ݒ$Ԡ3-]~~k$9 pTf}BtvsyTrAB ENfz: @X 75ƽ`ҜݥKځ|žJ{G!QwQ}HNSqmQۗNP|JW&jd-IAzPF5vhhqW&\Fj+H/xhD|xBԫp2!dh;+ޓyP/օfx\@Hs(rɥ#·T)\/mrك "ZHڬ(zaaP [y=<'_Œs A*a(~c^p>#90'jr '0^u"xζDq#94+RFotUJY*NwZuAZ ܑjĶY;M#8\Qȋml9KOQbBB=RBP:/&:A5B/߃lS̟Z_-H-ϓ*ݸ|8-6c[`ta֚X|F\JqE7~Bבb(9c}if?IS(leLf`ЗʄQ8ip9k-Jb1aưGLZm|$ ,ȏhBҒSpZTR*yxgȳ9vqǦ(Ihإ:^ r1΄f0|`}j݂\ʫlM< Ua!ӎV?$=G8M(\y*Koc*jR$ zajZ}0O=omUM$] @+[\ Pw=gK*T-L]+5x~ۡhmۀ~W=K@A)q[W飷 cގ7(OhR4 iacƮO:`Qaf65n-- -γx-BKD3h̊~(T`I8Pt0VPNdgJΐ֡K%PPh2 e/rV6}/)==Ǎ]An#C#z鞭03ʚAqΨhEJ0Z1@9z\DU8 *:Id(A;9qFdTp7ZRηzQ#zk,|5t'n%#󡶬7шHz fcp }djU~Auk'O A`w - 8nɥP行Rp& !Ԗ{T=n'gG#e!g]l'dF])qsUWȞ qilv> J{A˽!'(=h ОmCR`6rVӾx I}{b۪ V팎]TU)Ncv|֦ϗ4VN=׶(] C(^cNR5Nm1nD"zuc"$"عeBrhƏDU/ATɩ|{ ڴZ"ǭe@wsZ\nGE̓V ܸr)d#9 מSrhjtُJ&X_ _fl[ڠ j~hn$ѹ%W61F}5.X SIsCvbzhr%(U@cq4D#"gf1A0f֥:P.A[,9;Գ*f>eUhlw$FQ8 "i`[9촑R~r-۬ ^4.rjv^ea}"!n%/ 1b7^Ϊ5_ʺȫOGMޖߘq+^\heQ5Ju3j>^V“b8RtVp\?,yNEstv LƆҍ '2YqB ҄YH Ж[+RL %6QAH1A:|j#GuM蓦ȷj3Te[~aJbr5ɖ8V/^; jͧ5GDi,yQT(J}?8=}Ǔ$=0Ұ%O ]'f}L(_+j^sV$GaB*(ErIs[<(=$Os)3j3<6uBCSW:HwɆP?1V<B's'F}ol=Aȟ~ŅѦӋP>ib="ŒY2Ў*$HPYIs+J@eV;fйʠYm'B#O'JY#?,~!O/| -MdJ*&ӆgIYWZϠϔPiS|̭nfFgzU1`֚ׄ,]6}F6VpUp_4k=R6oeܒZ*4 jSEMc~^7t m^SD>=7;GuaQ,0QQg;LE|k" ͌tFtVhnKJE*$s6Tfq?rXМvvPxA~ŸPܾLjCd,y Xw5ǀP\Al>wzIwѲm;V8#Pc`Yz=7eM()N`Uqb>}:H-;Ng)C+akd EuӓA/ړjMLjz:':LEDQ=vֆbJͨ| 9OSڍMSSqR9'n_?cn?c|ZK_2M"S .mq1l?7hoӈ >o15VKDŽEl7"&J+4Lƕ Jn  mLl  ^%GLtișڛ2/gc&b=*s%(HN(Gv]k=Ib‹Eo̜8E2ԾdM0[Wc66vm=8ZaGF 5蕤y]zSW+:8? L`:LUü0Vgu%(Gv/(2٪sQ2du(n{u趖qD3=* Q٣k44*'Hړʫ:C݅QQNnv\(glFWNg3j|z%P-gRTrfbQ?ݺ:|m!g-g..|K/q?/|GkEݷ"0>'א 0ۍG^޸{%xX>"48{b?/r z֔m5cM\{ i o+dw^axx.dO\4κB7Nox[yz9P |H^.^6<+oԕ~EZq%M?D eBBy5ojjTgiL3Wh; 3\`]6o\ijvѶ.^׬WhE95%|z1Ag<&jWmyxIYq]Ξ0Ts(?]>n4;c`77 P:}.b57jST$-7ϖT4*cuWFFQK] vI*Ґl]wȵ.!u!ӺID2"x|F۾9~yC+ճyJm^m^0m^Z퉭ʚsv㾃vs ppX ڍ.-Ӎ>r37*u}a mf.#;L֍"dhRXFI a `NE 9oye #WXrhmCm?, 4m6_pC~7ڬz*zsK-<~a!%4䰆L K-56$vbJ̅_}(~Z 0 _W`Mk*81ԺajU+zzvZp m\AU \ՂGjG2q73Whkz8\][4 ՂuZpahՂ5GU -!4JZϨ*ZֿQ-YGݍ0q%ѱ惡ҲʨueT ֫kT ֣jZG`Z^]Z¨ZZ ڥ&d7cV-=Z@PR: }\obd]ixC8_ :|op߾QRynv}7OoW^\gS8E7JGȩUD/8eF]}#U|G~%44v e6{\Me|y[^X^UC?ɯX_O$b?[Kd D%rB+ۇ. [.,<%ra?=%ra6BS"DN,;!(#h]5Y`eaNW6BU i!=5-B7HObWj6_5/2+/9e6j-}r(#T4,P: ,=[.Xnk͍ ZFfgE|bV={[{B89]ODay?D֐ +,fa!,`U7vƳՙ{VԯVlɑvlM6`.YXcay|DcY,;;1xF; [-gN٭ Fo^K #%7-Z6G̵dD\kl[1R߱֒wu:@VL|b~ξ6;Н=Ỏ͜.+=e쓮=;ōAK[i| ?j].ԙq0Y(y !8U=jެ9ҥqͻJ̻\]mV/rz7se]̻\ѧ.k*w0]֜e=]x].sWlBwsyAywfΟȚ1ﲦrxk޵|E˯;p/Q- Ƿ'rZ荋 2 ns)z>qf0uLRi|Fpfҹ`WX +0#L:VI(DlKpDž|I"ru 3 yE|quJv'5m54oGOdҰؾ]%!MRc=4vlf(m4v44v|FҜEz4VOSMBum(!;p'eҁyݯ# k7ySZE!-Q| f7~*r}Fhj,blm HcCgR j_QuG|sʞ9*!廔ftT^-(U=\J "C$̫DgnF*ǧ':][}U飳oIN6\"|*qd$o8@s(#}>='GO@(/U( xAalJEؓw]NQvfkm;m3'pV7A~/`rTg쫔nOIȶaKs@)9C^ J=g$sQ8)*m[?Fڥ"WmG۬<-JI(>[[fz_TѾ8&&C|CI=/9+y15%RQ#1ɨzJV9ՒH#l"Ô8]_'O 8aR *}oV,A1Մf  E3'="Qz}\r?%#̒hel5f4}'l˥@p5o< р> 3|ۡlL]ažavcMq? <~<{ף|h1%F^KߵNxD -f|Kr:x J_@@Gm&WJ eħfS[yCFD1̗47|ݬf}.?yb(?<5DC2Z#~c_?eJ̩zN"<%=z:߾.^ֿ~;??m-\ endstream endobj 920 0 obj 9942 endobj 963 0 obj <> stream x}MϥݾEgQ`v3 0@&1`300?[W:Q:WEŇW?~__~?/s_㗖o/_?pڝ/?|}O%}߯ϟO{t%?w~&R˟ʃ3T/_~?yk㿔w`5m`p־ ;-?t L;"ޕn7@}l0 HU#&Thse`r_13LZ=tQ2$melq`[zXsz,ZiW?a^mi=ūs Y(},@\M2-QLV[ԓgTضZmG4_QÞh~XJ d)ྣ% \p  ~8WE9'VNHc z&cC )]+dwE Hs 8#o)7.-Jqd`usho4.5(pOtbmB~?#Jk!Uhc$>hp9 \ƽ)$57f#rqLUƹ9A\HU(Q ZO4wwqK%+<`#j{jx 8.zeCNzg*gm\;hk\`M5ew(<$GvH|$͗L%/2SK>@-Be_L)ǖ9.xYݔ;r {.ãۉg[/6axEC檞oGyfG|o0۷erp=!;P\CdS=ȑ` u2C 8["o4~? ]x5a8lۘ{]c.an@hѾHa9.!K$9CZɃ~HW@qv v0>UέFL8U۹oxɓoׁ  AR^t(b %y!;Ҹx>4.)A|@Nљ!zPnҙ!~ R1|ç 5m64DqNޟ zѠOR38.43Phe9FX[}yĔp\9UDt.J\$H28T- 8ځ*dYتԠ8?o ǙQ#EoewO0رDREhĵuK/2˞#ZDz)FJ&rўTJ@]&/mRL>\ HlD'p}=Di$c=ɛ QnKCgH̋zc-kww+NgyC8h3Kt,Qic7{w v`oTwhl_6~qHM %%*KW99w3fo V>ُ)QZઠ#X# D,H1mK:zcqRxAڗj-CzC"u>rM<.u|.>V]qU2>kn0ߛN}oeMU|$}(>q* I$إFKI{c8 wiFxռcIHeΧ(Z0I ޱ~/b>ջN]c y߫0^Bge2I), %B];yrP-*/Uȑuj޹X6%0 9xlsGn?I]^ m9czEӪJ_Ə 0=ļAd<1. 6M*vC @ 5m &3pJʻXǞ#GZgq7>ҏW>è .iʞfGYx۶|Nr_)HqXgB}*D\4I(Eɰ7R2 _s] %_mg#)᧙tE[E#݃񅽄IQU,Nu1v1By\ك!/UKI^ԯLzbr0WN(}MJHJs+JT\;Dɷm Qv8|zvRX=q,`m@.:EK8lL0LG걖 L@з,6`(f%t_u$C[.1r+gl_);a:k?κ7ҌGiHlhJtW![o( dvѣ F&MƉ՝cj!'8Mo oƧZQ(;F.ǝsxΡe&գ@Cxm9F},}~\zܴz첈//%WW"o_,IbIR `IGjZhbZs Yt=o~T={B]^9'/7?!w}hA \A Z RHх@9GkLrzϊnmog`e`&VM^(Ճö[9UzFg0xq3ΈVB%aTkŞkɠL*RܘIEo4SE8Z}tpfEUHJhWʬk,hT}z"r!'XqvEH/%vԧ处vC&P/+ԒQӭvn.̠nID!F>B;7$F8^Z֋nl3͖K\c¢fSQr|{rךJq ]Y󶗚m򤳏0o=(bimkE3͵f”j3ZGlk;oɶH-OwZM2/poo(^t,⸏"> `WUQ~ O=8l7(`+L1b;z]?%a-'.4Z7\(J.? *PwѓXҍWV&mC9^Ǿ(iYF@1Cb 5GVP9: Ҹƥlzqߧqcn4s"Aͧ(6 Z:s[UimDyі.Z4˜( :^pNR T=}\e: V\_,a;|W\>j<_{Tm ;aGxeo-TB9}8[N4QgsTBɎTqumP7J f3pg BJ)jHN՝jCw͇@Hb: )W71Wr.ʒ+ʅ (M鬮 VHI⬊5('L\DxrjDjADy.?n}6Ghn}'$^#HLW2oՎvG${MhTG #73բЇ?6etn'nkS\c:tZomS9|y-(9V`s=F]@UJ=VT4M1øy U;rFV P1'&vK}TiZ`廣$}1umGҐZXFd8iBICLJ8U՟N6C. .z~w@|<#I"VbC)UZ>5~HOR]kޅFSG%>bSE_Unl¢ +9\r(+g'WFOO{pA-KC^*𴳜k*j]!db& 'n`lEy@ \3v14 {g^x;pr3e5YF]}/?R㻦k֌Q69|Ֆ0Z:U6P{8.f4iLkCkG@G՞1o UN~7Sќew@9fHHx7E39^I'\i$ dAIv$$D0XDCi1ØC)T@/9~~!"r CJETxb]s{ja|&H5@imU3!OX=Ӄ{dYN@ ƥo O - D^eAnPf@@²+R@P3oOqgk})㹓i. V8Y/dM1>t[hB ⒦.zf&jK.`rŸ/Q(ΏsB eg(Kkh[,4{ $2(=*py,'9Uec-蕷sr})8~/\TҔ.\5GZQvqSF '[eIݻtRY8vh+*=z76_"AE)]g<s|B-@tcyD+ׅheTEr u]K]ԆRClR xg/M8]2v/;x5U+ޮ/Io.W/˴jY-wm)~iQt xqPk&:U`G2 "KA4S]=PTYũgyu-Q5L0:քXyJZ锤v`e{ո㔔j0lp\@9y|1*SO۸xa|SxPCQ"J:_lECeeQW 2JJ砀ւF砝1=1P6*abshv;S6M7NIތe:&vի767oU](z:=jQ/^<ԨGFm),=ē.23reyꍪW轧ryW)wdJ _uτvoŵU-}s'Q\Yqk؍Up#G!>~U=\ =3";[K,a8< -%O'D~$#VJǝ('HTFI m()IȪyog[RT#E;Yk.ZuÅrTQ( Q˂e_ry8y]:T%èISJymwF-QF7J¨R!-՞<䉾wt6N=&R,%Okx#Zqzp")Iyܰ1,[SZqu8I\Ȉw7MU]õT|*bG" /LVRkɮ(n o/k4p[QBsD>?o5s"D/3>r\NUOɮ(Leik%\K0H-+SJCWk :IQbO=td<54@(}t#H Nܾ0~t.eo'ndH7l;Y ٍ'bLo߳6Dx3]k@T(GE#{htqoeVku虫r͔~U|JY&w-Ok_n-PQL)=/yUӫ]/jy&Uïz\H)Y~V,j I rY$6T'"|)S<QE"~*:\\GNR%AΛaaq)a뒦RyPe /6e<XFx$JREh(Ѿ7`F3MEeyۧoTLu8dH}Sk?2oƽL$pq/n۴Ojj2q.58DdZOY 1PCA܊myfh1 moNb7(3˫lHVG2h=/~v @c_jbB!:蘎 3#{Kzu="`dmuBT%;DQ=YPtiqu DDv\4s;ި(锶^p$n B~[X-U7YNySDaܗ10d!ap/r$[n"3o=CZ!~gO,KRz~ [(=CY֌F䋛FʝI*wgR_Re;((]e'MͶ͔0|%2N!xK>Wsat:59O r<\„K$R"q9u"/N%KrLȨ]䐋R/v"(S*bi:ߵ9>Y-w_{0onrxn˨}˨{$n@1} ؖB ǽ@LOe$jYžyz\Vb ! R)B4&}0P@TNHz;~Gp-3)dC3IkE$1XIs$#C!( t295&Bߜ +)M7tƱܨev-k4_mS=J }u׊emGѥ}mAED{=V,@G{1]nc%7_H3!UײޏR^jXؖ F`JKN5'F%{bӓ5s6)vdqs@ۅǩ)o+W`C[ѢS01Z1wf yK7r},73|+Ve_칔 D> eqD{{` x^RZA |(V_k/^,y8J6{Nƥfolr}/QOX[ʪ  {|C)鹶 =Si(5Bj4 ؽ+콦\͂=(IUDZ]'hy|ZZhpn,o(~|GV ëYar9^ܑ*Fۥ8 ]*T?o;>pMA>)\9WPt76{mOaA_ÑQA#ok,аotw8*oHXW.WKTG]¯-KJ3T\q,(!';ь9U9bF_qTm!Ǽ>^}y(Z6e vq wSҼv3P:lK%T*]ǁP{kq-i݃@,fka.z@u ,d ٲ[1v N+˶}(Կi,iIUB9eIo(A-A8v*,8Bj "d' ɉ^}<kK=@ՎveGx_o)vHxsJ7I8%׏aSU΀ z'gh|;$5\Q9^GA7QY$jgmM %;Z׆ Prrگ(e 7+Z+.s!ݶMzTIU.&{ NRUp_)7{3TZfJkC㉥eJ7RR Q ryEǝ|t is's@̎=lALn#TL~/J6|~UEHψ"l=w3{уq[[zSw8u|T6#w<7 E}rz%#L<)Nm<)NY %\|ePu 'w)*sI-yS awc.bG-ٺf١Q8|Q ՛껑wQ8T@5/fûf@R:WS5bQ 6lg\_h&-<6Yxk{(t6@$?ۼܒ҅sow6 *99 SV4%R \߆=~e?k\ ̰UV~r0LJ(/+@LEӧ$!!=SԒmwRPm>VSj15EV@^GOG 25j}/<IG.6}\r1߭P=Բp}fx{ۙpBi D+f[VxKsߍQp;sJoêo o=L3YkT3eEKW[qjM=ӶT(R<Ֆ e)A^U+ZA"lRܴHQsF w 8ETkKJoz_ ߕ128( 4,q۰g8V[mv{'CY >bfgxEtLЇwQKmh=ҭbMiv^fG0evި^(yx ݅ p{[x2/M-2s7Q}miwoe#Y4KԲ4OO8y@{coh<ӅxT_YuvT OPRqmǖ|[vl|sިJ8E1WesPuaǖ=ێx1wlsVr1wm\<؎qrF;չcKvl>c+;ܱFqRk-;BxJ>ƨy&O)mG}ߚ~Î ;*iGhv %7bх=M `хR.=]46i5:Ɏ3S)򴣊iGZzgR/;*eGM/;*eGھXU责iG(IaO-.v\oj+д  Kx-K˹K(D[M-^8$~AMŊjܩŊS .Xił ^ZhZ,Vb_Z,bZ&OM~>B85QooNSF\..QAW~&4q =D%:5Q/M(⥉KN(楉Bj^(楉Bj^(浟 yBn\"u.R:yKHjNXp?Cv(l<ڎ7zzzx-idޒuS8pk{J:ڎlBOCдkq\?/!Ve;lXb^C^Z'=CZ@7x7zLѣڦ'-^Tz5?=xݱ,hŊŋŊŊł M/-^xjܩł/-xibŋŊ(^L@bzPȤzE&^IWdR؄WdRlIa/^Ia/^Ia/6W"Fl/683" 퓞6Xfѣ ^衪BQͅba<5F<) =sL}˚iWg5=`St [Kx`A/=i/^6Xee}Jˆl(4!-z_,eCSZqJJmUm e e1ДnzZ C(:BYM7 ib t9=3v;DNpQCGE#ۥ.= /l>ҹmo*L4q9&*LJy)ew* $V}%/AdnSi#1Wdn魎ʆ5%( 64( Z&FQ ˑܰ K5w' %TqªJN\|Fٮ7m=c^}< ( Pvz]H5 VG4cJ棻)\u]t^{R6jx4rSf;:Yesɗu v\Yj(3eTCGU0Srō 2AQ0L8l0e'05q% 8׋"$]G̗`Q~ntw{>ED~wrwxU;z.ʐ,_{KmsZ GH/qO%(yQ:HBT4QM-ɣM6P=.v\drH+H~vh}=ԩxK}G~i7;B)o/4ӗ=';9NjѓK8_f57fMUn0n:sQQ؊DmI *Vծ6%f w =ポS6l|Mh;AZϋ:}{ TԞ1|UP7U:Au 3+v;@M;Tl7 -}aw~+($r__:x}51}0{˿SF=d?ſ6fq?h_?| endstream endobj 964 0 obj 15008 endobj 1010 0 obj <> stream x][e9n}_=7mC3]U$ L1q,J1)%DTt@ʇmM9f&Cz ƹʁǵ#HFΝش=L|FZն-ws!S3)ǹ\ r..1C@ 7mF"HӉX"  #U&~B̴Ĺ/oC*TulhoDg*)q3s'c RK c1LRb݆M)(j OPp܇v㖊(R!wDdUŽjfufțH+cd\sPKG34iѨl3oR, s#ȋ9/!f~s\"5vFN6F̜΂th-qVw4Z@'3ƭ`ʁz[c[a!Εe<xk8=˸ή+Z]絙R7} _w7٭T`8" 6h'D{*#R!X\,t4K'S( xb-3o(Ɗ;fW!!Z`(VL\٨7yiajdh]yNqT r霷SOdk9n{gĻi8ft"ZpV&lPg$MN|V,NHYqX=B$zN1IQ(}-Hi )H2G!jތqi@]rDQ9EW\(gY2nSͭLG9`:tl8n9cJ S);<8; Qh35}*s~6-q6u[ a$]Tq]=?XNc4uj|ݍB [1WKl!~hҮeǖ3tXڷŰ!DƵ+QQ\dCI=~E2ƝA6g^"{P;pl.ډ5Va+pDzhĶ$m&YQ|8R2 Zr>)"pE̊rP2K #u֦4>jTyPYr˨tPfpH~ qK0_ƄٯI^ȞK1J؎ҭ_oIm\b2&'iC\Qj{x*T#G]^4/7ԠhS3봗1n/M_K+o>:qC(x\$JƎd6-i;R]\: )ZGȩucjZG\&. )eCR\K\>0of!|:§j7^-0O#U-1UOcH*x8yaf,jFÌv =f<ӹ Vhtz7f&@:ך!(1n\HYJg):MnPM tTKsf7);h^"snM"3_㏍`FJq̃9lQF(ɬ>ba*i +r` ¬Gyp& {@Y4m[B2.DG[u0p6 Җi-2|yWP%kqۂ*B) _g*&qMd5Y4nX }8ҝg4?yqFSJV!]91/r5.> eO-q"q6lLrPOg~7u|)gRAڛ~k@ite9 ᖩa[ yc#mRّΪrȵlܣ\;_, HvҒۋҒgbW3a:FWt~nh9ZZ2fYkŽf6om*9ӡPɱ@~w[{mފd⭖3j^ ͺ&dYF&(@{{y'zol@_[P i-mQY뵟N˼~lkpWjq+_v@NPj|tzHG{7ʍU uz6"ZHG`;aGbv kjCmPbXPfV|vM65\ڎ3XM@I"EK405n0+Ă+1 x 8ގZ(%sI|z&faTc=HwH3#Mؾ=o,V9vڿR;y*婲QIw6%dπw|hJ>Ϣ%jy*Q@QÜqR1^ qƅNz1g\"~ށ:WYOilN3#DQٜ3wk*_|5Yk6j[6QPt YG<+8+r@S7$fw̬nO02LWT 5]27־ a .'9`"zdA'62f:vkIaZ[d2䊀M8c`΂tlPl HT/FbVOrո38Lx9ۏT8nGKa2gFpc5is@yA-f6DjmtQ#wH\frEd̯3/G:'B= :y4 th/+T>/+T>/+.g|ˣQGP'FɣQphT['FuhT[';$`0ZHB<Fe#PGø'qtV3@N 0:JBy4 shѨQ<5c'XT[_vVM{y4 (ɣQGP'f^M"/JYmoy4tƢv.Cuo<>۷+ޞHqpa}ϣIy5uhYճGP'JG]pMpRIZN@!8'WH uh$V[f,GC}P'&׾bssΨ,|1 v9'<94笼sOywzvڕfvږNhjVZEPEYY鵢_~GA@a'3XeaC޶0 zD~q"އk]-bNQpPB5NERYP/\;nkGV!yBoڪ_'\[tµ#3HM22e XN@20T,*YV\,*3x 5Eͺ L gfN>nX6A oJ-Zi5lTb|!oh!ߎm#{(%ˇ9QiȢy;/V-Pj4'j3߆;˖FJ4@OL;|jjgcqZR̰" @Ԥl 9$-1Yͺ2LcPiuԍQ㔜>tsT6z@uad2dž9TD1efȪq1\Ȝ97&2FbʙOFyT):P;c1>2vōOg}&-D}'-m<,?]9h;k3*#kiaZ/ɩ0p0M 9@^ Fv1~'h? ћ< 4a^0N[Ks[8˩'Jʏ9 m,#Kuܟ(@+N+se'*u޲g?G5Wk.͸vVڍ;E/3͸VdO0":&J4HB;+U|mFv+jl"tsjy)7;q8<a>XP;R|1#=l|dAII9T#uH7?(u6#j{кf,m+xz`YbY s_6{d̀y9n%ntB.mrEKj2+M3A=&D*unγcH:cBJWd3+H3~q\?7L:Fxn~рs1׽k-QoA|;`8uW 1!QqP̃`) iT[ #g7<)%1 Ω9,9TaED5qkȖBJg6#^q4qfճF>qVN;Q Cc&>R yb3?47r)8]t-uOM2 ښ g]a޸E򈨹~65nmF:S4m`)T%ժq⎻゙s7g>yLK͸\q|7S**L[<  {6sn8Jd?7$iKQ8tNyڙ%N4>19 8Z=8% ɸykf\qΣɧ䲚q;K}L:0(z uޢܚFt" =g,NսHJ:$tf=@]-@ tEQ[ճ8: uTϷ sJ:()HtPpJ:NI):%3qH"FD9D+), uJ:0ID9Ռ(WSҁO"%| sJ:,+FurԌlQڲSC92Վ&vx/{I:%tPSa^IzjgtPmo%E:]jR;O'c9njDX:%tPM K=#/6Y j)yuHWw (g$tPSANI:jVNIK:~e_-)P'B9W9 W9e 9'3̹'> stream x][q}?b?a[H /E hZ}ҺHPa 9Oyeyd:׺\qkkٜ>xrݞ>Yo/O֯`w vׯ`w vׯ`wMyKz\o9}y^vkBNwΌc[n ,ڴg"|{0S^%ei`)lsI,%?;Jdݐjǒխ*^Ekїp L/Vo7h;E_n0&f&o U)w*zuwNNNV)ZKmN X+r6S=h)TcK!sR^X)Z% ',-o`)h%#h)TҺUkBK;r XB;9j&,<`)wNJ֔%fh)ԻTRNrBNz޽Ohhw#;c݉zwN=DE;靖ETNQT5w)$z-ފiYTC;Eh)F[Rw* ,b%)S5KNQJ;MS-D>N#|zG85q++zG8b;ǩwS{Kч:[R7kSLe ˪sdL@3ph :}O)Oi샵,8eY͵zeeSe2{J#:AxJKx :kNDwF m+8[LI80 RrՆ_V_F]\qmZ79kFy7YР/(2*;ڰ,wX֝r͉u(r[޹'ʨu |꧶,$`%!0dC] 28Vr\*ٔ85vK[|ƹTJ\*T;.Յs.-`K0tWhےwoϪ:>3W5Q^NUZaE+ Y=כBѾ G5KUZv]<. 7p~Mxz"评/kJ ,y46(]t a2- Nއ"5AXi9OZ7xtfr|zK6 {eXtQw|\n <YhZ-w{xڟ}A`;Z-1iY"ȴDF=CXs*=VZ^.^\>^ZҾ=남[Ү /y=9'V(nUn4~c}C͸rô|lP[-9i8b^#.OsQ+%5D.m_ʔǥ!zQ;K|{NxQ\(QgL(QA(рQ y;hsAc]S3Ֆts8J4 PJQX,#͔@4S5;Xʽw1I M-$͠#YY B2X6#jQF 1;J Xh9ENbA i1[ Dc-@4S^\u֮ TG@TGAF1TGAp:ݡ:' Qm(͚&XTi1T^>k'ED'|2TZ|~4EseEEk>/+Z/V4Do%Gjpybp`5]QG41)0?W4.hZ90o +V +Es0 R[d+9L W&s9ɜxNAꜟuGK𛊜RvZܿ9^}WE3UѲ^{ܫ2?@K99%{UMr"Rܫ2|trS=R8WE8U1{UorZjܫb{UqrXUʽ*WEˎ{U^c\WE:U16ʽ*.o"r9^2$z;-{P $M)P %D 4jિA/W \7hp_P[EYoE{EDkH$yHb gKyRR^D+ih)eH4ah!фS WD3DN&M:%wJ4h^h!фS WDDN&l--\8{CNݯZ[ @"BN! !?PO4rE#!W4rE#!W*EBh$'WXɼ00e#!g!'eN!We>U):Rn5RN YR%8\ 9ar!䄫S W3+N!'lBN:u 9ar)GCYIrVr)"䄭S [6,Wa9U헜UhPμ8$hZA(Qd)X4H@k+g[*<}*y@)Sz_(QnS6ȭ` 9f ڒ<6q}P0n.I'$W0`   +4H` QrL͗ d\XCoERD9 qլg^]̶ܥ̀0;5 ^3 v7*4y~.@oA'~keqwFuZX`OuMk2V؆V@+.MYvح:dPԋӚA2+ ޑn l74ˁ57`c6\YuXu5s7#2Q=[w~k}ۂKp7F;wwiRFYVi , u{ _7FaA߻ԸޒJ R rǔ}Z)Hv֏QQeTFXM586˲--4nsM+8UfOʰSM|`A ҁ:,XKj ƘjMw=ј8uV+Q\w1Cs+ l8bsw3ۼw=:0QQ9uqp֛)wk g5/7v^GW(B>&c{}sM8i8SQ~ټ)L:A{pHnֺʸWoPuk 5Ӑ1}uw 4٥ FLeVC \z*Q($KOu;=8$jo_~%D&^sr}vś2cR dx=b% u_b(a[ѓ&>pkb}ݏKT#ρXʼn%P\|#%dF sucP)+9SJ\F#˼mͪq{X5Q B%iAzEtzl%є  V+J~A AS6J7e lzw3IP:AJgt%(ݠA= JW4H'A̎5 F[ Ab J7eZU^vH|L^ddQ0ȽPI);*Ib?eGHvOS찟Xdi g~S>̬_2W_LYzq3S/nf5ަO7+$_7?az bp>H` A %4z|+J A2tά,99tN|0s1diJjR3pZ3GּAE ZZ YHj$w˯>QyꎝB#A#ӠNG=hNFVqPu)_(|w>H8L@0 89PF.X\R40BI.|Q I&Uƞd$'($G'):K+Xj v̦7mbMY)֠[e5h}xj *04SȩK۝Bv̴Gc̘!;ffcf3/dx!;f 15n x!׸7cFyi!R,#NʃD (ZZPB-dhቆZxQ̨AqFP2nzE E-̳5 5b=iʢ k;pto]RJGeUqNދekK=rb@}8C.cvdG宪hO%qζ=J?:u;%]|Ϊ3J|䗂㳸s/7>zPbyl8uò_sn-)YrrF@:PACKWQRvW[vg8Y|Gܯa0A0A01yk.cjl?4h05_1 c44&1-`LS64eOKlI;yHSq*4dVT{rJ[5S |ZbTfG9NUi S(Ӽ54-1Y8Ք;8cΞȎ`L^1 c44hhiHv Ӕc;M!|cPr{v8Ȉg977r'nnPܬ5 i3D*o<9CP a->}?(ӠA0A`LVUA0`LZ+E`LV2tά,ӹ:(Ƥ`Nc:'-Y,/z]nTBjR`H11M ӠA0&YHj$wFn ς1Ww `L*`L VgKGBYKFaF¬ފ0k80kAfRv3ifVRYV[>}kXdE85YSsE85YcE85Y?b>K{H>K[u5JVLYw̹n|+a+̷K,̷K,RXhۂRΎ{AKtXΧ5?t< /G @2pN*CeB=(Wש6O AfW]ˎ\ulZʭ X*Umފ>\զoK|,YYUmboJnbUM40^Hj[UM[5rUӲ#W56mFM]L#-UM-5rU r=rU4UƦf\CYYrU3\մU#ȍd62h(%Ye쉆2{*ɬnѮlYEݡ#ԋ-5vAK9>RNEfnRoݗ-47][{KyR~SL%2KX3ef,a͔Y›!-@j;N%-2e]AENJ`)'"SfM%ޛ2K'? @m1~yO~Hy429|8w vQ0:4E@fE@fEզlȠA 3V^8@11i}*y>5vV(Y(ٔ  2@fg]UՖ_Z{h/I'20pA A@f  2/̦dL[<Zj<*I~̩4ti?e1/ ~^JKhe@ Ȋw =lYQ6'.i]f4R+NXZfucKXӢ>6;t/wݝ/AK@>r_+x}|so XʅYJ؏%wjxrø\ GA=w_ذ0}sVvT V^'.-i68ҁliI9fd,iV>g$M]O ۬@IjъRQ[>-M|*[r mmE{=r$5Kn)f7Z#59fcل|p..:c͘v?RX썎yEpXwT.A- ^ ^M?>{R0mRe[ΘvZqַatp5M(jE6jwOZ%ɫt *?fs n(0`trQtykijWlthcך/ 0hp 8`l0e[lp n!Na>)bD4')U#:Š-?NavE P4`0-nKt)K%x`g@v Dv0[ n4ht h-SG[,C4ejΉz7/“nqu=6xo4**Ok7Xi-ۿ/<$ endstream endobj 1062 0 obj 8453 endobj 1117 0 obj <> stream x]]&7r_^w7= !&ā~m{}9{zsx?~~Q߾?Z~o-һONmͯ~[~szoy!UԟW<U?E=S8n+)="Z)A6 nRCNQ\_|C;f tuB:}Fӳmttziֳ49TɕEĿt˻4v }KR@QQ`/a7aZ 3PC x*Ap.YMMXhi4Bgh6C3E;o={^lU/ԬM'o=Q'z p聺K9\)"pH;r u Sf) 85PmTU)|#pqR w)1?;R(.å\&ΦPbqZs̶h9&ysμ_sLRK*g_#@o4[~K ERj!6:hu$5{>IM49bTeݒʢqYlɳi|wvYL#VG=YL9Pwhtd1{7Y̖ٱFQz8%R=x @PڣN pk-y?;4ݮA{ 4]<z08./!q #z` Ij15Ծ+ub5Oݣzl9EY9u^@36*qD E?_s_bQ6nE#QE#F?}fSƖmHuu5l,S Ժ!M[@M,ȩVgwHrZvD+hU4džh) i;HU "/8b2HqGN!uA[3>*e\9R3DS` s >ִTSCi8sܓ% U{õ<8q=-.ֽTkr1Aᝯ{9źj7L47畿jc~Ѻ-|M&rGZ[H'-L^^;fAB5ljDz0-~S(qhd;g*ߌ;h"u9lwUVfw7\M;Q|i]M )_1p$LpLh¨)KA̎0-ZgsyL ߣT5v&C\EndTbvgDfw P3nP1pfddNwBo^QFU{>v #-@&*mFJd #Я_hq]71f|6&GQ>QqF>En OlcA8'=Ū_?:)؋A8Rs;Q{7d5Gur*Tٯj*9QT=G˺Kf_Q )R,gH-Z5RmͽPN͏qǭ1[#Ƌs>QT)HZxғ[#J&ڬ *?5b|[4F9ƭiFbc.h}fS?uC)u:^<vjً$'|H셀b/ B^*Ba/ {P^.Ԝ|L^&>j(+0ʬb/Dc/ {M492 y i/S>{uΘO{4FYֵteYe]cTɺFtJΘN3fSrLg;Θ)3)9cfZ#gm J!/t*mSiYӞSMpt2ad!OI@ dx uw-3jc)'t(v11;l'wPujqxJֳxGZUJlPC.;*SMRz<sU[^E3WhΖߍjQ]s7ZG&LԫQmZ:3ly9"gьd 5q@i%+8SNm$o([bPB`l(=es4PRz2ȩ'D늪!qF"^@u1׊6 \+mBz-%pą7j." jjPmd /:#;:E>8!tCC *<A=~&U_ګnFZwkrݚC#~:`&Y11 PTomG= =cG8b3T٤ͣ3=l nr}T_0b6t]%5)!M9a%`m"j w-OӟbĶ6$F( 4( ( Uu^s"/ɺsA:n]֣!Ͷ=fra f6&hI7cVŠ85a`L@˧#CUJڀ,էđTqq%{Ԍ!U 5PDž>& a>ǾXT<)e%ɌW9`!4Em=J4e" ȩ,\&` D&, fFu6煝a[kgC o7D1`?bV`"VDy%2 J0)/JPP2xf֘T '-ۈR'6=hdдﯹzj:wg_ݪ :UtV\sNԻ'W:uEgSu9ܝoU sVT*;UNժjTNjTqGFd1" (RSʸ,E u2$R52T2IFdM^0ju^ժթZU;Ub(Rm!YMEժU tVT*ԩZWPUժj{Z!|:avWV#/Y͍âjuNUԩZUUժBUJ9|j5=Z=# '0۪ju^ժBU:U u/UNDU_mUP'Bs6,˲oU:,DrNd0sBo_Z<=ϪV|fPj vV'UNժBUPjs-0ھKӪ˻8v U;~E|GYD(i<5imU[:Q"MԩPgG.-I3ܧB1hOJp*ӳCFNa,>ܧBs\hݐ])* 1^nR5vCLd7թ`Ǿbz!!J َm;vCl\ H}G`TI}W0{}F`+yvN_2ܩO֗/L@q .jq/=]p! )9\ptyWwON*]*/w'T{zywP'^+9;Teݒ ?۞X*H~#Uo" :y u+ɻwP'^|˻W-{J.Qg8%Kj[rOF=S2(gc@DyZ?AM>#hd=+Hb#8I&'Mw1#qNl!k6!U;f.S<~]o12FB8ۑBcP4 D5s]k~GٚtGs2b\P.8TFࣦm3f>@1;in.*jiU8SG=^*j;ώe8ul+َ(`K[or] X 6\}8_CsVR[EʸQs],` ' qڶ݋gOsvZlU/f{ ]aH~d^73f?9E <0?bA8h\YU(6%J@ZHD'=˺u1ݬ \hE &m;HdbհDjE/$("Q[I_'՞3ASڻ 4ݢuk#gj ' ZC4q]b٘H41J=A0|onbx{ žF^R4 HrfTXv#?4ֿD[a nĀ0mGQQBaBesN 'owFꤢʤc[[!5L-h7پg[ utdIþ\aOOf}o #FiNXMiҨgd!eP\֙Xo_/մ5w|m m{n|I㸔y4ҶQP趰ty3h7䅉d돰3j/P%٤簰n iwO Q5ךxlh{ ܖ>#RJ%?<J3L.:~|`J35x^xóxYH/md'qR}/ 磠uۀ1䆒EW˙hq#dq\6sBqFm^oj[.3+eL0<)e<-eS8AQND]5Slzv2T['sLN:Vʨ0QN)bSʨx2N)j2N)#w$2 I.AOe]:˒PIOw)U#yWN)#$2>JD樓 sJ'2QRFES(]Ֆ\8܎|wq;2*^ʨ@QN)BRƉz )eTmobq;O!:΅r1ʺ8^z͍/IvS8AQ5uJ.gQN)#J,U,=(Q?VyfQe<(CŏRtQP׏^ +ܴlT"SF 8e+ pz?}#LvNYO4FdӏN$uʋVٸGY[񣬭щdꄜBQ4OQOE˧%|Q˧%|Q˧%> stream x}_%9{zއL ^{cvq< U(W:'hnS4E׹BR ÷wv|;^^=};s~}?>_G귯÷Z^#J暿{U =yr|^o>7^=ΏW|mzkR>7M?m>OzCޣ~\oƳ|^o+[y9}^oJ(ӷ񧛙_^ _~(~/寿6|W:g/l;s`R2`C Np`X?!Z^fQ uX4v]Њ(S|:!U UrED+* d)g56-UOD3&Ԝ =*(^pi*em1h62cDB/4ga0:c_>uvˎbqO5 He_ah836zB^ deF]#+u!mµszwУ艬NW)5D)LD?4KZNiTB~}#<6l^i旧Q9Cr.H#ψ⼗~6ͯ36Q_3ZfBOIz ބlCEidSJD_y63@9"QWK/'-VAxbNTQWTcxX@0Ƌ1V=\[D3VcN(IAE1.ޠ̿5 (y^P۫|ɋ+eMhBS Q7wf7.0gIy3B ihP-:k?גR8,$1 Eذl_ 56lHb; jnmBuT/*QLT1tWD_ކQbT3vքTq ]P7>&Jf6D+bDRNpvy?7&G/ܠוʵQ8IWBB=j'EO""QR#GRxnDJ 5ɥ9Tg;/H>D) R&;/ Cz2L#?cX6>#Ko {-sFˢY[.%*h7d7ڷl'K[r(- Z x:?H5;;Q/W6 u 9i;gIגx H^h?ͺ1gDcpBt4&PS}ц(W=BkE`#ϞD]S6<(rYE>WS.c3bYBlowv) XzKFMozݻG._L00"GX$VKAx=hE"ň(E'OFd_8sd+=Jt%(QW(blQf9Q""e'R.7KT NAsӀeiEI={D>E#d!rŁ4Q1#]6c3)3n%@>P`878jn"gк8/(=+ΟL~ˈ6j N38 tϑ)oqӼlpg gYTxߞXq CX@ȧ9)7–-(T%sZ1Xmq2tZL-c*yHzhԮ~6Ֆױ_, dԄH_mQށ๾lp'^()%s:h6 Lq^FE֎mM=K,)?8GsI%]ځ+Ҋ_sEֲ+%T?D6D'Z\$eN}85xLbJtep]+.1~>ݮg={];ddLYs>eg٣Z^hAl7Dc}EV~n83G ٣r%cGNK}>i0R_@]J^U7 ZW` ԌI8V8I#>}qp&겖A'>JnFQ?toSٍ#k+r]]KWo]geM:ܿ{A\Ui4JzR66q5%SEizǭQӮ1*,( `_y-X 2CIZVu7}>ힲ_3y~"P<0ӳfZ߈'h7#/ L@-3Zqy J uOnh]>zn!qT\E7ЛiSNISO)Di4C|&MÒE]IZ7NE$UCILf$$+>3?HmTF>7qnF`fR4z{v3'~v4KMRE' ^ye5rk̞8X"3Qvc3?g9u Vh@2@2F~~D_ r/ o y_n r^yA慌no >Poo_uza$uFy,^p7в#0h7X< + ӵ8*WKɑ8&c3c kku(K IOK)di!:(ɮPo1~->^t:qu LF߸.uuRXdTΥ= OO9e.;߻OڽߺA8t'_BlI9*7RKXf :'p8y}ԇ|-H+OWMkf=°t}/O)qՃ*w=Տs*+Ü ߻bqR:fmxm5\tcn`+r(L4o(B̲X5m!ͩ_#Gϰ̃60̲NR(2:?tH#e)Լg@ #̫.ԺxY>o2I7|qqB>3ƖUذ\AD^[kO+Fy𪨄F0uVM2E/efY5hqcW:K G6y.bH)Z\R )St&( O'h?f)@Sr6*XG.US>FTD,"1- > h*)֩u د.`p*LԘg@c7|a\hJg73ƙ;˼1cuRNGEHidp,_cv<7{Ѓ@w|Úox >/ĵhtl:QgXj~D.kw@YVI5l;{}j}w&pڅ}|Cə0 6/Y~vt{cxƍ_7_XtMǢ=6m.~QP|3ŏ<3y_J2t#}l}l⍑OL5ɽ$g)ns,:x.J]hŝ}) *ªuɻvFe'U0עXqoHն7Vھ6:[ilz}-h׾ڷX[+kv6zge,7~(DOh"S:XE+ F]nyjDq ג,7KR ^lul_ 0&1z3Іq:)hR^42h@§nZפ)M &R:\$ޑ-9'7~(8Oh':zŖNЉre 8Qj֦Ξۼof'D.e(l)GXPg=+k8b|7XQ|Diͻbo1\د˺pX2w!/V}`W9xuj;i}"?W>10tΉ-%y i(0̲1DcYhN*%1"Č_گAa^Q0#d0A.=^ʿ"{cQW TvF/nW)7qZ}c:Yh=\$rw^FQe[@s׮&ʲUICKAJ(_,(sò-$J2h)>" LO :% ~*G!t!42q"Lh+j ߛKI\o,i ,[ qzJ=mO_{Whzd#oQ/ګXJhƱ"WeSr&-DG\:f\0q rz})\k칔78w㳧ܠWAy (,L%mUY^ePGfi4Fb"eY{XYw\d~u2M7HLs*Q9IQm#P,Ax<9r (9D@9PxrndJuÀ=$%e'ʥHe{go 蒽޵]wY}!a䰀^-#މ&dgĤ}3A鯈 zv((]G@^uVJ h+-,=kYWY- y5(XlAKUItl5\tQdgYkq5?0{!ڀ#38HUϞsYP { 5cf˶+ P*kdrJekƗ{(?F[DqC&** 9 6Ysh*$`" /ْUNyHvLʑi^GFUJIs znfaYB=[x87pbR*H(=%ߵOe[v mw.k!oE#[pM \sM \IO (eP3l),Gڌrԍ jٯ\6o [i98g[ ~\h?ATH3+A̔ټw10 QTk#LCW0~<_ȢY|xZJ)]4[R=`ΙQv Υ,?AR]PbΚx8[,Dygv̖PVI՟;NfY[U2 E%n|ǼUz]|A#mq&DlVA1/rԀ^G>Ėh{rFwM$@|rdFs'N#rzdpm}9򀖣; uDgㆉSR&O8B>Rt '^Q~oWfPL{dJۗ P>X6I+%C@$ \C'gC& xN2tNPO;s\jvQ/e ]j~$ Z0':ɀ;]8ɀN2६ x)Z];,4+J*Ԃ:uu.D)+QR*N2`eq1Jq\39&%^Zu/;ɀRVҎNLԯ;I 3~A;|^gVt/xA/G;f'CR#XJ@a vVaOԻV=Q/:'ꭳ`^0ުlՈy)^:I7,k6b^:醥F $ [,$}Sԍ?w58\S]S5%joy2Q/D[ d!^P'wDAJ<\S;\su2/xىxNnbeXO45 PZ[fP[RbP[ʶc @vJa:qR$AJ 4RMJ $Q#%Rz.)Q/q>O̝/gI':AJ]'RICBfABoR0RIitRl.e$m4 $.^P'YD) IipSy %AJnRwh&%q7) )Ǎ$NʧF'&Iǒ9)8Ǎtq'RGۏ;A@`A5 V7R-蓂ߘo)[Pg/iAP'ŅJAGN~!O(XH|Sl4XɔΧuItP𚛂99O,|(XMz7+ V6,ЛO,)XM§n =2 V >uS0W`1=壝dhP*W7*tD}:FxO}cn~'Vmhn/KQ'#DNs.ecU dƕ5n;{+MOݕ;a7ZJ>SNˏ;Q/?RɏN~ܥf'?zTy-ODKJ#޿{t :Yr1L ]P'[:r'e]P'gRs5K:ysănWtF'[,XKU_4n;#wlxPl DG3ö DŽ(Q*lXQle1xsv)<ɻvSvDT.59 70?DNDBf6kG)ƾҤ.eAD Rj h踑S^*{~;_36r ^i?j/*=pB*JBa|f3zr-'z3)I-✁2s3$K"}Ҍ2]"Z7ҷjrJ94RxljHNx')n@3e=&ذYOƫg\M(IX4<پK=i3kt0BT]pWr`6*a5%?S⌨Ku#nc2p_>qfb~\U;vQoOvIl|eFK}, QsgkYgKA{9}"X쩲۬r߹8vtRocB|BxrLZ̢p`tM3ڋm?zTjt'|w8( Du/=Lbʹ9meaJɒ)NɆ*ʌڨ86}o7)=]<쳤Uq6lRț90!4{9X[ ;/%=x}(3=2-U9y~# K_az)i[@^G-=͌; g)xJDr6Al꣗|l:~+g83X bk~PT:Q T(]E,+>JSzSSBΣ bF=P b'T~)K;ܱN.5ɵesQoG{f =dFB}/ݟRQ.W[׺ƺMYbYȶ{PS^ERґ#7;ĶJҩ/E1XtG2k4/|4ؾt'J9cWa͔1!J[>_h2ZN[e{gWHu쪚- \Ret>)lvpin;-flrCథD WyL-ZG_P=rc6P5f+C߱)_5ֺJUb[*q#yqR0`J,T2؀t+ڈ~B}I6-88kE= z[#\DF9:@mo9z==|i'=Ao {ϳ^oYt=fg{e}E2I]ܧ+UF_zd4-i|5AI^7hziYu B/}_petd~֫J}K u%ceDZ"U![e& ?U6mcq9d$s-.IU7Zl(*-iGh5>v:i]KJlA)DDi7Iwspi($cB9PwtVHF.ԧ-y =fu" endstream endobj 1174 0 obj 12041 endobj 1235 0 obj <> stream x} e{}E>Cz.1Usavx`B;֒ORH; B}ϟ~/??/חKk˵ݗO%~_J_ӗw`O^2qOY/?epݧ|𗩶{M}\?5O罆/]_?Sr1|o:y7~v[?/~Jլh_[~?ԢDlῖI֛8R}7QÜDӿ;!)\t-Zd $j[j>؂$+x~iWC.8V5z\bρl.H>vj^*ҪHyT%mcFJʤ?ZŒNċZE^TNNgwO.ǐj@J-UZ7H.eDYjge-ճK@T)ƕ`t|R Gqņ(9 K.x2c?Qt߳NQlW}Q"|Qi5ťY8E 5N.&߻(~_c& O{)3E"3D/.3+}`a Vwᖴt}y_em0_E3ꥷlz\gZ\[>m~mQS) 8p{WpwNr)n)grfp. P]Cu3's8u p _ns|9r\+F۳ IUVT@;>\\8 "3~Pau&Z0ALafu&{X1-;3ѝՙ=VgEO(FM:ORZʮ]w#2Q;`a- CʳHye6RhHYQ5H 8=siI[~еů뵠K8s)T0NV3p W)n=7;H{nv P}DNQ"bg+p 8VN+jU) ƯZ}S4-Qou em3r SZfrIjc9EVANWc@B_ˬ1džsN+6ˤ;Oȳ bphoWLb ݺbot늽QВe/+ybS=WlD~G3EH<]):!_jVioVjV+thBVKL=gD\[v hhDF'7ZzZFA9_6ZFճ6?zR6Z-(716$.4'56CH`  ` Ɣˇwo0h4ȱzo0hC@-[FH! ) y&! ;h! ũzuT))㙻:_'5Gspoh_+p~h5/Q-g[?_Ѝ_Ѝ_Ѝ=/lO4x$/&)Z*pVfJ~=lްpe0ۯ4yE>2Wll/l~ڐS(6T*pn>g֣>ۋ?z@[xG Dm=RXnňX(r$E/8Z<#Xf[:+pVɱMtszHP|Gz4'u~h:o:?C:@y:Сotⷴuo`ݥI4Bkb)+> Q pJ&7o_wݿ\nnB-hވJwjVޔչ)]ߧYTwBTopsiiSToћ(_60QͶ~#捨fm#nbif)ݼy `& n1GZ_ѼDF-aQ_81Q=1[n$cYuũQVZ,_\i$N9̳4p ۚIB .X|;› bQ T =JjDɮ~W /kϤ> t1# qHyE?#*eyX՝&<\݃Q2r`J"5RkNKK# jY,+7ZzFD+f||wwqv[bE !%zd<ݿq!$U!|aiG*~:Mw\Io]%ťVj'fŵ m=&E\ҖW7)-bOG^B[.HӍ&7ӷtO) 7<>. mtjhZTIF0CٶP6e{kVNmit$q õ![ gXb1uRI[%^m80Q0˅+6,)FC>UD}򿑷4+|COO+dТJ;@d[s>U6},Zg%b ޏ=} xsiM7HGc(:[:xe9b2E.'*H9[.lN{N`M9ʏ.-K-IS\*J2㉏ OT=F(/iLi--1hJ#C-?qe8 8.± 6Iq7#w*D&-ŞG z=2QY|7"ڐX`WE^QG^B{U|$N8;fEwBJ([tHR0'{zh HhQ&:Eu F/--݅6JR#͸v`4ОYOOT Vgb/wdTvl&YXI~*x*rFTEKC_zƘk =h;(rJTaFL+Mm*yhs+:alt}eG-݃É gd InL wF ; <廔nNTy\zFVRmvLD)1!)ʑ%\\O|$G[y͖- &RIo |ُ6g!pGo5O8Q4EW>2qtC 5!T1/yGhto0U˜mAt=aG;5Q*~}A)tЖ ڄ9ZtRoE%MMv<].':vɒRKSAkgsK)&sZҐYpt~*`iT{ddEsp8"왵Q)r^GnV 괴E>_Fʴ9U]jC>W>o (ڕ(0`8=4{sNԨhuDZcX8pTZ( uSVO3NY&D!Xmrl5z`܉F4S>|`C~LMD UB{YХާ_v"6*} VDo OY*FGR12݃5.mymᆫjKS=\r R( ┊K_Hr\`[n͂>nP\ʕAAx=/]QC^Mؚu--r[D <ɒ&DGK"(+Ǟ{E飷FrD`Gs]L_x)zȪ+ɞsZ5G-$Nx-SV"=q]Q3!XEweĂC},Fo:Xc|=U :L-[>jmeQV^qj'8h1n98boҽE>y,Ae|90 YDEmz.(9R\w-dNZ#HvN)>Tn(پƲZs>h6J-5zqXDRP.όqn+eCtifNF1 #XJAs:GxQ>X1!.z= X)qxOiS?R'Y_=W> Ӯv-x<ʀ-QXQ 5'#ۃ={Ъm WH1 &FP3qR~ lzlfЫQAW=^bI*/aWyrrPwFݖRh Ba[ :mg[t-~6FHI}vJ8jSso֞ɒL싩,BfF+.[p%eNdI9?.EIl8~t >Jy?"[`- @E-^*!a>Q)ƶޟ#q`2> #LvvcpD4QB ᷉>D.TJ 5D;m ұC(D_r@3'MEJHH#(tT仿Ji|g_O_9wQ Ή m(^ pi (=T8OXɱ.uaČ-6l*ju*{.h;Q"RNjh&rJJzY gutDunOl.ߋHGU@<~ll@.B6Œ*yo~N=6w.PA,pQŅ]ŅqϧȏZxo >C#Cs:gįG~iKjKR\Şb#ϱW>BQ0"x2GyvJ hj6#U)vjDV\]ʷA/Z!|$?i>CK>xpe-ؠUĩ4jxH>#7q9Gȋr]hEM!(U\)'Y?zBG^;0RՃ^pK3wrYPh6_™K^*Gd$ͱ1$m_^+zD4.^(`׾`W O(IɖlUv*ZŨb7քcC#͸C쉤*䃌b<&1f6tUyL^!m̴G!PUuZҚj{ɫ.{cXwJYWҁS]yS$bҍ=FnOM/ fD yfgxj*:𵴥oCՂL'qb>lj1cEf:9(zBX*$W_/R"8(y<]|>Omᄌjb~38.mVR"e͉sBNr'>#%#$٣G;P:I>;Z[{2*g|(`Cu' ւ(fM(yP^jHw}.΃}{WkV]~ד>>ɍ~ma7I8g孺DQ7KVsW$='r():[SoBT-1QWpDknz^(XVPp]la7ՌzAΨ7]0|o`-V.* TC悳Kqԃ&`Ie,(FN+.D7|4E|OaE1ft}*Eۅ(͐nYSU[XO]q-|tQ-Ŷ.B7G"T#>Ucv6oOdv7cEuq"zS[-6e vaZߎTS86K-Tг9/##*%1 6#t> [9,-<{2ocO?lbtUQ5 IhϜVFVgߞ0TZ #OJ\x eﺊ%0:Y7=[ëdp7o߿{PgoOh D>< NxJ%^<%6l hFruv78O  Nb5wzժ2*,(86ӹ&ik-RiKWRV9B#[F z$<9ш4uZw)@`l ^K5K3h rAR9E@ϛ@66%H#%_STQf@pB{YW w֦Z"rt/ֱ^]c=[pP!]'NY"ѪH3!tU2׃KĶC6 /ڻ*K2h8^zl";C#AoЀQrsɻ͊MY'ǥr^T`_=d=G2[+6!&޳d ݶLVjiK"Vjѓ'o9,U)xߥtuMӴS җY7)>ge#f2{~Եz%wwagy"soCʞi.>z]z{OkU/t1pףIqĦ:"5ڂ)I{RmF65ˆ(eB]cE"u=BeP\>U(_<ԨR=K qzvc#:m\ `c1U.dV]T-|!J)ZN2(e@Gx`=%JV>Ke"@9Hs4-!9l Wb6 .A^ 257$775F׍r:g!UTnN"¾.P-x6eNH$!s"qݓvXqΡH#mE\AqbUQ_+u{mG}F(.<9(3N4ȱD +{DSPcvFs|r~Y džm;&i^ ID5em3C$KN.AFpE"eT=2"_bKO`B4֋GAԖy yèq{N=%Y>* $]P<ȧD|"o!JrSq%-!_ם(;7E+}t2/GV?afnBVq~fyw m/уIlCN3$VRp4FE_+):A{1+a3caQc<3lH@(4c I[`>5FVRdlisK}4E :r9\l&;!lLB.4 v3PTE (:`o"SLt|aE;!^8EQpзhKeQ`oNth_%ZqEXZ9.݅rf&ƶl|w.+vJ0%= q$g3AtR1 JQWuQG!жQY=[4g[*ܠTໜL@ܠuy!]g]f eTN8nZ ̉e@)D1% t$\uGځ>>\Oo{\-nW^Kf D~ah]k Lӛ Uh5M"賒jZ{ʱ=SZ)lK{hS>^"/kϴ^[r |QheT\S|r*8+cZSS\~BNq.䅷 Jֆ*;@;_P)8GDup f⣷܉b9ςPNa%?`xxah a7Yax?~3j.caA  Xaй~-v]j h7V%U# 8.0wJ[ZvrJ+[S'F7:t9o}ۺ :%{Q _|_-'{Â)Y^K_O endstream endobj 1236 0 obj 12607 endobj 1293 0 obj <> stream x]]nm? !*-v!프a }d-s2aؖ%YeY>{js}n??}v??9׿G]Sߦ~1o:~{ܮz7~C}__7/S~/CzW/]|+۽bL^{zW˫kh_~^/wwNeѿ7-/^>Ǐ?J?;ǿ}rkQݗk]3pM0|ʟ@]׹hK P>)^_Ќh,{.SOJRK*DR/)D5~HDE!*ՃfojD!~cjDD5hjΖsQ8D@oQ1tAT rjEپr"LfKT3GNTyےSSj>/rJY?:p_+@>T 8*/@kTk|)>ƃNuʧr)ÉS<.SNlw2LG#7!1b:xxR ڎh3LD-Ao1iR{@FiS0tL>c3L0StNݦpJLm:nӡ8e|*:C['PyVyPS4gDZmT~b?*? gP&CMC|m3Tht*a i {[at7Bd^%~kնG&6zYIV+^܂*?^⊢elpZU87vlKFN8o-!S^Yrwct+B3r REh)ebN$w)*r 9T.%ZpJ9Y!mK)e =pJŠdma xž}ANi[: Va)3w]|i?$N#@YhFfS+p:V& |Veɳ}RI20 pA^!$ (|@Sj5'j5'j5'j5'j5'5'f5l*U~q5wETbEETj܂aMɳmZZa֤ͥԖaMVj*9AmA&yX19-\P#Ai8-gԘNӚqP(^5c91ɏGShtTHL`ަtOREN 904;P r VPn9BB.d/G!@ѥwNE_:CDNcSr1Nv*lGNlKN;wg[7M{릨l [[Z3 jLԺYP~fyY0~;ںl=9e,3[7A{ϸa{k0[7uN[Dg`M޺g8u3ͨ*xl݌Scf[lغ껷ITMdpo݄{&\nGٺ[7Y[7Yf;n6-3ssrow-#@;h6,MkZF j'j\-qm۵тF j\-䉒倴7.ܿ#|@l.T[* Aζ ' AΞ!ȉC)|9\_* dj!D0&hc˜h61fcFDm˜-;+ {.8zh ^ eq6q&wţVG(x!h/2:wѕE[bXZAh  4J JP5#9=3ݏ"` bV8'.W\FNUtGij*F-IB) 7GmFǶc+/ \yt/> ʛE f';(KI|ٗC^@Xk gϷ &^ ]LԁZ۩9.-UmSѵV?_[5=O7LToQ 8cy;hWyB#I*sԉºRAZR 5FJwO=PW*%tz[z02xxazCyO^"Ko-3t3'nfKgDǯ8'75viV+? =fp~ae+ʖ3D l:M@qJS(Nm>uK]/! W=GegPx{O!m:S3)Pp&rpJV]I^FE$zIf-5;^Jݨav6=fgx'fg av&cn.iEd3΃L2;g\&_avnCubOx~~n3#ChܲOPE"x2{n'jKPl)C$"o0|0 ?2Q}c) vAwR jܤ/T}o0AV;D&jܤS^휍;s屝OP9Ή d;'۹UMr+R&PjR?ˈR?m.ttQQjPjs\[ra$&*N.J!Ia֠lԖN) v|KObZ!նNfnLiN`XrSۼ6q%Qr)U#q6k>ZJkm^ y>~i*-ԉnfC7j͜9Ɩrٶb;)ؕi\  4O:/m G{Aʹy,Y/JzN.HdE!+ДՃZLp(eF)5J,̖ʮ&*zvYYpȊ"+޲bՃZ &j%/Q˄eI4jPTeMۊMGG5jz2DLԨeFA5#nhQԈ1q3J܌r\7cq3VC,aܻ3mޱ˗Z圃7PTZ'GV=剪)/zkyKKe<pJ)/@"D pvJ_9)/48Wl *9KL> U^qcNqN|EN x$_2=WL+@ x4}d>^2M[co:KY"p(Mv6!j[PY^P܂x5J{n{GC"II2P$$#Ad{7t ҽJ"pt@ 0Pt̓lj^߿9A#Eoi^UgV!!5 ,=pHTŵ%7<--!4 ,! p(F!5 L*F!PeU1F rJr%r-u:Tks(om Nja7^Mt^T/c~AQWїQd:*H`wx.喧 _ݿۘS y.HsjZ\6ᓛn2fodq]>8;R I8&+N#ԀV]tD[PU4Vq}(FNIiLHڦj֍bN=wp~SnH$CUd u QUQP=^Mn+o{ا|an!ZJmU\rOu}q[>xQ2ow븪Fԣ(DcL4ӹ\*#궢X*&QbJ$*bF[*+_Kt\/jacT|`EJYR鴆Vk]tq ?x Bnn(0;۸"%AX-(TZ@<Q_pL"2 1_uح~U`\/Ɔp#]?gQk97gFJ8_wD1f!dFtܒi~4# iQn3RW"zU >_*PF 9V4RnfA!n"Fqs>X#a dRj\ɄBe/K[G[GJO4E]ϛ{s 14ݺQT&r*̩!4"ӛNʖ>JET8F8Rmo=#4,6K-U-˓fʣA'b<#$1L侚bw-7]}|; 45rgbU~RUvjZ(5˕gR;Se8jHd겫 jP,DUz@u("BC.RDj0zpQh z;fo+0j* aFxQI^ Q΀jϸ!g˺uEA99ifiR^*]RG=~V=h5NDO 8mS ֡)6Ϛ H*(+]R%=qSrҤKzfh 5ZN\3zaH#2|B_׻YrǍJ!Hb%BK+YS)B$m%64`)KtU! r.|l59oWWd78l2+ҎY='rXyTc]2r%{@ڑR۞.e#Xs mX>_cm R, AG_1!bv*BZ]&+r#XHRuQQW(oу˸$^TeT\+ Uɭ( ǕO SN8Qwd $.rU#:RP$iV Qq|VaRW@sʩ2N Gvzul\0= Q:c*G[e\ R jUAik:nEW*Uz^s=26p@U$4J;tE;؋=|)z t@O"C=vny*p ɗ(Jt;J.w ӥreD'(=*{uaO0Fun/< :D%F+7_ bE@PW_AC\<햎 tX{Va8Oma\QߝT[F0%XN QUT}oAٷ=/4J}i6 ޹|HMW\A꫱-r2W ٣Tp|xWgb诸ku U>وMG[=Mb_%eHRv(UR}aKYѤ2K>; XmFSSmzoo|^ U*U+rOY-y)&QELl S>A <}@\M⥳%HIݐ+`S{ծT!q6m-9TەޥkmɎNL쌜Qyx*L 0{1S[&L8UU_k;&ȱ*T+aCiE:V}"51Ѧׄ_QB={:=U.g= }dOƋJQUQHIOdX?-0ꞃrS4jh« c/uh%'%i$TU$շP59ոik5KZZsx* uFȧÚ}ACoB!F] dVfaQ (cNV Dizϑ_%qFi Twh6(ȊiD;r.DKowx  )V$:ӏiq䣋(/'znQRjjmn w} o\E{.;-R$q@F@B[?-owoq3ISw)#+ M[霺Qlf)5»l&>xh/t6ݿ(o'y$Ͷ4 WJKUeXQ6R˯+z_zʯdnN&_/:|p*=n%XFTn%X"o/R8U:hƆ@/7%Eqw鰊|>k59s剢=Us@Yzv ߑ]]`3vf*f ]M9A>#|N?ӽqeG?3J3a[> eņж fqKChOITIY$JUk1hۆ|EeE|8wජv^+z֊^5V4ue􊆞it[,k64_׀VfpAGi&3AۭD>85ԅv]iJzVG=`k+ң*vУVG*U`di׽̅&!P\}8d|Dz*l?g)ո* DJ2Nx`\PMrlh ut0M:};T @zViKD[uJgVNS,5ҳ)'$-q9!U:A;m(7 Fo9Yi=F9u2׉ϽҷqS*CLF1^ L5#|(Wt>INHqNo%vr mxQaGN,dBg$/ٺ*]A>Vf:TIQj0}G%f1JT+EU(͵pPF|QܫU:OT;gOaH|ˌ_w_f3|eef]/Zw>yhNs)BQk'kOE=V%5s'[QZ8TQj/sP˱;<3ݫت lc:_!قA"-hs k*F*kŻmyk/.xe{ ;bCJCr_};r7r3r& K+rK3Yyݷ{+xrK;]_tY׳U=d[UtbZH1_W Eqr,+B hG]\Z4Jml[3U'(Ij u* $u߹ho'/Y[H[?__~揦ՓtYq޽_Gp0I:jOR!tR|ݟ>/ww1 endstream endobj 1294 0 obj 10446 endobj 1360 0 obj <> stream x][e7r}_=0vOH` ya8c{a]GRn*UjwO__?~ܛ{{=zO_oow>OZc㯏?}ӟh0"7ǐoo=yO Xn>;0OUwy_#Nqlp8sFhtCsB`=  b[{@3 %_vl`%MޫƸ=C‚Ʒvv Y3瀊qpHEmp % !Pԙ{4~CpUDюRu4'paƪҺg(9|h Gh;q{# t^c.SlW `QCDEP|SE)Ic.y<"- ZOq p_a<1F;q cx9׸c=>xxmf#:ɐ1H 9}<(i< c ݔJGxz$(*E\8a?xW} GÔ¼h]FCNNw;Yi4!QAөn刋`ԠQ.IE|+HJihR4*]]qjo%Jzt>kJb]=Ō=++6/PMLvNA֥7J8gjƸi?+hTJ,NiRj AJKrEǺWI5*Rz^flav7ls Ùw2I;r9w;*M]^@$6 G Tb>{Jb(yS+T=6tlPbOl`E6HT&nbg#ِ5 j]B;h`cRE5KqPF%ݫӵ\I j=HZcAv'Nw^(C r~VD(!PS"oHLxБ{Ľܛ) 5n2g 摧[Smw@;Ln1iEZ\28wKV(u+i-"5pG d#o]7G*tH )zWkt>r䟆؄ln ܇-%dx/O5CIiIu Kn(ZûiWyi @v'djd1%vu>[-x]x5] 3oB/ J׼ - vkzXb/Ԛx{vh@AЎ 6K^bh(#rLObLWVC;b% _)V붊g\47C6 M<|&|Ҕpo@)̤΋m9 R`f򟧇e0Gu* CY5bS.wkh")52 цc}kUzƮwwYRlv.joJ ꨙ3%q,[tlVERd?/gCk!ӆ J&+.(ڔyScCűhH%LCӃtУډ9|QXA8q"\ΘN;jTHW8nnq?iwx ,PR1%xc X2ϷEʖR|KIOeY3iÚN1 A1{FI #͡2H AO]HpbD91_TIwRjtcA# m|*DT1U zP)P0v-_P'W>HnNݯ}_?j8D8:e.e/ ]oQ/r^oO6`l"F%#A46֎fÆ˭6) iK/Ҁ g~9,qguG p/]h,X{\#l+Z&m^Z&=GnQg|7E_-]-ž;<w>d.VZHm<|׸Xq!4EYcomc1>kYc J !se>HK@?"Xo9s+ IwCEJضzjt{\W*VmKPz .ZqIg<ʻ~͒ϻ%ak>C(V @Jfj1Q4-d3H'?9: M֣PϲE9zA @8o'k,ި"j27ih#TTq]z qҬXHC(;E ̶W\k7݉lJAUK%g3K[ցtcuzj]NxT 'ZqAJѝ7ovj*?Υ\<;rZ$}d[ wY+ݟg)&] -5f8lc{9r# ͋.ˀy^o<7ߠTvp'aRú039RvD%gF:Z(IJ`uCWb% &Q3wb JaR/wH}l rH7hBGJUy.(vݟҖ) "$Ċp#17*38ޚ$8fpـ ,odp6DO5]g&lco28_RA\R~!; yw,F/f4D!VMl99uPwV5G; V$u~{f[*SV rr(}nCkU:ume6iQIObF(oӐ7J})iÙԌP?G딦pyRb(gf̙\G̒V1ઔӃo{iɿ8oR5,7ݥ׈RP9rdmmrh]{2][іKJ_D)}Bz)s6`R>'e#9 E7:qAz;mPzI@2Ht?IjO4X8scp™zRր#i?Fw%R<|)CAoUOGZ=R/ߋׯg&ħL8CK W䃄.ŗ2D>Im,U5t$U& ,RB 1| =sr g(TzPHs!I`OֆRMC!#VtvM ǘA}q['QOW\1(t=OARyjJh;hW\EBL^G[3g%*$J>ĬuiܝjG.IKMYr[L:9}.&p?z[>AOVt>Yx0LZKR&\Nt,Z\@9VpK?}]j90%o<~!NϊmC5By.Pӂ^!P~iey|}w_^"Zm^c&WʞKR?>TE)7RY%(UAU0AH3n$%+B!Q9g)c\ 38Ŗzc;{yw%^ _mRBԂ#P؋\ŽgM`L nS3{0J8͋Qc)Y@wji$ѾKe@6uM6)8 ڎm`!G+m!GS|m!G{m!}eÊlc5u,]\gT9n56vR{<'^"$kɭ$'7̥YҮ- erK CA,$'HЁlP+ϊruIi/d$v&T\\$5@*wM)pޠ8ޠxeo JJ J>i{iv?J>}TC͸[pA<Վj#wD vX"3ņ3",[v  0?l}AwdAݶǻwA;/(6 ntyu_uyVm|l.G͸_nc\OU 3GVz PZ=֪ѷ6C/56CnB^Plq%=*=t[zGJ5Qr1 >7(BmdB0}ELӃfS&Jmfi=!C$U:" 3vidCXGP:Xb${+=pK;@#D;*bEVHJ@YBWY,*EZ؞V+9V=Ij#r.V1>JzEVjTsP`8E)6u)m{+y 'A{OEKK򿒕K;=A}Gbae8瀒?rav½=_g . ­jAq;ۡ/M]\PŦwVK_CmI*ڇ7(u4]кè$n!ҤԶu(\KRw ,t۠nShPH|¦כlR)J g+p :#KJ}u2 +|63@%]%iA)Fb>-fCH>Xz)њ*i*ַ;پvk^)b;6Ũm,Աt 1_.9wzF޿TH3ZBJbG\њ0eWHK:D{Рz(n=TF;%)'` Hdz[Fn܎Г4GvJ=Sr?>e}P>$r*񠩩jZ\|\>lx4QT/k}\#5ۈcwdH/ ÚT- eR"@/f3>5ňq%oˤ`u7d"mz7扪YbErbj\籠EE*6M#B/w(?±GtN`Ԣ8!vR2^^3ίX:uk;Ѹ!ZH$@n=xd*n9s_ek'|l$]= pG gOߊ>YscuB݁鮑"ނ J!Y<) -5`φwKûvKmG-rkbyzzY0|JHJX n*Q#r o>},^c:r]ݬ$jT 3+<^^k뒯hpwwK=P"oɝ%;[N5[xHA MSI3,+$8ZaȮ[O8(7ګR%Sxޤ4<>8ilq`NjCN"RJ؛Q:ԩ0^~_c^EVC gb6?1䧇W2yǸ??] endstream endobj 1361 0 obj 8297 endobj 1400 0 obj <> stream x}۪m9SSw Tn;Meq\{)1|HȳcI37B[_ӗz^F__ן_?ǟ?+ˏ|[J?/P_?_KQ_?~??OOf-Z۷fm^ +D8rx`,p}hL0tX-J _IQ[ozt2.,fhzw}@" qi+~$p׷-0֍FA y5yhBct=pX( :d BDc3B7(/EMzEXa,Ѫ4d\ε"64 'WQ28bzCҊ.CByY_$F15c̉$';~*is8r8Xj_5V-t !mkbxU!%CjWο$5HBփk -R)=%Mr(ŊV y5Qo)Er9>q}*ezIdӔ|I$hvG(q)p,ӊ+DwGr9mor,#~BN]EΠ?"l>\!$v3w8vNĪuL.7Nyϔi{)6\Q@HPa%NT"Ǿ@GO>/*<1־OCT dk&aHX[3@vI&H0!HlK1j^M !dj5}CD.`͜P(!_]< PZo4T"0oSԼ-"6|3OY 2yFB!Ǚ@(zWFIF6N'$Uhccl%UJ(݄Zf&rXHVJɈ޳77EHejz@{zkB@YE_/Z@>K\˗83:Yy-)5I%HQd5M3V8HM"G3rн4,΀c%jhЏ dyT _('Br4()ϿzWCѩnF_4CӘ=F9^yo2(ul\)ns:~p#9ۙmé<(v1۱+wnA\.ĕp!  IKcFNl `+#y9o޿KGQtZ{$xv||+ ]v!3N܋q|3Otz0|pG\}76)~C)jѦ-hoZ|#Wֺ_24Z(ތ{g{3wT$hޥJG+ Q\;,IO~Τ/Hx?ᒒ^t+ꀄQv$ ծG~oAiAAS;G[Z$8+/38MvpNbXox5ehb$EΥlG jѪwN#Q.I(n5ċ[lMtԢaH DEG.z،C1a\uCJHݎ胅phr/7=!kq8Zp xis*KĜ" )R6ϨbZ<y^kXtIE^d*K zc(GQ4JVIǖ,QqyXa_mr7Wr5u3v$6 !~8n<-)oJ[;s*rVWoJs~Dz\>p: ~-F=KU? t|.Af|nd6U۝XZ $4!<K.w@0Lp߄}m # rr&7CţD)H$V D<%2:ƥ+4g tVX}r [: )i1Š8 -`@F#YIcᕁX9ԃFKr+tu]r0 yD+^OҚ{мrݼ::)b}CγTgiYqb)~%_R=s劗x(| %񶅮嵏j浏j{;[]Qsbpb3+2q]CyMB=b/Jsl64YXO6ZW=o &bo`F7ʇygK]<z9.%J?}n:o N@.@EMLh2nZ[w#)n N@c&ə)Rp(e\ q5~;v8=XTb'w` A1SJ+9Z;96Q96z9ֲ;Xn)Ihޜ[H3[6[@iʱ-4Qs"=w|6?3fdRMs!]'Z ɲ5R@Zc(MZKRrl+#:Yѧf13ԴKZ^%k\Ncq`GMj'^ӯ X4gΰv~CweJͭ Ό35zl0~Xٲnn즌AP KcwCrʌ9<5PUWle+:ǖ5 ϱ(9| @ > 9؎KF:QcLd9Vppc%kͩ:JWc֜rޔQMc\Hm /NfMJs,i'r5*q#8(5fz0OZV96U-(dA2VƗɂ>lM`}ԙ‰f';xvtizHQEK3|_=Kr흶~L!S:U͖K7O%իIR 鲿b0!z9+vhE.Jj-uZλ6'z Jx"ﮒ{9s$45uχy]M"SW BgQE%@+(xNS@9(7N%{#A [Sɟ{&%*zxSiAP&I_A1%)`kfn@[rk;ٗTK/vګBG@W'# ."\mV |~aPrLwBT9z;!ߵW2%- :'Ա%Il=I.{9XQInf*Ov{G);V@tk@+݁8|ʢ HpS֡^Y~q]@|63*2Cϫ^~ =|`Aذ nv$B2%dy9 ݼ֌d$(&|ʍ2k ԼHKZrcTe? s <=fNQ( |r_yR}fdQKլ1ܥuݒ$wc{qmF$i@+=x53uր2cP!BGttl%OfZ.ƙX1ܘJ| 8oEY~v\TD`+< 8$nfjAEjTϝ^:(PYRN[R3XbE"e a`|R>6wIu"ZH(Vjwr=lbnOGΜ /˜*,+J3yǒ;|3s =KFn,@k*[/%k) Ĕa%<>I%LNowĵ9BwĨMqDwRlao =ݖ<(y [)S@ R#|Gr Q#eA`nfRyҖM_X`x/dGE9%iQp,V`qxD_V!%IrD8|=u=k` *~ r7% 桩qBS9[5Ih7wJ^Q;|ЈywJJt펴xx΍Żw+M Z -&h8S4 d '{aA[@95uXAH~ג`wsZ \mAi傌렷6VV~bpr8d3c(rxV#p" VC#j5z5bCR\1ʷ(i][Yv<9-G(_G{Rs o KĴIYD9@ {Un+|+ax yHBMo2gy[wqDCd-1rp@(-r5sm(yqu|MKt Ν2 A*] 1Ö)bd)oѲ)83>J.5y Rw ъZb^񔿓ѳ sC3 M+uA~"")3b͞bx-*$[D 7 3GScz3p++"+u׃cVf쵈X9e)JJcJcr~ұ.MVxI8>卩 iwWs89wւֆU')grB:Qq9hnD$GK5AޕDW~gRi զk[O? wŅ:Od7'a9@ 3*yCM~]O7^MfUbe?WMa踧%;i-+]e^+\AJPbtpVUEgn ,ywMTMIߪKs[osEv@?a$08YӍMҹծX>~^vEn50M.f͊# g 㛟L%kPN0LuP,]oUd=ֺ:(&#h4-T,ilqG '*T6W=X¸әhVgFXR[O(E۔5b"Tљ۲zNΓ㊚@dK+jG4EDE=AjXEʖN[Uɿ^>Rch:Y#"trlgj':j wK*@'zwvK4;f|]S)˱eC/l <2%UB0V:H9xrі1M XqQiq\t'H{:P*Zzʕq߻+|2(Y}ns-Rt%ؒ5I ĄA*>:bg7μ8sLӭ-:"{9M7.:@XE+koȅZ/eMVN+j3aeųrケ|qEc;+gUP}O#>`{2gymM(RXk^; 9#N beԴ rp?)ig5k7=vy 33tn(9#BIs;|57Kִ( GP:k'*[ÉtX>rБWj:8hl9^_VVɨ EG[dJAGONNY5:eu>:Dt\'jzS@(u(t$4KKl;)t)j-HI^rdFU|$IlhU[)m;X lg M6.KɊw&nJW`W,%3`7k Ci e0Nh:P\!b^*䊶uq?*Byt%yL,t&7^.3C+V?~+Jxѵ0{A)J|Y:Ey]?yY{|v=B-w :-L8tkdqC)2ݨL :XBe'_]=j}>~+r\'ЍT獉l)z78 e頸P.erITP6( Gmb{fڌ-skH+~B ;F *ot(IRE4VF2G B)7Z(Eh cFE*Sm@ ~L+jD)͑vRRT2odoQUR#YUJl"p(\rQ[fn\66lAl@n?'GHMk^7nҺ9(:O=2+r f}8̓g\E"Jh03E=V`{V A] @8^nfڝ.:%+BgM4w'?<8ɺ)04NGϺ* ֘c9xn:B-5}zWWrͫqPAK*OrEEOeߒ5hWMQS9&-ٛ˷`SC-6 ҖWawHJ; үew$H~;Q?1C%mHWNĄei)r*|/rG=A#wu;s1p3glmS I P9GaKPVDAԯz=ʼnm¾s96=kxSdhA/&IhEj EݘOXb=tt$.+ՈPHȧiҀ8Auή#>^S|Yrl@Jq9DӂDm $wɮ'H)m҉kX+<sMwlDH9vp/#J)i"ül>=URU ΡZ|NfUۃMJ&mϾFoeUՒZ[\7H"EHNj('Pt5 (@р܄*ޥw3b8HP#Z&JĻ>wo=#[8l[o-7!AQ5vW)B*w13,(_5ej9(3ljJ4TEŏPyz.YUC)T`=rO@C TCiX-FnIG(WCV$GTf]SpAx5^1X<(1G<|M[@ZmUcQR"6^><ࣤ&:!q"6ku*)WIR2%.]"CaJ1e`ufkv Z*)~\r)jOr< l8w2'rm+h80lw% w.J]8s(8T֛ qB >W.NdˁQ7 "o@Bfih-3~LpҮfԤ)P8lLdO(84}^"m/Kiy]52,|+1%OaE[]T+Ё.K@P-wtJ~] 3BV?BBfGo¥dfw@g.֫yZ7".ܗM CH̸Aw/zn rޛi%Ԁsoh?3SCu0j/q0r L[%g6DR"τE`ϛ:JO4ivgkf`\(( m܄ ;Mc-Qy^IqpSԘifMyEcbDqs8PjvK㌫r~3REIh܂ f! 7H NF?;bIj YבؑNjuA2gKDXFQV^ߵ$S6fHSbogm+v-nfs߽W1ҚoZTozyd:v\ZV1y{3K&XG<Xq=}+:yQ!5(F h;vٝ d=Rg?Qr Qg]H+~Ҡmrx¶!5o(݉zEJaSق $2 Vtc[1nG#ebU19UVx-gfU0$nݙF,rߥ;P*{8r~n%]lwfV33dA<; AY&崢!-5^~~ơ5l$gMMd# 㹗g)7{Xt>+zr'ەUH"ǽ|\`-Ҋ Τr6=ޚAEDd_R#={~; .Y}堍9w}vؗ V\z'*|O j./l4S6ytᡸu2C4 B\{$Xp]~V!Іua}'?[w76E 3oCP {sRQNY0X{Lȡg%lMJ<8S/R⁜y K6 lV<#e^/O(+Bf$ աy٫{$ W=L-]!4*oU%fjZU\0!+%Dz=xѩLzxi T:_t`>B]pT,UV@QIԖ2xdZmYes\tIH#Hm`@gԤͦ% SKuQ2Hͅp`9 ?&&zc ۪Ұ cKkz{I=*I]#cոn %_ǿ>: e|52fMMšG_׈R&Vm Rv?O_? endstream endobj 1401 0 obj 12027 endobj 1444 0 obj <> stream x}[e9n{zg/`\q<@ '؈d0~SGZkkiU]_9I8g(_dI*O5StBp >T6XnO\nP^3B Q戢.RD=B;H͜3BA^CA=rPo2^֦]hdo{`3Qo83UtU3Hl4g pF]/CƱ<}1"!"HKrdAhݬu;|$pp4ND.!3H-ZؑSȋ uU)7u*x9.hQ .AcBG^2=@h)_1;U*rR8vуԴI"qzoXvM=Z;,V'Nc}!(^S'~݃ks>@$}~,]`i7%y>Gyq/IʽHBBhƠ^yBI戜6[(Çnlvc_l~MwM#s"ޔ $@ hԺk^WyQ /3=~O6D_.z!#/r"y~!VY"d ;< C>2f;@r4r=h:Z.:rf`I쒜7:|/3"^YmL7 4LR*))wGĊSP7,:[Awn%zimO7l{.J%A\Ήjơ]-[:0(%*%4u=9N\.V"TЌG] !-7(#ѧ_`/OZ[HO9;9C'Bf(~RR ڥzMS-Sݤ^/0:gP#CL`w81hka6 81#Bc-}GZ8r95b(. wwЁLQ {7t,t7 =kûRwӃI6!8EccE+͛E/E+]W)û`*(v9qlFCRIl.0]X슜7{w.\ߓ`Qm H[5Cަbc-´!cR)PkZ̐I5) pfcA 1~7ɇ,>\uИy k$쁹쪷.⧠v"*k@| 83~4d:Áuv4RCW8bO_p82!:Z7F4+CM͜E^<339.r B"VeJfyɜԶ~.5l.9(Dԣ=Q̓G yF Pr5eRgtĮ\.VhѱT,rw+)q`MB'"Deξ;I;Dh(H{}'EQ7<[.ҐR-KڶjRF/bSs7JH^ntӃԧ^o2/d"HX1rMMHl3cA eg7n1C6`݇zLDŽ)}|6'3GqH ~Q''aGÞq($Jl0ODa|87~ј6W™kENaE't}Bo(Jy9A*p*S:u)SN.7^O J!fa#e ǚ/AWQ۫ھ_^_ {0r+1r+1r+1n+1mзRcRcZP^};Ղe`6Qtb+nzi>P/L{S))L|+EWk]* )k)Y^;ՂWRL{hUR8O{F ^z۫.6ӴWZԴWjiLr 5(z\l` ,+]s"޿{1]y|- UEn?tvڈL*G VEDiۑ%_5,om$%SeXWRq@phRΞ,۠ {EʃX"'b =d?zv; zpQilo"x١gGq4rNE| dCC>S6}iYZXSI3į%~MjHPpaˍ^^HnrѢ׉ue3s{agϱ/2CHPRnFrM{G G򅢒o"JGTl^Hvi-wR98K8Q7,3%@8KzRH_UcBDX/|IJޒ)rB( e"Ɋ0MH5\$9vEΓՋIzSmk"%*{]IbRIU ^m$F,MG㹘u@5)sy@΀䰯JujVCxVSA=\x*a`?:Kk@sa5Q4 #6)vUr$1 ~'XpYF(:F!_"XK!%aΆ) Nꨰ*6\R츢dpá޾yf\5m=^-Q<zf;Wk5iګEQ:핐5Р55#AJK'x7,gKP4KF,gPP P5K(ǚ%\P:f mPDPۺMblpA#]%Tıf 7(ff f 7(ޜ8 % ݛpzgΩgw͠q2KaEQ@eN).t>-6` 7*z%TLKtdZBѳs*YC#31!:iS܅'ƒ~hJb )<37*CgFsL]87𢵌DـܴlGaG"LH'Lj.`m"&/eO6e'e3鑽3v6 i059#)#)ݬֲr`EG;s~FMӆ O/qmvA!P Xm,A .Kq7Jҫ\QMEzӱQO(y* v\DIBQ3}6Q D[0trDiDjrHT(zPQ_kTf/M:}vԟgeFUC Hǿ>F_\ qi%Q3[[f=M &*޸\r]r&5ݭ&Hl.)-UQ\P324Fk9N]nEkrlt(9ˍt;R'[JtQͩIu?SAFq+QOьEt~e߬h1lO%(嵩"pb*$*[ i~M^TJ73,R~iA!@ˋR~llRS>. eR8ֺ(jF@7fPjx7ˆ]z-oQmlbWeJ~B ZB>>ڊ_(Do7_P% LKLa'*j>륪(ȷnܡeqD.Q_~w@RN(q]VUĹyz\xeV=h|Iػ_FE/"zրÆWYhryh-J1z|vIw;i%mw3sv qmM`wOq&‰vͱpS!TΘGRj$n>.7d#p_GXy[Kؾ޻O|Dh 3Ⱦ(¤V`,kTycGLӆYyzyք#n⇄=VZ^s?@}F+I"@ ;PzN9S}tcEץVM*׋f oz҃5muub4NG4o)="/; 7iiĩvoLXɶ)J;wv(:¼ngw 1iӴ{rTkeF[GmfQ{ڽ6z: t3Ir %{I)Q[/$-EZe j_f Wz)$p`JCC&ʆ~t`PٕhɆo{ј朼֐ TKMh_Š;Aێ861 o*ș3Yhz5w4P^*AA-PzD|߰'_̽n#͡NgALw;Bg|%ABSX\̌hN~`fÕQ0:SJ7eȵɟZO^ylX(|U\Z}1{u;?@*6,QNa!}ӍR]iW[7L^=R=#l@< ؙ)aҋ#YH]:>,~A#Tr XHcSAڵa3a+PZK 'J )򴶙)/#b±*"K5v*;rm2pQ{Q^ {$pVlυJ>™{# J3NzūQ~Њڇ]Kd,aB_jRGp/}R$Mي^.25`}lcL$_/ wo{x _=,;|j> }18]!B6 INP`oT2 3>0LLAi=&PjJVqui;PRq\j7yJ˃+PeFdy 'Ҷ7쏵M9qSGƒvifnwUl-8lBCBSȃ˻P,}cڗk88'FFւBEjo AperQPX$t)&'l]L wB'ꗤg*r=z֋举q,#Um v(w']G)RuÄBQ))L% \%$>S.`pk+gթg L5 uH-KeW%k^o)%zҒ}IeADX$ ~LgϱC@ho, e 뻀Hq}_}FQkr34t|+b]-hrO"ؑZ5= ơWqM]h63uF>=/\4?Ujgr'hqp/l#7# VtkZ=^$&XW:ʂ*yrFh( k>|DjJo8YJ𘞓mͤАCD)+1}X?k4'X$d2TQ$."JFyh0& { т%= EG1wk$[@bbr'`]4qB79XT|JqR)/)͡J1ZtFȉts2Rj٨(m ѡv+gG̠qN vnLQW̊JYRKXV!V^$=}UzznG p-U\KGd}hCGAꔕĄvJQdV%EVQddrpE^c%^Q+*ߌPxr-'e6lӅWi~.u\HꞁbmFKN/(zG3`Qᡛ J}on%NYd!64ۤMl]#;rrdG2BWE%?5j. qq+f.N(ߖA%YSLXP(ՠO9{v _m~x\U w}| ֌R}gè8* ]G)cxe wSp~Z;XMqDÁ),Q"7yʤ{FtX4="hIOIud^=V)#ޭW2}E(u@*牫f.=/>}rr? ?֭q'i*B[E873WbuQMMw* : l(Vr/h5wa?fS?fSIT ve)ɞʖ|#_lH6x$Ťw8]q!n"gcцQ|ίק %, fG#ȸF'F7o|(/;oPuKQoD:8#5] r!GP.pjYJNubENszަpjA6(5mѴQ`nyV)oY,(0et3[?(IѼUU38k1µCl`7\+pWav, h^ ZmwBwjO:h8x"v}$®LovV uPښ:(mMc&[K/LJw5O3k9w~,ހr<oC9=Ug낞*Xe9pL Y3-|g~7wOePt(ݠ':~V+gNS=nCٯ~̲_I4k}$bwGuUmU; Rhh#k6=v/ o>oCxl}`6^dm'~c \Ϯogm |ʸl "B3[1qۣeΔ,A8?E9boGk{>U=QB*aU:%bEYLJ(+QȽEPQTgªBA rV 4cw.SۧC(eg34"5 Z%2J=J35ɧ5N)_v>f|9YF.g|#a[D5[=(qsm׷#vE;/p3pC=Pw oaWOWe,3'G}h|t gu15kz /e>S?.c/ns#Rq0E W*n#1TzQoP~6_Q,}z몵AlArvVmco?撩^r̹!AxzDE\^cûؚs?)+P)*1.Fi:}zVR>H qP~d hRyIhn `.˨ kAo_$k^"xzEl4(Եߠ=i[4:h͍p47: q ץ$]3;; mT*?+t hHlҪD_削Ūƶ?*l h8Y k6$߁o.Yip!6}~.ҔJ'NRG&5=)*dGMƵd5tŚV/F_у3qƽdfTTi~M%(wǠ:^8Q@K^@kQMu[=c ];RA=,YVAJYflPF3.{vg.81]ңx~jUMX*p.w/MQp(55qŤ.Z*mPFuU(ﻣjG׈W^@N(فamHoonnPPZnv(~[E9\ou A%rOu-o lǕRBL`3ixDP䯦Ȏ2&""ש6Я;fU= A;1٥UBpZ>wއs;3BSTx|\^r*$™0]>?E%x5;k,][X\w^~-:}[.Co@ϒ6(&gY%?>Xkبh}MY;tGX>*ov=t'#dc@ncӦ|C |3"euSI#L9oHD_ 9iZЄ=ML{frNLׯS#bK5C ;X]"FX*ڰ^tg=+rolGgQ[^䬏Q͖S>Гh!%N_E _'7^ՒuJ7 :r,e7Þpbsr]W{; sMĆ&B)OHS9NyX59Hr];W6{K._>\sC{D. ,T򪺋Fbh9)"Ԟc[}Ng[wZ#NQ!_lsFjSUcz m 3d> žݠB%ߨ!;Mx|rF׊h' x8YC6d*NԢ3<}TlC=THq''r=8Q'GɆH{NT̸/xOx\K #->悔Y;|&vO;w^r7Mn^@├2'9&" r ^x a9v~(7z&l3cTorh$(ڃR(Z (F rDPҘ#mF7rdeb& 8Tq'udU%;զ_FBG'}~Y5S'A;nS%g+ݒҲ/tӡfS.LM(%ck[CksF&/6Q6 Z#_m݊A/c)_ӭɃ<azxb, 6mi#Dɽ4#"چx+%jkh6cEA9ܠ| 3fQ !t7rE^r7z /ږF&& ?;P(;F5\3S))6c(q 02TSO 3dG@l) 7dZOFЋ8Y9vK| lƢ0?UUQ;];\(ycD>sN.i b)v/I_W_ٕ,|L ʌ, ݡ7qS-{ȥܠ~;lhI(Uɨ+ӻ[PiFK#TWTafqsCY53,{Z%6; EA/`lj¼iYc=:cSμtYz.%-EZeBFY73u Rrx%|끥$'azmX3&A& 5vwd*F^TE G KD_5._t817wbL&t"rPBS3lQh) j#5E-aLh(өw ACOlς&ę];%!GoE:jM䤌{D7N~ 03d+j`oySm?`S1œGŽzqϝ!'݃R{QΘhg_+m2H/iY"s3do?=V}?8<Oq) endstream endobj 1445 0 obj 12520 endobj 1495 0 obj <> stream x}[5=r+k_֡00@ 6@VZZkl3[ԥRi*mz_?~X~,^38ݏ?8\s{^~n?Y~|:ߑ/˖/75_7$~?uu87n~}yߴ}}R7}ɷ|?-߯_o)}zKm=_oz[Z_okQWϿ?w}7n?~珿_oSh[h~?jRΫv/˯L 4{svpGd@벡u3v"\g{ $iS̀~琞X~gqXU;sS$Z W0;Zz>r_xdQ:j1ks÷UϠuZeZ^f2[%/6*VLO)|K||c |U> 実_'>D&E9o G@O06;%\W?9&g!wu-2ݮ(4Aڴlg0d--CbTe9 Rbz^@o`m|y|:H { hbq(CFb>lӻ@sJ&kKn40p2so^*I? >5D}mFC꫁6 =Cm]  gSY )\~CInfF_ln4xfP9V@_5]^OH"8$$3oG'dy] V0nqcBCn>F`}&lwӵ4vڛ ,O腰b3SrKP(Я+Y"uud$;w;6(kEzq,Ѫq.%|rXVGMѵ_];U?7hs [j~d(ڻ?s^bL>|;.m:w)8^BY<}~Z_y/doU Ңy,gO \^-{Ntj(0m~{L9qȻ"~Im ,GX~!;2X"\0RcE&_1Ro<v]1_*mUuxF*劾 \lFoMFT++부/d45Wm09).>j -O\OW IQ\@3qCYնdmI_8q3cG]V,lIm1[7XbNB-\l&V=/OC~=lcJE>,9.MsgkT|Yp>Sʈ90"Z+-&Kaժ +$֟萾D/cr\*r Z8mApĄ<ݷ mU'*FQ!jEu1 3^h֟li!c dKXr2J86MXrco0~c%_6-ic=T0$U#NÝvǴׇ2j[ڋ|SWCl7&T1:ch>_~]Xp1O-t.+{jq~3wgED̞**mB#)crf:{ϟWfZp+vGrܟ{b"yL\L퀭 n0\54/E{id.:+X礙!+˳ eP\+p6,TMy~ stUL۲ϱ`ˣR먜0?.'\nhG>>n7cY*eA7|P-abbzI`%l*BȑkX_!+p"d /¤N^ќ9hl/ev/V~_'_viUNRo;<&,,J [{W9ۯGʪ6npb"2(8be}^Siƹ|lrS?#ʑe=|aWk[I;\Qg {Z~(skXĝvl~|d: (Xiøjh1Y^PKzO]tq&G[Zx|=GﵳoK}nϣr[ `ko fJ<a ^ l{G>úHN(M*6-xjrlNxј2cas4줷YCi=hII=anBUQ8bT79c4{):Cb7ztk6'K{xS6}G{"$O+S Eb۸u3՗J!j⁚M6rZ|TsZ8=7~Zx҈XbvFqmj4ʪٜsLq!˘n%b.z޳ipc %6k+T2AbpY[g(i)cDbbBpl:$D4/Y P[QTܔ-hHgvbYZ\9p}PK>' ݣ<َ ^i[1X^aMviߌ.H~i@cfy j!<o&YSvLzT«-m8\ގf(Sۛ&&7sOj wѯ)2m7xLG2 lH੸5~}W_xqEO;z*<њeQS><"n_++x 7Ox𡼜=r<l>2qq}<;D)D7$㼴V곍h,0Sm7Th^zjOm<6[%.mj/ګUܪ~`V_.>Q`mV=X4~5li؎{qe;qCΥ}q#i n,^{;7Fn~FnX}b!S}B}!UQjۇ11P1P1P1,fbۇ88{*\Xfg߇Ar/#*|O}>^HC 0lB!DL>/*C}10_ x*Q1>X#1pjU|vj>+_Y\V4cr=2Os팿x;c/nqWU^xc:8cV#Uy2y2k,%bH uN^ gԱpb"ͱ}7>h9+u U.FO3>=$M^7$W(m<1ڱG O;ё>({#=Ў!(1X8ypXOؾ'ogɽrnbIw;iIw:{;o}Nv9y;lMޮN# 6;6[g z\{v*v5c\f5ȧB_"7Ȅ uU<V5UmMdU&܄ƨ@f~ϳ IDWl;<~(&&Y/캥ɯѺ(b&& YShb喷3Lj-&~綌VTd;$cL`;[ĕ[i4a^a1&}I*oeJ4oѹvLHLFhǘv (fώ03~fdEsɤsrIbIФ?̈́b21&OHާ d]mBő3i)y"]A.ԗ.GD.ԛ.I!ӄfAާ ]My&0LԷfw( \~ \ě A~& $q*/sK*e8P&e8,f,6T6D&e29)Iˁ2umdh@pIrρ1T53$T͏˨hB*FR*TT zIhDuLVU&g1p:P&=_xX}.._Z5.. $WpdWpB^կIo &&KFz,wa:DB.G&i.-ogRm1]Ke"1&c1&J&JVj꘼|2YsQ]MRi.GIY7N]H-hǘ.A@#T>NMn ^dIE%zc(&} HH&$4@BC$D@_BFFGm#$ٶQ@40FLJiB 9M(bBPFQSFR!&43Jlt5&P򅑖O %ٿQ.9F^S]El&(lBѵ<MŃՍ4:@v껲iݮFG4#AR >ɏ3-F{sR^u]u+q+zWȹ69u,|2z !0zXsJѨcE'1r5>#~o|$U`Fg| qKʸWz;Fc|FbJ01'0̋ũcᣤYY6-hǬmYye+蕶Y9*DQ!ڵm ѮmRmPp{~gۚi7[m[ǦmJ`[<6mCk;BmFsm;\賝kGnoϰwU;!7Ȅ uU<V5UmMdU&7Jƨ@ IDwL@|U}oXSύiȫ/J^}E!2 u=T\U%#*cK/LDY=dyc,,<ښ<Ѻ@ \C37m6#~ C(${dGvFn~,V6 '1J#n%3nY3huUe(9V͘c#cQWZVAp[zp>y%lye>/=]y oyc^AاŜhNRԛNQt8AvFO4Z;Ǭs*>C֟efUN hl 2|(M^1yVtt^AP cJXdxmg`T yѱעnnd2_u*R}Loɵ]GLS]U[mք[Ye}Do@I@+MGLʕLgLE& uGƈ ž)18B5 /=y%w9w<)IttڤI3ʤq#Rd1J:N JcUJNhlJUJ^)RJrWJUJc*%>-ux+y1V)>Rh^)AlN^3_UJwBo 2 Ixjkښp+LoQ(2 (a1qe I@Y$6A*Ji*/\GϬR=JIlښī]"c2?PV)ԫ90(h] rWmMܻ싈k/F/|/|?*0y=!:!Fr=2ڥOsry;#\nѭclT1Fc41FJFJ#'W#׎JcJZ[JcRN{вJbT۱JcR}^${4 ^KbRXD1Nڧ'&]%NQ&Fa'KU9pXgUJRvZDcUJݗR~JWJRR-V)1XmX[YD+JiRXDJ bɴ~nBT dr-@/lTmd[5VVt(=P&e>P&b&b3r)JIm>0V) UJeUV) _Y4zf^5W#D^d~RR1Ws`b?PV)Ѻ䒯ښ苹wׄ_֥__xUJanwy|A8v(|F"꽡xy3ctEFkmG!#4{cdo+ +}{14rTJ7T $^?'wvF7o 7B#7:G$ݎܖc]jD/ 4ky? "'&!#CRlc"L/#QA#J1nTJV)ݫRf-t_ew~o 2  #aixU[bKt.|cHyʈyX̨YYlwL3SzLz+&{1ɣ#p1tvu)sJ1#04y#pq}bn1dfxq+I Z|9\hbF֥zڅ# zDi4䋮s1 WfaEEc%Ɗ  b~s?mCOwM6Itd%@/=C=եK5RmMU&`z"6P&ceB6P&e之lL.̙:'\Ϲ tq#[L/a#7Ye41r11ogRLGBLmqeO~Ws;߄nQT_6xSjkd])nP֍Q(2(a1#/e虜2 (98lr"- %G'Fh#Y͡2Rm! %Ǥe~̓ xT\8 ViNxىNTىk5i5^s(j1?^s(~EmQj9"9VsXn519Rfkѯb^s6Ccxj5"9Ukj1^s =J\ue0[$R*]:Y:U:Q G$ЧyYYzm $ciAXR1t+YBtɒK2 9Oht1rئc>rſIO}jiۙ1\G`1rdZĞ{ڤc4|1$ά <&tt.ԗ.t.ݛh4ɬO|WWЄ*v 2Qxjkq*:v#9PFe:PFbFb#3R)#ӁjϺJ:Zj(sZGJYe:ڲjR=_$53OQqT V++֗jk+"X]%WFb~MVWcuh*5"VWXnu1 x]%J*&^WVW U*ԈRVS[TKz]5PVW(D^WXf s"ta-2YX-Up% 4Ȓ4Ox;Kx;K-;-5p&ciAXR1p+-}d{R}ڮauUX]_5 @>VWё.OVW>My;}>KL;*>{iex;x:.4ѹS_ӑwo Ѥ~?-j?yLr%6AFt2OuTm6U[#NeQ¿(}@¿4,6"=3*U22(MN ~:@Y]5PVW0guueu@Y]zHVk4;f\©vӭ Wx)W/']hWD\#ށJDB~8+іUjDVW)cVWJuUMRm(UVWY]\^WVWjR=[]5PVW }Cz/҅WI]%l/5cHA#uA{&7F*>:;H]%53kw>:wKv>rۛ¹c4oXU]'dt9@C2l4c6j)}Q(#Ё2 (#a1Qe虼L;-yv RWMک_RԒ{4%/N(yV©u<\3Lꪩ-hB%@dfhhjSu@J.Rru;Pr1F‹N%uӯUJ*s"2r׷ {$!F;ξ21F@qN3*iJc1Fcݭdͭ4}2ٗҝwv'=){gPwYwQ5u-7FnAtvAwq ȹc1#fMe:'e)?\#4:dL#Q1qȥ>#aM`M'13֊6eb?IƊ]eG_u d5xi{[Ci/ WP[DXby#VӉ~c fKS/:^չI^OpXY=@NӃN(QN5oa O> stream x}]u}z.^o}K`  !$3d19*sm駎RUivTw/?ҷU־?|~y׷vu_?-eů㗻_a|o/v}w^onojoo߯/??ǟoyiǿU^]ϯ+_}寿ֽtݿ +J|,DpiYWbHj׏beM2.~BZԗ{ݯ+/u:Gꢇ4R!4E D"J W:Ie;^僤2S1SIʵA 5 5Ìg=MTЪ~A|`R3磇UAVh>y ʿF#?!U/Fp%K;ɡZqhC)Th\ R > BC=rRqF0.%B Ɛ݉<P܂m_vuϕP.=Ok:"6= TOr8r!ڍWj/&{mB_!p VI\BrH-vRjd_~Gcman 3w}LPV6{9W Њ푳%_vkKY5-A/l+lxоGJ3%hqkPݫ'+O zA䜾`\*jGM+%r@4s 'ՂBͷ& ˃!v@ޡ]s =Ry$g*y- Ircq3vO L=gπA D-quRA%9>wW{WQ[i 5\JH0a{Bl]!w %̬F .l3[$@9'>'qόC OսquwĮ%խ3oR Zkuk[\+Σf_-Pget-0.}bq3BcF*J?R:lr9QsI֕ -ѕG4O>)%۠X:7LPdoϨczT9Q6xҧr?)#DZRlG4weo;Ѥ~Q#hohAPtzx2DtzB+N",К&ybv h*L偊"rNj$x`6̭8G&yRnPfѸV@Cv9ܮ %`pz$ arP;QzP@s-'p+ZE)&nz>QmsDRTqbt%Q&4qUI-hYNBӒ W=?H*8qj!ʘsB@5#ZSj~\02-lfBFk匢TE"WNȦ(hRV`so0n|dstᰆCH m{PL8_xcՒJᰣ!!=wO'z_'3"?|-9]:"L[O0_B*>6~ٔ~KTWΓ d {h/+#aQ[=mum9UՆc[Ydm7:T\kG`Ni戙:+X$B0C*;|q(Qߴ,4TUoં躴l'ݶ*&.Z:@B"o =q; v,yXrov`nxߴ gni7 ڤ\Ə(1-RH\{>iսTnnݻe"*59`MÀ=3߸iqVYiq]ArS*L<'9Aq2v2~ku rb bG1s =~hVPzo[2$m!o;~'`CnA{o1 pvjm g϶;@WH`]vjTR6pO&.x!~%&.Pw@P?&.)p?> mW؟j1 $K7+yY^CVXyWmUU`wTmI7P{vD 2)nvnx޴ gmi7 ڤl̷m{o7Myoz+zs{G`Rm&0)`m7мiG*^bӼ='J2rL ,Z;?$ ,Qo`Tm4W? @~h[P 9`rw@rvj0LI]i.29Ȥ|N@"E&g]dRhuڻTi`lTIE&|vIn`PsC*nox-edr[betI 1"o  nhܷo7`qŸB6[mmnv;(܏7M{v;n@vMg ?Lizou+pn {Ӟ7>a" {nE" xJw;>^?gNd[ i G*dD&ߴGѤf>"o(T(ڀp}:~'C܁󇸃gAzh1 Ҫivj@m gd϶;V؞p[vnr5@.FA|gۮdqy@l_o8d˶' ꊧj>ؕ, {] o/dq gICP?TQ:vpx/l|EO|o%hzwu4"X׬Dzg!M/-˘J{z}ㅞ(JY  rא+HT{!WX"ػj\+,y&9Nk0ծJڣRnV}w#Ak׌ḪXeu4 R[\0v6G8=neɅA Y@x*xF.`|Y8 < t8J+s#BYTρK%o8R5OXxpkz&/X@tiE)*]A+ k,%iVJ6j<JR09jk4E{NEPN C8lѡ~8&{9hƀ&ZE/VuXADMr8Zu=kX!*V3x9E\-^Ib4k"{Q6튠o)k~NCΆwO K!R)ʟӷuꖖdOUZuHpK^Œs z%QrTur)0({Z [ThewS>_ *V gҚzyjI-|Xugb/.]`ӢGOKиT''Mq4Gr_e(YxsyinH*9!F,ǭIϵVlh}[{W)X Icۋ lpbzK3ns1T\YAU6g /- fr\{!Jȇ$eXVŞ& F9ןǛM<\ͷ:\t; F ԆT4$o2cW;H5iK0#*Η Om}C*49*%R8M⌒31$enz)`7IDbͣv)Q;Q/XxNre/Hi$Tv ո#-Ώؤb W6][ 3ؖ15lqs8#ͯDnD| cѭ "^v9*C~1T1"óGDM\ cyR}xf!lK~K}1"(jC%AhG:bܞ>1_h o/q 좧- p TV8*T=4U^ؔ\>-iJ ^Hd.QA}z~9.&58[Jqtb[9D/Qi\f`80֯*?ԟ)Qʏ7`b;B)Zhv\y\ 1 RH 4D L0Az=tM6VQoI@pO7юooEMW x6b+JwH8KnPppXM1 z݃jCDwv??Ї2fS|*wVc:]z{+>1%> 4n,ؖ N*~ ӍI} V*bstcLa]ؖ3SZ Nծ)Yݲ4"}p8*lKNp*W()gɞR G͸8B݌TEE{$)עGW-Nz`W1鼬"bڤG!bybܙ8ZLxٝ#H#ҙ2憃ے^M!%ZҰیrܖgtFڌxJ.B[ν'9Orv|74qDbѩ4߂8'[BI 侐*?LҠGbp\+Q?i<η`F?*^{zx^}{xq A%{嚑q!>ޜ ӬqKNcF*-`8ZzB5͕7hpH R+͟f4vsrSi~]UNwcԿkqn|_JTГl殲؇ޚl*P)LgQIe3-ѣ JNSDqRdQ @4sNreVn@kS*fSm)Z5-j~[A^w@)R!&U _H%ۍ 2~IYYjb'LTi7ϋn[rEm P|y+O2j֐Uy Œ+V_CaPVIT<ƿ9ztXB1݋1ڌU{C{Mq3^xy:I^VŎ5˒X/!}J39p ,4r۝}k^|%OOE"xůfWybD!uQ } j{&b+tm|9a7^nmeVuZQ˫sYdIyOZtBJbN|[-zVܼWbQtv{[ v!IҨ`K(Z2xM*Wlxʄ ԕFWO󐚘[ pv14$Ŵ"8R[iAx#Ē׵L5-R[f9`@U+[Ig ;1sa?J$g0:"Ii]sڇ`Yъ%rUm-zXr&nO4G!cЂV_ Z-T2t0J/E9eB2Fɪ+s69Z!ɳCeVt+;YL6E4ȟǸv誎3vbiKΛRׇ*tp ;3rvyq0Sԩ˜ !{  }%yܬZvGreK[:};1ڕ >ܝC@v HU؁>D͝cRtTt-_Q핡4-CH7:W+;RFߊZtN{";](vힲa.25^Jx)33+;BINcK>iz:VVʱ_[KtiMVCI'iɵ=msor pXw DZshHsaU-lɾpXd.֮-D \&l^sЖ gCEy>Akϲ_KPbrre?q-IJ*2,l>f6VzkmYJeݯ>hq(gΞC c?c/#n&5R~ VYG#L4.TZ vKOm˄a 4 ^Tw Ib#<,y̖X -$ q(3DT]WkE"2&"]j\YqHg *U4 GLNp ؤ!2vP@[4,{f4f\A9?:W\U5ϖJ(ǵTB5nO!Hژ g[B^CțE=Ӫg=Z .nCIu](Ez2#^YKO `R9 Vi'M/X:“S[-9j̎!j~-YZ!x֢,i8Ncܨ-(O@WІ*P'@~quDHE=4#.$%hfn883|v%.]YbKoU]!FH̽x$p$ nhf[6A׻>y퓞B.f+:9XrSҺs[7&J+\>pQ*^Twr7^.Kĵe0X[nL3a/ʥzlKus/P` bøFX^𥷄_v0zB|:T''ղv^TWSQY,iTöd |2e0ےAJu R#SkiK1ʤe+(j2Y[ɱiI&(IeF҉ѵKZ Q}X+) NJNեgz0Rq-U6:왢2 H'3 \"eJj8qeUeIZEAƼu6X>T/ k=`Q zO <1V xF2E\Gk=I 3,T,TPa-(6ZqF CQ\Q]zF^}3&)Ǟҟ5OvGʹNrr\KmU\;xF%vb5)d!/ʇ3. Hi A+⮐=`ґA [?~c%NJ|r{'k5g5+J'op[{xmsz!#Zgly x ZF1pDH1oh[p$8"KkZAe=*q-oiKFQNɕ=a)"{͆m,0.{ؖ/PYJ(j(ǃ$ڪ|$-PKҠ'GΈiĮ>ƍ}ɱz#GP>S9XM+JF(G*{ET !ر¢`e*KVaAmQ\+9WƞS:{UzjF#jpQ$$T^ch7xm+nG+.{HCMZxDYdiGۧ s{'+)Yp,y/|>XT9#u9+ܿV;KHzjD|i7" f[z쯟/TbýҨ}N(BRWAD/`؟ԨƋm oqT}K2v}R"9]]]5iELGf\:+$mHn$S&YQkKNƲ&_!#iɸNȡH;_+O2#8GPJX5( <xXQ-MeL|AtɵcB:zݳS O  FŞE]Jн%NLVƃ=E':a`ђSUum"Z(LiMJ2 ? qQQbo!YQ$ z i  ƅ%qaIVIu%965^ UE ~gn##["l4wu=ig32 ,Ag"ޘ*sV۲ŭЗyRPd 4V*)*ZS[ha3t3ci!tCHɻxJ`| LTZ?%kJ Sh&+:X?[ Y_`X\tbǷ+*.@;ꠐ0eÎahrQדzeKy^~7y?PV$+6CZ%&hD+tJD#t*0gjnk{gw>rz\bS0r W;L[t&Om.%G7>']D zd$, b;VTo`kD3gkĻ(m;3]l{og[Jd\Rq - VArús-4WNkRNvVΧT5wX#" Pխz*8MS3ZؖoZT$9NqḵghVvӟ=W47Fͨ]|ϼ[>ۅݵ]g:x&iD^[T ]7ݶ}b u5#"% z?T/Dݠ֛F,ÞadK`S^zsim+βYAх326 ,=\/m|@[&P q4ʪ8Rz11,jϟ)ո!l\\[zԦ=(᪤TtZ>V "eLTm|U$6$E^82.(k =`#p$,uG#t8lDst!#lz$Ǒ6z'K{ 䌳y\ +:KQC!~\ uGl6c.4lPiIm'{x>>DLj]~Tʳ p@Ov$LfKP=ݛǙr$ΰULuԿ_ƥy "u7A릫(k<[=ϥ-y܈%oQL e5Q<4GN;ʊQ|ϏumFq[D:1i,58wc^3=9_:9ϸʇ-be魿뤅O,;AsUrnHKc+R{ o#aTRf;.*\B vֹܱ<5T+?r8RiW4rQQ,_Yܯ6i7rHS/N+OTF+F[8`B х(f]Vr4S:۸43rU3_,cɈ5'KU5ª\{i\H:F~x+@WK>K^HuX*v^6\-D s4Fݾ@Ϧ;]](Ե|n_\ȍ Iŀo@QRe^H}< u[{E(!O=qj/qK=:hřT:Z̿J.;Z3zGȰ!IRf\;U 39yaKP9lqQChTAWN.kG?N=Mce5IIqp%x We1RZ)k V_W8D*F#眢"Oc*$)8QTlk/* #Wy`Uв3>D<7~*'BW-GS)Mz"e9ِ}H&,K,?09'G^QjE8y|*jDXݜ[½rUiw{Zʑo9\NO~>N&u~w u% w|s'+2 "2Ԋ;x,TNf똔z4:7FӍI%_< w5;)̶z jܑ(x{j\{OΈ)J{ ԜfrܮlGJRyՏ[g-C.>#nh9+-$|u6˷5z}h7 Nd%u_Q?~0؎7__㟷Gqv`9p?#dauſ`11k?^ݏ. endstream endobj 1546 0 obj 14292 endobj 1580 0 obj <> stream x}۪m9{~y./PT^(p ~n.ӍࢠKu4C cI EBcB!Ǘ^=/-_ӟ~?CMK}~_G_Ks~AAߋ۾WNc9<v׀[O0h8n/HHŞcQMg5!+#3¶9ߤQm%!W?&osz6l j_5Q8_llԯ1H"lfmŶ/Rw!Ə,%bѸ)`[ˢ@?5UL< HՇ3z͇JQkE+o@mf5F;-:H%IDQ'v"ǨpţbtkOk3TXa1;FDj"W//5K<~5f[ UU[F^w}0^79/HE&.$yAA* gDjо7E{p>8k׼"Ul :H9^rRu_QRvS!9,jѸIV//RnH_^X,q_z9]Gk^5flHY*&iߝy~z.mfSуW[2/YwGj2_TOgƚY9 }8nnHŞ_\ڍ驕kC*a4s(g osU<0eV|["J 惨DIf-KA- WsZͷi]a-_.v Bq\9\c\G*90'aWvBSbq-my#BaU 4ZGgXǼxYrϒav,yyNO=%pz:K^-8;?XT|_fua^i8rЖ6I7ElKSDi %V,8_|9gw-A'!y/!"Tm $)k6PJ'$3/0O[W)wDAx[Dի~&]t" &^GORFѻ 4ypjR8)4}eimk䛯%_|cIhZ=  F{{ԀTA\4)QG@|P)FB^#Y Ư %Tpsh8.lB)ud(uDds<qD jԙ fQ1s!D5,*q _"* YrvcE=J<6\@\fEYej3BvMK71]&5ߝ;3+N*|R㟑ڀxP;L{',*|m|i܉!/}\M̸$\U0pJ3pQ@5jt)ø)ux1L E5F\j6Y%G8tk̇!@[ܧ~"1+W3@Xk_-EE G$3Y=35CIFlWGsja3erF{ 5<+5!(R.+=LrW}kM0.'pAZ1ᚧ~jy8=g,r}(劫oY^uP|/>2AΔlIYJ48W:r0N4B~9Ѩ_t[UrE{3~kKFhqhq&4O%_3˿iN( #cQ35)ݹoHw#FYTUrTVݢr/@[F%A+9nؖb~(g%ߟ7-\qu1ҠOIj7q6*OΗOPVp)^XQځgLuDU""Rq܄rp`)rr3w`|*lm)SoLm;n~t !;c%ԢRaEϮ0.Kb>ٶkߝ(ХF)Z%jǶf(K*R) O,K*'JLTQ-|$)1K@Qjkɢ6SR! ~U8ԃ M2 DgY73ΓjDi!ہAF(Hղ8qsͶ82 )mI5k)4\KF2P z@Qr!1 W+]ٸ.D,U eKEoNEUSv̤KRwTP)Z8[dn>K:q{-MggSb7tåvGYƨzRUӑml*-^T6'i)˺NV^\j"x^z6VX˻Y뽵˾qܑ'~Ceŋg;4]06 b[ʏ #mc.CC݉&_TgT.cŸTJ uVT$gJ؜.Zn\Qߢ gD)#D{EsU dE#A>oG*Fx-jc䳑X/hTo3''9I(|YZ3یZrg==J~C&D@A3`yO%؛{Q V"-,*BA_0m4 ڭMͺheP@W1() cҁ՗NHx{VAfƷ )r>@k93tW[qhAwL/-2̜%ImA*PT#&\VzQLF(IW E3V<$+aZP-3~\SCKdu6=zLa~4{'ti[Z~} ##{QwR ỒFv*;T<^خݪ~O0[ >^&nw-!JGw6*G3gl,jQ93i,A''FCTlKՔ {m޳}8K)QUך.1= >q% G|q%%'JoǍĝm>r.+]w|/* |ݹ|khȞP6V8z\۪f4)iD 6+lsT:`ǫt@%\n\z;VǸx~xC' SreAg) ;:7A zfd&~RqpIr<0f&q;5w[0ft"E ~]FJ5F¦tɒ>+ٳaFU qRԳ^}c)읔CvP5[9}1]8GSՖ X-qTz4֋:ŒBu6z%ID J:x!I.!!,jP;v 1Ef@]h URR'5.sx\8b2+/*],H΍zNđRd~[gFr.3r܄|.d1u~q\?"G̈Oo-1DW#A•l/bA*?񂴛YkmR݌tY㷶T"z+NhVRyz4IV쩴ذ/%?.;|gHYLPka$yj|ݧ )?.TK}WuVǐm?>$gzB9R2rEsbf/VV47|ךvBzrߝ(˅Fx^ب-<C`-&~~XLH=ެKyGQRgG3:[T-$fcs8.\Q\5]ҩ-JV7Kip|nAU1Ֆ:RL TbY@CWzJIo?"ޡO*Y@jQS,e虩=ԍʟS.*Vedϖ-/{nNL~!ʡD철;g"F%N GjkoT*L` o Y*&YZƨbR45yRh7T-/9 I֍Fӑ_2D&mI}8/{[Ȗ/UlmCA{[l1%1dUiNQ|UR3x: #?CiN8.9lڡh-Ɔ IZR[ho<fAeiܫ Q[{IGm hSj=&Aq攲J_,m=?mCAJ_{_vB0{`Q @po zK! t " ̪֖Cg r&{. Bp\>8.A=S U\PU&Oǡ)*O41OEpnz_Ng+qRwFPUX]TFl=SvFƥ]ᵶ<3ٕ-s+J¹fJ (Bjߎ$Vo"αj-yGd"אZm\z=],ctiU2ҹCKժ-%$<=Nրcխc״,? 0FC(-VW@`\y]|2b-PrewbF_D2jqjKC@[G3q_lp#ѪE#M"HG,uBE ^ZثQKuteFw223nTRm95􀓫G9ڇZWdf5Or*I6rJҮ:R v$Ll<jTjKGJ.xlKG>Q+H/ER EΨ^54ms-% Bt FGRu) NAX!R@yyCP45.-=lV%o?dG]lQR5Qk~ Žb%w~Gj'OY!5KS;OYgK٨YgK͒=7eaY[KcoJ'-鸴l8*"T]5UH ΔӮQJ!QFŤ+[M"ݨQ)PJ[ 5>Q-ELZQ@ioKQ x/e1b6HGx#Z86flug- $^kYZ*X _rHZ+<EZqx)Υt:73IT=_n"OFZR̺.TZʥ/\Iuս\5ˌm6:#Lo+*Dv=b#HŕZOo]v>Kߎ.*gbgjK'ztWo=O-g&֢"OꙉҝӺQP*+!P4Wi9 RVNg3kFi޻ܤyXRFDR+YExةi ' b"\T ceoms¶8[{ILRVuQ"椽+˯lf.4F; :G%̳wQ)궺F,-jn\ͽ[XY-b3#Be.řnA.aSb[.PgEnz=[ۖ>dKj>l3qt+~KLƋX/Wt/k5`E$3TQ[VQTNS̞r7>Kk$i" ׼# Rzux|g6*=ϙ/:nTB遫h%Kl2Z?>8#+S:!Z=Rvk{›r&1gق}ɞ[E*լ~H;R1]f4n==ԁd!5Z2\ʥ¸3"g}%*~TbS[W1m>ߟo:G6*!˂*^eFygƶt|/ڝ%|3O\loxl%.{hJbJJNad(fn+lF1e.;K8t($\Z.eSU᧬ǵon=^'ɣr\qVXWGՌ‚zbQB/-[\%]ZEwX{&:cL6QrEOfOȞ~zDOzDOqFx,(^hzBt@-"u@qW rįp\:7,ӌPC@jkԣB콴`w7*ݚp1]۱8|!`>y>n-)K39@*mw pfC1yQE践:M8.=PƈS]X*Q]eyDu$gFtx8SYELY)zr~;}+OaGqݒ":ⴗxBt]v7Onc>w0axZvg SmӜ|mF2d+7&[݁#ѫv'Rlc#^=m|{v#'1G3vo3Ր2K人#pW.w]\T@0Dw~ƥsq % @(r|D͓=Qqߨ#P9\@R\;kC90n)WվbseQ\#>t=K5#k_H=H]Q ݐJH%;lNa+F;ޛ}ZFnܧ(\;Jl27ɳ mE^(l 5惾#K|va[.ѭ7S C}\Yh7{8v? > #wZR^{Nמl~jQT*&96F:⨴Ox٭ K{2P=YKjgS#J:KwC*l2d[+j&ƆWGm%uE=J_aޥp 5>i e3)X{_6ܧ85M'IɑegNhp]i!FqL,#NfvE3:+_p] 10Hro9H}r-G-m[""R#}RհϢҳf=.I+ԌJ*KK`sؖ*.*UY1%k UJ VdzN= :9woCq=R)Tz~\MEovv eڥ)Z* Nh;Tp<&MXjk>8ERTsHRBlhm(bj~,RG*hҸ qxҬҜ3&f"P98=xG_6Sh|SD{g' Z:%iq5'*z^ܼB*ىp#>:h\:4thWgy<7О0`8)pE^7e{֒om1^c[[x{ڜe[YƞxkoX2ES b>,VFMЖJQG2ݨL-G)ǵ:4iU-SNm ¢ TFxE4ฑ-oͱ=Q ;"o K_,jZq3?aW`F͗nTV(3dq)b<=H<[mxX4S,QQ6ڳZߨ DZT 崇=}%z\*YqIjZ'41mTSrم T,SmgRl=ۆպQ!#srVcX8݌j*MOhs#˅pќQ,̠l2X`%pY%^ѮǞUR-\}UbWmhW%8/mr^S6-~/a{h }srn޾(%޿;dC1l݂UV3f ;&6պmy ]]2F%_5Cl֞8:I v~.^n|?ݮH|xOu){r8c/mDP]^Dy5-z"[[n ՘VU֜t/ۚO%2؄r`MQ#'6ZǍgq@ݯg2Z;ܨJk7˟)K=t=$ɐH|N:j#Qkǝ[KĊQPb"찻"硄Vg%Vs&GsaT\M^P#ee/KMfԑgJka5\Bkc\Q,Yq+rň`70HKLKu\Az_hU˷ Ş;8ޒqPm~t(1CbӞAri\ZݞBhB|4'QX*$Iz4OO\ (to/c ވ`FKDވ""?oDǤ2ԔJ gmJJ-R\E^TEPuVfG[<`HQ7MQ \@ ^n=w\E lQ \ϖ)ogvEsg6*柖Bqgv|a?PQbҶǍeMD5DA҂ZExgd[zPV< kI*5Ӝ]V+CʿiXƍu9p#ss#FĢF=HŦbh߈^3i2jrem^2eE?1%qz-J-u[qijhYR-=nKO$RKfDpj@d@JVn~qly$.ߨ)_vQTVGdrpeTpMHԑ:hIb%L؎j 2ɞƥC{Eq-*,EÃ/o[w,6a{c N.v{AmdKS""OH<ꦍaS9L;LpGLj_@MZs{P$Gr< üV:w9^vmbOPΖݮ.֛cv]ORi~)ɑwEŧ ݥ='nr#54 nmJ=උ/'eͨD(v[5z`{5`uVjI>R=yFYK~wZ`1!֚=p0D2d , K14dz{Vik{K`YDdYDmX-9d'VU24{ީx9jq z/h yFv^l gK)] J>Jxq|׹*1cq+d,/S<} ɩҶl;󼰥dn\g.¢La/c6. 5@)pQ:8M^%)a7o!*3iMp3V Tghaoʷгrܼwvϙ,@t 1 'w8<.;6X|;ez 6-*u{A /qX6FI Ֆ gQ02oR߳ny\Ŝ+(U%H=fn ǯ(ojh #shzGǘJjϖ=Jp5Y 1$ҭL3/E 5-!E1h1IgB 3ŰE/(Hkltf/d̨RmW!xwW ruVq(kJhu*^,Cbt(#*GeEeei!hmNz߬rfs_#yfE3GR"z=M5Y!n|75Ptw"c~P6iI߭`'Nm񲗍]s<rt|t> stream x]]fq_׾hw d!ƉM6e?J-=9af#TU*J%׿O?|ܛ{>Zz_߽{OVcyL%yGCm=|gT?kn!"oo~_^Ѹ׿|kD~79懿}kYw?~d T;tXl@@ƻ$6EmpS0 ~sжT}/h-B+@ >e"VCw'hA THpw?|#\Ƅi 'A^-j +Φ=km-I^C {օ/yhAhŞ;Kߡ$e(IU %Y/8Gy UcbEөhI1KG!NgSChF A|}KPAz\A&)W ((+!`[S9I3%e1~iT0ni(C WBW)١j*H&R%bD=WBPD'}J: !kBף4i %Ќ'>HRY')4EgYh'ALk|?PV\8ns;"BӉJĶ-hw(-юҒ<ʊrU:JZ O%5щvi>X\A^]DZ:/1HLJ7 MoZ@4 667&L0ն! `F0ioIxvH'5$(E8L2V"QnlQF(V6e/|oGd+ƻ/E1!L,`4nQ"zN(5RJ*(4#+_C*s-<JN:ђwq.ƶy|ҸQ6>AJr tc:2f`K@=Bi+ѸΑ,iB%FGssiH3z6_[AcN2k v$SV@?'Q Qb@~sb1ΠR9>B/fھgPR i {~0#ʸ^vdX n"CO׃ B GOK^P /ςЫqz198sCR.4Id6ŽXQQ#i!,Gn)) |ᰲ+HɎP3G"{I}JYZOPZ8vx4g%;B%vTp8+k oBQRz:ITo]/UvII4@-5x5ھ;1# T(? YRs('RYm) u'@Za:"U|zl|y}@'@9?W VSԘ6x\#H+1<&!#9qrhHQ 8"<]9轔(ƥIMʷ\8mx81&-'P:63nF)qf y1`η^B*ֆVk;~sG%@wK9am[Z]vИ 'Dgf)ŁY$dkP$DΨT#FC9ZR T %P>?S@jYhX4TƯCԼuNHDE V-(]0*\n0[c9Tú߃] SJdiU4 6qGb *V6FhƊ$-ʒLfb*iP0.m.*LA=S~BrDgJ+7BFM< o@gN}BѡB dY)is}S5ǥ¢\L Dg+}$fBY<J]WSǵE>augpu%GJs?e7%u#\u2,n*k,fKN+X * 7+݋ـ{i[_6SMmt%"*uLq֢F[ 3WTMZV*v@+25cb *TFVE6ʏwZPۄeO [Z5 J<@njK%|m޲W蘱g*{n:cAUZH{rRYjKrO\Q&M'{M JQ[qC0J8ǸuU$<(҂֮ T| >Kqs@(E1%J+dAT8DRܥehY҈,@jNIGy[l3B1<̈̄3Ur=[`ԥ=-〉?cryPObUSෂ\gseIW5;vl cw=$N⪦DUmS<0*<'`$? 1 gnO`v뻻 YP1-0 7 g-04nzIX[[zȞ]Sh0o\yq^5,ĉdt p\\fTC*:B)x[6]>Uz&OFA(*r*m8}W|c;;nPEdIyllrJ8UEF^c\qmp[mW.Y4USl nǦH5*\Ƕ6"fx'_g-} TvہGvaĀF;RʈKGL)pԽJwF&f%NϧkIV7-X9` [,Vq< f{nwX}jof`t%;iqcO Vݳ{fiQf! _[=[IJYģN\ڜ=huM֨h{8HW[9B)>[h 5'E3 8#52&^=[dO:ޛ;iu?Jܢ?J;x g xޣ%}9R|{fDmO)j`\G™ލpNЊP<=5Cn[Q꨾%)9B'=kx=#j*%V*+yNރW%Ab| oێCh27ޚUJ'0jhthI7"fv$R%Q%sd8lE)W# n5y4~L= !fta~w?/2 v( 0su;={Kv|,gFk?ފZM%?q ʅ7X–i[{<):ShT#W)"5|Aˬ0A1n:*9lKs}!H~WPq&tE6QF= 7ɋ881 85/gFhd ~q?QJ#Q h͞۶PS:nFb>˧bxm1|)WL1<_bZST}Ti{ ߇3z# P+{j1&/\E)R8[q^٩NIxz2ntĄsfesU8P!hs{ٛJ&.`75!5n~&j evܨ<[1Nt 'AE|E(E\;qf ^]Mr$5"w_]{CCγD)Iy+7$Zum M2Hx5٣>Fߍ|P9Xe>ZQʦHڏ?z_N 9C4 rD= 赔~iڈ\TBw㝺&et@ׁ ٣ʧ^CA-byP%O5HY3I+_q1ӕCm +:b#U_G* r <#J=t'=0p&c} a=Ŋ1Okq(9VAMg%Z t+Br>0҅㐧td>ʺ%T9_[@fTϗfXܽ7&AڄnaT54LkPЇ+Hε{ 'f wy$?]*]r>%iKEYz6VQ JU YS)<Б7HWL1UT V[ܳW byWWIJcw7A 11c Ƭ1 }x[)S[ˇǼ)SrT{Px>UA󖳵1 |PoU;Sqoy+B=U8? (ϧ g)Ryo}x[qhxRwE;{Tn~'Iݭn|RwGuNu4u$ʗ#^5Ç%u&xx6'ó9  Il^vEpv|Az"@"*-t_V'hEڒhܹȵ3/kT*m}_NsY[lRs/ J>.z_|5!_HΟx,35&^RG"ҹg&\ji7B!_[~ Oҷ _o87Bj$Dl_PX=݂XE~<MQ)փN)t029úelTfǵ2۸٬T=E5뭐ye:)h~ܽ}#*>]YG[_*Js@D "c(Ƌ>} [|.ji(y$}#býg{vØ{ERxA P"{Ĵm[Q97 21Idt'.cqni GuUs _Ylk~6ME^ ݠTɬx4^<ћFO?/o1pktU3k`uyۗ< v|K% endstream endobj 1616 0 obj 10045 endobj 1656 0 obj <> stream x}[-9rs?N3isjLl n/2V֮|gmI) )㿾O/}l/G>׏|c G߹揰}-~׈o6o~o)~1oHŷG|߼m~~e{}{K----/016۸?~ӟ?o۟ӍrnKmZٿƏ_?ןs)?_hr}~S|oU%^+/ƕlq_זKm_tW0l}uSN~u; ИaqC@5mytւ@KNѸE_^l=0*'Ө#P\ۆ@NPP~@qg 4DŽ:^+X(vP)8]-6)kSKAJ+ޭ%sAY㵀dCy2(K=4!~i*j%_=BV,EZ '|N(PL=iiB.$,mFi.ؒ݇RG=P ֛l@hcV҉/_|b qT'9@6K%'9Uѽ'hEQ~t$QYrRMjz30-T_#?\z-T07DI@U } &%bI >TPޱ͓s-dE;@4ךZ^^'RkD ѧ)AӱKkeK߼N;fDJ@_+-]Ni:=t&gF@.O+E.Rvz ^HU{e^ْv^_JG_|ʆʽlAkC QUB~6.,8qCMPqw7/ZhmXakC}D{ [g c-@crW>F#sH[BL Q _Q%(; {Gq:@čv_;5ǃ<7rD+v`')5ǔQ3(ݐ[\ȣ`υ4r#i4nCmƅ*5.TV@\zX=N: x+[).3ʑ,n88߼=9ӺxV聆tg[mJh4JpiOwZWKGՂ/l"{%x7圼~#d'DI!3GDgMH5qmoKHO"yἮШ@̑ g1 BAĠ<Ȝ?T1!JIqrrǍ i}q(\ALIOB!cnqD)-]'yQ5{Ӵ$h{Ц)mIĐށ?Z1%S:,hJ' c|$Gjk;.ŋAln/m 4M&YGc ;JIԈ{NUj5~sEôoF=nMv+" QJTׇ5G+ͅbjFLId:.&^Ѫoi.NLޖ"/;7ۂ`7)t3i#FiG_mszڜ(~\Ђ8.GE칅ȡgkd<0z"g/0V;DYPF-ts*8P@( D(o{aB=tC !/1.p`tpkeg.A0"1_sjs:wpXu׎UFTʏhy-ձȕ v1bB!bXĸʇ 2p˟"&b`Tol?.:=c]q:?Jh\{FHax9xi0T ) RZtU:9i)uJ=4ԿTԿ^2|aŐZVnbHV!--k=!fw@;XCZ7mC}bT**õ\/Y%LmHª԰^y[O;vСgvJ曚(tqfz#@M*ގ[{,ַ ȑMZ=1W#6A .Y@,3(.ێm12LN3C?YP /bShKKwq:{!GDz& {2J $hyӰ~<J!MQg/&o@+\Gyi5:MTg~8L*MTIŶ|8 d6=V} I\f@3(e::g&䎶C=hwT^{=^-rmp6-l4eʣ&Yn-*m'E8S螵+;eF?]ΧXH[ `YqYssDUqӎ`[w#_8^_Pv8 boτOMJc #l2zMl':MNͶ̶t^3Qk $w>+fO : k@>).uyDu H#-sw)먘~KT0 E)M=mRkKVZP;KM#NE f[!d`luGJBq)ĭI^YRV9bځSDUΨSkJ~Y|5 ; ʸk(qJ8p/t>JtPO'B7|N |z>iOP樴 4Q̽O(U@ 24Qx5MfK:Ȫ(|D|#y)IS&$AISZ'MNQ||''MOR=Oq$q')^O=}и'M8b|n 8oGYrg4rJI%~Lu<(R1pj~Et횞sS#染3mgIPɕ7oբqW.i\@$޸r\;2F+"iճZg[|Gh<=s~'8*@G/0yqDQG/lҰ8`1lD|&" baq)B-;)z:iRg w 8@l8@jqIױ]a߶w*pءNгÉ#9naKvPnn64PbƟv(iv(95PR5Prj!sѽC~'@=ݻ@W.:{ ]hݛm{ѽ~L&ZS4dGf=5=E797G%p*NI( c Pzak [^d`k⣭ *{AI * J/l/zci4jz)S@'_ZbpJG.)](WW4F`8FٜٜҜdr1^O<3//c\dx9>O[-wl% p`  @wٽP~5q0B] =w>a>'XΚb[vŶŞ ^//!HM @WCKyzi졗=LszՋ'ǂ9E)[$:'?Mv 9p*a?Mԋ&J;8E'^? m=㧩]5M) Ib8E&񓒏O='e#{NQp;躝 '۹Pۙ(ndLNۙ(I=e0E7xangs;Sv(NQ2#8uvS꓍2n;4UP tBlDlÅن6L6LmPDlv6̶^AVlj; S~^alZN B/RŹZ 8WK!s|,ʞ'ԛ,\ |1:9-O4 |b1pOr(9 \hiBkN28 \i 5W=wZcd#rPZck">-9c9rcP7r(c^PϱLIO^00LmIeE`EleŒEB s,`Nqq/nJc?XO"$:!ӱ(;!ӱɟEkEHt,$yϱeiy/ $X&:ԹXbecX&zw,Rvd/0 cNuDr奭>S Ck(CR?ed" C& a\^+ Zl{:2&aLn7F}*_~2τ!@0x C& M^sn3#U8D0JkDg΅u (Ј}GHo^d?/w Tfu9_m.xaSAL:!f{Ϲ!(f8lC tL}tƝ o@6S!wnyMs%!i94]+{ &@sh MCS9_}>څ򧅆CDq:S"p;t]P94)shvC\<O&x:4g.F!o0?'Ef. "\j沉f.n沉f.me5>CK\6u8)YPowh"=e\M^2Q/ 1zGujZ['4\#7/$pBW_;p{iF Bm']\~Ge]˒`wY 4%&깬z[6g˲å[Yҩ~XZ:[uqY /.kA = -l;\ւQg.KI\,%=sYJ~沔e)R3XW8 wF,@3b#i 5#P׈4qFÈ4@?XjF Ra\\)Be(j4-iZڪCCsz|in9#,*<( JF* 8΀ M̻iL*6r_,T\9K\7Ћe͚_u?^* 9uv>/z+FMÏ% ]_RXd=R\;nvѧҦHy#oҪLM%Jy2)'}0#,X4V5RSM%}}l)mh11}6FO.%ժՃW6^?}]MF?Veۤm]aST%Fm)JJ̷_Rڮ*K 4*-Z@(@0 G,Z=- o r)iY@~<4)tm}C-)\(fENR}i)EC 6DoٿߐbxQrM~_0g-WU1dGB l1Бi=ܽ]{1?F=}>ȼAZGA#bC}q[}g*m/b:A}|)S@1KH}(J(⠸!'01_ wm([zAKrr܆+ ?sBk&cZ~e0ߗ7ܕʶMz J) ׶=YJڃ)l /| 7#KM Xhwrzu՝ }+S&H`iGs--fj%}&ʙ1&͋sC]PBuGn3E- n9\mxxe\:.}}|YͷLFHc;NtSJ>U?U5/чIp}=> iqGNWLZA,ely40 |g{rh%q)L{ԔF9粭[~|6$'5&AK}QO)+4;,UHٕg%nر>IH{ g ucA-cg {󝿻i8& J -3=ݐVbagM=4'%#S=Ǿ[zǢG,Hh?**oQBgE$b>)|QӦxl7DLG3mjW*O JvG=ofT-W0H)'qmBm+ʎu$G.([qi~v $·wU2i$^'ryE!]#AgA)$z@{߄mWGD?o YȫPJ@JL iqoYLVs,mdsw7߳$Nn/1ұN1 5L Q*HJPbyG!8bZBQD\t2~4$'wIŲOrt*~A M\@1 0J'^(o2*Sez)MtV6Q;4ⷿcۂmpfCm8cz>.C H7KPڑA" P(PC\EPN_w9~ZMQ_Cgl(yt+@WVQ@k{%;Po'nܠwO:"tҦ-j7LQHkr,3:]e!i'L9N!UEKyEIU~D5*5/ ?톷y/~A#zmJADžE%ap_+ڥd3iW=p[~жq>t8ju%G]=' 5ċ}س,WۘN(`wmIF$_;w̽"}/$p1"Ꝡ͎m0Bﻎ(n&Jkqۓt ۅ* SqL|~e&MZ#Ϯf:֗)p+eGQʧ[AU[TKVs֒͞$)!dbryF '>9w5fTw=hɸ:_8Z_r'_E7ϗ`NǞU%TɃWGI+\47J)MJ6z$"C@s#mqw_h "f Pp{^I|z%Y\Τ5(&U:_{@ǝa9\k)o_ݳeU}/U gp@*(CzEe\Űlh|X{b%%`Tė,֒h*/#{ߞro/tQ8n- gO c]WueoO+D)cTɔ{Rqȶ)#J/v%4rܑ [S블ٰ-4.4' 1ϚHīcC#T$E/}`u9K_RIM]Eb[B09>\>ңPTD)zU OEv$=J=Ḿ^t$=mrW+51~)U E4-OZ2zt*z~{HΈ>>r;ZBy{'i>Q-}ԪZEE%рmNX‘77U؜V8O Jt]iΙ\ʅ>y<^ȕp'ⲑ(eY|FgV<hDa\*ؼd_믿|`o,Gۿ~>ő|J3__.u_ֿ(]M_K=^5Ma6|@F'b^_K=^(X)i ẖ-E0g|-gW{ciw!2nG|r75xv d=lɨ]Ϫ#SE#Qm@lO'-Æ(樷ςյ-eNNls4\l-Ҁ&Ǝ{D/?6="ٟ$G*iDbOUFr< )[4S1fP1F=ڼA[V:=3~̤WTk\H=zU>_%Yj_uF"^-K1__K(y# ͭ1 endstream endobj 1657 0 obj 10534 endobj 1722 0 obj <> stream x}ˮ%9n<=8zB]6v˰m4߿[T9(ԉ\ERE_~~Ǐ8>׿^>Ǚg|}/pُjl1?Qįg^{?w~fa/TI}ђ>( }"|.db&/EvN^xʗ"ЋF8 gX хLr,ߊDB&Q_M$_B/bq~-7:I:Ié$:^7*l/+~ίEF'B'iNn"ЋF'|) HoTHSϯ&_N҅Nr(1/EzN/EzN#(_B/xF"}t4$H/"Q! ];H$]$mKoE֖F$ɋ"ɋ72IbS3م^7*NTWu/lQU?kʇcm9-/&?ioo$jҖ4(B[.c|@o'ȇmuz^=>gmCw|VǓyYzG[]G>7w[/Mo3.#?o;G3!y}ZGOGyD{ǥ])Wώٗ?g8V&}!;neoۈԷ-ں2&mFۈ}Էިo#QF8D}6 m ۈ Է1ocdW~m#e {p7[l΃~˘l׏x߿P_6|߾PPO/_Lfu-g]`+2Vi aLmDBɵ#ڑ4b ZұKC #_n~?.ź<2PK3w4|/dچ-9$({x b-0v;˱1Fp JƒٯZAs8w#e5F2%KhX"(br'pU%dU4@h#V~Fu6j ֐$d,s9ávrPoh>GÒj( 2V1ty5PA4E9<*v㗽=Heo_[r'zPnԯy<Pn^;"% <<9EPq.k`QqQeoWgc`~9WK}fkez %,10BI[N_R'ŸD a/.~|hO>"!i/9PF?;"l1j/ֺe *n+\O^$u(On{aΰ(axP'H6mJ 4!ڀ !!mDiۃ%'_f[4CU2(S`A&Bi 0PpEMGhqvȐ&I:B1) 8▀"Wsjіn t*xnU\ZXoq1_UyH%NG<" '+pyEЯc ݊0g" +s*])15#4r vf*bYI+p\]Q 烌eIs&-$pL]^k2[ (>>]>xlbXOh[΄l˙Oh}%sCGnC~ЫI'Ԣ8|{{EuA>hN=4(RpSZKٗQ`í}LFqnYS(.m SТhv(ҡmc[YB1z/ZQ2,Iyq#TaUzΉoЊ/Јbgd;#4#U.-гP\> tJR%(s$jTzє}dW8DJNxEZz)=TÉ%c:"#"-'swrfNב: }ԭ+y1++uxB_:"/<j~p0Ie-j5#y!|_N0^i9P;!!Jzczbp|&)fwϒ.J*g7Ja!ghaʓkrO`ڶnKB/L'u(ӫS'D3-G{qD QojcELXmG4؂ދCapt5A\IAEK{-=ݷ7MKiIc8*cV >P u7%U,@^_7՞=c(N.P=o%Fbْ}cTu# #}~cv 7FkUc'6yO9yҕ (SU] (ys7ƹSax3)95fOd+]14̑.Vƶe8s7v?[F)S67/Fsfl֧gjl{ю(΂(TnZ3Ȃ#oMMHIPNu gy@i3n'Jquۓ`sّ (v'y{-i \ɲX6=ږR5~(Wҡ-[GYwCk9&o9S!rP=OqSsj퓞s(92 s꟢K3}N#٭sCt}8/]IOe:UL#W̦'ͯ1aդqh}vy%k ]ڒh67F;H2K30S ̔53k2 ̴kfy s ̴kf5{c sLr6k]{kfߵ5g`& 5353f`fdfzkf뚁yL\30S rt 23=5`f`6sfrl|,*zIWXqWC=fYp=v57;[8=4m+T|dYAݎu_ʵGAډvpW>`;Բ 9)QBc۲Wa++}ksvhR[Pڲk5 +cY[v%5O,h}pmfܬ|)v&4t꛸|$DIeϽKSݯ03V1()xeu9U;'ҽaQ\Os>PZqJ΢іDh{ș[c<=m9R9=BXRF|遺'`sPt{yh#2*zB)b ?k3f](N2_7_% >Qnz\~r밢{R:8H3W %EǚctWhXӐ*>o+</Bq-OϵP#+QVo&wc jfF4 4N3;s7hfiC- h/Fp QJy+:2rLt3q~緜x`q&2l[D5 h9;Hwxhr~1 %hXc|f]_F^%s+<++|zJGf1گ}S=]a4٥ [Ʊ{ED;PTݒe[rf %bB|'>qT p;PXPPwF%~gG 4"qEG #qXĽb%_r u!r3Jw42%V4bT[Л+0ZYkh᷈-Dt%[:(g:yyzljxVB柽&}Q pfB 1jO^jl{OɗPED#'/I Z9vUSRߗ"ub\nRh2v J>?}Os|E9 c Xw;}RC [@J@OI;)ҁ)m}Њ(SPۃ귨Who:"s'b<-sp|MdBΉ+LېXF]aQnf }_/Z3&v1(i(M('I:@o{ԴP+(\UVt8Pl-].) ,~C.gn3sV.gQ)nؙ˹A3ʵr9 n9 P]x<& (Ѧ:KEer{P\'Oq\#hҪkE29I<)Wo rB1N#Xf'̔(7ڑ||j㱇,l{)9=^9yk؁{xdV6gEF<}blt-!9lc.9oyB;Pc|q@9|A'#ƿgkoNP+@ydFٗJFo-V0H;QA6Q~@ǡ˥[ ΋4%UʢȾKU2ݓUuwIGe7m%}ч¬[ %@W-()&DiO_zwɭtd QZsrN%WG \e*@{MrP:S"몗nd(ɳ#W4w:<(s,ް94sX25f<3^nrvȭWrn5nKW LQVآhqM P:'^zͱ<5Zg2)e:ˢ{OzeB5|8WZz~$y-I{I 8?w3]Xk^:Zؾ4%sآm9RDnMỵPߐG4='7hQGYGqyؙGA3ʵ( ("|%kAcO([eD7VzKH:EԓEx1<:ӈ\_ egjCβPiDKin/t5VZ>)/;戫̛9~-?( ?@Ï;N?; ~|kZ~)>V(1rE<v\ZmjȢ1)-7(Zjg6O _#e|fVi^P҉^Й5+P+ؕj#*yjrcjYmncWVI6oedj|qse\YZYm\YmGWVjf^vlj;j;j{3; ڞ4jwm5O`ѩjtKʟǧ9֘~}<'^75νR.W((Z%hqN(~ y{xf/*^ٖZ䷧t*9~z>Fvͻ%9e-yن P/(=pgXۉn_Dws1<^δ6'4X77H>ףwv@#JW{=J(+VZQ*׈jDO3Jwi%JW3ϖ3UT399Oj#gqL:%gY̙(9EkLTFJr&n3qeQ;9hemܳt'Y Z?X2 (ͣV6`?f΃3 l|$kPק&l9>-( @ç:N;} >ukԅZ>u54,r dHWoY(_JO{RZ΋ ΋4" H9/An^${ԯQ2M+/`E䌼2##/ilE<ͼJ^*״g^DF^ijޙqk*yˋrOG^ĭQ"μg3/j]"μg3/vm̋x֔y O9W2T\Z%k(q-VP#72 ڳ[(; V/`{TIRx۩܊፮@ZqrвtJiYF }x]{n_t\f'Ǿjfˑ!5䝋'~*s7m-qJmeϧb{Ue}pxׯkvREOrSt\wP/EeqdwWt+(V<EYQ$S񠅹G[ ;>`'߰}YON tϻYdV=xR\-~ђW}1uc' Jc^\9_rѭM7k>mmKU(6 ^qho+nOdk#ꮮ5GOC۵W̽٪5+};3n?{@P>I#pђw(r i$MGZ,9wYvysPʮGD& 2v)^_=|~wEIZ7,N$-L]d[9[Qʩtv3Fi;Șqjse03^AbE뜮UW<_c$9ʧ%#{H< 7+u]Q5jܬgfnN!Ib<6vndMp{]9ЂMuZ"i]JDB7/Ѝ2^c& F5GҌ !Jr=b4gRXyN( /D^V%+yId].ݹwhH8 r:t(7CrBv_7wRX՜\ռAkUsQ 4V5b窦S\ռAsUskj.Z\PkUs֪BUMj@L5HKya>GQīb#YR,ZkɪGq5x}$, ukc_I^kk}%y3ótF=4vdDŽt6˫xG93od:UJ?%0B6)/a_3|rۜJNX% l\ qՑV(n'>N3(m䡆UpE%J.* :9 OzkCI-ɢ@QꥫN=' {hnYD=Z1RDJD+V&R^2Z5R病]ҸZF;pĉP+Nd By1f9涵-4UjGig$eq"-_-$=$yR$4T,{"G$\6X_(_x2`z _x~c>~]|h_}DUz1;EKKYD%YJ|BcfB.r9Nm+OO^+K>^cIn '1yWՊ[9nBϲڥ9#INgc,7j'Z[a]ZݓTk=IY.$5[y$xd;pЈDiKDz %?ré0GP2;Qbmjݏfx**KhŒiKV\Zz);d/72mv*=h aĘy8ĀHK2.w !wh{h(vh;G[9ޠsHh7f<IORA @cyAEZZϊ *X+$/;s\QZŔmŠT Ŭ E8gW jO3U2͵ h6Wgx%ٖW K=Y͸ԫwEKGxן T(>}Dkr[3t:v1.l~颥",Enɥ=T3xOV4D ۋ3> stream x}]%m{vT ` N 9H2Aa nQK\KZg9kSEQ$%m_~ݏ>׿|MG_Ϗǿ޾[8_K9_G#įG+◿[\_{?Z–־EnOњz_|GIǫ؁H[ | .o"rdzިg|qMڿ{H/"NoRrzh'57}9 HoncSrzިMڿ9;6/GzvX#ЋF4됣5Hh'h'ݓ'/Gzv_xڗ#ЋF4ko!oG0Nw."Q#/-0H }t֗Iˑ^Ez/GzvuQr뢁i81kN:NZN_x4Nlˑ^EzwRԿ^7 * Zzڳ>@=֡;:}xWPoUT}CAهW2uh Z>@MԡC:}^h0]ϯlXdm Wl?nL>c˜ycFGYE>Hl2=d/LuyiKGj}^HJF\ղ2=/>^DW@2}֭5E'#ZX{a(-^Xt{a]^XW{a@f^X:{2if^X{a\&^X{лy-W[84~KG6q˿_C) /=X0kTk#:Jrڒ67Z;"B?ڈ%''nFBRSzChހn?Oߖ#\MTMLݭ7Q >-=kbmrh}5hQ,9%D' '2Fq.@Uvأڌ =أ# 1P-F3A],D>D3+g=:m;:@3z;uq0O`4 kڴc_/-8aR0}9)NaNZ.PN((3y61Zs5R'*?''TL?#ڜ+֋*Ar>̓G'Xk3!ׇ1"G6Łjn -[x4.$pYf!$َmGFa^vdOb"e_yC>o4xɣdrlL[F&+?ٗK6s>V*i= -rj)jSݰ?&azʑoH:|VQEj:^A~Yg 9pFɨRB (՛4bAYF0ia |D.SO=zmX(n&?MfctCB6E- tۀfJSii񗁑e?N_Ge}͜/4V ;7,DX3S0=zstq w݂Xo P2TU^s-{p>^*%{w~D*X7h/u:i<")Ēǧ a10PuJ0ꝿj}?~5-g;sA+̛jyC ̲Y}2ȼKL!D᥺F}cIX.{1lK.v0~7FA NW߃|"v:ȱcti7>].>=xif_hL<4obYQf,ɐJ>{f/sHjf+Jy"J"!E*ыyiFJA'&:Bb>jh薾w' &=z֡c;݅5Rx9yI"k%Jʚ7%|)N⾢l)ERZ.|pUOǾ]~|pWԭ7~,mr\_V(WWV6t7"v~AԢٚG̡1.7#}WO'U|S$ _t@:'ݡ^Bw,~mNuP: PG3"-yYڴ{=?aگ6Zش7llӮ 4v]ٴohe%.l[ش7iola¦]۴-f :iE;`ʦ%MftiʦM{cM{# "UG +B'WL#d8Ie37-"_L~sDldbcC J$`!(ZA.dWyE|,I<,*I,%*ԤH8a*߅P 1%:1D1EMyLlS2n5A8ydVal44y;p,N>v7UN9Txu*i\W^+L,̠GןvOl;3٪\Uiy:Pi-X2Fg$ےVZ*KKj~MZimJ(5:\=wy>[33QPS^E -@2 K1E jyg\]P|6BElaV\YE^&ѵjiwSdm?M&eKH4Oc`G鞣AY!dj\h!e4WQIv{LeHnQ1be;UګtyݒZ7I[6a6ԾK21[OG8xqv{vM-7.۵26tz>&;ߦc:|L'jpvfrd:j>F&pr$_dh)P6`}EPrMF%\H=h.;"|D18nѹB:9S=]' }Tȃݿiؚ5GMzpQt,tq3-o.bGKn6eM?*˝I)aoYO7u(PGAy^:rQQҳKz@tjN~FYv|8 kJ޾ӥqP/?<6>nmPV[-]<iIi==HZl}b'v7e .c](2D}q(wqY_PeT|tԁRXSNZ* ڿsUb%ݾ'*L_ް^i?"-]r|!4>nN|-t|b5)^^=p 4dYrDcxYuBKȺII7El|/njGi6@YǛVQ]#E]X&ilQRL7Dؠ]/28CUt.c8Uv_@1 2Rܰ_$7#As1?f@{yn4Oq/!z.R&]gPfHyp`͉9fiG+Kk]i!ycj|馥-Y.Wu^bޯ]եP{')zRZPhɓC9ۦ9-ګZկs=% J2ZL;˗h{Au_+Q 9'y\&J1ߊrɁқOCρ)}/teS7uw%?HT˸zq*g"م+ݕ&Lip_/l%7/$^.V˒QXGO|Zk赮~.|]>Y_ٳ|<<:=xz|>Qʾ r\e 4N:}rqE@ⒾN&e1|ֲ9!/(7g{v(5IXSuG:[N}*@.חF]ݜ,t%omReBI'$={HAқ~>K?_ ?Z4"ݏv+?ڠ\bMh7rW~hˏ6hW~hGhvGʏ6ЕMѕMTWv?ˏ&O>ZN± mR Z8ȱJrE,TqY[Wu+z鱤]ΦXҮ[#Pm.S{Cy?`&B0s784"JoWKRW.N\A\jQlբخopuL!s.ΐ9tq̕8Chg8CJ^!s3dGŗ;!؞؄2$n.zXN)A_2E: N:xq#@_)O]nJt菎t<ܖH+!$t+!FtѼ"c4WUoٛ#E5HǨqtyE:tOHEWC@t<\E:*! "]E:\\ѣ+1Zt"=ҡ#U{x{WCh+!P%HWC'2!xuE:ĚmQ~E:6" X`mα]?8z[@9aUdvLHG$2peo96RNT}BK}-zz8P)ҮVA;=TQi'}{DyG9@E#yU l{[O 5RA8 IEۋznZvmtp(mmYo *|b)rEڜhgzIY\ߤdO? ';a: ` @ۗQlnpq:U)aBj=JC.ݛP:FWLG,Y12[#T;; 4 NSE>'%'5^]NQ=|noTMN8ю7eɹc8wĹo K#:wsVY7y=ydtOS?ƺ2Pݻ%*h3[PCE|x%[FF^7-|cߨ mz)kYoTɵhWZIfD,`_+jd7%8Yp @o{62v@u !%ӝyi(tYOVϒt#D+0z@ΉOvklݾh)G6ѳJOi# C TFهkXu ob- GINGl -Kپ'>-R8:|2Z[9-el:^mCr5z<v `KNmARnMv.FC0}߁dCvD30*9co㏨Q^ΈO(q>I6W>AA pv(np|PE_lrtzIA`"z,Pu7$۝zd=%|Űor}uR>q(Q:޴̜̕/MB,$8zśhXIoRuxWipeoxӨwoR&Uo7 Ycy" MhRDO7Ov Mrڜ7hoo}(`ywb " qmOuk=Ak7Q60B{LhBN8|nD#y5eez4 ~V]9yuv5] Rl~8i嬭6b{%kjyĬ`[UVV*V*֬*UYU\YU܅UЅU*UhVndfU9taUI^U5٪rªrªrªʪ->pbvC1Zg9_^9c˳5XMXm1C%n_u(hNglKu"iwva&ʴ\5Qs=KMW mp'ag͍e//"0;K6\l6vVo6Ъo%e=ە+j˓'}O5wbz3(+k(:ؾr.^RWJ'N@iP+DF&Ag97e/i%/L_%?{asIS{W~d_XY/?$ao)X~k%[?(f7|= endstream endobj 1832 0 obj 10868 endobj 1943 0 obj <> stream x}[e9r{_~*@ô066i(V%ʇkK B>O_?>sϟ%?o>_^8~>|?_rB᳍* BkOS}}?u7k| ??)Usm+~>G(UtVWߪ W Eb~.$T ,KЫJҊ*:ot],KЫ΢!_^Eotu]T~zQ)k~ YtoM*zW,r߫Df72jP*vWx_E:$c ^UFhxմ8;ot],KЫ ~1iŠ7SzXӯgW]SO~S?`~5y䇞u%.Zd.ZCZ} E.9?@V$.I1ң](XuB5g f(ghuɳuט/m.m[_5I>,;aeQ}X~}P_~}PAw~#xlZE?eh_8/R__\9he|U/_LU 0twhFkD`YDhTej.юeۭУb^sRM_~+~}=p/҅yV뻍Ez~85,mB yۨv Ԡ,"!7\愽- QcIZ@hnhZ6\()lL#F:ͣY9D=#b@+ !p $@עMz˩) T(q ėZ Ă!X}EC=h@@tlxNRqPl5-Hc ׄh#bBy;(*%9 "nDs~E4?HzQ`mQ%n=iu,֜_reS=-0F9|&s-l&@WB,ÃE==-dEAk^4תu.)x-[}eM5E4CȲ}x5q){",7v()5`(0w{*[ t&!Mؽ@Pp/%q,zEMP/٘AY{Q$FW Ek/$+ {epnk౟Ka.67r rD#*t f0?|U-=67:՝izjўjni~93\<\4.Qt1obzQ\d,kF yzo7bH8e 'S29u9 'C'_ XԗX蚳ɤk?!ځWT&G* x1Y҃#y-΅`Hh 4iAbp0 T6D(88Sk%hv!Uhr(![ЀS΢hTh4c')_•).NEQ'Nk}&.y삶QOWsr2c.bI#T)"EŒf%eP0/'rS+څ v_#*)j :YI۽=,)٥M_Kh5gp0m?Α2ν$&:Ӯyv0˰ B:D7J3 BE&;kJ,#P* 9RTaBv9 {DAƄ(Aƈ@=;p2R 8h[jze7fT$Fxi^?Y VoRx) +Œ]dVXq1̗hT M[ $BLN5cDsj9rjE#M*ځ#hkxbXԊhނD Tf3ܔM}; <+pjx'X{HZ4B1d#)nƳY6FD) atȻNLuv#sHU R!Ji=tS-B(R8B .a*C>%&dP];SwPRckzG"߹h+")>ќ:ҌU&1b+$Yٲ5d?3j@!%EhEg@ًn IhA#/4ۋe/E-/z'/F^*KiZ7ZiH*Ё*P]e]TVL#]mMkA-,<="]-*y4h_C>*E{|-5 EEdhdJdM*>=Hd"`#nʟ6'SbT:d$ɅT3tq~NVlIjz3P5WǴb ֊97HʍqhyR.KSDdU7@Kàyl*:m89N!0iPZ_d;ǨvCVРE6jPW[ Z%dP0f_ pKPe#hO#F'(4 hI>hČ=cʹe&~ڃ3F8{H8E84UQxqַ=LfOɤ/m[@OS%j$²@Gi%!#!;MŚǍRgM! J1=1]m!k AY9c6uc_ s%7hYQ7c_Fy>ɾ lg#'A0mHc?OSNxL?1z= Ce8x v#`?X z;Lzmnm+fSxcNv9QIqU/ZD5A˳bYΧzF|CSid$;.-5/=jʑ[sKK6֝hKyqE%L"n z<4PW.!hN9-QGc!e5x0 uE YWE9TӃN8@ќy̦s4~nLNYnZfϙisqcp4f 2$i'!NCXye5fHZcM,1:9u{$I[`9l:a-bR$ops'71, J.GԬuZ+hEsqApk EqDixԜFnvJ ^Eܬ{쵾`A$c)FIҗbiUByItK.*,n/JzEFЦ{ 1`EOhz4|skF]cuy"+nS94B]V46ѣdi䭴`s[_ɇ5J[@WϔBq\ib8%3;pwRm+ضcKi5tA~+92\7tp%|CW \7tr%ɕ+yaGW\7vr%ɕ+ysa ܤ}{%j$]V)\Wt]kQuڂwr]'k %A8s:E? A.!4jMΩ]a){c5%?Ǿ }]D\(_Q.W='W\tqG:/Wtuƪ1n-ZKA6%Yv"VVg('s-nsQIޏv>P:Yh3DcQͿD"f$H }M]4C2U%c{d#N (9&e6/w0 t"*O[R(CVr*.U^N ݂yͦJ{$'Ut9ɮ`]u_aLk8uiS5.t fh! tbzTM-nqQ\aބ9_xFa5'QJXm%6ъ`('`͒rLC6xw .6ڝ~]Dؐ.)Xv"UWҪYδȥ E--7hѧs GW9hќ)4 uxR()Tm{N`x ͅm :) #Z=8]'nNnGyZ2=6x5=ʼ+cZZTYgx! 7ɚ(m]C4Q2F9MOԮ?R ab(aRA)Ԑ*S5ﯹٓn8 z% 9R =%hV3`HѕB0hV3F\&:AH hONȘlV ''[D](⁂@?엓٣ˉVJ%]NM PN(hÕ ۥB2̩ r(Ue\NVk.0-@0oӧ-mq!<ѻ89FI/8wini!CAjv0BOi*ѿ =zJ;TIPJ|H;lC쑄1zH;XegABiūCL;XiG3`Hf͒vPsH;,v0QI;(v0%93Ce3`IL;XspL%{H;(8,fjwzH;X=ʤv8q٣ׇxNivPmnimiEI;%%9zH;|jwjUv0BcsH;X#7 =LNJ;I;JY!CF !ztH;X4ϴōvdy,٘i]I;əvP!CJf*SAnGy>џiv<_3pԸriMK̴BOi vP!=6%j>zH;Zv%P $.E`ٮ7y%7c+KTY3pS IjzŲZ8\(0F\p 3xW I.~rnӒ\P\P\P\P\P!CraBO =$zH.,\0iNR ;I GޫGebHWhf_;mznG;Jg`ln>?Zu?^v-KYv:xF.ǩDaScY4Wt|>CS@9]p>ũ>6h̎Z]Ey#*$hieco(8D=~خ7=Ioken 'PˢQjC G=ɥc|9\ep&+JY,St ܡbHrk1M*Ryhh$o,ʙsq ]Xe23wX排#coɭ[z %φ2 QQ?m9rj)LCojn%\ED|]bt!QzAk^\<\f"]1f%G[.I>5Z4|dw oe>d>E ֈ1xH]^=4{ Xn0 -ʡU͛XuYl JnqG +Qn?V(ܐW qw4ΎwGSTh*h*h.h.h*h*h*h.h4i p49>ѬQXC4G1ǨylnH3Qq|(Z@c75 xAckzK9lyDL}iE"I<\W~H% 7ʂ lD)̱okfwܓ:bJNњ]upmFj3ewW0wYɋ5L}9篑td!W(v0W K/n0EA۟afUM$`Ye-2YeUՐ.u6duD БȝT &QǍ3&ިJVpMB1"QCAn1JFw凹V) ~$Rti Z ccmk~l .zᜓ+*:KUCORZ03ZtskD9; <:xt.\)йSF=:z t.\)y@E t(=!LTD`[DZ=g1Fފ{|@;|&ENdrbG`o?6qV4I8!P W0Ҫ7,ëq{U3d䀂]6O[nzKk nw<g GfUoFmɷbU[HS\A۔k"Mz;ruJ8Ψ<_wl&'{K*ƭXV4([T$yӒiV"5 .3(c\aP{_C !j#"1(>4|zv`\jIB?vjeG捱ٍ4FZ7>pj:cŢSn2'axgR;M;Jh5Ƒt-Aa#JI,s{#ͳƏfY2}#ަ%f-KCِڹi!iYv-,PƩݎZg؝-n$mi G{9jPқ;nq I0zGZQk~ODzᯜRwHYXH!tYҷ[E O cBBPE'c? Wk'Er1n{iB*@R(%ɮ@ AdWn]xwEӋ4xbQrCbo|(Cw::JNZ@/.jLNdv > ?bTՌ#Tei[>3pWb@=MszCߋwsAi'.kEC.Sa@/X ɳ\:'rP ϟm@2Q4sY`PڧDǂ\Pf)dJk ?~-]ư޶M OsQ8yN޶E'[vǮ] YDiGM.$Û8pcL}9 =g &7Xp'e؟F _Kp4miGliL h8>t-RJBB*HJϾk/z_~OWkn]^RmHdm&$Oid2\ÑɔyQI\dIoESତ\t8pzgΎ83v-izgFϪ]2sŬ!4Qwu?v}zlp[)_(dHU3]Ŏ-v؀vI;Gh5{Gڳd=vNd7a'J9$#xڽESMJM 1I3hk]- VI6hX{-'yaG*`R%oY3hve5y**I(+ e@e mOܨ8lWkGN6$I e.Fɮ#p<ޓZ^ͥCH~x- x] Q BB 荰۹^T)ު};3|aLvTb$N60&go L`#zwdE KWUUUGDVheQ=vU5r.]dn\ 2GDzӃvuZ:c=< hA$٬vG ;MKƌ$%Y/S 'ͥ\P 0:׶펶bNvG7cH*#yeCdkPރ~̤(x1|Ө[4cJloUGXʀDģ-rqAxٻl+F4iPzm% ni`Sq"(ж1?R7) G庇=o+/#-r$n G'݇:Oqˑ]t衭=`Ecd3k֪Z5f˪=_*oѬ9U H-|pI `xLF 6U%( v&3h{WTYzmb5Ě7۷#4OcZ4_+%i:nƍXJǗ݂s#wfGr2"1b[yjf' ٘ݎ+6ݶ"W)N#V䝩/H ![+Zȍ6XO}?~=Q\h荐GINSl$2l!YyE1#ڟ<Ut6ӒM\brz{$7XH%NVq$"a-Ǯ D9oiyBn(TCԎ+ptFYB+ οt2qXhE`hE|݊0+!|6{q7lӇ{|axP7uM76m?׿<ΫͲ a{Qѝh!@ G_W"> stream x]]e7r}_qp- v{B0$3ā>lLcl]GR}To[x}zz?oo-|/~OT{k-?Fo=ߟMǟ>F<~ #{{q)}ےLa@;?x!uhAh{/rӊ+B5,1J&!hב a%5 BبK  dj@KaPfFR m(+H9RB;BW2B+@/j\-/e4ZE(ZWh{ЅEJy\9ta#:~w PFIɻxBѼB(9 Zb,1grW~B%hG(қ3BJ)zK6;/cǍ4s%za׋-5wA^tDC'QzQ )B'9f#zhMB+ rW}[ԫ5= \ƍ1UKPEC&,kP{1tكlf%2HWА˰ŸłcڞԂ2C:gFG[nkk7VbֈЌНY+ ;bL 8tmj:Z9nfzs]Nɋ U@ Fds@/PA."筸*z\f/ ~F((N;.qLjob$9bɮ7>~wá'6@YoxtNl|uRUQ JA(!R(c[F rX?eNVBD5!s,gB[7y4)9E?ɡ;fTyp~g<n ڴwC{+D5׎ SR>tDlSqĚ16x$1έ ySӳ_Qc3oN|* p X)ř V9.nCPn !Vdxřc<eD@H/k*+\CHaVAwm4}O7>s DB1b̚bD^徣`JC>Sv6*En4hІN>NsX\wҺ jRʈNGS@ ؄qY,o4vP ) Bl%KByjl?@@}@;.cvmZ7^@Ȯ+Bщ9-('ճn9 L3- q@ո\35[7z컦GFSϛ8cf&"yhcg%H^<"DWK ).OyH: ϩ>@FqQ@Q YQ, \ƼK%:FQ_SRYB8?-!1e5jZX`d*de91cWb=[۽|i] 9VH` Cn?4wR'n +G\)s (R1o( I0"M0#JȐV,I+H3b5 =cx/T2^]F!/rΈyt.(+zBza:*ú5&01S)WL0MAjj,bbq0#A[:ACW ܲR۹0 Z~W6i=hg-4?Ǻo9 ;˫n+txYc*>*!fjyC겤(M%g޺)~NsVZ [uX-ЄRau1VtoC-)]b6w7E~ 0+fR&zt8c'"@f y)y]PGXC4c˺y-kq%⒪^GeS@/tb( 3 SR8)z*"(?ZōA3qy492y)yL5gL5)՜P(-.uM 4^xtg":iHid9_+٧X]ܴ04<(9z\׍=aM@^Pź C⍄fX bFknp:!EuRL^y#r]Qg,mgnQj513nM(dx9ɥF:ͤdgXzxצ2VmlA }/$4jc"(zkz(@fWXH^=T3FTr)p*-ޔ!J|XIqJVRawau ޶Q_ҿ( sZ(PtEXcE[>ϡ.7Jg7A|!4jU-{ak(Sj'YlثH(+eX{qϙ9; F(^C0vЊP BEg{93Po7go\8Բ,S~i~8~w#t~/Ey2ٝ Hn51s㜖kLW .Џs^\/&G9¨J&̴@wb]e&4Qz#WxD_T_6uGM(7JPGT%jѭ Z|7G}җXO03קeh\@96J.&ﻲѹ`F2ε,K3纱yJ}m<7SԦXL&^IЎZ]q QwRޛr%F׾qIqI]+нgC- jI /11ư¨E#XS!Ie,01}g<cK݌QB琪J=mKI MrsF CАB3xO;bl6W9dZ9gD?pԬ sYLX8‰$i,CXcW'Z^8Ij MK|ШX[SLp'z:!l`4i3P^j~V⪳l\GG? #;ۍΑtvJY;׮۸m;˳xjlݺú2h3ףs,]mGU6ih:qKOr!Nռ9挂^h>RJ0ցL{XUVڃ5V)>R"v-2&Nv:7wB@B;BhN=+9FLG'@>o%-i>X%>}dאNac[sߋR툟hޞvㄫxPR_E>g}Bjor/~5;2bi .F{qF5r{%,(  $@tJRgǔ7;O Ͼs%7J2`Y.gx[ׯp%,Pv:CwyFQ5D# q_< yI3NKK xmEIqdzI9 dSAh[QKX]K6BYp _In >.oC/F~a^V89`9NdLq6XqsZvkgv׾*y! ZU[b][ x.m#=˥,{x?Ųʩmla7e˛ivDc K)%=%# j4Z4eF~7&$;Y4uXS\BeqiGzKp';IV7?DC y{:q'x#72.J). )WUx$1&%]JJ{Dy PZ@N r[g'ijEi1G4äܗ\e:B ,/Y``LY >${gzykGb JғOñtFDOO_M h)B;9jNRz2 k'o| ?i=ZXODIhBiH%+҂EiIQ&e@ۼّXUr%ԚHѡǟVKM#n|j"}FOG̃JB]drpUJ=;J>yᏙ)==;N7*$5}6w5.PQZGӛ6{I;簓#g}9}{696c${Hx05Q6g{%cN5  4v =izcUC%^ D!zv8@8c~DqH?'mOɗG|绷Q͓ n?C?`sc+2Qt71^̈́ 䟇b\QdHŸT^K„m="̶pz`,ۋUKF-p\ _Ktbi9J;*usBBF =Bs)*{m7o>y=_,E׃ulV,qZk9v@uMJ{M\ϿtsH߾RNl^wWYX&¨Y=.~S^#?rO{cO\/ui)VCX>)g>)ҥV?C[MGփv*=I^}Ҩ(8rVTpaҤ#xކ.;M˦!Jks0'; ĜabC*/ %_@jw@ltgzIEbhWNTb'#oG? r"+MKVY+zLv'fIw:f:p, O*\APݺGFX륇Jv$fFxYp듥 KNX* 9O(8̬֛rRmwԸg8x|BnαGNsY*NJ7mf QT]fw$E"ry[r)zĸy uƛ?ޚ7rV4F={FSCfzO)/P*Vɛm8󎈹:0I72ϩmd wR lv)G fHk(S8dEk:@Ӵy/na0Do7iU(Y :g*߶k][@7.@Lfbx ʪ+7rX_ѹ4idg@fP, _J-e$s<<>LyG(}+I\3UUez gT:IM֣ƜM(=j6uGD"(Ws f>Ƣ"EjFj%uxPEL1Ebs-ƹu^"-!yn ܠf^62eDjq6+N>72f]Gn"}oVZE^*3geͳJ Ziښ6juz=NWu? A^#Peڮr6]뼀H )@19-^EL;Cb{ vjR| ^"ɝ'uf62yuy.R+m`?@)@ ܾ5/Zjs .Q3.+u|芺7o]WBЄ"9v2um C[ym bUwc6u8S+> lEq١A4ri/wR:6"&=76d[39|H e^k[F^q;^lO*_c5h Tv+6qWO~QJ:Jm3[0;;Zf֧lAzWmGЦ|xy-`,cXB\iɮ>~ ;j>#p,EY=.^B%9r:REm;={-59/Ն1WKBo_ `A&DP@b:@`tNbKsB nMPP+y=k%7Č^K+XSLn\]<X7:E bàً*^0z\b2' [J$xc1X&W/RTZ^%@/MQVۦG-ѕ|Y)z2})LUeFnt+xi_tm+cAlqңO 䞆#E&pIUڤ8%pT>gŊ\+QPR <*Vzރۛ+ KbNH2dsX%K߭/xsx+9wŗ$O5eMu[[yYW_*?Վk;bnQZKOwӡ֞!p"<{oE 4._UAn׻p wS'YHP]@x ℰ!p f.C+:6w a5qKəc?e0ipB(ԫ@CVմkNSQG(Z1.bLzF벢Qr(]Bx4Lq5*&:j3쓷ҞBitY?Ͽ>c~ְѫS`cgo1⯟/tTlJ?o}J endstream endobj 2019 0 obj 7140 endobj 2051 0 obj 17848 endobj 2050 0 obj << /Length 2051 0 R /Length1 25696 /Filter /FlateDecode >> stream x|y|U97w_s}M, 0E(Jō*"R(jZAROj6ڦoKby3|0̙33<JђH V̻B˛PӂkV꽨DW/Y1~DB1fk0+r[xJ~1B/GChyw:|m|&aq˯Z0o@l!3 ߽buW+hprފER׿bW_jbQ\kW{]Z%!3_&D(?-r^? J2"W(UjVlg`(&HT:HںaM-ɈQƴ7~BD2iEǟ2E~Fd7Q .aYGn q y>.I_ [F ]H7[1C DK_Bxmm8tL od8=kɳt8xJ¯wa̻FG(=IC7u_gaaS|̋@~rb,Ւk7*r7$s|QDf/+fs{3+D=N]x ]IJz EzFԉv6ykl%ۅ[h;[qlƑH_JpI@g2Y#$r|:}]/酂]LWWq.dwj[,'ŷ'9MtKX+-Vnff2[$5кT';..`-%Pua>ZлJIJukYJ D%퀔A sdl%y&q+8♶I$l$I Sg63PKAGXapp %O'FHtǔ1mimC3 Ϛscڪ@"Ų] b/$"J ̛#ox3k61X"D)tmyA\ H z"^V2vp+~d JD@xhoRQGChL۬t(&DCj!8aD%w.YyikT@بn=i >cFؙ ':C\!"F"# 1nieD~T<]Vk3TJȵdaÉF=@Ko=[iQI>mlmNm^\+QRt8▨+> ٵdSa.BqR >}!CB44.Lk׽0J:zI' ohxƶF˧SD:6JtjU2\?ku]Г?җgǞ<*!D`gCW#(/\!֜_m)(u-AœJ)mA/U*~ <1tp./%3N{_w)*M(`tKZ9}vnwcmJT\HYm!\+/.)6AxZ (^h[ӘKU''Mfz )01IS[9!V29OPLRI!{:UMVyZ+Z*!O'qT:uuNtz 4 &@ñ4-2mF|{ӆj+Wmv/6IfyK*X4V [-6RlY+611 UJ̺sڜU6?Hb4 #cz) ndY>~'|W>JDOVW)\=١ >\s7=HDB)jdTFc/v2e7%"%ȸֈX;* '\&5۝%DoUPmws$\nLuJhIf-aaS@F*vjLVa$-^7 ~9rP J}Pӄ ŧ3WQ2y/R@fs&/*(1%#7^X₽ s/;+8,tE,^%cЃҿ:Tnz1WoFI.*@ cQT̍65fsKl5MG׏:`9[=@t5߿l=ÎsPSD^):N{B]"ZNu1Xz*z(fZmM|t!Ё9sDW`)>l٘x6wFYcS|/xA vrMa-uUhmN*+IƎjm!^]%ΆJ'FJfl&,ǂ~;%.m|giCL Y  1 .cb$GRS gG (N&ɷmUA]C-`TPbR+J5mg$eV/*_ ^Q)ӧ52b-_+TU6ѢUԧ5jÒ($VщA Q#ĩ;D Q*V9~Q#-l e7z$pD`=h֪dI+&F%^+!'P@$J/ zHFΡ9Δ%0Yv8^5NRf^j0 MLDC,xBV"Z,Ds/Y"؊Kf._1c]Ο2e|<ק[$I`+,b`Vd[JOD?ѓh% `ILuy2+NxV6w+-*7Dk,/̖wkI%fM:46&m]i^f\VмSSnQ즻eݚnazX}M_eiga**n{ -L5yP ՍAXWG?VZ_?񷳄C!Hk!0H2%ǡ;LVq|_n5xr]=' qd7RƬ!-+MHbA?Mhљxx<;sVMŐ<0=یo ! r6-IDzݚvolg3DYkZOîk|3iQF(,{ܕV"H )I &q$ƭìӅ5mnᐠJŇ3A),ZQ/**TGqOM<8zohAex-Ől_pX'Q5`yqAS,x8TPZ)j-SpPluD[gXg9 *.OgDžggk|p)wL< MN lg!MW&•O0i=A'Irm"_"HHE\ѭZoꞂ=T練ٗ)ٿcqQ*MUC 뵂vzSs *tqq,C*X2N(@7ϋ7}ҭyw|YϘD =櫋͢aZybV-"8y1~WPkUc`%)d u:eeBamrZXmV˭!\ _0by%C`.1.O 8LY[n^oC5)CY%jÕWm}շ,^r-K7dE'錥޸]p 7fϾl[6Ȳ'~O.~Ѭ@( D%ZI¨ݭuU(5wffzW{Vֹ֩TUۜ~| SP^} @Fu…&Y̙}P3=_Puk/~y7 i3\]r :hNëc7d%5 s,tiulHew"sq.Pu\yUCy1HL.]4/]6~1/rlVEOWD=hz#]Bw0PX+͆k}F(҉.`SHl+;قդ{uo&=q[V6]Ye䮎T)Ø KlAV'xka!F(zxi#~ U }}}>;)f.=IL48.烚)Nx=s3یhm񋉩Lk׼4}ިlj|d,%|@Ƌ/2|I'` 0R"2预S]`$,`3WȮH\!&CԹŅMAM!TTD}T2ScN=M\re(ӟ/ uCsc4.k%FVxowmo P@`R:mW͗̚]y՜u̼~n5o%B'h˺o<{i v eZY%6.33n2i|!;;;۶̶,{CvmK#/ڎ?X*lrqvTR_8R{Ÿy85jmh < ʠU ULD5U͜w r]rɘd0rK]J1G9ea줄Q2qi2BU: WOg6NP_0YkW"w<^_Oڧ;v`NtWi\`V_4xOAPDI o3 v+DEӨA';#K/)&XxߤTjdO>騎F@,Ulo!NXb-0 90, ,\,śj~[^iP6QXF69VSQ6Z[)|E+$ngth ~&fHWl}BMX@5Sdf1nSqӱfáT֕]g6#Cp *5Zp-yfG/=Gu@<1U\Qk7A|VA m y9O7Prw=\-_ŷhu_hz啧aZ:Nr *>zVK'P: wfyɜpMu@뵩z`4<[1[\X&S> zRZ"icD6??1#t,4e`NF/`GK/>Crdsk}x}gd*fWYz`] GJ\~tԌ5*Ih=f91i~awaeeuי66om{keYn]nSNw ܭHXG4+m< a(˃acx)l8Ӈ#)Ť=.q|_əVf%xQp,+^Uj5 .Kgp$L%]<\߹h+W?3o+T5|fƧl좹:ѻUVb|u&0XOϙ1[1VsH դ!fUޞh*G=!(j u\hP,6i8#!3، Im6gӹкйڲmҘKޓI"*z3jp,JݾJ*@+%aXmJ;̠OIJ ;T"o<%UjF z+0oSӵSVG膉[n\a6I7N؟%lEBD%=Kpy?{/OI/q i!ܨÂ_ FW%x⭚RuA2В@* f\ 8$by㐺?V*x,JmR f'3͉tJ:6dMwV[ G% 78 0]<S,00#e`Spx"úȦB'A:J!ƔCTw獽Rge2EM$R fgZ^faU[ SAnT5jN!ń":ՄZ Iz;1gD ȁ!G3b@& O*SSat-jv Âm,ӶDj31o4]P4o6ppk%+\"omlhM~^n}GZu\  S[g`Oc<֏LKHeV-퉨#Qq=.!t9Yí4̳c|6VeCؖ'yx?0PF0ݓUɀ?W biW)0rN=t-)0h=< J* DbY>5[ CLzi2x6.$@՘,K_j:M2 HV-"bJ 1~ex'u.el21@}NKLCz(3%;mBe=?[g/?Gk~A99Sְf?{q/<w07a9=b2^>mƆqoM{ UWvf"QFN6p}Gp}jDCd f58:pjNCX ?w 2?t#Q Y$&(\:/w@:8 ~e.ן]$lY0}u{\-Ua[N< (tfΖ~ j,cO 0F M6H! Ը&O\ؒpchFjDA" O.0A{g?z3$T aiv0;DqDU2/xicn|:?JGC,Y1 n;xw\ve#A,{9R > i izM|)QVFy8@)RzJ pYD ~ 6 Xډs'wsBNŮ*̞Ee[^@ϡ(p8BA;HH)jzYd fS.!J.%~\FcFKQa-wrOҬ;86~j϶ 6 ?Ϗ1nZ:[uI/cG'/mlgBq?V|:iFW%jgjGX4xqt;p_ rC35]v11]; f&_AJ!7+LMNjeTgԞm/rߖnfI{7Enwyot3|:/~ $CK-jI2/cL赙mGwh G׬cqq.0p}7`_c0 7%'0_ h1.@)dA)PX0-&PXaD]_<ϖB&m5+[^1עY]z=^}1 bZ؝HX$93x KxD] '  i@K Qvy Z) `Tɐw8$E!w^.h(9 Yͥ%0ZU:>ql]Jaw3mEF A.=õux,5GL{xSS@+$BC~bBi!P֠HoUA.7,MLd O$ d#mH0$\5S6}~i'c ##Wwm6Mvٲtq GĠ* b\P7Mw0=860eo#^{c=“> zO_P{Q} X 0a@0J zNU pi$ } /w$$w$(6^xlgtC8Y ǜF̩N2.ƯQc.A 9AoE1( }p'pT{2K8Vs4vt~F2űDyLM"gAAu[hcs10=ILjb^bGܦ۟߷} -\'%Ok!V8 Q?׉={G}i.U}0u} SׁQF &l<0 yfG؁ZJzpd:1}YI93>` x3 ՛6% :8/.[+r̚}tsª+RF&^lDQ>?ܿUb\R?"T]$:ig'R϶.ev g@~͐zղ#ïkߏX{n5c<7nTnL6a7Wn/<\p&;>| =qc1n @/ V7+Q\(ncy (C h0 Ǥ gB-`GÁ]wB'/T0;^yZ#P21N2i'`>F{}]dKfH| knDCErׂ7.G%|}Yuͫ|;FÂc[{R|~M]&dʥ..dm1ng:_/DmmUZAV܊ e HyQt4eZ֍(0t`~dqEԍkӣ {u$ytCcR+_C8)1'ی*ws!檒o-]cYHbܛ~ke$ w]4 pDŽ܅>:K%34n2AV;pi^-#dF0KWbUj}ݵd>A&er.ERT2e6 !9SKspavP j% 9Xj΍P4nW 6܍xږ%﮾rP   g#iLʹYңW52^7l8V,BV G ? %fGQnIc:3 MQLb@MmQlbre?e)3Z-Oh<8*3͏PZ&Gi]<e*v2SއٵmH1XC? ?M&ru$${t[B@pƍ2;b,DPj KcY 0kva44> &̞ K@53jZlxȦeI A~uJ `i8௖Pc_%J,+YԔ}^J,crU2wER:˷soRd$h7=}& ' 7ҀB> v$;؊9uha3i=dm~V%X^ Rm8Zq%\("䱿[A0~fKԚХdb'F~+W$=^=fP4`T[ `gkPch@YoyXv9m<1<OxWȁ&|''i% Z!q?s>(Wj|-]5H,vݜڇqؘhWXz ɵk:RxO ,]<􇇃U$[>h~>՛t,nK3] ر G+ՀkI(`UHh9VW! dzE#&䣗Bk$인RVfXf_Ȕ5pJ1:Q7ŐwsOjQ=27m޽v(jۃѧ>[fM ^XpFڎ[,ũDQ)<&` t%¿2*j!!v<`#f Ǽ1od^d%8R׭זaً€ =Nlu C*/ 7bYʴ'Z h8UTNO&˾;RMTzܳy֥ O}5(T!0.k?{*+hAӾbۮ-'~#ߐkV7@CL C:!L 4zO^=P.FzS z{, _{яrEf)>SWgjbjɷ#UX4:I@iPʔ"mVPZ4Y|Gʠ)[VA< U2nkPrZ؁2c@.9,>7al{`< /AgC0]^Z9t1 C.7o|FkCl_:+,g 0-LP 8)7j/K׺%Rl/42Z+l%x`;&^o5*Y+y_0t+*OAz*8˕E w3?{iqH(3PrP:.( \ Q)q%a(x~oB9t|s'd(R6%l([PXp28򷎓PsQ}7l@Yr#gY(su{ǡ$0gFؠoPNA]N^& Ť\|A#=,'[v|KvPwUWWQkhמ[ .C;Fqeyֲ:M-=jO48VWq=LyO$0,8"ߡ//D~&ZYbǓqpcts=4u\e'gRY L76y1W;?]Sˑb'=&p6 h:e\١L(iH]EŠEZN~qHm~e}f&K'xAd{X]z^THM| ;)Ro$ù Wr>^ƏRyįD~8D)@-"KlY ..fpfW.L8~EG3 4qm 0{ m|MOue_2ϯX]$}^LG_H>zgS`;$ws 8y~Ϗ0 #G%`[~ ?$W"'y}oyxފW'Ҟf;O$o_[Gr?'_H-h{H^'6v1餇QS*4\ ]iyG*⽿;1K|֗nћhc="l7b(X#K"[Zp dusg?:/;[ 3:~ x X~ ϓ}X+ kb="j6v$=}4?YΡH'q7?tʏ":%?ɣ"p!| ;_=V?4q/݄m|#{xQtwÞ8UX6܎2o=8NJnAExYMxpǃo2Ex'e\罖q |W.l+q_!_gKI/§t9x gFi.–eŐ63F_]F/仰=E<[w.BtqgGR4l~6Ì38d/C%1 ;"f2VxEKG8Fraw9y5ɞƏ\:sI]˨E`^3V[U9(v{#MQ0`Qzvt6d"M9.aQ iggr\ endstream endobj 2049 0 obj << /Type /FontDescriptor /Ascent 754 /CapHeight 587 /Descent -246 /Flags 33 /FontBBox [-655 -409 764 1089] /FontName /JAAAAA+Courier /ItalicAngle 0 /StemV 76 /MaxWidth 823 /StemH 67 /XHeight 457 /FontFile2 2050 0 R >> endobj 2052 0 obj [ 600 600 600 600 600 0 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 0 0 0 0 600 600 600 0 600 600 600 600 600 600 600 0 0 0 600 0 0 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 ] endobj 2048 0 obj << /Type /Font /Subtype /TrueType /BaseFont /JAAAAA+Courier /FontDescriptor 2049 0 R /Widths 2052 0 R /FirstChar 32 /LastChar 211 /Encoding /MacRomanEncoding >> endobj 2056 0 obj 11736 endobj 2055 0 obj << /Length 2056 0 R /Length1 17280 /Filter /FlateDecode >> stream x|{|[ŕ}aҕmْ,YeYo˒X~r y! ,tS7-ohʯPʇle C$@JR6-[Jl4 ,G}g$>?ʝ;sfܙsΜ =AD[v͕=_9Ȯe_}C K W]s}rBj햕>wʃDvZqoDҼ i![uu7~ZY (]-4}뮹 7r^w5+6B}e~z+Psõ+6ӎYBtDE^Mq_DdS ђS@D!&52b!֋IUU^?#~RK@H !Q#q ILR >7*PQ|BޥAC,O}d39C6SAExB :}B-8y[&ȣzvU6~o.N{0ВH>OazL&hl 1t/}O#R'o݂l؏od*'H omZqznrpލ\Tq6O!G8yoCE"R*Pr]n9G)Ƚݎp᧲!E ?ɟrLAoT : vp,R VM+d9FƏ.C=4Mޢ}Q!oTCv[-mx!+bgx>.`q*=~YA>'o$}a1G!In,䐘zqcj6׈S5.`X7 л|f>Fn&Z%K@I[',ߗtP㗊nEGf+?66kT!/'W}TnqڬtQOw۞+3o?zC JaH95QQ,H$|(Q9s-W"Ьx}y;dC ջV^5f\]Qn5l&V#^*I%zrdİlO /m Dsl.*h+Iv?ՒIS6aiUIrn;N>%1S8MBf5*4VANkU %Tfvb i]jQLS[G`bǚ@Rer׬ٺԐ?sr0I?|8w?ȿ?]A1 )]-+\az*Mlz@՚rAWT2:&"E$Qu:AU DIx86 EzaLmRsA0!PWk=l3ʽP,Iu]ih,ctJDJ56CEչkj(7j"W֒~Tj4 > QZ*HMVb1H~G!izd`zD "=8fl90ƫRW`8/tI1L{ H|ARY;Ǣ49bMSs;r WW\3;;:=6;ށb}f@3H_µ_~rօzBO y'? r3R6%Ғ(;8ќ.2r#fP>B腵,ɈT3PRRC]6}'΃3q[1tnDR.%7禗ҜnI&䨪T7JH!+5D\D3!%z6U)qjmMZԷ*GBF*p&/0 㕑||cPAaFH rp 4"E j7*%anMUiېVJX;;=/Е҇e&mQ9fYJvղMHc6wU. Uģ6KFG`Q*(L(\\ y'E `,x%9a5W 8f8L ("0B"‘$c4-cu??Lw߳W{B4./3͞l^jt2k``ޕlF/6j߰z+>j,5sms%CE sJr!~Y~@90<bA_5^@f8ҫ[xbSRY|쩯U 9r/,]fQ.7lE*%UmN lG^hbҺWEQtY# Y#)!eHGRJa)^FXxõ {7\Xx-ƍKs׭;oZK^9wΪu?Z7|p ۗo]v'ӗ_y޺szKIjXf|R_g/*Yd*)˫*aYg9k\McfM0\]r+rLkG>SW/k?dW;gL~į&H-Ie]+mB^s*gԿn~YMhjavbdFGh;=;j.n]}՜̙J^5kιp^&idK,,3J(Q~>qD9%R`LFz qͥ;]DV^j DY>Z9575Z.Kbd`*]%"Ī b` %SWP;ID*,f~^zTF7񠸽!V̋;SH* X%܄%G>NjYw3 "^yNθUڜ.5(C~Mj`YC,$Ë)]9Q x/g25W_ TYJz٧_S&}5j*'aP"f`XӄEz E_? VXsk.|dlwe3KJ|o/4q.?5>T:էNjepoOM\O>f~LHhjpC ܻ:ЄMvV()s9Ar?~R| r!pB%т| 'i-m+x Ǝtgxpxtpx7 w2 ۔L %.՘.X5KME; |[lw`-Hs<gц : )t`%#tK< tote23;D6N?lk&9W)lG'VqqGuF`\-x^|'FTq]a%KMǁ} p=ZFL0L F["Gb#|]# \wp;EjhLg:G;2fs 4זt;]gٕS"MDh-9{IJ~#]Ycy<,FBAIC]w ܹH5fFLmC{z/cy2SΓ|XAK/_E& tҜvS;JL-|'nVOVji64Zub/0/f |EEŎXNT'"ғ^\nĥO0ŪS0rw'Dua+|^Cd݁K"!xFD*2r\"%sd{=zBDV+dM 3 mwaRmdVNS>2saP, xý;G\X, 7qM 4!6fܚ Bp8Am cm pˤY^=y|c~hwoQ)X Zx=u҃ݷH܎`]6<]>cqR+7߂QM{Kj2S; YkQ*+mĞ5x]Se+SzuSFuCYHiHH]JMI9:8 =θr1[MA5l*䊺r6qEd!S+)ʍ*a]r9w쯣!+HHkF}A=XIoMx\%%kt\u{jk6\V~9_r miZks8_p(++ |n(f ҩ?J|}[ x͸"W>+T!P}@0쒗)ɖLיtKV|St_$6r5;fN hha0J@k;5A{dP9& |ѭg^3Ghº( |>ݒ3k >?4drn6=>\ýl 㭈|fe,T4.P&{JOW"DoaSy1hfZcêOS`-ǝb,%XKC)VOORMkTKjMmb[1ګe&j}il84ۃ]T] ;,aP2Uktv*MkdRcT CYح`C7a Šf΋3hH*ꦂfʔpI,yky;:E™&6׷n۬i=7fæR]%KSK:ԎL[]oxgZKENGJo$~OY6jܕNGHrZYk3ꧻ5\S ╹P5L*̏(&hi"b`36wNX" ޴cٲnG5M͟9tPu\:2=rwl;7mskC$s]];3ij ).}v_ y?u Hr?tHNrn¾gFrziuد9zpWu+PnmٓДי~tvĮITʛOBV֞'9z8jPSo #{#DJqEaU"5zVEgvcN`LVV֊>苐K`M$n "vaFn"|#*3N8a̿զ,w_%\rx*cOgr)Z}‘eJB0?-SmwfZcMK\Y x,_l2;+z!9ddH~ln1ꨎhu ޣlzsGhdP/a F.x3/o:]ޔHpP \}2+M=;&b.vYr]n261f2clsPdp&a+ݒsd>$=V'D5 Go[˽O T\~kŲu%چfhƈ/hߙJ!չ`NK gjnf>"X' ǓR!z+p&;s3b290tnP.cq t,m#{_Ӊ#brM띦&7V_,EP˰{H1D|a5I_Ep*nJ%-`鴾k末Qt}*]MROac[p<Ȅ:slo,ԚU4U)*$櫑f:ݡLIB` h 08ͨaXt%V& /: e#ng;?,RKIO\ov0aǒD6f q|2M%$/i R`ch O'ia-µQ˯w9ɠW ` }@ hA"W <9[ {X!"Ƀl.uaO+!LuٹH,zd̲8J\fuor'Ʀil-Wh=uo}yqIUoRJ`VN ͟dfC΋fL:u#HEx }0ġilB$Sk$!ۨJ yglvwY~[ձqz -u^wYv(b:wmQkKN[v8I˽%(RKNL4=׭Ni5k"# R,v ˶./t֘x¼~:i[U3z&l7!s_ Z뛐poE L! 4^ q A&kqJfsQP3r+i%h)$O ̈kmM>Фwmނx5pkFar$>gl/o_yR/p@VoTţG#8=m>W{5۷J>w4~'U{֮3hֶmx, +'98F&}}!}0Y SFQ23PJcm>ዠA{IP[)P\̚Ҁ+P 4s'#l<_x 3(L,,$Tu$F`C0G6pa0Y|Vs X,rW'5BZDơs䬬w՗5[D*-sրGK>|C}RYǩo>5,\!HC8t!'2{*\x?x?P\ qc#~YqE0WQ^|(|Q~XCIO ~V}O)M^%uKu'uKJ2X 5|b\iA ӣ?EY-'˭'llqLDW }EEzH6`┅3]7_{kC.g #r_JB27gK3\a}zX؃ f7AuL`g|Nf":\ovDXZoǘ|D.?IɸPG/C %q"Oj+"2t) :# %4:|i %SG5"MaɼFDAD: ' D:?nveڅoD5&Ⰿ9#~O0v(] Cy=w_x[0E!G4!a}6SdcSW30V#">y  y^$bA ',#[Q&WWܣ ׸gqlDzq"vmXK<;&Oo}o,{C:î gyD3,qv7=/_ßA ˋ߅=aϳJ\ts}ύ1?[5~&?pg==i^#"e4%5"RFBOX^$HHx >ёIv|> endobj 2057 0 obj [ 600 0 600 0 0 0 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 0 0 0 0 0 600 600 0 600 0 0 0 0 600 0 0 0 0 0 600 600 600 0 600 0 0 0 600 0 600 600 0 0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 ] endobj 2053 0 obj << /Type /Font /Subtype /TrueType /BaseFont /KAAAAA+Courier-Bold /FontDescriptor 2054 0 R /Widths 2057 0 R /FirstChar 32 /LastChar 122 /Encoding /MacRomanEncoding >> endobj 2061 0 obj 7046 endobj 2060 0 obj << /Length 2061 0 R /Length1 10616 /Filter /FlateDecode >> stream xZݟyyv͝l}&lH .@H$C(R DKD@AD *UMEUR-'wf7l;cPBHYE61 Ybm)@Bʖ%Y4l$i5i&ȏ"o5ie頯c'0 =Cr#LeK,y[au-LIw:Q? :@+C./DIuۡK׍cv{"Ց,)QuJI+2m jߵPҦ=oIrY2݆?j緰;1›-er@%SG4(8$hHG'Tߞ3 sÙ{v璘%FUqP^bZ5Źn_whϏ_d`sqO1ur+QTX ^}!9_)gˣ}pr{"[o&,9`66;:1FGƨ)xڔc%^{iik{fӊT)UqLNV?i4wve/~7F|>Db<?Uq /uGO1s5fͼڦ>lJ6u±3}mUs& 5<;cmqתV&߾۴eoyn ȭO/r~2*WI8*.U)ƱS|LL5:8,.XB:.P::9H2v>APL-evpjS5ky jI"CkQ"RY|Vl;6.jl+M]jzgso*zwO焍`8%M_XÛpxrdfg9 jįfe.rwWc1F_oH\XyуG%a1ņHCca S|o4)춨j?t+VUKgfcԪ{ub=YzN0gpYs-f:Ծ> Ҏg=ʈWAU /֚RVABKvk 4 Wky‘bS}\u2xg2ڱ/sN >^J|'Ӵ,=. ?vQMHE$%fيgHn.d/h3PoUҧ{mA/-S\*D%4oIJΌwխ}൮(~BZf5lX=Vk{v~L82c19>v@-`n F*+Ŋ$S}?⃡ɶٖ4;ys}3<6>U;ytcͲV0cȦ-/x< Y%>ۈ'魷Y% 'ؘjawb?0c^aNP.}Q%csw|gޕl}9` 7oRAt-iÍu;ze\?nn݊5]͛c)0G4<[s{0G/^ Rl|5U=+]!,wRƎ\zD lķ^-?ܖ];ȼzKꋽڞ;uj&{%6h_?IK<= .WkLhbth╝TJ<}w6;{֒7gYmX[,zb`Sw^+WʻgQn}Cn-|7ǻ**g\~0uFU0F"LWZt'#c" Ҵ-;Kn5p! 5\j9eS[5w> jɨU =Gzm -E+ֵi|ȵS`kۦ4[؏2)fl]Gl0|!g梚VcZ~mJk}V!THF_, ԓK,7 x/':d;.x-Q=GA恏d@YHUSc\Ey+1QSO,ZlJRՀkeȜ]R/Ta9]2 =.WŜnwڪʗZ}%/!2N1y\o,tcKqsyir=>}{=u\<z˦H^CZ,+"՛p0']8?bT)- 8p<q@֠||^$Cb78슍n۷_p.i/ǂxDǝ.Ҕgiv-]읟cֹCzS|:a": kNV4~lYJC^{?7Ԍ]ytKǺug-nvnX39UzFK]vImhOwr6 aU۶Nqd"9谨]j4ϲq%Mssh;;zAZm+#}ߒ+<},&?j[W*c$@u֟V' ! $ glJNw[G,9_hx@:YAՑ3j]I3^zsݡR]كz˝cްM!_aᢒp+-TVvݕe6GuQqJBZjOc8md*#Dڭ\S kUuEf& }Aji^n!ߗk6X6W;{ 1C]ͭ6: XϔM{pϒk+sƨ]]L`sv_^Lڔ֊ps {b9G}8+#λ}itu;jF۱% ֗%03uce"HW]Ab;H$ eVW,P`P*h wҴlOy8OdBm>k&6л|e;A>gǮM@{YWr}5v//55-^1vC&z5T2NF/k[(sn/%+r^zkEf~ފ]2(8W"&46,5_aBUQk)<֛jtrRϠV>SЫ}}2ÀXe9c4# GS:􍒐^_,?q~IpN:\>qik<(w0 vqgKO? (llLB҆@3xDHEGWC~pЄ0  [#lCx%YFXp0a|[uN&kjKdk;UCxF7km˸ǐK)n>pIՍniPEO7▙-7I7h(Qx2,R$zS{H~Mh.ludH 2d(Q #(ܥ@n"cX{56rK/KT=hEb6_myx y zK(KMDtGqs#Â>+ ?ZL[h0r<%ӂ^Pyxt x C/a"@)})(yJEO +AA:+t\OedSl#G= 4pYى?pȃd;rAy-~xJ/̭ $7LsȽ\wP{Jg^uQ[wogʂ5B&"w"O^0 n%W܇3|5chwxc1/)gدf : >/3g t|Ŭ8#SqH6nk+Qn02Y 6)x! _W,$S~mwxkQ ;؄=+ƈoոIq^f;ޏ["5J0Rć iot()t[𗼍A& 5PV_~A?`^9:5XZK 9-کR Aˁq&/HzyLvGڅF-o--<4(Ee/j>1Uh)CPl0!V!pe3|!K8+4!8eXIiEPIW Yh#5S h[= 5+8ÏצBnk54_GxgY(S}9 endstream endobj 2059 0 obj << /Type /FontDescriptor /Ascent 754 /CapHeight 587 /Descent -246 /Flags 97 /FontBBox [-709 -409 918 1089] /FontName /LAAAAA+Courier-Oblique /ItalicAngle -12 /StemV 0 /MaxWidth 823 /XHeight 457 /FontFile2 2060 0 R >> endobj 2062 0 obj [ 600 0 0 0 0 0 0 0 0 0 0 0 600 600 600 0 600 600 600 600 0 0 0 0 600 0 600 0 0 0 0 0 0 600 600 0 0 600 0 600 0 600 0 0 0 600 600 0 600 0 0 600 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 ] endobj 2058 0 obj << /Type /Font /Subtype /TrueType /BaseFont /LAAAAA+Courier-Oblique /FontDescriptor 2059 0 R /Widths 2062 0 R /FirstChar 32 /LastChar 121 /Encoding /MacRomanEncoding >> endobj 2066 0 obj 2964 endobj 2065 0 obj << /Length 2066 0 R /Length1 5260 /Filter /FlateDecode >> stream xX{pSe?>$lHo%}Z-Ґ& դmj[tv+"ࢬmʰ XYuuFQw*l`ߜwr% !+D6MIZLB@|m7Y@J0#tG5 #IaH.'Yd;-mIn%ydem!HC$g. >{$?KN:D2F(d* @;Et͑'`h_Ŵ)=vp </c3t"8`@ Lx5 h?IgC &k+Hv_ k?(QLQ7AG"\{a\0L{Fnd\C7HΠ׉!y2U+B\^d9@e b%U@4I ?ty:chN)yVlU^uV-JoChcnt[[=JY{cwac8+PXhyxTQRd=zjN|#\/푟פP>^_:ϸ"| gL%Yv++Ι/q ^=D?HRXnϫ$X͔)K7({X^f'Pp3#>gJT6*Ocsͼo>=l6zC+@\Ay*ֺ&2%; T7pLJt&ʧTfx"+JG4}ḔTvGn5t jx]tV \ۣЩr#蝒,=)HfаJaeצX}PWB\qOEm nK7-dcI#Eet2V+֐5TQY{t&C0MV{ 'G;:}i16Q,-!"4G99ɫ[ɬ*4-PTy\ bR+9RdbP_(bV{e OV~p+T`.tpU&ٖMQZ>8*K+# 7biQN|!"'BD/C4N1Nq8L1`|#dL[8qı:f4'NB3\n8ȻAzSE)#C @ܴx|z` gŒL{3 cviM&dxH _:WrgMg*XvJYn3!CbiK҃iN -=$l Tn_XLi$44:K5 Rn(ZHnV jwtLOV܋; w3q*r&mS+ʳgsfJ,_Y?M_wPC I:C!`0U|:\">(!XutQgH)QgpU *;H%@!]ө0~$0NT%-%*6 ̠/^^b.Ij\?jf?_xhQѷ|b4/5?O۝t9sw67DSo6jln2u9TZ[i:< Π;lֵf^b{-u^.l)۫6'{0s-۫UuFbx]ڨ:"ZKϭn w欨 endstream endobj 2064 0 obj << /Type /FontDescriptor /Ascent 770 /CapHeight 727 /Descent -230 /Flags 32 /FontBBox [-951 -481 1445 1122] /FontName /IAAAAA+Helvetica /ItalicAngle 0 /StemV 98 /MaxWidth 1500 /StemH 85 /XHeight 531 /FontFile2 2065 0 R >> endobj 2067 0 obj [ 722 ] endobj 2063 0 obj << /Type /Font /Subtype /TrueType /BaseFont /IAAAAA+Helvetica /FontDescriptor 2064 0 R /Widths 2067 0 R /FirstChar 67 /LastChar 67 /Encoding /MacRomanEncoding >> endobj 2071 0 obj 6312 endobj 2070 0 obj << /Length 2071 0 R /Length1 9540 /Filter /FlateDecode >> stream xZ xTյ^2@D3}K.LU?h7jn[#lG(߳Žo< hx(ﹹwEgQn*f P}־x֥_Eʐg Jk~1_hW jZTU:}KO@XamN Pʪla0G.\S^WbyN}8(Kc\ p6b]@m]z79S* G0C($%^H| 0GQtt%B) ҳvY;̀5J$JWhR:`0lp ^xDcM&VSU)̄u4۟ЍyX; v41uZ[̓;a삧V,BGN{>$a(z-Wo\53qG*~Kpg1bz0[n{h[1x8đ#,\AL`̽)}}m=m39P M0:p3|wa~NԞ3C#b96\k,u錛1j.f+43dFY]f`?,\7w3|1JZ3+=~(b&Nn%vnx~#0a8 ]"q,/V$lDr\_D^OTCpO%zdp0Zeҳv0'T| gvNivr+u{ >Ap nᄨ';Ds3wCpM\//| a@fn%Xb qY1{7o1+i2H@^ߗ]YNfdMƴ^Ոϱ BQryb%륂+ z*jMԣ륪ZJrZJɖxK4zjDE|.A"NOtTMt ^iGoݫKzJ\GT*(~^VYMySHq E-1жu #~3{bq .TMG"*z)E4" y-4zI\5RlNs;Q3s<9)Qơ.|FX66jQi:fwD7F2R@'!>=LI)%dh. R}Er94 949R.!|@+҄Ímԗ"7S)y}^"St qgQ["!_im6'2ŀ+h苼{idza8;y;1ZC/AKg蔊~5A+ " M2BŸb6xڒKk0jChm.˰䭨) Dj>ek,UnƕH_6le| 2wD>4K^[yylW V>|æmo(ʧ~]:}:aT@mz3õ[[dptןb^L'v-zh:7˚Z5dӄ٢ӛvx{\(q}uTY{ aPj$śCU^jsKuA #g®_?V\ԍrv?q#ߛW|<-xeC˪z>ȿyN CM r ѩg5ZNì}'YMRb,q3_+7XO' { R 4`:^:E&x3k?uNdN]?rIH2B=dyN X V#,Kf1Lg&pecHA\9Q5O1 3'O8pș=Q?q`͞31O0MOo?S'>|𥧞zI2kPqґn;ǗinҜ&T@S/dSɹRq|UEvOX,f0oӭ5,ϧ`sg;Ek`<`g賍UinʶM zg^=pO*C+R%R EJ#Ll5޲*&ܷd}Oea!o3CSi[Ͽk!):pRܭd #nTt΀41`EA֙lsU)losK_8KvL1g"7nWPH6'w;+kɗO7}W׬2ϤX!P|30n1ui47A[&ҴF`v|X #l(Mzc-ljj6sQ29lm]Nva18;lOPq3~I8%81l&N7Px|E*]TgVzNG(ۆ>{/ vV~қ{7ܷ"wɣh!Kr ^%BLj)g.äBc!"y#޶$GU41֒ϨOL {315p_^sTn݃\)d!!5ZHr1 h'俠:~ K Zb-!4Jt6ʖ8@xs[G.2:dnGkIO פdTBeB:)W*K>cf#zdGn'Z|#kK-May=CSv9*}FqGo%O=U#BDmAgJwy3Hu?ݻwY*?..]F"^E^ 1i)B $G"tBbR#%mK\&nbU-"$WALy+ m.D4 n_[GON{`4Kk)-i&o\pոr<g-΢"닊,:ښ#Z\g\iZ(.’* EF/M0 tT}vr%Z9JI_\5bӂٕ]/'Θ1zet/te`0w.ˉ肣k'\QQpL)il_y&O[mgޱ?0!XenI֧7 EJK%`'֤ 8mI|0uGaϫ5g5jת\u,9]ʙqgRNU!(LYJ|qz%,?|Zyhr-;Ef' LUάbpBnA~;?Qz8.`yLC !:i14R,)\?" ͐,(!X!OkQ W9i3ĵQN/ tuKuvN^%REOQ,ҿqY?Hrn giWBYe׶UCUb c(ir¥FkUh*ЛIh0WapQ8?ѹ~hgJJWFg6-7p^>/_|Y!CE5lX?ƴ~~𵘢jL'3^Q,tO_~]a&Y`矇LT/c.%av})4Q]-ťo+mPϺ.*,;)(Yb#ކf ;} #{BD! ,LM{!i1 ӥx Ze}Wiqoq-˗(L%S!KT.WRJ5Fm{YtNwat*4Ġ0RH!X8~@FIn=G[{ GbdHM5ś65iB|nlGFOc8uhJ2bFB.ʁ "PLR)|u/wB펇~R0P?ơ~ǡ3jHFuw~n{A5zÝ#*~4CԊJFwݲOnc^s/(.=.#V~1w2[JNTүR\ȝ!Gi-=n_݇Eu>q9?oWs?AYMf*m\3f*sIm\ 7ͩ`Դ endstream endobj 2069 0 obj << /Type /FontDescriptor /Ascent 770 /CapHeight 731 /Descent -230 /Flags 32 /FontBBox [-1018 -481 1436 1159] /FontName /BAAAAA+Helvetica-Bold /ItalicAngle 0 /StemV 149 /MaxWidth 1500 /StemH 124 /XHeight 540 /FontFile2 2070 0 R >> endobj 2072 0 obj [ 278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 0 722 722 0 0 611 0 0 0 0 0 611 0 0 778 0 0 722 0 0 722 0 0 667 0 0 0 0 0 0 0 0 556 0 556 611 556 0 0 0 278 0 0 278 0 611 611 0 0 389 556 333 0 556 0 0 556 ] endobj 2068 0 obj << /Type /Font /Subtype /TrueType /BaseFont /BAAAAA+Helvetica-Bold /FontDescriptor 2069 0 R /Widths 2072 0 R /FirstChar 32 /LastChar 121 /Encoding /MacRomanEncoding >> endobj 2076 0 obj 7658 endobj 2075 0 obj << /Length 2076 0 R /Length1 10888 /Filter /FlateDecode >> stream xz `T{ν$33I&d!2`XB HP0, f(iK0,Y4(wE'!XP(bZ-uk9w~?wss{w;sZI"mf*yw?./"[g-{r"So"fͿǘE"3f|? uFs~#sw#-/pzSiH}r/hYn>LSV޴`oEzH7/lY!=ͷl;%ƑE`VùsM4wXtw |3K}% U`54{AQ-Fj~ƾ+^GGR6>a9Uɼ_ȟn, P:AsG,p+?.=#Z#v:W8lZ*v WS&g_ӷɆ l6[ֱv˾弆g"y$Ir|aaX]HoE4p7F0=>S)30 Kã2?ewYgOlD/Oٗ{F<OoxIYRKRXZQ6-}"8\dlxҰkksFio_|RK(vols#2!pG}fhtY֗`c6-bwV>ApO,l}`>WM!OK&"٥LtT/͔KwJtA'.>9O!AM~B\0oTZciiii޴Ѵyv^h;--UJ>Pw 4Cǡ|;/gp>D x:_åqMD E`abn;V5Znw9$EHI~>SY/H# uEl9dߛ7@ob//԰"/)N ZT,y ;a3Y dszVsc_c&{ϑx:$.JXO&2h56:.o0%i|0͆,(~7if&S|mT$W ֽ~\74g,b+G'dhbPGi!o&Ҕ%>~/Co5}Xh~0:ޏ$ZM_yFjD,!_[h`_.GK͘)!c4;> =g2P))F\_:|X]7P>{{Óref;=fMF,qFэj$o'ҁ&d4]Q5Z*5J ԮP2E-~je@Q6eB+a5ҭt|ۀVgW֨VFF/VXѯ[RGFLW@`@s;tgUkda@Ee$;hFʯl?"+Q"tw1n9̆֫]m Mk Ygf4MHMh2ߊH3h9nեR[{*֩mꮪ-huyƶz$U5IEo|M.֠KUD*1J8WFfmhr"4NGN/~r*ն?R7Ux3m❻55ڒ~#4{ڮFf2V5 gQ`LDFMW14T3R~aZȜHʨ6eYĐԶ4 ks9|$ \QkGBH߾BEL Sqܯ`I͊mSxX! j4 H넺DZi(J.d֊%W7ɝ03b^Wza_g&ʫ&&LS+Z[UsM*Q. ,EGIy㹒^ : uֈQWQZ0utDi1S*ED-=Zra@Î &}mRU \֖zMT-11O5u~uTjaG]Cs#XXM&!MV '_h̶ut[c[S4:-*}5Z[s%]Bqs#7l̃Haƣj3"b8\ؠ;^[t2g$J5ge3\:?)J/ޤ/wʀ+\7;0,{UfI?.Rmb\ZjW6dxmhN D˶ـ9*re"<* BgKђQYͦ#_k 0)"U"J?iTԧuN=~Z&{-L3,n^>6'٣rkҧfN͞;42=}~;%uGM7Ɠ9W&ޒ0JQRx&2ZrUc8m^>ԍ`Q;9uVǔp2rf*LW\8` dwbے#x;ܷcٲ;V,I=?dvovb;=rse0GuX=Շh-\,5b6bfܼ썤.8;=Xkw::򵖢(P,AR' %^(((?YyjVS>c"dc;Lٽ?K| 4`6gKP[jj )(9F|~( n玲'~6/4 JJ1ԭQxAbr.ф@apbW(^^K zYB&B 'w姗ᴴDΝ!KwwˌUb_|5qoYY쩌'˧ZZƬ @W쟟A'~8 jCu֭7X/e ='Q2R-0!Id#n&?2mRIABGS(e J ʼnZ_RX Si 2W%Ou#wEԝybJ6aP(l.)Y?$lv;>?pϽYHyJ$GRDa,%%V-Xb W"Ba,@̀Cr0j/^365<'bO4'y G &0OZ73beǖƚ tD3 ;?؆0>N*m=6~za9%ݝ7GJ``_&>Lgz4{FZzF#@mi<-ͮeevB<9Je"+0n&nFn1؄7΃l0Pi\|ךS OQRXpf)tCW%ݟ(3Ä@-Wup;_[.f^|_bJ#Oo.so~[25vo؟i$h q:bUCU>;7<sƾ~}xLP&AYZi\o';^iX2CyJ !;d; @B+9}#B]$XiLL]3 8\u$C%ؖ$O&{1 b g@dbn/jyPt+Kt(B1wh}bb$HP`C^]Ζɋ͋,Zo-ZOml|eu;`+5GDZ(~*Ӛj%ƶ쇑x[()bogdWe)rD$&gK eM]9ڜCkOHn%brbJڌa,; |Y Y. qE;6%}/b $Dh':KH0HVnqE_w!߶=C h4N;IMm:'Q$ 8]Ifnr7߀1.>Oz؋-('Q+ QnCX(TF~u9: RͤiQ1UaCdk[A z0 LK 8c.04A(bo^yL-I9NcUG߾V-ԧu?k=Z'֧YLֺZKYXkzXj6ZyMDs֣u'kmaA֚Z{Vg(wa!ԣ]®#C0CzJ 8oW߲D7èxb8L2tjtFsve@, 0:بv2@`%,,i!B1ė",T?G|~^fjoˋs:x1f_(ӀWo8fkͦ:S5e(2&)הavsjN5Fl;sؐZaķRPh~:0}!~9.#R4UES45raR R'L#YYEU5##CCUQS|b8T1i];cFn,.䊛U`5犸ar˜#%+~$h3+/s_FC="&E^ $#\z݇aUVc߈(\OQ9QK#*(ӑʾ4^Rfonk.ASDKI|.?%EkoYYhTjiZԫi&h\tT9j4z3H@Na9:>v0Irht4Ӡ;:s$޻Oĵucr&1~lwuOM-⦙p`fEdzBm⩢xxVԵOfVt ׆W*»n?נ?x zX *}nn"]׵idoxB_s.y!N\'[ _yrQEiۄd{p~=Y IŷF9 ~Z|E" T˪HIU26Lm#o<DfdtP䕊$}Le%,EU5f ؀;.E% ˭y("L2,-%8뤢Jev\n*$D ϖ endstream endobj 2074 0 obj << /Type /FontDescriptor /Ascent 905 /CapHeight 723 /Descent -212 /Flags 32 /FontBBox [-665 -325 2028 1006] /FontName /EAAAAA+ArialMT /ItalicAngle 0 /StemV 0 /Leading 33 /MaxWidth 2000 /XHeight 525 /FontFile2 2075 0 R >> endobj 2077 0 obj [ 556 556 556 556 556 556 556 556 556 556 ] endobj 2073 0 obj << /Type /Font /Subtype /TrueType /BaseFont /EAAAAA+ArialMT /FontDescriptor 2074 0 R /Widths 2077 0 R /FirstChar 48 /LastChar 57 /Encoding /MacRomanEncoding >> endobj 2081 0 obj 19324 endobj 2080 0 obj << /Length 2081 0 R /Length1 29484 /Filter /FlateDecode >> stream xսy|VŽ?>3g}5ylIBH 1$h#d &, $TBi1EhQ^[)Z[,"PkԋHN~Ϝ'}o$s3 1/[f-\`Y//gb^2q1q CeW.k]ZwDzIӖ^}ÕW}R\[p^[˂E'N]XؒxǸ6ܢcW ඥ+W_Y%z~ٵ׭t5lNV,:7knB9_%O7fn.p$ 5(;78HAaEG5zX WZƟAM.8fKN>~_8]:]6tONUG(cGQ>bõ_2f_ʘ^A/~sWk>Ķn{ 9V"v3w<{o8/Fq<ΟXUWW~+Gx%o=V&hm?k>VVgXcP_ָKksL4bkE_pq%F^8$p^nv< |4tMUg+C;!y55#8oN,8DsgyOg[K߸WݝsuNLyΞD73=y:Dp'D'oNTvV]߶bp=)oR{p0oً".QXy>l_`Q9996ISiw%wۉpww]\]hNeڠTn*W9t89<(?ީ>g|^'9g$]&AS'_03 5Drr.8\;9N+25hvh+̢+ky9̫lN]\{EbpTq=ѩ ibalȫ@ KvicUZDf勣GhbBÌQy:yl^_xf|9[ɚ&UgA"c;YqKdfS=:S'STnh\tegvs"畉ƌNk67;e6R^s!|?@ww܌fwfQd(p"QMr\v!D#`+;{pOI59 nO44IE%ur?V͹*44QRqNR &)Id &ug ap8f@;)xMO4 YsײkgΘ({;ɓ̼ڙl^s%6Ld ' T>9[!aCU^jCkK6X[aY%Uw 6A&/ڐ7ʚ~Y;ŤK_{ A& Z~VXʿ,Jqs26߄ݘёPN(?'Va}k^مwPY.)ك ]=-jt;H;{âh_Q@}>3 -̂L!UĝEE5>|\ PoŶw~S /o3:NjyǦDD$Z<似\|V[37x72zɳw"wܿ}ۖwy}-8D^ \9|UeX D3cuC벆GOƮE, 4:!5oU= ӌ LeȌ:4<2~z R [ 6*Ai~P+QT/!%+Mؘ1$/唔SBQB9zJ0glp{e3W̱XW)sMXi/ǬWʭs>:svLoX >?.{ߘDըqtUh2;NHJWWq:6mM=_[$tg/y+b WyVx^ bEژRW z2δvݏ'LVAdxk"DP02۰Xo~9}+/GEˬ5ff*D0j@*KL~>E/UUOn<[:) *%PP?d_[A3g>n7,CmxǺs>Õw.<]J}>0^+o}G ¥ai-vh)JJ ƃ%|/)”1eKJwʾR4)1>êa `ñ=Nۖ7-O6z45_8*{b :f47b!QPZZPP11'FW?h':4<)VeEmUO>cTH>-Dwly|~@qWpd[0( |Vb6bLUnHTz'K;^Ȃ6WAIOLzya O!˧3)s\B*E!įv)| wz-N\ ¹F_ AUT7YAgq'}nV46H$wĆME")ksBs, +K+/WDP¡@X;roVϳ?R\ko[Jߓ2I7/MҊ h .33 pjv4 ІӖbzY> lD@0n(`^it@!oƀ@n!dܸ>\]Osbt_RKV *r+66vxQݸ>neSߨ FkA#N F}hvHC5*m,5:'ťx}@QhFj,UV6֑)UB9c c%bC6&g mձ hLk,/ݖ۲mYk馬-\m m Yk&o7:/d8XtR~pkxUXhr)S&Bf8NJ207E%{B{6M6vɪd$w޷f l>t k*-M-NOJ3☶F*d nig nv?{˃+~w픞těk[KOGWl&)]T9d(0!+v-.8p{DTg-j+ta"s>R_J^*Aq_h<Ps/l%"әH 0zO3xm6s~w;WKN?wSV#N>{׷O jk'Vx#+SkFM]jl0X5f9:#U%cw袢q,9݂))oW]hT6-{),Ć/[ʶl/n$q)p:ƹt'|qޚ*KoWԒY/j,5~ ߂)oa+m<$$.iaT*C2!OSNVËau}ClK҄;eǕ2Ed":=6&DIy0)[RSLUM٢-{u|P>kpB^]1Cq(lMU3 eC>IJ:o *,}.Z^4g3>Wpi@W=_ZФ`h`+uBOa6AW &ޱO ?H҆hwlI*w4f/`/U'14kpJՁXWҘ"XJ\_ 09g\TR#c%:is=}` }u v\䛩uJ 4 V73Yuデ!əym B̝2+ݟq+θgt~Q,&kMhZFgZUZI۬jjG/WQ N!&$&=@/5[c(+7e?&.x_y#~ gt'ST-+ RB dw(erTR @1qLkԄSPNΨ^=j%+V.FW~S P? ~i. .DtX>jmse}xw\e 4:!TY;fu4b8Z+br-.(䜥Kpw[ 8QZX,Kσ`H#v7'ƹDz%?~w%[=仍y7J:'oޚ;P@۴ ; pO,*(s׸mnmDnZyѻ RtXQ(*4a7J em~Xg[ǃ2HQExTs1 LF4x뇬z ]5"BȺ !E&s I,<qd_WSqrFY<naŠ%#Hsi}#NWD{MSь`yQ^>D9JB(?]}H,}K7Sj]ߍ?SKۋGu`d([lѺ}W#>[w?vs>>vS*ˌCD1ķJܐZJl<|U},uO|.Rg%V`C.> jc{@ː%;z3~TσK332v"5iF.mm]rKss72Wgɢ̕M`)}nD EccBݽw!ץ @ĊZܻGv?|q8TA-K󭮣)p-AS@'l Fz Pm1oԫ2t12$mN IJ I3&J yB2@HgYދUQ.>9E8? ww]~2GU"dZa:3I =3V>UVuI_n&]Q*t|O}|'αBŀw$+a2f!\HWN^8ׯ?kv S_}|&]gBk2YXãdgg5l3V:7C:V2,cn spW$,ul?"8J ɕ_[c,x$.#JoOY^29!h\x[Å+T`b9}~r,Cozeg EsriW~}Gdj;7NӴw<.0(ϑa?5v CF>VUo*%0 8r @RnRnؑ[KD SdИ%.!Iv '&; RY,Cb ,ڌIkX5LjK϶O6BDRUvvRЮ1vُ!Ts{=V&{y3N\Mn$zVz;è iyfa0=$TncpL *CK6͔M3^ªB0@DD᎚Q%2\Iߺ(d?)p8Jݜ9+eF4 6 od,+g(.d Ä_HY!udS x)+a^KpLO~BH޲&g}gIT j꿽%\_.7kGH 3kB I]0$OnMgS@)<\xx.o'(uBn䝠v-NK<0n"tqPt)0e:$|&5*X;gdgɄ("4eIǤ8IQ9>GJߒw+RcBV.PZ&{ I~N%QAa[AHt(:8l)v&DZq"Hyz>I/ԯu% yF]gv(Jge~u!x`lRa^TS?;(&+MkWX;:c?>Ϯ?va>AyOC{ÆբRNϊ4J[JiU -مh,GB;q" f347T r9iU E@פ2g\e\eDe2b'X@(>:%A`+꧓ɐ YÔRլpztX蚨*bbApOd:^46;hEț+ vK=^~U_d_o?eoBzO'?m&qn&/bGL\\JS+l$x_"]o&\Ǚ:"$#8vxe ucbQ=?<%<'+y^˘2o}s*bA)Ϩ%܁)%10GC&NI}%n{+wŭ_i_W({YvXn1ۍvfY쿬A2@v^I=(V?UgV·q28 !e){ <8nM!9i]q$,dǒuȁ2B8`?B 4]:v07\x1Z s&vӻk*=׹khw 6x5ّz^4B8/5_\ßGb! 1&urK1|)_kq_2q2(ע=o# ˅1Q8ܓ# r P] R±ck~S^>Ho=ذ75[C&ZAVhJ)\oI*ZpO̬aZCЏ&,!|+|pV}VAdAΆY֮k]dU'&uC>EV'N]˕ov({ _%clǤ8!~>IPz}mүA02X>g{ V@ԚL 5"୉U 5v  ȕJxk|U#)nu1GgRlgCNdSwR.V&t |2 gjɍrJ&=MZ|JCx|&(} f$L2ݦ 21p`K;/^X m cc) ʠ-f)kLP-hT(ECIitD-7^xi6H;YNXb xPy'gszݚHHE{{_o s iςՊTx dqRr(m11qx_oɳ_ry_4KW^W4g}_7Xs3jD-ˣ0JeqkpZy#=F7aDl$O8q,yqպp!bH^G";' pZ@3k¢#9L̏53ONadb K ˑް >w[)x _'ݖd[_כt i0&L:# :>-?n1w}B!]TtPZSp}%e1ڛzY */\uc_k|(3_U޻+g-|j!5*'k?Kレ u4o]5&'%NX;NF\B6aKN2(YWREv$kpNo刡..C ")/aCSB rN~KJSzdrwSD!Nd yh-d>2)]4@甑跢@%a=w$ M(UF.N_kW͏7@.ִ=KdJ6%éNa 3{j Z.w!5P"g>&烦g# ̆ZeO32JVڂgy&c3$PA2E)8@.&Eą%A)UFI4- ÐZc:O QIVMΉ>z _69ꌔpLc 4L-N(4sG?i 4Zs1D5 |`)j x9­Nn٥Ӈ]q؃o#fLZkxbط6sSog_\?uuuLSs;Y y1e5PJ5u%y5&1-mu Jh,fEeE5EEmEEB;sEiOS33ʼM7u@_ ay=|!sL ^oY1"E-&pbq+"Yܵ~3$J =Tso8]EE LLIL'@$;r%ǁL({ w*%mFj^Lm4zg H~7¹GCd@܄1AF1/WA0r׮9l*K ,WlY;G{j 2Y/ŷ2' ԱjL )ɉcll%2h'%O(D&Ppd[ߧ+rMA k2 za& .]Fʏ*clLFbX$wiqK J]R$IGoF^A|8,]H-[",Y]7>m#ߺĞ<c#Zf~^QEi` rUսw¯6hnR7@Ҹ1d!y9)Ijqǹ¥V>Ij]s93-[#+p{%j=Ex`JU#S1&z.вi׮feuUGa6i100&o}, 6U. 9uYsb,6Mޣ4MSxs N^%=](FZUjMHU!(hh=.'$85^kurP @8CIzbe^DMaԂʙAɣwn@?OzrAus'~kMo^O~`mk{`%M]|S:XcZK.k{֡iK7d|ʚ@K0xD8BM&t%Sh\uΈIp"Tor8L Ef2VE AI w2lx<">0Fc8t:;9^do-ሄ!EX*;Xꐒ7oib?e呇M}>3-Lu#(g<%qV!6v Zm K+DX76 *]+LNY)nffTƻ(ȔCOu<x˹GGDt>4Y9 g2p\c풷yUS$y*'^=G~B3N(dX7uM?8)G:=rR% -OdXXh08T41=d4ϴax+[vj vs(eMIEVzЉao9;vs1cˍ"UGd.͙0܀T]nscʁĎ [)3Yܔ)'i&tsԑHB6Dl-ccgCiw/"u.2b/ 3<|8G DZK_0.j4}X M9=L3N7r{a(.Sih+ibr0qudsF/Am)"'G6+;7.{,<}|Y}$ޅvm2;S$I^d`.KVInbF|u %7LP(+CIb6_R!DERd%{jEc^W_~x=J9ɿBsgM(pk 9Tt` d#ѭUW1 1b~Fm\.6 HIO3 `H"HF &cҴs=r2.,T^/O!@zֱ̭HIDŕb%z2,_)pV(Vn.mn?YSy 6/FS/ )k$ܑeA"6x"TlwLi{ntT"S.qJ#|+wٷ%kTЫG"wm} ~9zF6FDL]sݪo$֭E3T'~j(?$kb @59g*wO>[ .}r4%GK3;cXn+))97f:U0MvAL&RHIM ʅvbac5AiĔ`'VܩX>ZgR0 *' k+r]#4v}H97_kW$KȢyU2ԯlT[1~!nS=c߸~~sav=?i_#8F.):{| |AulI<:/תMb9`Nª <jQ2Cʅbe8k7+e^ g(oaqքonFy^YWBO—TxV*k%jV{%^tTy w=W`EPpbTEnOy.uNLuǗmH j噯g5'k٠fdۉs>˽2:$`dۅfذaM,zcxFY5بQͣ~4Au aVt-@(,q I)Ce:]R8KW\ѾeeL<%٭wFch 7,/p1f߯ .CƦ#2sll0Dl(ƊpǏh p;ccrv0U`*h6MA.Ail:YZytT#氹lkb]Z/!.1}/ǭRޮOw+;ڽcrAYr5U(KP\҂e!( PQ\҄2e.(( (Be&J= (Pԡ\R2e2J J5JJ%JJ7/n\5+ZJ󺮦]qU۵vcntWFundוB]hWԵvúЮ+j]A| 麜v]M5vy]si5v9]ij]vWu]FY캔v]3iUOwM]kR.vѮKh骥]k B]i쪡]v**i+̜ cQ.CQ?&bLv%ʴcPFo6Mߤ^ww/ōB1Q ECQQQff;k1s~6s~2s6͜7̜_fNf漥9o*f13'_qW&lrZ%*3Ye:&Q3lM5&Ú)XNɬ6k;s_ٝZV{ĝ;n"Ϫ̘PαX֋l:O&rM\4٧]bii󟼚gW8-XHeeɟ+9GVʣG endstream endobj 2079 0 obj << /Type /FontDescriptor /Ascent 939 /CapHeight 722 /Descent -222 /Flags 32 /FontBBox [-86 -262 1082 943] /FontName /CAAAAA+TrebuchetMS /ItalicAngle 0 /StemV 0 /MaxWidth 1114 /XHeight 528 /FontFile2 2080 0 R >> endobj 2082 0 obj [ 301 0 0 0 0 600 706 160 367 367 367 524 367 367 367 524 524 524 524 524 524 524 524 524 524 524 367 367 524 0 524 367 0 590 566 598 613 536 525 676 654 278 477 576 506 709 638 674 558 676 582 481 581 648 587 852 557 570 0 367 0 367 524 524 0 525 557 495 557 545 370 502 546 285 367 504 295 830 546 537 557 557 389 405 396 546 490 744 501 493 475 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 367 0 524 524 0 367 0 0 0 0 0 0 0 0 580 ] endobj 2078 0 obj << /Type /Font /Subtype /TrueType /BaseFont /CAAAAA+TrebuchetMS /FontDescriptor 2079 0 R /Widths 2082 0 R /FirstChar 32 /LastChar 222 /Encoding /MacRomanEncoding >> endobj 2086 0 obj 8766 endobj 2085 0 obj << /Length 2086 0 R /Length1 12384 /Filter /FlateDecode >> stream xz xT%sK2L.g&LbB.H$'!bDµ4%b* "xKԊTh9 &%jւZgH[Te{I^}Y{#"+m Wvu̎_F9w6"ӂzwiD k/j's]K!ʽIKw!]k&]%aX+ׅqs캦ǴV^CgFڿWߍXKOnC]i/u1OsEGɠ 1F 礒,$a!J;CecLpqtvX<9bi:fvEsNV32LI|HX1o_ɌjbϣnPzL)l.z w]3hEQ_5PCWTL~Qt;g2ʣ|[w)LQzvO6*_@nX QYy4p-M>z~Yd1T>-Y5w1^7*_"?i$^x8h⧰0MF.F;z~ItA/\gah-utFہޮQt={Ųمl[~XzP+)3wBaJ6}fc\gYAR>m_&.N|B^EC7[;>eN6-e2LOHKKr|&VS)Վ_K}xI^{q?Nl_AЏ1'D6U맞W75U)-O(* zܙ4nX&A8`K_ wjr8x"BF72:5?Z- EߒT!yٿHII$s먮k6lvoi F =>Cqf&:Z˚}͝M%l05eZpZwJi " 2TGANfMZVPT#hmڛhiƦ-.(ب9"Mӛь4ތV`h߶a'-Xt]ڮI]YK&ͳ$*O־R_w_mkڿQ,tm9~okF4#J;,r:,Ҿwbj|};6ԑ}sۃ>;jtQkTַKJKiI훑n(=Ytqk}VL(8]SaQI{c,Էx2&(J[YYu9" !g ';k<r~BPYSXיhDL0T=]]ZfO 8`PA]sˠ@@La!m՞LiQvԲHT㝢,ɜ'J6)9 ’GL>p31;Y:':kAsj[~+, P62Ky"Ƴ%Fy邳"H[594V3Esv^ )w̰ p@k(s#LZzgZֹ RU_uu '6, $^(9Égfk-ۢRv.̖S`Sscih)! z$<4,n4 z5 r\ge6\:dKވӺu;O8]G;B0<H !`K_(4kxԋolqmqo/YޔLD,E"jjM)dx<x2 Rz1Pfb $6 pbt([8[zٮӫ l9Loc)c||9,'p&TnmCx#f'.vv|1ĩTTc屈"1:XGG3堟Ҝ{C879ݕz4_=CfU1%X+/yg_rCvNۿ\߃JpsRerfl[LFf!|&2[< ìTM1h 4ކg <|zwrh:9Z7TAsw1L:)V2i T8OsQ[.59\ r~|72)%;˲)|G֝|/g[F[ۘ.4NȌf]o;Oazs *& 9Uj~ܪ_\̷ZnwT(י3W-a"A 6/l'*0{MV[J0:D $TՕ71l`)Ev+W,aeVfVNǭ匱 ,He sLea5:&ʉH$՞;9^[ֱ22hӰ0rdb dV-XR;" k%39)+;c%+4Δ\nO \.4Ij&$&c FIլ;yV);(i.QǏ/j[:}wG5M5W:Sygn(&y-9!ά)+uSWk u{ { v#\Z[}~6Oo2=dئdTg7˭֌L[RvjabKFFjR<'9'p).f3Ml9LӪ2gJ^y:{-aOowڹݛ /+U.0ןtyP:V֝#pQ)He$HffefK&}׬ Oz^HݴiNϝZ3t1;h'ԫ6`pr: 0`㸁䪖@Aeu^3zF׮,-hvQ;7mW OR<,*si0 榙655)v/C,J|^Ѯ;;=ޓ^ySRV;-˾@>/ʰYyo![R|גaºZ u+CE84%ypbl(@dž*=%U15mlR~K}f1oɲOiLT)!Oi=t~Jp5ׇ *.Ndt"ՉBpC1ul|RbnU+=*jh32m[ڈIe%yZf3ՇNHڂ-)Rt5#.*3Ő+($/U2,v3o,=CYU41!b~XJɐ7[zb0׃xͩO jr)9(@B1R^,S!+$nW篌Wo<1ʏ$]*[H|?Q;|X>P=QW? !0-_E#Jh<+Byn;(NP!p/(ś=?ͫ݃Is~@8[7 Z$؞Q(j+S]Oba w ~^77GY;;tXFT;WFp֯zkԐZC;$_78p 9/ߊRA|KLNcLb\6 c{!t1QzRi&u q-ׂ~!:=ՠMz7  zth D'@tN :SGvѩ#ڀh 6Dm@6 ڀh***PPPPu #ʁ(rQD9@r ʁ(~ @?~ @u?~ p SG8pc@1Ęb 1 tc@# /r#!G9@#Ѕ"; (:vQ`GձvTj@h@h@h:BBBBb t@ 1#b@GD?:~ @ѯ#_k6AQ_G:!hRί1:%bJ 0tdc{j04m712LaincTqСGXTrr+ xۏkr84)ʁG ܠR~a3oAMĔxoKP6(Jo1erҥV:Bȏ)*D7)}J*Qb!]lQUTPɢiXr[/~Ch=̫fij餩t44L&94Vsl6e37%"eHz܉ ;!79]HZ[4Vmt1.k Y 4Ci:Qi6%fk5VvI cFmf uc`эނoF^SOVN=)䯇ޯHvOvܨV!"hv:a;i=<[=MQ`vQ`37_4 1QR. 8A.Fa].bd&񭈐 e2` v!ڃ~c" p+RޘVHh\Hޖ^P茌2_+/aCW{|tA5KچE~բ];-^*xW:ݤ 6')~AO 6 s_PbՉP}]{÷rvDez/m5zVhAUm5/v>h(t>SS`Ýفh3UȔw]2T|aŧ;6(*m(mEXg./~/r";-بB oժgj| L9[%~z5^zW~sjIH?V^^jŸkA Mu6EwΙA<+h endstream endobj 2084 0 obj << /Type /FontDescriptor /Ascent 905 /CapHeight 722 /Descent -212 /Flags 32 /FontBBox [-628 -376 2000 1011] /FontName /FAAAAA+Arial-BoldMT /ItalicAngle 0 /StemV 0 /Leading 33 /MaxWidth 2000 /XHeight 525 /FontFile2 2085 0 R >> endobj 2087 0 obj [ 278 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 722 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 611 0 0 0 0 0 0 0 0 0 0 0 0 556 611 0 0 556 333 0 0 0 0 0 278 0 611 611 0 0 0 556 333 ] endobj 2083 0 obj << /Type /Font /Subtype /TrueType /BaseFont /FAAAAA+Arial-BoldMT /FontDescriptor 2084 0 R /Widths 2087 0 R /FirstChar 32 /LastChar 116 /Encoding /MacRomanEncoding >> endobj 2091 0 obj 11421 endobj 2090 0 obj << /Length 2091 0 R /Length1 15708 /Filter /FlateDecode >> stream x{ xTչڷdf !LA$A0`"PRQZkKkUm^ckU.XTEiJNsbړ <ϟɞ}[o #Ƙme%]y$8Qڛn6 OcYqK3+cJ[}cM݃˜񯌕ӴzŪ {~XN4$OٿSp$kX5{iva'؇Wl/q>wY;˾Oi>i!Q?Mimt-}*'٣Qz0?ǏFK9_ϰ|+kgM4m꧛2(_8ʙ5ɪӧ%^1k'U'=pXlh~$7}a蚪NlT2V~A %PذDNJ4B0!69o3+y C'OX6>7h_h٪+V;^~٘&o}]>{=o!b(G=nt]xhyAh=;|b멾x.!>69\l:6詵fmp; xD!q. ¼֝v:x9)~jY}-+ƖŨoÃpᬾs*4' - =NJ&d6S=HVZ۵G5MjWꪏ3u;v}0@un9-(DxfUָe ciu3pMVŢ@uQ,: Sus>Fލ߹mm<+k=b-zT'F-`x:0uט:D=(e~>:N=ۻz!%M%`;=T0 fl34R+|O`kPHQ iЀ+D9t%?LIDmPSiE2d4xSVNPPxbV3u*n?3EϻO:nݟ[q(۞h=||61̜a sx{DNFF.DZߘך#ow7OΉv.w;8s8|X=!{ݧL,$8IJ1quc4]]aR֔sƗO(ұ{} o͏/_Y䫏wwQ2L_zg'o8~3M)2pcw@L fՉ[_ Bto[{!hZ%nZr $ޅš@(C5 ,=_1M -N}Ӓ{Z7Z}o[ {+n4>SYfa-5܂#ۄ-$G|f%<%E:`œ6S0j9Td/'Ԫ5WRN#صYjTv~Q!J)77w UChTY.ДfUw9fasnq9+p`YQ˹bҥOvTH݁ISJ#2p'MI 0qc:*#ºz˹zns2\iuB)SQZ?Q~Xu+O-mwFyL}ȝ8 \Ղ`[jtb+n?(2`!m ܞuB&jq(vոx1w5[݆;%kcR&WkkKu멑Zv0}vUN^13uEŘ]ߥ2;0҇1!fdzebiҥ5Vco__}kCV>O7WD'ֹx4/^ضԵc`671їug>B"GD=fG8ݵK cî~Xa놤V޶~ICSg|Ϛ5B~foDˉ踤lڦgAPtJu{XZ*nU:Z@|pY(G|:K @w7NY3Ϩ]:3&AƫFj 2T XLsJ*4VkЎ4%!lc _$~=+/Ϭ7]A߇;+gkRE12 RdTb3n;>ymR\.v}8!Mdu9hRjzU-KiԆHt8$6&1 87(|0ot(Q)pHR'£TНFDA4.i{ KEόLoef7Noذv׫1A1Hs;??;h MDn 1cBS@kaP[kѫ ^% (qQ#TԢi6$ J!:4jv9nSmc:-a&,N;ƍU%/# >3g '(d)n):͙;V$߮͡Zs q $Z\;)ub=¾L]U0F$ r߂Gf_;b~TIsuO.;O=?Ijv᳜~Dk>C ΅Qv 2D|u!_J՘2O:CjxJ &Ba~BrzޙNgg<>m?Q]&ZYxzzXYT !`1DEKhZQWN/z[·d>@ ~O_F}_: ^"ىt\ d2ku;w8w;9Їzp&5IH=:儵V[zH$mA.&mSIl3̸ pO@0JYTy?kyv{~OgByvҭsVҬύDk(6V5FyAy1gmzF9Y*1%zؕ>JzUE6p89,:X@E jx a 9FAV([1)>@oM}N>R?]+ajj&F˭+?QbTr8bhj&v7@%Rd,o7|Ft!*Ĕɡq9]Rs`g9\%LO`"Awx'='ֲD%)# ^bЅUjEav(F sfr'wC%gBfC[aŁLbdi8J T~Ɛ1hzE|Q H#(@Q*pAO.R~W/3jru\*z8sk04r,jըvjpyTf a?>I݆ -~BFua#6t2_23A v+b&`8YK6Bj)n8(dg*(J"I"H.Èb CCйi(u9pޑ!׹:Ì%fYk&fy13s8<ꄧ.0%\(|S0fM7f'}QwW$l%i;dW!B +VFю@=<Dє=OBL*rײzW7D:WQ(T :yQ&0 桹]2ǜ#A@=[Roo@G`p|P B yu:wy\:6G_̖8TœB=0l< ? dF^QqWϪ>'Ư _QiX'ZeUק=m8o/ZcDa5($sr*3]X!0)D(U7*~w󪞞[kNZFyESӓ=(M[NA9O۵@n\oT%Ȯֈ-䉓&tMzʑ;=+U͍(j\ݽý۽}}ƭ׷jH*IO֯ԅYzH$m! %\S._ ˮMe6J˗p ߯ —.P+q(iHK ʌzV|9o& {|m a1>m$,R?,K9\2~q*Nz 59לZ/ v:q;}ZR*s7$0Co >. ŐT#TaNݨkݷz~cO4lUiއĊg1vT||e@% ٳV8|$4mWS斌U;m2jP|nqQpgܶ 詓P28 M+ɯȯO7#hXXq]P xlن[>IIP~} RFڇflme7Tyǒ.ȱS ǁ*sJC~˺zҾ[+{|z:Zo64,ozr[bY@H[Oq_u۪62\rO(Kmj^yU:[ 970\s9قE!;zg9 q:opzu׀$ǐ~n8i:$mܐ_T޼[X֊_}wmی}*3Kw4r0]Y(%~{I?xft;M k47d}rL쮼' H*-ĒfobgXoRq1~~  =OG˘p meOgt]QEyD()NJ:Fdqe\Z&`~Gh1:Ӄhz>z}~h]ii|  v]")H꤁2՗^͑E2۔9; N$^F"SE\$EhvDNFJΉ)bC˟i򝏃/f*,ϴ|!1(ߝ82rFޜbdz3~5"7H/+ꆸr,a-M #AmV0mr,,JWPYPzà'ʚ}s]鞅~/yRz˧v=x)98m;@?`9f Լw@$cTJH4-Ƭ9S;nbLoR탮 !WAlI, 1C̝n!Z{l ̡1%a+K5Cۧi{nSf0yG< YDBs~ I$MmԍeΚ4rSZ\kjǬ7h\ڵqJTYxqbiK2oϡ$P H^ mn.+XAHzKZsqVT-yrO.bMS_4bJ+3BJyhwa|smV(i,h89 ΍cT&6(N^py4?iw YhJ:)%aQ\L]csXwTzC^O.lagIRU+e6u4k^{:c6g?M83]}vPeH܆;l}Dz0scZ(3׷}jkkcfR,mm z C0|A5abFQ- dE|%>9aF;;}\eTSAv =h vwyy;sݜۑ,tRܰ65%*yD]뿕<4enmᬗOaW?h2x7u5T}v iicPd:;/*ɩ̇cu"fL)!HrJD%ɛo"ŋ'ĚWZjUke>t#(?n`K p) ]甑I*%MXIϵXtoNН|_fkG&~L,%Bt!\_,\ \ ! #Y{PfR6<γ -vI>n6#LDH@ܐE 4dwi))D4c owg;U` nNbsAT,H޴;Y֦FL>S]ܷ3,C9է[ʭv) 46C sKEr$FD?6 oPPƅ(nɾTX60/bTN-('H[L{3_colv kQk N9 : tNgtj*E(Ii!ɒ$ B9NFz{m6l~gg0.+iflKcpp^f*Rm|'/pY|qCh%H+96Iamvj{ ,1Q@l^-FEzS٘aUGQNLHzj.,ۆ}P.S*XlM {M6qtnTAsbl5't>ʺ~gPTS\b Qhq bpb>F?ܵ.J+٦4S|U?ۿ~xCMUQʊ6(y~Ǟ+"9KmL8lBq r 9 h BJiRڔmYEGAYaJ6@۔C+6ba9u$2Kb,< w wF.UgCП.Uk:=}mm};bXUťY+{<%tYJ'ގ,3> endobj 2092 0 obj [ 301 0 0 0 0 0 0 229 367 367 0 0 367 367 367 390 586 586 586 586 586 586 586 0 0 0 367 0 0 0 0 0 0 633 595 612 643 569 583 671 684 278 0 617 553 745 667 703 587 709 611 511 612 678 622 884 601 0 0 0 0 0 0 0 0 533 582 512 581 575 370 502 593 298 0 548 295 859 590 566 583 584 427 431 396 591 527 784 552 534 528 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 586 586 ] endobj 2088 0 obj << /Type /Font /Subtype /TrueType /BaseFont /GAAAAA+TrebuchetMS-Bold /FontDescriptor 2089 0 R /Widths 2092 0 R /FirstChar 32 /LastChar 211 /Encoding /MacRomanEncoding >> endobj 2096 0 obj 16172 endobj 2095 0 obj << /Length 2096 0 R /Length1 22200 /Filter /FlateDecode >> stream x| xTY6dd aD!! 8aIKD F֥.Ak5X,P@.h mDϝ$w;3;~B !Vp]rW3BK^?m+^)½5^~2מ D`ŗ}5/ $1 ',:?+V/|7: ׫%O}| !X@l'CW.b wTx ZQ~ pNʥ͵Ҿ&dX\z+vc>Q8dEՈl`JjZz e焇_0|D!)9jKƒR2.BOX~ LVU]3}ƅ.IޜEffjIF1l'ĦWB?wHv/O=AOK~=i Ggsߑ7yA'2VJnsdhB&~OF,O<Ģt.FM;hy̓+$"Od'-=czMuմʊS.Nt~ "JGYT;,lTE82{&?=I Ep"fcSExnؿؗPe"C*{]Ybdn1O O]jYD-ص` ܼL+&ns+_S;"-;{qL5գLQk`ݝ:ɥ /[/Ɨ:yeggGgxgO`ҞpEeOaQwGuC_ >>3J+"$eS]ס%?-4N&x1 AY-hYİZ)1P Շ!Cz19Θ1s^1ۃ:٩ggeS$YC NQR{l4iдE{_9Ýgl!ށnIv&:3<γGa1e{n=J7ΚW >qv3̝;v|dF2TyRG r+ە^Ib=#:WI`4}.ƸNsN3ML#AR@H5'MhÈ+ 2ZvI45ZFMUO# 2E hd瑅 y(>259pBpb#M IK:UiVmce,^δe#YIJa_)yVrVWjed*mتsշJ%6.llę8/6x;?4:]Rp[RWPWPVn~̸gc:!kK@p?D۫FG5j%3O匫j@eaffFKRSٗ%%t--VSbAk*%# 132 H:2fP⨳ꬁ CpF;_ }>q 4@4HކBMȎ=B3~|йX ”sJұJjX#D J#>|gcߏұާbu|ԅ.RuNǪ+cw*W޻K~-쮍Kwfz=.`=(|d7TaLifX>*獼 9# 0kxAa\)}6V2-ZT#sԥjy=m3s)TQEdJu',l8A?DQ7) Xp{z;Q7|xbzb$m)lvqќT 帣PŢ M[wu=Xt/}N/so_DFgQ/g אn)Xh]իMCRv*(M\!Ve5(w{7cWe®lW [B7˛n:w'Է3Ns 6(je0$OKiC!J>.xYw/႑USN^l{6(+@ .,m[­A-A=lLd&=/8Aߤ;rDxJ,pzG'Ne\/ J~ c)f<lb22/dؕIt,V>3g{}Ud 0D^ZP.N1Tў=OBաD"mLݗʂaqiͩ*V [(cVd1SY&Ͳyr?Ag_־ذt;4@􄠃%8\H5ȤQ>3z~ޝUwԿL/ZU7o{uw6oIpJm !hy5-7RmZW[qk5nmY<ʒhT6fQ-]v 5,;p4:\|gj".diua,*B}b-A³k(B7-tJ{^NoosY7e=h/٫&{](oɈIŅ%ʩOxpN/nICH i{Mm6niHQ *B-{K@6ydlV`9 @Qhq{73䙫IlTznX}^}B/gKbQ_sr~H:mSO}Nƒy~Z$*\V*ݵis0mLZԩ&P;|{.{F n<(;j* wdV@H!045PI&4W^\:wݏ|_qcdܻp=}(>k}u59 ~\# Wz۹)7JKR!uI')biL 2^?W0la7͎d;ټlB4o|1ȇǝ y0EVք<zJ W[Ree0hu!7D:80v.clC'AV`td#Eq|q?(:N:#-.=bmi#î0IN#;n%H#3+n2d1"]3[#DH?1цζ`S-pqHEQ_`)vA {@ zisC\yRS?j+\WO V˷G h_^o=2bmSm[FABF1|C72Hocs=?#Q /[ښF ]0%_s&FD]T l ]Dt^KZi0>tɔ;"*Gᐉ4Cq|ft" 1ERy f`fC2"ǑDED'6BkgƖa ꣁ?Vs[Zc)?No_~[A'|.qTۖ^ VR6=:W|>׬:|wLզzSݤEOQjmv j`TX#".>sAs5uU=^uhOKHutd‘6f8<)PXox_3=OF,vlo.짨bǯ2#UDeSQb/$$LLAatb#FiO=Ly0c+KKOD8 ]^Ѐ..waeTR O|mq()[ (?RYe٥|4loڤ?ihzp^JGA>'!vrd 8Z!1A,A*&YT! wUASH.9>SD) r\-KAgYw69۝jDvyNycF[FWFwΌ}2T~rW/FJ:qoA,\Kf5vdЌ6z%o~=no;]nN|g?dqXHjs%,$:1w} -VxKRB H5 vK+-,^$"} T"w#4~)]qk1yo~ƿL;a g͢VxnZm;ouφ:&̚5ai6p~va&զ1.2c 2+'0_VUkZ֮mLTSd8 `jExc˥΃;Ncӻf7vFX qvͰ߻21ExL eO"ޜ*?&P<"` JDqxg!emQ>kqZ*.&$npRZܫ]di~`,dq4z<H_d5Yt@y,ԑT4B'dNd[~mz5U3+J.m2mKw"{H>&rLqTД ÉG0t2C9)9܌Ҍ ;!MsDB0HI\`GSFcb"zA8Ej$܆dZh⯄*E+)V p'1᫾785%>^9ETh˯w}~rBs^l!,ƒUq3%jZ C*Γ2 12qq;nss WT.cf( T<>bZk׽P_.'7tQBE\0bU("lN`L ߔ`„6B;%DOՌaVPw4 ?gH)@2* F6d2!(Q~ǺuSz[`{ijlitUa3R1vNΏQ'Do5 NExs23.Ҹ6?kˤ6Z"ueEU$oyEG^=x$@tRQKBF ?fpo u umi#JYNvrJA'Lϙhbod+9alyyyyyYIUGԉSyvQUp Xn,̰@\ۉըԔ>HH\lH?(3Ih/ג$9 㟖x/٫߯?"3/}Iˇ3\)$ DH̝v&ƿ zzIn-r_>,O!U\ A}Eara2#)deB3ya11Up˹TpB+$1zvGB M pl2T ,!mhAؖoZ@BVz-ײ1O{%Iu&v:1%)< ?n_* ;QאvW*AkQ LCP+"LԒ3"591bebpD'ldњ5 Gμӵk?TXD?'9tlt]smKI+RKMv#"Y*JnR*xi^Rn|5{RcIլlZ+8C;d1{kdGBڠ6J͠? }EԛqlLU&vGޠ.g塅>A|8>JwQM#G^=d[̽ft FinJ ɕ@5U nA[w!k& 'Ih.Aꨨ B9d'I#>峋~eqo}fOwKy%×VrS$[03c%Zs\bj^eV@" $`SshH$[^6&mhg;a,ݺT>Hn7ߑ`YdX&Co;-hVxdQʔ1 AdĿɘu]-"29W|R܀Ƿǧ, 7 -LFǴky3aLL>Bk^Sll4JɌv("!+,ZID"BCzECu԰F~ DP:x4Q8+i&^qLI<2_FܢlSF"ĔM~N*AF0|$&  @ ̿\!!{UϪXunѣ!4VEoʍQ&~H5@+BW @ f IDв?޿Z״#v{·'60HD!9j8>MImtyta2VdR&r1ōSN{=ULR^}fja33UkTmȦ;wF*# Z9+H&B'64iYY, D aƳE(p"PKܝ/?7,T,p+7V^D(Dd hZaԆɄ*VEfC*"m`#{E S d;˳gNil?j YFCQldչR,ٌ44:GFh4Bh=(ھ lhPl' %Y%}"Ry/;ݣk;O]]xqS9D⎼qm]87Ogp,݁/sJSMnFu4LdMhC :OKʋA\v> Cʂ`mCCD "@}9n$`޹3v?s]26&^ѕksJJ0p(_ˇ%NZ*Т)+ ]z׃7s|Zf$£mڴKCʺPBJcWXk]]۵"*W уV8mDi9yp6:Cw]pxMuv^[BpsS b 'dh78f.q~|h-l׏s_X~3;bww=6DGxmS"-Bi{ %m5lѐ(l 0;R AIn6Zc-SmMecFP.=*<1=3븅@-B/wDa%S[ZDVE8 F8!8# ĉ졊}vq@Ɖ8.XKʖK]/Y봵qXt*WL GO&pȔd_D[x96iPmGUffG{q/ F7X 4Qz,w6:Mb(UH4s|r9a8FKo[@PAJD<'$Mw!2!^`|?puhxQ?|)6޷ =AO)˥ س7^v,]V87nS\-oqṚVEFz{`cRqA>VXbaM: Dk@E5m/ۑ6Co its#%nL6r~x@:.]t t7߶j4 $UZ 薮LʪF<-HIUIdiH^U^<-O&+^dg$R52>c$tzZ|XvC1[姤:xzcJ(V[ *MEnDQo;pYqA(J|{Vꈽ 6;EuD[d82BE!$yy;oX_n/xJ?+O_]G\uE㭙iuSҧ׾EM.o^俗Mm? ~u{Z;=01`\Ȑlw swpVL62dabp٬&Sl5s)Ѽ|9yqO۳ӳsȣ$"MsfS d!(t$ΠqhIY06cC#~LhrM/Svλg6PA|"x{?dBb!lr'pt!lطM?:T6[:. I⟝}hY] х~9EWCUlN٩G`hiBav0k!:Ό^"s&Qޡ/Db3?-L^߾,rENSb\E5Z1PmVCu o+\>E^[ 6"O8k=Vi35Hf[&?9;$ $V9HWQs<)v~T~ԂHmWܮ@=3ȭ] "NWZZDy1 AHŒ)qdO"$S9&|cKB+o,9%hX?~0aVr!J%:҅H@QL1Įi{|CGMgg֬Xi hAZ,X 3}S8R1\b9քNbQChŵ:1d3$In\5пw9ϫ毞i?^#Eus#Uܶ\E+ ro /3$?Yg@HMw{c@10ؤC) OdN *7MZN)Yr0G]{,#Dd{E0:!:`Tx~^i5Y8C1 \{7C!rӮn`Cέ/uح/w*]n^O=M?b̜p8e_-E/p_G$&R4fXxքNdϟSO&pפ m3&ji@͂nMݰ)i[M+Ǽ Җ_X=v턋Зz1TDӾƙEcEOn$Ď4Zɜ@k*9V8ɕeimsЦ4FM{"#Sk]M14%FER\p+}K&GF(-YLi4N:-VŔ8b ZȌl|/2Ep=yЀ{9Q00) !,{׽mi̙zoƍsY?Lӟ-J_y=)VNExm6pr&F"gT*sr+r&EWU5Ҝ&p&lzڠ$::jDF@$]m+tK)0Ut!. \ /fvUc~sC^i/^؈qOFo3y4r}!4 :]y"}C/:2Kw f2DD- Ʀ .8xs.mqŤ o ǣ;/XT7bJa,%g̻h)/ _ybۣ ejo.! 6@G.jXO,#cB/Kğ"ɦZ*^\bGvDמ[Tl-6*,×!6i&kSl ZQ&>nN7Grwe#٬9 jK tJ(#}z_ٿgz~bݭkщ9E^ͮ_ܽqLnKR1r?Bٝ)&Z$,rL5Y#ʙ<"W(PD\,ͧӌv}? Q/zɤhK^)_j2j4- ,D6  }XݴO^iZ"}U'ɠF?ˆj+(E)Pd(n#;٣(#6Ϧ6-+eDwU#&[5sVgYyYE*(md[H`{:K]Rډzz=x'kpM}-_⃩Ff$T%݈['a!YB荂Z(/DW Eh{ %>Dw˓*Ti:up5=1M(b)tKJ 3i̖T,!HVElU[M9eI4F$3V *0AsQr:s ;) By_%r6v]^ı/57S?ި4~8AJ<.(gέͤbP#N1r")l)8n(_V!8^?M|JlaM|`[MG~O6IT(!y9iT6̐ld4e\2NF%?ǐK"(on'I-;LvaläSX2Ij%i)_+.$M|AIcl5@d"+N4Hg.sH=?+&KJb$Y5AʠQ𷒎%/4VZ#˿V'"Y7-3ok&m1zlv~}#GGeoxy?-}'@{P <(XieiO;/L7~,ʬӡCg\r(&|{x0$=nJX"|f@H gC_2{s g\zi뒦/5f˗/IߗYv-8.K<+,tN##}Rze H6У=ƍ@5#C#ŤKXx2L$|d VHTiդ(l\|?؉z2}<߬|Vϝ67fJ[l]~U5/J[.veuaU̚_}^R[E(`\n8&a{e2\*L2UTk^ͭ95fհBC}6Wc_ggذI|L3zfܓ1wF8쐌~281 5 w6OT.%p܊cH1)UxęU[ A endstream endobj 2094 0 obj << /Type /FontDescriptor /Ascent 939 /CapHeight 722 /Descent -222 /Flags 96 /FontBBox [-110 -258 1108 946] /FontName /DAAAAA+TrebuchetMS-Italic /ItalicAngle -10 /StemV 0 /MaxWidth 1110 /XHeight 528 /FontFile2 2095 0 R >> endobj 2097 0 obj [ 301 0 325 524 0 600 706 160 367 367 0 524 367 367 367 524 524 524 524 524 524 524 524 524 524 524 367 367 524 524 524 367 0 611 566 598 613 536 525 676 654 278 0 0 506 761 638 674 543 0 582 481 581 648 587 852 557 570 550 0 355 0 524 524 0 525 557 460 557 537 401 502 557 307 367 504 320 830 546 537 557 557 417 405 420 557 490 744 501 493 475 0 524 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 367 0 524 524 ] endobj 2093 0 obj << /Type /Font /Subtype /TrueType /BaseFont /DAAAAA+TrebuchetMS-Italic /FontDescriptor 2094 0 R /Widths 2097 0 R /FirstChar 32 /LastChar 211 /Encoding /MacRomanEncoding >> endobj 2101 0 obj 377 endobj 2100 0 obj << /Length 2101 0 R /Length1 488 /Filter /FlateDecode >> stream x=KPK4T*cp~KZuɠM ".""RqL(887qݭ88thoww@'!#] *YybE;3by65`ٯXbȻei 41ZB:Z"{Ѳ}TU>J&d $FՃ&!ǰ)<C|O]P@*!d_8Y $RT"hIhA7~+&_wxb|v&M ws]vMw\bprX_^Er+ 8+m6πUR}'?SKnMkKF8^[;zB @em*oV4U endstream endobj 2099 0 obj << /Type /FontDescriptor /Ascent 917 /CapHeight 815 /Descent -313 /Flags 4 /FontBBox [-179 -313 1083 917] /FontName /HAAAAA+Neo3Symbol /ItalicAngle 0 /StemV 0 /MaxWidth 1168 /XHeight 611 /FontFile2 2100 0 R >> endobj 2102 0 obj [ 356 ] endobj 2104 0 obj 222 endobj 2103 0 obj << /Length 2104 0 R /Filter /FlateDecode >> stream x]n D{b˻!E")N>Bƅ>@b f?;;`ɓc\aٓh;pަT5(d}M4PJw8=0ho=pUpAJᔯ{1,eߧrL?lpFc (ThuiY0NGkt]:-_|TsnSPby7ojp endstream endobj 2098 0 obj << /Type /Font /Subtype /TrueType /BaseFont /HAAAAA+Neo3Symbol /FontDescriptor 2099 0 R /Widths 2102 0 R /FirstChar 33 /LastChar 33 /ToUnicode 2103 0 R >> endobj 2105 0 obj <> endobj 2106 0 obj <> /ProcSet[/PDF/Text/ImageC/ImageI/ImageB] >> endobj 1 0 obj <>/Contents 2 0 R>> endobj 20 0 obj <>/Contents 21 0 R>> endobj 122 0 obj <>/Contents 123 0 R>> endobj 177 0 obj <>/Contents 178 0 R>> endobj 220 0 obj <>/Contents 221 0 R>> endobj 296 0 obj <>/Contents 297 0 R>> endobj 324 0 obj <>/Contents 325 0 R>> endobj 343 0 obj <>/Contents 344 0 R>> endobj 410 0 obj <>/Contents 411 0 R>> endobj 429 0 obj <>/Contents 430 0 R>> endobj 456 0 obj <>/Contents 457 0 R>> endobj 510 0 obj <>/Contents 511 0 R>> endobj 540 0 obj <>/Contents 541 0 R>> endobj 587 0 obj <>/Contents 588 0 R>> endobj 606 0 obj <>/Contents 607 0 R>> endobj 636 0 obj <>/Contents 637 0 R>> endobj 669 0 obj <>/Contents 670 0 R>> endobj 699 0 obj <>/Contents 700 0 R>> endobj 757 0 obj <>/Contents 758 0 R>> endobj 787 0 obj <>/Contents 788 0 R>> endobj 821 0 obj <>/Contents 822 0 R>> endobj 853 0 obj <>/Contents 854 0 R>> endobj 871 0 obj <>/Contents 872 0 R>> endobj 918 0 obj <>/Contents 919 0 R>> endobj 962 0 obj <>/Contents 963 0 R>> endobj 1009 0 obj <>/Contents 1010 0 R>> endobj 1060 0 obj <>/Contents 1061 0 R>> endobj 1116 0 obj <>/Contents 1117 0 R>> endobj 1172 0 obj <>/Contents 1173 0 R>> endobj 1234 0 obj <>/Contents 1235 0 R>> endobj 1292 0 obj <>/Contents 1293 0 R>> endobj 1359 0 obj <>/Contents 1360 0 R>> endobj 1399 0 obj <>/Contents 1400 0 R>> endobj 1443 0 obj <>/Contents 1444 0 R>> endobj 1494 0 obj <>/Contents 1495 0 R>> endobj 1544 0 obj <>/Contents 1545 0 R>> endobj 1579 0 obj <>/Contents 1580 0 R>> endobj 1614 0 obj <>/Contents 1615 0 R>> endobj 1655 0 obj <>/Contents 1656 0 R>> endobj 1721 0 obj <>/Contents 1722 0 R>> endobj 1830 0 obj <>/Contents 1831 0 R>> endobj 1942 0 obj <>/Contents 1943 0 R>> endobj 2017 0 obj <>/Contents 2018 0 R>> endobj 2108 0 obj <> endobj 5 0 obj <> endobj 2109 0 obj <> endobj 6 0 obj <> endobj 2110 0 obj <> endobj 7 0 obj <> endobj 2111 0 obj <> endobj 8 0 obj <> endobj 2112 0 obj <> endobj 9 0 obj <> endobj 2113 0 obj <> endobj 10 0 obj <> endobj 2114 0 obj <> endobj 11 0 obj <> endobj 2115 0 obj <> endobj 12 0 obj <> endobj 2116 0 obj <> endobj 13 0 obj <> endobj 2117 0 obj <> endobj 14 0 obj <> endobj 2118 0 obj <> endobj 15 0 obj <> endobj 2119 0 obj <> endobj 16 0 obj <> endobj 2120 0 obj <> endobj 17 0 obj <> endobj 2121 0 obj <> endobj 18 0 obj <> endobj 2122 0 obj <> endobj 19 0 obj <> endobj 2123 0 obj <> endobj 23 0 obj <> endobj 2124 0 obj <> endobj 24 0 obj <> endobj 2125 0 obj <> endobj 27 0 obj <> endobj 26 0 obj <> endobj 2126 0 obj <> endobj 29 0 obj <> endobj 28 0 obj <> endobj 2127 0 obj <> endobj 31 0 obj <> endobj 30 0 obj <> endobj 2128 0 obj <> endobj 33 0 obj <> endobj 32 0 obj <> endobj 2129 0 obj <> endobj 35 0 obj <> endobj 34 0 obj <> endobj 2130 0 obj <> endobj 37 0 obj <> endobj 36 0 obj <> endobj 2131 0 obj <> endobj 39 0 obj <> endobj 38 0 obj <> endobj 2132 0 obj <> endobj 41 0 obj <> endobj 40 0 obj <> endobj 2133 0 obj <> endobj 43 0 obj <> endobj 42 0 obj <> endobj 2134 0 obj <> endobj 45 0 obj <> endobj 44 0 obj <> endobj 2135 0 obj <> endobj 47 0 obj <> endobj 46 0 obj <> endobj 2136 0 obj <> endobj 49 0 obj <> endobj 48 0 obj <> endobj 2137 0 obj <> endobj 51 0 obj <> endobj 50 0 obj <> endobj 2138 0 obj <> endobj 53 0 obj <> endobj 52 0 obj <> endobj 2139 0 obj <> endobj 55 0 obj <> endobj 54 0 obj <> endobj 2140 0 obj <> endobj 57 0 obj <> endobj 56 0 obj <> endobj 2141 0 obj <> endobj 59 0 obj <> endobj 58 0 obj <> endobj 2142 0 obj <> endobj 61 0 obj <> endobj 60 0 obj <> endobj 2143 0 obj <> endobj 63 0 obj <> endobj 62 0 obj <> endobj 2144 0 obj <> endobj 65 0 obj <> endobj 64 0 obj <> endobj 2145 0 obj <> endobj 67 0 obj <> endobj 66 0 obj <> endobj 2146 0 obj <> endobj 69 0 obj <> endobj 68 0 obj <> endobj 2147 0 obj <> endobj 71 0 obj <> endobj 70 0 obj <> endobj 2148 0 obj <> endobj 73 0 obj <> endobj 72 0 obj <> endobj 2149 0 obj <> endobj 75 0 obj <> endobj 74 0 obj <> endobj 2150 0 obj <> endobj 77 0 obj <> endobj 76 0 obj <> endobj 2151 0 obj <> endobj 79 0 obj <> endobj 78 0 obj <> endobj 2152 0 obj <> endobj 81 0 obj <> endobj 80 0 obj <> endobj 2153 0 obj <> endobj 83 0 obj <> endobj 82 0 obj <> endobj 2154 0 obj <> endobj 85 0 obj <> endobj 84 0 obj <> endobj 2155 0 obj <> endobj 87 0 obj <> endobj 86 0 obj <> endobj 2156 0 obj <> endobj 89 0 obj <> endobj 88 0 obj <> endobj 2157 0 obj <> endobj 91 0 obj <> endobj 90 0 obj <> endobj 2158 0 obj <> endobj 93 0 obj <> endobj 92 0 obj <> endobj 2159 0 obj <> endobj 95 0 obj <> endobj 94 0 obj <> endobj 2160 0 obj <> endobj 97 0 obj <> endobj 96 0 obj <> endobj 2161 0 obj <> endobj 99 0 obj <> endobj 98 0 obj <> endobj 2162 0 obj <> endobj 101 0 obj <> endobj 100 0 obj <> endobj 2163 0 obj <> endobj 103 0 obj <> endobj 102 0 obj <> endobj 2164 0 obj <> endobj 105 0 obj <> endobj 104 0 obj <> endobj 2165 0 obj <> endobj 107 0 obj <> endobj 106 0 obj <> endobj 2166 0 obj <> endobj 109 0 obj <> endobj 108 0 obj <> endobj 2167 0 obj <> endobj 111 0 obj <> endobj 110 0 obj <> endobj 2168 0 obj <> endobj 113 0 obj <> endobj 112 0 obj <> endobj 2169 0 obj <> endobj 115 0 obj <> endobj 114 0 obj <> endobj 2170 0 obj <> endobj 117 0 obj <> endobj 116 0 obj <> endobj 2171 0 obj <> endobj 119 0 obj <> endobj 118 0 obj <> endobj 2172 0 obj <> endobj 121 0 obj <> endobj 120 0 obj <> endobj 2173 0 obj <> endobj 126 0 obj <> endobj 125 0 obj <> endobj 2174 0 obj <> endobj 128 0 obj <> endobj 127 0 obj <> endobj 2175 0 obj <> endobj 130 0 obj <> endobj 129 0 obj <> endobj 2176 0 obj <> endobj 132 0 obj <> endobj 131 0 obj <> endobj 2177 0 obj <> endobj 134 0 obj <> endobj 133 0 obj <> endobj 2178 0 obj <> endobj 136 0 obj <> endobj 135 0 obj <> endobj 2179 0 obj <> endobj 138 0 obj <> endobj 137 0 obj <> endobj 2180 0 obj <> endobj 140 0 obj <> endobj 139 0 obj <> endobj 2181 0 obj <> endobj 142 0 obj <> endobj 141 0 obj <> endobj 2182 0 obj <> endobj 144 0 obj <> endobj 143 0 obj <> endobj 2183 0 obj <> endobj 146 0 obj <> endobj 145 0 obj <> endobj 2184 0 obj <> endobj 148 0 obj <> endobj 147 0 obj <> endobj 2185 0 obj <> endobj 150 0 obj <> endobj 149 0 obj <> endobj 2186 0 obj <> endobj 152 0 obj <> endobj 151 0 obj <> endobj 2187 0 obj <> endobj 154 0 obj <> endobj 153 0 obj <> endobj 2188 0 obj <> endobj 156 0 obj <> endobj 155 0 obj <> endobj 2189 0 obj <> endobj 158 0 obj <> endobj 157 0 obj <> endobj 2190 0 obj <> endobj 160 0 obj <> endobj 159 0 obj <> endobj 2191 0 obj <> endobj 162 0 obj <> endobj 161 0 obj <> endobj 2192 0 obj <> endobj 164 0 obj <> endobj 163 0 obj <> endobj 2193 0 obj <> endobj 166 0 obj <> endobj 165 0 obj <> endobj 2194 0 obj <> endobj 168 0 obj <> endobj 167 0 obj <> endobj 2195 0 obj <> endobj 170 0 obj <> endobj 169 0 obj <> endobj 2196 0 obj <> endobj 172 0 obj <> endobj 171 0 obj <> endobj 2197 0 obj <> endobj 174 0 obj <> endobj 173 0 obj <> endobj 25 0 obj <> endobj 2198 0 obj <> endobj 175 0 obj <> endobj 2199 0 obj <> endobj 176 0 obj <> endobj 2200 0 obj <> endobj 183 0 obj <> endobj 182 0 obj <> endobj 181 0 obj <> endobj 180 0 obj <> endobj 2201 0 obj <> endobj 184 0 obj <> endobj 2202 0 obj <> endobj 185 0 obj <> endobj 2203 0 obj <> endobj 186 0 obj <> endobj 2204 0 obj <> endobj 217 0 obj <> endobj 2205 0 obj <> endobj 187 0 obj <> endobj 2206 0 obj <> endobj 188 0 obj <> endobj 2207 0 obj <> endobj 189 0 obj <> endobj 2208 0 obj <> endobj 190 0 obj <> endobj 2209 0 obj <> endobj 191 0 obj <> endobj 2210 0 obj <> endobj 192 0 obj <> endobj 2211 0 obj <> endobj 193 0 obj <> endobj 2212 0 obj <> endobj 194 0 obj <> endobj 2213 0 obj <> endobj 195 0 obj <> endobj 2214 0 obj <> endobj 196 0 obj <> endobj 2215 0 obj <> endobj 197 0 obj <> endobj 2216 0 obj <> endobj 198 0 obj <> endobj 2217 0 obj <> endobj 199 0 obj <> endobj 2218 0 obj <> endobj 203 0 obj <> endobj 202 0 obj <> endobj 201 0 obj <> endobj 2219 0 obj <> endobj 206 0 obj <> endobj 205 0 obj <> endobj 204 0 obj <> endobj 2220 0 obj <> endobj 209 0 obj <> endobj 208 0 obj <> endobj 207 0 obj <> endobj 2221 0 obj <> endobj 212 0 obj <> endobj 211 0 obj <> endobj 210 0 obj <> endobj 2222 0 obj <> endobj 215 0 obj <> endobj 214 0 obj <> endobj 213 0 obj <> endobj 200 0 obj <> endobj 2223 0 obj <> endobj 216 0 obj <> endobj 2224 0 obj <> endobj 226 0 obj <> endobj 2225 0 obj <> endobj 225 0 obj <> endobj 2226 0 obj <> endobj 228 0 obj <> endobj 2227 0 obj <> endobj 227 0 obj <> endobj 2228 0 obj <> endobj 230 0 obj <> endobj 2229 0 obj <> endobj 229 0 obj <> endobj 2230 0 obj <> endobj 224 0 obj <> endobj 2231 0 obj <> endobj 233 0 obj <> endobj 2232 0 obj <> endobj 232 0 obj <> endobj 2233 0 obj <> endobj 235 0 obj <> endobj 2234 0 obj <> endobj 234 0 obj <> endobj 2235 0 obj <> endobj 237 0 obj <> endobj 2236 0 obj <> endobj 236 0 obj <> endobj 2237 0 obj <> endobj 231 0 obj <> endobj 2238 0 obj <> endobj 240 0 obj <> endobj 2239 0 obj <> endobj 239 0 obj <> endobj 2240 0 obj <> endobj 242 0 obj <> endobj 2241 0 obj <> endobj 241 0 obj <> endobj 2242 0 obj <> endobj 244 0 obj <> endobj 2243 0 obj <> endobj 243 0 obj <> endobj 2244 0 obj <> endobj 238 0 obj <> endobj 2245 0 obj <> endobj 247 0 obj <> endobj 2246 0 obj <> endobj 246 0 obj <> endobj 2247 0 obj <> endobj 249 0 obj <> endobj 2248 0 obj <> endobj 248 0 obj <> endobj 2249 0 obj <> endobj 251 0 obj <> endobj 2250 0 obj <> endobj 250 0 obj <> endobj 2251 0 obj <> endobj 245 0 obj <> endobj 2252 0 obj <> endobj 254 0 obj <> endobj 2253 0 obj <> endobj 253 0 obj <> endobj 2254 0 obj <> endobj 256 0 obj <> endobj 2255 0 obj <> endobj 255 0 obj <> endobj 2256 0 obj <> endobj 258 0 obj <> endobj 2257 0 obj <> endobj 257 0 obj <> endobj 2258 0 obj <> endobj 252 0 obj <> endobj 2259 0 obj <> endobj 223 0 obj <> endobj 2260 0 obj <> endobj 259 0 obj <> endobj 2261 0 obj <> endobj 260 0 obj <> endobj 2262 0 obj <> endobj 264 0 obj <> endobj 263 0 obj <> endobj 262 0 obj <> endobj 2263 0 obj <> endobj 267 0 obj <> endobj 266 0 obj <> endobj 265 0 obj <> endobj 261 0 obj <> endobj 2264 0 obj <> endobj 268 0 obj <> endobj 2265 0 obj <> endobj 269 0 obj <> endobj 2266 0 obj <> endobj 270 0 obj <> endobj 2267 0 obj <> endobj 274 0 obj <> endobj 273 0 obj <> endobj 272 0 obj <> endobj 2268 0 obj <> endobj 277 0 obj <> endobj 276 0 obj <> endobj 275 0 obj <> endobj 2269 0 obj <> endobj 280 0 obj <> endobj 279 0 obj <> endobj 278 0 obj <> endobj 2270 0 obj <> endobj 283 0 obj <> endobj 282 0 obj <> endobj 281 0 obj <> endobj 2271 0 obj <> endobj 286 0 obj <> endobj 285 0 obj <> endobj 284 0 obj <> endobj 2272 0 obj <> endobj 289 0 obj <> endobj 288 0 obj <> endobj 287 0 obj <> endobj 2273 0 obj <> endobj 292 0 obj <> endobj 291 0 obj <> endobj 290 0 obj <> endobj 2274 0 obj <> endobj 295 0 obj <> ] >> endobj 294 0 obj <> endobj 293 0 obj <> endobj 2275 0 obj <> endobj 301 0 obj <> endobj 300 0 obj <> endobj 299 0 obj <> endobj 2276 0 obj <> endobj 304 0 obj <> endobj 303 0 obj <> endobj 302 0 obj <> endobj 271 0 obj <> endobj 2277 0 obj <> endobj 305 0 obj <> endobj 2278 0 obj <> endobj 306 0 obj <> endobj 2279 0 obj <> endobj 2280 0 obj <> endobj 311 0 obj <> endobj 2281 0 obj <> endobj 310 0 obj <> endobj 309 0 obj <> endobj 308 0 obj <> endobj 2282 0 obj <> endobj 314 0 obj <> endobj 313 0 obj <> endobj 312 0 obj <> endobj 307 0 obj <> endobj 2283 0 obj <> endobj 315 0 obj <> endobj 2284 0 obj <> endobj 316 0 obj <> endobj 2285 0 obj <> endobj 2286 0 obj <> endobj 318 0 obj <> endobj 2287 0 obj <> endobj 317 0 obj <> endobj 2288 0 obj <> endobj 319 0 obj <> endobj 2289 0 obj <> endobj 320 0 obj <> endobj 2290 0 obj <> endobj 321 0 obj <> endobj 2291 0 obj <> endobj 322 0 obj <> endobj 2292 0 obj <> endobj 323 0 obj <> endobj 2293 0 obj <> endobj 327 0 obj <> endobj 2294 0 obj <> endobj 328 0 obj <> endobj 2295 0 obj <> endobj 332 0 obj <> endobj 331 0 obj <> endobj 330 0 obj <> endobj 2296 0 obj <> endobj 335 0 obj <> endobj 334 0 obj <> endobj 333 0 obj <> endobj 2297 0 obj <> endobj 338 0 obj <> endobj 337 0 obj <> endobj 336 0 obj <> endobj 2298 0 obj <> endobj 341 0 obj <> endobj 340 0 obj <> endobj 339 0 obj <> endobj 329 0 obj <> endobj 2299 0 obj <> endobj 342 0 obj <> endobj 2300 0 obj <> endobj 349 0 obj <> endobj 348 0 obj <> endobj 347 0 obj <> endobj 346 0 obj <> endobj 2301 0 obj <> endobj 350 0 obj <> endobj 2302 0 obj <> endobj 2303 0 obj <> endobj 355 0 obj <> endobj 2304 0 obj <> endobj 354 0 obj <> endobj 353 0 obj <> endobj 352 0 obj <> endobj 2305 0 obj <> endobj 358 0 obj <> endobj 357 0 obj <> endobj 356 0 obj <> endobj 2306 0 obj <> endobj 361 0 obj <> endobj 360 0 obj <> endobj 359 0 obj <> endobj 2307 0 obj <> endobj 364 0 obj <> endobj 363 0 obj <> endobj 362 0 obj <> endobj 2308 0 obj <> endobj 367 0 obj <> endobj 366 0 obj <> endobj 365 0 obj <> endobj 2309 0 obj <> endobj 370 0 obj <> endobj 369 0 obj <> endobj 368 0 obj <> endobj 2310 0 obj <> endobj 373 0 obj <> endobj 372 0 obj <> endobj 371 0 obj <> endobj 2311 0 obj <> endobj 376 0 obj <> endobj 375 0 obj <> endobj 374 0 obj <> endobj 2312 0 obj <> endobj 379 0 obj <> endobj 378 0 obj <> endobj 377 0 obj <> endobj 351 0 obj <> endobj 2313 0 obj <> endobj 380 0 obj <> endobj 2314 0 obj <> endobj 381 0 obj <> endobj 2315 0 obj <> endobj 382 0 obj <> endobj 2316 0 obj <> endobj 383 0 obj <> endobj 2317 0 obj <> endobj 384 0 obj <> endobj 2318 0 obj <> endobj 385 0 obj <> endobj 2319 0 obj <> endobj 386 0 obj <> endobj 2320 0 obj <> endobj 387 0 obj <> endobj 2321 0 obj <> endobj 388 0 obj <> endobj 2322 0 obj <> endobj 389 0 obj <> endobj 2323 0 obj <> endobj 390 0 obj <> endobj 2324 0 obj <> endobj 391 0 obj <> endobj 2325 0 obj <> endobj 392 0 obj <> endobj 2326 0 obj <> endobj 393 0 obj <> endobj 2327 0 obj <> endobj 394 0 obj <> endobj 2328 0 obj <> endobj 395 0 obj <> endobj 2329 0 obj <> endobj 396 0 obj <> endobj 2330 0 obj <> endobj 397 0 obj <> endobj 2331 0 obj <> endobj 398 0 obj <> endobj 2332 0 obj <> endobj 399 0 obj <> endobj 2333 0 obj <> endobj 400 0 obj <> endobj 2334 0 obj <> endobj 401 0 obj <> endobj 2335 0 obj <> endobj 402 0 obj <> endobj 2336 0 obj <> endobj 403 0 obj <> endobj 2337 0 obj <> endobj 404 0 obj <> endobj 2338 0 obj <> endobj 405 0 obj <> endobj 2339 0 obj <> endobj 409 0 obj <> endobj 408 0 obj <> endobj 407 0 obj <> endobj 406 0 obj <> endobj 2340 0 obj <> endobj 413 0 obj <> endobj 2341 0 obj <> endobj 417 0 obj <> endobj 416 0 obj <> endobj 415 0 obj <> endobj 2342 0 obj <> endobj 420 0 obj <> endobj 419 0 obj <> endobj 418 0 obj <> endobj 2343 0 obj <> endobj 423 0 obj <> endobj 422 0 obj <> endobj 421 0 obj <> endobj 2344 0 obj <> endobj 426 0 obj <> endobj 425 0 obj <> endobj 424 0 obj <> endobj 414 0 obj <> endobj 2345 0 obj <> endobj 427 0 obj <> endobj 2346 0 obj <> endobj 428 0 obj <> endobj 2347 0 obj <> endobj 435 0 obj <> endobj 434 0 obj <> endobj 433 0 obj <> endobj 432 0 obj <> endobj 2348 0 obj <> endobj 436 0 obj <> endobj 2349 0 obj <> endobj 437 0 obj <> endobj 2350 0 obj <> endobj 438 0 obj <> endobj 2351 0 obj <> endobj 439 0 obj <> endobj 2352 0 obj <> endobj 440 0 obj <> endobj 2353 0 obj <> endobj 441 0 obj <> endobj 2354 0 obj <> endobj 442 0 obj <> endobj 2355 0 obj <> endobj 443 0 obj <> endobj 2356 0 obj <> endobj 444 0 obj <> endobj 2357 0 obj <> endobj 445 0 obj <> endobj 2358 0 obj <> endobj 446 0 obj <> endobj 2359 0 obj <> endobj 447 0 obj <> endobj 2360 0 obj <> endobj 448 0 obj <> endobj 2361 0 obj <> endobj 449 0 obj <> endobj 2362 0 obj <> endobj 450 0 obj <> endobj 2363 0 obj <> endobj 451 0 obj <> endobj 2364 0 obj <> endobj 452 0 obj <> endobj 2365 0 obj <> endobj 453 0 obj <> endobj 2366 0 obj <> endobj 454 0 obj <> endobj 2367 0 obj <> endobj 455 0 obj <> endobj 2368 0 obj <> endobj 459 0 obj <> endobj 2369 0 obj <> endobj 460 0 obj <> endobj 2370 0 obj <> endobj 461 0 obj <> endobj 2371 0 obj <> endobj 462 0 obj <> endobj 2372 0 obj <> endobj 466 0 obj <> endobj 465 0 obj <> endobj 464 0 obj <> endobj 2373 0 obj <> endobj 469 0 obj <> endobj 468 0 obj <> endobj 467 0 obj <> endobj 2374 0 obj <> endobj 472 0 obj <> endobj 471 0 obj <> endobj 470 0 obj <> endobj 463 0 obj <> endobj 2375 0 obj <> endobj 473 0 obj <> endobj 2376 0 obj <> endobj 477 0 obj <> endobj 476 0 obj <> endobj 475 0 obj <> endobj 2377 0 obj <> endobj 480 0 obj <> endobj 479 0 obj <> endobj 478 0 obj <> endobj 2378 0 obj <> endobj 483 0 obj <> endobj 482 0 obj <> endobj 481 0 obj <> endobj 474 0 obj <> endobj 2379 0 obj <> endobj 484 0 obj <> endobj 2380 0 obj <> endobj 485 0 obj <> endobj 2381 0 obj <> endobj 486 0 obj <> endobj 2382 0 obj <> endobj 487 0 obj <> endobj 2383 0 obj <> endobj 491 0 obj <> endobj 490 0 obj <> endobj 489 0 obj <> endobj 2384 0 obj <> endobj 494 0 obj <> endobj 493 0 obj <> endobj 492 0 obj <> endobj 2385 0 obj <> endobj 497 0 obj <> endobj 496 0 obj <> endobj 495 0 obj <> endobj 2386 0 obj <> endobj 500 0 obj <> endobj 499 0 obj <> endobj 498 0 obj <> endobj 2387 0 obj <> endobj 503 0 obj <> endobj 502 0 obj <> endobj 501 0 obj <> endobj 2388 0 obj <> endobj 506 0 obj <> endobj 505 0 obj <> endobj 504 0 obj <> endobj 2389 0 obj <> endobj 509 0 obj <> endobj 508 0 obj <> endobj 507 0 obj <> endobj 2390 0 obj <> endobj 515 0 obj <> endobj 514 0 obj <> endobj 513 0 obj <> endobj 2391 0 obj <> endobj 518 0 obj <> endobj 517 0 obj <> endobj 516 0 obj <> endobj 488 0 obj <> endobj 2392 0 obj <> endobj 519 0 obj <> endobj 2393 0 obj <> endobj 520 0 obj <> endobj 2394 0 obj <> endobj 524 0 obj <> endobj 523 0 obj <> endobj 522 0 obj <> endobj 2395 0 obj <> endobj 527 0 obj <> endobj 526 0 obj <> endobj 525 0 obj <> endobj 521 0 obj <> endobj 2396 0 obj <> endobj 528 0 obj <> endobj 2397 0 obj <> endobj 529 0 obj <> endobj 2398 0 obj <> endobj 533 0 obj <> endobj 532 0 obj <> endobj 531 0 obj <> endobj 2399 0 obj <> endobj 536 0 obj <> endobj 535 0 obj <> endobj 534 0 obj <> endobj 530 0 obj <> endobj 2400 0 obj <> endobj 537 0 obj <> endobj 2401 0 obj <> endobj 538 0 obj <> endobj 2402 0 obj <> endobj 539 0 obj <> endobj 2403 0 obj <> endobj 543 0 obj <> endobj 2404 0 obj <> endobj 544 0 obj <> endobj 2405 0 obj <> endobj 545 0 obj <> endobj 2406 0 obj <> endobj 546 0 obj <> endobj 2407 0 obj <> endobj 550 0 obj <> endobj 549 0 obj <> endobj 548 0 obj <> endobj 2408 0 obj <> endobj 553 0 obj <> endobj 2409 0 obj <> endobj 557 0 obj <> endobj 556 0 obj <> endobj 555 0 obj <> endobj 2410 0 obj <> endobj 560 0 obj <> endobj 559 0 obj <> endobj 558 0 obj <> endobj 2411 0 obj <> endobj 563 0 obj <> endobj 562 0 obj <> endobj 561 0 obj <> endobj 554 0 obj <> endobj 552 0 obj <> endobj 551 0 obj <> endobj 547 0 obj <> endobj 2412 0 obj <> endobj 564 0 obj <> endobj 2413 0 obj <> endobj 565 0 obj <> endobj 2414 0 obj <> endobj 566 0 obj <> endobj 2415 0 obj <> endobj 567 0 obj <> endobj 2416 0 obj <> endobj 568 0 obj <> endobj 2417 0 obj <> endobj 569 0 obj <> endobj 2418 0 obj <> endobj 570 0 obj <> endobj 2419 0 obj <> endobj 571 0 obj <> endobj 2420 0 obj <> endobj 572 0 obj <> endobj 2421 0 obj <> endobj 573 0 obj <> endobj 2422 0 obj <> endobj 574 0 obj <> endobj 2423 0 obj <> endobj 575 0 obj <> endobj 2424 0 obj <> endobj 576 0 obj <> endobj 2425 0 obj <> endobj 577 0 obj <> endobj 2426 0 obj <> endobj 578 0 obj <> endobj 2427 0 obj <> endobj 579 0 obj <> endobj 2428 0 obj <> endobj 580 0 obj <> endobj 2429 0 obj <> endobj 581 0 obj <> endobj 2430 0 obj <> endobj 582 0 obj <> endobj 2431 0 obj <> endobj 583 0 obj <> endobj 2432 0 obj <> endobj 584 0 obj <> endobj 2433 0 obj <> endobj 585 0 obj <> endobj 2434 0 obj <> endobj 586 0 obj <> endobj 2435 0 obj <> endobj 590 0 obj <> endobj 2436 0 obj <> endobj 591 0 obj <> endobj 2437 0 obj <> endobj 592 0 obj <> endobj 2438 0 obj <> endobj 593 0 obj <> endobj 2439 0 obj <> endobj 594 0 obj <> endobj 2440 0 obj <> endobj 595 0 obj <> endobj 2441 0 obj <> endobj 596 0 obj <> endobj 2442 0 obj <> endobj 597 0 obj <> endobj 2443 0 obj <> endobj 598 0 obj <> endobj 2444 0 obj <> endobj 599 0 obj <> endobj 2445 0 obj <> endobj 600 0 obj <> endobj 2446 0 obj <> endobj 601 0 obj <> endobj 2447 0 obj <> endobj 602 0 obj <> endobj 2448 0 obj <> endobj 603 0 obj <> endobj 2449 0 obj <> endobj 604 0 obj <> endobj 2450 0 obj <> endobj 605 0 obj <> ] >> endobj 2451 0 obj <> endobj 609 0 obj <> endobj 2452 0 obj <> endobj 610 0 obj <> endobj 2453 0 obj <> endobj 611 0 obj <> endobj 2454 0 obj <> endobj 612 0 obj <> endobj 2455 0 obj <> endobj 613 0 obj <> endobj 2456 0 obj <> endobj 614 0 obj <> endobj 2457 0 obj <> endobj 615 0 obj <> endobj 2458 0 obj <> endobj 616 0 obj <> endobj 2459 0 obj <> endobj 617 0 obj <> endobj 2460 0 obj <> endobj 618 0 obj <> endobj 2461 0 obj <> endobj 619 0 obj <> endobj 2462 0 obj <> endobj 620 0 obj <> endobj 2463 0 obj <> endobj 621 0 obj <> endobj 2464 0 obj <> endobj 622 0 obj <> endobj 2465 0 obj <> endobj 623 0 obj <> endobj 2466 0 obj <> endobj 624 0 obj <> endobj 2467 0 obj <> endobj 625 0 obj <> endobj 2468 0 obj <> endobj 626 0 obj <> endobj 2469 0 obj <> endobj 627 0 obj <> endobj 2470 0 obj <> endobj 628 0 obj <> endobj 2471 0 obj <> endobj 629 0 obj <> endobj 2472 0 obj <> endobj 630 0 obj <> endobj 2473 0 obj <> endobj 631 0 obj <> endobj 2474 0 obj <> endobj 632 0 obj <> endobj 2475 0 obj <> endobj 633 0 obj <> endobj 2476 0 obj <> endobj 634 0 obj <> endobj 2477 0 obj <> endobj 635 0 obj <> endobj 2478 0 obj <> endobj 639 0 obj <> endobj 2479 0 obj <> endobj 640 0 obj <> endobj 2480 0 obj <> endobj 641 0 obj <> endobj 2481 0 obj <> endobj 642 0 obj <> endobj 2482 0 obj <> endobj 643 0 obj <> endobj 2483 0 obj <> endobj 644 0 obj <> endobj 2484 0 obj <> endobj 645 0 obj <> endobj 2485 0 obj <> endobj 646 0 obj <> endobj 2486 0 obj <> endobj 647 0 obj <> endobj 2487 0 obj <> endobj 648 0 obj <> endobj 2488 0 obj <> endobj 649 0 obj <> endobj 2489 0 obj <> endobj 653 0 obj <> endobj 652 0 obj <> endobj 651 0 obj <> endobj 2490 0 obj <> endobj 656 0 obj <> endobj 655 0 obj <> endobj 654 0 obj <> endobj 650 0 obj <> endobj 2491 0 obj <> endobj 657 0 obj <> endobj 2492 0 obj <> endobj 658 0 obj <> endobj 2493 0 obj <> endobj 659 0 obj <> endobj 2494 0 obj <> endobj 660 0 obj <> endobj 2495 0 obj <> endobj 664 0 obj <> endobj 663 0 obj <> endobj 662 0 obj <> endobj 2496 0 obj <> endobj 667 0 obj <> endobj 666 0 obj <> endobj 665 0 obj <> endobj 661 0 obj <> endobj 2497 0 obj <> endobj 668 0 obj <> endobj 2498 0 obj <> endobj 672 0 obj <> endobj 2499 0 obj <> endobj 673 0 obj <> endobj 2500 0 obj <> endobj 674 0 obj <> endobj 2501 0 obj <> endobj 675 0 obj <> endobj 2502 0 obj <> endobj 676 0 obj <> endobj 2503 0 obj <> endobj 677 0 obj <> endobj 2504 0 obj <> endobj 681 0 obj <> endobj 680 0 obj <> endobj 679 0 obj <> endobj 2505 0 obj <> endobj 684 0 obj <> endobj 683 0 obj <> endobj 682 0 obj <> endobj 678 0 obj <> endobj 2506 0 obj <> endobj 685 0 obj <> endobj 2507 0 obj <> endobj 686 0 obj <> endobj 2508 0 obj <> endobj 687 0 obj <> endobj 2509 0 obj <> endobj 688 0 obj <> endobj 2510 0 obj <> endobj 692 0 obj <> endobj 691 0 obj <> endobj 690 0 obj <> endobj 2511 0 obj <> endobj 695 0 obj <> endobj 694 0 obj <> endobj 693 0 obj <> endobj 2512 0 obj <> endobj 698 0 obj <> endobj 2513 0 obj <> endobj 705 0 obj <> endobj 704 0 obj <> endobj 703 0 obj <> endobj 2514 0 obj <> endobj 708 0 obj <> endobj 707 0 obj <> endobj 706 0 obj <> endobj 2515 0 obj <> endobj 711 0 obj <> endobj 710 0 obj <> endobj 709 0 obj <> endobj 702 0 obj <> endobj 697 0 obj <> endobj 696 0 obj <> endobj 689 0 obj <> endobj 2516 0 obj <> endobj 712 0 obj <> endobj 2517 0 obj <> endobj 713 0 obj <> endobj 2518 0 obj <> endobj 714 0 obj <> endobj 2519 0 obj <> endobj 715 0 obj <> endobj 2520 0 obj <> endobj 716 0 obj <> endobj 2521 0 obj <> endobj 717 0 obj <> endobj 2522 0 obj <> endobj 718 0 obj <> endobj 2523 0 obj <> endobj 719 0 obj <> endobj 2524 0 obj <> endobj 720 0 obj <> endobj 2525 0 obj <> endobj 721 0 obj <> endobj 2526 0 obj <> endobj 722 0 obj <> endobj 2527 0 obj <> endobj 723 0 obj <> endobj 2528 0 obj <> endobj 724 0 obj <> endobj 2529 0 obj <> endobj 725 0 obj <> endobj 2530 0 obj <> endobj 726 0 obj <> endobj 2531 0 obj <> endobj 730 0 obj <> endobj 729 0 obj <> endobj 728 0 obj <> endobj 2532 0 obj <> endobj 733 0 obj <> endobj 732 0 obj <> endobj 731 0 obj <> endobj 2533 0 obj <> endobj 736 0 obj <> endobj 735 0 obj <> endobj 734 0 obj <> endobj 2534 0 obj <> endobj 739 0 obj <> endobj 738 0 obj <> endobj 737 0 obj <> endobj 2535 0 obj <> endobj 742 0 obj <> endobj 741 0 obj <> endobj 740 0 obj <> endobj 727 0 obj <> endobj 2536 0 obj <> endobj 743 0 obj <> endobj 2537 0 obj <> endobj 744 0 obj <> endobj 2538 0 obj <> endobj 745 0 obj <> endobj 2539 0 obj <> endobj 746 0 obj <> endobj 2540 0 obj <> endobj 747 0 obj <> endobj 2541 0 obj <> endobj 748 0 obj <> endobj 2542 0 obj <> endobj 749 0 obj <> endobj 2543 0 obj <> endobj 750 0 obj <> endobj 2544 0 obj <> endobj 751 0 obj <> endobj 2545 0 obj <> endobj 752 0 obj <> endobj 2546 0 obj <> endobj 753 0 obj <> endobj 2547 0 obj <> endobj 754 0 obj <> endobj 2548 0 obj <> endobj 755 0 obj <> endobj 2549 0 obj <> endobj 756 0 obj <> endobj 2550 0 obj <> endobj 760 0 obj <> endobj 2551 0 obj <> endobj 761 0 obj <> endobj 2552 0 obj <> endobj 762 0 obj <> endobj 2553 0 obj <> endobj 763 0 obj <> endobj 2554 0 obj <> endobj 764 0 obj <> endobj 2555 0 obj <> endobj 765 0 obj <> endobj 2556 0 obj <> endobj 766 0 obj <> endobj 2557 0 obj <> endobj 767 0 obj <> endobj 2558 0 obj <> endobj 768 0 obj <> endobj 2559 0 obj <> endobj 769 0 obj <> endobj 2560 0 obj <> endobj 770 0 obj <> endobj 2561 0 obj <> endobj 771 0 obj <> endobj 2562 0 obj <> endobj 775 0 obj <> endobj 774 0 obj <> endobj 773 0 obj <> endobj 2563 0 obj <> endobj 778 0 obj <> endobj 777 0 obj <> endobj 776 0 obj <> endobj 2564 0 obj <> endobj 781 0 obj <> endobj 780 0 obj <> endobj 779 0 obj <> endobj 772 0 obj <> endobj 2565 0 obj <> endobj 782 0 obj <> endobj 2566 0 obj <> endobj 783 0 obj <> endobj 2567 0 obj <> endobj 784 0 obj <> endobj 2568 0 obj <> endobj 785 0 obj <> endobj 2569 0 obj <> endobj 786 0 obj <> endobj 2570 0 obj <> endobj 790 0 obj <> endobj 2571 0 obj <> endobj 791 0 obj <> endobj 2572 0 obj <> endobj 792 0 obj <> endobj 2573 0 obj <> endobj 793 0 obj <> endobj 2574 0 obj <> endobj 797 0 obj <> endobj 796 0 obj <> endobj 795 0 obj <> endobj 2575 0 obj <> endobj 800 0 obj <> endobj 799 0 obj <> endobj 798 0 obj <> endobj 794 0 obj <> endobj 2576 0 obj <> endobj 801 0 obj <> endobj 2577 0 obj <> endobj 805 0 obj <> endobj 804 0 obj <> endobj 803 0 obj <> endobj 2578 0 obj <> endobj 808 0 obj <> endobj 807 0 obj <> endobj 806 0 obj <> endobj 2579 0 obj <> endobj 811 0 obj <> endobj 810 0 obj <> endobj 809 0 obj <> endobj 2580 0 obj <> endobj 814 0 obj <> endobj 813 0 obj <> endobj 812 0 obj <> endobj 802 0 obj <> endobj 2581 0 obj <> endobj 815 0 obj <> endobj 2582 0 obj <> endobj 816 0 obj <> endobj 2583 0 obj <> endobj 817 0 obj <> endobj 2584 0 obj <> endobj 818 0 obj <> endobj 2585 0 obj <> endobj 819 0 obj <> endobj 2586 0 obj <> endobj 820 0 obj <> endobj 2587 0 obj <> endobj 824 0 obj <> endobj 2588 0 obj <> endobj 825 0 obj <> endobj 2589 0 obj <> endobj 826 0 obj <> endobj 2590 0 obj <> endobj 827 0 obj <> endobj 2591 0 obj <> endobj 828 0 obj <> endobj 2592 0 obj <> endobj 832 0 obj <> endobj 831 0 obj <> endobj 830 0 obj <> endobj 2593 0 obj <> endobj 835 0 obj <> endobj 834 0 obj <> endobj 833 0 obj <> endobj 2594 0 obj <> endobj 838 0 obj <> endobj 2595 0 obj <> endobj 842 0 obj <> endobj 841 0 obj <> endobj 840 0 obj <> endobj 2596 0 obj <> endobj 845 0 obj <> endobj 844 0 obj <> endobj 843 0 obj <> endobj 839 0 obj <> endobj 837 0 obj <> endobj 836 0 obj <> endobj 829 0 obj <> endobj 2597 0 obj <> endobj 846 0 obj <> endobj 2598 0 obj <> endobj 847 0 obj <> endobj 2599 0 obj <> endobj 848 0 obj <> endobj 2600 0 obj <> endobj 849 0 obj <> endobj 2601 0 obj <> endobj 850 0 obj <> endobj 2602 0 obj <> endobj 851 0 obj <> endobj 2603 0 obj <> endobj 852 0 obj <> endobj 2604 0 obj <> endobj 856 0 obj <> endobj 2605 0 obj <> endobj 857 0 obj <> endobj 2606 0 obj <> endobj 858 0 obj <> endobj 2607 0 obj <> endobj 865 0 obj <> endobj 2608 0 obj <> endobj 867 0 obj <> endobj 2609 0 obj <> endobj 859 0 obj <> endobj 2610 0 obj <> endobj 860 0 obj <> endobj 2611 0 obj <> endobj 861 0 obj <> endobj 2612 0 obj <> endobj 862 0 obj <> endobj 2613 0 obj <> endobj 863 0 obj <> endobj 2614 0 obj <> endobj 864 0 obj <> endobj 2615 0 obj <> endobj 874 0 obj <> endobj 2616 0 obj <> endobj 878 0 obj <> endobj 877 0 obj <> endobj 876 0 obj <> endobj 2617 0 obj <> endobj 881 0 obj <> endobj 880 0 obj <> endobj 879 0 obj <> endobj 2618 0 obj <> endobj 884 0 obj <> endobj 883 0 obj <> endobj 882 0 obj <> endobj 2619 0 obj <> endobj 887 0 obj <> endobj 886 0 obj <> endobj 885 0 obj <> endobj 875 0 obj <> endobj 2620 0 obj <> endobj 888 0 obj <> endobj 2621 0 obj <> endobj 889 0 obj <> endobj 2622 0 obj <> endobj 893 0 obj <> endobj 892 0 obj <> endobj 891 0 obj <> endobj 2623 0 obj <> endobj 896 0 obj <> endobj 895 0 obj <> endobj 894 0 obj <> endobj 2624 0 obj <> endobj 899 0 obj <> endobj 898 0 obj <> endobj 897 0 obj <> endobj 890 0 obj <> endobj 2625 0 obj <> endobj 900 0 obj <> endobj 2626 0 obj <> endobj 901 0 obj <> endobj 2627 0 obj <> endobj 905 0 obj <> endobj 904 0 obj <> endobj 903 0 obj <> endobj 2628 0 obj <> endobj 908 0 obj <> endobj 907 0 obj <> endobj 906 0 obj <> endobj 2629 0 obj <> endobj 911 0 obj <> endobj 910 0 obj <> endobj 909 0 obj <> endobj 902 0 obj <> endobj 2630 0 obj <> endobj 912 0 obj <> endobj 2631 0 obj <> endobj 913 0 obj <> endobj 2632 0 obj <> endobj 914 0 obj <> endobj 2633 0 obj <> endobj 915 0 obj <> endobj 2634 0 obj <> endobj 916 0 obj <> endobj 2635 0 obj <> endobj 917 0 obj <> endobj 2636 0 obj <> endobj 924 0 obj <> endobj 923 0 obj <> endobj 922 0 obj <> endobj 921 0 obj <> endobj 2637 0 obj <> endobj 925 0 obj <> endobj 2638 0 obj <> endobj 926 0 obj <> endobj 2639 0 obj <> endobj 927 0 obj <> endobj 2640 0 obj <> endobj 928 0 obj <> endobj 2641 0 obj <> endobj 929 0 obj <> endobj 2642 0 obj <> endobj 930 0 obj <> endobj 2643 0 obj <> endobj 931 0 obj <> endobj 2644 0 obj <> endobj 932 0 obj <> endobj 2645 0 obj <> endobj 933 0 obj <> endobj 2646 0 obj <> endobj 934 0 obj <> endobj 2647 0 obj <> endobj 935 0 obj <> endobj 2648 0 obj <> endobj 936 0 obj <> endobj 2649 0 obj <> endobj 937 0 obj <> endobj 2650 0 obj <> endobj 938 0 obj <> endobj 2651 0 obj <> endobj 939 0 obj <> endobj 2652 0 obj <> endobj 940 0 obj <> endobj 2653 0 obj <> endobj 941 0 obj <> endobj 2654 0 obj <> endobj 942 0 obj <> endobj 2655 0 obj <> endobj 943 0 obj <> endobj 2656 0 obj <> endobj 944 0 obj <> endobj 2657 0 obj <> endobj 945 0 obj <> endobj 2658 0 obj <> endobj 946 0 obj <> endobj 2659 0 obj <> endobj 947 0 obj <> endobj 2660 0 obj <> endobj 948 0 obj <> endobj 2661 0 obj <> endobj 949 0 obj <> endobj 2662 0 obj <> endobj 950 0 obj <> endobj 2663 0 obj <> endobj 951 0 obj <> endobj 2664 0 obj <> endobj 952 0 obj <> endobj 2665 0 obj <> endobj 953 0 obj <> endobj 2666 0 obj <> endobj 954 0 obj <> endobj 2667 0 obj <> endobj 955 0 obj <> endobj 2668 0 obj <> endobj 956 0 obj <> endobj 2669 0 obj <> endobj 957 0 obj <> endobj 2670 0 obj <> endobj 958 0 obj <> endobj 2671 0 obj <> endobj 959 0 obj <> endobj 2672 0 obj <> endobj 960 0 obj <> endobj 2673 0 obj <> endobj 961 0 obj <> endobj 2674 0 obj <> endobj 965 0 obj <> endobj 2675 0 obj <> endobj 966 0 obj <> endobj 2676 0 obj <> endobj 970 0 obj <> endobj 969 0 obj <> endobj 968 0 obj <> endobj 2677 0 obj <> endobj 973 0 obj <> endobj 972 0 obj <> endobj 971 0 obj <> endobj 2678 0 obj <> endobj 976 0 obj <> endobj 975 0 obj <> endobj 974 0 obj <> endobj 2679 0 obj <> endobj 979 0 obj <> endobj 978 0 obj <> endobj 977 0 obj <> endobj 2680 0 obj <> endobj 982 0 obj <> endobj 981 0 obj <> endobj 980 0 obj <> endobj 2681 0 obj <> endobj 985 0 obj <> endobj 984 0 obj <> endobj 983 0 obj <> endobj 2682 0 obj <> endobj 988 0 obj <> endobj 987 0 obj <> endobj 986 0 obj <> endobj 2683 0 obj <> endobj 991 0 obj <> endobj 990 0 obj <> endobj 989 0 obj <> endobj 967 0 obj <> endobj 2684 0 obj <> endobj 992 0 obj <> endobj 2685 0 obj <> endobj 993 0 obj <> endobj 2686 0 obj <> endobj 994 0 obj <> endobj 2687 0 obj <> endobj 995 0 obj <> endobj 2688 0 obj <> endobj 996 0 obj <> endobj 2689 0 obj <> endobj 997 0 obj <> endobj 2690 0 obj <> endobj 998 0 obj <> endobj 2691 0 obj <> endobj 999 0 obj <> endobj 2692 0 obj <> endobj 1000 0 obj <> endobj 2693 0 obj <> endobj 1001 0 obj <> endobj 2694 0 obj <> endobj 1002 0 obj <> endobj 2695 0 obj <> endobj 1003 0 obj <> endobj 2696 0 obj <> endobj 1004 0 obj <> endobj 2697 0 obj <> endobj 1005 0 obj <> endobj 2698 0 obj <> endobj 1006 0 obj <> endobj 2699 0 obj <> endobj 1007 0 obj <> endobj 2700 0 obj <> endobj 1008 0 obj <> ] >> endobj 2701 0 obj <> endobj 1012 0 obj <> endobj 2702 0 obj <> endobj 1013 0 obj <> endobj 2703 0 obj <> endobj 1014 0 obj <> endobj 2704 0 obj <> endobj 1015 0 obj <> endobj 2705 0 obj <> endobj 1016 0 obj <> endobj 2706 0 obj <> endobj 1017 0 obj <> endobj 2707 0 obj <> endobj 1018 0 obj <> endobj 2708 0 obj <> endobj 1019 0 obj <> endobj 2709 0 obj <> endobj 1020 0 obj <> endobj 2710 0 obj <> endobj 1021 0 obj <> endobj 2711 0 obj <> endobj 1022 0 obj <> endobj 2712 0 obj <> endobj 1023 0 obj <> endobj 2713 0 obj <> endobj 1024 0 obj <> endobj 2714 0 obj <> endobj 1025 0 obj <> endobj 2715 0 obj <> endobj 1026 0 obj <> endobj 2716 0 obj <> endobj 1027 0 obj <> endobj 2717 0 obj <> endobj 1028 0 obj <> endobj 2718 0 obj <> endobj 1029 0 obj <> endobj 2719 0 obj <> endobj 1030 0 obj <> endobj 2720 0 obj <> endobj 1031 0 obj <> endobj 2721 0 obj <> endobj 1032 0 obj <> endobj 2722 0 obj <> endobj 1033 0 obj <> endobj 2723 0 obj <> endobj 1034 0 obj <> endobj 2724 0 obj <> endobj 1035 0 obj <> endobj 2725 0 obj <> endobj 1036 0 obj <> endobj 2726 0 obj <> endobj 1037 0 obj <> endobj 2727 0 obj <> endobj 1038 0 obj <> endobj 2728 0 obj <> endobj 1039 0 obj <> endobj 2729 0 obj <> endobj 1040 0 obj <> endobj 2730 0 obj <> endobj 1041 0 obj <> endobj 2731 0 obj <> endobj 1042 0 obj <> endobj 2732 0 obj <> endobj 1043 0 obj <> endobj 2733 0 obj <> endobj 1044 0 obj <> endobj 2734 0 obj <> endobj 1045 0 obj <> endobj 2735 0 obj <> endobj 1046 0 obj <> endobj 2736 0 obj <> endobj 1047 0 obj <> endobj 2737 0 obj <> endobj 1048 0 obj <> endobj 2738 0 obj <> endobj 1049 0 obj <> endobj 2739 0 obj <> endobj 1050 0 obj <> endobj 2740 0 obj <> endobj 1051 0 obj <> endobj 2741 0 obj <> endobj 1052 0 obj <> endobj 2742 0 obj <> endobj 1053 0 obj <> endobj 2743 0 obj <> endobj 1054 0 obj <> endobj 2744 0 obj <> endobj 1055 0 obj <> endobj 2745 0 obj <> endobj 1056 0 obj <> endobj 2746 0 obj <> endobj 1057 0 obj <> endobj 2747 0 obj <> endobj 1058 0 obj <> endobj 2748 0 obj <> endobj 1059 0 obj <> endobj 2749 0 obj <> endobj 1063 0 obj <> endobj 2750 0 obj <> endobj 1064 0 obj <> endobj 2751 0 obj <> endobj 1065 0 obj <> endobj 2752 0 obj <> endobj 1066 0 obj <> endobj 2753 0 obj <> endobj 1067 0 obj <> endobj 2754 0 obj <> endobj 1068 0 obj <> endobj 2755 0 obj <> endobj 1069 0 obj <> endobj 2756 0 obj <> endobj 1070 0 obj <> endobj 2757 0 obj <> endobj 1071 0 obj <> endobj 2758 0 obj <> endobj 1072 0 obj <> endobj 2759 0 obj <> endobj 1073 0 obj <> endobj 2760 0 obj <> endobj 1074 0 obj <> endobj 2761 0 obj <> endobj 1075 0 obj <> endobj 2762 0 obj <> endobj 1076 0 obj <> endobj 2763 0 obj <> endobj 1077 0 obj <> endobj 2764 0 obj <> endobj 1078 0 obj <> endobj 2765 0 obj <> endobj 1079 0 obj <> endobj 2766 0 obj <> endobj 1080 0 obj <> endobj 2767 0 obj <> endobj 1081 0 obj <> endobj 2768 0 obj <> endobj 1082 0 obj <> endobj 2769 0 obj <> endobj 1083 0 obj <> endobj 2770 0 obj <> endobj 1084 0 obj <> endobj 2771 0 obj <> endobj 1085 0 obj <> endobj 2772 0 obj <> endobj 1086 0 obj <> endobj 2773 0 obj <> endobj 1087 0 obj <> endobj 2774 0 obj <> endobj 1088 0 obj <> endobj 2775 0 obj <> endobj 1089 0 obj <> endobj 2776 0 obj <> endobj 1090 0 obj <> endobj 2777 0 obj <> endobj 1091 0 obj <> endobj 2778 0 obj <> endobj 1092 0 obj <> endobj 2779 0 obj <> endobj 1093 0 obj <> endobj 2780 0 obj <> endobj 1094 0 obj <> endobj 2781 0 obj <> endobj 1095 0 obj <> endobj 2782 0 obj <> endobj 1096 0 obj <> endobj 2783 0 obj <> endobj 1097 0 obj <> endobj 2784 0 obj <> endobj 1098 0 obj <> endobj 2785 0 obj <> endobj 1099 0 obj <> endobj 2786 0 obj <> endobj 1100 0 obj <> endobj 2787 0 obj <> endobj 1101 0 obj <> endobj 2788 0 obj <> endobj 1102 0 obj <> endobj 2789 0 obj <> endobj 1103 0 obj <> endobj 2790 0 obj <> endobj 1104 0 obj <> endobj 2791 0 obj <> endobj 1105 0 obj <> endobj 2792 0 obj <> endobj 1106 0 obj <> endobj 2793 0 obj <> endobj 1107 0 obj <> endobj 2794 0 obj <> endobj 1108 0 obj <> endobj 2795 0 obj <> endobj 1109 0 obj <> endobj 2796 0 obj <> endobj 1110 0 obj <> endobj 2797 0 obj <> endobj 1111 0 obj <> endobj 2798 0 obj <> endobj 1112 0 obj <> endobj 2799 0 obj <> endobj 1113 0 obj <> endobj 2800 0 obj <> endobj 1114 0 obj <> endobj 2801 0 obj <> endobj 1115 0 obj <> endobj 2802 0 obj <> endobj 1119 0 obj <> endobj 2803 0 obj <> endobj 1120 0 obj <> endobj 2804 0 obj <> endobj 1121 0 obj <> endobj 2805 0 obj <> endobj 1122 0 obj <> endobj 2806 0 obj <> endobj 1123 0 obj <> endobj 2807 0 obj <> endobj 1124 0 obj <> endobj 2808 0 obj <> endobj 1125 0 obj <> endobj 2809 0 obj <> endobj 1126 0 obj <> endobj 2810 0 obj <> endobj 1127 0 obj <> endobj 2811 0 obj <> endobj 1128 0 obj <> endobj 2812 0 obj <> endobj 1129 0 obj <> endobj 2813 0 obj <> endobj 1130 0 obj <> endobj 2814 0 obj <> endobj 1131 0 obj <> endobj 2815 0 obj <> endobj 1132 0 obj <> endobj 2816 0 obj <> endobj 1133 0 obj <> endobj 2817 0 obj <> endobj 1134 0 obj <> endobj 2818 0 obj <> endobj 1135 0 obj <> endobj 2819 0 obj <> endobj 1136 0 obj <> endobj 2820 0 obj <> endobj 1137 0 obj <> endobj 2821 0 obj <> endobj 1138 0 obj <> endobj 2822 0 obj <> endobj 1139 0 obj <> endobj 2823 0 obj <> endobj 1140 0 obj <> endobj 2824 0 obj <> endobj 1141 0 obj <> endobj 2825 0 obj <> endobj 1142 0 obj <> endobj 2826 0 obj <> endobj 1143 0 obj <> endobj 2827 0 obj <> endobj 1144 0 obj <> endobj 2828 0 obj <> endobj 1145 0 obj <> endobj 2829 0 obj <> endobj 1146 0 obj <> endobj 2830 0 obj <> endobj 1147 0 obj <> endobj 2831 0 obj <> endobj 1148 0 obj <> endobj 2832 0 obj <> endobj 1149 0 obj <> endobj 2833 0 obj <> endobj 1150 0 obj <> endobj 2834 0 obj <> endobj 1151 0 obj <> endobj 2835 0 obj <> endobj 1152 0 obj <> endobj 2836 0 obj <> endobj 1153 0 obj <> endobj 2837 0 obj <> endobj 1154 0 obj <> endobj 2838 0 obj <> endobj 1155 0 obj <> endobj 2839 0 obj <> endobj 1156 0 obj <> endobj 2840 0 obj <> endobj 1157 0 obj <> endobj 2841 0 obj <> endobj 1158 0 obj <> endobj 2842 0 obj <> endobj 1159 0 obj <> endobj 2843 0 obj <> endobj 1160 0 obj <> endobj 2844 0 obj <> endobj 1161 0 obj <> endobj 2845 0 obj <> endobj 1162 0 obj <> endobj 2846 0 obj <> endobj 1163 0 obj <> endobj 2847 0 obj <> endobj 1164 0 obj <> endobj 2848 0 obj <> endobj 1165 0 obj <> endobj 2849 0 obj <> endobj 1166 0 obj <> endobj 2850 0 obj <> endobj 1167 0 obj <> endobj 2851 0 obj <> endobj 1168 0 obj <> endobj 2852 0 obj <> endobj 1169 0 obj <> endobj 2853 0 obj <> endobj 1170 0 obj <> endobj 2854 0 obj <> endobj 1171 0 obj <> endobj 2855 0 obj <> endobj 1175 0 obj <> endobj 2856 0 obj <> endobj 1179 0 obj <> endobj 1178 0 obj <> endobj 1177 0 obj <> endobj 2857 0 obj <> endobj 1182 0 obj <> endobj 1181 0 obj <> endobj 1180 0 obj <> endobj 2858 0 obj <> endobj 1185 0 obj <> endobj 1184 0 obj <> endobj 1183 0 obj <> endobj 2859 0 obj <> endobj 1188 0 obj <> endobj 1187 0 obj <> endobj 1186 0 obj <> endobj 1176 0 obj <> endobj 2860 0 obj <> endobj 1189 0 obj <> endobj 2861 0 obj <> endobj 1190 0 obj <> endobj 2862 0 obj <> endobj 1191 0 obj <> endobj 2863 0 obj <> endobj 1192 0 obj <> endobj 2864 0 obj <> endobj 1193 0 obj <> endobj 2865 0 obj <> endobj 1194 0 obj <> endobj 2866 0 obj <> endobj 1195 0 obj <> endobj 2867 0 obj <> endobj 1196 0 obj <> endobj 2868 0 obj <> endobj 1197 0 obj <> endobj 2869 0 obj <> endobj 1198 0 obj <> endobj 2870 0 obj <> endobj 1199 0 obj <> endobj 2871 0 obj <> endobj 1200 0 obj <> endobj 2872 0 obj <> endobj 1201 0 obj <> endobj 2873 0 obj <> endobj 1202 0 obj <> endobj 2874 0 obj <> endobj 1203 0 obj <> endobj 2875 0 obj <> endobj 1204 0 obj <> endobj 2876 0 obj <> endobj 1205 0 obj <> endobj 2877 0 obj <> endobj 1206 0 obj <> endobj 2878 0 obj <> endobj 1207 0 obj <> endobj 2879 0 obj <> endobj 1208 0 obj <> endobj 2880 0 obj <> endobj 1209 0 obj <> endobj 2881 0 obj <> endobj 1210 0 obj <> endobj 2882 0 obj <> endobj 1211 0 obj <> endobj 2883 0 obj <> endobj 1212 0 obj <> endobj 2884 0 obj <> endobj 1213 0 obj <> endobj 2885 0 obj <> endobj 1214 0 obj <> endobj 2886 0 obj <> endobj 1215 0 obj <> endobj 2887 0 obj <> endobj 1216 0 obj <> endobj 2888 0 obj <> endobj 1217 0 obj <> endobj 2889 0 obj <> endobj 1218 0 obj <> endobj 2890 0 obj <> endobj 1219 0 obj <> endobj 2891 0 obj <> endobj 1220 0 obj <> endobj 2892 0 obj <> endobj 1221 0 obj <> endobj 2893 0 obj <> endobj 1222 0 obj <> endobj 2894 0 obj <> endobj 1223 0 obj <> endobj 2895 0 obj <> endobj 1227 0 obj <> endobj 1226 0 obj <> endobj 1225 0 obj <> endobj 2896 0 obj <> endobj 1230 0 obj <> endobj 1229 0 obj <> endobj 1228 0 obj <> endobj 2897 0 obj <> endobj 1233 0 obj <> endobj 1232 0 obj <> endobj 1231 0 obj <> endobj 2898 0 obj <> endobj 1239 0 obj <> endobj 1238 0 obj <> endobj 1237 0 obj <> endobj 2899 0 obj <> endobj 1242 0 obj <> endobj 1241 0 obj <> endobj 1240 0 obj <> endobj 1224 0 obj <> endobj 2900 0 obj <> endobj 1243 0 obj <> endobj 2901 0 obj <> endobj 1244 0 obj <> endobj 2902 0 obj <> endobj 1245 0 obj <> endobj 2903 0 obj <> endobj 1246 0 obj <> endobj 2904 0 obj <> endobj 1247 0 obj <> endobj 2905 0 obj <> endobj 1248 0 obj <> endobj 2906 0 obj <> endobj 1249 0 obj <> endobj 2907 0 obj <> endobj 1250 0 obj <> endobj 2908 0 obj <> endobj 1251 0 obj <> endobj 2909 0 obj <> endobj 1252 0 obj <> endobj 2910 0 obj <> endobj 1253 0 obj <> endobj 2911 0 obj <> endobj 1254 0 obj <> endobj 2912 0 obj <> endobj 1255 0 obj <> endobj 2913 0 obj <> endobj 1256 0 obj <> endobj 2914 0 obj <> endobj 1257 0 obj <> endobj 2915 0 obj <> endobj 1258 0 obj <> endobj 2916 0 obj <> endobj 1259 0 obj <> endobj 2917 0 obj <> endobj 1260 0 obj <> endobj 2918 0 obj <> endobj 1261 0 obj <> endobj 2919 0 obj <> endobj 1262 0 obj <> endobj 2920 0 obj <> endobj 1263 0 obj <> endobj 2921 0 obj <> endobj 1264 0 obj <> endobj 2922 0 obj <> endobj 1268 0 obj <> endobj 1267 0 obj <> endobj 1266 0 obj <> endobj 2923 0 obj <> endobj 1271 0 obj <> endobj 1270 0 obj <> endobj 1269 0 obj <> endobj 2924 0 obj <> endobj 1274 0 obj <> endobj 1273 0 obj <> endobj 1272 0 obj <> endobj 2925 0 obj <> endobj 1277 0 obj <> endobj 1276 0 obj <> endobj 1275 0 obj <> endobj 2926 0 obj <> endobj 1280 0 obj <> endobj 1279 0 obj <> endobj 1278 0 obj <> endobj 2927 0 obj <> endobj 1283 0 obj <> endobj 1282 0 obj <> endobj 1281 0 obj <> endobj 1265 0 obj <> endobj 2928 0 obj <> endobj 1284 0 obj <> endobj 2929 0 obj <> endobj 1285 0 obj <> endobj 2930 0 obj <> endobj 1286 0 obj <> endobj 2931 0 obj <> endobj 1287 0 obj <> endobj 2932 0 obj <> endobj 1288 0 obj <> endobj 2933 0 obj <> endobj 1289 0 obj <> endobj 2934 0 obj <> endobj 1290 0 obj <> endobj 2935 0 obj <> endobj 1291 0 obj <> endobj 2936 0 obj <> endobj 1295 0 obj <> endobj 2937 0 obj <> endobj 1296 0 obj <> endobj 2938 0 obj <> endobj 1297 0 obj <> endobj 2939 0 obj <> endobj 1298 0 obj <> endobj 2940 0 obj <> endobj 1299 0 obj <> endobj 2941 0 obj <> endobj 1300 0 obj <> endobj 2942 0 obj <> endobj 1301 0 obj <> endobj 2943 0 obj <> endobj 1302 0 obj <> endobj 2944 0 obj <> endobj 1303 0 obj <> endobj 2945 0 obj <> endobj 1304 0 obj <> endobj 2946 0 obj <> endobj 1305 0 obj <> endobj 2947 0 obj <> endobj 1306 0 obj <> endobj 2948 0 obj <> endobj 1307 0 obj <> endobj 2949 0 obj <> endobj 1308 0 obj <> endobj 2950 0 obj <> endobj 1309 0 obj <> endobj 2951 0 obj <> endobj 1310 0 obj <> endobj 2952 0 obj <> endobj 1311 0 obj <> endobj 2953 0 obj <> endobj 1312 0 obj <> endobj 2954 0 obj <> endobj 1313 0 obj <> endobj 2955 0 obj <> endobj 1314 0 obj <> endobj 2956 0 obj <> endobj 1315 0 obj <> endobj 2957 0 obj <> endobj 1316 0 obj <> endobj 2958 0 obj <> endobj 1317 0 obj <> endobj 2959 0 obj <> endobj 1318 0 obj <> endobj 2960 0 obj <> endobj 1319 0 obj <> endobj 2961 0 obj <> endobj 1320 0 obj <> endobj 2962 0 obj <> endobj 1321 0 obj <> endobj 2963 0 obj <> endobj 1322 0 obj <> endobj 2964 0 obj <> endobj 1323 0 obj <> endobj 2965 0 obj <> endobj 1324 0 obj <> endobj 2966 0 obj <> endobj 1325 0 obj <> endobj 2967 0 obj <> endobj 1326 0 obj <> endobj 2968 0 obj <> endobj 1327 0 obj <> endobj 2969 0 obj <> endobj 1328 0 obj <> endobj 2970 0 obj <> endobj 1329 0 obj <> endobj 2971 0 obj <> endobj 1330 0 obj <> endobj 2972 0 obj <> endobj 1331 0 obj <> endobj 2973 0 obj <> endobj 1332 0 obj <> endobj 2974 0 obj <> endobj 1333 0 obj <> endobj 2975 0 obj <> endobj 1337 0 obj <> endobj 1336 0 obj <> endobj 1335 0 obj <> endobj 2976 0 obj <> endobj 1340 0 obj <> endobj 1339 0 obj <> endobj 1338 0 obj <> endobj 2977 0 obj <> endobj 1343 0 obj <> endobj 1342 0 obj <> endobj 1341 0 obj <> endobj 2978 0 obj <> endobj 1346 0 obj <> endobj 1345 0 obj <> endobj 1344 0 obj <> endobj 2979 0 obj <> endobj 1349 0 obj <> endobj 1348 0 obj <> endobj 1347 0 obj <> endobj 2980 0 obj <> endobj 1352 0 obj <> endobj 1351 0 obj <> endobj 1350 0 obj <> endobj 2981 0 obj <> endobj 1355 0 obj <> endobj 1354 0 obj <> endobj 1353 0 obj <> endobj 2982 0 obj <> endobj 1358 0 obj <> endobj 1357 0 obj <> endobj 1356 0 obj <> endobj 2983 0 obj <> endobj 1364 0 obj <> endobj 1363 0 obj <> endobj 1362 0 obj <> endobj 2984 0 obj <> endobj 1367 0 obj <> endobj 1366 0 obj <> endobj 1365 0 obj <> endobj 2985 0 obj <> endobj 1370 0 obj <> endobj 1369 0 obj <> endobj 1368 0 obj <> endobj 1334 0 obj <> endobj 2986 0 obj <> endobj 1371 0 obj <> endobj 2987 0 obj <> endobj 1375 0 obj <> endobj 1374 0 obj <> endobj 1373 0 obj <> endobj 2988 0 obj <> endobj 1378 0 obj <> endobj 1377 0 obj <> endobj 1376 0 obj <> endobj 2989 0 obj <> endobj 1381 0 obj <> endobj 1380 0 obj <> endobj 1379 0 obj <> endobj 2990 0 obj <> endobj 1384 0 obj <> endobj 1383 0 obj <> endobj 1382 0 obj <> endobj 2991 0 obj <> endobj 1387 0 obj <> endobj 2992 0 obj <> endobj 1391 0 obj <> endobj 1390 0 obj <> endobj 1389 0 obj <> endobj 2993 0 obj <> endobj 1394 0 obj <> endobj 1393 0 obj <> endobj 1392 0 obj <> endobj 1388 0 obj <> endobj 1386 0 obj <> endobj 1385 0 obj <> endobj 2994 0 obj <> endobj 1397 0 obj <> endobj 1396 0 obj <> endobj 1395 0 obj <> endobj 1372 0 obj <> endobj 2995 0 obj <> endobj 1398 0 obj <> endobj 2996 0 obj <> endobj 1405 0 obj <> endobj 1404 0 obj <> endobj 1403 0 obj <> endobj 1402 0 obj <> endobj 2997 0 obj <> endobj 1406 0 obj <> endobj 2998 0 obj <> endobj 1407 0 obj <> endobj 2999 0 obj <> endobj 1408 0 obj <> endobj 3000 0 obj <> endobj 1409 0 obj <> endobj 3001 0 obj <> endobj 1410 0 obj <> endobj 3002 0 obj <> endobj 1411 0 obj <> endobj 3003 0 obj <> endobj 1412 0 obj <> endobj 3004 0 obj <> endobj 1413 0 obj <> endobj 3005 0 obj <> endobj 1414 0 obj <> endobj 3006 0 obj <> endobj 1415 0 obj <> endobj 3007 0 obj <> endobj 1416 0 obj <> endobj 3008 0 obj <> endobj 1417 0 obj <> endobj 3009 0 obj <> endobj 1421 0 obj <> endobj 1420 0 obj <> endobj 1419 0 obj <> endobj 3010 0 obj <> endobj 1424 0 obj <> endobj 1423 0 obj <> endobj 1422 0 obj <> endobj 3011 0 obj <> endobj 1427 0 obj <> endobj 1426 0 obj <> endobj 1425 0 obj <> endobj 3012 0 obj <> endobj 1430 0 obj <> endobj 1429 0 obj <> endobj 1428 0 obj <> endobj 3013 0 obj <> endobj 1433 0 obj <> endobj 1432 0 obj <> endobj 1431 0 obj <> endobj 3014 0 obj <> endobj 1436 0 obj <> endobj 1435 0 obj <> endobj 1434 0 obj <> endobj 1418 0 obj <> endobj 3015 0 obj <> endobj 1437 0 obj <> endobj 3016 0 obj <> endobj 1438 0 obj <> endobj 3017 0 obj <> endobj 1439 0 obj <> endobj 3018 0 obj <> endobj 1440 0 obj <> endobj 3019 0 obj <> endobj 1441 0 obj <> endobj 3020 0 obj <> endobj 1442 0 obj <> endobj 3021 0 obj <> endobj 1446 0 obj <> endobj 3022 0 obj <> endobj 1447 0 obj <> endobj 3023 0 obj <> endobj 1448 0 obj <> endobj 3024 0 obj <> endobj 1449 0 obj <> endobj 3025 0 obj <> endobj 1450 0 obj <> endobj 3026 0 obj <> endobj 1451 0 obj <> endobj 3027 0 obj <> endobj 1452 0 obj <> endobj 3028 0 obj <> endobj 1453 0 obj <> endobj 3029 0 obj <> endobj 1454 0 obj <> endobj 3030 0 obj <> endobj 1455 0 obj <> endobj 3031 0 obj <> endobj 1456 0 obj <> endobj 3032 0 obj <> endobj 1457 0 obj <> endobj 3033 0 obj <> endobj 1461 0 obj <> endobj 1460 0 obj <> endobj 1459 0 obj <> endobj 3034 0 obj <> endobj 1464 0 obj <> endobj 1463 0 obj <> endobj 1462 0 obj <> endobj 1458 0 obj <> endobj 3035 0 obj <> endobj 1465 0 obj <> endobj 3036 0 obj <> endobj 1466 0 obj <> endobj 3037 0 obj <> endobj 1470 0 obj <> endobj 1469 0 obj <> endobj 1468 0 obj <> endobj 3038 0 obj <> endobj 1473 0 obj <> endobj 1472 0 obj <> endobj 1471 0 obj <> endobj 1467 0 obj <> endobj 3039 0 obj <> endobj 1474 0 obj <> endobj 3040 0 obj <> endobj 1475 0 obj <> endobj 3041 0 obj <> endobj 1476 0 obj <> endobj 3042 0 obj <> endobj 1480 0 obj <> endobj 1479 0 obj <> endobj 1478 0 obj <> endobj 3043 0 obj <> endobj 1483 0 obj <> endobj 1482 0 obj <> endobj 1481 0 obj <> endobj 1477 0 obj <> endobj 3044 0 obj <> endobj 1484 0 obj <> endobj 3045 0 obj <> endobj 1485 0 obj <> endobj 3046 0 obj <> endobj 1489 0 obj <> endobj 1488 0 obj <> endobj 1487 0 obj <> endobj 1486 0 obj <> endobj 3047 0 obj <> endobj 1493 0 obj <> endobj 1492 0 obj <> endobj 1491 0 obj <> endobj 3048 0 obj <> endobj 1499 0 obj <> endobj 1498 0 obj <> endobj 1497 0 obj <> endobj 1490 0 obj <> endobj 3049 0 obj <> endobj 1500 0 obj <> endobj 3050 0 obj <> endobj 1504 0 obj <> endobj 1503 0 obj <> endobj 1502 0 obj <> endobj 3051 0 obj <> endobj 1507 0 obj <> endobj 1506 0 obj <> endobj 1505 0 obj <> endobj 1501 0 obj <> endobj 3052 0 obj <> endobj 1508 0 obj <> endobj 3053 0 obj <> endobj 1509 0 obj <> endobj 3054 0 obj <> endobj 1510 0 obj <> endobj 3055 0 obj <> endobj 1511 0 obj <> endobj 3056 0 obj <> endobj 1512 0 obj <> endobj 3057 0 obj <> endobj 1513 0 obj <> endobj 3058 0 obj <> endobj 1514 0 obj <> endobj 3059 0 obj <> endobj 1515 0 obj <> endobj 3060 0 obj <> endobj 1516 0 obj <> endobj 3061 0 obj <> endobj 1517 0 obj <> endobj 3062 0 obj <> endobj 1518 0 obj <> endobj 3063 0 obj <> endobj 1519 0 obj <> endobj 3064 0 obj <> endobj 1520 0 obj <> endobj 3065 0 obj <> endobj 1521 0 obj <> endobj 3066 0 obj <> endobj 1522 0 obj <> endobj 3067 0 obj <> endobj 1523 0 obj <> endobj 3068 0 obj <> endobj 1524 0 obj <> endobj 3069 0 obj <> endobj 1525 0 obj <> endobj 3070 0 obj <> endobj 1526 0 obj <> endobj 3071 0 obj <> endobj 1527 0 obj <> endobj 3072 0 obj <> endobj 1528 0 obj <> endobj 3073 0 obj <> endobj 1529 0 obj <> endobj 3074 0 obj <> endobj 1530 0 obj <> endobj 3075 0 obj <> endobj 1531 0 obj <> endobj 3076 0 obj <> endobj 1532 0 obj <> endobj 3077 0 obj <> endobj 1533 0 obj <> endobj 3078 0 obj <> endobj 1534 0 obj <> endobj 3079 0 obj <> endobj 1535 0 obj <> endobj 3080 0 obj <> endobj 1536 0 obj <> endobj 3081 0 obj <> endobj 1537 0 obj <> endobj 3082 0 obj <> endobj 1538 0 obj <> endobj 3083 0 obj <> endobj 1539 0 obj <> endobj 3084 0 obj <> endobj 1540 0 obj <> endobj 3085 0 obj <> endobj 1541 0 obj <> endobj 3086 0 obj <> endobj 1542 0 obj <> endobj 3087 0 obj <> endobj 1543 0 obj <> ] >> endobj 3088 0 obj <> endobj 1547 0 obj <> endobj 3089 0 obj <> endobj 1548 0 obj <> endobj 3090 0 obj <> endobj 1549 0 obj <> endobj 3091 0 obj <> endobj 1550 0 obj <> endobj 3092 0 obj <> endobj 1551 0 obj <> endobj 3093 0 obj <> endobj 1552 0 obj <> endobj 3094 0 obj <> endobj 1553 0 obj <> endobj 3095 0 obj <> endobj 1554 0 obj <> endobj 3096 0 obj <> endobj 1555 0 obj <> endobj 3097 0 obj <> endobj 1556 0 obj <> endobj 3098 0 obj <> endobj 1557 0 obj <> endobj 3099 0 obj <> endobj 1558 0 obj <> endobj 3100 0 obj <> endobj 1559 0 obj <> endobj 3101 0 obj <> endobj 1560 0 obj <> endobj 3102 0 obj <> endobj 1561 0 obj <> endobj 3103 0 obj <> endobj 1562 0 obj <> endobj 3104 0 obj <> endobj 1563 0 obj <> endobj 3105 0 obj <> endobj 1567 0 obj <> endobj 1566 0 obj <> endobj 1565 0 obj <> endobj 3106 0 obj <> endobj 1570 0 obj <> endobj 1569 0 obj <> endobj 1568 0 obj <> endobj 1564 0 obj <> endobj 3107 0 obj <> endobj 1571 0 obj <> endobj 3108 0 obj <> endobj 1572 0 obj <> endobj 3109 0 obj <> endobj 1573 0 obj <> endobj 3110 0 obj <> endobj 1574 0 obj <> endobj 3111 0 obj <> endobj 1575 0 obj <> endobj 3112 0 obj <> endobj 1576 0 obj <> endobj 3113 0 obj <> endobj 1577 0 obj <> endobj 3114 0 obj <> endobj 1578 0 obj <> endobj 3115 0 obj <> endobj 1585 0 obj <> endobj 1584 0 obj <> endobj 1583 0 obj <> endobj 3116 0 obj <> endobj 1588 0 obj <> endobj 1587 0 obj <> endobj 1586 0 obj <> endobj 3117 0 obj <> endobj 1591 0 obj <> endobj 1590 0 obj <> endobj 1589 0 obj <> endobj 3118 0 obj <> endobj 1594 0 obj <> endobj 1593 0 obj <> endobj 1592 0 obj <> endobj 1582 0 obj <> endobj 3119 0 obj <> endobj 1595 0 obj <> endobj 3120 0 obj <> endobj 1596 0 obj <> endobj 3121 0 obj <> endobj 1597 0 obj <> endobj 3122 0 obj <> endobj 1598 0 obj <> endobj 3123 0 obj <> endobj 1599 0 obj <> endobj 3124 0 obj <> endobj 1603 0 obj <> endobj 1602 0 obj <> endobj 1601 0 obj <> endobj 3125 0 obj <> endobj 1606 0 obj <> endobj 1605 0 obj <> endobj 1604 0 obj <> endobj 1600 0 obj <> endobj 3126 0 obj <> endobj 1607 0 obj <> endobj 3127 0 obj <> endobj 1608 0 obj <> endobj 3128 0 obj <> endobj 1609 0 obj <> endobj 3129 0 obj <> endobj 1613 0 obj <> ] >> endobj 1612 0 obj <> endobj 1611 0 obj <> endobj 3130 0 obj <> endobj 1619 0 obj <> endobj 1618 0 obj <> endobj 1617 0 obj <> endobj 1610 0 obj <> endobj 3131 0 obj <> endobj 1620 0 obj <> endobj 3132 0 obj <> endobj 1621 0 obj <> endobj 3133 0 obj <> endobj 1625 0 obj <> endobj 1624 0 obj <> endobj 1623 0 obj <> endobj 1622 0 obj <> endobj 3134 0 obj <> endobj 1626 0 obj <> endobj 3135 0 obj <> endobj 1630 0 obj <> endobj 1629 0 obj <> endobj 1628 0 obj <> endobj 3136 0 obj <> endobj 1633 0 obj <> endobj 1632 0 obj <> endobj 1631 0 obj <> endobj 1627 0 obj <> endobj 3137 0 obj <> endobj 1634 0 obj <> endobj 3138 0 obj <> endobj 1635 0 obj <> endobj 3139 0 obj <> endobj 1636 0 obj <> endobj 3140 0 obj <> endobj 1637 0 obj <> endobj 3141 0 obj <> endobj 1638 0 obj <> endobj 3142 0 obj <> endobj 1642 0 obj <> endobj 1641 0 obj <> endobj 1640 0 obj <> endobj 3143 0 obj <> endobj 1645 0 obj <> endobj 1644 0 obj <> endobj 1643 0 obj <> endobj 3144 0 obj <> endobj 1648 0 obj <> endobj 1647 0 obj <> endobj 1646 0 obj <> endobj 1639 0 obj <> endobj 3145 0 obj <> endobj 1649 0 obj <> endobj 3146 0 obj <> endobj 1650 0 obj <> endobj 3147 0 obj <> endobj 1651 0 obj <> endobj 3148 0 obj <> endobj 1652 0 obj <> endobj 3149 0 obj <> endobj 1653 0 obj <> endobj 3150 0 obj <> endobj 1654 0 obj <> endobj 3151 0 obj <> endobj 1661 0 obj <> endobj 1660 0 obj <> endobj 1659 0 obj <> endobj 1658 0 obj <> endobj 3152 0 obj <> endobj 1662 0 obj <> endobj 3153 0 obj <> endobj 1663 0 obj <> endobj 3154 0 obj <> endobj 1664 0 obj <> endobj 3155 0 obj <> endobj 1665 0 obj <> endobj 3156 0 obj <> endobj 1666 0 obj <> endobj 3157 0 obj <> endobj 1667 0 obj <> endobj 3158 0 obj <> endobj 1668 0 obj <> endobj 3159 0 obj <> endobj 1669 0 obj <> endobj 3160 0 obj <> endobj 1670 0 obj <> endobj 3161 0 obj <> endobj 1671 0 obj <> endobj 3162 0 obj <> endobj 1672 0 obj <> endobj 3163 0 obj <> endobj 1673 0 obj <> endobj 3164 0 obj <> endobj 1674 0 obj <> endobj 3165 0 obj <> endobj 1675 0 obj <> endobj 3166 0 obj <> endobj 1676 0 obj <> endobj 3167 0 obj <> endobj 1677 0 obj <> endobj 3168 0 obj <> endobj 1678 0 obj <> endobj 3169 0 obj <> endobj 1679 0 obj <> endobj 3170 0 obj <> endobj 1680 0 obj <> endobj 3171 0 obj <> endobj 1681 0 obj <> endobj 3172 0 obj <> endobj 1682 0 obj <> endobj 3173 0 obj <> endobj 1683 0 obj <> endobj 3174 0 obj <> endobj 1684 0 obj <> endobj 3175 0 obj <> endobj 1685 0 obj <> endobj 3176 0 obj <> endobj 1686 0 obj <> endobj 3177 0 obj <> endobj 1687 0 obj <> endobj 3178 0 obj <> endobj 1688 0 obj <> endobj 3179 0 obj <> endobj 1689 0 obj <> endobj 3180 0 obj <> endobj 1690 0 obj <> endobj 3181 0 obj <> endobj 1691 0 obj <> endobj 3182 0 obj <> endobj 1692 0 obj <> endobj 3183 0 obj <> endobj 1693 0 obj <> endobj 3184 0 obj <> endobj 1694 0 obj <> endobj 3185 0 obj <> endobj 1695 0 obj <> endobj 3186 0 obj <> endobj 1699 0 obj <> endobj 1698 0 obj <> endobj 1697 0 obj <> endobj 3187 0 obj <> endobj 1702 0 obj <> endobj 1701 0 obj <> endobj 1700 0 obj <> endobj 3188 0 obj <> endobj 1705 0 obj <> endobj 3189 0 obj <> endobj 1706 0 obj <> endobj 1704 0 obj <> endobj 1703 0 obj <> endobj 1696 0 obj <> endobj 3190 0 obj <> endobj 1710 0 obj <> endobj 3191 0 obj <> endobj 1709 0 obj <> endobj 3192 0 obj <> endobj 1712 0 obj <> endobj 3193 0 obj <> endobj 1711 0 obj <> endobj 3194 0 obj <> endobj 1708 0 obj <> endobj 3195 0 obj <> endobj 1715 0 obj <> endobj 3196 0 obj <> endobj 3197 0 obj <> endobj 1714 0 obj <> endobj 3198 0 obj <> endobj 1713 0 obj <> endobj 3199 0 obj <> endobj 1718 0 obj <> endobj 3200 0 obj <> endobj 1717 0 obj <> endobj 3201 0 obj <> endobj 1720 0 obj <> endobj 3202 0 obj <> endobj 1719 0 obj <> endobj 3203 0 obj <> endobj 1716 0 obj <> endobj 3204 0 obj <> endobj 1726 0 obj <> endobj 3205 0 obj <> endobj 1725 0 obj <> endobj 3206 0 obj <> endobj 1728 0 obj <> endobj 3207 0 obj <> endobj 1727 0 obj <> endobj 3208 0 obj <> endobj 1724 0 obj <> endobj 3209 0 obj <> endobj 1731 0 obj <> endobj 3210 0 obj <> endobj 1730 0 obj <> endobj 3211 0 obj <> endobj 1733 0 obj <> endobj 3212 0 obj <> endobj 1732 0 obj <> endobj 3213 0 obj <> endobj 1729 0 obj <> endobj 3214 0 obj <> endobj 1736 0 obj <> endobj 3215 0 obj <> endobj 1735 0 obj <> endobj 3216 0 obj <> endobj 1738 0 obj <> endobj 3217 0 obj <> endobj 1737 0 obj <> endobj 3218 0 obj <> endobj 1734 0 obj <> endobj 3219 0 obj <> endobj 1741 0 obj <> endobj 3220 0 obj <> endobj 1740 0 obj <> endobj 3221 0 obj <> endobj 1743 0 obj <> endobj 3222 0 obj <> endobj 1742 0 obj <> endobj 3223 0 obj <> endobj 1739 0 obj <> endobj 3224 0 obj <> endobj 1746 0 obj <> endobj 3225 0 obj <> endobj 1745 0 obj <> endobj 3226 0 obj <> endobj 1748 0 obj <> endobj 3227 0 obj <> endobj 1747 0 obj <> endobj 3228 0 obj <> endobj 1744 0 obj <> endobj 3229 0 obj <> endobj 1751 0 obj <> endobj 3230 0 obj <> endobj 1750 0 obj <> endobj 3231 0 obj <> endobj 1753 0 obj <> endobj 3232 0 obj <> endobj 1752 0 obj <> endobj 3233 0 obj <> endobj 1749 0 obj <> endobj 3234 0 obj <> endobj 1756 0 obj <> endobj 3235 0 obj <> endobj 1755 0 obj <> endobj 3236 0 obj <> endobj 1758 0 obj <> endobj 3237 0 obj <> endobj 1757 0 obj <> endobj 3238 0 obj <> endobj 1754 0 obj <> endobj 3239 0 obj <> endobj 1761 0 obj <> endobj 3240 0 obj <> endobj 1760 0 obj <> endobj 3241 0 obj <> endobj 1763 0 obj <> endobj 3242 0 obj <> endobj 1762 0 obj <> endobj 3243 0 obj <> endobj 1759 0 obj <> endobj 3244 0 obj <> endobj 1766 0 obj <> endobj 3245 0 obj <> endobj 1765 0 obj <> endobj 3246 0 obj <> endobj 1768 0 obj <> endobj 3247 0 obj <> endobj 1767 0 obj <> endobj 3248 0 obj <> endobj 1764 0 obj <> endobj 3249 0 obj <> endobj 1771 0 obj <> endobj 3250 0 obj <> endobj 1770 0 obj <> endobj 3251 0 obj <> endobj 1773 0 obj <> endobj 3252 0 obj <> endobj 1772 0 obj <> endobj 3253 0 obj <> endobj 1769 0 obj <> endobj 3254 0 obj <> endobj 1776 0 obj <> endobj 3255 0 obj <> endobj 1775 0 obj <> endobj 3256 0 obj <> endobj 1778 0 obj <> endobj 3257 0 obj <> endobj 1777 0 obj <> endobj 3258 0 obj <> endobj 1774 0 obj <> endobj 3259 0 obj <> endobj 1781 0 obj <> endobj 3260 0 obj <> endobj 3261 0 obj <> endobj 1780 0 obj <> endobj 3262 0 obj <> endobj 1779 0 obj <> endobj 3263 0 obj <> endobj 1784 0 obj <> endobj 3264 0 obj <> endobj 1783 0 obj <> endobj 3265 0 obj <> endobj 1786 0 obj <> endobj 3266 0 obj <> endobj 1785 0 obj <> endobj 3267 0 obj <> endobj 1782 0 obj <> endobj 3268 0 obj <> endobj 1789 0 obj <> endobj 3269 0 obj <> endobj 1788 0 obj <> endobj 3270 0 obj <> endobj 1791 0 obj <> endobj 3271 0 obj <> endobj 1790 0 obj <> endobj 3272 0 obj <> endobj 1787 0 obj <> endobj 3273 0 obj <> endobj 1794 0 obj <> endobj 3274 0 obj <> endobj 1793 0 obj <> endobj 3275 0 obj <> endobj 1796 0 obj <> endobj 3276 0 obj <> endobj 1795 0 obj <> endobj 3277 0 obj <> endobj 1792 0 obj <> endobj 3278 0 obj <> endobj 1799 0 obj <> endobj 3279 0 obj <> endobj 1798 0 obj <> endobj 3280 0 obj <> endobj 1801 0 obj <> endobj 3281 0 obj <> endobj 1800 0 obj <> endobj 3282 0 obj <> endobj 1797 0 obj <> endobj 3283 0 obj <> endobj 1804 0 obj <> endobj 3284 0 obj <> endobj 1803 0 obj <> endobj 3285 0 obj <> endobj 1806 0 obj <> endobj 3286 0 obj <> endobj 1805 0 obj <> endobj 3287 0 obj <> endobj 1802 0 obj <> endobj 3288 0 obj <> endobj 1809 0 obj <> endobj 3289 0 obj <> endobj 1808 0 obj <> endobj 3290 0 obj <> endobj 1811 0 obj <> endobj 3291 0 obj <> endobj 1810 0 obj <> endobj 3292 0 obj <> endobj 1807 0 obj <> endobj 3293 0 obj <> endobj 1814 0 obj <> endobj 3294 0 obj <> endobj 3295 0 obj <> endobj 1813 0 obj <> endobj 3296 0 obj <> endobj 1812 0 obj <> endobj 3297 0 obj <> endobj 1817 0 obj <> endobj 3298 0 obj <> endobj 1816 0 obj <> endobj 3299 0 obj <> endobj 1819 0 obj <> endobj 3300 0 obj <> endobj 1818 0 obj <> endobj 3301 0 obj <> endobj 1815 0 obj <> endobj 3302 0 obj <> endobj 1822 0 obj <> endobj 3303 0 obj <> endobj 1821 0 obj <> endobj 3304 0 obj <> endobj 1824 0 obj <> endobj 3305 0 obj <> endobj 1823 0 obj <> endobj 3306 0 obj <> endobj 1820 0 obj <> endobj 3307 0 obj <> endobj 1827 0 obj <> endobj 3308 0 obj <> endobj 1826 0 obj <> endobj 3309 0 obj <> endobj 1829 0 obj <> endobj 3310 0 obj <> endobj 1828 0 obj <> endobj 3311 0 obj <> endobj 1825 0 obj <> endobj 3312 0 obj <> endobj 1835 0 obj <> endobj 3313 0 obj <> endobj 1834 0 obj <> endobj 3314 0 obj <> endobj 1837 0 obj <> endobj 3315 0 obj <> endobj 1836 0 obj <> endobj 3316 0 obj <> endobj 1833 0 obj <> endobj 3317 0 obj <> endobj 1840 0 obj <> endobj 3318 0 obj <> endobj 1839 0 obj <> endobj 3319 0 obj <> endobj 1842 0 obj <> endobj 3320 0 obj <> endobj 1841 0 obj <> endobj 3321 0 obj <> endobj 1838 0 obj <> endobj 3322 0 obj <> endobj 1845 0 obj <> endobj 3323 0 obj <> endobj 1844 0 obj <> endobj 3324 0 obj <> endobj 1847 0 obj <> endobj 3325 0 obj <> endobj 1846 0 obj <> endobj 3326 0 obj <> endobj 1843 0 obj <> endobj 3327 0 obj <> endobj 1850 0 obj <> endobj 3328 0 obj <> endobj 3329 0 obj <> endobj 1849 0 obj <> endobj 3330 0 obj <> endobj 1848 0 obj <> endobj 3331 0 obj <> endobj 1853 0 obj <> endobj 3332 0 obj <> endobj 1852 0 obj <> endobj 3333 0 obj <> endobj 1855 0 obj <> endobj 3334 0 obj <> endobj 1854 0 obj <> endobj 3335 0 obj <> endobj 1851 0 obj <> endobj 3336 0 obj <> endobj 1858 0 obj <> endobj 3337 0 obj <> endobj 1857 0 obj <> endobj 3338 0 obj <> endobj 1860 0 obj <> endobj 3339 0 obj <> endobj 1859 0 obj <> endobj 3340 0 obj <> endobj 1856 0 obj <> endobj 3341 0 obj <> endobj 1863 0 obj <> endobj 3342 0 obj <> endobj 1862 0 obj <> endobj 3343 0 obj <> endobj 1865 0 obj <> endobj 3344 0 obj <> endobj 1864 0 obj <> endobj 3345 0 obj <> endobj 1861 0 obj <> endobj 3346 0 obj <> endobj 1868 0 obj <> endobj 3347 0 obj <> endobj 1867 0 obj <> endobj 3348 0 obj <> endobj 1870 0 obj <> endobj 3349 0 obj <> endobj 1869 0 obj <> endobj 3350 0 obj <> endobj 1866 0 obj <> endobj 3351 0 obj <> endobj 1873 0 obj <> endobj 3352 0 obj <> endobj 3353 0 obj <> endobj 1872 0 obj <> endobj 3354 0 obj <> endobj 1871 0 obj <> endobj 3355 0 obj <> endobj 1876 0 obj <> endobj 3356 0 obj <> endobj 1875 0 obj <> endobj 3357 0 obj <> endobj 1878 0 obj <> endobj 3358 0 obj <> endobj 1877 0 obj <> endobj 3359 0 obj <> endobj 1874 0 obj <> endobj 3360 0 obj <> endobj 1881 0 obj <> endobj 3361 0 obj <> endobj 1880 0 obj <> endobj 3362 0 obj <> endobj 1883 0 obj <> endobj 3363 0 obj <> endobj 1882 0 obj <> endobj 3364 0 obj <> endobj 1879 0 obj <> endobj 3365 0 obj <> endobj 1886 0 obj <> endobj 3366 0 obj <> endobj 1885 0 obj <> endobj 3367 0 obj <> endobj 1888 0 obj <> endobj 3368 0 obj <> endobj 1887 0 obj <> endobj 3369 0 obj <> endobj 1884 0 obj <> endobj 3370 0 obj <> endobj 1891 0 obj <> endobj 3371 0 obj <> endobj 1890 0 obj <> endobj 3372 0 obj <> endobj 1893 0 obj <> endobj 3373 0 obj <> endobj 1892 0 obj <> endobj 3374 0 obj <> endobj 1889 0 obj <> endobj 3375 0 obj <> endobj 1896 0 obj <> endobj 3376 0 obj <> endobj 1895 0 obj <> endobj 3377 0 obj <> endobj 1898 0 obj <> endobj 3378 0 obj <> endobj 1897 0 obj <> endobj 3379 0 obj <> endobj 1894 0 obj <> endobj 3380 0 obj <> endobj 1901 0 obj <> endobj 3381 0 obj <> endobj 1900 0 obj <> endobj 3382 0 obj <> endobj 1903 0 obj <> endobj 3383 0 obj <> endobj 1902 0 obj <> endobj 3384 0 obj <> endobj 1899 0 obj <> endobj 3385 0 obj <> endobj 1906 0 obj <> endobj 3386 0 obj <> endobj 1905 0 obj <> endobj 3387 0 obj <> endobj 1908 0 obj <> endobj 3388 0 obj <> endobj 1907 0 obj <> endobj 3389 0 obj <> endobj 1904 0 obj <> endobj 3390 0 obj <> endobj 1911 0 obj <> endobj 3391 0 obj <> endobj 1910 0 obj <> endobj 3392 0 obj <> endobj 1913 0 obj <> endobj 3393 0 obj <> endobj 1912 0 obj <> endobj 3394 0 obj <> endobj 1909 0 obj <> endobj 3395 0 obj <> endobj 1916 0 obj <> endobj 3396 0 obj <> endobj 3397 0 obj <> endobj 1915 0 obj <> endobj 3398 0 obj <> endobj 1914 0 obj <> endobj 3399 0 obj <> endobj 1919 0 obj <> endobj 3400 0 obj <> endobj 1918 0 obj <> endobj 3401 0 obj <> endobj 1921 0 obj <> endobj 3402 0 obj <> endobj 1920 0 obj <> endobj 3403 0 obj <> endobj 1917 0 obj <> endobj 3404 0 obj <> endobj 1924 0 obj <> endobj 3405 0 obj <> endobj 1923 0 obj <> endobj 3406 0 obj <> endobj 1926 0 obj <> endobj 3407 0 obj <> endobj 1925 0 obj <> endobj 3408 0 obj <> endobj 1922 0 obj <> endobj 3409 0 obj <> endobj 1929 0 obj <> endobj 3410 0 obj <> endobj 1928 0 obj <> endobj 3411 0 obj <> endobj 1931 0 obj <> endobj 3412 0 obj <> endobj 1930 0 obj <> endobj 3413 0 obj <> endobj 1927 0 obj <> endobj 3414 0 obj <> endobj 1934 0 obj <> endobj 3415 0 obj <> endobj 1933 0 obj <> endobj 3416 0 obj <> endobj 1936 0 obj <> endobj 3417 0 obj <> endobj 1935 0 obj <> endobj 3418 0 obj <> endobj 1932 0 obj <> endobj 3419 0 obj <> endobj 1939 0 obj <> endobj 3420 0 obj <> endobj 1938 0 obj <> endobj 3421 0 obj <> endobj 1941 0 obj <> endobj 3422 0 obj <> endobj 1940 0 obj <> endobj 3423 0 obj <> endobj 1937 0 obj <> endobj 3424 0 obj <> endobj 1947 0 obj <> endobj 3425 0 obj <> endobj 1946 0 obj <> endobj 3426 0 obj <> endobj 1949 0 obj <> endobj 3427 0 obj <> endobj 1948 0 obj <> endobj 3428 0 obj <> endobj 1945 0 obj <> endobj 3429 0 obj <> endobj 1952 0 obj <> endobj 3430 0 obj <> endobj 3431 0 obj <> endobj 1951 0 obj <> endobj 3432 0 obj <> endobj 1950 0 obj <> endobj 3433 0 obj <> endobj 1955 0 obj <> endobj 3434 0 obj <> endobj 1954 0 obj <> endobj 3435 0 obj <> endobj 1957 0 obj <> endobj 3436 0 obj <> endobj 1956 0 obj <> endobj 3437 0 obj <> endobj 1953 0 obj <> endobj 3438 0 obj <> endobj 1960 0 obj <> endobj 3439 0 obj <> endobj 1959 0 obj <> endobj 3440 0 obj <> endobj 1962 0 obj <> endobj 3441 0 obj <> endobj 1961 0 obj <> endobj 3442 0 obj <> endobj 1958 0 obj <> endobj 3443 0 obj <> endobj 1965 0 obj <> endobj 3444 0 obj <> endobj 3445 0 obj <> endobj 1964 0 obj <> endobj 3446 0 obj <> endobj 1963 0 obj <> endobj 3447 0 obj <> endobj 1968 0 obj <> endobj 3448 0 obj <> endobj 1967 0 obj <> endobj 3449 0 obj <> endobj 1970 0 obj <> endobj 3450 0 obj <> endobj 1969 0 obj <> endobj 3451 0 obj <> endobj 1966 0 obj <> endobj 3452 0 obj <> endobj 1973 0 obj <> endobj 3453 0 obj <> endobj 1972 0 obj <> endobj 3454 0 obj <> endobj 1975 0 obj <> endobj 3455 0 obj <> endobj 1974 0 obj <> endobj 3456 0 obj <> endobj 1971 0 obj <> endobj 3457 0 obj <> endobj 1978 0 obj <> endobj 3458 0 obj <> endobj 1977 0 obj <> endobj 3459 0 obj <> endobj 1980 0 obj <> endobj 3460 0 obj <> endobj 1979 0 obj <> endobj 3461 0 obj <> endobj 1976 0 obj <> endobj 3462 0 obj <> endobj 1983 0 obj <> endobj 3463 0 obj <> endobj 1982 0 obj <> endobj 3464 0 obj <> endobj 1985 0 obj <> endobj 3465 0 obj <> endobj 1984 0 obj <> endobj 3466 0 obj <> endobj 1981 0 obj <> endobj 3467 0 obj <> endobj 1988 0 obj <> endobj 3468 0 obj <> endobj 1987 0 obj <> endobj 3469 0 obj <> endobj 1990 0 obj <> endobj 3470 0 obj <> endobj 1989 0 obj <> endobj 3471 0 obj <> endobj 1986 0 obj <> endobj 3472 0 obj <> endobj 1993 0 obj <> endobj 3473 0 obj <> endobj 1992 0 obj <> endobj 3474 0 obj <> endobj 1995 0 obj <> endobj 3475 0 obj <> endobj 1994 0 obj <> endobj 3476 0 obj <> endobj 1991 0 obj <> endobj 3477 0 obj <> endobj 1998 0 obj <> endobj 3478 0 obj <> endobj 1997 0 obj <> endobj 3479 0 obj <> endobj 2000 0 obj <> endobj 3480 0 obj <> endobj 1999 0 obj <> endobj 3481 0 obj <> endobj 1996 0 obj <> endobj 3482 0 obj <> endobj 2003 0 obj <> endobj 3483 0 obj <> endobj 2002 0 obj <> endobj 3484 0 obj <> endobj 2005 0 obj <> endobj 3485 0 obj <> endobj 2004 0 obj <> endobj 3486 0 obj <> endobj 2001 0 obj <> endobj 3487 0 obj <> endobj 2008 0 obj <> endobj 3488 0 obj <> endobj 3489 0 obj <> endobj 2007 0 obj <> endobj 3490 0 obj <> endobj 2006 0 obj <> endobj 3491 0 obj <> endobj 2011 0 obj <> endobj 3492 0 obj <> endobj 2010 0 obj <> endobj 3493 0 obj <> endobj 2013 0 obj <> endobj 3494 0 obj <> endobj 2012 0 obj <> endobj 3495 0 obj <> endobj 2009 0 obj <> endobj 3496 0 obj <> endobj 1707 0 obj <> endobj 3497 0 obj <> endobj 2014 0 obj <> endobj 3498 0 obj <> endobj 2015 0 obj <> endobj 3499 0 obj <> endobj 2016 0 obj <> endobj 3500 0 obj <> endobj 2023 0 obj <> endobj 2022 0 obj <> endobj 2021 0 obj <> endobj 3501 0 obj <> endobj 2026 0 obj <> endobj 2025 0 obj <> endobj 2024 0 obj <> endobj 3502 0 obj <> endobj 2029 0 obj <> endobj 2028 0 obj <> endobj 2027 0 obj <> endobj 2020 0 obj <> endobj 3503 0 obj <> endobj 2030 0 obj <> endobj 3504 0 obj <> endobj 2031 0 obj <> endobj 3505 0 obj <> endobj 2035 0 obj <> endobj 2034 0 obj <> endobj 2033 0 obj <> endobj 3506 0 obj <> endobj 2038 0 obj <> endobj 2037 0 obj <> endobj 2036 0 obj <> endobj 3507 0 obj <> endobj 2041 0 obj <> endobj 2040 0 obj <> endobj 2039 0 obj <> endobj 2032 0 obj <> endobj 3508 0 obj <> endobj 2042 0 obj <> endobj 3509 0 obj <> endobj 2043 0 obj <> endobj 4 0 obj <> endobj 2107 0 obj <> endobj 3510 0 obj <> endobj 2047 0 obj <> endobj 2044 0 obj <> /StructParent 43>> endobj 2045 0 obj <> /StructParent 45>> endobj 2046 0 obj <> /StructParent 44>> endobj 3511 0 obj <> >> endobj 3512 0 obj < /Producer /CreationDate(D:20100129011345+01'00')>> endobj xref 0 3513 0000000000 65535 f 0000731477 00000 n 0000000019 00000 n 0000004915 00000 n 0001009686 00000 n 0000738941 00000 n 0000739100 00000 n 0000739241 00000 n 0000739382 00000 n 0000739523 00000 n 0000739664 00000 n 0000739824 00000 n 0000739973 00000 n 0000740133 00000 n 0000740282 00000 n 0000740424 00000 n 0000740566 00000 n 0000740708 00000 n 0000740850 00000 n 0000740992 00000 n 0000731642 00000 n 0000004936 00000 n 0000023472 00000 n 0000741125 00000 n 0000741252 00000 n 0000758793 00000 n 0000741472 00000 n 0000741386 00000 n 0000741707 00000 n 0000741621 00000 n 0000741942 00000 n 0000741856 00000 n 0000742177 00000 n 0000742091 00000 n 0000742413 00000 n 0000742326 00000 n 0000742650 00000 n 0000742562 00000 n 0000742887 00000 n 0000742799 00000 n 0000743124 00000 n 0000743036 00000 n 0000743361 00000 n 0000743273 00000 n 0000743598 00000 n 0000743510 00000 n 0000743835 00000 n 0000743747 00000 n 0000744072 00000 n 0000743984 00000 n 0000744309 00000 n 0000744221 00000 n 0000744546 00000 n 0000744458 00000 n 0000744783 00000 n 0000744695 00000 n 0000745020 00000 n 0000744932 00000 n 0000745257 00000 n 0000745169 00000 n 0000745494 00000 n 0000745406 00000 n 0000745731 00000 n 0000745643 00000 n 0000745968 00000 n 0000745880 00000 n 0000746205 00000 n 0000746117 00000 n 0000746442 00000 n 0000746354 00000 n 0000746679 00000 n 0000746591 00000 n 0000746916 00000 n 0000746828 00000 n 0000747153 00000 n 0000747065 00000 n 0000747390 00000 n 0000747302 00000 n 0000747627 00000 n 0000747539 00000 n 0000747864 00000 n 0000747776 00000 n 0000748101 00000 n 0000748013 00000 n 0000748338 00000 n 0000748250 00000 n 0000748575 00000 n 0000748487 00000 n 0000748812 00000 n 0000748724 00000 n 0000749049 00000 n 0000748961 00000 n 0000749286 00000 n 0000749198 00000 n 0000749523 00000 n 0000749435 00000 n 0000749760 00000 n 0000749672 00000 n 0000749997 00000 n 0000749909 00000 n 0000750236 00000 n 0000750146 00000 n 0000750477 00000 n 0000750387 00000 n 0000750718 00000 n 0000750628 00000 n 0000750959 00000 n 0000750869 00000 n 0000751200 00000 n 0000751110 00000 n 0000751441 00000 n 0000751351 00000 n 0000751682 00000 n 0000751592 00000 n 0000751923 00000 n 0000751833 00000 n 0000752164 00000 n 0000752074 00000 n 0000752405 00000 n 0000752315 00000 n 0000752646 00000 n 0000752556 00000 n 0000731809 00000 n 0000023495 00000 n 0000033371 00000 n 0000752886 00000 n 0000752797 00000 n 0000753127 00000 n 0000753038 00000 n 0000753368 00000 n 0000753279 00000 n 0000753609 00000 n 0000753520 00000 n 0000753850 00000 n 0000753761 00000 n 0000754093 00000 n 0000754002 00000 n 0000754336 00000 n 0000754245 00000 n 0000754579 00000 n 0000754488 00000 n 0000754822 00000 n 0000754731 00000 n 0000755065 00000 n 0000754974 00000 n 0000755308 00000 n 0000755217 00000 n 0000755551 00000 n 0000755460 00000 n 0000755794 00000 n 0000755703 00000 n 0000756037 00000 n 0000755946 00000 n 0000756280 00000 n 0000756189 00000 n 0000756523 00000 n 0000756432 00000 n 0000756766 00000 n 0000756675 00000 n 0000757009 00000 n 0000756918 00000 n 0000757252 00000 n 0000757161 00000 n 0000757495 00000 n 0000757404 00000 n 0000757738 00000 n 0000757647 00000 n 0000757981 00000 n 0000757890 00000 n 0000758224 00000 n 0000758133 00000 n 0000758467 00000 n 0000758376 00000 n 0000758710 00000 n 0000758619 00000 n 0000759462 00000 n 0000759607 00000 n 0000731978 00000 n 0000033394 00000 n 0000043582 00000 n 0000760006 00000 n 0000759924 00000 n 0000759839 00000 n 0000759752 00000 n 0000760152 00000 n 0000760304 00000 n 0000760456 00000 n 0000760809 00000 n 0000760967 00000 n 0000761112 00000 n 0000761257 00000 n 0000761402 00000 n 0000761547 00000 n 0000761692 00000 n 0000761837 00000 n 0000761982 00000 n 0000762127 00000 n 0000762279 00000 n 0000762431 00000 n 0000762583 00000 n 0000764276 00000 n 0000762907 00000 n 0000762822 00000 n 0000762735 00000 n 0000763228 00000 n 0000763143 00000 n 0000763056 00000 n 0000763550 00000 n 0000763465 00000 n 0000763377 00000 n 0000763872 00000 n 0000763787 00000 n 0000763699 00000 n 0000764194 00000 n 0000764109 00000 n 0000764021 00000 n 0000764454 00000 n 0000760649 00000 n 0000043606 00000 n 0000062548 00000 n 0000732147 00000 n 0000062572 00000 n 0000078150 00000 n 0000770114 00000 n 0000765519 00000 n 0000764756 00000 n 0000764591 00000 n 0000765066 00000 n 0000764901 00000 n 0000765374 00000 n 0000765211 00000 n 0000766608 00000 n 0000765845 00000 n 0000765680 00000 n 0000766155 00000 n 0000765990 00000 n 0000766463 00000 n 0000766300 00000 n 0000767697 00000 n 0000766934 00000 n 0000766769 00000 n 0000767244 00000 n 0000767079 00000 n 0000767552 00000 n 0000767389 00000 n 0000768788 00000 n 0000768023 00000 n 0000767858 00000 n 0000768334 00000 n 0000768168 00000 n 0000768643 00000 n 0000768479 00000 n 0000769880 00000 n 0000769115 00000 n 0000768949 00000 n 0000769426 00000 n 0000769260 00000 n 0000769735 00000 n 0000769571 00000 n 0000770292 00000 n 0000770437 00000 n 0000771167 00000 n 0000770763 00000 n 0000770678 00000 n 0000770590 00000 n 0000771085 00000 n 0000771000 00000 n 0000770912 00000 n 0000771321 00000 n 0000771474 00000 n 0000771627 00000 n 0000774964 00000 n 0000771953 00000 n 0000771868 00000 n 0000771780 00000 n 0000772275 00000 n 0000772190 00000 n 0000772102 00000 n 0000772597 00000 n 0000772512 00000 n 0000772424 00000 n 0000772919 00000 n 0000772834 00000 n 0000772746 00000 n 0000773241 00000 n 0000773156 00000 n 0000773068 00000 n 0000773563 00000 n 0000773478 00000 n 0000773390 00000 n 0000773885 00000 n 0000773800 00000 n 0000773712 00000 n 0000774240 00000 n 0000774155 00000 n 0000774034 00000 n 0000732316 00000 n 0000078174 00000 n 0000093449 00000 n 0000774561 00000 n 0000774476 00000 n 0000774389 00000 n 0000774882 00000 n 0000774797 00000 n 0000774710 00000 n 0000775182 00000 n 0000775334 00000 n 0000776281 00000 n 0000775878 00000 n 0000775793 00000 n 0000775696 00000 n 0000775530 00000 n 0000776199 00000 n 0000776114 00000 n 0000776027 00000 n 0000776435 00000 n 0000776587 00000 n 0000776951 00000 n 0000776784 00000 n 0000777115 00000 n 0000777268 00000 n 0000777421 00000 n 0000777574 00000 n 0000777727 00000 n 0000732514 00000 n 0000093473 00000 n 0000099814 00000 n 0000777864 00000 n 0000778016 00000 n 0000779385 00000 n 0000778340 00000 n 0000778255 00000 n 0000778168 00000 n 0000778661 00000 n 0000778576 00000 n 0000778489 00000 n 0000778982 00000 n 0000778897 00000 n 0000778810 00000 n 0000779303 00000 n 0000779218 00000 n 0000779131 00000 n 0000779555 00000 n 0000732683 00000 n 0000099837 00000 n 0000110570 00000 n 0000779961 00000 n 0000779879 00000 n 0000779794 00000 n 0000779707 00000 n 0000780107 00000 n 0000783301 00000 n 0000780649 00000 n 0000780564 00000 n 0000780469 00000 n 0000780303 00000 n 0000780970 00000 n 0000780885 00000 n 0000780798 00000 n 0000781291 00000 n 0000781206 00000 n 0000781119 00000 n 0000781612 00000 n 0000781527 00000 n 0000781440 00000 n 0000781933 00000 n 0000781848 00000 n 0000781761 00000 n 0000782254 00000 n 0000782169 00000 n 0000782082 00000 n 0000782575 00000 n 0000782490 00000 n 0000782403 00000 n 0000782897 00000 n 0000782812 00000 n 0000782724 00000 n 0000783219 00000 n 0000783134 00000 n 0000783046 00000 n 0000783546 00000 n 0000783718 00000 n 0000783890 00000 n 0000784062 00000 n 0000784234 00000 n 0000784406 00000 n 0000784578 00000 n 0000784750 00000 n 0000784922 00000 n 0000785094 00000 n 0000785266 00000 n 0000785438 00000 n 0000785610 00000 n 0000785782 00000 n 0000785954 00000 n 0000786126 00000 n 0000786298 00000 n 0000786470 00000 n 0000786642 00000 n 0000786814 00000 n 0000786986 00000 n 0000787158 00000 n 0000787330 00000 n 0000787502 00000 n 0000787674 00000 n 0000787811 00000 n 0000788211 00000 n 0000788129 00000 n 0000788044 00000 n 0000787956 00000 n 0000732872 00000 n 0000110594 00000 n 0000116652 00000 n 0000788341 00000 n 0000789710 00000 n 0000788665 00000 n 0000788580 00000 n 0000788493 00000 n 0000788986 00000 n 0000788901 00000 n 0000788814 00000 n 0000789307 00000 n 0000789222 00000 n 0000789135 00000 n 0000789628 00000 n 0000789543 00000 n 0000789456 00000 n 0000789880 00000 n 0000790025 00000 n 0000733041 00000 n 0000116675 00000 n 0000128676 00000 n 0000790424 00000 n 0000790342 00000 n 0000790257 00000 n 0000790170 00000 n 0000790570 00000 n 0000790722 00000 n 0000790874 00000 n 0000791026 00000 n 0000791196 00000 n 0000791348 00000 n 0000791518 00000 n 0000791670 00000 n 0000791822 00000 n 0000791974 00000 n 0000792145 00000 n 0000792298 00000 n 0000792451 00000 n 0000792604 00000 n 0000792757 00000 n 0000792910 00000 n 0000793063 00000 n 0000793216 00000 n 0000793369 00000 n 0000793522 00000 n 0000733210 00000 n 0000128700 00000 n 0000143965 00000 n 0000793659 00000 n 0000793811 00000 n 0000793963 00000 n 0000794115 00000 n 0000795163 00000 n 0000794439 00000 n 0000794354 00000 n 0000794267 00000 n 0000794760 00000 n 0000794675 00000 n 0000794588 00000 n 0000795081 00000 n 0000794996 00000 n 0000794909 00000 n 0000795325 00000 n 0000796374 00000 n 0000795649 00000 n 0000795564 00000 n 0000795477 00000 n 0000795970 00000 n 0000795885 00000 n 0000795798 00000 n 0000796292 00000 n 0000796207 00000 n 0000796119 00000 n 0000796536 00000 n 0000796689 00000 n 0000796842 00000 n 0000796995 00000 n 0000799961 00000 n 0000797321 00000 n 0000797236 00000 n 0000797148 00000 n 0000797643 00000 n 0000797558 00000 n 0000797470 00000 n 0000797965 00000 n 0000797880 00000 n 0000797792 00000 n 0000798287 00000 n 0000798202 00000 n 0000798114 00000 n 0000798609 00000 n 0000798524 00000 n 0000798436 00000 n 0000798931 00000 n 0000798846 00000 n 0000798758 00000 n 0000799253 00000 n 0000799168 00000 n 0000799080 00000 n 0000733380 00000 n 0000143989 00000 n 0000162886 00000 n 0000799558 00000 n 0000799473 00000 n 0000799386 00000 n 0000799879 00000 n 0000799794 00000 n 0000799707 00000 n 0000800171 00000 n 0000800324 00000 n 0000801051 00000 n 0000800648 00000 n 0000800563 00000 n 0000800476 00000 n 0000800969 00000 n 0000800884 00000 n 0000800797 00000 n 0000801205 00000 n 0000801357 00000 n 0000802084 00000 n 0000801681 00000 n 0000801596 00000 n 0000801509 00000 n 0000802002 00000 n 0000801917 00000 n 0000801830 00000 n 0000802238 00000 n 0000802392 00000 n 0000802545 00000 n 0000733550 00000 n 0000162910 00000 n 0000176683 00000 n 0000802682 00000 n 0000802834 00000 n 0000802987 00000 n 0000803139 00000 n 0000804982 00000 n 0000803463 00000 n 0000803378 00000 n 0000803291 00000 n 0000804900 00000 n 0000804807 00000 n 0000803612 00000 n 0000804710 00000 n 0000803954 00000 n 0000803869 00000 n 0000803782 00000 n 0000804291 00000 n 0000804206 00000 n 0000804119 00000 n 0000804628 00000 n 0000804543 00000 n 0000804456 00000 n 0000805136 00000 n 0000805306 00000 n 0000805459 00000 n 0000805630 00000 n 0000805783 00000 n 0000805936 00000 n 0000806089 00000 n 0000806277 00000 n 0000806449 00000 n 0000806621 00000 n 0000806785 00000 n 0000806957 00000 n 0000807121 00000 n 0000807293 00000 n 0000807457 00000 n 0000807629 00000 n 0000807801 00000 n 0000807973 00000 n 0000808145 00000 n 0000808317 00000 n 0000808489 00000 n 0000808661 00000 n 0000808833 00000 n 0000733720 00000 n 0000176707 00000 n 0000194249 00000 n 0000809005 00000 n 0000809176 00000 n 0000809347 00000 n 0000809518 00000 n 0000809689 00000 n 0000809860 00000 n 0000810012 00000 n 0000810164 00000 n 0000810316 00000 n 0000810468 00000 n 0000810621 00000 n 0000810774 00000 n 0000810927 00000 n 0000811080 00000 n 0000811234 00000 n 0000811387 00000 n 0000733890 00000 n 0000194273 00000 n 0000207630 00000 n 0000811608 00000 n 0000811779 00000 n 0000811950 00000 n 0000812102 00000 n 0000812255 00000 n 0000812407 00000 n 0000812560 00000 n 0000812712 00000 n 0000812865 00000 n 0000813017 00000 n 0000813171 00000 n 0000813324 00000 n 0000813477 00000 n 0000813630 00000 n 0000813818 00000 n 0000813990 00000 n 0000814162 00000 n 0000814334 00000 n 0000814471 00000 n 0000814616 00000 n 0000814804 00000 n 0000814976 00000 n 0000815148 00000 n 0000815320 00000 n 0000815492 00000 n 0000815629 00000 n 0000815774 00000 n 0000734060 00000 n 0000207654 00000 n 0000221937 00000 n 0000815911 00000 n 0000816098 00000 n 0000816269 00000 n 0000816440 00000 n 0000816611 00000 n 0000816782 00000 n 0000816918 00000 n 0000817063 00000 n 0000817215 00000 n 0000817367 00000 n 0000817520 00000 n 0000818249 00000 n 0000817845 00000 n 0000817760 00000 n 0000817672 00000 n 0000818167 00000 n 0000818082 00000 n 0000817994 00000 n 0000818403 00000 n 0000818556 00000 n 0000818709 00000 n 0000818863 00000 n 0000819593 00000 n 0000819189 00000 n 0000819104 00000 n 0000819016 00000 n 0000819511 00000 n 0000819426 00000 n 0000819338 00000 n 0000819747 00000 n 0000734230 00000 n 0000221961 00000 n 0000238714 00000 n 0000819884 00000 n 0000820037 00000 n 0000820189 00000 n 0000820341 00000 n 0000820493 00000 n 0000820646 00000 n 0000821373 00000 n 0000820970 00000 n 0000820885 00000 n 0000820798 00000 n 0000821291 00000 n 0000821206 00000 n 0000821119 00000 n 0000821527 00000 n 0000821679 00000 n 0000821832 00000 n 0000821985 00000 n 0000824137 00000 n 0000822311 00000 n 0000822226 00000 n 0000822138 00000 n 0000822633 00000 n 0000822548 00000 n 0000822460 00000 n 0000824055 00000 n 0000823962 00000 n 0000822782 00000 n 0000734400 00000 n 0000238738 00000 n 0000251948 00000 n 0000823865 00000 n 0000823109 00000 n 0000823024 00000 n 0000822937 00000 n 0000823446 00000 n 0000823361 00000 n 0000823274 00000 n 0000823783 00000 n 0000823698 00000 n 0000823611 00000 n 0000824299 00000 n 0000824486 00000 n 0000824657 00000 n 0000824828 00000 n 0000824999 00000 n 0000825170 00000 n 0000825341 00000 n 0000825512 00000 n 0000825684 00000 n 0000825856 00000 n 0000826028 00000 n 0000826200 00000 n 0000826372 00000 n 0000826509 00000 n 0000826654 00000 n 0000828350 00000 n 0000826980 00000 n 0000826895 00000 n 0000826807 00000 n 0000827302 00000 n 0000827217 00000 n 0000827129 00000 n 0000827624 00000 n 0000827539 00000 n 0000827451 00000 n 0000827946 00000 n 0000827861 00000 n 0000827773 00000 n 0000828268 00000 n 0000828183 00000 n 0000828095 00000 n 0000828528 00000 n 0000828682 00000 n 0000828835 00000 n 0000829023 00000 n 0000829195 00000 n 0000829359 00000 n 0000829531 00000 n 0000829703 00000 n 0000829867 00000 n 0000830039 00000 n 0000830211 00000 n 0000830383 00000 n 0000830555 00000 n 0000830719 00000 n 0000734570 00000 n 0000251972 00000 n 0000266458 00000 n 0000830891 00000 n 0000831062 00000 n 0000831198 00000 n 0000831343 00000 n 0000831495 00000 n 0000831647 00000 n 0000831799 00000 n 0000831951 00000 n 0000832121 00000 n 0000832273 00000 n 0000832425 00000 n 0000832577 00000 n 0000833629 00000 n 0000832903 00000 n 0000832818 00000 n 0000832730 00000 n 0000833225 00000 n 0000833140 00000 n 0000833052 00000 n 0000833547 00000 n 0000833462 00000 n 0000833374 00000 n 0000833791 00000 n 0000833944 00000 n 0000834097 00000 n 0000834250 00000 n 0000834404 00000 n 0000734740 00000 n 0000266482 00000 n 0000282955 00000 n 0000834541 00000 n 0000834693 00000 n 0000834846 00000 n 0000834998 00000 n 0000835725 00000 n 0000835322 00000 n 0000835237 00000 n 0000835150 00000 n 0000835643 00000 n 0000835558 00000 n 0000835471 00000 n 0000835879 00000 n 0000837249 00000 n 0000836203 00000 n 0000836118 00000 n 0000836031 00000 n 0000836524 00000 n 0000836439 00000 n 0000836352 00000 n 0000836845 00000 n 0000836760 00000 n 0000836673 00000 n 0000837167 00000 n 0000837082 00000 n 0000836994 00000 n 0000837419 00000 n 0000837572 00000 n 0000837726 00000 n 0000837914 00000 n 0000838086 00000 n 0000838258 00000 n 0000734910 00000 n 0000282979 00000 n 0000299920 00000 n 0000838395 00000 n 0000838548 00000 n 0000838700 00000 n 0000838852 00000 n 0000839004 00000 n 0000840823 00000 n 0000839328 00000 n 0000839243 00000 n 0000839156 00000 n 0000839649 00000 n 0000839564 00000 n 0000839477 00000 n 0000840741 00000 n 0000840648 00000 n 0000839798 00000 n 0000840559 00000 n 0000840140 00000 n 0000840055 00000 n 0000839968 00000 n 0000840477 00000 n 0000840392 00000 n 0000840305 00000 n 0000840985 00000 n 0000841139 00000 n 0000841292 00000 n 0000841445 00000 n 0000841633 00000 n 0000841786 00000 n 0000841939 00000 n 0000735080 00000 n 0000299944 00000 n 0000307822 00000 n 0000842076 00000 n 0000842228 00000 n 0000842380 00000 n 0000842926 00000 n 0000843092 00000 n 0000843244 00000 n 0000843396 00000 n 0000843549 00000 n 0000843701 00000 n 0000842568 00000 n 0000357717 00000 n 0000842767 00000 n 0000307845 00000 n 0000357693 00000 n 0000373763 00000 n 0000735250 00000 n 0000373787 00000 n 0000385383 00000 n 0000843837 00000 n 0000845206 00000 n 0000844161 00000 n 0000844076 00000 n 0000843989 00000 n 0000844482 00000 n 0000844397 00000 n 0000844310 00000 n 0000844803 00000 n 0000844718 00000 n 0000844631 00000 n 0000845124 00000 n 0000845039 00000 n 0000844952 00000 n 0000845376 00000 n 0000845529 00000 n 0000846577 00000 n 0000845853 00000 n 0000845768 00000 n 0000845681 00000 n 0000846174 00000 n 0000846089 00000 n 0000846002 00000 n 0000846495 00000 n 0000846410 00000 n 0000846323 00000 n 0000846739 00000 n 0000846893 00000 n 0000847945 00000 n 0000847219 00000 n 0000847134 00000 n 0000847046 00000 n 0000847541 00000 n 0000847456 00000 n 0000847368 00000 n 0000847863 00000 n 0000847778 00000 n 0000847690 00000 n 0000848107 00000 n 0000848261 00000 n 0000848414 00000 n 0000848567 00000 n 0000848720 00000 n 0000848873 00000 n 0000735420 00000 n 0000385407 00000 n 0000395424 00000 n 0000849272 00000 n 0000849190 00000 n 0000849105 00000 n 0000849018 00000 n 0000849418 00000 n 0000849570 00000 n 0000849722 00000 n 0000849874 00000 n 0000850026 00000 n 0000850178 00000 n 0000850330 00000 n 0000850483 00000 n 0000850670 00000 n 0000850841 00000 n 0000851013 00000 n 0000851177 00000 n 0000851349 00000 n 0000851521 00000 n 0000851693 00000 n 0000851865 00000 n 0000852029 00000 n 0000852201 00000 n 0000852373 00000 n 0000852537 00000 n 0000852709 00000 n 0000852881 00000 n 0000853053 00000 n 0000853225 00000 n 0000853389 00000 n 0000853561 00000 n 0000853733 00000 n 0000853905 00000 n 0000854069 00000 n 0000854241 00000 n 0000854405 00000 n 0000854577 00000 n 0000854741 00000 n 0000854913 00000 n 0000855077 00000 n 0000855214 00000 n 0000855359 00000 n 0000735590 00000 n 0000395447 00000 n 0000410530 00000 n 0000855496 00000 n 0000855649 00000 n 0000858302 00000 n 0000855973 00000 n 0000855888 00000 n 0000855801 00000 n 0000856294 00000 n 0000856209 00000 n 0000856122 00000 n 0000856615 00000 n 0000856530 00000 n 0000856443 00000 n 0000856936 00000 n 0000856851 00000 n 0000856764 00000 n 0000857257 00000 n 0000857172 00000 n 0000857085 00000 n 0000857578 00000 n 0000857493 00000 n 0000857406 00000 n 0000857899 00000 n 0000857814 00000 n 0000857727 00000 n 0000858220 00000 n 0000858135 00000 n 0000858048 00000 n 0000858504 00000 n 0000858692 00000 n 0000858864 00000 n 0000859036 00000 n 0000859208 00000 n 0000859380 00000 n 0000859552 00000 n 0000859724 00000 n 0000859896 00000 n 0000860069 00000 n 0000860242 00000 n 0000860415 00000 n 0000860588 00000 n 0000860761 00000 n 0000860915 00000 n 0000861070 00000 n 0000861224 00000 n 0000735760 00000 n 0000410554 00000 n 0000420710 00000 n 0000861412 00000 n 0000861601 00000 n 0000861774 00000 n 0000861947 00000 n 0000862120 00000 n 0000862293 00000 n 0000862466 00000 n 0000862639 00000 n 0000862812 00000 n 0000862985 00000 n 0000863159 00000 n 0000863333 00000 n 0000863507 00000 n 0000863646 00000 n 0000863793 00000 n 0000863983 00000 n 0000864157 00000 n 0000864331 00000 n 0000864505 00000 n 0000864679 00000 n 0000864853 00000 n 0000865027 00000 n 0000865201 00000 n 0000865375 00000 n 0000865549 00000 n 0000865723 00000 n 0000865862 00000 n 0000866009 00000 n 0000866199 00000 n 0000866373 00000 n 0000866547 00000 n 0000866721 00000 n 0000866895 00000 n 0000867069 00000 n 0000867243 00000 n 0000867417 00000 n 0000867591 00000 n 0000867765 00000 n 0000867939 00000 n 0000868078 00000 n 0000868225 00000 n 0000868415 00000 n 0000868589 00000 n 0000868763 00000 n 0000868937 00000 n 0000869111 00000 n 0000869285 00000 n 0000869459 00000 n 0000735932 00000 n 0000420735 00000 n 0000429265 00000 n 0000869633 00000 n 0000869806 00000 n 0000869979 00000 n 0000870152 00000 n 0000870325 00000 n 0000870498 00000 n 0000870636 00000 n 0000870783 00000 n 0000870972 00000 n 0000871145 00000 n 0000871318 00000 n 0000871491 00000 n 0000871665 00000 n 0000871839 00000 n 0000872013 00000 n 0000872187 00000 n 0000872361 00000 n 0000872535 00000 n 0000872709 00000 n 0000872883 00000 n 0000873022 00000 n 0000873169 00000 n 0000873359 00000 n 0000873533 00000 n 0000873707 00000 n 0000873881 00000 n 0000874055 00000 n 0000874229 00000 n 0000874403 00000 n 0000874577 00000 n 0000874751 00000 n 0000874925 00000 n 0000875099 00000 n 0000875273 00000 n 0000875447 00000 n 0000875586 00000 n 0000875733 00000 n 0000875923 00000 n 0000876097 00000 n 0000876271 00000 n 0000876445 00000 n 0000876619 00000 n 0000876793 00000 n 0000876967 00000 n 0000877141 00000 n 0000877315 00000 n 0000877489 00000 n 0000877663 00000 n 0000877837 00000 n 0000877976 00000 n 0000878123 00000 n 0000878313 00000 n 0000878487 00000 n 0000736104 00000 n 0000429289 00000 n 0000437194 00000 n 0000878661 00000 n 0000878834 00000 n 0000879007 00000 n 0000879180 00000 n 0000879353 00000 n 0000879526 00000 n 0000879699 00000 n 0000879872 00000 n 0000880010 00000 n 0000880157 00000 n 0000880346 00000 n 0000880519 00000 n 0000880693 00000 n 0000880867 00000 n 0000881041 00000 n 0000881215 00000 n 0000881389 00000 n 0000881563 00000 n 0000881737 00000 n 0000881911 00000 n 0000882085 00000 n 0000882259 00000 n 0000882433 00000 n 0000882607 00000 n 0000882746 00000 n 0000882893 00000 n 0000883083 00000 n 0000883257 00000 n 0000883431 00000 n 0000883605 00000 n 0000883779 00000 n 0000883953 00000 n 0000884127 00000 n 0000884301 00000 n 0000884475 00000 n 0000884649 00000 n 0000884788 00000 n 0000884935 00000 n 0000885125 00000 n 0000885299 00000 n 0000885473 00000 n 0000885647 00000 n 0000885821 00000 n 0000885995 00000 n 0000886169 00000 n 0000886343 00000 n 0000886517 00000 n 0000886691 00000 n 0000886865 00000 n 0000887039 00000 n 0000887213 00000 n 0000887387 00000 n 0000887526 00000 n 0000736276 00000 n 0000437218 00000 n 0000449336 00000 n 0000887657 00000 n 0000889072 00000 n 0000887990 00000 n 0000887901 00000 n 0000887811 00000 n 0000888322 00000 n 0000888233 00000 n 0000888143 00000 n 0000888654 00000 n 0000888565 00000 n 0000888475 00000 n 0000888986 00000 n 0000888897 00000 n 0000888807 00000 n 0000889283 00000 n 0000889456 00000 n 0000889629 00000 n 0000889802 00000 n 0000889975 00000 n 0000890148 00000 n 0000890322 00000 n 0000890496 00000 n 0000890670 00000 n 0000890844 00000 n 0000891018 00000 n 0000891192 00000 n 0000891366 00000 n 0000891540 00000 n 0000891714 00000 n 0000891888 00000 n 0000892027 00000 n 0000892174 00000 n 0000892364 00000 n 0000892538 00000 n 0000892712 00000 n 0000892886 00000 n 0000893060 00000 n 0000893234 00000 n 0000893408 00000 n 0000893582 00000 n 0000893756 00000 n 0000893930 00000 n 0000894104 00000 n 0000894278 00000 n 0000894452 00000 n 0000894626 00000 n 0000894800 00000 n 0000894939 00000 n 0000895086 00000 n 0000896821 00000 n 0000895421 00000 n 0000895332 00000 n 0000895241 00000 n 0000895754 00000 n 0000895665 00000 n 0000895574 00000 n 0000896087 00000 n 0000895998 00000 n 0000895907 00000 n 0000736448 00000 n 0000449361 00000 n 0000462045 00000 n 0000896403 00000 n 0000896314 00000 n 0000896224 00000 n 0000896735 00000 n 0000896646 00000 n 0000896556 00000 n 0000897041 00000 n 0000897214 00000 n 0000897387 00000 n 0000897560 00000 n 0000897733 00000 n 0000897906 00000 n 0000898079 00000 n 0000898252 00000 n 0000898425 00000 n 0000898599 00000 n 0000898773 00000 n 0000898947 00000 n 0000899121 00000 n 0000899295 00000 n 0000899469 00000 n 0000899643 00000 n 0000899817 00000 n 0000899991 00000 n 0000900165 00000 n 0000900339 00000 n 0000900494 00000 n 0000900650 00000 n 0000902736 00000 n 0000900985 00000 n 0000900896 00000 n 0000900805 00000 n 0000901318 00000 n 0000901229 00000 n 0000901138 00000 n 0000901651 00000 n 0000901562 00000 n 0000901471 00000 n 0000901984 00000 n 0000901895 00000 n 0000901804 00000 n 0000902317 00000 n 0000902228 00000 n 0000902137 00000 n 0000902650 00000 n 0000902561 00000 n 0000902470 00000 n 0000902930 00000 n 0000903120 00000 n 0000903294 00000 n 0000903468 00000 n 0000903642 00000 n 0000903816 00000 n 0000903990 00000 n 0000904164 00000 n 0000736620 00000 n 0000462070 00000 n 0000472593 00000 n 0000904338 00000 n 0000904511 00000 n 0000904684 00000 n 0000904857 00000 n 0000905030 00000 n 0000905203 00000 n 0000905376 00000 n 0000905549 00000 n 0000905722 00000 n 0000905895 00000 n 0000906068 00000 n 0000906242 00000 n 0000906416 00000 n 0000906590 00000 n 0000906764 00000 n 0000906903 00000 n 0000907050 00000 n 0000907240 00000 n 0000907414 00000 n 0000907588 00000 n 0000907762 00000 n 0000907936 00000 n 0000908110 00000 n 0000908284 00000 n 0000908458 00000 n 0000908632 00000 n 0000908806 00000 n 0000908980 00000 n 0000909154 00000 n 0000909328 00000 n 0000909502 00000 n 0000909676 00000 n 0000909850 00000 n 0000910024 00000 n 0000910198 00000 n 0000910372 00000 n 0000910527 00000 n 0000910682 00000 n 0000910837 00000 n 0000914569 00000 n 0000911172 00000 n 0000911083 00000 n 0000910992 00000 n 0000911505 00000 n 0000911416 00000 n 0000911325 00000 n 0000911838 00000 n 0000911749 00000 n 0000911658 00000 n 0000912171 00000 n 0000912082 00000 n 0000911991 00000 n 0000912504 00000 n 0000912415 00000 n 0000912324 00000 n 0000912837 00000 n 0000912748 00000 n 0000912657 00000 n 0000913170 00000 n 0000913081 00000 n 0000912990 00000 n 0000913503 00000 n 0000913414 00000 n 0000913323 00000 n 0000736792 00000 n 0000472618 00000 n 0000480992 00000 n 0000913819 00000 n 0000913730 00000 n 0000913640 00000 n 0000914151 00000 n 0000914062 00000 n 0000913972 00000 n 0000914483 00000 n 0000914394 00000 n 0000914304 00000 n 0000914808 00000 n 0000917688 00000 n 0000915141 00000 n 0000915052 00000 n 0000914962 00000 n 0000915473 00000 n 0000915384 00000 n 0000915294 00000 n 0000915805 00000 n 0000915716 00000 n 0000915626 00000 n 0000916137 00000 n 0000916048 00000 n 0000915958 00000 n 0000917269 00000 n 0000917171 00000 n 0000916290 00000 n 0000917077 00000 n 0000916642 00000 n 0000916553 00000 n 0000916463 00000 n 0000916991 00000 n 0000916902 00000 n 0000916811 00000 n 0000917602 00000 n 0000917513 00000 n 0000917422 00000 n 0000917882 00000 n 0000736964 00000 n 0000481016 00000 n 0000493120 00000 n 0000918294 00000 n 0000918208 00000 n 0000918119 00000 n 0000918029 00000 n 0000918443 00000 n 0000918597 00000 n 0000918751 00000 n 0000918905 00000 n 0000919059 00000 n 0000919231 00000 n 0000919385 00000 n 0000919539 00000 n 0000919693 00000 n 0000919848 00000 n 0000920021 00000 n 0000920176 00000 n 0000922262 00000 n 0000920511 00000 n 0000920422 00000 n 0000920331 00000 n 0000920844 00000 n 0000920755 00000 n 0000920664 00000 n 0000921177 00000 n 0000921088 00000 n 0000920997 00000 n 0000921510 00000 n 0000921421 00000 n 0000921330 00000 n 0000921843 00000 n 0000921754 00000 n 0000921663 00000 n 0000922176 00000 n 0000922087 00000 n 0000921996 00000 n 0000922456 00000 n 0000922629 00000 n 0000922784 00000 n 0000922939 00000 n 0000923095 00000 n 0000923250 00000 n 0000737136 00000 n 0000493145 00000 n 0000505742 00000 n 0000923389 00000 n 0000923544 00000 n 0000923733 00000 n 0000923906 00000 n 0000924044 00000 n 0000924191 00000 n 0000924380 00000 n 0000924553 00000 n 0000924726 00000 n 0000924880 00000 n 0000925034 00000 n 0000925188 00000 n 0000925942 00000 n 0000925523 00000 n 0000925434 00000 n 0000925343 00000 n 0000925856 00000 n 0000925767 00000 n 0000925676 00000 n 0000926135 00000 n 0000926309 00000 n 0000927047 00000 n 0000926628 00000 n 0000926539 00000 n 0000926448 00000 n 0000926961 00000 n 0000926872 00000 n 0000926781 00000 n 0000927240 00000 n 0000927414 00000 n 0000927553 00000 n 0000928299 00000 n 0000927880 00000 n 0000927791 00000 n 0000927700 00000 n 0000928213 00000 n 0000928124 00000 n 0000928033 00000 n 0000928457 00000 n 0000928612 00000 n 0000929033 00000 n 0000928947 00000 n 0000928858 00000 n 0000928767 00000 n 0000929764 00000 n 0000929362 00000 n 0000929273 00000 n 0000929182 00000 n 0000737308 00000 n 0000505767 00000 n 0000519553 00000 n 0000929678 00000 n 0000929589 00000 n 0000929499 00000 n 0000929957 00000 n 0000930692 00000 n 0000930274 00000 n 0000930185 00000 n 0000930095 00000 n 0000930606 00000 n 0000930517 00000 n 0000930427 00000 n 0000930850 00000 n 0000931004 00000 n 0000931158 00000 n 0000931347 00000 n 0000931520 00000 n 0000931693 00000 n 0000931866 00000 n 0000932040 00000 n 0000932214 00000 n 0000932388 00000 n 0000932562 00000 n 0000932736 00000 n 0000932910 00000 n 0000933084 00000 n 0000933258 00000 n 0000933432 00000 n 0000933606 00000 n 0000933780 00000 n 0000933954 00000 n 0000934128 00000 n 0000934302 00000 n 0000934476 00000 n 0000934650 00000 n 0000934824 00000 n 0000934998 00000 n 0000935172 00000 n 0000935346 00000 n 0000935520 00000 n 0000935694 00000 n 0000935868 00000 n 0000936042 00000 n 0000936216 00000 n 0000936390 00000 n 0000936564 00000 n 0000936703 00000 n 0000936850 00000 n 0000737480 00000 n 0000519578 00000 n 0000533947 00000 n 0000937039 00000 n 0000937193 00000 n 0000937347 00000 n 0000937501 00000 n 0000937655 00000 n 0000937844 00000 n 0000938017 00000 n 0000938190 00000 n 0000938363 00000 n 0000938536 00000 n 0000938710 00000 n 0000938884 00000 n 0000939058 00000 n 0000939232 00000 n 0000939406 00000 n 0000939545 00000 n 0000939692 00000 n 0000940446 00000 n 0000940027 00000 n 0000939938 00000 n 0000939847 00000 n 0000940360 00000 n 0000940271 00000 n 0000940180 00000 n 0000940604 00000 n 0000940759 00000 n 0000940914 00000 n 0000941069 00000 n 0000941224 00000 n 0000941380 00000 n 0000941535 00000 n 0000941690 00000 n 0000737652 00000 n 0000533972 00000 n 0000549325 00000 n 0000943154 00000 n 0000942024 00000 n 0000941935 00000 n 0000941845 00000 n 0000942372 00000 n 0000942283 00000 n 0000942193 00000 n 0000942720 00000 n 0000942631 00000 n 0000942541 00000 n 0000943068 00000 n 0000942979 00000 n 0000942889 00000 n 0000943330 00000 n 0000943502 00000 n 0000943656 00000 n 0000943845 00000 n 0000944015 00000 n 0000944799 00000 n 0000944364 00000 n 0000944275 00000 n 0000944185 00000 n 0000944713 00000 n 0000944624 00000 n 0000944533 00000 n 0000944957 00000 n 0000945113 00000 n 0000945268 00000 n 0000946055 00000 n 0000945637 00000 n 0000945548 00000 n 0000945423 00000 n 0000737824 00000 n 0000549350 00000 n 0000559472 00000 n 0000945969 00000 n 0000945880 00000 n 0000945790 00000 n 0000946248 00000 n 0000946386 00000 n 0000946798 00000 n 0000946712 00000 n 0000946623 00000 n 0000946533 00000 n 0000946947 00000 n 0000947698 00000 n 0000947280 00000 n 0000947191 00000 n 0000947101 00000 n 0000947612 00000 n 0000947523 00000 n 0000947433 00000 n 0000947891 00000 n 0000948064 00000 n 0000948237 00000 n 0000948375 00000 n 0000948522 00000 n 0000949657 00000 n 0000948873 00000 n 0000948784 00000 n 0000948693 00000 n 0000949222 00000 n 0000949133 00000 n 0000949042 00000 n 0000949571 00000 n 0000949482 00000 n 0000949391 00000 n 0000949824 00000 n 0000950014 00000 n 0000950188 00000 n 0000950362 00000 n 0000950501 00000 n 0000950648 00000 n 0000737996 00000 n 0000559497 00000 n 0000570108 00000 n 0000951068 00000 n 0000950982 00000 n 0000950893 00000 n 0000950803 00000 n 0000951217 00000 n 0000951371 00000 n 0000951560 00000 n 0000951733 00000 n 0000951906 00000 n 0000952079 00000 n 0000952252 00000 n 0000952425 00000 n 0000952598 00000 n 0000952771 00000 n 0000952945 00000 n 0000953119 00000 n 0000953293 00000 n 0000953467 00000 n 0000953641 00000 n 0000953815 00000 n 0000953989 00000 n 0000954163 00000 n 0000954337 00000 n 0000954511 00000 n 0000954685 00000 n 0000954859 00000 n 0000955033 00000 n 0000955207 00000 n 0000955381 00000 n 0000955555 00000 n 0000955729 00000 n 0000955903 00000 n 0000956077 00000 n 0000956251 00000 n 0000956425 00000 n 0000956599 00000 n 0000956738 00000 n 0000956885 00000 n 0000958131 00000 n 0000957220 00000 n 0000957131 00000 n 0000957040 00000 n 0000957553 00000 n 0000957464 00000 n 0000957373 00000 n 0000958045 00000 n 0000957947 00000 n 0000957706 00000 n 0000957864 00000 n 0001005797 00000 n 0000958916 00000 n 0000958449 00000 n 0000958282 00000 n 0000958767 00000 n 0000958598 00000 n 0000959449 00000 n 0000959287 00000 n 0000959074 00000 n 0000960232 00000 n 0000959765 00000 n 0000959598 00000 n 0000960083 00000 n 0000959914 00000 n 0000738168 00000 n 0000570133 00000 n 0000581602 00000 n 0000961022 00000 n 0000960556 00000 n 0000960390 00000 n 0000960873 00000 n 0000960705 00000 n 0000961805 00000 n 0000961346 00000 n 0000961180 00000 n 0000961656 00000 n 0000961495 00000 n 0000962595 00000 n 0000962129 00000 n 0000961963 00000 n 0000962446 00000 n 0000962278 00000 n 0000963385 00000 n 0000962919 00000 n 0000962753 00000 n 0000963236 00000 n 0000963068 00000 n 0000964175 00000 n 0000963709 00000 n 0000963543 00000 n 0000964026 00000 n 0000963858 00000 n 0000964966 00000 n 0000964499 00000 n 0000964333 00000 n 0000964817 00000 n 0000964648 00000 n 0000965758 00000 n 0000965291 00000 n 0000965124 00000 n 0000965609 00000 n 0000965440 00000 n 0000966552 00000 n 0000966084 00000 n 0000965916 00000 n 0000966403 00000 n 0000966233 00000 n 0000967344 00000 n 0000966877 00000 n 0000966710 00000 n 0000967195 00000 n 0000967026 00000 n 0000968136 00000 n 0000967669 00000 n 0000967502 00000 n 0000967987 00000 n 0000967818 00000 n 0000968928 00000 n 0000968461 00000 n 0000968294 00000 n 0000968779 00000 n 0000968610 00000 n 0000969461 00000 n 0000969299 00000 n 0000969086 00000 n 0000970244 00000 n 0000969777 00000 n 0000969610 00000 n 0000970095 00000 n 0000969926 00000 n 0000971036 00000 n 0000970569 00000 n 0000970402 00000 n 0000970887 00000 n 0000970718 00000 n 0000971828 00000 n 0000971361 00000 n 0000971194 00000 n 0000971679 00000 n 0000971510 00000 n 0000972620 00000 n 0000972153 00000 n 0000971986 00000 n 0000972471 00000 n 0000972302 00000 n 0000973414 00000 n 0000972946 00000 n 0000972778 00000 n 0000973265 00000 n 0000973095 00000 n 0000974206 00000 n 0000973739 00000 n 0000973572 00000 n 0000974057 00000 n 0000973888 00000 n 0000974739 00000 n 0000974577 00000 n 0000974364 00000 n 0000975522 00000 n 0000975055 00000 n 0000974888 00000 n 0000975373 00000 n 0000975204 00000 n 0000976314 00000 n 0000975847 00000 n 0000975680 00000 n 0000976165 00000 n 0000975996 00000 n 0000977106 00000 n 0000976639 00000 n 0000976472 00000 n 0000976957 00000 n 0000976788 00000 n 0000738340 00000 n 0000581627 00000 n 0000592572 00000 n 0000977896 00000 n 0000977430 00000 n 0000977264 00000 n 0000977747 00000 n 0000977579 00000 n 0000978686 00000 n 0000978220 00000 n 0000978054 00000 n 0000978537 00000 n 0000978369 00000 n 0000979476 00000 n 0000979010 00000 n 0000978844 00000 n 0000979327 00000 n 0000979159 00000 n 0000980008 00000 n 0000979846 00000 n 0000979634 00000 n 0000980789 00000 n 0000980323 00000 n 0000980157 00000 n 0000980640 00000 n 0000980472 00000 n 0000981580 00000 n 0000981113 00000 n 0000980947 00000 n 0000981431 00000 n 0000981262 00000 n 0000982372 00000 n 0000981905 00000 n 0000981738 00000 n 0000982223 00000 n 0000982054 00000 n 0000983164 00000 n 0000982697 00000 n 0000982530 00000 n 0000983015 00000 n 0000982846 00000 n 0000983697 00000 n 0000983535 00000 n 0000983322 00000 n 0000984480 00000 n 0000984013 00000 n 0000983846 00000 n 0000984331 00000 n 0000984162 00000 n 0000985272 00000 n 0000984805 00000 n 0000984638 00000 n 0000985123 00000 n 0000984954 00000 n 0000986064 00000 n 0000985597 00000 n 0000985430 00000 n 0000985915 00000 n 0000985746 00000 n 0000986856 00000 n 0000986389 00000 n 0000986222 00000 n 0000986707 00000 n 0000986538 00000 n 0000987648 00000 n 0000987181 00000 n 0000987014 00000 n 0000987499 00000 n 0000987330 00000 n 0000988440 00000 n 0000987973 00000 n 0000987806 00000 n 0000988291 00000 n 0000988122 00000 n 0000989232 00000 n 0000988765 00000 n 0000988598 00000 n 0000989083 00000 n 0000988914 00000 n 0000990024 00000 n 0000989557 00000 n 0000989390 00000 n 0000989875 00000 n 0000989706 00000 n 0000990557 00000 n 0000990395 00000 n 0000990182 00000 n 0000991340 00000 n 0000990873 00000 n 0000990706 00000 n 0000991191 00000 n 0000991022 00000 n 0000992132 00000 n 0000991665 00000 n 0000991498 00000 n 0000991983 00000 n 0000991814 00000 n 0000992924 00000 n 0000992457 00000 n 0000992290 00000 n 0000992775 00000 n 0000992606 00000 n 0000993716 00000 n 0000993249 00000 n 0000993082 00000 n 0000993567 00000 n 0000993398 00000 n 0000994508 00000 n 0000994041 00000 n 0000993874 00000 n 0000994359 00000 n 0000994190 00000 n 0000738512 00000 n 0000592597 00000 n 0000604652 00000 n 0000995298 00000 n 0000994832 00000 n 0000994666 00000 n 0000995149 00000 n 0000994981 00000 n 0000995830 00000 n 0000995668 00000 n 0000995456 00000 n 0000996611 00000 n 0000996145 00000 n 0000995979 00000 n 0000996462 00000 n 0000996294 00000 n 0000997401 00000 n 0000996935 00000 n 0000996769 00000 n 0000997252 00000 n 0000997084 00000 n 0000997933 00000 n 0000997771 00000 n 0000997559 00000 n 0000998714 00000 n 0000998248 00000 n 0000998082 00000 n 0000998565 00000 n 0000998397 00000 n 0000999506 00000 n 0000999039 00000 n 0000998872 00000 n 0000999357 00000 n 0000999188 00000 n 0001000300 00000 n 0000999832 00000 n 0000999664 00000 n 0001000151 00000 n 0000999981 00000 n 0001001094 00000 n 0001000626 00000 n 0001000458 00000 n 0001000945 00000 n 0001000775 00000 n 0001001886 00000 n 0001001419 00000 n 0001001252 00000 n 0001001737 00000 n 0001001568 00000 n 0001002678 00000 n 0001002211 00000 n 0001002044 00000 n 0001002529 00000 n 0001002360 00000 n 0001003472 00000 n 0001003004 00000 n 0001002836 00000 n 0001003323 00000 n 0001003153 00000 n 0001004264 00000 n 0001003797 00000 n 0001003630 00000 n 0001004115 00000 n 0001003946 00000 n 0001004797 00000 n 0001004635 00000 n 0001004422 00000 n 0001005580 00000 n 0001005113 00000 n 0001004946 00000 n 0001005431 00000 n 0001005262 00000 n 0001006504 00000 n 0001006651 00000 n 0001006806 00000 n 0000738684 00000 n 0000604677 00000 n 0000611894 00000 n 0001007874 00000 n 0001007124 00000 n 0001007035 00000 n 0001006945 00000 n 0001007456 00000 n 0001007367 00000 n 0001007277 00000 n 0001007788 00000 n 0001007699 00000 n 0001007609 00000 n 0001008041 00000 n 0001008195 00000 n 0001009278 00000 n 0001008528 00000 n 0001008439 00000 n 0001008349 00000 n 0001008860 00000 n 0001008771 00000 n 0001008681 00000 n 0001009192 00000 n 0001009103 00000 n 0001009013 00000 n 0001009445 00000 n 0001009599 00000 n 0001027887 00000 n 0001028043 00000 n 0001028211 00000 n 0001027429 00000 n 0000630665 00000 n 0000629885 00000 n 0000611942 00000 n 0000611918 00000 n 0000630121 00000 n 0000643258 00000 n 0000642699 00000 n 0000630868 00000 n 0000630844 00000 n 0000642942 00000 n 0000651127 00000 n 0000650606 00000 n 0000643465 00000 n 0000643442 00000 n 0000650841 00000 n 0000654661 00000 n 0000654395 00000 n 0000651337 00000 n 0000651314 00000 n 0000654635 00000 n 0000661766 00000 n 0000661270 00000 n 0000654864 00000 n 0000654841 00000 n 0000661518 00000 n 0000670029 00000 n 0000669728 00000 n 0000661975 00000 n 0000661952 00000 n 0000669967 00000 n 0000690457 00000 n 0000689650 00000 n 0000670231 00000 n 0000670207 00000 n 0000689879 00000 n 0000699984 00000 n 0000699524 00000 n 0000690663 00000 n 0000690640 00000 n 0000699768 00000 n 0000712457 00000 n 0000711708 00000 n 0000700192 00000 n 0000700168 00000 n 0000711943 00000 n 0000729727 00000 n 0000728936 00000 n 0000712669 00000 n 0000712645 00000 n 0000729175 00000 n 0000730987 00000 n 0000730409 00000 n 0000729939 00000 n 0000729917 00000 n 0000730637 00000 n 0000730685 00000 n 0000730663 00000 n 0000731160 00000 n 0000731342 00000 n 0001016933 00000 n 0000738856 00000 n 0000739015 00000 n 0000739174 00000 n 0000739315 00000 n 0000739456 00000 n 0000739597 00000 n 0000739739 00000 n 0000739906 00000 n 0000740048 00000 n 0000740215 00000 n 0000740357 00000 n 0000740499 00000 n 0000740641 00000 n 0000740783 00000 n 0000740925 00000 n 0000741074 00000 n 0000741201 00000 n 0000741335 00000 n 0000741552 00000 n 0000741787 00000 n 0000742022 00000 n 0000742257 00000 n 0000742493 00000 n 0000742730 00000 n 0000742967 00000 n 0000743204 00000 n 0000743441 00000 n 0000743678 00000 n 0000743915 00000 n 0000744152 00000 n 0000744389 00000 n 0000744626 00000 n 0000744863 00000 n 0000745100 00000 n 0000745337 00000 n 0000745574 00000 n 0000745811 00000 n 0000746048 00000 n 0000746285 00000 n 0000746522 00000 n 0000746759 00000 n 0000746996 00000 n 0000747233 00000 n 0000747470 00000 n 0000747707 00000 n 0000747944 00000 n 0000748181 00000 n 0000748418 00000 n 0000748655 00000 n 0000748892 00000 n 0000749129 00000 n 0000749366 00000 n 0000749603 00000 n 0000749840 00000 n 0000750077 00000 n 0000750318 00000 n 0000750559 00000 n 0000750800 00000 n 0000751041 00000 n 0000751282 00000 n 0000751523 00000 n 0000751764 00000 n 0000752005 00000 n 0000752246 00000 n 0000752487 00000 n 0000752728 00000 n 0000752969 00000 n 0000753210 00000 n 0000753451 00000 n 0000753692 00000 n 0000753933 00000 n 0000754176 00000 n 0000754419 00000 n 0000754662 00000 n 0000754905 00000 n 0000755148 00000 n 0000755391 00000 n 0000755634 00000 n 0000755877 00000 n 0000756120 00000 n 0000756363 00000 n 0000756606 00000 n 0000756849 00000 n 0000757092 00000 n 0000757335 00000 n 0000757578 00000 n 0000757821 00000 n 0000758064 00000 n 0000758307 00000 n 0000758550 00000 n 0000759411 00000 n 0000759540 00000 n 0000759685 00000 n 0000760085 00000 n 0000760237 00000 n 0000760389 00000 n 0000760541 00000 n 0000760742 00000 n 0000760900 00000 n 0000761045 00000 n 0000761190 00000 n 0000761335 00000 n 0000761480 00000 n 0000761625 00000 n 0000761770 00000 n 0000761915 00000 n 0000762060 00000 n 0000762212 00000 n 0000762364 00000 n 0000762516 00000 n 0000762668 00000 n 0000762989 00000 n 0000763310 00000 n 0000763632 00000 n 0000763954 00000 n 0000764387 00000 n 0000764540 00000 n 0000764678 00000 n 0000764850 00000 n 0000764988 00000 n 0000765160 00000 n 0000765298 00000 n 0000765468 00000 n 0000765629 00000 n 0000765767 00000 n 0000765939 00000 n 0000766077 00000 n 0000766249 00000 n 0000766387 00000 n 0000766557 00000 n 0000766718 00000 n 0000766856 00000 n 0000767028 00000 n 0000767166 00000 n 0000767338 00000 n 0000767476 00000 n 0000767646 00000 n 0000767807 00000 n 0000767945 00000 n 0000768117 00000 n 0000768256 00000 n 0000768428 00000 n 0000768567 00000 n 0000768737 00000 n 0000768898 00000 n 0000769037 00000 n 0000769209 00000 n 0000769348 00000 n 0000769520 00000 n 0000769659 00000 n 0000769829 00000 n 0000769990 00000 n 0000770241 00000 n 0000770370 00000 n 0000770523 00000 n 0000770845 00000 n 0000771254 00000 n 0000771407 00000 n 0000771560 00000 n 0000771713 00000 n 0000772035 00000 n 0000772357 00000 n 0000772679 00000 n 0000773001 00000 n 0000773323 00000 n 0000773645 00000 n 0000773967 00000 n 0000774322 00000 n 0000774643 00000 n 0000775115 00000 n 0000775267 00000 n 0000775419 00000 n 0000775466 00000 n 0000775629 00000 n 0000775960 00000 n 0000776368 00000 n 0000776520 00000 n 0000776673 00000 n 0000776720 00000 n 0000776884 00000 n 0000777048 00000 n 0000777201 00000 n 0000777354 00000 n 0000777507 00000 n 0000777660 00000 n 0000777813 00000 n 0000777949 00000 n 0000778101 00000 n 0000778422 00000 n 0000778743 00000 n 0000779064 00000 n 0000779488 00000 n 0000779640 00000 n 0000780040 00000 n 0000780192 00000 n 0000780239 00000 n 0000780402 00000 n 0000780731 00000 n 0000781052 00000 n 0000781373 00000 n 0000781694 00000 n 0000782015 00000 n 0000782336 00000 n 0000782657 00000 n 0000782979 00000 n 0000783444 00000 n 0000783632 00000 n 0000783804 00000 n 0000783976 00000 n 0000784148 00000 n 0000784320 00000 n 0000784492 00000 n 0000784664 00000 n 0000784836 00000 n 0000785008 00000 n 0000785180 00000 n 0000785352 00000 n 0000785524 00000 n 0000785696 00000 n 0000785868 00000 n 0000786040 00000 n 0000786212 00000 n 0000786384 00000 n 0000786556 00000 n 0000786728 00000 n 0000786900 00000 n 0000787072 00000 n 0000787244 00000 n 0000787416 00000 n 0000787588 00000 n 0000787760 00000 n 0000787889 00000 n 0000788290 00000 n 0000788426 00000 n 0000788747 00000 n 0000789068 00000 n 0000789389 00000 n 0000789813 00000 n 0000789958 00000 n 0000790103 00000 n 0000790503 00000 n 0000790655 00000 n 0000790807 00000 n 0000790959 00000 n 0000791111 00000 n 0000791281 00000 n 0000791433 00000 n 0000791603 00000 n 0000791755 00000 n 0000791907 00000 n 0000792060 00000 n 0000792231 00000 n 0000792384 00000 n 0000792537 00000 n 0000792690 00000 n 0000792843 00000 n 0000792996 00000 n 0000793149 00000 n 0000793302 00000 n 0000793455 00000 n 0000793608 00000 n 0000793744 00000 n 0000793896 00000 n 0000794048 00000 n 0000794200 00000 n 0000794521 00000 n 0000794842 00000 n 0000795258 00000 n 0000795410 00000 n 0000795731 00000 n 0000796052 00000 n 0000796469 00000 n 0000796622 00000 n 0000796775 00000 n 0000796928 00000 n 0000797081 00000 n 0000797403 00000 n 0000797725 00000 n 0000798047 00000 n 0000798369 00000 n 0000798691 00000 n 0000799013 00000 n 0000799335 00000 n 0000799640 00000 n 0000800104 00000 n 0000800257 00000 n 0000800409 00000 n 0000800730 00000 n 0000801138 00000 n 0000801290 00000 n 0000801442 00000 n 0000801763 00000 n 0000802171 00000 n 0000802325 00000 n 0000802478 00000 n 0000802631 00000 n 0000802767 00000 n 0000802920 00000 n 0000803072 00000 n 0000803224 00000 n 0000803545 00000 n 0000803699 00000 n 0000804036 00000 n 0000804373 00000 n 0000805069 00000 n 0000805221 00000 n 0000805392 00000 n 0000805545 00000 n 0000805716 00000 n 0000805869 00000 n 0000806022 00000 n 0000806175 00000 n 0000806363 00000 n 0000806535 00000 n 0000806699 00000 n 0000806871 00000 n 0000807035 00000 n 0000807207 00000 n 0000807371 00000 n 0000807543 00000 n 0000807715 00000 n 0000807887 00000 n 0000808059 00000 n 0000808231 00000 n 0000808403 00000 n 0000808575 00000 n 0000808747 00000 n 0000808919 00000 n 0000809090 00000 n 0000809261 00000 n 0000809432 00000 n 0000809603 00000 n 0000809774 00000 n 0000809945 00000 n 0000810097 00000 n 0000810249 00000 n 0000810401 00000 n 0000810554 00000 n 0000810707 00000 n 0000810860 00000 n 0000811013 00000 n 0000811167 00000 n 0000811320 00000 n 0000811506 00000 n 0000811693 00000 n 0000811864 00000 n 0000812035 00000 n 0000812188 00000 n 0000812340 00000 n 0000812493 00000 n 0000812645 00000 n 0000812798 00000 n 0000812950 00000 n 0000813104 00000 n 0000813257 00000 n 0000813410 00000 n 0000813563 00000 n 0000813716 00000 n 0000813904 00000 n 0000814076 00000 n 0000814248 00000 n 0000814420 00000 n 0000814549 00000 n 0000814702 00000 n 0000814890 00000 n 0000815062 00000 n 0000815234 00000 n 0000815406 00000 n 0000815578 00000 n 0000815707 00000 n 0000815860 00000 n 0000815996 00000 n 0000816183 00000 n 0000816354 00000 n 0000816525 00000 n 0000816696 00000 n 0000816867 00000 n 0000816996 00000 n 0000817148 00000 n 0000817300 00000 n 0000817453 00000 n 0000817605 00000 n 0000817927 00000 n 0000818336 00000 n 0000818489 00000 n 0000818642 00000 n 0000818796 00000 n 0000818949 00000 n 0000819271 00000 n 0000819680 00000 n 0000819833 00000 n 0000819970 00000 n 0000820122 00000 n 0000820274 00000 n 0000820426 00000 n 0000820579 00000 n 0000820731 00000 n 0000821052 00000 n 0000821460 00000 n 0000821612 00000 n 0000821765 00000 n 0000821918 00000 n 0000822071 00000 n 0000822393 00000 n 0000822715 00000 n 0000822870 00000 n 0000823191 00000 n 0000823528 00000 n 0000824232 00000 n 0000824384 00000 n 0000824571 00000 n 0000824742 00000 n 0000824913 00000 n 0000825084 00000 n 0000825255 00000 n 0000825426 00000 n 0000825598 00000 n 0000825770 00000 n 0000825942 00000 n 0000826114 00000 n 0000826286 00000 n 0000826458 00000 n 0000826587 00000 n 0000826740 00000 n 0000827062 00000 n 0000827384 00000 n 0000827706 00000 n 0000828028 00000 n 0000828461 00000 n 0000828615 00000 n 0000828768 00000 n 0000828921 00000 n 0000829109 00000 n 0000829273 00000 n 0000829445 00000 n 0000829617 00000 n 0000829781 00000 n 0000829953 00000 n 0000830125 00000 n 0000830297 00000 n 0000830469 00000 n 0000830633 00000 n 0000830805 00000 n 0000830976 00000 n 0000831147 00000 n 0000831276 00000 n 0000831428 00000 n 0000831580 00000 n 0000831732 00000 n 0000831884 00000 n 0000832036 00000 n 0000832206 00000 n 0000832358 00000 n 0000832510 00000 n 0000832663 00000 n 0000832985 00000 n 0000833307 00000 n 0000833724 00000 n 0000833877 00000 n 0000834030 00000 n 0000834183 00000 n 0000834337 00000 n 0000834490 00000 n 0000834626 00000 n 0000834779 00000 n 0000834931 00000 n 0000835083 00000 n 0000835404 00000 n 0000835812 00000 n 0000835964 00000 n 0000836285 00000 n 0000836606 00000 n 0000836927 00000 n 0000837352 00000 n 0000837505 00000 n 0000837659 00000 n 0000837812 00000 n 0000838000 00000 n 0000838172 00000 n 0000838344 00000 n 0000838481 00000 n 0000838633 00000 n 0000838785 00000 n 0000838937 00000 n 0000839089 00000 n 0000839410 00000 n 0000839731 00000 n 0000839885 00000 n 0000840222 00000 n 0000840918 00000 n 0000841072 00000 n 0000841225 00000 n 0000841378 00000 n 0000841531 00000 n 0000841719 00000 n 0000841872 00000 n 0000842025 00000 n 0000842161 00000 n 0000842313 00000 n 0000842465 00000 n 0000842660 00000 n 0000842859 00000 n 0000843025 00000 n 0000843177 00000 n 0000843329 00000 n 0000843482 00000 n 0000843634 00000 n 0000843786 00000 n 0000843922 00000 n 0000844243 00000 n 0000844564 00000 n 0000844885 00000 n 0000845309 00000 n 0000845462 00000 n 0000845614 00000 n 0000845935 00000 n 0000846256 00000 n 0000846672 00000 n 0000846826 00000 n 0000846979 00000 n 0000847301 00000 n 0000847623 00000 n 0000848040 00000 n 0000848194 00000 n 0000848347 00000 n 0000848500 00000 n 0000848653 00000 n 0000848806 00000 n 0000848951 00000 n 0000849351 00000 n 0000849503 00000 n 0000849655 00000 n 0000849807 00000 n 0000849959 00000 n 0000850111 00000 n 0000850263 00000 n 0000850416 00000 n 0000850568 00000 n 0000850755 00000 n 0000850927 00000 n 0000851091 00000 n 0000851263 00000 n 0000851435 00000 n 0000851607 00000 n 0000851779 00000 n 0000851943 00000 n 0000852115 00000 n 0000852287 00000 n 0000852451 00000 n 0000852623 00000 n 0000852795 00000 n 0000852967 00000 n 0000853139 00000 n 0000853303 00000 n 0000853475 00000 n 0000853647 00000 n 0000853819 00000 n 0000853983 00000 n 0000854155 00000 n 0000854319 00000 n 0000854491 00000 n 0000854655 00000 n 0000854827 00000 n 0000854991 00000 n 0000855163 00000 n 0000855292 00000 n 0000855445 00000 n 0000855582 00000 n 0000855734 00000 n 0000856055 00000 n 0000856376 00000 n 0000856697 00000 n 0000857018 00000 n 0000857339 00000 n 0000857660 00000 n 0000857981 00000 n 0000858437 00000 n 0000858590 00000 n 0000858778 00000 n 0000858950 00000 n 0000859122 00000 n 0000859294 00000 n 0000859466 00000 n 0000859638 00000 n 0000859810 00000 n 0000859983 00000 n 0000860156 00000 n 0000860329 00000 n 0000860502 00000 n 0000860675 00000 n 0000860848 00000 n 0000861003 00000 n 0000861157 00000 n 0000861345 00000 n 0000861499 00000 n 0000861688 00000 n 0000861861 00000 n 0000862034 00000 n 0000862207 00000 n 0000862380 00000 n 0000862553 00000 n 0000862726 00000 n 0000862899 00000 n 0000863073 00000 n 0000863247 00000 n 0000863421 00000 n 0000863595 00000 n 0000863726 00000 n 0000863881 00000 n 0000864071 00000 n 0000864245 00000 n 0000864419 00000 n 0000864593 00000 n 0000864767 00000 n 0000864941 00000 n 0000865115 00000 n 0000865289 00000 n 0000865463 00000 n 0000865637 00000 n 0000865811 00000 n 0000865942 00000 n 0000866097 00000 n 0000866287 00000 n 0000866461 00000 n 0000866635 00000 n 0000866809 00000 n 0000866983 00000 n 0000867157 00000 n 0000867331 00000 n 0000867505 00000 n 0000867679 00000 n 0000867853 00000 n 0000868027 00000 n 0000868158 00000 n 0000868313 00000 n 0000868503 00000 n 0000868677 00000 n 0000868851 00000 n 0000869025 00000 n 0000869199 00000 n 0000869373 00000 n 0000869547 00000 n 0000869720 00000 n 0000869893 00000 n 0000870066 00000 n 0000870239 00000 n 0000870412 00000 n 0000870585 00000 n 0000870716 00000 n 0000870870 00000 n 0000871059 00000 n 0000871232 00000 n 0000871405 00000 n 0000871579 00000 n 0000871753 00000 n 0000871927 00000 n 0000872101 00000 n 0000872275 00000 n 0000872449 00000 n 0000872623 00000 n 0000872797 00000 n 0000872971 00000 n 0000873102 00000 n 0000873257 00000 n 0000873447 00000 n 0000873621 00000 n 0000873795 00000 n 0000873969 00000 n 0000874143 00000 n 0000874317 00000 n 0000874491 00000 n 0000874665 00000 n 0000874839 00000 n 0000875013 00000 n 0000875187 00000 n 0000875361 00000 n 0000875535 00000 n 0000875666 00000 n 0000875821 00000 n 0000876011 00000 n 0000876185 00000 n 0000876359 00000 n 0000876533 00000 n 0000876707 00000 n 0000876881 00000 n 0000877055 00000 n 0000877229 00000 n 0000877403 00000 n 0000877577 00000 n 0000877751 00000 n 0000877925 00000 n 0000878056 00000 n 0000878211 00000 n 0000878401 00000 n 0000878575 00000 n 0000878748 00000 n 0000878921 00000 n 0000879094 00000 n 0000879267 00000 n 0000879440 00000 n 0000879613 00000 n 0000879786 00000 n 0000879959 00000 n 0000880090 00000 n 0000880244 00000 n 0000880433 00000 n 0000880607 00000 n 0000880781 00000 n 0000880955 00000 n 0000881129 00000 n 0000881303 00000 n 0000881477 00000 n 0000881651 00000 n 0000881825 00000 n 0000881999 00000 n 0000882173 00000 n 0000882347 00000 n 0000882521 00000 n 0000882695 00000 n 0000882826 00000 n 0000882981 00000 n 0000883171 00000 n 0000883345 00000 n 0000883519 00000 n 0000883693 00000 n 0000883867 00000 n 0000884041 00000 n 0000884215 00000 n 0000884389 00000 n 0000884563 00000 n 0000884737 00000 n 0000884868 00000 n 0000885023 00000 n 0000885213 00000 n 0000885387 00000 n 0000885561 00000 n 0000885735 00000 n 0000885909 00000 n 0000886083 00000 n 0000886257 00000 n 0000886431 00000 n 0000886605 00000 n 0000886779 00000 n 0000886953 00000 n 0000887127 00000 n 0000887301 00000 n 0000887475 00000 n 0000887606 00000 n 0000887744 00000 n 0000888076 00000 n 0000888408 00000 n 0000888740 00000 n 0000889181 00000 n 0000889370 00000 n 0000889543 00000 n 0000889716 00000 n 0000889889 00000 n 0000890062 00000 n 0000890236 00000 n 0000890410 00000 n 0000890584 00000 n 0000890758 00000 n 0000890932 00000 n 0000891106 00000 n 0000891280 00000 n 0000891454 00000 n 0000891628 00000 n 0000891802 00000 n 0000891976 00000 n 0000892107 00000 n 0000892262 00000 n 0000892452 00000 n 0000892626 00000 n 0000892800 00000 n 0000892974 00000 n 0000893148 00000 n 0000893322 00000 n 0000893496 00000 n 0000893670 00000 n 0000893844 00000 n 0000894018 00000 n 0000894192 00000 n 0000894366 00000 n 0000894540 00000 n 0000894714 00000 n 0000894888 00000 n 0000895019 00000 n 0000895174 00000 n 0000895507 00000 n 0000895840 00000 n 0000896173 00000 n 0000896489 00000 n 0000896939 00000 n 0000897128 00000 n 0000897301 00000 n 0000897474 00000 n 0000897647 00000 n 0000897820 00000 n 0000897993 00000 n 0000898166 00000 n 0000898339 00000 n 0000898513 00000 n 0000898687 00000 n 0000898861 00000 n 0000899035 00000 n 0000899209 00000 n 0000899383 00000 n 0000899557 00000 n 0000899731 00000 n 0000899905 00000 n 0000900079 00000 n 0000900253 00000 n 0000900427 00000 n 0000900583 00000 n 0000900738 00000 n 0000901071 00000 n 0000901404 00000 n 0000901737 00000 n 0000902070 00000 n 0000902403 00000 n 0000902863 00000 n 0000903018 00000 n 0000903208 00000 n 0000903382 00000 n 0000903556 00000 n 0000903730 00000 n 0000903904 00000 n 0000904078 00000 n 0000904252 00000 n 0000904425 00000 n 0000904598 00000 n 0000904771 00000 n 0000904944 00000 n 0000905117 00000 n 0000905290 00000 n 0000905463 00000 n 0000905636 00000 n 0000905809 00000 n 0000905982 00000 n 0000906156 00000 n 0000906330 00000 n 0000906504 00000 n 0000906678 00000 n 0000906852 00000 n 0000906983 00000 n 0000907138 00000 n 0000907328 00000 n 0000907502 00000 n 0000907676 00000 n 0000907850 00000 n 0000908024 00000 n 0000908198 00000 n 0000908372 00000 n 0000908546 00000 n 0000908720 00000 n 0000908894 00000 n 0000909068 00000 n 0000909242 00000 n 0000909416 00000 n 0000909590 00000 n 0000909764 00000 n 0000909938 00000 n 0000910112 00000 n 0000910286 00000 n 0000910460 00000 n 0000910615 00000 n 0000910770 00000 n 0000910925 00000 n 0000911258 00000 n 0000911591 00000 n 0000911924 00000 n 0000912257 00000 n 0000912590 00000 n 0000912923 00000 n 0000913256 00000 n 0000913589 00000 n 0000913905 00000 n 0000914237 00000 n 0000914741 00000 n 0000914895 00000 n 0000915227 00000 n 0000915559 00000 n 0000915891 00000 n 0000916223 00000 n 0000916380 00000 n 0000916728 00000 n 0000917355 00000 n 0000917815 00000 n 0000917962 00000 n 0000918376 00000 n 0000918530 00000 n 0000918684 00000 n 0000918838 00000 n 0000918992 00000 n 0000919146 00000 n 0000919318 00000 n 0000919472 00000 n 0000919626 00000 n 0000919781 00000 n 0000919936 00000 n 0000920109 00000 n 0000920264 00000 n 0000920597 00000 n 0000920930 00000 n 0000921263 00000 n 0000921596 00000 n 0000921929 00000 n 0000922389 00000 n 0000922544 00000 n 0000922717 00000 n 0000922872 00000 n 0000923028 00000 n 0000923183 00000 n 0000923338 00000 n 0000923477 00000 n 0000923631 00000 n 0000923820 00000 n 0000923993 00000 n 0000924124 00000 n 0000924278 00000 n 0000924467 00000 n 0000924640 00000 n 0000924813 00000 n 0000924967 00000 n 0000925121 00000 n 0000925276 00000 n 0000925609 00000 n 0000926033 00000 n 0000926223 00000 n 0000926397 00000 n 0000926714 00000 n 0000927138 00000 n 0000927328 00000 n 0000927502 00000 n 0000927633 00000 n 0000927966 00000 n 0000928390 00000 n 0000928545 00000 n 0000928700 00000 n 0000929115 00000 n 0000929448 00000 n 0000929855 00000 n 0000930044 00000 n 0000930360 00000 n 0000930783 00000 n 0000930937 00000 n 0000931091 00000 n 0000931245 00000 n 0000931434 00000 n 0000931607 00000 n 0000931780 00000 n 0000931954 00000 n 0000932128 00000 n 0000932302 00000 n 0000932476 00000 n 0000932650 00000 n 0000932824 00000 n 0000932998 00000 n 0000933172 00000 n 0000933346 00000 n 0000933520 00000 n 0000933694 00000 n 0000933868 00000 n 0000934042 00000 n 0000934216 00000 n 0000934390 00000 n 0000934564 00000 n 0000934738 00000 n 0000934912 00000 n 0000935086 00000 n 0000935260 00000 n 0000935434 00000 n 0000935608 00000 n 0000935782 00000 n 0000935956 00000 n 0000936130 00000 n 0000936304 00000 n 0000936478 00000 n 0000936652 00000 n 0000936783 00000 n 0000936972 00000 n 0000937126 00000 n 0000937280 00000 n 0000937434 00000 n 0000937588 00000 n 0000937742 00000 n 0000937931 00000 n 0000938104 00000 n 0000938277 00000 n 0000938450 00000 n 0000938624 00000 n 0000938798 00000 n 0000938972 00000 n 0000939146 00000 n 0000939320 00000 n 0000939494 00000 n 0000939625 00000 n 0000939780 00000 n 0000940113 00000 n 0000940537 00000 n 0000940692 00000 n 0000940847 00000 n 0000941002 00000 n 0000941157 00000 n 0000941313 00000 n 0000941468 00000 n 0000941623 00000 n 0000941778 00000 n 0000942110 00000 n 0000942458 00000 n 0000942806 00000 n 0000943263 00000 n 0000943417 00000 n 0000943589 00000 n 0000943743 00000 n 0000943932 00000 n 0000944102 00000 n 0000944450 00000 n 0000944890 00000 n 0000945046 00000 n 0000945201 00000 n 0000945356 00000 n 0000945723 00000 n 0000946146 00000 n 0000946335 00000 n 0000946466 00000 n 0000946880 00000 n 0000947034 00000 n 0000947366 00000 n 0000947789 00000 n 0000947978 00000 n 0000948151 00000 n 0000948324 00000 n 0000948455 00000 n 0000948610 00000 n 0000948959 00000 n 0000949308 00000 n 0000949757 00000 n 0000949912 00000 n 0000950102 00000 n 0000950276 00000 n 0000950450 00000 n 0000950581 00000 n 0000950736 00000 n 0000951150 00000 n 0000951304 00000 n 0000951458 00000 n 0000951647 00000 n 0000951820 00000 n 0000951993 00000 n 0000952166 00000 n 0000952339 00000 n 0000952512 00000 n 0000952685 00000 n 0000952859 00000 n 0000953033 00000 n 0000953207 00000 n 0000953381 00000 n 0000953555 00000 n 0000953729 00000 n 0000953903 00000 n 0000954077 00000 n 0000954251 00000 n 0000954425 00000 n 0000954599 00000 n 0000954773 00000 n 0000954947 00000 n 0000955121 00000 n 0000955295 00000 n 0000955469 00000 n 0000955643 00000 n 0000955817 00000 n 0000955991 00000 n 0000956165 00000 n 0000956339 00000 n 0000956513 00000 n 0000956687 00000 n 0000956818 00000 n 0000956973 00000 n 0000957306 00000 n 0000957639 00000 n 0000957797 00000 n 0000958231 00000 n 0000958373 00000 n 0000958547 00000 n 0000958689 00000 n 0000958865 00000 n 0000959023 00000 n 0000959165 00000 n 0000959243 00000 n 0000959398 00000 n 0000959547 00000 n 0000959689 00000 n 0000959863 00000 n 0000960005 00000 n 0000960181 00000 n 0000960339 00000 n 0000960480 00000 n 0000960654 00000 n 0000960795 00000 n 0000960971 00000 n 0000961129 00000 n 0000961270 00000 n 0000961444 00000 n 0000961578 00000 n 0000961754 00000 n 0000961912 00000 n 0000962053 00000 n 0000962227 00000 n 0000962368 00000 n 0000962544 00000 n 0000962702 00000 n 0000962843 00000 n 0000963017 00000 n 0000963158 00000 n 0000963334 00000 n 0000963492 00000 n 0000963633 00000 n 0000963807 00000 n 0000963948 00000 n 0000964124 00000 n 0000964282 00000 n 0000964423 00000 n 0000964597 00000 n 0000964739 00000 n 0000964915 00000 n 0000965073 00000 n 0000965215 00000 n 0000965389 00000 n 0000965531 00000 n 0000965707 00000 n 0000965865 00000 n 0000966007 00000 n 0000966182 00000 n 0000966324 00000 n 0000966501 00000 n 0000966659 00000 n 0000966801 00000 n 0000966975 00000 n 0000967117 00000 n 0000967293 00000 n 0000967451 00000 n 0000967593 00000 n 0000967767 00000 n 0000967909 00000 n 0000968085 00000 n 0000968243 00000 n 0000968385 00000 n 0000968559 00000 n 0000968701 00000 n 0000968877 00000 n 0000969035 00000 n 0000969177 00000 n 0000969255 00000 n 0000969410 00000 n 0000969559 00000 n 0000969701 00000 n 0000969875 00000 n 0000970017 00000 n 0000970193 00000 n 0000970351 00000 n 0000970493 00000 n 0000970667 00000 n 0000970809 00000 n 0000970985 00000 n 0000971143 00000 n 0000971285 00000 n 0000971459 00000 n 0000971601 00000 n 0000971777 00000 n 0000971935 00000 n 0000972077 00000 n 0000972251 00000 n 0000972393 00000 n 0000972569 00000 n 0000972727 00000 n 0000972869 00000 n 0000973044 00000 n 0000973186 00000 n 0000973363 00000 n 0000973521 00000 n 0000973663 00000 n 0000973837 00000 n 0000973979 00000 n 0000974155 00000 n 0000974313 00000 n 0000974455 00000 n 0000974533 00000 n 0000974688 00000 n 0000974837 00000 n 0000974979 00000 n 0000975153 00000 n 0000975295 00000 n 0000975471 00000 n 0000975629 00000 n 0000975771 00000 n 0000975945 00000 n 0000976087 00000 n 0000976263 00000 n 0000976421 00000 n 0000976563 00000 n 0000976737 00000 n 0000976879 00000 n 0000977055 00000 n 0000977213 00000 n 0000977354 00000 n 0000977528 00000 n 0000977669 00000 n 0000977845 00000 n 0000978003 00000 n 0000978144 00000 n 0000978318 00000 n 0000978459 00000 n 0000978635 00000 n 0000978793 00000 n 0000978934 00000 n 0000979108 00000 n 0000979249 00000 n 0000979425 00000 n 0000979583 00000 n 0000979724 00000 n 0000979802 00000 n 0000979957 00000 n 0000980106 00000 n 0000980247 00000 n 0000980421 00000 n 0000980562 00000 n 0000980738 00000 n 0000980896 00000 n 0000981037 00000 n 0000981211 00000 n 0000981353 00000 n 0000981529 00000 n 0000981687 00000 n 0000981829 00000 n 0000982003 00000 n 0000982145 00000 n 0000982321 00000 n 0000982479 00000 n 0000982621 00000 n 0000982795 00000 n 0000982937 00000 n 0000983113 00000 n 0000983271 00000 n 0000983413 00000 n 0000983491 00000 n 0000983646 00000 n 0000983795 00000 n 0000983937 00000 n 0000984111 00000 n 0000984253 00000 n 0000984429 00000 n 0000984587 00000 n 0000984729 00000 n 0000984903 00000 n 0000985045 00000 n 0000985221 00000 n 0000985379 00000 n 0000985521 00000 n 0000985695 00000 n 0000985837 00000 n 0000986013 00000 n 0000986171 00000 n 0000986313 00000 n 0000986487 00000 n 0000986629 00000 n 0000986805 00000 n 0000986963 00000 n 0000987105 00000 n 0000987279 00000 n 0000987421 00000 n 0000987597 00000 n 0000987755 00000 n 0000987897 00000 n 0000988071 00000 n 0000988213 00000 n 0000988389 00000 n 0000988547 00000 n 0000988689 00000 n 0000988863 00000 n 0000989005 00000 n 0000989181 00000 n 0000989339 00000 n 0000989481 00000 n 0000989655 00000 n 0000989797 00000 n 0000989973 00000 n 0000990131 00000 n 0000990273 00000 n 0000990351 00000 n 0000990506 00000 n 0000990655 00000 n 0000990797 00000 n 0000990971 00000 n 0000991113 00000 n 0000991289 00000 n 0000991447 00000 n 0000991589 00000 n 0000991763 00000 n 0000991905 00000 n 0000992081 00000 n 0000992239 00000 n 0000992381 00000 n 0000992555 00000 n 0000992697 00000 n 0000992873 00000 n 0000993031 00000 n 0000993173 00000 n 0000993347 00000 n 0000993489 00000 n 0000993665 00000 n 0000993823 00000 n 0000993965 00000 n 0000994139 00000 n 0000994281 00000 n 0000994457 00000 n 0000994615 00000 n 0000994756 00000 n 0000994930 00000 n 0000995071 00000 n 0000995247 00000 n 0000995405 00000 n 0000995546 00000 n 0000995624 00000 n 0000995779 00000 n 0000995928 00000 n 0000996069 00000 n 0000996243 00000 n 0000996384 00000 n 0000996560 00000 n 0000996718 00000 n 0000996859 00000 n 0000997033 00000 n 0000997174 00000 n 0000997350 00000 n 0000997508 00000 n 0000997649 00000 n 0000997727 00000 n 0000997882 00000 n 0000998031 00000 n 0000998172 00000 n 0000998346 00000 n 0000998487 00000 n 0000998663 00000 n 0000998821 00000 n 0000998963 00000 n 0000999137 00000 n 0000999279 00000 n 0000999455 00000 n 0000999613 00000 n 0000999755 00000 n 0000999930 00000 n 0001000072 00000 n 0001000249 00000 n 0001000407 00000 n 0001000549 00000 n 0001000724 00000 n 0001000866 00000 n 0001001043 00000 n 0001001201 00000 n 0001001343 00000 n 0001001517 00000 n 0001001659 00000 n 0001001835 00000 n 0001001993 00000 n 0001002135 00000 n 0001002309 00000 n 0001002451 00000 n 0001002627 00000 n 0001002785 00000 n 0001002927 00000 n 0001003102 00000 n 0001003244 00000 n 0001003421 00000 n 0001003579 00000 n 0001003721 00000 n 0001003895 00000 n 0001004037 00000 n 0001004213 00000 n 0001004371 00000 n 0001004513 00000 n 0001004591 00000 n 0001004746 00000 n 0001004895 00000 n 0001005037 00000 n 0001005211 00000 n 0001005353 00000 n 0001005529 00000 n 0001005687 00000 n 0001006453 00000 n 0001006584 00000 n 0001006739 00000 n 0001006894 00000 n 0001007210 00000 n 0001007542 00000 n 0001007974 00000 n 0001008128 00000 n 0001008282 00000 n 0001008614 00000 n 0001008946 00000 n 0001009378 00000 n 0001009532 00000 n 0001017010 00000 n 0001028378 00000 n 0001028528 00000 n trailer < ] /DocChecksum /31B45765D63307C565E8FFD79C617885 >> startxref 1028705 %%EOF crossroads-2.65/doc/xrctl.1000066400000000000000000000027431141436564300156300ustar00rootroot00000000000000.TH "XRCTL" "1" "2008,2009" "Crossroads" "Man Page" .SH "NAME" xrctl \- Crossroads control-script .SH "SYNOPSIS" \fBxrctl [OPTION]...\fR .SH "DESCRIPTION" This manual page briefly documents xrctl, the Crossroads control-script. Instead of starting XR by hand, consider using xrctl. Edit /etc/xrctl.xml, which is the configuration file, and configure your service(s), all their options, and back ends. Then type xrctl start to start all your services, or xrctl stop to stop them. .SH "OPTIONS" .nf list [SERVICE] - show configuration of a service, or of all start [SERVICE] - start a service, or all configured services stop [SERVICE] - stop a service, or all configured services kill [SERVICE] - brutal stop, interrupts connections force [SERVICE] - start a service (or all) if not running stopstart [SERVICE] - stop and start a service, or all killstart [SERVICE] - kill and start a service, or all status [SERVICE] - show running status of a service, or of all rotate [SERVICE] - rotate logs of a service or of all generateconfig [SERVICE] - queries running XR's for the configuration and shows it in the format of /etc/xrctl.xml .fi .SH "SEE ALSO" xr(1), xrctl.xml(5) .SH "AUTHOR" xrctl was written by Karel Kubat . Web page: http://crossroads.e-tunity.com .P This man page was written by Frederik Dannemare and updated by Karel Kubat . crossroads-2.65/doc/xrctl.xml.5000066400000000000000000000233311141436564300164270ustar00rootroot00000000000000.TH "XRCTL.XML" "5" "2008,2009" "Crossroads" "Man Page" .SH "NAME" xrctl.xml \- Crossroads control-script configuration file .SH "SYNOPSIS" The file /etc/xrctl.xml is xrctl's configuration. It defines how xrctl will start the balancer xr. If you wish to use xrctl to control the balancer, then you must configure all services, options and back ends in xrctl.xml. .SH "EXAMPLE" The following is a configuration example. See the file xr.pdf which is distributed with the sources for a full description. .nf /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/opt/local/bin:/opt/local/sbin true ssh tcp

0:20000
0:20001 1800:3 1800
server1:22
server2:22
server2:22
webone
0:20010
http 127.0.0.1:20011 lax-hashed-ip 3 0 yes yes /tmp yes /where/ever/activitystart /where/ever/activityend /where/ever/activityaborted 10.255.255.255 192.168.1.255 192.168.1.100 4096 2 200 150 1000000 400 /path/to/program off on off
MyFirstHeader: Whatever
MySecondHeader: WhateverElse
server1:80
2 300 www.mysite.org
server2:80
100 connect::81 www.myothersite.org
server3:80
get:server3:80/healthcheck.cgi www.myothersite.org
.fi .SH "SEE ALSO" xr(1), xrctl(1) .SH "AUTHOR" xrctl and the corresponding configuration file format were written by Karel Kubat . Web page: http://crossroads.e-tunity.com .P This man page was written by Karel Kubat . crossroads-2.65/test/000077500000000000000000000000001141436564300146165ustar00rootroot00000000000000crossroads-2.65/test/ftp.xml000066400000000000000000000014201141436564300161260ustar00rootroot00000000000000 false /tmp ftp tcp
127.0.0.1:21
first-available true
172.16.238.1:21
true
ftpdata tcp
127.0.0.1:20
first-available true true
172.16.238.1:20
crossroads-2.65/test/iphashtest.cc000066400000000000000000000016641141436564300173100ustar00rootroot00000000000000// C #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // C++ #include #include #include #include #include using namespace std; int main () { for (int a = 0; a <= 255; a++) { ostringstream o; o << "192.168.1." << a; struct in_addr ad; inet_aton (o.str().c_str(), &ad); unsigned index = 0; for (char *cp = (char*) &ad; unsigned(cp - (char*)&ad) < sizeof(struct in_addr); cp++) { index += *cp; index %= 60; //cout << " " << "byte: " << hex << *cp // << ", index: " << index << "\n"; } cout << inet_ntoa(ad) << ": " << dec << index << "\n"; } return (0); } crossroads-2.65/test/multi-ip.xml000066400000000000000000000022321141436564300170770ustar00rootroot00000000000000 true clpipe /var/log/xr.clog /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/opt/local/bin:/opt/local/sbin first tcp
192.168.2.5:10000
first-available 192.168.2.5:10001 yes yes
www.google.nl:80
www.thedailywtf.com:80
second tcp
172.16.89.1:10000
first-available 172.16.89.1:10001 yes yes
kubat.nl:80
slashdot.org:80
crossroads-2.65/test/ntimes000077500000000000000000000007301141436564300160430ustar00rootroot00000000000000#!/usr/bin/perl # ntimes - fork and run it die ("Usage: ntimes TIMES COMMAND\n", "Forks TIMES and each fork runs the COMMAND.\n") if ($#ARGV != 1); for my $i (1..$ARGV[0]) { my $pid = fork(); die ("$0: cannot fork, $!\n") unless (defined($pid)); if (!$pid) { system($ARGV[1]); exit(); } } while (1) { my $kid = wait(); last if ($kid < 1); print ("$0: Child $kid terminated\n"); } print ("All forks have finished, done.\n"); crossroads-2.65/test/onend000077500000000000000000000001621141436564300156460ustar00rootroot00000000000000#!/bin/sh echo Client $1 was handled by $2 and is now stopping, $3 connections remain \ >> /tmp/activity.log crossroads-2.65/test/onfail000077500000000000000000000001401141436564300160070ustar00rootroot00000000000000#!/bin/sh echo Back end $2 with $3 connections failed for client $1 \ >> /tmp/activity.log crossroads-2.65/test/onstart000077500000000000000000000001441141436564300162350ustar00rootroot00000000000000#!/bin/sh echo Client $1 will be handled by $2, $3 connections so far \ >> /tmp/activity.log crossroads-2.65/test/restricted-webinterface.xml000066400000000000000000000026251141436564300221510ustar00rootroot00000000000000 false /tmp web tcp
0:11000
127.0.0.1:11001 yes
server1:8000
webinterface tcp
0:11002
10.50.45.189
localhost:11001
crossroads-2.65/test/sampleconf.xml000066400000000000000000000167221141436564300174770ustar00rootroot00000000000000 /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/opt/local/bin:/opt/local/sbin true ssh tcp
0:20000
0:20001 1800
server1:22
server2:22
server2:22
webone
0:20010
http 127.0.0.1:20011 lax-hashed-ip 3 0 yes yes /tmp yes 10.255.255.255 192.168.1.255 192.168.1.100 2 200 150 1000000 400 /path/to/program off on off on
MyFirstHeader: Whatever
MySecondHeader: WhateverElse
server1:80
2 300 www.mysite.org
server2:80
100 connect::81 www.myothersite.org
server3:80
get:server3:80/healthcheck.cgi www.myothersite.org
crossroads-2.65/test/status.xml000066400000000000000000000025371141436564300166720ustar00rootroot00000000000000
localhost:3129
1 0 dead unavailable 0 00
aab-proxy-1:8080
1 0 dead unavailable 0 00
aab-proxy-2:80
1 0 dead unavailable 0 00
localhost:3128
1 0 alive available 8 1276168
crossroads-2.65/test/status.xslt000066400000000000000000000037561141436564300170700ustar00rootroot00000000000000 Crossroads Status Overview

XR Status Overview


Back end Weight Max. connections Host match Health state Availability Connections Bytes served Clients served
crossroads-2.65/test/test.cgi000066400000000000000000000017661141436564300162730ustar00rootroot00000000000000#!/usr/bin/perl # Simple script for benchmarking purposes. Invoke as: # http://whereever/test.cgi?bytes=XYZZY&usec=PLUGH # Will spam XYZZY bytes as payload, and delay for PLUGH microsecs. # The payload files are created in $tmpdir if they don't yet exist # so that CPU looping is avoided. use strict; use Time::HiRes qw(usleep); use CGI qw(:standard); my $tmpdir = '/tmp'; # CGI Header print ("Content-Type: text/plain\r\n\r\n"); # Delay for 'usec' microsecs. my $usec = param('usec') or 0; usleep($usec); # Check that we have a file for the payload. If not, create it. my $bytes = param('bytes'); my $file = "$tmpdir/test.cgi.$bytes"; if (! -f $file) { open (my $of, ">$file") or die ("Cannot write $file: $!\n"); for (my $i = 0; $i < $bytes; $i++) { print $of ('X'); } close ($of); } # Send the file to the browser. my $buf; open (my $if, $file) or die ("Cannot read $file: $!\n"); while (sysread($if, $buf, 2048)) { print ($buf); } # All done. Return control to the web server. crossroads-2.65/test/urlmatch.xml000066400000000000000000000014661141436564300171660ustar00rootroot00000000000000 false /tmp /bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/opt/local/bin:/opt/local/sbin urlmatch http
0:20000
0:20001 yes yes
server1:10000
/$
server2:10000
/pages/fch
server3:10000
/pages/[^f][^c][^h]
crossroads-2.65/test/xr-analyze-test000077500000000000000000000003521141436564300176130ustar00rootroot00000000000000#!/usr/bin/perl use strict; my $n = 0; my $tot = 0; while (my $line = ) { next unless ($line =~ /^\d/); $tot += $line; $n++; } exit(1) unless ($n); print ("Total : $n\n", "Average : ", $tot / $n, "\n"); crossroads-2.65/test/xr-client-ping000077500000000000000000000065101141436564300174060ustar00rootroot00000000000000#!/usr/bin/perl use POSIX ':sys_wait_h'; use strict; # Main my $quiet = 0; while($ARGV[0] eq '-q') { $quiet++; shift(@ARGV); } usage() if ($#ARGV != 1); my $sleeptime = sprintf('%d', $ARGV[1]); die("$0: bad interval $ARGV[1]\n") if ($sleeptime < 2); while (1) { # Clean up any zombies while (waitpid(-1, WNOHANG) > 0) { } # Run the test do_test(); # Sleep for the duration of the interval my $slept = 0; while ($slept < $sleeptime) { $slept += sleep($sleeptime - $slept); } } # Show usage and croak sub usage() { die <<"ENDUSAGE"; Usage: xr-client-ping [-q] WEBINTERFACE-URL INTERVAL The web interface is queried for clients. Connections to non-pingable clients are killed. The process is repeated each interval. The arguments: -q: quiet mode, suppresses verbose messaging WEBINTERFACE-URL: the URL of XR's web interface, include http:// INTERVAL: number of seconds ENDUSAGE } # Start a single test my $_tries = 0; sub do_test() { msg ("-----------------------------------------------------------------\n"); msg ("Starting check run\n"); my $xml; eval { $xml = http_get($ARGV[0]); }; if ($@) { msg ("Could not access web interface: $@\n"); die ("Too many tries now, giving up...\n") if ($_tries++ > 5); return; } $_tries = 0; my $active = 0; my ($id, $clientip); for my $line (split(/\n/, $xml)) { $active = 1 if ($line =~ //); $active = 0 if ($line =~ /<\/thread>/); if ($active) { if ($line =~ //) { $id = $line; $id =~ s/\s*//; $id =~ s/<\/id>.*//; } elsif ($line =~ //) { $clientip = $line; $clientip =~ s/\s*//; $clientip =~ s/<\/clientip>//; check_client($id, $clientip) if ($clientip ne '0.0.0.0'); } } } } # Check one thread ID and client IP sub check_client($$) { my ($id, $clientip) = @_; msg ("Checking connection for client $clientip (XR thread $id)\n"); return if (fork()); my $cmd = "ping -c3 -t3 $clientip >/dev/null"; msg ("$clientip: pinging (external '$cmd')\n"); my $status = system($cmd); if ($status != 0) { msg ("$clientip: ping status '$status' $!\n"); msg ("$clientip: not reachable, stopping XR thread $id\n"); eval { http_get("$ARGV[0]/thread/kill/$id"); }; msg ("Failed to stop thread $id\n") if ($@); } else { msg ("$clientip: reachable, connection assumed valid\n"); } exit(0); } # Do a HTTP GET. Try LWP::UserAgent if available, else try wget. sub http_get($) { my $url = shift; my $ua; # Try LWP::UserAgent eval { require LWP::UserAgent; }; if (! $@) { $ua = LWP::UserAgent->new(); $ua->timeout(3); my $res = $ua->get($url); die ("Could not access url '$url'\n") unless ($res->is_success()); return $res->content(); } # Try wget or curl, or any other command (can be put in here) for my $cmd ("wget -q -O- -T3 '$url'", "curl --connect-timeout 3 -s '$url'") { msg ("Running: $cmd\n"); open (my $if, "$cmd |"); if ($if) { my $cont = ''; while (my $line = <$if>) { $cont .= $line; } if (close($if)) { return $cont; } else { msg("$cmd failed: $!\n"); } } } # All failed, now what? die ("No method to access url '$url'\n"); } # Verbose messaging sub msg { print ($$, ' ', scalar(localtime()), ' ', @_) unless ($quiet); } crossroads-2.65/test/xr-http-test000077500000000000000000000013021141436564300171230ustar00rootroot00000000000000#!/usr/bin/perl use strict; use LWP::UserAgent; use Time::HiRes qw(sleep gettimeofday tv_interval); $|++; die <<"ENDUSAGE" if ($#ARGV != 2); Usage: $0 URL THREADS DURATION Will start THREADS to get URL. The entire test will run for DURATION seconds. ENDUSAGE my ($url, $threads, $duration) = @ARGV; for my $i (1..$threads) { next if (fork()); my $t_start = [gettimeofday()]; my $runs = 0; while (tv_interval($t_start) < $duration) { $runs++; my $t_run = [gettimeofday()]; my $ua = LWP::UserAgent->new(); $ua->timeout(5); my $resp = $ua->get($url); print(tv_interval($t_run), "\n") if ($resp->is_success()); } exit(0); } while(wait() != -1) { } crossroads-2.65/test/xr-mysql-connect000077500000000000000000000005571141436564300177760ustar00rootroot00000000000000#!/bin/sh # Where does your mysql live? mysql=/usr/local/mysql/bin/mysql # Get the host and port from the argument (which is the back end, # as host:port) host=`echo $1 | sed 's/:.*//'` port=`echo $1 | sed 's/.*://'` # Try to connect to the host and port. Print the result on stdout. echo quit | $mysql -h $host -P $port --protocol=tcp --connect-timeout=3 echo $? crossroads-2.65/test/xr-smtp-test000077500000000000000000000021401141436564300171300ustar00rootroot00000000000000#!/usr/bin/perl use strict; use Net::SMTP; use Time::HiRes qw(sleep gettimeofday tv_interval); $|++; die <<"ENDUSAGE" if ($#ARGV != 4); Usage: $0 ENDPOINT FROM-ADDRESS TO-ADDRESS THREADS DURATION Will start THREADS to send dummy e-mails to TO-ADDRESS. The test will run for DURATION seconds. ENDPOINT is the IP address to connect to. ENDUSAGE my ($endpoint, $from, $address, $threads, $duration) = @ARGV; for my $i (1..$threads) { next if (fork()); my $t_start = [gettimeofday()]; my $runs = 0; while (tv_interval($t_start) < $duration) { $runs++; my $t_run = [gettimeofday()]; my $smtp = Net::SMTP->new($endpoint, Timeout => 5) or die ("Cannot start SMTP\n"); $smtp->mail($from); $smtp->to($address); $smtp->data(); $smtp->datasend("To: $address\n"); $smtp->datasend("Subject: Testing mail\n"); $smtp->datasend("\n"); $smtp->datasend("This is just a test message.\n"); $smtp->dataend(); $smtp->quit(); print(tv_interval($t_run), "\n"); } exit(0); } while(wait() != -1) { } crossroads-2.65/test/xr-stdby/000077500000000000000000000000001141436564300163725ustar00rootroot00000000000000crossroads-2.65/test/xr-stdby/xr-is-live000077500000000000000000000014551141436564300203240ustar00rootroot00000000000000#!/usr/bin/perl use strict; die <<"ENDUSAGE" if ($#ARGV < 0); Usage: xr-is-live HOST [HOST...] Polls stated host(s) for live status. Exits with the number of unreachable hosts. Sample usage: xr-is-live onehost - checks if the one host is down xr-is-live h1 h2 h3 h3 h5 - checks if this network is down (this can be assumed when exit status is larger than 3) ENDUSAGE for my $h (@ARGV) { next if fork(); if (!testlive($h)) { print ("$h is not reachable\n"); exit (1); } exit (0); } my $ret = 0; while (1) { last if (wait() == -1); $ret++ if ($?); } print ("total $ret not reachable host(s)\n") if ($ret); exit ($ret); sub testlive($) { my $h = shift; system("ping -c3 -t1 '$h' >/dev/null") and return undef; return 1; } crossroads-2.65/xr/000077500000000000000000000000001141436564300142705ustar00rootroot00000000000000crossroads-2.65/xr/Checkers/000077500000000000000000000000001141436564300160175ustar00rootroot00000000000000crossroads-2.65/xr/Checkers/checkupthread/000077500000000000000000000000001141436564300206315ustar00rootroot00000000000000crossroads-2.65/xr/Checkers/checkupthread/checkupthread000066400000000000000000000004431141436564300233670ustar00rootroot00000000000000#ifndef _CHECKUPTHREAD_ #define _CHECKUPTHREAD_ #include "sys/sys" #include "ThreadsAndMutexes/thread/thread" #include "ThreadsAndMutexes/threadlist/threadlist" #include "balancer/balancer" #include "error/error" class Checkupthread: public Thread { public: void execute(); }; #endif crossroads-2.65/xr/Checkers/checkupthread/execute.cc000066400000000000000000000017631141436564300226110ustar00rootroot00000000000000#include "checkupthread" void Checkupthread::execute() { Threadlist::desc("Checkup thread"); while (1) { if (config.checkupsec()) { msg ("Running checkup thread\n"); for (unsigned i = 0; i < balancer.nbackends(); i++) { Backend target(balancer.backend(i).backenddef()); try { target.check(); if (target.live()) { balancer.backend(i).live(true); msg ("Checkup call: backend " + target.description() + " is alive\n"); } else { balancer.backend(i).live(false); balancer.backend(i).markconnecterror(); msg ("Checkup call: backend " + target.description() + " is unavailable\n"); if (config.onfail().length()) { ostringstream o; o << config.onfail() << " 0.0.0.0 " << target.description() << ' ' << balancer.backend(i).connections(); sysrun(o.str()); } } } catch (...) { socketclose(target.sock()); } } sleep (config.checkupsec()); } else sleep(30); } } crossroads-2.65/xr/Checkers/wakeupthread/000077500000000000000000000000001141436564300205035ustar00rootroot00000000000000crossroads-2.65/xr/Checkers/wakeupthread/execute.cc000066400000000000000000000012421141436564300224530ustar00rootroot00000000000000#include "wakeupthread" void Wakeupthread::execute() { Threadlist::desc("Wakeup thread"); while (1) { if (config.wakeupsec()) { for (unsigned i = 0; i < balancer.nbackends(); i++) { if (! balancer.backend(i).live()) { Backend target(balancer.backend(i).backenddef()); try { target.check(); if (target.live()) { msg ("Wakeup call: backend " + target.description() + " has awoken\n"); balancer.backend(i).live(true); } else balancer.backend(i).markconnecterror(); } catch (...) { socketclose(target.sock()); } } } sleep (config.wakeupsec()); } else sleep(30); } } crossroads-2.65/xr/Checkers/wakeupthread/wakeupthread000066400000000000000000000004401141436564300231100ustar00rootroot00000000000000#ifndef _WAKEUPTHREAD_ #define _WAKEUPTHREAD_ #include "sys/sys" #include "ThreadsAndMutexes/thread/thread" #include "ThreadsAndMutexes/threadlist/threadlist" #include "balancer/balancer" #include "error/error" class Wakeupthread: public Thread { public: void execute(); }; #endif crossroads-2.65/xr/DispatchAlgorithms/000077500000000000000000000000001141436564300200615ustar00rootroot00000000000000crossroads-2.65/xr/DispatchAlgorithms/algorithm/000077500000000000000000000000001141436564300220475ustar00rootroot00000000000000crossroads-2.65/xr/DispatchAlgorithms/algorithm/algorithm000066400000000000000000000005261141436564300237630ustar00rootroot00000000000000#ifndef _ALGORITHM_ #define _ALGORITHM_ #include "ThreadsAndMutexes/thread/thread" #include "backendvector/backendvector" #include "profiler/profiler" class Algorithm: public Thread { public: virtual ~Algorithm(); virtual unsigned target(struct in_addr clientip, BackendVector const &targetlist) = 0; }; #endif crossroads-2.65/xr/DispatchAlgorithms/algorithm/algorithm.cc000066400000000000000000000000621141436564300243420ustar00rootroot00000000000000#include "algorithm" Algorithm::~Algorithm() { } crossroads-2.65/xr/DispatchAlgorithms/external/000077500000000000000000000000001141436564300217035ustar00rootroot00000000000000crossroads-2.65/xr/DispatchAlgorithms/external/external000066400000000000000000000005051141436564300234500ustar00rootroot00000000000000#ifndef _EXTERNAL_ #define _EXTERNAL_ #include "sys/sys" #include "error/error" #include "DispatchAlgorithms/algorithm/algorithm" #include "balancer/balancer" #include "config/config" class External: public Algorithm { public: unsigned target(struct in_addr clientip, BackendVector const &targetlist); }; #endif crossroads-2.65/xr/DispatchAlgorithms/external/target.cc000066400000000000000000000021351141436564300235010ustar00rootroot00000000000000#include "external" unsigned External::target(struct in_addr clientip, BackendVector const &targetlist) { // Prepare command to run ostringstream o; o << config.externalalgorithm() << ' ' << balancer.nbackends(); for (unsigned i = 0; i < balancer.nbackends(); i++) o << ' ' << balancer.backend(i).description() << ' ' << balancer.backend(i).availablestr() << ' ' << balancer.backend(i).connections(); msg ("External algorithm: invoking '" + o.str() + "'\n"); FILE *f; if (! (f = popen (o.str().c_str(), "r")) ) throw Error("Cannot start '" + o.str() + ": " + strerror(errno)); unsigned i; if (fscanf (f, "%u", &i) < 1) throw Error("External algorithm '" + o.str() + "' did not reply with a number"); msg ((Mstr("External algorithm says:) ") + i) + "\n"); if (i >= balancer.nbackends()) { ostringstream o; o << "External algorithm '" << o.str() << "': answer " << i << " out of bounds"; throw Error(o.str()); } if (pclose (f)) throw Error("External algorithm '" + o.str() + "' terminated with error"); return (i); } crossroads-2.65/xr/DispatchAlgorithms/firstactive/000077500000000000000000000000001141436564300224045ustar00rootroot00000000000000crossroads-2.65/xr/DispatchAlgorithms/firstactive/firstactive000066400000000000000000000004651141436564300246570ustar00rootroot00000000000000#ifndef _FIRSTACTIVE_ #define _FIRSTACTIVE_ #include "sys/sys" #include "error/error" #include "DispatchAlgorithms/algorithm/algorithm" #include "balancer/balancer" class Firstactive: public Algorithm { public: unsigned target(struct in_addr clientip, BackendVector const &targetlist); }; #endif crossroads-2.65/xr/DispatchAlgorithms/firstactive/target.cc000066400000000000000000000004611141436564300242020ustar00rootroot00000000000000#include "firstactive" unsigned Firstactive::target(struct in_addr clientip, BackendVector const &targetlist) { if ( targetlist.size() == 0 || ! balancer.backend(targetlist[0]).available() ) throw Error("First-active algorithm: no available back ends"); return (targetlist[0]); } crossroads-2.65/xr/DispatchAlgorithms/hashedip/000077500000000000000000000000001141436564300216465ustar00rootroot00000000000000crossroads-2.65/xr/DispatchAlgorithms/hashedip/hashedip000066400000000000000000000005671141436564300233660ustar00rootroot00000000000000#ifndef _HASHEDIP_ #define _HASHEDIP_ #include "sys/sys" #include "error/error" #include "balancer/balancer" #include "config/config" #include "DispatchAlgorithms/algorithm/algorithm" #include "DispatchAlgorithms/leastconn/leastconn" class HashedIp: public Algorithm { public: unsigned target(struct in_addr clientip, BackendVector const &targetlist); }; #endif crossroads-2.65/xr/DispatchAlgorithms/hashedip/target.cc000066400000000000000000000024551141436564300234510ustar00rootroot00000000000000#include "hashedip" unsigned HashedIp::target(struct in_addr clientip, BackendVector const &targetlist) { // Nothing to do if we don't have targets. if (!targetlist.size()) throw Error("Hashed-ip algorithm: no back ends to dispatch to"); // Hash the client's IP into an index unsigned h = 0; for (char *cp = (char*)&clientip; unsigned(cp - (char*)&clientip) < sizeof(struct in_addr); cp++) { h += *cp; h %= targetlist.size(); } unsigned index = targetlist[h]; msg ((Mstr("Client IP ") + static_cast(inet_ntoa(clientip))) + (Mstr(" hashes to ") + index) + ", back end " + balancer.backend(index).description() + "\n"); // In strict mode, back end must be available, or don't proceed // In lax mode, fall back to least-connections dispatching if (! balancer.backend(index).available()) { if (config.dispatchmode() == Dispatchmode::m_strict_hashed_ip) throw Error("Hashed-IP algorithm: target back end " + balancer.backend(index).description() + " unavailable"); else { msg ("Hashed-IP algorithm: target back end " + balancer.backend(index).description() + " unavailable, " "falling back to least-connections\n"); Leastconn l; index = l.target(clientip, targetlist); } } // Got it return (index); } crossroads-2.65/xr/DispatchAlgorithms/leastconn/000077500000000000000000000000001141436564300220475ustar00rootroot00000000000000crossroads-2.65/xr/DispatchAlgorithms/leastconn/leastconn000066400000000000000000000005121141436564300237560ustar00rootroot00000000000000#ifndef _LEASTCONN_ #define _LEASTCONN_ #include "sys/sys" #include "error/error" #include "balancer/balancer" #include "DispatchAlgorithms/algorithm/algorithm" #include "ipstore/ipstore" class Leastconn: public Algorithm { public: unsigned target(struct in_addr clientip, BackendVector const &targetlist); }; #endif crossroads-2.65/xr/DispatchAlgorithms/leastconn/target.cc000066400000000000000000000031361141436564300236470ustar00rootroot00000000000000#include "leastconn" unsigned Leastconn::target(struct in_addr clientip, BackendVector const &targetlist) { PROFILE("Leastconn::target"); msg (Mstr("Starting least-connections dispatcher\n")); if (config.debug()) { ostringstream o; o << "Back end target list:"; for (unsigned i = 0; i < targetlist.size(); i++) o << ' ' << targetlist[i]; o << '\n'; _debugmsg(o.str()); } bool found = false; unsigned best_weighted = 0, t = 0; for (unsigned i = 0; i < targetlist.size(); i++) { if (! balancer.backend(targetlist[i]).available()) { debugmsg(Mstr("Back end ") + Mstr(balancer.backend(targetlist[i]).description()) + " is NOT available\n"); continue; } unsigned connections = balancer.backend(targetlist[i]).connections(); unsigned anticipated = IPStore::anticipated(targetlist[i]); unsigned adjweight = balancer.backend(targetlist[i]).adjustedweight(); unsigned this_weight = (connections + anticipated) * adjweight; ostringstream o; if (config.debug()) o << "Back end " << balancer.backend(targetlist[i]).description() << ": connections=" << connections << ", anticipated=" << anticipated << ", adjweight=" << adjweight << ", thisweight=" << this_weight; if (!found || this_weight < best_weighted) { t = targetlist[i]; best_weighted = this_weight; found = true; debugmsg(Mstr(o.str()) + Mstr(" is best so far\n")); } else debugmsg(Mstr(o.str()) + Mstr(" skipped, got a better one\n")); } if (!found) throw Error("Least-connections algorithm: no available back ends"); return (t); } crossroads-2.65/xr/DispatchAlgorithms/roundrobin/000077500000000000000000000000001141436564300222425ustar00rootroot00000000000000crossroads-2.65/xr/DispatchAlgorithms/roundrobin/roundrobin000066400000000000000000000004621141436564300243500ustar00rootroot00000000000000#ifndef _ROUNDROBIN_ #define _ROUNDROBIN_ #include "sys/sys" #include "error/error" #include "balancer/balancer" #include "DispatchAlgorithms/algorithm/algorithm" class Roundrobin: public Algorithm { public: unsigned target(struct in_addr clientip, BackendVector const &targetlist); }; #endif crossroads-2.65/xr/DispatchAlgorithms/roundrobin/target.cc000066400000000000000000000024651141436564300240460ustar00rootroot00000000000000#include "roundrobin" unsigned Roundrobin::target(struct in_addr clientip, BackendVector const &targetlist) { // No back ends? Don't even try. One back end? Always that one. if (targetlist.size() == 0) throw Error("Round robin dispatcher: no backends\n"); if (config.debug()) for (unsigned i = 0; i < targetlist.size(); i++) { unsigned backend_index = targetlist[i]; _debugmsg(Mstr("Round robin dispatcher: target ") + Mstr(i) + Mstr(" is ") + balancer.backend(backend_index).description() + "\n"); } if (targetlist.size() == 1) return (targetlist[0]); static int prev_run_index = -1; unsigned first_try_val = 0; bool first_try_set = false; while (true) { // See where we will start unsigned cur_val; if (prev_run_index == -1) { cur_val = 0; } else { if (! first_try_set) { first_try_set = true; first_try_val = prev_run_index; } cur_val = prev_run_index + 1; cur_val %= targetlist.size(); if (cur_val == first_try_val) throw Error("Round robin dispatcher: no backends\n"); } // Store for next time 'round lock (&prev_run_index); prev_run_index = cur_val; unlock (&prev_run_index); if (! balancer.backend(targetlist[cur_val]).available()) continue; // Done. return (targetlist[cur_val]); } } crossroads-2.65/xr/DispatchAlgorithms/storedip/000077500000000000000000000000001141436564300217125ustar00rootroot00000000000000crossroads-2.65/xr/DispatchAlgorithms/storedip/storedip000066400000000000000000000006611141436564300234710ustar00rootroot00000000000000#ifndef _STOREDIP_ #define _STOREDIP_ #include "sys/sys" #include "error/error" #include "balancer/balancer" #include "config/config" #include "timestamp/timestamp" #include "DispatchAlgorithms/algorithm/algorithm" #include "DispatchAlgorithms/leastconn/leastconn" #include "ipstore/ipstore" class StoredIp: public Algorithm { public: unsigned target(struct in_addr clientip, BackendVector const &targetlist); }; #endif crossroads-2.65/xr/DispatchAlgorithms/storedip/target.cc000066400000000000000000000033321141436564300235100ustar00rootroot00000000000000#include "storedip" unsigned StoredIp::target(struct in_addr clientip, BackendVector const &targetlist) { PROFILE("StoredIP::target"); IPStore::on(); msg(Mstr("Starting stored-ip dispatcher\n")); int tb; if ( (tb = IPStore::target(clientip)) >= 0 ) { unsigned target = tb; IPStore::clear(clientip); if (balancer.backend(target).available()) { // Historical target is up, go there! msg(Mstr("Sending ") + Mstr(inet_ntoa(clientip)) + " to " + balancer.backend(target).description() + "\n"); return target; } msg (Mstr("Historical target ") + balancer.backend(target).description() + " unavailable\n"); if (config.dispatchmode() == Dispatchmode::m_strict_stored_ip) throw Error("Stored-IP algorithm: target back end " + balancer.backend(target).description() + " unavailable"); } // Client is seen for the first time, or after the timout period, or // their preferred back end is down (and we're in lax mode ofc). // Treat as new connection. Leastconn l; if (!config.removereservations()) return l.target(clientip, targetlist); else { BackendVector tlist = targetlist; while (true) { try { return l.target(clientip, tlist); } catch (...) { // We're out of back ends and need to clear up the IP store to retry. // We give it a sec, remove the oldest entry, and rebuild the // target list for the least-connections dispatch algorithm. warnmsg("Out of back ends, releasing oldest client entry and retrying\n"); IPStore::clearoldest(); sleep(1); BackendVector newlist; for (unsigned int i = 0; i < balancer.nbackends(); i++) if (balancer.backend(i).available()) newlist.add(i); tlist = newlist; } } } } crossroads-2.65/xr/DispatchAlgorithms/weightedload/000077500000000000000000000000001141436564300225215ustar00rootroot00000000000000crossroads-2.65/xr/DispatchAlgorithms/weightedload/target.cc000066400000000000000000000026671141436564300243310ustar00rootroot00000000000000#include "weightedload" unsigned Weightedload::target(struct in_addr clientip, BackendVector const &targetlist) { // First loop thru and add up the weights. double total_load = 0; for (unsigned i = 0; i < targetlist.size(); i++) { if (balancer.backend(targetlist[i]).loadavg() == 0) total_load += 1 / 0.01; else total_load += 1 / balancer.backend(targetlist[i]).loadavg(); } // Now pick a random number from 0 to total_load // 4294967295 = 2^32 - 1 double pick_load = total_load * mt_rand() * (1.0 / 4294967295.0); msg ((Mstr("Weighted by Load Average; load-range is ") + total_load) + (Mstr(", and the selected load-range is ") + pick_load) + "\n"); // Now see which server that means! total_load = 0; for (unsigned i = 0; i < targetlist.size(); i++) { if (balancer.backend(targetlist[i]).loadavg() == 0) total_load += 1 / 0.01; else total_load += 1 / balancer.backend(targetlist[i]).loadavg(); if (total_load >= pick_load) { // if (config.verbose()) { // ostringstream o; // o << balancer.backend(targetlist[i]).loadavg(); // msg ("Weighted by Load Average chose backend " + // (string)balancer.backend(i).description() + " which has a " + // "load average of " + o.str() + "\n"); // } return targetlist[i]; } } throw Error("Weighted-load algorithm: no available back ends "); return targetlist[0]; // We need some kind of default... } crossroads-2.65/xr/DispatchAlgorithms/weightedload/weightedload000066400000000000000000000004701141436564300251050ustar00rootroot00000000000000#ifndef _WEIGHTEDLOAD_ #define _WEIGHTEDLOAD_ #include "sys/sys" #include "error/error" #include "balancer/balancer" #include "DispatchAlgorithms/algorithm/algorithm" class Weightedload: public Algorithm { public: unsigned target(struct in_addr clientip, BackendVector const &targetlist); }; #endif crossroads-2.65/xr/Dispatchers/000077500000000000000000000000001141436564300165415ustar00rootroot00000000000000crossroads-2.65/xr/Dispatchers/dispatcher/000077500000000000000000000000001141436564300206675ustar00rootroot00000000000000crossroads-2.65/xr/Dispatchers/dispatcher/checkacl.cc000066400000000000000000000011501141436564300227300ustar00rootroot00000000000000#include "dispatcher" bool Dispatcher::check_acl() { if (config.nallow()) { bool allowed = false; for (unsigned n = 0; n < config.nallow(); n++) if (ipmatch(clientip(), config.allow(n))) { allowed = true; break; } if (!allowed) { msg("Not serving client IP " + clientipstr() + ": no match in allow list\n"); return false; } } if (config.ndeny()) { for (unsigned n = 0; n < config.ndeny(); n++) if (ipmatch(clientip(), config.deny(n))) { msg("Not serving client IP " + clientipstr() + ": match in deny list\n"); return false; } } return true; } crossroads-2.65/xr/Dispatchers/dispatcher/checkdos.cc000066400000000000000000000077151141436564300227730ustar00rootroot00000000000000#include "dispatcher" typedef map < unsigned long, std::queue > AccessMap; static AccessMap accesslog; static time_t accesslog_lastclean = 0; // Execute an external program upon excess of hard/soft rates static void run_excess(string const &prog, char const *ip) { ostringstream o; o << prog << ' ' << ip; msg ((Mstr("Max connection rate exceeded, invoking '") + o.str()) + "'\n"); int ret = sysrun(o.str()); if (ret == -1) throw Error(string("Failed to start system call: ") + strerror(errno)); else if (ret) warnmsg((Mstr("Program '") + o.str()) + (Mstr("' exited with exit status ") + ret) + "\n"); else msg((Mstr("Program '") + o.str()) + "' finished.\n"); } bool Dispatcher::check_dos() { msg ("Verifying DOS protection\n"); Threadlist::desc("Verifying"); // Check 'softmaxconnrate' and 'hardmaxconnrate' now! // Descend into this block if connrate_time() is set, AND // either hardmaxconnrate() is set, // or both softmaxconnrate() and defertime() are set. if (config.connrate_time() && (config.hardmaxconnrate() || (config.softmaxconnrate() && config.defertime()))) { time_t now, min_ts; now = time(0); min_ts = now - config.connrate_time(); unsigned max_conns = max(config.hardmaxconnrate(), config.softmaxconnrate()); Mutex::lock (&accesslog[clientip().s_addr]); accesslog[clientip().s_addr].push(now); Mutex::unlock (&accesslog[clientip().s_addr]); if (accesslog_lastclean < min_ts) { // Clean the entire access log, it's been a while... Mutex::lock(&accesslog_lastclean); accesslog_lastclean = now; Mutex::unlock(&accesslog_lastclean); for (AccessMap::iterator i = accesslog.begin(); i != accesslog.end(); i++ ) { if (accesslog[i->first].back() < min_ts) { // This IP hasn't made ANY connections in a while -- erase! accesslog.erase(i); } else { // Keep popping off this IP's oldest connection until we // have only "recent" connections left. Mutex::lock(&accesslog[i->first]); while ( accesslog[i->first].front() < min_ts || accesslog[i->first].size() > max_conns ) { accesslog[i->first].pop(); } Mutex::unlock(&accesslog[i->first]); } } } else { // The "big log" doesn't need to be fully cleaned, // but this particular IP should be! Mutex::lock(&accesslog[clientip().s_addr]); while ( accesslog[clientip().s_addr].front() < min_ts || accesslog[clientip().s_addr].size() > max_conns ) { accesslog[clientip().s_addr].pop(); } Mutex::unlock(&accesslog[clientip().s_addr]); } if (config.hardmaxconnrate() && accesslog[clientip().s_addr].size() >= config.hardmaxconnrate() ) { // This IP has violated the "HARD" limit! Reject the connection ostringstream o; o << "Client " << clientipstr() << " has hit the HARD maximum number of connections (" << config.hardmaxconnrate() << " conections in " << config.connrate_time() << " seconds; " << accesslog[clientip().s_addr].size() << " connections recorded). Client is refused.\n"; warnmsg (o.str()); socketclose(clientfd()); run_excess(config.hardmaxconnexcess(), clientipstr().c_str()); return false; } else if (config.softmaxconnrate() && (accesslog[clientip().s_addr].size() >= config.softmaxconnrate())) { // This IP has violated the "SOFT" Limit. Go to sleep for a while. ostringstream o; o << "Client " << clientipstr() << " has hit the SOFT maximum number of connections (" << config.softmaxconnrate() << " connections in " << config.connrate_time() << " sedonds; " << accesslog[clientip().s_addr].size() << " connections recorded). Client is deferred for " << config.defertime() << " microseconds.\n"; warnmsg (o.str()); run_excess(config.softmaxconnexcess(), clientipstr().c_str()); usleep(config.defertime()); } } return true; } crossroads-2.65/xr/Dispatchers/dispatcher/clientipstr.cc000066400000000000000000000003551141436564300235410ustar00rootroot00000000000000#include "dispatcher" string const &Dispatcher::clientipstr() { if (clientip_str == "") { Mutex::lock( (void*)inet_ntoa ); clientip_str = inet_ntoa(clientip()); Mutex::unlock( (void*)inet_ntoa ); } return clientip_str; } crossroads-2.65/xr/Dispatchers/dispatcher/dispatcher000066400000000000000000000037341141436564300227470ustar00rootroot00000000000000#ifndef _DISPATCHER_ #define _DISPATCHER_ #include "sys/sys" #include "memory/memory" #include "balancer/balancer" #include "config/config" #include "ThreadsAndMutexes/thread/thread" #include "ThreadsAndMutexes/threadlist/threadlist" #include "backendvector/backendvector" #include "netbuffer/netbuffer" // Dispatching algorithm workers #include "DispatchAlgorithms/algorithm/algorithm" #include "DispatchAlgorithms/roundrobin/roundrobin" #include "DispatchAlgorithms/firstactive/firstactive" #include "DispatchAlgorithms/leastconn/leastconn" #include "DispatchAlgorithms/external/external" #include "DispatchAlgorithms/hashedip/hashedip" #include "DispatchAlgorithms/storedip/storedip" #include "DispatchAlgorithms/weightedload/weightedload" #ifdef MEMDEBUG class Dispatcher: public Thread, public Memory #else class Dispatcher: public Thread #endif { public: Dispatcher(int fd, struct in_addr ip); Dispatcher(int fd); virtual ~Dispatcher(); virtual void execute() = 0; virtual void dispatch() = 0; virtual void handle() = 0; bool check_dos(); bool check_acl(); int targetbackend() const { return target_backend; } void targetbackend(int t) { target_backend = t; } struct in_addr clientip() const { return client_ip; } void clientip(struct in_addr i) { client_ip = i; clientip_str = ""; } string const &clientipstr(); int clientfd() const { return client_fd; } void clientfd(int c) { client_fd = c; } int backendfd() const { return backend_fd; } void backendfd(int b) { backend_fd = b; } Algorithm *algorithm() const { return algo; } BackendVector &targetlist() { return target_list; } void targetlist (BackendVector t) { target_list = t; } private: void start_dispatcher(); struct in_addr client_ip; int target_backend, client_fd, backend_fd; Algorithm *algo; BackendVector target_list; string clientip_str; }; #endif crossroads-2.65/xr/Dispatchers/dispatcher/dispatcher1.cc000066400000000000000000000003471141436564300234110ustar00rootroot00000000000000#include "dispatcher" Dispatcher::Dispatcher(int cfd, struct in_addr cip): Thread(), client_ip(cip), target_backend(-1), client_fd(cfd), backend_fd(-1), algo(0), target_list(), clientip_str() { start_dispatcher(); } crossroads-2.65/xr/Dispatchers/dispatcher/dispatcher2.cc000066400000000000000000000001561141436564300234100ustar00rootroot00000000000000#include "dispatcher" Dispatcher::~Dispatcher() { delete algo; debugmsg ("Dispatcher finished\n"); } crossroads-2.65/xr/Dispatchers/dispatcher/dispatcher3.cc000066400000000000000000000003001141436564300234000ustar00rootroot00000000000000#include "dispatcher" Dispatcher::Dispatcher(int fd): Thread(), target_backend(-1), client_fd(fd), backend_fd(-1), algo(0), target_list(), clientip_str() { start_dispatcher(); } crossroads-2.65/xr/Dispatchers/dispatcher/startdispatcher.cc000066400000000000000000000016341141436564300244060ustar00rootroot00000000000000#include "dispatcher" void Dispatcher::start_dispatcher() { // Instantiate dispatchmode algorithm switch (config.dispatchmode()) { case Dispatchmode::m_roundrobin: algo = new Roundrobin; break; case Dispatchmode::m_firstactive: algo = new Firstactive; break; case Dispatchmode::m_external: algo = new External; break; case Dispatchmode::m_strict_hashed_ip: case Dispatchmode::m_lax_hashed_ip: algo = new HashedIp; break; case Dispatchmode::m_strict_stored_ip: case Dispatchmode::m_lax_stored_ip: algo = new StoredIp; break; case Dispatchmode::m_weighted_load: algo = new Weightedload; break; case Dispatchmode::m_leastconn: default: algo = new Leastconn; break; } // NOTE: Memory errors for algorithm pointer are not handled here, // but in dispatch() (don't want to throw up in the constructor) debugmsg("Dispatcher instantiated.\n"); } crossroads-2.65/xr/Dispatchers/httpdispatcher/000077500000000000000000000000001141436564300215675ustar00rootroot00000000000000crossroads-2.65/xr/Dispatchers/httpdispatcher/dispatch.cc000066400000000000000000000062361141436564300237040ustar00rootroot00000000000000#include "httpdispatcher" void HttpDispatcher::dispatch() { PROFILE("HttpDispatcher::dispatch"); unsigned stickytarget; string host_header = ""; string url = ""; // Try to dispatch. Since we're in HTTP mode, we must return an // error page when dispatching fails. try { // Get the client's request. May need for cookie inspection or for the // host header. while (!buf().headersreceived()) if (!buf().netread(clientfd(), config.client_read_timeout())) { msg ("Didn't receive a valid client request, stopping"); return; } msg ("Received client request: '" + buf().firstline() + "'\n"); // See if hostmatching or urlmatching is used. // This is true when hosts or urls are matched against non-dot. bool hostmatchused = false; bool urlmatchused = false; for (unsigned i = 0; i < balancer.nbackends(); i++) { if (balancer.backend(i).hostmatch() != ".") hostmatchused = true; if (balancer.backend(i).urlmatch() != ".") urlmatchused = true; } // Build new target list if host- or url matching applies. if (hostmatchused || urlmatchused) { msg ("Creating matched target list for the HTTP dispatcher\n"); if (hostmatchused) host_header = buf().headerval("Host"); if (urlmatchused) url = buf().url(); BackendVector v; v.isdefined(true); for (unsigned i = 0; i < balancer.nbackends(); i++) { if (! balancer.backend(i).available()) continue; bool host_allowed = true, url_allowed = true; if (hostmatchused && regexec(&(balancer.backend(i).hostregex()), host_header.c_str(), 0, 0, 0)) { debugmsg("Back end " + balancer.backend(i).description() + " forbidden due to hostmatch\n"); host_allowed = false; } if (urlmatchused && regexec(&(balancer.backend(i).urlregex()), url.c_str(), 0, 0, 0)) { debugmsg("Back end " + balancer.backend(i).description() + " forbidden due to urlmatch\n"); url_allowed = false; } if (host_allowed && url_allowed) { v.add(i); msg("Candidate target: " + balancer.backend(i).description() + "\n"); } } targetlist(v); } // Dispatch as a normal backend if sticky HTTP is off, or if the // sticky target is badly specified. if (!config.stickyhttp() || (sscanf (buf().cookievalue ("XRTarget").c_str(), "%d", &stickytarget) < 1 && sscanf (buf().paramvalue ("XRTarget").c_str(), "%d", &stickytarget) < 1) || stickytarget >= balancer.nbackends()) { issticky(false); TcpDispatcher::dispatch(); } else { // Got a sticky target. Try to connect. If that fails, fallback // to non-sticky dispatching. targetbackend(stickytarget); Backend tb = balancer.backend(stickytarget); msg ("Sticky HTTP request for " + tb.description() + "\n"); if (! tb.connect()) { balancer.backend(stickytarget).live(false); msg ("Failed to connect to back end " + tb.description() + ", trying to dispatch to other\n"); issticky(false); TcpDispatcher::dispatch(); } else { backendfd(tb.sock()); issticky(true); } } } catch (Error const &e) { senderrorpage(e.what()); throw e; } } crossroads-2.65/xr/Dispatchers/httpdispatcher/handle.cc000066400000000000000000000064621141436564300233410ustar00rootroot00000000000000#include "httpdispatcher" void HttpDispatcher::handle() { PROFILE("HttpDispatcher::handle"); // The client request was already retrieved before starting the // dispatcher. We can continue by applying server-directed headers. if (config.addxrversion()) buf().setheader ("XR", VER); if (config.addxforwardedfor()) buf().addheader ("X-Forwarded-For", clientipstr()); for (unsigned n = 0; n < config.nserverheaders(); n++) buf().setheader (config.serverheader(n)); // Patch up the Host: header if requested so. if (config.replacehostheader()) buf().replaceheader("Host:", balancer.backend(targetbackend()).server()); // Flush client info received so far to the back end. debugmsg("Sending client request to back end\n"); buf().netwrite(backendfd(), config.backend_write_timeout()); // Let's see if we will need to modify the server headers. bool modify_serverheaders = false; if (config.addxrversion() || (config.stickyhttp() && !issticky())) modify_serverheaders = true; // Store the client request. May want to log it later. string client_request = buf().firstline(); // Go into copy-thru mode. If required, catch the server headers on // their first appearance and modify them. bool backend_response_checked = false; while (1) { Fdset readset (maxtimeout(config.client_read_timeout(), config.backend_read_timeout())); readset.add(clientfd()); readset.add(backendfd()); readset.wait_r(); int sock; if (readset.readable(clientfd())) sock = clientfd(); else if (readset.readable(backendfd())) sock = backendfd(); else break; buf().reset(); if (!buf().netread(sock)) break; if (sock == backendfd() && modify_serverheaders) { debugmsg("Back end response seen, applying modifications\n"); modify_serverheaders = false; while (! buf().headersreceived()) if (!buf().netread (sock, config.backend_read_timeout())) throw Error("Failed to get headers from back end"); if (config.addxrversion()) buf().setheader("XR", VER); if (config.stickyhttp() && !issticky()) { ostringstream o; o << "XRTarget=" << targetbackend() << "; path=/"; buf().setheader("Set-Cookie", o.str()); } } // The back end response may now get flushed to the client. // If the response code is 4** or 5**, log it as a warning. if (!backend_response_checked && sock == backendfd() && buf().headersreceived()) { string respcode = buf().stringat(9, 3); if (respcode[0] == '4' || respcode[0] == '5') warnmsg("HTTP back end indicates fault: '" + buf().firstline() + "' as response to '" + client_request + "'\n"); backend_response_checked = true; } // Flush info to the other connected side. int othersock, timeout; if (sock == clientfd()) { othersock = backendfd(); timeout = config.backend_read_timeout(); // Re-patch Host header if requested if (config.replacehostheader()) buf().replaceheader("Host:", balancer.backend(targetbackend()).server()); } else { othersock = clientfd(); timeout = config.client_read_timeout(); } debugmsg (Mstr("Had data on ") + sock + (Mstr(", sending to ") + othersock) + "\n"); buf().netwrite(othersock, timeout); if (sock == backendfd()) balancer.backend(targetbackend()).addbytes(buf().bufsz()); } } crossroads-2.65/xr/Dispatchers/httpdispatcher/httpdispatcher000066400000000000000000000007451141436564300245460ustar00rootroot00000000000000#ifndef _HTTPDISPATCHER_ #define _HTTPDISPATCHER_ #include "sys/sys" #include "Dispatchers/tcpdispatcher/tcpdispatcher" #include "httpbuffer/httpbuffer" class HttpDispatcher: public TcpDispatcher { public: HttpDispatcher (int fd, struct in_addr ip); void dispatch(); void handle(); bool issticky() const { return (is_sticky); } void issticky (bool s) { is_sticky = s; } private: void senderrorpage(string const &desc); bool is_sticky; }; #endif crossroads-2.65/xr/Dispatchers/httpdispatcher/httpdispatcher1.cc000066400000000000000000000001671141436564300252110ustar00rootroot00000000000000#include "httpdispatcher" HttpDispatcher::HttpDispatcher (int fd, struct in_addr ip) : TcpDispatcher (fd, ip) { } crossroads-2.65/xr/Dispatchers/httpdispatcher/senderrorpage.cc000066400000000000000000000017011141436564300247350ustar00rootroot00000000000000#include "httpdispatcher" void HttpDispatcher::senderrorpage(string const &reason) { PROFILE("HttpDispatcher::senderrorpage"); msg ("Sending error page to client: '" + reason + "'\n"); try { string txt = "\n" " \n" " Internal Server Error\n" " \n" " \n" "

Internal Server Error

\n" " You request could not be completed. Please retry later.\n" " \n" "\n"; ostringstream mess; mess << "HTTP/1.0 502 Internal Server Error\r\n" "Content-Length: " << txt.size() << "\r\n" "XR-Reason: " << reason << "\r\n" "\r\n" << txt; Netbuffer buf(mess.str()); buf.netwrite(clientfd(), config.client_write_timeout()); } catch (Error const &e) { // Silently discard, we are not interested in errors // that ocur when an error page is being sent msg (Mstr(e.what()) + Mstr(" (while sending error page)\n")); } } crossroads-2.65/xr/Dispatchers/tcpdispatcher/000077500000000000000000000000001141436564300213765ustar00rootroot00000000000000crossroads-2.65/xr/Dispatchers/tcpdispatcher/dispatch.cc000066400000000000000000000026671141436564300235170ustar00rootroot00000000000000#include "tcpdispatcher" void TcpDispatcher::dispatch() { // Check that a working algorithm is available. May be missing if // constructor's "new" failed. if (!algorithm()) throw Error("No algorithm in Tcpdispatcher::dispatch"); bool connected = false; // Build up the target list, if not yet done so. The HTTP dispatcher // might've created it already for host-based matching (in which case // we won't bother here). if (! targetlist().isdefined()) { msg ("Creating target list for the TCP dispatcher\n"); for (unsigned i = 0; i < balancer.nbackends(); i++) if (balancer.backend(i).available()) { targetlist().add(i); if (config.verbose()) msg (" Candidate target: " + balancer.backend(i).description() + "\n"); } } // Call the dispatch algorithm until we can connect, // or until the algorithm is out of back ends (throws exception). while (!connected) { targetbackend(algorithm()->target(clientip(), targetlist())); Backend tb = balancer.backend(targetbackend()); if (!tb.connect()) { balancer.backend(targetbackend()).live(false); if (config.verbose()) msg ("Failed to connect to back end " + tb.description() + ", trying to dispatch to other\n"); } else { connected = true; backendfd(tb.sock()); msg ((Mstr("Will dispatch client to back end ") + tb.description()) + (Mstr(" on fd ") + tb.sock()) + "\n"); break; } } } crossroads-2.65/xr/Dispatchers/tcpdispatcher/execute.cc000066400000000000000000000047761141436564300233650ustar00rootroot00000000000000#include "tcpdispatcher" void TcpDispatcher::execute() { Threadlist::clientfd(clientfd()); Threadlist::clientip(clientip()); if (!check_dos() || !check_acl()) return; msg ((Mstr("Dispatch request for client fd ") + clientfd()) + "\n"); // Try to determine the back end. try { Threadlist::desc("Dispatching"); dispatch(); } catch (Error const &e) { Mutex::lock(&cerr); cerr << e.what() << "\n"; Mutex::unlock(&cerr); socketclose(clientfd()); socketclose(backendfd()); return; } // Verify that the target is within the allowed set. if (targetbackend() < 0 || targetbackend() >= (int)balancer.nbackends()) { cerr << "WARNING: target back end " << targetbackend() << " out of range\n"; socketclose(clientfd()); socketclose(backendfd()); return; } // Dispatch! msg ((Mstr("Dispatching client fd ") + clientfd()) + (Mstr(" to ") + balancer.backend(targetbackend()).description()) + (Mstr(", fd ") + backendfd()) + "\n"); Threadlist::desc("Serving"); Threadlist::backend(targetbackend()); Threadlist::backendfd(backendfd()); balancer.backend(targetbackend()).startconnection(); if (config.onstart().length()) { ostringstream o; o << config.onstart() << ' ' << clientipstr() << ' ' << balancer.backend(targetbackend()).description() << ' ' << balancer.backend(targetbackend()).connections(); msg (Mstr("Running onstart script: ") + o.str() + "\n"); sysrun(o.str()); } bool failed = false; try { handle(); } catch (Error const &e) { Mutex::lock(&cerr); cerr << e.what() << "\n"; Mutex::unlock(&cerr); failed = true; if (config.onfail().length()) { ostringstream o; o << config.onfail() << ' ' << clientipstr() << ' ' << balancer.backend(targetbackend()).description() << ' ' << balancer.backend(targetbackend()).connections(); msg(Mstr("Running onfail script: ") + o.str() + "\n"); sysrun(o.str()); } } socketclose (clientfd()); socketclose (backendfd()); balancer.backend(targetbackend()).endconnection(); if (!failed && config.onend().length()) { ostringstream o; o << config.onend() << ' ' << clientipstr() << ' ' << balancer.backend(targetbackend()).description() << ' ' << balancer.backend(targetbackend()).connections(); msg (Mstr("Running onend script: ") + o.str() + "\n"); sysrun(o.str()); } msg ((Mstr("Done dispatching to back end fd ") + backendfd()) + (Mstr(" at ") + balancer.backend(targetbackend()).description()) + "\n"); } crossroads-2.65/xr/Dispatchers/tcpdispatcher/handle.cc000066400000000000000000000021101141436564300231320ustar00rootroot00000000000000#include "tcpdispatcher" void TcpDispatcher::handle() { debugmsg (Mstr("TCP dispatcher: About to shuttle between client fd ") + clientfd() + (Mstr(" and backend fd ") + backendfd()) + "\n"); while (1) { Fdset readset(maxtimeout(config.client_read_timeout(), config.backend_read_timeout())); readset.add(clientfd()); readset.add(backendfd()); readset.wait_r(); int sock, othersock, timeout; if (readset.readable(clientfd())) { sock = clientfd(); othersock = backendfd(); timeout = config.backend_write_timeout(); } else if (readset.readable(backendfd())) { sock = backendfd(); othersock = clientfd(); timeout = config.client_write_timeout(); } else break; if (!netbuffer.netread(sock)) break; debugmsg (Mstr("Had data on ") + sock + (Mstr(", sending to ") + othersock) + "\n"); netbuffer.netwrite (othersock, timeout); if (sock == backendfd()) balancer.backend(targetbackend()).addbytes(netbuffer.bufsz()); else IPStore::activity(clientip(), targetbackend()); netbuffer.reset(); } } crossroads-2.65/xr/Dispatchers/tcpdispatcher/tcpdispatcher000066400000000000000000000010651141436564300241600ustar00rootroot00000000000000#ifndef _TCPDISPATCHER_ #define _TCPDISPATCHER_ #include "Dispatchers/dispatcher/dispatcher" #include "netbuffer/netbuffer" #include "httpbuffer/httpbuffer" #include "ipstore/ipstore" class TcpDispatcher: public Dispatcher { public: TcpDispatcher (int fd, struct in_addr ip); virtual void execute(); virtual void dispatch(); virtual void handle(); unsigned readchunk (int src); Httpbuffer &buf() { return netbuffer; } private: Httpbuffer netbuffer; // same as netbuffer, but // httpdispatcher reuses it }; #endif crossroads-2.65/xr/Dispatchers/tcpdispatcher/tcpdispatcher1.cc000066400000000000000000000001771141436564300246300ustar00rootroot00000000000000#include "tcpdispatcher" TcpDispatcher::TcpDispatcher(int cfd, struct in_addr cip): Dispatcher(cfd, cip), netbuffer() { } crossroads-2.65/xr/Dispatchers/udpdispatcher/000077500000000000000000000000001141436564300214005ustar00rootroot00000000000000crossroads-2.65/xr/Dispatchers/udpdispatcher/dispatch.cc000066400000000000000000000001761141436564300235120ustar00rootroot00000000000000#include "udpdispatcher" void UdpDispatcher::dispatch() { throw Error("UDP dispatcher: dispatch not yet implemented"); } crossroads-2.65/xr/Dispatchers/udpdispatcher/execute.cc000066400000000000000000000001741141436564300233530ustar00rootroot00000000000000#include "udpdispatcher" void UdpDispatcher::execute() { throw Error("UDP dispatcher: execute not yet implemented"); } crossroads-2.65/xr/Dispatchers/udpdispatcher/handle.cc000066400000000000000000000001721141436564300231420ustar00rootroot00000000000000#include "udpdispatcher" void UdpDispatcher::handle() { throw Error("UDP dispatcher: handle not yet implemented"); } crossroads-2.65/xr/Dispatchers/udpdispatcher/udpdispatcher000066400000000000000000000004541141436564300241650ustar00rootroot00000000000000#ifndef _UDPDISPATCHER_ #define _UDPDISPATCHER_ #include "Dispatchers/dispatcher/dispatcher" class UdpDispatcher: public Dispatcher { public: UdpDispatcher(int fd); virtual void execute(); virtual void dispatch(); virtual void handle(); private: Netbuffer netbuffer; }; #endif crossroads-2.65/xr/Dispatchers/udpdispatcher/udpdispatcher1.cc000066400000000000000000000001411141436564300246230ustar00rootroot00000000000000#include "udpdispatcher" UdpDispatcher::UdpDispatcher(int fd) : Dispatcher(fd), netbuffer() { } crossroads-2.65/xr/Makefile000066400000000000000000000043101141436564300157260ustar00rootroot00000000000000 # Configuration DIRS = $(shell find . -type d | grep -v '.svn') BUILDDIR = build BIN = $(BUILDDIR)/xr LIB = $(BUILDDIR)/libxr.a TMPXR = /tmp/xr-$(shell whoami) CONF_CC = $(shell etc/c-conf -c $(BUILDDIR)/config.cache c++-compiler) CONF_OPTFLAGS = $(shell etc/c-conf -c $(BUILDDIR)/config.cache optflags) CONF_LIB = $(shell etc/c-conf -c $(BUILDDIR)/config.cache \ lib ucb nsl pthread socket m alf) CONF_GETOPT = $(shell etc/c-conf -c $(BUILDDIR)/config.cache \ ifheader getopt.h HAVE_GETOPT_H) CONF_GETOPT_LONG = $(shell etc/c-conf -c $(BUILDDIR)/config.cache \ libfunction getopt_long HAVE_GETOPT_LONG) CONF_INET_ATON = $(shell etc/c-conf -c $(BUILDDIR)/config.cache \ libfunction inet_aton HAVE_INET_ATON) CONF_STRNSTR = $(shell etc/c-conf -c $(BUILDDIR)/config.cache \ libfunction strnstr HAVE_STRNSTR) foo: $(MAKE) subdirs $(MAKE) $(BIN) install: $(BINDIR)/xr $(BINDIR)/xr: $(BUILDDIR)/xr cp $(BUILDDIR)/xr $(TMPXR) strip $(TMPXR) install $(TMPXR) $(BINDIR)/xr rm -f $(TMPXR) subdirs: $(BUILDDIR)/usage.h $(BUILDDIR)/status.xslt.h @echo 'About to build in class dirs: $(DIRS)' @for f in $(DIRS) ; do \ echo "Making: $$f"; \ BASE=$(BASE) CC=$(CONF_CC) BUILDDIR=$(BUILDDIR) VER='$(VER)' \ AUTHOR='$(AUTHOR)' MAINTAINER='$(MAINTAINER)' \ DISTSITE='$(DISTSITE)' MEMDEBUG=$(MEMDEBUG)\ CONF_CC='$(CONF_CC)' CONF_LIB='$(CONF_LIB)' \ CONF_GETOPT=$(CONF_GETOPT) CONF_GETOPT_LONG=$(CONF_GETOPT_LONG) \ CONF_INET_ATON=$(CONF_INET_ATON) CONF_OPTFLAGS='$(CONF_OPTFLAGS)' \ CONF_STRNSTR=$(CONF_STRNSTR) \ $(MAKE) -C $$f -f $(BASE)/xr/etc/Makefile.class \ || exit 1; \ done ar rs $(LIB) */*.o ranlib $(LIB) $(BUILDDIR)/usage.h: etc/usage.txt etc/e-txt2c USAGE $(BUILDDIR)/usage.h touch config/parsecmdline.cc $(BUILDDIR)/status.xslt.h: etc/status.xslt etc/e-txt2c XSLT $(BUILDDIR)/status.xslt.h touch webinterface/answerxslt.cc $(BIN): $(BUILDDIR)/libxr.a $(CONF_CC) $(PROF) $(CONF_OPTFLAGS) -g -o $(BIN) \ -L$(BUILDDIR) -lxr $(CONF_LIB) clean: rm -f $(BIN) $(LIB) core obj/*.o etc/usage.h $(BUILDDIR)/config.cache find . -name \*.bak -exec rm {} \; crossroads-2.65/xr/ThreadsAndMutexes/000077500000000000000000000000001141436564300176605ustar00rootroot00000000000000crossroads-2.65/xr/ThreadsAndMutexes/mutex/000077500000000000000000000000001141436564300210225ustar00rootroot00000000000000crossroads-2.65/xr/ThreadsAndMutexes/mutex/lock.cc000066400000000000000000000003431141436564300222610ustar00rootroot00000000000000#include "mutex" #include "profiler/profiler" std::map Mutex::s_lock; void Mutex::lock (void *target) { PROFILE("Mutex::lock"); plock(&s_lock); plock(target); unlock(&s_lock); } crossroads-2.65/xr/ThreadsAndMutexes/mutex/mutex000066400000000000000000000005201141436564300221040ustar00rootroot00000000000000#ifndef _MUTEX_ #define _MUTEX_ #include "sys/sys" class Mutex { public: static void lock (void *target); static void unlock (void *target); private: static void plock (void *target); static std::map s_lock; typedef std::map::iterator mapIterator; }; #endif crossroads-2.65/xr/ThreadsAndMutexes/mutex/plock.cc000066400000000000000000000007601141436564300224440ustar00rootroot00000000000000#include "mutex" #include "error/error" void Mutex::plock(void *target) { mapIterator iter = s_lock.find(target); if (iter == s_lock.end()) { // No such lock yet, create the mutex if (int res = pthread_mutex_init(&s_lock[target], 0)) throw Error(string("Failed to initialize static mutex: ") + strerror(res)); } if (int res = pthread_mutex_lock(&s_lock[target])) throw Error(string("Failed to obtain mutex lock: ") + strerror(res)); } crossroads-2.65/xr/ThreadsAndMutexes/mutex/unlock.cc000066400000000000000000000004341141436564300226250ustar00rootroot00000000000000#include "mutex" #include "error/error" #include "profiler/profiler" void Mutex::unlock(void *target) { PROFILE("Mutex::unlock"); if (int res = pthread_mutex_unlock(&s_lock[target])) throw Error(string("Failed to release mutex lock: ") + strerror(res)); } crossroads-2.65/xr/ThreadsAndMutexes/thread/000077500000000000000000000000001141436564300211275ustar00rootroot00000000000000crossroads-2.65/xr/ThreadsAndMutexes/thread/execute.cc000066400000000000000000000001431141436564300230760ustar00rootroot00000000000000#include "thread" // Dummy incase the derived class doesn't define one void Thread::execute() { } crossroads-2.65/xr/ThreadsAndMutexes/thread/run.cc000066400000000000000000000007171141436564300222470ustar00rootroot00000000000000#include "thread" #include "sys/sys" void *Thread::_run (void *data) { Thread *t = (Thread*) data; debugmsg(Mstr("Thread: starting run\n")); Threadlist::enregister(); try { t->execute(); } catch (Error const &e) { lock(&cerr); cerr << e.what() << "\n"; unlock(&cerr); } Threadlist::deregister(); debugmsg(Mstr("Thread: ending run\n")); // Cleanups delete (t); // To satisfy the prototype return (0); } crossroads-2.65/xr/ThreadsAndMutexes/thread/start.cc000066400000000000000000000022151141436564300225730ustar00rootroot00000000000000#include "thread" #include "profiler/profiler" void Thread::start() { PROFILE ("Thread::start"); if (config.foregroundmode()) _run ((void*)this); else { pthread_t th; pthread_attr_t attr; int res; if (pthread_attr_init (&attr)) throw Error("Cannot initialize thread attributes"); if (pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED)) throw Error("Cannot set thread state as detached"); for (int i = 0; i < 3; i++) { # ifdef MISTRUST_THREAD_CREATE_THREADSAFE lock((void*)_run); # endif res = pthread_create (&th, &attr, _run, (void*) this); # ifdef MISTRUST_THREAD_CREATE_THREADSAFE unlock((void*)_run); # endif if (!res) { pthread_attr_destroy (&attr); return; } else if (res == EAGAIN) { if (config.verbose()) msg ("Failed to start thread: " + (string)strerror(res) + ", retrying\n"); sleep (1); continue; } else { pthread_attr_destroy (&attr); throw Error(string("Failed to start thread: ") + strerror(res)); } } throw Error("Failed to start thread: " "Resources unavailable after 3 tries, giving up"); } } crossroads-2.65/xr/ThreadsAndMutexes/thread/thread000066400000000000000000000007761141436564300223330ustar00rootroot00000000000000#ifndef _THREAD_ #define _THREAD_ #include "sys/sys" #include "memory/memory" #include "error/error" #include "config/config" #include "timestamp/timestamp" #include "ThreadsAndMutexes/mutex/mutex" #include "ThreadsAndMutexes/threadlist/threadlist" using namespace std; #ifdef MEMDEBUG class Thread: public Mutex, public Memory #else class Thread: public Mutex #endif { public: virtual ~Thread(); void start(); virtual void execute(); private: static void *_run(void *data); }; #endif crossroads-2.65/xr/ThreadsAndMutexes/thread/thread2.cc000066400000000000000000000000511141436564300227630ustar00rootroot00000000000000#include "thread" Thread::~Thread() { } crossroads-2.65/xr/ThreadsAndMutexes/threadinfo/000077500000000000000000000000001141436564300220035ustar00rootroot00000000000000crossroads-2.65/xr/ThreadsAndMutexes/threadinfo/threadinfo000066400000000000000000000020351141436564300240510ustar00rootroot00000000000000#ifndef _THREADINFO_ #define _THREADINFO_ #include "sys/sys" #include "timestamp/timestamp" #include "ThreadsAndMutexes/mutex/mutex" class Threadinfo { public: Threadinfo(): th_desc(), th_tm(), th_backend(-1), th_backendfd(-1), th_clientfd(-1) { memset(&th_clientip, 0, sizeof(th_clientip)); } void desc(string s) { th_desc = s; } string const &desc() const { return th_desc; } Timestamp const ×tamp() const { return th_tm; } void backend(int b) { th_backend = b; } int backend() const { return th_backend; } void backendfd(int f) { th_backendfd = f; } int backendfd() const { return th_backendfd; } void clientfd(int f) { th_clientfd = f; } int clientfd() const { return th_clientfd; } void clientip(struct in_addr c) { th_clientip = c; } struct in_addr clientip() const { return th_clientip; } private: string th_desc; Timestamp th_tm; int th_backend, th_backendfd, th_clientfd; struct in_addr th_clientip; }; #endif crossroads-2.65/xr/ThreadsAndMutexes/threadlist/000077500000000000000000000000001141436564300220235ustar00rootroot00000000000000crossroads-2.65/xr/ThreadsAndMutexes/threadlist/backend.cc000066400000000000000000000001421141436564300237160ustar00rootroot00000000000000#include "threadlist" void Threadlist::backend(int b) { th_map[pthread_self()].backend(b); } crossroads-2.65/xr/ThreadsAndMutexes/threadlist/backendfd.cc000066400000000000000000000001461141436564300242340ustar00rootroot00000000000000#include "threadlist" void Threadlist::backendfd(int f) { th_map[pthread_self()].backendfd(f); } crossroads-2.65/xr/ThreadsAndMutexes/threadlist/clientfd.cc000066400000000000000000000001441141436564300241210ustar00rootroot00000000000000#include "threadlist" void Threadlist::clientfd(int f) { th_map[pthread_self()].clientfd(f); } crossroads-2.65/xr/ThreadsAndMutexes/threadlist/clientip.cc000066400000000000000000000001631141436564300241410ustar00rootroot00000000000000#include "threadlist" void Threadlist::clientip(struct in_addr adr) { th_map[pthread_self()].clientip(adr); } crossroads-2.65/xr/ThreadsAndMutexes/threadlist/deregister1.cc000066400000000000000000000002211141436564300245430ustar00rootroot00000000000000#include "threadlist" void Threadlist::deregister(pthread_t id) { Mutex::lock(&th_map); th_map.erase(id); Mutex::unlock(&th_map); } crossroads-2.65/xr/ThreadsAndMutexes/threadlist/deregister2.cc000066400000000000000000000001321141436564300245450ustar00rootroot00000000000000#include "threadlist" void Threadlist::deregister() { deregister(pthread_self()); } crossroads-2.65/xr/ThreadsAndMutexes/threadlist/desc.cc000066400000000000000000000001461141436564300232510ustar00rootroot00000000000000#include "threadlist" void Threadlist::desc(string const &s) { th_map[pthread_self()].desc(s); } crossroads-2.65/xr/ThreadsAndMutexes/threadlist/enregister.cc000066400000000000000000000003001141436564300244720ustar00rootroot00000000000000#include "threadlist" Threadmap Threadlist::th_map; void Threadlist::enregister() { Threadinfo n; Mutex::lock(&th_map); th_map[pthread_self()] = n; Mutex::unlock(&th_map); } crossroads-2.65/xr/ThreadsAndMutexes/threadlist/info.cc000066400000000000000000000001341141436564300232630ustar00rootroot00000000000000#include "threadlist" Threadinfo Threadlist::info(pthread_t id) { return th_map[id]; } crossroads-2.65/xr/ThreadsAndMutexes/threadlist/map.cc000066400000000000000000000001131141436564300231020ustar00rootroot00000000000000#include "threadlist" Threadmap &Threadlist::map() { return th_map; } crossroads-2.65/xr/ThreadsAndMutexes/threadlist/threadlist000066400000000000000000000011271141436564300241120ustar00rootroot00000000000000#ifndef _THREADLIST_ #define _THREADLIST_ #include "sys/sys" #include "ThreadsAndMutexes/threadinfo/threadinfo" typedef map Threadmap; class Threadlist { public: static void enregister(); static void deregister(pthread_t id); static void deregister(); static Threadmap &map(); static Threadinfo info(pthread_t id); static void desc(string const &s); static void backend(int b); static void clientfd(int f); static void backendfd(int f); static void clientip(struct in_addr adr); private: static Threadmap th_map; }; #endif crossroads-2.65/xr/backend/000077500000000000000000000000001141436564300156575ustar00rootroot00000000000000crossroads-2.65/xr/backend/addbytes.cc000066400000000000000000000002271141436564300177660ustar00rootroot00000000000000#include "backend" void Backend::addbytes (unsigned n) { Mutex::lock (&bytes_served); bytes_served += n; Mutex::unlock (&bytes_served); } crossroads-2.65/xr/backend/available.cc000066400000000000000000000011301141436564300201010ustar00rootroot00000000000000#include "backend" #include "profiler/profiler" #include "ipstore/ipstore" bool Backend::available() const { PROFILE("Backend::available"); if (config.debug()) { ostringstream o; o << "Back end " << description() << ": " << livestr() << ", " << upstr() << ", " << connections() << " connections, " << IPStore::anticipated(balancerindex()) << " anticipated, " << maxconn() << " max\n"; _debugmsg(o.str()); } if (!maxconn()) return (islive && isup); return (islive && isup && (connections() + IPStore::anticipated(balancerindex()) < maxconn())); } crossroads-2.65/xr/backend/availablestr.cc000066400000000000000000000001651141436564300206410ustar00rootroot00000000000000#include "backend" string Backend::availablestr() const { return (available() ? "available" : "unavailable"); } crossroads-2.65/xr/backend/backend000066400000000000000000000051571141436564300172010ustar00rootroot00000000000000#ifndef _BACKEND_ #define _BACKEND_ #include "sys/sys" #include "backenddef/backenddef" #include "fdset/fdset" #include "error/error" #include "ThreadsAndMutexes/mutex/mutex" #include "profiler/profiler" #include "backendcheck/backendcheck" #include "httpbuffer/httpbuffer" #include "dnsentry/dnsentry" using namespace std; class Backend { public: Backend (); Backend (BackendDef const &b); virtual ~Backend(); bool connect(); void markconnecterror(); int sock() const { return clsocket; } void check(); string description() const; bool available() const; string availablestr() const; bool live() const { return islive; }; void live (bool state); string livestr() const; void up (bool state); bool up() const { return isup; } string upstr() const; string const &server() const { return bdef.server(); } void server(string s) { bdef.server(s); } int port() const { return bdef.port(); } void port(int p) { bdef.port(p); } unsigned maxconn() const { return bdef.maxconn(); } void maxconn (unsigned m) { bdef.maxconn(m); } string const &hostmatch() const { return bdef.hostmatch(); } void hostmatch(string const &s) { bdef.hostmatch(s); } regex_t const &hostregex() const { return bdef.hostregex(); } string const &urlmatch() const { return bdef.urlmatch(); } void urlmatch(string const &u) { bdef.urlmatch(u); } regex_t const &urlregex() const { return bdef.urlregex(); } unsigned weight() const { return bdef.weight(); } void weight (unsigned w) { bdef.weight(w); } unsigned adjustedweight() const { return bdef.adjustedweight(); } unsigned connections() const { return nconn; } unsigned connecterrors() const { return nconnerr; } double bytesserved() const { return bytes_served; } unsigned clientsserved() const { return totconn; } double loadavg() const { return loadaverage; } void loadavg(double l) { loadaverage = l; } void addbytes (unsigned n); void startconnection(); void endconnection(); BackendDef const &backenddef() const { return bdef; } BackendCheck const &backendcheck() { return bdef.backendcheck(); } void backendcheck(BackendCheck const &b) { bdef.backendcheck(b); } void balancerindex(int i) { index = i; } int balancerindex() const { return index; } private: BackendDef bdef; bool islive; bool isup; int clsocket; unsigned nconn, totconn, nconnerr; double bytes_served; double loadaverage; DNSEntry dnsentry; int index; }; #endif crossroads-2.65/xr/backend/backend1.cc000066400000000000000000000003121141436564300176320ustar00rootroot00000000000000#include "backend" Backend::Backend () : bdef(), islive(true), isup(true), clsocket(-1), nconn(0), totconn(0), nconnerr(0), bytes_served(0), loadaverage(0.1), dnsentry(), index(-1) { } crossroads-2.65/xr/backend/backend2.cc000066400000000000000000000003321141436564300176350ustar00rootroot00000000000000#include "backend" Backend::Backend (BackendDef const &b) : bdef(b), islive(true), isup(true), clsocket(-1), nconn(0), totconn(0), nconnerr(0), bytes_served(0), loadaverage(0.1), dnsentry(), index(-1) { } crossroads-2.65/xr/backend/backend3.cc000066400000000000000000000000541141436564300176370ustar00rootroot00000000000000#include "backend" Backend::~Backend() { } crossroads-2.65/xr/backend/check.cc000066400000000000000000000056371141436564300172560ustar00rootroot00000000000000#include "backend" void Backend::check() { debugmsg(Mstr("About to check back end ") + description() + ". " + Mstr(backendcheck().description()) + "\n"); ostringstream o; Backend tester; Httpbuffer httpbuffer; switch (backendcheck().checktype()) { case BackendCheck::c_connect: if (backendcheck().server() == "" && backendcheck().port() == 0) { // Most common: TCP connect to the actual back end connect(); socketclose(sock()); } else { // TCP connects to an alternative server or port. // We instantiate a dummy backend and let it connect to the "other" // values. tester = *this; if (backendcheck().server() != "") tester.server(backendcheck().server()); if (backendcheck().port() != 0) tester.port(backendcheck().port()); tester.connect(); socketclose (tester.sock()); live(tester.live()); msg (Mstr("Alternative back end for testing ") + tester.description() + " is " + livestr() + "\n"); } break; case BackendCheck::c_get: // HTTP GET to stated server, port, uri tester.server(backendcheck().server()); tester.port(backendcheck().port()); tester.connect(); if (! tester.live()) { warnmsg((Mstr("HTTP GET checker: host ") + backendcheck().server()) + (Mstr(", port ") + backendcheck().port()) + " not responding\n"); live(false); } else { o << "GET " << backendcheck().uri() << " HTTP/1.0\r\n" "Host: " << backendcheck().server() << "\r\n" "Connection: close\r\n" "\r\n"; httpbuffer.setstring (o.str()); httpbuffer.netwrite(tester.sock(), config.backend_write_timeout()); httpbuffer.reset(); while (!httpbuffer.headersreceived()) httpbuffer.netread(tester.sock(), config.backend_read_timeout()); msg((Mstr("HTTP GET checker got answer: '") + httpbuffer.firstline()) + "'\n"); if (httpbuffer.stringat(9, 3) == "200") live(true); else debugmsg("Back end assumed dead.\n"); } socketclose(tester.sock()); break; case BackendCheck::c_external: // External program to be called, with arguments: // IP:PORT availability current-connections o << backendcheck().program() << ' ' << description() << ' ' << availablestr() << ' ' << connections(); FILE *f; int result; if (! (f = popen(o.str().c_str(), "r")) ) { live(false); warnmsg(Mstr("Failed to start external checker '") + o.str() + "': " + strerror(errno) + "\n"); } else { if (fscanf(f, "%d", &result) < 1) { live(false); warnmsg(Mstr("External checker '") + o.str() + Mstr("' did not reply with a number\n")); } else { msg((Mstr("External checker '") + o.str()) + (Mstr("' replied: ") + result) + '\n'); live(result == 0); } if (pclose(f)) { warnmsg((Mstr("External checker '") + o.str()) + "' terminated with error\n"); live(false); } } break; default: throw Error("Internal fry in Backend::check()"); } } crossroads-2.65/xr/backend/connect.cc000066400000000000000000000043661141436564300176300ustar00rootroot00000000000000#include "backend" bool Backend::connect() { PROFILE("Backend::connect"); // Assume the backend is dead islive = false; debugmsg ("About to connect to back end " + description() + "\n"); // Create client socket if ( (clsocket = socket (PF_INET, SOCK_STREAM, 0)) < 0 ) throw Error(string("Failed to create client socket: ") + strerror(errno)); // Resolve hostname, prepare binding struct sockaddr_in backendaddr; backendaddr.sin_family = AF_INET; backendaddr.sin_port = htons(bdef.port()); backendaddr.sin_addr.s_addr = dnsentry.resolve(bdef.server()); // Client socket goes into nonblocking mode, so we can connect // and enforce a timeout later. int flags; if ( (flags = fcntl (clsocket, F_GETFL, 0)) == -1 ) { socketclose (clsocket); throw Error(string("Failed to get fd flags: ") + strerror(errno)); } if (fcntl (clsocket, F_SETFL, flags | O_NONBLOCK) == -1) { socketclose (clsocket); throw Error(string("Failed to fd in nonblocking mode: ") + strerror(errno)); } // Do the connect int conres = ::connect (clsocket, (struct sockaddr *)&backendaddr, sizeof(backendaddr)); int conerrno = errno; debugmsg((Mstr("Connect result: ") + conres) + (Mstr(", errno: ") + conerrno) + "\n"); // Put socket again in blocking mode. if (fcntl (clsocket, F_SETFL, flags) == -1) { socketclose (clsocket); throw Error(string("Failed to put fd in blocking mode: ") + strerror(errno)); } // Check on the outcome of the connect if (!conres || conerrno == EINPROGRESS) { // Wait for socket to go writable. Fdset fdset (config.backend_write_timeout()); fdset.add (clsocket); fdset.wait_rw(); debugmsg(Mstr("Connecting to ") + description() + "\n"); # ifdef CONNECTCHECK_ONLY_WRITABLE if (fdset.writeable(clsocket)) islive = true; else { markconnecterror(); socketclose(clsocket); } # else if (fdset.writeable(clsocket) && !fdset.readable(clsocket)) islive = true; else { socketclose(clsocket); markconnecterror(); } # endif } debugmsg ((Mstr("Back end ") + description()) + (Mstr(" is ") + livestr()) + (Mstr(" (socket ") + clsocket) + ")\n"); return (islive); } crossroads-2.65/xr/backend/description.cc000066400000000000000000000002131141436564300205050ustar00rootroot00000000000000#include "backend" string Backend::description() const { ostringstream o; o << server() << ":" << port(); return (o.str()); } crossroads-2.65/xr/backend/endconnection.cc000066400000000000000000000001711141436564300210130ustar00rootroot00000000000000#include "backend" void Backend::endconnection() { Mutex::lock (&nconn); nconn--; Mutex::unlock (&nconn); } crossroads-2.65/xr/backend/live.cc000066400000000000000000000004531141436564300171270ustar00rootroot00000000000000#include "backend" void Backend::live (bool state) { PROFILE("Backend::live"); Mutex::lock (&islive); bool oldstate = islive; islive = state; Mutex::unlock (&islive); if (oldstate != state) msg ("Marking back end " + description() + " as " + livestr() + "\n"); } crossroads-2.65/xr/backend/livestr.cc000066400000000000000000000001401141436564300176510ustar00rootroot00000000000000#include "backend" string Backend::livestr() const { return (live() ? "alive" : "dead"); } crossroads-2.65/xr/backend/markconnecterror.cc000066400000000000000000000002101141436564300215350ustar00rootroot00000000000000#include "backend" void Backend::markconnecterror() { Mutex::lock(&nconnerr); nconnerr++; Mutex::unlock(&nconnerr); } crossroads-2.65/xr/backend/startconnection.cc000066400000000000000000000003111141436564300213760ustar00rootroot00000000000000#include "backend" void Backend::startconnection() { Mutex::lock (&nconn); nconn++; Mutex::unlock (&nconn); Mutex::lock (&totconn); totconn++; Mutex::unlock (&totconn); } crossroads-2.65/xr/backend/up.cc000066400000000000000000000004351141436564300166140ustar00rootroot00000000000000#include "backend" void Backend::up (bool state) { PROFILE("Backend::up"); Mutex::lock (&isup); bool oldstate = isup; isup = state; Mutex::unlock (&isup); if (oldstate != state) msg ("Marking back end " + description() + " as " + upstr() + "\n"); } crossroads-2.65/xr/backend/upstr.cc000066400000000000000000000001311141436564300173360ustar00rootroot00000000000000#include "backend" string Backend::upstr() const { return (up() ? "up" : "down"); } crossroads-2.65/xr/backendcheck/000077500000000000000000000000001141436564300166555ustar00rootroot00000000000000crossroads-2.65/xr/backendcheck/backendcheck000066400000000000000000000016011141436564300211630ustar00rootroot00000000000000#ifndef _BACKENDCHECK_ #define _BACKENDCHECK_ #include "sys/sys" #include "error/error" class BackendCheck { public: enum CheckType { c_connect, c_get, c_external, }; BackendCheck(); CheckType checktype() const { return check_type; } void checktype(CheckType t) { check_type = t; } string server() const { return srv; } void server(string s) { srv = s; } int port() const { return prt; } void port(int p) { prt = p; } string uri() const { return geturi; } void uri(string u) { geturi = u; } string program() const { return extprog; } void program(string const &p) { extprog = p; } void parse(string setting); string setting() const; string description() const; private: CheckType check_type; string srv; int prt; string geturi; string extprog; }; #endif crossroads-2.65/xr/backendcheck/backendcheck1.cc000066400000000000000000000002061141436564300216300ustar00rootroot00000000000000#include "backendcheck" BackendCheck::BackendCheck() : check_type(c_connect), srv(""), prt(0), geturi(""), extprog("") { } crossroads-2.65/xr/backendcheck/description.cc000066400000000000000000000014331141436564300215100ustar00rootroot00000000000000#include "backendcheck" string BackendCheck::description() const { ostringstream o; o << "Back end check type: "; switch (check_type) { case c_connect: o << "TCP connect to "; if (srv == "") o << "backend IP, "; else o << "alternative IP '" << srv << "', "; if (prt == 0) o << "backend port"; else o << "alternative port '" << prt << "'"; break; case c_get: o << "HTTP GET to "; if (srv == "") o << "backend IP, "; else o << "alternative IP '" << srv << "', "; if (prt == 0) o << "backend port"; else o << "alternative port '" << prt << "'"; break; case c_external: o << "External program " << extprog; break; default: throw Error("Internal jam in BackendCheck::description"); } return (o.str()); } crossroads-2.65/xr/backendcheck/parse.cc000066400000000000000000000024661141436564300203060ustar00rootroot00000000000000#include "backendcheck" static int parse_port(string const &s) { int ret; if (sscanf(s.c_str(), "%d", &ret) < 1) ret = 0; return ret; } static string parse_uri(string const &s) { size_t slash = s.find_first_of('/'); if (slash == string::npos) return ("/"); return s.substr(slash); } void BackendCheck::parse(string setting) { // Resets to default if (!setting.size()) { check_type = c_connect; srv = ""; prt = 0; geturi = ""; extprog = ""; return; } vector parts = str2parts(setting, ':'); // connect:IP:PORT if (parts.size() == 3 && parts[0] == "connect") { check_type = c_connect; srv = parts[1]; prt = parse_port(parts[2]); geturi = ""; extprog = ""; return; } // get:IP:PORT // get:IP:PORT/URI if (parts.size() == 3 && parts[0] == "get") { check_type = c_get; srv = parts[1]; prt = parse_port(parts[2]); geturi = parse_uri(parts[2]); extprog = ""; return; } // external:PROGRAM if (parts.size() == 2 && parts[0] == "external") { check_type = c_external; srv = ""; prt = 0; geturi = ""; extprog = parts[1]; return; } // No luck today throw Error("Back end check specifiers must be either an empty string, " "or 'connect:IP:PORT' or 'get:IP:PORT' or 'get'IP:PORT/URI' " "or 'external:PROGRAM'"); } crossroads-2.65/xr/backendcheck/setting.cc000066400000000000000000000005741141436564300206470ustar00rootroot00000000000000#include "backendcheck" string BackendCheck::setting() const { ostringstream o; if (check_type == c_external) o << "external:" << extprog; else { if (check_type == c_connect) o << "connect:"; else o << "get:"; if (srv != "") o << srv; o << ':'; if (prt) o << prt; if (check_type == c_get) o << geturi; } return o.str(); } crossroads-2.65/xr/backenddef/000077500000000000000000000000001141436564300163365ustar00rootroot00000000000000crossroads-2.65/xr/backenddef/backenddef000066400000000000000000000032041141436564300203260ustar00rootroot00000000000000#ifndef _BACKENDDEF_ #define _BACKENDDEF_ #include "sys/sys" #include "error/error" #include "profiler/profiler" #include "backendcheck/backendcheck" #include "ThreadsAndMutexes/mutex/mutex" using namespace std; class BackendDef { public: BackendDef(): srv(""), prt(-1), max(0), host_match(""), url_match(""), wt(1), backend_check() { hostmatch(""); urlmatch(""); } BackendDef(string s, string p, string m = "", string w = "1"); void server(string s) { srv = s; } string const &server() const { return (srv); } void port (int p) { prt = p; } int port() const { return (prt); } unsigned maxconn() const { return (max); } void maxconn (unsigned m) { max = m; } unsigned weight() const { return wt; } void weight (unsigned w); unsigned adjustedweight() const { return min_wt + max_wt - wt; } void hostmatch(string const &s); string const &hostmatch() const { return (host_match); } regex_t const &hostregex() const { return (host_regex); } void urlmatch(string const &u); string const &urlmatch() const { return (url_match); } regex_t const &urlregex() const { return (url_regex); } BackendCheck const &backendcheck() { return backend_check; } void backendcheck(BackendCheck const &b) { backend_check = b; } private: string srv; int prt; unsigned max; string host_match; regex_t host_regex; string url_match; regex_t url_regex; unsigned wt; static unsigned min_wt, max_wt; static bool minmax_wt_set; BackendCheck backend_check; }; #endif crossroads-2.65/xr/backenddef/backenddef1.cc000066400000000000000000000015001141436564300207700ustar00rootroot00000000000000#include "backenddef" unsigned BackendDef::min_wt; unsigned BackendDef::max_wt; bool BackendDef::minmax_wt_set = false; BackendDef::BackendDef (string server, string port, string maxclients, string w) : srv(server), prt(-1), max(0), host_match(""), url_match(""), wt(1), backend_check() { if (sscanf (port.c_str(), "%d", &prt) < 1) throw Error("Bad backend port specifier: '" + port + "' is not a number"); if (maxclients.size() && sscanf (maxclients.c_str(), "%u", &max) < 1) throw Error("Bad maximum connections specifier: '" + maxclients + "' is not a number"); unsigned ww; if (sscanf(w.c_str(), "%u", &ww) < 1) throw Error("Bad backend weight specifier: '" + w + "' is not a number"); if (ww < 1) throw Error("Weights less than 1 are not supported"); weight(ww); } crossroads-2.65/xr/backenddef/hostmatch.cc000066400000000000000000000005231141436564300206370ustar00rootroot00000000000000#include "backenddef" void BackendDef::hostmatch (string const &s) { PROFILE("BackendDef::hostmatch"); host_match = (s == "" ? "." : s); if (regcomp (&host_regex, host_match.c_str(), REG_EXTENDED | REG_ICASE | REG_NOSUB)) throw Error("Host match specifier '" + host_match + "' isn't a valid regular expression"); } crossroads-2.65/xr/backenddef/urlmatch.cc000066400000000000000000000005141141436564300204640ustar00rootroot00000000000000#include "backenddef" void BackendDef::urlmatch (string const &s) { PROFILE("BackendDef::urlmatch"); url_match = (s == "" ? "." : s); if (regcomp (&url_regex, url_match.c_str(), REG_EXTENDED | REG_ICASE | REG_NOSUB)) throw Error("Url match specifier '" + url_match + "' isn't a valid regular expression"); } crossroads-2.65/xr/backenddef/weight.cc000066400000000000000000000004621141436564300201360ustar00rootroot00000000000000#include "backenddef" void BackendDef::weight(unsigned w) { wt = w; Mutex::lock(&minmax_wt_set); if (!minmax_wt_set) { min_wt = w; max_wt = w; minmax_wt_set = true; } else { if (min_wt < w) min_wt = w; if (max_wt > w) max_wt = w; } Mutex::unlock(&minmax_wt_set); } crossroads-2.65/xr/backendvector/000077500000000000000000000000001141436564300171025ustar00rootroot00000000000000crossroads-2.65/xr/backendvector/backendvector000066400000000000000000000007301141436564300216370ustar00rootroot00000000000000#ifndef _BACKENDVECTOR_ #define _BACKENDVECTOR_ class BackendVector { public: BackendVector(): vec(), is_defined(false) {}; bool isdefined() const { return is_defined; } void isdefined(bool i) { is_defined = i; } void add (unsigned nr) { vec.push_back(nr); } unsigned size() const { return vec.size(); } unsigned operator[] (unsigned index) const { return vec[index]; } private: vector vec; bool is_defined; }; #endif crossroads-2.65/xr/balancer/000077500000000000000000000000001141436564300160375ustar00rootroot00000000000000crossroads-2.65/xr/balancer/addbackend1.cc000066400000000000000000000001651141436564300204710ustar00rootroot00000000000000#include "balancer" void Balancer::addbackend (BackendDef const &b) { Backend newb (b); addbackend(newb); } crossroads-2.65/xr/balancer/addbackend2.cc000066400000000000000000000012011141436564300204620ustar00rootroot00000000000000#include "balancer" void Balancer::addbackend (Backend const &b, bool is_up, bool is_live, bool do_check) { debugmsg(Mstr("Adding back end ") + b.description() + " to list\n"); Mutex::lock(&backends); backends.push_back (b); backends[backends.size() - 1].up(is_up); backends[backends.size() - 1].live(is_live); backends[backends.size() - 1].balancerindex(backends.size() - 1); Mutex::unlock(&backends); if (do_check) { debugmsg(Mstr("Verifying configured back end\n")); backends[backends.size() - 1].check(); } debugmsg(Mstr("Back end ") + b.description() + " added to list\n"); } crossroads-2.65/xr/balancer/balancer000066400000000000000000000025411141436564300175330ustar00rootroot00000000000000#ifndef _BALANCER_ #define _BALANCER_ #include "sys/sys" #include "memory/memory" #include "backend/backend" #include "backenddef/backenddef" #include "config/config" #include "fdset/fdset" #include "error/error" // Check ups of back ends and the web interface #include "Checkers/wakeupthread/wakeupthread" #include "Checkers/checkupthread/checkupthread" #include "webinterface/webinterface" using namespace std; class Balancer { public: Balancer (); void init(); void addbackend(BackendDef const &b); void addbackend(Backend const &b, bool is_up = true, bool is_live = true, bool do_check = true); void deletebackend(unsigned i); void serve(); unsigned nbackends() { return backends.size(); } Backend &backend (unsigned i) { return backends[i]; } bool terminate() const { return term; } void terminate (bool t) { term = t; } bool report() const { return rep; } void report (bool r) { rep = r; } void restart(bool t) { rest = t; } bool restart() const { return rest; } long requestnr() const { return request_nr; } unsigned connections(); private: void init_tcp (); void init_fd (); int server_fd; long request_nr; vector backends; bool term; bool rep; bool rest; Webinterface *webinterface; }; extern Balancer balancer; #endif crossroads-2.65/xr/balancer/balancer1.cc000066400000000000000000000002311141436564300201720ustar00rootroot00000000000000#include "balancer" Balancer::Balancer () : server_fd(-1), request_nr(0), backends(), term(false), rep(false), rest(false), webinterface(0) { } crossroads-2.65/xr/balancer/connections.cc000066400000000000000000000002701141436564300206670ustar00rootroot00000000000000#include "balancer" unsigned Balancer::connections() { unsigned ret = 0; for (unsigned i = 0; i < nbackends(); i++) ret += backend(i).connections(); return (ret); } crossroads-2.65/xr/balancer/deletebackend.cc000066400000000000000000000007201141436564300211170ustar00rootroot00000000000000#include "balancer" void Balancer::deletebackend(unsigned i) { if (backend(i).up()) throw Error("Only 'down' back ends can be deleted."); if (backend(i).connections()) { ostringstream o; o << "Back end cannot be deleted, there are still " << backend(i).connections() << " connections"; throw Error(o.str()); } Mutex::lock(&backends); backends.erase(backends.begin() + i, backends.begin() + i + 1); Mutex::unlock(&backends); } crossroads-2.65/xr/balancer/init.cc000066400000000000000000000017221141436564300173130ustar00rootroot00000000000000#include "balancer" void Balancer::init() { // Set the listening socket. if (config.stype() != Servertype::t_udp) { if (config.sport()) server_fd = serversocket(config.sipaddr(), config.sport(), "balancer", Servertype::t_tcp); else server_fd = 0; } else { server_fd = serversocket(config.sipaddr(), config.sport(), "balancer", Servertype::t_udp); } // Start the web interface if requested. if (config.usewebinterface() && !config.foregroundmode()) { webinterface = new Webinterface(); if (! webinterface) throw Error("Memory fault in Balancer::init"); webinterface->start(); } // Add workable back ends, display initial states. for (int i = 0; i < config.backends(); i++) addbackend (config.backend(i)); if (config.verbose()) { for (unsigned i = 0; i < nbackends(); i++) _msg ("Initial backend state: " + backend(i).description() + " is " + backend(i).availablestr() + "\n"); } } crossroads-2.65/xr/balancer/serve.cc000066400000000000000000000144301141436564300174740ustar00rootroot00000000000000#include "balancer" #include "Dispatchers/tcpdispatcher/tcpdispatcher" #include "Dispatchers/httpdispatcher/httpdispatcher" #include "Dispatchers/udpdispatcher/udpdispatcher" // #define SHOWDEBUG void Balancer::serve() { int clsock = -1; // Start up wakeup/checkup handlers. These are always started - even // when config.wakeupsec() and config.checkupsec() are not defined // and have value 0. Via the web interface, the values can be later // changed, but we want to have the checkers running always. if (!config.foregroundmode() && config.sport()) { msg ("Starting wakeup thread.\n"); Wakeupthread *wt = new Wakeupthread(); if (!wt) throw Error("Memory fault in Balancer::serve"); wt->start(); msg ("Starting checkup thread.\n"); Checkupthread *ct = new Checkupthread(); if (!ct) throw Error("Memory fault in Balancer::serve"); ct->start(); } // Write the PID file. if (config.pidfile() != "") { FILE *f; if (! (f = fopen (config.pidfile().c_str(), "w")) ) throw Error(string("Cannot write pid file ") + config.pidfile() + ": " + strerror(errno)); fprintf (f, "%u\n", getpid()); fclose (f); } // Wait for activity, serve it. msg ((Mstr("Awaiting activity on fd ") + server_fd) + "\n"); MEM(Memory::mem_mark("Balancer start")); MEM(Memory::mem_follow(true)); while (true) { MEM(Memory::mem_display()); Fdset fdset(0); fdset.add (server_fd); fdset.wait_r(); if (! fdset.readable(server_fd)) { // We caught a signal. Either a request to report status, // or to terminate. msg ("Interrupt seen\n"); if (terminate()) { msg ("Termination requested, XR will stop.\n"); break; } else if (report()) { msg ("Report requested\n"); reportmsg ("*** XR STATUS REPORT STARTS ***\n"); for (unsigned i = 0; i < nbackends(); i++) { reportmsg("Back end " + backend(i).description() + "\n"); reportmsg((Mstr(" Status: ") + backend(i).availablestr()) + (Mstr(", ") + backend(i).livestr()) + "\n"); reportmsg((Mstr(" Connections: ") + backend(i).connections()) + (Mstr(" (max ") + backend(i).maxconn()) + "\n"); reportmsg((Mstr(" Served:") + backend(i).bytesserved()) + (Mstr(" bytes, ") + backend(i).clientsserved()) + " clients\n"); } report (false); reportmsg ("*** XR STATUS REPORT ENDS ***\n"); continue; } else if (restart()) { msg ("Restart requested\n"); config.restart(); } else { msg ("Non-meaningful interrupt or select timeout, resuming\n"); continue; } } // Got activity! Check total # of connections. msg ((Mstr("Got activity on fd ") + server_fd) + "\n"); request_nr++; if (config.maxconn() && connections() >= config.maxconn()) { msg ((Mstr("Not serving connection: already ") + connections()) + (Mstr(" connection(s) (max ") + config.maxconn()) + ")\n"); continue; } if (server_fd) { // In daemon mode (server_fd > 0): serve and loop again struct sockaddr_in clname; int size = sizeof(clname); // Accept the client if this is a TCP connection. if (config.stype() != Servertype::t_udp) { if ( (clsock = accept (server_fd, (struct sockaddr *) &clname, (socklen_t*) &size)) < 0 ) { warnmsg(Mstr("Failed to accept network connection: ") + Mstr(strerror(errno)) + "\n"); continue; } string clientip = inet_ntoa(clname.sin_addr); msg ((Mstr("Accepted connection from ") + clientip) + (Mstr(" as client fd ") + clsock) + "\n"); } // Show how we look if (config.verbose()) { ostringstream o; msg ((Mstr("Balancer is serving ") + connections()) + " clients\n"); msg ("Current back end states:\n"); for (unsigned i = 0; i < nbackends(); i++) msg((Mstr(" Back end ") + backend(i).description()) + (Mstr(": ") + backend(i).connections()) + (Mstr(" connections, max ") + backend(i).maxconn()) + (Mstr(", status ") + backend(i).availablestr()) + (Mstr(", anticipated ") + IPStore::anticipated(i)) + "\n"); } Dispatcher *d; switch (config.stype()) { case Servertype::t_tcp: d = new TcpDispatcher(clsock, clname.sin_addr); break; case Servertype::t_http: d = new HttpDispatcher(clsock, clname.sin_addr); break; case Servertype::t_udp: d = new UdpDispatcher(server_fd); break; default: throw Error("Internal error, can't choose dispatcher"); break; } if (!d) throw Error("Memory fault in Balancer::serve"); // Allocation boundary printout if (config.debug()) { void *mem = malloc(16); free (mem); _debugmsg (Mstr("Allocation boundary at dispatcher start: ") + mem + "\n"); } #ifdef SHOWDEBUG void *mem = malloc(16); free (mem); cout << "XR allocation at dispatcher start: " << mem << '\n'; #endif d->start(); } else { // If fd-serving, serve and close. Don't thread it up. TcpDispatcher *d; struct in_addr dummy; inet_aton ("0.0.0.0", &dummy); switch (config.stype()) { case Servertype::t_tcp: d = new TcpDispatcher (server_fd, dummy); break; case Servertype::t_http: d = new HttpDispatcher (server_fd, dummy); break; case Servertype::t_udp: throw Error("UDP dispatching not allowed in inetd-mode"); break; default: throw Error("Internal error, can't choose dispatcher"); break; } if (!d) throw Error("Memory fault in Balancer::serve"); d->execute(); break; } // If we exceed the max # of requests, stop.. if (config.quitafter()) { msg ((Mstr("Request ") + requestnr()) + (Mstr(" underway of max ") + config.quitafter()) + "\n"); if (requestnr() >= (long)config.quitafter()) { msg ("Max requests served, will stop.\n"); break; } } } // We're stopping now. If a PID stamp was created, remove it. if (config.pidfile() != "") unlink (config.pidfile().c_str()); // Wait for running threads to die off. socketclose (server_fd); delete webinterface; unsigned prev_conn = 0x19081962; while (1) { unsigned curr_conn = balancer.connections(); if (!curr_conn) break; if (curr_conn != prev_conn) { msg ((Mstr("There are still ") + curr_conn) + " connections\n"); prev_conn = curr_conn; } sleep (1); } msg ("XR is idle, stopping.\n"); } crossroads-2.65/xr/buffer/000077500000000000000000000000001141436564300155415ustar00rootroot00000000000000crossroads-2.65/xr/buffer/buffer000066400000000000000000000017521141436564300167420ustar00rootroot00000000000000#ifndef _BUFFER_ #define _BUFFER_ #include "../error/error" class Buffer { public: Buffer(); Buffer(Buffer const &other); ~Buffer(); Buffer &operator= (Buffer const &other); Buffer &operator= (char const *b); void set (char const *b, unsigned len); void add (char const *b, unsigned len); char const *data() const; int strfind (char const *s) const; char &operator[] (unsigned index); string stringat (unsigned index, unsigned len) const; void removeat (unsigned index, unsigned len = 1); void insertat (unsigned index, char const *s, unsigned len); void insertat (unsigned index, string s); // This ones are called often so let's inline them. unsigned size() const { return (buf_len); } char charat (unsigned index) const { if (index >= buf_len) return (0); return (buf_data[index]); } private: void copy (Buffer const &other); void destroy(); char *buf_data; unsigned buf_len; }; #endif crossroads-2.65/xr/config/000077500000000000000000000000001141436564300155355ustar00rootroot00000000000000crossroads-2.65/xr/config/Makefile.lib000066400000000000000000000000511141436564300177360ustar00rootroot00000000000000DIR = config include ../etc/Makefile.lib crossroads-2.65/xr/config/addallow.cc000066400000000000000000000003071141436564300176330ustar00rootroot00000000000000#include "config" void Config::addallow (string a) { struct in_addr in; if (!inet_aton (a.c_str(), &in)) throw Error("Bad allow-from specfier '" + a + "'"); allowlist.push_back (in); } crossroads-2.65/xr/config/adddeny.cc000066400000000000000000000003041141436564300174510ustar00rootroot00000000000000#include "config" void Config::adddeny (string d) { struct in_addr in; if (!inet_aton (d.c_str(), &in)) throw Error("Bad deny-from specfier '" + d + "'"); denylist.push_back (in); } crossroads-2.65/xr/config/addserverheader.cc000066400000000000000000000002551141436564300211760ustar00rootroot00000000000000#include "config" void Config::addserverheader (string const &s) { Mutex::lock (&serverheaders); serverheaders.push_back (s); Mutex::unlock (&serverheaders); } crossroads-2.65/xr/config/addxforwardedfor.cc000066400000000000000000000002541141436564300213720ustar00rootroot00000000000000#include "config" void Config::addxforwardedfor(bool b) { Mutex::lock (&add_x_forwarded_for); add_x_forwarded_for = b; Mutex::unlock (&add_x_forwarded_for); } crossroads-2.65/xr/config/addxrversion.cc000066400000000000000000000002311141436564300205500ustar00rootroot00000000000000#include "config" void Config::addxrversion(bool b) { Mutex::lock (&add_xr_version); add_xr_version = b; Mutex::unlock (&add_xr_version); } crossroads-2.65/xr/config/buffersize.cc000066400000000000000000000002061141436564300202060ustar00rootroot00000000000000#include "config" void Config::buffersize(unsigned b) { Mutex::lock (&bufsize); bufsize = b; Mutex::unlock (&bufsize); } crossroads-2.65/xr/config/changeallow.cc000066400000000000000000000004611141436564300203310ustar00rootroot00000000000000#include "config" void Config::changeallow (string &a, unsigned index) { if (index >= allowlist.size()) throw Error("No such allow-from specifier"); struct in_addr in; if (!inet_aton (a.c_str(), &in)) throw Error("Bad allow-from specfier '" + a + "'"); allowlist[index] = (in); } crossroads-2.65/xr/config/changedeny.cc000066400000000000000000000004541141436564300201540ustar00rootroot00000000000000#include "config" void Config::changedeny (string &a, unsigned index) { if (index >= denylist.size()) throw Error("No such deny-from specifier"); struct in_addr in; if (!inet_aton (a.c_str(), &in)) throw Error("Bad deny-from specfier '" + a + "'"); denylist[index] = (in); } crossroads-2.65/xr/config/changeserverheader.cc000066400000000000000000000002651141436564300216740ustar00rootroot00000000000000#include "config" void Config::changeserverheader (unsigned i, string const &s) { Mutex::lock (&serverheaders); serverheaders[i] = s; Mutex::unlock (&serverheaders); } crossroads-2.65/xr/config/config000066400000000000000000000164741141436564300167410ustar00rootroot00000000000000#ifndef _CONFIG_ #define _CONFIG_ #include "sys/sys" #include "backenddef/backenddef" #include "servertype/servertype" #include "dispatchmode/dispatchmode" #include "error/error" #include "ThreadsAndMutexes/mutex/mutex" #include "backendcheck/backendcheck" using namespace std; class Config { public: Config (); // Init by cmdline void parsecmdline (int ac, char **av); // Accessors bool verbose() const { return (verbose_flag); } void verbose (bool v) { verbose_flag = v; } bool debug() const { return (debug_flag); } void debug (bool d) { debug_flag = d; } unsigned quitafter() const { return (quit_after); } Servertype::Type stype() const { return (styp.type()); } void stype(string const &s) { styp.type(s); } string stypestr() const { return (styp.typestr()); } string const &sipaddr() const { return (sip); } int sport() const { return (lport); } int backends() const { return (blist.size()); } /* PID file */ void pidfile(string const &s); string const &pidfile() { return pid_file; } /* Client timeouts */ unsigned client_read_timeout() const { return (c_timeout); } void client_read_timeout (unsigned c) { c_timeout = c; } unsigned client_write_timeout() const { return c_write_timeout; } void client_write_timeout(unsigned c) { c_write_timeout = c; } /* Back end timeouts */ unsigned backend_read_timeout() const { return (b_timeout); } void backend_read_timeout (unsigned b) { b_timeout = b; } unsigned backend_write_timeout() const { return b_write_timeout; } void backend_write_timeout(unsigned b) { b_write_timeout = b; } unsigned wakeupsec() const { return (wakeup); } void wakeupsec (unsigned w) { wakeup = w; } unsigned checkupsec() const { return (checkup); } void checkupsec (unsigned w) { checkup = w; } unsigned buffersize() const { return (bufsize); } void buffersize (unsigned b); bool foregroundmode() const { return (foreground_mode); } bool addxrversion() const { return (add_xr_version); } void addxrversion (bool b); bool addxforwardedfor() const { return (add_x_forwarded_for); } void addxforwardedfor (bool b); bool stickyhttp() const { return (sticky_http); } void stickyhttp(bool b); bool replacehostheader() const { return replace_host_header; } void replacehostheader(bool s) { replace_host_header = s; } unsigned maxconn() const { return (max_conn); } void maxconn (unsigned m); string const &externalalgorithm() const { return (external_algorithm); } bool prefixtimestamp() const { return (prefix_timestamp); } void prefixtimestamp (bool p); bool fastclose() const { return (fast_close); } void fastclose (bool f); bool usewebinterface() const { return use_webinterface; } string const &webinterfaceip() const { return webinterface_ip; } int webinterfaceport() const { return webinterface_port; } unsigned nserverheaders() const { return (serverheaders.size()); } string const &serverheader (unsigned n) { return (serverheaders[n]); } void addserverheader (string const &s); void removeserverheader (unsigned i); void changeserverheader (unsigned i, string const &s); string const &dumpdir() const { return (dump_dir); } void dumpdir (string s) { dump_dir = s; } unsigned softmaxconnrate() const { return soft_maxconnrate; } void softmaxconnrate(unsigned n) { soft_maxconnrate = n; } unsigned hardmaxconnrate() const { return hard_maxconnrate; } void hardmaxconnrate(unsigned n) { hard_maxconnrate = n; } unsigned defertime() const { return defer_time; } void defertime(unsigned n) { defer_time = n; } unsigned connrate_time() const { return connrate_timeinterval; } void connrate_time(unsigned n) { connrate_timeinterval = n; } unsigned dnscachetimeout() const { return dns_cache_timeout; } void dnscachetimeout(unsigned t) { dns_cache_timeout = t; } unsigned nallow() const { return (allowlist.size()); } unsigned ndeny() const { return (denylist.size()); } void addallow (string a); void adddeny (string d); void changeallow(string &a, unsigned index); void changedeny(string &a, unsigned index); void deleteallow(unsigned index); void deletedeny(unsigned index); int ipstoretimeout() const { return (ipstore_timeout); } void ipstoretimeout(int t); struct in_addr allow(unsigned n) const { return (allowlist[n]); } struct in_addr deny(unsigned n) const { return (denylist[n]); } BackendDef const &backend (int i) const { return (blist[i]); } Dispatchmode::Mode dispatchmode() const { return (dmode.mode()); } string dispatchmodestr() const { return (dmode.modestr()); } bool removereservations() const { return remove_reservations; } void removereservations(bool b) { remove_reservations = b; } string const &softmaxconnexcess() const { return soft_maxconn_excess_prog; } void softmaxconnexcess(string const &s) { soft_maxconn_excess_prog = s; } string const &hardmaxconnexcess() const { return hard_maxconn_excess_prog; } void hardmaxconnexcess(string const &s) { hard_maxconn_excess_prog = s; } void onstart(string s) { on_start = s; } string const &onstart() const { return on_start; } void onend(string s) { on_end = s; } string const &onend() const { return on_end; } void onfail(string s) { on_fail = s; } string const &onfail() const { return on_fail; } /* Restart of program */ void restart(); private: void setbackend (string const &s, string const &hostmatch, string const &urlmatch, BackendCheck const &bc); void setwebinterface (string s); void setserver (string s); void setdispatchmode (string s); int setinteger (string s) const; static string pid_file; static bool verbose_flag; static int lport; static Servertype styp; static string sip; static vector blist; static Dispatchmode dmode; static unsigned c_timeout, c_write_timeout; static unsigned b_timeout, b_write_timeout; static unsigned wakeup; static unsigned checkup; static unsigned bufsize; static bool foreground_mode; static bool add_xr_version; static bool debug_flag; static bool add_x_forwarded_for; static bool sticky_http; static bool replace_host_header; static unsigned max_conn; static string external_algorithm; static bool prefix_timestamp; static vector serverheaders; static vector allowlist; static vector denylist; static bool fast_close; static int ipstore_timeout; static bool use_webinterface; static string webinterface_ip; static int webinterface_port; static string dump_dir; static unsigned soft_maxconnrate; static unsigned hard_maxconnrate; static unsigned defer_time; static unsigned connrate_timeinterval; static unsigned quit_after; static string soft_maxconn_excess_prog; static string hard_maxconn_excess_prog; static unsigned dns_cache_timeout; static string on_start, on_end, on_fail; static bool remove_reservations; static char **org_argv; }; extern Config config; #endif crossroads-2.65/xr/config/config1.cc000066400000000000000000000031151141436564300173720ustar00rootroot00000000000000#include "config" bool Config::verbose_flag = false; int Config::lport = 10000; Servertype Config::styp; string Config::sip = "0"; vector Config::blist; Dispatchmode Config::dmode; unsigned Config::c_timeout = 30; unsigned Config::c_write_timeout = 5; unsigned Config::b_timeout = 30; unsigned Config::b_write_timeout = 3; unsigned Config::wakeup = 5; unsigned Config::checkup = 0; unsigned Config::bufsize = 2048; bool Config::foreground_mode = false; bool Config::add_xr_version = false; bool Config::debug_flag = false; bool Config::add_x_forwarded_for = false; bool Config::sticky_http = false; bool Config::replace_host_header = false; unsigned Config::max_conn = 0; string Config::external_algorithm = ""; string Config::pid_file = ""; bool Config::prefix_timestamp = false; vector Config::serverheaders; vector Config::allowlist; vector Config::denylist; bool Config::fast_close = false; int Config::ipstore_timeout; bool Config::use_webinterface = false; string Config::webinterface_ip; int Config::webinterface_port; string Config::dump_dir; unsigned Config::soft_maxconnrate = 0; unsigned Config::hard_maxconnrate = 0; unsigned Config::defer_time = 500000; unsigned Config::connrate_timeinterval = 1; unsigned Config::quit_after = 0; string Config::soft_maxconn_excess_prog = ""; string Config::hard_maxconn_excess_prog = ""; unsigned Config::dns_cache_timeout = 3600; string Config::on_start = ""; string Config::on_end = ""; string Config::on_fail = ""; bool Config::remove_reservations = false; char **Config::org_argv = 0; Config::Config () { } crossroads-2.65/xr/config/deleteallow.cc000066400000000000000000000003671141436564300203530ustar00rootroot00000000000000#include "config" void Config::deleteallow(unsigned index) { if (index >= allowlist.size()) throw Error("Index out of range, cannot delete allow-from"); allowlist.erase(allowlist.begin() + index, allowlist.begin() + index + 1); } crossroads-2.65/xr/config/deletedeny.cc000066400000000000000000000003601141436564300201650ustar00rootroot00000000000000#include "config" void Config::deletedeny(unsigned index) { if (index >= denylist.size()) throw Error("Index out of range, cannot delete deny-from"); denylist.erase(denylist.begin() + index, denylist.begin() + index + 1); } crossroads-2.65/xr/config/fastclose.cc000066400000000000000000000002121141436564300200220ustar00rootroot00000000000000#include "config" void Config::fastclose(bool b) { Mutex::lock (&fast_close); fast_close = b; Mutex::unlock (&fast_close); } crossroads-2.65/xr/config/ipstoretimeout.cc000066400000000000000000000002361141436564300211410ustar00rootroot00000000000000#include "config" void Config::ipstoretimeout (int t) { Mutex::lock (&ipstore_timeout); ipstore_timeout = t; Mutex::unlock (&ipstore_timeout); } crossroads-2.65/xr/config/maxconn.cc000066400000000000000000000002071141436564300175060ustar00rootroot00000000000000#include "config" void Config::maxconn (unsigned m) { Mutex::lock (&max_conn); max_conn = m; Mutex::unlock (&max_conn); } crossroads-2.65/xr/config/parsecmdline.cc000066400000000000000000000207261141436564300205210ustar00rootroot00000000000000#include "config" #include "../build/usage.h" using namespace std; void Config::parsecmdline (int ac, char **av) { // Remember original argv. org_argv = av; // Prepare invoking command line. string cmdline; for (int i = 0; i < ac; i++) { if (i) cmdline += ' '; cmdline += av[i]; } // Not a single argument? Usage. if (ac == 1) throw Error("Bad command line '" + cmdline + "'\n" + USAGE); # define OPTSTRING "?a:A:B:b:c:CDd:E:e:fF:Gg:hH:Ij:l:" \ "m:M:nPQ:r:R:Ss:t:T:u:U:vVW:w:xXy:z:Z:" # ifdef HAVE_GETOPT_LONG static struct option longopts[] = { { "allow-from", required_argument, 0, 'a' }, { "deny-from", required_argument, 0, 'A' }, { "backend", required_argument, 0, 'b' }, { "buffer-size", required_argument, 0, 'B' }, { "checkup-interval", required_argument, 0, 'c' }, { "close-sockets-fast", no_argument, 0, 'C' }, { "debug", no_argument, 0, 'D' }, { "dispatch-mode", required_argument, 0, 'd' }, { "hard-maxconn-excess", required_argument, 0, 'E' }, { "soft-maxconn-excess", required_argument, 0, 'e' }, { "dns-cache-timeout", required_argument, 0, 'F' }, { "foreground", no_argument, 0, 'f' }, { "remove-reservations", no_argument, 0, 'G' }, { "backend-check", required_argument, 0, 'g' }, { "help", no_argument, 0, 'h' }, { "add-server-header", required_argument, 0, 'H' }, { "replace-host-header", no_argument, 0, 'I' }, { "url-match", required_argument, 0, 'j' }, { "log-traffic-dir", required_argument, 0, 'l' }, { "max-connections", required_argument, 0, 'm' }, { "host-match", required_argument, 0, 'M' }, { "tryout", no_argument, 0, 'n' }, { "pidfile", required_argument, 0, 'p' }, { "prefix-timestamp", no_argument, 0, 'P' }, { "soft-maxconnrate", required_argument, 0, 'r' }, { "quit-after", required_argument, 0, 'Q' }, { "hard-maxconnrate", required_argument, 0, 'R' }, { "server", required_argument, 0, 's' }, { "sticky-http", no_argument, 0, 'S' }, { "backend-timeout", required_argument, 0, 't' }, { "client-timeout", required_argument, 0, 'T' }, { "time-interval", required_argument, 0, 'u' }, { "defer-time", required_argument, 0, 'U' }, { "verbose", no_argument, 0, 'v' }, { "version", no_argument, 0, 'V' }, { "wakeup-interval", required_argument, 0, 'w' }, { "web-interface", required_argument, 0, 'W' }, { "add-xr-version", no_argument, 0, 'X' }, { "add-x-forwarded-for", no_argument, 0, 'x' }, { "onfail", required_argument, 0, 'y' }, { "onstart", required_argument, 0, 'z' }, { "onend", required_argument, 0, 'Z' }, { 0, 0, 0, 0 } }; # endif int opt; bool backend_set = false; bool tryout = false, wakeup_used = false; string current_hostmatch = ""; string current_urlmatch = ""; BackendCheck current_backendcheck; vector parts; # ifdef HAVE_GETOPT_LONG while ( (opt = getopt_long (ac, av, OPTSTRING, longopts, 0)) > 0) #else while ( (opt = getopt (ac, av, OPTSTRING)) > 0 ) #endif { switch (opt) { case 'a': addallow (optarg); break; case 'A': adddeny (optarg); break; case 'b': setbackend (optarg, current_hostmatch, current_urlmatch, current_backendcheck); backend_set = true; break; case 'B': bufsize = (unsigned)setinteger (optarg); break; case 'c': checkup = setinteger (optarg); break; case 'C': fast_close = true; break; case 'D': verbose_flag = true; debug_flag = true; break; case 'd': setdispatchmode (optarg); break; case 'E': hard_maxconn_excess_prog = optarg; break; case 'e': soft_maxconn_excess_prog = optarg; break; case 'F': dns_cache_timeout = (unsigned)setinteger(optarg); break; case 'f': foreground_mode = true; break; case 'G': removereservations(true); break; case 'g': current_backendcheck.parse(optarg); break; case 'h': case '?': throw Error(USAGE); break; case 'H': addserverheader (optarg); break; case 'I': replacehostheader(true); break; case 'j': current_urlmatch = optarg; break; case 'l': dumpdir (optarg); break; case 'M': current_hostmatch = optarg; break; case 'm': max_conn = (unsigned)setinteger (optarg); break; case 'n': tryout = true; break; case 'P': prefix_timestamp = true; break; case 'Q': quit_after = (unsigned) setinteger(optarg); break; case 'r': soft_maxconnrate = (unsigned) setinteger (optarg); break; case 'R': hard_maxconnrate = (unsigned) setinteger (optarg); break; case 's': setserver (optarg); break; case 'S': sticky_http = true; break; case 't': parts = str2parts(optarg, ':'); if (parts.size() == 1) { backend_read_timeout(atoi(parts[0].c_str())); backend_write_timeout(atoi(parts[0].c_str())); } else if (parts.size() == 2) { backend_read_timeout(atoi(parts[0].c_str())); backend_write_timeout(atoi(parts[1].c_str())); } else throw Error("Bad backend timeout specifier, " "expected SEC or RSEC:WSEC"); break; case 'T': parts = str2parts(optarg, ':'); if (parts.size() == 1) { client_read_timeout(atoi(parts[0].c_str())); client_write_timeout(atoi(parts[0].c_str())); } else if (parts.size() == 2) { client_read_timeout(atoi(parts[0].c_str())); client_write_timeout(atoi(parts[1].c_str())); } else throw Error("Bad backend timeout specifier, " "expected SEC or RSEC:WSEC"); break; case 'U': defer_time = (unsigned) setinteger(optarg); break; case 'u': connrate_timeinterval = (unsigned) setinteger (optarg); break; case 'v': verbose_flag = true; break; case 'V': cout << "XR version : " << VER << "\n" << "Written by : " << AUTHOR << "\n" << "Maintained by : " << MAINTAINER << "\n" << "Primary site : " << DISTSITE << "\n" << "Compiled with : " << CONF_CC << "\n" << "Optimization : " << CONF_OPTFLAGS << "\n" << "System : " << SYS << "\n" << "Libraries : " << CONF_LIB << "\n" << "Type sizes : ssize_t=" << sizeof(ssize_t) << ", int=" << sizeof(int) << ", long=" << sizeof(long) << ", double=" << sizeof(double) << ", ptr=" << sizeof(char*) << "\n" ; # ifdef HAVE_GETOPT_H cout << "getopt.h : present\n"; # else cout << "getopt.h : absent\n"; # endif # ifdef HAVE_INADDR_NONE cout << "INADDR_NONE : present\n"; # else cout << "INADDR_NONE : absent, defined to " << INADDR_NONE << "\n"; # endif # ifdef HAVE_GETOPT_LONG cout << "getopt_long() : present\n"; # else cout << "getopt_long() : absent (only short flags will work)\n"; # endif # ifdef HAVE_INET_ATON cout << "inet_aton() : present\n"; # else cout << "inet_aton() : absent\n"; # endif # ifdef HAVE_STRNSTR cout << "strnstr() : present\n"; # else cout << "strnstr() : absent\n"; # endif exit (0); case 'W': setwebinterface(optarg); break; case 'w': wakeup = setinteger (optarg); wakeup_used = true; break; case 'X': add_xr_version = true; break; case 'x': add_x_forwarded_for = true; break; case 'y': onfail(optarg); break; case 'z': onstart(optarg); break; case 'Z': onend(optarg); break; default: throw Error("Unknown flag, try 'xr -h' for usage"); break; } } // Sanity checks. if (ac != optind) throw Error("Bad command line '" + cmdline + "'\n" + USAGE); if (!backend_set) throw Error("No backend defined, use '-b...' at least once, " "or try 'xr -h' for usage"); if (checkup && wakeup) { if (!wakeup_used) wakeup = 0; else throw Error("Use either --checkup-interval or --wakeup-interval, " "but not both"); } // In tryout mode, stop now. if (tryout) exit (0); msg ("+--------------------------------------------+\n"); msg ("| Welcome to xr V" VER " |\n"); msg ("| Copyright (c) Karel Kubat |\n"); msg ("| Distributed under GPLV3. |\n"); msg ("+--------------------------------------------+\n"); msg ("Invoking command line: '" + cmdline + "'\n"); } crossroads-2.65/xr/config/pidfile.cc000066400000000000000000000002141141436564300174550ustar00rootroot00000000000000#include "config" void Config::pidfile (string const &p) { Mutex::lock (&pid_file); pid_file = p; Mutex::unlock (&pid_file); } crossroads-2.65/xr/config/prefixtimestamp.cc000066400000000000000000000002421141436564300212630ustar00rootroot00000000000000#include "config" void Config::prefixtimestamp(bool b) { Mutex::lock (&prefix_timestamp); prefix_timestamp = b; Mutex::unlock (&prefix_timestamp); } crossroads-2.65/xr/config/removeserverheader.cc000066400000000000000000000003421141436564300217400ustar00rootroot00000000000000#include "config" void Config::removeserverheader (unsigned i) { Mutex::lock (&serverheaders); serverheaders.erase (serverheaders.begin() + i, serverheaders.begin() + i + 1); Mutex::unlock (&serverheaders); } crossroads-2.65/xr/config/restart.cc000066400000000000000000000004261141436564300175320ustar00rootroot00000000000000#include "config" void Config::restart() { for (int i = 0; org_argv[i]; i++) cout << "Arg " << i << ": " << org_argv[i] << '\n'; execvp("xr", org_argv); ostringstream o; o << "Failed to restart: errno=" << errno << ", " << strerror(errno); throw Error(o.str()); } crossroads-2.65/xr/config/setbackend.cc000066400000000000000000000015621141436564300201530ustar00rootroot00000000000000#include "config" void Config::setbackend (string const &str, string const &host, string const &url, BackendCheck const &backend_check) { vector parts = str2parts (str, ':'); if (parts.size() < 2 || parts.size() > 4) throw Error("Bad back end specifier in '-b" + str + "', expected: SERVER:PORT or SERVER:PORT:MAXCONNECTIONS" " or SERVER:PORT:MAXCONNECTIONS:WEIGHT"); BackendDef *bdp = 0; if (parts.size() == 2) bdp = new BackendDef(parts[0], parts[1]); else if (parts.size() == 3) bdp = new BackendDef(parts[0], parts[1], parts[2]); else if (parts.size() == 4) bdp = new BackendDef(parts[0], parts[1], parts[2], parts[3]); if (!bdp) throw Error("Memory fault in Config::setbackend"); bdp->hostmatch(host); bdp->urlmatch(url); bdp->backendcheck(backend_check); blist.push_back (*bdp); delete bdp; } crossroads-2.65/xr/config/setdispatcmode.cc000066400000000000000000000032101141436564300210500ustar00rootroot00000000000000#include "config" void Config::setdispatchmode (string s) { if (s.substr(0, 2) == "e:") { dmode.mode (Dispatchmode::m_external); external_algorithm = s.substr (2); } else if (s.substr (0, 9) == "external:") { dmode.mode (Dispatchmode::m_external); external_algorithm = s.substr(9); } else if (s == "f" || s == "first-available") dmode.mode (Dispatchmode::m_firstactive); else if (s == "h" || s == "strict-hashed-ip") dmode.mode (Dispatchmode::m_strict_hashed_ip); else if (s == "H" || s == "lax-hashed-ip") dmode.mode (Dispatchmode::m_lax_hashed_ip); else if (s == "l" || s == "least-connections") dmode.mode (Dispatchmode::m_leastconn); else if (s == "r" || s == "round-robin") dmode.mode (Dispatchmode::m_roundrobin); else if (s == "L" || s == "weighted-load" ) { timeval t1; gettimeofday(&t1, NULL); mt_srand(t1.tv_sec * t1.tv_usec); dmode.mode (Dispatchmode::m_weighted_load); } else if (s.substr(0, 2) == "s:") { dmode.mode (Dispatchmode::m_strict_stored_ip); ipstoretimeout(setinteger(s.substr(2))); } else if (s.substr(0, 17) == "strict-stored-ip:") { dmode.mode (Dispatchmode::m_strict_stored_ip); ipstoretimeout(setinteger(s.substr(17))); } else if (s.substr(0, 2) == "S:") { dmode.mode (Dispatchmode::m_lax_stored_ip); ipstoretimeout(setinteger(s.substr(2))); } else if (s.substr(0, 14) == "lax-stored-ip:") { dmode.mode (Dispatchmode::m_lax_stored_ip); ipstoretimeout(setinteger(s.substr(14))); } else throw Error("Bad dispatch mode -d" + s); if (dmode.mode() == Dispatchmode::m_external && external_algorithm.size() < 1) throw Error("External algorithm handler missing"); } crossroads-2.65/xr/config/setinteger.cc000066400000000000000000000003151141436564300202140ustar00rootroot00000000000000#include "config" int Config::setinteger (string s) const { int ret; if (sscanf (s.c_str(), "%d", &ret) < 1) throw Error("Bad numeric specifier in '" + s + ": not a number"); return (ret); } crossroads-2.65/xr/config/setserver.cc000066400000000000000000000005271141436564300200720ustar00rootroot00000000000000#include "config" void Config::setserver (string str) { // Split into 3 parts vector parts = str2parts (str, ':'); if (parts.size() != 3) throw Error("Bad server specifier, expected: TYPE:IPADDRESS:PORT"); // Store type, IP and port styp.type (parts[0]); sip = parts[1]; lport = setinteger (parts[2]); } crossroads-2.65/xr/config/setwebinterface.cc000066400000000000000000000005211141436564300212140ustar00rootroot00000000000000#include "config" void Config::setwebinterface (string str) { vector parts = str2parts (str, ':'); if (parts.size() != 2) throw Error("Bad webinterface specifier in '-W" + str + "', expected: IP:PORT"); use_webinterface = true; webinterface_ip = parts[0]; webinterface_port = setinteger(parts[1]); } crossroads-2.65/xr/config/stickyhttp.cc000066400000000000000000000002171141436564300202520ustar00rootroot00000000000000#include "config" void Config::stickyhttp (bool b) { Mutex::lock (&sticky_http); sticky_http = b; Mutex::unlock (&sticky_http); } crossroads-2.65/xr/dispatchmode/000077500000000000000000000000001141436564300167345ustar00rootroot00000000000000crossroads-2.65/xr/dispatchmode/dispatchmode000066400000000000000000000007651141436564300213330ustar00rootroot00000000000000#ifndef _DISPATCHMODE_ #define _DISPATCHMODE_ #include "sys/sys" using namespace std; class Dispatchmode { public: enum Mode { m_leastconn, m_roundrobin, m_firstactive, m_external, m_strict_hashed_ip, m_lax_hashed_ip, m_strict_stored_ip, m_lax_stored_ip, m_weighted_load, }; Dispatchmode() : mymode(m_leastconn) { } void mode (Mode m) { mymode = m; } Mode mode() const { return (mymode); } string modestr() const; private: Mode mymode; }; #endif crossroads-2.65/xr/dispatchmode/modestr.cc000066400000000000000000000013411141436564300207170ustar00rootroot00000000000000#include "dispatchmode" #include "config/config" string Dispatchmode::modestr() const { ostringstream o; switch (mode()) { case m_leastconn: return ("least-connections"); case m_roundrobin: return ("round-robin"); case m_firstactive: return ("first-available"); case m_external: return (static_cast("external:") + config.externalalgorithm()); case m_strict_hashed_ip: return ("strict-hashed-ip"); case m_lax_hashed_ip: return ("lax-hashed-ip"); case m_strict_stored_ip: o << "strict-stored-ip:" << config.ipstoretimeout(); return (o.str()); case m_lax_stored_ip: o << "lax-stored-ip:" << config.ipstoretimeout(); return (o.str()); default: return ("unknown"); } } crossroads-2.65/xr/dnsentry/000077500000000000000000000000001141436564300161365ustar00rootroot00000000000000crossroads-2.65/xr/dnsentry/dnsentry000066400000000000000000000005221141436564300177260ustar00rootroot00000000000000#ifndef _DNSENTRY_ #define _DNSENTRY_ #include "config/config" #include "error/error" #include "timestamp/timestamp" #include "ThreadsAndMutexes/mutex/mutex" class DNSEntry { public: DNSEntry(): result(0), timestamp() {} in_addr_t &resolve(string const &str); private: in_addr_t result; Timestamp timestamp; }; #endif crossroads-2.65/xr/dnsentry/resolve.cc000066400000000000000000000011461141436564300201260ustar00rootroot00000000000000#include "dnsentry" in_addr_t &DNSEntry::resolve (string const &h) { // If the entry is there and if it's up to date, run with it if (result && timestamp.elapsed() <= (double)config.dnscachetimeout()) return result; // Resolve now. struct hostent *hostaddr; Mutex::lock((void*)gethostbyname); if ( (hostaddr = gethostbyname(h.c_str())) ) memcpy (&result, hostaddr->h_addr_list[0], hostaddr->h_length); Mutex::unlock((void*)gethostbyname); if (!hostaddr) throw Error("Failed to resolve host '" + h + "'"); debugmsg(Mstr("Host ") + h + " resolved\n"); return result; } crossroads-2.65/xr/error/000077500000000000000000000000001141436564300154215ustar00rootroot00000000000000crossroads-2.65/xr/error/error000066400000000000000000000005471141436564300165030ustar00rootroot00000000000000#ifndef _ERROR_ #define _ERROR_ #include "sys/sys" #include "timestamp/timestamp" using namespace std; class Error { public: Error (string s); Error (int i); Error &operator+ (Error const &other); Error &operator+ (string const &s); Error &operator+ (int i); char const *what() const throw (); private: string desc; }; #endif crossroads-2.65/xr/error/error1.cc000066400000000000000000000000671141436564300171450ustar00rootroot00000000000000#include "error" Error::Error (string s): desc(s) { } crossroads-2.65/xr/error/error2.cc000066400000000000000000000001401141436564300171360ustar00rootroot00000000000000#include "error" Error::Error (int i) { ostringstream o; o << i; desc = o.str(); } crossroads-2.65/xr/error/opplus1.cc000066400000000000000000000001571141436564300173360ustar00rootroot00000000000000#include "error" Error &Error::operator+ (Error const &other) { desc += other.desc; return (*this); } crossroads-2.65/xr/error/opplus2.cc000066400000000000000000000001431141436564300173320ustar00rootroot00000000000000#include "error" Error &Error::operator+ (string const &s) { desc += s; return (*this); } crossroads-2.65/xr/error/opplus3.cc000066400000000000000000000002061141436564300173330ustar00rootroot00000000000000#include "error" Error &Error::operator+ (int i) { ostringstream o; o << i; desc += o.str(); return (*this); } crossroads-2.65/xr/error/what.cc000066400000000000000000000004151141436564300166730ustar00rootroot00000000000000#include "error" #include "../config/config" char const *Error::what() const throw (){ ostringstream o; if (config.prefixtimestamp()) { Timestamp tm; o << tm.desc() << ' '; } o << pthread_self() << " ERROR: " << desc; return (o.str().c_str()); } crossroads-2.65/xr/etc/000077500000000000000000000000001141436564300150435ustar00rootroot00000000000000crossroads-2.65/xr/etc/Makefile.class000066400000000000000000000014541141436564300176130ustar00rootroot00000000000000SRC = $(wildcard *.cc) OBJ = $(patsubst %.cc, $(BASE)/xr/$(BUILDDIR)/$(DIR)_%.o, $(SRC)) DIR = $(shell pwd | sed 's:.*/::') SYS = $(shell uname) HST = $(shell hostname) # CCC = -DCONNECTCHECK_ONLY_WRITABLE ifeq ($(HST), Thera.local) ERRFLAG = -Werror endif class-compile: $(OBJ) $(BASE)/xr/$(BUILDDIR)/$(DIR)_%.o: %.cc @echo "Compiling: " `pwd` $< $(CONF_CC) $(PROF) $(PROFILER) $(CONF_OPTFLAGS) \ -DVER='"$(VER)"' -DAUTHOR='"$(AUTHOR)"' -DHST='"$(HST)"' \ -DMAINTAINER='"$(MAINTAINER)"' -DDISTSITE='"$(DISTSITE)"' \ -DSYS='"$(SYS)"' -D$(SYS) $(MEMDEBUG) $(CCC) \ -DCONF_CC='"$(CONF_CC)"' -DCONF_LIB='"$(CONF_LIB)"' \ -DCONF_OPTFLAGS='"$(CONF_OPTFLAGS)"' $(CONF_STRNSTR) \ $(CONF_GETOPT) $(CONF_GETOPT_LONG) $(CONF_INET_ATON) \ -I$(BASE)/xr \ -c -g -Wall $(ERRFLAG) -o $@ $< crossroads-2.65/xr/etc/c-conf000077500000000000000000000446721141436564300161530ustar00rootroot00000000000000#!/usr/bin/perl use strict; use Getopt::Std; # Globals my $VER = "1.15"; # 1.15 [KK 2008-10-12] Option "optflags" implemented. # 1.14 [KK 2008-08-22] c-compiler and c++-compiler attempt to find by # version, eg. '/opt/local/bin/g++-mp-4.2' is better # than '/usr/bin/g++' # 1.13 [KK 2008-07-15] Opimized subfiles() - way faster when nonrecursive now # 1.12 [KK 2008-04-15] Messaging improved upon -v flag # 1.11 [KK 2008-01-14] Added /opt/local/{lib,include} to the standard libs. # Also added /sw # 1.10 [KK 2007-08-29] Added libvariable01 and flag -l. Flags -l/L get # used upon libfunction/libvariable checks. # 1.09 [KK 2007-06-13] Added 'lib64' variants to libdirs, for 64bit Linux # 1.08 [KK 2007-05-22] -L{dir} shown only once for identical dirs during 'lib' # 1.07 [KK 2007-05-18] Flag -c for caching implemented # 1.06 [KK 2007-04-27] Added ifheader01 and libfunction01 # 1.05 [KK 2006-09-28] Flag -s (silent) implemented. Usage text updated. # 1.04 [KK 2006-09-05] C-compilers: gcc/g++ get selected first, instead of # cc/c++. Helps HP-UX ports. [Thanks, Bernd Krumboeck.] # 1.03 [KK 2006-07-19] 'subfiles' keeps track of visited dirs incase of # recursion. Testing is now by inode, used to be by name. # 1.02 [KK 2006-06-01] 'findbin' searches for .exe too now, for Cygwin support # 1.01 [KK 2005-09-29] Implemented context-sensitive help via -h. # Action 'header' implemented. # 1.00 [KK 2005-09-28] First version # Configuration my @def_headerdirs = ('/usr/include', '/usr/local/include', '/opt/local/include', '/sw/include', "$ENV{HOME}/include", ); my @def_libdirs = ('/usr/lib', '/usr/lib64', '/usr/local/lib', '/usr/local/lib64', '/opt/local/lib', '/opt/local/lib64', '/usr/ucblib', '/sw/lib', '/sw/lib64', "$ENV{HOME}/lib", ); my @c_compilers = ('gcc', 'cc'); my @cpp_compilers = ('g++', 'c++'); # Globals my %opts; my $base; my @warnings; my $printed; my @headerdirs; my @libdirs; my @libs; my $cachekey; my $cacheval; # Show usage and croak sub usage { die <<"ENDUSAGE" This is c-conf, the C compilation configuration helper V$VER Copyright (c) e-tunity. Contact for information. Usage: $base [flags] header FILE.H [FILE.H...] Searches for directories containing the named header(s), returns appropriate -I flags. $base [flags] headerdir DIR [DIR...]: Searches for directory containing headers, returns appropriate -I flags. $base [flags] ifheader FILE.H DEFINE Searches for the named header. If found, a compilation flag -DDEFINE is returned, indicating that the header is found. $base [flags] ifheader01 FILE.H DEFINE Similar to ifheader, but the returned define is either DEFINE=0 or DEFINE=1 $base [flags] lib NAME [NAME...]: Searches for libNAME.{a,so,...}, returns appropriate -L and -l flags. $base [flags] libfunction FUNC DEFINE Creates a small program that tries to use FUNC. If this succeeds, a -DDEFINE=1 flag is returned. $base [flags] libfunction01 FUNC DEFINE Similar to libfunction, but the returned define is DEFINE=0 or DEFINE=1 $base [flags] libvariable01 VAR DEFINE Creates a small program that accesses variable VAR. If this succeeds, -DDEFINE=1 is returned. $base [flags] so-name NAME: Returns filename of a shared-object for NAME, e.g. libNAME.so $base [flags] so-cflags: Returns compilation flags to build shared objects $base [flags] so-lflags: Returns linkage flags to produce a shared-object library $base [flags] c-compiler: Returns name of C compiler $base [flags] c++-compiler: Returns name of C++ compiler $base [flags] optflags: Returns fast-code optimization flags. Optional flags: -c CACHE: settings will be dynamically determined unless present in CACHE; new settings will be added to CACHE -h: to show short help for an action, e.g. try '$base -h so-name' -s: to suppress showing of warnings -v: to show verbose messages -I DIR[,DIR..]: to add DIR(s) to the searchpath for headers, default searchpath is @headerdirs -L DIR[,DIR..]: to add DIR(s) to the searchpath for libraries, default searchpath is @libdirs -l LIB[,LIB..]: to add LIB(s) to C compiler invocations, when checking for lib functions or variables Meaningful output is returned on stdout. Verbose messages, warnings and errors go to stderr. ENDUSAGE } # Issue a warning sub warning { push (@warnings, "@_"); } # Show a message sub msg { return unless ($opts{v}); print STDERR ("$base: ", @_); } # Show help info if -h was given sub checkhelp { return unless ($opts{h}); print STDERR (@_); exit (1); } # Basename / dirname of a file. sub basename ($) { my $name = shift; $name =~ s{.*/}{}; return ($name); } sub dirname ($) { my $name = shift; return (undef) unless ($name =~ /\//); $name =~ s{/[^/]$}{}; return ($name); } # Get the uname. sub uname() { my $ret = `uname`; chomp ($ret); return ($ret); } # Find a binary along the path. sub findbin($) { my $bin = shift; my $bestx = undef; my $bestver = -1; foreach my $d (split (/:/, $ENV{PATH})) { my @cand = (glob("$d/$bin"), glob("$d/$bin.exe"), glob("$d/$bin-*"), glob("$d/$bin-*.exe")); msg ("Candidates for '$bin' in '$d': [@cand]\n"); for my $x (@cand) { if (-x $x) { my $ver = $x; $ver =~ s{^.*/[^\d]*}{}; $ver = sprintf("%g", $ver); msg ("Version of $x: $ver\n"); if ($bestver < $ver or !$bestx) { $bestver = $ver; $bestx = $x; msg (" .. best so far\n"); } } } } msg ("Failed to locate executable '$bin'!\n") unless ($bestx); return ($bestx); } # Recursively determine the files under a given dir. my %_dir_visited; sub subfiles ($$$) { my ($dir, $mask, $recursive) = @_; %_dir_visited = (); my ($dev, $ino) = stat($dir) or return (undef); my $tag = sprintf ("%d-%d", $dev, $ino); return (undef) if ($_dir_visited{$tag}); $_dir_visited{$tag} = $dir; return (undef) unless (-d $dir); my @ret = (); foreach my $f (glob ("$dir/$mask")) { push (@ret, $f) if (-f $f); } if ($recursive) { foreach my $d (glob ("$dir/*")) { next unless (-d $d); my @subret = subfiles ("$d", $mask, 1); my $added = 0; foreach my $f (@subret) { if (-f $f) { push (@ret, $f); $added++; } } } } if ($#ret > -1) { return (@ret); } else { return (undef); } } # Output stuff, update $cacheval incase we'll add it to the cache later. sub output { if ($printed++) { print (' '); $cacheval .= ' '; } print (@_); for my $a (@_) { $cacheval .= $a; } } # Find a header, output a define if found. sub if_header { checkhelp <<"ENDHELP"; 'ifheader' tries to find a header file in the 'include' directories. When found, a define-flag for the C compiler is returned. E.g.: $base ifheader malloc.h HAVE_MALLOC_H (may return -DHAVE_MALLOC_H) Use in a Makefile as in: CFLAGS = \$(CFLAGS) \$(shell c-conf ifheader malloc.h HAVE_MALLOC_H) Then in a C source as: #ifdef HAVE_MALLOC_H #include #endif ENDHELP usage() if ($#_ != 1); my ($h, $def) = @_; foreach my $d (@headerdirs) { if (-f "$d/$h") { msg ("Header '$h' found as '$d/$h'\n"); output ("-D$def"); return; } } } # Find a header, output define=0 or define=1 sub if_header01 { checkhelp <<"ENDHELP"; 'ifheader01' tries to find a header in the 'include' directories. When found, a define for the C compiler is returned having value 1. When not found, the value is 0. Use in a Makefile as follows: CFLAGS = \$(shell c-conf ifheader01 malloc.h HAVE_MALLOC_H) Then in a C source as: #if HAVE_MALLOC_H == 1 #include #endif ENDHELP usage() if ($#_ != 1); my ($h, $def) = @_; foreach my $d (@headerdirs) { if (-f "$d/$h") { output ("-D$def=1"); return; } } output ("-D$def=0"); return; } # Find a header sub header { checkhelp <<"ENDHELP"; 'header' locates one or more C headers in the 'include' directories. E.g.: $base header e-lib.h stdio.h (may return -I/usr/include -I/usr/e/include) Use in a Makefile as in: CFLAGS = -C -Wall \$(shell c-conf header e-lib.h) Then in a C source as: #include ENDHELP usage() if ($#_ == -1); foreach my $h (@_) { my $found = 0; foreach my $d (@headerdirs) { if (-f "$d/$h") { $found++; msg ("Header '$h' found as '$d/$h\n"); output ("-I$d"); last; } } warning ("Failed to locate header '$h' in @headerdirs\n") unless ($found); } } # Find a header directory sub headerdir { checkhelp <<"ENDHELP"; 'headerdir' locates directories under which (in steps) C headers are E.g.: $base headerdir libxml2 (may return '-I/usr/include/libxml2') Use in a Makefile as in: CFLAGS = -C -Wall \$(shell c-conf headerdir libxml2) Then in a C source as: #include ENDHELP usage() if ($#_ == -1); foreach my $headerdir (@_) { my $found = 0; foreach my $d (@headerdirs) { my $target = "$d/$headerdir"; if (subfiles ($target, '*.h', 0)) { msg ("Header directory '$headerdir' found as '$target'\n"); output ("-I$target"); $found++; } } warning ("Header dir '$headerdir' not found\n") unless ($found); } } # Find a library sub lib { checkhelp <<"ENDHELP"; 'lib' generates the linkage flags for a given library name. The name is bare, without 'lib' and '.so' and the like. E.g.: $base lib xml2 (may return '-L/usr/lib -lxml2') Use in a Makefile as in: LDFLAGS = \$(shell c-conf lib xml2) ENDHELP usage() if ($#_ == -1); my %dirshown; foreach my $lib (@_) { my $found = 0; foreach my $d (@libdirs) { my $hit = (subfiles ($d, "lib$lib.*", 0))[0]; if ($hit) { msg ("Library '$lib' found as '$hit'\n"); $found++; $hit =~ s{/[^/]*$}{}; if (! $dirshown{$hit}) { output ("-L$hit"); $dirshown{$hit} = 1; } output ("-l$lib"); } } #warning ("Library '$lib' not found\n") # unless ($found); } } # Compilation flags to make a so-ready object. sub so_cflags { checkhelp <<"ENDHELP"; 'so-cflags' returns the compilation flags that are necessary when building objects for a shared library. E.g.: $base so-cflags (may return '-fPIC') Use in a Makefile as in: CFLAGS = -c -g -Wall \$(shell c-conf so-cflags) ENDHELP usage() if ($#_ > -1); my $flags; if (uname() eq 'Darwin') { $flags = '-fPIC'; } elsif (uname() eq 'Linux') { $flags = '-fpic'; } msg ("Shared object compilation flags: '$flags'\n"); output ($flags); } # Linkage flags to make an so. sub so_lflags { checkhelp << "ENDHELP"; 'so-lflags' returns the linkage flags that are necessary when combining objects into a shared library. E.g.: $base so-lflags (may return '-dynamiclib -Wl,-single_module') Use in a Makefile as in: MY_SO = \$(shell c-conf so-name my) \$(MY_SO): *.o \$(CC) -o \$(MY_SO) \$(shell c-conf so-lflags) *.o ENDHELP usage() if ($#_ > -1); my $lib = shift; my $flags; if (uname() eq 'Darwin') { $flags = "-dynamiclib -Wl,-single_module"; } else { $flags = "-shared"; } msg ("Shared library linkage flags: '$flags'\n"); output ($flags); } # Find the C compiler and return it, or die trying. sub find_c_compiler { foreach my $c (@c_compilers) { my $full = findbin($c); return ($full) if ($full); } die ("No C compiler found\n"); } # Get the C compiler sub c_compiler { checkhelp <<"ENDHELP"; 'c-compiler' tries to find a C compiler and returns its (bare) name. E.g.: $base c-compiler -> gcc ENDHELP usage() if ($#_ > -1); my $cc; eval { $cc = find_c_compiler(); }; if ($@) { warning ($@); } else { msg ("C compiler: '$cc'\n"); output ($cc); } } # Get the C++ compiler sub cpp_compiler { checkhelp <<"ENDHELP"; 'c++-compiler' tries to find a C++ compiler and returns its (bare) name. E.g.: $base c++-compiler -> g++ ENDHELP usage() if ($#_ > -1); foreach my $c (@cpp_compilers) { my $full = findbin($c); if ($full) { msg ("C++ compiler: '$full'\n"); output ($full); return; } } warning ("No C++ compiler found\n"); } # Get fast code optimization flags. sub optflags { checkhelp <<"ENDHELP"; 'optflags' tries to determine optimization flags. E.g.: $base optflags -> -O3 ENDHELP usage() if ($#_ > -1); for my $optflag ('-fast', '-O3', '-O2') { if (test_compile ("int main() {}\n", $optflag)) { output ($optflag); return; } } warning ("No optimization flag found."); } # Get the name for an SO. sub so_name { checkhelp <<"ENDHELP"; 'so-name' returns the filename of a shared library, based on the LIB argument. E.g.: $base so-name test -> libtest.so ENDHELP usage() if ($#_ != 0); my $name = shift; my $dir = dirname ($name); my $base = basename ($name); my $dest; if (uname() eq 'Darwin') { $dest = "lib$base.dylib"; } else { $dest = "lib$base.so"; } if ($dir ne '') { msg ("Shared library name for '$name': '$dir/$dest'\n"); output ("$dir/$dest"); } else { msg ("Shared library name for '$name': '$dest'\n"); output ("$dest"); } } # Check that a libfunction is present. sub libfunction { checkhelp <<"ENDHELP"; 'libfunction' checks whether a library function is present. There are two arguments: the function to check, and a define to output when the function is found. The output is a -D flag for the compiler commandline. E.g.: $base libfunction printf HAVE_PRINTF -> -DHAVE_PRINTF=1 $base libfunction foo_bar HAVE_FOOBAR -> (nothing) ENDHELP if (test_libfunction (@_)) { msg ("Library function '$_[0]' present\n"); output ("-D$_[1]=1"); } else { msg ("Library function '$_[0]' absent\n"); } } # Check that a lib variable is present, 01 version sub libvariable01 { checkhelp <<"ENDHELP"; 'libvariable01' checks whether a library variable is present. There are two arguments: a variable name, and a define to output with value 0 or 1. E.g.: $base libvariable01 errno HAVE_ERRNO -> -DHAVE_ERRNO=1 ENDHELP if (test_libvariable(@_)) { msg ("Library variable '$_[1]' present\n"); output ("-D$_[1]=1"); } else { msg ("Library variable '$_[1]' absent\n"); output ("-D$_[1]=0"); } } # Check that a libfunction is present, 01-version sub libfunction01 { checkhelp <<"ENDHELP"; 'libfunction01' checks whether a library function is present. There are two arguments: the function to check, and a define to output when the function is found. When the lib function is found, then the define is returned with a value 1, else with a value 0. E.g.: $base libfunction01 printf HAVE_PRINTF -> -DHAVE_PRINTF=1 $base libfunction foo_bar HAVE_FOOBAR -> -DHAVE_FOOBAR=0 ENDHELP if (test_libfunction (@_)) { msg ("Library function '$_[1]' present\n"); output ("-D$_[1]=1"); } else { msg ("Library function '$_[1]' absent\n"); output ("-D$_[1]=0"); } } sub test_compile { my $sourcecode = shift; my $cc = find_c_compiler(); # Create a temp .c file. my $src = "/tmp/$$.c"; my $dst = "/tmp/$$.out"; open (my $of, ">$src") or die ("Cannot write $src: $!\n"); print $of ($sourcecode); close ($of); my $cmd = "$cc "; for my $flag (@_) { $cmd .= "$flag "; } $cmd .= "$src -o $dst " . cc_inc_flags() . ' ' . cc_libdir_flags() . ' ' . cc_lib_flags(); # print ($cmd, "\n"); my $ret = system ("$cmd >/dev/null 2>&1"); unlink ($src, $dst); return ($ret == 0 ? 1 : 0); } # Return @headerdirs as C flags sub cc_inc_flags() { my $ret = ''; for my $h (@headerdirs) { $ret .= " -I$h"; } msg ("C compilation include flags: '$ret'\n"); return ($ret); } # Return @libdirs as C flags sub cc_libdir_flags() { my $ret = ''; for my $l (@libdirs) { $ret .= " -L$l" if (-d $l); } msg ("C library directory flags: '$ret'\n"); return ($ret); } # Return @libs as C flags sub cc_lib_flags() { my $ret = ''; for my $l (@libs) { $ret .= " -l$l"; } msg ("C library flags: '$ret'\n"); return ($ret); } # Test whether a lib function is present. sub test_libfunction { usage() if ($#_ != 1); my ($func, $def) = @_; return (test_compile ("main () {\n" . " void $func (void);\n" . " $func();\n" . "}\n")); } # Test whether a lib variable is present. sub test_libvariable { usage() if ($#_ != 1); my ($var, $def) = @_; return (test_compile ("main () {\n" . " extern int $var;\n" . " $var = 42;\n" . "}\n")); } # Main starts here $base = $0; $base =~ s{.*/}{}; usage () unless (getopts ('vhI:L:sc:l:', \%opts)); # See if we got a cache with the requests in it. # If we can match the request, return the result. if ($opts{c}) { $cachekey = ''; for my $a (@ARGV) { $cachekey .= ' ' if ($cachekey ne ''); $cachekey .= $a; } if (open (my $if, $opts{c})) { while (my $line = <$if>) { chomp ($line); my ($key, $val) = split (/\t/, $line); if ($key eq $cachekey) { output ($val); print ("\n"); exit (0); } } } } foreach my $d (split (/,/, $opts{L})) { push (@libdirs, $d); } foreach my $d (split (/,/, $opts{I})) { push (@headerdirs, $d); } foreach my $d (split (/,/, $opts{l})) { push (@libs, $d); } push (@libdirs, @def_libdirs); push (@headerdirs, @def_headerdirs); my $action = shift (@ARGV); if ($action eq 'header') { header (@ARGV); } elsif ($action eq 'headerdir') { headerdir (@ARGV); } elsif ($action eq 'lib') { lib (@ARGV); } elsif ($action eq 'so-cflags') { so_cflags (@ARGV); } elsif ($action eq 'so-lflags') { so_lflags (@ARGV); } elsif ($action eq 'c-compiler') { c_compiler(@ARGV); } elsif ($action eq 'c++-compiler') { cpp_compiler(@ARGV); } elsif ($action eq 'so-name') { so_name (@ARGV); } elsif ($action eq 'ifheader') { if_header (@ARGV); } elsif ($action eq 'ifheader01') { if_header01 (@ARGV); } elsif ($action eq 'libfunction') { libfunction (@ARGV); } elsif ($action eq 'libfunction01') { libfunction01 (@ARGV); } elsif ($action eq 'libvariable01') { libvariable01 (@ARGV); } elsif ($action eq 'optflags') { optflags (@ARGV); } else { usage (); } print ("\n") if ($printed); # Add to the cache if necessary. if ($opts{c}) { open (my $of, ">>$opts{c}") or die ("Cannot append to cache file $opts{c}: $!\n"); print $of ("$cachekey\t$cacheval\n"); } if ($#warnings > -1) { foreach my $w (@warnings) { print STDERR ("$base WARNING: $w") unless ($opts{s}); } exit (1); } exit (0); crossroads-2.65/xr/etc/e-txt2c000077500000000000000000000027331141436564300162640ustar00rootroot00000000000000#!/bin/sh VER=1.04 # ChangeLog: # 1.04 Call to e-copyright removed. # 1.03 -V shows more info # 1.02 In the text file, ' is changed to \' and \ is changed to \\ # 1.01 -V flag implemented # 1.00 First version # e-txt2c: development tool # just write up your usage in a file "usage.txt", then run # e-txt2c DEFINENAME < usage.txt > usage.h # then include usage.h in your program and refer to define DEFINENAME # to address the string # check args if [ "$1" = "-V" ] ; then echo $VER TXT to C-string Translator exit 0 fi if [ -z "$1" ] ; then cat << ENDUSAGE 1>&2 Usage: e-txt2c DEFINENAME output.h E.g., when writing up your usage() function, just put your text in usage.txt. Then run "e-txt2c USAGETEXT usage.h" and include usage.h. Refer to your text using the define symbol USAGETEXT. Typically this is a rule in a Makefile, as in: # my "main.c" includes "usage.h", so it is dependent on that main.o: main.c usage.h # how to make usage.h usage.h: usage.txt e-txt2c USAGETEXT usage.h ENDUSAGE exit 1 fi cat << ENDWARNING /* * Warning: this file is auto-generated from an input file by e-txt2c. * Don't modify this, your changes will be overwritten (probably during * the next "make"). * To change this text, find the sources, edit the text input, and * re-make the program. */ ENDWARNING echo "#define $1 \\" sed \ -e 's:\\:\\\\:g' \ -e "s:':\\\':g" \ -e 's:":\\":g' \ -e 's:^: ":' \ -e 's:$:\\n" \\:' echo ' ""' crossroads-2.65/xr/etc/e-ver000077500000000000000000000032051141436564300160070ustar00rootroot00000000000000#!/usr/bin/perl use strict; use Getopt::Std; # ChangeLog # 1.03 Revamp to Perl. Support for RPM's spec files. # 1.02 -V shows more info. # 1.01 -V flag implemented # 1.00 First version my $VER=1.03; my %opts; # Show usage and stop. sub usage () { die ("\n", "Copyright (c) e-tunity 2000 ff. All rights reserved.\n", "Contact e-tunity for more info.\n", "Usage: e-ver file(s) VERSION\n", "The files are checked for ChangeLog-style entries or RPM-style\n", "entries. The stated versions must match VERSION.\n\n"); } # Check a version in a file. sub checkversion ($$) { my $f = shift; my $v = shift; open (IF, $f) or die ("e-ver: cannot read $f: $!\n"); while () { chomp (); if (/^[0-9]/) { # ChangeLog style entry. my $curver = sprintf ("%g", $_); die ("e-ver: ChangeLog-style version $curver is not the\n", " required $v. You should probably update $f\n") if ($curver != $v); close (IF); return; } if (/^Version: */) { s/^Version: *//; my $curver = sprintf ("%g", $_); die ("e-ver: RPM-spec style version $curver is not the\n", " required $v. You should probably update $f.\n") if ($curver != $v); close (IF); return; } } close (IF); die ("e-ver: failed to find version ID in $f, cannot check\n"); } # Main starts here. usage() unless (getopts ("V", \%opts)); if ($opts{V}) { print ("$VER Version ID Checker\n"); exit (0); } usage() if ($#ARGV < 1); my $version_to_check = pop (@ARGV); foreach my $f (@ARGV) { die ("e-ver: no such file $f\n") unless (-f $f); checkversion ($f, $version_to_check); } crossroads-2.65/xr/etc/firstav.pl000077500000000000000000000010231141436564300170550ustar00rootroot00000000000000# firstav.pl - sample "first available" dispatching algorithm, # implemented as an external Perl program #!/usr/bin/perl use strict; print STDERR ("firstav.pl: Invocation: @ARGV\n"); my $n = shift (@ARGV); for my $i (0..$n - 1) { my $addr = shift (@ARGV); my $av = shift (@ARGV); my $conn = shift (@ARGV); print STDERR ("firstav.pl: $i: backend at $addr, $av, $conn connections\n"); if ($av eq 'available') { print ("$i\n"); exit (0); } } print STDERR ("firstav.pl: Nothing available!\n"); exit (1); crossroads-2.65/xr/etc/gettools000077500000000000000000000011471141436564300166340ustar00rootroot00000000000000#!/usr/bin/perl use strict; die ("Usage: gettools SRCDIR DSTDIR TOOL [TOOL...]\n") if ($#ARGV < 2); my $srcdir = shift (@ARGV); die ("gettools: source dir $srcdir not found\n") unless (-d $srcdir); my $dstdir = shift (@ARGV); die ("gettools: dest dir $dstdir not found\n") unless (-d $dstdir); for my $t (@ARGV) { gettool ($srcdir, $dstdir, $t); } sub gettool ($$$) { my ($sd, $dd, $t) = @_; my $src = "$sd/$t"; return unless (-f $src); my $dst = "$dd/$t"; if (! -f $dst or (stat($src))[9] > (stat($dst))[9]) { system ("cp '$src' '$dst'") and die ("gettools: cp failed\n"); } } crossroads-2.65/xr/etc/status-nosavebutton.xslt000066400000000000000000000547121141436564300220400ustar00rootroot00000000000000 XR Status Overview

XR Status Overview


Detailed Status


Add back end ip:port

Quick Overview

Back end , , , connections

Activity

Number of threads
Used file descriptors (approx.)
File descriptor limit
Thread Description Back end Duration
(client ) Powered by Crossroads V. Visit
for more info. Server Status Accepting connections, concurrent client(s), Terminating, still serving connections, defined back ends Dispatch mode Type Checks Wakeup interval off sec Checkup interval off sec Timeouts Client read unlimited sec Client write unlimited sec Back end read unlimited sec Back end write unlimited sec DNS cache validity unused sec Fast sockets closing eliminates TIME_WAIT state Debugging Verbose logging Debug logging Traffic log directory Activity scripts Onstart command Onend command Onfail command Network buffer size bytes DOS Protection Max. connections unlimited maximum value (0 for unlimited) Sample duration sec Hard max connection rate unlimited sessions per sample (0 for unlimited) Soft max connection rate unlimited sessions per sample (0 for unlimited) Defer time in microsec, 1.000.000 = 1 sec Hard excess signal program Soft excess signal program Access Control Lists New allow-from New deny-from
Back end State Health , Connections (anticipating ) Connect failures Served bytes, clients Options Weight Max. connections unlimited maximum value (0 for unlimited) Load average Backend check (. to reset) Host match any host request (. for any host) URL match any url request (. for any url) Up state Stop all connections
HTTP Goodies Add X-Forwarded-For Sticky HTTP Replace Host: headers Allow from Deny from Server header New server header crossroads-2.65/xr/etc/status-savebutton.xslt000066400000000000000000000557451141436564300215120ustar00rootroot00000000000000 XR Status Overview

XR Status Overview


Detailed Status


Add back end ip:port

Quick Overview

Back end , , , connections

Activity

Number of threads
Used file descriptors (approx.)
File descriptor limit
Thread Description Back end Duration
Powered by Crossroads V. Visit
for more info. Server Status Accepting connections, concurrent client(s), Terminating, still serving connections, defined back ends Dispatch mode Type Checks Wakeup interval off sec Checkup interval off sec Timeouts Client read unlimited sec Client write unlimited sec Back end read unlimited sec Back end write unlimited sec DNS cache validity unused sec Fast sockets closing eliminates TIME_WAIT state Debugging Verbose logging Debug logging Traffic log directory Activity scripts Onstart command Onend command Onfail command Network buffer size bytes DOS Protection Max. connections unlimited maximum value (0 for unlimited) Sample duration sec Hard max connection rate unlimited sessions per sample (0 for unlimited) Soft max connection rate unlimited sessions per sample (0 for unlimited) Defer time in microsec, 1.000.000 = 1 sec Hard excess signal program Soft excess signal program Access Control Lists New allow-from New deny-from
Back end State Health , Connections (anticipating ) Served bytes, clients Options Weight Max. connections unlimited maximum value (0 for unlimited) Load average Backend check (. to reset) Host match any host request (. for any host) Up state Stop all connections
HTTP Goodies Add X-Forwarded-For Sticky HTTP Replace Host: headers Allow from Deny from Server header New server header crossroads-2.65/xr/etc/status.xslt000077700000000000000000000000001141436564300242612status-nosavebutton.xsltustar00rootroot00000000000000crossroads-2.65/xr/etc/usage.txt000066400000000000000000000232441141436564300167150ustar00rootroot00000000000000 This is XR, a load balancer and failover utility for TCP/HTTP services. Usage: xr [flags], where the flags may be the following (long versions may not exist on your platform): --add-server-header HDR, -H HDR Inserts HDR into back end bound HTTP messages. The header value is appended when a pre-existing header is present. --add-x-forwarded-for, -x Adds X-Forwarded-For with external IP address to back end streams in HTTP messages. --add-xr-version, -X Adds an XR version header to client and back end streams in HTTP messages. --allow-from MASK, -a MASH Allow only clients that match MASK. MASK is e.g. 192.168.255.255, which would allow the class B network 192.168.*.* --backend ADDRESS:PORT[:MAX[:WEIGHT]], -b ADDRESS:PORT[:MAX[:WEIGHT]] Specifies a back end, use multiple -b... to specify several back ends. At least one backend must be given. Specifier MAX is optional: when given, defines the maximum connections for the back end. WEIGHT is optional: when given, specifies the weight (bigger means better server, default 1) --backend-check METHOD, -g METHOD Defines how back ends are checked. This flag must be specified PRIOR to defining back ends with -b... The checker will then apply to all next back ends. Alternatives are: connect:IP:PORT - successful TCP connects at IP:PORT indicate that the back end is alive. When IP is not stated, the back end's IP is assumed. get:IP:PORT/URI - A HTTP GET is sent to IP:PORT/URI. When an HTTP status 200 is seen, the back end is assumed alive. When /URI is not given, then "/" is assumed. external:PROGRAM - The PROGRAM is called with the arguments "IP:PORT", availability as "available" or "unavailable", and the number of connections. The program must echo 0 to indicate that the back end is alive. The default behavior is a TCP connect, to the back end's IP, at the back end's port. Use "--backend-check connect::" to reset previous flags to the default. --backend-timeout SEC, -t SEC Defines network read timeouts for back ends, default 30 sec. Use 0 to prevent timing out. Use "--backend-timeout RSEC:WSEC" to specify separate timeouts for reads and writes, default 30:3. --buffer-size SIZE, -B size Sets the network buffer size, default is 2048 (in bytes) --checkup-interval SEC, -c SEC Defines the back end checking period. Each SEC seconds, every back end is checked whether it is alive. Default is 0 (off). --client-timeout SEC, -T SEC Defines network read timeouts for clients, default 30 sec. Use 0 to prevent timing out. Use "--client-timeout RSEC:WSEC" to specify separate timeouts for reads and writes, default 30:5 --close-sockets-fast, -C Sockets are closed faster to avoid TIME_WAIT states. --debug, -D Sets debugging on, more verbosity on top of --verbose --defer-time USEC, -u USEC If a connection is going to be deferred due to hitting the "soft" rate (see --soft-maxconnrate), then this option sets how long the deferral will last, in microseconds. Default is 500000 (0.5 seconds). --deny-from MASK, -A mask Deny clients that match MASK. --dispatch-mode METHOD, -d METHOD Defines how to dispatch over back ends, the method may be: f, first-available - first live back end gets all traffic e:EXT, external:EXT - external program EXT is queried h, strict-hashed-ip - client IP is hashed to determine a back end, the client is denied when back end is down. H, lax-hashed-ip - client IP is hashed, fallback to least-connections when target back end is down l, least-connections - back end with least connections is taken r, round-robin - back ends take turns L, weighted-load - randomly picks from back end with favor given to backends with lower load average. (NOTE: load average must be updated by the backend, e.g. using the web interface). s:SEC, strict-stored-ip:SEC - if client connected before within SEC seconds, then the same backend is used. Client is denied if that backend is down. Else a new is found by least-connections. S:SEC, lax-stored-ip:SEC - same as strict-stored-ip, but falls back to least-connections when a previously used back end is down. Default method is l (least-connections). When external mode is selected, program EXT is started with arguments (b0 repeated for all back ends). Here is the back end definition, eg. "10.1.1.1:80"; is "available" or "unavailable", is the nr. of connections. The program must reply with a back end number (0..max) on stdout. --dns-cache-timeout SEC, -F SEC DNS results for back end hostnames are cached for SEC seconds. The default is 3600 (1 hour). Use 0 to suppress. --foreground, -f Suppresses forking/threading, only for debugging. Also suppresses wakeups (--wakeup-interval), checkups (--checkup-interval) and the webinterface (--web-interface). --hard-maxconn-excess PROGRAM, -E PROGRAM When a client exceeds the hard maxconnection rate, PROGRAM is invoked with the client's IP as argument. The program may e.g. invoke iptables to block the offending IP. --hard-maxconnrate MAXCONS, -R MAXCONS Sets the "HARD" maximum average number of connections per IP allowed within a given time period (see -U, --time-interval). If a particular IP exceeds this number, then their connection is immediately closed. Default is 0 (disabled). If both the "soft" and "hard" rates are set, and the "hard" rate is lower than the "soft" rate, then only the "hard" rate is obeyed. --help, -?, -h This text. --host-match HOST, -M HOST Subsequently stated backends only apply when clients request a matching host. Only available when the server is in http mode. --log-traffic-dir DIR, -l DIR Log passing traffic with dumps in DIR. Only for debugging, slows down the balancer. --max-connections MAX, -m MAX Sets the maximum number of connections to the balancer. Default is 0, no maximum. --onend CMD, -Z CMD Runs CMD after successful termination of a client. For the arguments of CMD see -y. --onfail CMD, -y CMD Runs CMD when XR fails to connect to a back end. The arguments to the command are: the client's IP address, and the back end address. --onstart CMD, -z CMD Runs CMD just before letting a back end handle a client's connection. For the arguments of CMD see -y. --pidfile FILE, -p FILE FILE is written with the process id of XR upon startup, and removed upon exit. --prefix-timestamp, -P Messages (verbose, debug, error etc.) are prefixed with a time stamp. --quit-after REQUESTS, -Q REQUESTS Stops the balancer after REQUESTS hits. For debugging / loadtesting. --remove-reservations, -G In stored-ip algorithms, outstanding reservations for expected clients are removed when no more back ends are available. --replace-host-header HDR, -I HDR Inserts "Host: " into back end bound HTTP messages. Pre-existing Host headers are overwritten. The value of is the server name as in the setting of --backend (-b). --server TYPE:IPADDRESS:PORT, -S TYPE:IPADDRESS:PORT Specifies the server. TYPE is tcp or http or udp. IPADDRESS is the IP address to listen to. PORT defines the TCP port to listen; when port is 0, XR will listen to stdin (inetd-mode, not available for udp). Default: tcp:0:10000 (TCP balancing, on all interfaces, via port 10000). --soft-maxconn-excess PROGRAM, -e PROGRAM When a client exceeds the soft maxconnection rate, PROGRAM is invoked with the client's IP as argument. --soft-maxconnrate MAXCONS, -r MAXCONS Sets the "SOFT" maximum average number of connections per IP allowed within a given time period (see -U, --time-interval). If a particular IP exceeds this number, then their connection is deferred (see -u, --defer-time). Default is 0 (disabled). --sticky-http, -S Enables sticky HTTP sessions by injecting XRTarget cookies into HTTP streams. Only effective with "--server http:...." --time-interval SEC, -U SEC If either --soft-maxconnrate or --hard-maxconnrate is specified, this option allows you to specify the time period to which those numbers of connections apply. For example, "--soft-maxconnrate 200 --time-interval 60" would trigger the "soft" limit on any IP attempting more than 200 connections in any 60 second period. Default is 1 (second). --tryout, -n Validates all flags and stops; does not start the balancer. --url-match URL, -j URL Subsequently stated backends only apply when clients request a matching URL. Only available when the server is in http mode. --web-interface IP:PORT, -W IP:PORT Starts a web interface on specified IP address and port. --verbose, -v Increases verbosity, default is silent operation. --version, -V Shows the version info, and author/maintainer contacts (for reporting bugs). --wakeup-interval SEC, -w SEC Defines wakeup period (rechecking) in seconds, of unavailable back ends. Default is 5. Use -w0 to suppress. XR's messages are sent to stderr. Invoke XR daemons using something like "xr --backend ... [other flags] 2>&1 | logger &", or use xrctl. crossroads-2.65/xr/etc/xrprof000077500000000000000000000012671141436564300163170ustar00rootroot00000000000000#!/usr/bin/perl use strict; open (my $if, "/tmp/xr-prof.txt") or die ("Cannot read /tmp/xr-prof.txt: $!\n"); my %info; while (my $line = <$if>) { chomp($line); my (undef, undef, $name, $duration) = split (/\s+/, $line); # print ("$name: $duration\n"); if ($info{$name}) { my ($calls, $total) = @{ $info{$name} }; $calls++; $total += $duration; $info{$name} = [ $calls, $total ]; } else { $info{$name} = [ 1, $duration ]; } } for my $k (sort bytotal keys(%info)) { my ($calls, $total) = @{ $info{$k} }; print ("$k: $total usec\n"); } sub bytotal { my @aa = @{ $info{$a} }; my @bb = @{ $info{$b} }; return ($bb[1] <=> $aa[1]); } crossroads-2.65/xr/fdset/000077500000000000000000000000001141436564300153755ustar00rootroot00000000000000crossroads-2.65/xr/fdset/fdset000066400000000000000000000014641141436564300164320ustar00rootroot00000000000000#ifndef _FDSET_ #define _FDSET_ #include "../sys/sys" #include "../error/error" #include "../config/config" using namespace std; class Fdset { public: Fdset(int t); int timeout() const { return tsec; } void timeout (int t) { tsec = t; } void add (int fd) { set.push_back(fd); } unsigned size() const { return set.size(); } int fd (unsigned index) { return set[index]; } void wait(bool wait_read, bool wait_write); void wait_rw() { wait(true, true); } void wait_r() { wait(true, false); } void wait_w() { wait(false, true); } bool readable(int fd) { return FD_ISSET(fd, &readset); } bool writeable(int fd) { return FD_ISSET(fd, &writeset); } private: int tsec; fd_set readset, writeset, exceptset; vector set; }; #endif crossroads-2.65/xr/fdset/fdset1.cc000066400000000000000000000002041141436564300170660ustar00rootroot00000000000000#include "fdset" Fdset::Fdset (int t) : tsec(t), set() { FD_ZERO(&readset); FD_ZERO(&writeset); FD_ZERO(&exceptset); } crossroads-2.65/xr/fdset/wait.cc000066400000000000000000000040161141436564300166510ustar00rootroot00000000000000#include "fdset" void Fdset::wait(bool wait_read, bool wait_write) { PROFILE("Fdset::wait"); struct timeval tv, *tvp; // No fd's? Nothing to wait for. if (set.size() < 1) throw Error("Internal jam in Fdset::wait(): no fd's to wait for"); // Prepare select sets. FD_ZERO (&readset); FD_ZERO (&writeset); FD_ZERO (&exceptset); for (unsigned i = 0; i < set.size(); i++) { FD_SET (set[i], &readset); FD_SET (set[i], &writeset); FD_SET (set[i], &exceptset); debugmsg(Mstr("About to wait for fd ") + Mstr(set[i]) + "\n"); } // Prepare timout specifier. if (tsec) { tv.tv_sec = tsec; tv.tv_usec = 0; tvp = &tv; debugmsg(Mstr("Waiting limitation: ") + Mstr(tsec) + "\n"); } else { tvp = 0; debugmsg(Mstr("No waiting limitation\n")); } // Run the select. if (select (FD_SETSIZE, wait_read ? &readset : 0, wait_write ? &writeset : 0, &exceptset, tvp) < 0) { if (errno != EINTR) throw Error(string("Select failure: failed to wait: ") + strerror(errno)); FD_ZERO(&readset); FD_ZERO(&writeset); FD_ZERO(&exceptset); return; } // Check for exceptions. for (unsigned i = 0; i < set.size(); i++) if (FD_ISSET (set[i], &exceptset)) { ostringstream o; o << "Exception on fd/socket " << int(set[i]); throw Error(o.str()); } // More debugging: What has become readable, what has become // writeable, also state if no change was seen if (config.debug()) { bool statechanged = false; for (unsigned int i = 0; i < FD_SETSIZE; i++) { if (FD_ISSET(i, &readset)) { _debugmsg(Mstr("Fd ") + Mstr(i) + " is readable\n"); statechanged = true; } if (FD_ISSET(i, &writeset)) { _debugmsg(Mstr("Fd ") + Mstr(i) + " is writeable\n"); statechanged = true; } } if (!statechanged) { ostringstream o; o << "Select timeout: neither of the fd's "; for (unsigned int i = 0; i < set.size(); i++) o << set[i] << ' '; o << "has shown activity in " << tsec << " sec\n"; _debugmsg(o.str()); } } } crossroads-2.65/xr/httpbuffer/000077500000000000000000000000001141436564300164415ustar00rootroot00000000000000crossroads-2.65/xr/httpbuffer/addheader.cc000066400000000000000000000005001141436564300206440ustar00rootroot00000000000000#include "httpbuffer" void Httpbuffer::addheader (string const &var, string const &val) { PROFILE("Httpbuffer::addheader(string,string)"); if (!headersreceived()) return; string old = headerval(var); if (old.size()) { old += ", " + val; setheader(var, old); } else setheader (var, val); } crossroads-2.65/xr/httpbuffer/addheader1.cc000066400000000000000000000006001141436564300207260ustar00rootroot00000000000000#include "httpbuffer" void Httpbuffer::addheader (string const &h) { PROFILE("Httpbuffer::addheader(string)"); if (!headersreceived()) return; unsigned i; for (i = 0; i < h.size(); i++) if (h[i] == ':') { string var = h.substr(0, i); i++; while (isspace(h[i])) i++; string val = h.substr(i); addheader (var, val); return; } } crossroads-2.65/xr/httpbuffer/cookievalue.cc000066400000000000000000000010601141436564300212530ustar00rootroot00000000000000#include "httpbuffer" string Httpbuffer::cookievalue (string c) { PROFILE("Httpheader::cookievalue"); string cval = headerval ("Cookie"); string match = c; if (match[match.size() - 1] != '=') match += '='; string ret = ""; size_t pos = cval.find(match); if (pos != string::npos) { pos += match.size(); for (char ch = cval[pos]; pos < cval.size() && ch != ';' && ch != ',' && ch; ch = cval[++pos]) { ret += ch; } } msg(Mstr("Cookie value '") + c + Mstr("' : '") + ret + "'\n"); return (ret); } crossroads-2.65/xr/httpbuffer/findheader.cc000066400000000000000000000006711141436564300210450ustar00rootroot00000000000000#include "httpbuffer" unsigned Httpbuffer::findheader(string h) { PROFILE("Httpbuffer::findheader"); if (!headersreceived()) return (0); for (unsigned int i = 1; i < bufsz(); /* incremented below */) { // At header? if (!strncmp(bufdata() + i, h.c_str(), h.size())) return i; // No, advance beyond \n or fail if (! (i = charfind('\n', i)) ) return 0; i++; } // Avoiding warnings: return 0; } crossroads-2.65/xr/httpbuffer/firstline.cc000066400000000000000000000004741141436564300207540ustar00rootroot00000000000000#include "httpbuffer" string &Httpbuffer::firstline() { PROFILE("Httpbuffer::firstline"); if (first_line.size()) return (first_line); for (unsigned i = 0; i < bufsz(); i++) { char ch = charat(i); if (ch == '\n' || ch == '\r') break; first_line += ch; } return (first_line); } crossroads-2.65/xr/httpbuffer/headersreceived.cc000066400000000000000000000005471141436564300221000ustar00rootroot00000000000000#include "httpbuffer" bool Httpbuffer::headersreceived() { PROFILE("Httpbuffer::headersreceived"); if (bodystart) return (true); unsigned off; if ( (off = strfind("\r\n\r\n")) > 0 ) { bodystart = off + 4; return (true); } if ( (off = strfind("\n\n")) > 0 ) { bodystart = off + 2; return (true); } return (false); } crossroads-2.65/xr/httpbuffer/headerval.cc000066400000000000000000000012171141436564300207040ustar00rootroot00000000000000#include "httpbuffer" string Httpbuffer::headerval (string const &var) { PROFILE("Httpbuffer::headerval"); if (!headersreceived()) return (""); string myvar = var; if (myvar[myvar.size() - 1] != ':') myvar += ":"; unsigned int start; if ( (!(start = strfind(myvar.c_str()))) || (start >= bodystart) ) return (""); start += myvar.size(); for (char ch = charat(start); ch && isspace(ch); ch = charat(++start)) ; string ret; for (char ch = charat(start); ch && ch != '\r' && ch != '\n'; ch = charat(++start)) ret += ch; debugmsg ("Header " + myvar + " '" + ret + "'\n"); return (ret); } crossroads-2.65/xr/httpbuffer/httpbuffer000066400000000000000000000020341141436564300205340ustar00rootroot00000000000000#ifndef _HTTPBUFFER_ #define _HTTPBUFFER_ #include "sys/sys" #include "netbuffer/netbuffer" #include "config/config" #include "profiler/profiler" class Httpbuffer: public Netbuffer { public: // Recognized request methods. Modify requestmethod.cc to add more. enum RequestMethod { m_get, m_other, }; Httpbuffer(); bool headersreceived(); string headerval (string const &var); string &firstline(); string url(); bool setversion(char v); void setheader (string const &var, string const &val); void setheader (string const &h); void addheader (string const &var, string const &val); void addheader (string const &h); void replaceheader (string const &var, string const &val); void replaceheader (string const &h); string cookievalue (string var); string paramvalue(string var); RequestMethod requestmethod(); string requesturi(); void reset(); private: unsigned findheader (string h); unsigned bodystart; string first_line; }; #endif crossroads-2.65/xr/httpbuffer/httpbuffer1.cc000066400000000000000000000001711141436564300212010ustar00rootroot00000000000000#include "httpbuffer" Httpbuffer::Httpbuffer(): bodystart(0), first_line("") { PROFILE("Httpbuffer::Httpbuffer"); } crossroads-2.65/xr/httpbuffer/paramvalue.cc000066400000000000000000000010171141436564300211040ustar00rootroot00000000000000#include "httpbuffer" string Httpbuffer::paramvalue (string c) { PROFILE("Httpheader::paramvalue"); string uri = requesturi(); string match = c; if (match[match.size() - 1] != '=') match += '='; string ret = ""; size_t pos = uri.find(match); if (pos != string::npos) { pos += match.size(); for (char ch = uri[pos]; pos < uri.size() && ch != '&' && ch != '?'; ch = uri[++pos]) ret += ch; } msg(Mstr("Param value '") + c + Mstr("' : '") + ret + "'\n"); return ret; } crossroads-2.65/xr/httpbuffer/replaceheader1.cc000066400000000000000000000005371141436564300216220ustar00rootroot00000000000000#include "httpbuffer" void Httpbuffer::replaceheader(string const &h) { PROFILE("Httpbuffer::replacehader(string)"); unsigned i; for (i = 0; i < h.size(); i++) if (h[i] == ':') { string var = h.substr(0, i); i++; while (isspace(h[i])) i++; string val = h.substr(i); replaceheader(var, val); return; } } crossroads-2.65/xr/httpbuffer/replaceheader2.cc000066400000000000000000000005401141436564300216150ustar00rootroot00000000000000#include "httpbuffer" void Httpbuffer::replaceheader(string const &var, string const &val) { PROFILE("Httpbuffer::replacehader(string,string)"); if (!headersreceived()) return; unsigned off = findheader(var); if (off) { unsigned nl = charfind('\n', off); if (nl) removeat(off, nl - off + 1); } setheader(var, val); } crossroads-2.65/xr/httpbuffer/requestmethod.cc000066400000000000000000000003351141436564300216420ustar00rootroot00000000000000#include "httpbuffer" Httpbuffer::RequestMethod Httpbuffer::requestmethod() { PROFILE("Httpheader::requestmethod"); if (bufsz() >= 3 && !strncmp(bufdata(), "GET", 3)) return (m_get); return (m_other); } crossroads-2.65/xr/httpbuffer/requesturi.cc000066400000000000000000000003171141436564300211610ustar00rootroot00000000000000#include "httpbuffer" string Httpbuffer::requesturi() { PROFILE("Httpbuffer:requesturi"); vector parts = str2parts (firstline(), ' '); return (parts.size() >= 2 ? parts[1] : ""); } crossroads-2.65/xr/httpbuffer/reset.cc000066400000000000000000000001641141436564300200730ustar00rootroot00000000000000#include "httpbuffer" void Httpbuffer::reset() { first_line = ""; bodystart = 0; Netbuffer::reset(); } crossroads-2.65/xr/httpbuffer/setheader.cc000066400000000000000000000007211141436564300207140ustar00rootroot00000000000000#include "httpbuffer" void Httpbuffer::setheader (string const &var, string const &val) { PROFILE("Httpbuffer::setheader"); if (!headersreceived()) return; string myvar = var; if (myvar[myvar.size() - 1] != ':') myvar += ':'; // Find position beyond first \n unsigned i; if (! (i = charfind('\n')) ) return; // Poke in the header. string h; h = myvar + ' ' + val + "\r\n"; insertat(i + 1, h.c_str()); } crossroads-2.65/xr/httpbuffer/setheader1.cc000066400000000000000000000005151141436564300207760ustar00rootroot00000000000000#include "httpbuffer" void Httpbuffer::setheader (string const &h) { PROFILE("Httpbuffer::setheader(string)"); unsigned i; for (i = 0; i < h.size(); i++) if (h[i] == ':') { string var = h.substr(0, i); i++; while (isspace(h[i])) i++; string val = h.substr(i); setheader (var, val); } } crossroads-2.65/xr/httpbuffer/setversion.cc000066400000000000000000000006321141436564300211520ustar00rootroot00000000000000#include "httpbuffer" bool Httpbuffer::setversion (char v) { PROFILE("Httpbuffer::setversion"); // No first line? Nothing to do yet. unsigned croff = charfind('\n'); if (!croff) return false; // Find the HTTP/1.x header unsigned stroff = strfind("HTTP/1."); if (!stroff || stroff > croff) return false; // Poke in the new version. return setchar(stroff + 7, v); } crossroads-2.65/xr/httpbuffer/url.cc000066400000000000000000000015701141436564300175550ustar00rootroot00000000000000#include "httpbuffer" static string methods[] = { "HEAD", "GET", "POST", "PUT", "DELETE", "TRACE", "OPTIONS", "CONNECT" }; string Httpbuffer::url() { if (firstline().empty()) return ""; // The first line must be a method, followed by the URL, followed // by optional mush, as in: GET /index.html HTTP/1.1. // Match the method first. unsigned url_start = 0; for (unsigned i = 0; i < sizeof(methods) / sizeof(string) ; i++) if (firstline().substr(0, methods[i].size()) == methods[i]) { url_start = methods[i].size(); break; } if (!url_start) return ""; while (firstline()[url_start] == ' ' && url_start < firstline().size()) url_start++; string ret; for (unsigned i = url_start; firstline()[i] != ' ' && i < firstline().size(); i++) ret += firstline()[i]; debugmsg("URL of request: " + ret + "\n"); return ret; } crossroads-2.65/xr/ipstore/000077500000000000000000000000001141436564300157555ustar00rootroot00000000000000crossroads-2.65/xr/ipstore/activity.cc000066400000000000000000000006141141436564300201210ustar00rootroot00000000000000#include "ipstore" void IPStore::activity(struct in_addr clientip, unsigned curbackend) { if (!onoff) return; msg(Mstr("Logging activity for back end ") + Mstr(curbackend) + Mstr(" from ") + inet_ntoa(clientip) + "\n"); Mutex::lock(&store); store[clientip].targetbackend = (int)curbackend; store[clientip].lastaccess = time(0); Mutex::unlock(&store); } crossroads-2.65/xr/ipstore/anticipated.cc000066400000000000000000000010771141436564300205560ustar00rootroot00000000000000#include "ipstore" unsigned IPStore::anticipated(unsigned b) { if (!onoff || b >= balancer.nbackends()) return 0; // Weed store for decisions later weed(); // Get number of anticipated clients for given back end unsigned ret = 0; Mutex::lock(&store); for (StoreMap::iterator iter = store.begin(); iter != store.end(); iter++) if ((*iter).second.targetbackend == (int)b) ret++; Mutex::unlock(&store); debugmsg(Mstr("Anticipated connections for back end ") + Mstr(b) + ": " + Mstr(ret) + "\n"); return ret; } crossroads-2.65/xr/ipstore/clear.cc000066400000000000000000000003511141436564300173510ustar00rootroot00000000000000#include "ipstore" void IPStore::clear(struct in_addr clientip) { debugmsg(Mstr("Erasing IP entry of ") + Mstr(inet_ntoa(clientip)) + "\n"); Mutex::lock(&store); store.erase(clientip); Mutex::unlock(&store); } crossroads-2.65/xr/ipstore/clearoldest.cc000066400000000000000000000014351141436564300205700ustar00rootroot00000000000000#include "ipstore" void IPStore::clearoldest() { time_t oldest_time = time(0) + 100; StoreMap::iterator oldest_entry; bool found = false; Mutex::lock(&store); dump(); // Find oldest entry. for (StoreMap::iterator iter = store.begin(); iter != store.end(); iter++) { if ((*iter).second.lastaccess < oldest_time) { oldest_time = (*iter).second.lastaccess; oldest_entry = iter; found = true; } } // Kill it if we got it. if (found) { if (config.debug()) { Timestamp tm((*oldest_entry).second.lastaccess); _debugmsg(Mstr("Erasing oldest IP store entry: ") + Mstr(inet_ntoa(oldest_entry->first)) + " on " + tm.desc() + "\n"); } store.erase(oldest_entry); } Mutex::unlock(&store); dump(); } crossroads-2.65/xr/ipstore/dump.cc000066400000000000000000000006521141436564300172340ustar00rootroot00000000000000#include "ipstore" void IPStore::dump() { if (!config.debug()) return; _debugmsg(Mstr("IPStore dump:\n")); for (StoreMap::iterator iter = store.begin(); iter != store.end(); iter++) { Timestamp tm((*iter).second.lastaccess); ostringstream o; o << "Client IP " << inet_ntoa(iter->first) << " on " << tm.desc() << " to back end " << (*iter).second.targetbackend << '\n'; _debugmsg(o.str()); } } crossroads-2.65/xr/ipstore/ipstore000066400000000000000000000020111141436564300173570ustar00rootroot00000000000000#ifndef _IPSTORE_ #define _IPSTORE_ #include "sys/sys" #include "config/config" #include "timestamp/timestamp" #include "balancer/balancer" #include "ThreadsAndMutexes/mutex/mutex" class IPStore { public: struct ClientData { int targetbackend; time_t lastaccess; }; struct ClientDataCmp { bool operator() (struct in_addr a, struct in_addr b) const { long la, lb; memcpy (&la, &a, sizeof(long)); memcpy (&lb, &b, sizeof(long)); return (la - lb) < 0; } }; typedef map StoreMap; static int target(struct in_addr clientip); static void activity(struct in_addr clientip, unsigned curbackend); static unsigned anticipated(unsigned bckend); static void clear(struct in_addr clientip); static void clearoldest(); static void on() { onoff = true; } static void off() { onoff = false; } private: static void dump(); static void weed(); static StoreMap store; static bool onoff; }; #endif crossroads-2.65/xr/ipstore/target.cc000066400000000000000000000011251141436564300175510ustar00rootroot00000000000000#include "ipstore" IPStore::StoreMap IPStore::store; bool IPStore::onoff = false; int IPStore::target(struct in_addr clientip) { // Weed out the store, for decisions later weed(); // Let's see if we know the client. if (store.count(clientip) > 0) { if (config.verbose()) { Timestamp tm(store[clientip].lastaccess); msg(Mstr("Client IP ") + Mstr(inet_ntoa(clientip)) + " last visited on " + tm.desc() + " and went to " + balancer.backend(store[clientip].targetbackend).description() + "\n"); } return store[clientip].targetbackend; } return -1; } crossroads-2.65/xr/ipstore/weed.cc000066400000000000000000000011711141436564300172100ustar00rootroot00000000000000#include "ipstore" void IPStore::weed() { time_t now = time(0); bool done = false; Mutex::lock(&store); while (!done) { done = true; for (StoreMap::iterator iter = store.begin(); iter != store.end(); iter++) { if (now - ((*iter).second.lastaccess) > config.ipstoretimeout()) { if (config.debug()) { Timestamp tm((*iter).second.lastaccess); _debugmsg (Mstr("Stale entry: ") + Mstr(inet_ntoa(iter->first)) + Mstr(" visited on ") + tm.desc() + ", erasing\n"); } done = false; store.erase(iter); break; } } } Mutex::unlock(&store); } crossroads-2.65/xr/memory/000077500000000000000000000000001141436564300156005ustar00rootroot00000000000000crossroads-2.65/xr/memory/memdata.cc000066400000000000000000000001161141436564300175150ustar00rootroot00000000000000#include "memory" Memory::MemoryLog Memory::s_memlog; bool Memory::s_follow; crossroads-2.65/xr/memory/memdelete.cc000066400000000000000000000001161141436564300200460ustar00rootroot00000000000000#include "memory" void Memory::operator delete(void *ptr) { free(ptr); } crossroads-2.65/xr/memory/memdelete1.cc000066400000000000000000000001201141436564300201220ustar00rootroot00000000000000#include "memory" void Memory::operator delete[](void *ptr) { free(ptr); } crossroads-2.65/xr/memory/memdisplay.cc000066400000000000000000000005211141436564300202510ustar00rootroot00000000000000#include "memory" void Memory::mem_display() { Mutex::lock(&s_memlog); for (unsigned i = 0; i < s_memlog.size(); i++) { MemoryEntry ent = s_memlog[i]; Mutex::lock(&cout); cout << "Memory::mem_display " << ent.ptr << ' ' << ent.sz << ' ' << ent.desc << '\n'; Mutex::unlock(&cout); } Mutex::unlock(&s_memlog); } crossroads-2.65/xr/memory/memfollow.cc000066400000000000000000000001111141436564300201010ustar00rootroot00000000000000#include "memory" void Memory::mem_follow(bool b) { s_follow = b; } crossroads-2.65/xr/memory/memfollow1.cc000066400000000000000000000001061141436564300201660ustar00rootroot00000000000000#include "memory" bool Memory::mem_follow() { return s_follow; } crossroads-2.65/xr/memory/memfree.cc000066400000000000000000000010731141436564300175300ustar00rootroot00000000000000#include "memory" void Memory::free(void *ptr) { if (!ptr) return; for (unsigned i = 0; i < s_memlog.size(); i++) { Mutex::lock(&s_memlog); MemoryEntry ent = s_memlog[i]; Mutex::unlock(&s_memlog); if (ent.ptr == ptr) { if (s_follow) { Mutex::lock(&cout); cout << "Memory::free(" << ptr << ")\n"; Mutex::unlock(&cout); } ::free (ent.ptr); Mutex::lock(&s_memlog); s_memlog.erase(s_memlog.begin() + i); Mutex::unlock(&s_memlog); return; } } cerr << "FREE Request for non previously allocated memory\n"; } crossroads-2.65/xr/memory/memmalloc.cc000066400000000000000000000006201141436564300200530ustar00rootroot00000000000000#include "memory" void *Memory::malloc(size_t sz, string const &desc) { void *ptr = ::malloc(sz); MemoryEntry ent = { ptr, sz, desc }; Mutex::lock(&s_memlog); s_memlog.push_back(ent); Mutex::unlock(&s_memlog); if (s_follow) { Mutex::lock(&cout); cout << "Memory::malloc(" << sz << ") -> " << ptr << ' ' << desc << '\n'; Mutex::unlock(&cout); } return ptr; } crossroads-2.65/xr/memory/memmark.cc000066400000000000000000000003101141436564300175320ustar00rootroot00000000000000#include "memory" void Memory::mem_mark(string const &desc) { MemoryEntry ent = { 0, 0, "MARK " + desc }; Mutex::lock(&s_memlog); s_memlog.push_back(ent); Mutex::unlock(&s_memlog); } crossroads-2.65/xr/memory/memnew.cc000066400000000000000000000001241141436564300173740ustar00rootroot00000000000000#include "memory" void *Memory::operator new(size_t sz) { return malloc(sz); } crossroads-2.65/xr/memory/memnew1.cc000066400000000000000000000001261141436564300174570ustar00rootroot00000000000000#include "memory" void *Memory::operator new[](size_t sz) { return malloc(sz); } crossroads-2.65/xr/memory/memory000066400000000000000000000017011141436564300170320ustar00rootroot00000000000000#ifndef _MEMORY_ #define _MEMORY_ #include "sys/sys" #include "ThreadsAndMutexes/mutex/mutex" class Memory { public: // Memory accessing functions static void *malloc(size_t sz, string const &desc = ""); static void *realloc(void *ptr, size_t newsz, string const &desc = ""); static void free(void *ptr); static void *operator new(size_t sz); static void operator delete(void *ptr); static void *operator new[](size_t sz); static void operator delete[](void *ptr); // Follow actions immediately? static void mem_follow(bool b); static bool mem_follow(); // Dump what we have static void mem_display(); // Marker in the overview static void mem_mark(string const &desc = ""); // Internal storage types struct MemoryEntry { void *ptr; size_t sz; string desc; }; typedef vector MemoryLog; private: static MemoryLog s_memlog; static bool s_follow; }; #endif crossroads-2.65/xr/memory/memrealloc.cc000066400000000000000000000012751141436564300202340ustar00rootroot00000000000000#include "memory" void *Memory::realloc(void *ptr, size_t newsz, string const &desc) { if (!newsz) { free(ptr); return 0; } else { for (unsigned i = 0; i < s_memlog.size(); i++) { MemoryEntry ent = s_memlog[i]; if (ent.ptr == ptr) { ent.ptr = ::realloc(ptr, newsz); ent.sz = newsz; ent.desc = desc; Mutex::lock(&s_memlog); s_memlog[i] = ent; Mutex::unlock(&s_memlog); if (s_follow) { Mutex::lock(&cout); cout << "Memory::realloc(" << ptr << ", " << newsz << ") -> " << ent.ptr << ' ' << desc << '\n'; Mutex::unlock(&cout); } return ent.ptr; } } cerr << "REALLOC Request for non previously allocated memory\n"; } return 0; } crossroads-2.65/xr/mstr/000077500000000000000000000000001141436564300152555ustar00rootroot00000000000000crossroads-2.65/xr/mstr/mstr000066400000000000000000000016731141436564300161740ustar00rootroot00000000000000#ifndef _MSTR_ #define _MSTR_ #include "sys/sys" class Mstr: public string { public: Mstr(string s): string(s) {} Mstr(char const *s): string(s) {} Mstr(int i) { ostringstream o; o << i; *this = o.str(); } Mstr const &operator+ (int i) { ostringstream o; o << i; *this += o.str(); return *this; } Mstr const &operator+ (unsigned i) { ostringstream o; o << i; *this += o.str(); return *this; } Mstr const &operator+ (time_t i) { ostringstream o; o << i; *this += o.str(); return *this; } Mstr const &operator+ (double i) { ostringstream o; o << i; *this += o.str(); return *this; } Mstr const &operator+(string const &s) { *this += s; return *this; } Mstr const &operator+(void const *p) { ostringstream o; o << p; *this += o.str(); return *this; } Mstr const &operator+(rlim_t r) { ostringstream o; o << r; *this += o.str(); return *this; } }; #endif crossroads-2.65/xr/netbuffer/000077500000000000000000000000001141436564300162505ustar00rootroot00000000000000crossroads-2.65/xr/netbuffer/charat.cc000066400000000000000000000002601141436564300200170ustar00rootroot00000000000000#include "netbuffer" char Netbuffer::charat(unsigned index) const { PROFILE("Netbuffer::charat"); if (index >= buf_sz) return (0); return buf_data[index]; } crossroads-2.65/xr/netbuffer/charfind.cc000066400000000000000000000004221141436564300203330ustar00rootroot00000000000000#include "netbuffer" unsigned Netbuffer::charfind(char ch, unsigned start) const { PROFILE("Netbuffer::charfind"); if (buf_sz <= start) return 0; char *cp = (char*)memchr(buf_data + start, ch, buf_sz); if (!cp) return (0); return (cp - buf_data); } crossroads-2.65/xr/netbuffer/checkspace.cc000066400000000000000000000020501141436564300206450ustar00rootroot00000000000000#include "netbuffer" void Netbuffer::check_space(unsigned extra) { PROFILE("Netbuffer::check_space"); if (!buf_alloced) { buf_alloced = extra; // When the first network buffer is allocated in HTTP mode, get // twice as much. Most often that will be enough to fetch the whole // client request, so that one realloc() will be spared. if (extra == config.buffersize() && config.stype() == Servertype::t_http) buf_alloced <<= 1; debugmsg (Mstr("Netbuffer: reserving ") + buf_alloced + " bytes for network buffer\n"); LOCK_MALLOC; buf_data = (char*)malloc(buf_alloced); UNLOCK_MALLOC; if (! buf_data) throw Error("Memory fault in Netbuffer::check_space"); } else if (buf_sz + extra > buf_alloced) { debugmsg((Mstr("Netbuffer: reallocating net buffer from ") + buf_alloced) + (Mstr(" to ") + (buf_alloced + extra)) + " bytes\n"); buf_alloced += extra; LOCK_MALLOC; buf_data = (char*)realloc(buf_data, buf_alloced); UNLOCK_MALLOC; if (! buf_data) throw Error("Memory fault in Netbuffer::check_space"); } } crossroads-2.65/xr/netbuffer/copy.cc000066400000000000000000000006041141436564300175310ustar00rootroot00000000000000#include "netbuffer" void Netbuffer::copy (Netbuffer const &other) { debugmsg("Netbuffer: copying other\n"); buf_sz = other.buf_sz; buf_alloced = other.buf_alloced; LOCK_MALLOC; buf_data = (char*)malloc(buf_alloced); UNLOCK_MALLOC; if (!buf_data) throw Error("Memory fault in Netbuffer::copy"); memcpy (buf_data, other.buf_data, buf_alloced); } crossroads-2.65/xr/netbuffer/destroy.cc000066400000000000000000000003351141436564300202510ustar00rootroot00000000000000#include "netbuffer" void Netbuffer::destroy() { debugmsg(Mstr("Netbuffer: destroying ") + Mstr(buf_alloced) + Mstr( " bytes\n")); free(buf_data); buf_data = 0; buf_sz = 0; buf_alloced = 0; } crossroads-2.65/xr/netbuffer/insertat.cc000066400000000000000000000007421141436564300204130ustar00rootroot00000000000000#include "netbuffer" bool Netbuffer::insertat(unsigned index, char const *s, unsigned len) { PROFILE("Netbuffer::insertat"); debugmsg(Mstr("Netbuffer: inserting ") + Mstr(s) + Mstr(" at ") + Mstr(index) + "\n"); if (!len) len = strlen(s); if (index >= buf_sz) return false; check_space(len); memmove (buf_data + index + len, buf_data + index, buf_sz - index); memcpy (buf_data + index, s, len); buf_sz += len; return true; } crossroads-2.65/xr/netbuffer/netbuffer000066400000000000000000000032561141436564300201610ustar00rootroot00000000000000#ifndef _NETBUFFER_ #define _NETBUFFER_ #include "sys/sys" #include "memory/memory" #include "error/error" #include "config/config" #include "profiler/profiler" #include "fdset/fdset" #include "servertype/servertype" /* A few defs when malloc() / realloc() are suspected to be not thread-safe. * The defines are used in eg. copy() and check_space(). */ #ifdef MISTRUST_MALLOC_THREADSAFE #define LOCK_MALLOC Mutex::lock((void*)malloc) #define UNLOCK_MALLOC Mutex::unlock((void*)malloc) #else #define LOCK_MALLOC #define UNLOCK_MALLOC #endif class Netbuffer MEM(: public Memory) { public: Netbuffer(); Netbuffer (Netbuffer const &other); Netbuffer (string const &s); virtual ~Netbuffer(); Netbuffer const &operator= (Netbuffer const &other); char charat(unsigned index) const; char operator[] (unsigned index) { return charat(index); } char const *bufdata() const { return buf_data; } unsigned bufsz() const { return buf_sz; } unsigned netread (int fd, int timeout = 0); unsigned netwrite (int fd, int timeout) const; unsigned strfind (char const *s) const; unsigned charfind (char ch, unsigned start = 0) const; bool setchar(unsigned offset, char ch); void setstring(string const &s); string stringat(unsigned index, unsigned len); bool insertat(unsigned index, char const *s, unsigned len = 0); bool removeat(unsigned index, unsigned len = 1); void reset(); private: void copy (Netbuffer const &other); void destroy(); void check_space(unsigned extra); string printable(char c) const; string printable() const; char *buf_data; unsigned buf_sz; unsigned buf_alloced; }; #endif crossroads-2.65/xr/netbuffer/netbuffer1.cc000066400000000000000000000002271141436564300206210ustar00rootroot00000000000000#include "netbuffer" Netbuffer::Netbuffer(): buf_data(0), buf_sz(0), buf_alloced(0) { debugmsg(Mstr("Netbuffer: creating zero size buffer\n")); } crossroads-2.65/xr/netbuffer/netbuffer2.cc000066400000000000000000000001321141436564300206150ustar00rootroot00000000000000#include "netbuffer" Netbuffer::Netbuffer (Netbuffer const &other) { copy (other); } crossroads-2.65/xr/netbuffer/netbuffer3.cc000066400000000000000000000001011141436564300206120ustar00rootroot00000000000000#include "netbuffer" Netbuffer::~Netbuffer() { destroy(); } crossroads-2.65/xr/netbuffer/netbuffer4.cc000066400000000000000000000002001141436564300206130ustar00rootroot00000000000000#include "netbuffer" Netbuffer::Netbuffer (string const &s): buf_data(0), buf_sz(0), buf_alloced(0) { setstring(s); } crossroads-2.65/xr/netbuffer/netread.cc000066400000000000000000000017741141436564300202120ustar00rootroot00000000000000#include "netbuffer" unsigned Netbuffer::netread (int fd, int timeout) { PROFILE("Netbuffer::netread"); if (timeout) { Fdset set(timeout); set.add(fd); set.wait_r(); if (! set.readable(fd)) { msg(Mstr("Fd ") + Mstr(fd) + Mstr(" failed to become readable within ") + Mstr(timeout) + Mstr(" sec")); return 0; } } check_space(config.buffersize()); // Read from the network. If this fails, don't throw an exception // because it's quite common (too much logging otherwise). ssize_t nread = read (fd, buf_data + buf_sz, config.buffersize()); if (nread < 0) { msg(Mstr("Read failed on fd ") + fd + ": " + strerror(errno)); return 0; } buf_sz += nread; if (config.debug() && nread) { ostringstream o; o << "Got " << nread << " bytes from fd " << fd << ": "; for (unsigned i = 0; i < (unsigned)nread; i++) o << printable(buf_data[i]); o << "\n"; _debugmsg (o.str()); } return nread; } crossroads-2.65/xr/netbuffer/netwrite.cc000066400000000000000000000043171141436564300204250ustar00rootroot00000000000000#include "netbuffer" #include "balancer/balancer" unsigned Netbuffer::netwrite (int fd, int timeout) const { PROFILE("Netbuffer::netwrite"); debugmsg((Mstr("About to write ") + buf_sz) + (Mstr(" bytes to fd ") + fd) + (Mstr(", timeout ") + timeout) + "\n"); if (!buf_sz) return (0); // Log to dump directory if requested if (config.dumpdir().length()) { ostringstream of; of << config.dumpdir() << "/" << balancer.requestnr() << "." << fd; FILE *f; if ( (!(f = fopen (of.str().c_str(), "a"))) && (!(f = fopen (of.str().c_str(), "w"))) ) warnmsg ("Cannot write traffic log " + of.str() + ": " + strerror(errno) + "\n"); else { fwrite (buf_data, 1, buf_sz, f); fclose (f); } } // Send to the socket unsigned totwritten = 0, ntries = 0; while (totwritten < buf_sz) { // Don't go beyond 5 tries. if (++ntries > 4) { ostringstream o; o << "Network writing to fd " << fd << " failed, " << totwritten << " bytes sent of " << buf_sz; throw Error(o.str()); } // Wait for the socket to become writeable. if (timeout) { Fdset set (timeout); set.add (fd); set.wait_w(); if (! set.writeable(fd)) { ostringstream o; o << "Fd " << fd << " failed to become writable within " << timeout << " sec"; throw Error(o.str()); } } // Push bytes ssize_t nwritten; nwritten = write (fd, buf_data + totwritten, buf_sz - totwritten); // If any bytes were written, we're ok // EINVAL / EINPROGRESS errors are handled as: retry // All other errors mean the link is broken if (nwritten >= 1) { ntries = 0; if (config.debug()) { ostringstream o; o << "Sent " << nwritten << " bytes to fd " << fd << ": "; for (unsigned i = totwritten; i < totwritten + nwritten; i++) o << printable(buf_data[i]); o << "\n"; _debugmsg (o.str()); } totwritten += nwritten; } else if (errno == EINVAL || errno == EINPROGRESS) { msg(Mstr("Write warning: ") + Mstr(strerror(errno)) + "\n"); } else { ostringstream o; o << "Write/send failed: errno=" << int(errno) << ", " << strerror(errno) << ", result=" << int(nwritten); throw Error(o.str()); } } return buf_sz; } crossroads-2.65/xr/netbuffer/opassign.cc000066400000000000000000000003321141436564300204000ustar00rootroot00000000000000#include "netbuffer" Netbuffer const &Netbuffer::operator= (Netbuffer const &other) { debugmsg(Mstr("Netbuffer: copying other\n")); if (this != &other) { destroy(); copy (other); } return (*this); } crossroads-2.65/xr/netbuffer/printable.cc000066400000000000000000000006651141436564300205460ustar00rootroot00000000000000#include "netbuffer" string Netbuffer::printable (char ch) const { ostringstream o; if (isprint(ch) && ch != '\\') { o << ch; return (o.str()); } else if (ch == '\n') return ("\\n"); else if (ch == '\r') return ("\\r"); else if (ch == '\t') return ("\\t"); else { char buf[10]; sprintf (buf, "%3.3o", ch & 0xff); o << "\\" << buf; return (o.str()); } // Avoid warnings return ("."); } crossroads-2.65/xr/netbuffer/printable1.cc000066400000000000000000000002511141436564300206160ustar00rootroot00000000000000#include "netbuffer" string Netbuffer::printable() const { string ret; for (unsigned i = 0; i < buf_sz; i++) ret += printable(buf_data[i]); return ret; } crossroads-2.65/xr/netbuffer/removeat.cc000066400000000000000000000004521141436564300204020ustar00rootroot00000000000000#include "netbuffer" bool Netbuffer::removeat(unsigned index, unsigned len) { if (index >= buf_sz) return false; if (index + len >= buf_sz) buf_sz = index; else { memmove (buf_data + index, buf_data + index + len, buf_sz - index - len); buf_sz -= len; } return true; } crossroads-2.65/xr/netbuffer/reset.cc000066400000000000000000000001521141436564300176770ustar00rootroot00000000000000#include "netbuffer" void Netbuffer::reset() { debugmsg("Netbuffer: resetting\n"); buf_sz = 0; } crossroads-2.65/xr/netbuffer/setchar.cc000066400000000000000000000003041141436564300202050ustar00rootroot00000000000000#include "netbuffer" bool Netbuffer::setchar(unsigned offset, char ch) { PROFILE("Netbuffer::setchar"); if (offset >= buf_sz) return false; buf_data[offset] = ch; return true; } crossroads-2.65/xr/netbuffer/setstring.cc000066400000000000000000000004161141436564300206020ustar00rootroot00000000000000#include "netbuffer" void Netbuffer::setstring(string const &s) { debugmsg(Mstr("Netbuffer: setting to string\n")); destroy(); check_space(s.size() + 1); buf_sz = s.size(); memcpy (buf_data, s.c_str(), buf_sz); buf_data[buf_sz] = 0; } crossroads-2.65/xr/netbuffer/strfind.cc000066400000000000000000000003721141436564300202320ustar00rootroot00000000000000#include "netbuffer" unsigned Netbuffer::strfind(char const *s) const { PROFILE("Netbuffer::strfind"); if (!buf_sz) return (0); char *cp = strnstr(buf_data, s, buf_sz); if (cp) return (cp - buf_data); return (0); } crossroads-2.65/xr/netbuffer/stringat.cc000066400000000000000000000003411141436564300204100ustar00rootroot00000000000000#include "netbuffer" string Netbuffer::stringat(unsigned index, unsigned len) { string ret; for (unsigned i = index; i < index + len; i++) { if (i >= buf_sz) break; ret += buf_data[i]; } return ret; } crossroads-2.65/xr/profiler/000077500000000000000000000000001141436564300161125ustar00rootroot00000000000000crossroads-2.65/xr/profiler/profiler000066400000000000000000000004471141436564300176640ustar00rootroot00000000000000#ifndef _PROFILER_ #define _PROFILER_ #include "sys/sys" #include "timestamp/timestamp" #include "ThreadsAndMutexes/mutex/mutex" class Profiler { public: Profiler (char const *f); ~Profiler(); private: char const *fname; Timestamp timestamp; static FILE *outf; }; #endif crossroads-2.65/xr/profiler/profiler1.cc000066400000000000000000000001641141436564300203250ustar00rootroot00000000000000#include "profiler" FILE *Profiler::outf; Profiler::Profiler (char const *f): timestamp() { fname = f; } crossroads-2.65/xr/profiler/profiler2.cc000066400000000000000000000003151141436564300203240ustar00rootroot00000000000000#include "profiler" Profiler::~Profiler() { if (!outf) outf = fopen ("/tmp/xr-prof.txt", "w"); if (outf) fprintf (outf, "%s %s %g\n", timestamp.desc().c_str(), fname, timestamp.elapsed()); } crossroads-2.65/xr/servertype/000077500000000000000000000000001141436564300165005ustar00rootroot00000000000000crossroads-2.65/xr/servertype/servertype000066400000000000000000000005511141436564300206340ustar00rootroot00000000000000#ifndef _SERVERTYPE_ #define _SERVERTYPE_ #include using namespace std; class Servertype { public: enum Type { t_tcp, t_http, t_udp, }; Servertype(): t(t_tcp) { } Servertype(string id) { type(id); } void type(string id); string typestr() const; Type type() const { return t; } private: Type t; }; #endif crossroads-2.65/xr/servertype/type1.cc000066400000000000000000000004511141436564300200510ustar00rootroot00000000000000#include "servertype" #include "error/error" void Servertype::type (string id) { if (id == "tcp") t = t_tcp; else if (id == "http") t = t_http; else if (id == "udp") t = t_udp; else throw Error("Bad server type '" + id + "', supported are 'tcp' or 'http' or 'udp'"); } crossroads-2.65/xr/servertype/typestr.cc000066400000000000000000000004261141436564300205230ustar00rootroot00000000000000#include "servertype" #include "error/error" string Servertype::typestr() const { if (t == t_tcp) return ("tcp"); else if (t == t_http) return ("http"); else if (t == t_udp) return ("udp"); else throw Error("Server type unknown in Servertype::typestr"); } crossroads-2.65/xr/sys/000077500000000000000000000000001141436564300151065ustar00rootroot00000000000000crossroads-2.65/xr/sys/anymsg.cc000066400000000000000000000006461141436564300167210ustar00rootroot00000000000000#include "sys" #include "config/config" #include "ThreadsAndMutexes/mutex/mutex" #include "profiler/profiler" #include "mstr/mstr" #include "timestamp/timestamp" void anymsg (Mstr const &s, ostream &o, string const &label) { Mutex::lock(&o); if (config.prefixtimestamp()) { Timestamp tm; o << tm.desc() << ' '; } o << pthread_self() << ' ' << label << ": " << s; o.flush(); Mutex::unlock(&o); } crossroads-2.65/xr/sys/debugmsg.cc000066400000000000000000000003751141436564300172170ustar00rootroot00000000000000#include "sys" #include "config/config" #include "ThreadsAndMutexes/mutex/mutex" #include "profiler/profiler" #include "mstr/mstr" #include "timestamp/timestamp" void _debugmsg (Mstr const &s) { PROFILE("debugmsg"); anymsg(s, cerr, "DEBUG"); } crossroads-2.65/xr/sys/inetaton.cc000066400000000000000000000003051141436564300172340ustar00rootroot00000000000000#include "sys" #ifndef HAVE_INET_ATON int inet_aton (char const *name, struct in_addr *addr) { in_addr_t a = inet_addr (name); addr->s_addr = a; return a != (in_addr_t)-1; } #endif crossroads-2.65/xr/sys/ipmatch.cc000066400000000000000000000007351141436564300170470ustar00rootroot00000000000000#include "sys" #include "../config/config" bool ipmatch (struct in_addr adr, struct in_addr mask) { PROFILE("ipmatch"); long laddr = 0, lmask = 0; memcpy (&laddr, &adr, sizeof(adr)); memcpy (&lmask, &mask, sizeof(mask)); bool match = ( (laddr & lmask) == laddr ); debugmsg ("Matching ip " + (string)inet_ntoa(adr) + " against mask " + (string)inet_ntoa(mask) + ": " + (match ? "match" : "miss") + "\n"); return (match); } crossroads-2.65/xr/sys/main.cc000066400000000000000000000045341141436564300163470ustar00rootroot00000000000000 #include "sys/sys" #include "config/config" #include "balancer/balancer" #include "error/error" #include "profiler/profiler" using namespace std; Config config; Balancer balancer; static void showlimits() { typedef struct { int resource; string description; } Limit; static Limit limit[] = { { RLIMIT_CORE, "coredump size (bytes)" }, { RLIMIT_CPU, "cpu time (sec)" }, { RLIMIT_DATA, "data segment size (bytes)" }, { RLIMIT_FSIZE, "max file size (bytes)" }, # ifdef RLIMIT_MEMLOCK { RLIMIT_MEMLOCK, "locked mem size (bytes)" }, # endif { RLIMIT_NOFILE, "max open files" }, # ifdef RLIMIT_NPROC { RLIMIT_NPROC, "max processes" }, # endif # ifdef RLIMIT_RSS { RLIMIT_RSS, "max resident set size (bytes)" }, # endif { RLIMIT_STACK, "max stack size (bytes)" } }; for (unsigned i = 0; i < sizeof(limit) / sizeof(Limit); i++) { struct rlimit rl; if (getrlimit(limit[i].resource, &rl)) throw Error(string("Failed to request limit: ") + strerror(errno)); ostringstream o; o << "Limits for " << limit[i].description << ": hard limit " << unsigned(rl.rlim_max) << ", soft limit " << unsigned(rl.rlim_cur) << '\n'; msg(o.str()); } } static int org_argc; static char **org_argv; static void sigcatcher (int sig) { debugmsg ("Seen signal " + sig + '\n'); switch (sig) { case SIGHUP: /* Generate a report to the log. Somewhat stale given the * web interface. */ balancer.report(true); break; default: balancer.terminate(true); break; } } int main (int argc, char **argv) { PROFILE("main"); static int relevant_sig[] = { SIGHUP, SIGINT, SIGQUIT, SIGABRT, SIGTERM, SIGSTOP, }; try { // Save original commandline org_argc = argc; org_argv = argv; // Load configuration from the commandline, promote verbosity config.parsecmdline (argc, argv); if (config.verbose()) showlimits(); msg ((Mstr("XR running as PID ") + getpid()) + "\n"); // Load the signal handler. for (unsigned i = 0; i < sizeof(relevant_sig) / sizeof(int); i++) signal (relevant_sig[i], sigcatcher); signal (SIGPIPE, SIG_IGN); // Configure the balancer and start serving. balancer.init(); balancer.serve(); } catch (Error const &e) { cerr << e.what() << endl; return (1); } catch (...) { cerr << "ERROR: Unidentified exception caught" << endl; } return (0); } crossroads-2.65/xr/sys/maxtimeout.cc000066400000000000000000000001711141436564300176100ustar00rootroot00000000000000#include "sys" int maxtimeout(int a, int b) { if (!a) return b; if (!b) return a; return a < b ? a : b; } crossroads-2.65/xr/sys/msg.cc000066400000000000000000000003621141436564300162040ustar00rootroot00000000000000#include "sys" #include "config/config" #include "ThreadsAndMutexes/mutex/mutex" #include "profiler/profiler" #include "mstr/mstr" #include "timestamp/timestamp" void _msg (Mstr const &s) { PROFILE("msg"); anymsg(s, cerr, "INFO"); } crossroads-2.65/xr/sys/mtrand.cc000066400000000000000000000152041141436564300167040ustar00rootroot00000000000000/* NOTE: All of the functions have been commented out, with two exceptions: - init_genrand(seed) has been renamed to mt_srand(seed) - genrand_int32(void) has been renamed to mt_rand(void) The renaming was to resemble the naming of srand() and rand(). All other functions were unnecessary, and as such commented out. */ /* A C-program for MT19937, with initialization improved 2002/1/26. Coded by Takuji Nishimura and Makoto Matsumoto. Before using, initialize the state by using init_genrand(seed) or init_by_array(init_key, key_length). Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The names of its contributors may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Any feedback is very welcome. http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html email: m-mat @ math.sci.hiroshima-u.ac.jp (remove space) */ /* Period parameters */ #define N 624 #define M 397 #define MATRIX_A 0x9908b0dfUL /* constant vector a */ #define UPPER_MASK 0x80000000UL /* most significant w-r bits */ #define LOWER_MASK 0x7fffffffUL /* least significant r bits */ static unsigned long mt[N]; /* the array for the state vector */ static int mti=N+1; /* mti==N+1 means mt[N] is not initialized */ /* initializes mt[N] with a seed */ void mt_srand(unsigned long s) { mt[0]= s & 0xffffffffUL; for (mti=1; mti> 30)) + mti); /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */ /* In the previous versions, MSBs of the seed affect */ /* only MSBs of the array mt[]. */ /* 2002/01/09 modified by Makoto Matsumoto */ mt[mti] &= 0xffffffffUL; /* for >32 bit machines */ } } /* initialize by an array with array-length */ /* init_key is the array for initializing keys */ /* key_length is its length */ /* slight change for C++, 2004/2/26 */ // void init_by_array(unsigned long init_key[], int key_length) // { // int i, j, k; // init_genrand(19650218UL); // i=1; j=0; // k = (N>key_length ? N : key_length); // for (; k; k--) { // mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1664525UL)) // + init_key[j] + j; /* non linear */ // mt[i] &= 0xffffffffUL; /* for WORDSIZE > 32 machines */ // i++; j++; // if (i>=N) { mt[0] = mt[N-1]; i=1; } // if (j>=key_length) j=0; // } // for (k=N-1; k; k--) { // mt[i] = (mt[i] ^ ((mt[i-1] ^ (mt[i-1] >> 30)) * 1566083941UL)) // - i; /* non linear */ // mt[i] &= 0xffffffffUL; /* for WORDSIZE > 32 machines */ // i++; // if (i>=N) { mt[0] = mt[N-1]; i=1; } // } // // mt[0] = 0x80000000UL; /* MSB is 1; assuring non-zero initial array */ // } /* generates a random number on [0,0xffffffff]-interval */ unsigned long mt_rand(void) { unsigned long y; static unsigned long mag01[2]={0x0UL, MATRIX_A}; /* mag01[x] = x * MATRIX_A for x=0,1 */ if (mti >= N) { /* generate N words at one time */ int kk; if (mti == N+1) /* if init_genrand() has not been called, */ mt_srand(5489UL); /* a default initial seed is used */ for (kk=0;kk> 1) ^ mag01[y & 0x1UL]; } for (;kk> 1) ^ mag01[y & 0x1UL]; } y = (mt[N-1]&UPPER_MASK)|(mt[0]&LOWER_MASK); mt[N-1] = mt[M-1] ^ (y >> 1) ^ mag01[y & 0x1UL]; mti = 0; } y = mt[mti++]; /* Tempering */ y ^= (y >> 11); y ^= (y << 7) & 0x9d2c5680UL; y ^= (y << 15) & 0xefc60000UL; y ^= (y >> 18); return y; } /* generates a random number on [0,0x7fffffff]-interval */ // long genrand_int31(void) // { // return (long)(genrand_int32()>>1); // } /* generates a random number on [0,1]-real-interval */ // double genrand_real1(void) // { // return genrand_int32()*(1.0/4294967295.0); // /* divided by 2^32-1 */ // } /* generates a random number on [0,1)-real-interval */ // double genrand_real2(void) // { // return genrand_int32()*(1.0/4294967296.0); // /* divided by 2^32 */ // } /* generates a random number on (0,1)-real-interval */ // double genrand_real3(void) // { // return (((double)genrand_int32()) + 0.5)*(1.0/4294967296.0); // /* divided by 2^32 */ // } /* generates a random number on [0,1) with 53-bit resolution*/ // double genrand_res53(void) // { // unsigned long a=genrand_int32()>>5, b=genrand_int32()>>6; // return(a*67108864.0+b)*(1.0/9007199254740992.0); // } /* These real versions are due to Isaku Wada, 2002/01/09 added */ // int main(void) // { // int i; // unsigned long init[4]={0x123, 0x234, 0x345, 0x456}, length=4; // init_by_array(init, length); // printf("1000 outputs of genrand_int32()\n"); // for (i=0; i<1000; i++) { // printf("%10lu ", genrand_int32()); // if (i%5==4) printf("\n"); // } // printf("\n1000 outputs of genrand_real2()\n"); // for (i=0; i<1000; i++) { // printf("%10.8f ", genrand_real2()); // if (i%5==4) printf("\n"); // } // return 0; // } crossroads-2.65/xr/sys/reportmsg.cc000066400000000000000000000003101141436564300174310ustar00rootroot00000000000000#include "sys" #include "config/config" #include "ThreadsAndMutexes/mutex/mutex" #include "mstr/mstr" #include "timestamp/timestamp" void reportmsg (Mstr const &s) { anymsg(s, cerr, "REPORT"); } crossroads-2.65/xr/sys/serversocket.cc000066400000000000000000000031551141436564300201400ustar00rootroot00000000000000#include "sys" #include "error/error" #include "profiler/profiler" #include "config/config" int serversocket (string addr, int port, string desc, Servertype::Type type) { PROFILE("serversocket"); // Create the server socket, set options int sock; if (type != Servertype::t_udp) sock = socket(PF_INET, SOCK_STREAM, 0); else sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if (sock < 0) throw Error("Failed to create " + desc + " socket: " + strerror(errno)); int val = 1; if (setsockopt (sock, SOL_SOCKET, SO_REUSEADDR, &val, sizeof(val))) throw Error("Failed to set socket options for " + desc + ": " + strerror(errno)); // Prepare binding struct sockaddr_in saddr; memset (&saddr, 0, sizeof(saddr)); saddr.sin_family = AF_INET; saddr.sin_port = htons(port); // Assign interface to listen to if (addr[0] != '0') { msg ("Binding " + desc + " to specific IP address " + addr + "\n"); if ( (saddr.sin_addr.s_addr = inet_addr (addr.c_str())) == INADDR_NONE ) throw Error("Cannot convert " + desc + " IP '" + addr + "' to network bytes"); } else { msg ("Binding " + desc + " to all local IP addresses\n"); saddr.sin_addr.s_addr = htonl (INADDR_ANY); } // Bind and listen if (bind (sock, (sockaddr*) &saddr, sizeof(saddr)) < 0) throw Error("Failed to bind " + desc + " to IP/port: " + strerror(errno)); if (type != Servertype::t_udp) if (listen (sock, 5) < 0) throw Error("Failed to listen to " + desc + " IP/port: " + strerror(errno)); msg ("Server for " + desc + " listening\n"); return (sock); } crossroads-2.65/xr/sys/socketclose.cc000066400000000000000000000005621141436564300177360ustar00rootroot00000000000000#include "sys" #include "../config/config" void socketclose (int fd) { PROFILE("socketclose"); if (fd > 2) { debugmsg ((Mstr("Closing socket ") + fd) + "\n"); if (config.fastclose()) { struct linger l; l.l_onoff = 1; l.l_linger = 2; setsockopt (fd, SOL_SOCKET, SO_LINGER, &l, sizeof(l)); } shutdown(fd, SHUT_RDWR); close(fd); } } crossroads-2.65/xr/sys/str2parts.cc000066400000000000000000000013651141436564300173660ustar00rootroot00000000000000#include "sys" #include "config/config" vector str2parts (string const &s, char sep) { PROFILE("str2parts"); string str = s; size_t pos; vector parts; bool sep_is_first = false; while ( (pos = str.find_first_of(sep)) != string::npos) { if (!pos) { sep_is_first = true; parts.push_back(""); } else { sep_is_first = true; parts.push_back (str.substr(0, pos)); } str = str.substr(pos + 1); } if (str.length() > 0) parts.push_back (str); else if (sep_is_first) parts.push_back(""); /* ostringstream o; o << "str2parts: "; for (unsigned int i = 0; i < parts.size(); i++) o << "[" << parts[i] << "] "; o << "\n"; _debugmsg(o.str()); */ return (parts); } crossroads-2.65/xr/sys/strnstr.cc000066400000000000000000000011351141436564300171340ustar00rootroot00000000000000#include "sys" #ifndef HAVE_STRNSTR // [KK 2008-10-13] Got this from // http://opengrok.creo.hu/dragonfly/xref/src/lib/libc/string/strnstr.c // and it's of course for systems that don't have this lib function // themselves char *strnstr(const char *s, const char *find, size_t slen) { char c, sc; size_t len; if ((c = *find++) != '\0') { len = strlen(find); do { do { if (slen < 1 || (sc = *s) == '\0') return (0); --slen; ++s; } while (sc != c); if (len > slen) return (0); } while (strncmp(s, find, len) != 0); s--; } return ( (char*) s); } #endif crossroads-2.65/xr/sys/sys000066400000000000000000000050321141436564300156470ustar00rootroot00000000000000#ifndef _SYS_ #define _SYS_ /* System-wide includes, 'cuz I'm too lazy to repeat them throughout * the entire source tree. */ // C #include #include #ifdef HAVE_GETOPT_H #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef INADDR_NONE # define HAVE_INADDR_NONE #else # define INADDR_NONE 0xffffffff #endif // C++ #include #include #include #include #include #include #include /* Profiling support on/off */ #ifdef PROFILER # define PROFILE(x) Profiler local_prof(x) #else # define PROFILE(x) #endif /* Memory debugging on/off */ #ifdef MEMDEBUG # define MEM(x) x #else # define MEM(x) #endif /* If you fear that your malloc() / realloc() may have threading problems, * uncomment the following. It will cause mutex locks around the calls. */ // #define MISTRUST_MALLOC_THREADSAFE /* If you fear racing conditions in thread_create() then uncomment this. * BTW it would be really weird if thread_create() weren't thread-safe., so * defining this is very likely not necessary. */ // #define MISTRUST_THREAD_CREATE_THREADSAFE using namespace std; // This we need locally for msg(), debugmsg() #include "mstr/mstr" // This is for the Servertype of serversocket() #include "servertype/servertype" /* Messaging. Conditionals are defined as a macro to speed things up. */ void _msg (Mstr const &s); #define msg(x) if(config.verbose()) _msg(x) void _debugmsg (Mstr const &s); #define debugmsg(x) if (config.debug()) _debugmsg(x) void reportmsg (Mstr const &s); void warnmsg (Mstr const &s); void anymsg(Mstr const &s, ostream &o, string const &label); /* Other */ int serversocket (string addr, int port, string description, Servertype::Type t); bool ipmatch (struct in_addr addr, struct in_addr mask); void socketclose (int fd); vector str2parts (string const &s, char sep); void mt_srand(unsigned long s); unsigned long mt_rand(void); bool check_acl(string const &ipstr, struct in_addr ipaddr); int sysrun (string const &s); int maxtimeout(int a, int b); #ifndef HAVE_INET_ATON int inet_aton (char const *name, struct in_addr *addr); #endif #ifndef HAVE_STRNSTR char *strnstr (char const *s, char const *find, size_t slen); #endif #endif crossroads-2.65/xr/sys/sysrun.cc000066400000000000000000000010311141436564300167530ustar00rootroot00000000000000#include "sys" #include "config/config" int sysrun(string const &s) { int ret = system(s.c_str()); if (ret == -1) { warnmsg(Mstr("Failed to start command: ") + s + "\n"); return -1; } if (WIFEXITED(ret)) { int stat = WEXITSTATUS(ret); if (stat) warnmsg(Mstr("Command" ) + s + Mstr(" exited with status ") + Mstr(stat) + "\n"); else msg(Mstr("Command ") + s + Mstr(" terminated normally.\n")); return stat; } warnmsg(Mstr("Command ") + s + Mstr(" failed miserably!\n")); return ret; } crossroads-2.65/xr/sys/warnmsg.cc000066400000000000000000000003071141436564300170730ustar00rootroot00000000000000#include "sys" #include "config/config" #include "ThreadsAndMutexes/mutex/mutex" #include "mstr/mstr" #include "timestamp/timestamp" void warnmsg (Mstr const &s) { anymsg(s, cerr, "WARNING"); } crossroads-2.65/xr/timestamp/000077500000000000000000000000001141436564300162735ustar00rootroot00000000000000crossroads-2.65/xr/timestamp/desc.cc000066400000000000000000000005541141436564300175240ustar00rootroot00000000000000#include "timestamp" string Timestamp::desc() const { struct tm *tmp = localtime(&tv.tv_sec); char buf[80]; sprintf (buf, "%4.4d-%2.2d-%2.2d %2.2d:%2.2d:%2.2d,%3.3d", tmp->tm_year + 1900, tmp->tm_mon + 1, tmp->tm_mday, tmp->tm_hour, tmp->tm_min, tmp->tm_sec, int(tv.tv_usec / 1000)); return buf; } crossroads-2.65/xr/timestamp/elapsed.cc000066400000000000000000000004071141436564300202200ustar00rootroot00000000000000#include "timestamp" double Timestamp::elapsed() const { struct timeval end; gettimeofday(&end, 0); double usec = ( ((double)end.tv_sec * 1000000 + end.tv_usec) - ((double)tv.tv_sec * 1000000 + tv.tv_usec) ); return usec / 1000000; } crossroads-2.65/xr/timestamp/timestamp000066400000000000000000000003551141436564300202240ustar00rootroot00000000000000#ifndef _TIMESTAMP_ #define _TIMESTAMP_ #include "sys/sys" class Timestamp { public: Timestamp(); Timestamp(int sec_since_epoch); double elapsed() const; string desc() const; private: struct timeval tv; }; #endif crossroads-2.65/xr/timestamp/timestamp1.cc000066400000000000000000000001131141436564300206610ustar00rootroot00000000000000#include "timestamp" Timestamp::Timestamp() { gettimeofday(&tv, 0); } crossroads-2.65/xr/timestamp/timestamp2.cc000066400000000000000000000001711141436564300206660ustar00rootroot00000000000000#include "timestamp" Timestamp::Timestamp(int sec_since_epoch) { tv.tv_sec = sec_since_epoch; tv.tv_usec = 0; } crossroads-2.65/xr/webinterface/000077500000000000000000000000001141436564300167265ustar00rootroot00000000000000crossroads-2.65/xr/webinterface/answer.cc000066400000000000000000000346351141436564300205470ustar00rootroot00000000000000#include "webinterface" #include "balancer/balancer" static void stop_backend_thread(pthread_t id) { Threadinfo info = Threadlist::info(id); msg((Mstr("Stopping thread ") + id) + (Mstr(" (backend socket ") + info.backendfd()) + (Mstr(", client socket ") + info.clientfd()) + ")\n"); socketclose(info.backendfd()); socketclose(info.clientfd()); Threadlist::deregister(id); } static unsigned str2uns (string const &s, string const &desc) { unsigned ret; if (sscanf (s.c_str(), "%u", &ret) < 1) throw Error("Bad " + desc); return (ret); } static double str2dbl (string const &s, string const &desc) { double ret; if (sscanf (s.c_str(), "%lf", &ret) < 0) throw Error("Bad " + desc); return (ret); } static pthread_t str2threadid (string const &s, string const &desc) { pthread_t ret; long long val; int convret; if (s[0] == '0' && (s[1] == 'x' || s[1] == 'X')) convret = sscanf(s.c_str() + 2, "%llx", &val); else convret = sscanf(s.c_str(), "%lld", &val); if (convret < 1) throw Error("Bad " + desc); memcpy (&ret, &val, sizeof(ret)); return (ret); } static unsigned backendindex (string const &s) { unsigned ret; ret = str2uns (s, "back end index"); if (ret >= balancer.nbackends()) throw Error("Back end index out of range"); return (ret); } static unsigned headerindex (string const &s) { unsigned ret; ret = str2uns (s, "header index"); if (ret >= config.nserverheaders()) throw Error("Server header index out of range"); return (ret); } bool str2bool (string const &s, string const &desc) { int i; bool ret; if (sscanf (s.c_str(), "%d", &i) > 0) ret = (i != 0); else if (s == "on" || s == "yes" || s == "true") ret = true; else if (s == "off" || s == "no" || s == "false") ret = false; else throw Error("Bad " + desc + " switch '" + s + "'"); return (ret); } string decode (string const &s) { string ret; for (char const *cp = s.c_str(); cp && *cp;) { if (*cp == '%') { int v; cp++; if (sscanf (cp, "%2x", &v)) { ret += static_cast(v); cp += 2; }else { ret += '%'; } } else if (*cp == '+') { ret += ' '; } else { ret += *cp; cp++; } } // debugmsg ("Decoded: '" + s + "' into '" + ret + "'\n"); return (ret); } void Webinterface::answer(Httpbuffer req) { if (req.requestmethod() != Httpbuffer::m_get) throw Error("Only request method GET supported"); string uri = req.requesturi(); // Status overview if (uri == "/") { answer_status(); return; } // XSLT request if (uri == "/xslt") { answer_xslt(); return; } if (uri[0] == '/') uri = uri.substr(1); vector parts = str2parts (uri, '/'); for (unsigned i = 0; i < parts.size(); i++) parts[i] = decode(parts[i]); // server/buffersize/VALUE if (parts.size() == 3 && parts[0] == "server" && parts[1] == "buffersize") { unsigned sz = str2uns (parts[2], "buffer size"); if (sz < 1) throw Error("Buffer size may not be less than 1"); config.buffersize(sz); answer_status(); return; } // /server/maxconnections/ // /server/maxconnections/NUMBER if (parts.size() == 3 && parts[0] == "server" && parts[1] == "maxconnections") { unsigned num = 0; if (parts[2] != "") num = str2uns (parts[2], "server weight"); config.maxconn(num); answer_status(); return; } // /server/addxrversion/BOOLEAN if (parts.size() == 3 && parts[0] == "server" && parts[1] == "addxrversion") { config.addxrversion (str2bool (parts[2], "addxrversion")); answer_status(); return; } // /server/addxforwardedfor/BOOLEAN if (parts.size() == 3 && parts[0] == "server" && parts[1] == "addxforwardedfor") { config.addxforwardedfor (str2bool (parts[2], "addxforwardedfor")); answer_status(); return; } // /server/stickyhttp/BOOLEAN if (parts.size() == 3 && parts[0] == "server" && parts[1] == "stickyhttp") { config.stickyhttp (str2bool(parts[2], "stickyhttp")); answer_status(); return; } // /server/replacehostheader/BOOLEAN if (parts.size() == 3 && parts[0] == "server" && parts[1] == "replacehostheader") { config.replacehostheader (str2bool(parts[2], "replacehostheader")); answer_status(); return; } // /server/newheader/NEWHEADER if (parts.size() == 3 && parts[0] == "server" && parts[1] == "newheader") { config.addserverheader(parts[2]); answer_status(); return; } // /server/changeheader/NR // /server/changeheader/NR/VALUE if (parts.size() == 4 && parts[0] == "server" && parts[1] == "changeheader") { unsigned ind = headerindex(parts[2]); if (parts[3] == "") config.removeserverheader(ind); else config.changeserverheader(ind, parts[3]); answer_status(); return; } // /server/verbose/BOOLEAN if (parts.size() == 3 && parts[0] == "server" && parts[1] == "verbose") { config.verbose(str2bool(parts[2], "verbose")); answer_status(); return; } // /server/debug/VERBOSE if (parts.size() == 3 && parts[0] == "server" && parts[1] == "debug") { config.debug(str2bool(parts[2], "debug")); answer_status(); return; } // /server/logtrafficdir // /server/logtrafficdir/VALUE if (parts.size() == 3 && parts[0] == "server" && parts[1] == "logtrafficdir") { config.dumpdir(parts[2]); answer_status(); return; } // /server/clientreadtimeout // /server/clientreadtimeout/NUMBER if (parts.size() == 3 && parts[0] == "server" && parts[1] == "clientreadtimeout") { unsigned num = 0; if (parts[2] != "") num = str2uns (parts[2], "client read timeout"); config.client_read_timeout(num); answer_status(); return; } // /server/clientwritetimeout // /server/clientwritetimeout/NUMBER if (parts.size() == 3 && parts[0] == "server" && parts[1] == "clientwritetimeout") { unsigned num = 0; if (parts[2] != "") num = str2uns (parts[2], "client write timeout"); config.client_write_timeout(num); answer_status(); return; } // /server/backendreadtimeout // /server/backendreadtimeout/NUMBER if (parts.size() == 3 && parts[0] == "server" && parts[1] == "backendreadtimeout") { unsigned num = 0; if (parts[2] != "") num = str2uns (parts[2], "back end read timeout"); config.backend_read_timeout(num); answer_status(); return; } // /server/backendwritetimeout // /server/backendwritetimeout/NUMBER if (parts.size() == 3 && parts[0] == "server" && parts[1] == "backendwritetimeout") { unsigned num = 0; if (parts[2] != "") num = str2uns (parts[2], "back end write timeout"); config.backend_write_timeout(num); answer_status(); return; } // /server/dnscachetimeout // /server/dnscachetimeout/NUMBER if (parts.size() == 3 && parts[0] == "server" && parts[1] == "dnscachetimeout") { unsigned num = 0; if (parts[2] != "") num = str2uns (parts[2], "DNS cache timeout"); config.dnscachetimeout(num); answer_status(); return; } // /server/wakeupinterval // /server/wakeupinterval/NUMBER if (parts.size() == 3 && parts[0] == "server" && parts[1] == "wakeupinterval") { unsigned num = 0; if (parts[2] != "") num = str2uns (parts[2], "wakeup interval"); if (num) config.checkupsec(0); config.wakeupsec(num); answer_status(); return; } // /server/checkupinterval // /server/checkupinterval/NUMBER if (parts.size() == 3 && parts[0] == "server" && parts[1] == "checkupinterval") { unsigned num = 0; if (parts[2] != "") num = str2uns (parts[2], "checkup interval"); if (num) config.wakeupsec(0); config.checkupsec(num); answer_status(); return; } // /server/timeinterval/SECS if (parts.size() == 3 && parts[0] == "server" && parts[1] == "timeinterval") { unsigned num = str2uns(parts[2], "time interval"); if (num < 1) throw Error("Time interval may not be less than 1"); config.connrate_time(num); answer_status(); return; } // /server/hardmaxconnrate/NUMBER if (parts.size() == 3 && parts[0] == "server" && parts[1] == "hardmaxconnrate") { config.hardmaxconnrate(str2uns(parts[2], "hard maxconnrate")); answer_status(); return; } // /server/softmaxconnrate/NUMBER if (parts.size() == 3 && parts[0] == "server" && parts[1] == "softmaxconnrate") { config.softmaxconnrate(str2uns(parts[2], "soft maxconnrate")); answer_status(); return; } // /server/defertime/NUMBER if (parts.size() == 3 && parts[0] == "server" && parts[1] == "defertime") { unsigned num = str2uns(parts[2], "defer time"); if (num < 1) throw Error("Defer time may not be less than 1"); config.defertime(num); answer_status(); return; } // /server/closesocketsfast/BOOL if (parts.size() == 3 && parts[0] == "server" && parts[1] == "closesocketsfast") { config.fastclose(str2bool(parts[2], "close sockets fast")); answer_status(); return; } // /server/addallowfrom/ADDRESS if (parts.size() == 3 && parts[0] == "server" && parts[1] == "addallowfrom") { config.addallow(parts[2]); answer_status(); return; } // /server/allowfrom/NR // /server/allowfrom/NR/ADDRESS if (parts.size() == 4 && parts[0] == "server" && parts[1] == "allowfrom") { unsigned ind = str2uns(parts[2], "allowfrom index"); if (parts[3] != "") config.changeallow(parts[3], ind); else config.deleteallow(ind); answer_status(); return; } // /server/adddenyfrom/ADDRESS if (parts.size() == 3 && parts[0] == "server" && parts[1] == "adddenyfrom") { config.adddeny(parts[2]); answer_status(); return; } // /server/denyfrom/NR // /server/denyfrom/NR/ADDRESS if (parts.size() == 4 && parts[0] == "server" && parts[1] == "denyfrom") { unsigned ind = str2uns(parts[2], "denyfrom index"); if (parts[3] != "") config.changedeny(parts[3], ind); else config.deletedeny(ind); answer_status(); return; } // /server/hardmaxconnexcess/ // /server/hardmaxconnexcess/PROGRAM if (parts.size() == 3 && parts[0] == "server" && parts[1] == "hardmaxconnexcess") { config.hardmaxconnexcess(parts[2]); answer_status(); return; } // /server/softmaxconnexcess/ // /server/softmaxconnexcess/PROGRAM if (parts.size() == 3 && parts[0] == "server" && parts[1] == "softmaxconnexcess") { config.softmaxconnexcess(parts[2]); answer_status(); return; } // /server/onstart/ // /server/onstart/PROGRAM if (parts.size() == 3 && parts[0] == "server" && parts[1] == "onstart") { config.onstart(parts[2]); answer_status(); return; } // /server/onend/ // /server/onend/PROGRAM if (parts.size() == 3 && parts[0] == "server" && parts[1] == "onend") { config.onend(parts[2]); answer_status(); return; } // /server/onfail/ // /server/onfail/PROGRAM if (parts.size() == 3 && parts[0] == "server" && parts[1] == "onfail") { config.onfail(parts[2]); answer_status(); return; } // /server/addbackend/IP:PORT if (parts.size() == 3 && parts[0] == "server" && parts[1] == "addbackend") { vector address = str2parts(parts[2], ':'); if (address.size() != 2) throw Error("When adding back ends, the address must be IP:PORT"); Backend b; b.server(address[0]); b.port(str2uns(address[1], "back end port")); balancer.addbackend(b, false, false, false); answer_status(); return; } // /server/deletebackend/NR if (parts.size() == 3 && parts[0] == "server" && parts[1] == "deletebackend") { balancer.deletebackend(backendindex(parts[2])); answer_status(); return; } // /server/type/http, /server/type/tcp if (parts.size() == 3 && parts[0] == "server" && parts[1] == "type") { config.stype(parts[2]); answer_status(); return; } // /backend/NR/weight/NUMBER if (parts.size() == 4 && parts[0] == "backend" && parts[2] == "weight") { unsigned ind = backendindex(parts[1]); unsigned num = str2uns (parts[3], "back end weight"); if (num < 1) throw Error("Weight may not be less than 1"); balancer.backend(ind).weight(num); answer_status(); return; } // /backend/NR/maxconnections/NUMBER if (parts.size() == 4 && parts[0] == "backend" && parts[2] == "maxconnections") { unsigned ind = backendindex(parts[1]); unsigned num = str2uns (parts[3], "back end maxconnections"); balancer.backend(ind).maxconn(num); answer_status(); return; } // /backend/NR/loadavg/FLOAT if (parts.size() == 4 && parts[0] == "backend" && parts[2] == "loadavg") { unsigned ind = backendindex(parts[1]); double fnum = str2dbl (parts[3], "back end loadavg"); balancer.backend(ind).loadavg(fnum); answer_status(); return; } // /backend/NR/hostmatch/EXPRESSION // /backend/NR/hostmatch if (parts.size() == 4 && parts[0] == "backend" && parts[2] == "hostmatch") { unsigned ind = backendindex(parts[1]); balancer.backend(ind).hostmatch(parts[3]); answer_status(); return; } // /backend/NR/urlmatch/EXPRESSION // /backend/NR/urlmatch if (parts.size() == 4 && parts[0] == "backend" && parts[2] == "urlmatch") { unsigned ind = backendindex(parts[1]); balancer.backend(ind).urlmatch(parts[3]); answer_status(); return; } // /backend/NR/up/BOOL if (parts.size() == 4 && parts[0] == "backend" && parts[2] == "up") { unsigned ind = backendindex(parts[1]); balancer.backend(ind).up(str2bool(parts[3], "up")); answer_status(); return; } // /backend/NR/backendcheck/ // /backend/NR/backendcheck/VALUE if (parts.size() == 4 && parts[0] == "backend" && parts[2] == "backendcheck") { unsigned ind = backendindex(parts[1]); BackendCheck check; if (parts[3] != "") check.parse(parts[3]); balancer.backend(ind).backendcheck(check); answer_status(); return; } // /backend/NR/stopconnections if (parts.size() == 3 && parts[0] == "backend" && parts[2] == "stopconnections") { unsigned ind = backendindex(parts[1]); bool done = false; while (!done) { done = true; for (Threadmap::iterator it = Threadlist::map().begin(); it != Threadlist::map().end(); it++) { pthread_t thread_id = (*it).first; Threadinfo thread_info = (*it).second; if (thread_info.backend() == (int)ind) { stop_backend_thread(thread_id); done = false; break; } } } answer_status(); return; } // /thread/kill/VALUE if (parts.size() == 3 && parts[0] == "thread" && parts[1] == "kill") { pthread_t id = str2threadid(parts[2], "thread id"); stop_backend_thread(id); answer_status(); return; } throw Error("No action for URI '/" + uri + "'"); } crossroads-2.65/xr/webinterface/answerblob.cc000066400000000000000000000006041141436564300213730ustar00rootroot00000000000000#include "webinterface" void Webinterface::answer_blob (string const &blob) { ostringstream cl; cl << blob.size(); string resp = static_cast ("HTTP/1.0 200 OK\r\n") + "Content-Type: text/xml\r\n" "Connection: close\r\n" "Content-Length: " + cl.str() + "\r\n" "\r\n" + blob; Netbuffer buf(resp); buf.netwrite(cfd, config.client_write_timeout()); } crossroads-2.65/xr/webinterface/answerstatus.cc000066400000000000000000000154311141436564300220040ustar00rootroot00000000000000#include "webinterface" #include "balancer/balancer" void Webinterface::answer_status() { string xml = "\n" "\n" "\n"; ostringstream o; o << "\n" "\n" "\n" " \n" " " << VER << "\n" " " << DISTSITE << "\n" " \n" " \n" "
" << config.sipaddr() << ":" << config.sport() << "
\n" " " << config.stypestr() << "\n" " " << config.client_read_timeout() << "\n" " " << config.client_write_timeout() << "\n" " " << config.backend_read_timeout() << "\n" " " << config.backend_write_timeout() << "\n" " " << config.dispatchmodestr() << "\n" " " << config.removereservations() << "\n" " " << config.webinterfaceip() << ':' << config.webinterfaceport() << "\n" " " << config.dnscachetimeout() << "\n" " " << config.buffersize() << "\n" " " << config.fastclose() << "\n" " " << config.onstart() << "\n" " " << config.onend() << "\n" " " << config.onfail() << "\n" " \n" " " << config.wakeupsec() << "\n" " " << config.checkupsec() << "\n" " \n" " \n" " " << config.verbose() << "\n" " " << config.debug() << "\n" " " << config.dumpdir() << "\n" " \n" " \n" " " << config.maxconn() << "\n" " " << config.connrate_time() << "\n" " " << config.hardmaxconnrate() << "\n" " " << config.softmaxconnrate() << "\n" " " << config.defertime() << "\n" " " << config.hardmaxconnexcess() << "\n" " " << config.softmaxconnexcess() << "\n" " \n" " \n" " \n"; for (unsigned i = 0; i < config.nallow(); i++) o << " \n" " " << i << "\n" " " << inet_ntoa(config.allow(i)) << "\n" " \n"; o << " \n" " \n"; for (unsigned i = 0; i < config.ndeny(); i++) o << " \n" " " << i << "\n" " " << inet_ntoa(config.deny(i)) << "\n" " \n"; o << " \n" " \n" " \n" " " << config.addxrversion() << "\n" " " << config.addxforwardedfor() << "\n" " " << config.stickyhttp() << "\n" " " << config.replacehostheader() << "\n" " \n" ; for (unsigned i = 0; i < config.nserverheaders(); i++) o << " \n" " " << i << "\n" "
" << config.serverheader(i) << "
\n" "
\n" ; o << "
\n" "
\n" " " << balancer.nbackends() << "\n" " " << balancer.terminate() << "\n" " " << balancer.connections() << "\n" "
\n" ; for (unsigned i = 0; i < balancer.nbackends(); i++) o << " \n" " " << i << "\n" "
" << balancer.backend(i).description() << "
\n" " " << balancer.backend(i).weight() << "\n" " " << balancer.backend(i).maxconn() << "\n" " " << balancer.backend(i).loadavg() << "\n" " " << balancer.backend(i).upstr() << "\n" " " << balancer.backend(i).livestr() << "\n" " " << balancer.backend(i).availablestr() << "\n" " " << balancer.backend(i).connections() << "\n" " " << balancer.backend(i).connecterrors() << "\n" " " << balancer.backend(i).bytesserved() << "\n" " " << balancer.backend(i).clientsserved() << "\n" " " << balancer.backend(i).hostmatch() << "\n" " " << balancer.backend(i).urlmatch() << "\n" " " << balancer.backend(i).backendcheck().setting() << "\n" "
\n" ; o << " \n" " \n"; unsigned nthreads = 0, max_open_files; struct rlimit rl; if (getrlimit(RLIMIT_NOFILE, &rl)) throw Error("Failed to get limit for open files"); max_open_files = unsigned(rl.rlim_cur); for (Threadmap::iterator it = Threadlist::map().begin(); it != Threadlist::map().end(); it++) { nthreads++; pthread_t thread_id = (*it).first; Threadinfo thread_info = (*it).second; o << " \n" " " << thread_id << "\n" " " << thread_info.desc() << "\n" " " << thread_info.backend() << "\n" "
"; if (thread_info.backend() >= 0) o << balancer.backend(thread_info.backend()).description(); o << "
\n" " " << thread_info.timestamp().elapsed() << "\n" " " << inet_ntoa(thread_info.clientip()) << "\n" "
\n"; } /* The estimate of the number of used fd's is: * Base is 5 (stdin/stdout/stderr, listen-fd for service, listen-fd * for webinterface * Plus 2 x #-threads (1 to client, 1 to backend) * There will be fd's in use for shared libs etc., but we don't see * those.. */ o << "
\n" " " << nthreads << "\n" " " << nthreads * 2 + 5 << "\n" " " << max_open_files << "\n" "
\n"; o << "
\n\n"; answer_blob (o.str()); } crossroads-2.65/xr/webinterface/answerxslt.cc000066400000000000000000000001701141436564300214450ustar00rootroot00000000000000#include "webinterface" #include "../build/status.xslt.h" void Webinterface::answer_xslt() { answer_blob (XSLT); } crossroads-2.65/xr/webinterface/execute.cc000066400000000000000000000035211141436564300207000ustar00rootroot00000000000000#include "webinterface" #include "balancer/balancer" void Webinterface::execute() { Threadlist::desc("Web interface"); // Create the server socket, or retry infinitely. // This is maybe a too big precaution - previous xr's are responsible // for killing off their web interfaces. But we don't want a new xr // start to croak and cause downtime just because the web interface, // so we just retry for a bit. while (true) { try { msg ("Starting web interface\n"); sfd = serversocket (config.webinterfaceip(), config.webinterfaceport(), "web interface", Servertype::t_tcp); } catch (Error const &e) { cerr << e.what() << "(webinterface, retrying in a sec)\n"; sleep (1); continue; } break; } msg ((Mstr("Web interface started on socket ") + sfd) + "\n"); while (!balancer.terminate()) { try { Fdset fdset(0); fdset.add (sfd); fdset.wait_r(); if (fdset.readable(sfd)) { int size; struct sockaddr_in clname; if ( (cfd = accept (sfd, (struct sockaddr *) &clname, (socklen_t *)&size)) < 0 ) warnmsg(Mstr("Web interface: failed to accept " "network connection: ") + Mstr(strerror(errno)) + "\n"); else { serve (); socketclose(cfd); } } } catch (Error const &e) { cerr << e.what() << " (webinterface)\n"; ostringstream m; m << "

Web interface error

\n" "XR's web interface could not handle your request.

\n" "" << e.what() << "\n"; ostringstream o; o << "HTTP/1.0 500 Server Error\r\n" "X-Reason: " << e.what() << "\r\n" "Content-Length: " << m.str().length() << "\r\n" "\r\n" << m.str(); Netbuffer buf(o.str()); buf.netwrite(cfd, config.client_write_timeout()); socketclose(cfd); } } msg ("Web interface stopping.\n"); socketclose(sfd); } crossroads-2.65/xr/webinterface/serve.cc000066400000000000000000000005061141436564300203620ustar00rootroot00000000000000#include "webinterface" void Webinterface::serve () { msg ((Mstr("Webinterface serving request on client fd ") + cfd) + "\n"); Httpbuffer clientrequest; clientrequest.netread(cfd, config.client_read_timeout()); msg ("Webinterface request: " + clientrequest.firstline() + "\n"); answer(clientrequest); } crossroads-2.65/xr/webinterface/webinterface000066400000000000000000000010321141436564300213030ustar00rootroot00000000000000#ifndef _WEBINTERFACE_ #define _WEBINTERFACE_ #include "sys/sys" #include "ThreadsAndMutexes/thread/thread" #include "ThreadsAndMutexes/threadlist/threadlist" #include "fdset/fdset" #include "httpbuffer/httpbuffer" class Webinterface: public Thread { public: Webinterface() { cfd = 0; sfd = 0; } virtual ~Webinterface(); void execute(); private: void serve(); void answer(Httpbuffer r); void answer_status(); void answer_xslt(); void answer_blob (string const &b); int cfd, sfd; }; #endif crossroads-2.65/xr/webinterface/webinterface1.cc000066400000000000000000000002411141436564300217510ustar00rootroot00000000000000#include "webinterface" Webinterface::~Webinterface() { if (cfd) { msg ((Mstr("Stopping web interface socket ") + sfd) + "\n"); socketclose(sfd); } } crossroads-2.65/xrctl/000077500000000000000000000000001141436564300147735ustar00rootroot00000000000000crossroads-2.65/xrctl/xrctl000066400000000000000000000560701141436564300160620ustar00rootroot00000000000000#!/usr/bin/perl use strict; use Getopt::Std; use Term::ANSIColor qw(:constants); # Versioning my $VER = "__VER__"; # -------------------------------------------------------------------------- # xrctl: used to start, stop, restart etc. the XR balancer. # Default configuration file to read and default logging facility my $default_conf = '/etc/xrctl.xml'; my $default_logger = 'logger'; my $default_prefixtimestamp = undef; # Default settings, must match xr's defaults my $default_dispatchmode = 'least-connections'; my $default_maxconnections = 0; my $default_client_timeout = 30; my $default_client_read_timeout = 30; my $default_client_write_timeout = 30; my $default_backend_timeout = 30; my $default_backend_read_timeout = 3; my $default_backend_write_timeout = 3; my $default_buffersize = 2048; my $default_wakeupinterval = 5; my $default_checkupinterval = 0; my $default_weight = 1; my $default_hostmatch = '.'; my $default_urlmatch = '.'; my $default_backendcheck = 'connect::'; my $default_timeinterval = 1; my $default_hardmaxconnrate = 0; my $default_softmaxconnrate = 0; my $default_defertime = 500000; my $default_hardmaxconnexcess = 0; my $default_softmaxconnexcess = 0; my $default_dnscachetimeout = 3600; # Cmd line flags my %opts = (v => 0, c => $default_conf, ); usage() unless (getopts('vc:', \%opts)); usage() if ($#ARGV == -1); # Load configuration my $xml; open (my $if, $opts{c}) or die ("Cannot read configuration $opts{c}: $!\n"); while (my $line = <$if>) { $xml .= $line; } close ($if); my $xp = new XMLParser($xml); # Load up the system config. my %sysconf; my $sysblock = $xp->data('system'); if ($sysblock ne '') { my $sysxp = new XMLParser($xp->data('system')); for my $tag qw(pscmd logger uselogger logdir maxlogsize loghistory path prefixtimestamp) { $sysconf{$tag} = $sysxp->data($tag); msg("System config $tag: $sysconf{$tag}\n") if ($sysconf{$tag} ne ''); } if ($sysconf{path} eq '') { msg ("No path in configuration, using environment\n"); $sysconf{path} = $ENV{PATH}; } if ($sysconf{logger} ne 'logger') { msg ("Using non-default logger\n"); $default_logger = $sysconf{logger}; } if ($sysconf{pscmd} eq '') { $sysconf{pscmd} = xfind_bin('ps'); if (`uname` =~ /SunOS/) { $sysconf{pscmd} .= ' -ef pid,comm'; } else { $sysconf{pscmd} .= ' ax -o pid,command'; } } msg ("PS command: $sysconf{pscmd}\n"); if ($sysconf{prefixtimestamp}) { $default_prefixtimestamp = 1 if istrue($sysconf{prefixtimestamp}); } else { $default_prefixtimestamp = 1 if (!istrue($sysconf{uselogger}) or !find_bin('logger')); } msg ("Log lines will be prefixed with a timestamp\n") if ($default_prefixtimestamp); } # Load up the service names. my @service_name; for (my $i = 0; ; $i++) { my $serviceblock = $xp->data('service', $i) or last; my $servicexp = new XMLParser($serviceblock) or die ("No blocks in configuration\n"); my $name = $servicexp->data('name') or die (" block lacks \n"); push (@service_name, $name); msg ("Service '$name' seen\n"); } die ("No service blocks seen\n") if ($#service_name == -1); # Take action $|++; my $cmd = shift(@ARGV); @ARGV = @service_name if ($#ARGV == -1); msg ("Acting on command: $cmd\n"); if ($cmd eq 'list') { cmd_list(@ARGV); } elsif ($cmd eq 'start') { cmd_start(@ARGV); } elsif ($cmd eq 'stop') { cmd_stop(@ARGV); } elsif ($cmd eq 'kill') { cmd_kill(@ARGV); } elsif ($cmd eq 'force') { cmd_force(@ARGV); } elsif ($cmd eq 'stopstart') { cmd_stopstart(@ARGV); } elsif ($cmd eq 'killstart') { cmd_killstart(@ARGV); } elsif ($cmd eq 'status') { cmd_status(@ARGV); } elsif ($cmd eq 'rotate') { cmd_rotate(@ARGV); } elsif ($cmd eq 'configtest') { cmd_configtest(@ARGV); } elsif ($cmd eq 'generateconfig') { cmd_generateconfig(@ARGV); } else { die ("Missing or unknown action $cmd\n"); } # -------------------------------------------------------------------------- # Top level commands sub cmd_list { for my $s (@_) { print ("Service: $s\n"); print (" Process name : ", process_name($s), "\n"); print (" Logging : ", log_file($s), "\n"); print (" XR command : ", xr_command($s), "\n"); } } sub cmd_start { for my $s (@_) { die ("Cannot start service $s, already running\n") if (is_running($s)); } for my $s (@_) { print ("Service $s: "); start_service($s); print ("started\n"); } } sub cmd_stop { my @pids; for my $s (@_) { my @p = is_running($s) or die ("Cannot stop service $s, not running\n"); print ("Service $s: running at @p\n"); push (@pids, @p); } for my $p (@pids) { msg ("About to stop PID: '$p'\n"); } kill (15, @pids) if ($#pids > -1); print ("Services @_: stopped\n"); } sub cmd_kill { my @pids; for my $s (@_) { my @p = is_running($s) or die ("Cannot stop service $s, not running\n"); print ("Service $s: running at @p\n"); push (@pids, @p); } for my $p (@pids) { msg ("About to kill PID: '$p'\n"); } kill (9, @pids) if ($#pids > -1); print ("Services @_: killed\n"); } sub cmd_force { for my $s (@_) { print ("Service $s: "); if (is_running($s)) { print ("already running\n"); } else { start_service($s); print ("started\n"); } } } sub cmd_stopstart { my @pids; for my $s (@_) { my @p = is_running($s) or die ("Cannot stopstart service $s, not running\n"); push (@pids, @p); } print ("Service(s) @_: "); kill (15, @pids) if ($#pids > -1); print ("stoppped\n"); for my $s (@_) { print ("Service $s: "); start_service($s); print ("started\n"); } } sub cmd_killstart { my @pids; for my $s (@_) { my @p = is_running($s) or die ("Cannot killstart service $s, not running\n"); push (@pids, @p); } print ("Service(s) @_: "); kill (9, @pids) if ($#pids > -1); print ("killed\n"); for my $s (@_) { print ("Service $s: "); start_service($s); print ("started\n"); } } sub cmd_status { for my $s (@_) { print ("Service $s: "); print (BOLD, RED, "not ", RESET) unless (is_running($s)); print ("running\n"); } } sub cmd_rotate { if (istrue($sysconf{uselogger}) and find_bin($default_logger)) { print ("Rotating not necessary, logging goes via logger\n"); return; } for my $s (@_) { print ("Service $s: "); my $f = log_file($s); print ("log file $f, "); if (substr($f, 0, 1) ne '>') { print ("not a file\n"); next; } $f = substr($f, 1); if (! -f $f) { print ("not present\n"); next; } if ((stat($f))[7] < $sysconf{maxlogsize}) { print ("no rotation necessary\n"); next; } unlink("$f.$sysconf{loghistory}", "$f.$sysconf{loghistory}.bz2", "$f.$sysconf{loghistory}.gz"); for (my $i = $sysconf{loghistory} - 1; $i >= 0; $i--) { my $src = "$f.$i"; my $dst = sprintf("$f.%d", $i + 1); rename($src, $dst); rename("$src.bz2", "$dst.bz2"); rename("$src.gz", "$dst.gz"); } rename($f, "$f.0"); print("rotated, "); my $zipper; if ($zipper = find_bin('bzip2') or $zipper = find_bin('gzip')) { system ("$zipper $f.0"); print ("zipped, "); } if (my @p = is_running($s)) { kill (15, @p) if ($#p > -1); print ("stopped, "); start_service($s); print ("started, "); } print ("done\n"); } } sub cmd_configtest { for my $s (@_) { print ("Service $s: "); my $cmd = xr_command($s) . ' --tryout'; if (system ($cmd)) { print ("FAILED, command: $cmd\n"); } else { print ("configuration ok\n"); } } } sub cmd_generateconfig { print ("\n", "\n", "\n", " \n", " \n"); for my $k (sort (keys (%sysconf))) { print (" <$k>$sysconf{$k}\n") if ($sysconf{$k} ne ''); } print (" \n"); for my $s (@_) { generateconfig($s); } print ("\n"); } # -------------------------------------------------------------------------- # Small utility functions # Show usage and die. sub usage() { die <<"ENDUSAGE"; This is xrctl V$VER, the control script for XR, the Crossroads Load Balancer. Usage: xrctl [-FLAGS] action [SERVICE ...] Flags are: -v increases verbosity -c CONFIG specifies the configuration, default $default_conf Actions are: configtest validates the configuration list shows the xr command line start starts the service(s) if they are not yet running stop gracefully stops the service(s) if they are running kill brutally kills the service(s), interrupting all connections force forces the service(s) up: starts if not running stopstart gracefully restarts the service(s) if they are running killstart brutally restarts status shows which services are running rotate rotates logs of the service(s) generateconfig queries running XR's for the current configuration and shows it in the format of $default_conf The SERVICES following an action are the services stated in the configuration. When absent, all configured services are handled. ENDUSAGE } # Is a service running? sub is_running { my $s = shift; open (my $if, "$sysconf{pscmd} |") or die ("Cannot start '$sysconf{pscmd}': $!\n"); my @ret; while (my $line = <$if>) { chomp ($line); $line =~ s/^\s*//; my ($pid, $cmd) = split(/\s+/, $line); # msg("Command '$cmd' at pid '$pid' (line $line)\n"); if ($cmd =~ /^xr-$s/) { push (@ret, $pid); msg ("Candidate PID: $pid\n"); } } return (@ret); } # Unconditionally start a given service sub start_service { my $s = shift; my $xr = xfind_bin('xr'); my @args = xr_cmdarr($s); my $logstr = log_file($s); my $logtype = substr($logstr, 0, 1); my $logout = substr($logstr, 1); # Try out the command line my $cmdline = xr_command($s) . ' --tryout'; system ($cmdline) and die ("Command line '$cmdline' fails to parse\n"); my $pid = fork(); die ("Cannot fork: $!\n") unless (defined ($pid)); return if ($pid > 0); # Child branch open (STDIN, '/dev/null') or die ("Cannot read /dev/null: $!\n"); if ($logtype eq '|') { open (STDOUT, "|$logout") or die ("Cannot pipe stdout to $logout: $!\n"); open (STDERR, "|$logout") or die ("Cannot pipe stderr to $logout: $!\n"); } else { open (STDOUT, ">>$logout") or die ("Cannot append stdout to $logout: $!\n"); open (STDERR, ">>$logout") or die ("Cannot append stderr to $logout: $!\n"); } exec ({$xr} @args); exit (1); } # Verbose message. sub msg { return unless ($opts{v}); print (@_); } # Find a binary along the path sub find_bin { my $bin = shift; my @parts = split (/\s/, $bin); for my $d (split (/:/, $sysconf{path})) { if (-x "$d/$parts[0]" and -f "$d/$parts[0]") { msg ("Binary '$parts[0]' found as '$d/$parts[0]'\n"); $parts[0] = "$d/$parts[0]"; return (join (' ', @parts)); } } msg ("Binary '$bin' not found along $sysconf{path}\n"); return (undef); } sub xfind_bin { my $bin = shift; my $ret = find_bin ($bin) or die ("Binary '$bin' cannot be found along path '$sysconf{path}'\n"); return ($ret); } # Process name according to a service name sub process_name { my $service = shift; return ("xr-$service"); } # Log file according to a service name sub log_file { my $service = shift; my $logger = find_bin($default_logger); if (istrue($sysconf{uselogger}) and defined($logger)) { if ($default_logger eq 'logger') { return ("|$logger -t 'xr-$service'"); } else { $logger =~ s/\{service\}/$service/g; return ("|$logger"); } } else { return ('>' . $sysconf{logdir} . '/' . process_name($service) . '.log'); } } # XR command according to a service name as one string sub xr_command { my $service = shift; my @parts = xr_cmdarr($service); msg ("Command: @parts\n"); my $ret = xfind_bin('xr'); for (my $i = 1; $i <= $#parts; $i++) { my $sub = $parts[$i]; $sub =~ s/^\s+//; $sub =~ s/\s+$//; $sub = "'$sub'" if ($sub =~ /\s/); $ret .= ' ' . $sub; } msg ("Quoted command: $ret\n"); return ($ret); } # XR command according to a service name as an array, including ARGV[0] # pseudo-name sub xr_cmdarr { my $service = shift; my @cmd; push (@cmd, "xr-$service"); push (@cmd, '--prefix-timestamp') if ($default_prefixtimestamp); # Fetch the block for this service my $sp = xml_serviceparser($service) or die ("Failed to locate block for service '$service'\n"); # Service descriptions inside the block my $ss = xml_serverparser($sp); my $type = 'tcp'; $type = $ss->data('type') if ($ss->data('type')); my $addr = '0:10000'; $addr = $ss->data('address') if ($ss->data('address')); my $full = "$type:$addr"; push (@cmd, '--server', $full) if ($full ne 'tcp:0:10000'); # Flags that should go on the command line if the bool-tag is true my %boolflags = (closesocketsfast => '--close-sockets-fast', verbose => '--verbose', debug => '--debug', removereservations => '--remove-reservations'); # Handle general flags and boolflags push (@cmd, flag($ss, '--web-interface', 'webinterface', ''), flag($ss, '--dispatch-mode', 'dispatchmode', $default_dispatchmode), flag($ss, '--max-connections', 'maxconnections', $default_maxconnections), flag($ss, '--client-timeout', 'clienttimeout', $default_client_timeout), flag($ss, '--backend-timeout', 'backendtimeout', $default_backend_timeout), flag($ss, '--buffer-size', 'buffersize', $default_buffersize), flag($ss, '--wakeup-interval', 'wakeupinterval', $default_wakeupinterval), flag($ss, '--checkup-interval', 'checkupinterval', $default_checkupinterval), flag($ss, '--time-interval', 'timeinterval', $default_timeinterval), flag($ss, '--hard-maxconnrate', 'hardmaxconnrate', $default_hardmaxconnrate), flag($ss, '--soft-maxconnrate', 'softmaxconnrate', $default_softmaxconnrate), flag($ss, '--defer-time', 'defertime', $default_defertime), flag($ss, '--hard-maxconn-excess', 'hardmaxconnexcess', $default_hardmaxconnexcess), flag($ss, '--soft-maxconn-excess', 'softmaxconnexcess', $default_softmaxconnexcess), flag($ss, '--dns-cache-timeout', 'dnscachetimeout', $default_dnscachetimeout), flag($ss, '--onstart', 'onstart'), flag($ss, '--onend', 'onend'), flag($ss, '--onfail', 'onfail'), flag($ss, '--log-traffic-dir', 'logtrafficdir', '')); for my $k (sort (keys (%boolflags))) { push (@cmd, $boolflags{$k}) if (istrue($ss->data($k))); } # Timeouts when specified using separate tags my $t = $ss->data('clientreadtimeout'); if (defined($t)) { my $val = $t; $t = $ss->data('clientwritetimeout'); $val .= ":$t" if (defined($t)); push (@cmd, '--client-timeout', $val); } $t = $ss->data('backendreadtimeout'); if (defined($t)) { my $val = $t; $t = $ss->data('backendwritetimeout'); $val .= ":$t" if (defined($t)); push (@cmd, '--backend-timeout', $val); } # ACL's for (my $i = 0; ; $i++) { my $mask = $ss->data('allowfrom', $i) or last; push (@cmd, '--allow-from', $mask); } for (my $i = 0; ; $i++) { my $mask = $ss->data('denyfrom', $i) or last; push (@cmd, '--deny-from', $mask); } # HTTP goodies push (@cmd, '--add-xr-version') if ($ss->data('addxrversion') and istrue($ss->data('addxrversion'))); push (@cmd, '--add-x-forwarded-for') if ($ss->data('addxforwardedfor') and istrue($ss->data('addxforwardedfor'))); push (@cmd, '--sticky-http') if ($ss->data('stickyhttp') and istrue($ss->data('stickyhttp'))); push (@cmd, '--replace-host-header') if ($ss->data('replacehostheader') and istrue($ss->data('replacehostheader'))); for (my $i = 0; ; $i++) { my $h = $ss->data('header', $i) or last; push (@cmd, '--add-server-header', $h); } # The blocks for this service my $last_hostmatch = $default_hostmatch; my $last_urlmatch = $default_urlmatch; my $last_backendcheck = $default_backendcheck; for (my $i = 0; ; $i++) { my $bp = xml_backendparser($sp, $i) or last; # Handle host match my $hm = $bp->data('hostmatch'); if ($hm and $hm ne $last_hostmatch) { push (@cmd, '--host-match', $hm); } elsif ($hm eq '' and $last_hostmatch ne '') { push (@cmd, '--host-match', $default_hostmatch); } $last_hostmatch = $hm; # Handle url match my $um = $bp->data('urlmatch'); if ($um and $um ne $last_urlmatch) { push (@cmd, '--url-match', $um); } elsif ($um eq '' and $last_urlmatch ne '') { push (@cmd, '--url-match', $default_urlmatch); } $last_urlmatch = $um; # Handle back end checks my $bc = $bp->data('backendcheck'); if ($bc and $bc ne $last_backendcheck) { push (@cmd, '--backend-check', $bc); } elsif ($bc eq '' and $last_backendcheck ne '') { push (@cmd, '--backend-check', $default_backendcheck); } $last_backendcheck = $bc; # Get address, weight and max connections my $ad = $bp->data('address') or die ("Backend in service '$service' lacks

\n"); my $mx = $bp->data('maxconnections'); $mx = $default_maxconnections if (!$mx); $ad .= ":$mx"; my $wt = $bp->data('weight'); $wt = $default_weight if (!$wt); $ad .= ":$wt"; push (@cmd, '--backend', $ad); } # All done my @ret; # msg("Generated flags/arguments:\n"); for my $c (@cmd) { if ($c ne '') { push (@ret, $c); # msg (" $c"); } } # msg ("\n"); return (@ret); } # Prepare a flag for the command line if it is defined and if it is # not equal to the default sub flag { my ($parser, $longopt, $tag, $default) = @_; msg ("Flag tag $tag: ", $parser->data($tag), " (default: '$default')\n"); if ($parser->data($tag) ne '' && $parser->data($tag) ne $default) { msg ("Flag values meaningful: ", $longopt, ' ', $parser->data($tag), "\n"); return ($longopt, $parser->data($tag)); } return (undef); } # Is a boolean value true sub istrue { my $val = shift; return (1) if ($val eq 'true' or $val eq 'on' or $val eq 'yes' or $val != 0); return (undef); } # Fetch an XMLParser for a block given a service name sub xml_serviceparser { my $service = shift; for (my $i = 0; ; $i++) { my $xml = $xp->data('service', $i) or return (undef); msg ("XML service block: $xml\n"); my $sub = new XMLParser($xml); return ($sub) if ($sub->data('name') eq $service); } return (undef); } # Fetch an XMLParser for a block given a service parser sub xml_serverparser { my $serviceparser = shift; my $xml = $serviceparser->data('server') or return undef; return new XMLParser($xml); } # Fetch an XMLParser for a block given a service parser and # an order number sub xml_backendparser { my ($serviceparser, $order) = @_; $order = 0 unless ($order); my $xml = $serviceparser->data('backend', $order) or return (undef); return (new XMLParser($xml)); } # Generate a service configuration from the running XR, if it has a # web interface sub generateconfig { my $s = shift; msg ("Generating runtime configuration for service '$s'\n"); my $sp = xml_serviceparser($s) or die ("No service '$s' known.\n"); my $webint = $sp->data('webinterface'); $webint =~ s/^0:/localhost:/; if ($webint eq '') { print ("\n", " \n"); return; } print ("\n", " \n", " \n", " $s\n"); # Get the configuration from a running XR. Try LWP::UserAgent or # fall back to wget. my $response_blob; eval ("require LWP::UserAgent;"); if ($@) { msg ("LWP::UserAgent not present, trying wget\n"); my $wget = find_bin('wget') or die ("Neither LWP::UserAgent nor wget found.\n", "Cannot contact service web interface $webint.\n"); open (my $if, "wget --no-proxy -q -O- http://$webint/ |") or die ("Cannot start wget: $!\n"); while (my $line = <$if>) { $response_blob .= $line; } close ($if) or die ("Wget indicates failure\n"); } else { my $ua = LWP::UserAgent->new(); my $res = $ua->get("http://$webint/"); die ("Failed to contact web interface at $webint:\n", $res->status_line(), "\n") unless ($res->is_success()); $response_blob = $res->content(); } # Print the config. my $active = 0; for my $l (split (/\n/, $response_blob)) { if ($l =~ //) { print (" $l\n"); $active = 1; } elsif ($l =~ /<\/status>/) { $active = 0; } elsif ($l =~ //) { $active = 0; } elsif ($l =~ /<\/activity>/) { $active = 1; } elsif ($active) { print (" $l\n"); } } print (" \n"); } # -------------------------------------------------------------------------- # Idiotically simple XML parser. Used instead of a "real" parser so that # xrctl isn't dependent on modules and can run anywhere. Safe for using # with xr-style XML configs, but not with any XML in the free. package XMLParser; sub new { my ($proto, $doc) = @_; my $self = {}; die ("Missing XML document\n") unless($doc); my $docstr = ''; for my $p (split (/\n/, $doc)) { $docstr .= $p; } # Whitespace between tags is trash $docstr =~ s{>\s+<}{><}g; # Remove comments from the doc FINDCOMM: for (my $i = 0; $i <= length($docstr); $i++) { next unless (substr($docstr, $i, 4) eq '') { # print ("Comment: ", substr($docstr, $i, $end + 3 - $i), "\n"); $docstr = substr($docstr, 0, $i) . substr($docstr, $end + 3); $i--; next FINDCOMM; } } } # Activity logs is trash $docstr =~ s{.*}{}g; # print $docstr, "\n"; $self->{xml} = $docstr; bless ($self, $proto); return ($self); } sub data { my ($self, $tag, $order) = @_; die ("XML::data: no tag to search for\n") unless ($tag); $order = 0 unless ($order); my $xml = $self->{xml}; my $ret = undef; for (0..$order) { my $start = _findfirst($xml, "<$tag>"); return (undef) unless (defined ($start)); $xml = substr($xml, $start + length("<$tag>")); # print ("start $start $xml\n"); my $end = _findfirst($xml, ""); die ("Failed to match , invalid XML\n") unless (defined ($end)); $ret = substr($xml, 0, $end); $xml = substr($xml, $end + length("")); # print ("end $end $xml\n"); } return ($ret); } sub _findfirst { my ($stack, $needle) = @_; # print ("needle: $needle, stack: $stack\n"); for my $i (0..length($stack)) { my $sub = substr($stack, $i, length($needle)); # print ("sub: $sub\n"); return ($i) if ($sub eq $needle); } return (undef); } sub _findlast { my ($stack, $needle) = @_; for (my $i = length($stack); $i >= 0; $i--) { return ($i) if (substr($stack, $i, length($needle)) eq $needle); } return (undef); } 1;