Biblio-RFID-0.05/0000755000175000017500000000000014373156607013250 5ustar dpavlindpavlinBiblio-RFID-0.05/inc/0000755000175000017500000000000014373156607014021 5ustar dpavlindpavlinBiblio-RFID-0.05/inc/Module/0000755000175000017500000000000014373156607015246 5ustar dpavlindpavlinBiblio-RFID-0.05/inc/Module/Install/0000755000175000017500000000000014373156607016654 5ustar dpavlindpavlinBiblio-RFID-0.05/inc/Module/Install/Base.pm0000644000175000017500000000214714373155777020077 0ustar dpavlindpavlin#line 1 package Module::Install::Base; use strict 'vars'; use vars qw{$VERSION}; BEGIN { $VERSION = '1.19'; } # Suspend handler for "redefined" warnings BEGIN { my $w = $SIG{__WARN__}; $SIG{__WARN__} = sub { $w }; } #line 42 sub new { my $class = shift; unless ( defined &{"${class}::call"} ) { *{"${class}::call"} = sub { shift->_top->call(@_) }; } unless ( defined &{"${class}::load"} ) { *{"${class}::load"} = sub { shift->_top->load(@_) }; } bless { @_ }, $class; } #line 61 sub AUTOLOAD { local $@; my $func = eval { shift->_top->autoload } or return; goto &$func; } #line 75 sub _top { $_[0]->{_top}; } #line 90 sub admin { $_[0]->_top->{admin} or Module::Install::Base::FakeAdmin->new; } #line 106 sub is_admin { ! $_[0]->admin->isa('Module::Install::Base::FakeAdmin'); } sub DESTROY {} package Module::Install::Base::FakeAdmin; use vars qw{$VERSION}; BEGIN { $VERSION = $Module::Install::Base::VERSION; } my $fake; sub new { $fake ||= bless(\@_, $_[0]); } sub AUTOLOAD {} sub DESTROY {} # Restore warning handler BEGIN { $SIG{__WARN__} = $SIG{__WARN__}->(); } 1; #line 159 Biblio-RFID-0.05/inc/Module/Install/Win32.pm0000644000175000017500000000340314373155777020123 0ustar dpavlindpavlin#line 1 package Module::Install::Win32; use strict; use Module::Install::Base (); use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.19'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } # determine if the user needs nmake, and download it if needed sub check_nmake { my $self = shift; $self->load('can_run'); $self->load('get_file'); require Config; return unless ( $^O eq 'MSWin32' and $Config::Config{make} and $Config::Config{make} =~ /^nmake\b/i and ! $self->can_run('nmake') ); print "The required 'nmake' executable not found, fetching it...\n"; require File::Basename; my $rv = $self->get_file( url => 'http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe', ftp_url => 'ftp://ftp.microsoft.com/Softlib/MSLFILES/Nmake15.exe', local_dir => File::Basename::dirname($^X), size => 51928, run => 'Nmake15.exe /o > nul', check_for => 'Nmake.exe', remove => 1, ); die <<'END_MESSAGE' unless $rv; ------------------------------------------------------------------------------- Since you are using Microsoft Windows, you will need the 'nmake' utility before installation. It's available at: http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe or ftp://ftp.microsoft.com/Softlib/MSLFILES/Nmake15.exe Please download the file manually, save it to a directory in %PATH% (e.g. C:\WINDOWS\COMMAND\), then launch the MS-DOS command line shell, "cd" to that directory, and run "Nmake15.exe" from there; that will create the 'nmake.exe' file needed by this module. You may then resume the installation process described in README. ------------------------------------------------------------------------------- END_MESSAGE } 1; Biblio-RFID-0.05/inc/Module/Install/Include.pm0000644000175000017500000000101514373155777020601 0ustar dpavlindpavlin#line 1 package Module::Install::Include; use strict; use Module::Install::Base (); use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.19'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } sub include { shift()->admin->include(@_); } sub include_deps { shift()->admin->include_deps(@_); } sub auto_include { shift()->admin->auto_include(@_); } sub auto_include_deps { shift()->admin->auto_include_deps(@_); } sub auto_include_dependent_dists { shift()->admin->auto_include_dependent_dists(@_); } 1; Biblio-RFID-0.05/inc/Module/Install/AutoInstall.pm0000644000175000017500000000416214373155777021463 0ustar dpavlindpavlin#line 1 package Module::Install::AutoInstall; use strict; use Module::Install::Base (); use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.19'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } sub AutoInstall { $_[0] } sub run { my $self = shift; $self->auto_install_now(@_); } sub write { my $self = shift; $self->auto_install(@_); } sub auto_install { my $self = shift; return if $self->{done}++; # Flatten array of arrays into a single array my @core = map @$_, map @$_, grep ref, $self->build_requires, $self->requires; my @config = @_; # We'll need Module::AutoInstall $self->include('Module::AutoInstall'); require Module::AutoInstall; my @features_require = Module::AutoInstall->import( (@config ? (-config => \@config) : ()), (@core ? (-core => \@core) : ()), $self->features, ); my %seen; my @requires = map @$_, map @$_, grep ref, $self->requires; while (my ($mod, $ver) = splice(@requires, 0, 2)) { $seen{$mod}{$ver}++; } my @build_requires = map @$_, map @$_, grep ref, $self->build_requires; while (my ($mod, $ver) = splice(@build_requires, 0, 2)) { $seen{$mod}{$ver}++; } my @configure_requires = map @$_, map @$_, grep ref, $self->configure_requires; while (my ($mod, $ver) = splice(@configure_requires, 0, 2)) { $seen{$mod}{$ver}++; } my @deduped; while (my ($mod, $ver) = splice(@features_require, 0, 2)) { push @deduped, $mod => $ver unless $seen{$mod}{$ver}++; } $self->requires(@deduped); $self->makemaker_args( Module::AutoInstall::_make_args() ); my $class = ref($self); $self->postamble( "# --- $class section:\n" . Module::AutoInstall::postamble() ); } sub installdeps_target { my ($self, @args) = @_; $self->include('Module::AutoInstall'); require Module::AutoInstall; Module::AutoInstall::_installdeps_target(1); $self->auto_install(@args); } sub auto_install_now { my $self = shift; $self->auto_install(@_); Module::AutoInstall::do_install(); } 1; Biblio-RFID-0.05/inc/Module/Install/Metadata.pm0000644000175000017500000004330214373155777020743 0ustar dpavlindpavlin#line 1 package Module::Install::Metadata; use strict 'vars'; use Module::Install::Base (); use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.19'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } my @boolean_keys = qw{ sign }; my @scalar_keys = qw{ name module_name abstract version distribution_type tests installdirs }; my @tuple_keys = qw{ configure_requires build_requires requires recommends bundles resources }; my @resource_keys = qw{ homepage bugtracker repository }; my @array_keys = qw{ keywords author }; *authors = \&author; sub Meta { shift } sub Meta_BooleanKeys { @boolean_keys } sub Meta_ScalarKeys { @scalar_keys } sub Meta_TupleKeys { @tuple_keys } sub Meta_ResourceKeys { @resource_keys } sub Meta_ArrayKeys { @array_keys } foreach my $key ( @boolean_keys ) { *$key = sub { my $self = shift; if ( defined wantarray and not @_ ) { return $self->{values}->{$key}; } $self->{values}->{$key} = ( @_ ? $_[0] : 1 ); return $self; }; } foreach my $key ( @scalar_keys ) { *$key = sub { my $self = shift; return $self->{values}->{$key} if defined wantarray and !@_; $self->{values}->{$key} = shift; return $self; }; } foreach my $key ( @array_keys ) { *$key = sub { my $self = shift; return $self->{values}->{$key} if defined wantarray and !@_; $self->{values}->{$key} ||= []; push @{$self->{values}->{$key}}, @_; return $self; }; } foreach my $key ( @resource_keys ) { *$key = sub { my $self = shift; unless ( @_ ) { return () unless $self->{values}->{resources}; return map { $_->[1] } grep { $_->[0] eq $key } @{ $self->{values}->{resources} }; } return $self->{values}->{resources}->{$key} unless @_; my $uri = shift or die( "Did not provide a value to $key()" ); $self->resources( $key => $uri ); return 1; }; } foreach my $key ( grep { $_ ne "resources" } @tuple_keys) { *$key = sub { my $self = shift; return $self->{values}->{$key} unless @_; my @added; while ( @_ ) { my $module = shift or last; my $version = shift || 0; push @added, [ $module, $version ]; } push @{ $self->{values}->{$key} }, @added; return map {@$_} @added; }; } # Resource handling my %lc_resource = map { $_ => 1 } qw{ homepage license bugtracker repository }; sub resources { my $self = shift; while ( @_ ) { my $name = shift or last; my $value = shift or next; if ( $name eq lc $name and ! $lc_resource{$name} ) { die("Unsupported reserved lowercase resource '$name'"); } $self->{values}->{resources} ||= []; push @{ $self->{values}->{resources} }, [ $name, $value ]; } $self->{values}->{resources}; } # Aliases for build_requires that will have alternative # meanings in some future version of META.yml. sub test_requires { shift->build_requires(@_) } sub install_requires { shift->build_requires(@_) } # Aliases for installdirs options sub install_as_core { $_[0]->installdirs('perl') } sub install_as_cpan { $_[0]->installdirs('site') } sub install_as_site { $_[0]->installdirs('site') } sub install_as_vendor { $_[0]->installdirs('vendor') } sub dynamic_config { my $self = shift; my $value = @_ ? shift : 1; if ( $self->{values}->{dynamic_config} ) { # Once dynamic we never change to static, for safety return 0; } $self->{values}->{dynamic_config} = $value ? 1 : 0; return 1; } # Convenience command sub static_config { shift->dynamic_config(0); } sub perl_version { my $self = shift; return $self->{values}->{perl_version} unless @_; my $version = shift or die( "Did not provide a value to perl_version()" ); # Normalize the version $version = $self->_perl_version($version); # We don't support the really old versions unless ( $version >= 5.005 ) { die "Module::Install only supports 5.005 or newer (use ExtUtils::MakeMaker)\n"; } $self->{values}->{perl_version} = $version; } sub all_from { my ( $self, $file ) = @_; unless ( defined($file) ) { my $name = $self->name or die( "all_from called with no args without setting name() first" ); $file = join('/', 'lib', split(/-/, $name)) . '.pm'; $file =~ s{.*/}{} unless -e $file; unless ( -e $file ) { die("all_from cannot find $file from $name"); } } unless ( -f $file ) { die("The path '$file' does not exist, or is not a file"); } $self->{values}{all_from} = $file; # Some methods pull from POD instead of code. # If there is a matching .pod, use that instead my $pod = $file; $pod =~ s/\.pm$/.pod/i; $pod = $file unless -e $pod; # Pull the different values $self->name_from($file) unless $self->name; $self->version_from($file) unless $self->version; $self->perl_version_from($file) unless $self->perl_version; $self->author_from($pod) unless @{$self->author || []}; $self->license_from($pod) unless $self->license; $self->abstract_from($pod) unless $self->abstract; return 1; } sub provides { my $self = shift; my $provides = ( $self->{values}->{provides} ||= {} ); %$provides = (%$provides, @_) if @_; return $provides; } sub auto_provides { my $self = shift; return $self unless $self->is_admin; unless (-e 'MANIFEST') { warn "Cannot deduce auto_provides without a MANIFEST, skipping\n"; return $self; } # Avoid spurious warnings as we are not checking manifest here. local $SIG{__WARN__} = sub {1}; require ExtUtils::Manifest; local *ExtUtils::Manifest::manicheck = sub { return }; require Module::Build; my $build = Module::Build->new( dist_name => $self->name, dist_version => $self->version, license => $self->license, ); $self->provides( %{ $build->find_dist_packages || {} } ); } sub feature { my $self = shift; my $name = shift; my $features = ( $self->{values}->{features} ||= [] ); my $mods; if ( @_ == 1 and ref( $_[0] ) ) { # The user used ->feature like ->features by passing in the second # argument as a reference. Accomodate for that. $mods = $_[0]; } else { $mods = \@_; } my $count = 0; push @$features, ( $name => [ map { ref($_) ? ( ref($_) eq 'HASH' ) ? %$_ : @$_ : $_ } @$mods ] ); return @$features; } sub features { my $self = shift; while ( my ( $name, $mods ) = splice( @_, 0, 2 ) ) { $self->feature( $name, @$mods ); } return $self->{values}->{features} ? @{ $self->{values}->{features} } : (); } sub no_index { my $self = shift; my $type = shift; push @{ $self->{values}->{no_index}->{$type} }, @_ if $type; return $self->{values}->{no_index}; } sub read { my $self = shift; $self->include_deps( 'YAML::Tiny', 0 ); require YAML::Tiny; my $data = YAML::Tiny::LoadFile('META.yml'); # Call methods explicitly in case user has already set some values. while ( my ( $key, $value ) = each %$data ) { next unless $self->can($key); if ( ref $value eq 'HASH' ) { while ( my ( $module, $version ) = each %$value ) { $self->can($key)->($self, $module => $version ); } } else { $self->can($key)->($self, $value); } } return $self; } sub write { my $self = shift; return $self unless $self->is_admin; $self->admin->write_meta; return $self; } sub version_from { require ExtUtils::MM_Unix; my ( $self, $file ) = @_; $self->version( ExtUtils::MM_Unix->parse_version($file) ); # for version integrity check $self->makemaker_args( VERSION_FROM => $file ); } sub abstract_from { require ExtUtils::MM_Unix; my ( $self, $file ) = @_; $self->abstract( bless( { DISTNAME => $self->name }, 'ExtUtils::MM_Unix' )->parse_abstract($file) ); } # Add both distribution and module name sub name_from { my ($self, $file) = @_; if ( Module::Install::_read($file) =~ m/ ^ \s* package \s* ([\w:]+) [\s|;]* /ixms ) { my ($name, $module_name) = ($1, $1); $name =~ s{::}{-}g; $self->name($name); unless ( $self->module_name ) { $self->module_name($module_name); } } else { die("Cannot determine name from $file\n"); } } sub _extract_perl_version { if ( $_[0] =~ m/ ^\s* (?:use|require) \s* v? ([\d_\.]+) \s* ; /ixms ) { my $perl_version = $1; $perl_version =~ s{_}{}g; return $perl_version; } else { return; } } sub perl_version_from { my $self = shift; my $perl_version=_extract_perl_version(Module::Install::_read($_[0])); if ($perl_version) { $self->perl_version($perl_version); } else { warn "Cannot determine perl version info from $_[0]\n"; return; } } sub author_from { my $self = shift; my $content = Module::Install::_read($_[0]); if ($content =~ m/ =head \d \s+ (?:authors?)\b \s* ([^\n]*) | =head \d \s+ (?:licen[cs]e|licensing|copyright|legal)\b \s* .*? copyright .*? \d\d\d[\d.]+ \s* (?:\bby\b)? \s* ([^\n]*) /ixms) { my $author = $1 || $2; # XXX: ugly but should work anyway... if (eval "require Pod::Escapes; 1") { # Pod::Escapes has a mapping table. # It's in core of perl >= 5.9.3, and should be installed # as one of the Pod::Simple's prereqs, which is a prereq # of Pod::Text 3.x (see also below). $author =~ s{ E<( (\d+) | ([A-Za-z]+) )> } { defined $2 ? chr($2) : defined $Pod::Escapes::Name2character_number{$1} ? chr($Pod::Escapes::Name2character_number{$1}) : do { warn "Unknown escape: E<$1>"; "E<$1>"; }; }gex; } elsif (eval "require Pod::Text; 1" && $Pod::Text::VERSION < 3) { # Pod::Text < 3.0 has yet another mapping table, # though the table name of 2.x and 1.x are different. # (1.x is in core of Perl < 5.6, 2.x is in core of # Perl < 5.9.3) my $mapping = ($Pod::Text::VERSION < 2) ? \%Pod::Text::HTML_Escapes : \%Pod::Text::ESCAPES; $author =~ s{ E<( (\d+) | ([A-Za-z]+) )> } { defined $2 ? chr($2) : defined $mapping->{$1} ? $mapping->{$1} : do { warn "Unknown escape: E<$1>"; "E<$1>"; }; }gex; } else { $author =~ s{E}{<}g; $author =~ s{E}{>}g; } $self->author($author); } else { warn "Cannot determine author info from $_[0]\n"; } } #Stolen from M::B my %license_urls = ( perl => 'http://dev.perl.org/licenses/', apache => 'http://apache.org/licenses/LICENSE-2.0', apache_1_1 => 'http://apache.org/licenses/LICENSE-1.1', artistic => 'http://opensource.org/licenses/artistic-license.php', artistic_2 => 'http://opensource.org/licenses/artistic-license-2.0.php', lgpl => 'http://opensource.org/licenses/lgpl-license.php', lgpl2 => 'http://opensource.org/licenses/lgpl-2.1.php', lgpl3 => 'http://opensource.org/licenses/lgpl-3.0.html', bsd => 'http://opensource.org/licenses/bsd-license.php', gpl => 'http://opensource.org/licenses/gpl-license.php', gpl2 => 'http://opensource.org/licenses/gpl-2.0.php', gpl3 => 'http://opensource.org/licenses/gpl-3.0.html', mit => 'http://opensource.org/licenses/mit-license.php', mozilla => 'http://opensource.org/licenses/mozilla1.1.php', open_source => undef, unrestricted => undef, restrictive => undef, unknown => undef, ); sub license { my $self = shift; return $self->{values}->{license} unless @_; my $license = shift or die( 'Did not provide a value to license()' ); $license = __extract_license($license) || lc $license; $self->{values}->{license} = $license; # Automatically fill in license URLs if ( $license_urls{$license} ) { $self->resources( license => $license_urls{$license} ); } return 1; } sub _extract_license { my $pod = shift; my $matched; return __extract_license( ($matched) = $pod =~ m/ (=head \d \s+ L(?i:ICEN[CS]E|ICENSING)\b.*?) (=head \d.*|=cut.*|)\z /xms ) || __extract_license( ($matched) = $pod =~ m/ (=head \d \s+ (?:C(?i:OPYRIGHTS?)|L(?i:EGAL))\b.*?) (=head \d.*|=cut.*|)\z /xms ); } sub __extract_license { my $license_text = shift or return; my @phrases = ( '(?:under )?the same (?:terms|license) as (?:perl|the perl (?:\d )?programming language)' => 'perl', 1, '(?:under )?the terms of (?:perl|the perl programming language) itself' => 'perl', 1, 'Artistic and GPL' => 'perl', 1, 'GNU general public license' => 'gpl', 1, 'GNU public license' => 'gpl', 1, 'GNU lesser general public license' => 'lgpl', 1, 'GNU lesser public license' => 'lgpl', 1, 'GNU library general public license' => 'lgpl', 1, 'GNU library public license' => 'lgpl', 1, 'GNU Free Documentation license' => 'unrestricted', 1, 'GNU Affero General Public License' => 'open_source', 1, '(?:Free)?BSD license' => 'bsd', 1, 'Artistic license 2\.0' => 'artistic_2', 1, 'Artistic license' => 'artistic', 1, 'Apache (?:Software )?license' => 'apache', 1, 'GPL' => 'gpl', 1, 'LGPL' => 'lgpl', 1, 'BSD' => 'bsd', 1, 'Artistic' => 'artistic', 1, 'MIT' => 'mit', 1, 'Mozilla Public License' => 'mozilla', 1, 'Q Public License' => 'open_source', 1, 'OpenSSL License' => 'unrestricted', 1, 'SSLeay License' => 'unrestricted', 1, 'zlib License' => 'open_source', 1, 'proprietary' => 'proprietary', 0, ); while ( my ($pattern, $license, $osi) = splice(@phrases, 0, 3) ) { $pattern =~ s#\s+#\\s+#gs; if ( $license_text =~ /\b$pattern\b/i ) { return $license; } } return ''; } sub license_from { my $self = shift; if (my $license=_extract_license(Module::Install::_read($_[0]))) { $self->license($license); } else { warn "Cannot determine license info from $_[0]\n"; return 'unknown'; } } sub _extract_bugtracker { my @links = $_[0] =~ m#L<( https?\Q://rt.cpan.org/\E[^>]+| https?\Q://github.com/\E[\w_]+/[\w_]+/issues| https?\Q://code.google.com/p/\E[\w_\-]+/issues/list )>#gx; my %links; @links{@links}=(); @links=keys %links; return @links; } sub bugtracker_from { my $self = shift; my $content = Module::Install::_read($_[0]); my @links = _extract_bugtracker($content); unless ( @links ) { warn "Cannot determine bugtracker info from $_[0]\n"; return 0; } if ( @links > 1 ) { warn "Found more than one bugtracker link in $_[0]\n"; return 0; } # Set the bugtracker bugtracker( $links[0] ); return 1; } sub requires_from { my $self = shift; my $content = Module::Install::_readperl($_[0]); my @requires = $content =~ m/^use\s+([^\W\d]\w*(?:::\w+)*)\s+(v?[\d\.]+)/mg; while ( @requires ) { my $module = shift @requires; my $version = shift @requires; $self->requires( $module => $version ); } } sub test_requires_from { my $self = shift; my $content = Module::Install::_readperl($_[0]); my @requires = $content =~ m/^use\s+([^\W\d]\w*(?:::\w+)*)\s+([\d\.]+)/mg; while ( @requires ) { my $module = shift @requires; my $version = shift @requires; $self->test_requires( $module => $version ); } } # Convert triple-part versions (eg, 5.6.1 or 5.8.9) to # numbers (eg, 5.006001 or 5.008009). # Also, convert double-part versions (eg, 5.8) sub _perl_version { my $v = $_[-1]; $v =~ s/^([1-9])\.([1-9]\d?\d?)$/sprintf("%d.%03d",$1,$2)/e; $v =~ s/^([1-9])\.([1-9]\d?\d?)\.(0|[1-9]\d?\d?)$/sprintf("%d.%03d%03d",$1,$2,$3 || 0)/e; $v =~ s/(\.\d\d\d)000$/$1/; $v =~ s/_.+$//; if ( ref($v) ) { # Numify $v = $v + 0; } return $v; } sub add_metadata { my $self = shift; my %hash = @_; for my $key (keys %hash) { warn "add_metadata: $key is not prefixed with 'x_'.\n" . "Use appopriate function to add non-private metadata.\n" unless $key =~ /^x_/; $self->{values}->{$key} = $hash{$key}; } } ###################################################################### # MYMETA Support sub WriteMyMeta { die "WriteMyMeta has been deprecated"; } sub write_mymeta_yaml { my $self = shift; # We need YAML::Tiny to write the MYMETA.yml file unless ( eval { require YAML::Tiny; 1; } ) { return 1; } # Generate the data my $meta = $self->_write_mymeta_data or return 1; # Save as the MYMETA.yml file print "Writing MYMETA.yml\n"; YAML::Tiny::DumpFile('MYMETA.yml', $meta); } sub write_mymeta_json { my $self = shift; # We need JSON to write the MYMETA.json file unless ( eval { require JSON; 1; } ) { return 1; } # Generate the data my $meta = $self->_write_mymeta_data or return 1; # Save as the MYMETA.yml file print "Writing MYMETA.json\n"; Module::Install::_write( 'MYMETA.json', JSON->new->pretty(1)->canonical->encode($meta), ); } sub _write_mymeta_data { my $self = shift; # If there's no existing META.yml there is nothing we can do return undef unless -f 'META.yml'; # We need Parse::CPAN::Meta to load the file unless ( eval { require Parse::CPAN::Meta; 1; } ) { return undef; } # Merge the perl version into the dependencies my $val = $self->Meta->{values}; my $perl = delete $val->{perl_version}; if ( $perl ) { $val->{requires} ||= []; my $requires = $val->{requires}; # Canonize to three-dot version after Perl 5.6 if ( $perl >= 5.006 ) { $perl =~ s{^(\d+)\.(\d\d\d)(\d*)}{join('.', $1, int($2||0), int($3||0))}e } unshift @$requires, [ perl => $perl ]; } # Load the advisory META.yml file my @yaml = Parse::CPAN::Meta::LoadFile('META.yml'); my $meta = $yaml[0]; # Overwrite the non-configure dependency hashes delete $meta->{requires}; delete $meta->{build_requires}; delete $meta->{recommends}; if ( exists $val->{requires} ) { $meta->{requires} = { map { @$_ } @{ $val->{requires} } }; } if ( exists $val->{build_requires} ) { $meta->{build_requires} = { map { @$_ } @{ $val->{build_requires} } }; } return $meta; } 1; Biblio-RFID-0.05/inc/Module/Install/Makefile.pm0000644000175000017500000002743714373155777020753 0ustar dpavlindpavlin#line 1 package Module::Install::Makefile; use strict 'vars'; use ExtUtils::MakeMaker (); use Module::Install::Base (); use Fcntl qw/:flock :seek/; use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.19'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } sub Makefile { $_[0] } my %seen = (); sub prompt { shift; # Infinite loop protection my @c = caller(); if ( ++$seen{"$c[1]|$c[2]|$_[0]"} > 3 ) { die "Caught an potential prompt infinite loop ($c[1]|$c[2]|$_[0])"; } # In automated testing or non-interactive session, always use defaults if ( ($ENV{AUTOMATED_TESTING} or -! -t STDIN) and ! $ENV{PERL_MM_USE_DEFAULT} ) { local $ENV{PERL_MM_USE_DEFAULT} = 1; goto &ExtUtils::MakeMaker::prompt; } else { goto &ExtUtils::MakeMaker::prompt; } } # Store a cleaned up version of the MakeMaker version, # since we need to behave differently in a variety of # ways based on the MM version. my $makemaker = eval $ExtUtils::MakeMaker::VERSION; # If we are passed a param, do a "newer than" comparison. # Otherwise, just return the MakeMaker version. sub makemaker { ( @_ < 2 or $makemaker >= eval($_[1]) ) ? $makemaker : 0 } # Ripped from ExtUtils::MakeMaker 6.56, and slightly modified # as we only need to know here whether the attribute is an array # or a hash or something else (which may or may not be appendable). my %makemaker_argtype = ( C => 'ARRAY', CONFIG => 'ARRAY', # CONFIGURE => 'CODE', # ignore DIR => 'ARRAY', DL_FUNCS => 'HASH', DL_VARS => 'ARRAY', EXCLUDE_EXT => 'ARRAY', EXE_FILES => 'ARRAY', FUNCLIST => 'ARRAY', H => 'ARRAY', IMPORTS => 'HASH', INCLUDE_EXT => 'ARRAY', LIBS => 'ARRAY', # ignore '' MAN1PODS => 'HASH', MAN3PODS => 'HASH', META_ADD => 'HASH', META_MERGE => 'HASH', PL_FILES => 'HASH', PM => 'HASH', PMLIBDIRS => 'ARRAY', PMLIBPARENTDIRS => 'ARRAY', PREREQ_PM => 'HASH', CONFIGURE_REQUIRES => 'HASH', SKIP => 'ARRAY', TYPEMAPS => 'ARRAY', XS => 'HASH', # VERSION => ['version',''], # ignore # _KEEP_AFTER_FLUSH => '', clean => 'HASH', depend => 'HASH', dist => 'HASH', dynamic_lib=> 'HASH', linkext => 'HASH', macro => 'HASH', postamble => 'HASH', realclean => 'HASH', test => 'HASH', tool_autosplit => 'HASH', # special cases where you can use makemaker_append CCFLAGS => 'APPENDABLE', DEFINE => 'APPENDABLE', INC => 'APPENDABLE', LDDLFLAGS => 'APPENDABLE', LDFROM => 'APPENDABLE', ); sub makemaker_args { my ($self, %new_args) = @_; my $args = ( $self->{makemaker_args} ||= {} ); foreach my $key (keys %new_args) { if ($makemaker_argtype{$key}) { if ($makemaker_argtype{$key} eq 'ARRAY') { $args->{$key} = [] unless defined $args->{$key}; unless (ref $args->{$key} eq 'ARRAY') { $args->{$key} = [$args->{$key}] } push @{$args->{$key}}, ref $new_args{$key} eq 'ARRAY' ? @{$new_args{$key}} : $new_args{$key}; } elsif ($makemaker_argtype{$key} eq 'HASH') { $args->{$key} = {} unless defined $args->{$key}; foreach my $skey (keys %{ $new_args{$key} }) { $args->{$key}{$skey} = $new_args{$key}{$skey}; } } elsif ($makemaker_argtype{$key} eq 'APPENDABLE') { $self->makemaker_append($key => $new_args{$key}); } } else { if (defined $args->{$key}) { warn qq{MakeMaker attribute "$key" is overriden; use "makemaker_append" to append values\n}; } $args->{$key} = $new_args{$key}; } } return $args; } # For mm args that take multiple space-separated args, # append an argument to the current list. sub makemaker_append { my $self = shift; my $name = shift; my $args = $self->makemaker_args; $args->{$name} = defined $args->{$name} ? join( ' ', $args->{$name}, @_ ) : join( ' ', @_ ); } sub build_subdirs { my $self = shift; my $subdirs = $self->makemaker_args->{DIR} ||= []; for my $subdir (@_) { push @$subdirs, $subdir; } } sub clean_files { my $self = shift; my $clean = $self->makemaker_args->{clean} ||= {}; %$clean = ( %$clean, FILES => join ' ', grep { length $_ } ($clean->{FILES} || (), @_), ); } sub realclean_files { my $self = shift; my $realclean = $self->makemaker_args->{realclean} ||= {}; %$realclean = ( %$realclean, FILES => join ' ', grep { length $_ } ($realclean->{FILES} || (), @_), ); } sub libs { my $self = shift; my $libs = ref $_[0] ? shift : [ shift ]; $self->makemaker_args( LIBS => $libs ); } sub inc { my $self = shift; $self->makemaker_args( INC => shift ); } sub _wanted_t { } sub tests_recursive { my $self = shift; my $dir = shift || 't'; unless ( -d $dir ) { die "tests_recursive dir '$dir' does not exist"; } my %tests = map { $_ => 1 } split / /, ($self->tests || ''); require File::Find; File::Find::find( sub { /\.t$/ and -f $_ and $tests{"$File::Find::dir/*.t"} = 1 }, $dir ); $self->tests( join ' ', sort keys %tests ); } sub write { my $self = shift; die "&Makefile->write() takes no arguments\n" if @_; # Check the current Perl version my $perl_version = $self->perl_version; if ( $perl_version ) { eval "use $perl_version; 1" or die "ERROR: perl: Version $] is installed, " . "but we need version >= $perl_version"; } # Make sure we have a new enough MakeMaker require ExtUtils::MakeMaker; if ( $perl_version and $self->_cmp($perl_version, '5.006') >= 0 ) { # This previous attempted to inherit the version of # ExtUtils::MakeMaker in use by the module author, but this # was found to be untenable as some authors build releases # using future dev versions of EU:MM that nobody else has. # Instead, #toolchain suggests we use 6.59 which is the most # stable version on CPAN at time of writing and is, to quote # ribasushi, "not terminally fucked, > and tested enough". # TODO: We will now need to maintain this over time to push # the version up as new versions are released. $self->build_requires( 'ExtUtils::MakeMaker' => 6.59 ); $self->configure_requires( 'ExtUtils::MakeMaker' => 6.59 ); } else { # Allow legacy-compatibility with 5.005 by depending on the # most recent EU:MM that supported 5.005. $self->build_requires( 'ExtUtils::MakeMaker' => 6.36 ); $self->configure_requires( 'ExtUtils::MakeMaker' => 6.36 ); } # Generate the MakeMaker params my $args = $self->makemaker_args; $args->{DISTNAME} = $self->name; $args->{NAME} = $self->module_name || $self->name; $args->{NAME} =~ s/-/::/g; $args->{VERSION} = $self->version or die <<'EOT'; ERROR: Can't determine distribution version. Please specify it explicitly via 'version' in Makefile.PL, or set a valid $VERSION in a module, and provide its file path via 'version_from' (or 'all_from' if you prefer) in Makefile.PL. EOT if ( $self->tests ) { my @tests = split ' ', $self->tests; my %seen; $args->{test} = { TESTS => (join ' ', grep {!$seen{$_}++} @tests), }; } elsif ( $Module::Install::ExtraTests::use_extratests ) { # Module::Install::ExtraTests doesn't set $self->tests and does its own tests via harness. # So, just ignore our xt tests here. } elsif ( -d 'xt' and ($Module::Install::AUTHOR or $ENV{RELEASE_TESTING}) ) { $args->{test} = { TESTS => join( ' ', map { "$_/*.t" } grep { -d $_ } qw{ t xt } ), }; } if ( $] >= 5.005 ) { $args->{ABSTRACT} = $self->abstract; $args->{AUTHOR} = join ', ', @{$self->author || []}; } if ( $self->makemaker(6.10) ) { $args->{NO_META} = 1; #$args->{NO_MYMETA} = 1; } if ( $self->makemaker(6.17) and $self->sign ) { $args->{SIGN} = 1; } unless ( $self->is_admin ) { delete $args->{SIGN}; } if ( $self->makemaker(6.31) and $self->license ) { $args->{LICENSE} = $self->license; } my $prereq = ($args->{PREREQ_PM} ||= {}); %$prereq = ( %$prereq, map { @$_ } # flatten [module => version] map { @$_ } grep $_, ($self->requires) ); # Remove any reference to perl, PREREQ_PM doesn't support it delete $args->{PREREQ_PM}->{perl}; # Merge both kinds of requires into BUILD_REQUIRES my $build_prereq = ($args->{BUILD_REQUIRES} ||= {}); %$build_prereq = ( %$build_prereq, map { @$_ } # flatten [module => version] map { @$_ } grep $_, ($self->configure_requires, $self->build_requires) ); # Remove any reference to perl, BUILD_REQUIRES doesn't support it delete $args->{BUILD_REQUIRES}->{perl}; # Delete bundled dists from prereq_pm, add it to Makefile DIR my $subdirs = ($args->{DIR} || []); if ($self->bundles) { my %processed; foreach my $bundle (@{ $self->bundles }) { my ($mod_name, $dist_dir) = @$bundle; delete $prereq->{$mod_name}; $dist_dir = File::Basename::basename($dist_dir); # dir for building this module if (not exists $processed{$dist_dir}) { if (-d $dist_dir) { # List as sub-directory to be processed by make push @$subdirs, $dist_dir; } # Else do nothing: the module is already present on the system $processed{$dist_dir} = undef; } } } unless ( $self->makemaker('6.55_03') ) { %$prereq = (%$prereq,%$build_prereq); delete $args->{BUILD_REQUIRES}; } if ( my $perl_version = $self->perl_version ) { eval "use $perl_version; 1" or die "ERROR: perl: Version $] is installed, " . "but we need version >= $perl_version"; if ( $self->makemaker(6.48) ) { $args->{MIN_PERL_VERSION} = $perl_version; } } if ($self->installdirs) { warn qq{old INSTALLDIRS (probably set by makemaker_args) is overriden by installdirs\n} if $args->{INSTALLDIRS}; $args->{INSTALLDIRS} = $self->installdirs; } my %args = map { ( $_ => $args->{$_} ) } grep {defined($args->{$_} ) } keys %$args; my $user_preop = delete $args{dist}->{PREOP}; if ( my $preop = $self->admin->preop($user_preop) ) { foreach my $key ( keys %$preop ) { $args{dist}->{$key} = $preop->{$key}; } } my $mm = ExtUtils::MakeMaker::WriteMakefile(%args); $self->fix_up_makefile($mm->{FIRST_MAKEFILE} || 'Makefile'); } sub fix_up_makefile { my $self = shift; my $makefile_name = shift; my $top_class = ref($self->_top) || ''; my $top_version = $self->_top->VERSION || ''; my $preamble = $self->preamble ? "# Preamble by $top_class $top_version\n" . $self->preamble : ''; my $postamble = "# Postamble by $top_class $top_version\n" . ($self->postamble || ''); local *MAKEFILE; open MAKEFILE, "+< $makefile_name" or die "fix_up_makefile: Couldn't open $makefile_name: $!"; eval { flock MAKEFILE, LOCK_EX }; my $makefile = do { local $/; }; $makefile =~ s/\b(test_harness\(\$\(TEST_VERBOSE\), )/$1'inc', /; $makefile =~ s/( -I\$\(INST_ARCHLIB\))/ -Iinc$1/g; $makefile =~ s/( "-I\$\(INST_LIB\)")/ "-Iinc"$1/g; $makefile =~ s/^(FULLPERL = .*)/$1 "-Iinc"/m; $makefile =~ s/^(PERL = .*)/$1 "-Iinc"/m; # Module::Install will never be used to build the Core Perl # Sometimes PERL_LIB and PERL_ARCHLIB get written anyway, which breaks # PREFIX/PERL5LIB, and thus, install_share. Blank them if they exist $makefile =~ s/^PERL_LIB = .+/PERL_LIB =/m; #$makefile =~ s/^PERL_ARCHLIB = .+/PERL_ARCHLIB =/m; # Perl 5.005 mentions PERL_LIB explicitly, so we have to remove that as well. $makefile =~ s/(\"?)-I\$\(PERL_LIB\)\1//g; # XXX - This is currently unused; not sure if it breaks other MM-users # $makefile =~ s/^pm_to_blib\s+:\s+/pm_to_blib :: /mg; seek MAKEFILE, 0, SEEK_SET; truncate MAKEFILE, 0; print MAKEFILE "$preamble$makefile$postamble" or die $!; close MAKEFILE or die $!; 1; } sub preamble { my ($self, $text) = @_; $self->{preamble} = $text . $self->{preamble} if defined $text; $self->{preamble}; } sub postamble { my ($self, $text) = @_; $self->{postamble} ||= $self->admin->postamble; $self->{postamble} .= $text if defined $text; $self->{postamble} } 1; __END__ #line 544 Biblio-RFID-0.05/inc/Module/Install/Can.pm0000644000175000017500000000640514373155777017727 0ustar dpavlindpavlin#line 1 package Module::Install::Can; use strict; use Config (); use ExtUtils::MakeMaker (); use Module::Install::Base (); use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.19'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } # check if we can load some module ### Upgrade this to not have to load the module if possible sub can_use { my ($self, $mod, $ver) = @_; $mod =~ s{::|\\}{/}g; $mod .= '.pm' unless $mod =~ /\.pm$/i; my $pkg = $mod; $pkg =~ s{/}{::}g; $pkg =~ s{\.pm$}{}i; local $@; eval { require $mod; $pkg->VERSION($ver || 0); 1 }; } # Check if we can run some command sub can_run { my ($self, $cmd) = @_; my $_cmd = $cmd; return $_cmd if (-x $_cmd or $_cmd = MM->maybe_command($_cmd)); for my $dir ((split /$Config::Config{path_sep}/, $ENV{PATH}), '.') { next if $dir eq ''; require File::Spec; my $abs = File::Spec->catfile($dir, $cmd); return $abs if (-x $abs or $abs = MM->maybe_command($abs)); } return; } # Can our C compiler environment build XS files sub can_xs { my $self = shift; # Ensure we have the CBuilder module $self->configure_requires( 'ExtUtils::CBuilder' => 0.27 ); # Do we have the configure_requires checker? local $@; eval "require ExtUtils::CBuilder;"; if ( $@ ) { # They don't obey configure_requires, so it is # someone old and delicate. Try to avoid hurting # them by falling back to an older simpler test. return $self->can_cc(); } # Do we have a working C compiler my $builder = ExtUtils::CBuilder->new( quiet => 1, ); unless ( $builder->have_compiler ) { # No working C compiler return 0; } # Write a C file representative of what XS becomes require File::Temp; my ( $FH, $tmpfile ) = File::Temp::tempfile( "compilexs-XXXXX", SUFFIX => '.c', ); binmode $FH; print $FH <<'END_C'; #include "EXTERN.h" #include "perl.h" #include "XSUB.h" int main(int argc, char **argv) { return 0; } int boot_sanexs() { return 1; } END_C close $FH; # Can the C compiler access the same headers XS does my @libs = (); my $object = undef; eval { local $^W = 0; $object = $builder->compile( source => $tmpfile, ); @libs = $builder->link( objects => $object, module_name => 'sanexs', ); }; my $result = $@ ? 0 : 1; # Clean up all the build files foreach ( $tmpfile, $object, @libs ) { next unless defined $_; 1 while unlink; } return $result; } # Can we locate a (the) C compiler sub can_cc { my $self = shift; if ($^O eq 'VMS') { require ExtUtils::CBuilder; my $builder = ExtUtils::CBuilder->new( quiet => 1, ); return $builder->have_compiler; } my @chunks = split(/ /, $Config::Config{cc}) or return; # $Config{cc} may contain args; try to find out the program part while (@chunks) { return $self->can_run("@chunks") || (pop(@chunks), next); } return; } # Fix Cygwin bug on maybe_command(); if ( $^O eq 'cygwin' ) { require ExtUtils::MM_Cygwin; require ExtUtils::MM_Win32; if ( ! defined(&ExtUtils::MM_Cygwin::maybe_command) ) { *ExtUtils::MM_Cygwin::maybe_command = sub { my ($self, $file) = @_; if ($file =~ m{^/cygdrive/}i and ExtUtils::MM_Win32->can('maybe_command')) { ExtUtils::MM_Win32->maybe_command($file); } else { ExtUtils::MM_Unix->maybe_command($file); } } } } 1; __END__ #line 245 Biblio-RFID-0.05/inc/Module/Install/Fetch.pm0000644000175000017500000000462714373155777020263 0ustar dpavlindpavlin#line 1 package Module::Install::Fetch; use strict; use Module::Install::Base (); use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.19'; @ISA = 'Module::Install::Base'; $ISCORE = 1; } sub get_file { my ($self, %args) = @_; my ($scheme, $host, $path, $file) = $args{url} =~ m|^(\w+)://([^/]+)(.+)/(.+)| or return; if ( $scheme eq 'http' and ! eval { require LWP::Simple; 1 } ) { $args{url} = $args{ftp_url} or (warn("LWP support unavailable!\n"), return); ($scheme, $host, $path, $file) = $args{url} =~ m|^(\w+)://([^/]+)(.+)/(.+)| or return; } $|++; print "Fetching '$file' from $host... "; unless (eval { require Socket; Socket::inet_aton($host) }) { warn "'$host' resolve failed!\n"; return; } return unless $scheme eq 'ftp' or $scheme eq 'http'; require Cwd; my $dir = Cwd::getcwd(); chdir $args{local_dir} or return if exists $args{local_dir}; if (eval { require LWP::Simple; 1 }) { LWP::Simple::mirror($args{url}, $file); } elsif (eval { require Net::FTP; 1 }) { eval { # use Net::FTP to get past firewall my $ftp = Net::FTP->new($host, Passive => 1, Timeout => 600); $ftp->login("anonymous", 'anonymous@example.com'); $ftp->cwd($path); $ftp->binary; $ftp->get($file) or (warn("$!\n"), return); $ftp->quit; } } elsif (my $ftp = $self->can_run('ftp')) { eval { # no Net::FTP, fallback to ftp.exe require FileHandle; my $fh = FileHandle->new; local $SIG{CHLD} = 'IGNORE'; unless ($fh->open("|$ftp -n")) { warn "Couldn't open ftp: $!\n"; chdir $dir; return; } my @dialog = split(/\n/, <<"END_FTP"); open $host user anonymous anonymous\@example.com cd $path binary get $file $file quit END_FTP foreach (@dialog) { $fh->print("$_\n") } $fh->close; } } else { warn "No working 'ftp' program available!\n"; chdir $dir; return; } unless (-f $file) { warn "Fetching failed: $@\n"; chdir $dir; return; } return if exists $args{size} and -s $file != $args{size}; system($args{run}) if exists $args{run}; unlink($file) if $args{remove}; print(((!exists $args{check_for} or -e $args{check_for}) ? "done!" : "failed! ($!)"), "\n"); chdir $dir; return !$?; } 1; Biblio-RFID-0.05/inc/Module/Install/WriteAll.pm0000644000175000017500000000237614373155777020754 0ustar dpavlindpavlin#line 1 package Module::Install::WriteAll; use strict; use Module::Install::Base (); use vars qw{$VERSION @ISA $ISCORE}; BEGIN { $VERSION = '1.19'; @ISA = qw{Module::Install::Base}; $ISCORE = 1; } sub WriteAll { my $self = shift; my %args = ( meta => 1, sign => 0, inline => 0, check_nmake => 1, @_, ); $self->sign(1) if $args{sign}; $self->admin->WriteAll(%args) if $self->is_admin; $self->check_nmake if $args{check_nmake}; unless ( $self->makemaker_args->{PL_FILES} ) { # XXX: This still may be a bit over-defensive... unless ($self->makemaker(6.25)) { $self->makemaker_args( PL_FILES => {} ) if -f 'Build.PL'; } } # Until ExtUtils::MakeMaker support MYMETA.yml, make sure # we clean it up properly ourself. $self->realclean_files('MYMETA.yml'); if ( $args{inline} ) { $self->Inline->write; } else { $self->Makefile->write; } # The Makefile write process adds a couple of dependencies, # so write the META.yml files after the Makefile. if ( $args{meta} ) { $self->Meta->write; } # Experimental support for MYMETA if ( $ENV{X_MYMETA} ) { if ( $ENV{X_MYMETA} eq 'JSON' ) { $self->Meta->write_mymeta_json; } else { $self->Meta->write_mymeta_yaml; } } return 1; } 1; Biblio-RFID-0.05/inc/Module/Install.pm0000644000175000017500000002714514373155777017232 0ustar dpavlindpavlin#line 1 package Module::Install; # For any maintainers: # The load order for Module::Install is a bit magic. # It goes something like this... # # IF ( host has Module::Install installed, creating author mode ) { # 1. Makefile.PL calls "use inc::Module::Install" # 2. $INC{inc/Module/Install.pm} set to installed version of inc::Module::Install # 3. The installed version of inc::Module::Install loads # 4. inc::Module::Install calls "require Module::Install" # 5. The ./inc/ version of Module::Install loads # } ELSE { # 1. Makefile.PL calls "use inc::Module::Install" # 2. $INC{inc/Module/Install.pm} set to ./inc/ version of Module::Install # 3. The ./inc/ version of Module::Install loads # } use 5.006; use strict 'vars'; use Cwd (); use File::Find (); use File::Path (); use vars qw{$VERSION $MAIN}; BEGIN { # All Module::Install core packages now require synchronised versions. # This will be used to ensure we don't accidentally load old or # different versions of modules. # This is not enforced yet, but will be some time in the next few # releases once we can make sure it won't clash with custom # Module::Install extensions. $VERSION = '1.19'; # Storage for the pseudo-singleton $MAIN = undef; *inc::Module::Install::VERSION = *VERSION; @inc::Module::Install::ISA = __PACKAGE__; } sub import { my $class = shift; my $self = $class->new(@_); my $who = $self->_caller; #------------------------------------------------------------- # all of the following checks should be included in import(), # to allow "eval 'require Module::Install; 1' to test # installation of Module::Install. (RT #51267) #------------------------------------------------------------- # Whether or not inc::Module::Install is actually loaded, the # $INC{inc/Module/Install.pm} is what will still get set as long as # the caller loaded module this in the documented manner. # If not set, the caller may NOT have loaded the bundled version, and thus # they may not have a MI version that works with the Makefile.PL. This would # result in false errors or unexpected behaviour. And we don't want that. my $file = join( '/', 'inc', split /::/, __PACKAGE__ ) . '.pm'; unless ( $INC{$file} ) { die <<"END_DIE" } Please invoke ${\__PACKAGE__} with: use inc::${\__PACKAGE__}; not: use ${\__PACKAGE__}; END_DIE # This reportedly fixes a rare Win32 UTC file time issue, but # as this is a non-cross-platform XS module not in the core, # we shouldn't really depend on it. See RT #24194 for detail. # (Also, this module only supports Perl 5.6 and above). eval "use Win32::UTCFileTime" if $^O eq 'MSWin32' && $] >= 5.006; # If the script that is loading Module::Install is from the future, # then make will detect this and cause it to re-run over and over # again. This is bad. Rather than taking action to touch it (which # is unreliable on some platforms and requires write permissions) # for now we should catch this and refuse to run. if ( -f $0 ) { my $s = (stat($0))[9]; # If the modification time is only slightly in the future, # sleep briefly to remove the problem. my $a = $s - time; if ( $a > 0 and $a < 5 ) { sleep 5 } # Too far in the future, throw an error. my $t = time; if ( $s > $t ) { die <<"END_DIE" } Your installer $0 has a modification time in the future ($s > $t). This is known to create infinite loops in make. Please correct this, then run $0 again. END_DIE } # Build.PL was formerly supported, but no longer is due to excessive # difficulty in implementing every single feature twice. if ( $0 =~ /Build.PL$/i ) { die <<"END_DIE" } Module::Install no longer supports Build.PL. It was impossible to maintain duel backends, and has been deprecated. Please remove all Build.PL files and only use the Makefile.PL installer. END_DIE #------------------------------------------------------------- # To save some more typing in Module::Install installers, every... # use inc::Module::Install # ...also acts as an implicit use strict. $^H |= strict::bits(qw(refs subs vars)); #------------------------------------------------------------- unless ( -f $self->{file} ) { foreach my $key (keys %INC) { delete $INC{$key} if $key =~ /Module\/Install/; } local $^W; require "$self->{path}/$self->{dispatch}.pm"; File::Path::mkpath("$self->{prefix}/$self->{author}"); $self->{admin} = "$self->{name}::$self->{dispatch}"->new( _top => $self ); $self->{admin}->init; @_ = ($class, _self => $self); goto &{"$self->{name}::import"}; } local $^W; *{"${who}::AUTOLOAD"} = $self->autoload; $self->preload; # Unregister loader and worker packages so subdirs can use them again delete $INC{'inc/Module/Install.pm'}; delete $INC{'Module/Install.pm'}; # Save to the singleton $MAIN = $self; return 1; } sub autoload { my $self = shift; my $who = $self->_caller; my $cwd = Cwd::getcwd(); my $sym = "${who}::AUTOLOAD"; $sym->{$cwd} = sub { my $pwd = Cwd::getcwd(); if ( my $code = $sym->{$pwd} ) { # Delegate back to parent dirs goto &$code unless $cwd eq $pwd; } unless ($$sym =~ s/([^:]+)$//) { # XXX: it looks like we can't retrieve the missing function # via $$sym (usually $main::AUTOLOAD) in this case. # I'm still wondering if we should slurp Makefile.PL to # get some context or not ... my ($package, $file, $line) = caller; die <<"EOT"; Unknown function is found at $file line $line. Execution of $file aborted due to runtime errors. If you're a contributor to a project, you may need to install some Module::Install extensions from CPAN (or other repository). If you're a user of a module, please contact the author. EOT } my $method = $1; if ( uc($method) eq $method ) { # Do nothing return; } elsif ( $method =~ /^_/ and $self->can($method) ) { # Dispatch to the root M:I class return $self->$method(@_); } # Dispatch to the appropriate plugin unshift @_, ( $self, $1 ); goto &{$self->can('call')}; }; } sub preload { my $self = shift; unless ( $self->{extensions} ) { $self->load_extensions( "$self->{prefix}/$self->{path}", $self ); } my @exts = @{$self->{extensions}}; unless ( @exts ) { @exts = $self->{admin}->load_all_extensions; } my %seen; foreach my $obj ( @exts ) { while (my ($method, $glob) = each %{ref($obj) . '::'}) { next unless $obj->can($method); next if $method =~ /^_/; next if $method eq uc($method); $seen{$method}++; } } my $who = $self->_caller; foreach my $name ( sort keys %seen ) { local $^W; *{"${who}::$name"} = sub { ${"${who}::AUTOLOAD"} = "${who}::$name"; goto &{"${who}::AUTOLOAD"}; }; } } sub new { my ($class, %args) = @_; delete $INC{'FindBin.pm'}; { # to suppress the redefine warning local $SIG{__WARN__} = sub {}; require FindBin; } # ignore the prefix on extension modules built from top level. my $base_path = Cwd::abs_path($FindBin::Bin); unless ( Cwd::abs_path(Cwd::getcwd()) eq $base_path ) { delete $args{prefix}; } return $args{_self} if $args{_self}; $base_path = VMS::Filespec::unixify($base_path) if $^O eq 'VMS'; $args{dispatch} ||= 'Admin'; $args{prefix} ||= 'inc'; $args{author} ||= ($^O eq 'VMS' ? '_author' : '.author'); $args{bundle} ||= 'inc/BUNDLES'; $args{base} ||= $base_path; $class =~ s/^\Q$args{prefix}\E:://; $args{name} ||= $class; $args{version} ||= $class->VERSION; unless ( $args{path} ) { $args{path} = $args{name}; $args{path} =~ s!::!/!g; } $args{file} ||= "$args{base}/$args{prefix}/$args{path}.pm"; $args{wrote} = 0; bless( \%args, $class ); } sub call { my ($self, $method) = @_; my $obj = $self->load($method) or return; splice(@_, 0, 2, $obj); goto &{$obj->can($method)}; } sub load { my ($self, $method) = @_; $self->load_extensions( "$self->{prefix}/$self->{path}", $self ) unless $self->{extensions}; foreach my $obj (@{$self->{extensions}}) { return $obj if $obj->can($method); } my $admin = $self->{admin} or die <<"END_DIE"; The '$method' method does not exist in the '$self->{prefix}' path! Please remove the '$self->{prefix}' directory and run $0 again to load it. END_DIE my $obj = $admin->load($method, 1); push @{$self->{extensions}}, $obj; $obj; } sub load_extensions { my ($self, $path, $top) = @_; my $should_reload = 0; unless ( grep { ! ref $_ and lc $_ eq lc $self->{prefix} } @INC ) { unshift @INC, $self->{prefix}; $should_reload = 1; } foreach my $rv ( $self->find_extensions($path) ) { my ($file, $pkg) = @{$rv}; next if $self->{pathnames}{$pkg}; local $@; my $new = eval { local $^W; require $file; $pkg->can('new') }; unless ( $new ) { warn $@ if $@; next; } $self->{pathnames}{$pkg} = $should_reload ? delete $INC{$file} : $INC{$file}; push @{$self->{extensions}}, &{$new}($pkg, _top => $top ); } $self->{extensions} ||= []; } sub find_extensions { my ($self, $path) = @_; my @found; File::Find::find( {no_chdir => 1, wanted => sub { my $file = $File::Find::name; return unless $file =~ m!^\Q$path\E/(.+)\.pm\Z!is; my $subpath = $1; return if lc($subpath) eq lc($self->{dispatch}); $file = "$self->{path}/$subpath.pm"; my $pkg = "$self->{name}::$subpath"; $pkg =~ s!/!::!g; # If we have a mixed-case package name, assume case has been preserved # correctly. Otherwise, root through the file to locate the case-preserved # version of the package name. if ( $subpath eq lc($subpath) || $subpath eq uc($subpath) ) { my $content = Module::Install::_read($File::Find::name); my $in_pod = 0; foreach ( split /\n/, $content ) { $in_pod = 1 if /^=\w/; $in_pod = 0 if /^=cut/; next if ($in_pod || /^=cut/); # skip pod text next if /^\s*#/; # and comments if ( m/^\s*package\s+($pkg)\s*;/i ) { $pkg = $1; last; } } } push @found, [ $file, $pkg ]; }}, $path ) if -d $path; @found; } ##################################################################### # Common Utility Functions sub _caller { my $depth = 0; my $call = caller($depth); while ( $call eq __PACKAGE__ ) { $depth++; $call = caller($depth); } return $call; } sub _read { local *FH; open( FH, '<', $_[0] ) or die "open($_[0]): $!"; binmode FH; my $string = do { local $/; }; close FH or die "close($_[0]): $!"; return $string; } sub _readperl { my $string = Module::Install::_read($_[0]); $string =~ s/(?:\015{1,2}\012|\015|\012)/\n/sg; $string =~ s/(\n)\n*__(?:DATA|END)__\b.*\z/$1/s; $string =~ s/\n\n=\w+.+?\n\n=cut\b.+?\n+/\n\n/sg; return $string; } sub _readpod { my $string = Module::Install::_read($_[0]); $string =~ s/(?:\015{1,2}\012|\015|\012)/\n/sg; return $string if $_[0] =~ /\.pod\z/; $string =~ s/(^|\n=cut\b.+?\n+)[^=\s].+?\n(\n=\w+|\z)/$1$2/sg; $string =~ s/\n*=pod\b[^\n]*\n+/\n\n/sg; $string =~ s/\n*=cut\b[^\n]*\n+/\n\n/sg; $string =~ s/^\n+//s; return $string; } sub _write { local *FH; open( FH, '>', $_[0] ) or die "open($_[0]): $!"; binmode FH; foreach ( 1 .. $#_ ) { print FH $_[$_] or die "print($_[0]): $!"; } close FH or die "close($_[0]): $!"; } # _version is for processing module versions (eg, 1.03_05) not # Perl versions (eg, 5.8.1). sub _version { my $s = shift || 0; my $d =()= $s =~ /(\.)/g; if ( $d >= 2 ) { # Normalise multipart versions $s =~ s/(\.)(\d{1,3})/sprintf("$1%03d",$2)/eg; } $s =~ s/^(\d+)\.?//; my $l = $1 || 0; my @v = map { $_ . '0' x (3 - length $_) } $s =~ /(\d{1,3})\D?/g; $l = $l . '.' . join '', @v if @v; return $l + 0; } sub _cmp { _version($_[1]) <=> _version($_[2]); } # Cloned from Params::Util::_CLASS sub _CLASS { ( defined $_[0] and ! ref $_[0] and $_[0] =~ m/^[^\W\d]\w*(?:::\w+)*\z/s ) ? $_[0] : undef; } 1; # Copyright 2008 - 2012 Adam Kennedy. Biblio-RFID-0.05/inc/Module/AutoInstall.pm0000644000175000017500000006231114373155777020055 0ustar dpavlindpavlin#line 1 package Module::AutoInstall; use strict; use Cwd (); use File::Spec (); use ExtUtils::MakeMaker (); use vars qw{$VERSION}; BEGIN { $VERSION = '1.19'; } # special map on pre-defined feature sets my %FeatureMap = ( '' => 'Core Features', # XXX: deprecated '-core' => 'Core Features', ); # various lexical flags my ( @Missing, @Existing, %DisabledTests, $UnderCPAN, $InstallDepsTarget, $HasCPANPLUS ); my ( $Config, $CheckOnly, $SkipInstall, $AcceptDefault, $TestOnly, $AllDeps, $UpgradeDeps ); my ( $PostambleActions, $PostambleActionsNoTest, $PostambleActionsUpgradeDeps, $PostambleActionsUpgradeDepsNoTest, $PostambleActionsListDeps, $PostambleActionsListAllDeps, $PostambleUsed, $NoTest); # See if it's a testing or non-interactive session _accept_default( $ENV{AUTOMATED_TESTING} or ! -t STDIN ); _init(); sub _accept_default { $AcceptDefault = shift; } sub _installdeps_target { $InstallDepsTarget = shift; } sub missing_modules { return @Missing; } sub do_install { __PACKAGE__->install( [ $Config ? ( UNIVERSAL::isa( $Config, 'HASH' ) ? %{$Config} : @{$Config} ) : () ], @Missing, ); } # initialize various flags, and/or perform install sub _init { foreach my $arg ( @ARGV, split( /[\s\t]+/, $ENV{PERL_AUTOINSTALL} || $ENV{PERL_EXTUTILS_AUTOINSTALL} || '' ) ) { if ( $arg =~ /^--config=(.*)$/ ) { $Config = [ split( ',', $1 ) ]; } elsif ( $arg =~ /^--installdeps=(.*)$/ ) { __PACKAGE__->install( $Config, @Missing = split( /,/, $1 ) ); exit 0; } elsif ( $arg =~ /^--upgradedeps=(.*)$/ ) { $UpgradeDeps = 1; __PACKAGE__->install( $Config, @Missing = split( /,/, $1 ) ); exit 0; } elsif ( $arg =~ /^--default(?:deps)?$/ ) { $AcceptDefault = 1; } elsif ( $arg =~ /^--check(?:deps)?$/ ) { $CheckOnly = 1; } elsif ( $arg =~ /^--skip(?:deps)?$/ ) { $SkipInstall = 1; } elsif ( $arg =~ /^--test(?:only)?$/ ) { $TestOnly = 1; } elsif ( $arg =~ /^--all(?:deps)?$/ ) { $AllDeps = 1; } } } # overrides MakeMaker's prompt() to automatically accept the default choice sub _prompt { goto &ExtUtils::MakeMaker::prompt unless $AcceptDefault; my ( $prompt, $default ) = @_; my $y = ( $default =~ /^[Yy]/ ); print $prompt, ' [', ( $y ? 'Y' : 'y' ), '/', ( $y ? 'n' : 'N' ), '] '; print "$default\n"; return $default; } # the workhorse sub import { my $class = shift; my @args = @_ or return; my $core_all; print "*** $class version " . $class->VERSION . "\n"; print "*** Checking for Perl dependencies...\n"; my $cwd = Cwd::getcwd(); $Config = []; my $maxlen = length( ( sort { length($b) <=> length($a) } grep { /^[^\-]/ } map { ref($_) ? ( ( ref($_) eq 'HASH' ) ? keys(%$_) : @{$_} ) : '' } map { +{@args}->{$_} } grep { /^[^\-]/ or /^-core$/i } keys %{ +{@args} } )[0] ); # We want to know if we're under CPAN early to avoid prompting, but # if we aren't going to try and install anything anyway then skip the # check entirely since we don't want to have to load (and configure) # an old CPAN just for a cosmetic message $UnderCPAN = _check_lock(1) unless $SkipInstall || $InstallDepsTarget; while ( my ( $feature, $modules ) = splice( @args, 0, 2 ) ) { my ( @required, @tests, @skiptests ); my $default = 1; my $conflict = 0; if ( $feature =~ m/^-(\w+)$/ ) { my $option = lc($1); # check for a newer version of myself _update_to( $modules, @_ ) and return if $option eq 'version'; # sets CPAN configuration options $Config = $modules if $option eq 'config'; # promote every features to core status $core_all = ( $modules =~ /^all$/i ) and next if $option eq 'core'; next unless $option eq 'core'; } print "[" . ( $FeatureMap{ lc($feature) } || $feature ) . "]\n"; $modules = [ %{$modules} ] if UNIVERSAL::isa( $modules, 'HASH' ); unshift @$modules, -default => &{ shift(@$modules) } if ( ref( $modules->[0] ) eq 'CODE' ); # XXX: bugward compatibility while ( my ( $mod, $arg ) = splice( @$modules, 0, 2 ) ) { if ( $mod =~ m/^-(\w+)$/ ) { my $option = lc($1); $default = $arg if ( $option eq 'default' ); $conflict = $arg if ( $option eq 'conflict' ); @tests = @{$arg} if ( $option eq 'tests' ); @skiptests = @{$arg} if ( $option eq 'skiptests' ); next; } printf( "- %-${maxlen}s ...", $mod ); if ( $arg and $arg =~ /^\D/ ) { unshift @$modules, $arg; $arg = 0; } # XXX: check for conflicts and uninstalls(!) them. my $cur = _version_of($mod); if (_version_cmp ($cur, $arg) >= 0) { print "loaded. ($cur" . ( $arg ? " >= $arg" : '' ) . ")\n"; push @Existing, $mod => $arg; $DisabledTests{$_} = 1 for map { glob($_) } @skiptests; } else { if (not defined $cur) # indeed missing { print "missing." . ( $arg ? " (would need $arg)" : '' ) . "\n"; } else { # no need to check $arg as _version_cmp ($cur, undef) would satisfy >= above print "too old. ($cur < $arg)\n"; } push @required, $mod => $arg; } } next unless @required; my $mandatory = ( $feature eq '-core' or $core_all ); if ( !$SkipInstall and ( $CheckOnly or ($mandatory and $UnderCPAN) or $AllDeps or $InstallDepsTarget or _prompt( qq{==> Auto-install the } . ( @required / 2 ) . ( $mandatory ? ' mandatory' : ' optional' ) . qq{ module(s) from CPAN?}, $default ? 'y' : 'n', ) =~ /^[Yy]/ ) ) { push( @Missing, @required ); $DisabledTests{$_} = 1 for map { glob($_) } @skiptests; } elsif ( !$SkipInstall and $default and $mandatory and _prompt( qq{==> The module(s) are mandatory! Really skip?}, 'n', ) =~ /^[Nn]/ ) { push( @Missing, @required ); $DisabledTests{$_} = 1 for map { glob($_) } @skiptests; } else { $DisabledTests{$_} = 1 for map { glob($_) } @tests; } } if ( @Missing and not( $CheckOnly or $UnderCPAN) ) { require Config; my $make = $Config::Config{make}; if ($InstallDepsTarget) { print "*** To install dependencies type '$make installdeps' or '$make installdeps_notest'.\n"; } else { print "*** Dependencies will be installed the next time you type '$make'.\n"; } # make an educated guess of whether we'll need root permission. print " (You may need to do that as the 'root' user.)\n" if eval '$>'; } print "*** $class configuration finished.\n"; chdir $cwd; # import to main:: no strict 'refs'; *{'main::WriteMakefile'} = \&Write if caller(0) eq 'main'; return (@Existing, @Missing); } sub _running_under { my $thing = shift; print <<"END_MESSAGE"; *** Since we're running under ${thing}, I'll just let it take care of the dependency's installation later. END_MESSAGE return 1; } # Check to see if we are currently running under CPAN.pm and/or CPANPLUS; # if we are, then we simply let it taking care of our dependencies sub _check_lock { return unless @Missing or @_; if ($ENV{PERL5_CPANM_IS_RUNNING}) { return _running_under('cpanminus'); } my $cpan_env = $ENV{PERL5_CPAN_IS_RUNNING}; if ($ENV{PERL5_CPANPLUS_IS_RUNNING}) { return _running_under($cpan_env ? 'CPAN' : 'CPANPLUS'); } require CPAN; if ($CPAN::VERSION > '1.89') { if ($cpan_env) { return _running_under('CPAN'); } return; # CPAN.pm new enough, don't need to check further } # last ditch attempt, this -will- configure CPAN, very sorry _load_cpan(1); # force initialize even though it's already loaded # Find the CPAN lock-file my $lock = MM->catfile( $CPAN::Config->{cpan_home}, ".lock" ); return unless -f $lock; # Check the lock local *LOCK; return unless open(LOCK, $lock); if ( ( $^O eq 'MSWin32' ? _under_cpan() : == getppid() ) and ( $CPAN::Config->{prerequisites_policy} || '' ) ne 'ignore' ) { print <<'END_MESSAGE'; *** Since we're running under CPAN, I'll just let it take care of the dependency's installation later. END_MESSAGE return 1; } close LOCK; return; } sub install { my $class = shift; my $i; # used below to strip leading '-' from config keys my @config = ( map { s/^-// if ++$i; $_ } @{ +shift } ); my ( @modules, @installed, @modules_to_upgrade ); while (my ($pkg, $ver) = splice(@_, 0, 2)) { # grep out those already installed if (_version_cmp(_version_of($pkg), $ver) >= 0) { push @installed, $pkg; if ($UpgradeDeps) { push @modules_to_upgrade, $pkg, $ver; } } else { push @modules, $pkg, $ver; } } if ($UpgradeDeps) { push @modules, @modules_to_upgrade; @installed = (); @modules_to_upgrade = (); } return @installed unless @modules; # nothing to do return @installed if _check_lock(); # defer to the CPAN shell print "*** Installing dependencies...\n"; return unless _connected_to('cpan.org'); my %args = @config; my %failed; local *FAILED; if ( $args{do_once} and open( FAILED, '.#autoinstall.failed' ) ) { while () { chomp; $failed{$_}++ } close FAILED; my @newmod; while ( my ( $k, $v ) = splice( @modules, 0, 2 ) ) { push @newmod, ( $k => $v ) unless $failed{$k}; } @modules = @newmod; } if ( _has_cpanplus() and not $ENV{PERL_AUTOINSTALL_PREFER_CPAN} ) { _install_cpanplus( \@modules, \@config ); } else { _install_cpan( \@modules, \@config ); } print "*** $class installation finished.\n"; # see if we have successfully installed them while ( my ( $pkg, $ver ) = splice( @modules, 0, 2 ) ) { if ( _version_cmp( _version_of($pkg), $ver ) >= 0 ) { push @installed, $pkg; } elsif ( $args{do_once} and open( FAILED, '>> .#autoinstall.failed' ) ) { print FAILED "$pkg\n"; } } close FAILED if $args{do_once}; return @installed; } sub _install_cpanplus { my @modules = @{ +shift }; my @config = _cpanplus_config( @{ +shift } ); my $installed = 0; require CPANPLUS::Backend; my $cp = CPANPLUS::Backend->new; my $conf = $cp->configure_object; return unless $conf->can('conf') # 0.05x+ with "sudo" support or _can_write($conf->_get_build('base')); # 0.04x # if we're root, set UNINST=1 to avoid trouble unless user asked for it. my $makeflags = $conf->get_conf('makeflags') || ''; if ( UNIVERSAL::isa( $makeflags, 'HASH' ) ) { # 0.03+ uses a hashref here $makeflags->{UNINST} = 1 unless exists $makeflags->{UNINST}; } else { # 0.02 and below uses a scalar $makeflags = join( ' ', split( ' ', $makeflags ), 'UNINST=1' ) if ( $makeflags !~ /\bUNINST\b/ and eval qq{ $> eq '0' } ); } $conf->set_conf( makeflags => $makeflags ); $conf->set_conf( prereqs => 1 ); while ( my ( $key, $val ) = splice( @config, 0, 2 ) ) { $conf->set_conf( $key, $val ); } my $modtree = $cp->module_tree; while ( my ( $pkg, $ver ) = splice( @modules, 0, 2 ) ) { print "*** Installing $pkg...\n"; MY::preinstall( $pkg, $ver ) or next if defined &MY::preinstall; my $success; my $obj = $modtree->{$pkg}; if ( $obj and _version_cmp( $obj->{version}, $ver ) >= 0 ) { my $pathname = $pkg; $pathname =~ s/::/\\W/; foreach my $inc ( grep { m/$pathname.pm/i } keys(%INC) ) { delete $INC{$inc}; } my $rv = $cp->install( modules => [ $obj->{module} ] ); if ( $rv and ( $rv->{ $obj->{module} } or $rv->{ok} ) ) { print "*** $pkg successfully installed.\n"; $success = 1; } else { print "*** $pkg installation cancelled.\n"; $success = 0; } $installed += $success; } else { print << "."; *** Could not find a version $ver or above for $pkg; skipping. . } MY::postinstall( $pkg, $ver, $success ) if defined &MY::postinstall; } return $installed; } sub _cpanplus_config { my @config = (); while ( @_ ) { my ($key, $value) = (shift(), shift()); if ( $key eq 'prerequisites_policy' ) { if ( $value eq 'follow' ) { $value = CPANPLUS::Internals::Constants::PREREQ_INSTALL(); } elsif ( $value eq 'ask' ) { $value = CPANPLUS::Internals::Constants::PREREQ_ASK(); } elsif ( $value eq 'ignore' ) { $value = CPANPLUS::Internals::Constants::PREREQ_IGNORE(); } else { die "*** Cannot convert option $key = '$value' to CPANPLUS version.\n"; } push @config, 'prereqs', $value; } elsif ( $key eq 'force' ) { push @config, $key, $value; } elsif ( $key eq 'notest' ) { push @config, 'skiptest', $value; } else { die "*** Cannot convert option $key to CPANPLUS version.\n"; } } return @config; } sub _install_cpan { my @modules = @{ +shift }; my @config = @{ +shift }; my $installed = 0; my %args; _load_cpan(); require Config; if (CPAN->VERSION < 1.80) { # no "sudo" support, probe for writableness return unless _can_write( MM->catfile( $CPAN::Config->{cpan_home}, 'sources' ) ) and _can_write( $Config::Config{sitelib} ); } # if we're root, set UNINST=1 to avoid trouble unless user asked for it. my $makeflags = $CPAN::Config->{make_install_arg} || ''; $CPAN::Config->{make_install_arg} = join( ' ', split( ' ', $makeflags ), 'UNINST=1' ) if ( $makeflags !~ /\bUNINST\b/ and eval qq{ $> eq '0' } ); # don't show start-up info $CPAN::Config->{inhibit_startup_message} = 1; # set additional options while ( my ( $opt, $arg ) = splice( @config, 0, 2 ) ) { ( $args{$opt} = $arg, next ) if $opt =~ /^(?:force|notest)$/; # pseudo-option $CPAN::Config->{$opt} = $opt eq 'urllist' ? [$arg] : $arg; } if ($args{notest} && (not CPAN::Shell->can('notest'))) { die "Your version of CPAN is too old to support the 'notest' pragma"; } local $CPAN::Config->{prerequisites_policy} = 'follow'; while ( my ( $pkg, $ver ) = splice( @modules, 0, 2 ) ) { MY::preinstall( $pkg, $ver ) or next if defined &MY::preinstall; print "*** Installing $pkg...\n"; my $obj = CPAN::Shell->expand( Module => $pkg ); my $success = 0; if ( $obj and _version_cmp( $obj->cpan_version, $ver ) >= 0 ) { my $pathname = $pkg; $pathname =~ s/::/\\W/; foreach my $inc ( grep { m/$pathname.pm/i } keys(%INC) ) { delete $INC{$inc}; } my $rv = do { if ($args{force}) { CPAN::Shell->force( install => $pkg ) } elsif ($args{notest}) { CPAN::Shell->notest( install => $pkg ) } else { CPAN::Shell->install($pkg) } }; $rv ||= eval { $CPAN::META->instance( 'CPAN::Distribution', $obj->cpan_file, ) ->{install} if $CPAN::META; }; if ( $rv eq 'YES' ) { print "*** $pkg successfully installed.\n"; $success = 1; } else { print "*** $pkg installation failed.\n"; $success = 0; } $installed += $success; } else { print << "."; *** Could not find a version $ver or above for $pkg; skipping. . } MY::postinstall( $pkg, $ver, $success ) if defined &MY::postinstall; } return $installed; } sub _has_cpanplus { return ( $HasCPANPLUS = ( $INC{'CPANPLUS/Config.pm'} or _load('CPANPLUS::Shell::Default') ) ); } # make guesses on whether we're under the CPAN installation directory sub _under_cpan { require Cwd; require File::Spec; my $cwd = File::Spec->canonpath( Cwd::getcwd() ); my $cpan = File::Spec->canonpath( $CPAN::Config->{cpan_home} ); return ( index( $cwd, $cpan ) > -1 ); } sub _update_to { my $class = __PACKAGE__; my $ver = shift; return if _version_cmp( _version_of($class), $ver ) >= 0; # no need to upgrade if ( _prompt( "==> A newer version of $class ($ver) is required. Install?", 'y' ) =~ /^[Nn]/ ) { die "*** Please install $class $ver manually.\n"; } print << "."; *** Trying to fetch it from CPAN... . # install ourselves _load($class) and return $class->import(@_) if $class->install( [], $class, $ver ); print << '.'; exit 1; *** Cannot bootstrap myself. :-( Installation terminated. . } # check if we're connected to some host, using inet_aton sub _connected_to { my $site = shift; return ( ( _load('Socket') and Socket::inet_aton($site) ) or _prompt( qq( *** Your host cannot resolve the domain name '$site', which probably means the Internet connections are unavailable. ==> Should we try to install the required module(s) anyway?), 'n' ) =~ /^[Yy]/ ); } # check if a directory is writable; may create it on demand sub _can_write { my $path = shift; mkdir( $path, 0755 ) unless -e $path; return 1 if -w $path; print << "."; *** You are not allowed to write to the directory '$path'; the installation may fail due to insufficient permissions. . if ( eval '$>' and lc(`sudo -V`) =~ /version/ and _prompt( qq( ==> Should we try to re-execute the autoinstall process with 'sudo'?), ((-t STDIN) ? 'y' : 'n') ) =~ /^[Yy]/ ) { # try to bootstrap ourselves from sudo print << "."; *** Trying to re-execute the autoinstall process with 'sudo'... . my $missing = join( ',', @Missing ); my $config = join( ',', UNIVERSAL::isa( $Config, 'HASH' ) ? %{$Config} : @{$Config} ) if $Config; return unless system( 'sudo', $^X, $0, "--config=$config", "--installdeps=$missing" ); print << "."; *** The 'sudo' command exited with error! Resuming... . } return _prompt( qq( ==> Should we try to install the required module(s) anyway?), 'n' ) =~ /^[Yy]/; } # load a module and return the version it reports sub _load { my $mod = pop; # method/function doesn't matter my $file = $mod; $file =~ s|::|/|g; $file .= '.pm'; local $@; return eval { require $file; $mod->VERSION } || ( $@ ? undef: 0 ); } # report version without loading a module sub _version_of { my $mod = pop; # method/function doesn't matter my $file = $mod; $file =~ s|::|/|g; $file .= '.pm'; foreach my $dir ( @INC ) { next if ref $dir; my $path = File::Spec->catfile($dir, $file); next unless -e $path; require ExtUtils::MM_Unix; return ExtUtils::MM_Unix->parse_version($path); } return undef; } # Load CPAN.pm and it's configuration sub _load_cpan { return if $CPAN::VERSION and $CPAN::Config and not @_; require CPAN; # CPAN-1.82+ adds CPAN::Config::AUTOLOAD to redirect to # CPAN::HandleConfig->load. CPAN reports that the redirection # is deprecated in a warning printed at the user. # CPAN-1.81 expects CPAN::HandleConfig->load, does not have # $CPAN::HandleConfig::VERSION but cannot handle # CPAN::Config->load # Which "versions expect CPAN::Config->load? if ( $CPAN::HandleConfig::VERSION || CPAN::HandleConfig->can('load') ) { # Newer versions of CPAN have a HandleConfig module CPAN::HandleConfig->load; } else { # Older versions had the load method in Config directly CPAN::Config->load; } } # compare two versions, either use Sort::Versions or plain comparison # return values same as <=> sub _version_cmp { my ( $cur, $min ) = @_; return -1 unless defined $cur; # if 0 keep comparing return 1 unless $min; $cur =~ s/\s+$//; # check for version numbers that are not in decimal format if ( ref($cur) or ref($min) or $cur =~ /v|\..*\./ or $min =~ /v|\..*\./ ) { if ( ( $version::VERSION or defined( _load('version') )) and version->can('new') ) { # use version.pm if it is installed. return version->new($cur) <=> version->new($min); } elsif ( $Sort::Versions::VERSION or defined( _load('Sort::Versions') ) ) { # use Sort::Versions as the sorting algorithm for a.b.c versions return Sort::Versions::versioncmp( $cur, $min ); } warn "Cannot reliably compare non-decimal formatted versions.\n" . "Please install version.pm or Sort::Versions.\n"; } # plain comparison local $^W = 0; # shuts off 'not numeric' bugs return $cur <=> $min; } # nothing; this usage is deprecated. sub main::PREREQ_PM { return {}; } sub _make_args { my %args = @_; $args{PREREQ_PM} = { %{ $args{PREREQ_PM} || {} }, @Existing, @Missing } if $UnderCPAN or $TestOnly; if ( $args{EXE_FILES} and -e 'MANIFEST' ) { require ExtUtils::Manifest; my $manifest = ExtUtils::Manifest::maniread('MANIFEST'); $args{EXE_FILES} = [ grep { exists $manifest->{$_} } @{ $args{EXE_FILES} } ]; } $args{test}{TESTS} ||= 't/*.t'; $args{test}{TESTS} = join( ' ', grep { !exists( $DisabledTests{$_} ) } map { glob($_) } split( /\s+/, $args{test}{TESTS} ) ); my $missing = join( ',', @Missing ); my $config = join( ',', UNIVERSAL::isa( $Config, 'HASH' ) ? %{$Config} : @{$Config} ) if $Config; $PostambleActions = ( ($missing and not $UnderCPAN) ? "\$(PERL) $0 --config=$config --installdeps=$missing" : "\$(NOECHO) \$(NOOP)" ); my $deps_list = join( ',', @Missing, @Existing ); $PostambleActionsUpgradeDeps = "\$(PERL) $0 --config=$config --upgradedeps=$deps_list"; my $config_notest = join( ',', (UNIVERSAL::isa( $Config, 'HASH' ) ? %{$Config} : @{$Config}), 'notest', 1 ) if $Config; $PostambleActionsNoTest = ( ($missing and not $UnderCPAN) ? "\$(PERL) $0 --config=$config_notest --installdeps=$missing" : "\$(NOECHO) \$(NOOP)" ); $PostambleActionsUpgradeDepsNoTest = "\$(PERL) $0 --config=$config_notest --upgradedeps=$deps_list"; $PostambleActionsListDeps = '@$(PERL) -le "print for @ARGV" ' . join(' ', map $Missing[$_], grep $_ % 2 == 0, 0..$#Missing); my @all = (@Missing, @Existing); $PostambleActionsListAllDeps = '@$(PERL) -le "print for @ARGV" ' . join(' ', map $all[$_], grep $_ % 2 == 0, 0..$#all); return %args; } # a wrapper to ExtUtils::MakeMaker::WriteMakefile sub Write { require Carp; Carp::croak "WriteMakefile: Need even number of args" if @_ % 2; if ($CheckOnly) { print << "."; *** Makefile not written in check-only mode. . return; } my %args = _make_args(@_); no strict 'refs'; $PostambleUsed = 0; local *MY::postamble = \&postamble unless defined &MY::postamble; ExtUtils::MakeMaker::WriteMakefile(%args); print << "." unless $PostambleUsed; *** WARNING: Makefile written with customized MY::postamble() without including contents from Module::AutoInstall::postamble() -- auto installation features disabled. Please contact the author. . return 1; } sub postamble { $PostambleUsed = 1; my $fragment; $fragment .= <<"AUTO_INSTALL" if !$InstallDepsTarget; config :: installdeps \t\$(NOECHO) \$(NOOP) AUTO_INSTALL $fragment .= <<"END_MAKE"; checkdeps :: \t\$(PERL) $0 --checkdeps installdeps :: \t$PostambleActions installdeps_notest :: \t$PostambleActionsNoTest upgradedeps :: \t$PostambleActionsUpgradeDeps upgradedeps_notest :: \t$PostambleActionsUpgradeDepsNoTest listdeps :: \t$PostambleActionsListDeps listalldeps :: \t$PostambleActionsListAllDeps END_MAKE return $fragment; } 1; __END__ #line 1197 Biblio-RFID-0.05/t/0000755000175000017500000000000014373156607013513 5ustar dpavlindpavlinBiblio-RFID-0.05/t/50-Readers.t0000755000175000017500000000163714373155755015524 0ustar dpavlindpavlin#!/usr/bin/perl use Test::More; # tests => 3; use Data::Dump qw(dump); use lib 'lib'; BEGIN { use_ok( 'Biblio::RFID::Reader' ); } ok( my $o = Biblio::RFID::Reader->new( shift @ARGV ), 'new' ); ok( my $tags = [ $o->tags ], 'tags' ); diag 'tags: ', dump( $tags ); done_testing(); __END__ ok( my @tags = $o->inventory, 'inventory' ); diag dump @tags; my $old_afi; foreach my $tag ( @tags ) { ok( my $blocks = $o->read_blocks( $tag ), "read_blocks $tag" ); ok( my $afi = $o->read_afi( $tag ), "read_afi $tag" ); ok( $o->write_blocks( $tag, $blocks->{$tag} ), "write_blocks $tag" ); my $new_afi = "\x42"; ok( $o->write_afi( $tag, $new_afi ), sprintf( "write_afi %s %x", $tag, $new_afi ) ); cmp_ok( $o->read_afi( $tag ), 'eq', $new_afi, 'AFI check' ); ok( $o->write_afi( $tag, $afi ), sprintf( "write_afi %s %x", $tag, $afi ) ); } ok( my $visible = $o->scan, 'scan' ); diag dump $visible; done_testing(); Biblio-RFID-0.05/t/05-RFID501.t0000755000175000017500000000133114373155755015100 0ustar dpavlindpavlin#!/usr/bin/perl use Test::More tests => 8; use Data::Dump qw(dump); use lib 'lib'; BEGIN { use_ok( 'Biblio::RFID::RFID501' ); } my $tags = [ [ "\4\21\0\0", 2009, "0101", "0123", "\0\0\0\0", "\xFF\xFF\xFF\xFF", "\x7F\xFF\xFF\xFF", "\0\0\0\0", ],[ "\4\21\0\1", 1302, "0037", "67\0\0", "\0\0\0\0", "\0\0\0\0", "\0\0\0\0", "\0\0\0\0", ] ]; foreach my $tag ( @$tags ) { ok( $hash = Biblio::RFID::RFID501->to_hash( $tag ), 'to_hash' ); diag dump $hash; ok( $bytes = Biblio::RFID::RFID501->from_hash( $hash ), 'from_hash' ); my $orig = join('', @$tag); cmp_ok( $bytes, 'eq', $orig, 'roundtrip' ); diag dump( $orig, $bytes ); } ok( my $bytes = Biblio::RFID::RFID501->blank, 'blank' ); diag dump $bytes; Biblio-RFID-0.05/t/30-librfid.t0000755000175000017500000000072414373155755015544 0ustar dpavlindpavlin#!/usr/bin/perl use Test::More; use Data::Dump qw(dump); use lib 'lib'; BEGIN { use_ok( 'Biblio::RFID::Reader::librfid' ); } ok( my $o = Biblio::RFID::Reader::librfid->new(), 'new' ); my @tags = $o->inventory; diag 'inventory = ', dump @tags; my $old_afi; foreach my $tag ( @tags ) { ok( my $blocks = $o->read_blocks( $tag ), "read_blocks $tag" ); ok( my $afi = $o->read_afi( $tag ), "read_afi $tag" ); cmp_ok( $afi, '==', -1, 'afi' ); } done_testing; Biblio-RFID-0.05/t/readme.t0000755000175000017500000000032714373155755015145 0ustar dpavlindpavlin#!/usr/bin/perl -T use Test::More tests => 3; BEGIN { use_ok( 'Pod::Readme' ); } ok( my $parser = Pod::Readme->new, 'Pod::Readme' ); ok( $parser->parse_from_file( 'lib/Biblio/RFID.pm' => 'README' ), 'README' ); Biblio-RFID-0.05/t/pod.t0000644000175000017500000000035014373155755014463 0ustar dpavlindpavlin#!perl -T use strict; use warnings; use Test::More; # Ensure a recent version of Test::Pod my $min_tp = 1.22; eval "use Test::Pod $min_tp"; plan skip_all => "Test::Pod $min_tp required for testing POD" if $@; all_pod_files_ok(); Biblio-RFID-0.05/t/10-3M-810.t0000755000175000017500000000143614373155755014715 0ustar dpavlindpavlin#!/usr/bin/perl use Test::More; # tests => 3; use Data::Dump qw(dump); use lib 'lib'; BEGIN { use_ok( 'Biblio::RFID::Reader::3M810' ); } ok( my $o = Biblio::RFID::Reader::3M810->new( device => '/dev/ttyUSB0' ), 'new' ); my @tags = $o->inventory; diag 'inventory ',join(' ',@tags); my $old_afi; foreach my $tag ( @tags ) { ok( my $blocks = $o->read_blocks( $tag ), "read_blocks $tag" ); ok( my $afi = $o->read_afi( $tag ), "read_afi $tag" ); ok( $o->write_blocks( $tag, $blocks->{$tag} ), "write_blocks $tag" ); my $new_afi = "\x42"; ok( $o->write_afi( $tag, $new_afi ), sprintf( "write_afi %s %x", $tag, $new_afi ) ); cmp_ok( $o->read_afi( $tag ), 'eq', $new_afi, 'AFI check' ); ok( $o->write_afi( $tag, $afi ), sprintf( "write_afi %s %x", $tag, $afi ) ); } done_testing(); Biblio-RFID-0.05/t/20-CPR-M02.t0000755000175000017500000000130414373155755015103 0ustar dpavlindpavlin#!/usr/bin/perl use Test::More; use Data::Dump qw(dump); use lib 'lib'; BEGIN { use_ok( 'Biblio::RFID::Reader::CPRM02' ); } ok( my $o = Biblio::RFID::Reader::CPRM02->new( device => '/dev/ttyUSB0' ), 'new' ); my @tags = $o->inventory; diag 'inventory ',dump(@tags); foreach my $tag ( @tags ) { ok( my $blocks = $o->read_blocks( $tag ), "read_blocks $tag" ); my $pattern = "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F"; ok( $o->write_blocks( $tag, $pattern ), "write_blocks $tag" ); $pattern = "0123456789ABCDEF....."; ok( $o->write_blocks( $tag, $pattern ), "write_blocks $tag" ); # ok( $o->write_blocks( $tag, $blocks->{$tag} ), "write_blocks $tag" ); } done_testing; Biblio-RFID-0.05/t/06-SmartX.t0000755000175000017500000000213614373155755015351 0ustar dpavlindpavlin#!/usr/bin/perl use Test::More tests => 3; use Data::Dump qw(dump); use lib 'lib'; BEGIN { use_ok( 'Biblio::RFID::SmartX' ); } my $tags = [ [ "\xde\xad\xbe\xbe\xfc\x38\x02\x00\x00\x00\x00\x00\x21\x07\x44\x00", "\x00\x01\x1d\x58\x1e\x58\x1f\x58\x29\x58\x00\x00\x00\x00\x00\x00", "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", undef, "\x99\x88\x77\x66\x55\x44\x33\x22\x11\x00\x00\x12\x22\x22\x22\x21", "\x32\x30\x31\x33\x34\x35\x36\x31\x91\x11\x11\x11\x11\x90\x6d\x00", "\x33\x33\x33\x00\x00\x00\x00\x06\x00\x30\x32\x53\x52\x43\x45\x04", ],[ "\x01\x02\x03\x04\xdc\x38\x02\x00\x00\x00\x00\x00\x21\x07\x44\x00", "\x00\x01\x1d\x58\x1e\x58\x1f\x58\x29\x58\x00\x00\x00\x00\x00\x00", "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", undef, "\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\x00\x21\x11\x11\x11\x12", "\x32\x30\x31\x34\x31\x30\x30\x31\x81\x11\x11\x11\x11\x80\x66\x00", "\x32\x32\x32\x00\x00\x00\x00\x05\x00\x30\x32\x53\x52\x43\x45\x04", ] ]; foreach my $tag ( @$tags ) { ok( $hash = Biblio::RFID::SmartX->to_hash( $tag ), 'to_hash' ); diag dump $hash; } Biblio-RFID-0.05/t/boilerplate.t0000644000175000017500000000244514373155755016212 0ustar dpavlindpavlin#!perl -T use strict; use warnings; use Test::More tests => 3; sub not_in_file_ok { my ($filename, %regex) = @_; open( my $fh, '<', $filename ) or die "couldn't open $filename for reading: $!"; my %violated; while (my $line = <$fh>) { while (my ($desc, $regex) = each %regex) { if ($line =~ $regex) { push @{$violated{$desc}||=[]}, $.; } } } if (%violated) { fail("$filename contains boilerplate text"); diag "$_ appears on lines @{$violated{$_}}" for keys %violated; } else { pass("$filename contains no boilerplate text"); } } sub module_boilerplate_ok { my ($module) = @_; not_in_file_ok($module => 'the great new $MODULENAME' => qr/ - The great new /, 'boilerplate description' => qr/Quick summary of what the module/, 'stub function definition' => qr/function[12]/, ); } TODO: { local $TODO = "Need to replace the boilerplate text"; not_in_file_ok(README => "The README is used..." => qr/The README is used/, "'version information here'" => qr/to provide version information/, ); not_in_file_ok(Changes => "placeholder date/time" => qr(Date/time) ); module_boilerplate_ok('lib/Biblio/RFID.pm'); } Biblio-RFID-0.05/t/00-load.t0000755000175000017500000000070614373155755015045 0ustar dpavlindpavlin#!/usr/bin/perl -T use Test::More tests => 8; BEGIN { use lib 'lib'; use_ok( 'Biblio::RFID' ); use_ok( 'Biblio::RFID::Reader::API' ); use_ok( 'Biblio::RFID::Reader::Serial' ); use_ok( 'Biblio::RFID::Reader::3M810' ); use_ok( 'Biblio::RFID::Reader::CPRM02' ); use_ok( 'Biblio::RFID::Reader::librfid' ); use_ok( 'Biblio::RFID::Reader' ); use_ok( 'Biblio::RFID::RFID501' ); } diag( "Testing Biblio::RFID $Biblio::RFID::VERSION, Perl $], $^X" ); Biblio-RFID-0.05/t/manifest.t0000644000175000017500000000042014373155755015505 0ustar dpavlindpavlin#!perl -T use strict; use warnings; use Test::More; unless ( $ENV{RELEASE_TESTING} ) { plan( skip_all => "Author tests not required for installation" ); } eval "use Test::CheckManifest 0.9"; plan skip_all => "Test::CheckManifest 0.9 required" if $@; ok_manifest(); Biblio-RFID-0.05/MANIFEST0000644000175000017500000000211014373156570014372 0ustar dpavlindpavlinChanges examples/giphy.gif examples/koha-rfid.js examples/reset-OmnyKey.sh examples/selfcheck.html examples/selfcheck.js examples/usbreset.c ignore.txt inc/Module/AutoInstall.pm inc/Module/Install.pm inc/Module/Install/AutoInstall.pm inc/Module/Install/Base.pm inc/Module/Install/Can.pm inc/Module/Install/Fetch.pm inc/Module/Install/Include.pm inc/Module/Install/Makefile.pm inc/Module/Install/Metadata.pm inc/Module/Install/Repository.pm inc/Module/Install/Win32.pm inc/Module/Install/WriteAll.pm lib/Biblio/RFID.pm lib/Biblio/RFID/Reader.pm lib/Biblio/RFID/Reader/3M810.pm lib/Biblio/RFID/Reader/API.pm lib/Biblio/RFID/Reader/CPRM02.pm lib/Biblio/RFID/Reader/INET.pm lib/Biblio/RFID/Reader/librfid.pm lib/Biblio/RFID/Reader/Serial.pm lib/Biblio/RFID/RFID501.pm lib/Biblio/RFID/SmartX.pm Makefile Makefile.PL MANIFEST MANIFEST.SKIP META.yml README scripts/print.pl scripts/program.pl scripts/RFID-JSONP-server.pl scripts/scan.pl t/00-load.t t/05-RFID501.t t/06-SmartX.t t/10-3M-810.t t/20-CPR-M02.t t/30-librfid.t t/50-Readers.t t/boilerplate.t t/manifest.t t/pod-coverage.t t/pod.t t/readme.t Biblio-RFID-0.05/MANIFEST.SKIP0000644000175000017500000000007114373155755015147 0ustar dpavlindpavlin.git blib out docs pm_to_blib log log.print MANIFEST.bak Biblio-RFID-0.05/examples/0000755000175000017500000000000014373156607015066 5ustar dpavlindpavlinBiblio-RFID-0.05/examples/koha-rfid.js0000644000175000017500000000651614373155755017303 0ustar dpavlindpavlin/* * RFID support for Koha * * Writtern by Dobrica Pavlinusic under GPL v2 or later * * This provides example how to intergrate JSONP interface from * * scripts/RFID-JSONP-server.pl * * to provide overlay for tags in range and emulate form fill for Koha Library System * which allows check-in and checkout-operations without touching html interface * * You will have to inject remote javascript in Koha intranetuserjs using: // inject JavaScript RFID support $.getScript('http://localhost:9000/examples/koha-rfid.js'); */ function barcode_on_screen(barcode) { var found = 0; $('table tr td a:contains(130)').each( function(i,o) { var possible = $(o).text(); console.debug(i,o,possible, barcode); if ( possible == barcode ) found++; }) return found; } function rfid_secure(barcode,sid,val) { console.debug('rfid_secure', barcode, sid, val); if ( barcode_on_screen(barcode) ) $.getJSON( 'http://localhost:9000/secure.js?' + sid + '=' + val + ';callback=?' ) } var rfid_reset_field = false; function rfid_scan(data,textStatus) { // console.debug( 'rfid_scan', data, textStatus ); var span = $('span#rfid'); if ( span.size() == 0 ) // insert last in language bar on bottom span = $('ul#i18nMenu').append('
  • RFID reader found'); if ( span.size() == 0 ) // or before login on top span = $('div#login').prepend('RFID reader found'); span = $('span#rfid'); if ( data.tags ) { if ( data.tags.length === 1 ) { var t = data.tags[0]; // if ( span.text() != t.content ) { if ( 1 ) { // force update of security var url = document.location.toString(); var circulation = url.substr(-14,14) == 'circulation.pl'; var returns = url.substr(-10,10) == 'returns.pl'; if ( t.content.length == 0 ) { // empty tag span.text( t.sid + ' empty' ).css('color', 'red' ); } else if ( t.content.substr(0,3) == '130' ) { // books if ( circulation ) rfid_secure( t.content, t.sid, 'D7' ); if ( returns ) rfid_secure( t.content, t.sid, 'DA' ); var color = 'blue'; if ( t.security.toUpperCase() == 'DA' ) color = 'red'; if ( t.security.toUpperCase() == 'D7' ) color = 'green'; span.text( t.content ).css('color', color); if ( ! barcode_on_screen( t.content ) ) { rfid_reset_field = 'barcode'; var i = $('input[name=barcode]:last'); if ( i.val() != t.content ) i.val( t.content ) .closest('form').submit(); } } else { span.text( t.content ).css('color', 'blue' ); if ( url.substr(-14,14) != 'circulation.pl' || $('form[name=mainform]').size() == 0 ) { rfid_reset_field = 'findborrower'; $('input[name=findborrower]').val( t.content ) .parent().submit(); } } } } else { var error = data.tags.length + ' tags near reader: '; $.each( data.tags, function(i,tag) { error += tag.content + ' '; } ); span.text( error ).css( 'color', 'red' ); } } else { span.text( 'no tags in range' ).css('color','gray'); if ( rfid_reset_field ) { $('input[name='+rfid_reset_field+']').val( '' ); rfid_reset_field = false; } } window.setTimeout( function() { $.getJSON("http://localhost:9000/scan?callback=?", rfid_scan); }, 1000 ); // 1000ms } $(document).ready( function() { $.getJSON("http://localhost:9000/scan?callback=?", rfid_scan); }); Biblio-RFID-0.05/examples/usbreset.c0000644000175000017500000000325714373155755017100 0ustar dpavlindpavlin/* usbreset -- send a USB port reset to a USB device */ /* To install as suid binary use following commands: make usbreset cp usbreset /usr/local/bin/ sudo chown root /usr/local/bin/usbreset sudo chmod 2755 /usr/local/bin/usbreset Taken from http://marc.info/?l=linux-usb-users&m=116827193506484&w=2 and needs mounted usbfs filesystem sudo mount -t usbfs none /proc/bus/usb There is a way to suspend a USB device. In order to use it, you must have a kernel with CONFIG_PM_SYSFS_DEPRECATED turned on. To suspend a device, do (as root): echo -n 2 >/sys/bus/usb/devices/.../power/state where the "..." is the ID for your device. To unsuspend, do the same thing but with a "0" instead of the "2" above. Note that this mechanism is slated to be removed from the kernel within the next year. Hopefully some other mechanism will take its place. Here's a program to do it. You invoke it as either usbreset /proc/bus/usb/BBB/DDD or usbreset /dev/usbB.D depending on how your system is set up, where BBB and DDD are the bus and device address numbers. Alan Stern */ #include #include #include #include #include #include int main(int argc, char **argv) { const char *filename; int fd; int rc; if (argc != 2) { fprintf(stderr, "Usage: usbreset device-filename\n"); return 1; } filename = argv[1]; fd = open(filename, O_WRONLY); if (fd < 0) { perror("Error opening output file"); return 1; } printf("Resetting USB device %s\n", filename); rc = ioctl(fd, USBDEVFS_RESET, 0); if (rc < 0) { perror("Error in ioctl"); return 1; } printf("Reset successful\n"); close(fd); return 0; } Biblio-RFID-0.05/examples/giphy.gif0000644000175000017500000067624114373155755016720 0ustar dpavlindpavlinGIF89aôw÷þnnok+-+êèÚ§§¦ÎʱLM˜˜—°².üþ5FFFˆˆ‡°ª“Ûë ¸ÇÓÕHxwvhgfŠr××$îûVVUŒŽ+oiOLH-È»ªùøë655üýEˆxfC7èÝÙ%%#Ûé,ìú${‚ëíØ×Ëéìöûj:?³µEëì%ÙØzÚÙ6§š”¸¶¨ëì5íú5—¤ŠNÙÛ¼%üýWʼɨ©¹ºÇÊfXRÜêHÝÖêéÝêÊËøïì×ÌÙØÎÊ–”‰$øîùëìFÎËØ»µÊZbÈË%²®x‚„x§šªutfGDS½Æ»‡zƒ¸º½ÇM¸«©íûETRG¨©ËØÇÊ7¦.E8DÍȘª·^W×Î$ÐÕb—ŠˆËØïîø·¬¸äÝ+¦–sgYgìëW!aU.›•¦ÌÙ%÷ÿvigžš 32&ãÞ—Š—{v†£,âÞHžIåÚ¼­­®SIV÷÷ YUeUHF86EÞçÝìúWËÙ8viwª¸íêÀÝëf×Σ¥›øï&`cY‹‰–ÙÍ6ùýƒ÷ï3'##øî5¡—Ikhu¶¬4(5!÷ïùîXÎÖέµ¬¸¬]a$ ¦I)&3JRI÷îFï÷ïÖÎŒ”‹ksk ž sÿÿÿ)1&äÝ`Œ”•ÿÿÞäŽ?B9ÿ÷ïÿ÷÷÷ï÷ïïïÞÞÞçççÿÿ÷ÿÖÖÖÿÿÎÎÎÆÆÄ¾½¾ÿÿ÷ÿÿÿ!µµµÿÿöÿÿ)ÞÞÕ÷ÿæÿ÷÷æ÷÷ÿ!ïÿÎÎÅïïåï÷ÿ÷ÿõÿ)÷÷÷÷÷÷ÿÿ÷õ½½´ÏÆÎ÷÷!ÞÖÖÏÆÄðçæ÷÷-ÖÞÕÆÆÏàÖÞçïæ÷ÿ÷ðçñ¾´µÆÎÅççïå÷ ÖÖÞåÿ ÿ÷¿µ½µ½´ÿ÷ÿ÷,ÿ÷µµ½ÿ÷!ÖÞÞÆÎÏ½ÆÆ{„„)11÷ÿÿçïïµ½½Þçç­µµ!¿¿!ÿ NETSCAPE2.0!ùþ,ôw@ÿoùH° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç I²¤É“(Sª\ɲ¥Ë—GœI³¦Í›8sêÜ9P&ÏŸ@ƒ J´hGŸF“*]Ê´©S’HŸJJµªU¡Q¯jÝʵ«×‹Y¿ŠK¶ìÔ°fÓª]Ëv&Ú¶pãÊ[ñ-Ý»xóʵ«·¯ß¿[ùL¸0QÁ†“ÎZ\–ã8Žyí²#Ô d TEG!X2`*õ‰ 8fì‚'ÎAƉc³D,ç­Û¼rWÓÖ¬…“K%V0邚 ÐX)_μ¹ó笌¡p ¥ÃŸ?è1b±cÉhÝÿ¾íǵòµÓK¤­þåxZq`yˆP"Ȥ2ìÞôQ% ˆ, ØÝ€>—Ë"rtp‚ 6(= Ó /°ðâÂ'Ÿ(âÎ1¾´çáBì}HQ$‘t[kÇä@ / ÐÆuˆŒ-ËérÄ$'@cÆèòË",xB+©³£r^ÐÊ‚6餃'h±H/ºS È`Q×µqÚ#ÞxàA2јp›câ¡)žˆ{±é‘yÁË‘Éhœ@‡ÙÈŠýô££Ÿ~Jð¤“ý\@/¸Iè£&¡ËÐD'HA Ã@6ž›j…*CèLŽ£&µˆÿ@‡"xÂ*¤Ìz(ƒ£ôâ\. 0P ƒØã+®ÍéÂGüíÚ`/€ñ(m J>¬g`pïãÎ2~”(ç¨M‰ŠnBŽßœ¤º*²Îõ¢Å“'\`@.¨ë® äBïrÀŽÂ¤³»ªRK+ƒËÀÏY£ƒ¨¢JÔÀÅ ãŒ3Ž˺7©KrL¥ú!'ªSür+²¹\Ð,Â47¨Ê•¸¨2/‡  8+÷k0º¼Ü3t¶è‚² ç s¨lòÉGamѧµvK4Ë sÌÓŒÊ h¿èâg.÷Öì¤*'¬PB(#43 Ãðÿ’BG\ P²?½k?\à/¯\ ±P“ «¸ô P+·“TG 3Z»U:E\´ò3RŒãvŒ= yA*¢8)Â(öó0Öôb@ fÁ2¬ùÏ2äÅWá2ÑX1À ™!áC:ÈŠ-2(~è j '‹4Ò±ðá¶ŸâPÑÀ(“ÓLèР‰§·tµÖ)¯®Ê¾{Ž-rQ t€A"¸À8!GqâèÀ°>„/Ì7¸Á‚,ƒ¾F \à‚èmŽ¡A(„ à"PŠõº¥õìÀp@‚€±¤@äÊ_Jÿö‡µRÝâT¬àï f `Èâsr«àásžÈkŒÃ.|Á‹mÕóA а%µAE$q„最©8 ­;zÙ¢ëÇÌv„(âà ¢"Èu¥îˆ°¨@¸´^xŠÎª`–‡[0ƒâa†3<%(@ ¨Þ°€ h4ІÛ# Ô$ ŽÌ`[a­=BÒI}Ã9È“ÒMiM%Ï4žf,`l ƒ0Uˆ@Àà€••‹GÞ’AÜò!ÈfÇ8c^XA)¾P@dÂZ{ê*©™€FˆÀ–'H@s81ó]óP}ü#/ÏÓÿËü’M&|vA§Ìhæç(ÐÏ1 Èöz’ÅDЇ(˜ ì‘åü¢°Ø ñJ[(íO0˜µbŒ¤Å²iQ`@ü®ÏyÖóžM* ÀðÂTý„JPò©J"QÔ^szÑY,H²X”KÕ´_$€xrS…=Š+¦Ê°£X'–¨œ&>§ø2„ Àåô =”*:цà?ð1š¡f(>®a zR6TŽüsTFŒ"â¥Ä¥qBöDk“´JVæ¼°€rDeVÉæ4àE40)'gD#»H-d2y&5YQM´(,J{²#ÿ4^S0’ «éÙÞîJœ¥ÂY!ˆ8Hƒ70¡eQ¶O¡-ºJTž8X`.ðB#VÀŸD½b ÖÀU.FÑÛ~Üã`¾M•=A‡‰ÒA£tƒ X4dÊÈï_CvÉÔ™èµ!³¢t¡»#DÀ ‰„ ¢A aˆkpCp‚  Qh¡ Fh+9úà¬|•Árá È›^`- 3àÓ øÅ|Œ@ÑÔgÄ?`40œÂÁ¨‡kv4B`Ýt-Œ¼b¸´¸É¹E$®(Ìa’g<§½Å z°ì fÊ /V`ñ,YƒPþË“ÓÌæ6ƒÅÿÍp޳éäLç:ûÒÎxÎsÖôÌç>OdÍ~´l-èB÷’ІNté­èFÒÑÎ3£#MéöLºÒ˜ŽÍ¥3ÍéÁlºÓ Ö˧CM까ºÔ¨fË©SÍ견ºÕ°öÊ«cMë«ÌºÖ¸–Ê­sÍë¥ìº×À>L°‡íib»/¿fs•ÑÄ`ax€ ˜C^p‰x`§Æ-¨8 XÌb ë÷b¾}ì¢$»ŸYÜ1†qƒ4!mÈÀ8pÒæa1ÐÂp°‚à ¾ÆjÊm”s#vÛŽY @EÉJ]'½¶ñ¸ö‘ «Lpý¹¹5ùà2LP+g¢ÿÀÌ$ÐÖæp@îä‘ À(d5 …ÔjF€4¡Zª Ã6†J¸a¥@JÀƒ4TƒPgž`Ûñ„|.^‹,´ƒO ”¥Åb?é¢ 'èê] Sðaè…b?þcqH|9F(ƒ: à#ðF2†BKÑÌW·sâõ²:y)ˆ#ȶ%*Gl'Ô¿%‚Ø#¤ÅÄšyê DÜMŒ%L#ÎhÆ1¨a‚¤@!¤†ƒ½ø¸”ê],›Ì ¨¸0@ê£×æŸ0jF^ŽM'œ£ âGö–mаQÙæ$ ðÿt:<(?×A¨NéÞ·Å¿gÀ3JO ^˜fýè@úÖÇ ( ¬ùKƒ Å`M‡R ÐlÃwG ¸ð 0’ÀCvµi •„iî§j)i€ `-ÏÄä1pSb°,À+Ð 06”8ÎÒ©; «¤6£ðJ¨$åC'`K 3Ô° &€mæ_·¡ ïðJ s€`1¢pà@ºà 7åLà •U‚5#©P º€ ¿ ’À €s ¤@ Õ mG”ËP .°t’åpJЃ»>°$>¸ ðNc-úò ž 3uKóÿC d„Gè7Çy£+²Ð¿Ð}Ôǯ|b ¿Ð9ðÕ$ô”„HUf16 $  3 xJ×Q {Ä-/À6Ð'` 8ˆŸÇÆ·(ô÷(º@ŒhKtà(øi¨"DÿÃHȘsö$Pð ÉR½%E”[UdEÃTåÒ<ÃäÑ@30Nà0#Àps5yÐ}0AQÅ(ÇhG/4<«—OÇÀ #Á~z6k‘XðržØU(Yâè)(3f–qÔCð„H 0tÒq’c-‚Ж£4œÐ p>Pu¿p9ËQUåӈĺÿ´OüTh *‰H. @6‚=ãH&ø{.P ÐPÿC2 €Êa Ó´€ÍaUæc-Ç÷ KuSé•K»Ô“…a–b1!X™d·Y`[0Ì4G– RƇ’žØ E 4JÒ+ÀBª € µ  Ð5á$k’Õw 0y¨[$X ,y}(OÌAOœ)‘0Ä`»çghÉÙã1LZÄ2:Ð å Ö" °Ø¹ ,¹ ý0 ¨`Vù+(CO¦•±$<–;ªp˜› P «‡V5õ™b EŠy] ’ÿÁZ´ ¦â)inÆ, g >¹`ƒñ#Zü,p^h¥   ø€+æ`£ è%dÕY%öw  ™ðƒbWsз— ¢ Jöb’(gˆ„*ÕH¹Ÿ °½€ - „5#¦KN”^Ø VÀ €¡­ˆ&(ÃA±–š .À: @¬‚•â¢&ˆS P G‚ ‘d7að SfQ–2LÖj:ªgÔðòz€0~ÀRSU/Sà±Ò|PGHYb7“Ô02Ô  &ptª ÂÀ!r ÎUu[3‰ÊšÁ„žW”&å¹ qpsðsÿÕ bA€@sÉ#vOt³S[ðÃÀEGde¡~~jUzp°…&ùå–É &#°M@=¡·†ð¥à PWà0 &Í@ O`0VªîA¬Æ:§z¬ÊÚɺ¬Îz`Ï­g!­Ôš.Õz­IѬت¬Úº­ÆÚ­ÞZªà®U7®äJpæz®Ç–®êJlìÚ®¼¯òZ¬óZ¯*ñ®öZkøš¯9ʯþêOÿ°{&°ûf{°¨ƒ° e Û°Ìê°ku;±1A±»¯Ûh›±‰¶±Ë“ ±²¨I² ;²&›)«°(»²Šç²Û²zAná  à…0„grÔMvHG5ó·[qCÏ+­ÎORÓèüÑž@¤Ò‹àËYÝXÀc B5VcÖgM‰^/¢°-×3ãU¤6 ±3/41˜ cX ´ã›£ —žk ܭШM:°ÀÐ_aÚ<‘:­ Ë{ =p¹ÍDUà2Çè…ûÉ-Àèà f ÷\áí‡ß>ðŒ…ó™ ÜGÛ PzŸC5·0:„=h$¨ÕÍ@…;ÿ7QŠ–ÐaÛYÕ,}tdÍÀûå<)• ¡ô’° @Æ„BÜøbÜ„¢ ÀpZ@ŒÀ ¿ð€÷€¢·DÚ¤Si¨½þ)àu §6·™­¢z”ÓÒäÝ$µÐJXýð`O‹išÍ¤ Òûl,Õ2NoPïŒßˆ2ƒ¸Ò4¢?˜ð ÝÃ&ËP4?˜àí÷¼ZWP÷ ©0+ÏÉË|]ƒÏí PU92É€|G™`K¢Ãq1–Ã`&ÀÖÛ ’à°h0ds“'ú ÏÅ yjÃËãŒ,¦Ÿòlà@s`ö#eE>‰G^ÔGÝDŸg; ÿ€4=ã#WšqmAÈ?u¥éF„¯Íâuõ‡ðZä+T k 0MW%$ÿ ÝUv˜° Aà,?|:e޶à nØJ| Ò]© “lQÎa Ø0K¢çÎÒ Î‚cVæEµ–´ðW¬1 ¡P-Z%>AÖ× ðæíG'kä¥Ü§\ãÔY;ÖRbIE/Öºèx p 0 JüÑ Ý‚dÀ‹í%žY} ò6xw…Y)Ý~T?ih¸®Øìlm‚ñîŠöC ÃÐ Ó˾€Öòo°  ÁmÐ,' ïÿ9Þ@Â$"0Ïð(ÆÀTNu“9)o­l†Öð‚TØ1k:–N‘åè<[ NF/òt 1° dK/Ѐz•™'}ÀÙÏað]¿6|°q”>_–"Añèn*ðòFên…×פ”ðŒ˜d?À%@'° ‡ãíÛS 1çæžp9·CŽŽSd©“çÎfÚà°Ö‚ ° {00¼å[O\›2ߤl-}€8LøÏñQÐ] ž¹  ï~¤ö eñºIûE ò¡Ð3s’ÀPåãM÷#]d ±Ú-]ð´Ðª¹YŸ UÐóª0 ÿ`ï€ñ‰;ûÊ1ûcéG¥¹šl_ØGDL—ÑPp¹Õ‚0éR5øy¬t¸ ¬²êÅ@ÀA„ v€,—-V¶tqjÐA•U_€—@K'‚€lÔmàIVgrñI%£ˆFt¡¤yòWƒQýj)ä©ðD”œ&ôëYÔhÂN%nãuË©¨Q¥N¥ZÕêU¬YµnåÚÕë×®·ÀŽ%[ÖìY³bŸ:e{+ή1:%â„@o~áªy’Ó-Dk‰Ø‰ðĽ ¯8õ8qQ#‹UÙã{RW99J 1!Ê^Æ€Aa x*`¿øXryÔµa ~‡¾6ªªÍÿŠ[*xð@ÍÏ2·qü®b: mÀƒN°#¨Ù^S¥“N¨‚üpÆ™¨f±p¸¶ ÓpCc®CCTNºéª@€/‚9c>]Š!í¢.@­²šp¡•FZ#ð Éhœ¯&N.€O{Ò‹YvÜñì&CtDè$@xa‹ªÙ%Zn¡åK0ÃüRD2Ë4sªÏTsÍ«¤sËD¦PñÇšt1à¢öÅ=%k“`&:uñä;£Š<É$ûtÿí²ð€+æ£ *ŰA„©†šh¢i‹–8âhkT¶Ø4õTäÒDuU6ߌ Å`|¤³¦AFQÔ5 ç¤\ø‘ ´%0Ñ$o- x± š/yñe˜¦¼T+TRUeõZl˲6[n7t ®2ŠuÖùr1ÈØžT¹Àž ÀCW L94Qc$ €9nØ…_¶íö_€= x`ã`eª·^â#ÉEÉÜw#>J•WPZ¯ØKÑ+àh!™dœS8‚K6YÛ“S>‹:J @• Hà™È3ÆaV –xç¢bL€“°Á8!˜ €!fð dg”ùÒ)fJÕJj¨ªõÿWe¬Ë¼:k®Ñk^x†Óv€€?J‘Ä5ö˜5—>Ð¥£*téåžyÀo¢9Å좣‡¨ÃM¨ ;š¨–q¼kÈ#_Nr¬­ÎM¨"1!wˆ!& ^Ð UN¤Œ`ˆ¸€iX ‚ò>h–18Tê †…dʃ~òá+·|ë¨naF hP/@i#$2¨“¢d‰A—›gEA ‰ÿXaFhF^€/~}ö«nxR1dÎj^š9¦™:. >©`´À sh0Ò)8Œé…­v4a8hA3,¸,Og8É{_#‡ÿ<†P~~à—œ*Z,ÏͰ@J°‚? Jj‡-¤ŽÖ¥++(A¢-1éx–aB#Špˆ^ S¨xÁ 'Ø@ HˆáAJA‡&à¡ -SÈÄ.UKˆ$Jb †D3‘ˆmŽS¢Q bc›jcÔN*B%Tiäc×ÐØG@R|üã yHD ¯‰dd#yÄGFR’“„$%-yILši‘™äd'=9µO†R”£ÜÊ&IyJT6Ò”©de+û¸JWÆR–„å,myKÊÕ—»äåÉtÙK`3[¿f1©&bS™Ëô3ùÌU%šÓ¤æW¤YMlÿf³*×Ôf7³ÉMo†šàg9•INs¦3˜èTg;qÉNwÆ3–ð”g=QIO{æ3”øÔg?3ÉOt’hAUiP„“  e( ÚPˆ–ñ¡¥h'ZQŒ²ï¢åhð6ÚQú1¤#¥äGIzÒ3¢T¥‰4éJ]z­–¾T¦¦ŠéLmªÉ›æT‰:åéûjÚS 6ç§A%ªq†ZT¤¢,©KMÙQ™úTPBUªÿrêT­ÊÁ«fUUÕªT¹ÚÕ§~¬KëX‘ZV³­iêZÙÊS·¾5§q•«MéZW™Þ¯.Õë^UÚW¿ž°é` RÖ£‰U,FÛXŠ>ÿ²•ìdZYË"³™-èf'9‹¬ìq*Ë §LpƒÃ‘vœ…Žg=YÂ&úâY¨ÄжÃ( ѵ¢ à®C¸-k¹âZI*x £Ó„Á› (•|`‡*|!†m@À (À]ø¸S!®q[Ñ %qà…0ÐѬ ø>`" ÄÝÀB ¨ŠîàWI¯y³‚\I:…½É†6Òàh †¥è€°: Á*þ@€à!lð†lÓgàRR´Soœ11I¡í0„Œ0;:u#eèÃ$þ°ÃX! Æ1¨?cÕŸ–ÿc¯/¢Áƒ³]¤ nh.pŒ³ˆèâD ƒ †9øðwb•yœFRuq-È 0ݲ(Ã6°|g8 ’¸P‰(mO{ µÈxØ3›‘TÕH|@ÝI|á2(À-}@ >Ån˜`BlY¯ú›hEƒñ0€Òä÷Ò³> 7ä0 „ € H Kmj¢Z¢`ô@ІRâ àù¤ hÐgݸ®‚€`MÆ;¼-p/¸‘ðÃïü*l#vŠÉ † à€p¦G{À-ÌLW¾4.rQ(t Š=YÁÿhÀ:ð @@.‘†¨ö7Ñ9ë3Ë –PÁB¶.ˆÚèËpà$!àC{."‚ üŒß³Â6 Ú NÀÀ訤 ÈØJxPÄ2„^°º­ælão¨± mB 8°-Hþ  'è‡pŒ‹^@ txɪˆ*`[F NÌWt0º§‹#ô£ê+ˆ.,Î4ÞÊãAE©å P]M’ÀÿJY ;àB 85¡0Z-öTÓ)ºMæ”ñnZo‰C ôÿo$зkˆAhùIœÀê3p¢ŸQÄ.œðD{n%z@”§‰à:x˜ Ðâ  •A0ŽŒöpufÑ¥‹"Sc(àE0aÁ$}ÑE¨Î\p>½~’9Y ›^@Æ0"à†XøƒN¸#bh†apô34µj¿ Š ƒ©ƒ9H<7  ”È›`ƃè‡T(†h„EúÀd¸<è‰[ü°€æÉØ‚-P ûI!fZHžH˜Dz¸q•pù`À°¾è…¸€Öè€0{8IðiÈÁk,ŠQxE‚8Hÿ—Ø pˆÄ…gHnt[L%IiƒNPñ;¨m8_à…Õ¬grc<‘)îÓ`@-p=”€P”¶‰ì‰QJ?œ€°‡ñÀ²î˜YÊ׸ 7 ƒ’ ˆlÀ9ˆ3hƒj-  )a<¢8ÉIS4_(O½F(Y»³¢ä °Hš€Ë¸‡nd€WàK‹YF»@ÀÒ‚E@"ˆÈØþZf»—OȃMXw¨†™Ü¦´,¢Î¤ªµ¼É8ÑÉ~+†F°¶Œh€gÇYÉK…ØK‡<9¹Tp+Ó…¸dÄ$Uèg;‘#—ÿ=° ˜„R¨¯àб‘ɡβ¸|\.ÑtKi«„@9T Y© ×Lˆ) L:1†_@„ÔCY…V0–` 0ñt]{˜ðh P€p ZP§yš&̧Ïìé¸Äa€g0žÈðé‰ÃH9¤¤‰ïDؼ4‰B¡Áoì…$@h(ä®èð€H 8ºÇé§å–¥Ã•iËr~˜OèÃ.<Š 59—é‡ pEqœP<Üà@œÁÛLu¦[ØG©¨N†¹ÎõB¨‡°…5Š>ˆÏØô"= €ÿÿHRœ ‡*„ƒPA ¡]Ÿ;…)MePÄ›>Á>)ᑘ.|3SrÁ>HÓt€9“O@T7hð„2ЂZ<˜ƒrc†%«É4¡Ñ8¹1iC†.•U‚PH< X ZSTFUˆ~h„`0ÝtT…\ŒI= d €ÀØM˜ƒ[€…<…+ÝSXP„ p€šqÌ;sPÛé„ü”/ T:Õ£8 xÅg¸‹P…QH€\ÀAZ3\„A=£VjØøTf¢=êЛG Àl¥ i•˜ l‚.X n6m5Š%ÌîH…È…FXNðSÿ¸ …s`]†]ðT=Öáe_ð†B¸ˆIÈ>*è:ùWcK 88 þ|7—È„)¨€VœYØ¢ðF3Å:ïÈQ˜Ø?a YhÆ ÖaY}*Öhr U†iPÀ€ð;ˆLr]9™U’ÅÀȰG<Ñæ†lý\8†—#;£‚x„eà^Hâ •h°g¨Fh4ÀW„0Qp%¨½ˆ$†gèƒHI5ÿN`‰c>:À€íH ÒxòæVçWa¶žlh6g$ÖËS^Ú€ç˜çÙ³œ&b jÐS€¸’BPÐ,0èZX14ÈóT…{¸ƒ½°XK3†$H‡7„àë ƒSˆ_· îd'<ÆùÐÀï–UZe ¬ó„Gg$\"â8¶àE.QÞ¡P@ÉFh9 ¼tÞUrI‚2h?(:ø9N>Ö,…“¯žïß„TÚWìŽ_¡e%ù[Îãª#Q1ùÁÒͶG hIbð€+0ØÈ!¹ ².÷”dÀF \ðí  ‚Pb8Ëÿæêñêqq‰È…E¦¼Âea¶Îl.i#« ŠŸŒÛ…af1h8 ˆžéጰG¸Õöl€6TË›:°ìÜmbhŠÍn'^›4d¤µ_Hl–˜¶~né®Þ™ë8›aha 2¨PðßIÈÔ?@€J 2 8‚“°†à%k=Œ‰SÆPD‘€°= ÝV„c†¼“oàÈû¦5]Tžéï2c2.¡…Náµc`„¿y¡…@ €¸™nÐ³È è(ƒõŽÖ…T0€Š%îMD…Q`ï¢ñ0ñ­Vìb´ïƦ5ì|qçî©àc0Ñ8b@ÿ+xùº90íÀàÇh 0hä¿ïý¼‚>ëˆxóÔp%Ñí1¸òDqÆýGÑìòYûòñ öŠ „MxI >„Ø€n˜c€Ù7'ÇE¸U¶‡ =¬K€b™³@Êî˜Mæ~ét,¼tšï3¡€„>'Fçoç.¶0Y^Hp¡6‚R7xãËAp°LØ Ÿá„~s*h‰÷è‡UŽõ@ŸuBW2sÂõ\Gtû&i‚\ôX}ÌŽiQaæb†B8;˜(ƒgØÕ‡ ˜H€-ÀÔˆôpïæ/ÞrEùk/_wtÁlÈdÿþ´€PÙùBY€‚(Pl£ÅóZXîm˜^HF÷Zÿmfò- ¡Ž4À*…>àrZœùõw± žç²1˜¯ƒ=‚Ü=‰OŸíø… p—~X”èý΂Oyw"÷!µ§!´8 ox€Ž»>hÀŽ/‡ôñÃvtgð€¡»BA€rئ¾4Ç8O„¨…Ø¡Øïwñ§ú”:&µ8¡Qa^K†c  ¹Ê€ÑM>؇·){Ú±J¸‚+`€È‚aˆƒað/€!(°ƒü0ç*ˆ‡^¿NUfïŸ@¿GÀ‡ïT'Áïÿ±˜ñõêfþå•HhŸà†@E6ð‚8›slƒØð¶‡¡55[è`(ƒ/(@87ÇÐ`°7oŸ}Ù¨}c¹}~4tc"•Øë h6Óƒpµø‚V[¿$ÜS%@Õ…E¹pÙbåU¯Q&R¬HQÕ‰P~‰ãÔ€Á Š¥$Ä‹(ÓÄ6p¡ÛجtLað„> ÉìÓ–®_kY,ZñD™œ&ô3êôiÅ N ãuëêU?Z·ríêõ+ذbÇ’-kö,Ú´eo©mëö-ܸq±ú¹'Ž]X)¶4!ðG€ 2 ùÌe`B‡‰÷ÿ-êÕPר'd¥RèS—' 02N6( PNüb@—χ½45±ƒ>ŽS³ÒŒµ¨O‘*eªûwÅ?æ<𵌮ÜäÊ—3o–­óèÒ§«Åj­]_cü(ÈNÚqõ:Ô!pm41€)XÀK´Ð¢Õ,ÏrݰÉ*¼0W 3üp{ Ëv| =õ *bN¶Ñ¦´ãQýÔ’pªHP¤·µÿ~µôÀ2¥+ ½õÒ‘ÁårG–u—Ò­aÜÀŒÃ8ã -·ü´À*B<5ÕS}õ\1N\ñÅSúL*¢ÜtŽ5i .†±›³*¡¶üy 0€²ðÞœóSª°BZ^`H繉blñˆ7Çhc3Ì8 5äc=y²VS~¹YYiµõL¡ƒ×-—ÚH+©ç 0–n†÷E+ãÓ2.¿°6.Eölz7ëE #x (!‚sp!§/¾àeWÀ#Œ9ô~Z=õ]iŽ'Å XüîÛ2áòŒ˜|ʹd.}¹,ÒH:eûOÀàl¾›Ð ù?ÀÿC %A(‘ ^8#KÑòœ‡œê1:Ók õ®Ç¹íÁ«{.ãļè×:]¼ÎfÁ€(N ÜN~šý†‘ ¦Ñ‚ÉHÆ0¢ > +Msšó ÁÖˆ‡>ôÊ/VA NH"'<ˆÄÑŸ}¤|"aüæ§Á €`¼!—÷4ë=ï‡^tà½È9U‘ˆ=ÉEOX®^(¨Á›¨ä2š¯ +Àp‚eðÑyÚŠÔÂ(È=p“;”Ž:­™GœÈ úá>ÖAqŽR¤×$Ü€.ä*¤†!C9¨BŠrjˆ¬ØžÁH":ò‘G„ŸË¨pIàGÿ è:°²”¾|)I,:u%‰ôÜ/ÌxÆ4ºÒ|*³uó;À . 7š1 0˜Âü¦\¼ NcáHÚ«E#<Á˜cToke3éwØ#BY@D€à¡)PZ H*pœµÞA‰£h@+¸‰(€ eÂ3ž¹;M ¤U¡=EÑW œÐ ,MÊØ-w¯(ð*(-hB*ΘJï˜F3²@†C4¡ ™ÄÐ h\CtFd[?´Õ€YÒ/ ƒÄàÓ‹¡ x\‘…i‹Ü õœçõ’¦f]ÑYkÚÒëi…N°ÿð#11 á¥ʶʇ¤£ôš crásD截 vA'ð`/@ .Qbø‚N¼Ü }•Ö͆“³|Z«@õä‡eh‚´ŒHƒ@W-ÉBÁ(jOúЦL0F>ãà3éwX,qèãVv±‹^y¶¸Ò™©q³ÖÒbúV+‘0&4ñ,`,À :!€ 0à áh¦ð›Z|ÁKY;‹øÈN ¶·°í“+_æ w¾Ê…)5^ð‡@ð€Ä Ù„†´Œ½ÊZÐà&‚˜A—ö½p1 ̵~Gh½Š2œÑ b4£C¨Aÿ_þ€ÑRD¥;"ø'ºçàÜÙ1²c˜Á0†Êbj¸Çn©¯ÑZçùQOwqÞ g‡.`A‚*¡‡+àaµªA# 0ĵMHpC(àðTÃèpZž€ä«yÍ0òJõ$0·Þ%j8® j€€6dPø #{á×” § ¸oz°â×ÍŽÞÜ£¡w½Ô€Ã AïPô­}(ƒ Bð ZŸ(A¿†¡MÈÁ¹‹‘vt›_-(^B-`&UF2ºš¼À/îxа'BR`AZà €F®Õ®–uc mµ2Ú:µ~ï xÐSUü¡ÛQ¹£Ñ’ÿÆ ¨­UÑÓ>÷V¤î?5LUi4â°% aÓhÄ€èŠ1dÆKØêuŸ[Ý'd¡è²ÜýR#uH5ۼDZ: lôÁmðŒS-³Àå8È…ò‘“|³/9ÊSN¹“«¼å.WË_.ó™÷)æ4¿9Χcóœó¼çsñ9Ѓ.¨ ½èFoØÑ“®tú.½éNo ÑŸ.u—G}êV/yÕ¯®uŽg}ë^Gw׿.öW‡}ìf_sÙÏ®v §}ínOnÛß.w“Ͻî*»Ýó>N¼ë½ï¾ä»ß?HÀ ¾ð?$¼áß@Ä+¾ñ’v<äÙùÉË—ñ”¿<Ì1¯ùZ³Z~óž—ÞçCÎ΋¾ô,"½éSïÔ«¾õ0r=ìyÈúØÓ^䵿=æfûݳ”÷¾7å0Ý ÷Ä/þí|Ú+ù°o¾ó[ýè§~úÔ/½õ¯ú€!ùþ,\ÎÃ@ÿýH° Áƒ*\è'N†#JœH±¢Å‹>¸Ñ¡Ã[Ѫ5;æaÆ9bA"IÒ¤?AˆÙâ‚”‡j¨-3)£ÏŸ@ƒ½E´¨Ñ£Ã†-»1§I@HÃÁ««X³jÝz•Hˆ>üùC À¥»„íòè–[…·ÆJ·®]„´â,ƒ1@@©I¥þLº`@—U®ˆ+Æj ׯ2 ‚ J@0œ9‹ö1RÏ8°`ÝMúî-eÎÐYA jÂ6i‹IèPKU‡T‹8á:¬Õ–.`ödUžL¼¸ñãµèdØ[+‘ $øƒDÌœS-ª-Ó™ð¨÷¹¥ÃËÿO4¬d”Ò(I)Êô’&펀>:x/Nü«Ãñÿ“©rBðË~.&M6Uhp‚H€ð‚0Ì`Á-ÌÜB Qã‰çahŠ ð‡>0ð ðK½å2££_‚Z〓IpØ/‹L Êd·ÀÉŒ4neK/|@Á@?8BèE9x`Á <”€À b”pIÞ,@L3Õž‡q(&hc  Êà°¨X.Å̦Š*÷\J*Ð6à‹ä‚ M .E™ "‰ 00I NÒGñQ$+DcGXÔ0cÀ£VhÞ[gÂ’¦S,A䥽0ÿédýÐ!…ý ๼Zd1ÎÊ@0—»_H2Ybðš©v™ÙPhˆØ‡¾Ò˜Ë(³vK\&kc±X•,Ž$p V¸ä÷PÖO#Ŭ[ä/ÁåÚ­*nàÀKÐÒåGE9C‹3ê03Â^ „€cob¹\à­q1Æ)ܲËZm¹Å /Ë´0Æb á—ìçøÅ"_Ú˜_è*€©Ðko¶äÂÇLþÇ/n)s´ÅõQyÁrJ’©DÏ .4Rô=£Ä<™ôf›42ø ÙdÔá,54°E‹$43ƒ/€ÿ0%XñCdš‚PsV¸oeýF(¹ES€ €0gMÔÀH»ˆÖ4Ó¡­:Å/¾ÚRÌÁÞS`.‹så›'ˆ 3¤A Á2qlx”˜¿ÓÍ¡GDY`ü ,\‰Ss×ÏàÌ'HÁ V¿4@e ¼Â‰a”3¦ 8¯\P4Ž à‘Â.YT”\höÅÀ3f#Øßųæ¾{ïÒšé»É F N‚•eBØ€¥Èʼn\ Q¶±G0~†˜_@AR óá}xhû7¸|jn)]_ØT¿ýô" Ô††0ƒÊ`/vq§}xCÿÎ>Êéâå+š à§¬$@_1PúDH·†¸ï(̸!I´¼`À$´Ð€`LA±Šâq:A‡ ÄÀ×àÀŽð@tbhà ´ÀÄ\N (…*D0 {ÈAp’u1Q ¢‰XyâíÔHX!sZ âá¦Xdþ  ÃWÝø™t”º¸À$Ç6Š2BR+¦@Á"d%€~L ãJcá5Ôâ6ž8£ì JçêÒJĆ#UÐ!è‚ ÌóÏ̳ˆÄ-6ÉÉ÷ OC‰Ÿ ­1&ÁÐÞd&1ŠWÜòR¹H@í¨iÿ4{䟯Ђ(jñP¡fÅ`À,ÕH€ü Í@vP1   sèA ´‘ ÍÌ-'4Š‡Æ©ª¾|AbÆò '´W›…ÆPö0V^A‚ªqX5ó„B)I1d3ÞðÅ2ŠB¼’I"ãÜEš4xÈðå‚—ÎŒ*¤æ¤ŠN à6úP £ s\@‡[’6Vf˜ÀšÞQ£šbMxX/' ƒØÂEB·¢ 1 ,"P”ªV ˆN ËHìNÖÊØ…!·è ,|±‹e˜¡ Àœ$a4„㠰šô‡6 Aø € Ø%¦ªU1jgÿøb¾'9Ë[ÓOx¹5,pŒX ц0ÆÊÜF€ ð@ †€”ü¡8 ¨¼á4ƒѸá†rK¦õö¼èulHO˜Þöº÷½ë5ï{çKßµ&vëðÌ2ð›ÅÖ÷¿ô ÞQÌc.€ó¼À¸Ñ® À „0¡4Dnç,fA7q À öIÝxá P4#ŠÏ QÄÄãÅX±Ü”4‰˜  R»wC3Áàpˆ&hV­hÄ"~Ï;$ýxÅ/&– -ÌjŒ  BüÜI¨¢´MØv °5O“qàr·à±PgX0B øÙ äJ| " ÖqOÅ ù¥tÁŽ* ªª ÀBQu8ÃÎPFÿ54‘H,CÈÑúÛ>…‰ë¢ÛP±íÅüÆÜ-€Š,/4w° °à;12q{ïÓ¼ÑÀ\‘%P|eàN&G²àps$×Sr4B}UÐm00ë#NosEäsô“ AŸçJ¿pD¨0 åLúÃ;yqN'D^$µ ¼ðVÐ7’òƒÇ € 2 $á ²à ‰Ñ.Å`ñ²3 8û¡  [³’>ëÓ>¡uɶB+>iÔsv¤;8XÍà )€oAàO°ÐÀhx¾¡J7Ò²Ð';¨àqQ4Eìdå´^´ÿ""2 }°U‚ÕSà9â% ÃÀ+ € Ò` á€A" p }È Zè5.% pO¨x‚†‹hEH%7ÃÖ;Ì è $YOP 0''Ph“z…ñ*œ`‰2'µÐµ!t`ˆÀ/v„ݨÒpqvt|@A‰¡…Ð66 pR;R% ³¨ €ˆ2„+70$Ôc1<¡Bªðk4ˆLgÁ …V T0‹áØ ÍtP w4‚ ¨€`“SZ¡}`‹|r5kÀPëVUÕ+08É èEÂæÿ6VXwE¡N‚ Ê·ùäAØhŀަ íì6  wR8’Y!ɨ† UÇÀ\ÊÌŃ;È\dR†pR™ ½Àsj¸–ëÁ„ Õ”ÄaUÆ@0 Œrs{žV* Q-ë´N%l)X+à•…à°Hbð84p ¼@ ÌЕ_é•:i&êGdñåË Â@ ŒP—ð˜H ‘È/Cdƒ T  GÈ ÆPRÅr8ö) €Çö—¼El¼èxná ¼0 Þ8€~£ ‚TQñ)d ¸u049…ðœ '°ZEÿÐv°’R @™@c%~Ÿ_¡Iœò©ƒðYŸÑàƒ¤¹ ø˜VóùŸ¤Ÿ:  N~€~š ô¾Ð ŠP]bsP :¡ ºX º¡œÛÑ.°™õª0 n áp×`ë+€cuP ÑX±a:Êaº¡ë…\ÄÕ]”€¡ôAð p!›‹Á(P†€ Árà3à  8JŸÕ£yF¶ È5yàxÐ{&: >`!ЊYaU@=¯'!80”Ð ÃæÈ ØI^Š^FæðkCè¦[ñ[! Fÿ…Šu{¡[qPYhÕŸ zTã ] °ÜXptP©È…覿€ —Í ÍÐ )Зp §`¾ ¾À¶WE›ºV⇅ ªpÜ0#ñ pÆô<œÀ—2²Qhr9µ   JP1Pá~ó7ð ”ï¡Øiþø§ìÕc¼]4À+¬¯¦A34P­À'µÆ âð ÍÇH/ÕF °û± ö­Yx€-°C™†Bîê§›ê\Ô 7@¢`G+ ‰ÙÐtZÑ `8rLÔŠ°Oà*Csÿâ†7û[ÿy€ÀÓ¾ ÑP%íáše°p„."®f²5r#MB'©P C‚¨M2 ?’1=0\ÿ’ƒ›.ð*c5r0Dà† /2,N›Ý ¡''7ç¸VË ¾ r€ ÿ[@4`n šÀÚ  Œ  ¤©V<«—^*ô×Ò.A |pF¹Ðë -ö¶ÿÁ+ú¡ Pç|Ç$ñð–Å’=~—­ ˜)OnЖ0Þp ÆÆc1ÁŠ^eøfÉDð ' P>¼½t…ºQ$ {ƒ¢ºˆa ñh]uWØ ÿÓ.| Ê¢Fï-äZ±jà"eq) ò@ ÁÛ[g: 'Lð” ØzeÐ|¹Ò `¿ ¾X‚(Pˆ näà¬æCUj$ `FnB9×PF V58 „àÍ`< õc÷+Ò5¦ã*ác ‹ð#Õ4e1ƒ¬ð  ×¶pYx[Ö Vw«ä@LÉž²NÐ} ¨²uìGÄärvkÙÃEtw8²Œˆ7H©¯EÌ ÒÐ Úsºòp ÏÒ¦s†”cÅjÈ+-† öXtö¢ qÒL‘“TL.º$µà/W·“"vs°ÿ ð÷våT³–&jGPÛP—bÇDG3öGxc“ ó*× HG’û²xü ¦âÚ0i¡P‡¨ªy÷$”“ÌS+ð^0èy P  ð±p×ó¶|pÇž<}ÀPZ€ª ½,YÀÁÐ ½P ©°ÃíæVÀx!_AT«LBCê 4€²P'P§kF¯Rzsý`Æwè.$02Ñp gå-ÐŒl€™%jÊájWÁwMÅò‡ 0 µPƒxËŠÁw‹”xª  @Ç¥‹î::F5)ð ÙŇÌ(€›- öÿàªÐÇ¿À ¸À¹íö<Ĭºð ‹o.y®N\B<[ÿ2 ð=0%Z bóU5d`8g‰º° ¨ }®ÅAsÚF,7!.0  ºWs(M‘› ÐŒ´Afd?„gÆ 'r «¿q ÐUÔ™À¢ƒ&MÎn>H ¾8”ƒz¤XÁ1† R°6' „ƈ!vP¾AÐ8  úù+?¯4ÚLÃób E” ]ÓÅ248€~Ù“qNž0c“q0 à0ª rÀ¼þA/Te”á:ÄRÄÆÀ r„]Š((Ø“ìÿÇÙ }Ç$Ù–[¡ Ø`ZÄÞrƒ½ClßaELÃЫ”`p%ª`Á1 G ; É{©ðÙW¡ÇY —À°Õ²ó Vƒ_¨>#¤‹e¢È«’sƢǩpÙŠ?î ¶ßá•74 Í@ à z~3˜PÙÀŠYÀÒ#Œ4/ѧ\³SûýÅúa œ ­ðáRB>œ&”‚ßíÃW±-kâqaæñ1°0PÌcAk¯ÁÒÓmLœãˆAÛ¯º–ÛÝ<™*¦óÇÅ’ 0¤†ªÀ†qE’ÌPy4 `Èðbè ÁPLƒ4ØÿP3 €Êδ݌xávc«ÒèH.iˆv p $EÌ \À QJ˜` °¢ ý ¨ ÷ 6KtO `Æjèèžä>æ†ã´ÒM 2A  •È–“àð •p?P𡸿àI'¹v°àS,íâ8P(Ž$ë^ØèêsȈœëñõ\É0 Y@„ ¡ ¹R£°.d˜#£ðtG­½¡ Ù@ÀÙ†ð×\!¾ZK!·”˜=KÂè³" -›‹.UÕÉÄ@ WÇ‹ãlTÐ)à^à”Ñš·.P41«Ê —¾²¢09íŠ=BµÿÐ R!$öceÖ †`)?ð.¨²$÷Tæ¹/,w®i€¥‘Mg…Vï } 5ñ³6;c ²­¯O÷ 브$Y 0h·€½…« PÐ Ýg¨ÐLÇdH¯—rN6ðçWñ WUÐaÐF78îKŸñ#¹+=öðyµT”hr¿P nTP°"Žº ýg;ÄA•p¹S=×P]pà­Ô‰/°`kÑ™¨rç´0Žè¬›½Q µ9à •.;âÐÀðQk›¯ |PL"úW¡SD>+mPàá÷k4°é'|\ ÿè;)<šâA–'”Òùͧ¼€· @”Τ °‰¸ Šd°S‰RYá ܬF%z¤HFëÖA„·üøIxpáCˆ%N¤X‘â­8°Æ ð%.V!EŽ$Y2ä¾QT®dÙÒåK•]èÓæMõÎäÇ@ÕÍ—ª‚hB´cÂâ,ÃСE¨Q¥NˆQãUAšäj2 aÅŽz¢O‚\#ùÈúy3ÈŠ^ A3f ™:m˜ê_ÀP1î‚JÀ”_¶º.ù•ìcÈbéØxbcEUmDœX)”ÀŠ8~䘖̂3e´T+ËÛ×o`ر£fäà§ÿ†U3F–2òoà+5(¨Í„&xÔêœ:uÃD5_ˤ˦^z_ƒ´2 k჆6þh P.œ´Ý¬rõ . V-Gz‰<Ò¯mû•mJ ‰ Ö^?–²n@sí©…ZÆ„ãHÙ$^áN$ŠnLÚ&²²z#[ãêîƒL`!66ц—a–)pFkœ¡…¢™fÇ @ŒðJùÂØù"(@™£‡F8¤Ú褖/$!Hj`±:! +R8ff¢1³/ÓT364 !ÕŠcj¢á!€@ ˜ÙeZðbF5B¢%™fйÿ“€?þhc€2|@‚ÂÎÚ@ „0Rð&™8 =ðÓ†ÖuÔê–Ò®ÓìL=h)3£õ ašI¦=0` X¨@›cvéÔP¿B%uXb×tÀªžr¯W‹uöYho|µÍh«µöZ‹¦Åv[n¯Õ¶[pÃw\rËÑ?ÿf1w]vÿÊh)_„†‘åNqM–É7"}5¡¦]€U7*é–©Ó„nà¡&E\¨Ã„H¨™®_M"8`Žilj!¦nÑnÕ]ˆ!¦….0ƒÑ?$Y#"åòÀ£‚h’QJ¢H"éøgq\ Î8„ñà˜ ð’BֈˆnÐ É–‚±ÿã‹ x+´4<ð€—‡fAwàHúlfÑüï0ʈz`…Ÿ‚Р dŒIƒ¤XÂ6ÄXR¡‡zöù5´Ñ~5ša|ñ&”5˜ôY>À‚œô¸â5DQå$@Á£‹<´ÙÅ^˜òtY7[O[„Ú>ˆAm¼ÑfæX¹ÑäpÀˆ,3ß­nbða’?¼ à’4Žq^)T›šN"‡Ì~½Z…ØÆÈÔS¸$€ ÿ ƒöÀEjáÓ·¥›Ôp ­0ʦ†Ž¦çd²þújå% \&&eàúÒ'ˆ-íD£ n@ªP…# @@Ë ø‹BYcIlƒ8e][Y«w ŸýÐYƒZư†"(&åÈ@x 9|ĉ‹ÉE ´pµ$ȃ×á ¬ b¸D (ñm´Àp×!ÅÕD£†éƒDc< ¨‰*äâ’êË$€‰±œ`z°ÂÜþ  I|á ’hTÍ.1M¸Cš0Œ¢b65ò‘SQk €U¬Á‰.ŠÑ€>pæX'THGOÿ@A |Ì (Ô YT¡bE7°ð@8 ÀA|A _ü’uûfþü ЀpC2ÓÈ[” lQE?F±]”dÀhNP‹àˆ@Ø@Lb "€† C£€€8ÁðÆ2Ì„ªiáh˜rÓ2ÖA ô¨áéC0F¹S´c%R¢~Ñ‹E4‚3¿QEA?™– Á爲ƒ¤ Uш“œÖ&¬G~о¨FR RkÈÆM…÷‹\`¨ÀQ…(.Ð`˜u…×0‚ûh)¾x¡ 3 *v¨%ÆcÝ‚Î[ ¶–MbÁPI¹"Ðÿ­ˆÌ ЀPΑ1Æ(@ñÖÀ¥NÀe 0ðƼq—Ö`µcM!ÜS†¦Å[Èío@‚Ô°"HCB°ÄcÁYá£dA#Š àj–+¶€Æ>Ð0ÐÉÏ Ô”©>†6%H!°àŽ >ñ1Lî Ð3:ÉMpâŠ$àšÊãÐDÚÎ$¡Tc*GbuÐ]ÖT¡, Bo-@*0 *°w7:`Ÿ%¾"1ôž4~C|a÷AB êbÔDƒòF5\åC-^—]þqÁ ²F¡ZôÁBX.22àÉõÒ—Â6‘@.rQŒ ˆBÿm„Êa“à¢ø_„-LƒÎðÏ.Rœ"¾øSSò2ÿpË?ùC° þdkç%Ï+€ üÂBîMR!J‘àÂèä=RW /Ƹ0èÇ—´l€„ ºLJ%ŸØàµ€Ím´Ð_Ù‚¿me„Í}˜+Œ‚#hAKþ‚=‚¡ kœãME0=Ç!ÃäÏre('—ÌGcéÓ0bЈY“ /ÀC Qdà `pÀª,€À•À up›…à„l?‘€p[¸ìRTÑ”;Œ S®^(@±‚6 ›6úz@ (*Uh (†´À®¨`H€5„¶Kð°{>ÍAĨ@®ÈÇ—°„\!¬°TH€T¨ U…œ/d[`¨ P²–à´Oà… »FÒ¢8Œg@B¯XBÿ&d ÙcÃ’`l‰øB.\ð;Ÿp@¤j¿\0@Z€=UЀ1¼ 0J“±c³)XCúRÂ7l‰ #å*‡:d‰ˆ‚ù²…bH…{ø‰~˜È-ô9\ šË=–P7À2Ç ãx†Ú›£\ðI\ !‚ 9†L\‰X„S ‰\ªYƒ¯T0 Ü ‚C…Ñ{ WÄ¡1–±«1̸)À‹ÒE7ìEY…€Iˆn8 LŠ;Ü ]à˜+…T(ó x#D¶zÅl$BıŠj¨€À“N7ÜøCá‘Ä7| É#ˆ@YF¡-Û \ä ÿ>(ƘàÄZF-€¨Rø$`0µr‰+L `ˆz/7°‚´'ëøÀ¡±ohPBðPhƒ¢ê(°Ád$ †ŒŒÏiƒ¨X€ahÊÔð… „1Pž:¨‚` ž’ÈHwDFÍ ˆ¶VìQh>¸¦@„¸ók‰k0êBØø@™Õ(¦PÀ€ùS‰Z` àƒVKÂq|Œ +°€¤ø¡¡ËÿŠƒcð†4ÐÐ IGb¦xÐÈ"’/å’ØKõ JVÀ´š€È£¶ŒeXˆñ!ÎÕÁ f € ØI•h… ¸ƒ>€¹°ÿN0‰^àŰ‚·’€áB‘¢p‚f ¶¡°3“e “hà‚KØX2p ؃hÇ› Íåú{ˆ¸cK€[CŸ †W˜‚ûX§PBPgÀOgÀ Õø‹eˆ„e˜–Sñ…©XNP…ЂÀ8‘ ð„k„E0EÅÐ…ÁdË÷`ÈEd°#ûP¸ƒ€K§ ”h°€h˜Ø‚•)*Lƒ5(…Vt-PAàƒð9g"´À;4óì°% àŒÐ2Š@tPupR£ŠžùºÖ!X¨1X - x *0\"X‹—èYxF…¼¨ Ђ•‚ÿHú˜úÑBY ^H3ðX Å€C  è„(OEëSº•(Ë&ÚB‘Ð…E‚ Q»)d”Ø&ÿP„8ÈB¤œ{$§ÅдúBH»Rü…!•²”숆_Ñ®ýcÕp†¦œ€K¸œIa…ƒNB- PE Dî{…»cT®0hx0A8·Xž4¨†4“ •ZÏS(´?ø:‚35‰q¸/¼, ”0=´²0€X†«:ÃÉžQ[Še€‘fІÓí¨û>0«.,@àLhMk@ 8HX0ÿ’c$MÀd…bh =&3E[´^´µt‰=ê{5¹¡ë ëÑ ëŠƒ€ „؆`…"l…{Ù†šfƒ&e :ÀƒØSÛ!é<éc€¸* NX¤‹‰gœ½ê{*”…•xÂår¦‚ â5^ØHÞ¼E6<º€¨~h ¨F&ÄÞNa­iIQjH†cІSØ”I¯ ÐÊ’8:Y°Z &Uí Gõؘ€làZ’(>¨°å_<(Þ‡8Þ©à©eÞÂC€nÈ±Í ˆhÿ‚…w²+±B 048á¡ÞEØ_U@U„ê \T(ÉZÀBlÈ…A ‚˜;&LܦáÿmD[Äáÿ¾c^ÔšfY™µ!ã „Mx„9È4•„*Ðn°Å{â<$I΀/ŸŠ¬EûTè³Z(DV| 2öߨ-BÈ•C’øôaЭ „¸!}©ƒ˜)óuƒ'Hß-ìB …Aþ¤õ‹¬\ÍŒŒG6ã3ÁIŽDiã?øá„”8p-€äY"`D.Z]àƒTPÀôK€»»©#xe.ã´=ã„ø¿4â…[x€bR†ºí ‚R ÑLX4ÀœuÎ8‡;=ÿÔƒ‚3MûhãXžæH¶*XàÔ?ø`øãлd&ü7`B˜@ fgàºqƒ ‚7èƒQL0À GŒÇyË–{8STèá1Ža’ãhÁ˜–Œ¨ƒ€QÜÌñçnñ%ð8XÐl r‡´š™Ãc‡U®eDMÍ…8ÓW˜g² Þ Ú½¡;4ö²…_¨Â ‹{xÖ+ƒ#‹«ãHnu)³½–b ÿ8… ” È€m é‘€"c;QH€P@–¨¸,KÌA@¯•¸ƒ!-î†*Y€_KÆ`¸¤nQüˆk ;xå¡àj¯µUaüÙ!Ÿ‘ËŽ™p¸Vø’Oøqw›2•j-h_ÛoðåÌè•€‚UOBlh(ˆu´¸©x`€¤mc¦Ð 1€A´&0¾&uZ(¦VôYXjn­+¿Š?P9rXF->¼Ûµâ@œ Pü% s°T®u€ÿoïŠ_˜€µb€R‰b°ÞI¬¿`]•äi‰ÖÓpz§K‘ÍLÅŽ9ÝGäç_€‚V‰£zº9"Ùˆo {˜ø©Éì¿CjŒŸ¯ïó°ÐD€„D°ð«à&Š-ˆ€h@1ÿ–ì!”—×.–W^OŸn&dNM%zFÐ u4´Bº W{ȇÌ1M¬ET›`*@zŽCýˆÐg°8€€C€€àËC•­o€¤åkÖ¶.‰Ì6ú]2: P«f…©Kæ“‹Zhó|kõ ‹£' Ð¥ ý(„¸U VËSù”b)AãÃ|9×ÃÿŸ˜bŸÒSPÅ^ýV´Áµ…z€{(ÄÇ8ý‘ðÕocX€‚ö¯ÕPÿ±o·ªù"ï:ø|¶â» Õž'~œß{’Hzüè„6€‹9P„h@[ÇEuAï×Å,hð ‚QIªCˆ ÃÅêâE~ TI”„@“98Òh[plײ[*ý°Ty‹%̘2gÒ¬ióæÌ[q` àKEŒB‡škTǤU8ÁQ©ÒQàl Õøª€In0° 3à :ãÄñã'Ú´jךÝÙógТr‹öb€õ.^¥‚¢èÊgcRUA”àñ€„3fŠÿméòñY¶’'ÓÔÉs€* çrƘËnÞТ ªº'Å ¬°^ÚfE€fhИfÝbf*É’5û’2ðà•ãìz;åÕÎ?nžWÄ( ýÔEAŠ «Ûˆ±qe‰dÎh‘§¥ŒÖ-f&"ûîþ½eE˜§B÷xó@˜P0‚ô ?(ÂÇ=#! S¸–ì©°….¬ _(ÃÆp†6Da ohÀ!ùþ,YÎÆ@ÿýH° Áƒ"„ÅP¡Ã‡#JœH±¢Å‹#ÆaÈ0š ü €€˜-<,X6lXœ[0oùÙ+£Í›8sêL§ç-f&˜E‹vãR‰$ƒ¸Q³‡•Ó§P£J5ÆaCTh²£Ž¶jÑbƤEK¬Y±;Óª]ëÖ $UMêc.[RóêÝËט-]Eì*E’€< âý Ó'L?‘d ” ë¥ Él3k–‹ËŠN Pìµõ ƒ~Ye¡¢¢ /_\œ¥A²¶íÛ¶ƒ¬@@àO­6p z ’›Iþ€piL yò4™ˆ43æÍØ>.h¶3ˆR}zñÿÿÔ“,Üèq‹` Á.òð¥r0¢Æ‡$ PcF²d0à L‹u]A‘h¢`vÅádzøâÎ2š´pÊbôVÊ`Q€ 'ñÆéÕÖÏ"¹c,µÐÏGüò^‰%Ó‹' ŒrBz 1ŒD&³À \ô %Ç CM4dõÄ Z 1€}<£ 0Œ„ŒZ8Žk¬èRŒiª0É( üŸ-'¦HÒŠ%æ=(ÊxÁ"â9•K1t€šœ„ ÉQ,qã^Ddƒ…½ý„x(¢‰/¾ì2Ù” m'P•WN1&|ý’@žýt ›NÓÈ$ÿÐJ#ôRÌ„ª’™8B…‹=i*@PÔºh¯È>… 22H@Çm€-ø4P$Ô±EÖ@·ld¥¢òšl.£+¬*Gˆ‹ì¯Á¦ÈdþõL! p ô™¬Sº,âƒ'´›žR8T†Y¶kõä @4)€²·ïSäškqBÃ;ÐIm Ã5{sG¡ïª ŸŽ œg®*­HÌPIcD_”’¦*²àAÂÇHgÂL §5YÞ”:Ê@ˆ dP@GmªˆpA¾¶¨œ‹gµó •¸² $0ãLOH+|YCÝÒB[ˆ!R\¡f4ãA ðÿ,ƒÊ|ýuë¿I@…8¯ † +ü¨[ ‡¤  .Ý馞åí”"Â$™`b ¹; Ô²ó ²ØCàQá’ – VÛ䱌b)\´uÛÝd· =ÌGu"@8 CHPN.¼²ƒâÝ”™@#"¤)ÂÅ”ž¸T¥qÁ—éý1‡0OV·› ÀÀ3°³‚ ©tà}# ظ.¿0ÀDѵÚ`,ÑPŒƒÎÂÀ[8ƒÉh†&N±ƒ£|)ÉJ¤ Ò!M¢H¨Ç—\,¢V*ñ‹^ü €Uo£>X„Å"žê,¾Å`Ô>¹ÈÓ ÿS¤Š Ê KËÒ-ZÌácYÑ@9 b cŒY½À N AÅŸÇå„9ÃÕè–Â"‚–ìâ[SXÂÉÓ !Ž1EAÐÂ>ˆ?¨¢ +(AòÀ9,"/¹àd1’¡â¦@ÖŸ$ps`ÀˆŠ1‚1µ;¢ fô5b"%„4p,qদAƒ(àbhƒ*X'b>u¼c-èUhɊȲÅ$õ§§äb<Âü…=‰ž\À‹OIîc1å ®˜Á1ŽÁ ´œò §ËF\ð(¶áȦ^Œ!»Áe¥©@E½nó=Oôâ.}ÉUÿ‹˜YÊ”êjÓ>˜Ž©!3“‚€+ä€f¨A xãÇ6 ‡p HŒ–8iL|ßMÂY àqV€6v1 (EI1ó©€Äã.§èDƒ‹^ð!PY±Z‘ä§Øâÿ§ è^ŠP‚L£'ÉHÚ‚‹*ÂÇØ…c#„y™Á=3V4` ³‹Ló  ö#¬¼W9:…!(‡!@0$ˆ „J†”@Þ‰ÓÀ\>´ûÈ a#<° *Í}ÙÂvL‘33Ùæ}…@ ü Ðá¨XÖ 9‘@’I4 ˆD‘*&ð‹¬ùØ„:Á!ó¢‹(bP¢À˜<픬å"Z@Ÿ¹@ð20NyªøBb`I¤IÙ`A±Í]ÔmÜd }`På[¥ä~é$¼'3ññ+تdvÖ/ÆINµH€:Ç•€yÎPýÿøÂ‚±â$Á˜D)”ó¸àR¾î§ä)“î0T£š.°Õ…ž@äãc¡¬6zuÀÁ a±ó"Ll,r$¶é„ ö’áâ×S‰æ!ý‹+ÄÆj w(GpÔ*`ú6)Cæ/Ñt’С|—-8qæÔQ)N¨Œp3£‚ôD3påð¥NÈ å¸ê^*¶Ð6œ7ˆFSåêXøâŒiPÀâKˆ2/Òp;¡âž¸\¤bPµiÅ »,k¤#xV~PÃàæÎrNŸk# ¹æMš:p> àXݘ{#Ps‚¤¢º(SÙÓ#KÀO!Âÿ3 `LÌ|+sàA´Á G£ÀjC%/l<¤– Ég[ Ð `¡DÀpÁOÀ0rSápóÔsFZ¦C<Ä xa ¸0/>b/ªBDÐf¥q‡•>Ð D ¦cö>Š TQ Pb€ ࣠¸°%PðA2ò}ðÛvU¥‚ £#¬#[8Ò GÐ’ S¸56ô~³?°PWÂèh²³X 0÷v3Ô €@qPWf¡0Uf”° 0!A’P:@¶`€ãc¿Ð²°3²ð úBuïVtbUF»03QT…¡B{‰“Kˆ†ÿ°;sÅ H4^´PH@1hk¥& Hv€PÑ/ ðvÃ`$FˆUFgD …(ÿµuX‘GP:ìŒ(Vª QÐrºØZ0 1Ò„O¯aÜ3V`Ô“5eö ¥èIZHlá7M̤]M07à Äà ü5xÜ"y ° ŸÅ5ŸQ5°|@/?âLýc:”—+™0]|Ü£ vC`qmÆ ––P`ÿô p[Ìôot 2 Ý ˜00Û…]*06-0 &exÜœoÄ9á1‘†P/ßÃBs„ ÁЩ`ÅIã æ@w€ÿhª`ù$ªH(CuP µŠ 4@WKD•U õljqˆßbUñ1L1"l ­±%¨p­Ð¢:' r&V² DÉd´À[‘5 Ñ0 qká)÷%•WB•­l\e‘”—†X+ ‰,0 oµA `z0Ó0 …DK„D˜%RRk‡¶#‚@tØ+»(X©}€é…C´`ÑÀ‰m;Á@PU<Õ03z€âG¢cÙ§(À5]£ ’à€%‘ÅÐPaH(Û…yÀ3@$Ð@â(›Åe— 4Æ IÚ!˜+`‘u /²º…¨¾ x‚‡9 Ñ ÆŠÀ9Õ—„ÒeQG[{ו¤ PTp·oµÍ´+ãq‡©Ë¨ ®;œ @_ùwAP}ðMð€ ?bjs0u  ߨ¡9¶` .ÙàQr°Uý@+w+L€r(ÿ×Å yí»¸Á·Ád&–€UÃq†šÂR Z¸Ø+Ò@Ý€@»÷ y°  \>+Û¢™Øa—Ó+*Ø6À°=[% µ´(oæÀzr¬ññ€]rrtW¤t]Ó À²¹+Š“ÄƒO&^Ð-0¼`Àz t8b ʤ½IDª¿ö"»Y ,æÂDõ²}Ñ Ø ðobÀs- ·e…p$Ãû¢ ­µPµ.I×:ü.öC7ìqzˆ Àà} X‡Z‡@ šÑsñ3?X+[ƒX­À€Œ½¢ P€2;T ¢&'À½z¬˜H‚ÿ\@ x…wÀ`*0å:1uŒXÊ¡9£&Z@Fº (/%Rfʈµp×— ´{Ã)¢… Е“ “Oæ`pÑ²Š‡Xx€ÊCVžð|ãRÅ õG$0 „°†ð1ÐeÀ !ŠNAª''¬gɯ‚(G“ÆfãAL’5‹sà-0eT¦¡üEä9€#p¬HQ5SàéDÆ\œS\p ð0 ˜%‰e &0N \; sœ|¤Æíª[ s œ [¥ £ÀB—8 (pÊ ]Óâ Yà@Ñ€V&’$ÿåa·`$ð¢ÇxöÂöÛão {ÎÈ+½ðÏéq/°‹€''-À¤-`ª®fRÑ@ »cY¡)`sãÌüQÑ}£ØÀngð /r•{2ÂBìÝ(² <[.€cúšWq´˜&ç4¸NQE#—5œ@/;ÃÓ‡ªË‡¸` ÈÔ @mª€/P·@jä;ðw¶W†4I N øáF@¤Qá*UÓ~·½ ØB|ÁPƒ!0Aq€Õ³ÆW?7ÉÀÐ ½«*#´2»û , D2ûÑ™a¸;&«6Ý\%å Ì| ›ÀM o'ÿ@³|/UP·ô ¸½/àÐ#´Q >‰£ •v÷ Ãø1ƒè„†ÈÛRÈ3TðO¶0Û_#<“/‡ŒL²0Ëær@%ŸQhÛä Œ@¡€ž±Òo=zÁØ0õM`LõCIš&µpEM>f24D5Dˆˆ—ò£©È°U€wwkBè {Cäˆ%8Nh¥H€¢EZ’¢ãîZÊÒGÕ'3äk?¦²Øý0‚5ãú-¸R(?•œ,Y¤–wDäH¤9A uÀ%ÐAà9nàBÐSFä=À'')$Xeä ð~jÿ½“AæSxæh®·žäàHä èð’¸DÌ#Q :#kÐáqíSx"‡uZ`ƒÍIfÇŠhD4†H,(v £ÉU 6t®[zð#c£éàPaU0øxÁÛûbÊ;n€ê¬Šf÷p ”FQÓ4a% LÙ{ivàbÈ0‡Æj€˜YÑÄ>¹Àw 9|I,‚L.ÒJh1¦.í¶€ AÉU…Ä—A4‰NŽ—§‡7A–!$ †`Ï Eé |ž† Ø€ºóxVËì¨ ¯SYqÐtö-,§ÿè+0è]“ܵ.°Ð Ñ  t‚ÛÎYsE¶Ó „À  Cª *§µn1mÐ@ب#¸P 0(ßî ©æc$ Ø>ðR»¢p@þ9œËÊ0ÄÇ@¡ °@b ZË®‹¸püÓ'º°}èñ,›âî@¦0ë!3çPl¸ €µA¥‹ËDè`0÷1¡c~·ÑÉ¿> ¼  sõ” `»Ü)´%»à0`œ . 1ŽH=¢P(w5ä8¸ð +äà—½bœp*‰{0¾EU”žÏ/]^0à8ÿ#àÒ 2M Oé¯8Ä×½=Šø“ÏÞô×’”M'öP öå¬`Bóß5C ¬ ä”ê„„ .dØ0H' xÑ¢XÑâÅ[~üÜâ¨ÑãG!EŽôØQã­8°Æ 0œ­1û…ŠÁÁZ£ÓS&+[º€5` ªáÑ…'Øã©‹S‚QF‘NUØÁ.™œ,¤zTUæ¸vLXŽM˜H[2#I¸qå‚4¹1åP¾ÃúÓï@\¹‚Iè J•ˆúueŒÐÞ¾^©¤6fÜÁ€µ¬·Ñ€AOžHX`VÚbZ“¨ÛÎeÝšî[»*Yîíû×vÿLq(7VÕæ«Z»÷Ó°¢€Ž$XÃUa›°x†´ðÐ,™gÊ”UdÆe´uëº&_~#l”²UѾÝ^`.»ª’`ŠUçò®˜ó€W4 4¹a‡hê †šh¤åfn¡¼8ÎSíBÔÌÓpÓRª`€?¦øÅ'÷lK'>ýR \lA%¿Za `©B?läpG{ôÈC èD€V$¦¶cBf”:lP™,F°`! H OòñK0_õ f˜fh ÁŒ-Xá?$ñA 0ˆp-šüCƒE ñëI¦¤ª“°jpb†iŽÿ­Á8 óQH}ŒdÒe|F“:v@ £ø€s’ˆ)>û£ àâ ãࢎ(è& @EHTKè¡ÕŠÆ¶H‹5–<íh!¡8X`… þȤ5$aè2xt°£E»í(J–gš±`„.¼„?*„ˆ`†dšq梇öX~ûµpÌ|!Œ0Žc4B¨…,FÑ ™ò¦@E1 é½m„ÿpj"pÐ_øb"îKKxðºNq¤P…zAFct5ÕÔ*p„_ô•¹F7Œ9PàÄC`°ë Ã4UäZಌ£<"QË-Ú ‚R\à´€´…'PDU)§œíOŒq x,¼A·¢1CÎJÈ®È5jàÆ×ÎxhCi£JF[ðáºSQE?a€\t·ˆIÐA@`” h bŘ’´0ƒ;`õ6t"÷c~÷;•~@á°{€L"! à-6›¯µxÇBh[®Ð ’YÌ‚p\â… 6ø6$h@ j„*6ŒJSåÿ°‚SXTL·Ä¹ÃÆDqA 24Mzvá 9<\r¤ a0¢8ÀC UHb X°+rñUHÉú¥J?ø0Á¸rÉn‘€ƒ‚ (ÈB ûqÂ1h0 Œ ,xŠ´ hÔr9 »VMf\ªÃgˆìa¥ÉE@‡b ÙºJ†’Lza€ V¢˜¤\D]PáÔlÌ "¢Њ&2!^·0˜ƒVcpI/x3B0q&t/&ºhÀbT! `ƒ»%JòTN€u³Â)É|r$°Ý$ýbšWNŠÍ@ ìAÿ7r¡ °KmêÒ׳GÒø ÖÈE_Æ¥•ðoÓÔ_-¾Ð€_Û¢Gp5rPš q³›ÏîN@Êo“‹W”üÜŽðOtÁ‡ °6F“° ±ê˜”°kP1[õàŠ‰ºy9ú]†q–ôaº ‚0œL" ψ-Êaåàô£×\éÊ‘ÒZ{ï ñȵQD‘ ge‹ÖÏ $¡…#¤c„!X¨$È÷ж¦ iÔ°ø¨Õó`ÔY ¶øÅ"&@8ßã ¨9PzáxQÀ¹ ü_Ú”¤}„ýL@#îa˜Ä6f¬ Æ9PIØÁ@†Æað­p u˜Æÿõ–¼Ä/ÒÀÅ­_ g4¢$ Œˆ]‹V¤â2±¦@•ZÀ›º¿˜@Œ:ž(ÞÐàQ¼‚tÁ9X@\{©ÎHý^=SÐÁJ”‹iVS Ð*‰¸Ï•~…@[X»Ra¹ÙÂ{H½…P…¸ªbÐ…)k[† è𛸰€ñ #H‘¿•¾xó¼bEƒ³Éヘ€Ók@YH…Ç£ UÐ>@R@Tˆ † ,"#Èý$Eè(<ß#–»` —(AêD«&Aˆw:#ÂAì;Z8À* ìÁÛ¸99`à”ýA+0Š3–º˜ÿÙ ATê…£$#,œŠ (ÁÀ,]ë‡ ÈªöÐÇ» Ž ' ³@B£´É8àpü‹\Ð r¼ Xd°—³ ]€®ÿOL[(†ã¸·B³[†TÐ5þª…˜jˆW´Zø‘ ÁHE` 0+,¢]lH„è+ … ›…k„Exñ³9‹¤ xÇ"ú…Wsc€T,t‹@\ ‚Q8¤LDa§±™ÞÓl‹ x (…>ê+œäņìÇ.x´¸‚J°žýé90"ú‰s¸wLH™Ð…Á0I¯` ð5îú+&¸ƒ>8ˆ?X€€¨6Ý;›T˜„…j‚à 8«0à€¶$G^i‚¸ìp3‚ ÒŸÐ؃˜ ‡v¤ ŒÌŸè…F€ìIOÈÿ‘ti°!`‡;À„hƒ»x¤b®±‰E¤1Z¨o˜†,ø+X¶b€ø…sÈÅœLUè† P°A‹á…d o [z6Ð$Ð,È…m0]é„ ÈO×Z>ê{B±’T¨¼1ú®UЂPZ!¸hX‰Nø›‹ÝÃp!Bø/Ђ …5Xžx¹qŽÝŠ—@gp¤Š™ç‰ïó:Px¸ÉÚ €C€ƒB€s“Ý `6 ìÃlû˜À‘l>̰/(„G똵LÖ˜€1Ѱ€,H„+xPBL˜Ç Xÿˆ^pË®à€ڟΰ‚<ð€‡7¢ˆA'j•a¨† šƒ €ƒ°‚€Q(P02u ]Àµ{†\ ± ä€AÀ†øZ€¨†.I*}i´0€ ©VÈ€He…nàƒÝ5¦¨7íŠL¸>øBiÀ† ¸!ƒ0tàˆ‰ƒ>íP)®dð†ˆ´˜k ^°8xÔ@(‡gì ¸'Q€‚^8Rë†'@£ ”03¹­”h(Tì1øÂ¿Ä›@ˆ¥x†`˜CÂÊGøµŸ‚U,:pRFн_‘ÎUUZ`eˆƒÿe€‘„2(JÛ† ˆ©~8{à ä[>÷Š`H…Ó»ª`-÷À>0LÀ2…øƒ€eh”+2Ê6±d >m†5Ù‚ŸüƒÔ#ÃÀ ‡”[Ђ ©›„{¢ƒ{3ןI›Ð©øƒ¹uÏò€£ôèÆéÊ…ÿE8#8„;8\Ù]z" œ½–x„h Üª ±ðИ2¨ÙQ“øªàp­ðäƒ<Ñ‚m8%šx'ƒ3Y°‡g(4ï Š_PRÊÀ]Xˆ†é“G|C†'Á´‡/8¥¨‚$#iºÂD ¸|Þ ‰^ñ¸Ñðà…/›†P„ø!Ã൵u¹\0)«ƒ¸€£ \†D;zL€#¹ \ø\Eù°ßÙ]ñðštF¿Œ¡()¢½€W ØÛ9ÓóÍ©èÇpà©•˜TM^x€Cx’?pØ2Ùî…b¨‚/ÀžÉ+á®Ë…¼äJU\ÜÇÿ¡áüUžæ_*ø_Ûè†`È5„˜„58àŸ†:^àÝ@b^?U erIaX6ÀP¸¼m€l˜H¼¹Ž¼¦ÀÄI%6l ÐdJ¤áh°aô€D\ üÓä†\Ä’›BžLâ8P†Õ0 ZÀ_ 0§€€¶y³Lø‚Ø€½°^Pß{b€fDÜ¿àBÌÁžƒ]¨aòà]o<ÒÎ?4âyåç•eÕHK'À€ƒ:Xƒ(Iž21ÚeØÒTV(2ÖI¹}f¨æQæ_Æ/lheräæo±ÙðÎ?9@ƒmÀièÙ“'1&Œÿ8z¼Wêãƒe²ç98m ÂéÒ}îÆ~&£òlHUÈ€$hùC†f€vAþ$‰ŒhÏ{a(È<äØAêÆz~ËŽö†j`‘Þßi‰?$9ÔIñ€ØR^`†e0䘆›@0¾Ý5{]ꈊðd*ÔäÙ`€<Ž>oi}Þß,e¦X=É2¸ŸX˜ ø-5á\™&`rX‚ð>”0« ¬ €Ú„H޳î:zvjÜeëj#»uÉ] éãe…¦vê6 hƒN ,¨ ›%ѳ…$è;(¹ø;T:áœcæ0ëÿ#JkÊ€c „¢Îç¹ ä‚dÂ%À I¤ë&©LÈ€ "À(2ñÐl ì¿àpÁ°ã¼RL\·-ŠÝèíÈ^< ÖÉÇübÐü…Z.% 2qCXpÉ„ Ñ4içŽC ‡Ÿà€¶– (ã†tàƒTPkÉã?îÒ…b°‡QðãÆÐÚõŠÉ¦D°'+øšùi¹@¯)Šƒ`z=ŒÉÃâ$ùì^\*âTÒHáåB{àŸ5á~¾«â R`Çõž'>à鉛8º¶†«¨µïTKÉV3¨!³6È€_÷ñÖâ-è“"²…ÿg £¨…2N÷àw†3„ìy2&oŒ?X¡Kо9.a¡ghÑ 1í‚ V¥°‡rÈÔ!ð#– @ÿF¥I%ÜeL ;Ûø…¹ÓÉZ`€` ¾§Aèh|J>ãÿsêØ€E²_è†í¾‚Ȩˆ˜,Ë’8na™ëM`qÒBŽ>à¿ 5'¬Q°˜8é©pO[@†#ýÁ§KíìT*>Tp5îÝÁSWûd踞쒃ÿ((?þŠT9„° @á —÷±Û1‰ƒ]H-ðLô¨t›Ã5žh×Ow.4cÛ0*€‚V…>†_˜‡ Ö² ,.mNk¼‚X(ShQˆóDxÈ&ð€iPÍ{ —Zß½úéa©Y™Fˆ?@)¾\`ø'sº«…. OS`X„[ ç{ T ë„èÇÊŒ¢×àÁR’ ¼2  ´G²²cjÔ×CÄbŒ°ñ03seAÙÊ]òrh¡V/ƒ)Ì3¢Ã<&2Ýô«d2³™Î|&4£)ÍiR³š !ùþ,VËÆ@ÿýH° Áƒ*<gଅ#JœH±¢Å‹3 „ÅQ`¤HËÉ{·)޼À±i1bÔü4¼¥±¦Í›8s¼Å“§Ÿe‘¢õ¼'N´£Éª=`ÅU'4¨ÙcŒ•Õ«X³²ºÆíˆ‚ У…¶£ÑŠ-ØP§Û·p6ŒDsÙ.èý‚EšÖ¿€ Öš$ÆUz"Õ쳡Egí·²å‹Ë|­›Ó ]·•a B/ írÙœ'©ëM»¶^È(hâ´”(2t(õ‡@€9CLPVÚ²e~h¶U8ý²uƒ>!ò¤¦Úœ “(tÿcØØ/Tl«_/@ ~!ÏÚØ6Âÿ@"O—¼ìÂËd<©åe3]w]d2ÅA -Ãh“„7}€ébOiì pÂ(£ô#@? ØÌj¦¨Õ/v"X´‰qCΨœ B‹¤" býÎ .~FD.h"Èz˜`t‘Íh¨2E0À8€ˆ'ôá0Ζ‹' ð!/yº*ú0 õaX†ƒ$s ÊD§wA†/„á4ô MÈ‹DшãbÁ…'ìñ¦öÈ¢øŒ. 0: Fü÷ÒÕ OHà 0‚mpµ%h'{ÖÁÿÌÁ4­è¢U™‡a`ÌPJÁpÝõtH›N iØ@>"XP#&À$ ¡rˆÁ6üÒ½é" ¸€T¡·&>ñ*º¸eU> ð": q`tÖ÷(„C¹`À;¤Š ¡<(Á ÚЉ € [A<°@jÀ .À…5Ð=–@ÃÚȉW\àÝbO- ­àB‹dOùª‘ ÊôL ) G 6…"´±ŠÌåzª°Jú¸d¢:A+& h°¹0@#è'äK™z™e-³Â°="/P@f îì,`!JdÆŒz¢C$ !È`ÿ:¨ŒTø`¹GUŒbùkcy°Ñˆ" „¬ÈņÀY±° …¨ÑÚ“¶6ˆ¡N°š3Fê e؈¼“g"0¢ìB(š^DJr°q0¶Æ6mó. ˜ãŽ‚)€&»Ù¤bOƒ©×Dµ u¥èlP'x`:郂ô –2kwBüæ˜\ða’À^#Š¡ \@+ãÀE/´y8éPOä.¥:›~@A†¹ê… (§?Ž,ÎhF2Ðb‚Æê®¥¿’ ELIuOOãël$pºŒiVe` H€äÀ0ðæà„ò…$*Ç@2D b,à-èÄ 9$Ð!10Â5®a„ø@sÅ €*0 aì"HÓe‹ÇŒŸ@'- 7”à$ ÿbtC}9 P¬U6e{Є-ÀÀ X@2d[”x®˜Ìˆ>È2à±™ QÀE¨ÊNˆ#<µÎWI0@»Öf[`Ã4®¦[=ÀjƒjüÀB:ÑÔå…/–ñ| ¡œÂÅ3P! ì]¡XùFdQ‹Xîñ'|.èœë^”á Cç'f° ohBBAˆ‰öjXWÁäŽw¤fƒ ÍM ø’œÜ*ÓÛƒ4€„°¬ = ÊcHL 0{Û‘˜ÅC€É“hXÀ-P ¶ Nâ—v•†Ô­ˆI”|°ÞèøÐÖ¹Q P•·Äðƒ"dÿ¨Ä$ñ§¡Èƒ7¼q;0¯ZÈGð0{› `"N"0zñn«à‚˜¢$À¢g(ªì±ø¼pQŒFÌÑ]ÆÞ£ô±ˆøm6„ &í1¤Àò˜5ú€fà‚µo :hf`öÁKˆÎCˆÂöã‰v9L0/µt!‡”õcM/:¼ÿÒ_@hÓKæÀ¡ ˜Æ ¢£Ü'­î¥Ž¢X‚‚ "ÎJÅJNµ¨‚`²9‘‹àñ9äUpñ WÂjÅÙÂŽ’ÑU”& žéGØçÛ_Èž<åülPdø¢WÀ€Š„| de…5ÎaˆI ¥øÿœÄë?6±ÆK0€!¦Èg/8¡»wÆd,¢j0ÓbkÈ?:FЭý ^¦Â½^)£ ApX;àË! Îp(5 "~À 8 ð\Ð=Àè ÉPRÎàP6r07GÇÜ¢ P Hµxƒa P2H 6mÌPhÑ;°p% 9(!` 7e HØër`¡ À„¶Ñ€Àq¸`~ E õfX³ðcÁô{*Uc;ã&¢ -`^ Ð ÒãM&©pJ'på %ŽP ÷àDXa ØÄ.á”&Ƨ+¶°i ž&'å£5,ÿ¥>BÄ'bD,4E“Ðå}n„tWç-”@?Cp“¡UΠðl€%úQ _àÙp|ôˆÅ°T3• (êr*øYzÁC(õ#2HØQ†”- ã7À09ÄW0…Ê€@a21bq3 8ÔSP¸ ‹m¤.Å0lÆ^Å`K{¥Y}” Ę· cHÝCP¾X ˜Àl™†@qð’VÈ):0lÙr¨ð º 0” ö ‹„%ãD7ë˜K†µ/0§py-…R°  iÀ]“ä!SPT0‚7PÉN|¨ePˆÝS| wÿ7 °g:~¾ˆw1ð PD‘µ¡ m ; ›4 Ú`Ñð…æjÒQŒVÚ0 F Ð¦Áue ÏàJôS"leƒÐ0²t`à wë’ .¤ Ó´{77¦ ®#~´q¸Ö ^¢| P#' » ]E¡UZU†716òØ[}`L¬@pÔ.¡ç‡u¦ Åó#'Ûâ.âå ¿G£0EàäTZ˜|鉯q ï§ ;B t!dš-4IäJ`^ö°¯"Y·Hœ•.¹€\Ÿµ¡° ™² S ¶Á6d0$0 POÜy5$fb ‰yÖÿnÀävœ'Ž«÷’|¥ œµ¶ W?‰V@ °$€äoÿ–nµ{¸–"èuŽÐLêb :„n … JÐ-à Õ õŽ™Ÿ6a[ˆ;u Ô°#up ð%à1°pSV}à0xoað÷—j´  Êà c#n¦9ë/: Ä0 †Ù˜á)žjÆ8=qRödÄà›HB ;Ÿ I@ùÇ <YÝv›‰R ?&cGZ¦ÖQ¤fš¦Av(m §¦pª(ñ¦A§± xš˜»°ä§~ª(Ï!AÂà ÕÐCàf78  ™ÿPMPɱ ´ ?r›~p(š©ñk×ó<ÚÀI€Mð]0 r€!€ Ëó‡Ý QpEÓ 0  9Íð”l÷{Ø¡©cF G1Z“ Þ`PFû¡0VmDX u‚ þ‘Õ`3qR”;(¬8v›ÕèÜÓêO°FƒZ! D oP4po<ð\Õ¥ká­,Vë° ;¨“p“e 榮ZQ6˜ *zj„p ‚ŒÓ8>¢@mÑ3T‰¯q±h6ਆ§PMÑ §:1p}›.¯“zÁAvÉ º –êá„L·›¬ Øg¬6²Se¡ Ãè;µå˜#?bÉ‘´A@GZpÏP¸ U@¢À»™ ¨ð.Ï`tÜzí¡· ½ 5îÍðL $í(l½-“0U瀞¿0ÅÖÖý0 ¨`Ý¥GLp@M ÔodpÀ#âµE Î@4 )Wªà% `wÄ 0 MØ¥! ÿ œ0‘ÙRÃDwH€ÿ˜M ¬CÀèCïÈmM-ÖMŽ¡£“ 6Œiœprô²µñŒ @¾·ka ]c¼ðV9únµDŽ1|2zÑPI…À;å©€ 0? 5~Ÿ.Š8®¹P "ªpBÁð‚Ì“ ˆìëq@X„;;!&fIC QEs_ð2 ¤Ü ¯š#ÀxŒ ð“Àè#UéÊýÌœ°¹”R{½6" ÐÅFQÏq`RŽAÒÅÊÌPS²ì ÛMÓwã.´dD( N}4 Å.Òå‰^ÕsLQªpEÑÅ $00ið=BÞ(åðHÿp¬ Q þd4–°ÊƒoGžN Žl,áìhÕ€U¯6Y„)Éî*öøYIù†°ð6ÀŠöVf`X4oÀ¸€GÐïÏŽB›{tЉÞ"Nêè‹AÔ XbèÊÀ40FLO¯"Q¯Y–€î‚Á(࿎Ákð7Œ:6„27žD×›rN”v‘x”ñ³6„ë”°Ð ~€§ ”`Ó!Luð^ á8/}/U'à2!K ÄfB0¾úƒ ¬YNÈâ’G,º^ˆÓ aÊE6÷@VY÷ظ5¼ 4mxÁFÓAœ@­¯C"àPÿ€ ±>/Dð 7©ÎýÐ¥¢0>©YPþ?MP+ª|Ü#@4€º²E ÒÃ~nùxËà-ZF‹ÆË™:tfÕhÒFU?ôS¥êž„`¹l±"I²)U®T©êD¿ ´ˆp©e'\#KîäÙÓ'I[º~Ùë Š¥€ ½zæ²'âèS¨Oƒ `¡" ?@@`E lz‚*sºtúÄ…LF£E9óÓs®:œˆºòB®¥Pœ–f}´Ó x©¥M+ÎÿmÜ·¶•ÛÛwo…iëî3àÏo&L ê‹„r"=ï-sÂ"]ÓKâÊåIƒZO?bëeŠçà`¨P¶ŽÚhÐÒ;«ÙCýƒÄ‹-u¨ñŠöÖío®àªKPè#ÉX *(ŠÀ1TPÓÎ3NÔËl> M–ZT©%ÄùØ䜞‘@¾¨ŒR© 0è•,,° Ûâ((ôñÇß ò¯®â˜â—=ëå• DI©ƒT èe2[8áCK|*ékDKö:ꨕëP0&—;˜{J•6V`‹ ¦Y ™aÐaæ†î¼7‚ÚRH@üO "0É Âÿå—²³5 tÁÇÁ\&x”5U¨Êb (6VBBŒ\ðfgœa†™Ýl£åÎ8Ø 2PZtOâ b‰$å)—õ.ŠË‘³TX¨:å m`1ȶ]|F˜] ²­ >y«u[nßê±ÏBäÕWÏY¨N€";’pI]–êk ª ?"ñCÇnûõP\‹SåHr=ûæ\xY*åŽs¤¡Ôaƒø N%¼ñ¦júwcŽk½-…!(ÊL2\ fÅ\0;Šê-°I™$r f­šÀŒiIËOƒ"¨c¢‰úYµâ&™a¦Q"XA¯:¨ÿ"‡• VË©P …H XÀ ¯ '!m%‰_¸‚Æ¥‡IK™µŽ–µh¼ó–ë¶l£Ñ¤šcX€’+0h‚£D0 ˆ )œ>Jcs…&jÃ_’qiÚðd,ž¡‚!†˜Áƒ9µ‰fÕ;s´{h½c—½·HLˆd™]ª½Å„g•a&gxÑ&…È«” Uš €0\Іþ„ì-Và`§ë6ég×~{½‡® –Û`ßêšëhîÓWý~_Ïž}øã—Ÿ |ï­~üó×þû/z–Yˆ/_<Š<àq»eè‹ úŸÿø@ûÝ.€,|@)U ê0ƒ#Ñ8È÷|øÅ¼ñÍ ËÆ0´1ƒ!ÌápA(…$2à€=¦$ÆØC%Ü UH¬ÍÓ„/üÄH‡`ü¢¬8Â.Æ !ЋC œ°P %"ÐB°v¡$@h ¤iâ X‡dƒŠÄÞ Iȶ0„‹aˆ¼:%( +è„p#p£×P™ƒŒ2|áh^ÐJxÀÂP$Òø—gž²©dÈB¨aÿÌA H@môÒ3Æ€Æ2 É? ;àB4†±‹XÕ-i‘&…æ‡j¢3p‚aøIø {§ÊŠP†@0' €1 ¼jOѼ[=ó§£{ŽðŸ‚á$&ƒ¦ 5F6P†>L"@nàdtÑ ¥„Eó'´e¬c—àfJ&!ŒT¨$‘F6 A“” ` 8Fv“HEÄ”6]_—1‡ L èiN€Ë_äd¨Ú±.²qưd[`Ã4ÎY@Ú¨Æ0 —Ãl•OŒï£*Þ*¸Ž9üaàe.° ‡/FH@0f6V’èÿe¸‹Ž²VBx ÄX@ €”€i D˘ׂ訦}ÍÛ_{°‹$DÈäÐI^G¶âìÅ"!‰µ±VPÌÉ6ÄP¹Hp\ b𢙸™é ÷MÖÒj¾¸jÚ@ÝîÄ¿HH£Š@Q‰Â…'&`Yö`O×]H£Xðsê#†K¤ï`D 4@YoµÙ /¸Ø | ¼$‘cI~!ÑLh àDxC…lMX'Å7Ãé#Ø ¡1A.1†¸CV €ÌàåîªPׄ§SÛïFxE0€á[ø‚) ÿ€6,”¨”£ @B}:øâ†¿qª‚|J¾‰Ú V3!aqƽ©Eò„%‚  ¸¨°Êˆ‚ |1D‚1°Ô©ÒzJ¤[¢ >T~Y.s™Kn Àí£\"‹ A–'Æ@„€G’¹øÕØ"ô®ç¾0KSŒ&s`‘€f¡ê­(‘*DÀdÇjZ;Ò0V £x¡ -ÀÒ€†ãóÑ"Õˆ†«méX7 Éa€'$£ë‚‘ór`ÎpƒWÕæ©î;%¿ª«4:9»CÕESæ£ ¼b½ØÞ5¢ˆI¸èbà‚S:î=owåÿ¥—µ £)À£¡=ÒvO[%"0@00U\à&צ·ƒ¸SŒå@7pˆZ´áÌ€ Æ.¤›‹*Ä&°€([à„9 @ƒ}lA#Σ$¹(†"Š È»Wâ4'1YWä#8 ”9‚G¼ÐM;pÁ DIŒa4³ºÓH$fQã}ùA˾0f„•|ÁK'×ÏK#>ô„;|h„Sl=> ¨—ưx82(!?@n à SCHÁ·›‚çKÑò«‹Ø4zB‹G}BZH0|ì»GE´OT0ì!ˆóÆÛü% ’FâÈÀûžÙÃ䀉RH§&˜ƒ!0w þ ‚i5H€tøŒ+ù‚Iº€x²ŸH?¨bPk ºï˜¤F°¨«4d!=)p€^pr!‚pà¦t…OHƒwX_˜…YIôñy„p@ƒi8 ºŒr¿›„5(‡¥óÀ§˜öë¥Á0€FPAdÉ„ ˆ‘x½D¹"‚ˆ<Ç €OȃÿMX€¹RÀ¼J5¼ }q@]ék d±óú(Ž[Š#ЂJëyÓ<‡p’ÒÀ±҅wy” TŠŽ# ØÌè³9èºj #éª(í —#I’öÂ’ðpŒ ‚žÛ \†*èªæ`Gø…^p„` Hª ˜Dö8{`àÀLä‰^0€ H¬ 1xšB5Ž ¸"™pHEÉ÷Äõ ]0T(ŠJìÜ‹Š~0€:ÓB]ƒ‘…¹KF_!‚èE˜ð…aX%käñ˜/†Î¸3KX H>/]àƒ÷ ¾ÖOxGÿ• ylJLœ D{ì cЩK§†ŒA5:ü‘ìÁF]™7_ ¨4Y°‡E1Š,‘v`”DLé‡W†\@…”jYh€ÈlãŽ`h€/XÇ•H§-ðG.·9œª@yIT2ü±§ÔGtiDZê h U¨‚Ð…§Òè‡Qh`øJöj‡ïP“¨@Iað…Ù¸cã®ÄCçnª_1Kó(lÀH_ F´”¦,‰ ø…éÇØÀ^úõPÇù@I—ëœj4EZ Ìl”IqÊ„I˜æ*Ðr KÉJÖ¨{¸Ûë;£è‡8“Žž(«ÞêÂKaÿ ´¦âôY´Í;Ÿ!ÁC`€¹ª\ÐÕ<ŠLèƒ2ƒu#«JAËÚ$—ßtŠZ`€Tð‘8ƒ\`F ©µVèƒ5èL0 uò‚1HoX€d¸‘–TÎ!MCqNØü± ˜N•h"7¸›-Pƒð cáNqÒ…Âè‡è¤*‘¯’Ké°ɲƒÈÛG†ÂM bëòü$ë)”y†ÿü éP脨 x€¨ø0¸†:³!0)c°>pË©…€_ØÃé &°5i1À8P‚, h¹JZ¨•ìùž (Bÿ„ÎÐ €!ÀœÿcÈ%€€X&ú;à† rRLéÎXK€{`29'!87  oÛ8˜mhm°­ݰE€ €·#pÑ‘BMÝÇp}1_8†i¨/´á‹ˆÈ9Š Ð€ Зh€HôS¨¸Æâ=Ȳ` Cì„¶QH†]»Ì³•¶¨ m¨€Z²5PX…÷P–QÍ• €0¨H]ìQ¥d¨jpKØøŠ µ0¸J  hƒ Æ,\°Õ•`€ø…AĶ x†F‘<7Q€0"o`•EN‚Ãfœ,H„.0žP: `جÖÿàüƒ6)1ذ‘°Ã<ꊆ¨F`%hX1X–r±0 È‚vý)ˆWö† À­¿ Ÿ Éžà0:€O鉒ԂÞ„X•³h†«=Iš>xEdTÆÔäcÂH^ŸW!Ø—ã„Cˆïq9ÝXZà…À½PË‚bŠà&äÙénÈ€ž€0ìBÖ§Ju fðB(/pƒ‡VÈMh€_ð‰^¨Z֠Р%&PPc*°û7µª‰Ú á"ÖY¤´M® @šý±PGYȰÅb\¹-‰tˆ‚5„I&•€ˆëÛÏg‰ƒÜ‰ÿgx‹ Pp€°奂›ÐFÀŽ¡ƒÜ§XBåŒEиK'l}€°»V©Â m¦VÑhXh¸k-ˆ3á \†Ô_i%¥‚²¹J;¾xÑ‚áÕ;xÏT‰¸…eØ]õ™‚…ØŠ0 ˜)ƒm˜\0€šL QøHlH«•T@xÁû @(Nj1 „eÐÕZ`òù½ˆe˜¹‰z€0Ä!™7 †¸Ò Ý\„^H]xb¤$ š\PJÞ§$,GàaöŸeÎTô røfdô’€‡¬;>HÃ㚀hè2.Û€…b+À­ ¸4‡È+\pº¾%j¦ŽÅèT¼%Øeè£VѤ.’2eÐE)¯¦ à% ±Ã{”‘Ž€­Nhº¼6`ƒGЦ‡•„Öì[È0î8ß|ØçØ=ºÓ…íÔ¼µ€Lææ‰æÏæTd ;¯~î]È…E0Ä„ùƒ(„ÿÆ>ˆùžÈ€äê&Pƒ‡{Ýžø…TØßT0lž0m»Níaèfëk]áÿ¥¿b¨óª…~jtámߎßYïQ­´(-@(²žÉÁ((ê”@¯„ßÓ–ÑÔNëìnÎç)[ð:èTUƦuœ ’FÀ‘„°†C9peG>°ƒ¹Æ6`°jJ¸–…ü–Åýм­«¨ðoîÏßTé…—glX`†â)¸„:_·8`ï  ÉÄ‚ÊJ þµ6lûÙd¡‹î3Eqš†HE-p…1=”í°k-¨ã» *ûƒ¯…È‚ÿ,xŒ=Ÿ(G؈”`½Èr\¸h‰c‰ðlrŸnh†˜’03%ñ¹ò)ÐT¡Úr»ÞG €8B„=*£˜Š³¨E˜ŽÀ{ؤ ½IHþ1HYðBöÈs½;ñ„i“X†•Mÿ¸—\ð,WFÄLä@‘â "° )xÚ}´ ¸[ `¨ qd ^n¢Àf-1õ_Aõà”/È6 „[àx’ªê9ØÔ•q9ôZ‡—;8ƒµö O ㎅; É8]9¤ 0BVMGÖóíðaÁ1( †cðÍ{¦?¹.¸øžJÀ* ‚+(D—ÑqÏÈÿ§4/¤”ȯ ‘ßQ¨dtqvêxòÖH'cR€ `ÍʘóÍž¯nà=«Á†YxÕ„3p(÷ÆÌl€Y¨%¸”Ë¯ì…æîÔ˜€Æ]Ëwx3Ÿú¬î@Ò+ú8/;šÉœh@‡ÏZ”xU @wß šÒK#à%M3\`‡÷RÂ8;?¡'õédPx`"Xƒ¨x l…ƒ²X³}‹ïiá)O­ÐÜg`t ±‰/…JSè &ñÇÐô†#¶G¡_U˜€©Íi“Ñ×°UЋøƒ¸€)b–«ôF¿,|Õ ?Ao´ ÿ«èP:xÞ¹®|ÉY`ØÙd<Ïú.cx†¥HB4¥ Hð€8úrcʵ€¥fP ´è•÷´ëêסWÒ†,ø'x»” (†\XFଅVH…gâ? KQzéêÕ •*ýF%ÐÅê!Ĉ'RüeA¿„6r¼kb/("8’,iò$Ç x°àÌ™…\zôàr#µa¼¢9£åó§Ï[~†-jô¨Ÿ[J—2]g—6'sšè¤J¨'(²âÔ€Á‰ ôÂ•ë‚Æ’ª¾ú%".OZm‘ŠC®zm™•Û%I E. ¸Ó –Δÿý|ù(äÈB‘R®|”iX.^ Ùøg½qñIÕ!a?°$¯Ž‚R,¯hV㞥 »Q¹Ømq2`:­a‚%æ²728rÏbX‹™VœèÒã m:Ù2öêD­Ó‚µkÌ€?"ú`:¡êž%>!t³ÂõË÷½Zju°W,—-öÈ<™ÎH²Q/±‘6,%÷ß årÇqÖ%ô‚6ËT§TvjHS?yÞ}aË9Qô‘*@ñÌ[ºÙ’K/¹àž-ÁHp*À©e3>dË/ Èbžƒ&5’ q YÒ+  ›x@ 5‘\ØÔ†Y"e]S´Ü’ˆ}€“ÿßCÒØHGX'\0ºÉÞD¶èò * ÈÜ(\ðW-²L°ç’€]›DÈVd4€¼ã t·˜p]$Vjy©†Öe¦(LñË›åbÀ§)ÔH ÂÙž9‹¤‚£ƒ E‡%Ý¡o)÷—ßå½ÄÞ«²¢ …>ˆÇ¹¬ëº€r…6° /¤ I5ÕP ñ‘òÌ”èÉ;[TéÑN1¦êåÒ:í¤‚ßà²W¯ ¸ëÎó2šhM$ȃî3ÐÈ+/t¥–&µ°*S ýDÈPïz-öèbÿMö³»ÞFœ@ X %3ï#àú˜¼[ðÂÈÛˆè'‘oŒ¢z€‚Ú#‡ÂAèÇ £‚´+ÅÎñ–YbI'A¶àm£Ô”R&EÄ1Š.3.˜ƒ¼v ¬âÆ`iwc7º¨"rÄV'Œ@Íh†p0IM*hd<$¦¢C‚À6@@$F)È€ª‹£Õþð‡¨Âå ÇCÎ`zi]ȃ~hôÉ ‘®¼LÁ ^$cÿp×:!€?€àpSlzq¿"u"M¨AÐA‚Ô@ ‘@/à°‘ämzZú„1pc¥!_éJ  l–È h ¸|" ‚&ˆ#`c+Ò „ƒTц p 0öedL# #°B ¹IÏì³[¨À<°Çüœçç+F”é„ÑÑàâòð<¸AVމ¤c Èáå¶`†Dƒ¼àEthq3Z¼Ä3ð‚z˜Á4 ¶yÓ9½(F£z°e(Î 5hB$ÿ@€ `£¬Á3²ì€ ÛäçÞöM¦¸m»±0§/–ñ%ÐÙMªvM^û6ZX€$È‚fÐ…¬ Âä ‰’aŸ8ê¼Q âM)k]Š—Ò7Ÿõ쮞­Û-,5ÂéÔ›ÃhF2`Š€$H@À½à€Ž¦uhËËŒR:ûÙÝ‘KÑX5†'ð 7ˆpÈ‹]¥®èã-t£›õ]ª`Ò½.v)‹í"°¹­DT³+ÞñŽŽ•ä=/z¯dÞô²w(!ùþ,UÎÎ@ÿýH° Áƒ"ŒG¡Ã‡#JœH±¢Å‹ 2¸Ì±cĹğ? I᎘0jÔ–l˜±¦Í›8s>lx«1bÞÆàiÒFÀ:nŽ<ãÀª©Ó§P’+÷!Ð £+^(HS-Y2Xq˜1£Å°¬Î³hÓf\kÎpe9 µ®Ý»x£nû ®V<»E¸ð-ž† «]Ìc¤e»ü ⮺¸8-šÐO€*Q \ÎûôYƒQ"®ú]Íî1 ÈxAPTOžØ0) †97† ‹\ØÏÆÆÈ“ä³„€IeF“¶‹ ˜–Z­³k§<¡˜.[ÓIÿ#R@G•o‘ˆÁðˆTÌ, »E«~ýÄø û¹¥<9~^¼ÜRÂÐÑž]¹HÐÙvœÀÀZ\¥J+ÞB޲œ  k+„1Â4ÎÔÇŒ2dÁÖ}ôKi)‡6Y, „ €Ä'tðE_ªtÅ/¶\HZ.R,¸Ý ©p2. 0€÷4@¤‘¬ØR=0è¥Qmt¢ŠoGQ×5ØL ‰*¨‡lÈ#'<~D‚é£AÃø² ¨òEo¬‘‰g‚8Îw¤AÉ@gA6Œ.½HЃLþ’a] |ø¥_ªÔ"Â(G c̦›J³Án"À.ŒÿÂ-ÆA‹bþñ'Ða°Œ1€_sÆt¹\¢@M.FÚ’K0t0%ƒýHÑ ªP% ƒt$0Z/¨< Ê2‹mTºh6A— "! €e+aöÝGP~ºV¤§)ú*ÀžÛT.£|jðj™ôQä¥í—÷ ¢K†¹0Á¥BòQ —·öÙ( Pq¡2 V%lQA5Ç“ 5ч‘~2 ,Š ðÏ<°ùG/T@Y7”‚¬pÒ$“¼åW+ ÀÂ#ÔD•4,0.P(™ L.>Ûu8Gøpi+(PH 7DZ/DeÙ€¼8ÿ£Ž:4 6hD"0 ©tu4\mˆaƒ#Ì@‚É ÃЭÌv+}ó¦h7½†ÝGE@ÁL‘†K­;…‹= Þ³H/ÀØó҉7àdÚvéÂǺ‡fׄ ÕPc¾‰Ý|C µ‘©ÓÙBi”ØyêW?, £¤ÙLAxÄ -lîLÌeF“q ÝbañÓ¯¢3fÔJ¼7ÂG.ŒÃÌ/шõcÁÀR]œevõƒ¨ÐTSÄa€TtÀC[n ŸðdyùÚÏÍü5"AÅzÀhÀîÄ€ mS¹HÀ(ú¡=/ubˆ-”±9³ì‡W¾°@4ÿv á’¾# »ãTÀsŠ–r±ˆ x¨²ˆ ³4 z© LÆèvu}ñÊ_<Û"†8‘ ±y‘5ª@!–‡ð +(Ÿ€9pÁÉð@Ì€¸aPIB1q2Ê4"ç˜-za€ L‹Z x!TºøF툡Úh†ûŽSüŒðW%T#†zÁ€NfGwˆd†pቋ}h0€.pE¼Ø¢hE ]é—ÜQ‘†%:¦ŠND= Æ1„ñ"úýyØ6ÒpGÚ¨bBÀ2L±ÊVºRýø‚!ØAŽ(BÏ’À=<Å€bl‘ ¦+ƒPÿ‚@Bp¨7§F€”?ðÀ4¦A±ˆÅ>¤„)C˜'þ`Ó8Ú D"À‚¬.„BÀ¶™y 4èxQ°%u 4²d…5€A-ˆ †ÜsD0&>NTðRk„ ¡BYèÓ‹C¢1 ^ŒqO×d-Tä«?ô¡M,‘OH¢·s'+ª“€u.ª€¹œÒ‹ ³5’€  ÑK`¬AcB@ 1¢ÐÀ€õ\D¡ê3žò_àPåsÁ òî ÀÆðZqÉ7J@ïLEe3XCw]N,Íð€7` ta”ð†Sís4ý”,ø!,Eð´«ÃÿN!±>C†9ßê €¯)hÄY¹ƒ¦€Ã˽dËÜ™ôjA8A#D#°o´”·¬9¢@rÜ!G%(ðÐ…ü51Ëfs׋™åÍnóóƒ/Žá EÌ¡ˆß$@æÚK§ä¢ûkÀ…ø8CF-Ê‹h0ÃVb¡Ï(A×>в÷ÂgÁ}Ÿ@² M †-À ¸œ˘¯»aøÅ0Ö‰ªiáÛøÆ9Q‘ŠÞ'HøX *±‡¬‘÷Z Õð€ ” €èÈ( ¨‚ºa‹'r Qð<ÃÇ-( †6”BÚŒÇDNóD|l§ehCÿ)BˆË„Û€)ýu§1± €ËMØÁ ˜êŒ[t.›±U3‘u8G1`…4Ê­[‚µ¸P,ª´”Bœ%‡ D3PÔŒ 8pBf@ m¦nd¹&Mj¬hÂÂ"2“9ˆcCjP÷¾§‹STZ Àòl#Ø QsU ¬†TcÌËÈv­a¤+† #ÑptxM1K} ©XICn”Á WA^`†X ^Å9¾]¼mÖO¢ Ђà`4ñ\ r#\' AÿòØWX9¡i_öb3]ýÒ ‘…da1v$€ ;ÿp ¦I :Ù "Ê]ïû Ì!Fqƒ P»¨0Ø=µ×F/€áØb¬%q‚Z ÷`ªB1rqðMµ;Ë;ðx+ðŽøb ¡uúõ«>¨ô)΂–´ðÀ Ý—¹Æy>Õ ¼ý\3˜*ð M®;/¶†¦°­Ó€óÊÏçÔkÃ>÷_ß´.€i=ÝKª8&€ r“&ï ºÇxëý‚c,tax€1YÐ0h @jð€aìÂV ®Ï{w%ö‰ìëfg€º“4ìecppP¼àνŒÂ$.ß [¸hPÖT<£âQ1ÆÿîÀ®6 NPBšA g˜ù‡,–jм…w(Çw˜Çsà$¶#°%R/¬5  ÕPm¥æ2Ñ` `Z×w OÔ¸  «!] ÷wá±6ðgpFðô¢{ÉÐ Ñ@YðW#ås²Ð<•tSl— )5þ§™÷RÅp½Ð p&÷,J@À^›ch¯–xôC…üÁ£³ »À PM@"]X QWQ  ¨ :(°cOƒ Z)`g~R4y§±Y F Gp" ð?GØI7TÑ 6U·÷C;¤ ¡eM tàе 8Øp È ?7CÙe~çœd|bð˜ÃÚB…øx©ä3½p]¹@2À:Na {°G Ó7bA  Z  ŽàS  .Ô @Ž¶ÐŽÔ+—à-/höóx‚ iÃJ¹(UÀÇb ÿ‰ÀqØõ="RÖÐwðMÚA5/ d@~e¿§cQ¥ï•7R(…Ìð7$ð„O àý "…œ°[A“y ä´n§÷(Ã%T÷Ä“oÕ%àÍp`íÇ‹}Ã7b€¬u(y3§z$ðÈT=¶À FXY{çBEœpF塲RÝ‘.¨ NGL0TOQT—§æx`¦€Õ & ‰Ö\¦d ½P“© 58‹W$œ°™~è%©àˆc¥Y¹Ø…°RP$‡V#h)°ÉpæP‡–‚(ÉoÊQ3‡± $4›¨2dÿÉ[ö@¸0£ÉLMÐÕà òbðwfE–7ýVX¼  3·¥‡xa]/yÃòçY Ó&ó¶ Â`:†kõÙz“ Ó`3P[œåÃ=G°^CÈ ÌôM 5`$@Ó@+ç zàdÐ*“¢Ó0 B¤o,‚+Q¥š?¶ E¤åQ]9 PÀ 5™ý €i°;?·Â9†4ô2:ôéZòÙ£^JNÙc®YQ5ó¥f cAv¦jº^/dmJvÒ:vkZ§j‘¦]êcšÀ à JÕÆŒ vZ¨9±{~° Â@ ¾ÿÐM;‚nð`I…Š Œ 2‚§†ú©» Ì!DšÐöEP ’°_ÐÐk`• 'óÕi  ëà Ã0áChª7¶ Õ  šà `# PÐ&>Ï@Wic !peÀæ÷8Ð }£{£S¦ÀJXu ­Ù8S `¥ àZŽuae7Å/`-°ó¡£Ì®0’m‘m¢ p2µðe`ðDà >0 ä 9À~º‡44Gs°Uf1G[þzŒ¶“1 »öÂ3t›Ç¿–Ø2ye`SBƒ, )ÿ–wTD'a~%°Þà »š^tôT›¼2 ¹V²yAEžæBò;u¡ P@ot6y|pX" g€Zfêñ y° ©å šÀfE‹¼â›b ŒåXB¿y0dÓ;…-Bà ‘z~ б¯ùŸ¥Ô{ŸÊ Õ° mK‹á‘ ö°}_òM'0 }·°MÑ XàgGÄGað)À”†æPS[[X¨z¼ð„R‚pæö)Òå Ž»°¶  ~"ùÊ ;då­ A¨gúoÖH+ jÀŸw‘pFœMñ Ñ"!ô äx.¶p”4¤!‚¢èÿ@ ¤…x€3°Ä ñãš&àAÆ£8†/Ñ ÂàðÖ "°|ðº‚$ —]MBÏRtª Óu½uAÕ¯w0‡ `(HЮ(€«PH½‘CÐÔÔ¦ˆZ'ùâ±2wf6z0Dñ¥Ðrà! Ðl'¯°(K[t˜2À¢vWqÝó ùÄT ¢À«Èu±j˜P ÖsðÁïÉ£ò«ËÀ ËàЕp1 –€ wÀ)”“þ»K’ ¸)Ö` PžÚÑ t ìÀDQd D° vдb» ðfÔà9àÿ #d'}ðB¸@Ìxý0 P@‘€G§q©HÛ‚VDi“rµx÷É^Ò!S»ðš h`(žÑÀòa+9š‹l<K Xâ“ ¢ð!Üà , ÁÀ½ÃutqŒ* ·ä²© k¬ÊiCEV”îrx´¬x‹×¯Wßɼc•ˆTŽ P`Ä3!™ä3ˬ¢wº tÄ Á ÍSAd0€ °º¾{4ñƒ4ËuM3“/¹<|¨òƒÄ¤ t eäÀŸ P<¡gÃ, óË Ò;%ZÒ ØóF¢‚ :xãE¤ º:ˆh±/,Œ>“ Ň]üÿè¼1 Zpá` 0˜Û1ºˆMkÇ­à: œN! qç²@gçèðÂ0:Â{އFÜÎ3Ó¼àÑ ÄJ€xT> :FG0}G ’ÊÙ £ç3hÊÚ¡y–{wçÒ ‹¿Ü !I`)Ðɰ º¢ø‚±S «€ÃÐoÅOuP¹ç ²«‘p ;€GWØ\Ð': )A@²3œ!OE³£p¸iTð[¶[l1+Õ°.`’P•Þ¦ Éð!‡ª¶¡,È ‡–4´z~&:´l€ôs+/vÓ9{󄨭ú5öÿP<¢"µP¹fÔb… ¿ÀttÔЋ®¯æØb`€C? ûÃ8½ë80 j0A OÀÚà €"e!ÝØ…Ì0?õs…ß Ñ éúª€Z°­ýð ’™'0ª7V´ƒ,‹ÀSÖã $ýÐC0Ç8# á“ø‚ À€D<Á "(Ÿƒ!¤@Í`4 !R•AK›þ’A aÌ€(ÉIdñ„CD0!ÇÊàÀ“ÀCº( Yd‹aÒ*Yœ[P±ð€7œ€æÿÐdp2ˆp5¢p ÙH@ òØ 3Ȫ¡ jÄáÂ[R=Ÿyχ´1Ú`D.€˜® nx‚Õš¶-#ØJAÂàz‚jðB¢ï³'> Ɇ,C PG“ ÁnàÀAµÕ d *ŠÊ—Œ]ðb7ò› E/‡HQ^³ÐDÆ0‡æ$î–2ØCIMÚ4c@ãXÃ$„éµ-ÀÀÉІnœEÙô¦à@`º?¸ yçQ‡RV¡Hƒ{ ÀWU„dej‹)¥Õft³@â‚p‚Iô¡ÀÐ…ÞÌŠ&\ Cw„lþ€äàÿviË]òG­šâ•‚\F_%ñ4ØaC˜D Êð 9vD¹(†Ð8›<ö„h†Z$—Œd #PLF<—4fBD³Æ‹Ä2à±ö@)  ÐëM‚e€•j]"`@AýˆNd›…d$G)àB  †@ ÄÈae§eWWhÅÝ_ ‚#¤Ö%¸ð„R#‚ £°µ…-z‘-äh2e$qZšD|äñ 6hƒ)ÈË2ä©ùb޾~Hn?( ß ü£ØŽ:`lp(âøÅšZ¬#U¬  ¤# &2PPp«È&¶¶ÀaiBŒÿ€'5¬â¶Ý‚‡É=Á‰µ¥ `4 ÁÜO§^¢ L`TQëÇŽ »„܈$ù‡B}¢΃‡È Ü¶]ìb% ­•Sf ]PÐ@?´€Šõh¦e'`ÀzmÙ‚@°ÃWO‚€t;ã'5@Œ¶Šà³wž /ÈçI”!Í)3…'. àVU¦P†uYa D8`t8Áãøè‚ÞQƒÑ0r¶Ø O“Ú!¼¨ÆžI«jëâBù‰5&°ˆlÙ:(!À‚:8€âÂ-pÆ0(Ç–à çÃÇ`|µÊ‹dDÕÐVm.$pcÚ”9œ°¶Ec \¡Í’ìZÿðà„XVÚð&tY­6ˆÕ÷ðKëÚßUQ…,Q]”pC°‚< QÈ]|ó›fÚÔ}l¼E &YŒ×[ Ôæø úq‚ÈB%29Q¤¡‹`”1[£É Â`>™>*ÝÌZÒ-ª¼ÆÁ·ð¬r~X{óœ*'°ª¶ôÏ€¼èÖø…#.@‡A< -˜ÆÂ£A‚£-`D3ü> DäI1O#ÖëÉ–®£Õ¤aWÍ ñŒ–úö t-ðqç" }˜D«âô±$ÞøisFcÝ!áA˜L*/"Æ@Ú ÄC«ÖV.vÿÞøTpB(¶UTî› ó~(¸@ºD¡£Ì–WÀCL¢ :hAN=y XPBMµƒ`ÿÂãD£‹ô@ ¶a/E,išïÅ>•ÈAø¢90«\Œ|ú>Ör-X£¨ PQ0³È9hx‚ø¥h1x+¨o8†yñ…]°;s’‚/ŠÈ að†! %ÄA¡ †_@0©`4(Ãz‰\H…ûÉüÛ?4Ñ……d€`š–0†,c€Äˆš pƒà† "0,È€ÒÑ# ˜EÐa8£T:? 2¡Ô†kBëIÈ€rè†]"‘^h: ‰ÿ¸Ì#мÁ›8à3)[ø…x¾û#Œ(…/8‚_øºQ+,ðî³0WØè¡M¡Š  JŽäIŽÙ‚ ؆4´Žb˜€#)X‰þ°7î« ²B³Ò>˜‰ƒùƒ~è€2Q»ÃJ(7˜U€³ø„1Hw_°:ã0!jð…hè‚ è„Lø#+A044ÉÃÅëñ >€]¸7àcÅÃB…¸› ì“hŠ¢û²`h€@¸½®1”8††‰ˆŸ*™>XrÈ…¸“`´ø‰!^0€WãŽhƒÃAý³µWè®ÙxøHKÇÿá+v0„oó$ôâðœöa!DÂÇt€ QQ xN¸H¢è…*艤‰¿©‰´µ(@ªÐÀȦI‚0>@€0 a°‹ø¡)ékÙ”¥ñ”\à …öè‡F ås 0›€p™Œ~¸CëÚÉÙ8Q33tÊ Ðpx… …7A€CÈ‚ÉZJý™©I‰â)™€™AãƒTh±L[äÊEðÊq¤‰~<,²Tx…\80lÄžk;L[3†gX^£ [±ËZ7÷¾ì¿‡$˜n)†¹H…l±pÏk<ÖÐIž´‰{xX8NHÿ¹:/³.5¹ÍXLš°ðÊò ø±ˆ¬‚«€Y˃ʅ³ÝT©‘Ç0«ÈœŒ{8‚ô`°‡¤€ZÐBì·jÌ…`pOæÄ (+P‚hÈ­³P å±+á !}1§˜l3«\H€†¤•~`) σ:ϪHOÍt £Hã @p„ ]À¸¤ÃQh¥ó¡—­µßMÍì=¨DUÈ„ìÑO$ŠȄٸê˜Òh-è*Œ2‘]@0¨É90€l(‡ ¸=m‚O0_@¦d™Iô˜}J`¬·m<2¹ ÿ5[èQ—HغPTÐÌq0¬AHÔ€Í1“˜L˜GÑ–G Ia*ø˜†fІhx¹µÁka€ã;-D›‚`0"š‘CÀ‚=€˜°Pªh…:µ®b`€ü¤Š…l8m!°ÈHmø;Š"¼(ù´’±ÔE“\ÈTM¥‰N8àXH+°Z ‚(€–0€#Dhõ´.[h¥ 2Yí<¨^Q¡™6h‚pg€…Õ‹Ôd+Pd»ÎäP 1ÖŒSÖX4¹“€1ð°[¨h€l2‰R°(; ‚Á ƒÿXmU-\€‚r­‰Z€—y1AÅHc؃#Ø2‰ €0xfxTa !aXH<¨%ó ‘ Š‚áY‰Ý‚`Š‚^H3˜1š3H(rtht ÚTËÐpj¬™6Êè€ùcË)çŠ OZ9À˜HU[¬êˆ» oPØÃQ…Z耻ZĪÉs ý™§[p‰â,^س‰?è"  ZÿPÕ=ª¬uT¨5Ê]­Øƒ AZ&¹¨§ÃÓ­d  ,¸XÅ:4CÖ3½˜=P‚óY9–³’¼Ä¸‹ÃŽyÚ¿údˆ6{ 6{`€öPH¢£\W\ Å ç…ÞòÃ*ê|_ø©uÈP2À€`bÌ (ŠºmŸÈ; @øÑËÊš©ŽPÛ|…S…Å!€ pnèÅc[(lh(Hp¨.\È_š¸>h WäP©è‡k{É+`¨WŒ&0j¨†aÝŽà 0t iÈ‚ :HÀVh(3©ðÐWè…ÿ¢_üc h€ [²ÀB€žc©— Å HÚm%u 5´YJƒ ©-,‘ppâü¨Z¥ðPÖ…h1:0“9ù…0k±\¼rèߊ(žâ也‹ ((¢ €¹¡›‘0‚äí¸ž7,†3ÉX¤ °>È…œ#  8'qþÉË–SËq¹…xd[^ðmh3ð‚(I8`€&,M†MÏëL ‚<ö8]ãLN(-˜' çµ€.Ì’ä¨Z¢™ûšÐ­l‰Õj“…F;ÓõÐEøä¡è†Ää>!QÿJàI‰”šÂV’ÆÞ ƒJ(Ý1±4 Õ¡°`1q¹/(Hסø(ðßë `‹„ €ÓOðʃ¹gAµjQ„èNÐ>腹Śbh€á¼Qh„3Kj\X‚(ÐØ€ ˆ6Ú:øÊ×´¡«¼¨†fð†èh‚ …5H€g¨á“†W¨e¶‡``\"3ãÓ·`ð÷ Ïáiêœ }…… °{KÀ„ëéK0€sø³^àƒð„v Ç¥Ák•7ùƒ€ e^pfèÜ*¢ÈËŽð…Ð+Øæ`Ä*Hí¨…•^Vÿç5·À¾jñK¤f0ƒEù»ÔûQ©ga€.ÐjZíº=ÞHØfð€MèóbØ/(ƒ.JâK>Db\ÞÁFàYšømAÒèøêK1ý‚ð%•ôNÓ"¬¤~ ÉC0¿¦ NS‰r†Sv_­£…‚BæfQˆáH^˜è…W0虬݊ Pol÷~ì„ÊâŠ\ð„ª<ã ¶ÈZ…ëF JýhÖè> Àºò x›s04¹ìt4*xÍŽ3LuÎpõn‚˜ª´¥NÔS/IhØœl8ÌúðÊÛÔN-„ ­Z0PPy4ƒ&¦HhŠi×Ô?0·ãì%×vM/Š]^ÖÕNXKB[à€ÿ= Ö6 ¡%a—p2°ÍR4Îo¹ t›è‡U… cè÷–±Pø„ž‰@Vò‚‡Ê5«^`ã–)I€'0*¡¸†  €=Yˆ&¼w¦NY@üÆ,ë_’‡Õ°Å3Pù¾ §ua8a€_ú@T·s=ø—`eUK‡êpë—0íjXƒE†ÕÜA#5ñ ˆË¨KG8LK¨!€CHyl†hp2Ï…¸°G› 2xë2{M-…* âe-9ྴìm) lhç&—¸ Š$ü‘Ø`W mX€|†Ñ|–gqüLJÊðV-É×Ôÿ*¸ûz3€> I°‡Ö¨Q``qMµ)À"p i@}Žkøô»¤¤sêu|á °L°l0ÕÃÚý¨Q… {¡À…`àPÍз Š`ðv@ô¤_Ꭰ`kdƒA «8ˆ,9@nj٭[~‚ÇOˆ~.¬h1NZ ýЊ«…‚&m¨’Ô(A.V*W²lɲ2gÒ¬iÓæ‰>ŽÒ¹ìéó§Ê\öDȬ5á—-—T:¨ºéô)Í %"¸ Š€ÌI'j¶i‚áÊ$œd¦ŒZ‘ÎrH¢ÅŠçÒE‡—fÌÔhÒI•*ÀpÚ&ÔÄ3ÛÿH)¦+©áÈ=qñiÔáDS™*eªøóL©päÝÛ—@§  Iíu4ghoœ‹1ÝqwCTˆQãï´Ñ¡#‘凓+šÖ’Õà×c œb‚®©ŠÀÆ$s_iK°ž6â™åÒÌÕK53Í ²iÀîà¼ìÿ].áiÑÔ `LýdT𘦷žç±$z ¤ÞLšBâ ^@@þТ?€•¸Â ¼Aƒ¼ è,h9Èlf7¿J~¹ß¿É h@Q™\ ‚o¢žåÆÑ@éAÐ&€ÀòB‹dÐÀ °E´`}¢F~ä²°‹ºy!,–¿E|˜ÀÊTqQЪˆ2‘@ãVâ@7ÒD  A2bi,`ó¡#ZÝîOyà »¨Èº0oGÃïÈM¡Bxt”‰=â¨\dî’29" |á–‹ ÒG_œ"¹¸H~Ñ‘bœ‚þ×]PÇÿ“™TÉvX K<‚0ZÆ.&²Œ¬²˜^ld¹»ÞÉ’Ȩ%Uaq£š*ÑE#4—À¨âHú‚·ÀÂky‹1Ó)4}ÉÅ#c3WòLOÊD ¹ø.2`*;ý¡ qÃAšá ž©³ é¼/|ñJÂÅS%ÈÀ=ï@èÉᇠiJ°ƒ P"?͈ìNiБîmá…0`0€ 0€ gh(+¾QOZ¢Y,9Ç´©, `ƒ´a ˜à™ I“ºÂ¼…qª„c`*SzÊÄŸŸÓ…4Î`ˆR¬+^ÀÌ ž%v·I¥RÓZ;¸ÿ,… $ dä2MS½ä̚Єå†¨B &Q“¼Ö#ÈÙ4†ñUªµ±2)*I08(`Ùá, ðŒ4=ÔEM W9·‚˜/ Ç)„Ü Xšp°|ÀY3dcB1Ö±%œaa<  @Sà5 ƒ’ bj¥ŠNœ. 0!‚ô a£<@ †4C¼xŸdW?¹Œ×¶æVDüg ÃòYÀ º€‡&à…% À høäJëÍjУ@Ð ™Af ÃÍèãˆ1Ôh¤—?~;/†ÿuVÜÕ»8Fg€ h`+ªè@ÿqŽ–„£ !(ät°×³MpHqäù(Ã>îâZRÎe,ƒË  F·&ë ø€®Á !\*mÃz`j,ã5'ìOz Ô Ò7¾!æÓÜE°Y~ ‰ H0©²ÙûC|PIÔϰ̈́¤` FÓ 2žò6ª°ÜC"]㨓*ÚŒ0Š'ößÚn™¤ èn”ÁÒô†à ÄXÀ1„H(¨…ß\H€ö‡H€WdE-™i X1}±ï<–¤ˆr*Á¸À2oÿ„&ÀÁÈB¼ŠCÒfoèÂHÐ gÐ"FÊ ‘Ž ¥‘ç}¤1jy¨2Б¨ 6ˆ"m&²{Ne(쀞bŒ\xbth`ÒÀC²³JÖWm $4Y° ’ñ?þQÄ©OÅÉ|4PËX©ÐD1ÇñÁ˜ÑÑŠ½Fi­¼ŒJ0ä:×6¼À°`Ƙ¡ gh#7èR°$ÿ>-œ¹b[é«ÍèÌGpˆá/fù—\Ør®HEä¤2ZÏ¢êL À!òàe˜œ½Í.A d3 ©b K'J‘+€  ¤ ]0á ö±M'NPÔ-<€«¼¨3™H|D&Ú °B”ŒiX€?€@Õ²÷àax2Ž‹ÂN ¨<˜ æ ~Qf¼XF4Fâ‹2È@‰°Š5“ŒfX`8À€Ôt‚@H!:˜‚yT!-àÁ ipóÒT§®øÈH–v¥ã//9ÉPŽru8àYäy–²–·¼ÝÉDÃÑÐ#¦%²ø",#<Áÿ "(…Þ°ƒ!¤@É †ˆ—±+sùÏnI v´¡RD †L 4@„žT1Fàƒã   À€”MüÇ1‚ë GýMD]†9°Ñ­€¤e%¤£"0ÉAZ³Mn0…†Z Ç8#q p¡ †‹ˆ[ñ*ª¤¾oOÌ‹]œZßéå%K“¤Q4€ œ0@*èàÉ2Šb1nxÈ‘øà—{Á'êàŽcÀ#øŽ6\Œ¨µ,£ÂèN¶¯ˆ l@é¹ÂñÄùf=!cX€$þІ¢va6jŒDÄo}[Æ,¹½vЩ³=é¹Sÿú’/í!ˆÙ( ƒg;Q¦ ç”æE2FpˆÅýI\ñšcÐò¿ß^ùyG&zdâÐŒÚ8€"p±ˆ\X*¸†NhYÌb½RÊ_e pl¼Ž3@ˆKièÀ8Há È ,€šÀ·7 Â[_wX}+¤ÁKÜN–àÃ>ˆ›õðU° xĘäÙž¸àÃbBT¼íNB.¢pLЦô‚…v»ÛŒ°ñ•1„,|lA…TÜîàC.t‘ >L¶r­€‚ ráuñ¼¢Ü¶9A*f˜Ù+q±PQñ¿‡‹^\ ùQ ž°Š´aÑÀAÿ<°ÊÏÙéýÆwaO,Y_q¼s" z3`ÂX@ìLÓ— cðT ¤U9ýÐÀ?5!аP5EuÀPPó9'&üÃ?ÁâX¢pÛN“C^v²4§!6:T¦Ô t¡zªš€   >€Né”6{%öÄpë"°"m ±d-4@Cw ¥õQ RZb€UçFSF+à± Ç@êÀZDç<838á´ >A #Á.p %`f¯ÆÑa× Gï¢%K²±áY  .Sa œ°pB¢ÐæC"¹P tt; £Ta'/ €¢u”sÕO\Åú…_¼ _[é?§d»u]~  ¤,€b=ª€ sS‘ WrBÐ%¹À 8y÷¯°)¹p;­ ºÇ¹àq(€ ¿ð Ƴ0ÌÔv˜Pa”&yå„9‡»°œ_è{÷qˆ¥âD“Ðê")w ¦q)]"œg3Tð œÿU&0m…OôTZ6@?Ðs¿ñ¢ ”åGW PÓàÇ0 êp˜G„˜K—~¬7 ¢sX¢v(h0l—u6ärZЋL|ÄLPP|ÍE^‰ZXŠb‰oZ RV Í{ße“gó 8yK¡ÔÁÐr%³7suÐÍ É°˜r ’éqšá#C0JY>Þ9!(¢›Çy´Ñ  àè°Qlà ,h÷š3@Ç@X¦ã?E÷˜àÞó™}pxâ5Ñ@ Q ŽA Jd&–O&Ïù¥‚Ú:²qÅ Ñ Àyÿ€b@H@  0 å ΠD‚º©œÚ©žúgùFTö©¤ 73Hwª~@ Ä@ îP=À§€lâ_LVª¸Š:bË`8 ŠcP“à1€U€ Hb00@ÉÖ ŒÁ¶*‹˜«¤ ¨JUÄ0­(q9Päpe  FàiŠÂP­Ö:¨Øá4& *˜Ÿàsª0 T„¶x6pÌ¢¬s Þà »À ¬mñšd‚F(¾à/€¯HR € {ÀfïøÆÐ  AÐÕT 0 CWd¬÷° ¢£HåH1kP'¸ÿ cz£‚ Û€º¨km€J ²'¦Jç U.9rŒÓ¬a ÆÀ¹PràŒŽ“ƒ@pí>ôÈ6màY°6J –A+ñCÐÄà•G4¯§–K»amŒs"ö {„£IqÉ >tJ—m=¥ ì…T±s‚ ö£c  îÀß|V·vK·Û!p{)¸ð PàŒµPœe‚±È7£b DPepv E ›à šÀÔà…ü“bbI·\ÆoÕ d(p<sT`¤çÁ&pï8s2q ^ PP ˆÙ/š´vb&6 ~ÿÒ ‘N'×0ÊÇ :;kÝ€5‹+  Їɥ«w žÊ3ÿ vÑ:%grÂ0)W<6Ä,'VÒø*ç`îbˆ¸ä"à Ê`ÓYàs0<Í l*[ÿBjùfb_è_g± =HB³°ò¿¨2vâ{‡w€ƒKÙ{¿W9° ±ðMxªRÛP7>p;HЕ`¥¤À1j=[œQme9[ '$£ð.Çe1€Q¾ery½d% À,¼ 54 |K­ ‹€<$ B e ŠÆC  ÇÀ<Íi3‚d š`ixHhÖ” ¡ÿ ¸Ñ9"Ù—ç!é+ç`؇*µÐcPð «PÄrFy2)àò g›«´v M0°=SP'J’‚7{>TÆkr§[¢x»·æ’ Aš×0"°ÂÔ±Y½ðSP €i,ÐU:-«S“#" ¿`jœ$²`š8Kzø ?&ÈtC*ä{ÌÞˆ  tG0VÌü=½PC©}#Z5ò?¥Ó¥’†7±Íðàºy˜uéˆJRxH ©_{â@pƒ*¸ yX<}Ø8¹7¤ï‘ e Å™#`/ˆ* °˜<“¾ÿåz:ƒÐS n±c% "p‡‹Bý0 mâ¼Ï3^,T€ £Ð!ª0ÎÁ€z˜PG}t&A"†à¢\cM3 Úd~P¬X7=“sI^ýäB-¶°A*–°Ô;«EuBkòb5ðEkÿý*ƹpv5p ú»OŒÙs€JÙc°f¯‚ÈÅ5Ÿ  ‹y]¥øÄa‚#†§[º ‘à¥ðÈO¶³Lê/µÐÝ—•Ï}W‚ £<§ÃTGç…Cg#ê`5 @l¹* WÌSXam°75`ÎÀÇHË×u;’g¡»P Cð­_PS­-3-Õ `{ËÄ̇uZtÌÒÚ €Î7ˆî²SQ%À°&à³P­=sQK‡32B É@f€ãÀÑÝUÀm nÍ ÆÅ0äðƒ—†5𠻀Q¢¶ßóÚ»"j ´À Í@#¥¿ñ0’ÿ0 @)=Æ€ Éb÷p£`Ò&BB•²Ž`ô½p®¦]F*”F€¨®„ÙùúϸGð ýëðÓÓ³ÑOm“€)ÍÖÀ€¥§xò -° Ò…½Bh _V Íà -ÀaEŒÒÚà‹¯b} ŽÂÑ*ï¡ âF&"З\9ÊSŒñBŸ©€%€»Âl&¿@|$Rp´mœ7Óåƒ_&$*Шj¸™U ßAÏÐ1Õ,4E4*I^¡®FãÎ~_ “½g È*­}Ïk-) Ðjƒ*´ªÇ¥ÄÞLWÀ(Há‘ ¤q*µÐkÿŽÑ$‚A8 »Þ3Y09=<ÆÀ PÆZ|´x,IºéY9J“¤x/˜ èð7àýÁ°E PŽ€ ìBðôŒt°Â¬Û“¸À Gà›æJ÷˜ðÈÅd¨T}·óÃÙ%2U‹ _$ýðíÓ$dàT³Œ2¬G€e0jK•‡± IÅà'Ât4™0 ¯€×ry%ÞŽ4ý€’Ð4Ù)—°œÃ»ùØv6mÍN¥  ðŽ(°Z »xºÛP¡ ‹0ë¸Ù¿°Ï•ÏNŸD ¢ß0g²70¾à'ùvb¤^ê<¯Ó¬¯¼(T wÿ@­;¾ÔZ,ýÐ pä­Q £€º%“ €pëQ å ýv²/ ®03 ~~ú‰#¬ Þb8ðÖÁ1LYb‹ÕEŒ5n¼Ø‹!EŽ$YR€ª*¸8®dÉ1W‚FýÔê`¯—ÅÁF©2ÙÓ§€6 ®\)±"ˆ*}úˆÙfE€-fhx˜f3f µ*äÚÕ¡V­q`™¸Ô¤ª+ýDm=ÅR$R[r Æ15¼N˜ãhž.ʸ8%,ZQKjã8h†„ ñbò{s€PȘašiË•e>à ¾`ùVX€·ZhPP&R–^Ò$þ€ÉÅC\zñïÉp°ÇÂ@­˜¤^pÁ5òn1¡bˆi†ÏÀ:ï–ÐT+ `˜cÞ“X–aC¢)~A˜9[ñdýÚX$U ÐŘœ4(1æ0c×ÒSfª«¶ÿú+‡Åù`k›Cpéî8#ãPÝ$`<* ˜a¢ÙJµ«ã–[fšÅºy¢Š22f﮿ùl&Ñ"d2 F²Cúc…X€a†,ÜmAI³qnÌ3‡yĪ`€?rîz%¿I•Èøa¶RƒÀ“¾F]¡‰9œh!™fš‰F<õÒüwàý Íî«M2¡€ÝBa°ƒ €0&äïl4aûh¾sÛ_`~üßÓëõ³fh…VÈo’@ÈFš–z+1püvóíl{•µl+âKÈ2 H>&ðOa! ËxQdcï˜lP*ˆÀxÒÂ1ÿŸtâMMØB²°X+ X¼r–Ám{‘ˆ„mxC«±Œ‘A:,0 m¤a6+èZÈô¦„! ¤°5–q9FQŠSd bÅÖD­5PDHç¨øE0†q 0ãAÄxF4¦ñO5ô Ù¨F8ÆÑ†³0£B¶(G<æ‘jáœ@ÜXÆ:vQƒ”cA^†?fQ‘Šl#ëHHH¦ñ‘/ÓSAܦ R¢ /ÀWPBšx"WITâP,Q³Qi†! a£.ØAÜWŠ×Mâ.ÀRKaPÉÄòb*Y¾Þñ¾¨F>tBHpC ²Ñ "ÿ„# kh×ÚÐ<("Ä,‰Ôœò˜ëÜ¢mxÃyPÀ}‚ €?|¡ FÀÅΤÁmúÀT° À'”@C5zYçÜÉNˆ.DjSóƒ}‘ j¤`ƒ©N@‡ <]ã€*¡Iàs%èAá a ã€cŒhM×#”¾XÀ œP PŸ uÀFÇ‘$`ã8Á‚ èA Ä81ÌÓ@bÖT†‹&(álb s€f~"AiGmIϰP:ä§ bÀ@HÖjDƒrÕj¹Zš]hc V(Š4ÿ€|ck׌ˆ'¸ÿ '™Þ%N¡ bäé¡àËQ_§x‹ePÃ<ÀOË0˜Æ¦6#×Àò#(€׫\ÿü‡£ÓdÕ³s»E42à á¢ÈÄ : >„@µG57 …V˜Á0âp¾–‘«½ãŠnw·†ìâíò„ð†@ð¤²(C/–ë\ðÁÛ"Ét•p½]½Æ51äo øD—¹ð»à½mÍ.!TÐï"Æ@$Á“4‚ºè§ja ]` HP0…ª Jø€€…"3  .ª°Gór1± O :ëš-€‘e$x$²PZQ’ðÁdñä訪…¢4<Ò5‡’±ÎH†˜ 7hƒ?臀`è=$y¼¸(¿–À瘙P`›„É–c“¿ú: À  ´ xcÀˆ,Sñ&1ø„4('„7Hz±d`†P0°8 Uø‚¸ §« ü dŽ\x…è8 h±  X7f9Æãˆp(ƒ/8Uø€ÿW˜mXq‹£÷ˆƒÐZºHØ‚¢² H€`àƒ/”Y?ºÃñÛ@ß{A@¶ ЦãÊ€#@µ²"Ø€yË„]@¨m¨*n1â/ц‚-x¸§ 4JA2˜ 83JI’Ùó‰ÚK­fé´¡AŠFX`Øå’†^À9ˆ+ p</óAz'L eˆ»®8Ø… xDÛ% è\8’¶j>‘“  ` [†¿é (xB¼Ð… Y”*pyd+i°…p˜ÅW›YÛo¨†ì,ÂÆÕ‹!…":R@H€_8‡}Ĉÿ\@CE‰uë¼?l€/€T8Äð{{?ãŠ3cļ–à ƒ¾p‘9p¨‚ °x£( ÈU(‡ÐXƒõ»È ) ¸ÂP…{„7HŒ(“¥d \H€”ü‰€\pÉ®±>è\Ó+: ­Á› É…YÌ„“²¹{ºI…FÈ ]8·øÊŽ^|9®¿1®T±<2>QPCÀ°4€¬€±±kË;9«½ˆÀ›Q˜”¢¼ºð½$ùB2±‡÷ÚÊ®,‰H…°ä(…&QH€"ËKAM“Ê„…{áÿõ™°‹Ïܧs¿A€èƒäÈ Ô]ø…ÐS‰F°DÂlMŽiÆDDhQà‰~H…Eà“´iÈ`8§ô À€4ØZP&ÍÄ‹¡¢p«™Ïœ®©ºlÊ&é‡i± Œ°êl:à“0®a K¶Â…#àΑ8 @P°Nà a˜8“PæH’¸€V@AÀ¨„DØû(Hƒcð€cÈÿ©­®¨Fa©XøÏå™óÁ“T8‚Tˆ.%šLlÀ˜§+L¯LQ[ Kñ± AQH…`pº…Z8R‘87÷Á' @8…mÜ…ý²>ÿ¹!–ãœök¼stÐq¸l yd͸ÀP ½ cøT`,|qÄ]( YUÈ„>h€t 4¨Ržh ¨„.ȃÙÚ.›´xSeÉJ¯1`Ô#8€‘â=õÊ e«C-R¿èˆÄŠAŠ>€‚b V¸’#˜LP…NиP„Èfà·9ÌцzSUް°ùƒp£ð 'õ >}¹^ ÕŽ,t˜2äi8‡öÔ‚{ê€CaØ…<)óbY¥ÏüÔårVE8Ø00 Øú‘†(°ËWéÊ€gx/«ôR‰3\íšÿ$X‘”ü€+P‚i𠸮՘©‰ÐWÕêè1 'ˆX†PšÖR„;H¢‘1ð‚+`P‡}/x;ÄøÈquÉx‚  Wù¦¸Œ¹aÂÑ„”„8ˆÏ±Mn`ÖPYQ ‚Hƒeˆƒ¬ØFaÐX—1 ‰¹Â †ip‚ €lx/>0ZŸè°‡`¨X̻Ȁo$PÀƒ!¨ƒ°ÚN%yÓ>؆÷Ê…•$€1ð×àú˜B™à0ØP„(; xg°€.X4ㆸDæØÛ²é€#à kÌ–àh(ÿ,Ђ¦ÂŸà\Çí¯×ˆˆ{¢ƒ&¬0¶²\ÓQ$x ˆ¸Á¾Þò­qb³ÍŠ]ÐRÈÙ].Û}•Z ƒT çåÝ Mçð{¢, J”œ‚…f"«8‹<pÜ„¹ÜŠaCxh•ÂÏ^…H°‚  ,¸†å2<‰H€`²“ÀQÝ Kà0’@‚0ÞSMe™‹Štx.¨[*"QÆÂÁ ° —NxЏ©†‚{a3EÒ€…]H@´ø9À"Л•€H…QHOp<0L–°l–gAÛx`HÏçå9øÿžë‰ (ïÈ)Îå 1«¾ë eP£.°>ó‹V;î1ö ³. °ìú•8N AÑŠeÐm¨xvÑ/(#À`½A#ˆ– ¼'Î# -?VÀ° ‰D]îš3†*è€R@Q$^°LÎ5'‰:î:ZPu `2À€ E ¡(†‡ÑˆÞÓ~èiŠO2` =üä\Ä-›ã,І!’¦ ðb\„Feõ † á)…~Ð0eéì´ ¹R>ǶÒ`€Žpí‰Z¾eÔûAÁ  ,hÀ€àgŽÿ&‰TP5VÐ… ø‰I¨UfF+ÖhÁ¨…"_8rànÖŠf8†cP€ù= LX#HH0µàƒ}¼˜AY€ É¢fP‰‰6¶ßFú6±¨†€€ÓIÍGÚ=å‰~j½ˆB¢a‡¡;[ ‡_0-¦_…-èPäþò•›m¼ªU†h‚0-à „C’\ðcË 83ãÎŽÜ’X„"•ÌQa¨¶WÏÁ¡€ l}:O¸Œ{ÊÀK¸Uk±†Âx-K}a† Ô!½²È© <€K^”#H“ÊÍÿEé((²¡n UÊÖeËÞQЩ˜˜‚;ˆ‡f¶–_x.øÃVv S@†b¸ÐVœ€ëí•—v½J†I°'ÈA G—ühA¶Q ã@¾w4î¨ì™‹Gˆ/(†÷»Â…eÕèl‰WžMY‰?È€(ÛÕɯH:{€!Àƒ ª704‡wÉfñ„Ù䉦H]°†°wš6°eäþoåN–e9e\X‚*À:ætÎé~¯^TÉ6‰?€ ‡zíº[@'ÄûŒd(„í  0‚®v_—ø ËßoÓiƒˆWJ’êẄ3‘ÿ5>>´ð£ËFxp71r¨!Î@Ñ+&fˆ›F‹~øÈ (‡A«r±¼°\À†å„ Èn\ ‚AšZóÜj(ÿÄ™gp:\ Î…qèTà ·8¿Ù,“–̓²ýå;e†dÐ,;^W…?4È…7„Hì€!£gªs aŽIô-ñÉ~jð…ïñ ý8ÝG {†W¸€Š¶õ¼„B{øi:ÕŽN0r‘sš8˜ƒ&@1Àð€H!t 2puI(†‹6û`d«À,½9LAÌáÛEçrÌ-hð9ô®c§tfåPT0ËI…*}Ö Èj°L(ŠzC‚ÿ6@§’xÈDpH:(s}  ¨p„쎔AGÄÀ÷_^€‚kí•ô¸DYßãƒ@¨ö:Õ ²³ T(à¤Iv EéˆX øIø*KàR i„­6cäƒ"-“òÌw`g‘]:à-¨×Hº™Ïš1¿qÕÊ…@ÕøáDïŒà@gfÌ ©Ã Yœ€¡¼MG‘ókÊëd‘­ßòFמÝ1hmX«2¼w2û|EûÔâ×`œ‚EØhX¬H‘Á¢¾Ë?ŸâÎ÷1¡‰QˆU'|_׈$Y{qŽËƒ, MH¨!áIcËÿœñZgîúp)…;8o¬^>Eéƒ(è‹dN°QÕZèƒ2†”ÖG †•H(§‰b%¸¬ñeÝWà•R¨‚2W­CÍi¡Hžˆ_h„¦– š˜€¢"Gpèƒ"€§ˆ-xX`ÁÂ2?~âÀ‚G!ĈÞºñÃ1Lg‹È"G’Ù‹€”*W²léR€ª*äJÒ¬)W®b©DÀìjQ®šÁ.¨ziô¨€ t2€ "à„†2L¢LqdEFhæŒXf'’%[ñìÙ†Š¨úì£Í¸¬N"­ë² .¹zKÚú5áDJ t•ZÔ.â M ÿy !?þHVÙ¦É$xÑR¦,,-ZBl«lıhÏ2¬ƒ€©d ƒflïHºˆíªq$/n½º~%h$ê°€~Ž‚’4¼Û®b3ÇhxÈ2£ ž&+ 0D‰‡f$,0Sú|h‹¤F2 õij1ªVaÇ :u¢#…vps¡ôÜJªv‚,rðÑ \–d 2XÒr+ 6SsDˆTÜËgåÅ-Ñ,ÃË.#’˜-q¨7ÚXðÅ·Új‘Œ¶Ë2·DƒÎ=ÔÐD'Oi ·É¥Û†,õ#'Ò„‹N²ôSaKý¼BITh˜äKH4ÑCÎÜÿÖY-ŠviÊ'#j]4C™g $üÀÂm¤ô‡‹ô‚Kƒ¹ H R ÍPÐQT-D‘  ¸Ù"0 tPËnVb9R=[rÉ’*”pÃ.œ•‰šjªj›¨±æâX´8ãŒ#°`ƒmô&K€‰0¿'ƒ"ÕO²ðÔÏ‹üW/L@alÀ>[“.æ×O’š–Œ§ŸþA€(Ò‚/¼¬æGŒó©Úª««¢ÕÌÇx%  §TÁ¤¸D;OªtÐÈ"X¢R÷ˉ.8µ÷\s¶p’€%ÜœŠÃæ’À½~šœ#›Š.•ÏqWÿ.´@Í0Ô$Ä*«©É›3¼ílFš 1GEÀ2è¨H¶äbÀ˜ÖÒA ÜãR?$Ž-Lƒ4©ZèÙ[*ñç´ … ÷ÔÒr·W~®]ã‚â àYÀË0µºsÏfŨ&CkUv‚Bg È‚©J½1Ð'Fêå´€¥”Ê Šã Ý'§T G  Žå¬€Ü-uB@s˜áL3ÂÐ"–Šë± xàð¥Ùâ.ý!B½,A1Ìí•Ë"Lð“òzõÂãS®$–š#KëŸ)@+R8€Èm«—bÔëÝ)Æ4 Lc:Πª"¼¼÷þ¦ª¡e4ÿÀ}d£K.¢µ§t@å–\Æœ_ ‚ý€\K°§À‘ƒZ¢[É   H'…ìˆó±$x"0ƒd4c1ÏíÈtž‰fg6TÓýØE£Âmd œh-€aK=å‹àD¤œÄ |h £€àQ$йæpï‚+ià àÐŒf< %XAeöÔ¬„ÇpahB–[ 'M:»á s¸&vñHItÁ‡TP¨7H0—|üb ö cA+ ‹ :R@ƒÐ x€0‡!d! hF2¢!TU¤†ïÊ!*ÿ¶&úŒÁŽSX‚×n‰E,ÿ%3€ÊF¼TH‰K$H*ؽ$aѰ S°E h#4D‰Ô3"‡´+•֬ߺ(’W‚# —É´˜©A 4øx‚aÖEö&+„ÉÈ”áŠpȈ^å®UáÏ×ügYæÈJWÂÒAŒÛÉÚDÀ­yþR‘ìÜ* /´À!-ŠÓ-€6"v´£ÏE‡^K‰ãàDx2O˜H ^“§è€€|â&ðÃi>ªÓú,g¬ì!•]Œb¥)‘À9Ê¥«` fHA ,0Ýñ´ªm×OïËà|ÃXŒ¼Ã9¤ÑœEÖbÀ@Àã˜ÑÿȨ4­*×k¶ Y}e Œ‘:½tÕ¨ýjÀ3t‘:vâ¡hJ`…$CÀ¬æ8×É¢«ûãHA…* ¿¦D­ÈÀ"PP¾/Ð%c,A*U ¤ÀD9Z—›(+ÛTÆ)N@':rÍnÖ¨>XE%@¡'¨Øá‚(mJ:±‚x? A4¢K¦lrt¶Öýgvq[UBiT" ¼J (r€C2v¼`H  LþÐ1Ì¡7¨ÝŠPeÊS^·¿=ÃH\€tB÷øÏ38à¤ðŠ®¼)Al \àux 1N˜CP‚O¤ HF2 Gêú·Äe™Åÿ,¦©˜áVÂ@): ,À³&((êç‹Ö cÌhQEx¡e,ƒ6ã/r¤ÈŽ˜g&~r?ÙšY #°Sj‚`«"AÒxƒØ0<€H–2áòy ňªDN”ã,£ßé/†XA\¡ÈikˆÂ/lS’\â9ò%@‘‡‚|8U5Ð^¥f‹ Ågˈœå¬éž®)w*‚ë-x!Œc£NÀ€Dðƒù K°†HÂÑ»´Ìu†Í1X><³È,̉a¿gÓÆÖ雉L ŒsÃØü³"°¢³6 VjÐhÃEŽÆBÔœ¬ÃJSõØæ.ñAHB(á XS `TW±Á”àTƒÈo”×¹nÝS…&,æ†0|1< 2*Aà…ÙùB)*·À3.p¬êhÚ8F5RЃÌaCH0šQ·b\ã.x{ŠMÓ4D‡ y9Îs.‘iÎè"2×9Ð^óˆl4èF?ºÏŠMl¤3=ç•n:Ô'!ùþ,SÎÓ@ÿý H° Áƒ ÆYÈ0ŽÁH #JœH±¢Å‹3jÜxÐÏ­·ü¬¦M)W]0€@"@À/ôpœI³¦Í›8ýˆt¸¬'5_ÔR˜è`E''4P0•SV8µù*×@8³jÝz# Z aˆ].\\%ÚÊ® U- x°‹-´nå 9ðîÅi îG›'äôr*±À_þ.ˆð§ªƒ‹¶8ЮXŠ^r I›Nª0eXå@Lþ‚¬°ÅE ÄüE‹¤Vˆ| ·é§8Á†…'^ u#.(ýZn¬œŠ'[O›©kƒ¿@,ýÁÿô—ÆßaX ¦W_|ýðÁ´hÅñëˆI†Ò9Öh+éuÐg-µÒÈ"¹g 0 h!‚gÀÌ0Î(ã2ÌàÅK]þÄ'ßBïæH$tK-t¡Ô@ÍMÔßHÄÀ/û%TL*¢Ô?Å eÐ/ö0ð X5Zt%@'Pp@ر".F¨ÂþtBVÜvE…ØQq°t(,Ú8Qƒü!À$>`!„-ÛÔÜ"Z4?¬ðÁ€ÀÀ1ÀIŽ-8h’Õ2ÅKàReZ¹ÄÐB hÓB4g_Áeb©“Ä@¸°cÉ‘'\ÿ°Èu1^ôÔZ LÆÀb3ÙòË£õ#.¬ØL#ÑùÓO#AÖZ“1¸´“J+ŸD€„Lc¡2ÎçA ™ÉÑ‚0PKýühSU€£Ö¯„"”ɰÎF„ <èÏ æ¢K0©ˆ/GIÞè­Ápv®*+`A"xC‚ñ-”CÔШ" ¦ËZu AôÂ@Lâb´±B [ü ‚ ,´ñÇÔ{.È2pBµd‹VO±ÂÁÈr‚*m PihC 5Ñ,SõUí!'Ÿ?u¥Š* Há@/Ò0¢X²áÑ‚ÈÍgb¸ó"Œ/2^™h$£@'Á €Nbœ–ÅT¡…ééÏ»mÄ+0h¤HøEN°T CÐì>H7 ddþ8Br>gÀxÈ/cÀ¸.Šdâ U0K½%¢‹)½hDD ú‹eÊ‚9ãz°(ÒTàh¸gè*ÀW£6¼ Óø–?4¦3%#š‡v0Êw."_”T\Ssô”8Bê:7b p,>!Â"_ƒÑ€ üh†Êî8BlA…2\@ž©00³”Ó¹.Ãá £Tó2r>O“/Ã&Ý ÿ2 -!‘ú õœ@ ºg­=V“HAþ>*·‡‚Ó`ª‡@¾° >ÆN1SáÆÁ6iR1¿ Ñ X‡\Ñp -õ=Ç ¾° ,u7`¼0 Ts ÑÐÚð €P]Övma<ã3ðF=H‘ ½@LE# h~ÔHºÄA£•€!1 Ä Ó@4ð,P+PJ£„#l5!9èà0 áÂy§!qK,åÔ@ ”pA{5ðá°Hþ€ Ø ]åmÐ|à ù‚-¡×·’P°>Hq…=ˆTpL³ÿ7;€õs?¹Vdþ`S5Ð$GQIPֹвË"‹%ª`( °ˆ ‘Ðpá€VYPKÑs@v"‘þà Í…J ¦AI“pQàt¨O¡ T0p+ÀqÚs+pT¤ôG“èC¡?1àÀ@ž–Q-!ÒÆq{7Û£ ž¤C!¼@^Á èÐaô‚P}p.¥ÐGð ÔŽtQ’)”$¯°¿Y“ÓCq5…”½àD£ ²p£˜H!  «âI€w@y²aÐdDzûÇ œ€ °× ð ÀÀ8ƒÿð ‡{AIýpJ7ä¿°J3Nñ þ° @q ¦€\Aæ™DNÑw 3 ,©GÓ´\7ð\;e °S€Lã4‡àRÔ Ã â6pñN‘ÖxP…A Z™Žï!\gh+ºrJÓQðQ\)RÖD„ ÿuò‘Zh¨12à×_“|ÑàÐU‰X „£Wéÿ#ŸóÜ’H ”ø¸=&-Ê<âÝš‹ŒHÕFÀ 6½H%^à9  D»ëæô˜€,šK–Üa@fÌ$>€ G0 Ì”´¨À îÉ y+KSªpÀÛ»9ÌÑØt»•ñ ¨PÉA?3ðèqWqeÃÐ $ på.¢ Q2%É'çR;ð Øñ1ˆ)dz¢ ¸À=ãí"â$€ð]¼ âç”Z*„9o\ØtÀTq+ì˜8ØUååAéÐò GCH”Ù4ÁCØ~t–&7ð»ü$€6›}u•-1CÐTQ4ÜàFMž¦Gÿˆæaà-`‡àrÝRrç5Ñz‰…ˆúËÐ~0³I[Ú‘ùc­Ñ¿ ñÓ i |@#ÏOq|p™0JÁ¦ëé—ƒ)Fãד Ù@\.i:tòyôðœ@ß“ô_¶'Æôq·žDŽ'€t?½ÀÍÈ{’±Ò!›C Ñð[Q& VÁsɰ ;± há`D_>Z€ W•.”X³9w÷0"”î˜D8ÑÀ SAäPYQ~ØCu|0Pk±Š•p1 €,ñ+a04°‡0FeÔ’ªäl4°iíèÖv„Gû·Ëyñ‘ˆ ÿ@ *…R¼ÿ2<©׌³æÃpz˜N >ìÂ\$¤˜•/ýWósG@YúÂ_ü $XÐ`Á?”¸ä‘¼wòv-[æïÖ­ƒ1føŒãG!EàÈ«‘Y±êÕ C-:Øû…Ë–È•¶ tH92¦€Zb °¹’Õ’)!Uù#Ф—hÃxʼnCÐÏU?ãÀêÙÕëW°aý­Ä•ËÀ„'NÜ›°(WFV¸vŠ=(@U ‰È„jÒè—@“2¾ðâD2 ÌÞ¢EK#AX‘?fÝ80Á]c¨T®›Q”tEŒ)¡Ûhƒ¸zñ™ Biàâ*Æõÿ@»ðä ñ@™…iÓhÀ°Òp†¿ÓüÑŠ³ VÕ8~0^¬Œ5Rå‚W9^e‹X‹5¬¢ªŸ–#(@ßNSÕ(>7éšfÏv-¥gó‘uûOÌ6Jàª⠅Œü(°Àì²ÊÊ ‹À¢%B)dÎe”qÆ‚ah¸âb B–;øÈe½°~²k”EYi •zI :T@”¶8Á%#S8ñ§5°ô;(®xl£+Äðgˆ†™Èí6¢»Œ"œ’°ú¨1ZxñÅ—fzÛ!llcB°Å\Àq)¦HàDVr¹ #[‘ ›l¤)ZQE&YYÿ3—°±––B-¦ tþèÊ‚jüy2´ä¨²+¿RðÁüàJ‘‚ø©‘"PÉ–_^i¤UaË-ù@“F$U S`,ˆ]Fa·ÆëD€~.Xe (£ VhŸCFhæ 7¢ê±®¤²ÊŦÉ\. òe þè£irqDGû˜sMY¿mMIc†LvÙ˜P&™d”áÅ3j£ Iê¡™0dfãÆ š.Á«¢[vd‚óG‘@RÍ€Tî‰ Gè|Q%£ÌJE–¼Òeƒ¼-af¤b.Ž‹äˆA’“F·ÜƒRöœ®z±ƒ˜‚Jÿ€]pÑ¥>ªQ®ƒ'í¤ ª°B¬¨CÕ\,•vû#8úE,cTCE’«8®´+¡&æ€` j–‰Ê·²T Š{ ¨ ­+eG@„ bxÆRH*¤?!€-` †˜dª¢Î„DVüu±nI;Žwýym‰^Ãú†dU2 C…J@àÙZd² pƒ.òP бhèª4’vì—…Å Pd’¡€~{B¦r±b"M•à8Ü š9ƃ†ØaŽK\ðf bšI} .3°ãì0,¥j,v.„pU'4@p |AFùTÔ1€ &õ“ÿ•èh‰m` EÒ6(¡ª1·ØX 5” ahã^þð4bÏ0F¿rŸü$MÁCZgToh¤ŠDõ¬hÇ„S¤â@¨AˆDta®Rª hØ"} ‰{:Ñô  /¢Á˜q$ŠU¤cOèE#* ‹Fæ0žÿˆ¨YsÂHÐŒaÄ¡"F³žùÈÑH#‘¡¤Ÿƒ*Oq’›ääW¶"‚|2…©’b'MyJ’¡•«deA¸òÉê$Ú™E+myKƒP2–P¢P-]i\3€·¸ ª'J?Ì’Ú¨#Z0ƒ‡hC¤&Kù bÿjBÄX€<ê`…ˆøD<àŽH¾¬f;oC•«XéÞ9Æ0†€‰Ý @‚hÒ˸.B‹jh£P‚æ€$Ä >@9ŒaŒ$”C’ hG•F^CÔhüƃB¹A (è¡Q ²Æô+·¨J)?¹‹( †1™Ä( rLp$+iQåy hCÞ Er ‡0PH ` ÐL®+Ù˜š? ¢RøÃIm†ê.3 ùƒibQK¡ªDƒÉX@I·@¦?¨Bƒ…"l ’XJš°3´ Ah-eFšXL·bÿ®É˜Áð¸ sGˆÕ_oÊpÄÀ þ(Eè0/D`¼¸¤–ÛÄ(Æ“„‘Mšƒâ   /&’8ø<›4V!ˆÉ°Àb*5më Fäö†ñR&$À޽aOÙ¨ÂJ¡"à»àEÇdBñÏd)Q¥sÁ]/ †.€3¨‚¨ðHÒl¡‹\,¢™PQA€ÀBc_5¨‘‚´@ FE–“®Qµ×½^…6@€È¡¡ÉE1$ ‹¥ôà xÆŽDƒ *$-0ùIF<ć#Ø‚ðÁ!ŒÀÍÐÆrÔõ TÅvÃ^ÿ‰b´Á‹xfdñkTìòÁÅ]ÄŒZ©äÆÄP‡è—3‚À†g À!*Ð _ÄA1jnã·ä÷F7Ê#ÖªAt±ˆQàg ‰-ÄÑŽT*Ì#i(l0¿¨‚>0ŒÒ (ô'^+xÁ@ÐÉÈâ™=ðmC)¤ÜgcÄæÈ4Ap‚ü7¨Ð ýh¡~EudðAä ƒ`’?¤©‰N‰Z$un\‡?b>÷D> X?p—ÜÚ+'EŠ‘ ¬Î $Iè…0;À. †?|Áìžœ«šsl]œ½gqëÌ«qXDa‰`è«EõÿH8 5 Äk /øDâ¾dlÞ)ll0ë¼ 8èÚùþJ\ö𮍢¢hDt¢‚†ð"EE $Àc ÁÅ4Šcr ñƒc2 |<%¶HqA®”ˆâGà“K߯Šü:m@0 €å,˜iêZ¶’;ÅõNohþhÐ'aˆtp¼+D§ƒùDÒ œÜéØ[É|`£ «¹ÍÓ.9꜕Œô_õåR ]íÒN@ÛΑZÜ#gï1ç`g îvÀFæûCÐ=e\x½»,Zõ*nË+Þ,ÁÙÓ.ô‘°ÝíaÀ3Ì‚åÜ#Åp9~ÿ±ˆ[i[aÎ0Ù‚™Ñg8‰*þ[N…É6‹ÈÃ0u?ôÆÏž#Æ‹pŒW\@Å9óG0PC+[ÛQE Ôñ~èa <l±³°€c#1𬦹˜vŒƒÿ˜„5ðk Ù{¼Œ…_à¸sø…ûüp„_È‘  K¶ÍSÀƒh?u †cèhè„N@’üJ·0pÖ ¥Ù%ƒ(%š"I²q.ž6(ó[»ìã@ƒ`€„=0±{ˆœ1Ø2ƒ5{È6í‰ €+`Š €pX‰n(œytc< J˜¦z‰¬¢£ª¹åHÿ Bð #ìs¼`N¸>ƒèà… (YÂ_˜×è7¯ø$Q…8ù€ïQ»p€ø‚Lè´:ð‡w†‘5*"ŒØÆà’]X`&p  ˆ/Ø“HÀ<<‘°¿è¼õ 9Y@†p‰$È €ð…;c+P ÿc!fˆbð€`¨+x¨gÑ †5ùGà 8>XË¢3º<B±† ¸2Ñ ”Fp‹‹º(°†$`‡ð*ƒx ¥QÊì8¨8ˆ¡p/ “NPQ…'€Žè†E(^ˆE0ǃ€ÿüB> [à„ ˆÂ”¹>hty DxöB™«Á#’ÁŠÈ0™8¸ Ã  #°Ààœ Œ¥°‡FHÄ‚°6{ÖPYˆ6É0>°‡x8‡¹sn( ò‡l)ˆ"sÉ:“7Ô€+9¾]P°˜ð"vH‚äˆW‰ =Á†\À…•–¥ ±°…gxJ–<Yà•·Lcà€r¸€—[øå;­ˆ¥è€¾xƒƒj ^Xx?„2h€@°‘R˜GX‚¢ Â&ä½T˜Yù…`a€£ ZL¥9¨… (†q|[`Åt»K„ÿi …ÐS/¦ƒH»%,Cм׸€¹CM‚£0?ýâKüÚ‰ˆä„v@‹×TX„šPÕð{¼3ˆsÌ 1ÇàºrÑ0·‰‚8ƒ^ˆ‚F…AÁÖ,ÌêT”gH@ðOÐHêŒEî„Ê¢Œ;”À…ß»•üê€ ¨¼Û ë‡Í㈨øüih% `¡ò?¥ùœŒX]0€à#” h:Ø# uäPIa¿óX„hÊîüˆ~H…“+6 ˜¥(’äÉ‘h ³À$ˆðrÌê 93°€]Ø\Ù°S…/à“‘Ð…F±5¥l» 7EÑÿį‘ ð¯˜M%¸Òø…'Ä(¹_8Žø¯r¿:刋2Àu³‹ïJˆÕòm°0cZ—¼ üL ](û°5nk€E@…þÌQ°9åÈ}R¸Ó-·TÐ<PºW†-ã„E@ [SÕ¢x–LXƒExØ hRÈÒ©ƒð€c@Œ7¢)¢Áç£çëŠ%@À\—R¥ |œ•_„B]U튲àƒF0ÓV˜€›áÐq‰Zèƒ7è…} Ð( *€‚˜3H†cˆ³’a¤JEšžèV±˜›·ƒU@‚°†"èƒq ‚ÿ „åˆ\@âº.‚‚g@Í{EWwm´-(%˜†ä#¾ IQÊò™-(I°„à#T…!*Á6ˆýŠ»uP‘Ó•òä%}Ùµƒ5„@ ‚h©K‰“9…È+7xD¸Ê)€ÎsU !ñÁß‹†c°!7Ø^±¨ Œ -àOH\qG }›·ð‡#DžcÅRpÙyá, iÍíÕÝ’€g8V!B€xV¬X> ¥å‹†jEÀÿR„؆¯0 „> Ê2º€g7¹øÍ±‡;^–rH…üHb%Øà¥QŒ†N†€€ »x ÍÉbƒ(b\+.¶ +aˆ ?PŒiÅÕ¡©0^ E'𧉊n8àŒÀdЀò—SDظ€ ´×•0*èÔá/@  Qâ ¦ÏTQà…a˜9 PÑ…/ò¨…ðÓ`d»@Ô‚€˜†ü†ËlŒÓ«Ï—Y‘JP„1!*„ìƒ2à†kXBl€—XÕ `1\Ð[…U$¾–œšñ„³5T†îÉ`h]¯ÿ X­hešaƒe† y¿fÈH ƒð ÷È!OÀË>Ÿ ú úHPhFŽV.ùŸTY/󺞡 žëÝËM3¨f$„S[ûY(#زQ ໲˜Ðeš1Šÿ »(-+cøT¨„5fA&d‘`ŽaH†™#È‚D¸‚F¶‘~x `0BÝã€ÛfŽpZP*€Q%€P€`xÃUQ¤!á ¡9Å∽ʼnšYñp ›øÐxÑQÈÕ@…ø™°Fì°’8h†¨384/‚'èQ"èÍ - I`^µDÈ¥ëã‚Ðÿ€‚>°µÎ ¨€PªèëÒè+ˆŽI>nJئ”È€`M9¥ Ö@1h)9ZÅl£€1{°ö èAí*Á“I‰‘[B»L‚BËV(H R…ˆNp kÈ…ß–…$1PoX†OÁZ±<ˆ¨h78˜ƒ´\ $Ànù¬ñî…bH…DÄqï•øM›”Ð^p«à xaÅZ…(™e“`H4B‘mL ÐÈ…(`|€â5Àƒ8ÈÌdð†<°‚FîÒú;(íVš{-†ßtà€’•oñ À€ô&ñT1ñx¹(«.K0”P¿ðÿ(°¼1âõ”XÊipždÒ 5¸gñ5ŠŠÜ<ølƒæܦ ôëP™ÁyQ”_€Q×P…óéÌX¸¨€&õŠ ½°!ê ç-È^$˜€‚`8 ì9`p@Ào»èT0£ôó>VÈòe›Á)PXr$‡»€ª‘{è>IŽjÚÈ´—³ôŽÙ˜/0j(¯gL_Ø$˜ðpX‚;ð. ’|NH€ u’ X3è_¨òÑ èÕZî¼Ô‘ÐSçÄMËVSXÏ Õ(Ó¯N ­ó‡jH.Øà:Ôjˆ†äƒ³°¡ (s[˜Ýüܬ<ÿ&‹›0 ýˆVõ?„YG‚HƒhØ]R:x] ³˜€{pëw¤Õ¾Mt´¸ ^h À:Žò'…˜øùCÈÞPêKûØÐ=~(hiË„.fc6У¸Ç o˜ŠÉøˆ\7W[«FÈT0€¸Vyò$É„>°ƒ 8€(ƒ)ø®lùëD€² h„‰çed9Äí€Ý‹àÀ…ˆfÈ÷»†úzg…_àxÔP†¨ƒ"K¯¯è¯9íÈØlnM0€mQ”$Ø€XA!€ )ð{^^NˆKýnúˆ\x…Í6o\3G8ü^ô®@Axÿ6 jЦ¿ž·ªŸ¢•`”5D˜C¹KÈVuuwTù¢ ‰Œ?ü"(þ‘x- \wƒ…¬ ¤ddÜ|± äó6„ÇŽÇ3'pxƒŸ„øW4‘ç¯@4W… lÐüdepÉ‚ 2 ²¢É‚ÚüÉ[iaœ8aÁbHðÖ-"G’,iòäBGÖX¡iЖ.` ¨p‚Á«^' â*Æ eKBôÓr$œAVE–lƒC—Þ’Uã•Q!GŽþü„é(ذbâë’UÏT"jž¸`@—-—¸ t0K’À //¨RµÂÆ4_<ªò·"@ œÿ)S¤ŸÈ’¿F«Ñ.æÌš̵H–PU ˆDk@Öf‚TµÁIE3%V´ù³Ð¶¿& ›-dFÖU†—½z¼Hp×#úa™ú9Á²Ð úKÐH„j©J÷ü™z5 Y,0£•l/ PØb?·2dñH‘ºŠ|¬P¿qþÔñBAdIMgÖjè.|\W CBIÀOχ‡Í”wK4Î8Í2ËøÁ‹?ÑD_F%võ¢ÿµô•?·D²L|°0‚ÃltB€1 Ð- .ÈPa E‡:efË æ b’…z·Ùjm0Ã0´xù%~õyäÿŽ•9f‚ š„ßc!ù‡—þsŒá(%B#ô"‘$åÂàP't€š*"\p0⌥‹> \€B}‰T¥GhñÚwA 0Ç ñ½I šq¼I© ™9&aÑ✠ñ‹3Ã(F€@AôÓÅà(Cœ˜„,©xÒ‹8¸ä‚ZB•€“&q‚Ê¢„…)ChÅs¥fìÀE4ÔàXã}m®#tøùæ-Ê(ƒÎÍä bü1”hUp’”så2ÊIC*2E¤OÅDKÔž8Êð ÁLÐ]“iwÓUcÑV«Å_›ü•4YdÃýæå-'&Cÿ®Wà©g­dC1 Èr‚µŒ’À/º$5ðHüö#‹=ÅJ'$šJ;½ k¤Aß 2J?B1ÐÀ"ö0@afÜr!§vùrvVqhE’d$‘¬îIm“\3”¤àMЉ¢¬‘À-” Ð$ŸÔr®rBÝ$œÄ¥-½,-ÂjÀ¾¨Aº#A@'T+<ÈØ| f—6Ñ ~*³ZÒÛì‚‹ÊÁr+t¢J'Z õä$Ù’K1¯ætvtt.¸/’-ÎbsA_'ÈâÉ ³bÌ3Œk¶ß'h` þ°r†«ŸTÀAå½Ê¢| •lÿòHµã§YH|‘œ ¨¢¥øÂ–@…u¯$¹@…,úq‚~à¤Z$IÊ8`B{t I ‡ú8£ ñaF(€Ã!°7ÖØ`UÀ’‚@€&€ þHÆ.ò"…\EdG:‰í Do° 2!€LôÁÀ±F⬙`ºhFq‚‘èbcÝÒÁ4$€ÐÀhj =‰Ž ?ô0Ѐµr†GLÀCç‡(Ù¼^õ?_ŒaèC/X!\ã¡À$Fa‡_Ì.I±0°% °•dzãèÆ¨ ЋÉÈÂpð1ˆá,ˆÀB”ñ%Zèÿrûÿþ¸¿’e$´ô‡"@`œ!iÁQa€©5°$V4À0–VŒ0”0Á0Pä%f̧>|üßU8";?ú±+¿TAY],"šB¡C*нJ$)Îúœ,<ð‹$ÌØ™1+ùRNiÔ*r.(—ÂôÇPÒ `¼â“°‰?ì fv¦†£”Y$01Žî% Ñ}ô˜*’ù#@1ÊPÆP»äÒ9AÀ˜|®ƒD¹*ø¬q2cÈGÀÊÍ8¤—Уªf*Õ?Šä¦š©X´$s$õ“a4Ë †-ÕHÁŠ.SÓ©²%pÿPÈ/4cÁ™²¢Z0‹0à„4ƒ*+ª‘Û*بv¥Uom£fˆ64€ øb€âX! 3ÐF3´aEƒ+ ,hQ2…è”3Í mãN …E£ áøçB ̰A Ú¨ÆDÐõ¢Ï¢¶·ú‹!•QÍ  l©QÅXà…´A(+€‚¸üA†44Ã0ˆ‘Œ/eÄT•™OÈ|+^…ÐÁ8<9^…x`f°Âl‚ð‡-*ä%P@ޱ€ilvE³üe×;ÞH|e´ËÂiÂŒ¯ŽÅ` @!V¤Ð`d¨D@@¸’ JðÆŽa•_.äK>ñÿH`Á…¡ xBØÕ“|CŒèD¸Yz)Vññ.v;8ÅiLDoQ<^ޤ@W¼êD  #AQ$ ƒÅb0Šaf ¼ìGK4-c˸7cÅKýGÉnF/†â/ߎölž#I_ƒ‡:¼à ˜æ£0Ã]énHR¥[è'Àožia+³ªÇ0š*r†Zð€0Ìæ@‚Vh\Ù½€­G¶|˜0<à+¢›ZÖ2ÞÚ(G¨êÏ¥Q ·=ÂI!ÌðM4,0ŒäÀ0ÀÃUñYHÊÐ0F%sY’ð«\Æ€Fâƒxú¯åÏ~#Ó6Øî>IVvÑ ðJƒ–‚¶‘!l»B¡iÃa¶à„ðBȹ-zËw3|A‘Y†Hà\í*K<Œ …ðk²<8… Öá‹ÖÈ1kn8ʧ³n0#âÓ@¥T(m‹ìG˜TÐŒeP+Z¹…£S.tLï$j ê01¬€wA5„Aƒö±äC¿:Ñ[ÆaT£ëÔ0ALP bƒæÞ#ÖÓŽÚŒÜR2ãT;Ü}«¶ª«­#q¿»€«Î"‚(´Ýxÿ;hÛ”nÀã= !ùþ,QÏÖ@ÿý H° Áƒ ŒÃP¡Ã‡#JœH±¢Å‹Šã/¬þnùµ‹˜·:sÄ€3gŒ?a¾v…¼ÕÑ,~2êÜɳ§O‡·húɔڱc HÍp‚D$Éa×Í««¬˜á§×¯`Ã" J“5  @òaÖ¬b~h#À_›Ž-:p–ß¿92ä·0X²ˆó:ÛD@  W {†ŠA-ªd5ø¥Ë–D[¹d@é JíÃ6º¨ÈBcÄ +: P¥ óŠ,òx[ÐŒ-·8"&ŒØ°qŸ„kšh¬2\‹œüÕª«SU¿/¨@‹lÑØ2 ÿAZ5Ë*>nx(ß8dyñºÅÜyÆ` NPWxâ„?$ðŒ.ìùcK/hT1…~uµQÉ qТ 3þHø›2 -!G&–{|UHË--81‡?”&Ê1ÃÁDTŒ¢ßCäòœAºÄ#ý „‹B¸üb€08O¨ð @—?_@áH Hi @-ã6…˜¡‡‰ÙPG %³@2fx¨B@# üâ™4ºõsAÀÔË3t‚þ5b§Nô³ŸE'0h.V‘9_dÅœ@`ö…å”q¥™ôaÇ/ÒÜÑ[ª‚ÖˆôÿâYF|ˆðhB$pÄ@ýhÆÉ¬qõÒ@“”F*%<@‚3ÀQHKr8¹·Ì´ VÖÀ$ñ-AŽ•ŸGØ(ÐU¹,rA?µÔ66Õz+B±«Ð/Gä‡YP³A¶`…,'”öîCª¼A Ma¬?„‚ ]AÕ†–f4#Ì.ú6XP—ÐzÀAë8;õ3;4!Ð ذA tüQ*cp…bÐÇ¢åÂÀÀèO.=½ERHRZbàh£M5"‰,È8 4(L .ªZzÐ#uØo"6DSÕqã9û°Ç5:ù ´@œ A1‹Œÿ2*øþ‚‹¼^áL LRT ð0Œ0{\pÄÑRAê˜(t©Áä¶OªA@p¡ - Æ –3´^PÑ­t…%ÄæÏ ÄàO (^KC7AW}óJ#¢Œ·Þ&'ôV. 0à¨* $ÐKg?AEèT“B˜rhEïm¨"°¼Cå6ÒÁt ÐO@ôCÒÀ† F‘ L¬8ÐFC#ß„!¾qF2¢q‰ ªÈÄò¢c_>!×"q¨ ¯œøÑA®’uñD|<¨F3ÎW¬=¤#´•:ŠEp+¹Jÿ1ûMϺ…vÁ‹ a)ð…?| ?0ðІVP 9á*äàƒ&€I\à‚ëÉa €!*¢@Åÿ˜ÇŠ#¸p'⻄6ôbµ)ä9ÐJx¨}…«2F°Ñ€>øÇE ÈV€&ˆ+Ÿà"=#PA ÂB™]ä Rô‰HÄAL5´!A~!6ˆhË+WÑ' 0X§ö)YaÒôD|/ȃhP7àÐ$ˆ)C!fä7J$ü1‹uxS ­ÜæL®–ÜáŽ0qHÁšÐ¾ÐA `àwÄU¤bŽÁE1Šÿ‘$€@¹J1ïxꀸÁ.|Á‹ËÕ¤ ®»ÚíÂ$‘L]Ó!a†F•¡Œ8 Ãê€@ïJ @áÄÀ‘*¸ô‚O Ê .pÍFP@Æ[VhI\´#÷ÀŒWJ1>Ür 5æD¨) ø#2!Œ, R-k‘Ó=¥E"L¢‚(E-Á‡Îìô!ºè¥òÐðP¹'áÆµ¥ö¡?ð’2œÑ pabhƒ?V dx‰ ²\…Â4˜rNî Uµ*Aªj‘© ¡¥CtÁ‡ (MðØXÅ­\tVÑ™7Pž þH(#ˆ¡àÿ´î•~˜,f“Væv·–­%O0ëÍö,,³Y Ð ²" WrH4P+¤ ¾†b/§;áz²þØà>3#(€©OÚð‚ThBÌà«6RpƒSœ¢ÚXÀ1†1Œ†>¶ îwË™`Š&¾¡Å0š1Œ(@‚þ€ 9`ÆâA^Jµ À€F0 g0‹&­¼V£5àë$1¶«]ì<ò‘Ð$ÎXp2À4ᙥøB I¨ü,qB ´A‚þF£¡ t¨‹§LeЏŽ#X®²–·,–À,Ðu~ˆ1E¹Læ2D>¼hF34Q‡-ôîÿA >°k°‚ @ leJÔ‰F4ü‘â1›ùÐñ@R, PÀè•Ihá:ÕpO’À2\@q,óG(`@,€‘8_nÿÂjÞ†©Àˆ.ŒÉ2 jÔ!gp@.ØáD àXDõ¾²Æ"2*A À‹ßÜâ7ÃHL„±Ü}Œ†“…u¬ Ëe< g™gB@ã¯@@ÞÛW/p{ûn )Ý F€ 8 ¹šÆ d 4¨i.¨µ"Îm[ŠvóiL¸Ã6`h¡PéG#ø€oqƒ¥r„Äš€'´`- Ðäh‡64ØàèÿÊ+CB È1GâþàjB…@@ˆ‡ º14™± A¼I AÈÀ@8ó„$aþè‡ÀP‹÷5 X±8ú € ˆ‹VŽ’H´à=‹³gÈ– 諉$ÌYc±”Ųݰ]Pì¶Ï“G©À¯4Å@P3]ÑJø¹Ï‚½F Ö¢€'š›Ï]¦B‡Kÿ ÔágÐ@ y`A%lŠGÂÔðÃ24Öuù Xl¸àÄ+dAPã`úÑ(°slÕ ¼$ D×­Ð|ÐAÖsxF}`+Ap‡à0  ”“KåfÐ2$³uçqu„±ià/àbc`XÂ@ Ì YàÛ@€‘ ²ox“r„`ñÖÀ  CH §`['e"±XÕPaPN’A ?òd)¥%aÐ%Ñ;›b9%Guks ËPk70p_ à€YQyþÀØ æf ‘7P=¡— Å`ü§ ¢Ð‹€OCÿð;C24…!;!13 $ðÓ>r"À öÀ¥)€R)¹p‚o” `Á€@³q:‡°W¼!R!®ó,c’ÓSÇ2˜g"ZþPqÜò ™”7 € Æo ¦%t°0xtP<`3ô„Ñ)A –Г0 à¨âzã¦sqãð õ0.þ@6áS÷8È qP ] µ!AVÀ0?²n2‚7"ÐŒè,Ô ÄÕ@ ”XC7AÑá¶ð ¯@гÑs²DXa œ€8—a@^[× ¡jðäqPMP=à ÿ+  >(<…=çJ©P *¤¬°nö"¡dy¯ ‘! ½GUYêu\_!B :Á Ö –àKœw| :H8.¬ÀvõBpÖ +ðPVÁ opxU¹çájÙ9±M I}Pi)6U@I>ºdhþ¤ŒHELm™âu° ¥Dèà ÓpúE 6Y&U°¦m3‘)ÛõlôlLç É0‡ð&Ð "1𠣕©X³!² |PHe œpà(µÀPP ¹0sâ ç‚‘9LpP .é€þP{¸'9WÿY5tU!f”“Ÿ …pR _`€x8œÅ‡¥! I©~bÌåȰ©0 èÂ? pz¤dü÷ð¡²qŒ‹ v€ ÙyN%" ”†¹÷1‘µb*va9.!)º ¨  yœå0ZÆGB À¾;Ç uU¡Py°"‚Q•¨!q¹e¨‰rÄÕ'šwšw("’<á?·Bð:êCà3ƒv‘(‡U9˜Åµ%ú?@?ð+ðª0 'ÐgþÀ2 €…  bv f•[õ¥;qN´à᜘0 «°ÆŽ†ÿ¡³Ð@¹×!µM*Y~ê³¶©4Ñ1EqÞr80d¹z1ƒƒF o¤Ð+[ð4Ð $`h³§b–©ˆ6k|;½Ø©ÂA µ 7Ð<ÐuPc#ò, dm¼­S¶«ÒZ­–Rc"¨xÖÚ­]FšWcÚ@ Äp ò@®æ*¨2Gê­îª{Z!Õ 5J@[pAЄ’ p†€Ð_2hã”!~ù®ÕÊغ°á ¾8ðð%Uåg%Ò :P!ÑtR¢kðáÓbÉ  3à;+е Ýÿ±±¡ .9Œàü…B[²ZVË@ Ë,Ð$tñ’ !`gšö×Pв¯*]°dÚ`Ghâ4 $K´<Á©ÔÀf¡¯ˆâÍ÷ ÝÀº $k€€ŽËÖlÎz9«I­á¡f«œZkË!ÍÁÿÙþ¡ t<= Ø E²yï¢lÇ QþH‘Ð50<ð]we 1-{±r»AÑm&nöº€ c¤ËÙØP”8B  ¢~¨qdàì’Rð{°2ð_P vÕ…_Ç µ§X–ã1§+ TuõÁ¨Ôˆ T ¸˜Ñ ÿв±wÑ ²éÐRÛâà°…"plàï@NÕ{|á…{¸/ú¿ wQ 8Å\ê«–1xåà±qJQD ¾¤åée;e—:N ç­{5ws Ñ5¢½…O0„þM€p&©™¡§ûJAÁ_~ÐZÁ1Ÿ±ÁDè©€ ¼dH¢pQPúT_P,ä‹"¡@…!¹X~Ã]ΠXüè‹LÁçdº 1ÏtZ?çà•#|÷Â'Ð @2g@Öh€à(9Œ"^0è@~JapVÂ`]03ð1ÌeWeq`$À²…ÿÐþÀ9˜!>`DÀÀQÆZeUÁ Ú“€!' À9´Qo2Pqãbà°%'þp i E&g5TÖ§h¢Ì`ÑRÐÀ›"ýÀ@£¡#/ø1Æ1çe2 €:ÑyÍw œ“üþ@dá`2pßå«©É1Í@) i g G°„y"¨g† _ÀÁý°h$+r— Ì! †P fÕ¿:àï«DQÅ}ôXñªD¿q ñ« Hð“®xmD   º ir¥g Á©G0µ/M&ÒÐ |ÿ€8…ÊÒtålaV!BžÈa…9+D€pŽe4eUÍ }‡éî© YÁ Àð}µ1S ™;aœóx7È’Óñz‰²"Ñà[ Á>Ñ5à„†S @£³½‡C̸’aМÐÏ Ïà˜vÇ?þ¹ÀKdÇQYà„P mM«Õ•”Ð É Í#bË?Q‚Ñ/½TÒö¹ˆô2ÐÒ8€Ëx’æ†Ý ©|' p@@GBä˜dÙMà0¶ê ü¸h+7¬íSÀ>#. ÉÁ˜ ÖZÿëÕóÒŽÍ€ >DÌøº ²Ì;DE^÷l´CËŽ2A‚df99° 8Ð$qj¯«‡0Y p9È Þ¼ù3¡ 'ðÃ]ÝÑQ’Ȱ nàKG;0-ÀYŠ.ñ}ЪØöˆ²UtfA · Ô`eh¿‘ 0M âFáa7‘(”DI&!P†PÏEÖ8Ã`‘¶©ág×kR ¹*¶Ë@¤ïAU4ñ!1 ÇàðZäµ )?²½8'`%mIÀ ¿“7¹’F<1·Á40 9?mQ †§þÿ‰ÐL"%Ìz%­Ø–)'MY°]j‰ ¶éÊx„æçáy @_`E *“1±œ €ÐˆŒØV‹ÝK³!qÅÕ2Š€!>aà^*f´Äê@Ó^°jöàœasí%å?   êÀQ˜]×GÛJ93¡QO%*À Xv' þ@qlÅ †ó<÷£?@^ÍS¬  É’ý ¨ðˆPZPÜH ߈ åZ ®¼O¡?fya ¢HиÅ´8Ž<ž`»qo0tP²z?P Õ@ ·å· A V×@Ïÿ6 Žæ®Àî)B `Èð1*vë']–X‘¯0Dìà(ŠæjÑLLÍ/84Z |¾*Wa LЦT/¸ÛeºWóJ [ 0Pð'`:@`Ì̈CChpäÅ -Ô֙𠑘Õ@o,€ ZSk̈ ‰ûIQd“‚!&&냠[ [¤ }ðQPÏP! GÀB^¦5†”? 9L{Li‘+¦S`\¡K#´=<ÄDPÍBÄ|¨yª·hiv ÚÐ)Ñ ¯Š/€4µz 3°EµÐÜ0™ÖXDò›ÿÐÕ¡OÁ_ä¬ß”¬ð”x„7€=°Pàå¶¿-Á ÷® ¬÷ ¹À ì–úñn•0ø âÏà× úcÅJH -"áOŠˆ ¸-䨱!° NLd€êW.[Yéâ´¨QÅŽ1eú›(Â^®˜ ¨šÙ3& ]¼íòç+ŽO¤þ€%õ) ¦Q ´È ±†LÚÒÎÑ—‘'Øéu«®b:H*à„)96|S­AW¤ªiÒäÏ_°`Åù+ÓOỉûä)m±Ì†¹\Ššx/•^¸z64ÐçãŽ3xÁ€ [@v6|(óŽ.‹9k–ÿÁH¹#<Üû0ïß1Á&Ž´A’â>u½’õYD]9Yuþ\|" uü1ãNËB…0V S§š3Z´nù£ÅÑOœ£ wãž?óÖzƒëMöWaÅ#iˆ•䛨#U&±¹ùñ§ƒZzê è<š“ꈛ¨\ð…™[â¸ï–÷àcÏDÞHô+¸Ün©Ï§ûì‘–f¼iJXáTù‘ÌlÉ ©^FYl¢O¸•.˜DUZ‘ ]äBJ` ¸G€˜¸ì©T*œë û„.© ÀüY/½øâóé·Þ¢ŠÑ=?à„OD•ñSHÈ’+b"UDÿ$\ì(#™BR€~€«™X±%—`ì‰Ò’€1'F:8¡¸/ ÐÌBè(“©6JÛ…xñƒ6¤|Ó5¸ëL.½[ªyç˜,È`á :q‹Ž°±R)µFR…8Á…BC´AîX‚£3‚‰–¢FáD¬„Œ•Dy4(UiC¨²!4¾x·§f’á(½öV”ŠN]*˜©;Ûì(X\0Ñ5€P]¤p饘T$ª)OPÒj@dR±K(p¡x®E<+Рjð‡FP`þh-C$8jÁŸaœ1ˆ9÷Cq!ürÝ5¦£Ùú ±™þèc‰$€xã‰|¼ÿ£”mÀMÓZK1VRÞw±æafüA šñÀƲðà˜žâ4ÌW¦W¾Ë×™ð‡¥b²—ghN€Z¨íeâÍì%ú{¦*![oæH㘣sS0XzË­°Þ`ñgt½S¿ –1ëÅ€FÜ-H>ÎÍÅ“T T}®(™ü.M|1}wâ‹ïéâlñäÕ¿ˆÝœø`à÷©r6H < !…¢¹åýŒŸøáõÎ6u-* ‰CU‘åƒ ÀBߘäE „0* ¡™f,ˆÆgìÉ "*Úø ¸˜Í„'È#2v÷åÃðÅ0!hÂz`ÿ ð¢|$áM" À’ 5Åœ4^2H'`†´)#`øaØ`Ü"9uX½)` xøè7 k R 4¡ P¢ƒd€‚n¤kH©›”*6Ø<¬‰~ ozµ4…oI;b;2"8&0‚Q4x1Œd CiÄ€Uœ@Gx†;‚ $eRhà JÀƒhÃþc_†æFL0Ž›LXLC´…$ÃfØ(p DjB胶zÔ CÐ1„ç¦9Ò1aïÉd/KÈIŽÈ1>3êaÔà ÀyÅ @À£‰ A ÐCZ  ÿÿE#{ÚÓz\äKp†“-üáೌeÜbôÅ.v‘ÎûähEg=í¹˜vä“Á‘ç=ýùOâ %¨Ò˜Â1,hC:ŸOæ2‰íù9G¼9T£¾ôCŒÏ[ñBÞðÆ ƒ.ä  Æ­:wPŽŒp£35 ‰ötÇaÃ)ÂP3¼F sB Þa61T`¼¢iSw'ŠÂBÍx@)Š7Ä`1ÈM^ŠKpD—sjY‘ØCÁ mDF3r8“Gè@Â!¤‰I£vøBkRRD-õGøÌzؤpsOîÜE}A4@ÿ¦@):q3!b=Kœõü&D¾81Rà„-4 A­¢~a JE >€?j»0± ô³M zRpMäà­,pCxD( ¸FlcØU¤€°—ƒ,@Ñ †/– ?ØÆ6þïm ÖÏÝo“–ô‡6(1+ˆçPµÐö`ÈÝ#j@À©ü@` † L0ñΉ©éÕd©QelA§€$¤PÍnÑ€ÝÁèTØ¢ ˆx;"Þ«±Dºeprâø`Iþ C~ñ¬¡ ²PA‡ðh3áUŠ[¬:NÞ‡šÿ¨ƒ‚4@_n¹V%>]À"PÅŒýц8aè`9å8'"ùÈ=Iò-xQ`'k`YYÄ$')#W.ŽÅø –IÅÌ@vwB j´ uHA5†‡eÈ ªþ@'®Ö š6¿ÙM Êœ)fŠÂ¢þHœ=°¶[¼N‘ ôL‚fíŠà)@€`7hAi›1ŒÜR:ó<󥑒és:åаA¸ò TLÏ-²˜Žg‚ ¬šË­ö ‡~ ‚˜a²‡êÄ 2`*Ž ˆAZ€¨œAÄ=-7/ÃN„§‘b‹,©,q‹‡ÿ?¬d‹M-B #ñ²T‚€€ЬG“h„ È1¤$”#’0ÈÃðˆM,@}¹7ñx¡oeû[+0ÀT&‚ ,¸ûpÃ#-¬âéêÉVÑL”â5˜ƒ"4¡ F”<9<ʦ çf'ES¿ Õ© dsÅLâPÀ†.œërpãZÈYAüf½» ŽÓ¡~²Ä´ƒµ ¡bþ@(PɘŠzTp‘*Â. ™A`“AŒaÀéÅ6 ƒ=êv•/ ¯;S)‚FX9êp_ŒB R Ø…×H &o`ºPÔ7tW¾ /n‘ò¾K… £ITjÑT$Àx= 4ŒÿÀUYœŠ8 H°…Œ=Ê÷ÛÍx^ð"œ~;h‚ñ©¨¨b‹Ã$9ìPsÛzað¡…Õs‹€ `Í/kÁFý×?=òŠ¡B jY\À]þP’?pb@[ÐCÀ1¨„Hîðeø—[7c2Ãj¿Ã %†e ¾ù3”=û«<™°“éTè ]ø;ø ¿ãó€ñB‡@Ú…£8?ZX;Õ«Àæƒ?; Ø€èc`‹Ù»?ŸH…Fa 1Q €³ƒRa8Ÿ /fP ˜†c˜†°Áµ°‚ ›…74âA:ö`ÿð‡@b€7Ÿ>%ì &ä<°˜W8ŸSA…À‰Š,‹Z貌 +¤a†Q·ÐC1x¦Hô "5¼§àcJGd“h9ü2p€åŠŠÉËÙ€&D ¨øh„…À±Mრ¸DL X0°1hÌ+‡æ2"À‚-ã iª„À-†b˜‚â&ƒ0´h`«i0ˆ¸ Øøj3`謞† PE™Ø>>ô ª1ˆ¯É…\†WЂ;?(¹)p€û:G èƒI˜Ç\ó‡ð34½J ÄP¾íh@´BÈ€X9X‹b°6ÿÀÃDäˆíÃȨ˜; Ââ H€gè†Ø‹ iÐ…l(‚øƒ †´¤=)?f@˜†,P8¨Ÿšˆh„`è†l€œ…ø‚è+ÑȤ˜NðHBlrL ±¨pÀ«¯“ @ˆŽXFH;LÛ¦‰@Z¸#^h'èUè7X…g i(†F„)Jà”q¬¼9´@k„#>è‡dŒ~è)Ð< IŸ[ˆ3à §•ù¨¿ 8„É:?hl(€#ü·^X à¸è‡CôU„r‡3`…^¸h„V| >È„ÄD6…˜›ÊÿsÜg;$øë餃){k“æ§ü¸€I\Šƒ`ƒø†•Ì‹©³QS…>H€^¸—­øÛœ€Ü\ŒÃìMŽè Xœán˜€Ià’ ( `ëŽKd={c¼¤£öÎrƒ˜ЀÕ*…>xƒtÀ!¹‹‰i¶MiPÏùdŠöd 0•‰…W` ÔqГLý$gh@±º“ 3£äø‹8xƒèƒ^ràK @­K€_0™©ÍÛä>Ðà‰`ŠTÐ\—æð‡~hA$NI€ ИúYÑÄk´É¥¥ù t/¾¡N«Nh¹%…ÿ50¯[Œ†è @LYPÃ\Ò¤h„^g{Œ¡ Q8Éÿ cà„#¸€V »T…U‡´!È.R˜oX€¹a\)‘â¡§%°¶”ÈøKUè{‡î\ˆ†ø h…QäˆQ`öÄS¤h„©ô®àƒ—CQ˜€bà3¦xŠ—hMË[Q p†d '˜¬6@GÂF ¬…Ù“[±4½á``Ÿ(œà£2!½Tå ªkÿBŠŠ»0Yõ =¥JƒÈ…8•ŠÌ»Aí\0Q{耼‹øD¸‚E(LÐ-€& ` è5`k³ç\ ÀÁÖ¤È>ÈÿºÃ¼E8 N¨X•y sM %uÏXDvåEÚã?°*]ÀOÑÒÇX[ÓÕ…HØp¹.kƒ¡*ªøµžÑ“ÀP‘Å Q¶ÀªËR·èÉ!!Hמhd(YÁ1Q  šè€`Í|%Ž6(—\xB•ï€ÓP€C@‡d2eŠ: %Š'™¥] l€E≘Pƒ@Ê`ŠF YÐÀ…µ T( ©˜˜^8 è2ëWÈ‚þÙ¦é\‹‰"’¡†êC= vÀW™Ø PE¸ÄA`‘í‰Q›_¥Ð)€'ÈA8ÿy*h´f mbBš7 ¢)â˜×Ôi¸ð‡ãD‚/ø‚CሇKØD Nƒ]¬EŠ\ ]ÅèFkII‚^ØYI€ pt b  ž@Œä5ˆæ-]¸ãa†h¨÷r‚Ž:0^`ˆä4@Üç5_˃¹¾ß­á"(‚(ðG/1Ø‚ˆ† ô\Ïé 9Q½MŽHY™ä4ˆaÀKõ‡<°‚Kp%ðbøµ„T'à´>0 î‰\÷DP• Öc°…ˆ/   8>˜„ÉAƒà…&"p‚P¤°{À¬F1g ½¶­áb†$Ч2“ rú mh†‘J¨5š)h€o4nxW9dÑô:V5HW ¸‰LYè_p é8fWgFÌ»¸Ž0`›e `ºå3ÓµQ‡,H¨  GAbYÁ}”Ę („D Ô“Á¸nÒߢY/öŠÎö@‡˜ƒ¨ ƒ¨µj*0Û³ɰ³;®… Ø[éЋO6jœP—ˆ ‰#‰b°#¶"²©ô`@u ¾/¢@’Wé‘’øo5-@fU¨…LIÏlƒÿ&ð‚+øuPôС¦ÃÉK k…B¿hL^ZpÄãëÌóÆFІh‰… ¤“ ë^h*ȘÜî‡qÕÐn›>&áaað…â}ɸĄ Xh×´ØÖ~… ’„ U¨‚`8ƒ@†#w)·¨!ØÏÍåhD3^ðñ‡8…0ð‡˜Qð#†$^´°XJ9I`˜è1‰ŒT¨Öòn†óŽyö…è…èÙFRï@£Sሡ6¬Qñ®ˆ-P·\;„ˆ†Hëœäv€™Î8ð˜p¦N 78ÊNŽ…žãT  Џ€E€^ÿ騉síj€ñÄ2xÚ  k f`ï‰è‡ àƒêö‰\ƒ…h ˜¢ð¡™ òsF€Ά¿`]àQí^h ©¸h7GŠøP€ËL8IèGód‹^†_Àâá ¯XS–ÉÖ™ … kDs1¸ãIxrÈ$€»ž ”@óL_s)nó+Žøƒ)@&øÃ‘˜£ñ3Ö]\È’Qhj™x„HK¾±÷xc†8¨†+@€D™} 8…_xY¤;(~cgMo 6ïôŽàÝ‚\®—ªé‡ pÓkoV˜æ‘ô ™|Ñr†=~iÿj x{€8Ð=UXpÀ…½ú¢”…¦´Ò–Ùððb—Ž#ÈwIaócèãNò™š‰}H;óðT íÊç OÈR©høe Ÿáwè ¡$ºSHØ^ ]`=XðaÞ lØÚ.ƒf”ˆt•èõf…”·•Gv¨†—O ™ïN@Š_ Ätyu®á¢¾‹‚€… 8ØÛJPŒ¨e ¸%8>è‚×éÕ—˜Ü3€ôÕ m€”my²¿÷W`ù¤@€Q¶ïxû¤Ø”`h€@Øz¨6®IýˆˆÇè*íàˆ· ç(€=À‚ÿÔüûÁ2 ƒÊÝÎÆIA›‰ÛËyd…x¿€{ï–·‰{Wsyô‡iꨆy]¤Ha¶àЬ—„=o(ÈRίBŽê…é ‚gˆâ ªÓÂPö‰­ÈvÃé²iy…ÿ\õó§Ê„ . @„½\ Y±Jp!ÆŒþX°Q‘ß q`ÁÒxK#Ê” »Å`PK%LŒn@‹éU’`¾ô;‘iJ‚_ºlÁ¤h X*QªœuÂ&J‡ý&üšÈÊΨA ;&Ì߬8bÅú; õ¬J-hUNÇê&E¨s¡©Â ”€I#ZÔV/ ×f êÄ)OöÿCHñÍSÂÔ–)ô㇤??„ŸîS@•$ž³:“«˜Q†û]X¤K%E>.ŽNØOƒ†6L;|ÈF1J)˜y.³ŒpÃH)k¬ZûùÂRŽDC'­ËÀ…~E¤*ö#E÷hvHÃ\øë$ ˆYÎ/Áð-Z–5Gêïÿ¿Fû¡Nu"D¤ñÁÀRt°.V0tæaà Ð0sˆ±B$€?.hDK™-´ ‹ )·€™1çÏM±„_ z¦Jh:*ÔÁ ‰ÐÀw …GásÖ 3MҒ̆N( €)C B´ ”¢?ú͘Jš)tÿ’ þÀ²‹"Ð ¶¼å#a $Mu¹,rAu@‘ …7^…PB¾0ãO´ÜR4¼l™h—ŠšÅЗb¢t ¦“bšP´ñ‡, pS½ §BÉ©*"$€ a¸äŒ? ¦´gŸ¤MHžgµQ »Ü"¦#Á’¢–d‘å—ÌŠ9©J›Êˆf)nªMŸ¼ Aü¡ÅìcjL½ÔæÐ ­ˆP‹SÐ Påb€ D†Cá*!’µýÑF[,¹‹£øå‡³ÖV¦™¥0eúpB™¢èÏ0þhÓ€€{™hAÁÆÄ…R.j¡¥j' ð¥‹.¿$0ÿÔÒA*ØäˆÑQP0 ¯0ÑñJ®pí:š*41G&¤M€û9ýå Çd\ÂcÛ$3ê¨CB4ʺùsB#|äâfF½0p2P`áD¶üÒ€K†uÐÀ/pÛÂÉ@µí»ÐŸ=Ç´yC B“%ãÓS*£Ô&A;éÁ 1s‹2ÊÐâŒÖ4$Â(Ývr‚C’HÌÙ##d²Fªž0 é'HðŒ."«8.¨uÀ®4ÒÁªµ‰Ò€D€³b‚§ô‚?u ó•Bd¡Ô_ãN/n½ÃÒb¤å-ÑTÓÌ]á@ ¾ØôN°[ öƒË\£&U# Óÿ 0 ôÁî . ?7ÝÎH{3À(”צÈâ@DcàÂA(0%$ð‡3²¤-§z1‚Ô²§½²`Šš0A6Ö-U€ èÆÍüa‹–á ùêÃ"<цØMà8G g (Ĭ]ÔEýtx½ÅQ ¨+C@Q+Ziä4ÿèÀ2ŠWtô¤¤a…Üð;˜2¤vàfp‰#Q^2Ó±¼é‡Y”$„f…,6ê£jD¸Ð…Nè`îªéÅ"è$ÏœCŸÈâsØS?´ˆ¢}­M"ë]܉t¸‡@7¾ªÄp›Èiy»N Áx@1¡ q¶Îµ‰ZG£‹þ11A–‚>$\„D7!ÔXT™ž+ÞÎD—²„ù†,4³ ¬€3À`J1øƒuhÁ·¹ñò7%p(¹Ô:´A­š@9ˆÂŠ( 6#+xò „X Âì/†×R’„˜w-ßX›2@  eÿÜ †ð ÞB |!ŒJF EhÄf†sœ©ˆ…R!F - $¢B€4ð@€ˆ !.>šFÐŒcãÂZº”ksŒá‘ÓFÀ€a@\ À´P3œaÀÀ @¢™$£ÃÈéö´¬çèÅaXÇ2‹ÔÔ‡ÔEõ,È3t~5Ë]SZ"IIHB,†äÇKŽÝóž™å3¼  µ˜ÂžQÛ&ˆî•¯JÀ3;”K™Òô¢ÂŠQjÍÓ9‹¥¥Bl¡ mèD«´° ˜ªÔAƹ¼` .ЊvJ“` œc줭ù¹j3'¼pÆ-,ÿ.Ô  00à€n[G(›ï¸ð¦!$$™Á3­§ÅAe[Ë–Ú±Œå&EÃÉX!”€ƒ€ [ø‚6Ï.äÐ0±£*:a4 taYXÀ0¢ Œb»ß&¿ÏÃRn–>ï8QÅê 1ê ­?D »U÷ DEUÿBÀ ¼à,@6–X.}ò¥cDåNO ‹–¡ M,ÃpØÂ’Ý#-¨ØB0bÇ ¬ —PD ¨Q ,ƒ7&!Óãž§§¼é4f²Œ"“€ Ø‚º%Q¬ :èmTÕ*7x!lhA5´qçgM;Ër¿|FžÑ”•?ʰšÉÏXx‘‚!À|qUUæ‹ C¾p{B¬æ‡[ô󶇊æpmnj,ºÇT4†‘Œ‹¹`ÄPûjÃÎÃ÷Ä%=Ëß¾ú Éý´¯ß{–#“¼Æ2L¨©S]b6¶Ü©oýõW'‹RNcgÑ„±¿þý‹¤cŸwûóßöÖî?îö ý!ùþ,QÐØ@ÿý H° Áƒ ÆY(¡?? #JœH±¢Å‹3jÄx«cG‰q`ùèÏã­8¾„ù«3§ XiáÏ—H„°ÆÙȳ§ÏŸ@yÒ¢µÓß2 ´yó–FÁ‹AÀtG‡.[¬XU´´«×¯`'šô8ð–¿¡´Ž= ÐF  È´†­xÀÍ þH!ŒšŸŽ‘"Ý9r¬Iƒ„ç*^©ÒÆÝyD–Ä'YàĬÐƵ @AÅ5õ’Àœ!´H/ÁŽ‚pÄÈa¸ð%ÑŸ/q±C ´•"J yíü`±bK0 ø(@-£L.Š.<ѯø®9žABu%ämEg: >è‡'öãS*d±®ˆd C3ü1 _ì"8À 41¾21#WÃJa°BÒ£žTèPÁ\eœðG*ÿ&"´!ܺPT‘¹?Ø o‰ÜA†t[pbtQFᣯAPð"ègV\Ã2çUX"ÉŠù í ö¨c}"€~,‚ŒáÖŸ4r‰10‚Ç FIc´ÆÈ ÏhšDð¢-°Ø"©+à D‘ `˜‰‹øQWè´…d#€ƒSXÄÆW  "BXØra"L˜ #:`J'Ѐ ža VéJZÀ -’èf""@BlaQ%MàÁ-xÁ0©IÎY Ôˆ.G¢“Â$CD©2Šå,Ä&N©‘Š‹ðŠêX'#¢<ùÇÿÈj"œ@ÅÙÀ"€0à½FA¨iM‰|o,PB<ŠžIY’,É`ƒ\ÔQ¹M°„$`Řb$ ¶e"DŽV<j"AŒ!ÅÈçW`ÐŒ41ÃÎˆÆ ÂP‚ þ@G3œC eˆ°$X#‰Ö11pq`Bz‘¿~¸HöÆUþiC9ê"u3ň=4…Ó>|e&ІJÌ2N\¦1~ˆDFòÈŒ«Aù´¾b´a1(¦p‘ cèÉ^3 "³Àb mœÂ/~‚ °tbpð‡S2 £)¨CR`gMöµˆ‘b†atÿŒ  ^‚Ð øÀ'E©@¡SŒHÅwtÀà0Ëlh'á„­tÃ2–ÉÓш5¦AƒÀa Eýƒ& ìað#ÈqÛ€’qÁÔH5**^N÷¾’4Œ~ó0“è’!ûÝ/~L`‰Àg'·lÜCúF©øÁòñå4Ú‘h$CÉðF.‘<ñNB G0Â5Ä‚'Èá 'ø² eõÂ0®ˆ~2µ¡ð‚·ðòP -¬ˆˆ‚=çBH!¡ ü¡€CËÐ%.¯cKùœqˆŒtŒkü‹­)‹!°Xã˜@î"/ ¡ÿèðÅ0æ<ŒfLãÓÐF ª‘Œ¥.ìLõ‰jùªÌ“Ô'Б.8\\±¡«ù0.^5b͇ˆ*‚ÐÆNŒ¢ ØÈ…46e‹p£ È\@€+°Vb¹…^ ½˜áº>‘Š,³ŸþdZ"ªhžXW¦œ | Õ™CÀ v ¸Yd„e‘i½@3uˆ‘Á°=Ìuš¾nóAî±#ñL«.%‚@Xc ø‚ÜÄ=ÖbÙ…0ÐÁ…0„¡©´“ãÚO¸!CQ†Â.‚W€(+%¥ÄT¸ÑDDñ(ád\¥FÁ(zkd‚Uÿ†B)Š"øÉ)Af a£å„ EÈ6Àx| \H-T 4`È´Ä õs‰ãsv?&Àî½¶%"F£¹ uµ„ ²?`‡_è¢é†=ÀFvO„VQOˆpáÒ ì)ö`@Ü",e ™Æ`[£¾€y8$1Ð÷Ñ Uõ¾ºøE –Lþ@ýž¾÷ƒHÀh7Ÿüqª¯ŒœTˆ#+8€ P¯ì%Yh‰ÑŒaÜ‚j”ÃúÖ BÅÅ–ˆ¬Ã½¤!»ØESý1/À†±O‚Áö°±°SÍbP@üÀ3ˆÿ‡ŒUpXNµÅV1#I¶¥;Hƒ6÷ˆœé‘ã…0¢Ñ¤ $!yB¬RivA­Ð Ö— 3ÃrÔ ÅPGR!؃ä uƒ@ Da3æi¢pÎ`Îð5Ðm! +ÕxÑÈhƒ•Á+¶^ðÎPZËgÅÑŸÒ•Ã!´ 1;QK†t Åàç°Y ½ÀàUª(ÅPIq…ºÀ vAá;á7hʲ˜Õ ª rcP pvÖ! nçYQ 0“@™e`T3Í@@‘™ÐG ybÿ"Pm$Eä HD@ô;P¤†±Yñ ª“ÁæHçm¹`!ƒˆy‘Oð6 +&2Hx*€mP ކ¶ð UЩQ €w(3¿€y{dE4…‘D?ÁF€uP ÕÐbÑ{‘`qv?‘y:wd¿P…[QM„µSâ‚ WAQ°%1 `9!a°&§ XD©ÿ!©`œ†zbÉ­ MJ<Ái €cÐÉ gQöMRTkdâÍÀu0^FXwµ¤^zd¢!Ñ@ ÕJ¡P’." > 0 Þ§5 ”ð¥všV¤þ|¼€B%°[P På ëéI`1àÿv§Jš0cJ J‘=0€9¥@>!p¨<á}¡ »à ƒ£ŽJYöUci1< Ð*¦1ð 0bžÉ¶€ 2FH0c  BÃH¥*‚ zªsáZ¡øqÀAxÑ Ë¡ í¢9³o–É`­9õhñbÈE—eÑñ²ð Ö´ÓÀ˜nÙº`©°fñ”mg»àTp ?Ób€MP.`°,ç”!…AóY®ã:Ë:ÀkqE°›¤×ÑÕ·üÓ©‡A7¤ Ʀ]©d0eB°p ôG®¨¹ ^ÿ„UÐæJ`/𪓲i-:Ù‹Í9p2Ïw£6}ƒt"`t¬Y¸«€­L´°=ÓH>Q1Ùðû™C™µù77ö7F_%Q¤°r}rÉ A}+¶-U'c(“ðÇv“ Deu4nV ¦a u§/Ð`q‘'±¥þ‰b¾<á‰.ü Ðh?_÷ñ’( `v?áh¡fØ (~w+§lÇàg ÚÀ“™Óœ8M#Y;a¤ ®< ÔØÑÁzR€ÚA0 ‹P¶` ÏвÀiá:¹-GLŒ6:ÿ™×/ÅU”§iv“@jÍ¡»¢…ê q™-ÉcÉÐqXW ÏV•…Þ0&@ÝD„ M€Ý#2PÁ ÆÐ PÌñr¸Ë,Ç Äv}4 0Þ½ó;æ]>ƒ± è] Ð Y?Àð|ua ˜nP Áà mtrP8ûàÈ™à}+0¡l‰¡ÇXçÒhr{·€140d€,è"nÐ€Ç q…¦(Å` l;¿Àá?q@^me±.ðW÷D{V p ÐG`…E` éQ8Èý¤ŽDEÓÂ0n-ªðhÿpÔÚw:‹ ƒZô¼Ëh‰]†gþçk(€•Ö A-.dÆö³'Ø€–ñÇþˆõH»± Ë@•ôqÃlpˆ“àE€kÐ׀𹹠î4"ÀHÄdÞá‰hŽ}€qV¨P†Õw y©‹Ô‹$£YÓ 0`X©b°3 ÂÀ $0ë·XC(½q ?ÓŽ ñQDþ–| DA±ëàÇ@IÀXDp=â` {BG¨í“ U`<" 7Ã(  6МApç,÷ɾØG—Ò“JSº=‘Œ•˜Ô‘9 ð8À*± ¶4› ÿ–SD€ëh €ò]aÔzP+-ÅШ ˜`ìÀË>§ðÒ3P£t-p(PI€Ç>t:4Ñ»>Zm0Í_P;nwñОÁ¨ VÁP^QD¡À€É"¥rÐé§~uþP4ÐZ«m$óÊ@aEˆÓA÷ð F‰<° ¡ A8 7°>%Pf@ÜÄêGØAs˜å‚0¿`¹Æ€ i&÷PúwûŽ; ¢è«0•!"mÑ÷mÞC0%9î>pí=ÂG]Ø<‹Ú²*¼Œ à0yqøõëú=ÝVÕpÖÎÿAK‰Ì÷QUNaÑ€]ÅòÓy•@Û  ”fL-‰ñ+Ï [Ž _æ-mt$£²h‚?„ .d¸P*[ ýáJ0IâEUü€ào1„Ën¼XÒäÉ„~T®Téoe„·–-#AƒÄ+^ JD#ºtHu¯–€}pÒe«×(‰=3M¹ìÜÐ ý X.S¬Äžä# åY„Ú´é”qÀ"#¸ü%‰bñb„[üY™0Î_˜ o)¼ÕR¢ƒÑšd‰˜ÖcZ€Ö™#‰ª ZýjŠ'ƒ"$p/U±\rOÚÒõ,,µúÉòÄêbÿ;¨‹O(QÈC³f3®`@@àÏè„v»ä¡áŒ3ÝÑ¥£$)ÑWBAŽªô9! Ó…œÅÚž.q¼.*¨&ˆ¸hLb±Üåò†qŒ–?f·˜E›vl7rP(2 “ï@]L1…¦'‰„l±%,MQ Æ–± ~R¥UPJ%—‹àKP!ü™Xü¸å/—T‚åFÃü‰dÇYBlE u‰A8X,—b$¥»~´@%\ÆKp¸ •ÏÁG"&úXÑ ´YèÇ Ë43±3É ú)±ÌGµ…ÊÑb:6ÚO¢HÒô3A/'Áø€%/hÿC•Z‘CDü ¤!äræ¾1ÿÔÔL2cŠ„FôÀgÎ4’Z”ñG˜dR°!$:å¤!7µUÓýÃH@ö!O¾BWŽÄ”Æ8«îVf™EŒL?@m‡V¢Ä Ž8 cÆC+Øè¶ ˆ6Ęà ”y,°e›u÷Ý•¬.šý,F›¸Ø!€þ(E7€ÆÛ†פ­‚X!€¸HÁ‚h ŽcÈ@ßµØYZk¥¸VXvYfÀÚq5€bƒ\¤+œ‹Ä ‚1À!…aˆñeâ[ ‹ã¾ê:½øg cª5|ô±1g”q¦&ØÈiãJAâP·*ÿ2T !&2‹çƒ{l´ÂþKÆ‘ü ¦™c¼a$…:Rðfc´¡f$ÀÀVl¾û>30÷{pÂÞ¸ÝÂWü¬¼óV&Á—|ò’h ¦eý°u\è¿n¡Í÷VtÏ[o–Ao):pjª¡Æ%p˜£<¡ÄoXw}x ?uÈhx.™œ˜£ (%“?Xø“S¹Ù‰÷þÀÔÌ_xqaŽŒ`9b0b>ê ÀàU‰*þ~ÿÊ=&˜ ð@Xð’ù£vB·~åc$rD¥$2;þeP"©ó/<8ÿ PCuàÄФt@ B‡L²‡èøLƒßÛIâ@¾V ;é &Ö…^¨ìåQØI¹Žb¡…yá Bä`dÀà ÿ  L¢ÛÀ‡†(Ÿ_¼9 xfƒ‘hL¯$Þêp^ûd†aTXÁV&¡5 ƒ`~âÀäWŠŒøcЄ&–/–Äñbs\dŽ`+'ðÁh1hÄ£©ßR jäêhsd%% (†€mU!DØÀ¾ b" —¨ƒ;äa;M·¹õÚºxû‡ÅJ÷$º†ê‡ÊGH…zÑÂè\cC‹¨æ<(b¼Ó±¡y¯š^ùØ‚ ˆ¯tNèâ ^<4l!„(ø£•ÂBP’fÎ3Ä­+ðn¯Ð/-üv:¶ƒ9[’Zœ@ö† ýô¬6VþàBüÁ‘@Ƕ‘=I<¤ÇˆÒÿ´–´šà7¸$2¶G0raãM#2Àñ†‘ †Ì`K2š”¿á!9žˆÝIŠÕ‹»-¢À3 ú®pTá ¥@Hšp¼ó9Ì,Öå`B ÅŒXrj†'“ÿÀ€'—'ÎRfˆ*Z!(t!ªÅ"zqg?Ã}ÈDƒÛ2!Ê´~”3Ì!°ÞctdPªX–2d%™ô‹2ßûƒBE‘©%ø0 M¨†¥rêB|xÕª¢(:bË]ŽÏ™)G’!ý…ÇxD®¨#<ã y³Bz}:cˆ¿XD#Ø3ß h:º(Æú Šå–äÔ] ÿ:Ô1, y&TH‡ýAŒfÜÖÌ‹–8¸kåÿpa  @‰&±4@h1ï6I?ŠñfGü:NW†30†{‚qúz!ÐöÀ4,ð€}©b`H ’xñœéGÈÍ@J€øúƒÜì¨%b‹gÈÙ$¢8ùj‚Ñ…b ±ÅgŽgŸ$bxÂ2°‚y¶áø92ÌGxƒ†Ùdœ¡u•…`?4°(°6 *^ÉKryÉÕ=&`` èŽÌO¢Š˜Ÿ€PÁÀp ÇØH£÷‡ªÒ ä  Ø1B4߀`»;Ê–÷â±|Nøã«…9íÏÿÒ H@¹púI„P’cL®ŽaõsB‚­â‡PH'´PŽp”£ šFÈ %Ø"£û ܤ@y·›×ðy“|Â]¨_>d0"JJŠ ¼”FÎHF2¼A¬£c ³ð¦…Ð…Ìò*Qh€`xØØ©æ’`ø… 8ª»½Å† h?Ý8™Z ù»o#)´’ZŒ‰ƒx1 -øð§“À`°Èä…FH€š [H Œ‡¼ˆãÀ“¨…V¸€ ‚øœ\1²ûóEé390é` NH&‡¦p!\BQH<ù†F@“€}»˜ÿnX„/x$¨‰ œ$[—dŒ³y–7)éH2%[ˆNÈ  >Ë„5àâ3“1ô‰ª;Ã4”[8ƒ_°8Šr¢Ct@‡2ó‹ÀBŒ¹˜"H‚^°¯Â„Ç[Ä9 ðÀG,4Tƨ…(>MÁz³Lx±  C PÒƒHAÈÉÃ\q%?Y…Ð…*Ù½ëC(‘+\Ì»€`8X<  “Ø:>˜€è“øP‡M¼6p'¸„KpI'u2³dYˆ‹+“"ˆn h¶ëƒEhCܳY€¬…`èéØÆËƒ(ÂèP0(…kñ=ÿèÅ»S‡U™„ @€8¦‰{œÆIQH[T\Gð¸ÇëðSVÀ…^ ö8‰~¨/†ä%“pÈ“€š\ ¸ÖxTЂՒUÀB@ ÈH˜/CÀ,ø€ذúÁƒåІa†Ka¢;T4阂ð; [ 7ÆÃ<Ó0„è…$¡<“…Tð4i( `Yl àÝЄô((@W¸€{èK´øh‚ª8€uó±à€gX… À„Nè„…©'Hf˜†d KyœÁ0²My…ÇRˆZX‘Lè€;мdˆ½dÌ…€$È„ ‚L‹,ÿ€¹ ÉŒ`È’`…®CEÐÍ€€ðgˆ=,A¹c0L3Á¼„ #à€Ûd‡>`LÌ{{ÌòЬ ’k±Ø;Ѐqª è‚ "ûø Ù±-”ÁÑ… H@ª¡ƒƒ@,Ø@†P xPxª$Jßdˆ_Àù8-]X±@LèŽr©Shop*^H¦³˜B¿ #q„ˆ€©ä‰?8sÜ4/€ƒ/X¸k¸Ð… Ž\âŒ4 "è…EÈM€6…9€†=Œ‰‹–$Ej,[Š ZmèÿUhƒ&.ˆjeàHBð€k@R…†%= ¤šd ä€\À˜U€NÈ‚ÙÚ ’ù ȱ¥Ù:›[¨¶!¸Iø u1=È!õCØÓ †TŸHlH wé:À†2ª±R P5†ðš’H‡øœTw‘§ÀI40‰-h‘*Pm\Õ–YP Ù<ÔØ]` 5 B*<ðj¸ˆ– E€LLXhh 9"ÁVÔÆÓñø„>rƒX@``Ö¨€ °cÐ…-Œ)¤…@N aNx-ŒhƒmíÖ£Q‰Ô¹XH¨¥Ó‚ÿ7h „0}—Ñ@€ͶJbˆÀJ†pЈq¬Á,‰­h:`H:Ø$ïûÐõ„I”È<ȆEI¿HŒœI†fH3HȈ p°©MÉQ€C¨ˆ^ð”CŸEÉeð1¿k= ( \@È´ÑÈ¥#h„VˆMJ€T0(P‹\0Å­ àƒA5‰ˆ˜Kݬ4¨žYLýéYèbªÊ„“ T9ML‘*£ñRO„‰jy ¸„5M/Q·Ã †LË~È*(WÌ4$iÁ\ˆ–eZv»É´·ž ¯b€]p¹³šŽ6]ØyÚÿ$[×UãÈvô‡©LM‹½ 邆èOÁx³TÍ…Æ©ZSˆ„áì Y(ƒ¸¸ àì€ØÜŠQȽ“B\<‚Q8ŠZX`¬¨JùRØ¿M Áí’°Þ„08H2¨7€9Mˆ H›ê…dYUÐQ˜k72H„,ðNÜ… Þ‘Pד0a¢„àÈð؉…5xƒé¸IЬqêIOPE“Â`°åÂȳè]nÍŸ´!g¸£š˜†p‚¸Ò…lé…3ð G™j„E˜“1¥”ÙÈ7\دFh¶NØ«0p‚@8H¦´A~Á,þó‡ÿÒô‡ØèAT4€H;V0†gpÍfS»TijPN¸‡ éÝûÝU’Øe¹#t(Új9Ž ¦¸M—dâõ@\XYøR¡c“ft„)§?ð‚:à‰%oEËámHO€š7©+ >aVà×ÌêŽæ:–Œ`à¾iS¿%\Âx5˜h<0aX t€ä³hε Ý pA %À%àDS×f¢˜Ó„N@ˆ>ˆ‚Ê[[TPH¤`{p\„ÀOðåÑaa>3OAsë‰ÌˆñðM"> ,ݨc]è…(pƤ«V4= aP hÿ„(…/xƒ\Ð…ËlÖø…Wà>¤€Ë†gzF{æaÁ,rG(OÉdÂLfN±(E'Þ4…ˆ€u€…ŠU¡Éº›BÀX­5ˆÃõñ#†™þÅä@ÉÌd† é@Vر”`eœbXž˜Ìï›e]£F âl¼x„UÛ¶éüáÓ|¸j¨z è †¡nƒL°ƒ®S(C¸™Z„nH“Fä¨vˆ—$ìQªÑYÍ%©“\ˆ>H†ˆÛ (5|«)õD åDP.´€&Іhp1¹h1(pMð.}ŒfȉV…”Kˆš>Ê;ª8aŠÿ]F *ð{-ìÃi>P쩸jB.‰_¸\¸ºÝ>Q`@–KN]£ 8ùhžh*I ‹øä`<°g˜Únƒ°ó ‚öÚíZ…'±Y¼E{ÐÄ>n Ù«¨axÔß½ˆRÁÛ^¨á†€ÒõAªi+)Ǒشð‡sŸ€dØKL:(+ˆ…‰þøNN®¶á­è؆`1Tð‡‘÷„ÿ¦ù°R˜5MeðÊ-‰WKùƦ²màløGï  ¨„= ‚¦?hÀ*­Jà‰Iˆ>VÎ\†ä‚¯+Ö°’PÉqÿþqùP€<ØÐi×é0jLÕÂa´¨Ið0À>.€pÂñ#¾4€Õ.G@q:ëAŠ Ø§;4À„éØ_0䙪³|nm\à2ç‘;èÈR…/>>ôhÊÙ µ˜©U(@„°†H—ÙRA³d`H"XÖ(ÅKL¡*SK°äÅžŽÃ<:PÜpˆAø5ìÕÐ…X§Ë‘óɱè¨ÜEVøN;ðá©^cÏñ6 >H0ÀN‚©aˆx¾’èCd<ðÖ^ÿ“b¸µ…Àï…Àu €-hè#f ÿ8„£Ó˜áñð|Ñc¼ˆf’sIí<× kÅTˆVˆqÄNx YxØÓcµä ŽB¨mg@ýÝv—¨X„˜‚}°¯’ˆ{Pù/v…'€0fPxJgÀv%,ÖTˆ x ˜ À†0$›õiƒ/v Û©kÏ¥_÷òXøØ6Ô„ŒÂÚ`AéðC %‰û˜–E¶ÒÑY¾˜žîªd€# ‚ÀÞ”¤GJ¦ž»äaL?7úÝdÐB(b̘U$ùSàŸ/(xÕ/NÉ…ðôß<ÊéX@ÆgûÆ\„HÙêC[O“ÿ‘RI„ˆt~ BH„ðP@!áæ¦(k‰ð  @Ý…Ø×®ÎAºõ›U]Wõ鸇#€î }“رT# qQʱQ%©*eCƒ…û =ÈH¸S"%'Y¨Š°WÒ(àà‰FÀX1,èЫo¯ôów‚Áªrì(ðÄlºl9$²¨¢G‚AúiÀ€£…¯qâøós+¥?)wzÌéÓÏÌœ3gú»uk™$hdqƒª‚È’ªƒ*ý4†‹ODô‘`ˆA­ZR-ÊÅlJV¹‚5:ö®?ªD\ †ÃÀ$QPzlã¯ÄŽBÿ4+J‹Á›x'ãÕùð1¯ÌÍH<@ª€6 ÃeË.]Á$`õ×ïÂ"]¿<<ØÁ¸s¶¬¡îµ¨®ÞªTŒ5Lɇ6å” l h£w’I¤ îhØKG¢4k:”ÜQ§÷ä’L+£G;€ÈzBV™t;qñiÔOU­ûbUè ¡˜8;åÒ'‡ŠHµ3ŠxÀ$ó@ ´ÑIðÇCs Ä A$bƒ%rô“7,°œòu’A/oÝeË/¯\Ð÷\'ÆÜõÖ30=¦ÀåЂ&rT $³€#„Q‚…tâ@ecÌ0#ÿ‰â‘ž“¡ÈS"œ°•#àØRO¶è’K.$…Å)¿ 2J+v $.B>T ƒi>¤Œ?b2ƒ 3À €®øc6Ñ(Ú]y›vtSe´Ë#-‘DˆrÐk1èb£¢oé²È('lD¢žúC@ 0ãÏy°i-FùCS‹±¨+³=&±þ:I ”Ë"ˆ•r“ËWtîÉ.¹xÂÚ]ãp”k³¿> ,M U”Q95{ïwE+ÐþL±ÄCgp ýÐßn‰ûÐ[½ð#E”I³n¢›ŠÁ#ÄЯOEò1È‘è ¾%Ô)¿uêbN dUÿ‹, üë@oýÒ€,¶&wG>ÅÓG³ Öd™ÉE'‡2ýNf БU?£ÄfÊiØÚç¤çàÃ@+ú+5Ùk4Ùa¡IÒâå’@#X ÐÁ ªh/z:TŽ”IâÆ@ÉÄq¶@—=¸G€§ì$.œ4@ئ{1`†TÎ&F³/á™ódøýâd.oJ‡l)P1ÖúÃÇ”i*ªæ±ïd8AàÈîÑéþ˜€?†©¢þ´îù"ôíÉWö° (Öf4ìiø³ÀóÙO¶ï-që¹ÝÚû£4£M9‚s¼ð‚‡þx#>üw¡HtçªLñ¹‰(8©ÿÊ­u2¢Q>É+~4‘w@!Y`4£ŒèÒÔ‰˜Á!q°L´nr&ÚP|Û!ˆ ^@€ƒ\^"Ø ­.PƳæG´Ò°;jò^2RÀ…õ¬ sÃ*Az*ÄËA”€8–Qˆr q°†ñÊgX/ X 4 D~à…Ïü!4>0@i†è‘#zä Sià €‡Bxà ø› Lнò´ó²" m¨Åó £9t‚@±¡?øG(PcA‘7ž$1…p^ DQü` C)?hmðшÆ0ˆAŒjÔ¡@€ß9ЩÿH‰ Ð@ þ††A g¬H”Æ,ÈØÆSJzÉËÐD$´¡‚D°à+ÈJ'b¶„9 !/qc+¤A Þ°@ 4E¦ÈTñ˜îdæMÆf™5)CΘÆ4°E– ¨‚$ r8@7ˆòÎ4´R¶óÆT¨?"O±Å2´ˆ†”¦ä8bØPÿ°‚]â T²À-œáïA«¥}éì$#eÊ ZyŒ†7HAŠ<°/À€Ø`GF\NhÏÊÐ`ªÔíygƒPŒ§M€âÇíx/Y61æÚÐ¥r•¦ú"HÇ e¯²³«f5Y?XU­ÚƒêÐÈêÖ¹’-ƒt}i@!ùþ,NÑÞ@ÿý H° ÁƒÞZÈ!Â[ #JœH±¢Å‹3jÔÉaqnù9RdX»BÞ: Ë_C~`µ„¹±¦Í›8sÚŒóQ ÌŸšH¡mŠsÄ  `ÒvI¤±2ÈJZ¸_þø ‚ÀÞ,øÆ«£Î³hÓª=èp`œd)xÓF@-:€I]{ИþNøC"Æß©ÕüœÅxÖO™|#K®Ù!-Z&Løƒ1à b¸êJ ¥Ÿ?$PÉiK0T T è3ZÊœ9¶ Ë[jK­ø²ã““O&y™ÖJXœ=£ }‘U®În4JSªî5ÿZõlêD`ÞÐDL˜?jËÎTNcÛ yVè,ˆõšº4¢ F  òËõ±Íþt Š*“ø†?ÇÄq™K"!äGOõ-çÒ@·ÐG [VÊP`ÃÁF8‘*²siý’ ²ô3ÛD%D°€@$ø3M iQˆ·0cPþòB©’Z0¶¤K*‚½ØNZTËŽ9ý!‹?Åi&MþÑd¸ä²ˆöÐ .¬˜GÐ æDEvÝq&Ahp/ñ´PI)‰r´Ù [ô 'ÃgEU&×A-9‡/à ¤S† Ëø±D#ý™ÉÙÿ’)FPŒã*B 4ðŒ45±’6 [MÌq…Ó`A£­‘b e“Ó¥:ý1€?ÑøC ¡þµ€7-¤àþÀ̹þ(“Lý!ÆÔ§J-ªôsA½è2+}¹`ÅVÚi€ƒ óQ4L2Ùw+A%¤dKkª… EtôfŽ.tÏ+ºø«@¬Øò‹= è¨Ê( £K¼ …fÀ÷€ISè‘BÁ:Œ@LJ?%¬Ð‰?™0@'IÜÄ€=å £Ë3G\ ‚@+”`E!44“¬f õÔ¨B§©m¶ýèO  ØH ÏLÄòD¬èRŒ=œ €½ X+¸4ÿ‚Í,ܬ!´ý!Š%†"€”©àûñZ”¦òE–2?’Ñ×y±B)þTH„'Èò³)ßõCãA|O1N4ŒsESü2.¿,ÒˆiªˆÒˆœ¹‰§i|u3PÄ ààæþB„D|ç¾»?áMšA¸CòM| ä«ë6 "3x³‹?ë/ì>E}d)Œ±ÌÔg „?‰°ð‚ùMÑ@˜°†Lh‡ \ ¡›®}ïëPü¿ƒ8âU÷K .á tDCD<á -Š"ç8« ‹:H$R(H § •iHsüaa‰]þèB °?ˆÂ¿àUDÿr±œ`‹(ÀÛ "”u“i*^UŒ ÞÄlá E‡“5‘„-´ÐF ¡ ðP¥è@– ‘\¼‚_:A+ R 4"ƒˆÈ8¨)Ùœà^sÚ—‘Іà@‚A†v¶ìÂüÈÅ3… CÅW´kvèC&Ð({#tºIÈrñ8JD ƒ$}¾ÆUM]‹`r؈‘^,â:ò‡,$’½Î&xÒ¥2#3–äZþàå2bføã7™CBB(I‚|qšERUÄVâ3lEJP B*ݧ¿H’C—§<í’(&š F2´‘ÿàà²l|  ˜™Ú€€lÁ ) A2†ahäQǫ́NZ±ä„š‘s.£ŒhX`]lȃÿ@¼€0P Nа†0#†Í©NÂÑJîô§®:áA´XÏ’4ä›@Mj‡ÂBÂ"ªÚV2šÑŒoÕa X"%ñL”âh†гQC1Ðjd”ÊÖŒˆ0?»Æ1ªQüï ½@€AŽ:Õ$ FˆA@ óá¡Þ,GÛúÓ…Ì€Á P Qœ`@Z8Â/'™^$` ²˜Äwü!Pƒ¹ QGÒÌ1va­š¡?`±Ïÿ`AÑE0$ ‹ W”ŠH~)‚ËÊìE ƒ,Àð{ 6à€@‰‘ax€/ SBˆpíµj©Œ¶.³’]Dþ¹‰.&À)›ÀHW¸°g7Ò 4ø@‘ª(Õ'ü± ¸'—).yêSÆsCÒOg0r¨W@¡C00ÀDœŒ-<›ƒ”ÀsÉ…Àk¤6kUÇæÐì $2(@|%²ÞöJFô«ˆ ¼D­‚cªI@1ìhL$®ÉG†± MøƒiÈ‚‹bY0'˜@\Iˆ`iÁ`ÅRÑ `à]Â‰íØºØ$ÿdo²'7ûÃÚJAv± ˆAD1BÅ2'xÒù©& ¥ˆ¥,bôx-ŒHïÖª°€0ÿÀP«ÕÓH†ðŒ¡F¥õ}¾I¤ã€Tb0[‰]ª€I æóØŸ''ܦ¥Nº B ÜtP@¨‰Õ0…? ðª[5Û}k¦ˆ(P¡ ¾åb·ÞéÝ àëšØP`€l\À .Q«-”RÑÊ*5„ÜJ§´b\ bZ¨  P:¸­©0™…Q`ï¸q÷ì.B‡;ÄãK¤Ï9âÑ ­†H‰Mö‡Œ…ãLºÿ0@##L ÛiÝ1mB3L#S&Aðß2 Þ. †d›0ÂÚ,H2¨‘-%=o¸ƒrn9HB6ª¸ˆ(K‹Ì¹"ýð„ø ‘™×$‘pB$&N‘¶mö(º.ნ°ØÔiþÖ )8ûò•%Ì>bC8{öÛíVT1-PJ:ÄB‚x€NÀ€VÐP+Œ€\Í 5ˆòÓ@>Ë™qúš`HUtB€H'¦ç>N5 å.’ý¬¨,ƒˆkADüµÄð„~À2ÐAŒ€ ¡€‘;Á€>ˆb6¢Ä"81ß„œ@ ÀÄÿâ: OÀNïЃüÑ/Há !`+˜Àûˆ„ágÇ(—Óo¹L‘ę[ÁMo ~u¦ ½à¦€u ¨Ð"pLÝÍàtàɰ Ä1$¡ ÊÀ ÊPÃGb:WmÒJ~ÄšUà ¯ÐìVPpõqmŒwN0+¨àhlÅM=x'Qa: °S.‚¢$"2Ô>…`FoGXb€fq 5$‰ÎU-'h%ƒ5±8AÐ-fÀ.¾€ZaƒVPÕfÛTz[¨ñ„!‚o¼à3[ f( rPhð¡ Aÿ@ €NÐËÐy(NE؇¯5NÈ`]¼° Çç,Ɖ¨¸ ±B+´‰©øŠQ¬Ø¥x°x‹‚æŠ÷!DTЇ‹n&^1‹h%ÔÅ Þ›• 6 J@ ” Š—„ ŒEHIÐòT&Š8 u @:  D@E÷å`5ŸPî°>°`OÆóôlªâÈá K—C°†„F"à«HÓ3˜p„QàÕÐ ;sm³Àîh2 Í@ 9 ý#}0 PÏÐ òņq ЀXp_…•l+ÿ´iµh‹™…_äXä¥ÿ³#>P.Éá Š40•¨¿ø“Ì$”#4 Âð  _Àä † mþàž{¬Q°n²aµädBVÉ“¥H•—s· iÐ_P¾† «QìÇ)¢ƒá¯p’0Zá] ,Ap°/°M)b=àÖ4´Ñp/A—‰ÂZAqµõfY¶@©€?ýОÐ1²‚ Ø ­°–5Ñ@Øãr|p7ð!³Q,!}V0þ'šÑå ©)C×st"pvݦS' ÿYÝ’°°“Té^ãq`^Ñée5–ªàeÀ„¹¬`• “àˆ+€™.ð]kâE<åMû˜QÂØM ö æ`ò a¡ ­0×!D †€ .Òà#v¹Ü”‚Œ×‹ÏV/`8oŸÑ"! 07bɸàY€`@ A%ðá É j=Ø…¦8JÚ0À0'v-*¡!g‘‘r2ª;ª™É !’&• ‹ÐÒ@b!YÀ£þÀR‰4Lð ]çë%?)q¥ ºÓ §à"Œ8mé)T“Glà €@n 'ÀD( ÿÀ¦nŠ%! }Ъ 9æ>­@ft9NA$%“<a‹3Ñ‚ ¹p€¸€'Tz—ZYâ_§L—¤‡0ä@EåŠf‚'÷P«Qg1£aËdQ¢& ‹5kÅFx& èµÐ«aªL,šCs‚N‡ÞàðsPsàáz ÍP‡¤˜;e<Á“‹pÁ¡©9%þ‘: Ý9"óÈpPV[z!«rbTcIœsÀ EѦî%‹° ר` 0,Pf@ÃðTÌòg<«àu\C3 €€Ññˆþ€,ÿ€+ +/ý@~¸‡¬` {@'¥RŠ€Ú0QdÓƒ?èJâ ÔptgÚmÀ<;PÀç ê  Í€Cþ ðR$ªÀ‹ ;«Ÿ!ƒ;RPÐk·E€Ll'o‰âL’³:¬q`¨°)ws/ŽÊ¶ | “Ónà63q*[ŠA÷>J& Z€§! ¹“rZ`7Ð ¸á&º!qÛôœ‘-Ó`x@º³T »·á1þÀ Ø þiT;ž zW°ÛÊDÖ17 Õr` K” žÀ[Äÿ“²;z0ä,ù6‚ê@¡ á›7 ,þ@è‚Ä—SXobs ™Ñ,ÊÀx–@µp–@nÁ ½€ £@© 2cõCª+÷7 “·Q0;ó€Ó Ã$hÖ°:ph[Q5‡}FÐ9TS ¾$VÐ.°¶}ðJ£Œ{¥ª°gK=­Jx1¾¹ú»þÐì€JFÂ7þ>=äD¦·¬"|´ = wP%|&Šê"ª@hT ¬67qà€ .óº1%IÙoµ)§9“7UÇ‘‘^@¥pIÐÙ ¨vs_ÿÐÓj&eÂ:PvMxPZ7— «‘ /34Qð j±n81SŒ¡Ú’üR'> ÷ ¢0ÛWÁe!âsä“ àNþ*A„ë×1 ‚A¡ªñ4 `Çh¡Qs6 P¢ À°Ñ&ØÑ̲ºàFñ£áÃ:I0xà, LR šÐl|h àv6 rA+"½r ¬`훪%F$˜1f Uq[áê‹ÂƒúhøìœTT750 4°$À5Т˜ËÓàè°¥š‘“ TιGŽÿ‡Ñ6; &X‚ã5 Ä  ÚP Âà ¢-´«‹íÒMUÐäÁ œØhqS$>ts §5I!4b.­•kÇÁƒYU¹tS†'Ò^Ò ðÕk¹àp4GÒ¥±ÀÐS6 2Tð×q  |Ë­"«¢EªE¤&H*‡€ŒôG¨ #sýL‘~ô£à ¹@{QÓ5Ág‘TÏEr‡…ÂQ–a!Ê@ êAƒWA G€ÔẢõÃÚS£v}¢`h¸p5z±a²@*’ÙiAP 6 4Ì]@À à Øn0äÿ2¦'˜§x=ÉQsð\ª  Dݼ[² ý £Ðê„Õh½³i« ó#Ã0 Y0CpÒ=„z $½7Thµ&6[›äh0c ñœ‡ žÐ÷pƒrÒ¹Ôü»¬ ¨X~Àgl1c]—n‰ fë4ª¹ 5áÙ|aÐ…Â!.=ö4Œ™hgc0ÅAˆ ž–²±Ù['+u²¸|0­º`+­HÜä‘ ¿Íy*w„3•Àع`~ó°M­<”Az0„Øt¹!2¡@ˆ( Ã7þ€è{ȇ_„įÿèE®qÏ>¾0?cÔ´ÔÚ,¼]þÒ•´&ÒÐ u ð×¢?U“]¼ "Ïš­Hj~é`ƒzÚ"Š»@ à‚f´þ UÀÝÝÁ õ à3`MÌ|®Žã}Ñ )0¤@Ð'ÒLq> 9È ªÁP*[Ðéã ÚÀÕÅ“Éî>mæ,WLUþP†%Wa`u™VÒ )€nqjé.O÷±!‚…"ÖZ”â³õT!1^&ªXïfG^T_ñœ Enñ}¸Š­XÞ>©ñmåFÕ“ ¯Tµ˜XF-0^òG¸Ø)k„S óÿÂòòDŒü×ðr Õ°<Ÿ=p <?"šð‰kã4T a‰#z¼à ÇXuàKs€Xì ¤g‰œœô‘ÁT±*Îà Yl 8‹W¥à¤:€k †5Àòpt‹Ò¬Höhá‹?ÑLœ ¼ =S8MPiôOp~vr @ mP5—@ñ‘*y¯÷:±‹ßè» j.€ `d@r€¿7ìP„Ѱ¥û«ùÉ!B1Š¿ÔÞ@ i0õ²Z€¹°/B€LyIJyÀ$˜nûsŽ!Á ³OUŒ<°CAÿPŸe¢n¬P¡àWç¹&ë0šÒŸñ4UÕ R{’Š|åð‘q Ü@>“üýñB?aþ¨ù‹Éß,ˆ!ú£XÑâEŒ5näØÑãG!+úñãïÖIZ´üʼnÓBAAþÈ:BYV¬Dî̘·¤YçäÊ’IòdÚÔéS‘$¥–D™ò$//¨á cPv+çã×?bx,ÛÅ’¥Ô‡³Þ&[×î]žUiEF,Ï€ ¢ š¢ªâ¢^x5âêe@ &\-ºéB-3)3s¼¥ØógÅ'o¥dÍ×£ª¾èÈɉÏŠªèL0K±ÿ®bLŠ¬Ñ ŽhqhñâåL ÚZPlVQåÅ[Ѥû[ÚúuèE§¤…yŒ±Ãu1W‚ Aü©êÐàÔ% dPÕ›£·.ûc–„XÁŸ94R):é–©Ž¢8°sð³¥("ÍX*ï lÊÓ…:ˆT8Ç#[pá=Þ$ ”+hðg„D®xa…ÈJA’~(" / iÁ›æ2{Î$ÑŽzðH»¤ân¥ ä 9ÊÅ :¨ÅŸ~.Hà™()²Å5 d©OÅTqƒj@  JD Àb…ƒV¹@Ã*º"a„†—Š4i*$ åIÉ@›ÿJ‘zñD Ö¡~) ú©ª+;é„ÚzÁE'ŒXÑÅŸ#ÜP£](ôÇÎ,‚ÅPZwZ2ŽïœD£K‘t1àú"#ª´ÌÅR?Ò‰‹‚ŠÞYà…v¢«ÖcåN¿ï2oW±Éó©ZD` `l±K 0±h‡1RðG_Z½–£{± ­3A·Å¼?:àƒWžt™à§ja@‚brI¯$¸)Ç*Â# „´³H3ñÍW_k‰ŒP´8d`¨t—§~I@ÔqT÷€2AŸ›ØâmšÙ6VŒJŠãc›Í¢£X²ðL x§VI £ÿ5,X1BŽý!€$ìÌ·XÂHТ2Ò¢k•“(ÈIYjN¸§,/€"˜Bua§Š>2·È ˆfF3Û#ÌÒ†Šì²WògéñÔ}Jåq;’¥ø hXÐ’¦>èÐhÇ<,BÜŸh,HÆqìܪˆß40@¢@Ê‘ærº9RE`.ò´}^¥Ð-ÚñŒx!ÆŠv€]1¸ÖN<j†˜ B‹Œ8Çš0ÿè÷àA³—\ø°D„ä7*!,€Þ"6;B{z¦ò½… PcØLü!Q¬!ϸH v%°'}x±Å/ø&„ñ¤ /HDEàÿNPd GèHØø×?ŠP…l±À \qÙH§âˆÁ2x®\à"œ@E¦6õPT$„8!v5’ªTdu)„ "u@L OÓE*nè;à5e°ˆ,ú?§˜®ˆ…ºäüaÕùC)E@à t€_ˆ*P†`äÂr¸À1¢ úd*]«KŽRá dŒ‘VÏYœ~†‘ gøC/¨ÈªüÑ ØBÁ¸ s‚sý"VÔÈ$.`€bËCb † FEhžiÆ R`JVDDÌdFt¢ `ÜAëQÅ)R ý¶`.¸Ø¾‰E‡Méƒ"g© ÿYgyrƒ ˜¢‹-Šâýè@*ø€Œ¤â.TàÉÉ7Æk-iž‹T²™XŠ„}¹ÕFžͧPaš;¹CÑñÄŠ¬q%*1J‘^µ¸Xz6Ћ@AâÇ"òÂÎP-Žr 4úa~ˆÄÚ"ª,¢¢=éGîw [ðb­z• g‡“:Å-C2 @H " ,UÖƒ ÐÌð‚JÈ ¼ö€Nh6ê+F §¥áDGTqQ4à; Q·Š‘úÓƒ€EJq*ÈAèÄ š0‡!P¢{äìÆö™/@E¥!çœ2" y­j€,d’ÿÒÀÅ3*€­t% „á‹~1ÈHCcˆC Õ_ePþp„?[CøCI؈+ArËEÔ$ä+¬Á (X‰®+ F@X¦'™Ê5±ƒIׂ¦yØ?¬)ò;É "ž …ù|ª €@ ´qŒaX úZ„Î ’ae"eÈEÀQÍŽh "¦˜^±Paݦä„Fp@ U´s¸A3²ÇÙæ3ˆÞE2 ‘  \È$,²;±GÈÚgXa‹\Ä@ ÝS°…(a ÐÆ‚ôeÖ»ŠN(Á nF‘?´Á8 üA dá"Ùÿ} ÞBÂ:4b~PNXqÌÇ{›…Àr6â\»à4±ÚÅ10‚O€Gc 1x‡5*´"rà“$€ ·´bÅ6>p³Èàdz≘c¹?‹ð¢:é=œEÖŠ­~0À‹8,ìÑÕ#5fî‚` Y0è/s$´}J"óù¦ ¨Gî‘f¶£JS™€¤<‚û´³Û=øKþ  P^€…ºÃ)Ü£…dð€C@TL°RÃ[àç 1_Â|¾5´#šî9R°› ÈCñ@¦‹ °ÿ#<›„šð‚)…:ú P¶ZªžRQ¼4CYÚˆ)Ðtˆ‚Qø" š`À5ÏH9À2¡°Ý³ˆ¾ºê³B ÃR¸!(‚„ T0H uÛ- >ê*Àä A$Ä‹»¦" [T¸€/²#TxD±‹KYĦHbHŠPpà…[`†Ž¢/80C1V vè$Ã0%t>‘°…Ä€ èÃ*hÈ€X„/®€?ø Z †)ô’\ˆ{è:,™kA0vò'{ Küˆ,Àƒ»«V ‚\ÀKØ@,¼€)+?‰vЈÿfê»X°:¸<ÏÀ…_aÄ–1¬Ëܘœ«‹s@ŠP€€XIZ?0„y,•š(šÀÛˆ3‡X¦è–ÜBl T£ˆJˆMbx ãZD®˜@~:1ÈUúŒ"àˆRtÉ €?À.¨û^Ë;B²W¸€ |Š~ðŒLKHG kI ðo8F_¨‹÷(ŸÑ „©´ …”4¨ˆ<á à.`z…Q0 ÄG»¨ ‹R±K¼ÌxJ°ˆê€Òt L§ø(Ø!dËŒ¢b ‘8±M²L/,9†„d…$0„é‰ÿÒЄæ"‰[0­Œ€¿º„“"BJo,•`Ḩè„î¡+ PƒÀr¸ƒ¸l ¸Ár™3†¡¬ˆ>h,`…êT $ð „B˜˜¨èL΂¸£ð‹ˆŒ(ÍŠhˆ§p¾ó sØV(넊f  ø=PX-<Ѓ< dP/¿Ê½Š8;ý2÷jPЈ{< •Ï€Íxfx³aHàx€aÐŒ{2ÏE!õŒ\ã®øÄ $Ø]À îH gh†c8ÆdàŽÙ˜Œ0­剒ªˆ 8RžÀÛà"§€Ï } jHÿà`F›µ)ϋӱ1ØDÉñ‡xüqƒUè~™>†@{*Œ\RňjP»åÄ=¥¸ © -Ù3ÌX6pí²F”ÏIÒ9×BUÄxDõ%E½ M†FÕŽ85”¤`‰£×ÃPÀ€íì >È…„܈\ ½¦¸’ Hͼˆ®tU¥Î4݉aØ^  ˆÂ–"ѽÌp†â¨@8P€ Ã+`˜NžP…IY`(I}yºR™Ñ¦à­2) YeÈW UB¤QXwí :8]xá™|Û›\‹ÐhÍ6PR8#ÿ ÉÓ¢ÉÖ£ÉVíŽ|E‡(/è¼õhO†@I®ˆ¢`•\9Kxƒb@^”t)€~Ò— X˜ +€‚ (fÒ !Õó‡p?Á<«0š!…  ‰{ j¨†5…ÙÎLèƒ(‡’Ä”­6ë{h€€ü¸˜Ä?‘Ã{è5èY€*HØBu2ȃ-è±NÀÂZM€À¨ˆéÐÒÒXÆ]‰hè9ƒ6è„ Ð€À†T$@]0>ž´ˆ,y™ÌÕSÐl“ (— ˆ6}!Q ƒP€@Ž ZˆÆód\¼#´›„*fÊ[ÑÕÅÿT°‡tá®f†ƒ±ˆ„-”(„iÈW¥e h!ÐN1   IþX9»ˆöbNZiQD¶I„/ °>P&ß­‹fúO¸¹É[_Å€–ihœÄ3óšôš¬ Q‰Æa6¼Ã;¦1¨p8M³¶0„Ú_îÂ*™XÕëȃ0›(=#Ò’1B?˜…]˜Úk "XË)‘"8?_«<$?ÆH|ø…*©ºŽw½ŽYŽ“(™lQó, ï=)!î\ð?ª£4-ù\[_Û¤^8Žq>Ï€ Εh¨Îhå$UN1͈¦ˆ%ðÿܨý¼€WøShÁö%¼{èLз½/+ãIcŽË››OS1€ÂÃa§° æc1õcžÈT_ó‡ZPd»˜JGŽ%¢q‚Š€ä¦À…WˆX ¬§øKUÞä»ðd4‹\(ØÛuÔŽ½VV΋Wéb‹€W† Lû m£ f8¼Ä‘(â\^N– Íbå¦XLìp\­—´ˆ°´ùá7$Òev g&4Pà p‹o¸Ž!é«ûÙˆ!a/\®)"þf¨Ýˆ>è…<ætÈŒµQ‰Ò<Š%QŠ·¥x–gkY›X9Šh…E@„FÉè eÈ&æÌ)ÿ‚Æ ƒn:À1èž6p™g€dÑv$€&Ø‚ …U.­¨­h2â^Xh†p°ÎS…? ƒÝêihè§“Ô /¨ ýÁ•æÙai§(Ï•6ÐÖ™mHíÁ¬6‘„ ƒkX_i–ÅÛ,+xë-j¥n)¼‹^˜oXPè±î)…)°ƒ"X&~˜åûƒž}±ÈoH®èè«nël±»z* õƒ¢€<輿m78‚gÀ[Š@†—Ãë[sÏò…j%”¾;Â~¯YŠ„¨†f è€èU… ˆ`…n0´Šˆ ñš½¨ƒÔN/§Æ¦ÒÞ*ºø‡òt ,È‚+°1Ø UÀ¼¨B %È‚XˆZ…TX¸—£.nþ¹;ª0)3BéÌà…>i+×NÐk++hc$†A•ð(#INòÞdŠŽRŽ^hš”ÞK˜ƒp=mg ŒMîÿ.îÑ@é²a‰e Œýˆñ®py>"x–U qWŠ#Væ_qž 2fqÇ©XùðÿïlcŠ®qþ !ùþ,jw@ÿýH° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹3jÜȱ£Ç CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ J´¨Ñ£H“*]Ê´©Ó§P£JJµªÕ«X³j½'ŽÀ[ãÀ‚çØ8¾äU{G* Œ4¤T£M,Ù®^ÎÚËwïÖ¿€'š ‹·à2jÃÒjrq¨ÄŠ 2i°Æ«Ë˜3³2và×I:­(æF4 ÜE‹¸µk…fc˾Åì,M8< ÂGn–5 N¼¸pne|€²"F¼`ù9;{`¤H#õÝ[øµ÷ž³Ãßÿ¢gÌUS²ÙÊŒ"Æ…VªTu˜àWpãÅ­-Ac¨Ã (`€À`AÃ,°€ [耈@-#L2јEˆ´L–]}'"NÊF^祗~ÃÙ’ ©ˆ¢Ê "ô£Ê€8æ˜ã$}ØL8Ò°Ø" d €m €$L3 ‡Pn8žx± TåˆXndby0Eë Y\.£èh&op"æškÁÎ"Ü(@%Àp 3QF9^e}˜åŸI'X¦¡@m ŸØ„É&+½”yf€µ0 q¶à’K}ÜXKöü"¦.L J-rN %üà1è@ÿàX' !Æð‡AˆQà bñ9XBy}U" #†H›2ÑPCÍ44à$ª 4'o`£KfdNŸµŒòÌ£ÂÙRÌ(©ªj¦|Pƒ ºÄI“" )W°±À1òP³L$~ö9ìWÆŠ—0²F]éy\¡Š(™”r‚, ä‚‹££æòíp– "‹–Ò«Y0´{æ= ô` ü²±ÉkÚââ"ü'à\"ŒuÛ/ªeHåÑtÝ2 ï4‹@c™'ÀÁÌk0ø§è(GÈÌ1f¶èòKìªzB#e<£Ë×Ä¡¬²™ ™ *¸,£±pšÿP·»9ªB€ O @@|“hqÄ6™QÅ™¨Äd]Ìà0ÂÞ²A!6 ”XROÛê¢à¨w2 ê*À$kðaâJ^ÄMóeº$`7êž Ê¨Tý»q€AA ™ðÚÜ%70rŒ³ÃxÎÓX(ªÒǤ³.ñªþQ`ÐñéáYeãÁîT±<+º 2ü™µ ÂJ.‹Lp€÷H…r1¿áà ˜@Þ&€?¬ †örb–8ð‚ËhÆ1ªqƒ08&>÷¸>pŽ|êDšS.D£ÉðŠŸ‚—[t¥C¼h1’A3xp´Êÿª ¼3à øÏ FÑ€`|ì2¸F[#UøNH¶èŒ¨(€{4b€¬°Å/Žð¢Î^ˆàe"CIdžŒC p@-ÈüARA.¾æ¢`ØC7:Á&¯©B xÆ5ã"lTA»bœŒ]Ž ˜”n± a, [0\$}ƒ_<±€|ëE©ò5±F,bø ž(Px&4ªq}áY#Kl   œÀ.T™3ru —B%ب YØHGæËC4h¡ ZÄ&»(‹ ¢á‹Ÿ1OjFp€¬¡IÛ)€0  Tæe6uè,Gýàqt±ÿ.Ò2GA@À´‚TG—%9/}9…_”‘."[-% <〠ð‰„6´¡ApƒBÀâØ‚`xÁ TÑ 9e÷ÁOØŽ¸@E1 c½@Å(žùωÀ˜‰)9ñ?â!Ax<€!Ô¦+±Ùä z…Š…¡Àx¨zÁ€žš© V“çeLQŒ ¸L>©àÃ"ÛVH¯ÆGNH¨Á0HÐ  £@Àƒ$G€ÔÀ $јa‚ñlˆ I£jMÚø•« "°0º$“qÕ«:²D/Š.[ˆƒ `ÀF¤Š Äs8õh+fWµ²ÀâiØñÃ,ÆR–ÿ’ç ICÚT»…­¯6Šƒ0<@ @g‚¬Ï)13>Ô] œe'ްSrÝc¢«Ð!c°Ùá°Cµ“úC?4¤€C2¤Î°tËÞ£ñö&{F@ÕÂx.˜É{Š€ ½8‘ »©"ËÅ G‹Â 4Á ÓHF2ŽáF b @GW€à ÍX€¾ Nk¶÷Ä(vØ{yRÁDQ’Ø@LŒ$qF.F‚ñÅ4¢¦€»ÀŽ!• “¯ 1Æ—†¤X·+†Jxháâa2ø.€ÑfW»¢hÄ*N{™^HÀȈЄR@×d ÿb}*V”çŒXñÐâ°r?d0ãGC©ø²€`7;Cs Èô€ à˜Á0ªáŒô "0‹P :^=€ Rð{PRÅÁ@}=Ô;àÞ°B ±Q6”0ù¦bÃWA)PCð€smà <Å Á 0Q" 5"ÐÅO¸ÐU£L¿ã6Îõ_©°½ Ub… àð€ +H€Š`šPP Q%W²n,5éçPPô ýÿ##ò1`´|er`‚4‡îrEaÔ Å ¢0 ³<¶Pc-Ã`¢ 8 ’0`%€€;IE 9ÀT$fCÝoM§ˆ^2:ú• ~ÃJ²0 ΄fârt |{'Ó|ªR Ž@/3ez7Ò<µZòqzc‡™1LX“tP»`IƒB( Ò9Dzq¼:Âø;ÍõeæSË E³ )`5аB¤aÃ0 ½g4m?•E3¹Ð÷#. P …çgXð)ô@¤@ rvqTä u@-»" R ѵ&È )_&P&àvœS,%Éà.ÿP8§srPä _Å3hV œ˜Y„ ahS P‡lâ…0Kg´i$A"7eNß„?ð,6R ¨Â©àDà ,ù.µpÕÀJ@$P€Õ´I„[ Á'P\´@€Ê`$0P z5#`hp4cf0Qå²”3Ã&ÏPL‚fKTYgPqÓMðyAàh D@/üc‹@fk2Lh°H@ i’>NUÉ@ V »R " ¿°V›Q‘-¢ œð #£]‹°Oý$h $•·$~gU½´ˆáC*@7ò‚‹`JB‚ œ°P¨â úÿ8t„»r_àt €‰FNæ$ ©œ@7…Ô`L‰ãð"©”ÄÓ@e@D…Y€P‡àÌ€—v™ çœ Åˆ¿CÃ)hªp?¹ð‹¶ÿw)Ž{ùMÒ{f±"“« ÇЀ"° Ðð;–²“Ù\0i•V“äa……ˆC›'ökƒáiÂÐ8`…8‡² üÙua´j䣠íù$ cñ{J›ºµR†¯³QXíèvšS Íà )`y…sr;Âi°ÉPÑyã‹x (ÔJ |’;¹š»¹œÛ¹žû¹ º¢;º¤[º¦{º¨›ºª»º¬Ûº®ûº°»²;»´[»¶{»¸›»º»»¼Û»¾û»À¼Â;¼Ä[¼Æ{¼È›¼Ê»¼ÌÛ¼;ñ£aá¼Q"áQ Ä ÞV§a Š»ÄÿÐ ÕÀíVn#oL'½ð¥µó Õà9yp(‰ò:kBÒ Xà«É3€{ÿ2 #¹©¾4q©dzM° Ç ¶uÄ+@ §èÒ åP Š/ )`!B‹À*q4OåiQa ñ!p S¾yÝð '·Ó¨cÐË´U¢>K·kK“*} Šð"Z€ õÃÄ‘Là»Ò@К°´·‹!2ÂB¼oQe˜'5}—Á€ Ùx´¤&6½À) Ñäx$æ Ð2]  €‹‹9P½ÓÅ–i"Ýv"çÁÜÀ6¶ÿÐ o슢ŸÁŽPĆ “P Îe„€9\WvÀÙ0Ž«ÙjÀ)€±W€Lè‹ ¤Í˜§yÊ'&¶€5Z#Hð ½àˆÚòeª8«€bB2àØ· ¥$иofi¿w·Ã[|Á—yé&4c3¿°ª^UQò"É,b3ü­ŠB°#à/n6MR"U^›Kãw»Q%s:K&“ '„:'  À à,O[V ÌMÀè0 ˜÷‘‘ë±Ⱥ3d~öŒÏ¢y–g" ÐÔiS¥éÄ—¡ŽdÂ*…0 ¾gi”ª»Ig01Gpj+&íç.•ÿ↸J/#‰¦Y3À@7d8)¬2 PH.ð ºÑ7j3 CÍð$¥¯æºya—í–Žq€<໢ 0Bk#ÓÜ|&*(&4ŘPšF¸€ ô°bÎO° »Q å°~˜AQà…„MP Ð- A#|ˆûÐ+Ç>ËÒ³´€Ó‰@°ÑÁìÏCÖ û<)eM/À™ZpVÈ }GÀ º&Ò Ù`6‹@Çà G\¶•ØCë§1 ÚÐ.°,ÌzÈ6÷Y]3Û Ò8 µf‹ÀÔy+ø†ÍM<Á|LÅÀÆOÿ ÛÒW;0) S¯¸e·‡ØráÑcðmH€ 1m@¹ÀLÛ‚ÑTÖ™QìR2ËC×­*"p]xÀ b—f—P )ð¸“gi¸„Kð|Cˆ ŒÐ ¹P ©P£Ö)3Ê„ ÿ]Ý™8à:rG0^øGiŒ &OÚ #§WE+q0—Êà – ½ÝÚp ÍÐ'œ±@ʾ 'oÀØPŠÌ?£0Q'ÐPð ~¢õ”*ªP)¯`¡l¢‰â¢?¿ÉÃzà Ü-¿€D„ª*p R\ÿx8<ƒ´˜sÍÁpAYLÌrJ ò(Éž5tõ&ÿ×èŠBŸ21ð õíåý MYcÕ¬ö†ª” ²Êj DMKÆPX ‚tb0ŠÐÂÀ£¬o\œá€ž~óh2õ“°Ü8.&:%97òePß[• ÿ÷Oƒªg¾&!pZ0 ª€¬/ yp„;ê!ËÀ žqñhë.ƒ`Ñ*:PI-@• Örÿ×û‚ ‰æAÈÎ"Çïb†0¾Ó1, Û p…Ð ðV€áA :âN‰H ž0P Ð Íà „íŠÐ rY€I_ñ3?ýî."hO"˜ÖùçÑ™bÿ°Æ+À9=ׄI . 2¶<+‰¤ª0`C»½àw Ã…õå§v²Â“‚`~â06ÅÔèÁP@ÄØ­°ìÇú@·”qŒå!ä±ÃðÕ"8PÚ£.&úÌòC“ñj¾aXÖgÃVgGŒ ¹@Ñ—á"Å@è¼ñEýóÓUdáìá‹)ý@"ž.zj£ öîB™$×nµEMÊð]pª× µ0‚Mõè.̇€# —«|zO,>ê…µ—ã!—ðfÀðµ0 “ðòaàÀߘ¢¯  p¨l’)ºà à2µ ,Ÿ]žÿ_gðø³ÑP ÿ¢ p°Õ@+“ÀS¾\Ö2ä`z³?(n_÷G œP`9I% ÀiA¬™…8 úaØÐ!Ã8°`Å¡uË"³hɈ[ЂK˜+5!†V)U®dÙÒe.©:¨ âBN¦\ºÄÅçÞH A…%*àÏ /¨9´ØÔâC¨Q¥N¥ZÕêU¬Yµn½z+b /Œa 9c;[âfŽPQ©‚á²¥–å94w0DÒD)^qnA]èG¡`f´†QÄ£_Žd«k×òeµº]8!@Tœvâ2ð³èiÔG“.õãÔ5WرeϦ]»áÿ¬H‘ û¡qÌU˜îLØ«ê‹!¹0/·Û+Yƒþ0f¬Á vš˜þ¿ÐÏ3(žº1gÏ’m-¢h­e`§æV¨õ=ŠGéÔ§lp@ Ì*ÀÖ"ª`¦2•~‘€šNÐb‘\èj/%[pùf3éö ‚h(r†—]–1¡‡V `…j¸!šhœQF™f<°B¼5Bf%c€™ “ 'FÙ³Å]°‘@„ýFêÇ“Ñ1-Jýþø„ÆX`¨^3pL2ˬ A¯`YP€)~I’§_iÄ}{î§ZL?¢¡†š”€€$U¥(üniuOèhžø˜€Ï~&ðäT[€yRð4‚j-±ÚÃÚÐ A ïxG5"aÃ4%!aÊ^»wA 2Mƒ±ˆÜþ•ÿŒ,€yPÀ .&€V0 :ª°I~‘–”äB û‘Ÿ 0teLsafàw;úB @ÆJt Šý%àAhÐ (R¤7ܱ*xEeP‹§ËÎΘ‘Œc Ã hÊêd‰³t* ˜Ö D0­‘¨¢ý¸À" G±_Øãªc/îÈ’^¤‚qX B ±€ƒð@,4A Çzň ´ -”!,œaQ“Üb'·ÈÞ,  T‚P Q" áh-rÑ‹ ML€â\uไ‚¢ é„dd’Þ DºÐ…<м¨È0 ·MF““ž¤&-‡ÿD€”"Ø Y‘;ôaž‘…ïr±°à邘Ó~.0@£ñˆ…ì1¶³9‰4d‚”æÎªùO€JÅ5ØÔfD réâG8aÆÏ–ˆCN¶¤V#þ¨’^XbÔ: ¬p}1sŸ~˜n¬ÒÏiT¥[Ì™°²IÊI tCι”j!‹FŒ‚O‚S а“\H`£§ Ü€'Ð@¡…çî©’‚@(MéJ­zA½4“(†áŒ¡‹Tôr$AATQ'C€#%ÛÃP²‚èá„È‚üå¯g^ssWåk_¥³c‡Ñz‚ccˆFw„ìôÜÂ"ÄÂXÀ¶0tBHpC ²±ž–tƒGðŒò²-< Ì|æÛáÎÒ#½7­¹C˜@öAÐÀŒ€ [¦CEˆA Ó .á Yh Ú®¬Çk±;˜¤/†‘ŒhÔsÈú èÿ … „¾h×C$QŠI!`NHø¨ñ½Ø›.{IçH œ€1˜XÅ ç’$ ~t€ÌË0ÐFx£ÖkÈSì»9б\ºÑ·³Î–‹cÌ 5‰Þ‘Ðx†P­ïs c€†g`§6øƒHÚ‚ShoHˆËñ ž‘ŠüZ2úÊ쉈:€B ‚ @,Àà1‚ ˆ,$x:09÷S±³1ïÏÊÀd¹Á¨'€?P…Ip£>(ƒlÈ%¼ &Ñ;XQx$êx„ëÀ¤„èœÚÚ©­ß04;`šP™kBTø»¡ ŽÍh„nq+PÃK±chh›ƒà¦ûj?<\3=Œƒ5™#x–ಘl@’öÀ]ˆCG U€@‹R ]0‚2ЀR‚+HÅ4@»™Lнœ¡F?Ôld¶€ ©‰F€â©Å>9@(ƒ"A»0†k†„±Bp‚ðht`F7 ìÑ €ë¢¦8H?ĢɅ‹LUÈ(`Úù°óQ(l‚`>gH†¶y›.ƒ&e©@Ò‰Æ|ËPÒJ¾áʦх HšZ`K0åÔ¸†"xƒ5@Ê?˜,/€ƒ¸d¦K::¼¼3½¬7×x¦K¢…ß`ÀìÊÁ¤À QÈ!´Á£±Ø<x+0¹ 2¯PˆMb2yËJ7›ÄÐüÙìJÿ‡y°pTLËà† ' ¨ƒaø1?#2{³Áß\Õ¼Œ†ÁU8{€’¸€#øäÜ iÈ…r€‚)@> H®€èPÀ€D`ƒCh” ‚/ 0؃ˆ9ÀšÀ1|ñGaÀ½Í„ˆÐAÒuSa!óQ€X é€;P+̰º‰ÄŒŠ±‡Ëå[ÐJ Ó€±è„ø؃‹"‡mˆ €ŒÈÌ•MÜS!ƒ³éŒUh{B‘Ïd €hš‚õ#µVýÏbmEÄŸ{‘ÉK0)u‰"¨‚/@¾-‰+6 Ð,¼²U'tÁܬ¶ÈkÿϤ  ™,èŸɠ‰VOà„?ê…Š É׉iÖTØ)¬a¡Þáhø›kØ€ø‚Îh¥t‚4ІiË“Øì¡¼,º6¨K ^_°A)£³j)Ù_ :é€ 0€\L·RYЂp•-`¸ž\—Q€‚b8'1”†^09‘hPÀpó…eð²gÄÊ¢5Wf»&m o€"€x½Ð…Ä…¶KQa€0Y ùA7ѤтE5œ`Ђ² Ø!WLДW2@è €OHƒMð††Îé[ê\¶kz1±0 °ƒlГÿtKôx†;ʤAQá²í®=‚ã$]–†Ø9£ƒ0ñЍ×ËKƒ9¶ ¨8¸Â8Ò˜`8‡™Z„Th„T¸–H‹8Þ+åÜå9Z(àƒçMÐn†#XL`Ïæübh¾Û –fä3¨ˆ„eÈSbó „WXšÈ„ ؘ QÍA˜\äý›`¨ß{-•WpÈÇmNøÒ¦SQðW  €0຤¤aˆ†a¸ch=tˆ¹Û<Œ…ëag“ˆß$\(@à0’e\ Û†ïûà²U…XH`H Ïä@aÑkÔTØ£ÔXع‘¸L†è¸0ÿdA·›S1Y6©â„¡•ðÊ1í€pQÛ ÑshÓ £†}Ðâ•€b,™âµ`§ ]> W%É…©-î\C˜È‚,xSB/ ƒM&Ï–Íš £€çfýP…W0Ö0]„Q ‰õÙ¡$™¥F…Zpæ3Dл6ƒUÿÅå]°ÇnÝ;1Ø‚1‰àŽŠsˆ;$69fu¦IE‰˜€´¥‚ÿÁš6È€ ˆÒ}aÔ(;˜˜_h]>/þ×Zè ˜_̸,ðVùÖJ`¾°€¼õ²Ù5Ò_+é)8éVnÑ»Ã(Ø€m` ~F UÈéÀô„ hž¤éYh_eJ#ˆ¥Þ<Ùhfð•æ‚¨ã ¿µ5«Æê¢y†ºÎsƒ€ŒLèlH‰%·P É?@ä¿ÑTpYui!G&A…Š7Õɲ‚:ð…‹ƒ¥#ç^KV&ä—8ÔÛ‘j`X@„ È€/Þªÿ. Bð‚ô¡ì¡Ðl,IÔWè×^­_øY@X`ƒ¸að6ÖNçæf‰A€mÁ¡Ž.°€]8PGÀãj÷ª08Su ,ÀG"nÃÉ{@nÔ]`èµ (>æ< 8†ì¶í6éî^‰íì%ê¨=µ¤Þ˜º€(-€ƒ&U†ŒõÀ?¨‚ïË…ã~•Z`Љÿn Ȇ(Xƒ‰ÌPÈjPí]“ˆRþ”QðÆê€H†ûžŠË.jx½‹H†ù^À*8ˉ!qý ©i?&‹:²åO-h…¤ø’f–NèƒÑ|òwÿH,‘q¾-½òÀGªôú\H€(ŠZ°lÒ呸‡ö]ÃY1½ó·òÖXm¯¨ˆÞ€… ¥Šænd8s ‚¨ $Œ‘’"¸A€½ËÄ$‚‰Á}h„²=˦b{Щó@…#YY˜H…Úþs_»ËÞX‘(£?Þ-n»hpÁ©—&˜ƒ³ƒ Œ« Og¨†hèÞ‹Rè€'¾Ì0= Y…z U°‡a§TàšèѸ ­¥VyÕÀõ]«"ˆ¸™¤õ…È'hI©-p€·®ã“™Õµ‚ ÀŒ‘žU¸yÂ[¨†ð†4¸ÿ Hl¨ö.}“Jjš(X„Atd¢wcÕ—þÇÑß–è…rïruy÷CGp%‰P†Ô X„^ô–!jq/pËP†ˆ–ÚÕt~é ¦ÿ—8˜Dt}•›(PTY°£v –¯È ×ÖŒ´¦ :°‡bÐvBÕ_»¦¥w¦fÈ€€‘{¸Út$J/Š6€. B ‘O·/³ª@z†¿ˆ`|˜†cÈh‚Èò ¢VyæPÑWh'Ç d}½gøJ†Ž’µ fPX@‡C ½ ‚F°‡FP]¢É…ÒÜï ¯ÿj@‡8¨¤ILøíýè ƒLšÄd¸y§59(‡XjWj‹•yÕ×#Pkçùò˜/ÚX“÷£·ˆhÈ®Ø6¸õ¡ƒX@¢`(LTà`è¡K-8‚^ þ(T ‚` %J¼ùiçaÈ%>ŒCë–‰ŒÕ•@D•ˆ/PsëùsKN .ˆ¨›·X/\/u%Uô5l£H•2}ú´+îܺwóîM,,.%Dm”Mh˜¹ Lè ¢C*>œt&W¹dB‘m0ÌàçVÔŠÁ6¥•Œ’•&Ùˆ(C„eçêò_Ú2 ¨ˆb«}Æî/ôhRKùaÛm¾x ‚ jI$~zWW§õ/\ïô‹4 ÐÅ䢓-¹`cÏ}•¥Á ¸¬Š$>ÄðmKÒ”#Ù ("5‚H|ŸÅÉ£ª0€ 0ºSû/£«{?2¨=+äPîé'€C8ãË0€>-ãEW“~?þU™žÿuÁÏgÌD4‚iÓPÄ`@4؃¤à¸‘tàaÊE1pG\à­ÀR‹ P¡,éÆùìE|" Ä81¢‘fÜBRËsÈ/¨®ªKN‡Ì!ï…(ªè"5cà‹XÃ$êÒ{c>oòÄ@XÄ¡œ`Q€XJºIÄ& x"0jDcc¡_E¾5ÒQ‡û#¬R÷«\Œb‹B©BÔ•’q€£ÀU-.°ˆÔüÐ%Àp ‚48mÈ€Œ€† E)R°€aXäAT:%•ê¨JªÝQkþ“T/I Táÿ ‚dÉÎä²Á›pÂCn $ý/ä lPУDq$ªhaæà%x`$H²N £Ur“Ž­ôá¯b9Ë‘T!q·d .–3 ºôã0gK°ÌÊÕÅ.mØÁ0, O ÌÀzx°¼Ja4 A2†1 §0£¡<œc7#š¿o汑Õç8ïÏs¦Ä¿À=좫^ì¤ó,"v‹hì!»F«AŒd”'ŽŠ*í'Ñ¢Š¢}è…E“ƒÑYj”£ÜKÀ:‡¢+N”ô¤!L),hè‡f5e ]F£á'(§9M%OÃz*Š "ø§,ÇÙ€[ê"ƒ¤ÿy—P F—PÁ©„j«¶Ä H̰˜3”å‡YlÉ«\B¥X{¥Å4¥AŠÃ ^p–Ih@ BhÓP#Ù ‘O>½xÅ(D Eبâ$} 0‹ø‡?Œär;X†/ü”›¯jS±¶5ÐMĈ4(bn@‚*þ€ C°#'‚ûLféY‹ ¡B² È .ð(_ÒçMÅH6Óº$vEÖ‡ƒ<0ÂËØÅ_¹B[ÄÞ¶½¼ÙSC–'¿úBËš°L€@ ² jJ’ë)ÌŒ¢¯LI.þRö4]æ´ÅÌRA.Ýɵ©º B+@10B»€c!Z›õ²×½&VÿýnÑÆa4ƒu8D2ÛÐ 0€Špl0#]*ÌÎ-”ZØruT$À¹ßõTA6–˜´^ƒx0CÕ`i©LwX×öÄ^Öé¡d)ÃùA%è”haKf….´p4Hàu ‡zÔZÀµˆÀ“É’`¸Æ?GÉ€~…,8ãZài D¸,éÐ}¹ÒXÉí6ad‚6N# J¸Ð ’hÁ(†ž ð!ªáãkTÑèxÂC½@õrÅ€ô À*ÉE*úŒÀN@“QGù6Ø”BÓé+(Á°‹]¼ñA6„tˆG’÷êÂ1âß=ö÷_>úT|Ì#ѳÅ7áZÈ é’á†T—þàý%½z$µAT€0ä‰_ÁB_¥×ªŠù‘\ú= zYæÈÀ©DœÈ£œÀ®ýuùØÌ ÍÑ\ë±Âÿñ§t´Að@ W݃4Da5„c‘JB nEŒÄÁå•Ý$ˆÌ0®ˆÀ,’K,G*ÈÿŸUŽöùŸ%  ½`ΤÀ1C³ÄQDÖ zU–ØŽ!öàAnH/Ä…¼Ý«q68×Ï *X‚-¹Ä Í@l"¤ X@48CµpábV â`6böÞ¦¡Ãr Ë8Yˆ#äÂå‚P!Ô‰A%\5)A 8žŒ4”ø‰"êÏ"2¢#6"•D¢~ìÑ\b®t¤ƒ mƒ! à´PK³d]*¾¢2zSŒÃ†ÏVÇ›¤Â8©Â `@¨-S&0È€ L!Q$M „AÐ@3t\£9”Œ8ƒSŒß2¾ãèˆÙ1ˆƒQÒØÀ¸@ XÀWd[_j&o&bgþæn|•ME5Œ›6¤@ÌAÓ݈$dÀ ‚gàBl>ŽA@¸@$PÃ0´QW9DÔ'xþËÈ1ˆ|GÌ€„@Aöp@gI§“xalî5Ãpáz…§^‰È=cEÂ-ìÂ1ÀЋä¨¨Áø 9ÜAlü¸ „L‰ìÂ:ìËT5Ëލèp[ÔTÉCjg>¥€ì€ï\†(ø€ìA|@Q â¥@ X€B…ey”J«Øà Þ‰iÀœß‰Æ`]ÿDVyà ŒÁˆÓý8Ý'bÀŒ€"w^ }\×ý¥‘Ž©g攃ØF_B,Ô×2XÁ T)”96„æ.ˆ%xð¥Ìà`éÕ^‘© šÊ¶éÏDÈ—/Ã;hCôÀ)`á14;~iÈM„_EE næ nj‚HžVEcøž+îæ,ð§žêD^W„jÖaª¾jªH^p‚ܨª­êÈÍLÞ*¯âj€Îjä¹d¯++þ*˜ýž°«².+³6«³>+´F«´N+µV«µ^+¶f«¶n+·v«·~+¸†«¸Ž+¹–«¹ž+º¦«º®+»¶«»¾+¼Æ«¼Î+½Ö3«½Þ+¾æ«¾î+¿ö«¿þ+À¬À,Á¬Á,Â&¬Â.,Ã6¬Ã>,ÄF¬ÄN,ÅþK@!ùþ,RÚÚ@ÿý H° ÁƒãÄAȰ¡Ã‡#JœH±¢Å‹úè§c¤Ž~"EãEì1oix\â‘Æ[ÉjËüÜò³dAXþ6æ©3£ÏŸ@ƒ ÈóÑŽ·fƵKµ!dµD! ê*WECª^XIáM¯¤·h4:´­Û·pýÝbæ/NŠ-bÚtòÇ`ÑÆâ"4Và@:@€§Å®…i©•LYrNÁ˜3 M*— €>E âꥑUµîM0€‹•k‰®Yá2 AÐ UÿøcÓ ]˜p·É€¥W/nÜvÔÌhOË ÌvÑV.ú©Úž±_#>¹l5ÿghT­\ÎãÓ¯e{Y {ƒEÄ3!Ï+Yé¥-qÔ焃+Ô0Ã1æ ÄÌ{ÐÑ…PêµåNœÅ!Y&ôPP¥àbKln‰Ð@.€.¹,rÿ]D(´±rÈ@Äk%ÆþàæOþäÁˆ?P&!-œé„žCDœÆ1’Šxyæ¯8+~Á‡f„*/¨ÀB˜aDà ð†@Ò0gøC×*ˆ.Çù͉pT‚3,v" ‰-tñ‹#àJ›€'Nć „²"ÚÌ©AvÚÓ¶P£.´èIHàçEÂs—U]G ¢±¥À" +Àzh× Ð¦ý¼²IYP€vìB‚€ \!J˜ÁQKÚ¥[Æ/¶0´F#±yd¢Š6ÿ`@ É€/Ò¹E¡°¥ .BÞ3Õå|M!ÔÐD Z@-Db@‚A'ìH$Hl~1[Š  a€Ž1 Ì„#LcÒ_A2 áº÷}]ON’¨G‘ξØE¶œ?L‘÷{¯€|žP‚i”‚ Ìમ7"Wm°„'ÜJÎ0iCWFQ&Ѱ ¼1ƒ<„b˜þÄ¢ ,¬aþ%@à P˵äÖ¶4Ìã¡l‹NF3ªÑ8ì  Ø$@ñ„´ejpÃ$¶Ó†ðÀ )XˆHŽ"ï(=~¯9»\'ôHv¨ÂJ!€ILÿ ¹ ‡Â‚"V²&`¢0È``Ì À¬ào$#Ìöbd¸F°:T(¨N*`üÌ5vÎŽO&! )<¢é1Ý–lQç'#›ˆ  FejÆ܃JPåXà©ÚÚ‚ ¢´FŽÑÈ>Ž@]„‘'árT0à4YÁ”ƒƒ08DVðZ$ ÇðG¸sm™ÁjD¯ îÉÆ˜¡ 8•?€ƒãЉˆ@ vš³A ec¤È$þ‚2 Pq#ÆpµC„ ; Í/ðG  Ôî¥åt„]¯œ” šg¿ÀéDUŽð hpÀ!Öÿ¡‚=è°=𩲠Fxê† œ`D®ÒDTÁ€‹Q8«@@°…ø"¼Ø±\6–”ZV&×ÁeÇ–Áë/[uÔ§ºN#Êä% PáC gˆkf3 µ@ X‚5(bŒyÅJ =ˆ-‚gÜIN")ZÑv È \#Ø’Œþ3€'È`”Ý‹?và]øB‘ QMêBa­ë|þ8Â6b•~š@FØ!bŒÜçÙιQ}gD1ßà<À€$(’¨Gmnõ Âwqù¨?ÀÜÐ`â^À¡kùZ¤€(E6¡ž µ…=R‘6N<þXbÿ[ÆÚ‹v4¢ÛoB FP-ªSDÁ NÁv j@ PWzÌ„%O,Ú’-áaþÀ ©ucàó4p ¨ðVþÀ|   ‘4 ½0zá ±þ ¤ ϰ/e²@1<‚ã-¼$ÑÐ1ÉÐ Í0 -`5°mAÐ tp¨€ ¦±I s¹ðqç:h5Žð Àr°MP\0$°,à„¡1”ç þƒ4P>ÒþàR@ñ?yD:éò¶`‚Ãã Nð5y"Ð_0e—à ~ º0Fa ÏÐ0‚ ¨g: ¡õåÂÿàc$’ rðL~’C¶À Ð÷P ^ˆ ¦bAÁІ@%`D8¤h Á”uÁ =ÿQ0-åj¬À ûò‰?#—‚ þ€ áD€ t`&0ÇØà‡,…?ÿ„‰a ¿ð À‹¡ ¨°v ¦H°p cÀGw%ËpÞâe€åŠ˜ÁoBq}°%¹P ´IÞ~‘ H[/ðþ (=lö&„T d…$°5¥“WeaçÆŠr8ÿ!†¤¥ w >>1ž ² Gzv°lÁ ù£dÔ° ‘à³ U9“G•íÿÖ½t£qB±Ô° ò@ Þ °\ò"°| Op¡ " ùVÖ‘7|# P0S Ð]¡M8wÜEaY»–N¿ÄTI@|Ð a Ø0Ð&²mø#''¥‘:¹Ð²`&”ö•AWöWX Ð pd2òæ9éº 1IaW•E ªÅZ°Žû`k Û•j"ˆ¡"M8W<5˜A0¾À qèHð£qTÕ`uZu]õU¡—‹À}hôP }é‚IjA ± øu‰µX÷È æÀ•?Pmǰ0üÿE7¸%°]àÉ@ Ép$†uΩ3a`j¡°Ðp, Œ±‘BñB%à À YÄðŸ•_1Ÿ…Å Ô8)àaPð'ÐR°ýãäsQ :¢Îá 4Ÿgu ¡ ”ð”Ð|¶Õ@ ·F¢8ö ½·ˆV—£@¤B:¤UÇæQ8Á1Ñ1/©›€å“D*¤¶tSqÀ ø¥ N€H!Œ©>cðªåŽJKèv¤À¥öe:¡4Y4¸Œ`¡%°’ €ÙU7{P 0eju  Ípk ökjªaµ$HÿR<Ð\JPsþEhX°§Á U€ ›„99àÉp%‹T)< )mÚÑ^‰*»DHC ªT¡ðvêOZÀ!šÚÒÀ  "à_+0¡-ÀÕ€<Æ-i«Aa¢€Šè' vÆ&±A>vðTb)R:‹&­5–Xè A*éÀ–ª¯c „®7bõ wVB ‘þ0 É ƒ=0©@47\êŠ'½ð œRY¨Ð âzb…=PÀ)¡à‹þ e(”±°áE¤Ã |fÖ1@,ÒT PS$y_ÿ àQ9ï) J¢ ËwÑ*@»6µÐ'P„é‘Fu€,jA:'»kOK¢Pk qjÍdx©× æã!m#Ð í*D¥ ¹æ([´hJ7¤ ˆÙàh’ q 7| t0t³VA"úxCë+þ@AC$0ÐN`» ±{•¹;q<;›if0 †€£2²AáoÁOñ ·¢IQ¸„àCð<_ñt@à6sÐj%ûQÇe)–âK=[I'6tZ²mÐf B­×­! €9ž8`Èöÿà¯?áOà{p¤ëS&@RÃ0†!fê MÂhÌákèD Ê µ„/ãp0/çR vTÓ ÀÇÄ¢½tK¦ç$b¤³@¡²ö»‘3ÀÞà¾ð’guð'N?Úì1yÐ ÂÐ  «  p@gPâÒ£Ð)µ€o¿ð ª‹‘fr. @9ss<n'ЋР`—¿ €šà Ë`=ëžîÑEËû%ë°p @²I#·›¾º€6G@Ø`šÌ95§ '™sƒ+'0 @78Œc  &¸ жÿ)´R[6Zl[Æ ’y›ˆzu'›-}Ð Ò` ½·‚« ¢°øúa)–àmwyÑpW¹ 8@ 0±7ÛØ){ŒÈ?àJðP§ŒM€þ  Ô2 ·ÐˆÙr™AAÐ(¿€ gÅs `iQ>N¡€ /àø³@bÁ±] hD+XðÎÅ{E½ñä- É|m!`MR\ÁªÜé‚QžãJ%ù¡Ô–û¥9ý ` a†‰†l05ð"”0<ý*ì¨<>ºe™´ik" —gh¤ˆÊI—ŸXôg‚®Àñ‚@Jâ0Á„ÖLiB -ò U2(#?`%Œ“ø‰0*R¡C³©ªÂ…“#úsn!åb΢!ÃsÌ"ò£5%ÃXA€ ˆ˜Œ0]ÅBÙT¹GŠ'ö0¦ /;sL@½C3ÁÚe5hÿ„ƒÑ’²%˜*L±PT ‚èDI@@⃂@  ”niIA[uµ´‡n¡Fa>iïrMê™H% R†Q†f, †pÀ¡ %¼©F Èj­µW«}5,ƒÂŠÃ´vÙaMLb@Q¯ãUÒÙ0˜a™8n9s[˜9ÒZz­5ÒŸ°"ô‡¤ÖªñÆ›:.Éô& D=8Pxω§×Ñl£ê0^ Û’J²^Ç 2V7v÷P_q U– A†aƒ’zx²BÖyç‹€Ô—H•¦EmÁað`^XᦉÁ"t„gª«¶ÿpB„JîñÌÖŒ–Ñæb(éb1â6H-È«ã–;¤‘1Jm¤ŸL‚—ȹûöûk EÚè;½§ýûp¹±¼<¨8FüqÈ»â*rÊ+·ürÌwÉ¥“&\f™ð6Ï|ôÃÁæWÉ8vñåÕa¹%õ5ÍgÇI·Ý+ ·MÒô“–¡f6QB ÄA ôPª‰&š[¨ÅI%a\ôÛ³ÇÛ–æ{ìz  „?JÁä LJùƒ€&¶P¤…’IÆù ;¿[{üš<¡ŒX‹-_4Ã[& Ġ䌃 à xÁFp aì"%ÄBMþh; ©IŸã5œW‡ì mXlrAå`°Ò1̰€†Á g¸ËtF<"éÌ [8ƒÇX@ p€PðtÈ€P0!Ä` ’Mš€'¤Çíb†FP25f _“lcßäE‹dÍ„HÚ@Í ¡~„Íô#<àâúš0‡ ÂǨF D’{u°’!«AˆÅŒ8 Ã;(Á :T"a¯âÀ*$Èf%¸„ ªa½°ÿphîÚeßXã‚DS‚aªEVAyA\¢ùÏ "K7ëå88dþøC&: ‚ˆ` vø:Ç4¢_Ø¡‚8BüáNX´ä @áA†aÏjýl^òòÇbÓ‡"àb wÀDŠ&ˆ(Üú!L.q~%! ÊCAhÁ*_øc5H›A¸°–„ô£ã¹ßC8Z‹èÀI!‡. ,&¹ÀÅJ¡2"]Äc“ˆŠ?\1dŒà xhÞ"‰@Bc ö†ª•{ ¤34ˆ-À‘˜¦Hª¹°jà Ӌ`@™€ ¨ôpˆbzGXŲè ôáÿjB}+ED‘¥>ĺF.P‹…00}%Œ1Ëø§+‚*ÚF`„@™­èYÙmé²Alü‘ º^„D  ƒlòb€ª&¥80$ªŒÛ@ŽùëßnýÑ[ƒd*ºX¥(ô:ЍV,'¸Çb¾TM›”¤ì±u[<·ÎÁEgE@L ¿ˆnµ*P‹JTU@£HQ?h]Õ¤úù“HT!- â‚Io«8‘ô£ +(È.ÊŒxxPœtE(át¥‹pQ½lÑäpÃaHANmÚܸ E‰[I\âÇøÄþXð«NÐYˆL ÿx•4rŒ#\@OÙð~0xù’X™VJîÏÑ !Sp½âŸÜã¡BdÑà1õ"}•²‚0ŒËñz^2Œ¶a$ÃÃhI.s;dC#nþø¯E– ÝÉøD$¢@šåòOŒçQ/œ‚gLƒ%Î⠤؄&”À¢áB¬[¦ b«½VãJKÌU|ÝèkW$4„"]2H\´²Ù_¸ÙÎ!YÁ!¡‚,Œ@/@@k Ђ¸­ ‚¶é<•ȯEïksÓ¸/{¬ ™ø6€cô:$¿îH°-­T7&R²XV€`€;ªBÿ¤à€£™@V²]J$Z¬É羸 IŒ“»žÕÒæFÔ H{K[ˆ,`y‹GÂîÊ=|Ë€|ËE7srÁ ¾l€ªII.rá7xÇ a8ˆDÛ5-Ó‘åcø ‚ée8—Ü”Îp†2†€r6Z8 pï “få÷† . àûú£©eð Q¾†=$ápĺl¸ñ´øz õ§¿J‰ûª§¼”qxdÁþ ÖDüò¡¶÷(~boÒ<¦âŒ*&Á€ƒòr÷Š 2„:ÄÔ ·xA;}=rgFÚ«ˆE‹aLÃpðB ÿÞ È/©0@ÜÓÛ‹Q,û ²‘ÍØÅ“š‹¥²ÈI/’Às!E!!‚&Èöë%dZ{ãÛ¬‰JûvE# ¶)ÍA Q‚- #çþ¤H((+tÑOc>…Qx0–#W˜²®˜„TðÁ ¼@13Pñ‡%`ºÑ±1’3¡Ž¸9¸~Ðe2%zN­~˜ H;æS…~ ¾`(`H­@¨È„¨ª±,ÐB€¨ƒœÊ1¡Ê&yºŸÔð‘é%).x·(ˆ8€xƒ —š€V`>è>°4VlH-{ ;±ÈAåKÿ ó 8»W±…^0CäØ0Hïqz²y³‰øœÏ‰5ó#™èi#:²I¨…Ïk€þÛ.Nð„EàN诃°…vˆ©œ 6 ‰~à¿\8»†òœ€.1‰ ø‚IÐŒOëCtp£aȘ†H“=8ê &Ô¥Ép$‹Û›?èƒ%8pH…)« à]À>çx”ûJNPìˆQL1`Nh€¦x ½ðFÒ°…_x­64ˆèÃ8P†dh†fh+(X&¨X€à…Ûz2± HX‚ƒp)@˜2Uè€TÃ䋤€Œ‚8EPCÿ‘0†m¼ˆnÔ¬b0ŽlÔ ]àH…{ŸX „ø+¸ h…W´Bè‚x'wአ™Æè¹tÌ+ ¾b˜FÒ[ÿãƒT…~€3Qè&늤ˆŽ¤tdÊû:h„จ^X„ è§è :¨/€?È/8€à€À†2胘@ÀƒhΉƒö C¤ÃøTx3©€¹¸SÊo0™ºO ‰ªœˆ~€s‰Ï:l¨«À"Ë=œŒB…U@h=¹ ø@ˆÔ3Z@BÇ ßY†Á…bà4ÍC£À…ûë8“Ç|ˆ~¸Œ ‰ÿâ´§TIÒP…â„Ñ£Æ ‚rƒµ$ˆ€I†½9û  ËF¸ ¢¸Y°H!)€ƒÐÈIhǃ¸JÒ(@ñð‹ 0dH9¨8€#Xƒè+ˆðm †2bœ¯Ùc¸’ ”~˜ƒ0L ˆ6Ð ‚€É‹E¸‡Æ ‡4N@ʤtŽ#Bƒxx^P—°8çH’!©Ð!i‚ƒpƒp-(@‡,¸‚hƒ@…Š …L¯ƒ iȆù`˜&H^h—Dì’à’•·@€9x ˜†`¨)Rÿçx @™€hò‡6(‹†*­z’m1‹fàÅ;€C€a˜EfxH4- }¾§ô“~h…~X;Ø/3”gð,L€*@‚ Ð9mñ¨Ãºe@xQ ŒM×{$f€MÀ(C(‚ ý‰˜Ô‹¨… ø]À h…¡0ˆcÀ)s äôIa°€>ÝŠÉñ(˜„D6"¿ÖØ‘[€…h°‚(…5Ðç{SŠP…Qè… Óã0ˆH¡ñ°¿\àƒ @‘hMy_àSÉá 4Ù…14(§^íˆ,?8Ñ ?Š˜ÿZ †  Â \„ \CdÌQø†ÊsÌ×Tè/ ‰Uk•–ñ{‰:Á ð‹ØpN¨Ð‚Ž€XÄž`J¡}J€‘°>ð—ó¾v}× Ý“`p³‚è‡Qˆ9ŠˆÁ"R惊•ØÝŸ[ ¨¹™<78†­Ù•äIƒh¾ÓŸGâ…h8!æQ„P…Uׇ° ¤ÊT4‡`@I8S… à+­Hƒ8-0,i ä`Ï‹[¿#ÕØaðt8„) ˜OdÀMœ ‚6˜¦Cxa †E:‰ð£áZõ¥„H ÿÉð ЇM• ¦ÔLX¹^¯‚ YxFÍý ν›H‚ ÃÙgˆ†ê0Û+è½™”ÏýZÝ‹ôŠZ  À+ø Sªs‚¥¤žÄ”°.‰2ˆcð¸‚HC C¨@Ç“ì´V˜O.lØ×éíŠê¼–M•JÜã(„ChïX¡°“T(†Ñ3NЂ"-ˆÉ„L ˆ h‚C(,;ûÓ cÈ…(Xƒ´ã'F‹†v™Ýyyá P„è„?ÈàIh g@GbSˆ®Gè (èh¦l霖¿ ˜4@Cɘ„5€È1ñ9OC~Š(ÕX†X…žçyžFj að€ èß@Ø!àƒ>ðZÈ ª“^ÐÊŠ@œh$&<}€‚þ xåb±DYh…‡t\6ÙðÒŠžÝj<1m± €0∆Œéš„&HAtÃ/° ¬¬‹Â&ŠWà„!.;TLñ€ƒ8Mn¸Y"Ø€ 0 èð‚(Ëžn™®™^ \Ú¾‡ed0Îû‰ð‘M”kGöWð†hH F\/ÓÈš¼ îK¼ðJbå ÿû·’ ð‡\ñÿ‹7Ö ›`løä­u*´þlÊÓðüèÎs„šÑofžëŠ8plˆl_ˆ(ÆÉÓ;;V…?MZ“œ¼‡ÿT°‡¦ÌpñXn fÇ0h8±ÜÊVUDŠØž9µ³<²d°QpôÄLòöW}œHƒc Æ":è¾ ó/Èó®0 c~*¹qº˜×ÐJä²ë…0Ï!Yƒ‡B¯H xˆ€°€`—5:“5²ÞI~ï„``ø›3`©ÂhSÖŒh„âÃMá :ÙÇþ-ØÈ!¤2‚sc°€9¦–’–µï³u„óªñm]É .” YPrŠÈ‰°UÀ€,ð¿5‚‘ ×…eø,Ð=tXÿáËÀibm—æ A t«ñvçp`˜€hÈΘˆˆU(fp†ÿ‹º¨P xJX_%˜u(#/û¥Eä˜/'Ï5ùž Øñ!Á‡R OÿXˆ4døs¯?(hPCx2‹êŠBmò¸úw˜‚×–•õ*@n‡ùàlx ù0ç‰"yYZà;À»,z¨èwU%zܦ XÖÑÈO`Šýˆù‡ø†™/0aØ?ˆ„Y€…[^‡°¢û¤’é;©› gº‚€…]¨ƒp Iø€ûW©Ã N`úÝ숅€§û ‰„D]œoƒtÅù±ú]І àLY$pšppÈ/åÔ `(3׌üÂè!þaÿ6Ç|†0{†Ž+Hük'"òÕÙbX€ ÀP Ÿ6΀(X‚`€‡\Ö¤3S– Í…¾H}õkÎdˆ}˜ˆ_p¸È9þ ñÉç)£aHm0!À€O¢mq®ŠØ(@€*Y ü±*X+]ÀŒò'àƒFU9ìèqàE{º<.ôñ$Ê”*?úi¹²à­˜2o ¤é/NZ:sú£å­f*r8TEÊ3[sU\‰ñBUú5ò„+%D[¶zIè÷r%B:€9 ÷å+Ú´*[úQ+Ó¡Mœ´pÆá5Ì™…3ºØð׿?Y@apââ…¿tÿ)íua?P€ƒqQ£~ïIÀÆ%«^N¨õ™@Um´¬ÚÓÍ_®³¥gÓfK.M¹1yiƒÁ_“ANt˜°h) øÑhQY q•Ç-ã öêB?Uý®Ë¥tû/Óo bƒ ŒCM¨RuOŠ_m²ïO;¦C:í ´!qÞG¸äRL*­0GXå1x’e¬àÂÇ(Rg@G¬¤·{ñB! LCÃ…àJ/)ã[mùw#J3½uSN¼ðÇ ü¡J&DrD/¸\ø‘.L ‹¯äRZ.¤BÇtÔ²zêÝhâøôÿ€?4-   dÁI·Ôø&Žqz¤#€<Þb×.[éC/ÁÜÑÁa'$ÌHrªtÑ+!ŽøeaúÂKL̘`A3þC:@ùTSLoÂi(¨eÒN·XŒ0z °†e¶ä‡!˜Hå\Sög þlôÑEÇuIâmt2À  -1% à[ž:ëi¨ ŽÚ©·,ã‹/Ÿ€ IÔª«d†©P±äJƒ u—-êŸ`P,q0s N¶Á‚Ò³ŸF‹ã´nV{­/ªvë‘e¹ b˜– ¼²º%ЈZZ¶Kˆ^²£?V°±À-ÌøS¯@6úI™õ[ã¿þM ÿ“›°Àƶc‘.Å@!b PqÕ@ÅØcØlˆ*ªqË*'½4Ì;v4—Ì4së­JÜåŒþÌzÁ£´RK°dâ¯L›}vG/;‡Ì‡ÔLõWâb€¤})€ o:PÆÀ~Ä1Ú÷§vÉtE½‚AD¿t'Bª‚2˜Z¥|„”àÏ‚‹~áþÔË.a ®ølYaó8¼ª½ÀB t"À$ZÄp„,AôbÀƒ ÞøÓ ›£+ŸVé5î’:âpÐ:+ã;¼îABH?°0L( ÀB3LË€:-ÿþl&D0Äh›89Ô³òÿ öý Дà Z(cÄ FæÐ¼À u0A5†Ñ'ð» Zä7?Я`+PE#à–ËðG@H1 Ÿ0#Ã8Æ1šÑŒÄÔX†m0¨Ã´hGÆ/æ@€Uå¯4$ì_ØÚð‚y‘Œ‰2¢<(pþ P  ˜p`*RP1” ª.MpRQÝ".¥` ð…T 5ÕÃHs§’ä¤oºE$"AIÛ´„mÄX€&†01ÀÒ )u*ÕþðtN½ÄbAØBjȆò8 ?ˆáRlNµ¬¥é¦EÅJšµ­k8ñ×JzùV?TЂn½kJК’Q}¥¨té!^[2½¶‰Ns,bùEX_6±Ž­Íb­ª£ÇRV%!ùþ,RÛÚ@ÿý H° ÁƒýøAȰ¡Ã‡#JœH±¢Å‹!Fºå'N CúYF­dÉe;z¹ð`˳2ÊœI³¦M„/AÞâ80ÎB‘ ‰ ³P¨(þHZ£ˆ´Ò¶ÉÐá€6 ¼À ѬY´[Ìv²Ì ò¦Ù³hgî\{Ë  fþŽ-h‘æ 1mè` iýAÅ ªÚˆ€C‰Üiј1£å¯meÛ~ ̹³L± áúC0‰.poúLpâKƒ^¬bÇÆ(›.*ˆP…°S†+JètUK ÝÈ…ÃâóóçjÙ ¬àOÕI"ÚÂÕ •,Uˆe%ÿà¤ëWƒµxK¬¥%A/[¶f×ÌŽ"eËÐó›åm&2‰äÒ]%ÐY.²š-Î8ÃŒ2ÑBËJ•IClI§ŸM?ýtËGf„€‹4µU4JDàŠEª0ÐÀ/m—Ë"œ WFz©B‡\#[D¡DЂ?Ñ´Ù@ õ´™°ø$AW~e[-YG4Ñ83dA+è¥× Ћ.µÍèO//2¤¦?1Êy‘-Á0À`Dªô#‹|À)g{¬â(¥t²Bs8Q‡&šT¶ÐZ•SH[¦Å©@”¤Ê AHÒHϪ'C¸C•'ˆÿ0 *ÁàR?¨r8«V„ üÙÐÀÌfKA'ÔI“-¹Ó>þxP%<@‚ê8CC¡ °bà!Ð0äR¦ŒhÁeáºc)¤åA¹cµÐϬÀÄw¨@²áò *ZˆpÓ¯Á>¤E0ñQŒ@ýÊ@*ôsçE¥2ª´øPXH ÐU¤ÄÄLc“q¤"Y=iÓ7ʦ €`•°d‡µ4p€²È0F¿È"­C'Ø#ã‘7ó1X¸q3¤±ÀW&ÔôäS€sì» ý1€“ a8–@îúãK2ÑÌAk¨‘'~m›Åö*Ð"Z¨ÿ×T|-'¯"J´vDõWGi‘Gíæ0 °ñ ¼­Š ªÞia‘šäJ„,ÀËêþT [qPf!XèZð€,¼€PöD.ñNàãæxbëDü˜øE‹7ÎeK,»$ÖJ·ÐbA u|2Að‡ äâ´Aºk^À" ¨÷1b¼Sq|A¸ãH°W‰)h£ G.ˆBÌF[˜à\Ž@¶ñé‡ð1´ÃέM¨fµ¯àGSœê~ª‡Ò¤˜€ô" üúºˆll¡ ܬ!Að  j< þXAÿþPЍÂQ%€ÀÐaa˜ßC?!$`‚µèÀk`8‘å‚©ˆ&ÑÁñAœˆûT`c˜5,`u…Ê&`@¾(²£ 4L²@¨RUdâ ؃)c<£È„^Daz b~ ‰Í/ìA ³@P†ŒÐ€Fa „+À*`_øb)cCÖõ©š|aa`s9:ó H@»Ñ‹,ŠIࢠ¸‰¨¦„føc Æ1ˆq^ì‚Ê8×-"B³X4 YKªä‚ ¡_¨vö%‘\(Ó^©H¾óÉ ¼â¦pÈ/^áÿ{PD˜Æ3È1“Iø8H&–‘2U¦C aÚ*ÒM¬ESIÆŽá6°ÀD Z“, €0vF„…mâ.€WŒ_¢t<‰MæIÜ£«P¤?¤ÁŽ)4Ä}²Œ»Zò<™ÔÒ¨µÜÉ!w ÅÌ‚ óÄB£p¿±Á ¨0 "t§#þÀã3C(0¹ÂFÄAœSÿÔ ž`Yð3má˜#À0¢€öbf”+žˆÐP—PŒÐ Š U6XE~j¤G3q“žÔÖ`3´‡ö𢆜Àn[…LÊÔðjà¦Hf ? ÙTXøGFˆX²ipµRº`„d'@ÓÌ6Pkù0  ÔïÈLh@¸—¥÷"î òà›x F`ž“Á•£ÃB©€#Qº°-”& $y‹É…3eÉÐ…à´…DQ™iœBv%·p ºÕï7`PPa | BàÑà j9ArU€K1CÀÿA( PLmÕ~Ÿ%q•`;5p\½+0ÂyÅ)‘Kæu,Aeq°X»åÜ0µ )möÒ| º ‹q,½p~7ähµèIZn5^ª€<ÐÓ0!’ñ#rˆLvœ&ÿÉXŽ% ß%âP ðN'ìà]2eZÑûYÅpJ¥XNµ¢º‹ÀðÂuæ5 \±g°Æåà8à{Ö «('pðE_œ’2Ѱ 3À€H *)X^â$ÐxÐè€!=Æ„ …lAæ—ZŠXæ£<¼° “#‹Õf0¦ µÀsOÿ1¬S ž‘5{Z©¤G‘°Õ 9lÑc’ Õ  ¢êÕ@ ,gˆC=9f©¬ª%}Úª°«²:«gqT©Nâ:áf´Ú«Ñ—~° » …êu@ ¯ â4liC%èfÐꫳZz!Á’à ¶–-às }pH`ð>‚‹-  ÄP &lQ¼*­Äæc'#&x&ªÞ@ ”P•—VÑ>`È h9ÆÐ >P¦K §“e&i“á%®syWœ +¯Ï•W¹¢QÓ@®p Ýs²ð>gD ÐЦÿ5Ó Ãà U™˜g6-ÑZ­ÈŒzê±X! š€~Ö þ Ràp°œa !àn€¢Æ”[ðÖ^ruâ÷WF !f[þÐW¢& †°˜€_påð97'_$_à\ñà p $0 ×bA ŒòX¶ia•yÄ Þ% ¿p¥Äá{¨éµ±œ |¶GxIa¦ Nä{và°fÓ _&*¯üIÔ1T»U½¤BEs—‰q _ä†0mF@—Û½€þ`PŠë)µ¼þ@¼ GHIµÐ Æ{ik:êaÿà˜*‰«¸„hÎk ©È²I—ƒ±›½PZ >"PÊà ¼;âWeä™ ²²Ê E¿ñ0b rb œåOþÐþà&4Á|€· Ù ú›ˆ -l€² pÔ‘ ¾ Zd{Y:‘BTìa›qy¤!SPÖÀ½±p‘ ç½)Ó¶” Ð0x‰pg‡ "Ý@º°ŽQ\à$«å](XÒ©=š«“}vvð7°.©‰!tÁÃ8lƒðvè1@/GWÕGpâ6¼£¦tŒÀQŠ¢bq)&ÿp@\Œ™®J6DeŸ’ þ+A G8?,€pœ|R7q € ¿àt€Œ<’@ ¤@&þ“¡T„åuµõÂ2@]8Âp Õ0 àgAíQ ‹ ­ ­0mï!¹£‘wzÊÁ'ùµÐÉÆÏ! L@ž à@ _ÒÒ@¶*exZ¢!‹7ÀÄVáküºpEõÒè¡&ª0*6Ò @< ppxÀ’”1 ž/ PiÁ,Õ¹ ½× Õ²ÃM¨!±:ýëÅbQ¾·ÕŒª+@ü_`|pø#°†Þ<¹ÿð ½ÀlÁ t0w8M‡ ÝÆþgfH7Òn|ÈšÇþ@*à‡Ð´¬ñ}ÐAà´Kâ@©•;>a•Ï!’4 ް‡“TCPàGÑÁ{ÁBÇQ'Éå1áHÑ Hª0 P çÐɬ †`º¢F—?@ Ç _M©S[`üÀSV3‰x À q²¹Ä×»¦ÔÑ5ª× “wQ# çpÃ3M‡þ ð½mÐ[àªKî;E¶¨Ð>‘C'pU ü(,‰ñ`,p _€-X¿€? -*‚ÿVûÐÉhþÀ“°”q ^= ;@r&À61 ˜_&)0ˆŒ†Ú0 ±3 $ð Òy/xÄ£ÒI—,¯šÍ†pé¡&CFhËFßþà531ß7¸u"òËuð3  ,bàFsÄlbò±¹)ê§x2¡ Áà}°B°mHÖ¿Z[—–ŽS€6&6ÀŽZŒ‘&¼Àz0šH±9\ ÐêyÐÍ ñ Ô+êAЬâ Ï„LM?®Ë 9=f.ÀÄo°½ð 1pÓ·%pèpÂÎPKz @)SÑd,.¦GМÌbC“4W@œྌ#Σ ÑÞsuóŒNûå ¡ Õÿ¹Ôjr¢Ð&þàÀ €s˜•>æÅ¼ ¾Ðö(¡øÿ˜ ¶rç3‘ T` pè yAºAPÇ î%ߺÇFg{;ÅÐR‚Í« ÛÎ/ºË#t`DâÄíçB ªÕ3ù½?À4p.Ìà »ÀP¤(AÜ´[ ͬƒ6Ñ B¡ýPFaŒÞ.maPuUä™}&„Ž4ïÓ½T`(kš‘ €tá´…°Z?pcèb-ësÝ@ÅÐòA€p, 5t À' ýV/Ô~{¤ýEiF¥T¥ãx`)0 v:l"ÿ¾ª2ÁèyL´k/j¨úÆ¿“WOnn &Y 2àya/¯žÆÀ,‹°|jßþü XÐàA„ôƒb« :ª&,ø‡À€P0xhFË#­8°`ÅøÑ$­[))®L(€?‡,Wâúu„ÁD™9 ªº£Ó'+ ç‚5uBÀ ö€áÊÉ*ØKŸ>ÿLýƒi‚pv" „Ú,¶l™Ÿ8iÓ ¼åÇOA·qãF¥[×î]ºÝ ”•.T¢P5SLƒ¸ŠAå;p°@mJ(YÀË9sxÜÐFÌ3fãÈ•{4éÆ2KÝZæ3®æ2 ²ÿÁÁ ô1=¨˜±ìÈ%fK{+’XþD¶õsËßièse«øÖ_¤ƒ¾#Â*u.ÙŸ¸%Ø>ÄQ¡ºÐOç`Yžx'^^àsH‹ã¼¹ñ·N3È­êL͹ƒ,ÐM\¸$þ(7ÔØÃïì‹ê(èÅ pé% ZQE.X¼‚hk¤TÁË¥bæ+È·Ô:YA Sü©Æ³Z‹/£®:¶Rb.­änÅbxQ1Ú (ŠÉÄ â¤.Âú¹‡j!o‘_t‘ ¨q¨°ç ÁvÔL /R£ÅŸ=ýaÎ-ê¬kL:#|® %Ñ*ÿ®8zƒ@ ÀŸ\~i@‰NÐÂC e¥Áj¹àˆ_p‰É/VlÁ%OR°{R &½‚€z¥€*ÅJ¡À V¥ BIÁ?}NP" ”­´ãrî˜, @ÀŸ &ɤ$àƒE„8I ‘$l°~:˜À€^ꢩ6Np¬ŸÄ9¨p o°v ,˜Æƒ4vcÄ(A cüI†"%+ž6:BãQ´<ŠÛ!ànü""›*^%ŒEìt•\P©Ô…±Ñ[ýÕu…Òˆ¸ âެxh¢-–)c “~ö–8 %d|à!TéÿÅ€F^E1-Y²å—‚j¡‹Ý\(ç\]'¨á%œóo–YVŠ»ÖVZã?ÎjèË/sÈt”FbtÝWÌÆ™•W&I{oÊW*²rË¡E(%¹Ž¡pÁùò ^í[·Y2x Y±#“ɳÃü®¢‡ž.i)V -b>9ðÆFÇT×ÈjPgt (a… ‚ h‹üÙ…”±¾ÏÛYªÝèìùF d‘ט:xV¨H÷ßÈx g”Í™a,h¡ ŽFIº×ÿœäJ‹˜c¤ AÀ$Ö`Á.@1_ì#€?,Ãà…GnÁ ¡‰¼æü¤ÿ j…$ÃÐF ÓÀƒ ª(…*Dp€%@ ÆùðB€&À) F4@Ã'4)%(QKBÌr&qoÐIPÅä³Pã-p@A­´ÁGFjåA8Ð. ¤ˆÞ”xF4"ÊvÙ-œñFÐÀi˜´R‹/Á_°—L’…=?¥QƒÔÉÆ>h19g-·8I¢AÎ@s@VøƒÎðS4i¼R”£„‹O”tÈíáï#¡…\ÖHJXÂÒƒ9)ÚIÉxÃk¨”Ä  ÈG¯ø‡Zˆ ‹€k÷µº €n¨D~@ÐR‘@°E™`çT Ha¶Ñºýù…¾>(…@‚ð8T÷Ãh¬7R ET ÍðŸ 2`cÎPlÿIõ¸¥ŠIH–`BPU9Tá‚kÀÄ r5j<é¸Áš€EU Á50ƒrØ$'q éƒ?Šð†)) X‚©®œT÷¨èE:‘2°á^ Ä k…A*!ú9Îd†@æ\+œa(õ@&ñŠ`èâÏ?A•.†Òžœh°R&ð t'C×ðÇеéîùZ‰4ȶ£@ƒØ¢|@äääbÕ ô /p>¾GG62¬Ü¥}Ù™%H.d½ "¨1ú‚¼Hãb­r’.V*q =bd‰$ä hpI ÆÐ ÿ+¤¡ƒswÐ ZwA0K‘\$€Ôª…=R "[ä"ö^TN"NÛçË*ü‰„ïmëVE»ß•\£Ù^NÑ.#ºˆ )TPµÈí# – C“Ê( JŽLî$/•ÅöG6³*>4Â(g@žaÔNéœç ¡°A#¯ 4}v–ü’—z ðü±„‡Ó%à7BTÑT”*î˜S2Ž€©‰”€k)¯JIl#kØ,oºkñëœÈ ˜·*’Œì‘o˜€$S‘(ãùë4HàlôC-ü•È47KpÒdD%¸ ùAðŠx%6è€Q^ÿ_ „Þê@3æ(bfH1šáhx’ÀLþ.WòiìÝ'Èø”NR"ƒ˜)Fk32©‹%(“ÑŒd<àiÅ/thahCä‚Ô¸ðb"·1˜‚%°Øë¾œ˜{£]H€ƒhJ¹™„´W0œß“‰ ÀBø€È”@¨(ƒBム¡s&D‹æH’Ô¶]'@! EíÐk˜¶¨à>Ÿ`@Ÿ;Çñ‡péšÞXkS?ºPç¡5U8Y,Öa…Ú31ˆLò…a>ÝQ x´Û é`¨‘H‹ x€2-Xÿ!àAP@™Bº ž>â„\àôó½ ›6hÈ{˺¨Ø‚ ¶ˆæh‹¥°Õ*0C⟌á…è83UÐ €!¨Â <9d :¼‹bH…JsŒ?\ÂI¸€hó‹»(ƒ<HaW ¢[ˆ¾ûi&ÓȘIìÀÊ^gh†xb* €‚`(T E"Ô U˜=jÔ [XgkŒZ…>°ƒ_€C» ðAÈ·ËB¸\l†¢† ɉµ0$­ /¶èZP’˜ªBøÀ@°ºiä‹klÀư`¸‰U\ ¤°8iƒÅ½ÁH)<Àÿð€c È&TZ²Ë!¥Ó0 ¢ Іfðøè­Á˜YȰ~h蹬ë…QhÈu€R,®§hH„ Ð;rTâZÉ ð‡KhoH†8à–:ˆzl½‡Iû%‰¾Ò†J! ::°;ˆ\X„}S…H…q±·¹ËŽu¹;/€ïËÆœPŒn̉»›#äUÉ4ß >XbÀ¨S"´«k(¯JšDI’!Ú¡.P€ë-à6h` s¹­‘TH€ìIUWÐU¸UK -ÛK–h…FHYø<>ÈšHÞS—‰HÿÜGÓ Eä“8° ‹ùÍi GÜJCR„X. Ë ]¨‰Q¨…ž|´ x…_؆íœð{:>Í•¸`P•_XƒhϤ9¿À•u9ˆN(˜ P ˆ*€O˜H‰ñ¡’X¸ÒÌɛÜé¿IЂ  3ÁI07i SHOp¶¨ØLO¡ô”Y·_à8±ˆI¯¹îü<ŠÎþ$ux€0H+uéÀ«°öqŸc¥_¼Çº˜'Š `…s0@Ȱ-á¼” …œ÷°FÔÊ–”•„pOT¼Zè€GC¤ 0`¸”¨1ZÕ)õ¤ˆQÀPõ‰lk€`XW¡Öüä‹~È@[†£ô‡  °1ûü^è4?©JÿS"`€{È” ࣲR LQÍ6»Š Èք能‹^@ÅéÉÿƸ;@xƒˆ”Ȩð"K(ˆ6(JÈ‚ç+ Fê?Aºš ¸v±INЕˆ¤A ó‡$@‡EˆíÖºÀV9  vµ‹Ä h‚‚8ÿ†üá˜AÂsÑRQšø‚à!@AøY7È€`€bàYºàg[–èˆ$XÊy5pƒ¯ˆC0t8­¶CR²…v8ÁÊáQnA2ˆæ0ƒY´Š_X[1=F¨|àX×0†+¤#ø:Œ ƒ0h¸û@:Ù€¼½!È‚  kûëÄLP¯Å•x\Ÿø…ÛòÍß#h^ų‹ÀÚ¥e‰3tAÀ"~ ?@‚ (dã‹ÈeÛ‚8 `Vƒ„EEÖ¸‹ÀŒ‚ È‹] Òárƒ–!ùƒ>ø„¥ ¾#&^p›!xñH1¾è…öuÈF‡f-c ‘™9ÿQ°‡òËË_ÕM_™8â$Ö´Óœä8…Å ¹Î4"ŒˆÞ£±˜j „Ù»` ºYH ØÎƒè ˆH¯ñä-[V„Ð…Úü”㜠ãû±ãÌ”€…P€°’?…2ØÌÝŸuA1Ø‚ˆÔEˆ!I‰hh†jhJ „L:ˆBûaƒð L}U{8A¶Di‹ \†Q-ˆTÀl`ߺå¨ e *áqã? º-è­µ"AD†B,cÓY—?8沂@”’”‰5ʤƒ€„(øµ>¼•}‰ Ê` ĺ¸?´áº åÝYáÿºH‰«z#d\p‚LT« hËEx[ -ÂhƒЯ.˜dl†eàœYØe“\©ÕgS6q©‹‚ý…W ¼ÁirɉEÀOû8b(eÖJ=ºH IJ.¯L–¼‚Qh>°ÒƒÐI1-×€+H„, ¾â¬@ÊtŽ>a$[Aƒ°Ü|ã*œ ˢ̉ô”ˆ¢á£>’ÝœRBNÄz¿j %(„ùcÑ‚ ˜8eå?Š/¡Â>Xl\Q:Øìd°€«rD$=ë bhmȤPxBûŠ_€ˆ ŒQ¸É‡ƒ¼aŠŽÿ/TZ(Æeh1xX+  ‚qp¸`H…Þ; W˜U]UD‘( †Ø (…úmª¯8¢‡Z‰Cešå0Z0hk€¯ÛŠˆ›€ˆ¨…øö³1€8ÎkÞVá_ ¦.¢80¨*ñIð À×¾‘=l¶„î=… ŒG—½Ë8ø °…¼r3­:¬äìJ·é1pž…¨#Hfþ10œè‡@ 0kÕ Nƒ:pÔØÊç©¶19x^‰ŒóŸ Ûÿ= (‚5p;Ä>„ ¬ 1;€_8…,,…/И> Àÿʱ¨H›GèeHƒÄäkß/ÿ PíI`Ið²RP‘^xlŸà*hÓ5I•㵄LHP­Þ¶Ž[0¸P¨þ`†hð3ƒ?Ѐn`…^ˆ-œ?è(ñLNXÊ£ˆR«O—8g Uà™“ê&+º§3'Þ’´ÄïÁÀ„ ë…$«Y„ …f.¶€eHÎ’à…]p† ðˆ‹À8`gØ$XèP ؃Z‘†šÍ•iS}ºÈ~¸ñ‚¸ë8?„@‚x+¸†â¸cÕc ,O y•dÝfó!V‡b°„û¬;ÿ‘B@;è­‚,   ØwÈ Pè:@ª‘WcßLaj® /–Ï ™wÄðÚܶ‹ €è _àª<,hQ;‚ˆ)ø…‡Ã…gˆfu‘ñcgM•gVºðÑ<(ˆð‡õ‡ÈªBà†8îÈh‚Á“_…L¯ÉH…·A{ ~°ÄàL¸yŸ`J`%8ÿ,ÌAæ™àT”ˆš\„—5ĹWI TÝ‹¨ÿ W7‘o€Ao Q' ­QVUÏs޹¯{Zω?]~¯^x§+,[RΛΠ˜º°NÕV3'Dÿ•åðX…€†Íü †#Èšé› ê¨¿föè‡~TUh„Ø»Çûƒøx‚–†fpZÑ«‚0 r“ÕˆòƒP•^€S0/ R(€‘‚‡÷ªÔê`Š- 2ôÇŠ•­\Gè4¬hñ"CUý´8ÇGÐÀŠm@UÒÃf“6jÔvÁŠCëåÂ[~üÍTø’–ŸœwòìÙ³EŸB&êóáÃ_:ÔpâB‚^¸^ÄŒQŸAVˆñ÷çëWªTµAP‚2^¼`µÌéV§B¸qßÒ•›5ãÝ‹¹FåíY´/O¤ƒŠ¥ê ¶Ã„v¸,ÿâ*†pEm0¨Ø„ß+Ø£ Δ)“Y·æB¸§!cüŒ5ì‹$t‹½óa.{ü À Øâ†î-@¡äJŽ K¦­ôÚ„©uF‹ô-šumsïûÎï Yé*æO„ª…½g8¼»HówëV¤H3Ùú‰ç¾i§m'jý"žm–ä" w c,éEæ[1í-ôw’½F2þåÄ,Úõ—]MoÍe"UÀUBÖwÇ`_ƒ`Å"ðÔ›,ŠU„!wm¼ÀÆ1÷ÍäÖ‰~DbMs1D—mÆtŸ?qøá ˆ¬@– ‚ýˆPÿ‹*™0ðJ/CÙr _þH¸£²xb¡B@öÕCð‚/ÿeG¥BfG“‘x× ‰Ê[ià!FüÑGáppÍCF[oªˆ0Á/¬Ì­ ÔÏ|äbK‹ 0A?yñè£p|×Yf)ôŽ0Õ,ã§ €úd(wÂ6éŽ<šŒÇ|E@j€K¦.2ä”(4P!CHå²H#"ôÖA*Å€‰B¶ž>túcg^[˜Ág•VÙlH²6蔩õÇ‹/¾T£<) ±Cˆ…IOPíEœÜiœ¨´ZRºü’À('häO-œ H14ºgÀ¬%ãK2ËèÄÿo\1å¥/`‡ÚW¨l1ºL ÔPÂF0–*­HŒ-/ÔË­pŠŠ|4¡S£$ Ëm±Ú@¬:Å@G ưÝB‹}: Í}­h¡~[ #à€ÁBýhp,'¤ETº$íå¦õvŒ èPÆž„;ÐÓæº«ÐC  g[o[µÑ‰*Ðb¡‹.ìôÑÓ!Å¡“3Qi×̬çËP€þÝ2L3ì°P_@áCå-ù¯ ËÇ5Ô›£4 Ö!Q/àŠ #*œ\üÐ+ý¼ÉZo+(Ç4цf^ ^ ÕàDChߌŠ®[;lÛ"Ê}Ë1Y@ÐÿUo¸±Á_„“ O¤B\¸Np-t@ÁXÕPp“Y§ ÈGC*§=Ì `aH`°à+øÃB /¢"îƒ”æ‡ ùË?§;)† ÐÁkEo$¡8VY¤<ðØXD14Ï(™€¸Ô# Š#ƒ¬HÀE¶‚Œ`ÌøâÎzp øãÍð,^x:¸MÉX53”üØF3œÙ‡f@€VH#PH XFq`4Ñ=ÏÀ†õŒâ%…0 kÇ›bè¤Áí­«ƒ\<†hq^,Àþ8†?, e0£J6Ô¤±b¸ÖO†Oª_v\B‹8äoÿxô7ž‘b,yPY\_XŽ\@!3Ü!IVd’ʼnÏ`°\‡³´I¿ºÓJWºí>qX!l)`<º´ŠÄ¥Š{¤b…ë ˜r4”ÞXp™Í´M'P‚ c&à‰.²¤Hä+ŽÜÌJNnAËÞ²œy^.^áíÕ‚ö ¤»8‰õã…dÜ=m“ø"ÿT“ØÒ$µqg›5ŠNúSˆöäy¬àD ®Š6€ Ïð„óÌ~8â£Ø›„3_J ()¡n¡eÄIÎ"źFNkQ Ьo 守ԦÎÏfdíÉ[ *U‡Þåyžÿp¤ÈTàÂaMÀX{Ò„³ÞŬJ5èÍD ¬2F’z'´!cY d°ª7ˆ"©hƒB¬P/¾Â0XÁâlE+¥þ ¶°Á|+2É`‡(:1E-|!”ÔU@{ÏzV·¯ÜÉhã0Ø;Ž“­m=¬ºDÖ<€Î^€ú#  ØàÉ[|‘Êð-Üx«Jð %'´ô€T¹aXV#¹°éMj€Žf8㋼Ø-¸ÀpÑ8Û}^HÞ·”&þ!Æ €UøÀëM­bï_æ6ƒ´øâ-& a$ƒ¢4–,b9öG­x<ÿ–ÔªVdA °…5YJޏƽˆ‰âà aì‚@‚¤0!+,ްQ°•p!“01åéÆëWSù}I‚'s ˜0_ùÂ6P"Ø5kf ÐÚЀ.‰¥ e§Ð†L¹Ê¾e©°PĨ8ð‚ËHƼ‘†‚ÀËЀ ÀPŒ<$-N²?@·.ƒÔ,åKåf˜ » ]cC–!j;Žo!Ñý{‹eðbɪƒ"¶€8öˆÞÆXQ…º Y†‡jûtf¤>¶EÞ\?›ÕðÆ@Šla| ‚øÐ [ã!»FòBú d“û¥,UuMB`ÿìÂÄhð gý`^0úP £¸Üþ>¨•é›8£ŸÍ Á¬PH @˜ÈkuWàTÄÒ¥ä×¹ÿ­ñ( Ê^ö™å_‚aZ@ ÈC%@Þü6XH ÂŒ³¡Í¿Ý8ÎËÛ¶ÞR fq>ݬ‡]ì"7¸B†ö©’ %òÃ,r.õ¡ÐÐ"R–œ$çhDcî§M„CÀN½ìÉF”goòoʲß89õxÍ.÷a¡=XjyœU ªÏ½ïhŒ±aâWÆ4ã~?s´C„Æ<ÑÅˆïš Á®+h¾ϔiXÀÓ}¸šo÷`È-!“4 „4²ð œ !­a û P 7–2AŒÓbA47KÑöq\õ^îccs~ ¾Àu€nÐa38s&JU2ãÑ‹€r 2ç%ƒ Tpœrl)”>±<Í#29 qaq ÚPÎÇd”4„ÑG‘A9UÎ0 ÎP WA Rÿ $»s/fr ØðG¸Ð«f)„âÏ0kþ` ° ÔÐ…¢•Ag&c‘“ ðPÔ'Ð  ~¶ 6c"…$-£@J¶d‰SÇ`? XFèZf‡¿@ŽõkÁáP t—¹S @X$ΰ à 4@1pP(°¯2¡àvª Óæ¹C"G ‡c6FP0J{¨"w ufÃàdcVΣSÊ‚SP{IC@‡ªp@¹@¾‘TµÀÊ1ÁW ©ÐÁ!"1Ä ½ ˜UKª0 “ÿ€"þ L/p?ö§,-&PB–p‘ †ç·Ç†’•#eL5)}ût ÂP Ñð0®T¯Ø AfX:q ™p:@ÒÀ­ª`×r½€ 0µ0 ‹@B0ôK쇅 •¿'•>áÔ$<':ÒSzâr²ÔdÕ• %Æ’ÂÑÏÐ{ƒtl'ÀB ðø0½p— @^ÄR¸Àš¹Àq5Hþ U0 ¡ ˜‘V€ KÖm Ò8AÑ8R;u˜&cG_ Ñǰ [p[Š…IîØiœ"½ ¨0 ‘´l `‘¡žÿsÿÑÅÀYfõ9pÉ2oÑFѰd©£P´4?¶œ7vŸ°G_³¥¶…XŠ%ó ž tÐSiåù.ªÙY9á @r”5÷cÌèbÂP[Ô5[Q`ɦÿÑ^J Q¡ñAáÚ5ðuŸ?bcHd$¨ .PHpt °ö¡Ú¢VÐMÆ /£áCbƒ”&6£*&XÒdÃÐ Õðb£Š!°R¡É V.0d7£ÏȤ=F¡g÷ B,´`ÚP  y€ à8`·à0 †6¦€êvñZîI”z¨~…ŸÑSˆÿÚ¨ïud?’'H_ŽZ©£óCÔà Ãv!1?îåñ§–Z©g*PÊBœÎ  Þp ¤P§xt„ö8à hq $P ºš•,vÒSªE£¯õ&o! Í€"mð@r`áPáàr@©ˆÐ- ÂÀ ±T¦ÆQ~ˆy¤ ¬^9Ó¦öCœÄy @)Є+°ˆmàj÷HB’+P<€ÚÀzŒv?¥#ŸƒèŒèNǰÚ]p¡÷ 2€ ûÚÆ€ XjS¡Š%€Jp Ó@ŽÆ 3¯`D s Äpp »jÿÊ`¤ ¥ BçAæ† ¨²¥! ðI“àQ@¬p€€›þ ‚xàþ€5k'RC1z%G¸QI@Ùð}P‰‚pàð³>ªgð,_“qPà>Íg ±Y+¨R£WQ»hº‘—×w|@B?4i }Y'à’°Q2$m×±·&9zEn€{.޵Õ1Ïð‘D8!ð ¶€rçÒÀ¿p¬¢…/CÈ ”s?ÔɉId¡vm´¿Ðš¹Ù à8¨7Ø“hyÙ Mðãh^è`+N– z‹ÁÁÿ;ˆ»[i1êæ¶ ©÷€!§ ›…L¢àBx.Á ’¤“ Ñ  90 ¡qsµ¬Ð=²ŒãË\1ær¤ Sç8‚}!¹„ƒþP-ƒ À0‡uy”ôj±V…! É0 ïªPgwÀif °ª‹Â AqU¢n1 Jð! ðB:¬l@a^Ìð<ƨûy š:«3 Ì0û„A@5uL·ºM×)É·ZpÁàÅ ˆ·r£z^0)@ !aD9©G¨f¯ñ0â ~ìd$3P• ¬pT ÿ>%4&“’Á!YÏðÅ"BÆÅ(ÛÏѪó }àÿ/0Ä0 &ŸKÆdÑàC ©ã*¾Æ©pt?-ð&Zè«à$÷˜q©Ð -ÉÉ4ĉ¬Ö=—Gæ@É a ˆWÆq×âK©Ó÷@o"ü*œ— @là?õŠdÑþà5ÅDe¨»Qó‡È™À!ˆA˜f‰"P KÕÀ`·e ÏЀ"Ð"0 ¨ð ¶÷ tt—‰çbÉ¡Œ—›E "β¼ÄxɹÙ˪ ëÅ2Y€›„æ^à3Àzqá0>B~6ËK@/º ÿ”Äq)Æ1iO 0|«V!¶€‰—£ðÐaRì¡Á£ —'Â!¯Ð |ÄaŠ \6.@¾1¨Z®ð|_`-1„dšP€ úljƶ¼@z4âB`Oç] À|̜ŠͱT©—jë«à’CacÆm}ê«aày.Ï`¿-Ù­ƒ}@¤y7€Í  }à´{̓}Ñҙ–aÁ×Àk0 h¥8H g Å:q…Q z• 0 ¾°DÁ?°ÀÔ5ûwÚÙâe¼3W’ Ø`.ñBI ð ó›éá}ÿ È3‰“·=-Ào‘fá@þÀÛ:a¼:áM7gAÅr »ÐvH²´Q Û qÝvó6ó “9"ž0|@¨H6ÜŒ !Ñpþ°kâ“ãéYFêÒ®µ Ã0 ¸2Dv…z -(÷àð  Y8hV\#Å`.‘—‡BË‹E NBXAa]®’ã\/fs€—ñ_›Ó‘áù¯"5pPñ|á»§} *z“2Ù5\ ÞÒâ(T py=±<·ÝÞa-@0 NØÀ1ÐÚÎYÿ° PNÆØ»ûr¥À+i°ÿࢠÀÞ‡Ýù¨  Gù ãPÅ ‡~„Šã‡;ÂSkÏKf+Õ+‡+ÐAà’©p÷0—x¸9ìZp>žÈBZÐ AÐ p@­­‡f’cPâG6Îà CðaÀ1 p×° ÔœÔÓÄ(A›~?©bžnaƒñî™xðaÌÚŽ ä` ‹Žu²`— 0|Ç<-”u;a ùa›9òh¤”н³'PWÃ'ÿdèAõDÕQ `bÕ¬œ@O!”$ŒÙ®ÇH hÇSx9ðA€ ¢Ub(4½` p¸.œÿà øÓþy ñ#É Ü…€‚"“ © #Ðo °õÈÞ¢¢,¹3„7ñ•,²€Ù¬@b¤Í  =YÀ:Α¨zvqª±N8x‡ ŸiÕARæPÓO÷‡`;) ðìÂÅXÆ «ð¯ÿ!N“ü,­@`âPO&5 qÒFc”éþ>•9€Ñð·Û®”¦ÞßQ/‰b)Ï ASL Ì[F*¨Êa ½pGr#|”¾HÀp/’tVýà `É£…\0ÀâvŠ­®sŠú^öò@ª}ÙÊÿ‘ Yd[•wVa8Dbð< ÉÀ­§•Î ^Óß¡Ð=¡ Uš®œP5êpB•"PùcÈ«\öú5¤XÑâE†þ€à!L¯[ÌnʼnsËäÉ[þü`dÙҥŔU1†ëåMœ9ý%Ä'—MYÙÔ'á^Kªî%¨ø0”‰AYjñ‰˜6j°âÐ:éϤŸ8+½J Ú#-°*0ì“ËYнà¶TE®}.TÕA6[-!2•šTÄ‘¦%έHÀßEËxñòG‹¤YŠ1c2n©ÙìI°qRà(âÏIrÔ<#÷ç ž`ð*Wÿâ‡ºŠ¥êpPD£T jÁN*È@âˆQuváoÅ] SÆñG¥T”Ù1sígÙ2MŒÞy`ó$ªTI’Ì–kŒœ ¾°H—­\ õ3œ X`¡Â¥`£!U&Ñà üqªæZ R 2¤…+•¨‹!“8ÓN;ØüøÐ”LŠCo¬@@¶ 0¢œ„Kè‚Wj‚O‹©áT‚Ñ…%ײ¥˜êÇc(Ê€ ÌHðÈ›!æh¢?Jɤ¡?üA „0à ¡™c’ñjà B«¢ë¼ÚLJ:M´“!;Q4i%¶XáCˆ`ˆ*Dáë‚bpÁÿÅ“ýT©e"ÙÔë§¾!sj‡7U*’­$ÄÅYèD¨ x%¤‘`Ñj2Ë. 1¬:ó¼“ΠdµUÅcú\A9B¦HŸYd?NèÀž`€ù '[¨xÅ2uiÓNz2T)“"`jv‰FÖ[dÅ(Dílµ•V)Í5‘";o¡…˜,¬Øu_‰,Ò–`¥j¹À' ‚IE¹ùŠ=ÎSá „ppÅ4›±î$ê"ñÇb¸ÔÝŒ5^W3;ã fy Wšœ€ê—T¤%n6Tˆð4ž9¶Ù¢soîXc¿"I\ DP&Ë5ONÈ¡ A!à 6¤ˆ¢Œ/, ÿÂ1ÂkõøÃ®uúºgŸ‰ñ d9 0Z*¤•6P¶ v°€ºI`Có@ð..ô¥$6ÃÎék°‡-&=Ãeñ’]µ¸\+Æí—@b‡aˆ†M6?[icÃC½¡C$ÅÐ‥š†8/Ë5¨dštIrÊa ã†hHb¦:•Lktâ‹g—lvó$ÉÕ[–ñÅ왤h¢±Àhȃ…V€½”)Ø¡¸°;¾ç>&0l9ëŒv6ttX ǘAæÇ0¤iCœQÿ‘QG#$!NÖõ’ì´ë‘ðƒVªƒ¢å-NK Æf1‹Â•P‡;„ËW4C’àì„<$bx“8.‡Edb1rD—$щS¤¢ñÖuBÐÝdˆU䢯¸Du©*‹/YbÍHBU…ÅD>T—ñtF8¶/gyZ5ÀÃmȃò¨ÆHT§’Àˆc!C÷99$ÔÈœ6R ˆ”  Ø 4¡G_ð"ßY†‰Ô8DBR”Ü‹‡zFWÑ‚Ç8Æh^à¿? Hˆ%Ãp†c, HÁuæD‘P‚h”ÃŒáÔ®[Hð9`ƒ΃t  :4  ƒ*ÿÐá˜p0cõcÓVbèÂ@úP:!Û‰Y¼­Ñ˜ŒF$8Ù3Ô  è„*è0%ÝpÀ$qP²Œ FýzÇÁb%qêŠÌwO,¶ÚJeb('W ƒ•Þèœæ£ :¹†bàQø¡ˆ †1 g”3ˆ•ÁSJx¡§ä•1£Äã(¬Èv 4#ÓÈ_ÿ `Z(à °=²è‚ XÃ$¸¹‚(4È ’aÞm%p•I ZL‚ •Šî" 1`¼.) €Â38 :Ù‚Ïø˜†ôàÍ FI˜¡ŒÊXFÿ+ÌIu:ú&ÊžÙIZ '`À O;Ajʱ6Á kD)TÑ7T ? Áý¡„.@ ´lƒlÐ…´`šMà·è•8Ô @ÐÂ,Ë>(C‚ð‚. aPýC: ‡2B¹Èp‰û>¡ZM'H &Ö€k@]*ÓÅ"Öðƒdä´@|ƒtãW¯ñÇ"F{^÷©¯³´p[²Ž(ô½À„?˜p†÷)rÀ²….Øaˆ]¤_h€L`Œ faCh€à›‘H:þø?ư“)@ÖÈØ[ @$ºPÙMè G\à€ ÿ™ÄÖÀÆ<ÞfBTã†0`¥é…xƒÒô¢È*Ò/ìp Ç"ª…øÐ ACΜqÀ”K8…l°Ä¸È!‚þ¸GeÀПká2Šôc‹è…-2Œb¸Ì.Êø¥ËÂÓŠä'ºHÀ(Ø; ÙѦBÝUô£¯ø…†é$g¬^„_WóH &ePö—;µ´0‘ǯE_ÐÌt‚‹`H@ÑšT*´bŒø+QݘÐU0D XÀV(˶*®v^Ɉ‘01ºèò#%ËFèŒÁ‰‰àÐñ‡*šðƒø#×´ÿ:šÑŒœ¾äwmúµ׏µ6d-aúltq—Ðñ*ÂhÀÒIz™p¶+Ò‰&âgF 2”.pÁÑ0o¯Y’ÃLiš1òyÉ=¨Àq†Ôw¢`ˆ&àÛÌ…Ï^î€lL.P$"4 ÁÈP 1´!@¬ºr\&®QS 9YäÒóŸSÛ¸x†~2 #é7a·À~¿$  ´ô´„Èa(C2ñtRÊI%\l×›úí%$3¹à‘Kèv—œ]Í÷hÚ‰Exš_ylj*‚p‚m¶‹@]c‹”¥Òc¢Xf¿Ãå½i PÅtÿ_Ïãdî-¹<Ð_²( <Þ_¯à„.r1,@“^*©–E_å+m$ƒ: g‰é(JDꔄ!p€¡cŒ9'ȸI6|=ƒþèý6ˆlæÒÜ¡Dvõ\šÀX5Ùœ6 žIï»=/Љ x*X„纾—`¿—p?ã“ Ý`é ˆ»¢@YÐ>îK$L$vìUq†È«-Ñ–Dà€þc d… |¿¹°N˜€| ÚH€\x4øƒ 9X1mÃ2Pcwè$5b!ë +ë5ž8àœ:H(€UЀ†ÿ%Á,»ÀgÈÀ °…^0BÄc‰Zð *8±&D—x‚ 8¼L)HÉè$Ú;$:¤†?Z€,ePZH†8†ð8ˆbTø&4¾^B–Phµ?l ;ÄÛ8 HNHE›ÁphA(„@‚À%aЄ•H§Í(@D‚ ‹²¬Ôñ‡hHjX€`¦+Àhõh °@KµúÈ•á„QÈÆâ“EŒXÅ#¬Yh€T¸õ`O0[†èƒ~Ø7~#ØfÈ È¥˜~LÁ†xÁI h¨<À ~êPxD \ð³~PÿQ˜xCo G§K „ ƒ9$Ç‹0Gp¬ˆ ÀŽ[ŒkTà9)Ù³úº;§«ˆ×pœ¸0(¨.hmPÆhЩ6ñ£@ºˆQ0‘±ˆƒ4hH­YX…àÁ–è…a‰)8}áÄMñ }){à  [HK8GŠèþs‰ ‚!ä>À”š”‰6ÀBÈ‚è‚éé„b øˆ€˜ ÇÎÚŽG$ ^›LEðØ I(•”2ŒÐ…_H€xsºßX„æû<(h…~¹‡ p©0I—`n¤CŒðD˜t ]à»Ã;û£ ÕÀ}:ÿ¿Àd(p€ ð*XØð†ˆ]+H§ä˜Ìúƒ/HSë—/€TôL‹Ø3*°‡ °‡gp´‹À…^M¥Q3pÈ Øl -˜Í?ÄT3:Œ¸7((±<Éii€„PdÛQƒ†¸š`ˆ]ðX@‹…;ŸÊœ“bd @؇×@6ec¯ÐXìLð4²"1dh€VPK`Å–`1£M–@…Ê:ø<Ý4¬Þ ŠZø%T¿‹¸:`¯ Á€.˜,HŠ "OÚ³™%°ˆ\0€ è¯LFƒCÜ a‰Ò%c–_h·lˆùüЗÐl°Yà ±$‹Ii€ÿýÓÑ—à€=¨3†ø†˜•kó"—‚D—z+Iõ„R@«…VH*‡t×X-=5µ,e (1Ý4PùÒR<¹PØè9mˆ8„G¤‘€¨Ì°2É Š/†´l‰\8OK Y@*ÀD5q(5YØR© A#° 0„#ì Ø™ ¨Ô›hÄT†p”h„tÓ 4–„9]Àƒ1H[{Ìbú˜êÔ‰ŠÓ cH¶}E[„`X„ €6ZA/ðÊgmæ<„¸7€)e} [x†fEÂTˆE+% ku 7ÀE@€c`“‰‚“Tu ÿò1"¼KvtT:IÀܧl£SPÀ8P€$ØÄ~ýW—ˆÇ¥‹Z  xGñ¼À»†%€X¡Øqqø…šÑgø©ä¨oàšhÈ©]èéƒ(#ÉŠ@6YøÒZ`€7³ƒ3eXˆ®‘†%pëO„àYŸZbÚ›  ÉÛ¹£µR¥¬ÌœŠw‰DZ€x‘/˜@¬¥|yYY“…`x=H}ó‡~h> ;ΰ…nXO-8¼l ŸÝ°›PŒÀŠ  ©[:Y TêŠâŠhð…ƒ?ÈC`‡Ö€ ­åZÅÏçk„†hÿì…XØ_XKhºÍÅ(Ï…(q…J2ò"`‹&u¢@Ê¡ 2‰]Ð×ù“õpÜ †­õOèÚ÷kÂýhÿøC¡ãÏäm ž…X·mÊT¢´¨˜[ʶê&íÝ©8†K¼ç€&µ†o4¹b¹-…hñ‡hVMEžË”®]„\Øžx”CùHó½ˆùý܄ޖ Šñ‡ (¿)X‚› R¤“?€4ˆŽ‘ #7±Œ†h0©Ø‰8£x…e…|@Wöò—E2œH…ßM ¸Þ¬Ñ ˜ßˆ…¨ô1á> XØ…:x ÈÀÊôcÙÚ|ÙhƒÿàpˬîËáí‹Ær‰``ˆ·`‚ùÓ+}R @Þß@s(»‹°KL*&‹îœuêÓE’`'˜1õ )À†«%É&‹ì-­I’0àA¥Ìš7¡ˆˆc xÕ‰EÍ…b˜þP£sÍ–ð /)±âBUF~ÛÄ·]à…Ô«N@À†ûHTŠèÈØ?hÄât`P­h¡‹Åˆð‹5 ‰Èb8e˜›‹ÈHhÕ£q TØU„h{0‡û°>8ÓC†‹å…ˆÅ û­Nz+¶º…hH†fX€FØ™”#Ð1¾iá7nB€ð3˜³RFÿ¸}Äú6¡9cˆ0 ˆaÔ2ׇbh€X­-h`‡† 4… ]6ÕSÕ⻽r† NÐüà?ãã„Bî‚&ð‚ È)J”!À(lvjõ‡¢ôiäØjÃ\iŽy½\h(ð±Z¸‡W|>¸€Ñ áœ`ÛÏ·£â¬‹s†dHò€x%ÁTh€%ÔO˜€ z{´\ð]‹p:*Él€@#€ç -²".–¨›s Î!`?Ùk-(‡öy½E@ÞI±‡FHkáÙ 8’ࣲߋ0*²A3È«iT…LÀìA„á 5ÿ{ð±¤`ó †[ÎٸєBކȀÈ*i‚è p»9á¤h‘ À“‚*-8‚Ó4ÐdöʈÒ>íxFdXmwQ0؆Ф†pÀð9ðW­Ý0SƒPÛ~6UhŒxˆ"Xƒ†ØË40° ¦Ì2!¨ƒeØ…]ØŠ[†ï?¸ràÊ(õ P›©·F(ÑÄ.í @mÎøƒ˜ƒ4 †^¼·®(¸^AP0^/ÃàP >¾º+ˆcù…»x ×àèLȯýnȪŒ ±k%€¬Âì¦.ð€XP/x@)àAV>ãÿ9Ô{HV…绉b¹u,9Æ@10Ä 9,FœJûº¢Ê=†˜¸ è…ð³hɶTð‰Gi#ÉO‚VàØ0Ƀʈrg Z›S©rPƒ 8¨þ’îó脨'yˆ_¨‘ ëV# œ S Pq8wÅ9ï–è®=ȃàòd^ˆ¸Š¢ôˆм€ld­6ã‹ðêb°‡QP³R¤uhЀtcˆ 󇸆gˆe×:­û{Šb°;~™à0rv]Tâ˜(hq\·$P€BÐ_°€ùÎŽ]Þt'‹(׊ȅ`0ÓƒÀ¿ÿø…2Ñfi€ 0”¹€ ªÐ~+5†8®Â;:@=~v#é…u¿‡tÖȤKö{àÕ—(¨9 s–èæœ'Po8¸a8Ò âcgŒóÔ Ods\%¡”]Ôbh²hƒ *g#‰ÇÔ|ú¨•ot’“e˜ŽI©÷>Ç6ÐÐ6تk¾5ÖÞeì>vœ˜†‰üh”„˜¹# >[÷(aŒb •à `!é?#ñ7‹÷Tg…`P2Z9/Xƒ@xég@‡d†° ‰j6&qá˜) \†#x6›o„Q ׂأ•"±NÐè«>Ÿ ’ÿ\€Q)jh.-P„~@D ã*ýÐQk€Õ…g؇L1¶®~=Ð\-8GÛ³ãžäÔpƒ èõcÐ XžSñ#Ù]Ã/A —þ*ЮæGûI²Y±Êe¯ŸÀ„ 2l(àÏŠ0ˆ £ÅìVœŒqnaÌèÇ_œ†"r¼5ò$J üÙJéò%LU’ĬéOœ¿ED P€ªV 4ˆÐ¦È‡ . «í"­%§úûˆôªKU_üáÂê5e‡à¾6ì•`ÂH †*, å(YJ?ÓF-#­’!;†Œ{Õ¤HÀüNØS&ChºÿbÅUÏÞJ”@E¼"Zð-a¥—¨i¢æ'cÉeË¢ù)-pa—«2œÂ©¥×^©ý©ª’-  L=EI¦‹1J\¿*Çì)•å\˜Éþñ‡„€EÄœbôzêÓ³Z5í5­…1±Fp;Vp´ÌÞ¨~jɲ øÂE©: *4ùA©³ H´DõÝj/Mµ ƒ/YušISÅK7‚*™h ÆÄJM¹dfœ-}ÈŠ-ºPѪÐÏ(¯pâ'ˆò•Z×Wò4$UI018d‚) aÞÌ0Ä ðÇHd€…¾$އµ‚ ~m}ˆK0©ˆàÿ¢Oq%J° TP€1€?W$$Œh$i„`vB¤KÞi·PFþì² 1Ǹ£b %”“ {çÔ 4"A#­œ JÓ‹š^¶—~õ$@GP¡‹4þÕÀ$)!P 8´0 /΄—P  åiÓž|ËÝ^-CM5Ç”F%¸èÏ ²HPŽ.V.ÔKd.*ÊS-Aº<“À<Ñç©. ±‚K1ÙúõGmt"BGìÁJvˆRþxãÏ4þ ㌮ aôI¿Öl‘(•– j¥}f]„·øá‹6C”à”’@qD=Ñ÷J.Ö¾tj?Z ò .jžØÿ.¹," Pý4L¨ë ˈmØ@†M´!@)‚¬ÑÇ µÀ Œ DÀþ8ã2 ¨P^|6Œà GiCƒõ‡Voä"N0Üãâ ,©1½\P¦a‡UÚ€90áÒ‹N<õtDá²sfª3¾³€ ÚQúSÂ7„ÇËBW£÷ùHû Å·4£Ä!ü¡… -À ,ÂI/Åì÷¬ö”*×àL0÷K¶pRxªäýb1†#nªmMÑX M3T°C sðP‡Á dà®^‰.1è‹.è%ÃÆ!+`H7¬H“Kò! pÏ|ô’ÿ ©ÈwªZÑ-N¤Ë%¦H^ZzÒ&Dg6zl-’¬õ¹Š© F(ô+òIБ°ð,badst€ŒoHú5‚ßn“[žwýv|Ë­îÛ>ôÅP„/غ¼îy÷©ÝvÆ3½ó]Q ßúþ÷<©¼à !ùþ,ZÛÒ@ÿýH° Áƒ*\Ȱ¡Ã‡#JœH±¢Ã8ãĵ«#Â[o‰´H²¤É“(Š\)¤@qhi¤ESã2jÉŽyð°àž&+: ˜4!ÆÆX)]ÊÊX7n1Öˆ Š@“9vz˜æÌB4f·hÊ„)“W³cLj©å%¶¦Œ)ãÊ«0ìXZ"ãh«°%  p€ÓÈ+Vì4—7Aþœ¢J€`Û –Öm[ 7¨¶ `¥E2X1i)cfÂÄÊ×tc˾ˆ÷–Æ1ô)bK©-]Á$ˆ S#>ƒ+Wª‹Ï…•ELÀ¢÷òë×mÙêÆP)ª‚·ŒÿP²@X2g4_«·[öì÷u׋d&óQUSt$Á~x0 ²TÖÐg µŒ‚ÍR¶<#A• ÀÀ"¹ð—' 0PË7ÚÍX@ Ô F Æ$“ [mµ§|4"$Ömà—u"–ËX Åôè0 Ȳa?Hð\P©J-"\`@…F²ÒM }LBTÁ 3X`[j2Á‹ò¹§’›5®$Sx ÙU”ƒY²‚Ì(QÖrA0}Œ†QXËÏhVè£JáRŽAxX gZÔ&œ(­×[jV£<3Dpv „ðK0ÜÿSY+,‰£¬ü!”¢L@/ãz膉ÊR ®LýÒÀ(ýp ƒìb¶ä̲Í&z *A€‚Á+T*‚‹l‚ tð‡eÞv1C3ðŠeצïÍ"š¸©H.¸üÇÀ ÎŽ‚J0Ó&Ö  ðÑ v¦“¢BvPÔ3I15¬¶‚ðA¤¹$жÒÑHÀðéRÆ â€‚¨R• 1Ãh™M4,4’Eøæ6Å/&+§ 0¯Œ²á HP2+ã˜"ì 2”DÌ.-D€A J!$X€^7”Љ Àqò/ hû¬Î\KÒž|2SÒü’€’HÿMÜ süp L¹¤3E= 08ûAŠLÛSG.ÀŒ± j £&.ìàתŒ«Æ=rhäÏ.²pb¸ü²È“H§r,S ¢¢…ÄJ~ à?, Œ2éÉ‘š~D’×.ø Îݹœ®»¶A¼0†mc}ÊæK!½†3`¡iA f°nµL2 Àªt`Ï/¸m¡-¸¯-.X³YhÁf ø @Q)â )X2˜ót׆Pá7p,hAM4Rÿ{ÕHg ñ,pó‡>,Á'ëäì¹-{ll—|HEþD‘ ôB;½H@#yÌ>Äs3ŽøŽ#ÿ€1`)¨4ÛBÍjÒhglÉ0„á‹cÌ@ž[J!Š ”A?ØáÄBuX%(#‚KN>†´ |”)¸h€;j  @ PE&l¹äp[*Òà b£Ãp†3`ĘæìŸñqé@>a,`M€öp ßäÂa ¨Ì 𠙪d¥+Y¡‹EL …™*€˜¨‡ªÁ¢Æ}æ%5ai)\;õÖºø!€€tc„Å*²žB SÏcÿªâ]ŒT.+¹=–@i F3^#ÂEsˆ-¥æhk$ 8aµ{Íå£zñ1ÌG% !q…¬`]d\®0³°qð‡ôŠ+L?ÙÖåþs%Ñ p¢É!€Fà€kƒŒê2ômÃntÑô¤[èÞÇ…„)"Yn¡KæÀ8ðK¥Jñ;d£HJ:¡­N´a%prÀhRNÁ“‘rLã“$÷Æ,)\eR°Ì4upA vy¥÷“ÙÃñŒkÌä’(™Áïéd“§Lå*[ùÊX&ˆõ"BÔl!³ðg–ÇÜd9—­¶á…šµÑ.ÌAÿ HøC)@ œ€¤îA ¼A›DÇì]ï[Œ»`¹>xFd¦ÑLÆÂ¦hXÀŒP X`Ä9_¸Pi˜*|A° ` X`ÍÈ P8Kæ¥À³ ôЂ$M1*m¢Çá°Ä7A8&$‘‰LL!Z¹ØïÉ€ó4ÁÊ¢ Án¡ˆ ƒ|aŒA@@ ÂP ¸ÈèÀ{Ú³ë—Q#À¦ Cåôëp§,ìqTÅØ‚‹ ¤³Np‚+BHE'µzQ 0` Bœ@ŒapxæÞ¼Î„^N•;!hVLòµ¸Æ=JZ”µ˜~å»YéÿKÀ—Ó‹EHô«’« Ú Š6\€GQŠ1 °.± ÚÆÒ"ADʉ¾Ñ@}¶êO‚çÝ.FË ¼"É8ƒÂ h R{ÄH@ "n"ˆŽÍŒ<¥5G£+èpc úhŤ=;ß*‡†$ƒ©C,JDÒ….ŠQ…t"tDZÛÉ:öØq¨æ%:Ðaä`V@ ¶0O#/ž Ûu|M¹nÐ… ^€Ù¹MŒvta£!híìÐ FqöaôˆJ_¾ªGIuãv‚ш{PE:ÅèM.øÐˆ¨ót€B£”m ìá nh}ÿ'PÜøb·ø™ù9—0ßkéŠk·ø0l‰@ ئò ïVÔJ:Ð àG`x2~Ð 0;¢P‘#P@|Z·  @ 0>$ ah ‘8ì¦lîvS…Y00 œt Žæèñ;´ z/¢`Û mYÂ6ÚÒ°:P… ít4VÂ/(H;õ0’Ã? x#F×h·é¶nò÷(¹rÖE._™2‚­q&»à Ñ0_}D@Ø N·?¢(­02Dxœð Z- `X7C¸à ©°‚˜Å?þcd¥7‚IS´ Ú`VÿPt 2€Ò ¤CÉ´LåW Õ€ˆ„³`ÛCÎ@)paà]•! €à€PˆÅ,TqÆDUü“!(c¢u Ñ0y8ðvÒB;zs(—4Á  ¬€ ðª Àœ°E‘â0P)H 6 Bf¡8]&BŠ€X¥"s`*EdÔÀt  KÓ÷ •qð+èto%+]Ø!%uR.À·F…¶dS¶?ãW—?U开 {C Ú’dÀ5Ðm@˜ 2°'=ÂÈQôƒxtÀapbu °Q0t%`pÿ0Ú Õ° >é‹×¤k#˜v 9JÛ´„~ô#U’ © ŽgOP 6±¨†¢Pª Ø Oôøä ¸öešB‚ QzE™#_Œ£wÿEÐpó$[¿%œ`PùA2(Ac ŽÀ—Ž´[œde£§&«“`Ù Zè–T¥ ÷ 4ЧsÀзÈP_`Ób"556^3³Íà Ô° –`e¢ÅO%TD¾°.$eg’ Ï4¹ ™ÈD%à Éao¸À 7TOªð •%U©[`qÀ ÄÐ p °+3=° —~½xqnµ@ÿ™ Y€W¼±¸àr²pýP B¨0¸òÏ8d[ÊyQ%ˆ:ìØ3à â¤wcà)@v¥ZzÕZ‹ç|4É”°Ü` Òð˜%m à‚Ä çÜ#zi—O&”ú§å ªõ>°±—%¹à_˜õ Ç è0\Îô¡^1  ™¢W6fÑ Þp¤”• ù’pŒu¤Ô¥‰ ÐbÒÃ0 EöYneÔš%*¤ïu¢@ddqà Y: q×5pH€“šª¢L[`)°“Yz3çSF¦G&¦ð¨AÊ^q#ûŠ­)¨ŒÿÚ¨Žú¨êî©”J#"T“Z©šzt«9aé!qÞF  ¤€H ¤Àb G öAfù1#Ä#aº©$Q`‹Ö`Ñ Ó9]à@( nᙬ 1}#H xà.É0 Ô#,µc5Á­èÅ«‰æk„#¼€)À×¹.«2:à¬Ø! ¸p^W)€b.2 ©ÁAô!B´P%Psp !„kŒ&® –c½v 9A  Ctw_ðX`}uÆ€+s¡–0àÐ_ 2°p10—Vz–Éÿ0 7r=:;« +åŠ8Ò@HPoX•‡?ÛP˜ DH 1° F¢ 1à^ò P,$AèAàºO=[1ˆ#¥á aôýÀU °HCyÓàNI£0Û1š%¶Ð X ’à!&5$PÄ ÀÃc2ö§;ó”ZDŸ…г#‰QÍÒ ­PQ½p™éÙr`F›:ÄA%ÐÑ­¹a ¦©@Dq`ø±iËñø;­ wÉ ¶P Y2!õyŸ'pº‰”z[p²€p2cpVf ¤@ YÀbÍÐ_Zq‹Ú¨'ÿ´q92ÙP´=¢ ÀŸBB$¬ÃN—Õ*·¹Q»ŒÙ"šp?`¬áò"à}“"/ y@ ÍÀ ü:–oòºS–qm#ŠÃ8'ó ™¨(ì›ÅiŸZ™4]¹¸`„t•šH8 ‹õð¡Q“MÀ"¾ &ì'D8¶k7òk¹ñ¶[(Í( ° 盩;ªÀЫĹüÁ@]29Êt u  Ç Â€~Ò„dh÷½tágR›ª€ÃæÛ#P% Brb|n3‰Ü4º‡‘Á .¤*°ŠËÃWÌÀ6VM$Ô -`ú v²  ºŠÆA2Æ~ÄÿÒ²5À$vлj¬%Ds˜ 5Ñ3—3W]HGZòA8aá ê $@$/°U¤ o“l3d:Q'Ê›f$ȇ+àú&|¾÷(ð%y#baà‘­|b©«“ÎÀ _áµ9f¢ŒKšzŒðÖù' @>Ø:'Gt0³£ @² Ã17–i$·Ü!¹¼ÖÂHÑqGÀ Œ¡,·#˜ #pØ`‰(CFÀËUks0¶É~wˆíW<‘ &Él’5éLY·Æ ÌbE²æ RKÉ$eð ú‡ñÌ!ÆbÄ»t¨ÿŸ3IKã™B [`×Zj,6¼XÍ ñ)þd‚¥ä»õ,‘VÌ£Q!Ì—®Lr€€pÓ"p'#TÏÓS Lµœ%¸€ 0­W¤Q^áa¸ZIíà°_oT1ÒGU0¦ ÌëÏ8,Ð bbÚ4?#‚ Tù(b(U´¶  5ÉLa ! ÑJŠ 8#p ž¢³g'&˜×F?Ïù3 ïIØS£ P—ã 7C Õ@hÅ=À »P/ð‚Ã}„‰"„ú ?¿€ ÕÕÍÃ'p¶ÀRQ |¹5…nÿA‚Fm‰Ã®lO”ó—#Êf\-aq†`ìðPFÒ ß(X§Œç|é3Å’ÅÐ̨?8»hˆ(ºÄcu@tX [À#ØBJÂX0‚ªÐB–И2Ø1Ðî,zÔÜD¥I0žÄB”¬E G‚:„!+dÜ·‡ÏÄ{p€`³žÿíàÈ>é±ÏðR|f 5”¡Nò’j[ÓÇ$ôCeØFz¤Q„2b P(ò „$#žjÛ§ôÅ mÌ Hƒ6xQÌ©œC §™Œj,à ÈJfb çü6c Gè‚°‚ÍäÁmî®”Œj´ ;%XA:!A  ÄhF77QïÉðCŒÌÞ0ˆ‘ŒôO@ð àè¤H±E7ð2˜R ¡c4ã5h“þ ¨!×lžv`^À“•"R'Ì•èÕc Å ôP šÙL¶zÒnÄÀÿ¾À€0Šš©BsXpìL„ð†>EHhB%"0ƒ —ß$™_Mf¦OZ¤ ‚Íá€=pà±»ˆ|PÛ„HB jØÃ5â ¬¢¢PÅKp‰´ ÉFq—I×–¬—¹Œƒ"\tÀLHo[†‹rH>ÈÄŽp€óœTF(ƒ `Õ@àÃЫ7A–]h]hqÃþð;Ø¡Ç9,`w™·[½XD ¢ IH€5F4+ |@~÷%«ò@´T†2XûË9ŠJ†Ù /R`ô¡‡!èð—" œÀ…‡ýf \ª ÿRE+±ˆn̤ÃF6ïÔàæV¶ [¨@ ®´;gXÄ—°ËäŒì‡Ýx˜Bô"^Da˜p&N$Ì0¿€žÒ Wö[Àa‡5HB<+ÀFP)£¾xŒî_ûu‘Gx K€•-Èñ‹\à?ªèG#Ú¡çc9A#€AèÝžá ¤5„ê:ÃÅäÍuÅ,LI[ÚY˜Öt6P-›WøÙf¦‚Vc•‹bô*!ª Ã(ÖÞü"b°Î9Ø!Ñ-Yc Æ0p§ Þ c¼àݤ˜Ñ¥þ ˜Ízw‘ULAåM0ì!‹¿ÔB0Å@Åÿª"ðgÄ*}®ÐlnË ¸¶Cå„§Í#$è¥a ãh¸“4ŒíHo‹d:ßÙàw˼E{ j'µ`@1•‹…‹N£xÅmvk‹`Øc~Áм"ƒ,Àa –«õ {¶Ôi,·Û^Í\ÇIšÆÅf ËÍ;ÔB*\ÅE1.P¤2éÑ…ξ.œsÀ :A:òlVvCÍÆTtøbÝÿ%‹È´¸=.ñ‘ëhKËOš‹QÌ|ÁˆM/P¡lUÈBÁÈEaøm Ðîu9(À ãÚ$ÀÄqœW‰. 6} ˜‰ÈׯüØpùÆfÿ^ó«é"èëmp€Ñ‹ ‚1Dj°€ *ÛÄFˆ0a³4aŠ˜Á½´A J†?¼}Eq<¯ó6| ;ðOj ]˜£ˆRÅ v I¬!ÚÞ}MºÑ‹pƒÚŠ 8„4†]Ы é ì?“ë‚…Üû‚}3/dˆ¼°l°``€¿ ús¸<‹¸è…*ø‚ãøƒø›†,‰º‰À¿B35˱"@ÞÊ@É£<óúÀÌ ÷`ñ<¤ hx‚ø‚ &0Hˆ†²ÁÅ9‹¨€‚X,ˆ²ÝòÁ°{ Á¬hµI–Y ÿ+²ª•¨ 1<“!3‰t€€©ª-jË0Ð-¿!C‡8 ä-!$=‡ó96”;PA…‚Hƒh =ë°Ã±]"†І,Hê©B¢(¸‘c›‘Bt?DDCžè€#à{…¿è‡ àƒÎkD[ÐPk„}jIœ ˆƒhP·h0:¨X†Y¡«ËÄ«´³ž]‚­† Chà:-(ƒ˜€ N  ‡-èÀ dÅ`€CÌÈÑó °EXó–hë€åsÒ)¸ +Àhƒ6`4Hƒf˜†ÕéµÄãŸÃÂhT g ¬4ªÈ‚,øÿèÃûê€ ð=xEˆ‘š@† XU(ÉÝJDžO@BchÆð(´“º>û¬è„ˆ€BX:@: ÐÌ+ ƒÐ¢±¾’·+$“•¨F`3¨ËADAd\ðšLˆ~HlðÀ¸€à¼ƒ l@G>K¤ÀH™[,ÿ ”ÚËEh† R“(8€¯D # 7ðÜÈ‚dà…hðµ.ùžeïª5 Å—Œ \˜8? †xW ‚A  œƒYxBQ¸T]ˆ ·Ì͸¼Y—Q´#eZ`NO€¾«1†Ø „§«Àî;„ììÁ¤°èˆHX––ø0€E(I¨@û…ØÈE*7›4q@µ\€:9~¸€ÈO›À†ºlÉòÌIÄ ËZp)µbÐÞ<2[(0°°º¯ç1 Ø…aÐ#rj@+J \³>H‡8pø7 Ó‚ Œþƒ‹Ã@·»Ç†hƒÿã1R‚†>¸?8óê´ ¡x#PI6ÄÅ„@Ó"Rhh¸’H¡ ˜ŒH¢Ô8?☉}˜I™£ƒTÎ2%qx†ENÌ©‹ƒ‚ `Ð9¶6 €¡>èÞ Çº0Ñ X„olD›à0PƒFÀ„ (ƒ: ©³D49VÑ€Ô,e³IeNÐ%‡ØÐ §øK†°*7`¦ðJˆ6h/ ƒ+p A†#½°Ã h€tÅUš0°/Xè>¤ ‰Ô5›œ4Ó\xÍ:é<ÁQþ (è€Ô¤ˆ€j`†0à)Bê˜Ò¯ÿòá.(U8×ÎÚ­_ǰ’°„WƒWšØ†|JÕ¨8}‹1Ù×eõ×M]Q§ˆÍ ‚ãLUöøƒè‚(%˜à8ÈhtxfØ…:À€Nnp<¿ùX¨(ËüäKYX>Yx…üØTØH2¦1‡hٗ٫kƱàWfÛ, xÁ)¤¨€e8Øê&e 9XpØX0¬UË à„™ÈOHº¨Ñ¸ ]àõÙ†hÙî3(™=š=¿},sÙ†ÚGX¶Iþ¹ˆ‡ºJIÈ€àA¡ÝØà Ü ZdÄ™È ` ÿá4Ø¥à쇅å €—™ÖúÜ5cp°Ú«‘UÁ1]ÔYg„oP+úƒR„("H½ôÀÓ4…l³XñͳK”ÄÏA9 NH¶ã­‹˜ƒåeÞ*% ·m¼¯#]cÚ1@]Ñà_F¨<·êJ(饉Ã;h„F ?:h<ë´‰ƒM;)Å\È…]LNöÈßX€]¦þ‰õHZ Ð4NûºÜÝš€J\T’ˆ†³"mЄ˜ƒ¶"AÈ€¸È…<í‘Hü( ²EN›yâ"•>œëË?pÀ\öHÞý³ ½úß T¿†™ÿHƒè˜ÃëÈÁ¢:mІøGnUL¨¨Í‡TMè¹më[X¸0@“Üné5m0öŒ’ãaÒP‹–`³_àã­‚¼ºÚ ¸^2 *¥ÌÄ‹(Xˆ†ˆÅ K€`H€FxŠp8pت]IXW~2✠O8dÁyäH–d’èP*꘽­ƒ.Ì@XçÜ­õ«[(€HÚËLÌL“‡2‰ëò$Q:¸‚/U¸‡TGBcǦH;[ÅeOðË]€<€dÖi^‰]Ò8ØðÃØÝ€wU ö`P3hèø¢•ÀaS†•ð…P&x…F°Åÿ~æ­Üài˼TÍv~g]¡1á—8@`bð3ÐȱZ…˜86Ü%’Ÿò.P‡]ÐZ¸"zN°0¨¤!9g˜P$¤R˜;”ÅTPغå'w†g" Œ¸ t cðB˜C€š‰ÍûÞ¿ùçÆx©úy ÝQ†º…GúÎÚ™£4™$1 §¼2X… €€Õ¢F ]X„pÛšLH¡€y$`X€/À¬*ÎQS¬`Ý¥ƒVÀyñ²ö[’󒵯RÌDÄÒ8¦…)½P „/øø{¸Õ¢Æ…`h€ ¸‡'Lj˜|eaÿ~“¸)àÞ­--0ýÈÅb˜€:I»µ“ å L…\È ·{ŠŸz=À˜iðm0Ö˜`„‚Ø }* 08H=((hø…;¸>»äƒ^˜Ü¸¨_úÒ¤.¤€æÀ—pº…ŽÁ¡×Y‰h0ƒ0ÐFÀЀJ@)¸§ ¹àUŽúcÍ~>€œyŠÒ)hïdª™ö…e0è € p’?娃¨oxoUˆïh²…hc®o¶ŠžÜqÈh3aÁQ…N@·‚<ð І`ôm“ÃïžBº&Ð븰›O›YˆZõ¥SHÿ$Ð58Ž„hXjHÝ‹¨ó‚e"$ð#ÀP°!é§J/¤ gqi…rAÑô0†\°Üýï?Èð‚ ˆ}éåÄ9V<šÀûL˜}Œ;9ٱͅéÚDÎËám€@èâ«ÚˆŽað€H+xQ (ƒÎ±Ýk(n(-Ȭ•dˆ ] °±l2µËcÊúo Ø˜ƒèñê¹9Ü.j¦Âó¡Q›M÷×à3ûî1Eõˆó–#/nóW§.˜ƒ€Ä&Ùå€è« 8(hømØTë……„ T𹥸€ö„PJ=ÈRÈÿmðá£YHÓ¨(o*¡”X ÐÕ‹Ê]®„…L%²ÝB Œæ÷¬€«eê„?òÃÇú†P’´ktO qXn¿8ÉFÞd$XPé:†dðˆO¦ç2ó奎ï×Ðå`8‚÷ͼ‚m™A`ôžÏŠVÈdMX;OV®IYÈT¯vÖ `ø|®1ð†cH«dÀ¶u@y^ú_¢ä~UäÁ…g8v.>Þ¥‰ohåÃVЂ’â€ç4ÁÃø…WWn€¿§‰¸ßÑ‘<€&*j¸é³=j‰¡•¨ä)Àûý]™8¼Ô…7òà€‚ŽÝëX†F€ˆ~€¬ T |Yÿ˜ˆ¢CRQúæ» }ueå{pûÛš?hýÞ*á 5ž4þbØ«¨[‰ ˆˆ"!ì*þã~áûk˜A°CYNMYlˆÉÃþƒÐ~èŠN⎘ïýçEþ­BźˆR‚î09Ãê „ 2dà‚U&R¬x!˜-…øPI¬èñ#È ´ˆsËO?*W²léò%̘,oѬ¹òVX¨ú àA{1iôèÄRø8ê“I€ª)v–äÊ(4¨­\ž$tèˆTÀ(Œ_yýjV<)âÐ:yR&ܸrýÔ´©§Nž>M]í{0WѳgUAápP°¦'ÿœ`Иի¶Ì¡‚XÖìÅÈ¥9º,äºhcûv.êÔwëÚ¤™sÌ€?St$ñÛðg³ª$èRhK(’ŽJT!§Ox>›Y!çR¹?þA"fÎ:·¢9£Õ–¦êðªÁ×Ì©h@>E4Û^Ht:Òݹ®â –*¢Šmdb%|ª 8°±1šDC“wß±6¡xÞäZ9ÁrJˆR†Ò´nÿ%B*žôžo¿1Êb&†8 Ù!`AàC´ Œ/¾Ð…’„žf!’3 ,&\d`6"B%ÊXQ4ÒŠµÈ’ÿJ0}é"A?[~t‚jÄr%+ÒØñR¡‰ix“ ŸËø¹Úiu%‰¤‘­¹FŒ7)<Ê ü¡Ê$}Ø–ïm© ¨pb §¸ô’õsA¿°ˆKþ©ù‘*Ð!8"FA'HH €?âA3Í$ÃK‘4E¨ ƒ{“’(Á² ðÔñ¤£LâC½àÂbBœ–›*ýÈÅOBÙòK#Õ‚ {¨ªºêDàA šüQÑm €g ¾ÃK†â”á-´¤„,]Å^¡ ƒ—°ËðB6Ä,ÀÆLôÇ 4ò 'CmkVc©0ŸPºøQ„ÿÊBê²K^ÐpÌ40lÀ AL¤c;ÀàM3ÓX ÒštR† ;íp¡65MðÀÂx`F‡²¨‘À}PµBæqbV?`-¶}zA?µ€¤Ê+1§:s» Tà 3)hCB8|²N´P6Ô0a°Q³ö´Ó¢t0K&%³ÀM ÅרmOn‹‰Š©Zz¤Š¤ö"™.Åt_r‹B7Z[,³KyÂ0â&~$ã½·dįĖ0”‹!@F°g‹ê,&‚,iš+ &÷†'ÅpÕ\Hª´®ª¯Ï¬ —ø‹wT+®¸ïí+iäK4%ã–²žP½hßÿ9—ß…K1ìÁéqˑ٪þ°‚(`Ë€Ó ¸¾‡¹¯}£…\2$ @ÀrØFÚ‚ ]è ÷€J?a€ë±"¨ˆ÷ã¹­ >‚vPmÜBbê{ØWA ¶E.ò£Aå§<,ýe£è‡*jÑèÆßÜrÓ‰6àN DÐ ˜€iT;X…8ÄA±o.VÃÁñ´°D&"Ľh@ŒÆG8f9Ð`l1X†¹»4¶qŽ^ñ Ç9Ò1K'„Ý 4@=°â3ŠKPÁÑ€8Ú-˜ÁŒ€©‘‘|$,QÉI†°ÿ=½øäÌ‚‰´ÁÀ ‡04dØ•¼aD#}ŠôN+]ÙÈX®±xC e%’‹áÐí%x€0€€6ü¡œé„î4  XÊPåúà²8—DšöT‰ÕœGÔÒ6½àæÌþLc$¸AJ€%° <@ ažÐTã=3ú´“XM’¸?³™%€²KˆÆ0œñÎf, #˜%”© k‘½)ãN2 oHòp€.D$ÒmÂN ¼ Æ0RÉŒ‚±Rš Ã)TÅS^hãsXA'þ€‰*l W¤ã?év lw?¬§ŸÕµªfÑÿàE "À DkTâ†PmIRé 8€MËøÇ½2­Àc+bã’H“Dƒ¥ ð† žD€‰ aO(ÀW¯BÔÿtB4ax€vÁ–Å.í&(ã<§ÖIJ6.51/N™½- Æ)€?Ðá@†²×¯èè:8PBˆÁ‹fBóp¥Ekk£›¤‡-M•ˆËÐ<Ð @>ûÃn($‚8 @«,à¢mÍE <J·¾ kØk™!^8ƒÉÐF \`…úì²°•Z(L£a%øD, d c¹N ¢}£{áBån;H³ …¢ P…¾*Hbt: À'\ÆLøhKõ/xq¡ c8Ãå±â Ö–C*•à A¶0Üëg *0ƒdÜŽ•ª¼qJ äiú˜š[ŽZSY ü—)àA 0‡< |B%—wüåÃvùžs"â„ jP£3 %ÄTÓÀžr¾sozçBË$`‰ÄK–S›èIWÇ0i¥3ýã-?2žšþ´<¥Ùé8ƒºÔ¦>5ªS­êU³ºÕ®~µª!ùþ,Š[æÑ@ÿýH° Áƒ*\Ȱ¡Ã‡#JœH±¢Å‹oݨQ`œ1bÔx‹-‘(SªlH«dË[̘™Œ'™mÓ̈P©ID­‰¢# ªhâ%‰aÃ☜JSjË™¼šiKÃâà¡$Í©hIª%Ip£ÁµpÝ®œK—aÕª~HFƒÚì±Næ ø© Ó„'ÈŒ±Z̸±ãÇ»Qè¤>ÀÌy10j.ˆRõgE€-7´³‰î¥Æ»ucËy–VX2üÁäÈ .;g«³ñŶìÕªê°ãУ/ gP$ ÆËj¹³Ã‹ÿOø:Θ¦dK=°€Ÿ`[ñƸ°É Âd[¹#Á=@‰0Ê+½Hǘ.H p•E(!P'h€+!@ ”±ÁLÐÏ,µ 9-LyßmÒCàI¶U0€*S€Ãž‚å2Ê„ªôÇãc¶è²ˆ,IM¨ä„µÈÒ0ºÜ7$g¸ä"CHPb[¸à ,°ÜER$‘ÄWG2¦DM0ܨž”S.æ#BÆÙØ3@¸¤€ I͇J.vòÈà"Ô’dem¼Æ2qD³ÀŒh¢‰<˜Vjé2-„fšÅØÖš-ÅÄŒ2Y¨ðƒ üT&€ÿ Ëq½ü¸ge"H@.<þ’ŠžK’œõÒ@Ë©Â@œ«K1©ˆrë´ª¡…ˆ(Ö™1l®.µÃ Ì8cj™pËmu©ZçÞv^ªÔRJ& ØÑ .ÄBöL*H °¨À'8ùt¶,ÒÁ¢"ÈQN7¶,aH&KHZR€„ÓïÁt0-s"4²È¬…ÚiK9kˆ`0„»0Ÿ ãZhÉ‹^Ž3f¬,ýP ¨“KάLH~ $(]X 1ÇDL¶Å¬qFÉ‹Qáñ­rtãØ/Ptœ²¯<3´Æè |*ľD ¼qIó»Táÿvó/DK§‹­JþÇDó]A‘˜àøº»H‹0Ǥ°Å­þ„ô²Yg:¢´*tL0òbGÒs-4 ɬüÒò[ø­sÃ⌹ðN×Ì0ƒä,çý1à\Ïy»Ò‡Ã ¸¨ YPIq4³À1*\€†@5)'„rýß3¨\ðõòÓþÀ.t‡·ÌAïQËp× #(0@†AjE0¼jáÐ'°¥`@# A3î&XäÅ-ßQ׺4â b4ÃV°Âà ^8Cq`Àåˆtà ãÐ8!¾Îà" EÀ8¡ àcØE4ö&¿‰À…&Ôƒ… ÿ^® IÐÖܶ-,§` HÀù"Ô $àQÚ4Š`àt¢Q#PÜ0<àààÒR ì°@§JÅ€ÊTq ÈÊ8:á~øsE„¯hbÀ i¡`ph:,0Œ»UÍ*iá¡$Ùr4ÅÅfÆ[cd€ßL°Oœ’€† ÜCQ£[ƒ²ØB SÅ D : !#¤ à`3ñ™2Éb®å-{³Yz¸¸ãØ"°Ý.+ó(àB1ºH€’¢ŠØ#A…Ò¥Ë%ݰ[Œ.r9Í ýzX,n!A?8ðÁ›ËÞ^"ÿ•’€é<éÑdÉzÁ€v*éýT#ø¡ ~ëXË1¨„îñŠ|8Fö(ç­T¼@lð€6A cšô˜1©m`:ô+ø‰ WÅf:† ¥ðGV˜B'T„j1tÚ‚•heV€‡ãsC–¨ÙÑ|"»ˆÕx³Û8ð¤'ÕX]Ò"—ÜÂnÉX€fŠjµbŽ ¨B ƒžJ§VJêGX(Í£8qÀ ‘ã·± `bsuÖP ’'Ýw+ D¿  Ð'€— æs$ȶ€ (~447ì³C÷õ\F3q0ƃ<%Ãq†…8Ïc&&T± Ú  -Дæ*…qÙ ^¬@ª&!#gâ qEƒ Gó5ýЯS â[,h¼s_¶×‹åñ”U?` ¶@jÒ¡ƒ¥ Pu €q ebO~ AVfÝñ@ÁP~S’M_¸Ksÿ# Ú`—7ñã± Y•~À œ8 `fPM@Ap 0¢ ÁÀgŽA‡K¢ ýÐxG È25À&€ê°;ˆæa&˜xn&Ðw—%¥ ðO`6Tðm  ÀƒpmúmÄUòkÍÖNªðE7Ä?Y`ÌàHŠF‰#q·.¸¡} àà‚@1'Ð ð ÛG|Цc|á6G vKÒà?Q ˜ð9› PÀ«£GЊà ކOòD HFPƒ5=ÉD<6ÈÌäÅP‘ÀQ £`Ø;@uÿà‘¢'‡7|åT壓üÑ&·NHHïOx[•d’S†’”¨†º–q\ƒS¾% °q¿ö5uD~‘ üÀ¡G@EÅN6Ð)`±a+æŽ*qR·¡èÑB >Vé[@t¸À M‡ýÀ¬H¶à Iå[AÂ6pŠ! v$åd‡M0Y  ¼k¶O–ä”´'Õ;41 Þ@P PDý€‘Ȱq‰¹ST|UX¾s€U~·À‰n Ë š#]ÊYË  Âà–Õ ™…¸°Uð{Ó À ¸€ ²…³ÿ”PG¹<ƒÕ›³9:ÓM.P ú…he𯴇ÊYk·¶Å¹e2¼u•6T 6Pi¥0 ÀbH[ÐY@FÉ`*3áZt—27°@ˆ^&Hð«”N(»U^U/Pà>Ö;õ9¡´æ¥Â Ô CæzUÕ¸PûÂú1Õb"N 9@ ¼€d좢F wÍI=YÅ 7÷sàÞ@ »Ðyñ ­¡Gš¥Ì™¢Qö@Zú¥õåX-&I`Z¦fz¦hJ[ù™b4riZc]ê¥z¨† ´aU/ŒqOz8Où¦±±O¦ŸbÀ=ƒÖ5ÿ0-°./8.r¥óiO`ÒOŽæC™*¨·×h½CœÈ™ 9@…°£¨w“pbyŒÑ €“Ò²f§ájÕ »c-€Ç R/%ø` €`­VÓ5ò׎£Yq›Ê©ñâä p?d I(0 ¢T(à tP Z6 ¡ð @/'ðeÇÑ 1à“m•¤àÓIð‚ô­RFOraÃÀ\.°D.rà(`–?ù}0¥ðUÀBСq" º eàYÒ ðV@Ç9-q¥‘¦’®R ð m-¤ úàSÿ|ÒàÄrX~ð€ . ‡TÔ° ²8)[ýªkE` E’ U°0ª€/ ðÆa ÆV "@8{|`…-$;©'A Cà ¼ómÕ@ ÛA œ²´·çn7ò:°#—÷ ZÐlÛZ >ÉÀ‹ÀWÁ“0r®ƒµÒž ¸''À4 @pà]F"Z‚ €]0ÝI“ÚrkŸ4ñnê·c Ï ‚@±…ž`u €JÝä Ît‚ÑôI©€ éœ`RžÔBYÀW€OÀ°f%ÌàAÌšOàѬ:ƒq`#éÁk\à éùIö6$@ÿe¹w €,»DG­ ['Æ€  ÚÙC0 @ Ä3hI¡•GJ#×ë&T™ƒ2ß[(æp»…|ûfKŠø!p§ yÐÚP ,e ÀØ»kbÛ#,0‡À ü1}»»ü¹ð€ -¿õy)„¥_Ú"4a#A0 †ÀpMv‹AÂâctÓ2‰$ ËJRÄâS$0XK nù<€FH€P=0E–ÁèÖC!ñv â¯ë ð)aP w™€‘àpo#L!÷ |v '¼$k@WT Ð=cŠ ÒÿF¶¢ ›@|¤åÀy¸€ 2€4®bC/àÚ0d\Õ¦&!§pšLUá ꀕkg¥¬k0u|£¯¢…ãM¶yF|+›'¶G€Ë±…à  ¼{R ¢Ð%”±á``%’Z…0íÅ;Ô”r[”tcab»P…øÕò{À×°¤FmÖvËÑ$ ¹p¥ £ÀS…@¿À—ª<Å»r ›Ð !¼IÏ0E…Ó0­¨Â-ôJU…^ Š@ ¾À®¨õw&xc38ÂLQ È ý•M' ÷ð}ÓT€ Z0HRkÐâZ +ÿ€}‚\2£4"@”+<‡Q•s° Ta}ºoeñ­ ýÉ#âÀ†|;‡Þða;ðŠ#’Ì`5X䀱ÜGÐrg³­S](¤f,S@1U\Ôvƒ¢gHajQºÇÔÇñ,P€m{7 ÿ#%ÏÔät¾P h¸–{qàØ— kÀyY(‹}ÉÏâ r¯ ÈÒa oc‹µQI).S!b„:ø7KÐ:j±{•¸8d"4A EH ®€„éjivõ|›½$ ‹0 ë,Í–+t¸°´Ã| ð ßÿù öpÄ,7Eí–‘š¤4Ó75xƒ¸ÝÈÇÓt8‰3kä¡l< Âà šp s`gP ùˆõ Öžµ­ØàœáH“ƒÙÝ:cBÙNa8†zM½ÄdåAÛëý&Éß»ÔÛnׇ~0 &>Ãä@ôRÑ]``…»:³˜È-„ ÅlÌq•RÞ>‰qjÍ”ˆÃß±RÅF >°(z@!ߊ“d”%^³ ËðÛ˜ \­Ð ª 1îŠ?­£UyUá@¾×HzL° 3Ð]öÐx2€ ãÀ#KN@A@4Ͱ×ö)k4Q?PyM ÿÄ s=¯ˆKÝ8æy4;Ž>Dí Õ@ ñuÍÑ¿yAâ.¢;½8 „]0q#KË¢¸yþ1@4@ê ‘í¦Q&gÅ`À8ÐeSe‡ y@Ç@P×hT =$vÒC IžU¯¹ è€hÑ‹áØ¬ašX¥¶A ) ^°?’×ý'‚—“# Pr‹1´ $†·î<û 1pY¢ + ^à#@ÊPðO ø= àp¡"° PûÙ_Ó@aÒ¾[³#£ð$Òž Å ¾Ž\8AàQªÅ€@(î’zŸBNA а=žÿER@ÚÑA6²ÚݳoœP¼“ † ¯ à<´À4J ðFгs˜»­ ­ w8~ÕM2I£Tàxàj9@$à–3©+ï”öÉv/_ƒé±Œ‘ |à ®Ò ¿³š5xt0ò<éw¹Âº€ ³ãàp¿àB  ófñD’ô •èív)Y<,¹‘”þtOé|UuýGC–PäÐÞº¥ àóbE‰–y ÐO~°»Ð)ŽÞÎê.˜4ùû— ä³G!“ `¾U – -' –€xåÇ ŠÝÈ{ÒÓ§?ÞXªoâ—?ûg¢{N‹ÿw•Öä¦ –pÀÌÞýF¹P Ž>ΖПu€FÖ¬­&’t.2¡’ú‹½ XÐàA„ Öê`+ˆ%âÊÅ§Ñ µD¤âGåÕ¨~µŽL(¢.‰¬l¡RE’ä$bæ8IA-Ù0^¼üܺµ“§Ÿ<…%Zt(P¤I•&5Ú4ŽOX°Æ ø3%›­”Yµ¦èÒkB{¸¸p`¿ ž8aݺ¨ÃW¸EHè•R”–Uå=„¨9Š´#6Œ'­8‰ƒ"mÚØñÑ¥‘™:öË'-Z·âÀªð‰*I†t$ÙZZb׸_O¼bË5U¿³a%Úâ30µÿ×€ëÃŽ¡Rƒ °qåG–,$СӜ3Q ¥Oï)Ù:õ¡˜i k&lÁ‚:—¬è$ Ó…2º™ŽˆúvAPÁ5‘JƒQ"Öš€2¢-~l{o$ðHA hð¦Jh"€9¡¤™šÉ ; §³nCƒÊð0¢˜a&j|‰Fñ‚8«ti ¢\$I•ZZI%˜úþÃ¥˜ ô‹‹?ÿ ¢MÆ"¢zJ(眻ðC(›êpÊ¥¢|ŒÄ6»è`Ê`@¤L¦p$ø*¨Ÿ~ZÅ`"Š,ÈÙ ò½?@ ”R¨¦šeüxÊC+¥ÿŒJF²2X⊖eÜÆ.[‰S+\øHå‚T Ò®Þ²3!þr²¶¸:iƒ€ I$b,ˆæ¹æ~Št1ÉŠêUQ_öºÇ8„eK4eoY[€¹àT’Jé ƒ ÈAcO‚‚X¡+\Є„›pJìÐa9Ä®\tÓU׺c3ÝtÙÒš}Ú¾øÁƒdØb·6‚ @&3†qNe0‹ã9ƒiY—Øêvøá‡Û@’ºà×YzëÍãÌD,xRíp}2Xˆû©d”Sf4Žehh¡‡VhC€R¾¸cƒ=Œ±Ø–`æ=Õ_1è‚‘]’áe\ Ƶa“!Sùi¨£æP»Ã†ñÿÅ—>)‚NÐ"†¶’75UÚX!€0ÀòfzZRj¸ã–{]_Ÿ:ØÐ͆Á 4Pñ„/äàƒVÒ™€$šÀ ‹ºSZ(¼#é¹+·¼äCÖn\žL0šj4Y¦hã‚Tñ÷\!¥™c’QZs§/·ýö¹mnÜŽM°@à“I&£ õ)Ü“W^n`“Fº§]ŠD³¤"±~y쳿¼yuÏÕþ{ðÍU”Jèš®=|ôÓŒû1Tÿ}øã—~úËeº~üó×þÑoøäð¬ûƒŒ¤ð&©Ã,-:ÅSŒbl'~ï|;™^ä–± ^¬)шFNœsÿ‹,Eg)‰qÛÛ*”¨ì jŒ ÍM.ÃÐF p0€€8zHà Žq°¶jBtT®„’ÂH DR²_±Zx»¢ÐÎ@G2`ç% àZÍú ˆ?”M&C ¾xq+Íeiv˜‰F2„q J¤sØÂ¼±|lˆl Ÿx9Ú‰Kq(Ú1 ù€0€-A‚b [DR1…Š:A€@`DΑqµ™]Tà  ò‡mñ I» EÁÒÈDšÏ‰Œt–f°Äà¤dŸ&€ Ù†i8áˆ)d‚ +x\á _àÄ`¼ð%"€‡&ÿ˜4>X„ŠP…/`äXÜ h »4Ž r¿š%-ŸÆÒBDè1pŒ:|‚”3; †°Y F€Â0Ò”àið%*°ƒñ N€8ˆcìÁR ƒTA -¸gì^ ÏÉT‡î” …˜ƒí¢ÎÐ"T$|@(P•@Sb ]` øCD&n(7\Äct#ÅÌþІ&laÄðE¤ä‰¥ …ð…,…ÒÃfXàŠlˆ€|éÑId gðé΄…)ìå˜(C8ŠYW‰„Ã}PfŸ €<Ѐ$pÆ-LÏÉ‘µÿr{lt6£‰1\¢hƒ*D¡5 Cg€5-8a ˆÂ£0D„@ZÓaø‚2‡Ü Ý5nE.ÉZÎ¥›qgò„¶¦9,!‹–œ QøEO—[ZdÈ€£iƒð0m¼C` n圔˜Gd ¥EpR†Š]—Å Tq‚ ˆ /’¯ÅŒa 0­aªèP‡hm‚åMÙya‘^ôÒøfDr‚5 û¬-$P ½v@ÁÈ…uûË,]p"Žb2„+'…bpÊ@v‹‚Åa*˜BZ#çvT"˜À"Ö"P[¤BýÿÀ"ᣄ*'6.‚ñŠ ¨¶/€±3F ^C)X†0ºº“cî0:€*¬Â_V#<š„GEЈ^©²Xa ]ü"£ˆn ð *G$F2Lƒ ÁvИíð†À‹O|åc0d§¢Š/Œ†=¹@ŘB‡|c¥Qr?¡•^@áyaÀ"¦ [[ã> (º@Ĭ³1Q€É0ÜÀG{Þvµà4O&1;~³@ŸÑ€úf„ àÄ~ñ ThA$÷àC•1]  ©ðD‰Ùc‹\ܺ·QÅ$ð·ia®1ÿÜ UøI…PB3x‘0ònè~Ø&`sNjÒÔµ˜À[TÑÄ;u­ð3³žádý0døuDpŒ [Mü‚ÑfÅÀFú€m•àpha†±ÀâÅòÇŸ©Àc½@±õ"Š’ïlêƒnÉÇíQŒE [$vÂ/t‹¿Â ¨€Zr[.ðbW¸DàÉTª”upRq¨ÀÓ»}Ý\h!žÍ:`aT˜ÊNKf|áLZ"`Á"`¤*x DÌ“îÇúí½ïnÎFÆ—›‹Q ^…‡-'.Âo0@|hy¢!bŒaØ@evÿÀF#šËX©dEßæ¿Ÿ>õQÅêûû‹ 87²§½‰mo—_Á ¸*^†:XàHîïfp˜¶¨W=ëIûŒè{E÷x…õ¯ÑÙè- Ұ XP£X²Ÿô9¾‹:À[>ƒh>÷,sx=’è‡hUTø…§º¿¬8Nð„ÔR$À€P0j€‡ Z‡]X‡ ZÁ‚§ËÀ4H»õS@½p>ù‚?éSˆ È…A{Hy„ø…Çë¯\0€T„±Ž˜¨Øbƒ-x…r7:a0AF)¾ÛA C©8¨ƒ9@€?(:Èà€T=ÿOè/t‰FÈ…Ñ·`€VØ‹ø•þ²p€/h—hƒJ€„p‚­)Þ+*…›Xߢú‰%Yºõy'é@ m˜:À Wk€gà0‹qìµ\ˆ$ØŠC’hdx<] Ø€7† d–­»€YüвA1X$Ðø€g0Ø€ ‘Ðà‚¨†]8£¶áœuR)/4¯áJ Xà/{x@V„7Âa^°Á„ˆ2 ;ÂÒ€¾Lˆ5k`_ ب…Qh€`•‰Ø¸'[<:h„U¨¬è,ƒpr1ïê‚8ÎÛ£ 5¸ Æ !f@ÿuHPBØšƒ¸3_+Àƒ Ä3~lÇøkÅT´˜\€9Y8 hDc…Šè¸]|Q°„(hȹØ2‚0I€?Hœ9ƒiøÈƺ›¬ur©½Û XP.H$`$5ì†$`‡ €æK ëIÜ : U·_ Á¬pG9\IŸŠ$`H!F›¹¸8ËH‡3˜GÒ’[؆Ѐ™é„³áfØ‘'"ªXJÈXœ=€è  dØŠ\8˜Å/(Np‘\ð„8= ’`H…xï#À@þâ„TxG„¸€^`GxÑ…¸I¸X²/È0û“¯l¨‚ÿ:À=PRІ[ ï鞣PÞÙ Eh³ÔÑl¸(öÀ…ûÂ~h„Th„Q°É`ˆ?†h„0‚¿êC̓„Ú”/NxI¸8([„™ÔÀ”Ôú‚à0Ê!¨€ø Ð#ŸÇx¥Í˜Š?ÈÉ>¨³~jp`––Äñ}´MV}ÛÁûê€*X°eš¹6 ýy”¯`P¼‘ø¸#8;þD1¢D¸„8È ö‘%Ç š}º>¨ i¸Ã<4 àR4 \ð„ð„“ü)[è…WpµÍ ÔI„* .H’/*pÑ„Ø U°³ÓÐÿ다`°-ˆ ˜a¨4J”.$ • ¿+=‰ØçÒ²àƒ#ƒ-\ø…w3 ¯øƒ `n\8›hOk†fÀ1Ór¼®2‘TøøÇ.œùÔ@khÉ`eŽ9ð…jÚ!™…‰¢ÍáS`€ôÓŠnx†x½³„‚bøÍ¬ˆÅTÎÔøƒˆ-´€4hcx¸VB à’58N5S„¶Ð`Ð=Œ¨…/€b`S‹á€`H€,k±GkU:)¦Z5[‚%°Më…RéYh€øÂ¨_€‚δ˯@Ö1À8pg€VŤÈÔ>x-2ÅÖƒë°ÿ91†€‚~õ)]; ¼Òl™ƒ8à 2 퀘¢p0nÓk]cø °0‚_Ó…$¼ø¼ d…hX£ZÝ…Î €òø;(‡p`CÀêÔ•ìT ›µ7•À† h… k„êcÒ^(†T ¼Ý”S‘%YuJ …Wê™Íx¿«WÒJÂb¦F˘ãžMŒe˜¤@"jÐjÀ@Súƒ@¨‚rXRÚ‘°cÐNüp´X¹–Ë…^Õ2:HÚ“ˆ$LÕœ¯õ[y©XÕÆ0Ûó;#¼®‘ØSAÖGèÙ[¸ ˜žX†]pUA©+ LÔ™ ø€€—ÿ„Y|“` ‹o x—Õ×;YH…T`®¥—9Ý„M'ȬÆõ)ÛZE[+Ýëât¤d€žŒéݲo8RpP$’9ÜÒAp‰ùkO0±^À\‚è€#ˆ¯)µ‡é…[¨ÞëÅ^YµLì^ª˜ðU>ŽÛÕmJ¥˜JœXØj¸9ƒ™Á)rKˆ0\ƒ8{˜€ˆÒ¬è”˜ÅüZ„ùÔµ“êµgÀÞ°ÍÓ…'® µMÀ &J¹eÝ¥P_HÁ»žX†¤¡:à-š™2i`ÀŠ`²³¸€øÒ·b€}ë€FhݤÞ9Øÿæá–¸Ç !CÛª¸ ùb¿ ÞYÖ½Ÿ)Q! È H`X ¨…~h…Y”8¹Eù*‹ÈÜŸIã5f`RkŸYâ`X˜NÀår5 ;F`Õ=ßõAë°[?°؃f˜p…Ph‚ÎÒ«V*ƒ\°/¸ýPcjÛ£¤›’6F áÊä2 ¤mÃŒÁÒ¨QF߈?Hµæ0!Ø,…•{†N¶=+XHþ $hUßúÜ_¶ä¼câ¡Ø Fø„0¥N ›ƒ†µßSI „e0 ¼KeÒ£—JŒ€_2KØÏ—G†]m€ÕY”îI)ÿ]ñ…áy Ìò L؃d^–O.’^3°5¢ò«;žè døV&[á ‚a< *@0Ah1Y ·n^®qø{Yò%€Øæl'º‘Œ³Â f˜´, €öš"taE³ç¯ð‹€€ãX€i0é,I!&~,نбÝÍB€¨HP^@ è¬7€\@­h‰y«7Z~Ë@C×3ÕIœ-8¶3Ò‡Ñã B3ll¥8†,€ @€èÄ;K€Ú³\¬V ؈g €˜/#¤˜…2ePò-¾µ)C*xö“C@‡iÀƒE:Œâ”#ˆ{ ÜÿÌ~Ëì+ ~ЀÅ 8Xw=gºÙêÙ ÌH†c ø-h‚ ÐôÈ›å„ÓæòŒñý °„bÈqÐïö¨îšƒ.`Ic¬/“§hï Øn 0&Èh€†@7Y(6ÊS…qÈ…°ûÖE2}€7\¦—-íHŠD!Ý6+J Ьˆ.7X…ÌÔLÎĈ |…r i½X²QÀìÒØÐq:+HWŠ„­†H6B&PrPK‰¸†r˜:Àå (ñÉ”`ê–¨…ür‘°z¼a~óPø.RðjÀ;ÿsq†Y3IA bÎÒ?h[T»`gyêÔ-€* W `‚5>¹Í`Éþø€rP?x¡Òa[- XÇ*ノ#)N¸]„ÛPÀ€1°€é~H[Ýù“Y  ýL°„5Ð ˆÉ``S; B³ÜWcS"(€°ƒÈ=p‚)&Ê/¨l@k/] oÍY1ÛÄÝ~²%kÂŒ!<˜Ýj†)ÚáIqÄfÌT÷ B’ã>ð1[XG0•~È/½·\@orÕ…ÐATˆ¢"¬ÜžÖ:|ÂC…ý)èî"'ð'Isp—h&öÑUŸ‚ÿ\ý ö!³>ذå¢J·:’8)°ˆMh‰0†Ô”ÙA…Ú‰@k'_肸Y0eSf̆¯äÉø<&áÓ9~¼3,óÊçe9JB ¸e²q’_úÊ‹Vx~ÄMƒlЃ˜ÛÅ^ó›/¾éXuàäÒúk!<:€wÉ s8ú{I;øí„¶*ã(Q8 »h€©ç¸‚ !×õÑ­Çù"JYžÿúžæ(…±ëÌÆ·E@zz9\ÆG(rèwµ£ˆAËY°‡¨×û V…`¿—J7ü êz[Eü/惘݋–‡–8\H‡7Øtÿ+ξ\.q@ÔñŠ{ˆÑ¼ß{íû¿÷B»cn•a}nûå 60l  gˆ*€®Q@… ­+b 7¸T}ä¿Po€…Ú9PL|ãy¥ãë2E¸m³…s‡PÔv¸X,hW0 ²N¨àð!ĈE5Ðe•® %rìøð’6MÂÔçÊ”~V¦lÙr%̘2gÒ¬ÉÒeÊ8'oÅ5f€€)Ùl],jôb/—2½lÑ£º \Ñðž½`¹pÙ®¬L—vH0ð Æ±UiƒàE—D9Ž5‹vëfLœ8mòíëG/`Z´PöütèÑÄE“ÿªmñÄ…À¢µeÕ…~NÈuO¬ãŽ-¢Ýø76p¤x' Vœ¿7Ó®íÒïLÛ-uò„åsÀ¡I'È8´ÚÈö:P%âª\‰må 6áò±e)ÔeÏôRU+\ª@i0^Ë¢ÁÔí^7n™ï]Þ§÷âFg_j/ª.Å4¢™"¤ÌYÙb€,ý…'*½$¨KàI•¡„7ÞhC&vñ›JíÍ7_|yÙö— · Ö› Àa’@ÃéwrdO‚å‚ s›5R w¶ð£”Ž©¢Ê´áƒFaG)„  É$3LJ‚Åñÿâ‰e–¢‰µ‘fO)ldò…O r#RH& QüRT.ÅHÐA-Õ’ iÙ‡ž{>Ô ]Ò¨"Š( €@ <¤AC3Ó43L4"âÛlf–‰fªï‰™L‡l°€Á AlÖÛàÉJŽÖrÁ"Rf 0ö,dš*$ÊÊ¢:*Ìp ®èMþB,ÀÀ†7ÎР3ƒ‘[Û_ªªËjºe önO°ø’p6‰D G À•b¹8Û˜*ýÈb'Ù‚K. \€Gµ(k0£ÏBÂ&ÀÂÌ·øvË 7DãË.aª;òKìú5ò»)EÓL3 (1ÿÆb„*tH±È3=úøïRý0ŠÒdÊ/‹4Ò…9¼l³?D&ìJÑð² /í’¼u‰&óE²˜;¹xK4Ã4Cƒ8hðsÓ£¿jÝ#'”ðô“tGKC̳ŽÛn ,wé%׉{ÝWâ(ùÁ3¤"HN@ö˜µ½Ð´a6è‚’á‹1)ƒw;IӉܧ»öyí=5ñð$‘¿£àB¹Ð…Î Œ P˜ ††)4C`M4ª1 ^ŒévìÚ‹úJÆÁ!²Êƒ5ðZ1Â])È,láf& ]ØÂh]Gº¸"  D5à§TµÏLD<ãâ^Â>› ñ~"dbQˆõD§©¢ t@‚ …*Èià °…Œoï² ÑØ.E2²‘¸ic–GEcŽ BÈ+”`MúÈxvЃDÐK¼xQ؉F:²•­„$$9I9¶°ÿMˆ€,`%hô0oLÃäªà¸ÊuHÁ8’•®|&!)‰áM’’–|&aÐŒw)#^°SØÈ¤5g‘œÐ<'î(†%­!(¨&³*Ù ”`Âx׹”2‘Ñþü§×â.à¡ ¶:& r0‘–›„¶ðm c™%|ªÑúeL:±À€[mËF¨bql -$én@–AŒ ž/&û\#GsªSVÉÍ8Æ1<ÀÉV“èC¸Q€éȳu€|\à h£T¦Â)üvªÕ­ÆÇE‚!Wäü°‹c(á•pCœT!‰5D!qÿ¤Â5—„@V¢ )'‰'®òµ¯)ºéã`Á‹«ùÂÑàB šÐ†æÐAˆ!³–°¦t‚M¨´± g\U'4£gý*Z¿ÚæEθ…<à2=¼ Vù‚dŠŽt%°Â<@t(S%¡•ÉG+\€šé¢Á½‹/’ë‚K¼ 9A&Øæ–(à$ÆÔÆå"Þ˜s¸Þåèú¢±ŒÞ1Âa(*°hCÉØÅ0Ä…HЪò»öÕiíàw‹È‘-ðF:Ô! ÜÂ`-WOâ÷Ûû2x§£o˜Ñ"#2]2‰Dƒ3¼UÅÑ·7& í-"U “X«ï‹MA^c‰H¨rÅ%~±h¹VF#¸Æg”1îÒgãϘd]â8kÊã!Ç'Ó1‘“œã­ý˜ÆJ~ò™Œ› Bù»!ùþ,Š^æÎ@ÿýH° Áƒ ¼Åð–‡#JœH±¢Å‹3jœØ°£ÇãøñH+έ8(QŽŒ¶l×®h&"ܘdGš8sêĨ2¤È[´h}ŒÖl·<,0€øÃ”)‚,\y›F³[Ê”Ñ*ê-B¥m˜¨LVhÓ &§C)HÄØè2b†”Aó¢l8äο€+d˜÷V´hÉš%Ó6b1þœèá "ci3k¶• Xƒ)™J‰ò‘ÀˆæÓ¨S«fÅŒ Y™A€GmÚ–™ˆ,‘‚ƒ ·˜ÒäÉ]c¨ ªÔ;ÁÈ­žÎJÜ(U ~¡í• ‘±$ðÿÉE½|Z\¿M¸·\¬{÷mJŒðÐbDøÝiIâËšÞú‚’:|"+¶à*+fFÏ@ÅÐ’‰HázÔÙ–š S(ÅVˆ‡(¢ù‰Øʰd\§‡/…!Y¤¢BM/ÔÅÅè­€ ÓAÄØ-´R3îu«®êü°‹#õ`M @&Ñ)È`ÜnÑ:ÎÍ" 8hÁ¯ÈHF(ÍUºð•.HæD˜ 8c»ÐFº€7´áªDb@VX#_`@=Œ fÎhn‚ÚøZøÂ[³k֜ѫdX`)H6ªñ¿a|$†ÂC*“0Ìâ㤵.ޱŒg ¾ðÉÆ4αŽ9*A<¥$ÆAÙ±ëÊb Ï8†ÑÆ1–¬ £¦XìeÆUò2ŒiäpÁ‚@ \€˜‡Á^‹oÈhöï*¸f,ÿ¼X€FpˆìÖª  XÄ3JÈ irþÝW j€1°L+ 7(†&ièb1ô©špˆ,ÌJ¦{²â4Úð#`Š|.>0@°z¥\\ F$+°5G$\”CBnà‹a´õ{3¡H…=ýÜú %`T•úœ 9ˆ50ŸÅ«…­æQÛ kb>£Ð[Ÿ*¬Š Tõ´e…1öé°¨‚1»6ÄØ‘‚uíNÄVâUˆmv©±…g )£ßaÀKyŒëlOµ˜^L6kÍ kÄr₇.´€Õ€òš;ïÔÒIJþÿ)½\]#Y,œ^ÀÙŒú1^Œƒ QR-.°N$nָ腋.4¦Ô@ ¨F$n°ƒ 6u`Ä1FLhÈï!$1I`Q \10À©Ó‹Äb‹+êÅØ3Ó‡? à‘-$'‹(6–mºPàvZÊСݲ­yÂàz‘`î‚7zí 5ªA|™o5p380+Žhà pö¨âïÜ%IEw -"©Ðe;0<ƒ2K'TE.s-êý¸'e/ð¸Š_ÉrxKOÐ_ü~6× óQý" žK…(–#‚F„^5œ1¦,D ¡btû4¶àÄÿ^:š¾Q†”™1iÜL ÀBÓWª<ü‘«@8Š#c_b â×ÓÇ>T“ ¬sZv•a«ã: "6ñD¸ T 7|įÀ ¦p= âTJí£·puÒ-± ÃP ÔPa Uª n`UªAcÒÞ q£’!¨°99ž±ºE#¤ã=àó^7fÆAFî6¿°vÔqBC(Xç'‚òó; 1 Z8 v¢bqà  …À€‡öáÑiÒ 'ò“\â%<&ˆ[ ÷pŽP / ³r «Ð˜Pn°Š7@ ä ±F A ñ‹¶Z÷d(<ãjíÁ%¶7(rOÒ# Dwö@qœÆð zô+°3°± š ÄP šàdk¶yòi\¿Ì{¿‚¸-!œ&þ[*'ÐÒ[)¡B}kß'Ož#²Ð–2‚<`/€HðH L+Ÿ ¦ó¾°¿O¢€}ò'ÿÖÁ@#\ò½ƒË úÐ÷)GŒ%¯°G 6¿¾Nt¨nÉY ­ÿ0`ˆ¨A` °+T7PTBúfî;©ò¥’]£ Šp <$2²Pàú%¹0Ç¢#=²0|PÀ™1ÂJ)òÔ Å1¾xP—)t}`;¹(×Ð ÜPk°S $[P$b– ¨¹N7ÃÖ¾š¦ʰ„pð™0M± pR˜œî±Ä À ¬k°Ç}ÐÇ_²È.ª0 ÂSë{IÀr=ï x`·Á aú¾G¥|¬YÑ+¼C°ù±Y ° {0Œ˜ÀŸd%ň-Õ·ßJO£@MIY'0 g(Éü¡àªàì|%4Ø.£"=<Ëÿ|hp‚ íA:Âðc-éJ.É50ù'"° °SÒ”.[“9g*"0  cçDްw2â@0-Ð$`Ð4P p<óÒ3â8NSP€602P€ ŒF/Æ9eP»ÜS5Õ™:°t0Å"¤´`>a³l¬Ð¢Ÿb GIs-]ØOÓ¢ª 2ÐP ¨øxc:j @Ÿ—2@G»h4üpŸ2"Ó @Óêé Ð ”BEÈ:}Í5Aíšä#ر³v¸pËPôÖ ”¬ xµ¥Ô 0Ëð>,\è¾ ‚80È¿¬¨î|Oÿ¹P m½\P€Ü×R4¢2YE˜7=Ð>JÃC'¼=„MŠùKYÜk€îßž¼„ð®”ø1«ª€ U  ™ïL# Ø” 4‚+8× ý½>¤“ ®ˆZcÃ:Lø:ƒ}ǧÁr:¼³Xèò;](ÁS'˜ê Œà×èÅ ›GÍ8Þ â€Iº@!ÞA’qh„ñýáÔ©Û¯Iâ€26üj)"¨:òéT‘º¡iRö¡°ªÒ“ žp@+ì! RwÛS7rØá âz'ÅáÓE—Ö#ˆî­â½ƒ‡óócô5ç°p_Àê`[ÿ€3÷°S$Þ{ƒgÎ ×Ó÷Pž¹CÀäÉò  Àl#Q'Œ `-Ž n­¦çUnð¦3À }éâu o ¾ Ë­[À]@µÌp…à –°œ€ ím#ö04ákÜΞᲷB% ?YàŠ‚*©o¾ä0–½‚‚®8‰p%@pÓ3PQhv\ÔS%p0èïÌ€™ëG ¾à9Çj³’p°±+xõ‚GÎN*Ø1qØ—wö°EªÐ£ÐÚ©¡ |àÖóæíÇ¿êsZ¦œ¾¹íë Ú  i Í"ºÿÙ*-Š>©OQÛm(Ž-'pPÎOã£Kì^PóÆá°0 ÐAq$Pì°Ý‹B4Z$óà œpqÓÞȹU§äô…+ù—j ,XS'Šàu(0ÚŒ P=ý€L2Â%öð„™ vðHàëàX&~.Awr?EY¿ ÀËðXNçT§}}ÛªEù8Vß'!؃e„r"¥)À ŒùØæP @>ág–€Èþ’P “pePᑎáÝÔã •NC—Cx0'!ö|-Í “ÃÜΨpÅÌ1Üæ<‘¶À£Ðõ¸#sÍ ¸Àª-ó–ÿ@À…_ÈÜÜ<¯û$"•“¨TÁ-N¦Å¿ Éf¿åÁŸ£zÕÇ"| Ù³U¹4 ºÌ¡ºpBÀ  êcÕСÃ\‹RÉ2(ÀâEŒ/ÖJ`ë¡­E5Ž$‰ñ‚9c¼Å‰ãgÙ²H~dú¹UÓfÍ™9uîäÙ3çM 7ãÀ3àOŸ^.eÚ”Ó¨’Q¥JÈÕ U‡Zú52K—R¦¹ 4¥JU?:"¤®5Ùñ¡1ýØfT„€˜9Còx8¶€Xœ[~`µô“fЛ>/>ŒØñ-fC‹þ™ò lSÌK{1˜ÛYÕˬpõâ“J­ª© p ÍêW‡ÎskIyfÌ!ÿ¹™ÖvZQb‡ o~}íâçÏÇÉ•3Þ¹¼å-Z5iÁ"jtJ¶$™µ?Ü›­*{¸0ãÊŒ`?Uû½Z ¶w©ļEàü¹D„ ºð†a†¡%º¡K²À“ 1æ"”°1ÇüxîÀ‡ªÀ(àFší¶ë¾©”Ê% DÈŠ$Ô X*˜{HŒ*Z𠢡$ºÈC šÑ†šhŠ„în!L¹Ç&tR1&ƒ¢…¥d´Ia†¶`… þ¸&Ć8áLFjéà{I@-䊭ť€yÍŒ‚Xá’e„ᨙX2.JBƒzòÐÅ Eÿl˜´é1Ú@•2À†ƒ¦FŒí„F ˆÏ‹P[¤Î;áS…€xH¡gâ(NÐÃ{p¹™Q\›+´V%ãÀ%^h a22â¢I.xå—gÎÔèY B—‡pY¤TP'¥cÔ‡ÀÁd.@±€ÁAmÊU'[\÷]]““pB±o¥¬A£INabÄÛN—k³ÅH•6@°O€Iä“ôBµ+\Éa,ÈVÆÚe^ü8BzíýÃLÉÌL—°õæ aRà"ŒJ ‡,Hæg^¢Sãy²h¤¥•9^À?‚À\Vÿù!–]Æ3x8PZ”[ì)}U¤)\:m¶Cv¥]Ž¡$ ^c¿:¨"•u‰Bë΂áÈPB›wªQÃvÛvüqÈg•®WZŠä¥™Žñ&Ë&èÄË5b¦Û YØú£ð‰,.vÆgw7rÜs×'Óí•¥[Št†—j4ábŽHÓD€ŽÐšë¬ÙŒŽ%Û}{îq÷8Ê)“Æ‚ ð@Á%ŽÃ)…N 9µ íþ~ü×ý~qƱ—c_ÙN~MÊ_ 踣j0ϹÝøÀûí/W „`-¹ã\Pƒ´ º$dÿ?†P„#$a M˜ÁXŠ0< ]ˆ´ã0°&‚Z!OfÁ½¾P‡ìjœä€R6Aád(H¢`ÑÖ¶CzÐBïƒŸí¤´ ›Ðx5©Æ2×—TÃHQ¬!¼n…D*QŠRl"oRF4bˆÉ F †)à7 F2þ$ZÀp~`Ô  Èø»èÄ!ÞðÆ Ù ¡ Ì`ä”`AŒ´  •¸›J‰ˆ  Ã‡,$£Œf“œO2XD>B%ñB 5šIR¤á/@ð+¤ÁAJ:é+e0ï\À 1‡Î¥g¡3ŒQl”!¥€žJÿøeJÐkÅ«TކõSPw!Œchã¨åþ1€€?\›šqŒ]0ã‘…0RÀƒxNЀ¶‹Ö°ÂºØ@ìS1Ô ÑN7&DrÎ*œ„âOh2ÀhÐ YøÁ¼˜eˆ9¢‹€=Z ~ðƒD\P;È> ]º8Â&‘ž64¡˜Á¦ÁHfüÊl·ÚãF»Ç¸U¶ä@Ѱ€´qŒtâ¤+èô`ƒ\3ÆàÀVqLØ…mèD)1'@¨˜áÀ( …ILªu[p  ŒdX &¼•U!(ÕJÇÿÇ F œ°ÓcA62Ê”$èÀº€$&À‡^Xm¯Ú±E¸¡7d–¸L0ü4?–PDZ݃P¸ZÅ(¡ xHž ,äâ³K±Å3À€¬¨b oÈÅj­ÛcãP ƒEè9%¸Ã84‘‰ö>¸[xõ6xÔð…œ´–µC À>« @\À‹Á 'QT[$ cÊ;pö[o÷»œ‹#d:MüÖ20/•~HÁÎ°Ê ‹ü;hÁ_¦Zx’¿²‰)Ù®ûºÑ… ؈´Ó²ã:º˜»„†\°úScÈ`HÀºˆ˜ƒ4pÀˆ†aŽe(’%ú ð3 Œƒ i<Ü‹U(>{À’8Q@L„€´ Ä [ ‚…Áˆ¨¦¢Ž]XP„:€=aØïû>¥@­{ÁëˆAíÈ-•¸¹«‡÷ Nù…Â…g°QPÿ@8‚»£?]¸´²€@Ü,P<°”úƒºØà FHí«ª¬ ÔBÇ0MQ:à.Ì 2´C‹8 ˜?æ LKQ€`@1Ù+gƒ°DX¨&‚³Ð€Pƒ ƒ¾C€€ Єa †eHA  ñ3<Ę0Š>0?Gtõ¸(Àf[-}èTÄÄ~B`è2·ë àƒ8Ì Kƒ‚…#‘ … X…=XŠpÀ9ø‚ÌB ЃØ…á Fš!t£r á:Lƒ[­^€Š‘¨…ºK€n$“b…iìƒjd-]ø……¬ÐÁ°Œÿ…+1{Å|"@,:ऀ!(—aˆ¡ðÚ“¤a Æˆƒ4 ®cé9\øÈ\ÀµP$½¦†2|@R†T¸‡ôè‡ X„Eè<4™„Q0ÈI|ˆ¥s7Ø?h0xj0È9´Q5â¡Ûãj (8–NXži™DMùY°‡£Ã $‰Ђ†\-[ð©$U˜€xÊë’†l  ,¿S_ †âØ ;;¢¢Y¥Ã Áah@8` €’„)pp@À^øBiʆ,†F˜ÆQøËëJœ Ä‚rHŠ \ ÿc,¨‚)Ø$®'¼]H†]¨¡I/:Ž "gHg@‡CI©&LÈk„E8ȇÈeœ ð¼è‡ φX‚5˜Æ ÀMë:‚™’ :¨‚gЊ·H‚Ø€ Ð9JWAË Bù¦ehˆ‚g´F(hÃPÁRNØŽJK€) ­<X†8`$0™1(… ˆÕ“S’èÜ´hý‚ôȽ*èֽʮ†°d@±[‹?TcEÖªRPåXÉàº/¥ ˜ ¨CLàÕÿ\8ƒ.4€À7O剘Ց(Ørõ쉆fh†ƒºXvH­“WZ}†Ì ‚bØ;ƒØŠEè…kíØÒP¿¹(XBšCµ$e’ ŠGàº)XM¦ø…ÈTU`€Tàƒ}<>ˆ<‘ˆ ˆ€h K ˆØÊIé)Û+˜ÕzÝŽnX„8‰˜Z ƒ{#Ïx3¬• m†ñZVãBŸ†m7¦mŠ…ê…\=ˆ»¤žL:s€¶`ýYPp‚e s0?8'y †:àKh?Ì›ÀP•Yz›W™ÊTÀŠƒ8Âõº¼‘`È…bH:ˆ\Ù[_ñÛ²TÁÀÍÿf]ZÞÛc ÛõAK- 4ÄEQ<ér­\Z¨B+ôjІjÈWè‚€âRè4Ð"ª¦0]Tì€ÔÍ9N¸ ÔF`° ç ³è‡~8Bƒ¹ÝÍ#£! û]Å ^pÞ¾©ÝVH+³‡Õ½_‘íÚèø¾9¹¡È-_ †:˜ƒúp'IØòuˆµÍˆ{ðN ¹¨Y,à ]ð„‰ð¼ûÅßA-Týõ¡íßä³q¤¤m7•c2\µÔ(ríÚÄ ^ª³’G‰”?ÈAƒ ˜¸(8]:»7ÖP™»Ý» b%àÛ^µ„e&Á…5¥-ÜÿkÍ..ØG â:£Ÿòr0.Z,ah£ }KKú;(‚(hÑ‘`Ïñ¤´[(ñY4É_Þ!ß} 3þ4n7‹eŠGÜYö•²e“]¶Ž>¿_Và!n‰.’ ïsÌõduŽ„— ep•CxK³è€(´jöVK Ñ’(Ø<à[èÔÌŽ \A¡ŽÉÐ=^»J6gÀäæ˜3Á ‰ÿ)""?à…ežd tèª-pÕPS…L°;BÞg拱уiƒ!UœS"hýѺ܂E0 à†Æ}¼†6˜‚FV2WAbØKØàèè™!/pÓ5`40„V¨…ð\„,æS\àOàâ9AS ÅáL1NÄ')¢ßå:(HÌð5†îb$x ¨\X¸¡a¦ ® Xð…fH+ ¥6à˜i‚9€S7• ^X„F(áÔ0€ªe²Ò°Ò†›6 ¸‚BH"aIŽñæCi ¯E·~J(.9 ¨Èé¦È…F€0XRÒ‰Ìd‰Èÿ&ÕãÒªv(,ð$˜PP )0…%SßW€®²EòT« •ÖkúJH$¾±<2î]D1<Âê%ŠtÒØð‚ >°/å}îÂÙîŒmÉTh†Ÿ ö_w0£F©ù7p¸~#pL¡³ˆFØÏϲ`Ø»¬àHnìÏœëLïÐ,<(BÈiè*–\¢)ëÚ+èú¨¡Á±P,¨À+[¾åòB¡”P‡Ì‰±a$E ›)YRg€<> ö0‚^™`È[A–MoŒJS jV(Oéîñ`gØ£Èjqÿ RXEÁ˜`EÏ9• H€˜€Vx¹ èÕò,g©h pžëÝ‚ hªcè%ì†È¸ù$èƒ7à†ˆrý‚¼;€«ì õØ`K“<½€{ÈfS s8gP5õ j¢Usš!XX†:x® …=p¦ò\—ÃÓØrdàógу](`€6<·HºE@{<¡<˜²yøgBiX»ï0¦à`(ª¾Ë‘¿] hËÚµ˜€»‹  ³À„{û…—×2]¨ÿ‚@äŒ|³ n1W—OfA£Ý…ɘn@: <-ðÁU†Ó‡øTÐpý¹€ƒÏ8Q˜Ú¨ßNh€ ®ŠX„à×~P!€PÈ›zü‰!KÚ£çùT{ˆ{œ` «„¹\è7ð!Ĉ!^xf+!ÆŒ¹ \8! {œ2’$yÎS#ª&²x"ÁEŒ¶yli“e1V´Å‰ãgÙ²H~†ú¹eô¨Q¢J—2mêT)Ò¨Hãìz4àÏpIJr%‰ËÓ„{+;\`Pë&Úˆª:@–+fIcÏ$ÜóxâÂ"NºŒaÄÕ‹„+ÓN| —ÕÌš„'ÿªúÓ¨-7ZðT(Q©IŸrîÌT³Ô8°Æ ЧÈ᮪mͱx1 2@,µÌ\‹& ¢Ñ¨F9|Ͳߢqñ(n|`0àh±àØ.Z·ˆF ú¨ç🿃f&š4Ö%¸UwíÅàùMU©ÞêfOÔÀ~£ äj W.Ť¢’*ƒÁ'Q-vœ‘‹8gÓ!!Æc¤@ 5@µÔvC‘÷!RâAbh£]5E6ë±W’{Ú$.‡Ù¢O#ý¬ÔO#|ĸ0¹X˜¸0HSZ  z¸âÁ1Œhâˆ$J¹™ˆEMi”y&b•âŠ]¶ø£DªH0ÿˆŠ …¥J?²¤â‰.$™Ó˜aþvа"M™ØláB Ä3LO…‚å¡U*êˆVN¥%Š[uÉÞ—qBdìÙ’@o¾-BR=pZú*´ñÇZ8PÅ$¨FD@s 1 É cA4¹ÞB ¯·˜°]‡ŽB¹(±ˆjæá®ÚÑrÞ‰\NªZ¥£Š©‹r^X-ªrϧ½9êCA¼@xˆÑ†!€ z(±‰) cA²½öÊÌ-=•™TÅú‹,‰¼j'š W}L¦Ïrí¨˜’-ºüÂbjÉb¨>‚Û )x@Ì.q €b”ðI Ä3 ¯†zÿ”h>‘ø¯¿êk”À¢ÕÀ ˆ À—Âåò¸c '»uÚÒZgÔ#¸Ðu¼€ÌÐBÌ1Ú4sÌ1ÍÜ h2_9,ÍŠž¯hŒÀ`ôLP eQ4+œ f?$PLaÙHXÔ$#*¸ÌAÍ1¾ô4p¡.¯=eÚU®Ýr¡Í,0͇”@ÀJmøà@*fÄðbÊÒ@;Ø4€¸q…O û€@ 7À"ó¯Q=59y•Óüa¯FY@‚æ,0Cæ¶1&wÈ€BÂ$ýœ* aÀ+));FÀÐ{Ò}â‚78Îöv>AÕÔ°ÀS)<±òß×ÞD ÿñ‘,¤À‡no6ÙÖ(àÔEZ˜èVøÆ—U¬`¡Èƒ7ˆÑŒhàkW7Ö•ŒBúk„0‹ƒv¢á ^ ƒpC è Udb vHGBtq¨Ýe¹À…-lÑ (¸\àK80‘º? `ð5rÅ‹¢t0Xûú×ÚH8<ÊñË(‘ã ‰U 'ÁY&1 à"ª&°ˆêåpt‘*&!nt#&ÙP¢M:Q¾tA9X H,€õΊX<›…×(ñÀÂ^ @¤À]ÀO+H* П®èÂŽU@„|Óˆ‡*QÈaݸhN«Ö† Á£&-ªÀpö¥ÎL©fU›`¡Ö]$CsÿŒ‚l ÏÒEtJ˜?Àd<06p‡zst=ì¢:´,^$£Ä  xP‚œ*}86†Æ¼êjmÀà0å #ÔèP¿8ä;IJ¶µá9JQ: _C 0PÀ@€ªIh¡ ÙWÈÁ‡/¼&:$Ã, ¶œ‰3µ®}.tÅ£™ÇÁ6…ÕˆÆ ¶@͵Á @ÑX 4È-¶ @ Ì@ Ðâ§Ëê Ú¢+ßù¾64(¬.-œ+m T ü;*é Ìê‚åH>û+ä!˜ ¢A £Pœô½0†—Ú¨¼Wfã,xqÛh ®"ø‚É,*¦Š6Ì2´YXË¢f¸Æ6>畊züj·j `¸~ :%Ø‚`dð¢É(4ê±F„ãùݸÊãä¥f z åÃJpš.à~ÎÀYXW I+³Ù¬ö‹­²`± _„ìÉO+¯T»Ú6óÃüÎãàëÈ>šÐ -”°ü0XdºÑvéPÔêèISz)ƒŽ´A¸í²ò ¹J!.Ť2Ý  ËÅ_ÚrN0öÈRjµmìP 2¢5бÁ'ì›=öL6PˆPê },gñdº0Ê µ¨r‚(Ê(™-â\:u ›.ÅÁ‹6 x80ÿ,ÛSepSÐTý2fB¡Ks¶èò *²- 4 ÅÇgÞ•ÒÍðÀ ÁGЯ=*hs¸x’J¥Ör*À,>•.À—©æÆ]Ág´‹çÓ¡yô뛚 QåBlÔÕ«A4 H vôÁÕ 4ð áÑæRá=·—›t Þ 3£ïP$“YÅñkŸj3+¹Œ‚ûÆqÃ;9ýoh°¨QÝü°Œ9½ƒ)I2†á gÐà èD&Öˆq­T€Ðü$cŠ_ð!­8Su°Ó.ÀbG6ÊBhÄ‘ÑÁÂè͜Ԯúݯ\qƒ œæ‡YP ¿‚S4ÿ*à†ÉJkH@6ˆ0™¡5à˜éº‚A8\<Ž™Â^‚¡¶ªX1è€qG‡90#ÊȈ L@#ômd…6òÝ2vAŒcÉð F(Š $ “é…ýnHÔ€ „8Æ4HÀ ^Dƒ ;À €„ÈÁF`⟤‹`¼¢8g…€!!t‹T*ãþˆÂ7,>îãÏÑ€*L¡éC4h\ä¢FÊP+$Œ\t2Ш$0—U € À q ªø †(P¤ü(»vƒ¨å1ÄNxÑ”¨LånqB›¤P?²ü÷¦R©_@¡™q‚ ÿ6(•èb¥Â‘Yp¥À/ÖÖI Ü£l' Û8Q)‹…ZÓÃ]½6³õTã£!9‹i~§'¶Ð匰xD §°„yFȆ鴖=º)cô‚8ý8S?$Ȫ4`¢1OôŽ3 $ ¨yH@ÈÀ†‚Ñ@G4z•Ÿ[°G^PbÙŸ>AóËXL3ä:{`‰"h„lñÓ±^'(A„¬½ó®ùI ï#°±Ä-È‚ÞTP   ªøŽŠŒc>F¬7<,$°º£¹53ý‚§ªâˆÁU ÀAS=°o4mFl©±à:˜àU!s1‹Ph1 _ÿøB zÀCwPŠLˆPKÊ¡©d‚q¹ËR§ %(D®â 8([p „áÔ°!³È._ß™'·$˪T1„qŒ@À°mذ·á»\›+Œ  8Æ.ŠÕ¿øt÷¿˜^A¢ ú¨°F!JŒ¢1=`À ·C¦`Ùfn,-hF3œ2¹ Å‘°ˆG ¼šø!‘HqŠcâF»øÅ1qV¢]ÛøÆ8αŽwÌãÐõøÇ@]_«Ê‘¡0#ºò€áˆ!½øBd°¬!bXA¶mÔq?pkíº×6yÇf¶«^ÝGŒ¸`ÿ M @îµÌáÉè„,(°Um’Æè2Šô’ð#Ð/°Ô’žyÄûâ HR€7\Á ˆ ÓL#øð3«£ÈI€=5 ?òòÏž6&1Æ `€ -°€6´Ñ‚Ü ÞÐF©“8>:!¦©ûnðÀ é!¨æ $€QW2½h€Ñ Ä€å<T€‚Q‰*  À¥Æ@ÄÜ€ R–ÍèsŽŽ ƒ÷‘%cÖ.¨$;!I4"½°Æ“z¡…ËÖ·×ÙL Bá†H½|~3‹/†Z¡$D1@Åx6ýø X¢˜ÏL.1ŒÎ©/ÞÀ¼ÆÑ‡]¸6€ùC#€sziu˜õ# uq bÏÅ?ÙqYýxÄþ†á.1tÈ€ÿ­Ð{k¦¹¡]8[—=OpBõøøÅ+qÆß0iÕ˜FÆWËßV²Å}ïV:÷Vg@$ÁT ÷0Ø }`"jÇL¦7…°?½Cÿb1 €&Às`Dª€ >!PÙpeÞ"(ðXÄ1[RLóÔ8æÐ T™ƒ¦õw¾&x¡![*õò´“œ`GŽÔPÍÑ ‹0ר ˜IéS6ˆJ"àmNb ðå2q y@Z¾0 v%d2ÖBoT>¸~r–1Ó e\ª`3¬’v«ƒ8T’VkeyIH ÀÞ Éà"u0PŒ ÄÐ R;¸’¬•BÑ p(kCÁÓv“¨v¹Š¢b5]ÀÛBÆF;rˆ°è`‹ÈÄv ÆPkàÜÖ" ñ` Ó19ú-¦@ź’4šƒÙÉ’![.T:òó%D2Š™!`«#á8¤ÛKHþ…ý3oR ¶ÅŠI±‘t÷rN ±`"K‚PÅÙ¤ æFød*IÞç³ÒS‡ÌÕ¹á+ÕáíÂ|lé‡päŠTb¾,´0 ,°GÇ! {½¿’ ‹ lØ(œ GmÔÛl:zXåºÍÛ/ñ‘Z”Ûwî3'Ô`.³Ÿ=ÿà ¾à$‘_• ¡â‘xìÖ¨6í›S)¬^P?à­«(xôl‡]µ=\‡çúC 'Ú„ÁF¼0© dC°qÆ[DW IÛ /#- ›pYÇ! õ˜ zì88u?¦h¤ê Fxr©,ÙŠ½]%^"0`0™]g\ÈåüR®ºÒ z3 `D`”Q`МÒÈÈôD;öp˜¥±q×8òWƒ‰1 ¯Ð ªmHHetFiĤ‚ÿ–ú± Ãð‡0©iŽ ç!»ˆJØÔêæ ^>03Ð €Q _ðåðÃgxSÅÁÕûÔ àÍ1s °`ÚKÿ.ç)i#ÿ&Œ°Œ‡*«°¹Ím "0J³Üž Ï *²’e%è`[)0{Tîr°ʆæ‹ ‡•Ö´,ŸNt€šÐNþWÏQú9~ê ŠÐÔ¡E(*4çG5NR„ ©‡†Ùp¼Æ&/à`m hB_ÀŽ·À°Ü¦~'¯! yQÓëVeÄN üci¹ À AÒ(Í=æ}ó$´©À©üÕBÖ°§"厒ª½¡êU1Hk ƒ :Û”æ„ùlIsp’l,cé eÉR^ÖÐI?1VBLBŠGì÷SIÿ LÈ!|­‘ñK¢‚£€ Ï`1K9 DS @鸀N1娕Àœ4à ªH6q`ðgJ6[¬.dØ.D¨Ð J±^À ˆÐÑãG!ABÁåpá3 j Pu#®„&sMYÓfHYÀŒ-„(ë&ÈNm@PàJ…Œ¢-½ÕÔ©S?Q¥N¥Z5êS¬N™ |4@@Ÿ"1MŽmh+ƒŸiEJÐEÖ¤¹ 'Xvh‹¡-{ÕîõxB–×° ù‡@€-fR´°ÌB4ZÎâø¹eUjVÌ™ŸRÎL‹VSëÖm/Â|ÕJÈs'Ï^žRê) •ÿÝ…ÆòªV»‚…b)¶ˆ!$H1†hkF,Ù-fO=†zµ²eìÙ©næ|˳w NWÚôXÔ¼ÓÖj3Wƒ'hÿa÷ÂóÕ‹\£,êxáe)Èâˆã5ÓL;³S°)ZRd€ &‘@†^;O¦Ôöó¾ºîÚíC:!p!šc†1²«ÔΩ鲒»Á‹c˜ÇZ(äèD•6Üpš JD&E!D†Q¯&jpbaváÅÀa„–Éb¼Ñ²¬jljL«rœŽ:èL`Ægš¡alР j‘%>îchIµTe‚EÊcå— äjÿ¤I´(Èk¤±£›Š@ fhf;-ÆÉ΄Mm$5ÍEmp™fš!!‚¤(7Ôá—QDR¥–^éÅ<†‚ItQÚ(!ÈÀ$Tq6ÄØ‚Œð¦šN;m0Un«;õÛ©$ÂϘaÆ3sð @‡;¾˜D”F¢ø¥¤$YÁF E‰% 8†–hH˜¦™d’Æ™5_·Tn–X\T1£.º8¢1#Œ&Úp–€ Èß$ƒé£_ÿ8„¶¨ƒS鬮2-%ž1b›s–±ÌïÈîÀs›ù¡lpÏ:¨`2eµ‚¡'~ ÿNÉÞNA»öúk}~Š©žo‰& ¦AІðh‚Š&™ †gJêŨ="rÄ*P·g–*[U° 7üð53á:P;ý.8-H‹ÀSoäæp¢jx ÁlañãKªDGütÔ ïvu« üòuÓ¥ŠÄº™+;“âÔs×}ÛÕ»}÷݃^çÞ¹³l–Y†W~yæi/~LÆ›—~zê«·þzì³×~{î»÷~{¿¿ûè»»Në«Â}ð)ÆÊS§^_ÆuÑ#)¿ëÌØ__͆ã˜Î PÛ€Áˆ`R’! ÿeK[§ÊŸþ¨W<‹•Ë\ž‰5Rpÿ¬ @ ðÀ7 Æ0¶´&3aæf¦² ðÊ—? rPlÐ1W’!Œd(AxÃKÑ `A ‘F6ª ¯Ž€àRh‹üC6õNL5´aU$øÅ+f†ÑXÀZ0†9‡"’ƒžÁ±#X¨B:Ò† i8Fö³Î|Àã¢î¸£-9Žƒ¯ $„Àă ýÁ]nˆÁ Ñ´±à"X‚1ìÀ»øRÌu®Ï8…LÝu\¡ù¯)Ú Eò0Dx!lÈC®!O²@6òešn,“ HP‰(A $hÂä-Vÿ.Ïbй…3†ÑÇ8MXA…2qœ à„¼’†4tÌópàG¸GTÁ·-Ü€ÇP˜»“ÍÜe+*1„Ð)ãà _ /XA'ð ÈA ”D2# že….‚ H’xRPq ¨ã Æ ¤@Þ D"º€HRJ+‚4~±¹¨ àhQÇb‹g4B§m°¨&•þN†+J¶œ²”a4ãÚ˜ v<©¢!ëC€ˆZÔBýPÅ .Nè“F=j.Ê!YôÃ#BS-à9íbÔ Æ2"±Œq-›ŒŠ,›’Ubÿ ˆäDà5# &ÆÀ€^ä©°£E±ˆ_Ñ•,¶FFÁL‘„8ë°…8H/ˆ! Þ-h|8„_4ãx@ˆ u(q#è‚ïlHg?û Ø`öA# ÐÕ²‚ö`€òöU ‰ ,‡B$Œ X 7<àe0ƒ2\Fµ?ïp0ÚHA a–B6“dŽF`âK.q½ZÔÀ€I¾l¡ O\@˜|1‘'0‰@¨Æè2@€RF s¸&ª! ^ ƒ‘XJöÞw X¦Á½’€@ŽZ—~ÿ2 k]ÔQ àuˆ-zQŒ0`%ê±l ªŒÍ:„Ï8‚$B @—Þ†/†A£ *ö{òƒãBS–œx oX"<©àÙQPù<¹hmiEpWpB!¸(F*d1‘ýœ` À2®±!cvè¥:Á·O(¡Œ‹ªœ±—£sÅ ètP…I°Dk†4’Œ3@ÐI²…Y¶Ë’{t€­ûQÅ=ÁrÌõ<¶€Æ($ 3î `± ?˜@Û ÛïýlhMúu…ÕE°†B„`èu§ ˜ò\•Ìäöb#ê©Å¡ïð²‚h˜€(TaPØi ÿ1´”ãiQz4²¦h¦°óà"Y–K?F…`”µºž]rxÑ¡›¨âШÆ®óm"  > ù¶ƒS´ 5ƒ‘@Ï„¾ ÆLÕ^!M]‹!It¤@íB¬; r”µ¥ y#‚Ñá“Ó¸0ÂNh˜(BÂàTTg•ªïz‰Üùh²!\xâ×ME9 Àñ\PžKÿÉ®v*¦);ê ±ÅÂñ†>dÂ#H€ŽÑ 4%Õ¨54¡ j`E{dw88œ¯^$@ ¦Èð}Ìqƒé!)6»QŸ<1@Êqß{nt±é Ä:$AÀ#ÐGy¤€s˜Ã%\ÿàøB@íÓ‘Ã!^TBK@¯HúFC?z{|­£)2ô(ú䙟êmBû<ä xÅÕáKßQî¤6©‚sÃÁY<ªè¹Q­Û¦Ñ•î5QbŒÃ哵 ø.Ž"l˜:¨Y1h¨ !À9ˆ5"™1dI. ‘<©ðŒRÉ™Dš¿)ÐËã¨\@Žh*«²*€>ôW0ÌÛ¼Ž ƒ d˜«ûG`€óJ‹¶Z°‹m°“‰H¡K(ƨ†ÇØ’Fr øÛŽÄr?ùú3ºÒ-‰îj€’ó°`°A½#Hÿ\ ò’‹xÁ3\´Öª'é €@¹3 (‡„h ‚H‘4ae¨ 0$A¹!k2ÁlHAŽÚ8{¸€{[¶4´ ‘ËÁcÂѲY Ђ hQ8´è †^À…?Œ§ ÀI Áð7™AH4žÄ©D¯ ½;@¹ Hlh>…°`ð þÃÁ0 †F€ÅŸÀ¾Ï£«n(‡ã«¨.ˆ_€è$îp¿ŠÉ ðøp°5ºê…\Q Y°‡`h…0 5ìˆQ ¯^èÆ½8„`h=²‡2c&Ã<肈†ÿ,¬ ªØ ™‰kª €±0@’¢Bã Ü0»IÉ5ô?ºê,o”5{ˆ+‡Ü(•ćBŽà…ùi¬kšª¤¡ïˆFÈ'x¸€Ѐ#@†B† ÐÞàÄF°މZÐ:°(˜4ªg–´T ‚f¼I xƒ5= à…d@¬p±ÚšÖá’Xº¶d ƒ é&‚$ÀÇÓØG–€g1GàH„ è„~(ƒðKXT…D-c Y8‚ZLK¥3E>è7‘hƒ¨†i°Âc„GUêŒ8[° €h(…)¸ƒbÈÿ „QP¸‚Xˆ…›*+™¢D 6ÌL²Ô’P]ø¹ ˆh„à°“³…\༂g)–°mpÍØ„Í×”Zè¯8°88„·’~ðÎxxƒ)Ã`H¹{ÆŸÈOĆˆÐ«N8„X€+RZ°6xh‰êÜLÖh\腈஠GÓ8 HK Õ¬mˆ°£ ê¤/J&‡  (0i†TØÊZ`€#¸}ü‰µ‡_‡è…ø‚YáPŒäoI`ª'È¢ÒLQÌP²È…`½h… À†f´N8Y1Õ8ÑÿWÚB]P„ ² È F†Ðí‚4˜€bà/¾~è>ÁÓ… ‡%˜€ûƒÂ38X32°`z(:€JC²|A”Í´“ sH‰Šc€ °¨ÅEë…E@ÍQÍ´Y6Ý¢²‘@º¶U›5Y`HSh2*€‚Q(QÞ`ÔG¨ØÉÄ3áJF¨8°6øƒIÀ,5pƒ³íˆãøU@Ù$Òº>O 3*S-)Þ4ÝMh‘@zOÝ}©è]žÃe3…OåQøD]H€Tœ]Ç€B\ëÐBiÅÂÉ8¨­Jè$úÃpƒU8€UЧ4/–„¸—¤Å4[@_¥ÙšP͸]:Ãßx(ÂáßÑðßRôUH;ObyZž Ò¡Zª•ŠY0ðûˆ/©ƒ¯ƒ˜ƒ ˜†iˆ(§ZÔ5àƒr»I‡0Np-óŠØ6ƒhx nOo3ŸJ¥ÿýÅ×Ñ8>£²…bÈáá2ÖŽ ® ªMž[bðÖT—.h‡²( Ø-NcXA°Ê6ˆKŒ¼Bá¢\ø” $6Ap8ÕÊÅÜá‰}d/¢ ûÙ_#žäYcØZP†iÐ’RØ¥²=ä?A…_mÜ‚`ÇjZ%3f$ÚLÞäE¡cÆŠŠHXЩ¦XzÔj oˆ€PÀƒ-p‚4hg°`øB hù ‚@p„_)aËNU‰O €0xÇâÛà¢ä/¡Gò0g‡ÈÏ"gØŠÕõ¡Z¯3m ì=° øƒWN¯*q6àfúS[Vèÿµ»Š”E¸—ð²2íD`‹Â€È,H<Ö©×Zcñ076*MÖç}†Ú¾c#Þ¶:‹Xðœ!X–í}Ë`‡^ø…(XŽø:('UЉ>]_]]>HY·8ò‚-µ / iP‡hAS —ØôaXp‚Ђf—–Ø1PæÙ —¦X†a Ö˜-(¿¸‘,±½‹ bn’ €1àÝ0ù’þò šœ¯2êµÓчuJ¢Cä,{@½9L€^«©ãÐÿ¦õ:˜tHeÛÁ&Ü¢tø°’6 h€r(Ž RbI¯8„ØT¢…d@¼Bð‚Iš„>(nÀDcHï$!ìîLïüLÊNÒroGÃe9ˆ†]è™zåÙãhjˆ„ƒh(›Õ x†,Þê&‘6@€€:ˆ pñ¤ð'(pa °{ŽêØØQ`ã“ÏÃNHì™TÀƒ§Á3V¥ü•¡F:(„ñ€DðÞ€L„(€ê…hpõPƒBitîï`.Ø·éـΦeñìÒ•Ø)TH- 5lÔçàÞ Œ™ñAªq¬åÿ¨Ø…]H†0ƒCxË ‚V`€>À£OΆhi¾HšF…V8P38 ÀÙ…ðXaR…/(ƒ åóø…TèëT4\X9n ˆZ2¿ dœl®Ù…wHƒ(ðâè‡@ 4éf…3øeå=Á8AÃg$IÐhcè…r¨‚)È"ph4˜O*…R@±ÐL…ô†èòLEè€_`ˆKÏôý ƒMgÇN/óþþŽAí x™ÒXö*‡Á•_=ùQVÀg»í‡™qøCi‚*ˆ6Uè„pbÏ„(ÐG˜J9@ˆo=äg€ Y˜vžðò³nÿ °¶ð1éþÆBÎàß P…I8R>xƒ%€:“0*: Þa#HN”ƹ2\(óˆN°lmƒˆLµv(Úk„bÐ’cO û YоEƒx—ÆoÞ­x};c5n؆ŸSR‹²(‚ßeˆ^m„øh« M‚% Ï ²P@°I(“ØÁVÌTÀ{Æ…_HU‹Þ `ú‡pz}& mâÉ ™©ú>0|$µQ0vL°Oò ý…^hß±84°„/Ý›0ŽŽ8C(²èWŸÙa¸fÔ…T6Ɖ/üž8k¨±—T™Vÿqûtˆ3XÀ£=Ùrs¶…_¸mûþ è…l¸Ù›—0÷²\õ ã¿‹_˜ ù{j|I¡€oØ…[XÌÞ³#‹óEÅ,ׂW¸—[ÔûW÷*Xöt@úXˆ?²`Ëe‹„q›Ð¡–€~P%˜ÐOÆŒ7rÜÈ€“B\t,¹ñObta“c··nÅñcó&Μ:sÎìéÓgXŠü™’í Â¤ sHÕ# r%ìUñ¡É¬¡àRª«”@'œ`˜Ò„¶z5½¨õ-GY¿BŽ„»‰zfZ0,Z´žqâøÜiØðÏÄ3ƒÿŽ!:\’´’æâ“JÖ‰ZÈê§Êî[ ]%ÛÊULÂ=Œ"FM% 4hYÏè~±‹i4i«FZ´ÃŠgF<¼'³ /A:ù9«_ÜÂ=:+]¹í—ŠÊuVã|®®UóY]¶DÖ.©ªŸ"lÊáÁµd¼ß~üÿO~G -·$ËrLÑvÐåryZ©". fÇÉ"ŒEÖ %4^y–ÔI?DGÈAGˆ!‰t¡D3Ã8à 3·X €ý÷#=*Fàb°4¦àQNÖË("š4¡z“V.‹4ÒÁ†‰`U ‘çdI „ÒÿÅ!%¬ð‡F¬ÐÄV¤‘…6ÍhcÁ-í`y7d4ÁRÁ þ✒I1 fIºˆ J‹‰‚J—ÙbO¤ˆ  J,°€z /(0‚`ùtg‘Bê9«M… I¤Ÿ©òØ¢…"Ô IšjT‹]Ú¢K00iG[VÊ >_ ›Ñ 8TKŽqø²­/»À  ­ÄѪ§­=IKP€þÑG½úšK°Ó P —À$ÐH+Õ‰ÐÀ³¬H+/N\ËßOè X+¸xŽd¸3h@øJe¼òžÐÏ Ì¾µï³—jlÞ$¼ƒ ™0Ê:âZîÂ'ÿ” ¬ À¬‚.îb¬¼Ór¬ÇNþÑ%ð‚6Ø|“-ó4ÓŽß:0€ƒy“Æs€Bš"4’7ÐÊsÏšþìåÇ&µ±&0¤º@3­ ËÁuO]°ÔwH`ζ!JDPÉÖu0A ½4Hv„ýˆqÏ¢¼R¡BU€öØpÅY,à ,q˜c°˜>õN‰åí4¸wâh`Äý€5ˆÑ†ª´’ÁDL¯yƒ 0öÜ P<ÃABv¤-Àm@Ð5Ãðâ öƒÕDÜö‘ôT+ê8%>Õÿí8X€ÅNÃY¸Ò‘ûUèÐ ¡Œ?Yÿ‹PªP0ú%a½R"tp‡Lp¤m À pBÀ$Ù JL@ðõÈ¡#ŸNÆG¾”i0¦ÆñáHÐBP€ì@È$÷hD‚ž„Ãxò"@ ¶à…Âý¡EAÁF#tÚ«‰Mf1 2-e(!îx˜'&Øó#¸01¬ 'Äî ŠŽt ¿ˆÒd‚¡…jª %(DHð”+XAv`¤ciZN¤ˆ:bñGVD¤ø µ©/ˆ€hVDôãØásäHGDÙÑmÉ`:Ø 6d4°ŽTF‹ÃHqÿЬÓb#ÉõŸ= G;bF2,pƒ&¸0¸ƒÞ°„‰±Z˜Ÿ¼ìXc †@ʈ6Å•Ë*&l›º<ΞT‡. ü¥} ‚*D1 `JR²PG)¢µàùé ºD‡«íƛܗ?³ÎÔ ‡0&`š±€DÀMÀ*¼ÆPÆQ€`êÄ @‡–xÀ=ªfŸDÐòh¤ÛgH±iBXXÀ ñ›ß@`ƒ ÀQ2ñ¬Ž*0×é= 9O$èpL*Ô¡†p8ÙDB“Á>¸fš_&úPlÌP)=”gGàS´-¸@¡ÄàX‰*Ö±Žk@ßš$®¢A‚i€* ÿ€$Š8‰@4@q ùÅ°š‘ˆŒh3,à ÑIRad=,bú­hhB®òaËŒh“ ;h>óBpàk'|†ô”o„¥É-L‰H$¶µ®=Ìb5qy&Õ43,àÌ  /@@T„IL"D)Y fàc£Î0íOWûÚéR—¤"í`ôY  #É ^PÆ””j/ŸÚO>—F+EV·½X|$|£±ŒßPÃ7¸ALð_,cEe™{,TøvÓ\„¢@ÅõH3¸ehž¤ëÃ6¸Â#}°6-¬á ÿ¾Å©%{9,b×bøÃ¶1%ŠÛËȳXÃ%&W‹c|a gXÆ6¾1Žs¬ãó¸Ç>þ1e;Biblio-RFID-0.05/examples/reset-OmnyKey.sh0000755000175000017500000000025114373155755020141 0ustar dpavlindpavlin#!/bin/sh -x sudo mount -t usbfs none /proc/bus/usb id=`lsusb | grep OmniKey | cut -d" " -f2,4 | sed -e 's! !/!' -e 's!:!!'` sudo ./examples/usbreset /proc/bus/usb/$id Biblio-RFID-0.05/examples/selfcheck.js0000644000175000017500000001603514373155755017363 0ustar dpavlindpavlin // configure timeouts var end_timeout = 3000; // ms from end page to start page var error_timeout = 5000; // ms from error page to start page var tag_rescan = 200; // ms rescan tags every 0.2s // mock console if(!window.console) { window.console = new function() { this.info = function(str) {}; this.error = function(str) {}; this.debug = function(str) {}; }; } var state; var scan_timeout; var pending_jsonp = 0; var only_reader = ''; // timeout warning dialog var tick_timeout = 25; // s var tick_warning = 10; // s var tick = 0; function beep( message ) { pending_jsonp++; $.getJSON("/beep/" + message) .done( function(data) { pending_jsonp--; }) .fail( function(data) { pending_jsonp--; }); } function start_timeout() { $('#timeout').hide(); tick = Math.round( tick_timeout * ( 1000 / tag_rescan ) ); } function change_page(new_state) { if ( state != new_state ) { if ( new_state == 'checkin' ) { new_state = 'circulation'; // page has different name $('.checkout').hide(); $('.checkin').show(); circulation_type = 'checkin'; borrower_cardnumber = 0; // fake only_reader = '/only/3M'; } else if ( new_state == 'checkout' ) { new_state = 'circulation'; // page has different name $('.checkout').show(); $('.checkin').hide(); circulation_type = 'checkout'; only_reader = '/only/3M'; } state = new_state; $('.page').each( function(i,el) { if ( el.id != new_state ) { $(el).hide(); } else { $(el).show(); } }); console.info('change_page', state); if ( state == 'start' ) { circulation_type = 'checkout'; book_barcodes = {}; $('ul#books').html(''); // clear book list $('#books_count').html( 0 ); only_reader = '/only/librfid'; scan_tags(); } if ( state == 'end' ) { window.setTimeout(function(){ //change_page('start'); location.reload(); // force js VM to GC? },end_timeout); } if ( state == 'error' ) { beep( 'error page' ); window.setTimeout(function(){ //change_page('start'); location.reload(); },error_timeout); } if ( state == 'circulation' || state == 'borrower_info' ) { start_timeout(); } else { tick = 0; // timeout disabled } } } function got_visible_tags(data,textStatus) { var html = 'No tags in range'; if ( data.tags ) { html = '
      '; $.each(data.tags, function(i,tag) { console.debug( i, tag ); html += '
    • ' + tag.sid; var content = tag.content || tag.borrower.cardnumber; if ( content ) { var link; if ( content.length = 10 && content.substr(0,3) == 130 ) { // book link = 'catalogue/search.pl?q='; } else if ( content.length == 12 && content.substr(0,2) == 20 ) { link = 'members/member.pl?member='; } else if ( tag.tag_type == 'SmartX' ) { link = 'members/member.pl?member='; } else { html += 'UNKNOWN TAG '+content; } if ( link ) { html += ' ' + content + ''; + ''; } console.debug( 'calling', state, content ); window[state]( content, tag ); // call function with barcode } }); html += '
    '; } var arrows = Array( 8592, 8598, 8593, 8599, 8594, 8600, 8595, 8601 ); html = '
    ' + textStatus + ' &#' + arrows[ data.time % arrows.length ] + ';' + '
    ' + html ; $('#tags').html( html ); // FIXME leaks memory? pending_jsonp--; }; var wait_counter = 0; function scan_tags() { if ( pending_jsonp ) { wait_counter++; console.debug('scan_tags disabled ', pending_jsonp, ' requests waiting counter', wait_counter); if ( wait_counter > 3 ) $('#working').show(); } else { console.info('scan_tags', only_reader); pending_jsonp++; $.getJSON("/scan"+only_reader+"?callback=?", got_visible_tags).fail( function(data) { console.error('scan error pending jsonp', pending_jsonp); pending_jsonp--; }); wait_counter = 0; $('#working').hide(); } if ( tick > 0 ) { if ( tick < tick_warning * ( 1000 / tag_rescan ) ) { $('#tick').html( Math.round( tick * tag_rescan / 1000 ) ); $('#timeout').show(); } tick--; if ( tick == 0 ) { $('#timeout').hide(); change_page('end'); } } scan_timeout = window.setTimeout(function(){ scan_tags(); },tag_rescan); // re-scan every 200ms } $(document).ready(function() { $('div#tags').click( function() { scan_tags(); }); change_page('start'); }); function fill_in( where, value ) { $('.'+where).each(function(i, el) { $(el).html(value); }); } /* Selfcheck state actions */ var borrower_cardnumber; var circulation_type; var book_barcodes = {}; function start( cardnumber, tag ) { if ( tag.tag_type != 'SmartX' && ( cardnumber.length != 12 || cardnumber.substr(0,2) != "20" ) ) { console.error(cardnumber, 'is not borrower card', tag); return; } borrower_cardnumber = cardnumber; // for circulation fill_in( 'borrower_number', cardnumber ); pending_jsonp++; $.getJSON('/sip2/patron_info/'+cardnumber) .done( function( data ) { console.info('patron', data); fill_in( 'borrower_name', data['AE'] ); fill_in( 'borrower_email', data['BE'] ); fill_in( 'hold_items', data['fixed'].substr( 2 + 14 + 3 + 18 + ( 0 * 4 ), 4 ) * 1 ); //fill_in( 'overdue_items', data['fixed'].substr( 2 + 14 + 3 + 18 + ( 1 * 4 ), 4 ) * 1 ); var overdue = data['fixed'].substr( 2 + 14 + 3 + 18 + ( 1 * 4 ), 4 ) * 1; if ( overdue > 0 ) { overdue = ''+overdue+''; beep( 'overdue: ' + overdue ); } fill_in( 'overdue_items', overdue ); fill_in( 'charged_items', data['fixed'].substr( 2 + 14 + 3 + 18 + ( 2 * 4 ), 4 ) * 1 ); fill_in( 'fine_items', data['fixed'].substr( 2 + 14 + 3 + 18 + ( 3 * 4 ), 4 ) * 1 ); pending_jsonp--; change_page('borrower_info'); }).fail( function(data) { pending_jsonp--; change_page('error'); }); } function borrower_info() { // nop } function circulation( barcode, tag ) { if ( barcode && barcode.length == 10 && barcode.substr(0,3) == 130 && book_barcodes[barcode] != 1 && tag.reader == '3M810' ) { // book, not seen yet book_barcodes[ barcode ] = 1; pending_jsonp++; $.getJSON('/sip2/'+circulation_type+'/'+borrower_cardnumber+'/'+barcode+'/'+tag.sid , function( data ) { console.info( circulation_type, data ); var color = 'red'; var message = 'Transakcija neuspješna. Odnesite knjige na pult!'; if ( data['fixed'].substr(2,1) == 1 ) { color='green'; message = circulation_type == 'checkout' ? 'Posuđeno' : 'Vraćeno'; } else { beep( circulation_type + ': ' + data['AF'] ); } if ( data['AF'] ) { message = data['AF'] + ' ' + message; } $('ul#books').append('
  • ' + ( data['AJ'] || barcode ) + ' ' + message + '
  • '); $('#books_count').html( $('ul#books > li').length ); console.debug( book_barcodes ); pending_jsonp--; start_timeout(); // reset timeout }).fail( function() { change_page('error'); pending_jsonp--; }); } } function end() { // nop } Biblio-RFID-0.05/examples/selfcheck.html0000644000175000017500000000725614373155755017720 0ustar dpavlindpavlin RFID SIP2 Selfcheck
    RFID reader not found or driver program not started.

    Knjižnica Filozofskog fakulteta

    Timeout in 99 seconds.
    Ako želite posuditi knjigu, najprije stavite iskaznicu na za to predviđeno mjesto.
    Ako želite vratiti knjigu, pritisnite gumb za povrat.

    Informacije o Älanu

    Dokumenti

    • PosuÄ‘eno: 0
    • KaÅ¡njenja: 0
    Postavite knjige na predviđeno mjesto ispred monitora.
    Posuđeno:
    Vraćeno:
    Hvala što ste koristili selfcheck sustav.
    Greška. Odnesite knjige na pult.
    Biblio-RFID-0.05/lib/0000755000175000017500000000000014373156607014016 5ustar dpavlindpavlinBiblio-RFID-0.05/lib/Biblio/0000755000175000017500000000000014373156607015216 5ustar dpavlindpavlinBiblio-RFID-0.05/lib/Biblio/RFID/0000755000175000017500000000000014373156607015742 5ustar dpavlindpavlinBiblio-RFID-0.05/lib/Biblio/RFID/Reader/0000755000175000017500000000000014373156607017144 5ustar dpavlindpavlinBiblio-RFID-0.05/lib/Biblio/RFID/Reader/CPRM02.pm0000644000175000017500000001233014373155755020407 0ustar dpavlindpavlinpackage Biblio::RFID::Reader::CPRM02; =head1 NAME Biblio::RFID::Reader::CPRM02 - support for CPR-M02 RFID reader =head1 DESCRIPTION This module implements serial protocol over usb/serial adapter with CPR-M02 reader as described in document C =cut use warnings; use strict; use base 'Biblio::RFID::Reader::Serial'; use Biblio::RFID; use Time::HiRes; use Data::Dump qw(dump); my $debug = 1; sub serial_settings {{ device => "/dev/ttyUSB0", baudrate => "38400", databits => "8", parity => "even", stopbits => "1", handshake => "none", }} sub cpr_m02_checksum { my $data = shift; my $preset = 0xffff; my $polynom = 0x8408; my $crc = $preset; foreach my $i ( 0 .. length($data) - 1 ) { $crc ^= ord(substr($data,$i,1)); for my $j ( 0 .. 7 ) { if ( $crc & 0x0001 ) { $crc = ( $crc >> 1 ) ^ $polynom; } else { $crc = $crc >> 1; } } # warn sprintf('%d %04x', $i, $crc & 0xffff); } return pack('v', $crc); } sub wait_device { Time::HiRes::sleep 0.010; } our $port; sub cpr { my ( $hex, $description, $coderef ) = @_; my $bytes = hex2bytes($hex); my $len = pack( 'c', length( $bytes ) + 3 ); my $send = $len . $bytes; my $checksum = cpr_m02_checksum($send); $send .= $checksum; warn "##>> ", as_hex( $send ), "\t\t[$description]\n"; $port->write( $send ); wait_device; my $r_len = $port->read(1); my $count = 100; while ( ! $r_len ) { if ( $count-- == 0 ) { warn "no response from device"; return; } wait_device; $r_len = $port->read(1); } wait_device; my $data_len = ord($r_len) - 1; my $data = $port->read( $data_len ); warn "##<< ", as_hex( $r_len . $data ),"\n"; wait_device; $coderef->( $data ) if $coderef; } # FF = COM-ADDR any sub init { my $self = shift; $port = $self->port; cpr( 'FF 52 00', 'Boud Rate Detection' ); cpr( 'FF 65', 'Get Software Version' ); cpr( 'FF 66 00', 'Get Reader Info - General hard and firware' ); cpr( 'FF 69', 'RF Reset' ); return 1; } sub inventory { my @tags; cpr( 'FF B0 01 00', 'ISO - Inventory', sub { my $data = shift; if (length($data) < 5 + 2 ) { warn "# no tags in range\n"; return; } my $data_sets = ord(substr($data,3,1)); $data = substr($data,4); foreach ( 1 .. $data_sets ) { my $tr_type = substr($data,0,1); die "FIXME only TR-TYPE=3 ISO 15693 supported" unless $tr_type eq "\x03"; my $dsfid = substr($data,1,1); my $uid = substr($data,2,8); $data = substr($data,10); warn "# TAG $_ ",as_hex( $tr_type, $dsfid, $uid ),$/; push @tags, hex_tag $uid; } }); warn "# tags ",dump(@tags),$/; return @tags; } sub _get_system_info { my $tag = shift; my $info; cpr( "FF B0 2B 01 $tag", "Get System Information $tag", sub { my $data = shift; warn "# data ",as_hex($data); return if length($data) < 17; $info = { DSFID => substr($data,5-2,1), UID => substr($data,6-2,8), AFI => substr($data,14-2,1), MEM => substr($data,15-2,1), SIZE => substr($data,16-2,1), IC_REF => substr($data,17-2,1), }; }); warn "# _get_system_info $tag ",dump( $info ); return $info; } sub read_blocks { my $tag = shift; $tag = shift if ref $tag; my $info = _get_system_info $tag; return unless $info->{SIZE}; my $max_block = ord($info->{SIZE}); my $tag_blocks; my $block = 0; while ( $block < $max_block ) { cpr( sprintf("FF B0 23 01 $tag %02x 04", $block), "Read Multiple Blocks $block", sub { my $data = shift; my $DB_N = ord substr($data,5-2,1); my $DB_SIZE = ord substr($data,6-2,1); $data = substr($data,7-2,-2); # warn "# DB N: $DB_N SIZE: $DB_SIZE ", as_hex( $data ), " transponder_data: [$transponder_data] ",length($transponder_data),"\n"; foreach my $n ( 1 .. $DB_N ) { my $sec = ord(substr($data,0,1)); my $db = substr($data,1,$DB_SIZE); warn "## block $n ",dump( $sec, $db ) if $debug; $tag_blocks->{$tag}->[$block+$n-1] = reverse split(//,$db); $data = substr($data, $DB_SIZE + 1); } }); $block += 4; } warn "# tag_blocks ",dump($tag_blocks),$/; return $tag_blocks; } sub write_blocks { my $tag = shift; $tag = shift if ref $tag; my $data = shift; $data = join('', @$data) if ref $data eq 'ARRAY'; my $DB_ADR = 0; # start at first block my $DB_SIZE = 4; # bytes in one block FIXME this should be read from transponder and not hard-coded if ( my $padding = length($data) % $DB_SIZE ) { warn "WARNING: data block not padded to $DB_SIZE bytes"; $data .= "\x00" x $padding; } my $DB_N = length($data) / $DB_SIZE; my $send_data; foreach my $block ( 0 .. $DB_N ) { $send_data .= reverse split(//, substr( $data, $block * $DB_SIZE, $DB_SIZE ) ); } cpr( sprintf("FF B0 24 01 $tag %02x %02x %02x %s", $DB_ADR, $DB_N, $DB_SIZE, as_hex($send_data)), "Write Multiple Blocks $tag", sub { my $data = shift; warn dump( $data ); }); } sub read_afi { my $tag = shift; $tag = shift if ref $tag; my $info = _get_system_info $tag; return $info->{AFI} || warn "no AFI for $tag in ",dump($info); } sub write_afi { my $tag = shift; $tag = shift if ref $tag; my $afi = shift || die "no afi?"; $afi = as_hex $afi; cpr( "FF B0 27 01 $tag $afi", "Write AFI $tag $afi", sub { my $data = shift; warn "## write_afi $tag got ",as_hex($data); }); } 1 Biblio-RFID-0.05/lib/Biblio/RFID/Reader/3M810.pm0000644000175000017500000001763314373155755020227 0ustar dpavlindpavlinpackage Biblio::RFID::Reader::3M810; =head1 NAME Biblio::RFID::Reader::3M810 - support for 3M 810 RFID reader =head1 DESCRIPTION This module uses L over USB/serial adapter with 3M 810 RFID reader, often used in library applications. This is most mature implementation which supports full API defined in L. This include scanning for all tags in reader range, reading and writing of data, and AFI security manipulation. This implementation is developed using Portmon on Windows to capture serial traffic L Checksum for this reader is developed using help from C L More inforation about process of reverse engeeniring protocol with this reader is available at L =cut use warnings; use strict; use base 'Biblio::RFID::Reader::Serial'; use Biblio::RFID; use Data::Dump qw(dump); use Carp qw(confess); use Time::HiRes; use Digest::CRC; sub serial_settings {{ baudrate => "19200", databits => "8", parity => "none", stopbits => "1", handshake => "none", }} sub assert; my $port; sub init { my $self = shift; $port = $self->port; # disable timeouts $port->read_char_time(0); $port->read_const_time(0); # drain on startup my ( $count, $str ) = $port->read(3); if ( $count ) { my $data = $port->read( ord(substr($str,2,1)) ); warn "drain ",as_hex( $str, $data ),"\n"; } $port->read_char_time(100); # 0.1 s char timeout $port->read_const_time(500); # 0.5 s read timeout $port->write( hex2bytes( 'D5 00 05 04 00 11 8C66' ) ); # hw-version expect: 'D5 00 09 04 00 11 0A 05 00 02 7250' my $data = $port->read( 12 ); return unless $data; warn "# probe response: ",as_hex($data); if ( my $rest = assert $data => 'D5 00 09 04 00 11' ) { my $hw_ver = join('.', unpack('CCCC', $rest)); warn "# 3M 810 hardware version $hw_ver\n"; cmd( '13 04 01 00 02 00 03 00 04 00','FIXME: stats? rf-on?', sub { assert(shift, '13 00 02 01 01 03 02 02 03 00' )}); return $hw_ver; } return; } sub checksum { my $bytes = shift; my $crc = Digest::CRC->new( # midified CCITT to xor with 0xffff instead of 0x0000 width => 16, init => 0xffff, xorout => 0xffff, refout => 0, poly => 0x1021, refin => 0, ) or die $!; $crc->add( $bytes ); pack('n', $crc->digest); } sub cmd { my ( $hex, $description, $coderef ) = @_; my $bytes = hex2bytes($hex); if ( substr($bytes,0,1) !~ /(\xD5|\xD6)/ ) { my $len = pack( 'n', length( $bytes ) + 2 ); $bytes = $len . $bytes; my $checksum = checksum($bytes); $bytes = "\xD6" . $bytes . $checksum; } warn ">> ", as_hex( $bytes ), "\t\t[$description]\n" if $debug; $port->write( $bytes ); my $r_len = $port->read(3); while ( length($r_len) < 3 ) { $r_len = $port->read( 3 - length($r_len) ); } my $len = ord( substr($r_len,2,1) ); my $data = $port->read( $len ); warn "<< ", as_hex($r_len,$data), ' | ', substr($data,-2,2) eq checksum(substr($r_len,1).substr($data,0,-2)) ? 'OK' : 'ERROR', " $len bytes\n" if $debug; $coderef->( $data ) if $coderef; } sub assert { my ( $got, $expected ) = @_; $expected = hex2bytes($expected); my $len = length($got); $len = length($expected) if length $expected < $len; confess "got ", as_hex($got), " expected ", as_hex($expected) unless substr($got,0,$len) eq substr($expected,0,$len); return substr($got,$len); } sub inventory { my @tags; cmd( 'FE 00 05', 'scan for tags', sub { my $data = shift; my $rest = assert $data => 'FE 00 00 05'; my $nr = ord( substr( $rest, 0, 1 ) ); if ( ! $nr ) { warn "# no tags in range\n"; } else { my $tags = substr( $rest, 1 ); my $tl = length( $tags ); die "wrong length $tl for $nr tags: ",dump( $tags ) if $tl =! $nr * 8; foreach ( 0 .. $nr - 1 ) { push @tags, hex_tag substr($tags, $_ * 8, 8); } } }); warn "# tags ",dump @tags; return @tags; } # 3M defaults: 8,4 # cards 16, stickers: 8 my $max_rfid_block = 8; my $blocks = 8; sub _matched { my ( $data, $hex ) = @_; my $b = hex2bytes $hex; my $l = length($b); if ( substr($data,0,$l) eq $b ) { warn "_matched $hex [$l] in ",as_hex($data) if $debug; return substr($data,$l); } } sub read_blocks { my $tag = shift || confess "no tag?"; $tag = shift if ref($tag); my $tag_blocks; my $start = 0; cmd( sprintf( "02 $tag %02x %02x", $start, $blocks ) => "read_blocks $tag $start/$blocks", sub { my $data = shift; if ( my $rest = _matched $data => '02 00' ) { my $tag = hex_tag substr($rest,0,8); my $blocks = ord(substr($rest,8,1)); warn "# response from $tag $blocks blocks ",as_hex substr($rest,9); foreach ( 1 .. $blocks ) { my $pos = ( $_ - 1 ) * 6 + 9; my $nr = unpack('v', substr($rest,$pos,2)); my $payload = substr($rest,$pos+2,4); warn "## pos $pos block $nr ",as_hex($payload), $/; $tag_blocks->{$tag}->[$nr] = $payload; } } elsif ( $rest = _matched $data => 'FE 00 00 05 01' ) { warn "FIXME ready? ",as_hex $rest; } elsif ( $rest = _matched $data => '02 06' ) { die "ERROR ",as_hex($data); } else { die "FIXME unsuported ",as_hex($data); } }); warn "# tag_blocks ",dump($tag_blocks); return $tag_blocks; } sub write_blocks { my $tag = shift; $tag = shift if ref $tag; my $data = shift; $data = join('', @$data) if ref $data eq 'ARRAY'; warn "## write_blocks ",dump($tag,$data); if ( length($data) % 4 ) { $data .= '\x00' x ( 4 - length($data) % 4 ); warn "# padded data to ",dump($data); } my $hex_data = as_hex $data; my $blocks = sprintf('%02x', length($data) / 4 ); my $retry = 0; retry_write: cmd( "04 $tag 00 $blocks 00 $hex_data", "write_blocks $tag [$blocks] $hex_data", sub { my $data = shift; if ( my $rest = _matched $data => '04 00' ) { my $tag = substr($rest,0,8); my $blocks = substr($rest,8,1); warn "# WRITE ",as_hex($tag), " [$blocks]\n"; } elsif ( $rest = _matched $data => '04 06' ) { die "ERROR ",as_hex($data); } else { die "UNSUPPORTED ", as_hex($data); } } ); my $verify_blocks = read_blocks($tag); die "can't find data from tag $tag" unless exists $verify_blocks->{$tag}; if ( join('', @{ $verify_blocks->{$tag} }) ne $data ) { $retry++; warn "ERROR reading data back from tag, retry $retry\n"; die "ABORTED" if $retry == 10; goto retry_write; } } sub read_afi { my $tag = shift; $tag = shift if ref $tag; my $afi; cmd( "0A $tag", "read_afi $tag", sub { my $data = shift; if ( my $rest = _matched $data => '0A 00' ) { my $tag = substr($rest,0,8); $afi = substr($rest,8,1); warn "# SECURITY ", hex_tag($tag), " AFI: ", as_hex($afi); } elsif ( $rest = _matched $data => '0A 06' ) { die "ERROR reading security from $tag ", as_hex($data); } else { die "IGNORED ",as_hex($data); } }); warn "## read_afi ",dump($tag, $afi); return $afi; } =head2 afi_retry This specified how many times will driver try to write afi to tag Biblio::RFID::Reader::3M810::afi_retry = 100; =cut our $afi_retry = 100; sub write_afi { my $tag = shift; $tag = shift if ref $tag; my $afi = shift || die "no afi?"; $afi = as_hex $afi; my $retry = 0; retry: cmd( "09 $tag $afi", "write_afi $tag $afi", sub { my $data = shift; if ( my $rest = _matched $data => '09 00' ) { my $tag_back = hex_tag substr($rest,0,8); die "write_afi got $tag_back expected $tag" if $tag_back ne $tag; warn "# SECURITY ", hex_tag($tag), " AFI: $afi"; } elsif ( $rest = _matched $data => '09 06' ) { if ( $retry++ <= $afi_retry ) { # warn "ERROR writing AFI $afi to $tag retry $retry\n"; goto retry; } die "ERROR writing AFI $afi to $tag ", as_hex($data); } else { die "IGNORED ",as_hex($data); } }); warn "INFO: tag $tag AFI $afi retry: $retry\n"; warn "## write_afi ", dump( $tag, $afi ); return $afi; } sub tag_type { 'RFID501' } 1; __END__ =head1 SEE ALSO L Biblio-RFID-0.05/lib/Biblio/RFID/Reader/librfid.pm0000644000175000017500000000724014373155755021123 0ustar dpavlindpavlinpackage Biblio::RFID::Reader::librfid; use warnings; use strict; use base 'Biblio::RFID::Reader::API'; use Biblio::RFID; use Data::Dump qw(dump); =head1 NAME Biblio::RFID::Reader::librfid - execute librfid-tool =head1 DESCRIPTION This is wrapper around C from L Due to limitation of L only L and L is supported. This version uses modidified C which supports new C<-s> flag which reads sectors 0-3 with C<-k> key and sectors 4-7 with key from C<-s> option. However, this code might provide template for integration with any command-line utilities for different RFID readers. Currently tested with only with Omnikey CardMan 5321 which has problems. After a while it stops responding to commands by C so I provided small C program to reset it: C =cut sub serial_settings {} # don't open serial sub init { 1 } sub _grep_tool { my ( $bin, $param, $coderef, $path ) = @_; my $timeout = 3; # s eval { warn "# _grep_tool $bin $param\n"; # $param .= ' 2>/dev/null'; my $pipe_pid = open(my $s, '-|', "$bin $param") || die $!; local $SIG{ALRM} = sub { warn "TIMEOUT!"; kill TERM => $pipe_pid; die "timeout\n" }; alarm $timeout; my $sid; my $iso; while(<$s>) { chomp; warn "## $_\n"; if ( m/Layer 2 success.+\(([^\)]+)\).*:\s+(.+)/ ) { ( $sid, $iso ) = ( $2, $1 ); $sid =~ s/\s*'\s*//g; my @sid = split(/\s+/, $sid); @sid = reverse @sid if $iso =~ m/15693/; $sid = uc join('', @sid); warn "## sid=[$sid] iso=[$iso]\n"; } $coderef->( $sid, $iso ); } alarm(0); close($s); }; # eval if ( $? >> 8 || $@ ) { my $lsusb = `lsusb -d 076b:`; if ( $lsusb =~ m/\S+\s+(\d+)\s+\S+\s+(\d+)/ ) { my $cmd = "usbreset /dev/bus/usb/$1/$2"; warn "# $cmd\n"; system $cmd; } else { warn "can't reset device $lsusb"; } } } my $sid_iso; sub inventory { my @tags; $sid_iso = {}; _grep_tool 'librfid-tool', '--scan' => sub { my ( $sid, $iso ) = @_; if ( $sid && ! exists $sid_iso->{$sid} ) { push @tags, $sid; $sid_iso->{$sid} = $iso; } }; warn "# invetory ",dump(@tags); return @tags; } sub tag_type { my ( $self, $tag ) = @_; return $sid_iso->{$tag} =~ m/15693/ ? 'RFID501' : 'SmartX'; } our $mifare_keys; sub read_mifare_keys { my $key_path = $0; $key_path =~ s{/[^/]+$}{/}; $key_path .= "mifare_keys.pl"; warn "# $key_path"; if ( -e $key_path ) { require $key_path; warn "# mifare keys for sectors ", join(' ', keys %$mifare_keys), " loaded\n"; } } sub read_blocks { my ( $self, $sid ) = @_; my $iso = $sid_iso->{$sid}; my $blocks; if ( $iso =~ m/15693/ ) { _grep_tool 'librfid-tool', '--read -1' => sub { $sid ||= shift; $blocks->{$sid}->[$1] = hex2bytes($2) if m/block\[\s*(\d+):.+data.+:\s*(.+)/; }; } else { read_mifare_keys unless $mifare_keys; =for unmodified mifate-tool foreach my $sector ( keys %$mifare_keys ) { my $key = lc $mifare_keys->{$sector}; _grep_tool 'mifare-tool', "-k $key -r $sector" => sub { $blocks->{$sid}->[$sector] = hex2bytes($1) if m/data=\s*(.+)/; }; } =cut _grep_tool 'mifare-tool', "-k " . $mifare_keys->{0} . " -s " . $mifare_keys->{4} => sub { $blocks->{$sid}->[$1] = hex2bytes($2) if m/page=(\d+).*data=\s*(.+)/; }; my $blocks_read = 0; $blocks_read += $_ foreach grep { defined $blocks->{$sid}->[$_] } ( 4 .. 6 ); if ( $blocks_read < (4 + 5 + 6) ) { warn "# invalidate partial read of SmartX card\n"; $blocks = undef; } } warn "# read_blocks ",dump($blocks); return $blocks; } sub write_blocks {} sub read_afi { -1 } sub write_afi {} 1 Biblio-RFID-0.05/lib/Biblio/RFID/Reader/Serial.pm0000644000175000017500000000467514373155755020740 0ustar dpavlindpavlinpackage Biblio::RFID::Reader::Serial; use warnings; use strict; use Device::SerialPort qw(:STAT); use Biblio::RFID::Reader::INET; use Data::Dump qw(dump); =head1 NAME Biblio::RFID::Reader::Serial - base class for serial or serial over TCP RFID readers =head1 METHODS =head2 new Open serial port (if needed) and init reader =cut sub new { my $class = shift; my $self = {@_}; bless $self, $class; $self->port && return $self; } =head2 port Tries to open usb serial ports C and serial ports C my $serial_obj = $self->port; To try just one device use C environment variable If you want to define serial connection over TCP socket, you have to export enviroment variable C. =cut our $serial_device; sub port { my $self = shift; warn "## port ",dump( $self->{port} ); return $self->{port} if defined $self->{port}; if ( my $tcp = $ENV{RFID_TCP} ) { my $port = Biblio::RFID::Reader::INET->new( PeerAddr => $tcp, Proto => 'tcp' ); warn "## TCP $tcp ", ref($port); $self->{port} = $port; $self->init; return $port; } if ( my $listen = $ENV{RFID_LISTEN} ) { my $server = Biblio::RFID::Reader::INET->new( Proto => 'tcp', LocalAddr => $listen, Listen => SOMAXCONN, Reuse => 1 ); die "can't setup server $listen: $!" unless $server; warn "RFID: waiting for reader connection to $listen"; my $port = $server->accept(); $port->autoflush(1); warn "## LISTEN $listen ", ref($port); $self->{port} = $port; $self->init; return $port; } my $settings = $self->serial_settings; my @devices = $ENV{RFID_DEVICE} ? ( $ENV{RFID_DEVICE} ) : glob '/dev/ttyUSB* /dev/ttyS*'; warn "# port devices ",dump(@devices); foreach my $device ( @devices ) { next if $serial_device->{$device}; if ( my $port = Device::SerialPort->new($device) ) { foreach my $opt ( qw/handshake baudrate databits parity stopbits/ ) { $port->$opt( $settings->{$opt} ); } $self->{port} = $port; warn "# probe by init $device ",ref($self); if ( $self->init ) { warn "init OK ", ref($self), " $device settings ",dump $settings; $serial_device->{$device} = $port; last; } else { $self->{port} = 0; } } } warn "# serial_device ",dump($serial_device); return $self->{port}; } 1 __END__ =head1 SEE ALSO L L L Biblio-RFID-0.05/lib/Biblio/RFID/Reader/INET.pm0000644000175000017500000000243714373155755020252 0ustar dpavlindpavlinpackage Biblio::RFID::Reader::INET; use warnings; use strict; use base 'IO::Socket::INET'; use IO::Socket::INET; use Time::HiRes qw(ualarm); use Data::Dump qw(dump); my $debug = $ENV{DEBUG}; =head1 NAME Biblio::RFID::Reader::INET - emulate serial port over TCP socket =cut sub write { my $self = shift; $self->_check_connected; warn ">> write ",dump(@_) if $debug; my $count = $self->SUPER::print(@_); $self->flush; #warn "XX ",ref($self), " write response: $count ", dump(@_); return $count; } our $read_char_time = 1; sub read_char_time { $read_char_time = $_[1] * 1_000 || 1_000_000 }; sub read_const_time {}; sub read(*\$$;$) { my $self = shift; my $len = shift || die "no length?"; #warn "XX ",ref($self), " read $len timeout $read_char_time"; my $buffer; eval { local $SIG{ALRM} = sub { die "read timeout" }; #warn "## read_serial $len timeout $read_char_time\n"; ualarm $read_char_time; $len = $self->SUPER::read( $buffer, $len ); ualarm 0; }; if ( $@ ) { warn "ERROR: $@"; $len = 0; } $self->_check_connected; warn "<< read $len ",dump($buffer) if $debug; return ( $len, $buffer ); } sub _check_connected { my $self = shift; return if $self->connected; warn "LOST TCP Connection"; exit 1; } 1; __END__ =head1 SEE ALSO L Biblio-RFID-0.05/lib/Biblio/RFID/Reader/API.pm0000644000175000017500000000244314373155755020121 0ustar dpavlindpavlinpackage Biblio::RFID::Reader::API; use warnings; use strict; use Biblio::RFID::RFID501; use Biblio::RFID::SmartX; =head1 NAME Biblio::RFID::Reader::API - low-level RFID reader documentation =cut =head1 MANDATORY METHODS Each reader must implement following hooks as sub-classes. =head2 init $self->init; =head2 inventory my @tags = $self->invetory; =head2 read_blocks my $hash = $self->read_blocks( $tag ); All blocks are under key which is tag UID with array of blocks returned from reader $hash = { 'E000000123456789' => [ 'blk1', 'blk2', ... ] }; L sends tag UID with data payload, so we might expect to receive response from other tags from protocol specification, =head2 write_blocks $self->write_blocks( $tag => $bytes ); $self->write_blocks( $tag => [ 'blk1', 'blk2', ... ] ); =head2 read_afi my $afi = $self->read_afi( $tag ); =head2 write_afi $self->write_afi( $tag => $afi ); =head2 tag_type $self->tag_type( $tag ); =cut sub tag_type { 'RFID501' } =head1 METHODS =head2 new Just calls C in reader implementation so this class can be used as simple stub base class like L does =cut sub new { my $class = shift; my $self = {@_}; bless $self, $class; $self->init && return $self; } 1; Biblio-RFID-0.05/lib/Biblio/RFID/RFID501.pm0000644000175000017500000000704214373155755017260 0ustar dpavlindpavlinpackage Biblio::RFID::RFID501; use warnings; use strict; use Data::Dump qw(dump); =head1 NAME Biblio::RFID::RFID501 - RFID Standard for Libraries =head1 DESCRIPTION This module tries to decode tag format as described in document RFID 501: RFID Standards for Libraries L Goal is to be compatible with existing 3M Alphanumeric tag format which, as far as I know, isn't specificed anywhere. My documentation about this format is available at L =head1 Data model =head2 3M Alphanumeric tag 0 04 is 00 tt i [4 bit] = number of item in set [1 .. i .. s] s [4 bit] = total items in set tt [8 bit] = item type 1 dd dd dd dd dd [16 bytes] = barcode data 2 dd dd dd dd 3 dd dd dd dd 4 dd dd dd dd 5 bb bl ll ll b [12 bit] = branch [unsigned] l [20 bit] = library [unsigned] 6 cc cc cc cc c [32 bit] = custom signed integer =head2 3M Manufacturing Blank 0 55 55 55 55 1 55 55 55 55 2 55 55 55 55 3 55 55 55 55 4 55 55 55 55 5 55 55 55 55 6 00 00 00 00 =head2 Generic blank 0 00 00 00 00 1 00 00 00 00 2 00 00 00 00 =head1 Security AFI byte on RFID tag is used for security. In my case, we have RFID door which can only read AFI bytes from tag and issue alarm sound or ignore it depending on value of byte. =over 8 =item 0xD7 214 secured item (door will beep) =item 0xDA 218 unsecured (door will ignore it) =back =head1 METHODS =head2 to_hash my $hash = Biblio::RFID::Decode::RFID501->to_hash( $bytes ); my $hash = Biblio::RFID::Decode::RFID501->to_hash( [ 'blk1', 'blk2', ... , 'blk7' ] ); =head2 from_hash my $blocks = Biblio::RFID::Decode::RFID->from_hash({ content => "1301234567" }); =head2 blank_3m =head2 blank my $blocks = Biblio::RFID::Decode::RFID->blank; =cut my $item_type = { 1 => 'Book', 6 => 'CD/CD ROM', 2 => 'Magazine', 13 => 'Book with Audio Tape', 9 => 'Book with CD/CD ROM', 0 => 'Other', 5 => 'Video', 4 => 'Audio Tape', 3 => 'Bound Journal', 8 => 'Book with Diskette', 7 => 'Diskette', }; sub to_hash { my ( $self, $data ) = @_; return unless $data; $data = join('', @$data) if ref $data eq 'ARRAY'; if ( length($data) < 24 ) { die "short data from tag ", length($data), " < 24 bytes"; } warn "## to_hash ",dump($data); my ( $u1, $set_item, $u2, $type, $content, $br_lib, $custom, $zero ) = unpack('C4Z16Nl>l',$data); my $hash = { u1 => $u1, # FIXME 0x04 set => ( $set_item & 0xf0 ) >> 4, total => ( $set_item & 0x0f ), u2 => $u2, # FIXME 0x00 type => $type, type_label => $item_type->{$type}, content => $content, branch => $br_lib >> 20, library => $br_lib & 0x000fffff, custom => $custom, }; warn "expected first byte to be 0x04, not $u1\n" if $u1 != 4; warn "expected third byte to be 0x00, not $u2\n" if $u2 != 0; warn "expected last block to be zero, not $zero\n" if $zero != 0; return $hash; } sub from_hash { my ( $self, $hash ) = @_; warn "## from_hash ",dump($hash); $hash->{$_} ||= 0 foreach ( qw( set total type branch library ) ); return pack('C4Z16Nl>l', 0x04, ( $hash->{set} << 4 ) | ( $hash->{total} & 0x0f ), 0x00, $hash->{type}, $hash->{content}, ( $hash->{branch} << 20 ) | ( $hash->{library} & 0x000fffff ), $hash->{custom}, 0x00, ); } sub blank_3m { return ( "\x55" x ( 6 * 4 ) ) . ( "\x00" x 4 ); } sub blank { return "\x00" x ( 4 * 3 ); } 1; Biblio-RFID-0.05/lib/Biblio/RFID/SmartX.pm0000644000175000017500000000176314373155755017530 0ustar dpavlindpavlinpackage Biblio::RFID::SmartX; use warnings; use strict; use Data::Dump qw(dump); =head1 NAME Biblio::RFID::SmartX - Croatian student cards format =head1 METHODS =head2 to_hash my $hash = Biblio::RFID::Decode::SmartX->to_hash( [ 'sector1', 'sector2', ... , 'sector7' ] ); =cut sub bcd { my $data = shift; return join('', map { sprintf("%02x",ord($_)) } split (//, $data)); } sub to_hash { my ( $self, $data ) = @_; return unless $data; die "expecting array of sectors" unless ref $data eq 'ARRAY'; my $decoded; foreach ( 4 .. 6 ) { warn "# $_: ", $decoded->[$_] = bcd( $data->[$_] ); } my $hash; $hash->{SXID} = substr( $decoded->[4], 0, 20 ); $hash->{JMBAG} = substr( $decoded->[4], 22, 10 ); $hash->{OIB} = substr( $decoded->[5], 16, 11 ); $hash->{SPOL} = substr( $data->[5], 14, 1 ); # char, not BCD! $hash->{INST_ID} = substr( $decoded->[6], 0, 12 ); $hash->{CARD_V} = substr( $decoded->[6], 12, 4 ); warn "## hash = ",dump($hash); return $hash; } 1; Biblio-RFID-0.05/lib/Biblio/RFID/Reader.pm0000644000175000017500000001201214373155755017501 0ustar dpavlindpavlinpackage Biblio::RFID::Reader; use warnings; use strict; use Data::Dump qw(dump); use Time::HiRes; use lib 'lib'; use Biblio::RFID; use Carp qw(confess); =head1 NAME Biblio::RFID::Reader - simple way to write RFID applications in perl =head1 DESCRIPTION This module will probe all available readers and use calls from L to invoke correct reader. =head1 FUNCTIONS =head2 new my $rfid = Biblio::RFID::Reader->new( 'optional reader filter' ); =cut sub new { my ( $class, $filter ) = @_; my $self = {}; bless $self, $class; $self->{_readers} = [ $self->_available( $filter ) ]; return $self; } =head2 tags my @visible = $rfid->tags( enter => sub { my $tag = shift; }, leave => sub { my $tag = shift; }, reader => sub { my $reader = shift; ref($reader) =~ m/something/ }, ); =cut sub tags { my $self = shift; my $triggers = {@_}; $self->{_tags} ||= {}; $self->{_tags}->{$_}->{time} = 0 foreach keys %{$self->{_tags}}; my $t = time; foreach my $rfid ( @{ $self->{_readers} } ) { if ( exists $triggers->{reader} ) { if ( ! $triggers->{reader}->($rfid) ) { # invalidate tags from other readers if ( exists $self->{_tags} ) { delete $self->{_tags}->{$_} foreach ( grep { $self->{_tags}->{$_}->{reader} eq ref $rfid } keys %{ $self->{_tags} } ); } next; } } warn "# inventory on $rfid"; my @tags = $rfid->inventory; foreach my $tag ( @tags ) { if ( ! exists $self->{_tags}->{$tag} ) { eval { my $blocks = $rfid->read_blocks($tag); $self->{_tags}->{$tag}->{blocks} = $blocks->{$tag} || die "no $tag in ",dump($blocks); my $afi = $rfid->read_afi($tag); $self->{_tags}->{$tag}->{afi} = $afi; $self->{_tags}->{$tag}->{type} = $rfid->tag_type( $tag ); $self->{_tags}->{$tag}->{reader} = ref $rfid; # save reader info }; if ( $@ ) { warn "ERROR reading $tag: $@\n"; $self->_invalidate_tag( $tag ); next; } $triggers->{enter}->( $tag ) if $triggers->{enter}; } $self->{_tags}->{$tag}->{time} = $t; } } foreach my $tag ( grep { $self->{_tags}->{$_}->{time} == 0 } keys %{ $self->{_tags} } ) { $triggers->{leave}->( $tag ) if $triggers->{leave}; $self->_invalidate_tag( $tag ); } warn "## _tags ",dump( $self->{_tags} ); return grep { $self->{_tags}->{$_}->{time} } keys %{ $self->{_tags} }; } =head2 blocks my $blocks_arrayref = $rfid->blocks( $tag ); =head2 afi my $afi = $rfid->afi( $tag ); =cut sub blocks { $_[0]->{_tags}->{$_[1]}->{ 'blocks' } || confess "no blocks for $_[1]"; }; sub afi { $_[0]->{_tags}->{$_[1]}->{ 'afi' } || confess "no afi for $_[1]"; }; =head2 to_hash $self->to_hash( $tag ); =cut sub to_hash { my ( $self, $tag ) = @_; return unless exists $self->{_tags}->{$tag}; my $type = $self->{_tags}->{$tag}->{type} || confess "can't find type for tag $tag ",dump( $self->{_tags} ); my $decode = 'Biblio::RFID::' . $type; my $hash = $decode->to_hash( $self->blocks( $tag ) ); $hash->{tag_type} = $type; return $hash; } =head2 debug $self->debug(1); # or more =cut sub debug { my ( $self, $level ) = @_; $debug = $level if $level > $debug; warn "debug level $level\n" if $level; } =head2 from_reader my $reader = $self->from_reader( $tag ); =cut sub from_reader { my ( $self, $tag ) = @_; return unless exists $self->{_tags}->{$tag}; my $reader = $self->{_tags}->{$tag}->{reader}; $reader =~ s/^.*:://; # strip module prefix return $reader; } =head1 PRIVATE =head2 _invalidate_tag $rfid->_invalidate_tag( $tag ); =cut sub _invalidate_tag { my ( $self, $tag ) = @_; my @caller = caller(0); warn "## _invalidate_tag caller $caller[0] $caller[1] +$caller[2]\n"; my $old = delete $self->{_tags}->{$tag}; warn "# _invalidate_tag $tag ", dump($old); } =head2 _available Probe each RFID reader supported and returns succefull ones my $rfid_readers = Biblio::RFID::Reader->_available( $regex_filter ); =cut #my @readers = ( '3M810', 'CPRM02', 'librfid' ); my @readers = ( '3M810', 'librfid' ); sub _available { my ( $self, $filter ) = @_; $filter = '' unless defined $filter; warn "# filter: $filter"; my @rfid; foreach my $reader ( @readers ) { next if $filter && $reader !~ /$filter/i; my $module = "Biblio::RFID::Reader::$reader"; eval "use $module"; die $@ if $@; if ( my $rfid = $module->new ) { push @rfid, $rfid; warn "# added $module\n"; } else { warn "# ignored $module\n"; } } die "no readers found" unless @rfid; return @rfid; } =head1 AUTOLOAD On any other function calls, we just marshall to all readers =cut # we don't want DESTROY to fallback into AUTOLOAD sub DESTROY {} our $AUTOLOAD; sub AUTOLOAD { my $self = shift; my $command = $AUTOLOAD; $command =~ s/.*://; my @out; foreach my $r ( @{ $self->{_readers} } ) { push @out, $r->$command(@_); } $self->_invalidate_tag( $_[0] ) if $command =~ m/write/; return @out; } 1 __END__ =head1 SEE ALSO =head2 RFID reader implementations L L L Biblio-RFID-0.05/lib/Biblio/RFID.pm0000644000175000017500000001045014373155755016303 0ustar dpavlindpavlinpackage Biblio::RFID; use warnings; use strict; use base 'Exporter'; our @EXPORT = qw( hex2bytes as_hex hex_tag $debug ); use Data::Dump qw(dump); =head1 NAME Biblio::RFID - perl tools to use different RFID readers for library use =cut our $VERSION = '0.05'; our $debug = $ENV{DEBUG} || 0; =head1 DESCRIPTION Main idea is to develop simple API to reader, and than provide useful abstractions on top of it to quickly write applications to respond on tags which come in range of RFID reader using L. Writing support for new RFID readers should be easy. L provides documentation on writing support for different readers. Currently, two serial RFID readers based on L are implemented: =over 4 =item * L =item * L =back There is also simple read-only reader using shell commands in L. For implementing application take a look at L C is example of such application. It's local interface to RFID reader and JSONP REST server. C is jQuery based JavaScript code which can be inserted in Koha Library System to provide overlay with tags in range and check-in/check-out form-fill functionality. Applications can use L which is some kind of semi-standard 3M layout or blocks on RFID tags. =for readme stop =head1 EXPORT Formatting functions are exported =head2 hex2bytes my $bytes = hex2bytes($hex); =cut sub hex2bytes { my $str = shift || die "no str?"; my $b = $str; $b =~ s/\s+//g; $b =~ s/(..)/\\x$1/g; $b = "\"$b\""; my $bytes = eval $b; die $@ if $@; warn "## str2bytes( $str ) => $b => ",as_hex($bytes) if $debug; return $bytes; } =head2 as_hex print as_hex( $bytes ); =cut sub as_hex { my @out; foreach my $str ( @_ ) { my $hex = uc unpack( 'H*', $str ); $hex =~ s/(..)/$1 /g if length( $str ) > 2; $hex =~ s/\s+$//; push @out, $hex; } return join(' | ', @out); } =head2 hex_tag print hex_tag $8bytes; =cut sub hex_tag { uc(unpack('H16', shift)) } =head1 WARN We are installing L handler to control debug output based on C<$Biblio::RFID::debug> level =cut BEGIN { $SIG{'__WARN__'} = sub { my $msg = join(' ', @_); if ( $msg =~ m/^(#+)/ ) { my $l = length $1; return if $l > $debug; } warn join(' ', @_); } } =for readme continue =head1 HARDWARE SUPPORT =head2 3M 810 L =head2 CPR-M02 L =head2 librfid L =head1 AUTHOR Dobrica Pavlinusic, C<< >> L =head1 BUGS Please report any bugs or feature requests to C, or through the web interface at L. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. =head1 SUPPORT You can find documentation for this module with the perldoc command. perldoc Biblio::RFID perldoc Biblio::RFID::Reader perldoc Biblio::RFID::Reader::API You can also look for information at: =over 4 =item * RT: CPAN's request tracker L =item * AnnoCPAN: Annotated CPAN documentation L =item * CPAN Ratings L =item * Search CPAN L =back =head1 ACKNOWLEDGEMENTS =head1 LICENSE AND COPYRIGHT Copyright 2010 Dobrica Pavlinusic. 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; version 2 dated June, 1991 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. A copy of the GNU General Public License is available in the source tree; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. =cut 1; # End of Biblio::RFID Biblio-RFID-0.05/Changes0000644000175000017500000000063214373155755014547 0ustar dpavlindpavlinRevision history for RFID-Biblio 0.01 Date/time First version, released on an unsuspecting world. 0.02 2010-08-06 Second API revision with RFID::Biblio::Reader as main class 0.03 2010-08-25 Renamed to Biblio::RFID 0.04 2014-04-14 Added support for SmartX (mifare compatibile) cards using librfid 0.05 2023-02-15 improvements to scripts/RFID-JSONP-server.pl added SmartX cards support Biblio-RFID-0.05/Makefile.PL0000644000175000017500000000065314373155755015231 0ustar dpavlindpavlinuse inc::Module::Install; name 'Biblio-RFID'; all_from 'lib/Biblio/RFID.pm'; author q{Dobrica Pavlinusic }; license 'gpl'; requires 'Carp'; requires 'Data::Dump'; requires 'Device::SerialPort'; requires 'Time::HiRes'; requires 'Digest::CRC'; build_requires 'Test::More'; #build_requires 'Module::Install::Repository'; #auto_set_repository; test_requires 'Pod::Readme'; auto_install; WriteAll; Biblio-RFID-0.05/Makefile0000644000175000017500000006644014373155777014731 0ustar dpavlindpavlin# This Makefile is for the Biblio::RFID extension to perl. # # It was generated automatically by MakeMaker version # 7.64 (Revision: 76400) from the contents of # Makefile.PL. Don't edit this file, edit Makefile.PL instead. # # ANY CHANGES MADE HERE WILL BE LOST! # # MakeMaker ARGV: () # # MakeMaker Parameters: # ABSTRACT => q[perl tools to use different RFID readers for library use ] # AUTHOR => [q[Dobrica Pavlinusic, C<< >>, Dobrica Pavlinusic ]] # BUILD_REQUIRES => { ExtUtils::MakeMaker=>q[6.36], Pod::Readme=>q[0], Test::More=>q[0] } # CONFIGURE_REQUIRES => { } # DISTNAME => q[Biblio-RFID] # LICENSE => q[gpl] # NAME => q[Biblio::RFID] # NO_META => q[1] # PREREQ_PM => { Carp=>q[0], Data::Dump=>q[0], Device::SerialPort=>q[0], Digest::CRC=>q[0], ExtUtils::MakeMaker=>q[6.36], Pod::Readme=>q[0], Test::More=>q[0], Time::HiRes=>q[0] } # TEST_REQUIRES => { } # VERSION => q[0.05] # VERSION_FROM => q[lib/Biblio/RFID.pm] # dist => { PREOP=>q[$(PERL) -I. "-MModule::Install::Admin" -e "dist_preop(q($(DISTVNAME)))"] } # realclean => { FILES=>q[MYMETA.yml] } # test => { TESTS=>q[t/00-load.t t/05-RFID501.t t/06-SmartX.t t/10-3M-810.t t/20-CPR-M02.t t/30-librfid.t t/50-Readers.t t/boilerplate.t t/manifest.t t/pod.t t/readme.t] } # --- MakeMaker post_initialize section: # --- MakeMaker const_config section: # These definitions are from config.sh (via /usr/lib/x86_64-linux-gnu/perl-base/Config.pm). # They may have been overridden via Makefile.PL or on the command line. AR = ar CC = x86_64-linux-gnu-gcc CCCDLFLAGS = -fPIC CCDLFLAGS = -Wl,-E CPPRUN = x86_64-linux-gnu-gcc -E DLEXT = so DLSRC = dl_dlopen.xs EXE_EXT = FULL_AR = /usr/bin/ar LD = x86_64-linux-gnu-gcc LDDLFLAGS = -shared -L/usr/local/lib -fstack-protector-strong LDFLAGS = -fstack-protector-strong -L/usr/local/lib LIBC = /lib/x86_64-linux-gnu/libc.so.6 LIB_EXT = .a OBJ_EXT = .o OSNAME = linux OSVERS = 4.19.0 RANLIB = : SITELIBEXP = /usr/local/share/perl/5.36.0 SITEARCHEXP = /usr/local/lib/x86_64-linux-gnu/perl/5.36.0 SO = so VENDORARCHEXP = /usr/lib/x86_64-linux-gnu/perl5/5.36 VENDORLIBEXP = /usr/share/perl5 # --- MakeMaker constants section: AR_STATIC_ARGS = cr DIRFILESEP = / DFSEP = $(DIRFILESEP) NAME = Biblio::RFID NAME_SYM = Biblio_RFID VERSION = 0.05 VERSION_MACRO = VERSION VERSION_SYM = 0_05 DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\" XS_VERSION = 0.05 XS_VERSION_MACRO = XS_VERSION XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\" INST_ARCHLIB = blib/arch INST_SCRIPT = blib/script INST_BIN = blib/bin INST_LIB = blib/lib INST_MAN1DIR = blib/man1 INST_MAN3DIR = blib/man3 MAN1EXT = 1p MAN3EXT = 3pm MAN1SECTION = 1 MAN3SECTION = 3 INSTALLDIRS = site DESTDIR = PREFIX = $(SITEPREFIX) PERLPREFIX = /usr SITEPREFIX = /usr/local VENDORPREFIX = /usr INSTALLPRIVLIB = /usr/share/perl/5.36 DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB) INSTALLSITELIB = /usr/local/share/perl/5.36.0 DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB) INSTALLVENDORLIB = /usr/share/perl5 DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB) INSTALLARCHLIB = /usr/lib/x86_64-linux-gnu/perl/5.36 DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB) INSTALLSITEARCH = /usr/local/lib/x86_64-linux-gnu/perl/5.36.0 DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH) INSTALLVENDORARCH = /usr/lib/x86_64-linux-gnu/perl5/5.36 DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH) INSTALLBIN = /usr/bin DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN) INSTALLSITEBIN = /usr/local/bin DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN) INSTALLVENDORBIN = /usr/bin DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN) INSTALLSCRIPT = /usr/bin DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT) INSTALLSITESCRIPT = /usr/local/bin DESTINSTALLSITESCRIPT = $(DESTDIR)$(INSTALLSITESCRIPT) INSTALLVENDORSCRIPT = /usr/bin DESTINSTALLVENDORSCRIPT = $(DESTDIR)$(INSTALLVENDORSCRIPT) INSTALLMAN1DIR = /usr/share/man/man1 DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR) INSTALLSITEMAN1DIR = /usr/local/man/man1 DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR) INSTALLVENDORMAN1DIR = /usr/share/man/man1 DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR) INSTALLMAN3DIR = /usr/share/man/man3 DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR) INSTALLSITEMAN3DIR = /usr/local/man/man3 DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR) INSTALLVENDORMAN3DIR = /usr/share/man/man3 DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR) PERL_LIB = PERL_ARCHLIB = /usr/lib/x86_64-linux-gnu/perl/5.36 PERL_ARCHLIBDEP = /usr/lib/x86_64-linux-gnu/perl/5.36 LIBPERL_A = libperl.a FIRST_MAKEFILE = Makefile MAKEFILE_OLD = Makefile.old MAKE_APERL_FILE = Makefile.aperl PERLMAINCC = $(CC) PERL_INC = /usr/lib/x86_64-linux-gnu/perl/5.36/CORE PERL_INCDEP = /usr/lib/x86_64-linux-gnu/perl/5.36/CORE PERL = "/usr/bin/perl" "-Iinc" FULLPERL = "/usr/bin/perl" "-Iinc" ABSPERL = $(PERL) PERLRUN = $(PERL) FULLPERLRUN = $(FULLPERL) ABSPERLRUN = $(ABSPERL) PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-Iinc" "-I$(INST_LIB)" FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-Iinc" "-I$(INST_LIB)" ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-Iinc" "-I$(INST_LIB)" PERL_CORE = 0 PERM_DIR = 755 PERM_RW = 644 PERM_RWX = 755 MAKEMAKER = /usr/share/perl/5.36/ExtUtils/MakeMaker.pm MM_VERSION = 7.64 MM_REVISION = 76400 # FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle). # BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle) # PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar) # DLBASE = Basename part of dynamic library. May be just equal BASEEXT. MAKE = make FULLEXT = Biblio/RFID BASEEXT = RFID PARENT_NAME = Biblio DLBASE = $(BASEEXT) VERSION_FROM = lib/Biblio/RFID.pm OBJECT = LDFROM = $(OBJECT) LINKTYPE = dynamic BOOTDEP = # Handy lists of source code files: XS_FILES = C_FILES = O_FILES = H_FILES = MAN1PODS = MAN3PODS = lib/Biblio/RFID.pm \ lib/Biblio/RFID/RFID501.pm \ lib/Biblio/RFID/Reader.pm \ lib/Biblio/RFID/Reader/3M810.pm \ lib/Biblio/RFID/Reader/API.pm \ lib/Biblio/RFID/Reader/CPRM02.pm \ lib/Biblio/RFID/Reader/INET.pm \ lib/Biblio/RFID/Reader/Serial.pm \ lib/Biblio/RFID/Reader/librfid.pm \ lib/Biblio/RFID/SmartX.pm # Where is the Config information that we are using/depend on CONFIGDEP = $(PERL_ARCHLIBDEP)$(DFSEP)Config.pm $(PERL_INCDEP)$(DFSEP)config.h # Where to build things INST_LIBDIR = $(INST_LIB)/Biblio INST_ARCHLIBDIR = $(INST_ARCHLIB)/Biblio INST_AUTODIR = $(INST_LIB)/auto/$(FULLEXT) INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT) INST_STATIC = INST_DYNAMIC = INST_BOOT = # Extra linker info EXPORT_LIST = PERL_ARCHIVE = PERL_ARCHIVEDEP = PERL_ARCHIVE_AFTER = TO_INST_PM = lib/Biblio/RFID.pm \ lib/Biblio/RFID/RFID501.pm \ lib/Biblio/RFID/Reader.pm \ lib/Biblio/RFID/Reader/3M810.pm \ lib/Biblio/RFID/Reader/API.pm \ lib/Biblio/RFID/Reader/CPRM02.pm \ lib/Biblio/RFID/Reader/INET.pm \ lib/Biblio/RFID/Reader/Serial.pm \ lib/Biblio/RFID/Reader/librfid.pm \ lib/Biblio/RFID/SmartX.pm # --- MakeMaker platform_constants section: MM_Unix_VERSION = 7.64 PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc # --- MakeMaker tool_autosplit section: # Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto AUTOSPLITFILE = $(ABSPERLRUN) -e 'use AutoSplit; autosplit($$$$ARGV[0], $$$$ARGV[1], 0, 1, 1)' -- # --- MakeMaker tool_xsubpp section: # --- MakeMaker tools_other section: SHELL = /bin/sh CHMOD = chmod CP = cp MV = mv NOOP = $(TRUE) NOECHO = @ RM_F = rm -f RM_RF = rm -rf TEST_F = test -f TOUCH = touch UMASK_NULL = umask 0 DEV_NULL = > /dev/null 2>&1 MKPATH = $(ABSPERLRUN) -MExtUtils::Command -e 'mkpath' -- EQUALIZE_TIMESTAMP = $(ABSPERLRUN) -MExtUtils::Command -e 'eqtime' -- FALSE = false TRUE = true ECHO = echo ECHO_N = echo -n UNINST = 0 VERBINST = 0 MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install([ from_to => {@ARGV}, verbose => '\''$(VERBINST)'\'', uninstall_shadows => '\''$(UNINST)'\'', dir_mode => '\''$(PERM_DIR)'\'' ]);' -- DOC_INSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'perllocal_install' -- UNINSTALL = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'uninstall' -- WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'warn_if_old_packlist' -- MACROSTART = MACROEND = USEMAKEFILE = -f FIXIN = $(ABSPERLRUN) -MExtUtils::MY -e 'MY->fixin(shift)' -- CP_NONEMPTY = $(ABSPERLRUN) -MExtUtils::Command::MM -e 'cp_nonempty' -- # --- MakeMaker makemakerdflt section: makemakerdflt : all $(NOECHO) $(NOOP) # --- MakeMaker dist section: TAR = tar TARFLAGS = cvf ZIP = zip ZIPFLAGS = -r COMPRESS = gzip --best SUFFIX = .gz SHAR = shar PREOP = $(PERL) -I. "-MModule::Install::Admin" -e "dist_preop(q($(DISTVNAME)))" POSTOP = $(NOECHO) $(NOOP) TO_UNIX = $(NOECHO) $(NOOP) CI = ci -u RCS_LABEL = rcs -Nv$(VERSION_SYM): -q DIST_CP = best DIST_DEFAULT = tardist DISTNAME = Biblio-RFID DISTVNAME = Biblio-RFID-0.05 # --- MakeMaker macro section: # --- MakeMaker depend section: # --- MakeMaker cflags section: # --- MakeMaker const_loadlibs section: # --- MakeMaker const_cccmd section: # --- MakeMaker post_constants section: # --- MakeMaker pasthru section: PASTHRU = LIBPERL_A="$(LIBPERL_A)"\ LINKTYPE="$(LINKTYPE)"\ LD="$(LD)"\ PREFIX="$(PREFIX)"\ PASTHRU_DEFINE='$(DEFINE) $(PASTHRU_DEFINE)'\ PASTHRU_INC='$(INC) $(PASTHRU_INC)' # --- MakeMaker special_targets section: .SUFFIXES : .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT) .PHONY: all config static dynamic test linkext manifest blibdirs clean realclean disttest distdir pure_all subdirs clean_subdirs makemakerdflt manifypods realclean_subdirs subdirs_dynamic subdirs_pure_nolink subdirs_static subdirs-test_dynamic subdirs-test_static test_dynamic test_static # --- MakeMaker c_o section: # --- MakeMaker xs_c section: # --- MakeMaker xs_o section: # --- MakeMaker top_targets section: all :: pure_all manifypods $(NOECHO) $(NOOP) pure_all :: config pm_to_blib subdirs linkext $(NOECHO) $(NOOP) subdirs :: $(MYEXTLIB) $(NOECHO) $(NOOP) config :: $(FIRST_MAKEFILE) blibdirs $(NOECHO) $(NOOP) help : perldoc ExtUtils::MakeMaker # --- MakeMaker blibdirs section: blibdirs : $(INST_LIBDIR)$(DFSEP).exists $(INST_ARCHLIB)$(DFSEP).exists $(INST_AUTODIR)$(DFSEP).exists $(INST_ARCHAUTODIR)$(DFSEP).exists $(INST_BIN)$(DFSEP).exists $(INST_SCRIPT)$(DFSEP).exists $(INST_MAN1DIR)$(DFSEP).exists $(INST_MAN3DIR)$(DFSEP).exists $(NOECHO) $(NOOP) # Backwards compat with 6.18 through 6.25 blibdirs.ts : blibdirs $(NOECHO) $(NOOP) $(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL $(NOECHO) $(MKPATH) $(INST_LIBDIR) $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_LIBDIR) $(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists $(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL $(NOECHO) $(MKPATH) $(INST_ARCHLIB) $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHLIB) $(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists $(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL $(NOECHO) $(MKPATH) $(INST_AUTODIR) $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_AUTODIR) $(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists $(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL $(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR) $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_ARCHAUTODIR) $(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists $(INST_BIN)$(DFSEP).exists :: Makefile.PL $(NOECHO) $(MKPATH) $(INST_BIN) $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_BIN) $(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists $(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL $(NOECHO) $(MKPATH) $(INST_SCRIPT) $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_SCRIPT) $(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists $(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL $(NOECHO) $(MKPATH) $(INST_MAN1DIR) $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN1DIR) $(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists $(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL $(NOECHO) $(MKPATH) $(INST_MAN3DIR) $(NOECHO) $(CHMOD) $(PERM_DIR) $(INST_MAN3DIR) $(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists # --- MakeMaker linkext section: linkext :: dynamic $(NOECHO) $(NOOP) # --- MakeMaker dlsyms section: # --- MakeMaker dynamic_bs section: BOOTSTRAP = # --- MakeMaker dynamic section: dynamic :: $(FIRST_MAKEFILE) config $(INST_BOOT) $(INST_DYNAMIC) $(NOECHO) $(NOOP) # --- MakeMaker dynamic_lib section: # --- MakeMaker static section: ## $(INST_PM) has been moved to the all: target. ## It remains here for awhile to allow for old usage: "make static" static :: $(FIRST_MAKEFILE) $(INST_STATIC) $(NOECHO) $(NOOP) # --- MakeMaker static_lib section: # --- MakeMaker manifypods section: POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--" POD2MAN = $(POD2MAN_EXE) manifypods : pure_all config \ lib/Biblio/RFID.pm \ lib/Biblio/RFID/RFID501.pm \ lib/Biblio/RFID/Reader.pm \ lib/Biblio/RFID/Reader/3M810.pm \ lib/Biblio/RFID/Reader/API.pm \ lib/Biblio/RFID/Reader/CPRM02.pm \ lib/Biblio/RFID/Reader/INET.pm \ lib/Biblio/RFID/Reader/Serial.pm \ lib/Biblio/RFID/Reader/librfid.pm \ lib/Biblio/RFID/SmartX.pm $(NOECHO) $(POD2MAN) --section=$(MAN3EXT) --perm_rw=$(PERM_RW) -u \ lib/Biblio/RFID.pm $(INST_MAN3DIR)/Biblio::RFID.$(MAN3EXT) \ lib/Biblio/RFID/RFID501.pm $(INST_MAN3DIR)/Biblio::RFID::RFID501.$(MAN3EXT) \ lib/Biblio/RFID/Reader.pm $(INST_MAN3DIR)/Biblio::RFID::Reader.$(MAN3EXT) \ lib/Biblio/RFID/Reader/3M810.pm $(INST_MAN3DIR)/Biblio::RFID::Reader::3M810.$(MAN3EXT) \ lib/Biblio/RFID/Reader/API.pm $(INST_MAN3DIR)/Biblio::RFID::Reader::API.$(MAN3EXT) \ lib/Biblio/RFID/Reader/CPRM02.pm $(INST_MAN3DIR)/Biblio::RFID::Reader::CPRM02.$(MAN3EXT) \ lib/Biblio/RFID/Reader/INET.pm $(INST_MAN3DIR)/Biblio::RFID::Reader::INET.$(MAN3EXT) \ lib/Biblio/RFID/Reader/Serial.pm $(INST_MAN3DIR)/Biblio::RFID::Reader::Serial.$(MAN3EXT) \ lib/Biblio/RFID/Reader/librfid.pm $(INST_MAN3DIR)/Biblio::RFID::Reader::librfid.$(MAN3EXT) \ lib/Biblio/RFID/SmartX.pm $(INST_MAN3DIR)/Biblio::RFID::SmartX.$(MAN3EXT) # --- MakeMaker processPL section: # --- MakeMaker installbin section: # --- MakeMaker subdirs section: # none # --- MakeMaker clean_subdirs section: clean_subdirs : $(NOECHO) $(NOOP) # --- MakeMaker clean section: # Delete temporary files but do not touch installed files. We don't delete # the Makefile here so a later make realclean still has a makefile to use. clean :: clean_subdirs - $(RM_F) \ $(BASEEXT).bso $(BASEEXT).def \ $(BASEEXT).exp $(BASEEXT).x \ $(BOOTSTRAP) $(INST_ARCHAUTODIR)/extralibs.all \ $(INST_ARCHAUTODIR)/extralibs.ld $(MAKE_APERL_FILE) \ *$(LIB_EXT) *$(OBJ_EXT) \ *perl.core MYMETA.json \ MYMETA.yml blibdirs.ts \ core core.*perl.*.? \ core.[0-9] core.[0-9][0-9] \ core.[0-9][0-9][0-9] core.[0-9][0-9][0-9][0-9] \ core.[0-9][0-9][0-9][0-9][0-9] lib$(BASEEXT).def \ mon.out perl \ perl$(EXE_EXT) perl.exe \ perlmain.c pm_to_blib \ pm_to_blib.ts so_locations \ tmon.out - $(RM_RF) \ blib $(NOECHO) $(RM_F) $(MAKEFILE_OLD) - $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) $(DEV_NULL) # --- MakeMaker realclean_subdirs section: # so clean is forced to complete before realclean_subdirs runs realclean_subdirs : clean $(NOECHO) $(NOOP) # --- MakeMaker realclean section: # Delete temporary files (via clean) and also delete dist files realclean purge :: realclean_subdirs - $(RM_F) \ $(FIRST_MAKEFILE) $(MAKEFILE_OLD) - $(RM_RF) \ $(DISTVNAME) MYMETA.yml # --- MakeMaker metafile section: metafile : $(NOECHO) $(NOOP) # --- MakeMaker signature section: signature : cpansign -s # --- MakeMaker dist_basics section: distclean :: realclean distcheck $(NOECHO) $(NOOP) distcheck : $(PERLRUN) "-MExtUtils::Manifest=fullcheck" -e fullcheck skipcheck : $(PERLRUN) "-MExtUtils::Manifest=skipcheck" -e skipcheck manifest : $(PERLRUN) "-MExtUtils::Manifest=mkmanifest" -e mkmanifest veryclean : realclean $(RM_F) *~ */*~ *.orig */*.orig *.bak */*.bak *.old */*.old # --- MakeMaker dist_core section: dist : $(DIST_DEFAULT) $(FIRST_MAKEFILE) $(NOECHO) $(ABSPERLRUN) -l -e 'print '\''Warning: Makefile possibly out of date with $(VERSION_FROM)'\''' \ -e ' if -e '\''$(VERSION_FROM)'\'' and -M '\''$(VERSION_FROM)'\'' < -M '\''$(FIRST_MAKEFILE)'\'';' -- tardist : $(DISTVNAME).tar$(SUFFIX) $(NOECHO) $(NOOP) uutardist : $(DISTVNAME).tar$(SUFFIX) uuencode $(DISTVNAME).tar$(SUFFIX) $(DISTVNAME).tar$(SUFFIX) > $(DISTVNAME).tar$(SUFFIX)_uu $(NOECHO) $(ECHO) 'Created $(DISTVNAME).tar$(SUFFIX)_uu' $(DISTVNAME).tar$(SUFFIX) : distdir $(PREOP) $(TO_UNIX) $(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME) $(RM_RF) $(DISTVNAME) $(COMPRESS) $(DISTVNAME).tar $(NOECHO) $(ECHO) 'Created $(DISTVNAME).tar$(SUFFIX)' $(POSTOP) zipdist : $(DISTVNAME).zip $(NOECHO) $(NOOP) $(DISTVNAME).zip : distdir $(PREOP) $(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME) $(RM_RF) $(DISTVNAME) $(NOECHO) $(ECHO) 'Created $(DISTVNAME).zip' $(POSTOP) shdist : distdir $(PREOP) $(SHAR) $(DISTVNAME) > $(DISTVNAME).shar $(RM_RF) $(DISTVNAME) $(NOECHO) $(ECHO) 'Created $(DISTVNAME).shar' $(POSTOP) # --- MakeMaker distdir section: create_distdir : $(RM_RF) $(DISTVNAME) $(PERLRUN) "-MExtUtils::Manifest=manicopy,maniread" \ -e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');" distdir : create_distdir $(NOECHO) $(NOOP) # --- MakeMaker dist_test section: disttest : distdir cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL cd $(DISTVNAME) && $(MAKE) $(PASTHRU) cd $(DISTVNAME) && $(MAKE) test $(PASTHRU) # --- MakeMaker dist_ci section: ci : $(ABSPERLRUN) -MExtUtils::Manifest=maniread -e '@all = sort keys %{ maniread() };' \ -e 'print(qq{Executing $(CI) @all\n});' \ -e 'system(qq{$(CI) @all}) == 0 or die $$!;' \ -e 'print(qq{Executing $(RCS_LABEL) ...\n});' \ -e 'system(qq{$(RCS_LABEL) @all}) == 0 or die $$!;' -- # --- MakeMaker distmeta section: distmeta : create_distdir metafile $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'exit unless -e q{META.yml};' \ -e 'eval { maniadd({q{META.yml} => q{Module YAML meta-data (added by MakeMaker)}}) }' \ -e ' or die "Could not add META.yml to MANIFEST: $${'\''@'\''}"' -- $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'exit unless -f q{META.json};' \ -e 'eval { maniadd({q{META.json} => q{Module JSON meta-data (added by MakeMaker)}}) }' \ -e ' or die "Could not add META.json to MANIFEST: $${'\''@'\''}"' -- # --- MakeMaker distsignature section: distsignature : distmeta $(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{SIGNATURE} => q{Public-key signature (added by MakeMaker)}}) }' \ -e ' or die "Could not add SIGNATURE to MANIFEST: $${'\''@'\''}"' -- $(NOECHO) cd $(DISTVNAME) && $(TOUCH) SIGNATURE cd $(DISTVNAME) && cpansign -s # --- MakeMaker install section: install :: pure_install doc_install $(NOECHO) $(NOOP) install_perl :: pure_perl_install doc_perl_install $(NOECHO) $(NOOP) install_site :: pure_site_install doc_site_install $(NOECHO) $(NOOP) install_vendor :: pure_vendor_install doc_vendor_install $(NOECHO) $(NOOP) pure_install :: pure_$(INSTALLDIRS)_install $(NOECHO) $(NOOP) doc_install :: doc_$(INSTALLDIRS)_install $(NOECHO) $(NOOP) pure__install : pure_site_install $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site doc__install : doc_site_install $(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site pure_perl_install :: all $(NOECHO) umask 022; $(MOD_INSTALL) \ "$(INST_LIB)" "$(DESTINSTALLPRIVLIB)" \ "$(INST_ARCHLIB)" "$(DESTINSTALLARCHLIB)" \ "$(INST_BIN)" "$(DESTINSTALLBIN)" \ "$(INST_SCRIPT)" "$(DESTINSTALLSCRIPT)" \ "$(INST_MAN1DIR)" "$(DESTINSTALLMAN1DIR)" \ "$(INST_MAN3DIR)" "$(DESTINSTALLMAN3DIR)" $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ "$(SITEARCHEXP)/auto/$(FULLEXT)" pure_site_install :: all $(NOECHO) umask 02; $(MOD_INSTALL) \ read "$(SITEARCHEXP)/auto/$(FULLEXT)/.packlist" \ write "$(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist" \ "$(INST_LIB)" "$(DESTINSTALLSITELIB)" \ "$(INST_ARCHLIB)" "$(DESTINSTALLSITEARCH)" \ "$(INST_BIN)" "$(DESTINSTALLSITEBIN)" \ "$(INST_SCRIPT)" "$(DESTINSTALLSITESCRIPT)" \ "$(INST_MAN1DIR)" "$(DESTINSTALLSITEMAN1DIR)" \ "$(INST_MAN3DIR)" "$(DESTINSTALLSITEMAN3DIR)" $(NOECHO) $(WARN_IF_OLD_PACKLIST) \ "$(PERL_ARCHLIB)/auto/$(FULLEXT)" pure_vendor_install :: all $(NOECHO) umask 022; $(MOD_INSTALL) \ "$(INST_LIB)" "$(DESTINSTALLVENDORLIB)" \ "$(INST_ARCHLIB)" "$(DESTINSTALLVENDORARCH)" \ "$(INST_BIN)" "$(DESTINSTALLVENDORBIN)" \ "$(INST_SCRIPT)" "$(DESTINSTALLVENDORSCRIPT)" \ "$(INST_MAN1DIR)" "$(DESTINSTALLVENDORMAN1DIR)" \ "$(INST_MAN3DIR)" "$(DESTINSTALLVENDORMAN3DIR)" doc_perl_install :: all doc_site_install :: all $(NOECHO) $(ECHO) Appending installation info to "$(DESTINSTALLSITEARCH)/perllocal.pod" -$(NOECHO) umask 02; $(MKPATH) "$(DESTINSTALLSITEARCH)" -$(NOECHO) umask 02; $(DOC_INSTALL) \ "Module" "$(NAME)" \ "installed into" "$(INSTALLSITELIB)" \ LINKTYPE "$(LINKTYPE)" \ VERSION "$(VERSION)" \ EXE_FILES "$(EXE_FILES)" \ >> "$(DESTINSTALLSITEARCH)/perllocal.pod" doc_vendor_install :: all uninstall :: uninstall_from_$(INSTALLDIRS)dirs $(NOECHO) $(NOOP) uninstall_from_perldirs :: uninstall_from_sitedirs :: $(NOECHO) $(UNINSTALL) "$(SITEARCHEXP)/auto/$(FULLEXT)/.packlist" uninstall_from_vendordirs :: # --- MakeMaker force section: # Phony target to force checking subdirectories. FORCE : $(NOECHO) $(NOOP) # --- MakeMaker perldepend section: # --- MakeMaker makefile section: # We take a very conservative approach here, but it's worth it. # We move Makefile to Makefile.old here to avoid gnu make looping. $(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP) $(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?" $(NOECHO) $(ECHO) "Cleaning current config before rebuilding Makefile..." -$(NOECHO) $(RM_F) $(MAKEFILE_OLD) -$(NOECHO) $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) - $(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) clean $(DEV_NULL) $(PERLRUN) Makefile.PL $(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <==" $(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command. <==" $(FALSE) # --- MakeMaker staticmake section: # --- MakeMaker makeaperl section --- MAP_TARGET = perl FULLPERL = "/usr/bin/perl" MAP_PERLINC = "-Iblib/arch" "-Iblib/lib" "-I/usr/lib/x86_64-linux-gnu/perl/5.36" "-I/usr/share/perl/5.36" $(MAP_TARGET) :: $(MAKE_APERL_FILE) $(MAKE) $(USEMAKEFILE) $(MAKE_APERL_FILE) $@ $(MAKE_APERL_FILE) : static $(FIRST_MAKEFILE) pm_to_blib $(NOECHO) $(ECHO) Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET) $(NOECHO) $(PERLRUNINST) \ Makefile.PL DIR="" \ MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \ MAKEAPERL=1 NORECURS=1 CCCDLFLAGS= # --- MakeMaker test section: TEST_VERBOSE=0 TEST_TYPE=test_$(LINKTYPE) TEST_FILE = test.pl TEST_FILES = t/00-load.t t/05-RFID501.t t/06-SmartX.t t/10-3M-810.t t/20-CPR-M02.t t/30-librfid.t t/50-Readers.t t/boilerplate.t t/manifest.t t/pod.t t/readme.t TESTDB_SW = -d testdb :: testdb_$(LINKTYPE) $(NOECHO) $(NOOP) test :: $(TEST_TYPE) $(NOECHO) $(NOOP) # Occasionally we may face this degenerate target: test_ : test_dynamic $(NOECHO) $(NOOP) subdirs-test_dynamic :: dynamic pure_all test_dynamic :: subdirs-test_dynamic PERL_DL_NONLAZY=1 $(FULLPERLRUN) "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness($(TEST_VERBOSE), 'inc', '$(INST_LIB)', '$(INST_ARCHLIB)')" $(TEST_FILES) testdb_dynamic :: dynamic pure_all PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-Iinc" "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE) subdirs-test_static :: static pure_all test_static :: subdirs-test_static PERL_DL_NONLAZY=1 $(FULLPERLRUN) "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" $(TEST_FILES) testdb_static :: static pure_all PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-Iinc" "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE) # --- MakeMaker ppd section: # Creates a PPD (Perl Package Description) for a binary distribution. ppd : $(NOECHO) $(ECHO) '' > Biblio-RFID.ppd $(NOECHO) $(ECHO) ' perl tools to use different RFID readers for library use ' >> Biblio-RFID.ppd $(NOECHO) $(ECHO) ' Dobrica Pavlinusic, C<< <dpavlin at rot13.org> >>, Dobrica Pavlinusic <dpavlin@rot13.org>' >> Biblio-RFID.ppd $(NOECHO) $(ECHO) ' ' >> Biblio-RFID.ppd $(NOECHO) $(ECHO) ' ' >> Biblio-RFID.ppd $(NOECHO) $(ECHO) ' ' >> Biblio-RFID.ppd $(NOECHO) $(ECHO) ' ' >> Biblio-RFID.ppd $(NOECHO) $(ECHO) ' ' >> Biblio-RFID.ppd $(NOECHO) $(ECHO) ' ' >> Biblio-RFID.ppd $(NOECHO) $(ECHO) ' ' >> Biblio-RFID.ppd $(NOECHO) $(ECHO) ' ' >> Biblio-RFID.ppd $(NOECHO) $(ECHO) ' ' >> Biblio-RFID.ppd $(NOECHO) $(ECHO) '' >> Biblio-RFID.ppd # --- MakeMaker pm_to_blib section: pm_to_blib : $(FIRST_MAKEFILE) $(TO_INST_PM) $(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', q[$(PM_FILTER)], '\''$(PERM_DIR)'\'')' -- \ 'lib/Biblio/RFID.pm' 'blib/lib/Biblio/RFID.pm' \ 'lib/Biblio/RFID/RFID501.pm' 'blib/lib/Biblio/RFID/RFID501.pm' \ 'lib/Biblio/RFID/Reader.pm' 'blib/lib/Biblio/RFID/Reader.pm' \ 'lib/Biblio/RFID/Reader/3M810.pm' 'blib/lib/Biblio/RFID/Reader/3M810.pm' \ 'lib/Biblio/RFID/Reader/API.pm' 'blib/lib/Biblio/RFID/Reader/API.pm' \ 'lib/Biblio/RFID/Reader/CPRM02.pm' 'blib/lib/Biblio/RFID/Reader/CPRM02.pm' \ 'lib/Biblio/RFID/Reader/INET.pm' 'blib/lib/Biblio/RFID/Reader/INET.pm' \ 'lib/Biblio/RFID/Reader/Serial.pm' 'blib/lib/Biblio/RFID/Reader/Serial.pm' \ 'lib/Biblio/RFID/Reader/librfid.pm' 'blib/lib/Biblio/RFID/Reader/librfid.pm' \ 'lib/Biblio/RFID/SmartX.pm' 'blib/lib/Biblio/RFID/SmartX.pm' $(NOECHO) $(TOUCH) pm_to_blib # --- MakeMaker selfdocument section: # here so even if top_targets is overridden, these will still be defined # gmake will silently still work if any are .PHONY-ed but nmake won't static :: $(NOECHO) $(NOOP) dynamic :: $(NOECHO) $(NOOP) config :: $(NOECHO) $(NOOP) # --- MakeMaker postamble section: # End. # Postamble by Module::Install 1.19 # --- Module::Install::Admin::Makefile section: realclean purge :: $(RM_F) $(DISTVNAME).tar$(SUFFIX) $(RM_F) MANIFEST.bak _build $(PERL) "-Ilib" "-MModule::Install::Admin" -e "remove_meta()" $(RM_RF) inc reset :: purge upload :: test dist cpan-upload -verbose $(DISTVNAME).tar$(SUFFIX) grok :: perldoc Module::Install distsign :: cpansign -s # --- Module::Install::AutoInstall section: config :: installdeps $(NOECHO) $(NOOP) checkdeps :: $(PERL) Makefile.PL --checkdeps installdeps :: $(NOECHO) $(NOOP) installdeps_notest :: $(NOECHO) $(NOOP) upgradedeps :: $(PERL) Makefile.PL --config= --upgradedeps=Test::More,0,Pod::Readme,0,Carp,0,Data::Dump,0,Device::SerialPort,0,Time::HiRes,0,Digest::CRC,0 upgradedeps_notest :: $(PERL) Makefile.PL --config=notest,1 --upgradedeps=Test::More,0,Pod::Readme,0,Carp,0,Data::Dump,0,Device::SerialPort,0,Time::HiRes,0,Digest::CRC,0 listdeps :: @$(PERL) -le "print for @ARGV" listalldeps :: @$(PERL) -le "print for @ARGV" Test::More Pod::Readme Carp Data::Dump Device::SerialPort Time::HiRes Digest::CRC Biblio-RFID-0.05/scripts/0000755000175000017500000000000014373156607014737 5ustar dpavlindpavlinBiblio-RFID-0.05/scripts/RFID-JSONP-server.pl0000755000175000017500000003062514373155755020227 0ustar dpavlindpavlin#!/usr/bin/perl =head1 NAME RFID-JSONP-server - simpliest possible JSONP server which provides local web interface to RFID readers =head1 USAGE ./scripts/RFID-JSONP-server.pl [--debug] [--listen=127.0.0.1:9000] [--reader=filter] =cut use strict; use warnings; use Data::Dump qw/dump/; use JSON::XS; use IO::Socket::INET; use LWP::UserAgent; use URI; use URI::Escape; use POSIX qw(strftime); use Encode; my $debug = 0; my $listen = $ENV{HTTP_LISTEN} || 'localhost:9000'; my $reader; my $koha_url = $ENV{KOHA_URL}; warn "$koha_url"; # internal URL so we can find local address of machine and vmware NAT my $rfid_url = $ENV{RFID_URL}; my $sip2 = { server => $ENV{SIP2_SERVER}, # '10.60.0.11:6002' must be IP! user => $ENV{SIP2_USER}, password => $ENV{SIP2_PASSWORD}, loc => $ENV{SIP2_LOC}, }; my $afi = { secure => 0xDA, unsecure => 0xD7, }; use Getopt::Long; GetOptions( 'debug!' => \$debug, 'listen=s', => \$listen, 'reader=s', => \$reader, ) || die $!; die "need KOHA_URL, eg. http://ffzg.koha-dev.rot13.org:8080" unless $koha_url; our $rfid_sid_cache; sub rfid_borrower { my $hash = shift; if ( my $json = $rfid_sid_cache->{ $hash->{sid} } ) { return $json; } my $ua = LWP::UserAgent->new; my $url = URI->new( $koha_url . '/cgi-bin/koha/ffzg/rfid/borrower.pl'); $url->query_form( RFID_SID => $hash->{sid} , OIB => $hash->{OIB} , JMBAG => $hash->{JMBAG} ); warn "GET ",$url->as_string; my $response = $ua->get($url); if ( $response->is_success ) { my $json = decode_json $response->decoded_content; $rfid_sid_cache->{ $hash->{sid} } = $json; return $json; } else { warn "ERROR ", $response->status_line; } } sub sip2_socket { return $sip2->{sock} if exists $sip2->{sock} && $sip2->{sock}->connected; if ( my $server = $sip2->{server} ) { my $sock = $sip2->{sock} = IO::Socket::INET->new( $server ) || die "can't connect to $server: $!"; warn "SIP2 server ", $sock->peerhost, ":", $sock->peerport, "\n"; # login if ( sip2_message("9300CN$sip2->{user}|CO$sip2->{password}|")->{fixed} !~ m/^941/ ) { die "SIP2 login failed"; } } return $sip2->{sock}; } sub sip2_message { my $send = shift; my $retry = 0; send_again: my $sock = sip2_socket || die "no sip2 socket"; local $/ = "\r"; $send .= "\r" unless $send =~ m/\r$/; $send .= "\n" unless $send =~ m/\n$/; warn "SIP2 >>>> ",dump($send), "\n"; print $sock $send; $sock->flush; my $expect = substr($send,0,2) | 0x01; my $in = <$sock>; warn "SIP2 <<<< ",dump($in), "\n"; $in =~ s/^\n//; $in =~ s/\r$//; if ( ! $in ) { $retry++; warn "empty read from SIP server, retry: $retry\n"; if ( $retry < 10 ) { close( $sip2->{sock} ); goto send_again; } die "aborted"; } die "expected $expect" unless substr($in,0,2) != $expect; my $hash; if ( $in =~ s/^([0-9\s\w]+)// ) { $hash->{fixed} = $1; } foreach ( split(/\|/, $in ) ) { my ( $f, $v ) = ( $1, $2 ) if m/([A-Z]{2})(.+)/; $hash->{$f} = decode('utf-8',$v); } warn "# sip2 hash response ",dump($hash); return $hash; } use lib 'lib'; use Biblio::RFID::RFID501; use Biblio::RFID::Reader; my $rfid = Biblio::RFID::Reader->new( shift @ARGV ); $rfid->debug( $debug ); my $index_html; { local $/ = undef; $index_html = ; $index_html =~ s{http://koha.example.com:8080}{$koha_url}sg; } my $server_url; sub http_server { my $server = IO::Socket::INET->new( Proto => 'tcp', LocalAddr => $listen, Listen => SOMAXCONN, Reuse => 1 ); die "can't setup server: $!" unless $server; $server_url = 'http://' . $listen; print "Server $0 ready at $server_url\n"; while (my $client = $server->accept()) { eval { # don't die inside here! $client->autoflush(1); my $request = <$client>; warn "WEB << $request\n" if $debug; my $path; if ($request =~ m{^GET (/.*) HTTP/1.[01]}) { my $method = $1; my $param; if ( $method =~ s{\?(.+)}{} ) { foreach my $p ( split(/[&;]/, $1) ) { my ($n,$v) = split(/=/, $p, 2); $param->{$n} = $v; } warn "WEB << param: ",dump( $param ) if $debug; } $path = $method; if ( $path eq '/' ) { print $client "HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n$index_html"; } elsif ( $path =~ m{^/(examples/.+)} ) { $path = $1; # FIXME prefix with dir for installation my $size = -s $path; warn "static $path $size bytes\n"; my $content_type = 'text/plain'; $content_type = 'application/javascript' if $path =~ /\.js$/; $content_type = 'text/html' if $path =~ /\.html$/; print $client "HTTP/1.0 200 OK\r\nContent-Type: $content_type\r\nContent-Length: $size\r\n\r\n"; { local $/ = undef; open(my $fh, '<', $path) || die "can't open $path: $!"; while(<$fh>) { print $client $_; } close($fh); } } elsif ( $method =~ m{/scan(/only/(.+))?} ) { my $only = $2; my @tags = $rfid->tags( reader => sub { my $reader = shift; return 1 unless $only; if ( ref($reader) =~ m/$only/i ) { return 1; } return 0; }); my $json = { time => time() }; foreach my $tag ( @tags ) { my $hash = $rfid->to_hash( $tag ); $hash->{sid} = $tag; $hash->{reader} = $rfid->from_reader( $tag ); if ( $hash->{tag_type} eq 'SmartX' ) { my $borrower = rfid_borrower $hash; if ( exists $borrower->{error} ) { warn "ERROR ", dump($borrower); } else { $hash->{borrower} = $borrower->{borrower}; $hash->{content} = $borrower->{borrower}->{cardnumber}; # compatibile with 3M tags } } else { $hash->{security} = uc unpack 'H*', $rfid->afi( $tag ); } push @{ $json->{tags} }, $hash; }; warn "#### ", encode_json($json); print $client "HTTP/1.0 200 OK\r\nContent-Type: application/json\r\n\r\n", $param->{callback}, "(", encode_json($json), ")\r\n"; } elsif ( $method =~ m{/program} ) { my $status = 501; # Not implementd foreach my $p ( keys %$param ) { next unless $p =~ m/^(E[0-9A-F]{15})$/; my $tag = $1; my $content = Biblio::RFID::RFID501->from_hash({ content => $param->{$p} }); $content = Biblio::RFID::RFID501->blank if $param->{$p} eq 'blank'; $status = 302; warn "PROGRAM $tag $content\n"; $rfid->write_blocks( $tag => $content ); $rfid->write_afi( $tag => chr( $param->{$p} =~ /^130/ ? $afi->{secure} : $afi->{unsecure} ) ); } print $client "HTTP/1.0 $status $method\r\nLocation: $server_url\r\n\r\n"; } elsif ( $method =~ m{/secure(.js)} ) { my $json = $1; my $status = 501; # Not implementd foreach my $p ( keys %$param ) { next unless $p =~ m/^(E[0-9A-F]{15})$/; my $tag = $1; my $data = $param->{$p}; $status = 302; warn "SECURE $tag $data\n"; $rfid->write_afi( $tag => chr(hex($data)) ); } if ( $json ) { print $client "HTTP/1.0 200 OK\r\nContent-Type: application/json\r\n\r\n", $param->{callback}, "({ ok: 1 })\r\n"; } else { print $client "HTTP/1.0 $status $method\r\nLocation: $server_url\r\n\r\n"; } } elsif ( $method =~ m{/sip2/(\w+)/(.+)} ) { my ( $method, $args ) = ( $1, $2 ); warn "SIP2: $method [$args]"; my $ts = strftime('%Y%m%d %H%M%S', localtime()); my $loc = $sip2->{loc} || die "missing sip->{loc}"; my $password = $sip2->{password} || die "missing sip->{password}"; my $hash; if ( $method eq 'patron_info' ) { my $patron = $args; $hash = sip2_message("63000${ts} AO$loc|AA$patron|AC$password|"); } elsif ( $method eq 'checkout' ) { my ($patron,$barcode,$sid) = split(/\//, $args, 3); $hash = sip2_message("11YN${ts} AO$loc|AA$patron|AB$barcode|AC$password|BON|BIN|"); if ( substr( $hash->{fixed}, 2, 1 ) == 1 ) { $rfid->write_afi( $sid => chr( $afi->{unsecure} ) ); } } elsif ( $method eq 'checkin' ) { my ($patron,$barcode,$sid) = split(/\//, $args, 3); $hash = sip2_message("09N${ts}${ts}AP|AO${loc}|AB$barcode|AC|BIN|"); if ( substr( $hash->{fixed}, 2, 1 ) == 1 ) { $rfid->write_afi( $sid => chr( $afi->{secure} ) ); } } else { print $client "HTTP/1.0 501 $method not implemented\r\n\r\n"; warn "ERROR 501 $request\n"; } if ( $hash ) { print $client "HTTP/1.0 200 OK\r\nContent-Type: application/json\r\n\r\n", encode_json( $hash ); } } elsif ( $method =~ m{/beep/(.*)} ) { my $error = uri_unescape($1); system "beep -f 800 -r 2 -l 100"; print $client "HTTP/1.0 200 OK\r\nContent-Type: application/json\r\n\r\n{ beep: '$error' }\n"; print "BEEP $error\n"; } else { print $client "HTTP/1.0 404 Unkown method\r\n\r\n"; warn "ERROR 404 $request\n"; } } else { print $client "HTTP/1.0 500 No method\r\n\r\n"; warn "ERROR 500 $request\n"; } close $client; }; # end of eval if ( $@ ) { print $client "HTTP/1.0 500 Error\r\n\r\nContent-Type: text/plain\r\n$@"; warn "ERROR: $@"; } } die "server died"; } sub rfid_register { my $ip; foreach ( split(/\n/, `ip addr` ) ) { if ( /^\d:\s(\w+):\s/ ) { $ip->{_last} = $1; } elsif ( /^\s+inet\s((\d+)\.(\d+)\.(\d+)\.(\d+))\/(\d+)/ ) { $ip->{ $ip->{_last} } = $1; } else { #warn "# SKIP [$_]\n"; } } warn dump($ip); my $ua = LWP::UserAgent->new; my $url = URI->new( $rfid_url . '/register.pl'); $url->query_form( %$ip, HTTP_LISTEN => $listen, RFID_LISTEN => $ENV{RFID_LISTEN}, KOHA_URL => $koha_url, RFID_URL => $rfid_url, ); warn "GET ",$url->as_string; my $response = $ua->get($url); if ( $response->is_success ) { warn "# ", $response->decoded_content; my $json = decode_json $response->decoded_content; warn "REGISTER: ",dump($json); return $json; } else { warn "ERROR ", $response->status_line; } } rfid_register if $rfid_url; http_server; __DATA__ RFID JSONP

    RFID tags in range

    RFID reader not found or driver program not started.
    Biblio-RFID-0.05/scripts/scan.pl0000755000175000017500000000236214373155755016231 0ustar dpavlindpavlin#!/usr/bin/perl use warnings; use strict; use Data::Dump qw(dump); use Getopt::Long; use lib 'lib'; use Biblio::RFID::Reader; use Biblio::RFID::RFID501; my $loop = 0; my $reader; my $debug = 0; my $log; GetOptions( 'loop!' => \$loop, 'reader=s', => \$reader, 'debug+' => \$debug, 'log=s' => \$log, ) || die $!; my $rfid = Biblio::RFID::Reader->new( $reader ); $Biblio::RFID::debug = $debug; sub tag { my $tag = shift; return $tag , " AFI: " , uc unpack('H2', $rfid->afi($tag)) , " " , dump( $rfid->to_hash( $tag ) ) , $/ ; } my $saved; sub iso_date { my @t = localtime(time); return sprintf "%04d-%02d-%02dT%02d:%02d:%02d", $t[5]+1900,$t[4]+1,$t[3],$t[2],$t[1],$t[0]; } sub log_tag { my $tag = shift; return if $saved->{tag} or ! $log; my $hash = $rfid->to_hash( $tag ); open(my $fh, '>>', $log) || die "$log: $!"; print $fh iso_date,",$tag,", $hash->{content}, "\n"; close($fh); } do { my @visible = $rfid->tags( enter => sub { my $tag = shift; print iso_date," reader ", $rfid->from_reader($tag), " enter ", tag($tag); log_tag $tag; }, leave => sub { my $tag = shift; print iso_date," leave ", tag($tag); }, ); warn iso_date," visible: ",join(' ',@visible),"\n"; sleep 1; } while $loop; Biblio-RFID-0.05/scripts/program.pl0000755000175000017500000000265414373155755016760 0ustar dpavlindpavlin#!/usr/bin/perl use warnings; use strict; use Data::Dump qw(dump); use Getopt::Long; use lib 'lib'; use Biblio::RFID::Reader; use Biblio::RFID::RFID501; my $reader; my $afi = 0x00; my $debug = 0; my $hash; my $blank; GetOptions( 'reader=s', => \$reader, 'afi=i', => \$afi, 'debug+', => \$debug, 'set=i' => \$hash->{set}, 'total=i', => \$hash->{total}, 'type=i', => \$hash->{type}, 'branch=i', => \$hash->{branch}, 'library=i' => \$hash->{library}, '3mblank' => \$blank->{blank_3m}, 'blank' => \$blank->{blank}, ) || die $!; my ( $sid, $content ) = @ARGV; if ( $sid =~ m/.+,.+/ && ! defined $content ) { ( $sid, $content ) = split(/,/, $sid); } die "usage: $0 [--reader regex_filter] [--afi 214] [--type 1] E0_RFID_SID [barcode]\n" unless $sid && ( $content || $afi || $blank ); $hash->{content} = $content if defined $content; my $rfid = Biblio::RFID::Reader->new( $reader ); $Biblio::RFID::debug = $debug; foreach my $tag ( $rfid->tags, $sid ) { warn "visible $tag\n"; next unless $tag eq $sid; if ( grep { defined $_ } values %$blank ) { my $type = ( grep { $blank->{$_} } keys %$blank )[0]; warn "BLANK $type $tag\n"; $rfid->write_blocks( $tag => Biblio::RFID::RFID501->$type ); } elsif ( $content ) { warn "PROGRAM $tag with $content\n"; $rfid->write_blocks( $tag => Biblio::RFID::RFID501->from_hash($hash) ); } if ( $afi ) { warn "AFI $tag with $afi\n"; $rfid->write_afi( $tag => chr($afi) ); } } Biblio-RFID-0.05/scripts/print.pl0000755000175000017500000001033514373155755016440 0ustar dpavlindpavlin#!/usr/bin/perl use warnings; use strict; use Data::Dump qw(dump); use Getopt::Long; use lib 'lib'; use Biblio::RFID::Reader; use Biblio::RFID::RFID501; use Storable; use autodie; my $evolis_dir = '/home/dpavlin/klin/Printer-EVOLIS'; # FIXME use lib '/home/dpavlin/klin/Printer-EVOLIS/lib'; use Printer::EVOLIS::Parallel; my $loop = 1; my $reader = '3M'; my $debug = 0; my $afi = 0x00; # XXX my $test = 0; my $log_print = 'log.print'; mkdir $log_print unless -d $log_print; GetOptions( 'loop!' => \$loop, 'reader=s', => \$reader, 'debug+' => \$debug, 'test+' => \$test, ) || die $!; die "Usage: $0 print.txt\n" unless @ARGV; my $programmed; my $numbers; foreach my $log_path ( glob( "$log_print/*.txt" ) ) { warn "# loading $log_path"; open( my $in, '<', $log_path ) || die $!; while(<$in>) { chomp; my ( $date, $sid, $nr ) = split(/,/,$_,3); $programmed->{ $sid } = $nr; $numbers->{ $nr } = $sid; } } warn "# ", scalar keys %$numbers, " programmed cards found\n"; my @queue; my @done; warn "# reading tab-delimited input: number login\@domain name surname\n"; while(<>) { chomp; my @a = split(/\t/,$_); die "invalid: @a in line $_" if $a[0] !~ m/\d{12}/ && $a[1] !~ m/\@/; push @queue, [ @a ] if ! $numbers->{ $a[0] } || $ENV{REPRINT}; } # sort by card number @queue = sort { $b->[0] <=> $a->[0] } @queue; print "# queue ", dump @queue; my $rfid = Biblio::RFID::Reader->new( $reader ); $Biblio::RFID::debug = $debug; sub tag { my $tag = shift; return $tag , " AFI: " , uc unpack('H2', $rfid->afi($tag)) , " " , dump( $rfid->to_hash( $tag ) ) , $/ ; } sub iso_date { my @t = localtime(time); return sprintf "%04d-%02d-%02dT%02d:%02d:%02d", $t[5]+1900,$t[4]+1,$t[3],$t[2],$t[1],$t[0]; } sub print_card; sub render_card; my $log_path = "$log_print/" . iso_date . ".txt"; die "$log_path exists" if -e $log_path; sub write_log { my ( $tag, $number ) = @_; open(my $log, '>>', $log_path) || die "$log_path: $!"; my $date = iso_date; print $log "$date,$tag,$number\n"; close($log); print "LOG $date $tag $number\n"; } while ( $rfid->tags ) { print "ERROR: remove all tags from output printer tray\n"; sleep 1; } print_card; do { my @visible = $rfid->tags( enter => sub { my $tag = shift; print localtime()." enter ", eval { tag($tag) }; return if $@; if ( ! $programmed->{$tag} ) { my $card = shift @queue; my $number = $card->[0]; print "PROGRAM $tag $number\n"; while ( 1 ) { eval { $rfid->write_blocks( $tag => Biblio::RFID::RFID501->from_hash({ content => $number }) ); $rfid->write_afi( $tag => chr($afi) ) if $afi; }; last unless $!; warn "RETRY PROGRAM $tag $number\n"; sleep 1; } write_log $tag => $number; $programmed->{$tag} = $number; render_card; # pre-render next one } }, leave => sub { my $tag = shift; print_card if $programmed->{$tag}; }, ); warn localtime()." visible: ",join(' ',@visible),"\n"; sleep 1; } while $loop; sub _counters { my $p = shift; my $counters; $counters->{$_} = $p->command("Rco;$_") foreach ( qw/p c a m n l b e f i k s/ ); return $counters; } sub render_card { return unless @queue; my @data = @{$queue[0]}; my $nr = $data[0]; if ( $ENV{REPRINT} ) { unlink $_ foreach glob("out/$nr.*"); warn "REPRINT: $nr"; } if ( ! ( -e "out/$nr.front.pbm" && -e "out/$nr.back.pbm" ) ) { print "RENDER @data\n"; system "$evolis_dir/scripts/inkscape-render.pl", "$evolis_dir/card/ffzg-2018-old-cards.svg", @data; } } sub print_card { if ( ! @queue ) { print "QUEUE EMPTY - printing finished\n"; print "$log_path ", -s $log_path, " bytes created\n"; exit; } my @data = @{$queue[0]}; my $nr = $data[0]; print "PRINT @data\n"; my $p = Printer::EVOLIS::Parallel->new( '/dev/usb/lp0' ); my $before = _counters $p; if ( $test ) { print "insert card ", $p->command( 'Si' ),$/; sleep 1; print "eject card ", $p->command( 'Ser' ),$/; } else { render_card; system "$evolis_dir/scripts/evolis-driver.pl out/$nr.front.pbm out/$nr.back.pbm > /dev/usb/lp0"; } my $after = _counters $p; if ( $before->{p} = $after->{p} - 2 ) { print "OK printerd card $nr\n"; } else { die "ERROR printing card $nr\n"; } warn "# counters ", dump( $before, $after ); } Biblio-RFID-0.05/README0000644000175000017500000000611014373156607014126 0ustar dpavlindpavlinNAME Biblio::RFID - perl tools to use different RFID readers for library use DESCRIPTION Main idea is to develop simple API to reader, and than provide useful abstractions on top of it to quickly write applications to respond on tags which come in range of RFID reader using Biblio::RFID::Reader. Writing support for new RFID readers should be easy. Biblio::RFID::Reader::API provides documentation on writing support for different readers. Currently, two serial RFID readers based on Biblio::RFID::Reader::Serial are implemented: * Biblio::RFID::Reader::3M810 * Biblio::RFID::Reader::CPRM02 There is also simple read-only reader using shell commands in Biblio::RFID::Reader::librfid. For implementing application take a look at Biblio::RFID::Reader scripts/RFID-JSONP-server.pl is example of such application. It's local interface to RFID reader and JSONP REST server. examples/koha-rfid.js is jQuery based JavaScript code which can be inserted in Koha Library System to provide overlay with tags in range and check-in/check-out form-fill functionality. Applications can use Biblio::RFID::RFID501 which is some kind of semi-standard 3M layout or blocks on RFID tags. HARDWARE SUPPORT 3M 810 Biblio::RFID::Reader::3M810 CPR-M02 Biblio::RFID::Reader::CPRM02 librfid Biblio::RFID::Reader::librfid AUTHOR Dobrica Pavlinusic, http://blog.rot13.org/ BUGS Please report any bugs or feature requests to bug-rfid-biblio at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Biblio-RFID. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. SUPPORT You can find documentation for this module with the perldoc command. perldoc Biblio::RFID perldoc Biblio::RFID::Reader perldoc Biblio::RFID::Reader::API You can also look for information at: * RT: CPAN's request tracker http://rt.cpan.org/NoAuth/Bugs.html?Dist=Biblio-RFID * AnnoCPAN: Annotated CPAN documentation http://annocpan.org/dist/Biblio-RFID * CPAN Ratings http://cpanratings.perl.org/d/Biblio-RFID * Search CPAN http://search.cpan.org/dist/Biblio-RFID/ ACKNOWLEDGEMENTS LICENSE AND COPYRIGHT Copyright 2010 Dobrica Pavlinusic. 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; version 2 dated June, 1991 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. A copy of the GNU General Public License is available in the source tree; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Biblio-RFID-0.05/ignore.txt0000644000175000017500000000017114373155755015276 0ustar dpavlindpavlinblib* Makefile Makefile.old Build Build.bat _build* pm_to_blib* *.tar.gz .lwpcookies cover_db pod2htm*.tmp Biblio-RFID-* Biblio-RFID-0.05/META.yml0000644000175000017500000000136014373155777014530 0ustar dpavlindpavlin--- abstract: 'perl tools to use different RFID readers for library use ' author: - 'Dobrica Pavlinusic, C<< >>' - 'Dobrica Pavlinusic ' build_requires: ExtUtils::MakeMaker: 6.36 Pod::Readme: 0 Test::More: 0 configure_requires: ExtUtils::MakeMaker: 6.36 distribution_type: module dynamic_config: 1 generated_by: 'Module::Install version 1.19' license: gpl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: 1.4 name: Biblio-RFID no_index: directory: - examples - inc - t requires: Carp: 0 Data::Dump: 0 Device::SerialPort: 0 Digest::CRC: 0 Time::HiRes: 0 resources: license: http://opensource.org/licenses/gpl-license.php version: '0.05'