HTTP-Lite-2.44/000755 000765 000024 00000000000 12500137214 013344 5ustar00neilbstaff000000 000000 HTTP-Lite-2.44/Changes000644 000765 000024 00000007643 12500137214 014651 0ustar00neilbstaff000000 000000 Revision history for Perl module HTTP::Lite 2.44 2015-03-11 NEILB - Switched to Dist::Zilla 2.43 2014-01-29 - Directed people to HTTP::Tiny and LWP at the start of the doc - Added links to better modules in SEE ALSO - Added "use warnings" (!) - Moved test.pl into t/original-tests.t 2.42 2013-07-21 - Fixed typos reported by David Steinbrunner (thanks!) 2.41 2013-07-20 - Reformatted this file according to CPAN::Changes::Spec 2.4 2012-07-20 - Fixed RT #13791, which meant you couldn't request http://foobar.com -- had to have to trailing slash on the URL. - Don't add request header if value passed is undef (RT #4546). - Fixed bug where writing the request can get stuck in a loop. Bug reported by Florian Kirchmeir. Fix based on Florian's patch. - RT #35360 fixed (fix included in report). - Documentation tidy-up - Neil Bowers (NEILB) granted co-maint by Adam (thanks) 2.3 2010-12-14 - No functional changes - Updated Module::Install to 1.00 - Updated author tests and moved to xt directory 2.2 2009-10-01 - Moved Lite.pm into lib directory - Reversed the Changes file order to reverse chronological - Moved to Makefile.PL to Module::Install to autodetect more things - Add no_index entries for the test data - Remove reliable on (partially) dead website for testing - Now this module is mature and unlikely to change much, move to a more stable and less complicated versioning scheme that suffers less complications in the Perl toolchain. Also, dotted integers without the use of something like version.pm isn't strictly allowed. 2.1.6 2004-01-21 - Fixed User-Agent header problem - Fixed lowercase header bugs - Thanks goes to contributed patches by various people 2.1.5 2003-10-05 - Fixed duplicate my in method() - Added default content-type for posts - header_at_once mode, patch submitted by Roman Radaschutz 2.1.3 2002-02-10 - Documentation fixes - Fixed large write bug in http_write - Documented callback system - Added local_addr and local_port settings - Added method setting to allow use of any request method (GET, PUT, POST, HEAD) 2.1.1 2002-06-13 - Documentation fix - Compatibility fix for 5.005 2.1.0 2002-06-12 - Added a callback hook to request() to allow handling of very large files and to allow filtering of content. - Rewrote significant parts of the code to use references instead of passing data. - Rewrote the engine to read data in blocks instead of by lines when not transferring headers - Removed the redundant ->content method and associated variables to enable handling of large files. - Added lots of debugging code (Enable with $http->{DEBUG} - Changed ->reset to only clear state and headers instead of also resetting all switches (HTTP/1.1 state, DEBUG state). - Singnificant speedup of data transfer code - Changed filehandle names to be $url.time() - Eliminated all -w warnings 1.0.2 2002-06-11 - Fixed a few errors in the distribution including missing test files. 1.0.1 2002-06-11 - Changed default protocol to HTTP/1.0 and added a switch to activate HTTP/1.1 protocol. 1.0.0 2002-01-08 - Fixed bug where content-type was always set to only set it has not yet been set. Thanks to Rui Miguel Seabra - Fixed bug where file descriptors were not being released by request() Thanks to Ross Snyder" - Fixed a bug preventing the module from working with Win32. The side-effect is that timeouts do not work in Win32. Thanks to Andrew Brown 0.2.5 2000-12-21 - fixed minor bug with MIME type provided for posts to be x-www-form-urlencoded, as reported by Tobias Kunze 0.03 2000-09-09 - fixed two minor bugs as found and reported by "Marcus I. Ryan" . See Lite.pm for details. 0.01 2000-08-27 - original version; created by h2xs 1.1.1.2 HTTP-Lite-2.44/dist.ini000644 000765 000024 00000000506 12500137214 015011 0ustar00neilbstaff000000 000000 name = HTTP-Lite author = Roy Hooper license = Perl_5 copyright_holder = Roy Hooper copyright_year = 2000 version = 2.44 [@Basic] [MetaJSON] [PkgVersion] [AutoPrereqs] [GithubMeta] [Git::Tag] tag_message= [Git::Push] [Encoding] encoding = bytes filename = t/data/HTTP-Lite-Tests/bigbinary.dat HTTP-Lite-2.44/lib/000755 000765 000024 00000000000 12500137214 014112 5ustar00neilbstaff000000 000000 HTTP-Lite-2.44/LICENSE000644 000765 000024 00000043647 12500137214 014367 0ustar00neilbstaff000000 000000 This software is copyright (c) 2000 by Roy Hooper. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. Terms of the Perl programming language system itself a) the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version, or b) the "Artistic License" --- The GNU General Public License, Version 1, February 1989 --- This software is Copyright (c) 2000 by Roy Hooper. This is free software, licensed under: The GNU General Public License, Version 1, February 1989 GNU GENERAL PUBLIC LICENSE Version 1, February 1989 Copyright (C) 1989 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The license agreements of most software companies try to keep users at the mercy of those companies. By contrast, our General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. The General Public License applies to the Free Software Foundation's software and to any other program whose authors commit to using it. You can use it for your programs, too. When we speak of free software, we are referring to freedom, not price. Specifically, the General Public License is designed to make sure that you have the freedom to give away or sell copies of free software, that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of a such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any work containing the Program or a portion of it, either verbatim or with modifications. Each licensee is addressed as "you". 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this General Public License and to the absence of any warranty; and give any other recipients of the Program a copy of this General Public License along with the Program. You may charge a fee for the physical act of transferring a copy. 2. You may modify your copy or copies of the Program or any portion of it, and copy and distribute such modifications under the terms of Paragraph 1 above, provided that you also do the following: a) cause the modified files to carry prominent notices stating that you changed the files and the date of any change; and b) cause the whole of any work that you distribute or publish, that in whole or in part contains the Program or any part thereof, either with or without modifications, to be licensed at no charge to all third parties under the terms of this General Public License (except that you may choose to grant warranty protection to some or all third parties, at your option). c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the simplest and most usual way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this General Public License. d) You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. Mere aggregation of another independent work with the Program (or its derivative) on a volume of a storage or distribution medium does not bring the other work under the scope of these terms. 3. You may copy and distribute the Program (or a portion or derivative of it, under Paragraph 2) in object code or executable form under the terms of Paragraphs 1 and 2 above provided that you also do one of the following: a) accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Paragraphs 1 and 2 above; or, b) accompany it with a written offer, valid for at least three years, to give any third party free (except for a nominal charge for the cost of distribution) a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Paragraphs 1 and 2 above; or, c) accompany it with the information you received as to where the corresponding source code may be obtained. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form alone.) Source code for a work means the preferred form of the work for making modifications to it. For an executable file, complete source code means all the source code for all modules it contains; but, as a special exception, it need not include source code for modules which are standard libraries that accompany the operating system on which the executable file runs, or for standard header files or definitions files that accompany that operating system. 4. You may not copy, modify, sublicense, distribute or transfer the Program except as expressly provided under this General Public License. Any attempt otherwise to copy, modify, sublicense, distribute or transfer the Program is void, and will automatically terminate your rights to use the Program under this License. However, parties who have received copies, or rights to use copies, from you under this General Public License will not have their licenses terminated so long as such parties remain in full compliance. 5. By copying, distributing or modifying the Program (or any work based on the Program) you indicate your acceptance of this license to do so, and all its terms and conditions. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. 7. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of the license which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the license, you may choose any version ever published by the Free Software Foundation. 8. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to humanity, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19xx name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (a program to direct compilers to make passes at assemblers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice That's all there is to it! --- The Artistic License 1.0 --- This software is Copyright (c) 2000 by Roy Hooper. This is free software, licensed under: The Artistic License 1.0 The Artistic License Preamble The intent of this document is to state the conditions under which a Package may be copied, such that the Copyright Holder maintains some semblance of artistic control over the development of the package, while giving the users of the package the right to use and distribute the Package in a more-or-less customary fashion, plus the right to make reasonable modifications. Definitions: - "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification. - "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder. - "Copyright Holder" is whoever is named in the copyright or copyrights for the package. - "You" is you, if you're thinking about copying or distributing this Package. - "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the computing community at large as a market that must bear the fee.) - "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they received it. 1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. 2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version. 3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following: a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or placing the modifications on a major archive site such as ftp.uu.net, or by allowing the Copyright Holder to include your modifications in the Standard Version of the Package. b) use the modified Package only within your corporation or organization. c) rename any non-standard executables so the names do not conflict with standard executables, which must also be provided, and provide a separate manual page for each non-standard executable that clearly documents how it differs from the Standard Version. d) make other distribution arrangements with the Copyright Holder. 4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following: a) distribute a Standard Version of the executables and library files, together with instructions (in the manual page or equivalent) on where to get the Standard Version. b) accompany the distribution with the machine-readable source of the Package with your modifications. c) accompany any non-standard executables with their corresponding Standard Version executables, giving the non-standard executables non-standard names, and clearly documenting the differences in manual pages (or equivalent), together with instructions on where to get the Standard Version. d) make other distribution arrangements with the Copyright Holder. 5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own. 6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this Package. 7. C or perl subroutines supplied by you and linked into this Package shall not be considered part of this Package. 8. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission. 9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. The End HTTP-Lite-2.44/Makefile.PL000644 000765 000024 00000002227 12500137214 015321 0ustar00neilbstaff000000 000000 # This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v5.032. use strict; use warnings; use 5.005; use ExtUtils::MakeMaker; my %WriteMakefileArgs = ( "ABSTRACT" => "Lightweight HTTP implementation", "AUTHOR" => "Roy Hooper ", "CONFIGURE_REQUIRES" => { "ExtUtils::MakeMaker" => 0 }, "DISTNAME" => "HTTP-Lite", "EXE_FILES" => [], "LICENSE" => "perl", "MIN_PERL_VERSION" => "5.005", "NAME" => "HTTP::Lite", "PREREQ_PM" => { "Fcntl" => 0, "Socket" => "1.3", "strict" => 0, "warnings" => 0 }, "TEST_REQUIRES" => { "CGI" => 0 }, "VERSION" => "2.44", "test" => { "TESTS" => "t/*.t" } ); my %FallbackPrereqs = ( "CGI" => 0, "ExtUtils::MakeMaker" => 0, "Fcntl" => 0, "Socket" => "1.3", "strict" => 0, "warnings" => 0 ); unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) { delete $WriteMakefileArgs{TEST_REQUIRES}; delete $WriteMakefileArgs{BUILD_REQUIRES}; $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs; } delete $WriteMakefileArgs{CONFIGURE_REQUIRES} unless eval { ExtUtils::MakeMaker->VERSION(6.52) }; WriteMakefile(%WriteMakefileArgs); HTTP-Lite-2.44/MANIFEST000644 000765 000024 00000001303 12500137214 014472 0ustar00neilbstaff000000 000000 # This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.032. Changes LICENSE MANIFEST META.json META.yml Makefile.PL README dist.ini lib/HTTP/Lite.pm t/data/HTTP-Lite-Tests/bigbinary.dat t/data/HTTP-Lite-Tests/bigbinary.dat.md5 t/data/HTTP-Lite-Tests/bigtest.txt t/data/HTTP-Lite-Tests/chunked.cgi t/data/HTTP-Lite-Tests/chunked2.cgi t/data/HTTP-Lite-Tests/chunked3.cgi t/data/HTTP-Lite-Tests/chunked4.cgi t/data/HTTP-Lite-Tests/chunked5.cgi t/data/HTTP-Lite-Tests/get.cgi t/data/HTTP-Lite-Tests/nle.html t/data/HTTP-Lite-Tests/nonl.html t/data/HTTP-Lite-Tests/post.cgi t/data/HTTP-Lite-Tests/test.txt t/data/HTTP-Lite-Tests/unchunked.html t/original-tests.t xt/meta.t xt/pmv.t xt/pod.t HTTP-Lite-2.44/META.json000644 000765 000024 00000002177 12500137214 014774 0ustar00neilbstaff000000 000000 { "abstract" : "Lightweight HTTP implementation", "author" : [ "Roy Hooper " ], "dynamic_config" : 0, "generated_by" : "Dist::Zilla version 5.032, CPAN::Meta::Converter version 2.143240", "license" : [ "perl_5" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : "2" }, "name" : "HTTP-Lite", "prereqs" : { "configure" : { "requires" : { "ExtUtils::MakeMaker" : "0" } }, "runtime" : { "requires" : { "Fcntl" : "0", "Socket" : "1.3", "perl" : "5.005", "strict" : "0", "warnings" : "0" } }, "test" : { "requires" : { "CGI" : "0" } } }, "release_status" : "stable", "resources" : { "homepage" : "https://github.com/neilbowers/HTTP-Lite", "repository" : { "type" : "git", "url" : "https://github.com/neilbowers/HTTP-Lite.git", "web" : "https://github.com/neilbowers/HTTP-Lite" } }, "version" : "2.44" } HTTP-Lite-2.44/META.yml000644 000765 000024 00000001146 12500137214 014617 0ustar00neilbstaff000000 000000 --- abstract: 'Lightweight HTTP implementation' author: - 'Roy Hooper ' build_requires: CGI: '0' configure_requires: ExtUtils::MakeMaker: '0' dynamic_config: 0 generated_by: 'Dist::Zilla version 5.032, CPAN::Meta::Converter version 2.143240' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: '1.4' name: HTTP-Lite requires: Fcntl: '0' Socket: '1.3' perl: '5.005' strict: '0' warnings: '0' resources: homepage: https://github.com/neilbowers/HTTP-Lite repository: https://github.com/neilbowers/HTTP-Lite.git version: '2.44' HTTP-Lite-2.44/README000644 000765 000024 00000000552 12500137214 014226 0ustar00neilbstaff000000 000000 This archive contains the distribution HTTP-Lite, version 2.44: Lightweight HTTP implementation This software is copyright (c) 2000 by Roy Hooper. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. This README file was generated by Dist::Zilla::Plugin::Readme v5.032. HTTP-Lite-2.44/t/000755 000765 000024 00000000000 12500137214 013607 5ustar00neilbstaff000000 000000 HTTP-Lite-2.44/xt/000755 000765 000024 00000000000 12500137214 013777 5ustar00neilbstaff000000 000000 HTTP-Lite-2.44/xt/meta.t000644 000765 000024 00000001073 12500137214 015113 0ustar00neilbstaff000000 000000 #!/usr/bin/perl # Test that our META.yml file matches the current specification. use strict; BEGIN { $| = 1; $^W = 1; } my $MODULE = 'Test::CPAN::Meta 0.17'; # Don't run tests for installs use Test::More; unless ( $ENV{AUTOMATED_TESTING} or $ENV{RELEASE_TESTING} ) { plan( skip_all => "Author tests not required for installation" ); } # Load the testing module eval "use $MODULE"; if ( $@ ) { $ENV{RELEASE_TESTING} ? die( "Failed to load required release-testing module $MODULE" ) : plan( skip_all => "$MODULE not available for testing" ); } meta_yaml_ok(); HTTP-Lite-2.44/xt/pmv.t000644 000765 000024 00000001252 12500137214 014766 0ustar00neilbstaff000000 000000 #!/usr/bin/perl # Test that our declared minimum Perl version matches our syntax use strict; BEGIN { $| = 1; $^W = 1; } my @MODULES = ( 'Perl::MinimumVersion 1.25', 'Test::MinimumVersion 0.101080', ); # Don't run tests for installs use Test::More; unless ( $ENV{AUTOMATED_TESTING} or $ENV{RELEASE_TESTING} ) { plan( skip_all => "Author tests not required for installation" ); } # Load the testing modules foreach my $MODULE ( @MODULES ) { eval "use $MODULE"; if ( $@ ) { $ENV{RELEASE_TESTING} ? die( "Failed to load required release-testing module $MODULE" ) : plan( skip_all => "$MODULE not available for testing" ); } } all_minimum_version_from_metayml_ok(); HTTP-Lite-2.44/xt/pod.t000644 000765 000024 00000001167 12500137214 014753 0ustar00neilbstaff000000 000000 #!/usr/bin/perl # Test that the syntax of our POD documentation is valid use strict; BEGIN { $| = 1; $^W = 1; } my @MODULES = ( 'Pod::Simple 3.14', 'Test::Pod 1.44', ); # Don't run tests for installs use Test::More; unless ( $ENV{AUTOMATED_TESTING} or $ENV{RELEASE_TESTING} ) { plan( skip_all => "Author tests not required for installation" ); } # Load the testing modules foreach my $MODULE ( @MODULES ) { eval "use $MODULE"; if ( $@ ) { $ENV{RELEASE_TESTING} ? die( "Failed to load required release-testing module $MODULE" ) : plan( skip_all => "$MODULE not available for testing" ); } } all_pod_files_ok(); HTTP-Lite-2.44/t/data/000755 000765 000024 00000000000 12500137214 014520 5ustar00neilbstaff000000 000000 HTTP-Lite-2.44/t/original-tests.t000644 000765 000024 00000021453 12500137214 016745 0ustar00neilbstaff000000 000000 #!/usr/bin/perl # # HTTP::Lite - test.pl # # $Id: test.pl,v 1.5 2002/06/13 04:56:30 rhooper Exp rhooper $ # # Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl test.pl' ######################### We start with some black magic to print on failure. # Change 1..1 below to 1..last_test_to_print . # (It may become useful if the test is moved to ./t subdirectory.) BEGIN { $| = 1; print "1..21\n"; } END { print "not ok 1\n" unless $loaded; } use HTTP::Lite; $loaded = 1; print "ok 1\n"; ######################### End of black magic. # Insert your test code below (better if it prints "ok 13" # (correspondingly "not ok 13") depending on the success of chunk 13 # of the test code): #print STDERR <; chomp($proxy); $proxy = $proxy ? $proxy : "none"; if ( $proxy =~ /\s*'*none'*\s*/ ) { # print STDERR "skipping proxy testing\n"; $skipproxy = 1; } } $http = HTTP::Lite->new; #$http->{DEBUG} = 1; $http->http11_mode(1); # print "\n\n"; $testno = 2; if ( !$skip ) { $url = "$testpath/test.txt"; $res = $http->request($url); print "not " if !defined($res); print "ok $testno $url\n"; $testno++; $doc = $http->body; print "not " if $doc ne "OK\n"; print "ok $testno $url\n"; $testno++; $http->reset; $url = "http://invalidhost.thetoybox.org/"; $res = $http->request($url); print "not " if defined($res); print "ok $testno $url\n"; $testno++; $http->reset; $url = "http://localhost:99999/"; $res = $http->request($url); print "not " if defined($res); print "ok $testno $url\n"; $testno++; $http->reset; %vars = ( "a" => "abc", "b" => "hello world&", ); $http->prepare_post( \%vars ); $url = "$testpath/post.cgi"; $res = $http->request($url); print "not " if !defined($res); print "ok $testno $url\n"; $testno++; $doc = $http->body; print "not " if $doc ne "a=abc\nb=hello world&\n"; print "ok $testno $url\n"; $testno++; $http->reset; $url = "$testpath/chunked.cgi"; $res = $http->request($url); $doc = $http->body; print "not " if length($doc) != 28; print "ok $testno $url\n"; $testno++; print "not " if $doc ne "chunk1\nchunk2\nchunk3\nchunk4\n"; print "ok $testno $url\n"; $testno++; $http->reset; $url = "$testpath/chunked2.cgi"; $res = $http->request($url); $doc = $http->body; print "not " if length($doc) != 26; print "ok $testno $url\n"; $testno++; print "not " if $doc ne "chunk1\nchunk2\nchunk3chunk4"; print "ok $testno $url\n"; $testno++; $http->reset; $url = "$testpath/chunked3.cgi"; $res = $http->request($url); $doc = $http->body; print "length not " if length($doc) != 34; print "ok $testno $url\n"; $testno++; print "not " if $doc ne "chunk1\nchunk2\nchunk3chunk4chunk5\n\n"; print "ok $testno $url\n"; $testno++; $http->reset; $url = "$testpath/unchunked.html"; $res = $http->request($url); $doc = $http->body; print "not " if length($doc) != 33; print "ok $testno $url\n"; $testno++; print "not " if $doc ne "unchunked1\nunchunked2\nunchunked3\n"; print "ok $testno $url\n"; $testno++; $http->reset; $url = "$testpath/nonl.html"; $res = $http->request($url); $doc = $http->body; print "not " if length($doc) != 17; print "ok $testno $url\n"; $testno++; print "not " if $doc ne "line1\nline2\nline3"; print "ok $testno $url\n"; $testno++; $http->http11_mode(0); $http->reset; $url = "$testpath/nle.html"; $res = $http->request($url); $doc = $http->body; print "not " if length($doc) != 19; print "ok $testno $url\n"; $testno++; print "not " if $doc ne "line1\nline2\nline3\n\n"; print "ok $testno $url\n"; $testno++; $http->reset; $url = "$testpath/bigbinary.dat"; $res = $http->request($url); $bin = $http->body; $http->reset; $url = "$testpath/bigbinary.dat.md5"; $res = $http->request($url); chomp( $binsum = $http->body ); eval "use Digest::MD5 qw(md5_hex);"; if ($@) { print "ok $n (skipping test on this platform)\n"; } else { $sum = md5_hex($bin); print "not " if $binsum ne $sum; print "ok $testno $url\n"; } $testno++; $http->http11_mode(1); $http->reset; $url = "$testpath/nle.html"; $res = $http->request($url); $doc = $http->body; print "not " if length($doc) != 19; print "ok $testno $url\n"; $testno++; print "not " if $doc ne "line1\nline2\nline3\n\n"; print "ok $testno $url\n"; $testno++; $http->reset; $url = "$testpath/bigbinary.dat"; $res = $http->request($url); $bin = $http->body; $http->reset; $url = "$testpath/bigbinary.dat.md5"; $res = $http->request($url); chomp( $binsum = $http->body ); eval "use Digest::MD5 qw(md5_hex);"; if ($@) { print "ok $n (skipping test on this platform)\n"; } else { $sum = md5_hex($bin); print "not " if $binsum ne $sum; print "ok $testno $url\n"; } $testno++; $http->reset; $url = "$testpath/bigtest.txt"; $res = $http->request($url); $bigtest = $http->body; $http->reset; $url = "$testpath/chunked4.cgi"; $res = $http->request($url); $doc = $http->body; print "not " if $doc ne "$bigtest$bigtest${bigtest}chunk4chunk5\n"; print "ok $testno $url\n"; $testno++; $http->reset; $url = "$testpath/chunked5.cgi"; $res = $http->request($url); $doc = $http->body; print "not " if $doc ne "$bigtest$bin${bigtest}chunk4chunk5\n"; print "ok $testno $url\n"; $testno++; # Callback test #1 - Unmodified callback sub callback1 { my ( $self, $dataref, $cbargs ) = @_; $cbbytes += length($$dataref); return $dataref; } $http->reset; $url = "$testpath/bigbinary.dat"; $res = $http->request( $url, \&callback1 ); $doc = $http->body; print "not " if $doc ne $bin; print "ok $testno $url\n"; $testno++; print "not " if length($bin) != $cbbytes; print "ok $testno $url\n"; $testno++; # Callback test #2 - Discard sub callback2 { my ( $self, $dataref, $cbargs ) = @_; $cbbytes += length($$dataref); return undef; } $http->reset; $url = "$testpath/bigbinary.dat"; $res = $http->request( $url, \&callback2 ); $doc = $http->body; print "not " if defined($doc); print "ok $testno $url\n"; $testno++; # Callback test #3 - New callback syntax sub callback3 { my ( $self, $mode, $dataref, @args ) = @_; $cbbytes += length($$dataref); # print STDERR "callback for $mode data is $dataref args are @args\n"; return $dataref; } $http->reset; $url = "$testpath/bigbinary.dat"; $http->set_callback( \&callback3, "arg1", "arg2", "arg3", ["arg4"] ); $res = $http->request($url); $doc = $http->body; print "not " if $doc ne $bin; print "ok $testno $url\n"; $testno++; } else { for ( $n = $testno ; $n < 20 ; $n++ ) { print "ok $n (skipping test on this platform)\n"; } $testno = $n; } unless ( $skip || $skipproxy ) { $http->reset; $http->proxy($proxy); $url = "$testpath/test.txt"; $res = $http->request($url); $doc = $http->body; print "not " if length($doc) != 3; print "ok $testno $url\n"; $testno++; print "not " if $doc ne "OK\n"; print "ok $testno $url\n"; $testno++; } else { print "ok $testno (skipping test on this platform)\n"; $testno++; print "ok $testno (skipping test on this platform)\n"; } HTTP-Lite-2.44/t/data/HTTP-Lite-Tests/000755 000765 000024 00000000000 12500137214 017272 5ustar00neilbstaff000000 000000 HTTP-Lite-2.44/t/data/HTTP-Lite-Tests/bigbinary.dat000644 000765 000024 00001000000 12500137214 021721 0ustar00neilbstaff000000 000000 |m! o 0OxX X JzH,jA˿ZlunA8.Ecu JR4jUu/"Y)ةH6Zcz',n"90"|C/Dn Aπz.Sk1\?1ԖϾK E /q1ˉ<_bYQ[2RIعm/]H-O$ /Y0GR&ki35&cCXv1qM?𚁘I0o'e7H̫{([@V >OL]`T4Ƨ+hΙag*gR{(%:Ҩ>|V'/M\c1 |)6<Bu`FjbPhd6A鯜MIp B8k 9#lE:plKy,h5d:!`/ϳK.:8R妘"}pFA}uabb;?Y*>_wq_b?Ua"Lm$.oi W֤iz1ۅA+[bY$8vx*`s O.lr󉖡C-AjSl?Y꾯AJ$'pB1M$%pSE ӭݰd'%}D)f:n#GZ!,?S4~j 7On+违vTr1/iT8 ?pT Pa|ǛkW!:$5q : 0`AUa9wDwBjϼxr443?b>Mhj`t|O,HqZr7K099yb) W@A6b- :<=?)'h~4빘ϻϓ]^ lK)+|Z향k9ܮQZƀޖ|U &`|Q`I=qTAu \u1To<= rVƭg0W%U xɓ))$=āuW6 WQ&cw sO wMG\ XTI]} S=R8N˛oAxi^33IQغH9@ڸVW+^7d9əTVctYW{mcva2 +#_ zn_'g1ev?HF+- Fvxhx,dZvIՃ>_N(s_7j-7':U,(UUh>%tFPi7Ѓ^zpДdrB,Z"bܶ7v3D^K9F4g|ax[$c&egtF!Ƈ:6 dbX6, |Z(%(#m6<&GN^avd^B@RwK_$Z ɭ::AqVi1歠Wj\: `pBnt``9 G<ufuDJ,m#=IԆvLq()ͳ5[|0QUU4*=}q3@3(=nә sY CQEyݎ`C {J!9)u2[֨G 6-N%S2ѦC j\]Hmqusj(rCkQHDvHk݃ɑW놹M_/ᡂ9<ڻY/_oyRR{ҴYzB[#(o$-Nѿ]5^Nf LO B(Ot4 rÀl~ avȕT+&)ɲTJ+xǚTR%02 #\"љ0 TJhPO|>}$7-6 "XS= agެ+$k<.y[rbBxYX^z9'O08|$$HOC*hpcW"B3lU), _ԅ 5&̼Cl‹4+@;bWjE*C2E{nʾ >UGWVKBX](< y;َ"_sv"t7kQ]U*3W}}6fYJ@W1.YC:Ihqѱ?]ѿrGDMowuØ,!"L r6:M*M9(5ʞК&Wp8>O2&;Zg$RsaXwk0ʁՒUvEglBX}<ۡ#}LG3jOH0aھ8E< cH߉^tǶt.#ݢ8a&_ }a}k&k/-3Fx?2]pR xy9VXo%2 HQ`Pحa$yEVOSP z8ZRyvP>uYC8d,iȐNO 2zKb|4RAvzcD0hTC?EQֱbZmYb/\Tjt{\FWd(?7@p]QT<w*+ Bʠ&^ٲT:v`d ?гEUȶ/@e$n8 QzaCo{MCay >^]ORxPb@ڰe4!b93ݑl%f[Ȍ|ai϶s>Y(5߆U.8 SƲ8WڹU 2G^jH*|S~r4Ӫf՟bmHlk.ӬYl\Z:Ka@5`uwalT9 a2W %鳓:+ bdO ޢZK bO sWBs2 nipZ'x9`g79NYxC莑?:Fl[|JJ$ɱlBIq^$bl]e0)pfupaGesS[7U[ѫTRpzJCŁ)d8:A$IoD&DfR h e %o)%ǫ)$wIb'z9'm(c> ׺4?Cz-"fɟ_e3Wp%?*(6aU{ƠC .C!)p:N*_.B?Ef7JK50*AehWJOeQhmyw AF;h7?$=d&+Ў8gS -0or+K-tFi$;&,7¸/k:X1&?ٴ)D˷ |~irb{BT8FY{Ԣ X)BO = Ex=Tw UE; }\+90 ᠸj@*S$V8#y,lqaA ZBm;X{u_~^`QzfsZAv̑rysZRҸB'[qhVHy!~{&dܭ1d;W6pC\S>29A9NH2Ll&Ο{=^Msg 2 YUe6lKP}-#m h7e:vĖ7*OݣC(kPFn&qPo=%ь_Ys † CG%.N7$)m3|T~x|oG51s[ U`F :=t p'@=-(]y8l] %'0Ms*Xw?۹Ҷ7Wqd p=˟t_Cx'0v6:ƕH,I)6C!э^"P~495dzK aGr=С&WqƑ7kCw6TfyUTBz̮63S)=R-xtvz'Y;<"D vY=r\W@R;9EcY!Ԏ>Q1۽1TyǮH3Vl: ύmm.VKV]r?Ox4E*&=FXf+{l=V)*&Wgp&WInMzQM+šφL, SiF4@:QkHM0IkΗ Qp DUJi( ? 20# bxdݍBx@Hy{Χ[׉H Pq^üa.'HxђDmWMoij]ߍPOx}@"1RxQ Wh2:Dޚ~74BpiWZ\RJµe#fT1cR^\͂`%2~Iuܮy}AS-</ **2 $0K6}ֺۤs}8Q֡2gxGa'&z6RNnxb>g޶yɢ ٌXֳ% ڢ䥦ú> .e/Yr?g8s#MtdOgEl흻Ñ= BWEZp_޹+SApy 뜅HP((ڻb o0YUoՒo$.RJS"ݒ䤉6*$ S;)-,\1Cb-Y|+`*ӅB(=F$EmS֛ݱísS)>cQA;`m+T l{E4 vPs6󻂡]fo2 ƶe+ %KV+cMSY5s۸vWz=x( !`w*dl7IJC Tҍ/h |PY +fA<.ˇHTkKW(lRki/4z^X.iywD2aKΩdeᜇ:%혜ZeDgPh7ׯjF[ikqkvV\Idf p~Y3>0,\=gr ©/@B* /%;?,^gV +ۮcAs Y?ĨC1$4m>m!a,3m?4n*m A^mK wA",Aߘ0::؎xnH]:Cr.z_XDedCT\ISo03jZ\᎗˳ڬכso 5Dƿߒu VjFMr?G& 0:Exv8S8UV3hP.ZpJF >6nqp9 ϡkЍС}y*yUS;ed& OC|bθŋ(I5'D,4~aÔQH!:p~_$x뤲ǓlgmtY^"2=(Tuc5NU00 Ep>O bšt\R@ax ^6 Ni6KRcW>贼6eժ4}=vvVWM0?EOf)D^dDB7ۆ5޽WG+C}^H"҆]9u&zԈ""׳̪Ey a5S baI]|#c̞l\K䪖@'|h*Jdqfvb )e0%wDիQlojxgY Sj˵yiK[o'"D'\Rp{#90::<:ld(DENȋ^짢='+Q{>3PK| uJԏ0&DMU #H*y:%v1TWn b7>:K#ԑSV!-gJX搟 X B//f4ڏ(1VFi/p~s7WJ1K5};6mƖbS&]h'{!bPL =7;v$=kwo 3Ue4Ժ-;rۉPizY8cj6s.@^@*y4SHPYn29ʼ5ZH#SX;7 F0Y E,+o 2X촆XnPRƌH}q-cLRB!VJ+9xp<&HwrwwN{SA.軂гK b&pz<G%= |h? O:YtQC@sG#a7h4`^9RɓxGTw0ѷGǰ>WW ݋.#tQ:^<Y! ]b%Cc\4d^BׯųD 1=|1YoIVK<-^q)^_p'c Z'D#3۫j F40#p/k9`.ef8pBEzߞ7zMvs^єbν׬bÔsF Kay.$#{5y?1P=KX } l]x}?[ !<";F^۪~~]Vwe;gegN n K61`\hW/m OL\׼ocJדK,q4h^`A\ k9slgoV ?xCF LwGRb|qxgTIh(4ݹr踞n\6-!떩]9+f"0NB;0%׍ k6IEO3?-(-u{ R͘~~F6BJ( JY54'o9L-"ԳJ]"&]+`&wx30(0tԴ| * v.}/-'nWkJcj8-$[bQKL)}}Ĥ k JʷSNuRx\gkR} r^ t/9؜fm9 Ґ`g*8~R<1t+pmrI >N<~¼ e>'0,Nl~@{x=du'sYt o)'B  a-:x,]i P6IWHq0'IWr.| 9>n)q0@\օn-}oӤy[ѹ iTQ d{oAdńraR"zBĠ&uT R\偪8qzSDЪ]<|cP0}o'$6^j3_0f1 mcFO / j ?'|dG\Cgj No|fd };7@-@k5Hb Ja=vؚkW1Bӄf:1uƦN4L&϶-v_tx̉/I[7#;}#%Hbh]Ζ`UQ=HF]ܝʼ+'Iʧ hDb)_8i:5k=IijEyq>Dȼ! ST̓Ȅv 8\3?8MqFtN@Z*{|dkۉHK%"l6xp*ھ6p .Oo"lx/%kb ='{JŭLzv ߟiX{NXE.l8=? 4q=`H!e#7د'n^$,8tF TFfMlxda-YY1u)O5uwڋv_lI4Җc|[Kz8TYas~/"fpt$eF!O]nĽYvN:Tj ) +_Pô-sdF$jKRgo^Kꈠ '9̋39RhS.$Pe +Ϥ;aNC8z5y*ޯhͣ'fX(@Rl3fK 8Ϊm|15^~z8,DzץDyR+c-PLԙ]l6EoҏSٯl'=mb`k#?bjv*5 L~A;Jz5ӨQ>@ǵD7W$ O^ Q9ʺi*^#ĸe9ULLtSJKܢuhF&/GW[ "[d)6 t嬈f+CeE$-~/n-j>cz\Cy%" -18FBΙlh|'EKյ\n)r5|5m:jptBX9 Q$lP1ד b*Uk+ 4 J {v/armWIS:Y"cdb<{KDn;$/D"Rf's}^9~Lמ<0*6(Ѵ Kk <:XV ˇ w  OGuqPH;$]V/H @P]w0hLDˉChS࣢:i}A&2~9NA :,N&i9иTPrEr)b\={}1i72J ^Q\( WFG#O!;I) Pݤjy7>ɺ'):N:ga] ;#p$wt"Uy [jT5KT;#-G}C|B~\`> z"PsЫ9\ɰI镃 >rpݼg*~7]U-&0>=l:o~͏C<%Xs嫔 DQe@W@tt5Pⵕ>ecמxwWepߎ 1~[|S,_JJ]@~+ؐSrZv ltMu_ѴۈVqLbE$czQnywU]2 Z!Bǜ |kj,sssqR^ަ4(lDw '^D VY-g2QRO=."}~ȾX⹘ٕ/|P %EWZHʫQ ˨X9Dq=pҸ{ڳ3OfČQ ۗ ޥ"S{Lry33UޝRr̹1`LI)qЀom[ȑКKA-Mq};0#Z 2|EsxCb`.j?滦k(N2'rRsX]6|scY&ŹOmlj 7V#ThzURh%}~C-( M`{^clpG> wMk(&qn>j;TnW#Ys8SKDюrʼ7L p_U re1,3ΤxwݢQ髇 5Kvd~ՎA0[YĈ>C)|fR$[ϣ]6w>Bq*8sژ~W%2 .+bFBss0"V<̝&x IJlelX0o{{8 CkaNI?u hNDYiӆDT8cW_GhsT"w0z}9qʉZp3|Ϗ^`E1ِMIa' #炏z7\K h3p%QI({ {LrtA-,QuY{ڵj|3.DM#Xd+KͱRQF,VU" ?hb)tU'6A:^):TS;*$M9є BNFCD3 yqx-ulV(PMֵI3#,CDS2'IS%>lnA`y[,w4İĞpy(;3Z*cqwt)tW>H5݆-wM1 +&4MeG?"#9gPd'\*^͗kνVh %Fӹ#(y<:ʝR0Oї#oT&'? ߻x|14QC{#,ph<)WVLn.x{p&E/ I՟Ă7R"-c>[aC=\T4J-&amDIȘc-yvL=@o)Wu3XUs\t vr>GpvORE c}uCZ_t3BCBiPv2J}@ OԷAK |obP@ )82f@6(1@lvx|~RRm']녕rrx.oհ] <04:,Xx %}an C(7)FV#4Q w!ظ3CUFxfYqz\s4ƬD=5Qx!|鋃'o` w=;/٬1!no+g`Rߝ!}9 Qa6L/TH]v+!7$>?g:AٮJe:p8SV~86GZGaw[QʨX~O D"z']RcZb u_A3gFݹDZk< ɂ&H*1Ȣr7E;58[FDy/c€ Ik>Q= 5{WG]@nipk`+H- H !)RS^fe/o-+N 1]pgv1+$r2B]lRk*w(yQҢW#:ntڃS RKV=b'~kZ/ %~- $oMFG 驧(dp݅D5>beum5<r!0#٥d-Sll)Wn#ed?E/T@RsY[^X /]Z3AXXRkiaS̘Zj)e?r&e90*(4Sz4wCo^OȰ0 Vtgk`*f1dƎLゕ,F{Bm@NCZDqb6-qaZ: *WjȝXA^䄁 SHA4ur*#ʬ NXf.4IQbZ'Cא>yv_RMLZYs? v7±(ج;l%]oJ-4E*TJ]?sC/T T*u2B""n.Ff3(9J-z#NSSH  } -K\y+̤3*F׻glhF{wFD"z: >Z5ĀN^PUaU`KȇX9TW ;SsY85Q4(+>!+SNT߈UqqA*@N)Ǹ71v>2Yj{T '"weKs .9G$vh#An$dxg22)xǒ9eZe'h;7wmA ,&b홲qې}J ϣM-K \cMSj?马bs1Ez17d r`,X F}:KUU9 `pLtfnVhGM`~97'%_4$/ RXRl4i~9OPRgi?;MfF4ʰbe yF?6ɮlryX9W-sr(W_e/Վ)WRy A׌u'zrL,\ I_$UR+!h1=hxq>bTl{QAc4c'lDŭh"z'd[cbme}HM.`j@8ߌg\`3Ϭu-Am}X|)J+5]BU@lԒ)e-`MC{oc]^8q$Ptt[=%i"'+ 9Y뇦= :n*NICf- *Pyr5)G |B%1`\ 5Ȗ n%u+ʮ~cMsQbv)U*C*f 5%$3xLDBZ^=pٓ m[OUUs24q LӹPqxrE=ڃwZmP/Fn)3BѥpKQS+Ys_5Üu6<"J'?~彾`&..xBwZ=02ׄ]Dg5y,*'+#c玢Ś9\%>ܨMP. I6.5֚+q<B_-tƃ_{S]N L.:kJ h G4YG烌ˆԊTpZ&vZ<+ԞJl^Jl2+ߍ> &&mo;aQ̮:dź(Ӵ&diR5au}ЉSM(Z,Ĵyt2W{bBV~sc>M=wd: wJeua 5TpmJu?>Jm8CLokŒה؅9k+1b?`j8V)B̞ 9]8s?!|Ui% :X[PvVNaOmexrADEHq }b.%Z슫*-OvH˘G RM@>moc8ru6#cq}UF}.?E_O !${=8+>`!۳drSIç\[Mݎ%Nm`& tN\p?c"v9!ب2y'Ugq]-NrdOu* 55hSVcѡ癧(^ ^ļܼE1ҭYѳn/po166gqDgqu nC6h\?V/Eug[4PmԼլ3jlMOWC৆@]O<@ _̲A=hd$v2}n+ Bb~OAmttk窚t|]dZ5z!W {\O~ysY,YFa;O){^la/_y( xsGa&NBC|7*sgrw#>]/sxYYa^}-S>RUjXu홇ј|Ey9[1SCte?L&ʩ=ض%'Fo R;zj1W~Hd 3~TF>\!iŖ|8k\+ņI}᭴}0+xp\02"CBjKdiw.z~kFg@? Bћ`)A$Due*npIb`4m,R7@΅yfb-;ho V|l$Ijhl*qՎ|Z A)/x2b)u,ٌufʾ4}o=+wѤ8xboގl/Oi2)|]Z2a{+"X#xnl;`BtǧߩA>O3`hٯIpܛ082+2.[=ؒF||C:HAzaK[ G&^1ĵr38)rMk%30rb8@+-?_&ue؍SAjƲUAQ39g[ցM޶Usm OE0+H!GW.2Ȥe*K(Tt|K\$Chx Y)E)er/sWcgz׌NrȚC@iS tL-k^|8dxz@c¼7^XWv '%Bo6V"n-41YH$p1C?G}ʤy]R:s zqļ"io*,*@(N`1SLBP.M2QDw^sh)|)~nlgN'z=9l;c^zǘ:Mz)2V>_h 9zT/CFkR% f,G'ADSXԣQkwb`<+y !3t좍Wi)ӐF`z{SތR ^ji.);BuV _B X [#~Dj։$ƴH9:]מq8a܅, Ä$V/AwY>zыeҗy|l)J&D+-]hn: !K6s2[p/U*FD=sg8Hh5_ cg"Px!HoL6jou>:p#cP t[(A([^Q2]!z5-(!5O20n|BzBDupVj^$de+L3P}"}x.h6s#o6&"ܹ u.SVBKN9+$ n!J%]^vb>xiMP\э8@ x(Oaϴ 9DD /ilu]a@ bOGǫ9<kL;8܌F[Y54/8vuo|Zesi$j۱$G-.eڥ} }DB{@N DBofҫ";k!#3t$B:|Ps)=Wغ:>NgdGe 20i?!րLC٪3YEyQ\2{c@Q;'J2Jf$iW%MRŔ(ĨK5XPW[;Oeϸ.f8 =HLR4q\x },d$deРKtfc ]9F>}whjtތ/v]``32ΊvwTEM,d5JQמ7uVsʓPқEE K'S >f kGKC} k* ۸'yxRmjjaaKSut;]t 3<.N9q`T/1Pgb47hl ,'M吮1Ή朑 * ,QN2XXO6+^bGWO8DGHCEt*If vgB*Pu`ht%mOtn| 7,nX@nyEhu{LM>H]1"XN\gİV.l+\xxbv*6: [>t$ũհBvaie@X䭮}A5Q6) AZ翱pOpBQq QA-z Q_U茑}LiKNOyčZO b mvqRzjb%fE|QgڝicI -N*y!Da%7mqY*yx6 25 6% ,^2x+XEr|EMɮRj[Z09v8b^JVB,)T؃1$5VՑ^~g. O׸YoNׁ hk/'ZaNTUSrᙔc5*3@ 7RkG%fIE@{5o(5_SGVK hYBf 0`V4Z=' aIOLbd`E±-wp LY@ui`BLUh5!nP_ KQJ6V (^]Ybp5Iﲰ6 K s` Aܜ码pѴ$8,PVt"t22(u>)Ѩ-Ns*(W'hjHEo%0Y8$dwt/z=j1O~U #7N b  Dѿl% EK]iNd ZnjE$A%+&x䝁)\tcTvu%2nײEiB܉9+֐zT^Lf5^$ܣO5ִ*KuL 2z.zD&L83ON|,2M*/ʾFbBg n)R1R&Fb0&7O w(5|Z%6 y2MV"9Af' Dlm߼Zq|=yE|@a~·C*6_ nv"'vVWOWV۾*IWw yeNkגm=Dzr+䣰3R#X갹M#l$2H.^! _%cu2]Uņ=\C]YܠtƠc I̸RNL S8U5іbы`vj%ՃGf2ae<45c )޺%Texg36Y@Gq/0 C{KRJ();[>7@JS&`Wn Әn_BSwQ,jCE}Xfj1,~_sYd\J5lbG>sy0Cj~fgfvP;Y.΂Շ+C$s‚``9K{q:IP{q#8q'B}?/N", O*>g(Hnn~#̂݃'̰KAuX-dNvGo6%^͍6AB nwz0[AǬ:GI}QQ\M-p6RqD ܀P)_Bg`-MNRӽZEkH!Q7V=k` |gt/u H&J D! M۱â9ܕ&MC}lwEP#̄-œv "ʹ̻9dTâzI+NJAF8[l|nC2Sdp>V*47Ѫ]jq&6(画qxJ4ƫ~(!~Ós~JB)|k6D`?y&h^)+ATP]{F4{;\FEGU4];19,IYI8VȶFT`{z\_?vBãTU%mfWX/2}Mo{pȹ6s}$~AC|*v=X=+wW[R-|NJʫ-C`pPIFMSriOe&f3a/>{46a&QW+ pd2(\GYSOT ݽ%bUMZҍ+x5Ař ANi T댶TmHARi7ԥɋ:xLl7)m@2a$UNYMJIklDg7 {{gB5Eb8H̼E1"ƹcl͆kRslmJНGz D !0JU$UR8^C;Fp Ƥu"DSeˀxIpg5 2WmaIpJnp8Vq 3j;0Xـ3ΛtЌJCuA0|5"J׹ Q@a KMWylʐ9KLޘYoҨ&ҩ=Q9lmDŠ`lr@/3Rj~. E2]83\Vą^=CeL q3dS y hDy̓ۤ$ħФr$}8JЙnu'AgN]a}nm~_fdhdGU> s \o#y*Qw @t$^P ( Cޝ:'M,EGEG"u @=աhio %]K9mj5WHۡ~]zXĭ/c9 踳; HCVJF~fvスI|;1BI"%s5Z9^zE͢[v xy,9DýGxQc$IUMu1-ٓxi 4E. hfőܢy"}B2mYmO8  ׳;dud>ƾv>\W[xG@ 1c mm56N:V=k…t4veF7џ_nGi*pISTS:/2iS~vzSh8"3HXU h2v}5 3\r/( _LaűQ ,U z0@0lgŝmE1u )JG[7MLX!B'lQ&4;i38_'N5^]{"jk5B4|֟:nc̒=Oh Ŕ?,6ǕQ+/zG`"* YMŎǧv2(D'tSdk1)X.q qcR@GʩHp\Ǿ@zO=B\g[.'v%isr&ϑ;$t (EAD׿cv3ybl0KJt3 &;4c ]J'F|6]?1Z# m3v1,`Lp k.d4듳  MbFu{XCdQ.7X3-r>btONRF8XWM؃p 6vr9|QLL׳$k8j߫&J J{v(<C q؎6@z OnyTIv9@+|yG4Mvr7 T1x\,5r[I^|"#rWI::Js_V8 80pTJV5QfwMS6/no]HdkUBRzb֩qjo۔p*ꏊ.o D[G-wif^Gle[c"7rzaPtVCkkK6x&4$ߝ~>a:Rˏ.$c@i+BXp;{ O^vztu{J1Ԍ5Jlޓ ^7 X{2KeC]+Ơnco|(2BZwHXq1l!PSON`H#ZMoʇf;Na ŌHW77=Wo pt˱O,z@BNa ߁u?,BGu iDhoT %ŭ5G"Q_[;߃W?W얁&6;WV-C^h=2PIP&1ntM.F>cU U@n%1ml`7Y Vcei%iP,A| KnTh VO}J X;;H7N:#uX1ph+4;(8# ,m+\T#LkWu6Nw w7bc7*JRKp\WWV7/[)ؚ~ac,]2QP?PB ~-*Y똧~NCT 6H˨̏4;pY hw; l#mG61S47x0 *>q7IjuRh=>꩛vL٧sC$w=,#?^Ě=(\94u^cҐ M !fsxV-=/}_tIzpTk`'+W' y'05}ur pA2@a0r՘Ǯx}&%rYcgsvιAdXʬu$^'_,t<'\"z^r]+D`|0?Koahcy>U|DFuNnNZsҕ`J%x"E0FQ}a=İ$x+ ,*-@ cHѓ1DB%[yz#BmO&36rPP".L$?<|ml`7?IM{_gFx>!Kj3o1oIS,B hiGPBh+$?vU`jilK`a\e/}(lüw)+kvYdR#1WBI~t,rdtWe}twQݠ1z1S','w Cc›euJkFT)f3Ԥ$@~f\a"ؽ+oq:MK|H5L1[li43ҥTv(`Mh:# "xG i[nJЅ+ȃqK,[EN#FG鷚 $HYU?Z %L)LnTih & nL_?X||N?u˦YC4@@x ̏5' !&JO*&{SLn|_-+9bC6V`!N{*pW7B-(G+pZNp4'>Ԡw3WGV J>kJF t"&A,CZZ4uaMQ?}Rw aB̩C}e9Sm6 ßo`%H d,<5Iv̐*ظGK+"<?ԆD$#!2*˦'-}-Gg!Dgōg1I3S  JvUHI)J6KHc V}b=~SrG5&`'X0t%ijPNdb/$ >7}: Ѷb`! ; k;Dz#3`8ƹ!Ҙ`U;jjW f]eJwh!.Bnbskx/d#;^%L/Ehv(IB {Vc p9e~4`n}zfpRKUy&t>lz(^)~pFВV[h2zW 2S=Ng6` >mݠS";nw`;԰2Սɚa`HkJBRE˚pTT +Qߌ'ԯ!== 3/)3}^B$f*.q$җ2dC?_daayO=O2cfӹiO񳣴 [B&r7ĘA-,r?0pH,Tfa{dwTp$teQrT-+/i~Ak/M}gORqyRa_)Vi26zHԊaɮQZ)yHXOw7~i ƍĭBu#YN$Zl/Fsr|ODBL(]3%#ߨ gkpE$Hfla@;] C!FP۷G뢌 כ9)=~X?~Z٧qX.BAbXgNuG.wq~= ٿI1ZY,&[ D M81 SKգn-A)QDMDS\?%@j06Bzם; (ıe/a]l",9]h (o!f@vOضhٜ@Ȼ!iBKlv:7Vó2]rs%i:ѯ kK/71hxbŲ:;6|I,ɏ9mڽo]?α19+o\}}ɛIS'c\4g)1W-w,i} ٢ qLπR" Ȣw]$iZʡq1W'gI=2ޕJvY0 TRz(:.<~ªȋu]8Cuw+UDC6l\ c=ŔKaؽY$QFnJ^4<mX\:ow 5xgkR\f)iih82);݂ TY !fki=yPK-%X:N9ʼRohoH$TRRƃA6.*C&L$,~ϚӋ4inCBMm!+}ӃSY1@ Un: >eO쯱Yݼ1_ەZ. d4Gbzf^'-PU3+NdvP:=stBクqRkvϽSM)Խ]_\2-:5"`\>)Klt#:JV XffGwQY=.u_,jPV͈᡽Г,bsZGWxdB s=WI+R'GBDc/4NDQh GeY%vc)j3G.1+xIroZ T/5befȿhJ[y Ǿ@Xl7ހp#?TEQT :O*Owػ}l OOx@JBfi-#a8LSp<|#SU׭9nL%X dhQfDxx`JE &; )TUŦ d(MMb;jnV M b%,GA}sF&=A<;ƹBe)@A*RfD*H.}SǓ<Σ|H6k[ #۟Wݡm1iܪ j]r ]cJ[qf0S7BMt(nIT//O&<U h-:b,Kt]G62q@ƗcQ?ݩQJîzu}ClU5Zɯ[!3|[k-+^EL{{f s}IЛ!AH@}`}sKaPoC*e"9L='EP.4P]Z:JS2a > ĩ6vh#H%_|ұRTV Q}&no(iQA˯#HB8ԓZZ#]yUsNMVw 1/>q-5Nϝ}LzDڢs_xG;c*w/rY?4& 蟇z|>/Ay O.s:̓px0@G;z]}BA41Y=!7XP9bR7 ."x AM# ,Q$c,O7w8}she˙>ݔp"l;c>LlH[rFmY=x`,J-Fˆ)44w{d&JD`(= k$j;_PTaɰF?̢AEڜq7y7V)$o7DŽJ! ؑNn/寤uC"*\!_e=Ǜ L1|k`2!~Oh. F;`H<Ңsn <\OuLcٌ6Ǵ3u.@-!59S.4 waڡ?B J,H q^Exkn/T8U"plFJ'օb$MUV݄FG&X O*Cپ!a(ym{iR8] $<#'?gBI?P[ ;xCSc``) qH^MA 1b*0N}B.ßעb#@"dz" ꆓ[u .yMc$_УV *džSD~iة!VkPI_Åg9T06聰mh (O7]/ Z2>hj@<7*HdafaFAW8|o1m~DӧG1 ޖvZ}NhxȯgI/bp~tz:? nesz}%DrcPB4Jb zk2ݝRqE=G++k~4}'ч[5ÅN7%wGqʰ3=h(>~ J筓O8tar9Rn~] '߅y6z{Y4]K* @Y;yy~B>/ ˆ? B1$=knL \4<ʛS:M$uWַfExF=Y7 RakFs\dd'+8cR# or1IPީWK&gܘY{tY^kc U3C$ H)TuJ3ZG0M"#ϰ?"e /g+;*}s ^oKV+|ROYj?B8W- {DpV-[a|HM9ڐsS +}g#={#ucǀB=(`ӟݯG5OЦ6Őzz_Ef$?ENP2S0DG "e2*[߼Ł,PK kP QHIzr_ixidD b68}(WoDD,fb^ NXz2_yhk\Y2jiKO&`1 s4qNlǿ}Rt$ "*];|YBkHS; κ3=Ԡ_ }㝨nfAn w8(\ ;_v3[V3J;Sɼ(olhV*6bxDP#DMݹ$;Y U{AE%_?1O"PtH!<;fä)iYRR /[8ΞGDoT-ACM/fxY0I͌$pk/聙j8Dg#n3>G(8^v=I5Ԡhf659OL}fc # 5WZeItmdjp+-⫏JZ\=8=.9Uu p?mv-A]4j,1Z*/h2ng7e;/VoED[0r'* -=\8;{ɦUc󕟧tQ' /$v?&cPЍ#IX[iQ1\KiQ*IWR֘& YE^s{3ygj%fN֤oO1L;#؟j8 "qj^!;AZ+owbzc~"wZ&Cy/ncLryvލ-_KA -akHG pG7k05ݵzcMPfA) eq. }e\6;,CwVHdO/tFfb~P鋅'_z{\XիlNPp+vϳ"W:#|dɃ2WO}JzL,JˆP%kH4>1(h74 ^ۉ٢Se^\!"[8~kӸvnZj?$ WjȹUfiaH'!KnDgc)C Z,q-8CXX¹ѠeKk& ::Z6iIWy4K>i G a3TgXxx7;iokQ̧A}8!LQq55s0PtųbQey%YfĬX>u0d+~B2D}@Kbm3);KՆ!m=s.\iA)%5m>6\~?:)wzs@IH%X eWڌfw#U})W Mn_&9`B9#.@KdFb/`}wt i@t.G|P KuU8z5 n_5}cSg4Z8<-dIcy.+7ف54lQVts1Zel JRX8~ɞ'ځYh=g;`ckFM}eQ[λC;Z1,S^~qP"䭚gd.,1-]ɏ4߮2I!$6ψˤ%XVlBQ/{@^ɹAԲA1o˪8+0,I 31h$exРq9z=k,??K<=^>@t-ח ٣b&~`X E.| 6 Bx %IG<]mFLnZzRBi/lg+ 6pM6LC\-pY>,I hD/.rNǹӆ K;T"c=˷-YM-[wf$#_)Zxe.w GNfk ' UU!7Z촟I?bnv[)!LyC%bMs-OxЪCҤo=f 8c>:]j5Iҧ+\iaQqN'4)6o8LBQ]Ȝzu\txR3[.JoL z2ƾ~<wβhuP雡cĽs1w,RM<aP.jbM[dGݣ}&#Ka"N6#\ŅQ:Ns(n8k hJz$ŲMc]R]t׾_ɾu{s}F3RRSݨM%XQ%co;nNklSPz7fZ'S3 }R:qUw|L '@@qMnz}4;Fo(0!TIgkx?dU Uctmcs n۱ڞZQ>NN7lӂxW\>"\Ԧ j'_lv[y>4Y0B׳!Bvm% 6^k,{v}0+m$+M( pv/mNC {XAL1U~0eq\eӝbuXdkxߎo:!ъ̂WCLNrlm†6X1&T l<1(6.=uē{C!wk de;VLNzhfaږN,Ri8̣< j"M`gI*] lҿ|oˬe>* Xpho4~#ŎPk]~ `QŰnTe;=K3*{%ƕ_ 8.v?]4[ {7*5oxDqcSz5ACAh#hcLN;XPK qV=ư6AdJ~m@,* j?ȈTMF9t nCwȖϼcCg jicŴfUh ORGcRJ[oNN[֊8Zc0sx$}4/K+C@~]C?90Dδ*( Ze3V!H@CunL8Q5aR1l2AY.R'IZ"ۙI Jq(^՞nԓ O4Áy']ISD/ mD `ԑκ0N./W+n^k#g?:.Z%z_.rm=۠IpyM)CJoZU c'ˋ9ʦ=sY]7p* ṁ?ǾAwD\5q\ %?r7.=r&?Pܔ.G䭢J+wp8Vmz^Bd, P"pyJW3e 0[ E|&hx~a zr5rwȒTC?bgq25p1 itA`&VʨObJ"%Zyht}s^BZz;ۜcz8٨4"[4.F.OC$RKLH {E\ '>asuR5Z!&5'h$B1GL]v&gNey| nuU&jԿE(gmV=!vt֩ Q`6*3;ţq yBy92_>Rp9R$e=T}ѣgZ1pԿtT߹vZA/teb X,Q w4K[Rlw#sr~ bEߓC/FI+xzAr).Ө%[ꌗ0}!(Wv7E%49K$ g?=79tʗVp ɣ̲3$]IcgNV?>].1;1<;׿[ Mº}EdF9u|E6,VqaV>Z-Οk"c&\^rêJ PܙD*rLcSnG]ڕ1-Lا0<@&ZHw2/9! Yeu7#nd_RlKK1:0o'2/{v<-u䰢Oǫ ,t\BR(`≼z  dr̔@GC2׆ePnga ^iw:/(nBgFz' $=!KlA?,6V|6]F7M-DaDX"UL謾 eo |G14g/IHFZ ]w$XOZUp3B6<>zw(_(OL;X*=[_2|c„А)&cK|@ g2g\=7m3˦0NӱH2"bfQ=a_=1I= J; Tgne(CK훠8LNчv4ր,4]@4;!DYvʰ*]{2N:sΔLMp  Y]ŝ,?)rĸ= YZgd@cƐLε6KKI`1eO܃ ꒃeyޥnNo`PުHC}Y{X,O,&NYi®& Vi)^VSD7.5sF0,@%oWާHQp!dL3hɪ &[(,MBG5 Τ#q޶HeM\8}ZnHڊ2K%{!\?CPjeP]BCGxFkG^,ZC8Rʞn%7'zO,|\VTIeLԽ|n@d  }E#>;ʽI} Ufv5p(`}+V#':{i+^+e~MB4̧%d5y0 !0U6WPFS ^oi6 -36x> !NP 3rhfrB~I2~3sQH?`I}pjgP'@ouWKua֮J=˧2 7$o*.:"ҔV-L#W9{X/h(ۅ.%% pQ)Ͻ!,3Ȫ~EimACUiZ*41>"ysOͳ:s FHn5wSǗ{7)UOǶGLnA1y]ފ GpvM|U𿳙ϊX6:]uxZu!Yא \/|IlʏpHx`ɭ}TPr˿c~Epx4O_-nR ²ƶo] #o^JQA` `[:e$D(VyʠHW喖2]ϻ]ƌ!5oA3J_zDi8ɋwe~)]kUqwRiD x;P MܛZor<ğF߯NyXb:K ΃hv]$ "Dz֛JRON/@v<~-ݧQvl&b2'4"3&=s*^=TS!VPP֩4,ת6DuFCCA7&5-@MaTaÏu;r8~}ppΒ{CSj4|RdmO&E[=Aa|xю i=gQOcq\=?1q݁ !7y tv-У#/ 6$ 1g`LY7H?Pw:jɻD9S>~B-h 8.}%u{`0tfH?r}(DT&(1*Ǘ?FgkW,Ab4muՋ6y&S'{T9nSFyrwHȥ{](]ʽď' y(Z 3)ձȏ|J4dr7VR[al賂]^حf m-E "l5<ҾSW4/ySD"JK D2' qUÜX@A4M;pC?I[eOئޥ^%huIE䠖y慖v?P$Q:Z|cq,I$WL#n ʻz%9XR['HS] VyrZ, fN(˳5].,4z) PXyHFcT|#9b%7 3cΨ;Ѕ*ih@+{Ӹd&@:giIURc3UGOFv V'$3H$5irvjg]$}t.xEF%ki:*&ZӮ`=#>޹dJw9(CrW8JQrD߆ڎ~y'TSẌFtA҃]KtEf 'I?S0O2Iu^GJS<T{GR۫qQw9Wwdz͸d,o΄JXtWCx -h~vaef W-d ++[d;5 68v]a|:)h&wѝU,An'AMdj_C)\ .ka4繏"ǥ{fN褊/:x2x}wc|􁋶2)M2+%-FLOdkGA6? f(_,/ D_3 7ro|Yi5O`yl`sEHehX%uTo twG:Z:ņTay`~ڮB%|7L1iV8[;fϕLjy[+?hky@\Ziٞqi| zPPy]6%"jef4=зJ|liI.4~<|cn='e5b[ Ry>(4+rL<6C#/[ۖb lIUY\M0"Ba`5C 5})r'-u21{oR[o6^ͮ-?aNw؊3be/*^^vP1,y&fMF$KdJ0i+`A^a'mBLcGJ*б^ )/^ץeTʁ۹3(TAc>,[-kT (3Z1rq%6;gz,_^و1<tN/ޭbGB2+ ?;D~%j2;ϙC,1 5hT%߶荛CTB .tݟE*wpdMC m^EkXjH$Qrgeމ,L`J},sV~CKⳝI>R*{X}<[21Zyq퀍\q=u^f8F7alַKO_%*:*e'i2{ѫ`soe|MA4_6wkk,4r%Aq7INFJq]X-"RBG^]W0.:@O']Ҏ'4㖌¹cU6g3(|_3 Wh.A|~OҭlA_`+tHwîcJ&_V%,0ԐQYF#Y۽sDBi?D;/hi1+S'F ha@}&,)?arZ/ߠM9^YS]-Lŀ9hk#T+t2HTJ1 Y"SKl)t }y o %i*ֽۂ(%⒟kc%9v*/TL-֭lOǒrKWi*.8lfT6IQU1Dqx'OX7U7XH7lZ8I⎼Ӆ1_r8SQa8t$!2⻊!}fP} % 5d3˰cۚe+/ar(G1XÀ2; rjV۲%m#(n6d ( EBmnL3h]P]+'X_N*,lbuƏ$rKvE_Uڃ-D<'l'!v;BOJ[>xsy=oʊH ڳl:sgz7@tvWeN#e/Ij~SCM4;%Fip5lF,KgPk%æʖ;M,HZ%$Vb-L32^wQwkl^^5fk=!/uڂ|_LұH:#P9k)4ei+]\ډ<.c;c\^"NA~~/(8*Ãe  /{X4`)k3Е=%}7 4vv>f|P&Jۮ73yyrV++b9䤸 jJw~2Tut%lȅRتk` ׽|SvlsN_WԵK*9)_?haΦb:o`J ]t5 ZY^'CP^R#cP@+a% j:ϸlͪB%ˑ@e \&Py:sۺpQLHJG33u)kˁ-Ck=c줹KV&(L}~hzHI5ސN{^u 4xҪ~bJ߭_睊-93B-oߝg:j N *$4 JY焙AͼR O<k5l/48z, Lce3[ثn92vjmkz5qiEkfgQeV ˩t`dA~{-[O@^_:, 鶚eX)9 Eh3cTKE,P#zKY*$:g $Paes5gL S !ox`*59D~-Va0\ȡPhv"HC"=7+`L{kb&: Q yB.a? lHe?n} :T>OC[>  igTY P' ͵;3 {&ߔڌ(zr=˳̾?D R 1",쳂@iN^6 *gQs9/= ȐFXV^U4r/ D_@ RՖt]"^NWMs!䒗.&jh?c/ ,wڧ,OO6~&7:gYbNŪK-̊S*S؋)WUP]eaQKfeAe*+x? ֙?5PĢzi9sob~ӝK`q69V9(z!2 .` Fr~ %kC29s;/9X!Fe쵬}.q53 \0#9,l ]}YQx_Z vN;sL%.-{Ki*or$4:)!CNP6tҷ)W|eRA̱rC" @\&ϊ >TWhtFr;ub RDZ.?tnrRIUZf($)ʽ\Z1 {/\ LE6_b W <4 %d'ֲ.E!4T.$C}B$ ಳr%1mTOZA[!ndR;* \ h 1 葈By>[aM؂E kݥj>O "YZCZ# Y3_ȹ$ıf-bNKJ;ct8Y^jm6^BخR}jp S *V:s4 @!밻a4{ۢ|\t)&?ӶEe&1K#20o'?i z`Yۜ.vǁ XZv_1h)t'k! QɔT=z ){r`7(3 M1xE; ܛN ${4! jfuM,vx%.T| rD (ɲT YOApې8'|^Nqq/Z`2ݡ{2]. NJ:s8V8_*ru86pn$>߄x) f*) a !vs.9O>v+*bQAID-|gf\q3t!9mۑaYdH y?{b(:h#Z~i! bv>"2 <%;Q_tV5vGC/:vSkz%FчeQW`٫/WӬ8O[e  V#;K<^on 8 FՐj0[kI׌dm9n" ԏW9i; 8[Z@}@ mkB V)~)vT1vLv|#hk:urUJ^&\3s(hʫFcmTD{-qϨuEؤ^mFD3Cn2jaBBY<6~]0w@nX8H[Gx+ K.gIe49XfBP(DpzBC>yqGZBT@0N^/ YJ.Ad\dCG¬h2e%^O,Z;fPm+~8wY欯%ۃALZ)HN"P&B{!M.',HK!!Wl^)?r([VF_<<+ccUa5^Aq<Z aVvO[9|h0Ģ/4:FmK`wښ{JF塲_]|O-HŒj!6/No9;OwaRX/&,;I|F0Kn q!`𾼥`-J, n>l=!,A7]e,'%RpthH0BI#r)7`y5xl:E@R$ #&m}jS @mMo~>L/*kTDsαKoV=[d>:h"?\ _ɯŀżԩBx*skEWb&sa|R%oo FQ`1d1^ܣ9ߒ{k3M8|f Wh3}x~: ȅ1%\0T"Mx$9 .gMWJذa`9y"ZIJ|# 탖GB7^! Wl_i%=[Jt{-P܈& 1eS hC uǓӁ=nnHʪ u&V\5{#С`%GZs8yR'z_}M&4LL@ "voT9gig2<.ex}߲(a }@ MTEh0( C&D0 1CPH]rB+JZMIH $g *qtnGBnn0#vʯD^Z}p9ǨăʄRN\\} ǓWZ-"& wQ,Z4O |2?>,y, 6T>M`[?~oz%\{IWY%*;/9WU{ m K_:N}T9aP0fmZKf)9hI5 "/csQJhs"8LˇtlDjs&A]D" Px \ ZgWE"JWjlH,vxyI„,KCpOOQv6rdaHL z+TO+fm >&1(S38o.ԟ:yF X&7g1h9d8'v;F/ayha0vX11A *;BCUi@Q(tp'o7zk/I[dd?j $9/sӥ T HQigh@hԷudjdR†|GïP7bkU|w!sW3k7YL u )v U`.ciu}&UYw]#ΐ廗I_{xOijN+|0 :$?s=  'خ$֡WT|w<&]O%_)vqV͐gKQay wH橑\7QGؔuX:ïthk丹`hp3ͭkgkh ٪ c:UJivxfT:Eᚬ֡_O)03L]B;`*S9#k ]79hKfڢZsEN/87iS:&W;;O07@KzoV/_R_-m\E!e[JwQWW}EaVn MqUCŰ5./C+#3}euG*(48~HZa8!ݼ3["JJz15|`38DWGW?u[%k{i<ԳF'Bz&+hqPO6X8&3kZ?̭չjc6~nLE;[%xGBW"+5-[@Q)>j:JLYh$qM֯]fJ T. X :ySPrn:A*B[kO>bk.|262#'!: 6҈{KA7x,GUR4L6e֔OQAwo O jCt BK,85o ,mw#Kn zmRIaUp;l.oتÆ.lmQ)Fd&TsLyaܿ#_*04V.'8{竵05#ix;ȢrAXRO:wr:H4j%2xgXb߅ԑ#suB'IU <:NTUvT %tOĹjzƓLĮtev>[`IVL%f;4L t'@9R؆۪fxqrA :ͳA)n=80[mDbFU#^ -+ @ҏpqHm*>Ӧ$,XH@׋=E zD#5gi֊o4.?Pws1JA^XA< /})vč^[E cA?aǢw.uBrow e\ ^G!yҔ*5g63|Ŕ[(O8\x%zځ]QjOCl$/҇l9+sϪ VTp\qq =X %85}mɞ8}HKKڄ^1:2Ux%OkCɁ.5L0 m":r+L!%oəfŠL׾2.4rEp*fF ŻBuӟ.3qԦS ~g'K],OVQUpx\#z3EV \ϟ\㋉Gb9!!-29TmB!z!ȫf$PQܚ_9ޱc<#:C2sso3p ^:ZtZv` d@M~6P`zQx3!W{/C½ 2wOLllow@Ɲp͘Gt3jot7͈pD dk|;E V4nWP$bat}vZWiJJ-޸Zp$xv8W)%0.-p&D~ Ҧ"q"k R+ <#,4je;yn87q{XY WMjLN궻rδf. f&iE$mu} pl{R춼C*T4򖱣u"¿> [o1\J6!Ixn ϭ˴p\ya0CmOg;-E=uN#pAhʔj!FW&¢/Gs#yIim1Po RTՊۤ8\iV2 ;L*Z蟕|S .7#n04RT=Vgwi&PWķg'rfT8_vZO(JIމl? 8t<1\>΄{xgMmKb_V? J^ /`iSpGKK'2Erh!>(~7jT_5O:yaf-,7O :<75d(ߓDӫ,vАxvw^=)LѪw[;9F%0A]&VD=*iaҞ2+.p x*UۄdP vDl'J:Xȶ6_jzx`m. ʱTkP-W{u/}cuvWI- $f&5>Px 6$@U x۫;e3MU6qe(&lGXRkB|;z[vRdhCDaZ)GL:J@QRr4! qVh#zIJ!#WxWuH*C[?k\0<נ4yVʵ}9l5SHj,> &J-яҎq2,31*?@J\?kG"m{A3Z_׏UDΔAiHR7{݄%O3c7ѫ$@HNWHV=Xbc]]8L1р٘;x&(\2Gh{l&V0B#zp\\ Ri/PqN9FO |?-Av1] :ѓ>'zDӴR/+2Д"Y@T'k. av:?l-mĠnڹmfFiLgP2~ێyJkRZEq%!mVRNVS٬Z+3韀B*E@NWɱL.AձbTj'DҲVEʫ;[ YG$oq&6{) A("Aj~@`e)J `{C >4 J I#0H bW؇pMf[vӒ|f&O3[FA9mǛ'sN5bU-)e@9Vߒ&ryFd]2 ke@*ϫWwOMVyW%xF=ʏlYUYl^lF.C=_5?{YN*~~x!N+c^o(nG3Qri4#zS'F+mŒ9EFjKH?-hթq6) op^8Ƭva{W?H$22Gd taP>mE(v]1kQ{ ӊalK a,PysfwI;e'RLW1I̅lu36uBrUݱ_s6ӈxDGZDo^B-eEOE(cfقRqJ8-+[-NXɅ.K<`cMkgt^GS-#S'¿Wad4+Ÿ:SYpY9nEMfK"z̓|% gx cIɘ(Z~kޡgHER'1@'NkZ@ JH'MG?6S.^&?zjwT/*q܄d&{DX:̅!$Ƒ=K"B[{5mHP h.[aRkkimjwjni@1W[! xҹ|KL]n^b?F" lFv=ަ/ZrP]b.q  ٠LF5+TQL55\HZ 6Ӻ\_;*!]Weң"Q:1B +DvmKO~08ݧA _#HƬ}BmP^񣈯L}աjdzUhw$_\?YH{?8FK4iql(ϕ%%EےVzqpVOC(@ 1kBz8V DBy.=.&QLED'Y,4KERi%& ս/1o0UKDgaI>N8c2+06pN9O閄XXOP{8i!HqjEi6P5 #E8nԱ)n* heNn%S"Xu1..b\+=MW&eujKbrd1}]w\)8YHWw {R|9҈黙4F1.qvdĞem 1t RjOQ 2r2'ҳ] č,p\YYךEH:S ]stSh:x3v8_6ƽzbNyedLdbݜ"2xO]9Н| *)@A 6T[UD5cg3D5JAnQOs.a<9~a>KX>`#Q?ң.e rZs; DQ*IZWaPe׾0voTOpEDGpvNcn&$2lgh79)k̐~3ɟX'u#W줉c?EaZUn.< la\Xq ;:v $iOH1TJZڤ Ix '7rDhAw1Ȫ|_*$Q;l=`GGgK\!~*i&(|B/4|t 9S;&UHv5"0,rokG MaȹQ%%֜ow98u'OkVt~'Gi?ui0N: l gz:JHFPl^?#?4!Q8xPG5ŬvBT H_=l3v4_ͤOѠG;NFqrA"uOlg!¥{oȔ t0R*q(l*ӻ/;+PᎽ ڬjM#v@Ȓ93c.pc% oBUK̠,&?ȋS[e^қyX11O{[Ap"u"=BDT.3'BC3[yL=cFK5{_5@Clv))+31?5uunj @oCN`,!N7!xJ Mʫ& -$,O:eCWYqLn`^%5AⳀZ؛.ߔ t+ 2z@Crq4[#J~Eq>${>D[bG|RqS Uћ=L/E>0+εQ`NKR*V@R22.%g1Bf'-`mzCb"iw_ّzԞ.u[x.`bmUdG(A%+,b!@&<4V.'sY`A GjUNno8o!N*4*NۿhgmNw}ePzJ{ BDM;nJv 求h?r{jգ01^T4:!K<mwX^H9Ǧ)(ojʼnsFo,vV~l?_B诏Z7A Vp|}8bVPǚ{ogq&ͿηNaH,ejնƚ4< kPIuB(q*0DPYAtľckS'|4ލ[Ų$r.y2Be)_ swx)l; <9\@q ۩+{~2H9)tN6lv`3b4 R}3P8~5EB(ÿ=9؈"Dx6}E6lV6KDwCoĤ}?OS!g]PsYopD5""]@r34+ɱf 荶pqͫah\?y!8֓w˜ ocXTԍ aG睁WG2IoӠ|~c$=k(_QI!Ƞܤz*+Jc ̐9DH৩h:]ҥԎuV ;1df%cGr WwUjm>^ӪJ55ГφakUh A]`GlP~'aUnUwx4 /~_L )]( h8YM!}8 |הJ@ ST'b ْЬ,'HnM'|02f6 Q ,J)^8$ u*l)]lֆ5U =L~xRө Hv~o2>j\[%(y*8qml|;r6AZ%T^~_5&!s -N)Q;ȟuua@EbH"֤ v3LPgJ Orj:7"8"K͒Xáë+.fGUo'81j?Wg|DY>F>39}D859"W ~"~[uA~qIuB&2@[sjc!m5MZ̍b'Ms7VJ[τLMjLAWT@73l ,p +6ݪu mf֨F4kI`+IeCQHu);F9"mݟ`X,6ZNrœh#^g}"lP&_/~}b5fsOlx?hp椙۷l$~Wʨ<}ozvh CB\pA߆]Y:}:jPI279Tgw3"斣 R˥k~m#Q3\\"qEq3FfUJ[`  i^7q(8ZQiϯ.fM(x0A]Ͱ*g72bPm6Čk\sN>H4ſk"\e©w|Wa `4`5K_lG HJ}8jOQŔ r&%ܳԧ`nύ*ش'Gﴍ8}gv ʤ+K9)p+-2dV )1s(yE3R?1BFTk׶:"XnD@R/zw@BXJJYd_zZ%vC*Pz׭VպK\=R{ oV*o񵘚Hڹ/jO͈b ;՘캽T)6|sNt4k cBr:삾 ͇( z^( t?j (U\EGfK_ ge.!+b~j/ i!}Pg@lnz.We[p5U@b8qt' kM[xI03h o8O4bkObO4{ԀFmH8).e.뼂ɏ&^C.m k%R@/,Q҄*<0?S*~%FУhH90pt46]Кi@VP#>qP>6!btCPO͚'Q~ѧ t kfMGr4RmQ!ѭ:X8}y+x"⫐rvsoB4'x7IT5ll2 S ӏL@&;|Pv+>rv-N .iIPv/UʨI͙,y4ElTh'a H3޼AR+IjpALFRIq{x}7t55X#L [5hFfMtݧxE$jCnh]b_dBmbПC\ L/"gL>B9q>W 5}wS6 ڿj[SY"X$s4֑| Jx7{^@DIg.`b6͇\]bö bUN ݷz DWv9dH?MBܢ y0M,ovxq,>OPaoΆ$G.aewtvFbGFO_ z4K)Q__(6eIsF~ ^"q>񟒵ёY;F$ FBqR4ļ%R<`~1r؍kdH?G6L^ d"W"BO<|3R|/Y9_53Tj9-gGP ȝeaLrTvΚzQԔ&VPk+G$lB6OeՎq<t(*\$ZGhW4I*WW\5"Q bqڐˋ-%MBҚglWrWʼnn΋x2@wz5)υpLRzUQR yi, ?vEoaEf}W_j(?K 'kmF1BvYWNb޿<3UY3,*CMo O# p .i&GH*Pݫ.gZ.K]JŴ{kWqԆ\dS-ޜ @xyS~yk,,*@s@轥'<)t' O-{/cCr}} qIg >̡✳MˊLxT,조O\~fE]&PĻ/dq>O/ p9LyJ Ewo"c2 lW[>-iq"d[#;BG~R2ZfWz0e /PeZ(x};DؕOVMe,JN4,2 Mv0jJ?i(1-dhabmwfr-h27WjS% |59IX\ ݼV];aMX4I3^΢Y 8zOEua4lSBjQB#3 JTSw>݉*0uQ RvZ[+ng'4|3HFB _mOD8ݢE<Lp?dpᴙB6{ Q*Q_PeaVS]U+ 1"Kh=mlzڦ+jafUEqd3.{86}~.֤ LU&Rmi@PYڭWfU3uxIoZb0*y{Eub2;K=Ѳ)3PQɷ1{:uޓ\u|^eu;{a;U/FB'YI@%䝇(.ZH9%+{9D_MF?Bͦx! g.{N+\Ip=S[£ض<y|þP\Fĺa(ivH?SCncGn/܅~ܫg˝xɞ6G>&ؒ?XG-#myv=<^8\a:ح%:04hzR[9 ÷D4&oowɡ*#a; 8xn뒽$zLGiނ :RB\|,S]^ḩɴ|+ᧀ\='ܪ+TcK34X1ufOM>@Gz+6c+Ҟ/wyK+CUx5'EI1*{g]qgq.GJ&cvBfY@hV@n7%Qj٭ww+=]l%^FGx* >@Zd`Xƞ̓N__u K :q%̄cW5l?u9CQ|qNju]K ٍ2SlEXr ! 0r~EGpLdNcaЉw))sȣx)GLf_).enMEl?P秃4J.I׍LrfJC =jҞf4 R}rj#>63 pfWZ!{Ap0.Zsi[I\Xdg9fPHiux2@5sA9W>_{t}y0Nnf9!"~\EX9a!ANYK*]_e8F`qޑ6ޭlZq p3d$^5ĚWMvF FftMy|x7>LcXO D}4Ahـ72Eɤk3Dj޻;9fK^Aqa7=NR>$-@Iqht5K-†<*lp@^~T({?ܭ@L|А`sl>hV~~6wOT]_1 ՠ:NfMf@Ù` 뒟O6.eҁscψZhܡhGҜ9DXm[Hn.^} BY:\+I"%&7  d0#7׽S \zi0|e8>͏]K">[z)-`gaT[&Ssj5$.ta ( r$)< IF;b(oCbH+Rۺd&fJ~PVN &fIBumhjzޫpDWzaN4BV8{D؟_mҮ56>Z u~_Czc ru$PC SVGXW|^H0{l&l/Y!D~ ’9D*Lθ%c``c.zog$I,D _f9XJ@TJ=IR YwPqԵ8VOk-*pS`WڊKASGf*weLLi$%!@$kPɍ_MlK5}TEL9br?kK0-wQC5ƔZ9 7ov 8WB EBFgd 2U&7 ֵm*bсqJ$kK*vfOOe&M4#󣆉=%]B橻u:v5Vj2"AQ-p,*d  Y+5I}6Xzc}zQ8v|}9apkG#HuB\Dmyw˿, t9+ܡpX>-CX+?ܢ/7{ \20Ț6k'Khi`zUp=L/ߡL}L5D7&+jٺ0 `Y 9 {#\0;!׳×ԫ>ril?+ S"yqo-m,^'07rV|76ݦ?(|ӥv}1KYgy(;\EDW[]T4o:3^ämNAGc4z2%)؂&^ .6N¬! @h<͊3E00C4`BAJ4 ŪT@.gUS(QHӉ3OGMu\97D9ԂeX3j+5>ӌ"̻22zù[mB5"hGI,'BʨUJ]Ԯ5ySl{}Zo)fE!VER~6k%<]DWXIp(tP0ab1A}s'f5Nd1*S)}*ª}ʼnj9ZosQa?OY:v;i!U00Rd7QsYɚr4FFmT/ >B~=8o Y jzW !-0U3,zlcҒL,]8pW1 yb&E]fиj!5qjq[돮J:qvъ})+k4UdT֥[0; 78}ktR6(utJ!!Ws/hFMUsJ lԓ#*Ӷ)6c֘}647{¹B[ݲsfPԦ3ļt/dȚ R)K:*5eu]狦~)Bxq[2Sl "$elg͡%\Z(H3<~s4Ҟ 6F;(~`H{Kgb~SW`y1O}N7 i"X{tZ͌+G0')*ٝf7qZA I9վU.S낻zsބpdcK69]c_9NjISb]O6u869Jj5eֈ0D=G(ΐhp+S'$s2цX~ySєd^jJM4ekdWF=R5eYRۨä949c6IG uڳW#fB w壘"?1zH*&7尡ƽe8(B2Mg=qc)^{-$Zw@xB,{r[ui \Wri5p$<*+ۡ-+d0u#ik&>j7>ܕILyE|٧Xƃ{X־2A*U"RKPH\$,0ءOuciᩎ:3 }zz|)l ʿ!m]IhD 'uD~a~[4馹Qm&mqjOwi pK~FQ>~µxv2E[Zr[VB%;j9:ۧb`P;U LS_g^ .xkɰYT6G^?;j?<'~<̶rל?)FY<ٕkl_ClũݼN!v !ЕlRt /5DH0`Ss#Ԡ[G?Ih$Ao/%9IT*%sB_=L Ǒֳej42O:H0[0*ʛnH|T5I'56K󇤸2StM%rܻ<"D%(ګe$(Wr9­ [{3 Q*x“&aHizXQ,:jQHNt?`V%AC=-'}WWat 6#Ŕ}.߶S9D6㫒|#L-+!0uDCWUx})V[bN(7ޮjE3H2DFcA\7vXxu|GOVWoǷ:W+'oܒTcv#,!Z?qa/Vf0Xn׮xOoqݯ+%f&Z&Z+q@af@i>@ܓ0.|, 7dBcƬ>wԀ;Nv$kR4@S(VwK/xnxh`YY8B#lnExmp6G`;E戂}Q;ljh&g1ծD1_ǝS< nWU=Hly@C(6nK^^GE\"yM:l75à+\bk&WYWit;.1v`0~Und*+CY <;` FU'ڻ\Tю3Cq&az^0Rw_}Pn/=RTB;qY[I9yhLjp#xTޢIi~:@4hFoq#3(]TI插RI)[&ۼ59=0rJ֊t#ĸBNŻ<` u~Xv!?oZmj%5? _P)XA(Vma̘.Fk^LFm.uq1}`;\Gy&V3x VDDhz{zY!Izq!L2i6SI }ïpn|sV#"R)BxDT] inFM Y^!~-DGGqG!@Id0 g_>ϟqϼ- kevY/^{mXo^aŕJp)ܶYRJ۴v?ңh*:P}*Ȕe-f!Dir& `p1aN𣷡 Njȣ{"5 *?O@SOOӑ&X>>Xՙ.@fѿp]n!ъU\Aڿk;HRmR{,ˁ_rf'Jju3x`ɒTp"|7?>}R0\V|V"' NȂ>eTpK~Q#\oO'ЅBҬӆR}:zvTHE#KLCK0ͯh\1|imT? jѝ9K90z&;r2~[xb 6Xi44.a XL5S'ZZ-N;q5Fipl) e*·3Gf@Qt,ܞkȎa 1EߪۻJo267 s3 ]:->ӃL5 n!5Iri*VYԴYjcE^¯.}`FVsCǖ;C[1?vXo!"m#X!|/O:T,9OdE*cDnYB_uLQxu"7Yt2@U3JMZI،2ۑ#w+30F#wv=x#6}o) ~.'X /р>w2_4eOnlg88uۢ8.U:+ER5 $n6QA9˜P˥a%>#*/] ]T\6wusv!@]G Qk?m TXu*& kZŒs$_[^>{0 }[)+;9sLi~EIC eh|B*< nQ:pڏwz~1tDzh yW\mfiA|d>f8@}Xyld_sG8wEX$yHlE A#ppݻ*޴AV6;zm;0^e޴"͍*Mi䠰ɫH*Ő{|P9ң?:N޴JJA,#e6- }_DBd 5r@5wIOm -_XR@vF$= 4:Tջ}D}d i1 ԣgqn5:2:3&ja>A0gԝ |^-ڨ-mc|A4 Mhd{Ƨb*Ty J E67J`} .{@ .v9񌞺2`B kz)p"jjMst/ztV͐LJhNͲEU RJn{1HBAerVLP26jq1OHV1QP3[&nS9ZL#?k2;B&-ѵWrq+Fz2 g7z+xX.x&?&9'aOzGte?atw ԏ-R?1{!m+AcX/ %n8!Ezkӫ1&5"Cr#bf- {d E2s}?~Piq)vnz(u%g!0aP iF;#E&Huω6 UL*b.J1~`cZ .}Ԡs4RFx!,kzYt%NQsk46Xњ^R=Vhu6~,^֦7l/1I& aknO/5#R.IS찃kգsq̊9z> c n[rUIrCCLO!hǨ8aI؋=/> P;svQa>6} pF~A7oX1}N6FeX|&T P`FnϛP"9DoבHϒ:$ul` 2I$+{uFRן4G2~/ -PwУ%ً&QԈn.&nS77@O"=MBO'LeGJ;Gpb}6/ "ңj J˕1, ,nRAy#rZUNxP?K ++jH0|bM*m`m z+딲2DqJI-&Wuw\^N(6uNy` W`Ϙ &:?pk`,.lăk, #[3~ ƚ3%bo>SAO\6-ByPI CNoRC{q.H;V#;9EzQ+K sNO+>J#2, y7 CE%Yda 3>I$oEViIrHJ3ӏLx&& 2Kͻ K:hKE+zFt[.y)(O&ty QvE=)RB{ѾpNck/6&d2>踞\LEޮ@MZ%X[ܦ0ugʂv.Zb٠z_Wi89gDUu_)eoX`CtZy4h(&Vm$ r~>3j !Q)lYf1"tj`)g$Xj9{'q)'Jб f2iaJнM¢n5G$] C6C*VxWW;:o5#ɃvCoRX';7/R_"Ι2[)ũuiбD<>j\fy۔ kbwjj& S>GxQƏLZsWd;l$ʱb+D3IM?XFrE1\{Z@8$aO77dߔtc#p4Ї)fTj,| f1K5# *uu1D7S,B8l#l*,+"xaF{)qF b5nQ>&~]i '*#|"e *PBұǜE]=Xtr-˧8O88VplF7(2ہYĥm~#`eiN.#ΖZV?O)P{Pflr<3k`q|,$4i nï\qO׺h,p ^CEC۸u>}aB !3,vJ60Qb ( Ȇ{*/z:Zfd>"6&Ļna\SM?FƇHUz4j:LPkBiEs'8y^-:8%j' eUijAI4yf|UA(t pc-mzwhHdiٷMYʥ=!)ΉM@&V#d҉MxAas[0N+hW4z~~H y@jvE{D/1wmI,n:9\S$Vbq[&prFgFYB݇V+jU!|Vu%$1d%qX+GE; ӰgP=jPTG._nU^9'p+Yu݋QBB:|UFSGTTa{K|T\{{_ґǦyarI(N}&*9P(@* [v@oʖkRkwӟ1dJ.\ Nڑऌ8/pY[upϯFb􇣾87$.QZmqZ[/a.UNecKK3th4~iYA;5Ctݥ%Ү߲م|i4gb΍P3R h@:7lv?Yҷ_9PRUFE9@M֊@=h]h BSawg1<%w q,#wUu1RJ'r@J hf9i/(5֐/a9mJ_EԮ#K3{gnEm>K0ÊeL&x*.+ W:d,H2z]̫6 RɞXvPUb'.(0ƒߎmIY XobB2 ;^X%X &թo3uЯe"]'V<ɱP{o ߈t%o%_'4 --V`i⨭JS^LoJ\"%v(( R} 49hyM@Ml3-&7g2דB4;ݓ9QxeryseI!w'MqPh(C0%ﯸ|ڂ i%%zdz`V]&Mu\X0i#\>Ӟ<+\ p‰=8xg ȋVn0&gTEb8>/nY&6<#u."Pu}`/ %"B"R2ӱ4|vJW(!*>g..B~wwٜE (LpۃA J[/odz@Wƕj Aaҷ0WzǬL}IUݝ!0RÃcRvI+.1&ຨUt=NƔc{`a$,Lym+>v=wyF>*$ J?<=hWT*6`M; J$A~!(O~ۋ 4EҜMYf퀌?ebzdpY_4 $?[tܡ [lb oJcǾؕ m_/y +]7˽Ç1g!5QYKJv,9A>*2#VSgef}i u~t#!SLA̻VfcuX{1׿-{| O!R +KG`/$dAD)u} Cn~'$l$0n=aJՉaׂjHn S/ LWׅ)X;ܗ)dQg؇~̞2Ul5e梼O-\Zh)1&47l|8VM4Uc3ܳiTgFd/URί|:7׬1l a#u`t0WP6҅>ھ* [;Հ?4>嚉.{ArWOJ%vYQ2x sY\ bQ|cTԆĔWG tjf&c-u]!-[9ݥkn b¤X`\:OF,C|Ҵj8yt~e*ge\ - ᚜D%s Ug&]¢|? ݡ ʇ>Zd'MUy4XB-mjvq|YeC_Dbg[ 1҈Rf駝09^Y'Fk<łLh騕9BI(x'ff_P:B7:QlFm BКn_JHj }B!F-?מfȑSZ(<5{4 +ѹƭ7 b 53CYKzA+v 68cjJE[[rl}nI&-bFVXYE*1hi!sr5Ĩ;ฎ0@c;H DBtyVn&ھؤX=U(q4pO'jN  #VKQ/ЗX gwNZ>Wt Fu%r5+z/f,2Ю#0a1A\PΑ 4SKEX;P$O2 :+ !2nXk/;{v\9V 2![ |Q8&Nb(C]Зjvc .;OTm>+~{1c%6/EO[7M*W:-!ěuQgS42azNv#o9YVp|.MZhg21f(JxpHN7l1%Gk#M/\÷ &nF|.C۵/@)Oa' #,3dQ+Wһe8e8+'a.ުGan&-yB!G?M*܌K}E앉l>fGm80Hn82h0({|Q`գ5nyT(:= 7 VBu:rPPF kb ˽~Hf1 ^~t e+D-0W ix3RՅY۩hXoB{L897IvB$K~l109t\]v|'J>ͯ/3Z~I. pm(|-XfF-[|G-]vDL]Ƒù]K}o}6Hçjډsl o\j[}Sd?1/18 ۬\ɩt]F|\+7<:^v`5_;G(>N$aEJ P8zNKw ftKDMKϘ ˳RQayB.,%օvd]rZ/80 l;$Y<ҹwոnNYYP~i& `k~JdU܁nXH$P0NFw!fC5@ݾhV>˶ډV7!iM8sTNa[ %2`P`2nAkLcTN4 \qJHOn]r|31uÔ|x gY?JYSw 6msnC߈[rr5]vE3or t'GтDTNI aJwrUѝyG/^}VA5T-&`C u7m+XA +kơWy{q`1g3k Gƀ {j%7 ޛa2`2wF2~yVJPEO]2ֱ;ˊDi%aS/y'n* =7zY(̓vMs] ]{ot3+&^@XBrͨSE,}taD9qm[*JԤ'ݭ+= I9%Mρ]z]C->ZpS胤LOĶcX5]C*iU'LoJ,:'=Y/g[ X|G"MȃtR# XARřJ a(?Ӷ(X6v>tgړ.ݰd}܇b~dvj09%B0CDNkeG{sP"/Q `ga-1u zp/ТFg48yN \rb,'>fvresÛP|]c suPC1ڜ3&KU,KEqZl!UY:SnтZdI$ rsJ@LTq{euUH槥Tp 6VЋ@(rr98L E -x[i`OoO>q@۳8+@YG~>곱_ :sC|;ٷyn 9RZ`"5Q'jm\@kќe7$.a;'/ܗܡ6QOXsD -Gn_F9=Q)OR8Z1Ì4\* 5-uVԂPFoB{@A8*LƔ[?E5d Jʬ6Z/=$3<w #QpWOK]^}AYʯog.?>:cStdΝ 7-R1gɉ-*ȷbZR4:r׊aY&5Nhfu)p w?TΏ$ȍH罫{e.niyf;2g^1OCBc6פ}N44%юdL?#ʞΑQW{S7vW-zvV%6 iph\aM|Rs)?foUu6ekN:hi\ &gKaCnh;ﲏLCգҽ\}zТzA_`FNҮGU&vӟ/N^RT2AMJu;$b:@ܮ'Mf-[|]Zm:*^YejJngX1ϬcRc>[_05-HF2wI\+m{PAlw'xT{*<<Ի&whϰ1Ɲ50.θ[10!Rܜ&z֧|*ƴ°3 \ke^B.T3%}x6;+yCGIkI PO݂C_geUTA#~[ޕP ˘2ANj_ߴ}":q ꄶNU6XkCz<)d#ׄ}u`#:#UրqPVzΗY8(>ݜr|tltNY)솹 (\g4ks0]1cK/ E#{64 ȣht8cl)ZvpO? cT|ۻH #5IہCR~2 U9Ks6F0ns|Y֌)l{=5z2x6 CM 6͈ڞ|콼XP43auPQ? H,r_g<=>)l@4iÛ {nChH'5 qɘHm>q9bKWYC1&TW Io7[X1;mBn8H}F wܙ3¢Q2^k\UEx-oKD,)!r)k1޸}n_QDNQX0 :ޏ% W lnV-{Hg/{^ W3TyCUQ YvY7CO[ݺ`6/R95y/mb_UԑǑ%0$'L=ת2S0jiؙh>F7C9zκE?W?-Otm~g-xpcE^Ԝ+ }rD$]ߚ]RZ}w uT7JCGKmJ ;1 YYP놪U&*ꆵMhp03 0]=zXP:$R  02ڮO9.ՐړcD2ߪKfIR!(hpPp7|^fm;,@MEyWgܣsf'G5,rZ94*AS>Ϯ[$f<5?b̅i٢ Pʲ`V2(vMpb![aw:۠HtlHZ|OÈфx-a06EfdFMGTWl" %qz$szrK ?܏v.:Jkq5?W4w>ԥĽֳfu׫o&W,oi W^ =|d-O8At+W7jU"+r;GDgB6#GX%lOYkV *OG`Eqw<@i^>#Yd;fA ֮i?\ʴ?r*ѽwc>wn"ItsH:C m\ʀI6ip`g)Gq79qa3r+va6xE6O*NPqhrYQ?&Ŗ˯+Fqzwx~ =|XF  8hͷ7te(8+$!eY[O2M܆żϳK63yN^ &Ku=V#}l{ҳmuE>\fBYdV)W׻,2>С55|n#HIy&DCg]+zoRwPrZԙK>Mo!1?rBMX1JxQ}fHߏy,ma4 z%0Adey 79maWK7_߾aJa!忥u*nZ.3UocKΠ|hQe-Y*foi"LW>XĚxB/_e=FA,l#0ҷh {6m9B-us6YOTɹ厤2DHhyMe.'72"Pa OHRj*_geuZ =`lHG;04tUҟHB5TNRg!LfhζyT`Rb#{G\-9>wdVU/'g$0hPJp3fr k~f1r(+mR$X]=̎ATPEUH<;̫>[M bljE O]l"Ϟ%A$^wf^ uSvbdǡ\0k_$/L.%l5p< r5gJ)Wb YEJBoTMX]r7)$R갢 ԫO2׶l{IbʎB6N"CՖ k,)"eSptwV2 Լ]; |4%xͅBZAYRrJmǖ7úGF`i+ɥۂpi^uF$ZQB[XJ}#&e0/I <>EoU&b ?ˠIP2ڃۢ+(?mZY9DKONBF+^R K?V $o'%K:5EmyݸdhԩTU:6:}蠻 $m,-pbݞʕ|%auH ͂JZ#u0wHcRGlKʺ+HJDXҠ*D`/n{`Gi\!@ZVy IA4QVS-&+W5Յҙ)+0A5pJJb:iś't*? \ `IP`6%dzFuv򲷇{dr$迋oJxXP7T=g"4^"L`)!LjBﹹS{?쯥u"wE^jD8v8&j9f 6iv\uvVg,Y'l6P|bCh=2/kVLOL͆2#q7! N >)"GO'%5{-PFY sbH.IWHX>Y *I!חQ(r^ߵIf1qjŁ =sܬ|vYc3|g;DG1Qڲ6:Lϋv)n@vFww~"L{' h;+T9!x"Z5|uoU!EgY1(br_xT8p4k"""-6'yf(_p'H ɺR,-QN5/6]bo. 7b$waX5h(v^tP IYi ׬ݷ \{tv,Ljm'ck8H]-l4I9G/XQڋ,^oX:f:1%k CpT* wv7vbK aG!q}G;hL"ɔt?3J yԶPw]8)k9<3f{H!feۦpٻ#qa`!. cj"忄G NLJʈ~F$R\F\!W8Yi^CԹv=Qkd.}jUtEF*eb_`cErND??%J:nYmA#-6A" gT'|=<1lLwБ;ilݶpC ҁEY{PW69Dks\ ^bXʹ-9 h15s4F($+k_^K/CyȨpx!,&3Ĕڰ4ă?k/qi? V.aǻtO1 xFjSTGJpǤXKRN#d)C?_kp7uyyqe [ `'՝ؑN & IP5j8nBTsɦd b席KQ1RJ )lo `jC8F :0=6v-egbw6JTsTr GXǹEԹ[4} 5OY@D~.mduAiMhā"{DVf&K{%C&8Jb\'NߎVlsՇƅ"|Tk7je#<)=&'T{XN9Ga t8K(6S_73B*8uLL.0O~!^I-x!AyN7 ̿ȼ}gfp[*g(ZbqXJ˞=% !2:iGnlдN!S|3< 9ddwRˊ5tlt /{qq ؠl+A#oذN 3^%&|/<0{X|u{DoW_GTܥ=oWytBE'q}/MR1%`?!$Z}~}԰.i*  qT9 }MӪs7eb#W ;!TWrӠ1QʈA=]gNt?lN1 O}XÌ-4/gt f[F?-sdm>6}wZd$ߎ*O%Ĥ7p!%"k#S6V94ls2^ZPCj++r~W&2p7+tYpz/X-8 3%_Xڦᙏ~ (eCqx8),c)<,-?>PH)ZJˬnӁ(ܨ-j2EtGhu5KoIgeI]9[Q !NMȅHWɖ7>t{J^06 i}bKI*,P&* L읓XGhCňxqbL,?ex_ z|F !ZXW1nYK瑙oFq⥴SO\ZAhKG:߆STGQ4Bp@&rH@PBc1#H1D)6K@>`+t `}Uo3OZ NH)(6ᲤSMH([wrUfBk}sʴ@UcI.ZM:xŔ9e\ 5X:dt?ZTZ$f'ٯұe{Ye #I> zK=='`r M,BDR+z'@"ו*nRdQizVDmT`P M6#̨ g_z[cEH( DaGp;>,ai $f'}4y4RF+ky?CiR~yO˙;}qH* Z=/ 4_e>u7\ ȈQQ M?qO69of3HcId8x= )/8*>F vi ;x3WG'4O?IC!Q^n-Lծ.GrAyji2o,N~?jw![_JT M"/ RP>, Q\ݢߘ[? Z}R*1/GGi2/c ;dՈ> P: ¾, ?"{i'ӇLi`vt$Ȩ3|⑂^zb^PMCL'Z,I % tJLl0 ڜxXcP:S(j"-f!Ж(C&?`ZfI."`Pk;P厮 Nu] y&8ah"!&M/}[ǘvo+Qc'@[TG+蟄VB*=o?taơ!}g4(]&:B` ~؏[v?4 Mȡz_{+ҟyI;`B4f}a4=I?~U=)Ltm4>gFY,9NT-,"0Ko:ۖۡRMs{v$"zz xr-+0^{Z O^ {8wC؜!q'"OثrJt 1z { !]g(wh&!!/6ROA VC5Ֆg0)WI+s~6gIf'Nt{#6l`bh2 <",-6Ps[&QX01:^,/Xp= gCM ܻIRMT[A$c=t/aq0UFOQcĒAvDo>pyަ {Lm!iTVGQ6v(6hMRz X]45`e5]S`iPyDb,Fhq%Q}v4(jAJ^Twsv6jF6NE`ȩ^s~8NL7BJļuA;oH4 ֽ[M,Bʼz8P7LϔΡVj-i!+ll9;i^s v)3.^wkaP(QB ) 1OX_2 e ζJ||P4R(g`?n6)0%^Y]o4|`Aڸ%45(Eà?fȎ!fm$ P,?~N /Xŧ6"s#1؇&Y.U|bocDhaST9Nėb]ɫU!xR1Y4~G:hݓ[[vWP$g-u^4rQ J+P\ĝ[iaIN"J8b$tVX,6YE ESP'!_N.T۱fMwztaU)ToD9BQlؔ0+ĵnUĕ?2)s}v/TkA2bc""JUt5?-A]u RF?V 0.="E=_oSmYSuiH"#g"E73vyϰޯp 5Wؚ n+D` ₳Z F% LE&(]+ G*9zTW` ^2]Tj&T -AW=RRR7&Qy7Qѫ]y$>2FR޻oT1{-h Ș.^fPԺŭx[<\Z7.@1gh3}>dfu+$j ֹOÀNyPKnfO5([| n\t^5΅PO>xM=g (MmD%:YvJ dU-0'*Y|'&-wY>(BuUxsn(5(q~rVD7e }O_ZÏËnT# ;'Gm+t+4a;:05DAa5i"Ֆ35Re1ЙpwdA1lҷ;+ 3pp7W+Ү=~rO~+_1y<~x'bBUj3[z&vu<[~m`BzD)'zl3|8pf _@ ضP:0_vdʞUu.WBER0S uk]~7ъ AJz`2xnǽz[sgcW1mqiVLvuè/a&ҚEVԎ!O] Km`X栆}o%ܙR%}#E(JB7zr!:}ȐԷ#8IJQ]apx(湖i~n Q~F4wi)D^@C/A(ox5\Z$SdyXjq,+=ehA01FPMָuĆaL򝇰"wJEwE:|N keg+<̖_7 IQDM܅I׵ʴ'Ys:Ca;f( }~4S߉V6__Qsfza"?iwZ@!?(1֐Ǖ=@m)= gSh x.U t-_Zm@wJ%j?٪3T|׫uF,KR/=>~Ck*mFUPgT%;'6k);3}KM~p9^A=N}%ζ09G{q i>钱fKhjƢwpscpk@]ŢS|jqriVSWLj&PL?(nÎXM]F%M[CwWiGIZ 0 39>K\=\%ݠϟL;SC~FdAl5[+γ=rQn "mb׵!!z D~4g1ʃE ?4D6FE ~spxd8knF.E.Љx\&|4h8WQuѯMRCK5} :%Z|*p=~ !8)(A,Yj*u8Iv17%1#0JX;Ύ[^KeHlTת"uFW#N04cYհ xrѣ~ZEUl9tOO S_= 2x@|.T>фEj"e$͏Ǫ-OL-jT!I}g3'ܰ'eKZ0[PleLPD%%GdGt0 )_fxϛ|!/|*,\Qc,]mD-Uɜ+&#ˬ2'یyOU6.*Ei-("Jɜ<N#4ÎV٢`GDww g΃S`ue"a̜@%*1tк o]e(OZda?{ rw{:-ZIQEĵ>VKѲWs>f rB{Qn90C)\zWb+ k3 MxWŔ>&-1'>$@gNv|=Sc7F6XN1W+\-2tgC'%Z^$^BXՆS"x`lW,.Sl !Q;,/ޅְ4AkThc&a,;ÞGb ݷV"!5T&Mt~ޛ0L^l& 緺,fA/A[àۅ>%\IXZAN^mTO9/VyTG=ga9}1ckvMY덯CUQ` 7"CqZ{WjqsF$Y+3-OrO ;A??  JT:rUȷ670h~>Z_1uw7 Fbrz?kJ؅Y6yQ=41 $pX%I]nH½8u,0:%6ȼL? B׺ ,Nf͒<͍Jz|ɟ!g["Y ")WZIHZ<ؒ3!xYR_eEBE؄[S Cs6L ȉ= )0x笼\,>v=2XʙoQ/kYK}e<΃wOB&5R:Ěq1Y%B(y.y-*B$_n@3'9J?$˃Ais2BxVh}x  t&MaJK~/2h]ӰJƬxL>MML%g+I5r #O}L`h=~T{L&]Qjy\F7v]Y5$([խdf\B2];&ܢE8gI*?ݫv h4ÔJdΦ k~d%1L(%'VdIDּI=oVb.;jʠAQOC RH?=p(V9ppKb3 躿.krr"$;mQ ӂ#C=C^* Qscuj"v%6۱86߹g"Egq40 0J€n"p?HRK2GTmf merrY68(uy&I, y@6rhܪ~'ܟXSJ3Ϫ~&LqTphzh?g[MҘi3z%}mxņ-nms (*rAJs"Ɔ,c_BsH^ZVkf-$胤"\Ho;qm=s_Za'kV]}x4 0nl9*l8/ @KtfgP梄:M8/CDThJIN7Ε(z=W-f(q⚵M'GCk,M7LMڰyɉKO{6fei IҲ7Ж:ԘIq ^{:6슯/HC[Ư$udgZD~Ԍnt+v0ݞw9k7S8O ̛ǨuD­owd!9NȁcQ-uwq >q(Ո; ʖN<ʨ4BUJdk*CV?пrQXWcfu}^ϻipJoPg+%Dq!Yw;bcM$cIT uy?:åPUx =`qcd=c0Se ?soQ?ۙ!\_p9std6!~1 -aVjk;jQ35LxzGt7}cbzsZ;#]XQJK-C)B+]G_A2ݷ܇dSV6 (ca31ME,^LQv>a&z0_"WPKЍv-G jD]DYy$|'M}Q婉pBBBV:Eqт<1 :d^IO|J3R@E>I=c!G`x\8Q De#R,VŚe-2N%$H<ֶe S,W*gC7lZ4)Rڡ^ A+x<[6Y$jsى vRӡ# X{}]q3 /bv /N]M>,~;sdkGs>K=(˃'j,[A/}㉨r*lRdSoQMz#ߺ`,״8d :+hS$~n%|FX!=ǀNkFV,!_Em0(W\wiTAk/>9RVsy' &dᅗb#_:A:XMKʎVBLpxpRP!5^Нz,w„n(o:rIe#D3ꄝl9:FܬZÜ\@t6`n_Ug55.k!-YYHTj N78JѺ~ycv.> [Nb7@XD!P%$K, !8#v(UN:ONgBm|N C$ ғH'nxF9DRwAo܌=4f_&`04I6_S7a1tВ))&b:kn,m@qqfx?v. \&[7?`|7u_rX{m~0C[;N!4 3!Oj‚Ep/_7u7żp.WAy?lyN?!Y,Jlvpfi⡶buƩ6꫋tFwȱxF4gdjW?~L7uo75Y4-Wj&sЙ:Lz5ev>^>l`jÎ-ɒȀD &hT3hk@u/#pβY`iGۈUC7mUs--_;o>^Xv}Yً'7 >@q$2BaJ2~y! XM91SeS!v<._Muj<$Ոl:QI8|! >{e JNJe)ibˁ7k\;#Y!58(u/cHL:[9!C 'nqH^0U:] -9hP!E"xĜx֦֮q OkohTlOf"=C ԙW!VKF*Y} N@=,wY 5,UCRlU\hk+\3qRQwt @fA ;6ӏ*,m:Jw@J-ՅN`Qt3+jzL72-n'YDōˍM$ÌeZ3#13݁m^TV|=nP汌bj0ոSf=%yoG4qǰԱw>\l1Vv.d]|NDPJ9ehҊɠ"JŐ?o` +z?p׆OC@/~-G9jio޲_-$T0Q;7l mV$n,%¦ePd1XI E[ ^J*9gL9׏2i8Ynn3=dg6 P5<_ܑYR,G+i.y)ɺ 2t*L]$Rx0C'obIwNd*Ɂ?hek4Ml\iTճyzm#Jn(;I;""S E|e7:JfnxƶO|)RsV-׳HTNb]wm ޥnLV@.v@)2N;5ٕX|7OPCЇ,/jU"' [x=Xa!D= (WfԽT9Xn /j &0̝z}(ւLW x4ܿl&_.@"#Ð%Ҥ+x!Abu)EDH%a_ߴ=-h=s0p`=8zEw+EuHj$S>Cȥ_OaFJ;hPߦ,em9g}'zFU m y HH"8Or 9]c^Cђ|4yʄ d9ş!ƻC2eX~@ ׮m=0=Z^ʜFվq<"i5]nc+0%f/nzÖ.g: 69/0 JD5}X\@Co {g?qvcbѰ 򊍿eJJLKUJ@Zjm[-vTEѕ; 氖JFU->Ǧ0X3stCv4K -q*Sn0Kb ⾺Uk$DhWoFDtԀ(-}bo'|Ae];u Mj %REQB1 t RfϽ@3Ɯq^ =`t=:>1ؒl={AerKlK^|& bGף{0kDΦ Nk%( @~5aȃ7QtMyKEf^+:H[*]ΨY;DL=9펦)^``%8Fs j _^»_3J&-Ɩ5[x[AW<^#h}&0Βi)YQ8^ra MBjkzʳL(U%3°Ѵ|OhuR;T2Y}#8Ziȳh=e&nV)Sh7w44ݠ~1'4û^aъXVm[89>{ l@׮akkߤɶ\[;}`cC4AE'ceZw=sqVfaèVotjRUnG)Ndo߽ȋX'QՁ\Nw{4! $D z(#QV9F{"4(/$ 휻%d=e@ZAp1L%d @zNL"PVjrhYX^c5-z,M팢%mʓ36 Rp_(p5t4ġVbh!VR| {Z#͊ds7NZQ-=n\obHodX\oQG10&ZUP%Ov2+ӯDN(vhJ!  49bE7(v+G@$ǬPi[CZbVp@*pyŸ?Rs(WRkۤp-4V튖,lt.jL9sg<>i(K@ 2`HN`櫳~¿,ڼ#iSV[J &k~>PG%s-vܜ߷([shٍ۾ubJ@̇}5|>G4D?`Wh\,)23n?cfXw.G-0}= v |OwCYS|c9ϜLǷ/._d&mAU*0rmKdpz\ Z~_OFgojw6 p*nfJ屴^+$3|q]>P6[IrX;(z=oz pUlm3]@~x?3#8D@E.{a68ù-N, o6*r?AM$2Q}G8ٕX? d#q-}kQYS֔v)͋+fRhv<: sopy1}-q_3<8u> S.[)̟B3#X&6p LdxlĞX,DSĹn`ϕQ^92ruR=8y|Q *i?? BJ?l1.^·3`bt6Dۣ̅֒ Yoq0GnQօ*H=n%C%mEߠ ;Ĺ:,]A| r!"nOr*Yw9#*I}'UZCsh_7eUC 1cci#YJB$g`I4$6}Öxʩ pGWr>7^ihUcmHIa8Fsl iM:#P·bf/ [ª4k6f]Ӟs>]aQt9lyϑ-tTXSiEGp1itTTϚQ^f>ȟM 1P/vYUBI^c9"'49tHzg*~؈`\󴛳DAR\:\.gy2f599rȣL= V#s> ]R^u ,xLFk[[@5_pzHqk\DLџ`X;?8Xvx5.Xȯp@݁ Ҥ؅082( :?5B{Y'Os0+f &Fw.S[䒓$~0X%jrA{-Z{4.zTLʇ~QN2z \X 9?۩:EE(8KH1j8;#HT 9B}/ oȜT"g!O]_1mtR p[23F/qN,ڢI(WARR*9;<o=ھ%3D]ˇ[aƨye߰/8δf|,~v욯3"J@pʣXp.^8;c]#p5o3zTnYKK `qeduyTE)h*ɂVmY+~W#'XUIGn3Jɘn&ۨQ&MwsQHHW;$6M;0$I=/Νfv2MAQ1jܦEZ`ЎU,.|FqA5B0dn$cc>0fvH Rj{bbUMQw25+I@?{[QMH5uWZ~0gA܊sp]jcX"kehd/ChI!QRxgǮy]P)ќD:+UI$dHW8FɎK,Y7tk[+Eܺ u?Boh/vjKV`[ S\ztͧvv$~d7\`a mԎ98B\1\tTɪu8S'FmlkRbwO_busu^H<ѯBq6i<~@Bءd2ס+QM=IAWޔOہ l ;Ƞۉmw č݌/g1./ ɇ\Fj1jn2椢`2*&| A%BG)UTZ9N"QeAh Sjw\$؜alq6~uK!k#y>Pet ?݁44K} G94B^Ԟk^reZ{VQT]s"U٦48zD3^+8Dzw19y|V.gSwu̮FNMę5]D}u]PXo}b@xgV^/P}uIiWd3nf;h)5$LKu޿+T<މ6*+_8_Urʞnc-ouJL=wQ]'>Q%p@OcX#`6bgy@zx!=iA<LODu恡-eaNj1"d pLoDS.jxs=ׄ%e4QyLnoʸAjhfE s=Y ţ?M  Yy6ƻ+Zq κeRWxsPѤbX/-GC~,?BT qw_OjҍsS˱9DXng מTMVj32/zڃl'TeZ7Iei]zbυq'UpnjD\͉BW։~,iufU J(dJЈG 얩l2QUd~d1A(3`(y 51Z!lQMDK-e, `')ΰ,ju2h&x s$ ufځ rɰrl9 ?(ahj&|utʄlsvz}J+tDiK4 oQI=k/y$ssL~|sP>34zEU(+{zA,8Fh,w0ֽSkSh^Wxx>Lot͇@0=bӨ;w|&_+︸ %iljTrTZzs#~(9ā)@tOmCk^ Ѐu]Eiك}\pV=%XqdGMIB;עۅ"G͹^\mm~ӣE΂4+4L?~.mWP4i/j-,u({Ce Kߊ.iV-zOi?6,ے46: ”fH`w޳s8s ql}7WbjVVZwOu"ئe*!MS퉻i+a CI>O +V@\e}9NxǏ"[PPsMّFDTZkI0_Γ>q@O[F[;׎V*ficǨckQAy٣h&RL]_ 1RhzAvGl?(] :lܯtPN3WOrx.H oXIFˮ~ƻxl$w/m_PtqWkYqCU,9rqaǝ^%ňh[=Yu3dFZc8 I`2SlG 4: OR6'^Ӯcf3Iv&Wa׹NtE ӤLU ;Nl:b ̀zwɎV\ο)$c\ PQʂaLrȑDt+h8 @Ű;^+ wZ'9^eoFa\}gɍF l, 2d+ԑ@vwM zέeҍޒn"T%\Ȱް. ) 6Fi`S3*G9]rdeNsu-@1_q8sprr,FoZǬoti:1c>CeSE2_ f~S*67RGTqz#.MM%sL(\fȖ:Ȣ ˳Qت2֝#[ON aY)'~5$,)#3^8@A8ѰSZا޴`H <*oS6qȟsm|\;и6'-ThC@9 *8LD RTb/ӝ( t]',NcL]PvkddsD6wMlB[}@`e-BS$ݷL=h@4YQb!}O`9Z_ף}9$\V4pY.{v%gNWŢ~G`@rרZe̡(]=ZRJwO!E!(`mk'צ9m۩hXmH? 3s6hY}87Aѽ2ySrRoh)Elgl B-켑!҉hCT0S6EsQ'rmf(s{h G(eM2l oyߣ3Nx 㠹ze3Tވg]=JitPpB7F%jb{Pn+#^`ъzy783F.rDD?]'©8f#R<`J rMO㿬7MQB g<ƛ(-'{Nփp*I&4 .oi$og^4ˁ{2N!_ "}Maf*Y]ӵ/w~Ĭ9Nz""g\ CO_1m 甍fx%R]F\$y<3mcbZI<H~wgU7>zJ! Y>xF';fIz]`*:Ɲo- _cj?C躆`[ZW}o;+OްA֮wlMJ|/nk!C4 paBru L?5su:fz*љQLRךynҺ*'7d8,OeGuoI3sr. ab }]n)v-͵4=Ӟ5 ـ9u`ϼ ܰ,LglE [>cKj/6|>HLj Y,v-}%#w;bJޱ|h$jfIlrAYFݝYIN8DͶ_!CO7n ۼ'>6Kf&CTǓJ`ש0npc40/v bnLǺ (gdC8v*nw%+>AW) dE-9Ktg`r|§?$bx!motH x""cGk!ՄuFdصa!<8t)B1.vH<~Vg,]"/Ѳ"vP흦zPgr r FP b^/dc, $yPgmM|y?q"U]ik5pfsg{Uf\:uscAHyr㜕1}7.<*XHFbaIYjF: ]5˜&Wp'Vq,a೏{pm\g/DxC'z)^\67 U0D8:S~3k.!Gvi%34cqwNwk!k8Y?e]*~ 9;خsx>¹Bn`a:C% "P'u5QHރ!tK B8N(%]j b3zA65N[p ^$}+OB k -ܣf>?PQ/#l]2mImN鮦<=y v2J--ꪪ7 emoæv>@#PLVtuW/A 2a?tJI*M,)%xG;NT)M8ю+4Ò}Q"X4ڤ 4o.Hyʺ:d]=:Ltʇهf`cɆ2`/r@mT)XZ'g۞QR7SȌJr K;P-Ji `\PpVP|-#w.=qu7/a4}T$UeA h{c\Z|"f* j2\2rYI"ں粨E_u\mQ:ƴtWrf%ƅ3=Ք0I&-R, [kr"DDDv-fN=wDJ,̤ժpĉ3|͘"NBX净uA9ocf:u;P*m6iI -И JΙq_ic iS> >Çar }n;t%TY%q$g5)(Y?qAլnM%,s^1B"[Fpg'r1|%fΨJA܏>Τ ZN :Ewٚy;.>..)K[ϖ3&?*#*zl_|ޜ@Ɏj" &C|r6Q D P8sDJjzp4Mp&B( cK, }CwO%!E)l|ܜnzVQX3xpSVVo"vP⾴ar ?YEc3ȏ2:$hOI 8tg #bٖCf N–ӌqL?0HR۫F2G>{D ~ؠaEIJo9W;"Wb E18X I=ݸfܸ/|)^6 FODs S^Pg~أ):Sz&&|ZbGBU1!0e90\iXEvC+TkƂw8S!U)%PsYjI.~bN7*to:+>DS1JvC̬T֋O)qPƱ(^纄0o~ uBL1f8ŏ $b?hW,Ef}7Z}f7T֞&)7 \O5e'\\U 2iL ^i/w5V/^<H_ : +>z@צ`wXqqCQ@q RiEa:X فZG /}unpׅnKQf|_~"3FԀ R󕌠 BwDtFl>ri7y)I{}H(xTU j3?!tW,~ ^؆ȷt+u(%g}Z#!Q2`Q)6`۰C!2m; ~fhPe+*% D:=!ѧt^w|z㻇iF@Ḡ ӁE&*N>Q %FY\]=^`M|vvz鸄TYP/Z $n"%:,+QEb{n^n 2Kϝ#)(ie̤<2{I(E";QHh ީ'SvP2-OrY@TQ2 Wq.I]q1Qy|yК&z!Vh3\^[kV}t Yt@v'6~dW}C&򿋿/9AFyyQ[&ˡաvJ2XП6QVK/J7m er8&#>#n7Ft+eV3[<8F2B ӑpV5>DqA̴mJNYLYO8~E< Ó8M g3$nA.}W@QQe=|G|T8yFYF+C4rjcNQkB,Z,㏳B:N+%Ȳê Hڹ'>tֲ]jb Px^fuyݲma{/&9lCv?ebD!?P漤fTcj,fBo԰{R&N¯_ PA(D <"X"A6N/mISjf)Pc8o}rs7ñ]<'Hvln q4|}vוw~ðBb 8U TFNyNwfCo!7mlWDN9WSʒD{pIʼws;r T,Wq^:H?-9,? dȨf_?uIas"I>,rqdF^%M7}VU$,7DѵXYPWݙ-*-QJyW/?IdsE'!е?e_*~)? K ݆N/$ R/ wU x ๦&Jt1KZvGBԛ*/9KyN=XJ^b/ʷ{/aKNJN}>ѩ O)F\ܽ-)||7M!C9;6P!uj\UrxrHzK2'D=ӷKŝRgBoB_2(L%Zyhe ݇ ߊ t,uz_.hо-sQv/D>8;T}"aPbp' TXFb2K&x2ǀ.PAjR #߯3:r3I/1O( 2p-V_IF*iyuK 3_}Qc~ MDib @VN> ys T/4?oKLC "BʬM^UdA{W=ȷm!&ႦmF9(rjFX8|;N. ߜny f)7{"b$2;T&eY<2-:t> 9-(\nᩑ[J.2-{2Znk&rjNLQ}_gKoIC.]LJ=.$ΌaOwŽqD45鬢 |uW|;‡8oT.wC3EՊ|btS9&2M>ebc,u몧GYrYSNVR꧆kvrݴŁpzYj[a!`~^Pol=SgA_ˣiYIzF_X[ .9蓖4cV- 4sRN(,Rm O3 "֜6=?q7xN`L|]K}Hm *sUw{=>M@*Ġ}5R7$H`=7:W0G|L! Q)|CAT(ȍ4-}aQE7NUZYj-kho20Z ;@V0t9jGȷ+4&I|Ls*TTP_N;٘\; ބ@tzx76N a?tc"OZ1xk}CX_(;ǟP3D1PTHW(4Y@ yl g`k1&#\|rIL&tƛP{[>˂ӢN`QKLmqhȸ]` xT )(ՉƿJ#CB_#RbL"Y-JgO,XUP (–u=(!itWE J 9ʬ=~%_K-q:ux yf`SJy/UyOE7Wvj06C}"#=MCOerh<:ZJ^t҃gWDӌxMn %nMSCyD^CqP`T ?IyG ]cL:qlII ӏ8]%w!x9 $,;G7!'KĹb6C"Y?)[f Lƌ8isrJd;CÐFDq\NBN }8u6lHɍ7#U b=oJlq 姝!RPzǖ/8 ǥZn`"Ojmyԥ%~b5roVd_)=id)m2 ~c1zNgHGh@[W}1#^$a%H̅T|⺰,)} u;sNE9:zW%rW= ´6\ٴ1 bv{ Ղc$:qfPg" ;=h@p'J65ut0CSDDƤ#MW)? lKk'ĻQ撤y a˂:Tw)Q#41#v>XE(rz璠 aD"._^G[¹zᬍ{+5 [y3\U@'b4\:B!|BQ\^ y,ӹX̲/d 4΂WM2|?wxFp|uukG9:m}aK7Vs"ȼ<[Ntz1PaNש.B#v IJӘV19u %*7Զ|ك;h8fNwt.s!BZ8c%s퟇?[W-i,=ndnEhD7@LHIŐ@T/d$r]ieoirP<?=%,{}`S(5560b6_R.Eq DSwW"G{,߈BwF(GUu>*ڦf(q/mr^(B Ar)l:*xDͺܧ%JF:xS}EC">dAvBf:9G_Ӷ$(KXTh̴?-I{$=3?Phap-`rհy?6%ɢw.{s[F.j"@~3a"` & pP\fR=4E.Z}i"ч qJ^mp n?~SB]{Eu%اn½('>Myk-)0'7jqN1G<; 2$|9{4Q-"7|2( n3^Ќ my 4.x]-A0;Z Oq❡}Ⱦ.]VNEOC\.[Sj\ԧwl;ѻZNίsꑢ4݅XY U- ϴ^WAaLg3&$u(aR+Ie'ZL^ ,2{R3cMA' 4eZ% ̨tU\91xuԨbߖMU)UӮބ0Wg~zi] H˯ e:Ǯk4iޜ7.V^Ի^eVM+cRCc Fh0 /l:튮PU%QOp!-4:,[h j!T| c  2ro"Z3~m~TFܭ.(vyz )ͯĀc,d?(ߌ :A8{Vx0S`&~"3XP}9:ˎpB$Z袸pV BnZ`)['YvvL{ iuuPsU5sfڗe', rQv^q?()v@'Vqn+u$(~a+h[ϧ)*!h Jf~Fs=Hoa MטQD]c3JTbEU)345k郤Tĕ,@W$pp ݤHFm &z1"/jW/c&F<:J&]rTkʀ#}AI!ΜĜ5&`\͵RI9@7>VPUf,uG5P/5 ̰gyh禝ij@k񻮿[E@D.&yz2be~(!LoU,\3cV?y QƝ`~NAĵ.I/rk ;0pk:'P B V&& 0, iV a5UֱYjV0 o_E7*B=@79ƜNf2(Hћ2;@4=|u_%H,A+” M-t;0-sC=r.gFCnK^.Otز|+ZQtPyՠfF1DEݖE vIe~Qgܜ^-<,D7i% ,{q2%>hHgzoJl*x {-ز)9!:_ՄvPƶZ[9eќRa$#LON%.k9,0K~τ]l>.F*IzM܊ՏfJNfSGqRoMيہ% c/-q,!CΡVHg£EFEG;8YQnT l=Y* {9A|JP` {{ZNq̓Y7!QcyHQGNv }m`uxN$$zr#Yu\&E0xiH r^WS(-Skw$}tɤ)9hl6*whVâ9ÞQ-4c6' 2׻!߂s餘PleZQB-/0"Fg ?./GI7Lnl HƌkA9,g?c#%IxR%zN3PUbIڨ/Vr@!3t9dMԉf5w?Z?PFAT>}l# Uo_ɢ4#%yZ+"!X_PM}fX 5ޑFEI>ĐlO=?7V)y"t> 5;bz.GyxxCCg_纅Q4`|n9*OiHl2q`TK+-{ރ0IwB{/.#47~!F]=GϹH(UI2lhҐ!H$;FR D3 {?%ϙLkG %ѽ>-_zFಆ{t.ek"Ơ<aHMdT}/x #G?ܐb8ޣ@2U?93XOm H޴gTN PwGf2EXΚtM,ًwUU HsQ,5g?f]#[P<(%^P#ɞ HGKb]z/."ή˰k5W_FFRk+GES V{Ycah X_rƪ^r! C-8QLDn,aHlJkՔDsL%Z:ftT{#2w4fFB ȥo)~m^j~}3tfy\[s!4> dyO jv}B9SCV.T6m!'p| :K4_RrB~&_Nhm}U(0J Ca>!boB7lw 2Fߡ&V)CTP f1aryUU\,6c/|)IR(=m:ݐԏzRDizK)~[A%i=iCqw/Ym2łO{myeLNMnnKEenXCG(&7L5ڊ]@xUR}ov̅g5*=Z`m҇R}!  $AAƊXbTm힜͒1jy8Z{-^D0܏Afp> #~v7M3y]{]RMEdžE0ϵm)sAS%y6ѿ|j%*]\qrBɗCKjMmy  IdJқ,,þ?ZR}ϩ9 ,Q8u)йp`7ud3󝲞=9B9s/x7 Ww v'!^ZXe} wXO%pD"lG,# C1uPO{),vI8(XR_b"OIv(@sv{ vRfT.EW_ư9>= p3g]hT&2<&P'$N:(d: (_lLV'nJ;z ]VB|Ƃ]2:XB`zhb݀ѐ~k|+hė4%i#+M\q$&JI5.DR`[[a}~C"ToRUMfR&؃.#AD 5ɠ b(Y맖z|uRp4_n+V:pQEODngPͥR "|7.;Cbo ϳ6p8+:RD 4הx造饛pCI@??4+49ۮ9ԨiӃcf%cSJhX䟡Jʢeik4X~%kg-LZ5<{*R舚 #n;eGbVNcwl 2l!^%B(/s Nj" Lw]3z 7[r,O#ܺ$]e$K 3Ѿ~/.U-PT.j͵ⳛ~PbeUAw-2[ï%"q ŭUݐIN;zjP(Z +ߴ|F~^@s.B#l4mpYs`5 /|M\2o^Y\W@WK΄Ve!hwL:8~?_a}<2T<Ik{m:جGZ"v}>SBdhr9݄Tod#bpOm:K*ms?Qd)Gb-] Oh@b zW?Eh qږՃ.g#K,Uj.MRcV}r6V(3 H4W$nq0ϓ"G;)|,ֻ\MpJ?6F7oQQ$ZFߌ vY* WtQa1H:RVVwPgyh>Vbc_*|f5[iȃSϰB;nhE6:UhDcY=vWT5s(vqoPl;0mӒ8Wo'1b,*Vl~jsOVd Gdi|8}VU|dK Ǚ]"n#~ԴCi'f+E5[} dqRm2^6ћ+O<^pNP:/Q7f<($ A9O׵ż_ĒR\ӿo(R6!em}e?qw)a/Nq'tw&+ʣq#]^)„k)V] hYv;,O=+ں܇OoNpч瑣Wx 9NU]PJovsqk (&=j7UV|"v^_"ZG%<H:W  `9(kŦme}tY@WӃS8#sM7ſ|gםj ‘mix[j!V[5'79#89ÔF nݑɗh}:и).1e64>߸LrqBcL JDyg2Iz[yR8vohgwx<~]IOa !o`_Ah(φ:Ǫݤ.vm>fLTi؂hcl݊81CHmdh&iL:iF͛վoNPhCSnn>Be']j8\n}dv.޹Mҝ{&f' \ Ʀ7MYVY16\W|8o[B@ʗC._,7f=E|yжsvR>bpS|ˤuc'(J gŶt;f5-ذuPPPc 5 s&5$֘jODЎDTyI guC 0kz",Oݞw6}̆'v[ya KXP~Fux5 rdDž;ח? :\"@EI ~ r\\Z 0]RLp֏]@% lظci-=B8 ¥^#Ac1)SЉXaNyK0貄"kmIQ5v/V[c2MӋab,Ьv4vn. lPkh /HyJw;O'a:EƚȁّU ϛQsl{^y!t{ 2eExuŕ&SBkcݗנFi-Sr{*XpdNL#򃬻ӄe9HG LJRrڃIH[*5+q3Y6`f B[a|kK"V;^2I4Ύ:RҾpzTf_.j o=d*g.0/"ZvM``QN'h?.H! `N! *mJol̖6OWSf8Tkzk1r2ƧzCu dT׍ /(zUQKqx~(׹2 )a"lkqttɇ|O8D/D{_KJH2z/8oSBŵ+94j_\7 @>5XƊp] 5*tWC ɼBYɽ!$ #R(7Y n޹UV'ϋg N"I&/r$6Vhޢ 5q :ق^"O4f;&Xke ;m01oX$%M=/ܜTN*:޼N1^e\S![ e=uAQC~Dg8VqbR+ApJjSkn=gjx4KRxCY+~.)tg|$?|?N"َF2=G}Hrjd HgC wІeшf|/]o7]?#\ChNtN=u3\> Tj^G+QŴfwe-ܴ{DAՒ@C 0kˊU?Y4<֡FaXa9ӛ?G^?43OM_v^/f cMl >'hMֵL> @ͳtƹ!s hYJ%m9 K@'BcrUz-Klb~ʡ.8J ػx*UŸ٧05`_ǻh[>! .)a+r W{qֺHTKrKoJ+Ŭ=vl [_M{dGis;PëB=_kܪJ~G&`['߉S B`R'/ ݦǐf% È=rz͜}-`6O,AVU3van^i` dVUr<?)p8'Njc$WS~#u+>A$x~єe _8LNӌٽy^dUcY sWD\NU x%OAgaYXo ϩ3Fav9C!ϡ+n8smXw,C(эFr"wmub둫QIZyGsTDZnO;0!"39a=ޖ=U"ZR$E4ރP^ޝ ا{mc{xu%(m&9F/ LhsZm<J8j286}lcTٷ+(99T 02aRfݷвڑS%v8YSJ~`˳sxU2t?u).v@ve[m`Ȗ$f\U<6δ|xpSԇz~v cWF:ݚj>}"y^-k5H/m[ɦAuWRfI%Ci &쾑T/q@;$>0 YFU=]" svU'۠D!rfnYޤ]m 1&ثwXaS߶ ( a-'3@Tߙ"Ofg֝)*..(ޭB V#w+N_gu^|KS~QrR)#~ pXz()WRI V;`}ޓt?^$t{VQ(0m 4W QDmGn`(ٱw®" XThp'ӧiGG=C|(ҼTmQ 3)5>qރ=@$ߍ@Kl(]W<!#sߥo!GN*dXZqfo/T^)0_wXWA,7ᨂ.qcI\ϖ|e.8nn1 h ލ3LIEfHG(`o80wm~GN,~p4ݏk9/Ę2̙ & yRy,gW-Gr]>fX#)bԐ;6q4)%c|͠br. =56t%{Dk]1'yg%j*\ rm&5|4B7R8y[yĪ 㔐C 0U@dR9s߯>uY iQn f&`$"rLWw PF-a@^݂@gAg '3d=Ǹ)72]|t-+&iNL\@-&à:Jz{L6Ի;_ Y6 XQ\3Q58wf,(=7f3F+!'<$2'jZmP[]08\b=fy]FƋ'##*S܆ Z؄I-[1r;)0ZGͲ<9jڂij. WFRT;HEm(k7cCF˜+;R)J!$:+^6U1zi^ sn_**cC mcw8o ѨUHl2Fut=O]]j:dDa:^"s"d@nSa}zjEx5MxKL$ )gh5p *ȹ6#sϦmGdXlF*3vZk[@l(@T0t9ak/yz*etdC\廧.f|"s/2tc1e.Yx}MC6t!~ C*ϟ9uKa afXߝNyB~{1n.);gЮJٮ&{y)\. @ dumXU| S")mJmo%PtE؞ #6#YpKk*02qI>GJ .qrPܔm W +ӇYH5HUigYkI'&Yƅ/TRB|y5u ;hHl.E#z3A.5o5K Ȅ[zhavSDpe0ŕƴ̰ w蓌6;{opv lPS*y ױw쨋N*7$ E$#N Z I. w{ jX5E:/ݴ4DeåW łL{5ߠ+P bߘa^"wR!gRgb]SW?O~fm ##dCɢ ʙ1bcn bh1n$qz(SpRǟ>BpkHI%`,hGьy%=5DŠy*03t̜˜@#I%Lu (ulFOׂ-GTa[ lp,Ei[i.DΠmXoyuD'jVO_~/OF$Fh9j,9N4?_. 'v܋c"_&tӎ" {$?9IBHԳLl"ŒlI e.g"}YmY\%"w\0a}q%KM r}25^FJP? > Aqۘ JIG[-9dxs߼O^FY RZM1Krr705=%" I8D}ch}>Իs0 LF/q?PXO/=3nQC= /.gʿ oȁ[4>ȟ2¯qI1fhxQq2.9H'X:;BzYP6L}kE~5ycSJH2mn~`9z 2~+k#{ϪH{^D8[H ? _Ski0Dfڪt0 oFٕqyr H;ן]tC7K)^ 8ȁ>c^[Z #U2$7&9/! %m'9H&nWނ|/z\~qS{خ=,çɝ +%d2.DZmNǶ@wn;lUh?>ⷹVZ2`q$t1FyWT#Mp/XrD>y;h"XܞJ'>|(e/0=SZd)EcAjLR^5/H,5CW4]tc>8#3㺙.2w!id-cz%jJ>L$#4IRC_YT"HC"0@Sj`8 ݩˇy *pBaۼLM,,DAPqzZh=f(@ W:a-r"^I,yW(U}WfNdW^@<lj<ƥ}yx|v+kW`A8kbDlfZe4ź(|ߖ&o@]_`iMZʖV8ج- fo9M 64]Ȗ6P<8-/.7^0SsRڲS¹hr)qdfCmkT87D͊EmP5" )b9k2Q{Fq49`d`+h{n.94@׭ JJZ2~o%D%'s Y~v>dɁ6/g_,N^Pov:Ĉ[m{DQLd7Nb^BvN&J\5AoXEVDhI$t49?SCs?y2 ;9ꢊ X%Ur xDu>\ĹS8nN1eMT>-.qt IA~,TBx6QMہ씣B1FTOwsBzqNx:ǷhlՇelq9]ð"/r`]lF8'ЭJi0E`3$;D@(+^H")-`C}^Z<7_3N%a*5ix ϐ~% B-o/yUi?6&Hm=C3KntkyjgGV)3ڜ6@hFl+Vd{riY+}9V?D|=n;qYXϪ @H=ܢeԛׅqiKyyIQG'd5b"w={PQʊ/B !t[?&le;B)$mnΣ211EY}4$*%.\(pQѮ!KLP'Heф_Rwz蚟O!C*7nוCEiiU=+mHR"ˑԪą;a';u9%"W m➱xTkͼ93T5Bߪ|-vȠ8@n٫~8/\1G9$2 H8_Y| E;RF6fo%ղw^XQw?wh!:%qz#N^1ĭg5  r ktq?Ipp|cN1y}kxXehEr (I B=@lb_OV%M'YƁ@X3Gi ODn*CP/\pTiЭ7b4la Q"$\ShF]mNEg1ܶoėĿ@9皇iذ`t:BgW%}]31tkJY~m-xYmtW[;'Fۋ&߂lWgIAS^plm<"K]:֦Jp8 6vqȑ%ǴzP놺5sw Iv3 PlG`HVaQ|VHAde Q1X{gq[!pw#;MF1pX!9( s[>ħ0K3kH'CCEKŒ[2Lt]IL]z.xEM,ÐC:@y.oz3uLmE~gltyeJ jEޤyߍZCP 'e TΤ^ըNӢyq?W 7jMȌ",as|]Iǹ"VZ0p9ݱ6s ݛ7ttIejRϳ;^ S}pA= R:kd~Ԟ3`-Kv+n=n]3d ԩ4mf塤zabvʖ/hL:# @ Y?GD?ñefo^Jw@VݢMr0#yZ@##Yϑؙ zYch T5ty$0k-}" 4E,T6cmqyk#!OYutudk%0k#˷+UJ(ԐBʾckCS{cO-o"LZޛbQMĮtB#&w`$&j _tjp X@v ꂏ65 8SOK<xjʕLF!ۨ'.WNPB);12d1D Z}]L" [`z>`506qmS#=e.OvX=72n0ѼlJk2a,rUYdB_šGnl:~ѤiKEY @@C8TT4JM\ Y,) ?uͻt~NQ_uQi=RW-i6欣~rlglp_-*5TEN9bJ6ra=qVNлL֤m/W1[Q앾7 8i6;y849}2,u=L#GqȧXѥ]_66֦i>{붫| Kɻv|mdVL +LJbdɬqf7 i+r.Yhs78'j=G*:'&TQ(Gw6F2oJƫ3YW@`u1)o#e'fP$1(ŋ<='؜# Z8iqE,,:(b<|#:ef*q $k`ՆMW9qR;tQAq_W BQ0+QokDbHoa(71j.,>t]9#RAQh6rTK H}~5o5LNzOni` /B3iB}+R–ʆAoA;H\2(fGt=)3 \\I ,nTze8 e/}ܙ'ָ(!rl۔fцIos+O2ܺ {< 7nT2G8 bu1|Zv8*fR}]ZV.YW.n@bYwnK=}Sjl?Ih犥j2KuMI{J#w/7BPpץRt^" >-qtW` d= m9rw6-jfpզ"[}t_+PHM*ȡ̼k# )O8r} ݥH#)?Urs-GX dwIoЧzuB#4\"Pk7vs0=eO*w|w-ϗb( _q qW@Wѧcfe?Ρf$? ,jJx&87öIh"M1(հ2l?|r6 =J]֔$Uo\>n >hLWLMMK LJ?TRcwĻkQ]Q' S*~7m^!|9#qp\ Y;x1ؽ<X5FUN.j0K+ꡈ]h,2)iM [y-EĽC|C35odw]}B0%ku绪Dr#Hh?_ Z9":VGt m{j-/1SR |/Q25yI@L57_Vc?לHGݸO/r?d-=#bY؅jE h#(Td? ּQcPok^!ABqݼ6X $V6)¹<.s,U|M6D`ݾͅ=UOSN\p1X1%G}!Um1_F+욂/")[&"q;h3UYI3۠Xf6 Vw WPḀ^7L!6[gM+Oc;Y[߫T)r7aҗ_l3yǤ'8>U^j"UxefTgݱ]XAIo5Y~:=S]nV98 /5"Ni$hxU^T"I+H> piF ]K*(e,Qw}\n5qK[e5h1ME` *F|kGm:,X]]mmYwD'Ȉ8Mr[xvEan3Lzx;Bh:ؠd2f?*= єM/0^<8*P"G1`Gd:*̛U /VLsr1zr#-=$3Pb5z\.Ex՞/{$m9J-J_I)J,̉~]uġD yig"BPVըSҺ>vr2]y4ʕ6Ƽl_9&D"C͑Z7okm6i[tpQE y \yl(9B߸X[ Ork2HLgP;tX4} }%HC uH${z";Ys O>p :ᥴ唱FuWfEӰ"7R4N ͫԾ^#P! ߺ.`dNF)vaas~Q &:7A"n̄8f((klt !^gy jy$L5'!% ;oڢSf`L ֫$8JΤ x +oF`; [y+W?EaM[.-~Vݸ-_n';]ݝ2>%2KjOihߏr AMSئ =@"^)~W|OS$WRqI^"JbhoyL>luOxߋ{ @6T8^uVEJz_iߤ(٘$.sک>`߼kUTi﫺ruPaa(8o~Xp $#B'EQXIOjOXL}*ǟFGţWBQeF9t;ڨjmިe>SW(?WdyupQYI|C0 P`9H)7 P\"jq_(9=J&U*o9wtoF 27^NxXk}d9tdjN!-+vj&+_P7gp?KYo!\QGzU1$Cêct ܳO5ޮ\ UakO ݷ3yJRjq28C؄ Ax Dӹ+tBUoMyí4j+l<(̔A <'5wJoskqB$?BgpyC/PJ*fZ$G8KX 1܊iC͇C<(6/ԥ<ة[Ɔ;/Akq[\tp`*gˡ,B$M4ω"׳$L6S>,=5S߾Ca՘vCx+h2u4N\5g7u sQVRB,yqMk5`le'S+6ujYWVlsYU#zP0fKUY; nB8;0D*pd&"xH)j22o}˶/d1X8'lzߚAFr do rɂi] 痡E&Csw~jO;l`.N71w+N-Ϸ-@SizqQUʣU=xxWh$aTY'cU;Zz]^-ztbڗk4 ٢qJ22/}?%7 2c4|m<-6jfI̘gp:kXҒۉk TRdJQ8dQZ,J G:M946]Yy{>TUlOus'7t=/+)#rQQJCW%"nsebx3Mk[u|x__=-809`+]c,憳W s!5%t^Yuj

