aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/develop/generate_utf_tables.php
blob: 16a449679b57636288c4e2a0b85e8a4c06458fa9 (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
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
<?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.
*
*/

if (php_sapi_name() != 'cli')
{
	die("This program must be run from the command line.\n");
}

//
// 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");

set_time_limit(0);

define('IN_PHPBB', true);
$phpbb_root_path = '../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);

echo "Checking for required files\n";
download('http://www.unicode.org/Public/UNIDATA/CompositionExclusions.txt');
download('http://www.unicode.org/Public/UNIDATA/DerivedNormalizationProps.txt');
download('http://www.unicode.org/Public/UNIDATA/UnicodeData.txt');
echo "\n";

require_once($phpbb_root_path . 'includes/utf/utf_normalizer.' . $phpEx);
$file_contents = array();

/**
* Generate some Hangul/Jamo stuff
*/
echo "\nGenerating Hangul and Jamo tables\n";
for ($i = 0; $i < UNICODE_HANGUL_LCOUNT; ++$i)
{
	$utf_char = cp_to_utf(UNICODE_HANGUL_LBASE + $i);
	$file_contents['utf_normalizer_common']['utf_jamo_index'][$utf_char] = $i * UNICODE_HANGUL_VCOUNT * UNICODE_HANGUL_TCOUNT + UNICODE_HANGUL_SBASE;
	$file_contents['utf_normalizer_common']['utf_jamo_type'][$utf_char] = UNICODE_JAMO_L;
}

for ($i = 0; $i < UNICODE_HANGUL_VCOUNT; ++$i)
{
	$utf_char = cp_to_utf(UNICODE_HANGUL_VBASE + $i);
	$file_contents['utf_normalizer_common']['utf_jamo_index'][$utf_char] = $i * UNICODE_HANGUL_TCOUNT;
	$file_contents['utf_normalizer_common']['utf_jamo_type'][$utf_char] = UNICODE_JAMO_V;
}

for ($i = 0; $i < UNICODE_HANGUL_TCOUNT; ++$i)
{
	$utf_char = cp_to_utf(UNICODE_HANGUL_TBASE + $i);
	$file_contents['utf_normalizer_common']['utf_jamo_index'][$utf_char] = $i;
	$file_contents['utf_normalizer_common']['utf_jamo_type'][$utf_char] = UNICODE_JAMO_T;
}

/**
* Load the CompositionExclusions table
*/
echo "Loading CompositionExclusion\n";
$fp = fopen('CompositionExclusions.txt', 'rt');

$exclude = array();
while (!feof($fp))
{
	$line = fgets($fp, 1024);

	if (!strpos(' 0123456789ABCDEFabcdef', $line[0]))
	{
		continue;
	}

	$cp = strtok($line, ' ');

	if ($pos = strpos($cp, '..'))
	{
		$start = hexdec(substr($cp, 0, $pos));
		$end = hexdec(substr($cp, $pos + 2));

		for ($i = $start; $i < $end; ++$i)
		{
			$exclude[$i] = 1;
		}
	}
	else
	{
		$exclude[hexdec($cp)] = 1;
	}
}
fclose($fp);

/**
* Load QuickCheck tables
*/
echo "Generating QuickCheck tables\n";
$fp = fopen('DerivedNormalizationProps.txt', 'rt');

while (!feof($fp))
{
	$line = fgets($fp, 1024);

	if (!strpos(' 0123456789ABCDEFabcdef', $line[0]))
	{
		continue;
	}

	$p = array_map('trim', explode(';', strtok($line, '#')));

	/**
	* Capture only NFC_QC, NFKC_QC
	*/
	if (!preg_match('#^NFK?C_QC$#', $p[1]))
	{
		continue;
	}

	if ($pos = strpos($p[0], '..'))
	{
		$start = hexdec(substr($p[0], 0, $pos));
		$end = hexdec(substr($p[0], $pos + 2));
	}
	else
	{
		$start = $end = hexdec($p[0]);
	}

	if ($start >= UTF8_HANGUL_FIRST && $end <= UTF8_HANGUL_LAST)
	{
		/**
		* We do not store Hangul syllables in the array
		*/
		continue;
	}

	if ($p[2] == 'M')
	{
		$val = UNICODE_QC_MAYBE;
	}
	else
	{
		$val = UNICODE_QC_NO;
	}

	if ($p[1] == 'NFKC_QC')
	{
		$file = 'utf_nfkc_qc';
	}
	else
	{
		$file = 'utf_nfc_qc';
	}

	for ($i = $start; $i <= $end; ++$i)
	{
		/**
		* The vars have the same name as the file: $utf_nfc_qc is in utf_nfc_qc.php
		*/
		$file_contents[$file][$file][cp_to_utf($i)] = $val;
	}
}
fclose($fp);

/**
* Do mappings
*/
echo "Loading Unicode decomposition mappings\n";
$fp = fopen($phpbb_root_path . 'develop/UnicodeData.txt', 'rt');

$map = array();
while (!feof($fp))
{
	$p = explode(';', fgets($fp, 1024));
	$cp = hexdec($p[0]);

	if (!empty($p[3]))
	{
		/**
		* Store combining class > 0
		*/
		$file_contents['utf_normalizer_common']['utf_combining_class'][cp_to_utf($cp)] = (int) $p[3];
	}

	if (!isset($p[5]) || !preg_match_all('#[0-9A-F]+#', strip_tags($p[5]), $m))
	{
		continue;
	}

	if (strpos($p[5], '>'))
	{
		$map['NFKD'][$cp] = implode(' ', array_map('hexdec', $m[0]));
	}
	else
	{
		$map['NFD'][$cp] = $map['NFKD'][$cp] = implode(' ', array_map('hexdec', $m[0]));
	}
}
fclose($fp);

/**
* Build the canonical composition table
*/
echo "Generating the Canonical Composition table\n";
foreach ($map['NFD'] as $cp => $decomp_seq)
{
	if (!strpos($decomp_seq, ' ') || isset($exclude[$cp]))
	{
		/**
		* Singletons are excluded from canonical composition
		*/
		continue;
	}

	$utf_seq = implode('', array_map('cp_to_utf', explode(' ', $decomp_seq)));

	if (!isset($file_contents['utf_canonical_comp']['utf_canonical_comp'][$utf_seq]))
	{
		$file_contents['utf_canonical_comp']['utf_canonical_comp'][$utf_seq] = cp_to_utf($cp);
	}
}

/**
* Decompose the NF[K]D mappings recursively and prepare the file contents
*/
echo "Generating the Canonical and Compatibility Decomposition tables\n\n";
foreach ($map as $type => $decomp_map)
{
	foreach ($decomp_map as $cp => $decomp_seq)
	{
		$decomp_map[$cp] = decompose($decomp_map, $decomp_seq);
	}
	unset($decomp_seq);

	if ($type == 'NFKD')
	{
		$file = 'utf_compatibility_decomp';
		$var = 'utf_compatibility_decomp';
	}
	else
	{
		$file = 'utf_canonical_decomp';
		$var = 'utf_canonical_decomp';
	}

	/**
	* Generate the corresponding file
	*/
	foreach ($decomp_map as $cp => $decomp_seq)
	{
		$file_contents[$file][$var][cp_to_utf($cp)] = implode('', array_map('cp_to_utf', explode(' ', $decomp_seq)));
	}
}

/**
* Generate and/or alter the files
*/
foreach ($file_contents as $file => $contents)
{
	/**
	* Generate a new file
	*/
	echo "Writing to $file.$phpEx\n";

	if (!$fp = fopen($phpbb_root_path . 'includes/utf/data/' . $file . '.' . $phpEx, 'wb'))
	{
		trigger_error('Cannot open ' . $file . ' for write');
	}

	fwrite($fp, '<?php');
	foreach ($contents as $var => $val)
	{
		fwrite($fp, "\n\$GLOBALS[" . my_var_export($var) . ']=' . my_var_export($val) . ";");
	}
	fclose($fp);
}

echo "\n*** UTF-8 normalization tables done\n\n";

/**
* Now we'll generate the files needed by the search indexer
*/
echo "Generating search indexer tables\n";

$fp = fopen($phpbb_root_path . 'develop/UnicodeData.txt', 'rt');

$map = array();
while ($line = fgets($fp, 1024))
{
	/**
	* The current line is split, $m[0] hold the codepoint in hexadecimal and
	* all other fields numbered as in http://www.unicode.org/Public/UNIDATA/UCD.html#UnicodeData.txt
	*/
	$m = explode(';', $line);

	/**
	* @var	integer	$cp			Current char codepoint
	* @var	string	$utf_char	UTF-8 representation of current char
	*/
	$cp = hexdec($m[0]);
	$utf_char = cp_to_utf($cp);

	/**
	* $m[2] holds the "General Category" of the character
	* @link http://www.unicode.org/Public/UNIDATA/UCD.html#General_Category_Values
	*/
	switch ($m[2][0])
	{
		case 'L':
			/**
			* We allow all letters and map them to their lowercased counterpart on the fly
			*/
			$map_to_hex = (isset($m[13][0])) ? $m[13] : $m[0];

			if (preg_match('#^LATIN.*(?:LETTER|LIGATURE) ([A-Z]{2}(?![A-Z]))$#', $m[1], $capture))
			{
				/**
				* Special hack for some latin ligatures. Using the name of a character
				* is bad practice, but for now it works well enough.
				*
				* @todo Note that ligatures with combining marks such as U+01E2 are
				* not supported at this time
				*/
				$map[$cp] = strtolower($capture[1]);
			}
			else if (isset($m[13][0]))
			{
				/**
				* If the letter has a lowercased form, use it
				*/
				$map[$cp] = hex_to_utf($m[13]);
			}
			else
			{
				/**
				* In all other cases, map the letter to itself
				*/
				$map[$cp] = $utf_char;
			}
			break;

		case 'M':
			/**
			* We allow all marks, they are mapped to themselves
			*/
			$map[$cp] = $utf_char;
			break;

		case 'N':
			/**
			* We allow all numbers, but we map them to their numeric value whenever
			* possible. The numeric value (field #8) is in ASCII already
			*
			* @todo Note that fractions such as U+00BD will be converted to something
			* like "1/2", with a slash. However, "1/2" entered in ASCII is converted
			* to "1 2". This will have to be fixed.
			*/
			$map[$cp] = (isset($m[8][0])) ? $m[8] : $utf_char;
			break;

		default:
			/**
			* Everything else is ignored, skip to the next line
			*/
			continue 2;
	}
}
fclose($fp);

/**
* Add some cheating
*/
$cheats = array(
	'00DF'	=>	'ss',		#	German sharp S
	'00C5'	=>	'ae',		#	Capital A with diaeresis
	'00E4'	=>	'ae',		#	Small A with diaeresis
	'00D6'	=>	'oe',		#	Capital O with diaeresis
	'00F6'	=>	'oe',		#	Small O with diaeresis
	'00DC'	=>	'ue',		#	Capital U with diaeresis
	'00FC'	=>	'ue',		#	Small U with diaeresis
);

/**
* Add our "cheat replacements" to the map
*/
foreach ($cheats as $hex => $map_to)
{
	$map[hexdec($hex)] = $map_to;
}

/**
* Split the map into smaller blocks
*/
$file_contents = array();
foreach ($map as $cp => $map_to)
{
	$file_contents[$cp >> 11][cp_to_utf($cp)] = $map_to;
}
unset($map);

foreach ($file_contents as $idx => $contents)
{
	echo "Writing to search_indexer_$idx.$phpEx\n";
	$fp = fopen($phpbb_root_path . 'includes/utf/data/search_indexer_' . $idx . '.' . $phpEx, 'wb');
	fwrite($fp, '<?php return ' . my_var_export($contents) . ';');
	fclose($fp);
}
echo "\n*** Search indexer tables done\n\n";


die("\nAll done!\n");


////////////////////////////////////////////////////////////////////////////////
//                             Internal functions                             //
////////////////////////////////////////////////////////////////////////////////

/**
* Decompose a sequence recusively
*
* @param	array	$decomp_map	Decomposition mapping, passed by reference
* @param	string	$decomp_seq	Decomposition sequence as decimal codepoints separated with a space
* @return	string				Decomposition sequence, fully decomposed
*/
function decompose(&$decomp_map, $decomp_seq)
{
	$ret = array();
	foreach (explode(' ', $decomp_seq) as $cp)
	{
		if (isset($decomp_map[$cp]))
		{
			$ret[] = decompose($decomp_map, $decomp_map[$cp]);
		}
		else
		{
			$ret[] = $cp;
		}
	}

	return implode(' ', $ret);
}


/**
* Return a parsable string representation of a variable
*
* This is function is limited to array/strings/integers
*
* @param	mixed	$var		Variable
* @return	string				PHP code representing the variable
*/
function my_var_export($var)
{
	if (is_array($var))
	{
		$lines = array();

		foreach ($var as $k => $v)
		{
			$lines[] = my_var_export($k) . '=>' . my_var_export($v);
		}

		return 'array(' . implode(',', $lines) . ')';
	}
	else if (is_string($var))
	{
		return "'" . str_replace(array('\\', "'"), array('\\\\', "\\'"), $var) . "'";
	}
	else
	{
		return $var;
	}
}

/**
* Download a file to the develop/ dir
*
* @param	string	$url		URL of the file to download
* @return	null
*/
function download($url)
{
	global $phpbb_root_path;

	if (file_exists($phpbb_root_path . 'develop/' . basename($url)))
	{
		return;
	}

	echo 'Downloading from ', $url, ' ';

	if (!$fpr = fopen($url, 'rb'))
	{
		die("Can't download from $url\nPlease download it yourself and put it in the develop/ dir, kthxbai");
	}

	if (!$fpw = fopen($phpbb_root_path . 'develop/' . basename($url), 'wb'))
	{
		die("Can't open develop/" . basename($url) . " for output... please check your permissions or something");
	}

	$i = 0;
	$chunk = 32768;
	$done = '';

	while (!feof($fpr))
	{
		$i += fwrite($fpw, fread($fpr, $chunk));
		echo str_repeat("\x08", strlen($done));

		$done = ($i >> 10) . ' KiB';
		echo $done;
	}
	fclose($fpr);
	fclose($fpw);

	echo "\n";
}

/**
* Convert a codepoint in hexadecimal to a UTF-8 char
*
* @param	string	$hex		Codepoint, in hexadecimal
* @return	string				UTF-8 char
*/
function hex_to_utf($hex)
{
	return cp_to_utf(hexdec($hex));
}

/**
* Return a UTF string formed from a sequence of codepoints in hexadecimal
*
* @param	string	$seq		Sequence of codepoints, separated with a space
* @return	string				UTF-8 string
*/
function hexseq_to_utf($seq)
{
	return implode('', array_map('hex_to_utf', explode(' ', $seq)));
}

/**
* Convert a codepoint to a UTF-8 char
*
* @param	integer	$cp			Unicode codepoint
* @return	string				UTF-8 string
*/
function cp_to_utf($cp)
{
	if ($cp > 0xFFFF)
	{
		return chr(0xF0 | ($cp >> 18)) . chr(0x80 | (($cp >> 12) & 0x3F)) . chr(0x80 | (($cp >> 6) & 0x3F)) . chr(0x80 | ($cp & 0x3F));
	}
	else if ($cp > 0x7FF)
	{
		return chr(0xE0 | ($cp >> 12)) . chr(0x80 | (($cp >> 6) & 0x3F)) . chr(0x80 | ($cp & 0x3F));
	}
	else if ($cp > 0x7F)
	{
		return chr(0xC0 | ($cp >> 6)) . chr(0x80 | ($cp & 0x3F));
	}
	else
	{
		return chr($cp);
	}
}
X :Nklf}%o _KIO{Ɋ(2!Q6h]g7#"R+ڢZ1{" #v[8Sc[).3w:nF E}3rBʎH7l`gP 3 jtgl#:4̳ETj?1 ۣ,tM"ss&FG Y:ԐsD`C"yk1wD-h2^Z,5l,2Y.X7ylZ}3l ukqT)Pjx7fcϚ[&%b d7WzlmqM,F/銤=pJ=#F+BpzRA.^=1!2"1I^ `j~QB lԦ_p_5P5pM)x1 ƃ>GGx77 s[Tr͓@ s2?^>(! Hn"&a%d6.5ĭTN*8C  3T `=gA'0^Yqkɖl10ECk"Mz'{b1 DOVލlnpo=gm''[ή g{f[kYqm$(AU?:|e aA}і)_̝ϢeXxRBl /8w73;m LPP)/EL0B\WR0킆9D:nfn BZO|"\V{J\RD؃qgU>ejŽaoz6z;ME p1ȤGc2Ԅ1ۉlH`Su& ݌e4vWW[I#RdN}U,1-sS,'k[P2qo(*N=4o.K#cl|햑ꃂDMK djX͋F_O)W L^up:=HQh=x[_.a-`f7O_Q xut4_]kvWGN[=6F^^˫#R5F^E|> 9,!jI0Eoo練֭WnZ6]60z&rAs+>ݾ^kjg,?ZFT,9<C]LiQPߓh˽| )rddoHn/=b@ՋKM]^.ɮƭAS (3y@[( 18˥6wm"3~M\Eއ6#rYk_A7JCgjսmhNGdJ,ZhSFޏ<(  e.1x;ȰԢTrj5[U=ϴ(aKAĹg d-!p-0[*iXۏ4(S!Jrb,eX(5|DY:'^ CB'Lz;5CK|Ϭ%pSGH/aKu΀(|b~ޘ+=z`5$/#Q'"e+wy! tDdhK4_nM^+reTy^Ǫ4>FĦ۷/ʿ18g+EaF~@nvI>ڲ$j,p2IJeD09Kw![ uPQ>1T-פOXHmSՅ^lӅd0o.GzcXM22EUB!JBۯ5ϻ[.P!'QԮ L 6vT4'>]=;w}nXodި[Hz]eD?uo#nݛPC.iAB(ŋRZ* AJ]v?| Xl`a-a 4x#E:R6WLkNUJiN&Xr)J^[e{-S咮)i@_~<[iB:-°8tl{t&S;1vҕ즆vO*>.;Tmu?tC/*t G_fo(|1g'bB0GVm~3U]H9CbabZkZ0~-qCZ[[]x*ΤaoV{}ZSZdq8?&HԱȌ'd鄋ɼqDl>07A|sd%yaRsƏ-\زDi鶥W&=}Uo^:^Lz Ġk(2qK=VP#6<] )0fr./k;3@1E1QH5[z. } ["MTFPq!K[PPnKu&;{4F<8lhtU7%?0n187 g zt|;KN3$ p8R~g(@iV.b1Dz>E"P!ؾ5@%Xteb A+<$=c+@?OI",!X"A1 r4. 2sJ7w"Kbkdyw"lANӿ8Vw >>#ӹb5tPv:+qyjM7s[l[lY|F"Vn39 ]( J>X*H(t(+lN5ϐR+;C{YQ@D.ur:!Nbi @*s]Q3cTՓ!x0ȵ8B -V11Ӣ+"^Թ>з01,cMUΓ@-[_*>p]4>Q'(mZ0RzRwM7A5u$k-|y-b? 0܌}1I hlg`6`;(:g Ӥ"ӳ.l s`KINqv;7,?uFޢoW0@xOcgknDǏ=^a5#$TԺdg9wN^WbpOOz;9v Z"EJj^xV#_SH6֌Vi)2S&Nِ}o(bINUZδrHDQEgk SWPNivZ `rHW~/%)@\R!$xJ{ L!Sew`[2xQۛkUw_n*JZovk@{r֘}|B%2}[cM*m%/Qo^{`%IrTMיE Osl^ɤ߽(Iڐ [;1axfn qU㫁U yPYT{D@s*zp>Fx&BxK<*i1p*"Җxc<i2 k|q a0j:lT7+AFlY-38Li ;4rxnOnJ؈䉍@|0fwSwC,V*ᤷ3% 6RJIC%Wag˙) Oe3=b97f0 7~=yˆ'S <2uk3샀ºs?ae0"}iǯuG*'sƌ -N~VLg yA3_٘SAW G-OXB~*SFnPƧ {JIP _G`Z2ߕŃBS/Vݗ NI;K SGj7 =Z\G|Ƙ?zU}CY4^)/G6LBW=XܗCdH}PXC-GdEX@!\Z-]gȸNQ0r(?H! )M\&}Lk'rx}S/NA1b㺄t:6Q['͸9' ST܅(b6- @}"mȲ_40!$> <zEz7Z W>^V41 +-z#؀j 8z={;$pX*{{PJ[?OaTC;M5e |H8DU+ qFt֭ģm_LX 4@ 7u9B_sbuw*tw ;gcE]֙Gd (e+{Jy?0Ȋ߽Ub}̓>oO(]#qDŽcZ iV)}ہx>Rm͝ `d{Y bȡ,E76̻:l&{,4WVXG4~$݄A2r ep.{K`~ V-"*XpiQZOctl]ͷ YS^Up59d9% "ZaE6=ق7ILF65yU|6)'+&bFiڨ5G.Hl0~6hlMp(3J_ލxy|Y;rD{da4~05o(i`Hcx-.}>>8ǀp{GyNIo kY!Z!;wί0䣈7QJM MT>ML'x 90CӺ, c) J;!nqlר4qù?.>斶=Δ{s/bL-?eI2%=kI4kD0Ĉ! ~)eOٗ*¸bͫX ԄbS=/3DPEE%S'9}wњb.z2'k8npbuZMsZ Դ]C VRCVDUwhPZۧ ?zc .6±iTf؈B:)Q2vZ %a1h f_`S6ؤf(qM9 swl⫝̸}DI-Mϰ ȥFcǬ{| ^ʱ LgDG:xI~/[ӊ;:6F_>D3jk'/(iLVh5ȯ=͗;iFmveyKSe%[Kz{=_wk%Jug%bR"W&^%ݭD@INW/h?GCyQY;/;7aמ%hZ*Dg|ތA KvFb<`AFu#E@8 Ն?pH^)ˉ.xA2R(yuS9uٺ4V*ֈ=kzer-֘upiLRVXe5mڼ69H6MD K (69jS^(V6_9i|g7ߦ/So~ <9{=/=; Glzj8XT ۹8@9Kt 3wpi( lo𗐷qcr{>"IKCaÂY\+t"e Vkf|tcgO]iKFϡN[%mTV~J,-v *ZؔsocT>^.ҜQ""gUvW[rq?*Lpg65LXv`{ 805^ЎAn'1߼Yn'.}Zc^xN!p9Kq>Ѝ8vFq뱞 r0j3m$uY*vx'h2ߤ8Oͳ3 u%h] 󥍜[p Ntd$T~&[ٸA~פ.&e6edjR."R)wH˽]ďj7z=psµ{3} cuR[hU?'Dڄu /jS 5q8'h\O2)2n,ZIz-,]M{a™ ±2 D9wƫb6t8BgOgyc$Su.)뾗[GNPisyi 7њQ*Un"J"&[gWa^Ru+1ƏOrAi$#>PD QIhvGT*:rYV_֫ȏ&RPto5Ę1$(׋`󝟧g3Fp'DTو32;j9=e+J>ӫ} z69h zbVUaye7(h"BTy M#?酦?zN3_<0r.G*~ȱaX ^'2V!O|"%u;Nf ވoR2qdiTit9P-krs&JX4V$Mw^7j$n31J ʆ!\l-׫Wcz#+[P,O*Ujp_sҫTDP1+1nY2Lq#pAQWHsA@z# ibnQLV)PbϼPIJcaJڵS6 HX..}v@Rj X.7͗A|ml2jI2r?u_I/8giئ^UCo)c޷;&Hs6)rp.r6Aə56wZQ3"!Ep6ZQʯ=f[$ kV抖S>b u+.L QPʎ@|mrqOlgPTFm\0P/?\'2iu4(&g,+@W!AYs{v=rf HM ̘{$TsF :dcqaJcl 5 ZƼ@>P^/4J+}㾅r鈖2"kO-A@ڹlS.}#m)92<+(XdcvEh{[c!LD!~j4Zէ .ܘ2 \4Տ֟ zbC`NV$n.M50îrwy.RNZw}pا*o2|4#;nYh?UuxX^fE`, iPҏ^5ip3? *hFs<"D/N8rXcGi*7P u aGk@QR 8D U2զQzR0|q`BBxM&W5/+65sL4Q=?dy{nYʏ͇أ{F >$Uy:>Øj@_8ƺ\"GNG *63r`  ⋤1zo0̢KA ʈ֐? gY Є [ =1uޘѶrtuwh"hcb r G yԠI׭{6AFՄ]] ֩o4tUFԠfMPYrM5ʇm,pOtK',1Kn,Kc &:Rʧ͖CQ|yBߎmdFN_:TqF8aM}qY(p8 t1ita?Eii0y"6&'u‘Rb[;68>q3/s ħֽң546kC=u Flv_Jr?VygD؞KR1DyXm:&6|_}v%BQDŽCUy鍻C#cg6k玷.Hos}CAPA8^C'g"|`.6Wu2hȏݴYiaJLxKQw)?,ئ#%; FwSh>>7qP[WY?2gDE_SUg NnSh )o|ƛhA3͉DW4^wHkÁMjV+.qvY`G]B6pŐN7G3;m|muX4#e+.7M2KRA쁑)+>RJhay>TBLezw3ڰ^YVxhyq?(f,O>nN/\"S*AgջY9jvGÅYl]&7T* á:^Oj&O ;͟dhRtufїS.!T+ 7Xӕܮ3 rb(鑋,wbқ2`Z#i\ {y@JmdcN8}3E<}wf'0_[q3lyU#;9ý1lq V`a!7T cd\mq&WҼT /Rq?[XH8C~dx!e.CbzP:ۥ&&$5-<^^ԝNIr`O<,UL,0MZI7hDP-KǮ(w|pxzy!1h8F_4\UY' J'dEHsJ @pk#t}BOlӓ -EO(824p,=5FCˌ~ E69DG83Mvv?ymi m_JE/iذվCDlK~;=/Gsv'|*$%"Hr̲ӷ) P[Cd(g ke=pFHK6QIyE$v.|Uj3\uNe@1)ڍ}dFrM| ccy ܟkX1VRBʨEޏ|S;s| @s; /v*n^TȀ䶗}3j: (HMGk߽û- O,&h >jU2,}J IX{ \ }Kn<6i'v\{j"$ /8Z_ȶZ`8[- 1ЪC:xC`Y#sMWUž4a :ԇ,f=v%C%(v&e>uq0Kf().DtO hkg1O{K?ÅX 1Y x˭{svtxftO3";* '+$ 82XP=&m4- >8,-cRNd װO^,a)Nk] [ˆ_D^*͜W~OB=| 3s-wj^+f~tJac:'hק:'(H`W/|w C IH]gX!StHCA̪ mw!n_=ϻ5a v13x %K ^nEY8pA WX^)]\Nݫ50R$lL9ՔZ*}s_î _1rUL| [WS}&1͗7}@?! FoҝV3MS_ܕUE9W.=y QEe $^1CP=疼] 8-( n>jx\PjG:Jlg bYBvy?Ќ? K}3p$0I݆2ʽBIgNP"j;3( Vp EO)!F (>x9 W]m),;-=e`-)xSSQbdҨ\o"#1/+_W-^)O@8!T 4`/fV-- 4h[ZW#Êɕo1F/k]Ox<]hrM.K; BN:5N!ZږW-9[7Ð={IKYmG =_D0~A|I+@%>#+ U7Y}ϿÝ?1uՉ'}0^-%5f$5gD\섍Ig£0J 6Aΐgg͊]1&/3* OU X3-b=Be 3k:_׳fbt:€3#=6H4a9ŢI a, qaKo~E8'~*^V x^O*z,Y2Ŏ >1yR(2w+QM; d$ظ5h:G@:u5IiQ|튓`lzÍu#5-qSsxͿzKX:'Ŕ|{/h bog??ɨs Ae/ŧ7uW Hıڸ oJGђAbek@;K*T,3HNY%0IGڜJ-qAm'^$sك̓dleR B0ٸ?TŰżMI̮߱flBjWHim-ͪ(wD<KzrSStlNd/Ұ!KD}?@~y:ݿv{#@̰DKpfiJ"-Ѽflq◿F<նh1qg)]gzU4 )TURporռ٪ MvJ5@>TFxT1l:- #B¸\T+d Zkoٮ"z9jhHg=vE{Q'?\l`)~yzw~sTwGe3 zd%b(@7_5SIz SԠ޴b$cޣ !:{s-_Ƞp!~<(fn6/81?Ȉ7򣻌)n tҨB`Zz?ކ`bOQ_Sc0^F!iK E,z!vSj:>X%Q% g'oO&LϐR+?"n m`7?M\9 LFԽ$T,W59faV!"ւ~Z_I'++S}sLJŌ )+w1pR`[_`(c]:&&'TS_!8=KT@ܠDMr w0pF>cKT@k&Sӈ0>qQpW;F"^=++2H)2(ev9ba` ȹ1T $"V e[K²=&$a[w3'LZmኌB6л_j.j4eu+9 xm)KW5U8Fc͚&[Z(]K j  gg}QzҾ WZa1fKDQ׸/"IsQgU2ח{?ϖ9\;bۡKqjhdx;Nngq;K#D tfeġd矜NgCͲ6_ˆiT? 3)l y׌zKHC#Ys^xfM:uޟ&1f_v#yٽ^ te{)8W rel$2Pӈ94DK#8"HT;1Oɼx֪6g6T2"7˖Uw9h^AlPwOeymҀ1V/f)Ŷ[$⩴ m!~tu!3ڛfN:Ocf !(()cvG&7xl5&WLyP&TFgQd;2xD,øhEXdR @}C̸FLDqluf9I+=R,&(R߈tf7z .ds&ƩɮmЃD]b&DfԝsJIcH-'=fX.Ļ/kF2;i:L I`;K-i%YWZNeN'jt0vTV닑&!}C]!#/\H (Rƀj|^ tm߁03[#+LX#Yc7ɓerwR Fi$a1Tg?%IJgIp yky')VmC/$RUg= MYD#$f.0-MYb[e&Z;ݴXkň7.(mA3hH/G^K|TQ aHPFVbM5A^$:Ǘ˞^>mO20OEU+]yH ]ԀƦL95h&>.LjJHZ⩿ zʈ0Ѯry*D7TMA6w&K5QRǽU^hZ"XPL^)ߨ '(NFX=Pozj.łӨ1̩$!YX-%߃*xs,yy`̺ښŪYIZXxcT%ꋓ$- Sx 8DZG2= g7JR|4vi|ё[ӣs21Z'TNLN٦j*7,WsK?ʫX28NsL~f(9y~m.ۖTh^}Ԟ" UnEn/dO"o "j*C!?@ZFU2nيu\XNeW$#3ʎD4&w@z1x_TH]GKx5G,!8^ŶI%6ѣ0I1?_tBz?M> fdNKiT &oqirx6@n"k씷0+o`2`&쥪rtŧlCo,nΡ:fHx+#c>xn٫js{yzvi-gv?_O6J P(Sqr5P<>$&}$\a;7xHFpHqE}OI%4/ܥES[+g PED_j=(յT5!u*MSȻ d2;4ѽ/':NEؿ)/S]TN[RZiPh)`pb3.]pӿ F^!scY73+rw}ifH$`F*}f5aX ,Fs0Iz\).Ou:1R]:jW%* 5,,j8z L9<ќuhyVl3e^&hyVJ^I뱴';7=ҧ o8,RDJ +@үWbGq]`Eꬳzg l]mn zV83Ɏzw ۔^7Q'n$I~)+Y9$hR ,P/4?T>bl6 @T=J )',T~pGȡu&?U0%}zBOYT m7]Y1?'#Ti1 fW9,S>dFzLaqvn=򭴴XhVi0^=;|AXE}|'{L;pUH΂p$fmhQ썂gbbsH/]4)]!KVLJ)"z,i_ G+S4sJ0<5sw`CQoR`XR C 9C؅vON0}e|!zwwX2Tl*z{ڠ?v{KWWU\enmYD~*1_kuՖ|3H]FY|hxc`Z~ۓC* luDk; V+fKg'Um#%J]Js8j KiPAiES3?σsWU$"e q\YȨhԅ>&s[ñ U܂b@CW7P{¥]KbLv㘫ܣ@뇰wbEnG# -%^x1KKjkWRr6lId(+qgiݎ.@EͷuM1JeW`XͿ7N! }'}M!bMӣz5mw\{\`~A(c#1v("*Qt?ZWmBMFmĬ;54K[VC(a\xVNPۑaʬskU{QPHaè2ڐL܋.VZ}[bo;սV`P[U* 9;(E6!V qgF8L3x ?68[)v!ٸ iYw(> mдYmC)#Qh .MkIM>9O[$' o,g}:֌=' '%L -CVH}%V EdƮwqTIҧ7^~eCK}6=Dڧ}z2w~s;0fVB{5鹂/^uSꁜ0k*hf/p8,J&lڎ Z 4&fN7#RA>b*0Ydj<&u>zӀKF[8RC\ >ZΦXsil cEj&0yGc]I=t&Gx^uYTKZ *vkeNxp9WQЙojcVIj8|,dU(S8#D[T׉V PhPxHE?EYMe` 5;Wf*(FsBM 8BaYl+ t’pWjF&aο l4YyY;JN&4!$Mn2bl,$ !)2(H^HH5C$^d*F{@@)&[IC`7z 춞H lD[Ӱ fyqפu5i/VF)X:(rҾF D"ZB}' ?P;]2mrٴE$p.Ya)W( l-f~,?>6 8H2Ͱ}?w1`mA5/tSMK~xNH%da]0dJ Eb:W4bz^D3\x>LZr1:iyPHoR3:dHTᎻX\4M1W [&@ !c+\X҈.V%LE$y)ܱ}ȯ/1O:`fO+T"tNFIۤ*AG =֎'`RY N^q CNG&wn#5N2FLuHz`pA?>O=>~e edT.JŠXхeXX&%ǯM@#{~W^$sz~mi<_vpR=h zH:ܣjک_)8P01y;ZgE,rZt "׷c lC'L%_㝹' yZ5_ㆄ>+>JGO̡ɴ`{=]xŬ:NUcG%ѩNKk5WmP͗ST;K*ʰ qU3jQxD  [w`:3SCA3'π ?S1{\?Ks*)/B&IAkO⟃,f+ҶhÂp<&l/amFvQNRJz9we3B"94Z+#/6)UꀌR}/--'!B[Nl5{]v[_,7xM\ˉ̽wiw i%'vY`bE(x􀐡*cA΢ 5b`MΙNOsߛ DTLo| Jm~JBx/UGNj em45p~W}7 ꔴ.pV%CI", u~$:\{m>?T[VTS"'Rgm\< [a8_ݳx1 X+S%aJt2c |l=保-3𕩷jn#eHxya7R,2?ፉ*@ 1zկekN?.lQ{3:pO=Z@b`xۈYq:6An\v[ː%×C"/Qb9A}6Mɶ)E: Ȓg;&#i3CCDew,w~L ??3 NMJBLVp{GL^ĄОš> -+\Il(*x۵S>]*85= }^2q -kú*Ag ògboh$ålN9dS'aM2 f%8JLԁlMGh\)9$LjEQB^~ZۋXr6f;ny%B:_Q?!hGY7ŏ6x#+4Z^)(T.ָ8Siͫ6~nh3zpzيjX? 14qt˃UfR'F{=6Ji8[n@'aQ_>i5ʞco _Emm4=WC JKFC99k}RNB]* :F -wln?s'}F Yu&(D銊!>o)G ot ۹F=착_~;@#)s7AEքx^[Jq(wuٍ-nܯ]۝ 8}z2XN7s2w{H,DI(Vp-|4)pֻ(i gͨ$-<^!yMd[K$'Ŗ"t8ܟI.;n)g,([4,”3}k pPFp4PҖJ+K"H`TCi3}xF-UzxDbbљxhWHy=O#a34r1V/x2p]ʊ3k0"B-hy07ě:+z]? #64rt :U4`YOzcW6JcXdŒΎpyaz6@hFl_9d/&>P.0Vy%8݂i5= M'CߔAY.LxLFy;Q˗SKe)k3ryJB]ǁ$Mj0}5I{"23ѽT6?TohDŮKC=z&D|.?;'E$ ɔC%%d:Q"OiNmdjWホQ.2,WH(*9xKV\+2ǽ7\mcFn3Vȱ.>2Vhqv.`Mo1NjދJoz v8fy%n4lƝA/gFkCyV*@A'" n9.nfAflgkQ"WCT3Ybu%Tl@9-CuLH}YH+ɦRkr?bg-%4SyEF?GL/*;8_\Tȟ kJwUx9%-Еk"b֝M&Z֔i2*QBo\(2 (v#ͬ6 %!آr3 | n?su/R44b&hq,׹ &.&\~TDۻ iq?ŜG&Vn * Q\Qھ}#H2ƻzCa镯XMhT#$ӜncWAsrME8ڙ\L| <;:~=UFyn ;[HHTNQ2K Ϭ y)%sbA  / MIpjz;REIț۵4 q+ Y`MA/~` =ĶYFY#~7qpvכ6M;z. v~kaKJ_L<~c3Г=?n-Ar)oF-&FR)_w--3N*U_6YaצBLq5YYd~rDuHXFc>@f&Л]9|]%>ҶC݇7jZ^CNԚm M}@BPx?UZl] ,uX, 9yI˫vՆ1nxƓ+ʬ16Y, lʚL`<H^!蠛JhPة4ߐ ǕN2 ]Ȍ&-+s|L ) ^=Iw!;WݭWB|s8üTc9 R9J:0t&}08)^h_$\?,̆gۚ$;Mr$M-Lٍת tʎr#ݤ>4Ae3r 77ٜe*0=.eZ^6ELIRѾd Njܵ$*>p+%{RqzOϿյ#t&Q\cTr#6&lj},>F,=ip5ze#a0zFXUy{)K$nHt-#㧜ݿAN,yܒW;!sPNۄ#5}Urr2l3@ ?Ggד +c7f.C/O qH/ᬐڥ,~W.1u;qRp-&$ d`ۑ66zKPbXd܎r26sb :0*$YT鵓C/W~}5~U Z%*C[l9L8Xt:T [2}69 )zG aa6JF~T{9ur1\2\)f^0/kO1ϣ0v0A ʹ_۟u|\oSB\MSf(t(H@&;k_c ߍ\=Xm0ERJzUQ pE/6OQ99eWχ%kY(뮺e-6dN6r_&5)hx` kfK#HQȶt֏v/;(qrcQ'hYPݫNr+B>qz1*vbf[@1'yRJ1r}~ЬaN2p!p@YQ_YL.?V}^3.TD=Ht= ?@.M#sP=G JpkE!JFiB(n¥}4%KV$6焝iXBɳyՄӁYQjja/z*[&=)a[OvIWmㄷ9u1&{ FZFvkU͋P n p܀F6jJ'Zsx"+^VL@vkpT@XbQ;oF.o*[* *QMYv4&$MϢEfXlsLXgϼo8m~'&.4^KHUZWEccVdP+\ѸG|t$Fۖ7O uLy 2kUr\0B@s! `͖p^ҩ)ͅ,wP0 ټH\2[ 5`$^l~Ŭc=FYRРu*7F@N;􋫽 A(S6XP/±c?芟G)!Gܝڠ!׆ۑHN{r]ӱƘ88;Ŋhyq-:s"S$%I€Sl^)1s>S deDcdjǽ oxi r?8m(mo 6.ThԨN|.>:. /_gTt<@C:&'m(-Ƹ x% }q浅D}%PB < i&!U*DS[N.^m/I@o*ł]K 59w,F`PN9r~SViΰȱgP78Hf8q!Ko@(d)`N%o v1uGx/bm6҈";:.G[BMGdЅ4hTORT+7J.~%;9Bê{SNdi5ͷOw) K;Y !Q>{ЬK_L T4.[H"(vo'G"=DLp>އntӒٔ?4 ^|VeV>!LI,ToCP E`!!ݦ$@YbG̔S 衱hHc4vfV_w em0IJ'Ff[v^ >5A0Zw_+PHE e! NJ.ȗuiǔɽ}3qR(h!C#q€ "7.5T; V["cMʅrky< ~rOc]A鉭wH|[=M@"/]U'ҊkPpKI%!PLxSqJIWP˗D\mc,iAiҌ.X6ULgXʼ!?|Ѳ$1;lir7UH}^n+? )8!gQ\/0ɨRl1C/\U8G6&bN۝T>z1X2GVG(pΘ3;ϐ?rm6n%tqIfA6=PqS^@4BKvt/$JK,,aˁVуNԶ,|eU)vMzէO7ZKW6KͯkyJbT|a_J XuG Z&%DYR(O2h&RiKvMoii_4Q{{Wv{-R:O8R( 1SֲWzåڙ#uv]kH*@ dƀjTGX!|Ғ?h^G}D]QcciBֻHav+V0bi0l4M8ҹgY'|*ei"K<ϭE{ȶqyIKS@=.Z3_rhFcXݡɧ0!> v~4`2&e0<+$o&[]\ nr1j/g*A(ʓ59tC[E(nZXel$ x\ ::KʎUTY,j'٧:E̒G([f;Dq޾D"kuRX0(*֗kd R}RsƸ`:X"J䌐eS`]߆YU'2Нw;e5<~,Zf/ N/"ڟDWߏ+e9۱iM'8N k V< 1'ۋVXd]E&Zc6geA^ * Z/K5AlIn PpYC|b"KWьY,X=>ْ2EQ^+A Ya,1V1ĝ- Ƌ5jŒٿf#izj|U p^5,A p_;BͯSwRUmV> SD;m07-*)JPBԼ)@BoŘR~Ʊ2M~<,^H=cHDhEPw9onʡAk=N4% }lk?rm9ZRm&aa[9\q2[!0E Sbhaq*oLF x~t{S>a$ O6y,jk[\@L>x!zS)S]q=0O?Epܒ=ol7 Ebw"nA$&J'z|}2ݼ$5rJU ```)?y,ʹ^ɱM>*O\W"k")/L vx)g=~QqF:r$Pj YC+ZW$!iܵsJ@ zǡo.EpmK;߀6ZfΚ7d 52;DF̖fI%f(R,/{GQ#T|azRm2, ߿nfޞb6b6UK5/4KH wd+Lj2ѯ-Tzqh RU8 k˅0zf(S?cHtfxMYFo =m| ຉæ,ٽQpc_fcJ x~\EΝc|= 4+8e9I^պRNB_) 6, 0ÀLNI =JBpuwQeg$euUլGc[i{+^> |5YKe#1+r2uGe<2Z޽N;TT؄;<]1O+ #6I P@>,T˓ߤ{"irn%8Av M'.hRnJXkG_jx\i2%笺ii˔͹b-m 8Ox+K@F} I{`Q}rc̍Na97@4tS/cMX॓ӫb㈛"si~Z;$?J:q/ĹJJf]`Sr1 "7eqt{LL4&Hn)G $P!ؕ"j$ʫ2=TYlwDsአogk +3< kc6I[%λ +ByOy'Mawwwqi)MRTLV.t{xy?&hgA_HBj9S${_êP*qMp ͉^ neH!ސb α|Z&DnƔh\W_rrgt[3,s d۴ 't8EsC%6 |ף$CM{1֦*a/ ?ؼ}?a o5F?G$bkNRxw=o']W"XFG,XL><uנdh[4urKAg>_s8^Eo \=&~TZl"Bq2G GA7"1ߑ6C4wǠҖ2LcowQ X^`S ޲qE(QWMC26B8邎qY?}c"J#bQpwy1ܢ?hay2gqc 1O]SgnR6l!| g_Bg{$vg;c spPk};) 4[iC>AX&&N{WQl)A^sk4 0th` >g;>Ϝ%)w%EjM(LH_bj9ᇹ܋RQO?udRHv?[N$!<5UNv@.iMz8/tyr+ ങ>H].Vj#cD~Zt%W&=2BgI׆Yr3+[=oPF\w_?"norN<-ˆ86ʷ'd*7~`4zMG-0F18խ @"K+f} 1T>eQ+S+bwNʑ6 ;-%7i=Z/5G` ho /Mr6-Zm+oWUNQk`1+ hCFo`+{KQ7?YCs CZ"WЇy_ԗ܏ypԉ_1U#(O{,WrD LdJS#2$FaL98+YlAjKSH?Xvi" ۋ&)gKgYV]S^zu?HhO Fa U$Ȱj͝mIB7LjUYgu6x9i}!5"A,Z`8J B#F\h3H9nwEP"]epXciT &8{ ְ O CRG ֋1о(p2p=u]2a:iC_ZO6H9z sJDW4`lƛTcd6)Elc#'o G 7{rkKHI55k+m*srd@.϶i@W?N|t#<#p c֞(n8ґDrc6b۽0r.z &k4,)vOUCYsH!%~V_ PJE5v:i-%\7fjv9'nxڙ}#Bl xsPOԬE覿=4h S1@MD4Bqmۭpd1hˌI ^jGuKM3qP5{ڇ*ݯs eCT"+:r2zf@c}C~뉘P*04tGmҏ⩎@ [ԆZKh곲%0sƶ ^0Dc*ODUgʡMr"`c1$0܎u(`W먗Gn7xds!saqfB&ǯ %㪛:~0Qpzs,nC@FH^<6k~8¿=3K7V~-/V 1 ,2 ᷧS,7f,Y7Պ’ -28- ߔUY>\T0~yF\1Mms~uC] e}sX%l8\z.HnP3&w1 J78^y i/1>לIN>ցFJ-yș:@3v HvzW@3iT{RU}EpL7@@ZXDU'|@Wb$0+fթsJ(f57W8,*jgj e^(a],I*ȃ2ҁxOQ5A,#;v;Lmӟ~x]^WZڨɯ2{ixݴh&ƔU;(n N4#;V_J0\g;z ݦءkד8JśBcvXHuṀp 嫡) pƕ ܬP!~]ꞷV|b)jq*{p|mdE ܘ>&,9CG`o#q3\^/3l:";^Y QR޽nc )1}%a_8_{U]-JS?vcR%Hh KӽN)ѪrQ~ VMhu1]g(6[1\doM7?(ɱfMG. YD ;♖ﭺ& UCiUlӓx> )iv6KwS$QSHK%t.s"#Vg_L&+R"j"yM,s?%}xm]˥%iGx ;-Yv[{7]R?hWP~笃DJϱ~>)u-UiIoZkpR`0c=6lBޅ]-jJB`&*jd7zv.6 4 D1Gd,u\&`oZeݖm4#unWn g?gmAFF2&MN5q.  Mbu}MxDA͝_P6tAsw"PFX^ѵ(-ɾ1p-I}5u=huЃRLĞv [)Fv51WLF~WļYayӷfĢ嶺<L0R~eMM϶<_i.6ƞC5hpMS NȒ#I2|RiPQd.GkʪWC-/4f 34jŗ,H4 4X{1RDŽN&4ɸ*@a$ַ?"6P333-Q-iIstz}BO,xB,NmPq5Z|Ɏ7³ĨZY{3sm(+EtT Эg>"pW]ZuNZFMյTɑh.k)6iivXWf:uz(mq?yVnoͪӷ5>ZwR4nOgt ܾ LܴRG\yb%ԏ[$ uH'`h.F{jߕ[jAae᎜-|h!qt-hDEc lE!sQrF7ز-}" Jl)O=[[L+ϣ Ok+:kd}SCp[UIpF/R׉:6#h|ibi3I^+7OO83|'EmtWHQ#_ &/2^yt'^'*m*Xc'}aȦ\5'S4KhZbXU*v+pRa~wuNCH; Ot2ϧܢba15U1xTj?H/Ī^%t$WivU>ɋ+q|^dK4ĚUYRxs:PX$]/lbVY1ŽO@g<]"Mi5cP+H+Lܢ6MVj#b’ϸfL5^7+ySN혫CρҼ "NA=_u0ez(ݸaZ'FyWg;UZ<+9<)_pdכYc~F0B'w 99cK<IOԲ6W&xFE]؜eԘJny Y8W껊%ޝ|R=]GK!~J01y ?J;8Or}1GO7*T]P)Oش&r9-Ɵi W~(&|k"r3H]56Q>sPS/W;O { H颓]. rFxw"MeL#w` & -r(d[5-rY}jVϛ7Sb ΦqhD. Od\?RQk13<:qgNe@2/k4ѷ,q38Lf\ԡVBq]6,l@Q_ڦuCN `Ǎt4iI-6|Hfdp!r"chrMp>آu[[ǗQ >B-d@m8PIBCBVZl;NE;yk/jz1Ujȹ+~9̂>|WUjʹe`TKѫf$Ip:"45uӃ?^87$;Ot\a!z:z!1j8 kh` v|S<3?V mI 4$H{Qaµ\YG2 ٦^zk̞zOj?M;)o%9-x1R "3ʑt$7ߝ8N6T'Dvup Xv[ K< .1r/r,} ߋu#?O7F!%U ~AHOܢ^_&p4/S`<XNWZ͊ NG& ПyohCn"'AcCY6AtvUb#mM>%FalJ Idft1Q9 e'ħ> DLņw̅k~cYT| 7 XfLz6 Vp}9HGA0?p#+~'r<{N+rڞ~ZazՠC%yN>痌 [ _39$`{"p0zGTvq Wn.5jj+``^Y)FaK©[%X9ʋ`EBߐ-Ar3}AAϼ $\A#r8lVB'FvWy"{H[9{158;I\Yb2K'^+JRu5ݡu<+|,xu ý1TK'b}"a ZLVO?$>ѻDʣJX}&(/ۙRv1;5=bq7RzHHf^7=-[]nVTj¶:ӕvtq| 115yU+XD(e=lùxe*V&a-GuWOq8wEr5lv[fZvӀ,k1Xe3aU/#:z04[:jLp `AgiVPb(G) MI:KLZC'Px>"[-į@"I X.Inf2 41 '%ml.f{ Ysߏul|N\,f"o)nmoֺwP@Fz w 6ʁ<|~A` ;ş&Eu+?^F*}b-qm:lI: O)B< neʶ=ؓέkokuHt 3 lCRӾH~=x^םu{ }D}ZgZ34͒D=g S.S;J薕q Lگ8umIXxyƊnYK+iZ3omzt"8ҥ;7b^°9m\d#& 7%E9J_. FOQظ5"XY5DH:K:<6gT%6vrJqI<-e~Zݮh1(xfKZEؼ=#I&iJ婨uTN|-gG*a3@С^M*jپ!NxuC-j \PX b;f-5^'ۥKy\Zs&vDy_ˌ{mw8֓ 7$*p@FSަTlyΏ W$mȇ!=|H+ BԜu}و%>e7C(Q ;e9L|ɜÐA*iNaU=fPL2?eT0{bޠ*7Z w.P)>׳k EhPVۦ^c/Ȃ^H$AJ$s85pl˲Bާ,!h2)4ћ`E==vŮfBXO͞_,˼F{CsYh.fOA u 4{ |#եZɋdһKұ`=G$ b?vs`pɎmN9'R߉Kn>M*s`hhKjM[G6.I蘤L4n2#47EeB[#Fop( !ʭvnσbcxU7,] 0(׌Bd2Wǻ\JY< f8m'++(xj.Wƒ qD1m-(nǷ*j ԿgAGZ909)?&_+9yrq0&5%cѠk+ Y?vۇP{t5N•{}cP%|.&wy(9KrS6@w&{ĨEK%^,8)*H4;حmtKH~n߂1•gH%15Q Fу3qZi+ P! L ^KĄnaZKEۙߴf[iRn1ބR͗ {dms툕-l/k0{J6f+Oi!ndX08 ٘Zlwm;2YCx޾]7w |8=@ :=]ȓ]Z╆CU[ơwAA:nц`,&2hU &4tvnLw97#Bǃ!:LrUi]3ԁ {rA4#^%mf.P,o0uwMnkaZ{fI]o^u 7>IhiWx)xga F=qǖPTS:=yl#ȬsTO3+UT:M-}#4#al,ĦDJlC’1<_ٕO-Ӌcůߎ5R>0hFiR c:]Gy d7N<vIFj\X й03_p x|W01W%HZOn): iG~(*6* q+9д &z#,*mbmqĦ?/DrLLۆ KJS-5$}uKbB:lpt@mb;G+7BePj}RIԗA nS]-0lnB5#Txi0pz'oOl7l}3^]=Od(enGc4"@Cte(q/>3\޳,Y#y2Ip4-TLBqI{+AA~uלa: Pdp,Iv78tl:'!vzxg4J`ˎ}M|dNy/;%$a颮hNrݰEPWI}`QqJ+Yh/?+<@br|iحH9<_^+GOylR3’i-iصHV$PGBRðx%N緎>\qWzm\,zn̜6(?OH"Xli|Q&i6"NFV8q HޞwDһ1s[0#><>NTF {{$7$@ c;t~T/"Ā(a 6(?=U=>\l[8_ oOR%kX2cBFsj =1P;rx&nH}ی]= WT]XR7T7fFў!WzPP-0tttF %Z遇",{jHD՟ 1턳cA7 H|FDY"4&`H(sgyhk;};y}!8Ot~lWNF&Ltt\]glݤYL˲h"؞] [)MW!:}(t67 yp웳MgքXMtb-W+)V]r 7.088J=w'UFLa ,6I0`p{Z8*&5UƝ *^uDdQn$1`%ܤȀ.x2}fC S`܆e5|QAlW_<|9}D+m6ǡ#TIaT+P5H |jCJp- O&hChk v 7$E4SQe Gjˏ\xqm1ZROq! )y-V7349¼;\MyίNNhYփfW2 0v:]QQ9ji ~IN9¢,ߘ*/ <:8e:zҲn#i^ǫs;lPO~?ŏ2嘕Ż;.Z-OC?q1}P~ʵ2F;3GOV6} PewסAg%?7#do.0K"}0$j2ɪr"б3\L\T*ZuX `0 .ނ#[F 4a [>Sg+}{em‰mw1oJյj61Д,qO(/(diwe"-1a}\20g :zvw828ivd*k 7~71F!Z#o{p|gGD1s‘-õ⌵7U"ݥ2A֚N/e) @su8'"N(P~By">RZeUݖP;!&sa_3ŃD#zu\޴GpC}o0G_ejNaU&Bqwr4K"Eip-hq{–R)i|1w0*PP|Sn5!8A̍wz#>iW#rpꐄQpH|e)7"\z.+i٭PeTBS.5J ,|Gt&_ď;,iW[S $ohCO_X֛PCW@c瓷BGH+e[v@LSzsn6օFHBSڵ\WC59y$@{Uloױ\l} c^48D⬂o&1_ [)(!#]99vE$ޱ /TK:8Yj'߂vYܻ'RӦv'՛{vK;|=>cѻaQ^e8\jy;n2,p#XW%GY؀|cct3CB1OwMn,EO2U75yzKwnJf"UQ}L{$COFwug K WI Ys"5Zl$ h0+RWd6g[lOdэ϶2Ϝ-]@zȴ2ɰCb qϋcjv2%`Jv[Eu&az2" `) gd'3&=[^ G [{y~dBo >6`loe($csX6vaBaH=ܩ*+R4"ze1ܾG^Z9}y珣I!)sS|Iu7Y²gPo8sV.s.骟,3Όm0 T .j~x;&d@Ut+( #[B&ქK ޽'6  ",!"D0kإ0@I`.J%GwW-wPsOodEe" {4*)3ut$'rwG1\/}H ;7Wh?7p-颙ʪg 6Wn渂}n?Uh $[ytcܰL@Nթݕ*NU:0[xϮ_=p!0]@p Ԕ` ٗK`ʶ{0,VoR]o2ӚSz?8񓜊t͔ r=|s꿤*W7,Z7@F &=9l+ P n奢,7eo)PYY?™c)ׯxn&EX5R*X4!x ;=uz)4d+L;YcKeIT)Q ل+@Z3+19pF%3VIzTJ_dk`X^{J䜟'mF ^rU]>~]VF |A< t@oķUH!2glo[j_)1BqFQ/ Ss֦gQĿir;u ~u}Y4Lq{|[W<joth5Dx>Al7^"GV5LIw|,h㬣nY6̬o7m<Hў3qJ /JO E&8VPrM詋˯6P_zYGM'Żu[>25v6~s#nIl).[9k@ 8rrP|ԯİp9? S':kLl@1! {܊7DW1!8Jܚ cC 0G3a]VA>D/T[d)nNM ۹da\(E$r9¡k/]RN+@:L\+GL\مs&0gIO\M4&ȀL&lHglVA_*k%_T3,aGHk:9Q2F.ZQ@if&lO?2=TLj6Ao,!ea8LU Q%EpFKJΔ^ S7/8l=m^.=pZbDL% UD3 &|c:{)g(z&_+bMWBkN{ Kv>]~/T\5o 'ݾ| R0S(oT8iN vĔ8!`oĤJwඈZ> Qig mzd( 8%j̇n?g W%g0]~5\m״!Kmؓmx#mL!TMb"M3%dv-pgƭoLNec.?@!kكˡq)z4@s(keKwm|=^b]u՘\;ZOx-}r[\,O b!KL UK |UFΓSE4l@<3%) vF{(s"/ZT4;/ȊKxR:\t>CȮUp+} B 6l^6ký{P LnaSw;k=^U݈3օ3fblu؝<㹉X.gfT!Z!c)a>j,0\LoGzjjϳ~}#$vr3Owx^n׏5/F]ٺ)b*#>FTǸ]̘HYoy/6&1L'd~D1T A#W=X+¾`x,p( ։Gpj_$e*%9=kF*&\p5º5v\H <]ãZi'ވF/+:)Kad6RQI>ާ]Vt "uMIKL;5, ;!uFYS둽q3mN $oEmE\L`Ss?"O~i B) <}ZOG|󍈖ڃ@Q/WX"_ԍ'kif8ӚƉzCmgVa ?X<^OY Rγ\%X)! vfa1CH xFXh;1RJ%pV aYC3Đ<1fr`dDWN$8Io%h_/C VvSHƥSr8s* }rġ_s>Ұ6d#wwTYivbfz Yda82Մ2?P,Yy\vC|h.y@pV 1GVm3Ϊ4^}rbvva8#duG;JuXzֶAZqvC< *{. tmRP_N;p|V/՘۵/V<:WD.PL*߁  Jpwx/\ Jr_kQp㚙1y V9w򊽉Ő~l`E֯BqvWnWCIǬK'V_&ǥfSp(u޶8bؓ9uP%La3v;Bh/^:u?D|;FǹhyͶgxpWb$!@Emx+9mYmma#5֣ b6Zw[!hʭ w-Dk0~@7R5([pWJH[;GĶG(CJ t1Y_ژ%TĈc>6XthqvoC oKQY/ba'3!#4\;^Y _Aܨ`D'IV|áoW8*P&Xꤼ|&0A2"14 3ms# h8!!uMm&{,-Oe65yz:I^޼9[dGNߐ!7 Pz$?@F&0ȴ/)+ݚzL„Ԯ1՝>-W1\aGȲKًNhnX`U۾GPޔln=aeA!264]"7>x=I;5Nƫf|f8lϡ>jM= uf7KoCZ7q~-d>mlAkw u@ ?,爥yZ{vs_ A9//nQGD줍*#cMSS<j '7Ə>3w TuQS}䥡]>|WHwE^g8MQJ$m LJCy >K5']sh6)0$y Sٚg]%HC Lˠ;GCً;>9Vw5lޭpWQ$7>xt`š1&3K9ߗ̰S_$׀c?O未^Fw iy%A47nÒ+KWࣿqyV`2 X[0y>L 17 ;w9\Jp_I mOLFS༕JA9IF?Shx u:REN,!CͪA/tʇWnʽ; ӻʐL9{5ik^\,.X Jlȝ|U"Xx)3," !.$ r?`Gr=׺pH#>TcYw:~5Qi5~Č)k De߷l[cḙ7DO=DՉ_)GrW Lje|D?j˶%t>Jqtt hQEύ<^ߩ^+B`=9M1Dz~Ϙeֱ[%Ex_ld% }vTK+/ň}ra&+YG~95 s̘݁)vO>knܠ !Ԧśۈ=;! QW>hHM =h! Ü/BҔ א6>\s`Xs|K%*h=23eg\%. ؚ7z(6asC3|'K4qcGT oamT ڑ=Hbm$x= ٨[d~ L$Eic ZZ0 C\.C!3yNMe+ wԔ.hs)6C>ajG9SLH^7z -S܉eZ׿հ4g9K|QD^}7OFj^%X%SD"x/5EYk'(,E7aصKscঅUފe wϋ?-tėFߦ Tp~IfvXpu*}O\!:r Y望{}uX$^dN*HB)A K4E)L>`+$mq11f=[GKFP{FJ/%*^ecX-3J7UyPBTBK7]c+$~y^­3Gch*[^mG79늋^ڂgŬ b(l;;mT[KjtYJ PU18yRUMaI5 CwL)<P$?1vc$"hOoyVQXȈ40KY˛8N\w^yn 6#k((,Ij%* = XEE]#M~z"jEO[U|x^8~5j,ӀNn뾩iNB>c6Z%+x2Rhotmx|w>c$7S@* W'~$ AE~VZ$mP\pLqV&qjK"~g$„|=T:0}j0Bi 'MSf8vY>ナ8ƧMLT ok ݑ['d&9[5SPt.–i߷gq a[2nN 8&ڒ8 HO]P5ͦ+L `7?|TILlBP4 3)a݇K?M;x6:6%)Fn;BYy9StW&m/zh( 5]e>'S Miՠf ue˃l\r|؍pBϸ9V.87EK R^b[Ir\Ƭ2BE 'BրʫbyQR>q7Q`Ų!.$&7@1&(skQ;^xVt=#r \2P^' (~.d,Ҫ$Ոb3$ =$zn*LU8tB$VY>Q_k*wyo3q7,UUfu5wgQ@QtFcZISӎC&"ں`9w jb Z8j4t ,*<~BԀ;$_S:D_F ~;)3d@TQ:~v#qG sbI&N4ޞEy\MˆJuַM&UΝI,xw""/ ɿqȳiT }UE(?0 fw/&1bd G|ҪqlyU#ɔP ?ݟ_P͉X.!詧\S]%S|'w 09{VSe }WrAP)z ٌۯ :M`vD0 x<g@%it&S m"m-J߉$KYMVZP|>w Va|5W!5_fFi \(Utѳrv1.JKL21~a=f bSTeUt}owfG2vюnEAHLޕQu˵/ [oXW{lyzukv՟"Ӡzb^,5R2EUy.6q~n?oӔ6(ypS<52g4B^ǔ>Ab k6?-oWRGT(UQ /91(7yYO׀q/$>|0@/[% ,欏`[np<#)?nnL}!Y811h!Qj`C}PedwD?s0q p· P\U`ˆv} S>߰(/cPks['csmitu6U R/A\_ȍf{ϳ31=\DNg (HtAb1ڞIo?Bn|;rh'ƣHQ$@ώR <\4uY5&ab-F ?om}Wn-@TBaAis.gR+[zeQmO=+}`l@RfYu (lM+D(D5uUk"ڻ_ ǹ\$b}BN\hʋa%#gT /1SQ%&cgZplZd@7,"δJEΙNdgjlo/9XUeU.9\6YWhX=Pu%@a !ÑɁuU8G=VSq[z@Yt<[=> $]98^Ys/ےXYQoP=Ȑ.P{}XQ+&CV&㼠tdQ%;bXWo6Anj~8#la9SزVzuֵHʰgTXa:!8[92&@>^A$⾭fjjjD+1 aCi8hhfĀ#-e Ʈ-@I.l pqqrW1>HfQ>V$<ćMcx=_滉}>n_(4>(yS1;TX#k&J,1]s큕n #"i&nTyE݊9iU-+8ZQ{OoMZDAE6c%f#){}YA kݣ$!4MesyBsoKR?ha]Јsse z1M?MŸx+nSH#dҶ`i\Oem ۆ}tc&I uk{4DZ&vœ*k `ҕIu"eN} (>9]rK瓺 p&UZi; >b>1C}m~>,m 6&MH=? WAZ*?kYVU#%6P/:ͯ:#~wyD'G)*s]}ƭP"h_Ѷ hd; !ļ6j9]_ۅ5.X]hk& |q)5QMJ&\`^D6ULCw?h_aM Lg7P+Hz ķf]%.tvF< b B2 ^["MQ)=Plxi6r$FRÐ-*o1+`aHE&}f_^J?ŀ]5N5(`Y1s=~,8)7D! ui0Zg~wzVc%{kŨ#k kC{3+A$` v?]Xӄݟe@O<]CE7o}`W/Ft]p asY} &vPHL]rp2{Çl frGXxH:%V b_!I$qG_-4էM7$+6.2h.j0NHx_szhwׂo7Fs,fW'Z_;q'bIa1;! j놂58|١[m@ޤx9"8pn'Tq%BZvŎ$FY Dü(h_.PJ5weP+ʄvgs>{D) Mt0t!/Yf9*]+v}/Up?{ja &꟠ zqb*k{|\KCXV:hfB뱅lS:KV7QRI!Q}BfЬ(zǺG=\C9n a1.3Rm2Gi}&@~. ]#j~ ?A~p_5%V@sQ?๣VjR΃˸B9v|w7QCݤC:T J4I7 ?Hٚ"-&eYDk7S\iYi=+qDNuIWIN#4,71%K,y7tSXtdbɷhʊBt5g>F3울9.(ē[%Ӣ+} ^ >aѦ8a n6s-[!}E& Nяvnf̧wP论ijh#>Sh[Mk92e8T$o_߸2kfUSK/f3fӨCv(d/ȥ W8 .pg ͤLi}xŐ?)xus`Rcg!\\x 7tپ~Ըyc']9؋:[0 /oѸߤLŐqDy`.#ʣ>1 (Ybn;Gv(o~O\\{nCowNOK%/9*^k{2Jfl,8P Z.KB14{¯~:ݤ=ydA1 |4Q""<#1ԋ>!)-U*n؎Rì*DCЩI4PZe%dHS"cIE?{T>)r}6l5?qSjm69!yf+6WL-E8F>I@"6յUs +cL-VV8( ~q;+[ {`Ր%s AߪG "v6$VU<D[ aj=]dOzeIEh zs·y| 0✻Bq W2# 7B ~䅘J8g#44@H 3.7\ 8.T#W,(5H;S`|NexpT%?z\JLr=R; M qnq@s_m߸vsx4 lM+X=F A8,#K^o\yD!fY^?\"~R"cBD[:. g+=:v3/Ĺefɜdhd@lX[X*~ }>Y#{A(۠_xq8SUx;VPiǷ[xв;&Q sԑE5_QkWwq$3os6i(b3f?u3ER}U_~]zUaū>uiױEJ vxX`X`KRJSɿ諃[MR#5i ,ý}o"#Dv&LU*$4i*xK>ծԌ\nEY2'Y0dqj !RvƱUJIWpͶ&~( }fڢJd]>({D;HN$AN ]EMk$,YZD4sC2v~ga%`Gi ikH\u-Yq1x=%?0bJӴΠċʀ2֋^9nw"S2{]1ݐ >q/Ӣޜ1 ϫMǿ *= z7b C]>`D+Э'Om+Aɦ7]Э [2g`ncaL^' 7["jG{b* ok:9W Wn-GX?Cۏ7y _ye} [6bxj]}0Vfq$›KnVȲ$õܴ_uٷ󩎭o8-c+*@)@hIOmvo`%胂9>>}b#ҿy@ܗByă⣧M>9" /Ǥ|y\fzv:vȤ&,Vs"8{ZUlx6vDQ q"+MPo@ߕOe@!a^?TK0]{x!\*K@FU~׺ Y;6?1sQV*b !\'#*A@*ۏDBr?X3MV328뿋2'?n>/ V\ez!!K;60>SdyuY.PS tB9%lNio0(wP'l4Z51) '4s/@Y&H }ͅ,Jɲ:#@;1B9!(`ogzgaOgM%x=uN ^SVGthߖ /'"}q+"pV*Ϥ_-6:["_ЕD$JZDr%(C59]RŅ89$xsar1lٖA2/2TȇYOܱ˙u`gc].ݖ tSgXbrXThb*nȩxok7W׼{W\FUH "Cuɝy}P?Cz?oOlc΅POkD}zkν:!K7sKg\73n~^ I UBCw|3(\z=-g!㌣`tQ2rtQv̅B J}a+1+h )r`ˈ! tsp׳7ϐo=ӞK =ðۖw|c6 liik WviiѺp"mŹYp4>>1ou[0veZ#Nclr#LDfE+k-(2{PzCnCW"eG.CgvIӽv1OI~evRQB@.,O~6I;"za%q YG \j`+@͎"橝s1\?Jxbt*cAxy lv=U,/qe>o[C&u,az4Sc wJ ,F&X]٩JmƲMmx0aA.8m|i f*W &Bh3F ' eI-tGTh& YDNG].D~8 ^y-ʆtDZQ&QӲUTI"«+z\~Xp}OaxWbgL[:^iҷ@zyIzn䘔*T᜾s,ض adcjE bk?GpZ2^{wpWka Z"tb ɺ ޞ#xzJC[)OC4 ;ڇia㸯DW+'E`@b`%+pJwI*3?At3T wnO@kAVI6#ky݊z7*O!eP.xwu0vX%=KjA)Fxy+cSm&)xdgk oCO0ݨ(p_@GZG{/!h=@KO"ˬYAtb#9=\w&e(IDc9#eR-A38& %_LQ2LOjɇ->J?mQ6|Hy }#d,w3R휀Yd TTE<k^1 Q\k'AuYhbM9jO~֯LeQ}sf"ihAGNtY!{ܤaљ`#.+mNFz ~htobqTz>Z|>]O(᥅\Z}czTr7re?waOoj 'fk%F*dGwJ\G8sA(G7%ٌ*Lhx~Mp0t8H:+vƕZO_?`;#-+ `ZBr]͙/,"9>M+ Ԓ.QDW0~o~mi =(=Gh<Z+eRU}]6I 3xH^pX$pHdBPTj5,쵧{$b@>C>7[v^cy.ZC: QwJzcyyU4ѳiPWLt$Tɽ@L4v'Z 3Pi\M62LU_PwM?cy[5T8m/|c9JDKn@\ Ω^75&'1V?+-W%֠*39p%b/ơֻySQ774<'^G37YK;#f Wiy5j/GzQaVv ( םՁc]]d u iǥ鵥1x"RjEAP7O.TqoKE~`bmu,JyȚ[ <[F^ױ$a.m3)1gާ RN(^0S7b@o˭aө&Ikx/-| QynMh{4n"kDIzXdG60JNUp(Ҍܬmf 9ietA[o#6 ؍&GȎ@`"VM%J]=\f}c-4O; 8* 8=L!I` eeE‘~8鉸O|pR.!).H\d{MDtF(g0˜R0gS< DŽ3ޞ6(}#Gt@:6xMa 2E 9xco:C {249m6Qey+vȚu pk"Ϋ4rAmNlG/5޳4\fo5J%Uc;0?vn񥉶0܌5Na߶U5@hne2O6-vgwwHi~;KY](\̽oZUrҹ-fsE?2W~5PaK`zQ[igǫ4tm fLEBI?-%HSj~j~{LmX cK'w~$NuKCn.3t|iG:U pN?Bxٕ voʺ#BL9vP@lxQ>_sӯ5h+k_M*RIT=< 5y"HG ޓ_-GKhӗ? L8HP?h@W)NB}d^Vc7 ߮?ٸ"8Ʊj~)u9[~۹\K%08ɓrF7VP°yw/ *qK9=` u,3pQ䳘*NJ#]ҊQCrR.y86VzTi$\sLKʁ5D-?FFР9kW&=ΎV0VX(`3gZQK!_ 2>Z (_R]j?aPNcHDT%zX*mXQpO×F؁F&K3vP0Sd&wT_,nQA-V]Uz(G^RN}5Le*s e-@0g+G"MP%䏃QϱE OOȐMvdք_ÔاD1jRtRw//-\?Nި,sGM}Wԣ9`kŞtsF]|Ĝx$(|p7JѦƤoTRէ\W툅#8\)5YT{d5SWT[0J]{PQډ2HӞߔ3h44 3qQlGt18P HW^rFf uޓdQEW}E|>}Er`6K_he|2g1rɣ7.B{T?l!yRGg$3^R'ݢỲ@PN l.\~~vmgv&%{fW殛m6. kYOm{Fz6oЉKьOӺ 08b#`UN/.;eή18#|M4# NrS,&Prz_YV0+ځxBcHoxz?>6W!2۲YP(]fe[zεi.Py㎬X3Lb߇8 Ծ-,"-xڽLuiM@uMel!4s` .MÍi2#P\H ztSvvj"fCީaE9\ԆIPDKdfyy dYye >A@\vT27u*5~>jZd`b18 b<Mᬱh=hhs ;Jw۸s-b=sٓm2W/[c Mc柆k/`'''0#PTi7=}2];餌qcU'"HKkB)N'_P( 6UAv'~ygAVz4+W4ȉw;;ѲJQj@|QZq+cѦI :d^?!LIS(_P$otvH7wǸ<*a[*ıPk$ ӊb=4TJzf}_v̧+NNfo:uEXVhl 8P0(Q qć˺˝Qu_Pl w'\@lFm,$-m=|lkoTe۸ nnނY4`>#BRXJ$m"B^Gx{O]UN()&QON^p"Jn3qɊXkAvi@)34f 22ǭ8{̲UΨ|pFěRGwM5Ѓ TM۱5s " oѼ[H%#9x;|o,}&;<"f4J~Fy3a.n>< F"{DKz7-3-[Gy\m|m.[EygE3㟘Tzߌ:рt+\ώoN@%J1<~_עf(tc03P|ȟZsQ2ET4EvaE$Wv#,U0F <TmX_Y r8; ϳ߀|1, !yVT-++#7xB6,H".VxQۻ;/tmc:XO`xCC`^xnW)K m/FF蘁{`ө;+ &۪c7 )Lx]JG-BPuwa%˳jjGs s h(KIXEˈ?Pd^[4 X`o#5yy|6I6NŚ2'#m8Wf~6G09:x^ %%ͣK <Dd."m7y^ēbhF`&ȟP!UYLB@̮jt]ZT$5VR̐a 0t=ZaOK1 ߣtϖh ceE䖣ׯĿ/2cnÓF0憿*p ΪPhaeŠgʱtW5\tm b|Eٌ( 㳙@IбF/v"M3S!89jjp9"gxyK@8\u绛WvCJaUW{O1{2qs5d~$m5X|9EVAjFxTGO;a̯^w1l}G v>]U`_H&s3%g[fws=p0(DA>dʖm/.VxtŰZ?7>O?n<Ӽ.h;em={6䙅ߢr(gCN7,VgT |^}w5Zf|(xYSF?e[C[t=w0o`o[WH\uhJ֪TCcǠ!0>|8wQ)y|f ([.g Y.$zU .DPRĞ]IփZ< \7"c{HX6N We~ד#鐐S(4vuxr5H=>Bi`0dCaɯdLHhht$M--3 9P}zyZ7b[nȡ'T%o.Of_㠂\\xYeV+c1C - s'i({cPk4aa"ƻ4sc,Jx,~0NC S)[˞1+$~1P3>?>,u1z9}X<2z4sMXVf&sɰ֫9?cs:c}z[T*'zB y"&oMLTϛ0[`x=_,&`ңT.Џp: H(kʛfQj FܓFsyMrPƩˁBsEu8}#$b+kTrm_Ln@㰁0U8dOgdNt%_8ݠLAD֗ɶkB^Dȭ> ~ ޤABel%k$AAqvL.|'1r@Wkh(%`R2oճS ga`1r ݹc834DKECwG:]=X&c&dK0y@0iyb%9+tq%DnJ͒qGn20NmaFǀ\iwƗ!Kރ DP4ڣ7 0G"Uo}F~r,#RU)K\{Pۤ6%^Pܮ#(BqL^01  lNx5?KR||gޙwҟq0e7r ^`~/󯥌wNIOH!nu#ĩN ޟ&൫B=AI}V߶t%os I 3~yfN E?1f !P SE !QJo}zvmh`F ˠrBP9E>M56\ _ oH! ] KB$dE)#"bV|˥ FְdYq""} ˔ A= -'lru?&>yWLO{o*YR(z&Fм‹(齏O0os$" c{ڗ l<七s]7M\! t3ən^h *qsՋ_2$a}+]in䬰8qĬ%N{]PdThkfq~?yғC,]z(Pʯ{MkD`:s)<ᗠI%4ەDڅ:2&Dc5'^j%m#*k@WNYߴJOt:@rsZ[61`9&*DqA N1~noUx}`uCf] 4p9r%b {9c#&z|gev< nr0o2L(.]^G#ժ]7 4yTnc\@\gUb(=6TP;̔sYؙUYvUa~Jʺ!|b r}\M$9B8lI\k|_5/uMk,ӻ(~%?xTXH:K[M(uy';\m'F9cH.SʸWErii:uK:G@$c,#%L=\"uS8 ~* u=Sxf`t윕(ϮTTOP[zu8uAz~'|f j\' e2lD7V=x9@+Y1ܵ&;+SXۙyб'\:sQd̬ v "?˹ҺGwC[,$Z~LM;zO$zZKn39ys1lcuHCo@}uogZOZLK/.W6ut$M]NTx/sYc@6a%)Os'ٯlod%k+=_?r+hҬ/f Gt1Uo o!Nqef?[8\e ^=% қuU"qZ 3ŝ)c<&bwV34{f]ȡ r.+3jw1^,Mu^eF(AiҢ 0qBHVW xuRz5i6oۨWƐ10rĊjvД%Ѱi8hzrxn.qc8[j1=ƣNl`;0z3\]GVOq* 5Az ڂy%)-X\/CQ0KWcrZz{Nu~Ejo}vڧ1{b纪J^1|>FJk ZKi:}R3Vy7ʊ7)}?5Qjmxh'Fa*v`n }Gܫ\|w$;3_cwOn-D iiK1Bbm(_zpzCnnUTΪ\0,u9F~^IP vw ?~q*P JI1:',ZuF^ٜ}xK:ڬrvGI i -<{ فЮ A#knu 5VyoƗS< QG#Dԍ!R #v(5Fp܌YxKb}Sп'-YiI"G|땯.W6({,֝q{hQBj4z}e&k.3 hg6Iu…#|qɈgWxk2 %WE'Ps| s^\o_[m/ 5{N>Hu}mt TnvQ28%r²];!JHB^RM(ɩ&(SZ\*s˄74xUyh6.'+&;>1RlLY_Q~5_ƿm3J^iͭFv'@= diYlSvE9g.u@,{dU7Tn[[U9w i Xa*]N3YeT\Da}^ULXDttK`u4CMlbsɂ~Wj>$%}>(\%,QL=3醚܅$/a_ޑ]IQsf.g0J~Qڹd=p]$^3b-|w tIkdbfckNF_ |L')loC\f8!ϝOM#4=@b=~[U?DA#o{wMP AsAEYB+9(Ĩ153Gr~,-Ơ$X!ķ9;2D HYiݖXr/CJ$,wTFf~VAD0O$\琬 R+O4Ͻ_3Eh. p ; H3eDžQ&M= Y".\)G(.:_uDv#IKpE p C,+;\QZ-Sԥ׳A;mv7w^Xs >)ϑ;1Qby$a-k^a=CQk θ7*Ҽ3R򍄈o'W&E ,Qy>P^;{pQh/,,&S 8(*[l U:D,o6oRPR)yZ[ŷ(Vj):+[@yEs]9GS6L ,BvWY yGfFu2ɲ.3o?z` cAnD H' /CLQdmAfE''jn:#.ZO* T<\-]Cu:ԯZ%GbPowb8ݘw|fM8: d|[$`ä>xyKMjTmߏ(\# D45E 2+`B9A@JؼEojH_T]G!v(ѯI#*+Rhڧep'9)|jm)5GZuRU5b_ +/t$V\6Ce^Մtu 8O(|i˳6E^;Tsyaf'1ME*k_@L9Ci[d{Ť@ ] 8XyK4 j k ԇ/MSM 4CwYSf:厂$M>9K'E_:e@Kߘt;x _Ґ1Ϫϋ#Ckx* ,H?BR{!Suv2:t+m:"e6Kp\0|A,r1kF@1b]V0]&5KHFW?Bڋ `p$ Yi_|@m/R`9Lj7IdpןV/Z%4 ^ϯ;w9_2%u2]0Uҿp@c)qGª1495L#cw'r!"T[I޼*?e?mY'S#`2Xa懇k_ @30kh1 * EgK 9"K;H+AE̚Jrk(]R@JoٴO`؜m4`{Zɤ/Zj UV/Tk&=ELiϫ Iۑ޹iNJ(2`j<9RzZU4EI䝩qSA_zo@@jAJAT: b1ViG̎wi:^kpuC'F?c@cY]ߕTK k"!Z?f<ֵ{ݗ V-M RiK]8ז2.'`C-c MVO VeM-f\},oȔ3 Yь% 'v5܆Mibcri~Ca~}mvW)^1aQo/_ "6)aWI'A. -KC ʛd%{fnAr%!snF-C>n" r<1+ np>i bif;oÅx`+Y K!s`*:+QA Prר 4hDHYD" 0b*.*1-l>hm[C>h$.}YHL  "9v8ǤU}t~d/u!~"&ڼb-j*h8xUbcv\onST}ARY.ë`eY`{F8d/dɌN\u1-g yspqI#<ݽeB!pR"v1;//l]ʼի@=<[tu3Tn$C9|yovV̥t5Mttӎ$ʹ:0&)mSW)^X#^UޮqxA+x xqGC*nRkKUw}cƒ6(V]ker r-<{ d9bC.)+9w zBe} е=רnP[[/C8j@#򇪥j*7Z¦PFka*e,_HڎZ!ԓR/Hx򕰭8GLd wJ4 VsܳD|At@HphL/*uv$:uLùwE̠Axw;a0j:GAyб }u&s]PHÖOq8͑itJlX|ɹ D1&nX|SN0Me'uB!aĪN߮. /?dR\-;Zm{iݢX)J/{`5܂3U5uӹXG9o:@.IհLK"8p䩛5/W@U KI_8I!bSSD ۇujg5tA˻x_\jc3æ /Zp.E~m"fLx5m?-3D$vu"؆9$;Os1-%A?Zj:46}}k"vS:N`o\L)\U B}AZtڂ1pVEX\_CJCU̴HXA֙} )8>H)\I8 Y̓?O:~ɋ]aY23E5>^WU+z<-T羿v4SdH':] )fxXDB[Bql_AkG/DpՒq_OQH5G 궉v(A疟$S-WTt*c#:]fRlt8w^B'Ӱ!:W`̆ίQ7SӣG=$2?;d3n(;aS\e6f=Wm`Iۣ@:yx/Vٻ^vLqGk3uucb$ Cof+c6 )/ӿ`Щ6ď5-EI ԕ$pKiWi?At?3a} 9@, s$bty,T9~C͇x"XVaP1K]^xWC;usgQVRHKIeUmJ|Fmؠ3룛 VFT{סDۑ42R.A tX),C6]6ŷ>LI`:"2\ӦuOԵ0a쉥_(MJ?pѼST+*1s(vPkӦ 7ljr Mll"oVӸc'vRT8}JOs[3itإCT(.\>tV*]ꪊy}]ws٨zĖhϴj6 {>n VQƧ0RLl@oe|]R#6\ZՅ0{7X䏘ɔI(8Q<`y䧊I{ NFƛ ؽÍlZʴҋxS}K.oXG|ryAt.L!`,Nd(BW(am+Qɺ/OM%2A["g2ik  n\u%aIuM&ꄿWYV6?ѐckb6H &#!o}V@'D{ '=10` 3ࢯel#da) x 7&jRiƹ\U^ᤣI,O7}GxMZ@8G3h X%2e6KHm} v z7Ϛ!RMEǷnŘAb##c8 Մ>[ĺ-F,Dg]fPV_]leC"b.Q,޼<|Q 3Jjg< ?aLi-U|zGSHulAvX8bsןs }/mK jQm B ā Q S:qrjn1,QM۷5UV AB=<ȂT!L58ze3S 4 * wu aDND[Ǖ)kReZg#m ӿ'V4-u<DrU, #)VbJStֻ(=U72pJLyiGd.Szj BcXWTҹyhۀge+ڳ#bK$00>O]} Ƿ?Av;{Ge6MH f)?cf; PWK`/b/&-.$8Mil5cMjh$vec>Fr>xĩBWl?xU *gmc3zU0wQ@CAV",WHWlKb; tuT{4ހWl)@{V15y ^9amla2o19_$$pZ-V M \".:+W]Ii)9LxlF~sj&҃$YVcR&Kgԛ̖"v#Iu 4no~KIS6zVGݐtq,UȺ<,oڒUHlX(J%?ӆw%R6b@f/ܛXNӒTl,:Ѕuՠ۷>Sas9QbZӓ^tK_89xj_♕&*23m9`}O[3QET~׭vywf,A_/^BRօֲqR GS\qdv? õnoeE'}4fFVl~ڻ$0dO~B$]  ^n0;>`>q5&{$?YbTض̬i|q]*8۔Vƚ<kI@;J+> dnC(Nsp!$w>y THQC -&kWHs[)ѻXV\L܎SF0}T/6VVMIY0k>ҥ^uGc6ZY :}02G10UA qi$s^M&{Q0翭  w>lEC{jr[sAj p!5"$Ӟ nȄf m <<jQoxLGss7ZBf-Rn/(0ֺ 4̋Y0Ou4J(1{3O&oqtlicF^o ZY=w>ſ=gΎ"1m (On>M^ $6RjaR?.zX`n!hρn##I"n&A`MNP7S! ,ZUv,#ң&0,Eí 5a2)v<^} ="Ta6҃+vpSRKf*I| * b1#9pctYIӒ\A7md1`ŘgaGOL&q_VY[RAZLǢ}ĿLɧ땅T4ŭ-I-8Bp"e%L_tդ,PmJpK6 AZr'D4<6CF{dDFH#^aE d.ݷ@7lrH# _G{ezfilg+hWoYkJϑ59RT=+nv+jmM;)Ǖ٣ i7-@Yu?y^[OTvkM NR)}301$ uTYZ -] Hs V[v-Wj*'iYpFlxl2Yz|!NSKˡu9٘4.?ϛM^l@-ODh~zK9zw>X6浪@QFF (bozs(/|Yqy`[0e<2|j"L s(n[%0?*ͤw,d?lsM*#Gd>'QXrr6kM[ .3&-ɀK3듩@ ?,N?EV7[!!9~u9 0^l<#YZk8ڗ'L$٪v̍Q}Ko/zE'eG zT4 jIlAUD5pL;K'$)$2?7V)|5[%:J(ڮsAgx#Qm!t3Us[IJZd8`c)z.hV2uԳ߁2LBq{_Y~ C;]KSr:O@> LIw9 +d/ #,P8';lʭ+_tFu@rw Rmh@-9mnOBz̯ юRϵYB(} ؑV$T 5KFYA3#BT| l.gn1/w ZxͼAY*o:m6L VIT^/fʦt`=\:ҦIij9!øq qzuz0Ԓ|6\̐k(J=Fd;!^7#yVgns7j 1nJ02WHo?c== 1e aJw/(=/2\*čM޻K3,Rvq-X21v~F+ 9\YzFsyUbv!MmK.7AdzYĎ]i3ӥJ(R-Tf:77i8êJ,r8ߋ'e@^%?oUNS٥wAɮр"jD jT':+<ۗʚr@$gF k3~By~37S ?[wEP+}T #cr'W"CEEWt_n9fXdDMF CI4 Jđ-y]ɨ5< ê V_:rڛ!W?(5:99r$Qd-w1%FC&N/ݹָ;c#/08L.&FXH,Z Ӆb(ڑyt><4~aӟܟ.v\.gܤM1%\ئG(_k"-xӂ+GfBh4AѢ.C :+[/YU+FHqU.,k,QzXjǏ(>cf*ŋGḎT囒hBDkf5b9 jJr3^qZ$H뇋%iZenqcM8c*C]Bm|9D-fd-2T0.>1*a-%]Gӻ?ȌۅLQ 'q[{Xσ°!SaN;!RfGˠݳI>p;)1uVz>j?=u.,*C5fiWf ]^1[r؁֚ QS5u\;/Ma :7W7p-CyN[eBjEFLL(n|خl\!!^۽ʏlH.' X B$u6pef5k,iT^k 3\QCypΫtC"$w}4Js6l{]*C,ѹ1d% At+e3 7~[-qO-n8 *wj5"t) Y0|S6l"D|ئj5 -|> -ZhHg!yuOUwC|r71Y*Cyh2dG@1E>} \V3~ QT^ w,?izkA\YglJYA8?X|^ ސlqTO~w2jD+=M',eQ{[Z2V41_>vP:8{ZiAքmLΕ*K(Mc@0g zSOoQNo?,B/Nǜ}RəДyI;#~o+aXڕAڭO <%w +.ļ&X&e~|Nֶ"jGc#' -kD3/~ޛxl2\5)rb{Û߇)^%o6%0JzjA/yB<%̬Cz#ތFZ{#1e2