aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/startup.php
blob: 441eaec6b1b63c3e6ccd6f69e0e7d0ae81d29603 (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
<?php
/**
*
* @package phpBB3
* @copyright (c) 2011 phpBB Group
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/

/**
*/
if (!defined('IN_PHPBB'))
{
	exit;
}

// Report all errors, except notices and deprecation messages
if (!defined('E_DEPRECATED'))
{
	define('E_DEPRECATED', 8192);
}
$level = E_ALL & ~E_NOTICE & ~E_DEPRECATED;
error_reporting($level);

/*
* Remove variables created by register_globals from the global scope
* Thanks to Matt Kavanagh
*/
function deregister_globals()
{
	$not_unset = array(
		'GLOBALS'	=> true,
		'_GET'		=> true,
		'_POST'		=> true,
		'_COOKIE'	=> true,
		'_REQUEST'	=> true,
		'_SERVER'	=> true,
		'_SESSION'	=> true,
		'_ENV'		=> true,
		'_FILES'	=> true,
		'phpEx'		=> true,
		'phpbb_root_path'	=> true
	);

	// Not only will array_merge and array_keys give a warning if
	// a parameter is not an array, array_merge will actually fail.
	// So we check if _SESSION has been initialised.
	if (!isset($_SESSION) || !is_array($_SESSION))
	{
		$_SESSION = array();
	}

	// Merge all into one extremely huge array; unset this later
	$input = array_merge(
		array_keys($_GET),
		array_keys($_POST),
		array_keys($_COOKIE),
		array_keys($_SERVER),
		array_keys($_SESSION),
		array_keys($_ENV),
		array_keys($_FILES)
	);

	foreach ($input as $varname)
	{
		if (isset($not_unset[$varname]))
		{
			// Hacking attempt. No point in continuing unless it's a COOKIE (so a cookie called GLOBALS doesn't lock users out completely)
			if ($varname !== 'GLOBALS' || isset($_GET['GLOBALS']) || isset($_POST['GLOBALS']) || isset($_SERVER['GLOBALS']) || isset($_SESSION['GLOBALS']) || isset($_ENV['GLOBALS']) || isset($_FILES['GLOBALS']))
			{
				exit;
			}
			else
			{
				$cookie = &$_COOKIE;
				while (isset($cookie['GLOBALS']))
				{
					if (!is_array($cookie['GLOBALS']))
					{
						break;
					}

					foreach ($cookie['GLOBALS'] as $registered_var => $value)
					{
						if (!isset($not_unset[$registered_var]))
						{
							unset($GLOBALS[$registered_var]);
						}
					}
					$cookie = &$cookie['GLOBALS'];
				}
			}
		}

		unset($GLOBALS[$varname]);
	}

	unset($input);
}

// Register globals and magic quotes have been dropped in PHP 5.4
if (version_compare(PHP_VERSION, '5.4.0-dev', '>='))
{
	/**
	* @ignore
	*/
	define('STRIP', false);
}
else
{
	@set_magic_quotes_runtime(0);

	// Be paranoid with passed vars
	if (@ini_get('register_globals') == '1' || strtolower(@ini_get('register_globals')) == 'on' || !function_exists('ini_get'))
	{
		deregister_globals();
	}

	define('STRIP', (get_magic_quotes_gpc()) ? true : false);
}

// Prevent date/time functions from throwing E_WARNING on PHP 5.3 by setting a default timezone
if (function_exists('date_default_timezone_set') && function_exists('date_default_timezone_get'))
{
	// For PHP 5.1.0 the date/time functions have been rewritten
	// and setting a timezone is required prior to calling any date/time function.

	// Since PHP 5.2.0 calls to date/time functions without having a timezone set
	// result in E_STRICT errors being thrown.
	// Note: We already exclude E_STRICT errors
	// (to be exact: they are not included in E_ALL in PHP 5.2)

	// In PHP 5.3.0 the error level has been raised to E_WARNING which causes problems
	// because we show E_WARNING errors and do not set a default timezone.
	// This is because we have our own timezone handling and work in UTC only anyway.

	// So what we basically want to do is set our timezone to UTC,
	// but we don't know what other scripts (such as bridges) are involved,
	// so we check whether a timezone is already set by calling date_default_timezone_get().

	// Unfortunately, date_default_timezone_get() itself might throw E_WARNING
	// if no timezone has been set, so we have to keep it quiet with @.

	// date_default_timezone_get() tries to guess the correct timezone first
	// and then falls back to UTC when everything fails.
	// We just set the timezone to whatever date_default_timezone_get() returns.
	date_default_timezone_set(@date_default_timezone_get());
}

// Autoloading of dependencies.
// Three options are supported:
// 1. If dependencies are installed with Composer, Composer will create a
//    vendor/autoload.php. If this file exists it will be
//    automatically used by phpBB. This is the default mode that phpBB
//    will use when shipped.
// 2. To disable composer autoloading, PHPBB_NO_COMPOSER_AUTOLOAD can be specified.
// 	  Additionally specify PHPBB_AUTOLOAD=/path/to/autoload.php in the
//    environment. This is useful for running CLI scripts and tests.
//    /path/to/autoload.php should define and register class loaders
//    for all of phpBB's dependencies.
// 3. You can also set PHPBB_NO_COMPOSER_AUTOLOAD without setting PHPBB_AUTOLOAD.
//    In this case autoloading needs to be defined before running any phpBB
//    script. This might be useful in cases when phpBB is integrated into a
//    larger program.
if (getenv('PHPBB_NO_COMPOSER_AUTOLOAD'))
{
	if (getenv('PHPBB_AUTOLOAD'))
	{
		require(getenv('PHPBB_AUTOLOAD'));
	}
}
else
{
	if (!file_exists($phpbb_root_path . 'vendor/autoload.php'))
	{
		trigger_error('You have not set up composer dependencies. See http://getcomposer.org/.', E_USER_ERROR);
	}
	require($phpbb_root_path . 'vendor/autoload.php');
}

$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
="yMƎgCʿLą05"{BSjL_.-[$ ]V q^YzJj^.Wj]eS+=F:o=~<:wu-an?uq؜iNe|*!!4);u"M`>͋'a0V8)-in},t5Gǁou&Vc1-mo&?clm X68w|•-091gζ "IpK9~#9wɁ3_(if1 '֙OWjlzJ'jb`|]IczYnn+q!}aѬC졷Ea@J˧@P- =8%qac[ qƃ|v:3Qf2SK`k|:EUtם^Tn藊C`Osh FTǖ'!cNi)PJ<*O's*F3ю?PMy$:<_|_WA5!*щ/qt)hɴCS'AlYrZ`H~@rd _"o(Cg.wReO3޿u$$Y}Wք_XstZU]O\ߖ Cqlc3IkV0 -`hɬU"-b7憠GO)rna[*J|DSf^hH?J$d7 xAw;tWP8OȺa2tYy%q2jF&\{Aa]40G1#) C\ O=OU Ã2) U n+ÝOb 4, ^ `>Zn~dt8|'4365zzv&fA'zJtU\W.q:L䣑R"d|cy0fkR~D52ö-*AK=ĵ5kOLWňDlc]>5xKs嶘‡W8]fj4bnUoeS_3npg Zw06xI#ldo4gwcX ~puZT/;#ΧAŌ&@MXdK_lfH<&ZYXh$)f?էSu蔯w꯲,&Ye/7O!VϫVlk/GkY];|!gi#x|`Y t R{I5.CrHxa}վSmzdJcX* ^`z]).0",!!>]ZLdA]{5 k(S] cF{{l]@ˇVv{ae{-8T"5Qg>qtQ7 +{ɺ"q. 3[꣒. N\@I{G`*'Tr"ݢv<2nU3դ#ao,# B^)%orzΉX`8$=K`z*IT|)t_ c[DUEMJ5,^&;BGð]`ݧY@=MUP@#etVy|F_ܮ{0ɸ;ϝ8C8v@ύc-ߣA!&J}1@oz@A?mٯUC5t5$',+#9@;Fblg0\;Dj}F" [y^5@& 8|eb!5[tHk.4GFwL7~px-a3-3B0Y]T[g+'s]>7ƍ×J+ fDȏB2/@Pϔ0/:dr!m̢ŶjSEz.6PBCL! !J#7F;~@14{E|Ԑ ~:u8+2\Xv̄kK6lPt$Ej,tm;rzAm"~H:sjKV3T$_SE)rOŁgz˳ܨbǚhElLj(<8.jAYtb17{[Rd/-+Lh%"6aXzBU`2S&ՈqbZB_kxSBu7*},$NNy26vѧf͐7r7 (~6:ҥ.k.݋rB54zh9`#|x8IF։4oU{&[޾ : x,*k Y  bP`|0lЬ)M eZ0QVfh߳µK ְX%T!m|}\sP^n8vhhWLР{Kn`(xL n < /,͖ӼosAz^ϊ|ө|/z > 10SaDDGMit'K.޳#Ai9˱Xh,E!'tܡ<,Sood\ueV~*s\)9u߀݋3OF7_I`eqnOʍ .dDM -䙛'ڰeޫ,XւuO3;liZPWڞ`;|AkMC8$jT%Ko?1TxZ[ #&Q'18HW܋ ɝ~ߨyY۳z3N@-bj#!*ev'lw1QJot 4QZPۯӝ d?$5#؋W`tg|ΧhqG﬏~_w`?yxY@6 e e`v6X,Q35SԀ5p(_X⒔4D_ ]dZvH+'bNCGT!Po(z58n27mġ280r* 'fuV룋 Ζ9!$"ozTbew§Gxj;bvt;wI IlG\V7-+>*Jڰ>Ù*#'t={(n^_IXloO4!MV-z fȓFOS'b6*_,Z"sEűv-a^G/,uI qKy5j AN,2.糧؅%^,HR@Β&/hgƝȗtjL+ASlnpUiYCkG]˷K|ꄸrq#p#ѢJ2XR{k$1De @~4 CTeV/)X⸗}Vj6 +q\ez I:5yf WűlLx+e=+|8Bat ]*}$z!ת/*bIx5ޠ.G^ƽ'd|lzJ.PGLԐ7w3oe @nyCl2 Zt2 Hs SVEѹedE֭z~lJHk⬟+9ZkefԎξyV AmMu!i>E Д5Y y0Icb#v mx_Yx̪_¦"{e|J"J4P| FZx ,nԠ6cp&MC"\! j&N)&ʍ8YV{k߱`id+^EOA uPcȯmY/9hZ[@vyVgo(qp8q|= JM41mhL塅!ípbM&`NC狑 ?!l&xx߯R%8JCSU>̙K xVZ-Fpf3b-36i0ǀG<ʭ[H"7RQ?΀B$Rb$$t*3/UO',qKn",5}h5\V3&8/5OrU=_9z;͇͉%:4GjY݋;\F ̈́f"pta|@[,OHp%"4~(&3T(!l"= dk4]%U ܐ²Vm;6y#!v-Tm: 8i:m/-po2w|9}AxD8x*,rzHH`e'K- d ߛ7 P4hQ7=zsd =CʚT2 s+I$ĭ]ɪ6p9 wc3[m ݞXsjxj6O~$YVSU:;$F/у&YqX{Fow0J Őg [DXbtF RgY|LHd|ҍ^}j:h=d}8vLC(%/^yEsMWB@]b9݃Fm*]'7*_ݪЗ|IN@϶|"n9[( @6|D81_[R 5bhh^1$>&KQC6-Ά}ݱwn 5OȈmG!ؖꡎϿm}r$["XfMW6PE1_W?Cd˄= JteXU&qe I%s0ZMt*;0Tl{1{esZ]vz?ַr\@3䑗}eg}hˉi4)Pwm/uS ӛ'>= ,8x|~64X߷EWS9@~+J]bLJD92pJ7I'#KB*3~I&Je7nGcmA'KdMRh8 "1%bGز8љVp+*„ )]fd 5;gȜ,S57 Hf(HM\?SpT}Qeڽ҆νYW$QG r+ʹ1gw=GezՕ\H*ɂ1w:3ADyn!֖,FEmx~tFL 7y'u C%f"e*4ٌfvɧtVώSN7!kާ]v-33} :/;&H:E؈.)z,_UGuv t|oy_J9~ӕ #rCsZ8 xܪw(cAV=nJV_-YQ?]r{. 8U nuSX)݉k79J`J9 ~ "rb&>pI<# g% ->)/LWH  r#"~w}s󔜷{<עc4x ;J#U0؍oR}M&J} w>+yxN]<_}eIK'#q$Фa0uhGJ]x?@TOC@Mڻ<8#7 HMb8Ѣ (*C`JތFN #MIqpI[IX pI^βkGpj ߐ4]1+&ǎ4G2dg?/mll~hP;7y.nK`#_QIүL-ou&{XjeDi4̟ dEX%6M]?/tjJOw)V)5Yۯ_[ĭȞ mW՚l|B;ey{zu&)m[tsN@T CчQλNVARU%4-aKkp# PRuʲQ|3Skc1#} \e^?㾭qwz۱Ky>Ii}z~ м#.FN=1l9o]EZ%z 1֙AH3]_KoZs*S+S#V WxL6],,w$K9GJ /y0tv06:خc;8M+-*!7sV*N٬@-,kt[J3W;Uue?ű[Qn)26lB Yѻg|j&_M`K.[2lx +7rNˉK8uJѹ1C=- WAXW͖X=ԈK`~͉ks.QR|jmiZ':] *0&whzYiRh~cRܷ.7agwݮ|1ˆs[ /D^ĈGK3pLzYDEjǎ_5iQ@ty l|S>`T)I4 FsP 5W,~# -YaTޯ8K5k&ӀU;cvZhGpZH_a2<.z72Ѓ+y&/X<|N9 sË <{D⛲㹮8UQ:Py|B{ w!@{䘃`_.|4=+E))utfLF9-XĤB:6)Y.K~G^`sx{9E'We1:tU,G}*ESu*U&w 13͟97 "*CfCOy;{Oot}HWyG,E3(%4Tw[8L^Ź~tv !}a)>jr+SJw:m[i!oqI}@5ˬ.#x>mq&MZHaV3zQY$fiin^xCnթY|W[ w3TSPfBbGmji)QS6-Vd \S~o}Qr*$Dc35_2]+;>"vS5kvrS;t bGxIwYk9t޵TŠtU(΢~ i̇1~aO&B7u Ka41[Ɔ_x194Y8OOkU.  aIIjQD;_jB-^]iVC%=.bhA48>^oqXGo$W 3mIЪ$-mee5]a= L !ǟ6OX5.} }88uCq*߫v-`7 H{$P⼰.'ҢA+ҡ2u)VYe1!FӎɌ4OyXKt3,ɋ|a6iP D`̴\poKNYq~$.v=:dH߃PQ5N 51uQ)MwmVOzU_bd=,gTtlUUy;U-Q&J,ʾvς~[W^l7d[EA(Tg,x3ݴ;k+3 0AڠIkÚެ87`WfQG IKPAc䫱J]Ccr.BqMՄ?Hcw,=\&g!=5\HB:nLԹɗmD+BbW$x;x"XA5‘9S7_^-u9NAޱGҾT惲bÆphq1bm[ji8xL^E.#nʻU#?@Yܪ:*- y&UF o`䳏P<2ӿ!FB$<80!o#nʑP&ϯ35q tYX2.z6 uXsg2lMd4ʼ`f@ų#\SnP\kdAh!vm#>#1%tCl9T䠄&GcOcy,/ yx 4:Λ";BQWќUׂxn}JJqѩ { '`/?﬐hP=fQ2֢l4f$4)9k'Fm#]hi("CVhX 4b*_Kg8=xnbtNs:#HwvĂ ց3[.oOZ/ZSF|1FGOJ^j' Z蛽Xݥۥ ݺD܂*ЋMy`pK.|/kRګBC9\͛Ue:vFc{MG f 4 'UD !Vz7zd#N.CmzBTb"w_~L*[?Sǵ$ %^;vȝF@˹ӛ_t۷>lϹCV9O%2TǏsweJ2W4ēļepƼwnZNQgSs[{/+t` }]^ƈ0sq5:Z[%:bqhĜɩs8SG8:tK2+]<6=c@#U+ -D/HO,c`c]d,[!egؾtNKc8`h 䰦M0:ͬ9shG. FwJ oMXL}nwӨ"Bt,?p!Bl^*u|uVj79}iG'Tx g[a;Y\ShZ YN+s5fA{IFI5TNGJY)Cp';N!% 9O[ V2d#Kl3Ȇjz7(qN"OC¬C[|{/X!Ĉ>ͷE"4;ebpD9sbLA\5۶Kݣqk*Pgpm'IL1^Z]B]wgӳHkkM@-]ac_FEWS@B z$rj3] sZ@<4Cx[_Ns(He8}s8K\LYVQ.UwSىBя% t&9 mv@.)䅃)H`l}*:6Vgl]&6<=hpn ?{p=OO$^Cę$;i ;QV7V'3ND޸YU,Gf`5VANvXtp#MmHohJ R]oqD&({&iElz( ~BbTWa.ؐ9,W\n4jf{\"<&γ H?NH&jB=ESsZO:r/O0BHK ,j 76jjv W-& Ȯz-FrHxO"Xf0Y+ř˜}:G/o,J̄ ٘~蘉Q_h$>}a`]V_OJ>ZWy^w秲9*[>ȸݵ!ŠWkw#K 섭02 ԩd ^7 Qkm{{!!|{|th`C}>'Qyd$BP6I/>o9K&phSՄa;y,(o+ba+Մ?Y25j$JuMs|T7p*e+Ȑ2XM3N-5\^kO:#*z) ҝ b,@4-*a=u"E7:&,}̙F'z6BOS]-6ٲ@u= vHבղ):fn<.sҤyFsN2  ͗R kQ0 R3>2\Wǜ[ `Pp\40_Rƺտ'KҘ)fͭ,Ol"xЉ+hÆT?64˒%dJ54 DcǣakP-Iz kdH99MJww*2֖=ۏ)44z|)|[ Gr',[R>7 up3cWY@A̿s8>:Ч!J/ O7$kn=^(K:CԛN}`LiW9#NjlB QA+ IGWHO"WgUDjۓjxUd>TA=U"}m[ qb¯KҴ9  'n:QN^M4ʊN5 %V@9L"#h߈7p8 :5(oi') ?.C7Fנ7JH:R} 3NxU3(d{A[wwq/t(a^ux`ii$pul%%X Z?ߌθ {Ng(e&nQjjFl?96CJbX,*c&;#݃}E[-T߸WǙ1m&M!x5j ̫?4dk7Zz.Ub=i"8~aµ1NQ]u=GyhcWrCc\+S=l$)HM~!+< 9oxP *i,:AK3rr;Ua`T*+?:27*DƔ0e[9X|k8O 3ٵ3{ QоBQEb =ފj<,3lirD*jk U\(0R7B)}Njb.R."h=wL>UFJC )L˓K* l8@cud5i_JgqLv9d2m權k`6M5M^MiM}* 9򤵁P qFC#c/\^w Ȱzwx9:~Tῧէ.r7=Q! Y Csʡadet3K,M~KId'8%U/$5d[8/\ֻ-v]ƺ$Ru* /Ř0˯ٜ@C[F hy=Hϸf'<<=8SWP 6׾- 4kw)`LQna-jF`+B Ri"f+JE;sYʶREU<[n /Ӹwi23TS?6LW`,k-rB2 _d١',ԯ4vHA7CЄ4y˞ uvZu#` ZzcuHBWE'X K@r<;P΁ V,L"-p=Q\`N`o~ʡ0qRc`Hy\'Xl~K~$$ c(E4tNKCLC;=jƮ<{:'3v]i#$*OЎr<2M $xY8!SV3h|G3Nw3nLqn Qg.DHvem{7Rlۙ^ŽA^VdpT6TLņq"IwW>eSкY8DAl:`F׽g\M}Iehv69Œ {6OD!j$ǰWXB9j70R)@/ЉN[N|8^[+qSNy?2JdڍOX;uXx(`[F+*(my @Tdbߘb:$[mo:YE. ;FK?u,,-c8GˣGl ?n;M`l-<$U ySe3]`1 ?~ ;?K/S!2?j@J[{X>Q`?N(|إz!S+P]գpZ/״ev`2rY ;qPElVD^{X.'u=d{KϙK_`Z)6"^0n+@0[ċޑ`TO_(ez>kj 7@bxLI&ϬY ]u⴩2Ųʶï8ʜXCoo 7P J c~Lm, ,sž*}>$eBߚ1[-O?]X,U A'Mi4RFUBEwW Po# {*4S

