aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/install/database_update.php
blob: ba6f0b3ba90254e8ba30bbce44a49ab0766155be (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
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
<?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.
*
*/

$update_start_time = time();

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

function phpbb_end_update($cache, $config)
{
	$cache->purge();

	$config->increment('assets_version', 1);

?>
								</p>
							</div>
						</div>
					<span class="corners-bottom"><span></span></span>
				</div>
			</div>
		</div>

		<div id="page-footer">
			<div class="copyright">
				Powered by <a href="https://www.phpbb.com/">phpBB</a>&reg; Forum Software &copy; phpBB Limited
			</div>
		</div>
	</div>
</body>
</html>

<?php

	garbage_collection();
	exit_handler();
}

require($phpbb_root_path . 'includes/startup.' . $phpEx);
require($phpbb_root_path . 'phpbb/class_loader.' . $phpEx);

$phpbb_class_loader = new \phpbb\class_loader('phpbb\\', "{$phpbb_root_path}phpbb/", $phpEx);
$phpbb_class_loader->register();

$phpbb_config_php_file = new \phpbb\config_php_file($phpbb_root_path, $phpEx);
extract($phpbb_config_php_file->get_all());

if (!defined('PHPBB_INSTALLED') || empty($dbms) || empty($acm_type))
{
	die("Please read: <a href='../docs/INSTALL.html'>INSTALL.html</a> before attempting to update.");
}

// In case $phpbb_adm_relative_path is not set (in case of an update), use the default.
$phpbb_adm_relative_path = (isset($phpbb_adm_relative_path)) ? $phpbb_adm_relative_path : 'adm/';
$phpbb_admin_path = (defined('PHPBB_ADMIN_PATH')) ? PHPBB_ADMIN_PATH : $phpbb_root_path . $phpbb_adm_relative_path;

// Include files
require($phpbb_root_path . 'includes/functions.' . $phpEx);
require($phpbb_root_path . 'includes/functions_content.' . $phpEx);

require($phpbb_root_path . 'includes/constants.' . $phpEx);
require($phpbb_root_path . 'includes/utf/utf_tools.' . $phpEx);

// Set PHP error handler to ours
set_error_handler(defined('PHPBB_MSG_HANDLER') ? PHPBB_MSG_HANDLER : 'msg_handler');

// Set up container (must be done here because extensions table may not exist)
$phpbb_container_builder = new \phpbb\di\container_builder($phpbb_config_php_file, $phpbb_root_path, $phpEx);
$phpbb_container_builder->set_use_extensions(false);
$phpbb_container_builder->set_use_kernel_pass(false);
$phpbb_container_builder->set_dump_container(false);
$phpbb_container = $phpbb_container_builder->get_container();

// set up caching
/* @var $cache \phpbb\cache\service */
$cache = $phpbb_container->get('cache');

// Instantiate some basic classes
/* @var $phpbb_dispatcher \phpbb\event\dispatcher */
$phpbb_dispatcher = $phpbb_container->get('dispatcher');

/* @var $request \phpbb\request\request_interface */
$request	= $phpbb_container->get('request');

/* @var $user \phpbb\user */
$user		= $phpbb_container->get('user');

/* @var $auth \phpbb\auth\auth */
$auth		= $phpbb_container->get('auth');

/* @var $db \phpbb\db\driver\driver_interface */
$db			= $phpbb_container->get('dbal.conn');

/* @var $phpbb_log \phpbb\log\log_interface */
$phpbb_log	= $phpbb_container->get('log');

// Grab global variables, re-cache if necessary
/* @var $config \phpbb\config\config */
$config = $phpbb_container->get('config');

if (!isset($config['version_update_from']))
{
	$config->set('version_update_from', $config['version']);
}

$orig_version = $config['version_update_from'];

$user->add_lang(array('common', 'acp/common', 'install', 'migrator'));

// Add own hook handler, if present. :o
if (file_exists($phpbb_root_path . 'includes/hooks/index.' . $phpEx))
{
	require($phpbb_root_path . 'includes/hooks/index.' . $phpEx);
	$phpbb_hook = new phpbb_hook(array('exit_handler', 'phpbb_user_session_handler', 'append_sid', array('template', 'display')));

	/* @var $phpbb_hook_finder \phpbb\hook\finder */
	$phpbb_hook_finder = $phpbb_container->get('hook_finder');
	foreach ($phpbb_hook_finder->find() as $hook)
	{
		@include($phpbb_root_path . 'includes/hooks/' . $hook . '.' . $phpEx);
	}
}
else
{
	$phpbb_hook = false;
}

header('Content-type: text/html; charset=UTF-8');
?>
<!DOCTYPE html>
<html dir="<?php echo $user->lang['DIRECTION']; ?>" lang="<?php echo $user->lang['USER_LANG']; ?>">
<head>
<meta charset="utf-8">

<title><?php echo $user->lang['UPDATING_TO_LATEST_STABLE']; ?></title>

<link href="<?php echo htmlspecialchars($phpbb_admin_path); ?>style/admin.css" rel="stylesheet" type="text/css" media="screen" />

</head>

<body>
	<div id="wrap">
		<div id="page-header">&nbsp;</div>

		<div id="page-body">
			<div id="acp">
				<div class="panel">
					<span class="corners-top"><span></span></span>
						<div id="content">
							<div id="main" class="install-body">

								<h1><?php echo $user->lang['UPDATING_TO_LATEST_STABLE']; ?></h1>

								<br />

								<p><?php echo $user->lang['DATABASE_TYPE']; ?> :: <strong><?php echo $db->get_sql_layer(); ?></strong><br />
								<?php echo $user->lang['PREVIOUS_VERSION']; ?> :: <strong><?php echo $config['version']; ?></strong><br />

<?php

define('IN_DB_UPDATE', true);

/**
* @todo mysql update?
*/

// End startup code

/* @var $migrator \phpbb\db\migrator */
$migrator = $phpbb_container->get('migrator');
$migrator->set_output_handler(new \phpbb\db\log_wrapper_migrator_output_handler($user, new \phpbb\db\html_migrator_output_handler($user), $phpbb_root_path . 'store/migrations_' . time() . '.log'));

$migrator->create_migrations_table();

/* @var $phpbb_extension_manager \phpbb\extension\manager */
$phpbb_extension_manager = $phpbb_container->get('ext.manager');

$migrations = $phpbb_extension_manager
	->get_finder()
	->core_path('phpbb/db/migration/data/')
	->extension_directory('/migrations')
	->get_classes();

$migrator->set_migrations($migrations);

// What is a safe limit of execution time? Half the max execution time should be safe.
//  No more than 15 seconds so the user isn't sitting and waiting for a very long time
$phpbb_ini = new \phpbb\php\ini();
$safe_time_limit = min(15, ($phpbb_ini->get_int('max_execution_time') / 2));

// While we're going to try limit this to half the max execution time,
//  we want to try and take additional measures to prevent hitting the
//  max execution time (if, say, one migration step takes much longer
//  than the max execution time)
@set_time_limit(0);

while (!$migrator->finished())
{
	try
	{
		$migrator->update();
	}
	catch (\phpbb\db\migration\exception $e)
	{
		echo $e->getLocalisedMessage($user);

		phpbb_end_update($cache, $config);
	}

	$state = array_merge(array(
			'migration_schema_done' => false,
			'migration_data_done'	=> false,
		),
		$migrator->last_run_migration['state']
	);

	// Are we approaching the time limit? If so we want to pause the update and continue after refreshing
	if ((time() - $update_start_time) >= $safe_time_limit)
	{
		echo '<br />' . $user->lang['DATABASE_UPDATE_NOT_COMPLETED'] . '<br /><br />';
		echo '<a href="' . append_sid($phpbb_root_path . 'install/database_update.' . $phpEx, 'type=' . $request->variable('type', 0) . '&amp;language=' . $request->variable('language', 'en')) . '" class="button1">' . $user->lang['DATABASE_UPDATE_CONTINUE'] . '</a>';

		phpbb_end_update($cache, $config);
	}
}

if ($orig_version != $config['version'])
{
	$phpbb_log->add('admin', $user->data['user_id'], $user->ip, 'LOG_UPDATE_DATABASE', false, array($orig_version, $config['version']));
}

echo $user->lang['DATABASE_UPDATE_COMPLETE'] . '<br />';

if ($request->variable('type', 0))
{
	echo $user->lang['INLINE_UPDATE_SUCCESSFUL'] . '<br /><br />';
	echo '<a href="' . append_sid($phpbb_root_path . 'install/index.' . $phpEx, 'mode=update&amp;sub=update_db&amp;language=' . $request->variable('language', 'en')) . '" class="button1">' . $user->lang['CONTINUE_UPDATE_NOW'] . '</a>';
}
else
{
	echo '<div class="errorbox">' . $user->lang['UPDATE_FILES_NOTICE'] . '</div>';
	echo $user->lang['COMPLETE_LOGIN_TO_BOARD'];
}

$config->delete('version_update_from');

phpbb_end_update($cache, $config);
rΙM*fGox{ Tw`K p/\P@k5YNz6z^ZJԜ8zJ W?236ù46gNiXW%2DWj8zʃEhﲅ1kV_'_b59lG9q(ďCb;$\ô@!xaq} Bi;ah2,x˚J"a:>Χ c_gWE/O`S*+0VuYCgR[euX0L>lFRŌp+П 􇻱^]'%p#%U[hŒXg*ޑcI)OqrW9A*׸FڕVrUY(UEB3dkGf[Dڡ>s;,7nRpI*/ ʯVYo3H>(Hvcu:H"D"Gf<`s6IZvL<Ƌ#bXJA~X\:?nI4c[R̎gG&dCNWVHՅg{*w -FlS Kݶn^Q ANIH H̬ Qfu;K" =<D 5O^FPCN7%zfz4ݯE*dmc`U N wk.uZK]?S⏉ˇ_ydykK^W9&;qGvf$'\fe|)2F !Q冿-iᮢN~57{qwt9MCZuC}uZ%ʄ +l2(npŘX߀,=O9/BX53bYOv˶'D])G a̧MKvSY Vɑm/w2 ɵ2G]w-[Y}cڂa91Xd{fWS$xo2ǙJK00+ԑtm$/q e jV! .˫@KI!{UbA2["JAw dU%w;2d}wAeiX]dW5tY\'L /4-;5{Dˍ/8WÕ,s\fꩮVVevVa83k<#V_J3J%i se{VdCCe#˒u/$q92b%d"/<:$Ȃ+jr:gdWƢ ^0*8j.Jj#'e:ֽ!o) ::LQq^=X3w .Tp &6U-l#.ʺ)T n@tb:Oyrs?,._$tĤq0k>]p*,;W fm~a-TX&V͆GHZB6M+vP>%w'߲2)sqR!$0 <#XD+m6DXLiA{TM&5܊X)@c Ydx;DQjb5LD4-w ^Vc@_ЃDP 1MŁr*=U`&A"x?'ZtK.j̙U'YDγ>1\"QeLl\27=P\lx/-=n\[u&~Sp{5ikHlD|\Kq+emA-n^P[w@Q8>dwfdAX-#|K) !eB)b ܣãrCDHrVU:Dѯ^_tYy҇A~_;aqiPA ,"@C=7}|D‡q*zsHw2FU( փ!1LMc2DFŠK)eӨeH9Dse0*M 54;U=7n'r' EO k=5׮i^Dī„JAHռ"șuQ@ڵvW@Ƒl]h-SC7;!^{M$/S)I*q7akT; 3*Nv^}~O+˭f֡5J`z)_:s9 9&F٢Gs{{Dn89L.R\fT>C{ ¿o؛E>BSη3Vkv-i:E9BV!G"aeKx>a]$]|aon+D/.1|q}|"*6i7>~BÉ'{PYL "f`wG_aջڴ\u3Ѕ3MH_c8ҠPFqY|QoaPv^LGpXG"NO!\  & :(gpQV | xY[t}`|u{1bsq[nX jyFJJ!Ӽ('+]gMk6o`VFJmi?&wkNfʵ,Ќ4duzH0H:qIm*<^EjdPU(F hb7%SѢʰ!mj&.%SZ֣ɝw^!N<.pFp^)/wWu?X'wSXc׿MOqYҐc&a.;H}+W{ÄΞq-rzJh1ˆH7e"$bHFn;ڷ;O߷e2-Yk"m.R=A2);S3rbK(|=ݤ}kZG"­"*D٢TYsZLZ(S]d^P[9C:{G$`C94^ZQn_1ֽH,ʰ·MI*p.دm2Nm wVwPNR[ï `F8/5Y})+ږÒ.`q9˘ }Pq^f7RzQ# >Ahx j6{_%#G2nU@Û޷gi 7Ok #0NoQ.cvk|1*V Y1E6:fLZQ^=!5p- ۏW/7UuwA 0BfO~Y~y/h`G@>Ac@CMg U2cBp@x r-=;"ewf~u#I_c0lxd =.`M"/W(+/|q q Zf4!Yi* 2 }=Fd=\NuWnee$`jՃaeyOq~3vljM{@ܻUU712U#5SB-jtȥ.:e 2\7 (Ao2#i,\}y@vzadzx雵ٓcxØ CYҐDeV`c4R>#,:4 Z@Bϻĸ8݇^D*'DvGV5LUEY}-XlP0z{.?KA6V=uFT)OfnW!U(1冒>GtW(ҍ񺑼ʈ IMX~W:xDqGAh!ئ1&3Ma1ئx~艤<甜d(׎漢+V|Sa"5L$/'ry9J#~{gBIV s  &= ƜѡHZFsc֨ jim\OWj1ঢP%l|17CvÒ+:F({" q9jqQX9?x @ t CAxw?[uf~v=l[$}ܠ:):*m |] s:fȖc4ЗBLG٥9$ J(2a=!IPát $k[ IB*cn?q˶P%̀:*!lB,#3 #Nk{"5;k.[#1΃z&MZ8-:1K.Xr^"vrYD9ZAHtsq:|c/wSu.q nKqz١:6er6{Ӿ~ x7Ăa{AT}Fygm/Q.( s21B&śL^ÈJ`jyu26vr=`CjŨ@87SE*;/,:ﴖs>(2)"ڈޖ"fu΃VzZ>{E4?W:UORo?:lh %W>p`DE3&Ěo1%jmAWzpGmԢEC)lO@*[Z.^T6jGR*I|>j+K=N :z~@]g?j%%aXRX V0 W%P`l c"9qiݚ3w{,P mj[F(i$}玟)s?j#ZŦˁspkhK[y80,7FOWFէAo΁d2aQBTXE·D:*iHy U`y(#U=v=t@2عf/UzmQ1<!呢܅w!yjT'Av8p=gǓ]=jWoC*ѳ#u N n2'OӗJq9-J|{Wٽ.g"@2,ǵ=nNI͎b.yh&;$`vkVzUEpNP-9(T-$^ ʂXEElM|4^+QݣL~ ;U~KTxTFnz\;Z)V?z21OcrQ}RɧNhuЗ}~rp %R 8vxj^x%a|y,?F*%%mCeK+fД< H(`sM*.ڤot8XKYT(2k@#sͱ"\OFk=!QQ\y8͟6MᑩΣUNc٩bQo mtH%/8*}Xw M߶ٶ`HܘHEђ*Ϥ.#_MvVmx/vzzMAGFYV5"j ("[řj-^zKwEO@W%9^n#Lf="um ]lk3F J\uPR!8}=p@h"As (m# wmu_[mi@;:f ќ=ޥ5ޔG]~IC2{Φ{T\}A {&ΑdA;ے}tVIW 5?ҭ4xePmhOKФrg?[$|]ؾw-`sIi #6HAVztvϥ8nõ Oܶ&OtY;ecC`u?WVIUC3VP~NC_h#E Tw6/ "^t4Lr[V࡙Si TPv 2""vק7?;p$Ӝ@).'t!Z1dOlNrdU9#14SV,KǴn`qufpd?كimM` o' tRe[{U#SK)NĜ[TJŊ-hbߝhV`k$Lg7Kfi).8$3ۇ~2qæ4Fh }/g,W ü; a @/kB_d\3AtL:G J2}jg#DgZL" aRPº[]F{/x=s%EljUHMDED*:Ң?B |H~TnVaB$+zF)7K$]~i+TI?DvwlLys9K_1QrJcqz)R70OʶwFhEj(V|IvDqe~qTɋ 6Q-^{C6xX:I#r09jΤEJC6H' bj)k1_8X;B#!9uY!#iMBcECm{}*%K >[vѐp&uyF)m+kJٜyBud= +"($ԙ/1nW{X?&ل3ԙ13{EJ"C^]Cyl+p1p9mWLdۖ)R"ق{kͬ~!KcR|6-kkpt;r(izsjV 6l`V5^Y fQvyyC M%p;umE@u;R/qױNRωᘵaOU:cۍ1LwY]S\ڽiŰ鼴'4`L"" f#Ӗ{\*ٰV'j?uO×kx4 Rtcf2{XWwk9 _Z_hJMcixc\G ?g9tV/!]Mi?a痩޼XC8mE {Z)")G#K:씍I|!V!uoMʤ-XXVi5"DQƫu?n֯Lٞ @]B3W*DBozBe;}Rs/f:bjgmEo0uV޳$U8* -Yu >Esl0UUV4|%*>+@E"nCg7Ś4YՅ㵅 U#~d@·A&2̆`B(Ñ+k T'_-Y:qksLXtv>ߑ[; Ѯ!f ۿ$3!/өk9'\崓d̩L,p VW7`n~J,^ŒdS,4c,zWUf/rB i}TԬA*'ᒆ)X֧ M#(dGlTLܞMa=R:(K.g>"5GgCv6R=QIl Ş@{<;YHtRUw \89's΁#T2X9=AOVR!,dݚB3+("s^ĴL11;%ȸjt.&"ES!n=kGrUMgӂ0 ~ zpt@n1R'oؿyyZhbq\sZk37Իl3#&^xߧs~,D8rΈ. 2 K}F7ȴ#jOVEF$9ym{ѵ 9 XUYQ,tycmH_iJFFRWwPQyJcw-:#rۂdfōpklWk4-a>y5x9 ?`䉟/?gF J//Cyb6pbqs7VVk-沞MhR|P1+cWf(롃QI,]jܭKE+HcU{SМyͼunjvU IN(qKgoW}v-ɏ; J]dKg7먅0o9<\pdL֯\2fUQK3 զ2M 0kD9m1fOym\oFE1k]TH@RHGb1,dZ]Rqa,dF}÷nk (|̸ ءtEQ`yVh%t@\sDd $ ۃbޖNe-j+gJ?{ ."ߔxVR ,KsMxT"0뤸NIx h9}nw_z+1#xp2`dkB.n];U:oaB󯱬P'7!$OEmZۻ>űtgt[26! _ I?D>6e1#L5{,: Gel̻X(o<;LBPS,Ib |)M-En=^8΀qa4 }B/Hjȕ!+ an]&St\yz" )2DyfتMFQ3ql1 [m9pMЧ$,թW]#{j ڋg1 l%X`2˙u,-'ݣ7@oڌ5hOQ,;x837Ƞ7ًAaTO.u٬]KzwP$:%1k\%JSIxtC-̱CC:gY* ޮ_*t]YQ9<lpj c@;ck3e<<ӷ˺,E&O$M3"twO쬉y[ܭu^ +$(vzhd < M{&^nJ^:6f4* U%Ho[c(.5YŅH&Jr/TNZ(ytc*kgrdAY"&:+/cԥ3D670 XF@nfua b0X^abԣl+޲bxEU!%z=>[ZJf[tG !.r<t)\ -W?j5nn? (1u <$$Һ1 x?^G̓G< I(Π"M$Dp>4:alz1 ^'W_nO>W;גYO-2AwT-v¡!nEVme€R< ItF:5uOƣ%83Rc@Cm)7<=βL.c!u58ddtXxIt-Cu9?(qITt#!#^֟xAd ϿTABOoaxxFbC6UK!jup]pP뺀t"Qc~SG_Cg.:_WG iT|.F;.ѧxa=052~|j8 xf%g6 KgQV]nPJ٪prikz nͺRHcw*X Uj@`s~q]j£5J 'U|slkp%l{622mQ4cQ.7s[[?El,B}r3MEJ2F48O76$DyUx|M"o͕gi -Cn[v+|')εlx;H?F-OhuvgDzED-e*MRIeِ,Y9#!>-48C}fFQ7#g1jesȏ/q7mъ|` b+Gi7~ _ lgHάYܙC\L9MȘ*}LY ĻGL][W Jn }IMBD(Fke1Xʹd1(/q::X:d*mm KUNI;e^$ѝX">-P 4 >ܔ,ǽ0F/>NP}2ǥr:A]Uj/VDCOѤFWk@: qۋq-G.z=%{vD@>F Бc:᪡ ~yy?-`zC’iRtJ<*ޮGCjretb1}%J(˲mWGU"ݮBgEd::*RKc9x{k;Q1ʷ|760A@v?+`MhGi,Gۑrh 2L:naW+2(ɫ u[/\*4‘˫3g){WN0|yXq3-Nh0dy >՜# J,e ϵ0_*nN~wzjZ̓B˰~Jt^i2H&8y5%@gq/8=z7ȲsZҹƸpp&B]0Z~ls;vQ 1ic-꺦{$!1`v;ch`[_Z }h5 N\d[8[ YXwӃYj@5x^FX@,6!UEV˜fRwqN3dV XdW@c-l: >RC^g6Bq5"q 3.Bh9^HǛQXd5me B)!~*RFksOKBFouJ"q$; ҸWuA(@d BqϹݲSpi&Ҧ.IKmt7t/{LaiwdKlLj~پVFi`%\Jx,.hTGbMe"+f]grP)q"-Hخ<=miJi'/VOsH[9E&S5TEn_)K_iT|=,7b#a9]c''x9 \Ҿ-XCnz`k?vr![#K> t7c1VgU.Pd#}Ө-_ĈY#vQtu43r uOސ1_*Xܩ@D^ iuP<}VΤITONJ'NJD/\hpXwdA3kbw'WrK_T>y&BM) OLc7&nyk8+~Y8 ?Jz4򩵪bS; t}DO [+3,J*r(w>GZwv3KMg5O=#8˻;FӹN I- w঵Xp:ۉvfbM*=`A&^kr|MU'r(hET{rrX=x 蓝+Ԧ4`ԑK.Cn@? *gG9H&1#|h; ۏB%滸`;pt~qOGm*j'-2d֔ :$mpGO <*QL@o@zh &IzU`je"dױTwEzc %VӤ޼wv%1"oOtaG >L6˪E-Ǽo 3< jblN*|xA?BKG:"a1K&iX_)v4ܙ1P| ځn@a8}5 {`: .'"!@; >@N!6(͵e;?E3ZN񱤶&t3:7dU4am0vOte6*YUn{8hFQ;٭}S| |,lVQB]Ԉ[E\Np%dpN4 =#_}`=0qL)E֧j?v%Eا%D4@0%XuyeTſl%j%o %A Qj\$R`u7a8y+95^!pM:%BxM~6(j@_dJ!=?!T6fS4QyezVͺwZQ.+)EIX)'G3+>3O%t﯀35q yҎ<wWeB2Լq )}Wҏp+?_j}"OO,PrT1a 9H9WH@ș(GaEzH=X%VQTjoCjieɼhɻ"P/q |]wW !+R 5awY$r @~ [+!Xl铙pky˨:!bЧ\ Ydwq$.h|<ϙX#+>E栖(`'Vv}7m5ܚ"a@nq1"ha^9f^$Gzs_>.;.XbvH3jotk$Cz-`9۲Cb(JHDZg5Z2"1T 6b!!"A]_9wN/yݣIa]dt%E[mb >-VR jS{p۽["y0EwN& wlnM>,_.!]RSX[_NL29/QHk? D6+JâNcx*rl) <:MqSWtS 7ԫ-V/#272mlašZ^v/ H_ Æ5RA40TOI>d'֕LL'ml~$)ں0sE߁oB^lRgX` %% uL~3)`ZȴFxfȚkJOeooM_y1T _Z@G,Ɉ_ ۑ6J"Ճ|_:+Y_ UwLVb6ؔbP| ZbFBOp{S_)m) 0}/.x@|6ָA.Zj>q ap-="TXrc'}`ab07FzYQ.dkӭ~{-(D88;x돤bhSh!@| W216]p}8>w)rv_QEѽetN\b{_4A];gnpWYzIXXQ^L^tVRV2 lۋXOP4Ĩ]S(n(0;;⣳K|?7ͭKjshXYR3a,$ ѯU :|*fd/N)HY+[c^@MEME:]$f9o\ \S@H>4twQ:ͭ71ehԢL#_Ю*<1y8xq-⌾Gܛ`> RFQ]Y/Hz&BvoK_(oВBL>ߴ"rHT E(޿4$A7hAdWD!݁̓ QQ _P?NDwUsB.kS3<9P=J3u WDG(5X83y;aAVɵBjI.<SMl{%Y$V`\j8-3T\/o^v[[*XV. Lin&?ʀ=[6f.at, f^4w [u(P433'n}ҌyꒅA:r%lK%7aOvq&&|4p]sM/0̀X1=[ЃV$9ZYO_/EJM/4s]n'jXfN2{6b1+~j dwAֲGp&R6KR h^j@*h5) IF) }\a4ΥfZΘQh,M uh9:[85ZϨ̝*PɞVi&-g߈]Q 6csj!/; qcHc 6%n =4U0۳)dwS혿QcsX8G"Hh- B<8X8wC>8]q I\+Te?eJ]v,;K|HVA4wcx7c|URw.bGt"FDesڽ'[錖f"|3YU៫1CE=(L eF^W@5' *2VKl?@ r*{.b ;jj }+hv ?-?8b,ie4 ,A]4oj@W9>d+H;i3Qh¨X!a& mc-LG:7)clхW"]`ƎїK+0uu7;[F}i$IF ]?GG&Ym#baO ' 6 p o0.JFW \M)U%lXn`(j7+vx0 ,[jw.EF*Mhl#)8"~xQaɰLJ:رv[Pt?8խx0ETbn{9(v-2exhdBl)$ѦgN6&.exX"St%8@2{1^ь Th/EY<GbB($E]05vDbΕY^]!O9C@`CFp]`JՈ>elkjulIH eefayOʘ|fTW9p hϻ.w%ۥ_ږ2P5ׇq>uA5知B+J -}3YD.aG_A,xVHtC䵑SRn]J$MrcT\?>2X|PŜ7+gApҫԊ\.Әg&Y}Mc(^U3aΠbt 8Okt{DGn;B06AyǑ?ZY3|-,'^r@Tdʻ}?@s|P:7DvU Z#J 窏-Ф `+ +u۷BJ]濲(ax|G6@&e}ٮ2dF't8Jn 씆# twj!<5-Z?H/Rp0ٜgVmC'\R]`A+2r_,(gyЎ/JM+ZQ{A~Q[}) p?pSi[?cZ][}#q\WSy-H7$$dr\^>Ȃ#d:ތH}_7$FK&ʚ[D<^iEf+Oq`Y2 .Z(L<@1tigK{*9H82iya`Qム{W.lZ +i:J.Ug*x(/9xjUGNWmvX#ϵ -<ɾxBfۉtUXRE[.z NjV"G,"PNQ~Hp燝:nx˖C+ Ĕۊ2e-4 5 |1RwTKStM_V9ŭV|^.64qǔ:*QGi|!Րo&23Moz"=o%t(&6^WGDU|['Ndd$'UsgI}/vUޕP` XDu*yǓ. MKG:=LK`}[Y&[Bhrw&=xjvhBMͶ3*4#`[BSroOeQ⨫??OG7t)oon^x> wZ,w767TᏐNwz M^&,<5n:<8oG5, $Of9^*UP: Tnc[Dϊ&}r}m7&&'[tٛCڍ}ڗɓ42p\?e͡+_IY8gk޺b- %9a\q?$ ;@Ywsߤ#3Wi%?胀^LcjmʜTIVc+$Jf=xVD<~u;AGgBUb%C 9fÝ~ U">l(HR]?Y#gSlpV,f5XLGKNlqV- f[ID3Ezy JgltXٍGUB٠AWLcd6|ws N>lBo)A_#J'OR^"Medx1l^&ODh0S3{.j"/~~Iw))lAr([ZSwV `qwɞˬsP8PZx+d urU^CsC@BU>H40n OZqr aш_@ ;:eJG4wNЇuMwy<Ԍ _S҇.7+S%%a;4F om<3k;g*;\E 8qyc<4Sت _"&F$N?m{1%g[zjI26iYVބ)q0Yq;d߬iT^ϔKz53V4ȆϓJB8rģ^`P6%&ߔK{uMO iV/:3>"jSn98$˰oTW̎TcZTԙCB-%EDVUbY]VwN{O1!@)UOGuƳ?ZR 98Gr"kH kVًy^62y,1u'q!ʷfb9,POBQ5-ǃ^LrvRH43.?-@z3>pze 5"+4ґipj  6bΟ6+c,r:.޷*M[Ur4;f)'NJ@۫TLG]Pz_3 [܏uDCگ͎eɐ2G"Z5^qfpt2 ZDA3L a6[z)V5!Ci?H0ڡ-,SV7͡9Of{4$6X器 10@{آGͯQ&)mK‡EE:w|E2@X `uGRmh0[1^g{1+G^_TV7ҩ-nܷ+Yu$g]ewVcȧY=}gR奔 Ϥ!ŤػRNOfL n;hejp;t^k#Scmoq6y!@pIUȆ^os< "^[@OMߢݡ3g(& g |&-=o@ocVYKJSu~ 2tbx)J-bP>c+uO\dS PA'!r0e *v]IR*x(f/{&Le6Gn R͍eۍy_ W#Oa KV?5 D~$|<!ͳ=E2EwDۤ^xkR"Dr`8 ToJ#OekN5s?I]cyv'[,&@ȫv s l~9mǢ=X& z,.AD1 E:=wCig抪`s Mg B]Ŏ&YࣦIU V{mQGSr"iпNs?oųѬ%i )n7QVZ/Y k.+hz kKJ־Z&|Et֥{h``\Cx6WoaIoSB^\S"wN  yGߎeu>wG7QM2dgS sו2\ LX5ug*Pw/ 6asr[sRr8%E[CQY-ӓ==lK t.)IU.*Iݥ7W6]K1mzR]5xDꩬU*Tװax_f<ԼRl_E +JmZ)1nV Db$o=J.4ȸ&ReAZMf 1ԪhZX:ʘ̚@%;<=<Rhvxq:Mwڦ䷶O`I…d qF~ #Ad<N/! ML1Uxˤe^n'e_$l=L@c/@^IM0xKR"?RYW ~p,؈Jb`bv%Rɖ]/Iśy>ܣYr8ݴ}4:oBII%iL0L 9b5@r4eUՓe'k|CPAf)D.i'1BT:{H(<=XNӋx(=n+78vh%U#_|"ztla_}],vQ RJuccۄcy3%/5K;|}jNiޣ<7rP K"¢dֽ$Nam;*Obk:7Ji"$ČOކ:g7EN׬FAk )%CBY*8gj^")%SE%'|h,bk b/ϔ.BR &O{t#>kMyeΥ=Cw n1Ȕ!4*{gOa6i(_=PigLvRU+7V.'kQAT^࿎G}0MѽV&ޑ6t[1QofX!t inlY}}C}ŋw%mUlȜV;ۥ;㈢f>/#1:2|␟-2mR(+5Ҍ GcrixO07V%y=̘Q8%%Lv=@Jw '%,fPzԨ`Q#O8`Ep\a?ݿ_Smq,j4A.2]=*aއ`p&;x8[3k;k[SC/nDlRmJ,IFa`=gumLIhYpP1} WPHG^I[C'\Ed"*hIzB!@Rf6xޫ 9MmȹVa ZnH 纃ōiO ˕rPg -K[L&y*}Zj[:8o&Ђ͖"gJMt(Sv6@(| 'C }y6WĴ jX҈I W4:؇tQ}{V!F2 AI4@w`Q ,B;08k~S;W@hO5bJ6d7݈I1/YT܌0O'P3qr]okikA7!;iz}Q;J&/2nXz C7`Vwڂcx//9؇'}=XmV<|IpfZԿۡh O(0P9{L%rOiؖH*-u|e{uF6;Q?8]B)oȇ]2NlU UgF[ ԌFF@zu4:a &Ûy㗾{<=dO%27ݫ@uQRZxN5"rk f؄kR6 "ߌ,Lh+PiVBJ4$=a]]*O8վXX~_ gm_d ,TL%`:L#ǖ\Y;H-,)Frb2 ?vsblcFRU5ƀҏJf0$E lR-g:?Ƣ_yzeC`2=4L@v3 0휀N\gܓ2Gp+'ݒ5^yT(!FKZf^=t:. Q$73ȸ-Ҥ Xعz_?hDyKf.+${D}i/"'SP"'הb͑+75wdaZYEԽr'InǬda-t[Qi5 Ɨ*+]z{ 8Oկmwgbo8pKv9Pg+Yߌf:ߵi7 I.][Ά 3߹17n 'Û.I>[㒩aGT_]|HMY3|9̱z1H &8_t}) wr҄ڑǬ:ebksM%9DzD` ,iSƻVHK|5yf m"P s^|=Ktv&^ Y Z_;! =q?/ڋiC~RYYnGS +9|}t6ڿñ%)`O}Eb~CBhS|sq1y}Y G;!V('j|{" ف:vToK2uPfíSL][ONa,xE{t_A0i7Ry5sGb9:^~F(i7>2sEZhQ L[`xRo~"v~dWZ>U9D7J0RHڳ?_cṳ法GY/?WPgW6bon%#)2,|PL b5hO? c:u7404{&ԄJ/v3<]z\"=\ f)M,)FS9`iLZ){KjŢ {bIpQak"Y8 qfs^ݭMDtQ9ֺY/$!F E3C-c5֨N]6y6GDvtoX#=&~BSc[#  z4tUO#OYJc_-w@)b1~>u3_[@4ޡyI~Ty0A}tC9D)ex½ɅRkX/l@OX}#FyNL "2);kEj5A9*UDžp0}@uJQ !<_K; %g6*㖣I[(=Ok^`YNľqu7%٨N8`*פD+coܵ%O ("NlMKx&H_ u9{s]ʓD ugnx2):I _ˆ<fn |/8;>U%yzߨ0ko]M4WDap+?3|C_"x`xr 4o!p˵dw4lhrSڎّNҚ.$|l~ š$c1\2 mPCFN7K>nȶIE+3WĝE r)gˉ)̬v :' }I! y7mgQc!M^pVlgWL^p[${GmxrXL0Hݖ7&ی;3/͋J\ xYMYڱ{O\terӝ5OY/nGd ]@N.tc>x7-0YY:;D9/57uጙ%g)4'2XGh4,_ o;VsYMppN Em oy؉ǖXS ΰbjbwNOhj/K4`Pn$P꒙il:\jm*Y}Vz"R PlVyos!IB|\v7:y6N8ӉV3 0pQ痶2R7De9|0 \?9.?G20/ծ7 ̷V[F(9m-y+\U=hT)XU)-Rg n")lOatָ]UWL3-R:'D\1:6w @8 ڀӪdƐEU삼G=5&6,lC:ajS묘]uh*c1Tx=ߩϳwv5OWn|P(ALEW|GM\rCUAoϠѴw<Z#ZxɌϟuK̻YGs'9 l_P +nilw{X"b rOV~{ 'pXY &[Jp/dp4_0OZ)oB06ܴ=^V q>nH^:#* 2@z{gB蛛A% GEloJ2t^4CA(݄)  $ԉq+q?XvָS+ K4$]pfZM;<꧜,lVq0<:P:yRN\Gwwg:,BAB6QYxBo5G] BMjr0Q)RJwfRXƶOopC0B[9'ȉ!]o{W@RH12CI^G԰\XfW6z[,U|u2O qe)ovM,Sv}ia较UڄiFO_~g/ΩpT8cĮ{ ЫZ 9O+\3cB ^q -ĚΆ`l=StӞᄯn^M@K2ɂEjLBawS_: cmȝxU_EIAB/;^1j3ŠsݎTsW){BJ h RXK߿]WܻQˑEjK}~x.Sz 2VRE2[ѳf{l2:tԀ픩EwmכM?SǯqAE&Д0QGC18(Dwf=T"Dt_Mַ+2zWy=b$Mx"@ &)%&'t|Ge#h:|K,RL:<֎ r/\9j=h/A+*02RiqMl7,쨩)60*ر>5 H0QEN~qaOvWQmcxV>LuաXԛKezPVeUs7C tT/ȌGds ڨ R,%y̓ûD8fg'vbw[7$\a 8^@ 3ijsXR1C_SOQ Hg5 ) U[u'Iy ԯN+ awռć};;;ˇB`<(&h^-w|^XT Kէh Wt<矵b#)/&*nч cR !MlJR}-'uCzԑ_E3Hh J /icq(S ds#N /df%5>Ef?I2ɄՂ)'&יYZdѬX2i-m("$B%{[H(Wε xЧGKS]AzC6'xN۟F{QV!࠱{n(QN4Oܿ4^a/} 締pE,y=S*b/;]JhCɇ`}paeűa~H^E?|#4Y.N@~Ax .8X?䀐$/I:瞖҆Oo#+#D)c{MphON9~ pÁ$6Hli䆲Oַ,T{HE-@hȧ0*U 7e1PD5lC N݈8)RYO56rԽ2B"d%6[7`9ADt_M'^ؔm4>*){A( 4сX0ތ< "@B9RQ+wD8",šeMyILtHr.) H0A~},>m (VI;xcpR,ټӋO{t91De)nj~OӒH]6+>˿Wy\jmY AOfuKh)[mఖ)Z}PCS{Uz\($ҦWvU@#4dziL hZC.\BhyKw\ +Q&(6ZM`Ӣ v r{9L+=MVǘ[@$Maުy7 I# $A䚢Mṝ>^c`smeOؔ%.x.fpKs䵉Dmdfm4eb?_u1xoG"ܫ?e'%pbmrj?mv Uhbͪ$?}w|*T>L~G^E%z.!Iq e0u3nZpB8K7{ZU;ԣ !|2\>{q )VtCt ~WL8y@?~X_[.QlK.kr6VY$4Po,cxd!n#2JRX*Nzl39+)0in\tTFSZUHh0<3O]k+ _fem(ST9חu-yN,_7n<Ci\Ynb-KCysvDqG֒f~ Wv)TΪ},P=Y e%E١rpg6Qh)Ff;Mc2R,hnF pRo\J`\5!YO{K 3,оpv⑊o7a`p0޿Qj>ǏW"(ʕ>wX&9 ]~GaLJޘ ˟{#5,G6"`2.KkEG]{s@G"mT23uZRM[u?U\W2_Ub ?&7Wn|9|Lݑ6~>tuG$v&L:N}65UGb&.2msW4zT1wSNFL{ЙdjfaN;5L-!2iaz@õesm"O#Zґ`K;G)eIt'l!ZoY$@ vz >x\btkXU!^Q2W^AJ' ~Pn"(ΠV{.x1.gͦ"MZ̈́9ѝJ  mZE9B YcrCJA" fp jVW!F4%Cl0_^'&ZMu[ ьeN0ޙVo&]Y= :ir˜r<Z["0a6khvw{[45V^|IW6;FUR{KSBس])y/z7WUg@ܬh,J$l4&3)DA%8SFQI5%DZUX.{FYy"oEQ|'$VlL?t1x>|H3=+'-"e@N +)Ts?]k(V!㬓BqfkSm&(y U[D.)GF@evЇ S0D"p }F&֨{QαB.2z΍;dՆǕ*xzf+ ጵ Dc3QE@y|&)\9СW;l2}ʷQղƱ3k[0-nّx KwcO[qߝwFKڣU Q~w(;Nc;>lk!="]EvV7܎NXXJ7cHO P$I0$1O0*7w;GP] EbH'k zгJ8܏«^$ x`'7$ 9UW!0S[ \X, 1ALWIy7)/t jR{oHjUbN,(BˏDm vQ2+乊y2u-|.NԊ!N/;KRʁAߡq甤[bYɦ䃷tT2lxm0b؅R(jEוF; !'W#`zՃ/m+CYaqr*.8.J31A&*_MmUԯ$24F,] 1UR4P`YNct+--̥q@Bupn E:_pBbcmYk< G:btyE^iwcO]&PPK¶ ЬAr EcLTbEru.s8m9mFLÔp ; .uB<>)2#N"~ ǵ:9MT7xd=dG'.A-4(ǝ"Z錄U(aK{ZzcyFMmxz[m%2IãxAYP{XKb\gml΍ZQfw2n17?7gVd0QN&Y!> y)4kffudtjTP̫[IzV[I^|р~22DDQ{J`f}[ZRE`H[m\F7"oi5>b*'Ѱv2Os 5۸fӥ  |zR4Tԕd̽7pmz۠V萬 9`Xcuݡ TXUd50g3~ rs-Puw%2!m裉̊ZĞ8hN׆ ?R0|g}A#16HA:O Al21f~ƶuPٞLIy%HX`v !E)G&QZg'#D=!t4O%gY[4A 0' ӡA^9Abz%b#,c|jCʩKjI3 f嗷NtgO(] A(F0 +gl$+HWi$WfCs$ W1k>3@H{¸1 jC8OP;@ji=Q/bvO# (;N2!c ѢkM":r.ӊ{ϑ" X|ͧot+`l:ءkJ܃cf9{L߳Օ xd +_v`ΪqM&AMHrB]LgѦA[V'tT屄 d [/U4ވ1 [_9Ӝ_?kA!^Y ə)iC (WsJiY9Yg=٩h5+WO&PP;?Ɍ/i_ƮKY)IPb:DOBxXg'e?׷дo@8Lb5_Zmư)E*1$h5Ěvs|:v@(l8,Gw%K_ɯ,zo(-1.iJ5X䗵 iZy5,/)Oy.MiI~["/UWHزD *&r'+LTMP\zTrSd3WenL@\zPRwQN EZ(Zjs|}O6YUv(EPc)`L`b)+em C7[ ^w0/bU 9nd~hL!v80g1 Xjݚ;_A q>v5ɴM@Cހ6i)WFl1>}~}IM:/Sq ,qs3SS)+ek%s4Պi!^|f5Klkex8-ygv,$ӊy$̖q݉X&!\iIK/h 6E?T4q\͟\xR8:cY^ňrKH58\8=q#a`Xu`5A^X *o`^&1*D mKRftxƑ"_q,s_VQXꑔ?qEu'/"F{76EGąC[}o :5nSYx`3γCp`q3GjJμea !B=jKm_|U{O/{|tp0BdzMK+/>mJp|@ᵭUyrTOje.)G$ltPO"ׯw8^09|vaqþRL?&0幣,kղ.tb Y)Pnp{DP]ұ Pv2u!xˬ5e]hJsE\z760j? csG :MR{uV<3aZ+[Fx=S*)vF]Q/T;8 e|{Õ-pC9/l_G{(1#a;ܭAC2iݻ>2H)GD0FϪ8| `}?Q>ӁO0y`_O,w5:a!CEFf "\T148*·_ Li#,%tlbiaN=t(5/B{u@}>gݻ>>I'+t7?)z*VJgN5',1]&㞚l<NJ^gM5hzO1p}%98΋jS{Cq2h{wWdV^a`W|sQ:ҽ?}zؔ($*"FtW }"n5@ĜkB>DMVO>GK]o궺'/kܯ°bAmM_6[ҧTk|oM% 1$ͣh<&fDMbx,fZJ+_]Vagr F/0oWoXM7KX u#B?{ŊӧsSD8-$tą fl {fx\::[syH|Q eE0 = G詢m5pb/sq.ŽFb,a x>IY2L3ZAoiljm?gBLyu ///hC)bi% &C &]ߒ"~ѫhyRO dFm+&;ki0vmš/YW #o*$RA?5X?{dEt熍; tܖ^35#3A[Qpl%iؿ3Nב,Sf#Jr~R6 Nbtԕ eZ*> v.MeCSiW7Qn7-BAgv/+T WrQ/C5xB8dyΉכG\Bq OnMBWaP3MGCPr=Oj@O]d)'EG.-KcޤotdT%Z- ,UShHT|\>LT=m3A4Hǐp5moM9SRO%DWeeͅ{4RÔʠn},B3ǘ?p[Et8HJvj$nJWIݹDC,CMxxc䉗Rw;B7= ]vlDnƹ VY2ڑ[XE/KWIoW6W/ƒVH@ZnFN]f8G,&^ _ tQo<=]RD؉Sq*j]ІqSũD{Mc}k^\ ' TQ.1[ǙC+dW([l|k:`Ea/I6pX2Kzsk&xAإqN"+%Z1nh=6g]{.234JF}uڀ0A.0ˍo^:p 6upqO-6/'·?I9ɽ'Wa`duCVNT[[.<†5$WπsF9CE%Zq|;^,רbrMnWv& A 㮷6e60?x34G 4V\&07dBrF͏ԗsGMآfzu{.#+bXS EJ˪A@뽮N-$KOZK'D"N2Z^q~ `?HQ}ÊG˘dt@0/U\o1H-`k=Ň R/'b 4%g ?ԉOΰx˝&z$W-B]dn{Ր^ s`|/ -/:Gv։@Ƿ`VK6TKfe鷝zQ1d~:Ҍ^7cnh+ij=1 -2Bw+ AhԖ|9&'T4S}!R0;5f y;7 F\p嫡!@-R4X'Ը?O=Ӻ|H<ћ w\ k횄@C5x7O{fc_P 5|`nSC=iPP'l/r]Ѕ|+0NkdQ&1a89.LhiTdm,Oы$&ɐBzЎB-RDA,N曹'0,6 $Aձ~b . ذ~Q! ^ 0t|_(h(qo::\·N| #:$W{Ĕv^VPd{=wA&N'SPߚ>FXJGCvBR"RmZsd`[Qoռt1TKLwdA3(Nѿ9uCV ~J_p?s<ӆtg|[Tz,d'Pw$6^5G+v90bPAF~V&V#e:}NM /z@#1`HY](Xޏ홢7y#9:E]PhoO ]Cz6YfWhE{}h AÚ VuGD-L@f`C,-9W+ .IKTEڮ[Ѝf$ Ugw 8 8H i E+x;. :V5hPj"v҅8ġk;u>nLmC=ܷiKr:X~haG|u0j>mX<$S7yn۟rQ?~#'zVj_-κp9cɍu@$g.@QM_&|e*hՎΧ.9g)A* $rd$~[EUd8(]~pnoҞ[V#!?}Ey:R"v8)։((^xvJ }iqߋwI ż`%|{/35B33:wCċt ׄ'EhfX&n.f:z{E>(+'ؒS 6۪PLp0DYlZ&+W f$Wb|P@L~56tKw؅L . }ΩskLN;CEBQ_eg\f:gSvyL܍Qx}2K <ӂ?7a<:oBj>rSRIڔ)wQu@BϝÓXPsyULzM̦~f b,Z0[T$<"@ I;m1axsY&{4$-X_YpdB!̟KcƇ#_3ԨCo>~شa>h?EP.qR13bЭ'ݕ`߶ڷ ?eȖƭ{lH6#9X..BۋQ^P'܁)+b2&s/q.390(}Ui8SXS#'Y0?e##=8>paC]dl Cp\'ˤ9|__460Sۿ/Ғ=|AG9ы>sj!C3dnY.d5i맸SU@dx<5ʽ#I`=Ϋ(^eJ6X0dABN)bc*^-rj=)“-#:j A:#&0ϏMPEiOJl1WU)R>賋ԻP8&_T5_@W'z I֠o(ZW .n]Ll5dwhJڈ|P-dRLPߺh%%{[2Ї i`y@řIw@r_*q4k.4_m!WoD{]7yf =a Xd,9 PڦcY!Ȯ*2 ^&N}/Ms8oaL[9F@Vz7At175t+I6w''^:{saй[I5bw,)/t+dڀFUĶVWkDG(KbrB\RǪl IznX9yC8?*4׷8H] G\p3Q.0OG6Pr~;nxyE}F~RF[Q{_i"LNXAW+ ,fF)CeYL"?cEz=}w)sT]I ǮÅP“y7B+֫T>`>:k@j/ݨa&gddd#Rq+R#ݍu\z2C"S *L4v& j 8c:d 4" 2qGh;+k$ ~2ݷ7f|bb-hp#FJ@'2<]'kA4尗'C8x_كwИYU>'iq|XB<aG4B| Q:gv@ '5.ң4?u.8v*4fp?fvℜ2A[  듎i/s-Q1fc"%|9Du t$o~_&Fb1I#7r YD$k]R%̂t)m#5JNF z1XPtV4:Yl&_Rqh2Ȃa&zg cnXL{xd_W<FK׶'B & U息I mPEr]c8C[X6-$͚A[q /z\|X"&Bs⻇=BzC+HmN/^z&!C1-2T#l/e7mUZ\QgHndN-JaG=]1p;.XǯVt|96{a;fVPԈ̒;JlT$\?V/ Kp$EXSX0]呫)]?^o"Am2}]7=%\%vnh-2m vYU<ª?*E9[c~5UtfnH2{JIf_u۷V2sX !_z':58m\@peJ4|TL͖Updу Ja)Ǯ([Ba |br^oulyW;ں=\5\G؟,,. PLhfc}|uz c + tp3dm^DOR5kxr!1bɹv#)A:>/Ta\M_(G[G0SꇾGYrSly2H  h2>^ &ܷlqH 04ӏ()d46M׿/7;nh7Hp+;Z7It rU_*4"YOr6ChZF:ӥ} 9^oWр , xw⚐ 0rܺm\FtOVks(#n IDQ??j{OI 8{<??v]X4n_-\$.(y${QG}ˌr%+;:nMyIX?}z1*8(P]fr%s 6ZE%ꗐc8Ǐ"|^_a|ƤJ&"Qn'3Q@z/Qv¯QbA/:rCn1x4W՟[we]OyuѨq;T="lP|'_ Ẉ?r\;' #Ahȍ63}cNj7a㽌6T:^:a<`u*cpR_Pې)xn]?nb%WB:ϞmYE)U HԪ:^op.󘮎(nSCy<+/YREb.B l4qԫw}wuةs6@j'tD-,5m-L7(~uX dԒ?#fCtibWz!qB6J *-D̊Z56O^9mo_?(CqnL|vJnirc"P!SW~ň"XS23t(qp3jSBDFVDkB'rmI!;Wy-jg+"~+?F~~{κ <har6%ahfP&]c!vnS(KƓ*8H\WvrݔT*PJUaWڷ x [LIՓH]e[^`R//H׻6%Q-V#q. ?Qzy0myf\{OXBi^"@f&k少K9'DIT]*\Sϵ6Q> b >{0 &}t[!HCTrrٟl8М UZ顦Sw>"܆#B"+1oxce@"Hx-@Kp vxgpK/L٣-Y,BIp3,[ X]tE?J8_pAps,7=$P .kP:: b" ̀R,sI\R1iAе 6llUì:\i0͏;ۚ0ܛtDl\ ^ ԍ 滥ueY֡TX?^D$ KOµ!1TPJ?k*I](צ2qw'ի@yYh${gòA20H^ٸNT=_̍\arkSG٠<Sͩ@:} eY/zEZi}n0▫9?ڱɾxqjx?gz?f_RsE`r-:IHHV@pB>Qyv\G4y,FrL BWJ„s%62L !¤/*!+7QbYkwNgS TGW_^ ?V᳓'rp Wc6z+wx B,WZ!itJ|0Smu}8f6z)2A S|>kf5]}&CYش:4SߡI.kEYmpMLőU4qE}|΅b<$!EhrعRsBh SWsdѝ\5P-kw' YSʉc% ڗ\5'%qw 泒u .@?W6ltz[-)&Zw " +c-0m }Z٠/OlCTNI7[ I {檥g E3bHhs+O)MqRR#tQ(?6AEQl_-ZQ-yΒ9H Ay(]01XPXJ.OV{o\KϦq85aKADػO''Wu]? ^xr%/!C$p $mQ™%zN#ΗLmȯ]W4R7MAEl/()|)vV(9k$[hZpkɧޣdVl>kŹTֳi'S4f#ng䩬nHGH~UӫI1Q&n9|3>Kpg=ęUj: u|H7Vܩ4 c8d^ 8+d3v(>+on ̒ YHw2(̄S+Xg4S/bͭfElF1` 2}fkiҥCӏ^SG,araA(El@˱@HυN^ ʰJ#AAnu_r{bH?<&h6P.nܢ2ji(!r-E|x.Of{ aS쩦"s ~wc~vë,@TO,/.l|FkD6Jk.I=/Odp|Tmϸ-"'bF9l⟄aϧqfص־69Wdp]GM-z hA &i9SlP ׮V 2/* Hux}TўEZVrEv5vQcه6|6qCܤ'sgmTonㅙcRw2t.t^0T~p!9h ڹШ~:pP+ woͺjmx]7Ꮞ.IE چU] 7+&E,۔g׋͞?ZX9Ӏ/Hj擇 U'g(kI2Sv(^Ei6zL:G V,:, %2A ?M@DJٟrMYp¥o璑{B ݊X0õ2|Q#% /-cħ[Sb}cqSAu˸kbrي^VpzlOLjRPN~z'yO[TqS5|GR>b [&'иH(f&%C%"+aHX6b9>%ÂDaШ9C [ ч_U/+bh@ ?cWϔ"D kAڮ-D.h)"B/qOSb>p1%>!sd4=\s[> T/ܲ+8&g_bx*iC!,+c5}&1!cd? Im}Id10FnՁp2/Mk \7=PEP̽I 䍗]]XFPB7 > P_f'M)w~ײ¡<(zz2i55H ` q;RF2[4OUJri J2y'OX">%˅5怃;j ٩+@@Fbl*_r q46zi ^nVbOײ`@GUQ-̅?I#0#IO%&8͌PGV*5Ӊ'7)R*8 SVzibKUQ0.`Jh|q1Ǧ.ڦ8r*.pYP:^J{G;+8 <>baNBCA\S<'RshDb4n2\qݎ " 1:ucpg>;as"_r7C ]bF"KCe-/ 7ӷ;nם#A:g/h,, LY?x ɹ3rꇽ'3lGԠ M (%=d=X; 8nSCP/b&:"tC+PtUT(wVFn}S=#2_2]'̸VڙVP0m%W:$Flj8?N"u%/[A1 I:|Q TQ,azPIyZFė(e x%85irӡ\Ry-O'xtT:b =SSH22@HuH[[rip쇀:UdxH_v!~=bu14?E!8Q%!0%2E2JZT.Q[2yz"Iu{&ʓv!dE@ 8R sG&I?lͯ1K{]|fj<.v< ,,)~}ijsw߻`-eFޞ'⋇H6c nlv$)ܪv@Xb)SQeeSFb/@zSޣn{mM{w&u&<0%ZfxsnƫCeB}Gn|+yTchw2By55u390hHt-z|STo)S}|7iamn?xwi &׍0P׆d}n WpK &ٟi_3o 70O`E MQ$3T,9yG#n;쩊ejOL!IuKQKԢ}G1$6gCge)cTP0+Z#I0^,oAb,t#`.@ + m嶅?5 ,+%>D{TSXsi|eyi}-qVfhIteAw_οo# $70 I'n$bIt;Y^eH{[83.k1sJ6W^yLC˵b-V+j|bе'̫8o]7o%|n}3>ku xrA/7'W *恾egNVJ݈bݱNz9jRf _$[iբC> ܿMumWob>4vzO %5ݽ7jLGmr!HĤpIj?. 9AjHE|T#.pCk7 j–r#`FR$QtN/U'=0 JCŬgW{kQ"71A{*M\@0{h|- ^,'楳Mis%[9z1Vzb9}\)9Ƚ7q:H>n_\QGaDXݷǻ"^)Weᝉ5ڐQ e P6 PΩ('sVZi-NW .u"SDBfk~ *lr%~@UO a!BlMOۭr=|tP2Ce*Z::Etc7C.BRXKr^=ꄏ,θB,WȦsZUmW|1w`@=#i=7D։ˎo⹤?$KO+K^3=@vlҾ_"Z#:>phvۆ~x1 CW_} ?HE?=h\ XK\ OQU̠߯XCY׀dX]zCP XSldɎQ׬C$!H)AW\\ǖi >?P vN )i Qix]{OHMrWFRXPS5C"Ru ï :Q;"=>tXͬ6ْQq $SGh͕k6ffr3e('RǛI} DZݮyhLf*ve\,cj~4_20S09aW@ o\5v3aan)ԠV!w~?&0̸S]XBxCr>ܻH@_>d !}ʻ<#3bEO.FJ =nʼnMHTٟVXŶ \XyZvhW[x1Xphx ?uNѪ.6Vc}?`SOcsxʡd3t_eO'+~6V|DJa"}4 ,zM~A1qe.'b悕8׼"S3R h(p3bm9zh܅>P- @4#*L ?$MEz\yZ q`!16݂7 3_Rb}tz9BY.}BA [)Iu rA[qxn\*=~fZUةNu,Y ^#7jS"HtC@!w=Y9ɣDpͭ Gt²F*zoKb dOQy*Bcϸ=%ƑϾH!B\~'8B{O-'&t.ި妜(zrt}X:;эٟ[0H2:в*o0]P#lKph8ءf7 эO6{K'_ H7P1 B?U&d> R}_^'Ϸ(Cs>- (KA)`3sn58]@%fX9i)`*PMaЅjG[tukp.T&-Q:d)Ov@)R(FW"<+W1SװcXl&BLPqX(EȼF 16=6:6WGӥnB0L_aDOvѥ]ٛH+ppn_п-"sI8 tb_!yHLWڡ<ԋبFd}5@鹊5;sfG@.W/shg?|v {|Q<9'=OfL\d=FlAHQ*UCx m58A{O[2H|yCmWj=Peݿ3^yWxspQN%llHTuf=+44, 8=DM BL||leWdXJْL{Um9$Z Tʯ/r{|x* ÇHȃ͇w@>5zf=;vٕy4m嘧_ISڄA(SfYJy(:ygzS}@?z>G5wx [2 $̶>dw1XcO-Ҧs!%Dả'mۈ2A l F"Sg>) Hhz%VXD~C? ]kvTҩ@H18 Ue^x%N]]_ Cx]w~5dp6IhS!2XDgp91O8.8)svf2\ mܺ688GEgK/bŅ9WlX |92K\-A eӗ#Ȗ.#Z4za?!H֙j#ZRUgTNB:& R_Sr\Oq^&5&w. 3Rۭ(ΧJ z7/[i4,mxꔤ3Gѫ|5o8CK u5vk%oҙ@/um yA?84d&H-l!J9K@z&t]ey΂y< e YjG Q8cލ쨨Ϸ>" ~f`mcΑe *tE&[1DST~9VHlT"|=R\ 0Q15zL7 m T"GxV",K-Nc*MB'}6rN%[!6M`.5(;'rǾ:if"G]H/ȃ>"~C?\Pw;0e,HGWJNUdJ!ttT: 4uYiyL1=F!9@Q[\jGChN&;؀Jz d\9.H9K7D$>@27ـ]Mә:_{;ղC=w 9BafK͢ zK)ft|q Հu6sO[rB EVЭdy?,Vfbif|7 z'ξI1_ S#m,~P? /T*>X=֫_Bf3WVk[ߤX^^uL^'"G4"i>7 n%>Qk +=^Yu6r(̢p}oqn$FzC;o8`[+w?q+aI@?9:el`ceQY۞@7Q)4?n;kL*g]rE' !^'٢sY]e=Hڗ4Աy^C̾1a(wٓ~^/kԫA%'f.Li+Hqm?y0gKDE2ϳ"B@/<9Wjۯ߂%{סH[-{fpr%-fwπ|aDou;'Ta@N7W-!9 a ]Ӿ[ wisl8Y9da֠_nv8lZC^ 훼Ȫ|K% j{9s|;@yяۤȄ0Wr 1GΕTl[lo1!m f2#HɌ>$xHV$5RIX,ِKcpmwHOuR@k7GTRLt]oItpWo +5K2OjpUJҟ-98ÕޝwjOOaa:L"I(3`X@˭fP;9A 7aba pe `X̉kU^u}DigZ.ȃx`${A栮ܬo'Z=R$8G{UW.Z;n`>޻5PҸݰga`GT.[FAlEu~ `_q0Cxu3;SkȢe5JˍcAn\<~I1l~P"x2-&'P@"R;1i*R(;oVrnױ6.'z@2]oKŝ;YN6 t%3;ŎO_WBܤh{9}MK>DO1q Q.Є&[6Z,(=Y-b5*`JUػY.*2!{UtL{qvThu}-,c)5V&B,e´/JT`24>k=43%>yA-/EwAYb&.&?z 1h5ȵT0F*۸"3I|)z8ҹ3x]rYL cxi7bV_y7ҴO/:X` }52^În@]LMDFjDLj7~H y~O ]ުjoqo4aY1?Uݨ20o9lZ/vT3TO3 \K&UeW݂-V kQv%&"}vBaMF"qPߦ7#KsxԴ}L\XF3x;ncsakN"IN(A&WRtYۍ˖>mWjBɋV᷾nS I Pp &'BRW_W ~c$b^:@(G9T߸,'fX V#C漬pR1wŽܘhv G}ARX62GOFVρ.$?mlM.hVJL4+=ef}H(v1%m 0G~G;ZyB9 KxW&-!UW/|#17ƭAEaA9i#.< TD@׺,I$eK>N~@qQYs;tRY8sr( iYlwmA\RE*՘Q22ﵔW矹c%4p{dY᠍VN ,^譗NakyeF7D6H}Ke_ ӓu[m8 Am?"s ʎp\\o8BÕFMr 7*GyǿM@mQW }Abdx?BD4ڄ/Fw2 %q=bB7{jop K$`iZ(B 5stLOkNy6SWZߥ8gPh۫D56%LM3Զ"o5: ' q[KUP҆e7/oR!v0uf&+xq3! kP=o紎` ԥ9S0P>`Q+d 6l:?:U3ӺcJpp$„?FSPG6_bqː nC}`J}:NCJ}b g; [)JsvtFlAڽF J˜ ^rݘHaІEx3k$m$29g}{;B $r>ȣ=+vST>!岜P'+2nmcH@U]> 3q/gVAG TuA8#t];9E-evnǼ(BDt񃹟ٱ \ N_0$~g޿܄/q3D~&7#J}Y 6t׾pIiz uce‚gqWT[Fsc!aOlq';JVv'tRyT$B1m5RaHR6hǬ?NOc_A/<Ռp5!+[? Ԩ& o t>?DJUJ4.OyO"N,B^!W҃a#b]̞!' ?G"ZӐBhN\BǢ3-5|4U(ң*.Ba ;mE"&$hxy胮UckK4T/xL*ݡtC$h|:|*#g jLr \d˰s+ mE83RP3*YR <H[Y9qB~AeD8M\j= ?!I"WH].^MpǗ4-_,8j>ۑ-lx0q*>K!uy"#(u(̶[K$T1%XpYʸ &bGn(Bn2L/ ܾU(zYbV͘r/Dxпl:w@F,819{Ɉ||/-u.x15J_Y,OCʎ h*q+ÞV)" a_ʡ.Uu_@AY%^bq N?\1ءQ؍9Z]WűNs1-\,0deWz$t94bZ9&J-&H;-v-+*Mj[B^*y. PuCo Q_k%|#>֩㱔;dIh_lxXq/G]xw *8u hsg^8VhD<]ҰEWs9ZNh!=Nj5vOV1HBW}`=Y\;7#K4i,h1R&:r7xW;"t%1e5*C4g9NO阐(YHr I}ZǼo0fGK(2,o}KvCeO4!- (L ZHBKz]8/"<[cնhIaFztNh$MMhB3JZ˯q -5g0ޜL槺~< c-ץEt:=س2CL˦Ѵd|bAdw/ ඾e[V60fiR˞ܵ/%L` +O!6=12p\dq.Ыvtw$Bu:)-P}2Qͷ/hYwDfdBFi }{ŸB~Ay8Cjq@(/UWOKqVT*Vw+\l "[,䡑p-n´AD&O#F0#Nqv)޼sc{\ب$[z{,(xUKX9}Փ ć%(p$'|ցm<2՚3Rs2ʤA/_<nGG(Z(nqFԽ>b} ?Zo}Q EQu{Ϲ$ $DBAJêu[c$zJ잁- 6w7#4"͊wY(j*-!|>,P) Kw+#^HnK=2' 9pЙW È\|יHDl"&N(˵wbI+/-zcL-P;hǏ <:_L4i$1$p[Ȧ}dPI"{{ڜ(@uRfAo`Ȁ!frz(21¶w^*z3l2Z3aE!7*N/ch\<0cN]=X 0~zYJҰA)C\9wuh0f؞8$|n#TY2̂`<ӉGy-tik2!ZPUh:Ft5z7a6H{qn $Xf-M%EqbޮnML3 ـKGɘ4F9Wf9H%x4.ض.o*~UrdgWR~!4SӷAzuu/G c; chl01.!`},6rgB$>9|bY_4 U8p!3YB=]+ !eK+aC>P8]HwrY#ɣ7[!S(J22(c:Аt:F+j~Dmx@ > _pxz??(Lq|~tRwj /7MME(a7G rNݪB$R|"nk8q(nxdJ#t>as;|VxLyoJQ 9#h>G_ֳGG€iZhR2zJiB͑+&zzd5欨0x/ \GE!jEطݝh(Q~I^dş`,429bSi2lb*"Ȟ{9ZTj5ڐ3Fb.kop<;-iqGӵ^ a $sԨO#ಁ)v2LX5OXempZDET/*C@j LCܻuSWlu>hNleñiuS۷ZAo6p[Zd+$N w_xIF%X߾ ;7^:fә^ݙQ@| Ξժ> f NQa3nl2{^S^O&",6b̦l̐hµw:"HOY%ep] Gvt]CV`D*2F(#OSw@Y(GocN\",^6rq]3Qm7+zr51%̬b9ٮ7l&wLqZR*&|'ARRus%35ÙQw/y1e *=TQ>jAӠ#Cb J,J` ]OF>l *32w~%@YeNJxZ` 9 DY7ɩ;6؝h\WGb-\Ǖ$b:2Y׌#A2cqR.131grE4#Iw5qьҹD]{ҿs {9R21D]`lrC)̩[r!yULgHd?ut=:Oߚx\9~9n%/BOϙyw~$B%~C;[ Y]r-ފ射LnU&*A tM|F{G[ iG0ekf8h0x7JÊHx~_8xpѱJ4D_dN  Ɠ鷻9cZt"À%b%L9KΛ{]LJA ҷʇgvFPAҒk/6E ǒGF' Y{'iu 7zMm͵r-1iwdƑ }{