aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/template/base.php
blob: d502aceab89281743fcb77c42516c62b354fd744 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
<?php
/**
*
* This file is part of the phpBB Forum Software package.
*
* @copyright (c) phpBB Limited <https://www.phpbb.com>
* @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\template;

abstract class base implements template
{
	/**
	* Template context.
	* Stores template data used during template rendering.
	*
	* @var \phpbb\template\context
	*/
	protected $context;

	/**
	* Array of filenames assigned to set_filenames
	*
	* @var array
	*/
	protected $filenames = array();

	/**
	* {@inheritdoc}
	*/
	public function set_filenames(array $filename_array)
	{
		$this->filenames = array_merge($this->filenames, $filename_array);

		return $this;
	}

	/**
	* Get a filename from the handle
	*
	* @param string $handle
	* @return string
	*/
	protected function get_filename_from_handle($handle)
	{
		return (isset($this->filenames[$handle])) ? $this->filenames[$handle] : $handle;
	}

	/**
	* {@inheritdoc}
	*/
	public function destroy()
	{
		$this->context->clear();

		return $this;
	}

	/**
	* {@inheritdoc}
	*/
	public function destroy_block_vars($blockname)
	{
		$this->context->destroy_block_vars($blockname);

		return $this;
	}

	/**
	* {@inheritdoc}
	*/
	public function assign_vars(array $vararray)
	{
		foreach ($vararray as $key => $val)
		{
			$this->assign_var($key, $val);
		}

		return $this;
	}

	/**
	* {@inheritdoc}
	*/
	public function assign_var($varname, $varval)
	{
		$this->context->assign_var($varname, $varval);

		return $this;
	}

	/**
	* {@inheritdoc}
	*/
	public function append_var($varname, $varval)
	{
		$this->context->append_var($varname, $varval);

		return $this;
	}

	/**
	* {@inheritdoc}
	*/
	public function retrieve_vars(array $vararray)
	{
		$result = array();
		foreach ($vararray as $varname)
		{
			$result[$varname] = $this->retrieve_var($varname);
		}
		return $result;
	}

	/**
	* {@inheritdoc}
	*/
	public function retrieve_var($varname)
	{
		return $this->context->retrieve_var($varname);
	}

	/**
	* {@inheritdoc}
	*/
	public function assign_block_vars($blockname, array $vararray)
	{
		$this->context->assign_block_vars($blockname, $vararray);

		return $this;
	}

	/**
	* {@inheritdoc}
	*/
	public function assign_block_vars_array($blockname, array $block_vars_array)
	{
		$this->context->assign_block_vars_array($blockname, $block_vars_array);

		return $this;
	}

	/**
	* {@inheritdoc}
	*/
	public function retrieve_block_vars($blockname, array $vararray)
	{
		return $this->context->retrieve_block_vars($blockname, $vararray);
	}

	/**
	* {@inheritdoc}
	*/
	public function alter_block_array($blockname, array $vararray, $key = false, $mode = 'insert')
	{
		return $this->context->alter_block_array($blockname, $vararray, $key, $mode);
	}

	/**
	* {@inheritdoc}
	*/
	public function find_key_index($blockname, $key)
	{
		return $this->context->find_key_index($blockname, $key);
	}

	/**
	* Calls hook if any is defined.
	*
	* @param string $handle Template handle being displayed.
	* @param string $method Method name of the caller.
	*/
	protected function call_hook($handle, $method)
	{
		global $phpbb_hook;

		if (!empty($phpbb_hook) && $phpbb_hook->call_hook(array('template', $method), $handle, $this))
		{
			if ($phpbb_hook->hook_return(array('template', $method)))
			{
				$result = $phpbb_hook->hook_return_result(array('template', $method));
				return array($result);
			}
		}

		return false;
	}
}
8״F\fK=s<| r9k`0!чRXVᐆ.s*n|C8ƿW8gf_ {q(kLUeLϿN|[ vI`reX~HEl?Dg Z+Z_1nhrwܜLPp51@CиhQFj֎-_'aJY}{?CyeW3UK>.>w:?դhaZ.Z{ ϲTJ "vAXUTQF,ѕ+~*-yUx).ؓ Y 7+XA$lFp&}}N܋M:6`]mdH$ODOXh-%zWMpo<6x #W8>jՙn6]A~ 2 /;|V/"@LPD-EU(S T=qPǤDy8 0X;1\J&,ؐx଑T0^U{7%ɣQNnڭмDϝHz]BL,ؘD^Kz4օ[07cb1 @oS|BA*6 P߆{<⑲N5"8@>;_[^qJChm]=o `}"3Ǧ@/G#oR `rZ`Q $v$d1/-OM.uL;v zW63;ũ{/xe~=Uhh6N/jJҖy1T:J7kd׭ضJ HLQ2g9E& K*i-Q A ǟldzAs 2ĩ/ڪ'qTu7NK/eDdjL>Ys,bgo Ъ0=yӾyĠƎfG?2utzq6/nbؿ ^6^hмS sx &Avr%Lz7Bi5KŤ8~Jw۟Ÿ׈me0[_)H7>,(˛`E27֭ҫ$+M^)g5f@q764 w#llA 836Jnsn\Î` j,c U'Fa"ic`Bhߘ>C rҺedА%oAޭ֍mB!=YDINxh(awdLAO  }d4k,7ByL8=Q;ԸmOOK1xŪ9iΫެ5t +)jqdL\τQQw~? Xs^oa|5Pܹ6MMWG  7Du愇-ʼc`C wjOH@wJڕl^E ]l؝lWdP|cAD1zA&]}Lz!/ $Wij2ɒ^#n&d+&:" #ew)*5S6 '_ڤ$n$Q Sߛ`K;P+p h 5qNVqXR ,Z,GYXmiۢʁB ,E//%RLѝm##IO. E|T/5x.kx:<I$_(.{YxשjQ2 4EEz|pfH"Rq#Ιw4,3OYB 3_k:LdIPc{ֹ=աT@t!v2c ťJ) i |޶׿)#g+IZXGT|:l(%1AZ}z-JB _9PA7̶ya:lΝeRw|eT H_Xc%*y,ilJ(Zc0p<6V D.LY_բf֝u.R!ozV[%e"}ر>Eq>nja冒~MJ=Yaに:(x.hPf% ٵ8v!#ˌeǵ*-d,ظ)VInhNʹaE#H?ܶC֡_59q]jXgalL voӧְfRM"aL V\/ fm1|~[(l+2Ȍ (EvOMxMm^_vV,8/;r5 mYe`L{>E]`^CD-hB;0nIUb|1 .l$׏4Zcnp^%7;!\$7A}3 `w^<m}]@T6TE'iB~[9:0ǡW4Fg*k_q`4HQ1)r\/5Wq BE(HFr1\ͮoǢw"全ޤYՌ0W5fgqxt1}  5C~!t;CCXh1H~Mk;Yö8 mEP@!p*i,aY^baO\*Q]-=nfŶÙBnd\š=^0c^+*T;k=P8\yB k ZAϭ~9N FiG@JS]3 0CNH~)/WfNdyM0KJ |u l[:"tEv*us#b#Zdo8~TiÃi'%<#䷄)2w•g U!VNR>My<74m>&%FJ@ ~r.f88Ƴ sjKy;xjnM!-#fF*r W$\ tAC!DGEt6ɭa/?U@rOs?TU ~_׫&'-. ͗s}+I'Bb4R>܂-}[U5xhq$m:?6ן?{؏YeQ2ЇgmW@ey559*'_pl5> ?;rc~*r S|d. hXs:~*-%׷9:kqjV )wtZH-ߥf*2ptuXfҤm<JٕXď!O *uM}v*Kc*e~JQ :599һB~,oa8VY[ؒ8LRQ Vk$E.K8͖5fJ?*:V:߾S/>Hz.lό͢cqLb-s,t1vU3!T|H&UfheYwOڊD?Pn1՜I$~@w/"i:W|rƼ "\ "N<`2<1J5U]yDQU@x+|~Mwp ]#+&dQ{I&@ kFaΌ փX.=ا_[ j:;1?0ARxJRc g3B/%e6N<s:a?PZA(h^akWa4a#=Ga1}ǍdOhF` ]~.]aOMSRS^|4?dNJ}IIK<-HQ =\1~L>Gׄ0?>i'=W1x~LaR/< ʘ7K-}UÁr2UU;g\:́CɞHkf _[C"ga!)qx&7bƼK0RkKH988CIrV\>Qv7NF ݾP dҊ`DߺZz`Pqy"Hi^ J+}< c )/S.͏pFg3X@ R3-?6hqN&c:^BNӁHԚӰ*;:PdBGbU*"XL%/(ؿ2Zճ|7Gx.#pީҽ9!' _Ohx읨HMnk}}bǞW#DE89i+\8VE&"E.-soL'4L0u)飉/t{o{~!w ɠTV [^ K#"P<4ې{wVJ'}+DIM1gqc\,L   WP9\r>!.8h8veY~8?˥?߰3]HЈ`zB2l,v+0C\,ft7t0<~o!tٜAcTT`K]oJ\-VOP0?j<"<1a3vl{͙ܠd2.͏2PW ōðdu\25ckn}R2`oex5 7x""F:9žq^\VFEZX'zVSTvWlP9Lf^,Z O,HŨfwllȽ&M; MeIad}}eK&Ҩ]FWSxG u%I"%~q]g  :A@V$ҝ$H-uu7 c؊[i?+#/C()7hnHz`e"HmU'lb䣗C*ʑynߘ_2 Iz<+:!P`9v22XP枟&Mbb (,J7ΙT|~eN>PICXfZҥ+h#JA~.j'N0%,cYĂM- UD6\0;cl}D;"ca:'I=$kZ1]rˣ+Ś[NڸW9!@idwv:z^* t@_6!ywĊ٢{zpC⭬y3B/nc*trt,s~[bE;Hɡ85pܕ1jxS>2vz-W#A>^8(:xZkEHՒB: w=gkdUV; >b2|#dc3^zjYx ALmӷff};mJ;VPFW5Jgwrͬ Ô{ˏ2#SjQ N_%W"y_Xfu] shUGY7pO!b4+6y\#x^@r~J~Nx7[\mGN*ڂHfؖkDg |߳cb*zI? vJqJBҦW^+>+ ut'z|<|+bϻQ8{l}~(yJ`֌"/zytq}kf'!{67%q\9N'ҍ%Gsg,}<, @>к\c ohOouM bp7,'.b?Nwfdn A%^7$%WW]:j*7ǁ:whh@^KԹ]vf^L4Sgɢ'=^=0pUP?K%R,)kїΨ^?;RJLQ . {n,;tdɼM-ߥҤx¢;>mr>58{c0mE1AovqU!, ĴfO[@v2CxX)w*a_M%mϴD4W2{@^@O{F^."IR ſTʁU >W$EKrHp塙uJfS'T,\x`?Yhi2 =J/5w& ;B o'zB0,Yg@i~*Om*{x#t2 SeI7蓽d-Tjyrc8MX #=)ϻεvw-bǕ w szo,Vv;!nx7M ˂+&pT75ά)2765d¥⭗a,8 2mS|CĶ^k?H̍A8c#9ffX&'@a"v_/ƎH"1$E Sed,\=LTHp1Qqp"|=W+f澣h-jaV) ^2o7]CC/@Ϣ8獗6Κ=YDTXG4F1He``KT8 GL\}'MKS> ^J.e@/P*X50" >}ootȁdNSIbuT2ӭR=私:ax^/H"n' TμvducL `rᗤQ-D\J” )커#俠Vcs[J4bW.]WbA@y-JtnD|y=(,g'g%EӬ4kl~jW6tې"78: wp91d楞GMkZԗ{R$V bwxkH0 a+/ȧ2|LjPj V=Rc%{uct=ĆfT}{ ='x tcF, /toB#7e:ֲ >SpMx3@/i@jF L&漼?ixƭ/j@~\B&SƏ!!0?= ]͍,+&-6;p1Jf;݉ʒl*;K&\jx%l7PIh')?l331`Bi45@. xJ'T pEK5z͋9EJ³@0tHO؛CĪ| ԽY.RJL;q`; 4xYl1c³! b#?tNN4}e% {Ȟ_Pv%) #}O >bMI t8[f.9#zOH]LGQwQPBXk1gp[u9C,|} W}e,~Z+`9p,»;HRꅌKdAp4TQpdv\< vW=%=$0A-,œwJCp`a*2Og(*4P;[5!|}ct4^&!j!7[ Xi$L 6lp?vT vL 5$uݐsw(/O/PdX!rL#=  f&:~.nF!^D#_ɰ@6naLHO -Fe@0 zr*l&ެ2/.}Xy/]! L)]yw%3\o>ڡSTCpVN_kں/ltM'";-}& j51V)t+ǐ߅%͵υ&tn_~Ew ´я P2x~N 1ƚlSil C1E9`L->5a^61ʐSoVǑ[.k]?5gJPz̹rThЪF_ 6$fFnh7i\詽Yjk7PkC30׾p(#jGh5sy'2˝"Ō=3 rKܤggM&Ll*ds!6pFdO{%7-LǪn!?gćTa]uXɘN!1mu1E9X-0D(NGEw29~&4㕓|M;1.Nhm5J3>=lUFڷe1;bNEIEV`r艅 8A ՂNWrpЍ*8 (G C!1I&=~S[L泷嘣 W^r0h$&ݵ@68?9>w J09㿿o 6_TON6?du%*f408)g6 L!ݮS2Ѩ&%]mZUlK|8hHŬV4]Rٴ`\JP~S&r*?]%=|ZHJk o%*~vBpVPBwڞ YJX8,FBhÕ 19v{W&{?z#$ 5Կa>K>5 S&80D ȦߖA>=2ia(=5P흌-q.V~Kuᇝw3z&knx7"gl8:n b4|6=o9_k BVA"ݫ,s~#B@GG1;W30d,6qv,|M" !*a" 3.W@wK!К"N# m^ wi 4U_R5Өr\f"/( T/ {ge1{0MHqVBedc ]XJZ4P30JFFSU;ʹwDZlk39۫Ӥ,˓ Nok-3㗄6zLgE׉OhGS$F6n$[ =W>0_0ېL_H(]28OTSY4#.OvjA v1KVZ\￐H4R,SuotSW Ikz=S;Amrv:P5y'ݫe{Q_6$V//M\8iӰ0 ?vظ%*t3Wρj{5Q|=}myлg:K5 9?xV+d%[q^*; ήMZU)-y.8m N`@(2G8Ăp;rQ̔P>C;[ K>eϣ@cx.?X9#^I#RBi|V4 u-!=MWڊ]DD͸mE+KI+׌Cs03?{3ӭ$]-dS:b6y3%%.Cn_zE; ;=SB',<Ǡ}΍ĝ !KN\5qŰ7;S{ OoG{7C^ [e^;b{mjwLd~"rRewl2Z# yՔ<)2t(8KBPI"f65( 8Sk+;@48߅p|ߺ#DBoZ*dZ|) ]!c󥳽faN,h 7e)v`a9g?:vƺEu$] 'JL w`Ӄ e!"ԩmnVpP&=ɔPhV;&Z02u,%o@)}7W*ѓA@&NczhX( ""rm-+6C4FA նt;wNkvj F) G$kū'i{[Ͼ:6@1~@Gbi V :CP[gp9u?yqdS3>?K^GjU9|.5w o.;<_כ u#T0* wԭ=&k(G0lyybkQV sFpSύb7cÒ`=^KH){Rڮ5L9 n29-Pt/< ,HV'#|R-@Pۭ_āƫۨITZS)Nh~qfs| 2{ ~P76CVc-J/QiۥX{D.bE|#Sn=H9d Ӳ3ɯ˹e4ZKO5yT}B՞:d73iT4] q\voh޻ݩ]+:b&]jZPg}C&E9(*M| KZ>5!Zsٷ oM - Z"UROJP%r?RVM*:bwbz=gLԇUl@g(e6+,AzM2-y:(>7JA,ď"4(|f e_ X|* *AB,W{`]~%yÐMه=o~ԥTXk 8b$Mx?,ye]x*LS[|0´{TWuQ9-5W7b #%;bs)?^^"C򊝹ؓUb^Y)&-"ٙ~1E7[,5jPT@Ń9R{"܉q7>qrc3H_D`yӜ3+$ҒI_oHQ'#楷* g>_ZN(Bqn%\󣵩9m-A:8w:Q @b>Δ}}d!ȐaBB9g-d+H*0l@}fv#,L읮IDJ\ؚ͵xNQS8} *{e:%W$fg[`+Qc4A+T\stgax'7|}6HVXJ)~,[e#@[Avo32l@̽(u[z pL#O$ПhNp^]?50ߓqoK"sa]Ϯ3'p̡&:a*hAV.ČX r;A:`P>alyO?P;[%%P4AU&rogBQ:fhBK5jG4IO $o" DrA\QٲA/Xs"^&PKrsZKBfﴂ4r^bai@dD&H./%9{SH10 )< Cyubz@piHϼBD;YʖLSR&nrNN 򱻷==s_Bwܰxͦ1ըm *|< 1N`n5|"JLqLIehR(4p&n X_'`@U.G" _~"dž iU+ ~ĒOn\l Z=o/S_)>mrtMYhSP3xn`Yi$pꎦx;P|j+O9e%Ut|9e}lwL:>1ې9MX5YnnbWJNjt\ oGJ^!j=nvRS&Fj;领Qb?~ho5*@D34 \^{(zfܩ"92іR 8 'y> tNsuĊm4ge3&7h:UÍ( op4bk89%=kjѳD`C S83&W$שc|*E~]ȃDZ,d%n#Za1~h><@ ZkOjRb_apܾ & 4CBkJk91wj0,Y; cy'mM򘜓"M͙:4' Kn\VVc|iEE4K^BQ&HfL{^iOZbq(CKwU # Y6Rw+Wda\' SwHs涕yiPҷgRd> ͩ͘ IADj#J#15 : x,Zw>tꁇ4ENQ&;']KKwCau (3.>ox #zz(9* Wzy-M1jްr>iuݜwbue@UXXJ@ݜۓ -'Sh|~xf9wјR[ :qWPʠcڼXRǎTOY͖B+!Y, GCJg8/rnݑӦ@XZj`_cq)G S #0轃nAϜSmU.^2sIoyUqqCcҖC,`ZQj /&/9G8\ƽJ⢠*=6'pTEN1ɣoLs͈!+]\!p3ar}A9>[Ѳ6Ǥɗ{_"qDFZ/@Eg"c k{gСj'JE&SpoVfA\Ijv5wobhQVɟL<2HFEWƱ->-;L>yܔX` _g<F>@ ƅ@⁰EA.9xs !2h{g,iDi{ta|+p-7Jb,g 9r>]¿(g`?@vvw\zg5g- fv‹qw A|~:P "9xUr@l-Ӝy#42ZkϫR%H!5:hOEEV5(O)ג̈́(JCf1,͓' 6p &Ek&Tgӱ"<ص niK) ؖw*TK3e k|̷6Uu{+ހ?˽WZIŀԵҕ\Т%ђz6ՏWKڨ#+#*+ưI-c!;7jl]z (3;YO"1xq<fH:nv#]s;5璒8P&kqK ˳^Ǿx:. -7 Ñ}&M{O+mҷ+zKw|{Lp+ Sx/U-N9S:ReDe^Jrbm9ee>GUZbY =|D $RŠ^KIm? 96nTGTaF'Wl@Vnگ"ru s%3xX<#{W5j`Xm DG "!s9X%2^m~1#POVag*G>zaz2lK!2! cJk/}Kߤÿ[Sj#1 aPq [lvH;BC3Ɍ\k ͣ-/fw5e"+n9Q<rD?IA]fcɂ%5o^Zg^ ӑ3 dhYh$-&3ǜ7ﷂ GDcj;.Ɛd FǨTGE>n%F Gz{\C}\;b5tI./5YFx܈.XehDvmuXgo6R%_+;f&r,Md  aDtZ0,0\q%nBm5H]W^6:8wT {.^kuyզrbP y"!帼EcX6<ӈjSNJ+,4nx\0R !-Us )eI;$ɞ__ȉ"cP͗7K AZv {0M:jY}/mDf;z;| . U4*59XG uo+kʍ`\KRмXpu.?/ف&=\f:MOVcl7yj0 b0<$6+yk;iLA mhdSi%4Am+{S Ѹ}a@KϤVY{o3Ϧ$dy!fC8kMR8\+_ץ MOG*Y!_o  Զ 5 AjcCחLT>ᘼfc8QBKẘTy[7?O>!H'GB䦰,`%4ou$[nC P/AUn#W vnUx 6r}u8T>NR&%W*ӭu"Y9jIf-GeJ.)^N$^'%]Zg['"9H8 pV A/ ҀPW#?zIA ]š*PN5͌9yF۸+g:ӒFg+ܱ}Ji/X'%k|ϐogd:ymb< Q!Nu7$n_n3.Y?xʎ[)r܉a:; {00$%D+ DomN!3@wzp? `i%hlK)z~|v m=Zy`f#iڔJ2}ȥ1~치6'٦| ɶc#qG6jt/Ʌ,6!uy./xԇan. Y4:ĜZ[>NxFYT:xn,cfİ=e3גB !]}74|c9a\bHy%'SuԐSUi3LN]XKoH*yu+Nq4'Ƭ%ɯ[gaaS%<{ȿ*QgsٴJL&B迮t^b0u.Ia/40q#!5;?Dyr l%bܣx1p&a?F=Ƣ"q%_A|!Lzezze,F=fs~-wf'*\^!U4{dcKpH|(ѡC(\'r=prLEc< Erw>;6Qc12yX`*q!f|AWY90k0\1sP4ݍ [?3xCX+iu1dȌW69Ҁ`A:7"aBN}둊;C"˜eڥTmgEp-3v쩲n"ٻ>J*ʙg F[W.?p.X8/^,IH&PUv^[)2oU6_`snTKQzˠMW='Ӏ3,CJ ?5Zf*;2~G~P1jJ*,<ĐqD5"$$Q`cK6o Yi M=+"qG~sN{x~Zaq!7]?%o,]Ί k#tdRpݽ2|Dc!Jcb&é,px&dgtpH~؅OE$Uao \CD [Nkijd˙/ˋ Sc`wWӉZaBsVMK uFR{k-ǓLM%A|s4V K ')8$u1+k!H D+;5wXNH!8̵,T[X~{@r԰|Ʒ"L/GhŽDuE]Ny~JYm3LyQM&-V4񞳥 \^t@D;MwմOD~`c:f>g<>M40-Q}{g9ЏnZeCyJDJ7յާ[p^hQ#5@A bD񼙐ss Kh$qqq^xom'NQi|8&vyԗ:o=8Nbҡߝm0MSr60Wf=n @"&-[P[zL{_ /=PVs"$\xx^Kxo?6J Sوmŝ0&Z&@k~ͼTPD ;YYvꌴQ[nNܜj !$ ȅqHv ?$2= D`Qp{@}* {";WVAfMcO D:u{7E 䴫uKKYvMF?6H/M*5󕑝R|[$IQVߪ0Lpn6ut\{eSo9mXw'oWv5(?yުECve4(m+" l۩n>t8+aokYYo`x i‰) Zr [B@wVNk*{={ zV D v?ZL/Z' -HYiWu‘r 8dTRn6Qki?>7:lO-^86Z秐Hd s8VO{W8~]lPhoy{Gzڪ&6g8OQ2j}9ui&eJouEWX 9PebX @v(# 0YdcO,Un76r8 'z%H.ARg =f|uYz|͔! c<XfpQWK:ZxׅݩD~JiF:8-7kI 5%(¯u%Cne|ވVih[57 ]F0U e)ѓ$Ԗ<(fO!RHI$E4n m 2{<z;E#̇v*W@'q̘,\#C#X 6&蜽 $'~%I>M5= -P & P5]ΩBPøO+*;++S\qQ9YT\ż%h"LjQ^ ͛4aDŽ$ݖ;H~*/T/FIF>9Oj4@ȞܦfzBF &[0WG|^H#^T4QF\[(Qf7pR9YiQ4,PjB}P =Y<75k`CPڍ4\f|(;:?[w~yG=ydcPRhBOmoGM-L}빉zegiG-Pa jIo9kzb:M ,N kn( z!S" Ʃ̣I8=1..pT(qr^FxLq\gb6Q/lVM3:]ƌ=y/RZ w)>&?hkB^09!vm`%zߥ'*̷VQ wbХORpHm/p3riި6$JPh@'>-RerٞJ%k.A PHp,Tb GfdL!'G1Dg!^-U@v^.e^gT6gJ=`d~ AȇNĞfhft9#jIuX\Q&^^ڻ"E՗^pq8p!X)cc1})FWt4.٨(W|XF+a :\ rkvK) mDs"Y[~CF,ۋ?2^'!;)l/'T#$.+qw*WbǦ!QjKoRp~`3yز<ɋI*@5>4"0?B!M d]$Y_/55DaLETtȘf̭U`QN: Ikzv9X^L*tXH)LWԾjqۛqDRiPR;P8CkVQ`XI٨.#ix+8Ww”%7IC?R61tx07w9z)oSHfdAnĺrqOfTߋIĪGa0՜@RĉSG9 v 0&6hdA0:ϋ- [9Ӫmabnm~~8QALU 6oJWY礏n,8P=~y&p Z{m'E PrDK6O?Q!vW 1P`Ϗn8Ӂ.4t" ^HϬPїkANA'T_/,W PӿǼa.et+xǧ/\ApWB<3KpKd~ͧwNHnztGDNqyoB#9 OK6] $v[lRP8ng#]]lo5ʡ܇*t_tl(+5kD(Ut_Q~:y+wH@]]0DEk}/;ȘDǢRL5]}j'N5I Sǐzo_n-c0I99jN:5)QxJle_g(< x| A+8A bFH0B^냕eQ#.cdVnM >6ɛNTj[rutw?"n> ^zH46 =8MX>dY=^n%fêaq"iofBWc_5'Pf!=J!2 ~Rdr3Sy }H댏! lL9Wǰz5Xŭ<2V!3HQj0Ux]11seV{3 y8^W0-ÅiQ}G7n;/ܠU6>z$;,jyҀK:$j6TSc8иwD{Ĥ&dU݇4+R9ںFn$ƨw^!y{Q2%ݰ+{#|Sp3f77^s8ˇ(nIm7fNT:RNw4S]Oqˈ37 -A q-N 9W=YeHr ӊ' o L Js1skh]/i8Cf5}7 z/R0Q1ʹ=N8UZn&;O p(=1"+oXBRலj'"J4i!IWA4r&RWE=$J]rUԣ L\4`Fn1VW;y<.6Ez!2#Ed[4Ј!s7nwD/ /O#V$[1(?oDܸBYUj}DSL/6cxhn#mS4}̕qLg#Nbp/QӔ=0U#roEkضunB?T[퀫;zC3٢̡x'U#`);lv(!pTEeQcw""g5BeGikN8;^{)iƔǧLsЧ{Bۓ@SC8ǠG2>?7KEOsx ZCUę'x! גVGO -A׈Cb.F]O~XSq|_  `ucn9XJ"djHٞ2^Q[o5=3&8܌ *jv툋هb>8?ĭ+.kb69TF=[XKH : tg֝w1LuraaD,hj:C+(`PKH[C+ wͯUsP "ʿhY7w\bЏ5޹"'CvH|Yq'M%\{ ;!C%Am赅a|]LG|BVA0q.doF_|G3WjjDns +&8_ݙljp>SI6Jv!-ʞ!w_2 2 cy#GYX-r3Vrhhu=a\?~?Y\L@`Tñ=GC4e'e gDg6smnE k3ōG61 dZ.q竒  bF80syVg J"X+"-4B02:0ۉNNWNWQOix%^]0FE!zX6 |LpU88q!F+u2YW\ApJ]b|Q_K#>@1 iD*@:'<6bpz3PH(v**KUȓ)Sk& `MG\+* E qATF2(7I_&f~n) 9vj_ZZT]9h((֕EWbiONՙgB3BC88]HHMno}6F=幤OGt3ySvrkPCJ9/"LdB&3O #[bLiGQQZ =mOCo)5Gd34`C1`lJSOt+T_M?KcZۂ't#GJ{1=a<sG%NPmcss4yeh~?~݆Rfk<;djxkqS̑pQP,|3+" 呜` yT {""cĒoEG/Dҭ}<0I32{?G