From 405a21a3d701730855692ee17c7fb12276f5d645 Mon Sep 17 00:00:00 2001 From: jxmot Date: Thu, 1 Apr 2021 10:52:43 -0500 Subject: [PATCH 1/9] initial commit, HTML report of counters --- mdreport-th.txt | 1 + mdreport.css | 35 ++++++++++++ mdreport.php | 139 ++++++++++++++++++++++++++++++++++++++++++++++++ report.html | 83 +++++++++++++++++++++++++++++ 4 files changed, 258 insertions(+) create mode 100644 mdreport-th.txt create mode 100644 mdreport.css create mode 100644 mdreport.php create mode 100644 report.html diff --git a/mdreport-th.txt b/mdreport-th.txt new file mode 100644 index 0000000..ac948d5 --- /dev/null +++ b/mdreport-th.txt @@ -0,0 +1 @@ +Rank,Hit Count,Repository,Last Counted \ No newline at end of file diff --git a/mdreport.css b/mdreport.css new file mode 100644 index 0000000..3b80c4d --- /dev/null +++ b/mdreport.css @@ -0,0 +1,35 @@ +div.table-container { + width:80%; + margin:auto; +} + +tr th { + text-align:center; +} + +tr td { + text-align:center; +} + +table caption { + caption-side:top; + text-align:center; + color:black; + font-weight:bold; +} + +.sort-arrow-up:after { + font-weight:bold; + content: "\25B2"!important; +} + +.sort-arrow-dn:after { + font-weight:bold; + content: "\25BC"!important; +} + +.orderhover:hover { + cursor:pointer!important; + background-color: rgba(189, 183, 137, 1); + border-radius: 15px 50px; +} diff --git a/mdreport.php b/mdreport.php new file mode 100644 index 0000000..f233f2b --- /dev/null +++ b/mdreport.php @@ -0,0 +1,139 @@ +tz; +} + +// check for debug/test mode +if(!defined('_DEBUG') || _DEBUG === false) { + + $mdcountdata = (isset($queries['mdcdata']) ? strtolower($queries['mdcdata']) : 'http://xampp/tests/uscratch/mdhc/mdcountdata.php'); + + // MUST be done like this for PHP files that are 'linked' + $queries = array(); + parse_str($_SERVER['QUERY_STRING'], $queries); + // return all counters, ordered by count + $csort = (isset($queries['csort']) ? strtolower($queries['csort']) : null); + // return all counters, ordered by time of last count + $tsort = (isset($queries['tsort']) ? strtolower($queries['tsort']) : null); + // return all counters, ordered by ID + $isort = (isset($queries['isort']) ? strtolower($queries['isort']) : null); + // for sorts, limit number of counters returned + $limit = (isset($queries['limit']) ? $queries['limit'] : null); +} else { + if(isset($_SERVER['QUERY_STRING'])) { + $q = $_SERVER['QUERY_STRING']; + echo "

$q

\n"; + } + + $mdcountdata = 'http://xampp/tests/uscratch/mdhc/mdcountdata.php'; + + // set as needed for testing + $csort = 'd'; + $tsort = null; + $isort = null; + $limit = 2; +} + +$thfile = './mdreport-th.txt'; +$arrup = 'sort-arrow-up'; +$arrdn = 'sort-arrow-dn'; +$repohome = 'https://github.com/jxmot/'; +$linkmsg = 'Open in New Tab or Window'; + +if(file_exists($thfile)) { + $fileid = fopen($thfile,'r'); + $thdata = fread($fileid,128); + fclose($fileid); + $thitems = explode(',', $thdata); + + $sortidx = ($csort !== null ? 1 : ($isort !== null ? 2 : ($tsort !== null ? 3 : -1))); + $sortdir = ($csort !== null ? $csort : ($isort !== null ? $isort : ($tsort !== null ? $tsort : 'a'))); + + $sorttitle = array( + ($sortidx === -1 ? '

BAD Sort Choice!

' : "$thitems[$sortidx]"), + ($sortdir === 'a' ? 'Ascending' : ($sortdir === 'd' ? 'Descending' : '

BAD Sort Direction!

')) + ); + + $dircss = ($sortdir === 'a' ? $arrup : ($sortdir === 'd' ? $arrdn : '')) +?> + +
+ + +'.$thitems[$ix].''."\n"; + } else { + echo ' '."\n"; + } + } +?> + + +array( + 'method'=>'GET', + 'header'=>"Accept-language: en\r\n" + ."user-agent: custom\r\n" + ."Content-Type: application/json; charset=utf-8\r\n" + ."Content-Encoding: text\r\n" + ) + ); + + $context = stream_context_create($opts); + $url = $mdcountdata . ($qry !== null ? $qry : ''); + $data = file_get_contents($url, false, $context); + $counters = json_decode($data); + + $repqty = count($counters); + $tablecaption = "Top $repqty repositories. Sorted by $sorttitle[0] in $sorttitle[1] order"; + + for($ix = 0; $ix < $repqty; $ix++) { + echo " \n"; + echo ' '."\n"; + echo " \n"; + echo ' \n"; + $when = ''.$counters[$ix]->data->time; + $dt = new DateTime("@$when", new DateTimeZone(tzone())); + $date = $dt->format('Y/m/d') . '
' . $dt->format('H:i:s'); + unset($dt); + echo " \n"; + echo " \n"; + } +?> + + + +
'.$thitems[$ix].' 
'.($ix+1).'".$counters[$ix]->data->count."'.$counters[$ix]->id."".$date."
+
+ +Header File was not found - $thfile\n"; +} +?> \ No newline at end of file diff --git a/report.html b/report.html new file mode 100644 index 0000000..2719ab6 --- /dev/null +++ b/report.html @@ -0,0 +1,83 @@ + + + + + + + + Snappy Title Goes Here + + + + + + + + + + + + + +
+
+ + + + From 767d8a3f755250177d963f19c7a7ba6871a792dd Mon Sep 17 00:00:00 2001 From: jxmot Date: Thu, 1 Apr 2021 12:30:33 -0500 Subject: [PATCH 2/9] initial commit, stddefines.php - a useful collection of define() --- stddefines.php | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 stddefines.php diff --git a/stddefines.php b/stddefines.php new file mode 100644 index 0000000..6c57f56 --- /dev/null +++ b/stddefines.php @@ -0,0 +1,40 @@ +\n"; + + echo 'SRVNAME : '.SRVNAME."
\n"; + echo 'SRVPROTO : '.SRVPROTO."
\n"; + echo 'REMADDR : '.REMADDR."
\n"; + echo 'QRYSTR : '.QRYSTR."
\n"; + echo 'HTTPREF : '.HTTPREF."
\n"; + echo 'HTTPHOST : '.HTTPHOST."
\n"; + echo 'DOCROOT : '.DOCROOT."
\n"; + echo 'PATHTRANS: '.PATHTRANS."
\n"; + echo 'PHPSELF : '.PHPSELF."
\n"; + + echo "
\n"; + echo "HTTPTYPE : ".HTTPTYPE."
\n"; + echo "THISSRVR : ".THISSRVR."
\n"; + echo "TRUESELF : ".TRUESELF."
\n"; + + echo "

\n"; + echo "\n"; +} +?> \ No newline at end of file From b20a54baa0e3c0cb92dee468207488196d89dced Mon Sep 17 00:00:00 2001 From: jxmot Date: Thu, 1 Apr 2021 12:32:07 -0500 Subject: [PATCH 3/9] using stddefines.php --- mdreport.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mdreport.php b/mdreport.php index f233f2b..a373a35 100644 --- a/mdreport.php +++ b/mdreport.php @@ -2,6 +2,11 @@ // if false run normally, if true then fake the query define('_DEBUG', false); +// renders and echoes the defines inside of a

+define('_DEBUGDEF', true); +require_once './stddefines.php'; + +// get the configured time zone function tzone() { $tmp = json_decode(file_get_contents('./tzone.json')); return $tmp->tz; @@ -10,7 +15,7 @@ function tzone() { // check for debug/test mode if(!defined('_DEBUG') || _DEBUG === false) { - $mdcountdata = (isset($queries['mdcdata']) ? strtolower($queries['mdcdata']) : 'http://xampp/tests/uscratch/mdhc/mdcountdata.php'); + $mdcountdata = (isset($queries['mdcdata']) ? strtolower($queries['mdcdata']) : THISSRVR.'/mdcountdata.php'); // MUST be done like this for PHP files that are 'linked' $queries = array(); @@ -29,7 +34,7 @@ function tzone() { echo "

$q

\n"; } - $mdcountdata = 'http://xampp/tests/uscratch/mdhc/mdcountdata.php'; + $mdcountdata = THISSRVR.'/mdcountdata.php'; // set as needed for testing $csort = 'd'; From 5b5525a070a2e212f06d7a043c98cf1846fee4c7 Mon Sep 17 00:00:00 2001 From: jxmot Date: Thu, 1 Apr 2021 12:32:27 -0500 Subject: [PATCH 4/9] minor changes --- report.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/report.html b/report.html index 2719ab6..3a44fcf 100644 --- a/report.html +++ b/report.html @@ -12,7 +12,7 @@ - + @@ -49,7 +49,7 @@ var sorts = ['?csort=','?isort=','?tsort=']; var sdirs = ['a','d']; - var url = 'http://xampp//tests/uscratch/mdhc/mdreport.php'; + var url = './mdreport.php'; var limit = '&limit=10'; var datasrc = url+sorts[0]+sdirs[0]+limit; From 8a32f6c182f7b2988800d60d7ff432eda32bc5ee Mon Sep 17 00:00:00 2001 From: jxmot Date: Thu, 1 Apr 2021 12:53:02 -0500 Subject: [PATCH 5/9] minor updates to --- report.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/report.html b/report.html index 3a44fcf..a374464 100644 --- a/report.html +++ b/report.html @@ -3,9 +3,9 @@ - - - Snappy Title Goes Here + + + My Repositories' Hit Counters From b74f873961247182ab37ed4de886d580e517b714 Mon Sep 17 00:00:00 2001 From: jxmot Date: Thu, 1 Apr 2021 12:53:27 -0500 Subject: [PATCH 6/9] turned off _DEBUGDEF --- mdreport.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mdreport.php b/mdreport.php index a373a35..c039b37 100644 --- a/mdreport.php +++ b/mdreport.php @@ -3,7 +3,7 @@ define('_DEBUG', false); // renders and echoes the defines inside of a

