From 73f9600607cfdf35d88032706a04ff47430eb2ea Mon Sep 17 00:00:00 2001 From: Doug Branton Date: Wed, 8 May 2024 13:04:11 -0700 Subject: [PATCH 1/4] update readme --- README.md | 24 +++++++++++++++++++++++- nestedframe.png | Bin 0 -> 80633 bytes 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 nestedframe.png diff --git a/README.md b/README.md index b133d79..af7d4f0 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,27 @@ # nested-pandas -WORK IN PROGRESS: Efficient Pandas representation for nested associated datasets. +Efficient Pandas representation for nested associated datasets. + +Nested-Pandas extends the Pandas package with tooling and support for nested +dataframes packed into values of top-level dataframe columns. Pyarrow is used +intrinsically to aid in scalability and performance. + +![image](./nestedframe.png) + +Nested-Pandas is motivated by time-domain Astronomy use-cases, where we see +typically two levels of information, information about astronomical objects and +then an associated set of n measurements of those objects. Nested-Pandas offers +a performant and memory-efficient package for working with these types of datasets. + +Core advantages being: +* hierarchical column access +* efficient packing of nested information into inputs to custom user functions +* avoiding costly groupby operations + + + +This is a LINCC Frameworks project - find more information about LINCC Frameworks [here](https://lsstdiscoveryalliance.org/programs/lincc-frameworks/). + + [![Template](https://img.shields.io/badge/Template-LINCC%20Frameworks%20Python%20Project%20Template-brightgreen)](https://lincc-ppt.readthedocs.io/en/latest/) diff --git a/nestedframe.png b/nestedframe.png new file mode 100644 index 0000000000000000000000000000000000000000..7f3032ae74619dba252a45df070f2bbf1df0b225 GIT binary patch literal 80633 zcmd43WmH_v^5~7b6Wk?82pS~l;Dityf;$8VGB|^~y9aj*1a}4r?jGFT8QkGc&iTuE z?)&xqa9L~C^z7YIySln}SJ$rzQ&Nz@L?cCmfq}u4{UoUZ0|Vy+0|T3Zf&{%%;?nmS z1_o{2QbIyWRziYW$pQGy(%K9L=2KWw3bLB&AgS-(>Q$^#ysvNKMEVt>=w}qxHwWr! z;&`8!Xc!O(s%xA4t;D1d-XLm7z0uW!)k60VM^v_+Co)x5n(g(+Ol<3T9&Ba|BQjh?CUFo? z7o{$2NC*cW(a7M)NZLA0pggVzCyXg+SLAlb-IwR|SJP%6EJpP)RcCp$RT(A%bGzi{ zY@N%Fw;v>UDY}VC=>6!a;Zpy^J-23O5zw0}Uw|hp2`?B<7`3R;L$khBBqni;3Pmf% zdfN1X*DV!rAF6k}YZjEJM^YZ76>8~O#3@;%x{MV*$Z+9nBvZ1^q2F0Izv_yq9dqxY znC!~eatm`=^aa12lQYG=c)F+cIZJKwzF7QF=u@gOkX$)RD2X^=wKuXoPQ+>M`FU%* z`TS0#{R8i$gNJ=Xqfqikx-Yil{J-0wkR$es(S5`m z3y@nUZ9+Zum&rlC3eYel_JqmDLD-n@ja$S+J?Os|E+}Z2K%j8X)H>- znA?Ov3Cg?Rp&TzI%qx5+Gy!Zqzm^xg#m zz{F!gmmBhS%({qFeq`&H5S}}>W%v$%86}uPUloai-1o{DZ_o+CKZ_RT(3d2Yh^wLg zL{ks>E?u8*oA0h9Q8I4vJ}tZ`pLNo9AI6D0EkZw1KWsIWO@d0CFNZw`nC~&!y$>Yj zl14Z2v+u3qwEv+tg7*cs2*DA?5zi6Vk!U*R-nZBIPZfivxit(gWqPn)^h)ST)UW;q z!`3RVd0cX=V!ztX<}Go1a$VjEm_~G01XnCq^tqVFK#k6$%@c_C9Re7ogV4Yq5DAFr z2=eixddq|#iBb`$1Q$~kS(RFqJ@KVUY@aa_Pd$`D($)A4XH-+L=I3%ceR>gwc2y;% z2@N}C6b+nrIfO5nmf?XVovf*v*PlEgB#JSXvk;Hg+Hu?5Z4!VzWt zQr!yA&&@h+l0iR>%kX~2m)0onR1Fa%!JpFNFx@A9|4ddG6P`z^q@~8@OyLZ; zrmfEoE=--6ujAInJz@Hlz+3)V*;y${S?{NIg}ZdU3})fC^1iRbN=xM~x+htSDO!uQ zKWgu4c}ISxJ6p}lTrV8zA9`MkU%Owo9vX1(leUu{km~S|@?=@$@r?3x^Q2guPJ&DL zxzl-kBYjzj(EzJE0ssBG-|sZy2>swJYEFMvWY09R1vy?=jKmy9UKAs+aPtu)akPlTT*+MXcoub5=hxD&j)jklrt`;*Zl-e8n00zqOV*FGW6RN28n&+e zS=MLf9YgJdFHr$O@M}gf-Ci<3O+vTa`@i;ADvT-M6$=!LnM>@^@1gD4B1Pf$%?~sk z``e$pXze&G?$nkgST!8k&jFU-uS~6AwPKF&qz-4d`q*Z-whQ)qWqZURuh0#eRLaB@ zXEFBI4qc|E_z{gC`Ocvik$i}93%p-k>eJcuntG%gPOA6+vl(!4e#?Aya8-CG{g`|& zay@-3cU^W(cH??waJq))i;99aPdYI=`^|BI=XgVOuam%!$p4dAoS2!|xc_Lt+ux%! zcApFf8e;n|BX`4gd4m0wT=p9#7>yW=BD%d%`-4M*QbGVRRZ#;G7BL0VY~e!W_cTL- z-yLW2Ev7BBoU9^Mz8HUzAL-Z3p5L6$`gqhtU_ZCXvlVnMkJ=RYBM=^y?$T@T?8jR6 z{twMq5YTVXzYx9R{fzF9YRCv}p;U$xV?2j!wQNX2-^bjHcVnNp1ekT#pkCzl1zR5QLnI3~T{$~! z{L7Hg+q}>zDWV#un&fZJVXQrfn_0aT5w7nklM!UGKG7V&S*r44S|$pZ7S)`Yw((Q) z@9<|Q_q^w?Rx>NLudYhYE|06KYeu0Be;tiROQyYJjF z>@b=O1_pt<%A|Ou-b$H}HIr4o7(PlIU~i?X@H*SNEP~C^T_P-o+kR!~U=x(R*(1EQ zL0_1y%4~15dwisbaM5M9XDVHmU1nZdP$kt}tQ)qQOV%?n^RH>$S>3rN&?X>zCvv)b z(q7+hrKnfvVy3*4($>{>dwYLoRl-&AuC(v#o*H0{snS?JKQu5_%%)}T$>Ym(FMi_7tjqAXxVkkSc!jj$!T zGA<3!$SBBqZ|zH(%!9#)M(UBanckv+nDyPp#Y*Hp;txBr;!!3WAm9DlrPk)cQ|;EC z!+2C(s7~-$an_lY-poS@YsJY}5ClDwD1c4BecQG4SLTBEY0cx#w1#eFM$1ssB53qL zTO!1yfAA=JPSHicnRnT)ebQ-q=bPi)az$;U5HPdj#PM;8;wIC|b#LXQg~;p7+tt{0 z+-vpO519meRcOTRdF6V_R4ZzHks?crtVz{vUzye1At%liKEF*edydi zytr%$M!6!d34(zXsAO&rG?(4`{auQr*;roRJZ)d`9(Q{8<2jc#4>W2kN7ww@g(=6$ zsfZluGX}rH1Yvx9i|E^k9QX2(66R1ICiJrS;Yil6=mnJl^@%a-@Hb;Gs_&sKOkOfP zjwgk$p4lh4h&v7O7xb=y&{f3Fo12Ss_PCgfq{XK4~9X8e&azuk~whyeHYFr2mZg) zuo-_dim6J-%0jO}Y07^QFag@I8JPl&&DcOTc7Kb& z2!RBkNgFdKBWjS1wXLH7NSO9tIRv2Tzn9r*ssEM5$x4`3Q(lQ$0_b2y&CABY#z8BB zMompE13H+qbMo`^vvY8XyRaL=VS@ArT$y5kulKONtl-QZ$tm{_is7PK$id8lC9%^ zJr?u<+5g^Q=Vaqx|DU>{MTP!e6;QGSnOSQ|TG~L>18qZuo0CiEU-|z(cmB7<|0t>X zza@D;@c(DY|G4vimsEE&bC3YqK$~rkP(6#F z39rLx2yx1#7eIgf=RL#DNB|wezw-R|{{PJ=iUCh26YbPb?ieZf`gCdHdOXFUbWcpo^F2}U`D%K_`|)J2 zqV=?8$jA5Eg1AJ2_--SFYI(leWTl_VM>ph~`m?H~(sN85BPr5%UL^0Ad-K~_9bj|n z2lLruzs3FUm`Lpphb*qwe>7U}_p;aYod2j#HWe#opDKLZKxo!?9OYSwmt!MYsl|tC zVI6=0d1VU5B-<5mJ$)Y(@xCV1GQlQLA!=&W^0PMO!Hw$nP*dql0-&RJi9tG`9@ zM%O8Pc2mvYA)?AYhfol;Qq8iCyH&rixC4fNygyDyl&jBCNawX#*7rEs3C5y0OydKd z&T3n+-Y%GDH(O2@HH&yX47AnH>FY$#>3jToyj}CL`d$9hJTyk=BGhWRsd~w2T7HFp zFJlYx)N6FHJ&1?2YTr*$sK3-;vqEIx8K-)3+Ir?9pU&$XzNg>j-rVu}B3K-)HzSWB z3V;|q0q-Cir-O{yiB%P283K*V4iN#T+6~sFy{GE|*vS_qIi09a9+#thawVDvm?GE* zCvCT@jsuAM?&&rS_9sh?u3LRk5$;k79Lby}eUfGcf=bewmYcAg0)u?`ozB7C60jp`XdRVS8iMY%3{?|XisQI& z%5JosbAL2N{ymS??3cq~`B!*F1E{g!DrP!O$(}+@X>Q4(gLqsf=|jekJ$Cr`?-B%| z5U8*&Q2p9->xNdlo~;_=Y|^ed46{VQc)LRjqca$k(%{w+jwk8(pF@o>X02H08GHp}898P>G~IfvTdi9Top(RC||Pe2GM zQ@|NdTlnQ}t9M@eTdEoPh8aeahJlxQG)sAvzqP*7C)HwwC`!br{CSQi;{Dk;C5OS%+)mns=*^BV_$I*DGE0NAaxs z%Q3;$``z^MwyP<*(*e2|Ct&-1k&gR8;kCU>IsD(wvoD79kpVxx%yV0}o-~~LqqD_E zO|=|Vu*?m7jeNWB8Y6sTC+vP@7ee8p+1%#S`w#+19Lu$|$OiB-4>;VxHe)fJ<(brD zwENyR@17-T=*P7{h_Za{;v7IOy#yLg`;;&9!@y@T4+;HFrm*XTHOrbD60%Qzz8nXb-L857Q`h_wJpfzjOWX35R6Xr_HE16<-MS|1>L@85 z0)I7Z5Q0UqO`6(OTel2kDEy_Nt+E@{n6c-2vZ!9+)_%MADf4e9jgW;XQ?0@z3FxB^ zku!YxK|Ob)>dKMxfV%K7%-(^*YDrS_MrqMwGmLSYR6xv!IZ8J7)vqrXaF_zu`=Ie~ z6~}onD>Ft*dQE9Lnfv+n-E_y(#c&B$%Wq&;o)uLP%Vid50|3r`|2vup?}V}(1n0Fg*{!YyA> zTv0>ct#AYmnCusU7i|BVy=6ad)BfXW)0Tr$fDC*m%T$3ZzUz##OxSH87kduvs%u5ct*D&5$FQJY#jTatU@a$Q~t9LWQ6XNIbKE0&^wiJ??XzY2}L>9`osx5ZdfMa zcv6_yccS}FJ)yW*+DfDe=>&JoGk`4qLdC987|KuJSo^E%;6ZR4=F z1>-CgP2wOVb^)PWQF^qj=Iwa70+chV$pB-a%9C13*5h;n)%pTTH~|C= zU5t`P%HGndPB`@aQu60$wian>n7~GqOq=%m-7yb|yvM@8(>!Sx6-Ex<-}y$Y;#JUY z_e>g%z`;vLdqY1YHcf!Vzl}3jX#gnZCd20YK;2dxph`J$RA9oSk+{0$iPtc##3fyI zfkCE_$c#qe?E(3X{FXhO-rKI93h9I60%$9$`}7zbZAe`pBdqa27n1m-G=(~$75Hi4 zQ=DrEjk+?^Ovmjf>6H*J-SKW+?RSSiu8DcF9Bbx{Bf_F59J;!F$Fzp8iEk>Orb?9Q zPz8Z?lhW~H%8`5ZmF4{pS}fXaiy^S_t$(bpFNWC#sqzvLAd7qnKgl>F5pzQ4^>XJ2 zcu-;e5UMUW-$oC!wSEy|-G0AO--#kQ2%ENdz7+!q=Yx+4eJ5UO2yn)O2YKt%S15aj0>u_4!T=(Il1iG;STN$m_)y6nqFbDq zHJNplUtPbdeaD*+JkJ{X4m2aIPQlJ~|LR5VxUDz0&x&yPJzM&%hg0Wo??h_FHy ztttm6{~8CS`#w!v^#l_a5oAL%E^a&DR^pQlu6OaG2*;{Efb3RSjI z3#1EOipruSc@(RUtQ5aMfW!8Xi;V{>A}WfAcU{WI)j-@kNB!4t;)!i7JUI!7Q7%(lG6E2nN{}%n$Aqg9A9<(Yb-vJNNCY#ZtF!!M9&OIke7hAVx#(>1RBGiW_&N z-t7o3cB{UOj_-{hsS9I3WxuNnB2T*j-X*&!YN>@JT(m>t z3Vr&BrV3u)sFHw-U<^cyhg2Wn-p+v`8<@P!Ar(;p<4LR%#TGhQTT#s=q)&Zv6h^PB z32dI93f~J+IVW!vP&!|{7iTF^CGPAU8_SkdeH?JSnDVF7pPn;a-quzS@q=Yc(XnmL z$cU~I*?@~rL*J1Mx<2t-?Si4vjPFcN?`Xp7+#cEyPo$sx-5~|FW)$r3cKst;JAZ>x()*a-jev! zho_QpzTT%jovF0X{GY!>0Wd^XPuUTAK^?SfGbU_-U1(xylf^dSQHn5U z?@0dFu{0zuAtUD4sD)_J>ZktV+_#kM-ALRT-JIF_%e1~c3=* zR(iZ%o%a@JH&p}MPm2_@ch4IV*EL)3H(JAN zpXLm9M)~zC!PhMQ=6#Qg11ZaQz;=h>%DQ-~2}5rR=~d1Her@JqZHtvOJJ0)O^W`Xw zTl?12df=FLkO`RxDE9H9R&fQ13`j~Svj=$oIJn|@qHf!x=h`ISFt1{9-B(s=*Lqg# zqgGs_;Qe~7;p#SrzM_3pzL%`|y>#fX!2+*;PbAVnWK=q<10*qhGU zpJ!Q5cZeL=uppZ(>_SI`x^}rjx-a+rXQy)G!}e~P9p2C2d!L(g8Qa5|j*D%2uDzpi zfMWz}wWOGLcuX0C{&)uew6mpaGUQW!{hTa0?Zwt=uEa7{>uDA!yQ`SWYXGzT-2L{1 z&!CmHVRcr|W1;XAy54lLDsTS!J^f-8bl1L-r^vSkO}i*pxb$u#W{#!t4100hQ1IPE z%`Mjq|DtaBHQ)U?Zt^Or@WmCsua&bBeC!5sY@FYe13jk!9ZS4&Zv3NbYp(R14fD*kc8lGD>}(-;RGA1R$H>i~2Tx_iS3$Stav|G#h`$b|NzHt|w}$ zP2rUTOlcu{<6IGCt!PIoVYpV{#%rvC%5>~^)C=}<18kkJSG_b=Rc+hOa2r>H$##-b zR61xuFLwdA%gj+R18y%ltyE5A*73mO0^yK8ty$VV8lLsdkT85n6zEnCMx$tVa2TEY z?Jqt_CQ29Ugq}yQ7X9tc4SQB?sNw63c-^hGo~HIwD(s~9C~y&u{ovGl5P7)UCDBn+ zs0X}0sb-;PvnNdLz;_3?w5PZbY@z7ux&8S=Ue{LAFN^ndF>UJVm*Pg%F8GzV6@p>2 zp86+(7~a71q1wuR`}dShhfYY#uZAVDvEiYiW!5>pEzHQHj3Ic_egb$~`&?W*`$yi> zdq%35zLr~9}975q4*!^v)T` z`$PJRJwipP#R;)#62>gCe}*J3FIs5nCO0lU?p zG6)J7Zv5)RzS=q~!A|98?vLDv=c4fNp(|dN)_(ClGW{BH|qH#M3VDn(+)UGbGIT0$k z-CbOT_w#+vbmJOLZJR0+>3Zgz!R5vgwq8huFm&>(q&Cwzt4aWo@n)FReLIjL{R%-2 zsL#JGsHj;yoWh?AgmEr^^K!Kn6MbQ~nt}iMvw!(D`Y$O?q1tpt1V`zR%U+3qlwil9 zRgcHf3?l+}h2;8ygYs}TcfA>9aX0t}{Znl|!LM&P1s97cy*ulzob!(6Tar8`L*5eL z_}3{@lV1*axkg-^+PTYx$cSK~Y;B3<`Cy=pE#UTVG{8RhMo=WLP26(b9&g2bp08DG zj95N_2Zq{Ob%1cDL@`-1>5L9=R^4stKv_*|{UKr9kAa1!Z6;M7PkxW&j@$PWVkm*~ zoXZx97N>LB<}86#3ZR$rHESAnNKI@_b^MxAgYDd;u)roIDj>-DnjHT75`}9R*c0UI za=GCOb`M(5S^_$+JtW56=)HW{uX`yt>u?l2Y1i0p^X<41zT=3)XChno+i?B-$@@{y zCBZ5hBq)v1Dp7HN-%IAhQc?4rvhusYQ2%N~eH%7#)#a5Acid{L8W?RqhuJ>N1E_Zw zR(N=NFC$);;@sTX#3k(Db(qrKvo>P{PB-)YlN%nWB$tz4gD#(V(@g4 zlm*1*Vv?H<>2j?Z^?4Is| z%WAem`MRU%3$EfhKWqBnbE~k;f!B@%XlqEW<>TS{3Rb^HICwob(3tAxV&}?b4>d+q z5rP2@z>xJ*S{rYOfvk69{xZ9blqI%b{CnXS!qY1|RwMV4Nhtlix%n+N9Mkcc@Gp|;kHGl)vj z$$HHU>Z4RnNZ&4!$a~TG-Dp2}Q%1P%6%mNLWzC6#;4p4CR^<-h!z->|5G|R|x#za>s7tK}R2KU9i`O2xcJOK^^6SWY0=28}OE8|7)6t&!Q_@)*j zGZ{9ba6gP1(@n;Et6VSj9cZ`j^u zXpXiI=ojzVJG>1QIGfc$d)(}?^=roIHjanZ)z`e6K{Mju(}?>hoCD?p$7PT@l?<`6 z--KDetuX%1mT&Iu!%O4zPo9fU74*UU!NS~MR#%!=VT5YkOy&&Rk!a__gm7oSf?i7d z=|kd=8ik|kZT>9pNh&xj9XHj2!sfRNVDILlIL8AFHX)C|j&K=XZrXG4jl$V$#z{;nK}Yu1bDsWD$cGc0dGc~147=e7IVl^*hDr4KEYpDs=4L8d0cTR7QFu< zK|wd#QtxUwmp?l=gJlH)213{EM(W(hYZ7H0NK=OUnu?3j0~ zDMx%(Lq2Yq6IrEO(V+~A7iGo`Hg9xStKGFd`^9Td)$y98N~h7!-QBV55-~R0SSei}Y zx;_5Cg|feAR3e+YN!|P>WtQ*8pBcMGcYi>Q2P5Ab0SHR2QxX zKCxUZP@e1iIG~3tzclH%rhBCmbo6ieL5?*s4)o!gDq#ZqeaG7nM*qW z#l@qlu3Q(Ekw@=w04@xAK69F%uGT>I{p`-M7+x;TbMrzMzDYQKUL)h$L zucU#;kW-Rf;V_A1F&WA&msOLqndEYwzPrVvU+m6bwcXVDIy=_?)a{fSJ5e}$Iu17K zyZu?fO-~iMb*)>wvN$A&QV__G608|SouXW9I%@Dc)uj^K+UZi+Mx=n`(RB_h(UjK> z{j3Q?AHEVQi)1T&A=CjfvhQ_Lc~IEJa!Z}TuRUUN#s)>ROnC`^e6VFefOX&qYVMRx($ z0+}A}h4O>ZS(&6^+225<4>qFGrB|o6v@_nDcx~q5R%n$?J5pvBdYi42ATi3&VQ2cdxcpB3GDJO?nxi=0m|7NoGz_V^)CKbu*q^`s5xgx*^+c%W=VkkJX0$6k~X zpRo1^ZIt4y^Qf-dcnU#U!gS4_G23LS{Q^rkzHxuyxvpehloY}oS|dLfihOl%D8Bvh z`WB|E`up8v=pF&r3!(Oa4^QVb2<3zM7#93HilEz%{Y;F`fx2tXyz`%Uo3|4;Gili0 zW3dAs>xla#sN8;9T=_SEL|a`x>O{IlVvF|s7qbNVIF+MwCmMr=3Swg&F*2T9bzB?P z=5e)}+$V6D%T550pmxmwqEIUf8Q3j~ds5`CyaIaB+JbGEi3wYe@#NO?ha|TsT-RAQ zB9tf`lJC>!dHyT4Vd~v6;jMR3G<{SwyYh`s*^*YP#KJ>H2+unPJ=FAMA)_yi&T5kB zrE||a-j|-&!-@b|H|C2xqi)24s3K~M{(TP+6Kc)CewAMGL+f#Uqjmdw%o39BQISIG zW)Vn{(ZTS*ECs!l1*DJbrGf9%r_1*;d+i_7_`N;*BaQe~0Y42nnwq^7Ul}BjTq1GH zPli16?v0BlN*E$o?6WwN=*KV$p*av|&CKK&=fx>FDO0VYx^xxUWf6VM2o3B(>~btE zczb&ERo~{umeo@bHHMV!3F=_#P{tKfQOKE*U;mO2k_Oo#txc>^97kyfnp9dLZwvWX zt7Pl8d^9aJAOSIuOWfi3RrqH(4ykdP{>whbtAAFU-y|c?eEhyY_YPsdEpMG77ST_U z*bf+4pY&Dhm!Y2R#X>%g(yHo9#)-4hmV`DEB@4zzFX6aP>RXKQsd2c~vb@fvP!O$n zXh>+6N5-WJVr~!4JU2`kL*O0CrMSj6BIVj)UCF{>79}cYw%s8Kf3BENQy{gnf~QDO z2f#Z!lT6y1&T6b!;tk4V1OEYN!8%UjSEn}Znv=Em%X3edN=0@{XD145B|c@mmAl?1 zafG)Gb-60hSnWszH<{>8%~&gOltr7d45SPv%W9#8%=Ufpb||4oQAKfs-ozy;$EZ(Q zh-b%i+C!x}NKbAk+B-??=rFEc17&=ej{U1vTbvWm0swzY-R~-)00rZ=cEI9<(aOtI zcrs4Hvu-n>8aQY^=(6ev%zkuJnT#^OD-Zv-OW{67)koz!A~@e^?9ieK z%$MJu{xDrEPvi=qIR>51x#Bb2fqNIEt>=G0M5`Z?{Pv`+ezC@Q*=!F_ZW&Nrhi4o$ zHr5C+4r@zdm*g^9jpY_Aihuy5G;6E$kp{SiGOwd4*)n>ufYMw7R!_*OpqK5cObr>M zjBJ~;JHVShuncCj<8^Flve*q|FUD(hEAqbdjptbDoAnbnheA-yTHmt(m)i%d+w%7c!Cuv@%h zbfXQqhZ|S${by4K?x8xpscNAMaX$4SvMaf|s5kI^i3nPzPV;PXUfaFGt{5(4HVw^I z4pYpV$G=geXMfe(UVOYFNhL&G&+40_aAKsXbCYvud>Ae0-&uc%* zqm4~qoWetVnBQnEWLv&ytgRyP`|&Kq*6A|aqZu+KVq0pKY!7}$q`XhWh%KZl)%2qZ zq*=x6QonvmS3N54Xb&WSSmW4sEp=i!|9oYm4R14P)E5ETqu%;z+|g$@w&g?!Wya3Q zh>*MvrQ0TL?;BsUz>h%PNnW%@rfE!gh63 zA8XBh3N|w|-Y-jpHB!Ub?D?_I>J(Yakr7<&&*>-@GfWSD*e!bu4JjQq^HQaPx534w z{?cEBDT@6p_z=GjEgqY=%Fu$A~3Z6s9QoI(6>iK-1Yt z|J~R1bjDF&V5t|}wpKJPHF?Y1eX}jM$wQ6ok{d*X+ilfgG^d_;*7DMtg5N>G&aRW; z;37D9w5du*lf#X@V&gH_`YJ!^`f@k6mpU4Q|AhC`+hfE^8Q+w6^R3>ypyhW3$Y;^(bzB{*MyL4QeFOmE&3Rsi=-BNHJMqDq z{>b=GE1ot6ldT~|o?3Jfkyy?$$q&%&+9vSmYvy>r&D6!4SK85(O)xB<;90Xq=mq$4 zXv$T~35i`E>%wim?GYP?QT9n-Ou{XIRfS^?8s-Venp>v!Pgt3D#cxk))YPfBBs!6f z7|GRb?523H576)3GfBv$kyc>=zNIZ^AwyX!3i@#liZ58Hbj7~i?#3RL;rg&Vf2S9JzVxiw=yKG4jGaB6!Q_oS z19SE@rmZC32r&jOWUHp>iRx>nR$Y&IljBy)8g)~(}Hh@F2^Oamo`pbajv>| zz`ap2v5f-v#N2l#@TA_;bMCxZSM!w+xfWN@@6b7o9hfnSO8-RpeH>k|Dg9aIAYm3pD|k=qH4M6_bk3?R z?dq1V;7Nyhv7=uP-2mv11TS39UFUz9Q_EJTbc0olyrh&V^Z*YESF|geWj8h^L{IA+5^eG5VD&d1d8%JGm4;O3hpH3o^={=KFhxdaf$K`pC5h1?(Nq- zZpk9*G&}#iRlG~kTc$S11I&*Dl^PAdbNdvQiAShx%wBC-sK$uEd$gwIMw3_N=zx5$ z;pC}6O+QtoknG*{u*1)2a9TW=u)-x`NeIt|s`L$q)ry?T3a{j zG`YUy(`(W~a^uJunSi8-A=wSf0kkW7F4MXM3bQWPlzoleK5IQnS;yT56Y(p^T=|`g z5Actu4lOp$ZYA(rK3iqp#f?|Ta%UwA;8j)%)n0K8@4BIO>&}2$!}X_c1MRoKbKX&E zLH%jC?me}Y+2N%Fj$4<59a*h4yf(IA)Q-8YWP8uZDBz^+_Vdc$@6coYd_-MW@eQ=x zi*W##7l{16X%0$RZf_0&zW|HtZ3>?sWvx^{Ni!Zqi(k7T9rZJ6Ola)fPY7S>;CdBb zzAyN2;kMoJ{=R1bg^uMSjn%g0wt^Mm5Eu`#d? zkd}uSmP@hce(7_E&iMPJ@*WPQZcf8K155*IvMi&V7LHCiI1tfG;k~vk)!5zuC@URn|F1GXiaDz6R;@=bQ$p}q{s9~-x&9S&MNcO^^&gT7 z{f!F$znhuEfDilpU^IjOgT9*0++WO+%KI+&5lS5Eb_ZjwKsiNCoAF&SDCK8I<#iQj zHId_|1KN11G(Ix)zTY9b9r-ZcRH|CsLhx1d_n$HiMd09hWygyHu-M zdFSF#NyOz?^A<`#4m<}DYBLqbK#ZYC+i6*4d%OstmT4R$IdbFqcFpyy?KW%Kz+v!h zzBy+KG$yz@Df0AqP@KICMU1ki6`c*BoEwpCS0JiwbuXbKlv(sS-1=?5_+)YQ7ZeV| zXWShDLg`<(OEQ2r*aJ#1QaJuC64btly`%M)x~B4k_)SnYMZ#OXLW$Pax5=8~`;uow zWW}>((Ob@QdVA6_lqU^q-j6f=dQOv4{*UTkwcb{bLFw9~hugC=O1Ev?MrfS4^)I@s z=XL$ZHrwk)w%j1D>*sOnM3d%Gu0%+Sp6g1z63^}RoIxuTV-mA4E-g%cr>Oz-emd{( zN|)u9%q+iBTnWFrhRPrD-WY3OT8c<7kqtk0;zuliz3nRg5sDI0IED}RA50fV2$Au8 zPn3B11%+he$Ul2(VlsQ4Htz*i+(O|ha&N2E2ppAf)lA9FXvHNM_&nDSJ+NI^XngrL(f-5si@S8%7pZ8v{@DKges2Bn zTc}ceS`-1#YIlm~mE$PaIay`xuTZ!+aIRiAMkqx9?Qf8LK%%d2(FDE+cI9S>r82Za zbdCO8FWGzZIeAY&w&R5_{o+b<&_?trh)AEQ4@VEm1+P$eT}>uEC0?DjKV8Vp>6Bg(9;-gSZZ56)iuZT7Hy_n-Y|kjv!?1A>N>rgaWF_O{;AlGSXN*gUd}J zRXN#gdM!;`(SmG1Ut$9JH14>UF`>&Zu6-otlFo+Vv%hrEyIG+auER30<5{;-zfE!? z+hx&Gg^=fmW7h}Hz+J-5A2O6~1wt=SWYc-crcrNGDSR|W+Gep1SEx_W5FfVFaNPt- zgX31DzCwBPbQAKw{O~FGax8&2d{`kA&*jI69M0-G$~UK& zWhgWLv4iuDu-T;agorg>&+0Hn2RHns&eMVIZgmRQw3HsloO4hZzlWEAxqPS{Jqlg_ zFAyzNTKLCmt-WnVStKZ>5_~aKcX%2Dc)?ka>VQ(3O0?}YQ$A9U#!<@izR}tDb=C`9 zz$Z(ScPuQ9)(p1bb7^G0&NKZstw!i@T8gqozuWvkvFKY)JZQL<3&#dLI5ISwvJ>>`0Cc=gN;6 zpR_N9H0 z$g4q-cqwG2U$y+uE+3|YKQBtR#e43WhrN1K*U;OU7)66_pth*nmvb7eL0MfLAvDnM zT_hnW{ChefflVM$F>$HIfzdIo2v})*I4p~HIqne;3XKaX#@-5lBqmW5IuATHtOF(@ zpEM}~uIBP(uos*yD1@gdJE_Cqk+vApt!a@y^kAM(G46HNj*GDPqi+=Y%qV_n*nHOL z<>}Mh8_VpiVw&}-zMrHFa)eG5GMCeC-`ChXo@$7_*MoUBpxbxWGr&yk)@3Cwct(He zr{%w=A7-I*Pny7=cN7|gE5uZyXZ0{G+&*H%T=5H}%M-={zyTkf z$AoW}L(gii=rYwe6r(s_=ADh-(kadAd)TBp2qkIW*=fe5C^(0+lLUpJ8YkQ zypm`_GoHbT48HG+B4hl+?WE8Y0&rf0s!6!9w*5-}jCUPWhtED6@p9-^DI4V})gd@1G{v*}O19pnS7N7uzCHctpLrXzK6sz-=59m}Z3;la%02 zNm(eaCrtY$S?e1~X#mZS?dxGKg@YV80LnM8UB~lHI&n3V)vhE6HXyqm2tAQRPs}3| zFXMoX7@D(WT{}vT9JXRZ%3-i_P~-76mvGiRq1%?os1&A6MLL?~UVnR#yx;Zj zPK66YD=K0$kl{M!MKPqHMBKOnWkq^5U%Cm`4Yx?tmu@yX3UR|ak+m-d4vt77HFi5% z@RW(t0aTBZW3g$aur?uwC#uTiU_p!eITvbEL0~@yr}xuE^7!2eJQFyCChvI}A`Px% z_cP`tYp}NQN@3gnqV+cXo5IKgYZVIAx2c#gxHz+^C3sG~egB8Iw~UMG``5pR9=c)Z zlJ1a}Zlpy*Qb0gK8U`e#J0%2ZL_)f|TUxrign^+ExHsp2e&>9@cRalx>1)lfcCFca z?d$!yt`*~1UOQuW{PjZ_zDQ>Sk3d&6p#sDe^_$F{T@Xy7071N~&l|XReX$7{imZ_M zjHYnKaZaiydI^8|EWezH z!9M9FHRbROFJ-97g|g_rv^S}thbV6QCQ3nU|q>?}{KgyLS# z!~aqftXUScBS4B)Kt_Z1XZ}y+T`w%{jX$k?8UeYE^ea1#;GM!g8iiFYMJh%y$y9>g zK!3f>80)zDAR&K2JH8)<{{86E{<{}|YbJ5)ZP(p-Abo&m(nW7CL}r_2H*V_EP(s@#gBKk~N{u)`~HD(zXiZ z{l5AdEon{?!Kdgu1 zatIvho^vwSwRZ z@Cu-fw#2|bN2yICK_?0E7Xk^A|MyUthHRE&?CKX8!~5coU282aUiP4qX@H%4kr7r{ zp3Bu_)=l~D>8)P(ilJCo`1cS;&CD`1W4SvXY4V`Xt>^A_XM{d`JA3)t&C(A1{H!3t zQ@@*+_$!TYaKP!ax5x;aRl*EDxMe4rc zN|C(R7bBYgb*)iKP9X$AN!V~Vsv=Nb2{ktG`>Q8!*#zfum>i0(BO)h5#o!_WET4pM zD5pQ8)*>c~CJ(V&y<2YUUL5e5PI8B&lKYV_?1p%8%-iLxY1%-qp9gj8L#e6bo@q*` zZC*7LvKPfxl(wAHT;}W+oCkNJ{mjc)f6+qB!shr!MN*t1mO$Y}AAY7Y3KlyNKdO*3 zS~o5^12bD@S+0HY8Tij0MGT8Q?MQDoB>3Zozc#9jsAVGl&?Gc{s3}B{cM{A1FU-uZ zdGH*RLf{sgpu32XJ{eG$A#41;kAEr>N+EBVvGenb;=80=3b!SLn7!vMsdl%pK1PI0 z6+yV%po~b$s}#O-JV32Sxu!Jk3Xx*49~bb+C7qMfM58>wq_62+E5va|?*1k*C(zAo zH(vNMjoxqk*@`)>s-$)$hTq6FJANYswP8fILla5HL!cS_tEd5R^5q#p4t@d_TFM?4 ztX7O841raAZj>%E6uE0ev;Kg)%tP2ux};Q$x8nXsf^*SvlqFJJM2#4bL>D9;33CVp z#MqO?bi6Syty$3OX=vjM-iBr}g&=}l;NmFARDNK0_fODhFm46)(HiXak99?gKWGky zB%9^q!fsf^A_qG;(-L?R<61V3{4+zK8C^Q@S-vj8ab857FBL1Qq6a&QC+5OGy1G6E zPsEsoXuyPh_?e?}FLc*ksK~9GCL*qAaK~&UDanLTYtQOe0yS7QZe0Us!fDuL9*O^8 zl6BMYA)_E2%C7`r-)z*wkXLi%iq|_Ed-N(3(%yQ zjlT$-uZR+^8IB0Oy4Je&hc{T&a;+xWL0I_bxQAWewS*Mc;i)=diE$o74E$9GeU4bY zqZ9ZL;{hCck#$IS9pHeO=wK+kB{<>Yc9cpPz-q|>HIdzud)>2G|JrOqKB1u?|7AbJ z88*pJhIH92$m4i74Y9~fm}tr%@?Tly%67h~NVFIWZtZRiiD zyOKy#(I0&@#NJyL``!YU0Zygi73*gWmmq9aK-afG(@Wau(sw7R{sh{Nu9;$q&(;*lHW!UW+Py5)7$B zvhvwi2hPq)Q(8-EN!SFipzpCD?yfHKtJ<;B4 z&-IC43D}sfoTA~w5Jf95hzfV>!~Cp>g!`pT(q~dKN6hK+MWY^NNxk|>e=HqmHR^bk7t86jc{ZL? zSET*{#ocy1nSq;yH?{5T+BY@S5OHx+o9f_+;gBd&&sXg*0vy*E9PEqd+&OfQVR6Ay zL2IcNF@wXu@^P0tSbS^_Nd9!bxPARiv=oW;4U}!3BPTDubv&+a)*{EZt5UZYFmK3L zL`Yejp8u3j1=CyfkBojcMsZj^JN@>bEP$GvC;>?%J?_ZZiXOZG@Xb_x679Q#shAc} zi`ltiJ06XHKqxQdAzn|mLEb}xA8vO@ez*r$a{b+tz7jE;X$020w+(Qnx($!(^tOkah>@*E!{r_HCFOmr3Tp`p!9XDnP-3BJA@WPC+IHNGf;P~|X-OubMUWixc{p2Nz5it66?LOSr1QH#LB*k}@6VV3!9ZZxr z!`Gf4NG#NB)rBf^%7oX02+z(jSCQltIycF+x-~Zo@L)afc#s8eymeB3VK;Q|ZARO{ zngC0*lCBMsA_Di~k5Q{-o(BP45H7%kLuR$pneb!1F9guNtW{ z>cbcFUR2bHedLppuEa7$KI`EDLOhl*5CRObzR3=cDcUGRn$tq2d3K;9(i(fAAm(Ypzz6`04 z$)N&~hqN`uqLCP#c9CpHMcbgX1TMYqmdz^ndFyWmGS3JUnlXScU)O;7wBYt>8rRsy ze`N2rAj!ZZ7Z@Gu@GdxPKFI>>un()76?x|~C3_G1bnKNfSq$EJnZh>~oooqeg)@wc z0{(MWZhsaN1Bxv)3$PoPNV#Ds5xpITF-5oM_iz2SEI&<(wjqWPy&&gAn2KLZ z7-IAq@5|!A3_5Z&Y77xKj0?gn)5^mdPo{}&-g)*61O25e+qnV$!1S{}d)dZc>4cPt@c=KkX->w+?gx_=5HUMz57Bh>;9Ihznt zGGFCL)ahdMc{6MzbifL?IMU{wzYx4U2T7)L%kK&1&(4X*5 z-vGE_8BkgiJh(ZON>Z%uJ1%}`<>fbjb6*(btQnUvpLH%1Huk%}fFJt-ksrrD>sOrL z*w=n}^WkT$^MZPY@Pt~XxJY4CB=CAS{@iYkr@V!U$Os4>`M5KZ_N2M1QmF%xB+J0t z*}D6jd1#L)5Mko{lr&*s+~jt+^Q0bm^iz2V-Uen>AVJ?kABTKj&(Vm_ z0Gg`DdN3);R+`K?{$-&6N%DT<*-w*0t;L>wf(+VF;V!X(T;UPGUe*ds{c${N7C$yO z7NnSnn#j*YivoL|a<}^UuuJ~@J<)Gz)K=iCOw?v}jM33_m`=+wl{M~s{Rlt=w}I*f z44A@Gf(<~iKy0B_n16`m-X!q^4ktI<{&Ri8T2k5+~n{XT$t z{l(K9zqawX=@1ZGZI^+EI7ic1IBCy>OLyak0)RE8)V}|%a$whbG2@&cErePy1R%Mr zxy-f}yg1P(0sHMYI@ypti{hi}G0DdyxBW@^%yQwiJ?x6TwCP5`8lNXR5k04z<7F^2 zMzQV*g{4Pl6p8~n6z7vE2&|pZ1)ABE3W|^%ob@RY1}R z5hZ~OsNHtF%4(R;1`g0d4*2J)m;0PQedUMR?~cVfD}~(ICe;S*4P;?!LRv-kkrRq@ zJeaE?7gKv@KqgAKjrz9i$x3VYcPk(wNAa0;k~OTIaW^y3x1szVi&|W`7!Dkj z;ur$%t;dsz-0klUvscVe523oSbS8~%u@&=*KA|_!BucN%CIBEwys135;;mLdL|C-! z>f)z8Y@G_am&P_7$Sl6&On~GIVA)w{Ysh3<)-a? z?cJR48Sk_!L#4F(AviTQKaKMMofQDPSf9Y`RvX4TK7+!R5re=UVV-7mc7;Y5UM?JP zT}t}w{nj((+=RUFsv*iT!WBE>xydtiBy=c2-u76V+yRi+m)lb>-Do}P2LRj-TzBHG zy+EQr2i(RQjhC5iRTi-?USqMr2ECZ2pROVV={?sqL2K0Z=;Y3T? zB-DBVKdO8##WEV`8bad^n(P4pXvf~*&J+nE!8t7dR=$JyV!(4xQ-URkBq^(5KW8-Z zRBcjgJ3)cvpgrDvoguD?WDfO#7kY)z(>9-1 zFDYdPY#wA}f2NwC-^pb4yJdZ(pNRIK{A6_5O>tT`&d(Qn7IA4Db<*Yes`tj|YH;&C zV`=!C*-yh6LLW0$TO$e+@q$+E_0nb&WBdTh9eTIS?trc}U7|Pk6#R7dvg?@>6rkJB z#E;PXepYm0IH%)nFvN<}=e)-Na}wnKmY@)@SsRsn^e#HYmJ{I)#=5R4qwHlGTl4ch?UrmR&R-BF zS3~w9aB(cvTD6|#Fd6M?NZjNv`dlp+s88aSoz?)?Dpr%zwTGOeZtm?_zlhaS{*d?? za7RoTA0e~Oh!;XWVU4edjfvk3K%-_^SNr+$I#IJ}LofC>+2v=!zwf#{5w>GQb|4=6 z1t}_!F$$D2Px#L9R-y)p(P64X^B+MWn{nFKBqD?^?I)UPzgS1y7WJ`D9qd9#5Ew%P zq)tIO*I`{Zot9#!sEqUaW)g>0%bTw41z;C3BzJ3%;^k?k?*LKJtBy2$@rgTeg(Q=c z$fO{5H5;S78xGV5SdWt9`7&|l8C1X1?x&Czxym7>adTO@p%vevVjy@Mjk=~W?ldj? z8jDg`vyXfQcT5?LMIqGOXLQ10FG7*VXZlHm5~+{e|5CvxKsCv+d$r^e3+n*#x|nsR zpjfR`br&&+IlBOP&>Lc(^dM=&+|?r9by>ca#fxW`EeqSJlKzXqGF==5XqtM?nLIB+ z4ijRj0e{7vA2&dRGEu%)ToFh)^X-0qbWFee0+d|27N}(qr&D!TmhFne66!bcp1b)YKa`1X9Cp|516d?;_VQiSFSN=dx#8y4 zx48C*T-;f8HWW#4FK7LdwhHj1ezu#`+gT{OwT3{c6(Wt`z+F47&G!yVGzttwSdrz* zN5CL&oBy?2E)BPf^S040z9T{$`~`1*ubBB0w=x1h*N4~i_=28fceLKJ;`|+0Mi}HJ{_adm^><@X{E{9>_!I%0PQLk)} zH?i{4urbnocaHP$<9X$LdM%1-q(^Iq$j%zNjXw4wh**isIw^_prSm}v8oLeS9S&M0 zyUJU=E}UT=h1?S&_PXK^^c>&lGHVEG`Bd;T{d)C6r1n)p!$^(1P6k z91-z53XhL>3*AWi&qLUb!a&ad0lkI(EQRdvO@+^Y)y)* zM1pIX>=g_M5V#DyI7vmPq(W7-T!%sRDlftu0cdFn*yvCV&|}5s!SQL!vUBE15az}$-!PEQ zrr+Zon)}f~7z|pEb&3Xs*74e;GWdV)Y*ufFbV*<_QRI$S%lNdoS!a5Fr?f3xQ6!>D z7m9(1$}y~62n@*3*xIvdY`(EiR7fdSGSImNtvP{2g0Q4Lkxof}g&|9kD*Jm|0MSXd zmVwc1-iS079A+#QQa@gH4|K+Dke3s5K$1q^N1PVIgWKk%I+!6{c3Wg(D{n87neEF| z3$RTvgb#k?ZB_1}39=R-qCO9yz-Nwf6;HN%Eg<@3n#LLZHsm2*d4x1pqK`YBI~QaZ zk$v*<0R=mXOx%YK?`NkHqJ}t)PhTV{$h9Lf6e4TKHN;M0Oc{b1i0{v9?wWM+lz9njqRqz_0IPs3aOLl(bu_|1cQJ%^ zuEELZ9kBl3*PZ9kQDq^sV+b9SbzV<628f%D;-cbM^hn8r@s8h8uB&sGniB7}uohyV zaEFd@7oYbN8A_(UdBM0I$jaV#?IpQFO^0E#TFOY5{}ePP&M=OQDBJya-KFHrC>k*{ zK&lVv=ZZ@ZiEE$}AzF*xH1_HNqfd4*LLmOOj14)t{CYmR9@Vfk8dZMbhR6~C>**Z? zTlx%hMxM%b1{mG zp}!&&s6rquM5Oa^CGZNxP8u_wK5(9XMa4yA3hCKXphU9^BeEVR5M{$wDd?{8-PkTT zAf}|VBcCWyKBqa6Y*EOh72|D5%%=A#JT;zlVXL-t=cwZQ#9?iU$An5F^EHFe-Acu1 z`=~1a9T?#O#zyH4>+GThH(!5LgX78s`*)Zz_b`)!`l6kb)X}ZLl2~29B){P)#q+?f zY5%)Sm^1G#ng)$Oey9w6KduFKIo1%F91r`zyWnSRHnVt5`nvWU##1)oq{XPJ5+<>v;DE6hNZC_ZKxa7YJwzN6rn%Xh_`T9 z1?=AGzI*TIa`%HTd)g@p2=70qIg^K$`Pg6(9O{g8m+>htzW13yl29D0QrO}uELaMn z`x{3BOF&c>|1lOxqngtVU6h#xu9`Dp{JfJP*E!a)dB&*-yX!mem4&(%AJPr6Kh4E4 z&%5BE=6NABh~N`tPqLa>L_q|b~K#oUHi z3&E9i{=5e@FFXmrC*yhfIjp)8TXWa-9>L1$$iHbf1}tgYgjI zGS{II5-p|%yDXp?K4gN6Cu0nwp(aRJP(={bIPc$)qVvv74(@+@jz5DvHgzpnn&^&0t);}`)#402 z;(;jNZM2KGSvZvvGw=kpqQi)6Azy)L4Ro&x6<|=%6N;2Vc~*$aREzKSpJvD^ zaks4e$(Y+_EFO{4?+PrHG{;UL2ba+=NWPc=mK%>2>evmoVpi2pI9)@Lt1zcbFa@oB zlbuV{2~P00EsFJ!UOwD{;qO=$`p0)uF4Q}4uSoBp;AQ5$7%RYCf}Mv?DAS9AoHP~6 z&=CXh=&7}$#4qA_B%JSIa$QMu+1@~j!wWLBW@mSva|FV*`;zxkX@rKfLP0IKK?HO* zJKz;e1dK?L98C=A%8NWs1z{+27TP)xe~4&xJ1LW6?eBohlEb;v8UNvV-Km`v_tvHv zkNJ6}`nXQcQijY}>G7v=%I3F04A<-S5=83q{`F`2G?R2|2nqXxychxX>b&{rbY1)q zrmqtCGnixR@=2uT4Nu$#hV@fQ52PUB{nB)a8)eR{a~P6e%D8F4i7Cx{tMop-uYLe= zCs!m)*`774SgQrV~%8tjvWy~ln9oYxa$^8AYqw-wVEOGvnW#Pm1nQ zW7l&SCU?e{MkwvF@h7x5<3<}3m~m`0G^;sq1>^k6SJ zuDad5V)KM(w<(lwv0_$W@h7+;7sVS(pR9)dma$sLtZZ}9^hZgKHUBEeOupNCmqxmZ ziAiS?`zd%vW6`TXcgLdvpR2X-*{yos%=#Wm#q{Zos<~4dsp|xq<4tOjUnlLZgh1yN z4e?kh@v2{m`dXTA9^MNAN^KHEi&o+ZCiSlc=gpA*9?1x}ZzP7mf`*+N{6wal*ZV(!fPiTt?oBbYtYdz=J5TOniiL%iv zGEbbb;1%zoxD5EcLVJ9?i?QBJqC;!d%!*me?KI(SNM@^!^uh%5hi%h^c($7LH*QIA zMadfJD;Az)%^29rgRVCqpKMvz5$}$#5@esqiSoK@+>`EHizqWWfth+ufisflYj6T| zM9k6Bq*R_Dss4n+n{+nd^zd3du}|+uDYX!$VJLiDtxF+0(5M*?%*p6ej;%qSsVXi> zzJak=nQlco!u72llIXv?&f4{@%we|oFuq%sYRq4xQTWs=xa^dELM{t-Z*#S+CaAq-vtaKj$Cfs$F`;WyGs^wCdrCCQ_l32CPqXCi zGwuCMJRafk6ymP7b4oHq+}F<@N7)@uBQ~TrKBXyleC@EvFX)+Ne7YiEGt|7)-IC}Q z2Wz_tLxlu`v~3ye(p^WFzGNo4s%fXcwJH^9$rkZ5_Yv2SW8Y}vD%Cm4xR9M;yl)<@ zsrw=wYQAdg#i;(qJbl5HI!m$gP~Abu+-4aIAT2|QIN;bJQ-rt-%3gPzceZNF9S^^Ld!}^kkWAh znQvo5Wl2*20{s6yZV>+03g9<<|I0Eucr=B0o{S~>is`}sGM2o2A~}R#OB4Rp3Umz^ zWBNoFIR0gfvFrkfNZPpNzoQ1Hv7hLX(9Fa;^MAq}TEeHKz#yiQe?y{=X4%q{0@r$G zsQ;onSV*-LNXm~JW8!|bpVaKn|Mj8D({>qihS{EcMgQ~3kL9O?Lih5l=#~FvISAcS z%1_PDTn()L0cifKd%(VPd{I5|uTEId0rc}Fh^xfzpZlKe{sg8LT73n*{?*BUhuK?w z`3DgK@Y%I&X=^aVq-;~$&y$2@jO+qWsZa^7-^RX|A>?7dl z0P@J6Js>4G$8M*X`Z{I#Jv6=nQjDE%cO<_)mF^xtCBy@<`7Xe-ET3|U`h3>ZZ&29u z)1T);A7(g!g!$ounJfX@gu8>1@~sB|$s|lMZvV&pv7NTA*YJ3~iF*a8ETRjc|CK|& zFb2E}@3sLtd&b?g)nB^fR3Yd+AiFNhU~+De0ODDO)2l0#YidA`x&u<{mw+NxmQ7B9 z5J1>hy$1xrz9$Qbh)W*T2iQ{~Iz*}W8d zBD01&ke1v+GF(a2G+-;7!nFnm0(A$CfB^nKJz6hQc{+`Og!7M)oONM)TqdW>9;MMhE?kVcHIeImf`!x&uT&BlwQ30BO%{Z#?HCpsT3a zquNJNiM`%}2!PA20s!a3TqhySo-(@^kl-a^`~7bB3n_2e`xwr}eE&kPfVBt27P#83 zH_FVrLr(j3!yfjrJkPr@xxuCk-5)S5*Mm6(V1Q8E1h`@*=t}BVygqmUg{V)V|BF8X zWb-8^qIj!XCXh-TS^@0L*b;ymG7LE}U-VIsCIGAa04nUvQwI9=v+(*FpC8;88K)hl zPe5*uigT9XFX<%v#k$oN#F?r!&>qyG2pAoPHP~`*Fcv>Pp3?@8|!*$FgSgoqv|J99I)B0q5x$5EVy@mVoqUk7c)6UGk}x>y5}V zi~g9ZIG!JT45&)Lq5xE=1epC!KqavYAoUO+B=fWQb#~R;OvsS<{?^rVW9di25$?D+ zUS90Q$C7?-J1KXN>A9139K}BxcRVySWcd+{4*ne6pH0DICY8@)>bXq}=##s>G$&k5 zd-St4wmPgd0yc5YfOH2xpd|v9(~)JxbsFZUwe0K6B5*N5)76JvZ^kOZwY@zKrU9en ziuh?!sRnS|F2}sPYJ&4}LuS{24mn%dwm@_EnYU`i>(Hu9Rz7MIhe|Ze>~N*ES?qQ% zufXTp1wd0xPqVv-72uU$DIi&f)ZEVnPFWD-*j1q#2&4^8y#S0UIJatuNlfPrK&E~( zpsQ;an^km>0!9KA?L>?(=3w4TU^$3aKeDtbs@tBFaG0s~8yIpckHdELf80SuO-YrV zfunm@*?~AJ8B>5if{BlH1%0d|4k_Xk9D(MEy1F-K;{kXbnt_4)O(!5?T#~BBVbx?O zcT9@Q#B=*gwOILjy8$!@f?dHXmt2|5mcX7HII|lbpqzA^eJLg`ddNtr1rV%XTRq^l(#ND>B?&Hyn9fn!37*g?1(mf z6v$g2c^WbwfuMBdSf}@ID$r#davW-L1^a-Xr)MUd9vC&=Qj8>{7Zu#eE#$t1nO?;Z zEf#xsb#UPj2ruSr;a$4@S(B_(_YWx5{Jgm)K+<%aGxg?4&9*v6z$ORMJWoa${j1Yk zm6s4kI&WYtkt(qkAb@@eK)2i`jczjritgctCjdE2cIvcQH?;w;`-t9bCAu8zJe{4C zkG}U8dYym5nKM~dih;!~!p@qW!mM?^j}@0Oj08z9R#~Zb3S~A`kBX{75If1yu*8D) z)y4j7!K$7>#1fL399BC3Rn=yqj7h}AXNWak&WM(70}Am059Jg{gFS>MM4eJ4Clb2Y z=oXC^ykii1hWG)af=Rj0+4JtF{U09ZHKDyHuH{yk<=b>PkrxW>O4yM>-T+pQAeFGp zOGkx@$vo^*de#Dl59LG-@h$~|Zh)fs(%17`YlYZ_oT`I}3;dF(6*wpiEg2NI=vUSj zKwmmB<=*>ezW5Z8QH%{QJK}wp(|^s6IYE6MyN>49srLj>gq7k>RGJrPs>DXw$6j1z zEUf^GjBJOQpu~MLUv^B)RVQ7@&Eh=|!^r*M59rl9H3c;1JOV+XaoD^qwSc82oHRqC zf_)7)gT_gznsDQS?ar%=!mmLT-}1v)Qu!MDp`S$153y^`H+p8gPinP zuutuQ-?}zR{YOgJ90F88-^L8seiB1-1s*tf82|veAQ=xnw>g7~&Ax6h-mN$Q5gC`j z>ma;+wvtl%tA=vF1MTlPVpL&jC;Rc^JlUwkDj|I0KB1J(VM`X)+RGrqO3bb`q}8a< z=X4q0ud(`r65bN}3&l{8`eo>Z%wqe8r)3=@qVE$9SzZmQi+`XZvIOi>dCOS>QTN#+ zz{5*5l$T0|)fK<4;$w5TU5&tWAWM(g%3w9W-ukQ>x#9B~Zdr zqOhrf;PMqcPXz4Bq5_;l;te@Z^j&lc^5@^Xc0+d!_IOLjJn0q!uf`3a@$2ketpkh? zuk_yg?Ip(P35T|?bz8)UC=}z*2a>X29=`vINA0~MWoh^1_z@J=iMx4PyQUPKRoDE@ zb=IeGvTZxx3N#*q=g+}obbK<=np7@yV$z4Nememp5sXd(3G@#(S1j!*>(i2Fj&+LP zy0FN>n@-N{SgmKnmO|B3K`H z+<*Z+fMc6xl|1;VlpLA7t>AN}1qcx=G{cKbj8QyZJ>3aopzI)LMrhU%{{kKy2NiyN z-K2C-&o`XP+^pKQR(ePNp_Fc2qKhA#20Svl*WDz5;>BEJemMOuk-s~hGYjEf;D=ik zq?wnkBjbif6%)q*s88fAlF7pg40OuXUsH`DL}pYF5IX|o;I2P_r}UK?N)+F9VBB*P zQ^A;~vY6Yq%2Jjm@8;8(ti@^6&nUoa` zQ7HAWze^zTNjpJa0@$>yAH?4-Y|V7<4p;#yp`tm4dn;Jm7G$Wykh$CW$;p2-o{r96 zC=-R2f{Z@|*&hzl&`RJ+z<5Aw?Oc$?6-JEHuzOE5Ub3e%6B3Qy^mza``wUSeN?LA( z`=)h|9OWFPCA<>Z&w|H7vrwAEE2>^C@5L4Z5b=f;@*I_gf)9q`K)gvM7&Jnhr+ZkH z#^{V@GVl7CTLzB7RyYlrb~dgD+;P&8xeTaoHfFgV9na6e)VntWxCcLeN^ib(mpS)m z6SdWpzfWG`j6^(TUsDKnWJgLMNbmOL6-76&J*FCxi;k)=`RlzAATJ~Ls`m%)kkI*YTBt*)Ixp2?4YD(kRT!Ey9cC<#pLjK7;46DL{iK?p4>7q0@2w(^ z?Z?EJNQO+pp~f-z4yxGzkKdWLflic!;10$>|1*{^sN=>1-Zng(ej@uK=JUYpo2!qd zkHmF=Da@51s!0IUKJe+c9(#F9)zRT3WQJHm zmxGOjY=b;PxO^ZfZyy^(rimp^S zpTZX1{kk0@X^>Yu!oUkG&jotb0s9`Vjzye`K3FYc&98TaB1Nc73KD#zX(6)&jROiu z%TY$!B3i}Yvd2nGEdX<=z7dv$GYH=qBC7wOzpINKL^~+fGbJ5^(Bm(Z@Xd+50|J$& zMI|9-1mjK07nyNb;zN(#f~~sDa!w=Z;C`3Kh(`6f2T0dUM+&brE4A!;kNa@!UcTaZ zb=1|>^;+)enCmF}=vb~7)GXCOKPuFIqhIcFx$KbX!X-50mFeQ~EAx8nAno2H#*~AX zzz~u1bA?~W^PO5Wo+@anUfqQD=aJx3{S~}mw*JNqXt=+~%N!nnchsH$p<9s;^52uD zURF9{+@&F@&|O~E`Z#eDg?O0TEbT;ATNu&LJDR;?otjydEM$R!3vJ1xHzRFNe(t~p zkrXGcF(0r1`kSl4H_T@okiIL(8td|Kd&2Ey-^OC9)$lNgp^+ze$AxLu#%ZlHN7+1g z;55S9@0z@bCrdU;GmnAMBJ9MMb_wJ0t@QbWhuBjJ2h{*Y$;ioMgJBnOd<2{uH>$Mve?nXq zP69i;OsMx}EBBr&_D-^WGArA!Rqj!*@mdmV3rTTeB;D#%iCoJfTt&svIsuG*l!X^m zG2Abx-XIzp1nxd-7RHo}Ay0RfNueJlrB2>gtaCa7Zp>~d43uTJ**A)-^UBUk$>xdk zGOF;-6h!2hI#B0}UAv;}aeWcrqomeP_nbysO5gD94iQDNKP<$eq9E@i;8gyVD9;+l zvj45F;kFw~$85*MlAH>02}wrkyP0=iwAZumkR`SiqvR%&y2E6VHzmW4e~6%F1*b*K zQDk#;=2(IQtdO5!z;vFKEf(1I%?R@{gxIhOe(QVjvdHwd2XD{CjwqV%Ho)8pO*4HE zo#7clXHe?vSB(%yForp^7zamZe>;03% z99Hj{Q6J*XiE`F4@%cA?(8C9v!rESLMBa9J-4TZAbrs65q5qjf5+K-iE-5h7RC)NFn!FI7@VUGFcY3F zL#bLY#TKnO(#q#X{=)f-o*}snIqZ)!HFKPFH8PhhZ_K-GKh!ws4};gsSvy8`C#4rR z4fa&_&5?|t4#hpQ zd?*yFVVeyecUQ8>Fim0Kp^6-Dq+8#;O))F+E0e7HpPJVn!i~S!ZScIYf?FG;(tIwQ ze;bZDYHF$3%H5dztu2sj`0?jY>-718ieK<+bbC`hxcBhyQoHyjmS>-2&5jmUwM#l{R-~`*N;K&s%^9h`Ly|#68LWh}=u&2<?)NS{lTu zI-21yzE0`NC=wh}x?1Z%=fpoXS(Cne0vc&Q+Wl&*qY3D)d9&gX2F%=%XBq zhR5H|UD)s42O_+VUf8ixK3tk)gmy1|3`z0qsJG81+}?eG!G`PwZT@9cWKBYbPW^Ea z+d@>Wy{~!ddexzAu;PH-nTS&Dmb0Nwl4A0PUYtku5rwFoOq7++X|Tn)*^`;TR-~y^1GAKuGo8zKI3X# zS8co1Fy{b+0pq3EJY*!Qx4q2g8sZj#cQoIfV(`(hS5=~Hx(VukD?OmU;fVY2ZFAuE zf@-AW=Wox0=U4bFUHDmQaKhZx4^HC0zqMcACgsM7*516T`Rq@H>dlGTKBX@9d%BK@ zhmPN1W=jM&xf!ouRx~Wx*y^)8_h=d;cY1+=3Hdoh~>;Z}da4Zc0TtovRe6TZkQz5Mt5Gsf=o1vAwW zkCn*wBlN6y^hcFdlF_nC9l}(U!dm$B=X_NeY!M?_*h|OqJ!nW52BT}QItC$}%Zh!_ zWWG(uadokj(M{D?Z;)kRg{Qp@w?g@M8JHLm&OJJH;I*PJnh+#a9xUR&f3cKQGi=g? zy(6+}ZMjFEZ7iW9!>Wjp#J3_(2E3u)aZCwD)7QTz9)%`q_2pe_wfEyQ^bRJysA&0a ztSa$2}a-fHAlATsK@p+}=E70KC}`t6rq-$7*o_QxrQ3`EtQ zs^FNiWyL5~gYaJ$_lIpq8V6IiP(g0ok;y{+%;4yo8sjh@^bMja`Pc6#tzszOSo03m zDc)*SytV2=L*;u(*)rEAt)VPvQ@*@AKf~*K%v_E9`@k|3hAj~rwKgsW{FKK(Z5~f- zE_^rL_c*iD$mg9r@sZHR6`>ru^<;unGB35gbJuqtOXj}tR6GkEfy>TWwg8od&HIJ4 zIC-KWlrK}A3>j;>%HxEy-&mmgkVxj7d^#@=?W4X=--Z@*-wjo1srWPEJ>Vg&UX5Fm zjpy^(yQ_()q*q&~g;{)t;NMxunGB$6`Cx?L_6LFL^V{z~{efRDJ#!w4^AY02S5FO_ z6i&$z|FX_=t4wLh!ABw3*4O9ZQ|~F^d)X68ciVG47($Ds4)u1dY#X#bsVczI5Wc6h zh%d6s=LAJ1N}%quqd?Ms{Q2$7%|Z!pKtsZ*@`;wNP71GbI)bY#(RdhPw?Xu-RE{YW zInqk3CmW9NH|CrrAQ*5dLA&Rv=PR0zxoV@3&~F@=2h*&JoFxImwv-+iZ<4t9&0}-i z2W6(G90HemDEW&8jYBJ|X~HBXVlHbw_%1Ys^bwAsxbsaO&|Oi|lKJ~Gwf!NyryG9z z$VJew@QIkLuI^~uv*u5lR1BqK*dELM8aN0(?&tS4Y7XM?JfLlyIp1&V~?p2WTT z;)g{V;bSbuUFzd93(0~bq8BPzxevAX#y;~7hgnzNMvreY`oB!f0QZHm*op70KjJ64 zAJ4`6#rf8usXEe%^j;dY8r1!N0t;|Ccl*#NlCK6SHvGZ#b0EJmt4GfmeVBk`x6Y0HcV#mp0)2o z{bzq8APJ2~?d z#n|#~82fC-DTcUe`$URQIm{E>7E6xZ^QtwQYj&c^}SDwkHkT{m@DU8N8!;}14!+x7c!S5 zf03;#HfK=uCO_t3?z=H=^zT+W&(-XVb| zVHZ=~<{9ldaI@$P|4gfx4t|D+2a~U`(z?5yJXOt{%fMGMn9H#CgHwHa_aM01I2O;0 z2=o;Pd@sC%DMkutJVhT}XZ)W=DS9640He!qA(|2z$OHj$wD?L-|CkZV(0*%Iv*B}L z`Olv}_3}~{Xtf1z!~gTWr>_grAy3{c1~Ku6COmECKU)(3TGRiZ-I~D)O$2jJw>AHF zV^5usBlE#${o@P&^XE^!*d2iL;q^shjxpT-XRrRx&Y=dlK9KXA3H-B7jS6TKydWDr z{pX>L)5eXOA}M4t{m)(jr?rS7Zglm#M7K!WKM#T&*xL^s15^KO6LfnzuxV@I{*-?l zm{g#Ys2?`O^Xos_I=;tryuKq^&_umC@q28(>%{dPzhB4o+j}@Klyut_8S|X^H2V~@ zbbM&~=ylc0?OQ1ZsIAQ|-wutIli!pbGCW?C`~AU@{0m#qySIM?*u~*-l(qO~Roml{ zwd7%p_}Rd5sr8Ew9$%+2-pyAxX!ei!J;0wR%-*Q?4uAh2ufITpP9<6K8w8*GV~=*R zu*Fgf!SH{rtqHEMQlb_1bTLADcej>UqStWaRP37}yjv$WtU%MDsnV+E<%2 zj}3vdfP;vzzIpZGvi`||Q)w6TdzL2D$rql!dL;39Gv)#0%e<`zRM+SO{VZl6j>q&* zcWs&5&&ppC$4;>&;&t6PVpz#Hm-X$-ty_%T`x1cPz`ed@oAa_cza7M`qhqcIX)$Vb4eXdXQ z!#FsR)X-jblZn>L+VY=gsP)Ver{T-MbvsS-w5{0S70S99v37sFKk;jhG&#?;P$~WO z$M#mP#P4o#wMoPGEK!$huWxNa`2~j9r@HEI_G!yK@YTDOD^yQkBcJw%i}GgR<^Mg| zD!VF48?Xhp_Um5mzM(A#;4B}zWZfCn-rP>s18<;~dGoQhqLxOF)2&Q3H3$>%%&V3H zOw;SGymrJLuRqJ>z8570AB;B1Ywr(@PrNP~08Gb8Y;IUc1B}Bv#e2KEqrX7=Y}J|M z?L@4CRisYik%19WsKvB9?}}41b!1|rD{x_3W+uwTFxvjuJ5bbWW$ZPy3XG*HaC18H zmECXja4!Qxq1>nW>`S>(Yz60M!P+lhHb}5vb_os%OPuH6{=9GAq&k^fG4cAp7(45* zD7&xU+k^-b(jn3fgGz%+hqR=G!q6d|0}_G~GjvEPNcYg)-Q68Scg_&!p6B*Bg*-+S+St-bfXKI^;oQDlm6b9vJCXD#Wq5CkZ;N`Zq!_)k3`viYQL0!b2H zyo;wb4FE!>*QS*FkbMt~o<)~|z8Rr~%YL18K-!*n{>VUUsjn>0LvRqJ5)3p>=JvhLzr#{R;rjP7!E4K(V~*PHjPt}5h7|@1uhPmhbmok; z*2UN+S&EtI2qDjxNg7s=(Yw zClPI%xs`Q`54p5h?;fbywQiqQ)Su=T@8_-FokQkm)>$xoU_aqZCeKt-zZkEmFM|qQ z=!@MR!n_r%a{1-yl63CDRJ11_8g$qJ7dvaQzU|0T@KB{ZNRI_i!1hiLH*Z43exwie)08kecMYe?b(DD9JUqR8Ug6lycCBN9(ms`fP$kHgTA32Vw4Uil#ykm{o*P`jjbA!9Xw_O)tv$Ne(zt{Ch<&mF zS1G3(ZinrwPas!i5LCS1;D^ap$rrc|!Zw*FR8R!b_2(?*I1!!e z_yJyNpA|R4)jScNVJ2exWK>7c%u@TDzA;n4n+7=;$chV)2$_7`Xcxx+t_9GJ&&fa` zsKv3;f7r2bqk||k7TKy9a33#;Id~no)o1JFP&e@iU*#}w?cq1$k6-f2Ua$@_*CyI9A)0-Drl^!yO0m$FbKnD5)Rc|Q$x<$2w{2>I6f#?{dEs?;5yb9v(Y zY5xwfn?t&fNG1k9?S-XLw+g45gR7){Pek~!j1r4@GP0FcJ!VBxOz2T`hyi3joeQ!_ zpr^<$<@pZJyEW_K$BLhd zR1OJ5oY8Am&GOffy;CLj;=037+npf4Vyh|@fozlg7_)-g=?!GI62!tKolP&hX5o5| zuNq-I&%@#21`W2`&26^dcPem5+IvA#C6hm-I`ZDueWY3)l>Gy6S0^RFU86edk5Z}v zjZ%VIrjyQV5mbE+y)IT57eF6WV<*_FS~VWZ7tmaGN>}$7+#FqRt=E_T`P_BKdv;UN zWh>~uN^Ay4*Zj8rdCswo00SnMHWV8qDzD^HGc#8$Exe3RSS+?v)KZ-(cD;EzMpCyS znN+n)=mwc=p&oB~-KkpT5!1-dD>#98E}yrj-A*PQb0JThes&Dz^3Xm9>NG&qOPSXT z9*F8;k#8L%M9-^|>>f6CM*K;)SYgMmD+w8n$fxXfyZJd$o52Yy8$cl#67*uLjI<{Y zi7P54HQ}V!si)J!+fQu1`0b_9T${Q0JpO2?9UtLSIN?&+LM2%3XEOtcVzx!(-$8z+ z*K!acOM$D;VKIhK%JjR|b@w-N$XD z)gR1%Qc6~-ZObrrw$A`N>`20r9jqpH@(x@dnLKq=XgCTa&6n$>}iUn#w z#Yav3LM!@1AXL#Nn;-U}V|GiUg4{a3a`{=ImNn<~5YtRYZvszPbPT)rwwm4I_BbcV zZG~c?lDN1xxHqLdLg|Ri4Lsj{KukR{Eef6>j?+Yw6Vtbb0bBe zX95D0HxbD&-5w|r=UT^RY6$-_W%Kh#QN9Lq+ zDiwA0;*JS3vl$-1AxAGM?Z$zB8evR*bA=Go>==t144WNLO(tw_`hKmq{Pyo;;e_2@&3SGK%f&azgF zY3|5x?=v$tiq@rK13bLQbjaCM=88-x9qP_5Rk<}sL3z6wi#^t3ZGJ4; z>qAmuXF+Ju_S~kDH&P`w?e_W(2X+xYWa>C1bi}~3f67RWKbGKS{w~y=)3xdG_^(4x zgpk23IaMf3KgcUO#Ca@#l}POQ0<8pySszD;;_f&-g~)qgBQz+j(CEmY$XV9jem18T zm(_>tL*D2_w_w7b!d=7fQclF+P_zYJazZxcVL_jQat*GxlFU-@DPQ3K?9_?km3VP( z*P3O|4tC&lE)E_G-CXIe78{6T93vbsF;DrWYD1a&3s}pl(|W~cEn&Gn3CN63xgl98 zFT$T-GAw$9Wrd5=<(g6hQEC)9edjxs2v9sx83-(pS~It6qlsANuyvD9QX5*b@VxM; zFn;jVYo#)Z;m4Mlo&7;lh$6qukT?EIqt7AX&zeVIZoNjSo$xewWGU$#0&=$F|6($PZCOMA55$xU5k?1-PK<2J=eQG{>Av=Z2TWcg|b&e^UW==5QWywrZUdRf0TZE~NQzCq|W zqaJ1R%mIw8sIjK~5b&VzZmSR|0i5j>FV6oSx;&?b`c86qCo{l-@p&Wf`a`>&hleh} z2|Cs(ny}H1$nZjZK0Yc>xdJxZNr-`S4b;;q?9jdqe~Paj#?+Mk=9U*Y2v6cEj|Ov1 z5!Sx(*2ZtXUHzUXW8bMv=k!>Vzuj&C;ao$^Rm9 z?T{nn4Wf_A#*7Jnc{lTQ*P@IYp}L$6`TbAS0ep#C*A?_{l&LzvyZjK4U%jJM180)c zRTS~v*ob7QW2m_fBza(1l<6Bhy6v|DrjT^iPD0koUPXycWuI?8vqpyEcytN3ME&Bj zE6=0fAB_`dS3*c*3%3u7s%m@m_Ed9!??nHWIT)7vaZK2{^m70A8x~gV6rZigPPHj# z&k^5vFRI{=D1uP}_CT`mH07+7Ez9VtHJ9sgZ>ivw?gQmoI9YhOkH_|vK8mk@+j*|5_8>h``t?`b^$_ew zQ`3`zDrZ$(xdm&|xKH&ZgEt7_Qqtu_6PY5r<})*D1BXA;&2ZC=!}D0{8mrRr7%0{m zjLOp6k6fnGG^w1bsRF)eG9@E&FCyk>M9I5X%dG>US{ziv<8|bS%$#FsyW^bjou`kS zxMcpcR7wT$?-j18{4o~07XU9Eg*~>{|A@4ZM|)MrZtJY&YCDyc8oru44tkhZ@|g9$?4L;)PAII94rNv z-jP%*&lZs7k2PBpTXBRcoA?VIR74qSD?0m^ATr62D2~GirV{1%+inV+>!ZR?%Y@6x z{Y{B!<@BUVp1cVFB?ga%4){$USDMP+_l`7|b02nj;C#G<3B*Bot5&Bzue56=}wvLS0Fyc zB86Xa(Udy1Uxw|p@=8z1K^aZ0XO(!%)=-{Qkahn!wzKzV25-oG)NZedBQ;`(hnT#^ z+f|+9X*I2ygj+dv51*D67s^PfdLN#>=ui0*DF&ji(X5v!XiBd>kbiLMShdSe*$iaK zL5vMLPQA;VIxC%t>l)%DwM)z9J$^^c*~Gp`jXQBR#$BG*p#kqp3=FTwIg?L~DzbFX zKeQ`%^q1bUeUc!H({Sp&5;H>k31|Y>z=l% z9f3fyO$T!g#QzHHY;B=A?b3m5Ht)1S8!fr8&s@h{1U99U(( z3+N-hVezqZMV^iynrL;l4-Ox*ul1!h=6L?#x5pke7br=hxQ;n3aVcE;G?$c4wKi(% zO?h<&?9R^Arr~K}Zcf%AMCEs2*cMNz{4)6uf(bg<;Xzx5geYhPyUk7??}Al-*a$IX z%Dd?sJMw{=$>}&A|F$#g{LdCCtr1@q%NpWhPv?agS_%meaWi zaL`07RhrFdG{pB=%Y}A8#J7C0!e2IGxl0K3?$^OX`<~H2dZr#Eq%*_i3g`Zj+LMA$ zf5aGc4GNcDLxYA3!9gpf>hO@Xg=zet#0r>v*9^Yhu&f`W1w% z@&T>(C~T0zNBl}bZpz?eaRy(H{)AoMhxk#Z+BFx|P3#G9up*>m;9fZIE=gw5&D9Tt z@zYBYQ6sA^+tnd5Gkl1uZ$-D*>IA9ye9wGKd3=+@^=QLIcI@)im?bji<{Mr@mcmqp z<~DOzq(!DYcYU6s;4doOUhm80s%h71hJ(N-srScr5qd#t`lnPLl446!qAWAh8*Yv= z4c^ywCxs{waOyAJR(o~aAr50^tsNh?B*`yjK`@tSbiDXdX5lfV0}uIZE;UL^$K((w zVHksjTAOiMsSS-slI^Ok88Tl`LxORw)EO!AoBy$%8L~f0g*Gh z?qBhd(P1JcXY;L6&SEUIa^rkr28Lo#$fv{fS~%Pr^m|40Yw@$^^@Gvbgy9|a6-sIi?B8^nOQKsf{Ovq$MokxfU2B}>w@=J~nu}AE<7J7g z*;XEd1s|Nj<2r!~IxXb%BP@^UJ$U5Zs)xskDoZ_0f7J4`mMPwnmRR8_pkB%gal=Af zdtFA4fmpKZfp^8mfTTe`YN9P{y!c!bD>Z3Mu-t*bsT^Xxt0WAg^Ew`iP~c{5py8W7 zCk1CvrRDP@NyRf1rSQ7)eliUN9~L-RLi4_E)_kDcj~lR~NpMvpw$}We>p7>JIH)5= z)_Pu?Duve?+lnpGV6mijW4_Oks^q!DFk;5={7hlGfCxTcJ|+e$UojKD7~)@E;Xc1w zjpi!GNA)Ups6s}`oLXPa(G$w?wPVD3;?lIX>MQChoXn|KK_b569v{x}>zmKSO9z(j zn`eqaZ=4JQYI*Ujn}iY(-}>rygw5CbsB)dJzLdm5dG_}WX0*5&JRc}F4wHSY$m01HV2FWEUlpnteu`1G{rY^~N?EYpROjRdk)VRGewO}tar6S*~ci~n+{1B)&aa@!QDrILiTTz)AGi!=SdpH zRPf(ygTUw12jCdn_t&iG{st*e9-to?_M_A0e^3qpO+=r{AZ#JO60QIBS0D8A9)a+u zLjP`h9OK^RRX$!+$-n;k`sss5w;mN2Wrt7x!2bOM0-uLZNs%c=pyP@=VV83Mp;iCE zNEB>9Th@8JvDb=!59uxdW_0hAdNTao_0VVNu8+s}c>NFa0=j+&Xo2I7PW`{&RC^FG zc#7>_a0B80W?s+nweA2d5Z~c2_}BayNdnL-)M*{Q@Hd=d{|dD5_-jnzzhF>VK-(!hMa(q{j7-3M?gL?tW^LJ z93&D@R18{It=*!M#LxR(>W|0lflTacxt}xa3)cW^o2K%*SeiTRpfTuJXb=S=Ra*|{ zk;Kw(&XC{fpjrJ38oJhF4E@1I@wPTd%#%~aTVyMtQr=N%9{|CShO3x_K4ecfW}?um zl}VPpb~r~2Hb;#b=gsAS_nB?}^y!c^&0NxHo+*`pH!F4Zc}2r@zPw}+=?*++>0|Dv z>C?~otGXj!cEyxh34HpID=l`x@2?yun)VgiE;Q10^h zSBF#49sZ$ch0FH06QJoc#XE-mzrkXn(mAem0>^YVC$y=;?Zqy;l&S$*x6rd!H3>kK8uSPI_N+lL1%P8{Y5?XKJQqLU zxxNR4>Fp~3%fxx@Ff7Y7R(wK}44B?7r+s+viLDD$il;sLBcX7{zK5d*2v*piUZSb# z9-4Xxg6F;tedBcejbxuzJ-bIz`3AVyRLI4YzlCh8>x!1sebzOi$jbk_Z zhe4W&)3Lw+5OaVxChY-~R(_4flSe{aOS;M%a7m|mU_1tnB=ra1YI5~YbNqI1kP{7i zP#~Ls4^0eft9LE{z zRa4^n%Y#6%S;#tX%4YA7IQ3E39`J5WTmUFoSJU<02EJ94mu{uFwSx{#<{a+>Lk#5z zV4Bi(%(v9D94si~Qd(Ilx4QL|F}(#wv4Jj5=rv@sonN6ZeXbNaq3szMJsIsJSf#@k zwDOwo*x)i{->%)4`@$?v*;u%*>aIvf)~a%wMhZ86W|I%g3rlIgsv3+>z=S zQ(L2@r?{-P!^z1E=ji9B$$Qk6L=MGrR#~y> zl4uG};6XOTw=4HtJA|N?sq--VCMEQ3ckrX4{cXI7bslC{xB+MKKY7`~uH zU7Js+MT|+dsk$qjaJ-~f#^HM`L$(0ND>U8;x<_ennxmPI^}>=RAyV+_D~7P)=06-7 zxbJz-WnxL!*@EEx%8K1SbY!Zj15)+e5`ry288KmA-y*jw*T9wQ#$n0FR|jx;%J<0* zy%f*u0S-?(*3npPyG+`Q4%4OCw?)!K2fLt?Ke)=gX|5JAq`~7`t7<7o_1zIPGGQS6 zro9KewQ%#E+FsBJ28?*ZrO+irL{|!IGTGS8rq^G@Gcmmg(ZN5Jq0k!F$+24 z3P&KbqiP;~#@H%0Xs~p3xG|h{xk(0)&-i&r*JQJ~^^;ZQB#PlW0Q>5{^j-j*S!zyS z{(i}CL2tJB?Lj`@a#|yTMz0NVnj9^3Ma|O~x*gr5&d%kfdQKMY%B+m~V<4}@ISHg< zNDMhkLZg;>`s7yuv(L|Z=MvI7WF9|-p54nWw@-U}KKDq*=5B2W> z+;1{L`NYXoa3p>!BAH?GLTJ}qX@*Ou z<8#%z*LlqX+!UxD+_q8Y+F&d$L^^v~;F1r939QGV&t9Y)kM$0GN%A%im!FOyzS-5F z_W`}G@^OX-d;`E5?u5=HVH+<<9|!VtwkN=~TJCl0uL?I+G~q(0mD9IGh_Z1#f19M7 z;IL61ofrOPYiY|DPVEJS5Y~Pjmo$nwvsT_B)_c>kQ|E|B`#7KUqU7~nvuQ^TIp3G( zENY95$z>1JZD+%^Ys+20n}`uw(hJ!Y?5RT9{7C1Yb5dwG30WTj4d{e1i1kzg4y?%* z;8NA2R}E-3`kr+FMO_8C2w>v^ zIvGs+->n*Jlwy#lSo@Erjuxo}fQ4MlU_kykAxy~qtA3os7Dv2)KWG@ebyxRNu5pOz z64!T#?5V8b+{TYQcd!SpPIKXM>yqC>0l5M4Lh{@k+Fq)P*Jyw&C78`Yh+vDitQ6jq zRoViIs}6MMsvri7AM`l6C11Uet{wrohOK3wGkCT)2zsi&<4T>p+lc2M$5>0zK8a_j z*#3wROaq(h-m`HZNpLRTe$c0?6gBr08e`Vg5?g!Ly)H+^H-&s_}RCBcVT5 zY&4OpOpYPe7&|y*EwLPoC+p~3f<0g{^ma)>&1Ry2q_w%%b^TS9_5@* zhS)uYPv+^9tb5*d`li8u=cX2z9|`uk05{|O@X8xIye(@@Eb9;@M2+}1e^I`NQ_%1n zCG9JEa|oLlQKkecTRPU22W|mbKL+4m(m*!S9Qq$ua38cSvLLdb_C*|N9R5F<2+$R;6 zoGSa@?$(T^bB>7sN0)tOu7Hnv#T8H0D3o^CUYz)o@G$1SKdUCQ?K%L?SQT@EV-Bx( zbgk^l5O{5_)3H16J$5Y(X6Co##=Z}t52g9 z^gk%q>{VO7^1TL~b<-L>21)gsb;Y#ie-N1tR0X9*n|3Px2+4I|G)(QZ@m!&p5P>qJ z38PHn$nJc_t-c~E`yfZ z1?(ZMslmJ@s(9TfpNOy{y5Im!B%1iF&?lzpA&260hP_dHzNDu7q`ZNu+(y)X@0hla zfhBk{M{Q@~kG!wRkSRJ<&(e_o&f?Y2iu3yOx}>iHX22@A6Yzzd?cu8pf2#WCl8bi- z9Ih)n^=llqn{p-|qjMTw>uVH8<_oWf^>?b^nKPfVe#A!zZdQ6J0Sm$6G}gY+oCmJ1DOf5Gao;QJNE&6dABzOjA$E!a!B zWk)0%ILOf5<|e$|AoQ5#d?7xg1hv+c0g3&B{gb}1qm;O!;B${^Ou&lz%0AAMAmRy4f>DOKEifdS~7|~*@Qok8Keyf)U1Q+S;`tq#oXhe z{=%p6D8!F(rN4O3o4pZ>Ri1_l!7TbqCH9WhcQpN;crG;u-mE)1Rj!gf=U>E8nhH{O z3$q(@fo{>euhP+Im)Lhlt^Gzq^MXT{&#Ncu1n(-7YDj&|fbBeFVXAz$>N|pJp}8sI zWwZ}5?c?b+=IWHAsFf0d2KT=TOoT?cnfs-b@A2~m!l|zDRzB7Y3<-7!^sB%?<*R+X zaIWv+vLwF(aIopY0im)PGULHRujjQ-w6&89$c!f+V39s(cv~_`2SqkvM>`PufoPAt!f9}pn)wd^OJf5va8{4NmpgTFziBmI*Hm5F@L z4`}*dh-tikAoD$m;Oo#SC3|_~lOPGnsR&+`^XkTMpF2*--cGu4+(48&kBdd;z;o2da{=~b*4R<9_tV8>chr2cq%M*s0lJXGkD{ z_!(_qX&*g7sOabis6oW163iUt)7&NVp-7NK`-I82s2|&n_8TJS2NVnvUCMvnmKf&a z_|cHDK~tCqG+jbA=$B7aD%V|SNfr;sjCy59O|4eeUv}r6xL)=cc&R^}KOm7~N(}tX z;M9*NP6ADlV`qap+(?Dy9r)uDFo)AXta;g1a)^x|c4b6xkm2`xPVs*5qt+&i$L?23 z;rD*)LlUS}^p+&NuCdqCTqywjoj875D>+iYX3aj!>pV5|wK&4-AQq7vjn|k{n;=bp z;W(iB+bWccL{B#r55s50`cml(H>PBRH(ohFE~#8$5an1R5W+slembgX^X7Ij4Krv% zX2SXoc8Qj~RgJYMVlCn9IyzDQsXs1Xg{uWYG2YSz3xdjl@hRVJNvG1(im*kq5dPOz zY(ut`gG6IZUl-|T$@ab}e*35alckljByC6MsMw~J%*Joxp(f!IlAeKPBX-H6<$$pA zGA3AE%6z7$l?DGpP%=Ns_d9M-383s(+)K`xlr zNm@*jcj=;v21Q_GK3(@*rO2$tNrOH3`8@{SH!3=EF+N2h#sM`6Sobl092hI`FT?LoTb|=eR!PDh$VmBo{_0~F(^pg`=%8EQ zpO5f5V~FWX<#_ki7||Y{S5)s{CGhoa$>-3H-iJ6#EpHcbQaec{ldjV+X_V9y+Siom zw-7FgXfvL0Qy>bIB=J6HO07o>FZ?7Wvr||_KH3^(c=$VJg%G6--{+ks8 zkLWAy^$fqO#Hed&@zHJz3Yma=`x9bVfs*UftdI1XD<9x#e=-yXQ+(c*KhZzL79Fgb4iDd248i`+^$$>S13lJt+!Cy_awfrVH5k`E6EL(RmSh`4_6)K7(4glEvkmLHH`wXT|r{W(D;|LLBm~n!HIBch9^FInGkP z`Hg7|;2ZG+v-|0UMSEX$5H5G~6en!w*OQuJ45jvP-q)Pli2Dy%yy9i#D$<`uX?zDR zzGgCPCzjuQozb23;v8$FG<`$IwcWdU1N4BWfyZP@PX65)o1H%?j?_MIcGJuk;U=$G zP!toexafGaqaiS3^!kZq`?Qp~N2w0ZVg5~Nx0P9C6g{F!4;#J{V0)PThW4UW>oZ;& z&omvF_c%a?5+9f61`7j}7$AwF=!rM}Y81F5Z~3DMNFSnBtKbJzeYYc^Rmx{R^u8kE z_}W5>QR&;AHrz6YZ*^w&1_c83Mc_9VY-Y3V4g)0dmdJZ4-Gdlp7|oi#%g(o@sFMi0 zuHnbuyGT2DP8dTtYKEV{?cUzQ#eJ@-|Ji&Gdxen-Sds{ zpFwx?tYgzdk!md9>xOazO6atsomq@rxmh;pnY&(0ti|QB^5{bOk;hjrBwaV&X$A8k zQW1X(3=8H}Tj0QUo`R4ZMzVWhH@aP!b9D~XH`ZcGUz0^%JP|Q^+cs5jO43rUjx!xm z90k!xyO9>Lv}5;pVIc&D^<*JGyIOb$6&tXUHK$*&z?Scff{@z?pYHl1cfG_doq5up zh$GDVS`ThRSjEYE znfF@0WjNNF2~N2;EM;f5ZBS~Ohg8Rrs*~(Lz--1#j%Ju-5F5c4<5*5U56I%LIZgV^ zEd`rNapz&0KOcGLh1;Ik)L54qwk_nv_)w_^*UQ?eJ!{#X;Ockng5-#)y$NMol|HLf z#<(@7oD`&MK*2nhJs+B*Qf}-nJ>jZAW*^d9u}$ztJ@Fvf@|s#YmuJE_<>RBF>=OmM zt*!iv_m!U$w>O~>x_ZBg&8No}ii;n81LL1VU;g?@`)0parjIfKZ{(?Tz8bdh0f!fvAeN@ z@y!dA>2Zmf6=m5}4l~_06I%xK`_XcInuwdsDoKL%cIc6k@h-d1mH|p7gx&IE&qim) z&sZ&+ia+$ns{XHYbR$;=;~>Q>mR5MGJA}opGzJF5w0oZTl-iGKpOHmO>XIjw?Y?2DzjR|3BiCzCr8@7I+mjYs$>JnSJ*yVk zuVB!96ChcCHrcJv^n+c&z0d%*&8!qNX8NpA8gt9BwCpVzem#RrJhL|Rv%dx7>>CVz(LUh2`4u-h9E1 z-OJ-Wi(aP&rIW`ZX?UI3K~+Ty{nYwe-30B)lKUexqKY+r);4Mjv@?!c#q2`EgPzb1thz{`};6>RsSHHQ<^(x!qi$dEe%`>^^IUUr(l~ zS;}HWK~}fSKDwsoKr!V|J)&_Z{-4lRR2`5aC--cDZ5h0NpP4`-GyjzF?r_tN;? znflWJg{yT<*l(#b`f?BWcHg|%PQ!<{G_CoST0ej(Yo-=#L zl&lE-kQ#_+pNm-!Zry??jo|*aKbjH+Y{fa+KBiv&b1yPk8wBrt6Mi16ICHK51!G4} z-t5ThwpTT2bC&!e>mj-ZSvuvzC^=9jFC?k0%jAvhU~pEl2*C{J218+k6lsIQ%O4o> ziMz=e<#;g!?3W5ZGs~}ZQd*{mZM_@5t9vrXjP3c=eMpqOD*MjeKTOkO?CQ!2AJ;&EKg9$|{CT6(VuI@h-shDnoV;rPuMw9@K<^7#;Y=j1ouyKIBvkH%A zDVW6CxuIN$>;{hD6b?PyLw8-9WQW=yyce6p^)=*2y#Ht{h3|Rz^s&GE0aJQEAHOQp z3o4KWBSD~DcU8S>Q#Sh>Wb~R7z=W(^FsvzYm-f21U^sje4U+)a;Wp)x<@-SXl-TU5B!@ay$J?z(*OPZ z#>IhBl+)p#zZ)g+38nD)eLKa#>rHW5U_P$w#WbKoZUZoPsDo)^>;h# zXjWCV*xmduS~iQOWp)DwXQF@8vMMwJ~U<}zciqnXuS8hfIac= zsca8Llk@W{@c-G}{452OB>oqR#&3-^OgnL#2Spq)bfV5~^FCa?5txj(yyZ2sahk)^_ql$BEnP<=gQDR>N2kC1viIUT- z9yUy3tE!4|Qren8V;0;2JwWwBtsA0fQd19zBsKNPGHYhA+o#@w+q+azq9VQh7Lg(0 zk@Z%6swTuWxyk6+9&;g^h^Y@9q1XW+)h)`&igqE*wqu5;-@^+nmQB)Rv`lacy1jk! z?xqn#v`CQEIvlXW_&GH88Olc^kvSkJxv*8#`u@=kU@>m!@G_^36PkS0pvzJ^?yjoF zR;$0_22ArZcFrL5vD`MGb#OoLQu2b=03om`bilE23^WO(JlLKC5&RmXJN!B_-v7kQ zk8i}#;y1x|!Zsn8*GbxTW!erJL|F*8WM!dk&dy~dVg6;1x*syGLpTFFvVQIm>XJ9W z-3~IM#Z@d7D(-G1~5L6f@K*p zeZb21^Z}=ErnzXuc$5$X+7&-O1hlvie-0cx{>86*Xc?n!UUCC~ig%L_Lrg~#N4bnQemkkxehrTJ5aC*Zla z(1Q)W;6So0yH+x~o{OggcA}zZ#jwy-lUa}8+02VE2ml`-;S(fYh)E+@{;udMEgqRJ zMpXvyyMDCR)dj6P>4-^b!vxZp1r3E%FOM2x~po*bJtC(5~}X_?*XnoszlJ4qeCQh4E$~vmcY-Oh{m=t|T{?6}XmRjdvd7*O;D}r~I2pnnF_AuZ>j4)W z&3n4;J(@=SiuD-aN;&_Wy$*LO4$*R_c>?nuxP2n2fg(|ab{(+xjnwTq6>b;UN9T@u z91gHsOHYl7+Pjkud!_IbL`k90YLP-#46?o$V-&v^PF`^*PH^I(wzud3K6MR%WEV74 z2E@**20nD)Nv(gFiK;PVFw@bE{1U^_NOzA|oA&q*2ecWTqhPkIF7S`KP)gw5H%Y;} zT+kG^h^9G8S;NnwEY8BK7ihYH>Xa4*VRq1aEiKyPZiovur8t}mQ@ju!2oLKE<7hQF z2{?W(rSWUJJLdS8_Q?!?)rStC=}a87O=MEpT)?;C~a| z7J)5A$s`dc5r7sX=6qhJ?a_}nI|0B;gNZyQR;KKqH^o8Efq1{AO9}hii6E0JX?15n zmtIj`1EgoMdu*eVmafsd(2x5mXQi3>{V6=b#K_i5!Y;e|a-g_$^#g|%iuod9p`%W^ z?eNchCfyQbA)WXVG&cu<+u^DJ-%k0M)at$xIlc6ya{&bN#h(fHJBEfyJs;A_2u%QM%2tE|e>jkO?$2xbrl`3%RK2d8z2oB< zJT}xOuRA=?j=QT{1gIPEQ@b?<4c+^advJNW-x|LHjqG)~Hvph9yPq;}4Bp3|I(d+T zWZ^+vGe6s};u^+PofmNm{*|=t@KjPjT~pZQj|6ztDCF8}+4}mNa&Onc^BgVFMgd6@ zT2K0cv^3sf>7hs3FyvuWK1HO=_$25YEtb{k4e$2=5VOF=G`$z?NQ^s}pMUKpv4+WL zjtTUxJe058PojOA82f<({mN7Lvkv61E8bu)3Z@D`0NKErL8&f?Y2I@|=O-(b*2fPD zb6n0|yIOh$Eon@I{)SnleDXVZc(e2;Jox$A=ISpu*N6L9T0?}%2ma)aQX+P%iHo=8 z@8k8(jj2xu+!x@@ z0#7)Dj)-!th?k<=N)Q9XO0~L=3!BA2ZvNDRkm{x^@llNs@8 zJO5c&&@~8jnYQ^xAJsDZ3jv419%?QQjt_yp;b{siREjv#!I30!9$5QL{>$XkOcq_# z^=~N&g0Q%l#pHoCr5x{@?@HJ*N4H9&(Z}M^r`ClhoyA69VLK0PhAFli%C&U0|s6x!0FdpMSheFNwk=DYAuG*dh;)u?W#|qZ>8`+8uW^3snWu9GH*n)aJ ztx7MPPD&`Q|CwVUE4m>^i6iB*IxRfq?09e->?{&EXqO-ALaDAxLqPhozJ%xTpNsSJP__ zo(j~uh%AWrKUTJj>d&VhcA=C#!*lj+)SX=>PD>r>Zmm^-*Ra;0CAQd)`XU?qat1hS zc0d-E`gNb8zd#%!axR({~9@0d5^;OIs2{Tlr5S^z@vpy$kIC-|ar@1oe-$cVb> z&(gSma&!f$xL((NwT_qUH=>ywtchal7y*@v()B8uF@|qMG^c-MvBQ2DLVtg0njjp9 zn4pa|fGl)75@y6qxCSQQDSTQSg!9yh-zKsiQBs;et20>1Q)b;1Jkp%~xOTb93=jVi znb=UmS0AGluCx9xjLfXvyJ-FVho36ax6DVcVyB~3aFP?!^Jz0dTbWs8O~CzrW#hRt zIM^#}zSP*1%X5;@qVEira)D{G<;)O8Xu2KQ-WTT7Cq0jG;OwUCY}~}IF5eGC>9F_| zwRXg*ScNvJ10z8ujR!@rEYhE{t=T`W9m{3oxU`0`Vv@-?p)|{_kEvOZm4UY*ga&pe zhA&WN!9in>6!AOaLuiGWJwzogB)KP3q^k!Z11RVYdLw)SQCQUH4_HBd!rizdg$%Xz zTrq>5-nB#K!8@lHZQq8k>0HN4HiSmbe327agR@Xl(7eWio~AWmkQhYh)sp)h491NE zoI2z%!5jB!rcwY`CuxA0zCOO$a1Ut2*c5-+@k{?kBsx*-)kRrs^06rNfL4eQ#6@P9 ztws#Pk@*vc0rYzj(`%#eIhz7L{fcSam(B+cl(Kg#LEm}7@!pi*Ap1Qy9+DVOhWO_b z&`Z>3`Pe$gx9dMs0A+A*tuslx6`jW&%vzDAj5F`IScmGFEGDP`_S!IW`!Am@pziM`ecDZ`|Q{DC7uI#U1oqxsAT zvV0g(lx{o?^G{X8#^7;WXMp#{2$AuskfaAF8EYJNy(9?l`q(L@#rVqf#iaHOxu%$; z+`-KIU7`j^A{;kHTO)GXY#PKXx^h7q*I3$jAu$sp8fE>&$x7`z$kJ}L_Ho8%TW-IM zlt>vzYI+A5AL(CaQ{jrwjfkw+mE!$=y%x&Lf4%bjP1#E#Xo^cIU;pLfG$Jw|Gdf32 zG4ZDZ9aLj{FU9sGb;b9W9X#^DY5XW0K8#rXuNZFL%Y-TX%MY*mwH$&%y;ZI=xOg;h zbM8!OVE5l?>A<&jlXFvK(tCC{#v_w>$<6s;)1VW(UJZ$2?XhTI58L%QNu7z>j!KlKvYcekxAH3)6P-TO^L zlXmI*MdenKv|9S>SKrd8z^IPs^0`9WSA}HU0rJKItC$k4o#DV}QAMZJ(vM;uP?e`@ zwHAxV*sv>=lCE%hN0Ew_5y^g`^8gZjghipBu%Z&8OjX4r7aV~ z1NmRSxTafpyX!XVhfjw1)kXO}t=`A5)Tjq5P-i^A>We>^05wXZx&14fXJcj@Nxckt!28j&MFU%hO-4;M!`o*Zq-uCTfqhaap9If>LnAo z+dY9-3vKKf_g$okv*!k9vrA$akU#G5xj#I8|I~_^$S7_+#mx<@1KBtXHty071@CO?CqeL58tFMXBgnTDL%kcLcgdY73{nxC~oT#BS9v|eJRHU1trTuo z_&Bq#ez`9g5sWx*OD;+)<t-R_#u;uUKsW? z4bYN0_Ol*qZVpGryCY(}see~j5#I}@kkw=E6*_7#1Gw4NjYPjvHdxWih>xk2ezcQ7 zUZsGUNyh?Y zUg&)>k9luq*Wzmyv4>bg+oM`fB=L{c+kfFdT4I+?)ZAg>@lB^vkUi^okLx+i;4bQM zmrGl{m8sIHc>H{Bkc_-q$56>+v(P@|h6Vq{>pSEU5$WGzXwCZIr42Ncc=Bny+_Etb zSa{<2KV*4k$!~{o+yq9ypN?yLPlo>~IBe+zn-wobAnM*1r+tp>n6j|cI2a*Ml#nWnYBWJ$BQ8zvJ-91FOS4?1+QAW zJL1zr13yb8!5u1WLn)E@WY^2=_pNRzDs43xh-C?16Pn3$qYo6k(DJ0A^!Zk)iWYV* z`RdK)0TYeCQWrA1W4#L7`th-IazCm~H-+!VoX*|TM2w2VN5sz}1j}STc8N~P zkJ?6ewtUt46}z@_KiUAczbsvU8bV&qU{!4RLb4Gyy{CWbw4L>%aL6oVzqjJXA2Bqz zWN^5I&!mOjAQLx?P?OxJxnv9Kum0Ne5``y|hR3zE@sm7G7HZPBT_fAs(pHhKylBA* zvjXZUEUUgw9wA}Erqy?Onu|R`*Q2*J%nO>UwEGdwQuAeYt}4l^NL5x3iH()a=-5N% z*W#r#qPTuUHluSM;qg$rnBz4r!w#Qa(%lPmw%R)e>L$*g0rxrg2_I`73)Lt-qi0Qy z{v#iWf148C(MM724-M^kjq|pCB+i$D!XOf93Df?*nZ4cnW!x*H3}0i`FxjTv_}6S! z7iJl5mnkCXeqt>56W%_dHKvR6#nXJ`V?#Kdu!1Ha+lQ_&>kK=O@uo=r^~FAbT=XLg zs}9AujxGF9;S#PLQZYYK{cPh}FwaqELc!SdX2pz)dk%+8@+Gm2%xA-tK&y}H)o=Pj z8Ge25o(n+mC}>}^CQ2rX_cHmAwU(q^H@-z2dFV`6U7vXBoYyE!aQ}?4vyzDS&um`L zquC0{dEKcJAz)pU9j;PkJiQ1AwK&3A(ZeBQ68l(QA`>21h%iwboT(OUt1%$Tb-1<5*Uq;Oi z9HS?Sz4k18x^_`E-xQ~4m|-ugHZ)gJ9u5^tRJr}Ehl`VeAN4~jCqw_L%vO#-EG4J%Z zlNAoKZk^JLn$b<7|+B(REhaPXFMJLS+cOCm?Lo$#0L?BXj65$kR| zI<21xN2825joHB#Yu}D7Ip84`s21GiiaFh!3AB4W&nRgLr^qwf4PIEXq86mP%=?DC z;F})*ffVXNvsY5Fn`;Im4&3iB%OLigSe#|EP3te|%CxOz|T8~K7Z-+h3 zl-CtlxU-N077{;1$WdavP75%;W1CoiCeU-k$5P&k6m4(Pz%Ji(yiHVB^&p@)poQOY zo@}UMJH2Z1g47e%K>IF2&ar}rxuo4=CA_mle(?PL{uk#XGR&jXe)shiv?^Fin3CzU zH~HRk^$RVwqbIo$9^Nz8f@E}m;LXYtjw#{E+5HU8Tw4aSv%8qqO|hC{wyq^>VHT6t z$-8cg5eHV{gZkQT5VvX$@c+n=7MhpF8zn6Z8B_--D1#=k*1}(4A)&v|xDKT$zS~1a zVJEA?bf4He)hGM*xc5v$nrq}X@?XWoQr%5Px_g2^-2o-2nU_A{c~8GS zo5a5n5%9D`6G2AT?)M-J-oV&@5uw)<`$7N|U6SFs#r^BY&D0T)S9OK6f%I>#bw&nI z(=}!YzwEztuV_g?u-1Oqn_PD)+y?Z1oMrc-@vg z^^Dm0pX0WILlDeu&?B7p9|*>&3~@U-8o|JS36jY)5CVfE;Fj*vS3oyxy@xj_AOLUyf7%oWOTCNJ3lZ`NOmI53QS$gZ#Sx`!KC471G56 ze^gYAk=VCm{RL;&Kor`6#;DnV%871H9f(m(|C=ld1D)-=kh=5%L||%e>Ej&j0EA?H z3JNL)sZEU4b7g#>(n&0?{^9EXD3H^G&Q*J_a(D)EiyTkKsjOeW^z#Qg5-+hx-4#tWQpi`Rmp}}6@5S$?TQV%(5e|;;+ zK?;{V&P@gBjP*}1ZRVhiu=>9y7zDvgrkD$?aG8%TyD1}fAXdlJruFo~b2B~A8H5&| z)`Kk0qrU;4rHr?r|9m%`cPrOK;~IdLt--$@m{}aJS<5m&FbZp`+-ZPZ5Lem*4bBNv zjw9-!n&~{0tBDa&;rPkBMibQYMy zA!0C|#OVe~hjKcDZHn_Q(d(bf1jhHE@Fa*uyT;#K0mrEt;}3);^LQz@NV;a>P*P-} zdqDp$P4^6ivjB`!xkSM?(NSLKj}MZHVc=6)+%4;4>RYYf-G+L^-`|6hNUN$PH(=9W z7a`-t86V_?BHI%+)-?A(7mcI9L(9c9Dh%*L+j$z`5#}QxE4I|R(%Ld5Rn0U>z-l`P z0jaq&-Q@N5R|j3{vmj{Ht5kUp>R0R9*nD~mCdO#{PoAU0U?u3&pIML6>TRq;IGc`( zY@Hz6qTmhDmwGRKwcR>yJ2XXu{cN^#S@GY@mma;!@G_N@M#aHH)?=+i>SSUkBxm7fxW6d*;!eEAsiDPyD`we7P5Y9yS6xLVC>A z*#xdWBks2liUKbvHSg8?a+LA13+*dI9SFU}$67EKgK(g*tw*86+DX}ins&6GTChXM zZ^2J3$HZ7OWL+9oNVcyx9a%ACJLpJa-Jk%|sUgDzNfXYPXi!EWQpF3VdtKA~=uL`7r^6u$TabV4TS(4g_~ z^3n3CHhbJAP(dxY9tLLh{e(7J3auZDJ{7 zzctY^E4GezSc<{L^qwZmCVf>TKWKk@4K1H>f|`h>PvqQ6pEHGf9Ep7^9Dz{ik|)M| zJOLS_GpE=VqOIA58&hp zkNftYk77kOS8z?t@*MGqAwoIs^>$|l{mwYX6>ZR_Q4c5{HRlK~um@gy#i6hUTd8yb zn@rplU}2BxgzmHT)hkviNPVNnz^N5VsF{40h?fP7T=v+e?w5vRzf!AoQifXVXSNU| zB>prbR0}s_IfAN}h^Pq9tSyu}KY7;p^ik-e9%uU-fjSfw>bdVrRycW+C@vx4&vh7W zF{rQ4Iq_3iyRRjjL-ATbs*&2>z`(#1a^Q3xI8oOnaA#Pas5qI6q;2Z0NgW zk``uujztR?zK&vvojlo2M}6T2c;ZW3Y;{b}yKU&I-I@_Liqo^{33BI3l_ z*3o)S9vN$yfYfLTeJ98r)n~)Mphf&ldpgKdo1HASZ-Qz&=J}3l76g!Aw9^Qd%Ey#E zK2|4pK?I7Xzt zd|KHcRcfOLci@;_`@Zq9>Gv9mz|;q^>0`GT|4}YaC&0)X4<87ADqsk!Wtzp0qmV-5 z`7BtcfG>?^79~a0TiS9?ri&01JKFhFocE|JJR!Q?9<~IsQqP4;l_>*{! z{%F1lbdgMItI-Vj-y~g5oYT)5=BI|ZnDJ~OF9>f@A&Qtj;`VcY+V-8$orBv8*Ai@N zu}w7VP8sa7R4m&H|s zmJr^5x+!Mxhe>+cRIP_+i!U<~qDfGDBbDylA zc)x=z5??o#{r=kjpbqN!Nxde4!aBFuJ-|3m;@y%maR<}TA!TyXl6TjqMHR$Zs6&bC%*!!P2Elc`?tC=?Jznh&7S%4j~` z489{NvYJDC`jTF~rWJSV>>XQ>7qCPoxSpJ_E zQu!CLy7a<&jKuS5zKT6Hhme z2uRwgD=*6hs&ks|e|54o0|E0HWKR-}T>?**5A1hZHkkQ$3^2EQ)xzt@s(x_qVU@W&Si58uI>Kee9Q$>%BhrC=r#hak_# zZf4sApAc8dkKQi+&R29=?0O2xSHDhz!*c-H?EFC%eDDn<-{+zWKieR-&#>D2CM9E9 zMjvI!@eb!q6*OFEb@4kHW`HTbUth+)D`O!Jjlv|NCE0y90dJMqu!y*%7kI|?1GE|J4gXe8vzmB;WI~u1cVLesInwpu#cW0R zM+uUYAK-3c;z)4)84XwIQ||5Lg7#gOAW1`FoZJXY87eJ*-L%M$9sF^h>%;rLc{{4I zJshXYq?$lp&J596rBJomrzU0Udy)AKmclCbLZ$@KdB+!5bTA6L`7u^b_d}CMvG=M_ z{@TSdi3W{F+0661Kxrh&Spz8P&(s#dyFnqrz;kF`f&AhFz84uK5-BwH*f^%c7KRr@`;y6@uD%|;v9&C zD3JIDBi$(9w~2A0k|pMqpfe}7okfb^mi&N8A_eE}@G1JTTi_77c<@2Ccz)6wf&EHe z;@5eey>Z%pRm2sy*;%#mV!qxO*&V7z6*k|#y1<-wqL`PWu4|n@j4pH7?TEDUdpZ%9 z{J|?kdoF{Q^e!%E^gYU{9X=Lo64&{JNP8*07&&dHb=Z;=nfSYoymTTc1=XW~j)>(& z2&2E1EVf_R`?QFa(a3Dg9fL7Rmr_Qn^A6CcXW}IpV-fM@OxRdY5~vJ%wiGTNZH_jE=E9SV$%xX8a2E83Wy-m-DAG zN*0R6x5Q=Ey~;WnS(;lqjKl=u*Z3XwM+9=y9GcYE?Z{ZK-XiV6mhO?|Ht^G=IO1> zmnr#!Gdqx?mSQSh_5tTnJOfYJ-Ql0_dmoZe)Y#G$gJ)QtgV@4Z+}0!C zP&z#K=#tLC6v32tAL>PhF|XjSkT>~gNEg)PVBAS$_BFxs6|ph2vL}=Hu1!|)9nob3 zl@D~-ky2;7%4Yy^+q8c(Vo^~fmUn>owhrhCsg<5nAxOT6{doL=FPltHi+3tlB zKlmi(oPz(zuKRpty4v`Qi8KoR8lOTcPJL*+%PeY6Xe7EAx6+Kk4!1kHGfS>YX)b1u z7;7Yjpe$ioRE9cX?%6cO zLu0#2)U=8$Z}hyc!XMefE?~iej&foP#P%5I@ZhxX7OeYT9wZo_oC!tB#st$&5cC)Q zEmmtIwI0i#BZ!`gZZi{e2sJ97j5x7nFb=fUn+O?joPC&Nz~R-}Ck#(JHHL4#z+i># z*2bp9ZQ7k)3bk>_ONi)KIu({6(yM0ONGBugP<)3nbiDiRz2Qdsco%QMT;~-K&rgbWE(;T_?kG{2{?hFlk9#a+`BXM}M1Fsmp^Wqo_n;AGY`kjp?`+H~ zbdoPRufLFfkiR01#l1WAebz+bke6`p;%Bpvr|%E%<~wG{Q$mDdSvQBm+fsv>`DnVE zBF8apgbtez`?W4L(27Qcw3)O@a9D@AKPZjj1i-{M596CWRWoqXLt`0&TC^l+iJld# zr0XE9rXZtJWzF4Iy5PV2Imb!XoJwtCDn)K$x*n65sB9{iSWCyQ-1{bpjh&snnvR`) zVIz%bcO%us+4gj^aWxihX4`G#aTE7K^Jo8YYi{bCpHS%`p;vkETlU{aO*BvA@DX6( z`j!Hh(ZokA+P<+Kq*1j$$IAA!;Rcs;{nQu+rmDyYFCU(vcfry_m%^WpW#kBh?bW1g zw_5P{o0qz?R$BI>F+TbwxHUx{P#a&2W84UfGJkiZere@iB3h^=`kX;&!`*JU>N~Nm zi2^@8x@Ko(3Ql^A0ck|3rkLI7vCZ)hTv|%MgZZZsWA2~XT1)m(4RMbB0*i+I6A6jP zzh1Ik-+WiN2({gh@u$SrodUT_NnP!gtR0J!gqIDJ>-+}9IPhq0QX5A8w_>k$v^O)} zGVOl7G&(Rhm{9ghCsYyDig6hb))OM_$hFm&+$Z2%kEr+pr|8O0Gdf%{gwG}=lQ-cf zQo^nS<6sZb%ZAahNr?wzYpOOU=1@v9JQ$kYdG=B^->j}5-1yHqT8CbUe>-4}-@MyS z_*#Acy+DOK7NxF9A-vSlGLh&g-3{wdx3S^S9862Lniaog$iTd;TV?xMFoOo8qIq`E zf2?uP8Kfpn6Lhe*om4s0*R?&V+#UW|sa8$D-J&juWK6lgsJWd(Lz-^(q?4?gXBg@E z2N_{Q4Jx@n6#Sm0Uetr``LdVs>aCxra{_RE2vB0~3IEW_aGEP$ur5@39QuSavqvUb z#BhAOsfE@4D9k=k*mbLr)^+blTkydjGOaB6H5M5dTG8583XtL=&i|O62k}O4s*L{zQTAi*wJyo!|4Z+3FmM5fKHZ8EI zCGtzdG&^)AKo9^V+|Cy?h_`1r6(b{eM)`+SAbEyjx@u%S6eIW& zwOq>(up}4hVG56SI~U%)Q`M4|P>*NZ*}}|tyqTh z;B}^nuhZU`826cQcyAHq6mjzyq3@HN8}6Zp4QL+oMx@cAqfVbqg-{?4ujks#Tkka- zv|P?OF@2eh-42=*eu+Hf*MTkGZW*5AR(2q8!}ZWyaiJsmj1jx{l5=Ah!Trn3f?iO? zW^TE+$%!9|F8Gttu*a+u5H5BaR#M7aGEtj?-*3)rFIxBhpAlHv~w+0G23(+7= z;~=OrFkH1h3~>ALhr0ik(`asQjjbML?RRBRyp=QRYU3HR(OOqHHZ4lb=c{ep(|KHb zGUM>rpl}RBVO(9^e>d4lv2$Yk_&6+1x^@dplH{&ed$6*4CGkgP-S&ECwpc>S1DF3o z9oZ>czM;pZF8_D92s@R@A0(I^@PxtD3Y0a|L^N=auk%AbNiL&ZC;Ou37RV zRO_>!b%fn|Sm7`04jIU)QSKf$6g3RJxo=bDr1<0R5Im*@vv_vG-_*Mn2JbbKzi_|c zQ3{K2W^{FM`$nzv?(W!JE<9KN5{yF~_1)p}u@dtXBJF*;i zGrKWnm*;XrPMw9Wee=0og3T)Q@mJ`_KUyL>ui7@&U*w}DIp4mmuETShoIB{`Vii16 zi!|#bJ3tqN88x}z)s7lSB3fljem+ywIb!@nVzINz$laX-#yvLL<_^156WZ5&dt_O2 zteHlh_*8(bR*!@z+Duu}$wp2vXU)BW&|#t$p5IjsbEcUIRQ2SPtzBk+91-Z4TjCLQ zJ&&W+sX-iPGJp8N&II#zO-*0T{A2dZAC1$@4oAC8btT@1V^sGs5yJeGvW+x*-t;DV z>4Gk~%24tk2ZoBnyjxi%!cQ4L*D5%_ciNhKuO%!;N4QLpS<6?-cnv z+gQ}}gwzYz;U)sy=DyYAGVa}&icQtcem842kI!j)cXo=#zsJ_<)C+d?BYt0M$Pa5> zGPK(kTN$UW`w>sDV)|6=qbba2p+?kr7v5+(9e$^zKNUx1?ja*uw|smqw55&tM}nlh z${1H6PiI_{$NJ0{y^Fp4%o{wa6gAnp@^9Cg9lNm)UgD@-?-?S9kB<>jD+S%DdnH9q zWF;A4`O3GOEcy-v(E`O51>S@P(?3c~Y?kQR9J@FAs*0}oVce@Zm19ji0wO0rwWl~N z->9}}8@Fg|jqWF^@#%fL-R8WBvtZ~0(U8r9;;+woiOT#+8;T(L4DdI-C2YZCjyvgR zSz=4yLtj7h4qO`}Sl`uq#QT5P8wh`Fb{2ac*0jt0aysW90tN;KqJDaH!-+ao z$oUVH!~V4U8NBqYy-JzFKL`y-f!KE~uB@@YYg+&Nm1nWQD^#uI8mIj`vvG>*zQk>h zo~N5<^i2Qzf9M<(S6PMhsq~g28s5Z+B$)i45X<`Kk)4aqgh4x!|9%JUkKkyuksLVx zoyghjEDW6w8}@X>zt0D}HaHrjRV#}BoR1H5J|7Ew*_q)wLfL@_b z%2?<>=X3Y|&$HRPk>x@Ec{jAXnYYVEQG?eYgp^7DyjQ&!QZO9Acle4FkRkOF%2jfy zIR+7TCg;!$Az*>%$Bw3~zbcx80)<3tAsb)~GVso!h&_2QN-Q3tZ);MLygxD4IJep- z0ZIE+Fqy;MLH8~H3Qz$(D8{MU5x-&Sf%Rkt@ChW)&So zn`pX9jfmyldX=k0T}eT1ti44UG+0?D98gAu@M;IiCa4e;19@I+A9DC~q3{;Y8GiT~ z#4+3-Pe8^D&1B3qIGtDi1tAa`B)Xl3>=Rvi*Vd;qB-#2Pwz6Z00KRmeCgEkdR2n`V zyXtQ|QYgR9yur1)e%{)&05F$(z2hK=$pIu-+E(;K)Xib(6LK6>C0+w5iZbU=ZWv^= z#eyoKedgMvqXYXke6j@7`>btElwqCdbdWYB;UN(YDSz}(jmflkVEKw0q|Nn0FxFvPd(pjO z@Hk~|5MiXLhe>Sud$lHf^7@n&VXz~lCRS_m;f%s5{I~!32fliwp-{!mzZ&BjvcGb{+~O-C*K1F3ITEZLknt!vEOjwH|n5F&+&GU3&ipQqQAa^tldgI4A&Es!?66HvQVJAA{ z36;&5fG$|Ma)X(ESN6IVnuFNMQq25wL%dfE#%E+{Z%{mt36Y~UFsy6H9P9K~Jdi_o z)&K-CrAL7O7B&FVnwlh<$yKtvYC0iM!iR@t+{V8Wk^WV#zYh{S*FdCQYyW#jnSRUO z=X-z0j1>dA8L`mzxduwUGe)kJ3D^Otr`F*b_bD82!2!v#(`JT>pFvG*bVeUI2!FaP zfqLy5H=xcf$b+L#OQ!uQZVVRE-t3J0B@}{}OzsVCMI+PdP;xyQqE2%wFP0~v=cWYS zvrb+NecRtta-#299@4K4LenlC0IC*ZdSe|wvK%tTBg z+MN*c(qwKf&g5_LU(hN#^D)*2*d;V{z=gEA8?4^qWNd;RKt^tsW_JO^wpl-oSK{CO zmQNu;lg_F@ej&dL^lB^@t9?+3wJO6@=cN78849Qq=!3>_{@SQbakQ3F`+(jA z>4|I5$gOiQz;ha>vm6BDsx=(~PU$g&a9=-js{)~s;AUQf?8i0}jV2F5ub4+ei;xJq zUYqfXfPWJp=r^;56}gL5>SDd-%Dn{!E!Uf1D3{hkPv}~)(8WZHPq%_-N))n96 z2pLX;KhX+)pMbuGUcODHK~}L_@{zX}R=F##H&s4yoHqnc-F|MM4@4Kx2uqF#vg{s9 zk>+%0o3ri<8+=y_tU+zs=VBUK29y(AhUNziC_!`J)3n{tI3SV^tq9TGG4$`+Gp6C2 zRvCwfwDh3SSZ$dt@)RtQi{BDPw^H%LS|5JKN3oxOq}!#CJIdaHVD)5mV$rDo9Vw*7 zwY8%9gc^9p5jrOzM)}0Z>N)A16{Jh^wi6Ud?pE^3tD)Dcrh6r`WN3{FHZxfyy+7Y4 zDB>HaqM^{ILd%1%LMHL}y6XGVT0J85&)i@#zX&?NT4yCq@KdJybq8QL$CJMU7(+P! z^gwx#-y)$cLP1wMYbYcpG5^Co4A*Z2!ws8ITIQ@zuvzpcJD?TjA51}6iqf)hTQKD> zjab`S2rNSS%bjus_U>$*ehSYEu(Rdst{a%tp!aY$$0O59d8a6IDfq)+7#Vh{M2K)n zLiho+#){HbA5*@RN_GWV#TXi{#m@;?gS$y4Q5O@c6$4nmrEISgGY|8-L(@b>d?D9b zn^hZby!?l?wfw>rLW+!s{e1A}4Lx>5UtVFkCZ0w~i2hb25K$41S%;FKgW?q)AxC(3 zE3e^2kt?RL;LkYKOa!qGJ=zyjggP9P5{5d;l5T=R~=P_AIi3VT4xrq3YaQMgI# zNlF#NM3K!H+gIXmk;;a;?fBn;n$J~WLBcl=;gf6Z7OE(S!hIJ`LoGO2t5m>#lS0o(iDn7Ti7$u zu%SXlXrhA=*9WOT|Z6(2u_@T-2bpzjVsa2)*f)_Z)MHh=GYz7KY( zGz88Kb`BJT!{1wEMdr^sd*f&XLwON0dyEbPtpO}wY%Q3yKMhj2<(59{I5i63g|A^z z4*R^@CKi0L+V2gcCh`mP6YnQC;te4%Ia8O~gGBOL$W%tv_fSJa)${yKg?C4Z$>*I| zPx5T*G#(6wGU#bYt6jmC)lGKA9kIl7#8yzx)qiohc9t%fWqy;?MSkz{&~?n`3u~Ud zrij^*ZxBtN853x4|>kOkDiTvK6f+`DVh;*WIAb-Ldl*2Jf^@p4|cMwrltu6iPA z5wb4Sy!JITc~fJ+??#0a5YLUW{Twr#7WQz=+QuG{1{u`@_YFSWEuXKN2uiRs-jseWA%oAg^Qyda~@Ip5!v18&P-Qwf3i;jQm#5<<`! zNzqpNHbcbaD(L!O6CBsFyBev52VXtaXp1l~oSP6qm+yR(P3^Kv(8VpG9ob(Hq8{;6 z0(zRAbv)QQtWjh;qc+CYY^|wyqReH8BKgek0~$iau-5DsZaTq$W`Q*+1=`>O-{?!8 zRZP-Qo$;Fne7_VIn0a>qKk*@_LJ}(hWeC>7Gv>wniIdmAsD7%il0K-l5%$N6B@f+) zG9cdA5U4lsXZ?NDAf2e6?rJECqUju__UM*ru)0HO(td`H5643l`D|?5@KJJ418f8m z{g@-qB#@>zvtQB)T@1cWl`LOJ{?P;mv5uXkEC&+6(X|?IDxwfZj17Xa$P%}%f&+?I zq~SR=oO4Y1ZTNZ7UAAz&%~{gX-D{_^L?)UN%J_&D1w8^sL<;(H_gA#vMMbWJjutDJ zl!+=1vL7ZeQQxrGh@5FA{s1@6dpBJ*_HK@X5571Lv5owe15uboe!i5e2`~%&REul# zR*pMvc4Lmfw``bBqd?}|QLU+!8{YA#LA}PvcahY!ldJ%vol+Qd`%7x{X~(G*qCazWh7P|~lh>!N-5q=CG@ ztM_O_?$ur2mSs)1dshrHpzCU-GD9Q^{a!EgSyf5f4FyautN;5#826s~RO_Y^5`h=( znNette|=0CeqhW-)Phx6Bx~A=IHe2|`njgHKG=2PI&97tMYo|s!Lm#YnMdG@ifA;~ zqm@#Yn|-ght_*Z^a5)JU!l#Gg`W0N;FES(Vb=K!dwSDH9(hu>-kke5{<_~D6m*qiR zuo@ran;GXm)8-G`fAyfl$RmI~CEcxvmSBOe*IJRVmEae-8OlJ$xN&y|46b@>ni_GS zCe-)~AFY$6)9p=QdtdKU;()a6qiKc}Ti08yh~MaFE=IZD4HE?;4d({o-A+|VrmLsn zfw?a1>s=WQq_Bj_%E+~-I0e4Y@UZ#v&lvhygW^Xb6-}RQPSHiKGIWL4g-FD`yD|n_ zW0+#%s3=OOD=H3hM0rgep1?^-qfzPEZhr0Rq`wRJ?8(DqmHq;AdpUBl63gh}!Pf`e zF}_(2a((8%Y3%76P`wGV8xk1~-#$D^B`QYeSS-O1{oFT#@I;TjF~JRB_|)31;U~hv zD%HC0NXATW`*^Ku>Klp(p;%*s4)}nPZ7~dfK7EiK%JR8X+gR!Nw8Tv4kb!cngo&P% zp09yDgkT1qoS`?M@tHT2yo5mTizVG^ce6oCm#b24D5^-C&pl1ui}nDcYaQqbBgo5o zl@n*W%!$oMz)|QV#R$jmK0NoVqsFcKi)zw{?U{e&#jHrVvc09<_T6qR z%aM9xU(7WqBK&xp?AxOwr{C2)(mY4)(L0_EL9_bNNgrLY4E6Y&BLp#ncP*jnW?7czCtZNMv9+hXd!0ndFGA~3cOX=2SzJghiuc>Gz%%4l zEUBw(fGx(=)FY`2A67ela>+CDrwg`B$i{_d;n>~8D%5Z9jB-QXB4{^VsY9ET2 z4uARvKMIDYog#~v>Ew^bm{CNNJYiGaOGL)ZKkjoXdQGSapjW%nQS^$-i=$9?a)?jS zv?lGK>?Oo@2vUi)T&YU^^YKPs|Vm2jdg~A96QZT#d9uE`zcmNcoe_TIZAgsc|!*A zb3?Y8Kof>0A98c2{(^wQioknwOjfOAZlX{#ADV2(qXlifL9ChkpRS&za~crtIm6=6 zDA0)v^m~2P89xt$0T(xHS&w_tV<=bNFoo~)Fl+iT(h=X)+DuG0%y^sI+f2kNN5F;i zAicBTb?%WHS>KVRfJxEoV`1)lqlht-Y1SJGj*r-f&fm!XJh=B@u+R1SD2f8d@Kq1W z+cVZUgQw*3U7}w;?%)U2{?8v>XXo`&o?s!rcDD$>=OWF;mHO!95}es4z?VKBjjlim zz|MS=%rDDe^hAnZ$eFn=_bZUj?z__JUkX|u|M2G} zq;q%|%3!|V<4%kIG>`Lxe@DpB{p0qf^`K1UesaezRzV#m`kW_b0}&dogpy7&B$2+0 z9%-53nzJSwT@($11x3qlhsNE>=z`&db$5myyP0y36o-v(shDClew}+?mufF%Ix>Kl zBoOpbqkY7Z0)7;GU_h^d^i_{(*uQOMnRshk-`Lw?W$2}@PXz`Wl`G9bZhD4 z=T8h`y3-9_`x$<<(kYvM}LcH~GUKW{>`auR1(^F5(g5e(k<9COehX z?#hP4ZiRBRTthDug7+IiVPZPo1V>!6pI#P>OAl+PpcLFMNw#zdi_0^c3g=}w`;~n! zc)?IARqyp%p-kS^)KG`hvxZTI?5yH$RO;7_M^9@tT!S*G6#4}Wm>jdo7E3pRwlBws ziLR9}y~?|zMZ2`wLi|JqWIG8Gvvs==O3M4Z%;-i$ZeBd2Q9nlz{NzJYoz+o+X5p?? zHTon6J*hXu=kMfJ&cWBVEv+!MX!46{tu(jFe#@cYfG*MVI<2(0#&FEL_^06q;$s%% z&B85G@gHqNvk5fDhU%I3{#1`pQ_dTHzG98rYOnsO87Ur`!cWIX3}!Ej4OaBges;g8 z+Z{?G!_!x~yGbk5nI$fJ%R_V;A)ruE8Fya#ti;lhRD9ORBmhRTlIX_k8O7Vx+s|8_ zWMf90blNBwUdNBd*DFG=XU-n6d7xSMJ^twy;b3~M$H=bDIPS%*G;iP>u7Usf%To8{ zL@c~ivn_ePA_N%k76ay(L=uov)b+iGOn1;qo!$k76E_VPX7j$113U&cy zk0M80@OyTShi@F4P?iwlhq#4^qiw;(G8y7bmlxx8jThMq90jg;t;|SoWlC6V;08sn zN&q|>TshV}EnK^b49p1E93s9@p0VT|#7!ZR7TLTzKmuKN1Ts<7LILqT|YiiO#4<%ZOP!O2O>AZ{W z+P6nVh$X1hc@DynRKr0ZWgJNU-!H0y#`F};L$+4-EeWVtG66rQYYq=mv0@>a253y@ zvOI(K;pL*!5JOqh{o}5F4x}5EF&8jm!0k61fI^GC(D&8DbWB)orQ?_Al&qbqSsUeJ zP+z{K1BFqpKByd-aiy_%d;kc|hjVZmS~mb0#Q_d=wq_SN`>fs@-34S^Gt(Fsybu67F2F*E_M3 zBn#2BK8Us`E{ug>dM@2F0i`@<@N9Bwo^u00Q#|CJtO5Aub%6f80aW|cL2~6N2Psjb z1qlt=!Dq=B$go=j3dk|Z7P3NFNc6R-Nra+dPNjHJx%bAEG9;<~D zzthe8hc>Q7%r53rIV;duDo!3pDD$wQuV8?Z3o2hSKvqsK)T9lutP(5glBSFC5+-O7 z^?~B}!pM!yL=S}Z)`%9*BzU$phj`0T>oy$IE_Fs#Y512>C7pilue*8jFvwzl>1#== z`ruRL&Q`rCI~i^tY7|3B@>}Y9?VEyn0nK_lWDkjujpP}qiZ8n<1bbER(BjC7(VAGqeJGmVo!PAXk!m3DtSGs5Rjpmn5D zJKn3(_F)Z}Gp+?2P^Q!D!YVbFW?m>~UJl!zUZ`{3`El{Z9{lAhjYv2HbA8^%&c^<w*JOu*yw zJGXCIc6c&E}NN^lP>#xo6vT$CRsHbFqVQx(TE(mpepw%o&+# zuUc)UEk!_+(%AdzzdzH*unoWPAgv^8hkxcFfZ5G^?pjp3ce@hQpMHsNFrI}jf^J^t zde$=swxhRJwqQV2kxI@;R)3khox{q*-I&U;Hk5;<*K8j#-MU3*N*!??3>6D_qfE%?rCH(+@5*jR5!h*-r%V=XC5)f-tAw_uH%7vZ+F~v9O+qT0-q=*D(rqISM zYpeb#G!yG>8sUJ9-L0Uo_nantm@WayUM&w*ZFSqq-B%?p4?**6g8&WsTiw{oAaP-e z=$WZsZFO~48yVMI);3)%O6$@J?n*@QTSYcb3t*U=#bnrt%3!QUY6~+<b7w%eH3+ipkRC(HT{gDH>Zcdp(at1z3@(^#Qm;5qF8$JNGGtZM{+ zS?4*|_$BzTse%g`3Xo~IY=#GamNw;o*ESF9D`m5*1ywqgeEb3(Fa**{PijwJg{;at z!hI|=4s!Rh?~aH_iQvtZLf~xXnD@E$CB%cFmVNqhI}00o8hYOf%k6W@xdTAy^5>Q@ zT&B{WrE8|EkO$vzF;iVYd2#$pcQDP5Q^8_iNFS_|VE~b}<9(2DikF1N3EX^7;WmJv@VA-bmDKURYN2@GG2|>@3U-+x!sVLaBH6KIM zZ&eg@R|L9rj-V#{UXVJBkR~{NHdzxO`IoYh_a$z|l*ktziWr}=bZl~0pE(!5 zpzgTSG%0Q)i-=US|1GOu=cJvFp_K)iO3%p~v;T}@h1>b51qzL$zGVUqtipN#j|h#5 z?PXT~-~uY?Ik>|o&WzGvCl=&NhzGX6=VLO=*FE6iFcTCRH$0Y0{%wutgh$>7dNo)Q*1n<`^fP^!Z9&ZLoC~Kv4?`yh+>%~!mibN>l z7T-{`DuswMTc<{xn+e7GAAJ1_Qbz2Z`*{Ys0cZiSi9i&^8c zrDQ~pAlBWi9cNOek))ki?>dx75n&Je;8Y4G$V!l^OIz_{NYP9KT+L|WrOuzGW=}@r z2GGAMoa&4M9}%6!ntA!DGgNBc!?VJh)uG^L!VH)Qs%)vaq!VSopY>R7d~~c53beg1 z;s&P(DyV+w-bEcC2WXbWyD2N>OuMX0Y@6zncVXW(^HWaonBv-ka|K{&RGSgJGxl6J zb$|_s=?R(Uj)G(kHIw1jbw`s~y9C!jAUQFf&B;u5*DlztXAb!(WdH@1RytS*&aP^2 zZyH+iYCY4~6WD{7Bpr_Z>+)j}N!EL%vkM$i`KAy)!dnNz#)tF<&n!aNUAMj^q*?8Z za6`%Dl>RfbN-0txAErDNiiJ0h+eFB8ow~V)>MM!>aw4|XeM_;Zhj4e$n6}at{5A70 zKKZmaIak@1lE)EXvj_qWj=ew;bt27t=yskO63p-;T)0&GIy_sY>|(@b%R+KU>06%b zXv+((p6pq#gt_Ynq#%}8m792GHlSM(fQLC~^#3Z4si!zuNk4kba!|AzCM=O^VE@y}p?mAX0b)btBSETXVohe9a^C(yr-4Xu+kV zZkon9BE{ktSxJ(QbZ8VFzgLs*!(qkfGk>8-llZ3_pL721f_o&1MF^-4E{=GwvW%}P zm(dGh7Vo)?*>Gi*esH*3yTF$VH}+zOOSVZ-#wDs-?{v#m$9tdI3Zj;^dx$bDGnU>8 z9WX(sY;c5L;TfS!0u8QA&2nimuT0WR4@S&3t2Y~2^gaXoT+QdH&=MMwYbAYFjH6q2 z>=wUvLq5F@071Pa!#1ogC5Oy~vuM?itpY9a0XNXa9|Z3f7-yqz5mmfkJvinDrLt)W z35%EC<(^Ur7M#tBjF=F1I(jnkovtW2pJUT2M(TD@Mv*{~g6JjH)v%)HFdZ(cQ_bRP zr}1ZWm|ncV3RN?IG0vU1(gCA=*(pQ3M%7Q(bNbQrD6_b9oCKU!ZJpnt#xLabl@kAg zVfz@dGvck?b=D82@$1%Q6rQanPq9+;wGFyRQJV_G#ishptHzaj(+JT*X7S_tlyVU^ z_E=oz^Mp7!((VB|0Fe;Ucjw;dMj(sid<0LR7{e38de{8oWFs@R($ zW6#J*H=at7cPDfH%XKaGN!u@5Y~KUf*+Q=c&{$pa{H2EIAv0G;=q>%+x2+_lRVmqJ zyUE(!CAOK_=~`EWU0kas=M@Rz3j&McZX2f>tEzhUTelaLvJ3B;2Ig5Y7d=QzK|Jln z7p=5~iFI!B2MyxYXqkSSHcq^Jk6|j?*un*)(GD_?9;6ZHTONspGNEK{*+wEfJNXkr zW)3Yn&7(WaDzVN+SZ(j}yo^)a<0^^y+@h*s`eqf;fD)@>EI`L5h%qM4hLL8sy?*>X zE&G~GCae(sI>SXlgXd$OX*RmS498o~*Uy9#O6s5umJ<0$9^RVU8q~0Hj!X!g_#-vv zVVk23?y?a~6P!f#4yT^j1?Q$PQR0In%SQ(uVr12=27gz!bu|U7NIfLpxGW} z)mc+Un8#!t!A4Bm6JNjh##(>~#g=0uEG6mwmqvhDpkt(F<#QC~vBp-C* zP>;$0f@Qj^@y2$TH)p?X5pwWxPI++5S_4qM%%GXxF;^{`YX9Jh4C{?4iNQZTMkM1w zS(C}7;vd-)69UA9Dj_T1_s?fO`@y)#h4hQ@nKt*1LfP+xlC(?s=szV)8`r&hMxSmJ zyyNjiM}Fk$=y%01lPZPgs0G!U!T0BEjroELQ#o&#)}t9Lw@65RKg>Rssz8~{Rc6pMx zZ##EyLW??Du70?uQuP3rWevAcq6;1-wu`E~iEC=X2FQ~}5^cG5VR3!&#UWZhf=(t? zW==Amu)CRWZz}eOwB4X)(WI=sIeRlwu+-Tlu8TFjmqRD_G07$z}o7POQ6i1Uo3kEXX3+nWV_7hb;hHyvi}ly==UkhyQk_nF$^1p7E4>?P4h>@eGGG-}WqblQ3F5j(#n( z9e+N`z}rFSE}O>=&y1jBxAdxt(&}`oBBQ9h#fTKsIu<@UO7B6)JST~Gcg%`%ShV;a zB;q|MDCk4%7TCs>XqRHn>*34om>pshQZkyXubv(3pxBX%FBV9$ZrBWERXh^CE{R`4 zdCW#^By`yLt>dwNin~T%HmKG`@q6~eGL!qZc1GS=&R9wkzw6t&!u?Vo+y7xWnU@o} zw0|1EUMr#-dRm=7mPgkZrPo%W{ekfg)jvnHn*=w(%uWvktw=akRG0imMi*xT*@{k{ zJt8wv)BM@u?QNQROKMKso7O6C)`KcD!#Nu7&MdW_UJn~#BX;(t^6^D+_jqhhAvarr z$i_bd>kX=VABX95m4DD-BdgnZVTM0~iv{0cPOKxP!;G^!j`A~-bMlRcuQfc@XPB5>7=J9$ z7f?{b^3gDV-yl|uFns#S6mgMKf7k9%Q*+Qj#rfKf(joWqWGTtFgTCEz7C$|X!V+cY z*4=`a+m-X=_xyXVmW+PY?xddD_h`5}n*X?jY~!{B)-<`--qwDk%%4(3v@hy}Rq1Mh zx7PU{0qerzg6sUN+rtOP_Eew=H{T8W`R>WMRCK1I>+Z(vl8~Jl^R&4^d~B2lPJSq5 zw83mX)L!r|@sh2hL&@Uo#?npGCKI>%t7Z9Xat~gNl;pdx56v#%O1B92=W4B{_P0*2 z)LJH9HwbyW{8-{8|AKwM%xqR&w=WJESzu^T&?lB;tw3dNP_$|i9D9yTZtOa>67qH$ zj*hv|oNO;Xd-Fj}<+6m|)L5YiWyOsB^@_tnuA#`Vzyf6>x322)ilEB{oav~jeLWA4 zF^OTK()|6L{(=I^mzQwap(o=~`(bIjeaq6Vq@{~VA3m3iALRLHn^{(G z4UO34hT=WTdu^P0JlxjQobbpq>8j}!K}_3MU6hLo%Wir!5Jz~1;93G08&Wl*irI$SRAnYmB;pd)s1 z%XPZe=~CjnKb>Z{)b+#V6wI2FWQp-4!RiELJYv^Qx|Wz64OcdoAI+%<>V_637aHz) zj8xmPdSRbnd5Epy4&&Y(a=}tKoG;b0TPN=CvspW*vsBT;HS5jPTl$Qc-Cpg`gz(&f z0uHUSL^{8Q7!jR~+H;4%&xJEW_rpXS-n4zpw75o;*^L@fEY$R%4Oy_!$EbF@RA7y= zUC_+VF^pngdxi*YzI02M*A7$X8-x*Rm%q!gN1{!ad(KDU=lueI>#xOXaSI?05u!?A z@!nrLoI80IL=IdWCO5x!&4e`^jR2sCC&(?Z*M<)}>VRvs3VH*ZiEQ4s_Td{FJS%2N z#cIn~e0eFQGG}Jd)%(Y%?OlYtbSh8brJg1H$i63Ypf$rh2EeWnZ*ub1wi&C5+jJUG z=;Pc4%f9%a3|W;V*hf=tTAGm~9VS!!HeG>_tFokfw(E6c z2L0*%u}!-AR%Vg3OSd`r>e9$j+`tGWAn5&HOs|Fi9}wH>I}*&5e)VsvXGQ`XOI{If z-MM%F3UYkU6^*kHQ~ul9R7VR8Ppis7X;I04r9%QF*iP~{?pjfXAQV7(B&#P%TrW&Q6H*AE zbu)D@a00RtLCA3ULv`%=zs}RI8=pE#C5yL5wbv@ zhkGVnS{?#q`=!&{a-O49BvNSEnSU-cTea`X+6A56YG@W)TAZ~dczUkm?k0$;1CET) z?|`AUZ333yrdu+#4~`qAYKPJ^=Kvgb^#=S>3e$P5z0D6)#k#=X!Evv9%O(JH+XX-a zv*+>xpoxlc0AS4&r@Qsbcat6i2qJg@Vc2?L1W#LCjM= zk$FLX{M-d!^T|4B6qsCaxPiX@IhRZ*m~(i+=RR?96k0r55*>MAG6$fuK0qMv0Ucut zVX9w^tr&=D&H-1L$v%h(mCYv+UJ7Y}#P?oi>9`-DneDuMt#ku&DwcD53;)@)*kprwnZ+zb#Rk0;;A3HsXJ^=%o zs>Psuy75JO!HOBkY~f%2&R(Em3j)+1y75Xo>?I&_aKQ*ecu>+$FxyHVc1$R6`{W+~ zDK#f;KwZ&44~M@kaWW=9G=j3%w>PYNm+$Qo>miX^?;di^G~<#1&j+)$=oAq zE*fu*I;k>`WAXI;yM;55&8KW{5F&&#`ahvx{{r1A7qWZegYcRtsx6#OY*S2TeM(1(V#aLHIEj8%fBpPrRhN{QH-P|Kc4fnq=*& zR8_PDxGgGG5;o>!m#0g3xBSFjw;T|H8xG_jBRGO>7uA3zP(aiPz?J zW*;CR2P!f;_K&;Qat7LC<{xl~II=Ap;*+m>LEQfmW$d}%aLs8`i|F!;TuQcmWu|Ol zT%%J{YrgQC{y>tUz7K+U$CTeTx1zcs;YN-RS%*Z4Tf`&R8ZBpT9t~+74&bt&sY=j> z-Q8S;aiRzivB+Wh8uDUBCJtm_eCvSHJDW$C6@0gE)ln5g5u&jPR^1@bHvw|;7AxvF z*X&dk_kLX82cF4U;#}Vha&k%Nn(u0*flPl)?Z?Fz4WSO6vxApyAx^-pG8coBS4)thd*g&Tq&pRpT@yG(+Pp zSDOormUV;CNZ{0M7|=`yuD~S`t#u0Q2Vr41TI&TyG7edSPGo=82})j^N8%M63aqP* zc;kUvl^w=tdIJg1FuFa3Xioo-oc~X(bt8_etYU-dTMCPt!^SduzyB1aF9%FffkPQz5b%|VZkZF9J zy~PvtPgKSRJs#`z$!_l(4id6_3U?my#=Wm@2$`N~&45H6IrEIphO9<9e=bsSA1gMV z0p-aDB0rY-%lqi5)-u@%;)y{{_46y6NV@x@piiCm?c$^iS<-Pr{fey~$J@x-1o%le zP^VPY@`QDs=225fZwP)C-eh3GZHIBg+Gv=kH^^F87~3tttlf`i&-v&XDWp}uXSOGL zI*`^WD(6qWoZp!?@`FsjK=bsh0_dxi7^*3_ELI*eIr!V2IaJm7>h+bi6p^g)Lso-z zCnRQC$SG8Uq^#%h{ciD0Sdf=%TYB48oD0*JmOA4-c|yr!6N__Ckm-O`2tj-18>w^` zuTLqJZWKYD@;eLle+mQ;c>c?f@fD;t5!#JVzy0G~(}Hy`iW^2C@wuh1v5o&$} zyQr0Ap=JJRqyKe+0IbmZ3thW*J)})S&cg`USCD{&0QrF*1^bq_JoesJWzXtqBUcgE z#v=l;Rfr5KZxa}#Bx7?3XzB5OBvNJyu$a@awV${tGsc>0_Warn{lx!N*el%RMfOJ_ zmrL+sf(&W`S zW`R$yq?|RHL#Y@zV!kqwan1}`vc^hZ-q*_ziFK7ob>~8QWS?^lM3s>uFIsBbhF}7w|Q4sM1Dw92fQlwu+HwzlR{fh%2T-=Z$6Uj;dAdc{6D^nDLt)4 zm9j)>8E5xB<))}1K8|QOgH>y}7{Wt52v3)ukUDc^z93-W><- zat>2l2b_{YzKj%8&DN9BJG)nVX6A*ai}^F04NDVfs%oc3&HwYgakaZ)X@;B1AfEmd z^=ENG_c6bt8i^-?QoDclK`6t5dKug!Ju~DW`ZfHmc$5Vx5zCEj-~N8=|9a>NjbG1) V=w?41&r{&%ma68>5@pMm{{!mZW_|zw literal 0 HcmV?d00001 From 73807e9b5449f968ddfea7a180ea9840988e24bb Mon Sep 17 00:00:00 2001 From: Doug Branton Date: Wed, 8 May 2024 14:25:18 -0700 Subject: [PATCH 2/4] fix nits --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index af7d4f0..69349f9 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,16 @@ # nested-pandas Efficient Pandas representation for nested associated datasets. -Nested-Pandas extends the Pandas package with tooling and support for nested -dataframes packed into values of top-level dataframe columns. Pyarrow is used -intrinsically to aid in scalability and performance. +Nested-Pandas extends the [pandas](https://pandas.pydata.org/) package with +tooling and support for nested dataframes packed into values of top-level +dataframe columns. Pyarrow is used intrinsically to aid in scalability and +performance. ![image](./nestedframe.png) -Nested-Pandas is motivated by time-domain Astronomy use-cases, where we see +Nested-Pandas is motivated by time-domain astronomy use cases, where we see typically two levels of information, information about astronomical objects and -then an associated set of n measurements of those objects. Nested-Pandas offers +then an associated set of `N` measurements of those objects. Nested-Pandas offers a performant and memory-efficient package for working with these types of datasets. Core advantages being: From 6ff2f806f6fddc9332b3c002f20e987181d1d94e Mon Sep 17 00:00:00 2001 From: Doug Branton Date: Wed, 8 May 2024 14:26:13 -0700 Subject: [PATCH 3/4] fix nits --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 69349f9..038676b 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # nested-pandas -Efficient Pandas representation for nested associated datasets. +Efficient pandas representation for nested associated datasets. Nested-Pandas extends the [pandas](https://pandas.pydata.org/) package with tooling and support for nested dataframes packed into values of top-level From 645c1e1e93998c6ddf86dc7af36bbc8742a020b8 Mon Sep 17 00:00:00 2001 From: Doug Branton Date: Wed, 8 May 2024 14:28:04 -0700 Subject: [PATCH 4/4] pyarrow link --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 038676b..05b70fd 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,8 @@ Efficient pandas representation for nested associated datasets. Nested-Pandas extends the [pandas](https://pandas.pydata.org/) package with tooling and support for nested dataframes packed into values of top-level -dataframe columns. Pyarrow is used intrinsically to aid in scalability and -performance. +dataframe columns. [Pyarrow](https://arrow.apache.org/docs/python/index.html) +is used intrinsically to aid in scalability and performance. ![image](./nestedframe.png)