package Xconfigurator; use diagnostics; use strict; use vars qw($in $install $isLaptop @window_managers @depths @monitorSize2resolution @hsyncranges %min_hsync4wres @vsyncranges %depths @resolutions %serversdriver @svgaservers @accelservers @allbutfbservers @allservers %vgamodes %videomemory @ramdac_name @ramdac_id @clockchip_name @clockchip_id %keymap_translate %standard_monitors $XF86firstchunk_text $keyboardsection_start $keyboardsection_start_v4 $keyboardsection_part2 $keyboardsection_part3 $keyboardsection_part3_v4 $keyboardsection_end $pointersection_text $pointersection_text_v4 $monitorsection_text1 $monitorsection_text2 $monitorsection_text3 $monitorsection_text4 $modelines_text_Trident_TG_96xx $modelines_text $devicesection_text $devicesection_text_v4 $screensection_text1 %lines @options %xkb_options $default_monitor $layoutsection_v4); use pci_probing::main; use common qw(:common :file :functional :system); use log; use run_program; use Xconfigurator_consts; use my_gtk qw(:wrappers); my $tmpconfig = "/tmp/Xconfig"; my ($prefix, %monitors); 1; sub getVGAMode($) { $_[0]->{card}{vga_mode} || $vgamodes{"640x480x16"}; } sub readCardsDB { my ($file) = @_; my ($card, %cards); local *F; open F, $file or die "file $file not found"; my ($lineno, $cmd, $val) = 0; my $fs = { LINE => sub { push @{$card->{lines}}, $val unless $val eq "VideoRam" }, NAME => sub { $cards{$card->{type}} = $card if $card; $card = { type => $val }; }, SEE => sub { my $c = $cards{$val} or die "Error in database, invalid reference $val at line $lineno"; push @{$card->{lines}}, @{$c->{lines} || []}; add2hash($card->{flags}, $c->{flags}); add2hash($card, $c); }, CHIPSET => sub { $card->{chipset} = $val; $card->{flags}{needVideoRam} = 1 if member($val, qw(mgag10 mgag200 RIVA128)); }, SERVER => sub { $card->{server} = $val; }, DRIVER => sub { $card->{driver} = $val; }, RAMDAC => sub { $card->{ramdac} = $val; }, DACSPEED => sub { $card->{dacspeed} = $val; }, CLOCKCHIP => sub { $card->{clockchip} = $val; $card->{flags}{noclockprobe} = 1; }, NOCLOCKPROBE => sub { $card->{flags}{noclockprobe} = 1 }, UNSUPPORTED => sub { $card->{flags}{unsupported} = 1 }, COMMENT => sub {}, }; foreach () { $lineno++; s/\s+$//; /^#/ and next; /^$/ and next; /^END/ and last; ($cmd, $val) = /(\S+)\s*(.*)/ or next; #log::l("bad line $lineno ($_)"), next; my $f = $fs->{$cmd}; $f ? &$f() : log::l("unknown line $lineno ($_)"); } \%cards; } sub readCardsNames { my $file = "/usr/X11R6/lib/X11/CardsNames"; local *F; open F, $file or die "can't find $file\n"; map { (split '=>')[0] } ; } sub cardName2RealName { my $file = "/usr/X11R6/lib/X11/CardsNames"; my ($name) = @_; local *F; open F, $file or die "can't find $file\n"; foreach () { chop; my ($name_, $real) = split '=>'; return $real if $name eq $name_; } $name; } sub cardName2card { my ($name) = @_; readCardsDB("/usr/X11R6/lib/X11/Cards+")->{$name}; } sub readMonitorsDB { my ($file) = @_; %monitors and return; local *F; open F, $file or die "can't open monitors database ($file): $!"; my $lineno = 0; foreach () { $lineno++; s/\s+$//; /^#/ and next; /^$/ and next; my @fields = qw(vendor type eisa hsyncrange vsyncrange); my @l = split /\s*;\s*/; @l == @fields or log::l("bad line $lineno ($_)"), next; my %l; @l{@fields} = @l; if ($monitors{$l{type}}) { my $i; for ($i = 0; $monitors{"$l{type} ($i)"}; $i++) {} $l{type} = "$l{type} ($i)"; } $monitors{"$l{vendor}|$l{type}"} = \%l; } while (my ($k, $v) = each %standard_monitors) { $monitors{_("Generic") . "|" . translate($k)} = { hsyncrange => $v->[1], vsyncrange => $v->[2] }; } } sub rewriteInittab { my ($runlevel) = @_; my $f = "$prefix/etc/inittab"; -r $f or log::l("missing inittab!!!"), return; substInFile { s/^(id:)[35](:initdefault:)\s*$/$1$runlevel$2\n/ } $f; } sub keepOnlyLegalModes { my ($card, $monitor) = @_; my $mem = 1024 * ($card->{memory} || ($card->{server} eq 'FBDev' ? 2048 : 99999)); my $hsync = max(split(/[,-]/, $monitor->{hsyncrange})); while (my ($depth, $res) = each %{$card->{depth}}) { @$res = grep { $mem >= product(@$_, $depth / 8) && $hsync >= ($min_hsync4wres{$_->[0]} || 0) && ($card->{server} ne 'FBDev' || $vgamodes{"$_->[0]x$_->[1]x$depth"}) } @$res; delete $card->{depth}{$depth} if @$res == 0; } } sub cardConfigurationAuto() { my $card; if (my (@c) = pci_probing::main::probe("DISPLAY")) { local $_; ($card->{identifier}, $_) = @{$c[-1]}; $card->{type} = $1 if /Card:(.*)/; $card->{server} = $1 if /Server:(.*)/; $card->{flags}{needVideoRam} &&= /86c368/; push @{$card->{lines}}, @{$lines{$card->{identifier}} || []}; } $card; } sub cardConfiguration(;$$$) { my ($card, $noauto, $allowFB) = @_; $card ||= {}; add2hash($card, cardName2card($card->{type})) if $card->{type}; #- try to get info from given type undef $card->{type} unless $card->{server}; #- bad type as we can't find the server add2hash($card, cardConfigurationAuto()) unless $card->{server} || $noauto; $card->{server} = 'FBDev' unless !$allowFB || $card->{server} || $card->{type} || $noauto; $card->{type} = cardName2RealName($in->ask_from_treelist(_("Graphic card"), _("Select a graphic card"), '|', ['Unlisted', readCardsNames()])) unless $card->{type} || $card->{server}; undef $card->{type}, $card->{server} = $in->ask_from_list(_("X server"), _("Choose a X server"), $allowFB ? \@allservers : \@allbutfbservers ) if $card->{type} eq "Unlisted"; add2hash($card, cardName2card($card->{type})) if $card->{type}; add2hash($card, { vendor => "Unknown", board => "Unknown" }); $::xf4 = $card->{identifier} =~ /Rage 128/ if !$::expert; $card->{prog} = "/usr/X11R6/bin/" . ($::xf4 && $card->{driver} ? 'XFree86' : "XF86_$card->{server}"); -x "$prefix$card->{prog}" or $install && do { $in->suspend; &$install($card->{server}); &$install('server') if $::xf4 && $card->{driver}; $in->resume; }; -x "$prefix$card->{prog}" or die "server $card->{server} is not available (should be in $prefix$card->{prog})"; unless ($card->{type}) { $card->{flags}{noclockprobe} = member($card->{server}, qw(I128 S3 S3V Mach64)); } $card->{options}{power_saver} = 1; $card->{flags}{needVideoRam} and $card->{memory} ||= $videomemory{$in->ask_from_list_('', _("Select the memory size of your graphic card"), [ sort { $videomemory{$a} <=> $videomemory{$b} } keys %videomemory])}; if (!$::isStandalone && $card->{driver} eq "i810") { require modules; modules::load("agpgart"); } $card; } sub optionsConfiguration($) { my ($o) = @_; my @l; my %l; foreach (@options) { if ($o->{card}{server} eq $_->[1] && $o->{card}{identifier} =~ /$_->[2]/) { $o->{card}{options}{$_->[0]} ||= 0; unless ($l{$_->[0]}) { push @l, $_->[0], { val => \$o->{card}{options}{$_->[0]}, type => 'bool' }; $l{$_->[0]} = 1; } } } @l = @l[0..19] if @l > 19; #- reduce list size to 10 for display (it's a hash). $in->ask_from_entries_refH('', _("Choose options for server"), \@l); } sub monitorConfiguration(;$$) { my $monitor = shift || {}; my $useFB = shift || 0; if ($useFB) { #- use smallest values for monitor configuration since FB is used, #- BIOS initialize graphics, current X server will not refuse that. $monitor->{hsyncrange} ||= $hsyncranges[1]; $monitor->{vsyncrange} ||= $vsyncranges[0]; add2hash($monitor, { type => "Unknown", vendor => "Unknown", model => "Unknown" }); } else { $monitor->{hsyncrange} && $monitor->{vsyncrange} and return $monitor; readMonitorsDB("/usr/X11R6/lib/X11/MonitorsDB"); add2hash($monitor, { type => $in->ask_from_treelist(_("Monitor"), _("Choose a monitor"), '|', ['Unlisted', keys %monitors], _("Generic") . '|' . translate($default_monitor)) }) unless $monitor->{type}; if ($monitor->{type} eq 'Unlisted') { $in->ask_from_entries_ref('', _("The two critical parameters are the vertical refresh rate, which is the rate at which the whole screen is refreshed, and most importantly the horizontal sync rate, which is the rate at which scanlines are displayed. It is VERY IMPORTANT that you do not specify a monitor type with a sync range that is beyond the capabilities of your monitor: you may damage your monitor. If in doubt, choose a conservative setting."), [ _("Horizontal refresh rate"), _("Vertical refresh rate") ], [ { val => \$monitor->{hsyncrange}, list => \@hsyncranges }, { val => \$monitor->{vsyncrange}, list => \@vsyncranges }, ]); } else { add2hash($monitor, $monitors{$monitor->{type}}); } add2hash($monitor, { type => "Unknown", vendor => "Unknown", model => "Unknown" }); } $monitor; } sub testConfig($) { my ($o) = @_; my ($resolutions, $clocklines); write_XF86Config($o, $tmpconfig); unlink "/tmp/.X9-lock"; #- restart_xfs; my $f = $tmpconfig . ($::xf4 && $o->{card}{driver} && "-4"); local *F; open F, "$prefix$o->{card}{prog} :9 -probeonly -pn -xf86config $f 2>&1 |"; foreach () { $o->{card}{memory} ||= $2 if /(videoram|Video RAM):\s*(\d*)/; # look for clocks push @$clocklines, $1 if /clocks: (.*)/ && !/(pixel |num)clocks:/; push @$resolutions, [ $1, $2 ] if /: Mode "(\d+)x(\d+)": mode clock/; print; } close F or die "X probeonly failed"; ($resolutions, $clocklines); } sub testFinalConfig($;$$) { my ($o, $auto, $skiptest) = @_; $o->{monitor}{hsyncrange} && $o->{monitor}{vsyncrange} or $in->ask_warn('', _("Monitor not configured")), return; $o->{card}{server} or $in->ask_warn('', _("Graphic card not configured yet")), return; $o->{card}{depth} or $in->ask_warn('', _("Resolutions not chosen yet")), return; my $f = "/etc/X11/XF86Config.test"; write_XF86Config($o, $::testing ? $tmpconfig : "$prefix/$f"); $skiptest || $o->{card}{server} eq 'FBDev' and return 1; #- avoid testing since untestable without reboot. #- needed for bad cards not restoring cleanly framebuffer my $bad_card = $o->{card}{identifier} =~ /i740|ViRGE/; $bad_card ||= $o->{card}{identifier} eq "ATI|3D Rage P/M Mobility AGP 2x"; $bad_card ||= $::xf4; log::l("the graphic card does not like X in framebuffer") if $bad_card; my $mesg = _("Do you want to test the configuration?"); my $def = 1; if ($bad_card && !$::isStandalone) { !$::expert || $auto and return 1; $mesg = $mesg . "\n" . _("Warning: testing is dangerous on this graphic card"); $def = 0; } $auto && $def or $in->ask_yesorno(_("Test of the configuration"), $mesg, $def) or return 1; unlink "$prefix/tmp/.X9-lock"; #- create a link from the non-prefixed /tmp/.X11-unix/X9 to the prefixed one #- that way, you can talk to :9 without doing a chroot #- but take care of non X11 install :-) if (-d "/tmp/.X11-unix") { symlinkf "$prefix/tmp/.X11-unix/X9", "/tmp/.X11-unix/X9" if $prefix; } else { symlinkf "$prefix/tmp/.X11-unix", "/tmp/.X11-unix" if $prefix; } #- restart_xfs; my $f_err = "$prefix/tmp/Xoutput"; my $pid; unless ($pid = fork) { open STDERR, ">$f_err"; chroot $prefix if $prefix; exec $o->{card}{prog}, ($o->{card}{prog} !~ /Xsun/ ? ("-xf86config", ($::testing ? $tmpconfig : $f) . ($::xf4 && $o->{card}{driver} && "-4")) : ()), ":9" or c::_exit(0); } do { sleep 1 } until c::Xtest(":9") || waitpid($pid, c::WNOHANG()); my $b = before_leaving { unlink $f_err }; unless (c::Xtest(":9")) { local $_; local *F; open F, $f_err; i: while () { if (/\b(error|not supported)\b/i) { my @msg = !/error/ && $_ ; while () { /not fatal/ and last i; /^$/ and last; push @msg, $_; } $in->ask_warn('', [ _("An error has occurred:"), " ", @msg, _("\ntry to change some parameters") ]); return 0; } } } local *F; open F, "|perl" or die ''; print F "use lib qw(", join(' ', @INC), ");\n"; print F q{ use interactive_gtk; use my_gtk qw(:wrappers); $ENV{DISPLAY} = ":9"; gtkset_mousecursor(68); gtkset_background(200 * 257, 210 * 257, 210 * 257); my ($h, $w) = Gtk::Gdk::Window->new_foreign(Gtk::Gdk->ROOT_WINDOW)->get_size; $my_gtk::force_position = [ $w / 3, $h / 2.4 ]; $my_gtk::force_focus = 1; my $text = Gtk::Label->new; my $time = 8; Gtk->timeout_add(1000, sub { $text->set(_("Leaving in %d seconds", $time)); $time-- or Gtk->main_quit; }); exit (interactive_gtk->new->ask_yesorno('', [ _("Is this the correct setting?"), $text ], 0) ? 0 : 222); }; my $rc = close F; my $err = $?; unlink "/tmp/.X11-unix/X9" if $prefix; kill 2, $pid; $rc || $err == 222 << 8 or $in->ask_warn('', _("An error has occurred, try to change some parameters")); $rc; } sub autoResolutions($;$) { my ($o, $nowarning) = @_; my $card = $o->{card}; $nowarning || $in->ask_okcancel(_("Automatic resolutions"), _("To find the available resolutions I will try different ones. Your screen will blink... You can switch if off if you want, you'll hear a beep when it's over"), 1) or return; #- swith to virtual console 1 (hopefully not X :) my $vt = setVirtual(1); #- Configure the modes order. my ($ok, $best); foreach (reverse @depths) { local $o->{default_depth} = $_; my ($resolutions, $clocklines) = eval { testConfig($o) }; if ($@ || !$resolutions) { delete $card->{depth}{$_}; } else { $card->{clocklines} ||= $clocklines unless $card->{flags}{noclockprobe}; $card->{depth}{$_} = [ @$resolutions ]; } } #- restore the virtual console setVirtual($vt); print "\a"; #- beeeep! } sub autoDefaultDepth($$) { my ($card, $wres_wanted) = @_; my ($best, $depth); return 24 if $card->{identifier} =~ /SiS/; if ($card->{server} eq 'FBDev') { return 16; #- this should work by default, FBDev is allowed only if install currently uses it at 16bpp. } while (my ($d, $r) = each %{$card->{depth}}) { $depth = max($depth || 0, $d); #- try to have resolution_wanted $best = max($best || 0, $d) if $r->[0][0] >= $wres_wanted; } $best || $depth or die "no valid modes"; } sub autoDefaultResolution { return "1024x768" if $isLaptop; my ($size) = @_; $monitorSize2resolution[round($size || 14)] || #- assume a small monitor (size is in inch) $monitorSize2resolution[-1]; #- no corresponding resolution for this size. It means a big monitor, take biggest we have } sub chooseResolutionsGtk($$;$) { my ($card, $chosen_depth, $chosen_w) = @_; my $W = my_gtk->new(_("Resolution")); my %txt2depth = reverse %depths; my ($r, $depth_combo, %w2depth, %w2h, %w2widget); my $best_w; while (my ($depth, $res) = each %{$card->{depth}}) { foreach (@$res) { $w2h{$_->[0]} = $_->[1]; push @{$w2depth{$_->[0]}}, $depth; $best_w = max($_->[0], $best_w) if $_->[0] <= $chosen_w; } } $chosen_w = $best_w; my $set_depth = sub { $depth_combo->entry->set_text(translate($depths{$chosen_depth})) }; #- the set function is usefull to toggle the CheckButton with the callback being ignored my $ignore; my $set = sub { $ignore = 1; $_[0]->set_active(1); $ignore = 0; }; while (my ($w, $h) = each %w2h) { my $V = $w . "x" . $h; $w2widget{$w} = $r = new Gtk::RadioButton($r ? ($V, $r) : $V); &$set($r) if $chosen_w == $w; $r->signal_connect("clicked" => sub { $ignore and return; $chosen_w = $w; unless (member($chosen_depth, @{$w2depth{$w}})) { $chosen_depth = max(@{$w2depth{$w}}); &$set_depth(); } }); } gtkadd($W->{window}, gtkpack_($W->create_box_with_title(_("Choose the resolution and the color depth"), "(" . ($card->{type} ? _("Graphic card: %s", $card->{type}) : _("XFree86 server: %s", $card->{server})) . ")" ), 1, gtkpack(new Gtk::HBox(0,20), $depth_combo = new Gtk::Combo, gtkpack_(new Gtk::VBox(0,0), map {; 0, $w2widget{$_} } ikeys(%w2widget), ), ), 0, gtkadd($W->create_okcancel, gtksignal_connect(new Gtk::Button(_("Show all")), clicked => sub { $W->{retval} = 1; $chosen_w = 0; Gtk->main_quit })), )); $depth_combo->disable_activate; $depth_combo->set_use_arrows_always(1); $depth_combo->entry->set_editable(0); $depth_combo->set_popdown_strings(map { translate($depths{$_}) } ikeys(%{$card->{depth}})); $depth_combo->entry->signal_connect(changed => sub { $chosen_depth = $txt2depth{untranslate($depth_combo->entry->get_text, keys %txt2depth)}; my $w = $card->{depth}{$chosen_depth}[0][0]; $chosen_w > $w and &$set($w2widget{$chosen_w = $w}); }); &$set_depth(); $W->{ok}->grab_focus; $W->main or return; ($chosen_depth, $chosen_w); } sub chooseResolutions($$;$) { goto &chooseResolutionsGtk if ref($in) =~ /gtk/; my ($card, $chosen_depth, $chosen_w) = @_; my $best_w; local $_ = $in->ask_from_list(_("Resolutions"), "", [ map_each { map { "$_->[0]x$_->[1] ${main::a}bpp" } @$::b } %{$card->{depth}} ]) or return; reverse /(\d+)x\S+ (\d+)/; } sub resolutionsConfiguration($%) { my ($o, %options) = @_; my $card = $o->{card}; #- For the mono and vga16 server, no further configuration is required. if (member($card->{server}, "Mono", "VGA16")) { $card->{depth}{8} = [[ 640, 480 ]]; return; } #- some of these guys hate to be poked #- if we dont know then its at the user's discretion #-my $manual ||= #- $card->{server} =~ /^(TGA|Mach32)/ || #- $card->{name} =~ /^Riva 128/ || #- $card->{chipset} =~ /^(RIVA128|mgag)/ || #- $::expert; #- #-my $unknown = #- member($card->{server}, qw(S3 S3V I128 Mach64)) || #- member($card->{type}, #- "Matrox Millennium (MGA)", #- "Matrox Millennium II", #- "Matrox Millennium II AGP", #- "Matrox Mystique", #- "Matrox Mystique", #- "S3", #- "S3V", #- "I128", #- ) || #- $card->{type} =~ /S3 ViRGE/; #- #-$unknown and $manual ||= !$in->ask_okcancel('', [ _("I can try to autodetect information about graphic card, but it may freeze :("), #- _("Do you want to try?") ]); if (is_empty_hash_ref($card->{depth})) { $card->{depth}{$_} = [ map { [ split "x" ] } @resolutions ] foreach @depths; unless ($options{noauto}) { if ($options{nowarning} || $in->ask_okcancel(_("Automatic resolutions"), _("I can try to find the available resolutions (eg: 800x600). Sometimes, though, it may hang the machine. Do you want to try?"), 1)) { autoResolutions($o, $options{nowarning}); is_empty_hash_ref($card->{depth}) and $in->ask_warn('', _("No valid modes found Try with another video card or monitor")), return; } } } #- sort resolutions in each depth foreach (values %{$card->{depth}}) { my $i = 0; @$_ = grep { first($i != $_->[0], $i = $_->[0]) } sort { $b->[0] <=> $a->[0] } @$_; } #- remove unusable resolutions (based on the video memory size and the monitor hsync rate) keepOnlyLegalModes($card, $o->{monitor}); my $res = $o->{resolution_wanted} || autoDefaultResolution($o->{monitor}{size}); my $wres = first(split 'x', $res); #- take the first available resolution <= the wanted resolution $wres ||= max map { first(grep { $_->[0] <= $wres } @$_)->[0] } values %{$card->{depth}}; my $depth = eval { $o->{default_depth} || autoDefaultDepth($card, $wres) }; $options{auto} or ($depth, $wres) = chooseResolutions($card, $depth, $wres) or return; unless ($wres) { delete $card->{depth}; return resolutionsConfiguration($o, noauto => 1); } #- needed in auto mode when all has been provided by the user $card->{depth}{$depth} or die "you selected an unusable depth"; #- remove all biggest resolution (keep the small ones for ctl-alt-+) #- otherwise there'll be a virtual screen :( $card->{depth}{$depth} = [ grep { $_->[0] <= $wres } @{$card->{depth}{$depth}} ]; $card->{default_wres} = $wres; $card->{vga_mode} = $vgamodes{"${wres}xx$depth"} || $vgamodes{"${res}x$depth"}; #- for use with frame buffer. $o->{default_depth} = $depth; 1; } #- Create the XF86Config file. sub write_XF86Config { my ($o, $file) = @_; my $O; local (*F, *G); open F, ">$file" or die "can't write XF86Config in $file: $!"; open G, ">$file-4" or die "can't write XF86Config in $file-4: $!"; print F $XF86firstchunk_text; print G $XF86firstchunk_text; #- Write keyboard section. $O = $o->{keyboard}; print F $keyboardsection_start; print G $keyboardsection_start_v4; print F qq( XkbDisable\n) unless $O->{xkb_keymap}; print G qq( Option "XkbDisable"\n) unless $O->{xkb_keymap}; print F $keyboardsection_part3; print G $keyboardsection_part3_v4; print F qq( XkbLayout "$O->{xkb_keymap}"\n); print G qq( Option "XkbLayout" "$O->{xkb_keymap}"\n); print F join '', map { " $_\n" } @{$xkb_options{$O->{xkb_keymap}} || []}; print G join '', map { /(\S+)(.*)/; qq( Option "$1" $2\n) } @{$xkb_options{$O->{xkb_keymap}} || []}; print F $keyboardsection_end; print G $keyboardsection_end; #- Write pointer section. $O = $o->{mouse}; print F $pointersection_text; print G $pointersection_text_v4; print F qq( Protocol "$O->{XMOUSETYPE}"\n); print G qq( Option "Protocol" "$O->{XMOUSETYPE}"\n); print F qq( Device "/dev/$O->{device}"\n); print G qq( Option "Device" "/dev/$O->{device}"\n); #- this will enable the "wheel" or "knob" functionality if the mouse supports it print F " ZAxisMapping 4 5\n" if member($O->{XMOUSETYPE}, qw(IntelliMouse IMPS/2 ThinkingMousePS/2 NetScrollPS/2 NetMousePS/2 MouseManPlusPS/2)); print F "#" unless $O->{XEMU3}; print G "#" unless $O->{XEMU3}; print F qq( Emulate3Buttons\n); print G qq( Option "Emulate3Buttons"\n); print F "#" unless $O->{XEMU3}; print G "#" unless $O->{XEMU3}; print F qq( Emulate3Timeout 50\n\n); print G qq( Option "Emulate3Timeout" "50"\n\n); print F "# ChordMiddle is an option for some 3-button Logitech mice\n\n"; print G "# ChordMiddle is an option for some 3-button Logitech mice\n\n"; print F "#" unless $O->{chordmiddle}; print G "#" unless $O->{chordmiddle}; print F qq( ChordMiddle\n\n); print G qq( Option "ChordMiddle"\n\n); print F " ClearDTR\n" if $O->{cleardtrrts}; print F " ClearRTS\n\n" if $O->{cleardtrrts}; print F "EndSection\n\n\n"; print G "EndSection\n\n\n"; print F qq( Section "Module" Load "xf86Wacom.so" EndSection Section "XInput" SubSection "WacomStylus" Port "/dev/$o->{wacom}" AlwaysCore EndSubSection SubSection "WacomCursor" Port "/dev/$o->{wacom}" AlwaysCore EndSubSection SubSection "WacomEraser" Port "/dev/$o->{wacom}" AlwaysCore EndSubSection EndSection ) if $o->{wacom}; print G qq( Section "InputDevice" Identifier "stylus" Driver "wacom" Option "Type" "stylus" Option "Device" "/dev/$o->{wacom}" EndSection Section "InputDevice" Identifier "eraser" Driver "wacom" Option "Type" "eraser" Option "Device" "/dev/$o->{wacom}" EndSection Section "InputDevice" Identifier "cursor" Driver "wacom" Option "Type" "cursor" Option "Device" "/dev/$o->{wacom}" EndSection ) if $o->{wacom}; print G qq( Section "Module" # This loads the DBE extension module. Load "dbe" Load "glx" # This loads the miscellaneous extensions module, and disables # initialisation of the XFree86-DGA extension within that module. SubSection "extmod" Option "omit xfree86-dga" EndSubSection # This loads the Type1 and FreeType font modules Load "type1" Load "freetype" EndSection ); #- Write monitor section. $O = $o->{monitor}; print F $monitorsection_text1; print G $monitorsection_text1; print F qq( Identifier "$O->{type}"\n); print G qq( Identifier "$O->{type}"\n); print F qq( VendorName "$O->{vendor}"\n); print G qq( VendorName "$O->{vendor}"\n); print F qq( ModelName "$O->{model}"\n\n); print G qq( ModelName "$O->{model}"\n\n); print F $monitorsection_text2; print G $monitorsection_text2; print F qq( HorizSync $O->{hsyncrange}\n\n); print G qq( HorizSync $O->{hsyncrange}\n\n); print F $monitorsection_text3; print G $monitorsection_text3; print F qq( VertRefresh $O->{vsyncrange}\n\n); print G qq( VertRefresh $O->{vsyncrange}\n\n); print F $monitorsection_text4; print F ($O->{modelines} || '') . ($o->{card}{type} eq "TG 96" ? $modelines_text_Trident_TG_96xx : $modelines_text); print F "\nEndSection\n\n\n"; print G "\nEndSection\n\n\n"; #- Write Device section. $O = $o->{card}; print F $devicesection_text; print G $devicesection_text_v4; print F qq(Section "Device"\n); print G qq(Section "Device"\n); print F qq( Identifier "$O->{type}"\n); print G qq( Identifier "$O->{type}"\n); print F qq( VendorName "$O->{vendor}"\n); print G qq( VendorName "$O->{vendor}"\n); print F qq( BoardName "$O->{board}"\n); print G qq( BoardName "$O->{board}"\n); print G qq( Driver "$O->{driver}"\n); print F "#" if $O->{memory} && !$O->{flags}{needVideoRam}; print G "#" if $O->{memory} && !$O->{flags}{needVideoRam}; print F " VideoRam $O->{memory}\n" if $O->{memory}; print G " VideoRam $O->{memory}\n" if $O->{memory}; print F map { " $_\n" } @{$O->{lines} || []}; print G map { " $_\n" } @{$O->{lines} || []}; print F qq( Ramdac "$O->{ramdac}"\n) if $O->{ramdac}; print G qq( Ramdac "$O->{ramdac}"\n) if $O->{ramdac}; print F qq( Dacspeed "$O->{dacspeed}"\n) if $O->{dacspeed}; print G qq( Dacspeed "$O->{dacspeed}"\n) if $O->{dacspeed}; if ($O->{clockchip}) { print F qq( Clockchip "$O->{clockchip}"\n); print G qq( Clockchip "$O->{clockchip}"\n); } else { print F " # Clock lines\n"; print G " # Clock lines\n"; print F " Clocks $_\n" foreach (@{$O->{clocklines}}); print G " Clocks $_\n" foreach (@{$O->{clocklines}}); } do { print F; print G } for qq( # Uncomment following option if you see a big white block # instead of the cursor! #Option "sw_cursor" ); print F map { (!$O->{options}{$_} && '#') . qq( Option "$_"\n) } keys %{$O->{options} || {}}; print G map { (!$O->{options}{$_} && '#') . qq( Option "$_"\n) } keys %{$O->{options} || {}}; print F "EndSection\n\n\n"; print G "EndSection\n\n\n"; #- Write Screen sections. print F $screensection_text1, "\n"; print G $screensection_text1, "\n"; my $subscreen = sub { my ($f, $server, $defdepth, $depths) = @_; print $f " DefaultColorDepth $defdepth\n" if $defdepth; foreach (ikeys(%$depths)) { my $m = $server ne "fbdev" ? join(" ", map { qq("$_->[0]x$_->[1]") } @{$depths->{$_}}) : qq("default"); #-" print $f qq( Subsection "Display"\n); print $f qq( Depth $_\n) if $_; print $f qq( Modes $m\n); print $f qq( ViewPort 0 0\n); print $f qq( EndSubsection\n); } print $f "EndSection\n"; }; my $screen = sub { my ($server, $defdepth, $device, $depths) = @_; print F qq( Section "Screen" Driver "$server" Device "$device" Monitor "$o->{monitor}{type}" ); #-" $subscreen->(*F, $server, $defdepth, $depths); }; #- SVGA screen section. print F qq( # The Colour SVGA server ); if (member($O->{server}, @svgaservers)) { &$screen("svga", $o->{default_depth}, $O->{type}, $O->{depth}); } else { &$screen("svga", '', "Generic VGA", { 8 => [[ 320, 200 ]] }); } &$screen("vga16", '', (member($O->{server}, "Mono", "VGA16") ? $O->{type} : "Generic VGA"), { '' => [[ 640, 480 ], [ 800, 600 ]]}); &$screen("vga2", '', (member($O->{server}, "Mono", "VGA16") ? $O->{type} : "Generic VGA"), { '' => [[ 640, 480 ], [ 800, 600 ]]}); &$screen("accel", $o->{default_depth}, $O->{type}, $O->{depth}); &$screen("fbdev", $o->{default_depth}, $O->{type}, $O->{depth}); print G qq( Section "Screen" Identifier "screen1" Device "$O->{type}" Monitor "$o->{monitor}{type}" ); #- bpp 32 not handled by XF4 $subscreen->(*G, "svga", min($o->{default_depth}, 24), $O->{depth}); print G ' Section "ServerLayout" Identifier "layout1" Screen "screen1" InputDevice "Mouse1" "CorePointer" '; print G ' InputDevice "stylus" "AlwaysCore" InputDevice "eraser" "AlwaysCore" InputDevice "cursor" "AlwaysCore" ' if $o->{wacom}; print G ' InputDevice "Keyboard1" "CoreKeyboard" EndSection '; close F; close G; } sub XF86check_link { my ($ext) = @_; my $f = "$prefix/etc/X11/XF86Config$ext"; touch($f); my $l = "$prefix/usr/X11R6/lib/X11/XF86Config$ext"; if (-e $l && (stat($f))[1] != (stat($l))[1]) { #- compare the inode, must be the sames -e $l and unlink($l) || die "can't remove bad $l"; symlinkf "../../../../etc/X11/XF86Config$ext", $l; } } sub show_info { my ($o) = @_; my $info; $info .= _("Keyboard layout: %s\n", $o->{keyboard}{xkb_keymap}); $info .= _("Mouse type: %s\n", $o->{mouse}{XMOUSETYPE}); $info .= _("Mouse device: %s\n", $o->{mouse}{device}) if $::expert; $info .= _("Monitor: %s\n", $o->{monitor}{type}); $info .= _("Monitor HorizSync: %s\n", $o->{monitor}{hsyncrange}) if $::expert; $info .= _("Monitor VertRefresh: %s\n", $o->{monitor}{vsyncrange}) if $::expert; $info .= _("Graphic card: %s\n", $o->{card}{type}); $info .= _("Graphic memory: %s kB\n", $o->{card}{memory}) if $o->{card}{memory}; $info .= _("XFree86 server: %s\n", $o->{card}{server}); $in->ask_warn('', $info); } #- Program entry point. sub main { my ($o, $allowFB); ($prefix, $o, $in, $allowFB, $isLaptop, $install) = @_; $o ||= {}; XF86check_link(''); XF86check_link('-4'); { my $w = $in->wait_message('', _("Preparing X-Window configuration"), 1); $o->{card} = cardConfiguration($o->{card}, $::noauto, $allowFB); $o->{monitor} = monitorConfiguration($o->{monitor}, $o->{card}{server} eq 'FBDev'); } my $ok = resolutionsConfiguration($o, auto => $::auto, noauto => $::noauto); $ok &&= testFinalConfig($o, $::auto, $::skiptest); my $quit; until ($ok || $quit) { my %c = my @c = ( __("Change Monitor") => sub { $o->{monitor} = monitorConfiguration() }, __("Change Graphic card") => sub { $o->{card} = cardConfiguration('', 'noauto', $allowFB) }, ($::expert ? (__("Change Server options") => sub { optionsConfiguration($o) }) : ()), __("Change Resolution") => sub { resolutionsConfiguration($o, noauto => 1) }, __("Automatical resolutions search") => sub { delete $o->{card}{depth}; resolutionsConfiguration($o, nowarning => 1); }, __("Show information") => sub { show_info($o) }, __("Test again") => sub { $ok = testFinalConfig($o, 1) }, __("Quit") => sub { $quit = 1 }, ); $in->set_help('configureXmain') unless $::isStandalone; my $f = $in->ask_from_list_(['XFdrake'], _("What do you want to do?"), [ grep { !ref } @c ]); eval { &{$c{$f}} }; !$@ || $@ =~ /ask_from_list cancel/ or die; $in->kill; } if (!$ok) { $ok = !$in->ask_yesorno('', _("Forget the changes?"), 1); } if ($ok) { unless ($::testing) { my $f = "$prefix/etc/X11/XF86Config"; if (-e "$f.test") { rename $f, "$f.old" or die "unable to make a backup of XF86Config"; rename "$f-4", "$f-4.old"; rename "$f.test", $f; rename "$f.test-4", "$f-4"; symlinkf "../..$o->{card}{prog}", "$prefix/etc/X11/X"; } } if ($::isStandalone && $0 =~ /Xdrakres/) { my $found; foreach (@window_managers) { if (`pidof $_` > 0) { if ($in->ask_okcancel('', _("Please relog into %s to activate the changes", ucfirst $_), 1)) { system("kwmcom logout") if /kwm/; open STDIN, "/dev/null"; open STDERR, ">&STDERR"; c::setsid(); exec qw(perl -e), q{ my $wm = shift; for (my $nb = 30; $nb && `pidof $wm` > 0; $nb--) { sleep 1 } system("killall X") unless `pidof $wm` > 0; }, $_; } $found = 1; last; } } $in->ask_warn('', _("Please log out and then use Ctrl-Alt-BackSpace")) unless $found; } else { $in->set_help('configureXxdm') unless $::isStandalone; my $run = $o->{xdm} || $::auto || $in->ask_yesorno(_("X at startup"), _("I can set up your computer to automatically start X upon booting. Would you like X to start when you reboot?"), 1); rewriteInittab($run ? 5 : 3) unless $::testing; } run_program::rooted($prefix, "chkconfig", "--del", "gpm") if $o->{mouse}{device} =~ /ttyS/ && !$::isStandalone; } } ĻxȆo~"<`h\-L 9f> L"h +P)-;Ryv$,ywyum,QD{W,m9%n'~ٚz#k@{yM`80Re;g=-* ̐-HMtz7H~{6]džQ~!VgrsI5|7qHVjwև ؟Cnyc֨Xa>tZ$cĕf p/$hq(ߞƂm=+F@4w BhOHIBΊL(e`^]Im뵾5&9@upT\9lM=3Ȧę܆B4—zg\aD 2&)2,H?BgCڪn?d* 蟠l*#9|? Y'!.$&2 mDwAϱPWihxEg)Y-~o Y0Ju1#%zd13^TU^ 3NG5ͥ] *BP5.RM?٠#YUٿ.{"[kB[?,:Zq*C1zE,?;KúKa7uS崮cW 0}H|^*uVա19}N4zu/7H^1a`7p8UB]dU`u&L(~y 8 ka9ѡ1gY"%BV N0YS !6.ͽWIh㵻BM4dLw&͜O-uD =8aiwŴ:)׉VQՃY7Y D+x\,&1jʧ ,ɱycy5;LBFг&u"i5*ӱEuk6X?<'tzr\lwX({m\1 &kBqW}X33^ASLP0,W^:DwP P+t)2\ s՘JnƑxȔV xحnw>0Wp|\$%V +M&s )0މUr^B A_LCBcٺlelϏYKc:"ajyχ˪!;Ѽ ÚUԸmprl-BHM̾kq1us 7r0"S+!n5w`E2fwD.pgn]b=!\x=_*$Tmx, : #BPmRj oOa=£DY;x \)p<,W[@ c =,Qݜ~ MsV9WQFJЗ2櫟[Ɂ4vUJU1{VkV>E66-rd[ $NA cM]ivՋ nUyd<ȓҡu4<Ձ?GÿoȲCb30&<hu 95)pChZ(Zyȗ/kk,Jy_t Hu8!9sDisN`gyq&L7soBn QgQOnɥ^bm=^+_I1O8vh!8Q7àtK0F=7ƀ h#p} Cwtnf7vR!@p/A%r=KIՊ :M82l-4DM~8zh=j̍ͽ9xH}p@qNj 7N&lJ $6DpP}XɉFA(1ʤG&*D͠~p8G)8-oynM[g// Ldݳj9[#ŠM1H"t*oYx e*"]Dw5mЉ =\w*Qs-gTW-$!>`l‹yvHUtWL:I#3A.bw7Yf 65HH ha#G P=z;t1'[Rc} ZQ9-th Gn$TtypnJ*cP]I% iM(uMsK$&4tJ)ܩFQCV#Eizzȶv)<ڵm6>F 9~9*\/񋳟zG˽;`zI`UM3ҧQ:#U 4Ѷx=$wM>5sZiU&HQu5z_<ѲYinXԓٶ}L44ąnD"g_F?](qfC5p*lʬ(~(p=d1MS^;)`Nt?zbd [9 DP0Cb| 8%-.CցJCC_0H̥GgIZs5_@lfʢi#~]( hat&վ ՟)Pvm}Jw[ 8 TYӍ(n$\( /jI!s`<8]i0f LpE`Gc7[(yvKo~Je aslQ#Q!8NB5ƨ1t JG1-v0@K8:PpO IT$`*"~ 0AƊΚw^a/V>KTRC|-~^;p^UVrJn3)ٍe5zi{URrJGXf7RW !' YD̎:,ljANyҷ)bxmAqihTS׮>].6qCI+*%ZMFYn6ܗ]x]6D~BhZ),lݭC2 PY_|c Pg*La͎ʧiMD=R8FZ k"<-p:JH;z!@z|2]NsRǭFej{#һgs+ Y A ֏9h1q]Kf?k9]70mk>]'ED3{=|{vrMr]HAKz|}q,o]k5[TM >fN۫r\?*E;C]}0 >)bS2$H!2k,zts}#-fUf|Y-&%Ʋ *Gv5Sf6z7X` (4ΦZ 3J#U)PRq6X#CgD!^vG"^5\:6'=(űG6Sd <u#w"<&e` RI7#GU;:}tix(y,|#g}Dn׮o  R${ځ)B7PU2|I~rr3x1w4F=,Ф{x:D@;z1sbGןDr%c#>?]뢺T=Y,וQu|1aE 7}QE%ϣƖJJic>&Cx|[>Y2 CRHj{8n$6LٵwpƱPuvWJ g5T~|:JCeٖAz/Bⅳۡv7&5އ+,ڙF(rTN)cw6*$uٲX* s8`S `5u|Pey3;Po|⒩&Α" t/q*Zv9Ko *dT. ?zm$ƑԴ9^1* XFH>_mbc]oC%G- $-B5x&P?vgz^o!Uyk#QDZA%G! Z9+Q~J͆RBD߆e%T ]Q]%BjvV̎1=ݛ';ܛZq ƌ9Ϩ7VW)65 *#D$HF0.߳ٮ-SRkYvzJx(@ips}VMkCRqv%@;$>@|;Zuǖae,O͖@!JYՁ xSfpv^g2&Xb&R{KHB֒Ɣ"²Wtjc`pMaFXYoM#OSŠށWb{ 7 +0SQ\}EENjVj- p$Ҟ ^n{"n pZ]흧s5_6 Pe Wa(#J[;ҷ&': ݗt.SYG jby4n !$fw?B teHuamd w'xiGO$wi-Ar< :_Qbrxv_+7 ul^&@Wz[#3"e7+`$DA$cvrI)76&Zߒ_TAt]N^?x&|JK &z\uGCL,98dv;rB\LojzǑ26m"t~HN̫ɼȠ)u[3B0 Ɛc&FX/֡=38h]U9hn6XZR|(JK6xk;.3Q2!9-ya^M~8)@![mđ^z)# e٧Bu7>y{Uf}UnX)!xU!l0b6Bq ߹s0]fž4ye@ʯ^@N#;YTf :+~+];A:. :Kpe,]ե٠3&^M۟Pl憩$ˈ ׋RCj'fJŐp½ıL<()}[inF oF9vW)]aQaDE$`cNo f>T:)KʲK$IF혼LpPar?kfw>(s)rxe[RyZT㟐&I\;˲a`/:p< S(ce$JvOnbFVYF9bPǙc ߝEM19Zy!l8P&PL_'I*N.gJ^ A# MQ=bKk6c] e'p)yX5 dijZ] +/iV|L;@A܇js/˩+n`ayN[C,ud8HF<vsoZg˾_);U{䚺d0V_yD-85{5'(y)5ZM%MrٌBHKkR|0 s͐ASmU `ȐPìY_4C^݈9nLɀWnػ.P"jj79 W1x/?KZڊvDoxaʪqC=)o, VApj-RXiF4xm*ٹN| Ӝhdl<7VHw,PEb0׽IE:GC~t:(>ܒl}̾Byiql"c.r~BV)'F+T)MȟyGR7^ |GNI|+Vhٚ2qQ!8R.CW%dVwyn͊]Yc'XW( \|GO.T،ʇ JB l.Le-'*ܹ6u/^}7Mgm.[՗ tl7S2sgb\-<͜mm"iភ- c| TݻS-u~<؇TG21V|E\a0̯âtOeݍJo;:e:[1DtPo9r=b~ j/, 4Rl+۹y-/<~JMp>$OVRnPnV7'_Û PDQP bguJ&G +K6Qp?" rgg^m~ (|+MƾhVRS"!mڊR5/]fxu+(֘|33읗mD*s4::=^@dm2RI{T4M%y-< a"C[# 4!XAlFqWE eHľ1dzy%19IH_F_!Wxw\-N$3&k<[#n V?2|鶈R^dVeo$J.cQK=2%yjArs-iAsW~Sj#U bRnlG(eaRd}:CyrfceΨV 2&5EӊA)IV>vӱ?Vk!-T09i%ÿ?O`HgU XoϕME @ C zԦRF_P5,3:Gg@q4*8V]y+qZS'EKI~k;~֛XBFIz yHx 9?K%!7GY,'L^vo^ OWY_̝w!.vA md|c8]Z7o28T'U@x]RϼҺ/֫:Hg_X?ْuIXP7W*Jƨ/ *0V:vA۶NQSxCkق 1CO$Puy'&2&Gf&QYxai(PiqIgra} ZّH/[ze/BHvsy@ A?)ˇu,5̸PM%9QG|2׸IK 2jg'V3K[f.L!?d0CI jby,p;Bcd6 [ݹegW6SHϣܓ#Qm~;#Fr_OW |^PbeN xz2LtkMy4ԦPi[SqM FÎTjX_-]ӸYkj^3j"kU$)$ayTj^&|P>0Շ,RլfNF0]Ůw~Lkz""5`0wHUD}'VzH ݤv|85Ð Qw1ᖖnM5-[.(GD#cf[ E+׈$o5@b闕B~^k ϿxZ (OTJ?Uy9A4۩D0{ǭyyFX%5+um+ߺpewg"Vu|ScR§*fzrqH?य़4dwrQ:ႃ7-#};OHBVCvලyZ|0|`9k&V8;6-qF'ŕ-{li8V]oB)<ĉqhX?F ECPgsS󮭞[(%d}OfjsSK-G F;AnkMM Ek&5V{io%[Aa |:o|PFyS\P,RPPLO | M19D^*yxIi.K> \ՓV" SqԝR#ǭ!7aa[q[x\&ەص|X4v9=)Ν)nJ )jL>pr_?}MN1શםvk,5xZfa%AzuxX/ eCʎB 0>u^]A` P:i>3l{]yv9lSgidϥ R@IRUCT=~})}@~]M;?|̰>5"7'xD5j_Two.GΫźXRE@JvUcF໦_)kf6Ki0;θLAd^ͦK@Yd .1e56g:ezCZ0;uHw&޵WsP]nU4|5,a/ݸ9fG=pW|Y`c|^NL/"RUh7C>W= _ o_ 뵊H4#လ {be,4NoO.x+[0m#},`}̖dqXbrvOhh2LJI~XłRNFY.Dt@%Dx;,Oz__#sPyӐjEZbGHoNE$BV6O̮Rc%zh6Oh L&L˟KzmN5daM,jkdM ~JNTTPOnN]/QMӕ phJtox7ޙ-=w[re>szaZUs)S n3ڈN˃`pצ2{CQ4XfhDd(A"8g1OQr4*tnl+l7 ĵ Ϙ;aK6%WYxiJw!0K{+|*iRaмJ1e 083[F3_w ? t@ܴ}URٴëRSEv$<[n %-U^_崠ET1 4QVs0 bɂ6T! M@?d0=e130roSA;@'MP)&*4~}5Kx IP=ow4) D&A/6Ks"ǯz*9t!~O84j7,c}@FDNV {WMX'4ɳ#C@_h|cҙy\# J<Ч$R:Wxh )'0| Nj4tY^B_ %fd8$(*o#D6vV \"['@IX Sw13]cbM%LO8M EKSn/fX 0L96ԂMŶ w="EzA61xpe f_tGpYg.`;OVr~-4!$/:#1/E qegr]>NI!•l8e юO̪+t|_9-s}ou3Psm%w"fZ"֭LTGs(3+{xi=A؝=`rFfIZuO;mWKꛮ*G6zT]W5`.C.R'捶O+u׭| dU34 ?ly0Sp̿Ѐpqh~%;y#`ߘd(̸pXS!Hm2%މ 1 '~ C6Akx~*11ʚ5g:{$F*kATQBp%6`ɲq]ǧ㕜h J'f/$OCόlm~?#:W3m0Hl.eR`nu@FWЪAZ5WD|oiQ%_,/ }W:x^BX8/HRѺ1^V9J3Sww;zTe}2**#,Ƙ,4`z`˨mQ(0T$߇,')>u "zNBԾGp0#w) uVc'4{BM@" N,NVKU˯g)\+Apj@>_M%Hq!5;=ZKL~Z׷0~No"~cӶnmCܭ&13Y!'O,5ᝤyAМK\;i $jF 8Ay&mnAݺP- nb V8%j$Hh\"Bd7" !'xD u<*pҰfBΊ}RKmcAFc)&"=7?&)uH iQ3>KN `h!/ш;N YՈ̷̓b~fg.foFY̓zõ*ݘ[jT-col4{C**> IɤPGvhCC!~ózms߶2I=䏁S 1!k8?՚cϺO)= \9szX5|u것=/1-}ٚ>9xs~) q=Sl r*ǥ hedRuepn5AHHj-a4Q6~(Q\< lyA™s76xƢ#5#jM6I$c %k,"@a㓷нzﵕb1 ֖. F8v+aI "p-./ ٟ;[qw腀-:Cm(t2Ɂe!øk$`VPN?Jm>95}>ɻAHDb/n|n34EC`M R: 4:l^Pn i-bkh3g/hKګڻQMnnڿa/]3Xk9۷%)N 0&QHa"sY&;D9_N[)Ec9%L}-B |#h~AwCg(\tJe$c;Wir} QqmN!̿vʥܸXqMQxqXQ Y{K}TZu+f3'k!KEL28֙t=kXF*G5%_l5|ѩ7؎chZɕB{~2O0w?-~u݃Q;ż`-(RattxSjAMw9s<>^2-- &@wNmf]Kv"ܸ,Ý?u̖b_NDPK줊}w*v-Tg>jEduu,9N)ΓseJd0/.[%;eUbt۠ň Zpel[4uu!W94\HV~2ad1;!_2tODSv /}k)ߖ%?0pLq[g)DZw]-v {_&wvݑdu&JOjKwkOGM>7 W[H?o57j(Z^=gYv4);$eSh r6chbv[>,&4*HuPKc%7%*6255t%Pc'%C\@%pQ˾!>iZgpuJuYìG%p.aUF&$ Ntwd:Qv6FOީeM#4 ߂å3"B$=c,s3io<ܷ)p^e .eXl*s`K6̙2DWpO3mVSW\ʹH;b.oJVw)PYC"q8JyiE)%RE ? m >=Mr}}1şFӈE=<"~^l֧TU'QA3yC0VtWa2?}Wgnh6F3Z{ҡʟx|VFd5Z(Oqlym=ŷϘ1W EtĊc~$nfP;P;gDj/0t͑bqk |V #_{N㧉л6m s}|' 0 ,;B4 DHnZ tЌ'>8t$'#5#=?XnJa3яmԍn}.69:?(L-6D-ŗ&K,Xuvv۹k7|AyVd_; " zKS lľ֦f9wKrӳ{y%9ĉk$ fpJ +=@[T%hS{6u %#W&pFž IO,xAjF}yG}t!1fǁ!x--5_*͢)Iro~w">[EmzN(k2`鞃xEau,\:Nokac42Œ:U,o U }Z#-lQSˁw ;=JbQgfCϴ:^Sauź (?)` ӻQ\w ;ݍ$i]#<q! yHHhIq/BbF{uiҎ5*^I8_UTA"$DHkEX\#|*&{%D<*" 2g?zjf&6R8&R5fuq! 'S15(x1K5{x& !H-ڿӒpcX?-0Ĉ8MśDjCDY5(M~4<|uqp]\PS~p԰vPWA17d\-XA.d )ї6@S}*|D!=")> TW]rVTo=)(xZBڂ{|IsZo$_7xPcvNQ\V6m+o&"zD?'DzI+He"Br}MIWצ;>&*'>DuTXZ?q%^[Np9gA2Ie%}@5#F$j{|qJ:.R)>7/MzL "t[ zpv2G6TF=_A4cv͛ag ћM5^2b,|Ί)#.q6D_a<<PVq~Z4עގ7)U i6^RyQiԈM^r](6tu}:2PmߘK+sTӼaOҖBCU6O<6&_4OU޵9odrfyڛPg62u7_,ϳVDԂ$Z6d={dF)*El)-0LU,k9apHc{&0VDM\]s JAOva$89vPd~._"ӖCZņJh01\8/$i# %ֳ@Xك#Y%JItꇒQC-FOQv7{]I9#Sz(O~?;PCo/o6W-j{8F "T`$zu]:{u06P$)!̑i9.YS!-/qQmXW29O 9䷃qb}@s @H3B-u՗5`Y8^hi &;RPG5Fbw֖ 8(f:ߟ6.#Q U}vB# e)O3_IfԿI/A9MS䩓b"F0g"Z.&)oĔz45Qwtuc-V4xHM&3RM+^O㵫s" ΅ d^I2wzY`o@mZOaȟ65sʎ\NIbN|yG06Ȱ(9JÕægp X|' X&.-w%'B @A|!(O{b;l"b V`CʦɽVVă+cqQF}KӀef}=ǯٸ,ΛxDrْp.MgܱHvzdm,fY̡]hmݦMk\<n~1EV(R Ҥ,Bvw\ /uא#mX B3^/5FyerZDUҼ@dNU輥8{,U Gc:~v$oQl8U+O=F'~`4?wE<;̼MPR>uiT%W˯)4g.+eefj 3j8Y~n|t >38<+v6,S@L4 z.P/55WcMM5*Ql+_1nο`lYj$6#][C&V#$/A=1pJxWR+27ãvGu\j0Ollm)m!ʹP"U>]Y@SiֲcZ8JZ=s"o֤%q8e]?[ ">xz '# {3:7d$(DM-O@ 턑p6kVOd,H5x2b,bΑs9V<4 Vc 0^nI 7Rku͙UTfSD+nĢgrC[I.%ՄK</Pb.FƩj7dzԱ4b= ^#/a3zbU6i>0 |BAYUu?Xt)&pgK4ԳK3͆N7T s9DwCWʵyrFTܺ2/mi ׆ dϨv=4'<NScs}{Mhʵ~h3c&pOP3S I>ݸv:H\ {o69Q~`[*_uL(qB,vV{[Z^a0WB4D Xޘ^LL gZՈ_X1u퀳M>!lM)!ka8ul?t˯d U o`:S|Y}?diЧ u|ӽG+`V6d yLnAoY00C`joIN=yǀ[HK,FBq,(a"g.;s,ž57IHK~ a,ac\-b1/OBdW[G. hG.lh\ۃ"|X6_B|d3Tugc$MIPN9#" \rD(VS!% ]1KR#G LVXg,gt0bsXq3חp%R߈ꑿ<()"SƑ:jk\sosivAG0?TcQ=\g\P/xn9PZ7 y,7/io!#@//\CN a:g G֌+uh=PJZ~2`|.u@H#+=Mc`JӚ8/ޑe~id_8g VLyHo,w*FjÃ86߀ӗvI&:^\uCLT_KL LLsӢo U.N~08e@i]bڂw~IHz"͵{K)Te]q%˽ZF` ˱0Ƒz zMgHuO4 탌Eˁ+N W:(>٩ swg/p+DM'dR/'Bi{E 𯛨JH:sc/h79# !87qa$ #>t>pi.pr*۴{HǕC%KlIX;ָVx[0Kd\34}/i4hOz{JPtኌs,Dt!ŵUdIe18Ou)ޖrD3|4">5ˣQ2,P _`Ix;dMilT91 aAZ3Fd锍ָR`0P=n9ߌZ@ /檴O:+p.ʡ$󏗫6%mb?*G|c=EVpw!] *Ľcy-^Ge}"9C(书2T:sͫRc0"SrTƿ䶌3˦ gDE[˦wOu: '\^b cVQ(\_eSMI(E?pҿ.QDZ%wfe{)vB imϹب?B):Ϯf{zZbȽ0C`zQ̝7g)H"޸ 7Pxȝ=gU܁hGRj&EnoTӅnGGA0:' ;4k]Z6rc1䛸{&^ʉٙwЊ`5:`gs\nX^"2ov'!z:h+&4 !5P)'{$2IrE>:TBHFrl%y"qEӎO71 O )M+rc!Ш\wG2kI> ,HU:# D8Hax d9E7K=0ΔEAv yB v]1Z a.cy6:Z6OM#SzmQB:WLuſ=K^vGY] &gnwm6Nfp%4Lup}sڇ՗ kGR!s' (z8 '6PޥFDV-n.Ru $:\Nj"+Fޒ4hNOn dC> 8ֶ8m'XK\/Hr6=xiλvCn&0U1!8}Vqy%L?kwv. uJwѧ Ƒ$~!yG|l,*53-RdvEȰrKڊ:4^{$ UV4΅#H<&(AM65yZfh#`U‰_#N;1= i^E|ȃGٮAO@iv_#3M gSI9}d?>_pٖ-rg< i4~J'X&ڼ摕]u A>k19H|4~>wO)#kv;2{(Dfp 145>o@*s&?$܂!:_n.ʗgCy?(lЙEP6;,@w;o^}#a;l ,v9S*Pۀ+4͠xFa=Lk{*I썯{'hX, "ƹpp4|1N lzzj-Đa諬u)df88Y%{Ꞌ6$} V3<(X U,-"4fЏd)#d@̦Cĝy+p@I=||eBudaЬ^V4_|vkl&g[gde8/.$΁{/L,>Zِ~7w_:kj{ p;큩-!4H9'4UVI=_8Y2a4KWnv (c֌w3f?Axjrը]}J@ vwҌ;TRn>Ed WףA@ 9w^Xzja.P*̋:xݯWl9qѸS'X۷@2׻-'81`! KMiԐ}] zd^il/0RSn%u˳.:1` %dT~}?'(W2Aá8S`]Eɪ+"lՈY#Wr~B\hceAq)B6[9ux)*5@EuU\Ӡ/*țJm3r]#?m y LBTr_n\7VBԇN~fxd_)A RւݺдpH#_\Yv",Bbld?JKtgX\k}ӹjߜqZ9mՑn"Yb~/RYr!(V7bo `HFAmX"ĂBy>.kcWO|q#qif%I7LGmO`oC1:יY1 "u(btoFM3rJ!CyG(Nl.n qYﰇG|}Gb2SEqptG}c*L}p,XO21T[α2~{g D85tY#Al ްBvR RPTN)?~¶k :P:A͝CZk~Ig=#W8C`Uv4P x[9WK7n} {sM Rտ!!2ZD OX\}+x!WێPuBV$oMQQKDpbV y8jQE^w>Z TcC=БT~3\N'a1Ѻ*~%⤨C#_㖱19uMDUږy#\{|u}$B%tA~ޙD&õ@О6`oܻol"˔~e^D2T s4CK _t!&vЍ4, p3Mo 8S _1@X9\ /Of|-N XԘY9tawhQtž9KM!p;ҢA(Q5N(-(Y&Q SJE3T%rfͦYB'gJjjBq~@@ʹ!†VBFT\"7][р%lEK;D~G-KyF+ 6{־TT޴=te:iQ5T[s-X!z%o1O`oPA(=ܧV g3ħ5\X`1,\7vr|Մ3pkCf\^$5Hz3t1':Vupb<&{7M+C'zzX(Hqs7wZZӒu*(SB)Lyyã} ,Q̞8(&g?kuݲ&[?۽0 9Yfc$ DG$b;TdMs}~*ތphwRBC/E(X7#p\p~Xśs<~r a; %P+d7@i>vXiZCQvTHVYb+nS V>?Ⴣ#0Y,+ys5D>nmXnWb犝~t_SݟxhEwDtIǘH{MKtJquWsekZtq0 ً%*ajN+v4  b 06Yb]h ~2!aL9uRd ˪x)׮<[eJGʎ/-V'@"}D5&}/O&RwOd JcJ29/ȜJUAWQ$\Ire}qPMm?pì$\?~B$I%ik.v,r-"3;&pէAG8>ՊO#.me6Ʋd8 G4oJ՜cB.g[qCВ.m9 ']hO}9)C/ -3ɲaʆ?^VN1I]^b"ZR1X\Xl x6d Vw|JSs%˅۔ u05p %k5a,&Ja W?ds{8zu~:h8[oWI྇,| "=$]q7u&5:o)/roWiLmŅP8n #Qk4ĉdL~W'I=@l4!Ț%=?/X)eN} <VEO7'z\I\t#@ۃwg [቏>an~4Ɏ(N@Ђ!١ƼHa9I EZ}?;DCQ߂:('{J.XK}i<&^n鄕xeIyz޾x(WĦԭ(Ob.fF{J5ߑr[fDT@Wɢ M@ox'm>u!׮*\:.dQ#5FqVv(QX`(JG,r )U_,$2F)shq >ͣOȋwCM$G3/i/?<4Dh'3 3Fj1ƱЗ4?F)CD& xxi3j/KC)-iV9k |\,NFmMLU# ؋rkoV8hcB8,9_`kU5H '3)، \z٪SD~tqzL+L˵y!^&%:1]g~ dUeQ}FL溋<fT`J~H]?O}?|j|DO Q,(-Ro9J7ndW450 e߃=pə#π0Ķ_riBDė9rL1n+:tYJ[=uG?7;c{Rlc>nfŪCJ6=VTb^S]\l"/l{ӛahH/2JY/D4Te)~D8di zuȤ}Ymſ[,h W-lȆ SN'׮\p$MbQUtzޯoV[odl"`a#%B 9l9{nOXbŜѵӐϡt!r/pS/ 3SDBB'G :~ ދd$9L$)! ^GAQ$hVCWFe]6`FǨX{QxTiCBM۞$i"t#%st0:|,p_閤O]ao;eM _e>xg2]1ƼI9I.i+81?ڙ"վ1H'kPc!UջKvьkql񴼖" w@7 t Q@3-΀e;$#ƫTPZ䷔Jց?p!U71(MQ;l?Úq(X_ }T ʨU|88|!zVM?/M?UBLL? [*="ƍRRmnw&]l Ki]+"`?.3ǢNoύXr$:j߀Xo-X#lkت]63W60 O|v?!i8ʖ\D?#W? MdFkت?lp1ȅU+NAP~o$ REO?Yظ \WQBc# y I@QzqfKZȾϠb>"֣Yj ;rXcG97ӽ5}mګԏ$j6S T$pG\|-vw_F9%e^*lhXj|monWsӓ^PG!`[2174;A|W!ߺH6)nf)Yی]vqI]' ~)p:KۂD]gțg@f b)&=Jw٪u0A`=U-{1e\$EWȺJf.P2Ŷ+(̘;D>6KHnMQ7|i0=@c˼#YE1%^/N\*k?2yw"%j-(?˭ ?]N2<=fM]0gj=V{r;^8ж(0_lܣYѪyM[ub ٽn6۩%~Rb'/ H5W ">ۖ3m*PAj/7:Bf"Q͐-`m n'4_:d*Ѱq8@TC{eU:ydʀ .8N.:O+ Iw m8ك5~ݬw{ ?zѿ&On d1[5_6ò"N,!Huk2^l L]`-z*}5ᚁ '9gmz|AnΤu=ۊAy`0~&-1Bcub V_ xǬh!FFgfoA">Z`)ӨCi3%*.ֆWvVjBT)WGU(UszyPB+<+7PsGϼJ: | V;/ZnU;9V@EZ;eg;ֱ`.D>#5PGOT[4s+fj> HL ۲kv7ohJ{Zn9p]W/ }sH V;B9 9(ɬœouN_35sgk)"zVEQ6nKgз&7>LjJTe?JH gK`|VVG< '| "OI/w) 2H#1VihkNĵlr5rMQaBՂ^H 9S [.XDuѭwv4a6ULXsYV 5]jQ ZVi_CN.V[Svw~{y@X < #mK_-h(;[DJΞ).D4{* rkU9f"`vuU^ iu9ë︟ďn#>Rx68:/Wjjl;C;}mMD6YH؉6i^W(]Ԑ)[tCU*U`Iw_o6 j(ܽA0w",P@;J7Mϑėy8]I XbAd;VB~*zk?DAԊvΈ 9| OlUR=6+$6 G]v˧MqP_'Mz@K *T3+{#n^;3$k$Cܩrxo//PƥgQq+׽LQ29[Ues7%gʢ*O2}@ڶ(T-_ɮa?+ ޛKbve5\[u)"TQ mTj9R_tڸ*f̞fUEˉ+ g(xLj6xP4Z-3 `2O+@ &lfs2/cox`A)0" 1?ͅYXu,Te^۸rHH fQoN)%zELP vHF!NyHoB%#Z.f%3;̢ʼnxd*XRHX 5x2]5*C1xgt]3LY&.a8Z uCx,-zٳ񄶼4^zĂ褰=ukF>)? Ah#t4lPαrD+u:Y%׋UBh'*APhGk`&AZlzze ʈAlGLl".%s9&#&"&2dF(Yϲwa3HWz.^Slq6J'Ѻ*9-Zc'@(0XysuUtla6 NT'/~hod_ꆣJmD[Bh' ,g@B Xm:V )/ObZwqUK*; ,"ȋa"O穟Ԑ3Jkhiź:$A{@;Ej`)2Edh{ۯ&S/_ ߃%N =CX7V|Uxf~yW&aKt!B}Y l[=zDsg81$+Dg;R;A $՘vB!ۇDʾ<"1!DVii[I} ʢlԻN^5`.u\,LFböfPVgF1I͔[c؋ 6ʖ]CJ2(#K:]7x7ؚ9>ԟIJ ?Q3gC|⦕,(5q`J̕uMYE醢f]=& &|n8B sL%E'ix.v(fEj?]!}rל.剫0 0Il- #u(-H|fP] + |S1 SbŬbMԺk9xнmIT.%.-[Ab/geXpJ ltV[>͚(홓qD c'` %&sJC 2 M#,Ҍ ]B}%x;>%9,kTwc D6y\GXad2;w|A50Ux9]zMPhj~"@FO͉}rҴW$Üv]^}tKZ=Exaij ZvwZ9^}%Pe?)z#}pںsО&dR&G^pT6ٹs 5ʈdVu?/%܅"Dےg%g 1*JkZgj:qWlUw0YZ>JN=nDIG A扖`Ydw_Lu$g^0-wQɾ:ttԾ}.6(?nvp2?*5Ȁ3"3bF$*nP>iUiA^x> K_e;N@ĥNE 9ݰ9Gn8r_wݖ3b\).|#fJ.{i~<:@u2 ,tf~X]C૰LuLI-BMZ5;: tͳx9!#gRo IAF^]քdʨ8 QV\τwQ UZN4z170 Gw^HZRYzdBIP`rz`׽:Fj=(vlb+"'\'?2h&Kh9^^ʳw$щy[$U)qC':{ǀ>kxzmUR:Od^a:K]˚vfW{c7ItA|_J~.ttRr,ԌXzZL 7VGPM(ջK3u#twF*%7Gf২LpF3=[|+7XNE6::(z֊!1{Q iY,3*SFpdB݆D3$4(Mx&Za {EOeU*Cy\RW햁!dxݿcIN/W~hgX@N3cTL[T+.[^rQ M{ [[q5h"u )~sv,QCANiOT@wd{o1=Xa0#I|V8)_[u,nϫhX7[3noWf s'S^X`#d\&9Et9VNi&fp;RfPv̢Tj09NDn~%4U8Ϗ^ 1qCIU>\E7 )h4k%0=bE?ކxAٜ*@nd6@y` K33,f6<43WȌ2Xu]*Ryphƣcq\]vנkte3X,cB,_BA1{?⍛Js9;FFb/D8wc8jcЋIx-{l* 1 @:gQ~&.ˉVE;sF0.=iZc7x |>HuZ#<ߟֹ}@%%G3T߮M6EKj7% /i}0+&%'IejDqƛy1cӎ@NjrE&}[ܰ- )b/n`l^\ n Yjc.^БpEC!a^_4KN0,<>g_,^ aAGmPp5KDY |P!@M:CIi0U E实aꖋP cwYF'UM 6&h=,o>n΃+ s"7dEMtZNɚگ,,8a+_Qi`~~tSxU<oi:m^v6W~̷hx}ՏTP^`0 &xv4~R%a߆܄) WZ#3WPͱWJ(_>'xji4燻sU& -_ZBzլt:R mGݲYJ Lg%Hya`:>g9JAuom|!VDXrTkFJ:k, i!-b-_υC-d3XAj ܴG~j8(W1ǚLI~L/n'R1rLd  `Q #Yc_f" y᧒ ES@6S҇!zHco6lEυJt;6A {2&qk\#3c{;cgw:wNSO!iY=;]n`#F4u}d \%J}39`D͋FM@8rΟee"i6ECS3j3Zw9e9]Af=y>'?x˘>S^]kG9>Jأ('iNë%HAJ=J=*E $ՒveK¾Zoj~tH 5̄͝܉Є#+mGkq⷏j$ N^%71sۭ_wՋE#C `겡"죈{뮝4#!⧤ Ux=H)iXf]-9Z{7$cR94jq(M- LJ]+8y 9E=[zcOo2z1"*OǢyrpp&ᛂҮ" 0I z턄KUn2a{:lLGvh<((.3*EE_x?km-=szzx<~b/%EAEo9FT:$$]ζs*IZ6W F=-ήS9 Ee**zܩ=u-ԣl$6Xb#8mg n%k>= (0w}Jp@k:c Zjcl:G4ᕇ[l5 n"o J'e /hugRQ?,I= El%mb]谥iL F6z_σrjՕY6@:DȝU>r'1e呴>{#󺘺&<~w=<H \w4~I~@LYؔX7WG|Q+|XI Œr\R1K8ڭoqXYP0GCn/=}@ٮGy`(F[ėoq6vTr"Ӻq!N) 2op%?$Fٵ('AVh&N} sQP3c^X#y=خ{vLkX: +@sA20H&Vps6)OK?pʎqܡyӧq9)ɤWΑDVP2Ҹʁm6 nf= wy.Bw<2ܼl," Ysd,zto^ڋLRCs0OC^mQս۱FqE&GZ_Ȝ!3ᲤONF&ڦXQ\(vaMg fq݆s@"Q C;!U:NK/:TnESWmlYv8/H\Ĥ$0Q6L4mJ/ꉃR1߳%.0/ͱ߀ɴɻݻl=8\18q 1+)(J-"K+ܚ Sk )C<,WVn BaJ3 z\k $JKZsz`/jy+)ₐ2~JCQ ؖ d\9L"Q>\7g+dX37/e_O v, tx;Ȅ@d;FYj{cof2x;&7էg˅iT[rPo_Ap9]Ч(%VN2]_ _r1=3 \=AVq=`R7&B$C3|TbCq Zˊ`TNjZ31eG q"O"۔geQf+'GN`^91'ġ^a"yhܤVŽB(,W/u۞}m447#$]ȏd"<*“VI=哪{oSu ҆Ni1GQ@JB\ OۘgbN) fFv,n(` }x#ò)2F<}8%#!z$Ay+|| fefGOdw:5E +>>,9{T9[h&4|hN;v9 \i<{<Ӧ*hQ*ڷ3xX%Yya`A%eQp%_v÷*/7ba/f`@+Pmu<4bmA=zSrDず:􄪯Aὥgxuz5o#Bk:f"L$TJ;XdG X:s{w^/_.1 Y`pʨMt%xyUe!JשOo|3}'z T1Ea;@GtC= @{sp$A7s#- 3S HVAUu䳒n=63{6)hL|i;(Į>,f} NAakCryMl_48R?dm՘g~5 ozba;b]OI7 /ʋNpJZ5:ՖgzhE_M3mǀM -.VFցj1*G`¥d׀~ ֊=iW)ߤ~\ 'n5!2)E7 πC'j_}x(׏]&:-aKi=\teyhbet8OS!B):3Ny:xk'>7m*IIThD |bb M9mc_VR25 C k38 ;Tu HS@g(3@4%^PfMbyoµ7Fpa P9dk.I.kGD8@&67s]*l~ڟ#ߍćاyjcpC!%&i,EVe2.IH5L,vMbY*g?=mT>X6|Y42P1be침 _j{쮙=Fr+pO~{ #H䔋B;" E(ԑ!Tsk55ޒ[N _kJ^r|F-3ƃ>k#ˈu.rr1UR]CM:C/M/T$GŧxG.=?tG/1Tu"󀛓PJzIiaÆԠ"-ooJmDdJ^ xF E#5"+ZrxumZZX䤴/',*`sj7);J;8ӡLy~SvAG4W9LiDq`; Ɲ0N1TL`V,t|KhK.wcy!{4 )fz۶̅f?ŎPJ]Ts>nL[G]㡍$SedPv\X'Ҹm}-$br~o_ YMKW,9M 8 ϭF6|15m3A^jiј &aW($Aܵa"J7tBe|جjs’8+:/!㜡N(΀u cYkx k8+dzWMfRL)D>}WX4``` ?7!e mdݺ%tOQ'ퟑ KS4aӚLV"؉|ZK{Tv4Jl#bY):dK6~"!dU`Z>l>xZ?iQ?ڱtYZEܦgPnv sa<͹yrx] W z3[#(۱/qI60# oIVw( ]Jp EXiQ'NΑ*tMn*m^Jas'Cʼn=a7zUib/Δ*l\>Pߖb@H4YU) FGSB󲥲v yzC`R@J T#XӸ &d%22_aӎK\ 1`Ӑ>Tg8Ԛu#릟s4gT#9ML/%s[ۘ_WG\"f! 7I0aҚ5 '>. oj̞-)4YVҕ1Ę6ζ5 s=fO|iNGodց7a~C1'vZ-ûGIt!$<.`Ӥ jD~x zW5]e)z7~]n7G^$OٚoaUvߑ% |gAzibz3tZ&d58t|8a-JzX0ڐ/CƘlSMܵDbR%ϬCT |Ŕ@x Ӆ35l']sqJs|<FS%,6vy| -rFO?a:HG8˼O?]< ܖ6`{pP.A_#D>Zޖlh19t۷5 Odw8\ 凝Bǡ-)GQpsŒ"Q&1 fhV=񹀬uύR*lɚo= W +] ]`1fŏnx=^fdܤlY3 9XX_ҙTÅ~ܒ9ׁG(4: LN+¬fїwDy/¶|]D65u)oxԚRݥm:L#XvU%~uZ=F5|Ŵ { >gE0b%  Gpeق'p^c{⊈'8X5ʣn"\h`q,(3.ZS ) NZ'z5PzJG4=;5Ry+u$DC OuUXmZץ"ypJ1} wRF}:RI|^[4sJ1= t}$X *d|ptbJM!$ފw1YݫC~*YS}ulM']GLVަ<x/n܏Ja8Ħ[2OxYw*>|ĜOx/ɗi! :r8Ԫ-$b Y1OW ,$K㣲Y;['P'9?Oj&hkwZ);"b#3 1o8pEyW^xURP\q@7@Tt/%gmC@<7Y a/kix6U0!ۡ(@{G/i0ey6!0U!1PoSO`E6!,U4;P'H6w~>Ig{f`*ضG^t(jnL\3Dۡs?+&au2 w"Ϡ"Q)rzZh:ԙ,bxr'Z ^vn߹pND;0~OWi',97) p-m ,Vk;Eo"SR8H/jQw8AG6I%t{KKՃ_?P|#sZm?]Ҿ$2|ʈϙЫDb+MJC'+CF/,E6cyۼXC5;5 CM>(w|~do#b'4fkS+խ ߊ cM+eEEە)|NA(-8&}G1=6gr}Jc5=*s?;GT0@g/ =9˴g(/. @:l rn!"qyubߦ?1~] {[*8%2qBFVI/z>sh fj,jݘ(\M5TJ_T#ZCbn %xtG4Jm'(:IAj2OK{86_G FΐVyVN^+1Xy9JƯb"P! )RnmG޳>< mMzEjMb:6Q;ׄI\xkVrntPpQy>."gl 1=DwF\!s܋J)&QL.sB1Ux$u121'[wf0I޵9Gdp2cxDDayEӖ>@ϙH7l;ΛwW0@X.^4HkIepr\v#gh5rC&bd OC VIjI"Y.5_^0@K"7@H͡3CWإ̫I1e EK 6)T:C &D|\(bhR'=sOHZX' zZpo;VcX<MiUVD0P^n(rPƭIߏpӷbqO\cQ4=Npӝ)K.uLWYv$icN>Nvd: ^rּeąٚ2YX_ [fA5~V_**伔Ez=)]Qb} [չ/N *o(XP8/5l-oZ$eU#;7j]u|CeJp27Wow9b9=T:E:%xvCJ܆ fw,D]sT$O Υas4|(q &Gy:b+;Jʴt5MDq}b|cA1A%LMsdfF!UmQV7ҁg#ջ{ǣCaj}TUӷmo@ɩ" ;}"˶4i,,|l,~z^^#L4z/$h.LI`\39VjO5l#)LhT%|?E8fH8fV跏T,'?Jד"pE֣6Ù hCZbWGI|wX'ˬj'~M˓ q,s Xp<9!=OAnF}t·epznӓ?-88.43$MzX\E&o!3Xⷪ?@V0_5ZsbvkQ.QYq()wKh(n_I"pΚ '$PXoJ@%X%j"ލYR+RW `wPAy:xZkO-6yB<!'G9lRCSʉ&2r E LC.͊gXS\J(ݑDDyY<"jT;Oc2BYIY6fϸET; _n4*xQ&@W께 \:*fm03Pƿ' *Y|ߢW>?d"s't5X>r$ crղx$U؛%O#/E Z6.D5?i8DzyFĠ׋|PI ~g  jOI:. .h߂̠@tk~ytj@OQ4!Brz<ܝRu@Ji:W+}D{o-c{MOUC2O/dQeZLpE ƪ.TadoTI8:뤜QISTxȠ7U(˺lNTB йqf9._2}M[ߊ YK[nZN;8}z1O6SX!\kWk ˈKp1V5ToK)â۲%e{_( /9L;H>n',cWފl)El'"ij$ +nT10U -jZ{_4Oӹ_BUr8Ok=+Sd$'!0}h#a\eCRV/\2e0?R\fچ 92t)E.1)"<D4dz|1bS:V-Tبlda.h026VT^5W*WJO=:}a,`wZoU{lE~oE7/if"O2*up ^?!.1Qi1Y,[gwHDy)*2)I&|<ޥI0&sΎs#$0Q[}M?W5o&Uϋ%O2,7(7@h3fڕuVz,4֬QؔdG;9+i_||٣JHk txL /@=2A@:E KBCN38}&i ǟoV -BՑ9U7h!VfAܞ<,}&9VE)9Xh!UmѬcҺTw2ĩ"q M SMhʤ+F-xNfu;ſU4RoOWTP:1iB6GlIܩee Y[6 Jynʛ "VO!1E 8D H$j^>?nXuF*oV~WH=C.^ōӿqOPVVJp˪΍g0SsҘ=l#e4 u@NdRUᶘ"юvPWb+cǾ>I";z1@FbDa3lD`qɭ6ЎBnOj(j 盺h!Yl:ŏP>vgAME2av{˅lײ7iyp*;*ay1L%MDy\r\l.Wm¾+l#Y_J5QXq)vbEscӌeVHQp%,9>JsjzTaIyr=}މK~D[J0ɉeqƾ7XCwU f:~nrzAQc# ǔF+;WFH}ASnefDyt;ZGhn .*op)WE.a\3K-y3$\Zlc!GG^d^KD&JTL>Lj=WVqS&Fh]l`D{&vCȫ7X2  bJtqw2G@nbfҨvj,߉Ki5=M]utv2XK {:] 4QYohesWЃ -n[]>5ITæHO'P R#;JLˑri`^dܩm?K=k\hV$0$jGY32 |F?Z7/9dٌMz)T2"){JTtCe|3[]r`kt' H`^&L0VoI{JFz\\jS8.K@FQxdsFwWBa[}ߋ)SWv/z+⫹o8;'Y3xմ92ϣGSՇ;E,U :Iq 5u5> jynѽ~* \#گ {땤mN& *\ UU-bd S_A*dحy:qCid{&RȀ'gF+_nk_N;'=%Cxq] J(S|5|T̒6 J5$!^ߋ1+v{8ewBiQYcĀLGJpވ9?hU(wĻGg`oP81}(5Pm{z3WEM'MMp/f q2=5Bِ EDl lvr1B'_؁- {\OP8}wds#M3^0K١?*S>Nui oRE ХԄQD#J훝,̡|g%Q>p?q`7MJV_fD{pUxeq]5K?=57}mdp5L Fnd1\>{ƜĨ;v֛VȰN$ GWPA Rh8k[1Ϙ}Ʋ}ŝ{HMۦ64niSc=؞G%56_^Dk/- _f!-wEL*u~+э 񡼽K$#ڿR $Sm>F;CpE FQ,dU#;hxBƥt_g< yMy[~{<%iUsOE@q$$>1W~(3럱@t2OurR2k]C'ZIDES)N*ܰwxq5l55J Xn"u8F  T78 ;J*^r]],D-̏om Q6me{Zٜ[s?s8*'F"9Seaa fPy!iL*:"R:8d7|q_2)n4 #ZeZ!/e[ M0B>@d;Ȅ7C$C3Q=EMC}g{j = . ٬ړ-儲-w̱P;;R٘:`( &d],q!|c π5"1Ttl>i̠msbX'm}Nd(Fػ95?c'zop5CW{ h3jMϰpv6FʃӢY а}0Z[B!Z*Izw_JC_Q*z{9k z|Wo"{$;hK'Kpc˷QՏAX)cџn3cJP܎،:nk)Og=R C%BUVd5a}W^88VkW:@2˄c>,aALA:Ok4P!I >6֗3?r: wL?ꙃ8)M[$aWRcY.H\n﷢PP͒ߊ _zr6#93t,{keM#ڪBЪ RGQ>aR]@ڸc/xnkN@G>Eڰ^KW j%$m~]d'&bމY1R?mk-ѿ?[VqgXuu"{~RlnM㡶k1W"/ƻ>c %y[ٿT>;iWVx3 TrOd$@e44-ca'Έzr zC8:2X0L0M=&=*ceh4m4Qm|4)ñTBȢ Np6,Eg|?Qa#|zsY Qΐ3{GX= @ZV=4"nri͡0@XSx5^UPsWv/RFE r{g9E2vy(qrrjE#'=1dNu{&zޚآR=Dgf#kyD?2`br,mb.߿/g8ƀ9Web#-;qZrJVHfQql2_xTIij|Jo%tWLﻊ&ۺ 'Q]/w^AΆ'4}9pQ*㠧ͽX겟\XOOIClSŹ}dR.v:^!hp#U.#Π'־l歐V\E g@&uLpuMĥSǬN53" _a}vu2*unՀ'#7jyeObpzԑh̤WG}K 6ٴ[ gټg<qܫ |)nbd>!B)4 - k'^&P}^1bC(D|4'^sMO':&99Z y}q~0hhZv9  +& {Cp!7ѡ*^|Iʍgug1zJ%a嬝V XTw-^46/~9^@ -ֹ|'=GO9Ahpx` :a[Tu!ԑƠ(U@tϟRN&΀rgɺ:Nwjv]uh!s%k7ٟ-- `:^=ej0 ,۝D|P ^7kS}oDց AGhPx8;2S]dK ׸ ͒Y!ug4(HA; {5('`I97urYp4'Ef6%C 5(Y]4av7w=o3keW'hM\}h錜%*QuШ*~ {b MGwq VK굎W1~wNI) < Uh,Hr)PlvЉtCM\\0FMH4moå&Uؚ;]8 Z0]]-DV"ĸ̷>Q|RvrU$#;ϟ0CvN7nٯEڼVbJe? K6%,]Muf5mZU,t%ϗ >$rߎ|E~|٩gݸ[W#$l\@ۿE8uR|ihn 3Jo/x}06Dt .gtua-T|RR s?fޠd D%":!Jiu xn^MRXa=9<bar葙K ZW^2: vt77ry 0'~z>x9%:>r vh\05*ջTNYb~Ȇ6*OI 6[} /dF; >ۆO 9ar/q}r%`"lңfF ǯdI_4Vx阘:K]5 $JSϟ9 nWt.Ews4JOA;IL7=oB˝ !43~2JQD2vV;1=+"7bEDZ CL:evq `]BC|%X5=\M{B 7= 4%g܀& 2ɣ&mr t P:VZOO;%|i`FO 'I[ښ`v'y\Ӭ TLnY!v]ȵ4ʙI<읏#1G ĻlWF/#p4-:1"⭄"K)@kjP~X-_(@U_2ztRZCp8;Fmk\ ෼D4{" n $N=]E8sY[[u6tFԞnkQ`Q,Cm$m@MYsˡnw..C te+2Zc]B Z+VYw߈|eu0@/H%-Ԟ.JYEgq{&?5 KM=ҟEEϑYԟ'WD=fXߏ7=TIm`Ry m*\r_*,ylWIJ?hWE,}obXeg"GmRԨ\X9@V.LC*)v4 ]mޙ"UjDFs/~/3|!;Y ׊+7'w>XY U33+_I.hE"N"[ 3 =ڇ<& Hpp3iH!|3ަߤm)Y+JG'7/4?5@c<ʗeK b_I͉ b3](+𶄶w뾙 mnT 8Fz8ԡ{=`E)tigJ)wwʭb{a*^2֋_l7c+6;qY,ƞ-|HH[=oo)$ ! FP.̰s$$%,N#"O~ ud1:#0U*( %b?9(DThh;G C'I&N.ѐ_gmݖFxG1^@gnzMFzdcAw xw]ۜMyU+.%27fhvpa*6J[DnoUa:jboa,#Yi.OѦ㬑X*G YZ!ŋm3w;j+G-ڲ߽k&.fHנL9UyÝ)X;q^YWXE'#{q,w Z HJejI|lS-gIe! 9X]ix"J2MhԦO4K߬HF2EzKfT-hNl0Q^V!?*qgD,{F;SXqÌBFt6VëshVbS.K<,uH,VY ١XV<~Eޏ4UIfN:i:-tR/#gi_ X9YSֳ|԰)A=h`T}gʣ|<3G RE6>qD@yʄwvZ%)2<6O^;um<Tv]r*گPc禃T\pK%a̤]>)]dųRP1y6.pf^+֫Q|az#0imauБL+.A3jx*JF{O q+g @YPֈ_Llv;I*VOLX^a%3c+З$oa}B Fw=4Qa_8VZ*vO k[=F] J/(JLMVopjk[2}ַc,>V(N$h6NxAT|PsX&QCLڕl~'Zs)\J5Ez|eW:vHl11#n;Cl|+H76etRx*E=;1AanT0}}$MA@oC[ODeLFz8_]e%mO S`HAJ6\;D%]f"g45mYs*oTVDy.AƠ GzMv,D@(554=ƺ#ǭ.H^B'E̓t;ʁ6*NuV͟``]cCphp6RfOLGiTz)lu51i{V8A{$q f'|G&z  xx. _@F:uǓeq@}y;٪9˅%gzቡiS >@@\W۫)|*9`^B6̦]zW=S`pk(*QbKerگ"gj& J! -yߖƝ86(>8lv/V!nc$P$hJ|V־G D3*A薛NAd .N ?M۬=aDעtxR.=x;[d&xAL3q1_~yhZPIl>gNR[ 6h-zݭßKlO(c˭*\;' r 'yhȻa$d$7A< 8\ыBv.SF][}8[du% T5ؗT\Q*m& `@*'L|O[ %o?O9q^XnAxL1l/f|(!Hm-- _,1C$f=Io֥<@vkuvQ'D-6!G##SgKezM]"~X 0(":4CIié9ojfzj5KB/0]^V22Y8rw#*-.~}CX fuʑE,u´(d ַwy!{F͟T¹ZmtRz,Y{7YvrKIqm1B-K@Lj HBukekaUg FpUjAĥpͯˮaw)B6hf8GqFL!jl3Cc=˟I;e/R‚q~FZИA/@Iq;Q, rLmϊD6y.m']^VLآtxs2}qβk轫o½Gcõ]K%RϞj+OG@HpvcA!>p~;^ Ԟ䝜Qܓ ,͇i#Qÿƒ&9x>! 1cTQ7߲%=ZZ mI^d݋g?${1% meV_E`~Am}d+`I9.o[HL{Hf_ j#{Nx|UNvqŸIU憛wd`xk0wAtzʘxΈ<pį/)yi%6)PRG {*K S1lXke`{ ` W-rѲ@XW7q4ϱ¨V,e蕰w} i ŠJroR R}\?V6ִRQG(k5+P%9WWSxk619OMOCSZAAK]՛}-~adHI_鹥'˭2P^u #oŖae\O=XǛ/iQ⌌}2`Ff;ivR%U*/SXyȪZ2.xGݒYEHJ̻Kq\r,֑ F%:Γ/uØ{lOP6_,z)+VRɇ 05O84o8:X}ܭajk8ݔMo w٠ +Qk}i`K//жkh Щ WoL }(f@%;3 Τ [6m\tﷳay 2cP,a>74)0t>ljLaGG"n7x;L6_eX0o= zp\/rxD=D3{?l~>6 %xdr8qkZ=jZ|zG=;nwrQ|@aJKCgvtڦ@XmrTٲ*y=PI@)@-aFSb.z'Nߥ|l3E5MQm96hR 6ia&+,=>T#άi]J9 T*>_mw |'UwƲz; E(#~S)/o?,h̖1T2,m~KjlŁH\nq SdDjc?%4`ԃ&E=/fV?}/wnҫ/EI9vz jRM 99]Yq/B,34Y6;wM?=aGQO3v.͒$.$~tks/9':߼O7w% 9^p6Ke kW~DxP]&+_?mk;3py :`US2*d\AEfMc }xg,\ e\3 ^H /fV֋;Gs} "̵mT8abRnq;aGG58W17mt= dyƠr ;(oIe3~)hg߯s΀NtA1^bINFF=KK-t@2OOp*\kх7fAEW.ϥmaF c/P0A%F&nғ5{L- @Bv!z r#g5"Mʫ[TW |>ǂ^Q7Va5"kTUK9ҬR$@!#I> :x5lc<`c|n!46 ZHz2ǥIK2` m/©$@®/? \A+𷺶cMҞjI b#dm[;ޫ=7z[dZAq%lESW p_sOgT f\lYG<#?1LcLQEoz=o}yj- >hD7|ҶuZ\ Bjm(z"j:A'6i@8WJ,E/P}qjsi3C 澕 OB>-=IϬ,TxE١ʮ, 3znFs^bal VXbC]8(/!N fTH8I~v;1Z-uDr-xĹ W|玶hX,2]Q)h/mQLu9'xq dSd6ȊX|, ~dܜL`p)C [[%g/XGK#zW(1UstjXnYMUƢU5L>K NKU aɝ URV*,}D 9YR~i?XY;e[eﱢehBu/#yIV$Q]7wztbq3>{9CE;i1W), nxbS+ S7Sqn2|`m;F}\[on4An p>ސCh8I@mp3ޯu4$f*j/ [/ߙDψ\w^@ P|K#N^YU@$19Jon2(tC4+ޓq .ޝ6kfok=ك7M ]-)/у lj@Sk͈b# \1:|˥ap߻F4R* OQlwP.DžE5nRO&\ &' oZ5<ᝒlEi|mk?snarozlʘR:ϣ]?b+ۦ_ Z9+jpjB]W; ^I>O4P8)7L=lGB1"n([%` ae7q7,2(x$b1rޓ3U KhKAPݫ;A.ٳ17l&-p 4rĎ8>n8,#t-?eLb~CK35؉ֈ9 wR.e͸ZBI6c'2D=֍FJ@ g;юnCSoʆ#gysج*& l1EusN g_mg?vLt˗A&" y>Lۛ$Edy'$esnPH[G8@%Gy[y:`3V%>X<^jn//Ӓ N(5^ۄhGnGZ>fKq?N;V o`hu и7l$ rK4poroն&Uh.Ywq_C?l{:1Zdg͚DJwGpWyIR)/#/dYThO]5\ wur˓* ^~/Vu@['Fs>3ljE+Q|G]…%LV1v@æ >LVT|Mub1Hhj-~%*i$Vɐ! 2Zlymg^d)/U>Zވ +,Q{2"ĥ󓊰#O']kuj꘯qaOad hxH6'i{0i%FoV ^@WauշF-z7wcF="fc/ @7iCzؖ Ë:w}X,xSz-~L$P;Η:5|m1 7 7238obOnDăaˣ, T^w]#7DQmT~A:,_7ܘ 3 y?!7FR7X?\u 5oiT14%"|՚7R1WtrcF2S0JSE4fUAf2#nPmjف,~XFeȤøA*\2r Cp9r9Q  ( `R6ϞX4gWB\}fQ\E-$sEmӲEa,bw$G ̂-'nq@{9$vP(M\(m*(#3J.T?0j'|'?oM#O$uKPRT+.E!Mu;߰:|zHNr/XijY !ȘBգzE~S:iqL3K VuhҏUϺ ŚMl0CaGk?&"= 6G r؆Μ/铤(:X6E]^x|c3hBuwL'>!94]& 6~h?#39҇Or2JׁT?フx/Ghkuf2op'W|4<Ν9[❡DŽ{7YVJY]4}K:<JOU~#}x1E>l(mpj֒*=DhDKR,Gc{ '*1z 6(o#  7(NWgj&Wy!&lr9y4I>N3B 6vmRÌS)+&ߩ€z S[/ms~p3+-v6q7ME8O )(,"mGs1nӢdϒ)g2Juڑ/,&~" Cn*]7/ Ldy݀?e|f }NXXQ lFƭf8°yso}"EvGrJ~Kd8C_:Cq/kvX@]$َ7Li򗳋O#]251eIF+NCv;F@6迉oLǧX`%7MwD\BY MQ(N71y{ L]&P:B$0$3](v\1Q՟Nr=WlpÇ 놟#d֟6rYQ2>tú|ȻVxUuz@_1sυ[><"US.}/ hyu-E4}]|XL1zka8a@pWk`TqfYˁq|/azDl:aVa ja;~rvo|T]vi\&Ԛ J} Mq#֍uqJje'מ@q4BS} G$x!k+a *$uꆢ=^“sdO4& s Kux2Dp s -Sm%uem Xi@d vyfO6n$E<҆qc!4wbncPgBwbi{,(yUUX8=m}m,LΨt/9~omh9ef|eC/ RE a(뗰EX}M@<#dC^@pd5C4R(NnUS4I^ZєZ쉖Ytd+Dh}M;cR)"V,Iҥ|`T\P|*><4A9 ͵ WaB;ˌO1 zMYE^ރEq6>2scZNENtr:޾5}F8%oDL,a FR0!`d~J9,o9 l_u~W<_.s}q/;=4HL@ԕgSUTUMBsDmĀA#_ųZ2)hg\ʛRGg*|W٥4Rkl*Q1RŕkdyF" Yq437~ s<! P692nbHބHŏ zZlʩ[cėWK#Ai,Π|Pγs)_|2{'G*/)Sbf?IYVh\cWzڵu; )CL^EW>s)&sG0Wq=gu%PDm" ʎ~, oKZ"< pC Hvҏ3WQ#VDSa'6^΁Rl\{`! EāP@|[n+?'֐q:1L_}$:_2 tt{&nVNktOa;.xdBfxW>Sc?6Y!פ V8X/1Vqz0>7Ψ:YL3nĪ)\̍#HWťg3+R+?.Dqx$fGSMK]壜m/lLs DŮEK0ZPo OMY1/:D#0 N& R?9|20r#>j3y:̯Pί)=f̭}ڰMZ;EI@<<`[@^8q5:iʽc+V C1z.QۮR"ֱ֑ zj3VLg|(o!] 켵oS*3SӰ m7P79yN.Yh 6}qwZVT/lyֶvk0Z;D.'zYU%- u)v%89tIR&I^HTN9f k/i~4 zqNpqfұ hSp__gJ!as.oR{:NW棑,tg1ҷMa8Ǖd_z] Ѧ-Q> v O@[R؛w |#䣆Fv-z#2 CDoK%=wȍҵ. s7V)BfLv1i`)X=…#Q~pzZGNKemmPI[*K'ǦExUIY6%͆zuVtWN?:Qw04!rJ=! $xf2tQXƘNOqW`_@,1 !JˌN,3ǯOǨ'Zž}Va+7t ̫5SEњvGA*^fb㑖PZ <#aDaM&!ggj$}Z-vWID8|qCsҚ6Td!U6M=ʙɾeG7xy,0):U! %*;aV5Tzl9mj}OK0ӜϾN6HXE thAHlAgT4?8MPYE +)U!)y|iT+nIz3j c֙h_ %GkW,V3GFRHۜB:7iz/W$-to#lkxv|t`G0vH@2KATūVr>ae½tyQx oZqP_ql0Zoˀ TWN^Xiz1: knǂbqN_=U/Mvz,Ԏ}ogXl>+{@oJYXa>Fi? eTm@Hj1N%Ǎ(6sD] 8 Is|26 C i鍝y n:bPD8N4(/xuϾZGxH9:FfG`iSR]dxeʜ&NnZ30{c\ATvLhz'av*`G0^v C jptD5TC(̘4f`+e1,Yu ^6wW[FxMdZXLdFi1~,Nou=jD Qz'B2u8dd7_ әPoX*,y,R*žU @n?J)$g w?]4"-.!roYQ4S}iLM̕7[.N`;3PHёƃnm@$t5RKr?3x>=;os2z-USY /#D!uj+ }ݸ;!)LI!զ:ÉjǃAsVc,P؃Di!EP>(C8m[~V yxo`;!UHVlAVO4>;qѐiM'>dPMwB0=1iYT<ў@kԣ .ߗpLa\q)p!|9T@VgF v/:jPr\tvigǏP"b d8Py + ֬7P`KD.ڱ3,@Q,:Q54X@4wj .GTk$vR,˂KF QJfz)٦ÁGe~O0aA5$&jRyG>X')EBC >!F]ujb@bt' ӺQQ}Av.,yj&E[i\Gl3i{*yᶕ;T%\xxb揜;gWSE>{ͷz@LWN3pjo[qPE?+ w}guTpςA_^363FDnY )x_tNmJAg~Rb0~\Vdc:cO:|Ӆ7SI;mjU%sy ?SqO<ܬ(.}X=4WITðyL2,߽= 7#oh.;Ǔoz=uB (=z ]g:Gmȳ$MCM=lG:~jRc9B DѠ9ٴ"x"qOY!'uGV,q~:7 pz]ZWXȍl*>" I7(#N\6o)2%e~Rjp^3A  L :Wg\Lж}݁J>@6XOT4`RǾw]z9ݛȌ _"//{W,ϳ/(b\?TEc@6J W)IiWd6 "e<݇s|jZ)33t`f,"ե/BV^bN/E vY[_'j)}#[ 2 y=`Dj^q4'L}uTS% i .VCJߟ_GDžh*7jy:b/WpB%Q'g]`no[Яv\s=w7FoϊZ NCF"_vRRBPmocؔgQ)#=nӲנ JfdJȡ?v #mK_)LfbclȘ)1f!Ӏpj%ń{4ѱLο tCR<_3>CJy`퇏 .NX]F [PHXLo;3 PcsBjPqA}j+&~MÕJ͸ԍ{:W뵦_ZU1{3CƒC ѓ1]"3Ŕ Gv $ I|3ZUdw hjd5o 5O m^,~ۮn9bAScl-[0{k$Qfd!vŶRx1f"kVcu(=kվgfOI-Ε_RBQ^*aQNtk$ݵkJ\J^z O (.Ti%Ɲu̯hmbe2Kz4Y1_B;hKssӒ bNbpYᲄd츃Yw I1\8Efd֤JD~I2ɱS)6j\2QeG9idǨ3юOa4j,0q׎)zگ۴|~&4_מQߤ }zF]_a$}|+,n+<1Ma<- mSB{cT^ 4= ɜwz v^ `p3tl9kCKao_4Qu"?M]ByY1@N0=^1.(?+jo90wDZ\fC+}ɔce04c]| if]ϛ#݇lšjo}=bN4tϲ0~0n"=Ʉ,`,_EX8%Za0sG"4Y1 ^r=qc֢&:[٪X)/N Pa?y^ @ b\ۢHcZVbbE J.[ؓfhmjqTto}R#ıpz'%h&ٸXP̘_g>#N:$SWj6?k ͈ﻙQز_CE~heyDB˻S;~*DV@pdj\/QlO;lt:>0"v9VT ) XxuwB)~,$uDf 6C龐R1v /'ˇ(|'oW_^vtl8'Q P۷֐~-9ռlP_lX%0ᡇxWFo4p]B, GzV 3CR (t))dto^]B}9 %mتgJ [2? I՚|*B%.KS?Fdi(R#6Aф& 6\L6HZN4Vl1/QYn<ūDk]|Q٨B˫$`5OKS^Tmi+FaLͣG3)6b)pJdX]jr8N.Ab+|G["NmM +(i>yAx-6rhIVQX=-ܣL=ko4iнa C2JyUPAVO漇Q 5}pGhG"VteG1bY?5eʼnVmC4<Ǹ\~uhLb!ЯhXBG.v)TwP\ZLl>YGް[ sAx:")I͜1e3L;#hC5uAF9Ommm1dH;I%Fa̕[M^$9Y .ʿ"jxRF帔$caah~<1=[/N3pZ[Ţ#(U N*VڷOEf&uH wtgv Ɣ Iq[p_t|C2 ~EFZ1>I^zT%IS+}*DH{)]{v2s+@MEVZ&"v{N^շQXZ7 4Wtg:0308Hd, | Τ7I i$UnHꎣVIRP{0{ƵJ97t:uJDE4QyU|iގ OoN6Ev`$4w9tvw}jarjjUW!ĉ_af*+S_8tV&v'{+`\R`]J/`"6"]ܘ킸Q&Xcr[& Sԅp#6gMf_ޟ_>8ʕVHk \_g]u 3"QS*Sz '"Kn p8"}eA"*!H{a7ÜO,S\CJ!6HD5"c)3ݮ^<#\S )49hca|k:Z#26qtrhDE|}c^Ѡ ]mk Y`612]ǶAk)j+SMĬo: V?Ţ9@ +}8r6ҤϿ+NוCMGc/:5iMGmb'DvH15)0t ;6O ţ[c1.t%zd̋,aGj*QqX&a^B֪ PCaE#B H%C Z ۑ`Z@w^&;UźW\,$du>6zm̅ɭw*z n`PxU{ͩ4!)XI M݀2-\ĵaǓŕ;)L}bNJÑDl[ ܏nѬ,oC@8Ơ2vc$;Hnq: Om= P"Ucu|V-&Zk2uR5,^hlㇴVC^n E*'RTMV\rNASN8L6gm׺z390qd4vGBQRm=Jǡho-& FW Q%>&P*W){CwJ\$(+^7ӊ7BN$n0SYN8O^kƔ3 =ȵЪҤA%R]`H̋E#s?\a%W<9`+[ mP] W8J(Hn[Wt%t4HMkA~B^_@&]`.VN *p*/ )av4v |ũљ L3sBKȋ;F_Gįs%E_ A[n(zA/IZGTpShЂL9ɉhsh\<ﱞ:r lD  qH aR?'\髦?_:~astQghH\%od+PAL5 /q^Lھ^Hg&1]lmi M8:x-O`*"%ox>qp?~O`>@,:;aPHɾHUuw[Z`-a?!bfqMq8z;̕xn%˥ XʝV#s>䤀j(vC9yL͹'t6x?YѬ`-6!XUUAA y`pEp*F~ř1n^ H"hrQ.~7{䳔70]A+q! .g솴6 vz%Hӕ+" A:x-slqZ$|=dA >)AiD5̀F9l`a!4xӄ>rFsƏMө3;J!y;K˚_p{굌^NKY P?#W -سmbU_@fe),ۭN9jڮ>93WڐzBvp _^鴯zY,tKSzL!rcX᳚8VnmZhvS|Eu_~CL$3 }.6*ч1,P/bg+E)~˅iL6K笘%6NW0Ckmc7x1wMe٠kLnm{u|O+cfk66%W$I];u, Eg5 ]|˰~sdԵ04=komny&fN1],Qe 6^`ҩoOH\ (c_feeIZƘY.W.P)ypIhZ5o;G@ !:gdfMg2ןlSI)gK*>Zo5Ͻ>2߄uľnjJG,~?9󺀔Hĝ.X50^F{5tOc|r-pٹsYkb(J y//C5p [W;-DƵ!t8"$}́You<4zK2KN d|݌$ۊ?֪SUGQ7YUc2F; DC;IJ 9Dm=u\93P9BG75Vìg/Lt-^ЌnVfۡ_,jyv*Q)蟌ŪL?,t>*bRBmdMc`TAmq4oqKJcp@w֥ƠGվLKwɚq/ bgs*μ-]]-4Wqcqȶ5s-^c4JĂqqY\8Z+k9Φj-&fȽ2+U7"2`ya4ɂanOrR4@pOaw!{"+X@ V--uST{c؅y6As1ԉ ~,&5PZ00U{=ɑIIBS530/9 ( XdړlP!91Ov( +d p㈤4&(ut&=-yKk<~%`PÈOM#>fn|.)"0|ZKiYn 0pm;;1#vOVw@9#MS͖ݘNݠ`/h0Qf5/E[[4W2Gj%Oh5?J/'jxve"҃EV^O1#na*h-Ӑ:>rVO3_ZR3cYDrAq絋eTc0Xи0(Ҽh>SG). lmSSiUjw5|n UK~$tV EraD-fݓ$dt[2yu!l5)f9̦Z)s -[q@2Y|I|%^sˇ 2-Hr:G]I§ShNdF(]㮜eehp1$auVmk`\Y]6g>4T4F\c#TE6NTGp;|4UQ1y?c`,ul-onj ~9tH% Ƞ"0CD{±Ƕ~ zd P:/xy22';}A̿@C8IW j11de^`ğX`/5c1ADbNaZ6X1\s5Yq ]|ܠ@gSm>cؐ$~ȵ츘x(C ]{}c#TBAD ?N7?K>~G;Ϝ ѿ*6B=9bqo#/[ nqvl (!݅xW ѧs˗ "9\uo!DDZDߟU:o э.)iD`8 5?D>x ~)o@F ش ˁ!TA0Ú"cnHEMWtү^ʶ=ܨa3+!ai?~tR4G ル/e.b߃M/*Ahv@wji54T7[yW?`q@ shn*]3i>~)6`~eLvzI7Nf䫃I uE$@ K=r5JV?zW8ee@6*vr ңlG<#Wl_V~K"$9wb7*BpqWȝC.8q@ [H!ـzkN`aݬo@uݾ&[nܠإ0:P97Ax_j*\^3*ԛde!,OBYou,wQ& [ b>no2eõt @)\:'v;1W{й(o(q/FRrn;.oFc_(qϡ)Q |1n 򈭤Qrп"n~(!NPAE4)2!*VTWL ^n{-Q`NnzjįrM>㽭RFg5tb~{V3vW$jV9| 2LM,]thg: .>Qg@2!MkR{ 1긛zIb(l+9 %8X CC6<0<}|!<"@Fsn4nd;CRC5k'; # }P6|4S+B2̨MO@6Ђnmf]nLWM*95Ƿ2RGøDqxٙ &͢`+LR] Qq!E xlQ_|~/|+N̳mH{)}`}{ح+ˑ>'D2)W;5(}`it?`(: hrdWB-< bT/q%.!A!tK{i>pV4mwҀ:&PggZ5Ԕjwb`#AK#fr'O6; *J%\]kpme>9~ީLqNrA(m @ϭdīP<(y3+-7G]ϴWc2NΉ;Q_|߽dbX0#O= _90̣p `z_[]zˏN)H]mX%T%]Z_?ɨK}-Ѯe4J\rx# V 4錣| S<۬xųdy9''3vֳ3+]~my3c \; |٤ 7(a횡 gr>$V}9"=|D^d>V Z%iok5L_tx^&" v-L.ICeQ?sVuD}0 G(@A+3)iۭ?d;p=.#:#Lu%;HWFp|]8J!!aoMVnRGwdp/FLOձ]Q{ι?hjvΛ9X< >Zޡ*di( a9Zm%1Qqsa)]SR8X v sU9]S&fډTiϻHKlOD&LH xZ]\*|4 ڧ`6z͔Kfw]/Cq"Xgz#_&v z)M #,jH}i–.wVB*4 oxr!BѤ3W p:FdLwSA2[ԩEGr= B׼kY(Tvު&lp߻:>QeukWn!VDЉhfп״<0,=*>̿td$ $W mIUžw s~B'ۤX4cWU[=l v뀒@ް֓cqX3ر!@3:g۸BqpDؔ{D4#7.쨪 ȓl(JggBߴeBt#gz{MW1` &+AI HGOdUB;Sd\]=Ţ͞z MK bwpr ٱҕtu\:1xwk$HzᬁA/6pS_is7x 3zїK$nԃNݰIGۙ5tir߽  |&mS(J͌ukEwt\ BP>;ՅHa,(:M@ I^[/>jĤin'Hb*OIJuGΊ#w>\2ڦ :L& gn`%KmkfjÜ=X!si O!í dXIKh|> "X'1ft$$-/9"ĉZgg9T <QDnSڌ%q[*> RٛC.A0 P2#L2a]ub~ 3I2)^["ү[KH%[J,`d7vH3B6v#x/q~=oZ$Dn }'Z8zGۆT pEMk@E5i.d礀KcRmGgJ#]Vyq_cS$¾瓓o1bV {C'lO-_N'C4DeKS]1Қ27Ń5R d67Z` #Dǹt9u(郌 6I/ztʌ]_dHEp g/Wl?Ù͟AVJHB$DRoJeQ$G5~U!?SU"PQ(t?Mہ3- MҘ xQʳjwCL{?у˜\I*yN W _V/4uef/r1ʽNEPd`XJ'QPq7x.a' 0r80չ3p!dzGr}F@\&Ǖ][VOdVҦOBU\K$UYd&Ã|4&!]d bE^ooEKsߋN}7χ 0>df1Gئ9J|;\|Gu1]7D1p ,n@䛛od;)K'07 gsW58JrLn 8O`c&BPصŠ ]K3{g̟!:u ]>87>R W(*7Vh{􅗙*zV$3d|2CSjKV eע\Ji{S!.G57NF8^TUtUk2:*gops,¡gBw9uܞZ#P2C- )OVS:seZr#mR:5h_Sɣ%?{B_-ʫˇ.f,dw[ۤ0*<n emS?6ȫ mG$__ؐϓ|ggG;F2WN?̏U Y3rbW9&k)Vo::q N_x #u W% 7}(oBZ!ٚXޤiq W>1Iσ) "yj؟vѬwZwOT$1&}ׯv:AB!J-W22{+TFF*ͦbg)>ߩg\t_ݖ$/J;/]1fxhKN$fyoLE}Љ4:i9Fc5 Uº9*vjlf$Z%9#ǀ#4Ys{JY9F%[ G|EWjIYqT{z^WբQD} g1B$K٫k9 :.[r v#JR,,pFRL+v0"DI} hg87KB 촬y"' }Ts.'A7Ɠכ&cg=4LyN=$Ju+{C^^xd5Rj:P^Q*-p~v΍% ͐h-yXN(?]"[xڌOAmbކ wCzpXpEW!xnHDIN2HBik'.3h O|Eq,8S"(KxK#jP Qrp'wZ򚬣R/X8D[sC4=E[k{icB^KKog'zs3eZ_^Fכdsq}ࠨEvEL0aG`ëesX ?q=2'5> "*^Of_g +YM:`+f|X[ŲP \akNR&D|XnK Y &lnyU͏ءxKZY A2C[-$^ UTWp.IG%dCm B-Ao E%44?rxQO[/pk= .L2RP!^A]E }hgڟqKNzֹ<}/AX8V㈋פ!=b zv%o&ŬBKDžpa7=eK94g&GfG+ T.g;l3^}DO]?yPƟ . }P;z< ‰3m5fg~|OwsyYiRq,V~jӍQ&8_/GVBʣx"rP='j$uQ$֕5K1v'<\w4hrU3v"`k̨r.%qfsD̗#fMB0egSOP嶲H_Ūxd/p[]RfN`zW#V% q4}Wy&Su(Gu|1F\9Tj@oq dwַ4]PDŽd-O&|FRbU4cH,tqNt.]qp6҆Ω_/^T̮0#?r.A3&#o<4rl=¶wpl#.s͍)^O_aeîQ<ӒvES~GYysIHE 6$P(:MH lo$,&fF*7JAR|=xHeӟX N=LT%BEc-LH&:,Krl90y+d%a!C*Ldu7c6=~ w+=&,` f;U\;[k ]c.W2w7pNHWM1blMW3 dUzH xMWaDp> &+%mL?PJ.Ggv}!Wo]@yn/ʱ$maskꙩe>OOn4eioLz_|י ~Y]Hfh$!&]:3 Bt[_?A#4friؼOgou ˇOC1#3)-~E %^\UUj[sAc}.-_7m5B+[ ]P vش'r8 -DPUN1,Cgپbs$Ĺ,c!q^O˺'r R[T?n3w"J*&z4҈{eLJKpWZ)>PK\kM#r%}I$Xm=A^ E/R'zO.V9'g9a#葧U>L8O)D EW}e{-fO]m]U P,PoIb0 c`ua\59yDL]{U@^";*k0Np;ӶXՉ뷕w^Fܚ$A4Op^Iptܯh9rhƪ0`^;JGFub>O2E*]ϐ-2o`z(::9 yKA-i-[g54EwnF4*}fKBrٖ<&D5~u/4Bɘ3ڮIޮ(G]?+`jaң_q([ PRf!,#$pEڈ%PZCb|$^86 :o/6!4,%it؆ /2Gd3AVsIΨztI2skf/P+850ocQ9x 멶 Wőq sd\c):W~9gE,*l;(~'\%EdCx0FPպ\>7TIIA/j7JV*,f &)zsvŽ_HwCǺQ+΅SŽXJ/|Vg\$O"p^2}\56n((1IBHV}Pҵm5&c7Up|ꔄ/Sa=(75үcLb([bhhLДaQ$ kp;ژ240P.v-Mv?&}y( uǿm*1$zl dUS+RHpMv86KzBJ[|xdN] w̅+O4!M]dx$^Bbj{}15~eMa}oG0&½RN mxg/b=/54ƣZGt \Cw%žNץ6.$[XT2CUq~TJg7 .OQQ@*^cz|J89Cd f2hHMkcs:6 ٽ^ ĂؓJ҄# (xJPŘM'LF&}jCt  |.zRA\ V$ [#w݊#?SseWo ~أQPpR*PJL$^6 =$8΋dNVnzfK`#<%iWV*dRh)cd= w(zmդ.6 ^ON^g]%ׄ:q_ c7P`uvtHǿY⋍KݡcwHvb_ac=9}[5&jG *rP3(}Ƕd12fCXhmĖ4TGFb2K vP9(U'ޝ0}k6) ILȽaK۞&1]gWHhIϽ]-]6wazUV4Pd y-V Z^<~ D37b1UBKToIAg9P39P*ve+3gcNU|g -&ǕBi+wIR9+,k IO8c= 3" Gҁ&ADž+#\8،+_q"dcmy ,@&׼$&-U6|eOk+(؆] s%)@08ۻ]MѠ)>akKvH$"jqFm_ADMR軔xvcf8o6ࣦ 6}aYF}?? 9xRd1]M$5 ֨f}y!KJD}\,z`n x|6_`4T3 MMaO<}N’kRy"A.TTxYqY L'@Иv\Dhx,x+վjc>=4{xejzoh焺8T3 թQ)2lKYrIT,hhWP#a5BO1 cʐ7vEKLCN|B-iS?918Z\uVHEJ^clm%}v#KuLh;F{Tr12P61CWr`dVշR4Q_٠O3 |w!v9D\L5!v]h-> xIݹPB\. fqE=oj?"u8/>Uׯb~)uE\m_g\cBdꑪ^G-&*=d=lcZnbT-$^ھ۸D])Z:S?[O+t+0f%^v=@2(u,&!n+A +_ :][L0*(i=6ջ-Fm%UKCǾ)ohrJ*g *aSJ,u Va]Br&ǥtD}:P+W`o`'g1%V ׶mb"^cT*GʚͼTCSo_(i/Q4xOf@-<Jw1d:%~yU_"M腗`f%`+ =d%IG@"B|& &`[#o?**$ LG~GvZByZ$X$ĘV-ͨf.t-$1K?ݸ@i(mg3 GˮE~$%{u$-R(^ NiԈX[!Y Ƀ<H{ yşr"uY0j]2$Zm$z џhX.%̰Y"cg؈{ iVXoiYHz輪*Αd+ڢh&M#hb鉪7f}zp ;7-ح6X6K]!@\C ы?:tP:oZ5f $/zdj`ACTlԸ~|`m|")F.?y[ mnQ#̧MrCq1/5OE$Vς̱a4y],I9%?LYVa;*$&Yx0K3+.p31JK_0c" QWko?,\QUl>;AQriff ).ےp*˷oi]`m^#/Ig ɖ1DAk+)I$ϭۦc#̥[4IY`;ڴ N {tcFoX{ EiQ}QY.pP_Hz33hڤDswoPo23`/t}^V}9(TYoLYܬ \@MN1ƿI[8XǮKN 3QU(yPZ a)f>;#c!>kq~Q}~VkkMڊm`5p6IȟdYx1F*ЈLLc -:/L3\z4[H`ZqNԋ@fUdm惺Jyev=ĕp}(pOJZdNQC6o6Zaݶs+  !ji\͔%/in&%#e[\= p0p|mZ_w Zr&'$rh9A*;[n2tȟ$8,|.\CF }M|/DNǖ%a% O8мzq?&چ'6b0.* լ/.$$\2"@ ՙ5͑Ѿ)Uxy'5ۆsaľ/]N)Õ #PJ܉-D+B d^CZ>q's|6)EE k}i %_=o'6~,Vqzl{Rp i6{89brjKCH[ޗJ-ޜɾ5۫Rw»jw=V|E\  :zfwጃʿ+(n@cs`WrIJ| >Ļ:ytLEH?Fg@Qs[ĸ ݼr_丳攬Fɽk\Ʌ}DdBfdfgH(d{Yu# 3ۈšá'W9|e 0-B 1:Pa]$a4䡖f_Rqq#.J8TI *zw8T!vSSJ۴DEYx3h?I9+]irPcĶs'*CcLrDPY Gb0RU]߽rcxŅG_o)լR50u-cyB'2^[;(<;Ieģ4Ey#5s̮Knc>%Ig̈́Rv֞O+D 1(aDY~ū*bu붾dEJ> oSWƖ@|K l,<ٕ+oE% ၭwfٕ gwvLzf=츈`ݐ=@kQ;ٿ 6{8E/$)@;3W֢Š#evC-BQ ?>6wo"yrˤP9 Il0::d*9!~S<)߾ ].ѝ^.,=D<lXt%6#cc3ڛ*GP rY1Nsq+ROu5Lt~EYڲmO.X͒%72MI A]$;:)IW ~5WGԄ0f! 7R+uBbВ60},Ftf<I)RU9J:ٌlt+ 4m--DgҦC G,WY/h{*0ZJ(1-}T:LR0h\]mr>ÌBeϻ3gǓ#>E~4qA'0^@'BpkW<i ;><~t#V9KX(}Ɍ ߴq{+aSq[فz(v]5h]\)?o>}5 Gy WȧnmaZ#_y8F[Ll!5x.K8E8% LK Ty0RĕXHeHKb䀰U*ڏl;OB)G4!B!wm̟lOrN {yQy;A|fW>G+V H\N`WFVA˟4)KO/>Mw L[T;5̑͒}g3i6rep ն8dy~B'? P*"ͱgoMZedm &=wq 0)ɣ^p /BP>pe#e=i=@)%ɵ P5 Oe},JS,7KPK֏z yX]G"oF#Cs25HGuIz^xvxYϤ!]{$:7TyvFN)D$- u1 ~nl?G*fźtVE[׼fOy64CHJJH0-(^Sw S \M<,E1ud6?3 eM!妣C~P"2ĔR'R[V4ʫ>-;^ _"08uP*x|o'R*s2x@l喴QI# &\n)4'K {LbSİnTMMtּnT[s+bġl&)q$@{Au>x鉋u%&s(H4h s ^aC@Zu¶ր`.I LRfV>B"C"yc9ЛU֗׺CǕ2Ws Ė9ƹcl4][{} &0UӃ8 2ɄD-ZreQKO(E ~v)lY2L4]L/ 9+a|!!Gf毞w|/qV6dI?~$N@AC~6zGВJ&ye-lnxZW6ix.:߀bؑjGy7YjCyi0N[dF &q+"3D}j] u:IRY9?lU7VɎyy&F7ˬZGci>bOX8Jry77C=ive1.DJ{;]Cb,c~ R$]pH*?BᄄXŸPvix]b$O {$W~ŷ,ޯi'ş\߰SYrR/x&Cd8w%Yz[o*.oRG?U _1aL;oGMJu|m$/I }L\Pnf9B^{r: >"K`H]FAa򝧠դYbw3u+CF:FPUQVwR?* ˇ˟|RjŜOGYlUK>] HzQjCYxS^mWp? fr>ѯVp0(UɄ'y$a$yWDri){_M:bVs.r5]AݚA)񱺷U @q~NךўZ- ݩ'Rո8dkw $ZT?cnp:XéVF.6>0 ~gTp?b40"fEAZ}uOGϘe{d~ xJQkqܛ7HtAԝA۝q.߹w\ HS#إIFEhd99^BlV|'%uk !)=mspQg%bK.}BӀ}{K_3iH:sZ %Sm˶?r[PHP3_+`р1ormN`#H]5VUV2,Era$7(B3z r[zh5hR@?B,e7yJ+I \\\Q s5i#=},YC<"o8| 6LAA8 Gw)_T&OA# }j$w]yY6By<:sowzٸJ%?VgӞuK˗?i:pKq{r"\R^5{UK挳X!DvbX-e6KNp-2$y jwY{ <}"n{8d+|̪~U5"7IePAi&k Ƚޛi*odyUݎgUeq]O6ųi|fX'ŚjpB?,dZGDg92'+11x1IHE3ML\&W r&MVA`NArb~3A" 7=sbwgkpAKdOiGN#ld5@,Hb 8X2(^Vc6>۔k%h5Ϊ.H`c𦟂I"#֨R;*s#( ̳\ ҬF{EmLݵBGl9z/xi"<)"'+uo) FYCn-HєIN ۂ8)=FL ! W}<娓h|׀?N.g; dYv^Ȱ}?OBf(iÅZk#ue6UY^xtrX?=q8g2B*haQzP:9kk]'F՚xHjgs Βoc3*,o-_hQI%7mNq=Cqm qWjۢgtSqvi&ݹnsײs^(П%"_ l#TIPNsХ0QxtG*\zsޛirn4Nt>-~ۧCETKѺdΨ8Qesyम09ߤ#n種W"ky|P҆&0ċE(g@\Fa"ЈNqCcl`'̷OdLth}M /~{Myej%NͫtHaP]-9{܈}rj0!Vɣzc 9NCt.Ufyy%phSDK>=\6~v'Fr]g# ՝S8 ;^HL- w?2$l]\sxk74tk{)S2r궰Rt肘ar8d@FYh2byp LCs(zX3%¾љ2,U'YsHq/f>mxfGశ9J7_~*MrX& v X"m)aP{aQfDS} ĵ0BD]j$ ]^S4>uBɥhe)-R'θ#gS q^wgH'7y)dv\8 IdPc6r ,{ꬷ!l:F: zgb^8f(%X<\enEMLIڰX|2%}6߂KkfODZpY`BEdv[(isx&gJ9V1'&{:nn ׎; }J}:~ 3( n"&AcӵT7BDžה1q-pLrˑ@ݢk) "bdk+veHqy:@ArN6HXaLzYʶ4VM(|wZmKA-0?,?س/Q]鬭fVIoj`N5%?׾ 誐30%bg7)c?1'] Ņ$OP+my"+KK'3W ^`Y#"7킼~%PͯBq6d﹩PsnIC=;83n3 黢| x9t@H u#z7P͑Y>S)lMqFs@" f rNyZ7'dr#/)[yDy(P>tƱ؄>,_[>7!]lOS1EwpfZ 4"9xӝ$js20N:0 vX>! gn}/yzF! }} X|,mY"K$.OQsi)EW;ցS? }ƤVDTKf2xL}x6z%~aOH׈Z Oq*HcG7nV8қcqHWЀщ@ |wp4~h߹KG`BSw,a^ c^eÄ5Tt\]{lVK͛qU{C#6e_rPeTcs'aESKuˌ*rnڒ%YnSS gna?ߙP 0.:MAN!?rDNTG. KMj-U37 fchh]zR6kB8́vQ )Q(SDjnn a Zdl "`=DZݮl(W x^ fa#/LOr 17<[I+axjwqKƒ?y}c[/%yS!hz&pp%-8$#p[_cͦ*?C\ ̈rLdSv9U;y CkF]<̔DIW{ trrRw'4EuGe$MX awdi}ǬRƮIr;}8hqŇH Ӕzb f'f&I oJ 7n,ܭ AO釕N,_Fة>@q{$dZ2!OiqS*M_D %M1D92װdk$(_aNgYΊM>*ްfWEccg^;ޠ|g"$0|[|׿a<ׄkُt˯swN_6% [`9Y6ɣt߷zH9(t6DLb~dL6P6:UYxR7^Od XC)D|u<7dH%v*.iΉ8UkQTH5#Ku?tϑ91ym$y>"Kռ[x2Io5\C 9FHb}jul,Yd.33n^ Sby/րh/>`@_z+YU%c?BKc8)yzlOJ4*pj澬7OYcGCZB]m \]~-]4ޯzڬVqmLWf17P~ܥyE@kT|4C}mW ΝXd+ kosWUź9|6 |ҵwHKzީJp\)UF6]݆ +EQhNE)Zzbw`ګ[A;~ ?١ve]5ܷbdb?U'ǰy[g1Fg ðv˷&rghڃYQaL„PQ G쵦m5X#EYt5r.A\Vyhq| /^?EE)̃bRQJv -xobcj j_Q1ؗ:\w!m.-"Ɍcv^ HRmnrg:QT!5UCu㛘MDiGO`:]KyHLh5?߳4fNr3vϲaEqA Z6$ JFcsZ [f6!sa^EV<{`aւ#`ѦG_cBt-ʢ'K_[MXȉH\}n)+ٱ~&;4Ss8b5r6Oet2X1- K$f\_C:ԟ=qOԗҶo@IƅPO8$a`K· ^9 Vp=|IU2|r:E"n&duKnw`Ž8>gm#\47"6&P5PwІ,65;}5{U g&&, |Vr(D0P"vf#]\{\QBssˎB!Uu7UHM+Ҝ!j?C0%wJTJږ bB"U->\c )b:\u?jiwT엸B2>؋X; C8Pb[C:#Gۙn\ĥ)R޹2cRtV/Y\Wղ@}&@ pt Y"ya`MB`S7'ݦzKMʧϨts];%Mg;߁&p49âKU: ۙ6.NI1+t E}c KzƠ[$y ;LA Vp@UǓZOIb`VW&sb;Z8Mݑ2dsPs&tmZLoe\y!hTrzR9"W%gG"J->)5f9VzNAYHU_NeuՔֹHg8Gk[Yx!iz\/1T iRGRK?Ւh"nDf=I"{;jDcC#Řh"pF n`Rhphzvxuv1C{SGD! :ص鑟-t޻s|;a}"e1$\< -c/Nq[f֘!PQl0ȊT] ) .wtc)Xlcxczk6m~O}-kϔjAP \UWp҂u*ED ̜~̔Lަg1`LS@66miJ_6JZoe|*Ԃ1}R(TXѹ$"LԼS#Fo 9ǀ7p#g!'GG $ ]ӡZ xnS۴  o' ]\+cLd/ I49cMރ9%u,Ix^ Da֜ip"gzC*N " $ 2]eEQn-g^@Y59oAe,T69̑bq*p"oվ"t"?=7񮗏.i'vO915gAn-Ő/jW<2<̎S\TDȡNަ!xM.cF'>'F/4Rf*Sy x8faMXp$ӦxH`)Kv[JErc؍w  (#"v*l5)V:|i0D}%wc CJ(2ղU"d[ :d i/W ֛_6e\NAb8DP"ǿ`z.%h{ P5T:A' ImEJ{ًYP "+N;@12"--’MX[1MV6'8O!)`·ܾ@VJ3 <h}aߔLVS'n1&"HGt&MK)5mc¡,T;ɚ]HhT~ƚ6&yґt oh0490HY]c?". }^dLv6lÓ3m[]6&.P4䓕IR;{Ri6?Oah(=2?W4py+<lNAv[Fz}xq۟#:Eac$ |6a,P<:P 8^hxgP_\"5g7a8+353%01Y\J&2z,CBY%y\ J[sk\[;QĀܚW<ۊ:zQ堧A2e3;'*R\-=-XlmC{T$\$T}V7 @:yY],b0dpSLɚB[)G<t7mQ !}g:JzurUN$3r}'6A}G5BQj:Ԟ@^$:mv2LxX'\sd(n|Fd]^N!̇y=mc) "bdFI爥0cOWmxI :&5v?qC3Q0)+CH F0䘹V9LT mqef؂*ǻI?aԦAe'X,VEs=2]0 B2nvVB ^=SOuƃ/w69d~yL-Sm} h2;uV# :21?"do!wy\NY=5F2˨qSCrUF?BYhrA.$+ + 0vF30@CMY\MSuB~{!Z̡z?Ȇptz$lZay굨K=;"i'TJ2@v`[gց(C24 |'2AtUME mܰߍ+t%Gn\!v\7CanBx1hFƺ-_4?q9p꺇 RN]WLosD); F5+@"wĢAVR(>u%Ae,||WH8^crm>a D׵BO+, :zT닢]":lq1Χ 5s!羶W͗$ZGYL۰`#U,GÂ\Bxs6 ~hCQ*Y-9rݻpV~+\ʆp;i9XY"ivӋa4DS.XXHX5r< k/K"Xg}-!EvÏ:ZBa-{qx DIAul? ubSʢH>6_7:>3`#vxߕ/ l CȄl 1G^MwucCaƥz x ~7(b+Q`/#kbj7EjB?+N#Ww>v,K̊ʁx3O٧~ݱ ᝗-E6T!)H{pyiE-_wf6WOp䥑+>L\$! ?%>r>*M?8W)#g)8HA(sr+m).=55H45S|tFc({nvзJ0|5|"P^_*J Wuh|y` Y Vod)W,R-Li?2(hg(%j9& >K^ aH2 !b#߆BYϗEQV$t/ʕ H,w ﮾zTgeʹÙܓiZXa(A]D" ,tE|@rxs~D(a2FVĻ/".;Xz|m-b PRE:uܒP( d7ZLb6AI_}yVӔMn#H*dw>KB'?xlPOȥ>DLbKwYiZ+&bMϲ36ŒbQ-)cq~]HuMU`z 0 ʳ'"%A|^ WSp36;օE  >h^: %rx r5/Ut-'V4>oC }ٌFY a!P.MxQFSp6S&[I=ϫYUV I紿d \ 4{>F6}4%$\O-Mo#f~ՅkI\4LJqNo!+sMUHFID+Ŷ&GqFV#,,W:X~/Rkz0 W&Md9NV> tp4JGYv/ M_"mӥej8G y=Ǧ*}HW=y=xU#8t' SI(jʎayϞFTg&9/5t+2w7fzӜB ՞f~5l`~ zŽ_l]B:L,+1ujv yθ{QFa%ѧ6Vov_qNB#MOϠ?a)@iQCET)3{>؝cdkgVyd=+~*W+Oc٤btxwt: A0v@u"<ǶRFYvܱ4԰d1TIXӭƵb'8w q;T`(k+7m{CfbLIJҞ̵SrtWD647 sgMSChPTVx+@VIR; Eŷ߾H&$uXǑ/|b7WC{w-B4ci9Ul6i;żIKPtZ2hcSj!u@HGRUNBt'ޢL%FU*Q~M?e7.5;<߆kvDH?)9}NU=lk7*xlZ;QVF{:Hd*5CõX >D׻seL"LaaV~bxTQ`7R1-=cxn<+mUzWkaAk|+e,LgU S4Prr|PJ' މ>D펙+o0O#qzB0$71,1IE;j2\P4&f ڬ> g %;z+zviЫn$NZ Nr.D]ʍ!98T8\I.D ͋eHmW$:B*&mo=x=k7fSŰ3r^*i ՌW<Z~$vX(k>6,0{gyvX3Nn} vO36[1/r9xﮜ.;鶴߬3uC40 bj4 2b+'>k0kY9y\y%>xAM"h.Ẇ\ dU~4z:bY ,4Vơaߕ F FiKﭑx0+;4sq(e< yX3Czn7rjHXўX_[á%т"Upl A+iV#s8ɱђOh!?{x̌w% *0hfY~8R..s>`KRTY`z!y}{hC1Dz cd쮉SP(F6/F}mILnUf~I¿xRhs¶CPVqR'9MŲuFy6+4]E> mM $AU\?\F*  Qs7{5=s {FZ!p]T8} ~+z"0Ō L ƪŖ-RJJ0`,@ywr3{& ;R"ӄl8{['Qx~hچ%~êGZ8HZ28׵<0Ʉs^p m#1y_)`A7֔-lp$M&= &I8HRL4Dv6̭6|X7Ϲ!{iTUM-ƃ3IH^v{eQ4r2YAnzd {(?blwBn_hEhw1:NAL~C#p&Ň iKV5 N*?s̨5`8s9x z$,h] ;PóW˹]1lPPuCO{_f[R{\A2T o<i]n1u:4Koa`PYo +mX>a`QCM;ZF=_KKon V_gG sķOfZEՐu]wmכmoBQ? /9g}}@1$$O!Z(Ҏd\)Ri懤](^Vqֲ'!-Ig VdԾ`Փ>Phv; Y h(n& ͠"?nC|[u"&&?y8fK#7IBNQ5He",\t]\ub}J{ӥ1y|a: ger?v^1?WF /+e_}aFf'Ui`Yg DP:"_Y` BqHrM1Dt@ohR7Z"[M>ٗyD`\?X%be0fFu$'L&*.nFØ>g-r?d?<.}QL_}#Fd.Q<Ƈ}2=ѧ3̔Ve{Vhns\쉵:.!޵>>aot)J2pڱ&*\y u bfд-݈K]sPD v͛p}Pi)ن*&ŗF&'ZKy@ l/6 0duL;zdܚ(ZW)U?d9* x>U1ȳHRo `8X h@G:BtS=ŻVk)|hZ tvu.\*.(E3]g#Ewl6n ORYy}ۇi= N >H=R^H^9p2v!d:]O"0Hڀ(?x%n.T5/S;Ur.qkvKqvzlA7\;kn,Z&| )b]_jQfX>uIU9'zNL_iTe(#'޵ ,KUخ6bb2bPr<`h EXTqōN"$[t^0ܺ)blL,_tI.$ST8'P5gZp: gXƻ^uk֤{lTGnY^g p *8vrHvպ ҔԀ阒ԲI3p"$ysT:}fMb4#*.a)5DZV9oQBCVhǡI>RU,'%C Lݱ棅ޫlۭUpF庣$0 Z}`σ#PaiEsg>yG;+\l6~ ش˪%la>+ ؽX.m"C(Cb-`2\M;).;'GAh;uެOK=+VL[chzL֍Xw(ݔ̑)6A/ObOpF^'BAMrW!oKQBp,Nqf*\Ș ?[X䙭c~ϖ?V9y勠lZ{3ܐk5rz(!H6*W檚6@xR3jH@@7Wnİk5Ŧ+ƈ}oH'mY`pJg%䗖~ELG p?7֩ݞA3E@ }յ4\wm? 23e/:FR8Ν*f8lb~yZ°{`= FYB]}M$i/UdrQVh7NFsu_x!܉#ӑ r:GМ[,6Eƣ#zw 7u~p`;^㣰^]SWh ڝZۇ1U1 XqWs c|p,H yxgj3Fby#_W: %+iL;24Ё;K57f=)gLL27cxG gtfL[NrqүtH`͍RK)ΡqOayw@-$BQ r1ҬYO&f28ưִ}-%1#U QnTʱ2ʣri=%(OM\4MvV6J8yC̎R+H~(͝ҟvbk5on2j۶ٕ)CuZ4 SXj~!aN5+ߋ@~͐E$\w C]vӰ5zx)_'wc\`|3͒t0=/3o+T8(iXـ?{kSY,F[ft0 ~ώMܽY /ef2fFi=۷U,GCB` ϥҨWw'gi5st;Qbi/!-?o?QjEDbnFtx j>ur{*X9ZQ DVʇZ"mk4Vp__+@P) ؓ(Ⱥu'~ya]l[P. :9 L,0kdmy=O <>J^"ez=䭜fVbi9CvXo`x.dS{Y R<8Z3,0+j{3Q;)fBA_0 ntkgNA`rplwpB,Mw6y9 $2f4$Z v5iޫ퓮V12| vY)$5_| j" Gǧqtԗ~[-nI1r%9űBs4S&&h3Q~]qO|1Dh3;sЍzV_gER<o]]AC:` DSv[ z_GvS!;wd,\Vabtf`V>S~j"Сy{R_IMVw ~^RQXj7gvGO!.--6wN#koLXƯj~su4`AU O]BOo}L=;?n2Sbq{)&uGauv%jH40 HL1?1*ˑ$P:_:]x vϧZ5?*nNb8/h[ ~E ֥!hFl5mVW9^E% {"꿵G]$-iZ xp4଴3G^ʬgH>L!fPDl(%`~/o;6/=)@0< dR9L6l+&_5!egj_|n(HBǖU]B g3_Puvl/GY֜ヂ<HD}a(}}{4_*1qѐ ="tڗZqbKX{c^^}{4[*2ja)_Ih(+vD$z'ZQWqz:x+6 Q3 QQ L;&㾍Q!|kv˜Nma1K\ S(ؒ~M˖:EbS Hd.sZ8obq\ V\3e"6!#Auj",Ľ{'-쏻`)64 ɿb/Aq< Ť!ak6p:)$0 WX^ ˨KL\1Q*m ZZ#=ytd[[ $Orz`>B=zSuӞO&@ǻFjV?.iMp^kR8J?I/0U][e՞6 H&JTA1iPX&mԙ6h#^tS pmT.SAIu|X'p53"$4j> S!݉#Ji}AW R|.B qPdg 9(p;jA^:} *FYY7Əʴg󁞂Y%]e /-st J5tcغ84_hGbHbcr"Dc#GeB.9cFz0Ko 1pFG-=VRSYט4x<5c1{v@vCI~eS 8vu[db@wRA P9lՓ9H$h., T9Acߙ eeQ.]hտX 41}uݬY,Pyč;0 kQB2c׮|ӲN[^zzQq]>ld.b7?*AWM0X^| EZfR` 9x߳vRC{F,_4Ϟg0{$W#AO޽v=nTR|,ql Afց bڙšщF* F ,lt44s|(! 2z;Vv%A2[yXAdA>Jأ^U68Sd\gϤݠσ4Ό>g{ȱ$f, %(@z^}'DEqsHCَڕ03#y?(qcProL'TbU ;be9<#xr cյ['mz݊uVlhu0WjGHsY+[VHuY7qx@0V߱U."ڭ|[ZMov|H lOb7u}/ub%tJJ/%ZVQ[#{,.ӱJNBl>HK ԝ-+J8?ɭב/w%q⢳@>TYt(T?P־J]t,z8u~Q%Z~1oL87~lfy2ȒџtȺ _\D ㋴iӫ z?:=T[ #C]&3L0T򦦚DΎxr@z.y1ŷ:iPbq/_Փ{iʔgW+WB}cic;j&TqyG rQ#XBg4c jM&͐ LY)), ]uLp^L/ݴ|M$iM6V)Eͫcoڈv[nQ}RGL_JhEA܊BHY`| FN!$8lޙ'Bze^ Nx$hO_/W,Ղ=Kt9x ^ro/%_j\-jYW#rvܾJmH>0NU3$xgn-Ue'eVbJ+qR*S6Yta\r({QPTL2sHJTi9#&c dYKb Lupi˻j: wq*5lߍQ}_61Y4]0L9y=ghz-m: 4:stNt; VA~FmZ-"Gwg [Q#T9Bϗ&ߑ|׼,7؂#͒Dd w!ñ?SnRԁX1.Vcd`xsϡ7iaIG_y&)=آU52?VTw3vGvPQsX$D;̤f3.} (@juD#qEV5c lzC837q>uBd|0C?QoLxօ UtyExw!ƊS5%ϟ u8U4_l>˒o`/< UŌ_PwP y "5JD׾K+oZ=8Td}2=R iaG\eWS.ߕvkYDM !-jb \Iypw(_028k;5-5vW ġ<$Ƨ:|upjc*=+z}<^׈A eH3 ДdE-\9{¾ȳ Vvֳw`SoYAʕοbqiX vnRas)G2B~<QGF[E++j aK(-` |Jg կbaE9>"O=|Iu'6|y\Ɍ*wn=YݢVptsy ,`xXlI;,[i7nB]d !uzEAl4ހÉQp6 +z,wJUV􁒽}uYvG^ۇYet5KNx &,gK!ǼzVaBmkXi+e80xprQ?a&i~ fq#ί?qO8HX˞?"PKjm{w,m5sOfԋ Y V.͟*O i"JvCCf:ϙf kf Ú{V;횊W4,ʣ] TuL? o:GWZ&-D`-<5qڰ6= }.XFnaxO^tr3ըDen9,V\ дAl:=e槨2o qG8SJ܀n\_nk3ݍ kˎ< ;S͊keڙ9+S =y>R2`'DlyI=AOӣ85UNQPF{ci$Cx c!;n=iFiBG):JUtGD~$iQ$-$ezF!Y~߮ D? Q1CdK*ڕbu=!2;.ѯ~ˎRipD2ߍP6j[ʤJeWx͊tc0=(L(!BFx y.t|H{؂A oB':e IHJyuω'zKYd=p [%)wX.kX^\OMK& X'^ύzPBxײM #"+ZwoI/cYjk.v`޴4Е͕񮅁~ZMaLӻ[޳~z3^]7M~)i'6DV֔daKi -CYb}x!^f8T5+LBU4^heb)WhEQѪsr!L>Ϳ"Fkq' $Œc$FF2O;J> b zB9 # X%#cuƛo7DP,e*ySИN]vXٚsň WC<݌wPVv 'ԯ2^EjT"ipKX#7~͟Fu8Nȝҥ;&#>%5@ĭrwXl≰DUOH5 P"mk,w7?xP %=e0m\` iy_}VOsǭ`v1c#ͦ>7w3:Ne8h!s.*Q.Lp24K<% WlLRaFi띤y>͟Q$0Rɦ }o!ښe.a㊅?x_a]_+3/,7 ź,J&:[ޅչD]=g mN:9mۯZ,q)T̉j-z 4g%<_0bR] cQNk$KiZ5ooT""si5hӰI0eU?Ô:/;bdIZg8̻&]Ky3ϭ0C֐'ҁ1Fi 7*i17)so?t&MCq\)DU%@o/*xE=uNq'4NQRʧdeY D# *B",Cpu k\N͔\ת2ҕ*e0¿vD1@ZIn)z?n W9"ƫUHup9HY~DUQ0pxp􈸳 `8SVBgGԺد{k:&ktzߘma ᎻЎc> :`HvE0AfnX2GQj<wU_dچELU zl8ޝn;ݘf\ [!5LG1z= aKyr1RYc*d,pw^&|i^`;K37LBL^ruoC?Uwܣs*~IK+`-,N8Hdm &6ypޚ};"ˆC6d3vm:9?رTs˱o"Yf^螲}2f)ҧw86nd@u4\k3H1yԧeSZ+MeP?JAޔ:4aV^+QCyY΋܈QHhKɴãѽ3p1!ׯ~]>v{v*%%Q"74F6a[qꗺMeA[ނP]Ļx!!jHc[^i0 .U2Xd{(0{YQM˷o9Uqs mtOae+Qǹ~uS2*kͪl55[Gq(f6 !%/8hJPS,/`z ufB=JQFXlXG9wNʐd\ٍX0:4im0,@\xG|&: byMvJl /F HH>jtyNEVnak.xU/]QDZsְaz \Go&-W`reT.' x'6(Ʊ5]7hr([\M%i8Kw_{89'~v&r% 8Ο=iNEl Qiy̼Gq+Y `v8 eQ;qv-Z}]M4Kr ٯ3ce)B~+v!ewK-x-[crR`K N_㷕ش$l1cXl \H?gmbƊ9p=hoق(ǬO.:mt=cؚS g9ݽ~Ia\A/Ee5"#V0~' 5*f%leS+#F3%}L(UM-F{ƕґ]d8662c|r]z0J)GC TFkJOHOӷդ& }g=M=tI+Lܧȭr($Znsɚ\G7?)uɴ$GAXH'nAT?{F >{H3WQcdCτs}\5}zEoKܥ ?0^ߵrQ )})F"J[.)\S6 C#EP]>H(0j<z;}46dX!WG]POG;md6kkHH7=Cyxa1t,$WX޲Y}0@vMg A&d8wHsQZrne !aBY#t)xVQfE೴NE; T36V9AUhP.6[1{{ӧ 7hm-LI0ka.}]Q DRU#%̺ޱ\ٗ“?P陗NtMNN'R'}k# ' ^. n*gqM֛[@,Bo%_Igd,y2jdg=Stm*||eD`o>v؇sk*߶#@0p |CPPspcEMAV'Gr,# wi4wbi`ٛxb 1.Y<] P8!u7si:hû} LCEHŨl C *=y`WSͧLK00jSEș@! :]Ajyy$R9^9(Rq&1տ%)sp1@|7&:o$CN`d\їYE!"{m)qm15\Iq;0 Jp+G-7am,h>Xz-ґQ'a2Ripc88us0` L#4 j$Sr9.b **.rMdW*/r;~(iEΕmwb&2:g=ۂzЫ8[~!ӹ{Q8%gvq;Pa+xy3C%O2}[y˂5d+֕\17}՛mǠ\gy*ǃ>bU]hQ䏲N8+ҥ7=9냚kUN 9Vg1P5TǐvHkA#B_8DtuhfDOƬ|=W'-u1SM[W㬇b3$l^SQB&hфO vc^w^&ٺ¼wNd8OqLMH;r snc%̺O|--$aH\evM=$ɴלQH]ԃf aRDfQYVytީՒ;aɭF&_&D 튧[9I8JVo^g\$wq}1'PbmŚH,&e)ᩙI{-rۗ@7SU)a3U/oFI_TN6鎗a0H ]hFB=8H6ƀӤ ~%m*7g?'^Oq1jcL Լ]1-F#=Qq#/݃ڣ$P1!