-define('_DEBUGDEF', true); +define('_DEBUGDEF', false); require_once './stddefines.php'; // get the configured time zone From 31a7de595ae49e13e828f15ee5318a053f8ea20d Mon Sep 17 00:00:00 2001 From: jxmot Date: Thu, 1 Apr 2021 12:53:48 -0500 Subject: [PATCH 7/9] comments & minor changes --- stddefines.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/stddefines.php b/stddefines.php index 6c57f56..7e89ec1 100644 --- a/stddefines.php +++ b/stddefines.php @@ -11,10 +11,12 @@ define('PATHTRANS',((isset($_SERVER['PATH_TRANSLATED']) === true) ? $_SERVER['PATH_TRANSLATED'] : 'none')); define('PHPSELF', ((isset($_SERVER['PHP_SELF']) === true) ? $_SERVER['PHP_SELF'] : 'none')); +// used for assembling URLs to resources as needed define('HTTPTYPE', ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') ? 'https://' : 'http://')); define('THISSRVR', HTTPTYPE . SRVNAME . pathinfo(PHPSELF)['dirname']); define('TRUESELF', THISSRVR . '/' . pathinfo(PHPSELF)['basename']); +// if debug is enabled then show stuff.... if(defined('_DEBUGDEF') && _DEBUGDEF === true) { echo "\n"; echo "

\n"; @@ -30,9 +32,9 @@ echo 'PHPSELF : '.PHPSELF."
\n"; echo "
\n"; - echo "HTTPTYPE : ".HTTPTYPE."
\n"; - echo "THISSRVR : ".THISSRVR."
\n"; - echo "TRUESELF : ".TRUESELF."
\n"; + echo 'HTTPTYPE : '.HTTPTYPE."
\n"; + echo 'THISSRVR : '.THISSRVR."
\n"; + echo 'TRUESELF : '.TRUESELF."
\n"; echo "

\n"; echo "\n"; From 6a2f5aa870259d036d9d26d4faf229d3eb4841cb Mon Sep 17 00:00:00 2001 From: jxmot Date: Thu, 1 Apr 2021 13:00:10 -0500 Subject: [PATCH 8/9] very minor change --- stddefines.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stddefines.php b/stddefines.php index 7e89ec1..4ab6071 100644 --- a/stddefines.php +++ b/stddefines.php @@ -32,9 +32,9 @@ echo 'PHPSELF : '.PHPSELF."
\n"; echo "
\n"; - echo 'HTTPTYPE : '.HTTPTYPE."
\n"; - echo 'THISSRVR : '.THISSRVR."
\n"; - echo 'TRUESELF : '.TRUESELF."
\n"; + echo 'HTTPTYPE : '.HTTPTYPE."
\n"; + echo 'THISSRVR : '.THISSRVR."
\n"; + echo 'TRUESELF : '.TRUESELF."
\n"; echo "

