* @license GNU General Public License, version 2 (GPL-2.0) * * For full copyright and license information, please see * the docs/CREDITS.txt file. * */ require_once dirname(__FILE__) . '/nestedset_forum_base.php'; class phpbb_tests_tree_nestedset_forum_regenerate_test extends phpbb_tests_tree_nestedset_forum_base { protected $fixed_set = array( array('forum_id' => 1, 'parent_id' => 0, 'left_id' => 1, 'right_id' => 6, 'forum_parents' => ''), array('forum_id' => 2, 'parent_id' => 1, 'left_id' => 2, 'right_id' => 3, 'forum_parents' => ''), array('forum_id' => 3, 'parent_id' => 1, 'left_id' => 4, 'right_id' => 5, 'forum_parents' => ''), array('forum_id' => 4, 'parent_id' => 0, 'left_id' => 7, 'right_id' => 12, 'forum_parents' => ''), array('forum_id' => 5, 'parent_id' => 4, 'left_id' => 8, 'right_id' => 11, 'forum_parents' => ''), array('forum_id' => 6, 'parent_id' => 5, 'left_id' => 9, 'right_id' => 10, 'forum_parents' => ''), array('forum_id' => 7, 'parent_id' => 0, 'left_id' => 13, 'right_id' => 22, 'forum_parents' => ''), array('forum_id' => 8, 'parent_id' => 7, 'left_id' => 14, 'right_id' => 15, 'forum_parents' => ''), array('forum_id' => 9, 'parent_id' => 7, 'left_id' => 16, 'right_id' => 19, 'forum_parents' => ''), array('forum_id' => 10, 'parent_id' => 9, 'left_id' => 17, 'right_id' => 18, 'forum_parents' => ''), array('forum_id' => 11, 'parent_id' => 7, 'left_id' => 20, 'right_id' => 21, 'forum_parents' => ''), ); public function regenerate_left_right_ids_data() { return array( array('UPDATE phpbb_forums SET left_id = 0, right_id = 0', false), array('UPDATE phpbb_forums SET left_id = 28, right_id = 28 WHERE left_id > 12', false), array('UPDATE phpbb_forums SET left_id = left_id * 2, right_id = right_id * 2', false), array('UPDATE phpbb_forums SET left_id = left_id * 2, right_id = right_id * 2 WHERE left_id > 12', false), array('UPDATE phpbb_forums SET left_id = left_id - 4, right_id = right_id * 4 WHERE left_id > 4', false), array('UPDATE phpbb_forums SET left_id = 0, right_id = 0 WHERE left_id > 12', true), ); } /** * @dataProvider regenerate_left_right_ids_data */ public function test_regenerate_left_right_ids($breaking_query, $reset_ids) { $result = $this->db->sql_query($breaking_query); $this->assertEquals(23, $this->set->regenerate_left_right_ids(1, 0, $reset_ids)); $result = $this->db->sql_query('SELECT forum_id, parent_id, left_id, right_id, forum_parents FROM phpbb_forums ORDER BY left_id, forum_id ASC'); $this->assertEquals($this->fixed_set, $this->db->sql_fetchrowset($result)); } } Kҍ-Cn(Q#! ls AP]A);AwuM㚡{6_n\5\"8VP_0EÛlSJK[pb?{lEo ZܕQJ<lep 6#4ʑ}N6*K!UG,ڳK~ϺR,N +^;C@'$^cjuV0JWti7=x\~;:ۑ6{!e"V1k, ƎqZb"?$I1S&wn(qaQ+"vPE%0f@+1O8qK oػrl0sn']h*AМ$tdONy)OwrjᝎiBh58n9ٓ^SR _| \Њ5"t!gjE\yoDg@!:j&'-[8Sên$Ǽwr<ǽO'CE\gI#R"y G68UglbרI$kQl5Df {##HSϒT7E%,0o˰%_F`3|~2-9jk&66\jJ2,aj/ U"f N  lrk.z*Z,Rf rr鄤&`pFHpB5~RyiNz~MW1)BXE>C0V7AR=T|EKϬn#h*!!D7@8*W͐bY[3{" EX ɬ.k^ƴ#V'1 e]dx`z QuӣwǽZ{ }$+,e7m/qBBەjߚtoA|{jҫ Ep5肔[.`_/Y-{f2TA;Y~Ԝ=eTBDF ~%gvǀ N LRQq,zdhEMtRUyE{Ui;Hn;֭g*' F̄ c$GĔsB7\%609M~BB\4d Ug 6ݑ@\T)s.Uj*.U';Ы./X];Υvdz,TNՔ̪`0ʃ"Ӫo;F2Hyk/xjt|XS c)v6p) 85OAV*$LJ_AS*/oF+WJ\=͆Ac j":ȆMSbg5kn@Ji܃+ޕN ̎ĺ;}sUJ>4{l C);\IcXJqΎsqBFw@n&W 4Q ,܋ʉVdlW"-w5ZC1)+z z \q{毐ͧP05k e)]獖CJND$Dz;eeV(4IR#FڲC?3%\4 )j?x`A嵮!ۮ)d@ OE(rYA1z5sg̠`қ],ɑy'K22sK trPȘ΋ 7DqiXqWi,x@ o~8X350S"rrjr3 $ b3(ժ7gXתgk@f n饧9 FGzjN \ D}`.wۣI ts>)j%?۷Pn"ZI\S]B>';#~O7]Q gi^wasP7hWfvq0IvKj*.`JrL1] t]Cy O+4;pcT5WBJ}&G7|;j&3q4/S1xռ}9apf r6@B$vq!?#w"MOߎުq|s$ U= [vɐm*duBj[ C(oשּׁj^q>f4h ["h{,;j7]oj-[Kl}QZʾ;W7Rʐl>p*.t kBAZ)-cMk Y薦>/.u:N3]v@hhv1q]U_xP#Ո :qrFint^eLB}W>$_X{L+jХ' fH15@Skr*uK!Toy^ڟ<cV7$*xuET$zmu9m(çvTLOS@ e|i)&u\n< NN0Meyϥ˩7nCQ2c ]/xJ _t Mg =~>؈tu$=: 䙭_6k]?BoN,JT`~G[EӧI] vZM =߃O?~ 1@>a?F4@ml٧[L/\( h@+v ml-U8WM/Whf^SQ%  '>c@buNO4M+s!wU[kz6 )d/!(]>C.&.3h.,\v@p[H ͸kh4G|&ֆsf*Uc9Z!Ӭʘ# YP?ib] ݲF;:h[#ԯjC 9 yefI'ϫlD+q^=k=DpGS\fSrן mM0%̩@ʎd+yXuD{$lrB=xo8ZcWnMh֐]ذ e 0׬la|\z f~V^cAwgzT~'a"`|Qz80ҮA:h,g>)'Czv &Ɏ[o=]C=j}P9L}gBT(%E;MF8iBWႈ_ pBt'lY*ZQw%_%Dn$B#\- ї@ 'oƭ~l Wh+ߋc HyeV&k#iet{=՟BmU([^~TrDz^~Ӆĺ7 1K rHkl{\(hf$Fl*rRN0cm ]~W P|I9"JJ"h .OZnY5wKE4o%QGrk=|eCI h8H }14F֘h9{TB1:'68ا&("{}!~;-R[C0,D!ڊmL':_W>Pզz ӢGuP%RV݀~=%]UO[t!6/@1l'C:Gut܁N fRg%~(eϫX?5>\R!ezW ZnP7h+E%(i$O&;1isPT%Xx#-yQ2$cp-ڞcX>}W]Y1{@G4\y %+/S#GJ>, ˅}& QuSEfz&¨\9'/7>0tFGUKS3sr9DrsDjv=1 СɭSG4t$Tou2hi*@\yԈ4 ;b#xGrS1'Qmn_ c/Yd b #g;IkeZnR'0 &s>,뼆4Jͦ%Kp+AAd-\NfZ%쮣#@'I ߳Ig#GLQ#4 mn=u XޱkZWT%niPc?'t5iaYzcLH+a f h[٤-+[ 5N.* 1آQӍx9 )Y$vx5mȃM.IofZ$/sLw/dkU)p)c] _/`&$ܙ!#+P}#N2g"{ s j4>uN?2xX:>aXRd#{n%#g#41%l^_ِ O3:?rBV: A/XlϷnTq/z&MߦX X]w1@z6eiD;UI-6DCސ-pڡ쯟n Յct=4뿉@pVh:).% ϒ_,Mq}<~}nood7V$_7Г8}F&#վZ=ӽ-]>S Ho'CPo^KWVu3l}CxRv? 3E/J ʬfzO(:+3&M#sHKGhU{s8>|QĖ7Dj @_7rCZ$~;Ja5% 9n 8΄̛^ _l{ Y {봾)YO t%!#%RsB/mP1?7'[4q1qycOΐZ. ʈQp E0H!XW'>D!㣪sQ23:Ti:Ͷpو HWlCR쮔 d&ߤ*Tg%IADW%\Yq쿛k䩝Ȑg5b{pHZ;0 A[i̱Kx܋+ @(2<5فS/Ƕ\JqG' d^]ݔ%fhrP-!L^UQ6K'^1V M8J/7 z)=у n1ji8 ̿Vm>""(7dMN,9ǭf+"ͨgCȘ8[Lcw1+K3pm'  )ǖ~d2΄3H8wJV+q2 `(r*OU`53Xa&DX5@iL[uݧk,i3 .QJ\IpBʈh8#wKHR%'G Q 'ݷAd(D4(T$]t3s n ;N}rѐMv*@k)_v, !EZOڂrI )=|0XnVr‘EB 518/ Vr_J|42^x(W-Lx9+>94 j 27o݉ w)ߠ+QESh(-r@)gZY'-c!6ޟ+T5D?O^?&g3^~ȒLS 1+^[ $EefKNN,L *p?WB[!NĺW 7 5$ GT<*vJiZUK$=U"Hq4 pʱbFOC]EF/kΓXMh=nǾҸrV5h:jjBQG*[4UK՘KiO)/EIt&yy ͱu{cJbS2s)iTp aVp c]H'eCcx1 g-!Pa+sA CeS /W)܅eӟ2Lf2MۋLmsx]rۄ92n縔1F w) "C-µP Ս]42J˂Ru~r2b D9m:Ft81-tIR{)6lޅgW.ʁ]iSk'ҋ;?ui,amg 0m1) t/hAob<&`ſh?8>qdS9F5r4o\ B S9@Uh΋qםhMx\_A$ܲ~zq9 ؍zb*Ch[5n D{Chr;_5=JJzMYP~ %zFNB[4Na>hǴهeNZ8%SN9?5\VBOflsYB3`&%]FrZE`/;\U/a*ӲDN"K*S~ٴͦ"79D3Y:ߍ@F8I'%6.ox4r$Z=;Ƥw6[%G)d|qL YBcw0UZ:!w}qghd%p}&+J/Pr|N~w,89+3}xtK:fߌ$ʜ`QZv0 ՇLm*1U(i#% J'xe8ߩX |9DY%A[$½1%rԍnпy ԮmK: J%ځhr4fL-(XjGaRO͊4aBxyHjð.!Е%OQo = f-F(H]ŞX>4 4Z%'gaL]+n`/^)dvM"ą,סhQjF '8PM?9jcD `->Ue 8ՠNK[j{%9ڪ$>,e VSGx9ELI8gJeof%]6L(r6nx*xb'>p7Pv)s./lIr*3=d=AcXu'C~yɵWfTs9G`EO~0He[/ݹ* :/,I/"eQ>_q(VVwd(I'L~;;[Š1W,fЇcHBͰ#ٝ mv:RXR0`~L̫W%nAn6Qr}a誯"7YeޜՈ&!Xvii|WP$+7 l.'#%ʤ~,#6i"m:0lݏ%XWb! loUD!T+JH3?}nNmGT=c`KUϫbmz\dɆ-v{KonӂMEIS${mc Lj#~olIጃX DcE#E*8c^L::i4gn/먑y)1Hg, #M/Q{xv _I>s?Zm+,n# c^m$5Md4F1.Ja $:9E0,TV0࢞qh˧<&jbO"'CG7j|1)O$ud%N; :ׯ[XWaZw e]ed{&YcHW*Pe&D§?vGf0}[ ލ&G,nThNn:KF굼.LC9QE#P Iy`v8YbVWkXN# )3a'a#st|˥jRNXW@ydj/ .7^9ܖ* DTaB>C*`'FTc]lz40s,cJE`7Q KҘPǴdGj0$?m 5ۤ 4?'^R0IJw=^zT=c "bElzWGڎmGkwOPVxsmCޜ,It01p}w +E@TRىVVO@& : Lh(NBVy -J{rMzрo(sj[Sd*SϚn˟0cՇ#@_Bː@:.]ߛ^ƜcX{;"9[ &̓<; ?)侾gz ndcqJ*2E7j PY(zX | 5*kE-yPp&YLap䏸e\yZ7ݤ̛=]u$' R班)'Z x@'П70U U,;%ɣٻ.qC/"8j5#0|jx%rB[&$w gc"9+{B< aŊ4˙2lǤ-KՂe 8:X:T'LsId`u61ux͞YƬd%D0] ~.AGUa#$yA`" F5ȩOTpn#|_a3nEDln-1)ٵ/sa}CPs.Ef(7h]t *c/e<u %4$|w%pUsw7rHD=/uB 3wO])Ju@0]I$D]699b盀4׺p5 m-u|8 ؠ\|HQT][;0[/f4?p cvz2Pq_mz.o00hu"n̯+h(K8~@AgCOmbvU'$N@܂a 3w_$p?r8Km?UICƭ9 tV Po 3n. kܔLN2]7hYm% ?2z|zsq'kFD)wkGvނSO)k,u- b;Ŋdq֧|{+ӶtfL^Lycv$qa;bgrf՟jN4 zN{3XW䉠óZ(wF"y/CE0 SH RVܵ<ψEy'i)ax?43xe8"Fӕ I\J\'P5l2-6^Iͩh5}m15זwO!nBI`uF ч#+QGŤD"9X$u8@VyK3V$%+̈́&Y kܝ+cz@3R: V:_e*np}_Qq'Ii``= ):ݔ8[=j<}4ISs2̕~%xWCX~}_mAPr(**ӟW'Ԗz(y֙Mt̯P?=If} ;sKjTYROm I BW`bKG~a%36L'QZ٘%9c0 Bw&Vŝ*Cc5I,KNkʛRI!09!ۗvl7Cz$ 'ޗj2P=Thc|}HV{"%`C% J䚳M/NUix= 'fPL}I1g3jA3/jEYw.IOe+Kk[Nr"ZTNS'lZ_JOnPװlf(, } A|RC$1DX8 )qH'UzkMޥ^Drk46942H=0,s)-*3MfTyuB>Q0ᝲ\E {һH *M z~ %x G353`8ogE'^n<*_98XLe6}MK|tw7,>[NżEӪ[_}N}bS~ᆸSN\- enwП cuD );<~%UY5G bi]& ki!uq묍.IJFhmb_'&0H? jm 04kj |Vriq5Yav&zpchGK1Y'z,>/Y?"*2 +HRLA@,zuPɐGqɵ-Q3]ÕFCa{&Up-)\WHc^SbRrqC7ݷȤ&%.,Iu> a; kh3g\$6ן_(O2$,5mhjAeb*KU *3i៬{( MKb5Xr; !j)-Mu^π<vcA^0E?D++OE5ON!# c~Sdq'L4Ss ƭKɹvLon/(ٓ0fkX7 ,Na$l4>۝ŭ|󰛡?' /@l@oE ZAnw (-b4Uխuj%l&{0:-h?]M0*oKj.YK3(A,0nf~;nA eGגT[a6KδJ]^S[MZ~dfu|Z{!)#)0,l&_̔ J <2llW s~Œ𰂑LFp*{ʊ54V=$ B`2=Go俙{JץjS"6jJoY@o6ц e*aXD4Sњ妣; #"E-7KvĶF pk"N-5mlQ(*b4IԦ~jr*9!:O;RQ ld6 )_>pl[T].hZ;g6{ߏLQ꺎4>vvDOv!n11)% 7ߢ^-A Z4UwR$*OyŐZ{y(`܇bP͘TlAZ.nyx0St|CXA /laRC=&|:f !gYdj3A'gl^;<_,<@=RboY*҅jF8bAu5#iJ]ԢaJ_Q3ܖ9=o FTU/2M,H\(fen&uCKݎ|e2T 3U,+g8uOLiGެ;ػuI)TNP9f^A _aMy@uL>h|\OP-VQMŮ8[f8 b)ЭA?K&:0[7Fq$Mg 2fff !+炧_-rTXe 3ٰNLsfr"S-UTcmG6\m<"뮓y@*MTYԟ Q Ү-#BJ4K`*__㏘e'NQW`{ʺ,4\CQ]elni+cdyƶr`Jڂ-&^}__}OuIm)3Wp:SWe%見A6'OQ'GQλM0!aҜW۴tYV@8,uHքbL6a(Hr͵k:ft[%f[_#¸ΙHragНP'y|ck@'0kJhi׹S`8qZd Km.5'QzVT-/=(*FꎻN_z ! @MӖ~ 1\n|ZR}۷ s Fx8a dWh%Oc iHS4DTKOϚ%#СXL&_B*0?UyR\Hݻ)5%lL'N)M<0TtKC@|E>or=? >5䭂1@|)X(ڣXDVճw(^ݵ*MaËQ_:`*d# Iͤv$ P+i({*D0["s`H/ *CERjG'hXP&s8gho"Lz@!orN3?r")gAU?J-Ti㼡0#-$xyY4 ]err0@V[i=ZJHkOL칛T "{T "گ^JfcHV$HG@rfQ2Swy;oc[=a_6h;V]7@z^p dY{,D_^q zP4k!]hd8u9K[zy"xvFUSQY˘W)eL wYoG)Q^̀'Z1 bS:f âg?SEԳN IP@1*5OK1jIrܚ7,5h{OQC`43Q Kn[N$tA3C)p[.ח܈Pݍ~h|/%B29Uoݖ{48֨ [A|vrH7慧os|̈ &n#jけC2{T\ny ]z+A7"{IaDkϗt RteD%I\UQGpAc,#|fޏ E:UeK.A;XR,h/S)խ?>Mt./fJ"{wv_`Qi0*`0G( >{6RXd?CU)IBoM*TGOEiEqTGDDNd vvOz}+?T“ ^=rLham>T7$#L_G"SnZ/ $M?@*@HM:Q9ʢ4.Dk)©Xq}COS1/o6 eeWƲmc9cZ19`?WQ* k`O]M5;̅0#n2mt˼O%ˤ/6yHVzm!/O(+|]L 0rC~PVּgmvF5isʔVWN&V3nPC4mseH j/jZ̏,3 V J@Q%+֞ C0BȻP;q]qYe\12@1?7ঙ)2xw> -BU3L}';Ce0-#̪p˨ll*3DywݘU^ bOy0 ?vͷQ DSeuVƴeT[ʭ%(fq„҄0dւ:c0MV{c&^*ߤV|@63?rǗc :5ֈM7 )K+"?{*/0SK:~hxx]B{W x=-@oeoV jZw^ܵFu !#Bv9.!*1Zwac~K$x!%ݓ(+ҬQW!' "V͹nqw\A1XJe EmQ[B* {;XDIh ۵O 6)S4O.#&{Ryx{O›j{EѱEDtHes q=Rq^uQ`Y$^+.WK tin BNM~*AmSDzt+}ZVwv;I=|{;3 o+ ֚tqWK/:&_@޻\Ald;x2Q0bS7ᆤ@R;%Z^'!QG>(Hkw#[8D.hݧԐ*jji ɐo{iNbID~% :7X2iLE#Yt5:I(1Xl}iz4{ދY\(>\ Ь4 $\ZmCHV6z/5WW!K`,J2NI7:+NWt'acrO6"ˇ "0.FùꋎxvMo CO,2#KN' j=J7ª]Eq{QuБu G[m'Lks: \5'H~L!=0;[4SЬu n~Cÿ#OgRy ]"v1%HQt%=C;~ΰL./+uv+u6C~cu,R)F\ Q.OXBMNWD-6tL#'8x!cDxqsإ|*N$>֪ w_Bӈ14,76Δ{{5(ic[y$7~A8 ?~NS?\E #45-wk̝so# Hi#cX%|><3ۈ $#Je:KAeںAit[3wZ*?WUyW>t_8GlV09ddYۀ9&_Q[6`mGە+~sB\Wq-W:ok3]06siȸ=rI1?*2%eWq=9ԇǸ)fȊ]Gdt/Q­g^&eTȿ 2yoó^N؊hYP4.czpt`ɉ"حA;߯Kkzn6<X' Q[P~/ֲi|9A&g\WP; v|wސᩳemm!jhH4~L[ɪ|X:u;Z} 6jKDM0@G]]mZiHݫ\Y~ٔoalFLHנB֞AxP*H$?52qu$$DC!oc`H;r&݁źҩBw5V$ED%L0dJn`̚H2\@M3Fi}Cr-_XikJ:W&_m:(LJ OOO/h[r~ q@:O3`o&'@7|qPԧCvB /eBZtP=!Ż%dwMIm7*X!mPl쒋׫TC0xR.7O%1x"su!BwTS5'Yt ^[+\oJ%!u5Y0WU TJz`N4{.~y𖾡a*شŨiXfN}2Iv\ Es \ors:'㫵d/|gr0w:oínz-GO1 o#z՟ϖO#'}>cPʳE*E[3υ$H—צJ쟞vaO.=WggadJ}n lVX nHnbvs˚)5BY1VWY% xn:$G{Ztgq}+NJU)M([6'U-uܝʸR2 ;,RFsn"ql]L_&f.xvfITW`Y!&-&W޸sMF#QשAB[X(nf %9s[,tmXM] qA>tiEc~}~yԬ[^>]{/C9Űb+G^!EdKf'\Z{}I2i/F* yt&oK?{ߺz3 x7Q LwK/Q&' yD&Tа&fBU7hDDET3cF{4C#$Ӵ%$G"~oàSӯ sY6u@R d<:# qOñB;VejG]Y>[n@Cƀ ،Eqkt]%x`~&4-npk"r('瞽yࠞ|&Qf{zSfg @st.윩4??ULҭsN/T֝YoBq> uYnl;3."DFr\|)c Br]@.@c|Vo;mͨQ"z;l}羆:<:@ =o ⲼߣY,w ȗn(TH_hqf+[6ᡎT%BDOl:v }@ɦ(deΦ}c7bS! )85K]#{^̌"VQ98,bkvy00+ ދ?2CGŃM6#c=aE;i' rSp '*BW#-5]]ǜe:|;[AŎ +W=Sfh0sH-dsR/_wͽ݂<ֽm3=ih>H@snJfcͨl1cˎ2LFa(\O8] Y$]Y04QK :t o] 5 S7)H55Ϲ3 FOf9! jC-t?oد޿#Wht^t@gLsD#U=Wt8ؙ_sk45 ``WU'xۅuyO_ic Lt=錱u wS9ZqY:$jˁl>]`cxf(WS4etdap'?{]]FԬ a3(ߣ :|\+# 3oPy=׊Px"*&1-DB3y8qqU`c&q-ce`1oR_)>.ư+'g%tKR!a]N^yKi"O-4#wD!>Ksig8WQDU*ʈ)'l|dJއՆ/B^ݓKs,ԩ-4 (p.U"^e-< ZN#I4E ha3ˊ!?X{㬅ylA.:(lB>uEaxUG>z' f[ظC{a@&X"P T,z Oz7!3M\1x(B Bs7z-o+5-B?ʧSsCX-LٿYb;`N=R5Mb8DY[nጉUuEo/XȰDb pLOQin=z6{:C1h5q3C´SOؕGX+Û%$[ssfF7]-+si-do ͜|d b>h\7NJOK}Rs8%I\7pdKAMs UW91AH|)kЎ3Z&dVNE0_Gn]gJ)P ;}p/H:4oUԷd^E`Vat?۾]sϞġ'rOulc6>H[k?_wM=l ꘖjyv%5B\[έ*R{wۅ͛xI֮`oo~-)`^F ?KG|JŒ&+#]oo"*wMqUs+MЀ:k/i!/HY͗pGȷ1Ts T7Qp;D(ޤ8pQk@X^ %wQ! Z.;Ɲ2[xD>O#pD0vonك[1 8va$C'K_tgl1$Q?0<˪R7ȃnU4 'VWh>"sq:Uq[qEh[w*al4ߌ Y|zY^Ixz]Ƃ\:1fm'T#N̼C:1@Řf t w-䮶o [}4/("jȧ\'i5)c2(}vnHyaEzdr Ecit{BdgLDO=%Xq4/NBlhtN\!1pV)AwEXSPϜꋧF]V{Ft9={~ٚY90D췲šymF7h\!קl# ,L1^-Uʊt¹4U+/pd>JA& `%wF4?hDvMhwV§Df=;TJe"JCݺYC}0|IS-W#.˘Cޚ6vrޢȒu朅^WN4M1S\cgHn<5XsW30*u{:\tKK$U^k]mfFYJpҤMGO}M&gM/AUar!pCBN],B\o!=!PxxV_E4S\Y1aoß߹]±(GM't(6*$SYh}joieao.@1n57,&'yݬînP%~AlT}ϕY"f.|$[}V x'l&lHlvE '&tɾDcv/t }:8 <"gȶ4ߒ:6^ !6#>LC>xnC"cw)|pkFȰ'# aǐ&,38u327Rϓ ζ$lffˢYVK*2?jQ=դZ^3 puH&Gʥ5WkW(C*x]M1CPM[B-JZ-!ޞEלaz'k6)|-:dG#D&T8eêҢ&ҬYEbGoS8-G[Xi9j|~Ңf,O{F;{D}^د|Ԣ S _u.Ds~,&3i ({?g՝ވNKq T:|ᣥ)`mfۈtyv0PjR>$4YF9 DF}Fï>ݞA-2U5VyAL_9(,ue t/#t/5 x(=!;^K +Scwq7*92m\83nE]9@w)w ›5g4EEC2:tG>}Հ%"'G>DI[8~7_w+hamcI‘ӿ)dӽi;G# ۇ: Uh|g ZxO>1 mg/} 3_Cl> ^_@NF96tMPx ϗD}c=BIx~N%{jxCd`Bby䁋cIkSg^]&JpGxg=UH[G[ #XDۍ HB#b!,kJg-#5 ?d$vO63̤ձj%,U{~;y̮Nu#^H-: .#8 j|i s5iVE9g[2$r6⤵cIL2kyvjΞa6m Ziؔ3X&\TCΆp E|#Z(0[&j-l0 2g$JђJNu$mnsա5J ˼(Z ֍ q=;Iߓ 6͍27-hybb}$&j`aB"2}3ߠ. CI"GIj&1M3{@vsX͋'D>cuxD>c[trȧ)+evYm}ؿexf[i,D p%c]c7JI'(SØ4#W/Iuns6XQ.zT[bBrF0E_r_'׻~ҡ z`@S5gs]$8ZՕȅal&o@I ReA f׆X .!zN'g\nNk+`ŁFNѠr=U5-(졡⬅ hBЊ+]bIWĶלopI-s1uy6C{]!}bĶV=]mw4.Edּ-zF#`[;+-&6'ϻ&}v?":ir{p]ǖ!qaY682;nSUU|5#ce?Ob 3 DNI"ـSA" Ar$mˤPBkK^%&sooAh#;vKv_4 9ʹC+uqγjch;lm@~Oxž/\r /*eLVCf YGQhLJDG]샍ϋ:jx+8WDލ}m3R7NiXYΙ9|?}%4۔^4G,/L7;[5 W|.RaF{n 62ΙX@҂`t|xEX6Л=#]z1Bbkèw;'.FQ|Z3QUn4;/ &6F0`  *LEܝA>6]2;P4ǖ'}@>KsPy8Ϡ+(Ifa >b>(Buoz_d.BЪw2,)2j&T_bLSLS_m5jX`-9fϐ}{Ngq8Bڌ;d *5/Y"Rw}(ѐsخY& fdFf?tu<]4Fz!"/,9ULNͲԎ{t֗lYtXBo)lZ+R+k) ؔEPr*1iNokjH>:hmxsh|X/.7 ~}biqnv>ORuF=xJ2u715izA4Cz6ь0z6%d5.7 :k7]IA™. 8}v]˶r%Qj6mW#^*C cU.i-Z5qXE\ Bye"YV#gSrS/״qQy_ZF]O&"Y,N<\Y-e_aGeőS iϓ8s6 nXsM[PCvF?408T7 eJ'QZTM`n7N~Nwr֋@.bi^_vmӟ A[$4it5FnO@v!vlفfM`Y*W%C^/g()+y=$"T2 ٯ'[v|j-VF[xV Oy8!6d~{aNzis~bhPz7Xr,6(%/ƺ.n9}itQT :}AƱU;\b!FEHbv]!)QS^ԁF V`9Dq5ĽG,=pXLPdžS>0eA m]@;# ^Ƒ׆7r-'衑-z6Bu4,[X^fMP{J)Wfs9riAD,&MIS!:Qſm\dg3ьs~g&ZO)rİkF=O>uv}eXCyÓ 5SJr&X)Kp 6s4ߙ- 2fuv%F[HrrX FEqZ 6>}
NҠAe':ct  єˋC9U$_M}+a&Tٺ쿪z=;+]7]cUY4U\݃H44jW(aHZ0|yW2/B)DS yao0%Ӗ7'k*6xj,kF=KGB|Zҡ87aYCLB5:ƨJA i@yTLDgQPaO{&Un\~%_On(%ZO! jr%B}q$p۰%% 4bCVpE|SDgG{'Fw)X~AGnI˰y>P8ck''Z]Og /SurDD%ȟ>*{ I}2Zceԫ`'@&!EP/K+(@,#]皵Phci֝s] :/!,mr#k݈vDЉ%fݺzg oU2[(>J8%Nw 3i83A}=פN½74m+8S 3lljD\"Y)aY^O حGf+ɴbӄ_d}&[ݐc= >Y,Rzq=^Կ@~3D.m5ñ0Qg֥IR)1-*4h X[~Tql$B1QVǟc[}Zg-*-;\ -E|`շM֯kD[q: ()(*M i:fUE%uGcv=6kەSvYu}q+ʄYC^SL!dj3/̤7z3Dtiʧ,/"LT>5H' :wllj$&،M?Ƃ&4>HU ^Ly_5 iJfsP܀bzU6WB(jJÙ8|QٺD:]a:o%$ʨ@ѷբ%0!.Թ[ K 4{>Ht!q!;Y_9YI7 )Zw/DU#ֽ4.V|8Vɟ|8&CS" ]%~VB-rxws8sVYXT}K$zr#e1(r;X-?DU7\ue?f(am{9pI,%PFܲX&p!Xq)->eH؛˔'0tt5b#-Efj2f0-V@Q&?6HqE 3Lk_"|tf9d]&)@g0tsO!ՈNq-?l1Ud-z]-s c4{eM "](mmfo[ɚ1e\E+}cfn `RQR40AGBPL\b3@5{~J\K0`>8q)[ +p7j2 FDѹ0DqW&`w|AKTet-cK[`"6kwRO&5N: Z?"FydݳyIL;u$UT+.odJ9^׊=KPYE^UnηX#!$W~/Aw%b}ֈ_=ӄ9.L* K3al?6>Mkzzv =a>H}~#S3zWUyྵ'{ *<'Au =Q7_s QOמZg;J"tHAKSѾ<@2 5 O8SsemzCW)}ћ^{47[şrjFj~$u{Vp\1X 55bK_@ٽa7bE;9i tk(?TХ HfgYR!~yLvppd(8~1E_YAd-H0 FJo$In:%1S|as,>'iL`m'ۖ D0UUB8Pk ͹+[2xeGc(e|.zK@3S7۳d"Olѕ{=o0p'$xH,OkZ3Ag.$H!SIj?N!C ū4>QkьjԶvOtFe7P# ev%cDW_-婛*{ 9o@DŽ[L1a+VO[y/Z6#[j^#|tGZ.B/Q 5hMaz>lj$qNmҒ7Ehs  ~ِ'i?ʹל z Wh=)\gc# R3|Uo[CR?ɮSJm68)y xN |Öaӎ!ޙm٥΅=TznK_!}Ԟ[ cQlG5COJdɻB>; dpD:OfcŅg;T;0ڇs[N ˓/,/-:Q6bT+H჏AH7jiM8Z6j FsD'ə.J#LU;6б%X#ÅEKyArn!dlB.f}l'{CRRX(%oE| 6;4j/W/ה?V5T{HM7P{G׷Ʒ绞ڳrCd ӑcFҋQ-!ض Xe#!qcC?Ō })_V A*wfFĽLѶP}W^Fd¬"P*S:||veHm#6T܄HRi)tSXO e2+ |4።d| moz}ZVɊIwGWTThMEaECutuJOr%t9N ,nOKB/(MaS>*tNG55 qB`1;6\Nx^׮gM= :'~9{ DګI&7XWD|0d'JiէiGIkK.!Ak,{ c*o[}::P\I ᕚnBX0gstg+ 0_-VYx_@2S~r'qv4iD]lcUUA,ׇ̱Ѽf<ɑqɛt=y[)1lȡǒΆ6X'Lgg@O vuzum`^FGfdPD ۄp0kq)(+^ؽ]RR#EC7fywhx@:hf 3tlr$: Y.ZHS>8~3|׎Vȥ0n!&UF"TDZa֪V_9jeNlIǀtPGPpYy3 WhD}eu{fwAQ|{O/DZ@ۚ+2bYu 9%)Iv+Z}őSZxحaru`~j%QW?l(C& -E2Kߜj^0 />7ӗt=sT)77#Oq|%sc1X,@PT7i.F;?S 12Ox:98 ҕD6ml0E%1nZe3_6,ON.Z.S.1Zi Z% ܚ@K[X=xs;akħ {Ef1RɄńfrXS;,.5|C{3:(29hSN:zY?ƈd,*x-*${ݻ TU-O GƟ8,^+SG0%L5Ὧ/U5&GNTڃ(R!kO1jFo7iyoit}5UFq}jn̪DS)p Zb-Y+<A7)mvytf[ɖlM~CW"!D1.4#NRPqg9"JK.$j/ݕlX;b̼=%%5 R^Oɠ썼'9qr.e_aH/ș=|Zr(16ȃ(<5\4kI%vW˦ϵttzV/BH4۟vr=9DS[)~F)#q Qw/6jDQ'6R.5;kk9;2`U`! 9$\hfZHVO24ld :5i"^^eaijǝ M)b:#ޔسwBP> b.0e vOV%w;7!s'UqzZLo04 yA;Pr4F_"ƕX(T㦿Y"˙T8k82;6zC,>E)ECm:t]f5̛?W }ZГV+ 9xjCHSw]%︍ ȮG͝+&@ dw o祂Т1#5_4J0OKL~oR$4q {R( SOOJ>gU|?Mtδ(Q<&K/S-K.of2mEm`ToIgŽ#Θ_%(0[SOI5 |Ubd`Cvh X@nz$($v k. &,21q aΌGii{QW$;}OjѤwX~ BMvB^iəpy*KEDޘqn^)DѽXo]j p~+j*YB3M۸Bærl<8!%d mŅL3]@`]l&Bmܟt*z}$TZbb2@@^1 @_3\o;FկcKGhIMZSrv' j]|&Zu sJejZkЋBzc2>*=8lcGdT!YU~}GՏ @QG?Jl<4@$Y,jkf%m*4m&TbkRZDo6v4sWAonZ0sMc7dAx{fR*~0{֘Ն5SI^m^0<93\ A!+Y,-g裪i;GoP{x8؀|(#۩x裭=Uz|9?3hx%̛Y7`oQށO1^ mll#=򏃠J0fۤYpu wۚ}WOu+pPlKj!] w`MZ2E2/#8P&rHeOe:v"owmAu[J۸N2޴I͌׀Dwo[N:-&dJm2bg vौc{fZ!/T:HgYcw\DȐJOX,#Z ,Tn[cWYra>b]gV؀Z@oWEI XG>Y$)hD_\[I0,a&*FX=^04dO+0Nz HJB;߇ʢ\6˫hq; J_Z 6=AC F.W /P.}p~9l 鬤Z#H7 &nQ :I B/9t{&Yhe L84do0+?@FxOI.2eO;h]p"n b C~q1ǵ&SOM4 I^]db+`hj5+biYI`}sU0dnSjiB5̓V4| '1V6.&+-Dɟ*"#3|-y'PoҜ͏a'>5yC]h"JA." ]. 86|<dW"Slh輠yնbKI,a'c2=ɱT7gCɈŶ6X* V)[`OӇDG<ϑxS[f9(:^|xi'j/dzW,L$]Kՠk7{ɜJqau>"hg\m.QU@Z̕Aʗ",T&hV&Ϯ^jih naz 4zm[eFhgۣ},LtLY 0#ɹ狳1jOڶ:PNkN+x2h褢+xTg}T\OQ+e^X|`B?D? "io ꄍnn7Sd\RҎAз\^̨I^d$(ޖ_f.et,9ܘF|’.՘j"a͑TZ.kXpN=º'݉! A]h ޝ xc{H&H~?Wڦi})Mq v 悩qoBɫ. ŗRt1^y茆+֪=цB'p1>sǡe{`Wv&Rx}8rw72o:7p׵UAVmsyĎ/e ;거\aﹲڵ`K떊ʕ@Ҫxa- +g2Hj]S;`A!nt"Z#ļ- O2!gm0+޵ 3ֵgS>,Q:pq'ee~?e,V .ߑ?3igb~P"7vH$! <\y w>7qmW++GnØ1WgU.ι.ߐ*4rPNu~$돠jY0\[JDXhj(`wXOB \>M &q = v<(Pfe(BfI/Dk⋳sGj$d|ml؅RT4(N+o3K$^m$L;τ\Y5z&hR]18BkZ(fi2o40pW]U ?|h'R 8-\?!d8~ۈc&ESMJv&2?qg܊D§p;qN籜 ܤYAOYUtWGQvX2rȲ&tiLL,dGti3цլ$+3_fA,)VJJLj1Y@jy4דk3rOjn562|=S Z^"{=zJ=Ϸ("zbd"&)'E:0f8w%qNo7f8Ai|-k\_$y?|4 +vE| Zk embLKTRu[7(3_%f‘ Lia8ل6eLͷC!hvvyW=R__-KT uBzrj>Xu'=wo#}KMT]BxFIЀqtYC^ΘrGMrɻvwF)0 8^D闍9{Ex3_K$y>Py|U<5S]?kc@>`Dv.ߩiqӹHRis"`nbIM9@WSFl8H4ltc{[?p>&!>,G7ך~R y19 u9u >+Q;Q@gKӟGKi͍cz@&D]6R((@Ӭe֘민[ճM{#dƶ8S;°Ǽ,%7*N49Af=t\H:Wp=9HP/=?ӄhZYMR` !4o g <%pu13HJճ Io+̅)~:wŀT 8Uon-rC L\މz>>i,(3XIMҾ$ȏ/emp޵<^,4hM _^݉J&1V?-@z"тhy)Qv:5^-Ҟ2"N{LqqaѨ8cu᝔fneWS2l;Z0ُon_BBr JLw@8))1 +kjYs?*eaq'!aDPwt]; V ɪQv`@V,?eґi/zR ﯬi m߽rݟt0CCd8j%zEj>[,|b|\W1G06;T[.9@D!\0Mśn*B4pX#(\DYWB~R׾F >ڏN P,ȨvKgkIt9d/E+3 ZЁi:ՑV;韷,N ^Kafv(yT>Q'%/'=|ʇC6^y'*o4:>y` rod%)YklinO4غ9+/ +u+}Fa%X:M/Q߭,,)cˏwV5a1 ayy8mܓ}w/gOw^Z0~)~ c!p?p;-"([JW=u62rvK҂s{Vw2a`>=jr@4;5ty'ǡes;؞y'7Shm2lR^͠;OR OGZ'pDK`p،)VqdNW|| &o5f"^lUD!D vH1FaFB&m8TnZ'd(N%yKbݷ{Wf"ڎЖmS$Fy>^aTZ4zءkV6@6/eJeٔvWVz5kлtMpq4^'Lrܣb~]/OPX{^t$N}0y(dP~NjS?c2\)r8QbeJM &y x!w Ye34sH>x {O X0>/]\ "ÓRyf>ga'CO 6TMiUO_цp#x5l?թ qKtuE ^xlx)IĪeQTpED٫i36jpK,;!i35Q'Rc]M.vLE-+c{X0ϚR*7tQ"uF%}͑*o6 gi͘\u7@RXH-rWOTgWΰlESGX8ĕ`fAuV#0 Yjg$"S?o)\h'9@'U\OV{$g/s0V c$8{"Wl̲taD2Qrܾ HPax}c¸~۝c|Lڢ]*P* }곮OMˮF JNERX8v@.ε)^ң.&e{}J%P  4agj"5u̧4(ÍRQlDV~6\¾}o\w~+3e̔.2",XW'P&tȕyqxu[_oHTznP/{(z$K/k@IcKyXMNZC;Gos^{g͐f?U^xdĬ4UQbrAaF!T]Zat4_gv?4D+މqQ: $'7Sgl#䭻o/5oo<"t!.F8 AV 2d-פa@6AV'BRCUTVV"J-i(7n&ȯ7 tOzkSd/ %X1Ou94efKU&\QۙhU-qq?-/#|{̷.%tB=ݸXMK> 7de˔@4*OC #( 8NhD#u>mjՆך pduD"lmPfa5u^SR|F%Ch3!6+Y¢CsMr27vkGqQb:ؿxv1So(J*@8}IzL_b̉s7]{Kؤ5()Fn1X `U¦20RrhA<ܮb\7a\KZA}CW;߻nSKx٣&@1 @`ه*[0n,T\opLK^ZĴ42A4Z:^w"/ EOӚ*0 @yE%O?ͥ+sb:W  &7_\C+]?|-JWHpP:on񴰱p}h2[eԈTHq >+/@YWrxa1sV6%]Jޗq7;ygRI{ANْ|*(j*O#nA9HԌL Xm@}g&.>Z_;ھ`U:C&t"+voP:HJٱ9Ϯ?@C@Nw4kT(qY2`,e:A.6Ãϭg4QmRUurV>A=h&Pi ֒9s rwLNh7._4'D事W aLiys𲃑-2-OTAj#{׏dkT_-Yzoa H>(R:fPz(v)55H/nzM$޺7'qл^ 33/)P$ 7g$LkY|:Xӝ+I>-㡝/V~VD̆}E.` `WLyOjD1ox:ZMF}1E$2 PYݩܼ[Р@L<`(ibUf.Xh8?pkD8ȼ<'h܏W-95Jx퉿? }w6*)m*ЖuY̥ѣi;kX7 -ui0=ݗ-B%_Wa 'G[7L/c=8o-FVqHHU" s wUW΀P 4h:$ĀqD|[=$mH=88hZ_Aq P ѓWRFmGg*CQq6D-lf]4B^!kqtZ loRe0YBߜ 1h,.;Mm.ξD"G١9Crbz5b&fQ`o?qPr|)4PPSF&mE ֏4xo:1XADLC @p`x^V$e)Ğ" 6=v!+DZO Y? d_ סAr0T.LMP. *$npi!ӎκyنVsK2νP2ɴjM' B/kۼWlE݄f+ 4jTQX}^Kk=0R]]:Rs[߯\6+F9pZju)tv'7?w}P.jL$w_w7]s;Nf*k$InUt0QC KQu Ie'0*G8'kI/셒T^&|/<[gB\˂]S'ǯANZҩ-X.љ(tӿ^M2e+AnX!g3sWyI8c^Q]$&(Jރ)䲰\,a8R8X!^#;R~-%Z!T0b)60erlš'w᥻FPUL?R} ^6 n1ז 1)m~+G{2y_u~Ҷ헛4K'd7QD?5in J|Wi&hocz9"GW#nrw7Δ8O WbA=^PۼzYە!Q1XzƘڍ#$6$)O>hDS_' p1:"H|tb}xK}Ajޞ3VM^CMb葆`8Hs;\gf16X+{qf] @ Ft@-ڲ!?mWfএ1 #0BГ5I~Yٙ9Ncմ{"٢g˔{±{ \*vslR'Wh+.hujd_^Dqnq$hwMqyw.\g>t=c򳗎\L0 qئޝ:gYlmMbu'6%eٲ ,tz ]K\,sR*xCQzRRMNU/t"k c9(4bzjc潪wƔL n=.ű&"*c0/|B {u='Ydg)?)@0Umg" edR6Qe!^k5V%+4J($3!RJkJ5V<Lp ݾxsuebzP61Q(;=`5b\< Bibs"rJv^/+|rL"oPn^[~R{pքl'+;v1P#o ;o?917V_$UC_S"{-~s5~䣐t[eTH*@uÆ\)dYKIq>tdyefrLxi<