aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/develop/check_flash_bbcodes.php
blob: 5946f685b8acdb39c39ea50c02f05d55cf3d7af1 (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
<?php
/**
*
* @package phpBB3
* @copyright (c) 2009, 2010 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
* This script will check your database for potentially dangerous flash BBCode tags
*
*/

//
// Security message:
//
// This script is potentially dangerous.
// Remove or comment the next line (die(".... ) to enable this script.
// Do NOT FORGET to either remove this script or disable it after you have used it.
//
die("Please read the first lines of this script for instructions on how to enable it\n");

/**
*/
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);

if (php_sapi_name() != 'cli')
{
	header('Content-Type: text/plain');
}

check_table_flash_bbcodes(POSTS_TABLE, 'post_id', 'post_text', 'bbcode_uid', 'bbcode_bitfield');
check_table_flash_bbcodes(PRIVMSGS_TABLE, 'msg_id', 'message_text', 'bbcode_uid', 'bbcode_bitfield');
check_table_flash_bbcodes(USERS_TABLE, 'user_id', 'user_sig', 'user_sig_bbcode_uid', 'user_sig_bbcode_bitfield');
check_table_flash_bbcodes(FORUMS_TABLE, 'forum_id', 'forum_desc', 'forum_desc_uid', 'forum_desc_bitfield');
check_table_flash_bbcodes(FORUMS_TABLE, 'forum_id', 'forum_rules', 'forum_rules_uid', 'forum_rules_bitfield');
check_table_flash_bbcodes(GROUPS_TABLE, 'group_id', 'group_desc', 'group_desc_uid', 'group_desc_bitfield');

echo "If potentially dangerous flash bbcodes were found, please reparse the posts using the Support Toolkit (http://www.phpbb.com/support/stk/) and/or file a ticket in the Incident Tracker (http://www.phpbb.com/incidents/).\n";

function check_table_flash_bbcodes($table_name, $id_field, $content_field, $uid_field, $bitfield_field)
{
	echo "Checking $content_field on $table_name\n";

	$ids = get_table_flash_bbcode_pkids($table_name, $id_field, $content_field, $uid_field, $bitfield_field);

	$size = sizeof($ids);
	if ($size)
	{
		echo "Found $size potentially dangerous flash bbcodes.\n";
		echo "$id_field: " . implode(', ', $ids) . "\n";
	}
	else
	{
		echo "No potentially dangerous flash bbcodes found.\n";
	}

	echo "\n";
}

function get_table_flash_bbcode_pkids($table_name, $id_field, $content_field, $uid_field, $bitfield_field)
{
	global $db;

	$ids = array();

	$sql = "SELECT $id_field, $content_field, $uid_field, $bitfield_field
		FROM $table_name
		WHERE $content_field LIKE '%[/flash:%'
			AND $bitfield_field <> ''";

	$result = $db->sql_query($sql);
	while ($row = $db->sql_fetchrow($result))
	{
		$uid = $row[$uid_field];

		// thanks support toolkit
		$content = html_entity_decode_utf8($row[$content_field]);
		set_var($content, $content, 'string', true);
		$content = utf8_normalize_nfc($content);

		$bitfield_data = $row[$bitfield_field];

		if (!is_valid_flash_bbcode($content, $uid) && has_flash_enabled($bitfield_data))
		{
			$ids[] = (int) $row[$id_field];
		}
	}
	$db->sql_freeresult($result);

	return $ids;
}

function get_flash_regex($uid)
{
	return "#\[flash=([0-9]+),([0-9]+):$uid\](.*?)\[/flash:$uid\]#";
}

// extract all valid flash bbcodes
// check if the bbcode content is a valid URL for each match
function is_valid_flash_bbcode($cleaned_content, $uid)
{
	$regex = get_flash_regex($uid);

	$url_regex = get_preg_expression('url');
	$www_url_regex = get_preg_expression('www_url');

	if (preg_match_all($regex, $cleaned_content, $matches))
	{
		foreach ($matches[3] as $flash_url)
		{
			if (!preg_match("#^($url_regex|$www_url_regex)$#i", $flash_url))
			{
				return false;
			}
		}
	}

	return true;
}

// check if a bitfield includes flash
// 11 = flash bit
function has_flash_enabled($bitfield_data)
{
	$bitfield = new bitfield($bitfield_data);
	return $bitfield->get(11);
}

// taken from support toolkit
function html_entity_decode_utf8($string)
{
	static $trans_tbl;

	// replace numeric entities
	$string = preg_replace('~&#x([0-9a-f]+);~ei', 'code2utf8(hexdec("\\1"))', $string);
	$string = preg_replace('~&#([0-9]+);~e', 'code2utf8(\\1)', $string);

	// replace literal entities
	if (!isset($trans_tbl))
	{
		$trans_tbl = array();

		foreach (get_html_translation_table(HTML_ENTITIES) as $val=>$key)
			$trans_tbl[$key] = utf8_encode($val);
	}
	return strtr($string, $trans_tbl);
}