\n"; echo "\n"; From 8db5e7d1e5ed679f187459b9e8f8ff96fd008eeb Mon Sep 17 00:00:00 2001 From: jxmot Date: Thu, 1 Apr 2021 13:28:52 -0500 Subject: [PATCH 9/9] README update --- README.md | 26 +++++++++++++++++++++----- mdimg/report_sshot.png | Bin 0 -> 39852 bytes 2 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 mdimg/report_sshot.png diff --git a/README.md b/README.md index b726fd6..7b4adac 100644 --- a/README.md +++ b/README.md @@ -250,12 +250,28 @@ GET http[s]://your-server/path-to-file/mdcountdata.php?id=BLAH ] ``` -## Potential Enhancements +## Counter Reports -* Check the IP address of the viewer, if found in a configurable *known IP list* the count is not incremented. - * **NOTE**: When a markdown file with this hit counter is viewed *through* GitHub the IP address will always be within a specific range owned by GitHub. - * One of my other utilites, [getfqdnip](https://github.com/jxmot/getfqdnip) could be part of the solution. - +The following files are used in report generation and viewing: + +* `mdreport.php` - Retrieves the counter data and renders a Bootstrap 4.x table. + * `mdreport.css` - Additional required CSS for the table + * `mdreport-th.txt` - Column heading text + * `stddefines.php` - A collection of `define()` that make a number of PHP variables available to the application. It contains components used for creating URLs to resources. +* `report.html` - The minimum required HTML/CSS and JavaScript/jQuery to render and display the table. + * **Other Dependencies** : The "tool tips" used on the column headings are created with [tippy.js](). + +**Report Screen Shot :** + + + +The "Hit Count", "Repository" and "Last Counted" headings can be clicked to select sorting criteria and direction (*ascending vs descending*). When a column heading is clicked the report caption will change to reflect the choice. + +**NOTES :** +* The links in the "Repository" column and built from the IDs found in `counters.json`. The ID text I used there is the *name of the repository* that the counter is intended for. The corresponding counter data files are named `repo-name`**`_counter.json`**. +* When the report is viewed the data shown is *current*. +* If the "Last Counted" column date and time seem to be incorrect then the time zone may need to be changed. Edit the `timezone.json` file to match your time zone. + ## Other Uses You could count just about anything. All you need is to do a GET of `mdcount.php` with a proper query and you got it! diff --git a/mdimg/report_sshot.png b/mdimg/report_sshot.png new file mode 100644 index 0000000000000000000000000000000000000000..7946670395dd674d375dcbdba81925d0f56c8fa9 GIT binary patch literal 39852 zcma%jbx>Pvw=Y&GPJu#kD8=2~wYXE<-QC?vu~MM87k76k?(P=c-62FS@AsWMbLPx9 z_ntp8nZ4%8lbxNlcGgc;qE(b+&`}6cU|?X-zsgFg!N9=5!@$7)cn|j$A-!CTdwYU) zQpg|fvHPC1)02iJ4SYv)p3J?!RY_z0XyteYW^1d;_I#?hVG(ZZdalbMZ~8?1zU3Nny!`tvY8_An^aCP_{MfevZSvVV` zXSFQj@33Y+*wRch(1*A$yPg0YOnQ#L7ONaR^d?U?PrKx`uDZ_t%%8Y-rEWfDuIhax zk|jru{*$@IkQjOU{P|cSds#S zf8ys@ROD}AvnX2F5K;0^0+PsY%X?Q$Qno=JcHIB0d@qeyf#AtAu>u44&kBM{>@3PI ziGN;OSt}uMy!O2m!wL47RUqIBjw*^GcxZtx4505-CG3dJcb)c}nezFLs-OT<_ zqR5QOI~U-2JxEw4!wxuO)cETC{76t8J$Kg%2J0v06pJf}1bDV2P#C0RZBhv}@L^zWSt=sP(@*!qE#AxdBFGPL!27zb z4vwHFAjq?~6#Jey5c1^22w(;+X|bK|x+jTT*_feq{m{PaW#~!cn%2qF=5uu8g1y=T6&%)WO^}vh){H5mrCcuTW@*|sabq^Bx1kI8VSEJ>4zO;u|d<11F)6vK3JzCF?hq9b-Mc9uPM0Y45;UwVxa#3|E7 zTsUl+*40*3;4doBRTY$==9ULOl{zk9^QUW;Z&U)rv=qS~!zE_` zn#WF+g!y3=PY_?78x3=Q4lVO#cw@?C@on;EgysTw%*fKDzdPr6(0CUaGgK|Rd+jht zE?53t3jdAnCLkaX(b-#FEmr1DdpJ}utSF3LWA~A+DcNvyD=g`1ui>{CB~D&g$19;f z;Ki5f)3#^fGl@Q11flb>BykR@QK{0*D%)TDgiVxyvz?Nl`zbaSrigxTbhaAMnt8WR zyfmdlWyRV4_~I{ED3~P!0VZ(2>H}U-i`qa(VN_yh(-~lgTb<=yN)1bH#j;nD;92 z)i)hvYsaDApvD=FLNUh5R#;hz+;@Kd3A@}nqHsuhRFKhBd2krXlJml*&hrY+TsDxKg*R!K9Wd`*lDM-Jjy{bI@)ju5 znIPqk?1oGgOY+dhWOVHR(xdad~(O#DpQ?Z=SQNX$>CSz()h5-z{6Z(|UBV zIi;md0Pp8T(m{(%Jr953l8l@lQ$qNc1GetBcC4qnpFKraMIC|QU$ysnt_1li4M3V2251LW18vX>yBpzDv2?PwY=T|iQW#s{k<(0N(OVdwMiRnEHa zw8xcl;P-hBA0S`JIZ$#v4*G=l2=-hWo_)YhUQZRyjbnd3>Uo*WvdVoa$L@RvZhX88 zjN27?X?d5g*!8poUD|&dr&r|=Q-SnO2X*y>gqyt)fojm(LNZ~IqlSQ2w#?M&*S6^B zarlVNk;}Sa$a&gg_D<*m>D`JM2Rm>zEK=?qVs2W$tJUi*@aL2X&~jN=;<7>3&H1Eq zP}|P-yqz=+S#0@UNLUU&UNq{g+pE^t@_23=RfL5{cmxs`1Mjw+1s2I=v~#ar~hOcD&Y`JI-` zg0j_DXsYC&K*!5HtY6xpmhGmk!0QecwpBicKRUFhvI3317>_~^6GbD3)x<3ckVm8q zT&|bJVh#d!p95bFkY(WWpdK_T)RIwXNL}15e(TpN<-3EUnjy{`1~7}@+h>JsBHUCt z6~svr>1jEy!q4II0Yxz=251m^_y<2kO%v5m4(wwRoerNjv5z{Qkp=bR8YOKxa5NEV ziMP_p84qoE8L__H`&xNH4%>PpUrGHA=6Rr|DsYqVP<0MyFy`}MqqYzVuxL@N2b7yT z>F+Ux8T68+sJs5n6RVq27ExDEFB%&}^hp&ipug)t8DgEGE?1~A<8jd61GZcWJv2er z3N3;1REtrcbV30MWSKz>xk3}cN~#9?PmrV@?|>Y=o}Az4ziWICtdxZx=C`0HnA3ug zl?0w|rDSTMG>1kQsUx_jwp(OEH|K#-$8)jYPlCKX(=`oQv_i?89_f=u+b@j3o0x}= z$NP_$FUQeFJ?4ucp(uie{-HGnr&0om-%6`Tu+8J zRf?-JtB+~pUV$%G#E-GY2f5Dz1ap!aM^x&FTd{!}Aa@LqtFf}GX zXEle6EfR}>SuNe2suOBzx83$(4};@MasE&c(r*Ob8ePj@!r>?ZZ|R|Sypzjy%N2s$&-r86Ue(cfOClSl z?QKxmv4Q8If{>+4(#3CH3I#7w3E=1c39({ZMP!4+NncaoIu%JzYSPkC~dn zD!5y|8~bG^ew|3`t~sv{(;|StlzC#VrzjC0i)y!$%4y%;d1WRc1`-?UQ@w&5$c?%l zBjuo)N%2DgP2fXIEurHltb=2|`t6Ta-;gCYZcnC#UN2o6 zIzu}H7yv+Uy8!qba*nUtSscX&+aL&P7>6{bS|}1GDHhc;4{HHJeQWj|DfG_nB)fE} z<|~iiYu(9};Pyxwcdz1yYS=rBZim~2viFayxCQD`D;I&l)M;Y&1R~>(zK5&=1!#v? z!)^bv@I#>#K3Ha$L$8wt2=DTvd@#pSEs zA$||*OP3EnN+M=TknraIyH~+Lx6Ay9){Msqfy_O5B>zuT+b47;OHE{g5bc&M(oGex z9t-5~;f1G8^&@B3ZR*yPfv@~bNXqu#F6rcCB`Qu@F_}a#OVF6cXM&u}z~)ZsqrXR` z2WGeD8%)Rt@J1->~^KNQS?P9=Eu!Sw{041WI5j@?u@IJr;%pDW_F7YS>2FZv`AoH{iR+l=WuJ z^gzbUS2s^@s7rP(O>vU6;m(E;wHxO`9LPk#Q7i#7TrOnZ`6$r1a3DArbn&7?^SY=) zaTkV^qcqS=}1bJl~`*@DC_K4q7>?dS#h2Sgbu4jc{#L9}xV zNLB6~{4Q8(0{ug4erFpQ->zt}pj+QD3A4W3fn0O+=hJUCoPxUM*#y=vJ(7+N@tspx zLEG6SL2dUNU9*rrz&@q2@J*J5J4d^zN&E{YY3^ax>>zD#JBsD;stvv^If-M7q*b6-X*~j6Z_T6L(P?*n)`xB?No0sa>?20gu%jOkY1-ggshW9wjmK_{ z44}VBH)lfi+^Y}m%qaiPpezX4i|al(H#uf2z4qThO1N@UDz7ZBE-SktQ?p)xM^EA6 z;wo~i5P8Wp>cUo8;?bQVpn8sx*TP@J`=}#)x6nJNSJr`Qdse6pC7F52N$t_^ zl~;$iiTIr#_2?4od{b9f-Tgqy@ab|Lc%vM2S2C}|C512i`oa>}&{kV<+n`PMdMBTH zcMIBrjwUDsws(n@C)Ica@GEm!uZujg#|~Sip@_5yI)3 zq6lP%L9d!aiq>&cISBO3G2MoDE#-qJ5^%0u?1iIZnDYCnoDRLDEWf^U;&sJMxvQhO zizVn}S|QM5rmMJkfT!A&96B^VE!c3S^=WKvE|M9YDq#h*T2nH~c%pundDZinIV}8C zA6Oe zC*$@0fc+aUe^*q0&%l>LGC{wk4p+(d!IyH7Jq{6l|Gv8N_T8zQHf1m*@z6G>bBX=lEcI1bH4cG)W~60igbeY&o}u3lxE;QFK5##!3sAP$ zSSv}F6#)+}5!Fe^CB6#GN5%y$Rdl*b?uqyGk`_}-AXAhwz2zpds%qW z+BxrDJp?WvN6YzKE@G!$y(+0? z`{py8MsQRQ)7pKih`%N>1Oz;*$mxYgy*h8;>NGAtRsvq*i*Tp6wdaUD`j*+Y`i!3E zb~f@Y%zXYS;vBe(6jb}eDZj~dc(X>x^7bwaa{l-iO#{bUC_lU)6IFc823 zjcO|>;m%4}IBwLu!4L^R;fW1=S$|0^BGJ`>roXV{Wd%5a0h%M_Rjk@0NRJcQHzhp6 zm$<41IxW!WKhcVH2+^T}*&&jlfN8B^jVQ0x87n^mV#*A96`_s^sG!Bt$x{Qbn3Z%DZh?EO07hmM zi^p?Lmym~fviaAG zyMRW?l0)Ph73snI?e%*7u+h-&yPaqhBfFxFOnlIvE1XplcS5l2$IN0Gr9WDQtkTGa z3HApZu!R!&ocu$SwZ)gLxS^c*;-5i(&T^OX(;|&z<|$8h(h|NX z<$Ggx1t=$gbvI>sli1Ficbie__`Y?UfO$woNu_OYHr;P>Lzt;b`|%NF zfv`z@rY&g4uE+NztbM0WekkwEM6EwD9frDMc#Nq#|CurJ9?i?HvUaCHc8@HcjG(Uv zQ8g5bRk(++#ehh~`u1IPV|X;*#Yfy(g5G}0BJog3x#h!ycsl1+Yl0fx2Y;~OPX#RP zE2mx$rI9Ay2+SXZLZo7obgDkhA(k z^f@rkM>s}ArVTtLlj~>RlHiGjO-=q^{4RyuKg{kBhAP|}smtp5Z)&(s;(tR8rz6Py zCBnOX9{3l(Zc994)`o z<6*)g$B;6nK{?K;#^0pzc~M2QNxBodGt?R>Ch@#1ezri_BVG+2YyS@Y%>VEWFV3r6 zCUr0iIFqc!eS0@M34F5P(j>U7KaR18fH$Z6eT7z}Dfj1gHbM&OV=YH#hA?TCxzS(3kv8K8Q_BmOraQG*oCIq53_WOr%_C`wH0IFvByNC8>w%Z zS(`V?c}a&65nqnnV~r?lxgKr>D0Mgw5B&)YX)Mh?q5qgVexc-J4LCfvqZouD!iVR1 zJY_3&v!7jrbE8)+;}%J8Fq~O=eSmx*VUsEDdC;+EN_~J*y6-NrUbPxVL_QGBply12 zfj~l!hk=g2D=oc19M%Yv`G6-rsHhUIi62jQow0#X0&Q;)NhN|?>ZQlYKAN||=Hqhe zR^#N}T%#d9-X|4y2D38_wGh$rSsRsF6-KdXNE-I>BCP`XtM-q{_gi@gjjpX_WfFfD z$`R>PgMfenhxkp2TUGfg?Px~NsldQT8SYVZLDHHIS|Kyhh&~T`f;-f3*N@CrjY?El z-;)W2%AaMaOzR}S&ibZ{(yH1nq9FgE(JZiTtflgTbT~N(lTM|SOEVD{;pto$fl@!9 ze&0l8ajL`6CffQ{|5hq-4*MP-uY8UskMOh4RrCA{_r)p3Boe>Hk0C0aP??5&tJacr z87k1q+4;ugC!=Cw!lA@8{9(qWl#L$WSxkx{)sFHe0uotIV& z{dO)HgN9lC>%iw|wJ^x8Ui4gnyJ_P0wrJ_$LOIbw5IzC>EFxyh5QcN-^jWO zZWE^|XU;BJJVd2zXFeWo8CUf;>l7&r*n)>uduJ3dM;=*w)mCQyNA~-$Iq96Y0utB z2s+Q@DX6%fk8h;w(|7qdBSB?ikj5!y0dBtNoX*nzDW$HA!rIX1*sj5n(39fn)=$s% z757}ptS=7%Z&iZ)g17O!iicbOfG*i1J%qt9@T0}}1Rv4oalYH$p}5@1G_UQoM`aPw z+n3cTy=)ZUR_4R~DXPc~J@;)}n_S)1#0I+qB!!V-K+1-Ds(OQA5KTwX%l5hxLBXWR zA^U=!NuAZfJ$~KOQRo)MW#2@%SeE1 z)zY2B(?}JrE6-uE?+M-K`NpurF}j=|a1*zDjqbaXVqoGT>@+dZQQUQZ7?**`erZG8!NjC^u<-=dEF+2#XLHN@ zCdDk3(Xxx*ZH)-kU!GTSRH>$Wg7{%<{c+Tz=tGOJSq7mK(|Xbp<2y}g_ML!Hy6|2~ z%a)$dRnl@v4tAD6P&|5?Bx{$%yiwrYWXqP{OB0Vsz1*xyDPsPmot>?<{dW((hq){t z*p&WQ>`oKBt&OBTKDVI>@TE=H;y2_e;Fn6^a~v0v_#pH*Gh8JChmr5zX3N&=b@r2R zmeA{Dk8mY|oYKotZfA#erUbrIrJ~9~o%`DT3*_PRQo@XEm2y?UMHf|@L+EAkMhaPH z=f2$O3=eIue8aRh`jdAxc(>-NntA8@yEvV@!|t}1Z!5v(m5RanjdV+>IaWEm$T=5ZpA$>(dw>+aua;*w~Jm+ZQ5MiZDc-Xvqi=?qVQ^=UcawOPw|q6 z*ScSJ70&MQG8JPigX+5K!qoBEsr+GhW!_g)a znQ5}Ic9A&h?p$0=XZt$WY90bvweHj0y$|F8TD*3{bB_^65Bq%$kHy>Rgj9L7^-?DA zaMEV}NMHHP0t~}XaCINa=O*HDP#7i7?`#g1AqzO!1S>kgy)wEtQ$xAt533nZaVlQN zL;}4Y;~S!lE-uvWMOJt*8G5769PbHChOxrLke6~AL^>QMD+gujb)T^vN6UH8;6_^? zeuJ}o{~*Xa{wbvY(!+Juz{j!FMpdJ84>`)rikzinan!qAeKop##B#G^J~w*pyH5px zO|7osF)9#J7s5KgIwunkS{>%W25nHi5v#E=O@C617k%8M763no@n9 ztGJk13sNKz{qr=l_Z-}$s&FPUy?7d#!1M3(aq#oSJy&U4%Mfz^m#o$K;%R{UQhmMA zJdT^^+Wq2cm|2`*O0C&6KF6V>JAqZwqRsM?Fck3Xp4G7tYD-0k>4M9S=^8^Nus(O-~Bwar4Bd09hyBZ@@#wn;NI!kQw$3# zMc94(hzc-j9c(U>;q(=bYjhnZa_SU3+6(UV#3<=G4g6+Hv;26!rgIgTsI|PMpVAHL zN=;3-LQCEBaT&_u01z;x5EunM-}2CfM5^E1_&GW75-)Hu`ZeZ;ESU@B1lcTgv~aA) z)*X(r&It_6KYW~oZcn}-UHHA8HU|JtHv%p{qN6{cD+&qL#h#G(LggFEt0A~Gd(%DF zkrJNkRZKAekiVOYgtD8La#HN1kCvd|H@q- zmUyvOsJU;ryXQ zpwE4^@gz4W3EN#VCx<&g(_Z38)M7!P!P2Q`*T^8@hYY;cH?>2r#|VNeohUp{uHTNj z_W)db9ED34IHB+Su1lR}< z5dS4gE-%$;Esw#+It#|Syo3H}?UB#EYwvp3g*+;}5(`)M`#d zt5*Ht$S_&gouV9!ZT{J)vT9@0F!Hy?{x}{+A;dVB;9v{;ESNl@@!PHwC$iR@LG5x3&-!~p0>j3Gn3rcNUeZdifH`iFpcd%fYRrgj9Z5Q?G55dK~UUYleH;)Am z=?(>|RC$fAJ#J^k9D4};S*K@bsYLt-0Kk#TBE=h!iB*R?W=Y6;8j5Yv);}iQ(%_`7 z#b%YDixn``$Zg;5;+wae?C^F>6+_m4YVcducRu+QnxS6r36a=Cc+b?cIDayCEa2*Q zxp2C;fmOkAOfWzpk2(B>r%=#I!6Sf(3-*YSRj3|v)rh=r;KLxy9gCx}@4W>y=gvI8 zkfW02uTm~Fv+BI*1v;SODfGI8-r-L*z$U%V_%&{ULKVmW?@(dRUZ!7Ga&0%Lmabo@ zy4T|iVh`3R9}wDWG^9wO75@RM4g?5)+Znw~Ak|OZ$W7 zb4%NJsTbtRMwOqK&As8(IJx1gA!@B#BT0o6=BC$6+xzRR?DIR6%a#Q^lD{F1DrL>(vWq3YbON-Qcp( zY>}9UqU#Lg6e;s9OQmV99bi)UE`nsCNy9Bi?p8udUF7k~U+Lqecg1H?FM~fj0WKD*IM2nR8L){9*M<~ngdft%PNL`%DIH!}mAiH+VGqMk zo2PT99~Eypyw)(w%km!uN$Cr9XR{@Y+LIHGk#@+$CBzZaH1nX&%Se~aa8+SrhJVLp zX?L=aaIalPHea3Fv4`36e)l$!j~v8BfEZ%w#f(|QA54T+4pGugiFZj5v+L^`j=wk` zV@xzfC8gNE?;&fJ36XrgYWs!!Ln%vh&;rnT^zDjoj=fULRZiQX#UU}Qn8_u#tU|W% zsL>ORLmoo|ux^E;TlU5=7i<@0K6OGbXHf=MKmdBfdDW{|-No9y5DAJVwP4s1p{Q}- z%281Tqw6Y2dsALo_@Uro6*h3R>a(NjadFrOI9!U&hp`J>bSdK@t13H`LCf<@tNB7O>@l^B>b3rKnu zg5Wb{Wi4~S8TPD9@cnZ%h~l5g^H86|oGFmgQk1^^K2$aMHwd9e$02r2Py2z5AXAm0<_v@}o|Rp0Zp$XyPG z5ZXX(>`IokALa32F)_9xmEJXK^zV4{lEGDgb|mRX zJg{(4xua|8KmBeE(VOq@lHmMf)xY5v9Gj#Bp9-c(`P$HlVk>W=&JB3H3*os6k;Bw^ z>TS-^gfl_!Btu3lq$&+oHiKRLG;HkuI|cS9Z*x1{ejI%WuGUJ34@zYh5<^&?N#Bz< zBu3V+zB;R0uylr|U1zw3En761d1Q<~JB$n`)|PkWG0%x2Dgb7oFDhA-;eESrr&Q@# z#ru})NgjW|dODf$2mLo@*MKRWy6L-GHRGFZ6_{R;sU4wJQQJ~ykGE&2BS**HP7WlR)e=e2jDQIgLLhjGhOM<3oYS zwp;;K*vA^!!#H~S4QC$<$3V5%Bjs@1Th)@v!`dn2Tz}aM+7pTw=`3TMQr{f7=Pf(# zA94$#vEMjvCw3*|a3&Wm&l~%zna%zWDPdKkj!JAz3c-Wx8auB~)Wf6E%)4Q&$s zrQPX7LK9|>EeVZ@uD!)TE33l}XHRj@fIE{N*$s2ReZR;nNe_GXUNpf|>SN{i@an|b z-#Og1W3c_UbNO{xn@BgKSR3Q#@U@STIX8Rk3YptVNPy(KUUt&!f+5OhZ;5aGD+^*~ zu=>+TX9^o91CJQ!f34nJwH9BUoj3mW7`|r_=o>*ErVAmQ;uHU<9&y0aSE-^UTTGZ- zPVw?6#etcVRkg1n1?bKWlkv6b8d^V*%ao-$SjsdKCNNlfnt^}QWA3q^+@^}evqEbd zwu9vxcOtch+O`;&ANX8=$I2@6Tdv-N12RCTzc}#L3bro$iuqqic~{ixxu# zGM~kVk~upLM?WbZj9ND7aVRg$)FL{L+-3kY<4Yx{lL13r#3V_Ascp8GhOcxUH%$5#akKjBunF+*m=zh+u6r@n2Mj3C#jFM+PfKT zYFk=bdS3QrUnaIJJ!_iaE3#y}wXyWSQ%~OyeA$SQM?Bh2;#2csm)2mfl?~0Ft>wUc zx^N~m#$St%{DJ|9N!~UjdAy8^;6DTt|Lh$_Aa-R$mZYsnagMnm)Hg=u?nS{kkLv}r zC!PjL@Fm%!_&*3$MN-p#B5+c{?7#8$&vW8E9e7~kjsgt)&JvX|Hq>6UL7w21=lPt5H938?mwH{|3h~e9*t3@ zz8tj$GF>gVke|kV;z;tH(N$6(%crXNUAc*;)~7VV1t*kz*5n`450j%KsqOu`O%tQd ztkZ0JbaLj+?}aBf#J~q0{6WR=+bGUq;mqSHpeB!ZgbCt0igd>E_{ox(o$w#IB|KWm z$z&y;$VLrDRejC^)hYe=u9noMI~wWpsnr&Yu1-(KYL4PK<7*vu>F%^WimmVcopE;S z-u5GEkv@9WQAbXf8Xsq~`Q%@CGSq2}{?zdy_xb@AwT^ z4t7Ti60uj-0oMDjEZHIpFug*b67lkv8OCCqO+wSUdoAQ6DU<%I1Xe?2+zJeW{ zN`r3ht<=e5#MQc~9B=9>-d5|0-M2BrIqi=GBw+?W!5PYr&-*R)^Ku*r0_Sv>Y!kxh zpvXTTl_q}7ai(lv{oaf?DqkGYtFN30x#_wwGZy5dqIzzj4J~WDH)Pzyj9U;+_AK- z&~bgx{N}`AB=8Fohc???!Oz;6henA@4a11-%zq^~HEdsV)+_SY(INxN>}O#0tvl{7 z!_^X*MIXMF`gSw>Rm2NtO|e4kiy1n3lzP?1S7a%{p^X?I;i+%>BK<;G8}e7==ut3b zmzb*((;8RxM-$2abvYq~*1f^GV1X~>@w~g=GtZUi$uf@|3&hs`U$ZCwqb!T-v1cf2 zA<bXs|RY$uWBzbK3!5ta=o)oW6Q}?7YO7?RvhhQTF_Dz;-1&LJQp} zqam`V2%?Q5#V`i%6_S(Qe3lmPX6D8jajXY*9VZNB+bX?kJ@!VQ|IyatLT8?cyB76-FH0Z0o~lGPox3?&)4}` z7@oc8eIg-B7%h}0KA$RYLc;?=vDzv9zgbtX5aq=~YD_=V{bhh}j`$nNYi-W%mxnYJ zzRR2HDtbe*%swl-GcLN#F9_H~{&&BT_L8rfgSFsj%x<_{$prd` zCrs%PfAyI-d{(%z(4f^c`LkGuQ<9Lq;x)i5mR}@BIr`>~^MAgd-L!Ko@j9{o>Ha&H zF9>6BwF{!)(t~i6Z^}wX0lfE(p?}A5!wFyXfj7sk;-g)=e8IE>UnKU1(?UeY@PrpAU<=j=yer@)wz;ea(u&7HL{4(B(_fW=<=R%S(wE z8eV8|_gpHn_r7>wQG{PK<49Fj;Y6`FbgvJYxAY7sop?B^{C3EhSG3rF@ygtG=aJ#M zg=5J^a{Tp^)(Gb)s@-bI8}L+`(d zXd1&L?vrZy=P7s906_urMOzJ95_KTbxIa@iJ7;6_^CQ<;=`N+7lg1nCW#X0S@hwt! zrs*lxtb{namV0neu-)_L>er(Iev;Lh|XL_c$>nCP`RdRG-C|gBR) zMtcM&iuCs%VH<%zZH!AXgx@1dVK$HV^Us_*3z5+Ep6J_)+6ZmD4@0Ay(H&t4f5T86 zE%{ng&4@p1xl?;f0Ic6Nys-ccA;HqeSfPsKUob>{@j$)s83;48=t!X8nxQvWxAgu@ zfT-NHIO|9wZ{mP?>*o6ak84LX+MfjZumo6b?}breKeFF*a&q;5)=oP^KM|TJqdUgm z#d-IoKLY7|FfWL-g(4=Ac%k^_CSpMt>;6*=wu-NT#6Y4Djl==&mw&J&I!AsxIm4NI ze13|g9q`Ap!?&b)4%2KhEjV2bmw?o#+MLUOL(7E>{yTWa&e|6-cNQxXO>9#|_k9$DbFeuUMr0VwsvVQ$Vc#q-7MrKmKp0<$ z{j!Rikp5KUhG1>^pkcTft2w5G54_tD?y;%~)k^BwV_TD1Pis_~QfCmh2*=bQQ(a2Ik zLgjd3?DtmuJzZ7HPYNh#^m1^*!}z>jWjBV>=D*q*YxTYF`X}}=A)J2AAzEHlNc*cL zAU#r7U4DqD=5E!hTi?Z0AJcXx~0w4NwwJ;n` zG^cC7og%DG)Wl3o(#Z)tTUh#h?N|c?c;cAI>O?8866#ZmVX$84c$7?(UWQsH)91{@ z1U319jfu$p_GZQ&E~U|5GUvCvRCyo6tlr2=t9s3$vJGR8s1xF1*S_pIy|zBsOBhcf ziV~3)rBk)j`|OA(`-XOx&&k}Qy%0ktQrh2`ivm8cg#1z8-x#Lkg5M;$6KUK50~fX0 zte&2`1t+fD9Tz(Xd%K6mr`XhUr(z4X0Vm}}nF-@eQ5^VPNcYL*9nYtuXYq!@E!7?P zPoGZX5fo%NDp8Os1Z$Nd7&Shehfm%ZXCqndXUX>l+-#7p5QbCg zEB}2oV2&0a~cWa5k>^*zEZBG0##lY+{7i^#Dk z%!iuv(>6s+KI|4RuMZhx19>CzpTaH)Q{Iml#X8PR$jvhF_}OKs+=SKK*x~}|`_{D> zQKvPXB-EUt01Ats#Z;u}R=<}#E7-P5ybz@c7kBjjw?sU}F&KEvIsNG4H95)HDb!iHkwrOZfAvAU{}DqK_)~yqU8iFBB)&w`5g#dqudJ0(l zMcrp0O;j{C4#(dqmW+lRl&bnr5^)$!#tsZh=>4(XxD+Mu8v8aZ98RZX!WQmcx4wmQ z@!(t?yh)8kP5Hm}-Z+ih-YYH4nY8KTCUaZbmI zH$U%SNAwWE5vC=2HIJPe@eSW%JvdK}{AZjy?b({4-yY-2FzDJ)h$wh=Ibx*?I@|WU zj)0dFbM9ARfoXwYjXj6k!7g(60+sNRHe*;}fsitB(-9ko7aOgsqXByhYV>z^0jpC= z3*k*iblQM*rO7Qp`^{g}HXwORl5 z6g#B$Wh6iN)<5Be`9kr=FXoj>zuFp@sd|`6a&X^3`BuI5)7{Z7aXauetkeTwBpIaZHAq=(pRZ zBeA06J|=gO{=EWMBXY*C0DbJ$(e92Ii75n4_Dpw|;3Tg)6HWPoH?sB(Q-@pXUtu}I zvc9iSW@+D`&3Cs|)#gcwGZZ)kw1y;#nM!LY|X;h_?zVcjd*7?ahOOIQ}g#Oo7b@?`@vnkTnw)+kg z{XzSS9I-L7M4@ODv~h`&(tQM&84H7mTx{7%9|vL z%&E)d@)q4N_wohzlZh*Tk$saB|J%P4{11fq-`uOuUJ_x_Q4p;6Ns(pc2%J4toV2Xh z)j`JI3g`k4&jZpczhbH%9i1h?^=L!hB6Jbq z{TSj$ciptYa1iFlhJk!+?#UsGu&sxnR5Zg^FYBuaAMaK}s<8z`7mdK3iV6WST*X)5 zVgX@FwCKzwR3?J4oqb_8y)Qie4`Xi`7U$Zn3E~cgyM_?l9fE7H;DuXocZc8vhv4q+ z?(Xhxg}VipBvZ-W{hjW<&di+O<q&?;^v1*7k=`8-(V`3k8k;X$lwqGa zi%KvR%XreU>dm@;t`XTOWZ#52>HHk%4xQ8-&4k`qT6-lzC7lAEXh5`()|hTo{c0HOm1i+UdJeb#y!IXmFWQz%c*IS` zSp=tk;fT3nkUIYRyIuBhe4;|7K30HxFH*qpXrdmJb_M7hIwjy9vXY!HpAhHO-yd_{ zrucP$PiCdgrGIci-PSE>eCrGYNnle=MP+$4aCf6w_b6#8oYck!_>epf?6@Dwl^IMi zSq^Ul@Jfzw){U@-p6_YH!IA20d3X4vG+qWQMM_*vJ2SJIBL|crwBsrE#y1+<>Rjot z_b}ddTH|OGNg>TAHX5(~Xx`${DI``4p&h|igVI``U9Vo8Pg{Cr*U$7?z3T0Eiv6rZ z6Aao#eI*^#NEK5{>`d127&A=HRHwpxJD2q&J#WplPKYlN5?6uNI0{fhWQkA}0di|l z*s)IDNHD%7@=p}p8|LPXIHb93;`iX!HEtI+PWY7j!|l*awEECOp7 zcZgtx8Ty*K=5M2^OSMM<|z6ax$iU{w7=N&~S!`gP&D_XAKy%?1NhD6h*6 z^*BI>S)>)Z6cz}4KXwcRzX!6y=%Q~TQn(E#_$~R{5k3vbD^cM~6|5ih={cyRbr1S< z?7y#^=UK_J!Yf1Z!pIwvmR&bSEwme#p|RadyKJt)FNWDXQ0gLBR8~0HO7C?%w4g98z8L{zFZpXShA5as1t?Lws# z@CmWmy*J?5ZqnoIB8HLgARdG}m!SUfQYhAqjZ|+a@v%h0ejjZCc}IjAIa ztX1q1J;As?j2NF0-IJtcJGcQ-@!O6n3XEhg1K!g+2zO8O3be)v5NJD(9&)x@j`zboW}2}i z&_y`bmSMdH+VFa|AXRY9^o$Gkq);Z!fWcI5A@LNBn92z@5UR6mdiKsdMkC#O{XDhX+(3IyxYq$Uz}pLA0c*GJDMjWx6LS(MR(!G zp#p*)KBJ})Qi;N|1V`4HMN2fcn%Z39_Ky{Mv>n!l<4dEeP+t@S!o$N$OJL?~0RVvZ zJT!AR@8is_+mU(ay@M7gRR$&8nFUZGASg5qh%N}6~fvHWcfiy zHVDMG!5^ep+QUUWfh-bz=YqfG7GN}VXl(3f!@Gab^NK+(^;{8fyQRn!bm)2*$vacn zBU3|3SdScz}i1XcozH8DV7JRaREsrmK)ldz4OVQ29AMk=Z<7W3n5j>z7i>v zQdzX8j97uMuT``{IfLtI0U+6Epo-X**26#=!7(qP}!OTmh4yp6Kv+_z8Ynk6>_2d0zH+ezwpd*%2!&N{t>TGqdW(| zYb-H8k8OBIxCCxW*%fS=$ux9eMpN3z2S zOfiJ+uJun}v<@nTmjA@BqHw_r+@@yV_qO;}ZpTVGQh2Y$9D3%`kCf@jbG@bzx`K4@ z^s?y=#&1e^wp5Qh(cB9Kf(Ka!=F^Ltk3Xg+xL(h1r;`};JDi_8c&j@FehZUIRUFf4 zTx0|?2I*b+O!Aqbk4H$330Qfl6c{1FfPX8H3KO2%^_pv%>f5~c2MO#*on;7gYdr(< z2E9Q`a3fj#GF_?b332fIh%>v6ol1jBxmmk|8wYI-mF zT2wRTRp3{4b_H|<9cLs8>xW@oxxMFMnVgUsXC7U|EG7F~$Sa!zP`6lT4JC>@M~QpQ zA|9M7`A+|i7dga7g&I!S?t%qn_%o~&3Yd`Etz3*E%XDGpOFsJ-$^6*XYLt$$Al>3T z#arohp!?>KcF`gZyr+gqzVAqqflNz3B(qE6 zxFF?^HXozyjM7Lr)UXa*=el7E=ky8Bv9m_kP{B|Qr*fnJZ3dofTFN$a89LFlPl)X< z_O*ynHmO>x&iA!b8I8>z8kQ;hYb$Xm3saH&dc0|^Gwhlkh7x@y12kxxECEjE9Y~(r zy&u&v4&$Il4zHt=9W?>l7Hj3G_XD^4JdSr-jluCfI$;RqghMDe$fg8TK-O^?E*8t5 zid-U7ve@G?)czs;L@>`^1-d#P9d86w9~G#?Lt@VaurqH25u&o0BD_qI(BSwfqb(uM zEW^U*iX_vSW<&dS_DKfen#ET7$ZqfipG7_PSq7Y@lqkiW7KanDpY~58%+4H@w|a23#@Zs z^4!I{Kqsudpo;Mv(s0{@WO; z`#&aIfY|rQd?Q+aVbX`!tTit15Ou;d`nr3a#{*<@@{=*{iFS4!YnJoiNYKATFkSI0P0mx4)P8C?UP^HS#w&>j?Z|oy2vOTNTOjC<21WXOsR-w9 zq^Vm($M~utspL77zt=ppU4y{VG???3&O=1Y+%?40i#b}GD-T|-oI?Gy-`m9Xsq;Kz z4uQ6MuAf?>d|BXHU`L&cPmK1M%4b-i#W`kb7hy&TpD=bAmHa`^k>(Xl=V8KLt)ee; zBn89?|8cR&S(}e-pIA}>w9T~2of|q=Sw`5KStB0m*BV@g5ATnV+6pmkQzNAEB&(Tz z)U0=y3>QU}%UxlQaU?V}-vt#q`CTYrJ6(w+Ll!m(Fdr+p;+a3WO%ZRmxC|F@Mszyz zOLep1E)Cc=d?MmLim(08YhD>rm7I~a*jxLkT3Re*m6|h_5H}w#Zp#y(Mm8rO4w}N&9HG7I_(Yb7 zwj+y+z`l+ue#fNhflaZwv>x_D#JwTxNQA$W0?e5#dk=6j1bil&B;U3*CPZ{?f8XM*Hm9k&zo(m1CxGF=+%~6 zdGHCp=(P+K^lf{jGQvOLZ}xv|UEKM>yFs!0jWW9B)5UvbUaN%Sv)<&+owt z57W2RgT@o}nRGF?3xuDm_tb6H8Vqmd66t~4r^>A5W5`Ih0nk%r) znEnbB6|D{CgS&;YF>t^$8btsX*-E3s&D;T5szkWzm$M~VZO3MKwG%ixE?b=#O#Q~8 zTp}t3mG4ChRP@UXU}Zy8is^-ME#-D5SfW9wnY}vn`8VHBoAQ~{QAhZ~O^IY%ccjJy z)0)$_OO+^5T|0+k+GWLb59=&BkgZTK?gI26 z?%pATSS6MPu9S+91V-UW*3b5SqUOq%=Pi$YxVQu9#TC8v|d&0s572Pz+X57fW@yfo619Ft=D zm@_PiZ~x2MwOyJqd0cg*oT+K8S*Rwu5v74?cAL9d>K#6Qf`!BGB%&$TuR$b-M>Y0x zxLh>Ek%DTo&Kk|^#?;SZU$(DWK=Z;(z zXd^-5NSIPI95NP{U|UIO6h*O`E2eMGATq#7=L~HS69svC?tFj;OT(?b^fa)GA~C#& zk_g3Rv;qa;RJ>8noHkI?_Nm|@4CI#}3=Qn;DMsnK_DkK06?=(bQBAoW#Ejk-`L>>k z+0lnmx$L>3Uu~F_%E6*TVttZQl`CAXTyg;Q4<$!8OHovoy`AQA=$e=1;d^@J)mq%h z%J1N)8;2MD3?v|g$o6E*Q!xEMtJQx47%+u02d_Odoy%mzx$>@Zx7-jOfT zq4nY`p#wFsEEFefIEBV36bT!POAs6Du`>$|L@JD+TS$Q*aeW?2)e*=ytH4_W1JUbe zPZ!#P+&g?ujiBB{qzWqBEQ55osX_ZCyo_`a+5l8EPCY7`- z+%^|FO5ZO38T%!IDV*IiY)6m>5WkN)fac`Ie#*%J!lCR4KA71G% zzcwZPob0S8P)k)OIYMaHcuhg2=-QsyvPHT4s1~ICbT}_pF!crz0iuIYt8IQ=q;Ja7 zgUko0d_I-9I&Na6r?_l!^tN)&lxDnS74Rqxs2-FL?@XV5O~w~DIc4Qc6z0`w-iuG= z&!}HV4%AP5zJy&i?tQPBkx=Ba=rC2TUajYOU|Tm`dhAIdKZ?c3#He3;7$oIbG8xj= z>mZOD^i^Eq-A6M(y4}fPZN)h#}}+FF*?SvLRGi*6kI{HVrTy)bcf>VSW2AHsBq3Nk9%t&Z;r7DlJp@gzq`eVx;b z{LFoswbMVjE7DI)Od6J$(~4UWzN&(a-7|?nHDUtR^9I1$vb4ce&*sK|;LWH<9*N6) zz!0;kX#b+cy_Vx*slP1Si8*N?_5$ftJXRIA<|0uGdTQ^BDkplzR zwH;PP1u;Uu-66kr6qdMX;5f0h#UbXkx|G6CWR|x{0H~sssQJl0S-jhWiAPGCE5(+9 zb*%ivuJ5z`F~_(-N8XtONz=nn-O1`pP;jY=rx0DVk)ghYgNf{y#d6C4-&sU(=Y|FgS-YhsK4e1sj5?M7j%<{Xg+?~ zcyAqwR8KU3PN1Q&uUF&Tr5zq*atxT7@}N6{RKM{Gx|x`U1)*3f813A z(O6XD2&wiM`y-Db{IX<%fd`E05At`&Xr^_1hCwCpMCv;Cmgcrr7K73BO6BmUu9eMW zHa6v-uQ{B?=M~q);fr(LWW<7!1Q!?#9IY}i5%`dG`sQ5ZSSm5Lc-x2RI|~arUzcjF zpdH)t1@jy7S_>OlK`&F~6l$JYWCX{m>;sY4ifQg%#a^&#U&6|bp9>|T7;QY_a6@(3 z)l?pbFk&{K1#%%Y3U&$7Gx5Msbk2P2W}y zT1S+Um@y+->CZNx^fNSiP_&J|AX)?Krr@r~19oQrOc0u30(lvUXgPUZm`y%Dwbrwu zDH79fIN(-b`_aPBMRR_xE<$aqG|O^Y{3!HH{e0Ft^b<}ss(UDssvCh8H@bS)400=X z-dY|<>iOT42Tjz3(Um>W;t3^d_aW7hi>N+U_hMmIji+hwyzcEKN_Ot##WX6qhzLP; zLpdyGxgi! z>dKI!NrZ5mWE^_SdNJ|9W8Nv8XHb-_IJ}-ET|zb&*7lfD zW1T#o6W^k?2m4lOs`!%s!rLF^SMwIhP!v|14E2v8*NN?7h$M=Z%U(D`9&3j+WM};T=}4F;*t+T&CSPlR&Ht$OPxB7Dm*|&t!{gHE!bw#t z#YIeWqISmdJxlM`@r3ZtR@Zbc{vX#3O9?sbj|)fTNsO<3^z|xY{-QiR7&Id6`?W{P z)`8M0dr^sgOJ-gvjCwm7I@*spEO&iW`mlma-~RI&1}F+`^Y`s0Upim3loV3V;$$BO z+%b%2P`JqiE;mD|L@%v;dFoSjrAs&#ysJHgwLDGh9-j-fZAhJwodo1<*se1c8zfDA z_8t8VCzbR4|B{l}-kq2nlDZDkmZnFiGvoP;(Y#cRkxR$CYO_hd&eKfpZ}hTG&fjYD zdaH(tKI~iW*;WaF=9v_^iZ=wwRs&pTEmI4FUE&8?_`dxGke_YS|bKn5<&@CP-$ z&rFUG?KJ$?;OJ<-n(O#vtB1XKu!$iDC?hF0JVY~5>bwh3gG$$)vW5UN zSm==`>WEW%&0nDZhH@MK_l5B%d^;+v90nWw2svN#em7JsOm##CM#fdYuuw$?s(-bV zrD-kt<+U=xU4N}_`N98Zg7<&Vk+GX33NsR2o}Qkbi&uF`S7fwY-3Uf1P#9FDI&5|t z72?7w(>YN8V*H6jnNIuY6)-2d&eCu#(kI9JNu>wF$Swk5XbcgylO_nzNr{|Pf+I&P zNVD2{-3_NlLOcqci6+;d1Iop5`c1HQwquUgZu8OnJ#@$qA)5YRvV7dV*ecsr3gPP0 zlM_jbO@Y2zUNH+9w)e_0Oj;qi1%Xh9akD@0ReBP4_bf8g=GOzU_QzAq85-1Qsg(n4 z-{0s_yf&O*>u&M{F=vmlCn)^mzS7TP{j%n~zr}Nq%H7m;G9WptPeO>>%TrB4#yDl2 ze3B@-ZMB33&YNZgi|Xn6teP-?!I}%eQ1=HL*?$U%x*?aG?m>Ur_je;8Mha5w7yY1R z{|Wj`hd5;=26~|1o*dIFZqG7>M}OD=^?Vd66ITIVF&n0)Jk<$={Y zTAaUi3XRUUjt>Hp?KUpdN@RYXPfYw2>)(hbbK4)i|KUFsdkvbY@e|WlfB^#PYyE9M zM|H(5_1e&oee!nG*(9%28S>)Q{egsfU(fHdmKA8$nw17NrOlYGXJ^0mwtD(2=c-yd z$5%1Q-~PC=t{YXHWl_ZPxpgf|l1wD6Jqngz)Y;RLIa$wH6dosExDmE2X|Tva^MH47 zAzk&U!WS1kw-Hw-TVzf&AVd*GwMEk46-`AqCqz;EBqGp3f>c7cy^5Aq$kO$Io&XUn zcK!gIwa5tz{XDD3Sp<`c>8&R3t#~3*2toa|MGwgbpeA;6;3B3X!K}#Jh#nf{Ok=5z?zTC0*om)S2uHeVz3S6?2Ih=D| zZUMcQ02#gsf`m+Ek6vf9HhZp5Eepc%i}(lI(*gJS^kLBUTpdBS(9p{j{kA3 z!UXg4Z*;&E~(>%f?jd%8&w;bf@o3jHB0X-NEa&0qlSu9 z5n1p(l3WCN4U#QRKo%gv8srN3VCxbZOFCl(lA$rCfSwFwCdu{5sNvf0Uy?HprC>sX zsx!2Lv5xi=Ot?pCIYzu3t)YTqpkEouSMdbo)z3Fur~3D~-}tLZ1VxEe&+RLxFK^Nr|WNlL4hC~&qn zIC)xA^JIie**{JuGitX!MZiw~wt1LcPi;|P@j!RO<9(5`O0i->YO%i(sm|>%ebI|7 z-(yRMNy?>5A%e#FskjQgPC}84Jf5*52vEGt9ivhX5a?o=Sb-OTK9>d~KoXnlQow{u zU=34j33`Xd;X$l7}mhux$D zG;>KV)anXx6rM3h=rtc1ETUHekw~VpZbqtX&1vd&+J0y$uBzI^|DkIoW}RFIiK;K% z)bq?7ekdNduhS5LrYZt4!vVBZVt*=Cr@ zeN7N|Oz$^{m=j-HOiut~fptFB%ZNAt97YTY?fLi%40-9uQ+b;do;YP@=8>8TBfmOl z2qT6P=L{JX?c4VtrWHLH#8vbjF06v?KJ;JP`*+WGj)`;>F2Ag3Cfpd8z-51Z98){; z+O)PK?-!HFp>1%xE5XgJ>>Wyo(6b2P5>W|{aS~NDq$*ZG`@EJY>4uiDNe+wfr zh%rJ4oyx2Z5Kt%D0SreJD>B7%>u1RxMsfVt(?F^ zF|K%uK+hox3=H-3hVp+?jMy1BKqqe(5qbG(ry39>ZEt0Sh99bqg4~f4agy6c1e=7) zvI0B(x?_mq{Bmc#k~Y?WcuwJhuK(FipaU-es)(V%sK@$oDna4mcyBEZ%e}W8`yf`Y z&%vpSR`v9BSD@)xXh!HRZ3cXV$q!kL07BCj$b`WA^(sC#wXbU5W8_7eH3}2V9qa&% zRe+C9@1(1W&+6YgWKqUGFAi*Nkt*^f@yOFI9PdC!wJhH3`k!{+HubzW3#aqf+xcp7 zbo(@zOK_EOb4E()fo0E@V;T8#S7V^0ce&i;liSqg%2)eWi?hhX+|n)9>&;nFRX&Dx zXj$l9!o?z!8a{M8<_=`dk25!h<;WRGA%(wcC@?(_TC|1Up{m35C=0D%zz51me+$se zdP3iC8WhfkQkAi9g&&97(fvwe&}P!6WpE&%;faT4(tF*{jFtCc@F$AKEYNrFFo%+I5&YQ(4_RS?M?{iz;wI!k#DD~KeZCg+ygqQAwdNfUR=}%OH~VSdbMJ^3nna$#gSDcc@Q*f)0|(i2Fq7IuU5Na^b(YA& z2-Ugvd+25{KWsge&iLJf!n z#&dq0ASn?>2-V+WOG~jfAvXKyAzKu+xL#7}!TC3+6e9^lyOg1QsI?_=u}VYPyBLyK z;zS`Fvz>%dJe~;Qx191SX#yDGLqo)P0ekG7Vrp#OJdP^Fs!OZzc==KU;n1{0!=}^6 z`B4OqiZwA&dbozQ^{2UG?K{tgF~zG38r==Ezl%(`*4gh|!c;<#(@sBcC#XR|L9+U0 z7}T-(X82tLX2a6y`R%W^o5j|Et9`$dg`hItzOcCnf7isqh0KR5bUobI=hZdWuMo+N&caxZx zGfMgc2>H4X$75(w%VCa~v&{Z<;D!OY1SOlbhooIQK z#`2P*xYD)76Cm2xj)lB!^o{r?S{ED&@jubmz*{b}bL@fFWd@4n}4c8H?)2*6`wHz2D1r?v|kvwz=Pu50Vkm;7i%vTP;^j=B(Y!m8(Q|t{~)a z8LcHX|6S`=cWH7Hwiu{cZvz$7V5W*_X~a-1&IJ-|`|zN(d0hH~>bHuka8 z{iH9E2%4_TLo<&S>95wYHkVeYxIEEa(6Rz1x`{hI=ttMfn8DFF_2=yRdw><8!4cLn zU8`G_-qh(*K*@f3f&sRN4+`I#x`DN%L!xByxIKTpojte@@4ntoC%I5sin@%Q9MYWzQosxnBMmhX%y8mWfvh?N>VP2)d zCFg0iwJ=U@@oUf#HFWw`M#oSS+l<$7cjGW8-r*#1M9Jg7OxgtOOpVo{<@vzE1PI5Fm;++CjL`C zppPdc@BXZG3RZ(+Q}`3gDfwqE^S{M>{z+IN|BfV%`7aHYP&T`)MNJH*!DzsDOL?2Y zdZG;el=H`zy5fhzrG@&Z-u)6nM)moKPP9x% z8}wTcyf7*~yi?55qWU&*4?c#N8!$0(3Y+CoI2B`&bw`*@|kYZ zM)P3!TDM`BG5zHtW_IXkE0=d{D%ICWo!n!n>v`aJ+H;rv2L(W1i>Ez*Y0LP9`;pQR z>fcU!u^3y^S6Bs)Qf(5V(p`}puE#VWa}e4toMg7(3 zQPw*j%$?W2>CWK6JP&gsc@n0zV)Dv#%y_L=uJCp05tumi(#Gd6KD64br_O$C!v2N* z1^kb$;IVA9G5m!1!$&6?P*UKE{|Q4a(6k zS7ZeXK_5=k9sq>t{aE=%Y)_VTdjKkg~s)C2#!BkW9O-5KhgPUcsJF$ z-A@7kT{!5pnh!xPXhD4i17UqPrJw;s0xxf5AJMnmL4(c)rx=Xa_v1!MUlJm;bbsNll}K;e?izSG#Db zm(8TrFpSTTBCw2km)|Ly-!00Ks!6sz9}BT+~ISAVk$cg{gvCZj6ZUZG+?B`}PTH9tnc!ZH!RV%U&4(b~gn}*uN)f z@SJe~VUZmx30v@HOby+%HeO5N9gAymkn&pB!6n0?M;NA(c;f;bkvd}Ooc;7r@t{Gj z(1J~Okk-<$TF^zdHGH@Q*aZiDi84iQBaq?mpVF#fdmx-9slf6(WNbcAL*H=pOl4pb z+tYSC`7EeY1(T|JWB0rjGF5PNlCSE&_^@vUmIa8m!vc73lx36vNq`)9Z8ix%K7=>yw*vb`(wr{_ZFVX0xqZ>XfX~yyWwQ9KYhi8yaDlV>w zr6hTX7A6Dnm5`P~5t51uVguXO=pwu6)GFzBJ^Q1%HH&&KQ-E(_l0dBz>asS;nhNI# z?$i&O_SgWXJZJ{Yl{2JGIg<_+$O^&~VF*oV?<9n_Y8rn9_+@DSnBDT78qSV0^5Dx8G>_a|Qy1<$Nz!B@!5*Pyo{_jp&?F7T)ou)2&iWf|ZuS&y2e2zyQcb z%?HZ*OrWg|9Oe&5#L$U+R0fWLGtoc5L)RzM}73wUES9G zO;p)k>~_V0!u-4iI>m|&T-^Cq2ZLP+R}RZnYYe3;-`6 zH@WpN4~8cLm5|V# zb}>(Vy&pU!BWPY5W1gC!s7Q92c({-|69E8*FJ^AkbCc$EsbX_8=94@x_|20`b4&K6 zr!$zG%i}g@Og!AT%KNMF3351g*OSpCIO%4wJj}MUjKosY!@(|k;TdO%>)A?v*9##J z2TW9=Gwgu%-4&mi>Ig0ziAIIEu^Cn0H2ZGSQB z!HO3HNnc)$J3bB^O=VD`f2<$`AL>SUua{5^G_8yXg4ga!+)gNdfY_)z4`EoywvWb0 z!S)wvUF7Ecn&k$VDKNAFpAB*6M!82LR^ynCyQNp-_tnv>uP-bf3;~~TF!kxHD z%TlqQpbdcGSZ*-^aK=a$G}V2}8B2f!G;ie;t7sD;&SN{sE7OI;R7)B-BKgmkLkHOo zdf<7tqAH|aZfDxzKGWwJAVgD@#5xO}PV zq;XVdo~rqExm+BDLMCx)62D~Ss3<#yVYwjg>FV`os3 zeL$v**cB|TnvVi(q79h{Wr{Jl%`RGilTVSzf3Zql zezF6@6!BWO*H8Z*&+}rJi_J|!lDfOy*!=ZA`sa$tVpUF?pPp}F!!?h&o4gn21BEia z@fTfD^sYeyKLlDTy3fZBUD~IpcdDTiy_4hlA1}0jXZds)Rx648mHs)KXL>5qSWQ0g z;*8Ps;ycS!35iae}hMO2JzfTt9Gq$`jS$fFgK;Y#E;q>O^eVX2yV8q5j#ud+^WE2K_P6#)ZuXpLH%>)VI%$E z)Pc}8#|Jyk%1azUjve^Qv(m0^lV%fo!1UHS5W~=vjGu)8Gx3#abCU|L}(JeV1i- zAruWFC#ssWmrS-55mVK1i2TazWvY%M-Xj|BMuRP|`k`l(mwSuv;L?#D2_4?SmGqXq zre5T;BaZQ^J&s-HAq>I&pO~ee&OiPh^1l|+?tA@(G+O`2|NhtJf=n=K`Ps4aOGNOm zf2_b2a}{_fn#lq-nt{(8TwH$p+r#L_bi8w@m&=U-0pjtrv z5p&JIU7ay}{C;B5;X+xt) z)>>W9q9@l~_0Xz}@j&Eqj%}~PoP0QJhS)MHxP~F&FNZc~F&k6rXXZ1sborS{wri~> zo5{Yxfu4le0ta4zb1?_5iZ)e&iH_WA+$7v1y>&xvflJn67o!+6Q(W#z?Qs3v~E$?XE0 zSC?q0Ls6fPz>TZ$Ny6k}Ar&BYytCo--h-b6W-U~`CB0?_yHJ(RBBzkk5SbhH8^qoB zUq68x9&MuzKZEQ>`u40Wqcg*7iMxA4Qws= zXxY!b=j5>#{?pLx%o@k=vR5L-P{#e&y}B*wkz%+n5K_=Gh&tdu@6{~7ea*2@tK6C% zz~Qr)J3V>(yOQB8lgFN7g3A{_O$LVB(ABEg{^8=YQ$G^_nrk#-Y3M8zrtMI?s{YWf zSl$sG)E%pt&32b2BVl!X5V3}Teb|y!=LN%9=+Ip}&~y3JH5yj{n?t@l=$~9gi@T@+ zIKgV#`v9{t!`#;)W3uD|TvKY#z6G_dVP`e1~z| zV6cOhE8rLTO$H{NI9CrbfX`hB+gL6%rWjAB48qulXOV>&Y5`1Yq1sqFGgB}iF`U^G z&wY4$b*9eV_89=?6=Q8y?5&45pcf+7)hQh1tYP%qUqnxqE3cuVB5Z`-#$t|~RzC6o zERVaw?UA>=)06`KmC!x^ye(F*6vR$ZCdWS^wv1kJ;vQGj$A-IHZ?{}befmy!a@-Ft zRAtK35uLZGbX?8&>Me=+mnMc7RM`n78)xFor17SPn2!iSUtt@OszQ5vHAc>$TVa~q zd)|H3!1T*Bqs)h)$oYaIW{TV5;xC5)-)|sB{QfRC6wdSol;rQ90wH~1M78oA2~GvW z9o`5WkVwUNt%XkWy3@>c4I9tn=%#(cln1l@&6VdM`sXjATE`E+**nfDQ6uD)`Mwg3 ze`K07^RZJqER3hFdmWPB1Ao?I{ygxK$WsyRpPaQopE^{VfToJ}CZ$NUd`m&b&#VIW zD<4Q2>uF7<6EC7K^22sI`*OtEFW!}{9PZcW>i&uKgjx$Jo792FGOFxXiENnE1zMe%-vH%}B0%BEh}Uy~dZ;H}g{@MU*PEji3QiEIpsQYo@i!0=wXIf${6BJs3gv z80rtDgknb+U|Ub5?TGD#wjHT`Y(2M=BRS4;=th)`{CJDo`uRqbvFdLO2kpMA;G&{J zKFzH9$O;0pYJ}e(`y^`^{7VRV2;l<>rKdtRYtiQ+3^`}UUJ0qpZA1JVzm@te=JtqG z)+1?y#vATt$KJ zJjZjU!sTmGYT+MkYTHj|UM?3I_DNn|wyDec$yFvIYbo?)l?xePH@9(+;1LT`X@9^9 zFM3ezq25tE!2naN^hHbC%Ux6qZ^zhwuH1`1Ej=wgoe#cYqVTLSyvp@M5M_$0kcnu% znkXusC7i!miKg-l=Qpvmr<}rBT|ZY0d`ImMfrh9wiHb41PLSO}eJnf^17vXh+Pa=N zcQUJDK~S+Qvv-!}I6FHqooH+BJihDFb&kC8YwvBUeeDzpC5m$!*lmR?B>nkL$k%Lb z2?kPS<^y`SW)b8C0zJi+0hLFNAqf+%S<{yRT&A(ZetKJ*8v*Yk?2U4g5Z6(L9UVTG zXX%3saI1{VBN{|mR{G9u_F_~l65PqspHxjw>A>Sk7E$aA|EAgg?Y5V#cncEM(GHNw z#(%GZ`S0hB|Ae!-n|F#c;D)20m;X*s2>wVTUg3FcB`cH95)|=X*%eB^6V4+}Wq0&+ zXol{6h<%uxztCpxz2hPF2rW2#8UJ4c#BSD$_SBSXGx7Ar2HEmRzJ<@1PZfcIft!rC zB%v4luwO#j`ETCJzTnanMO<}4mXdPJxle0LF%n-eDCpJ2Bt-j+6@O~2bB{@-3_rn( zFA_(jS)29-Yr+_@chj^s`h6`;IsTmrcPf}YC26b?yIxpEhUYbE^>aU|wr*=SPoQ<` zF~-qZ%p`9LSY!!uwZ`U9UR78zWCeVi8)(y=xRx*W zamLE`kM;?=dth^d%1ehkhO6Ju&7R=%Os4BwWVKfDRD)p0MTbDyiCNPQ!LKKq)n#aQ zlw0wHV7^VpeuL-_)~ zq=qA#l@5yb!*wE)5T z%C?ZA*G@haT52X=lydGYv^?#5BW$N*|Emxc+rfCLCVl8?b&Nlbr?Fd04rw8 z7YRE8SP|OeZFL^{zKjgP{C&^0xhDzhrtJ!;dR?9*{MF`h8ukZwFYHA?R0_B6vhJA^ zJpMA?)3cX963>#EiR-SV_s8$a_p~;2Fvr7&TA ziW0l4R>_JZwYR3cjnMm>6n`f38pj-T&onZe^7EEdXJRy*T3}W0qSkvtEu3~StC|Cj zN@cnlva3Nwz9=mzNO@WuxfUH0jrouzD^%asv6UeNmVfED|Buo_kNnd^TSg^;^ZF=l z>-aN&oe2e`Bm7NjSo}{?1JJ87VRh|Ce`t|;W3M;vb&z&l1(>G{Lw5BBR_b=51Blkg4K8+X$iX+wC zAK8g2<7)V#<`#e-c~TzIqfd)@0Z@mtOy}UJ8GNnfXA8lSDkMz@A*0^=KKiR%3Oc0`(sH!SQb>r)vW^`M)E`MTd$L+MuVx4$F{0$|I zsQ1g1iX|Ig=DIFZiOydgJuv~O4b%rFJG&koh@_If-wbWaM5e8({>CO`93NRGwYiw+ zfurW)axVg0dck$xN$1pP^ZmK@xW%VjieFB5@;)QKi9$5$-Tm4pr{BA6ZTt1w(~n^; zbN*X>b?`1ORLelSrcn~z-mJ11w07Nrld`gr@)F4~__WG)?G<^I@VUIa)3lfG2uJtu z0`Nl#W@W4riNf^tf}O4p%Hw*R#;Xh|P5pYkQ|f{q$DedtHp~XD>DdIVet zD2$EFi2^z#zu7{Bp*gPKNIs6dgiL0xq%WdA9a@p+O6PDA<^JwW)ACwEsKjmjRMEaJN=%J9oPb@=$>m zKDd8K9s}#g^#HMKlV{((&>*QgLpl)*U+x7+sY0rKEi&J#l2t;D865tZ^qWpt->os| zsZbjTsKn5MLq*iSZhJ3nfEmcT^L#fUzBAqHMJZ>ad|G=BfrIS{Y!x5*fyMOP`&A~d zFwBplPXAA1R~Z#m_wH#JVupATL_nIM5u^oaBz2T#=tfFfKp2K0m5>^cp+v$Vq#e3b zfk8^Tq-#J)74GPJzude2cddIqJm1b<=j^r5S$qHLp=ntqawJ}6q!4S0@Zxqb>`)l{ ztOOvr4`UJi+N-P#f)QM~)0D6)cZ>gEPE#iMzQCD4r6acog53o+?CrYWtO z6+_M!xlNo5>iii9Nhwt!Y?qEvB`m$bWsp;-<4lC`Xy7EP><0OTec4KlY;#w^-O}4c z=_H~*RgA^HNq2OC@d~tf@=$i_bttY0G%_sfqf1zx(3`^W8ra^Jn4bTE2{_?O3(%%n?1~)Q=hD9Fc%3` z2S~I8Wc&cj8bPLC_|W_=-R-uyM`yk^yl=Ow z8D*2-VY@%WG1!wMvTE(JcX9Ah_bO7YQdM;A>z<0E>I zR`-e(|Bw34A}&L*DCAy#hIWHE6DwMUKPEGnqAXG!2=qIN#(K6ukW@l;&w@#Bk-Kr(2Zx(5mgudBXA`9OOV-oJ|15dMdA6lo==K|C+}C!h)^t zC=50f{wJ2;){{K}%j9%_d2%8AG)(Y4Ka>rr*Fc=v;E{e0ubpZJ0Htuz%8j;*yS_pS ze`ER{X*$oCvnvHl-Q5c_Ylh7f4q}>k+Y&r<-}XGEZw){-PYv-@?g-xV-!!M?MTWbZB<-xm#Rs&Y73A z%XfTL&hRp+Zjic@g3Xm7G#$@zsN^m$MdZ52>PGEaL*PjJd>r9kB3y~|hje!nI60r( znkq5O6p;4Vl!?MoFHc>IDm1GHWk+#CzEfZVi0xz)lV$7oJHwMM?6!sgvZu@S;_{Bm!c9$VSgFV zowWE_c{IYawDUBhP`yG36nOvUOD!O~9g5xsvCm}L)uSi$P;tKI@Yjhn-E4;DthLxK zQo9FQME3msRcJ{n6BlD}lW?!hyEicm1t*T2o+Ya+IBDXdF=`NK4dH;wEJ2SW0&&89C;Ag0O(sds48#DNnma13eb3V%H`!XnqFm(yxVoQ>Ugd5?n zN#fwilx?vL;$4J4F`5}(b=&xBx1O_UFeq5FkFMfCl}pm|7YAV*1^IlxFkA*@ z8X+)3jx=|A${Kc+?7{3drSe$1Wh-{v&!bPr=74zS6+N|IcZ5SrL2}m}rl8)Nz@9EW z@-6iYYwG?N-UFWk3z#OKt$R<f8Y`V~C+_LFQ!mXK0>z+h-bZgkcq8R0 zXQ|-Rq1FG$)QFLTv<>U5*uI6me#%@kUH03PokjOoOUwgt2mfHI#jDW3M~)w&@oi-B z*d~v1ceC%6vf}mJDIsNWrf?F-h`)=Rg$daQdlN8Oi3zN)&@`GqoONr25POnGd( zAK?%fx}JKk0z4?0l(V8H$-1_Rc$>9U_i*4a)TI)@4g2c@*}}@Z4y23ZiJS*{5h#q3 z@GtG_nI@=nrRz90ja~4b9HYojROxD5hh?S@(aWVSQcGdi4Oo`ycVe5LN7P!sjDcvt z+6Ddm*1}m*yXX~$XUX-s(4aCiE)7@ogyvb)zrk!{W4h#PR2FY)@ab{*zl+}vUUN43zH*Is8Id*jZ%|0MihiS(Zd%Wut|0rvPMvre# z9L%cFV2?4n{T^KCIU(-R+ig8Y*kRY)5dm(=6w3ZIZCBY{ZdhTpuNA=e8Nj?6N;uOA(E;rR9`>)1P_~zm+m$sc7FE;nzSui>ro*wlvjbU0zGQj((6Xk@ z%R%+ucLQ#<9cNm+56TJ8uX|1yusiJmZ4FRUCS?a@P^W#B>m7;?`M_@dkupkhM7{y_ z*45T*VCQ6@dBx7=eRQ!!?E$7lGLD1CGUk+ATnNAkc`(!HK`if{a>`d zFy{Z|hykS8z-09B-KOYdW^xQGZ4zdC?CJmBN!w=fKk0@4`=db|(y*m{gulvB$WzY5 z=$Y~6gDXGnOn%49)Pl2L$TYk4Iw%W$uamF#KKe3xHg_UaFRRXrd45CyH1liKP6^7N?KxWo z)G)0bL~7l7i6hG41KG_ZW{Bs?u${%0B<|bEVuXr5hge;I@ z9m(Gjone4h>G9MePARn3-On@s3&8mj|A=txt!_*JDO= z%ucVe%Z3ZJm}GO7AF&KCFLRI@n!FkB>Ryo`i1N#ngiX(|3pUm7`(e^tI(yW{$i*(; zX(tJh;Lbn|eu47MI~LHNky_d3g3liw&9;uP>0kpKSzEq=4R;%J6uB51&g)mSDh|`P zUD5aF!iN`A^F|aP1sznzERTTFD4af4FvcCop5&TBjPtxLZ#>U!6yK{FMYK>?CusqU zmaYznm~tkW*MG{Si-E@7;1vbls~VL0ko0BncV#wN8VxZ8Jn%M^jC6*lvRzO#RzXO z!vqV34s05=vQA5T>y545*KLqw&PtKDGGq7G2SJSc{s=zJ=qJY7qD#LZRY9w%rXNStIv>|{c0=AXl z_oWY^bSo=aNl50xlQ(mxCc82HO5==ETBd&-FXjTQ8L=_?XBJ5&@JqiWTutsuVoR#% zQM6RtQ+vf039YG8!Z%1i$M(SY1x`gKpddLjz(ip{E}EusIeAv_mS>CIuITit!nDQm zA?>+MilIQeuwXbJd3a&}EE4*TG3oDPgNp1CtF&O*m zI^b@1oM9+s*EE+~Vr$S&Uvi2LUI^o5?@914Tks(Bcd5bX38sO+$}f3X?XTe;v?!%G zCpvZV*KmI;*#F=BF07@Sjse9FDnIFuWo@3I|A&`hbBIrI!ftO?F zQ(YCsV@ZX-Dx=4wps$fC4 z5gl7tdJPq8soH7wMG%QxA<0!VDaaKU9~rcgNgpd`gCw-qps5F-o~aQ+GO0IpAiXzc zn{Ds7dCbEvAf+gYF^aVUf00JcvQvcs08alwn+L<(5VN}`K;rT>JywuzdSk0W0VGc& z&4MQuuy0eE=ME;g3KvXn+8$&(4{RphyUs3{1ar>NCXFw#V*>k0uYFJiyf|ohwVn&+ zW-tKxY1_+Zv2H=(`}JJ&cnRN#EO0qo$NJ3CS-yUJ*40@)ar~)y*~D(tcz`>&Lf#1d zmi6(sSVB(dW3E`R$vPHHOsG!CAV=iG!vo_Xp?#p5!OFvv?GU~&?D>GU-?btjW$#dO z^yPvxk{a>t;^6zekk7PK3t3q*7#{56F#S@(5f3I;Xj#yXSmQO%I5&^}Y;DZai~vTD zl2x$V+n_v7FlSPKi#+wq7kPeoE1_`^eNYAIW_+G$R`|*rt1!d) zfsx;Whfr5$s6&S7#t2VD&q35=oUzIRv&l{MQqT2ogXJ4p<6PB}*x;=Yp`mwZW*WE+ zzNd5cfKd;bPphmY?rJ0{a4+a^KdG(UNL1sK%!ubS_**TBO6i;!+dV_4V$cJ|lU|u% z6A?c)6;ls~^28@s?OmzLk|gAZoi)Ut`CJ~4>jMp^lyfQd3|x}C&nciRl)@%4Da#^& zEmYOJXiF*OAXrUDvmLW9yq`v3(p#V0iNEf&qpyJ{^Kr+4wA0g1ihB$#u>N;(&8GD( zl%cZ#yM;AhmT2H!YdKdeWABON+klUGX^fVQQs}kQDuu=~abZAt^wqCf>C>-CKG~FE za*q{SbZG4_j!HK7!&)1>oJRC$`$D?7OL%@;4J|#kkf{4cv8OK>Lw*CfEjIV%B(1w> z-@JVqlKKq#l5y`IL`jeIAv24S>am)5$}%TMS@ukDNMaagvJ#nYzKnAwnb~rX zVetJbBdW(DBMkROTcxc<0AaJ=dp+EopaXKgc~+v}9jA?9aNe=X_y+KKxW8A`nv|7E zNu5`mgZa+uJ}QZIpRHE^;mJ6v?VNrh{wq_zZpXdR0GBPJ_7|5r2Gt3-0#8OkiePGY z5u_v=U35re<2yvnLh1xLety(#G1lMb|9Bxd@@?{C9!os<)(@$1S2|hyA zYakzCydsp|Fn+a>5`ooy{@`GU0AWXlBm^c)DS0qrj_d_0@mGuAq9gepz{nh46`sC~*C6n^8QQQ6M@_7652 zjk--T6vIJFUU`fx7=Kgiv2P`OdvOZMhO-#DS`&tLW+Vx+W*q-OwDIEa%(9a+Az;0G z#)WoM0_}r#M-qWn&jxGg(f_>clwQ29E9AISyZTjze-=5z<1OUFFdF+||B~lLur9r9 zb81rYKN;cYDpRZ$w&T~ioGd8owM`=@D1BON6qHnzLW5=K@aQsE2@{M~N+#jF>U_%o zDP%)9y0XXD$Wv_n?0M@!{bLpMD_tVo>vyA0vgh^5`tYN29hOcQi*UURon<=>LiTGk@{w6Q?{?r50ho4t~{jZ$4w`=lijzsMXob z3t&EdL~oksI++cUNfyNH^7{ocE_Hx8%bP3SPoTh|}|j0{)6aR<0_>5Xpz5Y&tpy>w>hZ zV6Mj4-uLPL!4bzH&V7tY-=JAokw(jm_uJ0%_XyW5Gf|c_;S*(E_MwKOz_YIjO(hXb zw#mEP-M-o6*H&c_VNx2`Se9#cqAp%StA{XJ)s`r2d<~8HKPnTcwhff`m6Nb(l}+5i rs&^AcQ{-4(<