From 2026f370ee17aedc98b49b47870069ca434c1330 Mon Sep 17 00:00:00 2001 From: serega6531 Date: Tue, 29 Dec 2020 21:45:58 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A2=D0=B8=D0=BF=20=D0=BF=D0=B0=D1=82=D1=82?= =?UTF-8?q?=D0=B5=D1=80=D0=BD=D0=B0=20IGNORE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 9 +++-- README_EN.md | 7 +++- frontend | 2 +- screenshots/Screenshot_Settings.png | Bin 49486 -> 49064 bytes .../packmate/model/FoundPattern.java | 11 ++++-- .../ru/serega6531/packmate/model/Packet.java | 8 ++-- .../ru/serega6531/packmate/model/Pattern.java | 3 ++ .../model/enums/PatternActionType.java | 5 +++ .../packmate/model/pojo/PatternDto.java | 4 +- .../packmate/service/PatternService.java | 7 ++-- .../packmate/service/StreamService.java | 36 +++++++++++++++--- 11 files changed, 68 insertions(+), 24 deletions(-) create mode 100644 src/main/java/ru/serega6531/packmate/model/enums/PatternActionType.java diff --git a/README.md b/README.md index 34aba3f..4030f9f 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ * Подстрока * Регулярное выражение * Бинарная подстрока +* Умеет автоматически удалять стримы с определенным контентом, которые не нужно отображать * Умеет сохранять стримы в избранное и отображать только избранные стримы * Работает с несколькими сервисами на разных портах, может отображать стримы для конкретных сервисов и паттернов * Поддерживает навигацию по стримам с помощью горячих клавиш @@ -95,8 +96,8 @@ sudo docker-compose up --build -d ### Начало работы При попытке зайти в web-интерфейс впервые, браузер спросит логин и пароль, который указывался в env-файле. -После успешного входа необходимо открыть настройки кликом по шестеренкам в правом -верхнем углу, затем ввести логин и пароль API, указанный при входе. +При необходимости можно настроить дополнительные параметры по кнопке с шестеренками в верхнем +правом углу экрана. ![Скриншот настроек](screenshots/Screenshot_Settings.png) @@ -109,7 +110,9 @@ sudo docker-compose up --build -d Для удобного отлова флагов в приложении существует система паттернов. Чтобы создать паттерн, нужно открыть выпадающее меню `Patterns` и нажать кнопку `+`, -затем указать нужный тип поиска, сам паттерн, цвет подсветки в тексте и прочее. +затем указать нужный тип поиска, сам паттерн, цвет подсветки в тексте и прочее. +Если выбрать тип паттерна IGNORE, то стримы, попадающие под шаблон, автоматически будут удаляться. +Это может пригодиться, чтобы не засорять БД трафиком с эксплоитами, которые уже были запатчены. В режиме LIVE система начнет автоматически захватывать стримы и отображать их в сайдбаре. В режиме FILE для начала обработки файла нужно нажать соответствующую кнопку в сайдбаре. diff --git a/README_EN.md b/README_EN.md index 29d49ed..37e39b1 100644 --- a/README_EN.md +++ b/README_EN.md @@ -13,6 +13,7 @@ Advanced network traffic flow analyzer for A/D CTFs. * Substring * Regular expression * Binary substring +* Can automatically delete streams with content that you don't need * Can make certain streams favorite and show only favorite streams * Supports several simultaneous services, can show streams for a specific service or pattern * Allows navigating streams using shortcuts @@ -89,7 +90,7 @@ If everything went fine, Packmate will be available on port `65000` from any hos When you open a web interface for the first time, you will be asked for a login and password you specified in the env file. After entering the credentials, open the settings by clicking the cogs -in the top right corner and enter the specified login and password again. +in the top right corner and modify additional parameters. ![Settings](screenshots/Screenshot_Settings.png) @@ -103,7 +104,9 @@ then fill in the service name, port, and optimizations to perform on streams. For a simple monitoring of flags, there is a system of patterns. To create a pattern, open `Patterns` dropdown menu, press `+`, then -specify the type of pattern, the pattern itself, highlight color and other things. +specify the type of pattern, the pattern itself, highlight color and other things. +If you choose IGNORE as the type of a pattern, all matching streams will be automatically deleted. +This can be useful to filter out exploits you have already patched against. In LIVE mode the system will automatically capture streams and show them in a sidebar. In FILE mode you'll have to press appropriate button in a sidebar to start processing a file. diff --git a/frontend b/frontend index fb3637a..a8e7576 160000 --- a/frontend +++ b/frontend @@ -1 +1 @@ -Subproject commit fb3637a8b2d49e57d85d0388fb44a2953009cf85 +Subproject commit a8e75766a1c35171fc1c0c7d3a8f16eed5c5ae6c diff --git a/screenshots/Screenshot_Settings.png b/screenshots/Screenshot_Settings.png index 5f86ce7296644feb3eb5419ecb473b3fedf7814c..0773e662ec67dc9ed2b11169e5bedd9b8c7f692c 100644 GIT binary patch literal 49064 zcmd42bx>SS6fTHEa0yNzxCRYwNpL42Sa65n?oJ@My9E#K&fu;Af;$6)4KnBqx|3hM zSNrzAt=+BN?W(D%>f85p_qnJ0obNl`k?N{)IG7Ze2nYx`3i8rl5D<`h;6G~&G9I)Riv~ypXINK_l+gT@9A}xAX4wT{o8e7d6zxZ?Ne86^U)|twYdHc#+rp z3?(LjmwXfJW7PPOfdZ)rr_PPG4Tk`jOcA{_yzE`OE$UjCyrtiTfRPW48ttKVMKlv_&Z0zhS^=9aLEq1i5tdXuW;-rCrFR~}O z3m4(7QW3atY3)z9YeyTMp4t35|Ml{98Qz}8?*h@GHCr`TWWl$3Gs7r;By|30FHZDK z{o>y!6OBr+INO3&8m)kCA~4uN{s};f>ro_Em9u@1@YAPHt4+cGx~D7qQfmmv;5I>m zkMSmL39Cm_Q&U=2w#8=PUsuxKq`rQA4X?UMk4mV4w1zGHeeQDoLs1%QhQ) zcJ2=H0~f1s|A}*vy|}w`44AC_*Jw0Tc}M%76uWfyA@%>7fF?7jyGiRx-HO5K5{e$vm<_DS4C~+Ei*cI$ zp;JnGC89twVJDVZ(pY*+sCqx=Pm^7oyQ?ps0w@IrhXiM)_Btxh4}e_)Ra)?u_F{kq zLiXenb5W2c^P6$8B$5|NkJMI=P71yz8~fXZb^jX!j>bEaxk={C*Y?AEE(z(ms^b+m z;2Pe1<37%Ae^aK3VUF#6g*3FCM5aI1=wm$I}&-TdYE@G|)O1wUjtJ(w>4j|$!Z90+rBd^vp+fxKwrOjCAI^(AU zniB+%fBdy=0|qCvEH~#_Of=TZ_ie7g``;HF9MQCV2P_)W zO+mDR5Uuq*|K!RXYM#vnRQbJ!B0cK2C8|lDPFA-L&lSb4u9faAr5RvfGl*1}oZHRo zd!Oib`0?AU;OeJI3@YdJH)R+r%VDZm9d$ZFVv8_ODrTVZfcw-0o+a)Iwn$GyU4;PR zD&H4m3^WW=>-E>+-+I$7$(8s*$pmeYcAAGu{D$Xt`}8IGF@0At(>RUPN&%S3{7Lm1 zwcCV__N^t2ZZOO*ywT1CVf-8!zgE$*?w!UadBPBu`CyhX#V>PF_45QuI%Ko6L}a8y z$`g10S?bXMmz&UlRHII+o^InFa|@SVZ~EkJMF--th9nf}PXRl!8G4KE1?r&_WQbH! z^MNK}ps&eh{#!M#)bn=(i#JJvaGFth*pl)*TXz9(?IbY z@KUvlK^5kj@ih76_R((pAj-6*N_VjTjx?FT z@74SKKr!%U70_rQpp^Yj^B8>FE#^Xdta zI}^H+IFQ!Nt^kzH3XXpBbPz@E<>y%KBYd@R-__=f&^3ILKGyAy(%v9&aEXt!9|174 z@|G0w-_ALoW`t3{w29#E>k;@IX&+7cVPD$E?kVt;&<|j>6t2<``u6k=7>d> z2kQ2n(Hmi0uB2!oEE+4X9N8&WUUAI_k0EKoj+!>HEfNQ%1DVRuGfRE$td2otIQ;gUM{So5d*cDXCw<2DOU` zogbKA?D^blF|ajggehy~X#siChZ6t_CK}o!MTSLt9}Z{gd%JH0;$0{R7}pj$2SQlq zW@AbiH|k4uI4NyQyxms%!qU2bh`X-^DN|rG~E@pWa;H$wvC^t~VVSC@VmI2f+ zWZBaY5~H<-@$W-?WQ~R`kk`1NpY&#~PJWDuByGJs80gP)0r&Uw z6CWq>hiB_Ml-x%F3|*c$hGjeanW~{XNF=2IDA(ngUr>52_0S3E*gN`7sf4o6wUOAG z@wAEUq)J!)9uxJ9{!}^^i1%d!y^SLPmCJwA3D@*r|3>BGVp{&~QR0$<0Y_y`Lmard zLz<^#L2KfVT3AJaI&z~eKo`VP2ePv3(J z5Vb{K9ckhdY7x1;i^&#Aii=z5BH9X(qxP(#*0XIDr1HgLN{$Q%x~Y|P?YrulQ}(@U z9R4H87WF)W(e18VXh!}WF&z*|1YhIQdrO74h$OHZD|a&P8%0h`2PdNS-FT>rt?pWD zqQEJv`D*`V$~2QTt)3?_3So|uPGgC|}qw=IP6izFFK z>`iD(yamm^3Iih9lF^n~PloZcB^i&HQa@~*a$p`|1eF(|M#Fb`=VrViC&-lRT_dL# zW^&;@KA~OT-YB#8P9?`X0lx2Z2^#Zc|Gv$w`q3#O$pPb5)ec4#rzGX}Q3=)-_6 zJW~D3)%?QB!eTs~BV27*zL6F`b%vy@^C_gB+Euw0OV3ckgEXV6FH9%PCp5QfW2jB} zV_2BZ@7A=9VTWwwWX6mHGwo$M^4dXyR_>o8k}sr7f>arHY6p(mGv)z*l8gPm`pz5X zp4Oodm}(xvW6MON)^UT0j5`~)A?k_&#|T$)C*4pvN*djEXT19IyRQzp{5ik0zHfn7 z8jn^Q4-#KmCvY4|Y`IBlHH6*|h4C{?K2+h|C^0c~MSifUCk*gQrIuov(6abA$*#YD z8YiYiQy7An{YLa}6QE>`7QO;5Pqvrtcpcit2jq-Ooi7etkCwh({5YoGrgR93m$10W zlgbF;+6}kWN90ii&X=`%P|@Wb5O}q45e@w zKD#j&6Bl2u<9u{|jCY2x=aHoV+}MP#P_J`GOWql*{0ZGjzqOtMy*F_0{Oc25Hz@Y$ zF^ko&(GT@x?s9CR)F*E%vK2CH6gbgl&0co(dg$K*@0Q)UW5}$M$`G){m|yMuH)A>% z<+2ee&VP$jdNt_(|H1SB{4~{*G-8u2{7iFlfU2 z)iNy5ee=)$^z;I#+5ex%XD3q~q#0gE&0Q&r4GVmr^~ph{{9Qfm6M@PW1IN}ngR&(5 zJ0F4lW+&v+O7Dxg@=5)KmHr!Tr@Io3%;vWbgOn_AWy~SjQw21_X3kB?Tn4Q6_}f*P zxK!dzMrpeHwLG2si(|d7CAwUa5#TPot8KR zJkBN#+p=L-O&Ca7KIaAc-LWr8T+ivM9+?lLroca)u-(Y5KlROP@NjMyc~$H&kBaCC zcm^z}pQ<9bVb05K&SKy4&sqZRdW)@oeG0J^=MrxxTN{ng<>qU%&+;9v<2|cA=RGSP zuS@O{ixj)!FZ-=hR#1TrdfZ3to_2Rty}%zH!l9k}UOe6sP4j#we)4>Uy&@BT0iwAV z#BK22x}4;@l5hFAjVjgl*gzZRE*cScCiR-amkkQ%0dnYi8ZOodnZh@3#9FJe#zxe- zhEk2zc zw-G?sxyKi`M4BHC-vOYAb}m(evIpH7PBnF^{4ppACm53pt!s)_n?)13h+Mg4)Ib%7 z!?vq@+7}j4(FM+YWZzm%wFR~~l<8(fLMlsT7tR@L@2EwycS#$^-iMr&$(mH?wY|$N zfw0Su)vR=vYjeMwlm;|`#+ikm-)${B|0dMoR zTHnKvTK4bwcmnvtaA*g2`&+)F=65}i@WfA>^i`qJ)k7rgoRd#bZPqGUy=-=TE-QYq z1&UAXHU`D%49hO!^>{~Tx*u6FWcQO%*bQsu49=+?K)&o%b3E=!gy-ENLaETUyzoK+ z-S0!#O{=T)S|X;_D%%RzX1(;FTX(vNjtm@U0o2dc0jY5BW1~`L1QiE~t8og+f>F3- zwniG4YCs*@XLOtl`5T`DO<`4aKx=uPR}h#ObXMf-XHBF_jbC?{Clj9d3qtJ($3emG z(k*+v=l6|UGjw|(R1WCLD1Gp3%NeWXCXB8z?{J`^C%*huq(`^^8C;uNi4%tU!xPRX zaxH%x8qI9JyV_S)hC2R<nB)`*nV_N zV_eM?Xl@B|Tdel{!{dWglvS~oI=Xe1D_82yTN?<)D_y`vo7S5O72F&uWcwZKyjVU% zB*~wM&XqGIXqIOVlN|AS$Ll*}`ia_L^j^0a@Q2fbt1GvSS#rAsN~tS!wIr^-wmgdw z)VVpQul49jdZs!6GtjpdZBm4DL9IF1xc~ z4YOadm}JE-Fw%8hMkjH1?|WMO+N7$t+x`Q;8r<6AKJ2r57yJD;Q(b)7TnCSMa?AW( z`pi%yoe_!tMrUzWLy7p3W(~t-Extf+9uRB%gtgM%sN5@H+{oC zPsI*$<5+%ilcPFPkh8LNDrw}X&!{U8H2szlx)+8c*W+odSUd9uR-{Z*rumP82sPyO}D7wSZL zM^DstZ<`kE*w9$Ev!QO(QPe9T62Kz&oA^k(E+KQ2qWW*U87TbJNedqSf??yq*RQ+V?Wv6l%%F zMurXIFr0@M?0i_o?0$DP#z@4>J+_(bnO6IDg+JJtX;ev9O~6E7xZxnAfo%#Dn zZK8n!Tasv64!-z|jtXytkW-1~o|MVV8-xbIi6Yg=+gCjw>DwI^RaBI-Q&pcIRDKu{ z?GQQc-dkGw3Kd#jVxK^Op=! zp|UQzDUr__X0PtA138qOc^s;uRU&oqJ#c_oM{KQYQ3YnjclXsFb++3EYKKf6Knq4! zRJ{UPT@c2#4K1ckp+rM>LsqW)NU0BZg_>f|>5i<&i}_d)u|O)e(Y20XO&Y)`Ube&T z0(0pfB}6z2zgL`FpypMXyJ3QIC+3fnzJ9}?je2kaA#zM~rXnAIsNmG+L~xx4Brwe< zIyX&@134O-}@ZvXFp>eq*sWs46ABPo_qB;5Iq@qN^tf7oSJ+FzIi;I()Jcx951lP^1kVLCo=vIU|?IBL)|U9 zheFQ}h}@TwA0@($S7`FOk(3tE#g^yf&UW8&ZB1;OX-j0n{_qI39UYCpeWsw4p=I3C zrW!m75(vS-tKsY;Tqk13^{^5YUT%+jTXTP+p-+5=;kZr{=|5B?)>g-O9&J7+&llGu zEl^SoT6=sutWr&mW=b(;K|l4HxyDk%l5h-{uV@(Crll#N&iMB@?fhENeU$4rlF=Ej zh|&8C^5@$vBqX!*?MzDgu9zP+-B0hF9%;PVW?x(7l0Q8hVe@vZ<}58Wg`lTn)-2<+QUa(acO@8V0v`%d z=x;?>5Etb_DxBw;FUO49Z#c}7`K&=kjAD}?;6Wum&vZZYOd1~_=03AAw3a#IQxsW{ zEc>V4i!YjlDbb#~&w@v;Gfz$>b||MOSdGNtZ4VHCc=)}f7=xH4O5fhaRM}Cih!0;H zbK+@9K=LbnT)7iTwEHHfpH+B9+YqQYN=#R1&(;fNhnMbzb=BD`T=K(rWXQn)oRKmvEGmKWz2zUvI@?ZzZ)Ms6IQ$O(ZXNye=fVfI)p>kBD_YH z{o1bUJuCgoS^g2PueIb#&w7&`^FvatBZLlUdiPdc*Xu7%VH=}TDwE}UQ-f{j)Rtd% zk>PRfX&ZH0s&nE;^_-ywPow=@H>_mC&b!0+rlpDNSG|rf(2n=yeQ30=Lw>(H*0SA- zIfE9@ai%TVadVz=P2j1*qQNr)*VY4)lw@GViY^TY{RnpxaGt{e7Ze#-AsCyY!23yVZ96~@I3 zzimcH;?^5`x)%pRYklu|&%cMBb54_c3kC-63A#C&PI1y|Aq7j7SOm2mQLiuL4h(DA zR>2XK8Z7n478`GmPpnnX_eaI+BBG2%Xa4vnTfRkdSFh2vSbJJNug991jQht*F%p`I zkTy$d7X0_Y>5@GmF$ejezDlD3#1C>Ia+{-%q%^{}$fQ*oUO-o(T1gn&`MPLyx-Cie zfGG^9r*`?L_`ZOP;f!W5+i<&HTLK8tlN4)Mr}AJgiu*h>QCn?w9GmZYH$boZe9k(B zJwn#E%q>60>pJ##`Q9w;UA;cZd}0_p_ZCY&3ntqCjtQ(-BH6y5F!DZv(~g%LS+}x= zeZcc4tTiJCP_oa7Ufc03v+iA48EkKp9foo!1QK5C5iGLc(|`Q_HL>|O6LffUYU|ul z1d8O;=XCFWpSD;0_11t~|J+gtLGfyg6B+HgG&{XD8cs7ogip%L^6pD+B~ejPCo}oV z#MfMX8rDV|g?lNK<&)KNtivZ{4fBvW`ofyFg#jLV5(1rA8dyt?o+HivoM3O*vc6^2 z&Y}licXrFE`C-scjj!K`b))lkAn~_O)6h=un==B#2$AGwG#J{ zCu+Kz+z9X89t-TOC$_+zYh^GaDV$GP$RD|x$`jAd6ZfTtz0_76wC3tmh3Tl$d1X|E zQH{(zz}X~b4TEgano~ZLSFddE{;W}qYixob@gB}UU0<<2qzM{9TO#@C+jh?;$o+6X z$k91=g-*2g^e(wlAIxMA^Dr`nd>CKOX-d+}wj<-p7(4BG;?Kp0?~7$zKa3JJiYuCY zrVXKyr`cb!bsIxw^#iVZ4z8_k8`b_i<$C)iHY9m2)m9lgh@}Sr&$nj+spQ%~|1y`t zjPQh}Y9eR4L|>GW+Qrm?wA0X2;6YRcFJ|;O%K=q~XCvXSKX8QZqR9Ffm7^-+QR*vy z0CG$sg2Qhj4>Wk>3?BpCZtnksln=xPG4~O+pKi3;Ne-7SaguHnK>I5>Fngiwf?eYD zU?9R-tK)w>t1O%w+8KygtCIKuXA};yW(xYt|7Bw540EOxr}@#Fbp0`VcIT&07U9&w z7jT@^>Bj4Sgu+!a5MKs;;&8TFDSN@jx-m;yRRft5gVD^2b7P%a1eSeq$L9=BjW>HX z!Wo5W`JTs1EaFto992>obfqI2g4NO+IKzPOME^-x-7NutDml9YZe*=>YVl0|uf1t{ zuIK+e3xIe4b%h=b;8s8!7K|3Y%vMJz`zd_ zQFL~3^PMmthu~pI#qgNWFc79m?X&Am?GKam1FW68PvsDwU+zsn%)J72HAco3Q#M6$`?+qTSU%&PuXaySfq{8HAR(WX<8cOczbQBg7A?7p z$MGuK1qiLR#aeOVO(&T~{oXqyZ;EF;pF9u+vOHgozW(&B@zz5$&%QNQ&Ra<5oAPIi zeV$t1Qw<|uFcF0R-?!#?l66h&b9M`+Pd^s`nP5<=PQn7@(z73oZ5}`h+0G5Z!dP;> zAI{ofg!jHPUDdUR=!P%r1F3=3^QtuW4?5Q%iVh=BqI!eX5=3{m(m*#OMQnm5UyW}n z><(s~`AW>=q;Z{1g8%Hz;2{=t8Q@Ox+J68P>rM6$yK@N%K3(Lrv9)-e=JRX9JFH3j z0u|R`OS*=>Db{DNYq{~q6zcw9i}uq^2D#W16I!b$-#5(@`~T!l{tvl{MEgyNi7k;+ zz7r6#r^A4N*8}0#1(mHAdo78H9sjDG2tUa8d>oX%6Y+3t@Rg)YzPg~{4taiVzDeB~ zjORR%BM=oU4DgThXDHh@!KRu1Ar4RZ4}%5`mVI#<1lGYNk56{W8`7Xnmy2`d!vuoC zFm%(wSpONVFLSP=u0esuG@MlY2|qav1^yxk-8BlkW09lod&MAz;gTsTOR^jCSt#8q zZ3uWcCnTrIj^92BJr!k0_~RR7Zv>WrmAA%08xQqny>stEOa|zW%xdN-T0?VA^+w$h z@~9T8Ab(yVZ=hpaIS~y|$2nAGhjzAJ0$ZpsbI~3f*J1hmH19Ny9VwQ zteYkHWaoxIy}^G_L&PEez-qq2$_S=;* z<=j&0kuZQoEGAeH)6>DiUy)+%=@Z5>l&ALH)b_Rs@>h~Z`X{+=rH$y9pn_}Rvc3Re z(z&$i?aoI;YmKu(I0z+MaR_+>irF>B-pT zVScm|d^468GCQ%|;MV~?39ab|rjgwB!X`wpIG3DM%{JT>Rxx$yXEn=voJtt)_NH9_ zy6~gbDd%{=+2~3huZM#&C~)gwd&}{y|0F+it}jjWrdRe4NpQ)o9kSOr>t^;)c*>2P zIMtX?Evp?3yTmhBb~Ko(;&R(1P2?W+OvHa5xC&D zj7Po!%l2>WlVUm5N+ zT;{L<_9D4Ossj>-wau`2-MRv#WcxR+=~m7OjRg%Eld+OX&?nrS0{)S*Gsrs4hwCuf z>#7a31CmXD6A7hO@DNB0I}h{L;(63l!DdhQ!PNvWP^8V1pvRbzby|HG7rXcwB)SZR z_(^P;8efDVy4`g+cG;OtH8^7a+I{dMsgVpi;ijq)Q{Q;LSs{DCVOn1woaX#C!wi|q zRob_Ekw~>OLpZycfSNub=0x-veEt9mr%}+)4}A#=h8xV8Ox2HrJniNi_x@&QR7g3x zQ!dW*oW4M5mDNVt7a!cX!iU6()O3HBuBDG}9f$P9u7-SgvDloP$vka1DZg~-7iD*L zyRD5qL@&D5jW}_FXScs?Z}yQo2FiS~Kp_gxmkX_|&aq5;rx(8BcfDGcXOu{!p3+S` z(X{5}pltukRU-pR`=XOIne=ydov-6I-cFKz(@3$@`EBE~A3y2hHLfPuuwN3yz!#{1 zq6X(G0NPD)>&4Rds-3av!+&pa7Z%gU|Gg^-+6%YdV=Cb}?CA936sapMv!IE77EW(g zI^Yv@dfP~y(f5Pjqz_<)%GI5!+@F;@C}8dT`ChAIx-IlTRxiGZ&v7cEtKNkbi%{yM z>B{RaI$}K)YYc~K%0E87Z|yG0XZ=Cv^7%_k8-4q8@D@*nz@W%oBj^b>7S<4a#xLPRwi&|^ZvUbr-Fkv{B{%v~0r6)aJtJ{CdzvF-kB0UG zyONjrUqI!l+|PKPyyYL&O2u#3Nf?Od8E;9>asryrXS@0HmLwI7&kn@B!1q5beS+TD zJ%ZW4Q02BC;t!X@=x3mZw7FV4j|0 zOMMBS=iBT*;C}{8xi99Sn>oO6}mx9GZ`m~&u zqbSu3%->9>7FFM@lJf@e@@V0;k5RHz>H5$;4DDd=tY+)s``M1G)sz3s;yty#K)sNR zhiJz$r-&_9jR}uI5(2QZ#9;7xZaD(McCPSCjzzm#PQb~<>@|N%y|A~{(>Z<_4f*|Cg6JUX7SHGW%+L6w_5MC~umioC-5 z4?ZWMCFR9_P6B zNVdKWCF_jc4p%538*h|f4X7$QSCj7%fh#~VBqIP({hMq7W$)yVB05OzB%O`kQ#&1Q zsXg7&d?uFMjW8%(uNJ#NIg0Yz`GJSo`Rw2=idtVceV`KaB>s2`)3_(e9@V=Sp=p4b z!_4)^8y_ptA8Mxe2?#lBf^{pi*Lv|nc_+r{64(-iezuFT)QT+BxFjk3Y^x_XLu7qJ z$fCfp&E8?3gO=pUzXn22_q^YGU%h-*5d8ur7Dfc+(YiUd{UQ6nEa~JEr+Sp!DvrmD zsDq6@y3$xX-GeL?8=$T$YjRXxc|O=$CRfB``)n!si*LhM;4yQ(R>WH9&HJ3?$(Kio z*tIcl>6`1&Ipn>+d!a-tT+dJ8gbV#MnO$$to#sM+2N(wIp3k+4be(T_Cn3`P{3#2p zD42&4gsFR9DR7k{KV?6mhwYvV_f7*;@*~ee z{P#@Wx_z()axXK6{ULeua`syzk(NFm9vPYA3ORF+SHo(1Q}UVw%xtBm>YhuDcb1jB zwd{y8fFur9-u!kj@hg@_fb8`YRzc<$PJvDb2@TEIQp;Xwt;Q0}twmJK37xl6h6X48x%4!L2H`Gi zFR*$#iQw}z&b^V;f5>2}SfMD+8QF;M`*H2_r@tAqR6&w?S-@lQp$_&5$acig$<((1 zH~TTx0R1&k#M1n%Bm$PY%O3Q7Uwu43JE8n)n$l-RlC(hm1H;A}RG;eFjL{afaTl5p6h;=G_DA~8K zV(l5jGgrG&LK{#BaPqEbZ8f2##&h_+GMq*7Bc5qEYk2i<^>RdfucR+g_Qcaqip>T{ zh%9yx&45Ekv~54&{8iD*>>Eok;n04oEKi9!4P`Qsg1oBnSqlz!=b3;5`QeS$GiU+K zZpAmUghPfs^@b5y?si4N8rHIKJ>9YmeZRXoQs@b4SS09|nRf(EBZ?n>yL!jX{H$rH zQq$uz`kNq(shWXxWf;n;b@`={g*VJ)>cZ&7Epo*7jDPGD;&Zs+;3OFMKF<1xf7|%@ z(=)`I^BI}Rd5s@A@=%xWv9CRHDgP1EvB))xQ#8S(zJLQ}&aTkO>}>BPOeqN3tsluIdl8yZdIPe;1GA`I^&HKF?a0C-)aBUYsbW zXT@bNZgOqF--sH!x!3s4<1OAMSH62%hNRn z_F*Xm17x*@)Vh?Zu}&v6?7gfL+4&x;T<4zYOCp~rqcX&zNK6(h*YBKXNgM&|SbYO( zh1y1|aN*`#7WIr?Dzd+abH3HZs!tnc2-|; zXoMWWw=34as}Ch7K_5{l$Cop@8b9k)E_Vb^?W28)xE3GlY>FO}-`KL2JXhY7dG+xc zr*`XPiQfn1bGTT5vKqaGFC*xXK>F`Pm!R=`iVDeJl;L4{QjwTpk9+)Ju|zdTSC&v; zie8N){;oydd-5PfFwRvjPYT>oc{K-<&}%yar215hA8-a>zCx8_UM$2&2Xi^>rkyM8O38Jf%KL; z4uq*3rI8c!8Nj#HPAE^OiP>#(iVp(PC-U_xa|+#b^iCq~dwz-r&5Z6Jk3_6uk3rt$3eyEc|mO$k5-Y)C7;Nx_phLCUT>nQo#rk@BNS=#ujyEiA*g={=?U^p`ABM z*ZK3izz@Ck84tW*KV%4HI&aT`InxbRVRBha&R^-YV$HeLH=m!wkq2j@M}%!q2sR#_ z($7p!lTbWnLywY=m8bq`yydak=mIS{LxL@(<~jAX!%HynD?R5tQl<6Z$&VMjDBH?U z34xSMJd7eJSo?b=H72veypvLvyyZI)?ZQdRhyjxZ$sbHCtV}6lN#7It1mN4P4UMN} z>X`Z(S6v&Q*_0&Llg4HMbAslQ% z@mLQ({)lrU1hTQN=Z!9{!NW%E?=7w4b9`Z(42{kTbf2A(k5m~mW{N6%5})Up`K<3q z2Yc=iZ^z8q>Z}liE|)VBdMlm+usa;STxmp*7iI8DgiWz8U7X+Tj7QTSof(bw0rYg* zO-cEa9|TU?TBf!miuxccnO#YYNBbEO%C>%f#{$h(CD zvo1+fK=OW?Y->Aud+bp8))hNgyU0r_Q|*Q2z?WM2T!K$ZLEnw&pmyI4A{ zs(cV%Ak@U_Lv1&g29(%FQ}$lD=SOEXd!(BDJ`nF1o8%gc?)&3U4KXln0%Ykau3s%J zslkm_FHMW38k^PZ0lT-Ey}hF`LILS> z9Ay`pXJDZ$&R|Yn)PP8i4%belEf{;(BXBgS_{XF8D{kz)ma_h^v$xwQDk=*F!4G zFFw+zqwZr^ zr=O9XKgL8sSGReftw4CVqqsihzf83?2h@;DCs=p7kpK;sK_Gg1w#P@4zsC65%MQ>C z{buy;PluqiAN^We$gX~e1Mcl>+g*>mny=Swvx5IXTAgA8>GG?g3EDjsx?s}5I`USh zsY8vG=Pe(znas1b1q`fh;D*3SCOx)yNte1pt~Bs&HZMg4G-W_g!&}8@s(WnNvpOUUzAJd zn|!nVxyS0qE5%#L9=Wrp3|q@PVzS&jGUCq%R*!!D`Mh%74)k!U13`wFJsgDV(^G&9 zL7dD^UGdHKqLRLmf&#b3i>`vs1rVV)HDFd9DV%x@YS-K5x!dU*^z{C2BTV|T<*)BO z9xyB^%-nsdlCl)ydQQe@%vJ9F-kJ2O_K@Px9N3kvtInMu8g~=)TKIJGzYJ3R^XG~K z?cyo2BXith4az5d%WJ$U$&Z10y!Z3XdP?k$r%!YD4;$9F#Sc6ao{fCYwl^FIvr~6& zZz{XesMgY&%U?ZPcKGIwoXYP^ZLTkdVAi=oBzJh~M>_49ySZX?I&}4xr=J)Y5Bj{5 zyKawL)00K;x>7yomWb)oINxoQF(0HDA}h`5WSpMe1Qj%^) z%^OY@ODZL)RV#zi|Y3-+E5|K^&ges2*xhu9e*S zP|z8(4n`K5oL%P;|3s5#g>iQ#4PrhW01Cn5a0@72Mj!v|y`^jE=mTvYu_&AK>%AmB zO#iZ}w=Jl6C5iL-@cfc|C1haN>Q}@ysj z7z;+YKw=1DXf`U}lnEwlO!a_{TtQbwkmH<0Vzg9zlf68J#jNFq%?6s8=2owBG+HxU@~h zpDa3}qgP#ChDWJzMba=FD0ZhWdAQ^`DYMs93{PM6P~86I@&ZZsHAju`z#D>^AknlMz1MNZRg$KF%W?-hgin6yof2v$>l!av=l7^%)^-n;e^bd3a3n~8?mdhfBR!i1155WKwTD`!XF7n z!VaL-7wS+`5#3n61JjwEOI+IT3vC3r;l-OSCrG%7e^F)?)gY1|z1?ncFg?veMj)#~ zCWr4bioCkXhN^e8@Hv+BnYe+?TvtgvNK&-Vi^46I>drTNW#usHXFm$vnI|T7CySv& zvuEf{z21{j%hkFl9lMF%HuCW&ha&h2Ce$(EW9J@;`r-RiXf7l@>G*otnHSreUTwOF z$x3$QpZoh(M%(Ye<`4Zxyd{?G26*CK0Sihincb;Vo%YK-U-KK0>B!eb@f|Cd?8Jo2 zZNM%bmKVQSI+k>2yR9Z>%_x?m`v!`RwoVT*iBU5ds@4@F(LIl-r43jo}}F{fk0B9fym#gw)n7iSLn>D zLCVv5VxzbPcs*nCrF*8YXY0d#hV5d}KQekR8|gPxBJalu-nIyK1Up_rJ4B9f$;u2Y znBnA#&hn2H&K~tl0ajJ@yN{~w1k+sx^3FTzxQ~wOK}cr&>hmT;F!ia14YDTS9D3D+ z+q|QfQ1F}HZVN`N5tS$hm((_@xlgP_;Ha=&;5j!+Aj=De8 z2GS*9g}QahcHk7zSbonMKgBv$wb7Ix6p)w`s2V|ka;5^!K;2q{!Hfy9(i}j)CJ;0& zz-yVqcyRg~?bb>f3(0BXczvV+W^`rX@XCT%(`#LGSt)wOv9gzf|5sl+P8@)y5)*2& zfx8}DXTQQr*uXAa85$vl?y}NW@Z4RsufuGo=+{ud6}<_~gHKJhshsrEqSZPuDK6;KvGm=_*Hq1V>%g$7ajek8vZTb0Tt zctKUVMRS@3>$M4VflRkY&7ZTeB45042=EL)$>);%udFJy!2gj|J^X9`zIBUI<+6(u zx=b>KbEjIM7Aj7~`<>TG=GSU`{T4HV7yONd#TF}*m= zQkS9@jh6DhSi&P%-=xWkf*vkRnS_-k@obpBo$u-ufCXyyvoG#_A`0-h|_es%3F79H{vZe2_vpN}@DEhec&Y+3p+iv*5-Az$6z&(a_q+T1|a^*epi2az8*2 zo!5kC3S)TY`|^0kJlA~VCtch%#ixMZ4x%m8x3^>nYl|7nF``{1Q`ubi@SNEu;*k5Y zQl!np=VK#xfv_#aAC+;08541*@yFE#H27nEoqz@5HzYpJGB`T5;ri*TK~UE_CUzF$ z-D~)D=TTf6)F-Fjo*^`~^%|L#LcYc%$B3-G0e3 z0NHxRBhP9g5nz5utQ_54qO`r1)uLtZ8i2B2p6$(C4!>XT+0dfreLO19I#`TlX5qVy z_3JMI0Z~+Cb50Bu;0-!k7#WWFp7u|H;~-&_m9|sefMO~lRcqohR`JancC(@4ufgqk z6(YYTq;x3M&NtOA*#VjSx{tR3!X3{3T@*F-@xoY4Uxpt3`DmNZ8G; zm5Z55)3_n49zhXp$>VgU_WTz6+Ba`PX`F{ASQimMq3wt%l>9_qA6W*`abd=Lm$mHQ zwE9&xk@{}{h4P5noP91nU-i6$>R;oJOE0-7w1XCEA#kht&95rJ8AB2?jMh7zhX-6X zyGq8y7B>|v`DS4z$@o1Mv&vGL>6h(=D2lge`1<&~EmMQN9Gj?QKtwKtD1*EuA>+63 z8&~po!;8%86CU=UeFFg^@SC3%{5daQ<*_uqS^W}oRQk%%s#w&2f0HX$aiZqp;&vUz zw$`^REAaSK8DcgZ9v4)XikV$@81mmlYxDk_;Ea}U%bi$jstONc^_zMwcVF1yJVng! z3#WRB0gr%jUC5C&VJ*!mJfz+mn$jW)ACW z6DM0v$Emf?3&!;*>wfwo_qVq*GrKX$5%%L#wH@P~Vmf62Uin&0CHKerbC4)#IBJg^0%Wru8A8gqsZhH|E|d zIM0~r5;P@dJ2A6kwqs^yh?$ukGcz+YGreYJW@ct)W@er@-#`DC>$Z(fyS~PYT4^i`Boz?u}o-iBD|){Ni9-J=TEYjT05vRgNnvCmF39OBT)H zgKiGm8mr1BTb35gNs`kcfcRza6?nYlB4eBlC{<^UGSm2?aMx0VZ+KvO5FZg0b_6fZ zux+rPx21D!n!L*tn?HSfx#-(*NsW%JE_)EEmOqN1G%CGcz0V;soaxz569$0<* z7zp9+l!|D^vDKiwaXm|s{YtFVNI26Puc+3ebi@@f#Ej&MFuA=dWBu50 zno?XJ32$b#Bb6&lW>9cU3qXt`KTXRnY=8?|bvw?};*7c<`5~amMEs1Ji;u@>v@6W5 z)`p;0eaE)Z{{u1(D?^DCH4OyCNyqg`27Yc^l$&u4# zUQ}?*4bim!@l+0V+Q<~2X1B{as2`RV-PHyo;Yc7BI-*GDYbeKf;WoC^ecKq5UY+PM zA?ZgZ)7>W=*sCch=f(hur3f)`ZHgPHApLhGOcrKy>hOYff+{p)iYgPPtOZoik)q`f ziqN_<_@{p0IDMU6ot?gFvVkTrTjW>bT==yFP06->$g!8+i_%2_YdLMvCYS7V}DV z+JcP{epn`r*_tt#Cnwy^RtoJtN^jo;a_~)*ADbAVSsNd<)nMeI(L2{Nnw4SdZ9E3W3)&KhU{3V*z>)A+s}~6zV@j%MG4jBu5v@N0a;-5Mj(A^r zq|8CMv=PohADX{k(Vj7{#><#@bAU;}M3gv~Pa;i3)u)VnFP* zxN5aJmyYA-y;LHiK-fZ*o3UJPu=%3FuszO<$U9=Ga9#{Y&`)v|W(;sWe0%g(R93Fl z>kEpdivEGl4l6bIJ%W@HCJn{`Yiq^RgNXa?t8`$zmJF1-QA4HQ3~Tf8p@_xd|^fTrD@^IagCsMZ?DLphHz^ zk;(bgnpqh)QX(ahJCIR|fM%2mjV1({smWL}%oo(Zdz4THHd#wtMX?M<{Y;8kc4AqwZUU-D8evjSsW>%F{bl4of;3O@QaZ-YH_(U&Nh~4lV@gYX3`o}I30b)BeLBJ1z5II4ht^+op=*@=f zAqj%wdQ(jq3-!{tj+cU=ZEs>8sREke#I7m(W#!-M-YsBxGYve(6k*uCDI}Wu6Gw`NQ8LG(H)QR3glZN~h>%Jli2UfpYDK znl>BU;n@sSSTGKvmiaf>V`k0IhEcuz@c+nKJ<1HSlaU2M!wcy>OzvWoUjM&#MkGf4 zpgU1N=t>RyU#G=sgSgsVe%k~RlseRA4@ z{9ZON*D=@D`g)t&ZZC#04UyJg9fs|Lw;EUbv6evTBmEO8`+$w{^14O8s5em{Ku8PU zcas3@N{=ED1BYFv1IHzJf!0GpaLH1fM1Lr%Z(swt>qJlUi&q8tklX5cO!<|4iaVLF zWr<Z@%`k`#hAlFap5&>_K&`CxqSi#CvhYpAXBt<1(}a>-@iW zO`oZ{?J2o%E{m471X%BWOA9BPaM~MO&sZ5ScEn4%)QT~Nm zT49rg1mS+sA-ORWA#i&wL5JHXBfBv)LwG%`Irc-l$wOWGS$^S(7xv*bE+c?DZG8Ug zvh3qH-ScIJcCl8KRq<$q@8*)YvEVS9)yIDlowsQ+(;wd0v@!wEpHF?p|;?ZG91`U5Ut={8~Nq^!SLLXm32>VQK#|X!3N&H1PuRz&4Ip zbKP0e3i!DN%moSXzb?Losf=I3d9~$#U8-2eR>2#TVjnwy##`cB7_3=uZu`cetD@`p zJIBy+m%#NG-zla-XXF2`LEm1Db^?5b>QE<9v-#in8&8U zx)@Jze6~*csBBvlnnmV&KTuqCvSw{{e&O+6Ky7MF32GM8Dll&D0+L~DukQpT7?(KU z7Fe&9=gcKcqQwu9Dn|)aekK z?Tl=H&(hU?&#}+SGAWr;FqUJOT)`}=dEB27u-tG~wdo%)#BuWMSH@b{(vy3P718Hb zibPA;b7)>=bk8e@T@`_iaO`(n-xenZUiQz9@E)L8SXeaSAkT#GUT;Y^Jw}zDPLyxT z4UtT|9MAsJ2sEef(7>pRe9GRF;(P_K#UDH;WVPkDENo zT`o#b0d}7wtn}XcM}O#XiOT+sX*OX5c=d$Xu^!5{r1XBx!aJy1v086?kyxZP2^VWY7PCptH+SM0(?{?vmsy>VDO_a*Gq>(wChHov=ZqBUxFx~1vZ#^( z*WtY5<@Lc0k zEg9iBwQ>2i0aQ~h-8tjaN~ zGycKb6+Upu?YBC}5VzN*Yb=5gh$>Z&E_T8dIY4=}_xbg3GOPo2f}SZ;R2QU@XkeH@-d0fC9OZ9Tj$Cn{!6-W_cB z?s|`K=#toZIz;! zrg4eW**p%ieIg@ntnx41>S?=4bg6Jj)1f&=8a}PuOLm^}i^KKE*dV&VQhgtlaDwdg z*?3USPzbR-x5!0v{P>w;coXRxQL!vz7y6;5Ej}2eIVFHA8{2njMOGKsJK?=O!s;Z? z;KVZK{rXFWt2Iai?YMZgDe<9eRn$m7x_`7w?<1bJnxX>f;69M5OCR-V{pZAkij>|u z8}6n)=bV*k?ey}jfJ76HM)mwr-2tNacHkG&?o*fZ&2TI8`d8kH3lpCH5w`dC!34Ie z+lMktV$S<>k-3Y(#_wEXwmBOIGTKi)%8pKGM|O|c6v4zhi@%queaO)~!$i(hgH;C@ zoUHG@$&7CQ%%_lWVI5!Vwnva>QGD;NWi30RE~}h6ciw`_Z2qD^BYoJ3dTDQJ>4}~Y z^vwjjY7M$2$vahQ3<(OF;7>f)Ce|)~d>L8YszjuEb@*)&o2e6IlW8+hLHnx*hIV7d zqNQK;;P#d92Ir4BwXi^Ng?xFcC#eR)o!`qzx~U_5h9OBaOagA&F{)z85tzwTorfda z(ZDpfzUKoMWTbA>eNo#XaXCVzL!xv1kU?dc!!2ORUYm%%8{K!`=JL{lLE3=-g_zg8 zdDO&pJ0rdMKJ=Hxahz;>zxgjQzR*`+39sl z^~sL3ZO?fZcvSZ$ApJQ1SbRCt`*wLIs33TcMYXpCPpLAqtkTeZ_b2 zw1qP!Jee^rR4?Z@-@lh#-Q(I|h_;v5_ANG-EAIt?Phdn;>=fn{ekYzleTr4A z>w(fzu)nKKeQa6QuAZWL>~5OK|BBSxB&&)C+`tE#ze7Wiew#D~Y1U9%eFt7=moGr>} z6`aj=7V&j7RCcy*Ri^c8Wd?6e-8UkHRRHRqjdtGJ5z0L=wswi`MwM4j!sq8D`!V70M2Pjq8Goskg{C>%)mKX>fV zE>oEk`FFn~k*-bv9jwvz1~@)-h+Zs*Se%gxxe)5FYI#is1+hUQut|f3jchuL_dtJv zo`Gg<+u1Az-GVkJTVzbeFNk)_NJGv_*p%109vh6g;?BoiI)}W9yx<#a`x+@Yr^`z& zQRFQQk$Qznl|hgWH>AN@p$BY3Ed+$Nl>o@ zFbLqx*s{+B8hkX_T5WUW9LnogUVDR)dyk2{m_bPJ6=N*V585bFKdNG$2NCdGI1hVu z%s1MnK?hbyn5u41S>)5c7P=@vX-taM;s+ZyCIWQUn2*4CqG%zSG(vC9*HEzf;I-33 z-+m?CqfTYGw>0V1L^rcO=Cyr2y%Wz@eQnTU4~cRN0;Z0lBTzHryqghK z4Petg`)lZLY^N7p9k%FjjZf5d*w7{2KDc`yZV13Hbyhcy+3D4}zOUflJ$Po>O;w2C zdEXBOytVjt#@&YD#5wm~T=9xM2U1(1dj)(qU49(=C|^YnSp@9{g_L@O6?=6P8!D(E z(1$#6>pn6&Y-zG~w8~tRy$aFkU!ZEtn~1<(;;3nqu7VWVP8?xD8L}oW>GgYx2JB4$ zZOlUg6$WJ^E}#Y!mddmJ+m~Kddl{Rx0_U>^z9n&^$BI$1-9#GMoILAhz4V^4ode@# zt2;@{^7HBetjlvx(93meFsdtJ0RqYEYm@*mbUJW~uARGoV!U$u&Jm|!-%Cvwq|^EJ zouo@$csJ&7X+hQRYO7zT0o(P|IvPo3j^#lBc{m#2>Canv%yU@Y@#wnC3VFMp#d5of zEcV_&gvshx>FJ_+CCZ9^B)glV5f)~7`BF%S z@$h5JXRw3Bg#WnU=pCJ4+Y;Q@fqIBuA1-tRS&)!*Sym(((Us@=UuDmGO)u{?OHR~1 zWdJg-g*%LU)MNMwHj|C%lll+HPXCdqH;zSb2iz_uMcGR0LH@Hq=ePBR01q!yPe< z;gimnS1QIrb|=6oDVTHW5f2=zSUS+2u~zl4{Cja?f?=B?QOO53&5@@Ew4YiA+gg`=rczPUA` z*PlH>=IfgVp1C(<7CNt&E~@*IHOa>TnXAFpgC=iZxGj^sc9P8HPh;gSJAA!9r+t0s zh?Gc)RqffW4@PUnp&y3@`30>Z9bc;>+7fhk4ygw48m>U2BO@AUZ=lP3C6ReQ4wK+N z_mabS4GawRNQEb1-NN2a-v#1Lka&D*BcbY7?cPksQf$3cEACgf<=$Q0L%yzA>UhGucw(3@1+_1#gfR4G|2pa?4D0a>{ zB$q0EkyxOi%iFWK7DG#1^zEtUvj|OlIYVrAONXqag6dM`BLE#gyzt=T&&VkDp#Tu1 z!eELVJc;vco=Bnuf_$l0YhQ9|Y9m4L*dn!De-%rB9*^?PSmwktb!(IjFKa!<^qB;E zvo$Ztgzx%$FZMh0X>Ucm?X}HMd!y&4u01GIpp&DtB?>E^k>Tjle1C_csn1PTcBb*< zytHFmc`!!PEK)l9z@(bM*5bZnYs(c)2J|)w9SEw1&K4{B=IZRJ-GM+I(QtTH`v-}= z6IqR=F~R{V$+0cp8B6+_w=I5nl@62N+#ebQeJuw`JIrp6OxsDxTig@Zu8YB)9qvm) z7bqDZ*mF$WQ-z_YUZ~v`r=z{LBxncJFu((6JT8jP_pc=ovP1ZP7*@kr$iP|f`1*Jv z(t-ni;qUzG=i8O7og(7@M2WhLr~Weh17-ewU9N0oeH>U{J(!yJKkyRx1Y4Tqe<658 z0|pFt;E{9H2V}rCEReQF7nK$w_}AFxhZ6$3MsRFlVwdnJOhGs=>5VDSTd+gh#-`D4 z1i$AptWzuFEFkjsL>OfZ*7mfmz|JByP_qPhVOW5IzI}wlXSt`a(yqn(f9h zu+k*|8&KP4lAc)k0vtfD+V~C3b`YbXk*D4DNQHSmuA;qDA1(26s<%0Gp-?K!ncNb=Zp5IV<_XjbscWT* z%;m{GdDh$a+ep6;> zsJq&yE&B+jamTh?j(NeXvZfvSdMt7wSLAkZ)ru04z?W^yT80-(XbJd%d=b7{KD2w{ z!Czaeid9@u)??CW?QL517{3jKBv*X`HS_44tmu+z$jWd6bueH_%Q%|MJ!TNRZ~93N zh}SkHd-fjNLTqqPYBdKn+f!LRv5bu*o43_UiXeXO9|=_#K_KNWr1rhB8#(U1E;Ipy zF|!3H(yL`3KoBx-_1Pzo3h}r$=hfVU|O#_=ZII?CU`d)>)Dhss9@5Z?&Y`Z5?8qdoF01eBjXjufxel z!}i(1PBiY9RLBu-xoBvzc5tKGUk>tLc_T>*1_jA^0QxLlM|ZD>6xkgP_K*;|uge!q znK*z}l${yI9hW-FNA@cwyM%_E5>}K`K6>ap5Mm9Zz_OG}Xz(ZFrrzDn5(oyx z#N-~|2n8Ieths~B+sh9Wy3iYOlTxZ*>=e=JlqdxSe&1!;=&3CbI<>y*!3`nC#wyG! zN5`k2qKQ|#Kc&&5T#=0(O9>TY2klzS+DXfsgI(h;f71Sh@ zM?Z#sPgGpEyy6@N9lus!r<=iwj+l1qKfX^oF$}j;H53>epw#2mG0p)czNwh}8SU!x zqV^jxR@q{p=+BzDR9Q%U29{=9;~UM1d1?6YFjaQ$WJK>klf)a7JRtMWV5|a$?DD1i zYNRaww4zqO?>N}#>3Ft{z#h-fFHB#Ewlzi=v)ofrypv#!E_1WwP>A3lhO#xN(m=)` z*pX5u|AwITdPOtPKx3#_&?78zdU>yX4B^D0;!+mp`Jr_X_qBX56f~*@LjwaeS)=;g z>E++}ENkXVpZyN))pcJplKs3?39gMIp;B&PQ3-O&u3@G2`%9^h{fmu>P9Y3L&*NGC zt*1O7i0BkEST`g3wtE40-b^G-|c`sZqBWkyKi(4ni=5{lYmlDH~gWZSk)_ zq5D=l5bDJ94NsJCSe(yWi8zUIP1}OR!8t>Ni>;wcFj!DM1>2U|JEEl14+|GZMzNO$ zCY=(WLc7|zPD5t^bk;Nv&993zm=&z_VR{sUA@9YcEj7tklyY z3AL7)CA4&8j^6Wy2YYVR#KJV^vpnjXJ=qEZ)9CRd)T{5^w8ke^8&Nh*mBISG;& zC})M`k3=~*cL3ajIORw1L!E;KxhHVbJ*fdsmy-vG$Ao!*dEWsSKhHMj*bSy6`XU+q z+l)U3?r-%4B{3B>I=20KEaBklwB<>=2Al8YKjL!}yuI%6VNP}7jLalpSK4?p!55HI zSS5l5w@REEcSi2oirOwfR3NDSCSm(eo=H9ywIjVTpOB4{<7VI7%gH+z*;g-SvJ)K9 zEb-lyO?~<~BS~POxB7GgY==U{$8RCEKKx$)$wzNsy>}%Rs5p;Fr#3aaZo=o? zns!Pb-@MvYwcQj|&#I%}SDBZPX}UwDd^&cw@@CnJyQRXW;Tf`z11>#k7q{zd-w&Z* zE|u|{jn7P-RJhc1JU#d1xXYqpDe7}y5-T0ao_(&|C&^73&9IJ@I-Ma|_s|*MOe)yr zYRZ-vkHdG<0S(xjime+^Z!zlFGoC)3SH-~=1k%*k{xD=iJ9i;6&@TZcib6p3ZN6e$-r0&(adFO#1a2qoWW<8KJqs+Hwyrf2fL?nPfI4yh z0zuJJ&6--TFiGY5%x?vlZOJQ8j^^KRyRruo3xCGmvP=>4@23TaoYJRR3~x>r*1NUm zE#2xGXmnf6#6R*=W%YZDgl&BYIekb9;gT759)WF_c;S%%4V+#1*)u7uh~cg&ufHqyEw5>xW6wk6Eiq`+70e2 z_ojHHT?OxtmoF~$$`A(>w(SY^ncfgC_TI&jGc|hLjdKS1WvVyB3PO#-VM(Wo+TP5m zT36O0+@2I&T3c$5r3q}>qT*yH*SXq=%JAO!HgVp>=zlZ4kf%0TizKoQb4yplhS=X= zkY8>z#K`4pwkzG$FlTv?taD9-2 zSz74KPkwVT@n~HpV2-?Q!?Ub>cv@!vs`EWt;vTqtl#>q!+(+*%$30_m7V<29wO9}9 z8{3j2e!dd;t)-`xghXp^NDfA!gc((JcXha&n)a7>#vjCgaGq6qZtZs@1P^X+FkiG< z@Vp8IepSd^JD410Mlk9jFDEAaS-rt-wiI7N%pl~xV>%`bId1fH8Id;@fE(-=UT-Wu zBMsg>O>F1+79sF`O-x+Xgt8M{i6nFZ~*Se;Lr zWu*!KikwaN)RWBoqevl^K9B!IBhInUA5=)o;->7ka;rYEQ1cYOzotgoT~gR8Fw^M~h95 zxUu%I&^AceAg1YP|6*a86&K^IHq4w)lrdS-8oD6Y)pEN)$nN6)9HB}~6+8)aqLy;Z ziJoAlDkZx9CfgcZtIObny+n1U?G#i}Bpk2eS-X_P1L-J~Q6s$9pl|VXQ|p zD3H#o1-7*~^*Tgl7&cQT7x{ zrxgm{Y*>`Gf#@5mJ#de{cY>ICCyhJ#2hAm5wq2GDa&~vUMSpMLg$2vVt^||@}^gLBx?0PI9*w$g3` zX8jz;&%ZCRc9Lv4N*RUsE=yJEsPXdO4&6#mL7s9(tgnX{bCxV^8brRa?d`1Gf#sUP zzePSC}^YlpO>DHE60Hw5GN>hMPz8tHVgiRcNog=v4cCXcz8CWhU>+NPeg*QdeAAA1FRT)%_^yb2ec`Gv zRv;j?7CjCS#(L!G4mR&y9~NJm49Av1!fgm~RbX=RgrypiD5?IP!qPW1_=%j#ypWoC zVwiy0)7I7V@_EaENsoa|ms*~3ubiM-v+THv;_~MDM3Ys9$U`Hm?3%{-{P=MW4r28z zbK)7G9tlG?H$NnAhNcfBPBBWM*`KwpE;ceaOPGP(8Lhdz${>px_=GL@K~m7YIIsIs zO3~&k?@WkmWMPT`5e0fE@rKf`%xYjnA4K`l17ip;{f(S%c?NVfd29P2vlHxry^@d{ z5_H}(KX0+P+icJPY~H^NyE?A*9B_uS_$fIM^=$A+Y<0jFhs?u>hJ=bbN#)Eb zZeY=^`)zK9Setish^M2{@AoSgiP?Z`VAIF+&ju^%w0`0^24q(C z_ozpg;BHu-JbXabUjtX61R?NbP+J!uSEUcGhlu_~1H9$@4Q~NO{*B|#)4n2dHj9O$ zjA`l_;@EvUEF(rr(GgS2L7B~0A)nJ7F>-k=;k$YWExS_+8sX?vpJjhf#tn2LJ(l&g)W;5LMv?>JZn7xUh=?nM@cE zZ=G!7>el_Pb#@=W4_Dt~zzT5lLIfX#FU*4mVjLknzuhh_@{%XgExTcwU^ajPS+Tz| z(kWp_L{}ulSDm!SdHPTPToSfd>^&f4Ma!ronVz^2>N_MDqsdoX>lvy(<^RD#PB-F9Xc7$L?^={PgR3oR!s(QK+gQEiIkMwi|4)yw`g^6%Jjr2eOZ^j+zjI z_Y8SNdMjy=5j6#y2W9vjC%s0gi-w0w_;*-?)ja#_#FxYZhSn!vi!Kd(3jyF_?wp5o zk79Ff>p-${wQIQyJeHC`MJ3Pq-^VtcDkTouMhGvA76wl1J9PXEj5;e=g?84Sp9{sr-hFVV_tmv4) z^_y;Fu8w)gu}~BzoD9M ztm>2ra5h9`voi}1R%+&iCEs3QXFSBvN7>qBIPPbmirvO)F`#x=rAs~cn9yWJ4uyIe zRJV&MSBDi&4a88I3rV5BrQHG24MSju^#>)}i^fu z?q{L?`&jN4vo99ILWWf*|zGevl>zzRrNITbCZ`0IH5h>d^c3?})z5{2L6~`71voyI$ zcIlF!jibRqM&nCrj)Uzzs5lo`yX`>Oh)0wYw;^erW;T^4Z2>p7fh7yYfYCfCBQ)0d zRea-14e$p2^FwFIcf1yqLE1Am-qLLW~3}s{xcE z3-71-HyaC2Pj5WVOX^=5e7jK#?ROPHM%@m|YXHoSDC*Q=6F?r?T=inZ#%aX^GF2)0n_GlaBX(CdQL%LS~1n5`Tcs3?ijW&yRM_jso~s zeNQVLTTaXnXvrPQ?;h>wFTl9T+6hl?!&Xm36*MFeYa8W5=a+r+7X@ceRv-)o0EUw4 zE7~hUNJ$;Q)Un8?q)7>EeGW5d=F~9KZ^r+;J)Ca!K*4GmJD;+yQms&K0=$%dWpa9e0SX467zHjHKg% z0kJXg&Lr)<(#(s957GW9e))FNZ{=esXMgPoDtJIIA1BWigh-iZj8KU`>#~>UuOA%0 zl2k!xSBs1>HnNc@5LVNGUlR@EXbDs0t!t>(&(zLrQ|Q7AEmlD}Oa+VGs;zZ$5*?iz zlbawk>lpiNu737c#qRfk85!HqL=KNBSZGQPAqz?B?>a`(_}prqW%G)e^hl& z{K4nyv3!a|Z2s80;ASElg4;)p;#aoVi2e#3af^*o07h?ZTOQk;DHWz*nhrV)E82Po z%vXlc=Z!5;NZ>Ru$);2q_Q-M@er>QCv{-?u>-!hyCmhFlY2E98 zB#b6m@V2*JmhpKuT!_(yJR?3yQJtZnMkZxODw-E;w9MudEWUHgudxh=dJLExeMa+*N7$O1}h~QIK2VSvf@>wG2a~C^VovJ^;Zdas04qD6yict|Pt>4jdh&vz$%;0B0U=#ESQ_78bDjKgc9)Z^$4}yDyoENeMGgLu2yC03*M{O3_4<=_tc~y;Uf_;{dn2#i9&SB-b-4 zWs-#*XKRc!4=>L&V0Fdj3Doi>6{KOXWz1v2mssvkMUCTWh!d2`l1b@;emz2utI3td zcUOQ=;$2J|O}aR{Gj_>7HSG0XwkY!YW|5+6G9Tp z$hlSS8vBpcPygyNxzo5{FVc!40A>3kCqrm=Kuq|j73b(**4FLl-$Cw}1M?*MGeY;fnU}fvMq5e>AZD+_eK*S~BM>qM z0EP!cB!UR;7`3;wqrNU=Ze))OP?*)p#UqGVHb(11gsJ9wQaQ-DXbJ?Y(-RpTnHAF~ zh_rqX1XPO^azhaWNk3?7yE7)<-boI|ywKD3CqJ%M0+57abbi%w(bg2t$cv~uafe~f zlxsD{gapE>;V~jd$I>kQC;s&wQ@keAynGFsk29_$kDM`eABhregWstj z<2zptECECRxBrgt0N3Z9A+jfCSBEI4xH7H&hkMRSpL|m$X(l~HmQ@lMei^37U57H8 z5PI(uNM-erGjzYL$B>arQ0vC@L4FgHwgnAjoa;5(b&o2iY9OOvlb0^}L=lMxYiP5M z=D0fZ2e(i=;ZNTPBr{J6EP{<`DzKxq?rcrWB>6u1d&s6SC#iOq>+y18;Mf_p zPP58l?S^=y2K)J~Qh)x-nM%L>0mZQ3F3Va%4l-c7%ycap%gK6WbSZKA-jYk>DYNi} zDuX$z@Yfkg$(y+B_wm1_hvLPXLqj)^C3Gynk{{FSCfTPB%&1$YP$_Fz`N>x<;k+J= z(SD<(Y3$(zl@TA9Z_8S`1ivhP)2R6E$RcUXNz0nk&Hc5^*=bXk&a5na4HMJE-S#VB zOJ!}s-462+9=AK=3N)_Wb2aQkc*HT^K2Ov)d8y1;k8p6p~>T2}wFf1~yj@q$MU>0Ui^@!K@a~tIH7<$+OTv+)#0n(#tm9CCH zns|QEpFt=cqD`imkyDQE@of+%jX&^-f&b~8$QQ!wc2sfQ0r3gV4Pe`p3QGXFOt@7!ICmJb$H!Lh<%%)HM zJ1sMpW3*jDc{2|08bDnG(k-qwt30ZScDw&7%q`GHE3A;FQY;v}5%|j?7L0x)Ta0CS4C95TF0_8dqVS_SA*j%n!s{TFBZnsk6b_fnX-hTxCdDWK6Kv$ zE_(Ua$vfB3^aH^|fKPM}irU7@mkxqA<>$kw8l>oQf3cZH~z%jP$% z6+lu*^R682vTE`Axh^%oYC?Z>J^mtjGSj~kC;c@YvDVG?_gV)1_{$1c9E}-5&4RQ7 zq#(!oxlWs30VZ?*q;|I-^u&eoQTxOgrjn41&Txg;1OB5;GVoO#3hVs#k=3527!>s` z#G>*K$fpAS*$G|}_IYzb;IkJqDLS#=5saCZHkMgD{M?`1cqr@W%wER}uc3d?5vO9J zr`wz_i(0Mqlz@}kJ1QK5R3mYEa>NU8p%_@@=VPxradPXj=vh9*E=tPgceuI)=yRSm zD(Yb~#+L;%dBY5%O_fv3$R-Jjc%|=3(i2Z%uAQ2j-3iC1B0&Ro{V(t&f(0PyTPZXb zme6A9k}$Y%C@OCqDKGX7%Zs|_vi8k2u6XUARlV3eF&1laW}WMCDa`cN?^7p$Wo@y> z>gn}l?Nh-1IM=U08*$dyRutJY>M+H+aI%e#dSXAVrrJ*r>F;fJ_?9yu3l{0j5k4*|%c{T@+ogDvs|v&Z(g?$gg=Ao7)!AyCs8^>EE6B+SeO z*3kaG*j&@^{sPlr<4hn82F-wL^rb?b#ekP#1lwFnUIL-68DJP5VdYKI#hx|;PVLdS zNB5RlpLTe9zs7=`1>{pxvcK(p>K*ON@Qlsq*<>N=kghvJE>qI&)Y7;swVq!RlrL3 ziv~dMBv<`LM_hj%jzIL7`>01fYy_%_!?{DHRkV6oVxyoXC)_X=xTdy%;^x_sU0rvi z`w=ALVFB}mx|`3Nx3`-4<05ribTXYvid(Y39{c%Z9<;)}Ec4rbqOW5${E-TzDRWbB z_-hUWJCIHFIsl@MdlaI=E2CMjfe~@EB^LUL)4UF~PPNrHnew~V zo=5(9v%ULZrB;fS&LrnK`(bWHe@J9f2~XMvWa+)&ADTF}pp8GS)~dfF8TfWYVXaU9 z#n-rY3u$eT+QOyW96x0~d$H4DmqtvHL>os#o(BQ=|V~ZY-sZPZwXcR=m`iK-Tfr|JD0@ zEU462qtcqPpUPLji0fWpozlPOAYSzWTSE`-bGsS>fq>bJ6w8 z(bM_Fe4YB3{b4k+&XE92VC|1?>%ym}PWX7Gj!wea1Excjed1T)@8C)aimK4nZg2Wl zPv5n)=ET`KV~#ulVp za5wbkM(RUx)rw*}*X1wOeDn@P2r%;<3dOL}5?81-0J?5P5kE~mPylg3y4xb>f?1A4 zqfu_(l9SYi)7%4N&CJk60FHD?d(qOgt#1QJ>yW0lTttM-;t$ zpRlO7_vGx%^v~pE`DrT%T@-fy;HvHCr~%Kt)hPFF^9dn9$y#Hf6n?ji)A!5<3*g2U zrR8~vWzmpycm($e31P*0{AI_m6FQz*8(G8%e4z;)k%5~Y0F@3Mofj4d?rPyUU_Y1f ztUSl1MnQZqfRZtS910JlI&TQ8n{f!=8!O+EZ+Rb#9W`!PXm!M8Hp;=_FK31PfF)I7 zcTGLgCudW9(6@0d6Z&KF5XT@g+N*XL{ZJu$96Bu}w4PI+b#j5SeEN+tI4z2- z_O=)whb(f-2Wu4_cx-b8F6B=uX{>xGFE5`|Gafr$-%JO#uC#AhW$0*xniI+zgX1cW zSS+})Vl=;PQl8o-Dzm}Yf3GLBolERZWP0LGADH3sA@Wb8Tr9B)Eq3EhNk&~GbHw!e z0!%FNuzyzcoH$+?DJd4uT5#zMIADuVZ=YKglPr&?aN{q05@+U$7=M3R@_2YrMD3SE zU}Hoq?DfjIrety=AjNuci^0FqlQX2rGK^?<0G`>2Lc6~;g5J+@b^VX_&N`^guKn}0 z6e-?PtXP4TKyfKJ^mtlk9nyG23H(mp^Q(c#oxSR=OF3^M^Y&5Y&`7F$Lo&Syz}X z)gGYRd%a7^=eI{Zl7C&-9=B}4#PiZ@#CT7x$hZ|8&+Oa5wM+1Vk2fcxwIF zXibd-ovlhEGTVIv!C#jb<9jFfdm#!xBHM$sDAj@V9=#ui1uEm?r+M9Z9cVQ4jDyCj zm=TSEGmJaNzuUAxrR4Rzc5ka#JlokmuLrAQX{E-DI)W51{I4#?4%VB(y&%-Iv_D6i z58H0q%x{(K?KzOn&CZC2)V=AM0iopwPix0>iCPw3p+vs$Cb75b(v=rki-r}k<;4o8Xwpp3}yg} z#O2Pi%y;R#isu&5Q>+#)2zVJ>Lg*Y8GQsk#Hl)9QI}>nz8|D<2f})N21dz5{RCPIH z^;_Rf!<%hS4r1yr4i{0PGzACMX6@BsCtK4YyPH%isAtt6AQ1JWY>9xbso~LrPLnri%(G1t!_ej#OCt ze=3x3)%ER9Sy$e9(dI(2<&QmDuw7VFKlFHFCIAgx^Xl+;`3#08O0&k^`=xld~1 zuIl{xU-*~DU%JCGT&bR@VVDF*MjE zw2lX>-RS#=zVxOB1xd*~k_^{n_h|~pb4^d=K!d!DNdN1?rQhI)46Vlaa~I0Tq$j(l zYewK3S#!f16VPucw|93PD?!2*>|Fo_vyPuNWR`~uVNG%iH|@rw!rBe{14>#aciGFV z(xWe(rAru!gu?VgGD1XrM9NfEwLWdB{3WyjOxLR+iw>tGxQlIiR-mv($?*86DrRot z;)#QUBNt*baOHS;(6s?HW0-8@~{A?R34^y&!?WP?NTbdwrJQ-}oWT`{v`?o5|amad( zizY9e`caILKc}yY4aHEk;Xa@G#nO6ywbCJQSxMdgL4VnFTdszGj}CaNlj&n_W2-^a znrC|Xn#vtPR9%Adv`}!OGjIobbCWdhQp#p8Thp*_B>2jDtt*Q6xU=>0%SrH!7I(EX zO1b6(x2tef=%8n!llE|>%3Bo?t*Th-zUx@GIl5az3%f4(z%T-2*>G8| z;dXiD+IX9?XMQc7X9Hk+jQXVO>WU6z@M)u<|8Qh=Fb1>*Zns@cAxh%7zj(%tC5|kT zIxhNK|DV}!L<`G)gLlBRdUtD=jhEP%*EN(V^41yNt^Rp*nt)q%xQW zFSJ+NBtZ85UNYy7a^LIjc_Pt_A-PaYw_#UETZ`esqE2SB`->=V6@}?a4xHx>(O38H zGeL&5?Vuer9}19vh*oo;bVXwf%=L=PZJ0gh&XVzFo$mfH5TNBUr0s#z0rjq6 zMd@^1Ib#aV8V(P!3KWza;Wr>p;TO~onMq2uUR$uz1uq<8BeHj1m9wsiE5J!*gWd3&8U zg1a6M9pCa`jW&$Q=gKwchpxDhYLW$6k!WkGpdKi3T05V!eQgAEiVa#X>omN*516~M z2fit64O;;n(tp7i+p20G`HneQXDs4I9<}wO%Am&+Dp*7#lH}bDpIh!lbrq3Y$8hCn z3E&)B1|@b!Bag;g5QVT~YcxhvsBf-QW)OJd}LehYNVhP~@0pcibeb zJ--$7*B%&hQ1$*MdLuQ1SIMrr0b++^@h5n`MjdaV*cZ4TS=7viz1*r=A> zy+JC3n(ss;@0JRHgvajATwBzrKAq&0e0Oh66E?I6M~e2q!WIaRbCaPty^yf^bXA;V zu7(^FrR0ZqZ}pA3ViG#Gdm)3fM_!*fR2&c1=HkBnkhyWaI{%q#xbj+Wi2q|%-OTiw zzNo6yP<{>u;Zl+Ox9*3fQ^4dE9=?!Jv-$1m_Lkg$5v}WO5eMQag6lRvi-T*p1HdFY zd1h|LEgHoAOnqZWnCBRv!JhG|N8E?{AQ&BNuMH#=8y3 zF8_`lI6ONZ>?moXMMNMbBZDDa+tKkO*{_)Pv#(e&L+R7ujvr3!c^zzTlf|;D|5|1T z{9r~-TFR~5kS_M}WUin$R`Z?yAyh)C-Ll8?5ZpSJ^|*IRN7H*`o3Hr)jNzw&2=2db zWINj)nXF`mtWawl{T*Z!;$h2tlg+%RmHAK`S;)^t3aK=9cIU_2?f1B)FF(j`S+u}# z;$D$Fvr23s?^Xr5`)fQ@ht%J{{?xg}TZsTu+xHMqvq=wu0wL5;neqL1LebFb42Q5m zzZ_S@IqspG{+xR7oaOdr=~vfj+_R1`Xvb5Z?d$N_T_~<MitgmA1mr}EPp%=9Hi{b8Qom2_v|g_B@b~a! z59F03I0%kzx+O|1^NQ`EZtIv)D&MTyj5`~c-9CY4C`A)`qgK?l7~rFb9%1xCWv}HN zTQ3i;Z?f*D{>b9jgsV1M+pdFj+8Qp3^VcK| zLZ>TgEeFVV|D!&t52T)Hd4H)tU<#7GBId`$5@@aXaR&z?vh+npAE0hT?M*H(Z13(U zi2-bR8!LYcO-@%peX2L;H3)sznECQtzAyxXX#axJFAzbS%iE!ap^7N7!rZRC^z7o<}>a(K;M4cB8$h zFB5-*rR0sN0p(2UMz{s_)#JCJyd7Q*W9Zjviytn3Eo#vIW7AF4EbQe@j&J%(JG)}|0Zb_h6sVFhP6Q1V5tP2>~;}@gLpv{sFJ9~1LnNh7d(SuDhl%V&yi`keSZ&|?7*e*z;V6Zd4GQzrv`N@3lOwv z4(skPR92TaoFJYQ{jsOt6yA+D_+Gv-O4@NlHd7#iM#b=%io!h!+sWSoXUUN(n_$&E zl{>V{l}3MWl__`bU*$_ZE*}H>*xzFAKMq%nr*5lJr^)q)X3PyOhOBGVv@YcjA>Pm1 zx2pJ?LUwdsyr7h&Zp*36Ce81y)z3a+!t#qo9yI>sZ&zS|zoGPtD=FV3eS5)%0(bGWue^ie4Fti3Feb(qCJoBh^uuaMOe zv$xK9pZOuAUJn##GS@0Ln8ikeiP?0&wlk#t%nXn&OT#dn z)p<$19=XNhv3uK@%nhp$8aJ}C7rYT!kE8YF_VJeZmL_=Da5liKci#rO+wd`ecY*QH zoy+vly}mUfw}7s+31XdVDTBRik0B&8T^75z$cQJHvMFED)!*M_coLDyUAqJB00vLN zT9x`o-}}aJSkE%hdU|ps2Xh(bjUp!uI-k(bpf#EK@8nAC$(3yp3sX+z^|QTqqFv>}EcaPQ+OvmOWl{KE>|75m z=_#P{-=&oyyWfuLrC(6yef$GU7Xdane9^DwS~k&|t#2^<60Yygq+qsi&579-K?Y0< zC|zk7YJ}cDKlEvdJxghS$KT?f5O&VwUXOAe(V8yF*4l}*1mJ;!;(R?c4_SIZ>8KCm2nk4?@}CC9p$!ru8Y8Jj;l(g zlOL6&Sy|7N9%lBuCYrtVd9-{Fd&RggAEZ=HHowLS8#rgp` zS6}54%73Jv6lQI?elhEGX8E245vXK5fl8=lR~r#KnLB-6)NlIQ)RFxE`l8`eJ2@3BmH)b^TemV_QI@%Mx4Sew4&uU3KJb>rqm26h5tp(qAXkWGJhD5nkY~Kg#tu9q~G!roB z+$h~6G_kZZT6JYz?Ho5t?&8zqq7(#-cHvJYJ*Mtwl#X;vaRK3c+tHFX4>LrPo;qLS z6C6t?r|8ZzK8*U^Iau95ZhmjpGj2KwwGDunnEC25>h5aGm5-++teEM z%|T&<4ix3f<U7t}J}CkGld7On3$4 z`i@m&bKqwF$@5FxhFAw+?p~eb_3 zIEtU=&msE!2B2JK%C z6o{$GeNbx}idjlywChek)2_F%9TN)K%=#OUJb_&5N`G%gCg{jhb1sHURTCKEcN{^^ z72>nJJh6lnTBuDa!zi|UDdPlXpns?1cCu`INmI>*T@{(!Z)XYgRO7265Ma+_Bs9{l zhw;gnD$;Dz5Ry_afTKCV%g?Mh21LGx^5p&%7{&GMh+s$v2pTF=fV4Kl( zHw227LN%s8b5@>T>c4Z>2G@LeAec$U#ELS3{xHO;t}E6F45J$cIc!7!BCe#?;atH@~4shu2Wdk%{PLU^#YZdHov5=`<|ai~sz%nvL?+ z!Lpp*G0o@Cx(YYmI_Vj{#Bypd+qaMxBk@1ji%%W<=N+Q40MBqE%qEq70KTH2P}9ju ze*F5wEvL-4CZa5jr>3UiKDj%BbSN(d^_w-us-`)WzRlq8>`AnIF{?Gy5K4}SwKd8! zhi0Y$NW9{;2)@mY>1>%Wj_-g-Y+ejaS(4xahhQkM2hzV7FYSjcSQ1VF4!?QA(gPO? zW6M#VlQ7HOu`U|xtRb7vU|XXSx(NF?pmvrck$dUVmq>Sma9BdU^EZmq@vu8%+lAg` zBaJ&p_Vc7W!X)gL3kDBFNW~2K( z4w4=V6J8>Bw40 z_EEHJc#n5@01~}*^Sv=+n%9E@cng5zvhZ7N+o8tb`oz3gYpM>{jT`VnTiQ>?k_BZ4 z3PRS;C*V^lb-ZSliD#zmgK?L`6`@8M(KyG-Qi?t6lEp3yA2t#8?5{6>r0!EywnKC?yk@@-+Kmroyg_~ zhEE>2?Rem}V+y4Ln}Tt75mO;PJd)}Uo`hs*-YIUfd>G51I1o%j#k(|eBU7MwP>$cJ zA$=p}9O48kI2}$y`=MuLv^1&VE?V)_RTsBh|k0))0rAWp-jB#U1zQ!V+r;V^V)>Ypmqz zaLu_TR^6Ad(D7BZ@QvK8ZP8nS>Y(~e{SIj<=X7bxnc#~fsaX;@*wJ{(QmFb22u`Gi zJw3ILRHvf1g(P`_i_$~7RcddbXkTsRfF`|9-WTgmyYCiWHTg>f%P|TcinkGwOojqo zXl=0OSYa_B?@{m<{QLVp`&S3XOMPh!95*UznhNb4E2dU%r-WxRidaglT3u$ImV7=P zSJU3Q{j;U=v(_S#22ghNi$;_N-{N83D;NlmfZK;w;#+)`s5k$^t(&0W;5Fw?Y$9yq z$+G9Y!t9Jrw<|!>-p5B^tfdjVz+Ck3b`R*lwC1Jrb$_KN=x2(T)?(IiZd%md@uYR0 zZ4s>l^y{bKi2)CCzWU=%i6NOK7hg`8{Sn26!9kK&VvNKuZ@!J2dT5r3F{^%O4fVn1 zxC-HY17EEf;e#Fs<$Bt_vO8)*7N~SP62b;g@aeE*Ok;GIUUiyL@vKda?fU)7+nUZs zr;qaK!R@Pi#Pn;PR}}fZjv{?g39?g4rk4X^XL0|~=;p@QCGaQtz#9mf-cVxs`LgGsVa*2+pW0YO zKO@6Zbw)N)H^j~Yh!j4r_Cbp(Fs=5OGCoL#BHjvir*0K(rb;_Zja8UD6shhnG~9Y(qYM{DhZV-u@GV@U;ig z5{CPpt(;a;Q^ao?y2hQP8nTt~+_ifPTzt_q+3Q82{Mw>cry-Z?k+uX303>afS*O{* zVCsvzySIF}fMBz}(5t+%yf?<2u1kVMwpnuD?5T~w zD_Ui{*=%U|p~FY~_3Y^qE$8EorPwKhl;MEP2I)5L;13HQB$e6|AaUQ$z6&xj+M`e6 zbKN1;z>bhuQJ)!7c2Mt+62OfK!M-yz^*4z<3d5`iY*S-|%2u%$>3AgX1KNm8gzFQV+FN&S(z;wZw;_%I$5*@gAKN zQ&6DBHSYCppAPCarI@g_j*t&cg7Wrs-EOkPG-+Fzuk*Dw>|B}BjK1LcCef}cC7}%u`=bD zFrF$YYXTOrvxZq*>7%dKC0f2E{=q*?_hSpd8%8atUfmv$?8f~r0E6n6tsUd(g{P() zd5#lRgd;^~TLyMf{k%LUo|aqQn*NCysy0)PJ=y(c1ag)di*Qd==blOFFCt}6*vkj+ z4{#I4@WuS1$CtXn<6YWaZp|DUWR6G`sbO4w@(f4Tw6}+zLXanRZz#Jy=pt1gnues0 zl$YN{!FGQT>ldW484reBALRd<%I9tUgPP2i+W-9#m@2Yqro4Gpo@r&PX67{MM86>X z58|~ptGdAU4dd5M?EDJLB^FP@ygd3MRtz<@9{ll>5EGq;!65OjS5P%k=Gh-oi$8wJBOr{FEe;<}OccDeeE$lsiK9{u`7QehEv zLbX?FVC%Wgzhtsy7r=H7LNbe|Po+7T8chyOFgFN+>?(>Mrg^=Ke#gwPfJ6dRO zk-!~r+th5^<@1ixNqXW9u7A*5F3TUkmtMP*?J*vm0j?HjVF~96}<7#f4}Hleu!Yj_WxY%mw1S z?ycaKo&|rb0AQ)3!0WjjM9^H0O-j+elRgP0M63Qc79=@EXURb(f+bT+HRl&|a72yC zZmVNNCvw!Pl=?(Caq-FV%@blf4;=;D$iQZ7`ZR)~G)NeboQ#WW&2nXZ->e=LS&L=~$HAlkad3l?$r%OYMQ7m-Z1l zYnfeqJ4#;ZN$kV|wf73UVtT5ihw=TPZ}EQkPyZImtd7YbDrmY?=vE}%`JL1l+j^yD zfZhAmqw@Tof3?#J^)tSG_Ym=tB8K#5d=2?GYq>8yIJ2N(T{pV&$~@g@uq7J8!tjLHl?tue&@%4853ZfQ<#)| zvE~D^@}Z|L9N(nnpDncfzIq+m;5!I!X)JJ*GW_Sw#|z5UfB0}Nss?? z62%I(V`2dzsCpd!c^VnFB~3kKN=A02yJXBX)`)trfl+oidB004UC+6P!*S-2H*Luh z*EIb1$ntj`k#5hCSuua+$~l!OcCNsL`G)(-0^hRV>pb%@t*YuZ&wr9#48t5)BQHJv4-_Db`0sjRf|JMeq=C;cvQ{K8xf);j9(e~7j zx&;o0JcP^+p?}S|knor4Dul34{*I(;Vz||nYNMsxxN~2^)>K1SMQ|5+R2YeWq+TDn z-s*@c-^|^*=TBV7;gLd*Do6ujh@D|bCAOYU9miJ_n~}y-X|qKCMQ>4YHlDn}d-hFM z#p0peDGF-r)yVpDx1CMYxFU1;?OBbaYA0-*44$;+m%*HchC;=jH}8G!2A8Kw^XSyk z6*9Y);tEueKFC?bxp8Z2JX=j%qxZzLYBFoNWn@aDp_abq6Qzch=C*=KV;hmv>z*Eh z%+!w`+fe7FY*Iq!H-9}tdGcK1xo(ogg$-as;)KC2g;apHNv^8XhNm`hb*ZJ9Z214yf zGUmLmpmR68Go?M_9CW3j32FM`GBRM@)aiK zs!7NvK#ByZh&wux&9EM(HvGi^WYN#Os82SO3{1{GA(+X>yNGH$HmcM$-Y@KMI(8x+ zC7pTY^#sbAWczEYRx^~8KZTmLEzZ-lcU7b^@k6r`9Q*H-sA-4f4-}%{!Xt-@n(F+K zdrZ1P8~@1wqzb({5-&vkb+Nkb$RU(DPrxv*DzTR8LJ%huwMVZr|4Ops=hVWs*@jiekJRj@YN%YLiz<9*Y}h%! zRq_2WRK^bwVSWl@H<1Azq1mZ;qu)N&lODb>5Vu$Pvc0qFJX+jX?iq>{ROb!*4~kd@ z2>_sg37-1W^;oZTLtoh}N}2QW9`aYFlv#J__qbH!xmDtY0`k`q+L|xr+F#^`aH_>* zq|C8KP(#{c%0AE=_2R%g_2Jlth#o_+u5rBYO>at1ZEw|sltOwp7o|M5Wzm1|M&xp9 zvsf=nGF>^Segr^-DNSkDbDsAEOgZQDTX$L&KNPKjY4*;dQp$WZ#YglwUFutJi(>a# ztou5@k!2DD4Adn#YcFQj+FY1f6~wcD0^oeN_XK^y2d^@Ynk+?jC8I|fxv93bMjzYz z@txLJ*|_r014Bj6_a0jQ>a^OpdgE8kEavx3G$xha^1$*QL1zWG6W+Kbm#I-*V_4QL z@N26>? znpE9r9Sf{Bb|UKCZ+imdl_CJ0rkxvwIh$fs+PcS3ZoqwQJH4$D`Cx+|{g-N0En@zR zO(a|>q_)3On>oYJ+H}@Bk6p6E&d8R(DxWE1)qv)@r8irqXvTJzk|0!kW$$w7V-CG< z;&o3oHhtGSKDL`%y~>hCA7^>>xHNa%I4roNoYi3a=(T25+zTP@8{*I(i65` z!H05<|2X;Z@jtVg=$`=+v>Yk+NN|0tgsF1$ zv+3X;F}wJ7J6jyCRpBTL~X1D6oeu?s0Bor+fhT zL6aO1eOyRFUctC_$-hrc!g073@XC=M z%MvytEGr0N%iDuu=e`Vl)*S#(Uu&14e&XEgHI6L(_E|j%Jm=3CA$~=VyRhw7$>#L7h+wMSE{hlxZi8^H1st`1_UN=lZjnd!|bQrlE@1- zu5Fl*{JSbitOqd~Rdi(5&`%Q^D5hA}tj6{&+^M%$id_mmfxl(>CZlZezJ&L8b#2c< zRZus(x#Wi2C5q{Amh3=@x!1+wWKcK;i{#IgQ6-Wz%~R!FMv;EPDuPYqnR##u5i9$W z8IcGr-Z3lT0z1L~fqu@~vEpS8(1inDjuZ6_zaGLzDuXzyz1Av8`~Z(SdLhfKV`X%% zKLsf@0GLlaEiE$7`(3daTH6~;+FQ7T-N0IOhp;}4zK*U>BJGW`y0f1YvU}Bq>eyfW z{4I|Sif#qrd642}@Enz~`DeTe5s2Md9%Hh~6wF?F^AnX%(Ye(3?Qm1OzL8316GGdT z_^Dd2+xP`2Wn&D6p5OpRks^4`cF<~jv%>~p_da$Vv5 z`M}7^YB~`6u2n0lpMQ9SLmC&a03(huI(z(p@^H&V{ma^sK{fhR1)(S|MCzwwUNw5u zhiJ?SuGh8S8qzN1HZD4dUy6&7SVQ4X%5b~2jvpW1=JoJ(gVQM(%Q}EqZ_nbX($aRr zim#cVN_NaqYVm7F>7|LR({>RVzB9y7qlf|}Cdbkotl+-s4i5f1pgQP2V1`&cTIqS0 zth1EDol_K89$D4y`qNqXs?6^_?o7E1 ztBUXsZS=rugPMh={W=*%n~5AL$xl3&fBq#v`}s?(5i@AEk9$l1m9XIdPw#)HJoCZ4 z`=V}zyt~NFxEC*WT;QFD+1MCopZ)|CKbFZ6!5!Kf3tH7fXUS-WCNWxh}y2Kw|C-pB=)`cMBXYLC8-NVN(g*Wp2 zvq>rG(eYp%ytLJ-D|HCbLVu{wg*_6r|3vHaZ1&{}DZp_3cOO-TZC+&&LX^($;h_H? zO8UP#O!jC-`KN~I=|ivs3<$r@hvMT>ltkkCW{OHy z5~_Prk)q?a0}0Up{byZlnf~we5_beKMH+}-3LS-SRpzy5Q;FBB{F5hs4b4^F)3vpa z=MOA=n0t616EOS(Xx79L%kPd_-5OwOZh7NF^zsH(V7!r^w>Mpaa}qhvseHEfu^)F( zkzLnew837{`^Y(=W1ZLFYK;dwd3BI!b<4J+>vZktrKaB2MsL8{`4#)fGqwu-LV?tz`vdRis^ zjbdfyf2gbZFy`vDlTha8iuHs`$9XNZ-m|aHZY(hR%C^B`V?k6Kxv7Y3e*FuhPrIyq z301DG45SBHofpxv_Tgb`s4qOfoAQ0f)>bhR;>#wc-6|U+XE#2 zWLB5ox4zyCN}W)I@DC!=a)?yoo0`2OeN(3&ZHiGt8>z=Q0bcPnVY zEh`TnZM+$lTVD{{qKU6wY1yfe#6!~lh3-dPs1U0LccK+x=Z05e4ewvubzz9yYW9$q ztX*;b6{XP2^b!cX5DC;r)<%ruAB?m;HW#^DVx1j$eJGN{7CaK>q8JUFQ{n`$qp%`+ z$fI|H%r*WIX46l z;R*<_&2`o2Iz=@&{_e()pKp5*JLrjAzj~}({_Qy2=-MZ@sC#B0OrE(1Whuq00nl&w zXu;|zAzbecliNHLBV~tV> zH?sX(V;&vuC@W_!L}uuY`1D`?tr$H!I0I(=xeHNi1&F%A^y}Coae?f4lh_9ePlwP5 z3=ZI*J(QwFpCLLP^kyBc-`|EI^LiFr;e&REx&}f0N#u_z&(4BQdo6aqBn$!nQxr06 zgYD#PB-mYDhC0T!8dG<@xV|r5L{ngU9_(ISCD>Ih((~|KjN9*V%-03t~MS`Hf3!8;TyGwU`(R^1+SG%;Hi~ zLLu<&G~2eF3#5&OycBzoWJ~aZRj(BfupZL5>W|&RI%nuwK46@KOngZ_`>{G?lx`lJ XGi?11n4Zj{ATL=dMagn;1ONX9uaY0L literal 49486 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�(XNo}$b8 zMvT7e`N-T-mC?e?WkJM=u}2oBwAufZ*Fu|LwA#w(O^?o)!F zAOs*v*0KD<)We@}0HygGztVN~_KlVyxe=#O^*{C1x4kBudlgJWTnz!X6rFfpNdrm@ z4Y5V{r_TA)04L3}nYT9+e$Op3X%24Mw-udmH=_Xp9uC=LiGn8&8(6VhgzzbqpFqd; zpIT8|6bgWA0Go${u0K8Tu0LBxHe~v+Cek}9Kqa`ZD9ea4xB1SNRkaE` z*-51`2@Z8Q4(2Y6%Agh9ejhhIR~?aWu7X}wxajXuUPe)-8rAIAZkt{06h~!e{I1g; zf63>X8@gc?fb({)`1)Zu%G|is7}HpO zdQSCJ7-2-vW7ECxXOzwv*#s>TgMG*_LuY^kat9|W8w(oS@ zy$G3>77abZU2Vo8ZcZa&D3|mOAEWhCQu)@w&w_H|=h~>%prBHxtQv&2DfB*X;!DB9 zB*T&qpdHtEQ_U}4s|$*W)tOqxoAKK2ue%U^ptz3_J&|tNZo4>}Qg&*oExp38a4Jup zOwl4yA;Ayf3sFmF_{GeENCYS z8CR-Y2-n27;PAj-Hmmz3$wyUnYoR!wwr#6+9k{B;CEB);@`$Z-KyWz$qF=_*^CSxBua3H^zv zZTIJNk6(6EVe5E5VKm;s@9|>%`%3d_TMb4n(-0o(x3d?v9ru%DFP`HYnTg#tkDY^O zbUE`vq!>Sv7C>%1Dw5-}v?X&W-p>dykYkKwdW|-!{oN}L*PlqQ`R}NSo-=0rJsTT( z?tZXEW{aWc)Qd*P#P)6f7CkkRn`x`drJ&_DI;y{yy^ksi``Fv&V##=I044e^rbA+N zn`1TH1w4LpYUY>Ndc0DB-ElUtKhtMnM$=zw)cD3BxtyKLjNdkIs#NB33gTkK-H|KS z>iD~~nd2lLW4^(z*7+B^5jc#G5vDNYoLpzU$%uF<4J)n_LSzH^n5Dz>hNI5&bbj2$ zRrm{B$H_X*Vy4US1ybGDE+>hv7Q6|ZP5y4e5n4H7%5Z-B)5YFCeXFY;CD>vQA0@rVmHsMqeO)zLMAC{)ZU%$K?{*i|CH=0Ba#WkPy8N$ai+!Dp2%^nu z>hBJ7tQSxa`e`o5L zsdTC0%{7lZOqp)+$ZsU}uPn(Y@IdzA_T>x)oBnK!swT@D*fC;Py;Cs{>p2g%+kE4T zztVyv-L^Q@NtKzsc~Sh1)6{&z!YnirD`3B0dO8)i=P1FO_Nv6A8(9Z^=kXt<>T&m* z1E0oNw!Q5VNvVj4a25oQ-U3(^P}ngG1&;!MM_o$#(A=CMkCX`VjnVN?S@W0aEpo`8 zABG;SLoOQxmw!yL?%w z)qX@&Y1r7}T)^JYD1m?QnC3Mf$4sSJquh17)?~_k^0`rx$anQ?Zi_Dz<9lfd$?5UG z+k?h!GPA{$!Hn#v=~GeuF$G2E`Q826n!j=X8SZvSNSx`r-NLj_$jbJwCXv%VQnbcw3{GZKvw*XzsM#U0KO7^@j^CUWnH&sc~Pu%NM>)6*j6f z!4ndbM`c{pvuz*`^{>1i|JZ6A3ApPi*^H_hwaWCs+Y4~ZX*{C3@k6aJOdM{;JU?;S zNm}Jz*XN|Lp>5Y*9;4+R4ZR!V%)!s6V&Uq_~xni*=q z-e>)2J(YjCzw;+bcDdtb&4J8Ikxa?iZ+=wf#v0uJEg>Q2D3GtrI>jq`1)dHc6Q5d! zhIu>YunRF5G*vv4@L6ag>KAvrsbvroZt2N6q?+dVy{dvS=V>zcYQlti5yP|P{*a?! zpw(xN2%%>09CrFFhsU`ZmAQC_k?M}Sl7Et)V2fd~Xt7vQhfdW6%m^$o_YLSXXgBe? z@6uo#9UdND^m|n~AYTE~boXYfSveFQIYgH85aNg678&n*4Au=_TFUfZv}2akWO*{!KIc=w_H&R~V=c_k*jQ|DHO!a>EbLPybv}a!_E>y8`x(RA zIIyYFf)OjgXrE>HEj6*y^J8d=J5y)Yn?3*vhzy#8~Tr>7I0x(LlPF*K7>)@(b=Yj^C!R|yM=Ch-1SCJ?)mmh zS~T)!=vG~Z_U@MMS?K7h@*r|E;<$nqy5Dgj3Ltsb>$}h;CXkx>pU2Ps>+SzvxDfu& z5;!+LtB{sg)w&4*NX?m;?qz~i==z`m8-kUUg^hzP%xDMX8u0(9+>7t=Z$Y7=hy9-)=s)Cd`vDF9f&eoT7>Syr)E&`221N)WlMRQ0TLnYKSoJLE=p0y6%R@OVajhqsz=M7GwV}OL`>0FIlt5F zyY=NI2;HUGI&PKJ6<~EUmHmD>S+kN5ryrHB!y2Wjbq#!{iIY*>&yqgOIoA<>lVg*_ z>1c;y;7nW`Jk+W1f^9*Ea|VC*%p@05Ea}Xd)EnSO!QfS_$;^*|H-A~Opxdd(@(hd&A#6P7?GFW9lK`HA$)SKXZzEa;_9rCX*gJ=I!}0pPZ8A7<)QmVYubk&wt&&x#dB2jIp`?y$F!dO@dK&qnsVgirHNdDm6D)N=wv z4uw6D;wcS<-PbKd?f2c!PA(Q$^u74 zo{$f1_P=5|F+=lD*b0e$SN}aFGQD$LO2;D@7TScDIXBf<*>qaZ#=r#Cpl&}}YLf|5 z-`E!%_8eYWd7Y{1UE#LfwQN)R^mI5*i$hVm<$EdmE&=5}gUUT3e0gn{M@xYVqHduB z5+A&tN-d2IVK0kSOlf;(w+C)DacR$=*(K46y9}(UX9sN-541oVVP}8-;skMugK&n7R6$P1vj-?VqhRVKRCw_LSdW)h_RY8AsH*)(w~I2E(DpNrtY<$IC;sZYwz=P2Kz~1d6#iENHShPo+7by;1#Ew97^({>9s~C;(X}ZYmts=| zIzwY_DEHzZc7mi^@8tW(Oelw3qBa|TFFUW%ia9vjjkmv)C4BfM)IPB(g(ytaQbYtu z{`Yt^8$5FWUH&!`O36iXos-d0NRM8v?^uE4J+IXjTs)64su^l1c?dk)O{p=87AvlF zRfDT^CW;;_s`bfO88GuGd?;KbMJVZ2GON5_s)_@wl~$2DY8gfQ2Yn;mw(p+i9e_Wk z=UzKt5OVkh?nJr39+3k|$jg-Ezs$v|eYJXOK^Ohst=3E;z(fb1Z?~6Bu~wz&v)vDJ zNR7`oQYykaW_jo@u+d>S-Gz!BdC*f*hGyoH1O6NtJ-yaO(lRi5hr53oka$mpch0wTkB~P zQn2oKadfuCr>u9~#`hBg598*WoI{(JQ?Tmjcv0`3$%5BPA)#HO1{|k5F}Ci9&h6dB z0fdPTD-P6o?9EOZoo;r&l6&a+h#jH~K1#oul<{D5s_vP=HlCtcvJU5FA`mxe?1u#1 zov5m1{hfJ1m~vj0@g4_xM676#D}~e<6SgA$@}{6%r7LAdT!FTldW(j%Lkb?(GS}ZK1z7#)GBp}8thjYuy)+x;7@>&G>0*g^ON&e3YC?_@ z?1VL;J@aM2b$IzQ4lS4Q>%}sS1uYF*i{dHacMf+Cqm3;Amw6$MI&XHgO*MPHb(_(D z`?dreGLu$Z?URm@*r7*#SEDY_v)QpSGb+9o?zNG}(eZ=_S?II0F!rT~8VVL{O=c>J zfcsw+8NW+xXEGkf{MqP~_J)nM|z2o&kdd@F;Ny#SH*|oJ#l1_u8 z<1h9_#U9D_yrKjA>%>;kSQ1gM`wfJ!`qA@bTGx8bfrWyhOoHNObapZFews!0%>xgp zUg|t2-2#rm2*XjrK)`U^JLzwT*MA*zdwHtAyK3S3;TSM_jwJOW=l$BJUe(Ie(RA_+ zm;lmpVRJ6O_HWv?+LQT{NHwazz?I(8N(Q%_C(adJ*dK)n`nbM-Sy|z*`^shco7Z`1 zQkh=R0W z(DBxKIP!>NWEaWQGWlJ^LM_3Rs19=4wNph{&cgib??@w8s|edw{Qbe=8|vxx+og9W zY*nfztu{TM>y@`TAtseC851LcdWVav#+Pb0t7hY)^SH+w*}>YW&u7b>PAQhvA(?)V zFaoBPh^?!Nh^>HHc!Pah7uyUj_p9TqYcDKy0O1NdJbx}wadnskKvn}dE-l=4R-MB{ z!hfP+Z4D`#q!+XnvDGze#}#wOJ9%G3<|pvQ8=a2WLTRcd{^ucuXx#)*aZt~*&_FOR zV(1AD1}ZM>VfF{go&PYZP;_l^8c3Vbcn-6vG8guI&U0723h93%GzNGwM6YD}jWti! zU`=IIB5XaLLOs)?`yO}oe22d4ce=&K%d^OqwKv^%b7oUszZWi{O@Ty;&cB`hIuT8K zKaubEqySWH8uXDJ{*%DF?h&r#yL+`=n~f~Dn{eeC6M62)d2DjG^)jm^=vnpzZu)%r z_P1x13T`HIo{!PyHq)RFA{$};OT?$pg^tS)Y+j$anc9(d92@y3*%T<@Ot-x{lwW$* zsnvkCkw~URHw=){QO{|}mkzF58sU_uYbIuiA|>A`#;5}NoBAqyND78*F`F&B_{Nd^ z^gsRnd|hbiTf#$`0WeLZ61Be!*7YZ0Xd9gUT?M~)^)KrZ%t@e7$KX{ml;*Yw&TK8e zwBeDV8T9aqSh|FXHyO|{nBS+@CNG|#?yb=8b>EjPft(2J6wKIpl!I) zhL2@Ol68!RKlbH9eEjk*qN@ea_PJ@{xNy7j&^dd+8pz(AC|bQ_UJzhio~&i>P*?t1 z2Qy>XgWRH`@JwtxWgd?aMu)x)H-A@ON~~e8DNz1y-b<_E+D9($FUiSh z@5RcD(63yWF4q+A$C3=_9Q@NDZ1o`SN4fVp*V{CI-Bk&vTc_9hUE^1>pVpCP(Ax^n zbAN0hK2eQUzuV$v$M^16ZTbz$n4SDzLFDyx_ZEk`{|T?Lbor|;Al>&21&etBIX58r#2xh@YV|>&V>XIPJDQQkqw20wqdt|kR{%a{L zT=;NFo$GqOQ|f}_y0@#r?^{gS#X`e-yYC}2w_Fm2gRJczbPBU2Htt`LMK-mLRCR3h z#4xtrouK#Ok=3=m^LY^PL=P1M0Wv%VAeccOSta|A7GOX4E{`;FTNt~-G1h6@rS5aW z8ty_T3Gv6CY{L(NzVm=qe7?!CU;;uGuFaxF*jEDG);HXo(Uu|7pf~4}N=hmieTjI5 zNey5c72>}BW$qVhKS7`sddsM#*XziK(ch(sdNl#aGwgm5{m*2hKMOA=@ z8o2m7+zg^Yd)-#|lirG8wQcX=h;=wEox9)N_rNQ;_d<^V=f8rmG-2M!XqkX--q|}M zD>x5rqT7I5Ccc}J4L~o1tpQ%zXotZ5@4jBEg(YlW$|aWC2j;19#N^-cg8~^r_DN=! z2`_13;7u`3RGow^KXaC_#n@K(^n^wyzaQxn4J&higMcnW2A_cJffC!Jn~>UqbORE) zjoz)3yvzaq9WOuSn*9Y|BRVBA7zTzkz$f6s*F%CQYrgRiYN35xAA>l+IXGSnJbApq zeAFtVVbU!%D2b4!z zN9jRW5$u+UJcP*1309FP;=Ih+^r_0W98zoeZK?V}QxH|)2$PxUgZ<1wA=1s2pj@w= zh=q%dgQet5-OksyH|DKZz~x~oc5>-XaPH@CaxSSSv#0oTx+>TH`wa!df_G=DMpcrR zCks`oMrJ&v3#EgTmvTWOjRsV|FDhmsfB^X}RxMYVc73F8>!>$R%z=p4Dk(5d z(`>PMXgCU;U~S%|Tdb-0zN>Lm-*GYZH43OIi5}b=atUnyp{>MbrLn)C zQ6o~p+1B(0C^1K{;|;XL`WsXPumIOHN}-xM*iRR<*0b~K2tMFrw*D~gUXmYHPbb0+ zDX{LU!w#}@AKLwWHkWPmaFIk@QJ6TXV9hSSU=wtP*!LRUHIz3BU%r5Tn@t>j_*+}y z#I>8^LGKX&sn{r0%yHRsm5O<(6g#7JC4WD3)L1HWH&cG4nAkQ;t^4wdOawTGQ7!tqa60 zmSAm*?YKfpzV|@_n>BR*(+dz%**2rntTF+iz zSpMT_=FTwo?M^IE5{b~MBbbPn7qpAg;;q^InDm|lq4hAnxDW~(^6oBLK3qZ`@9!V(BbT4LWRv*Y?AH%ijSIeP)wz za32n+t6bTw$Y2IN4B#F=EAx(_rAWIn(kHHI?f%v3aJ7*w*uKQ^TFIbnkh&yqpz50RTPMNG@E+G*eerqIXmHTAkOHvp|8h5p0hdm z?VX-J@_q(|opbP--&<*Sqx5&5sR9>fK-au?>$Rza9YV;rkf&Egice0TgE(imo7Vk9 zAK!pGRY%KY7+PXT*23R?zkq=rKKE*&j{Btg_W{0_tD#Y=-#*1F7ylSNT5P}b$sMSP zwe8LP&3Cd$e}S?(xRIRq-jS9UtSNq_Zp>Tu3!4S+$DUZN1u~ir6PYREF0Y;;DKQ{} z8$<4Y*Vh~&%IhGoFN`dSF$-M&QRgF$SV^Ao`mkP9F%!)Bf(h|XHC30NakR4wpKS@L z*VD3jQw5Zwjr#jc3@W?OYq|dP3cMj>8yEbPx;mWB-Dn?>+@0d_GUMnUrBz&%cHe$}LMu82Q_Gy+=(&gm@&?zAmf0y&Q-!^7#_M?EonPq&2Cf4d&xMVST0IK(^sd@UzYhHAIRND6`hy#=Vp); zQYC#J+iDyqu@b?rSY$7EV;TbkuB9CWW#oqc?0Rgyn%`?|y;k!%5hQwLp%S~o?(=76 zIg2&Gd{-x^N)jVSwC?f|so@&_Y)Sn?+cLi(!guaB))XE$i+}&E;ikk_6Ffh=U$=Ym z^8Vd_Mwj(l$QeA2at=~LPFJqfmkfLvaV&e2v;?fi{s&)w9oAMCy$!;_+5iQDl;Tpn zSaG+Y#ihmF-Q6X)woqJ(7k8HwC{QdEcQ5W5oXPXM=AD^$uKB+Ik}GHD>~r=$>#TLJ zd)?~@%=bQ6XX8FBOY>B4&eo)q-RnMkf18On{wAPM{;wT=ea>wG&j5jUBv~U#MA)Jb z^tTd{7|g#4x~~`J&o9X21M&@|w~?A;{UVIwk+$J0)3*Qr?TV zp?d2{@^?GYbNfyiYwUjoNY9tSPAsR6-9 zWe8+#r+3?}>*vC z!Ta+cIeC#oKW+#KSQsTnImb#4cn$*!cUJ{w3UM!QqjO{{goX!;@%~i(iQclZIl((+ z<@%IglJ+)_7${%5H*Wo>@WOKDtHuZHMw)VW1MN(LXK=$2UdO1)=8qA4v2z>jcPTT!(5? zob3X%9wpx0kL+q$7Pabkk8b)Tb1o&2mGiM)KCT|;XAhY@Vnb}ycZy60GiYY0DW+Z> zc&5U#^fEJYH$BuQ{kF_2E$1XOIoxD?Qs1HNy<`~7q_39GfQr69)Odvjz936cZT1aM=N!dOPmyq9ycIo|qM zUbbOd>a4u>%5ndqI0{#VxW7bQjQ$-8c=u|I^vy}r)YoSe&hsA@U~ESx4WV5;Idny4 zvy;uQ{lrYf&qdRdlZ~lU4B$AIfdY>ikLJ(~rmNW~5~S>0ckVzgpu~{6IR21Hu)}iVjORv7}cnTnVFAk|A zl212nA7y}_VL2-az?Q6$CG@%R&9QX8m%o?$v;SzktR=VJwXb5g2 zN|du}U`XsYBxVpALaHHhNP7RBv!Vs zh;qN_<*JBQR-3f-iSK@G=vj8@dlM>fq?apa-VQ7l_<|X`ru%dgJBT?LM{c0A-lB%= zvf1}F9OOWr!V3D;IT?e#CGVyW0VA}R*wS8`#8Dv=2`w9THFRk>>j~%oTmD8~3O`y1D5qgz zn8$g4 z)M@P#oaDII8;3Elm?gB{HUYwiQOFHaz)%xgW4$9Jq zg*{VaYI2$+Ivo%hY!GfiEQGD)6-T<&4EvJTu)CZk=$x=iU!Whl*?>$<3+a`pkW5Ey z#%&Q1rCEv!w=?6)eu@-@fJ~8J6^D1dpaA5kh|Tb>17)3s{n3zu)1Jvt6N_Jg07LA7 zjBQs50oFPe<;om@^L+^xB>>el6S@0i3uVToPLkT(c)T#yi!w33FIr z@iTFT$d5A`11#Op*1DTtt0GQN_n-FXIhYqe^oGg9)XvBr@Y&1 zb!W}~3^6k0Ye6T$DIk+gR+5u7j{|M3z(6Gj4cm$1PicO#!H~bL^nkdQU3m^dAUC+D znETz}D=X{y-q-JNxZKGuZQiwfy{c2odx3uv_^FP#!Ny0AvpvW0@nUl5Z9naUfi5X2 z<_^N2@fn$&L=2qR^}l(>jrr~Fbm@q zqk-_^hZ!3nAaz$*hi=$T6C3)wP_M=&j)7L=xNFqKQ0&q~Q0chSDRv{~SnUECcE^e% z5lIhF0_0{JR{ok=S@}A@x!rPr1%chOOoR4Z?z@N#PIhU$YwNxvY@JoyYm&wAxzk=E z{BNAD>6b@!Tp{?S9j-AkSM%zmw8SXt80a7wbfrj;RJyI_Y3*>C!f8gvY@^>?xTp!v zycj-2{i)jcM=^sXQf%G84&gs#&w^D7aUdOoK)cXlfv_dr>RTdnD<&kV6x)-^0;bE; zPOC=Y+77{9IzVXTBC?1uA<`Ck)!69wqmyeD^;%f+Zo7s8v)hWNWN9PAG_Ko9l&Xq} zj_pYF0StczYd;)~?Ly}!TmtA~&y)s2m?bc5s~92QfzL6Lr%9SDj=Dj*AKS8s|&u*zuQ-? zi3?>)Y%^2!1QwQREoO4JJVM0v6jm~}9_)mETYzyv_%vRoOagTlhZFZV3C$%3U8G(f zJ4&o@Lq|V02&i`PSTBLk-MzUfck%w5qr!RmV;G`7={yaG>mb3Y%we2qlnV$3nIz8j zXC~&NNA#_jAU&Zg4iedkbicR<*fE;QfI|k78XuMeK76FYM}PYMeIew@4m;cFzVZV6IEk~->m4!>`6v50x5NKZ-g z&kfgpWLfd)(`Dx?e>*MN^~W2mNU(s#+iC?kZ`6?u+oYx+{aRSpnA( zUWTBk`ERm{%e(H}RApxlJQ}E=`2Z&V1h6IRL^m0W3z()uyIzUS9B8?e@7$g&P@}g%qVM zXLxC0dEtcy7kw`LT!>;ANJanoGNIFoZ!1avy;vE zgKmiOM`RF4YyYUsO3Tsz@Ev6-yLO;oxLfW1Fks!l>ZW>ScGUrCY@0oU&nvWIJeND_ zmE|UzfhUeplglBqP=|ohFo~$w0ylJa_XY)b*553Z?M>Bk_dy%0oL6aLHHigQEm!D- z_10No^DmXR$_=Szp> zgB|g<8k4n#4u4z&CDTunf=>w+qMqJJK>di#8M~%IST*CvWER59SOP36w zmHz+~8vVLT#sPgP7JX016hW?{0$-U}WH7H*xWr{`Q1W{_a-Nly27Wukq?Y0)2{X*3RyasT!a{ffF0hv%U&-ftl+41fc>3PM!~s1*oz?`pDps5h*M2AhQ|eM(kpS=C+5Lq-PkB|4NP)2Hxq?CRxFgq-&-^wK3I10` zOO4xbm9go%6o3iX#@}tZA1O4%xNefV7m=~y2nCtN0Wc#oXS*(Bw*Ev?q^~zkb>EzD zeE_8tjAtmQ|Be?~UoY3bCfWiZyozAp&5fDUYY9c*H{ostwJV#E;y}{+xgUEXoXotc zcv!jwq}V7+er31;c4LM4%}+ItrxT&CPqH#hrkvJoRC|oitb$&=B1-b9dvgz1C0ww? zAxynbVpIWQdoLyy@N|n+j{@ zBYC=|YV^~gG=6q5HQla0s&e*sX*XAgcSiDTJ8MwUFeTYnUxXy+9t?wsA5cI`vPwLz zbV4|t!PkVP3rD_ddYDH`G*R>)3@`?K&J+z)EVrEpsa}?XK3~OeN=jK5bj&9y0Z@b( zMJXZ$tN>Li&wo5{l;UXjLL;%M=={A%Q7VvoAG03WSpDtu&vD9r#f!M~2 zo}EvttD2dDrm&o1nBF)I0;*D7{z&z!&oT(URM&^Z(biP*wgwGieZDOA;T6D;em*sQ zx%_oEp8+7-SmT#g*uQa5BJu#HC$LyGqMb6?(;&I(^#{*G$(`p_ROcH>L*?IwmM3YbKO_HmD_H01qVouB%)f z?uQW^%!yOfDC!%O*7W@D*VGpzL`UiwmHW{h((&%rBYqJp<|Fc)o~GfO88qO)xK~V` z%`}696aS&9nMIytJz5KY8bCY>UFMuC{MMo>K!L4IOCN2RjAox`tIe&ui;6N5 zMmOCQbbQxT*nYgN)_; z*MH=LulAtt1c+PO4_+}&`%$NAUK{t{l&d3(CpM0onnr~mU{2Ue$+DwCrj`*iuKvff zlBHQ;xUt@D%#agU{59h)}9ior@1r{pVh4Sx}7CE7qdRfXYoC4y54k&Pax+6)fuW zPm_hxy2+jMFR-?N&O=iTA~T0Ugf6P_WgLCwO!wW~VpoktsQX?(k#lVa}JPXB)2-UK{`Fs-3Ot zK~*)K4{yH?pa{V!(BCcx&Q&sf?{o9MK8U~WjzPvTcPPF8r}~dC$$t4BHryNK|wg@wXJY0WrtbMPZl9CPy!fC&>Ux~mzN1}wumr%31nyHg|IO}Uf09jZ` zs>S@q6!GU^r~7L%y&~lo>xwn_1XGo%cMP_V*Vz4h_U0vTj$ub7Uf#hJrq6iMO`78430syZ}tfc$;uX?K&BWsS(bT+)Yfkb##z zk0G9?)b8@lGBzdNBZW#koFd5mS#;rKHg72nliAfjT;1dDDO@&lDA}?g0goO|Fs??- zqhRl}h`&4UPf`C&7g4zva`f30?R>*fshHz2JX1yB%p1uT;)r~;P-*uN9r5;5)|l7inFP9*cD`DMp5_0xCY-VL$z6v-h@E{Z1Q#{bjd{6s$`?$5sfz)0q({$YBz?&NDn4q#qpiG_e~22Jgv-p8+S{}X*Y+Dc zXBgWGm4HeTV#paIz@~vxk9)Cfs@0J&AC-n%^(8==P`*+XC;hv2od|ueA1<}_?zz|6 zqf}P?Sv8tyj`X2e;BM33?YRN{a*rTd00?=x=1)(Wb217b;?L%XJH%w8+r=?p$bM@& z9*jN%IbH+ilmJvl)^s%(ghT#eMtx@vlEz&=VsUQp*ocnhrDj3#f+B^f%#k z_|QBgwcjA(*ntvj{i$po9#qKSoYs`^Gg(Z)z9_+)#`h~9kN%6%x!mPJ;IOMTB>?`1 zX`>w$H6RkQx;#^H(zgaotMQGay5hjJ{6hkF50Akb62=`0mG~sFmA*`roH!S@)_!jd zjV$+v$GULoH0X;&RI*0E&#LMS4rWV;s^pKseK@wk#vwCv-cQWOPn_yO?W{Jpt^QES zIgjBmYJ7xqEyD(li=VK77`&)AN%I zIDYQ)poR&)-iO+ym(Z*Jd?(4C5eYoZrLDSicW`6GJBW^<%@UgQe*|l_Ry3Tl0${~1eTlbb`U>n|kTLw3#t zuVGv~A*%e-z9(lfVPil@OCOa=1ILBpVBxi`Aj&~g_XjGHexBYn4qY4J*eVD5&(__9i*_;V<#|J zkx^pZGzx@|>aFNO@m}#G0lK_wZA}xj{DR*I5Zbdo{``FUMoE&XrB{iU*PsQuSy*Emhg zj>6@b1bGzKmSu?HG5iQulK><9J>oI_-+cc6LXH3D&$^Iu#CId6qV+hPP&ewWU8jxM z(kK^1P=OJ?SphzpcBR(4sb2Q2WHrb0lRrt%(1`Q_eyi*_S=anOj|oNnK@Jde{;rt& zrBY+o#rL74N=SWb7mLfcoUclhe&&CI4gW7m04Z94xEppI!onf*{!mS*pA^$5%qapSsm<)}hZ5TflNQPFT*FT;?Q{Xf`<48(sI`IZU* z+K8K&8g4mWs^8R>!Z1}BCb1|@xs~~>bhuoN2v%&rBCKtA%6Ygw;_5AtkV0LmImrJ= zLE2pz*#1xq_Det6$KkH8{1H-DVrQ<#rY^RqOECV~!Cae=A?8wpqI*%*IfR zY7naxjCg%<&|3$;YF#%_iflO+s6m`!SdNJ`c80HM5sP)~bcS20%!7%54--AuCNuxU zIY7hCGE=4SpYGaQJV3tNe5251I>OE}(-a>8BaR|=RBou;$4<);le-7kn(X=hs4Ao( zlKOJ@QcE4V*;rNgUV$HNdP)qu` zl{B8k^IN5ZLAIHex<~hHa8<&yl@t)aKusPflLzBeN65sC+Gt!b zaS;a_m-K&0WFkOmg|YRt*KV@EjBn6EpD)|e^g{{0uBf~$l+*=1lwMBOSlP^BA;L6T zym%>7c$7*X>)HTm#J}0_FF`M-S(&WS=n|kq&op+s`M5hbhMf+N^9LlfvBV`LTKBn6FQ<6h$LQy zmD=GQTn(sDqzNPY?w}nf!G_wxLLW?^2vGc4VnkkNrY6!E2qREngNo!R&5Cd@)2VRTRgi}=f>YEXrYiM{;DUb6s2Osd z31>!Np*k4MV=%|m14JBPBR%%h20bdeKEuB|+k=Vj#IZldlEr(ZA{Aimn zIh9M2xw_2JxXcM_Zd(rY#>3Pa@Oc>s4C(uNP0E)i>~Wu!C}!HSZPkgE2GuGcKlXX*_HES zM19`*LR|NGslm(L-`6&4tfH4E%@MiQkkUlI#|{JpWCwkc#vr0`-hJH($&XXu+~S@6qZNW+~rN@`2fRi2aSok>s-srZGtP` zD}Xb-UqaU<<+x*o~Tb_f~1m{0r+)f4Y-rU~v@ftP9zuK7ibC(14-NAX#^<5;*Y!IE)exfvhi98dXDoI-`w?aa-{tZF zF#y5eKn!>fHZuya5w6`F5g(639j zKL-y}zVuD4!J|(W`CiVgUb@Tw?HAvvN-1}rsf^E!-*1RL{!GeVdprty9;?w8dzsp| z`J4!y#w5gw4C^oqoVc6{dfdIBT@Bphds%}%`UdPL?za8+tVK&HDgaPWOk`-jTGQe+ zrCWse86XDGz)OSRC|NU{^<8=wTipbM?6nh~B z7NR=1LZ!=V{|cNa z;nW;X5JS}UydD&ISCQ+i4Xm?V@df-EyTIVPcljhA9CPY#>RYmOcz%yzsW`^(cLlM@ zurz-dVXoAHtH3wn^_T6uR&xsrxgaPB4c`Rl=rw@BIBOPR$Am0X^TR)3$x zy`?lPxUX>TKU}xrt^(_uu0nNTiW+9GgXz(Met!J^PFEY*jr0_C|!7*?zSE z4>(=IVH?GC^ttKBiZ2-wXeeM1yPX-=%Kntux);Jg;cvY0Pp$7!3S%TrreGp!s1=k- zj3ul5ys`bXe@S^43w;(7>ttrAJ;zabS$o$qjGp*7k@tA3azc*30$qh=8QaevC#1N)Lr@Sf_cLGljV2`-0yxgC zb{Cn7A#(BeoDF13R#}x%6({y6Vpm6S=y?Y%>DN@^?{ax$UxCO`HVds^l~?|vBY(Tb zOk}VxOq#A&q@s($`~n7WWBKzW5QYP(^9He0nqIeAWIl+^>*fi(M8Z|ZJyk!lEa3}2 zoL0<{<=h#gVV~+XH8I((;!x&f9slJ(1yM)Q#@>u5$^U97Vb4*^PA!t${fWlq>e)ri z^1O3QgYoUnX#B#LzPWDy`hm=E^gMAZ$)|pD@&Md_8BFWbAuj@c?a^=F{@h3DXYHG2 z!XHemh#O-a`~|dI93w8|TcrDq?cU`*;CgzjimV{7_WX}4sFP|Tp9TQv%`7>5YFej) zs7_H!)ivS;qYn1UGZmIFZOKMS0@+u+Ejqo4<}wfSw2?;+ve19jIfX};zD%%pa|sMd zPy+zC26O1ANI)6`ulFhI=s{7u@4u-V=00C!ekmPX{u*gJ=OAj-Y+aNbxL}0qTL(Zv z1q@Yk@icuc8VdL1!iyj@FG#JUuKtn4h8~=fokh3>#+Y(%^_ajv!rdGps?zWuY842( za&tyk$3Spk-UsfI|2R$BDyu)Mfpuu;3Uqk`1?;@2;ZGSy|pW`~!53v0q_D^q>MuK`q$H(4BBnlmlX z^ZEFiQ4cTlUd}L9k6qgi2UKJ!_tLre8ltvv2uX4(d*IW!k+)^*(=(HR^6ZRr!GeH? zOa^?|Z;&d#?XAyEp3~xjuq_6S<#k8R>E5^gIf5h!;GaUL7h8=XK6=X-x5HeW3I2nL z^3N+jhAz8#FUNxJ#<&F5v_*Nbt{dm_(2K`%(gRq1;IsJD?*7+;ZF`YHydtbaau;_F zia=`G=latWywRAO?D?Q?J_GOQ?I26`s6}5yT-J)r_4H?P-peOXGNR+7gbh^x0I>n8 zYjptF_in+&bPc*KUAGl2OCxD3FV+^Gc+I^Yq`6NmBE#g2j;!=5WR!1S`IV+QL~uA9 z6h%_Do|b&xX>Ui3;_3T%)legP{nA~AiwdCiJvV!~YSHlM`}igYFBD6X50bBj3J6Xo zk$EI7-SeugOu5`9=1-$ zfY*~E#@GrwyF=Thx5s|!WNjHIs5 z#r!=U`+p}{qv1S0z6DTGqvl_st2|%tMJmx#_sD^TA1FdU%CxHB$ypC=y_^dHs3ZX5 zie0fU&&B-!z6}-T zO9GqAHWpmZzlq>_@H!Elw9R{5m;Ay+LPyj#xXfX;G<7QSqCQ?(=EKBGbZqam@2&-- z+%G&CUMjJFzKdjk#2(GdJlz&?7}LCeJlDyqCLt<)Ta@1v*+Ryi`Ax$+(bP8!1a*X9dYhaYb3qN6JMfEcn+>#+_Q)?=&rrFe}@hDi+>Uy9$g_V2W^ZxNK0*Ju%|i1ro6p1zK>&& zF)#5>W;7Q0Y3)t8LXIBLRw77UkXe2BRniISodS|ea#VparQiLQoEk6}!ji{DO|nH( z$i4k))&H8Z#@D3^z3gks7w*7kegN)Fw#7*IwZpg{b93O?k!|wgleF7O4i4^&yW|{J zyfH-lbd4iV;b;D#;DpWSYf1leQ>DTTHwyjPtDAeRpavCnm6Jc^3=~~w%MY2#98!$U zE{~?12pjcvTDu@4$xM7Utz< z!Vw-IqcauAVfpETJx_q+pj1VS`~8q->{=?(Rw>Moad_nYKlxH5EdCp8a1@9-MIC%r zY<6lY6t6U5sxJrN$mjM%M-Js0V3}%c1=OvKko12WtnY(R^;F)jr5FQI8xX{80ML$` zSI?oJy#y5cclL>I7^{b7w>0ZofA>IE#1h= zX7rlyODt3$zXxP25^$R>_A>MhZ)?PZf)9~KcHc|uy8RNRn)6qR-SWTOy;95dL*sal zyY|$Bfy&QSF9J!$CefNiIhxOhd0J#jT46@{L{ax&mZ_*F+_ic_PsMl;^8p}aPI#0K zMHXcdxPhbSFx~P;%Wc2?VnEHt!h3g_|6vyvAP9B`>ohqb_(Kf>#BeW4 z0sm3;nm1|5KlJ@pxcEQCAmGFiowaEa>qBQj`^=KEV-Jk}F)*@mrsYqeWqb~ZLjY*UJ8I|2;TGOaZk z9XUZ%M7#HvmH(kg(eYwD4@Ii}(Q0DO|9|0={};M4{r+>ml>`Q?4Uzbea-<$o9YREj z0Dx1O?aBoZ)|vzmhoC>FB*wPvCCU96BWF-|hP7F6Ac5#1-&7nf4~JM)(fU~v|Bc4U z__j+L7z8|HUSCNe;G8rm&hyS}xEqY$Dtqm!TpyiD z+j%Z)9O}v4Yrdv}_}dZFqXS(k?T3WZusYPpr<0xj1g_AwDcyD>ITexh^h`1@?5tQCSHO~IKOZNWhg zEL(eg^n}lylqvRUDf?`-Wo$`d5DGp|v`74-8%ecL13SJ|^89b{q&G(Wpd8UUmW?KJ zubp^tf*zYWOO?^{N%r`$iqRjN_;f)E!5T0SE-44~O1!JNf*e4Uuq$ z6{CXX0A@AgL?|Zxk~rz6)4SIcW{j;#2z)ez04y%`F%%#-B#;K$&_lr&)OJAcLH&fF2C4t%d<8NCo9PTP53|I&Q6u$2s2Gu?J`$2hoT;PH z0mLyZIVd_nG>ke$8+%^|9D}sHS{nBu#;Ax+sOPslsQ7XD#z!9(!|#dMpZ`)Mo?mGq znS>Ta@qL^Hfj{;Dfr!0u58M_ie(r!DiWJ0EFU;0)RHr zi<#OSXv7e{{fCWx^38z2H%=2H8Xz7Vc%&DS?$U}X9-|Ns4#qJ-g%sV6Zb_Z>5Tcl_ z^Gg81J+HJ$;Z@!1%k}r}{5?eS|2qT1w@^kM14d*PcU`jQlr;YKf1VxF0s(zPA&@2i zK|N^?ZQ|fz6E2`=0UtGcBtheFRnWJ(YmheKakxBut3jV6b@ZTo3F`Z_(U4QJqs)|} z&(krFxnEqzir9EsYj&(v1PqDX5$R0U1AFCYTU-X(QVG@GJK85(URw7bgVk%@Nb?L5 zPrbcm*a&y$p!J0D?5CpswH##4s;>JfZFf0KEtEJ{+JqNz>0Ev?xmf_J@TAIs7ug4F zgS|bOo5sy(19EFJ!<+ClTYwRY1j_yby{5NxLm3Oj(sSlizhyu9QbHy>!)KcsP*p-rAxn`Nr&P_O64W+_S&+ z!~a&Lz>Qy=mTGsG!*3`s1?y!M^@Ldmi?J*=5C889DbVlSOS4^vPr#6rddrvS^Vl7+ z6bCL+FX%&$?9wDV!3Gq)eq*|nK)kFsVYi?y8hM*JsCEh#}BQ( z&yzyC4?ri8$DJ&@W(#3{c1&%;29}YSes*&fJZeRHRO1pGUb5Bwt_M4u@hO@yzo3`M zFYILFdakFF{n!&O=GUilN3bA!O$ubdpWFjUD=RjA(YaVbnB$}KR)_Kn4SuJb=aGL< zfWbiJ_NDsu`ke=5^?fiKw1)E&Co_p4)Y0RI_2%;H$>i+S)dutOh18-pvQT;AiU2YIgFo^OI0kJC%D8^!<7*px601#Sw zoBtwsO8>-lP>fyx8miis_EWOYBUqVdTX3Mqxou@XpUxsYYHB=$>&(;fWmFt)o$Z|G z$wvsSNH>zRX8q?;>mNEG^HUf_qSY}dRkEC@|8=DdxV z$x;VWbZj^HAA07N~4u zQ~Viw$-#8>+TF83+4E#azsr$kPpptEn@+u*#_Ed76i&wBA+t1Dyj{)eeiwGzC%rZ! z;#Ujb?RyH{B7_`JLaQ@H0;Im|BiGPOdY^T{=bT7y)*rJ;|KUwv)o*g41V zKfc(FBmIu+Xnj=AQeiV!?S_CKEE&||$cW8kie6z;U|;1Gq~HNm7Jg6IC`a}=UgEH; z#By_c8Q5^*^2_`U1E{D)*+I@1k0UJyPh=c_le6qaP4V37+EML@@$C}~otL{$P9DZQq%xClT-rT`HYS5o!$ zzYXfaJoJ_N@!&jLqw@1KVaVEyX8(@x5?36(=!@gnTwjx9RW}xGaK+(U>S(@?TtmHqvkBDluW%iHe*qBzzw?=?#lwHaVTK7!xicF24SV2i^A5?_O z;Inq67qNqJRV*rAs)}*Fo6AahWOmJy8a?4tyC%<9;PQ!>a-Zw}z53^7L>^;xbs1^g z;rXdS2n*{IEM2PTBg+O)qn-5#LSHaAJuaQ2^d^iI>UVv6rdCLwvU~exNKkOmdud3^ zaMfZ82pYvxRp2Q621jlGQNt}lxE}HQtkm0i>aFk6v6opKt`r_vvG!x(g{}XW&F-B} z2A9M)a&bH@eCTFzKOl&Lt1-r8&YqZv)lB~g7rcKgbm@OhK|cbwq(Fjy7kR;Ir?Itr zHiz8Fu2b${bZ{_8gonB80h~3&6-O=jm5b0upw8>zD`u5iPvO^UwmpkS`GBAmgkOHH z69U2mZ~QnPrmc-{Jw7L1kU9F!$E!BG#vl%)rVkqwJbI!8h$9aXCI5sAg>G#y0|A{^ zyHwsRJi!3Dz;nr=Vy`2~kq;UkF-TG4Zl*TKfPCfsA6roB_tU9D8#hjA++-`zprx!D ziuA_4RrHMZuSQ>?9xKuJLypc@EbQr7k~~UbOlE{@M$6iM#;3V0MuMN4Z((S6D5tvF z`6if@`og0Kyc6)7o((tAP_hF6Kv5n_Q|BBAP61FU*4F&HdF`rem*}w8^xTg^9GePb zt1SQ&jRo3ISeGiBJx79Kq#IwKiH3^9)WPjy3jZ&O;2R``E$0T5!{IE<{mI?SJ7 zeKT3lwH(}@6WQT9*c4bN0lQ5HJ@HS=|1pa^3SOMBOtMptc=QBW%a@Kk5vHhRU$CEl zqc<8UPeP9SL*XbM7~!g(+G1tSwO1MeS0`o%h_*sGX7Q~t1+zuL*`m-cp}%b0eU@&B z>Y@%4Yg8IkiP18w^4t_WamAlIV-x}ot6?p>uUn2QOz?2kwR1=8Dh^4@RT>c9Iv9is zQY&w3h$$I`Ugl0*{5m;^LR`TRQIfh`a4lco>%~m)XFhxE4#cd8GiC7fw(G@zYOoMD zY%17!Tj{X`(iB608e_S-pWF8Ayp+ANA8xG~&Pwi7KmLtz@2eF;Ola&c0?%xHq*$1k zAJt(&9uUeB?Ek*$Ij1`_LKg{KK=>ow7&b)wMYz==Qd_jd_?rqU#vE~~FD~zUjP1N? zV?DunlSBEk+dyLg`3a8E7Il zY#V^%6FFZsmG^qs7{hpDBbsieZ34LzxcrF? zh)YlF=l%6diBSRP6d{5O$(YBrx0 z|3B(x=DO7|z(;bQ>YB(z78j>hrdDQr*I%4YySKLZVPWTDQ#bcWkzj&QfCL_`cx{YQ z(Qo=XIa*d71J_s!x;itVo5RlNt$*LMTYr~9=cCD&>R8_`q*kt$^{z7Atcr({cg=OI zFhRu}Cva%3kx(5(*AhkVL0)_<4Gn(qW!TYZ!_((5B*4eTZtutWw(^10baIEEWwvxf zpQxz^Mzan?>U^GZr@l9NTyI-g;gGdWm!reCRmgYA);cfUl{Cx(w#$@+HS3~s?rJ)Hi^9!Rf{{AS~LmL3NBUrr=0t?yV2!o2$Lrsi|5@<)q-9s zuZO24)U6mj|7%K8wXoLW-^FEBAOF6DWDc(RjHzl=p@hFYR4JGWKx&9z5PH7i@0SEI zapD$8ErL|lpxQJ1aMYxC)BU`}irw-}T?S@gxV$xX&on|@_;rZ+-3+v4qshp2IDo1D zvZV2tny~bI4){UvzCds_1R1aa2C|`A#f8*%n!OtztC)X!Ty5t)9%s~TzDSJ%g&zE= z^wTWI5}Jd0GM2aTF;(r|C<2C2TUtTUa|F(8M~lsM)dH5@A9<{LVgwdKal!l}+1#_j zZhvz*y=ZsiffIr(s<6KBq@?Za-rQoj-Jz_EEA$;AL8$4PNHg-CnxRW4mUUowzUka76l z_lDxI>5AxvxHk(}6v;BJhaPcJcw+`MV$xX)y1Qr29BfRXI^^hm`?il2aF~H`~z}RAloi*Q#-}H%s|;VhHL@7g~tI`&-w%V|Mxs z*E|i&Yisy*x^d2AeNHTMLR+06V0tdgv=ztoie8jU!K*8-C-^4zI-`nyi`k;p;WrUo zO49AC?-7ppIlmCS!R_rS*QY+>V|mT=XC97jySEL1qr4LwsA@u=zfzWpAa+Bp$UHfr@Ty)4Cb>4kn~M{_(IX7gA7w zs7QX0W;*nX?+m)8i`;}B%p+|uhT(mK@%2fGtPqT&-tOcXQmvxFAO{l#?!FRa{92mU zL7ce~%;U)IcvY+yEqMIo+SRbzOxnj(bU67(R|##%b$N_$t83l=KqaN}Lv$GP!9}(G zLPgZ$YLIK}YJp~7@@}iI)RNt0fS8NDJLkN`1^DVlWzMrnH&zh2!r>~t=sKMp26O*=x6wO5vt^Nn_O@pcG zUJoM&K+c;`eJo6q=Iyw-OsHo{p4tb`olD4y*X-NNFdSKAnK=%f%T?lygg0kx7GTWX zX!KCTP=w*pSeOsT1`EWEsj&>UU!BbGPrC zK9-Htow~6j1fu4*zjvy0)JLN3v~Y$uPm{ZpWQ$^6E=zL%aTKk>>Jej1^6@VGTLz!J za=pJ}4CD$l%=IoC$%Qxx8Z~uqVO!(BU1qIEtlnQHDiVbYd~!78eLPxNbgCy2J!u3(As zseZplAeDkm_MMV(c>>nf)($;Z(aYUn+bQyp9`e4({mdm}X4T|XFb@YA()i@wzDYLf z(hCd=u-2kf|5qUh*)n5Fv!<38L)6?NL7&h@I`6N1cR_UX^^^tCB%S?C?~I1_rRLd! zkLhmchDuwC%*&RSU^n?%U@~XsH_uOH3Q-9HmMZp+7q2-H$(C}z)}hcF_I)D7hfMqQ z*Vl!1^y>`MjD4zz%+8n@Cs3yw6SjB>fymp_*S?YWnyI|m-}s)1BeAlRi%5SIID6*E z*tap@aK~yd@_NKX{)Z=fhr_zTiARfa9Pw1M5A#HniSK?-V`$KJq9<{sGt1wYu9!gd z;;f#nmzGzt-wXRxQe)Vs^YOwb3+~Ybv3SAS3*wDFROA^YV^vTI-y5Mmp&6h6)z>G% z!hXNQCm-A6E*`_#6TgohLx=DjI;dwtZB+8je0RKm6WlM$@>u76bo=SW1-w3-SHa#8 zy7(oQ`yeWW*DZ*0x)*QE@e;;ubOQBm=o)R^a2vX)bv#V)79UcNv=eGWQ?(_ zl7xihA9c}9R7BaPojFQ-dqz%4eWDj&vxn2SjG4UwmWr%<(^Sv~TYDwdKix8Wbk^*K zLgG`_nn#e*$ERz){2&a&$aUyxYZCmB@GP}a)-1{O^Btc}Y04Op+;V zMXL^~L6Z%*5yZB0)QfdRKGVO9s%0JR4C#)x|6p9xi0IA=d>tJ`13eaCXo zO4qr65>Yrd->0Z({%&!<>0yhNbSx`9N8QQHjf0O{a^BN&B%&}rsm!q2#`A1`*xc1p zF0TJ~qPA0u`@HDRs4wXV6XwjJsV{A!8DvY-qmcN>TaVUCN21xgvTV0ay$qoYt0WVR zYZh9IzT83U7T)mRYA!ja_P+cEuYV~I(Kcy1c$>!OqeCzqGE&hNz+Jt2Y^D4;O34E_ z>%gX*2BG=5ST0m+b&^vI@xcdKu9ObIm9~6Wgqays6>rYU^FLEHJN6GbQJ;+(H-74T zP$J(xJoZwr3g6I{Wfn#oz{60E*Y~@l8!7-_Y6ER|nsP-tW3jzLgKyu=*B{iRR(+bu z;EiCkt~v5`(trFNo-3O!9h563BBe8RmSi^1h_h4Hwli zexM$<^k!Skwckc^qB=j%>mrI{cxZHJ%KD~zcuc&-`*^xk>Spnm{mY160jHH7a=J&p zHwbQQAH(G0bF#AfG+Dqn%C&+x(DH_Zf7j2Rs)?;Fw3L{kqv=IT8C(pL7I<$gz^+=> zOQQB)u7A|Ll$^1;Cw}LqzZl5f!~5|X0?y_n!?aRut(_NXepcbjRA2V2J~rlVq-FJ& ziwoPG3=W@5&>Re$v-k1O8P?p8R}h-1cD*^q+0)+M3P#QSR=U?qXZM1tDE!16Mx`%B zzG3{qw4#6K>MMIE^WM}80gXO#QtIgbjVriV=IAAgys|;leN1|d`BP79>?Q;pWJEHe zCV~k5iEl3DA?LrZTe8fO+{KUP7_PM&WNF5?z}MyQwg}97Il`fKfsXui`ggBBvNoDZ z?Bs8c!h(zC%o9q|WMNsdxB#QLgWUD*1YJuy5f`v{d-BSuA_4(5@4dBD*3i)PPrLcx zFIJQ>w{ZqA5=x-(s)tcdH^*iE7TI@ z`_&1KtfTb{U$U!{wDg~lcYTmwQLI=E(xmh7UAH{$!4Ix-HY`q)4V>7#)Nw5@P>PHM z-3)d{>)?D`pVAo%UCT4z#a0Lr)-A5f;nr(9?k88pp%ID}fFO#XvaZeC_NY*C+%exP=A~ZW+ED zYL4{Tbngt! zR0;pyT(no#_{Y%u{R({2vWA_gSe@6WuV9b250p*{Z5*S*x>Y@*j_azEXHw58v-gh+ zC0}MH4*gS82}VPjm57|crUuY34$_vx77;#k04_?drLS#JHGuYh!Pvp5L8#qsu1;I~ zBx`-uUhs{gqZ$+GfW=RFoh&w6F$1kk zVFt-17;f<`=||AO5;MJd&6m>O;KuN6D=VK!H8ni1p;96klNAs3hf+q@_H?tPSW>Q^h0S6(W$RDsW49I^+l0|;~ zJAfz&-~608X8>iG3o+TwUuQ+6>L)_Fv3ef}nt-0tgG7vOUhTq`1La5kLkAT5Eb3oY zJdGn$L`I>a^+-8ln(J32^c0-wVxDbHZM}8SRF;EJE6($uKJ|df;i?$0MZbMx4--`n ztG%;sM*GWG+xQyWN-qp_tw;50<%|}O%(b{QMF|GG*38`&7Jeq$*em>>%@ z>NktCi`&L7KQZoNDmO6k6#arZHP>B>MTj80^27zI^=yPH=^xXjvNpFNXB`bLDHMXH zz%&r3QeSR2aX+I0-+97}$4f?WJDvPt+_$0)cK9PN7Dti?lpgK28~d9okn7DIgDEE< z@V_gcW7R@yXsjoH<{TI9@0{v|mViKVVJ{z-XZSj^l^AIBXalxz)>ZK$tYGPE&)|Yo z*J*d^1>_6?`&H*KyLnQNhGU;JIHfcvf!#8jZ!>k%1f6^?dT*#O^LIEJoYsPAcMvHu zRBjy2l2#K5WZWaXWfO5S2_ypgdUl`q+doWw5sR%-J~oYEMh)w+61G-~KQ>r6Ur8(* zI}X=0o80voI)B?mboMMn&hNA}Eof>~Z~u^6Zxu?!&$-pswV(`~a|}3}GtzSMIjj;k z`0intEAdxb-Cul-*zn*3+x4`zdT96Bfia^y3JUQeXW3Z0vA`ZNYeY+s4Xq01D7nSU zJ9cQ57geo!X>NUtt6C)Z1SjXLD6lmxiMO6GkMB$=FuDKuW_Eh|^2o`5%HE(Ri`uLO zD1{=WhqUo|7M`L@( z8~ik!Ofm*B)2#NLy>ZaO)6ENjVzf1amEqcl-lbt9_;D^5P-Mc!*LS8=gWZ$E9-GQ~TJIAesFdkhxV*(v%8*wDB;ZXht z@ok!I)-Y$MwQi6mrc~9OkFzFq<5espz#QO3lPf7kMl>E7#N}AkDe{IGPb6D9#u+ih zS%*~ge^&z$dLn@g2QC)EWMoW6L?DCN$n_3^(scc(h%jGoBGium-l5zD(LoT;qJzu< zcaJfW|K9*j;Wf}n?%SZgU>8aQJ%fWALvmZf zp=vH|a+&U4zmeoKkffbL2uio(e z7P|Nt+%=Yi++wGsEq}~aLl@lbL0+}P$0`ZHG__-oW+VL_CVQ^S|#z|AtA z>(&_j@5rqBzd)mUzgS`BKwO5-KP0Y#O~WY2YHO$vIXGOExmqk-lgY{;?v&72AO#}3 z3IcoxCK{jg{L=42nZHqykFbPeespOWLCT@%q76gcIX415Zdt2ALk(7>nBp`WR%4@K zf})5`UEb|gqo)9ZCs=Dg-$8GpUVZsnA4f2Ig{O9|^0z9uW!lrPt21hCd`2|EEjmR-E>~VcP#<57G zc5lJD?QzWE`Ds~Qb)EX{(TCwWDqBqALT)?hIIhkDT9r(P$8}sKM&j`)_E(78V@@&^omSr$s3tlXiA4maE#k@c zS#*%V(T8n_C}{0uO4=&>vK7|i$76r|E4q9bcYpAEMf(}_IW`O49QLz8K~yy|vTB?i zzalkZeGMQLk^tdf;+MztAiu0aWf5E1oUQ?bSO1oR37PRQ+8V6Jw)%f!2a7dtF}8p8 zA4?hhyfwlSu!>`5sz-KBz-ZWb)A;Q3xqmD1?mX4g;m7F+e2}xf?(YsCrSAcTr0;?G z`x4ID(`$9{v)fY2_WBLOZYI%LKi9`8NgtOnxX4zxrCQ4dubIDPx^VkZeTgPZxgsn&zC_@ zC8Serce$LymqJx{4zR}^yfyXb8IZcVlf>D%*Yl&K?DKhsLO)IxEdU_DU=6z)%hG4R zgF5;1OWNq0H2mfXnLV0xq1;onsy=y|#Xko3EdKy=8 zoxVuzqVw%8GZ-#T%qI3VEiMkaDa<|iUG+}j>_ol<1M*(2h|r6!=k#QG-Cs^$^mEQv zCHvcqb=E-j!0O?7a;_(a!piz4j`gTBJ9_PY&Rr(aFAIIhl&SxmM^zQhmWo>|FFVNg z&DT}R1gJClE?q(+6fjrL?Bkt>HgG~^a?Cpxp1bT__h5ca<3nJ#%PrEu!T|S~WJ{p< z9G|ntO7%Y8h9RN1!4i