j1ŋ4qߥ:+h ro扺GuHpPζ^@\N̽ nԹ}7k&jz{LOK%W3\5K |bs̉f#3#@ވx {>DpX<ӻُ:K: BX6 ۉ>F̦o [֐~v;& fHS\"[T9a|7?Q 14GcN+v>_uu0˧ E!ļ":ƥ)$??eTuxz _ 3ý/GS/X)gS(9eci?D03W<\nkppy$Wd{ٽ(CSl"Mv\Yocv2\r*cI#4twC?ŤOaYX53z%|ДJn;"?'1-eyv HPS˹1h0'+.F#'^&ÇiG좑}VNC24m6H!C Eἡ #z^emьk&FDG1=0ZdCEI$Hr/bZ "wbV)P`\u%-1cg)o,[#f.8rAR9lEcY?(FN)qdl=q<4㕖J=DSf[6qXxkOK{pZ΢"~Y#|Y?._zٙqgyĹ U]|>ѧ Aí-6טHܪc0-CNZƠisC #3K*1߷ԟk<Vx=?>$rLB& gWaLG K 6Ey4鑩ZFճ>/~=#HCSbK|\ܷAõ7OA.8N(2ϊPݹiO_bIQhLjio[mxhCBihĢֶCórVG}5_woGAC`+ %y~EKo@B*&v:01T_kɤfՉ,Կj8_'Lhe/ǐw( rԗ\yv%=IFosM)EA̖e i4ᓎeZB`,i@ؼϠF&Цx7 pͼڱ4 ᗚC^ 7Æsi7dߑ-3hµ ?/ϲڎ}) et[ǁG_FV$1li][H%{"# :+󟽙)D܈"GϴaMd߭Ԑo AĢS03nYZ(/\-75IEGTeν"inkdQg*ncj+_6_Qw` s,%dG]*5oSJge6 L_i"k ^@;P~ ݷ,vĩ}? ja{*=]`j_'uzg>=Tw[]vdupuPÞ ;?`^ b7)2#%C@HՎE iw4cc}e;񆫾.UM }NFə9R^,͔蔗/`X*9 a%saP^/_w Lߟoէ##:Y }ܻW>3{YVlN 1Hc^#(e!ܹDuuSc%7^/ك;t5AqIɧʈq2GփR=Da[gcn-%6 TcIkKꥧ.{ͫp1h6&Z^}ES o.WArm߈5̊1˭:#&9mb!0KÍyT\s^˰r53B=Vںfe6ZPX4/Mp K'(٬SdNUxig#MItU%me6݂[xx-m5䛕iDτCto,dfW){mcuS#%KN0)9SWdQ8ScR!B+9"Ox5$Ldiwh{ߒU"F O);+ {\Bu-OH iV;+5gq| ud% 5Ÿ&Fy"sM|:%^lzhJ_yE=*(Q ['ˤ#Vb8v̥PkqM~s[:ZuF dW#78k י~,o@!Y]Lz'+'Ye=i[GC29_$tک[CSr}i~VRɸ +rLU9O?$~t`ioh%9PijA-hr#|az?Q`Nۀe}T4MGǙ@5zƸrS`G|@d)5hP迿PIw-US; qo$IUceHzOU J6 L#"Q5ņ8vn40_T3E5EaaEh5B LK2σ' i/0A:L !{p )d/-%کP1=γֻνW} t'TePvd`<gBUlý /pF9[ˏ1Oz(m7mbęSU(\eRZt{5|G$AZdpClXGEy\gH8S:Ni[~ GsC8mJ˫*X ?dt3e/!pq'`e-Ý'm"(W ]9R_ ە.oNCSbo"n /r ݥY_z!G} -8'SpR7a+Q=2Tb -mMRjXPdTi]b\x6g mJIk2Qa#$LB{9q?V:ANQͺڥuk hp8zSt(Km2&EE̷ J8=⥤ VhSeE}({;IcC$ $fzNrO_-ye~&'Ǜ5&>i V Ƹ6|:IȤf"AjTG `EjO! ul1KPuEݖZ\|i3dԔԪ?8ǘ*dXX'@RXǐG|]K,s-.Grs/*5Vp4dd݃*5ڮY+Bj 0 iƙ$j5;Z~LHkҭ(wpzA\z,46~92л uP5ZU4ەj<ш(eXx!V<.3=8\]- z2SO;:R:v N[nU5\YTMd\2KNÜ rigMK* -PYm3+ZIHbB;پ̭J}Ǯ zKeAob`9^x2*i/'"i>Z0C6ɬxFoAu TqZ 6CAE췹P"%Ru B #iF9x߅VN5Uݤ 8ׅC4!1N C-NgiȽyT\n$]Wc|ks|b?ln!F?+ט ʐ1W*aGt`ChSR ~iT=3-EHmɌ8U=@ҜN\Ǵr!4-6S)H F-H.A7 709 e 4k kK*#dPIcFR"y|<1䦼hq4[#>yD.0lRjkz=Y@2{hI,("1f⪀BNx|F(`dƯ|ه4`s蘣>6^9Lfr[*/6K"= 3&F]\#;/HQSVu )C99B8/V!} LРy4>ke<71H*ho<*CN}(+TIX^;aHGSkM*>)lʨUt˝; 8;'om.˨.]I^ _s@ .sELL8id"eCeb>ŭI#5Mzo,8e_6{6Km?wmgFiqqbbHiZKO&cUP =Eu@(S{cK ,%)% rYƩ ]fFԬ29+ 2{CzLzQjb5IbC1G %uF [0b)Es |" WL?ю$N&}3,/ªZf*fGEsLip dz;=i`ǃ<.f3CB ULN#Tz`ĤR Otm-s8X Ի HZH2jˮ7յ=+2Nl˘zE^zVDUmKx:K)ϒ*.؄f 9x^etO?=!og1K3u!YEqNB K٤+ĉWUETBԖB|TSRwI|}3m > MG>?XߑZjEIbw]T)#ZˑF!'{*? eƓ3u5|R_krt Ls}bXnΧdRr`0 O, AkAmJmN%.8g6;&Eg}e s Oοǜ:e5>S5_x_=&IQʘ3j@[ttp+ ㄸ!9KbO& ahvAL[V5thJ~{4/- ҺR!Ch1J";b9_j8]GXpS>Gw9_<( QekN8~UD\6uѪ^9b#h v/nM{+$srF쭜3/#Ce=6bAWFUb8(w,Gp$M U5&~)9ϮQ6Eqiղ%w9'_8^klCЊ\M#̤`d%E [ӨYB#&Y~|{tX\Dqj^XX*XKi Q3EJ}y}NCk2 $O^0I"4Y Ӥ4WYB|PER5gBQȫL-阋g)~6%_Q#l.kd iR @2:h*0z{pU,PYcXwW ΅j -0eHm"(o8,9eXIֆTBg|Y4t<tQj\T'/8*&>N54a}s!"dA'H 8.3'%Bɦٻ%R՗ef"w2R'=P0X:='ۢadv8v<{QoLh蟪P0y vsFP5˂~+5׶e]"kx \! UV['()uF+%r07Tx??)iv07{Ǧmqȧ n A*"SK!{b))e䧗n+Cu$^YNi%O&6ݯETNZ]| $/u4\ OIS!f PqKxgŚ6h^~Me!*;p[/ri"hF@w4B^E?S"@r4- Q D$m=eu8o*Os+MuXëD B%F$ 䤟/D %@0uF- Q褜 ÇdEM,hZ+u?P9!+"Z} x4haTcnQҮT:mRW3=t%D\B@ĥ>s*_)Œ 訨{  ,(;Mu5-$łt:L/w\LP}Ȭ1+ii A8[/l?=cts@zXʦ(@KgM<8ۯ z7@^}feTObhBS`lp;R5XgmVcbLgR`9G [0_q^սE]1̴ʊNk;̵_SOhU1׉De7=@ MK PNy( '^L ?+~] \(1Z_5a͋,NpK@{9,ZTJM';^h&!-`{џ eŏ36jMo=ߴs!.i&~@ŃД'{ c !hdFG#zMĜO!UJRm6ˑ8[PUuF 21Ι{x=>(HDF/Dm zưb=o{\@O@42s"G(vMjT+--g5GiFnI]k|ږ:k~(Y^Uٰ*1D;meq>j]/9@X(+\ PBY,|b0nx0 ϳJQ;>,9Xð!95+ڥ"]P&?t3s} ~y (ӖM+Dl[Fw{)ҖbjNAS,Zp#ܦ:=q~t|4@> Gސ pݐJ 䟖'dDPR\UC8/L{c7jf]둅NשXgSI4MYͨt6,\V(u!XYL}=tܠ#0?." q׆GGx] KѾ'5^Ț"7Rv ZsWZ*c1@ aAGAba^ɘҡTGƍe?t|_Pܬ3'd2Sji:?ˢ_Fa\bF*M "ro:ӕu*aH,wBс:O `|b[!pI'8g7rioM'.': C9r=.ȦrJ'맗!Sb#7I 4-[+q[T8n<:Ɉ5N<{5cfPWbJ3/WnH 0T7,Sg 09b.ʕ968m9c'gsG՟uHHQ~鐌1<}u2Rf5KV:wV*FHMod'9B3DF:Q3z޸DTv&:' ~WU"mF?ػomtT|45? .W$صL0,mtتA4Q{mԵPJ,@r[ڀfОH{hdܝla:C3 HŸ8Y| SnQnɖH $Xb݇ t LA-_ywX[r:4"!{̶/GB2Pdqˎ;I6"b12)bYFJen^K9:AhO~5aӐ'mq RrXT+opyNj馬/9xp ꘍k~PS0گ섲EAD _!b:M.1C6;&.Ckё3eFU^զ><|KZ/'K8\0WNN%bHړ$U*@Ӑ'"ALV^#÷z~R| &H ԺE4{-H7ﮬti &C8w>i,:`r3("KFsZQ[|E;rق3?qCN~Jy pkFP^|m!x Qv533ʚWY ɳƣy΃o^PT,wC|Ho;FSWSc:1?}z EjRA}fQH7mB閭@nt ˙bxdmiտ̫TƧ? /I^z9SBs%%*>ݏ_>ew;}ƔqG]_ZGh-Wm~a@-%@~/7ntm.- :w?@9\5KH_17'f1*rjC27;HJWzt9scwE\8nkz<ԽL$@'zՍ9ӝP]$_l X1/.nT}3h{|ؙE˛ yx9`,%~ޟBL扶ּEUќ~fd >?H4D"Y SB=}xCDUC ړCyBCsޞ,9ii&t:$:FpTfqgfB\Lh=5 bbÉ۝ +^wRwfƠ$H8lX:`zBu Ai^8T$gb&!l۹KX3\;9wyÏwXrꂀ#rZCO00EC^rch R-8hDC0tPvc/TՎ5n'4P`z kS'S=M:TqޛX!=>k./p#{.L߲0Zh^~*'EINDKGT4_deT})N~Xt? ſje%m<0@Cv)ɪՖdN0كwWR]?=/ß=J;e:'nQ-U} 2a֥aYkfL"S#l1\T], ]WfTAhӓ B&pM0ps$m2 ;3jKr l KFJ"[M9֭j>8vRI̖}*bt_ 򈦓pr&&۸0xᢦvEPHU^jCcZ(ԗNiQO΅u.{7EH`@mД,C" ) ac]"݃zD#lh~]0X(aXO?YK@h:>[V.'O=n`7n=g妢5gT-SbI|xu+xD ],3jK+y qZ@C5^n6Z2󈂕`}@ v?"=AZe V朏F>rW]FoW j/iݏh|MAlىK٢ր/ZJ@h`k0C?tQk9+5R _;|yČΜRjv;+T >`5;GߣlŁLU[J9D.erCŦ`p> xuB,e%WOjrSe2ȱA#(ިB4K١%8aa1;6p97Zji-ybl25P78htcJJtHg|YZyA$_̌%τpxAE 7{{?]hV j j 6+Gzū>e;ն|91VJ"c?WMYk[kF Qp\Y20l.=45{g왹$X'}# i{YT:@!WemW4~j-m| ~ga/~s{wFu)y-_ǼuSgmgD&q@[ ,FpI`Gro_6a n/%F䳓qhb^ܥt*(ӋmLEоLsWdn BuN(<@ǐ, )+D0(8SvAuސtr1[EfTxm(g[2 +}]S;J;KOAHH9ʝC+Iztme -[rܹ13c3Ұj1 k!0Ku$Yk4dMQ*N?L`fj,o7(;- yyJ5 \:vqz.Oz+'~{N(PT}3p]y;{Iis7R5!OLo~ReX&]#Z+-@B& 3LaR)<wٓtک>g ` 趓zU'~ `g?)L}ds~cJA ,c} ,Q3:B[3'zi-Jy~Irƪ1F>u0h-śS27@+oLZ{j+`4>L|G7aS'qĕOj] > ϖ[9D]BΦ9"[4)t5|cSt\u#4j;:O0Cs}֜_ꃻ3a[yıEVtv‚^% 1WAΎ t]Ԑ(0~B"_37/M S,f*E1#{\:'r9nx- 2> ]6$OF{0ZR_O̥ͩg!86rv݃] #|gw*-RKVhީw  0!d@>WM#!W)+Wp9ʿz.&UD۲rѠN.9hϘ9M8ujf0 ĕR-eد!zB} ӑZ޼J=_.\g0P~\n,%uxf X8* 0آkB~z3#Q@F1Zc_^Aȃ }^$'0Z%F)$rqDMѾLFXy)|U'tH?m[.:;rBϤ]43(p7(!`ͭ( :w>9D`B͖A|m(x x8ܨ1F8)^{WE!V4=LJ( Iv#j]J lfQsI![,K5Yg~ռGn* 96@OBq&z -*eF*^B5.hXz%sm1sHqԝljHyf@ z# h22_Y_`і] ]\Pr ctw(ߧ_Uo'if5 qQk+O`AOM\pȴIU*a^UD:=5л~꽲 ԣ^'bf$Ll",0pK?+{fu. \Y {i~&R3KP<4#V6a8oӇV$}Ltᑯ#Ľ7M=:y̲|w$\[NcEt}N7̏{b>if1Ԡ}f<2=fB ){3.E[wbZ!TFGBc\0:N1ܗ*SiH'.x"MR?x&'wW0Rl'n{L_ dž{TXG]MiG>-3G.aE<\M~DqFlHv\GXA#o8yE%]βC#Tc iP ;RŎqMm3jpi,;#UJM^'n"]>lZNft4iy0,M!u#k<;5+olҹ܍ЮU@ן.u2]?4QҖ^aF<@ _J)t,6"4MϬv>08Mno5HȨ<*5M_PGQ≳BY T{7^iaܒmX6S*U9$:6`~Ȩuf kQM\'j6mfOro:q=RF cB귍 \XPly;|Dxe^o]q{CQy9YKhٔȬYIVw7UE|v/Gԑޤ;h?:`dhEQ7CE-d=)ȏb,;-J#\3=4Ix#6$#R.Feu^-d.~i99ĥ=~~1$= ;,)F4MӁo{0Oة6ou i-a2^]z?딖~(v_!J`~H}Ò_Oe-,vѴrn>ch?+e[a8e)ݾ[^} }CNvL%:`N, r&n%;&7C `-"M;s;+eu[QF^3j07,P|8^C/ccU Gƫ# VyL,bm/B&cИ.,BC"IOJF*.a<1;TR2mp1s+3}|cI=+v=?M5*xYۣ=o؛H."Gߡsx1aXlp _p⧛h͟f> C:Z+vKcowʐfmZn@4$hUǼc >IvU<͈v[3ҾToOkæNlZi[wdymc˦{ɨ+-b;6Ňq~;Zbh^J2HqE ȑz!@1pM{WyTS6ə?0Q<#Xi-!nk`0!<_-~ [7(B|B!-@.UODzN~U?~l+ H(, LL2q06 SYk|0(pa$#jB !bn݉x=8ObHFyƙRp[,&Ga)g΢i)L 9_.-t+2cl)Mˋ!DT:>$H%E%Lm H9?aM%^=طYn\ݺal7飒"`H;> R|ǿ:D) 7 Kjgcov 93cyOyŘԑ8ާZSҊ1?I3 άKƘAXv{dHC=bFk&\m߫<6CI joArZ^o^Vd.2u3Q"+ W0F\uqConZb ,$7kȄC\|bGIkP#oSPWmՍA~쬸ݤ'C8#社x]z{'vE4;Gj3Kl@}+Pul)jSR.}{R9{5wfio|u}vkBx>F8AX'Q /ʖ,Z!J. S x+cw@إѬ_L& HׂJ%00Ba[i\P1b?% O!FGHւ/TMZ~\A~ǫ<Ҭ@+eμ]*>)FSM ¡H<=t4ָ7z*w, Գf(&Edr5[Yf[gH^n@Ak- \9 Y-ނC4q&%noGq:wWOE\kFmcC7>s.N))d} xk}N{. Jk/ZHq6|Xs@16/܂;?Se /b{ ihBHytp)d \PmfRP}N aH A%]@+*0[zwiċQP8E5-6a 5nÒ} ?dT-#@PGI1u23|^;5/ nvXƔRf )6LlGP_;f1kXӅN\"R0-< 8 cވ 2ڍܲlTi߈P,}򿇃J"~*FCNSOiФOAВp!6- 摒x?>3agHޢC*\Yqs; oyIӢM^oMscVw>Ω߆7l=pXg-[U{ @Dk)n)thu`B~9L% Vx7ywyH&hQE8?^8s'],ȏz.Z]O\@S"H 82&/L'F[&p9PcQ`fẳq-bhfw8.錩MF42$"k]:]Ňt& ,'=i  _ P(xtt4wӽc ¿kDITN&V ҈K7% 34ݙwR}Ȩ*edvp5/}&s$βY/ЬHP?l"Ā2!砮~˳i@kO{fLT`@gFUaAsTyULh)ΫHLɥ/ Ezi&(z#:fbՃxyEmq^$ "a l.[qEiI/9ξC71u,m,#\ޫLt0bAWV ;SO?؈a]ݫauO ry{h7MM-M_U6Wm&wR4;lq; ^E".ӬC40R1=V:Ԯ$A*2%u*]'x]ipoTiZ#q:*]U{Н>FT犊xӯ꼳~Ru3Q#yJ<$Ii a^s#_κ@Rs]z%@{:bfѕRǐTE^s'm_M{ڌ#Ov/R<cy@1= "‡>v,0KŒ.|9F\<çUI9U&Yj''jk~XjK[/{4z61ҷb>.;BxdJ1RP/t@"DW9Oդ AͪǺʫ]_. FJ0ͬ4|86yFUȾ:eqۻڠ_Z#Do>?wltaR<;wb[ě|݄ #ӣgMߥ(ޯםP `7|36Ra^)LY?!1-jAxqO~URO :{^>r8]a jb-X5.68VZ V" vƛHìiڬqKpιFlB&'cJBqIgZL$tz8n`Q $d5AINse?}ztrdxL' o[ֆxL咭yV4rdΎaj~r[=/|2"8zeL]tIzу%攬7?'w"@t5k}'m -$25>|y/7ݜZ+Y!.J p7Ӳ*@{gu>N?@ZsZ'lWH^{0aq&/Q8#')eqեxW8bZ@|vF=L4E!?,H\в;eo:/j(|U5FYSuqBrFRP76܅4 C7lo|7_[ri9v)krx0N$<-n!tT(76}χ0#*5w9qk^5_愫Y |A%t7DAzeyu|[fxS8]W||`Ȕ¼khDt"(Nc\}/ah*fXBZ G#?݋3pu5 V( yS-amY]Ʒ_ +Ima??Ya_JqlyCO/3hW$AB$3ʿȨ" ni#3:EOTJ]L<=*n8@j23oEv!, [@?.[#1Dq صPD1J"i;cFYBIeٖFU+Q#.hGT[zXnǶ[ZvƳ8I.ƊAX )E').ZW}ef}QA4r”.(ϥ%P{8Vmx_}Dux02|`CCTV 1 \,pBXO*Fq{g.#tJafn ,+rwɉN+0BX|dj+ K]g948CKG[/KB8jIs4*Y 0ҙXAh?wg|S¬PuIT %a~rXԎn2q{F,֔|a )(bYq6$~EWE{nٻls9\A{5H{5<ĥJ3}ٵYK5BӰ&&䧸f ,53?R*KuE,[w:z4mX?-{Qʹ2+_EsK{}z}Fn\N!6ZNoM6+6fk<E8=5 T<>@@dڢVGοV^>PJt.v1D^;kJ+G#c2rhsTtӅjj #zG]v  F}d5S;R8wQTG?r:^^L>xX RjCFh#$P~rS: h銪Mܲ[n&9݊*KE!tX&F3H9+pl)NZ`ղFaEvL8G}+&ϙɘ'/ da!brNyU}pneެ[qܳƐ꘎YDRs76yLK3ʥ;68M 6' %,ENX&xEfuNν`#4Pʄ`kt章]Lwj"O )d  v֋n/ VU֛x2ĩZ,b41>U"zc'[;QO$] H_c~ޘ }ϑj6\3Ns^J0A Cƛ-r?|0SZ3`X!.?goz"8jq}ul l#鎌)w[[oB {o~7Zљs? &j{I~P^V([v䑃6eZ'Q.ME[¡Z{  2BAE83)c?=c`|EJqw3٦+8M]6S #MrYp3ycFီۥ_^pHpRKRRhVƉfnoI &4Lș] oa 9!2abWH 'M.$;tBV3ҙ rNnX܆EmdqK|u3\F L Guf3&6zZFIkO Z{DjT̸ٸ]kx p]n_M&2$."PA${ 3džL^o^_Ѭ՝nwĽM_v'8R>` mI3?E{tज़.oUM7 xM[l??< ׇ C --*xw_o6Hߖ҅;i7w+wk{ Ňl<)*NETn3B7gTEHߢG}l3cmZojm?Se ֓)YG3vv-1NjFJ(&%K ZVDr ս  ng.^%k"yמ,gqZPm ~fMN3yYMKtN&~dJVm釃 t2tP6:@06@qؕf P(sX}7ŐiÆE]p`]tk -(: jMJ6Ì6}2]lZ JDcj~5 {DHˊ_"ģ褫]pK"Y@rTg>gWiQK {绬鑌O0+iv ^ ʌY&,OlE)L,_j↝6٬pz݀{<\γp)]xYfTI2r߫uo 3NaVf*؊plЃ5!4Ꝯ r[ڧ=O;8`$ärE q(M\7]1BtȤeF?):~Y\MڤL!+.g eo'BvȚJZ9½,k9-ot~SLF $`m@e2Ov|.{JUONɑ)`|0]#z{d#wUEZ-A?%NU /z,6krnc{;+ Zo߂Q(,`U+$һRtTC^z&ͧrb8J#qu3yE{3`)ySBX[H5[#Pu~ s,@^>9>i7"?^ԪQc\_Qqݓ{zϏNNG=B^R<Ϸ^mH*O{hqB86BYU*e {ϵԺPo.j5{z L>reߩ#4ORK@# 8J~Dw9H$1rfuѕbm%M&mKQa=k&$nbX+yDX<{&!yiaSLUNBý>mt>3b4Щd+I%_8"zdSҺ}q>x,6h18`"z{C0Z-]?$t'y@psىBh"kq5gK^'ڧ`L:wL6>zi ͷJN?0cCVnKnvzWwX/s]!\,N~-\I^. 8 kRv/h']f^qCP=c6Z<[lÙv]+\r fBBq}U{A.Ea?#빓L>oMˁ=b:eyhr:C5sTmٖyt>nEh9\8.8%|m|}cVHKۚ}3 ꕍ*}Jb#>@'ѱei^?Xqڔ^(ehEIО­9αE㏺սH)mJA*7~nq?4CK[:N6J[L/* h7zgɏǜSXZޠz\ΐVȑxD|ʃ%MYh'*2IqP`˂>ff&4@?Y#ykYHβGJsMv J`w?]IݳOqx8ܓɿ6vHҩؙD yiM vj|v[3IJ_d4CLp*xV ,&mAps&& Ec#{j1s?6 GZaP >y@En(5:9 J1`a}G6r m"YcAQs|<缕{~wD0|em.菱4\Jú w~r_L&tL mYP,7R1@ky^ .Cp ල簣CN>QTL銡U|KOBz(8yZGHO*1K@g:+%#՞HjJߟAo"'|.dX,Vm墫>6:~O4NjRQY֛Jk;HIytti䞢Z+<q`=r;ssBWT\I!uJlröS@ F'AZ2B>|ᇈ$kbע"fL)hB]EEGɧ-D˂: gMŗ!0_J*pUb+V)%ekaVAey++W%T Q6jޤď~ܶ.l7Խ9sVzۤ!.kxL\;Mrp;%ljsnԤ͊ /$=W W(_, H@}x-cչ+ԭp?+AQ1aO7ш]xbU*`ɦU\oFGb.gXAGFd[E%~4Z,]uIe5R4;͸ыLySW]hz qcuyx]Ezg7%wQ H1)..eࣞy &AG6xq6VcH?^ɬݾ|0鉨#m AF˲eUvyHTberRX &G$^t!K*Ldm& clUX~+4dI/+3t螐I Go}|aamF5n8DS8{73yHaɧa?&JO;.&Tj]%ԲQz6}S/2"*.RdžiQ[nhJ4D$S/ N|)C. p+^iU,7Y<s~ȲQ1<&Dk; jQ1< `ef޷Bꩦ|q')bjV4! .r=cDT ~C#q_~t/=q=sn|bQ z b v\)yvG>8\@F:@UxmUh+~hB!}7Ogi w F!g#0V - nrMb#P13BN!o %`p9EᎫ5ɭᏣ21k/7<1YDGwZ;+vEK*p#{u65qRfƷU4ǗXFl E+=K,?p J o.uzwٌ )=՗ktDy]y+tuGQ^XZb5GaO͆Ю߿B.fS[fTlxB/?_.a}R3R'W:(S$v=2QzmWvj[XÝh;p5Du5pB˿"bժ,ެzS! "H6``C“ EgsFЊ糊]|($κ8#PϑE%͋G§?8 qWA{9p tI66t#qAA$fyTd01 A+K@d^${31wZeyøEģ\,=͏)Ѭ:&(ƖB ^q0OH}~"QO0=H:/oV/eo Mk#Wd9s;,uitq>KZܶR(Բǂ&~tJTOLiF \i;uB=iX'$ikdjeܹkxrȺRŞ)ltQj7"dNBPf_mҺrqw bD^m*0qŶtH=s^Y Re,Y2ls@6,ֆr+q{6e" C}o3yWtgn 4O(1*Apg0ۮz<40z(0Uvzӿ1}@mcgx}SVz/l,dLyl~v da\|)Vƃl]11B?&gFe k@:dZU9%_7<ñ??ZI/oE11@TVE}y*^9O"f MFL(%_5Ufꍅgl!k9ice5<_?7Z).U$.Yy`;O?Z WFgOM̉]؍zVp%i~1 <У)op!I|hөLWkvxPofF8$weֹ`.{X]xJbJ?es,ten A^yya싊LՃ؍FK:cR[ҳ-]-zӯIKm{"ĐPoU iH2/hٲtegB#+\[hTR]ɒ-N]V}6AԳ6b] I@|Lp, Xݴ襍+{ci>VDgq(7C rJrOHg:`!ʺy#6ch\lpM'GqB|_Apr=ߨՀ;*#k9FW5eb[|JX0w]$L֥kzo<-d!GHrc\)ZRSFQtb hAJ > 5Uڿ2 8c%(W }@n-Z ׁk"sBvqǤzHvоgE*h:pđ&k$]H봉 )R ւQ:HHs2("o=h\sT|Ilƒwi=^8Kb+ڒ\>fNo}"yJ@5xo$B0$l>~0mSٟLC  δb!K-cK*0LMI^W$ RɵqJ8 :0L#.$E! /f% u GȝAES'{t ! j څ[7 `<-+Xf)kEu1 Z5N{ _DEbp=nuwe.IFO!'DBe=VbNڍP mQnr@ 5M\<6JL%_At^g|khILyyVB vWEl,??~"y:AvHjo҈W[ԛY&pHa>4P7PXZ1`ku?hT>By0=^TɻkOb|gWyF~xf *jPgʠ+), (|HG|b?LH},<4*CA=j$vx2pf$W!4ipn*ȧ?ixP').Nϣ9{tUtz+d8/ (ZP7T?k=o1ׂ]$̷,NJ t1I_7 oGWCnaN{X[B ^]ܒlv{8e>ΡAΗ&]mFƀБޠ׫1¸7L/{APG\A).bY3K[.kI4k«N]v+{2{5ijn֏Y9ŕߏuP9M_P S:4kt-X>RnUhʫڣKíGn5Gmr܌^ y<*B`,*pC?USʨkfB<!-ٔDF8p"%2Pc4 |y]ieunPr'C}铛Bz\2驰vk Ot.7=Da#iq?5Wmum\b4r"Ӂht}"u1wRI?ɢؕW*U9/$g$naDawdV\a-G;[1)X=珘dBƷ[[wN\_.F4LxӍģT[PTPp0yNj2{»]QB>EڔQEUف\h3Gyߜ9bn,^=xPk*_T 9xC;ú?k$hŖugbJ:%^HqH_c:+-tO Jэ}r:G0gD|9O> !oͷ"E+A?^wF#rq+B OβYn5oHvqBV->:{zfK*tp>g]?(jG(Ʉk-c]Ox46@-F$6. rodhsD;"<`z " !2"%!R#Ù[iS9ϠF\ʲ\M?(A9v1=>="fL5ZΤ s{& 歽1t;ӓwۀ:Z{ hQ.kH0UUڴ⠵N^2?<u?@ӿ983eD{Jd܁f nĕ/&LA؎?nyqlƲ֔Nq56 [J8%eC:%N:|m6^|Je9Y>WGY 섨HhdjYb㋠q_&*a6F÷Fx mؖn>Mr~?n'w0|l:p{E1ae=Z AP~0~CK $Lt%?˞խϔoMAn=y^>,G_ 92ApwX (:bpF,8ɔ' 0.աcB{ݗ{t$PG'V\žӔ_#fdu쐼(I-<$--g_\0>pi~/gQTW0Єˆ܈GY_%j=K| _p8L)1c+v_v{ -tu<Ԋ˾`3<7}i=$9\ە=y(0x/s؍>_M騷Xx ::6$r%e(jS6R$4-IGX >SY]`c/CLۍ.ݵhߥxF # 5יYsCyMH*GЭf0fp`l-c~2j銴m5Wb]tUvw3>k'Afމ.[ ޭ<=bJ`nh}Bh@ 0"PΫ<L| t$ݸZDHgVq=rSE,Dum/laMFXuyU{U>Q>5FY 33,o?}V-"Qy[$9!PoeF~|̳ʉ;%6tgNZT,;zf+w;䝯H.g}UttdS8/4[V㰷1"_7d3pK^LASm:|Lw;7нgtUᦜrGlRG7@f>[$;Nk80hbHwV\ӎӮ$BWYtҽ&BĤC7$]MK }O=3g'm+俞Ik63ilYJ!==f|/.zPg#1Wݸ }/Y q:%z}Onϣs8Vz':|Ng"F`˭XO2YI6)HjY:Dq?Z,,b@RtHͺ9{I HG1Ga ~r֍ʨlF̍1tX5ULR-(+ȋ_H2ӽ1*P!7GH"1;pz!5&R49pjA}=yw>ܻ\W !i3'L{E<S c\GDύ@}@BLiFb̶F&cIjy6D*6:$1.LƦ{!BW:\zFȮm= X&BYc'$#R{3U>EorrPm@~͕zR RX9R[J2K!ihJ#c2veehbߺG4w,ET!1xRXb2筶FYL7_MM^MC856> X=zTٿbS#S'Gv~ٺvwTft9ZWb[A@b;q.>6 d@ tY]㬵:U| %݉6 ^܄-!+ Wm 7'[;>֞[Uy=ڐ8ؓ7QV0|k8BZLYeuMNӥ5xGQOs@ė]D<HIV)R*Zю+XC&/1Ei">R)S-Q`> 3o aLX=[Gf"<L+{O4Щ8NY{S$ rVbPo,5a-`[4b=C{hf$][cRt$,IkAӡCʈxf=93]zx%]ɀgmTiPXI7~p=#Uj[_p#PHo Dso;G{K8"&̈ nt;! `\<@Ʒex$&0T(1;#;/-ODZt3nsj*է3+' ;l-s6;$ )vsbƅٳty\D'dqS\{tas/K ayN Wh4E yp3:a.L_UvW,YsbTpWXE!A1&"}<`8$'$| ){eiG^},~/ #G0KcMwOw0Ph;Ji*; =$S(&tL"C]*y}KDz`{`1xp%n;X-x3YON[MJwou*9!=>]~n[K+>"8G:Yc2毑~ 8Xmmv bH{ξseJP&K[Swv& eL<`il ^/Qjo"Օ =2Vgi8TR O>s7Pl%́Y řg'7K>a\5DPGȿ(Q_ ?wKCUMVjIgLH[;"ȑ ,g{nZCm=50/2wMV#x##`z\CyF]u5͕|2xF$[=(r@.ޱ\g~x(jk3^ cRn1ۛT#)6~Hk= GnNK!!L9Q̝JBM`íMV-f6B*,G Y]" ٟ@s;ߛt|^rDQ؟xr,j5,5cO,Q#`~>7iΝsCy! T`f8Fhİ&H& 2CU j҄ˎ~r{K`1Fmway&u3o_"NX!X`N̡Cm ,q6ң },]yvD,efg&ٲ_ka d7\ZSU(\@`CUl%7V7x܎cPt*@y,H!x-QWqP?RM[1t ْ4a2iԆ @Xc?y;E>4^`\¿+IÐ O:dַ0[LIEH] Oa.xk<G??C ]#<3:Nh,Ao'Êm`/!$}/@v]5_nM|3Pj>A PT)swٸxkv /.8/`Q Qke uaNޞP"7Xrj,m?%?epTS Ql>߳%4S,{iY~*O̊˛3uR4$\K%?Gt~HuLR{px_==Es*!X߾FX THqK|T BXQ#>-3 G-n^Q/SУT**5t4[}8\[ /|0 AZcahyUN̷ક;CT~>F9E"" -7',>'Wo1A f>D:b5] ,.⯯0ևhL>3bWWܭQ ~p#G8|'{(̼yjF;-yo'@7]=,؏/Pڅd,Ren|S /FV&^z,bT6߂=##de1pyKJ9ga:WS ;S1(ҍ ]+[8s8 \NBHp)ߑsa [H˿m>n&*)cK/)6+)"5^P7Q2uKw\2u) :jZ2Hz>\ܟ'd["MFK{uiG~XWw&#ngL${sy8a!fZxm*dnfz[r;NǙ g%dݱZXm9cXc*n&h#Gb1U K*P$T-o+yP*7&un_ѓYb!h+E"}Y>pogdօaKOn螃( >  &XٷoMːH[Q+5@ EDkE27j>uH$x l-wkh$ReOM sSبez5FM}kP2w8:|ȕex{ܗ_v"@<^׵A}ڬY޴Fuy.o.jsR;iAi ,<q md'M#{uظ3׭lO=`' ﯈^.H(9&Oq )p4)+xks\ 25Ti k39GqA2(hQzc 0n|/xre'A!rE<6:V~ hx=وOqH,}8DC<MzY2x_7u Pᗺ1sJYO9&E\oJi{DOpDž;^"姲.t! KY՟ )mX \:B/~4MBLj%:=uU*Jex=u R>)z5U!h Q/o+}$BF&G&IRvtf1'+ҁPKKϦ/f7`"ğ%+h6>[%OBh~`}V:$L8 w~B&g:ݟ="pc(ƀJIEExԃ|ۣ@, g&{b53U}@MhFNwm_śYKd-tr d:=SIhMC-TNaUdyޅ K.cW6&]•;RdHo߮$2!@#`fja(}䢯*Yh?gŒz.¾޻ . 5 G0!ap&_v_~ʣ#@+5E%t}jW el!zqN}[ى?W@A>_?mۮ* sl$4GYW~Hhq˙ǑwXh5Kd+^m3(n`2=N;wKv( d3T1YyVxIy L "l:h:-x2f/GOܪW.?cЊ;,l7 ~:!FHޕ=ᔈ20p+1Xl@]K6yܒU-m4 $4* )H|i—\Ǐ Z2y>0F] W3KT8k}/^m!IM }ܮbH;ygy;2?SغS.D

+^j =AkH{l;&3@5lYJӨ}{$',ͦ sG:߾1ӋX^ w6 .Hh;y8v2y~hIMȹOLƝYl1ώpeJ FV<6K95Ȟhh3k/woC?8P NA,jhjdzM<?+s|0,z5drOVA= "}^ɞ 5VMs\5#G\#7(3JaԾQWzbX$ZjJ4x}f'U`d aM4ȋ"ہQ>H[W+ETo h-S|`GoDJ XbebaRj{WGq,1eJs'2NQ?Ʒ1f0򏛸k@ CagBZ-wLX1Ro2١ږb_R 9iv,U`ZN_iE|Q™A*l .7Jܺ]~slr)>kOSg2/Ǧ=kEbi}:'Ҏ2mF/.^j3SB2byb\ ɴ ~h/ G~F5w M"i*xz ;R>}zc`2@ ^ ,JLl#Ь {MVd5c'+XƏ3jbP Uځg/sSOH޶m& \a8W[ml6]=!Oą':#Zl&|8V?8Q ,d}xE,(v9:u|f g0DmT"3C E'U&Д< Y3ךE8k4|q2i1{ 7Pќ2< 'G#A3ڑ:L p?>K+{Wh},ô\ BwqW*"ϻ lQTȃ5ʄ[l؈ jr2"=_#-}6mI:y47A#>ݠʒHz;)}N#w J|bi9E|n1w*Ю,zMMcֈUic\_6e2C|+((N/ i{@fVj˭yښv2F zcK8@ 89 Gh8R𰚱OdZQN~O;!=I0:z(goTv/<(.ǣgD+3k7&g{ SAT%EiBo /heߎإ7DYvQJyh_LgRfet\4U;$##x[cvbc!Y5x=w31יV~~aa꟤L46u`^k4Buқ}緻w'*35 jǮ >]Y?I|^8nc`xQ午%5YY+ӵJ82ы0LB55_\x))2g.5}2]㭯 qJAf/^&eR- 7U"hDE'KB-}k_ĭLr<%p#AW'PCn`CZըWB"ap 3gF求aԦ z*)cub]02pSz qGt>e[XaOuO42 d<(XRjDkwVj l[Y۫^'^y \. ,@kPT+Ȳ\w=ZSfԨ$-@'5٘QFie[7](B3J83 p[^cBkۖ<>?L/F˳w+ͤ#xKdqLDήry{TJsb ߉vxL$Nvd9|vօk^L_r!N>:,eL׏ӎ ӑ%j9 4FgĈgjԞM9kje*.fw0ruS|y&B,u`װ7YEw`N*4Dw[*Nt[kݫ>[Fl鏚ӨehF.SVyĸA }zn0ޗwq}xFv _Ųa@}ٻgǽ82Wʅi;Qj (DI˻{#*Ӧh $3O6U~ []Dv@TGQ#U ȩjѾ쁦 IzPu3ꧠ> *SH?XNNfk>)ۦQW?Ԕ?L`ۧvmsFtD~#LKWs7i^'Sb3pgF=.Xd&&5bTE\K@;߰ɴVdy I+zPOgS7l]j:m54z=,'GT~<Ĕg!&T_X W; Nfua&26^DiN,?ckӗ e8S]3 Тf\ ',|Įrp.A_gwX6R=Isͨ]ye>_lMF$bа*0lgB:Fۘe#1/GC>Ux橳$kdBܗ>u-t'Gi C~Mhe/lY=Jl$ -M[c Ӝb)D p:A4W%\F; 2tvx?:ifʹk4ϵg7*}U7vh`$vKzCGG/ LVaxY5\'_~F?=ݥv|A` l-N0sq'IvLK.?y1ׂwȷT-$7Ry k pqY!ѽV:SM!$yE\zǽNL Io*k]Xm8X=!6VF_':-2Րp$B6ʓ`Y:~LM.#Ŵ E(%NBD@Ck۠)pCܚbϖ I,Yb 4.=%o7_ A$[R{%BR9}4?FL`Z*Z+:Iޓ$O-15+Px,Nerkw[2 {Qn"Уo{Ѐo []%f%^$|w՜9є  w\sgd+K> K ^YKO+kO{;^f}V|3 }jThmB ڎK(duWa l<#߽מk(B/\$ņ/8< ?5`xn|XԦm}4.d&.Ew~zL*7=Sl(EF :W;[x)or-IHșQƺgmVD+22#ZƐ\i'Bde5B]DDkQNЇa{ r|M3@C} >^}d߂qFEūN-wG_/W$}N뵕"6Y:I6e5CZz6| :kEv0O@4JfI(HF~uVw [G ~?WL&Y<1JnþhMiPO$ ŜM8CLoǁJMX|+p'ܕk% ;XK%|[ acˆa0.L]}.?d9&2Ʈ J=WkdS1tc<ƎpsWᗾ&[vK{hIX%(  <,'jpiN }]8Wn{R)R㱃N5;R`E% 9I[WAXMcƚlH57cEoG 9:1kW3xxKJՊkdKm6*WGbefG6†5 ζmc۠iz˹ٞ,Ǿ-#Y] 2 xmȔ(-^#x)ލ"R.h4pR81"dhH $d8ޙo uBּ7 .2-r Mp}gCWʞ&$UG@:r*%prb0+[RGx~'@V05Դ CKp*h,))0^$'k7² %UhmƝwC'UۧpVetLoR# T!}+ IE8f3W{N>"׉DBZD[;8ۍ$"ታʘvv5t_mrI l-LE(\v/R&nd60~n ?+z-^@Cڙ1NJA:Td$蟽~Lba %~/Y.s™,+-^ Jz%P}RV$xYN&jk1}ag㞡cp,24&1{g|hhU ZUJ0?4~J5SYG6#3WŞ۵׽՚'E>+H:eUx]rlPP Ka$cbHi!Rc;]UusBCgQ Dұ vIJ{fyD=qfNѶ ن^t0I*?"4L?冹y͐9m6Kml=.>| D9/}L!y'-9fڤ1! u|ռN 42C@)yuoI^/|G:+u"it,^N_z>8ʣ3= x 5~+Þuit>v_e8 .TDIv ٗ>=X6N2#-96(3N`5LێWH\A¯6RCU{,ιKNj"# ^p;hp6zic"l^QwD{Van[mz 7QclMW+6MxtG7I|WE޵?+IGL׻Oƶ9{,$pwx|1xŌd:S3+d^$\~UZq^tjツ@_ 3=Ry۪(h}g!TAoS%? e*?r?o?G/zTu* \5OoΙCOX~AQ골4޼ `ZWվ [1Έc>&0@IǾ">ЂnQ^9!OP׃N2Pćn{ZlS$Q{HUEf̦r(V e NsǹF#* tg =nاq>(ȼIƚPĴB~f\CZw_.KB\GgԮ(a;Y"-Y D1‘\! щ3a ލ7+0u؄2WtVMNjr8Q Y&z\־*%.-MNS2kyDDMR"^и5b}В}z?pplaY7/*ߔzS|˲$3r8FOxl E=p1 hq'f>xg+T򣖿DM6|q-0Ӕ=Ϳf3&ƺ>xǔ"/ q jqV k! l N)>OezCv|H5: }b1q$˳Oc:L[M2[2VB" ] }!v\ h9*U9{؆qNpcےnHj4卲3dԙmGf%ئ`~^ڰ Xi_ )CA0ȦI?$,]>"$IfPF=tIW[^XIU'<&}jRݛ<)ex)yt:/귀/vMeLGzXBRHTdMYc@Y`)ZK0 ᗡ|Q i͝.p.(?yLo}NDTBHYe) u^sJ H=Ы-9U3- 1]MÏ֝8XރrcP!EcrvQWhfM43RA~4EE~hݨB:΢p$DpJ;"}D%+EXQ $"=.H`_ ~u";*uEzIFSlTI}9آ6^\b dKs0+;wJIQノQ\DXT]Zr%e, * qYȩ8UnZ&""eM[ I4lsdA"3h< E\TPVg^_~?`2ib_/b[VhuY2 W~r& sӹv`vyrJjps(a[4h=!/|Ȁ"Gvt|!Uk[ : z S Wq29l$c$vbQ $(G5ɢ.h-׫6&P؀*%%1 y!fh_Y[xCUƞ!W5@ v//FfF31C~aC<38ڐne},'y{ ~KW5S^P=ۿ%!c/&`1x,1ںDR/l}f \׷vU*4qg4S^NUN)q{F KwW LәQF`nvGct#(ms#? !-7ԁ%CM֭LVi-lFa{nO xpL18Nc)Z|?AE7">\ȼW~xn%c4C٘auݍF2ZUC:zBb}*Lsox5ms:aEF*1P=o 苀d *`Ͷc*JU<麇T$P&B.V~tDnShuOxDpOHCᵹ] >1S_I1PH5aW/L}\pV.P5d8|ⱑgby](Wy&s39O"sО9Zj MP2^GLZ٢kӜ{egH`*|ic/%~?揎F"@A@M"|}c'1Vjfu|n׀c9FQ'2_^]dDUmw\0˄9ȼTWӤ:u.nU/`BAsU7io45|?ѡ-A;MJ~c*B/zj =v aj<⊃ЈGzwj<b]ȽWɋMPIm(JK7) ` WTlmWQ B;[c aCݝB|W܍yX5wDл5 ] 8N83hnk=Vm!kxLڣ:I.`,iBs=f Y'@j`%dqp[(4LrL1.{YX4wDZ)Р-E{X3gWNMLPȨ9%;ZhPh{= ;š ߮= Ѷ{ )l[Ck/ dxkڅGrcIagqHD&Z5nh^/XbБȯۻ՟2XlkoNA@վ}8-DgW7nцS0 a٪?5S9ָFZS]RCv8Yh+(7DKݑ M7)Drn'@ 5飢ڹxմѲxn9,GIcgbg}=jVO@q:g(KcpG42uc+rȶ@AB:.oKd['`8aqokIpMܳzC7'Vބ9zGEjSl|E.*R\A*mԝ"ɸ\hu*2i!D TJtf뛯 C-JaIbc&K\ (D' s#e_TezmN.eO FB_0 =U1' Nފ` 2<]wGWEkI3ߥy%" djP$MDFdhh}ړ[2" zcc˂z4k;Uuu=N&-1/|}i50XҚS\@k>;j+| zz19?>0/ȏdֹEu( "8(JXd.· ġ2sYٴं/J8qVeojM p?iFi +ʖLfc<{[p]CB&A(~fauh{Nͅ {>59dk#<9>Ewzo]9 zj8 u=J^CE}C)7R=Ȓmol̏ 5v'zmP!t _BFz1PYw]y2@ɼ H{ӿm/O u&)Tdwb=W!?Sy]?El, D ; ;։qmNDHCʼn@ԀX vFY~* y:im NVl_2Q0J6EE ڞ̥u-TcS^I ~y=䱟FNyF,Grq0|qVGș8SNq+)82'D§,2_~s )5\}?6wE`};|; G>^v/Md]ЕcVeAABTj A ]TӠexCΗ1ӫ!'ei؊0F=R-dn"F?w\N f8?g>0i{qНwExoqPՅ['DB2$amj0Dco,L_NhcZ9G2^EnqI~⇕0B ~!?n(̱FMR;Y+s7Tﴹ)8᪭z袟ہ}?sAYs(j”Za0^8 "_KyĴ<;c7Fe2]7 >tPW$Ԥn GxaA b㎗Yw뾿,t+B9,wډ덳RTRm쟟<]w6%a|N,;ƲиP67鱼X=Sqڊ0,ߚDA-qa=iA3tΛ-uGSaU[YpIXu Le5 mP.<i/(;` 葙"?̘;VH{pYc/m96 zڐmJ!D}O49>o|WUn=c)*f`0hŌ3)ceH+IIwcG'wo.(8q*ovBO:QY殻FVb :}G9%~` /w3ՒlH;e)|`٪Kp}ȟ ~EYɘ~wF9 .^T~E H&I hT؏|\RhB\XJi"MmdzTWx H,c-!AZ{aVK4k,Ţ ![u׭!82 ?,8H'V[ⱆ5Ѝ ߡpwwUQ^>}#ԃy|h2v ;VDHnKߑ<͔TAC`L6ʅ)*CM2I~c OOoV@R!u$e~=h#4p=T?R oiɾhH0MSb3|kJ<8L1ML6Dx˾yGD&~ÝeS!sVpRl[cyR5t֪9ͪAsy E+ -Sx"y&DG-Il#C;MU0F _@L6\ ׸lHM*RpnQbj{Ѿ]!O,'ڟNûpػV*PXSc+w Y{!c0gĽ` !sXcD#/Yo`VJEaR&J[K%fTj?+)+3~zme$B@Lr(xvY:Vq gt:l[ԃr>%"v(?-Ŷi%Jr]$XsuFp.J(+ݣzV#rr\_yMFEVd- c` \ڦj# 4WH?$D{F>c;գ:]y0~F0 M c攐z|1Vi[;\T?X}Z>ki<+6~b(khg ;nׂR{ԯ $dY.푟5 -qP<R#(w"˄&2b0k;~Yeu{_]>#Pњ\Md؛A;7}%\$bEzuk3O^+?[Vߺ+ A8tۉ擽U &?qx_bf؟6*yZէ* .Kq8E&P5ɑ},snvE:=-kYW6߳dK'=++-`VѯkW}޳K+bϚB`9Z. h aH<dž@)# _J +1vC ɨ3ͅ!4i.v2H,937 gx}Euҳ\) .DkcAKI2Zl(+T Hlv\HgR>Єh]ˏZjs /F$c)B P^ObYP*LE"â1fV-{)QϱUO:(u"8d(TB-~CsJ+/)ДӠlէ~%@ 1'xj_n.0D\_&Ղk;0ݲTʿ6}1We*#/ 媭tbݛ%:P!5!-y,_WϤB+&9Y] IV]xkP'1u]_E Ps};lJ&m`Q"ҢR֝#TwGb+Ks)6酘u>ܝX S7-Mɻ‰M*` !0v؍myPa\y'=KQp7D_Jh74׆':w$I)5s}IKfZyP4ApKؐ"> `/O~ψ%3@0L X/i-h#-*_"F^FG5ŧ'y# Hi2ZQBIإ^UCj/-z#=.KYijؓfqCYJHX:\X9"A_*{4 L:g\to[gDBp l;)Ek%ЂfNUas^HRtX9V>3MMO8ZQ+<,Tq)It­#1K>6٨ה~\hZDr[G9=1-ӭ6tni?l5iχhgo'Q^6:. [?=Hj!IIzI#ɬӯ&;>ёaut;^wf,хI?98Ur"''0kKǗ`;ߋZvBoeT딩5N Q SKMnO"thBՔ*T$\lAD6q߼||*fw@as;ZBZ^ >i($vtS:鄿2q>+łq\* E45?{a'8]8 Ȣ/]n'5]ݱ9,B;X깮ek䱆5Y1w6ct"GDtJV}Y0H~)56(A@S*>':s&ݹhB.8ʐYX׃=Lb0/MCM?*4{aDR6P[Iw_l񱖸~P\}Q 4LnYf-dRei'2Ù83 &?|:/3fҷYBO44;N#ʮ'XeVo?g:l?A6]#% SqyՓ /h/4 ZUvRG}ȓjFiLN6 u.‘ =c.9peM*4뱒}6 ( zW}¡Wg j[ -UhX{aV JLsm(şHF*ZLH4;.U |$'iz/A/{6E#\WbR?+lIpmNp0Ճ '6P҆D2IW9Q";, :6PC؄ٞs?~hrQtҗdT }rC)7DZTymAyǎe9斦í{.'ݝƭzt6;B`F]٧cswh۳)WW3c5ާ4ZhVhC-/bB 4_Ij:K;8&l'GjaD Z98JB ;B 7,V]RΎ*GX<22(N~إ;漢# ( w mw~GIBZeHzL!? \ v!qz+-BGQIүطd7rTmmXiE ׁSK&a]9W)'GQ#Gޟ ,c!Vʊ;ޗ,^"7Rf"bg TcA2˂đ_Uuuu-?FF$dÑ!jxk)4uiƼmb9,hWSb`YQ! j`N+"dj"hB9f|oM d.Yl'×춺b>&c/_EslQm)+l:kwyV܍pƚ݅y6*e-#o= (EH < ܪ4.~O [:%W6T ӎ~ύG%/'t'tz+RMDg/m#p-v|+p$6ygRhx(͌$8QU$- PX-G]m7NX? IVBm]KѸc)IbRWzŎhXhZ]~QH,9C#a'v[2݂;͡MOWqsڹ?MXO1Ibޛ !(aYƟu'-!T,7c /:K?det"1Bv v#0ZnuH rO`kQliȚxJAE;3 KPF\6%Ƽn }, iB? ?^vG*)%iL$!z#vds\0 Fi_y;]"&ҫP| t;9B9xCZP*2Bj$joa:\<&m'>QA`H!L /dގѿRS ܤ!~ss='hG* j9 ){zK`sqAQ|Gz8+^Ja{OO*ߊVb8juOt"I>ՅðSF-=5'(/- 6|ơAI7 *N5v]ȴ@|^2JR n  /Oɐ;,#Í=o :.&n2KYve!yiIUm>a% "-q ФO>j9OLX##+wȵ-#~tfjnK &@,<^Cjf^,oLwAƠ$^>;CEg^.X0x>D]TKhJt':7O^,ktmUd$r!zNG[er#9/&)\Ɍ}u`S~*ĕ63nƳt!D|ʹSUckXOOSxTATTS3S5B(SH)O]&t"@S2reFDݖP 2C֚)!u M\> |RJZ T{`ꛇ]9S9@U9٨D|9 ykǬ]њҲbQ7^g~/훫oVB] b#>e&7Ol`M) &鲸w'6]OMV0}S}֋,30 H=<)ck EBm;mS Y"WTDC]%m˗>ߓrx&(t1NyB]{<104۟ :YY{%~(2<[KpZyLⓦGnq̵kZ*AJ{xx+e #=O4TC5| e`^w(eګ4vV.[1 2КR\Sw և{_dY??Mvʖsf^UIɼOv[ތ9!T$8Q_fv͒ƤW!q7Q畼}EѢ rU!8 g[&t3^K"4ˁkμb@)'֜4l:}p%;I3DXפISUNznvٛ/?J˓j#;:\(RGדp1@#4j}"ܠT u3&mtjC3kr{]$  [qKM{ ?M寉92=25K|ȉ@̣(Lh2ϟwv@R=lr[rCƧ\yWz}ԍTɐlSf9s%h>-ľF|_rMKq@<^ց>6! |/6&檬} %~f8OD{JVckҫoIİ8o&4=C-V>8;Sy_4 UdKI%+V[/.Q^JNb"i]4n1fa9DahߛA}L]@}ϣ ){+XtFR{h뗗*g5{Q:h\+~Tiމ*H{OÍpʿ7b0n6vz]Xp:&,~_a24T@PK]Ig1z|)5Y,r97UIcvNU}o> r%IJ=!o']!kZ\w,M^^7&6y K!'3A~Dmvj OI4#^dblkOd:g{ܧTS3K|[ QUE*](~R(g|<Nc2w$asJ~v~s:i,EGi'ԉ×dZ='3of7b,cy\o^!AnĻQɂRd~r[Y3[l shO(SH8IBG8dIx-r[.݋cbO&o9ǻl ]n|C+).aA;a~h/'7rY²} yBW bZm U$m"UM'8[kޔf˺P7Cޟ@J+X->T1ew35d{k)DRTb C@@9Bv\ |ݯ΋1  uʮu!J\5_ mKcg`'ȁU-ߝ`%MffH-ȳm䢐)-wT[*|h$XBUl)<㓐4_p:Lxt$SEDSR'P:8ɛ伢ע32]`N:CR] XT^_ Jg:!Bw:c`gboIF눐JQWeQ/Y2H+Hϑ:;[71iN笻!r9$.4ZS&&uf;l>̞= r?t{C A x D 񀃍`[<|pLA !UTSf+|8k>+DNP:N>!B@=q (ˣd1(068 bY R}0|<ͩkYPh2KxhAޱ1)>*\b38P_%_3 mT@+@O!CNbwb|44vY:вR?A'4x ^c"^@g3 p2 r eo+kT:]MMRqqe)ܱxUÁ<)gHE++{W[ŧlfG=xY@?k Y )s 6+Ovܿ#W?~y (4J236)`IOmh@wL==bp| Nbu1`NԚ' }Bj OKj=*щ$IܰTJ 3г .Ue[{&ʼ@]Yc -Զ|ܦN$)ǝ(B;?6{gڄ1B"@6>4k{1|-=~VJ SRSxϞT-Lo {<`d?#X7SG漣ڹR$ACC ;,pB9ViosKK4WQN8GY:`ӡKMԤX̆ ;jxokdf 3.7 kI+àvO{, ϋ0q&.(McvH.I|=/zuLؚq}@vƔF({03[q#k1!d/tuw "ru謹{NeIFuFp'_״`[2ጒ4Pޒ}?FNoR ܒW$UVJ1s9Z9UB'3y F_/J%)hTP# _"g^+TE1EV1@B?d?~W9RADM'I.d|>Fg+e]^/.[N6Xu<^|g⊳*!3݅ʂՙa Q fs+ZN:np5h@B:nlp,d*^0ARc*4rwQ|s=p# B!Cӻ+ihd2|R`:gZv_lH𒚡N,D0{}a=1>~Oj=&[>eBΗUnp4ԽST_@y}ز%p_b)E'zɁh+|!7!^Q78FZDWvr:s4HyK AaY$M0/Rvw[, ~eڿY)@Qb:Un$W?S=w(1æ/`.)^Z:0; Ml?Ч80¬<]`v)Fq"q ^ ;1F3>W \ȹ({w?Qf]^qB īX =̣8OU(_fX'횀[X.j@RGd&&_Gx2EK)Z&PMim$kĂ*s.` pm}l2OZ/y::[a CMlW99S14WkKÞKi'gcO,JGH,?G'dՋ~(U"PhݷF1 DɧT)'iZA<)i"^n 6Pxg^;_Ϡv:Վ׷aO?8Ĉ^] NKfu|Ndl?jĿ,;L̛}zAxw.QǠ}0ɥ.u8auFqı[WFDoTp['6"bTkzT_{`!aQ>X{x0"gq@ϙLQK` %{|E=>'fDHcXlXX ,Pvˍv-$7}ۀչ06.?AGmڂ wW55p!k\6txBZQ#Ep97sYj1 Y-؋a!,`G_D2_^\. ޢ.gOh wšvH4sKʶ8/۷kn5^#ok~Tne:t7shu-5ttV#ou!]`9jDEO>6>W+sCɉ+u;S7UVU۶?O}\"p,j-}I$D DE}qn,nf@K:H9ڝٖn+e-"F,wbڶ*}mZmEh4}HW5 ؊W,pb,ʐT^''(}!5bS׍  :GL*ct68+Zb˺lhGx3ϳBˏ_2d~M\WXv{hcI:T>'`0|k`C7 GiEMV!Y km >hRQ~!gtݥ4JPk G8[U>_7+{B)+\܄‹Ksj@mϠ|R Hl^M<Lx`W>g/hJG6A謂SD`Tj2abiɉ@gg$oxB/5Ji(`q˾:K;5Z)O!T!~ ; \v$Bę{*i U KjE8LH&: ŊD-jJHxѦ_=qt'7n!)ILЃ&aϳbiXFsZ(U_  b=;ݖ a{mt)9kG}Fq#1Qʸe U4[<hGD te)&]$ Rl;T=g;h W$;,μ`` L[{pȒ%>_Úڶj ر$P=Se/wBcQFH>*eib2@c%am Aݺ6~4r&hq0+>dcQwf(Me*Ch&$*|[Y7 nX?¥I3d (mw/Q! XqÑ[}F svd:݇0k h/GԏeNU%f})8(.6zv#7wO1)J^g@q73_9ؐeZAf{W pu"[19Wouʋj"S RTIHL)]v,KO6u'4Q蝦 dp^ 5'ʰCKLȺ%G#dV~j"'ns 99CK1shk.>QTwK2R wc)rܮ0><| in{ $?܂Ű1oCl_xV1' $ȡUeYd 3*!\Dq>Jbଢ଼izt'Buxg576#VRYŷ_v|7:NqcFdrK\ 6w^~̮mvC= mU`o·q)ZuK/ˍ^"(=MOF;#/maMbۆ;ۀ`4HzYҿuWOO&'ep*/ S]7dvYOvLiPa"s)ܵg @ 4_Ոf1/vQ_ lEnIZ7Liw:]񴎽Wq9, j$cR,T.Ɗ vӀ~߹FXZWܥ&&7(V3,!&UE="}3[@OXm&J[[4@4y{ _ skaՄaӹYM[m=e@-/׭ZC_&7 zϬ4Wbwj-S: 0HPմ\b~ L{դo K-(J-6 bT[Yl4{C\W .z(*9&!0<4.Zp cLLUD& e`>zD÷X'2 r.l8w$SADo.ӗfmL}#:scv25&)tmݢ^tU y69GFBWx5R1*)Dӡk/&mW*+{}$y twW>[nPU|yVsR4j3h;%!O @ˇsq갲>J|CMƬECt.#OI&D~*zwuHqz^`e^C{ 'GҔβ$s7==loЧ*z4ߩ Ĺڢp ޻)ӕ:DyX;7MoHTS!'`#)Lw…RՀtۻz&Wm10%z!/@lo联>`iϤՉ ̜ 2FO'{g)s Y)b Q\# F'4s@;Rlx'~ar}e7hAt՘d|y BZfֻl4ܧ3c* b3IS!)$нX2@7ơA2@^h;&lnZA)&5 z8<a57kiV+j|`jD H9?Wva)+C#wU255q@#V<ҩr"f)':vG(DOg2"CJ5!BV2-ڎFBC<~`-My'׫ EHڈZM ]R^`1 *%D "m0.0?p͈I}-k0<~Jm4jPFɿ4toZYC.AJ15P4R"\Bj` nycaޭ)!,?y[o7i9E֭Q 0}K8Cф8M?9p8gs~N)UTAoF)g<|˙s N1 *82]/B$^+bتeGe\W؞_["Ӧf}u sccUG2e,ĹCO :zDb-@OӝQn֎|\jOf˧ú.yQi4^`3$ IfBĥY τ7P洑mgu\>{]))׀8NG&GeH#ħs?oA dkMD {V ,]?^ ܩ# &DJ >}VfPE0m !=$`LJÚ9IpQyRҒEj:±ߒD9j",8-lSWr:ִkZ Fݎ5C!%e4VDtJ鬄f4dV.VV7Mj'I\'B,ap 24({I WfS4K1teTF%N;c5`gzGˋ8orүɉŝJh)ϑ A'@{ns#nQ]j%dx|vg^f,ե@q]L'\TT$F]lv"'wYfv.X=)&8GFyΚ<]?i9%!$祁r z;pJ"M#SeY=$ꪛ5]`/y푷/)%B*jO~2Ubd5"uݎ"*G5cWܺ] 8[vhU)yMU ҆&sٍl1x#Gl|#'`$jʯ6x YWNƆ=i4q!ԻjڇS6H4&=!.EaYNB{-Bm#<ݍ< FEp"r,( zC1N4Qđe`;v#kaB׏2a(zH+7;6ٖF*Scq322KĔ nZ*` CM Wt5(Kú|&'6N5=z]|z..WI-]5ooWijx GA )=zCAƠG`iJ#`xREۘ;q($”'&f Ք輅d 0"J`~EψwV4%bl!*dk{Cd{Zm9K*۪73o;gk+pNdG'TU\]o2XKQ(̷B)/#(Co@e ;dy)<n2=Yn^ Si`6a!2&3|U){1Sڡ줱w6y{nnj ϴ;Mnh 5Mx{.ꭕg/WH%_AoN|8w SrJxt\؉nm q]AyhyvzcR BWǮi|S&k$__edЪ WmS:⽍CI?ADweMy4Maj#"3fMT؃H`yܹD3 ~x#mdp;ޒ\SVnUu> 5:֐xK|8`9[v~>Щ9V`;vh{&>I.":!?wcjx>Lips4 Bh _/"8zOϊۼ =6d_@-5IxyTeɾ BVp,,&l+(6N3?bFuINKY!(xfn)UM%}C1#KVslk:>Iͤ֟eǕ͓H*;/fU1*YЬAT%f; yᎸf𜏭Owr\ I'V|n6 iVd6"ЅA+ , @r,;6'\d +tO2l+3 9P{tS!wQ'{A֠4h-NrA Zz|"/(wVaRehH/C!Yr$_`ԜJCh訯半57| jrfM0e宮M&^jA:.R܏P$R68#©eSH*`?3l|fR)'M4+BQh+2#ZWaZ|ٿTVE^OlV[$e}xz6oĶhJ4l*/BhVbzRplgE+N3V7:<<_)P|qtFR}@4iH^TF tC uѾ1İfsJ洐ARd{y.pُ̗$4/3 xS4 x) lvtR'eT'H-xOI7|trzd f^V7gްn*`b#T3)4 5}[IkַZqW6/5`uFVR˫*0!rs;!GF-h%TFqy Wc)EpIF (J&^f[UEǻ1|z7s>UQZ7cbǙ[ey.;:dY  v`\\+ᠷ]̉qTt)_.VԐ󪃯tÌ1>JZ[Ab*W;ϚBHmsFFIUUZv"J=l!1*Zl@go\.1]z~ZU4x$J$?~ ' N#t[KphVPr_"rCnJy >&lؔTPZCN&PlS;/wh'"#t~vbHͽ=xLgP"x t:qi3fi; *藺Xc|a r~ܻAKM!qOs:5q>h-\ O9)E^:y}UEL _+^Ey|k XU|T?kذtVq&d8\:2K 7ؿ`doj[u PXKR}4ts$Cޙ8r srwuw߻q,4 *quf#m j/ݴ!rbP)&AlS+#[ uHC08˜RTHut,_BςXmch-k[ۤ*o}?4b#{ ˜ݔO+e={[B~vXC7@UUEzǁ O"USaA~V ?jk\i`^2_ JsrPbZr0 .:Ъ80)I}rO ^]'(+DĂw@]jC:ĥ i+)NZ#$ f]KbUDo1R߳zcZOW/cO9Y`$0%ϡlgO;`sY^㨃Ѓ/n*\OPWk>Z UV-Jzv B7a-+_%{IX]HG. )/d&f!pGH t12*)[u,G`je2tX%a?~UGcRdg܋ *G=^ fBTM{%lVaB;ռ焭Cտ*W6˸_˷Ў2R-)mb%؛5ɲʃmCἙD=ؑ`!C7Y`9kP}׾[uvwJFJs;S}m1;-xfAR.eq!ordgk'cOժP:K*@ HDF&u 3=7,HkaFkGh돣ᮎc@^s)@/Fm+JFYck@tԺ$An|'#T1J 8Й(O8k 9/6>gêN X5(ZV74kڲY|sSipE/P Dt"ȂuL"t, i9'rhW % 8QI6$k_{nylbd2sc{LP6 `yE,ʕafB OD _V"7|cD̼%pib'"=9DG"ʿkW'ѵj@U\Faw:( gc7imݢ=dV/jiV_Su qqۗGUSN,ಞᓬ>yE]jURٟ@fNҧSGo+ Bov%s!Aڍ HD5NT?E5ظbA2JqYT5(ǏX&iH]z u~ ],+DۭZdP(̴"3QyGyBLfq<җlp+j﬐tjy5 %涭xş p -ƿE'.lFQ>>JVP.z+e2U>@,H 8؉@_ 8gv!?>e5iIۍ~y(cD_u\:Ѣ@aPMʮܜވ˯'?mH7Z ;Xs( oլJp|(P^y![-|Xi,*u49) R}㑇<]ikPG2|(-p(RYY;ş":'1ziw fk:ZĻS.Pȕe㤦F.IΈ{kGZ=ѐ=Q9x&uKz%άBM+ ӿ:o# wبlzQ5A_PX϶r| D4Y66uz9tFܩ"뛳@Y Sz[6Yn D8&W:}p э 79џ= Ǩ;s2]-$Q#Uf>ܼ{ vsm^hÚ ?Gvyn*ɈB/'j)T)oxgR5%-`YG@(4-UAPk+/na6̢e9`äZ;Ft9NAgS(C ݿBl[l-,<|Dp nUr};CItѢp<keF(fwҽ`FE/y?W=&@]I[,Fqd5txZ¸, 3'."[6.G|< f;ܵ?ΗO{,vW(2$$!Ys5Ov }KcD|GRb-d"JT##ocG"-e~ `!ǁQ&W!>Ni[=4 ݞbvwkݸ0Z8*7l }i~? ɦ$I&b M9W􏠰';e0{Y2zpULc?W} ) eh˃ <&3D^?|Ώ3 hXkɇw JtRץx&>:m'VXkjRJ KSaP zѧJQl_-2 \>ibo%MP+8-&y9vb١偋5`ʫHCug:$^'/A#h[)}Ĭ&W[/3刉-v6΁N 2#9 M_3i(iTôLUA?]%F"T]IMgT'2LSeQY?-2JEo^Kįăyp1G&Ҝ(Da{ ӌY#pEv8I}.ĭF φw(&2CYʎ2AȼNf7G+F~n͑ fvFk0i8~7PF1I/qkۊRLθQhZŰ"f]0L^sua=қ>χR%:'Hz\?Hu9 05Ti}h-w<*֓Ezw݁;J*:F -\Ѣ`:yB6igy|#㙥b3ɪ8#&\4|eeQLt_Sm7 ޟ5T-,ݳ[%BEt땳=oSm0x2ܔ nWb&*tZ3&2CkʋО}E"VrfC5-@ǜ&*?׍6!+./ '3}t¸ǦV #ɴ{&$bOk4/+X˭,b o 4~&GpMo;:\Ӹ .ףnhUAR=wG@QGaVU2 ,a>,' [ZftB!"5ZgPavT'a\`:bqML-"N$F O*!jTg{3x)pc,~|[pBq̌ڑAx:<©cpK5{}pcaR.AR]AhʩO@sػ֐ush4謞%OpB|& lDxd+58uRj<}*uz7Mݯ.^T1ʘ(6BމDMGgMA E(}5VBkbp\XxX4Յnao2&n2w, $c8gN"3@ߋmEE[@ǟL獁}  Tp쇉/UZEÐ7bC^ i;-a`տ<D}[Z2n7e' ůsºi^7A9~'xA avwtu dRuNtݝ֓ 8RYtb2+&h6 " H=,x,mNW7Sr\Jwޢcp"rT&1?1^FujLR<}1 _k͊8!K%h%k+wi;э(dzO>\_YyYNҴv䵪*lFGwc2G@]Àzk5Ū|AJhRa4 8 ?2ч8(6L8i7!VH `!>VLCICrӰ/O| `RsHv?Ael839Ɗ2$`Gn5f}& BJS<[PWTl~&hWqds w^;RYNG{I.9irȷ=<`ൾt勼-ߣ,@!BSY:j lb0ړG:4Xt+5#J{pٔeT"up?n-bE0t/*EA"^&H\ONF\YF<<:d}8Fh gMVKU8wQ M yTS(1M7'I+/ x%Yڠ^2ec/2CEoy |yV8-6 {V>sĝUµ?Jc6z+lz5" iAm+{`=dtgDA+ o|X%Pk܈' }b+A*ûSfKU%m867\ e^8Vp,ʸ1ē `e!ۉh~s)Qwb 7t隰Ken Ӌ@+%s=p7ɛU\VDФLޠ]1$J fjKǾQc |],sI;"x꬛|YnܸQ/u|zHoыJh@@2a'pM~Unx[~Ϝ)hͷ^}zEt4/Cs iܶ#+>VyY2R!+vJsc-XX9WT]8lLNyǗyP4 u9]z=@C>хTx\*t% ĥ6&1d'Jk}g:.Kt a}}Ɔdžhx 5}i?^`a'Bԯk}x&dF7Oʹ3v\^U1 g'X4dJl 38ـ,fsia݁F/+ksct,xFM-ZKjy+ :cv$ ;F݊h70J @kZ1-aքFJ@E@gf%̅Lȃ)YnG6G9% dJ.侯HۈDDSFߐT (FB> _]m79ꥐ ],  +uyǩgrG;2y-UV07®#|5exJH Dt-Ȑ_z󢕔b#0iķSګzxBQ&fK%tBDC:{?Ģs(HjέU bXSEUJLTH}Zt*lsG/mMg(Tu7TjĺpfpY/}i7V:bNWi7Y`8Sp* [{,: U ׼&jJUߍH*%xlo&,wSSW z_ՑQ\MiD t9@LT1<HH%l<.Tog<iQnn\0Kc&KJ5?C&")˦'#W[,,y&N-V5ڋ5@!u=yݕI1SHVbSzEl}\gpT`qɶf=4vC274>)!;X Yd_wgc~]Q:8߮^\@9r3}Yg:fU_+!Uƪ{B%Svb\id3/*d`:Sc j<ִhgez~rvK'r IyY Me$20DeRZ"0,kL,!"X< ;Aۑ8aَu*2n~CF~+Z67's}֐9. &vI~"1J3-ޞSY,VRVM?i5q32$]~lj.ywRM @or*(!Gtbr%{! IO-y6?>5J@C: bÍB&UH`l eTuub:w(+KK<Byk P3*XP`BS[is)9h l2\?;JwWygY_i[L+N/cSbxϵKì9E}:DlV0 =hWW.=ՌPISBWƪNƳMYд/k8C<|;Ų;絍VZO%F,e+!!S4Y *7)[&CUF Aö=Uy:-/"6WsD }8 E' [{8w~(fCH wwgswsc=#iWnpbʑΈF yEof|E%YeQ9$Ҽ&GCaCraJ2FuCluJ9P`+8!B00wEН WqTL+e@tKl^-7xm5/`S{ 0kdT{T7sMH |\}elW%¶QnU1}LT{ّh0kHI^x̢V}ҀF"!8&&$2T, \&֨ƓCU_*,H]s[̦Wg)!?jgh Gܐѹ{p[ӵ$HYzogA?FRނV٬.P   :]:o#.SD2FQDׇ,8޸qkJalGg\c#_"z@K FcWEF` ޘ[F(l$>cLSAdwS9Im)l*c]. /~OM6JZ`VN)@"@#3iz[rmGS )n@1J]}%bAhm>uegD:+O܊00(9YwxWK-B_BouVGhMtI&k#Cٛ : N d"KydN뙣?%ŗBL`Y&=/OmidcjB@㏈dN>[pD 6%z-6A rB:f,-hs'U*ՓBl}`jmb~M6 Z6U(c]b*8G"Hi6wS"}t6#4TVER:1G:n2F]h`+㠪֍Xyi O>7N,A^cw?7׺|2~zHY*wP7KE.$ 6_\CM24 vh24U`=*H$Æ e&aPx`L:EpFzZ{8EHAV`V ;qU=W}w%Kj) ҭJO&$*M yL Ut8¯"%K{z8ה8iSacj"/lRG\* ບMQ;ͫAJhWG"I\Stn`tsIkJ;.gS90sܪ8*J JG)a= ) ԯBo9~Pg^S{ح"sL 1imjX,jb`xJnBX7:Q:0jh(\ev]!JkQ2~ӷ<`T跔A#LTc)b9j-rbe%Pioae"IG]Z0rT3[<;gx lv;#S׎0#FL&i A Pp`̷Be43uxtޔE4Ȅ&h0u1˟]LFcT͐UR^`S'@&X"#k1[Z٣^SPn̨(ӊfo:l#SDSk|zKↂ^덗K҈D1E.k}ʴqp5D̺vSK[: 7aIYНiYɸfG87goq7)"bTk]+ة6E#c?q$32KueIr[@BGx1$ `Ac٦\DCd {lFY)j.8yZVS3CtQBO7 sL9Vuu&HľeΏJ= )'ݓ? f-)Хf߼F_|&>("p2xG 81`8) ʒ?`僆Xu溯,M )Ĵa 85]LN)w̓UqTN qd'(㱗j>7C $b*6ܟ.rzQshڧ6F,`ZB^̍KFקHHb>0327Q7(io-f \/wx  U~BQ,+3(`h /V_a=+24 8f Vy Q?GMMT$pu6bIԃ;.m̪V$I07w7)de)^DH ȭ(LgLqK싧Oe$D #:2ڴpNWHꐖ~Yܰr D;Ma<2F\n|G''TBk zOLj>mox-*gq -."'yd~/:@(8-ĖZ Y2;z54-W+|f$3Yd4,GQ[k0fj-m(?2Īr=+B@9`•9| :AxNqX9(Tx)$ CLE^і.m> U/e/Y}!A_=>E& }”p܆qB$>B.L3Zf?\ѱ VfЀH 0Qo:E_'P-Sc49n|/~F^JX 0*bY1ZC;/jdB#.KPwɯLP+A'u$)>\f"-խ'H.Q;{B?>0"ϦqyкdIL|0=nR6\O{ngV /isqw^Bwv`"pqk$`u.O:ǃYN<`z1Ix"y T7\2׫|@H~>&=m7+y0[Wpj`hZI'QS#T /~!mk}0:ړep`n"_bd]$t_ոpXt4FB ~7 va$U2p6Ĥ+# PŵZɘc{J:]e.(z!>3lsF Ҙ(Htќ.MB~T薽5lIūP[ee(}9p|?Mm#Ŕ@YrN#9({G-+7C2+/oڶ62vqpk[%IuwTߖ,S1U?:yE:&]|B1, X+*ZGBF!!Z2W&HtiH1s7w[o;j:jX<+yaM`y4V }B) ȦkL U fh!o UrkPMμ7065T!҈Յ둾afA3D7`0x pKfZnc[yUlVW;]Gy666dGӵTZu9t;x^slsmԅ+[P^Ҳ'5V5tj8ꠦOAqw;|dl%:`xb$H~Ҡ%]|E^ 4{݇]RN]SOj/=Cұ˩ì_?tP4YomW꼋%Ta<0 K*#=Nj8NW_wBخkF W`pG/-V`wX&U+ǛsC!k$LQy2 yzIm i3-Wsfo~# |zpyA:땏Ei0eܚ+:$wЈ7]{Mk"{AqT|)ۊA*IM%)n⌍X|Òjk(x>U1**!>qў|XpaşZ5\'"ǎKPb]ySaN6BvثJ|Mx*$t0[ )&_X7܂c gD42IN!/q[WdEp$_ǻf֎ Y%|2Hm16+_zR:Qq>@gLEOCъ HrAVɷ( 5pQ!^p~%+G f\ (jXL~w F:;2p%#gwCp"Ix"t:fW iﱑk~F@i9JT-&|{j o>C%ALf@M롿EZ6٢06٫mW|EKҖ,ke,lyjqZ^-{ul\7)O]})\1]I,izʹb"yTF$HquR]Ȍ7J7hzV;]^^NrJD^XȘm,]rB暑 &fU;TO3;ҝ ?2C]4#Uʢ豀YPg8uN0吜{hZ׏<f()E3!wfi!FZA1:J7ثRLz0zƕ0l`8(:f%4qY]ʇ|z9vxg6> vQ]Xe#aI?xw 13i0+@Jjod9DXu˥-tk*PTbrcLHAd7i>l`m",f R^Riz G,){u5:jY\=޶7?uk퓳%ի2-s8K;:XqKhϯi= U6$'l O5M qe${dc IlR%U5HmW\ l9r) }ٴ= $*iՃH^']b(HZ]=:=vHr_噈s^"SM7EJf` /Qgr }?̃!%[7h?:+ ~o痘GRJ= T\~Puk3,JfK%!"L#=S{3& v+.tLT#p6H2b$JeaK UӯGkeA\|i[|F:fV'(cc62Rnb4K`rOӠ'cːWZ 6%@8v#]$jsbc,Uy`6r~bE7#cYC n@ ; ًEr6+ >Xz-]9$tď$W!`ˑx@"Hŵ),d~kD}T 9f;rϪWee2fk&q 蔭8B7"t%nj W]@u[Kܙf@|( >U.+ R'ڔ*8S6YםSt>B&,q QK$K5sFlTs7!ARdl{e]yPnաhyC!;VJS=:BU0Pa)eN2r-¬ ^wVtho_q캪$IwW֝2,S6'6Tל XCnUJhj25˜M $nKz13[ g,ڸ./mE&ļOY4| `_gsJX빻wT=j*5[&0Κ=}3;kzE^L3{UR¤Ļ뷝,TzBHo=*')jW[;fc}5X,Т&y,An ,D+`#^x_#}.`"{Hu|'>+M58> M9\+mgOz\*ۮpيDaN yRpQ=%z~ &p5v-T4Rce% ?B(%])t%{ y 8{/(hc֦lzvybm53dEY 7/vE2lV4-K&DAGn*IO:5 ?~TV)sK$a.,u=[ou%ŝy_ܵ~J߹V<Y!&d㉗ks&YhHY^(bIF4 %u)XpSE\"2RȠ ޾ftՏ0I=c(-o3FTegW6v(0T1`\?EQu5k"j:N|)zU/M > ńtjJ]38 .V6 A =.8(wڕR4=%.*q@Furˆ1ynFhI$v`: >Di3ÊV_r7H9/#,k&ݵpҟR,mlf8k[oјF_d #Q.]CLfGzSئHb3gEx=[)+y;grI(s\e.iiGh&;(ӁAbCpqnb N(81IO5饌ZFvMTdX6C*g2AZã/U3F6al+ h֗@DVRսiiؿ;B$VH#˛fuB\q_ UvE{LKx`6{_/s3x4a1͎Tlp/>85Rl+9U[w`}ivt=x{TՐvVj}q2Ըd7J^-qzJuQ!QG6|{M~bi7V^ƚm޾ "[Cy4=341 wd[bz10fEE ,-ͭCC"s=tHQ M^g|JNxNl  apMl~=5/ɗ`EO(Q* ׋~IGi?)}t#s)ύMoU@E]XN)B. ߊ3C}f 㠽5@W~0kCYS_͐b@ڈeօ׀7͑˹N@Q"ױJGe\99~I@KQ9y!Kp} շ?ny:g PI/DxrWlZ$Y&<Q;N# Hms@3oiks ­%$>io&B_mY$n1B„O@jT-\h>9*MZфg  v>԰q>ӽp2A =܂?&Fܰ%pl%V &d7)/xP?ÄY!KH^ ` c]Em\㔪J;3Z!\VޣGQR,uC,o\ W5=*C'7SqTjT+~w/*0iK "mw~)z6Maz} iTN <;ycZ&~D}IiWD7^ZdI\~|%G鼺VߑL dh0YƑSZ,Fi,*RV\\$wTlq7WILz$IY 5TUI[2kM7(8PƁEq(zQVA9F8SZͪ@N^,n#afMu+'d<;2n Hg 9CU=j*TSQMPрeuݐPVB*c%czwwG^~{@%|&fgN`? RvC7m9󱪱_4ģAtEK7t+ɝ] H3}b8׻Xt,ԄhH9",Nm^H"@̨鄝uewJ (/ibN۾I5 J)$(@3㿿7 Gi=Tr !u?tI 9bւq<\4=8y I'0GڡLd"8 Y^Qp,D;.?uEd }Ua|7>7/]"Pꐰemͩߊ)@ ՕqR6פb}@&;XnF"Tv& NKЊVNS nIcG}g#DTRXqZŬ<# jǝ);䫸/%K P:W厊2'(S/?,J[~~pQ 1mTp&vlnVY.#h7# _|Y]GvL6|eBbbZ\κ`F|:mTyFM ;mܻRW&,nt8me!LƁh2' N8]=QȱRAG4J;ވJ.]%ผq`~Hrrj .cy7j?!vkƣJ!,/IX1n?2K~!VҷF d^)9;`4hZ#CEGBmCэl"mQ)-: e056eRSH7Kg,8LȦ{\JAɞ1R<؍|Ջ IⵙhCU絭 s)?W^iyԋ 8B) zw"?f%vǣz[L;K~Hn@5aLDg TSjJZ4:<17&-; X]ռMU&9,J7JgkԪ'!{nVN1(2ʼnf`7O`H itoM/T?X/ V:FACڛlk_ 2? yҙ~k]*ԋ>َW%fȔHyUmE"+ZaoƬ%"V(St08 3!UpdRYD_:ׯ K*q/\¼\4]$;BFnwo1*n^apUiAX;|l:xGrH,~03oa$t/1VS [/1Z !H-Z튗Źҭ3;*M !Mt!+,"@A"=lu9 iV,$HXbYp\ꖭ呃K2_QCD0X02xE%op|Wtڐ .-zpph|4?g)*nkuNH|_(K y9F,JDY9^nRŷ7-I,%ҶoG%I9(!lb pjtyTT.D8*'^'iEA𘬯[lQ }(<;!&,& %=/v~/; H]5jq$ܷpP2v=R?mMa^W@><(ȥOe#R0E|ws,۹'C]o~/;TIc;Dbt/BΥ%fKD,3# øpnl_ }Z2/v1!L~wXޞM_i##[ +|LZ;UQ8㷒kG^̑b{4L2-NаPI ꬜㑓Dn%I++Y.qѤ );C\BV?Vm'=VB?|ʐs_qU6P~)͆jϓ}3KuD#FrwR- ؏<ϗ4HQX!G \D#!}v^d #.*]ҭ_J)|4(ITxk.[{ƯPZLu2v^΋~:c.S٧A I?<12:hD q  Kfl/@$^Fc{s[2V=rT Ov#h~ كH/'p/}[5$qeHr~W y73c-Wb$e > ZzmjL=a"&?Dg5JvekBSJѷF|YVyKڡ yp]3p3.E:rXõx Fqy'A39IN㮓/% ^ϰ'KAcGFB 3;33=Ќ4őEgó :nA*D ,}O`Zӭ5@ '_CߑP^ :BMt`:[._RWfrݷ3vBtuӱ9K 3!4lq~k`EK4vٕ4N:4!ke{QDA} B hG zLp?Cܶc໳w4xUbBɫ NAv B|aIqzӣ3x+yKTSY4]Kcl͑3#fFqS[YL"'_գOZ5ero0@L =a/w*B~㑻~0 (u6fRwU>|[ad,qL=Řތ+dFqi"bJEs g{EnձFLn3s癕 j_BîfhνCEap13^NKYOB 5ҺfԄW3KWrgVSmLdl-9'cc@Cotz `*m~[ ԧR[T {,?&El;q#QUo"ݥ, =,|/:ҋ܀C+viL4h 'Cqj,wvz L^'aQh ͻ?%%D3&Yj< }~&cj0V%B+e9NXV#Z؄o }Z"DI33wG.+J6ld™pz"0!au6&e8o,(Xܙ5FTTc(օV3A<mtv7[Ū˕wg{烰;%-8}[Z{%/cܲ gJ/x@0 Gkk%l  A:P?4ȵUåKZd{CTUÌGZ}AUh31,)Z7k]|tN }Fc[zw*AF&0/[{`m;z◰eCP?âSrzo3{#,)[^g&#! r|:K'IpgMl%GJ38DlDdM4ګQ7oG@Zl9ɒH~J{| @3Mb3\'JOqf YTRDD"?ąQ^^exsM3hƿU#fBJI}uS~GT?ҳfqy ɻI1%V^DG'[i&> RMМ{.g]oOVCXG'TmϘ UfG/&^yRkx~ D\Ȍ̹{qYb;UY򸎉ӞY1F{NvЊ?2G8rH偵IƏUûw#*5> 5*%G6&7AzKᩞ\O|r(kZAqK}NϭK(ܷ?5PH[̸b5"(R&j/ۮӬtf;ac14fpQʨ}fk&t{,'6ΉAec4)⭰[3ô#ff` oP:jgv ۆ, ku}ҤF>%˹%3r>}}l%m:qެV4lҒR5͑e)\T9L]$b c6TD_t̳n;:V<PG)Ki_ODEB[a(/r׶.SLR]8![f.a%󈻮tLYbȧç#<<A=v" W9J_s[ RafI_'$ŏc82Iޡc44MI#")ABv]TټN]gA.:>r$z ("Ԫ]oA#b4 `(eKg˨B\ճ~p|5 ]伓,@˻7Q>|9nac27/ a[AeU+n!PV6Qah%eK'6N)kew93Z_q@rhw֐Ol1f&A nv;u$wvh[㋽D,sT{ :{ Y!D[Gޮ"g&]v{ "爨PgH2ErC7yN}lfFi@P:!31!O!ıFDɇ} ~άgj>y΍`l#^$$b vdPF+hLƸ8y</͊ )Z?SÅ>zj!n͉49v:[=wY[5L3̠ =O] rw1ԍ|n$?Jĕ-ş'ס8pcxĴ_D3!3dAay 9{3XEZ(xhkAJ~d C'w`r, UPB&z A N_v %}$U6k4%*q˃W&+'wm֗',:B^NiNV6~ԍٺ|ǀz} Z@=P\@E>p\rmr{)=ֳ- +u4fWs'T^7 ՗Üﭒ']q:q FùΏn9?IU/$A4Gj滁oج 1[W5<:B6픃5"`==h(. q?.h3f2O䭱ACؖT%# rUDz֞p; -]G ⸀ ,Uz>o%rHkǟl3gA kY~s(pې4|J2nץ#XG|FRas+SKSbIPǹbl:;=`yFMj྾8=6e~<-(4専b ȨE.ZoVKf c>ݩqx!&5pWL/k&\ LE9!:G4ng4SCנo;P;OO}q5G둥I!uVY! 1I$o~n+s% B:0uRNaˬ ;Blj~~2z&㯖Ra#YVzMe{mucޑ%WvQd˚$hcN)QZ v`EwXr.~blM5-f{WeIr_@ ׂ- " TTرwL$nR!Da-z-\_Ụฬ^V=2ĜfH2ªDY/VF//?,蝶hdTAF%CoEN7z-!E]$tTshA-餅0v?FÞYJ}Ocν6h]4eEs'֧5O$b;NCV.Hٝ'&߼.!ozYJE J*;I{Bҏ9݄L@M9Lib n PtFM9J{*NG;{!NN]*Sw5є"MܘW]HH:]`X+F$\l܃mϷO@Dxgyͺ4__51HYZ}C} GIg=~dsKERLGHraOV(R؍Z dL-$@V2M%Ij30oPneqg]U&= +g+rA+8@?|`Sed<$铴3k*4]]510S?Y~Ld5NLǂz׉u9O D+lHhodi7 |4$j{d!ܗO ;zC,K$v6TZ6tKG* %EA"Plg`] O ܴhoĘpv4P-!厀bBZ٘}/26z[ӻ;2zB#¿wv`q z[ytigH~!I9mey8fЂ;bK<^RŐ }6{Pfv<6xo|1S}u8 ?~5Li^%e3㯪}} &[GY6g6(yz5d˚x7'=9K:>e& RWv;b EL8h.ܾ1L3:ɾYYƫa£>nG2#7Ozӕ{ Mٿ`P=K^hYc j- UAGUP=Y8AR>^Oވse|XZʐ~(+ *F[rp!6 a)w5^a,R*)`' =oRԅ_eQlt$L\ ȁR]|A&3T$6_!nefV%L 5VE Џʒ(I)^/w}atdgejidOH;P8 Aб$aX#xܯ^tx7yzqz nPs;1eg[@x~rΈXC]i^2PT,9mAB.(/+|]ݰfKZNqC}=D& X\}a yT١->^V ?z3t" O'C#dsVWCs9gHKA}ޟC?HU8-uA(jV Y7[ô9 햬aEvpThѳ__p.$?qv$( |^ /9,AHi{Id4k>j#f^3sXAp订 bt Piܮ>7]輦8F$"/8D<@kh2.5!#>yȰT\iY (GlW.G2iMKǿ?/X>NX]5kfcԖcvRq%i2l*$k1j TXɹPD@Ne?:;*eViRCS5ke:"x,E 4'big.v՟ 7"$J4$c.en$;}q9Ij X\8O(erHTTP-Lite-2.44/t/data/HTTP-Lite-Tests/bigbinary.dat.md5000644 000765 000024 00000000041 12500137214 022411 0ustar00neilbstaff000000 000000 8ace1692ff081b24f6d729f9853b28ec HTTP-Lite-2.44/t/data/HTTP-Lite-Tests/bigtest.txt000644 000765 000024 00000013134 12500137214 021476 0ustar00neilbstaff000000 000000 _____ _ _ _ _ _ |_ _|| |__ (_) ___ (_) ___ __ _ | |_ ___ ___ | |_ | | | '_ \ | |/ __| | |/ __| / _` | | __|/ _ \/ __|| __| | | | | | || |\__ \ | |\__ \ | (_| | | |_| __/\__ \| |_ |_| |_| |_||_||___/ |_||___/ \__,_| \__|\___||___/ \__| __ _ _ _ ___ / _| __ _ | | __ _ _ __ __ _ (_) ___ | |__ / _ \ | |_ / _` | | | / _` || '__|/ _` || |/ __|| '_ \ | (_) || _| | (_| | | || (_| || | | (_| || |\__ \| | | | \___/ |_| \__,_| |_| \__,_||_| \__, ||_||___/|_| |_| |___/ __ _ _ __ _ _ _ _ / _|(_)| | ___ ___ / _| | |_ ___ __ __| |_ __| | __ _ | |_ __ _ | |_ | || | / _ \ / _ \ | |_ | __|/ _ \\ \/ /| __| / _` | / _` || __|/ _` | | _|| || || __/ | (_) || _| | |_| __/ > < | |_ | (_| || (_| || |_| (_| | |_| |_||_| \___| \___/ |_| \__|\___|/_/\_\ \__| \__,_| \__,_| \__|\__,_| __ _ ___ / _| _ __ __ _ _ __ __| | ___ _ __ ___ / _ \ | |_ | '__|/ _` || '_ \ / _` | / _ \ | '_ ` _ \ | (_) || _| | | | (_| || | | || (_| || (_) || | | | | | \___/ |_| |_| \__,_||_| |_| \__,_| \___/ |_| |_| |_| _ _ _ | | ___ _ __ __ _ | |_ | |__ | | / _ \| '_ \ / _` || __|| '_ \ | || __/| | | || (_| || |_ | | | | |_| \___||_| |_| \__, | \__||_| |_| |___/ _ _ | |(_) _ __ ___ ___ | || || '_ \ / _ \/ __| | || || | | || __/\__ \ _ |_||_||_| |_| \___||___/(_) _____ _ _ _ _ _ |_ _|| |__ (_) ___ ___ | |__ ___ _ _ | | __| | | | | '_ \ | |/ __| / __|| '_ \ / _ \ | | | || | / _` | | | | | | || |\__ \ \__ \| | | || (_) || |_| || || (_| | |_| |_| |_||_||___/ |___/|_| |_| \___/ \__,_||_| \__,_| _ _ | |__ ___ | | _ __ | '_ \ / _ \| || '_ \ | | | || __/| || |_) | |_| |_| \___||_|| .__/ |_| _ _ _ _ | |_ ___ ___ | |_ | |_ | |__ ___ | __|/ _ \/ __|| __| | __|| '_ \ / _ \ | |_| __/\__ \| |_ | |_ | | | || __/ \__|\___||___/ \__| \__||_| |_| \___| _ _ _ _ ___ | |__ _ _ _ __ | | __ ___ __| | _ __ ___ ___ __| | ___ / __|| '_ \ | | | || '_ \ | |/ // _ \ / _` | | '_ ` _ \ / _ \ / _` | / _ \ | (__ | | | || |_| || | | || <| __/| (_| | | | | | | || (_) || (_| || __/ \___||_| |_| \__,_||_| |_||_|\_\\___| \__,_| |_| |_| |_| \___/ \__,_| \___| _ __ __ | |_ _ __ __ _ _ __ ___ / _| ___ _ __ ___ / _| | __|| '__|/ _` || '_ \ / __|| |_ / _ \| '__| / _ \ | |_ | |_ | | | (_| || | | |\__ \| _|| __/| | | (_) || _| \__||_| \__,_||_| |_||___/|_| \___||_| \___/ |_| __ _ _ / _|(_)| | ___ ___ | |_ | || | / _ \/ __| | _|| || || __/\__ \ _ |_| |_||_| \___||___/(_) _____ _ _ _ _ _ |_ _|| |__ ___ _ __ ___ __ __(_)| || | __ _ | | ___ ___ | | | '_ \ / _ \| '__|/ _ \ \ \ /\ / /| || || | / _` || |/ __| / _ \ | | | | | || __/| | | __/ \ V V / | || || | | (_| || |\__ \| (_) | |_| |_| |_| \___||_| \___| \_/\_/ |_||_||_| \__,_||_||___/ \___/ _ | |__ ___ | '_ \ / _ \ | |_) || __/ |_.__/ \___| _ __ _ __ ___ ___ __| | / _| ___ _ __ __ _ | '_ \ / _ \ / _ \ / _` | | |_ / _ \ | '__| / _` | | | | || __/| __/| (_| | | _|| (_) || | | (_| | |_| |_| \___| \___| \__,_| |_| \___/ |_| \__,_| _ _ | |__ (_) _ __ __ _ _ __ _ _ | '_ \ | || '_ \ / _` || '__|| | | | | |_) || || | | || (_| || | | |_| | |_.__/ |_||_| |_| \__,_||_| \__, | |___/ _ _ _ __ __| | __ _ | |_ __ _ | |_ _ __ __ _ _ __ ___ / _| ___ _ __ / _` | / _` || __|/ _` | | __|| '__|/ _` || '_ \ / __|| |_ / _ \| '__| | (_| || (_| || |_| (_| | | |_ | | | (_| || | | |\__ \| _|| __/| | \__,_| \__,_| \__|\__,_| \__||_| \__,_||_| |_||___/|_| \___||_| _ _ | |_ ___ ___ | |_ | __|/ _ \/ __|| __| | |_| __/\__ \| |_ \__|\___||___/ \__| __ _ _ / _| __ _ (_) _ __ | | _ _ ___ ___ ___ _ __ | |_ / _` || || '__|| || | | | / __| / _ \ / _ \ | '_ \ | _|| (_| || || | | || |_| | \__ \| (_) || (_) || | | | _ |_| \__,_||_||_| |_| \__, | |___/ \___/ \___/ |_| |_|(_) |___/ _ (_) HTTP-Lite-2.44/t/data/HTTP-Lite-Tests/chunked.cgi000644 000765 000024 00000000166 12500137214 021402 0ustar00neilbstaff000000 000000 #!/bin/sh echo Content-type: text/html echo echo chunk1 sleep 4 echo chunk2 sleep 2 echo chunk3 sleep 2 echo chunk4 HTTP-Lite-2.44/t/data/HTTP-Lite-Tests/chunked2.cgi000644 000765 000024 00000000301 12500137214 021453 0ustar00neilbstaff000000 000000 #!/bin/sh # needed for solaris for echo -n to work right SYSV3=1 export SYSV3 echo Content-type: text/html echo echo chunk1 sleep 4 echo chunk2 sleep 2 echo -n chunk3 sleep 2 echo -n chunk4 HTTP-Lite-2.44/t/data/HTTP-Lite-Tests/chunked3.cgi000644 000765 000024 00000000331 12500137214 021457 0ustar00neilbstaff000000 000000 #!/bin/sh # needed for solaris for echo -n to work right SYSV3=1 export SYSV3 echo Content-type: text/html echo echo chunk1 sleep 4 echo chunk2 sleep 2 echo -n chunk3 sleep 2 echo -n chunk4 sleep 2 echo chunk5 echo HTTP-Lite-2.44/t/data/HTTP-Lite-Tests/chunked4.cgi000644 000765 000024 00000000335 12500137214 021464 0ustar00neilbstaff000000 000000 #!/bin/sh # needed for solaris for echo -n to work right SYSV3=1 export SYSV3 echo Content-type: text/html echo cat bigtest.txt sleep 4 cat bigtest.txt sleep 2 cat bigtest.txt sleep 2 echo -n chunk4 sleep 2 echo chunk5 HTTP-Lite-2.44/t/data/HTTP-Lite-Tests/chunked5.cgi000644 000765 000024 00000000337 12500137214 021467 0ustar00neilbstaff000000 000000 #!/bin/sh # needed for solaris for echo -n to work right SYSV3=1 export SYSV3 echo Content-type: text/html echo cat bigtest.txt sleep 4 cat bigbinary.dat sleep 2 cat bigtest.txt sleep 2 echo -n chunk4 sleep 2 echo chunk5 HTTP-Lite-2.44/t/data/HTTP-Lite-Tests/get.cgi000644 000765 000024 00000000231 12500137214 020531 0ustar00neilbstaff000000 000000 #!/usr/bin/perl use CGI; $cgi=new CGI; $a=$cgi->param('a'); $b=$cgi->param('b'); print "Content-type: text/plain\n\n"; print "a=$a\n"; print "b=$b\n"; HTTP-Lite-2.44/t/data/HTTP-Lite-Tests/nle.html000644 000765 000024 00000000023 12500137214 020731 0ustar00neilbstaff000000 000000 line1 line2 line3 HTTP-Lite-2.44/t/data/HTTP-Lite-Tests/nonl.html000644 000765 000024 00000000021 12500137214 021117 0ustar00neilbstaff000000 000000 line1 line2 line3HTTP-Lite-2.44/t/data/HTTP-Lite-Tests/post.cgi000644 000765 000024 00000000231 12500137214 020737 0ustar00neilbstaff000000 000000 #!/usr/bin/perl use CGI; $cgi=new CGI; $a=$cgi->param('a'); $b=$cgi->param('b'); print "Content-type: text/plain\n\n"; print "a=$a\n"; print "b=$b\n"; HTTP-Lite-2.44/t/data/HTTP-Lite-Tests/test.txt000644 000765 000024 00000000003 12500137214 021003 0ustar00neilbstaff000000 000000 OK HTTP-Lite-2.44/t/data/HTTP-Lite-Tests/unchunked.html000644 000765 000024 00000000041 12500137214 022137 0ustar00neilbstaff000000 000000 unchunked1 unchunked2 unchunked3 HTTP-Lite-2.44/lib/HTTP/000755 000765 000024 00000000000 12500137214 014671 5ustar00neilbstaff000000 000000 HTTP-Lite-2.44/lib/HTTP/Lite.pm000644 000765 000024 00000064475 12500137214 016144 0ustar00neilbstaff000000 000000 package HTTP::Lite; use 5.005; use strict; use warnings; use Socket 1.3; use Fcntl; use Errno qw(EAGAIN); our $VERSION = '2.44'; my $BLOCKSIZE = 65536; my $CRLF = "\r\n"; my $URLENCODE_VALID = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-."; # Forward declarations sub prepare_post; sub http_write; sub http_readline; sub http_read; sub http_readbytes; # Prepare the urlencode validchars lookup hash my @urlencode_valid; foreach my $char (split('', $URLENCODE_VALID)) { $urlencode_valid[ord $char]=$char; } for (my $n=0;$n<256;$n++) { if (!defined($urlencode_valid[$n])) { $urlencode_valid[$n]=sprintf("%%%02X", $n); } } sub new { my $self = {}; bless $self; $self->initialize(); return $self; } sub initialize { my $self = shift; $self->reset; $self->{timeout} = 120; $self->{HTTP11} = 0; $self->{DEBUG} = 0; $self->{header_at_once} = 0; $self->{holdback} = 0; # needed for http_write } sub header_at_once { my $self=shift; $self->{header_at_once} = 1; } sub local_addr { my $self = shift; my $val = shift; my $oldval = $self->{'local_addr'}; if (defined($val)) { $self->{'local_addr'} = $val; } return $oldval; } sub local_port { my $self = shift; my $val = shift; my $oldval = $self->{'local_port'}; if (defined($val)) { $self->{'local_port'} = $val; } return $oldval; } sub method { my $self = shift; my $method = shift; $method = uc($method); $self->{method} = $method; } sub DEBUG { my $self = shift; if ($self->{DEBUG}) { print STDERR join(" ", @_),"\n"; } } sub reset { my $self = shift; foreach my $var ("body", "request", "content", "status", "proxy", "proxyport", "resp-protocol", "error-message", "resp-headers", "CBARGS", "callback_function", "callback_params") { $self->{$var} = undef; } $self->{HTTPReadBuffer} = ""; $self->{method} = "GET"; $self->{headers} = { 'user-agent' => "HTTP::Lite/$VERSION" }; $self->{headermap} = { 'user-agent' => 'User-Agent' }; } # URL-encode data sub escape { my $toencode = shift; return join('', map { $urlencode_valid[ord $_] } split('', $toencode)); } sub set_callback { my ($self, $callback, @callbackparams) = @_; $self->{'callback_function'} = $callback; $self->{'callback_params'} = [ @callbackparams ]; } sub request { my ($self, $url, $data_callback, $cbargs) = @_; my $method = $self->{method}; if (defined($cbargs)) { $self->{CBARGS} = $cbargs; } my $callback_func = $self->{'callback_function'}; my $callback_params = $self->{'callback_params'}; # Parse URL my ($protocol,$host,$junk,$port,$object) = $url =~ m{^([^:/]+)://([^/:]*)(:(\d+))?(/?.*)$}; # Only HTTP is supported here if ($protocol ne "http") { warn "Only http is supported by HTTP::Lite"; return undef; } # Setup the connection my $proto = getprotobyname('tcp'); local *FH; socket(FH, PF_INET, SOCK_STREAM, $proto); $port = 80 if !$port; my $connecthost = $self->{'proxy'} || $host; $connecthost = $connecthost ? $connecthost : $host; my $connectport = $self->{'proxyport'} || $port; $connectport = $connectport ? $connectport : $port; my $addr = inet_aton($connecthost); if (!$addr) { close(FH); return undef; } if ($connecthost ne $host) { # if proxy active, use full URL as object to request $object = "$url"; } # choose local port and address my $local_addr = INADDR_ANY; my $local_port = "0"; if (defined($self->{'local_addr'})) { $local_addr = $self->{'local_addr'}; if ($local_addr eq "0.0.0.0" || $local_addr eq "0") { $local_addr = INADDR_ANY; } else { $local_addr = inet_aton($local_addr); } } if (defined($self->{'local_port'})) { $local_port = $self->{'local_port'}; } my $paddr = pack_sockaddr_in($local_port, $local_addr); bind(FH, $paddr) || return undef; # Failing to bind is fatal. my $sin = sockaddr_in($connectport,$addr); connect(FH, $sin) || return undef; # Set nonblocking IO on the handle to allow timeouts if ( $^O ne "MSWin32" ) { fcntl(FH, F_SETFL, O_NONBLOCK); } if (defined($callback_func)) { &$callback_func($self, "connect", undef, @$callback_params); } if ($self->{header_at_once}) { $self->{holdback} = 1; # http_write should buffer only, no sending yet } # Start the request (HTTP/1.1 mode) if ($self->{HTTP11}) { $self->http_write(*FH, "$method $object HTTP/1.1$CRLF"); } else { $self->http_write(*FH, "$method $object HTTP/1.0$CRLF"); } # Add some required headers # we only support a single transaction per request in this version. $self->add_req_header("Connection", "close"); if ($port != 80) { $self->add_req_header("Host", "$host:$port"); } else { $self->add_req_header("Host", $host); } if (!defined($self->get_req_header("Accept"))) { $self->add_req_header("Accept", "*/*"); } if ($method eq 'POST') { $self->http_write(*FH, "Content-Type: application/x-www-form-urlencoded$CRLF"); } # Purge a couple others $self->delete_req_header("Content-Type"); $self->delete_req_header("Content-Length"); # Output headers foreach my $header ($self->enum_req_headers()) { my $value = $self->get_req_header($header); $self->http_write(*FH, $self->{headermap}{$header}.": ".$value."$CRLF"); } my $content_length; if (defined($self->{content})) { $content_length = length($self->{content}); } if (defined($callback_func)) { my $ncontent_length = &$callback_func($self, "content-length", undef, @$callback_params); if (defined($ncontent_length)) { $content_length = $ncontent_length; } } if ($content_length) { $self->http_write(*FH, "Content-Length: $content_length$CRLF"); } if (defined($callback_func)) { &$callback_func($self, "done-headers", undef, @$callback_params); } # End of headers $self->http_write(*FH, "$CRLF"); if ($self->{header_at_once}) { $self->{holdback} = 0; $self->http_write(*FH, ""); # pseudocall to get http_write going } my $content_out = 0; if (defined($callback_func)) { while (my $content = &$callback_func($self, "content", undef, @$callback_params)) { $self->http_write(*FH, $content); $content_out++; } } # Output content, if any if (!$content_out && defined($self->{content})) { $self->http_write(*FH, $self->{content}); } if (defined($callback_func)) { &$callback_func($self, "content-done", undef, @$callback_params); } # Read response from server my $headmode=1; my $chunkmode=0; my $chunksize=0; my $chunklength=0; my $chunk; my $line = 0; my $data; while ($data = $self->http_read(*FH,$headmode,$chunkmode,$chunksize)) { $self->{DEBUG} && $self->DEBUG("reading: $chunkmode, $chunksize, $chunklength, $headmode, ". length($self->{'body'})); if ($self->{DEBUG}) { foreach my $var ("body", "request", "content", "status", "proxy", "proxyport", "resp-protocol", "error-message", "resp-headers", "CBARGS", "HTTPReadBuffer") { $self->DEBUG("state $var ".length($self->{$var})); } } $line++; if ($line == 1) { my ($proto,$status,$message) = split(' ', $$data, 3); $self->{DEBUG} && $self->DEBUG("header $$data"); $self->{status}=$status; $self->{'resp-protocol'}=$proto; $self->{'error-message'}=$message; next; } if (($headmode || $chunkmode eq "entity-header") && $$data =~ /^[\r\n]*$/) { if ($chunkmode) { $chunkmode = 0; } $headmode = 0; # Check for Transfer-Encoding my $te = $self->get_header("Transfer-Encoding"); if (defined($te)) { my $header = join(' ',@{$te}); if ($header =~ /chunked/i) { $chunkmode = "chunksize"; } } next; } if ($headmode || $chunkmode eq "entity-header") { my ($var,$datastr) = $$data =~ /^([^:]*):\s*(.*)$/; if (defined($var)) { $datastr =~s/[\r\n]$//g; $var = lc($var); $var =~ s/^(.)/&upper($1)/ge; $var =~ s/(-.)/&upper($1)/ge; my $hr = ${$self->{'resp-headers'}}{$var}; if (!ref($hr)) { $hr = [ $datastr ]; } else { push @{ $hr }, $datastr; } ${$self->{'resp-headers'}}{$var} = $hr; } } elsif ($chunkmode) { if ($chunkmode eq "chunksize") { $chunksize = $$data; $chunksize =~ s/^\s*|;.*$//g; $chunksize =~ s/\s*$//g; my $cshx = $chunksize; if (length($chunksize) > 0) { # read another line if ($chunksize !~ /^[a-f0-9]+$/i) { $self->{DEBUG} && $self->DEBUG("chunksize not a hex string"); } $chunksize = hex($chunksize); $self->{DEBUG} && $self->DEBUG("chunksize was $chunksize (HEX was $cshx)"); if ($chunksize == 0) { $chunkmode = "entity-header"; } else { $chunkmode = "chunk"; $chunklength = 0; } } else { $self->{DEBUG} && $self->DEBUG("chunksize empty string, checking next line!"); } } elsif ($chunkmode eq "chunk") { $chunk .= $$data; $chunklength += length($$data); if ($chunklength >= $chunksize) { $chunkmode = "chunksize"; if ($chunklength > $chunksize) { $chunk = substr($chunk,0,$chunksize); } elsif ($chunklength == $chunksize && $chunk !~ /$CRLF$/) { # chunk data is exactly chunksize -- need CRLF still $chunkmode = "ignorecrlf"; } $self->add_to_body(\$chunk, $data_callback); $chunk=""; $chunklength = 0; $chunksize = ""; } } elsif ($chunkmode eq "ignorecrlf") { $chunkmode = "chunksize"; } } else { $self->add_to_body($data, $data_callback); } } if (defined($callback_func)) { &$callback_func($self, "done", undef, @$callback_params); } close(FH); return $self->{status}; } sub add_to_body { my $self = shift; my ($dataref, $data_callback) = @_; my $callback_func = $self->{'callback_function'}; my $callback_params = $self->{'callback_params'}; if (!defined($data_callback) && !defined($callback_func)) { $self->{DEBUG} && $self->DEBUG("no callback"); $self->{'body'}.=$$dataref; } else { my $newdata; if (defined($callback_func)) { $newdata = &$callback_func($self, "data", $dataref, @$callback_params); } else { $newdata = &$data_callback($self, $dataref, $self->{CBARGS}); } if ($self->{DEBUG}) { $self->DEBUG("callback got back a ".ref($newdata)); if (ref($newdata) eq "SCALAR") { $self->DEBUG("callback got back ".length($$newdata)." bytes"); } } if (defined($newdata) && ref($newdata) eq "SCALAR") { $self->{'body'} .= $$newdata; } } } sub add_req_header { my $self = shift; my ($header, $value) = @_; return unless defined($value); my $lcheader = lc($header); $self->{DEBUG} && $self->DEBUG("add_req_header $header $value"); ${$self->{headers}}{$lcheader} = $value; ${$self->{headermap}}{$lcheader} = $header; } sub get_req_header { my $self = shift; my ($header) = @_; return $self->{headers}{lc($header)}; } sub delete_req_header { my $self = shift; my ($header) = @_; my $exists; if ($exists=defined(${$self->{headers}}{lc($header)})) { delete ${$self->{headers}}{lc($header)}; delete ${$self->{headermap}}{lc($header)}; } return $exists; } sub enum_req_headers { my $self = shift; my ($header) = @_; my $exists; return keys %{$self->{headermap}}; } sub body { my $self = shift; return $self->{'body'}; } sub status { my $self = shift; return $self->{status}; } sub protocol { my $self = shift; return $self->{'resp-protocol'}; } sub status_message { my $self = shift; return $self->{'error-message'}; } sub proxy { my $self = shift; my ($value) = @_; # Parse URL my ($protocol,$host,$junk,$port,$object) = $value =~ m{^(\S+)://([^/:]*)(:(\d+))?(/.*)$}; if (!$host) { ($host,$port) = $value =~ /^([^:]+):(.*)$/; } $self->{'proxy'} = $host || $value; $self->{'proxyport'} = $port || 80; } sub headers_array { my $self = shift; my @array = (); foreach my $header (keys %{$self->{'resp-headers'}}) { my $aref = ${$self->{'resp-headers'}}{$header}; foreach my $value (@$aref) { push @array, "$header: $value"; } } return @array; } sub headers_string { my $self = shift; my $string = ""; foreach my $header (keys %{$self->{'resp-headers'}}) { my $aref = ${$self->{'resp-headers'}}{$header}; foreach my $value (@$aref) { $string .= "$header: $value\n"; } } return $string; } sub get_header { my $self = shift; my $header = shift; return $self->{'resp-headers'}{$header}; } sub http11_mode { my $self = shift; my $mode = shift; $self->{HTTP11} = $mode; } sub prepare_post { my $self = shift; my $varref = shift; my $body = ""; while (my ($var,$value) = map { escape($_) } each %$varref) { if ($body) { $body .= "&$var=$value"; } else { $body = "$var=$value"; } } $self->{content} = $body; $self->{headers}{'Content-Type'} = "application/x-www-form-urlencoded" unless defined ($self->{headers}{'Content-Type'}) and $self->{headers}{'Content-Type'}; $self->{method} = "POST"; } sub http_write { my $self = shift; my ($fh,$line) = @_; if ($self->{holdback}) { $self->{HTTPWriteBuffer} .= $line; return; } else { if (defined $self->{HTTPWriteBuffer}) { # copy previously buffered, if any $line = $self->{HTTPWriteBuffer} . $line; } } my $size = length($line); my $total_sent = 0; my $nbytes; do { $nbytes = syswrite($fh, $line, $size - $total_sent, $total_sent ); die $! unless(defined($nbytes) || $!{EAGAIN}); # non-recoverable error occurred! $total_sent += $nbytes; } while ($total_sent < $size); } sub http_read { my $self = shift; my ($fh,$headmode,$chunkmode,$chunksize) = @_; $self->{DEBUG} && $self->DEBUG("read handle=$fh, headm=$headmode, chunkm=$chunkmode, chunksize=$chunksize"); my $res; if (($headmode == 0 && $chunkmode eq "0") || ($chunkmode eq "chunk")) { my $bytes_to_read = $chunkmode eq "chunk" ? ($chunksize < $BLOCKSIZE ? $chunksize : $BLOCKSIZE) : $BLOCKSIZE; $res = $self->http_readbytes($fh,$self->{timeout},$bytes_to_read); } else { $res = $self->http_readline($fh,$self->{timeout}); } if ($res) { if ($self->{DEBUG}) { $self->DEBUG("read got ".length($$res)." bytes"); my $str = $$res; $str =~ s{([\x00-\x1F\x7F-\xFF])}{.}g; $self->DEBUG("read: ".$str); } } return $res; } sub http_readline { my $self = shift; my ($fh, $timeout) = @_; my $EOL = "\n"; $self->{DEBUG} && $self->DEBUG("readline handle=$fh, timeout=$timeout"); # is there a line in the buffer yet? while ($self->{HTTPReadBuffer} !~ /$EOL/) { # nope -- wait for incoming data my ($inbuf,$bits,$chars) = ("","",0); vec($bits,fileno($fh),1)=1; my $nfound = select($bits, undef, $bits, $timeout); if ($nfound == 0) { # Timed out return undef; } else { # Get the data $chars = sysread($fh, $inbuf, $BLOCKSIZE); $self->{DEBUG} && $self->DEBUG("sysread $chars bytes"); } # End of stream? if ($chars <= 0 && !$!{EAGAIN}) { last; } # tag data onto end of buffer $self->{HTTPReadBuffer}.=$inbuf; } # get a single line from the buffer my $nlat = index($self->{HTTPReadBuffer}, $EOL); my $newline; my $oldline; if ($nlat > -1) { $newline = substr($self->{HTTPReadBuffer},0,$nlat+1); $oldline = substr($self->{HTTPReadBuffer},$nlat+1); } else { $newline = substr($self->{HTTPReadBuffer},0); $oldline = ""; } # and update the buffer $self->{HTTPReadBuffer}=$oldline; return length($newline) ? \$newline : 0; } sub http_readbytes { my $self = shift; my ($fh, $timeout, $bytes) = @_; my $EOL = "\n"; $self->{DEBUG} && $self->DEBUG("readbytes handle=$fh, timeout=$timeout, bytes=$bytes"); # is there enough data in the buffer yet? while (length($self->{HTTPReadBuffer}) < $bytes) { # nope -- wait for incoming data my ($inbuf,$bits,$chars) = ("","",0); vec($bits,fileno($fh),1)=1; my $nfound = select($bits, undef, $bits, $timeout); if ($nfound == 0) { # Timed out return undef; } else { # Get the data $chars = sysread($fh, $inbuf, $BLOCKSIZE); $self->{DEBUG} && $self->DEBUG("sysread $chars bytes"); } # End of stream? if ($chars <= 0 && !$!{EAGAIN}) { last; } # tag data onto end of buffer $self->{HTTPReadBuffer}.=$inbuf; } my $newline; my $buflen; if (($buflen=length($self->{HTTPReadBuffer})) >= $bytes) { $newline = substr($self->{HTTPReadBuffer},0,$bytes+1); if ($bytes+1 < $buflen) { $self->{HTTPReadBuffer} = substr($self->{HTTPReadBuffer},$bytes+1); } else { $self->{HTTPReadBuffer} = ""; } } else { $newline = substr($self->{HTTPReadBuffer},0); $self->{HTTPReadBuffer} = ""; } return length($newline) ? \$newline : 0; } sub upper { my ($str) = @_; if (defined($str)) { return uc($str); } else { return undef; } } 1; __END__ =pod =head1 NAME HTTP::Lite - Lightweight HTTP implementation =head1 SYNOPSIS use HTTP::Lite; $http = HTTP::Lite->new; $req = $http->request("http://www.cpan.org/") or die "Unable to get document: $!"; print $http->body(); =head1 DESCRIPTION B you should look at L or L before using this module. HTTP::Lite is a stand-alone lightweight HTTP/1.1 implementation for perl. It is not intended as a replacement for the fully-featured LWP module. Instead, it is intended for use in situations where it is desirable to install the minimal number of modules to achieve HTTP support, or where LWP is not a good candidate due to CPU overhead, such as slower processors. HTTP::Lite is also significantly faster than LWP. HTTP::Lite is ideal for CGI (or mod_perl) programs or for bundling for redistribution with larger packages where only HTTP GET and POST functionality are necessary. HTTP::Lite supports basic POST and GET operations only. As of 0.2.1, HTTP::Lite supports HTTP/1.1 and is compliant with the Host header, necessary for name based virtual hosting. Additionally, HTTP::Lite now supports Proxies. As of 2.0.0 HTTP::Lite now supports a callback to allow processing of request data as it arrives. This is useful for handling very large files without consuming memory. If you require more functionality, such as FTP or HTTPS, please see libwwwperl (LWP). LWP is a significantly better and more comprehensive package than HTTP::Lite, and should be used instead of HTTP::Lite whenever possible. =head1 CONSTRUCTOR =over 4 =item new This is the constructor for HTTP::Lite. It presently takes no arguments. A future version of HTTP::Lite might accept parameters. =back =head1 METHODS =over 4 =item request ( $url, $data_callback, $cbargs ) Initiates a request to the specified URL. Returns undef if an I/O error is encountered, otherwise the HTTP status code will be returned. 200 series status codes represent success, 300 represent temporary errors, 400 represent permanent errors, and 500 represent server errors. See F for detailed information about HTTP status codes. The $data_callback parameter, if used, is a way to filter the data as it is received or to handle large transfers. It must be a function reference, and will be passed: a reference to the instance of the http request making the callback, a reference to the current block of data about to be added to the body, and the $cbargs parameter (which may be anything). It must return either a reference to the data to add to the body of the document, or undef. If set_callback is used, $data_callback and $cbargs are not used. $cbargs may be either a scalar or a reference. The data_callback is called as: &$data_callback( $self, $dataref, $cbargs ) An example use to save a document to file is: # Write the data to the filehandle $cbargs sub savetofile { my ($self,$phase,$dataref,$cbargs) = @_; print $cbargs $$dataref; return undef; } $url = "$testpath/bigbinary.dat"; open OUT, '>','bigbinary.dat'; $res = $http->request($url, \&savetofile, OUT); close OUT; =item set_callback ( $functionref, $dataref ) At various stages of the request, callbacks may be used to modify the behaviour or to monitor the status of the request. These work like the $data_callback parameter to request(), but are more versatile. Using set_callback disables $data_callback in request() The callbacks are called as: callback ( $self, $phase, $dataref, $cbargs ) The current phases are: connect - connection has been established and headers are being transmitted. content-length - return value is used as the content-length. If undef, and prepare_post() was used, the content length is calculated. done-headers - all headers have been sent content - return value is used as content and is sent to client. Return undef to use the internal content defined by prepare_post(). content-done - content has been successfuly transmitted. data - A block of data has been received. The data is referenced by $dataref. The return value is dereferenced and replaces the content passed in. Return undef to avoid using memory for large documents. done - Request is done. =item prepare_post ( $hashref ) Takes a reference to a hashed array of post form variables to upload. Create the HTTP body and sets the method to POST. =item http11_mode ( 0 | 1 ) Turns on or off HTTP/1.1 support. This is off by default due to broken HTTP/1.1 servers. Use 1 to enable HTTP/1.1 support. =item add_req_header ( $header, $value ) =item get_req_header ( $header ) =item delete_req_header ( $header ) Add, Delete, or get a HTTP header(s) for the request. These functions allow you to override any header. Presently, Host, User-Agent, Content-Type, Accept, and Connection are pre-defined by the HTTP::Lite module. You may not override Host, Connection, or Accept. If you call C with C<$value> set to C, then the header won't be added. To provide (proxy) authentication or authorization, you would use: use HTTP::Lite; use MIME::Base64; $http = HTTP::Lite->new; $encoded = encode_base64('username:password'); $http->add_req_header("Authorization", $encoded); B: The present implementation limits you to one instance of each header. =item body Returns the body of the document returned by the remote server. =item headers_array Returns an array of the HTTP headers returned by the remote server. =item headers_string Returns a string representation of the HTTP headers returned by the remote server. =item get_header ( $header ) Returns an array of values for the requested header. B: HTTP requests are not limited to a single instance of each header. As a result, there may be more than one entry for every header. =item protocol Returns the HTTP protocol identifier, as reported by the remote server. This will generally be either HTTP/1.0 or HTTP/1.1. =item proxy ( $proxy_server ) The URL or hostname of the proxy to use for the next request. =item status Returns the HTTP status code returned by the server. This is also reported as the return value of I. =item status_message Returns the textual description of the status code as returned by the server. The status string is not required to adhere to any particular format, although most HTTP servers use a standard set of descriptions. =item reset You must call this prior to re-using an HTTP::Lite handle, otherwise the results are undefined. =item local_addr ( $ip ) Explicity select the local IP address. 0.0.0.0 (default) lets the system choose. =item local_port ( $port ) Explicity select the local port. 0 (default and recommended) lets the system choose. =item method ( $method ) Explicity set the method. Using prepare_post or reset overrides this setting. Usual choices are GET, POST, PUT, HEAD =back =head1 EXAMPLES # Get and print out the headers and body of the CPAN homepage use HTTP::Lite; $http = HTTP::Lite->new; $req = $http->request("http://www.cpan.org/") or die "Unable to get document: $!"; die "Request failed ($req): ".$http->status_message() if $req ne "200"; @headers = $http->headers_array(); $body = $http->body(); foreach $header (@headers) { print "$header$CRLF"; } print "$CRLF"; print "$body$CRLF"; # POST a query to the dejanews USENET search engine use HTTP::Lite; $http = HTTP::Lite->new; %vars = ( "QRY" => "perl", "ST" => "MS", "svcclass" => "dncurrent", "DBS" => "2" ); $http->prepare_post(\%vars); $req = $http->request("http://www.deja.com/dnquery.xp") or die "Unable to get document: $!"; print "req: $req\n"; print $http->body(); =head1 UNIMPLEMENTED - FTP - HTTPS (SSL) - Authenitcation/Authorizaton/Proxy-Authorization are not directly supported, and require MIME::Base64. - Redirects (Location) are not automatically followed - multipart/form-data POSTs are not directly supported (necessary for File uploads). =head1 BUGS Some broken HTTP/1.1 servers send incorrect chunk sizes when transferring files. HTTP/1.1 mode is now disabled by default. =head1 AUTHOR Roy Hooper Now co-maintained by Neil Bowers Eneilb@cpan.orgE. =head1 SEE ALSO This module (HTTP::Lite) is almost certainly not the best module for your needs. For most uses L is a good choice. If you need more features, then look at L. You could also read this L. =head1 COPYRIGHT Copyright (c) 2000-2002 Roy Hooper. All rights reserved. Some parts copyright 2009 - 2010 Adam Kennedy. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut