From be457ffa95864afb223985bc950644386b86e6a2 Mon Sep 17 00:00:00 2001 From: Seth Schoen Date: Thu, 29 Sep 2016 15:57:29 -0700 Subject: [PATCH 1/3] Test more in nginx compatibility tests * Highlight failures more with asterisks * Filter out wildcard names from all_names * Only test -ai, not -aie (no redirects) * Modified versions of almost all of 79 configs corpus * Re-enable now-working stanza with 301 redirect * Change another redirect to go to :443 --- .../configurators/nginx/common.py | 4 +++- .../certbot_compatibility_test/test_driver.py | 20 +++++++++--------- .../testdata/nginx.tar.gz | Bin 6625 -> 39666 bytes tox.ini | 2 +- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/certbot-compatibility-test/certbot_compatibility_test/configurators/nginx/common.py b/certbot-compatibility-test/certbot_compatibility_test/configurators/nginx/common.py index 3622bee41..ed5cf750e 100644 --- a/certbot-compatibility-test/certbot_compatibility_test/configurators/nginx/common.py +++ b/certbot-compatibility-test/certbot_compatibility_test/configurators/nginx/common.py @@ -79,6 +79,8 @@ def _get_names(config): if line.strip().startswith("server_name"): names = line.partition("server_name")[2].rpartition(";")[0] for n in names.split(): - all_names.add(n) + # Filter out wildcards in both all_names and test_names + if not n.startswith("*."): + all_names.add(n) non_ip_names = set(n for n in all_names if not util.IP_REGEX.match(n)) return all_names, non_ip_names diff --git a/certbot-compatibility-test/certbot_compatibility_test/test_driver.py b/certbot-compatibility-test/certbot_compatibility_test/test_driver.py index 71100bb27..c07586d8c 100644 --- a/certbot-compatibility-test/certbot_compatibility_test/test_driver.py +++ b/certbot-compatibility-test/certbot_compatibility_test/test_driver.py @@ -74,7 +74,7 @@ def test_authenticator(plugin, config, temp_dir): "tls-sni-01 verification for %s succeeded", achalls[i].domain) else: logger.error( - "tls-sni-01 verification for %s in %s failed", + "**** tls-sni-01 verification for %s in %s failed", achalls[i].domain, config) success = False @@ -122,7 +122,7 @@ def test_installer(args, plugin, config, temp_dir): if names_match: logger.info("get_all_names test succeeded") else: - logger.error("get_all_names test failed for config %s", config) + logger.error("**** get_all_names test failed for config %s", config) domains = list(plugin.get_testable_domain_names()) success = test_deploy_cert(plugin, temp_dir, domains) @@ -147,7 +147,7 @@ def test_deploy_cert(plugin, temp_dir, domains): plugin.deploy_cert(domain, cert_path, util.KEY_PATH, cert_path, cert_path) plugin.save() # Needed by the Apache plugin except le_errors.Error as error: - logger.error("Plugin failed to deploy certificate for %s:", domain) + logger.error("**** Plugin failed to deploy certificate for %s:", domain) logger.exception(error) return False @@ -159,7 +159,7 @@ def test_deploy_cert(plugin, temp_dir, domains): verify = functools.partial(validator.Validator().certificate, cert, domain, "127.0.0.1", plugin.https_port) if not _try_until_true(verify): - logger.error("Could not verify certificate for domain %s", domain) + logger.error("**** Could not verify certificate for domain %s", domain) success = False if success: @@ -183,10 +183,10 @@ def test_enhancements(plugin, domains): plugin.save() # Needed by the Apache plugin except le_errors.PluginError as error: # Don't immediately fail because a redirect may already be enabled - logger.warning("Plugin failed to enable redirect for %s:", domain) + logger.warning("*** Plugin failed to enable redirect for %s:", domain) logger.warning("%s", error) except le_errors.Error as error: - logger.error("An error occurred while enabling redirect for %s:", + logger.error("*** An error occurred while enabling redirect for %s:", domain) logger.exception(error) @@ -198,7 +198,7 @@ def test_enhancements(plugin, domains): verify = functools.partial(validator.Validator().redirect, "localhost", plugin.http_port, headers={"Host": domain}) if not _try_until_true(verify): - logger.error("Improper redirect for domain %s", domain) + logger.error("*** Improper redirect for domain %s", domain) success = False if success: @@ -225,7 +225,7 @@ def _save_and_restart(plugin, title=None): plugin.restart() return True except le_errors.Error as error: - logger.error("Plugin failed to save and restart server:") + logger.error("*** Plugin failed to save and restart server:") logger.exception(error) return False @@ -235,12 +235,12 @@ def test_rollback(plugin, config, backup): try: plugin.rollback_checkpoints(1337) except le_errors.Error as error: - logger.error("Plugin raised an exception during rollback:") + logger.error("*** Plugin raised an exception during rollback:") logger.exception(error) return False if _dirs_are_unequal(config, backup): - logger.error("Rollback failed for config `%s`", config) + logger.error("*** Rollback failed for config `%s`", config) return False else: logger.info("Rollback succeeded") diff --git a/certbot-compatibility-test/certbot_compatibility_test/testdata/nginx.tar.gz b/certbot-compatibility-test/certbot_compatibility_test/testdata/nginx.tar.gz index 4ca5cc9775a35f64534f90b1db4fb7ef272672a8..0caf3c3be232d4fae8d467fc6f3325147d323b45 100644 GIT binary patch literal 39666 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 diff --git a/tox.ini b/tox.ini index 61ffa06d7..5d6de5730 100644 --- a/tox.ini +++ b/tox.ini @@ -151,7 +151,7 @@ passenv = DOCKER_* commands = docker build -t certbot-compatibility-test -f certbot-compatibility-test/Dockerfile . docker build -t nginx-compat -f certbot-compatibility-test/Dockerfile-nginx . - docker run --rm -it nginx-compat -c nginx.tar.gz -vvvv + docker run --rm -it nginx-compat -c nginx.tar.gz -vvvv -ai whitelist_externals = docker passenv = DOCKER_* From 15c6c1388eb7bca2b290f1f6fcc51e89c9bb1810 Mon Sep 17 00:00:00 2001 From: Erica Portnoy Date: Fri, 30 Sep 2016 21:55:52 +0000 Subject: [PATCH 2/3] Have validator only test domains without existing redirects --- .../certbot_compatibility_test/test_driver.py | 23 +++++++++++++------ .../certbot_compatibility_test/validator.py | 19 ++++++++------- tox.ini | 2 +- 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/certbot-compatibility-test/certbot_compatibility_test/test_driver.py b/certbot-compatibility-test/certbot_compatibility_test/test_driver.py index c07586d8c..928870f66 100644 --- a/certbot-compatibility-test/certbot_compatibility_test/test_driver.py +++ b/certbot-compatibility-test/certbot_compatibility_test/test_driver.py @@ -177,8 +177,15 @@ def test_enhancements(plugin, domains): "enhancements") return False - for domain in domains: + domains_and_info = [(domain, []) for domain in domains] + + for domain, info in domains_and_info: try: + verify = functools.partial(validator.Validator().any_redirect, + "localhost", plugin.http_port, + headers={"Host": domain}) + previous_redirect = _try_until_true(verify) + info.append(previous_redirect) plugin.enhance(domain, "redirect") plugin.save() # Needed by the Apache plugin except le_errors.PluginError as error: @@ -194,12 +201,14 @@ def test_enhancements(plugin, domains): return False success = True - for domain in domains: - verify = functools.partial(validator.Validator().redirect, "localhost", - plugin.http_port, headers={"Host": domain}) - if not _try_until_true(verify): - logger.error("*** Improper redirect for domain %s", domain) - success = False + for domain, info in domains_and_info: + previous_redirect = info[0] + if not previous_redirect: + verify = functools.partial(validator.Validator().redirect, "localhost", + plugin.http_port, headers={"Host": domain}) + if not _try_until_true(verify): + logger.error("*** Improper redirect for domain %s", domain) + success = False if success: logger.info("Enhancements test succeeded") diff --git a/certbot-compatibility-test/certbot_compatibility_test/validator.py b/certbot-compatibility-test/certbot_compatibility_test/validator.py index 62dd466a1..0fd6efab5 100644 --- a/certbot-compatibility-test/certbot_compatibility_test/validator.py +++ b/certbot-compatibility-test/certbot_compatibility_test/validator.py @@ -45,19 +45,12 @@ class Validator(object): else: response = requests.get(url, allow_redirects=False) - if response.status_code not in (301, 303): - return False - redirect_location = response.headers.get("location", "") # We're checking that the redirect we added behaves correctly. # It's okay for some server configuration to redirect to an # http URL, as long as it's on some other domain. if not redirect_location.startswith("https://"): - if not redirect_location.startswith("http://"): - return False - else: - if redirect_location[len("http://"):] == name: - return False + return False if response.status_code != 301: logger.error("Server did not redirect with permanent code") @@ -65,6 +58,16 @@ class Validator(object): return True + def any_redirect(self, name, port=80, headers=None): + """Test whether webserver redirects.""" + url = "http://{0}:{1}".format(name, port) + if headers: + response = requests.get(url, headers=headers, allow_redirects=False) + else: + response = requests.get(url, allow_redirects=False) + + return response.status_code in xrange(300, 309) + def hsts(self, name): """Test for HTTP Strict Transport Security header""" headers = requests.get("https://" + name).headers diff --git a/tox.ini b/tox.ini index 5d6de5730..39218651c 100644 --- a/tox.ini +++ b/tox.ini @@ -151,7 +151,7 @@ passenv = DOCKER_* commands = docker build -t certbot-compatibility-test -f certbot-compatibility-test/Dockerfile . docker build -t nginx-compat -f certbot-compatibility-test/Dockerfile-nginx . - docker run --rm -it nginx-compat -c nginx.tar.gz -vvvv -ai + docker run --rm -it nginx-compat -c nginx.tar.gz -vvvv -aie whitelist_externals = docker passenv = DOCKER_* From 6aa21d1db6889025f80e66a73d349a9fc1491362 Mon Sep 17 00:00:00 2001 From: Brad Warren Date: Tue, 20 Jun 2017 14:02:55 -0700 Subject: [PATCH 3/3] Fix and speed up compatibility-tests * Fix nginx-compatibility tests * sleep is overrated * Reduce verbosity of nginx tests --- .../certbot_compatibility_test/test_driver.py | 43 ++++++------------ .../testdata/nginx.tar.gz | Bin 39666 -> 39463 bytes tox.ini | 2 +- 3 files changed, 16 insertions(+), 29 deletions(-) diff --git a/certbot-compatibility-test/certbot_compatibility_test/test_driver.py b/certbot-compatibility-test/certbot_compatibility_test/test_driver.py index 928870f66..71a0ba574 100644 --- a/certbot-compatibility-test/certbot_compatibility_test/test_driver.py +++ b/certbot-compatibility-test/certbot_compatibility_test/test_driver.py @@ -1,7 +1,6 @@ """Tests Certbot plugins against different server configurations.""" import argparse import filecmp -import functools import logging import os import shutil @@ -64,12 +63,12 @@ def test_authenticator(plugin, config, temp_dir): type(achalls[i]), achalls[i].domain, config) success = False elif isinstance(responses[i], challenges.TLSSNI01Response): - verify = functools.partial(responses[i].simple_verify, achalls[i].chall, - achalls[i].domain, - util.JWK.public_key(), - host="127.0.0.1", - port=plugin.https_port) - if _try_until_true(verify): + verified = responses[i].simple_verify(achalls[i].chall, + achalls[i].domain, + util.JWK.public_key(), + host="127.0.0.1", + port=plugin.https_port) + if verified: logger.info( "tls-sni-01 verification for %s succeeded", achalls[i].domain) else: @@ -155,10 +154,11 @@ def test_deploy_cert(plugin, temp_dir, domains): return False success = True + time.sleep(3) for domain in domains: - verify = functools.partial(validator.Validator().certificate, cert, - domain, "127.0.0.1", plugin.https_port) - if not _try_until_true(verify): + verified = validator.Validator().certificate( + cert, domain, "127.0.0.1", plugin.https_port) + if not verified: logger.error("**** Could not verify certificate for domain %s", domain) success = False @@ -181,10 +181,8 @@ def test_enhancements(plugin, domains): for domain, info in domains_and_info: try: - verify = functools.partial(validator.Validator().any_redirect, - "localhost", plugin.http_port, - headers={"Host": domain}) - previous_redirect = _try_until_true(verify) + previous_redirect = validator.Validator().any_redirect( + "localhost", plugin.http_port, headers={"Host": domain}) info.append(previous_redirect) plugin.enhance(domain, "redirect") plugin.save() # Needed by the Apache plugin @@ -204,9 +202,9 @@ def test_enhancements(plugin, domains): for domain, info in domains_and_info: previous_redirect = info[0] if not previous_redirect: - verify = functools.partial(validator.Validator().redirect, "localhost", - plugin.http_port, headers={"Host": domain}) - if not _try_until_true(verify): + verified = validator.Validator().redirect( + "localhost", plugin.http_port, headers={"Host": domain}) + if not verified: logger.error("*** Improper redirect for domain %s", domain) success = False @@ -216,17 +214,6 @@ def test_enhancements(plugin, domains): return success -def _try_until_true(func, max_tries=5, sleep_time=0.5): - """Calls func up to max_tries times until it returns True""" - for _ in xrange(0, max_tries): - if func(): - return True - else: - time.sleep(sleep_time) - - return False - - def _save_and_restart(plugin, title=None): """Saves and restart the plugin, returning True if no errors occurred""" try: diff --git a/certbot-compatibility-test/certbot_compatibility_test/testdata/nginx.tar.gz b/certbot-compatibility-test/certbot_compatibility_test/testdata/nginx.tar.gz index 0caf3c3be232d4fae8d467fc6f3325147d323b45..2f06add17075efb5d096cdd69d447b759b5ef75f 100644 GIT binary patch literal 39463 zcmX6^1yCGK(>~mT2Lc3lhd_WpaCf($!QCy$p}|6McPDtzpoe>K3GVK0$L-Ji{Z(5v zHQhU1)3Ys4&&*Opqk>E#c~E z_YvhP7ZjNJxZW(HkXpZ(dK0YD3|_WRXLyE4vNQr?mcKsS+oD3pgeSWU8|;3+WLh?d z-0}H-7H!Bh0URsPE}a76-;vuu+@5u~1y#%he|2wWD5ooKVQHFJV<`ckUc?7DP^I zdp=yge91hHH<4wmt#v1vbjNM+W$iuodX;-W^Nh{6?Le_n$@GS2weLA(iMwmeXdR;V z&W~h#rr)Ai^8FVr=bU{;6T#g3W*x!KQ@@nRW*L!I@=kDc$ml!QMhf#k9i5#E?P!N~%$aqA^|j+0m!za}?fBeZO{%bY zf;wmw)0-ikcFsbgH5~yOJ|{<6f~U-L)Ti`RRU(3ke3s1k@Z$Ya^W9<$^{VN~fD0Rs zw{&l+#QC%+k&ziz7kUqlJcSUS*T3AKw|Hch_~<=WCC>ly|E>K51^;M28o_`_Qpn^0 zr%t?eiNbI8xi?t!EFTki}^l4(F2;VFTQEuR_9#j~Us>k9Nhu@nF-Q38WTU zt5EhtSg7L>9aXL znm6f23L+Rt`)72pNVPcmqY;C)N*qrG=O)lZowaw=yerCVlAYFcij~ey45_d=18>em z;)PL1N}>84%SVy+10*pCq*2_NRA;?DYsI7j$DR6!Jo#5|u4z65rEZ$iR_dr_BS;ROo9?wNS{Cto@?ilnx>N|0ymcU-K93=fRLqmpI}hhMOi%V zLJ#A{Au&Jqo-`%NNs9M)5SBd#pm1u*v<}j)${t!2@c2px`K`(-WTs!>K?xUPE zl$Jo~@UorJEC440<7|{$9E<3}5)veca(2Z20fB(zQq(KF`3|vlkUaUOfDrpYOj-G=u9`dtV@yRVi4#0d=1#WUhP=m~0uI zDeA!04-*I5kC*E_f>;JXw|=cp6p(5?(F9l_uKj)i*DtG|uJbIX0V>A;1S}|6krj_U zh393T+Nl6#{6_03KaE6JKXhM6$of3|ynGIzDvZWSMk?SZNSo*UW2OIS8h_qm{tlj) z;9aXI7JT75pKx}mPz5%8!P|nkF`?Y@ua*ky>!3Cjho+6}fhly=FL1m#-;bAcZl6Yc zZ){i8?9{kx*1ZqM?)Vw|KE^;J@;%$73;C>^=(XEt*D| zVHGf-OWY9WqKpaURUj!Hcp>g7O~%yWYiIIvQs6M6Qlv2X6!E-m_rwco5^YA4JHY%W z5k5cUAub%ufVW^q>`+Ft3umxh*e1p+Hj$L@ltAavREr-mHuNhRG@#<{fWlSQGTw$- z5Q>*tg3~`s_k~PWu=m4ue1r|P_FDPxyk1P`Le!=&rcvt!Dx(5|Mo`;IKJ0j|0tnCw ztRc4AIXm-JYI6C0@uP9o5qALUKP8CH-kycYwBBtu%(58YoRI}=^&1fKNAdi&`Y`e9 zQccZd<6Lor7<*KpqUEN$UgGRshf&3xt!16lFD!O){0kG}uG!14oPrXmc~oD5gQ+mf zLMW2-gbPz0OTB)d?*4rG(D@hXyQ_5qH~0Q{TF*K*DLLt+FQFQ3Q?`t+a=ZgU7+7&Q zA>VEq^nQ^3!t;>*J-Ms60+4XK8TJ$6E~a|W&!wc79d<_(Ba~}=EpE4I$NEcTQO>_n ze~!pz1A|n*8e@gsaA8a8hsNM#p3g-J+;?L2il{eLqvqq=QAyh%y`j|p3lvn2gK zmHCE5dl&UJLJO%f<&hneM^s+KRZ{s^A-D&`Ku$|JWWdzH29R88Z8sr#HLB@D@iZwn&?@*7m$1`pIfl%(mFWnoO`{|KSG?)|?bIjEA zZo9QRlW6NZ&V5qk-|5Zc3WqYZLFq+KB=5U9#fO^9a_m?M)ACg)EES5R74UOL=))am z+UmbDcsWan@i#P&xEi>DVjqpJD4Qt4ZV0!ozL0ZjH(rnWuj!GUxUoq%y_Dy$_I^^G za~mOv&XOUZZrGf5marep|G@%xlJ(M^{P6ziCsJp7-i7<(SrLxAnECfZQB|&Zjg~eL z;h3q4*exW`B%fj`|2&$ii;{BmWrOZ;`ffNA6)NgWDP|N$R#E3q{K@l=()~v-deRls zfqD<-giqitT>p659K_77`yQEbjH^k)WG|+8e#s0KpRen5OZ7rCMtflMmRmfzWE{1x z@bR`c;(xW|h(Z>888l)~itbQ@-uSAaY;*sP)u8aSZR;6ouC;E5yok zKWx@KmJ8AlePcJgMS%N3d~@&)omzzL7=iP7=b+|+uL>!yJVnkCn%CIQSb~yUU>9y1 zPSx0Cit)xc`+$<2}ZNELyvt>LSaxuvz6DNzb6{EQg_r9alunRUzIWpv_2a z$efizLZtd?A<|Gn71tkheu(LX>OP_OHgu$wWTuEyr%yN%BS)@l<55km{3kvN^+tXK z-S0&4Y)oNtapfPll8s?p0VXA}<_l%qvYWU+n-0l%3mnAS0+|XJ zLgyeK)!GaehI?H^l@XP%XlW=STu?-$>%mHbejY@^i2}rVr%IB|0Gib^huMpC0tVc( zAn#3~3%fQ$>>dh5B<#9v@pqwlr*%lhCbuL2o8G(?M4s_GFLZB*QVW(?3cdA&DJ(>9 zI85Ej8%Q1ebwexlS)oJe_A-wr?_*0B%Ahc!gEyiNZ&+j>r%u0Vs!9kU_lLE_3H`1Y z5bfb`p%N#oaYc!ZdsLozgt8;-($-5YUY!dpI}r!C-} z$_;H|Zvq!%{tnh9_Y2ANa$H#Ne@W<Qg4;CFXu7M7d2*CUr*qWnJ4BVbx@UB3D( z3u}HT_0z&lyrb(l|78wHw+q9(6r*UuesJ4Z#1wiX{IefS0n}>eA!~m>iWGxF2$2d~KvY{bVJH<4;4J3i*4s<8LWwGe7+E-MW!_ z$@`Kv1tzRoI8w85@6bJxO6luP}c9PkG%s3wHgR`}dUzM2d0?se>NdjId0>aeLRh-+C zo2!s6Y5?UfEcUn!LPS~@8s?#kX#S?~<`wb+k2xj#0F5}~zz9li8r1$!6Aw64nT%Qz zDuj`Z)rd%6=YOX3!IzYNJ<(nT3v@(MG(3o^CTLbyRk>!q)W7ez0p#msD1hG(iw;nL>5d6rZLEiKTO=I7O`5%fH!dd)a(L(|zm#C8qgEUbZiw;zy;M}ldsYo>dKR%~=@ znm~+mTH?%dKAZo3qc6fx^MgmQvFt|UOk?M5FCT*(D zKD@}Hw}hHT@o=gs%xZbx$#_*&eJqegv0iD}aH=#&$vW1cBwONN@(3IB=?FSj%`N;ZI(ieR^_<8o1X8|DE?~wkDVF)Id1z{W zwj0vEgg|*q#-QcL$@bYzPKzQ?OC``}7e&?ImsS^S+H|-${B&H)+>vRRx9OIgvIO;UPv_yv!U z^0hfQodX}=Dc@2Um1HwF=lt)11+X-y?17<$cj;jib$4Ue>z2#*UVn`+{tF++?yzUP zs##c^-h3v}FTng`o5RcFI$SFMXTUfQ?ZY-~FL=pYAResnb00W_7dFzqV}#XzQ*eNM z^C&Fdg71+_sx&cFGK5NwznYxN!p!2^u-u=V>l+&E;DDF;PtR7iyZaDh>q}tn@)lg! zOa%O$d5KN6A-s#Ud!&AvZsdM0;={O;J4Z!-ywvih@_59{VyeNb@wy(>mnifeNAHkz zlNxoqvzy;L(Rlk8sc)BMufQjT9gGp7!n+2G|6&6(_Ssa(2Fx5dU!aiXPrI+xPVpcx z0>I~;;EC?q`+iqBvkop6dWe7iLJE<^k>9`LE!=P?$KDYWe~kCr3)w}v`Yt4I=Edk_ zz=I{^b^fItkx$6LPabNmb()x)s&+^By-S%qzJX14Q1(cAG@M&~yP%h;id|&q-k-yg z9Kl&9P>H=OXTk=)D+lzE_LtyF7?mT&2|ETck-xI=2KQIp7v!9C4PrwGm9$q7YVK8) zmoTZn^Nam}KdoZ>V?kCO9b>p){NlqM>W9BST;na0(k(Nl*-#2OZl;|sZN78*H-XAj z6(N7~g972xSn}9ti_qHPoTnCTGECEvjZ#$4RIZ*-kAtuTEd&mOI(twEz5Hp) z`Yb0h8;^7IiF7oVb>SfiiqkLRkT-7%Xd>Vz7T4A}k*%l1=s(~2byYSoHXP=a8qRSc z6Y-N5L$LZDMgRCfDvWWtkl%7QC^(%FBQzXR)-%Np?7t)AXJBmApjME{kRFw`538#ySSjnP$|A&Hr+H}q`X*)zW>T4Sp_xQcp|#ZCJAr9Q&E%Tw z$s#29gaudMDx~btJZBXax&@#&mnaBY8)4cSZA3SQ?DgmE?V?|zDE$yq8cT+=8j$>e zA5lRmUv6ID^9zsS0joXAvY0t8o`VkmubdXGS(-e3Mm+OnfAgjm4@D5BeyCisA`hvS zc;{y^2it;{GQ8Y7{PrmNg7WxomDeHSS`6DcuR{XM#l8zAEB4)q{zIHnro-pz(5FGj zmZ$&f;ei4{XXujrQH@7JG$MlU(xT6RkU3KPDV9f|`)e8daZUh(F6Q5=PwKlQ-CwQk zXXBv@sBcv^wa^UdbXS6OEZmb#F5mB17>cE$y;V^KGq)<%{t2_Cfvdq4lHOA?lu7lt zs?(tu_KMl~aF?-AQI@oEk7-nuUx5hut<&BaB9GSDOH}OmReFkgtwvMklPC?bh+Tm! z%HGoicCc~pVa?$_ggFYY8;loyYs`*FWNdb}xw#qZ={6133=rKb-)|6SI&zL*$WqQy z*^OV_6KW6vsscqsl1Jw|c(W)E%BG?04|SOS74y5AQr9>_C^N9WPU$jmAzHYnH^816 zk1+bBq~l(csX}SNvHNx#agn>)i;zm}%`!PRa%(A%O-yz8xb@N9#kxbqde$QmPN!|X z)B2YM#?-}hWqv8?Tbw_09@y1f8@891OO3g#${TcGYd7QBz98h*QJ=|=|15S2GS@4<^iw3dKwR0 ztzu?;Hvq8U!}1sT(;wMWsOb^4k-oU6oL<7NGV7hEJY#uSh~k1M8it~o-@aU4kCQ4l zA2*7==|XXBKNB>haK?d|!HNQgKemH%XGvnST@2W2x@rh+8lo@g%N&Isw4I`+Ak_$( z3tk8dO-Wv`A3k)ow~uX{kU-BQ`yG4Y@t$bZnw?hc^%ddLP#vcd)a9w&z#bc~O$#S{ zd-9AfA5$!`NbHR7-HvP*6V#|Om?poG;7Niea9=ujJ@?;-@r9GogVw5}Hj+_hBz|FSvA&~`_ofQ5ZLT}yMm&+%iv7$AS_)_I#c7Ga)Wwo=q z*j(tf(sr$Jy_0P``2D@Q$K9JBG&c6D2%2tA`(-WxQOs@_&Po)hZf`mxt+@hYLEc?i z#TzprVb%oQjf3gu`_kw6;VCT!g$c5JQQ!aCyJy2i`CG9u!6JA1!DYWLDas@Kx}(r< zMK}VfVKhWnd+WfRab>K#|ja-l}tQ1+ABG56<>BlB>3=?YkVzlJ@d3=3w>Q6e*9V zMwa2hD2pF=_uq|GR`s^G@+`9CjK?9&*-sZMHVZK?__wf=*CQZr&j&+Z2K9wF@;lET zW`+76vkcAFKaSINy7C2B=XxMrkDY=)CqwLJf-02HDhDPH{zSq4^kdu)?(<3Sdh$GM z@n{A>=54_oqiy@i-S^i^|5l$by@mfBePni=bIBx1u5YDe5gD(*-yC!~ov4>M-LNe6 z@&0D9jM8g!{AGX7mvl`XR=@0(yy~`p^#B`kJY?8cerZ@g&070ZcY9N$>%VxmnoIVh ziQMrFak%n5#d*Yd;;i5flK=jVN~s^6qsLRok*Zc3vhinrh!aopnn}TWM6A`7&+gbS z-cNiX*UwXhPwsH7b-a$~A6^EFwj%cNxA%PC3C*#O)t@E0SdrA98=tX!Vd$M1jn`g` zuO=U7@0`e^D`D!nsr}~8=Ws%<^}w**@S=LEdEal-c%IVCUJ^2H}u*}UqPOyD;_Fy;n@QubG2h(mlvGs-1hIBuMLB{XfEQfTI25kNv&qU3DrHALF z$Bx=%@o&7J^X#6VdANMo`QxSDwzQ5il7G!FT&*})UiQ+mzS2gK z%+Thj1f$aRzdt-VUftbvAZ+wAJ-PtLwpXrzTdXPkMJ99l40~H~R%-@@9;U5V^!cnx z9*a&=oFGH$_m0O$N7l5ftMg|Z<5pgLz2%i!HKF+>r{pR-HO+N%Y2^I5qig$Sjlta7ZJ!4%=_&QFwt;X&0Ps$}ttdnm-88Ik038CiOK{m97|GaDIexZJJqs_IL zv@5^fXNb4M1enZJ?Jz?aBV{Uoq5qJl(vMNIY7C*8^9C_uCXq;3@`zH+dYd4P7R(R_ zgd=h*t@c?7NfvYYoP3LrHG@BKjgZ#RsU0Q8i-}aRju1B+@h+u;S9)JVUNDjNP(esN zF?*@aIr|PD94XQFPGgWg-1-AO%r;#1gC$`bS;1Hu@2dn(von)a3HNvSR_xzd&9-vI zBbYS?Im{xsJ^a|kdD1@#6Hz57z6XTF3DQ4}_u+^Q^jW=;h~>J}7T-zx1cR#0rhOW3 z#Nisyyi|T`&E?@&z*+Q4`HMqWQjI^y6`J;GP5Ap8jlunoZ{7{iB8f$yYivg*;NX@> z`#V#S{17KFk>%u#WJFUlvE7mRNz)bA9D2aP8_(DkXFSxzIh#ttbSmDLnxRY(YR$o` zj{aSiqmfw+r=We-R#GhDLVcMEUEDpDWcVBAVzKmyGUi+uD;`>2Z$lYw9%1J#k-TtNZer;-HwgUu>Bd^&;lQmFa)Zio23X*i8NU;vD+6 zj)E*Z%nxOaky}AHbPQCS+eKQJ?Z84 z*LP`*UYT5=SA-@0Hnux4`}Kg0i>it(8z^&Syw$%2jWvi601g%?3NTB}EaamB)ga;l zuw2(5zAd@1FYn+m3G5$vp? zywx$1IZG*}zJ59qR6^96ck*52W_xf^f%k6Tc&10$FJL{<9+-OMGwe+^UAI-*up$-_ zR?NXEu;w}gbxe4KNdB2!D;lEL6RH!3&bzEz)?>A26^0?GLu zXy44;e>Ra8mZJ5Lmo1(PVlUK3&b2nlu;(}9Hdayjm2cQz#i*KH;`23;=WUw0faCRl zRR6H!3T5E6ep9tctDIXr1V$?#Otw&rf~Ml^x%I(NUKI<$+ZD;6<1K_&)rzdiQ-o?s zfs5Sqxq(|qu?}c6FNGWMr@}e3*NYZDVKa6U{%*#C`h35V{9#xBFV+5bu;Spn0j=vc z)0OK@ z#}H<-RyBegUN(1JH?mJSyz~4A+D}y- zNf?j2*VYr6?pzmiAog+X-N!Nc%6fY|M_rgAX&vrEawE}!yXXd=nGXLP&fpXfA6o1-o_c05!w|7Y6k~{rTT*U!v zurBL9kHsI6)=gzm13rj-ZOp|>Ks(tbKy)QSA)f+dj99IL?%4Vo?Lm_rB03Ld5=;EU zu`z5`zbSSdsqRv7o-ggAU2qEO?e*S>x3WrkP5M`>c@;f?X(=mn!s4lc&DgY;b!vcv zXoN9=&QRy8q^n0`@?Q#q{KrfCf3y<;%BqR~jXQTWUR0JM|_(?X5TACDQs?uLu@N+OG7Vla;B zcK^Q$DEb2^ddQdbff)N62>uf4_H>`YQyU|M@GO^k@)MpD_ALw)tKm={vM!+hFc2kuUFt=aoE1t@UaLIh^hiG zCPMW13hj_Ql>3y?w1$3| zf`Z5G>C}g8k?y4Trd>jJi&&EtOH~h3yh%q~4^yaBd1GwNmA&QRv?7N|#deGT&0k1z zmcQ{GrxU$qoYpT=&-g0?adG)*TnE!Z6#HU0Sab*$dvgsoUt0#k#D7l$KB^D3C*tE$&n7XZ&$Jj%E}N@6 zaddk4*twd$7I?dO??aTReRB1dK(!8*$}6VV5zF&}UHf8eq=gRMCu7nBLdGsc)^awV z>cBKKlz{=M6EDRqR?A2w=K=YK8%oO1VwAM{dTQ>4ofp!*3f%^L?6mMCrqaV@P&E&d z4=E$OHgPGe#cPw+B;V+K%dvM1^hV?6ACFNu+fLZ>(~^2M<=f&1An599Uj(%*vHyvJ z9olgVjt5dP=#Ic*vyYXajbL`BBNDd217c@J_Hx!KgJT^E`7BdN;A zJ@t_%Z04QRL2ybDBkap>*l2jd1OR{KHV!t}zBCS0j`Yd7E0u0^X{(rhxN3Y`plE4Z z+n_=D!M2=8=rhY*x-Lm{^~-kx?K#}EqH+%O*0;O$%kcs7w?Jgw)71mE%R{adR7N<-4~9__skaLm zI({mD%zfB&n?=>0g!?yiH3_HdB|wpYx4S4}h(asuttb`bBTi}9XDhCzH4hi$j{BiW zPs@Ezz}@|wZ`hbncmn%Z-h8pe(NF5J%=+eJ>Lk3IA^wT_xBK}G*A(uDySF0pcM%T& zIuv3Mkq<~%X;PvgDp_SWw4MACJ;p@eExyghXc*2B`xfYvj+br}_|-qcQPLH`&tH1UsZgUB^7o z$eOW3-X*Z3KsNj+b|hjkziHsk8XhcY&~d12+vXee>GHWb-0+RO(2m#E zCU~Rp%{mVMAI>E}WVvt+HS94}{{27k3OnPr!p_e@6#N9NceUHj;Fs2pU9IQSg^{~? zCrH;+j|*9V;0KX!Yl_YLiq8(!3+>H+ylR6^f4&^7o~^#5Z;Nz|4y zayzu~r30d_GcSB2?mW^;f2*%tu;xZDBKJeeCM~6XF`3Pb4&9cAtfg_FpSlbZB^@B=$s<+g| zJrMP}>6zpTOU>{o#Fnb#pnxJIi%gFzcE61@(M=r(=S&+5tqdGO`-iTCe<}D&7fqEE zyBn^ZLf^?o{qvFrcbhz; z#Vdm!H|+5KJ7Yf#q2THY2G&Bm04%f!q1WqSTd$_iC;%f>PE45s5d>0KVgpp4;J3=& zJaHzq;6+IQ(X->7%Q zV5>BnD!6K>$y2f@mdZsM&r3h9So8y_3J(ahlhBgW10?dHTMvM!+D;dM?XAXo0d^}g z2O#LO65kH5*XQ%$3OcqQWCK55CK>?lr$4H}Pj^H@k8C=z;&&g`jl^pD6?qrC1_THL z==uDjUTQ8yzqG_^J{$kM1l~Rxx8O*?o=wSvs(PZ!8$O?K(7dS4-Dbn6Z7JD%_Vu=s z$@JJ+;Oa)(`z%jZsv1aiv4Cz;@jaRW*|iQr#E3LLaxF_S;+e*J4h;1jNOh$ni~|?I zj|U2L`@nnROfU*PoDWN{Q%9QCH8N&pe$#Ch>vRJ-2y=v1dkS1|PS?92x7Y z+ileW_JALEhrH$~eC2(W+7e8K{1uClyz757u8|nN6v5+Q*1HuEcYFrlbv9PG80g*j zVL^Jl(md|RYT+OhGhSx`P1_(Wo*Ge!nvRbww8~$voIiP@Zf3PWUgYcWztq_?&~l|8 zmg&sIl;1cfYtkjl7bgn=;vdN=o7S?r$FkvI!PS$WgL}wlgI3^35grraCQ~8(u7Q5p z8~yq0ZYR=t4bEYozNn1d*ST-a?E9#Hx>N$wJ2F6eal@6{yvlDO|4da!24`~MaQYe~ zau8WprSq-79?9XtjjsKTe_71dDj`5kA-CoNw%j(^5;W+04f&M4rR3 z)csJ_s@apb{_fB~P*Oe{adI~CRQ_Vcc<6FUjp{g-(kUf z4u{Mq+`|w`t6pFnqi6)rB5lclRFQyXTAz#hQe~9SPH?)E0oOBJ>5MV^?jl&r^Yjud zz}ba&ovYP!4T(rP1ynw1wvPf3P^ z(N3_IJ2-OdUa>>uXfyzQfn@yyFnZ>J!nmYuAm1f=0Ia4N^d%lZnR>vZ7CF+yRTs9c z+MsEm?N7lu5&MX9|%;x?Wr?B6xfV;{4_Ho)aMVZCn^+Xy)>{$>Phz{dax1>O(*t&ohkP&Px8# zHsDla=g;ramCykEZm&V?Nzd&o*UrT9gCyq4RSIPsu1&iXtmdXVH{WO| z#%qn!k>dalh#*z$2cYp@;TkOZ%Xm8jc{XBvQ)thM@du0rr=#;3)mo}qZxH>Q`~Lo3 zaru2O5v_mQGS*sfDCBdJ}0?7@6tr@$|bMi9fyypOSH0p*se1j`yT-W|)RMm70xh&q`Ikq+c zaC-PRqYVQqjx+%g!L4OLcv*SHC7{d$TSMq7ld%&4qBEHP6(ttUH3Tbh9agR-NC0~c zi4epmZ17FEx)Br{V+=gzN=5>0jQ~+%ZRGc1i`sIBd1*s%>x1%8nQW2y!&(Xd`uKK$ zpi}oBz6UL#a8V=A7CiG-6&<+^f*^}px7 z%IF#&xua_E$G!m)Is^9sO(o&;$9-RNxCc};)jmF}Q$HeN5R;|`o$#$TGg@Zm&0?@X zF`nMkG`X{U*Zkjz*!iZ+RM!(Q^N+s`_9GpD!Zom74WP>joI{4oZ^&Og`3#`{RGWn5 ze2AkGy$C0AK+P6rIfIUleTaBid(h9F<(cVGVSg*F_^Dn!CXM!KT6!$&1;QF}ECLWE z7XjyY(9*P5FQQ|LCIv~x82`nXGCfRUQ0eL)fg)BS2>{+)}{29}b`6wl?6 z%M=AN$%%F!!N1$<+(~_|j5iW5DgHS?!^PE0ps7-ho6itN)-KmAk&Fg&6m7z1Dh}CY zeOmV`vlN_3u;KX%>sMMbx0&!B?2XJXk|QZVR5=?2n%fJ*?+2S%eEb7+JMDsTnS5U+ z>dOD*!3Vbb@?v+{xE^5`Ldi#@C4)4k-fH|$FMe_@9WM^R2rwKs92n^*=Cg>A|VN?#eLhoK;;Wd<@ z6ld@E!F7K!Kyi`tsXi}UM_N=IBGP{e-!C(W)%%#kjGw8AUotf$o}3R+d_{7o1kPV% zl=LA0io?sR(P}7;Bmo)i&JVd8ehykNusO;rnDZV)pMuxaSB$RF!lp%Q4kgjOdR)Jk zNnKav=(_D^DX3?YN{k;mS2y>$1oz(#f&(qronIy}s5$IkAQ*~^$6zTVekkd`sOrfl zi95<9d7fj=$WI^M43?@!*`%>5)MJLjfBpDQO{%_vv5XHAT@VPBeGA!3y2?Lp-))eE z3I$h$Nlwu$v3k=aZ^)F-r<+ko&E>UWr2VDjf{C$ZnGW>2qvU%-ucZQ5ZUMC%%Q7tf)GFsq;!yPaH;KhM z=Y1g>mfK`L7iWYO_KAK2qfY)l^C_>sl)!wc&>U|EBr=_gIG%#TiWDDfB1Q_%au4qI zj_$zb*eR{Rmz_nCMU&s~ymBAa6UU~Xa#Q{8={B$hE=mW8_ZHXS9SvCcFs2vN_uhzp zwfcszQwb0zvxveJw(efmvE>)4aPxhu?}bv1;DTt zvr;huStq{`Y7uFQmOFpRS0^BW3aebA_pq6xT0v6Ev@DhV#() z3`Ps?Q{IJ)xomxec?G>X7RP164QerVhSB0e0GzG*#fQHcGuhuM9wffSlB*&nzol`- zzY#qtT(Fw3vbK72Z9I{E>rC|`W^?uaId<`4(K{r-kuFtY!3*xRqz0qEVY#Q(p?WZ= z)(7twuccLv0ABO^sS<3u6z2Dt4ex`fIFIKY71yH*2r$p-o|{Gy8$%O)y?zcWbyLxM z=^hG-kmNiS`+Xej8T<FJkOR1M+?C1XJisZQvRUXqt ztyFkbj%==(X|7N(zjjipBh5PS;SiW`xPLY1tb1b~i%k$E^+XjrNVWh)p+B(ao37|fBQE}E2Sfs|e%q2{5^Gnam2g)(AAKK>;@Co(6Hjn2EESFm* z5@=lo2otz>Azd!;_tjV%@iMY~E-o)|*y%ywR{Kk+wqw@0FRfceFu zbz>jjvA1u;O6+0B6Bd3(R8y;LL@Jkydg_mI?91={=%DzTVKRm|oM6L=03HYJ8G!!k zqBY{`xa#O#8$0&$PepcRY;OF4YFh{ju^9v({C9<#ByhG2xbT-^^(eXXD0*T zrS?^Eh8ZTNaip{|Yoe(+#^oCs9V+-*o!5eP2y!vYti70JN6%6qkTq~k+mC7*G3))2 zZ$&gi)H*a`ovi*i-vyZ9<*Ja43q}4FBB9B@#>6sX*iE9Mug>a~uC~v8GSie2R zL)s&hMWf4NiNm975*(pcAAiJd7-w6RK6`}32?3_fm$|RVU?KXY@?QYZ7E{o1^UM`REFk+qUHCiq*N}-_h;MShiw|;x`J!YQz51x z*w5>t_WN9dD$wHu)64?}{0)-CC8YTrOpx#j;Qu^4tKc!XRNw+zM{5C5pBf_ou(CsJ*=f@CY4wuS8y-0u=j%Ad-HedG}*&}scEZ5$2 zElpDgH7*>wDbN{`JvOHs>YFm%XIhsDP0YZ1X{cF-~lg?>?imcEt$uRaW1Yg>t6x4E;d&`isZLtLCq}f9F7O zJVggUi*!lxSOv&X*%)P$5hWKyJZ~27SV8YQ!vT|ar-vx#rjNQBp#In#eQ@M!T`6VsiaJoV zEt7X(PQEY=*(D33IP>a|WZ}5CV>6+LEgX}k)dKFmir9)il}Cf-!paX%J_YhoGK7+O*6v z_ml+oMJ@zNiZxzsGc5w3jyTZNBJZN$iv;Ao#X2?SVr#5s3nY z&Zha#6*$(jbN~z&sw)J;knZ?9eOe(BTu{$)nit#`P%1y+3&i4MTmbSpfYUt~shHrA zg8i5OV9w8RshZ$wM~tBgJRi=7fcK(zRXA*-AN7;SWp}@-Wdy?TSWo(TS_6wVEp0-0 zztPjmfK&7-e_zjv=KwXVm7ifE6Ce6lG`F{bapWOdRTlrr^ip{;5c>80zsR);dVGPL+^;6oW^`zMR?*T<|;73T_=!#htIW_ znpYn>13yv5OJdi2x3@?A76?h=4?T~L&J4Y&nH|xmSM%GMB?x=AJ+y4Y%cAIE>)cfi^>y$t}x(VsKF;Tive*ZrQi zpVAYUh|YK~t&~v{Bmjqh-{NJ!7ALiOm>_(5`!Y5_n{MCVAG;I+!%X^g*{==jZLqB( zJ{d^XG5BlOhLmDn8gU^ciQlW$_rd0(ZNG{vj^Fg(0Fp$9;}!mHAM}8z8Vw`n_k@v3#|LA|ey!WYIC2kzJ5#}u zgZ>s&5B`%xf8AH!kVFF8de4rJ3WbVYck6DA!l(Ll%H!zq8L;1oL=zbQ4Tm;m!XnT8 z?qDAscg_;bqT%;y9ow_Ji2*bmQKri4KG@|_WyPS&3@ADY6mY;wkXB$=2Q%P_R%BQk zQfWG*&31rpH`+CSe^9G;fN%mI)Cd0nT{EP2$g^n-fcAkJ6}|1&JL4Llf3sWj+7bGg zN`B8DHJeWIgTbzshVIwtk{9Ot9a@Q3iPiS&wS9Qd6fXgf5C(RSsSl|Qy$+l{Sdezf z=0H9L9j?EqTH!TXnPCOIL6fdUAS8+Z=A`Kl0HJ6Ox9;2ierQm{5)j;s{c1CfE~Q)P z#TqtcpO7 z53Gd_piUYLU1%_K`mJ8~U06g zuy(PAqXRm2(f_IF!&>;wFHXaD4~5nsb9sf};K!#}ncjd;Sr7-w_i$`63mH&H#L@GJ z3E;iyjwdMdedN?T&_tY8#(jySgC%1x1rsF*kK?}rar}~j51=@DPs~CGPy#)3$=&O> z2y}11=A~{NYThgO+e{Q0_fq==KqNZ)Us?+FFAFpEc5PS#+H~k0FpOb)U~YJfKW#9q!UJ`9 z_KQ8Ng{_WIHO9p5y2BCBl(jz7wS8C%Gj2QeHd7ngs1IOO5p?qaRB_T|Chmyo+h8#o zego=_4}OA$IBfBs%*eA*vqR_UaMTA|_=e46!yiYGi~cry`yNXbM78((5}3>(dagMMT$KrVmz8Ll^8P zTKy0nP>M~h2+`^&z(urDEdrN9t=q8j3K~sXSl}1)*C5|yv5LacG74ZE{IVH^16VBp z@d$)-^(g?M@u%X0$M*slqP>BSzeWI(5JfcWKrXLyY-0Vv=ZPAfF-(L6yY8bZM-JqbVo>u{0u7Jv*?3TL<%_QympoD0Fo zE0+;SBZ}3-g261r+nd5F2!@Z9Hq{Fs-_XZ&jAokNlho~4S;A;Y6by33xH@^Y9;|Z4}fT5YGnfWB>QgFhk|ihLA=$; zA#-zVhJ_J(b+X+l6!BLl$5b?VH)?;j?iAbq;bFd3*hbF&5By&t_J1NTZ|{E>l6Ekz zGtAYkb^Y*oQ@uXNAb=kFtXIC=EIo(bAhhyvFZC~{MMJh!UH7v-S9)ZeaW`)#+8 zC}LiGsajvEkJX1uYuX0flfm$?&>bPQz?t>ssCtYS=-U03-v)aFqRfqXeR5fS{Gy*v z+hBg4q68;*$j31Cdv32!X5}#dcLKkBVcwp@&P4@&o*GfJ3tV4ZRLKG`TvejPjdguz zT|Zu4UsNy5i!)Rrbdwx}HxN=kYrYoq}4xVMZEqgD>CZGMq$ju6@2h6b9sEp zxc%+~K3w{JMi0f&$6GAnk^>(L$~F)&+%$xOs@YY8^r(O1df9jzoGv>yOsZiq!|D4yK*aR zBlrGC=>I2)f+9gYp#Qi2zs00|m<;Ra2xGkj=#xo`WK_s`QGk0N7|S*^eeBTmyOE#l{Yr89?ExDS4Y zZM44J8G7s7?0$K9`g-f%3fJw%(e3L=Rc{6`_x#A}jv7aIlc(MtyK_=$489#T294wM z*6s1NbYi`--^!-ZPtd@s==z26e5H?D4;{1hVCiE|aCau6e0hF$t{n|!b?{`rvghr_ zK%YM?_O4mMi`0JOq?>kECwJY~;B;Bjs zyfyVn>$C9o^|U&^)4xq_#iNTW^{RTh*FWwEduJEiy;v_l-FB~hNrUOoS&W4xzBs&ueZ->`Hy`252ujxUy!8j`%i_W9dAKf4h=umR^lyWS@IUL5n<^0Rv0RF zx(UX^Oi4$x?+X)0V9aBop;3-zp7GveoADMgnoy9_Ehe<@Of`Q{kkf4+A3gTB36uY0 zr~fhjUy4H7|G~f8_z#7oRQE418XE4{+vj+ROLYR<*`4}uF*o+`3Hqf#m#gy{bR_P_ z{I(8C6z?qPkOgW;cgYGzWV%CEDc;M{%qgp+@+IhZrRmTW2YOm}ZKmsv_ciAG$PJyC zd$nN)qKW~k1yLLB=qU}gq)G@=mywfKx9bc%#{=1NkjZ$;E1&!PHXV zEjDu&E2$bnH&7h|u=?#e-L4IKr*T2=R0!zW=;#%F4cR#@{9+9v4xLsz9a9J}%~_RU z{}PBHWy(>NX_z5p_?VYlNek$r3FtHX;PbsU$PEaii72-hEt5 z&|v{F)pN6CK%N>QPtk0gkEx(!1y-%3RP6u^lPy74B+?V9WO6W{7?lRdhy2iZ(rct- z3NT+FJ%mc82=j>{TL$?O%$E|*NF`H-0D|G)jsZY{0AhT71Nm_NKq-kk7?n&7=4+&H zQOSgp2&xC%t*B%gFyA0Oib|#l^G(v3sAQI5ewp+mDw!6{Cu9?t&L*56T7`5T+5x$x zGOH6TxCZ%<1vpf_%sVonQfwfMv)6onS!)CY} zY#FjZCs<&@5|9Tv!GjwJfK1Re5`fA;KIjA=B3GPJ8S+CX`0)VpAwP72ACYTPsSNp| z6MO*!s|@*~6MT7q^nr}g3C29=fHM~4%v4-Wy<|%kJ$$~^TOx)46WI<9J<#;Y&fCUL{U>X<5KMPXXsNjyRJEaN> zH91CNpe`#&zhfi@%dHAjk+i zpj52bqG;ytU8+DGpkjod)S#zZZ2yOT9>8#5E8b(|?EiRKmJ{(`#O?mCkOU)c!+?AH zjhbKkv@?dwRb;e+S5(0!uQu}CPdfvr!5j`p{cwzcUq9{a*e`b9hoNIiVW}`89awsJ zj3TRG83dM5qpt6Sfyhym-amJCpaBbQ({^_uih-hr-++xGSj%`QccJG7}swW?oO5<9t>{t*amwH^zL}@QbaQi-ppVy`nHD{!dUo@|1wRj_|Dvr_dFT!XaES=2coCq7QS*1^^5UX=W=-p` zn<(Ni`kuNoXv14p$Q3JW{LF2&Pz`to^5Ov=py+<3?5A1-q-je>@V+_GObg~A7Q_EN zHXILnKruh{Jja%Q3OI%!p!RSqgciLs8*~Vt3BaAAyAm zI}qN3n20DnW%b!WF%bKt`dyKpGlHshhliYRVBkN{z4 znefAE{_hBJ8kN!MI0u2$fNx)(^lAe=DrbLn{I-r>5xr~=Zcq(7y9}xTJqv(D1q@8r zg@=)cFz;Z{2D^WVF>nXMBUr1|o}8}ZJAflURWB}oVt%^4v95m#a2(Jefpc=MUy4Kf zg@c$U<;%0%8;A^BokhdjEtSFmr7+Dp@H@w`u-?*i>H#3^#We4A64<%nINUA$Id7$+ zKvoL7om%NC9n^y`|12vAhpVfUNGQmgBIWu2A^p!OJkbAOxxoDgvx3mW`RNDO|1tgt z5?~E&%*%h|{|E6nPEmv{|BFZo{!d>*SYaD^{-2Vp#Q4vl^}n?B|12cM{6DX6bmsE< zy4~}!*AJs3KPhT6L$j-M`*OQNK-TSMTOQ)_~-@28X zZmW6o>`M0An{0O_r~Pt$KG+*Sb$HP-udd31`zE%(u)J2j`R49C2z$+L&*&>kOJ|Mq z+n2MN-0u0>lki%VZV#)jdDeXD-M$Q7mA5;tCE3FoKheJXhpuqz>rY>IxHt38sB{nzD~eOOqKc37vr)sIy<^NWZ(3g#@J{Yr^3kSdOLe} zqh9mI^apIm=k@#h-c7y5H9N-*TfeKydZ%;s+0Z{f@%Pt#b9h~G#(qP;J$rM7w^!|M zAiFyk&0g*HVQ3kX^Oh?OjE6JlrZUv`o-5_6)-f-r59Wi=>%U&=5~u8$XU8L58v0k` zy$PU)+3f8Ast+a=i}TN#ZLe`T`Z6ew&$Nf{XI-WJ+3~o&x8dv6^;P@Yd^kPjxpV*J*?=|QSsM89%1ZLf@m=Hc>$&u&hxP(wmN$c50?Y6^K8D{-A+1BeM3@>2fnYWM_0b|`B}2h zM(1wK`;vp;tFt861j|BHO${=dL0+xTyVBzkx=%=s@C1}GO`(p-$RRPW(0L7BAOX`ET10D317Lt(3OBbbGe z+~$d1W`y65M=sNYucSmR({&6&k632#DM(SYGQE;kPb^Xy3V@XorA(JnDj*`1pLw6)Vp1C@Pu7#`2?xWEL08j-ruOR~g@FG$4FH^t(vB+O|U9qTNCNAxw zh+n3L0itMMCN2e|NMELb0iq~hrilTf2w!Fy14PliOq}$w$X+HcJ7ZD3Z~zw33xmX> zdEwlOMe@RBcr1z+PT(klmx=Q?7QM^F>xxD0!l^=u+J)0Iir8f;cwC=1eGN44{wFW6r2S81x9k5x(oT%u^Vsb$ z^m(jySb=<-9Th#(Vn^*!s@)C4zSOJ7k0)O$7tAaXRyPcN4x1Z>KbOUg+I^b64MUvU z+D25LV+W&Qr(40OADe2^qG50EhJJKP$bZ}eY$a{X<^LgYJkQILAO`Y(>;F+q%He+i z=4DY^qKzE?5BTzL82^ox;ay;sliBV2pT(ri_un~IV5LPLfENUwU-AL?l-9}D-w%6s z!>JwSzxp0^sWAZ!IQ7H9=&1|-p}+Y)d)j^KAUhg#-5Ly3(`_JM={i^&`1rf*e-d2_ zpOs&vZ$Xhquqx=6nax?RWwP(=3J~25|&zt#LF^PNxT*km{tqV z@mgvv31C_+pfwJ!BvuOvOshmzwA4BXSXvbVr>H7XNtmL#5=g1E;T2Y-))pfXiIdKA zkt1o8s4amM4$Sb8c7f%l^F3w6;TxgQmNJ+A=VWCW9h0a3IaZ#n|9BMtQ&J>htN)8g znfjj>G?rad|7)VG90nJ@YW@1stAJ!5ViSyng;Qb|x<34ZG#2x}{$T!*g8h$Q!%hSW ze`t?^TDKYI--o{({Pye53_hO{#Seex7#OUhSA)-7e+p{~76Q0>{`dczf2~52Z>|+f zpdS-$&b4ed~mFvC$7bi8d3?T^@>Q#N?? z52qmVvXHW(Bthx>QH4vXf&`^+`eb5v9pCH8^KGsbj@TGSb&#O6DpVkPQ>q|AvmIx! zQ2zJql6U%ijc+>Ri{=j3uhc11GFU6nti+UZJK>b|JP)B4L^4{{;48=Kn|n7T3rTLL>h_Occ0`0gDt1t7L9>g*^5Cxk{)#~3O6==F+wXN#C^QAnC?+jrSkf z_7aBws87WlrgI-+_D|4@To}yK-^A)4_u8U;JH>3I3fg?$U4pEp+0_%U)Jh~Z^_(FA zOEaz0KX7$c_4(vK%c)Dqm^}F}2l1b__TLXk+5TT5E658f05F#1l_-Ej;{oC5@P3O)%o}lDZ&;bU%hN zNcni$F|Z(}3HbypT~jEUn5roV*rzNRpXhfXN2l}M|KWvY?qcP}f8~^<{NMWj6q0g$ zDmaywDQ7)MV8s(AQF~55yq=5Vg|QT2i^RnAL?tGwL-9%k(f`B*f~DSd;8k1rl*5zT zm;^5}2<-WE@r3Lni3>KoEFK20TR^1HPInX9#e(l9&v>Hql@Q$rS_4uicx|ihp=S<% z={2N7r`H?#aI*Z$1VPlg6H+@LG=PgJx z_S1wBbY^40AMSTGwjTeJ@^xU{|F46#k9{M4(07{XNg*^LQTP*- z3*WM!;yrfk2{V1|;@wxv|37=z+MGC#tj|~TD_oPQtv#D1!Ny$t&UsIjd?8^HhJ;II zk}oL(1{@6b*d~x{?SEgjWCN0IlFTJD=e$uBBKBkR!QzMb3Rf#beJF|9%^t!=zeM^L%+y*w0qPuO4`RlkmLfe|>7<)FB@d@7cmHn9Tg#DK=Q2yS#pq_mHFDuFUuQj=> z5c@B`z5joeuz&quua(r74gj*GDnI7@H$L}oUZih}^sNqH&tG(J^LpJycUo91gTLUa z`x(vxIbzH5MyZzawn?Y3WHie;n2XQzS8jcJrvH~x{f<1IwEvaO{J&PJl!^T>zrFu? zm9XFctD@FkZ2uKml8&84WCsh&{ca~Pz69Un2F#Z1ReXWjEMNCnt+eP82H&vYc)>Q< zq`D$D_2P~kUb+*O6W;%sjj-8rPpxfe#g2CB`YYBo&$IvKy8In^JZ1kSu>Z;aPg$b# z|F`EquM+l|Gs$lB=f31+R|8r+<9}#EFAC?EP|M~a-)GF!wzf1Dl{{L4A z1?qQ8%}8Xgqhn%`_60(Kzr=96d6}dfhT-0XA|}`&Uq6wLxK6k`b8BKBPn_{ya*Xei z-}&}rA34GA{CEUlT#l`Ki(c-XN)x83t;m}nX4VCeG<^_;+2mpnCNpj#pScxH_ljuF zNZ)rYXR)us(K^~8zh8`w!sX)VPR9Kmm#;XoX`S(;oz~SFapWt@KU(FLXvGv}UBqLA z@4?(Pn|vA#34j-mLY^pGr`&nrqewTh-bcWs@iDHx` zzuQ}fJGKVv;yf(olmr4-nDBm*(`snIID8&=)8MstE_(=o$4c03pkr?l6<1z{fFUxw zyA-WpICbuAmi`V~))oHPR*;b_%o8qg`A^Z$tzi+*I;QqoDY5j^uj>qQvQ*4sKk|lY za(|T9o-mR@?uAjdiSR?w#vjYc==o7z9vDfJLwkka_R$=hDsY5P!o0k!XVc?0Wv_=e z*G|@MhTV$ELEGNo&K_=SVtY|8x$mv)!1tV;e(n1?;Ae?pd4l|rvd90V$=Ai&Be6&Up2FI@t)iAmJ@kg2m7%9$(&bt5-5yXJZA}wy z|05@>%fw0U7Or2UXL%<9qO$1c*31rVH`RcGWky$77kxX(v=zQ9`Wa&qPT;s+mZ|oG zA?^W#tR#UIWXd$i>g|}^9!;&N=v%`XHcq%g3;YLZPLOV+Vuq?DP$*10Mwz9DN z$F3Dlx8$o#@rTiJJa*C*#?#>}@@SZCc_BWUWu;hGN@{Uv6~WJJHwC;Y@$I=d3^FrX z`_2MSNL@ZV9G^iB^RLWNVZEK1F$qF{oIQ#FlBVZ(d2ItmGDZ$>7}-%VexS?*Y`8^x zZHpr}qgeULMs`Na+e1Fjn9b#rJE4b1$`>V>hYtSu_%qL_KUgKtw-;E%V=ut-x3Gvu zOlN2(w?rPnnB)f@tfZaAWbPg%2r0fd%oxa?W*Yk7=RY&gDK4Y$ara4uC!YUQ6q$ei zQV)Fl^6_{mF7PDK630tC0l^KSUJS(l`Ckz?hdL1aA>tX+$g?RK zT*PcS3(R2Pt&5|;TEXUM*cTmo*qnIL6i;=AQ!B9WXc~k^qNv%hr8g9#B*U0RhDb~e* z(cz$u*Q2Ifmyu5Ht+$tfM*+1$fD)1kFu+B!qZmS>sLQB?0eE!(x5Xe#W>l&PkXB0| zJZ_F)MMgkW7DYo+r5Ft7Fjsu=D5elhVX*!zz#;|_KG-pfDj}=pkU5m7Mu=*8yquVq zfyrd9I9syN8%N@VQksOJ$xt#X##4AaS6))aT8Ri@BcG9-yw%Y_0;PJA<EeJg|MknpD&L$gEh)5r6d>5kaNw1SsEXUcDVk${iXE55X zbwnVQf$k`z5eTsyDWnrfV<4A827z=2np4OmkikF;3N;ACDkioXMu}hz2JH-?LMSlJ2P1Ig}b$lW0{{Iq)L|NtaX+&zFLvQ>q#V zo>P!?OI7E<76nPiR1FUNL_yLuRbFjvs?-Kis@mYt3knjQA|AY^N^KCOB3|Pi3R0!= z8mBsK5S=2K*Ej`>MW#6-P_&o@Ddei7fMww?F4TA%&wkXrwZ ztuPu+oY({Khvf0Z`VaqK#toc(@Jm znhBn#a0xmlPSWk&w#?pX+n@;&AI7;IO}$YniQfLyGe7lid)F6ck_W8G;A}5&N61ZZ zZhkuHow5n&L1TDrz@_Qxo#sXF_7iF)d5G^568h$jxR&MCr{8IA(lP$|9KF%j`zP?dm7ZW9dlBt3kKj=zT^V zQXFb+-jhGc>7D63I%ccgGjEY$bau3{vmGUy{-WLK@$|kIRA6h)aw)N%5V^0s{g0#KYL)p53w;%?*ESczbZ<(Rw4JlE7iC2 zA73XFA!z1F^AldKc6!Z5Q^(z!#1>jj_@V3Qv#0Bq`h9C~wp1FYH`PbYF-Ro%Llky6H;2(Mh9p(=(?n ztxmDY>bm>6Qo8x_ae4FQa&jfRvm4nh6^0Mm<>+)a>790FElv4i^h~K`3?EvL&BxZ= zP--6zy(G&?B(cWv6zFR%J*^AUBl$)_s~O3;CJAN9+f>FA`t zZuZcaVqWXSbeE%(tB1k-s#It;M*hvo$RC}yCjHY+rD?89H-@e)QZg_b2(`7lOSGC? z&-BT)iB@6RD?BLGi`IEdJqfCHe_*dmt?B3@sOevopku3=<}cdI)5fS#uAo`Tx(FT{ ztEK)oiHx?Vo-UzA&?v%{t~U!9)bpd0ucm1a zRIlOMr;gmYfBaggP1bI8(XF7+>OPLq!{lT6@$*@4b%kyo`pQZBvVPe+J6xR3%7^D| z>5DQn27UK(Jg*#HFIQ)VRZz|wXSR1g56-HZ(>iYsrH_ZLb^q>stlL+o*WJ#vsC|EG}N|Mi0x|Nr&$`d_N0`oCOy+yC_{p%A`s zEuTf7yH*Zg^kgA?(K7;u{OMJACUyQ2JY*gvoNVeB2Z^J2&I&zCa#_ps@LSgA;Y$|H z8N~T3=B#?=E`KwK^Vhz=y6wM(4Ew)w7O(C9182T*{y$~8{AT}OBjmdO;C3+bR$)<+ zD^ji#P~jl);SsxbFaW;^9eK+^9;r~T5K2@fPCl;d_@NWx z=qimSJDx|@WMT(6vPL7N9j+U!E>LfwjkAzYR|&aBc=&ksJ9k{y#-&pwTDm#_u1#LO zk=pQuQ{x(|Ko~faX+C9{QtBI)arsh&v1E)b%RI_hGV+d>lb}+$sAW>k1+IQL#j#W{ zszPGtG!{n_0VtG16yOyAVI99s7f?w6XDP;4NPOyaVhK}kzmZaE`U!{%B4v_ zDx^`jemw$0K&s@G;@ZR{8YI#v38=V8cI?p0ONa)o%%*{KNT<_uU<=~H84zv6<%U{L z@eB+A6M$H(fA2uy8c?{}K4&RG17&K7GKpiCph*xH*WY)SVR7y(mSJ1~O$M&jd`~Sw zD}#coc^++orhw|CyIqsM%ERRM zfcv>do4H!$UBm{V$b5GDfr&_F2(i@+rRGhK_tZO-}9ZaE@1aL*+Jy8T*f_Sb~ zYB(PBp~}41fS{KlzRY`w2)Y9CT$43$d-)9#nuh74&dCr~q*)z!uN|6(CLp4IB?DK%5HBu%r!8 z0pe89gPcJHh*NrPrk=US(o1|cZHZ;b*J>t>S1YKxM*M7vYpa`wbIzI{~XhBn1zem9Y z1!#zMc@#_#dtz)7Z%4rdp=&zp=qQ*VYR%Y<#R@P%&>A!1V*6);l(h!y*jNx6B^b#W z5#!;qLB@AR#CW>ZfT6t3h!{^c8esqHjEI*wR)JVX#A6&=fmlYwGc3zS6`~mtN046) zq8Sknff@{aoslt2ZyG8@t86r(2m4-Uz&}3}3iiFdh~VfDAx;$^M~$Z*p;)Wd@iYie zqn2*u+``#Genc*6_;;ZI53tBG?ce}NG;)Ak7cUg?TqY#31tGK-BeF9Z(g@Mezg>9# zGMw)I9@(x%FLM=Uw(VPR>gwjK>uLq);Bb@MDPCicO9RP$fpSTqMT?(BMIN4@hax%J zU?&9I%i#>KH%aQM@_{3|br!dY8%Dwd2~?!836kCMM+DP;tn@52-kv$!vVhspR4@uJ-}&dr1eToss{95{6R zDeST#t~hb#=iX#OIIsnH&OuSQrq8)IFUjcy_8W8AY_7&7|J{z95IkVSck|G(tM91B z*o%FW2L~3@53OBGukHJO63SH1QY3Nf2l|{F+Tnrl@8>dA$~;pjb}rK&>7Y!$e;nfT zf2EQFbW*7b=l_1sox{%#fAR5uNB`6U{DeGSpnpk`!2b`!%A5XQBc$}7T!i%l^LWbt zGrs?o`hV6W^8Tm#cK+Y1gdP9SP8W$6o#qwlnc|swz4Zb8f|?paXWHb_&>!u)^EeemE$wg0ep?cHf3OaAZhDKz7p&CGQGAtXS_&YmMM*iLN6@5I@=lOuxw8T5!G zUf#3!vu|~`K;5kt;1|g~q31YbtEyjB-Btbk^}*S!CGU>IkAWSvs&aGRX;;+twfvyxsBfm-?6E(bY}mgYpH)y^uG;eR}IKU{>fqwC|gaj70$eW-L>?v>YR86VH9t1MH7cX0iR{4Ha zkCg9cjjxv{wd318^W@^jwvXLW`&0M!a|fd2zV?P;W&g_iayCA-+xq#H*SZ+?x)*nz zX5HUctf6N2$LGiX?&Nl$sLjUN*R1m-R{t-yVYvXkn6`+<0G@u zcOw0^JiXMeikDvFsC(;Njs0o${<_rDtiV)e`uC{lm9HY>_H(Xu-?(mG_U?^A)0lle z7#DZX-HR`Nt+=P&OfIiK&tN20t0<$B`srYFw0~NZ?~RMjq~5K6ERX8LFt>X>a=I6d z$d?C^Vto1HT(o^S`eL0c4r`u zM%T%K)cskjS&ELj{jhU7I`Q`=NBYh8qhYoG!46Bi_rdh+{H%Z8xcT_8R5|gc!C7%s zt(R+GKbnVQKNszX4eh&P4a57(4}&i!cXgEVbyJ6brm|KUA6$1%KOfib%ln3PT@F8- z$)$s%qdV*Nve~?^?C0(dG_^O_y}3E{)xlk3e0?<=+`4tGR=-i)T5bO<(mvd2*3szL zqfVa+yVZ~G_KT3R|M5kF=Uf3=wf-Zg@n4n7_WajILdLbJ*5OfeesG698nxCXs_iYZ z?JctHEwW$d7TGrZyN2}q&$IIr+kMVFR``EaN!|Z0m*wsL&qjh6-ikT=N1k(bk*f?+O95(?VK5XiVpUzqU`o)cj8;}U6jBuiK*~U=GPH~YID{$;RlU8VgLeG z=u{}wsV3cs6U3>ePJK?$rkZrqPLQUWb?S41GSzHQpA&?s<{tGqL6>UM!ljU z#HePK&SZfW)uI(eAw{)lX(lL9EuCSf5TaUi`V=};i`K0O8LG(|f&>++Av2T&5vsv; zxC9NV!VoAVsD{c=5)`Ng+sSDJC^kxh{?sTl1Pb|yO^ZT(YOvNWL40cH3?V^#YOq!? zL3(P`8A5{c)Mzk-1mUT%#}E>9rv@u}3fZZ_+D;19i6tW*@GUNd%>Ur8YRD9c+|~F8^<{BYWbuW$E5e%9f6d*@ABBJX z`Ff=_?08@w)M8}wAo(A|qCns~ANR+)H#ZO7_?QiR9D0*)v&d?Hv;B~9+bDD_7iu+s zn(&9YF|o1&YXV~pOZuDjVmveL#SnyuW1`2GSNgNH?7s>g^9eR)h5c7$t&+0;>K6ZZ zBVnoiM_Q^r&;eAds$4`jF`sJsQyGG?+%`I#7YOVL z#(qb-@kUbHbP+aF*Y1r1D>jKzFd9O^`&MB6SbLdK;dE01yP~u0I7uW$%WRLjR@E~S zNzpPBsZ^BAM0i?OB1)}XDQ6^-qGifNF4eRwneepCk|<@Rl2sC(mRXXDqGT0>BV~$J z%@hbv%B)Jctd_E>!qc+lQBpI-!IH9*sMNC4;AojECoqA^NP{P3mP0Rtb0ln4z0G~3S zQA8HxWx`->S-OmG$rwqd%;+PBlH2fa7}gyB%P+b9uMzxbcKpA+|Fe;>V*Fo~*)hWE z@qbOJ>Cd(UkSf4qw*c5u{d9W(Z1FZcYe z>8G>&RM|Fb_S3@s70rI8)sOe)mCSV`o|HX=ku^DM>dDj6iO};@ad*gcKRmzC{j6#K zwaOE0%nJLjl+&jP@`RJQ4^1e zvSgD%&kfBW`p`1NKF-wlCP11efT|}3tUa}(E?5Eh7zgL!Fq7eIWVZ(w(1xN+mIhtA z9FoMoCMVi>?!6nm;P+1*sY$c+Dnmg76>E$hcS_!q*7|6wx+E5=zkTBkk zA_>7@lelK!fwYLDLkQ27+qMeQr$D-c1~1KFlx_6>4AtKYxOAsTOpvn$o^KQe#jtM% zFm?7~&y`2N#kM{y;w&5w+D*rbOejc4n$rqM?TNQ}wHWP5bNp*Ud%qz4_q%uh^Dae~ zY=2xq*fxI=TxxXHiY^&3Tx7fJl?`oVD&c?0&f4Nv0v3I24lG>h*qPc$4&A_WIFBZS z4Wd0-G51O^JmtAi9?Zz?6=d16q0vHXM>}>{#W*1;c9D`vH2oH}OBY9gF9eXs3uffA z)Wx6&W_y6*gZliTIYV8>lvF4I#EOF1H`4H5qis9%Pf_{{i0^TdS1!zqQO8B`iMA!z zoQAdp1;s69UTn-RfQH801$_1+_v-(!EI)xxu>MKAAnC!dsY4nl^))}TrFT*cE04xD z=(J@l0EAeb$n2ba+#@U?z@1m=Q7?Flf(-waps|p5BP3wNg(AZr-|SgPGExzVhcpdT z;ssE9+_EsYgt%jiWl3bHj=xDoO(v}f;<9OLvJ5{8{FLEGO*r4vwfQUgPO7rB>5>Xa zxT2^e2)v1ajN!ty%rHVPQN~3lT?VxQbmVm*5FI=!DJ^w`^`8hd`!y-T0=~>2+7VO+ z#=ExL^`yW5DC}asKmRBecK>{h3IwG&`E=QQN1N`x32pax1QFP^r#L>2{+A@b{~Z|= zNTFc6HYo!nfFQonM-4$u!HCv#t#@=eaCO=8zvp9ieJ34FKNFM24CP4|Ti}@U=8s(;Ad}&^;062_ii(>(Y2`ahE%Xj54sAbo zmRhzL4jl=L+=wM*6jxUzFzahs@tubjIt+&~Ks$O>p=||`-Ngv^68aqhDhp`e2G)$w z;g>}^;Ppauj(zczg_h(&z4?G&bjW!5VV+g|oWt)2hx-Tbelt(5j*i~_cD$#-$VlS9 zz5A`a*ThKpD;|b;oQ{6qnSh@dK7To{b;(u=>WUT*^wXOMLkX){+ z1$Vg4?jK@(zSZAytyEjK`ul(*;9SWzaSoizazkstLe*{R-j85~6&K;5E3BO8ewG#1 zmpD}-Xyjz6Rd`r4#r?#?n(N*F*VUIi|5sHi1ph&)XmUj%_FviB|4oGD`+r(Redzt4 zQc10pp5^>UI(Mqmq-gW&f_nB%0G<|`xE(Z``vdQRNx%Iiy~)Vo&7X0>iT#=PPwDUY zW+>NB`RK*hC5i5zBqicq9=WBNNcyKc)-Yb)?0==KJ_U_6z_q38cpT~VIN{&TrM`utx~q!&N;LFKh!!>Zqym1rS@FDU{UGyQD2ZG9=iO)OK)@QKkcE7&|J}L;kRCAHh(hQdB0)b zC01dU>*BfB_grh9|Ej(q{tF~e*8j`pk}SjT$o`kN=f5`+mg7Ixl!spbsmkg@ZvWst zS+VKoGmm@Ve4{n~o!M$lSpbZJ{4Lpm6-2^&uuP=+3%HN56=$={$AYF?&|AXLpyf1D$5S^R3=8c1*wXcbO>*u!6(>w{n~~@23hRO>Y5pJ##q3fL&h0Fgk7Gvtr6O_|>H9;|c9&H+ znno1+*zFX;kz2S^pua=;@*RuR84NY4tJ&e$C#GMRWR+;b6lR(SyXbq!@QB&_Q9G_H z(U$KnRhHztJzBXidt2HVfR28c2C=BZt>X)80N-i;Y2I#oOC$B)LzlwR>1*NH3|~tJLOSL%nxnKnzk*jolJ)UyA`t|ZF{$O z=uXT$SYDLLj_=L+o=x>@-_Kx=?M0g{4EiGGCpdXUpB`^b_OaoDGpQ19*l_=`g@PEt>snUO9lRur;f7G!(m^F6njHW{5 zW_KjaGguf05^u#I-SNvbyVqMjN(4I14rWsoTah?*)nwU0jzj#rkUcQtI*;v+G7Y2bQhRcwk zA=L7L^q>DFL35}fhIbN-m^z+C*w90~rj6hyZoO%~6POsn17lQpU{1)@<#yi;Oz@^b zSdgT;6++(#3ETk6Fis-GXd`2Uh(U54;biJFYv=_d@RX)24Xp^JB2D^syDyo6h06e= z3Q|l2;Bkm?NF>)n4>^%K#E2Pg2R$JUIle{c1UTEkzAcVin8J4~g=zSZ5S9fD!@#K) zaye85biNyXoeKqtBwv&Mm$-u(%txC_O)((gn2tn5{K{m)M?YB@QD~d_zrFF$X zkH@2X0RQ3MhVv1Xj^3_U>eV?3{ALHu$S~2sFU#wtm>4=}tT^)sO~o{ops9(h-|;v{VN+4&yfY~lo)3@4*v7{bF?c|;Pf%UB2t z`E;!Lwoe^NK(5WRTs&a^iBMHcRXJ)>q?=}(Oa(JmG8qpETNSfav(r0_)6=o8RV>#X z$%Ro=;E`wR37tqv&P)i)YM=08S=E{xuRvN?apEo9n)EorAB{iB_lC?Q6t|WUp_Ne0 z77`{jlaLflVzqipNVxsg*v1ougob5bXWL(gkTguv*n*JvV;Z=?v+Pkm{IZuqhH!1C#0uX-G(WnABiM4k0x$X^$bf zgw(<$Rxz>F*po4>#n600D&b1Aq#04#o`PwtJ_AA`N@Mj&bhd|WMonS$Nk|$dvBD>9 zXAgItI@=2FiSYM`&e#;kghX`4$_lr8+)przj#*eq&j^XAjx|a5gjC0|ScQjic^a6; zYJs%8y**6QxoGV;BI$)}esfw2)7ZAsM_wlB@lC8pgYU&RSA>eYU&3cM)OiEAM~Ju^>Kb39CZS@j8hq3iA!4=aWsXP;R9(;_iM46m@sDeUGBq*Y3eeq}{N{c^QG)DK#|Gsq#FoM$Q-szLsv&(%+ymhN6 z?pG94@o_KvznpykUlxnm`tLnNh~b^fwK~-54cfLQZaav`pJn%?7U#GKZpYP^qWUR%C_XW&>mhNoS%TK`S_RZKgBwyE0>*y7y@W}8p^Pn5a&{1_HB zOq&j{rdcOwoP39U*}iF7cG4bVqos8$)_%mEyVQOJ#cBHy6yIn+HVRKjUpElB48r_D zbjyG6fQate8ACt<(C&tQZnSm1FyQBPNXxx`TCN`*2&Z=)#WOtjgI2ew%J8?b-QnmK zAlTd4^?x@1hZMq7^537GW8UEZf*kq3lF01D5`=`x=Kpt)GyLP9O#GB%yv6@6hWx*h zR4kXkPL$;A`_K20YY;-K_4}MkExWGQRW_}2tzgvQhpOU-rK+~nXJd4?mGoL)KHz&Y znSGtk+^Vw66WsE3tP$O4`8&1M)4HuzmF{kd(6y;;u*R|2p(@_pbqdO+-xlq0RnPZr zIyFcoD4Xnh?T1pn|M_;?|J<5%3*M|>@bbdrp0vib*~G3{GlNKTg?E$QOr7*7 z-ucC)u$Sbf(J++iTCS`{&P(2yj+^VU`c+z6jzY+4VQy>sSTC0FEI(|n5BjcqXn0lA zT`N*Y6a}Yr+q=~sZrv+M-!+IeGx5`K@#VHuy;aD9*4pNHv@x&zXJtDbZLZ30&on#c zVsh7ZZ}*+GA-JMl!}N-XsC9foJxl-Cqc`vWE)x%`*l~QMJ zUOaixE@6MzK0M+5x9sJLK3VaaL zd+mH+|J4`Wf03Nc|3CA_AIcl+zkETKlIuSv+5G<=k`@(-J^v4a&`94M66sHcLV7#< z%j^2(ulCvhlAM44_mek&{`U6%k61pt{tIFj|Mgu&@PBYG=aPNuUWxxhJ4^l#?GeSy z-`<6}Xq~kySMNC+H&koHc&t2M{@&A*(8UIH%O)eOx@0eUV&(!UY3&!bt zAAj}O&*Z}VzjGJw&HpNwll%Y0Vj=tf`&}fJ{>8?@c)9bh#X?C;C4mVaBMw)t?W{+@ zO99H2F$5y<;)J*LE4skW0zwvRA)S&Hj>U9B7CP-EI+C(brGS8UrC^}q0MpuYa^7-x zt>nILmm!IHK3vbhR0>Qfn2wj*QJN{Ll(;39ImyfO+?DV8Of3iMJa1q)nK)~vEC)*Q zq}5|t1qE!eBUubp6mCv<8!PtoJ9j-un}rlH=v@U0Jcqw}%^e^GEo|0o z1;CpQ*%S!p5s>9#TseeA1l*?Y;7B1{K)^kFn|g+@1V@s>Mz?E7oV5?Sfp7@{gX;|f z7s4_$AqQro<$A_Wel%pj<1!SK!(KR#+=F4$6$G5NGfEr63e-_vd0hx&FqP7J(WA_S zKqV5G0L0h)i!I=1h6oNX4h^hAJvFEYb3xcS4b)oLZ#c^-djf+33I(BC|87C&bm(09 zTVy#z08A2r$%%c4h@cD4f8}lc>$$tw`e6r10a}&QnR$ z0+^BzQ+_pmAE>OR4o#O+ns%9mnnyrIN-~j4AR$7@Pp6hZ!;y zkcp-_=sr%6;g;Z9}xviNHNY~MHCPru`7Pew17u62OVj$hyofUHoqO% z-IM|rBz9>Zm==H_l{onoQ9ywxao#JU006;p$}6Ja_Gq$+*sh3z(}@}~^X1`+LmA>~TwnTX`ksV)n41!~9=~xp>R8 z5@=&Ceq!1ZXk#v(F<%_4ZJ^>byp0;vph^R2gW!$?#-ZsQ+<02^3*nf4L#A?64V z8`WkDMfNP?b1mdrU5xpc@lXeC9#@0Ka<%oRr@zOJH{1sbNPIhlK#0erd2$KtAh^w7 z%GMY>qH7q;RSLQm?nP~u>;c`+@z540YS^L*tB$shGq&F3wPoohVKi_TgJW9Ju$2pu z(qH2$u?C|2w(vXk%j27)huZDNnSWxr054|&WS6?OUanT~h{&@A0>kL(_gvF7wFVX5 zNb?sRys?~2cnk3kTndX72H84^hl^eVVkN9jqGClys>1i?iNj1l$03IQ22tYT4|Csj zHD6viz^LHL;C4e+>de5!!pcOJZq{0($L4p*>PEmy?>dsZ8cT+iLO z43Q7E+5C|E&}mcaLtx{w114H~qn6G#K;;gW>Q^uRrXKM{mgJo7bcvZSum+2zirx z>x9PbxI_AX(X`sjJ!7UKN=23 z$bWA#0mX0t{Ewk8ydk}BQTUH_z@=samjKMh6Fmmw40It{4WCC zV2XerNl*|!p&SOirEr574BRHWuAjNvAYKtS_DP;ZlqAKPX2e^&nd=oa%Z~{$X&(5H zyQm5*P2^xBr}s2-%ThPYjQK#rB-`Y9;Kn4R1zI87b>OXun^9JWATFzU3?|N(eR42Sr%l)kv21EOGt_0e4S(k*>J;Vk2&GdKR#WR9x%}Zy=hgX z=cYjc9p~nPYllobRJ3)KZtT*`m;uMFz;h0pFxaHs-g#+HXIu}NUyn$G6+;H^)kafkILz0B}O>)*ND>Pd#m-m>AkKDO-9!(8Wb)qtsF zR&TkA^}ngyd5WCtnD0%w|M^@sVycl`5z2L}KThRrORi$x2gXGe?@!j0<&rJlt+`HT z*`|_?_iM{wDqT{2<|>n^4A~-ASxjY0s*tN@Ol3)`h^uU-nn|jds~o11i797|S&!)) zNtbd}pEX)mJ#f-y1E!Pt%(#k^CiBTTo3S}#I*|F~su5Gk&gXq+#s-fm_ku6n`7_R$ zZ1J9}IA^l2SifiEgh6x$kv;vuRh&9`O8UZ8Cd(xgo|pBpm`-Ma_q^GRsdOcqS7zj+ zP%f|1IZP+_l{Kz1^@z6_kA^ymZ$5D?8-9E9fx(q*0P5--XL2Q*01b8KnqPA*8-%(# z0nWIR4MTmTR>|gC#;T!ab-0qzs-G%KK4IBYmQ%I+=XYGohNC`Jw0wfK8LPUkDF2%) z*^tx?)h<`EL8+UH@;z6wVX0e+@&i}0fvL|FQ`Lj= zaCI29hRVSWS8{6AweuIQWYijJr?@U_#<(?9hIl`97`KMnWv<^@WoAaNp_W@|8NY_w zr|QA`x6W_v=RSND`mH=<2MCBE`Lvc65Xg)6D~qT*C$rHjp`!cC?(v{xS$D%cB)u zx`>l>ldr|UeHywCTyRHe>W0BRT@*n?lTAU!Bg8$VG+(UUd=1;T-69XZP%`KZdDWoh zu;*M9$sL6XC(GqoM-azuRAs&0cz3V?WVy$~GX=B=;zdUNAcLk?R)W|IH$EjNwD7pk zP9mt+F{=+4@afV8$1Lz~;-+aBcrNk}xOp z_t*D*{{6W6IlyhmEKAZ9_vK*X{`3cu(dCci^5SCl-mYxWB{ZaLj~AqC+-0LrtHR$W zs}-{#R{$x^^F^4f$jQB%oxm?;OS$G41kh5NWl7eAVhRqbN_zVxNY!FiC}R}kZwo)j z-CO7t-$i*q$KP?rmm&p8_Lq191-n+S%1uzs?hFug&`i8&%l;veX zb>`Y*KLuH_fyL`xk{85c(|6^#hAxPc`LTcUA8b}XYlP%MLGvz+(aC^h!?kl1xj_g6 z_6WNor6hNw6gYsXVGT1tSy@sx%q@OoKy==ZCnwwBE;#11Mv|>g&LcN9>U{L)pjaEJ z>#gbKI=yBVI!A;VK=X_O5+iR!C z?Z2-7FOfPm&xBmrfB9rz&lex;`MZl5>vZ2|^w$l|i$z3>bpp$N6aLfHIVsa4ev<_< z7@$`-i|hH-`Ny{v7@*n10+u_N@ny7i@o{c{oG<1#mv)85_qH%`u-O;pKoLH>us(f2 zd|j3A{lwcuh~KNqBl_y%Vy>dI1Yfp_@N4VsWBba~R}l8qPxjT~^6FxKVO_ju2FoS2 z8r036ySCohA9w@5haN^FD&yYG=a<)V(cj~on3G@$Pe8?jMrrY&IOEFxa51+R#%y*a z&=MsDUAVrVsWoBX%ZsbI3Qm(u^+efD5nQ#i4gAsgV5?w!ZaVutZL|JqQ~UfcJqdhO z8P7le?e$J4J)Hk1r@hzn-{wI^?^FJ8(2d8hy;P|+#20Z!(A=c#U zD$g|Zt+|a zkK8}F9`%!0IJZC68cyf&Kprf#AIX<}u>C+@6KknG9?EOefrjVqx`FRNa(K9e?P{28 zyE^%GlN5Zv8oAjWLWdk`Bh*hew{1{uI$}s;%ntd(Fi7(NcH7f27x$O}ceSD!2q#?F z7py+&rW(I3@OW83o9Ya1G8-vu7NZ~xDb!By^V&^O5mNT*owY`-oL;tAM_?AL*6qks zj&FE`*w*8DVa?KcMc=zD&)dS5KVoAf&=qAf(>^<;mXvRpx6Z``Q z_?j_B6Jrj$#aE*-xpjefV}goFSquKAv@$)_@J_?tl?KhwF^^uK>uZLA&|zCGZft;< zn91Z2q_~?VL5#1}DhA!gu3=c1&*J%TE+{KEL-DMvH@0#OJ1|t(s3_g~$1ALygO!^+ zby-3)kxa89lU?l4%s$G>_NU<{??yqq$;%3u1GGABzp0^_r%3R)?M91c4w1V4lebhf zbA*)`aZnU^)%^|4L`KchdK!eF*;Xp#)SM_+bu@E|^^wYZfN^f}Zmy5jD zSXr}7l$+{_vSwK*x75RA&6=Tnrk*2fmW^^{Zi3-#;rP%U_3*d@Qf<~V6bi0DjuaRQ z1=k=)3JisUImnR$L!kg>z!_3tC=@s#M+yvufk%|>2KX@K8?6j?C`^34~`Mo!FA`3{q2BO|6X;(d@JAJrW6cuh*P zkquLt-@d?VY9kk>G_=2f6p1jW^5rMZMixw6zW1crNPua`SDrK*-Cj*L)omxuMyH#W ze9=j>(beWmlmY=ZI@*+0T$ulC^s?#57n?eo)5DcqaxpBI4qM+P7sKP0gG>2Taxpw? zI5_`LB^Pf%Iz*}D;w4B&D3x4%2flR1D3)AYV0jZ1OD^^hjT8J-@-aT%I68`TS^-gIc)|1I6T z_(n$nhu;5BM#}zg(CeR`zV82CB6TF5pYxVp$?%*r10~Dhcl#|F-rFDF&fm!yLK?4% z^;t*Fb8TInU(V&X&lQ9pRhDm|TiVllrlH^upFFf>Xg_>VoAR8~g_dSC9WW@+XP+@B z`Q93H`)A{3aSr5MIR@T#wceheu!HjE7F=IA^Pi0?Rvo^>|DOG*4%zq1ICzxNjBh{9 zXs(!KzjSS*{euS}&G_~+kj@dge0NEbIDEj{8NY6VjQZesCf&L@Y^Q^;Alsl=lWzGs zw!2I+k9MJ$Zgufw-w(6%E87D8=f?aKV|UQ&H5|FL&j0m&m9L&-4$S|P(OCWb&txzh zz0UtHkvjY;%U{{mNOsR;T|^;yDlq_jgC`sK?X1p;_g|h&01)821LcriWj%=86+KzO zsCX)YUW9*6>FOys(|=A^JWtCt9W_tBk9LbB`cq?DP_vKE^1K;NGIUSvpU5rNPr4|Q zyw5KpJ&}rCA;9lr|2W^o$Dao<&Y^x?pYk>*S=mIs}Xe(6)CzB{mVp!9f z;p@UH+sfHW<0r`?X}l82ErR8fodNXtC3T3$Cfr78V+%ko;&cLz`}oN9y0<~Rrn_NJ#;2U;8)h4USk4`t!W<2yMy7Q>gPj+F$ zyj8-H?d0||US6#dO^Q}{nrvytUOd(8x`EzOtdH-akazgI zYGOG6|H93~FZ=Lack+eJNEzO07JJ2{5$(YHL$%to`Lv%75`*Y{;q2O#t#zME&4%A zSK)pOe8MnykCOw>ciry`fp!>7RDouLdrP7qxrsMl3@Sv69(eNoaXchRAkK9qbQs8;l&09APZoY%BfcS@NnY!Jo0_O8953xQ*3sT5l!bvsYWi{DF0_ z3EjR5Ha50(O>08Gem3y8PObAl`{4PD%>TW?c<=MyV-UU0|1Xd@&G>PeHFfdjGz%rc z=8^>lCphcuA^xX(McuG_eyL0z4L~Q!wr=KAAAcj?a|EClyT!6n;co{rU*c?8&xF6V z&;CE9C*%KagKyH|4~+leK)wHo@qb^R|6U|DhqskJ{3k@YWf2zD2)8Vp;C^&l7U*t2 zvMr0>*c8>)M|y6U23NSzC0j5Lwn1he91y))B=*L|I4V zqK+o(h+Nc>WF2vM)KO#|(TQ~gSzBaIh#qT;R_e&Hj@bVFsIiXdwK`&~JrN7xVv|L; z6pYo8Vja<&b(B~~m*7H#SVy!kM2B@mZkr;*+VVtDM}@U|lBSLbYbgVcD^8g+MTHOv z)*4EhItr{M4{|XAtemBe{%V~{3L)~VY)gpxYRR)*9r4xDB}EM_plN5DyS4(!i5ZTp|=T0H2tE`YBx=I=$nybu~5Xn`Z!-XiWvV-dgu9nQN z5WUrsZ3&TEWv?_uZI%65M{Knwa$#IyvN0$%NQl%bds>Lnsw-K<2(5BCVsuuy5ByFe zv%X9^5dWnPyz&)gJU{-=pf~EX&wmX@|JCKw)%$u4zVpsQ%4NR-UlB#Dn(Wf5u_J+f6|*J~7YhW(jx;e47y#dY8r?Jth|!`3yag zRPk*C3=AR!;5uftyF@oZ$&`|lO`e_Pur$KROv>o3UHpyiSajC>gcT7b86`d~U=;r^ zdsp7wHjd=~mOce1$=f9DvBjIB{rc@t@)5^Je8=wXZ9ht)WLgxdkd$S4x977j3Lps* zBz44&oZc4ZP1<4s1rS%Eh^qQo9WJIJZg1hvc$=*0D4KD0uuz3b;LQp$$^=dXM>!_UTAHmCvx1AIDjy81+*gc zO|Wv@sFFywn|NLXXkxTRyo)&#E&R68*!j*O_G*tX}s4{;17 zlw$xB$K-~-*BM3OWpFS3BdQ~g_#3$PaA<`=EpW}g<=IXY61ZA{Yb+9~c|0E1h#4`I zG&&trx??>;_+5B)Xb%hzSQ)@l0Z6717`1}U0mK$Yd7~28VJ!JG`YW2Tq%-1rQddBn zIksSlt&?XP(cDE1#euOQdMe`?&Xh=``)pSYif zCd6w-eFK&k#6k$qlwC6jA&h9WrpUww-Vj<^)HZnZKVefx;*bng@_zs3eupl92e0|I zk{iItVq+a;iNiWWanuqBt<0gvh&LE{aHiwA)+W%Xl?Q5Tw(_lf+3s+VFEw)Q$4wj& z9_6ahoEw4H#u2nhZ*(ko!jX93&!3vykUbSo zm-i5v+{$%O?RUhO^be^JjLe}4ICyn7NH!yo(7uqGSk+hL^R1%UX$SdM^d$w{C|G*>&avrTIkHel)CL(6IycU+YjhrL0Ob-Wh63Zn!Wy6 z4P)^-X03l!X7Im65&pAU|4T@3k%rtuY5`~|L&pxusUNJZ3fx? zN4K`y^|(JiY^-6$_2Y-y#@fes*hisxXSMs0PL)xSktTywoq%guUHD)HDkkX0c34fR zBSj4&iV0%fm?WBa*KCJTB}rlMUJZk6+i^oN^mO!zX0uiceY2hVKuFw6LL2bEYLX~a z5f|#V-tL6Sb zimIi?UqIt8EAs06zm&8Nsj;)Sf6Seo8{Em+{*`gD!yWA0U`q99f4_Nc>^BVKpwTbQP5BA;9=fULg>Zom8$e%7htKD7q((CLR2WQ&D#nYEle{%d)+X>~KA&>XB zjZ>phHM~9Jz&0*rzSj50or|8ha}hY7&y}zB(IC*mzIEst-9XhJ*Ld;a^s;5t?uUa< z-l4`HG~1o8Rb}t8Hu!qk^n?9xkC%hB-eE0hc!7CUyVw;K_1k456u+G|f4exYAGNm4 z*;l-lcba`fy^m^|MQF_uT1q&+k3OdU{eVN3ri7&W?s_ z<5pjkcbccC+miPr-yQR!zJ30iSG|$ey3U~CYFf|W8%LK9ho*Wr2=$iqc%fX@F1+Sp zw>7wY7(QxGS3*xgdYd@WzlAkVx(toh*Q)T;yxO_wJsJHSWAgRWLv8KMJ-;5-Yuob8 z_~Pp8#QJL2RdICOIO&fL_fBg3lX2b|H@b}jY1D9n>e|(4&^>R4L%tu1#`X2!yxkMJ z{ZAdsxVlh{e*g4y!}#11ug~13f3|Cn!;W!z_~c1XkNVY6^{QXG1M~96-)T&adY&?D z+#K5HyS}k@zq@_f`y@*Bo92x)a34<$MbOroho44<;)kc>wF&BvW_M6Uy*`}m?g-&w z_b%w1jE;xf<3s)C+o7Y~eYOK(?a6;UJv+TSYu+3j2W(eC}T#-#38s)sBw-dE^!K;nP*;%? zx>vpbq{zMg+Re?$Q10J1AFeJZ{g&HM>Wv%Gt=IQXL*?_mVjYf-ykDz$`Rp8T7cZ;V zUiL}K@Bg0tQn){HnxX$GvZy5IKTXhJ|CiO3{CId;!X!e`4UDDqx&Eu6KMB zTZ-TdFb`>F9#X}84!jGHItB42^nQ0J=qnL_ID5CV^vc z5-<(-eIq;nsOJUXT4WnSy)OW!Aw#1c7yzA-AyF?3fN{u>Ql1!qfRUk5Zw!FJ$dIT< z24G=iIVN5i0Em$xQO^uO#mJDTcLqRXWJuIQ1Mo32q?DHipk!od)Kdd+9J1X=y)^(u zBSWJe8vvz|AyKalz|+W%XX3d5pc)wx_1*wHk_;*3!2uvB85;HC07Q#yJ93^J0ELl# z!^E2d&`z?ICLSFC$B|`By*dCWBSWK}9RSzC6iaz`0Q5(On)2`fJdX^m$jgH_*j1eJ z^Z?K$hDyCX0C|bs0I0_YZ?HR8%IgEbmKZAa`~buywn-`P58hylQV$RScVdVsFA&~f z`KCNU0G)}UQg0A|Xkv)eBLr}oSiXr@2!J&)MCus=h)oQUdWQgP6GNmPB7oh*5K~?v zfZ)VXQ=THc!4fmxA_hC+DUT7}U`IUVH9}4iS-2-m#A9l(14F$>07;7>raVXh$cv$- zyhwP1?ZE<165e3PfO?YvS{GY6^(f&Dc2cChN_c}Ep_FF{Z?ID)>s`VdY`tj@6W(Cw z)Zf(0B&Yw8%a0d``bX0Y{ZCX?mC^qc{QY;O|NZ!c^dX-ckH_mBGc>oVV}Pr~;c383 z6X|N^DD<|fL%YLaYfmye&`)$2M;eLi-l1K8GO( zvDyBtR^hGkUW2UHW&&a?A;N z0QU8!V?S885X;mXg`BEDJ^;74y)%P5q`p1g2KJN1iM&jj7Fkk;Uf)6u#-Z&~kKuYT zD%u*s{U0f<%3DmPTid;j1E|GZ;#)jytU%Tk#Zy5HVjFh&T^f0KE9oIHU1$3zaFQTG z0e5kD{veQlH{$8xBD)M=TyBhz-}>(VG&=26}+r)bf4LFUo}pBvV||9+>Jg)nM~|JjC$VZEV&5 zW)Rqx`i6`crXcRoT!j|6jQtt70Gk!V)^LY*fT*$YO}-g!;*7-}H~Rx~XwY&N7@89c z@RPgYIp$D(%V7q<9uENrCdv*3qp86&a!(F9hTc%RMe^Hh*^V9BXhhyzd^vf;y}3N! zIeSC$*r-A#&;F5dBKy{Z06F)!PYy57Av2d4R}(|%$oLvk(tu4tz=qkCc`b$DH;*njrC-pyK^sRaf?3OGz`vUqA%u zxnBcj+5f0wBL6i}k}>|Hu)6Gr%>5%f*B;|+wm#_NgaEjqtPIFZqb zmNl1OKOiU0IA2~0IA(( zE#e2sbZj%=rZlNDK^55T+HllDT2^f@dS_FFdCsS1b&^PUc>LNvu%IP>3 zQtLZYYh$WQ)e{F|MS5VQQ_VG0TMUDIh)*2dvoup#l+P&z=8yK7dgpn*BXCGd|lEO-2WwB*TrY<|8!~PTENPH zKmI+p7)Z73d&L0MHm@W|Rku`0P|#&DgZP7Al2Tv(((%5dPKHF|A;ggrtT>>9KLXDh zh=B9j`}x!tFUTmWQpr}%lFC@1eM%@{!IDakH=3%eB|LJpGA5d!=_Nc^QW=XnL;xvf z!IGkR;ag)Lt!wU&4ChZETWb0!^QJ! z?_aC*yfl~m=XLojniE6 zU*yFfDE|dX%-{d6;(snDP1XNZSy)*8ucJaQcKypXfEDvp(y~rZ?1hYhj+qO zs`Se%yZLvC%YVlQTJkt@xJrDUM44v=9va(Dp8o20wZ)w=X@bf@v^qk|6VCgxBnD$QCLs_=$fd$pr)5^Ldr^lrA_(#o6Eb%=igl6c|ZTotA?_j z_S31MYy+2T+nOKeEQ6m);iMgbMdi@!fn-;B5&d66|Cf>ERQMQzrLc!$a?(=-*M&lU zk*yjqUX~=!UwfNcr5}{$)Bn^TY5#*Hzm&KCUETjKB~6$Ayu>SuDu5DF=U>MEgRT9$ z{Xb}vemcRLYTI&UYQA%SVwt)W8CNkN^59TdcB%X@IAVoT@r#|)mS@3ogQk3$`Ub!(P7ZgfA zkv=u&_do3ie*cpo*h_BxukL@AlBS>kWkFi>_^$}cBKJQs#6BuNHi`MO3dtQfI37~; zcLrMy5)O-kpAsawf_xZFE=D`~ZqX$6M)G;vEyUSS+ znXl!U6K9aQsLQR`?6H&d_ad9YD{lnLc<(9SKo*$@B|TSHM7e}Vjy8AqPv4_Um>^B9 z>@Fuq`_TjO+Jg5dN%Q&t@Ur@hI%dZIQ4;$fjaMXm{u5XF-%`?a{~txy7LNZTi-J(I z-O%z~(|NX`FWZ9WxPfL{wiNf8Y?aG(uE}>@%-}l=jutS3jbE2T2P`ht4~tsDGM)FA zF@!Dd_nd7Ld9jVuyS|29)13RiP=7`pGxvX0S=s-*QkuU1%e%MdA|BD3!D0%s!FhG)A=H#EFmCjO0(@V80mR2GOO4_{?Q81tVhbTQK7VE72Ul9uK ze^&9|mXc=JX$y6vn3rtA>6F<~2ey0bSZ*)8<2VrwaKUDaw~6>DncAwO?Ueyhh_9g9 zjtvpI0m`H0btVLnL*kF(n^0^emou;sRk=pcO(0X1Y-#7wmsaxL?BSLkE2Hcok{ZxE z0EE%;+5twE{4nS!HG41^g|JvYas&g!nXp3S_q7k*|3#%frgw705g&U4?j5Y}f04~M z^ls717k~Fn6@JTIUte=~-k1wLF0=qv4i+!`x-=1iYHP2j7(Wyr)9y11@*H?u|kK3tb=iiBlfpH|taJ)NjT3 zO`b2HrpPDmulH4HzVp9S7oSnbto>h5Qt@9zeii?DiD}xIJo>5Cbpf!1E>T`Sn-ArT z2ttOS^9e!B5(F_ONNIwks9H>r%M7m6(ofK8;oU%?Jji8*oVMGs9?8GN@H+W3_Zhk~ zvb(ovi?hOD%61O_)VN>KK1cU*hEb}v1=vjcC>|XvH`d-ELJMhi{jCKVuMEilZYj6_ zk8O9^`0sG$XYk(@eue+HlvE1;j^;tf8wW`FQ-o3wcy#uQFx=6B+HV0aH5`nO%(m6> z+!Sv6Mx_9q9RS%8hjK{vXfBomvRBfrtR$f9mAY5~+;!amnG&EwyJMkEbG)u|-$q_Y z_RfLn_aUoHvhG0EjyGzRWv$c|oYPP-$h+g%!@v&EW0gF{60c+SdX|qKYUH7i;+oLv z6@nI@fW=qpI?mp}Jdmo-4Q$7;Q0sJow5|>W$HLI7_-)w6>CqeOkkPk$cjY-HlCznx zjM|sW81>9HWm%Rp>KQSGa$nI&zvvQvO&7g>aEG3fj?rcObU>b>$G8Jz!Xfn0VIH%N z(3C3%UulZa!x#(RZ3RdpsdM!2ql2 z0j6{t(PbDqp_q-OG=kP0B zYt7SeNDP?UUNsN0v4H?dxF+Ofl>r0B7(2GPPM!aL)Dpy!v6IZ1wX^rkj;hF|yCvD( zQp={LuP>63UnxakL=661$BYs%BID~B(_#LAm*f+SUnv!!SE9MauN0U>usrZ-#jg|@ z=yEip_?4mnU5O?Wzf!6|uSWBTUnwfkBfbewX9ea*MT;g6Phsj+RYVaJbTJ)FfFdU7 zVLF%qMNH7gbT9#mm;iggDwqI8OrT*pm;gmg(8QXqf(cN>1byfkOn@RLP@o3b07Y!j z0|poYRiX@12kd|%b_i2(Usb^#C}NKhrh`3D#2#U4@~bM?1x4(F2UZpAf+BVqfquX+ zC}Nlq!j@6NGG}*1r;m=QU>BL2;A2b$tH?Q)y2VtmiJWJt*xRUJ5t*CuQ%nVWoPE&A zap2jnf;D8$za8;vs)8+KZfYMf6$~MlSt@pcDp*0Tu+$}{f&pa2Qt?8dg4)l{hEi9U z3QCt1mTF@vs9LVFRBQkh6fJWrF7|&aXj#@+s*6>uiLjD$D#pvDM%H&u#rSbcgQdL8 zsTe-X1EwlK<@C)AajgnmPVac2Xe#qibZQAS0c${+Q~W`P*Yb<^ zznSg_zc>Z#JMVw^@96tqQ7nD!|N4}Y;_UsAEUl3WAITXTsq%hq*Mtf!^{&>h^A%{I z=|?JBr>Arq4}CuS=vjoOsy<~QO}L-LoVF49_cPBXRY*=g8@-i}WS332jkpA}5z!Cl zn2pq{p}zWvMn4o|1bQ%ZQ8~)3C8|1AM=j? zFBRziFE;;oPAq)+|Ia8X8h58*guvJbHzXqQRv`lT2Y#}7g|HztC%*q?MF9&i;`?{{ z5%%ZSO`3ciMYqXhea5#O$-*ZyXGz0BeHj;}8>HRwG%-sxWT zX+(UdyVtv>HwXU-)BtxkdfR6=JMjpH}7G|-@!g(`+bYHMC$pe2#3LoiR>q z9t!YJMqmf%3_n?Ac210fffzqsGP*Zem|KIFUt-U?!yiNUVygK`$|YNVF63=}k{O%p zg|U}JUVibij}a$Z#p9aC4_lYw?lfsUVNQ&=;|K9B0zWnx_@kRKGe1b`19L9LVZ6fs z#Nk#7dyWx$IIg}W$Y(LWSs0*F@EbL4%T+YOZ*J+DsDJIqPXkq43B*A7~Zj) zAb#=}6aHd=5-&e@oH>5F!J{QuTwC^v4tVSASl$so(&q6Wm*V?O=}0`1XZXIsj*3#O z^aMXs>oInkoTof5&dz|$G;~dP{7=oeDRZi_T(8^=&FFD1K#G&Mb<6OL)x`kvHZfCW zpK%Q@)>pVI!Hrpya0PSa#JOtMo8TERj;rG7UaU^NxY@pkN7aQMWL$k>VdsQzXpMj2 zwZ@CTAm4~H0Bj49E`a$IALRg7QJ@bjCW!7HW-!EpM1e+_FAerJchH0FA4uddG=a{10AW+8jO zQQrlWXMbTB*y`8hH)GkA|Nm+frZxUe#Br~( z@bQlyOdZ?JB|H$*68OBd^p-Hzj>L<Us)^O4(L&m-b~M)wn69CUw=KeLM}J3H~3Fe@rf{z~d$ z`)A8-aq;~R518;v`gk}0!|D5Y^=|DQ~_T^&Si2^V99-`KdD>=2q5oZY8EB z2e~t?Tl0RsYqe$RsoGbw?ds&vJ~oc+6&uQ1x)n-~79>(@iOf|Hr`&^s4(|UV8 zsCNqubuT_w6?uK3164!lUS4+4Za%V<`A9`OKkuXtQt_ePYFBDrvFwhGz1Ut%AH0(C zB6(e-BFpajepA<`TE2iRQGf7`+HQDkt!nqCSCIzUY|1Fyj&7@uw`N+>b}hMU-J_Yl zUfvdJw-tG<)_eEUad4mZx0TIe9HdL;=>C3izn(XH=IvqNwNqxcUq@2=-8r(5^gCuve04_2L-T}Y2MyJl5SNiD5uI9uCm7G<;DYD}`X>GpoG zY|Rv7SReJK*7Km%A3kji@o3IOd4T@$j}#fi>Rt76VE@sR?oU*b;=k8$*7Fzj@y_@E zIq~xQe@XiK{{K@-LfBMmwA6FZijPiyD2VzMMgEE+e?^i1I#J}W@}F8R*8k1U|Fyfn z-rxU~%Zt(VzwovH>vKwqvG+&TZBG0nt2S5R{WUvQ{LK|R_KFhMT~7J|_3L=y(e9Zw zi(hp)@ei!IocxDY+}O*HTW>kR53jb7=HFQdU!PuKkT+`yDlUKAqdS3ih%7y=D zL4bZyAMf~oF;|qL{=b-$zWo1Zlq5)Iz|^8(8z07F{ znc11YbfCX8|E1i;{(ng-em(zvN?}h^3j#KNIfJ#q9sd3&4SJSE{3#2shn5MkQXn7Z z+%F{~K|mrQpHAyiGG6TE5+$FHN)iUjV+L*e^{^zNOPG!rI(H_LiWIR(K32q}0wpY< z#kXOe+Q84QvJ@+FIvYx)@YSOnBNcyy7(``}e15zhaHUjymx$gabHtZ$@O>i0akvw` zR0!@gmmt)jBKTgBmefw;)J}zbqDN3E4{HJy5*j!ia3*q~i!3J>d-9qJYgm|e2q%~c zO~D${RMz4fO3w;{Dl&APl5?1xWyoVn#v0X%3_0*A9qUtN4LYS{JX+NP+bP8@RIp|> zR(wXuSeq(4wCFfc%2=9h#ad80)~m`6Vmkg5JQvgoLtav{jLGcKwkTP_WSJqaC>h&D zRT#2O$=D2Pl_9Sw87o|6m3x}4RjhQCoeC}`W1VX(`9PIk#Y)#$TX>WVN@s0Bbza3f z*VyS1P%_rJ#wwB8xr$Y;vX(niC00S_Y%5zz2A#9_A0C7wY^-{X)f&ZMtAgrFY$ueA zRj;vz@=twZ-D|8i>FB6p-D?$2d~&LQ)vvMbpXpft8f)9|s2}0u0St3atBC#XO(I}%tCL7D3jsOpMFfq$$ z)+wh#rV7iUP705Dm@6#fmNH~ATe!9;Lm~5pWwa=xN@fhpXj6tt<_ycYqYRDA8kTWS zjejAfR=PZvCzVG?k6L>Y*9J+3p#kjWh6Zs>Fs3Yj4+hmIvYlVD!* zRg_aDmCSUOcjjnh+OnK*^8BfG&ir>2`us0RV(#X5>w_HfDispn|8Y6t|7Ar96w9664jbLDN2)}_%ySWemCW$ zx9unSsl6GDip_0)(SI72tkvAQ8`-VW{0aG5ts}{m7o)wlMr*M)=}a4i>_#jV4>!4@ zwn^nno7=fm=oAg)HXG~Po_}Z!+Y{86>VwNOK=J&>%YI;|=dBxGc6@z!)7Nr^;>$n|axWd_xqnw~kE{A!Z)BS7 z^=5KE8$V8QmDKZmkl6f#-mv-<~Dco zgSBbZ9&W@V>P>g@Om5~k^2$%8hZ}p=Qvz4Cf*g8!vU`(xc4pP51{(H@$g(=OGP)h- zp1Nzr>uTmMn4&@J=;V+4%Fr!3sr#9&4@RCUAKG)L;L4+x+0#6fUTW3Oyq?RKN6IK~ zulEnAkS(Q^R(*pCUeMX44_F_{%uZpgy9Z6p2Cdn`pFV8v-0H4X8NIYtrNyo3XVXV- z-|2Q1U1ij4W{Y>u-s{|KN^-vZ+|(OeHx<-;rSOt7R{pVnYdzg9WoUV*R`8F#SSW7m z!|B6gyL`;okTJ~rw;eHCZ?%@jxUZ_mVlB0-7o@qB9*rJc$yzGg;oxA6*K(mOk8J_i603`lF})Yq|9Qj``X6uTn0$|5K8R#V`N=86}kn0DFoBBtgHP zfnQUAak!NTwah%V?8f&eQBvH_6(z7U){JT>8`01k7Doz|(> z4QYn^LivOvE9@5LWFhFDL9W4EpDyznHxYv{ORgrsKjA9`fSY{-Z1yzpaYKo4vtfYb z6>1i~vw+A5MRbjcj!1&h(FeT5di%1C|O9~NaNy3u|PvUs-5fcE* zOb`pBCV(25)D{yt0btDpu}Jg;FjzUsw<9Qk5_(nwA4LJIRN(?Fm2f4(l_K2uXbOOe zCJKfT6+kpiZjXtoP;AfS$O@pxCN>m_t^kT#ME30n3&6w*Ax`XTl!a;NBGLlDh8!=9 zwg9>z#|k4Z0Fx&~aPkO`=w9Z>Ul@4-Ttogs!srXY^l`i}0t3*A94m~%0E{2UVj?ks zfXMN}Xbiw0a;z{S16YWBi?2}`07T?iVPpnS5jj>EodIY>jul2|03VTKF;N;oN#uB8 zqy}*Ocr}L68bDFxcwxi_pcFY)7_|XBMc$sTksAP2lGazSGx;4!|+;4Tn)307~R|VPps38Y9)1=ngqUbDUB0T`Q8{vl09zfoWI)E_ZBciD1Vxm3(wj1GwksmDO3rkzw4oka%MdprxEbiDg2ee)Fzf*nL6j@u8kzqM2TD?DX zmRd|Bjx7@j2Z~>|MF~${N*#SjDoF~jQJhE_=Fg$^k(rdd)U0@~OzL|d7OozSy8Fo0 zEG@S5t0lD(Ra9JAw{^Ct&jpARRM5DGf<=4p*giPvdl33dhldCJ#U#g{LjN7`Z$Q(EettfOC(~WzM zZ}6|cg6;`d=2@yGQ8h-H4hSYKtN}UH9C{yW<_PKcx0E zDQZYg@AU~^u61gDAo&$+pE@+$9o;|k$``BOe^?HCbln)>!L;iC){Tt$__&zn;|Qw( z|8ss=Mac`=X>}iKv+OpFGcTFo3H3>?oZjy@#b~zIMH#|($wWtE&Ap`V02O75scPhH z`)#hM?b5-gfi5eU^yNn-xQ_BXMj=-n3HD!cybZ(~o=x;ARS6&DnR3wi@wk$MjQj?> zJH%QPq0;=Md-ks~SpZdENLf*>YiV7<2|Q`X_eAA&l+h_)ZNmvHxZeT7ozH^T7oz6U zPv;=er+M!C%_U_yjR&&uLNg?h(VsF&Ef$#0ZMr+|7Cu*`*g}?p8<}a|%AMhRlTIW} z7lpMyudNYK_fM0KAKORLRCXY~)5^h-RQ9Gzp*xsU#epMRj*eCX^XOZJoUr{T?KhR7 zu1{)-W-!U|EO z2=5Ic!PYLRul63~=uWKZsMPajS-8%WNJ2~5(Iw52k3#nk~~{dUfRC}9HuM* zkz_s5f9ft?Yh3mIUhhzJAterMzScPW!oR_+XSBTLuh+eY$fgWDzt)t~Bs@(YY(8#R z{i?%l<44~HhoK0dZLkC>;e1RF;e+0Z^Ry?PhZX2@m9I=!c>RtiYn8|s5cPADG%0zY z-gN%NdAe*#vo1r{`CNOCJwa<;t@F#s5s~~F8VQ@v>r@Ns?@F+=-&gce0nO-m_%SiIRJ{74adb1}NaA>f$!on`T4#D| zzP&otXrF>)fTH`o)E;9v4dMRwW-Aud)i>WrEwd?vj*_z^#y4r7&c9GzR_zcpR;$Ad< zI2J`2k)PE;ePbGA_}uC^BlQxfAbtgz{RWy7(@sGJ`Ul16gn{~H+S|NLCSJ^oe$_9k z*jEeGVoBwVD$t(~I6RdMq`kOHWV$l$O-r5|LOHxo%Rb6)X=7p#GpT4NJfKT$z_2Ik zUIeA#>252}U@lIhY1d8Re!k1Q7OG2wq$?~Q9q*>Tbbl$i0LqK!rT{>DP6KRGma0Hn z4luB4^R|Go2RRfU=VO1AZ{JQlBM?)tnf^lAi}O=bxqMCPW#T~fCp&HUS}+20Q)V|A z48IL-vYB1bUXJ-=ecb5!Gvjv@v&~Ja0oo8-_GQ~>Ydl+jww-6&ggE*TJOBDl;y+o{ zlh`@^7m6v8Z8yM#`MUiTph(f)c=rjXC4^$Zy4c3YkUU4>fJVh5>1FtPg-mt2R6_Xt z&b_S!W#-56%MCjja1AKhW>k(pbZrM;)`UhgOq|>Kn)6xWK-3{D^7`qw;Mjom`VAsh z)Cp+PZKC8BH2DfDct9g-&;ZisAAy5+HL9WshhSb%QCW_sSD4RoEI+?Qm%eX&&}3K+ zU8_IK69qaUvVUnTRX4LNqU}JaDm<;U9vPq895!ENb7MDOaB+A#AAajT=J}oFv5#P9 zy8O%Q3)t-hr7U#-WvJ6L?2LEaG=Wp9CqOQET6>P%%Obut5rtEHz9s15^jNBQQkITo zf7Pch0)l_VFL=u4FLfT^9DZi&)U!Hp89Xi=I)v0xbHlfd@h0^5ZtCdq;YM6>tA{+B z#G1!3Jz5H ztY?e*b7v{qgPI2Dk{9ziBZ%>MJz~(~Vw3nDZc%D|R}oOH!a;}veHK(X7EqgtM3N%7 z#n``D;&b>GnD0D;X0v822M5@c9SikE<^<{~?%>ZNIAf8=4vh9E`_N(e%M3AJLNNG{ z%)QRttP${2w2Vkw@Jr49T+LSfG~QP+x*$goBFvnHipRO_lq(gKW<#Dmsn{8OP)xdltAw0lWKS#yS$gX)b{0iXhcjj4vr+a$=@?SUn z{obXf_7&T(?KFM`WWSlz48=!obD%B0jwOPkk@Vk4h)_Ki3RDEh%6(v;osZV26{c_S zjg@kCZdzl|QDVa!Xte)*;9BJ|o$0fFycWQbR$|zd7@RB%`nA2&@<$Fj5boh?lOSr( z2ANB5{zJGf`M^=eY0Q(sj#NIB!t=$s9ov=3jzS=C?$#}N=&Nzi2(L(p%!P3PYvYzC zaF2$8L`zLam7Q-TbWgP+?S=Nf9}1xA5Q5LddPdx%D#ax5U?$3Ew>GnPMl`h6j$mZ% zYC<9oBv3^CX$05vEf5B6W4zc)s8%1(`$;vh7iL}7kQF)+3%_zSZf!Y{b3>&56A_8r z^@bYj2R*oK$#XS}6T@0%YBooc-4Jy+%VZBlAxu%)r_cTIEj@k|my?&M-)B;bC3%mb zWCfy9Os|@H%A>HBwS_5|u_fk0K8IL9<#kLDYy80H&gXduJ;<}>x@Vv?Bk!7FN2d^g zZD;RqYiJeS#@oi}*xouP+=e`$Aj8;-vZ_6!t$ek36bEgCoCEA#ps=B|6f1>FfqHNC@4=7ggc8t&1^I+J84%qo`1)sPx% zoqZ&F$cyT4ZgYZoEiVlUj2xRmN8)*<*t$xUmcWP> zl1EoW(K)+WJn?7ik%BKxxF}W&0%A;!x!s-uF16<_l9diWWm=y85PJ^UMbYeg^FVFZ@XzC7Vlnx&DXrDUkBTuv*Oc|OHuebrc{#)R4CXdc8Bdv@;bKWNk<|8pDJzS!{t~r-m@9(-P1BM?>uG;_j0{0;}lE4pg zLO)5+De2$zTWF1P`Npy6E||F4rcSS(I+^BQCz%o(OLl*iSShE!W4;ky!zQu+g_X_& zQ)LWo9ZO&NymZs~>%5BA)!zblA#<*Ps=3yN^DFC;E$b-|S@^e17AmXq5(56==v!ABDNdmLPl5yUUF`!_l45%Jl z9s`p5#eX2ImtBApZPgV(bDg~g(y5>VIF?1-_oi1KSR>Yk0zk8CX~O))L=R|<6d7lC zU+f@BeDxWBBhaDh@L%d)zsmfWmqflpxh4OUI{YEtqfFn*Xn)50TyRn$QV%(ISOhCQ zll4@?Tj}SOgtGZ{=#+(q217anlftnO9WDOYxLQntLRwKKT2s{dr|?~$H~Q4^!k$x< z+~LC?lpL!czcL-`X??Lh7bq1vOrJ-Y#zD;;4DhB+v11ZA7Ai5M39`cQ5{TE5k3G`c z3z;%k70e)*u#r8eqlHb5{!GjeZ(KQpSL(FxuL*=GBznxW*(vO+6I6{V;q%yypDI@} z$DoF$kocF#U$cNk70STCKrI{Ei(-@b191MNs?n%lyek@+RND@0E3EBR&paiEc0BTp zKk%pOD!Q>@aQW`yhbGZD17OUU?tC6dXRe;z{6Q@}y>zEx&V;a_=WMLjXfCo% zTFMe23un!uVu_)K%8jF2uRYeNz}>}SfhNV3!Retkm@JX|%F_fEqmKXL6;Wy)xF+#s zlH5zLv^7hL?EuC6w8Vz*=MHoWPN26&(Awo03seQPTEwEjbcLC*ykmmTP&InKfVhqv zS-wkaqFLdpUo{Kd!XjJ$g8Z@39BEdI&&r+vRhtZ`XNUrEZa(H~)kY}O*Rh=QUS8CrHiME3<7i{N3Kec0IS ztF8qrjo4?iDtzs#;Xrj6Xq{ac<9*Tu*23e^bHBM_5lVTvP&~@mn4fmC|B9qiYdweA zK3d^e7AU3G_Jc@?v%+WhTouqy${dnZlpb~RdmJ)up=EmN4kg)$X>O@dP01!? zXXG6X1|t7z^Vs&uew#2KjxcRUzXm=V7R6l&kQs<9_sEBiOLA2DRToei z7Eq5Jk)Vh29-H2@%HZxO3&i^0|l!-GDims-^_Lr#0d8!ZDv)~7V`TJ7$G{5#^L-o=stl0Hc4f`Ap<&T z&d)`gl5WJmcl^B#sZsUcjfpWxLxOpO70iAnM9`=|@>WE34aAbntG51;Ez?L!-B@$^ zXr|4im_Q-h?R5v?a8CkVhUWQx8D@|DYcL7ve91>plq!!&AJX>sz2j+M%}5^d5@sdM zb?ZEa7227WyGK;i<5F&b6|*Z}&q51!1+*1~VC2LcC}sH2bB5*Z$WB zsJ||6HoeEIihL-o@^`Pr{w=BxruszQ@CdXS^yVEuL@XBIkZ-P!*p0sxdSxzJ^t~M$ z8Q2GI^-h(u)o~KV^qik)sBLcbe9zz7-3TR4~GlP0I6Q`j-RL%VOh2z$}5brIa$r%77E_-JxLv^zDEyQBe1 z8dA}xIHSPXUCgNdL}IijvtPQ}`JxDm{j4^3HU%$oTuBwa#~)l0%QIJmS2Qb#T~DPo zMIy=bpy3?~vP|FXWR_Bpqc;pnG$}DnkC4Uno~S)aecLig#4h+O%9T*#F20?j4DaW} za3iA-mE;zelQko9=4WdSXl*L}Y}0G-k1|*cIwkzj$P0G>M^^tARJ+u&3g_*U26bf= zo)sxl>)RiR^485cJAC`WKWQ{znqqsC_ynWhlMi+C($da2^tHbdM>Dd9(8m_KQ*cNz z|DdQSzU623>dZp#WzKiuWF@F+v0<>zVL6-8`2-HU&=HF-es2z!2mx!_+ zBkE4boD|I9TB9#*s{22!M5Pqqm| z(2tG&;A9M~tpqC?j(GG+RV`mY__hBueqwjSn@N_SBqq$>qnKPtT0gq^cv$Pag*Z9gZg!XM}On0|@# zQ8W(2R&!#B%IsfZmK35$*8ZcCyAJy6o2hkMr^$t&VzUkn1;m?zk<(Qn2HhpWk2R8+ zMH1m6LjF!`BJ@q&eHVGmPxA5p*g8#XC?KM!Kh0&JhX(m}?@3c_7*p};BX6V#PI`eP zOIVltxN!XoUYm}Z@L{j`eaV$uIs*qWyG<|?N$%T_?aq$XEn89>ARj*Am&l{N3Z(YG zQphvu&<@}-yiGxz1j_>DZOF($yChZ76?+dZl3ljg)?IEfATE*{!uDA{Cn5K?_e9I< zanlVwNaLm7DWt$fH}5LS@1pUbWbPuzH+kq;`S$kt+05=nd=%7WYvhsds@LMky+1m9 zrm@-GiC6unp9kc-NaCKNpRk;_VHlA3v@R+V;{@<*9*ONw%d^ryc1xX%i;#k7T zq~D6X7jXn8w<>SHzpb=hBIh>6*5U+hPMal1S1ifPl9M0Sd0Nicmc1%_DW)@>q3FCB;4L|FEXVVV+^<>-w^Y0AX zWlLbhlPgK1I(^yn-}=j<{%67q!y(l`lkG;%Pvbm&aD4jEkJZNYQPRG}#0{ScBy`9EOmqIj8Joq$^m*gP%tikoj`sqQJSUE1v z@nC(3!ih1?dQAm9{3Z%zGFc_8KQ)E0J;i4Pf#)N@s}lT|+W{&?34QL{_WJ?mc|*S?hP^z`uOblWFv zW==nSFaaIRP*(eG9w9#Xs zv#(Utw%??uDn~N$pC9X}taiG&onJr?`wmO5j9UPz@q^V}cj7as7}r$_^l5he%MFcw z_83-8L)a)acT=r&fls=E|2Gpdm_bdj%rTSxnZ_vYu_1#$RV<@@m)y1nGOnFL$rF(< zy#iS^d>933`MgwFKlhsNbo4f@^G#l8$ch>n`#WAvIX4yf77iq-Ai?^=*Y9IcchSlC z7@_WPL+<0naJqP>1B!blfvpkn?dayQSbQeXHuemhwPjWT8p!(&w(>B!CQrD|A#HEq z?v-P`gkDu~ePex@L}^$s)?^BW=nptcWn6Aa@@Km?`bWJJIbNnw#usOA{2{3P{ zQ}kr}VG_l-TOC7@6_o7N?-*?v7t5Xk+pzO%;y4|eGAi6_^bb|R)?pD{!?S@!TFDVV zefY?)8YDceQDsAB_1Q-h*n_o*otqTsoc64HCQFw^ z{}H$P6xk2x-YNkgXKai_=(7r%H;;66}1RtWwKSd#HaoNfB@os!J{nZ~SsWHVSE-tK4hw6nw zbm6R$n1ZS_GgC>0+@czo5;Pxm%B;jTGf)V}N|zxgk{C*n(W`|zDxKsSiww_|CJ!TQ z)MFi<9QZ<|RGYX^#Lyp#lNGXn_*_L_L@c3kr3=G}Jf$e0xH|nsoHO?qGrbmmi6=&zNi!q6Oqc^vEirT$;C#*tt5+pf?8xlGunOKC?T zl|yiu$9IvMvG(|_(SclT=2llW>nxvJ{VtowF&)Cz*^9js<q?QU*W^2UqB$;QPq zFCP;pMD7YV3*W^Mx6UtbCpj3t&63ag-dh43DVg?}w;i_HR{WD$WM1xj8}8@VqqA2} zbJ@$)s@V^z0lK0*>x*Xo3*~E{2$%L2$D40Q-_E=$I2Hw)Ant#h^45!Ugav9<4cn{7 zpSSkQJQmd%b&P?hxhLZcbRoMnH(SZ}f0=_vMtc52HQVdYKd%2ee`(lHc5S#9w)(Je z8*+JnGa&f#Y)EnLY3p6XbwjfJTv2YDA$nF^_Hx_tws&f`a~IHkeSfp$q57lYu=xS} zNHCK0I(y=KDDLm>2Kj!-6HR!peqXfZw&^mv9>>qx+7`(dqW;k+r)~u?tynQs~)ofbc zP*dEnRq5%RmTq!BzNA@ZBryA}xGR0V^C$XR`oW3rg|gP`;Wy{ibNYWYD&-NHJZ3Z>ewR)w#5Ke)b(G z)9wK4of&LeENgn2&`lo^9&JY7{2Prl4k`ck@X2l zltZByE0=8>iIR7lP{JsTqYmHoxiEDt%Z$@H*yo!^Hb2 zmLXl08N7Xk1l>0&6FB+OPl1Pr!b?gdm!{TmH36e9!&X?)BM=;<9!7wJWW%7IQKHC* zJdk3Tz^8~Tm6k$eEiW~Xt^A(ZibjSTN0TSeRi?E4s;d`z00(0iPGeE|2`eO3f!IMj zh`s=oZblm~B9+0#v@D{Wx_nA)a0w5Ifh3Eqwp2`N{^|y)0%hm{t+`U{Ze=Ez=nO^5 z#bQpzK$lXf67TN-OBIupcup}q45`MSo;8?R^v@cmE9PaS>soaE$lVk z3B*v}k+Sr^EAV2)CsAP&d_W48pM_z>kmCBa-mB+IiAMzvQ?$d7dWWGH>AO>Ypf++g zT?`V7#AB{K7i*EBBQ@I$nu*6tt-TTxl8vIPzZu~Xj7C<(gxj<%4QfQBx~zwxtbH2c zVQfXJz=T_W?>s=Hx~NyCsuZoC{D#gXhP9FY5l5SH_1ictlQ>pxdI7=`CDQCT7Hl-u zz=`F!k$xDZE~_LOlO$GM`bUJNk4Wq9GF0q=3(JVmR3xe=jxT*0H0w->^#rT-@wf!k ztKWQcYDspq;LsnVBT7{rnk-<>u%$G5FDcv-<6ovX)N#&$p(V zop^^Wy>Y z3!4d|cr!FTM!T*+`1v(6jI|Zhl$HBT)d--qMc$fx5lj!6Dn8DP%O%VB75Wpq6OL4< zHt0^x{vzZE%>aoQ`S6*|A?`A~=z8KT32@>E4}Flm`(U*ZI8D7N&J;as&yb0rgxHII z*@j*dZG3k}al7C$?+3a)DLo2Aptk0uB55ml)w{HsBwv9l+$e#B$-5t6ToMqL5)?CS ztyBM8MRn#Dhi3l02^AymMJ|zO)y2f`?ya}?w0EDLjwEza?)hB$ciT6*dsdU=HF@?s z+T%ffge>|Nx*aHOs>^@9MvK6b&*ADL$MN#g9S_Z=Cs4cS?2GQEA5P7mYTDDzdfV;hhJ%g-4rMniB489Ahl44g|LL*_ zp#)wou~2<9UNoYJ+35O;Q1{s2NgB{(t`KI76`PX}Rt&>wOK8bAol%1EbcqCwe%uIy zQe?qq`|L*t0ork=Yv@NlIG?ZODp`qnfBgNA!{@h4FJCWKXrX^iDiHehjnE9|<$hV! zy6w;t0iCc*tqJx=;hr41&u6sGeN>vjZQW6zcIb{%;aHUYVgF%6n2B2^Sp{M}L$od~ za?~#PZ*5Pe;Vj2vIK4De{+;6B@kP;`Ms5 z055!VeY(CXdtw2ucfH2`?IIqglvSkps+7kUkD}!L2c%tL(l=1MbWoHmNFnlsnbKEl z-(w}6Xx2(WpoxiP#z^2Y?Uq6w+nPXBlT$uqBe z6m?geJ_nVB<}~lVb0)vctb1-LWI$~xG{2VZUq2p&mG!gUc;g}U^xnL_<+FWG+PK4Y zQE{K0_MNQqaY{YA2p-sJev{fJ_8C=8;A`J&o(xI>QZBYl$s)l3m)1Nw{!X{#tH~j7 z|M2k-FgwVmtQB=;x5EdpN^`;js$?%f#@|aN;5RmoP=h0VRFF8vrzv+HVuh?qru4^N z&arwrPN#4{8_@il z`*-!p*Y_l?!4xOtU$^2<CS{?kD?j)jI{`5N z<@7slj?1-8^9;_0$30Kft-+YJ+?JetP_ovVFY2K~z2S!njt(x5;lHlhAVjO<0d`Sm zeMjocbVSLbOCBL(EO=$xNpW~bPSKy6kG&=)Y5ciIb%HKJqc;?t&)H>TAu~slsi%E< z7d>0umt4P16{Hu3z96ci5=IgdatJxqohmHoh&x2PZCO%c_>HcUi-6Rf0zJR~;};Ry zHbbSl;e7$m&Tsmia$RoJH8WW!79F68e?*-D0i1hEh+ZQMflq(_kRweZ@_iJn9jI8r zf?O%CCG6kzF0mGMnlFJ$${FmIu^9pUXcK@q^G%gnY79hnexi*Je4FLqp@OWAnJ|Mx z2s%6OFi#b9UT!B8sNUdtAxLDk)SGeNG#c1LG3FhbIkWk?j??HGM65x}nS7Tl@8p)` zbW5uX-KAet$<3Dlj*f^r$B1Mg&EEM&v>&AK>HR9jrlW&e_<`kk_p$U))eky$f%)>0 zTu{whxv{TB2yo?R%?UM1xN^}aIr`^a`WA2wiaHiZEsBIa7BEzNJu^~fwSm~gN&T?Z zrIvw1BpdCLzZ+dVaQk?AFSK|qqq77Dj6;j18JVl6&~2-%pG_9D-291gsR4AYdH!e2 z)5(1h%Ey;C*(D}_rxjJI2eUc+!2paJ4%Gr!GI|(eI=t!P!onzwV9#IU*t&TzF31$= zq-~%=Y_!}D!p9y0=RL1M{%SC9M=i6^FnCC~Cs3WFZGQf3mOM>90paIR&T859a{lybQxyIg0n z(2kq8c@R8`{j85wuaf1aS{rR3i2=t4a>08ccMp( zk3In6x3b0nGWJ)|S|s&n@VgS{DMV}mdSO(wP&oE*%F39lhzfnN`PFs>b^%R3Am&SN ze|O>`fY+yT#i8g`3J2_0$2Ms+ovDag+rI3G89cqwMm?Bs^Vx~+>7o#Ir44s*MPiD8 zw>~YM6Un%^@hs9S1)I~@z2q3aEqC&6J-aVp9LoY=w9V@BBy)K&;pPW0HAgRi-#CT; zK;h=jr=kkajN!IK-hS)d?DlhZ??g(@uhFm1AY!p0x!EKY_m1JFh!uA>8Z`v^K?lXT z?u5cb$aVVN555x$z?gn9@)qu{mRcSd1?(>8yMfQ_X+(4ukUW$b%Bin2L;{k(#vnuH zIzF4_!F${5%q%MebVf$b%7&JS*la%xt>vCjan_ih9aZXkbZuPf9{S7&rQw&(evQ-a zigrMO;(OSGYl(WLrBPn~V)FEph2FPFJ`vY}mvbf3L}TfgrzsRRh}qCa{Y2zJs(+O9 zy%X`!iRyGeb~dlPSxRhxMU5CMjbu9@I>E1b<>6qU0SsdJs1Fz%mS2dbRT`L~1};BA z>7BC+Dj@w4s9DJT6{Mk>znt08VQg~oLO{C{oR-b7kTu;_9aLGcP3*FSeN*7%y>Oie zD0Z-z`QA4YsOwtJg&`PNja{f4f|zc)cXh>b$#dP4qe0%#iK~iw4hoO-b zptnG>Mt%Ug$B$pmjqPaec^j1Y16j6ofTetoXS=fow*j61-QUZbN#ecMCI~g^TlEP< zQI{zbp_YM3?UQcBu)vygmBIcGeL;!bN)X?a|LEyUX!WeDfgucedD{dXG}(ILNzh6_ z^f+1e!*!(jrYqTyqgR{H1UCvaX#r4v+KGEg#+2aGAu0rN=gH{H6r&k#hM zy6kmmSBI4tjK8EAa=3EYGjJP-Rn;hIdZB{R_&fv=q@aj;8G9x^f*Y%dzG*X&ld6lj z?%WC+xowv=dYXFzhC-rO6LFsCcN^&oOs9Cin$Q87$cZ=G45t-QAb9tCgksTkm>frB zl+Gti)I}y-nwZ76$Ot_NX;usRN^6zQzmoM|*J$@&lj#XB#(C;4u{f`CQ_#OomA8dk z9$yyP4v-NR+N=zW;w$F>Kgv2=-*haK+W{*EVu&WgM=3}@^?OY?f-kiZdLN=lCvum* zhe0*eIFsWYV3gydP+he;I3uEWxt?u^hm;gsip%qT=Xjh+*^qqp4$+d&u%gcvxkUqe zNTNXqSB`$y0-Str%M$=+F;*)uFSd-QEevQXX^pq{mvO%T5leCR7S z8Wap2N86O-yTp2W^@v6cw=`%DHeE}vrVh_fZ?Nn?6#8WT0BU2Yup7_NeT}cb0yLSV zXF1<$@FZh^Jlb1AD4g?09$H8%LS>`qx-qgMFROzpZ``l}i)r(&A4{l10gbG@#52AG?pGE+W6Z98Us2mh@bLFo>C8*}6~cx%rMF0|w_rCVbqy^o=Ag4I zwz4uCE~Qw!Etu7)kkZ#bLLg>3dq%11C~9Mil8Q?sGr@H@{oGS>fJMzTc|GbDQi*?1?D_5(o;Uk!EHzwYp zmn0gh(9)(7CgM~>gniGu>4oF(y$=NZVNg=UFhQ+&_Gkq9Hyx}5_iCz(8k{1E=my)# z@PhS~C_?Ddk^vs?Of{A=;&&fc-VH1 zQT=eR7?WK#G?{+}btj*t9)TvnHNlM{Z#u!?yuWX}z5sJ7)<2*otHKfZVl;1j`=hemF;_X!+MrD%^RkFJeXK6bz9`S?JoF<^u#2M5X)n{b8+7hlW0gwGvboAsnX_7or|BXnG>H0D(>o*zB?na*SR1Gk)C{9!Ao0RV(*{MyKS?n4XJ93)UH?$a?72WoXlE+n zldCv}-UpXoVT?NBs79)Fe+GSQxw25$Xt`egB@5ZmQhmbVA~+B{?p-mUJNNhEo< zK6m`t_P-?B;csn$Re}xMNfwA7*ZWikTK5f{X~_2g3%%3qZUCw{ARKs52_iaBguYpp z(0_*2OZVWb-S)^$3TsAYKNIat=zGqaS_h%g8UV#O^vs`hlOoeCrN_VOSc*em_jDBe zjchB>dzTe2W0uXLi=JxC~y(cOl{RS9PZUKay_!MDo@g+Lv?X0s6 zH#vWGs4S zp@a>z1QstjC{8w&n;VpKTY9DPO9+4>OX9g6L=`8u)cUb>xz6wloRsJL`h6#xIyIa> zH;jU9!$z6&&FCI0XFdhoF-pIzl33St-&@^EI@6WX#)TKwHQ_CcnhU7QiF*GPY5uvX zE!P4xE==YDc5y?mAZyP$$T+M<*50bSkm4M{*f&X|-PqI-NZRkg=t58Dcz|Mci3N19 zWHr!c#o-e%#Wy@=_q8?}(p=M#ompwW4bk*sGC0*8+THz5PZ_|jw7|7kPouQ&To?XV z=(=Wn;L{`!dTTPw$qPV2ESw* zBfsH>1G_;$`MNpJZF%z`W1b+BcZY|WRYcPP88~O>Wr;$-K14izfP0*^shnD({9=|)3UR?uff-LI4 zIN=DmY0owI`pGe2hi%jNmj@OEh|5OGLnx}-0-!Ra0MXdTcgh{no1oCg?VJUSK*OI( z_TnuX%PR;9`WeHHY8oC}H6<<`hSGllVPlj8zYhDo0S(|EkIMDUwoB*zCXnD)1yxzq4(W(zS;4B8Ob3P$Z&!0!pr`b6Br8lL2cHQ8l zZBo>aOAYOOAW&l`-G7)$p z3m#-xcAn@A@WMZdmuv6^k2`boGNOw$GZ8Y2>13wUVLfc>`hGYkkb#m7yk?8Ar2MdWIV zP9bz0r{~%fL~1ya=DVl2<*h592t#2n&+7b8?N1#ev9PtWFWX7cKbWx%k~=e8KJ5#&^&<FChV9 z?Cy}lrKu?mnhSf5`hRZm&oF5T`+!q6X*xjp?EP%g0c2p(Jb^fzmTO#LzxEV<%zgzm zJ$&j0ciPV_kyTb7nB#2h9$rVzAtjO$mANAQ_(z*ESE7)`}it(^ZIO~wIxBkvV1 zH%7W?h9UdZ$4BCwmrXKGUCk9|eeD^$QV~h&Le*RX_bO^I-UB7X4v8Oq23Bl$fMnEP z@uNisCGx27@&Yb_G#GVbGn%}vZgOaiV|Y|;nFgm;qt|9PCj}M)o(g-3N+yR&>wReC zzGm6e7ph0!dwKY}9Pa9|cnenSMR4D3Ud7rW7=XX-j(&3D7k`7OdTqQLq)9F&>TEED z!E18fi9V0b-X%AV$3aKlUaR!G#=o`>NNA&vjoGYyGJ%oKay~Hn_K7w)=RJ_4ygLy-V52?9(Bi2Lh_7PK!-4OXQIKC?*PwYF9Rg z8p9DCh2k;;oH8#C_dqKpJwW@rLlf(RY%5YgHpl2*5OsK4SMIg_hZAX)_wI)eC)ZA# zM$4<#30Shz9=&1K8{8pPg8h&K@I}%V;2aa%4Fsw9dcUgvP5`{$ms@#7Ha2_Rr$223 zS2qBc#^fe7G?uCR>|*7Em&tF&TByHPvzYYKy5GxhA0GG>k9xTlU~q*0x}~tXy%x>S z&V2^w?dT$i0H1e3@3VZftptKt*l6=icQ>TgxIHx3FKDBzSl+r4)P9IIY4bB0RgfIv z?)_I_cT(~d+_z({>a#+^iKdr<2Z)=1p7V}@;_D+(?K;RbBF?U8alo;#0RITbTQWoY z%~$oh-aP9$_qx2}4pM&jwZj=zd)QkH@SUPCcb>CVFbfUd^7_1?mum9^mw{@FntFhN zC(L!pn-lW#XA~DR3HQCh`p{MT=X)L|_^&AP*A&A3dyk?F91pBpARqGl1@_{kR8Qx{ z9M4ZqsRzonGvf5xV+sT348fj@F~2rIgL8>5mc(BMXt#WT=D)XT;_PV$v&(}@Qz>h{zaA;g- zWNY=PDR<7cBJj(q0*M|v@i-}6hDR}e5be7EkVHNcMGU=NDMa)+;4yopez)AVkfTQVd+RKIck<}*ADwfMlHVt^OneSK!nA_IM+yRAC;rxCnl zx|a6`(F+W2?(R7h7zI?9c>qYw2*iMS3G}|&evNOlEfI!Va+n^yfy=P#Pc90qLtk%U z<)NoL7R5-O-SK%n~h%NVgfW}`aH^zcknep-IBRrdxDVitH>N zh=1Sf5j*%cN(6UX8~-ou84~90_Cdn>&oZrz`+w-d_aBP*-?>2i{@>G`r^SEE>;+i1 z1?$CtTig9RWgNKN-+q;HO}bv%j#XG*psUPz z6~OaOs+u+)1O_o8^|3$Az3tMn8+-#^+;5!u2WHG3!K)|u1|{78y6A28bzx=y&*J<) zcS!L6u~WzYHeENn2Vl7dJazj=w`$|NKf1cSJ!UwbJ)77^d`K(xY2Iy@(9hn|PuyA3 zh~F&v+FPq6`#;y%y#2RX#Q%CWh>!ne8tN0`e`h8A+3ME`znuHqJ*h%4Ka;B98N7<7 zkQ)eX#qwGFQ8J0jQoppbs>J&r&sn>Ur28LL6UhI<{xcVdU;o=riT|bR8O8r%Yk#t# z&az2cC;f@G<-AScxl0$Yb$3J?*DeX+_buI%`982H>5z6*OO=$t;o|J#WOGBhabW3R znw~2_3<>9dMix3a`TURb|1kC9{ij?Y!T-ZC(>eg#hG}MZ{lhjO&OeN$P30fPX3jdy z56zaXTZYih%iB+d>*Ot8i6j=nTdU-lfzFO5au~Gn z4F@gE7PbXgWhC1Cv7bH{zppj90Oh{v-`wkjPY|hM-jT{=0m*kjuaxhDsnTlpK`QmH z!p?LQ%!HUSns(t^u7gpqJqLi2kLO32p&OwnkSy!q>GuZ&JwXbdayOt72 zZ}u$Y^a5=S*Np*kFPLo5XMZ^lseECg|@8^Vmd z=r!*zE(h(0i*fiEz)J6Ue)%a1%BCB-ZSJ?5ljhsy@%=01Y<7B%zne62eMJh()oedmnPI=9v4nbW`C{C@S{kn0ap z&p?Thx$IbZjl|Rc#S(imxBy;>_bf!_SIW0<-<0dYoiZ6Hlc3vGqEAA9-N5(<33&x$ z0REzijimd330knf*Zu4E?j{hnLSb)6=rUt9+N{S^Tcu7-{%NYF8gufld@Bv6lX2J% zO4HHe%pJ;0x+sXfDTuygeXSOw)RZkyEJ^lXnwi7{q8C|07RN)1VGnvGYbOEwk?<409$EZdje@M=H(J14grW7k=hrK<>7WYhHP+C z!;gMMEZfwu)JdC~r1Sq=-hVVW|8H9@&VO=&*z+F)#eYnD{-bMNmeQYZ193^m;$qB$ zINCJkL0smn&4W0uZJmV>*TQ@cwgg>G7qG=fLNLGD7n86Tz%E76bak7ofs*Wh40rSX zf0`wD|EaM5$pzws@$65>^|ZIjE9D$$RhkYcX9$f#cXgNCWu}CTOi1v^8RmD=KpN{ zG0S_FG|lRs&AX8&ez({5pKe~h%X+?t>HJ%_s{gww%B1rj)7g0ZCqosz|60iZTp-E* zCw=@sQ0Ky_J&RbP>ejm$ZSk zvX!m?SCs*AAH0YfXNf`^h^$*c`^en!S)5c#*^VLe>F03LQ*O_8Wry4hO8POHr(3d* zVR38s<8$k+0*fbpWy%FIHsD7|7V8oKg&ktVehxBEoU##m+br_`FN2*ktU7f#^I!c)01yY zIh?c*+t#IpusFGOtYORcupCax6IF9%dq)l@Z3%LY}I5|HwXXT}@cO z#g$7b8i@fhCq`eSSLDlq`1QZ3na28cB>Ml`-1{$uito%t+D>c$*}hCL(>=L%R29gNtrh<@LRDdkZ?pAfQzAi0lF{2 z{=?HOZ|yn~?f*2v`G4X6nF}Pm|EzgwP$#24d`DegO&PGPCHOsB-le;anP>(`MW|DzZ)#rpqw zApZQ{(k<%(n+8X7A~x_ZBA(e1Q$k<4YKGnU0`Z*{1-?lA4y0*GkB(SeBpF3E;vD6| zNIbznoXf~th_7QGPI7J=4aAxDrP|cYxWX&T6|Xdi5r~USG$c%AM7XvAVM^n{U7@}f z>+1P!f~L$_|DP;*jDBW1jn~d=Xl7C?M>;vRMqVjC&fjO3wY`vV|L@uM`gJ7fe^ucB zs~7vfTp%I-gQXiO_kWu0(ARXCd4qASS>r%3rj>b|5XMxWcUT3Er|iN)q#HK!STx6! zv|G{`uD+DbsiZ$8n^TT@%QmM4Y#a#ve;4*k)5%r#bwv8#lxf;Y4W< zf`}MIX=~7*G{e4f7K|>#W!$ zZJZoMJZU#OonQos4o=jFQWrQE;dH+el`|a;Ajyl!%TXC1ca>fU>K|I?X}EPRLUe|Dz!4NO^C6gg`jM>yk5by=j0a>kh`w#y}SZ7_jE%oopyKC=&> zKfZ=k%oxv%QhPWRk|PF~xP-|FcG6MN@C}_lpnY|xq9YC?v&8@CUyg@wAyM0@YHkfD zwwl9m0?Uc=L(m4qqMA%plQ}DNIvNH2)&p+F zj&JQ$bx)-$Jii^m@Q(@^051=K%tl4nnCx;ex`mIwY(mHT4njDyR>0~Gad1|&yHizN zjV}882_QU_$HR!M6^F$wD8(r^GvAsmf3>cOUPX!sSBuY&U- zSukr{6(v_^?M7dD{V)s=qJ|JNw*G#K8dpb+bEJ(s0v4B1XO`!k*$!ZhvQySj+U)y> z-RZd03;WaYtN~>mm1@gMJpu{?b+Ao#@Dd*a-b7ueiSf}Vb%4l1jj%8gYyn1tdHtwI z%d^slVHYrWa}?^+^6Z2EqZhW@g9-W`7qy3~?*Zm{84q(W5+VI*FIZOLqYS3Ffe!%? zpgt|n`ZSu2t92^mtfQhGNzoxtR8-(EJFtC7*HAh$D$9_L`oq)d^skU^pmc*yhZ#{Z zQ93hZtB`J?bc-4FFn}vILNFcv;}8%ILNMd&2c)C&TE=`Z1(eQF@h5{{-nZl+MT|n9db6KfF4f{u#QUin_pOy5JPj zQ5X137o0&l>H?qXf(E3cF7TNy00~${UEniaP=|EX1wPXSAAr+U)CE4%1r1a)>H?qX zf(puk`oL%U;0z&9C-@$Vi1MI*@R@!9{obBUiz@05pXrb9kdFGpXZjUwo!t zU|>~IzxYhQd`J929pf_{^WBG@siB^kiz_^Rnvjb6rA$rmOGrh%Qr5}TpOA|Bq->C> zAZ==>N6OTUZ$m2TkGTw*2@aV3HPjnrO1?dUHm#w)C{t7W5mHe{lwC3vL|_f|LfIoz zZy*(QK-ni#K@rpt+vmatr*9$Csmwbeu~r! zCf9>Dm!)#@sZsmXxM+O;T$|T{Hh{?Q57a2)XTT4QyxnE7 zkd<7Hv)bv`+UdpT)04(Y<>X_OV|M&EoZT==KjW-&SetQRaS6$g9yS`E&lCz?N6{dZ z@ah6~0T)q_5T3&aexvrM|NY_!I_I?RSD=>4!O_09r^&wH?4;iK(?5-xgJsU^=%4xP zy?h;~wd0dU?ZU5CPl?_jE^)>5pHEI3Ed3C+c(R63<%> z3m^PS`F!|U8T7jk|4`643r9g4Sudc}yXF|S(_wd_+=Y{Cr8K*oD_spnt)K+elz=#T zMTX}?_2{%#f&Op!jq|8?b@UJqH~$Iw-wS)eUi1u4#xf>B{yUa!vFCr5Wf$^457@=; zF5x?cNpL^ek35j#AR>VO!OCXgR21cGjmNPW6(AtU?-S}#?&qb4y=Eua@4&2x1HhBy zH^ZP4M;_sChO-+I>dC3*&n8w8T%Ivc-JA@1Z-n21Fg*QeJQkBHqw)MQE#gnFIk}Ey zQIF#Ou#1jiV_)v#CclaOh8y||?n}LKNzxJoOk>7BJCad@0r2SOk<4=!TuO^afbjFM7Q_I(f|XV2 zZXjSVN)%6*QghV04u3LNsW%{5@8BnBjs)4pGUi54zH#)uW~+1=_OF9`Q>E#z|GF2D zN4LGA;$gAHlMman@dOwF`CvQ|iwIaY1@O}h1v7sls{=4RIU29%?_jS7q6)oiHiw=u zb;a~Brh@xcz>Jgou0U?h$Wd<(E^lBBu^@{Zb3M~2le3}&^04*gT{fV1CZTA zQ%HV2Xx-j5f&W+C=JgyHGgS3Z{j7=h*( zv?jr%G&3lp00g%Z+y_d#D`=KHTRRYpycqJHU^OQv561)0l&P}x#v%L+;io6~ek7F! z!=Mi=hAkSb-^L}-m?63h$NT#|q?2IJjtqgqey7*nn`5Hp4_X36mR#s~h+Hto*FgZi zz8C#V^lW$hq(afOhJPb+D3$y(68ZP@@1M5A0qh;yp=79FzJ+ZiqPblN2b?cqk=`2` zB>A8dze)r=Ne*Ju6ibm=>1LBA2R?SA--YC(=Ion)hV5XmZ*+#S%c}?v|9ea1=?!(s zf*8YOOjDb2#K0YsCQo7};Cu5O56<(~G;G}>-wauv!B3JLmW(|KWdsOM(%*wP{ux6L zSem?N#*qV-A&*^h_xc@%d|Yadr5lIl_#S?)xGZ-)X`2AWl1IPEYWTTr!BdIzA37Fr zhIJ(Q{~ELNAImfx3(;woS;YU$2TBOawS%KiN~Lz%II162{6;NG-90`+e^e^|pMy%} zOXcVB<%g+RKm1`o`k%_3+rO@F!vpV5E&E@_b-!A!AAcF&Rla<$e*N<0pmz7Zy!*9L zYaB!2zII-#_;(-9b#Lgtb1?fSUvVqE9$``MqC`s3UC>5p$;I$!nf?GL@H z?zSGvU)qPaoyOtm?Qz-sR&CU@<7(^S`0?oR_@<>D*9Ry~kJ4@yX?LfM+Q(!6_Fxy4 zUcNrAeEE8QUwiaV%bibO%YNs$(*5-F^3U_hxp8{kJ~+QWYWPPK&>prAk2~jwr`A#JUj0$6l=~bHYIWZ~Dc^kY?>gUaE1mB(|88syb{|ap z^YO=H?_gxR!^_}aJ-%*#9yyi2%+YD!mCM8a$@H+^t{awrt2RH69_x2sA3t^vPQsCA zo@?4}V7>qTzWV3;@Qqo&`&d4`J@K!a{hRmJ!F#XVuN|J9v@a(oZ^l2p>GkF0jT3%9 zIXOS+cRrkj?;p-b$Gf4{IP`08%31~V{SWQK;pvykZQ!Wx`NF!ato+Yk1rI{dTK|EpFD zF1CeZ%cAd_B*Y2NL{uivJD`WRlR<#YetyWMCI*FIJGf&JW*Zi|4w|J_63{xYp2;rw4$x$}QZ z)r#}~TtISdT0i<&n_pVdx05Sfq87Kv#VvAii~MqKkqh`$fzbccyYVKhzmo00bVFtJ zzgF0PKIr(3_ z|Bw&J!s&o4xxg`XR*t8$RxF+5I66y7_}o1EI{`8OZwF!NF5JKnPniFv&e{K)s!^=} zaskqtT2WvKxFz5Q<^28s@ujD$!jG#goR*_R&x(Eszh9i}D~hj1$un_iO`qo5~3qa0^jP_W#t^r%JHHf z)&&*gfD^tYDPZQ{9MK_OXcV2$^BNP^ff!eaJeZ@j3UH`iBYS*`(=|n@sYH4cC+m=` z5y_W088}+EiR8%`rvpE0WQVqKGK|)mMOKO*u&DrN>m>OVP6lq)$f1SDLB$1XvXt9v zoDO`gk%JhIzY5HSnnxtx;N&tSlSBI!Cs!c3OeA-4GW1KWLL~QaGIT?&N+kDjGBCVG zGIusxtHAUcITeOD8F*eNlOHhCtHAU+*%u?6jF?XL1?G7bcwQ%`#{?$>&+8-;aX(jq zIUA|Np9lN zQ3c-DJ&L?F%K+@JljYCTf&X=~Z zh{hSln9)QaF;$GPqNzYtU&9zX>PHe&#|S5yY$O5;0vPb9i%G