aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/functions_template.php
diff options
context:
space:
mode:
authorDavid M <davidmj@users.sourceforge.net>2006-12-23 18:27:15 +0000
committerDavid M <davidmj@users.sourceforge.net>2006-12-23 18:27:15 +0000
commit0d502f3b07df4c198688d87a08bd6f785db77a1d (patch)
tree7c7dfff63bf3b0841f0bf3def168f903a328ae00 /phpBB/includes/functions_template.php
parent3182317ef19a1a5fd632c1e645534fb1b056a578 (diff)
downloadforums-0d502f3b07df4c198688d87a08bd6f785db77a1d.tar
forums-0d502f3b07df4c198688d87a08bd6f785db77a1d.tar.gz
forums-0d502f3b07df4c198688d87a08bd6f785db77a1d.tar.bz2
forums-0d502f3b07df4c198688d87a08bd6f785db77a1d.tar.xz
forums-0d502f3b07df4c198688d87a08bd6f785db77a1d.zip
- quite a few optimizations to the template engine. bitwise arithmatic is used to check odd/even, usage of ref to the root template variables should reduce the number of hash lookups needed, usage of refs within loops should reduce the amount of hash lookups, incrementing vars were turned from class variables to regular variables, cache now uses preincrementing variables instead of postincrementing variables, some regex were optimized/trimmed
- a bug fix somewhere in there... git-svn-id: file:///svn/phpbb/trunk@6796 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/includes/functions_template.php')
-rw-r--r--phpBB/includes/functions_template.php142
1 files changed, 89 insertions, 53 deletions
diff --git a/phpBB/includes/functions_template.php b/phpBB/includes/functions_template.php
index 47ff906a28..04150d0420 100644
--- a/phpBB/includes/functions_template.php
+++ b/phpBB/includes/functions_template.php
@@ -115,18 +115,19 @@ class template_compile
// Pull out all block/statement level elements and seperate plain text
preg_match_all('#<!-- PHP -->(.*?)<!-- ENDPHP -->#s', $code, $matches);
$php_blocks = $matches[1];
- $code = preg_replace('#<!-- PHP -->(.*?)<!-- ENDPHP -->#s', '<!-- PHP -->', $code);
+ $code = preg_replace('#<!-- PHP -->.*?<!-- ENDPHP -->#s', '<!-- PHP -->', $code);
- preg_match_all('#<!-- INCLUDE ([a-zA-Z0-9\_\-\+\./]+?) -->#', $code, $matches);
+ preg_match_all('#<!-- INCLUDE ([a-zA-Z0-9\_\-\+\./]+) -->#', $code, $matches);
$include_blocks = $matches[1];
- $code = preg_replace('#<!-- INCLUDE ([a-zA-Z0-9\_\-\+\./]+?) -->#', '<!-- INCLUDE -->', $code);
+ $code = preg_replace('#<!-- INCLUDE [a-zA-Z0-9\_\-\+\./]+ -->#', '<!-- INCLUDE -->', $code);
- preg_match_all('#<!-- INCLUDEPHP ([a-zA-Z0-9\_\-\+\./]+?) -->#', $code, $matches);
+ preg_match_all('#<!-- INCLUDEPHP ([a-zA-Z0-9\_\-\+\./]+) -->#', $code, $matches);
$includephp_blocks = $matches[1];
- $code = preg_replace('#<!-- INCLUDEPHP ([a-zA-Z0-9\_\-\+\./]+?) -->#', '<!-- INCLUDEPHP -->', $code);
+ $code = preg_replace('#<!-- INCLUDEPHP [a-zA-Z0-9\_\-\+\./]+ -->#', '<!-- INCLUDEPHP -->', $code);
- preg_match_all('#<!-- ([^<].*?) (.*?)?[ ]?-->#', $code, $blocks);
- $text_blocks = preg_split('#<!-- ([^<].*?) (.*?)?[ ]?-->#', $code);
+ preg_match_all('#<!-- ([^<].*?) (.*?)? ?-->#', $code, $blocks, PREG_SET_ORDER);
+
+ $text_blocks = preg_split('#<!-- [^<].*? (?:.*?)? ?-->#', $code);
for ($i = 0, $j = sizeof($text_blocks); $i < $j; $i++)
{
@@ -134,18 +135,15 @@ class template_compile
}
$compile_blocks = array();
- for ($curr_tb = 0, $tb_size = sizeof($text_blocks); $curr_tb < $tb_size; $curr_tb++)
+ for ($curr_tb = 0, $tb_size = sizeof($blocks); $curr_tb < $tb_size; $curr_tb++)
{
- if (!isset($blocks[1][$curr_tb]))
- {
- $blocks[1][$curr_tb] = '';
- }
+ $block_val = &$blocks[$curr_tb];
- switch ($blocks[1][$curr_tb])
+ switch ($block_val[1])
{
case 'BEGIN':
$this->block_else_level[] = false;
- $compile_blocks[] = '<?php ' . $this->compile_tag_block($blocks[2][$curr_tb]) . ' ?>';
+ $compile_blocks[] = '<?php ' . $this->compile_tag_block($block_val[2]) . ' ?>';
break;
case 'BEGINELSE':
@@ -159,7 +157,7 @@ class template_compile
break;
case 'IF':
- $compile_blocks[] = '<?php ' . $this->compile_tag_if($blocks[2][$curr_tb], false) . ' ?>';
+ $compile_blocks[] = '<?php ' . $this->compile_tag_if($block_val[2], false) . ' ?>';
break;
case 'ELSE':
@@ -167,7 +165,7 @@ class template_compile
break;
case 'ELSEIF':
- $compile_blocks[] = '<?php ' . $this->compile_tag_if($blocks[2][$curr_tb], true) . ' ?>';
+ $compile_blocks[] = '<?php ' . $this->compile_tag_if($block_val[2], true) . ' ?>';
break;
case 'ENDIF':
@@ -175,11 +173,11 @@ class template_compile
break;
case 'DEFINE':
- $compile_blocks[] = '<?php ' . $this->compile_tag_define($blocks[2][$curr_tb], true) . ' ?>';
+ $compile_blocks[] = '<?php ' . $this->compile_tag_define($block_val[2], true) . ' ?>';
break;
case 'UNDEFINE':
- $compile_blocks[] = '<?php ' . $this->compile_tag_define($blocks[2][$curr_tb], false) . ' ?>';
+ $compile_blocks[] = '<?php ' . $this->compile_tag_define($block_val[2], false) . ' ?>';
break;
case 'INCLUDE':
@@ -197,9 +195,9 @@ class template_compile
break;
default:
- $this->compile_var_tags($blocks[0][$curr_tb]);
- $trim_check = trim($blocks[0][$curr_tb]);
- $compile_blocks[] = (!$no_echo) ? ((!empty($trim_check)) ? $blocks[0][$curr_tb] : '') : ((!empty($trim_check)) ? $blocks[0][$curr_tb] : '');
+ $this->compile_var_tags($block_val[0]);
+ $trim_check = trim($block_val[0]);
+ $compile_blocks[] = (!$no_echo) ? ((!empty($trim_check)) ? $block_val[0] : '') : ((!empty($trim_check)) ? $block_val[0] : '');
break;
}
}
@@ -229,33 +227,33 @@ class template_compile
$varrefs = array();
// This one will handle varrefs WITH namespaces
- preg_match_all('#\{((?:[a-z0-9\-_]+\.)+)(\$)?([A-Z0-9\-_]+)\}#', $text_blocks, $varrefs);
+ preg_match_all('#\{((?:[a-z0-9\-_]+\.)+)(\$)?([A-Z0-9\-_]+)\}#', $text_blocks, $varrefs, PREG_SET_ORDER);
- for ($j = 0, $size = sizeof($varrefs[1]); $j < $size; $j++)
+ foreach ($varrefs as $var_val)
{
- $namespace = $varrefs[1][$j];
- $varname = $varrefs[3][$j];
- $new = $this->generate_block_varref($namespace, $varname, true, $varrefs[2][$j]);
+ $namespace = $var_val[1];
+ $varname = $var_val[3];
+ $new = $this->generate_block_varref($namespace, $varname, true, $var_val[2]);
- $text_blocks = str_replace($varrefs[0][$j], $new, $text_blocks);
+ $text_blocks = str_replace($var_val[0], $new, $text_blocks);
}
// This will handle the remaining root-level varrefs
// transform vars prefixed by L_ into their language variable pendant if nothing is set within the tpldata array
if (strpos($text_blocks, '{L_') !== false)
{
- $text_blocks = preg_replace('#\{L_([a-z0-9\-_]*)\}#is', "<?php echo ((isset(\$this->_tpldata['.'][0]['L_\\1'])) ? \$this->_tpldata['.'][0]['L_\\1'] : ((isset(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '{ ' . ucfirst(strtolower(str_replace('_', ' ', '\\1'))) . ' }')); ?>", $text_blocks);
+ $text_blocks = preg_replace('#\{L_([a-z0-9\-_]*)\}#is', "<?php echo ((isset(\$this->_rootref['L_\\1'])) ? \$this->_rootref['L_\\1'] : ((isset(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '{ ' . ucfirst(strtolower(str_replace('_', ' ', '\\1'))) . ' }')); ?>", $text_blocks);
}
// Handle addslashed language variables prefixed with LA_
// If a template variable already exist, it will be used in favor of it...
if (strpos($text_blocks, '{LA_') !== false)
{
- $text_blocks = preg_replace('#\{LA_([a-z0-9\-_]*)\}#is', "<?php echo ((isset(\$this->_tpldata['.'][0]['LA_\\1'])) ? \$this->_tpldata['.'][0]['LA_\\1'] : ((isset(\$this->_tpldata['.'][0]['L_\\1'])) ? addslashes(\$this->_tpldata['.'][0]['L_\\1']) : ((isset(\$user->lang['\\1'])) ? addslashes(\$user->lang['\\1']) : '{ ' . ucfirst(strtolower(str_replace('_', ' ', '\\1'))) . ' }'))); ?>", $text_blocks);
+ $text_blocks = preg_replace('#\{LA_([a-z0-9\-_]*)\}#is', "<?php echo ((isset(\$this->_rootref['LA_\\1'])) ? \$this->_rootref['LA_\\1'] : ((isset(\$this->_rootref['L_\\1'])) ? addslashes(\$this->_rootref['L_\\1']) : ((isset(\$user->lang['\\1'])) ? addslashes(\$user->lang['\\1']) : '{ ' . ucfirst(strtolower(str_replace('_', ' ', '\\1'))) . ' }'))); ?>", $text_blocks);
}
// Handle remaining varrefs
- $text_blocks = preg_replace('#\{([a-z0-9\-_]*)\}#is', "<?php echo (isset(\$this->_tpldata['.'][0]['\\1'])) ? \$this->_tpldata['.'][0]['\\1'] : ''; ?>", $text_blocks);
+ $text_blocks = preg_replace('#\{([a-z0-9\-_]*)\}#is', "<?php echo (isset(\$this->_rootref['\\1'])) ? \$this->_rootref['\\1'] : ''; ?>", $text_blocks);
$text_blocks = preg_replace('#\{\$([a-z0-9\-_]*)\}#is', "<?php echo (isset(\$this->_tpldata['DEFINE']['.']['\\1'])) ? \$this->_tpldata['DEFINE']['.']['\\1'] : ''; ?>", $text_blocks);
return;
@@ -321,6 +319,7 @@ class template_compile
{
// Block is not nested.
$tag_template_php = '$_' . $tag_args . "_count = (isset(\$this->_tpldata['$tag_args'])) ? sizeof(\$this->_tpldata['$tag_args']) : 0;";
+ $varref = "\$this->_tpldata['$tag_args']";
}
else
{
@@ -346,7 +345,19 @@ class template_compile
}
$tag_template_php .= 'if ($_' . $tag_args . '_count) {';
- $tag_template_php .= 'for ($this->_' . $tag_args . '_i = ' . $loop_start . '; $this->_' . $tag_args . '_i < ' . $loop_end . '; $this->_' . $tag_args . '_i++){';
+
+ /**
+ * The following uses foreach for iteration instead of a for loop, foreach is faster but requires PHP to make a copy of the contents of the array which uses more memory
+ * <code>
+ * if (!$offset)
+ * {
+ * $tag_template_php .= 'foreach (' . $varref . ' as $_' . $tag_args . '_i => $_' . $tag_args . '_val){';
+ * }
+ * </code>
+ */
+
+ $tag_template_php .= 'for ($_' . $tag_args . '_i = ' . $loop_start . '; $_' . $tag_args . '_i < ' . $loop_end . '; ++$_' . $tag_args . '_i){';
+ $tag_template_php .= '$_'. $tag_args . '_val = &' . $varref . '[$_'. $tag_args. '_i];';
return $tag_template_php;
}
@@ -464,14 +475,30 @@ class template_compile
default:
if (preg_match('#^((?:[a-z0-9\-_]+\.)+)?(\$)?(?=[A-Z])([A-Z0-9\-_]+)#s', $token, $varrefs))
{
- $token = (!empty($varrefs[1])) ? $this->generate_block_data_ref(substr($varrefs[1], 0, -1), true, $varrefs[2]) . '[\'' . $varrefs[3] . '\']' : (($varrefs[2]) ? '$this->_tpldata[\'DEFINE\'][\'.\'][\'' . $varrefs[3] . '\']' : '$this->_tpldata[\'.\'][0][\'' . $varrefs[3] . '\']');
+ $token = (!empty($varrefs[1])) ? $this->generate_block_data_ref(substr($varrefs[1], 0, -1), true, $varrefs[2]) . '[\'' . $varrefs[3] . '\']' : (($varrefs[2]) ? '$this->_tpldata[\'DEFINE\'][\'.\'][\'' . $varrefs[3] . '\']' : '$this->_rootref[\'' . $varrefs[3] . '\']');
}
- else if (preg_match('#^\.(([a-z0-9\-_]+\.?)+)$#s', $token, $varrefs))
+ else if (preg_match('#^\.((?:[a-z0-9\-_]+\.?)+)$#s', $token, $varrefs))
{
// Allow checking if loops are set with .loopname
// It is also possible to check the loop count by doing <!-- IF .loopname > 1 --> for example
- $_tok = $this->generate_block_data_ref($varrefs[1], false);
- $token = "sizeof($_tok)";
+ $blocks = explode('.', $varrefs[1]);
+ // If the block is nested, we have a reference that we can grab.
+ // If the block is not nested, we just go and grab the block from _tpldata
+ if (sizeof($blocks) > 1)
+ {
+ $block = array_pop($blocks);
+ $namespace = implode('.', $blocks);
+ $varref = $this->generate_block_data_ref($namespace, true);
+ // Add the block reference for the last child.
+ $varref .= "['" . $block . "']";
+ }
+ else
+ {
+ $varref = '$this->_tpldata';
+ // Add the block reference for the last child.
+ $varref .= "['" . $blocks[0] . "']";
+ }
+ $token = "sizeof($varref)";
}
break;
@@ -491,7 +518,7 @@ class template_compile
if (empty($match[2]) || (!isset($match[4]) && $op))
{
- return;
+ return '';
}
if (!$op)
@@ -583,7 +610,7 @@ class template_compile
}
else
{
- $expr = "!($is_arg % 2)";
+ $expr = "!($is_arg & 1)";
}
break;
@@ -596,7 +623,7 @@ class template_compile
}
else
{
- $expr = "($is_arg % 2)";
+ $expr = "($is_arg & 1)";
}
break;
@@ -658,33 +685,42 @@ class template_compile
// Get an array of the blocks involved.
$blocks = explode('.', $blockname);
$blockcount = sizeof($blocks) - 1;
- $varref = '$this->_tpldata' . (($defop) ? '[\'DEFINE\']' : '');
- // Build up the string with everything but the last child.
- for ($i = 0; $i < $blockcount; $i++)
+ // DEFINE is not an element of any referenced variable, we must use _tpldata to access it
+ if ($defop)
+ {
+ $varref = '$this->_tpldata[\'DEFINE\']';
+ // Build up the string with everything but the last child.
+ for ($i = 0; $i < $blockcount; $i++)
+ {
+ $varref .= "['" . $blocks[$i] . "'][\$_" . $blocks[$i] . '_i]';
+ }
+ // Add the block reference for the last child.
+ $varref .= "['" . $blocks[$blockcount] . "']";
+ // Add the iterator for the last child if requried.
+ if ($include_last_iterator)
+ {
+ $varref .= '[$_' . $blocks[$blockcount] . '_i]';
+ }
+ return $varref;
+ }
+ else if ($include_last_iterator)
{
- $varref .= "['" . $blocks[$i] . "'][\$this->_" . $blocks[$i] . '_i]';
+ return '$_'. $blocks[$blockcount] . '_val';
}
-
- // Add the block reference for the last child.
- $varref .= "['" . $blocks[$blockcount] . "']";
-
- // Add the iterator for the last child if requried.
- if ($include_last_iterator)
+ else
{
- $varref .= '[$this->_' . $blocks[$blockcount] . '_i]';
+ return '$_'. $blocks[$blockcount - 1] . '_val[\''. $blocks[$blockcount]. '\']';
}
-
- return $varref;
}
/**
* Write compiled file to cache directory
* @access private
*/
- function compile_write(&$handle, $data)
+ function compile_write($handle, $data)
{
- global $phpEx, $user;
+ global $phpEx;
$filename = $this->template->cachepath . str_replace('/', '.', $this->template->filename[$handle]) . '.' . $phpEx;
Q j~62[ B `)fE8[-ae/cO~: UHa #XG9!j>ɳAVEXDC2+JA3+]Qjz,^^ߦtAS&STK }jd:!/mIӘ"eh#] 네*fwh cV]sw9fLh5HR/ Nv]]\^,@+:>62mc W*⼦ ~W&,v?3e_iIM/M4?j5>f=|>W` Sуnt-:,`@_Pz*r[`魨e09[}/C%, SKZq[4z= 0أ9CJ svv <ѯ?$|޸#@HcpBf9ƴqN v>)Kb So2QUߦ0% 3WH =|F ca_{;1`a?szg(sw? 3j5S akfUS;;VnBТ=DGp.nӺ x&UR0t.<ʍHv,P/Ơ6k@ [A(2۬?R8bLǴ@خ90`( [r0#Esu&r%;/1jj.rb{C@xX=a+xt꓁~8ndY̓4N@+/. qܔ R}Pk8qw(|.qHo( AD}$:2~ɭk S`Ɍ)wx#}!) ϐoIԐ$0X[)f$iVlt`yg5U)?yIfjNdO+]thdStE$nu u{crg_D!DìgRKό62r?(Cl-,\ϏyѺ J,#e -UC]gZu? H`mTkK;'wX+9> 49B7f1_zkvuJ =-èMyf#{En,q=&?M 28ճ2i(%\.Ss&\R΁IM8\V^c?I֊*^gUΨƩ8d(74HJFva L p(`("'x}..娝Vװ f~'PߗEAܵa"UZl%dM?RGٹjm-l6U m ]6@9g=Idf/uOuvRJ YÊ)(tFD?4,h(詤s+aBM2E_w5=ڌk*.njiTtx)o 0h1w K V bfתGL'ry7;*DLjHsf} 2r|FɅčiUC f;"~&O)^_Ke[/&PI rY-c"Dz21uF`xcGŧsmJ ,'O]9 zdN ߀#ΓS6mNIDbHc^r\<> }vxIĶ$ }t Er:sY._GmޭO bE Uk?6g~zn0FmxXn|>z]?o&\+*9q$͵t^ z=up=wB8#w&&}>ukP˹ quCNhџt xim`@ʕ-F:µ= 1l(f\&><<|R;R Rg1aN"Q:ݝ"]&GL=GvC Lg-"+w(F.1jHI:U~F{qap}Jk 0 @au /ZZ7vO, hGro7b@%S 2)/S"1d 5Ba2 ?ϭ+]e/ٍ ?dO #:dVsO`%#l^Y+=#DP )mC X:fqNͭpSP#j J`nz1$_'Q*`d],Qs.]H $EŨ°eV/1C  ]1#';i}C)“y T9{{!"K܀{89'U)D9lCn6M d5DJ&PA m $YwfZe}GoDM݃԰1RWWYѪٹݺZW$^أ0bænJkA<^3mS.idTiK@ abcyz 5QM8,OH@&)b-Bi@tmYjOȁ87q6Y %ZF)ApD>ǷY#UD~`qZ ڡP MՈ׷+>,B)I~>}MwB[(ӃRj8*!O,@I%m$3~`\ih=(J5+PW?a$HA~1D?5+FSG+} *b 4 [έKiaΉnGp"P1g_ȥGٺ+Qgߥh|8"Pe5Iqq0D5voZ߈-hcW,?yƔXs)'&w, ] P>=Fg6U dQM/4zkY3a[@&ߔƧ '*Z)yOɾ A߰YovUAxҩ\JoQNch8.P7/vKglXC76T3ah"KwcM`D8U??kU]fIpxZz@R'+ɭA=C qYW±x۝'[Ola@ c wkCLmԢ#\;`xgT_>0p>N|&"P\f jJIZu# )Q?G`uz%+(܆SWҪ"2/83 Rf5Qn2"˹1;8ia7QC%|DGPrz5 ?<:?r-*lqWw6rB8ǡcL=_MgQ6C2Ǻ>%5X€.!'݁f< tέ{҈͵I\Q";B+@5N, 4E5󷰮:94mǺR`8noFgʹXSa3YB>p ,\<57KVPGG[6,'2Qw^ӂWvrᵗ?X+5ԯn㟀iif} L$ŗ*x@ X$.V8v.o:̘gH g:N8(b06\Ye_s[{ÌlmDS_3By9RdL+B~ZTr%4$ W*,Kȹ97Ez]jtXj-S"I$M\dy2!Z,žXICn@YρGsٳxBi|ld34(T\Qt i3D6Ij}+Dվ;ܥjA.4e^e Qvɚ*8ssIcR[owT4=;3}PIjlhBr /&M zz .G&E[3Vk4\sȵ)EmM(3E1[*%NqʰjP'2xJ+#( AkoGOZEqn\taclI>H?;_~NLD{_΅}$lv5lb* u;{,fս(+he̐Ў9|^~:VVAE%fB:>͢iC(:B fz_q_adMN)[t1R6yJ$+/-?}lSW‚`o߬$t_ҜG:WNt*Kh~mS^l3&^LāU"i>>Ȩo 䰚$z$Χ6b6`n{8b5݂ "ĉmG=`e9: }IOud0kj$y͟24H *~і , nPsSqn&w0#GP"z떍#` O m6}#], nG0Xܶr[-wYyXA\rd% rn13OcE& &C/xKoN mbMD$PJZL_P!lٸz6tLک0I8QK9Ow`SPft+LLK?w~/]'9gt*a|={b Qu)K5uZ*_o͘ȥ@l !ʽlࡱANU3\4z*Os??,I)UG2s#B֘"z =OO*xBPIk(~ Oĕjd*&n$g z&[IyHt1ߒ sF9yɢ1">{x1a|T*)𒧬*4^WӚ#Ayv&NSRWla: ΪqOHpJ(r =!ٽ_T6:mZɐIv[xvW=Rm,6<5܌){R^ c5^*ٶc7$&z igC[.ADwjTqр7k.f<9d>wCTF"9Fg5ҋ79Qx\8w^y>2zcK-@$wmIrSK&s zB=\{v -N[kE`/ ƀƤ׮dیDT9G3kj-*kUәLL];۫EҬ0XF-,$9>bKp kMo̍zM7~]Nɪv }ߕY%@=*AQH0F{X,{S%t O:՞/҆!Oh, >s>RWAr&;0ޓ.Nb N˴kz"sTbh7&3C/vf :b9cWdQpN)jePWϫkG<q>t e$sCT~!HgQ2䋓T6ؘ{íPrDK 9I" $ +&-9:)AoBohIw(B(\)䝃s)9ص&{a Ih!`\lE]hhLHYU5 ɘUjvX2nr$\| g߼8t}q?M"{l1dg0@&uUܞ~v'b3bSʱ?=~D_ӐSӌ`GRckKbӮ)W2TpH\BqvzG`,_sHNjBߑHZ!o5iEt8jpTp+kk+v۲[1$W`!BS鳛gS6xS!'4vU6zc%t&hpe!5nc97FpC8߬$)"*^X%~j*(Eu&1?eH<` RN{ìEĤ1IJWDPO Q$`$sC /eq8IҩrjeBd+i}-޶ 2 REqQ~و1Ԍ>ea{l`r,.5身UF9Xy֣ Bfə.4x6Jt=#1"xƂ2i箓ۛU7ŋIHiYp.*l0p>-烫O MF&>yŲ}Xs9sB2^1BMj(?@·68xGPfߪ)X- jl+MD)\X_r!dRd%U@U.#5W;zP=EUZ33) k,OP:\(4t)4Ͳ*%2{&f]oYB͏h9I$Z bedB'kU *HM/`Phj@'OgOmUCe'i*[CD< ]Z,k[WK-([dDu/IQ }`P9MI|ETpMz/[ZpNTĖ8] r6TTí wdj)ltd+b ]31y +!NU:c*HAI%z23n7[eщPa\RJ̞\+29hM_\zJɕ~P,^nl\ ’D\tf_GF #kQR :0 Yd?+aOu7JuLKXr ϭ0oP@ڴC]dٯ7F@4g w [s,Rd0~AZ2k 70x_у7H };i`*| Ie s@oqKHkS"`iOg0Ln}eJ>Q=gj3?O}H^No01[a+[v}L "GW]^ ,̦.iG~i~MEߕmExIɭRA-NL(95~ffҒx<)>LT7Vm ˻^kDxDW>8Id[ÑǠlRNPm^eL,=('SQ0Gd5[ێid!N &}4T%{|\4+Cwc.qӺRa \-jSfuRV5Qblt_.P3kˈ4ݮj@"R9uj$lqϪ~v`(-2=4nnx]nt9@pKwBfC$M'ޤ>+fnfosGm8>ꝁ )nQc[xAdZ`u:Cnx4&, u6.߃TRj~fOsoǭnq`Z$(N/&WW'lu#mId&4 RY@ADZEvˏ7"%!VFL#T0ywK@#*T"<3I/'vu[D2>"m^Tg'83jJ hqJ ͪ9} m͠ q}ϭåWqݞ`FLdޓ66-9;z@NLzGMXyܹ^_߻S7 Q2pizsrd/;wX)ڬ!)vmWh[Ob 1.8i{1,0^gL2xsKI4vt=/961Ǿ ĊTЦeQbbqP@^VĢ[v+G udzG\+÷ԧ2 ˲HH&c2˺0pd/zkxw؛2gu*R4yhaE&xoF ԵjL`5QxK>uCߕ"H[ =K=*l#K 2Pa!`V6GCcKd'Adb emeMQn6|վf -KlsUAW[u̓nw6Y>0ow \fZOBQsFLW@AuW խ>^馡 pt试-Ix!oiވdd*QRYQiLӳQGZ~U4kuk qsMփƠ 8Rr @?]bң f\k8dRy`q6hȟw(Do1IWgK &.` vr@RE0TFŧA'%*j×o=W|r!1z%z:E)Fi`~-id0b C܈5Ul1*m/jaLm45MB{],S<g 3m:CUGzҌEz%[i/s -msA/mcV_: bQM)M=bʤM^8wH/gEY5j\^eW4s;E2Oe߰әZXьm@+G$5k}vVTi03eѣ[S9|)}\6˴mP &idYt>e,[0=0-=k̇diffzTFʀaVF-D>dILbZ]&iC09sv[ S#uC%lk*d?~AZ`H?fJ_ ( L1Fp4Hó9+^F\)1ZgAT~sVU ˤ@U~Lg&1Ny˺;G {+malHgUc@ܒrEk{ӕGs̟3 Gui[RʘE_Lr{%׿Z!+BjQĉ=c'7p9$x!C-l2ϋ-H7fl v_!|'o1`L9ny]mS3~L0Eʘ7$z-s8{xzN%i3;WЪ{B!2r6*Ka$/e %}AX+^ WlB2;v$`B݉ggN$(x Z?[H<%'P k\#":-Hb?f]]GNs ʬyCf;mYzDdVŬrUkYNnv.J%4X倊-pQS  Jo#?}.u k~4:')\2ǰC ww >7Iυ0wK9*Ʊ6mfo, O&}kҥtzqqf$c{^&\5EحfE` G4}w Ah`4?C=Fn5Mvc;l|LAm%G ?npa pA ƪ}2=w  u\U'bwť!N:HVYKi -z7JW S*m\p(?;/*+̰e/y0@b{P*ѳ˂hT8B_a&բ*񍿊9>M酻zvkdf} L"t3:t6W}ȾK1ê,Sx;JB4./m Ѽ2G-[9Jn.e0D:}+A_r99R#EwK?|f+|=7}LmLG~+&6hyl`/Q S  -SjMoPTCդφN[Nx$Gkyx#XScPhNhSaY~1.vg{] !^Z8Aϖ1vj3'L Cb9s)eSԵZcxП O:p_أK,_?п/k.2CnOnF+ 1\U4NqJ+̨gʆZm9!+2n|9RDHWU<Lwk= ꚠPńfJPxZY(m FU-7Gbo떉}!`Vׇ^MW9 GEH 6_%ZF" 5C$52}Sb-@*l:(; b9~}\,Dz,E۰ѢÆny$`>= EBj /Zj|!呒7жٯQ-ޫL'(z(WPplGVY&~f*x·GoWB|?-%3O74N* Lc(F煾$j hKݹh\k&ܒE";Iwn1ū\D|15ԛMq2l˩犴E484FIvL%2/3 B̄1?ofd$Dj->V+EE5?c")ɷd_[* f\^e.Wc.%d⇃B';pBɷ8ܷI QE!{,"IL{K݈'ĄTٚБ4Q j3JO.CfhsʈFx B3Հ?uKi@ҤvS*kUEj,fOYK$]0d H`  )Lpb=6ԁu5͕Ub*I3}%Kn[6`-·hە`8|w)}PD'_=$.;)%,b,QeJzSI~=e?\_zvlLp@8[F &,AYK LpAg?Q"F{q>NDE|YB/\0l#3w}q?7WjiLꌪ }UXPyiU2xX¹r>0\nQ-@揊REr֭3;Wnź&zMB;wOYAumxdG}ńD9į;ViڤiObGGC &oYXN oh7!£ Ι B #~©流< aF Ileޖb0,dV ^T5O!z\m0E}yI HԃR:SdPŜ,)O?LfDT &]'YQ^_"0]ZN`!hE88i0"3?h4{Y?})YyQꧭ+4qu\`¯ h0XDC(_ݍqf{BiNJM__ҘEhUš=+]^\U\|D =擸Lb?]P{^WAAr/%BT*KU`ڊ"pt۴㠋u A5*;Nޢ 0\~9Nu4'd~_T@t,Hz0vf'IoCjeCdΡZnAMV6 S6kpn*<÷QU[XBe(Wޭg打pzh(І}}\&8g˽P ʍA_@cnHWWk^¡&'4vr$Ó|_hz1+wר76` F8ǮpGC^ ]/cl/Q$RIN. W-/qkٻ;EuZ1fXcKI存ZNN$Fg~f4##鬮wt y-e_ <*1ӵmR;Zc@_[.. ] X366+}`?ۃC{n/YSE EN׍?J()x ]y}M: gmՊBjn7aCZ&VyjOçc*$k=2t Ð3,/;;)? ҘLxs9oHfx~uu, @qďjMEwDI[]vldvo!+ǜ./i<)~\6Ǒ]΢onv;E-+ Z=Za@u$,?mh>{/p/!y!E%t:x54HbaԂ) P?=wYS*R!RLv?g]/F}>}cVy`NLo hiFrߖ: ,k$U5:MK^9ZRHW:K֩+ĺumɝ}ޜqН`z.w ϺA# %aCrr7< זeP}TdȌ™ y1Qh67 A$#{7#ϣYPX./K@ q(^(1ji Id6շȬTs֗֡j tV)\/LbI9;y>OBE`e+/h +SNzp!gJQJ8;E h;ؑŽgr'0ΪjׂϋSB=TcS;=W*'.NfVj 0;2FN  8A[ IL}T9ÈOi0$ܧN,3AcBVi>pmfْ%-42AVW3lN(7]m8D\X`'s?6fs|Hy-f='-a_ѽGY/g X 33ɸUG/@⩞lPa|mvr+osFFS:ϧ[QXr3L&QO MU~!󀒟 5E2'xGaT%PsݷP!U%G>.N=2c]^ęeIu ZFW#SӍU7.l"CY@U6'.4sW@Ьf%t ިF=7CS'TTY4`A;v P!eͲ;Q>%O7c C4ݥ(SF_{Qzo*2uIy !M`($kWH/>}3B,aco譍GzfVRn[% Ͽ}*}*(ҿd|] EZ6j+×Ҏ(7kggv3%,hzg|xg:\'23TE?%OC D(ʟ󲫦t( Á ЍK.DZA9o;E|z=< ;G2@ZHg]Փ཰o,)r6WHd^=ҟfL*D*h̎{<%"p AWYRX2{} *pIeV_ٲ3 Ks~izmR<^:{Qɨ2i݇~Kc!GqڕY6[ bc썷r ҳ|daDX0̘@ٛ|eZMSؕ!0^G](F (a נMq_v$A:my':9&&YVI۷2q +zw8H,Yp:W+ r]=-Y#}2K>>[d^2[f4;)ajۀ+hxh>c$\&0dAsZ@Dg) j$:}Oh$3"! A ,A5Ά/CM}}.\R[HҨ%&GBo 7^{L2Y3'̖s2ںd9> DK4iHNh*ojIc1"Ȅ;t\vS(3u[9?s)拞t\C:پEQBX ?xFu}sIt,5G|vmxj-@Li 1. &RHŗU'5'BGi6T ,;Hբ>iTbD^+\`:ܿR'22.a.vYx+g5kt X *%&11}ixaԣ6;]S+_̃JREWDY{RQG"/ w\s~G'JF;<c|E*|JR30 J7zV2%#a}(͗ѕ.UzB.} 3Gw҈ "47C 9]0|xXCU@a9<34TlQ_ғ1gAM/<42<@BͣrƚKml|Zg}'%UNBi9W, k3*R.gU-n&V^w;sJ _֛s$v\?<1#ZCIa<dm~BnTRi{pK"sk?K8;$A}~j8UzMB]ПUiHnGů;JT`.Ҏ8C$dMY?=x#{ Ut[oKqZ.cPx* n&%9hEfvJDupgE]419Y:F+#fOW4e8?z!kX` -=78 pII¶J (/:>і}b4"33ᘮ-y$ZńTLTt?Z{Nv}<\rjm/u{1?m8"f~KД5TVnzid4Fg5$NŁ/f֞sā~_alg DjߗRp E..uz*`y5E q}V3~%#b#(/3&]8ve|GAFw^W,_T+k sLphG0=CTe23U8Ч}r[U<.$Ze; /ZȲ.oeeV#Ym䟣l611^/HWJ֚NвtUj "+)^Ʊ{‹cO5q-&?mD`,D8nrG}'> . ʑ|9gTVxa~.)3ڞj^MHQPa5E'>]%=f?ιx͇w Жڍ ( fJa׺rbfcJ ۘG0R<~ij-•{..6[V旬lٖAGI"aqAe#VIkld*JظJ2hՀrퟤR[N ^A Vlhc,?Y0 '>dp5z0,٦Ȑ5եF5Sv?P3F+N$+rg~?Q i(m08.DK4B_IMِ@/(eA\~l6fi5ר/A62| /v_;ba #b+mI*(B=gkJ4Ӊ^2Ub-f+>$۰f*닙RN'D.C*(,u&d{+yl4wwq$<#p?[~C2 ybzl+ Ϣ !fl5 IRc wӊDM k!t*7X޼Tc:3I4L氉SIF6E_ #E+`(JI@Z+\>R]{d787 dZ~h8&4q8UoTmci i$Q>gph w1\jp&%f͸.Iz2 οRO4) "9[M0Vq}cgބ~1(*G=C++$~t޺?Ck]"IeW[8L7 qR=JVO^uKOC6|D4N{elT-gŒ~VAKl <8XS,t~{1cRXjDgEL[2.ҡ='hEl%\T`2iTӒAzVٕ,~o7' XvPIq8Xt%R.@v-,bQ} >1F,oo 1`FVƲ!4Dn!3=t-(JdC>c.QA nISI䡡5&OLx ,*ARݚL)T \HL-;YZnЖ=OMǮQxp}Z,É^ Ҕ6icc]_Woq*(ʂ[% Znusaey΍!Qvf OXye4͛лB+.PcҝQ+D'=82nWM}Iףּ$PV!$DaK#tKɍpARx|8IMި/|c$yXM.D :9cn?Xc?` VFI6#"ȏ-ۊ͚%pp Hަ88ҺyuNCB5 e5[&9qx8(4YOM״q"6ONYkeDIS/4@lǝH2g5-eم䨕 Cюj \ + @^^<-GU#-'@|ڭP4_ug)E3f9kkZŤ-7 `5UG9D5p#O2fcU P;>+ ^չF"en6mH#jHYA?i~`{]K"o\![pMW{!wH5jaHŪm o6+2Y: E<&>y36I Cy", *mVajNɈOzvR[))wz5O)&ȶ\Â$J})g.淤06bBl{ Ascw _V` #3jJw^tnz{rji a"o*dT#X点A{e2b,A|2CZOpMAwT.ZG ݪnE0=^&)mIu=v|8) T?jj 7<;T :9\TKUל!E7 [-|$Q.p, hHcM|OMY׎o8aCrW9֡ՊOk쑐8!B2'508hv nbz|<`£70Ndy0-mo dr b_[-5s)=)(g.2zYP|aEOͪ,*[[ɿ#^R-T SQ;y%h4;TuL@m bYt!Œx]-$bW M߄-AHj)^a#=!x?H*O}" ={ߒם?ΨB$|:ǴYĊc:|LURٔ}nv9λI Xϵ{sϘRۦPHN݋Gux`0qWt0ӄA]Ѻ "bd0h:q7/}#wkpM;WC6ö8L}'t폙T&/[ +AӁ@*=,O%S2|g; =)ZMEb}!9 U$۹YRd&aT:"BOd71$I[u9}Hq7E,Z~% wS7R-aTF=Ksj~*{k7:UMy(U &/R)YqҶkBq-cT&C0Aq7/ͮJ̦(Œ9E.dQ>S|}Zs%eǻ%޽XzF{^G/i$#vO 2 y\'fUsJsGڨ}w0O5Oٓ#{r>^\B/D)H{lqv#u~=K#|ۨ$LzQ:+H<\ؾ yq"<ԅA Ѫ!XM^Rt^tFLZ  >4쥘ۋ Qcv1i*'0ݿ+Rށ$ЈaII9uWyE-h2' 3>>Koyޢ|,/%N q%7ebA-H^ c`{CL a.ย4nm\-<؋mӿ4ES|pxA(LXd6m. Q0HehdB)nE'T展`!d/ȃT|tɎKnj0Ys+ƃ0k 2942⠧k"ߙ>%w) rUf—:bpJS/@Ԛ٦;Fhԥc>W c8aǶERU&#l]AW!(_/HlQRk*yv&545ECыQ uc_Ǫg VPo.ѷ+ nQۤA$^Mc+\0*&ɜL:Z+3LbEYſ+T4#~̍1L,O6߀څ~Pq Ƶk}.=.G6 u[|xU^r,鳬yq䷵ߧV *I{MY/7fFwKh!>6E!dN~@.t:O Q -t*`2p+_Dh"ncƤĘ2-560aJ?DD7 _/IRNCv-A8_3~!a&Jr b#5y]XM]aV~d=+6Ю\ݤO//w>9vbjtn} gmsbcȧCbhM7~pE+ɦ$ uDC;t3|$&z&m$ H`1wϴX!7NV H/SSGu[($6!.<3T\}6͵*utzaXop xc-|화d-. ,1~G+3H@НҁTF+qDh.N̊ {I#u`/;|Θ2-8JԴP/JЩnon덬LuO|dgYٵpfV%*;mߑYQF_}jMݧ(b>ƕe_ӂ_Z KX2{N5-36tT ^:,8!6lOB82Q _!*TӮ +Gڇw%`J0ikfVBDYJ"֥3mZdzLm̞꤮lQ'`wMg[IL~;: 8 aUc{j 9Yf?Rlt+a.zo`Ltly_tWiیxʁJ% oqusWO:U<\nYGw * obj(H,eS5bWÏΟȨDjcl{ݾڨen ^Q^`iiW>)yL/qU`l~h6PPuZHwm0~,hQ ܦX&ZxSp[&yx~PlVŔV*xhnv]/"x*![J7<:O)KNz<~ )`Mwh4!ը()=^|SreWh}BUd˚`hˊhT13t-37[&%;&^uU;AHkˆH؇~\qE{G$Ѱ7(|0o#~Ei|}oR9`HaguVʘBS+X<kAqHӿm|Y3̱P|j Xz%RE' y&11aB>ut S-~|ByN\j Lowr M)3I8:3 waq!+smUϓn=疻N>Z~ޙ#%G30CMD ͨZ3[hda i h!L20`e)qn +pz a/# y]m(-֒[;m5vM:Ki8 xt}[Τv=/`穕^MhsZ %vecޮ0&YBc?KۇIT=TQ 0\ED1?3a~.Ed.KSI2`e2(ACvb{pD ~ Tm&KɄT zIw(m=o>47@`ZbByKЯ=.47Fe$yd=a೺DK,pG$ N(:~NǚG+ ଽ-VuiAy Q:A"7UCdAc(2ju(Qnoaƙ7Jˉ y_㕄t g3?'̟pÇ! ߊZV/-(([(oS,8.м[e~UT5l/KX mԥl܋TP1Xp\!X>@/WEZL-*`+SD^ j '꠶ND|Pʀ2o01Tdi6@5uywf݃v`CKD),Vkc{2yd"No%C`&JìS$3^Em^j4_*"ΒZTq m6;> GZ8Uw/Hk>s~"9ۼv&M0߯Z۪>wޏP%Zye|9L}H4}xIL[l* ! |>sk‰={<4xB*S6^JGLZKnNTFI|fX\s3l+7MI^[Ʒ_Jok|i z@|^JtMM>OI`j^+xcP9Zm#ukUT>GS>3گOu(l'(DΆ1=MWpT|[3MYHej+vbM V=Ɋlz!_8̱;4@bǗv7[4H1s&F) ZHjUܕg7uD>4]t68k?;X*ƁZ*3sZ6E"ָAL(nߣRܔۇPmm2$(҇`W]=wkl&ک,mLI&'D~|!iokӺsYXǦ!GՓ!=ް֨V!4Rs<xǸQ*FSK1.SZ6[p8T}yw7f.PI1UC|C? ..X8 ]j6 ψX絋nb%MF)wɏFhn;FUau V[a6=nQc`ĂuAk%Gc ={:i%x)@e5B:\1XO~|rL h+[oXb Fe5YC}9W&?tED^v#,&GU{cQH`>~&ʢDA俇\F`[U:r:tipm@=Ut-ͬ{'-ϋ8zvR* }X\!Q>8>S9]rݍzggה#XNz]%s|/#:РpÄl\>{ BR He.GfH;)[iNpjX4}lfЉw 1+wOKw1 @ ; nz ^a+[!l2?[KK\4,y!L7]?-OvB}KZ@y] ,>/ѺukazjwWKjNuf'M|ѱE~D'2B\'_:I\haOU .er<pTsMz6Q  t%fc#9qW"]dB hz39aZx`y-ZU!u\%sˍgc+u+Tn S=X xR+3OQ=S , 7AuZ&– <{eCiPk;-:pZ幫vjoN=p[rxZ0T2흐:\Yo$ 3,8w(*09{/U_Z=XclOS_l"Qs|HP{/_,ӜWj`45EW 6ނM2$ՎRO="F, RQm؛-W:زUX΂3P,WqM')N\ tسҀuj}EI 2:?{PG e[AI>]sY)SiUu=X; #K|2i:p(S'u6~T+*Zy16WQ@-Lj鞺>w_>Q}z!طHWGZk{>ʻ0\p 8C-k/< 9ݦ搘|_}FPp9ͻ'bS2zD.pWV\Qf0|qãCȅx4qI4 ʵK-!T`89[`{FU.$,N>6~vPg3iZ.Φ٩ZBIzoCcADqG`SvRK NLxl@̒uq7IO)\q 7$|Q:I&෠C q?.$8Ë[g9?E 3 Ơe$(c,q}ڴ^+68S̔6 #Df9A7l&U&8ʊ3(K~AyC: 3yYK *pN%drqvu{TwǩiMVm$Jt 8u9{ 2JC "@U7֙Ok(INT-MOW4:' 8o w qΦeʣ};ШKg0:,R& ǂ > [>UVAVF[) 2i`fF\P$TH\G;_u׍fMV6kgk^? E%ZFsl:{oj֗ R,HtwXql;K^Y?(k&1t}0M<}5f%;zN޽:oQvi Hs [d#zSjiF&2YtCxe\ cpaP3~TZGT(d:7O%~P)7M\ln[a캹cl ӌm ~I_kxWZ[ܤJ+s4~Sjjx2k2pu?֙] ߕQIt}5y0˰.8Ҁ‘^6%{,)e}1`7~\+NAcHSO$w/Jd6p齋>J3f@,iUi_ Hm~bpT1qS~N|{.k|)h@Ib|=U kdz!-jt,giPysmaSШaEw9^S.u ϿXMKŴUbd7O⮑*]hé%jurva0pVùg dYq~vғvGz_9` 4d.tgȅQ\jb w#T.(>D|ELEDM.]`50s} i܅PZ-<q)j?Z+r%3O?sz.js&ˁ{lb:N?O1U!SWޑ$&Iـ7}o&Eou~{-s`%o*7pD}&Ηx,@$Vs#׀oൽuUzL#Rg!!@r8.Bt-9?4Mؾ2/̅.r:ϒrDCeḢ3ςbdR?JEy8HaN%T|Ys@JkMVzM'zYp cU(h>6U} (+w\̗Hyꐉ|Dfȟл*?9jE!J;kʖz7~bN֩0 ɻgt*0;ꭩmg` ]g)*; С($\3ȫź' F?oU ֹ'VsQm6k&^i1"U࢈پQ3SBbF:m9^6Ls6x!:bux`ȴ M#'x#&^uxX"U;-N(^dAyi#9W擆5RT\N͏ }TnËs\8uu -%&/u[%9#WU(9Er^YhxVz<{"RNa ߃!ϴ{ٌ45w̃v24`VVN‰"p}S|(CF2!Ry$qyFZy7G yJRAw,ǂp-} |[/PC6˄-|6ѫBS<1JMBZ t GH;,6 ysїV]sRm#ĚNMԤҵShj#Rz^w`1ҬGt5DTGEH> VWhiqyl}6l3 {7I~؋=)4'd$iP>%ƽR7;M< ӕzBV6qv\!/<ՏiNĜ0v⦳ W ␁ (,Զ{Q L.$W !- d}v9߄z|WųL=P TW*r|e 8GoN`$"#p6vfcذUءX +mniv.1ükhA.V\=ei0Y5t\vaVP+AYlW 26d%s2p~fhFnq! gMQJH|ǿm#KDJ}$prN~E|猍f5}† '?SF&Z ?zd|( #zrܖ  k9Ι?Y-{9jWxZLG ٜ#>j 5}H84^cﰁIJǼAoyri6r9#oň73evBi$h_"! 8^ j#^q.^*,͸kJ|ad,WԘ@mTiaPe.8~XIӋd܎F1G)- uߓOg~;JsV7!3stJpS$[A{JZ$G/ie&H,t^N>!߀i/a<;4R"'|"r( U Yu_H5:N7$،uyU=ڵ3o=>L1E)S <F6#N"fV\c 4=*8h$F7z#+w!o&.Ug(;폒S5 S2oIrXk'E:U<ǔ/caWeKuY.V1K]_~͒0tR dV+5(m}kik鋍8s[ /?ʗ@2o͓5+x54X,ϾnAaf`z\/U |%6$JW*. =X;]GvR2,ZNh\+3Hh`2< ҧsk?71p hLGFT:(^y,',V2@@*J#З51P #=aDQe"ć|  @dis-$_o3!Aʺ˺Q8t!{Ү_$t6e 7ţLD@zhN$DIYLfޓd@o;`4{1 1) v2Miy'_ n2ޫ7Kbbk1+7E{JiԻJrtDBO!*a1& l#\;7=rs9 j.>:8 QkJ)7]ll#s`:+z@J["Rt7ُܼflR d3u?f F\R5I%`sǎgXД"Z63pf+iM nߙTueJ_ʪ;aP&g3+<fz[nuႬ#NyO*])cH\,t鲒yd'3mV;tX , hjК"}% ^@J6$IH+`kx@QP]^J_@$lϷ P'([JO+J 4ig-zGlz>CM9 LN;O\."\03q2؂D*WMG'i00-{S>t]!qrG̏^6ո*[,[Lw!`i0Fͦ#?;v.=>R==u35ښZl?XHL3(=x"M8m&-!j YbpvMΦtM&dA)eNmCҀfN+Dә#]eclˤkxA655̡qq sGn'C q%>hT1]M'w1RDqGdtF_C="G} .I* E?OҳEVZhAOAp|ԵZ,'Sl]M Tz "+"Ńy+`JC4&]$R Èq K^t3zrc !u`"1Fuo3}Xo!Z7W{)ܔWSvuWOUQzJ}k4Տ>4Ϗ$jY!Q7x/SX\j.GBh_g:k~zb ~$cΖwJ/P>1]4![/XɐL7^8UeFפ$h4sC>0 Z伹o%2 ֣a{Q)~_5ب5?;̿O8X}t!UQ?7a<~Qn(W n>N`-f ?QT՘EQFFO#)rֺzWB\zAuQ_x;x{}ZUu,¨p /Fch}up GGVb|2"d{>C¶R'Hpt}2l"KL-]ÿ@fd_KGf"$e,s+)A[sSy6`rMk"wb?TDnj@*$TMEj.,"VVRo[ )D;,ekoм TGdW⟷BvekL sxP`c[&!m1@7ɘ̕-ɁW{YUJfc?V::PNLC<Nbtˠ`٭^;bUHX4mG3HݹZUeH"-};A;,Jw"29{h s<YezUé")`¨YQډ5sR#9L˞1е<(_Lb,4eEUHDždxGiǽe|!X[6W\ӁNZ2wkN'_KR[ L}@b[8Ľhq|ro`V{IL٦? wu'odf0!E߫=L ydƇ}Aj Tn;VƜJFhx{iƗao..hֲhHߏ<9 jѨg< 9֕OZ y˜ڮEѤ8sy!%5TqOVs.-c]M$2!iFD&h5bJrzspdD!\7'ݿ`򇃯uHJĴje[ٸ -ܟo~ap)|,Y^^ *DV L]GܤǣvG6T y(4͊|)=5;c;%|ƘI ,vhs$PT&ۼ̪bjB|wnMI/^#7g3ۧ2RJW* CL[K5Y:<%$Rv7*hְPg8?iuIIy٩EoZs@rg:[-l!HK4瑝iY](_n(z$ M:RԎ%R'5 dx}fOUR}JфvĴ0)q^iIhlt{v9q)vhF0Gqt#3㥦<Ť//l1 z`8=>|%L<7 _ڔؔъ#\Tgxj Dk.ﻡJt[Oxҡg^]OCF\a_Vlޛ ְHq2%hu(xamJO걐?sH`ŁGNRjIU8bQw*}s ɇ*HLMe@o"jigc_NLE1aCڐ8V~ 9q ݩ2nk/1HRZ\zqMxآ8PՎ1D ֬Yy1OḾiEdIetX+t|wFkጋ~rƑ^ޏ u*=^aeM#T!Z#sԳ!P}< bu:=0xSGdaY"цzʋdE :F6r]B浛RAiʼGvkE=sk\6I>S]=7yh;X9iK.q7ښzs ɡ}R BP w.湆'rЫ庸q}*yn-hDRPJ*[&Yx|fm%Q)@8.  )Ȋ}7 T|^T_4Ф U2&c7Fڪ&l00zF?2,E1<ӳn.Cӄ:. n;htɶKLFZ@ELZD閄a͵Su74GaG7\}lpV?j;Z~l^+<PH3Mq)_ы_"-Q{p0e@e/41KO%y<U.3N.5 XZ֛ڊ~[cDQfYDi{֙2bז`”+E2jd]Ix}t!XJ:N ᪇\J#*^[YHe֨A2{"7!3niA\?NZ1\djū~ eU} #\$z,&?x 5ˍe_y*v߳$\/DZWe\|9B9TS  )C$ g;؝Ɩ ƅ#a&ԯ4W|/Iӓ3m05:Sh3' dD$0%ߵ)=0֐aAH.u/øHʣ;4Y WMΰkP0 ;TEVvQ(?GVgw1̅𭧎k\wF[j?x#ˁUeh<:|H  :!WW rAzKE`|Y65x>bZE|SՌ.`;:7-:: Y&{Ȥ6JS𣎡'ϲc%xFP5i>1pHΈ$*i!-v=Yg1<;䫩^˞_;VTx6Hԓ#~M'jU^{>vV\ņͮFзx|Y}\A'!.(K-˃a\}/PVx_"ᱽ.1^LRf:q<g4h~3bS~rSbyz pEvm,Hz^;x$ce"}bU0 !=yc5}DEpG4)J'l˙W9EKn󧏖קލdCCe--nO3k\ӈ-S%1HCZAOS\njqW&Qdx.m4ǔ1Z R-_/77 ]`zJB7CaqUeqFg²+MHN#g͙!nzfXu6"WjN`[eѾ(gw EGa~0/8k,aGkEO[Ք)X4AZV+,HeS'T֔Ix⣇VO/|S*B-c&#= fgSEPT۷IbR):tkZO1+U( " rA$yG #~ׄ7 IeOERp̡)a)k0ezաE=\~l,7?Up@)2bG#TC/@7yr5PDrbE*'ڇk`sH=FX6@=S<|GkdA3[W.C q~͂a , UΞg@Qqy[;,db>uqii>6 n$_3J7E'Dz}^i$};S_`QrCq?MG-_Ћ2;, 0u]&<~SFԤ'yYRW-4vJc u#b~Gvz9VܺL|Z U؉Ѥx=س;,?d+,U(S,;4%}f K~sp *EB95AՕd $oҙq|`u4$~VBÒH&*Š6ޮ[I{Mky ~3'Cg*MM6*02lER!؃?@F@fFJ$0>9>)EY|O07?A|BwXϙvꦼhF8|=l0迭lF pGEm#Po0Yvzt^z"UHցX_7G򘒈w 91WV2IEr:T_/Mm~GM-iCduf-#*EQ)a K(TGM9Kenmf<ǻa񄅩A0y!HxzBfÐĄa{6?>f|±jLj6AI0}Ø(,*%ezدs*,q`qY=ij"I TuMt(5y*G2mVAL=+4U(^=AE׳yNXJ% Zo? /y@z>gr3D=!t "8P 1]$[;)'$$1C@~D)H*PAL7@n+xCbe6PfnH$6amFP^r_N7 f^_(ѓlHq(5 s5bHLAРuu1! :!dE3 \̕QPRce&0)n^bXR"t|wftCGAߏ C@|qD~|" xPXGU TcLyH,1 yqgoͯu>K+yp,A*Ku.|0ڕ_i$Ӄۊn#Gac﮸kyPڜSZQ{c*Xvn$5E׉2D/߅ۢ} 9 ]D*D8+R֪j&o@qQ4Bz;LM[THfv\ D0U T@j>T&ynrPY-M{a}ө"~ї4+O;>Nޗ|3r_ [4>;zEB7[pW=X]eO|lOgV]E q#\/ec9,RBbRQCLrDG'D_ⵑE'%#Ip 9;O0q+Jl1r旞7PE67!][XpeiΊo~d<y[9WuyBΝAFݿb Vى8 kn—?F M )O"=1*VeOL-l-ӝۦ B)=Y+"r9i N^޷\< ,cp0m0ŕWͳ Q0h")#!|~ GsvbȬ+7]AtHvQBa WێZvҒLzu@f &x{e0"eYSK$DřC,͸ڿ;Aʱ)bUW(^SuNTς*"'lٱTŊ"؎oo:y^|xFlgbOi+#e~zխ5R99М7rA=E"W8bβ]Q1~l82>hDj C'ֳ*vcЙ{`4@2>b[NJx4wt5Vȿs\&A*y$~@& Da H.<2g&VaKLu8c`pi.Pܲ1@_i ]s´=8MBl(䌯`L[Y] 71mtlZA"d@ UqPl(.B$ډv-@DaY3Nnܝ gż'p}d= /DXf]K'^Kc25u{"TѴ Nwxf+wuC>XI$tBVgsoN=6أ,t4 _$^X8@G#:GI;p0mW'oMY(zXA^U@ "E9/&[j7GN6|mO~PDv8'3f3;W:K FF-{+)h35$gMlFx#4&E@頞!ө{L 21!W3 jTniLS1,'"JJ/DhTi.=^LJV^ {BoOkѰrEnY~׀6FGނp՜!ɖ0^5buD6KuD?Ksmt@^',e!=dVҲi|h}^!~9L b=-rpp+%V[l1ZQohտs)=H.oaŸmXRPF $ { % /=kȪ@G󠚫ԼcH"ڜ2RSWCYgm=!YM/q[L cp@oa}G00{Xqʹ1חk&%%"C* kBi9&g8 B3jjl6 NEMܺ.3A h=i-M|LÏ; jU^1ŮyuCf |z6$Ӻ)ԉJ6X0:Jۥ}}@cՎWB+SL^̌V+y8tϽ7EIobX))56YD~5:yƭOXR3k:tr J$UejIq٢Y|fϝ\FStU^-{-w7~W#X>`5 L,BX"ezva\ AeJ0[Rߵ/omz.+L؇%R Lˍͤ"5-^װ\9Vjȼ! G*!&t)*eԸcS5͊vb{PAHÜE @xl5NUthOy0)2Z _Ȣ _'T-alx#JϟY7iC8m!"mq0jS5^Qu[ OEm .ўUKt+XJ[e%06:7xҐ:d]m Li1-6rcF"Ac#XyAbU"ɷ]cV{ }A 3LJ7 zDr]g,RH@a=|%vl~js$"ML:/?FJ#2~BRԄlD߉ޛ\ sbxcTfӠ\g 1"]"!ȀdFLgelby>MUeCQ3SR/07"/@u n9;wp^쌴G7滺 xvD_W)nr$O>Y_-i xC0m]^HOO;P%ѣc.W?XYb zvߥRSϝ*5fpkY`[6'mòsq:(x֬c&XVQd(yI^k=\b<_m>; V PÑaDY9w #{ua2#rףƗ4T p# x>BsTrZ=!މx==T]xc [uD경15 -s 9P? 3Ct2ԋ 6F\L + B~^zg }C I}fap)v! 6hdԒ蘡'M]mԢrxnP<a&)'u"ПK*p-򃻄&OM%Q&RF%+SK/҈@Ճ.WLjkD3dh_CdGFʮzپ1z诮7EDr|Kp/_w3ibeZJiBSGby6k7N#?ͭ/II#pѦ gd^U@7 rJ4otv*EJL<(] RSqj)ۻVl.*—qr:b2dCfDo*3nhGm Mk $)B yT#Sh=2oytIkY"Vr-U΂φۃw S$`mZ`ޱZFˋOYͬi X E+B8?tNCoŢG 3 H)\&H8oU.k}yZE NuGֳlfΈtǕihN$\ :b) e.55ջM;jY#!;Γw. MЅW@}?BcK#c7Jayیz~Hp*·Q#1K>{"ڠ[lj$ Kga;0'8t_(a%5dl= FgN:QqT#{٪]mV!%BZ!S$EZ™uKRayrN]Fu.=3 Uʉ֝4S_You_{,5q?ntH^,*@ ^0`ŦP-O^l`_&+dCP\S`YnYd(L{yCD,`O5BJmUE>~H]`%ieEUXvDEKws(. P+{)Srνls" (WAkk{ƠV7q4v^bpIJFawPPAXWӱ{: L,]TPg`dd?@MTyU}yߗXe&h `d14]BKӏ$TBi 3l0Qi;UTܓ ,%DVwٸ6w&qE%7#@;]o%VzN,S8<7aLlH`T_pB_>&R:@ q[*AX9J)ۧ /M3kigh|yƼdf{\F m&oegHU18"(^Du_g?0alslt9:d;xw3x]W ]ArXK= ((P!Բn#m[1X -17iSZ!ֲ+Aɿ}3@>lwG13ab(TMucAbǥ+?&;e;^/~XqD˗^-`hf07j1OCF c+RѮ(=¢ED\bSm%' iׇES~H60Є_-;b@hWcްL߃B<$e&v^0X}`$zt(w(<EΝeO[E,:ja!B>{'L_I${u su Rjտ9Rn~8Me@1 $ *O wZog* |fl Hds!hP LEX1U Y/Z}xlwSU!Y$gE7lSs T]EυZ>jɔ%.𵒬P1)Cjide.nT3^RRńy6ދ@ h8cZfpIQ% :ik-s 11̘*7፿}7͆}ck}E/beP4e3}y8ͽsd4{&s?mc;]nV5vz L:kNQ>f9".HۖYʧ !DTC΋W)-ТʉM;=[XsP`~wז2) dkrqM/WloZ}q2~4peZd&Yz8lI^SIT[')i!:jBL>l7g]l.u`-/dnQSk]cǸs ;P=;D}M_²$(``>Md +H[SfwDuPz ]o851)(BYU"Ag7+oM4DM[x]'%^6ǩ\H9ULx$/>%٦z2&N1!I\+.Ea#}.leK93׋aQ1_$cs9nG+, *d8h,br ?=P:[f"gPfOh\F5 M' 3pW8;[_g,^5CMya;?0F{t aּ5{;0*{sXiE媥:E{g썥FD00s%渜 +PC0 ~T1+Kc>`Ö7. Ih9şv&#^U8.!~]%A6og5 : ګ:x-Rkz nk\ǹCcaDs?t޿s - dIva}k `‡(Q:`,1wݖ.ċDESGR;ȼԤ)N9s}'?yCSxE[dz#jD,1Ԯd*E@m'g%# 평KM΂?ә$);d jOGKIq$ebsxSnfF,gϝs|< mlrX(U5͊-/S='4R[F'{=.ZFf&n= P> ~/K\&hO:u]:!CoV*x 'EBӜmr_1[e:LdgՀ[N=RXM@AOVIjt?EG*^YSq*&suA/=IP8;&*2cJh6Oj1 %|5aU,-~VQפ T B ;7aJc=Fg@Q+˥"0=B. aumȲFuE=-J fv'cOIik^\Ex~v>s񯹲;7q:m:Mz-)w#CzE/|O|zFjt{ M}hZ}Z>OzNmՈܬ,xIgG8Vrd<ؾ7 ;?kFS*a hQ]hԝō)E<2r/!D{Bj j 5E`,v4h:*FVA3@]Ezڻ6zRޓKĈ򠡅8JT4'uQ( ًΥ,J??jx(4vio5iyͰ:wgW@ZI%зIv&smֵ:n,ΪIuag֖ާp/k w!֑fwP].0ku'-,D>*by}@_ڳY+J֠!>j~)֋xB46M,jjEfu~YD޳[ʷ<2р;Zv1M~/'ouLOq\0mS9sF$TahbelVd?#;v>%er<|fkR?PqOnFDJ|4wg8+QQ6I^xvbP;!7:k+5YzDG_Z9;H~EXVCݲr(c1\ڱh9P>./=As|̄̕Ugi^=SqgQJqykTΟ@u=ɧX4)}}Ӥ*/YjʺyR9 k>vSR2x  6}T?yu{,pmSna{GxQ>)'*ֹ: )5@xṮ&}!xd8w \Vh#D@q&7jIm܇qZЋLn̓!y5\ ]<]^TD:&x6 _a(^kdVc热ڭ$ڊQ&rR8A' 2ΠZ鈹0nB:1.ş=Y$}CV=wPy)7N7]7#.I=kemaם7k86C0*~TIugBݧtA ҁ3'/k7D KPj"ZvV (a3~o|n&{ vf.im7T QE'"j^i}I u*J]j[nKI߫8)'O\eR_XV o%q%O{GۨljtN7:=nqLUp2Nx 8lQݞd ca=M,oXmVGՆvPrpԾA@ԔH=0=D#OmُaӃ,L{~ Ҹ\Mҧt-\IWkWIw-q8s$f)}YˮZ)LBVzm3c]i p9ѕb' ڪ N}!34&]!1IRG|f@z1?xObLrYmFmu#mjS>}`՚3YFNMJ"}(נxb:IV\@+kuDX)܇bi=3Df[{p 8(7O=]$͕Qry>|YYB_$FP[Buyz iΎbN:;! 2BhOǠ9v`" 9^jUMЋg(>%WG񥶓8`drn7tTvHȌ$L^SRWl܏=^ƹ9E$ЯS"=d2â$9tD/A0uTw@[(tz"ߦ}`N_nnm H`$O!X6ԑ%_3hB)kwAkx5}2ӂ!BiF15 Wg&֗Kr\%x4p<ܶ\aK]nwg_Sqm9ڍWIgx嶂KCK;IU?,(WNVbӴ<~_~kȘ- 8ȅQ*ʱdR˫9{QcK4s%b<3"Nh`Id%q0ҧuZq{ΐIC1+ZM-V_'R#\{fYf=e:EfZAZ͘FѮ)qUH$=4sM02U4f4`AƦ(}ieV5?6i9ԒeH/Ō4]o~ FAZ`$a)GMD0]&o;B&pa*4#vm~P^hdEn^I/CR:6_d|19O52wIx-%rW:BS|2]˚?p=6H!hS@OA=l8B ẢEֻ##oR@-@s+ƽjNUي 'Ā8 !P^o ^h2;hv2ИO 3Bd+9Dpqf=. %[\$¶bd?>1y&H[ppK.f9`3eL7lFwFl ՠ/(.˽uEc\͞$Y7uY+EǶj͎Pͩ~,?la@ Nyc3crfHis0GbE+l/r<,z1t!u 6FzGa6&[V!W%Ki czd.hr3isƗCÞ@8wmDEA%+音Y%NiVpl;Ilf`>f]~99?crß|HC?Ӈa~P[> p-J#5ب!'x߷~4ڬfyN2UUy!Jy1RWz1Uɣ"i[ ʮlk2_J=1#7\RQ9HݻH#%$fz 2"m >- 2ၨ)nE Ft_4NWtk3-gT0E8 ERJf m@=V;ɛ+se+ǰV4^)dUaTb|Ftz,?x8t5)&ˁq3aLl+`o{*!?CN\Y$j@7c)RaoXc[UN™EOgr2DKroG2%!灣{D`G~sB~$F+"hI!򕓣o;i!w'iI24L|鷽/ӁD9sr(+Qu"s"&dl\(ȂGsukkEm9:h8wG/ J=̒L㠠 /Į}5 #!%<6M{, Ih&ڛO 2վ?_[TLNV.6N$,+h Hin7/KIph>G6/1KǙTfPi}UXseRIpm] T \r13Cus3\\8CpV%=`::JK^*M?}l`|){rAe/׀ɛ{Qnjթ-6;e`M 3#6@%'Xsj*S(ls `-uc%棛xnm7-)hrԋD"@0]ˢ\iׄ`BN2DA XR[kDM0]lstqZ$E85f*_*|~} &z3z Y}&0l|14lD~,`nV]k?SXM*3kYDWvR7Zd2M3AXܨE{a=rmubZ|=У(V#9hQc*G|2,G9<"afJ#@rhڶp6FP4l$c\1@Jh'H7)xv$n8cө -%%V>N6$%J*`6:BR7^7iQK 0 pِy oEH Ӛ`$)G{x@9L q#ۆk\KGḨFY=Vr[9J5Sȫ(]ԚAch='Tnk㗧a`e[=XX+ .eR)8pt4ð$9Րskd=gRq?#䢄~^<dmK7R#iffŐI!DF&6ʛbS{$R0hjRʆ/bu0nȞ7WE ӧ2<-s>҃l+< dmE-W'xdt.)I7J!rb*`JUG4vy8Qvt=U >t_ ho} G} u}0etd! l@Qn&]GK A˧(!L q?P4Mߊ EJDN[ bZ;k֋XB` dp?8-!T)_4RuĿrs 5 4|,P\6jP61﹝\L<$*@u {͋#bmK:\+Cbۄ)[ma|$Sm .GQsh^򊹈-K`SlY@>|7t ,` Х SIY* {LT@/o!kHR = |.f ESmhм@\)8=NҬe;X1,4}#:-Vec5;F,?Cy59YIDWkLqѨclho$o*t?&b%2W/S7&op$ȁ&LWU!_2.2%zfxz G ϕWҖXA69ҟ2O}FCEFqXx<16P|ea!|ΣOAKRkp[$:&4OnB*(P]Pab}}bcL^ΐm(φ2N^B-- ;p&Ph@yt:`V+Vh`Fub'㱺7b_DpT< ljGmz{Υ(jlTMKDW]kƺoIRT>(E#\E!:cb?;v=hfkSM¡Zmz& do1 ,W|hM=l{P~q&˼}*:ku+O$q]Bn̷b lX|b&߄"9(0)링`IbԖ~dyYs#@Pp=Άttт ;j[=mY5+IXdWW6U_* oNvE`@\Ӥ[g~o /-mH>|-$X%#fZD#9*;`y$0<AW!*b s fbU(S<I[͐?IkC:H!V~4$sE,ꪸbaPj2qHEhzGu&Fݮi1SڔrVgqE`כ.7ʎ)ӕt2/:CȠD!גP//|yrd,T,IH҅զM6 F "]𠅜bc씷ͣt g|}e~4A6i̫X.0ILHʒ ׊]o(bc`q㟃 /EUO`Q aיD$Ϯ:j6@9L魕 ]-{MU̝+T|_-gbfs,Jg4RN}G{k$Gq)!r ^#뵲u^re3*G1A90.(E!HY=h,]M 3\qjj UPir(!2GS%j~0hg Q]4G$ xDdZP<PcٯU%$9kS[Ls=`nq+]k Cz+0{s͆9Ja}(!3TִSLg WP]CG7 V{͜׸6~/RI)h~>+ mH:ScF;]d`;Tɒs+3%yu&9ecK.¶D Q]ơ'~ĘWbPY045(z\SE")YEJAYC'HHt)g3Nq=ՐNBҫ0YPھb"AGԀ/\k2, gGE$͂;6Rͦ/IffKޟ%h!ү>w1]z%0b 3I)q|KnR9 F?g | bTGGMR&`&L i4[srJ&H9; XJL@Ъ3+OmLݟ nb49÷+~'sIguu.Ği.vqɎy͖Di,TDKm2m@ {{`Zm#Eҷ4,V9_~Smlo"VC.ಫIWuڽçGlt>Ң̈@/h9%"R[cv!Wor}= m~TV*}IRj^N"\0[?ll%~%9ёq~J߱^(QzOJ;RQ(cIѮ|eT`<!;%u!>%}\÷~l:KD"arX-zs#r4Tz$X1iVd}cEJ;dU`uZS[I`n$HЖ΋4_|(DPlRdK~;"АQx\|A*uLRcPd`2;ծ w:NP崔ŜLeӱI Gk6jFޔl #!P/AO9UM2uf0=SJr$6`> z^Z1db9̓2'b^3f3crNt @kdW˹bY+3 ~7Ij'X( FvKwzГҍkDXT)Y-%U({@+rf ׍;ɍ膟b`??B?FBp8h*O\ ;%.tf fKD5ZBr UB.Nk-ydvѧv;7[*gv0:v7aw*RPxgj.ZDIa؈im)Wl"@yC̎$ͼOX *JzO7u&{/vsfjw|wS<:q xhi:d(T Xpu0=8 m!^T-f)[uub¡Q۹=D|HKUp\UJ@i*P8R_6g 4$4qK6Gae pek${Bk% `E%=?fh&ZkEq`[`Z ҘE@1ٹ7V\Gtsp S*Rp.oTU0¶YKJJ0b"7;d4pKFB6nzJ* &d ('qZȀ6_f<+c\vSh4jkvLy-JR5) SR&4sNٿEwh$'1P )]j|uѦZV@*]B7S5lORZ津NH9ZndҖ._胱MԾ_2ݘHZ{nʏZ tE[8"6QѱbϾ+]4*scq JP/c}g\ݛ]nw6;stivy\f6+%9bĂ^@Pj RB ތV/^8m.>HgQ9ug T2 +Kj0U_x+~T.rh`Y vYn{\ŵhCh&C"7}p(SKaxvv&A gނOP 6pl'?Ż$ʾ4%9v'ONOP,6ʙA}ʕIȃրXQ~ {l& FXǪ'K>M|T\*©>@y1k3?*|2`B-|z?PɄG,*=#u2v?Rw02rd2INRSn뷍e$ѭz' ly`J3Vd zO%ajq\`CoJtU1җGW @;hZ[Bgʹ|خuoGKYi ^"|,@Ϧbof/t2a$MVj=A߷ /S{02泒.%  Ca鹳,* gVwK2a#XN2d!xz,ؚLդk}VTBλ*_d1:=O TrB.@g[L6P;8ݽݢ$7+H0+vy5hLNL5ECb @zqd T5B;]8 bEHJS`!?U&:c+gֵFLUDM*Ha+-9̑CGτ <|9 ĆLޛl9@#M3bvɱ]0R1QO=W6{1q _#Io6wJȫ d8R^2!h׻{G[PBsġ j~ȶJ 欟+Zo‘_^i? L"<\OKRr {`dL5ɉ >M\=쪂ke0/<>7^7N<5*Jm^.̧ƀSQwzhenC<ۭeXH7FMfz_wM-r@N|UB;,B}1sfd`-bcА2"njMY{c37 ZZz(K.meyemZ!gŽQH@(Tif×#3 bL[,]PFs5MgiPSː֓Lz D&nY|6ˊt,q21߷Ӥ _INr jv @{ WJ%2paee^V" Q GQtU 56RT*C}S?LfC@DIb* (?rPA$-BW}M}eFPw0);h!@9,| 9$1TXRR}Z6^܅jĔAx;É e}cB 5ClmU2UNߴ^[Z|!mA81Sɹl=%!n$DԺr1n?99q*&ͼIMwID[u96 &;z4f!8mit.,Dg jC5c2@yxLPB7A9r*3'%GV-2%94 t 3`({h0b0c~ͪWG6h$mf(f_ʟ6 au d*XrBG%3s<>C }'&q/>@ 28qacSTL%-D7HMdT?dޚ]e4r#4VvNk7*jIY窘TΘ-:cO. ڑYVRIsxD+81ޣ{:Dt~[7_WU+^3ojXcqh4UD(}K!_KKOi(@Ap,2Lrh5Ɍ0Rzqg !#]v!0G16Lp[.RP8iwWH9"$O[d0^EKډ2қ4S=;k8ҷ#JfH. 2rjD%-EL9=g 1c"3u"ne}ESfYt)Ԑ n&"Jd9dnw Úf$ *}z;X4˞ gStNʌ.l%RwC\Te47e%䭴sc3UxjU˻*JRj{Z+`e^(Ǹ#stb)yK+G OI.[C(VxXt;>l V=H4V<XNCiG!n(lȰ[ jJ,~Ъ+#Ⱥo4%Yv6zͅ46 ٽB dӛ-QU5LuT^CF1_`±Os.΅R;Ejpꚁ@~s_9l1#Y ! &MpC+oUIM|=0A^# K\nQ\CZuVy&tJP-Je&ٗ:Qm1i6<fPUasW-'P 4 ܎K1 jJBܭi0v?K򟹺u v%y9*Wb&L#/ʀv'x["XWP+~+ IM;KpJt⠽a'zKVVlZ8lQbvۙ3n%gE:[Qkɼ(4$KS#SׄS'GT;o@{\dԑE4vbU~YAP ڶ\#Y[){o]OQ j ,|}MG"2у}hT]Td QI'PA&|ϰ, (Ϲ:R' )X (x y!UnΙAX4喂5H@1.܏c\y8w oFCH-BN0XS /߃JJ̸C4,7^:4qy4{~ Z '0X^uǢDGzv9h`ENuԦYQۍ-+KcheqG2ތ6Ixte*TesmՊFΞ` \AcT=.zRdYĂe@FA7u{tTlXKEZT#U:=FcdS9.Ir_h%Xy\*4TQ^3ȳ*3,00!3AH SKr ôlA8uxYZWLnƴM%@~fJfw bak)'(hk0́UN 5s0L/ŴQ9 E,6Ӿ`nk 2Y6$9>芋t{:Ό3!M-Zo& ⛺4d]!-qmcHZ`Ua IkpJ, ^ 笸fƾA0 pÞ)B:ݻZ/)JU\J8ᷥ>gN`KZe 5%*'YoIh"o<¤Y5 *Vt˛qg$~TQ]!/)q}$)-n}ZD2|ht!/r31FtqFkD7{+V8<oHHX2Nmd!]$@~3dFr=bU3:"L/* $%]2W{E`H%6Q™ZL {kU*,a~I}ATXD!!db>DbQtg \;+d,1@Ɂ8=f%ۓ;}8EUUrM ; ls%E4NQχ])3ɂ/qq[N_dnA[3V¼R@fQDa Z>!?ڨe{tr&:;TyJI0 tb9Si9yogI$'d% RR}=ƷbQyNfxؗNTl=G1lfo~?0i`㸦3EيT .| ʷ}ƨP eVQܝO:Ty}=E=IV2c/뀿X&_HMN]ad i;%KBR=?˕2 Z5{fWJ[q1ywVGoG) QٲƆ2 5?`?EPr\w49a^vs*mЬ{ͱbQa33YWB'4mL̈́Wu;Ҏ}=(FS `DZvCU1ͩvm_Fh()jg=6wVe=4de^,aGʒU h \&J0pۑfTVXYHm9h@ U4 RD̰* kdB?qz [)m€iVR=v4 ~e@[zpT &W 4<= *fUI"\"5Ąă{IL@5H>֍ N— x1¼0dӏ.}.3d? kbL_|3q $ap?ڠGæ$.+'lfl&VRdU鳱i3./ M)3T *oH7ă a_rbBXfJVU Σ==J \y<3a$2Š1$ Vg< /up kT J*aD3-nv)B~ c; DC?K]oe8TBX=< ol7D-5Jع{`NIwyat܋ׂً iʳ%4 .`_Dinv%. ߷7S E#]**RN_,ŎMMD׷/CJAݖw6A"<X|!Uǣm$ }\a9 GP[4X8uF|ބİ=2$zTtd&=yXr8n0E)TJJ1[OEZoI!qd\5;A(E@sUΟ`20e0țr,LgXxQ8bm;:dBV)e#WaH vw8LܒO$}TǴֶ'fShH1Cq4 I=2O39W6&۩Ki4vg DF7J8Ef:kqʫ?O$=9  <#3JfrSi)17yɺ%e+N+l7a`*'mD=i*{;9{3n#KɆ@4x5F,08yܓ1k-q Bce#Fνٮ{:@ ^#%̗͏R16C@FUmxH1^dKvzW/Lh\[5O_\pnP Jk"U::: Z At]`aaʩ‚d:rWz&f>1~-,=Wov ns61ynO*1k)VydK!U %J 2 CHQ^81vM9k0CCSǮBfYc`^DEzAarEL*h^neRL-#^ڈ#t<^Git0{"Ax$DbnЖDkq_#NZԶ]L̑.~ {cV[lc Z7)r F/SBی~cZܸca D23V!;6wMFeTume'_uFV jsř ľrRp/'M,;~ ڵXaRyHC5uN-!L}!xHzƖOШRItܮ?QB35UE._Yu@|-Lv龉3eK-YUx?$hg瞐R`ZҫS@Ea `1E7N^ bi@X%}WH2q>䗔8;㨠GL?.OaݤEPR G96' nݥ^wxyƳ"YѲ+m~†+©3[sh3\E xu ڷ4r+S|yTϧy=$FH ɦZm#]*?DE1ؾB?v\wUoZUH\pl痖0wO7jj(<_rs1ȳw$kỒr`I]vG?#WZw^ミy|vV.p5 } lM^*%hI/| 㾋nxhXϩZZaY2~C; S'gGWfA19CP܃"\\WS<s]CSt%"W&}/9  P$A7|B%M@{JKgA|]?W"$yxbu20B+x~2J/mD-f3U+on4 2p8:+3 (~"qXR fUw'5V1D !9Xk<$U2lp$҂RW=t#y\V;*YmUAtcUH5Pa*o݉P(ҝx+ 'קSW3Ni1^F󣨑Ĕ :o9xpY`{P7ɹqЂq<,?؀Do7M_ܚ^'x_&l tHR~2qN2='ij?8tAwN/äG4/0.טu~+= <ϟ),Ԣ9PRKŷ ]b1,0ՕDL]t"-mx45CaOܶk%@gFTTgkt.o6fߴg{g{ 3.^jKa5<J6|}b%@F;']2Oz_ pAK>�7^AȨq^=a]_%K䦡1HY)hd!HCƪ@z)PKG>2K :#]0! >$ݲTm%Ë0GɚeZA_!_}r$*c3'g=ȾB68cAIԇ|BD(}˱zGLXz~ emn\4P9,4QΕZT1'#VUZl쁸j&wCݭZ0} >X Iں-J=Աo?z&c8oʂG>w#@v'?p5KkYtρ3T2h2qz!P Ee,hZ<+#SȳZ˵}ByRDC!c%juQW,1؇dͲQBALlklP&loF9.s2|֟[L:hqgcdo(F=5Pv 0yswR!E0v*Y"SFLb}tgrH8.8x ~-3ɱkibNCBӂiAѲ KIsQ'd^4'+*^[};\+hǗ6^xrn?Um: g(a*1m;Q6/+<7@kyuHQF섘Wh9~4-AR޷|*w$!tSEt-aX8R#WZ6l>n12fD&Mf0} /;w3a>P]Y6 NГXX㯋|0 e4%ɰG'Jdb^ ~ nCEt{Y3ܭH&$Zb߼-[?i"C&-ſ ao. (˔ RLfRzWQqYq_vl*.W׼wsȎ:[QLٷK.:v̄{. C GN}@vYޱn' q9"NVeU0>ȈABg!;<{mVݹCN {jlR  B RUZ!!W?IkK`Q% ue4Mztv&mmjAMz`"kbhm~VlukF1s{BY cz=~hm@Uq<<B22)g8|$bF(+$oK*RH36v{gy"x_ *#k Iע~6A\Յ;MCJT_&J(0e xuH/ j7"6#SF7d:@婨~FJ53(AT><h7na{X*.f_Qh8%㑨QËS1tk8)Fkn(ꏯFֹc4G e:$^+kz? P3븮@ȍl5Nhk8#>RhQ ?$؆BPQ5 ZqmZӳfq7,"EuօMZ Fޱ8:oo>i)?CHB$OpTz8kҩU ܠ>_S6s_ ]̍<%it$kK@7O!'CuiS")\01|`$,H4Պ@ՐsxIVUVԯD6zz+No\Y_%/lհȂ?2Wwzn$!gm-Κ"T}%)M7k !<62Bz8s|xV4%e\ժaot5ڴoz7A0a<6ԋq v: )[a Z7lu&G;j^ |"00@zYz8ax 'Lryp)/s7L/7/dW$1 P7fprg!+r`;N(WjT)oE̖+n+?ׁTo I=ɠtP7ڮID s4Az7vLIş32&`z\nbQ1bK4մiV0]b)~r;YMN^K,K7{`#1t LxN-#T}U$-%AYjй F#x`žuYyésKg̒-ADG9Z̥/lwD):rïVYY<%zJLj|RlJh9\H]fd01i+{4h|mSeFQ|k G119~3qNqXe2Z"1! OMxGeE~=,'s4YZԽypLkW2_U- GTrVLP#$3>?us!pN>1O*ݬrZmEjfV:}1q/}Ug0Omz$5ψ 8?RsiHX>dgY c¡O7EF]{!(篾,>%E; Q z^F튚t%ߞe'؅ y/se{S!G""lH HcӃET8:C)gE.~A(SF61'3VS?q7gHSÅ4S;`?ƀ}2Dٳ=byeiw 0R J[_u+[P^|K+"Up \D}& cgnA(\i/4bϸPGb`uCŀ]]NFa쏘 aK}p`V(݇?*5%+ԚtT.E%']I/4()ŨlQBs{ܰYѷüNJ+FwsOinH ȏ2UΖ[p>u;ZH;™DGoZjG6~Q@ɼNPV)A(JUefD!+ǡKMfuKU4X`6Iڻ0e%I٭eF#V,Op%Ju;NyY3@''=laKJϹkSHJkP#xZdO\>bRׁ]f ̇X8n7g,X Bc{;6^g'-F dsgfy\X"А==Dshu !A!uz06*s4Ez:g8f#.eni~ls+BZQWà+U