aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/tree/tree_interface.php
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/phpbb/tree/tree_interface.php')
-rw-r--r--phpBB/phpbb/tree/tree_interface.php124
1 files changed, 124 insertions, 0 deletions
diff --git a/phpBB/phpbb/tree/tree_interface.php b/phpBB/phpbb/tree/tree_interface.php
new file mode 100644
index 0000000000..162c1e5e29
--- /dev/null
+++ b/phpBB/phpbb/tree/tree_interface.php
@@ -0,0 +1,124 @@
+<?php
+/**
+*
+* @package tree
+* @copyright (c) 2013 phpBB Group
+* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
+*
+*/
+
+namespace phpbb\tree;
+
+/**
+* @ignore
+*/
+if (!defined('IN_PHPBB'))
+{
+ exit;
+}
+
+interface tree_interface
+{
+ /**
+ * Inserts an item into the database table and into the tree.
+ *
+ * @param array $item The item to be added
+ * @return array Array with item data as set in the database
+ */
+ public function insert(array $additional_data);
+
+ /**
+ * Delete an item from the tree and from the database table
+ *
+ * Also deletes the subtree from the tree and from the database table
+ *
+ * @param int $item_id The item to be deleted
+ * @return array Item ids that have been deleted
+ */
+ public function delete($item_id);
+
+ /**
+ * Move an item by a given delta
+ *
+ * An item is only moved up/down within the same parent. If the delta is
+ * larger then the number of children, the item is moved to the top/bottom
+ * of the list of children within this parent.
+ *
Y/|O8 '**>B8 l0LH+`* $$iДl$P=`qUX|m;*n>.*,ٿa(D+Rv7w䘡oc h,7' ]E}zĥrmM #)re2R4S7 qju)(VaPqtk֨LMsgڨH*DlMQrpR݉L~lE^!:% %J, "[u|k멽D%MIɫۅE le d/V$% h'P%Wr] br(E86$$8 gNwIdYR/3zH}ϾO{D;ZE]JZr DJ'>IY$ iIOtOzy"Z{DbBpOۆ=$`t`h#cY_"x Llve$5OJ]HO}lr:i)j/m\&* lMo"W!9F[L)2N*E1^G[|8a/3иYr9Dj,$J7F`sɑՔq,0W顚fLYEsj-CJWSx*bOaF^rZJgQI|NiܒB]AF/hX_@8ȚOiaXMWu8OcUD$˟SzW_v'zښ*6wJ,UY BV2^n<[dD אVf-Ep|΢χ[8^r!xw bS߰x0e^uX*\ >Zո zxQz>]J嚱8C7 IB qIlV;2w1G|X6 .Kء#&[nRnTIP.W@Z~0pC5Ry3J˒_XW5buģnoJ>WT|U0qɯ ?B V%4G6"L-xϧe^-Y 1S+.=ͽϝ ,#`ԓx|퀙Dh҈6_j㡾XuqcWfowbJ Cz=jD<`=;T\9_s'(}A3 쿧+BzS+J„i'g,=2Ԅwf@Ɂ4Xz őN9o|)I&?Wt_'r8abJ= + * Moves the item to the bottom of the new \parent's list of children
+ *
+ * @param int $item_id The item to be moved
+ * @param int $new_parent_id The new parent item
+ * @return bool True if the parent was set successfully
+ */
+ public function change_parent($item_id, $new_parent_id);
+
+ /**
+ * Get all items that are either ancestors or descendants of the item
+ *
+ * @param int $item_id Id of the item to retrieve the ancestors/descendants from
+ * @param bool $order_asc Order the items ascendingly (most outer ancestor first)
+ * @param bool $include_item Should the item matching the given item id be included in the list as well
+ * @return array Array of items (containing all columns from the item table)
+ * ID => Item data
+ */
+ public function get_path_and_subtree_data($item_id, $order_asc, $include_item);
+
+ /**
+ * Get all of the item's ancestors
+ *
+ * @param int $item_id Id of the item to retrieve the ancestors from
+ * @param bool $order_asc Order the items ascendingly (most outer ancestor first)
+ * @param bool $include_item Should the item matching the given item id be included in the list as well
+ * @return array Array of items (containing all columns from the item table)
+ * ID => Item data
+ */
+ public function get_path_data($item_id, $order_asc, $include_item);
+
+ /**
+ * Get all of the item's descendants
+ *
+ * @param int $item_id Id of the item to retrieve the descendants from
+ * @param bool $order_asc Order the items ascendingly
+ * @param bool $include_item Should the item matching the given item id be included in the list as well
+ * @return array Array of items (containing all columns from the item table)
+ * ID => Item data
+ */
+ public function get_subtree_data($item_id, $order_asc, $include_item);
+}
vfv%ūrA:~ IPnN?E)zJS~U ޾ܐJϒ-e71eJ-fprbs7̏nX%LsEȂ0juȹBQyy.gQ0@q|PMXi:k̲֬%fڕ^|&]96wߞj[L¥kyxF,%R+I'}2rD"~^dcP W=cIPc8tUJod;#Q+?U8on.d 1bP5{0X: IDͻA`ag|Ds$apY 4&hL@Roɇ0Sp*~UJGo;zU%aՓ,Q$}w+yUwRXֈِDx{S0*Z[`a:t1''IP|/*:}vHneMCŕß0o"OYa,&j3)?xḠ /X|[w38a$'n> @ ȎʣWIJoo{PcU1c">ᴢg[ԎM\[8Hb2U> v]m%JXK( .M0 tvEg6ljղlc {#3k,+SI%VP}|qGy8ۺ>=+V[am miC#0ဣ4YG,b at6Y37C\,sqA"!Al¥rn@ДC* G46" W Ǟk?-^kFI!ve");ܼlo}(3[ 7946KPP'w_ +: 2nr)wR}GZI){1p=|qr]-JK}7rMCzM虿Uv6/פB"T!XS"5^s%`w9n2//+i@{3:氛R] kjէY"`qEPeОVmDu9S2?Yr#`7;-=uT>|4o'$"*MDykiLgዴ{&FYqyv!ޮ nY4l~w#$6lъ,2%Mئ_CTxNCKXRբ/xpq?).-F(RMMKތ'; |skB3]\*Xʭ7܄R:R_PAġ0-de2 6"um J?!~/@Rj<^R$8^f$B [zDlzݱNM+'JG,Y&{)hϊxR\!}SjnM.c_7 -Sqo3_OƛBQiň =+/MVճX$`TL2N!I,+>J00XW3?F"X ssO pKWzfW{0Qrxj j+Y~AJf! Yp̆lB1?V &'Y fw?xV>B.bN:Dzf${gm(N]#e,{HNf4-tpe[afp{,f _F|ezJ=zߓ2;JsIXGF8TArGZEYiWU.ճNo MYp Td}y|o&.} "`@ش*9ؒczc^RJ,Ɋ߯r5IgӍZ ;#*/z6Fe(+c  &ɀ\˻L`n7-ΛfNjZra1׏vN9 |kO̕T3Իl>]Lp)y簲]tb213xI`NBb̫DBm|WZ; jŧ ץcT6j7-tWira nq,]NxjCos}q'ND52#Y6{O:NY)"M= 6fDD1O>UܢRB.Fo 䨁`J t.?H-Yd&+gs뢉fj:h nEcjy.TJK ,i? ǭU1mϨDEё2K2ws\LHfo+>3n :djΥui[PEw*[ @:&  ;,RUwy{"UtA~vJhm..#9%O8 )&E*%ذѥC\ R8n9QG an58m{Sl,i0 pɜ nA;gű]^8ZGۜ;Fer#~8 3ZiY>/'YtFKcY>BZx3a /S>U|z?j.&2&LاNN6DmK~![_+Eg)FL"/ /1#^U̲wՁ RR Dk8# 0o ju7fkB;Ȋ^Ed*F[ޘc1y~Bv! >xtק$vUaTך*}mCѭU}\ha0t+~iߵ3Vj>w6Xˁ mmɗ픨(Ň7Wp_tLHYvql񃃑\u֡fW"5;nCOfK˃AgA^^VNx\COsёY]k=-|0V< myBEa!>CCbVCm% ZHU[U"M2-E dlH~&Dق ?ڃ 'שA ?5{c#+2Xȳ,`Xf!:Ey Z%sVjIUdL)s_6/ -@NOR?S'i0mY:&Uts#X ;s3+Q& )8蒈]vXdbcw;2PZϦ |f9ȷUzkMeQeY[Ee[@c#a}*i$ +EQ?ZzJv:C^0JUKRr|W% S4I,m24m5-eִ6FXf=UBذJdΓr܋/%&,^ܷ6UJxL38J=YbW# EMnET}MԍTVcYUU̲ L?Ǚz}\VTcͭ-Oq>-~B3jczl{ u)Zy>Tϼ?>:bǙz:~tg;  B{|wg|+=#(ޑXOѱ2(XS#!Fm65KZ`ZHg ! 0Xﰨ;,z_$_yǦnxuϟyZqM0雁Mtk^rTI L |[  BPdR;8jH.ݽ3QE~zO-L tKD{.Zl9 ~ӦG{o f]YywibUIjZc}xcrt"͋|cUf8o7-$H@zdƒFq{韜r#^@rctM\Ob?v Rkr^}ިI,>)З4,“E2{(Kmt%2gE+x쉞v8N;i 5#ݥuD*a.C յ=M2 '+#2fxһxqDݚD<3rDCYVi@lFJ: /N)` yᶰ!Y^Ro-bEJ jѭxW?c,iB 9FEL/t+~VCI߅x~ wRO={)cݟ|o%!4GRKQϡSmfv?NC0ҙ:7>Jc=O,U.%nē ^-D7@׫TeG/| Mw&]]\90d{]7оmAbhzαV1m՘jLLf;=oM(J5M 8g DԾ$P_P _a3;_8>"ƎxnǘfQع# 2@oV)`9ě39ѯItl:FfWeLqY3xb"L{8̽cÜACIbG')$2?uځ+9$_<eÈlUdʺ ,QnJsWJvV$F'2t ?=~r<"vUpeeiDc3D}ӊK+9&V12ߕ ?ȕkjv+@@Cd;rkGː j.h=䟂Lz (ayi`[=OPr__0NQzq bIH1 ^m(wQoyMn]w3ɱ]?r/߷PMS8p}&-uP@Y[PTH+dPOb&xXJܵRC&L.9L@T*!s:@ ţb/p𺉇GXc lFn6/cxV@YmK)f$n|fTѧ478Ԃ gc#F^dt(=DwD =î&":sFO5;2Ӝ0Des,G'`ola?wd#O(ຕ?% tbv: yd*Y`N@!)xQ?3u^ܣ#UaOD*OV]TlMk4'*j:=\de*o?Oj( g魙i|Ge_џФՠ(9ЭFVz)d [hk`]mĚˢvgYYU ug?5?6F @%w>Gx_s~ `}=^+O=zZA/ob;&4wr.&Fq[?Ƣ 1YYUܪX+/Bzo$~<%Zkh@J;]&sy('EG?]hX@v_x$_fb!AӺua:I.Ob /[E%}!* 9jF"oȵr$k/lkK*׻ȡ +w݈7U`/tvBlxgSEܗg!,o? 慉߸ØYL:82q1.@Ez_TJ3ͦ\(E OWEs}>Xs`LE4Tq*u۠ %'9Ltܯ5cn^%< RX|wIVzVCǷ#Zǁ_{yD[nɪr 3-Z$ӗJ-Lj3bה}e $'kpT/sVA/`ܾJH!}\ f|,naS`($$.9%dt׃{nC5=#eTSe-@Z .q;ԛ9Ow"IJzzh>n?RI%#L{zn@hːb'phn^*% tAbMPSF_w'Vc!N$&Nxp4KOC1J ٶQxETb+qj;c#&:ԜgsZٹli?YNAH #iB5-&Ev^a nlP>O:M65KH.3PU;[9rW(I+6P2TDz"7YeZLr@JmhKf}W[uoD=ֳ|s !K3&5@17X y{dR!bN['v4}elϯ ҙ9v-#lbJЩ8?Hu0Hb߷N]l.p3˔lp.fUXM|`g=DC਀jKx)?I7C|ҕԬF]'Mi2@Ι:u?0c!m\VIIci}(ZCRx,+Zc*y܌H-: vr-oGoekvIo]ﰥ4~fym0N~eZd) 9buAܚ3<S)V<{䋱O y+w$ah\܍ףj5*/$ȱ-n?_ '%69 \ >gZn ,c]!o'dM}&5<\+gkT!O㫟[5Ncc7WXauSr=ϜfËvU Jc45&A;)|&.'ݱug47v$Vɏ-G*n9g$FQ*1#LDG٬K9L mqYL0+ Iec—* efmKC tԈ)&͇O؃BQLv=hp|X h*u C&VL9ūLAbJ|'C-ǭq;iU'e 7Vn]TbՐT@̮&~XpIS=~t"}u_ȯGQx+/z×b^p>$vσ>ld Ɛ "k4"{ އ}y d'cZux גj3bl7;m7258gޞC{h2J!ZFD3sMZr6f9?4Yםnh pI 妴Tk!N5^3=%p's~5lR!ype֊֢^f֡gŰ+TV@L9˂lW8`c['$Hm0!!=%^6. R6{9JqU8>rNKb 2|z]2tYkp?x(f ٺ&^; &}rYJ#LhiE&f\dPo74p+EYb{m9iۚY,iO7'1q0wo򮋀N{iH9zov ע[ fѻ Y0'SvY옫y8ٝn~9T]I?(~iuM\͗o@ !pe;7LtڽZV`ÑܻAwuo]'fGqf Lp۾8Ic~lШ0/aEӦYT!uX| }=fPR9<yYAutzӒU,>l)oA9Pເz 9 OiU6RAAgc_;?-eo # 0nCA!լtVlȜ`u;+̑LlzUU*ɬu2Jo|`ؖv\PN^ѭHK[vGUOa#manY#0b N^H`q`Y @_@ҜCMr|塕fm4M`]ItD$٥=X[#k}$y 2O-nГ6z%L%t~蝅̀4M}i:[Ljhv4mfGhzDi]Ot=χϧ7 KJӀJ$u9F|I1^|̓lШSSn|ڭ{R :)17̾䵨 Hm+I9h /S{2|߈2sOWڅ?I EWfhA/ m#zs,ŀvPDuN !ʖ `uÈwxGF>'FW*՛HZD#dr.]ez M#Bl[vS{daB 9˰݇SeYA-7 e_5mOO IMJ ˄.^#稚^nC^ Ր|BFcviDlj@] $ьgf`珋A]^h@`i@>XW"VH'9HU&yMyy Vϩ,UvmC> aYo0#0p&$fXhz@k$CP/=;'SkP߈WZ',ڕ((;6  5A 7]$fG"..o(pYlrpڗ-3mh)Yx~([;~7BE Ֆ85|}NDИ׹؏ԭ&_7J ֒!"6B/[U&j- Vٔ2e>N46>:F*w#];%,]Ptz]kg8Ҿ<ӫ֊@naFf,nhfivF7#%8e}sIYb$ 㶄t?%Ms^HJȫ*w:lCWOO! jGMg[ ؁JגQR Q=gȹcZzd bs yifsҁD5=8V+5BMzK̐K_&PjHRZ'11֚%F':6]$VmgIvP-l+GF0w눃y$qH'H9\e7êt?{yhύw>!sVRg?8 $}b9|%Q pd *Xl1rij )N SK[Y^e='AA RWl /Z@d7y¸^?erA}W)Uy&'zhT  &hbvzVv`jC/Bw<:гj{?.LS)l6šsϗFYLj,H986%J Qv䞾%u8',b䷝$i 2@wѸL`YM16R;}6'"[H`S{grutѕMPsMb 0jbbۙ @Ss3.ь,BSOXϑˮl:"*>#,"n wd ՠ(:^?j>%Mr0O0QȌb y]h*Ri>a, 52:Gc2mm:[8k[ۿƵrQ&AUʱkʕ{?s0/s7̬b9|t=xE2 m (Zgwj"~^O&6*s-M&x{d0n!2l6$&˖?ۭ!|LȀ[ Uy7<)+y^#w(_  [VX Y& HxqR?76AŴ.4O !}I[%\gy^p BpN&=kqgL BP7&ysF~-9̨6yG?&O|Bgc~&~d P+x Zfl4(X)oJ"M$iN؝,un}lF πz >~&wmt4ǫT|%mo!{%ӗz@ dMlZln]FY,x,hvPW5oܹWw/3r>?9\z#XoVKoN>+?RЮJMF^S ž}Z,'`6L(,gukBD>E|&D&H$OM+v^UCl[\"~ ΧAհ 4DjEhPx×pPB^F7N wD p &17N :\IuF6X)/hnDYl}`}}mC Qnx"zTmj0m9~NTv W1^I?5G A;\s$QD&ޱ!%7%hi7@KMMZm.{C7 Ї׷1ha/{OD(Ô Щڤx%dY> ͅJs qMqv#Lާ;2EpwME9ÚpϿ u\LNC[wmdJw[BK0w<7 QSU eɀFםfqBڿSlC1Eԩ.G;'{T+.E{5iP߼U:QR?T*$0( zTWkW4i N*LC.)TMŅ')c'$7OEUǕ9791($(nNFW$ $BGa \~}DX>crbe> *m\ā2`(|, $At%,,JCR$Usm?L3wт'"\KDf~m]̈ :@-̛ADk0 GeX9vO(4xJ#7ȗ ڥ|JKRs>Vz#m %xiSu*_ A)RdM~MZ*c-/#,|D(@(ZC/ v+|Ԉr֝(KQym-ַ&cH^ugL N`K9{:JK@kgLb.3~"pe<÷8:P#m[jGI| &+(ŭOt c.qXJjOwSH24I3foXE7C^_kqj8BQ_~#~ps6搋 ;6{_14:L: g 嗂`mt;u|yVҴp]핈ڼoK0qhW.$p`@ _Ez+so *s޸6h=yS C _H~ T95i_F~ s1\t*{_,kZ$dگ'w;'w7 @U7HzvX8 !3 c"ޞ@Tƞ{wxR!iUwd*:ޜR\hc$PY™_c^E񲟿kv0FE-0xyAt-_ptZmg F[}j$Ҋ&y( iȁt''ܥD5WсˌcP{NÁg׌=!CmSp5($Ct<禾oWfxdpZs%gjW.$9g d/]Rݳ v#@8Xe~7V+I=ݐ>%>z "RJ\W^D`C Vih`rdu,j/~*/P-Qo)lވ1clryPm o/ŠkկGj>ZKY>\&LܺJA'ӊzp 7GŹX[-1Sju֊2Z@}B9Ʒ zCÚꬆ3❌+?dɛt~U~Xj4>.zztE s' tŪV)? T0STݨxH;2ÑTȡtQ_>m/) T?ڕlza'./Ciצ%)j1偑0L!I4^PC :S~lπVIp(7$u)w7MJV|/ϻ:FP~!&ţ/@!y:BCI¾T/e5w,Vvh ƠU#ۮjJ4E1/C\.q۶2o/~[I{!@y``r0F a&Lo2hU&sv%rx̜̮0Y) U Vo{N1#r vr>e̩Xa/~yR.u愝q6:j}yL/Q+HD!5E%`; Ҭ^Q/x[`т4 V?S{%Y/jb~.qj?% $WnM|~k!C`6JG<7L/{!ET}x<DžhX沃`eZ|/ HLND(uј5$fP) s*S[<-Bz{329;_=h5 le y3K%&b2 58[@ /K||đ$8Q$>"#`Wk ܵhFW IKy% #n[\D \yʼn.ݽڲ?nB < y QY ;5w6x|cޖ[r쫢-"#(uvN҆Pa1Q% ~RXtㅋUX\4Am\.2v?'ܣtQF|_2. a`>ss2z'BKa5N 0f V&e!)YxkVԾ1Y)[W4&hl/ DN[B4H{ ӛQGa=Up7'īK v\6k*oK ֐Q*b;ggDIiVpf#Ia` HY`~I %% iAێ9aϒ!ff"Y7َA^R[dNPT L5,>BgjYy& }6=<Э/W||p\E: a_Qk9Òl)ܰI(Řs$Kɩ0yUѪ<8+nI})pv6j@ѡd~U@:#սAYf7W2cao!x[EݹuG˫)4YT$ e:ۉW*BXX7=2E=ٲ~?+|`ݹ|?Y(O!I`72wϺ>z}x8*JťjKs $y@m6G7J$" KO(M]*`<}o=A<4蝺37n㱹???O:O*Py?4`O )p܌ XҚ: e}$zc;p-Vqpi 6[_AmvHg0ճ]w඼[.m`]K ƈ6K˶wl qk,WE>w>q@Ȕeݖ/^ܪ=|Ud2,G`qkl~3s3T8$!Ȋz7K#"Չ@*r֪ K&4ޣn8@ tҖiN+fmbn DXr!uP)fY $ˁ44dYv^̊]c3h[ns>X*Qb&219O+؟4/IO&kA!JR͝z2FT> t^XR&Eoa!%2z23ka9\*%KR,\< ZEGKܠGWy^ ]Cd3 i# ?MJkyߚQ %2+l3b",U `~ ȫ M <~E.c&:ƺĒK ڒFu4rf㗥2m$~735Y6N4)s::rs'8bd_kg"ng-wړ6hO/cS4rZlEWmiI 38ўtKl{؁ VeoaPy2?F D9~lfu)'sGs LMtԅt=K5E(߱b~ ܋ :bBiG k1'e iH_z9 ngd-,ڃS=XY39HQ.Ddf. |TFY;&KI#/XG!=RfoTHazKc pc-؅ =@t/PA[fRto :~y;u1&wlOxas ]33PKR_z($7soȒ%v[aH-meS^E>|P@R_(K)J(@.uɊ'wE*ԤckCD .r):KKaMRƈnWYG4 ncO .֪;+EcE\,nC=d9{߆>Ri ? 3@5,W볶kyź- &|ȅIʂRZds;t 8$"0ԪW(P~ݡ)7F[uMᕅKiYF ]VoNoh4ğs (͉Fti%ŤڒcbèT(&A{_6ԻrdM1SvF|ckV~][JiFtcx{e[Y'rT6LJNmkBFK_l&)Tɴ*j-hȎ;w߻jYh}ժ|{ZäeFq+$r|Fq@~qIfo+L&g6S]}UWfs &)(AO@TV듊yt:q_;$g0,Ɋ ukѫ Ee> kWl$!uӹimCqpa܆u:u*=l:27xX|o؎8{YzBZx\Ei%Y &H=+S~:3t WgrH1voQO(X҉&]4X(!-cFj7&Z?; wu a#iO1BbxFWIi*RNYtP;B\yT GJLoh~(7p`tW0B.ȶOu~2H&{ 8cN"ĉ>C`?F@/a|.mf7hv΁U@iA3;5鹸;\c0og]R_cb,3^^ozHK,So"ʩ8yAs40)OǑ\Y)xХ#m8\?(hg,zȰ>ƶ7|.hlaPMү Paڃ3<ӣmFIo_ZS")G=%RDOX:}vO׳-F;6NQrCDZNbw (dӆY Hƙ>]@>?] chAڡ#ÿ:gY5YT14=4#8iCpkP֏h,Ö*-/sa\6߄]DR{=nj4pEdˣ=ef3#c![$#zI/m^P3s0=Q+I2B'}u9J^Evx ޹3fB+UuTKm1 ] Z< aKa@IO&x[miFd=)/ĥfxą6jd!RzC(w6&T$;4r$@&7=>\ a!,%-KfbRU m_w-MP*.m8i8yIR {bvAƒqC =P8RMc&ABD)H?>Ɠ}v@$zj[ {#҄ eלo eM͑< .8GOC޴5eC>ܾt|7 Bo/" 2RCP3{0-iBCF/Zbv8u}&|r<JE[ =3Zxh/DBFV+Ĭ3VvfllHh}ֽe.}L\_cX4N,KJx Dj)8BቕP2{H pap"&SEX @=s@\qc`ԀD{]#\6Y Ma"9lw1 w<~j\, Wa](M]CћOUЏ'`a1.WwG)DȻMӍd$0Hd=f['!D猼f'90āAkW+_MNy u mJ26`5}:&rZ>Bg R _O% Ս4_'܊:PiM^[Aï7b$MK =]q"C ´ABW )J2 :]HCa[8ؑU3tr0l݅r[*u@i>'JCaqb- sĠdZ&M znlmD;*Ѩnwq44F`9Ґ:mP8/07!^Na y%໓_BS0'' Ň"hYoq,34WnnA^_ /,|We4.'e'9 iŃuZH꯴(=Xf۶t`Bf]2d,jc2J5#^lLevKBeknڨ/?ͦ|l?Fqj.cC%pY7'`H7>$zHﴊ]WcQ3bqQ+碑^@]ILqD6)d$[j!{~e_WJ iD1^Y5 }ee?4vBv+Lx$qs͢G[1X85Iy^+ɣ!Y]_Ȭ` @`aONbtAO2eKj"f䅉k~2M"`=X[sNÀ QcĤ\A8Dztosď`YwAWeS)BL(LZ~Y+PIY1Ghn P6&7B1@Gl7;,**r?ݚps'za._duZP*$7?0wXd«tO[ԝѿ3ɖׯxVHKpWxg6Y{<7Ϣ㮼~@!Xo4iej:m!*-^#0;,(E{׹GLn&G[y*8SDpТF ؤU&dI^w{4B7IϦ?!7Iän-zN=OHD~Λ1XoϜ#K%e^FiYW|nV؋%`Ŵ."j|vbp``g|,0|_y{,%|\R^э\8ie5ܷ~!w/fiaU?o^~.$wCHWXtl}g$&*+LQs*An Q Np yr}?WG)J[ [4bTJ$c>JK;p(F_f;b'yep"-FC!Kڀ3mO3zL$*2[R/DKLnLcni"/hڨڜx!TOЍWؤ3ji6G^NW2SZ$>DX^Bl}M*b@zΝFg*ә ˼WF%Y>[<I@S?92-*98ל`K060uvv"K. SR^UM>{5 ;Og.|8'>6S~udK&ts{ާn%]Bvk=gz=Cޤ[) 5+&8 8TgVH&nt5{k+EQu>Kt'`Aly|'flPn 㬵-H^uR;f? ښ ϢwT>刐9UIbR2c,+)ng i֐3BBl&Kv; TO1.s5Z+Ƨ?tw"T߈&#O႐SBgQl1CQ8266lD4~-qӛl4p[entx̮yTE,?dw [a`vX>CF IKmgpGg=+6cjísme$X&nLiUgwv1/R"r^qNMG7fI,F>lUV! cNȰ7F+L!"V)qi2*Z= n Sc7 .P9>~T ;{O&wGZ6ferMa }jBykW;6e hiq5E[J4XK@'NO)&HvCҷR}իӹ5;w_((8n«&7 @ϿX%\G_윻=pyBAR!F`z@k>{=T3SDŽaa 3k"ϔ9.) SEձTc%H-)oit! `Ԏ3;z7c/K Ga,cx3GP beP.\٢qpىG1B̨ Ro£4 z|0l8NAbm :Ǩn<<ȟJ9ЕEfZnSc5 6h7 [@2ۅѱ_ANXb@qZ*Mf^mucy rM"Hen]_56-k!P = A_+z h'QK+ݍ<]h#; ;[e ֫́GJ4$6#Kk_3ͻvK7+PEcH@5Y ]O6y(7,$3OYŊL a*~ڎ,k5Jǀ:k)}bqΓKE>HroNl(u") ^wյzyӈ,)e7kp)9hl>y^mlnw2a4K|ծVK"ÛF@(>~G9KEtwt5Eth$=GXZµѰNV N6i'.pAf( Gr+uX>5w*Tu)/TPwvþWzbN 5 9Q+s-<詀~?a3~Y!PW* B0}?"ORlܹ뛣עˇКe/ESVg"7ERt99}5)l7UPJ-3%=[5y /Z ALgpg<3b!T 5k7 nEՕ<ߎGVBxU%btlUoS|DDNQIׇl/+[AVM ݧ{msnT<I> صC9@$%B0i⿝ 9KwLmܪW_c@qX,r6/`rZ=Z>Z;9S4܋ I<vHpK,{$nI16|L9In' Yʶ%hN - w(xbY9I=N3CG =y8%'x KR<6i$pY:Cs.ۊoWLm><Oʓ;PaweA>p2ɽ&D2QXEt}l Niĉl Xr_IiYa8($ ̱<&QNl&x8v2spͷīo4ROv/03 (*"Ye/^,81[qΠ{aĂ /M:vɁeDPyJ6ZrAum*ATާMJe *m Ωu tjeKjD {tYldCBi.8p6QtY醙R$.%l1"CqdHW_wO5tkf[fiVI2ҟE!$ [:8Q_c8JRʌ_s);A{q_CDrc͝t_Df_c{ @ZۧТ[ޱRl +'Юw/niaҩ0DyMP9*稊馓݀ƒV./fMBA־K7Sђeb\/(>xK)e6-秋'\ F~A f*W7r8^V,o{ٯwaT9}5EDIg/SCUu|撾QLPRTN QhBn {](9mcV^ͼD lLc1AlM6ړG#iACi;h1]|<`sɵ˺Jݳ,(ǭ"N WqZB˵/r;טw2.Tb@&R`$2vpI:E[~T5']{nZ|:&H ˞|":Mx"Tձw j A<:)e}nwkvuv[7n~OIc!A`dLHj:$٬PP$v׾;Bʼ]f~yUI#Df0at~C-N73{.v<]C\2ekuyj1e9ށ:*$M{Tґ 6:G}]~,+R^49W\xsqVo5LgGtQD &gĤ[c[Oggr'5*}s\ .87/VX@(pbMЫo),?ual^D'\Gnu=T>+VeC͔i yN7 upcF㰲bppl; &2"ǛGVx`'`8-)G5C?]'¥BirW /:d…\`\<\gweuϦ `= h3Z G˖Iu0mY15go2,=f+s&ndcR%}hC&?nTKjꄓbp[ޠǤ,[xnqyu?Lǃ{x֭_@ʫ!UzNz!u;ӎ&{yZ+zh+NYh8VdU+FB=!-~sˤ!3(6LJ"r3p26/`k]%Xy'*z|bg"xh^LyEbހq<gmFgH٥@٪.;,;+J[ĔE1G.VF1+ Ynհ[> 1h#I GVuU#>kCbWF&ɷ:ua B\m9'LDf# 1;H\#5`-bHM9nmQ9}#dϹuУ6oX=@p;`nۍp5~Ng=M:Hu[W-I']!ΘMqL~S\a#7Z G Wh,D J^t/Ɨ}ѝ5Z~Ky WA*Qct}7b'GT"t=/%4­h=:xclA|NM@ej*yjLI!j׼bby? qqo8D0SY٣cƤRWW(䩅FEmVx2i^*w+ߒÉ3wY>$Ʉu厡wgLQQMi[~ٱ z7i fpw @n([O q _7GCRYUJм;{p&_'GbȼvSxt_3rĔN?7۷CyҥNRPP5[* ʂ1ښs'KXWy:~SnhwFR<:욲{׸zJyD|hHPƫ(\CjG-2/Z/s@:T;StLRevО9srJQfesb\uߍk _DzӈpQ׿S:+:< @w'&8::<+nTѭa{iU6p^.5ɾ6ZYjh]{c4\AO vˎu7멢 zl?#]?%hXq胷\gpʽNDc3NB4\@ tZ~CQna+>ϪWкЪϐ] 9)F/>LКI:"iJ (Bg PəRHxn#7B7߅'oiOzY{57Z;_HAfx"XRojy-c ~`mjWȃf%;TEum@ *0a;,{V܏ߛ6؛)3G8g xF>N"嫵:]RDsTХp-O w&ӝt =L##Ng!'F2_^ϛXH2ڲdgZտK |՘]14mwd {N3j͞9U ;MW۫Ds Gh(y!xH)q΅1 v)gq\@Ie4+=:<@$2d@1_d'Ŷ*<0e=@q΋b'^Wў+inU^_V x 䴒f,BMTCXiٚ[[+ۑ=sve-?b1զ`-ʡM {3[Έv%/տ^QxI܏Wvq3agXQ1/AYXwKľ_7Y<HudkvsɛʵuѶUZ޽umjzt vGc8#d#yy8|Am d䨈J|Ur#Fg*}mF)A7$pkq W5@5ӱ.wrlz9uq 5sLFUU?¸'$J1` 7"CKvI$F>J0FӭtX8XbB~ *D, %f;Dr߾?>) ^fi2 c< G&B3?9γPD>cU%@OyRT%#y'p*Dz mC*'ZehnOF+j~w)nɒzUGdb. Ug8pk,qb0bGޏ>;cW%$q̀U5yj_7F5TEWրD-5@=)G"o~4|iIhyO q's _tTo%۰M͠6c*ɂv~ mL50DeENm1%C hgmpػG#a, N^GP gԪ}r6_]>-:炬4MƖ]]PZf%ӣ8.J`8kqC,lqx>,e Oi\M8OgjmEgPDӧBAV(V#ɫ Des [M@ &_./pD;ۭ\/Ǥ1Ub&.K3^JBR9/}4(<^9΢RXswtrRSUū\bn#ց=GOiV` $OKNT[bALwfD?ֆB2: ޟ}By Myh> eod٪] tM^d@Ի@FV-[|tw춰NP¸.M,"sCҳ!Qybj}_)Qy6wÍ;?0oK6YFHSԄVg+ԌϪxA]7)z3& ŏm܉L7 NfX^ (:o% UՍ.%jY;%,=S~aY⫒ssRuwhL/cx:I&4]hHym6s  :öer-A?1oᱩ(]ƝQ#H& vR#sφ:FvKMxh³s1N4 B : GnI;_KAi~< 2'@k=ߘ7 QG1hEL R -C Jף)X^yG4zMP(S&{d,^,h"4