* @license GNU General Public License, version 2 (GPL-2.0) * * For full copyright and license information, please see * the docs/CREDITS.txt file. * */ namespace phpbb\db\driver; /** * Abstract MySQL Database Base Abstraction Layer */ abstract class mysql_base extends \phpbb\db\driver\driver { /** * {@inheritDoc} */ public function sql_concatenate($expr1, $expr2) { return 'CONCAT(' . $expr1 . ', ' . $expr2 . ')'; } /** * Build LIMIT query */ function _sql_query_limit($query, $total, $offset = 0, $cache_ttl = 0) { $this->query_result = false; // if $total is set to 0 we do not want to limit the number of rows if ($total == 0) { // MySQL 4.1+ no longer supports -1 in limit queries $total = '18446744073709551615'; } $query .= "\n LIMIT " . ((!empty($offset)) ? $offset . ', ' . $total : $total); return $this->sql_query($query, $cache_ttl); } /** * {@inheritDoc} */ function get_estimated_row_count($table_name) { $table_status = $this->get_table_status($table_name); if (isset($table_status['Engine'])) { if ($table_status['Engine'] === 'MyISAM') { return $table_status['Rows']; } else if ($table_status['Engine'] === 'InnoDB' && $table_status['Rows'] > 100000) { return '~' . $table_status['Rows']; } } return parent::get_row_count($table_name); } /** * {@inheritDoc} */ function get_row_count($table_name) { $table_status = $this->get_table_status($table_name); if (isset($table_status['Engine']) && $table_status['Engine'] === 'MyISAM') { return $table_status['Rows']; } return parent::get_row_count($table_name); } /** * Gets some information about the specified table. * * @param string $table_name Table name * * @return array * * @access protected */ function get_table_status($table_name) { $sql = "SHOW TABLE STATUS LIKE '" . $this->sql_escape($table_name) . "'"; $result = $this->sql_query($sql); $table_status = $this->sql_fetchrow($result); $this->sql_freeresult($result); return $table_status; } /** * Build LIKE expression * @access private */ function _sql_like_expression($expression) { return $expression; } /** * Build NOT LIKE expression * @access private */ function _sql_not_like_expression($expression) { return $expression; } /** * Build db-specific query data * @access private */ function _sql_custom_build($stage, $data) { switch ($stage) { case 'FROM': $data = '(' . $data . ')'; break; } return $data; } } 9#ĺ&ܯ,=?0-k \ڍ iq=k ^np, XzmP\PB82iu#qXXƐj?CΕH_.WG%NC;Ν6FNqDz֊s8:8?P+pZw狏'wu=KҍFP<쳓K&0zY [TܝGPhzMRko=˺v[ф0|mR = v x 76x̏CJ$"3= +=1ea.~; UŽ)ZnjYG 0smӉdJ-Ya=^0½u\V 4`U cP rROŹi1W\bΫǓjnkpȋm O}u:zSfvb6'E.ASк@,p:`K$+q+Htƀ̞Š[3 }ﲞW*wsi!]Ă#,PQKIpcAx@hԯz5 赩#ܡF`~ÎzA\ pTރp ik.rcZ= EdT?MvT͂ي˗5ET=B^4΅ۣnݐ5 cZyK _6 [(VSPs~J4=&-F+J݃gKNOpB^`s*WO5f 2"43~6P2*HPT F]ooܖc~)7"Jcj*FlA3AQF>Q@eHcq2~)x6 \g۰:"`2wp^Y9+%H(wrgR )!k1(|x蠤dPe:-[UڣJXЪm ČM?*E5HqIFX2gDQ})gMv8wOxӗtF n,_k-)tw.li?=HΨedUlE%Aֺxvۀ%t$D*Ծko>)4 >^dD .~ݼ4RH[J&~f*4h&a{ld[a.jMb$ #6e0'̫̺-_׈Гfq9'[Zv>78!3RBɝ@Rhm`w;tg 01c/ MFNVYb ODZLζS0Ш]WK]@ j Sfe>5~㏸ߖ R?:f:9 \ H~@% bdtFD= $༨FKm^qdY/6,Ho..N}G>7_]}&KлU xۥ\.Ii03g.JDi8>|qwC ?r\o@!qDw"KĬu~С=^9k;X3T |AAk;zskN!PM0l̕"F|ca$XM)@_Gq=B ]")fbTqj]s kW19Kq^ 1 aS`OUs*kc󌗽nKj<|qj'%! Dw31?mt4X@ Uc%LM? j?2D' SsfsG]m؊~ N cͨ)aLSDCva 4O&C,z6“!ΚW sY0DOoB|OW8a&ۼexPfwS.c i~XMQRn=on[Ts~r; ldrLaO|t{ Nx k1HXސ3NsF4( w `IN\)3s\D1s.-Wj<ʴ*ӟcN.aLܾYW‏ M*VݎeM8"Y'>ndҕ˅9#=𓘉M2f< 3,6X|k+fU )b^`B5ZEGiyXy{*HihΫjg?mHgBsź#m $U9Z]w7@d}PO) rU ]H}Ķ8ٿaK0RuFX5Ys)jZgY?WC@ 8T+&ir`pi,8GdzyN+ ?Xҋ_\6? WRБ%% ^s ܯNxZtavlk (22n{O~i5똚^%>V[)D)臟 JgC3y鐽0e{6SR@V2n+d_W 9`wt#=A#9d(?'wI6@XU!Ml;1Hr4k?ɒdR*xlG^/ 3q:>۟y&yN5IG$~+/a`O%GDS;H_y,Kw`uvo~CSUҿ-90qѻ"HzJ@"]I|T3FGl'7hAŐD %aiHی :4ݜ sC(qr#Z[Ww1ު웚Hlւ#N@Ek$kǵm˕4Vq`j-@x5>gMt=dhieK hbrhnكN}[r>~qR,t:&z{(؆fY=68tQ8< :XF>K]r+HgmpUi!AWW9=` ԙa89о) _ raG+;GYE"=tn eY/WgIh-`dhQF*&U |n1JZ=uF"!I! 8MJ$T%cšY|J-?T2Qml0 |^(AQ>WCUnׄsj]D]Qqھ䙌b'hkN}|Fow9,VeȮ p^AiW\]ctJP.\!l V3hM<]G&[iC!h2;[:!',aZ .>U4nUm6<CN2Eb.A{¿ުT\mKiɼ̎.!̛=2ܲPahXÝ צF"VM'0F6o~Swvzm7te~ ?$ӝ}CUKjv sٗX'b"e^GrEƲzgReU F#=< bo'=XK8)/fpTRz&SL Db*AM?>@K7TS;@~%YlPSSpK[Լ5Cpn `,Yﲉ1Qywe_p`!G?(ˆ}2_'ʤ(s  }btG?U8Xfmv# tDK\/8!/H! }e#]s/mj~sɰ"8y!*ZpJ`UhukD1Qj8FLa(\a Jr$s* dOn~H_x R OWake-je=*<*6dc4FfK]؞x'$W6Ju:ִ9%NнPj .12xi?Z-HI m\} )f~, "ںOJ2ÊOƮ5;H@o3LGD,y#Klp:{݂Og0˷>-0:=m߉ҵl>ۏן4h4bC(Qj_jȆPӋBϏj$;)bm+i#!, QszUjVs,fsLfwI H0! ϡL}ډ%'BM }].]K~A:ΐn}\,*9+ @4ݎ+&(Y7_H 6Daaۙtm\<,'N+7K#77mbE.z z2&$ _n3dhjiV]bCsB$ ;m@: ogJd 's4[|s'rm9zZ{qi&k3kE m3خLk#f/4.N:z涫_|{ L#/./8k%+(h[2~=2NҶΩ_^@*wH_ɜx",.A "£De(||*xwWјT Y9 ͫ,RP%q u{N=y1]7 F0(2A2CTa>|fU:4]{-@#>u{dSs&&W.-:KX*A; z9w9@o}$y4{hr:. *}_W=+|vr55GnmY#,nX]ٓI˜H7} h!q^:OY_,+"Gr׵\8+;D*#2Jmel +͑%P (#G7'gqBt}FuC)y6"Zw6U$q3x^˞P֒y?eqF6Z^Z抺3/o&m`PA)J i?sbϵZ|fJ~Ri~Jf!|7pn5{}, ;֦i*%׀JBgWb:sHOJcǥ,H(gIkzX͚!s|Gj%sD7Z\no{h!Xg$,h\kDTv#$$v zIV4ш(1+]BW ͺ.$K8)$W i@~jCC`JxsblE1ia/gC*qbBi*WkyY^^K'wfLfSEAkGe(qJaAɴ_w MJs"W1A0tۋ/J'y6E뗠V"7' U5֦W.gOY| >'SA KA^dYILs!p=:X,|/MMfle2y"2mxj1W&Q]:UӼAt#\=ai5%kёys'ԆcQm~fE$]K2 y) e1L"G𔄪j1_t`7Z_q)ۥpI)U Xq&aOFGyEĞIy+ $xVT& QFahWK#'M!%[:w$ĆΧ^[$Z]2AES/f0qoB/vaouK \& Q/ȿVzd[p(A"ˌSf}f~`L%ñl9=$MLxl%x4۬UйR@s ثkoΛ~*7XN&$ɪ+aH Cڣzn en1"}PO;x͢Pirs$T;?u<*G Et "KwsSpJQN哿Op9N[l*Fg'+ȝwSOV\9gu١:nV62`#uhK\(lf"}p [I^穯 ^=a~iSf-Gh%NrtdŽ圏a8i ˴ wms6]Lbn/q#؍HdTVZ r=k7 CB{mNmF\yl}ԅ,w 3_c=u9GxY!z v +o=_3K'=]jFk7m͝rYFr5tżaCB!Pk Z0&6(D$S_h>TZ\e"sa;(TFmI.̄&X_ӟ X_'6/$%iޗ-Kl@ _mCC0ync{e~܋4SQ WFAZ*,MP;.J vcT@Vw6UVgwbj[pg/hfeXcډL;G{$T P[wzo}TB۵H&"r֬ f]' yI@ڽf̔pU _wW2T,5NLp:,>혭aς%|bj ka,CU]zӟA4@ᓙɤZ\%R%B .먘Ļ7H m2¢t9v( _mِB'I4gBq-U=v pkY+C,Cv-ۤ C+qV' mbV`b!wɡPPU *]I#fqn1:T]^%L JwM{u~ߡNslɞY[AP~Z,sw9^21D=0)]al/ 1,m*bd}Pu k]WF7$Q b0dwMhapw_ >fwrε^FnTN8&S7ii%@ !;%4[|Y :yc4ES#$rq&sJaa'DGdKbI)`n PJWT;7!q)E$="~r}'Ѐ[7fmIًTśm5 49SAd6MC|vҕsʣߪyd_~p3 ]ո͕E9Tᒈ/q$nKcc\G)ϕ,v*Cq%2Nt2+Tf<\$?* 2yZ;tU]65F[{ԇNwFn+'ajK[~6p_pKگ .# Cfp3vWz)G$AҊɺ;ZSwS}F01i_M>Rb0HN}<291R;dEYlTEg?=䏛j=c E7 &x7 Xo +#ԈlPR~gzfCVIO~#$(;I5PVgQ> r:jvbt?5 sպHߺG}>m$. |Ed |E:>+<ݺj-:Z8YkUTbmWF7[RGB*$ ;IQ%gaMu=\AD'sڍE 8`͉g_:f18vN'Y͓"|(rh јM{J;I\4,ߗsml [?f@<ׅ$m!DFt\Ɵf+];LO)8 A(6G/%)HS릪NVpYu'wEyu(BᒬMχ NrZ4QZ9ׯuϙW:.·'3%9]t&QNDa#~O0I &KǰmyBDT|Hd]9 p]ENBǜGzasOب]KʎyĢ3() uеTʞNv[ \.ߤMgnA@E/q´zy([^{UQ.Ͷ_uA@ߕ:)A8X؏͕SBa,]6k(ŮwfYk&nMr p:ըd@,Zp~ȼI ) [o<4`B;$?:~&Da'X~sfhpW4#?Ԉ *E|@4ΉJS4]a9LxZ]hRy{/3I聏־B˿Q!hx gF*i ΐE[>+1۠Ґ3MSnFUJyu &d;<@zlf+ teٗYL"ywn^8 ̮ k?Je7R䤧?_E'jj"$u#ՄQŊӏzTr)7lE(ʻ%RgĤKȝ mM,Ne+9N t+\ 4Z]P(eļ8OB]\?wԲjx];9xm{SJ!Pb=S{NNHptI!`5?X+w$S τ{U"6pp+F]@n E,aa֋ŗ5&} 88_SEvOh_*FZ]ooshp>F-?>{Sn(l :з춚ͬwmodO BLeČ]eDkq}mwܫѼtbPZxeGo5i=z\ޡS};"J7 JDG- T1mXAk z ڍl9hMo27CfH+ NM|hR /Ŝ`/߁_C(h E,P#H)1P h9^"_\Sdh'}3ZVS? !ٗ?E}lt+pQ/9nF٥j*0*t鞚Kr`6($4sa T 𯲺/~BT ^Ij]/yhQൢb~ޡz 9#I_i $ލ_~j 'dNUVHnqJ G;/u~4ƑNw|qTY+fhx?h yQK٩wU-kVAxpM w_-LfCoX/N-X%m^]^:~ʕ/ f̑+,"o d ^>H=^t)z{(+9 UQK.>́\@È wZ|`^GaQM{w'Ll94|>bQB(~a KD~p. ܌|T9TTg"hœf $# bTx&Ĭ2.%ڶLF#Vn z^{_t"& Ol!)ڿp\*GB@ I%‡?sG*@U@17ZŽwoшEoB%G1 9c>wp!;?:v]C2:,"A!`6X\P ڔ^XӶ#]u4Mi'rTOF#ª#͒`( rd4"QKNA;"[**>Y6=7; 'V{ )ت .X'H6.ONwx H{^&Sm7@H +_$ls L;,a\*K"|{^{0]԰A9qݪ0rZiHgu*{}`'⏥N33,SFh8^<ՓaÁm>=qf'2JRp;V )G5C16mVhdx禯|+ |)i5j9@.]La>-wa\BjV)'b!'?Za{¶PgMSPqjIH%\'-(8>n5Um{ƴ{Qa0_njtީ-c$My$BP]޵iEv>A>r ?*w`-(YVT(nEAt( R34/n4+?TֶO=D`<}{OE1]N¸:`Jz_{/:WxJWTL8͢Su>k Ϲa´ƤO65CrR;EY:)E{-=NIAȌW 񢀐[5BI[;(#oT~L>\Q.Z{"N0iZT, q[t_ X|ղJgjr9c Z5@D*?x;l!wSBe?:>Ai]Ck c2M_u 2DWz$-.4NEGFn1u 3י8tfMd:_,D=(Oo]O印(iW$wkE}0wFz!;|buٿH=G(Oj}&Wh)RUKu6ѿ)6SYLܳㆲteiPTAdz;Q2^7o0 [/$V$>)2y|Z?CCˁw~9/T# -rѣZl̻8} 90/nzwfA.TmHK8 *~"\ol"Ө޿VL.\/3br\ 4FǺ^E Ȃ tX*xWWؤr _E9F_+(ƉnҏΑ8=K&'lZ:)K:0zC- _(L21/Y_JBYA ;/ z d $͠x[4 pD:WF{VDŽ?+5C ԟ:,MOhM(~#SQn3`|^BQվ%9+4Qn.W2E.7( $xkVwJAJwVږ7ŠO. Nr?Bxt(ݩS \uzҦwܻWЌ:F~_aKеԓZVmJ4\v%?u!a0ltMi$s^iiȯH X`͖ħF|Q+sgݎ`.$S[LmBY?TqY2R[I#UckAߤL7 ;!ë7,I>TsuVj0پTnOXԻc+UGt5cWrAl߷K#8䣯7<9˛Ou=z/y"HcO5̩kQjBBIuw|N:%$zCC_`v]v㻉08,ف/b0Kɮ-{pQ~Lvf^Wt7O+*:)@яjK @@;k%mىW& J^i͈l.`h˸; Lm2#/2cmy&15"mN6妪9$J{}˟,Cv>ím3}O(iiɜK0k 'T1ĒTST#q80Z@|`TVMiC016ѽVQӑ u jBV8`UgzG?, I\$G2ƫ8-FdFD[ ށuF]@.aJ, X5^ڥu)ԙśI;p%o#+)4:!|;%AٿZRG'j%rŔwd7@a 6s:AX7Ciu6k!#{@$"5R =vg@J4틵0% _ *<DDV6sw(. 0^&Ed mMLL!TG5XMZͶ@.<Q-e\,̤.n)6zGQ1. fcF+2,Yk4 G{+xh-(_Rn9drH03׃Aʀ'_{\\ ݬ4ywU=:<C[UY5uD2} D > ,BFRSćJNjB r.Hޯ}sv'P=P]9\}2I<:%hEͧB ̝E>]DaMC5)BW r_Mpl`)ϋ.XUBAqgU7 VB;]>/B@1GA܃K?{=s]P/6kf}ɔ5=W0 n$sVAc\4vօ? o5N_, SPU" ?³0BTBq% ~gpn'(fii>&\A*ئ;du~'ɶiD )Lٸ61gQT1}oM D'#o] LK\7ܶg;CN3[ZOGɝ,9%2b B&anRWKI+Xa m^_:'6(v7adPieU*!m2n qwa {k~uZ:aB.Sz<6} c ?.;2%ZҢd&؍Cat:d{=VZ'ӑ`†H>>h$C`'%64@2[-\ u&ϙ !5 bǻX+6t&dؘ/r,yG>i-D4alu6v' F\` >"~͚NL 0W%U`X S sjGH0+Q)wyKccPԴgRRpsܧNNǻq5E6vIU_`kKy>SqU2m=xi@3Y!Vl6}<|ПMq2#UFe?=6{UISnHjA 3Ae>NMQ( J%ADu%Un;ٺ]Fr%"G]1:PuT%3 MzaOjh&||̢O`m3F?i1ڧoX&g /Tz[KǽWOU۱6G0*Yݭ fȓqܪ\zqʇKf}a¨Rc#ĔD/4vr/&1zypi[U '&roLeEe>We6=N^#7pX|Dm68LE ``HB$\lqYr0_-z"w+tIIK=o Jx)ku< Ti$:349>dRW e U3 1Vا&iG} oN3i- KiEnVEw6-GrWhT%?u;LdL D0ڊj,jӛBl; YiN*2$e$p#B*"q?:,&QFv:*[_ʐf\YrTG%Hg]{ngSFHv(Af,PyJXe2,2^+P'`\Q!9oxFZ_>=X͹ckGNlDK6cgEڋJM O\gh{D"&_:̵Liiq^]n?[J7_MF@C#׆-;O(|r)lKYaWRKGKν s .}UI Fٽ~Dj5 pn=3^>ZO'cGM]W:/o\jTJPrG8,YĬ,~4G7+ŝ|_Y ˈ!־1vVY"! Rx+Y`Kԛҥ* hմYJW*6Gf;J::g<2s:y%+\F#q\7G51rŐssfȋy(C^ƥj8|෼mζe>~_EYd4W#ψ#&Y#FQ(1Ej7AeT <1(zWh` O*McF Ն$Sn2CNrrܡ̡:T_Qi0 ͂hÆhd 8`&%m"ԺduY8x2jXC@L&A D<$W(c}])pz ,m|RARׂ-V9*nV-|).dt$~=g&-oXsWl[6Nc(EK#A19'?9ꭀGIAE /CP; UM3X`B!ٷŔ7p y9BsQojhg)ǰCSl*+KuU2h(}?H>߳dUi GMf4=K1J S@  &Q?u刑P] ܁qd5MhwF'½tyf$iN9# %,{)K*6!jtP GcxhǷ/Ù* Qo({$>aЂ]W-!P`?EX ?<)X]%W=ù5Qv4cG($D__ WG %O׼cT\?QH%of)ޛslX!pB2n }3u-_?>uJ; z%oOyѱl7T"yn~6EmQ3!x)+rU\LIyYVȦ9jщ> Rrqݲ>"ob8oy@{Q]v>ܛ'rn72`nA|wVU2%b,&4#0 ˊ˄J@LVo@Y@s~^aM?F@fE@!9j&G@sBePnU*o?Ŝ"~Is:;0o9+&ە'h<4 wN=4i8*>h[G.K)=hۃ\KS[l>G|m+I:WVꥺ#Zsi BĥCQ)nIG2 ?hM ]Cysko?jYB<'dXUyߟ`~F+^3!&7-4 lɋP2k@ :)/ 3 D f`3v"CO9ۨŒē+:6t?4&\m_Ps1(C>B.lkϳƟ.?:B29MQ׏8C#z+3t3L1S;dMoexF׍.Qz8J^ >џ]DdjwCR64(-3K=Mn2# ؞9ʑTBr;(|hB~?FUn`{׮oΕ8emt4qی-BZO>L7n4%A`/KJf2%${dj#TQyͬwYp1 gQ%{I5C3;ygKU~NU8tB#qK'Ig .I`L=&'t@%4W H( uԟU 1\ Kk^llA, 4FJVvAhÞ:A~+ZѮ z{%^I # v(^` G!+m0~SsOFS?kjZ!ws`brs:Xңwlx^GAG*77.+1t wKHcZ轌(L4iI=$a#%NhڮWM#P,$' ˫H*zunF |>LpȖ|G H?l=}Ů~CՂStHTs@U[ N4E@*}%t{f9`f岸&sRwX,`=Tɚl%-Rh:akXtD `tt˄VV*SEC|MFO&S5]c%mp}kl=ŽJZ%$Ko]SYkvO\=M~|H,ٖ#<#zDm^\( )5d3n&V 5x5O^Y16l20U*Ӂ?Ur o(,`hzt?[5A(;\]fpAhXL"UkOQgKY+̶40j`SxP<`(4ٹ}ĶH~%_z8I}I\E-Fj)y hƥ-sjaN@@Yށ>\$)&ڵpϖy6zW2wNy7GG IS~'\6}f#\1,%*zw0[A4$ѤG섥Bύ4&B>sywj礍Ժ{`}OƄ(A$%9hS'գSH2'4h%jBq;چJ펏Ok.hfҏd @ww} T Ҭ`lOXPK4TeNE \ޖ%sQE ݿݺ A(I|A LbQo%גSIw*vf ¸l&j53IpDma?t1Sƾ@GlB 3%x P%))=׌nkcJ׋{|E6%y2KY] 6BBxx hl=Vߺg㾵0 wU8&g]e[KBgRE@RBM N⁨sϘ .UM IOlqȨ:WWs8%xt>,w'# +px b2xNf }5)j!Z) آ*]x> w?I{$`#9Vѳ9Ġd:.!D ߲2eRifAb/E2hc-Bz;p2!}ޣTUĺ[fO'jܱ?]chПg]>s™1jmxhaM)sx -kodž|nJd^g0JmTǑ_cÏEȱQu(l>~G1WJXm7G؁b/1h?@!Ŷ(U2ECSzkOuX9bqNn`͸B 5?tbN,:6L(fLP9vKHOGa+X&{IRpwf\Q؃z!iB>v6eKMWNA}‚B M8 e~ ^ҵaYmӘԉ<Υ露 ,΃ ru6l  W`[dnCT 0? ^mUu'xiNJ\AWԼ0=QTWD$AL(hw (|aY{6AĢ2ÐoQ^W%Dž%[W 69\h"$uEg#ucVnM?]f*yBA<1H78S/ϧM Vt+*N`U5|ORӵ(,lu "2R@R{I,l󐕈-32Btϸ_JЖi^2TgbQoN Bt5/}M-o@Ia g`qi / !:yˆc{wPp0F1'TWI `Vz)Jq*X;",{w~8s"~ټNo3G |as'$xN_q|2CL^  w&Lɤ[_ZμӮ ,v>*jX7"yCkjtc48k2tB>fBPp)Fh4)66PI>Z"ug'{7l%QpD@>;F'i lE]vT^ܩ^`YE?qB~^jbiej_ݞ4Ujh:vKuITKQ63'EhxyZd4>fHg^L-\KiHuS4y0j˞0^Ư\=z@oi\=nVrZL9 r5 ed/Xtlh˴Pޒ&멄㿱zSˬPQy|O(գ+S+dZ{`re9šSE=theKyL+cR(!HX_.+m;Z0WMsܦf[F?WMXk[*wۼP >h-vݘqQ٪m+(DϢ !g¸s\]u&QڗqUc7dR&?O, RH ee{+kѠ"ǚU6[&T'C׈ViT$9)ڎ vmuģ |),E\=ѭ/X/wd7>@r0GuJ0EKܙXCu~`%k ~пu}n' ar4o ƕѢ9g ZnٲRxn)b;,͚):'i4OK $#azsP߹$Ep|`i9A;OH*,gLe-l~<Q|_ 7v0V0WtV眝nrn#òQiQIYtv32j"Af8Я$*Wl秲ѧO{Yb,CR_%g&͎[Emۻ 0P?RAe<* ^{@Pybsc!Tc ȃ2 h{NJUyʧ5Y+ ]Z6Zqt"NXbi%nu~F;o鎒C}sme qrgBIPѦbymstD :wĜ#ݟ-PeLf3)kZ `7'Vݥ5(ZΧ|ᚆLv六xOѯ@J}E˟6}'GEPn $K1bJ5n3?vuj5P9 d ҁ5hJ.rZ_D8Nl .1q2o,(8/!]tW87j(GK4VKa?M[)dc}9!׉yIDLSpwیjiepƵ顠n`MjarlҎi>nI}"j<שNmUiBZ|KG"g| -bKhR @y~DGst=ԚOG[d\a gXߴtTz(e*[lb\[!ŭX IAFuBĹQNքM.V?Kbe{tpߘ7"J)Nm;7J\@96^iVեXԛ_$dEpv ~+y)h>u_ģV^9B[M|`&lDJJەYHQv]8)\Gp VFUBxEQuxj9o5DzߔűՄ *<z!L =_s/6ݔa<8ZOD,T\x-7̾(Zk`uil$)x}P&{J%G畱;|3W61Go!0_ }9pxOϭY<3ٹV&Aa'z6Dlބrz[G.*׆TATZj!S4N+!c<܃\&j7IeR$e pd0CpȂYX۲%%~酨 Њ qNc+J J)"b9LUKhzvRK̵:=x#rz*.9Ip2 xD,0Ih7H,OD3F\ I|k7؍8uȼ "8z5r?_c9eϥVh8^SY } C)y|hWvZ5L]#*>om{*tn: HILf#1%^#80=~5 čooVIXmN {X)n]Xb)hqN[^Z#iqCAi㼕 rm+DibOV.3I^kZZi y Uz=>"Q;tO `LkfIU|ϙr\a?;D[)աq͗ԠXRy]@~yYIG"`"Ɖ8u]5|&4<tihC#N&b?AEsH7lٌҮ|XrUx{r8QKyeqC:K^J6` #rS&!&8ʏopMA îS=V}m }XWi1]ߢ~LüzpHk[SőncfgzT Fsb\;(V}zS0>?CnDGYz!O-1pXX_ߛٸңpe|5 Xʿ.ٶ2("@<"ĵTů]R]YC{,xIKPSI"EqdǍ{TʳT} beg͇I&:F!-aRHEw~c_%qu3'`[5D Tu{ @ AĆXeN_{Z)l_ >fVJ ߉'31$9)gc kHh"心+'j26)ym~ӂF{Iaq%xqċ=  C9vkq><_Vnl(3'0Ĕgz ;L{n f]e8{:Lvta( o"NjIK)x׏s.o@.m`Κ9.8-qBS5-k_h#oڻ*d [۶Ո.0mm،cgN3hiůg(mh^7p52T>XR*x',9NR۬`hNUp9)s U{/x~Z|XTc܌1>2r?yp%~-\-tuLNZ&դDݳailRwncғH.~䉪ylX[Zm1㾱x`1V\ݫBA1QBK6 |x#i{Kԑ#u;h3z"/z!K+WC/! ӠiV1boB.ցpkF\6 ˎZeo02:';U:m%ݻ84^ K0i\o<'qtNAiSW0kZbq`=X c[wn_J%cPz5JӪV s7lSTa%[͒wN)G ~oLr㹫3G޸"U899&C6bv8J 6ͲaQUV6{53 v.rmks/LZIL ۤ[ޥS'Afco }${v/)P1N/ xoa/N)kJLfWW|b7u@x6\W.̦AJeeɓ0a@UrX ll (tQtpzN:.LdghézK̋*cǝ4eL*)Tt^Ip¢zbFED2M@;M^pb"~S E3V:(S~])Pq R5Jr wB{+:i~-DuP@ C@X?[g mz&N͉[<'##[kL>I,g|ct WF0$EEuRi!fAf>n9rWD˼ *<[֋gm9g YĀ(i77e!FDF*)YF)~%<?g1Yb% H9T't'p۴͆^'exQv,{9❨^{iWLцb8HG"$Bq6ZoLV,ZF%VKQySL$ e$n63?֬҅ȏϲKh^vqi%3Ita:XN@-*{)}63=🍻Z6sWFkd/8ze1%dc.@Р~yE+3JRAsmF6bA5-j]te44x  fe&3:i!7Wwi?/ZzK|!-seveӶlvSww-"Jjh6L0ėց|,K@g? ;_8(>7g ~{7O,?#QLfUrz}$/ 0 FE i$&Ͷx$ r[r|ܲfᑺ3-i> sWo,^{ɟ:f껼ov7jM}ګQPqIЊ,*,納2{/Fd>̗P'Q3K/QeɴϤcz(dDcm˚ 9 % #pUAKG=yNjg 0"?UUYT"Dw~rmKn6xkz'qJ`l஖AΧw'"p4kѪsVrt%?u ^r_Nn̪Wlew}0:p oAqۗ ./PV3 ]X)B k[],C뱢Ǧ10.FIt+Jb~I96Tv%Ӎ%gn׀/We$aBz-@f߼y+~/_aPԙ8}Z.M52Bd0Mq ǫ]BQJ?);ϢoΦo uM F6hພEsUD&O֓$?; ^R_bak7).XmPl"CIj 8'P׉^X3 /٨|]ѱ{w$KhPQ;m "ܱsA* 5S㑾~rb҂1Hmˑ fyYz'Z(iOL>S0M2왠2Yh3 fK/^@C2ņKA<]5-I$Ȭ%/$d }G=n|y$'Z$ =S]Rۯ᱗/X92`Oc)繬 <~F {[tE- ͺƹB7{ x/o+ xbq_ 5$N&CVع 4U|#\q=ۨ۽,̗WWuvL^A"?o5'l,!@""%j)Nɷ'boJ"oA7k=z7|+V1[BA.܈pvޒ?OP.H@WN^oK-'nFM$%`}"Hs:Ւv;[ˆI]U1=} 1-sUjQSGf18$98@t/iaN7 6}ȲF%cE4ݴcp`_o`Cx!} 0sZLӅ ^\y%m'Iy= ~qTENjFԹ1p4 #I ;.ޑKDRHLfW؝ J1Z3=D|+Hk& Ҡn vVEKPM  %JoX6XKOj52{ҙ\ZH)(`i1%nj4K "bOcg(v td\# e\=\y*z5H^sĜ;L ez*6kE3R {3S#/f) ] pp^7qmCLo6A~=(ZTB|"x} }nKaEW#?shG^ юhhNpCsC!N͠>Lb017Ʊ(,!B(^,mN֓E8ZHg{pLi2:6N+] .H* 0KTNA/?πWh]|&HRI8=T.WEWfAb3 <>ʼ,Ok МGPW#-H+~|kVd& TOҽj\5%F cBFpOvwE;iE/x_/,ꢽY= ̤"%kq<0Ѿ\д9G)PGm;hV{N7_Ygt4[vcŖ;MW9fW舽¯ٝ7h\>8 USH][u [)1.PL}&`4åΘI*KKxc!# =ٗR9fP΅3JiFyaŜ$-vgr %󇀘Ԭ+?MҿbN>Dm oUv)" PQlޟF+<eDθ>YGj]n4^z/'􉍤 Z4rY0fOͳ~]v9 rl㍽ ̰ʙk Q N.0,'Փ (ž1Ĩmˮ*(LJ8=}!Ǐ)&qОfԷL-G3~l/ %F$sI0rG<-A Yv_mWXBީA(~f6PoGIℛ[`DvNMi𐻚5PڧyaG.e p+ց 1u#gdH{;~$xžc[Ai|B'TKl]eUG89uL߅gW9Ojbx͠T^1~-Y ] TKsҁSe|ڝ%2/oMJj RS" =*[<ˢnmi;/Y5O WX9EXHP $*&5]ߟ*Kϝn7(sWԘPgЖR[T?4lP0x K0Y 5H[C"Z ШR|;?$+Zc{,ZDv|O,*gWo:dB9Y:(=qpyIO8=૛eRE}b+N3Q 2DwxPh~gwҌ8ݣيWo^nC<~nT$Q.ڜщ`'qÏnFȟ2^,eљ3c^} `0DvK v^:I?7#faE\ߌފ3(] \\8Ñ+l^ˋ)!4.v\'iVcվS]&s̔un0nmm :X.D:m@Ǫ,m,aZl;k)Mr-IkHx}U#^,XMo7trgՏ~SSRed6ֳmÄUT }R93DeCthun~C| `[sJ KJm}6M g^,KHFy[jP򛢺"x _4p=]C"йy@D/%"'mY1F&.e 1kS6cxu0F.CPz [&}a$obٝ K o#k dSqkO>MjOT.hr"U(/!ΐ}8덠1Vk74+K [hQ.sh$ aD!FޡnaQ+ZߔK}xQc@0nB.)^wf>&-1l縆=Z)PM/Z[X1Y)Vd*2d#h؜ XXs1ܿvXppW os:`uŊ}RjTwt"|@ #K{}ˁO=c]nC]k5wʈaz<5`nJ=BpL%2MXf8|vzES/K=-WKٙuxJ5ے(YB#F\1 ]2[ qEk<7)RwX^RH[r@=kILBw6]衹?66<&zXb_r@kB(:#_9k`мwsY8ktsϸfo|pQ "no&|h$): ̹ɫMJt]-HWtvR)r#J\쩏 ?/W7QBåFdɼ|!c& pӘyMC6CG 0 q 2 {:H*L+d=cQTs2'<6WsC]X&YQ%r#Lpo?O_^d4k`ZF뭹&2_0O>,x" Wr3<* ,vϪGc7AO] akNvӈ? MVGMw^wÀӈ&w,^ %ւ;$01ip'Sy=E 42m0ḨHMbͲգ?SSE/M<='bNlJ؏b.L5CMOкD=]Ӱ( {0hW{+ !a {}%?UYF/V쀴ȟUzq]Ttz%iF1iȻq7CQ٭aUJ?lZĄ>zC=9LZ97J{::A өB+g~wP;s㚽w)0nKbE4nK__ob_^8N%} 8> qNk71.<KN,Ӏ.Wuuۂ&dnq1}/ygͬc[dPI|Z%In=fujjـ*{St-ɲx`󩨧E&xz:,4d:z*hUP't1Hڹ LFRspLwLf z<|X+n+yxmj<q: <^Q\jb{!9U F/{.Z޽ 7Fz(p%pcf7=\yvsگr.ìGt>aJy#5w\uU0N) C{E3\7Ҩ5uYem̠s?SEq@5Dvqn61kreZ0a uzޑ{1vVaEO: A>DZ(oIy~'sl I"Z.F/#Q=DҾsHka,2M.} "dx h;Qj?fQn{Gh| @-PSg4D7TPŲT&N|5 czv|7u%T Ƥ=.Xe=w9!_Dpo $[HU*VgXboc9`.>#d# ne2,eX̜!'scaQV6J.A& ,NEwTi,"sm%QUXVE-oQzv=_MDq$!˳8=G EtJ2J:ͧ'sC#T``5OȏyCŵqnIg87+D}-&5BGyP l'Ipy7 T)};~@:I 2;m?{df+cmȮum';ڙΕ#=63v?WE^in/\+nY9?|p/ )e(=SS`A'%wbI\`z:Q'|7{,|IfvS>0؃ݔnr{D*p̝FkH [mn߇tKhv^vTkЄM+Hfe;Y*M}=g|]E lmNTeO)aIư_(ܩ\dar={OIeetO,êN<&Z[)8%M\;=c&41|=^Y?R?t,fB e8p=7b=ϯrP|J/&C">\YKoPV+ɗ2x߽ JAB$f~S &u)JY#ZL&#H4>VWuyūLU)S$,-U! nJ1~ a1ts4VݨEu7ڶV., DZ XKP\0*~F{Y8]"k:fagwmy/ed/ί}#`mgtn;Uړ"qKt?%-G6O%:)*\lM XMfPpt3"@9hWyOEeC !GlcYAi@I=}ȡTηPR3^{&;Py>?x ڗUՃVMc o`kήZPK$u'LADtV>6h ? #&2".]c1C"*6Id7p}ISh"$j)~2{bqQnFSI(LWTDN,=ha$ӆHZ}AU_X{w'uɇ$<+W…_H/zllm6htg5`Fy7ipmϨ% }XIMhqa̟ 2(137Ǚ]atB5i ~%ʆo^tё~+0{ag+'j{~52چK_t d4lݪvK(̹Q~ ʐHNy#2Rܔ&I/>ʪFgV33 +xb7c7Yp15S y' 6ѯ^|1f" M] IVdZ7O,)<ɷ`F('ࡘw ,?D=ȋeU2o||9'4[X;e[ɊW }i8[3HloUk+tŴ1ĕOqm/+rwqM+OfP I%;fGS81ꓖ6dpҹQtrZ 7S0"P)ݔ=i!jxH3=-I3V+T!N\ўAJ 'bx?k\.!b}jϐQ*F*w\f?ЄU/2aseaQ7 zkDza<9gӵ XgYɢӺƳPѧ԰CM'o/˗4Ώ߹'ܰR!6Yj *y3DຈM{(EXa8>_ |i4o&l.6U}>3 tPĕm/ 8֟8 X(n\CT4qZ`aL%9 NEB)5IhS qZ^Bñ*?X0.x6cQb×( 8?I?Ø)DŽ8zks}YϜO>+#)5YqbjKLb 0_qڕjR_{/WhT`pIi*H(5 ~_5 hGmNߜjz iKFm'f^`F5#ĊrđV 4t0s.ڝ¯]]9i6b~΢3``grZS0w3 *(SϲŽE"L̯&FRW+ߕC%N8S %(?߲I4boݧF ] f̹Zχ8"'8mޠ3g$_X˒8r)ozn'D_0 {6!q=` +F{D=W8ՎB7#(&^Xwz`+QhzKq8`G0?_Mø$s0(ZиQs SD0y6RvT̯[vC>rF3$ Yz0sCePC0C2(2{ļX:*RZyaoVK܄@U# Rq8q&7!PY.4_r4*^XiqJ<z،07txY8e:x[5KeLaW8CYZ+G]lįSΒO$!1Qlcr[NEEPeSOIB ?boΘb,Z$JN=̓,d嵉fq [c6NeL>p(Qz92>/B0T9qVI-g7W7S{Dơ_}~s~'pK +l-qƅ962ev1b52G1ueEϽC3%0eqxmHjxqmڃWmUkf1U?YTE?F?A?b U4V) po{n:IAܽⵕTTw4-+ŏv2e~  !AT<"t.R+{VH-=\}Ku+݀S`>Eti~ ]PoU o:tDA "1DBLb+:cMάHvpX*7i o` $YoK415_qIh.J(\xK~z)S<+Wt@ulzE"_Wv+5f!(6s؅h7_g(qvʏu0^,ŵYl~wz5;႟>OKm 6^Xz?)R c|Ķ$b /yN'l;wNDEUB>D}HW.,7?morW010ǽi!3}z=H7G-<,H9Z'eҠcF#q8QQ@% H"v[o 0<ۨr&E^#jʥ lzKrpٻW-0v)S+8z904*e"5G$9w%ꌭx b\xv=}׉NRrɚޣ̦% R_HYs?q ?ȏ 32qfi-XׯLrq|'{y; La]K< @es*UVE2TX}qNl!2۹waQ!+,Fzp `4Mp{UA)@c/(7\F-W8? J8NL+g:OlA* w28Vub/dw/c.N6; ߾Y RBP$-bͩx3Hi9?YU0PXjB[Eb}z4VMA9wb5fby( ]&Tb_@dQ{%(l>OZMX̾Fj|i"((y:-AfcZeo"FYyl.5,?k's'wܝQszCJ Pfm!|]X6L+KL&dS˼od ԄVKD+;}MfǕr" ucpH!r?"FpQ3r}O(H`{SLKFÑY7[w`$]c qG$ 3׈6#߃,oPVBK)BɃiJuvݞ3>L.!>ES+@@ڇ ȟi5[NI;RjЬ.7nvw|};&co> )w$ʾL/SuW?j6]v+aӼMI+Mís50@nGWS8>O/> :oijc!6)R 9Hfw8qߦJ'izi7 L\tVWDB5_ ,TtpЧ%Wl*?K@35 խf[Ai-N{đz>8ZhТ&wXև)$BoR%h_/ȥp^d#U@JoDWkh0y.D¹Z(˚1,=ꢽAʥm%w9/O=7 TvN<<Փ:hw*HWAς#çv+=EB`ucvXʂjjanq#$ ٬h} d#ѧ$ϴbѹQ[TsA[,{m:Vn|8@vl ,G%W&>M/S@S n x:]l/9w?ӥ_緿07! Swr"Oy,2M* ܮ]J~/ _M.!a”CK50 gR}4& jCG6"qi}`¢eijDZ1ȴ@6XZAbB]!}|iDf9YP69*22=,)|ŇM^%[(Q'vcόګZZ-:n_*[[pziN~c,=: bfE.NңmmDz ϩp)#Rݩ|N˔~!TT:'pTt|XDa+wSܥm֙Ч>+H9V"ic?p4#_(oGZKkl4ѫ ETJt 'q/Y~8ym(T5L6zAS/7ﻹš6Dā&HO+HTD.4kiubiNxTēU\ ]:v}n5nr#b/n-`*]@nhrQNt pe4-57;=&J.;:>w8@BiG9Сk f3l10l`bwT"d KGsrr[a&lc@]UY:j]%CG\2Ű<M|T??l&I"q逵={D0ƛC4!@)-t Tww-z,(ϝ Ƃ+uU[ZMau9m3ulKVhWf?]T,M 1^MY' Y&<gyuV)R (6X*x{ƙRʡ%V8{P2uC& 8ۯMbS=2Z5&Ѵ+C)p:W§d_h1ź3bULJi4~wz"5,o+;MUJ!Ձ[$4 SsI|l%o<"yCr'ūb4tyN^BSԃN𑨖"}?ׯԘÔfM(H#M ,&7v tj˒-=,JHgo{.mL0ENDd)6j*>~+i F U_KJ9c>[EyJ߱UBԥ)蒕/\\^;+/HDcjh%oX2K^'+pRbP_kێ{oS|'S_z,"'¸EbMO)2 >/RU "}L9PLUF0D),g!̓PP}@/qZx+Ǭ9kvR<ɫy)q*L0bȳA+3HIwNz>q%7qN@kZϙ&3/{,B.֞YSbkBݻIgEm2+8 Z9?&he(KX7T#kf6쏼/4?ʇ+3, FEⲴ(DqbJL3m~MRA6Fµ&[:ϫCE:x֭HJ6!-PE!4%Ǿ>yzPbX@05g8Be.~ie1ZUskAR;B}#`ynS0QL\qk"~=3}ItߥTVlqkhex d$AэQfDC{vsNd8NBM|ט7~'f-#jߋ>Ny%VtV ]XGK`"{-a~1rޓ(vxWa|VEBrm&M$8O[ŀ]|eA&@oq}=QZ… inF `gr}uѿ}ݲdiCD|gfi* *GVv,aY΢Mqٞ[Oh<o3k+h  Dmc {ODzL zG[${ oTGXgj?JѝsipP7w!>ԌaOuCfSyuA`): @5`2QMTIdւwcmrΥGO0,`V6Sa[O?^WHJO)sx## 1!m!yyD[f/<{JLT]پ=!eܞe !r8EJMn("N3m\mʌ,R7{Eqc>`[