From d3ae28780ca33fe88166e7cceb3cc3c246926195 Mon Sep 17 00:00:00 2001 From: PhilWindle <60546371+PhilWindle@users.noreply.github.com> Date: Tue, 27 Feb 2024 10:50:05 +0000 Subject: [PATCH] docs: Updated yellow paper P2P network. (#4652) This PR contains updates to the P2P section of the yellow paper. --- .../docs/decentralization/images/network.png | Bin 84882 -> 63254 bytes .../docs/decentralization/p2p-network.md | 193 +++++++++++++++--- 2 files changed, 169 insertions(+), 24 deletions(-) diff --git a/yellow-paper/docs/decentralization/images/network.png b/yellow-paper/docs/decentralization/images/network.png index 05055422823327660acfe6612da1c67eb8baadc6..428caa2abd9643a3203db4bce8f53b8a43c0f2c4 100644 GIT binary patch literal 63254 zcmb@uc{r788#XROp_FAFi)9Frk|`3g%#oGCBpH6^TD|*w_xtFSV- zsi5}#x3S2Xm{au6Y*}LX}urHf! zgcHtCpQU9#c&ITl?ra<}E@Nk2o*nHQJ6fTM+r}Ui;MLyZFh8X zy1Ls(R7GXEF_!h#ty|iOn^k;=jf{;uJ?oa!GcxXBn(W6I?@RDlS%A?!29PA>pWogx5f>NN)zuB2AB&BTx4h?M=;r43;(+Dy8`BbtO1GZ!rg%FWy)3|v@TTuVpy^0I=opdk6` zzkmO3h}yQtk&cdzSKf_F$=BueRTX}I{=OYN&2Qf}H#?2Ky>(-MwyVBrf`Lw;wX+!Y z8r-%a!`ruS#|G-cFkV$vRSqoQCMNd!k98j|GQ~{jy=HRJYkk|xuM*@t*cj{Y?=QNu zH*1|BM|`#CK!1CC?h`5@)=ny(Eb@{)^NBuWW$Dz%8b748ks4oRE5CX3#3Dr^<$U^U+r`I^AFD?E z`Chki<3_B4TcxF*n%1I+4vTr}MmOO1w2#Vf=w96G!Q(h*^2ScU@HA6x|R#%q8n)R@}vCz))ZsK3B z6fnVep#IgXiS}z6O8zdiAL~MwgGM^9@8KZ2cC9idF>pWO(jby!hnSGp>dNV49n$Op zi=^!AlHx4!i>jeZfq3(hPyNW78`U{;8rVg%Z?LyEtA@Ji3H3FbNk~YfOIyF1>hA4* zeCnsx%Z2B7=qB-v}gkzL!+B($pP@J&<>Y& zfs}6Ruw@ZN?;ye zZ{HSJe-E0G_a8G$G4u7UxN607@A9{AP6rMgkT>rhyt=+M^8Bfr*Z67Ga%))@rasf? zx?zWpUwl$GcvbEM2TjVAD@&!kqSK$hKEEWX?rW8)MVYOza#?Qh?H869mq zR&+?kB*s8zE&txLJO%go9Ng*c<^9x=GInKH+x+L1%xGWluFFd{+Xh;8K_aX1nswEbB^E<_ z`}S=eyW8KFqQs82WJNRaYLPBnxS%wj|9%32BE|*52Jv3v)!B#$%OyPlR+)<(T70;H z@#uQwCS5xb5s`6GmrCl7k526p`Z?aGP|3rkas60r&@w&a&#y}cHW zDgvy=T5G@l=k}Kxk`VzJ59NhBOy5Z5X|0?8`0oAt)J9~s%7I|z;b|nD4WBMaTc<_E z8|ZLzr$vy*T#ez-kt3;%SZ;I@9ctyseoxcia*;ob^pzOXXy@(Yb8kM_bDatYCueHo z-q59+l2#7tZLPU{;#B{d$B+^sG8 zcA`#{3bE71jrMWqvL4GeDJePmai#Ztw@hwqQ68xc`EC6D>g=F^pkR0mqRbsmPtoBo z*w>=5AM3)b%>!E_(~|d5fDe5d)#?OSf8M1ng8svWaST+yMb)?WRJrpKG_|$Yn-?Ti zssv7*5iT5*RdP^Q-@MO-hP;RAXp!D^?Mjc;8hbrF&FMGUpB>{d@YtP)tIDlMopkWv z!9v1?mHhjs|H$i(A@#RC68iTF!0Hr;y=6u#VKh>6sjJ%4nphLMTr+WW=RNGGHHx_)VEfGBRT8$lo5$5;!-?uKU8_>YC$(+4^vrSg~!}^y5$S z+%1~>@t(C~>Gw~jn@?^YMF2=`1STkvWd85W(CVETkgv|oRm){z+Ij*(gyj3Vf$php zd*S!)ZZl$*+=+B~W%mQ8k-<|MFKki0BkA$)4}Y2-Y7ySaUiy^&P|bv6!e*7Mm{(U- zih_?UPTf8ERgajp_jJwTE38t$g3{2_Z|-C!C+}lX4q3Qcu9N)V*%k{ww`ogC<3xXL z(c{L73R!LK7NCaAd0uB$Q3HXz*;(JYXY>!8e0^mJQRmK8iKhAmBNBj<-0 z=5Nnb@{^#fFslwJv%6y>3J`!V>r(3p^81rr3yq^R(cc-|Rj6u%Qt^e@xW6#sHg@pxEKauXX^_<&< z^YXP58BJ}AA`Nr)X2$^NI9kXlC;;)@EnCmP@F3*(Nkj<){*W(<6M%ifWlX&CVl-#} z9c8|J`I6Ll$Lc|+M68h3`6SiUqMJ9xcI-%sNtZP5yxsq0n}V*vW2+nyppNC_EkJ+P zIs5&-pP2dbj3gVf;Kj}P^5sjw2$C>Ie8TBdfxy2QNIktajHP3P+w@RZ(Gj4j@v$+0 zj&HAXq*pht$zf<}Y!v&!^zRjZAHYYqxNy}WZ!b3)Vi*%Iz{~V;#|?WbLUD+OP9VhZV6i=Y~Fm##6;)~X(iw3 z&heh@x-)8SZcaI1!Z#qGy0Vgg_sK7q%=Ah6hPS{-%U#o?eYGvX+^)Xva1UUB8Tpej*eo=0|Nui01_WQ ze4VX)DJ(2u;P)a5h|b$tmoJ|V33>7IrE17RecQ!l*OPoV8Y+ErB<@gBVqcZJ#3)xs ziT6-5;UEAbyQ_z*tKNYF&X!`+5!+H@0VU#^?1-opQUR=s@TCfmpW=^r0#rw+Hau6B zeq$ptFfh0UeZ&2$ZkFrq?w-2X(}W^#>;5aPoXFMXSBf>xZ3J)@A)YvKqG~}>LE%!& z{KQ8~Q`2vNge*e}aUqMd#}N%;ZwCLGK%q9#T_!}p2NEVThwfuL?b@}Ah;_~yOX^hi zI2RpVo(K$SXlS?z)g8hU8H(OJxR(|1BW=QT5x7K_$%>L=3C#C{<|K5-K0NRleg0LU z&(ZyN9S|s@h?4Ixif@O~;rOOO%(<+b+~LEAG3Sk4U4Zm=P#c}}_O@lh{fvM8+H{9g z`q+!!3w*ncLyu@wIb0mzHEJp?WPE?6SKjBF0deu`CF{2yg2Qnr)E1NZuzzownwy#3 zcj+Kv@`%6zLpKKS&nCOF>({>~3u$9cfxg>13sDx7ZQLazvk)tiB9k7BI`l$J^hSP( zp;}b2#N-&JAa{2u%Sz zfJnFTjp1RJ^t1Q2nrmO+`}|P^B`9CaOZ|(NF5zJ>@GGC>J7QvDkFs}guwmVEi!S`U zdpDzUMI|_0n1eug!r5jez?!n=Y$65U_)>@Le{WyL@LGvy{#!mZYFTP)Wo^^zS zZf?aD0rD?dnVIVud$`N6J!4~I-bY8623jhRuFPt>-Kk1*Kvyg3MtfzER(> zyu94(yM&hOcyFa!T>MMFvQU(O-GaNul71tI?9^^snOSu+DpM9gN}c^DrPi4n z*Qmb3J-V4xH5rw=ZzMpsIJE7);N$Dd7E4;H`}CX9Z7{s#DZ=t?9bsUxA;k%xW&nRd zK|wdV6Y+If5>`JSTRfs?U=Sp-ml{-eN90Ou;M#FUWpm0wM|*pFTU!Dr=MgKb7g_}% zijd;KuL!f83JL-gzsE#};qL72&bWH@vB$@nfzUtWh*lv-RD$Onew=i5b(Pt*D|mKz zAIs0FDH}hqSur<}4vV{xoHI6u+I_=ZsuqT9kw8Ixf$c$HLDX`*XU^AB#?ZQkW^HRl z%I{X`+fU!@`de16ugEXLP$ zb$4@da%z+AIlp!q+4yH`ppA_UD!h`ClK6OiO-;I@fkAR~dep)p-QB>$-ZxxH9VR__`MX0d=j3b&Ztxp!7bJqZ`(u7|z7E9O^0eL&eEBRBmS2?yOW(fBQkoXP zRk%z+PNe@xXA?^B=a-~A-G85$_j=jYby50Y;FGIg2?SGvZC@hPDY!_Fdg)Es`STm* zXuN!Vm!|uT;xF$kZ`s*dWO|BI@**L=X_wQBnAq4%d3T;*PH{=e;#;?3ODSb_MrGw3 zlHuJzj?>Ek97av&(-g-J$_3GX`}Xa~Epxwq zSwHlb$}zb6wV7t^2BV#Xz%Q-I9r@aT8e4XsEI4Mz!NGxep5h-c^=TiT4VhdwRrKiN z5agsskM?+aPJ$MyTV1gfW&sDct&j0$S=ml3y2T$)yg%SNSOw3m_>_FHOH&Jqu|*{- z?OywEN?8a?Mb{ym%+Ad*F))1AXFK)*^`3BZdbxOU#0`7KvRvl>)OXg4UZZct=MHb= zk!?jhTKpW-P{qy7jZMLrbD?bD?lp~b78VvP$*HMt&U5c7*b;SjW6|x~i}T|@zI+kR zUhB>G9?QV>J!4lJXSuIlllSEr!$_;nhXJ0%lU`o!Y7Ra=yZUaoynp}ewd!hdQPBxE zH{{_F@NVZea1Va@(x`eoWg=wi(-VZunb&I9f9P1ZG&bIq);M|cB$6c-Beq9MYAOgg z1cA3bOF#RnJx`rFRku8ENg_q&UL{t;-hl9E2y^Ls5Y<#kgftIJ|GT{ z06nUy)hBK}gQB$4?n~+Kp}516I_jdrubD(B>Boh7?19>e16I=F;>oWq*qWb7j~E4B zVlP*?dH9e~U{RB`p`X>Zu}o=)O&%b7UtHpvqYK`5RFdNaho+yOoTXyZtFHp$ysDvl z>NKzUejoF`@#3fC2&2q<#M)J)?QUM@r4x296055f`l9s;V;8sNs025AzNB3~J9|2?MoFZC-1LVS=`?#4ZH1v6-fdgCzZp5>0gf6)r9=MZjOg zCc~beGMUj*p$-qVwMZmdIy%FQ9k$>l!62AUKRQtOG$n;4B_l3%E{Wlp+EZ=v24YqU z=T-1XYP6W+sP)S0{8%d5;_a5Bmj9e^F=6BS8wr_7<*zPY1XaCf#||%)E^QKA2Y-V~ z(Y2GplGAhd#Mf%aYaNeKzeNTn11t zHWdCp70uVL$&Ch1-!$TLONxtQbb7W^S@;&@+*!-SGdm=*Pg`4i`Ti~yY3sUB5FloU z&Kb1MHuDpprDQ0sS!w!&D4ZF1vt(0Z?Fp$`g8z>{%trCHPooLR;E2!2a$jb{*k*&E z;_gdQm!?0X_Hb+c{?DR$A3l8W-=x7or8@@RA-&f2N>0ylZ`Z4uo>v4%ttxediA44r z7X(;4e{95bpE4*KYkPyQ@2?P z*Iy{F1JWWeM{=1fdX=g-Gw(=Z7eYE*yz{F(G+a@5vY@ambj z|LcR7s6b&j?X95CO75^b7d`I!rqGa7Fv#ckv~3sTB)I^{1EzCy{TFSpeNENuweoV~ z`z%Za=Y^dFzV`-PPEXe&5eS6d$(oO|-6fU^#GpU(CFL>y^QldnHa*fT^$OIn!=oMy zd_T+x2`Tm_K(p2jE5)-tJ?_vuOhg&}TY-LN;o4zCMHokYi!ZxYeCN&uVKQ%~vGD%! z>*i)HpIAA0dDpsM^Bwkp=2H`9f4E#p4AcVcSLyG%JLTo&^_sLxwOE*#Xs|#Q2z_3e zP_XuLr_nUa{p3d59ho%iHVWq<8;YBp+5Lamga#320%0Es)erj}l7`q&zyOe>d}LVm z!WA-KvAp=BRB5D^-?#UHk2BHOTW5>RHUB9owHRzIQEdv>B`GC^yKz1FlZc!j{LYX@!2xRC4LPy8t{zb@o=x!2**qdn4fOX@5p zWeHdNH7mP5gRF@`PHAvR53jzcbE4PT!GSrsveFM^Lb?CHr&J9|A~-qpS&B%*;adTY zK)73DGrRZeBbAcUl9R6m<{zr{Vc4k(`O85+E7Izn@M>X#v16*RJl--5m5A2ulX_alx~!lOr=^>j3{!R zojJc*#e(W&h4^PswQh_^Cl7na-oO20ao)#PlAv>-(?{wKtu%&n-Z5+##ppKrg-EXRJXnikMCkmR^LHEX7! z5s{d_yOqteV?c159y{jIJ6$DTgPl}n(j0RWoJLes)adLP108<7n>6GJ zIxAYgDntfLNNQ)_-DdKJMrZygaOZL#0CH}^7 z$Ef3#m6f%~f(*z3SAR_TKT=MEh|%H0U8rPJGHPp2L*DbMtTOCD>II+ln)r3q|Hr$M zro(0KKHG}lp;GD8&yTr@av03R`#VQj(~W9x0`fm=Z5{5fRbG}oaNxD634MM2d-v`ElQmxGT;d)KTUGY#-;)|*UaWb{ z+}wQMzI`&XF)p9#!%%NTNb&;AfFELE#}oxty6J2*J- zL2Uz(j~F~~&-p+|2w7EEaO=M7^fC*#Kvtz8#l>?-f$%^bx*uXGN=4`z=a_ikVH81p zL9pROIdlZ$^RVW@gSp|3rvn43va-IYS21khv)8Oyv-I;q*f~vT@qIOZMGU2hrazUB z96D5i{Fs!)Y-wr9O&T8`njLv_cry3q2J!!rq*}VUsIP>DBMmwrvv9Do`arzEBIWwp zJ#01`v2K%$j0|@8`(pE55I^hd>rs;4zkfetFyM0zT?bhQmUn|1Hj5GrcvZF#qKLh( z3#I(QN;q=lQg(Lj@i&D?OwUrcu7iX<+SCky3t4_@Y6>+fYDwqM4N)B(9b`Ejgz7ib zUOXq54S&?7K+2DVyP8Wajvhs+I|P^}2Dxh7BkOq0urhWbUwSz&IBgWXj;3U<-Ep zd?RUTZMVAbh46^G*>>d4`Pf)<)IJy%d6d}heN|v|RuJY<{5^a245Y}7139lyHy{r@ zd-edE3~bl2y3nKM<~_|xU7i;VbWWSzMApG(C95H>v(GL^{lT;x63{Gq?U-@)a7FSsN=4PGo}hg89l z#b~ejZ!dWPfmB~QY)%qnm1(SI*t?Is-&z^QdMo2Yvr0;&2(}ijt>-Ene`7JM?Ebd8 z^d1x+ME$Q$XG;Mqr!;88$@dD?9(9heBk0Wx4wing^TfIOdFIJ=Kv$triXi?d=?Z<%q%ImF^_c`=hA0@3LPhaoW9X9n;#&%{>1*bnW z40{9VGq&sz6x_!}Eq4Up?Bnl3nd$MQdXTlc$%r_()kAfgu)z`UO=ZX4;+6qT@;CBj zCLP?grIEsEK4vhuET3?Qr!Z<(MY!fy_31zUM7yFVU)HJa-fjMi#dmm3X41ybc_+y0 zWyelx?8}05x8925q8xG!BLj7HakiT_Y>;&&L3$2a5ZFv!HM4p)?~2U}KCJxAS-pE1 zk+rKxQt^#QI6@vva#R!@uT@l7snvr#eTJHG-pnMA-+2L)t8-I>92XU7{;oFm`1m6$ zcNv=Z&1$e@T-@+yHO~1(Mu(R4TDJ=Zt!Jh_^N_#id~7`;nXdb;!us69yTkExw|9So z!fVu@kUJ^B$}&5p#z$UX^yk##Gm~!IaL#SKdq_ty|DBeITlgbHYABP+rcr6#SVq0W z&y8LtGjPZ4S)ydxX@ZNZDBSlGO9Hr!5*J}@XKCCKSf zA_>lfX-zfuzdK5kmP67^jpX6s5$BQjf{mVylk@wxZ+io$5afnI!JtM#$Ppmghglm0 zxg{~^zNwd^>>9Og^pZzw(qd5jT6C;EoNz_W!9iF?P-u%rD@D~~Zf6OZP`p@(pJM85*0K z%2a-B5T|}Tr+?;p9kQA}e?NJPQqj`t+8{3qm%&f4k15m%i(M6e=n{}&@nI&j+K*@%{XL3ueEzk`U>>){qzBUFW<`) z4p5ua=z8KrpJDsBiV^u`*U15z#!Zyq1S$+9qpls;W2(;m^ui({pQRT4W!}-VQl2fB zjv7f>xD2bQ(ulp$b?zks6g_8v0G@cy+y@{+hoyX+)e?KS=6eNIKYLCprqxuDa{oy;!BwgOR7 zEq*dyM~mc|ck;z*z&#LoN>inY+r6oa_KH1SN4{m4h1ypddLCChKm{? zK=@*McD6g06jJAltA|aQlL!dt( z0A~77FBa$THm!hggVy2b4QDBFubvi_iq0!ZNy!+oy?guX2R|KKM+=VT>)NF-IxQ8! zMsJt~`9mDrMJVGS8@{v@V(h@L28-3)f5?}U4-s!?BR^8FLO9)ej-<5A`VVSy{}62M2fC zH`rj27oetq2t@z{p9zX)F?JH<>F(XT;he(!;iFwom3BF(FLIj)Qjk|R>jJDCcWs{z z-+)_8RZgz5rpDs?1*XrR5KMr{Rqd}^hyHG2mWcd%@6Mg=+qP{}QX*Gkd$?Ke!%qma zYz+i|SRS^=z-dW$c$R`6)(SAAwqfxJ2v9vWQ?Q0@_@g7rP#qom_#oIXgMLY~ox>I^ zGA)rAa}AJZR9fD~5sxv$)heFzXD0cd%2S}M6sqvHwl+bH=%hwFdwZtb`rPdb?!Aq6 zC_xhUMRC=i0-gq&Yqqdtt*rbINF1(4&E6c{to{iE6SOcEVO$kRM zBO}u;UaahS7N(4SAeAyqfv6j_>R-Q3j8XC*gP~9)B6i2kA^1g7x)F6YNRUcjS=R=2 zL7n4J{KL!5{TqdQZCrc&y|J+|gjRj+(cxiuWe%4pYKs=IpC6_rFTM?00z~53nBtO> z_3PI&iK$#;k0&$)4*o%nW=gL22a34flW~>2%OrU$UrYW@U9{^GBZM!%SdRl@pP|NoE#l1y*DH=R1yTTC{XPQ{oAgtGV?W%4*X>Zd1vRa#bHM!(<0+o zUJ|ZZ^(9a$lN#acz+@W=b8@ycY$aM+_Q}7BM#5ze`D^lALr@G^*rDqN7LGc_ zQBiz)dU}J-{{0s|9~%Df69ti32EcMqw}6tU&3UtR1V5pPq0~xSRHpCqFl$H&gvLTk=yBGX>=KAMry!+Q!3btsW0yt_f*cvIT zbuOB+b9Jb(q(x#MJbcJ&d@d;joAl$mcj;uWO;myYWea$J^jZ2I29(PGk!yI2um&N! z%_Z>EDHv8xaL~#KzP$ezdT?c^!5FRUhRSnoI#Ku+!jIdnq$JXDljmSXVq5$Bk7@I6 zKVecd@h9l#w**kDvDXU=UB5ABCOLg*XQWKI!5M2=*OWgkE*li!2@^IweE7Qe*0b*2 zU}>*utRwcKqP5W+HSflL)3rkt+VMi}-#1YI=+w_{dG)pL1b6&`q$0dC)k^s=#KXL8 z;^G9Zz=&sX&F)lCaQ^9#6^pgYtx!QRNYk)FSzb$^qow6CJ6HeV`}gmujTNCv7n!LY z6G`wKi_z|E=wRmJ665xPk@(`;+er+^shA8Yd1{Ild|Qmm@0qXBmx#i2Sel}-DyL>h zIyDvfQSPieV6Ywcb(W}wSs_)}9~2mq9jcBsva*!W@st$=)rZ6*w-Wi4odU(FO+F0| z>ySh<8DJM@jF0?M=YfbLTn5C}I^bSLn`smuW3+}mQjt1m_;pSpv1N~>M>r9Shs?hh(yt})v zXz^aMeUt>5gODz{<|enCD;t4-Z-^O<6qebUXi>^C3#1g6u$VJE)hA?7r!!=J>9Ch% z)iW?)<2w2Dc_!={iH0IDW8{UiIjHlfX|Phl*N$+MN-5n?-k2mc11Huo@sLPiE5C0{ z6;vKRNcNo}Q|FiPXIlMfZ#N?9>FRa}$o$X8Yig8IGMw~DOvT4qCg3NhnDAOcH?*rL z`^W-JQ9X_tPs!FQ?qLHLVw))SmJ%t5)PKqLr|U$JVG+b7=G%F9pA;q>z3;V;uzP6x z}u1Uqpgn?ZEbv8%80uw!Qst05kXmf>gN7Ur_}Xirb5ZGiCNIS)&#+ zNT|#m@UJl~Ewf$?_W#rj%0w;+CTJR$zhvoJQKN$g_pzKfry2)%a3q`Q?$GdoY$eA} z`#QsetGJdfS%-G)8_@dT2pfs+hRh^FBC&uRn$(Kur!w1X{C-$;wbM$}o&J*^bBJ~? zOlVuad&ANFf%fc0h9?j%W8RfoOPlm>-V4)(Rc+8=+k&rOzY6bkP-p!8SEe*bst2W^ zV+YFE&fKHWWsA93*7Y2c?F(|mqw${hs}T5!#PAJ4y!OZ4eLz$> zuDerKN=ty7UFz^#O4(#DQm?uZS}#F;1AIDpIq!f8GBPq$R~GUgKR(9UdsQ`TKS?4z z4s9qIF`>(IM~((6xaGLXomX3X^tBjzGPKTfU27jf?W$v!K^azaqu$gNmZsvzFvSrJ_hY!UysT`B(X=%Pc z-X*NK%gf8d`y{n}yGPlnB8fex7t>-k@+%b-v-kP7%)U!ekdxb44;JVU$3uoo$lD(W z2CQw*EHM;kNo~{+El84JB!hIdVOpp{VQd4BPNimKaB*;ea%jG-yIOhot{0@$)#E^X zc(_l!Zf@B#*r3P^udnRBXY+(QARvGUr@|W#9G|^?|4w`UYygsS9PO^h3<0!;eIOqCVn z)SMXH+eN>I3*tvBT`!h1YFWJUB(n4KOGPrn#-^uQf`pu$oIElzB4bS@H41{}2fBLL z{b5R$xB*cyN8qNT(^tkM`4(9PJ)&KeptCf3kk$j-}}_03P7Tmu}P zSqAWFeD&%=Oog0}7wUgvjsJMoBWcqHddXvt%*^S8q)Lm6g<~r-OkoCr6>bXTDr$Oq zkbCs>!+q7IiHWb#6@g2sxW2s!GKOsQN#H}}3l1Sec%?KmvnP^))z^C%-AQkNN7-Fp zJ%4UbEvp=|HZw{6wiqp$SG&eK+>w8-;XyjGq)OO|m6po$NaRMxw(F`_l>K)8*Y^iE1QJp?Xx0UNKxSrKb%8E;KNQTbigzA7_>Gql zMWLX8H-sSuLx}PIo?T@oxNBD`8Luvg%5Zvndy{0rUuT}QUo|r|)nWm{OG&(ruqG$x z_v*@S;DetxE|7SZz?xz4bwiU59{jgsX{A6SA^MOHqrxzJdLc12| z-oo=RH#0-b+oH`q)>oZaDjo(Z#4zr~n>Rk7Jzyz;63*M=4bFTl@a>jhwTCq|^OFMu z4Gn`Wz8yfx-6j_~wt4XdEG>8w(Or^q>4_f5asv{i%p;~xbe{KU>5(envCCwJ-0tq? zrelYl6dD=|4%fWQE((@K0y`U<&i5=C_r4j}lM-h7PJ!UQtN8=leR=7(kLBVej}z|h zwRTO6BP=UfuOnrHZJ9Hf53q1j5|III_lU)eY8<0|;PfCJ;bq27jn79-$t_|KTgnsu z04{eEjv&_|Bc)}ErA#`IJ#zB9D*pc-xd90QfiuEYc1>~MVlE7!+(UfM8fL9 zADnKPOUS|wK`Z#X^11-9tuocJe->cWBwKV$y01v_3*~{m5HHTH0eo`Zdw)HdsGt_9 zm$?Xo&h7j}caXZFtw9;RaBEPE?_EA)QrxmlI_kxGhbpy+c2hr#NS79%!n7U z8SLmT41wW~)oGHsga=^lKoNX6erL@?&@aMet*ttzrtx1htg65x6_u42OJ7_{OG`V? zw|fSSbs-E7Tc15Me;o1vMd;`+#@a`ZNW>11O^^-tU)}Qn)IUgmvRlb;?o@E_Plg|` zT(z9%7UGBpBaOriJ$+XyNO|PpHT!`ZeV$I+QC9+{0Z#bt$ETHp2hB}Qn;#dc%CB(5H$g6O+B5^$ z+HF@#UI;B$H%M5nZLCu+?AaO88rj`G1P=nB7OJf^g0Z*ixIVzI*3)CInSnKcqD(Xo84-Pf#g^5t8XEGjb6xLQwwc`d}WV|w5_g-N7>JgC5n zmQCg-q3W>gsPG@R=r3J_+WC)MAs|34dEBTf`jD1b@ES`=j^}AVx8M;}$@K}3f`=81 zqkp_v;+w$A*vDu8&SI42BIeTl}aJ6@4jth4jB^W)^c zx?Q{0Z`hFbI`s?ZXNj?E;I05z7(K>%(H; zWMd;QAw~J{0=I4FC?=?^%X&J`hZHyd&y702-aL22pqi@_*C^QPWKk^rg%QKFC-82P zrfY73JEJCP)L9)Gp6wq7ao-~r7D{9j_h?6c3tAE2+;n$$#}+{9x3HRN^5(Pb2j?3U zmHm^Px_{2kJF)IZd2LzaE8b_KC&_Uyp@Ficl>Gyc)k3N}IYTboT(LMg@~t(p;P|J% z!bfyH1j@Gq<{d71ozX^GPMGB0VFR_(Q^5vBISfz>&&O=u6DY8y8OCIwu(r-zuzz;#;AeE~+Kff|lN;6}asOj2+<&H4@OqEx*{IEyeY2UPamQCa?3@dm^!#xD+E{ES zNQ$E(^P^qcxcfU3%N#s(!{D~ujV@{LO-mR~y z8v9x9`{>v*dOW0&QATiIf@mX!tF58!j-MzDs7bGx-d0-e_#7>&-n_bB`RQjjt_GK` zgsM{~kowBuqSv*9$LLM2=f4WMJ!`7;@|$R6H%K3vWHh^QbMd};ZG7k1r_s@CQ@A$A zw!Lw1DBPbd5mwX$Z?+UsosL{RG84nWrk|MJ7t1X4_Rt#`>0@>7i3nvazBN%!fg*6~ zgPTS%)ad5}uK!zH3rI-B#e7K=;mk9&I^sY7j~8Is)$X37=x_RGWP*fayVXtWJgrX& z<6XCUNCMCoxNLMNyXq7*c-yT+xz~A@JUtpju&jjee*|}K-w2@Bt+elRlHW*Y)cC;7 zsXL?U4(hjmf7(u=anh)i2ZGTnH z*1EXu8b47qnO*}Ma#v3U_)Ga;4zB!>=gzTqfK@Y;+Hv9M+?-t3$Q}8O9DRnC%lD37 z|0wwHD26JDe7>hll&u6JUcak#mxN3F z&kC3iTZSb{;SrmlxQ(`P42dWh+nJRPy`H%P9_@;E`L}!5=evD58qanhhsu_K5^a3PbmgPRSn%gV^4#E_YbeK6epi|~M#gGkiZe-1g7=U9Rb z8$1ZHl-l-*SZ5(~I)m+govY%OWP`%--D3vB{zb*i@N!mIcxOC z4`ttBH4;SC9q^g`fgeFI54{)J!7}peP`#37zvqOx3P4Z(KitECPe{}&k_7AnrJt4Mf5arL)TkR#^uUz3HmRDE5FX6TS@v)`lTnsuW0yrE+71+UU7s^0Lw9rSoxOIU>Mqz~qt!AsS-^lP9fco0Smm>p3OxZnJRjS<{#z2m zh>J_R6nRGuN7O^T&?Ofjpex>;)8Dt4LALloxHw*AOiJ1*&e3$0Dmp4k{PD*XJ&f%E z7G>|jNT&|)_~&^oC`^(7Jx~_t(&R>zuNKC}M0)c@c5k@twQO((#NwPAl_$WL`_|n# zSzdo;N1k#poL*Wu_)=7+>%YF*9WvCgqE(fb6Jya+50_zEE49nz4^a6y9>OROQl$4? zCZXa&Vxsf(T3XtWKl3l?*?t(?`TNV~V|n=|EW^Rd#m_^L)Q#vt@h7Eel1ORk>5Q6J zw)?TMu>tVjZO4HMej|Efr;i*y97`f{oIG?W&B%dUXI-B~R?Hpix;tgG*pB%c8kEq= zye8A3wYRtT%X=d-bMxwa?I+Hbmfr2FoNNR@e0^6?Ei^ zdJW+|?2DC^a=MvVk%$j)m>jp8?1r@oF8!b3_^M-SPjiFCQE@|p`T7*vfuC}S0s5jp z!Z@`SCZYB2*De^`l$velppc=OpU8c2;?&Es&d%RaXt;l@nZuh%D?+LII zZijrr2UIq&TYzI6Y;0e?enselr*118eF(FdL}@WGF-WbbO}B3kogQo=9~@B|d<1p+ z!GqHv`M`lME(U%4e6zF^4&PT;A*f!$qBZZ_xq}l(Iq8i6>}QS;Nf1 z$7jHD;!pZuYozZ^wP8xs-k>XhhB<51eOewsUN9t$fn^BcL#`;gb!(@vOT^;F_3Kle z>^wc|5ZF-=@g7Rsdj;Qpg?iSFHoe-W!9T$Hia!6&7$izaJAP42ZTEA zg>$3JYfj9N;Z0aoZAQpc79M zd54ni&B*75fFMGL*}WDA3?@p6Q_usUl3`}Dg`9hOddPNoEHDd;UNE$q_!N`C=_MuI zHFww7(SZ-aKu=Ez><3=PxJg^x$GH!DScYfpZQvFK}3} zC*wmPN|(@I8V#t1Mo?ANy2lXcv1-60!AgWS6L6t$vLozv<~7=t0s5z=nn1)jYj5zhpq>e@80s0ZWf>kU%mRYCbRh=QD8!mZo5hH~Gy_4XiW zv;TMRNnK@Zc?b9kG7OMMCN zhVulct$c%3k-h8uAcu@#K9^_=1$N~NlFvaf{x&&D-ZCg#^BJhr53{tsevJSk$NP14 z>ANb)VQgy-ymq@k-Tyn9?RwOhc7y_9XGsy6dFz*^4Lfd)A|HbDm!WxxqQia@OJ-78 zqQERg{QE>786Dku;0GL=00yC<#4@u-D9OC*d|ug~FfPY}5|f6HX=I>bfC2p4e0JO;4U zG%FGrDbbcA97k3pr@@?7YFT~f?%gRUU|6x8;vE&o-$aV=y9(37kSLw$Y>Oyltf7ZJ zs=#!pHPXPIk3dHOm+_#N*6AciMMt9~x%=qR5&|#9-VPHEy}r_0FRPO$%grRet!qaG zTlY;G8^w?YPK!5O+9b*}HxQ?wQ$XcUW-va+(bDVg<`wa*UquidBM+3$9|aV22D;awmkf~QB;8veEY zq_GChk7Yi1uv@$us7}l?K{;A*hsOuSuR`;6%JcK{(H%EvN)be<*pL2oO6t%XT-}qI zmT~S}OH1OGC%R{7!4ITu=v|FNo3fbN*DPI#ZU4x8%r2Q{MsG+V+akkyKd;S=?x(;k zy}okC_c!+Uv=Q&wvu8!cclD2h zUds*G+rB9<-=@S%55HpU(3kUxaGS1j2S(s506OWFTZN9tU6e zWWD3s)n>As$+^(~Mv}}m9HRw~7~<^9o9k!>$%`TPBTEL(%2}3$V+ECR zg(chC4SSHp8ye2WIK95=uErhY@BSgv2%dB}SbC`MV4%@BDj+V-@X%!Vw=!)2`3`c~ zsh6H|rgVeTxO35?BQ}c`HW}bBJrb5ay05Qil^En^9duHM4+UWWC)VuTwd)=nL}-rm z_9pu(VNV1Gfl&n$v3AquD_L0<*4CcX5s}Q~InT{zCOiFgdl0AlbU&@#bnnrlE8|ND z@ToWz%}ZsG&Bh_q2;2uQlaOEtQ!|WQ$fCqeMR4~(oB*#4p$6_NGTB@j!SZ+5ZCT9j zIWg&)!vc0W9BeZ^hgY~R|4M=ifM_9wn=5yZ&lD%(3{Os)4O|%=vKDfwS%gq&7zdjyQ z@a`mzYbv^a-4V|U5Z2#Yb@Q(&(1w{BWx`hRr#!A76B@^R^o;f}}bP!x0qA&xz53*$?<{)CZn=laoJq8;%os)Z|!;Q-J7UVnTsR98|nOX}&kDz%->^ zyjusshtD96tgb>S;J&hjmk#jr+(+QeFY6J)q`UG|jxnmRj&@#uj*~+w6lH)80ZXen zlu1Ya4nU2l7tR7JGkcLD2&I+C1Lr*q^Ez$a-&zX;I7pV=05DewgFml9J**3wYwPXJ zx`>lSGP(urcs{ZCiq67(Lv%%nBe28KFm!b}06rE}Hxfl>C@1^?pR?e2h1;pAtoqRa z6>+kw&~6R zTbz$%Ru@`38aBo=?y{jO7v39NE^iMt?(XVKXoHS7r_Qpy*di-ziV1q@tIs7n}jb7>gBAsZpLHUYzEkG zt$rv|p??TX7P=V`YyLl`&O98;wrl$rk)g?4G$BN#kOrC%GDeyxNu{EZQa5#%Ar(rA z5=|nJQb`h}QV~iLWoRS{X+V=E-rrUC^KIX|J%7BO^ll;V>p1Qam(-dI_xe`0&asF0P?B;02#- zyo{i4D_XM2=QeJ=u(E1o^QgdI8)!5_=_Ku1j$<{$GzEno-5C;}ruXkBt!pTvWW~nC z!KDk`35h9Q7(+c?c)Y>VaG(L1n3fa)()e`^R?jt;-&JS5{b1wmgXvXmXv;2m&*9AR z@pMOwz{%-AuZ!JZ^XmUlr)q~JV}u51L+uZlJ1twidZ3chS4LQ!-y7o({ob2P7P@lf z3KL6kAW#v4YNU>iKk6i+2f*Xz_JR!;9tLNY?(ZO)QuL|p3_%XV%eCD|r9F7~?&W-D zNqj=~?}U?CUhpiBu4_G|r1U%TC#3u{eB?;R4-=-=zI}UzKKbq271z#`Mc?LiAbWlK z^yx*v`z0kp+HB}c(Tzi{ZIBsq;?;Sjg<&+_hnS7hz5AW~eBN@$_wTx{ z*?NYCnY7ef-IKGD!n#}6EMOt19$lSN41Nis!u?=JpWnb9=~%bjtfN6)Bl4aOw*5ySBrlC{l||vvu2%I<7x8`d8Q;q{QdH{<;X=@68LSnbb|Qda+5QA zmNLkivgp*0^K3TA78Dkq`CxzaDyM+6gWC;k64rz?$L#BMV4B9Pt7cZ&-*oj715gIS zBzD;T&6_u4twW}wJQL#SAxMG^XjY#;f6fuaNs+P8TfeooN0F9CZmLXi7%bm8ZM$(# zj<(ML#wrc9wZgfWaYq&`|aW|p3kCqp z#n9_vm80I29<|kV@%Hv!wk)}FLH`9i%^rjhi1_C5z@8R=cyj3sNKt5Vx_NGssias( zz(B0it}VFcPV$)Oo+tR@$S8BitV*Th*ZG0Trn}!$A9R$xZwsvO1iy97kynBAN z3c{hTtLAF^&VDyOb{+h;)NbaJZyTQUegD(g%c93Hoq1OKW~t8#KNT9KWG-1V%)B!9 ztgO0u(Y(q>pWcuDR{yTwcf|bn94wEU=R^qqP4Ak70u|~-{GY);_pmVTHgBck4`ud`VVPLP@ zAoI-rkgVV5CRu4kX5JgUV%FO%{rTr`8VTr+?3>NymhV|3ihA?H^*D`@2h7DdpQ3`P zQ*V1o#te}aw>b8hB*1_ES-*bUjikiH;Bd3{TvS5HaXH|J4?m?^R9kXpowWBu8E0+! z96CbHZB7+hL1*V!T#Bnkc~76-JHm1o-~Fyj!(E7}TQ{s{%%H3J0)ejnX@7kX-y>pk z57IJ+@d29PPd$ctuimtIGdrvHc6O{@4oM&VK~-Lo01`Fv^UJogny|s_*yJrLv7bSf zsfR5xj$r!hn3k)2T`gqJA`cI-f&Q(VG;KFtNLut20^7ZuBw%A}yIt%wW&$=RRr>XV zmGoJ00V0U@27%Phi&Bqg&6>qt(xVqIj?I+_Rz<>08=AclreKbvBa)|vC&T6~rEaE2 zvK+TEQ0k%I-8Su-^bpBlip`~q7weZCSib<+t;MS(73O?9`TF#A*EtxH$;5^XDdo@_ zjUO+_dva;z>vdkU8YGdGh%(H(hoSu6GH*r-By$|)QydrMO10n0%(o*4> zNkLry_1%XL$xf;KrX%)gV`#hVtgLXS@i^NsB89Hx%$fC-Cl1lQr{cNt<45~jy@x+a zO6=Ur%_U0nIt`Xd$%^^FdJqZ%qy?wWoawKkB1CLJO?;$3Q;p#%l9DvQkl;&(KeTts z*{9Z}wNqprT_2Ibjpoesdu(ZGiHJgQ{QP-`ju{4zDvFDx1f0VmQwj6{X~89tTmidue+;bX7Y7J0@7%9tX&o?*n(FdqZhIZ^}Wq<1n_a8iv5TN?EmQvmRDX}#Qb-a`IQw@u^A3k)~ z@_8};n8xzBK@i7#+?D(Fi}bS47(Q{^&9cXjU)Kv7>g(kd6lS@(jdUypRI!QSU^Qwm z!vOMqTb;|og;P2!wmykk*SgQ+jbU-D=A&oNRxMi=bL5Dto7*5cxx_PP4j($S2~%Kz ze$-0lTlc8h<`xz@+S-UG^9u`?Yz`HhR@nn>jzDkfEh*_7XXtU$bNkvG$K$_bB*@c= zuDLG7)5+5~5_6!Ja@}BP7@BN^8~(k#)~@|$M`I~V< z>a1Y_bF1(LAc7{(pO)6s$G=^&C`xmGbo7$dtB*2#qGT#4@R3UvcJcXGW*D&G#)IPG zn>Rx`ZfnY)Z5k%_RdMP35ef^!zI+qRmr&j^ab1I?K+@Ozz>N3iNTIZbo}`F zlZ4K;6RC2Xfx$W?g)n_Eko*y&A#}sk4m8BYV12|Z4<0aD!Ro7qK8b(9mN;5W&X1?z zJlbV!yXizJfW{Lhpjq$%q|oLF55f8KA3= zI7Ccn`82*4z4UI-T8Qs%z-jw!mMCB`h9J}l*{!TI(3g|WKrz>>QZ)Xj1rSp6tS2FW z^4+juhW36`wRpCX240dCNeE;xh@-i5Bm;`g$`+#r$EtPnh^J^4R;#4ypVoBitXC%S7+v{2DhT+CtH zgiQGSv1~VESz23xKy8$#_w0llH(nAfBzX>kF!mk#95vvAiCYV!3SQRm$poqae_nB*fB_sB;V#0ua7qu>=WfM@*#^b; z@6Vn&v;Il`JiK16wblCbcs$)szgqA+DU5P+`k-qwnUTKbd+TOied6rzc@Ta1>Iq4))TM5M5Qj_+9iySf=NXvvK9r}J+0fu2s2v=$qa`oS z6&DIOj(bqwHDeLP_|#i+;_3$a;;B1OUVb!4URBcG{ysG(Xn6UH7t<3QLvl(+MJj&C z>mlNm83I%TrUNo32XvO$ekgv#PLyynLp7AucgCl_25GI;&E^7&g9#PQi;pO{n7P(( z#9>$H6;V}%4{1eyegoXh;v;i&)A#^l0=|>{sQF>*D;_@<$MMr6%vOE1=m?h#F@e~c zwN{6#qYe~;0C;G}d$I(;OhNw2&FdU8$Z5QJgGyW`goK3bF5JH8Y~Ae2@^avE{p0YK zp?d=#xd>4WP*OqqHJx5u?xx)FEH)gEWy4B@5PkKySCy@zC_!BxHWY`5d~HSPvJ$1R zMjGxWH)B0KJghM%(XG1;zlZvn&I_nb+Mw%n9v4H>DXVFr#ekWEq)q;uG-c>e2>}}b z1);kQ)6LvmoBr8lSTtmkL4HAjefjd~n|$L2S;J~9#$B$&`pk|UmVl0sjm{5`m6_|R zeJ*SylZwiQ?%i8hJX~4%AdzX9~Q|g%VClMUbT^gvX7x_Ipe`UGuKH6_&j325r}sD?eaH z#isiLfM_DgE0XWRCWP(?BtUop6jjFU!{?;Q*vCmlaH_*2A~YrWh^rvaUE)p0PCiVSt>WLHGw)+{;sF=#| zlY4ewLgOi@t*>9QY*}}~Ex&0|i|tMcA*jHcb62LV^AW1+ANQzV?>9(o%f-7se$}TY zrE7FPdTHMAK|vxM7lBMa=Pw;?_2>ckr0gTh4!R8OJ;F7+?7;(v4mB~;p1pgcCF!wV z1d75Nl>t1I{Hwhadh89%bT*?jQ?n4^Uc7K2?pS6&QgnM;o9THIR0OFnw##j`_I7ZS zJl^A^An(k!ydNkIvL+ov!6>Nx<-*N6<|!5X>JA(^QgX%XGutx){Ee1OmI1?(@_wbwx!0&*_R=B(Cu>rBDc7u=43`fV< zEAkr`c|_Jvc3LDw+5t<^o3Nv9H?$H}Y*j_YRl45}%h!y{Q$ARXIcihf=1M9QXu)mR z8;*e-+Bx1a^%3+Wp_`nPB*#0qmhc>2Xn~|9}CQQ0XjP`daEfC6}$O z`^&HS`G6W{Iyt?1e0Sbp6&2$(15R94TsdjvE^(36^biuCaE_LkXz<%7o@KX)4}+i% z51A#TyLHL-xIXi45>JThuWV8xhrQu@`Pg9o4Ims@zb zMOKA+Htt{={xaKVh@krE)Ai!3%?@x}Su%Ll9%?ppx6?Z9!19}kA9r84;6t_+4v{RD z`hFYw%px4ukp9OIIQJ+c2!d4BIlD@s+Ek)h?Y`n+o z)>b_|ulBF`2u4`tyfU3Ld287`T8`lw8e;cP;<vjlu!N=`mPeDY8mZz;=SIA9g4&7F^qOiGJ^wW?faI51 zInebIe{H^>-}v%9zo<`;D$Ae$syCh!Vgs0+T-U8kche%bYABR3ymE0%t?QEQcFi&x z$4;LfHf+3+5y<;mK$qKyXmDjUbWU-x&@5Y28QM#zj7hxn4~ZD3S;;y~evj}#odbN@ zqP*!XAwC(F^oizKzbLG;XU(dfxMFCxbJc}=rlkt) z>wX>9`ko(jAej4499kB>>ZfPwT9(F!=HPJMvStPkjZuBO+LRxsEoY z*c!c7iMt+~k0JVJ!BJ3hneI1(rR?W%>gmDdgXed3ud#TT0AYwjNPDkKQmf#+}&Oo z%5)*K5d^~f_8(U~nMPjGFB%e)HcI@(*2WWN9CPpv8A$JGqoK-bkPN-$zx~#YojrH% zW`F++F9!A>IPfB+^vK{I+JoV`8=mZnikA>4a-R;3AS~dy8`9%n-y9=vVR9?Rkv56Halq!lJ1k4r zkN&ZvSMT0nny;Tf+bI<4yzSylQ#h#Iwe}>$_{5r_cVlwjZF94-Y9Mp@++V6cU_7!UI_d1$ zUIKIo^c{#Et+MbG3>)`Mp;%c_rgYWMU@_Bwe|0>(cdv&)*w5?;{TkXieD$;JeO2BD zvlQp=W=Q*n5$wc9@Lj{n<1#H(M?&#uR0L6n$4)i}w;119>B{hd(HA`(R_ z%UAf=+?+$FgOwpuB6_oVw21TOQ8_ECt3%g>b?@FCGDJyHk%7dC;dg+HR-nbbdl#m= z-=rIU{_GiT8;l9PI5f?%V=vNNE(!xTGZVck*f%&hm}+EV5(pOshNWb|#Zax#7pJ78 z+_(|o=qO{niu}Z#9Mc&rO`q<@Ir5W9r9zW&sQCP1D#r1No{%TJ)BP8%l-1MTDD>Kw zuBk9+(6Okf46gIjadPm>qRl9>KE;;zCbJ3B`_Ho0bmvZYu^C)9Vlt@Zp2)FFlfX1<(<}6km_@3>q2Q`*RA=Los$ED-Tp8U z3vAX@KV_b~cu{x*BaG0m02Y1NS;_?2;)ep%ybW|gNs6q`e4#DDP~P;hsY$YTZwN|s z8K2wRfxJtuwieyE4Iv>2bSRnBaB;AloN$j-;c|4}Cuv{Ox`w;7)ZA^-<$(hQSHkBJ zzpxe(k<6Y(ww;0}F-@J>DoAo(Bt z2`chSC$ zCYzEHdz?`;wY1uZPOQr!%sq3LW}FDoRl`__!?S3*b&AS!xITr%Z`4r=al^vQ)ME!D z0!Rnj&1TG+rSWpUhlpPp277D(yx>&T)cDh2z=+YyF*N&1YKX3JS|)E7TgZvg7}9+I z{;&)L4h`?s@*T6zbx3u4uJJQ+t6AE)gX~xI?0&nl5*@p2omQ*Gc-nPx3Wc6T55oyf zXMB{m2NN{iz%)&(3z~W`2IgejY5yp^o8O`El2iGsqC6q;6%9A?50g*a064g2zM+cl zq)A8jo_|2DtL`l?E6I`O`v~`LuS^3^PH4#Ac5Ce>+VX7^<>lpl!xp$R#DYE+Iez+d zc;E3&6W37RXD*UbyO#Vu`q#WD@y?kJhNo|#*unr6!~kT)cr==hsb9bBC<&cm!&rC! z+0o&hB_Sq8mJQGGC2*&5?S>7@WuPF4cU!Od5Xd{OO%OO|{-BF_o zWt04V?~V1irlBh|ED&ymtX%2fB;nI*xn4gWwwNhtNo&fKg|4fH=1csZu_IN@V+p4+ zaj<1m)iJ&m(*fv8xI8``dXK!9n-OjD+!khgFXG;%b?e#*CwNV)0E%W#Y`A}Wwp8Z5 zE!@(1&+br}riVdOy5Z(a4xTv$kNr_UNxp|N+&7UigX2lV05lVkqU)6+$L(&tE=yPX zOMW(}1KmKv&zW4q$EcqSM8I(%6gui9w$I@H)%I`Sm?9XVBb+<8uh)!yw@yTgHDwt8 z*tB=|Zk%pu+>l)D)9=yYt19`5=2MVYcz+E=Pk>=u;G4(g<)UgEAm*ROB=b?iCy&2NLr7wweuSFcW(Z{E$r3bIQ2orz37 zGmXM-a}rh#a7|&uX`leAf50V5K8C{SSI&@zyGiWp(g&^HU}69t&xL^qCGb`ALPtUl zxCaM&_paG;L&~GcIqnUUVm?N-qvH<^4?o200v?R!8wXaZB~&lfk8?!9q=_QO(m*mc zK!#3;14xYHUPZp{8g7+ZbgS!fo3_378%L&!N2m8SSihe22_Q1A2Gi_9$m=BVp`WXE zs|qI`NP^(#f_83U;t589$;R&FP^fG6`E*IEa-c!hDy$}}tF_b8XTE&!__1PvQg~=+ zHKpy5L($S5oKh$wuyzlxKIr;)^f-89HpKyt400P|&6h0iu0_L!!4i`Ugf50-$3m4r z(Fq+r8ygW5;&M)!Rz06bwg5OVnP*1D9b}wG#)7od>hVi!ZOu9@=m!s%EzBg5CVHJ5 zJL|*3M=3uS8e}Y*PlBOp43hIS6iyp4^VD-l3#a*$?h87PT|M)d8kh&j0i$!K9#rpmH zs@v|m6=InrJ!g(m)VC>J-}iDU$+nveHca|<&bSs9W{uMIuM(PDczZ}oJL_%@y4Cgl z(@wJl$JANV3k^yy5G1YNzMW4^ty}d9Ts>1>NonkdiTNpgmREpk8FtcaA!U6~b9dhQ z*LM|RtjKxk>3Wr$T$TEYMrDRj9jUwDZxj`rOo{v#eHF-AGMHPVLL?I^wjZ%5S|e;i zii*lAD!N@a{QcoJ3=gQX0|dkALFCC;5mgyn5ksH6x#a<4_7ui8uD6b@wM1WMF@irR zJ-g*iWx}fd0?wVdn>LPqO4shm?r@zlWAPZb0U@c=UR-VHe{i)@-D*|CDq3zW1u2=M z|F+#Yypa}!^89)9Hp>%jHUBKC=$rF~gq8mI;v}IEL%^1FJ)bQc!H*P%E)a=Y61-B4mg&pF-%|qE6T4Df2d9{6cr%2@} z0P}Lzy$(svJG$Lmn9_i$3O@pxTUw?dPf?X5`rXF)gow=@@x1Ki7|y&qjRCAQ6Psy! z1*(&#k4}o0(dl0meEoW7l%_2L)_eZ_<7#b-A`}G9*A{i`iPeeF?lxQ?8J*)bvHuRT zj`xsEHDl#Re$O{TB$<8acA?a5!GcK%?_`>~3V0GOagnd7+lhHeRCoTLHC|pbFkW*? z#lejn=`qetJhLr}ts%F8j=y;pGLnp9n_{IB&L$`C=xr({e2|*`-7-9+&gYahJ2O8& z-&@R-b4of8?V-jd*k0wyM+%<$B3l-?kABXX!o_6hVC4Z}D)REMwOZaS+f_r`=0}oC zkAz8nKa)#90OG>tnUUf+u1d@Lt_K?aom0vCjlZ{W`m?(|M6BnT0Ymtdxf;>4CK(Tf zUz#vsGgUoGZrl17NN^)NAMqEMqD`BUlr(hcVE=>tv-icsR5Ic7yLNK?m)B|jn1e4K z@wK5laQn!(Ge+W(PY$tI8?w7K*^Wl+O5FDDi4VfAO!F3fRabZOu8c+K3yc#z)g<~1 zG&WSTEh;QrKJixFl&)X5b*f3!kuAGvisK|-!)R!me<2}_-a2%7te8h zj>^nAdazW$O=nlp*1C(_8!AxU)^%&)x(yo?ZC~Ym_^>A5>0OM>T`Oc{!glw`le;Z> zmDMwsaGJdsCxn90Z>dWWPdi{2@g@_F4cjxcJXMRPe<@(g`fZtE~q%=1Rzj!{O z>tVmyloR@0`=W$bD0m@|*%*?!vo-OdCv`tEtF|_`EV5uzn2Q;aA<$DRyzF(G%Z+mA z{Rh3&;qK7R*OAu$(*opBt1|Bo|0UdDZfYF0ykkLKT!vQ+u%Rc{1lE5snjr#x z+sp1%K%HmeDyd-i9`|+`%w@OXqLFswPDcR)aCRe~zj#sl@-=u_=(t120op(~DPuZz z(GHEFLq`V%F(d3z5r5Hv(A;)2HaA2v5hdG&Uscz=>qG^udyVo_dz?SS-zqs<7tLNy`No*bv<;g-&ZmEGs?IgnTY1TBv#uNxX@p$Q48X8~7u zVu(EOpV!z`?2W9i?qiA_eCY}Wsn zx}C=Ish~c7baGMNdnVsnZ8>V1qQ{ytFHjsd2z3W=P1y6^8NCVCZeP{Dvi_bl4-|D| zd(*A0nVkwu5*(c)-cZgzpW*Fa=iOvy_tW%{@sl__yL;Werg`!LyU)IM9XcB2@~`{K zPtHg*57}Ro)TAKf+7s_j-x_bxf8?$cTvu>BF_DE&#h_clGGdk>`R>jWQ$t$@*$-&p z0qbdLplAhxbO}LLOE!}(v(k4BUKU(%WRp03*sh;pjy-q#WR~25@zcD#ljc~3Nh-<7i3&i3DWWV#rov4@@9$L4CfXAyVE54a~`=F#7 zv|)F*j9m78U)!D6nY|pktG>!NB<>bOpxL)WsGC5?43xJonl58b9W^sEqj@p8m&PwN zG@OMXLZY&--28`EtV`s$fbo#0`Sgc|3acO0)~Xs0W0il3Z&ReFU8{DRy2&y>#kC#< zY_tlhdFW5F5*)P|l9RJ&7s539c?k`;R}td5G`p~M@w)F zawd387Bm!DdEpe(Fu-vSHue?X(2|p*d~$))?Ab!9haddz9Rl1Z4EU(wTUexksh~Ui z_Vp_}(_g=R6Rzg+Z)tu}&Y@itO0bKHLi3)6!Vw7-B}GNrqeeBJH)BLJYt|!$-_L8O zeA&I?K&+-A0uTi2R--HF35C)C95gSls!_kcu5>_6S?`09EllK&?OQz}x0# zWd((NcfEhNYQW6;SjS(%w!6{z!c?bY&fCx!b4>gpH>wlWTJ$_>DG#ZwwZM6C(2n-9MdD4YiE0)oU0Yybij}M1=&y{6ynd^GCZ*E&FXB_!r_@KHUosm%P(XTZ~+MaXT)9@MXBz zOS(U;GEF!_N-qj9-d|ovO#ZqWcHt69Jl5ROL21Z(sf^R9sUiZejoSMa##cL7c{DI` z*HMt}(%uEqC+H1T-uH@TL8y)W8V(B}_fcgft|})19xPJeO9?U&ZU8|!BAA8RgHmuz zt_DWZJd~~Us&ZUbur3Rq#|8?6|y<`3KaOOF+=v0oJRj*1D z>PDPLX%O@$G-d)T(i-iXzTD1{${#x>T;R2OHH#^uvyyc-J-fbTf?ine>9H2__M@Ld zHy{6ZV8z7qpB?)4>nAB7VMcGAankV?Sa+DVc55H6hk($eB(5qNxu{{Sr)TSzFI>!- zqj!|6ltH$9&yK>oYrVW4mX*bNb~jukmbYcRY~*fDZY&cz-6Mz9iTwNsO|w2bLeO>G zoU$qDP;pdbOr&4^idF0~tz378&>nW+G?MBoni$&j7larEnWf%B7=-#}>YXv2LXcxI z&usD&6tSh(2U(4(ySTb2?#I86q)I58xCvY2T<_BWnB{q%9${DSR)9wUV7wg|&?_KK2E$8_Iz zfyU~czV5lTPc^R@T@J8@{0S4eCka!K$&mqC))Zzj#8Xrh1u~iFVCjg49w$TKwgazM(1E##VRa z7_s4!rnLF1wog!S2S|OGfkFAbd$zd`SLP3I*!^lF<70u|m@$gyE15$Zs+`Tt+&}y& zgKkeRuLRpgL^eR_R=hu_`B7CB%a=IWprq#9b2V0IRk2htUEk!K&m$~59cC_?ux`Oh z<zoqSPXi7d~PLg9s4>##p}X(DTQSXS=sf4OT@%_woIE-QAkPp(O#StE)SC z=Q|d40P<#oO4_0ZR5?hBNI9Fqc`^zhC80-@kJ@mEJHc{|m<&`_ZamajP|;>4D3EXe z{JG(=X~QOurdE~dFH}*?9-ThL)2-dRa`1R>fl%~iblBrc_kjklzD;UWPwcVx*EhxS z)9O^lilO07M$Wu!*`47@J)S7Z`Q7)Y_VL?pg#_V3()Q^SODv0`L;htL!pt0Tkw>qQ zcHKnf(nDw}>iJ(=TAn_7WY|k3d?J@bA7v>mWbwIO6Z;O*?kP%})J>o!Z`0$p#tQnfea6@21^adMPH9kTlCP-(1+^pc>k&5)Thv46>Cc8>pDkUr} zEJOrxVwRPU_oe*;FI>vVknYg~%?YV+k^CF9YO{tN=-SbOBL!P5eyd09>j^PQwPVxP zqB32H4#@VTlTYc|Id;isM~K*J8yi1CR=DEY1hTGBDU;w>Bp6+h)z448Qxb@XhPmXu zZf9CU+884vWr5ay9cwKalVYFCP( zGk{SP@|~-3nT!kC4vzxZ5Q12z2(2@P(t4xcKT&sp0=90&&1lR48+`Mp&`IupwI^;@ zpa}~ydd&H3n{f3mF-y@j{vBuJ+>=`^jc4gs=qZBe`0&sZkF`WP7Q| z^ixq0)vEh7G|iKP!j6H<$RRT4TrPGOw6422a-69Q#gU=>#C+{Nqw;o?Gz?}ujOY+j z{zz;rpoh^I%Qk(3Re|!&zQ*Two#6q1neN@c|60?;*|}fJR4d>%2m)x#jm3Oqzlee_ z6@h_bBh-Rb8RlOEpdu`we34=ymYGtg18iAMg!QB|=L3*1R8{k;s;Wqa<>hj(&&_0X z&ayDQ(dFaR@B=m$`tt;VHYX`xT(tujreoi?CD5AMF=K|$uYS%bo3`t*ZpIJ%_U#+0 zb>8Yr9?SQIs)u$IE;8^Ua4v!-hrsQ~nmD&CImgK$CNg_J-QI6%pWm7gsFKW=>sifaoQ~Wgo;Qt| z7QaU5y91Gp{S-Ot6YrX7Fgy8SxqWph z)XD7v;Z@PiVhh!s*mF3cD7?|cTr5^9`s^KPWz)zN>d` zT<#Zs^e>v3#q<1s_X zaZthGg5$(4hZnLrB}GEGO9z(B|K?V3W9%z(mYUD;P=C9=q7=fS*`CklH-R@R#+=<> z`iU|A=f-}qfZ&lQgQuH~D1Y=6S0Rn+q6d!qUBm@YW)0JZ*F5xacRvmT&e71&FrPMU z=lunW{%IT$(ZGHCW>A|s7)TRfpO#K5h||`|3R(8*^u5ed7|-rnbqcTfkb+ve7{NZ< z_-#VI`CE8YR5@p1>5nrL{Oiahd&U+weAMu5ueA!fjYb41iEv*XYkm|=qYle0KV|ot-Oara`tdsqI5apc#iEN0(YitHTy06-U8)OjTQr)qxO~qyZJP&^ zw|bpCckTm+waM)2;4m(w7wHmYRq$WG|Mi2Yb)YTJ@a;nE~}eBYujR0GFt@wEDiy za!<5i5_b<+dH=MEv{A1S+&Pc|(|hsjzP;<{L2%t@@-^OduIt)?=kOJSrEM-Mky+{V z*-gHdDW!8M*t)-?deIPz7#W+#3~`HRM?n4vib_l0JP9AZTuT&wjthCV-@w9BxOLp= z-{c{CiWsM=CZUjgPl}?>?-;avUPv)QQ+fI58$CL21Q6zM^coU7lNd{_`qNA-ohc(= zt-*W6Ff&PZHs^2M+6hqtf*d?>pnXaOxd--`-Qg=t> z#U+UGu3;Am8;nMXDUXqVyT|(VpGfJ9|LFLhRaXn|=mHZ^2YE2>@tpzG3T+WLzCVrQ z+Ne=*IzJh_kuu4U49&pwXbAZKaeRTsy~3m#T*8HHJwRjeVVCd`2}Go$_I@Tu>t;irhzW}F zNAe`uU*>K?jGe$aTw!p?Q||!ZfRYaKghL>E#?^Y=RCNA+O1L|Sn~C=jqKWB0@VxC; zC`Fnfs`C|JFNh#>b8{{!L$pCRj|%8+`x#V#FUsoftjgFx7N<;uJUd#yM(*K@Z5e*d@x zOO6!@Fq@y~Ydmmutc$ZV79RQ@LDVv69hVz%zQ#fuGDZa*<9D|t_HYU7tsHV=SvA%K z(a{&V0>a?_=p1bbBi77h*STHzCwkt^{Bx;d$~L<+4ULU$5*%@R%~{MER$^+Zlz{IC zg2>Y#q``GJZ<@MIW$qig=}=r;!YzDYB!fG?e@fZ2r_@jSHu@~!-*1-uNPEwpAGJAI z+WNA_b>IGncfpYibO#!(V_SY1hd_KlCetMtmL#NuY<6pDv06tbAan@9>g~PwTPR>q zBwQbW1bUG!^~8y7X1^0ZD#kkyS||%Rz_2dpt3V&b8;n(!&iKJd;mS-MkdCr7zI<7= zhVt(ZVX9w=+ACMDE?;&^L$+3KnWV9$iFK{`*Df^S{=Y?Ic~?>U_Te8ZR2_y15KSOFm=XyzsB8-9$y%Wwgm^H}P>2cnl*mH;uG*;!-*_~w{Txl1QO<5-isi=AMR zK+6-TPcM+c$ezNz>%fiUXGq^Bk$9JGU#TbBPh_{i(xkUcEG`&(_Vi9s=iu?3#Y`iw zqa2LT-L;Fuh$Bm*^Q=!~f9PAGR)aaUrB~xaf6@4E5_GnmpV}AM+T2>Gm(hQuoq~u? zMo8JDMRV#^bY?m`hqe#na_~K~uW@$)j9)*^1oH`T4c2kQ1$|bc#V+S@6OpEtb(fQ_ zzJkH$oHg0I|9g__w&js_sW3*5an+c7z=o}W6OP)XT0W!z>D8?#6&Mk-iGOLw2qqA{ z7BsrDC(1D{ymJQyn+VgL;I5$CXplQf?#1gGO&EN$XmYlysHl^N6!uio{_p7OmA&9` zw)M_I1bcqLRm;=gfDN6UTie@^krjnQg<})-7_Fzk9l4m8Dck5+0KaK$j5pp8KC#7O z#wH(6bvYB)zb}8?jzC7`v>8SR%%&XEQ3xk#Kr7D}aFs}}JoX0~Ur8I|q5Rt*rJ|Xo z84@=s-sGuS)2&`SOrGR&+tSi$dKrC2h6V~(z{E^hOX(I372UH}uNgIrr5MblU3pwt zDQW^+o0lhWVT>#-pyOm!T3moIF(d43It1CH=(B^SEG8m($AJS>Tfel-{WA(l8QCNn z!Lw&eVFtRzGdp)mtaRX*(dA^k!CtSa=OS-!M}W4)N--s_%d|N9eZctExVftHo#fnt z_YL$mH56hWm4O4FLscG~p5l}WMcuRe32gj6m3pIp@*h}&65-LK{kc01?ce_y>s!)` zPoEZ?G|nBTJiGG48`r;)?tL!*&ymU4lUH|pr-&-vN3_R$4ph_8ZLp`L)j>^-+}@yvbE&CqU%qhJZ_-0giZ;CotxeNaN{N^BcC!-?aXbTYOc^^C zf1MPj$LuAPH-E-4mj_(uaqiZMh|PZ=Yn%yw#8uefKAx%&n{@iL@%Zr_pBf!ltu#J5 zeV&n+>G7#Mz`{;9g-fQMtnDi+n@YG99Tr`B{VDr7HPL7DTJnOraz$&RF1E_;eizsy zQBCzsOr*(b8uy~mQ7l_`M(x;fr=-|fM@I9R$dEuzMo}+OzJsM#SdcYM9b*rk7u1N_ zZ}SNgCe#G?WPSu_-1pgmEy08Y5drOwW4^!f(LLwtxj{6<@`TqPjl8#b#Dk!2@&4i& znvJhC`_+i_HJ@s-Mwd39_0?P;2_zRY6PB@09Y0=6``pka@v!yQiT|aH6|#QJ#sDp7 zz=fLTed9WXhAp*LSKY6)cvofhG;1sKd}#_a|1d5%oz=)V8c0<3Q| zpWrQ1q$HI$P0z{9m2SX4E5tmoTc4YM;)4LrBN&upwkt-E^04r3{~Ylp@8+F5J9J0N zwwQD-t*dF5+dU=V+1#6CP(a$o;%hWzt~F*2RK|NOZyX9|Yst(VP< zDJxm9In9XwCVVx*KdhF!_44nZ|9M$`MCs@`8{`2Zsr|&`Su28d6H?9le!BDDSMyPA zCF9VSgl~)f^~o937|{7?u)7n3JRo1g!p35+P~C*$x}DRO{5{Kg`_;SwyX-bE)yMw? zD7OGEDk%og4QrUq%U{IC$Lr7+^sS#kBMyVg)f}3W4D+{|lUjVnTK{*c0iZAoAF;(u4AA8usMz zv_(v6i-*h$Arq}{G#I_&f~MipCy;TVD0YU zHvpj;N3Xj{`7vetO?N5(_dW${#kxyKOqw_`a1>kTVdJ_zyVWNMBqsJAhG$05rwW8~ zV57kY;~wtNO^CZt>TLVx8>()RbiJ|l=-!u^Cr`d6ev%wk#O({c=`P4)AjPQ<+y=;p zh|(H;*Y4zTUZjn${@VYZO>IOTg znQxZnS!?jWHzzO3a&O)Gi^WAno`)JDUwXl3cDKVeLQc4(A>2Uzv%C2H@#b5H7TJ2< zimVg)U+7tj(f!npI+>C}lIq&>Z5A%VS%U}0!51@K^>SdrUnt4$DrEe;?{$EFYtl(Zpfea_XBxNtEB*WtUAn%Bc+=cF-0vpsySrH z)F%h_4g4-0o3FEW>(+OCsSB;=Z0aM4qGUKI!$w=uxQ_W zwmQ0XgkGL(U?3-;+*6tI@3~}U6VzFiJ#2UVIR+j*gMg-7UhN*m{-#hGAwFoz))DD_ zKIr+2flV2>_ZCnVMjK_xphf6faBIMS2|I9tC==<}(aU@5aT=Pax6gjo&684tlepzN zfQ`(9k&;pIO7qR47IqsU^5>ODE)YYi^X~oooa9~TV@^T-=;;g@QcrHrIFmfUcDkjZ zGs|29&J<4@L)I0M7`Nzeh7wE>UTiIH_sVbwNOXpLgeAg`SB2u2tyO{$3T8Uv_7amh zLN0djd^0)0K!?AFr=eRA^n^etg%xz)7POy>Ggo8Ir3a5JT<>pBNE@)Sjcs&=HL`+^ zg__LZqNfZXxdf~XA9L$ZGOY;8L$ecP-SE|c2LbtnkmK~;UAs2Zk@$uNH^v%@GGv(A zJf5yKdy@k-0ek&)93#tTS`X~DO3M0qlzY%$ykw^;BNW;|;;Wqy6A5H5MK2Wrf>vgp zS(GHRW`l!!c6~E!W*Kgl`PYMoMYBR0mg!tj{}b=-KV(q&is=;>6o@MpIY75!Brg~1 zArpinM&=$Ieyo0xJ_-v9PuK{s_St88Ni1}?u9}FTZrT6Nr@27$zR5$+z-^`RQyv(J zRTYVe7Jcg>VBZwSC!LmB^;NSdh~cLCx;6hD&DJSmG=!!ynp#?mb3GJ-P+qsXxGB#L-&(2f6Q?aj< zo@hl8K$p+oLld{*rgyQD@PgQ|@Nl!0-{QM|NhnrN9=EDmb-s<%e&SA4?bg8mVzo9v zGJUn=Lr+8KUw|p?V8=NBO`D=FDCz%e5G1tdgp?5pte6zKVfE{^E|8k?FC9i`{0&-Z zvB2%lw0^_6C{n{4CY*;qxP;9JSfjYrR-GeWn_QOIdTwgFbMb#^!P4Z8EUO_MxE1am-q!VM ziEUHYg*?swVqS=!#MC+dL(=#5+>jR&*;7|ZN%6m*E{qKQA%VJT`rX27{@>3N3{jmb zNoL=n)MHoppQom=H;-z-d<*;acGd`Q-n%!K$+&{K?W@K|VqwU3%BXR8-20}QmAw>oV& z&qD8$kXo-Hy>eqbYNwVrZ<5o}dK#EvBeDAiRhi4as$RU<^FAr=o8qx`5x|GnGWAk_ z0zdEb5N|A#VNlr~kDSo{N{qAYJ?O%fz4{Q@p*ABnC+h z(KF(Q8yfv;_52Gf#z@lOM$HJsBMjd)CRoG9l-t`x@*oCqnX|gOXs11zQ;I;m!pez$ zcX%lY%3X?i0%1|i*qg^QqC=Ii6S|45YY2VUlD}YETd&h#pCp|hv;Gh|^)LEYEfxzg z5zIF;3ko$*0Q#O;4Lo+fUgrXYgHmt?-W&4LF(?wpoW4w3$FKLnwCt<%3B2U zf#jgH*;!@!#8IVbq}Vg~oo)AoYfh-!kVuoFRbn&at>LFuc{o8Qkx`hpQ1MX~|EAdl zQQ-HDy@k8CcPoh{!_O^DSMB?cyGvH{PJ-fg=0OjOK>gF~w2Zd-38*!gc7+woyu7^K zP66~X_zghW5ogRyVaW2#1`QgdZQ9TFs2I)vX}}GI9LmDi_&NTke>k?A3>;zFxq0cP zyHKfw#tT$4eE6Bn%+DOf{LgY(A<2E$PVE2ZY{?84Wn7+@1RWZ7;KC}smX9Bq>sU(q zZQguuM_F`C#`*K3G&RM&bPvWu+@K)ii%0LU(FQ!pNozfm`kRr|L=go~JFLFFtLjBu zS3zc1pI@WC=bpB{r)_9`@1%mRoQ-~VKimAri|=hXxiZH>Gh>?UQeCf02TsmXn48$& zW#+i;p-B-=jZYhMZ@d|ud?>m3NSskhRm;u~ao_xJEWGz=%ZK{h+?O9eZTQ8fn=aMmnX=FgDtyzBsM*c}QRgwiuK8mJ(!>JVNA*nB!b zke-o&PtMYx6&58S{rr16O39gsTA6ec!y-VWmYcv)^*;*qKdaA7{~kB43G%pp`O+Po zIRjiUdHWSfuHaXtFSe|(fwuZ%vueXA<<47Uy^;{a=XIWgrBp>Uj>`oRf3VUbCT3>A zHqw5NnP*FRF8XpH)x`q`YE^v*0fzc3E0w=EGsccC-O931yyl5msS9FCkJUvq0>!E| zy}LTM2>R(SHfR0dYE1U=YZot80BZ%*n(W$-fm@hViO*x6iSxtw+OMu_($Vb5{R9xz z_&w2=f7MM+ZY+5Bs7pINs&rr z+(IFhIifOE3Xw>tPzWUwX+%-USfWJueb(-IpZC7sUlC!(3>*o4A2k$7avWBW3_RvQW)sQ+31~7KcZ}e2s(YcQ^QOSct zRf27ImICv=FEFz-31om3$_9uk8@v=ObSRCMnpODZ4uq&RJ_*Z@W!E+gb|jqOhwJF5 zv&s0^doxz@bMo+PyKK73Zlk3o8*yp>Es~5G+1rY=MDFkR`5RbZt>G?F(zK3D-lpXDPilst2c-h`w4+rshfjjwVb0?NuY|O%-YL)f#h0~e>fO8h z0c!|^H>x`Gt4bIvW$`mt#uWRGyFQ`m_iwCE5WQvSYX}?P*~z!(0K<0mb^kP(sm*^k z48;i%853i3(_gn#Nnl_;Z4lP+Jo6bSF(&+vW<;cLa3u=A+`#m{;2AI~DM)hhjGW8jR%Z5f80j95UEuXQq+vmH0d( z@M3rHv_;M5H_`$yNL%g7)aVpd_Y@>BL&7BOVtb@FAO?aKXCi#-tc!k(lc5ax87LEc zv1d6ZDt3HEi3Y3<1C-I*w;Dh*;*KL~#vtW_3Cb#z*Eo_;Fv0;GQjOPnR{&7o*@GfV!)2gY0FWb!Oz_P zMD(l2^5xh5AD;nvP!7OtCBK{jMM|e3|LhNjVWLoJ*je1&gDd<=L3JV_oj^QN#U;)c zZEXZyPH^MJul9TBGU$sqjj5RPK_S4_vb0^ln1qBZ zfyP5g^wr8pfvxC|qp-=8=FD=FPSUN|KAL8f}N22y=fr zPQ}(wH*5KDdDlg$Ylna^7I#+Wd_yhidM*o!ZyXWxp|nRrH>}0|zXFa$8S2}9VP$1S zHx6GVFbnu%pIjL1@5fFtkFopFNkoanZU?FchOp10Ab3TrEWSLppW+K{g^df^fP~$N z&F%#1%;F$;H2qE1T0rXG=M$(+03^S7@ggaZy442>AifB@3sV0xJzCY6zt3?Io6XtO zR))`RH|G8S%mMVBP(($wt$u0o?~PTf+W}(7734ud!b+_H+C9}A8hHf4UvVbwqZ?@| z_I}t@>@Pz*C(R#4r@@vrT1GXpexJs%AEDT`VM9oxQx02gV&6Pag=~DCR$ru-*S&oE z<_)4QLDmcp4q|)=DiK^0%rxr%@Ie{5xoBi@Z!*6a-f+ICGYbDkY~p#pfw?)@NJzE= z|Mtx2C1Vf~ImR$C*1Vy$wWyGjMFB@D{ce#8b7TC$+AzsQz-w(Q;@zNq3FKZ~5_Y8= z@h(&q3O85YfBX710-)DIEV9?saWM#PYG}qDKM>+833Ttn6pa;DS-E9B<0+nSrUO^2N z`p=GkO@P~(h+Uj!x6*bj0s1k28QmR-6T=yTk#D!!zhE~ZqcSiR1BHos+Qce__vasW3-f>k^S2zTx#4aan$?YTE z?9^(=ZCnQ-5ydKHVVnZ9;gUU6P_yIcxnFX^f22}*iG}syC5rC)n+1=Bl22z3TPQHk z45LQ#$aJ$CP8~*&&HSp_O%x$<1|L|3!x>JD$wR8tLEK#Fkbxs<8|*XMRu7=z$4(MF zJ-lY@Gropwn%l4Kp;>ZqCJ>~(?@YTC*izWzq+%aZ@@ERyo^G~zb9{PU-_kKuk4Pni zugBECv$^@q_1*l}EnlC;r>0h;1aVy;A02=7dDA*2-~9nI&^R6?>yV*|RYulr=8^fO zqj?wNKc#TUb8zNKkTr5i1o7H5^{JeE?-mq5#CYkZi-$Yn#%)gFNjQaZzJr6C(liPj zX8_Tl(}B`-=4FoD08V;zl1Qy!A>vH>u#$f*3aVO!8N{!3{(M7mv#Z(kMe(jt-#kp_ zp?GK^rfpLT266ab4FmRxrb%aonHi>zs2}?L6f##6vj!t{{3sINy?+lhmfT%SZr{cL z1`x+MC;>|1Gz8>u#Lw>~iNFGa*y|aL`Uo5DRyjd*wg5vO*VZ<0DJ$G;ef5f+;QV~( zN@^<_Gglp(;U%gP9d~!HU_R&d?6ET}NiE^n(4-_Kr~Df)g8n0L()WG*`a3Hrk2Z50 z@+h=#+orapo(`Uq@7@-HrxoPDuOt04uv~-+xdpb4X-h99h)?Gyfu5ZeR@T?sfv%C2 zfyq%u6>|^KbksR3r*1~(dG?9Y^(anUKPR&NsnX3hK0^**f=a&Os4Ffo6vWHRBJ@8% z{M2ZO{Ftp!7aLj6*k;JxxN}E{5cCrF0fgzSzp5t7hW}}}&BK#tu;A#_3sOFVFBLP4 zrZ#=6nQVh|0`o0|x!%0MK;d|{M^DH2n(HC?Gk1pZd|R6U_AHbK^OB$mlQmBv2vzr| zu&ZJkE%ru8jd(aY2Y%Tr$jeKl(VnI#OR1@i<55Hp+ZMCYGjZh~Dsjus+&3Et0zx^g zvyC|-9-`I{USTC@r1ECh{6~?QP$se{rf`@x_Rb?WASZS{T6Z)H9oRB2=k_Qo+)+mI zCC6O(=MI%Ou(>DLCC;5~fiLf%tl`P+fV&$O`ww#G>=PDY4G$k1b{%K1Wy~Fcr`Egu2w> zOS-Yx6zW`#)CaPiY6I^XXAR% z9qPUt|3LKT+KH)WNtg(_AmSnXqs%MJ77JaS?6nqLH_5NB6EZ7GAXvCB(JTaZ zgL%aG#KaYuu<~l<%$n9mcbMfP7jNv@K)K^@PO|N2k2M`@=G$U0Zwcqe5cdr+!pa%u z9?+i$?N=t}7XjyrX9I$H_7wz(%eUJg541PLcKR+S7uT?*$CQ{rmK>=wgz(K(J)TZW zQQNy2QJLUNbE2mUKu8~j(kIjERp+Z^uUFc9Po``>G_%V|wtcl^K0pJ4zjYNAsOmh2 zS8L}sS5j@?ERE;*?y|=yIt#&gmA^)9gQfJ@wjxmfAx)Yx}Yp}Nej=8YxYpZihIxsLXq zR`dJC8^i71?>Wv`#&x3tr7uH8qOKm2;p(*cCq*?OCA+HWDl_UVn}w7$l~r6>tFvq~xGkg3L8Y*$c_j(|I#13qq zL;u6}2)4^{eaavlrUQa)$1>A?kV~M}e9_0~*mtzR`c);iPIjhKyuTzokoF9&iD> zNMS5mVe3(r*5tq8GXr-ZX}^-|0KjZzO^1`It+B^_l&o;39y4Uz8>7$^6rwlm=F$-K zb=?d1kkg{Q8v@26+L4z~`bbQ1OcGEz0gPMZJ21BYA}J0W04}MDU?A&XJZ7JQuA5gD z28f*S!4Raj5!Ed%=LSQSM&{5wP-qx#z}Ngw^v0sPriS9N+p{#hg2n00E>BMd3Yzl8 zSC8y7hD3RKvV=(2i*)t7ixQjf;=f+l1M>|1G(yL{yJo^dP3k$&6ems*j3EaxS(BE+U-;E3A5^0~B8S}P!F&zB@P9%E+<3JW`BUoH9h z37TypBRddyf525W(NR96_zI~?Ts6sB#w^NC za-{172n9#Ni4RcoSgI&*6HY=H&tyIzVi2WnRN{{zZ&>2tz$MJnHTh0OfHhO#2M*Sj zW4h2!&0T-tL&L3qk0Ak4-2&ZU0|xAvq3r|9@#+UM8sLV`gqZ@R0eVTO8$kk)y&yF2 z0KOqpblA0P7EBsG9NJw_;A_;>a?`V*WyJOB!X%?5AJO@seS3Aw_qEXnlZ!M+<-?AI} z@?|mVadGhw3~?F(B^SwcY3T&<42At>mPqEmYH3i-t5^ z2B0CzIj+>ZXBZ3BPB&AMd0U0}QD;8G=f;dsSY}~1K3xZC3+WHQv}3Ru;E=t6k>D(W ziyhYrK9bgrd{KsIhaj~9Z3XkYLqqER^Dr!I@Hdu>E4g#0c)w-dc*x{8J^wo~xGYUu z@`C0?q*^(;7Lf?2v{DWSehIkmCwxhi*o6fJGbjSld>}V$3Klnrk;vS=MT;<|_Y2S@ zEQ3I-f3#RYcu*eMZ`lGd@mu^DIv2RPxJo-U0(dO+^e7@C$Vn2@e&LFKAn5=qaiKaI8K=1$mC0 zZxsdwA5VX?co$AMLrIDQ0DN@Km?E1Ubbz}FfvIZgQ5vC_UT&WD)>UPaq z=5m*Aogaz;=y8W01poeYe*Fz6<^j?anC(KQQ?8Ygnw zeL;vwOA8Vv%b`Pt3ifXn0og`l(U1_P)~zWKu|s#(QdA}GaAXIQ%aY*XFxeDJ zFmO$fv-M5MWF*|i*47WJ9bSx?slh^$=Cx2>v*xnW?h_!y!2+hn#eJWe*f%jwxa$vm zh_PiBHuofXarmq7i-8gVO`TWVc;LeE(V^sDmS+u4Gfr7G_$yB zB%BQAQ>MWwu<-&NX|))Emy`1!{=K7Pq9{9*3M!8fvtVK)cP;4^RSQ~G;Il!q?4u($ z9^%1YZSLXmbFJ|i@MZ?VdUmaq-J=>3QByyP+AG8mrJ=#KmmP zFQoSTngUd^F600D(?DTaYpxGS1`Wrjlp0P}KUD zf)E(;@ET^kgbN2cSuG+j7^8)?;T5U#4?A&!d)d1F-d>gx90I4FMv7_rFcKlP8WX9F zjVdTFe+`Sv`1N<)k&*0OPSxg-Yj#G3GC!o9GzL?$Z-f?0@bt|L&m(-AfZZH}FweO@ zjeM{633{d&`PGT@98jNQ@CDyg0*NE66hbzrua@oj%pAwlOFG;2PK`nvES{qz@Nt8# zvmo>G9}&2VJfqezgr^;OYaB2nAh&AO)ylFKT>zvGzTpG3-A=Mi@nQbam+WvGP!tgW<=o7!@N!`&d~v`JDgqYG zAcmu_rij;F|HAQxRt4r28e|2f7@7=J_vYghvrqWgk-{^5XHFM~t?z!VUszVpj)-W- zFt5K570y%A8+u)eBNHUK)HU{>Fo*>gG=(k0`FY77?q&qu=*p)XiFpniRks)R+` zhPTZ7XenR^5{E#Ra{LSHj2}(B4ULTyhs5ho3$#->4(3(0ZYST9A;f2gd=&z3?07m* zf7>gG*vprBN{X^~B{(Pxv`Gh*Ft?ZuNaPrGm- zsU>6if87BxKo|YY-sh5Kt&4=%5vg-x#M4Qy?BrJT&>y(zKbUVi!f%HWldY(nAHA1r zJ>!CO7>y^PQwKB3J=(a+ClG^T-V7=MN({{jWFc z%_H@4b2-WSgTbn4NhXugpP+QoT*g_^%@YcnMMWN%(fNXZSzsDvy#NdfM_~6xXgL`S zSzKJ}tlV0R=qVg{%Rs__oD2b!g~Jll_I@vP?yvg^+@q}%blVsE@w=9hd&HtYFyHQ# z3{q>UO&pcM8Ggwef{1E@djn69vhsJtAR@0{;{CG4i_hamK%9%(@BI14VTp@XC6dKu zY|fF7We*>=Ke_%*@IZcJ=f3&tH;S$4!7p>~zxb}>O} zXxpQgo?$MJNj+#DE9WOrXX7WS?W8l}^UO zf%{4t^aQ!w<%E6Yzo$w2#te8EQK}HMN*fOp`<_RrXKrnBLY8W)!7){up|v1tBV9ue z3b_`mw@}fSoVxr8Vvo;z^9|PILu&TtU1Rk%3QnGrBME2Xn9n2ICfd4nqOPt;Y!B;< zT2d0rfDP7M_s5eP^AJoH`%A9;`aGFVBjRX053tvh4} z)sHE8%s&`g%|pd%W5O{69I3b$zYorzd$NX#_%OPehlgB?^CR>BUBm4goFHxNE7}UE z8Yb%r5o0q>4#1j%GqKntAn@2Q1EXq#MVbbZ9&h4l$0v2Z^$PIy`}aZUr}5DEfptVo zHA*%_YyrqX8I7(QPGfZQ5FK@o*N1r6;o3}own zE*0^C`zK1&Fqz0<=5~ES#>(0{4sjR|w=7;S8-z;L296<@>+{{dM(1LCC3h7 zaOchkSR>mDe-Qr7w-jHqIWRk*aW#Yg9P7Dgo}wgyz~U<-C^2M;a)p?8c~vM9GXP3q zr*P7T5f24^gnlNNIw+!=pFYI}Kt>|^UsU}_62!Fu3l8DDn5ZbpJL11lj1LWAcKtD| zx1&eNA(ohy5>@96S1TUUy)Uk!yhGSn1z2=#?fBhn&={a0!OjOK7^YS@Nb{drqTbZr zei#cA=rZ&}EL?7=G7zSNHp=yU>C1gkm@QrF=e5ZnhBoK@@z7A1NTWSZ{`2##H(Fj- zI}hj-B_t&95^PzfCMI`rj$nU;ix64}+zVN;(^LW!pT>I2T62>@ai7DyHTIe2C;JpdDSicuU#8L9wofz+J7%r9z`Yr&nWG0*ZrQkHtgCRf||GX=zvJVz6+LBM;*)nO+X1acX*cAYMw!tG|4~ z34zRl8%Q72Glab#8xly;&B9oto2@Q~lwq@9aV7|geZcUa2V)>@=*6eXsX-8h@+%S- zVi(xT+$Uej#HOXKxTx=Y^r$YP#6Ru`-RWIo9DpYPm`rOiI=O=Hr;RprK|Tu^F#lMh z{FYZKs?N^?wr*W6BLmA|TrOaMty`tKxm6{OOHM8&Z*#^)R$S4Xy;gyN_x!Z4>lNa# z4;8v)_jGjhHvr-lK!U1kYo!r|7xuKndkSAK=RBnc@{AZw#{WX*j3ZQ6tp;pize`xd z?LD!m>1Mw~MQ>jy-LT!rD8fpPb#gRrvB8g`w=m7LJ%KPbCeZ0zYV6N-UHwd%TgE0T zDSM*vM*$_8$`4;7Hvml<{Rwuc-;aBNaiMjTu7-&mUV}=Ft00t4V;_1wJN~7isp{*dF{UwVXzQ10oNLr3B;W7T(o4w*=|72oe_% z#ARRR>Iyj)KTU%v$11X91TL%V6%lvmfJ^|g41x}+{cUJ7$jk-$X@rSGKde3&Q(r); zJz7&V4?1HykJFzTa}TBQB4&|`3j&0NzCg-M((dTCwF^bzfhPU~Mm~~ayO)9iP^~Al zl#Q%mbD)MY2$8W5YEdBGGO&rxls8F1VnsCU!URsU9iII%M(ogZbWx$am>IBGYJd)pOcQFHH zN{`gAeW!^U>w`&2xS1CGYvf{+HjZ8qF%3hqCM>da0?t6%?cM@0t5EI|DJm-)?eeEd zNrlaiBY^<2UXRTYd8jYEehb0@av~9H6;9 zdOq06SO`c;fj<49iC)zQ=1DjJ>L@6-1cz&Uii>$FFJ{NYTU|3*q4dG$u3XqYwricPmbBU1nHE!D((dM?6_!3 z@v(WXqoEzM0?AOOf;T3tcI~>U%%gcg6IyU0dDYIQ@0z)|dw$-WjO;L-X=`*dbnL$^ z+czdV{ev7MC^%vW63%7w`teX&E6)}C&yI8TEiF8c!~KU1v5%8%%Fx736$lmO4LAm| zRWMl93?K)k5CIo10FF~L;`QlHDnTD%ja^(F6L_=(SiDt5?zes|45*(q@ z%`kpvF!`7#yrC=viC^4&yy2$+ARggPmfi2>a8^>u9rxd_+eyV4PhYT1`>IMmcr{SQ zpwbB5#fz`0a6ZrghRMc&ap`9-?X|sv zhQ^)C{syBOA_8wP*1ajyMK(u8+bi<#vrQ^+cY+7x5B_x_hRfGXS85nr+CxUThe& z1i`?8dGPV4E*<2zi}Y9YkiJC;{Y)REULz9&zkGjbkC(i?ve=R(H++##_TOh0r&L@V zr6hfQki)GjC`v)sA)EjQ4@oZC>jQ0)UlEE*7w+K2Ivh=#3jW zy^W(x&fZ1h3nebD0Lx(|*S)_2Uq0r1XGKmwAsnBW&x61VX?4<4Fgl9KOSwk7J=&8{ z$5KdCNqt}*OFanKc?6shENxqN?cydNiTw>lw7vans6=X=Zz1)R9F>X6hsPw%&vy3H zc}Ie#scGl-3k&$aTbWr8PBpq&;q=${_XEg!gBnT@kga)F&Gl-u(*HWwQIO$51LCC77&C`psAsr4el=%4k}6vrx8XpQ(BstbUa8N=m$Qs ziJbd-oI4OQIHF->)(6uMfTtrDCQ4vAAa>g&5!4rL+R>}8nx|3;i0L-(u&CMjG+eN{ zW;^pax8Mg~LUHgPxeQ;yB7XiXGX4$Xp=c<%Qdv!Qu2xjMh)fhKIo!dnJNwhdUWh;u z2Yi+ku-+IL{D>zHLX~*rQ$G3`Gya(ewwzJx=q&gz8^9nw zJ|7=1xd(Bhipb`~KU`OIxoB3BY%$yV)MYnZSm;7xAx`oHnosngUE1DIJ_vAwzn`v} zi8dkbWN`=xDqL&6Wy@BH-6loEME>@&n@BlEt5i~Q81vfD!b6BBeVonS3nY;AScApo z_4gkVQ#`gHFT|X|Q z8+;rc?f#J*FY^yYTf2o58e{qsxRnA*cVg_ubRR5X5`EymI6eXtazk=ih?<0Ht)k*#uR+f$gmr zQLT7Q7jJJQxgCwp0+7!_05ZkkG0cWpCB}vE4g&L0xtL}`#cU|~yrTn|9$ucF@fCQK z_jr46%96@^h>K+!gULuTrz2qzLR#Ax>Lutw<+ohz9~fxTC-vA2Tv*d1zTe3u>LJoP zWC!aodTU%0%>T2pYQ>U*j~Px>H&xtBJjp2D5iE%RaQlGeK~gNQ-b3j4`(-}T1TeJ` zMd0h#zhMwW@qiK+t$fmcT00N%(8$Tx52~F)z#I~@)??WQ$M3SbJk7{&$3RC z3=A6sn~Oqj_N0)ze)R92o#dg)sAng;Ub-2=<5euNPI#7Tc zz-<8mp+9C7024r?ii~<)uUADFOdg%paKcUHn}MH^FQy-;t0#5E>qwJW0VvNl6Flwj zXDTq}O%N7xmyxv730%y0GzTLPQGouJppcW1f>rUg=P!w63!c8#tfj>*L z4>Fj_!u@yAsc;kMP~%?EPfj)1$l4c^t7arW7iP%XNInF_<@}P5zM!%H0+LoB*l4Vl zj(XVKJdE~9&`4fMagTM)rm-q;>72YDm<tYu234e<(4Hu@2NwdWHPYH>LYbcOz`}mcEcK-Ys@9nImjc{;nHJ-r}OD7$rU# z;u};02^U-`R#mArDBzhALQCDUVEA~Gc!gVo$$7Ol?(zq5`v~((>&llWRLxE;AkK>G zt_oOz7FAAATT3fW-e&Kni&}@sSTlq~Eu?Q2B#%>q7PcAG?76dNyGW$%xj3i!69=0> z3wPK_hS$_}2)?URmYC=BO^B>L=?Sb2J`e#J8a7NJKuluH4^Cn2-(~7X)=-t;iJ&Kx;cUQXgo&?7_mWk1M501%M<39rFCa=APuPD|;2lF6)wNB?J_qpj=;1@aMy@S~X!|rtlg!Svc-+q6KX|agE-oNo zMaK6yf9C8C?5q^hIb>uF)&^zb7o5QGk6lqmwMEJ3rjW)dDg(BN5{bpDaqy5@Q9cFs zQ!y{^R#vXaHLw=cQ-eO|QU~1q7=eH|4tVk~tdw6^*d%!!wCwQR8avFP_WowzdNh!h z;D|!H?Sk)OT)GaMZ-)Td5sVdA7ttR6JzQ_{)5Plt#$kGd;TRflz(A7{IF#Dz8VFL_ zvw1&oXUq(2vxyRHnw5!q#-lzbrYVtn<}mvJ@E|NMvj1;*+P=E#k3O4AgKPNZ%a@1D zQ}ca&bs(WZX5H5{8wHJE_T(h|@H`;~*9g7)H>h|9U~)RkwW#cV(AK71-Z4))T8M z^D#G37Qe@A!CPUnuWiMO_>>L{!zL3Gbl^ZS@RXtwMKl}o`nBw9H!399hv95`QkpdT z2g?)=bJVZMf`i-;z#y#H6#CCC>cvKv=rmz;N&v*xV;K1B*BGDC_u+%Y&Nv;=p5-lP zb7b-510KvnYNF{&3G6fnaN+_s{APfC9CIUZg(1U`=Viz6tN<}(2tk>IE|~5y(kF;X zgz*)%b*G`#)c2t8dA>!EoFn+4!Z_Igt>V6Yd0wV1WJU6|dRI$jP!bZ?w!)=ExQTzk*+_IAK}i+Oo7VuGWyfZa5nRR_We4I88>Wbtd% z0P`jg*uyH8p%1Zkuq#9O3K{Y-blK>=%+1WQ<)ZWDAjd`dhI#;xDgZlEb91Z~$+&)u zpTG}i9;98?33#bcU+Tz`2uN5*xFJ2 zDQG8f6jN#bH`In;al`dbZG#s-zBC1^3y^P#4*9_9Zq~Gx$2zBn7rPPAEz#?PSA+EPfLwGyg=slcF~Fh-rn;a z00}>oDC_9;#LRG&eP0%7;$u-Yk1b&0ji%H#bCZg2d!4Sn&!4e7EL-bmuJhThR9{6R zlwN&fk-8lIz%rd1Y}?;xW4 zk*)a$-1>470i+*U`qDq3&!xU5CJkKX#KjnH5XDM19FcX-8EzS04sdUEx?ii<94=_i z{BCetWAKx2033TKOW%Bg63c+!tBjX!TITQi-}%j9H)Y_Vs&V^^yI?P$gpKdf8alf!sAoM^xUCT zQT?M(D9tVUu*iZTn%p^BzJk+Zw`>l<-KEdOb>fjisL)D=(pXH@xV?q!Bs}v(f`=Ag zH?kdx9>@vOzu8{2WTw>PK(Wz4$N67iXD7AodkoH|;(bw7Z*V+?CSzl<++dpA(z|YN zi{(Ogc7lOwsvrb#zhWN;y(Sjd)cZb zcpOvvMm~ax`oFKEP$9%(B4w1f_mmK=%1+?0{o=3IxBYu;Ebq*>TK89F>O3@Z2$PWk!?JK^!FtSqWWIgAzm2Z@BgjGe$PZ(mlsg#}g~76$sigE|k; z1`vv1z;>LA(3?9aw$`|4;b*l)0G)^UY$BMzQVQd6+E}>2M06I|?8kF7VG<+%Bi;J?H4<6aO8_taP&Ij(4!a?)(%%e#i?l{dfNSQ+ocVQd?;h=R^NN;@qF5bCi5@+9K*_I+MS1>S|x}gG4m3 zIFb5xqeGw5dMEK~9||_sIx-zmWF0;^Yh?3(zPG0TxZIyu%;)nv^W9|aZ%?n-6(%KT z9+RcrZKVB-Ln65^Ex_{!IdO>;=_p}qtyx-U?(uD*H4FLlGK{F`7f~0{pP+ZbQDCQ5 zzqkV>9wH_`bnD5WfCT*8w;Od1oQE2Y{$9jE#K|PgNr8!lL5S^y19A=a!Z!%XzE8(vgSV%+b36y7g&zZrc9s=!-9kJG$?2W{SzLXnZI&H9bnuzy|JM~FI#~^2Z<;6O*9jKAQD7l zhfzH!J#d460-Hu*f+dk}xfbCk_!~h$h0y5asfqf=jNlj&W?7!it|}oSd@PE5Y+L=Q zc&?CB^zAlWn5aa_nQ4RX_q5d@dIop=i6wu;sZ*+Z8Cx*Bx){635MsJ?T*vwvu`lXG zt8W2(fQY}nxXD;+DBwVpq60xq1;%$|WYvuM=7Dr8xrLmZ&VJf4Q}#*%Q>pW3nK#2H z6g1O*49-SP{b7$XEM17?HjxH^j5q|FxVCsy@M&oQ@Ed{q!sdwy76{e5wD#yKh-h#~ z07{0s0O6j1X;Hy<-`=wc0hp+9@yVf^#Za~ifHZ%JTfkih@Q2XBWA?h^E$2EoO~81N z?L3HEJXN5JBkMkbzHJ7c3>^a&C-`76N0>ckho1sLLb}TApC2tiFM-b>7|C#EC8%-i zkw0LERNt5UE*}~#ac@5>(LR<}NU}{!tHiyUw?N25w|wrm^7EgLP|89=j`r>s{*TSn zAocS<_>q!C`oV+Wp*|H_y=$FwExWKk=zmdu{>}FG*RQr}^$q<^xiA%)Iy{qiNPO#7T#)#=QF?NFz9YaWP z>G2E$=9XFWfI4&SW5^^p_3m@4XH?-R8&5BHoGn~mx!ug~^D84S%0l69BUq=T%|7SESKm*X^!#%JU zx(eO7KiF%1K^6mjL=T0cv=AyTq#FI@!jZm?l%G0a7-lbDA&PVsSRcwLthQwzpH!S0 zV5tkei$ojx^32mrh?co2o8fafbF92!L{=M2oLZAks7i1j=C5FO5lrn_ks*GRT%F~> ldAH}#!P{C^B2!LWfcn9qwEkuk<9;n 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

#LnDH69Q|GF?vb( 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�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 diff --git a/yellow-paper/docs/decentralization/p2p-network.md b/yellow-paper/docs/decentralization/p2p-network.md index 791fb1346d7..69e2206e7eb 100644 --- a/yellow-paper/docs/decentralization/p2p-network.md +++ b/yellow-paper/docs/decentralization/p2p-network.md @@ -1,12 +1,18 @@ # P2P Network - - ## Requirements for a P2P Network When a rollup is successfully published, the state transitions it produces are published along with it, making them publicly available. This broadcasted state does not depend on the Aztec network for its persistence or distribution. Transient data however, such as pending user transactions for inclusion in future rollups, does rely on the network for availability. It is important that the network provides a performant, permissionless and censorship resistant mechanism for the effective propagation of these transactions to all network participants. Without this, transactions may be disadvantaged and the throughput of the network will deteriorate. -Other data that may be transmitted over the network are the final rollup proofs to be submitted to the rollup contract, however the size and rate of these payloads should not make any meaningful impact on the bandwidth requirements. +We can derive the following broad requirements of the P2P network. + +1. Support a node count up to approximately 10000. +2. Enable new participants to join the network in a permissionless fashion. +3. Propagate user transactions quickly and efficiently, throughout the network. +4. Provide protection against DoS, eclipse and sybil attacks. +5. Support a throughput of at least 10 transactions per second. +6. Support transaction sizes of ~40Kb. +7. Minimise bandwidth requirements overall and on any given node. ### Network Participants @@ -17,41 +23,180 @@ For the purpose of this discussion, we define the 'Aztec Network' as the set of - Transaction Pool Nodes - responsible for maintaining a local representation of the pending transaction pool - Bootnodes - responsible for providing an entrypoint into the network for new participants -Sequencers and Provers will likely run their own transaction pools but it is important that the ability to do so is not limited to these participants. Anyone can operate a transaction pool, providing increased privacy and censorship resistance. - -Client PXEs will not interact directly with the network but instead via instances of the Aztec Node and it's JSON RPC interface. The Aztec Node in turn will publish user transactions to the network. - -### Network Topology and Transaction Submission - -The network will likely be based on the LibP2P specification. +These participants will likely operate an instance of the [Aztec Node](./actors.md) configured for their specific purpose. The Transaction Pool Node listed above is intended to describe a node with the minimum amount of functionality required to fulfill the needs of a PXE. Namely access to the global transaction pool and an up-to-date instance of the [state](../state/index.md). -#### Discovery +Anyone can operate an instance of the Aztec Node configured to serve their needs, providing increased privacy and censorship resistance. -When a node such as a sequencer joins the network for the first time it will need to contact a bootnode. This will be one of a hardcoded set of nodes whose sole purpose is to provide an initial set of peers to connect with. Once a node has made contact with and stored address data for a number of peers it should no longer need to contact the bootnodes, provided it's peers remain available. - -#### Gossip - -Transactions will need to be propagated throughout the network, to every participant. Due to the size of the transaction payloads it will be necessary to ensure that transaction propagation is performed as efficiently as possible taking steps to reduce the amount of redundant data transfer. - -#### Client Interactions - -Aztec Node instances will offer a JSON RPC interface for consumption by a user's PXE. Part of this API will facilitate transaction submission directly to the node which will then forward it to the network via the transaction pool. +Client PXEs will interact with instances of the Aztec Node via it's JSON RPC interface. ![P2P Network](./images/network.png) -### Network Bandwidth +### Transaction Size -Transactions are composed of several data elements and can vary in size. The transaction size is determined largely by the private kernel proof and whether the transaction deploys any public bytecode. A typical transaction that: emits a private note and an unencrypted log, makes a public call and contains a valid proof, would consume approximately 40Kb of data. A transaction that additionally deploys a contract would need to transmit the public bytecode on top of this. +[Transactions](../transactions/index.md) are composed of several data elements and can vary in size, determined largely by the private kernel proof and whether the transaction deploys any public bytecode. A typical transaction data footprint is shown in the following table. Any deployed contract bytecode would be in addition to this. | Element | Size | | -------------------------------------------- | ----- | | Public Inputs, Public Calls and Emitted Logs | ~8KB | | Private Kernel Proof | ~32KB | -If we take 2 values of transaction throughput of 10 and 100 transactions per second, we can arrive at average network bandwidth requirements of 400KB and 4000KB per second respectively. ### Sequencer-to-Prover Communication Proving is an out-of-protocol activity. The nature of the communication between sequencers and provers will depend entirely on the prover/s selected by the sequencer. Provers may choose to run their own Transaction Pool Node infrastructure so that they are prepared for generating proofs and don't need to receive this data out-of-band. -Although proving is an out-of-protocol activity, it may be necessary for the final rollup proof to be gossiped over the P2P network such that anyone can submit it to the rollup contract. +## LibP2P + +Aztec will build it's network on [LibP2P](https://docs.libp2p.io/) and the suite of technologies that it contains. LibP2P has demonstrated it's capabilities as the set of protocols employed by Ethereum's consensus layer. Clients of the network will need to use a subset of LibP2P's protocols. + +There will be 2 primary communication domains within the network: + +1. Node Discovery +2. Transaction Gossip + +### Node Discovery + +When new participants join the network for the first time, they will need to locate peers. Ethereum's [DiscV5](https://github.com/ethereum/devp2p/blob/master/discv5/discv5.md) is an adaptation of Kademlia, storing node records rather than content within its distributed hash table. From this, nodes are able to build what can be thought of as an address book of other participants. + +#### DiscV5 + +Whilst the DiscV5 specification is still under development, the protocol is currently in use by Ethereum's consensus layer with 100,000s of participants. Nodes maintain a DHT routing table of Ethereum Node Records (ENRs), periodically flushing nodes that are no longer responsive and searching for new nodes by requesting records from their neighbours. + +Neighbours in this sense are not necessarily in geographical proximity. Node distance is defined as the bitwise XOR of the nodes 32 bit IDs. + +``` +distance(Id1, Id2) = Id1 XOR Id2 +``` + +In some situations these distances are placed into buckets by taking the logarithmic distance. + +``` +log_distance(Id1, Id2) = log2(distance(Id1, Id2)) +``` + +In principle, an ENR is simply an arbitrary set of key/value pairs accompanied by a sequence number and signed by the author node's private key. In order to be included in and propagated around the DHT, the ENR must contain the node's dialable IP address and port. + +##### Transport + +The underlying transport for DiscV5 communication is UDP. Whilst UDP is not reliable and connectionless, it has much lower overhead than TCP or other similar protocols making it ideal for speculative communication with nodes over the discovery domain. It does mean that UDP communication is a requirement for nodes wishing to participate. + +##### Bootstrapping + +When a node wishes to join the network for the first time. It needs to locate at least 1 initial peer in order to 'discover' other nodes. This role is performed by known public 'bootnodes'. Bootnodes may not be full network participants, they may simply be entrypoints containing well populated routing tables for nodes to query. + +##### Topics + +Topics are part of the DiscV5 specification, though the spec is as yet unfinished and implementations do not yet exist. The intention of topics is for the Ethereum P2P network to efficiently support any number of applications under the same discovery scheme. To date, many other applications use Ethereum's discovery network but the only way to 'discover' other nodes for the same application is to query nodes at random and interrogate them. Topics will allow this to be done more efficiently with nodes being able to 'advertise' themselves as supporting specific applications across the network. + +##### DiscV5 on Aztec + +:::danger +The intention here is to use Ethereum's DiscV5 discovery network. This has not bees prototyped and is as yet untested. The alternative would be for Aztec nodes to form their own DiscV5 network, which would still work but wouldn't inherit the security proprties of Ethereum's. We need to more work to understand this. +::: + +Using Ethereum's DiscV5 network will have significant benefits for Aztec. Network security and resistance to censorship, sybil and eclipse attacks grows as the network gets larger. In the early days of the network, node discovery may be slow as the number of Aztec nodes will be small as a proportion of the network. This can be better understood with the deployment of testnets. Over time, as the network grows and we hopefully see the introduction of topics this node discovery process will improve. + +##### Aztec ENRs + +The node record for an Aztec node will contain the following key/value pairs. The network endpoints don't all need to be specified but nodes will require at least one ip address and port. The public key is required to verify the signature included with the node record. The id is the identity scheme with "v4" being that currently used by Ethereum. + + +| key | value | +| -------- | -------- | +| id | "v4" | +| secp256k1 | The node's public key | +| ip | ipv4 address | +| tcp | tcp port | +| ip6 | ipv6 address | +| tcp6 | tcp port for v6 address | +| aztec | The aztec chain id | +| eth | The ethereum chain id | + +### Transaction Gossip + +#### Transports + +LibP2P clients specify 1 or more types of transport for communicating with other nodes. Clients must specify at least the TCP transport for use within the Aztec Network. Clients may optionally specify other, more sophisticated transports but it is not guaranteed that other nodes will support them. + +Clients must accept connections on either IPV4, IPV6 or both. They must be able to dial both IPv4 and IPV6 addresses. + +Clients behind a NAT must be publically dialable and they must provide their publically dialable endpoint in their ENR. They must have their infrastructure configured to route traffic received at the dialable endpoint to the local listener. + +#### Multiplexing + +LibP2P supports the multiplexing of stream based transports such as TCP. There are 2 widely implemented multiplexing modules within LibP2P, [mplex](https://docs.libp2p.io/concepts/multiplex/mplex/) and the more sophisticated [yamux](https://docs.libp2p.io/concepts/multiplex/yamux/). Clients must be configured to support mplex and may choose to support yamux. + +#### Encryption handshake + +Communication between nodes within LibP2P is encrypted. This is important to protect individual nodes and the network at large from malicious actors. Establishing keys requires a secure handshake protocol. Client's must specify LibP2P's [noise](https://docs.libp2p.io/concepts/secure-comm/noise/) protocol for this purpose. + +#### GossipSub + +LibP2P's [GossipSub](https://docs.libp2p.io/concepts/pubsub/overview/) is a protocol that provides efficient propagation of transient messages to all participants of the gossip domain. Peers congregate around topics that they subscribe to and publish on the network. Each topic's network is further divided into 2 layers of peering. + +1. Full Message Peers - A sparsely connected network gossiping the complete contents of every message +2. Metadata Only Peers - A densely connected network gossiping only message metadata + +Peerings are bidirectional, meaning that for any two connected peers, both peers consider their connection to be full-message or both peers consider their connection to be metadata-only. + +Either peer can change the type of connection in either direction at any time. Peers periodically evaluate their peerings and attempt to balance the number of each type of peering to a configured range. The peering degree being the configured optimal number of full messages peers for each node. Generally speaking, a higher peering degree will result in faster message propagation to all peers at the expense of increased message duplication. + +These layers ensure that all messages are efficiently propagated throughout the network whilst significantly reducing redundant traffic and lowering bandwidth requirements. + +##### Peer Scoring + +To maintain the health of the network, peers are scored based on their behaviour. Peers found to misbehave are penalised on a sliding scale from a reluctance to convert them to full message peers to refusing to gossip with them altogether. + +##### Message Validation + +The gossipsub protocol requests message validation from the application. Messages deemed invalid are discarded and not propagated further. The application can specify whether the validation failure warrants the source peer being penalised for transmitting it. + +##### Message Cache + +Clients maintain a cache of recently seen messages from which other peers can request messages that they haven't received. Typically this would be used by metadata only peers who haven't received the complete message to do so. Messages are held in the cache for a configurable length of time, though this is usually just a few seconds. + +#### GossipSub on Aztec + +Aztec will use LibP2P's GossipSub protocol for transaction propagation. Nodes must support this protocol along with the v1.1 extensions and publish/subscribe to the topic `/aztec/{aztec-chainid}/tx/{message-version}`. The inclusion of `{message-version}` within the topic allows for the message specification to change and clients of the network will have to migrate to the new topic. We will aim to strike a balance between message propagation speed and lowering overall bandwidth requirements. Aztec block times will typically be 5-10 minutes so provided the network operates quickly enough for a user's transaction to be considered for inclusion in the 'next' block, the network can be optimised to reduce redundant gossiping. + +The table below contains some of the relevant configuration properties and their default values. These parameters can be validated on testnet but it is expected that for the Aztec network, clients would use similar values, perhaps reducing peering degree slightly to favour reduced bandwidth over message propagation latency. + + +| Parameter | Description | Value | +| -------- | -------- | -------- | +| D | The desired peering degree | 6 | +| D_low | The peering degree low watermark | 4 | +| D_high | The peering degree high watermark | 12 | +| heartbeat_interval | The time between heartbeats* | 1 second | +| mcache_len | The number of history windows before messages are ejected from cache | 5 | +| mcache_gossip | The number of history windows for messages to be gossiped | 3 | + +(*)Several things happen at the heartbeat interval: + +1. The nature of peerings are evaluated and changed if necessary +2. Message IDs are gossiped to a randomly selected set of metadata only peers +3. The message cache is advanced by a history window + +##### Aztec Message Validation + +Because Aztec transactions are significant in size, it is important to ensure that invalid messages are not propagated. + +All of the [transaction validity conditions](../transactions//validity.md) must be verified at the point a message is received and reported to the protocol. + +Peers sending messages that breach any of the validity conditions should be penalised for doing so using the peer scoring system within the protocol. For nullifier validations, a grace period should be applied such that transactions containing nullifiers within very recently published blocks do not warrant a penalty being applied. It is important however that clients don't join the gossip protocol until they are fully synched with the chain, otherwise they risk being punished for unknowingly publishing invalid transactions. + +#### Aztec Message Encoding + +The [transaction object](../transactions/index.md) contains a considerable amount of data, much of it in the format of variable length vectors of fixed 32 byte wide fields. We will encode this object using [SSZ](https://ethereum.org/developers/docs/data-structures-and-encoding/ssz), the encoding used by Ethereum's consensus layer. This format requires a pre-defined schema but encodes the payload such that it is very efficient to deserialise reducing the burden on clients to validate messages at the point of receipt. + +Messages may then be compressed using [Snappy](https://github.com/google/snappy). Much of the payload may be uncompressable due to the random nature of it. We will validate this during testing. Whilst Snappy's compression is not as good as other algorithms such as zip, it offers an order of magnitude greater performance. + +#### Synchronising With The Transaction Pool + +GossipSub does not include a mechanism for synchronising the global set of messages at a given time. It is designed as a system to gossip transient data and messages are removed from caches after only a few seconds. We won't provide an additonal protocol to perform an immediate synchronisation of the transaction pool via the P2P network. Whilst this might be desirable, we have the following rationale for not facilitating this. + +1. Aztec transactions are large, approximately 40Kb. Downloading the entire pool would require transferring in the order of 100s of MB of data. At best this is undesirable and at worst it represents a DoS vector. + +2. It is largely redundant. At the point at which a node joins the network, it is likely that production of a block is already underway and many of the transactions that would be downloaded will be removed as soon as that block is published. + +3. Clients will naturally synchronise the transaction pool by joining the gossiping network and waiting for 1 or 2 blocks. New transactions will be received into the client's local pool and old transactions unknown to the client will be removed as blocks are published. \ No newline at end of file