From 8a09bb621a294bdab389c9cac41e3f873d30ca51 Mon Sep 17 00:00:00 2001 From: Binghamton Rover Date: Mon, 29 Jan 2024 20:22:58 -0500 Subject: [PATCH] Working! v3 --- bin/video.dart | 2 +- colorized.jpg | Bin 0 -> 73942 bytes .../generated/librealsense_ffi_bindings.dart | 5 +++ lib/src/isolates/realsense.dart | 37 ++++++++++++------ lib/src/realsense/realsense_ffi.dart | 15 ------- src/realsense_ffi.cpp | 4 -- src/realsense_ffi.h | 3 +- src/realsense_internal.cpp | 15 ++++++- 8 files changed, 47 insertions(+), 34 deletions(-) create mode 100644 colorized.jpg diff --git a/bin/video.dart b/bin/video.dart index 3157e07..0e5193d 100644 --- a/bin/video.dart +++ b/bin/video.dart @@ -2,6 +2,6 @@ import "package:burt_network/logging.dart"; import "package:video/video.dart"; void main() async { - Logger.level = LogLevel.info; + Logger.level = LogLevel.trace; await collection.init(); } diff --git a/colorized.jpg b/colorized.jpg new file mode 100644 index 0000000000000000000000000000000000000000..55dafc2feeaa8a46160fafd5858394abb9e514b8 GIT binary patch literal 73942 zcmbTdcT^MM+budFKoIHD0)Zez5k#elK?tEJMUmcAR63%xfKr8oE*Ju#2?7ZS7>d$V ziim(9p$RIeC?IHn(2-6k;l$tfednxm|GM{1RclUeUG@67Y;y`TLa3?EDY0+$R; z3;_@b06?r4a4-TG0K$CyLj1hKLIOf!BEsU*sz;?^Flm(1X@shYuIXhXUBinO*8*KE zY<=u58oE7n_X!S%dhqWgAQ3S!X$fhqqerzKSQ}bD`2V~ev;u-$ zpb4-A7$gg@34*|apo0zo&Kf5N=sz3q-y4Vx%+A3H;X1^9n03Hw0e}qz2D7n)IXKwa zSw}~(_5LZGB^NYn!q2FD?)O{;#lDpZ^uu|06CzR$OfC>|l1tzqmkb!K^n}ke%bG3a5~s zCBzwXL{>G5OIV*+Skrb$PR;7Ch)cj{Zc&8#?_(?fLi1z%My&#MS|l)a~7&&)v;mvlS;N1n6>W&MC~- zj)^b&^d=v>DrmA949Jxt=*=e+83KA>M2K6rJbG?G3T1HskcSiw0Mi3tWq`6PB6r?& zvcRqr($h#a-{e(n6|sE#%4ht2D`;dt)vIv$**tTAsdWGh59+UNVa=JZZweHNxWd9s zsNT%0PmwgC8kJ5?PL=KO1K^r8&ern3kN)Z*?tL3mg+4d~S9DO=_y!F1mQDEw4M1w5at!Mq7|iqJ^%WxJu%FbWBff#*FN(7?;UNbi^@yi;c*Ym-Bz~) zVEo>;=jxP~wEnjEWErw+HVfS~C`(e^KK2;JU_Ms>vl&WG4UC<_g<`HjU^%%bN9sy$TSa$gE8M$j1}GWPKRCq8R+5|W0^{LG zBkSh(}Hh%bct`vCYR z;`;B8%d9=NQ{s`?v_beM3!J;dYf$Yuj!w-{POOH=Eo~Pv*O)3_D3VsSitb5gV}4VK z8(SqETH{p4PK2zN2fi2ZWsm9vwW8GW+@3U~jb7l051b_}T>H#olzL&Uu0QeRL53C#jwDJ8+$9kj8%&(7tc6>UC zyeN?&C)0*s*)wgFYSw%Dr!k$3{eA#cnc2&2x2!BPdtN;3ODZohbl`szzz6Y1&GzGf znj*|L>DT+H3bpf2Zw2wB2K0WQ<<}oFLgk9xyZs?rxpE`G4!o!0QLq+)3;ga|n@&Dz zhTlq2(XB2R4F9lY_>DgML2l&IqlV61mHZK7_zU2oE)@B+YM6Q`CA2$LT34Pj=(SbA zC0pn9(4kGI_%w#$@w}aX>7DVTKx%g$NfpwCRT^65G_GG5BbYCBLd3 zqEztrCX&h5Zkz_&32{m4I3580^wQ;*zh3!Fo%1h`?v}0BJT)kT4e_M>zS?)B_eQQU zYLiYn#N=PwTW~n{7&(E1^g((@!_QQ;Z1C96^;#z9aNhVBmH8`hh#GfWe%deq89 zylb3nHqtWi+pMd5e|p)XQcnu~bBAg3{F0KHqYn*?92lc%)sX)_JNGPBwKQw=_k{v! zEhpR7Ae5>q7lJlpEXGWk<8gz2S zwr{RDo+Hv$e6&$YbCQ)p!`Rc`m4vEEE~vW+-0}FGw?yA(&2C&qOJ5&ICqbIL z$bIers6PNwu$wkKN!|i{dT7?Av$hx-)UbH)gZ>>oG^Eb+-~vSQA+UkKZY1A6mDASe z>1VK-inV#()8hU4z3XUj(^4 zgYEo}8^zrSkRJ4Apyh>JM>UKx3Y0qpQ3ge!6pj&uCb>Rk!NaAt4}iNOc3_nKK6x+r0C;hUwq-O$-Gdwe zH5CsNVV75*F&iPXGuRUSUZGAq+e0&L0pSsldHo@7b(<7XuAe=6(5VdUHUGGCCsdta zZpm-M4geAP0)fv~+FpBnCd*CWouPYxO_`{_xPS>w8+$1t&jgVW+G?5S6xgptyrvg@ zLByC_lN%0&!XkEn5+4b}o`p!~0ZS_Cozopl8A#CnhX$E?T@~h-dQT}%FeUqMajH=v z;|(_NOHOd9Z0I@uru3BQQS3(C@z+w1Bp#F>TPr!RlR)lDlh*ozxLPnesI6F8c)vRWzP1F@*uhMV&bONOcqCw^j?DZNS z2g37Z8K#`HXVN&s9~aui8cLCu{vr0W*2I zpYm_AYl=B8ov5(<>C<~TjcrMWll|WO>JwenUv9}}e|lP{uIddiV-?S3=Igqcsr8%8 zUshG5K_LjI4W_}bB1&~A$7S!QCYc(3qhX-*y$=`747tq=^~6!=7l0Q-NylY70QmW# z*-(@B0GNB0?PhVzaRH)L?*yhs8~}8N{+k#z@QF??t;d=>8}m%{cLAn}g5EMNp%(np z*D@<5lcp}{`tcZEX4?-r0I)ljg1RGHv?y{mTj&As0875)$6eqHhASUsSX1Tb^MiXy z+Q0Z_`N9Q$v@ID8%$i4l3vd;+yraHLV`x@g`CEK@$%1^U#G8aW$JoC!DY_;AB3fy{ z@4ci!q!ZvTOkWySpI8f&Ej{`OJUiAReZu>0pbpnD&=ZFdC2S)90U#9NHSJ{^6z|{A zsS-7^|D<~L;t30V8sgqf^Z;Y4boxYB$6fhKqiyRjj)Ve|2FOuiVny}_|6CQdo{Tt3~L?}n-qP~@%-vs1e04mikAh#Vp!LzloVRLyV?}t z@Z|NT7bP1i6Y@P}!q-T;lOkHf&bUx^RC82hfbujYOfP`E%njFYF+)l_$<^=PGVghw z_)>aVoe-P6--({3Fg|E;5d|!1K*VM;PM#1(o;7VWCZdC5{X->p2&n6<9I;V){qRsq z-;qMT-4v(A&WO;k(rrH78I+<)-3f~X`4&cZ>20XG{gLCMnowO$P)M0{sI&~;fz~Kb z$_on;xytEiQxeg_Lb8C4_|-0_o)~2R24v%d@n9KmBHZ5sM3!vDdrA0uO z==?OacWweDpf%8?MSX@(4%zBQ9Y-?31LiyKOl%&Jw?LrMK@jI6C#4+t^2MoKYPe8n z6vEvvcM<}Y;Zu$%zk+}G46)ih5qrxNTVrzac7ij=CEkz+=9>SO6ax=Fd&BZnMlXb; zLE2eHI-yaVQk|Jfga*s-g`k?P;rSP?ISYII?uyu}3&LZ*Q#Q)4Mc(fYPG9+W_VW#!cmxd)ksiObdg9aV=;@*C zA1jh7u+>Jo6l#WW;xm{-vL-bMr}yV+lZT36wG8ZcApWmf7xT4%BTk>r1hIgQNBrqG zDUbPI$J1ShY9ml7%~lyc0V*kL>mqK)0ZH`AIJ2{&M|rywDOI!2fdDIft~LQHk3uY| z8=U#DJ98g$#b;DC_qxj59Ab@bTaDAnZ?Tz@QLwbBcNZ<1Lv7_Ll^ho@3Ii2e2{M60 z_@sAPyYF9m3#uG`D>6F{KXdC_sX{xOF6-JfJMOxr7C6csr7yeTX#@(K`9}25@$iu7 zmvU_SF%6|7LwvcB&1!izcb=ZfDLRH3sv1OD<@-G7q4%W7S88rDXAXe*!0o{Ywd2Yu zp~%B^Iuz#ibTZ^_QjNgK1=C=`J-EUCK-gX051SWE08g&-*m0PJtoDK#L|lb+sW)}V z`6hng%Z>VMy6jSq@OiG9mLE<(iCa)Lb{lp})~H?Ef|zN}s8|#SgwCv%nkKg+%}|XZ z6fcR9)ecci7I(Ae2AJ~uXXfdo4-L^;wCPDVSMu5y@)d~7BU7V)NRsgnRpvJSU?bor zG2MHCRz1&GMF^VNQJ+M0GQ}J5IPO&4`OE`={|@`vA79z(!BukP0rgSskW-C%vuQ@m zkJgLBJ^jUn@DNY9ncdS`R+G0}CYpdfPumgb4=++*KA`5*o@YRSG!OXXA!1XLS zoj*U^k+^gMsve-amTLZve@(sgnVpRC*branj>{AN9?ix11K@kH{5T78%zxr2=xtyV z69@Z#CXFvJUu$z$D;(Xcb5T9Kh-&$H6U}!3WZe#ER@uhg_2`_W%BRT^)NT=7_dh?PSlH1laS<;p?C1d(0yWM1;AT;vv8n#bSK>in?vYBM2d+)(-h`O7oM4 z-D)E2I3rU4g&vvC7U}T6)Vi2BEiWF_jY17Hb4~V5RHTlcx#hhnzBtfw4fJ?1BsC#1 z{+F1{y)NyQodY1s`#CYa9)PVQrFLly>+ooJvqn1U2qb1`g*@L@TB&opj;+a9T)we& z*{Z0sqw=tZN}O}I_(b@Ss<8`DUhB3&i~$cmGcM%pu=_iWq6WywpGpHJ!>rw(s1EB# z&UF7$*;f?KsL^!dLJ=S{tyYtsTJh%AO$R`2@hhi`Dm{FG1C`ja(mP&+|ACg6&MyrY z*=uG1d4`3`Yxl~Qdu*acGeKEYdee>#>DmWAzA+j(hu@%Uj`ZvGl~x{Ir(ZN=QJ+C^ z<|JB6WfMWx+viYCI>9zoEFI<~>Il!BLdvaGNLne6I7CCXl41tGmdC1f^Q+WW@Fm=q zU;A+N`hFizY_zf-_jUG&YpI7cLv9J3Fw#O!=oHaPy}x^x4rzFBff z!%)I8V!D+MW!=9vrx#!%J;YB0KI~C@Q4NoewOtQefnMm($Oidu51;>lhey-v1X~;n z2d38iR0&;*GbzdUQ^6dzIexOdYR zy?$oi*4=685}pqixNlM(rp4oP`3MrO;B+4IuYi{uf0xPg{L31-m7r2B)c-2y?>)yf zBg$FXD4qv8s)m<{c@bdS0Mx(2dG44Vkjj563~2U!z^Ik#{|b>bIrS+($M4pqI&d}j z+%9%LM<@Sn)!N?Lq9;*8qsxcD2W=hj4#13jsiX1iI$VT$aEGlBv=&+1qED!Kq3hC= zWtNVzn3m=YXDGiBvs<5qLFS9L3jP5%?OkFAGPeu!hfkM zJJ^^18@U#6ms|~t)_IzTa3+YQY;xRK?P>!Bmo|_z6(#U zj6ilxu{o?fpTScTNU#{y*CItr{W)|E4=U~ezxzaS-d(?~~l2CIc4 zvX0~#HUI(-YSIVypP0z-3he&`cLElHt(^gsn)RoeSHId&am{)V5~;%6ipxT;GrY*h@D!XenftDa@JfKgQm# z3lI0JZ~0PGK;-x-cTKBy+Te52>oG$rLR3o0T1 zJm2aW-9y?t`yYxB0)8L3-f}*!qHkkLXrGBvS?EiWy zDn06x&9fh0RQok{+)`GGqiyl|vyJ9AbN0H<(4Bmr6tZ~&Ztl_WK+-}D{oB!&Uczf6i3 zv1(M14BWetV!jz?Y^9$3ZhB)P0F6?+e&O@gwVWljzm zC*o)qySkwC%yo3aZ-ZfTA8yP~cDLYr99+ljAz(sa8+`xHOa9Z1fzf(kOxG-dzLyj~ zZIr^^08B_@2#|^-f+Xd%uxgDr0CL=9VQI47jHBVCnDYoBZ}08>a`#*1T@Li8H8je; zI_uV`P^n?R@1m>`(>=S)h)}SMIgcCjS81vYTBpx5tcEoVy`wcV4oR8AgeGVd({3Bj z*b9c=c_@XW#Z28N!vV`OKi*28M-SGmSfE-TvaQxTIy=@Z4qvw6ymA6Mo6_+oUoC-{ z&BGSK*qVIeew-(-9y!K>ikmj?S!%*9X7lAHnFr(BTL*x<>Et?siQW$bj5D;$DTpIo zko3K|USns)m5xh=JXZ}>J~`zV8~{7B(Y(nmefEc=m0!d#lEUBLi1a_AT{dhO7IsSX zi2B9RP|55G0GVU-pYYH-oqC-ni&t=Q#{z2%m8BwcP-^36-6QYc z%AG_`N{^q>99u6Bs+&poThsJx1>crRT)I654!%&T@y5sfSQiXWqqy!Xl*IZThCN97 zm_CBPKRfay=$I-{A!-KNUpC9H`Cz0}CCXESYhXlcT-BwbkOLbOXJ|Rbzs+H<;~r{f z({JATxwVEyae_R|b7a5#7)d_!s+;Xky?!phLTt#gz(2x);<)VzO`7SM$2AJ2Vup2xM> za94lnVmpq@DUU^~BU|!M-qIbm9m!D2t((A?A!k1=cB5a&r#%^LWXmwY-aEwwgtIf}OQp#R5;0veI2Wlm zMr89HPkUVi06|P(K4A#sxB9dHh9-%~>4R8UfI2q2N?yIaA^EBAN$bLxkV(_vUD*2U zD*v_Ona_3Kttg-Hc1`+n(2yZO)%M573xqFklMy!_#MvL;mpSUd$g38!@LmeCaLz7{764G1ZRG)I&;>;*Y}5D32X*V@c%4(+jco zNn%$@O0OrXDQxFUbAuauX9xcuTN%EXT{4}KDCqp^g5H3BjvPgPvgA+$Zz)7OT^cj8 zOM3MtAxGb$eDY`)D;saboo9+LUd} zN(D}Db_S4@5mDpLTg$_rF~fyQhO!`;^aZ0e;hq+Rw|Htas^G{wCBpcE?N!&l7uA)6 zUES0*FvD695mY|R*ty@yVlOWv6vjP!am79xNa5>!pJRxm%UFVQ3q^M%k$Y~wq-nu>1`&B1c8AS&|g&D*LIF0H)mLL>!i`VIZR-ifk6hG`#&gXMN++q={Yf4^>Dvp! znE;!c&q}p|dE)617>P7a|3zjK5r@mrI54E5*YeK_IxbR8Cl}=i2~#Z4%6xtNm$FSJ zD$+DPFKA>5Jzyo<>i%6*4u6D1`YJUgsF0%`a@-t!z}DB+$N-7 zL%(Z0w#}`QQn_5kP@g?5{-C_S7w?n>X6&C>6{r-|yf?}WypO(7{ zWBL(+7C9oH(=h1?@7!;Z_*{)Blzh-(#dR#On~Kfd+rJC_R3w1e7QkjY4mNh#9Qzu> zCWg3o063@I$x8HyS#k+_4?-g1G*M_)wx3k$Zid6Ky&9}G8^2%g+D-QaBt}MDu6KUR z$SS{eeZBmtG`W!l7P4;rN8HXGt2**nl?w*jFB8M<=O?8tI8!N+Iz(Sa=CtwReKjPf>$I|%aqIH3xBXE z*5LTw&QOH5YQ;rPFaG>yfqG}V8jb5#6CVLaM6*H!mI zisb4oVpQrRZ8UN3UK?M#bPtJJ_F zcj+m+O9hR?tw@*ah46&kj!zu^{(3U7Ak^GX6DSnL&mK6!gnYc{<8y2%SFRJ2X6`p{ z|M+5Ffr28Zwm<-yGPt*)Yo{h^S_uLs{bZbYcpi)nah_AjIeZ+l>x#|_v@5*v*ytRe z#ss)Abhb^43Qw6bSFJQgcMEZ3j_(NZU15ArL)ysPgMi+?#rXiI2;GXx`?@6E{3Ye?w&lJsFCs4 z_U8o8M;8eR;)VE4gQ(w|&Ape7*}2rv55M;rFq_~vw=`KeUU?gL^|4fIKMF}b04j^z ze74!sFz;g)2?;4LP$G3@H-50+N6-s4O68+9C#9XVHluK2s0PMM<`s3cWzY2>gw9PB z92HVu_>^TI33AZj1lVDGKb90~jE=VnFX0nX%??q;yE@NDcvTy*AIrGZL>T4IGz(ep zylo0<%aXBtI5IT3_9;lVP|*02i@qMR%Y#NiWB2~NkV(EY^>8FQ*d*^>xAuDJH;c%5 z&W$!$FvZO?A@TDPK!K1WQk*97dl`DfD zhUQRlop)n#9tXg4C-=#{x3#Mw8$T9ztnII**jW;OnMiVods2GB*JpU;e~d24Y1w!N zeWR{cSR2}@W5j(KwlE&PmQx05F3QrVSW=uWtMtD!qP#$GZ#Hy9J#r4X4&cG$DZ8t& zN6(#B+p2AlY8l=M+uA4qQs`X@@$P zQw=Q|Im`TbK_1FMG((9PVJRh7junc#$=`+X#3T1P^bmY;4Tux$sr(y7nDrWu_YP@p zLGE^Aj{@GXI$#fBt3N z_2p^!+K!BrNLS)O_7AF`N&vrfrPrcApB%wPX2O?;4+39g)$X}c3EQrd=OFdDU9;b} zSQYrnZJs3&52!dJSjd=0VzmXxpGPc){nt2u=(wn=Hcs-PN2rXw%zC!cU80%tWmk4u z+1Qg?uQEFSf_|!`6%Fo}+dNUngVdehOy%n2-GACXXOYzpRe9w^S8Ahbf?-+6`R|-h zE@M4GR)wqhrU~1W)i3!Bwn@!y6F7iI*;N zf-gNal}34c96Sjzo~!H6p5Ib%w_GKtNn-|~49#b6YRl_}TIu`ttTbvSh_93zBeiMv zYr+E(d}7K(I=G{9GHZcJwjvfKbFw|(D2sU$(s##S?WG?&I?Oi2IduGv&xBi+6CmuU zZt&-JQXD3lqKODx+`4kf^+Ya7RqVS5dh=Si7x~1=(+>DjEnPHWc`ZrIJd*^pY1Bi7 zN(a#U*f7!7_0iZ7laqk5`54I6o7{az!6~HCDToC2k%9Nwt{py^A;_1XfwrC#*u~g- zB)7z?mK#CMOqOF_SwkAx??_dfL4NNWS0vuS1O11nNJoK)Es1hjcc*~2(*2+ci;syG zs$~pZ_u}@--kk0||JO|k_7>s4TWKkVB2_SNLw~U6s&-%=ckfzGut)}NcjWJQ*4!7I zDECJ$t6_G*aXAwCd$V#FU#bsx$8$HQbP~iYz=-iDS29Og_RtWg;@CEg;>~^U^Yc<3 z++-B4csCffRZeVE=a&qnfNFyhv>&usn#@<{C%WGCj7aElQCWrEr=e4BeT(aMJZKWJJJj7<$)-Baia#l!2(#;deene23G)^=V&5~;(NHTPk(^%7y zNWB(jl*P{bqE#H`<_e>2JQLsQo^~T}`WFpji0MqMSox%Y;Uu8(<*gX?QA%jpR~Y#xU}bGQO9eso|4!+T;jaF5)dK$8&YD1aLE2F4hvh%J zLNBnOuIzq2?5L@a%d`q@KZlOTN}$-OibjGwU!>Zfjl#`-H_!F%z;jYH2V)ijv8$H{wZ-69Y=h(8 z{3`;!DUs!RjXQbGIY7#U2GoX!?|!vXF*VXp)2=C3f-OQltlmC&%Tu=3l7De3bCuj> z0h(YR&_~abj2L?^^;05$47y;?v1WhHtnE$R^OECn1_j^aHtB~TRp=`vQqS8<5<2^O zU+D{D;(qGN0&_(d!rzJ>}dDmNH3heQ5Rxbih%Jq zMeEGY)@64&CtUzSF|~C%R{s2E4VMyMeC{?!uo=0vE{=Q7Gp}UROjH^*h=d0%&4ZQp z^NcSAdM8|-_W)3p)i4aML~?K8Go{3%fJV^TTHX1- zMrXcMeGI8S;Yw8aZ8l0Pq$3xw{dZBrX>5I=RLM?FR-bRM`o=wpI%*#;zbjrg@-0FBtxLV7%4%(gw6#=$h~aqARbQ&<7Dc@Uve@Vf5zPRK;it3e)*} zM0(@MSg5~xY}6|!x5*=|3mrS2dw)_-nI@XevLSf-#sIK9%lj$4K0HP{hTv2i0%y|J z*j|{c4|YlzYh*0gko?t#1ZS`k1I~5&wh1@6{uF!HOk<*3W9G2Cio#BRKiF*C9Pf`k z^-ADF!XIqO(I9pVb!bp9?8}DBty5pQZ`4?--`KgOJ8In@;*w=tKBwHz9I4;#Jc7U|q|4Oz%h8&X5=gj;O5QJg;cp7+F0TY0E1vT9`r41duaz3zFKuxKq?0crRrXE&y6l5 zEa#%n^qKKR=5#oIeR$6i2@& zsE}B;y7j%X#gGc{Nf8gH5S|Dle^krBrQ+{uT2s*U0+7RwOZF>id0V6sRqFiup2Ty5 zh%NiRRM<){XyhGpyIhi0#1F&P246^DKLGA0{I)t*<~tR0L1Z`!hU5FqSVA>7aaTx& z2AmY>f~4wd?zIW8UQIv{nGt1i5&s&8sCEM@^{XOR<#;F!DLUl!UKTYtE3m#lK-sI^ z!49$#$106jgeWy2FU$B%E7D0(ddkPS27Wyn*-rvq3w1*|)!j8AQ+PrM%L{*#WyyNG zVp!`WUMHYs7^)pcX<;nuxh2-|md7<;P(r6ttI+0QaYaH8e&C73y+f@#@Gwqaq@JKm zEHzlt=%TH>*Q=r`D1E3paIC*-nh_!%IfD)!uB!T&cu@}m(9=RDh!9Tw_PfO zLs6HzOk_(MxS#L-)$KnABJYJrU>_e|I#xqMwozNoY?QeYAD@P?(W9nm+FOiOmgu8a zTT7HddPhzF<)7HIKD;go8#ui8Qq7fc3l_<58l3P^+ShG1P0ts(9v10J_RQW#wt4Rc zW7m@6Z68LoHfodg))~p?N?)n34+__?n+4S%1P77yR1AaV(Yh9ulYgT(|1F+^YWX4Z z*c~#Ks;HXYrIIy3i#};4a@0&LDki@HRTEXeH(eZg;hbd*NU$hD?rFuu`hv3RopjTc zs^!Sf;{9Jnu2U>@ww|55c6LNofZy*ot6{mZw?D6X{e#zDX(qcv=bwty2qRNlzX}D} zoQBb0wVDaGVmEjnIV_bg_RN2JokPJ;Z;jRV0(N@+(4ezr-n#EtOKGvm=}#R({Hx4N zmv4SA`>JZp8y$&*L>xNbUMWB=W*fUPGq8)MuvQJk;|3*?3`L5CkU+$6SEtI{(Ds?E z8_Dp#zMut$0fz9Q;;6#`Fd({@ux&MBK6z>Pk&O4f{;*x;5+@Dz=O3X0m+SpIp`pJ+ zcE8Gk8=<*rAr{7yuH(X~mj;BC-G7aqVUZrml)`0W3dp8mR2QIA4Cb#Knvr=Npyqk{ zEx;eCHuO5w_k+wNZGI3@tgBW1!pAz6sEl$TZ@(wPg+`5LBx&7BM0k-%nFs6Qd z=abfme#j3w%S4e*BZKvgl2LmeV=(Z~%QZgByrKl9>UVJT^Y6ahShi%~PO5loKma-* zIDD@Dj?m#-E{DskdzIt+|AN?SsAe?(e!cPvzpeVC>^wN(n2~)lcI|`C;+8SrmjJfp zt^j4w68{V~-)e2x-Pm$u31?*fx7_a~XOozATt-|f<1YT?IZznSs>-jtZ-0BNv>8zk z+f2cEYlBs+(^%EzbWF;)e5hq(3*2TyDSqu(ew{nb`;wjEEe6Aq_M6K>`MY9Ak}HQt z)jr#En43jfTlR_m(v?vAj+85 zd^&vYyHMAq@~(12jkPpPOe#OP#SCNf;T6gMNJTQWjOWnS%$-m5f~^j5r&Wz_B$M)j znYZ>m;?`iw^-jdqaT#Xf-b`@yatZEf_COBw(2wZF0W-DQ+)b>)Id7kWsYI)=2x|g1 zo02_{orCv8#0ff)_X3|>v~?1Y@mPGVHGv&GuP#PBoN>Vp@Hdu|!mj*$c^9G8IV+dE zLhS)7>@0%ODQl%S5r%L%(TNm;*|tkQZ%tRDRdYi}mAUp>i#HGFdZpP^?BPN3n9b#; zB#&W=9+d6MFn341V#sV-gu>DEfLI~kvDzQb#&hp9z5J4X-NupcR!|{Xxd? zQRKqnPn+~@06Xxd&|tcz<5aXi6`-x&M1J(@Mlhu98^1W>f{C{`wVb+hplA#YZ zaEFxmAm)~{HcP%vD&C{8+Nif8iv)fd7Q)c}?0j9nEJ!9RH7ykB=ZM)V`|x0ho9(3= zt^_AfF?~{n>WJN|m7);fniKb-I^&Zz*xQ*mROCDx#!{wFTz5RXzvFXBxn<8lh&SgK(v+$odnCPjwVC;(R5$)AdJ1^K7T@&P@>1r{P7HJb>HPgu3 zVCcYxoO{cH#<%EauLZBc&LL=Nf%}0b;vqjAg_21~8CJp&7e&;WXr~$7`Vuu7@%#}i zJN5LpC0*p+5NqG({~Hn*Q~lN$Hg&7Y?z%N116rA&yT3*xPz<+-<%B2~)N;9jfB(q~126SQ&GkI{qwzXnwz-XpGVY$yC$HSJoNFgHJ&L810n807cW=x_wdHUQ(Bp zHnY3MStHFy&7y*NUm3_*M_Y~M1-)mEAm8WOZ|Sqy z+r^^0lALPYbFN70{%&DB{^8T-rQOmC_YMC!d0--?;GW)Sn^c{fdW)>$GRtu9C`CX| zZdYPA4eXsgjDZw#c7E$#1FhyH;T>uHKJQ^RiyFbx{tcRZVhvKkRwl1nEproq2Yvjo zusVgZzHC1=kKb8Bu3$VC4uAZ6hJj!_zPn+8X&HtuCyDMrh@{k)S$fqIn|KwfI9icR zx4kJVT*sX`$A$iFUpcH;0aQ})sjvzDfU$uR`(%)#s;DROJzl!`-L0xietOMGe_Q&5 zY3w^ZtfC+8AEEHP>DXbiLCnYq`7cF6pFvB}A3KBs;U^%L~ItvL}mmV`jy5NJK1o z8dP}b7x$vKfGU&=LYynwV^(G<3yZ*2C-D4~n)0BjiBxTj0463@4uz6~>@od#-0!bh zcCy@XO5N)l=4*Scr`n+>GmagasGcBpo={VC9;U0IuIWq2$nbq}a8=cm&9jCp(mx{bqz`Ja6{n?-9E}QlS4K-%> zO@3O_Sq!}QkL)988*n+rbY&Vd!fHAuIb^QtJF=V@EweM!mesxIMWL2XViW5;zlz=k zGAtV^tuwX1kLDUr1oYIJd_H}>z`H=~zt-8*6jOK6|5+4h_ck_7mvU!fuTNubaA;!ij|<*bvWJFCj$%yb ze&T+_X)>xy!@H1N9?Gzv_U8=Q!zNL}qZ9nbJpfou+j=*z<=fRIJ06~x^xbxxmebO| zj_4fw!|C6#+^R)5a2gi4_4Dc7yYJ$m4;S0e-(HN&aof6t{4wQ#YsYxap!m)QZsNTv%SDMV@$TYzQL_yPfZX>IuU;YZ-A3DJfX~(} z95cv}I4!E`5^!WXT`{aIJ!acac>GoB@Ky3NwFZ{iJLOx`_2Q>U$deL%q9I&BERj9a$82Y*vn<0K#an!KhlL}G3TUh% zFmKuY@5oZNu~?S7=}|ASwrLgcr@+Fh|3fmyUd_rWGRi43fTPq8Dwqd5Fq`kAY4tg4 zSd9I_R2Z#p3QpM`dhbhq_pkfaV!m^iiA}QyTiOF|Fd@!}^R^*5m&DuI7*rm9ig_-o z`A*YKQE=ch><@QoQi|Oo^8wdz1C0-s8WujC4VH#YJ2(C%$6x5CBbyi$ zt{}q`pz5y{Gg6>Qc~qhVCcbh--e;{6WT7y&-pS&W>9@~~x=Oa^km3jyY%b;HK7;Uo zHsbDe417u!$IZhR3&ZYwv^$BYY)t&V+i_ZL{u4IY_!~oUMuQY^^$-|#?}u4?QIzbn z-=9KdT<0_b&AUz&JQ4(+J72=5nYusR3$n($|7mZ3z3Ttqt?w+ATPu9$E0JBXSk90N zRk9FhM*o0MTI+m7=(#y1S1-xv3ls9gT~d4ALlZ$(`sSvdB+~jfzU=YFND6DvwrwXo z&={nYt+{p>{~i6Lg>mKGqGv{E+_Tq$R~%|UCi0))%$~ezh~#wMu-eS$2Ql*{bA+gjT{CEnJvxIMe46XCJl}isf@k=b#-?nsqFCF zr~LfMOYL_UA#hHi_8(SwozG&|Zj0wL4G=*gJLke~Ruu7cPdhnZxI*HR0&Q+cojAs(+7X`v3pO@i7cJM{OB%SUDsaVh%Hh za;gkDMuj;p)|t2D`_Z4bb?v9l zJ(yI<;Nr22loC-4#@xMGaBujV#HAFb6EJLZRR0XVWM%22p4gugV(6Xz?!3RR-r67u z=e|sfW5XQ87D_>?xcqOHo4PzF3Gj+oHMPYbS_U_v$|~qUHTQJDPbUtXJqovx^Ebh- zX8J>sc8>Ir1D^d7!>E^Yx}kHZqe4dQ$lV|Ex&mqlvDuBKydMc=nCoW3(i3M{sx;~$ zxZT!1S>>#d$8~#3yzh~Jf>&DsqsEUfa_LH6a!M2w0B^4(>`%wgUxxYR4WQ%C8J+D; zAtVETK#pdfFJaTuvXNc3q2A~JVC=}fb>?9~n|mpoGoliblF5hR%i3x)>*D?-dbS(+ zz}-S#i1ZD9w+J4fZ6pPGBlV_r|AtUcntbO>Ho_jL5*3Coe8p%aJjmj$URJNr`8q$e zWEA;|h)0V-rI<*zXlo@#>wjZqR>c3_WG5v5?`B{y{w3Dz9Hbl@}NgiAH7W4 z+b!D*``2e&$v{48cGnG=U;^9`h)ibJmKy@2PtI-jq4{gJSF0_vI2_`P%qVvY9$tfM_8UXz85~ z{`osE!&~{H2}i~TKmdbpy6A|;GeeQn813zw7t7l5T#w><@sT|sjQU(K@ZxV73``#P z?KJ2b*ZeTchw+=>|GE82QDAy0(sXqCqkzt0AFBK4p8Uez%7YGQdciCg9)8SdO{lzd z&-SrSI_hbR*aB0eEa>3DsPgEpE{|~bgIWH81IMNV(;zloDUIR#Q|kBOYs;%v`8K)Y z(KEA0ZPooaKN*E31HmpnHUIV*?}g2a$1<(1f%q8Mo_yhfCQ$5-5POO3791i(qn#@8;Tc`);rbH>iKqaN8$Wg<42#+SqH_c=GRM zZIR8IsYe@DH`mlaiaMe*I*1n1LMcpgnc;usIj=eU%6texqKi+|M0g&y`V-KO-w^|K z5;~#cJ%AF7n9U#ZUIAkegcs4L5*~U#X=6Kp9B4MkpOn}9VH)rTV&&lSfwmxE4MZQbM z!%a{hGY<}o2>S8j{mGyD+HEhAij8x%%z-KG7jE1g7ML{|e>zZ!#N``~IbL!^NXGmF z9x$I~jZr3uJ3klKO{gTmmy4quZD@D4PH67_bDj-9;ZusgRo3RPeIwc6P>$GLR)n9+ z4GTTSEFD+U>k{^QgdvjnXakeON6I-$a7n$}U2G6fm3p0%`~!&};X-*2NoYTXN!R%od7+GOV* zR)&_M^z(ToB^)@nmNs1!^h^y6x?=aYq{^CAH$!UeRNE5v%mdH%kM3DDC(=_XlG78z zsnsBdNJDu1j^uGgZgk*ixwN~@Db5PepRw(ovZ6-@oNd|83wK2@{#JXPFP$E_3DZaJ2(#MQ0x1;J85%=?xDf?nGZ9rNC~RkAh(Y%FsMwVKD7nn$am` zSEpc3;WrG-(wy9<(OpkA#XOIf{XKK{DcFHa4OhW6urj{&TQ`+%5*g|wgjg2s!XraN~Q zuCM1K-)C+&+WGb9h~@IEDW(3wy&-(L>24cg6=##8wb+liX#d7r-L299e)lz#l@m@Q zT`Qq#+D|LvFrYVtRKY83q9%fgD!ylLbdTWG?es=Wcpokf234s^Vr1(kV(t0oy&RJt zeD$J5YZ3Z?(MO6B6+V}Z+JKA!se;@1yQ=x%v$9o2_9)gKk{6syp?~gq+4*x?1+DXK z?^9UXJ2#@Xj~D1)^rXK28p|a6IRlVVMCqZisOCa9n3T;+`F1cAF~FQYFPeAWM47;XzN&=xhM%i`+V-^pwN&nWrFu(IrKV)nn=E=TIyWY%xbkR6p9=QUdcTfCJEyG z8mNFcfCwoE{+XTC*U=$ozz^~ofkc6dO2hiu)lK{YOk6OWm@xVuD0}F}R}GVqZR*@+ zXjs^dx(1=={DsKKXLJ+wlgT;3f|F?|c8gAXn%sxb0Lmrx@-{Be0=(24JGT7=r6b_* zd2BJKP^8(bFg(V>TBW}sli2;?Lj~eO%Xb(=N`y@OQMqc1o1}rEcS=If>Tf*al(FaX z(@jlpqj3DJJkL272>jj>q^5U-UpNzZqr&dP|BMyx>_1R>GF?zLNihJ(35~w2cdj$} zitlL>4N0rMDSui3{Tw~pvxdAs9{xdRXSYB=M-f7*a7+5W(|^PQTtF_3{&A=$kI_ge zY%WJ}niP5O1xFhsusEY!r0D2{`6;DUUM-&eMJ8Q zb=*9EH`S38IIE)mWq6~l*P@x_%jHK46~8hrY6mYrnNP8?Y(jmytye3v{1bA1R299= zu!QD)-R!WJeM0<|;=pzBw$9Gt^db)Ypd5-U>s);uy!dAfk!k$3RoXv_qEFfLFh9X} zn;+>es;brw7Opm=kyJO2Jkr}%Iy~*t_oKgb9puTE45tU2kjS1Pr9Uxi6H!AHTgN^d z@O)%bzRIVzxQH;R^ZJt*4*BrD;iv|mt7RdHrSs&uGZ}$T1i9D?Ty_SMknYTNl?Yxt zWwQrTO34O%jjt*%w0Nw%c*(-n8+FPA%gzA)L$bGv-Yy%=UVHJZZ&UY8mJSR5&kOwn zoT@^!uPoWlYX`)JFLHxy&5z95W&*qmV}^VIhQ%$`6Wo}b15k#mX2bk^fflCD(7uRW zUhl(YIcePUE3>3X>(VB=@0EL}A*hC%f|)K>pY556tpM!v*dJkcr_2snw~t*_$( zggq{eki4xlH^#7s{HC8&-9E~;8(3;MNkPby+nS;gw{wTPhCE-#o@~Ql52m)?gPmBF zf3=k}6Na`A!fp@%KOIPing=uwW-a>WLbkyR^S&6&b)z9T1HdaJf@}v~{nB1o=rn+b z|5}|et3LJn-Tk2yh7mdHem#wv^DBZX1j$kk3^*b-Y9KZB^b@10Ba z>%@aGmmeAoGc^oWdMd4Cc3UAnS6II1iA4dTlABiC@kYuhcv0eJz@0{wT=ng}iVCZ< z?vhWrllz#Ck>Bn*{2%p5xzkf`m^Dg5`jpw6kXB#kvqmS85`hL6p5gCd&o zISzg*NcbJ2AA>P`WykOh3S{g>V8_dHJwY{1<{E3A>H+i*<)l(s35Qn#O7SxU`pM@` z#`q4Vs9fmD#t5N%Vze+W2QF_2pt>l_z5+8>QT>fA{GKmZ>W_>|Hrmnr50s=n>Dw#j zRis)bnmaSR8RAfw4Np;Dfc#t!oqzQ-RZ%jfg8agx0j!mwjO=#i@{@2G%e80(*9TAd z<3jXgt0TgWDAeQk-f)n_i&j}@PVBa$lzd2;S*f8G`6`@D^O5XoVFL$SMzdww0%yLZ-h z$G)9ytW&D*4$yvdl~x7K>z}_=aPJ|%lV{{t1sgm8O%LhE_3o5@;kdZjEOmk;OWNMK zsnhr}5{1#w5GT3mIG{Y_<>)wZ&`q^h6x2l8UfuOPtK77n2%)mn1U_rZhLp zY<9yC7W1ii&OcG8fynMO|NcF-V*WC7nEv-@EfZj9{}0qBV;@Go>R|F8=)%+NnF8z~ zPRP&7#%oX^P*k|gq;dPagD3j#eOIJmufGTLNq1s$yfu2ICtJogTVuIdN7&%iym9>EXf$gU(e0gK-e} z6U_ji_9e$2Je&Km%5Xd!B#@kQa}*NjyGNsD39Q<(>RE?`{>ftxyX6~TNY8yPo=
    ^!*!W6em2H5+jL01KELNjPP)if^w@{JyhF3TD~Npwo5e`k&8v_MdS`ozx&XU zmS}0P;fd~t1F>um0~H=+to7d@FMs1Dq~S{ur94n>!ohHd$0e_s~V}Vh}Wd{&*L^L@Al2at05CRhlcny!i*# zXT2G6c+oiWyv&E!@w)>fx=(&tlHPiQ>MchD7k~c9mQNu84he=GFK&ww@(s0p{F9*v zC~MTc`|<#9Y!?x?E6rL^_7+s!h#+H{T`MxVwC_C%x8b-I*eL@XtrNk^z+4yLvsoXt!Ao4r8~GFDGJbVUZLu|qeo3u_ zDr(zF$VK)e_9iirx|YJ{<$3+!zzmxzt2o0oXL=EBtCV+#b`VfTl|JU^Lz_goG6{H4SYeVJL*puDkI&8PjJh+m2D)h?Qe(|2ZX3MNYCw1t4>N9wclP zDEJ6w=GPuJLu{tHs81R?@MT_$ZcEBvK&)&T-Vn9(;sQd;M0gP^gRzroRdncK7X+X+ z*;B<~EK$_z-QCx(-kyEW7AS#=eD$-spQT)=uv&;)Vl6^Ypa~ENRj8V0yq{U6TL(f( zGsG5b@ueVN2_CMBWpOJ=ULJH?ZQ6WRL9&lYojk?Em~#6^isTDaUqMyV?a+!|fJ+K7 zw6k5xVT|^*SO6#+$}D}|Q2wrMwd_pO)0Z>#zevdnu*Nou@%{V$=ah# z7;L|drxblu-UZ)15zeC@fj?>N)uCWyK`^{R_A zgj#bs@1iH*;-X+9@}Ir%2D_NBsk&`)pT)Q<@uIPoWA5}C-%RhuB{3@lVa7s|C)aq zgJ?{u0-W|Z570XoPvk@8STTI+p3#y9{}&rW@mL>Z4GlJEmL_d!1)KTY688L1kZ zC%d?8!+UJ_gi8lPi5HE%X^RCS^>Rh#U;IKm4GS@-BR$LknNc636~s58ND`SKvSYt6 zgam_REA;Bknh@K)=*M!oW!ft-}0oAS?`HFbBkB?Vm z4+0aXL^SYH4UVSa&rT@{8E4L}nFnsqGS-W6fw3>opI7N**+F-SMC`pOHunTS;*-~b zNwZ-X3&offRX3-udS=a9=SVdzTiD{zo<%+3e7ETS@LaV&6m&>@wF~%EP@l3MPUtIs z2ocf3>EYtiU`)ZE0G)Odq5t^s+g0nEC+|HqH~0R{)Q%)2P0{KB3Xu4TsMKR=eP0f= zfM%?hSIm9t6{Z*5&=fdw#*kRCpHpVaScAZ+ zn+G)v{qiCw3jqpjW_v7GA9GSDUvg_yck|-6WN3PBwgZ;_#U(5HwzN))udhYk@zVn{ zH^&$m$4q;-wW>ZNz<}ccjZ!LW2jcet8Kn)_Bj@`}RIWvU)bY5_m@6leQ)fxA(CtVj zpqhG?N_x<`zdkhnVhA3QXY6@#-dDS88+-u9NkVDBEMO}B;@`Yk`oYLuc*6Lyw?#fo zGq;fz!yuTQTt5KdLc4Qg{^SqyAXNJ-e#spZ+06awbz_)PEr=ua-MTq_%Rd0Nr4(&(et&DKE8aZPXMzx_+3ZcY$Y^FJjk-MT{d(?exeMQ4x?-eL4)eW9&; zTO;xF4jAnC;x(%+nC<9;Qa{EP6uUQC>`o$qQX(Pdqm-cwX7tyj6*7gG2lVv1^O>=R z&h7LPjEzTK-{gEl!Wz?{Z$ z>DpsAl$d9n9ryf~a{#;~3Lcp}WYie`ondkXvk)Q}Z;`4WlBSow?_DDAYzm7c!DFWs zFn{eTg)^OOO8iRkDWlj<9mM_)PUPA3w|pzSSER?b7ve>hr00?)MYo!G^rXcO0_6qZ=)Rn0HXRVL$jgF_Yt=VdUMHpLGI7_4`XT-)w$452Ec+$H2bLs-b~Y2JyM$ z8FM@-QdxhR265A2O-`w{@3_DHD^<_bOi-?d;hf3jM-rJG4nG5hanV^T}H-z78iv?!~Wj7 zhn)n9cRRLHMcLssmviQ9PEI&BVev<%i1Sx`FY>QKj8vZUw~J3}^H3^WTyv6>3ou{36q2vgb_*1y!93-lJ6<2!x`L7Yv|4U9JsugCk%mp;?sx~!LE~k)K&6J z#Pju)S)^G9A>sI;9l=;R2QKIsS&Xa8E)|F_pa`j4OR7cNv#Rx1Va{a5qQ+m_l}<)v zlXqKr-~8E6EMO|?B<#Hap!z@RnQ!t_SBFtNsCIS}^zD88;-UrUcs|gVKu(WYK0*w> z@sO{aE3teC>-(Dgn9;qx`}%LQ1t=SU14E?9yYAbp1s5vf^@VlB-|YdI$RXs2QMZ7M z3|uuOWaFjC#W)}DKUd%LrzREi!pXaaWyQZGj8mFF-WbX~nh9JrVm=3!WrxE90T4i) zm{%-ki;_9tKeV`d?9K}~c(o-W*UBj3$?Ov$ixe0`|Bdk?XS^>YUyN&e$INy`Ux5;{ zG>zLWKl7_d?42|kJSWEcJq~1aQaPEqMvf9$xxM-d{;K^;063A`(vO>4wOh?IOkWS?--lA}i%wNwb55VCVEZ$u z0Gj3gIEh9Md-30>E(0P5KnC821f%({3!Y?g?)EOJq2s(_VNjgpskW@2A?xpQ3#kW| z4=qp038?TXqG4+~Fu`v8^+ZX|{Fxd2K)8FZE%&_GWhwZ1UZ2j$KiA~XYH*~~yy3hT!DvHPZRu&5gY`w#KV;wyY; zH25#pJC>11>5!i>K(nm3gUR}WyYC;x{|tfQO!fGw$E_Y9 zx1310+Rhr=2aq#UBLHJu{Rfp4U2jJ(eB3Wq`N>5Xv$=KkJ zIsSR`(oCN9-=JIOsG$?~kNHn42(mZ-n0h`!dS z))5soRN8x0;QY&t+5<0ILs>y&QBwOuIRt0ho9f-yhY1`?`d_V~vO0@H$N5;?MkVtp z<-_K!BaL7TuSef=YbEHj&##e(YOnF#$~0-QH84Gou-O=0T$UAPYn zN$N$fcSJj#-geYj>5g7i5k+X=h08DF-4`#hK2!?iS8Wx#OHGC6s6Q}1j!0BWI1YcI5mO0Mymu* zxRji^KIJq^}T+$MPW{3#`z^uVZ$C3C5WP zq@#^$c2+j4O~*(i^FAr^r{fz7ekgYsR;G7Tzztq?VjXXKvc^GTWk?{x*)l}J6)uDL zdy>ISHa)A*^{rO7od=EDqJA8I$hB=o%2t_z{G6N5-I7Rl!0z=N5^K!(7mS+)#XUj7 zAh%86o8Uq(Se-rvOqucnqr=E62ahx;Ti)duWloj{;}K`)^e*0ONd}kr$U4 z|6G@%udjllmbp6q=T6ClNyYa9Id#NSWNvN(CJC#3b49s^v>rGf_db1?Ff{+WNYXPb z+OQF{=Guh_%B_9aXI$~1Nc8H1j)sq6HzM3jojtu4PHd(R4SWwb4oghCZ2VThkaASp zwMtd4Xy2_`QPJm#$c;}^B%StNnPpZ55_=Z~^Es*Q_Q^rM>R|&CAI2^S7_;rLcta;3 z;M|!A%iN8GdGy#rdk`D(th4Q%mW+PYfl zhu5mrpA=eHq21lrVgRpsxO-1r@uwA8ZCY>lDrI7M|3*-Vw$GJu1Be4`aj8y@KmM8O zmrdtWXW0Ny`2pFCKKQ=+*~^L(AZH|Zew?3zADh-5{fiOI*`>_^-ABvA?KT2bnlV2YZClU*5^JcMK-Fbb&lqtq2sOv19sy~<3kOQw0vQ0{iAsN_7oE6-~OrMbT7 z2tV|v;0zd>FHcDUq975C8H+u`vkyf%bW+f2haa1cSFdjm4#|z>7j+5m|46ZJh$NecBjd& ztNAugE7DC~T_2b*MDB?Q!AELaAfwxw+nm0T-#4G=%WE-+GXPv!{)m7?#oj97A^zY$ zdY(W?B)z8e`W1pdPUL-A%Gc( z%TwTt^k?)VDn(d_J&ZRZKRF?9q%^nRp4=lE|FnAc1l81$9e}v#edxh1_e-`Hd97y_ zWFw$M(_CfYr2v!F;a$n=Q7np!P!kctGtu&E6Z3cF~Ifd>&v{&A-MPHF?qJf3^kJ+!wYP z^?PvN?|*?JXClzV(=#XoatzGoZ5{%gRO&jQB>%Zi9E60x>1gvN#kvGm4WQZ})bT>g zvk%_p=W?Fh4|BK?U9iMH&V;=MN~>~1##09r<_R=>%*tx)K#gF03_%)!dyN1ahIXCmXe zMRXT5$-BH;l`aqC9t-$sgP0ApHN2VMW)kni?(Sb8#dd}gYu4AT&3~n#J7+E7yjcOl zgd;s_b@@PYajL97Uu^}u7~h=+(Mkp}o#u#);;In7I}XN6CAT+G=$BXoUMaq7l9DWH z6lwOkq|748=B_8I0L~6vezI`H;Ch)e>n9v}D>IT4JCd6vvI`gv0u#Jybl0@|1i66v z=$cbzcxEOW+_nJP6{XOJJRJk^;-m~o&`KBZsIRNt1r;mRf=Flw8W4B0Vb-%;V@aUg zSU#%QVAB4IXB?A#4%{r{g%vlVBGm~DL{BVh9VyoSjpGp(=ix{LGw}<*iN2Eu~w8ZAR=dF#mzZtm0aTt_fdL z1bjLA!W(BDA_6c0%%dQDq)~k)mZgz`=1OP@dbQ$cbY?)CCuhH4votvk#Docuk(%2oj9~L`N&gyb;aS_Oi zKQCRXe_3EHYoIna5QH%H85`=|{H!PoJXa$iO;hIEJvpm3>N9_;_e!!s;|?&DoVk#H z!1^ZD|2%grtJ=8l%yxGlM}I_}vks@?Z)D$$BA-a<+_q?Z*%x%p1r{2*!$Cj~977V# z*nV%XmhRZq&lQ6~OCkXn1^7`{%~S(#X-(xQbua!*bbqL^;1NB_-L^>aQ!C+c z432WMWZ7|QT{$)YG#G`d3fwiX%aapI)hHq;QX>9xLC`hmJCLc2MhFJ28F1uLG|F3B z4{9H^182MKC)_@=jMC)%&YFgaYwC~(&1_kcDn5e_EpkDGm?3N@YI!iO__I#S`BU66 z$=cqfjKiIhf{D3DAo#hUt@V-CgOPK;buOTw;KG=^BjRAH%d{^pOFxhV^hBo_t(lk~ zF)maKTPH<$E+Owj7X{xe;?Z-tO#6P9B>Wt)`A?lm&#m_AoBH-}J{*C(jxWvsqdwea z+lM5*--vTY^5g-@@<;A=jX4MD_0Tt6ZQO;-iiDxm&FmfQ>~LswFLz6XMd=e*Z|n*N zh2t|2yOWVmo8xDO;4I7P)QsC=T|z_)s}G3kcZ-`0`cXTXvwdi};G^8<4Z;uSQev{p zJsFjz7uSm{FGS*yxp~jNxId~PPvsr{OWH5Vh_ws}jF(>f+5uDRT3mC#0OGVmBWZA6 z9Kq!Mvs|&}(P(}B-~K}rgJU^0cr^XJn`kbLZrYxR`$$9->vtsQ0bN3g6nbIjAZ)}{ zm^_IjHUj~)17KbMz5kuiOK)7`rG+9){nP6{Pzo5C`aOKk0$Qith4n%GxPnUdS$UoA zHZ(=^c={%eAi$L!fjGQi)#6+6C`CAiG(!U~TAg60$#=wo4v0a+R{mE%?0JI+*uX>I zE1vqrwWn(H#_VWK#iw{{7vvZN%LH;KyNk9!;Q4>@rRR$(-{w_0B7^WG!n&dM;OD?H zE1gD{XYDj{XNjG%WFXR4-{L&>D^QsZN3{L_m$^SOT44EzBdIq<`i*mKVF zryn-4f#{FWU<9soK~HZpq~>pzT2C4eXthD)aF~jX5Y+c&UYPB}ZuBo+yC0B5&d@oL zowY9s1Uu&CoNavQ)zcL_b9y~0uT?s;pQ3AUXYab& zuRvKd1)ctbw+7x+_kxGj>XA29dWqE`T6uv*cdfrY=p@woo<gn_pd z(dsh)Wow6=^Htv%cw_Q$63ZFdT+20V#bgG;i-UaqlXF6Lck-EwP~NZEXAco~wvH;! z(v;XZB1`2IkNnh+K2BF&5E2sIO9M1EcBK&YUxJlOiA+a{)?iTQYw0rfdld^%A@J^b=yn&j=L9cJ>q(qHNDdFb=gDaRygAMHGpv&c?Et3mpx~*%@l$y7R@(;Ul5;! z3%p-|-3H`+8*gDCFhD7yvNst0SmRuFE`oIMW@vV2_y=HNqB^vKCXHQ>0z!sPn0Z^_ zp08YdunndT0lLYwzqGIl;B!Md!5ryqZimWT`)P0tnltodKj8^NHs3JXRr1;== zJuVc*nX1H)jvCRlf;P&J61|~3K!dS%IH=>u5+#U|0*k0&J4Vm+CFz5lq1)$ytIgTs zry|TyyQm^}COa3SgUHk_^wzQ`wgHc6h^Z@H6rVYe?RFQ8!LTZQyN`UOfQCvc7u>#m z`fjJz7VGv7z~l32ZRsVyryd}x7+STMI^J^z^Za!|sVVBJFxv4OPlhF@@wEHA zo5P0_aDPhUF*mvkJnLxG$(c?+UTdY9F}--Qg&^4TT?HR391QH9`*u<}3y%FiATS@) z^Lh~Npw8x)x_|1M@#=>_dNx0~^&dv~;^g%+A%wVesW<^R!+3h(TvnTbw*+gnb8aCp z9{wQ?7AH=&w4W{VSQX`k0!y-z=3nb^Jkzr;YW`r+n@ymI9pvsP4|GdNDBmL;y|6!O z0)NNmRT^(`_oU-Qzcrh=BBOf*1sADX>vW3?A%b=+god6Vwu#sUwdI&~^A~}Rbx9pE zODD8=al4o$m&bii&Zem_-H{ZIpGal2G49`L|G@rj^M#v$wErI%TWDbS_TDR%8nGlB zsorynFzXV7{4)8KTqBi&!0UOkb7ajRO~AmgYaV5r(p8w#!^R7Rrw*0kZhuH$;kNl` z$Qx(E!z2ulu`Q;SSGku{H`7#RMW2bt3Wt?t=V{sO!FdQ>z;>ME4}U@`zb0PQr)wVd zMh#WnbsR_m={obBE;%U$1B<9TJrlev4HHY&Zfoln(YmvBFd)DBqOzY8;>hUVkI3X} ziW7=F(GB-D2@MU`_&%U2rZAJ@B-QlkUr*&f^+N7);V*?_75W33B%%$gIrthYEzbKj z;!esT0T2#J3;N~nV1anq!&Q?5wq`!{haGIXicGNEM9b|1tE3Won%LD4JXm&=Vxovx zq;9Snmg(O|32>4gv@C4k{vHf%AAV`Lm8M`hVFaHISb;QDp1&*g-nB$)y)TRi1MUHj zEClp;p>*RIOD#GrYh1R)gkB;+yk`@AvV!RwL;H-p?ZK!FXFZjdXho)I!d4(+J?LPV zaR)cad-$(`E4eRMAvz`1o|5LDm(7#g4{S54aK%`8azb!Mp0Upu8_Qi-haX4tj0><$y z;o~<)VZio@8{?frJr$}#EZ*&!ylr`N+Nb0kFFZ0aUWn@6K1gil^tN;=Ac8O$?UGo4 z%EA3hU@T?G5JO(+oHFpH9p{A>_&w3MXWB`Ek;shJ(6FHS;q$#}<6g)H^ zKP7$6Rf@+`W*8%ZJ<#IwveGHpF4=H5NpcoqV6ZrBZ=9$DNDnL9XOWI7ns6o{Rs zl1{;sA>n{(yKgYUMQU&5AeR zs$jr_mVEba>e#LBE|72JL0H((l2)v7q9echgU4N;+^RIZfM`P+eVnLYn_v67u$>W1& zk(LY4yN_cR)(k(3<}EC57uBB`?z2rcfhRRdE@%P(+lWNN+Q8`>-EBZ~e$0^BdfBe{ zsmgfP&3{)C8UBkAHtecvea|T8@o@Jt891Gp8uuJN7N*(raTQw!{cXLG3IswXdwevW zecG=k8DtOS#5BEP)=AOqv%ZjYQ-(=}~J#o265aV@zy@kz@&n zis+)M3HTee@z%cQp>ZqLkA6sxm|tT`PQwok0(k(>2WNSwh_rv;{Nfp4JjU=I9|7mZ z3}!R~2zoz~8xAefs<|jR5(VBIvuWs~KADI8FpU%Pp{wf$7K!Y>U2`@8Vl(6)1=Q}Y zel1{C2k6;c2phXtgcJs&Qyk4C7iGw)kp|k{VJx7V(G(SgzbV1jOljaN4@SRBrx=&1!L)xw9?5Quc!mjJiYK-1QZ( zSLJMwwL?1_dlyy}_ohzkw_#yY##;z=FBsBrC`nJOK3Uqmc!U7D6V)geY7-oP*mMVX zrKpy*;2EqNP)!~C-_SQ%zi=buu!lL?e?Qs%o!wQ=1T~knz-n-*{jrBgkF6>nB!ZwV z(FHU8qOT1V26~f`5Ex0%gBjHA5CdIYv{Fp0csLymbr5U28D}FWbDFvUWv25`rfyQFTof7jmv8qy=X+Of(>=SuK_%~EJc3tP z$`fScBB>3I$n3y2%wkpBS<=HH*n@cXe21jRJ8JZBY|fn^d@L}kI*1xA4y=jh6`y^5 zkC}&Ug-6>`szfQ~o3X9g@H-l-PHzB0rvIk=51O+xi>181H^^s;9q}oc{(i%dRHOK| zdlSw!L1(PLBHXA_;hvp|n}rjDK6(pN}F!66RbG#7$2#yw8Km@q8_A-8A zjVr{ryd8|rxt|OS6yOQja|(YScrg49w<*148Ze{6>m9LQHj@G~Rc_JWM^Q;dDayqIqPHh+hc&AgJg$dwRg2){ZR5s~~!N zXLe_C-NKZ`_mkpbG8>;iy;w2)#Az8mPP_$oq>01~SJ2FVpmfVIn9|`(b%9Dz!@a`~ zvO6un?%0+ZpY{&J$pioNWQ`m0`7yoLvK2UpQ=~d?6{=s%v`%DOEE(}EMydxQ<+!-K zCyh!`Wp4s&Qc?$qHGmp|z3*!+F&KnG08s&R%lcn`X|`t1av5x|zAb$x@YC#UY(3An zRHnUp{>9-~(K1V{^|J^^fmn&M`D_K!fXK0O_teSIea^>=r;=J2vCf6fWfHzevWh9 zpG1n1=k+;oH@hYAEUU;K?mxGq>9)_imCu#|1=9Ne-=^D&UW#V~lo6dB%m86$z|`aC zu9K7h+c$Yq_pjGvwn7(LETXaKG&cp{P^Ql_l*djxB2;gWVUInur&o!9i6RrE#^K6Y zlx70r{`ntBw9-)g?(Y)~{sQVT$pEQ%Lc^8r;!8oxDojm%7OnGQgZZMm7zh9lY~YvB zXPbVn4#3IV1$jNB#@R>(rschG9uFDE$F$ z*R9x!!X9V#Gxd`)QMz>&anBZm$iKs zFPr8JtSP03cNT=W1VU`(P9ryeC9k-RC6v;C=dKlgb)b|e@B%6#(Y?Kb>{#$OBp!KM zL;*VvK!2q_+Pz~wXE`4B|KG;$9KqjL;~wRVqAWpbohBM<*q`~oiyNZd|Ncs>f~Yz1 zn#7`Bp{Q~;o3S~;z4aP_o!I{QhMPP;M=cBlnCmydZT(u4yTrT&xw}`RV@VEilHmQ2 zKBZ-&Gt$CbSECJ>f>#;9`syg-#ztuC_BE}1Yx#CIo4%OWvlA=>1Cr+8NebNuPRTMMyU51)pFRXm6BakZ#B+{cq zE$#A?#Y&(nqv8#$mh8eDMAd0SdDkoyJ+-+Kg^Xx^_#wu#k(5+rg4%t48OT@bb`gk! zG*x>`@@Y48%(qD@yFbN1#6J~KSe6!)gbRg{g@3J|YKZbaAPLN)BzU_GL7r7N!mnQf*UEG9Wv~(wx zL~O7I-(2yT1_?JjH(?jsNKLf_nAiyB?uL1Y_{Poxai`SH5i5?W$H`SZZTm!jutgP? z`F5I}U#aOK#ML)=dDDNpe0Db@N608SGOirkrRH=3Q1r37h1mUBWx zD_2eJzDdv@vyiI;s5`qi67?pZoD1)i?i*v$3~=Is94<8ESEPYTg$e(Gn1ENPL=MM5~MAX3^1T0>@hpZ9;yM0t7 z(9M~s8~+30eq>goJ{P1u(%dA4V=RCMKVHK(?R-UVBma>J1|#tL>(FsGEU_ALmmUvP zJg4M*Wy9d(X?TDh08VgdCW1D*590rkBL$lj#CycvI5}x^nwWhA<6NZt|Hsvv2SW9K|KoRzY{`~tCd1f@glyRvvdfk& zt@cQ^v4)tjL^Sp#q9NPZi)3j-WbA}WmZ%|1mh6pXUcaZ;>-GM=KkwgvmOJ;(z4!S% z=W)(?oW}{R(M(Xo#J_#JP*JhYaZ{HcOvmC?zV%dSKj-g0ITLIGc0LhI+?5=xK-$D0 z_p5Xom7ZnK^TisW z=@pBdoTH!a$bVo@ZR(b2SY1nzVgdr(pL5JAT%TSZ*l)(Xo~y;{Su_T;BM1s-7a6zN zshI2}DZ4@4H?W}`HsyOwMQ6{fwX#MVao(T(gZqlfD|_w3Ah^ehGu^`Uujj3aSN-^U zc-zM}Ek1VAQSim8h*yvRov3+X&ZRnoijcnDNAcBmK3ZI@^#LQ=v@RKT~!cLxwJJT<1 z;{rt6yiRF&WlGH^DEsa8UM6bH-Z7}BtZh#S2uiXH_*ZxvI>6+&61ryM^#lhH5r}^o zO&U)oWX60tFG7Q#eZ9%zacb~7jD;DO zfpAXh@MEZ2Z9G*;__Q)>UjMIL!+2+hU%3)t?$hm3>Tmo?E0(&SEb$zp9j#3Y0yY1i zRchsF2)v^G-YFQbnpyB5-J5{H+KXomyiOj)-_Y0qPeFBf;9C9Tv8C--lxY|fuarLJ zb8T7;|Ea+5muDasRhJw`swHQywB>%QG`-XP>zrhhyGweS91~XyvF#s6U)N(1e34a_ zJD>FHQlFHy=!;u1FsjkCu3i?JiNB&b-s;s!Y)yRS6AZ5OYgpcGvBKdV!Ot3AZ;yV< zd!9#NEh0TMtA$m!FOPz5NwoFEoR`MyTC$hnw$Qd6L!J^7j9D+X-DDF*Bgft~s{kd# zRpz5Jqh&V4Ff*KS?fKA_qY@8*O#1>J{#-$cd_9Fhc{oYctL7};iiv9LI$8*_R;?J? zD}mQ3r)(x&A%7jU)e#O%rSP^?H>5k+7NdF5a5oK@I` zM{gSQK2`B&CYZD;OA9TNG3b-Qc9Pwoq<1F1ppj{F{v$(%Wi0dfGz?VTPufTn`rI2% zlT`d3jawbM%7Lt@F7GISST_)GRN5ALwnV}}`0_)~X>;~%4KGvelEZZjpWIjbT7j=U zAE|OnM{?Z9LOplULLNrYIS@|4RcmxJtHwauD*od@Ch%!dPI#@ms!v7eTkEIhxY=Bq zVrbJyafWA?-X1;RuxT7+7JGUx$zTdyrjLm!CI+adWj9bz;qw|tRjL_f-m#mp`3`-ny8TOXlW4rGz>3b?5E|gP zBdv8D1`{`d;3;=}5cfJcuL{)K<&eLSDjcbUp;6s#GOaVe63S^SyXUz|4%v{?6zSdP z@hTp@hNTe=Ab$zA^8RD%_%TPF`<@CYyy*nl?Dn|R&8tl?CB_tsYI4~+FeYCntn^tf z=^^@b6<`GT+Rl*UI(=6aGb2*5-<~{9CgEsrd@{_B%kg`MS*lMio@Ce*y5-Qi4RHiV zITFDGNB5+zl*?m3F#~H*jGLvl$dXS?T20~u(jnk+fq3w&!K@3thX#q3RfUr}6MoB9 z;CYo*Snj!cS6XfRYuAFc%4z>gdzww?<;c%vmPx0nmb?x0M;q}J^=X{)1$Rwxyq*4^ zjd8bYxLTuWJs~bejPyKtb}a5Kw+}bnIG8IqEvg!U-MwDJ)54OU6}KJKK-+f0sT&_I z2W?^~7wAsK`>?V9qH)VzOVA)s;qr{7}Dy}BWQOl3wLIosI=L*QhSW|q1s0|dfal>@Ol_Dkc~1sC+|zdKfUTucK}%<_%< z7>&Dg`~c)Fa5c0`yBP|p6CY}r9JIBP!4@>5ulvQ}-g{gR!Dk(c`O3XpY*3d@$XM=0 z_9;@5+!_)|fUvOIPuk@sf*JtGXo7fG6#6=}jr#+TQk-Z17N}o?|GvhI{BuGJ!@nS~ zkP>iPa?nH*NH|fN_Tv=}GEWCToU#2!+A13i(Ax_H7*>NlPHk!10-hrcp$Dvz>3L!W zm=q~9&A<_9Jdzc#ebSZqy%WB{z4^|g^{zljQlF_8c3z*6YQ1-_I?NF?o)-xLK1^A4 ziQ+`RX_)E!<pv)0(D2{ zC%eGn=o{?khl2QW-_t<46Cp$=%o5?1eJDdUoZ24tWI-j1RftcQd9L^5)W)W!PShRd z=1VWps<`gIBY~`~G%#tA)J;(-a1Z#k_E|iT&B@GBue1GAtPIYu`qYd5lRr+!z8Gi^ zZF&_+9l-m4e#+C0FV=3REi1EIsi&J=Gg!Yh>YMu-e|KlKSL|vR^ST7de#}*9=VZfk z4~Qwzvw9YUr(j?Hgk2IZa_&52uz0B{ulW3n_63xbxyEE|_|A`)5+2EuvjjWGNW?6u zjHM>y_i{W%`?}p;nbQ2yis6(+{Yz%gy>1#QqHVR5&X6M!rijGM}(v*4WXm^5hLJw;d;VLVzgRjdDt2 z-*(ek`h#1neK0%IAwA}T{S2u1=$k{Bb=~L~`uqUvkPyl#fxiVwd z66@;5BrNAo9a<|BsAhnnnI~`bl;9zo0tO&}S_g z&VYUb69V?PL|E>|7l33=9rfGaChffhI0bM3l8!AoaogVLvHvp&Fc#3$Vd+;-8$snn*c?EQ>cj48)~!{?F8EgaU}A&R zlu;}tC5@dzd^x!It9@bC?bs1Vz-)CWDDWi$c=9VwHA*UZi=BcI zMMyOm7cc!Z4Ik))m*SS%*na9pALeEH4L5BHM$$fY=6U3sA|pee2~3!0=Bas*l{rX8 zi>8uRFspw-q+LH)(DGB87pUsvkew6S^g2%Y=}!RO{yyql*3fqDA29O`Xf&)zuY+xP zkcgjKgVqmPD9N0qRVuGfHP?WONIb7q4B@L{* zjegpGrBUjIUyTt}Z0dIJzC8$?qeI$gR~{DW9Y(=gT9zA2E0A0gEnC&9dt)G`u${3& zP}lHJFAKp>S%%$XdEt?5ArMGr3DfJxxu8GC1ROut8Z?vM6KClt6g*q+D*#qeVFXPb z!%lT2PA+{yN^WWMI^7aM@QjUB2@8i=89$Rm*3@)F4yf3L-Aa^_KfdY1>`Xy<*?Mg) zyzQ%s=Nn0X=+{Zr^U@-IV!bS56eE-Q3bM8!PGo(slo5`pc{k-eR;^Uf{phYuyXcFrfho>Wi!&d($JI)!mUeRz60 zu@%fmE*MsgibuI4>EZodK6(gJ9!6462ua0FY?VYcqzPCgKB7OPP8`|4U4JC=J^eTj zl4=0p$!YxY83o)&t%q@oMJ(9{s3T`qv1LL!? z42|5+Kmix#mKRF&y{|3o_>2#q_?>1s>oY}1Mmf1C&99i2$h_8l-8az|GL6$Rh3pPG zQ2&A)O`MIq8B9&o(-HqTo|pVE1{?2yZ4_u?y>`*Z%Db8ZF9q-4?fJissdCitvb(dl z3JQH`gB$OXUdx)lK9>gos^QUMp@03Vg&dt$Mp6!?#A2Ry-iG}0xfwb?5_sjyd2DMt zVc@a?`Ra!G?4Ms^te5nd$O=;@=;XdiJlPw8`0jD_%puPQC!20CTeC zAjf}&r^~S|(50kAqECzF5^bQYWCgub=hT1W4bITEwhuE?k-Pm7P(h&@!FtHqaj8=X zxKo9wL{1``Q&(mq%dXsA17=<_$qYxG|2d5cr4L+ow__3d+LffSfBhZ-Se%r z@VE*FS#zG{Zx47+LMIIEm4=hBC3^IB_B{<#9-|r*qF#N`E#{j)J<6*MT6jRB60vbL zWaKzG0~uBZ5KA}>clp{_O}oN{vDnTYr=5f81guQ&$g*N*n&G*d#>5GeZ^1(uZF`NZ zL9;A-K+5t{_zBYq+~3W><9vTNqnuF1>Q1KwT`|sHOHGL;z`NmQroKo z(c^7JZ|bhY-e=HnZ20~nru&Fe5*g&I`ebVz)kK?}N1Kl+(gV6!0A3*0DIRvIF?RM| z1$GEQ+1vf-Mhe)18WqKZ|AN?5*upNePC$<}2EB;eTJojgsnme8Xt~ zIptPfwF#d;jwR53{foMh7X%#HS!8JyA;BMLxXi=m1fxZ%Y>n&w-i`gA3vSEEPr>FN zk4E1v(9tG{d26msCTOZ2LhfMy4A#cX$Qs>C?k*Us`#jA@`n`8wcp2a7nq_5^)*7rR z90vU?`hT_E$ih@Roj?x}rIC+SCxk;ol8u;Nce$H)6T%US2VVpXy;--j_|M^=UhAcL z)9)4Vnn(|k=pJ(^rLsH?pGvbOVS(aoz@md09tubumhRIuyE}SD`dF215OY1h-7NhU zUz?@Cf41Yt<7?8o>q3e%Chdwq!0K(yt22%~DpO}Yehu;ZTB?i}f~xL6+m$4)T`Iu9 zAiFjN@&=BNZC}*M2zA00*LJ`&cOcct&po*QzKShuZ5l=J6HEm|SvUpW{k%KYCY8=DvLmwlHn!en zj~P$%o2z{1?d-a>!)QSy{-|QcCVmUXbsqqZQjg?i9%e~t!jqm*U<7_7$&_7fm5b{3 ze!vZt-O#;@auGq#{`P)6g5$Q`?f~~$>>qF~$gK21M>7TAr@z~@6xZ=q{KNHj4dIf2 zJ{y9QkEtQo0CRJFhSi9cQad*;=Fw(pl-mDz5yi@iF0mK7A0Et#wgoIYo)?WFfyDdF zBd{jHNP>)4_=jxlI|aaK<^J;*LdnC%0WpG8=5NM-M(#T4(!*{GC9qjbsi`@lr-xmu z@?g&LY9B$W4?QclNZ(N^7_H5!rhSl_JcxYBvcfDyKYk6k!-qagn{w7?mT%n>!>-d` z57;#N#C)wM)y<IoA#Ri9M1H=n9a}hvypU7Prsy;Wsty?jH(Lgwm zEu}p+2V;T$a}3?h+_(SAnrN_`p5L9^dwB3z(uBh`4)ep6ei#Mgh79T7VnRUkruqRR zOuA!#1-faJo^l~?~~0Fkyr z|M8!aP3O?KFg?bnsn3S~f`(z*n!bd?K}{=Pi`CwIzo;r1$8b@G1M`U5>n^eCEIQ_N z3li1SnN8S@CH06Xa)=A@(=E11qt6vfQwQqd%(Ar(x_n>ZJ79(adoITMFKDssPn>PW z701?+-LcqaN>e7Lvt*<&`(C^C*pTlmFJ_)ZrDleD9rC|M)QvR*f*_@r zmVU)aBqLjHR9t3sRT3fXI)(YWYZOI#HY-xS8_)sw8<2t~xtM>LlxYS-v;Sb`&uPgX z8kVK)%;OjEiYsyX4vj(Vj}Tv-Z8HOu&`!EF1 z2xjBpBy1#1#Uo&eByZC{pTY%K*DzjGr-RCoj@R=p{kEJ?^k}mCse{4HWZ|uH{uQ*~ z)RbMV%h*2g_O%(K2M;+D=vaxwQVpc%$@LwLv}0sD92LIu%I-W3aDtULmSTl+l;H&F=Q^2WA#An`oGDtz$xC z{ggFA0Iy_0Hfs8u8|ePa)rpQHk4}HohfUdDuVlqa{D*G$#pellS$40jw2wuR9uLbU z=^~{S$)`c^CwJhRz7?et@ac0#Pn7=-=8|vW&Yc>@fTxiPIbBdH=^y91| zd!*g;6n3|@-_(FP59&J>h%{j=j3Q3F>0jT=_6T}q347-;0?TSvi}9u5^rtiIPcGh) zk=iX4;(e>M`?cSsc1c{h52kAtG!Z>Z;>A)2Lk{hp;Im74nu5?SK-@}VWmDPQ7qc04 zFL5@)rZ$Pxzf?+7A5T#y=xv7{(Us(Ij8y^i!@+R&=H$$LPq?sS0`BWZuV!}q>xOp5 z)eyF^+g3k#+6G@kqc zv;S@Z%j;17uN&V7Zd~-gZXCAEn%MB6AHCL-Yicu}ub%q~Y_Za9Hz6nJ;21Dq^z;ADGq(o$vwu%uSncdVl z>4sgpW3{AJH0FHg=iE{~1G*W)nrqe*cYoGS;dLLr1&YL{FN6>R_-dERvTmc9$>zGs z{&M_lG7)~%e{x=B4gA!9(qJ`PdNVB5PL!mm;1Kjx{58rWNE9jJ%9s1iOywYZ-rOi2 zu+VedH0?RPhn3K(Fsu2?C}(fs7PT!>{h#4jf3DDh6CxsP1tJMyn`)i~{OI$SNuULv z_6fRtTpGJOY4UM5WcUa?e_8z|V?jhnFnjPj$%5;*?1%ku+c*%$W4hiXct-p%(iwO% zPJE(;Hal~3$^tEWAJMrc7vRoU8jT5WgjeY5tRbIdJ&Jhg^SH zJ;c1`O3-4w$&Q%yrdf%7IP|tL%`m0OPdtmv%fR!kYV7?WsaNPM%7X{kp}UUB9UH}O zPOx-v&fK$0%3dA&M4q3&@G|_$qS?ici;x40n!XVmF?PvZliS&sYvuap=ry7W)n$)X z`}r&F^YgAkX(4{69REdjFUQM+bkGqFkx?{|+j+W7_aHdz*AVRraAl9EG!LfN@7;Nx zvrV4M!S?SwTi+Z1-ys4oB|4N`*T@Niiev<(dpnOIIw~Fgy4w+MHw(_TGnjw;7Yq=N zKw=EDaDWSiVsk4SwTSVEt&Kzgq!h0p1yh$;O4~W88lF4%8flh0_*QXa8QlR{=#O0< z-9*Ft$g4NqqxlWxKPw)7nI0`Y;k$p9j};jyFTXsyoH($0Eq+E1vOaTCimV9F3FCe@ zu=j z?X=kMmlMo7@oB`xDB|Rz%Yp8D%c;CLC1j00gom@zh0NgIXNu%y7#$l)MoxJz6#8!q zR>a(xY0+^cEDHDzeOx&7JQ*(#&X}a_1vo!%6~CH%2W5I*m;swIU|*HeX(~?C_qY>q zNV4bd!dVhK)1glO-wH1EyR%f#lw)T$XdM1AFc#uf1G6=7)meryr(QYwnXe9Jx;vj4 zZ6-LO)?`iNtmD71b>*!`guWOLwxpP*ZD6QJ_M5(Lms)pJlyz0s`X537--;sR4CU+{ zoUYu^lH6i^${N}hd~*P{Yk9fmn%G(fXXAtN zc-3TAdpVNB07>u12w;K89<4IE6=71Oh|3J$POLX2J|2{FVOu069L_la)oD}f8JA+i zZpPfEgoChVAFSWIlA{*PGWxsvFg+n4&7%RhZ^xg$dr$U5P3cqkD)dO@!xbMO26JIG zjuqjJ4aY0zvBI%kDcKsT)y(0W)UaAQ@p6MkgXGm_A@>}=`CcVYk=XU)2)odYq@4hz zGCnu4A98SF#j!GRc8Ab@(0dxi5VJM>?rJ!f7h_5=-;*Zxt0dn*iLbV@u7?L;1V4~H zaBII|Q+Aw1rj3=dS?DzC-FmwnBuF=h=v*a*V3$7n5^e62ZMT_8Srn}tJ;5A1u@WKD z^&$%t-|bc+37rV8k;K(4Q?0Aba`}^4_>R`A9Ubj8tva@A+pdUx`odJtcB~jd9LRxGQHCtp#diq?o1LF9(HpwuG7F z-v%rpXQj!%EF`*KK)mbA`k>8t;oW)y@Hg+8b~bX*ZvsP24^AvWeS!hs9N^uh0pb7T zSTFfzJk?mh(r_oC`coeh?>n^NYDe~3Pev|TOy{0ooqw~sGiKqVI;%Ll~|1O75VhDU3eF4^Qg+v(4?vi?rxVyU%d>eUhc8YN*%-*PDh%tk+QtW2s}P zsPi_XYXKcmjx*hPos?(2A54#S75sGVV1X<|#li{#sT+BR`JCEHPisXmQB4^Wx6Z(g z-^f#Iq$jG!>Uu0v785fIuRT}RkIa4aE`%}^N4Pnj`@L=|p$4GHcWLLOuLs3XW8Vf! zH+PzaO7}l9mO5tk&5S?C8&90v=m$Gf+H;wK{*Koe+$Z5~|7!5C?j6D*b+Z=m1pfSO zS;G@KLx*N&6Fvd}lncgyy=YHy_qUotrNf8z2}4(kz2QMRA(7aYoxM+n33ylCt(oBy z1UfwxJzmU6Q9xp$dt<+OHAir$SfPdD19F7r?4Rt!jvr|pG1K&=aG#v;ji)eo!`SH9 zI(_Nr{V%*{uGtXfS;{#fHt*24Jfo#q!uAo%mRrIUs)d!pbBL9g#n0XoXMNG^bhde8 z)|HD(x(KniDq(76qMpKu(_Eb=T}13L-9lq)PrtjazV^aQ*iCj7jLidGO}iTxe{vFP z?>BGW<9o8b8*FZH_otLl(6K~|M~L~MpO~&PNPm9Ee335(*lQN3{#g6xBU=wM;CcL0 z;6b?JlFrn)adC?kmTt09dBJSG2C|VKFhIX7j4wxm)W6YVa&J0HNMG3^H>4e1}^CU&6bue%PmE!0d>INd5kZ~hhK7V zei0>MinM!f)L?V%7}rRMey?fV`&9eCApQaP?fJ91Qcu};JJ{E`$I)5_8Z156rzyW7 zoLI2Q+*1ug_^*?xJ8>_(?mQ{VPa-1Z*@lMdS}#fzJ|m=A^&{@bTzAZ0A2y5ZDO|i! zk8&A-FanpCs_tbne7VkUCi_KA0cYYSTzgsgjHKc8v5A)X{_cLIy)t`8H2U?UbuXZT zpmF%;()BEMzQhB4P~#IqEce={r|yx*_TQb+i9m%d+wS4UXj#L_ZExD6jVZ`({eTTJ zOb0S+v>U{BHh1>nN=xn-+6Y=rc$0G=!;W`PI@Df_mOtP>(pboMWy+_ODBIVMTOVg= zdzs!!Prt|;<^at;GgA{AIH>&m9n@P0Ch(VWFpS^r%IKsh?oU!_KIA~o_o{K7&1b)a zCyc2b5_R=~4MBX&yn=nYh`pPoX-T zlWRpqLZ7a@m7YsmvUgYF%`CYrOvD>}0Vt8=k)uqw*l%<+VRC7ehGTfy%5hy*emsY5 zgj@y|K>URs_VnuP#7k}rCBNc;@nFZ2#1u2d<9cLZ^W@DR(F|pV6>*n)!%UTu*rbaFOm!d(^d3%WP*HoAzxd_b9%#*L3J3{36yD0)GRWc*z!F{6_d zeW`Xs{6s>?jIj>6p1OCNu{w`=l#-h)WLqWxRmYM2$}&nrKGL7r)F zAq$1*CE54oRB5$;T>O6+F!Ls?fl}PD`^>J=x6S`>GIBXY~@k7p*Z~x#I$4bV`=>} zt`HJUE7MBx3E4FtG=r4aO(>v%+x`S~)bMpd?6?ck>U80?i#a&*o2KoSJSL{X()h|g zjkQz#_Mm=5{86AC=>4DqBtv9eVYOBthHlxh>GwOL4oC?u-;!(R0U41zpbN4Qm%rh~ zO6b?T#hgcqumo`T86`|&`gWQqju6Xe2F{h!s*bAqje9R1E8|lrICLVlv)DSm;cCpZ8ZSc^{1>vWtx1UJRDk$O+4v zt+ykutwTc^JOKB??8P2?vHy*6qnJUxsq(aI9%BqY=Yn+a>CnFiWXQ^y z!M8z9EVnNmxEO-$z#>p41I1WCHi~lGf7S!4P<)rSO&BTW!t8A8kO#vXVd18C`=?ze+F?R_ z`)-O0=JHb+?b*E zj6wTUR5+F8rI$lXyZ>Uy%2-Io*AD>Q#&8e2!unc5SM@xVIGM6M^PWH)8k~ zB>&lnc&xxjZ~EOvYhH)IP2R7;`$LJV46$kGCpjq^%~Ld918(jtdqI6v*=zLL9%`yH5 z-WP#f+G?rr^DJ(T3M#+7BW{7QQrFp8Sc*S^Nf=CKfX-z!eVYYRq#E%d^>di^!gxtx zmTp!8>8Y9NW)YKCdWI%5;)n6%AYPD@gjQH9;ym|kPOPOma|tfa^N!p+4?u9GNy}$J)aY}vD0g}DI zMD_w}=99)e`JiRW;*Vo009891_KH(r@8c2bxgi`CX zp%4C-n&>8@Rsv&c$zx#?&4Y70#HB8-FHTN(zCcbqr|{Lnj)~<24_dw-oZhH^MEfHL z<6}H9w#8N1%mn*rgZ6+2lWGm~37br{4fe_OBoYrhhBUOEKc%U2C8F;N^6&?d3~Yz> zbf|{<Kgvg}= zIxalft|&0S=N9SOU1y#Q+ECqj{m6-4FYvg06k*XvHRd|ycq$iOUtaD(MxX7(KqwLbz) zH{JA`g4>QfOk6o;JN)rE%TaoC_B!Ufq1o|HR`xo*4HDvpVdPB8IID85X&3QxqqgXr z0a74~K^Yje`*ckg4kljSS(nQ@G@r9Oy<_?Ds^rIaW+XN4c0DhwRgQhfZZirF`VrtK zwd#D^Lmy|ttfr;5KU_Q+6m@8<6A;CJo+*+gB)rR|l|cmQe)F)}M$ESZ{ob2}a5y+M zCjI=Qci7EdNDlosGg|i_vx?U3+&~siZ00e1)DbIJIiw>_&VvgN&{-xK3i|Y9H?&K! zV;7E``|63AjRFp)WCF=^r_^FjSM=y*IsPmc?^1Wu(vcWmH6gj*f+_Nf7oIR%wkx~j zo(0QQQDO$K4fim|yaD3~b{Qv|z<0UZ=EKEl6-VLMJMcioegaiLBwoGX=*$rEJjT>a zsekk(x!3T2(@gKfevfhRqj2SnLA1I3N!v;#fdKx@<_oaHGd}FRdrj+m{rrJ^$>ppS zcIyd({i?VjQ2hSrXkdAaAk{JBxIzA#hS>K?c(v~2NXMJxIu3SQbJAY!`(hZqgRYJh zuYo4nr0F$yLOrgCd}ikFW~{8YCe>p0WjD!GxlajJnX!TvXoMi7oZKFOo-v8H8kXUA zR%;95Z92%3VJl4K**jMG)NM?#n_u-b=Bz`mJaiVi4O@QT%}&z1fs%2r*Ui94B!^Ae z;~Bo~pB4Kg9HAW=_rVkq8$${OO9(^EH#|*MkQ8WtGqg(<08aM3G(m4!i9 zgaLw3=9`iPN2d$eCp9qQKa{ewUpViZX&EUrm|hGxvLN$SoS|PKFE78w z!FO@>8tytr-bg?9SRnI97)B`jwZ`RK#7m!>J*drDSWltCws|o#&%iH$CzOvRuf%x$ zbCEQ>PIB`|jaUhE=1LH+iWixCIGN%<;V+aJ$oDONWheAD7{C1X-)bHWmu7~R$XUMB zFe|8;+P_QLOEr=xj_5l+Rrb2-1U>H*@#|D$KIe2Pr*RIB*)EUBb{9ud|HKcfgrM3= z0#~>6nV=f7t@VyD3J3g(Q3OvQ{7$$~jeeey)i5XC76{t{14T8@yhd#>zl`Y6re}My z2DWj(u8wT&hrRd0isW8=Xlw^R*81^+bXxL6Lkrv&1k|t2Ro*Wdd0L->qJ#A*NLhJK zJj59m>bW04PV*6$uSu2dj7a3X5fG81z2spH1ac0bMr`*n6$GwkFr8zf^*%5L^-!lv z`>u3Ac$?X53dh{XK4bmmQnCh19;}(pK&@$XtLz!lq{#GRIL+#OVK-db#lHh388rL# zK6Fuh?Nxeuvx&l?w0g#b?8Z4ZOp)GUvDcYZryh88jzSpIx4qY{m>Z{f&4kUnfEK_Y z#ll@{VdkHx)x;bMDsWwT1R&Yigy{zhxjq_=N{XpSRbN^?urUA2Ld<-`+9NH}8Qz%| zNmL2Soux{>>00Pi$ZD5b_W=C|IIs1usbOu!6t`tr6pSd`|1bA(JVxg zPIpYF)j9cJXFc-bC{Sxp)HGRNC3FFGW00%=n<@z-+%l56sluVxHHc?7k!`}z$|}#A z`r`YZ>iy1Y=%8R^tzy!jM2LUTLwYHYj2tC3=l|dYG0EHFe>#x+Q>bY)bsoekYKRqw z(L9NNwpEGB_ugz5zI>}I-9B@Xi$UwOiX$O) zw9?5jIjKPeuDDAo7IVz294M0;xh~|C5EZt>2&OGfzO|I%@D@aI0*=@V;5!fa*cnsI z&a8sMcC48RrlvOi>%|}3`@-~x`IJj+O>GVm^NyPWA^PTDZ+zB_=AX86Oz?f7woBuq zx*e8+BSla-*6XStJ6WjOQPfy=A(!RVBn+8qDP#NLdAa=Oo8dQ&W`$Jkg84Q)CCvGa z<;0$4B0HgSOiyOiO69;!^Z{)p$Iz|Fd4}l zNpH{AUp8W*uh8Ef|sD?HjRy6Cjessyw%y8XIa&$C$JqtZc@Cj zJ%rvKR^})yG-MY!hlU)hjsoocIpuIv=5rfnXJoS#$ljW+KUO%>eTIo1n4-VyAs|WR zR=u%5N!oh>IIqg_b-ImyER0I7s|OGH;30Ygw)We9C=x@knh1F@`pb^^lj5@^&F2=@ zNIp73p7azaCki{)xPRN|6j7cT|5h&}XbM-ow{F4-W*+@}VtKmrFL>5t&JrAF`|cjZ zXgU3yJao~%?H?fN`Jw5ZK`BnWp^rB-!ayOzr8mnib2)#ysgUUP4J|5+onzcAu+M0_ zq{r``WO1m~lb=pyFZ0;VaV??6(6QL57=AuI2r^bX6@N@S8+E_Kqda)1^Pp}d=aZc0%OT{s(!ij{R}Cy8aSm#Z=d?CrJE_)&Vq;pPuF!%DBXtcOSzbTp z=VncDm^y$OwzJgdwP)&a8I2GjZyMak!Pd}pyNr#O>fN6fR|#0#pSu|JJCLbQ4^ck{ z9=+pZN7Uz*)y(YQ7nCW3%JxG^&$?bkj#T7+B`ZwHalOC{v*qYo-?`m@C&uc%+{#t4Of?NAH0bX{C5OF8a1z$_E; zHyfaWQ&$6g{)yVDBTG`V ziLI5|&aV@^#M^CHos$ba!Ga8VW_V#B{`;<0bcT*Ogwn4B?OW$BvgokMOIhHV*$JSs zms4YOBl@enD816Rg1X>_qN6A}-UoSieDk^)dB-ys3qXsoKs3k z=I@yQbxO`e@!%f^Y!YM+*#a72ZEgPGu=-D;MW>(OnIM6FC^k*}#GA}5hfWQ&` z$kS>3JE9Tgt)WJp-27!O-q5_R>`1!`DzinR{{;+Y;YZ?@m@Rev=NJMZpgOdq@5yz1 z-8M$mnb|?3T}JEE?d6Glesp@f>`(a+m-zOKK6B`j5N!O!DC5vit9QojW~aJU}Ow z!j7#KtnHODt52pwH;!KnPrtXC`*w*&2DVZnMOFO^Ptd7)&aqEowURwQ6yHOpfD($! zaGQ!^n3&1Q!7=i_4)VMG{8(Ya_m2G*e!sKFWp^yu#zt~r8z753AT4d145`IF1k`1~ zLZhE%Ka1Jw|BtohSw5uVdT*92f=YsQqVeZZ539STQK7iXo6ug<+)`%?l@U}5%Hq9b zr3IN8OpQrmk~#GYH8PeHdck8j5) zJnU|-^q8*;g16z=nLxUc*98BV4O2i=E|(IfC~llD=S<+I_bgHV?gZ$a2cV$qW$$1o zl5kNnB*8oQKzU%v7>1I0Ul_I+-Yot>AN^;3yOf+J4AcU><=zNtPKyRN7R_|#q81itw-;^kBZYZ zYgjN0#tmtlX`e1HKm5ozQ-nPU=n-XaFz#{Giw6Z(z$DpG0{0y6lf`s>?rwe1LZ&Dt z|4gx~>~uM@wn2$O$DmgK=)TI*I(E^3Tub(Vjw=VFrAt&uIAlHBv>BS=%NPFV-A#9c|$U@*SHfzb3WEJ50JnCS7! zWO6?lqvMx6va29bPxwhg*3J ze%)K$2aY>7Pux|S3pzQO2k};6hw{#Zo9j3wYfqm35w=X1(LyfadwazB@PlZK&t0X3 z+&yD8?k?314muMi*X@J}sRs1ys%oV69WA${j)bQ+)BZqRq@$T6R3VY^K++o)4{+DF z29&k1fp`lA#=wqw)j7S(8W*DD{o1ho*+%62LhUs(`3u4+KF*AXb7Vzn=zHcB%;a96 zmhCpVxcgb{ZQEct!%@5GaP&<*JNA0Fz;sb1(TcYL52Q>@WNR|=Zu7W^%Ntr^TUmFX3i>}D?H|MlrfH;mm`-dfD#6dYs4Y|S7 z4LKccR|GaLJ!?8ctUC52%t3Ws)4== z&07e8tn2`3f=e8Op-}ylN8&**_Rw)rrZefFV^DGBF9`lY&ejm3D6ag(fce-<#@F(r z(&IJN^j(nqu5(Q3-|yq0{E&#IPxJ7uDDlgzW7wp@Lx>H8*Lob7;C3pr1HoFZ2-?p^ zKoncZwXwfK(>^en3Uq|jPT>$?hY_Vt2V9lddGj7_N0H$v>)0I8&ZO13X>gF~`d(&D zN12AGbbLXdIw+E8(Yt=B8Ys9j2gmTy) z^v_Q$FPbSw=JYR5(RA?=rLKuPm^4_sX?87C6SFp4 z=bKaKn_GFk)@DX$3?a^DSR#=yIqvoIwmYw`{<%}vLy4DOLrJLV0Mu;aYDwi!n@`c> z3T8gK*nUO(%cs_+GzN7G5?}<@jrmLfLi(~Y3=WGeF`}^Zi-$0m9%bBEMrL`FW=@-E zPNAu{Kj_z}NZEYNN_=_?PP$R0zt^<$)$n!Z!Q|b$+vR3Kmr`FEwVk=;JfpEAg9;6u z8^0M{=-$=!{)_=V-%SUVfH4E%6SDc4OoXHBj4pP;toDycm|42g0^JW;_v&?^r0T>+ z#RlrO)a_EP-R>I;A9J9?L3bMQK*v-~O?1p|I99?&xziiqo~cGAgx_~Vnv!5ut1mrM z*$JQ2CzFCzcRP^n*u&GOnxBn&V`VR zsqQn;rbEd7AM9^!QWmCa+D~z|kD$*A2qBiG6Cwwn*2VkO$l^7pJmEkLgrO*7S-+!& zRRw+i#n{Jq<0!fxj;9symM(nQR=1F6aXNuyZm`>>UDXm%+@Q(5qu7fqn#an z?1hTZwd!M-TFME-&B|>bJ{j=-oRrCFO}xTPr&^2%7E#J~F-S?lO%Xw71RENNz$tfK z>vR%;bN8<@^Cb3Gk0u#-^B!BaVOXw-O#GZN8eUew1qR& z(%EI@8p{qsoo>=9wjx6GvIG@U3!}Q=|rjGoatJ5#6WSoh8Dr6qlevOOl{#! zUH?f>C84ISR&-`@Y^Gz>l;i%@zo3|xkfFk8heGj;=Zx~c0{gsHm&n(XqFM_9iC^HG zB~xeKtXMhdax1`5L1pIULP_zj{r1 z+a$KrEfBjcL3>HVmrtDbhIPW}xq8WPp%hTKHN%>8Tx<+=u3!ELB)fz_E&L!378g8~ zeq~g|XzjiL5*0W>!~K73y=7FCZS+1mGycZeFt1MkU#fsGza%hO>}2o%)mqqar_io+Sk|j(&^G48!VkA(Fjpd0dc+N zlL71YeZjHUPWDTt?2Ej{m>75MAyYp`13o4srhX+vs&PjMo<|LZ9mTo#(ak9Es4#W# zvib>#oPe4}(!HnwuN_0fLm9E8ru*7=e*#P6&3P%{wo!P>M!E;UR8aQ*ZoPNsgXeGx z5EkwCs2>NK{%6tlJSn1=8v9}jC3jiM--1$hpHXFwlSPXZhOQK12fK-l&PqLk?)3a4 z!%sYYS>$7Fm1)ilJ*N&e8PwYKw(CMY+ItdDmaBq#6P4mPYB4|jsQ$Ax6Et=aZhjw5 zuK9rK?sHvoczVgBOq2G*#%j=`ipEwV+GfN|H7^5g$%Ayiz^`lmJ)O`8SU}cBjM9*P zHbO>y$r>a7Dl`69d3(pB)crOn0%LsTIg`?U4JnvcuJ_4}KUQxL0nf%c*|k%|s5k@f z$FuC)+gZi(0ZI?1b^!C#1>&=r>WM-!%oF!^hyXtZnR?gow;jN82=Gs%Z=XL|4uO?n zcKG#!F2x?{u0~$HW3kYWMeaFbUD0h_lo{@iwyv10pq|+BOriE2-wIl|Ohu<^t)0&R z6uiPTFPBn)m%s5Td3E(FmeJmX{nv|N5VzmS1&)#^@ zNEIq}k^A)1)&-mWrkNL(H7I?% z4tXj4`A_zmsvLM<{_bpv?s1y1Fw{)QiTEDta9;L~vt-L5y)+8hSFJk+bWQpk*>(tQ z4~5biS~-m^fTNm^0+nkgF0g-#lk~cgK9Wff=PI#|A$C^_$p*w)KmRvXJCdghS8y!% zKd-VWW{31*or36J5!nAxX5tK0r+?+t#1K4tr(YOcA>~4yF(}6l_+{=xcEVLraj$5y zbbm4zF=O3cmtrSMZT$k58EQ!NcgMbq_IWb@>}R1iZHcse;{AZ3`Ard=j-mjf?~Wo2 z%Q}Z34_Hu>HPJ(ekM-#`Va$7xU_ucP*!~3&KJJjV~nm`z!zh0lbSGCmgC2UVs^? z%>l$3kFYQ7xW0*637~+foEP8f{>WCn81^|$Rjl8(jmDeJ%|(DdXfc046GyjK54!2up_ES?b^@Iv3;w-nfy6ONUQT|ph z$1M)C-9?HfI4D_mFj5lu*SH-Ur4wO1s1|%#ejZy|!yZ!2|ERB}KakMNC*k#|kmbm& z`zj@GHKP~fF=&$mQyx3kb_j}bXv!paKew9ujJrLzx1#S?x8NxL!4#fAWIlWz-p-cn{( zVa$Zq-zR+b&r+2s)|;jUxY7!P8?JyyyASXMr*lt5$7$aOEIlA1Eq1i9<=y8CgVbM) zEXd;(k1fCZb)8K}O(DXmr3JzfmzJFe9Kkr*<{OiuLFqQxAg?R+{NLZ-uOeFxVv$o0 zSjzEEdjmXE!C`=WM3b+MCIYK)ZH0brdpEl=_y^E;ya&<0zE&-Bb_L^jcQAN72in8) zJpd0-z@)F`#Nq(Bg4h3oNX`rvU|dLvj4(=UvZY@oPviH(`rgF?AEs9B_xBh-S1IlR zy?)8n{7>?Y*s1%{k6ZU--sOHj2DksZWc88U;D3HB5S+Ow{NW|`4{B0RW8R@O5*wwb z1j?f(mlUalL4GDbX4&35g*+CYljb1EKjVaeV(I(;-f4RDCus0ALIUr3lR>Kf%O}ab2qS9>BUqOrA5x+r)M%T!Aq{q;I)C{`eVT zr*v9G(gF)OT{4}$)-_j(6|}y_VI~~Y@WzvtY2aP)p*>b%kpz6!@><=I5Ub1#S>MN? z%(pf5?;@cZ=UBwN1kIR0HPDwwL<&feb-5PH>q=Ngcx6j7N^`v+D@ip}5wybU5I|N1o(avOz z38Vq&33#I`yOhu!`hXG2d-39lKc2zbZ-KX~Ou%ASfK(03=dNq&Ax|#yiL1IRStH(q zaL0X}b`%!rRBbDbw;KR%{)jL|3T!bM9?We2xim#qbYOGw4Xi(2GZ!`B<14uhfZLVW ze?V2Vjfz-wB0$IRLsh_)>yRTG{W>7&D=l@%*ru}5gg~X5Mu3>?Y%s4t_etV>_Z4d- zzA@S!Z2>_ud;ObP5SX5bEXg^qH)yWNpA|N%L z#q6M8DO=IE_6ns$9pirSKfFm!&Oi7QA#mxcjQnw5?4ut`wTP{-{s&h}By0QeVaU&~k0WzyihlHq-4|OE3l>9q zZ$yi9YZCqTcw#EyaDkBK&?YO5TW#2bTCvmcb(}_ofWqG0N&hu=>|&V?U%{e#I*tFN z!9J5U_$kR~007uo1!aJA3t$FeoQxs;%*ACd3A%H+m27_bY`I_3a|n|(rKk=I5Tz59 z>_$?@5vC!7s?r|sgo#k2JsDr=VIB@v{XVtmcMANP*_efq*5Iye>!pat>?tNIPDDm|MQV{`(7&Y2fIO<1(3O1a%f(}j) z0J%|ZKli}@7sP%G>)j6tV|D8$9xaU-Y?gj{TU&8Me9V_?mV9 zUdNS51KUn@$?<;;LBm!%{F-W>^CY;Txq;wI5bR*jEJZw*($t?$o5!bw0aN z(bIZc&9MBT(5_ai#QSMr3NV9(Jh7%6*gyR4A#F@0Eg#$z2Yt=Y_x)E5TDt8;LOy>+ z)p=a=P2JSvUx0ddz69p4nt=Dc(=)(ntpgEw?zcaNv7v&EpZ8GPY*Tbdei0k1goSX6 z_v$r?(cddW|G0|F^`X*?vmUSw-r%#4gi7k*JWK%T&Jm+n6kwnl0Kni#o=s~Wl2g(@ zV(eUFMi_QV?#)i&D#<5DRIYX^3Oqa6<1blB=mhDs>)&4j^(HrQ#i#DrN^VR6PyVsJ zBy)k){FtE%tQ)PZT+Gs_^Aqx8>so$g0C;~L6wS~axd?1>U1iXJhl1PEjKc)qoMumK zZ2PIQGRS#pG!ZepUM$x8{9=47cUsmJNq-gh`w{RPx%)Vip$w9NMO=V8*M0h~ga$dX z@t6}vG1G60Wk=C#{=x3C`@umFTXGC1$*2Qh3Bb-B*+>4%%@Z_;y z81x2%u7RhvB!P5EeH|rtb`%TkTp(c*tk#G9$2infb=igGY&l$e@rs1~P0e(~(!^g& zrz;}DbwBJ5f~4`MD29+$pXT#Q_^Ukz#R!!D@i6O*ljM9hLie>!oUvAn)53$=82BPF$8o`S1}8u&IdM1k0@XhoIp;DmWJLQlxF} zMw1#GxNo|B|B2TAb4Z>lPU*Y%UK|^!%Hq7zoG2w0@Qfge)@+w1fIo-Sl+^2C?|*?> zA(c$4uX198+uvT_tAUR+BX@>4{AfV_r&13etu?6OSZp}MX0F^%6{eU`54?N zsmB#z^?z z57vJVmxMr0M^Nh;5*Sa6D)LqT2&8i`#J0Nn`~363C4<0mPSsmgI;ZKCF#wNtWu^yC z-5=&(uDG!l{$zPqJjc<~PicUL-k-JR|MbKr-*ga!}@JWk32J2Uw zXp0#tW0?K@vYBm>6S=N>iqYesA_e&=(8Gip7Q>5H`jgXI&6UOpV(|#X6qPNI+uwHs z#ALmYsbwV_78S5L5e`<>W&`OmXu$^77Hoj`FGxPyCb4VSQlIphT>78BUs>80tM2sw z`GWnAKSt^3II(+kbq9f5pZ1?1G?Yrj4a7lx_JZN}Nk|X&V$Yb=B84^OUNwd%V8mfy z^UV*7SfL5L+DBg@p_a$lphK#n^D_G0%fJbj{O@onWiBu1uE(=)HpOt!Ay=mc(t;Jq zXiS{pks{6Mhk-T5+)I-3`7DuLwu0M8K#A`ObMQN&v?2ArJIBg$l!Ax zLWrx)Sk$~0dAaokhmZ3WW9&6aSTrmsL!^9#TfJ;20vp&m<2Bv&mH|W)^8b5ql6OAG zwkV_%#UnqOX_`}o`Z2PsP;-EAcry9Kd!@M`2q7%FHICQlZ5CpTRcYC!@>`BJ(3-}*j1kt1jMWT$EikzF)@luPw4JBfdQvjt!UfBcU4kYroiyqa|)==s;R zXqWP0%7?$DS+;C^oa~9jM}U|5Kb{7{h4T?%+aXhae=hxVY04rMt5JteJ@sSP9w0nc zWH?>Wx%WhZQ2V-#qf_*N9^1t+ zsc$k;j)#+FDX8pJBjRk8KBtfYi;24W%yg`s@dohHUlKTRFee_ELZLzU+223+%C>Vp z5)fgEBt_E!&Q=`qU%~C?o@iV8WZ4akO6ufgj)*RkN;fsyiQV&)V-_Q zsXi5_N5df#U+efYnVu(c@$FX-o`@dDupoMFfY8;;^4m!PJtJsLx?R=tTmDslaEj|b+EPLMw~AomV)NM{w?2Eq)ehO>FvYwxWG|cKG^vM_VRMv-4gH>hT;x*FeDRx_;44F)f%SvC z#$*2v0M4QR3y{;Jv>QHosaI$|6kI11R|FkX5}A-;uwSeHzS+Aq;EIwsTw~pQlP4>1 z&L?^IQ7F%l)JH?NN=s`1?U0L@o(DP<(EmMUd<$yqJm>%Xd_7p9;t*@K<>{X~YQTgn zFyv=wXc$=ISohLftv7H3VS)6>^#{39Jv_t?H3wFrkp{uU5Z28?E$38?oisk)a#xv2 z-8aj!5okH^buX^7iguky$X6MYZy{5Q^#~h1f;aVOUyk$CS0tQ$364^F{P8fCBJA=i zIAOl93Pnok@BxR3i^0Yg(Zax02d%_MbQKa7rbV`cJ~og@kK1+H6N#TEyBiYGJ**{r zq;L=@BQoZf?|s??7)@W8u}nR6I(l8S`Sz%2>Nl6tfLm#l!zSPRi{~J*%MrsF?%eY* zMZ%jl&=;|LcT;EW@);FM3rc8NcqK{#5w|Oh*i;>lEA7VgpY}dv_x4=WI^0ku*8}S+ zlVfrux?t#twG_eyR} zPPGf>(O%tz)C7YOMH5q0BCDLsn<#Vdj-}WG6gtm?eO*lKoS0eh}Vv8ewc?Q)4 z%{~?p(0#z1FstsXWffKm1K_93{zNM?QXmfhI=^UyJxwSMPCef!E#NepRH#|9e53oJ zSlkbP1MlyhQSo*joufm5<3Wi!;^5>v`;S$5cdj0>56naq%vkB(N10nqw529e!bJ-v zuY{K`WV%^uW7__Cz*-JW0`xkF~nJ6>eC#aCs3lGA|~Gd=cI44rosUBHBh5;T7S#) zl}3Yzk8bA>*gd01Ff`Eb9x_926u~Jjval_(ecDq%o{*dGVEU9C#tnyjLt9a*c3|6( zmf|ovGAS2(x1r@k6jWZQ@no9D}y~@#A z8{Dvnsdjl5E#tdwz4qQZrldCBZNF1*%rZOV(S5bt*g?lE+quBR?rc;)5LY(CSxL** zFnMrrPu$#PjNzk_r~FEM3}_52?Zn6_Z0FONK-Ts-PUwpQ6oHVy0h3etk%t>;m`r~j z;hPTEqx!})q-2-sxSQ-;%J$j1n3oCVkiv@fuBxa_%cXVvnP@FZ-NA$~!a>3KuaeT22GoZ&1nWsaLjIJSG*yP1x5UKG2aePA~&0hP3#R z20|XJvQ~9jHW4A$VbUQz^rCMswV+6qYM$dTJna4;s`$ni z$5PKVI$-r_x3}R;gt8#T;njya2LW2Xc!dOhR zh>eEStl<}zF=S(QgPyPl<52u`s7}s9GZ>GG4W7$VrJ}_tj+IS+j9B(iYYGl)UL0NUekKNjsbbZ%p zz02U<)xp)HL0q&Hl9}F7VCA@UcC_5whEAXC{$~}%Sh~##3u=KvstKlw&+h7f!k*P7 zjN>!;iK%8^x9E5#N>iklGUvk1@NFF5d-_imZYW9g1C6Vnq@5_(mfk7m2>e*5&_^QU=5PPp>TROg2eRixO(%Huf)aTiNoD6uAYa&sO}YdL!OT zDww{=n`Ab?HL`nq4g#X%ABEZf1UB6RBAmYHztgiGn!=@R9XM$$H1KHuxH`{_R3`cnSs&rkG(8JW;bAQqnQ6tM zs;fg|!?9C87P(NgAiE2E?U}^^6!oZ7csjL&mbiPy*uq;>0`|+9k{vB`95n?7{MJ{$ z{XA2%?X%*-Q%*k(PwZK6-D(P~tV*{>21UuN-cn{+4Q4J?3!a!H!Scu2UfCA{kjv3@ zqG4VA{$P3Vho!;vpsRy#?mMk`>I5$nkxROIy%78^7wTrQ-LkcYZLZy=ejkhr-f{P{ zsRH-&3rX{hoxKlDLIXW)@|AC$l5C=;VkBd}8s-HmoIC7lYmP8p+R?gF`734}9AJ3OcEQwJ7Lgbg=)S2t80I^#TBg7ibc9@z%tJsqEj+NgDt8fd33Zk}9st*BHyA$ee$gLqBgaoCOg>SQ;PDhi& z=#Ka(ZqV04&uFL7K-XK77i#%xw0Nfrn|jsTG$@H*Tr!m%`Kwys&n6;&+>E5?Qf@!y z*8CB2EL&h=<&d{DrC^QSMeoF%`o0-^5gbtSRpX+n=jQ`HrYaRqbifC;GB}?ZvW}{d+cU#H#+hLbB0QE5S+qB%`6= zr0uZIOr3_aV?9(BOK;Zb6O;bb3pqpuBTKb7PpFFQ#-nhBrGatrNROA)K@U`ufxMo8 zixGz$HqPJB_ZMNCrf*dahUSRT-ex{N&P+O8XIWSK$vPUp)@{(SP=kb5Vypu?xVqU^$VIYU+^Rw1 zOO8Vi{0cGelUHx^hbt*$5&V4&_916$h}{ykK_eASNGW9a2;9%wp`#P(ODuA^wI=nb zPi0_;A#glzPP4UpEfw^SDTLutGNzNWFw?QH=_?PBQ$&>XeBvT8|G;3T%4{BCJxDO* z(9^vN<)EI&@P24gm+fC+piViMLR8^+46BdS37k(8oM*>5kYBSidy^ z4CvD_g9^Mnv{p|a?F_ag10sxFNOjm^;>>pYoLWu(1vxsf>Vs}f+Slgjljx%y3^ta9 zUu~MDd$qWnekOKw$o&?jo^+nPxhT;zThKtiKXHeg`iILIU%a}1oDB6#COEH{9a8tAoR*_#A8r2h@Dz%VJ2OjAGI2L!c8*v`d9 zKQdiDm~_0}BH+kvCXyq?XIMvt|DXQG5S8V>t4m&KVs;uoOpSIggsyhNQnOF}R@$Jd)fytqyax27gcv3*2J zMMDo(Mv&w|JDzDF?`cah@mkb(DBWtS!bE_;F$VTE&Q}4MpD~f?^~!^IffcWYh5o>R z_tGz0XFOi)k*6$FmgvF^v00#JT6)EFEo_`x9k9GT+k23V;liud$D!=xkVss6GbLx_ zc*IU07n|93&ILQzHS@U>z>NpfY|-7%5*)pp7?c`#La-)4fhChyL{XceKH+G*Zvfe3 zn0||jJ#pC`(BV}V@hGs!?+jh|UfrviZ z)$(TF2@l7d8O^)51kBu>sIzCRQrjWiM83ST{sfObnl`lX7fLwY;ca_nh$!*pygGOg zQG18AtX9LHZWF&)pEHI0r_Iiys}MdaeLEXi(b1UnUS|Q!EbQoQG_dlVxsjM(Sy{JL z#TtkasrM1qbCaVTsy^(73muM8mD4ZBpVMy{S!GIwKc&Vxl#H(MP$xxI(2y2!9FE^c z9&Wg7@~W;Z1UkWuO(WVfw{}LSZ&ak{{Y!QBV)Y#_hWZh^8>cqJ8}e8*`ue&S2Q1~$ zx-97bI^tf668nksHBR`N~SPz_O5@to+}a_F;b(}NPJH1Wfb`Jyr%EJ!PsN=Yee}d!I^ z)6csNnt1wvSf)PKy8LnyVga>Y@sh)cKPePTDWVDSARCOZtMVLI7YiikQi{bqs*@rT zR=vtyb8+{B7;n!MTwWH)`^tF+O-m)rPRT+;a#>+Mi+;N@)ly-XUYXHXfjvbSfn5V4 zR+BDyq5S^3R}tx6AC}tN`y${g!X{4nh13Fx;FKpuYUshc6#b=o_n0Tv>Dzy>nD2Li zb#R<^#>_(Gra_qZ^;IQ8-|yPqfQq2-T)1FXmnIyk+Lp{uKWspl0S!q0BQm2m&2ePF zQ8_;m?xT`NK)z8buS{-O*r7~O1a~1b!;8hL+biCe(ARPzIQ}vsZ-Lgz^1%J@JyQz< zuRz)T9cz7|I23V^7+O+=~eA{NU4PYi}$}}D|;M@Bp9Xuxe)ClFrGaO23?7HQ_ zPuX#_bahoFzG1%PYI;kj*D>hfGW1%pJ{7-`nSU5@7(im~lU>7lIpA8r3|+(!-*yW! zpY|9Nn!hOU*L!iEK=y)~R8`2Z+pK(Qy>sqiI>%z?1uLbk@k*(>^-ua(!3oQju z(7~SZ6&rr^Slcka`c0DeqrA7mR(rZ&BPBnsy|*7zY2Fa8(vO*L0dNBM*9=A|z52kN z#bwi|_3Wp#%9hdGE(_?rm^c^!$R_>Rhj}N(DY1FoULt*t{_cMNV&JOv>Q$y^LIFE# zL2nn4n^KKZ4ha-Q!BDXD3enRVYd@`SYHmQdJ-vchP<#7Xu1icZ0Wuw{khzyqc}OUy52iNEv>4-HosAUD(YjYqle2GzfztD(U=3~@ok>Rf>)IQABnSIC{L&i=41XzSU94a zF}ZNZ@)akb-6=DCIO*o^5OQJq)Wy5J9fnFSCpaz;*R)82dZc~_UT2DuW`hjTcYn~8 z>#7$wl@7w$K zZj4w=4jF{0^&@kZX>ehbs{IVVoD1a@sG7gKUXs$$U{%6mXY%GObPbNncr88YB>!P z)`)zV*PFh+4KOe+IzP=Cc5A=ZlG|&0og4Z!Am*S zsIlq)uX@J+f2*eg0y2|PJCqcU#sgm!aB`H@+Oksk800qe6#RI0dV7~T((_C?aq1CNWZg>2-I2SQK4G9oe5+wi#aO<1dx$#DZWJZSe%CAy;n%WYHh|aW6n=UI} zIX740Vk`n>UUq7>xkz1C>M+6fsXy6n5-{}ZY1+V>1yfxwR2?C4oQ$0?$oo@Bqac)D zt%uKDW5PtfP}A1gW2xYaNt--FR;9!Y-?ne@b_h%S$WZ>zHE72H0!=7c1Q*sCJ(zE` zeVXpV*q~X-2j*k^^zl<_!?(H|T>fYYJMjVDrMi~+DLBa(dIvlvKnw>ShATC?EdiX3GMcU$uXpg)T4Wnr>!ItK5m_nL65G)|6P3 zjE`Z25ukfep%7e3aUyCw!1Y$h2i$HT;9&gfo*Jwv6cw%TsyS&2p;*RI2Gy+l8%a9! z@a8g*`eFq8&p{{3i($${6&<+EzyHzC?8D_bjGs6B(V)aVN3!lOqP-0vD_sDjfA8)A z!d%3gv3D5FwoMr#@e$_yvRZh;EZ_8hLoHH7P|XAFR|l|SJ+nsju1UjI{|rpk%AD9R z&VBj*0(L~nn-bdmHv*KZqw*~FKVSRTd}~R6dnr~xt(Gqai&ZU5cTxlQR~A?(avtLM z7jY2e=!5V;#M6rk4wP)p|LD{-ebQoOrq089y1b3to2}HKQXS00ej5s|bRR1)_*R>E z%n*=;mRo1nJDP1MI;}s0JINf!d(?y}JBq}AG34iCIsd5Je$^Z3w0Y1tK-U>@Gip|~ z%hfO!Doy#uu}TmZF_)zg)p-MA91~~xt>q#j6ppRzCs|j6by;+>PHz$t1?%(Ve$^b z$Xb)D_LjU9x#q35O^oL`4l`2B+j*M+?z|?#m#n)yTdXV7Tj_Nf({11M5758&5xXk!M6ARd%DWEE_-ap9 zdeiPcFa0{R93yxDglve z8yB$;y-&S`Cfs_Fp2liS`V*A`iXrw2$6PCqo)&htyapp2E2bn|{kRNvL4szzw=py{c6He{6tn1$-rsGI{;^__1#!MhE*Kc&n zvF0eqjaATnr6xyy^;BRC4~R&IM2AJuyK?a!pPp3_NUlfNE6*3x+s{97 z%e8Y$*r$${w8BD%gbm^$nmFn+aYbQU(X@Y%rK zr0aAh)beMNQ#DPJe%6DqNYbx&OUDGY+5T)*(}m{c#)ZR6*@U)Udi|flA46FU8|tV) zEI55jQ15k&^~DbeHz*k8_pwpWe{;N`^uNYB!^|v6Rb;Kqri6WkUfiVqF*vAB&$tI7 zbAdMZc;=5tul?s!vTQ^T*$nLlZlZ2Zw#P@l-ouw$v7 z=+B`uwDeH@gdhUeP7^2TZuClxYQiT~5T=6M6}6QXD59u?`&=lPYPjN2VpUOmF)X*W zjZvO4euRF5bf~jyIyvcz8d__c1Rh4t7I9jeYvEt42wBFH78|~K$q*y^*`MC2?|Z{E zZ~jwAUTnHcJFrN7{V&MEfh$&zc{hROpfyK9EB>2`AU90mj#Z&z-w{3G^y0{q^zmfd zTb9F+@ao7|Pzmm;J5Cq!S9Wi;)zLuD(moGbTl~F$zl1TOD26HK$(8KhWTA!3#^WXz zJnRzz=-GPsjYkOX%S`LY*PIv zkHB)CfP~VSjN()|7T%Z52I7=7WWAs=k=wW51k zkPhm9_t;hjL8Hr&kWEre)QHR84MTJYC@jVg+qcBceT4+#f!Ysvo*kbl zjqCKK&DyIN&P5{j3>nE@_zdU<%ZJ>_6|dtU>Gs$cH--iyJxxhWa>l2$lJ>t3Okok% z(0a!U*Qn$*1{%0@v{Q^g926=y%JpLOfkZXQ<39V;j;FQhrpKY8Q{aUWEUyGFL{~zK z8@d)kgW=VW2~f!6 zU+9xpYxA{pjU9?N6X@Reu0gyFRBQ6wyX0@H*J<3=)Q2)>!FwodI{^`aZsfDB+d#iY9fyz?Y5z3AQQu?x^d8BRUvoqC z$+5svGhQK#a$o!L#2M`Gf9vETx5!o9zc+dCYlmP-@|%}o%E13xJyS%^cw6LewT!8! zia`8-`Om01=6IMo*sOMKTS(wQ+KkeF>lo%YlC;=e&0}v=Q*To7PQtb#$228Frq|651MB)q1uPc=(B(7)`!k5iKjR+>_=?%}prg zlw8*9f@)n02?u=MeLpL*QYX$_Bv$BnYcX>FnS_$bRinJff%f+yz>49R)TV;q*;!%6 z2lq*HjmH|0LxM~5Kp4R|aLcl;9w?)D0Df_|8~HEJ(0tS1DMQ#|1g4yxI$n(Vus0d6 zIA^t?gf#qGNVv;Z>plY<5MAx4--sTFeyF2Ld*bcXe4xczX?Z9c!?aZMSdF4vI zNKQc0c!`lvT0z}(cBcF}mvvhRcx)rJNZCJ5U9Hf&$li1Oap_4Euhd`V@~`KuB5P?= zSvwuz`?9CdiBp`0{Oa%F+rjf-sW^Nv`_hp)kF*`y_QFtwbUOpcbI<%fC(y+@y$KHd5jPba*Z(zr8eV}FcQch!ocIG;z zeAA~!rzFsz#blQ4z8%!5))eLmGm=ko)e_A-S0h!6=BM~QsQw1eMA{$88uUv=J26(j{1>9CDKAZe6a-`?ri2#J>e6eg!yhZO$Ik4y z<5$f>S&>2Cjc!qpq-2dBa1YP;GYfuDD1N_mDY`d>JUcl!>h|~eBgL56Gx0J`3m9%HMpP|k@V7L{#}pMweRl@jVQMN;lB zR)}&DTqEL`2!M)%;4)L0j2fAw%(+uC^G%4{l>WO_JnBAwDK)L-9`2Wqt4Xn#MPOoH zj;dKPsoBuYFeaAxrKPf^U-Zj-FnDPddXlM_qZ?g3;;BL_zrXTnaMTj9l+~GCzUtY7p6_#&N)Lgg31%i z&lk_v{N!3d0WLydpvZGd>fgk&r1LQZ%O5^v>iv@Oxh%68To~D>hxq77s1GK0*R(5U zvAEd@VWz~3)#QreN(>?Q3n#_o?{h~5nU;gMuXYO*G})=KqP{Yg5|%lfDx6_4gr$3^ z6i7R676er8k67~VN9i(yl?kLlJ+cIYfH_rWHWKl+oS7CJKSiK@j$0a7HkACm`df(( zVX&LHOt$}&uE)%aJWi*tubox02C3(ZVA(OxG-zN#{k5ub^%&YZX7TNZvSUtTfu@>k z-=Y-$1vLzmcAg9)dpXQ&_TjWa8BWDAy%SwOdZT)d)#I?6m+w?TUIW*d+0G?At7?g? zpBu+XE;2JyXo%?C4Vm7LGbh8Li^K{cVF$2&c)InB+OaAgeFnkAWTzJYn*Wih53wk0Rj;}qa#z3;Zn%oid+=<-Od^?8Gir6{u(Xn8v&C3(%h1ac=curd- z|ANFzIbG$%L8&cP3W`nXdn|NodlX|F3Y_&Q6TNUf#~1L=Iqbu+=lqf4#jY+en5Bvv z-rHXgw`K1U5r_M~e|%W%)2$5E>QCX6!d%H0-AqB~CdM626{Azekz{Yf^QqH1IxW>b zI>3}F$07zjv9FgTAYt)L)ggtwH5ga7MZm+u-^PcT5(p9YN9;o?lRT~)Nz7HrCHENp z-BcgZ??BQ#rE! z1Y=DKI~;AgAukbCsrs+$I&Z8*N*m4QJ!ik&PdSXh4c#(Y;8q^m*|(h8ld~A^jvTom zpB*_Jp9+8{9iJ2kE#}*@>C92QR&61oiE8O2_P}TUb@gY&tzlm@hG(X{T7;hoJwVxU z97M2D#a&Q${(U81J!HD1|JJ_nV`jsV6D?EjHWCNX|gMDJX0auUS zi)CEJHjD|#P-1zC5os2Gupc`ikx&;bR=2vsYBV1@L!$G90i?~oTHu6492Gi6l4vpk zi?wgLBP5jM%X%Y1b4n%-j)hZEY+N=v3AthI>{F8wHwh%^^tuRY1;)%?!Z=f9#+s=1 z^*Ko<@V1S0Xc2D16|Kt9ur8PD7`F!=9U3)k@|B+@Q%!hxvjF$FNy^-&WbotegA!1G zK5qgORWQM&^fPS>NV`=JhxY}YaR_TO7^`w)4&3J|F1&|cdM^uePE)B%h?-r0%i3Zq zesa=&uk3ddZgXJaGF^P?^*)arHaC_!U&T7?UOv2owze4Up$7N97u)+aqL*Yowb}e! zxYt&!Ggr`_fdonH8EfkO#djl6W`jX>dZ}D#Z>ZNC&{FtsUD0bE1hD-J^7B%J;(a+2 zy4xaZgh3}Um6DNVqFC5*;=Qt_qm#mHlc&IrGKQREP)qD+?iWRk=lW6z{~c?$Cdt9> zHs7Chnuqtd27((FdV|k)RGLG5{KA-H_z%wJnl>zFB$9({k8di!4=+kOnT|{@{vqVp zXsdlctk&c&Pz}MO!Ak$rj$06IP#cg{=eNYRwH-_OOd4+(PYT7==e3>o%FJiFrzcP1 ztn=59n_YeSk}FH?@$%2$E&9CzdAv`qR0?)+LOQC3l&ry0w*DUChwc_U6uCVH>T_g9 z%e%Zn0Yl!t#BD{~lkN;8EzY%4RG z$lVJb;#~^TwAE;LguGR$i3bZIB^T;cIHX_0huRMv3Or{+Q$RD zqchfk&rS(wy(%n7!)>X%4-*(UR&jH7qf!bZ`>|=lwDpYB+nI}kaX^z>!cXJY+;H>t zbXvLLyd5efVuggoqAnMDVq=!F65?j_<`u_gBSv z$C@piN`#Y9etDZ-vP>I`)l&_gvS|7u|g#(V8FE8t-$8orEp$4TfdMs*w#AuRx3}X9<+fhC^i|aaCP-;J8sZ6nlA*o?~rO#E) z%l&@_xznVD>j5dtc-Yo}w3?!UeA-(y=Ox$)fE}D%|69n*h*JrkKSC=yWK-{a;K)5; zXnI=Hhm`)y;siY=9T@amaRC<jV-Au?&G>8`35r%UALS8@>M63* zN!*!_0b^vA@}~w9r4u(~PcS~>+?Pl-EaMMuO(9k^S#!n<<0f#**|_WIw5?$SE;P%H ziteM1L%?F$!?z_YzHP9~o*NeVWe)3Z5IzSkiT7CkqBe3Up&F;W zcoeHc%^}+Yu=Ecd3z0=J1Ce{_ySc{pI+)^e{!ugTUta}KK}lb2*1Rvq0$CAQTRP#q zBt-UuiSt@Ya_HaFoSr3)0m%)K71LBrx*f`r;DYRKmP7DwBra3oL;p{A!%SXAjni0M z3FL*r;tWX`NI!m#T{c5Nk|GW!Cr0zOV+(oiP;Ytc6E;(87SFmoMD&s$5*z&!xhEBH z`QXe}HO3+`#6rTkyv%RJj5oDb(qF0zP$6UgHx+U@%auPc0{9U@uLH#E6=7do1Ck0xVDZr9H`_BnCP;gRvE?DdeN@6!h1_-n-!lUhP$%`+;K@ z4HCvQxK=UqavLTpI7sm9ul~zh?w7i)O1a_#EHYY82BaQ?_6i&jYBtZiCnxcH%(%wG{5Clcn<$#8{OF zsR!ciwbgQN8o_w&tn2Y0N6Y|e)|JZ`UGNn}ma<6vas&HIFW<&F{*|Tt-}Z3SR;)Ht z^}V1kCA6M|!i^~6B4&B(*NIuT;gj=Lx(e|NWdTx7B;-wfujxVfNIU~m3?imNlwyvO zs!&OpZ7~5M*HD^b#KfuASdKj+2}Eq>)9ko3D4bsDe1j7D!38KzPO?mAG8gP4a_wx1 z_|(&>cD$*L>N4K=K&d~%%20x9tGULXT!=L^{W=1QL;X^Hm*;7NX+f71wB$x)F0FO_ zE=@kb8woIObmee-R>2e2q2RLu6QW}*s2PZZYaY`xJ@aQwC0m=Q`km|_+a^GjHth$0 zr*XGOV=q4T!+CU=onuPPo0s6Y<&`R@bBA5IqS`Ap)ks!ym>vsMrwdQ|{|NvR|LsBG zkdaUk5QU9P^$D zDn~pFanIpq7#c0x?j@T&H-#Ag0KPz}=_$F&Tf36V5~ilHpDJ5P9P|wvARhk!c<1TI z*Ri8V$#-Z4cnq80CSOoK_{nA*S6&)X&ScPDUqS)n!MN7H!D5-4GR_8fW}l{ zdS~nU)f51_gTN=(73wvCu4p#TXDrrs+iq731bhNJjlDX0bDH$%W22-TY&-NZR24w1 z+lUy?ttCMnMcL;>gsUPU``VSsV(QBrPd z-3;o~brrf4wI+yMe(hXJ4q3N;RYt5|XYB+ORUJkLUwW@y6xE`Rs%p?dMHE$<1r$+0 z1r$rUOp~vv)Fg8di#VG}AyP zHxy!)ienU0skCO0htlrFGj$ebGy_#)tzk&x(v%!?-jRvN1Ox9#53gDP znE_*pyq2uWp>P2|HglYNW4&gUI|)}PSLVnW>CJ7~x0!B_obJibJoDF{YYMH!T^!Zh zin=P@X-PVvNg6j&2x3cP_4;#GEiIN9SLb;N11#j^{s*O6#Tc$uRL?n;^CphD;zAL5FY?k&7hlgC0KKSqL zT%55yGBk22S5txwdK4t8Q{-o>g{Z1ioXv^etXhc&wyG zm00aY9Z-K!{DpMlyt>q#DOsG;gQqJo;+Bw6T;oATX(-JCxbSH~sKKX-O&Uf+!KKYI zmX(bZhvtfHE@>BWO*GI=H#F=^U`-}zaZMtbo46WoDyFBYL#JE2GpU~ZPu zTwM3pR{@0cyn&8LV~`K9?f6$+3@oav?23gKJx`p&Aj=d^aSjG-A*5=W}$CbufofMuWja&Ct z&g+h>!A^f#Xz?q*$rYYtZWM3NJ-Ej;kEgY|UqaV;@&f|c8T`kmueEp3Lv0!>+eH$o z8B-d72srfh!2E?}Qk^Pp+_yEQfu$~o2Xz(X(!IpcN(-^cC~yeQM?RQ8OjGT&o6Ctd z2purN8J!Lkk&&J={{ZV1-)4-}eP!Co9m@`vQ;1Iw-@NG%Km#uA=OIAPemeVg=j%_o z@ZO;U?o~;K2|inLKLd>Z72467pRCT~_AxolKSVlv!*MOsq^v+Os`bd_d*|!yPq^G7 zp6aYYDhX4Okw2XQA~ z(w+UVXG~kf-e4P;Fa!Vx)K$}Qy^Nh&Q%zjKqJnZsqPf}R3Q?2-%0N8{6qV5H$ctc` zRYunUV00KY&sEMmwl%9y*~^qDqKbncuA{-)grat_b0fwSvrDO9lPeIN2HP%WjS;N`t+rKj9l7U zLz)W)kb)!LPB0%F{Q;oI35#vJuuy-3Q-M*uaTx=Z`Ii_uJ*js9FrWeLOJ3|+_hLw_ z$2-`4F;XuW$;Nt90nJ4$1@cx_T##{+aZi01(!Pwfx;Zi!2FC{@{QFZ)t-P4bOUI`l z%Bm!CMZ&lsoRUX5r>~kHagcpB(aUX^a$DhK=TEhsB4BJV1Oly*pMJHMEwr$e5+>cm zfs#8`s?Nam8*$Sd(#a^1O0eLJ8gZQB_0({wIK6d7df1+=BICB+b5<7GB{>K`9%@|V z(mc^e_uK>N)YEd48=T}gC<6ds3Q#lJtG(zlB0$OW92aqbzV)$fq{gsiu4R>+aN)=U z++hCzJl0cc3i2_i{hGXt_D^b$%OvnCN=+Hcm5TOd2d@7BnEnThQYMiyqQ-8wChW5X z+W5y~liw98tSz}Jv@P*|WR$~IMj!3Lzwbg^4U6h2T;RF9h=eEy{RlUVn9U)jqt zx{H3Jalu3B&u`Y8Yr;<34j70{+hTxlNdV-IwCvLPDj#+}Z(3cowb8q4pwiTv>Io++ zoW{Us0G=~Z3EZ&xLG~4D4AE0;xDIK;k`>;$!w+IHQWeE!%$w*XG@2OVq9oHuX%F2= znqbX1Q?XVYDQN{QB1V%+I%b-|x~|`H#-)bNUnWfB&40R3VCNpcg$<;&8)+-HLH>~O zHrQY07#mcR@0#c|*dE@-D5St~oPc^{=BQ}_+$4hIdhI)-+6L2}_&s>)N3CoM<-|_@ z;l+xne{gjaQdc3uDXcAe#z(l0SR#1~E*K&c)49jj^sUj>rBPZ_sOd|Y8&Rm~&zT$? zax_vTh;ZmbDfA+}5LceX<(rh<^2A(cc3TUc_{M(>SD{w;{{XY|Jxo^UaG=mAHRc@s z1f<0+Ei!BXQ-vicq-eAjfkhdlSn5hqK{SgSNlwirG8ksFb=&zg`wub@JjY;wpW(xk{dhFFz5F#j5 zQGfuz0=TQrm&~XuFo`haK&PgW+Ol9!*l~A@&_G%BVC_|%;QXnE+b{yGLBds z>Ukebbj55DOjyDwQJeveNhk9)&pc1GRa=YAZB{+&ogw4dwF&AQyxtlCbSm&wE zK9uuKCao)uz-gwGnu2wa(1@k-+XMnsFdq1=V-kq3F4oy_6{L{kYAEVSz{%)2?rM## z+~(!ryk+yshuI!Bp!7ZS`PJBMQaDj00#;HOyNs4${9N~}>zz908JgzWU`Q_H6(sjN zMmmG(>&WX}aIzC}O-Q=gETlUCI)RKItr=~@1Y@|xVm`BZZz)@=RTv~-WqJDZ>-y3E z00|HMI{yIVPyV%asYJDjrPZ6crq)b4^lsZ;-at+Qggc4;Rdz{l3jqz0!5?}_6kz=U zJXI;g(N=?3T9z4tBRd=_jFatLrlmSu-$^V)lsEv9*8>&Py|v8tuN1Pxtm6k_Hy*#m z&1c+raW;RWOu_vmQ@***YXNltS`nmwMN zma|&ItmLw|~|oO*iF)i^GNO9vOTv5l?1>mmO5{|WUxa#P98mT6uDllw__kyjrp&T4? zM?Eu+IR}h#V-s{fOpWI(Dn@;C8VtxY zmLnV-gGk7(FykVGi2z_rHhoX|^{1fy+iFW060T639{8-s-Moh+usAt6tE?U}OfGjG zrH**2&2K3r<8kUvYT;yEJ0{5EjpcBWqdOjoqa@c?qS{MmWKwVy*~?%Y;9w8wSb9W) z&hO8bQ5-|%ZxPJ-?lGjKE+L0b_xa)Ym35q`nS^CN`t^EuoXCUtL*Te2oJu zl?aS^9db`29R3`3@1bQZliJ5DfCh1qfsQl5#!qZ_s`t}r@kqaI5f>wk$++Y4t1(=` zGi{1!Ff0W01BCgDxi^m(%)!<%bA$FGaO*`=z3M43l2HwwR*BvcRg9FJB&2s zLdS|ydJ)z{P9sKsG~W}MO=v?0D!@=a5z$W(p^F!UCbMA zat3i)h>EHeQ~)>t4wR)q7{zmYT~1GI?{l7zZ8)e+T^19?2w4$auLH|Hz4MBy%2s0& zBO~KDY;*Lk$jLpK-w7wP5K)>!2t3jnvr7*RL3~pwri%rKIo^dq#(UJ-cE^}4?2JN? zBSz(1o^%*^l4PGq+jpEVP0ZtTAUP9eTcR*2aZt~HXKY+ea}qKPl`c09Gt;eM zT==mTNfO%IdX5rCY-isX>G=LtwK_E_d?;$0dmGmmcJ_(7;$)0qk+|TTb-?dle|>b< zx02jA!I86%LD+s&_j|os@k17#cfzR0`2c_Q&1%KrJGYFJG$K$y*ba6aWbQq<$4vDd zxvx%*I(S`YEm_k}n?@8;7^O)UsxV>69X-cCl~}r-<5jBT9nS-fD| zu(}qJ9-C|(mp3vf^BDgC5BnqA`TkX_Nkw@xlasqTQnIoNLrQ6;go;B=G@4Rrgx5q- zX#q6TN=-1D+97Zyl^-R)@6J9Nvwoy`;+wtWCQdVB_T{ztXm6 z*DRorruLA5oW=nM+cbY=*(_xRy5RRYC-duB`i6{!16eNC9ZWSp7P8w=z zL91C#xf7}!42cfXKR@YKjIo3cWI&C`ZNmqQ{{SlFq0;Y5D+KcUhAoVLTGNio;ZT|H zu353tISA+R>-tlTDYvn7E?- z{zPLu3XzPByfclbfwW+c$2HeVgr4V3C`m0yu5Q`x);o7{V+6XcHuN~>)}@MBnl&>J hAE^pIPW2QJrM!D19Cs(FsWV+rptq55g|(LF|JlT@aN+;} literal 0 HcmV?d00001 diff --git a/lib/src/generated/librealsense_ffi_bindings.dart b/lib/src/generated/librealsense_ffi_bindings.dart index 05b922d..b43712e 100644 --- a/lib/src/generated/librealsense_ffi_bindings.dart +++ b/lib/src/generated/librealsense_ffi_bindings.dart @@ -182,6 +182,11 @@ final class NativeFrames extends ffi.Struct { @ffi.Int() external int colorized_length; + + external ffi.Pointer rgb_data; + + @ffi.Int() + external int rgb_length; } /// A fake ("opaque") C-friendly struct that we'll use a pointer to. diff --git a/lib/src/isolates/realsense.dart b/lib/src/isolates/realsense.dart index c265c93..46a8f12 100644 --- a/lib/src/isolates/realsense.dart +++ b/lib/src/isolates/realsense.dart @@ -1,7 +1,9 @@ +import "dart:io"; import "dart:ffi"; import "package:burt_network/generated.dart"; import "package:burt_network/logging.dart"; +import "package:protobuf/protobuf.dart"; import "package:opencv_ffi/opencv_ffi.dart"; import "package:video/video.dart"; @@ -44,22 +46,33 @@ class RealSenseIsolate extends CameraIsolate { void sendFrame() { // Get frames from RealSense final frames = camera.getFrames(); - sendLog(LogLevel.trace, "Got frames: "); if (frames == nullptr) return; - sendLog(LogLevel.trace, " Depth: ${frames.ref.depth_data}"); - sendLog(LogLevel.trace, " Colorized: ${frames.ref.colorized_data}"); - // // Compress colorized frame - final Pointer rawColorized = frames.ref.depth_data; - final Pointer matrix = getMatrix(camera.height, camera.width, rawColorized); - final OpenCVImage? jpg = encodeJpg(matrix, quality: 30); - nativeLib.Mat_destroy(matrix); - sendLog(LogLevel.trace, " Done"); - - if (jpg != null) { - send(FramePayload(details: details, address: jpg.pointer.address, length: jpg.data.length)); + // Compress colorized frame + final Pointer rawColorized = frames.ref.colorized_data; + final Pointer colorizedMatrix = getMatrix(camera.height, camera.width, rawColorized); + final OpenCVImage? colorizedJpg = encodeJpg(colorizedMatrix, quality: details.quality); + if (colorizedJpg == null) { + sendLog(LogLevel.debug, "Could not encode colorized frame"); + } else { + send(FramePayload(details: details, address: colorizedJpg.pointer.address, length: colorizedJpg.data.length)); } + + // Compress RGB frame + final Pointer rawRGB = frames.ref.rgb_data; + final Pointer rgbMatrix = getMatrix(camera.height, camera.width, rawRGB); + final OpenCVImage? rgbJpg = encodeJpg(rgbMatrix, quality: details.quality); + if (rgbJpg == null) { + sendLog(LogLevel.debug, "Could not encode RGB frame"); + } else { + final newDetails = details.deepCopy()..name = CameraName.ROVER_FRONT; + send(FramePayload(details: newDetails, address: rgbJpg.pointer.address, length: rgbJpg.data.length)); + } + + fpsCount++; // send(DepthFramePayload(frames.address)); + nativeLib.Mat_destroy(colorizedMatrix); + nativeLib.Mat_destroy(rgbMatrix); frames.dispose(); } } diff --git a/lib/src/realsense/realsense_ffi.dart b/lib/src/realsense/realsense_ffi.dart index 2110dc8..7351c2c 100644 --- a/lib/src/realsense/realsense_ffi.dart +++ b/lib/src/realsense/realsense_ffi.dart @@ -42,19 +42,4 @@ class RealSenseFFI extends RealSenseInterface { @override Pointer getFrames() => realsenseLib.RealSense_getDepthFrame(device); - - // @override - // OpenCVImage? colorize(Pointer depthFrame, {int quality = 75}) { - // logger.trace("Colorizing frame: $depthFrame"); - // final colorizedPointer = realsenseLib.BurtRsFrame_colorize(depthFrame); - // logger.trace(" Result: $colorizedPointer"); - // if (colorizedPointer.isEmpty) return null; - // logger.trace(" Converting to matrix..."); - // final image = getMatrix(_height, _width, colorizedPointer.frame); - // logger.trace(" Matrix: $image"); - // final jpg = encodeJpg(image, quality: quality); - // // colorizedPointer.dispose(); - // logger.trace(" Jpg: $jpg"); - // return jpg; - // } } diff --git a/src/realsense_ffi.cpp b/src/realsense_ffi.cpp index 970cd2d..b3d4ed5 100644 --- a/src/realsense_ffi.cpp +++ b/src/realsense_ffi.cpp @@ -46,10 +46,6 @@ NativeFrames* RealSense_getDepthFrame(NativeRealSense* ptr) { return reinterpret_cast(ptr)->getDepthFrame(); } -// NativeFrames* colorize(NativeFrames* framePtr) { -// return colorize(framePtr); -// } - void NativeFrames_free(NativeFrames* ptr) { freeFrame(ptr); } diff --git a/src/realsense_ffi.h b/src/realsense_ffi.h index 0957ab0..bc8bee1 100644 --- a/src/realsense_ffi.h +++ b/src/realsense_ffi.h @@ -33,6 +33,8 @@ typedef struct { int depth_length; const uint8_t* colorized_data; int colorized_length; + const uint8_t* rgb_data; + int rgb_length; } NativeFrames; // A fake ("opaque") C-friendly struct that we'll use a pointer to. @@ -54,7 +56,6 @@ FFI_PLUGIN_EXPORT void RealSense_stopStream(NativeRealSense* ptr); // Frames FFI_PLUGIN_EXPORT NativeFrames* RealSense_getDepthFrame(NativeRealSense* ptr); FFI_PLUGIN_EXPORT void NativeFrames_free(NativeFrames* ptr); -// FFI_PLUGIN_EXPORT NativeFrames* colorize(NativeFrames* framePtr); #ifdef __cplusplus } diff --git a/src/realsense_internal.cpp b/src/realsense_internal.cpp index 9ec8bd3..d781cb4 100644 --- a/src/realsense_internal.cpp +++ b/src/realsense_internal.cpp @@ -47,6 +47,7 @@ const char* burt_rs::RealSense::getDeviceName() { BurtRsStatus burt_rs::RealSense::startStream() { rs2::config rs_config; rs_config.enable_stream(RS2_STREAM_DEPTH, WIDTH, HEIGHT); + rs_config.enable_stream(RS2_STREAM_COLOR, WIDTH, HEIGHT, RS2_FORMAT_BGR8); auto profile = pipeline.start(rs_config); auto frames = pipeline.wait_for_frames(); auto frame = frames.get_depth_frame(); @@ -74,13 +75,16 @@ NativeFrames* burt_rs::RealSense::getDepthFrame() { if (!pipeline.poll_for_frames(&frames)) return nullptr; rs2::depth_frame depth_frame = frames.get_depth_frame(); rs2::frame colorized_frame = colorizer.colorize(depth_frame); + rs2::frame rgb_frame = frames.get_color_frame(); // Copy both frames -- TODO: optimize this to be a move instead int depth_length = depth_frame.get_data_size(); int colorized_length = colorized_frame.get_data_size(); - if (depth_length == 0 || colorized_length == 0) return nullptr; + int rgb_length = rgb_frame.get_data_size(); + if (depth_length == 0 || colorized_length == 0 || rgb_length == 0) return nullptr; uint8_t* depth_copy = new uint8_t[depth_length]; uint8_t* colorized_copy = new uint8_t[colorized_length]; + uint8_t* rgb_copy = new uint8_t[rgb_length]; // Copy all the data in the depth frame const uint8_t* depth_data = static_cast(depth_frame.get_data()); @@ -94,17 +98,26 @@ NativeFrames* burt_rs::RealSense::getDepthFrame() { colorized_copy[i] = colorized_data[i]; } + // Copy all the data in the RGB frame + const uint8_t* rgb_data = static_cast(rgb_frame.get_data()); + for (int i = 0; i < rgb_length; i++) { + rgb_copy[i] = rgb_data[i]; + } + // Return both frames return new NativeFrames { depth_data: depth_copy, depth_length: depth_length, colorized_data: colorized_copy, colorized_length: colorized_length, + rgb_data: rgb_copy, + rgb_length: rgb_length, }; } void freeFrame(NativeFrames* frames) { delete[] frames->depth_data; delete[] frames->colorized_data; + delete[] frames->rgb_data; delete frames; }