// taken from support toolkit
// Returns the utf string corresponding to the unicode value (from php.net, courtesy - romans@void.lv)
function code2utf8($num)
{
	if ($num < 128) return chr($num);
	if ($num < 2048) return chr(($num >> 6) + 192) . chr(($num & 63) + 128);
	if ($num < 65536) return chr(($num >> 12) + 224) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128);
	if ($num < 2097152) return chr(($num >> 18) + 240) . chr((($num >> 12) & 63) + 128) . chr((($num >> 6) & 63) + 128) . chr(($num & 63) + 128);
	return '';
}
NJU"MUjf2UEy!Px} o\qKCG&Sؖ \ Ss.:)>t~k6-}us|%[`(cA\'ar'>;6J^ZCq6v Y/%b6P'X"(^,li6 llǢ> #$'7e^jm[@>;u$ȓ":|1d~q{$o\jE^1?d85@"k'a^JU[#ZZ"ʿ䋌;. de{Ɠ52jVRQ ZQ(Fr#|'B1aw͎u }8+cW%q.\ ޱQqja<س`C GD 61I%@v}_rKtA\u䥜ߞI9Z.ŴI| #=`^{&٦!޾;89GUab~HxsF-R6 @.LjEUCbӯW1d8%8&ٚpZml|$CFe [vDΝuT o ,@.A#.~M=%8.F&wLMӅHN Sep2 M2`xa*'ѧI'!&*W<.H?Y <|; Xy փHDOQ$BЦ6-]_9[$Cvmz]츎#bDR$=K5e!@)a qjU9 ^< ŏ\o8:BRwzm""@_{"W}VCBFt|f4iB^d[44t|1n -`Yd 6u-?ߙ;{B>:}<̤ٛ[8fI *cfju8/d//6g^2=4K/dhB+w';XAVdǡSrU:tJl2(<9u9jBv*Љ0=B lA~فJms9[ 'IZL̈@Xr96W,[xHڐ;dIB0zzf;k#-EJsF\b隿/h[<)bE@w"8& E$>w:JGKI %ŪML-+7oS~hYDeLP@b|tiԆG9nfWJ@ B'@~z5c ,=U 4j<c2F-(pDm_%ĹEwd4s09jb5o}#K5YNia9Zutgօ󱢾O0ޯ9D? ;r5mr0T'qy!J4% )oxqd+cyƼmCRM+vwY_٢礈}@$nq~1кU>v5BN/ B3dCY`5SV}u"黑sri׳_Tڳ x^Q1 5Zr /bO?fsm_NaiN8`Z#@ڠdElҲPgK9{a,[+-xHh4'ؠZ9!XtX HctWclE* / H%,lpINZʏZ=fC#X^JsRp dvf[JG&a;e-IMdkcEǃ*3|ݓؠ$g\|.J#F&F%B&)o@C{0+ъ<*Wb-F%do^(VZ0WHl SD8U]ĺ8`D(REb^yQ'\Ghݵjb\7U)ك#1*za/߲8B'^dF#\dgGʌr0^Uy6`{/޸:k/ Le(_)Dͨuv ~6?۴G҄J) NapxFyt9bA^rbTKw-h7}H,-ećըZz݉La/iޣ Q匪!6_vըz5Wl9+r#3: +529gp*bjUP+ xDH|PBxajŚ5MSmۼ%'\Bj%<3ظEĮ) wiA8f.E pVY &y%I̷΄=ݨ@HG6U2k5(18@}LPEI1ש]DF'5V6ΙuHΗ^œɬnN\$,S})٤$$fFX^ W Χ!+DM^x<^HoQS e%9~ϸSęO蜰ՋaZo|C$Iʱ> NȴGI|+>_[I*rxKr] (C]e(DCP4zIAvԚ#tеokx Q+RHxR*m7*rPU^;D+ Z#;^_`WG>@\4 m)BQnXTv }3-q$[ | OmsG%4u#ge6hW'VJyT7s얇VT"9^~8ŇPz!6~@Д\*nRf\:*g/8OŸr_&QA#st)d1Ɍ֑F0446 7[Zc@8%$ĴGMrV^`2U E+;(9T{q@ᤉ稤H{p-j-C9CօֆY:ąw<̢3@7alXmP(F7W_l|ds CӲY`j4&̚e͜5ag`B`t5[;rB{CYuHxQjyP&1 >;#}Qe!EP:d<s8N^1UU:>Jv,G&mu؀~ qn Zրݴ4WOqSIFoNF? 8H~hFCAKzԾ2&ʽ^ a螠Xw?]1UqBg8.2&WT)|#זpp2?mm즹aS~@8t=y] ΐjvsQ:$)7mfkDWw`>RѾΎWzkI_ű*R/g3z%41tNpKەN O?V L6;a}x3 IA]kQ y,ҺzcC;ֱY ndH6Gk!rC) -5uGK%[,N!Ry JL1.;>8Wӡ b},_fM[,Eb$tZR4U+O4KE6|%LzRf|obiji "5D̿>*XJP).ZwY=a^cE'`e`ЎGd]5g)Y8<'DݡXTU 9FU騗L{NCB~6-Sk wRupEWrvq%*-@).gv^= 0GYW^{+u hg$`VJ_JgoofdWs_(R3f*^&"'7  ]#T)+6EzO+\ʂ'{VN@7RCʎaF`Yl35W, 8Pl=, CCƗQ0 gI5VI=PT[(j¯@4K }*Uƙ7!.lwk\ 2,b 1#8֩;Kk?dAR&]oM óAy;LnM|h<5v^DmWLx$*RPCn!8$_^m* PFh6ˍыU" M ˟Mr^3 ũIz0x`yY-+QH6+GT;3̤}۹ f pgLc׫_N3.'[`v $K%gu%|GTZ\  ytyUP(kMC.2aJLЛ.C­}V's<^{{?c{x;T l$%>\1]?P ,X{pV'4\ gBF+CgL՜OuEGrh4Wsg"3ӸQwJkbUŬxA7B3UKejs8}?L r}B %oIaJ⺑]yT.+;|*ķjruˇ.._8 tsq[bidvϏ:%qF]P={gv%0=%/,yaezovtfezq "Z7ӎԱިRR#B]ZjVC ,i~O"\98觸Ȝ)ѽm lv8)8wvo=ӻTYrSىYj.%t;{׀Fe:bY;;#j4TFdEgRB(v.BV=^:p|XJvȊ o$T9~8wf< 9:aJtл^@v H g:WZ8hT HOi*ycr%ޔ<Dz q; (6k &D=LL{xd2Z@QHN;q[xnqڙjNKkP O^dzQV[-#LqEMR.Q ph>֖ e x7khw){\ W*? o"fXq!u(c}Mk-0)9$;J:4f@T8-k3:F+V%xʳ`IlB"C(U}o`"qkOntfUpKevsP?wFhⶡ zFV?֒m-F1.J!wq+QY*t=Ϊ;+.2l+ػ2{]{.lgtI c=3X")ݖN+˟3.5TKs>Oy>a"p{Rש,nOe8XzR7h{ KE{ 9º-3BɭExAImyp_~G]UK]"cZ]e |H۔܀'-bRퟪoY8v(5J!KChuǜ#MGX] !SHAYo:T~$Y#3?pAa6MBWl!5U̹a!tYn ̺Xiᐱ\et jX"@1^ˉW?oa(`=@8S`Y_ ^L'7wg|]|\şj1:6߳<q;@21$c:hvK:F$DECA³iiL.Ue)YH=(v)ۻ}JQO+]E[U|7' xvlQ>2AGDZΨ%  Q/BC|LK4l"QȚ9? qm] =W<w-bdgԗ0ҿ*u[R^lʞ.\Oj3r7 BފHoc@PżVJ!ۋ4bq? : WÕ'N/ٳSUNےvX0% ԩP㗆ugE(diWqajeOx|0*& Rh?_b:/\ŗjmS''DOM'<B+Zć;(oTiezd嬐~aJ>$ !uGLZϒg@f@:#c`}48^m=1S}mL0QtK br#nQxM=TL+v In4?TSRZR 4|-u'KA`X=$*6qB B%2lkI1td 2e1QǑzYu%i)uQ XOvPHdw.yf0ܙ\w٧d11ho`4 yuo` p$~A2=T& 32883@ENSdY@Ejq[Sa{Om;mxO7)lCHˋn"ӻxպպ>/kH\wna0ʩ~N8stjMX oeΏ2V{6|Dq 6qҎQ_*(P%7q 9 LVC *$]&1~IH !btHG`Rʢ5M^.bw,mpo\du7*@=/ \j"د;>f'[xސzLO2b,X^N7XJ5SiTY`kۧ0Ҡ&!:j@>&-Î>GF1^-uk-viwwTMk]&6u_ׯgcQ-\I Hh sڴ'}{OF$`.3MĤFp̚0 z*bb ! +6TօɨXcB~9EԠ5bp_n/g}#wD 2FUF^ ^ܸ۫߿5@Y]nb|ݶ<͝Kc@Q$޻(*Қ&Df@VNJ.uRׇ(}+NZ=fpqe^8u$=NK-E4΄]_KRPJ_Q]bHE !~Pѩ3"̟R-TT ToMC畂q(O?ϡ _h "5Xk6f*rq ȿvAV"oBěP/Dɜ̀ەF)L b.},2%7W_Z"kNs$GY8CXBS*kI _ZyXJYHg\8.[L@V̚=u@~Yܞ]@Hre ac4QpRIbyqi {.X)]umiePa rel ̿JuwER]Q> 2zzztGAX뤵U;lـ$!Lz2GGmbI?G7d@~Ps8+ G$b¨4hMa$|X˗Ԋխ X`+ \W#tBRlcPMֽ)dIܸw 90;e{^4䎕D]5i%('m MW+⋣vOP=uYO휉i)eJ@t6AS{@'+xAD(̳Q-;k? r6X-qUJ?V O hǯ8"6P=Xyp zZFZ- : d,;Wp@{W/ɠZ$ޢv桼'b;bUmBăR 1OSf-uYNO܉-`dh녒-23v]׳l+`xcH!C&W(Ũi)fI!WonR\$] '!DakEKы џ!]?oIvLhH4pkzx),A, yK]7#R7X |^!V7~qpAQ>~ Z ̫_B~L:Aq7Jü^Ml Xp gU<Х @u?,jTMo(rn|?.uO>E\^WV(ZU:/1z˪}̿869ŞMb ;P`<)TtR3o(d;+}/ -TMG4 fNOgyaq^zn閍weD7h {MdZ9WIwǾժM=L-XʿR/ 6^ ZχްX i,yX?dV}Qu|<[喩 T1^C$03J80Q{*/%n+z$pQ `'3f>FQ|z\CU7 -F Y6^ }{u}"23^Y+_gPt~w"EN .!9;B_E EJ+.F> o4L H[[ۍg'oIad%O{;7K)%neQbrDQq(Y&~nhI2U(a P-V*;+|h1ڛmRK)+HDsm]9؂}Ka - ƱΌLibq(!~(=5{F6I8٨Ѓ:zd'2Z6aR97n?@kV`Q.EJ"?h랮DӰy#I3 ;>^30`#d۔/75jJ:c z)4$D9NUȟzP~:/h`HL+ JCIP뺵I]BoXjhSzE?n^o@Tȑ4n ӫ4Lp1퍿'DdUp ~gNߛ[؉S }Uso9q2AKShD1]m}0SOo*7D5ν/uݖr!Lq#@ƒB:/~}w>&0rJГqH[F]Ba*#!g<.߀ 3.s\F2zOhENYu _ l-6!~y0SE-KLoa\60΀¬AJdCt,8ҍB:2f.r13C[5NAQyjs_CĢ~L ?46-l~ϮEqx&a]ͣ`i@&eܸv 3^mn#$hUv;[ܷz&pԴ);{~̢ρN/6اp%k=IV:QKOct`H؄R/\z0ݤI8[1=2  I 2"B_Wh\: OM \vp] [vR?&Ceh!pN8 ZkL OUw~]򋪰;댤V3 cu;S솱ҋD;C4{ݲ ~RY:Ƀ2ZiLi-9da$5<:rE#t qPxO;ebv@'C} .1!9X>@]L2UDJ:sכ**j 'R"~[~jE1ݢ6vݒы%l4 崣$ Q7]  ܽ,`nn^W4[u"Q*SYíg<=nՋ4۩0Rt >%6/n莡%B(w`nݬz?U6]} Tލ& UQ} # pD;!ҚgWӴznBUg%;S//C@;T}0ҏbH iKRp1W>]-MB95<'c/QSxzͷ/J섟mBk$ٛTX" i6\`(F3Wt$ ]Mݸ/uK(%P*\ܨV6*8{Wu>c0 ?AU7yZXg& ¹ܦ \«yb )&) O۠*~Ԃ=Ռw'|”gJj:t'qc3}d}߈Yt.ge]^lMSDc]U Tl:>Cdi7ܥ[AћqiYAbh8ا_! xÉS%[{jGk!zR9L-|%¢1].N$Ļch򈮵2Z@-!?Q'Qzfi?+fI=(Riꤼ$3#\xH[0od{adBYs8vT]gesj_`Gr6aFϺ ?v sH|o!5D԰afn G}+_*l$-~ RS 8[ɶxL{d$;KQ6^[ףMpAx_Vꅰ ]*#52In=uBu*i M;~idĤ~2af erڊr@̷Py$E1a.Yg红2r;^r1] x㑭LS몛@=PF+@&=q ۏ5ӵxtҷ2yGoJ+!H,?ƻ<h 66zUCLh2C04H/R}i&?G\!L!͌zEĮC ;[&W"ǥbʻљT}@y@,Q%{4IPEn&U/3)ZdN1gw;J d GbTp=< =ΥӪR1a/PQ{m1$Fh : D5:ؽ{:w;Xl̲3'k'!ˎ ]ɖ7[}C~4IҁۃIb.@~nD0% oj 7+bI -65coZ{ tų< (#N79?sp%Jz(<%L4 ]AŽ8vPt635dc ,aZ},r]~ZL$!I'#i"ds|";@."43&?2)`'Fty'JT, ѣESzs]!q~O.0ul^ЃlV'hpPޭ"AfKA|wߜ5⋮y Coq9tH!{qф?iMCLy)"a;;҆Q Ot/F3ps:WϿqZvF4#rze[j[>V>I( *g40:]?kZz<\6IE*Pi\P(ɷG$ƦS~03"ReT\N)ﴌI/75!0Zq`H.&]2q^X  GLU0*a;jFJw+bs~ӅH% Q:i7lİoH=H Wxaw˓9:{|10z1R]iu\Jy[Iiafڨ\UOnJF%ssy@m̧H>y6 C#Bx2F̶?PqH.lqD(Em%ʝ{3%$o^=+wHc!n 2Xj᮱*8Q .*z+'3@QUD; CR5&ru)Lk@iN} ߥXUZgr Qu縘 (</آgTqp&5kܛy_̢=T[`+AvFх@|rQ6؋E,wQ~=y?'iB~3+',T7E N|pqa{ ^p=u,FAĔ00n\Ct"ڌ!dNBGQG@#z|*r8߼D\  h_ /90LQ; _-pW%am@>6i#E\`SXA`TJG3VO)hvr:&4|ZqDp-@!kCjkF6xsiⱟɛ@>F<Ó96:? < 2X9:scc(W[Ot'C%;hi??9xMqcD[euv6_w@P2JVe>G$ )FJJ : Q6utx<4u*7?@s: 6)ޠ6PK[E]w(CE;FhϿouFQ&鞩\`^}m(a+<+UM2g \CY-ȓɈ !o |M|Za#Eߌ̚yZ_t9 _3){_)^c:Jr3ɤFvJ^r X[[TVbuDaN?7>{-.9 ?Nnt"+i/#}ԎŃ/}!9qsՄũs6 mr50W-vW8ʕ;|?\~?~AnoE?2[u&Su,K" Wl m3X8 v+waPv"'ވ}  VhC]g+Ne3=_&J .2%?l颅i'CU\kZgw1VyTNWn%^-, ێ эqM'[xմU &))akc61㍾&kew5)T[4@$u޵NL?IBGN/ *fIR+._tQ>$GD|ɿ-D"iT "N \^bg'I(zY癴Ԙ)T{[7=&F2'/4|Q ZuWdzc۹‘C#v|7ttYKHn-|uO *4µcay "5 9 )@#+0Gc0A hy9U`6mpGS xY9}p 6i5QY/N{Mz+~ ?GL2!~z D@2%Qf5D,+( }m~,XZ345«3;U)ǺzڬLlҹ>r5R>ϼ*(!kni pw3+| >0D9Ǟ$[q&'8f jBUr||TiPŽ=Unu %حv:qănHTi1Dk"; c<#tP )'TmyH_TpGtKe;Z1zXDE%w٤DAgaK_0+hZ4gxBG|.סMjv]}#TSmB!X;%?ͮ҅3`']dja[5O> n!f,Y` uYAn_ôL$0w_J$nOP8cƛJHhYo҃aL5~l$^ṟk@(w/Uv0?NZsJi]:/ .JG2y T ez_ɗ>m@jMG,mUKdn5)ؑOѝDq8z$cP͏HL|%PǡYA=?P(|Ue?NnSZnmVDJ1 C)Yrnə=$-O% փxuܑ:L_ p9j(l9@F|z]TqUk ύ^l׃MPCe(%/]4m~1C,%˸)}iR.N^x?|=ys/D-H="~޿]JoIo"R|o\ j&{>b|1Mj <%~cdMvڱ*3 X,ٛK!xjG 2 aUJa BR5]:T\-\?_g0fX+S9Sf㭠)^{OM?ϭ zAWS!-B*405@[8%[zUW<΄d&ۦ󰷼ɢO~iFp7ewh틾Qg¶5"| k=L 8sD~*41V@2OS{cm9iG' A 7@={*mxN<_ 柾[Qu ˒=:|aP(wsW -k3GsbRkj4M_=cW$7V0Sϊt%/F[~Foy6bpN V* Ir6 S~WG㱦Y׸<>("Tz{ Ƹc:s"c;yaaypgA2C3t[188*/2-:=8國dWL |\oT<I JoDF@6[iVDf.ao ZRpG F oȐCg"`<lx`ֺ1YhY9[V<׬lG[&tqC5nSs+{ՐKΫ2Yv$0p;*3GO 2 7&>CuO҉PkLq,LZHzdsEEAi`@Ki*:jAWųZBA*XAh\|o/W#\[@JuΩ0@Hty(UmYma.? jXcH(,2*HD]8pvooܟ?| gAcDipKdY%WGq*- 5[uT0XQI)9`&L }:8_oh%|iyv#*J4iS\<Kmˎ#p"ꛗxv0r C %XO*EY*b-_G}!}JO|ƔV­0v.{mm4a #Ƴ71})nߡE&xͱL:**a>!:lO񜎝G5  dSZ8mb$[LOkkjT;d0y"Y*a,eiiD@㈽O>+RC4]VY Ȉ0z@p=]3B,I. |B%TW q6 ۄu sdbQu7GP>5_Rd_U.E"y:&]W<0s2\7ŵA#Y\ nJ ˌZ;,=]"zbjH*6SJs irFqݘQ1!;&^ۺꍽ&v]_JLP֜W+e=X]3˨nd]7%Q7T]8X~etX`f=$C5uxֿK>-T-P쿑ߒajD'{=R&I޻RȾl60&Tkgp;f[+tǩ7q+=GĎ8icDj6 z7SP{2$ θƳy8CYEak0z\%%eLS4,Fq^=-k0&j*%O_Wv[n V4Z50R5u&xj ֜U}ATv-"A6?+9C8;5[ Ȩ֑b mfSydƟt3isknr9! {wQ3[A,P`JmVo؏MMgJ<")*J^#HMJP9r!᪚@u i02Xޫ7ڻ"5>7)L3`R) $x-$c1˖H7¿. OK$7c  sDgȈ-y4IljR`agl>8f(ri. M1jCLO^wpC`EFAmꄘkNV,Uj#氵l\y-IB=Z,8qpWh!鴪mPCy#d%[YbI%l%s]EM?r:a#{*fT>\+!w^? `ri qf%Js؝qwnHGz:8nO #;FDCyF2>vآnwʼnk}WW+jX$+񅡥d%WzYnIqBڦR-df"$?>qK<6hE fo ?$9h q9 ,-D5jnS,7=mШ<4_U`׬Ö^А\ϩPypsumj[Wq᳓!|+k$~+Qii⣞d:k{ ޾`G'Ō)A;Z}|oۚXI3(~T7nÇ~@A[dd|_lEqф&}ot4{JjqV5igC=9"ME8.\,С55Poy_mqpE`ȼI]Rr` hO_b^a jrvL^HZxk0iȜKD+Bh0R^xu.#= bqKGbʐP5tN-"#}cq\r>1P9RZp22.g*r爗 Шv wjXj@idSc3ٳMAcgd}̷@^8XXDCj9L:aJ+vI%ہsR_̀qzCO{5yNϒnV@07EA%\0?.x6 )lĀ֮mǜI9'7B8Q';vujNcA~\@aK'tUnvH0/NIVtpǶa!`ID饚n%284_DKTǿ`NNaǍ6n|E TZ8?NxVZ}[Ys@ZNxQaK]znqXFi;/REf'^ԏN6_.Kݯ`Yjhǯ|H V7P]ѭ25Iox܅| GrR)1.8OIѕ6)+upon[*DOyyط 6s.幷ci^>G!W0Ơm[!h]?LhNXjuB\8Օ\9 Ǚ!]K]8{\Y8!8ݳ:1|׭iԦ˃"w]na4stWLC0vg4vP.;gq2rV%ZdizQ ncک.ѭWFa'> PUGP3@4>>+i=ǻD]n?)9CK}5N>igosXfYͶĞiɚJ6\#fq( ? hF7{%C7ZV, < A$^o}zC"yT ޳߳rBzΏ)CTwa>t @.uqNtV%ѿc*Rۿ4Qw][h'4 GSJ`|6@l|pM;+%{yb~ex"9Œ{Ei=~/)$@oFʬ!VkE.jrEzDC}UX! Egk]"kFgp xJ9"J'jJ?s*3P9~\"&|f kn%[lߥUպbY*U"QIkϪKJpa'_[X׉,j\gTlE[NkbT>@1GL*%6{ߚ;rՒ'hXy 詫.Y)lϩFO Wk되#uz𙓶N|(Ĵ9ϻ4Y}q{iSapixuS-GK-UtTpiVi5apM_:ILͥ3qN= ؉4C#F%Pb6+uJn.qZC\P  kuUQom:9I/族{sqMo^{$| SY]:xCwE dR q٬}l( 9~Yq"mMڻ6[ P=oHPE M/}a0Kܺqv"̜+ Pڿ͸y0,%3Vjk:Fs/WB6# Ɲ,𤓄c1{-Xr:_λd>l*Jsܑfn$'G7Ù@B_pH߯h#))sRat;uYNc|L^5OH´ߑ)B1:mkꀟ# #|Qt͹Vn jS™@+V~*Ϗ5LL5*ȧN3||fΕ|f?Z "E⚿=us7>Q7NЉ ׭rq-%u)N"۽'GWX7n;ľA5C15HzJ5>cGK#3;aǟmΕ"6֐o% &J.%1a`g*w#еdBM$|U7IrcR|T:gSIt}T^/a+3 J;X4h0zw^z~BK=*=z^}<^g+YϺbf5x/Ԫz)ߑN+Pm8MAPa8V(t !*.(beY0r;JKb;*ULj5{{fi W'78Ylj q8)t..\OIMEPQ:wy0T0 #T\\[TᘜE,*4vD2= "ojM9-ۅʬׂ`XVz|=ܱS o!ӄw-%1NT@(P9ÊG`o bUw⎨'i~ZƳFYC @ȄvO@|^MWCNo1#q%N?B#6/b1 xQlŽPTyýN" !n6x@)MRzM@*?q2!bw-AB;رFהԷDc W:P|/)¾yS ѿ)2;E߷:<hc')jLÏux)NV//zRN'dcZmMZwk@Cf&Jj{n үyǙ 'Yۖ-!~r)tnU-OЉyDbܱVB)gUz}%ɢM5׋ E(=nha.|$tn>?vAZkpڵ(; ߬-{Q\%9$̙ _tѽ&8bb ʆ]C_rޤ&þmK.Pj-6߿w2%Qg~><͗'"ZL< &7Sr W5R%=AyE\`d2WcNA&I#ؤ8EWy\"`pu-*ZD'ȈI'- 0dMgpJ6ĚL4Os4}Ըwy;gY %J![mԥ9GwʶpVu_JGCM؅]rDY+b״¸5XΓS@5VgӖt)"/1{,6B 0% iUrj 1Ra قm9ijr""+;㶓c~@@OŴUɶך>#n@HJ\p|S"$; .?L:(/d?c&F00Hk,A(( E5}"7J Ŋe 1+)L/F'@I6\D< X{\뿝6j i`6++E24PCb|J)x"ؽe@=ѝ+k"?'?#Vuδ =T8Ld쒕a=Ot XpN޿RsxDޒMc!Qޭ&W.W+=iZw<ы[?*]Y!w9>y?ӵNnڽ~Bef6Vr*u l#o}x2Y3vTEEʋbXީBd~7IVֻX08S&L~Y|𥝦~!.Rw,tl3d}יOҫʣB@o^%f?R3OBsk˄6U>^҄1/}v!jLq< 'R,6 8V a@v[}o\13M(z|l41&]`خ3dHi1̡?R-f sl{cB\o/||e}0&*ABu ޮФhh7"ЮD,HC+p7Gr叨%BQxV5ewF/:C\91&ߥVJA8+^zjtH]=T2m]!G!\3l!΢cˍV̺s7bWyR3@0i'LZ}BFl3`T9t+Q8S{i"iBuneYq?/IN*ߟwUe]DA#ٚ)Wt8C΁ƹMo"Y,GvW[(kEɳNOm*Hn4E#c\g՘mW+)u*nyHLȸI<4[;~Opb7s9djHEbOb7D *!( q qہ|R^[O-e$]l)wb޴P!k>/#Kh۾s%6$ j ^γr%yB n<#'&h :)x^aEoaZ ≼ɯ%h>ncB]@ %yMn//TZplYuD`jݵa*W9S7 G=t%#`Nr{{MW.=Jf?0p,AT/nD4&VllOE,/mܔOna4xcb5G[զEp Á\"Z;oU鱂\6⃭oʖae {vFe)wX&o~3qYk=ʥTaa^$o2'Fh DN]%2|Rqaؕ}*J+U -%s\c - |qbZI/zԿ/ZۂK|!BgsV,&>B qEZa11sg.W? rf#%9+6:IS+Uel,3pF(pmH(ֻ:F^=KCtOXgdu$ WzS]%p\ AmSn?eP $W0Ԉ&6!Zg^"tqPTda-%H2R1㹟8,`"*fN!Ks9ݫ.9%r=KdQjff3]_&삤 {UsA{CۑbC/O9a0, nL[ MIrЫPnD(qlI 6ax LL^1=i*ۣE|m\ (Q|/٭J\P0r|ߒT (o5`UzFBBb*G7|&.A+8 'u?/09=k`lQfH UdpN!/{_. 5ڙ`s>V2`di˕ʊd7$RgaʪSpRq/&XKGw1Pg{ϳYLJxLm#sLl >cdVI?>bNwFTd+D)۰K0*jIeV">Ia9L~3̀2$l= Qqhp5a~M 9~u1M_lZMF-sr({.Z<3<[rdQUa+뿡fݠmXBWja ,rŸ;aG&1K7N=S=uB^!Wi⟛=[2 |#L|OcsA~z@nϤZX[!={oNsu(&Z F /etbXqR65^Qk;03d^ 5jaip eȀn KYF63^{ y`xԳKX Je)zhBHǩGӅ m$!7sӿ!Lg&\<眢byZ B9T+{}hhN%vd i w曄.JEnssXag~'Wt?ӼЗo953&[7iQ3_8[ӽ/V}y xD)pS(Beֈ/wRN(Cbޮ!NeJ`U(yz7QA'#/k;)5 >F\?MkkRs֠ɨгÈ dbqA|]6G2UlI!3'1qs1kĪEܠqk {zckkj S>2>DQ|GB:-|?mOwE4g6Rjn+66+_+oײehwL?_D ںNv Fo3ҙQ!hⴺ]Pw CƅSIϬAW/7Mד M2@ҠS|H`/9smsO];OEʩ?VhyGK# ='󳃡`"y-Ьq%.F۬W%C+ %^&OW,#h:i`sLJ%}{"*T!22ܢ2 "]D=x:v?ּ >ֱי*A*wHAp1Ϙ0)yәGq3x !nZyOg>O#>ʼ[Ĺu6 K |- j"F6hAaw'Z;ΤW,32'_] *gR5xN/uL(Q99Jʑ &<΍:)65LLh8_Wb?kmUJj yc"h%K>7qDm!ǭNR)F`3*X k'AU?Q_V2]xYvtIO_ He;o{󽾾8|ɤDUB/3p+su(ގ$>0za vMGP09IM~h txUhR|ᦆ6؃!lbϣd.Gy=M]zb'x'Јfw,,r:E} Ha~Ƴ~́X۫A )/JV\k~Bhv;ctņ)kQTSfA+?oNΒ#OA/K mN?TuΒH Jh+<8_h}^!x|y6*}=ZuW&(QnC٭W:B=;OMJaG@ȏ2gvv5ޟ= ɂC hM'>"*1L@ !0G [+e8Xl{vтêf,SǗfqcXOKb${7^' %XYm3\&LluTHU>+`.^c}IN@-}u{"7/HVC+9KJ-n^ZeY[=&o?f';ۭdo_vM|wQbV5V$K&FڐWi6Ľ \X4]0Ѫ[|ơ+{'W{aP8DLqzkG*Dcʸ2h)s[LF2r/?jq.ct8͎BÇ Y2nqbZFV:rLL$AAuF"^܎.1cM=ԋJVdn X0~TvKp#xt^iq&,h!p !.J}Sc9VR>s'qneG:N8h馀q{ZJ稯B{7}OR̈́;݇uэfnK{y"v5^<+*EH5҄v0d (n1a9f{ ғ(h\c<-ʴƼgNeO2J|K%ˆv^}Xqax*X>Ҳ}6W;/.A6/AY[l %P-I^& mJZ-bF4J#ݖ'ƚg)DI_I2)ŬU.P} nUAwLIÑuh˨`\Bi )۰J-T(LU/g vyUWN~F bTESISFR ARHp>p򏥅KΏPTx(}=حOTOmՐ=V|Vo4yzQ]m>3\j [ ،'["Ϩ:~jTGq81UC(.t˰-!I xƶf)54[1XㅕBGG[#dB.TQyUR&k+N e YueK8%3Ȋ]Xyk#1kl>7-Bxv̨d5{ (J &$M \u]`G0*l4:RkiEvGu-Ѝi`.#ƹXE6; 1d;w9p=7Ħ(ҵks^A-I wY$2R!́(5i.Lx+xw0:}UQsA6>6Q .br,o3)AI'+@#jԾڏV*R`Qd] ,e H,M*=RB4*CIկ1'rA"ߵ]7N5_<1㪢9M{ G;`:*O-dFqY["5 u4z_h%L [E9AVsg"~Y]IorkAe8ϝ8f4`\x@7X\wgeSMX VrE8 'xiOO u/N(Dq}WU򈳷aS{y^evL҉@! Cs3G=\%p8~vpC6uV6[7}%^vkžgI/JQgoH+1ソ{}ng!0wIHI ! =:(u05&*IĉFYu-- IՀ¥/v._{paFztRY@MY&nEM;sx!bXd:m kfiZӞMwlx2j,H5X"/qKo5]llK(S5=-IbY^M uFo1^!BBfq_m1yZ̹t_ҥ?vzȗ8 $h鿓y|!9>:rp%dճOF`$t#=7gzߐ~%3z<-w^RliLkJZقE2ڴʧ-(`Tȁ 7?\ySň&Q@2rF2ӈt9Yzː/ %kvj|;Q{Rl-}0d ,wWDSI'ɦ?-sPo"CcuRYJr8P[#=J/EEV.E]VR ؼ?qj(M);Ut-0AXUDA/Ȝљm([$ |U4X3RJ])6bctm3Į}_U)g;r i _!a\fʼnXw\[ iqZ˔ ݍdO"iۘ>pI0K5D},jNk/"t@]ֲ*"È<f0L1ȧzk}j_Ah&WӠtlx|Tkt@|6hD+o-v)&"ogbM#D,G/|8ɂԇޜф(x-((s*Q&# B#2qHuŠ(+tӈPR `Q2ruU+Yh(fꭽBL gLସ`krh_.&ޝ h Sk+DquR-},OR\>շ(U|,,_Wkj"VSw5ũds3j\*]|- c&dCϰ`}WԜ4@9/uuG;P/!Xpq,F>kܔH3C}9{ߵi_'?J˶{Օbˊ^>BeJKBs:Ku}'&K*MM^o 51Eª n0Ye*ÓQ%juru]_@ː\֠H3c븟>%(Mj.i&ktY烂xAY=ˋtȣK&XO>pX6YZ4EXa kq« OSX&Gǀu;OtA\VِMP:g^p~a5ui} 5jVPu`cenFT$C8v@$eUSkK,"#f&s!Y L-r $]lĈ;ZjSblILy a`VgEOoBJLsXhM-9A³\a `%݆ =v5AU&F*u<dҠN~<"!*z&oWk4EJ+I~2QAlfF"${0.݂v0Cr7 }t "_w)$v__,si2@ri]Yss&`ޣ$!8k󑘭 Uc*H+fC-s >nV`Y "2N0+^ڔ/#Ϫ8CX 㫦xA:AZJe9/wf;~閲}422LFĎl*]J-[X#Jta>X6 ES[iJ&/MЌ2,@LP/@5;8}\Oĸ$mhu%vruHᶧ&[nVƂ/(lĦ*54)7 2.W׮69@9r%ӡiX V?%C=x):Q__GQamtMBkSLn;Gq\isBEE$YȅAO{DuFLbC<8aL6Jmؾ\킵jX )طs{SŠY>WеKeRՑn!pKEB-#f)E'UNhD!AXopc涷~GZM}~w&2ҠkA?GtWZwbFTn@xcnB ެh jU|*xߒ&CfgI~Qš$ Y/{GFo;^LQɀe C!S*uMeZ BMS[)Hc oأ&ŶnaZ\/-!1Ch 5 ||_!:A)Ef,T٘n;hghX4 ˓I(EHhz[Dp, P9~kbWV@sdE+7?tٿ+MuݎPg) 㐍(uU؄0wYLI f n`*XRdτ*Xі*;Eo+rE)<$-9c礓et,T* TTW`7K&iNk+J ʒ&Qxf kܗ\\Ue*rVz~*97@LUS6fE9B ];ù_HJj'ZRCNI 0 Lzՠ7>|Dg&V{3j@7OFSNhM” -p'sgQE52};axue6 zk%4*2rciMTQo2fnÓrg;0 ,A L[8KuZ'p7,EM(1ۺ> aa0:Pv(wa-(jHWIZQ`;&+:>:[9Q" Z?6ׇ+j h[ul sj]ֽ %gN(pS%sx듨oKF5BuTw`FyuꍡV&ڬԉ̐3}(Nd'k|7%+Ί}.3FjηhANMUCJKR"F |>p<S5l_)o%hlpSI]ėjoi!^ y +TP<ކĤLpeC'~BFfգ5(;tsM*ͭ\%<,Ӹ{Llʾm/~TXn{QJ(_}: ~I&. IpI# M'f{Y(Q1FIK FYkKI<IJ<)L%'$\nLqw_^TʻwyZ]Y֖'#L0D{-9(s;;S=)dgYyV]>N:v {- o&wG!YbAhKZ6u!*>!O7P~m~|ET%1'ngY}9%64.<+mKݜ#ʻN~R}`qQ-&Կʭt1Xz "H;hɢṂR0^3`l1#);\w^ƬeZaǕ7dJOw#Y}8BrU0Ljt4tC9G͕ݙK_ ǜ=lb޴GIZ[8~+(-T"KNnJ1Uӈ|agur]O E e]0@8zCxQRk޴zSטζj7$x ̗{2{kD[ MFQX̿ ]&hDLmoo7ܖ kEG!Jb O(٨??Ԋ{#99deiz=.Qtp $TpX2݂ĄmAOW tVvүqgGm>"y٦bCOIJ!Lqo2Hj6yPj̆*}l$yyB ܗcLT5XyglIGxK$Oe )JI*'b$p;y-vcRt/nzD栈=׿'F:qqs'gd_|Z.~A݀j#fюrUr̀Х/}f|FBXr=k㧢ˆwl}|AC;;HMg$8֯`lEuYM{()̑ ǖ7RM =I^QAv/Y9J ׃| Gٽ>^Kxpk}q;w> 6(v߈ߊ%ۿbfGao&oK]DK\l4EDrVGymT ͂059k!E71_tm$/jU֠pt0x(4֩B(2v?]J =@; 쯻P?lMC Rș6W ImIto;4L(/c~y]e(7ԛ3(o [xaȌ_i4JH( jYtULa;R$H[VrQE)oΡ9Iy ,vs1O}]# Jo7C"/۩J}tkBzw׻D&4zת,UxO [h Q[rsvEh?M뷹eb?(N .ɩ{M_:ڲK,i1*u.#5M[)w2AuU#1ёqCa,n*(H̓GA mr=Թh8yTǬZh u=\>6YdЊܖ?ث;jH~2M, ;lOscMOh- =s}Rݰ fix;k+$j}ĸ.| GCRϞL+wuE-iz?'Dk{lzYצY41خ-i[(>aM.44nP _M"$kodJ i$ &0tQ U.Q( JIMt`bRa#5ýbfAޢ儥zڝ2 wfeAr9::ii#<:x-[E bGo/&* uY'nLtq$^sO+"2үfp/'')&p:Zp&#DK?6>qoTǗKJYY4@:4;6;9*蓞$e%`F.L `ǟ] qqf Ԁ{K*߉Ww3][FPqA۞riAiߊKYoya@Jq:aSvi+S4Iю*dGO[f=(9Q"6Et5"$Ij YnIA c{*o/-1cs$a qӉ ơQ 4 CW1:!i*OWXi D'q$86Ewɇ>Zg6+[<{R^OH=F3`B%?d>2ʾlٻ{D23/Yl摻.a;X=35 W!3XV+.?#BCO.UW;WCYe T!O$ƪ"#gTYMAg`OBN>n \.VD酲݉Y{TO)W]AٓY)!U_ VR)K2RGY L Y~G)Bn|<$s֮ 6 X5-\ٞYѭ.H$/}1 `pІّFz 41hLqE'QSo;I(U,ƊEZA,QeI=u`iBX6kGFf^nɈC#Pq}dOi_~7Kpb+STtMfyIqEہ9]{'m>Aң : =A__ -r&XV ;۝U9xSbkeߖ* S|9*qq|I2]; QE?8⮯)ӲO*1jBNRb4U0>ǿ>FP*Y%V=,YH.Ų5T}<%%1I3{|Ҝ_?@(S>^ĢK'ALM 2)j^7+l|fbF dje}a_,E # *NQrf8WQx-ȫwZcTpa9{DN>D{ jؠ"P*+@2'c];3nw]np56z$ qtRZЋج1xI@p3Rw2n>Gn羝TzM!'84I= ~c,,oV8)",vsDi^%1cUbD)w(,Zf54ϏHE+%籬QXJa[(UO%ŬBKA~ltɌ\;wSTNOSt3풵>/Bݥj!op6$>&I%ZP:1o0Pa$# UgVYe)zfZ,D&v޴ ?r웜3)0 FDx!|b Y3?5Ok I^K𥉉Tܴ|}128Ѿ(Gi.f{VpRVc5Fak%¡hsE[TVj8OC/\\ϸR1 H`|dg&#'eQ0͐(Yb.'aAm PpQ,Cd܍s2lkZC'ڬXGKuFt\Ս.Ȏ_SkS &EK-qïvy8Y}{՛;d5vÒ`j&g"). v .ZqgFxcs9vY}zt=PAp\ c#qk3l+Ga2YaR1xA>ی~Hǣv7`rsQF@FS%&^cHD<( Tv9ۅ\mrXD-{:|}wZMZ9}yXPaŪKY@jayJ/f[x_Z㎝~s)4ogtdi֑ ^r!dRʷN @o?co" ^{òյcm?"FOX5ҫpT6/iU)Յ asK`kgߍ~dy` =j˖vLOVw SКȷAj\ǷbdV?B4D)#o ˁUAY^Lv>%V^LSS&zCq$ɿma"%x/%!D>fD7Ӹ4.]ȶ&b.+jEoG*!i8Fg^9x єY+ͽ0,X1t77_\^i]TZtM8*M!vdр?@FDޤyGcڥ]^_rK] 3^)Sdk#ˍVoiN}2>>jEy ̥e[xRrzr"3@g6R\̊^:!+P$3T>Vunqnu=W<`[}'##&c3yFspi㸻%"BG>׾Rjo\k@(Db#-e4%NjQպd`(*`JeK:Wf`9/ nMỴ- PzJF18 ]ҭ }s1iY_AAul{u8-޵}DI̺bF0⡉c%#Ʈbx5juvWN =!LJG5Z^DӋ:FFX9,fcEdSH=22ugH Z2.G%3 IE^ٗum{d([8[<h_gIyLڹ9kڂLel)|ƩUZΈO/NJ4|}}G:Wpn$0xj4 2r ֒> >÷"hWB%*;n:]\F14XjQdU*Eڙ&ZoCunOD1 auDE^_nV9Ҝr߭@,|0Ny!_wn*=V|}1nZ1L'O?\ؽ5Тk(v`dn=HGrؕL~e2,+PiB`njx4E@?qp : "o= +UuB k Wш v}#S4Y(* 1`0G+d0+( %b1ѻs_q1AL3Z+(aгDB+sc/]+=<ԄVip[bMn7,e7D췆d#F#$eΓƕo<7b@ӳ{`PwFN^Gԁf%/= rmG02Kp=CBp)M-O-7智 a^.T;q EI_DD)5\'~r4a<inn  wpĝbw|X#&T*h'dSJ{(uY(1_R+'Ac l5hID)Au~Y?0ٷēMℶχDxiT@xRߎ80QHlߞLo o~"lȠ.&}lo. t`z<튀5+XPH"\`&Ð+be2E]Dž+CȨ׭\Rߟo}Id^ȰOZ%;RFT(dbg{ XsP%4^\q/!t3 &U}!= kR/nHj#{Tö~n#TF  MCx._W^S'fc#pvD_I,Θ45A{}Ɛ& o)c XQଊGN<^D͇%pAv Ew%80r70|m{P!Ŷ[pOY'@!023_qOğ;T||9SHHWjBdq$IζHkqx\JpTY {Y]TG6!k"{18df .ϸ}7K)\]_I"BFMs"s2lTxmFdw2uh qmD(w$uͥtXwH}5Qe6eC??q" /mD&Q%;~,Lr:v)`T,cȉ(N*b?yYLhV> OH Џ;5 .؄3™-[{|X"'>)qi1 5_\"<'v{ale @<7},$m;]hTWI GfZ"% <=}|hԜe w"Yv >&Ė䭍#aqn' 7]"((3x3se 9@Qžfim^re.%RnwaNLD -3FBq;UU95@8sH% ?bJ0 ' *a"!*=-PNkC\8r=/v/``I!P 502"Ab"ļ|"]EW*_{|-7sc)UL@5}&Pzywo[;>n|"k2xMøg(("$%b,++Kj1 Q#oQJ^W` !1whRvN/yva&HC> g8f+2B!(T;hgN3w԰J7h9Syx[:aRo[^{Ԝ]"ߏZIM(ڣ'j4.P' i< Т8Q17G]a°u*geFHyڻZdP@!_BȺpFksˆi#3B-8Yt=@D>Q#"E @!"RVLrZbuwsĎNz(1QKu/:\m9\pMw[}j˯:QTҧ[r{0Jӂ% 呙MWʩP潈S PN@u6užJ/ϮΪ*jC uͅ r҅耗@y50(%ʎ´rܞĮg=l,#4oJad\+_>Za9j%o ( {`^Iuډa+;άPB-[˿8, :h3C*44a^32h3H)luEXIHB86SMHO eK ?~]2GHb yaDk^t80q [#L&P&{ZU{t>jՐup P& θ4xmbxI-b8]l녓:ՐAybbې AEgAE!yT\,`ؕ ,-`XXљ*V}lcEzْ-h€F9-rj3@ӰhhSD2^ .Ow}N_bekUcuC.Sj.ʷ~ @y^>Lv,Ȭ!?Mh?6Vna:hc&n%k$fNpB2TP=nxpepc+0?ԝX@HV?*ѪΙ,a|) ݹ{H&A-?~J^7H`x $hkd {Yz1xNXEL}0y/pT:z_ugMs/'Zs2J0Tzgڬb{-ܸ, 2^CAD]%\ם|o&WPꟓ)#XaB I=7K ;b]^ߌP&K*N;RL.@4PCPo0)90L4Q7[_ULׂDH.'$ z h/\2m=m[s\g%ʺ$GljmP5jyҖliA4+%ȯ34oe'&zv8M3w?& 2P3kx\\'7"Rx@5-݆0M< K&w3߲#-DsFlX L82-笰]Tùf@yLnq"I"ԗc94c  u.'F_`4*+VM-+dhgTJMlmb2`b_,|ABcGn#\9,Iw(R uPO2*abx/}Q/PӴ{q(>hĒxzms9Τ[ھbTGmu :9z# cc}}h:o)q Pԑ'y"g}3{c`z`qhg5CLw\_Qg+!YE_|Zz+XwAyg¬aDvn[WhdV݊hoiϹ*XRŔo;<ހxio,|n?I"ʼbiWћpQ_x} CͰ~?U"'/ӣ˞1g]3vI5L&Y=剽XyrӺy|#>0=M C94,;ZifIʝ@;ITen"ܵqO6Y+1} PY8Nj0ݶ]h'j::j~'rbm[R]rgٞ1j^%(3*= /a}vb`>@'ߙ:U+ tB{ ! m#l= ه%n|fxq oR`u@LApb[^XSӛKsK\:U#0@B.W, =lJ_k߲]`4db)kDDαV&:obƷJ_P=5o(N-xU0F0js9j!'+;# :EGzEv&w>dZ QTF.E]0(~1M=<{Q|8 ޟ6?d $Mv1,A:AK,t{|$*ՖMqRU(z{F5zln1@'P:k4#?mO1j/(6i,&}~_mKcPL|* [?5p.Vp_1' $ͯQ7լ1 P{Llp. cp_BS,K${ԧ):&{|x|L'lPhcjB8'4=(UgTqM5 oa1dxO&{Ixk,4 @HUơ5nv:zasߴL_f`OnWz+S6D7 |C\ 38q)qPm%d2`6%[-`5ޫP?ʹA:~ VRRk<EUՊcۑ6{@ብC 9jU{ۄtkW]0l\J6iVܮp莋g ḅ}Tf{] oY(38lIpRԔ['t|mG~u;&虿lޠ oܖ_O$(6F[ 5ǏK$V4K|0 pR+'t!`H9Է< &HYVEz ^cl'QɎ+,T=*mL:պ} ԗʎnea#n *[C0^yRޕUA9 c}4SjgEVŀaiM{/qA`&NDVV/+I!r5=)(c7y9.I OfUpk_Q|i |zքg -vE7 A?5-*%+"9f߳]~ DC,T?c^Co@Bl;%9WpYY0LPw7c%,x9e|arK74@=kҔWh80B7radpKu’$u=rq̉ ~bxwD> #*ĕkU#{y U~.u_[맙΋Cy76e:jӑYuMv+5VcƼ\QA(P vUk/vX+d x|n~Qy'Kj5v~2º0HxZFm!.Nt'ߘƃEAe׮I1ign9)PFYV"GqDlW>K2;% EH%N fi iRJE|d "2"]5H߁70/ h&l 1bx׌j" 4,3ʿHL'^o%jEUU)Na͊R?<Ж١$d"Wn4Of_oFY׽Wd'Te"ghз٘3O/]*7`J]5lI׉"kư#+%f~L\tt ٽ6%of? s\&Ѳ`.Bȸ+ÉqyW,yjB_\YDyMۢz@h^|9",S\y@9 #RAK2E=s$#R;:+V5|K-7-f#b"1H^*s"Lq"D N1{ƊtS8?W7b=lKƺ /cX-&bjV7?)v8V)L;j(UZIV*5 %,5]fy9&0 qFYz,k2v!X0[!trڍ$h=tJN}^)W_=0v(_2zЉ@qmHz/bt_k|@5;ky%=} %ܠYLD ט/\`-ЄV_П Jqx@V4(5 C=p77wՋ Om}~Mz3ɢcCi5 ,CZn:ty}d1'b-kBPR>T˂mX.!׀ j\- 4zx@\%%H1qS7zҥ7R t ;Vӄ5G\fҍ`J9Ik93M[f >lC~SRѐyW\/F=6$g1 .oJ[j^YPL>>A;xh›&)  LXrL!%W#܉E69.|\ƖHb%SRVIuuRoEeQ6e{&^c]NZ[y a$O&V2Ӎci,Ux%89:d ?1w>,*PRmu7Ža@L f}_L=(`# 4;sޤ2;=pVڃ)iL1dtj. KLrC\RWxȌ=f/c%aY\>XvkFe9 A {xXC Iîn$1#X֘|N7M{UVQO͍!2/G<=[<^Ucwj c3`b4G aPbI7~GTLwPE>/+` J<=i:vVbMElcѬ$$2o!S e!f 3 u%D>( &!"a6[g5T{Rc=Ea j^S=w5?QaRJד ћMȈ<+}+)Wt:ȶ6 !: M*| &7)⥀Z;ƦtjX49<C۹wru;p5<љbd$Px\5!,B<^GJ+6*=R`I|g4ZT(c4w8?vMp'$6AEmxl⍴*jA攊/6Z[|;5rMGsÿӭu-\n7/(+vF pfg_ SeY]!kM`>Ͽ&Z+SBrZ4?b!ߩ\&Z#":s<ɍ w[L:+bH:s.4WMY">5v('ВEX6U!^bN)"H56{ZBo4b^g}RNm}!}Vw 3Fɹg 0ay1yZ.\c6 ڄ)`SFzs-aĮ)/Y߷&~..@ 7}" *4_ tٸ=K\KFQk%$'Hga|cNd"t}aO-wōlx?z2>Jn@O%Ζ {CY[H2#GХg֗fpM#vMAI/}/坸]/4#,NNMN<tIM57Oܙ)ۆf|ܠT0S5Y,l91bIB맴ëDG7Y4xy 9ȅew%TLŦE?i#IFaoc>җz ? /OL'@+ͼ2E=@f&dkK`'TCJW0ftd%Qp:!HXm/L/n I yalcz?Lѝ+qb22SOI Y"n*$I%]ޢ;8 9&RoBc A?fl4C-<%iڼkg4 >e`ӧuD~&BW>?M9Fi'}[8eS+ w>k@:Sq= 7dYn CQI@CI0 8 ~XPQ' +{ <&Dp0nN-v`%i! R3[iH;=qAnB8͐0M5)%pl 3T7h@FTU Z XRR?sG"'N<NZ(i] JmъW:d@K,0_>Q=~mU˥kn2H_IRjJTT4+vtiNGȿIw,oC X~\IVogRaZߎ) + X䀣2G9{f}Ds,ʬ{$a2-=dH^ϸ-Uj:(b?ʮ);j;2bQ q4oX]w"OvQ6t6ɟд;B#8oɭ&g/>˶#SlL~|va j;7ɈUƢ ZTBPka׈=zK4oLDBdcĘtUP'tgXםz 1ׅRP(( ˣ/o"s6Jkˣz/hļau ^i?`2dscӳubRv9-O!L-Ir.tƸj.w/: *󖓢M3VYRu ۶3KP_RX@[oݞGȓheȬ /P$-RR3NtbDK6@0mfF2U @k0t`—Ud>[⣮,xZʀ? Ɇ/I`hXIms@%_J4_2(*UZmYiM|.ܸ=Dp!.Ttk 8ǭ{1G mHM((9‰98酗LYM[~>NxOֱ`ڌ[h$Cڈ< inp+e]phpr%fqtr."k婾!Ц?7[2|- @`Jמ2sQq{ƾ& r F> whuxn$(0!G-73#|2It7US{Ûa,.bC@#U%`kN %VD]"b׮[JX|s i(WG蚼:otoC?I/Ѝ^7Z>Me ܫתG0Upt<+ 9):ݳ. Oݻ4'9|f3*d:^+ JGI<W37w_-S2ʻ"6LRCJ. /\v ~) +4Vhp 5IPڝޖ>eadB>ΐ/=3?x2]עh3,f]b-PF l<&cɲ'(qʢP2˗ c(P/̖H cFaÃmG]`#)Tp2֙;@(E+X3mr3pmZpNp~1iFp/D>.?Nmda0&*!JL8p=9l!쨑{BY\Ř/F2g(Y6KnQ^^2~vлqO=욠;#o[N,TQǁ F5ܙYmmD ׉|[M)7M!yltcMHY e,#6\\ți*oɤ鵕]ForzuhW \ϊ+[UmR?bV0襦+<Ǜ^B6~\=-D21ѽI\a_Sf谾{kdT"~Z~Q85MgEsRلYG2dõQ +~= Ҡ+_DR(\Q#7#l"q_?3@)ڽB pys<@TyyS&nszf\iZq7]]SuV1֥Р&o*#|VOu!s:p(Ji5aww5E#Hs֢yt[Xo.ƃ?$vAHN՜1ܑ؁&eȖg~Z:{f#Rvi?Xe.Ze~-߬PݽEOKk%EB<8 *Ƣ֭w^N mmsWWk]*3_h"΋R<)a596HE NG9VL/0K8u\'Iz!`[qƣuTKa;jG2_a[ ?=nr\va?I#z(aqkWt C3Mn'5!x+,抐$tlkS㛡 9R-q+VR7cDjkW~.LFxCߌLl0?I?g| Iﳼ%Fk!zYTҔH]s4_nᐹZJ&G*9i?<.n⺫ ܦz~}\A>KE|ȝ~gKP)Qb>v V'%ɜJ3%sߡОFNFOu]Ql!.0vP4^B~Da!XZرj_Uq%&JCӪ7EJŐ? 1Mj3 ^~1Z_9uZt{Iv3=RcI'\@>2cS .-Rr@7|2U/1(&>K+D| ')b1-|{x!yoһnǘMq5GlŖy"TG??$2P S`kg S $i21t+5ݓQwA!UNο[޸9p QE˾ oא|8?(כEBWikW] †o7tH?_Qf 157 NNyd/& E&'"zk`zpNL*ů|1MN< }Zi(VfX qyVEdC-^^@h<OzOmMGU9!4[Չ0gRx+LGNpv 54/k nX[>3uob6#cۂdp&ݍFT"{EgEP.5SIL`A1,smo~rrLy{xƚW[AK2܌x 6v,k_%M36FOd? Tpcv)jT?_AcE8Bx_2ti)2lF!y9 WI-1TS+8݉F )1V!+U%Q,/?=~f4=nߞp4Zq>\P=O 4[/&GО1*V lTDAA! `aza+Rom? &3'ά _gWįw#.Rb U_`}bKe+y.R-).@UoD˂HçEǜ Yx]b I}Cbxk濩0^kHS@~XT -D#^'~&r<Z"A|; ]LTmfcqɭhi1(?\ īa> H:+ :B@+KMì Ey4x_ $"~azqKt #^LoU O*P2i acon.Ҭ)E(]=QN'Gk1#4$ B0Oc_߻ѥYeUe>=|d@6R$ƊoiL@@1W&p@A!t5תULAL oԃ}̌2Lm:cR'< =N538vtC|/Ύ v[r9O8gN q8emN$v{#j2C MډOCOZr4ƅx"'֥C  駣>ߺK^a揯;Or C>\m<d% uXɖ% αHN/&))1])[EK1j46a{6׸v)-NɎRkk>P$O3BZjCaaz贉wrP7 7$#DdPsWVW}]Pld@~M]h8q: \W"*]n'_rObX215`xeL@WƈFăKaᐅTrD_-y8~ PHY`WOqn>O. ;o7wL}it )Nqp$K_b YItO*o{3nDcLt4o/W(t@Lsuqsd!,G`~3MQIq3虳]Ih7KޣlExA`.: 8)ۜV #Nnm?K]%rbH}TĴVm'/h]J7JFD謇@sāv䠏D-`vw3CX8:Ec>bc@o>X#=0~KBC:@,d,F4cJpzme8z5G*|L}OJyTT<(9k:Viх .. SLxi*u`Ϟ@wtPt7Jh XI"S`\l/qb_y rDAô$v_yOuvšktC)Oit,|΀QlIN4e oz&Rְ:Žo/Cm{(ijcn ̻E럌A^1wiOޟC"njVh;ߞt,:="sݰ.=%v ZT8]N< VV[''37¾JecwaB?N>T 5k2FLӗ*1}' 'IIo3.z|1KVAHƉTnlA;粪j?{;xe9 lIѢK J_Ka|&Wnnw p!P C.Q4(>k(۬"#|+?FȐNؤng[6J6V /K1Ho _t轞/DfE#GJw2S<#A _V𤴆OI*TG+i _=foB;]&4U_goJ\"XrI"EA'^?\aq*^c9`6n56_gMQu[өth BB>XF k,˟3'&~=y?B@ D#MAWi'8%k1V 򿧕h-dG@14\ weS&F;:j$ruE93ëT-OoˠB%vrsZ 3t7l/~a]4mՀ.6#an6recVE"QI7&G {ȑ pGxql)oqUZSChqFC)&|X}piҁ٘͒I&]CoISN,Za l>I c,OF.W~66 0lz7{-cgn EqIjy=АW{HF 9m%N~Lj`a*ҦoaX΁˒2]mX֖dPU+xJMIHE:p65鳏tnCkcN[y˪W?&wkZFT9k25Yz}l ^)}џBC"U,UBe/kw2lzk<8I ϝ|Td$Z)=<MEʗ=6HdC8͞%W59x|YńE}|譳_ˎ\YmjPa93 d~&c3@"{N+XN‰\Q}$ǡk;uJhf 9M%ɶyM;Cs/6,"Y͠ -+b-Y om)nudM8v뙠:b\BE& <ǫv.q>+W7Max?ԲVjVzQ$(тO!JhVB% ^)s#SA-zĴ"6SpIqJH kTk*dqxg!omu^ چI Dg_lY8;z9DIx xgg)j5v=D<#N`"JQ%py<|&ͱÖ׷ji.ԻrUhBpp6{3Cv+<^%I,F3G_Pйup `حʄ JHܱTyHI 'ƂQp2K9j}K\iz=6:t7e%ŕv͘=py=vXo`9>J^:}G] .hmYR6(dyмlj'\<%cr,ۢjLEj}w<}GDL [bbv0KXLg_~y̛3=RJL{Za\f{ٜRc0Efm= S pTZ YwA`HY~<&(i؟OWG<Ĩ\]V?ϤaGº?SLfo1+?-#v@ƿ\gҮ`=?6sыDCoZ2%/ꏴ[f*YbpP07>È yF(F!1g^c)ٗ6`4:mWG)??x[^*XXP0FƖtBѮy0 <; 3S#fG~T0 /JaHM 8z-b,nЧ-LX`',%y_Y0[> \%sPfBWf5"S_9i WƦ~*Ljz\۽)7pQdjAYHXN^9,;8.`2.r[$!ϊڔT~3G@<Bp NLl| : 30A.n;ZٮIVVfgv'xn l}P3]*²~QΌ `F1|(J0h律Sny+) h{Z]CF ;a0B:4pq*B,GV@ bK|4B0BtĊR?w?$g yKtYдrG@w_+g\Mt7_^XT49\;@NjNr UQCjQ8`f3"'mת$)4t-[d_nA>NJ5 X1MrM.1g=@n߇Ex%Bps|yM3 H!nDZӯ|)%[̥f╽ed38 l`%jbaX hh}xFxB=gʋۗEy0ΊJIB7Z3=Y#Drw.VЮap, Ѯv- )}R\)îJ8O\GJ JRRfZث{=&W$K}#nl],12zKJ)R 1 G?@WcW3y6X/7y;I=k1;h2uQ$ #kT0 /V-sļnx+;rnlSo:Gu,RGͼѹdp =Wy^^V(l}(TjF=50$֜5Hah7QyIS|K|k[\aHQQhBޗC2 }!@WkR{6h4JI0=D:0:c_Ì+d>rso&r5?Dzx;aZjaLKV+Fk-0plWwۄ,K[l*A$j!&EFmq+]p.gOSy$OOiA*1HMF~l,^C(@cqŃvk*U:ހi5 Q a=l ߑޜfoqgH#>Lቩuy `yٻnsLiDiAmnB2 US L?Kub ǯ퉭7vu&:vJ/ + m kVfYX&hnF|Se'h9 xWsto$Rjw3h`h[)%.v)(*"ъwi2FD,};M =lVw])m)8\zY7W\r&%QZ&WFj8m.xIz[VjҬ)C [!Vzk("h^z78)~2#kB*lAl 3.<ܛZTyO֗\,V#0`=fdx岼(^^?Q9e}D73gl24Q"scDU*} Z,H$5P7`f4)fvEu;jϾ3žlx$29TrZ4Vl r}·$Nً*WwebuOL[.7dHΗGΣ:qTn_ GV$ :j6EB,B%4-7#(AyT).`:- yF&xewПpGtͰOe$&dA!.鼄[e;^v5Y$Z3GsE\5ҹ)N@>PjS=4<]yBf#~0<^%B!t,-9ʈ*SPˀG뾝XVv*s_9wȧH+ '9^bWI)ࡨaUW|b,܍Mt)^<$ʥcp1,c19>|,nxD EԿViòTGD} $@ jDd緆P>'V)TLVĒK|V޼)2+_duH^1D G7n)UmD7$N!@FV]4)-Q}}*z0N}=usn/vV"9?3{u0 ∎ Cv##ѕ _jbڃ-0E-/I 6pS9b`/vhcw:" D5^ʓ28n #5 ;N4RN.Ds n F:6%GCz @ pO\z#ְA[8&OR\Q.~Kv6 ˥Q'8AxtvI_DR[xVaJVuŨmШwRLQV{+(HZfW9%}k*uZ,]1ukD/"qOkVۗtl&l}$EH&\{onkl HM 0 ܗ z.!}nױ`1n^1+5V_c#F.^ n:Ʌ66p%C"eeD x=xHrv`]L\[®Y;N,Ml໧dY<' @l#VvG&Κ}}6W# yXwdW߯_nF;r'@jtˍto[cfѠ9HㄨU<>RL&Fel@"/`?Vktۼ ̵ ExN9.u_:EV,1vf,nZMHe%@(L٤]^ɔCI|,CyL/Yϣ VlV^*s4$v]?MHjv1à G:vmlk"jxA!F@KA ޟr/5>ژE_ږ&9Yꏏy9דz5Gr6n,2!sZ"_H Wš4.:mGG lSb.Xإ5/1ԗٔLJ>ӜVR:Q7͛l 16H"**}@ayY*_[y2@tj0o VFG/ $g6nDj nWQ(rزO|DՂ TH`56}d/b2%SqMJh۱gkVP X ljБ?1nQ.VJЈX۔NRh;d~CgE&Ⱦ&app+>A@[e pz׿im"Dm|U+ܫ KrdX=?0MG&81 YJR`ާʛSHoŴ򙷏s*98HPexh 0N A(S#vʈ!ѯs*C  ̻-i;3O;ÙIr{Dlߠwa8(\2)E:{bݡ +/L{)ꙉv!e,[~Yzjf=Q)"L { VJ~ZI=>g:-XkzmFuzIa;uO&nwa4S,VdRA}+Fp~WpbHeҍ=Վ{=>A>mj dcҰ/!ygq',ߺ*`1TvOeD)<ƣ28xAf<&)Jb=70W$I8@5oY/(=c0H>O5Oot vbS5;eXUL5!="z/Ou@fS?1`ܪ-@5' e 8mM״j=wsY %2rm,tYט 'z̦8+}?w$T+Yo2fXiӝFU'L@PGu,h=I5#==Av``кS 'sP`ܪlvbr3;S|>1vI^ JT$}!S/RDy/U|zuR8I˶X(!.A-=s`{ģg4gqF}KVx+ǰnKh]viAFKc}YDA/aBe".0ci ˓F 5xA`;K`iJiC{ r0%6V ]hm+IuloRI.x_gŎzpH.(/0I'UNƷ}h"C}Ugn):/SԗVT6-Sgbj}L\c-=? p]`&S' g&HfkNH E,3P=NcnZ>}eZCvTqF5O,Mm, G`7=n~G.D.Mb(WM[CS~[d۷.Ci5CiuAK Tm~&.Li'j҈5%SUY ֔ jRR\_H'T-o$QOGᬦo;ę47F6yHU 1'+v 7ڰ[hK4t-gB;wT6jYˤaJdHeO TSJy̦L*8XTRMg<\QES}ak0>s u>$f|"UE_,"1ѵ|D>ѥ 1<ޙ⤚rK&4^YMy= C$qpviIvV$ʼn_;Dy6E~$Sfvi{c.E\qGnJRZ@Ms"uJA*6L){WK Բ..S>zk 7%%"DZn*JD Jyj5߯h+GøOW!w~Iz|i2WSL#`@e4 F6|2UZ̝A$׺ӫ/؊/?J{q+nXx(sw@ssHOcCA,4?+"AA(m; e?7, bB^\A)_[Jb|]ݲ;b9KC{txEYpRGMREa/p:ҕS_9`RB3"l8K{f;Ytl^)x2^ rݝB3I"d=@=~U9 𳢗O%!&׈q$s@٠ 5QLGEE"CJRYN_6qU|"g9md*e[}8w,Gժm̘-kxXjЋ4Q$Bkob;`;9Ew0[WBco DW{+z+&ҕ϶v#nV y=#LJEZǖ#M%uݑաW |W ?2F*Т lw\X; PuGng`fQ?gaaA>7v(W_, * 7_Þ"w,JU:_4@@+OpqMxLU0ҙg2bS`i'V!!['MZ;:%y9+S %Ua0:TӽDn',Pd"zrW4 VyU:=zJ8je;0k,r8rSՕ_RN Vlف ĺx 42P1"@P`\std4Y$ҴNܟo%O6۷ܠ H'+Q1V۳PifsLHX'ˎu8CV3=fPpp )<THL&}Ƶ!y\l)7uKS? ޡ`hegNW 6+(:n;r:EYA]hU%(P|Ӥ) |O,drzv~ˮ#ti/`h r%60)>;|jɨlAxZ ݽO'l5+>Q7.x7WPucK9?2 }$ MO4EG!xV X`L8{MTѨG^ IW"o>u