?rC%?6P_WlFI^t#!Crq{Z=WDXrwcwP!3 zxNlH{-%Ba`?D_e)--G-=dvR@AAuMSds-uqk`>St;U$^da(g@!FCsN%)mAI#WG^D*1gpe+6aZ6)&-@ z?unC7tl-6&d&D=sx_H+e?dLPb_itzz5vR9*qsm)Bg;vE|HlEshzpy^(%h&rYSb)V9 z^yazUX(@h+oCxfBXtP{U2r>|OcFLqYx%!Yk52%|E#s{5Hl*prrvpq3TM=Kad-&;6I z$SaF3`fW#=wdixNwY6u&+hNIfyc=nI=9Jm;9H)6(U4Gt$VGny+0hv4<&QYiK`IGda z20H>|xmv!2OuD*W{OQUZg=F)5rh$3Q^IoO7T}%cc$sFxhivR$9A1o)bBpTLAVDM%X z@>oLnpSJV4n=S8Kv(*( zuMW>9S*)H}vpgha%Mb06qLMo&ZN{4sVMKl17V`8nnZgy1?{i|3zH^@)%8(JEXG~0n z%X60b-pv^etaJK5B)Uhhz62z{8cyfq?IuG3d{uc07CUbR`GPju65>g`*~MO9E(1bW zS-uf0vPM$mh`IIr=<|mH?fSsBZMU7Arb5{tS&*_JrpC{XBZp&;S@-f7tvMQo^RYl@ z$1P5f`CWcKECrQ+SlA0BgI&VA@3Wmy<=e6|6?O_?F0>Q5|_i0H?cO zA(@qey{G?47$XA+4mD7-*UqhB8>0Kcf3^}P|2*RKbbqy}K0=WulUh7xlJ{P@AgV_q zLi$xS#;de|>xh|&y{zZMb#CeCtrZCsOnMVp`0%-0wOiNbC!+`f=59T+U`K|&z)5rE zaYST+ra3AZ8ge%OuJjA6U<1>Nxv4_YP*?j0f3t_4tt`JAC&@C|T*k87NmBo37Vx9?_jpU6O9J=>=#uqauj*6 zk@)TxF?O$=N+AmFP`U8|2tNDB-9$I)Mg9B0vg2)~6Ahv1oLXzk$cP@-@ZbgGL^t!u@8||0zTQ>Ixhgw%S{q%fj5tqci}kMWA)XoX*Qx#wbu#BJ{ls0ITTMY{PvumIaj z^_HLF`sv8fXos;aH>1Z+GZ!z{ee8|(fUe`LX+yxd_IkMA;Q8}?NQh5cW+9G@4FLV2 z^H570RQ0`{UFrAM5@(#Kj{5aONpKH;u8Ox`*9MNeuS&|bwo%<5 zqvx~4mKsP*(k|0j7N5weJYO*$0RtNYn-lFClyH!p^W=if;@1Vt)a=)$y28e?M8qE8}^2cTZ-Ny`fm04ze?=yhZa3`l|wszyVO)}ysJ*gDBZQlDZa)7+EjB9XGeIGt!ahfQohe-I!8WN5{) z#BkT=w&bN83F`R24Wqu0`db-_dQ9$flJs1Cya#(|Z?9%X+lYKQ>b)*XlSR}O!i^xo zA@%^A`)K@O<=_KNum(PA$57KGhc>bVdJj5JTBR)zCooNFhu*o=s z5#li)Dz21{=g9sH`r<1xbiIDM?xsnV{+K|J5bHODbc7q=8PBfz_gB)O{Y~MVKo{KEg zJxZ2aYisL(f9vnA@h55H19FpyjH0X12R#EL?KuM6TehJtdM1L`9OxZ&M~So7b-yz* zVu1+tC&s88>!d9^}T5tO*HgFgfn7QV}u?-CjZ zk8{zjerBPV_68uDI(o+>Dg9-3qsam~5ET&rR|?lk@J|Wc+yt%H2sL2TF03SvFAb%mw2)>(}qg_tX*(HxxeOHCJpq1H0z2Q|)v=Z;k^+qBeGsbT7LpOINHS z+gji|qHz*;t2JO);kODwT!i1VkIj2meMhlBD&ZvHV5=A_8fNnH5)qn?hG*Sjv(@wK zDAY!lY{%HSk7;jTXChRiPk1A}svLfErp8zX;X$tvkYb8RLOXie1mBRjH*Z?Yu{zXf zEe1{)5)YEo1NxZqadX(7UI3&3U;#C@#R4f5s~{W_Sc@i5NdcI@Ub~gps85`%vscd$n$s9xnsh`a*-8I){HL%~Uov6>2;5UF!b7qW1$wbX z+t+ACO*!Cuw_s-|5JMnZC;+Q;mtXl{8YSA7?l9hO*DK{(gD!cl>U=j~o-=Hvg~s@F zUbW?ZDg++EE{{DyptU`L7-EH5GqqvvGU}sXqSDnp;ZdNt@P}=J8#LPElBmz}K61j4 z8Bup{5nu%-BB}^NpLOZM+7kkac-7o9gpwhQC?3HstOQZF($J%-N*MGdP%TQ%kFsOl zK{XpALf1{gJNbX(l>D)~-#=3wuyf%wO`tl;Hn ztDE~q6cwZ0B4ro@DXhvnz?2As%aFnVWIpoLokU?+B$;b|J@_8YR!)OGqtA_E_DIZd zrC5&EYu`cHItobg&-;2?q8u*~XVUcXBt?E~IE=<1W^H!LW=qJUU%+wEP;2V2QseHg zK?I4~*lBe^yijr0eWYs}Q=tR8#(xdiQ|_=N;^ORmQnTN8d&l7SP@BlSUsnj3yb9M-g?iIHi(B z-}I<8J6J`b<^-#`{<}r8p)^P-IT7T2^D{AO**jork*a?%ZLu>=#BMT9v@rTy_Hkt{ ztMS9-f^P&FQsLI$lgt(Bw2RZMVI>Q>1$z5{7T(i|Fl^4&J5LiBZ_a&4q2{D5r)Z7G zQQJjAS=6gxO3*=9eh8tmbFqiXz%`yPr*XNHn<8!DZQZN-NNl5FAy1Ei#2F)HRzp=< zVYflDz&26}e}wA}YntlFrIOl6n0-k%S}siX$LLg3f%QUI5{XXcipzMCBr}xrK+^kZ zq-ot~I$Sm>HCF&DI)m4#TC8qMN;iIETx0ZCegs3FrZi+@ng-TjJG3__K>TA<&9KeJ z)w8l+noI=oT>uawV5hVM&lxmkPD2F9eaVw3jMgi)m&C#n&7Z~&oXQq5;b-)XeKnBM zfP>(Z>-^}QkVVcT!^bC4(RiB7qye^BxVGV<=f#r)z4A%BwJnQ&t%7L){PDkp`P$q{I@s$m+{JC6UF{xkH^bqnSYJo4WpW3BDh zmxZKTngA{b`miz14^O8Vgp1Ar8=@3u_yzuUdcmoo_$$UBX8Vb5WqI#Zj&k3f<@%oP zXcZjty&glvWyR;ELs7{@a%_1KuO+7b#!C2+7l#$w{onNmsnWySL@(22vb)O+i|!5m zr3xtMQu^Es-;)WZ)%p8Fc#!EeX)y!f8P8Y8i$PF^<2Yz4c1vxENVR2cB3zH>cik-zlmven&?!+u9&-nxcy~ z05%J&GNUw=r+NKm;Qb%cC}nk3?83-YZu*kemR}1l>4VG7oO$XgNyJ28^y&iA=-9lCnJHa@x+Gkt5A1L=Gqo%xfSFnREhI`^7OJy`u34S5A} zW-$e|A4*-$3VP?TK51*Px8`i;*%>Fi;Guw@v=HU*0*gx2tXEUV(O{5SaKlF4iAt>b z?d_O7YrYmIit~qeitb~lC|wdHzZri(31?fKl3Yn`fT_W1;xO-z=!<%?F4UdG{&VjZ zgcp2&-w0p<;aR;hG&N&#n{Jq3PNWyw>Do9$w1OUb`;wX1TYS%ICicif|Is5aDUwFiz(z_`&P|4S)M#KNhg z42{ZQE(5Z1jQ(!+E?*8GC>YY6IMg&aOFZyp_*)LUlpmPwZU%nWCS4X`pko(~<2|0u ze}6e%9_Lwv8z{*N`eLX^u&zWd&QY8Hi)C9#4canG)drI?G1lID8&&v`QEq+40$#r)CbukKLL85!^wjWR8dw0#vJAQ=Bc z$8fJ{d)C?TXO`P&@&ubWf5;7WhK81W$vx!g8FyN1aQ0_gm_@eiLGYxa9gzh@OSQ4m zTMHPYC13O=n73R9QGjS#qi|nM{2sb25%E1Sib1c*!K_e}=%05ef}pFB)}N;Xh|;#+ zOp}$h5$P4w7qOaV4gMQthV)upr3y*ZjSt~=E5TM zmi~Nk&!VWt%n9M zs^;E?-49$@1YJJ$y%%_aZ{BID_JtDNNEzFzH*2E;mfraNc;;<0$^V)JmiCh@oe+-o z*x{%}V;#eA+kS`f@yq0B9FD{Gr}tWYpJ*%|v#^%y(<)8nORnQo+oAKWLndBqG~^mp z1^yMS8lRe?RIM+hvV4odO~8efn#4#f{C+7y8QQkAV*}*|fJ~DbJ&L&wF0I8`;YsT2 zOHAZ5W&8=zRJ>P*LNed;cC1r)5@U&~N+_t-&ft&V0%0c?-f~%K`a}t6G7a=9Dk6sV zh?g`{t9o6#LR(&I_q!xsi-kS^OG%MEHmbHTenA1;$bP?e>k5vH)DAnjGECP5(o#>~ z=|mGG^1Mx$H7Smp42ON0)H0nSQHkJM9P94~5U>O%@VPE6<===2%}_3B6U_jmA|d7~ zEf&L<^Byt=??hkivls>UAK=`g1hkLY8&JB#;W%tNiCs07a~p)?OG}HO=BuI~+*o## zW%O8Y%xME|5|O&zJ|5Zb7!k|IPX$$%7rX}+L9|$A$H$BL0QotWFH0JWc^IgQ5+FQ! zy33S`N@vcaK?~&Henx}=hvd`(e)h-5rBSuGU$4S}nF&dYkDpTm=#X>x*m(`~X7~_e z=|$-zBzQ0|^S@H*Z5*nKeLqzlk6^jIM*D`C01cqF%(vOlrsSVlD8-EhHwKn9Eb2NW zftMm5GSD`+p70eE(ip_X!=rUzkMzO$p9>}nQVsXdzCQk2vx~2&CpTXxED@q!3@tc1 znVYVCZ`CMGJ)@+&q^O)tJmA(cl3D}A^wCdFJ}>9e+(%j2-pJ^20S|+UKF?6jx11QO%33^zSQyorjiY1c{Lexh z7=s7&j!OoH22c$U{Bo4P zKVyKm4~`n07wo>(I2k&-9Xhx{;h7F5mkH#_@^(9M#(ep(qc4ND&n|&4iCT4B^g$@N4;P`9HhBG z4GuO$?ct?I?)ND_o~b~AJdRi&vEB$-=L99(EZEl{`ajkiQ99D+gVUQ^8v4_&v=e#d z>EiV{ia}1@_U+S5j^Qex>WBh6XS+0kEx8QeA###u6qb=D*MHZzLX~BI{1ilj=Dp@VJvp?upe3R z;B2&Ajd7B?I=jpcB)^GFd7fWCviGd;^^C|%l;rn4j~jqkkG9y$Px;!LJ>?KG3&)?B zvaCq33R%?nhAXK$sqWDCGL03^*Kw1zX=V>siPJ{Z{+4~edwdsbeIenS z>!QbHM(x*+Np(uB>9Ot3E5EN)gLp@67t3yz-_IWT9e6>Zo$&}w4`nDKUf2R+6U+bc zB}8vqooqnZf|iE?d_^Ua$j6c722=!DBj>LkGwh^?V3SA`d$rVG9r?5WM4Rg4G;I`` zvvyI;6LH|R=(_j;E!FoKH31QvUUgXxr6VaRA`+yXNKv*87Ps%f+Su72{ zF5~MdlxWnRsWB=UZIlP|V&4Jn_Zs5=d{tlN0roiwhU9U?iC+D(Sp4z5z10u9jrIdR|R;r?tBDl#AiYeXI}GlW?pl| z|K?veQk$-$iuNk;J(0W@FRi&DR2!Fg{PHq83uVGW|Bf~7);zX^s)x0`0LtCGJ^%&b z;PX=||4(2s|F3a0|NrRFTXC9>lv}F@G^<}kz=Sr!xq%dB;l;Q#w~!;gN3Z`@Dn&F>{}9wwR3NXY6bZ}60ZqR2ojvzr~_(n z1RydVtj65Z3mR_#dq^K3_*q#fK7^;|onY*L9t0byyr7G#(|H`{CX!!75bC-ZjVW~N zgO5YP-p7Pw@yH|;HG=(!U>t(iF~5Up0sw{fIWy?ODrbQ84E@)J4opSgpBGh?)Ezw#K3BvjE4ijm#qr0;^kPv_p75p37=o=3J0REPQ1Yknb+>#&y zRcR5#bN&7^j*j{t8WJ)cth9`zPkti9N@0Y^lo%X(ofkA6_6g(Lffj+>-ri__SmtMT zKUlI~`jM0xql2=r)!UFuC_-}(K1RgyoEjkak#tQdf79>A@m=%7@%G~?#C%$lU<$y0 zDtehpWsduRj0~Vg4-T3Of;xtQhQDXEqNf>#75-QE7((n7u7~AMl^h*eEhsx*ocRc_ zoiYQLy*jm(&F3oC${br|f&&#gdInA_-k)CIpSq*f;3-rPuAcHB7D%Me-2Khc;M!bT zP7PJ6gH6)-XITr;mRhP&@6{@qQ$&SlqDmpl?e3fHu8FeKj6dW1fs_Rvy#HWpuK?yqS=$u(NTaQoD;7hZctM2B(G6kK`TPe8xfJ<#$*{pv?nICxDC#{nv{x zQ0y_jj>5zaHX84FT>)-6XVZUMkSF)eBIGp=AQnq?VfeikwSbLE^vEcTj@%YXS6EhT!h_L zMQB}~VFYsa zCjWoNUvj>^1$5WHGjWpDB>&G_q6Nzs0_O29%7kBDHGcGbfdK4%p+?6!@91{=frEy; zy5{V=LdzKw_Mem8)4j&IBjZSP%f9M9kBow}`tpGU3=HBNLmSI3m;Q!h`0t2gqWcV- z4)(9!iy|1vZ^w|21K~=5Nn~eVYCj*2P5SR-(KJ!J*9zvZ(!t{r10f4*p;HhVwPz5G}KnS2D$OqnDEq zfoB)VWdBB1lCUB8CoGHmtm1M7-}CtbNTm=wetwRfKdqsIScLJbJO~SCMRv`BeY?IG zSKlQC5$2mjtE0s$Xf za1WAMpzKNf2h%FZHpR|_%k&TGdPg_qV?Yp%k&e@FPNjgr!9M-HZ1Acn!6-W5{tsN! z&4rUtq@1X!AM4*`u matches; private long timestamp; diff --git a/src/main/java/ru/serega6531/packmate/model/Pattern.java b/src/main/java/ru/serega6531/packmate/model/Pattern.java index e417ba5..26c6fcb 100644 --- a/src/main/java/ru/serega6531/packmate/model/Pattern.java +++ b/src/main/java/ru/serega6531/packmate/model/Pattern.java @@ -3,6 +3,7 @@ package ru.serega6531.packmate.model; import lombok.Data; import lombok.ToString; import org.hibernate.annotations.GenericGenerator; +import ru.serega6531.packmate.model.enums.PatternActionType; import ru.serega6531.packmate.model.enums.PatternDirectionType; import ru.serega6531.packmate.model.enums.PatternSearchType; @@ -39,6 +40,8 @@ public class Pattern { private PatternDirectionType directionType; + private PatternActionType actionType; + @ManyToMany(mappedBy = "foundPatterns", fetch = FetchType.LAZY) private List matchedStreams; diff --git a/src/main/java/ru/serega6531/packmate/model/enums/PatternActionType.java b/src/main/java/ru/serega6531/packmate/model/enums/PatternActionType.java new file mode 100644 index 0000000..fe6b5f7 --- /dev/null +++ b/src/main/java/ru/serega6531/packmate/model/enums/PatternActionType.java @@ -0,0 +1,5 @@ +package ru.serega6531.packmate.model.enums; + +public enum PatternActionType { + FIND, IGNORE +} diff --git a/src/main/java/ru/serega6531/packmate/model/pojo/PatternDto.java b/src/main/java/ru/serega6531/packmate/model/pojo/PatternDto.java index b37a933..71969b4 100644 --- a/src/main/java/ru/serega6531/packmate/model/pojo/PatternDto.java +++ b/src/main/java/ru/serega6531/packmate/model/pojo/PatternDto.java @@ -1,6 +1,7 @@ package ru.serega6531.packmate.model.pojo; import lombok.Data; +import ru.serega6531.packmate.model.enums.PatternActionType; import ru.serega6531.packmate.model.enums.PatternDirectionType; import ru.serega6531.packmate.model.enums.PatternSearchType; @@ -11,8 +12,9 @@ public class PatternDto { private boolean enabled; private String name; private String value; - private String color; // для вставки в css + private String color; private PatternSearchType searchType; private PatternDirectionType directionType; + private PatternActionType actionType; } diff --git a/src/main/java/ru/serega6531/packmate/service/PatternService.java b/src/main/java/ru/serega6531/packmate/service/PatternService.java index bb702e7..1da14af 100644 --- a/src/main/java/ru/serega6531/packmate/service/PatternService.java +++ b/src/main/java/ru/serega6531/packmate/service/PatternService.java @@ -6,6 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import ru.serega6531.packmate.model.FoundPattern; import ru.serega6531.packmate.model.Pattern; +import ru.serega6531.packmate.model.enums.PatternActionType; import ru.serega6531.packmate.model.enums.PatternDirectionType; import ru.serega6531.packmate.model.enums.PatternSearchType; import ru.serega6531.packmate.model.enums.SubscriptionMessageType; @@ -45,11 +46,11 @@ public class PatternService { return patterns.values(); } - public Set findMatches(byte[] bytes, boolean incoming) { + public Set findMatches(byte[] bytes, PatternDirectionType directionType, PatternActionType actionType) { final List list = patterns.values().stream() .filter(Pattern::isEnabled) - .filter(p -> p.getDirectionType() == (incoming ? PatternDirectionType.INPUT : PatternDirectionType.OUTPUT) - || p.getDirectionType() == PatternDirectionType.BOTH) + .filter(p -> p.getActionType() == actionType) + .filter(p -> p.getDirectionType() == directionType || p.getDirectionType() == PatternDirectionType.BOTH) .collect(Collectors.toList()); return new PatternMatcher(bytes, list).findMatches(); } diff --git a/src/main/java/ru/serega6531/packmate/service/StreamService.java b/src/main/java/ru/serega6531/packmate/service/StreamService.java index b59121d..7115131 100644 --- a/src/main/java/ru/serega6531/packmate/service/StreamService.java +++ b/src/main/java/ru/serega6531/packmate/service/StreamService.java @@ -11,6 +11,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import ru.serega6531.packmate.model.*; +import ru.serega6531.packmate.model.enums.PatternActionType; +import ru.serega6531.packmate.model.enums.PatternDirectionType; import ru.serega6531.packmate.model.enums.SubscriptionMessageType; import ru.serega6531.packmate.model.pojo.*; import ru.serega6531.packmate.repository.StreamRepository; @@ -99,11 +101,20 @@ public class StreamService { countingService.countStream(service.getPort(), packets.size()); packets = new StreamOptimizer(keysHolder, service, packets).optimizeStream(); - processUserAgent(packets, stream); + if (isStreamIgnored(packets)) { + log.debug("New stream is ignored"); + return false; + } + + processUserAgent(packets, stream); Stream savedStream = save(stream); - Set foundPatterns = getFoundPatterns(packets, savedStream); + for (Packet packet : packets) { + packet.setStream(savedStream); + } + + Set foundPatterns = matchPatterns(packets); savedStream.setFoundPatterns(foundPatterns); savedStream.setPackets(packets); savedStream = save(savedStream); @@ -139,13 +150,16 @@ public class StreamService { return "" + alphabet[hash % l] + alphabet[(hash / l) % l] + alphabet[(hash / (l * l)) % l]; } - private Set getFoundPatterns(List packets, Stream savedStream) { + private Set matchPatterns(List packets) { Set foundPatterns = new HashSet<>(); for (Packet packet : packets) { - packet.setStream(savedStream); - final Set matches = patternService.findMatches(packet.getContent(), packet.isIncoming()); + PatternDirectionType direction = packet.isIncoming() ? PatternDirectionType.INPUT : PatternDirectionType.OUTPUT; + final Set matches = patternService.findMatches(packet.getContent(), direction, PatternActionType.FIND); + packet.setMatches(matches); + matches.forEach(m -> m.setPacket(packet)); + foundPatterns.addAll(matches.stream() .map(FoundPattern::getPatternId) .map(patternService::find) @@ -155,6 +169,18 @@ public class StreamService { return foundPatterns; } + private boolean isStreamIgnored(List packets) { + for (Packet packet : packets) { + PatternDirectionType direction = packet.isIncoming() ? PatternDirectionType.INPUT : PatternDirectionType.OUTPUT; + final Set matches = patternService.findMatches(packet.getContent(), direction, PatternActionType.IGNORE); + if (!matches.isEmpty()) { + return true; + } + } + + return false; + } + private Stream save(Stream stream) { Stream saved; if (stream.getId() == null) {