phpBB Logo File {FILENAME}      

'; $html_skeleton .= '
Back to Contents

'; $html_skeleton .= '
Language Variables :: Includes :: Conditionals
Remaining Vars :: phpBB File Usage :: References'; $html_skeleton .= '

Language Variables

{LANGUAGE_VARIABLES}'; $html_skeleton .= '

Included Files

{INCLUDES}'; $html_skeleton .= '

Used Conditionals

{CONDITIONALS}'; $html_skeleton .= '

Remaining Vars used

{REMAINING_VARS}'; $html_skeleton .= '

This Template File is used by the following phpBB Files

{USED_BY}'; $html_skeleton .= '

References: {SEE_FILES}'; //$html_skeleton .= "\n\n"; $html_skeleton .= '


'; // Open Language File include('../language/en/lang_main.php'); include('../language/en/lang_admin.php'); $files_to_parse = $php_files = array(); $dhandler = opendir($directory); if (!$dhandler) { die("Unable to open $directory"); } $num = 0; while ($file = readdir($dhandler)) { if (is_file($directory . $file) && preg_match('#\.' . $ext . '$#i', $file)) { $files_to_parse[$num]['filename'] = $directory . $file; $files_to_parse[$num]['single_filename'] = $file; $files_to_parse[$num]['destfile'] = str_replace(".{$ext}", '', $file) . '_' . $num . '.html'; $file_to_destfile[$file] = $files_to_parse[$num]['destfile']; $num++; } } closedir($dhandler); $num = 0; foreach ($phpfiles_directories as $directory) { $dhandler = opendir($directory); if (!$dhandler) { die("Unable to open $directory"); } while ($file = readdir($dhandler)) { if (is_file($directory . $file) && preg_match('#\.php$#i', $file)) { $php_files[$num]['filename'] = $directory . $file; $php_files[$num]['single_filename'] = $file; $num++; } } closedir($dhandler); } $php_files_includes = $lang_references = array(); //$php_files_includes['viewtopic_attach_body.html'][0] = filename echo '
Parsing PHP Files'; // Parse PHP Files and get our filenames foreach ($php_files as $file_num => $data) { echo '.'; flush(); $contents = implode('', file($data['filename'], filesize($data['filename']))); $html_files = array(); preg_match_all('#([a-zA-Z0-9\-_]*?)\.' . $ext . '#s', $contents, $html_files); $html_files = array_unique($html_files[1]); foreach ($html_files as $html_file) { $html_file = trim($html_file); if ($html_file != '') { $php_files_includes[$html_file . '.' . $ext][] = $data['filename']; } } } echo '
Parsing HTML Files'; foreach ($files_to_parse as $file_num => $data) { echo '.'; flush(); $contents = implode('', file($data['filename'], filesize($data['filename']))); // Language Variables -> [0]:tpl [1]:lang $lang_vars = array(); preg_match_all('#{L_([a-z0-9\-_]*?)\}#is', $contents, $lang_vars); $contents = preg_replace('#{L_([a-z0-9\-_]*?)\}#is', '', $contents); $lang_vars[0] = array_unique($lang_vars[0]); $lang_vars[1] = array_unique($lang_vars[1]); // Includes $includes = array(); preg_match_all('##s', $contents, $includes); $contents = preg_replace('##', '', $contents); $includes = $includes[1]; $includes = array_unique($includes); // IF Conditions $switches = array(); preg_match_all('##', $contents, $switches); $contents = preg_replace('##s', '', $contents); $switches[0] = array_unique($switches[1]); // No resorting please $switches[1] = $switches[2]; unset($switches[2]); // Remaining Vars $remaining_vars = array(); preg_match_all('#{([a-z0-9\-_\.]*?)\}#is', $contents, $remaining_vars); $contents = preg_replace('#{([a-z0-9\-_]*?)\}#is', '', $contents); $remaining_vars = array_unique($remaining_vars[1]); sort($remaining_vars, SORT_STRING); // Now build the filename specific site $fp = fopen($store_dir . $data['destfile'], 'w'); $html_data = $html_skeleton; $html_data = str_replace('{FILENAME}', $data['single_filename'], $html_data); // Write up the Language Variables if (count($lang_vars[0])) { $lang_data = ''; } else { $lang_data = 'NONE
' . "\n"; } $html_data = str_replace('{LANGUAGE_VARIABLES}', $lang_data, $html_data); // Write up the Includes echo '.'; flush(); if (count($includes)) { $includes_data = ''; } else { $includes_data = 'NONE
' . "\n"; $see_files = 'NONE'; } $html_data = str_replace('{INCLUDES}', $includes_data, $html_data); $html_data = str_replace('{SEE_FILES}', $see_files, $html_data); // Write up Conditionals echo '.'; flush(); if (count($switches[0])) { $conditionals = ''; } else { $conditionals = 'NONE
' . "\n"; } $html_data = str_replace('{CONDITIONALS}', $conditionals, $html_data); // Write up Remaining Vars echo '.'; flush(); if (count($remaining_vars)) { $remaining = ''; } else { $remaining = 'NONE
' . "\n"; } $html_data = str_replace('{REMAINING_VARS}', $remaining, $html_data); if (isset($php_files_includes[$data['single_filename']]) && count($php_files_includes[$data['single_filename']])) { $usedby = ''; } else { $usedby = 'NONE
' . "\n"; } $html_data = str_replace('{USED_BY}', $usedby, $html_data); fwrite($fp, $html_data); fclose($fp); } echo '
Store Files'; $fp = fopen($store_dir . 'index.html', 'w'); $html_data = ' Contents
phpBB Logo Available Template Files      