62,rШ>WG?l,HDspv{K%u:(,-CH莣wªΚXcpV CdQ\±=¹0=}`"awX|8"0+rی { *W~yKL쳢 x_NF{[xCFNar_6)@F1pA f *M=sɻ TmV7_`ͣX?t+WC]#^gBjBtX$KեW'`-8|@كc'#GmkPFF[QvrX֋?TOŤmj.0RIgThˆpc ?)9cW&:z>dPMDϼ*<'Ƨk(]-r?dӋbR;8>b&iZ;i,o"raXɼƒ>?T>/ZV٭qS֛".XvU!C x9Oy$q+/ݖP IaׂqBa$*`EwytrY!`3@BQ[i|R]: ..ܭVCZt He;8-|CiojY'<} \`u?I/>=!.41vN=ϫoA'dfqz=8cIZ6!Ԭ-;ot9 "A]6߁Q^xk>8bv A&P\o#rsH/.{I"d  z,p-+V2()V`oxPl}'5dv\i~o#(t 1FFOM2ݦ;d#;V^ Z$gg s뀿JS v}X\28/`{_n4Ih*OeL@Acee۔*uS'cČyUw MEH\FF=lڍ#OT+Wo*_0M]u1\YYb ͓bر]ɏA8$@ mLX;yDo-}S~F?wV8KӉU.P14)p6,@QgB' kEj1?5_VC=tpdZ*Ҳ:P~|"쵯. H%^m=$Tc Njd/#*(@?u)XRhb?U9bkCjPA*hEnxY'Uasq426EY?5>Zn"`k<2m|5 ۽ `G]x<ֶHЭ?voU'^Gc/ER.!f*,,Y/vl~# tռTzs 5ՄB|q!t7y˵$ XEFW-,̵(GP! g?h|gR ~ xo(e$sR+p.2Z]h͵ {PL*,JA#IYmWj+ /hAK{a-Ǥ_/$U *4F}{Q a<,F\S6[QUim2ӷۺ/Fyh]Ne*WQ%iFznku\^K<y?ߦYdE/K;W+(:HA n<}uWURɃwAG>)*Ap._ T`X) w_6g,Z3NSvCu˴OGy2c td&(K<} Tgy?y-H>:{`Db /!E:.m%ԟ:CLLIdČu:e*b}N}=bB0v3V;qhMϴc#osu)1٠ q MslPyO1 fYkBrz}N}_݄kgm@&B7V!P)8U;_,Ozeń@.!u~A8bH!,Ƞ*`BK&Y ,9eM0e}%opb*Xv;vE;r7 Y#Em9J Li fNq P1;phAp%My(I$,]vEfaFՂ.U@ DHjЍT͠=JCQ8I-^w8CN ى(1p99V7A)V$JoӯB͎5zx0O3#Y`k6 ~b?vwM"Ԇ2F6 zjM}ejŤbJ)/ΧN"9H" yؽ8K }%=rL_VrL$PhYrF#X&p%ga/ϗ(-PD|RͿt|Y=lÌp=vt&h:2M0EAZ % D6YBSRvʻؾ"cEr =0u1]l3Lʋ$sL2o:їgrwK6-xCE kk矔` *׿Q@ KMXg7^ eƢodZA oj6>mHaifGa& 3nZ@? c[XBh3yE} 8jC箲oe藎+%%ni^UOu&ŹnP@. (\ +rlտO'"^FZB$R6B,%֕lŽ&:ԳJ70pr+ڬxv sĘ~fSk\4.4S`kEb+D$ SW2$RН*7LJQC<2kn2۞W} @ 4.>Pi[&7mn2CF~O@?ĩƃx2?ESMVP3[eȡPפ&{&Xp9#MmglR]k%=Dć-}b'Mu53CJw&Bs-wY4` dB>Іk 2Fv'8`Rɡn< "Rۮ0?1"Y~e'mcd\b>^jfO=#QljmjԉӻC/=XiA~rT^v/PL@L};Xk1v S,B"5ż[ PNVG)SI eJēͧ.e36Dǡ[= _$ hT]:n= l~ sH8 jBM}5Xڂ  ۡvv$ghP{ANN,DW%j1[$vY6RBRݽ;%G\A#zo^cՃ1=g>VȜE Lxn ><ތ{>Ow ٳɿ!fqKzyFcYc)Mo{5RI jyTZ/5il{$6Ob!һ /__x?`,?tY&q#'`I>",>Req%Dwdz|Otm}$杉'X/01#slmwfr @oah bH<>uA8=u4K˓?ՕF=cpQ5 ISN_>¦t, ]e^H ]܇6ӦP3̙. f`.8~8=?Y+X]R2._X<+JT/S Yx!Z 5g] /iچmPsx<; "j|*:>|^R!^kLoJ $|L fpwgh}gىo )x88ܳ} T cEB8AvDžZ׿PIr [Kר|ݢ7$<==Yfb1^a[`>uUF!5[*\u^ݒ> Rߺ-*%ayނ)cWDIpܩN/~E n+tT+ݠȪ. ߌO?5h'ir6%N wζHWe7Jl"\>ϨcEwTcƧ*/kόۻ0LBFǿoшdx]ft@rdov#w#u}'ŝ^4@ yܟQ޾ 3MlbûjK`R59h?-? /\%ǖ  I$P8Xϼ\ &~oӧzaԜ L6&Dz*^ stMpʗP[YEZ C +1+وbvSΦK }Hc,峾/Oxt6}EtCVհq[)*%,&0֕:0P'.Ѽ %9lyY5ʙV{ѓ[AG>D@(}mehW n v>NNy6oc +={rԛ2Ԩv_._a^OТɿ@NJR7q]K.+?y\ͼ c/x 24#$&Ӿ+ 5DfϙH5 _&Dm3.&!f|@Z(%$]sJq*e2,GJ?z 3KjlE3AESkO7ŐI GvP;Nq`/-fZB^=郳?ʺl߯nsR~!6DžYl>O,=:] v循t >Eɭ= c]tǛw!=l @ Rؐ p1r2ءX8w. ~_.& gUf}cY $ FwOO2}f3N f2HyN՝#1.dMq¢TDo}4Q N G0kkvaBylڒM0f9ֵ g]@D8m pӛO@Bc="$&<_*WQ<RG+0)9gGWgGmճ_5SiH;]ă-ߐ>\}qVa 10t?8:@C0#UPf;s?.jhC~e:xq;D^߳iœأʘןOʾ JxJ;*:ɦMܚ}]CgB],&HppXr>ލ: VmXQ5A.쮿$@S+.O\U.evo-K_%qPHr65K# 1}0Q =elu2wWl8vmMZ[~Jru*Ut/6j}8m!>P_#:K~Gj(ppHCdw,QL(ah 6 S,S{, 1%3G4&3KϜCBQ4kCz N^:;nKw -Xm- _>X!`*eU"oZ )Ԏ>9ȯ`X7UpR{0vJYE&dOt؞|WQCڱwҠ6ӏ6?jϘ/E# w%u(@w>s؞/D0/AnoxWi;"a:1#mcL\Fq35I%O΍p'# &3/߫IƬM9睙&"X5I;Y[,/I"~Xârq0fosӺBp~pA/84g.V.MVOPӡ,ܘ3RSrP Hh!EnWS{ѿX aGqC;1<+РNL7:A``ƨCYyI,Gcdd 0[jf W~J?zM9+@ Qu_m sݶdZӳV3aͤ)&\f#Nc{Kwy?yjdj\\p^%/%kMuK֤Vw4UˑuiQ@|A ^mӈ)[͓I|' d_9X[*W@Tұdkù!2>Suo*ܞㄽu*A oGku$ ilUhNIoxЖPZ7T<o mzt3p<}6/ * 'ܭn5+4PV{`N=mp2z"@Cou K~>+{X͵?eKe^P 3(o-M&%~]~iNdIPD|7 -qN@%l3Z9?jynހX\p`>1J{,y]FX9EvV'(2N!/ċ5i(3O)aXGS