From 1e3569173356f151407ed30154e611e9e17baaeb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20BEAU?=
The attachment ${object.name} has failed with the following error message :
${object.state_message}
Regards,
2eS*sE*o R$@pexaqr*meB)VhmIg@h{uzkk$9~qh#cHhw#>O%)b@+(| z^IQgqzuj~Sk(J;swEM-3TrJAPCq9k^^^`q{IItKBRXYe}e0Tdr=Huf7da3$l4 PdpwWDop%^}n;dD#K4s#DYA8SHZ z&1!riV4W4R7R#C))JH1~axJ)RYnM$$lIR%6fIVA@zV{XVyx}C+a-Dt8Y9M)^KU0+H zR4IUb2CJ{Hg>CuaXtD50jB(_Tcx=Z$^W Yu2u5kubqmwp%drJ6 z?Fo40g!Qd<-l=TQxqHEOuPX0;^z7iX?Ke^a%XT<13TA^5`4Xcw6D@Ur&VT&CUe0d} z1GjOVF1^L@>O)l@?bD~$wzgf(nxX1OGD8fEV?TdJcZc2KoUe|oP1#=$$7ee|xbY)A zDZq+cuTpc(fFdj^=!;{k03C69lMQ(|>uhRfRu%+!k& YOi-3|1QKB z z?n?eq1XP>p-IM$Z^C;2L3itnbJZAip*Zo0aw2bs8@(s^~*8T9go!%dHcAz2lM;`yp zD=7&xjFV$S&5uDaiScyD?B-i1ze`+CoRtz`Wn+Zls4&}MO{@N!ufrzjG$B79)Y2d3tBk&)TxUTw@ QS0TEL_?njX| @vq?Uz(nBFK5Pq7*xj#u*R&i|?7+6# z+|r_n#SW&LXhtheZdah{ZVoqwyT{D>MC3nkFF#N)xLi{p7J1jXlmVeb;cP5?e(=f# zuT7fv jSbjS781v?7{)-X3*?>tq?)Yd)~|1{BDS(pqC zC}~H#WXlkUW*H5CDOo<)#x7%RY)A;ShGhI5s*#cRDA8YgqG(HeKDx+#(ZQ?386dv! zlXCO)w91~Vw4AmOcATuV653fa9R$fyK8 ul%rG z- wfS zihugoZyr38Im?Zuh6@RcF~t1anQu7>#lPpb#}4cOA!EM11`%f*07RqOVkmX{p~KJ9 z^zP;K#|)$`^Rb{rnH GH{~>1(fawV0*Z#)}M`m8-?ZJV<+e}s9wE# z)l&az?w^5{)`S(%MRzxdNqrs1n*-=jS^_jqE*5XDrA0+VE`5^*p3CuM<&dZEeCjoz zR;uu_H9ZPZV|fQq`Cyw4nscrVwi!fE6ciMmX$!_hN7uF;jjKG)d2@aC4ropY)8etW=xJvni)8eHi`H$%#zn^WJ 5NLc-rqk|u&&4Z6fD_m&JfSI1Bvb?b<*n&sfl0^t z=HnmRl`XrFvMKB%9}>PaA`m-fK6a0(8=qPkWS5bb4=v?XcWi&hRY?O5HdulRi4?fN zlsJ*N-0Qw+Yic@s0(2uy%F@ib;GjXt01F mx5XbRo6+n|pP(&nodMoap^z{~q ziEeaUT@Mxe3vJSfI6?uLND(CNr=#^W<1b}jzW58bIfyWTDle$mmS(|x-0|2UlX+9k zQ^EX7Nw}?EzVoBfT(-LT|=9N@^hcn-_p&sqG z&*oVs2JSU+N4ZD`FhCAWaS;>|wH2G*Id|?pa#@>tyxX`+4HyIArWDvVrX)2WAOQff z0qyHu&-S@i^MS-+j--!pr4fPBj~_8({~e1bfcl0wI1kaoN>mJL6KUPQm5N7lB(ui1 zE-o%kq)&djzWJ}ob<-GfDlkB;F31j-VHKvQUGQ3sp`CwyGJk_i!y^sD0fqC@$9|jO zOqN!r!8-p==F@ZVP=U$qSpY(gQ0)59P1&t@y?5rvg<}E+GB}2 6NYPp4f2YFQrQtot5mn3wu_qprZ=>Ig-$ zbW26Ws~IgY>}^5w`vTB(G`PTZaDiGBo5o(tp)qli|NeV( z@H_=R8V39rt5J5YB2Ky?4eJJ#b`_iBe2ot~6%7mLt5t8Vwi^Jy7|jWXqa3amOIoRb zOr}WVFP--DsS`1WpN%~)t3R!arKF^Q$e12KEqU36AWwnCBICpH4XCsfnyrHr>$I$4 z!DpKX$OKLWarN7nv@!uIA+~RNO)l$$w}p(;b>mx8pwYvu;dD_unryX_N hT8*Tj>BTrTTL&!?O+%Rv;b?B??gSzdp?6Uug9{ zd@V08Z$BdI?fpoCS$)t4mg4rT8Q_I}h`0d-vYZ^|dOB*Q^S|xqTV* vIg?@fVFSmMpaw0qtTRbx} z({Pg?#{2`sc9)M5N$*N|4;^t$+Q P?#mo v zGVC@I*lBVrOU-%2y!7%)fAKjpEFsgQc4{amtiHb95KQEwvf<(3T<9-Zm$xIew#P22 zc2Ix|App^>v6(3L_MCU0d3W##AB 0M~3D00EWoKZqsJYT(#@w$Y_H7G22M~ApVFTRHMI_3be)Lkn#0F*V8Pq zc}`Cjy$bE;FJ6H7p=0y#R>`}-m4(0F>%@P|?7fx{=R^uFdISRnZ2W_xQhD{YuR3t< z{6yxu=4~JkeA;|(J6_nv#>Nvs&FuLA&PW^he@t(UwFFE8)|a!R{`E`K`i^ZnyE4$k z;(749Ix|oi$c3QbEJ3b~D_kQsPz~fIUKym($a_7dJ?o+40*OLl^{=&oq$<#Q(yyrp z{J-FAniyAw9tPbe&IhQ|a`DqFTVQGQ&Gq3!C2==4x{6EJwiPZ8zub-iXoUtkJiG{} zPaR&}_fn8_z~(=;5lD-aPWD3z8PZS@AaUiomF!G8I}Mf>e~0g#BelA-5#`cj;O5>N Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/attachment_queue/tests/__init__.py b/attachment_queue/tests/__init__.py new file mode 100644 index 00000000000..7f25150f672 --- /dev/null +++ b/attachment_queue/tests/__init__.py @@ -0,0 +1,3 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import test_attachment_queue diff --git a/attachment_queue/tests/test_attachment_queue.py b/attachment_queue/tests/test_attachment_queue.py new file mode 100644 index 00000000000..fc29f902f92 --- /dev/null +++ b/attachment_queue/tests/test_attachment_queue.py @@ -0,0 +1,50 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests.common import TransactionCase +import odoo +from odoo import api + + +class TestAttachmentBaseQueue(TransactionCase): + + def setUp(self): + super().setUp() + self.registry.enter_test_mode(self.env.cr) + self.env = api.Environment(self.registry.test_cr, self.env.uid, + self.env.context) + self.attachment = self.env.ref('attachment_queue.attachment_queue_demo') + + def tearDown(self): + self.registry.leave_test_mode() + super().tearDown() + + def test_attachment_queue(self): + """Test run_attachment_queue_scheduler to ensure set state to done + """ + self.assertEqual( + self.attachment.state, + 'pending' + ) + self.env['attachment.queue'].run_attachment_queue_scheduler() + self.env.cache.invalidate() + with odoo.registry(self.env.cr.dbname).cursor() as new_cr: + new_env = api.Environment( + new_cr, self.env.uid, self.env.context) + attach = self.attachment.with_env(new_env) + self.assertEqual( + attach.state, + 'done' + ) + + def test_set_done(self): + """Test set_done manually + """ + self.assertEqual( + self.attachment.state, + 'pending' + ) + self.attachment.set_done() + self.assertEqual( + self.attachment.state, + 'done' + ) diff --git a/attachment_queue/views/attachment_queue_view.xml b/attachment_queue/views/attachment_queue_view.xml new file mode 100644 index 00000000000..f8bc7c9d329 --- /dev/null +++ b/attachment_queue/views/attachment_queue_view.xml @@ -0,0 +1,106 @@ + + + + From f25e35be508026b83f1a66010509e6444f1f432b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20BEAU?=+ + +attachment.queue ++ + ++ ++ + + ++ ++ + + + ++ ++ + + +attachment.queue ++ ++ ++ + + + + + + + +attachment.queue ++ ++ ++ + + + + + + + + + + + ++ + + + + + + + +Attachments Queue +ir.actions.act_window +attachment.queue +form +tree,form ++ + + + ++ tree ++ + + + + + ++ form ++ + Date: Mon, 11 May 2020 14:45:56 +0200 Subject: [PATCH 02/56] [REF] apply black on the code --- attachment_queue/__manifest__.py | 39 +++++------ attachment_queue/models/attachment_queue.py | 65 ++++++++++-------- attachment_queue/readme/DESCRIPTION.rst | 6 +- attachment_queue/readme/USAGE.rst | 9 +++ attachment_queue/static/description/form.png | Bin 0 -> 76955 bytes attachment_queue/static/description/tree.png | Bin 0 -> 42403 bytes .../tests/test_attachment_queue.py | 37 ++++------ .../views/attachment_queue_view.xml | 8 +-- 8 files changed, 80 insertions(+), 84 deletions(-) create mode 100644 attachment_queue/static/description/form.png create mode 100644 attachment_queue/static/description/tree.png diff --git a/attachment_queue/__manifest__.py b/attachment_queue/__manifest__.py index ece97f5a2c9..54b8225a599 100644 --- a/attachment_queue/__manifest__.py +++ b/attachment_queue/__manifest__.py @@ -2,27 +2,22 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). { - 'name': 'Attachment Queue', - 'version': '12.0.1.0.0', - 'author': 'Akretion,Odoo Community Association (OCA)', - 'summary': "Base module that add the concept of queue for processing file", - 'website': 'https://github.com/OCA/server-tools', - 'maintainers': ['florian-dacosta', 'sebastienbeau'], - 'license': 'AGPL-3', - 'category': 'Generic Modules', - 'depends': [ - 'base', - 'mail', + "name": "Attachment Queue", + "version": "12.0.1.0.0", + "author": "Akretion,Odoo Community Association (OCA)", + "summary": "Base module adding the concept of queue for processing file", + "website": "https://github.com/OCA/server-tools", + "maintainers": ["florian-dacosta", "sebastienbeau"], + "license": "AGPL-3", + "category": "Generic Modules", + "depends": ["base", "mail"], + "data": [ + "views/attachment_queue_view.xml", + "security/ir.model.access.csv", + "data/cron.xml", + "data/ir_config_parameter.xml", + "data/mail_template.xml", ], - 'data': [ - 'views/attachment_queue_view.xml', - 'security/ir.model.access.csv', - 'data/cron.xml', - 'data/ir_config_parameter.xml', - 'data/mail_template.xml', - ], - 'demo': [ - 'demo/attachment_queue_demo.xml' - ], - 'installable': True, + "demo": ["demo/attachment_queue_demo.xml"], + "installable": True, } diff --git a/attachment_queue/models/attachment_queue.py b/attachment_queue/models/attachment_queue.py index 72e057ced99..4c058dac348 100644 --- a/attachment_queue/models/attachment_queue.py +++ b/attachment_queue/models/attachment_queue.py @@ -1,36 +1,42 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). import logging -from odoo import api, fields, models, registry +from odoo import api, fields, models, registry _logger = logging.getLogger(__name__) class AttachmentQueue(models.Model): - _name = 'attachment.queue' - _inherits = {'ir.attachment': 'attachment_id'} - _inherit = ['mail.thread'] + _name = "attachment.queue" + _inherits = {"ir.attachment": "attachment_id"} + _inherit = ["mail.thread"] attachment_id = fields.Many2one( - 'ir.attachment', required=True, ondelete='cascade', - help="Link to ir.attachment model ") + "ir.attachment", + required=True, + ondelete="cascade", + help="Link to ir.attachment model ", + ) file_type = fields.Selection( selection=[], help="The file type determines an import method to be used " - "to parse and transform data before their import in ERP or an export") + "to parse and transform data before their import in ERP or an export", + ) date_done = fields.Datetime() - state = fields.Selection([ - ('pending', 'Pending'), - ('failed', 'Failed'), - ('done', 'Done'), - ], readonly=False, required=True, default='pending') + state = fields.Selection( + [("pending", "Pending"), ("failed", "Failed"), ("done", "Done")], + readonly=False, + required=True, + default="pending", + ) state_message = fields.Text() failure_emails = fields.Char( - compute='_compute_failure_emails', + compute="_compute_failure_emails", string="Failure Emails", - help="list of email (separated by comma) which should be notified in " - "case of failure") + help="Comma-separated list of email addresses to be notified in case of" + "failure", + ) def _compute_failure_emails(self): for attach in self: @@ -44,10 +50,10 @@ def _get_failure_emails(self): @api.model def run_attachment_queue_scheduler(self, domain=None): if domain is None: - domain = [('state', '=', 'pending')] + domain = [("state", "=", "pending")] batch_limit = self.env.ref( - 'attachment_queue.attachment_queue_cron_batch_limit') \ - .value + "attachment_queue.attachment_queue_cron_batch_limit" + ).value if batch_limit and batch_limit.isdigit(): limit = int(batch_limit) else: @@ -62,12 +68,14 @@ def run(self): Run the process for each attachment queue """ failure_tmpl = self.env.ref( - 'attachment_queue.attachment_failure_notification') + "attachment_queue.attachment_failure_notification" + ) for attachment in self: with api.Environment.manage(): with registry(self.env.cr.dbname).cursor() as new_cr: new_env = api.Environment( - new_cr, self.env.uid, self.env.context) + new_cr, self.env.uid, self.env.context + ) attach = attachment.with_env(new_env) try: attach._run() @@ -75,32 +83,29 @@ def run(self): except Exception as e: attach.env.cr.rollback() _logger.exception(str(e)) - attach.write({ - 'state': 'failed', - 'state_message': str(e), - }) + attach.write( + {"state": "failed", "state_message": str(e)} + ) emails = attach.failure_emails if emails: failure_tmpl.send_mail(attach.id) attach.env.cr.commit() else: vals = { - 'state': 'done', - 'date_done': fields.Datetime.now(), + "state": "done", + "date_done": fields.Datetime.now(), } attach.write(vals) attach.env.cr.commit() return True - @api.multi def _run(self): self.ensure_one() - _logger.info('Start to process attachment queue id %d', self.id) + _logger.info("Starting processing of attachment queue id %d", self.id) - @api.multi def set_done(self): """ Manually set to done """ message = "Manually set to done by %s" % self.env.user.name - self.write({'state_message': message, 'state': 'done'}) + self.write({"state_message": message, "state": "done"}) diff --git a/attachment_queue/readme/DESCRIPTION.rst b/attachment_queue/readme/DESCRIPTION.rst index a5e20daeebe..57bac75fdf3 100644 --- a/attachment_queue/readme/DESCRIPTION.rst +++ b/attachment_queue/readme/DESCRIPTION.rst @@ -1,5 +1,3 @@ -This module implement a queue for processing file. -File are stored in Odoo standard ir.attachment. -The attachments will be processed depending on their type. +This module adds async processing capabilities to attachments by implementing a new model attachment.queue that wraps attachments and stores additional information so that it can be processed in an asynchronous way. -An example of the use of this module, can be found in the module `attachment_synchronize`. +A use case of this module can be found in the attachment_synchronize module. diff --git a/attachment_queue/readme/USAGE.rst b/attachment_queue/readme/USAGE.rst index ec276d247b0..a97a271e528 100644 --- a/attachment_queue/readme/USAGE.rst +++ b/attachment_queue/readme/USAGE.rst @@ -6,3 +6,12 @@ Configure the batch limit for attachments that can be sync by the cron task at a Settings > Technical > System parameters > attachment_queue_cron_batch_limit + +image:: ../static/description/tree.png + + +This module can be used in combination with attachment_synchronize to control file processing workflow + + +image:: ../static/description/form.png + diff --git a/attachment_queue/static/description/form.png b/attachment_queue/static/description/form.png new file mode 100644 index 0000000000000000000000000000000000000000..fbc9f6aa644ad673c73401af6778367da0ac754b GIT binary patch literal 76955 zcmbTdWmH_v(kM(4NCE^I+(`xv8r&g)!QI{6gF7Sy8QdA1;0{3smn69R;1Jv)xD0ZK z=bZE2d+xe_zHio=)qC%j>ay;t>gq5h1xXAv5;P &7Ooz~&gMv}R&K7Y=FX;pW2i_-Z;_-ypVU0( z50<<>;#xk4{Kfjv^!Awv?z`7&xn$3phR{6Usk`n^Yv{UFmkG@rHNb6K><_EkTA(cp zVl7a^C0K=|8{>*hS-p;1g$}+phyb93JqCJ*{dOEx`fb9C>w7@-mtrkj-Shj~2)TGZ z;j>t;?S2jp19Eb5WW>ynKJ 5M#Sd?2#Dh|Z~*VGh|lf+nmn9dF{(VC|3&V{$_|~J=$iM$ zDVfTvo|~nOP^BhkxKUm(9FF$T*q)n`T}~;wqalQL1b!58)ierR}O ze00^LTT^+DzwxSu^WfHVW+1BI##|x~nhA*L{_S2iu9a-qeA20(?Ym$^yiw5nxm1pj zBKvJqWvZ2Xxn8x&u<*Cu{KCK}Mvd~J_YF(&7(cQD5fofJcsXUbKLu0M3NxEfVl11? ztTK{}PRMl?L6yBvR*X(gl_DbZ?&VZ>P6TaaIn=5VY90uEpWJ-3gt`r_qyMJ<=7v5O z9v`A~Ar)|7ix{v`_{DCOTgH2bjXt02Mnn1N4FDG*1f!DWH}|&DlEC6gg}6B_jsz{U z7n8Z3M==dBj@nsoAig(V0 E;dyCse6Hpky8Sqt!Ef=&**Z04mB?_9mN*z38B2vA6bx>#rD286zcBNvSR| zqSXo&qrr)n#8UGXWkQcj%N+R73XN0LH<% ^_dv2#L zu-`W-2gPh|6`HmKByCIk&8ukz90rR~^#M33O@9L8_R4glNyNkAR|b1uXXKc^Ty6MB zm +ZId7sFHbca35&FvnR))Xfk3}dG=_cck!~qG znV4X&*1p{Lv(*AsGNaDaiJ`p(%Y3$?o-?)#JRQ~ToEuq|>`j?`@KP;8HqmOml6IGo zbE`0Mm;8M{lP30)5k8L|X)lO&vl0+1OlG)GiP6VErFK1Y+Uqw$M|oQX>9&pV2LWs* zUY_UI0+t2A5ePoS*FC%17GO?7@xjDbgZ&^wEm)PgxE@loSP|GC%p+jdC6Zhc6KG+W zFY)gcU_7(i3tdhjT;eDzRP} *DzH#c zJnU#XT=2-(%WG&P%2BI~%#4kTo2`Ac7vEnV8mDIR)~M+3e?O+B-}Sm6y!fPcTkf^x ztSa37fN`2gi;yark#3QXj!I|37A5?WTu`Nw?FU(tuAzm6PUA-DaKK9Yx6OYhu`w_k zDZl~u3Ke%TTltl%%Js4=q6 wyYhiBM%Y@7-61Lp4yy@PBg^1$?r|R};KygZn zzmHj$y>SC7u}IGMRC^n9(FDmtT4YHOvXn2FdHB(Doj7Xz*YzvpS7Cnr#&$-dnWaLk znB+p`jJ!H~4R=&mW5kTTQh}ji*A*K2@?z2_D8^=1DP8H{Mjd;9uI>FLogWP{Ge?BZ zKHmd;Y{kAwtE%*hOMqUwcJ! ywM2$F~X-E?dSeMV8t`;4D(GgvbR9w1!0-Yi2A&Ps`yRQidAVjOJ$L9UY_?w zfez^zx;6yJB&4x8Cs-OTqVG{tmjhkWWOsc%YR D* zAh^IS13C>z !Moc@K3yhK~WX`@KVS_+*&fiV#C z)!WYeQ@> QHhm!ZpDtNbQ-ZEET7rV16F^S-PQ^WvYAaJ|8Et_n_zF0(KRVixgN;5Wj ztxX5_riXPXWu@s*Z 0NcLfWT7I zp5s}=#=eKI0pPM%IlQcEeo~z4SKhXv6ZUi6x+<_+nCbTYJK3dFA$u+XSoz2#A^wy? zb{=&YJG0pPicv-`@b6y5(bw;Qxm}UFXr&BepHI6YBS9V%)k#N#lPy8U9xU4NfZzLX zswH9N%i6lGAP!mLUMisFaMpnkG=ujti$>d8%nP((ChM$W4k55#f!q#d{2f^rDSBTK zHtfyKINm0ateP&es8-5KUp$&ZK5<6=( nZ&N$bL-@f=0$dEY zxAO|~clYE4#HrSD_$V^dMYUOuw{m)DrdMo9UG`+E`_xEX_>?Zo6Qy9ji{4ElFK-OZ6 uio0atTTIPi$cg38x zo0aZY@6Y;go+JH1tAyoQl(3fD(>X~w2eowe(gELr !Vg}SKiDqg#&Qx>v9qU&sS)`H}__ZfF{q^s9GBIQ$Fx{-PSd-0U!$~?g>d? zU-OAFS7_K~JIKuZmEg$eT K!+93B zpKPbavq6!&>tfB@UFc!5YS>M@BTL8`>XPAas3S9lSS$8tw6i#!E?sHF%C{1GyHSD= z`bvcXh@)m OW5)s4vmz@gLus6B3S#>#b{8>qZ+-!j^GnWZ zCYl382!a*+(#RR9>o 1?EC@ls1XnEbG*(01&nS2D>sl1?ehEH)FXua3!;~kPIwQeyio0L$-eQf3T zNJ+ZswW(o}YvB>B1B{m#?I&Tq@=YrI?$R-Q quWtg##^)q{QVe z-DLzg2^$LAYhnzrWMCafq3K?9-wb{upWfhk(#jcwDNL%XoqzM}nL-+`&&gUau~25# zh8Y*lW)|dkX~o3nE_&QN?<9#_|D8>Up~2etS$|OPg@0IV(>X*hN3bjJgJ7JL6!jZr z&&$X#K?M|Q%i$6d!mvD?q_%Aum7ZX1C-123w2*V{XA*sSj=1b qM${=9ay*#~2xoCR2;N!GzD zB L?avE-3mXid2zS-_aRV_8^^J&?H?f8{_I+n`~GdD3W zkpF79QnO>Xp=Gom;KrOpNZ(qBaYgFl5r26$F*#ktt(gtXar`_R3+@}+xW?`_@5Oxm zyc<-gLA4;E*?JQ={Sy%P`KK60X0irjT-n-Awqetd1;0=IS@?lOeP&-;i;b;AfMN?T z-T3C98K0^WmFj2`meHr=wD{ckQWC#}uUtQvwwt%;R}vie6!GzsY~RSgd@)!96FwZZ zFy;e>sWCL?Kf4sJjf(?UJ-|HzR$Pg;PLnpZ7$rd{wgyZ)9@Bg=Rj83#^taU_=uAwq z)D--6juCj$n>eM-$*efZv@mfq-n!Fnv3s63q;Y0O_DN9erU9O|Taym_+PRmr8q5R{ z5mKd%`Oto`4UoR(h6M%zaKbJC-hFt_8cq5qKq8 YI5l?soAZdY#O6rb3zRXf%p_$OtVgytl9YPEWj9(xvPBp N$T_sts# zx=7PyL2vK)iUdzdgz YM`K?phhYKR$S=oGQ 8RJhx68b9v zq{dB`iU-fOxMDcFIt9y-_oGp}v|+h@L?nq-dtFlUQKgkRa4nfBQsbPA>rHo7uWQMd z;%OV3!$}Y0l8PDa))!QP__?H7=+$acW`t!Dg)s!nDKvlam1V>e sbJwH19I!%t)> zvJT_o_5yx_f8Ksuz?^ob*dE3P0QOU(#ZAIu`%H{8r^+}-XyucB(V~W-L6(0mGv|PY zu;cWEgx0qk`4|*|037W(TJ(#y17e?x5uNBWqCEy;hIj0*lS+tZ{DpBWYnyJ%ap_`) zhrlhB1G4!zA?M}GV-1>#=FBWHib$w&>Nq^_#O_U3wn4xoY~oq( $bH=!?46yKfaN7 zF`5v`0Y{U_(5Jd_NM@sq#LwD-7^mu###w`q2lFm>qi5bCnx2<0SCbnG^(NDhB4MMB zEzYTHzd96=zcD0VYHbo7T$ kI*hkqnT)$+|Hf`R+zm+VAhK-IxplEDl$${IA9B zM>E86)V=j;BEh!itQ@8WTIb|(f@|k1cH=~X=!bSJ4>8;xXI~ZD8J1hsdjYH#I<8gi z%9cJ=%fu1YziV6c3Gf)GA@vV>#|aJ@^YQ8daQ7R{3yKJv?Tj`F<(XtsAs2hC{FFWw z<)!UP?8TGOtJbrIV=Ti}+RFOLUfbvDPMT4juv=QjIKgU<-t0+}wyhH=_qXMb)KT(> zeo(E5UwbF?f(#k&G}Wb(Dm-4U)H+NSW&{?J!V{QT^@vAe)m2p{;T;3+43;-F=7Szn zi+@I+H?e2DD}BG`=8YFu(E8Cu+A@0(2KPtiD&nNT5W^v$p<~Y|-J2|Mct3wVQe$3* z>CN(8k*8W*^@z_xg94w08d9h?SyW-;?%QZLC%{+q^7e)bEhZjUTamotKq&7v7bm70 z0|Sc?cN%g|?mF&jHjIGGO`zYa?G^v`10O(Feadnh21z6Z=dZ3#4A#Gf6n?L}il0-> zDq5D#OESrwk5_HGO0TUco{-5`3W)%NR+Z6!wkzGW;tMdx`MPbqr)}wMTc_yKH#Ll2 zDUJ*_T5F8@=_^R@;s!0IGbmyn?p0FO!WtwA>e-8^&+`8s(w456<>b{W!{%&P%)_N- zci)h+Z;pAtIw4BMmSbE>>Ze)?jx+t%*0eV<{K)M}DakY+&+HSW!J>rkHJsTfgo29q zfwrtVmqBxXhcD1}R5JzKg>z#L4++ZKE?w_7s}Qc ({Au8%#a2rR1HvB{#GsEypX| zBMW((j24zLeZvpS!&||tzmyR@8ShMWUs}#vQFE&x<+H(}T+kmM2oqC-C{|P?nQv3G z?Ui|Kp^5`Tz|)?-R6nN3`j-v50C5o+5NkUM+-6!f(VW;m71ha&ac%WFzM?NQxs}9W zCcSjwVT?;n6~!gC%gL$&SBWiBWRUNzzYZ1Sd4)CPLRt?p;*Sah5dKa*K5=<#F{m3W zWfOXL%M_j&OHZqLm~}voSPF5-`{$IW_ah)$4DZ%TPi1^aLM(dg0}TM~Rwg0wPSZzo zjTJR;e)9UXZ*u|z+6p*?`^(3oVX^N@nRzG3bu#6}7u+>3Y|500!&GVrHq9tYj;+gz z>Kz%!bl)>+@cnTlndm}Q7OhF%+8{g3iYsu|RWPXH7)@NKqbI7g>Frq(qNCN}6hQc- z<$6+jQx~plA^B07>}K?Rb6%yEu%rd&(>Gl~QQ2c&3b_RadE-``^7RIX)i#osztSq9 z_15l=%j-At--_ha2g7WxHV=+UsCDCO+xldF&!UD+j2y<` =6 zub=%XbeeN|-MoIGk^50yORGaMbcuqvn3 >b}0}Y*=xLCk+;_x<*$Lo|nY0+^p zaAQv~d}L#*U6&qH<8_!lEH#5VQK3y>t!Kqno!$LYp!;DMM^h7Hcz2F-&Y*?0)sGe_ zYz`6Yb1w3!TLNmc)7dXBO~W^~9!VkY#;&VG~AmEqy%xAq;CWws`E1SnFNcgj@SI z?&TG8@9>bry&?y#+2>lY> 0#0Rjb;pHhiDI z@S;_{lJom*kuNv3y{Q4I^e u8$wdKL+V6%!w;vY)i8|{!%S)i zo1Kp}uxpUDy0ZGn>87|$a7uYd8cCaM7IvA@-~}RJ(cqL?JM~U*Ei4FRH(no=9Q(IU zn^*=ACq)kg4!6svbDi!;yG#wB+IV>x9F8O%CxU{d`)$T%_L<{@W *sWRCOPy&+Xz%8snTqKQE;!7d!2`AB zc!4(D{TOFBYub?_kzqr0 v8tdVV;zlVzTH{+^c$ z4voHH+SX9nge9RHb5`}#K1N1FTuinLGlcgg(sgjl!F^Brig(Sg&2&MI2lfUO>>H91 z!f63HOlcdHw~Bx0%+qXbhc7NHB#pFm62aj7Pr!srQL%6RRwlnyf8)h};Z2%#s_wQj z+fOgYq*dbLb6Y(CjISjR)DFwbSF8oa@ko6n`%f-F+%r(_&-|{p)twg2R`xbEI>aln zJAK;P{T+MFv|r!`CSq&334wzA=}i&hH&L*KkSIm8KW^ 0O^pRrwtY_Sfm;WfH^4-4n*=$IPJ3$TfX`ORfqZnz#AI>~G^s zCkcb8CK4NbGD@Z$#x|3+{Ujr$n)E+{rW)S*Kcf=Md$GVoaD+IT>7Sk7V@9I@aBnUr z4i%T__kMgEeK*~AZS<7~>Qs?2H>6Fz+%EP!G0e$>SxGS}|I8dp7fzDOdv$v)Wr}Ak zw;znoEPpYK(F4=K=^i2x7;Y%h+MaajV51xdca44cTAOOm#?3`qLB1CIoy{XU)hD#v zG99F%UdL)#mlC;k`*L5rEP;~DY31H{Slru1Y4pAa^r 5+uqb-_Pr6;VyXQjPLy!OzKZXKgy<<( I{%9(9YZ zA;B+5>jzu&=|w^JZtDdk3O4Nv9pUpP7=F&$Z>A%<(2V^`t((fgC$U%a17>lC;!@`E z(etzp<*cVsMrfNEEh;L``Q;1Sv6)>A!g4ahxMm~e+@>F`e2v@wrn!GS-O8uTjpY$% zH$4`FRGK}Oi!GiCYq3WG(phTwggrk9S@f*RC-*Vz7*V>Gp`Ohvsku6Zh@QgF;`+mk zpN|X~eBj)}fVuboD4t41-;!_d;h>Sm%Sa)jap&Zz9X=4R{l*$YB4Byab`qW2%COhI zk`iNR o`$i^`F>uv!P+Zxs_p9}@ zIYTxBlgu%;G-!=BQc|_gdd?Im85&$y9ET)vvSN$R*Jsh0Y^_>n_sBmm$q2c8f^7gO zxNzP?srE|g6Tr+q>>!W|10rgE1)hHfM1MnAdw=(Kc0S_2 kpdE#f8} zjGI+-y}ys-j&}2srSVmRYfRPo+=PqS{mwN EL|9SuS=l?D?be>uu{lAL; zZrJ!Wg;5Za9kBKD!8zJxscV51k3FHNE1F!OX4G}$$S9pTW9cjHgf{&%Lz1@uv}^jO zIoz>(A+n?NSf>12YP$vp_X}A+NlNwxuH<+3Vx7H#VuVDnTYs5V45D4Lu&*Yb+lqZl zoZb7K1kv*^x+}r}f?p-ApyeckTU%S(mkl=fg6-?yPF=pc#O=?2MmTGc_=Mg|?Mmo^ zeuD!3tsRr42cnwPp6$bnrwYS=(c!=G`1jj?A^at~f7Cb150M{Il8_Yls~x9s*aW&a zFoMX|;aG0fBoesQx&8gf;V!ZvYep4cC{lNhbyae=r0PoQpKznS20MPlgX30CkJcz5 zz<&9aXd4WmD(q<>JeuG>CsYrP+oQn>Qc1dmJCbOR=mOD660%M`gN!cdETg{V`)<`X zNs_Zos-0#@UpD83?u$;UilRWgV$6QK1nA;1zO4}$>WR TtBMH zt4`Zhe#Q(`()~MAF3GK~)YV35=jm9Q0q!%XK8kw}+{ss2Ws|WziPlfeo zVigW$3EWe540|7UtJk(as Ko?ZI&-6lk7mgE5gw8N;f9z^?~$O z%^d5HpG62_#|6->aGmrM9{C?$5GxAjQs54?#1#l!!q(Fn$UvBfnu;RViyk3IO0uAy zMV{=zO42bq cNbL0Cvff9KS>J>F5P1Nz$M#k@YZm-)2+vI=lHX-(oe`6`xwgcj zcR`lDm!>;XCi8j$B3$*s1LZJ&)X?*-i(WiC!+WR2#a`k5L*L%HfDy8bpAgHK`}LF5 z_h%YOxN%KpOXyf;(X!#nmLq 3MWFrXm&5YyllYgWHJaoxca zlLSIVbaIMW@{bkfKC)*}1z@hx^cr09 wk+TMbi~n0EumwUy zP#Ui_5M2vu??>m@DlPUtt{&D^&`=%IkBOpWY;h`xXyRcEIewVTx!>C@PxbIXg!+MV z8^NiaFLi$9zwh@oy+M_)D%rZPy1N_}3w&SY|HGm)o3M{j*zaK1{v{CDxlBmmYg5K| z7`B;R?(f7+?sd^1+rfz)=hYh_YcPy2r+YiTB~RJLuc^`MyUV!ZCT>uw`?$8EKu_s+ zJc=$6Yq3Oy#k624ZEy-n3V`dETXZLoDy&~NA_(zeR)3opdFA>Bcbo2-595 U+n=H;Iv&weCvkzlO#}eJJ+GwSG}pW|0p=D;%srktEj#E705VJJ$5cHQ z<0#Y`p(i~Vp Z^MuD7}D>K3OBEUG4IO0${i_oyGa1eM?vyO z%CcR4ve~H>z}!Rt&h2%|PdRFlmis0BOYJfkQ~I7FC?Ou%vbU{{W5#zyFE2IwdMw>h z x z`J*uc{e2z8hw2aNN>~wo1kBge?_>zBu69%5Yhpn`pswnh^o~Ko+Ykw4anQ>WpyVa+rQHD zs<2cOmC6f?=3oH;Pz~EAr|>TyZCZ^*YT-p~t;R3h#1}@C1Xh>i2aidemQ1xmX?ji@ zd>?+x*7P2wCdTsu?>(vtaRJ29 QJw=I;g9Vh;68^j>%CD8 zJAr(cSsx2J=|MTys>wN18i~1$(B|#8DW1omInCa`9Z$N^@VRocbQEvzThDu6{=7p| zv2v3z*DpEsmMj&`Xcd*B>9WgT T?!%eA6^K4qNSt vN9!Zb<_lH^pWzIAG)JrZ1Gi0lw>JMSo*8_rp{uA^ z!$G;ommK|}7Ze=tvTIKbqdi3CuU97*AOJ%Gj@6uksz=4 Qn>U$k50z4rl~F!u& h`nxw4w)2VsDs<5ZQcHmVaz>RqTh@xr{z$_dZ&h z3-Xx#>^h^ld6dC}kXkyl4xQSywqD5X@r_;lM^TH2UkX#i_J<+0MHqo8TDNQcy*%^V zEGy0CqU9Z5q|Rbmwk}EZe;&(JKj5Qibvw$0HH8!#_HE `Q!PNg*i$s8Hg={g%9)dCM++WPQBFEWtnpvjJF?11wMYkDh2u^DroiClb^a^! z-;whc=}go$+oGt5rHhU=mA1{epbUQMG>Y3zE6CY<##!@fh2aAh)3l9nKtPMr?0IlW zTL?=^hadOZ2;_1;4EYpL!jTnV{dFKmNLezcB&?Gxcm>}TgY5&Qm#sgH5gw_gta2o! zciok!74QrY*QQ{4AW|NpAeTstWhcDI^~$Gz#P8x-5rNZ}Uq`)-{`OS{3(v4bKJRv{ zEd1Cws_X5Zzhi%4OM@e;_MS@eRobP$@+g4#4Q3dFja{&+?P@=6ZecX)TZ-Udw2_?y zmKsfnL57f6k{qFjn(G!vWpnOW3fsk3&J$yMXumF-#ne<^{V^8j%8!XuE;s#gCGMLg z=0_jHVz1J>U$15w6{$G(A} RgdYVrrFH1~%zA6C%@SLi5*JC& zH2T ?}bnH7 L|dVD4p%GlI)0!OlaG$I>BAex zD=oE?cJ)`8uC ~gpEqI2L^Cbpx zcLV9C{GXZ`vA$7}v%?V_R@N%Rc@hs-SEg%u9pAejM@kDujr0jG!S|rq%$crv6ONkU zcc0jWV?J>qx*GjxIp7UK5G&y8e>{$5mtp<-xj-d&C!!0x^-q*~;sQj=FX?dQ z?qQ;Sx^nL1A^ZZ4Hn`739Tz2)_W3xzh*BZR@X&s%mQG &M5cxg{cPIoL}vZMqY<$ z_J{!O_qsMlUa4A)W 97aE=7Rfn$|Qpcy#$5R?}3~_Q7ivlzJUvU$kV!nE( iFcd#dYsH^q*+ zqtC%PjA*w-ES_$=Z#*pRZ|G!emW64vZ*J+zAR oZu0rtpzs44M`oQ 3cd(}|jHfxfhVYJS zKTdsfpnFgw;CwkATuVxk4i~K?#y~_mkQ|6be)A&dh;p;na4 VyJ!O^c4b0(R{*rQ*nEzCA< j$2b`FK *ltB~Uhx@j z-BVWb39W@yWD6Ej17#?wct&sUC9{)9?^Vn7Xy4*o4{kj8jbP&T(Xc;@`$&657<;pz zo^6{rdT4MaLInoX77Pq|2%fB3;$O9ulW6@&>c1~(9FgKY7)w*9+c@K?x>rs60;W|U zu^81m-|Y=0Y>`yrr9Ziuc3h;R%k45(Ja{~U#@B+V`u=W88WO1(u3TO5IRj;~Qw|*a zeVwKuigLcZcu`M?$J)M<5WdyKioDGDQ!J#X&GtP9no%Ekc)MU-Q!l>wlNmoq;a>G} z%JL09jU@VI07SR(DsL$r5)gZPAW2Fgi>G$LT2Fs0o0K}7sh`omi+ZPDG>C!6NIAAR zhy~#_p~!>@Da{1@E?0XP!7X^H(qCmS#DzjbFxSOrt^ZypmfteoZgAX`L`D+;C@GZN zOUu&(uC_eZ5K;)Qg8lf!$Dq#wyHKgDy2H=}^e4NYVlqe$n|iwN!z`{F{p~2Wz&{%s z-5xR7`tak7@Un|m{>+R+x@Ci}dP(fMN$l`XK$q@qR^iLNQ=S=f2ftY>?#bPl?IOR$ z{cg6cub6SrbY}NcNWTyvr<_C@|BLZ2&J{~m9};|1BKxek5k=QJ-`oe{)M0|F7wsMS z*%7ovOfO$$divQ+?6=Xvbq_%Q>=Iw};4c~vFoKiJci)x1X1h4=c3(#v)hsG@q+XK8 z6bYOA-* Y0hR? z`C+z2MLLS<`K-Dm>~6B<%Dv;4??#zlvaxj73z8+98Q+Ho_w^sU=&C57fhkZJn}=?7 zo51POye^%zg0cbI3~gZufAo<6Y^lSJ^?HA?C2Ps}Bl;`E?xc(2@?vZ5$T?1l-VCfa zmCFGgmQtiJEia~#zS{^w?#JL~Jz$V9Yis GKa9Y zlsITII}JV>TqSgwu{y5Jkb2YA;~~O8d~&*fv|980Yp0U3w+4>|XoqI03NxZIUzAQW zWaO^%-nK^A_xy2u0;T`%Hq%z)ARqNuIMy@ut*)l;tY7u>|H}jhfdZvvDdcZ2zx7g_ z1o-zOH=XqL9y_vk3Esoc89llfj(to{Z;K!ns99e09KTl@AJ?yVc2$IB67qtd0({Pg zSiQtruN1l1wF? rKTX_17}!;ePQ6c$%nf+@5hezmaSoOi&HH5jLU6|(NS^<5D1`ZNqaE+w@Yq# zzv)qDjFCP>p^?XYvW3+m(~ldz(2HZZbRKqafd%Wh?DBE{%5Htz@_0Mx2idRSqR_hB zd3KfU8)gTZ5ISyOccNSZbS(U3{iW;Z=(~TSco-NvJ49G(Xh7xzJxmzY%aUhYzO|Zm z(H%x4PuL$x&MC@$Do2>@Uvxt?B_$<06kBfxV3cm3mPOw=>A_>TS{jmv-5zr)rX_>k z|DX!^fQS90o|q!qE7k(NIrE4Yq|bSt|6lKdis)D3zfSqbu1Qz=*-$@=7@FvRTb`de zw&&lcR(H%MwZkdgu2v?H`Vkh<_+@DD|7m(UJcqQ!umCo bcQxG_;`7-4Y}#Vt^2T1$H8f7-l6McGKknY5|W5`rM hRX(rTdi_@XSqO;hk8nvf)#kYwJI)Y)=o3#2*mNc3pLt2!N+&XSR-x9=v2n z|1xU71$$ie&DYm+Q&Li1bt1~dmrq?@0(u-8Z~@t)$2&Wp`7@8sdKP#8ZFB#1u(ziH ziin8hC|T9cEfU@#h7_}Y>SXj`Qz!B10m UhF$PP$1k6PR(Yer$j=d>_t4JO&)GaZ+h<`q%H&U@5izyebCUvY zZg0_$pGU9rMxULYo?cvt{|`_{M@OKIt?mBK&fnA1J%8}TQ?H+Ie@jv0M6WN>g-cV% zBj}SpYys6#{%4OM0`bFb1^D@!DSd?hxr$7LM|9;!3<4@kO1|oKLZBNY`fh~ui78(` zbuIW&>gOo+t)Gx#BIdR;@Dz|hLi+Y{eSKXF!~z-gyVto=gA4}$3#`!q^x@&5qN0Kz zqI+;qmWcpYSynazzV;7KkiG@;$o$it=UHJvLAM`ONOUx2`tX*pqZ~EP>c99!1ZpM6 zd<8&7ejZ|+p-?ordwzO~^BS4{$?`&a1ANo@0kq-Dzp$|2=j)3QtwpSVBPG|Q0gS7w zuh*&2$l&>hjo%3WjYRr0Q>ac`TigBJ-TcCWuCDHqX7$CzMfbmX0`_bPojASm4Kdb3 z;IoM!@7meTf8a$5{GLC&L`;(+W@dSLd3=1ey@};%DnE@@54X1^K?q#Qdc#0ZGI14b z_dk;%pm}QaCH>t@+OP#MUW&TCy n!zIM% z2%-4j{A+Yf9dyz|uq1ob10fMkWHL`2LHY)Ut3b_a=MLOkl<3b9g7D7~%9mdd+ocy+ zPXvj93;v6%WKA%WYV0@=@Z{{QR*UIqA?80MHfw?{ecDHGaC38de0===f5Z@g7JNj? z=IZMD8u>XQ e>5~Q+J9> wX0W(e(E!iF5@wdz5&g6!H7*A0g-2>nTiP^pHnbc$o|Z4 z)`dCN?2OaY%lLl(tG1JXDrl>)1=Mx;@!kn%d|W+(Vod1sMpfz#9I*y8nmboa+u*-O z#tG~CpCzp`B!to*r}^|(jEA5U2o&8p=znJLH9 QRbo#Zg0p+c%iQwXs{el>O9ce&}f3wQXW-jD1 z#S=H%TRRm#$~q|5I%ai|SpMoLdY24pB-93<9BmiYncMgyo0L~%DfBs;|Fyth7$+y6 zywL7MKbuDY-nTUb){CXB2(<$D*+8Aiw)dZY3*+O)(B+f}-;=ze;um33K6S<8nd*bl zwqSY_868cK8^z=K;b=4uUvYQ7Q2XN~ )E#BN7GICan=3b6J)*sQEta85SBSp8H4M)Gzevf$dA*^naA_( zNz5sPCjYVM l81(VH3g@QBcGn;Cs@6EeN;7wxG3)XUOAzpMn&=@XEvgN#PTS9 zt|<#wViCUj@QT&tjC~1myfJaWv+SwMOq(lhLnCyvu~HlJa5C%~poVbA{}c{DnVFdp z%F0CGlZD8qjR+g!p`R@*LOGf<<@c(aAn|S;n&N?-hP-ssN0H;_?2A#TudA!$olPbH zI%^y~mQT1?Fgb*~%QkPcvV9se?^q%lP{`U8e^i#<8u`Wb)jBV9{tA*=aBilC^QY+Q zIN-6RxY+9c_JTiiM2Loy^E@Y%0u2*W!U^e*x67eodsn5AZgP6r6z4@0bc2(t2J{I8 zvQsrh2cW#XJ?Zur1a6PDEbGDrGKi2N0*>V?dJ9%GmYcW{wchd zVpOlVWI#Xw@VEmL*5hAkghemUYT?$~Avr`!u*w$S{QJr0RJw*_`=>ja*9d)O61P82 z$J>??70loB#1PQtkQ8lirFw>2v8qcK9d+a_jXgTkEBlE!eA#92DETY!gFSBGa!%mt z Q2(z`4-1zi5=`qZf7bC{|C%ufzE|txA1DjPUDYD8zcQFo{`fG+X$d(yHlt ztn>Ds-85tvyyd80Z?z3K+sD=U*e|UIFLt(cE2ueQQCP=jIeCH+_!>UwYmS3n*@w )A5*RVXp4)BtNz;
FBWM2GWWdm;`Pl^RLD(kev@X?Fl=e- z`q@Q&d=$&745~6jAOcOLr#S%kJbItf(2oJ 7kuXM;cki`a`d90nJ-j39JP zu$CPctm%v`XEaX`Q9l#UFc=!)>pFbHRGf| M=?haEc~Z?3T-n7?@QK84xQ-rY!T#%9(rQEy+*-cUA78q!l8@B XQJg^U2heiuy^pbwTN2%Avs-=_1%&Z&@G&t zoB?-}ITmJSk||DstAw@g{^Xs)UVZMTogXTRYPLqRT5fhYf+Q_O*4 @!c#mNAi4D^m`0Rk3^O2$@_vIFmjMABn#Fl)daTn ztKU;6&-((M4xbSm7y1LGtoZ_j(gY;(Cmj9WcgBBx5AMNCZm{f#8PJVX=U;b^UbWHs zJY<+N#wWy?{p@e`7ZSDi)k@mO$7^?e_0Ot|UEo^|wZO8E(H=A;NO9J;9{#F%*mQAVcYBhcsCDu z#}t)rQUs6tb%8Na@n8Hd=S9gsGX!qr;*WWf+mU55FdNsA)xK-l+%jqhyLTabcer_Y zKr(m2VX5PtIH?mNz7f_LG5q#YOm~wK3>yuE-iB9=@poP$c;zG0a+$mCh~|hYx!8ve zWBSiunHL>Fe!k9^ktB4T4!o?hG#gIZ$-G^93TH=RN00fONH~BdEA3zrFgiKG-2VD~ zdwbxMfB5-Q0q~c&s3p=mt&ZJpkk6OpjNIPZ?{pBO!N2c{piyGTQF}7~8Ot@1Sd5R= zly94ukN}c|+T{H(9UrkSQz;$aZw67fo6hoFZ`_9K;ZTU`D{$Kwn^D;Tu?*w5oG^ zE+>w~Fi1jI;GMMeUrUcZT;&kkcP9$|@-zP9>+#2T#^b4K77u4Q^N%a#&hx`;pW?~y z&4QoripnPUYUj^p%I|92Y+Bahf37_D-Q5< =DOU=i;qRngjYr66tjM#7P{2X~m;ZCsIfS3 V(T6!YyY1*$b&!06q#x4~%9HELu zpHzJyuXl38x&GkUDay%aqn3RWx&59$oscWn{hlqrW?#gUzjFVTN|a>0WGbw2kMB(H ziWIexN5JhkJ$5dy%0<08zXSo7)Z0Ign8}S%c~iKN83{t1oK!d{YHDg58-2hC0%F$* zr$GMXb$IH&*p~&~X0n7e&K~wwobyN5`n+g BI;WKu~CFKu2&~-yXE6K^6Guz5$dHY!rrL{{n*Vo zbJ#Pt7K;8;W!|Y#;7MCltH*BC3cso7YsoJrAy=VkvLLpcra-eh%vogc)6+TcY*ZMz z+9&SyJ{meYI#>e0O(G_ilaWcCqnQK)w=w)^pudH_(?}M6G?tv|Hj@c;V+g(-exTR9 z5`LSqZYeA4bTV6x6Ab}j+gmbUyqKP+7Oyq^a&+;Lu>hfCYG$uv%dxSvc)Iv}Sykya zEi~zon}M^O{w1@?oSggh=512KNSmoY{EMFBzi88U=nc#ZMA`oI(AlwH0$N_?^8# e*^ZQzOy@>JMinBdn&UgB;n->=s z@$vDyu%^IN0^GYuurQqH&VjNYu%xI~=;%bG3MnGqBgXchLslM-eclINP;018z~P%X zKMh5_G2q)E9J%RY$$L0;&2?;rYd(fWZ@Lnu&wBidlP7^Myfd0vlSO{!6^4ie7yLJA z$KcA3-1W0evT)JYsP74-nn`7qj~*!^Z%kdHWMyUH*P$QbDx+!?R(75*Rzy2BUx$d0 z2c37MQp7QA_r=N;F>}|QTJAvKaGu;cJRs&wnaQ8N|0Z%hJW1dNgM6 zUdpqpIT#(cMYg{?1)Zgu53Ow sVy;(<((Hc>F9Ene0`xpe-_yQ(dGaZq|D>RB {o)owI7UP@y`3le=C=hc{{ zqerD{*oL;$<$rTtyT6DEY%yErk!TF%BDhKD?;e$I27y!DKXMDX% oSpr1EV=5t)Up>mi>`SjD6TbYFf!>GfLpNNk)>lTc>&YNE$FO8~*1@GKR;O_6e zhPQMUP|OT_Qj--G tY!lL7=<+x#|Pw?Q-(&erc{rpg2&%=jus5ahTzEH#|XKYzoubE2Eg zE`7C$rr!onA>?(XZ)G@>KYEo70iU-iC~A#<7m;0(pOwa*3F}@1gdunF2!{mgmqE6l z=m~PnRiooI5G8sq8W<4jLMnW|I7VbIRJrk`EA}hwthR!&ODY!$A$jDca7x(i&Lm;b zwcq1Bd8Kau)1GBE_ND)85O~+2))sAlz62z`^RzcSFV_vCP?2$DR}&j_buAcBbR-}+ ze40$_BpD0ux)%_+*;#>5fmFE{o;Mt`Wk-~UySivW$bJEBg57cF`T|{;?vLG_?kl}A zB=cP9Mb8@(w4k<%`8#YK7T@Eo^Q%BB;;%%E-dC|Xd3MM>3hou!EM&k&MD#&M1|a&N zw=q$44YdDSr!^zcDT1Hq@N1{Gk}O8S$KyD0pfQ+Z-QaaXA1NbM;8T$(Z%)bx>&<}c zUPO)rX6Ee~c>v$Wytk`SYL HQlUVSpLs#PflQra9Q zUm<)N^ AxRRs*&u?-vFE20NWtD=AjEsUpLGznW6v*qRq1SFXkqGxiW tw9u{h(ajKJqlE5^8faHjWS~jPV`GF%6sX3N0#_ONQ?nio zJv}|#s<#MMBn^P0>gLXblz^dIP(nfipWW~)8<99TmU3@zkIQmYUP%dw0}IW&lbq;P z*zvn|M)BZ_$P1hwtA;bgMvMTc#++&Zz6o#-pt *!@%E-5F-a3R`M5dkj*2v2SLHq{Jp Q>d ~&iiW80z 1RLdOHVqhA9!b%I6n%P@NhPGiOTb#M5c6#rD86147Lqw5@o<;%+qPBuUFgVb$e#i zaV2e^I6@3r@?DQ!2euK5jDn}=2HK&Nlyc~U$K*UHD41^J3(!W;@peUTUm*+#Ia65W zzRwo;3Ol=wt>3I2X+)B#x39Oe^XY<5*+|<#L&DaOTtJKWY`7+SkaB ~ zZnnEj0ALF3x6Yhg!^tQqDapy9!ovo1ioSXCM!?CJ{I5rwZMjIm!hozg6aSJy#r;=7 z5h35CC-=)ae-MqgREsk@uGJ8644JS`eXbaM*Wzho&BT fp>aZ@GWCFZlSdeA~7t44xGQY@D&4#gWY=%auI*a8Aw+7M5 z@!vk4R{s+=wG_dg^USe%cRxq_aC}$|l@hiPm@czT;^b}Fk}`#=a$ybgIj3e%ze!bF zj>8&w@ =|*fj+5RZ}yCppXz|cXV;OFND zT8ahO5%Ig*P{w6zCgvDZ`^S0W?0^|Nfg`vKNW<}Cdio=ITZ1;n^1PkRwIO4mfdfd{ z?01pHU%VIcB|`%eZ|u996cMW|yIGy ru={(C*61m;9Dp17e zvOI7R%V*M7{cZ-T-tWDGP5Qm~(Z=H}wIR3AAy8oi>E3Y6VpY&!#VUg(Y=G7A?b85# z|8>Q0P}e*QhFHn;fjTS*wm{J+pVB}M+~ZF@cfD7YT*=_SwKG)q{I;EXr*fszu+8PX zvT1qgawY@vb?A9eta}q^u9^We4hqcIuV4QPv4a7x;^*AloWXfj`-o!?Sq3o(^}R1Z zttMXyj&Xt iTRa_>OaY25aG0!3 z$;EH4x0_r$9>9lm&g!e2O$c4q?cWMWXvi6HbW|pPF=ro9E8A(WAGV4i-K+GGZC{ho z>m54J_P^4(6oQ6zw+CqHX~ -Egp24}he{OAx3%i) z)mftO-Wc9Yk95G04Xr8Aw%(p^w_mtKo;v9n$l4`99eIm)w6y8QxKe=s-C|elu3vA| zrfio?Yb_lDhbU||sJB-w<7-errgD{vbm-8n$gX03L$-IhvS3=e@b^sad}{x;72S8C z5N#g%n?<_LJ5llRux_k$r_+x6`u2XfFJ-4}df!_>BFlVYfX0JZWusSggpp1_qsclA zIGnJO7U$*9J_qaUJDtn6TXx4{!L3Na303nyBU)wC=Z3A*8U75rqGz6tj{#t@-LKZ& zgVu44?_%>#hSQe0EOjxaJj-~GMZH$}kT4&%jYpDOELW;-%dcNPjS(S&&?1}M$tudp z5tEU1_}#krEzKDWg*zQJ*Bre5>jGLm7I4`AvN+;uh!K%ejS>mJ%CSlST9+1=fWv@f zzyU?HYknjk>B>}OibQ5yvB3HmZ5>!^maMd(U{Le+!cR)}ewfvxBRb!QfRnDz??c48 zl;5|~U(68klHl!o&KwTo+}{s3X!I%6mR}v|Y~?f#p|Q`Jlik=^{*eEg$==hK!t`nS z+2y-7%jbjNh!Pb=)opjmF)X__Wo4xc)$|8Or48a;?q(9QQbwBdqY}DlWfdM{g;<@< z?S;x{6jmh*t2*kMrh{l6vl{9ec7wyW ^l0#wu(B>$*tn7sWYwOH0 ksF6#z*;&nE z)Y806UM=09nrn&>%~y!ucF?xoL`%=$2(gZwKgz+TO+Z4nqR2_%lCt8@v}Tj#WNn8r zM3x 44Ka$U(U z?9aTV0S;Dpu`RhC<5v JrkZbIzF%Z`Ml*zM&^zQ^iYsScjzd#Bc3Igtfvj&Y%;)NT+u*QmV zj)q_VnzUe O8;h3$QP;qen&WXV7PfkMr*w^rHDq4B> zy#QDXhIW{oFH ^sHhm^iL66 Gy(?gb`Q?K zEAPFTB|Eh$Tg2Qo2ce+4_5@_r%m9l^NxuTU+q4r^uZYDnT%OS!ha#CN+Fzm5NE#Sa z*^LwxX7P)IqEO7AQs|_$9Gx`m4IC|QEyHtBs+F0~4|u0$F84hxpki1$`&XIi<)zge z*sbOb?nRo@I4F)3p|&GWnOQk$x%-|fF-~cfOaf+p*mYthqE5yNG2q{f>>@7v5#@(n zitSip7T$7EHC5~pESaTcN68gHdkOt5LI=NB=2sq1r8BagHBFQ4sVSz*FkiKq3E?JQ zhubRsxcO6)E@c7=4b}0|(b8MgbYQwly{?Ck!b~g8d++ku|2&$t=)tG`X6^Ae{C&WE znNi0ipQ+}xB6K-~Cqj0SkTdOX Mjcqax9c;Rc_^$e5PT)A7pn=41-N zJMg4}U3<;Ng lm<2P@jS0Ko|*(Ge3*n3l7(IB1qbUj5FJXlb$Zk`3G zX=EK4Mr^m-dv<#yW2Lw$)S&? v_xDr0h1bS zhS7<>Zy)6i;E;6{-I40>tV5p&er5iWzwo$@Nr`VLc4~7<)AsYl%Dev7o6}&UF?yr1 zF6DDHBDZUQaAk>SW4^&EuJ|$L&-CI!%ea((5er#bqcY)F0~~eWv!~@{Vt#o<2y6TA zaeO7T?@UpbI?c3o$XpFNzho1KTx!21dLV+~?^vJ#I%}Kgs10}GX`PD`o}rOGAv$-m z*aKfKH)5x!p+{IYQK TR+~5O+8&WqJ)M#J}>_* z%d(WioOuvWI*qy(c{s^plid98EPyDkqFzDHH0h&f;9vP6N0B4+JBVmW&OW?282(Lr zPv47d-}i5$<2{kH<@S+q*y*U8^c^y^9R(v~UIoO&AD}Ii6%?y>+P5D?hZuCQshOu) zyNG7Acjy;^zK>TK8PEGJKn+`Fm{QIR`TF5ppgxZy_&nG$Qm{duo-@Z-X;#mc1jroCd&bhD;O9 z8hJ*XJI9|aTB)jD(I0I)S1{8!m%TU((8lxGoaxSttf{t|BR{c;nyLB3$kR#uIl;Vp zB#YoGx?udFeDfzjlTNB)hn)D?AGzyKC*MQq-HC|xoxyhfa?(bf|9c|_!_;N3Rr0`^ zhtSpVldR>7eZ0G4D&+O-y@hYzzSY#csI#%r(XT>(?fRIe0G@;Bhzd)2@$0EsK3zKx zh!WM9p&iFJypa|QP8joXz5673q7nMmLpDAn%}VthygfO3RZIqy#_8&j!aVv`5(hq- zy4v$EAJFA^nmEA~<5feRsVt)b5M~fE_rc0MYXx7{uFKp}xq5?fXn=c(rnj07>h#2P zl<%@_)AeGOLw4&zR%eNl1|gH8`4RWy5L1OJ^6C`bWmpCV!sU#^+!PhF;2%THR7S)< z2A8U`+~ld+EMfgyvG{@Q?EyNP+oZmrFQFzss&Bedkno`X2$VQcp-$dHL2ni75Uc1v zJ#J{dg0UY->38_}Fn)5~kAnZD_cxR6b2-a7@38?L9-=TACPjw&`p@rwk5jiwEdhxd zb8RZ;m3WQ3UufjR1|1etuZq7gW$t5u=;t)?AIc12qE9k^CT9;`TbMJFi#Yo>6eECy z)T|f=aVGd)y#vSAR|1fj6j0j;30ok}rs>h-O?GYB%X*|u%c P%_&6@es#ZC)=uvL2muX?xZ2$a=5qGa?T0f8CC?lu7 z$8k*O`Q6Z6^H4ppZ9Q>GB9vCYy`5}6x0YvN?y$aW47X>5ySTFnqErkuG$ioNxi`R8 znNM3FafX&8J8W)B;;If6n&bXTXP58w1XgmWA6#AIm2*;AYc>@J7RR!T-V-~`dOu=j z 4 zPsB&EK>5f!)*>HMXT!7wmecq~waVII=fn&?ySE8Ck9${{2M5P2_Q_6T@pvgB+uR4% zwtI;6p8YK2mKMht+mcympP;PvY|b$rrGG~!wvl7ydE#l2X+aEiF5lj{4lzFGN~w%5 z&YB$KZI=&zQccc7Ym{#s4J@^pN7TCQ^lO#Ab@ErNq_+t?T^@f7R8Z0T$8>o~Fie+D zji~~U9?v8wA`bF~hjDxt_A%J8Y|WoKl3Rt}`@A0BKfc1*{{0#B;NK4QPt&O>+5BDx zfw0pva{&tubI(pU4tz;^H(NsOyU!9-+cb;IqK=oGv{SEc&w=b&$p{?Jri^9XL~RY~ zR16?8c7Zl)wMeJ?bg48GB|T_%H`@{A5o^SkQwyUNRB=uH!YWpNI}YTgs_`$v_U^ul z2=spTTwLZqsePG-*Lieyg=>ojIV&H`d$;ad6Hr3N)ig6{&ppYP)fTf_>IASs-}pa# z)G+9cA3h_wXqeJ$@G_A|UjKEbkv4Qi!0R=riOUqy{{HHapO%Gvto77%A_aez@amf# zvV&0)?IG7m$q}h1< }CXhQpMm`K9vfD4Z~po;G&L5=e=udFV`kK6saw0 _F(IVTQ!}*Ub>NKfOlDQR zgB+CVDr>7faC}*468Oyi_z4iHz_GM7&2MV7NemoWi1?DTvlR;|$v8d(h-x8wqhztZ zyhqu&$H;HD4$jBiG3#S20@(I4wD!2voVEc9ic{0i+$&|)(KLUx{f)fT@H3w20H=hM zfsx{fWub;nHZ?Jm?t|Di(PT}QZlGK*Vt1i1Ud_{=n*Co8Y QlJW@KtLVe;6(Sy13duV%y YLbM zr`Q{DzeX&m5V6oLIIJj}GoDj6$H3Dh7p!JtTHw?oEgm28xh60SXfd0NH$EMWobvls ze$*dhKX&$VhY&Euc)56x32G+0C#Kmsf4r=LE91Q1{|fv;>VU@|64=z)qQfj|ft=sc zVvbnQ8rAI?=9Q k>l&8mUB+6py) zYAw|we|pU&X*dYrDO7?5KQ)%3BT6LkHy3Zu1&6Z^%#sH_4n42kdXGTZ-!2^I6-Rp} z(={P|qBv%K#g-z+fK!;C|GE2P=L&hG &tx=?!Ub{|GpBtI8y(&n~kcFylna|{~-;~gdIIh?yG8_!_QWK%;F)p zdR8ty?1lcxiqze?jRHCRFa%Xgp8MISZ@oe>H@Vq(YQ|WS&SnQbYtp8EC$#GLX1yaW z6HvPa1O}a#=H`H~qYVvK +b25r2}F1qpm)NFJ? zI$yo_+dZKNr9rTNXJo?z 4UYz{7Npqx=GA@eW_oQ_;Jeydgl_NN$Djip!MB! zw#*me1u{No7F|fjZ?6G#!`86fh0}yyi0E>0%Lv>3@!6o_Q=yiCh@bt?X#kz)K}{11 znRrM7`L7UJ7YZ;KB@|GwPoG|N>=ZWicy~bbBqRH5GGBhbCr9;dfb29MRcPnfx^g+R z{luuf@=gMCr@AGs2sS8g^7#80_G#R{E+-6NM!(a?rt4f!v|reLh6!(3u-ad{XU&Sa zbR}yKZViBRqbA`54O!4zO0IvL2BcZQKNF(>Q2_TWR;0Wg){C3{S}K2Hn^8en5%go1 ztZGExQDA)QZ h-$R{u(6mR!X@w->^qnE&gTr``DAQ?y5MFNJB^WlZ-YpSE0=hP6?0n7XEkC~w z1sKq^rSNTEv}t52x-k;XGSnc+tTK3Tb%*8B$NhTO@(%?#&Ato79t10Oh@dWCmy;O( z3WLWsZfc29r$>VdBu{nT7BH|RuY|8sr&8Akc*>^sNp P=`KMPeS)&b%6&(Yi(J!p%!f`u9jqTa=u!su^6%HKx?)M_aCG$p2D{()&pf)z{ zFfe*W(Qq_T%==eB_;CZXktI$}+cCu+ Ek_{yga zu1lwm(c|xnPMiPn;M3c8ev7P>5rWid8*hQ}4=Zwgqfe6R^(y@V_!?Ly@8YOwMFg-| z%uv>yw-+5d0Vjr0{9O=)#YF8yryb_l<%=@-ap%SA*@Kg3fJX$u@ -gN;g?eKRZLCETN_DQZwLe%(O T z#0s3CT;t1$zRAL;-6TGnS8_RyCPZ$mX+d5b-rH%GcXxN7xO!SLOBLUz2k!>mthiL} z)mx0N_V`qo x7Zx^q#?pN@0?gT2dP<3)!Q5E z%#;ln`D1X&S^c;ZZ`mv==rOA>Z1kqjy9MlYWQ5`39tM9^r f)y# z5mSYxb* MK;xzB@XP9IjRt^Yre@QWYk8=25Mi2T)w&(Ny>NUABxzCa=4Z zjSn16b>0f~ySVhN5RlOFrtc{knd32R!dC`~b(z;;e*Uh!Q^SIKqiwKNa|RStu_;?m z$=jwhKz}*M6;Hd+u}$MM|Cbsz-Lwdlep4}`hMB{}T(|aP`m~D#e4wtH#2TcP2AXP4 zKu5%#49tB1`}_6{2PIVc{rds#o)8NAX&avTU<#93rKhP4wUZF!ZV<>z1YTxm)BJn? zUbQx2GMfen#@4@KpidTca7FjmH1SGZn4~wcXVolQRvznM75n1CA%=5soOq%z>ebWJ zRbNalA1cmYT?Gq4P^5Gjym)yKj91Du?{_UGaX5OVIfri!a@_9|gV~B8dGonBc}Za; z+n$~zp5pD5lu9W@7J5pqjf%Du>`I^G4kYc5Ug4`3;BGA(M5CZi5#cH>E(&^cw4|fG zYdci`k4orKH&DttmT2-lucn>6tK2Rc*2NtWj&EfWM|ih^%)YVT!22;-IhLwWVm9XM zR}e5Enwpyad%$UcXdOJPaca55OWZ1P0TYNsAbp=o+UC>nyyE^=ail&3H<}%Qk$@m~ zrU8cM{!rOc*BRJfHiK5cz`eSA4P#fyrUYLS&|X QLzTX5v}W&%5Ymn!=AaV1 z=?1ClY(JaENM394dc!u@9w65?^& cg3*m`KCM7u_e)pAJ@(w<|<<$~`x z-(DexBKA$ou+BG&%@>c@1;QV!pXFG*q*cSQKloj{wZYH%ise;zQ2b8i;-k-TbZCVP zq@r-5T8tIn$&j5|V~5z|gq<9dYO(#^-Jmhk^Loxed7Euswa)i4lNf2MgxdxYM8ni@ z#x$;14g6kQRWj<^Cc&Q3!I_Fh1MCXa+_qWZq~fcxX+MHWd`@TFQB!4QA0%|e!J?_3 zpPmAO#VEkYKss{egq)Zd8yOz0`{L3-_rH^|ib&O$Q+6aYANxHW?aXUa$!OjpAj@ z%*;N|5L5s2gel0_u>Pe@sp0{t#A;XDEm8j8JpxckNt*YMwrZ-XfTZ;jYI2Zgz)@Wy za9$xKB5L(Ir83W=j_3~tMv*iw%fh0fL`LLKH*2jPK;{{M*oB3CReZ?_3F7fzdi?Pl z{Qdo3G5}AvI|D#O>-RY@!vOIDh0O!NnZAMf?@(a$9i_Zof_23GP$(+C#aOmNRP^f} z(_d;z!aTlLhd^u~O#UUQFxxOLoAcubWy}T;6qce=p~3pm3;=1M17xPKdN%0n_l^L_ zniWSv`aK$B1~zrBt=ol^yrXf;>v@y6TV|6fTGL3kRAZUj-oR?Le5ChX>7bgdW8UZs z;zacI%PLn-t1wV)by>q@EPVAJ6aIa4&)OPr5lTwN-3i0O!?CfjfRN^~i?GniL6aw0 z74NaYTI=3GC3Zs+u+iDBVjOHPjZTjIvy+K)-z&U4cJQZG2Mfj=$Ux>b^kb?r128rn z7glC9m>9{uY(wK=gShi7!1TT^Sm>D^Ieio} f&GmtY35BHEuiy8rn2-(+Lx z%F)BS0c&>uGZ@-7bQyu;UDiZ+Xp4E})QFAe_*0yb! *T<{?opW!89)JhAJf=OQcc$7dC|!Ece}cK=4(~uM%d5Qbr>+ab4U~_lX7V926-u zENm~!&=Ef9zKZ*Y7}sGaRao%g2#AP?$jI;_B~5C)7S{XnTXb 2uv>;iO1)i{8O9Qyi6< zZ jXXS=N8(fkC@bhuH~|z>uw8%r#ewUTnLDQyy{Sbn>Cq&cB(q z?SRl_=1c3f7ITTw>&YrxxL`386RM$FV2tqcdb=O}62z)Fh<*i{-oF;riT)GR?ZChH zc5&Ka2j;W*gT_v)kDUXEh2%)V5OLKz8O94TO~y2_ysQ;9WOELq%&t?C1RIq5U47Q; z&MPo5)*e) _VNPa>f&A~6As)i09$GR*y z0?o>VI<&V>>7wcFB%o$UOh#*=U%MCo>h=hlH}I3Nq}tX00! mX`N37`G&&UOPyqBXxThOA(dcx5*Z$CclS2!D<9?k5lQjV``|+(~ zXcEwXM~&_h*JVc?1^*zg-)^kk93Vhd_?J71k)(Q=f&aK|_MR=UV1VSM8&N3Btby}1 zbv0UPZ;+uy(OG6K@i01PivNZXv{dnag{k?G@mVaTARL&UizSg|wY&Nu?S>Tlzg9ia zd#0WJwUZJ2X4A|mfsw#rbRd!b8h9mU?`Y2Bp=IEGQ{cUFz0v>8Jx`m`TbA8&ht|+* z)PBVU2W{jJm^IGb`5V)^G BTMRb(rGh3TBgGakWg?T#SxFY>UmBB`kWf}m4m(m3=$-NWM$g1Q zK_d?i5}24A>A6CTZEW~RVhKMqBSBSL`A7Rd7k2T(RV$J~)t+wNc`L}I4Shgfw$uN7 z*nsk69=qW(i=?aA{q}=cT2VZxIzvH|9fan_-FOX`npB~()XZR>osRHU&yu@`WmDj^ z()rxNw4zteAOc7fCTll4ttGSSk*TVnQfyZ18h~i_^=X5GE`>KR)QYl9HJA#zpp(nh z-8Y68q-(-0p8Xv&l>vt7@syU$Pn9zvf=n6u5e5wnKiZ2{=#6PV#VsydmvU?7kThRP zb9Wd(m$oiWofVwIwM)KT3qaDZJ5C+K@l(UJcj7j>Nd++)ubXuWKJ>a=DXJBm9>v(U z!5Pq(dXm_k>|LKCw?JY}><@obDlJJA@;j72-z2YZoC?kzULK(4i^(KWhC`u&OE+>+ zI1YSBpw(MtWN ^z@1vzzcOS=j+Y!RtpvmR2H!fN4e1#bY8%`J; zVpo2evFK>!gDC#|Z#XMS&bumO1E$5H{mBCRL++BQzjVsLyrF@IW(7{mkq6(HS-F?6 z)`x#R$D7X@v|D^6L1}Y4y1(vq!X=$;%Md861dmpqp$j#hI=Gr<(V*DmB<9P=tSFo* z@b-zUnCyc|=*4v>=7IH6>agdYZ#QTRF8I*V&@qiJgJ)MV->6LaSJyT=>FAg(abC0f zG#Qci_8&jK^mZ{vL|lk%Y=vp5bTRVIX4t%OI#1qseBs9kQk9Ee-96F=zbGVToYDG< zrtXU$9&zvpdJpTW)CD$t2nxn_{6>1nZ?NKJ4v`pVu%$B{IEEhVAnPkYzM=~YUHYvr z?=AfJ@dF4A#>)WrClD6)p{`~*I9-~i)C-H3(b)HU+*hr@0>Kk?&&;-jL>sVWr)(27 z;(6P8lAP=aC~D7a;WC_|GYi=09XW(UabeX_nQh=NFQf4?pvQ^7>+p%u3Zz^e-l=ew z`}vVV=Qg8qjrGtMNk)tg!pt;1+}3yTT-Hi2Af9zEk5GI6aU!#83d AHb+z@aHW zBU~;&p|S25{H=#VT@ii;^yzk>6FeE1rZET4j~{|PqN3qa^&bcMsX&9d6MpAB*lge) z?!5)4x0&C*^>E0)B_Sgvjox1 uIta`={la7Ykwa_*R(N)Z>`yR{%&at*8FE* z6AJHgzGCl0dU63DZt)kP$3~$?o*0>^WoyPSEAdT7+CzTAzbxd!4<~qX?hLH! z!Dk((E)qbrv*iU!6qGC#vUj^0_kq-m&c+Z&O*R E(dqv?zHfOR73T- zpYAjnK@$x+6u2n2c~2}MKPZc_RW zrn6p9Lopc8zkKN@@hs0-(<}t4WSE<>M{H16*p0N*R;8o9m{Ez}D-$2tuK^qY9(^w@ zt*WM`lMIyAK>Thw)52cB7G30s*_j`5+~~j%Xti29m(mEv_K`S)&vDt@gTkzA Ay0}y54+qYLsY7#5agjt0U5sx7T z{plL8^5T8B#GEhy|ALF1<<2nv|0Se~?@ILb(^u4?dk5u)wozf?aQ~sBd(as7 6St8jZhDB;dYt!Euv@?CDmV5bQ9sL`UqMfL#fYnAQK(dnW)aSoY z9Fs-{bdrnt`1k OYM1@3|&M4u#xu`@QSOwTFV;BrVQ-g)3;%R z{ w9 H^BYxSl}KB zNs|vBP=bs(exJ9AQOL;35)u=m8nk )wfp%cjzWaKZ3;Vt>&?t3$oPZR+h13(HNz=14y{Z&J8 z+1UYrTcQ)*9GhQMWN85y-A-#jNiLNwxQ9AchDNn)8aUa1zt>zziw(xCt=A} ?`iU0R*l)dJqmnT-<&>L`h>d9n z3iS4DIbvy9RYpd4yKY%X$vwrN6%-W}KYRe{y`vofA>gI& s$!3a062bXkzsMlEs+EnJ~!9|hfn(DLY;El;^x>* zN v?#v-ZjX@Nl;bRS$6q-gmA&APMzNwx9bDV>e34a9ce7st_c02 zXD7L_m^B(u-P%kS6#p9#@8+l5uA^ZN1M9?4W+M&yLWD`E2b6&qhTj7&j4(#!b{5sv z(Q*SPpO%A5D?dPuE56+ARcyGo_$ileVGH7XpzVg}JBZ27r1d#s{UdMQ**Ou!8{Q(V z0&wq^j8yLb)fv_yeEO#jAyeQ5`iJDn%Kmx^C=&a-gsmhb#%T9~Ge?{4|Ig!06<0a* z{p$}}b_O~0S{BCNAFaxW0SDzeX(v)V29wW`e>rer>5a1TrVaO{Q`|1o{@}SJvi34- z+412U9^JDhYe&y_d?n%-%|E>ddarl`k(@~g7>O+%lg)u2bbF+`1BN&}pwj`vnOAnK zB-N`|uh6>V0Fg^B@HupIb3QUsDV`B|-MQ=Jd3384gdBJ`iNtT~{(r<*v2qwV;)J*@ z?!z*I;00PqfE9&%y{SO3NdbCWBz$AP5uDuS`9XHS=a)BOyTSpgIbW`5#WOW~Jnoo# z;7-Xoa @N&d#Q2ZfiB!s=(o>cTyvUCM@xH&ZF z0qz#Uk{Ae-KNvY+U7|nQHG1zy;>6sV96#8vw9!U_Y3vd%lZ1bcQ!S08buXxZewsIu znSu(_w70ZJ`WF_&TwqnS7-Fsyv;iB$Q0ZE&`Z~?R$NlKyv6!@)mz*c3UH~eB0hq1o zwkhBCQPs!kiJayS;VA!=@f^PPCDjbaZ*pV$H=LnTC25v%&u2XZbw|UNd`6&CL(&gc z&kJ mo= cYG(3S z{5lo#@bR0{+gE=K%hhDuoYO;(!mO~>U+4CgeU`M H)Zn@y)kcXxv{NXI6=!TWxm_xRr9ogW@Jd-lY2&0g2J&ULP}{4BgI zyvmcw;cnCqp<9>p>sLD*N93d}0v6mQ(66lT`52@%cg-yMITGQql($P@DXgQPX9w4u z+}j7++uMY3JBt);u@7zJ(^H?$tVPYQp7C@>w8BrF{fz+wA#x3GuajMtGzY8Od`Hn? zM_NxouaS6-ZPO&QzlK;WP#0=eM4-nH&d+PJ(kAasVpjdo20v V)bmu-*vcS! z3qX4FDK%W5L3i3#t}uY?U!Pi^w&~&^L046gp(No$fShq@m`FOSXmrbf5ppC6`Li4# z-}a#wtlAZxQU0X;>n8A?2*Vf $mG!*Q!&uO#G}SZ4VF=sr(%+Wq|yT8u@^ zK^j!-m!R|x*VrO6uJ5=JA}1&Jvv7B@(fP6D+Ues4mfZsXtFvDo^H%5u5|c97u0;WJ zMNiK !tdWN=Fjf+x?vlWhI|I$}wGzW0L4?@SNnSM!YHgB42fY9GMC5 zbZe;Zt2GmQ`O)If$sgjsbMXk+ry=TXMi$?gU#6s4Et9gNyE#&RN=4>u9M3>GGP6VG zdD0tH>dE858zYg+2CZr&wxDlQKftG?Fs)eXN{16r>(*0ghm~6zZ cC?rYR(*#h zSCM>tv#D1FIQ8xS>Pgmi&+vmil5=p4>7Ci@h;~US0k?`xoQUHTe(Fw~F;-6B*$-3o z$%QU}o2aC7-Yf?vQG9L;t#Ng5{js_I17woiEXo~ONI~Ii=tWmNZ9x`YKJWdvGd&IG zfE;fVR(#nU&LwrVbt}8sc%CRnCp*NJ)kxf!F_Cs{l`X6M8eV;NEw+dcITc%9ZAniJ zKJ8tSlB%d?4eoGl)Qk@Mf;rjr{oJWmU|FOhc-W3Z!}9&b-e7Wn`ek`c`rXNhDpBaD z_IhDKwHm{d*4^eY6Lq%jj+Kx!q=`wXGH#`Cp z>xMG7T`je=p}`U&c%o^(m*dw(Fo>@mm6QFX qlE3HJbhFn>yu+zZCLI>9`r**B%&g>M@IX@Ie9cPGKtpgv{^!oAL)=^!p z>TO%n7OX8!{|sUU`1S=iAuQ`{ p_am0q)zziglWTft8}fj-5u@6`AbZ-~Wcl!b zfBD#IZ* i6m;AFH;W>KiL=7r+jwH^k$N tfzt~1qWbp%o0 zY~ZQLsjB`MG_oh{L_ =s@7 zW*{xQ>t;K|TJht}=qEyEKmo|2`)@sfU891;jf!IUiEzXxi9fqPA9Bl2Rmkfl5Zd0H z1dsDfyej+jZM7w^VRMBlUHKHKnft!)BV;_Tbm;e7u!k @;+DbKA+OCzFS jc6 zy_;_Z4gb;k9&0Swn~m@G2dO;H4&00Wn8eDL#2T$$e1D%PekKmHV2+Y|>Dvs3k8YUB z1kCIVSaT6Vb(@#91-|D#q2KVsfUcG(r+p`CWxo%sFoOWPCG2!Kq3^RY>eP+CX2{$$ zH?PwSO*s??xe?yC4W=BNq(M^Cot&*JwjCeW*x^z>FZ=j$gthjJ5Nu2y4xYZx;)A70 z@nEMGIk>vuloVL&&<7D^$!(7zqI><^&G}%?kU5ch`laC1>*+sRTZnb;mxp6x3RbA| z3v1}4agKGw2T_Vq4hAbDhY0@b@!fDl{ZdnhB)|q4@ux|Ky(qt;#>ITG5#{r73azjs zEW17j2}3|Y5dzSc86z+d?sN4Wnwr`j786>Li))&Ba_Hf`mJF)yisRrm{iz>a_hOnh z$;nD9ZA>O^a{{L$U$~l?N-%16w{X*yXT9SvttY-l-@Rl?!Ej%Y8s=C}^UcGN7eTI8 zMQ|#-*Wf0(^*WjV%9nqp#S^aoXO6-z(zu3qdFJ-EDU 7~b2yUn(nOViPMmM0A& zOz5>im@P@I`=u2c%rBCyT2m*vs2It{`nVH&aDMl4ewVyad10C1ur=McGgtO^u6xMZ z<}SoFr{Tci91+C{=GeI1{C2qq=01 vGNk&3UB^KM9cXLhP2D~?BII@z-eeErVXXPRyf>B~`0R~eq>8#WbK*dl zUwL(Pw&`56&x`xz2lyTOK)*mwt;>=tA?lklx}*f3+n+6+J(5vng|tAbj0%W|Op|g= z>DJ#o2W_L@^OHGha04QX3bbmiv`X2&<&G|Ef@cSfk9nLqIy$=bVnbZ70f?W@-1q=t zc{|^^m;d= BF`QU`~07MlJrUS0L8nuv)khJPmvCpTqgK z)TPHAxJmmf!IRc&CTnD8zG0khaJ=d4T;AGh6&C*7L#*%QbV2@bOio^V(am2|tdW _^d~_F^KyS1mAafg{it+xN9}c4-0k(XE8y1b)!~mBoH;N& zywwmTKl(UuMJ5u=>}!0x$sX&6QbAW9s~F848<;&XaD)H?f3;ex#Yda9)ckL-z_~)~ zR&pyXCg9%uU<^nFd^_eik{S2$@=jT@IhmvD!SswAGy<(J_)SesO?CA?qbeoV$BE=~ z3)z0|QSlVISvpye-@42}6qKhlWa2on?=U?d|6q|Gq;q MogP(d z_wMr0&1Njjr+VY2@hs(L3TQXn>dn(eY4;S!{1@S0UYdfP0N+8vw_r*X%wy-Py~nsf zPnM`gqX>mKDt^dkaj8%T7#V3Cx% Uu{HtNdG>IHG4b~&V{Y5Z*%^r8?mgNRO`$JO zG5yJ={o-K_3o?jf?e;>;V#&wHa?xMw1_OpbBKDL8F<>9#r`YJ^i`nh7lva;xJr%8I zfb?o1_Yhc$slq<_g@7A#(o@R2mLOJ6ct*=`W20<3SIr