package modules::interactive; # $Id: interactive.pm 253241 2009-02-25 09:28:44Z tv $ use modules; use common; sub config_window { my ($in, $data) = @_; require modules; my $modules_conf = modules::any_conf->read; my %conf = $modules_conf->get_parameters($data->{driver}); require modules::parameters; my @l; foreach (modules::parameters::parameters($data->{driver})) { my ($name, $description) = @$_; push @l, { label => $name, help => $description, val => \$conf{$name}, allow_empty_list => 1 }; } if (!@l) { $in->ask_warn(N("Error"), N("This driver has no configuration parameter!")); return; } if ($in->ask_from(N("Module configuration"), N("You can configure each parameter of the module here."), \@l)) { my $options = join(' ', map { if_($conf{$_} =~ /^\S+$/, "$_=$conf{$_}") } keys %conf); my $old_options = $modules_conf->get_options($data->{driver}); if ($options ne $old_options) { $modules_conf->set_options($data->{driver}, $options); $modules_conf->write; } } } sub load_category { my ($in, $modules_conf, $category, $b_auto, $b_at_least_one) = @_; my @l; { my $w; my $wait_message = sub { undef $w; $w = wait_load_module($in, $category, @_) }; @l = modules::load_category($modules_conf, $category, $wait_message); undef $w; #- help perl_checker } if (my @err = grep { $_ } map { $_->{error} } @l) { my $return = $in->ask_warn('', join("\n", @err)); $in->exit(1) if !defined($return); } return @l if $b_auto && (@l || !$b_at_least_one); @l = map { $_->{description} } @l; if ($b_at_least_one && !@l) { @l = load_category__prompt($in, $modules_conf, $category) or return; } load_category__prompt_for_more($in, $modules_conf, $category, @l); } sub load_category__prompt_for_more { my ($in, $modules_conf, $category, @l) = @_; (my $msg_type = $category) =~ s/\|.*//; while (1) { my $msg = @l ? [ N("Found %s interfaces", join(", ", map { qq("$_") } @l)), N("Do you have another one?") ] : N("Do you have any %s interfaces?", $msg_type); my $r = 'No'; $in->ask_from_({ messages => $msg, if_($category =~ m!disk/.*(ide|sata|scsi|hardware_raid|usb|firewire)!, interactive_help_id => 'setupSCSI'), }, [ { list => [ N_("Yes"), N_("No"), N_("See hardware info") ], val => \$r, type => 'list', format => \&translate } ]); if ($r eq "No") { return @l } if ($r eq "Yes") { push @l, load_category__prompt($in, $modules_conf, $category) || next; } else { $in->ask_warn('', join("\n", detect_devices::stringlist())); } } } my %category2text = ( 'bus/usb' => N_("Installing driver for USB controller"), 'bus/firewire' => N_("Installing driver for firewire controller %s"), 'disk/card_reader|ide|scsi|hardware_raid|sata|firewire|virtual' => N_("Installing driver for hard disk drive controller %s"), list_modules::ethernet_categories() => N_("Installing driver for ethernet controller %s"), ); sub wait_load_module { my ($in, $category, $text, $_module) = @_; my $msg = do { if (my $t = $category2text{$category}) { sprintf(translate($t), $text); } else { #-PO: the first %s is the card type (scsi, network, sound,...) #-PO: the second is the vendor+model name N("Installing driver for %s card %s", $category, $text); } }; $in->wait_message(N("Configuring Hardware"), $msg); } sub load_module__ask_options { my ($in, $module_descr, $parameters) = @_; #- deep copying my @parameters = map { [ @$_[0, 1] ] } @$parameters; if (@parameters) { $in->ask_from('', N("You may now provide options to module %s.\nNote that any address should be entered with the prefix 0x like '0x123'", $module_descr), [ map { { label => $_->[0], help => $_->[1], val => \$_->[2] } } @parameters ], ) or return; join(' ', map { if_($_->[2], "$_->[0]=$_->[2]") } @parameters); } else { my $s = $in->ask_from_entry('', N("You may now provide options to module %s. Options are in format ``name=value name2=value2 ...''. For instance, ``io=0x300 irq=7''", $module_descr), N("Module options:")) or return; $s; } } sub load_category__prompt { my ($in, $modules_conf, $category) = @_; (my $msg_type = $category) =~ s/\|.*//; my %available_modules = map_each { my $dsc = $::b; $dsc =~ s/\s+/ /g; $::a => $dsc ? "$::a ($dsc)" : $::a } modules::category2modules_and_description($category); my $module = $in->ask_from_listf('', #-PO: the %s is the driver type (scsi, network, sound,...) N("Which %s driver should I try?", $msg_type), sub { $available_modules{$_[0]} }, [ keys %available_modules ]) or return; my $module_descr = $available_modules{$module}; my $options; require modules::parameters; my @parameters = modules::parameters::parameters($module); if (@parameters && $in->ask_from_list_('', formatAlaTeX(N("In some cases, the %s driver needs to have extra information to work properly, although it normally works fine without them. Would you like to specify extra options for it or allow the driver to probe your machine for the information it needs? Occasionally, probing will hang a computer, but it should not cause any damage.", $module_descr)), [ N_("Autoprobe"), N_("Specify options") ], 'Autoprobe') ne 'Autoprobe') { $options = load_module__ask_options($in, $module_descr, \@parameters) or return; } while (1) { eval { my $_w = wait_load_module($in, $category, $module_descr, $module); log::l("user asked for loading module $module (type $category, desc $module_descr)"); modules::load_and_configure($modules_conf, $module, $options); }; return $module_descr if !$@; $in->ask_yesorno('', N("Loading module %s failed. Do you want to try again with other parameters?", $module_descr), 1) or return; $options = load_module__ask_options($in, $module_descr, \@parameters) or return; } } 1; {thpCwu@@!oq\$FĮ7غRf5PNG+Xӂ Ҡf6v #lJ ]L`\fέ06ε}άO lnRD;Yd}ZjN>LN&vUJS'YNi .!‹OIqcגi'a'je«>\][{mUԢoX8{k2ZRxJ&#rndͪ=Xk4ٿ}X@e#9RAP\;. #ܤqZV)@P{(auK"f1HH1W@x[] 4ʓb=aZ c +%c ubFZ RJ5:LJ@H9u e+9^s}DȢ/D==+zox7负 c&E[ڒvBmqk$8ƼP YQXQSE_>A4E|GꂚbL,dB\SM ]F+ 8`?0H:D4I{龫mN"ŦCO~7u_FDm<35-agduԭ**u}Ӑ`_Bwq.Z޺9em:$Z$`vѧteY  AƣO%Z>d~ ]H%|# ɶ,b F d\p"$fpc $=ǩx!`w1ZM wkW p}z=JGp Tn‡JL86zfھH`̶fk +n )$ԼEpw_;W6x0-qp2(h;-4p4T@Ȯs1Y{L15@k7Ŋ ~Ջ-Yj~41,(Ӡ1Bg#y#@i>Stheí>)2c\ X#WJn f 'U_tV^95h13=19FȧǙɈ_xu/|l3n0e( 7J÷̵ $w@nSͫqJw/Hd$yh<^kc̊., M(; qEn 9!bq".X;4MKtY1,E\:p1Xrc3!Pm/ Uj'*m{鯴 R%!V7is=7ܪLJ`}?zy\3>4C%{VGЋ D$=Y6ъZc*1l ggO)"0J΢SPĭMXa{icrN[7DHR֤p kSٶ{iѠz_*J mHi醆C&9j^N}w>n; $e耎+-"ca,['w/61$;0XS{ Ç=r.c@sGU/1Vϙa"oKXCvX4gc7*Bs1k,KK~96*s N%-Ar)]*%5xYGd=|P~|-m6*ܽ1RLd[-b1fM{()$_f?yUac, _| lr4#mu7 ECwOd# ='5սw;?R,0UɀEkH"dž;O 78i=]"l Vђw)%1|E#!7;o%v@&1OtP%@M&ށJڍV[.t,]A9R Ajh6au-FrՐ_8V)v}'#~@9xC~#PkN 8G09fti ß 1O 9|kNQ -:G45o_Bλ*IK?F?7x9a|+ zr pA̻@{SUYy^q~C|AS?&9F9fx4UP kl gX yT>#D؂-GAXʷI;/ PKq{JO^]ͣd|!%r&T M>Cͺ)ƴ'H#LU1.WMݑ6n볁%RG8{!s\Փn&jBGbxn'UTW9U\cP~+ǸiͦK{QD @%\78f̯U6%P ''vGVg>NZb-$0g-[g`kosm2aD 62nDi۷qW(M{)<;0oTdg =p+}$cDw$ %%J4ggYAq!ɜmʲfv4+yVގ ϞJ4~&uWPkqf ggY]^A33?ruAy^Ҹu 6C0-_3q=g}A^*pys(5O0O7bbvNZ,U,T bNSZc9[j{otϟ mb3Wޜ &?=wUDoXm)ka I4.L?+Ԁ`KLWPE-c汌%rޤ7UҺoQSzo #C+Yٺ:Ct͑`mGH V3=i`gbGì9ӸX+?AdH`W?PDǣ`$u`"P,u&Y*Uso j9kF;3V򲿭ޟsOjA6Jꮒptp%F(khQ:eN#`[ cq|U28jk4))&]8^[N #C;T0[8%}|3勌PN[O UY^A }fM?ci3U*6'5iܑ *v*ei],MefSfr}ÒWC3}<#DZ'>F2r}MiOb g7:˯@4 C5 S> :|hB6."Zh:vy x5ČˏÛ z@Փ 48/cOm/a4&>떋Fqp ٥8DCaU q%#*[tGTp0RG$8t]GyFw_[UP_ͽ?4iRnL\PU@d NէNh^u:lC/a;~k4IN |(4 0S|2L{ӣ~k^{Su717[mq|Ѝ:漯S3͂ i7P/c>K)Y`VJQlKDHBULOܙ!6Ǔl5?PvgԦf5Jk a '#_> ^0jxe&MV?0~Eo !]|7d_df#>"WvZR9։$jZ >l؍RJ{Uo{W |vrp{dbRd]0 ߘ˘39CȢmCK{l[\pOJظ=P^l2 i;tV"m(F$61=n{twY kF9 ɛeɒf3enrgpyqUm\vrț֏!E[3b~ kL3doa5nS=gc{&Qڔ֘{#9=9 ڐ)gPx_AGz[A<B'ऀVaľ͑Gy5oQ#QZͲr ޳[ V#wֲɾpV8?VtC?]*UQƥm38 )aRl@v|W@M]'p oW[vb́GLֽՏ<φӔ\Hv]9LƷE9N]|ZW^9 .\?+_=Z{Tc+_g(K'}o[UdQaSɘOmmΆGLl|I 'ݚ ˭%ܧB4=;C]iuY1yDk>UIgS|Z,ވ;Uyؔ@KQR23#̈ !0KBu&Q6 e<cf9jvmcAm{ĿiFt9]c)o}+$R'N]M`徰n<,Qz=mg bt2ZHd&$E}7؃ϡm)pr xV,<kgf _c4O)-"[^anI:aiR_g\PJaSF8}s##t"ԠpOZ X~3gPܝu|뫠T(^h J*)ֲ̳!G*PxDKġ5` r 5s[pr^F> %AB,=)\jQ֨rsC~miZ~ocd.-LSxH_~ pV±pqZێ쌏d+홄uboT&6d'*މ09¢<ݰ}We@~ 6H>w2"fkÂPbs>Zp.,g!n>KOoHP}>cflre&WD;Dllw/ g.;k$Z&C"b<$n k3#.X#g4P չINͧ.ԧN[Ϭ~.UnSA$&@'1ta;S;aYL]m[a_变[NY0'fd8v_{݌eJMV6 HqeUg X_Yf9JϦ ;l3haܿWP{OQe$]QUFAF L ~k_ȴ㉊a{!WS0Ϙ:de$Q0b\E?-9atP Ͷ˯G*An/eaDgg97u*IdpHhQW@W6շRoǜ8Rϰ+J_qD*BuӺg [Fڱ؍ N筗|VVoaSV|I[TGʸ^dJRM3`U#ĺ~ vHFhrL~66VZ?' >\3BN5$D& elǖl{5B{ u_{6;_qf1*Og}/FڏLl$^*D#jD^ܷL?v/N6DmuL{)#L⬹o놝.a2,72g Fx~ӃJ}4RڶqW,=?sTWo ^08TbWa>:9AiJI`1P(ɕ̶M'78u" $B4q/-*VujM9jv q䦕]@4h3}*e'5iw0ocǚ[k$=VȦ!RO-P&Jk'Q8ϩŖ:Y^_. p-Snxk#s]Bo F^gڂ*tԩϫSaHTR\۾ŦbjJ[}ȉ!, 8( kCF>$7=a-5@43:&cko;wn& D@10lx{>KX4eОvF{ȃܝԏ4Ȥ,#3=`y/'`-T]z[ra7RPRCE*pr)l=ݙ28E&#3=,:ϵ>Wr_ bz#)y"ǐRw/+ mc,qD Xq纡5 !6ˑg)1dX]JvR.qA5b?3aαsq_?u=1HydӤs=3:Ax05T6XtH.!Ҽ #]vƣ.G|λ's@B*Je.?h<و5ӥ=A7ƍ]@`^JUskL.q;EwSW8k3ӘON$j-?SRZH֪g0v6`7ޥfE+'c:ӱ!; ۬B7G_Oq"'<l2ySzC9#0Se>"y$o5ZHLIDHkqiYxS+($Q|֦HD[~7GbtFYkeU4x :2l9kQf*Q^wJv޲l(hl+BHAt?a?X|U=ډRIUJvOsS Gb%\~p'U0c ]@ծ$>ƇTCH?L҈i;[WmFsʨxRP'x?*AO/- Dk6}$JG!ſaS0'늄FwuqlnU;{UǝGPMϙ׵?ܲqRj!e`1}]p9E@ck}>n"EA[O .~C2)Rk#7p83'P`㐅7^NillW]ΰfD`otW+*a^/j[ :;-m7\$/v;nDƸ 7)ӣ@[2@ yLU Aͭ0YH'Bl+M @jMtYey AծV-gu@y."WlB.Quyq{26 <] R{*O}^BJzL/6o0*BvVA2Z;;͉X!37K|k=Zץ6nʚY!L= e DHۍI.0v?=P@uI)h0"J k l7 *.@2ͥE?Zf][YԽ6x1A^g41t$aI +ZVwհLt8VRIV+k].6sVC3꟦B-&,qC=P [GI"?Ui| tNV8LsLݟ^{ib|km`Kc.+/V#_fTX9H=v1(̥pn5݇;bo{g:>15lm#TQ3 H W7ˮwA:ea"ǴulAhpkcG ѽYm4A;Oh.Cu']gP YdM{!E%rmK4wC ~(/NF77;P14ͭiښVOTB$-=c$^'; &`lXR{\+h_$-3 ꡍq[=q`:}$fybc&8<bhڢK Yp.bOV&70}hP,CceJ99vÜjǵ+`_GO&Wf`XMHQ$PtW1戌ރMt_ P6~s޸A8[2Fu.v/v$wȬq0O/?eXŚ'zkUg. bGߛ!Zhyv!*35@%&M1HCv7δzO ,LbZQOӅjy:[-6es*'A tV(eV>1Af y,6`M. 95AXw_ʮ:xUh+.TQs0>!3rH?iNM@$1"Nk٠5JbEB;? SNsC$%HoyE"IZ]}>L2d94_^O x=lǹb-yWr[OQٚ|j4ƫuV `mZ?x)!"j4 /1%XS92NppR~  K53) _[n -kVzq\i[cgڢE@pnr0%w 4pTN2mhٸ{t^Y'u\aoHN>MxR3 "84 ;}Q>pxCFdȱ͟0Tf Q+9kOfƹ-13kߎ6Se&TE :AEk7OLodP Rb:jE̔ZCOc?g~™C)}һѵ*AF[hrL.dKVvw 5hg+5g[Ѫ[&0V۝9DҊ䐅H j; *g39jS8iîj2`-,DY}\$pjX%\Ns))*fWtŸlYN.DNhLm8ĭb5xʁ([fl#J>('˒\C"K!;C3II5JJ(wJd 3\"XHI@P"k!۫Q'aS.~X[yF"t@,+`=E4e0B "O5 5⁕9i3RVηԄ3Б (1 ˙aR]Y 㱐tD  xTp zݎ c j Aו1fMJ4&UpC }-i:-sX.gB1Fb0q DYa3A {soV6_nRz_bo;Y 3M gU`V>c&hϷ 4UzիD#71 _ă[4x3%͡e'R ٢> @*H;vBI5+(rqݧ*R0HD{3t4|XBF7Ebɶlg5-NDy!Q{ &I/6CkA\Zƀ_$<*/."dsuyp+2u\A6"*ΰK?lo ]v8, RT{Uحo[*OTIח}+}v9=s(X?1TB{dT> }N>2n(u*ցG%\eϩ!RJ*#ig;_)<44 gCP>Gv/-t}ffbalvt< XA}>xsg["$8懚4$#'&^|k:ȝIf8w!/()2>(D9fnu^40WE"z3 n.fmϋtwJbl'-S'ZvnP?<^V'/99RF΍hg})O9V] 8` MuCD݁轈R-(fqe蝦þf$S uXgqocΦ!+Һ {9}%ty T=2&5j bi޸JM-Uz6b$8JN1e]-T \d7 ^A/_@հnnU1[g1[ή_5t'.yn*!TxVdIaF(1=z=ʉp 6Q7<ʶ}Dz19Qg3ᣐ8^TgWr۞{־R;%R؛c l =|}9GFsc>: "uwm]A).in[{csf[b=Iq)A`?w< < Yc &1HLa/]UJ !J II{p,u0UX1U~J]ّ,1Ղ * T& }O]8E.B]B}NϏ: oy C3!iylKp~Jcl&T!~E1!$ôVsmȼ bop-]̲%^Ɍ}еq aHw7w*Ź;~JR\/A ORw/PUy”X8VZ !]9˨-ki=+ *#V-}ЁP5:IˠP3|ؓ>FHAxZD(h;vVEߗTV7z?QUq"/c}^yGNI}kե[xpʎJj䝭v]+/ ^G#a^UοO]cHeNdW^ >1DCBb{BgH.' Fh. Nlj^,*pK5L!C(1Uss鉫_2)5NAhΜJ U` uPӴ4mcr)ϊj~3`YBF씼sq>I? J'j:Df.N?'XxQ ljܦ졺c)ilY{ aY 9sDV]`5<dzO:޹Ϗ*ƪ j"&.,,XjaʷgH3`4|j:8׈ @ǶDhJ+4a ɃSĐ*vp6zIk0fVcm>M:lSťjðh3Pwzi{(5~YdGt2G^j` -Ñ_RIy^':e7Qi\+-V_N'݅Ii aL+ⰺ@$%#$SXx_`¤"#@G)TRr͕? ƼN=Lo)I4?egItpRMi#O°*>I@q6k^.zZn`oY)^=FvPbf'MW҃7K+ `O0&׭B'4+9Iyh|dӉq׹6>p>"E,%Ue.NzIjߚ*ڜQ.-O*כ. |۹jIXKEAD^Q8p2LZAN,鿆Rr{e^Tdա0 r FV7 |3yeut4(CIspp z-Q:w?iykɠ!\;0+1ݽk S{?I-v F{:ud Ix *MO"y;}1:&f=px8.a\(hֻOYߖ].80l f&eT+JMJF0o\Mgs&(Sf$B4ϻEK.Zk3ZwM"5x=ȺVP_j:H$ʡ"a6]~o6 f02~NhG=z Pwd!f1FGeyg*Ý=J*ebVaZۭ:qm3ޢUGW[.VI~ 8sc) CjH0U20 mN,򵶟 D9 ˗m9Y>C fwpo&@f-b+[ONuۯ"rzMrthOkĝɎ\Vp򠵔TJL~XW5yWlyzjK=:bEVKk)OQlH gkB@rNa ڄ#ޙݮ6gXHmy")U)H!E~1x:+riH1%0O6dgk' DfJ[aMjeF~O+u}avw p$*I Fy\夐5%6y dyhtZOLēZJL&ҎOS! ~ZеJVLݖX~uiO<ۊ%L?j]s8+*l u9ĿWwyL xʟs m8^q@&t&.{+:VbWpCwkxJ XaY$LwqЖSom$t֦j ~Vn_ԯ@:Qu#V(GHd7-Gtq?Ls}3U{"9i eC\a^c(R%d@NmWVRT z%K@-J u2"g1W0B(64]8e{2 - SwCv_D2Fϛ.5FQݧ[ˡ7ϻuǂZg)k׭z6;vTq!lo28529%PH _:`S(.9]CRZX4Nr7k)]D? KI`SDF!3A$'c`v݉ZUya|0Ǹ O YjҜѨ&7j p`Y:3ЉrV>06W\QV`JU|C !ɷl 5TM]4[t0jlG_6]jNXko %Lc~JSj_5UV$@WQpڠ͊9?.+RZT6TE=MӕEpht*}| Ry4]#Ҩŭ=csYj=J 5Ў5؛ Ћ~BX('MA Bl3LT-:rl}CY/XEʂkՆ;yLo˥ h'%yB>l ȇ)wL''a46.r@"se$AC3OVvJ FQy0`a}A+{6X9&sghŸ8wZqWj_택n~oZWPHm? ivӽ#I _0;'C.ֲׇ !90'N@ sM؞oحjp"AG9%8΂7'ճk/V WG?KzzIX!tv_ ^VImGYFKHۃ긄u5rJOvY/>E; Gr!X9z#rq,Ă O٢zLģ"Tm*~m$h:-ԻD*Y|h`+S EBs' #6CIדcAwo%cL@G䷸R,?=a gn@"\;7(I (u U~*~'H=NyǬSCqx-m:=NNAєa꽅 `,ioԔj(Qixwsղ9s7-SS=:g mn]ة$% 1# (bԾ")D);lM5XِQ9J"gjjBX34]\}Ć _V\t]1M竕Nճ*Ir/wrHZJ%~So*SO6&fCiMf)\E6@KEk5+}ϣ]N:-(汸37APJ#%0d0r02N-=9'RkR3$E0SNwI@ c #axpI%SũXKOM^+?4g9Y~9W2$#FMC5V79z)rOq"%w*WӮ)jLiϦ G\3N+0DEߨ}z-T^p w&h 5ХK.z`$ O\{q5x(79wݖOp8ꕺ[+ !;CɁ.+W|xcǿz xqZ&w;ҼlAydË;zu26教nb̾;K%Ayvÿ'!<ڶzCV~,'PO ;@={ 8R>yah aꕍ[yKWj vk6đR1e.m, A>u}fWs ۄ'mӓ۷S._td5O4zOSm3gaQ^?<1Jᙎ$ʝF"mH(9y 1MzmD;]HhM|vGiH珠nyNd;^se#,Z3{d-=+۴G,pDD %آ\G])݊e7GѭaEI/]pʲqj[ynU5nJkX`g"T 8͗,b8(0-Ņů D'ĔX7k~*zv4.L߶/r!]Gb-5J3mTtPΛ'@;YO*\D+ojRx|K5#<]&~#p/yޏZ#AL )s2C3~*t wߓ3YrG&}KCo9ƒ6$ݲ÷+3k O@;R=%T~&ox| ഖ_їtbA5ًIxöjJ9DV05B BܖWXգSX0G^}$*63 G2f,۩@PDF5c@kyq0cK"/Tq>n⛨Ѩ9T4KDmX%EPG?"Pl ׫2+'[vy-\L$V ky]K5;+ >{B7 5T t q_y)ϣΜѓ:?n|Q8w|rx -GP]vƺ-5A>9V8wդA"3DbsgX㴢?ͧiBnC9ɜ\pޓ_U&O'/ϒo.P޿m5sG^~BQ CԇLMR'<TQ?3NʘYp: H~sr ;?clH]Է(jO0gٿ/A/^y@M>{]6/'aۊ7ʞ\&U=bG["okfb>CZꡔbn.G=v$VF 9 \0?󝱀 KQ' Wp@bA`ި~R Q85  ˒{<ņB>Gܾp>T%@u@UK`ъ6B$*(ўOZ.zm罹;vV`{]T[!yj4 V-*F`BQ̺SA0[am'˞$obR_ys*K ׌AǩQWw֊Bm{bL֤BL\&kH~@&iFbkvv˃GرxxQn2 rV`齓"!f,RG_8JE•9pZQLDX~x@3H0W5c`SL=$I2&̵AlqE<M>RGDI jkM}eO.+ ~pA|eP)1 ojD'ٸ|f" TbS@]܎PX`װOc[ߪD 8I.:+ߝAie]iop1Ʀ'gZ2=3 {F^ʘf/T;{׻NE+%&PQglˡzjz3dPp?2M<:K ViH\( FR{/ tz.r.P0 ?Q߾Q?bg-l*aAOŴ>8IA D-dT*˥-,pČduv G TKڦsT!(}nPHwt7j=5d*VZ iK}]M|ȥ6 O{-3mdSgS)ZR;2%k s[޲١I7.U q !3+rL3=?q.={Nͳ`BS8PgȟИ=5nBl4 z6;l&`W}jV_6=h3XˎQFyJiHE0c1F/kC32%A:'<7 <6˫ݿΊvlF >- R+C*k``ը!Uqd;t&^~c/K$.x@G_ASp$fSj=QvVnrԣD[A:K-YIh9l!GZ73kuՋ2"R Uh@;/?W2 S ?XȾEx3jh2I낫gqbTV,( ݃,#0E {T(ON-䘄D9BLMӜfL}S4Vגȴ4Mʍ?O5r~*‹a^]WmE5D^aA_ 7vX{y`4϶/cPbu,7sxӪBfBdqaFhawtc/9$|񅿽B"!RqmU4Vc@mb_px =8u-LhW(g.)y %e`C\!A*s`q_&b7ƉJh~82bVY7I`bs swJ}CS!1PCS?+-5(J`쉀e l1nj~[I 倜.1F&YaJ4kRxnm/|VL -3E2TTZ`hN $͂ "dL-Ajʙ?(9 ple Sz햒wj+~{F$S+tWTn*^Y*U e&|+ xw+N?0xտ3PElӔ݀YxPGKK=x ւCşeOZ9 [jC@h/*p9K *[y5;A_\c)/,VQCلc Q8:R C6 1 oW,-mk1PV}Fs.9WOk .VM!]}pYLpX@ V]!ksYH.+PofhU*!;EyLb'xΧ Bd_[t!jM;K-jUDTE} ,drT>*G1\pe.eKyc&>߂NP=wAQRQ]?[5.b}]Wy%H4qZ0+vۤۼn=6Jw3mWFPȌ=@e885?<=e+K Cnޣ (eZZtyw&.߅y?'dѠ4FRbrJqN2%Uf|t̔~V -L0 !|CkgųCΠ-:;{L]4W*VwJ˼|"E\ˡ'V`2l5Z" #rZu9,Zz: " Z̳@/v"K,v MYjW:5kS_Ɖ6RD}!#`+r8•,N!/R[`r# >GS՟?S NeOۯBp+&WInP"~|Q֩a6<{]LټA6q̼ 7nXa:vJg]|V <84MzQC :Bo"}xĽj;pc_'_Sɳzm gES2KcQɭH(k=i?iD+Φ[]-$҈uX˜>8V$8Fl`9M>BO>6xUAk <*jONGL *??~p@ +7ZLRMR^X!Y^f(Lh|Hyy) w='Y~ј%̼lC9_eiʁҔa]f`? aWekW9 ž1W a\Qh32;oDڝ&%L"U5=]OرDKr? p'U"Vm)&wh;+8yXYD JXoBa}ɾa!2AQYYro-) ja[(:q[赙LgNTJT + 7!W8Qˏnu`;K\ڼ{ޓ`KW8J)Z_tFV|~p5&"CPU //fOf =ef T9~ C:3]"?Xkpe9* *fh3ؽ,Nu)H-1.lImњ#}f w~,2+X J[3bk莬x$O*퀮ncEPt&m?@!Y| H<эbd-Ft1l[ iT6c|5sjX|O[%:@F ]ٻ[^R8 ,cVuiCDZ4وQ6uFٌAw;8HU;Goy}9 PGOL_.KGoz6HivvRRzOH]LYpmKpAeV?Pvjl]`5zcP1C»?aV=&p ewKaeҠ,WڤbPס3S\ 6MnmGAzctJ0ѩ^OD݁M Q4#\mH02#K[*$7߲XWD]{HbS?FM YِK)9٤Tָ/ם0&B'c )?3UI-be _-eJ![_ɪл>(>(IP$ȐY@ ^-ŴYe=Uoj'6"Y 'L1zXNM-JgNYc;Vgpx݉gɻuPwᲸ-pZtCgk/ˆbtY8)H  9%1r#aPPZ*-}aG?{ゥ1`xAPX43o(ʅVږzw};x*O8ի_DC˶:qI ,Md}65N#Q$J{RĘA%.%5u-18r6*oCLo E.)M =% \Hғ9f5i2)՚rҘ ݋cw_i[P"ă-=hĀ|PŌg2ec5T`@_Lx~Zmy&4k #/39| Q1bv&^&_bgMn 91嬺Qܪl(6_&T'uBh6l K([B8 5>Z $:3hVKI@ܙ#I1]?&GW~s|PkmI1_HFFUAo&[6CÒ'7.h&:8nC`jhau̎\-{/EuP#Vsv,u Vsd[]7ᗒ*U"cmĚ2=,ɞ1m驂Lo:P~aSY ZID0"?+&i%j1Oa5|'Xnh  a̚3N4F+6zq B,Y5)YԪ.@Y سD(tCkVݟ%(T;ޗ .2U/W ] -ZA5x{[.IDiY͙/$:KRk wN?-MyC)Zk^Z(->w:BʖĀ_ 4(`B?2x;zjy1lQ |c Л6~QB4})8xٜoe՚Qph @sBw gW!ЫͿ6 ZZ}Hybb2%t 8{L&|RdbIсNDWԭ qȲ1 (@#$}O|M+: tDdQn$|O\ QD`9G`+,Qy#@P5IJXGT @\=7ʺRU:,,r9o( ~h _[He>[[0ݠ8_޲YCYX J>3JjH 9Hӟ\jfv ڨ~&G߹=-$\aw%}O OMIPtÇ*=<H~o OXAWN8jCsbe[<^bcz'"Z+4]=`i|6HPQ86R 7,iS'ΉF%ʏB:QIR@TKh)A J*i: &G4^Fe.v쮳51z! fƺC_Œ8m:|,8G.f7s bɋ (x&&}߼9цt'ZY߉i:p) -C;dSv= qZń~D:~d !/:m&NBcQ!h:Ue<mۯiw?uYGX1[7L㏉9Lwe!3`H QkoA6( x@ E6.bYRى N_떻~ ({sӝ \UbXn/X=y7q{5ٛx@<-u< av`,0{+BD~p=zc˄UN`QTksL[]*bם fuk𩡬'jJNo˅T$WЙI"FѷC:ҏhq 4rޗ6b!8Q*t&HԌ^'ڢkJz{pވ `˫YMco1{ 0U[á_q;! m{n97ݞ~S1$γmU]9P3.}3Bޱ)1n_bYTe#,F26u~Qew =Ֆ0o]?6jj!R'Q (5G|58gؑnef: O?2Pء' bWWmu<з:ZB:␢AtFDjdL:#Qq^l2cǻ1UM-AVB[NBDK,A#jwSK/H4Šٮ=8x MK^'BLfPZ/c_oѮEX[yO7h3U}XጛRl?Ox O0"*^;Xc1x'=JM>ocfKSD]};Gȩ<6ǒR_r3|ja؄kZ\Npglk9G940oGŌ$@ݗO:îpY0<!%:rL{% Yr(/z#Zh M G[P;[jRUrאo"#qːuQbSLߜ2gTP(Ff UD^3u hKfJ[o9:Y y^6w9?hZ$Yv&)j%k/C.$בE+{kΨmʭ`oCս7E.(3uKBˆ:@f*"k3i0Ȧ{ !`*Wk#3T cOT(>?FFѥplhordʖlZZEۓӧQ0'H&zkyZfA;JnEKׅ酨-TذkM H{Q߾6^(F,DzVJmC}4`Ѫuw Iֳ%t3MMzܛc>B48킳N@Ps,l,%Bȫ PJ#M|\&AlCNqOݐvEjȜ$A@/ǫxhMɩE/E]B5]vo;{v?k|pC]:͊# Pxvݕh?(% xj噷=N>*HTt\iA"k!o>cpfOpVx\ o0Yɧ&ZǢ f@ pк)cl"!M3jn|(V'zܵLq/ 81 bHuYtޠW՞>a~ű;Iz3vH妑@n; ݮ"9б͎fTZ?@'[Rw@ e>^=RfX"@ՒzT!9 ExP{(}] ԷKɉm*J@HWʹazD"1$ԾrwjX^'1` bX[(TƻAʫm%و3x2?ǵU~7OSaI2ܶd6֏18o{޹h>o5ٱׯ'JŰS׽HUN{^~&LqAp{]áyZ|KDBo2b&6RYj{7Kq?+/ sI N1%ǰw])55H]ߍx݋w2V,fɻ<%wJ⽟1SXsK;[3@0ts?yB/aS!)͟D1ӜStmVM;sPbIrn!]sGrPtM&m dIy|@֬<UNN -c/4^")U6b6(j쪨ZѨ eʇ6ZMxHy^ Mf󲤀#~Lh,g ]sX0@[?Q'fwrT7odޔ/,ld<_ =J‹BVK9"7xo-e%BͱҀ߁yuRyiuc22l\:OoD <;x,r$E<0i!F}.8Pr$CNWgbթ.Y~(CZ7:0J_yYS{I"YZR_͸aCmE wtbPiXw!o5E%FczB6&N>=@OFxHu0+4j̫-(E i 8ik ٯ^gv#5V|0IQ& >RumP%mO=\jN`КWC.PTV4* 9:Oyw &ibbO)vZk\(H/skj`Ҙf@m+ײSړ'Ԁ2b%jvIsKM~JY8bb;-r86Clj\,ʲ9_KX`u5ֿdPqi&tAP|xsD{|䖡wޱL2p(QPmK% Y4ބi1Q6jUQ*?{$'pTc>7!bȵavIGVO/ CR!T$ֶ$p:~~b,jѭ <nUUƩsLq]J~l evAh/H@Xl9 ڣCn?=V]k 5ǂ{I.9la31v!7%Ih=d8yI\oOhka81T9bp7#-},+߱&2,םfNeH,`990O*CNHDԖڝ?]KbKf ל„QVW,z#& @Ц;QwtD%:lۮ1P B^Fn:aҬ >RQWkӭ*9a$';[Tl eZ'Ċp"ѠyׅV)(΢j$VsՎo)NkƫE))ܥ~̽~ʝF' b@|X}6 AfW+̆FRqte{w--н}ΔgTjҳ4b-!rpdgj`О4nΛ` ja_`Ώd |Է^xd{N9Br=47%d1]l=x2~pѕVϫM^,^sĚDW1cXI33oA9#$/NTf>lk̳l,A'ax,qðix~.ONhjť&Ԓ- zЙbQ>|YԎnjë"/]n>K6 LVt[i~xx҇1T}b\1 .;vo9ғp"KG0L aS 'Co ne>QCF7 ѵ$;4Oykш9> 3}Fqm2_CZ PRSUUdUDbsR|XY})?֜e!i}lޛ^ZJ%cHg*PLaR%PclrL߱=M1&4\4\ 2BX){c|ʫfx精t"*D~x\۪a}]_SAFRac&&6e/[4Ǝ7bLP1Lc;BX'Un9n*Ue:'$H2V\ԁp>Cx|Es0 z3ghwM>⮲+m  fL(=ZdiuҰ8&#kcJsXI$ٕ#A ;KQW O}쓣s':(C;suF\mTmžbْ6aڈMVDr*c$+kı6<sEqCa"ń٬8<ׁ}χi 3g{c 7eoEi`esޖ!FS6{ lƽ+C{uE2{z64G'{QltůRm (N{VyX"2ACoN[[::2w\^Suv}|b[]S؛|c q8ֵrE_l$Yiʺ5B=M[22#̶Ce`:Z|EG+o듆~$)'_.?04j<ϛAFJ\hK։G/ws QyXVڹ'#Wؑ7Kh MLoDo:=#Fp'y{@ss,i)5i[PꠏWϱL3"..yM孿z8!3F4IzH^g bZJnd+5  `dj<"5/i2T$g26 U֧;iM@vEEk7sc B)GKjkz/qe}_޼ z0I+Ԭ t<~p9/rq@ew"t4^hzV?@HF"/FR@ |$q/_X3uڭ=پ_(Xzm_Mw'0ܝ`sXQS ݡ|^{o,ҘvXwLR"Q ǤDZ;+kgKd} XF׾Teg5}ŠWvPxԨMxǵfrm ӧB%uti..yK=By]g '^sZgWkHHkOYm)=&^N-kAje}= }9L i*!Ьևq")t~R?K:9ưbvfP L kLȿ.ok:4- k]}&lvN*g]SϝJo5 aG,1d蛬F%kJ% cG"y @Vs.mN`˴w Y$ZCt]9:\0 9Ryz^ϓMGdZkP5=΀/ Y:ęO5Q/܍).H<4ߺup$>_IcVߺǤ%e4264)ѡDQ*QnHT{&YtmihҝVy+Jhia' ,m<-O3?Yw'qK%=9I9))B>za( Um]G,Xcٞ Ӂ*[`f 7w쏓iq?r%TWr|! hb{'l p3 Qz%D-J_;^*͵4#.zw DP@P|fRTl"quJXNDqKPK%ݸa o޲w!d+ķ(Ty x-4!ķLȪ[7I:V1?;BeOoGE{/Xe.IlvKּKDeg ķХ#BꝥE0`RydԆE)!܉Mwb= :uoM{?w'fՌi&Zs~r60yY^9J(ר 7Xܐҵ_X&sY2b~}uBr|=Y{4.wCgG\ rr~^J~ "Vx ?@Gn 6=Ȫ0_n]kLڃ+݃L9 CCֿ77Lv13~.UpA/f':7hg"7@*L1>Sǧ'(w0pU<;r]֧O$3ʌkGreNT8URzl nHy,kcZ3,6!CveF0FsgUK_.sD?'!:tYFF>lDtK(v&@\x Y"6$ 1Xk`#iLc8mۂ%,I/'tCL(K7kN޴vBg?=6{pX<>&n+U< e o'R'Y|밖8hMRq: q0izo0ϖ}!(plH?sk6^#J.{T#H ?0BK۶iyJ]pP sQ8:]qavh=M'7Et'Ebi vnHKdҎA![쫛 Mҽ|rYlӛk=*F󈧚 ,iW.On߷o";t/*Oc$'-=f/Ȇrj#S`|q B`/獱sF]W2Qq~# -eY]䲚_}$⃼.W%3ܳhkLp.Q% Lfw2c-sjɎ3?@߮ Q&*"wuuHƽm{vy5olKKbU}IV5ypN l{Q '?L_MͷwYNCpuBR`tx"~ɫHOw> k.[-qWNfKT!Y5'&HbIq-=wN] yYCu[.ZRSa(taw [CG ˘cV%ɢZQ&V=Iy@ 2>GCWX"+|~?EOBBZ*(Dþe6V:l"*t*eeopJ"ju+ƿ 'pX} ?'AX_UO/IxFsyZkQlNvx5tn"Gdߊ^W/0Bry|;*닚*`VE-ܽIY/"?!bKqP!sc_ĕbS$mAΥQ_y7Ip_cBY5jufM&}eoZ<8xo*6` z(9_AjsAd* 'y=43h"Laǣ!6A!p켽2kdv2EE|F^;Zp93|n[>Ψy鷬6"Ȓ{g FZ!8-e@˦ Y8I\r;߰ǵ(jy}C}R?\t QY]eEZ$B&T{>2pyz) }Y>qJ]pQqUqV:5GkaHl{wlM@i©wx6W ` M S2MVhHPNzUB=(>ڃ39dN@5k뾝 k<:=ԇx/hC~B3&BZr6+L=d5Vm&8!\׶Y=x txU*GA!< .lYO/s8΃OJx ,%rEq-9EꜶEkzc/2?kx코Dmٯ ^)<gbρDfcĎҡӼӁ1NFX!| `d|9 EiY)ke1 ചeT"kgɣ![m2r.'w{4\P<nmkƁ-7qn1ٷ%7+W`N_Vj{*Ux[AoŢ>U++-b}GI*H_ "XҨ -rlmdzhfU?aίQK1G6~R 0V%E_Zu|AMB5$|װNFXIj @Fq$~,0;щsgPwY{ȠSJ)"qWsOTh˚WTKQy:v݂k5~K|\06>k12X䶷w߳XJ ;,d}E\N_N<SބRK9-oc8 QnM[._"cGFIԨg?Sm9q<:" "do|`>R<meiC 2,!BW'~y,c̈́lhs`t*өN "է @Dҩlm!#)C4=x X~K<@B#ݶ`6P{o5dfTNOJpRc6URr;g0UC.L;LN3TiǨL<,"-4N˰>`?Ɓwl”s~г=0+p`?ө)\Vf+qj7(5k}1)lLY/,̜,/5A:DN*L?mBi=~ Elo jb*<-Ne˿=Y`U.CNz<¿%;0mdxccfPpW}#q@ OK.tq)IIdWf躣i4@vP 1,6Bm/dـ9t}Nٓ p$K\qioudz5iw:E 7HEMڻE&1}G퀟]r@S%|mMkQxIl}T,,Gt l!<_ηn ^^Kw[f,\E1jrC?RQU;j \ n 䤴KG[.^a[ 6ەe~َHvI![hK_BK W}9 CCOo39Ǫj2*0%S|Dh藴n8t:)ST۰r~({iFa:Oc[9 uXqҺ8P_D"}![ bBB;hЅpZ~[c4Y,4vz0B- .c੾!xԹ$r{[!sq/ΣOu}}Hn0t1hǚ|fH/0'jr)lb0ᤦc~d78]sNK5$׸BVg9@X:1j\o=Z.ˢ:&ψkv,2~?M8~̴XfgJQ].` U(;3W=yKr.د ?Lr{|Hsѷ>ٺw R(My&=Zw0fj RN+ J*%ޣcΆAԏI\S9׉wㇴ1gwWKc. zq: "B, JH $Pe8>ڍWv`CR+|Vˉj(1 `#6דdB? S"pnMr>ĭ\)ODص*nDR\H 6-u{FzLQI/ f&Y<\CC_(p({)6z( K?afK6ÁYFZ yaS1J4T, : ߬b-d6x%Q-)ddqpe#;߆ҖuQjy|6 =J NBe ]w/NYHG؎F _@69ֳA"aKzc/V"SuTBq(&CiA 4s(]}E:ve AuNphT}Rb^= Ej\u;,,;E%XD},Jy6,Xxc'CTޤ33Uz{y}s*s9zSg8|~x!5?b6֧xf/X9O\TXoR9x8d5֡8ևl˵{0VpT+6 ]I\qHOQn^KWx>AL|]3 (=١L37("E%pLZgcca.&L!I@KVpɏ|5yr-VަF6 Li4;S~{a Pimw d:OBsvrn"\=Ǝuk[ {j!a-Z}p`- aH͒d&_ɉTT=Ҥѯ濤d{y)ɉn/]hyLgHoJhjŚ_L.GGKcM(kkOI.ñE&bNR^ a?^Mu̩}Czf$V{!걤Uf`,C| .cWO{p@cƂ^ͤ:iڴnz tǫKiD;Maaиr@bbyKF"UxW=a?mIDƋܢyț1Ǽ} hȬ&34;AIKV1m0TdE ]tEhuΈJ!֣kPuNħRSXL%Ve1Nfgy:-"ub%B(8'V9Koa76Bꩺ@ T_î_{gu+Ģ#ļpYH9aƹ1u0%>fc #dt/lr88J/7q@!|SoU}ynKt[+fFeb_㩎U޺4@';{> (3or;Rδ~A[lpJ)_AYb Ϯ :D2:@ʒMwv/* _4۬20V껕G4wi &"?)|Hȱ 9va* Ha8g21s;Ԡ^2JŪR$OE[(OtsOtWO_ƪ޻{ʄm껚õDScE4wq9Xa$PvmC7ܓƈ'0Bk :F&9$jfCs}ZeCgх!?T /WE18:~RUq-I)=.LPgm;uJ43)DoIF!W9+&}\,[mT Ƣ~ yWsD;QyϰBJ^&D<5r0Hu8utN K J>H)&%S m/PRnׄfmW嘲C (wB0aͽݹ6g%¿"H7wrӠO5wY?Iv*U*;1w5ω@/4f fy@H g^jͪ0h,MY-VJRGg(94ҰK_ξ k^&' $ fKjz;鹱agZ['nҖU9X/ku!;[!SuBR:ybɺ=N3aيY@?bډ;dSfٔ10*ܮ@OCgmZi<>222~iñШ=o97gUӰ4H;po/TBh2N5@'e5:a8_F䣢++`Ȟc'b]]VMg`s1ޞ_>^Vs>QmLJ"$s UZH`"Dj64X M:[U_) #9)MWL =0ڸwCk`Jm=g]ܗ(\t":B=ple(?jUHrK{K"m+| >ٜռ`l T3*5+tKF~ $mζ!4Z<ǧmpz1EbdAtvvF,kHeN]9[]㮁x|pKײm[섟e@ZRve!X|][ dr7)`Ujc1-GǹiqJf~-#Z`o o.?J)h v8A9H[r uc DHkנ%6tql|l괙X_c&p/X!HԈ\7 p5sBƟoI1rq&A!ia6Ġ&lqN*f2-6i? n pyd*&AsEimwL dFa&жU<(Ը@GAgLRilHHӤ MAi4 ǿ8:hsYbMT'踯>ԭ,o$]hYEՙ5)FsJnzZJЌSG\bGQq,͟PYVj! sڔ{NAZ+-ey&?̷?j8օ2}()O /8U` [^I6$el,7 r5rHe"ꑀz>iM:Ӛ[| ܃&OMsbzz>tsetwd6a3;:p-9GK-u̘ A$=K{w"3 "-q|v(C}m|v}ʭw3R1 ` 9ÅL-N!9d'[RT7hDhCs_6Bʀ$ؘOU[r.ɒy<hpkx[_ʁs -hPH;D i}^Uׯ!32@)\/n6+6m7Ͱk.[+k]gűe0"s.x$&L q ȱ~[!VHH$g^KXn~ %ɯ# T,-JК7x7]5ZHӾck X,y1̳ g5&~v=T+̭_)jm.E84&$i⺗#qxRqʃa\/偙Fu"Mj$4]ZoDK׽ttK6_6G?L_F=% Cp>ɜq6#}ngykw釘0Xg+B^RE{ {Iq@Aڌ7t$D =le:[.OS.``Oox tQ\hSᴰ&]|CLZ\*UϿu %xSb^@;UkU\ٰ>6S(yROvH~({Ud+æؔ[Ge!c~ Ƿ5qAfvr}/Do3*X1[a=K3lI܆m$Elhtl&{ܴ.^(=Ԅx<feB2d4,7ZyLRu%i)o ? „a#Lh+c 5X]zdNOZbJwC7uA;N7Y+8vCz9[fnM;Ig3kX'̣;0ު&&+[|j]v ,WOH`EݓmpR<$϶՟Ll%zjV6!(clS+lֻ>{$c҇JhW0KQ죻lKȞH8lDe͸6 5ͪ-Juɗ ~-]2GbU뙾'S9x2.ZWMZU_+vxJMbCUEȓu ~ֶE'ؔh)'k78E @*T( 9垷hUmWe/Ah [K dt]4.`ҥ (zԗ,< [WCc,9@MDr|1i齠V91zJtʰ$D*{P|ix &f.֎,WJ.pV9쁄ZD=w|A]4(4,nQ$ĂپMX!8-JL2% ܠ ACA?*}H#n_Ij4>pFx?pDmXDZ؄;7k LyOAqo3J%:2*T-_1M!xnjvG `p0_0oooybgWCj4B:s#i V|gg76;MCS74i_$D{fjVvs*hE{LtBU8tCz]0$S7R8~?PI %.pS`41yKUt- 9b‘Y3d˾zFM̘Êq' /sȊaxWu/YIF/: fuEvlsxwf"Ι7POؤ8p08vʋďJdZ];>95,Ά2K?`Δ)ά0q4XI:jB @ʏ}>ŷkqd9U5;9E?-М;si1[ƀ9$Q H]3^؂i$c8S ۣ${ouߔKXz:s!qR\97Eeo@Y+-׃(F&(Ȇa‰P}$oE⼁yei z7#L{} a_f$'A`NIgKǔ"eA!WSr_EҔǵQ+\vrQIfR|}7QU>,['7 EheۙuHQTNF}ba0.60FWB1l|w}zжeK{CLj{Q|scЁH8-s ۟lgL~N*-Hq^V>q8=vTb߆*5Wֵ#IlC7R׊^B'aKdJ@l{ߘJ2K;^~Q!t7$p0oPȲYM hW@JiDXDT|?HׅӮ& y潧:eQ7N _{ Xe_(`F:{o|KSa76N_V)tM'g*I2FHŽOάbsMDa/٪.tYe8yz(wzڦL`1E!!1lTP:doE' e3I»{e?<a ETmX*c5S#:'?NXJ;b3ʊrF;uP9.Cų3x uc{wDYx^pCF^EptTWX0?OH{7“>Z5B+Ix1gY@DkVcVM2 h&&6@LQpQC', i;&qJ+t oh>0H:k;R