This Style Document is 100% auto-generated... no human interaction included. :D

phpBB 2.2 Template


    '; sort($files_to_parse); foreach ($files_to_parse as $file_num => $data) { echo '.'; flush(); $var = $data['single_filename']; $html_data .= '
  1. ' . $var . '

  2. ' . "\n"; } $html_data .= '
  3. Appendix A: Language Variable Index

  4. '; $html_data .= '



'; fwrite($fp, $html_data); fclose($fp); // Not only write down all language files, place them into a specific array, named by the template file // All Language vars assigned to more than one template will be placed into a common file $entry = array(); $common_fp = fopen($store_dir . 'lang_common.php', 'w'); fwrite($common_fp, " Appendix A :: Language Variable Index
phpBB Logo Language Variable Index      


Back to Contents


'; echo '
Write Language Files'; asort($lang_references); ksort($lang_references); $_index = ''; $old_char = ''; foreach ($lang_references as $lang_var => $filenames) { $var = preg_replace('#^L_(.*?)#', '\1', $lang_var); $char = $var{0}; if ($old_char != $char) { $old_char = $char; $_index .= ($_index != '') ? ' :: ' : ''; $_index .= '' . $char . ''; } } $html_data .= $_index . '


'; $old_char = ''; foreach ($lang_references as $lang_var => $filenames) { echo '.'; flush(); $var = preg_replace('#^L_(.*?)#', '\1', $lang_var); $char = $var{0}; if ($old_char != $char) { $old_char = $char; $html_data .= '


Letter ' . $char . '



'; } $html_data .= '' . $lang_var . '
    '; if (sizeof($filenames) != 1) { fwrite($common_fp, (($entry['common']) ? ",\n" : '') . "\t'$var' => '" . $lang[$var] . "'"); $entry['common'] = true; } else if (sizeof($filenames) == 1) { // Merge logical - hardcoded $fname = (preg_match('#^(' . implode('|', $merge) . ')#', $filenames[0], $match)) ? $match[0] . '.php' : str_replace($ext, 'php', $filenames[0]); if (!$lang_fp[$fname]) { $lang_fp[$fname] = fopen($store_dir . 'lang_' . $fname, 'w'); fwrite($lang_fp[$fname], " '" . $lang[$var] . "'"); $entry[$fname] = true; } foreach ($filenames as $f_name) { $var = trim($f_name); $html_data .= '
  • ' . $var . '

  • ' . "\n"; } $html_data .= '


'; } fwrite($common_fp, ")\n);\n?>"); fclose($common_fp); foreach ($lang_fp as $filepointer) { fwrite($filepointer, ")\n);\n?>"); fclose($filepointer); } $html_data .= '


'; fwrite($fp, $html_data); fclose($fp); echo '
Finished!'; flush(); &&LzN bk$ڽ%%W>~ iUrcp=+X\%BRupn4KM(YTbjHt߼45O Ӟ HI V> g4Uh(slrZK|oAn/ACٍG7`Ԧ2[Z|fD$mcJ 2хi'fۼw׺}5 ? Kylfڐs 7Ӈg5]xRاh&tՎqzL;"#v% Pj_N0m2H }s@)^jU1L2V>`n^sX"hSn% B]"xT'E7> H"RzVA*Ko)a%EBM˽lL60vBox{`mZ+Ip0]W&xO4 hIV *kawcǒXFǎg6k5c{ŵCY/R:79$M+bXI1cCUXGqgptJ]^+\4;Vaeg G޶Xs[ڲq!ym( Wk>CJ;Z>.Q̓Ѓbl(Z):²~~ F&rS<K6v @f$rB T8 G֜JRM9P^E3Ԭv آ^u5#-PCoWTE96G<nėnc^憐Vm"#H\M5}"Zl|Em%{p Dp E"Jx?T$qr MIۃ. }4K28mf2tbơbQKR}ÇX#̱Wa+)h-Y$ \pH" `@=ؿͧ4 Wuj k!ɶǸ%ڽ_gX/S2¡xnJC --&ZX)i3l :x#m$5 #oq5v]+2Y 3~CgN2Kl( -91ج6M;M8̉Y>r]C·t)\j}E 8Bdix`^o4OJ5'G{fzƻ!EaGVz&7ו.,-@ sۥ.r(#ncp1gẢJTp|bPH$'5pM Bu^(E1Y[H ui1ٗOW\vJM f ZD|F9Cc34k_|yv s@H/h6dpjFr>bG"HP. բ.(ic'\Ched#p5>F) "\8 F<\}ECpQ*ZpR%p kXH Ǧrë=.I 'ǍPUJFƼʵ] SVWE{ED~ŚJ^[dxsX14g}[{z@ǚ81|yXq.TĠ?+%ЊnN7_ۯh[0pMvFd/DFöHb`fF0ȉjHu%uyM?{/&7QwSM'B g!E'At0;ۥ9kuZ9㏗ #hu?J4}&hύ]D\9t5xš&fA1Wll/cԺFMr!pMN|xN^̐8hj̱χo  Ԧ٨X^8d* rl|}}rKp 4#6-4yY~AD p@ ^-b耰}3;iݩohhL!XqW5+!xbcx;|lʛkHem6йg'{w#$!J N\pt!>pg;eAK)iS=Cq j, |l2юɶ 6rqrwp EH?*ʭw\4ͬ)YĐ* ,tƀNL!p/O>݁OY09{aQ,ǎatkDqW 2EC9ڒًܹ?:ߛgX浓TujyͷTKOOsiĭ|,-UI@A@ԣ1Ts*T}BcFȽqE.aiJDSa\_3_RV*s%hN&j!G{;]׎P?c8~/ ©yπ5)ʝa;;d9 Ds뭎yտ%\C+ޛCPk>6WALsK1V%8mB]'%kT+5ɹh8>.ZFtQ]3fkIby:cɵ҈j,InY*m"鹕-?Iʴ@KU $! iKz([TԳrΤyDm}p Pز"-pZoZ\[vٻF0VT%Pc3N<+H+o>L@2|u~LL\}v@ɼsCP@ӳŋSk)ݘBOYSD;^@f=)փ/€*vWd0_PLX+W6YE uP&|Gaz,|~O^(65]h&x _mO$캒.ղ~Ȓr޵&>,Eunk^ѝ ﱽd“fGDY2tq ܩ].}%dΥ)yK;>-6O);}Bpc|ea:k]Z=TnS4]ct(ݻẀZQ7۔'k^ASJR20K(>Q `:t<1sry˗^bNblUMX{0=<=LGJp(Lw9$!^}QA3%VH%*35ڡU2&6M'9Wf\e6};#O7NpءylPii/G<,bhwD@r|tcg hTfp(hN>ba%!o&%҈Ԕ{^LBA M#>\UG۱¼e4'>1MF|4ݸT8X6K*T͞|St2ҽPtL5qWh7<B׬+U1k4ݵ;.6kڵNAEV6.Vub %X*U_v0=/WǭR K?{?`LM'I . alRjt ӷauEA!EHi%]Љ*;$XFҵ ,^ Hʄ[0%fe 1cdzXуR"<ԨbE8.nC!VsȜ{ dĀpx5QaFےr} =[j Za.Ԗ!M3I?ͅ cѤslVٚ9Gk?lՇ }hs"zkx\;zICUZ.4 b-(asẙ,_s#1^춸ͫuk$-Cԡf_$2,xi~yUVwa Vy/iFDpI2IG0 S9:f>0BP$'qKaw' 4vʭJ6E5qGp8Wfm-Yl㱗nJ'2~]n\7FWr9I'3m82TI˨ͮ BZkV,F+HdI,mqt2793NΑuqsYuR{^J H;5$U% (:~ IV,Cnl}ٽP5z dSdܮIU k4h3ZpnVvOf:i~Oh ;|n PI0K6 'e@[m/vŰ@DtdEQz>7= R`+9DBU-O9T7|(#LѓTs"hCT1H{N36ҟk;鄼͆XpK.nѲptos]`[q06s6dK Nm(n]ZFBF|*XrWHtv, ע %lK䙨.;(eM*G&G~VLrk2$+):lk4z-ƒSiM UbTxɀ>i!+'m]Ԅ 4g6h1#{n$Eg5?Q7XӰM=RI}s/7}3N]NS}<:˺0k2cz'U˃%vs)cZ M:!ݮ%MJS\e|TXtpY삄WXp^$U"4'7.$JTRv&y6^B#rqMPwߔCڮO7/;,:E&eݞ{woWѬ.+%+}Ȅ~'m9Q„Vt05! [Y9Væ*_[+̹ڄ 2ÒzlXN#|r2ߤФC%}qf30C.YOŕ 7,^א_X!/j#uEJ h5m5VԼlq-M 'W'!N6JSJwG(V.j8Ħa$qQR(`!Jj' NfsbD2Oj]m KL}l$Ȩ.2ƫ f>𴛷XW|ɑ=k ث3IQ8.x}ATM7c4' XF>G X -QgV~SRm) jf e(F4mֹzOM*|4(FjڿLzㇸR (DUDV1w^>x%.A(ju9 AiMw3=tvVh?W)c*0(߳ݮZ_q~ Z?KNߛImuxfNAKHrϩ 8KV%hOpzk<ӡ3ֲ!0XuGEFdPjjj!qIjB<݀z$M.&!Ӎ+l8db|j6pLY6lVkդ43>An VCyzq @޼>*]]:惚UQ}Wqpj{.0]ɞDVm).4_ 9:V>]V . >/lQD uj [a(\EnMPEJ=׉G{]ymw@^ jǑ]$6]LxsÚp1nWl(0b씛2WI}}^}'Ju)Z8g㴂#`d4]*YORp񙼗g(+}cMH @t:W8l-?wALda˂4P=ơiQծ[H6+3D}jZm\T8zBhha%kpE^ꝁ6xv͓/h뢿!i8 g/SP2 z.fvJ'޾iͿU@:տM֍!&G2.cna|qcE:Z騙ywmd0>n/:K\{o@A)ϔ$g񅀈l\ tǚ #( ~4,E6qe:j.Uxfm71 DTqO7B1r^5\>]>5UBl=VXƙc./Ӆm3a0Nqkn؎!xLTyO ^~>Ó9d:WS@YE+V|Ȧ * $e{N>  ,Z$+[=iyNPU30HŢ¹CeU_ f`ܲn ]~{v4Ҷ )k}0},u_b(E ]fӻ;j{'fGyNtB˧'F]C*V/.FfI868--|H8x1"Z~or0OǪ A4{vC [HxS$ї|(nyrn7lyVjVo1rIXYu=q6SRpGz{o 6գeƇAHʬ+Ѫ$;/V.x` íj6}D ; 3w7*i Yþ*()R6n.;^ EJܸ*1[!@rR(pϏ/wK[.=eK(Q޹Rl!tU8|ܤcAEǷT<ҤDnbaaKּ| c\]##*zCb`B$..Xb޷#:dlMoWFMO[+I C3x@ϝH ;lG^|`4vjbaHXVAF)^f$B)  :mf2-+1̼'֫;$ H |pˆD+#n+:  eŰ͎PU:Ak,3,OTpiUn"g%=zoGD'iWP(@PhHlj'-ur!]V~~cC)p 3I#*|'V$ NJm;*ڄiwkQumѹmn"IqWFjmJdk?N`X-AzO؇a$5a Vop:\9l fϋ1H@^S )Ѕ#Suh݇S`i\,T7]!ց$[݂p(ol) n0nn}kmA7:B16eNɢEڰ^=R5p#Ks;XQr*k*UR6UBv0Nw-Z%]I $'=rcJly'/Zeo6]dhP+z G^϶Nvi :_WZ? %DT=fx{xeo B|/ rɹ?nʣ8U!_#W'@Q7Gl.o?/<P A'Rץ;E?X5qF Z"t5T` isV&/dy#~sXwGck8kO[hG|zmmz>]H{T=`#6wr = гOѾٚ[ME[:>.SDb(Z(h˰U\Pk<7G'|GwAJ SOӰװ+ڕVrҹ |KN~.]1tt y <tTdHpO[KjglȌ^BJ־A@OU6$tZ8BS-2dTЬ1I-Ht68FRz<%Be1^xr,Ǚ-N`俛1L) \܊т>Zr"?P~ t .0M~ 0W.f"E|_bHm ]FzO%a}s#@ P2}wQ'Х=xi X2LA{ ~+IagdP H,>vmnL"o67NZԖI[(6 }E/o[٭R'-ɥɗmKy^Stkč_XdS|9V$v0-6(*JBaf9zU*@62ܐI+ >}u݈:~fs/2zg.W H#<~>]mG\(囧nĵ헗IՉ֒[pP1C*Fg1_7ұY#U_QI /Y~=Mg IH"cmJ8"%ոal an9Lڍޯ3>/=,?Tkeu"I{$e0%;>Gj1id"K] Tuq|Z%ޝب[ou]bd]jCG?i !aE-Ѩ //hr{7೔R+N WFZѼXRo<)k-Y062z%N]#>?pLSV:=IձB zBGơ ~>GyTo9JT}+!,sHVp}M1M&[b#%Wn<3dj+U§b~qI;ȋwR5V}TLw7jnQQr+omŏԖ $-:i4Eh${$sfӳ~Uc+h1Ɩ؃uF B}ŪGdo$1#0].+Kf셙GȄA ء,-hl/a̾C,k8-ilGйNoRKO wv2> >ay(TsC}L܀%Cv i*eٮ r *Қ6; ĺ A1EWG:䈓AG/l/t!.R=sd&hS=kO[Ft]'쳺jeP6 hµCE}bܗ["sB{ꊤ1,d78+H#*Y`V(/WÞ0YцG i"AXڈ)pC _iTAUxunݝ f/<%B3rju'@CA]9]T [0.-xMyi_ƳsIjy `Wm}57bI Y4gI&> !4Hto^gӕH wI_ഩ;7Fo`1[܉Am-DZ; "ȵ ~>uL AYFl/JB75D R>ӛ1f9߼sk)4c/A.S蹢s_g{ dT=S䱵K9BiN 11zŰ#ڸa:e'[U0pXp;' ?>]:%Hk.Gqb _doRQtR%`Z7eqO#b[('ux 5g|7T"!$ v6G (<R ߲~SH[6dݞIBOY0|[< |: UÒ'=a`Koу Uwd xor oX(L. ރ˲ 4 Kv/5}0dKM@StFojbR: Eao.ӿɧhSy##}(Pwܭe K a_-FJƽiqw\/ d(ryC.Fk5>ocm]˒MV}~cΘVOx^ivn"Z+4t|Zу`Hݬv8)t`+(ŻdC \IBR'F$!=bNV=[E H~ r_$iCgö HsCf x0axOts pWJADJ7 6!Nr7& @"6g8a-ݤ LG[%ša|̟;rFM"ys6𮵈 F+H4@d Y*NwCy2o܌ m5X;7Y;A7tҿ K%o0 ̑)k]@oH*3֒/fAYWT}(4p:wF:riCYe 4*K ҆0ǂ Ecǎrhs+_2g򞩺?{Yi醕pYVi#q%[XAzv&nclo%7m5>ao5[ivcyĆDVUY:9A 8Md&~/&_j -qIg?ag;8KV+gf1-q`*%Zw6Ցۺ[\afx /w{n?kBjøtѸ`[@R4'ǯ92lB9Y 6ӶK* TtXjwj&._#`]gJ/[iXϦ a"G9`m1d{AqZ@֜PkIƼ% .AYYRMK<̃3(Z%t -: )[B#dnLKʝs)/#Pݳ&JOc+ihO܎>Ƚ"KƗjCW'ls7`ӄWZf+4u>@ BU?xȌڶƣ|kLq }&ub"$nP  h ,?ӧ,# )l< -ќN0+Reǀg{unF: `œ3~`veu)SkS aEG{KqDB~8=3y{FE A 5'Xm+(S[hwP0$jyO{ }hba2a6xF6kP1XMIΣiJbs$9hx5Y/V #fb3.ë9ҲzAZ@rEc IP@8ׯlzjVyك%db=7:yz 0 j<\vj5_?SRwZs%*H^‡#&_DqӡzV7Iw]YJ23Z#QDܾt^?rrHTgXDY&g1:"1y`Ƹ PfnM|5}ovSy3pN'2Ng M\z䧕s +-Jq+k1T FI9SSQ08o[,J&Dأ׌NeMRT/rlb&C1!Xw+eKf䵤sXHp E/WgJ8h3),̷ab9{ӽ]~+|MۉA-Y94'379)t*e%sJor[M>cvQ:ҍ6uK5v\l㫾7 -L;m|ȊnuhpA_M_ۃZ]޼fq>2.ԉW%O[=.Nb6m+*eA ΀ :zʜdM"QO=_9o_w;_jt gTOd.[nĈpZR=R`qrA'ŧ6l-;njMZdvsg[Dd3P ]MZ0k4.+$lAy浘lS/yZ"B~|D)[T˾ux3|U++ j Oh&l=wm8BB:ڏ͊juDbn47ԱgȢ@ .fΪ,2S=ϧ9Mh()tFB`]t2S`m$nF̛h)xE~Vw='&%`8sxu0L GCܼ?tSlW lPy%'Ci? KSiGWWm3&ZY" 7J9 (GGfFCUd-ʅ{MP{ԛvZT^\2>cEi$\ӽqbL6X!pW=_DN y f8`BaX ; bp[Jl/5TulԷ9KUӮהҮ/15g8ڰW!cݲTxbrByfc MςHHh)P]@J CH.셥*# CLi7o9d8O&]4(˩Bp;Y#4EEh~@YNe"o[Cb>F Ւi'J4Er]я`\u4,Ny|TT'V[[F>3ݓF]|Bˉ d&bժpf KDaf;$K>#܏ J:[yA7\JrҺYYRoʸ2O@stzKdZ.T~4bKOh=(Si:qZ.Vyڒ"4%=nz%ō(.8!KsҼO>n3@Zc6EQ p$in25 V[SS翃"3 cXd^A0gi5V:Wq !DmsQkOxD8CB IאG.nRznC6ƭ=ZLggR/.tP )sZÖ̞V|{I! @?>pM2ԙn&*TAa\rfڥY E*#\k)x?`)SbߟDr/ Ɉg׎ܧDlKV/4CZŦW 8Hȅ t+taK+-xElX2a&wKDYfWs_ T  FqJP< /B! kgE?ؿ R u!e Z,? x3gqUwp1t]N)OJF;P{^Q2gtunPHF9`$w)F׵Jd"6S] 5fc{{gQ%@Pޒ7,zi] U{@ a1$Yi g\uhIjqAcz6ip{~? 4aE1\A%jڥ IrUt?BWKy"ƒ1|-j&Aƺ&*GBhg8|W%|,!EJb:Mib\N2Uf9=;o a|O)(p y4mcYMp{c) -J'ID}|iٔo6 Ko-'hH,-dgпxInjra Ж}-#_Ka~0ţ^ߵ𸌢qar6K*yOg$bTӜ h,x^=õ^9Ȱ1ƿX-\ufnV*z#:Tc3U-sbIZƏ2S5*ZM.EBL^g8ި`F+ƠI6f]cլJ1،N#'}ZҺ,!MPhdóGweQd7Xj W(]t@.dWu`RZ6/ΠHG N(p[Or σh7Vƕ` *~^'cv2Xv-L6Jtv=hoӤ[ӍBSk[UEj]nFV8,N߸L\6O{(S^́s2J|񙽫+yl.B ykT ݯ%0Y~:Vz%6f,jh4biТz>u8hR >jZ.Ԋy#vҺItη{"q2%%-]#RI?}`I rI Q|w&jms廳&N@(,AY(]'s)l.*5}dnZ3wENqX.֬-4G+W]흡e|]q{s ܲ(eڧ&XG#Ӱ}Gz`r_^9q&WTX&n^Mlȡ eQ ᐘM6ymrz_չ+JPt`0)q1W]7as%ZҦ⿚1Y?0jAu0wx~f%UPR4!`4M /ƀ=Ȣ%`cߘs|qHveP~(HpT;\O`ü()Gƻ"%-ʄ G?rޚ}efoMH1ous]5=T.U^[jY\ R;B(p_:OzgpGW$'GV_4>lj4s:)Bۿ8C* :V1*UaiA!ۮ[p ?ړ]sXG"sO)gLDC#o#J&?~ 3#yaU5JP걩m~[NiKc 0&h 7b6&56XEi7GJO;nkJdb&!LR_\ ,7_௾ Ŝ4C&Xc_EU ^*]2߃y۴Ԝ\6hWal7kK-Al oD1UL3"Ay=zJ~:D􊟋zҙ,]OY4A*7{s•hǽ4_柆{H)+*4jPyXU=Y\o]QD}I?H !%ø-EE;SǓҗ,?Z\@b;;/HnJYrsmjٕrCUM_64խJ&D09|$DH@ؔ-]8 N>8X:&`}Z:hə^P^#BoD<6p (Ej}ʪr& ULZ%5o<\v 7̂xMY1&]*sbE^Le*"Zb6$qJCtГ!Sq\E=Te=1Oψ!'kºf4F";qzJEB74tN&_CSoMhzUIA? W;A۴mV;APa0 G i |iF@S#%bey&BG7c%ʏ>tqǯNύ^bRe $}d4]0xHVU8K?}>WF\8a14Yn<:|E]6;+a^)(gߗ뻬avd!)H.I={h RY0sr V, ܜN/[.__5XRF韵hsuLHkr;ؾp[@eK/q<\Ғ'veKE cANG+:Lfɩ8 #SC`$M9dM CIXR`9 㙈P X?6j"C"ь$6lSt߷W%"tu2F*@"W":E01öo5ˡVl|#*kۥoJ@(Z}.cQ-=dmc> -[aӁ+XHK Ql-u|mƊ WR>qߖ"{ԎD'^$ lfؙ 8luz{eL@Cy &PqchǦ<6!m6.wHd>ѽRr~@;鷢8CwU17H,ZGWyI#1:aB4QI/8 mo30 {VLZ8 " >\Xr7,~djt0gȇ?{w*j6f 8R*DA@QfZ:dߔ0g >MQŽ*LD~kS;؊zXL<{H]H p4Y=h%SP7q0y/ =:E4^eOuk 脧4FD-'L,{(~~ tӤ?2+`[)+FRQQs٥AB>s,!!'KΨٗDg;<滿'k:yp\Zփw&fd 6&%l& ?!2n,<6QiI+!iR8=PGßGj}jM5 Ȧ}3>KK)v NL~KǕzӉE Žh ؁XuM݀S6>]M}ڧKǽj{dbzoɿ9ۛ#ộ,;"n2!;2U`SA@19&{(\:NAc,Ut)#n 6ȗtPZK}s 5KF&1g=Z>iIExWbE+ r2՝FGHK(`ٱR|`u{: ùd-?$O;Ac10[4Hٌ%ڎ- f7LJD)iKսn8:gLu}+ =bNt*MK1tS.4~gg_ۢB_l->tfAEcO- p̽Ě<]['gʫi}Ìеu(4=wX)L')?ɉ|1dP.kz:Y.}KSVXGۑ\{KK JPXVv1_-_;D@\L5vu}S0.RۄY$Y$RE 3a|uؐ,(,+LmE,oF/];>|)pE@eu Ψ Iį DO5;YP||9]AJ&,MjAkH6 уِG'fRwL[(rއ}Lk@FO;Oi^x(m9ZHesx%&5bwZ;]Kdy rrA+NlY \EA/ Rԯ;G s-|> !]P#v$X=};;}JT~iح4T>o:L˦ך,Gܤ. Փ5;\07tfKH69 H |5/Ɨv=JIy@xb'ſCDOVVXVcZ6]4q/f&ZAOzO"[q@0y0PD ̤vee[|_ڼ2} oR"g<ݗ\}Խ1HՈ *CIoȀOZm=Ɉwu~yep:141@7gmLH__ b ,˾|χi?ԂuSs&ƂHqI'&\ct-]@F:qeyҎqY%74A۽;xCf1'NAmnr;^t% 1-s r-V|Ϩ PF`UE9ÿr˲  ųkNmYOre 1-O aB .G5O6׶64IB,qy"_֧ɋߤJ\"EHp#?TCkm ?^TU72!nV5Em&ɽ \J2v x:=^M 1~4iPN.Z;47~o5XS849@f$^:ۦ#n3s"["طDt~k\>.Jۑ$u,߭D^LFEʚ*po@tNmkAj$ZO5Pz+R/,I' {q/DV[۪'j^pK1ߗե5.):^_Ź丈--(af 1NeYyS< xf)f^kjCP~!2EV)^  %^nL},~H&]NU^7wEiO*~:]{Tmjn\TM0L>>=j5z6@uZX:-vw )V*P G_cl)V=*cIخ줨9q@hH]sa.&+ +$Nq6q%P(ի1!iH4ą.iEx9ntct}ԬLX$" ] DiK壇vYą>9iPLCV-St!T4[Dv[y{CBs=DOf~G-vvTQ,_=ƋEUnhex@$ur߿# oȼ rE/z;MI6ؠ}m?|PnQJe9b.Dk@fci##}#JUo[qPJ-:.<[}2M9EX7jZ뵳UB=7XkAJZ&yr)_>eDkN=̽Tu]O9;>3P >0<: (u3/Hɰhhe6%)^VJ9ˡ~"Aε.uލTֳWQ ?!)wڄy<gpN@4N&Nj%x; 2wݖ|0]c 2Q?VT%rTTD,a^QoyC=l`_]jY{"zsљ qG)(pBiM~tB Uu#QM"jHZ]/Q&?SS/D_{4apZ1&L׫q~J<~ZJ)<{u(H[vK̃LQ {GaC'^<,$/tY= p"20,#\q˗+;L{u3o=`2dd#|E3#:ٷ=Ȩt7sĿ8n|ҘGIgW :.sEQSGLV/kevzCtPÂ@ݏ@^*CDS2z5;Ia u?o=0̷2ˌcwYc H~ Y[{GF}Rsr\Pä,(Am s & @sЗ$ɬGe ~/ uN2.fg٨߼j귝8οSB?`cQN Lx90?0+}L.`+ z%^COk99.\7u:RI{?>vfm1^cQijc ;xa1ڣQU"IF$¶ǃ7F?a[4d{ ֣!QcLpl]^_c IKژKocAN ϥ $hըx)0`)9kڲS0n^?39w 7^bLQNȓj:O:e'XؼCNaĬٚw qZ'%"uO\E) "Glk36g62*r\%-kqwq^l5rikUv HhR<"4) Qf  (̕9ˆ&-CO ̀~zGϒ8|:˸ M15ء뢊3{>)lT ,4@(>,r/ a;k-1iǦ NUeXѥN!%_f8^1{ɺ(Ol*_1(9SbCxc.DJnME5BSS,v]!]7 @U_'tV|Z\SFmF1}866z5ǜM1gA~-,~x N"ߕllʽq%9s7)p";B!NZl39 ާD5צ%@n"#;\gXruQ6 a@$y1G?- c~(W/iWYltMOr{KR^>m<=)PY5MZa踢#4U&d՛^0R+@`CRqk/hpm脳%vx/6% uue\bł8a S\:k}O hNeM%,&:6.WcdFM/2nfwYZr=א)>M]8݆:OWB2Ych̵UrE0A"g9b)L57EWG[ Nf]d"f"*~/{Ȃda4"9Rr@$Ӝ{XƄv"l7~Ld{h4B!@!Y u!>/z664&xc/ۉ9'@0ʡ޽%4y)VPSBM4a3UR 11oZ 0h%Lպ f;M˴WB0Ç "Ab2$\gj0<S-l's/z_LahXzlTUH* *@AjaJ6z2]6}.Qz']$)ŠҐ" FQo@ GKᐫ MmI9σhڀK`{(]$@:5oda[U8VI# p>gQJI)=etaVRw\-ð+w>pmɔ] f8m H$H&-R5W韵WQ"&LR|ƸyD2 a"+bQNw⌿3u֓l5DjmE(LÌ?IVj=.`C5./@!J$qFZ~!^xH( .I]~=,ўd?Qet @7M/"Fd &7N .CAȣG+ 0 N`l I/=M";ˁ1;؍`dGڌ?FVa?.MWh`>gYMC>548E"$QOYqgǮ&Q#bK%ѐfe8d^ܡ~M)pR )F76xΧDTH4=¹1BHi-IӮS1S@-_xuzp(4|*;ۑF\@Ht$6!0AĐ #tA/l]^dDM4JPsZs@h@jm_Rw`fHo֑+Z :jՐ10uڻ-Pl#Q1& [$C t=%̒axYr7mWc֮ov yK[%xcM L3oѠب&5+QUdf4CeJLFEǡTȰfFO6>Čp]1 7rΙ?Vs)jXA4Т-m|"C! j_BָUn0~S0XV"\o%í?hjن)`V>r[iH3sb1'M,>"L{(BlX,q=)=!1ۼFz-6(Oʖ2^VK Vo>wNH0V\b96V`1RɵnvGJ2RIvJ˩mr{{6&&?)(((~;-#w52*#qejK[$P? |̈f}NiFXRDD //gg'ҸYɎ'spUK 0R\INL/(X귀Z Ô_f0SޗI#MCXq1pKEO@u#^MoZ H:]ÜU 5; +N~[*x~V:5®hQx DZm=׃ކ#'<,piFNRֆ%\UOjL/&UBFˣt3g!{]8-j?OB6?\ U N_a9rpьb')֡t"P:=KڃqPYlьw7 M1#vrBONC@++tD$άx*qb)C(6tpfLU~(6zD4.m{-!.uCd0F<yIZįYMkhn Xi&"֤H#܂ ?^Lc-ݐڧ ##tüG!ju@T)_&G:frD}#AWEEaSf1hq+&,%?'miˑS7v!R߆@N~2 k|"1j8BQC$O X':)Iy1Ie=]"eLFa\1Ým-k=ԖљLvSh_KHk7eҶ *c ܺ'yr91 b)oS2XIPڂ /9b#A+,6pԡB>4Ѫۗ7o_|W~Mv+ (<оbbGT9)c0*5YPixݢڵFؖzTWûZc")S'fj/1H/4 G@ep9u_pmÇg\f|C.&G Mti _H+q(5P'/XV( ,#}ʀvշi=sBL<vly˓Q2go:{,G,LZˮo@ G)ELT avVY:GY)E*ul`B;2 ֧I %I_CW`6+6ץ}7cTEmTme-BP%=)z5醐ύ+dB)uaLmsu M1Sl^&S_7sQ6T2"mJ]ofEYۡC@> p ͹1@e(S|tz1+% s7o7>afҥT2] BYz#QJg_'v/- qIRFA0aq2:KU6App=Np>Vg_O3,ustUF(TJH# L3gJ_ iR0A \yjt6MǬӑ?wC7t6AFܺo* .ýZbm v|C)PIpOA-0w4Pռ6ԞZN\ٟڣi O5?߽Jn?'dSGIw}?>ZJS_U/+i. j#e/dq94szL6Nhl ^Z덿﹓6)cLRu㮢WۯDJ G?g}rJ-N v@t6œr kzfr1EwfPv,Bcլ>#M2YtBTzңCFDӵ@AB6ƕ{qff+6y_! #N|A飨HAb1ID.<מf_('\i6 mQ\u:u>~tK@ޥP/W՛hu*i>z|j{FRkT* eӲ)pF,"[%,6o(ij!7~V0~E=mCkSǻwl5w|f7K&&=و=j6/h%} Ei_WAv52PX/&-U)MJc `6IW30@g\ ~bDp1@#"F;j\j:s]ww?IEE!<2޷<Ͷ=pAj#Ǥjv-*yw-W>0~~$VIsq&nLg]k5,aU8P:3NdǍ2CAb9D&o-Sc]- v|>93]17c,^'IwF_2 rN[!-8Wˡn?$eb #wSX'E,!d#@u%МJ iV@j+J)kg!䪧_;ԙlyD|i&MXvzEܷްtP9wLOW 6ئ4Fj=n!Uj0KVH,#voe!VF?x2X9 b)Gw"2B.pNҰ?UE]"r7Ș.JzAm63$Y\8$G % n9y:ƚqQ:\7ZkzH`cE# TZo2;"TO2fJV C/,SCth|S}S/q.bJ Q],+@)@ց^dϑtXKC 6JQ+Ez!Ke(]5Z^ziBe$Y2a'^ߕq 91Vi=.Ի]eJ\psDr:D+3c^*FHd0i?ȈG[7/20h/g `hYO/b3t2sw.+TL|ʿtuQ`MW+e]0fp5 D|n<\ndG%YuQGU0ә. Y ^"duc޲P2a8A$hWɽ(,!u%XʁDnRcR4qP'u"/{̿?KȂXi!,t\ IߧM|.|SDYLlbiR{c"lDwN>z\:VE;󽳑&Ļ~rԈ{BՉ?x+Hus#vKgJSZXQEƾ h1.Ӽ!B]4X:i: C`mn}Rc| K]?77{aYo?R0yyIWuXp8!6l%Ԏ5{ؔ;b;MHݨ>s+͜8Ҙ"y+dR8٢I+F.6q߽&~~myS,lmɸInbX͍~B_㞘ON° Bt_XOZ^7$F Foƹm>#lI}Ӗz, e [# }95t*vRDX4Ma45Q@4~J׉b(!<2 #L@0p%F#N!ԏ!9>t2ɣo0em+@E}rPҺ41X! cXd/e00k p vo߄*"CQ4rFeKV g:Na<r` PmbPJwZ'U4, Y>(ߜo5 } Z> mX ;; rDSSA7奅 F^.u8rΖKy ́~j%4>Mx[ A}8a%"cAQG6$h6b@5םm<~X[,aL]fQMgk*82 Uc͍)3W[g]eV̰xR)~l;m0+oȕ)]Nd sϑY! 0( ~-|iljYѠЂ3ðРZBTfIrފ8tҼ@u6 T(RS68kĝAe\3rg.A3ve <42ƄrlcG@uh[ d7r&Iu/+=bŸ~3k 6mGc}8iz2=S>X ^ҚfZx؍<Ť4 Ёh lLA~)q9 {1RH+fJ5-tЕQhp&y6iwEr =KkzA#]R$Өإ5펶@4ZIpJ$s9^8[`Pv *:-w|ܢ?X[FgJ"xe)]l$f}#A\HUSKlN3p.V+>ƃ'{g4ӣ,D;qwd9^TRa7mRwBF!T(hwXo`դ9*xz1dIw(g3SLm~$?ee<5mUs}XUICL^V:ш8zw1 |-IJ"T1&$jE%^lQ܂[!x)9匷YΜU 1=eĠQ^"R>k0:\e6ru؛juf\}S*K~ iW/a&_MLȁ~2?ḿ6m]-.xK< 9~GzmhRnF׉tC:*u3Qo\=O#H ۺ?i9q7x:43T$؋x ( #dT"C1TQ^c'2k ԬvDlԞsqbh1,&9DC'6DS6ze?|I Ԭ w2uׯ࣌>I0]xsn dt%Г@QLnK2 !JTgw$N:j5vW`Ty܋1fǓ|VylCQ=7'.(^q/9VؤEfY:FIrCY5J:wQM[_2י-8?ÏH@~3L5\4|PS͚ J"g3>%`Y;4(u(:x#R^a69U@\fca|{P!*Ҹ+fqLcHdsܵmM0[jAˑwF?ǩc^)Ҽ[Ĉ@ oVH(>}u'X@Iܡ'PFpqR:jH\X0t}-Y@欼;U.٤V(G %>FakfB|2LJO= CSo(~&A h.ը^װ} Kr[Juϧzҧ=StQ*(P齚p!Z҅#׵?Sk@z"dqj牓wdRpfyY5|vf>ҳр=edʓkc6IB| ծP^;6TnIM{=sNC2^b!AޤSClJ363PSBn$<+Ԁ!q}ĕDdtDY,"xlXVW4ˌb !@:YC(F\tUu.=OIw&RQ $Z!}:WJDC<1{;+ϲQ\-&^rfDoNxac{1 k.y+j[Xkw?uk bZ׷:G~3(b o%(6Y5Kb hۗ\"_ c2&KK$oh c*ɳ= #ij|Nj9+.i("+HB,Ɍ3 ݙ0R֞Rx aR E˄xHyKuy%>d!وR.B 97cZ ="*|9.-$j[m@F9́:OJ4VFo4?s򚝞'4vfl-E} ,LO 9HBfj$0+[zTK4æ76jXo7#˽߰N