From dbaabb03b3fb4f284a4332bd1d6eab6defd9711a Mon Sep 17 00:00:00 2001 From: Pavankumar Videm Date: Thu, 23 Jan 2025 15:02:39 +0100 Subject: [PATCH] add plotPCA test --- .../test_data/multiBamSummary_result2b.npz | Bin 0 -> 386 bytes .../test/test_data/plotPCA_result.png | Bin 0 -> 55939 bytes pydeeptools/deeptools/test/test_plotPCA.py | 32 ++++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 pydeeptools/deeptools/test/test_data/multiBamSummary_result2b.npz create mode 100644 pydeeptools/deeptools/test/test_data/plotPCA_result.png create mode 100644 pydeeptools/deeptools/test/test_plotPCA.py diff --git a/pydeeptools/deeptools/test/test_data/multiBamSummary_result2b.npz b/pydeeptools/deeptools/test/test_data/multiBamSummary_result2b.npz new file mode 100644 index 0000000000000000000000000000000000000000..90fe3fa78e8445d60716c75b9a522b34a5faa4b7 GIT binary patch literal 386 zcmWIWW@Zs#U|`^2@Y!bQ!Fg=ou?Qfq2#C3WI43bFHK$lFub^`F8}V1t0w+&AI2N#W z-lV8GF-!86E{GG($ym2;@q&5N;zNR_%n+X+KV=fvqyq0VntrTZ;^``4OPGF2xmnG! z;@Zl^abW6{__#?kvzA0pii$~EF@4I6Zbb%$02KR8=lMPi0ovODwLdqpq$sljr~P@8 z(-xvzFI0|d{V^*pH?RW=4jg4*;$6t6VbaX5b@u_^a>f8}MkWzv+`b1o0t^}&K@=h^ i(Dk9a8lns6i^c{Z6XAydZ&o&t91{>00O>y<4g&z%A9QX2 literal 0 HcmV?d00001 diff --git a/pydeeptools/deeptools/test/test_data/plotPCA_result.png b/pydeeptools/deeptools/test/test_data/plotPCA_result.png new file mode 100644 index 0000000000000000000000000000000000000000..ad0ee266567d2833aaaa396fde679e65b8e238ce GIT binary patch literal 55939 zcmeFZd0dWb+ctb*VVT!LrYLlUBq>6ZOwm-}ig{?sYG#uHih7^Emc>+qQk%_bbYZduL5w zGM&L-%woyyR$(wE)zUw|Pr*<83uj!!zr?L&4_T|8JYj8j)XIRd|ERU4*-2|N<73Nh z4XjQZpS0MxUVOdiy5&aJ)|RIwgoVxj^@8;$tqg@%C{C)xhfK4SJA9hKm~)i=nGh`# zWz1kyerN68aqvvQw_3Y1^UFtH{wRvv!Y;Jg1Dr9a<$$IylH&#y6m~g;- zp_yCshbI%y?3jG;@k)pL43+RT{3XB55L+%AF@qWIFP$UP^;)-rdF{NJ?ZS^qO_i4_ zHyWPEmdrf-HM8lB_yT>;KXDZd#+p++g|j(-bBp6*ZQ=ZF_Rf-7^cS~t*Q_VeU+R}L zu?qOJ_4oh1m*fg96}Q^Gz(cmXsmRWD4c>WS4?eSk;gP2j{c^CkEvf&IfPlblDSNBX zz7&@chs;Hfv$E8}_RN~KXv6lL(ZM#Zmwc={TTZ@j$iHs$>FI^JmAnkb_M`UVlDMod z&flL*wJoZ19dl05&5}^E&vNKZ9REO319xVNpO%F{kL?_p;d>U3f9x?haiaASuS;=& z_~~S`O3{(w?jrZgm(%aw+9b~K-F2S8V9cM48`PfEk=3W0*@Q31 zQcuzijH&}F zJUepVtz&JX+w8j*@Qk$ii-=8Lbwh1|Ux!Od9CTC&Y4{cBNh(vx#j+df_5egEm%rQY{i zCykp51FMpauVcAw278QczI`~rC8%C@e%ieGOP0jqLz;8OMv|B@$MW27OFO3WIDOyI z+fl1E*8ft5$-2tDWxbWurP<5aOkZKW>|BXDr|zp6)-89Jh?y95HRQ|h-(P;`WOmGE z^QvYnx$?n-H%5PWyEf;ZoiteFIvUne8Wp$m!t~TbSm~u#!?_tD_{7#gyN~alUYJpy za2H z@^IGmm3QFMuls8}8QZ^1 z+TkGEdZf3a>99tUu5^O-BbEI8d@R}HyXm;A#NV*Px2wmg;j1*$Estimo$ho^J+yAH zr&OsI_s|xXlwDHbD`+z|($`k5p;z8l=b97}5_0Tiar6Pcyyws7J38WHGk!7k92)0jfLoKuhyunth_B@V-jR@`0(Kj%TIqXTZRX^ zMPGbKI9U>Yg()B{t;3%G#~;gCspd-~@MKN!Q(9}gcs-W^**NtCm5M|ibAw0uX<_;k z8H|2O&5Q{Qle+9II*P`nk;eFS>xcVcI0Ia~yh(W;3)^}t^eSjaO`fs9=zaX**4oT8 zllSp4*i|MSHIJsxo}J47XmoTmRxc-efskf6j&Zd1BP){+_d=I!HaqnBRL*eM>(-J8 z56u*lh!wjoeu$hoW7@R)cete_BsAGQ&*v#M2RU~5q@|^0*mV|;d}J_kKgr>u*x}d; zTJPSy8|=#&OL)oas;#T5>+bGelGXPy4yQ=2fK`}gQ5)+mGkPdWF;GQL?y^Nj%PJx5 zbY+B(wDvYSJJAQidYZ$$*Yff0y1r_^m0ZcPdGo?>sEta(Sq_6OQH|~G2|wGb+wvCb zC3`fz;67Pa7Ngqxv-+fIo;%kA%>)Uj{tXn?Ew_3MILhq6lVC8ESEfgCbN)7UMGNIV zM(z%}VEnQCgKa_oW-L9A6HI@m9xb@{`W`;WWjMXyh5(;O-sf+Y^a~bSWY0oj-GjS# zpO=y{QkbO8#p*LyD&wN<ojEJ$))|1%}(P?>~ROR}juRt~JGNxVXf5@$g^2 z<7zaX+pMkUS@iV}x_HJ^is)F1nK&$~6$7p@)e^OD8D}yYJUI8g=3-gd!RmuLg^T27 zxjAyal;NKL+T*n`!~aFvZ=83YJ$n`r$=Y@iLwhMJO;Eyb)ms^XyeRpF55q-uRm@$D zmD3NF7gfIFEbR0v;nluQjyoKBw-~nsk8x{k(_%M`2`g<|S$jZt$wGmY88&;)(}lUM zJaSo9it;==tS8 z<&~7|Y_~GBZ{#f!O;cd)+jkI~Y3|&)^Or9DcJtih!8@Bel;5Q}MnrDf{Gj0rE-2T4 zfAwm?HEZP9r}qd8`?eiqXn1xs7XEC%@R`3xrO4{He>#IT*drgP0=Co zLpz6Xq1!_v!o#D@Dj%=|HeOr8=-aN4wo&KJU|sT&JYOM!`{^U4oaOb}ji3AeU`yE; zTuF-xKk{)8F0Ew2AAf{+dd_6A{TEi~GrC@;o!eOcQ~1_M+1k(%e0NCkx&<>-FHA^Z zm*Fp28e*C6aAD}4{F0@*bKlYRGUOMr(l)B~Uhi0=H#|B;m!0A7zj8!gbS-{0f9IY( z7b*Ar`0}zkJ-0{<{z%`mf@E zn>MQqrd}yaaZ*e>RW#<>Ec|*wWBgbuOVN2Q=Zsq#TMOIqx9>d7lM{jGAwN|$;(2_4 zeY)vDlcx$EAueG3lSN_i@d4}I5xE`|FQ2%amsy**rbNj>qM-5seqTRVMMWh*g7aXI zPwCIn^M3T{A&VwXoM=5dY+o(PXt*?frlxr0-37=oyfh&3wr!iD*Y9qE4;JZrK0Ie>fRHeK+Oz{ZcmDO)xpRTbX5$^&yAcCa_X;;j za9Pet=0MrJ`o_kHOFRy*QfD#-K2_7kSTjXWPw#Djcqt-~<*AwBoM`v&(098CbM@-i z)zw-bKYo-~RJ5g&G{0~BBX9WnHh%kqk-n7^7ef{ekBsyVb>>vl6XD?I?ILH+oQanA zU5l9K=5adHF~hJhASOC`&A`AwjI76kstlVp{x-dI%N=}sJe7e_8r$09kYbDmx*8+q z3(+FfYkpN1s`XePRB}^9zX!294)41yqJNP9<;YN<;JS6|lt!>Xgj1%^m{A%P>=L_H zEw&kf6W~^8q#n0wsh0ohRdHKV&U)4oX@_JdC#Qg=e=;&%^CSw?J&^jpK`Kpo4ups!q!DCEiH&CY0^pvCC874 zkB1U%QDKUF7Q*7|G zY2CVX>C&-d$L23w=-;^+89aiLD56%hN`yRR*dW(Ydjmtmg=Yegy9Joc=RYrddanCX zK@p>`3D5KFq^TzLxo5k&tm0;eGvs}$og@RK9o2y%2!HF?N67mopRCJvN*h3$PqA&+ z%zN>|1ZyjC=6eW_L-PtS1V9MZfW^jBpLbtfyz#|PsWi@(>ldW05iC>3*%}tttruP@ zH&Huu=;qfqxA=g&WcTiELuxL5Eu5o$q@=yA4X>|L@tRLh%u>wiPIxBJZdXqa@@>?& z0;NESi0|LOJEg^FKY9S{(b&>rEEuPe6r>m=6@y1NC6nIA*m|S7rnDUqv$@$Q;qb#3 z>L*e(Q%<~Hl44T6w$2>bJ?z}nIRz#uRRyz`ZVdrayKae0TJMexD!6IW!O+mqzc=WO zYGy5a(}_2W-Udo)%vi9l_+yr1Z~eJBYw>XK8GcM6Tk}>cCYQT{P}y|Uh+pNA)|@(f zY4HPt*FE4#rpOzG4%2W^>F!J>bIpnsPiQ5MT9jsKvpcefECR((?;#vYcd%;zZ6g4R z)Fqo8@?7){V}lhr0ljnav6jBy`}!*I{LEf6 zuJNYbj;daKbBwZY;^nr3xzg!szamD>6)hWKii_H^Cr(7t>a&2mZekGwX$SA_>v|nh zO-H`#@3@Je!=5;460m}H)WnXnzXFbww6slApk38Jj%NSBfHBAh=V&gVD)!cd-G-=0Xp`4Zf?PoCr_^4`&%y8;hACE{%fi@Vt9!F(?XwLiQ#{|!SWPS zjekZ|85tQNt<*RF>*$7a8g1KN6|0k(O5qyeb73B#amIF$Mf%p?>v#OyCz{u!zoQWP zYki)Sma1ZFp5g$V@vsQd;8)1K=Ia~5uiz)gcIfL65*A*cFrguD3*C$IOvI4Z>a-*# zw16w&+}pGJPvFN4_b1Pu?E*VU6PmQ$g@ZZ)*sxEa8w4(!!dUoHX*`eoyBaZnmx)R2 z?M=pau@%>diIrD=VptxiDJ3mq{<(6KavW770(|4DMqYhWQS^kZkA^w<}&}=ePn#`lH`C*d{o!p_s7G-L$uX=F{5i2M^l-9E+;1^)x7%aw+%=b zE^Jzc{|2o?7OAMJmPhXAPBAXs6B83tID4v_$LFB&oEfhk2U2WC_mQrn(D&xnMlLQc zemvw9qjx*C(kz6^Y>9ELTj1f)+uHbnL2-Zo_uk%eHorph@%*_Uj}nqg8S4uY*d53r z#&2$lV9D4n{hy}RT0WcAS{8F%F?gGEe!JIF@w)&PG3M2&5%UFbnTfVY@vY@?{`la$ zrL~Od4eG2u)1<7(&|Q~IzSln?a`e$<$b9l|zcquu2wL9x_RWk!EjU5!fv^__-ade% z&!6wkq>~KF`)M=F?my-Mje6T6scz4wPoHi&{_5J!Wrm1)NbdKgSMu>CZMDUFwVfY4 zd`QAkf?kd;0zGGmtnRpMFf0mEv$ah{>N~EX8>7OHZ6sW0zS*KC+OE!7Bh$8hZO^Gy ziUH9g`Y%2NtzNZ?eFl$Uxp#8%rdo%#gunBZg!oEE;wy7@$K8xGKkjy9c5b5(3bMMU z$2L1Vd**qps@v-aht|4p8+H{jN1Lt&mY8wLZb9|*UoQCUh* zzvu)9k;z)LY;)?rx7qANNZ4NQwFt2wtp`gZ_e1Ov1T+#~353qbZR{T$Y<)IICYhqa z^gwH2#7bgT*mVTVUM9iBePPSB>WvNh$EwABeRUI0iV@Y_)um!) z7SD;l(|xVCm{%PHeq6H2=-RfSZx5yTT%)3*1fdVn$+^AdWa8n6Ct4CSJFMh#@or>4 zkDaxpSyqkmHaH&2lE{oQHVv=-MEch|Wtr&aXn@yT3&w6A`TlGUJN(4k+xexX4-a}5 zapT}%CQ18HYyuwZL_uqdn_Tk$bK*3KVI@}TZQfec#IwL?cx(NU#ewMq3N9kXaXKXUB z+VpZaeTp0EB?VToplh{6~7PXoychLGJt``#850O;`0@MvZzps@4qF1i21&zNgX=f4C zW%tp3byqcloM17W2H2#laBI~)Sq+HKo( zgPngKzA}}_clt_RUf#F2Hom01BJf_S7LfDKiK3tc2w^NX;!YG4x?l|hg)RTM=u5}= zYb)kvzrp+K-P08(*X;7?#37i)y}9|LW2ai%`-EPQ1v&P%{`yJCS@(CJqll~Ri)_$Q zo0;O+XK^?|9ho&(mP@>4^xMNCK(*BaLqlyOUphEsFa;pW70HY_{kq1x;QTl@%J_nV zH~^#|o-RQ4 zIGs#e`+{9NcUnW=W?!Z!W@!(>K;raQPtHbluPIr^!;=W4_En%R{ZyDqS@ePN=K*lJ z#;Qcxx>=dvlvb)4cF#M|%oNK{JE4av&e_%yhICS-60N&Tf?r&YWo<5jSqw90M1JOY9wV#mcoz3P;|D1!L)-OPoBoxYu)l7+%l5&?4 z`NPe0J6;N48w=si>+)p0%#s_)mDF=)6KEeUe4r^E;k&gZDp*}!-kt9=?fsfP+qb)c zsB#XUdV^nwhMuz;Byf-u-}%VAxYo>Gnc?rdeqDTQZtivnCmgLK@fFJsM`r0C98Ss5 z;QgP&BZE!5ck-@v#A@=cAyHCRZ7vS|TemqFs+sZHS1@YQ)Y;Ks6>GIpzwtMH-G&W! zWlFOdN566#{`U}jAtTChu%~6MYNRLA_=V?UFHc%v%Nby?4nHdm%?WjPv}Dh8*@4aC zCit0%vMf*5a8gN0$qgT$qZ%(bF$y&=cd2WdVAFfNmd4z>w*izc7J`c{XR$Spc)q)} z(a`$qo5kP^hf#Ldn}G&8%FxvS)OtQ*z~aUGu)Hk>qyJR|*IyxHN?=B+XU-RSD>E)DbE z7K=0Hf5wfzn~@%e0O-AKFq+4u|0qjk-#$-htWo%ZoTObx8EChHRBp~4@zara@7`?y z(u8bmgm5(ZeW0XWB6NFG?!(fnR()mnVw1T&#Z#`}^Om~1m&blLKrsi-JXo~lcHNP8 zcV(AsIO0aYiV)t$6K{$?=Xs>Kj=5a8aG^1Vmz$e};%J+;_jHjS!r9Tl+D3pI$n^4| zUbp_0i8o9oHPeiJ{W{nD`An9)y!_hUp^QfqGm&$)d^{6YEcwQKvfX)HX)~$BS|_vk zSPmpbXwj!&096a%Y=H8dTOi2n{#&B5 z>`lfc%z^&?8?8TB858=HqXnKtDh2CC2ck4{iNAL7;>A_>^)CU983}fO|E`QB{QUXz z^c3$KH|B$q(>a~|{?=ym+wHIC;mX%sMofWLx%vU2x3WU12pK0Al^*FS z9Yock3^b+M#md!Z-ON1~5Ja}S1k`2)aMHj)P{*4$Z=AF|!@|OReSOtd?%--bZh4Pb z(Su@B8%n!Giq+!}9p%<;|8QTw>wCZ6ml0I)e0_XEQEe@?kU>GC1g~4RL=d-;XtBT} zqO9rblzJEBMrm9n$c_a=60Rs-p#hNzIXWEY|vj;04$vOXiEW z@N7KciC7*+MNj0d!7tu2Wk~2*JtYeCAeR2g$9b(q40e#dw{&EB`d0G~_jX{bsY81q zNio=Ekd@`wXS>@IuXKCOQdIQII|k@*0D=8)B%`2${aJSJ=&ofb;6qc*KrH3r;n6L* zPsxx`{~po(WK}Yig4Laz9=i;-tbQ9Lt%W-(skN(1K&|%g=>8jMU{6b_1d5rQ^a)8p zts#6Uwc4VTUfG#5ri+?oDM3?&MAYN-HELfq;ybqQ0C`=j9v_VbD?q9zwi^3t-t)ryli!BvQdi**1P~cy} z8}Ts>tN)v@$%&vqoi2dZRBF?I=~X#v(J7))B(=V)$J-bhjnFBl@|@W|N9w!VFOA9+%1qc^(1QIoMXM#i8ejW#MEKkDo89B>I=t(b0`9?0!dbm7M~vEe)>DMG5rlm; z4v3zltp<_Z7a$3sQjp1PV9OYBncmC;<&^&Md|uvck`OKJh!%oinpc*CO9@I!-f4Nx zm^y9tY;`0ntemj;xe2E^70kT)PoF}e#~WTc5E381j&)38W9|;CvD60-9;_d*Q*W@( zpv|8?r{l|%rD6A6wT8bDe4M`vTI7ks00Gt#kz?oorA3bGJiD;nc$|9$;rlzKEmi52A^yaNVluUtBWNvj7xDCqXg}-7| zjDr7q(HGjbypBJ=y+dg?;I_5QK*M$5pF6iVo3|D(s@dVw(Ng&4%?<1g2#^sMXK`00 zXx%%qB-jU{afrl3)f*Ocio+Z$K4?A>qcso3l^%e?KZKE8BwP z5qs$V-G|Rk#jZ@Tc64-%18giPEVMmHT-!}cPEk=Ec~I^CFBwMj#*Y`={4A`@c$mGPGW^v}DGiUubMeNqkR6k#{6o1F zPMyMFnUir}zI@U5w`?Nw0n@niW0t=ZFXCy1j$JK3D+A}m{1nu#kLpbbE9$=tL81l) z(GdOUXx6%r3Qu;QjJCwpddr>=C``AHFI@2=`cbVPn?!2DV zbVHI=m+kE9=NAb`5rd8E@a5{3O=cf9R1Z>^q@n`YVI(<*070-?x1?{>tI|g;F2YzL96e2G}#XSbYgD0LM5TKWFRdP)2 z7nAGPt{q|CI)DB*!%LJh7P12a&0Pi>7j~m&b@SV|Zz?jQjftxGgDmd2&&0%J+OqF= zMP@lJ`cj#@sC=mI*~1-*_D}QJ;)*Nw-`A3FF#%<^Zg?IH+XVanHx>tuhaJwS-4(%1Elb;NOYnIFAvQ7pp)H!b7yf} zxrwL932f#)>|0w->IU^snZ48q!rckS?4!@7@a3=5PA^XU2q4fUG?s~C;k>0w&2Uy+ z^BrC+dU)o?F?^j?T4CZaDAB4-o62S`lPF6ZM(A3FGNHN)YRi22k73R6mr^`8W!Ao- zpY6hjn;>rD+rUi>z7(q6?AxpXDiqW%Y14WfY5%AOfV3E2zS+memFlUG{P^5H0I+}RTRUhJI2c+;9SGl8L@8U%C%7;<41V+*qP`P)aA!nte63^Z` zqvxPeyVHY^}{pCOTz6E(N5tC;pI}KO~>1AuHDE9rxSt4m0&or)l zV89N?ZO2;FW()!}Gg%Nf*ib3SP=H-40O?FcQK1j!t99^HHf)8>=5L!?D$iU}!L6;6 zu^p1}0Ta`lM+ch7sMQSBMHyt*$2-sz;ETLfD5@APJcm!#Og1{|@dU<1D5FG#bSnBv zY-9R1)6q8<2T-67#R|f_nFHML#9|0K6 zXI!u&a#o$VvcgwViJ?r!*>`_MTnnK8g!tQncykbPx(AmbP#cw?7cB7W90V$8(#ke^ zw^ACpW{K$W%VcBBw0Wdcc>2Qm^B?#_2lAFTGH(q43-~cn5NU-qstf>B4F!V~vq}}a znp2mi%v=w zYSP&2DdyGcFwByEK{t2#^6!wv@Wa$Yr|=hWeG)$g5{pir?}YWs6jD9}j60A8+NIhA zH4@GGoIXCbhZtPUuYb*|qpeWb{%6;qoUs;^Bf`S%4M+b94>+4o!4gXX-D$0a zL{;kk0~xm};t#8m{}i>M)A{e4wL$9+AZeCAwmZL@;#IP<;D#Kq{SZmfP98zN6-=c8IjQ{xyxs4 zEk)f5UB~_4lWEv(R9heU!aH^i4u(}qLEqf|pp9Pf1%-X?is%r(2XO`WGMPmaOQtH# zF>cn0;4T^)8d_6+GJ7DBNyw88MckJeDFWfjH3p^=;~L~+6b6V>oPw~EgqnfLlfNcY4bmd3S3T324h_|808PT7O3AYcGeCe{w$*ZZ(MS#5 zl#x+1X=lE$6@rnNyt{irr_C%8%VygD{S%!8LY>fx3#zNNuoX#g(RCfMskLtkq}m_( zYsi2+-2Wr>$;VNLH#xJX_yuFjyh6!aIJ^HYwn0N%o9Ug`4!}AYo!LWW@rO6oo-UFm z9E#74gdH{plnK?vG;0tZo95yjKs0K=hr|gX)-^*SvQ>EFn$tr^XR@qcLG|TKCNny5^ijH>N!xCtO6)6f`U&Jyz`y{TB-4i#jV0?O@ZMz zsYdP-!I|3vd3lwnXvw~St?$AkA{r|x!~WHd)ks zfV<-sj#f9W{WgGDk(}tIIlQUmP?v7Eyid>y>SpG9E)sc~xUNq+z2=7Tg%R$D!((Ts zw-2@@RX|cmB6aoaos;jE+0}%Sx=i}6n90GjVI7a+P#Z^nBAdy+9&lxprsA8Png%@r~J7Ksp9Au00#^gOi&bDJqjpaEU)r0l*=I9zx&v6-nbKsBmnn$X?%9cIA zyYmM=pcHOfdr?$W^acu7TagwkSL5*!H_?j2btUwij)pVQv& z%YIa3(7${;yVGrZ++{ ze862OEh$;Od-v{}AP$XMIp7EO7cZPd*jv2K>CD-eataC?r%jud`VzkD6Wmp!Q0P(} zina~K`y3~eerEfmi4(ifTi`rs&6nTPSyz{6f!ZaoKGyF;0ZJkI%v(e%%M-9`e2$|= zY$7;>n0=KAgP*=e8mi3p7i;w%9KYgoTry-1P*AhmE?8rn z6Z;MMw*`mLvT&98rLoaKqc8Llk0|>MAg7r@Q&DhQRxm0Isa;4$i&-aX(ody6fRLqC zi)db5a5`$k8E}|yUjCB%pF@hY5Ojn<))iQ_0>nX16dt&Hz9dcIa&Zamt$TLwM${r# z*8|+oVpb#=tE~;%QVf{4Aca;HYy;AiQr!yTGiyr?u9J*K1%B&wOqjO-TdT{>p`m6pwDqI?UNc??BuV4E*7h&+O(?SZ613$<2+CnL$dT&+#DC&$TK+w#+-5^iU11k`skolb*0nKpViUV2-1#9O|6dle>CsF#ECp^+sh9YsyO+*e>gVczg(NQ z79wuA#mVE0P>+>`-fxyHS=5*{5MHu}yA+%uqH5khb^-pKa55}hwa{gI@yaCPzm0%9 zfDU~VhVQ@RDaHPegRQNh@&!uE@HQ&r$eS5FJn^;!Dw8#IPbY7xOjTT1jlKZ*6sR`= ztis^_A!g(7@7HeK5)c*^2K29LZL-~u-WC6sV@hH8F&Q!K9UQ7=JveY91GY324^a!Z zEmBrj_bVwaZT$3Ug{$k>vGV=<_rpZs3$p$AvDJ(6*M)`ZnwpwEt(xl=!2k52H8LVX z05};)y6fl9^;S9{x@~?77A-RB8$E7dkPondU&$t#dfvBDnDP7Xuex0pL|7dCI7HE* z&&BU~6SHsRaY<2rT^&V-`8_VWElmwcolU+jiqjorJch(SN&eOOdp2LcSHGi9Hebyb z$(8VEfSg~0zI0dC1Gawc*t$Q_nuJPmeD~LuDT${jWmuJvkA;?*7y%&=YHPcH|Gr5@ zVlCHHXMqS`>oJ{ikNWgsD(5i*K3P@7Fl*iPxqhCEf2Den`oV}HeMJAAO?y@OPmjA{ z)PV$(qdmKk$f=Z+RGm3i+v6Z*F@_uaV1r`@*9HxvCb{Oy`fxs%jT%vW5@k~)AW`|Fh zG{xxi^DC)?V2$rVoqJm2k_f;OFeMcm1{#Sreq2udS|2w1F0cV{bo)rrb6@rcNgW3F z0>QPhT{A$A8fbk1%PwkJ_4cJkyGuJf+E{}`>Cot_L6xgGkXj^5fAc@Kuq151-Bb+N zdNi&s!^V`BmE1KJ>7S-J!#_n!T#j0bVHPT53~hc-5mJo+^1_aJ?f>Rtt9#>OyZ>zq ze-r26?#_E7;*Av{@RFKB55~u9Txl;gNii869%y|Rb_ooV8UP`BwE_gHVXuY$yl+^< zLzfPJ8QL7WNNj;wS*FgWNV+co-mFkChT;NJxU>}TALv}OGRI?az>;QnOYHJ5jrUo82LYPl|_kG3# zx^}!ht;Wh@msYjm+uIT7i=LJdQ6iKXo;NEzh)Z5k%aj@%X zOK}Lkmyz!FcAEG!J3pWG6-K6NidmVqO=cSMREExW9$LF~>!HTi{?xA2o^jOBz`z)h zh^Qy3Ik0I)kUWa=eyW823(o^^ptoDhTO?+31I3q*XTHqRszk_ymb}UFry1$4gol{M z*xaZN;D4zd?+0p2&Hu*+)7Jj}{tx^$kH}`r!tvptMuTH_Q(m^s=@8qx;g!!Zo9nd5iK~FJ==AgsGzAL^3cjxVwDkqw)YF>jGaO%M z98etDJ6l3@tt9a%Bo6o)BjJN=Me{=Oy`#^}+IWFvs6Y)4a0?;^hwXt#XP{tcW&=Gb z4qsl$AH==cjF>y*mLnRgSlE~Z7JJ@oERtj6oJEr8%j@+0ES<$8@t__RsC|$vHw*pA zw8Ke{1>+FdxUrj^)D6`UwKkRP8z7V|$fABsX{6rNbgZAia{u8y#PO{Jg~ zzJou6?E-J#zHNfArjHW5hn?H9D=&<6e(=gL7j&jyAP)$TWb?aciNoUnjcnLhBOoUz z{ke&S@S%A!AEGS-WHd@Ccr*JA7Qs{Gg?75-6DX-SGdnU~AB4XnwH7W=Gx)y@VR--< z#6AYFgX(4fnH#Jl27t7E01ply1|M9e16-@G(uO+An7?hY{u@ZeSD6nj zYEg1Ud*^NVUpFEeWOkt(dK>6cYha+e378YER=uvR=-J(Xnsd(aK&&bdAj(euS0y!$ zeyr9;n6ppqgk2g+t(}3L14EflN3U|l zMmR#xpq(vd`|Z$T{Y~Q@K8ZSxFG~o5qcW<{<JIm>! z$DaS5*@RL%n@MuP;}NiV#X39=AwZ*khTiC@71CCMtmb0+6vDvH)mfx87}q^AqW%}#NZI`|ViBidCu&DXoSx>j4E4U0k|wVhVzxvK5_ zYs7pu-byA6vm&izqZO=-_SEWwSTw0dj`Q!a*G_NUkB?3pvPvMDY(oEbRAB`<_qX1` zcc9we@NL6V!|J@p=OVe({leQLHeNl16Wbm{G9YRTsfi`{e^d_qbONDmT)23#6+t-l z0qR9n>_;dPMFY2!B?b>CivAOYw?UL%pf!yh%UcW?5PO^)RhdMI2K3V;VhbG$|88xpmo3Z4MMO@Vb;1SZXnq#l;0{0X7Shv%2Z;qpT1LzsU}TMy)Z^R{ z|729zR0`)X;bc)k8bm?+TkC50qL~e@VJ%}~_x+A*EnK|#)=7KTNWF4{z%#G~L#01FN6QK*w|-~UzMIPh439iOK~oSeamat}US6r@sy8gY0*RDCY7fK4 z(taQ&QGveovP`>^VkbXp2Rn6L(b*Y5^%2`5?oCFP`RT|b0xaMd!Lnq1dMAWqdf@2U zCn!jw`(hZqe^E2(-}V?L!ZB%i*bd!b4=o3p>o5_0Tlm=;i-#QsC#Ayc?995 z=%s^(x(wxm#>%6{)nf6%M|l7@4xY_Ev0jxtC&7i{aG(aLaDSAc$F_yzI-w2Cm=6aWdNQPHpt)N)&(C8Shq zptR77(@)TZ_z^P(X_ux-KydD=DbhhjiXupRTAeyz(tH4K$aWu63cvpEO%Xs|q0+L1 z>*!rQfiYfpMP+;-&1fH9CVTpzs<56OCi;F0<$9<(C?E-NJ(LLuE(Lq0KbLs38n zXbGcsOz08H&}qxyP$-9UAAL9k7l1tswv=l^E~WB_VX(70;;9PS6Wd*W5O~?^&6C1k z3W+a}&KiqaI}F4@YFb=>jaO;6L zMTvacR%YE!=)$;-^=%TUOFJ3-qq|$MwL_Z+G6A}0WWX{{w3I~9KdUxwd|2k)`CZ@{ zMAsMXFV4gZRvkRb(`J==`d*E31c8K($K8sMtQM=LnjPL~)gYHy5pe64F*Jo^u^LGh z@X_o?JL#>hr|z;86kb0pf?aS4>+6%Lyvc&zSFVV#-+(f9nRNq2-2}$u293{bc{aMu z;83FY>904@G)b8k_oq*O1s=z5BB#MrNau!3yIOV*65o#lvSXlNzf2pG0G> z&gFOJg=^V1dLGlg8UN&N!1|W9J8}uT)@yKEnsQWuzAk@V2NuX*DWal&+k0vRsdE{6 zYmvPP$BXmdF^{j7C`g+R5Of2(Zgiu_WxYVdjPdjehCO#qOnhm!&*ic&jJ6e^Y( z{V}J#E+^;1vnI-49jl;)pw;y~a*uCdVEZ@ArBQ|#0{q&V$9NaDcfPfKR225Qp{(t2 zXwR`pHQVpM_~Cu|@{wHnZtYTd(aY}Z?`2WPqxtjZIF+_Pj7^i1yYFrqN>3g+Rwz~T zL{~iQhRmWBVnTuM3MSa8N?dQEP^v*Nwt7tg507le_ST@=em-BdJHM@Aq>axv;`HJH zh&EC$Ub-o)eRvOA`gu7sjx4zZKhJ!^m>vVamquCEFg8Ke0|O7J!ZvWK#KOFw@jwzU z&ovK^jEqGwj~z~Z2=JUKdc6vQ8ILM!d5y;=B~AfSWRLcxsb4#`x)%K|w+K@}tX{Km zqv}v!X9bEQVrRbBf9~LP#BxIn!OAC?SC+#nwiX?|z{Gw`h)S>Eg%n?#JF-|GJ*an) zS*hI@+t)u{uQ^;&K!8Q)tqCXV9qJHjQHsl0C6MX~VR9PNwda9^_U5k+{@|x`;LMqH zX64+I4F1({P5j(qD{w(E12)~>5(VKH#3ONT2m2P1hQo(|98pvfI6<>x+#G*&b(O%6 zge6-KWg!}?K=dAUO87?;m!R(BZ~m#!K;**Xp`lkkeB_G*Jlupj04mIKeKn`O$+76` z%Z~>GsX`Ctk*vG*I{W`Q6XD2sqpKV>BP_gN(c%TO7w)4ccx-qt?KF^pc#s?N$iUd8 zjy+2@xK}h&h~e)8dpbEw*=2ak&NPP!>8bPW3+{oPa?T7wKD8AftHdI4a|S4+N1{a4 zLKPY0;dnH`jCTVW_jG~Co1(mu0lm5h&Ti^JQ9~0M%{wv-vcDKZZ8Mf{@1Y40sFPCy zY4+=Yv6y-x34YMD84&tdB%ndS18M>QB5#F#!uEJPt>$a=btwbEeE#x<>yJO`IbBsd z=Y*?gJK2*-9AjaqtBrIN2;LvwcUC^!ODq%=XX%3YjT^R;2~qpciWoP?HP#At&}E@w ztYZx#YjxE;(}5rwxBe5yL{~3AU!o-lwN5Gxp^T0ueqH1zo8#Ja84CELiYYV1Pp7C% zLc^Awuz$GB*sv;)c^q`X1aPFO7aJv-Q*oC6?z`q1K5211UIX9Ux!Ch7`M*<&Gq(`mqdDhFDxAKwiOOTi1- zQJF}SESr7r%O8wkm*aZBYhWmD)l}9{V-Vw3pdEk4-1VNYHgfE0= zk!t7aT2jr(#YNU@no|)r8cajv+7h>ku$xL-)^8^(4}VIg6uEsrd^iMCBrWc)i!%?XsFd)x zk!cC6E(;!9HHZXcmc!T`%R}_s(rw|jZ9|(vIZdEIXU6z(8Vu@q4X>lSl+@A+OCI#B zVC;Yq5H`*0!a+tK#Rd{j2j0s-rzgQ*L)Tswgs}pB5WRFmWO2nOw%*%{+pskM{^Q3x zU}*zR8#FrAQMaUuI{W~e3B$9KkL68=Hm#O3Hkyg9qv@5P`9)3btWgv0-uYr!Jp z0Q}Ns-mhN05_DgNw=yi-*Q%6cLDnP}AGSpd`7gmXw;XX6t8h=@{T(15m#~h=*&{D4)$w zl@V(vEM0B{>hW78e`BmqES?kt$q>~woeZdK-8!J>F4TgIjtBlFAw4-~%Sg)y%43xv z?3O`vR+t@5?Z&uKQZ6BiXl&oU-N*YagNq)@cymQ@pY>i@S#s4)PSgXg##_}_?ikU* z>fs{{XDyRBh^id4y*rx#NXfmCdY)|0WQs~bX^thXw{w}K?LllFYWv||wW<|zpM-rE zvwIEk6o$NPXr{jm%%^1AM00Htyo#BQ84xFE64(5#hPJFjklv_$4n+AC<{OY{6g2Os zRxpZAG{FUBdUg+z+lM`ylaNqqvwvyQm-0ByYqx{X?K8HZOb=eT3k9~+1JCe>TBWH6 z6#2sHP)Om^8d!L*c?@?fPnEt7E0xx)_gd2f5kST81W5sD+ zY38`o8KW;zm=ezFVN;~urO;>aea1?>{#TOeX(kIh2KN{>>r$5sXQ%?aB}^6+1iwpD z+Yd9kR*p}_SRp2+hM*GocV}g5Q#zF;izSDVogf@U9-B%fk@OjW@AmfZye5YnxgeiG zObFy1l~~;p%qr=QSCW$}Mjj?Z5P0`K*p>{hOr_;WXT#-#Cb6{}H(pn_U`$?HR%Auz zg=&adkVbCf5MlfW8Tw$FAOkHPRyb;@$S6}+^|Q(pt+h5* zyBXRC;EzfY`yU!JXQmK(n12p95rvWeIEE}S+oy;=oniT>HD~q-jT(VS#iA*2$RnIH z>0Vai{Q3DbXOwNpu?J(rxA&-swcRod68P15;tQ|{Fht4rUu~A5oh=`MP*A*D6IULK z0VL!&BaH{OujQO1grIo?K)u*aft%BAy!wX({Kh*lwGeLZxT8 z!O+M&jyM9XQIBc?*_fP2#y|A7$aA0!Zh8tW>edbCDS zNs}6I0fu$i7|yf}j=k*w%BYq;Te^S{7LHY9u~03$2hh0{Msszjz0@!SR;fqe1C_;;JId2=HLWW6qo)9I2cyT<~moivNv&b-@0ISrq?f=tSZd*cc*8pgNL&>J#~i3% zGm1~Mr_H2KWY}qd@FB56sjxKw>B6p9_alUUqv0PAunsNhK+J;T;+5mOH#@3&Q5fPL z@?(X%A6hP`ENjarhP^l@RQWsYyoDfToFQiEK$l<}Z&YnNv-*`t$TO~VP$_1N)YJ7m zON@nqPZ97Xh2T4ElZt2v6D&(b@6a`j!mvD#FHZM6j^o?tulFA2qj*FU4)S><+t-CI zMyfax%L1=h&mzl6hHZN+u&@r=ekWUGV%}=)sh7*hE=D*EHp^(Rj>+#)xzK?5q#YwT zsA0K=~L5;TD&|wRAC?$`s8Qzbz0vq5LmMwr;DUU zoF!_FjMj&}b3aN0se6wfZ{T`~ZQ>T^4NoI%iqX(T3SP$*f0;Ka{Y83S+B0lVt_2HD zXnaLH1AA@(jF@cEhyKl2=<%&kszbfS{+Cn86wO7ALa-+c*Hgu2Ux$L&$=Q`Ln%?RP$Wk`WAf##wpL6;|#{uIL zAsA+80dto<+RvFmmg{>QQ{qs&<8&9nzf;Ybk6|sGGc%(dFI+D3k3Hl&*xdMk#*Y1; zv19)~9XqyPp%1(ZyIGEo4mTV0z@(6n=N<=)pe<0f?vU#>ZP|5LEkbD(qjsS zj|m-qup0sD*R(Fb4u}hZTTktTGOUgRO7;h8-NU4fwU&3#zfL^?5DLnm3XxrpkmtS@ z95y#W3ZJOvh*M52Jmx7Mq$pv0wFbPT+11q8L$29K z#X!ww{Rj+vLL=u-sd0NC^b2K6%kREff8gUo&NEl7TFYdf#~6dWN3z#XqHc@eXg)2C z2`Pxk8+uLh?e0K=HHAn+3Mh*9#5G7*1BrOtaGyLE)F8wsD*9lz-VA(d;%v+*qsA(t zhkpwrk7P@nF=UI({=WA1_A!`w0itp|yLuQPksXd~VG36Ur8gjkNKnT$+qPxr>hBNO zdf;ytueudygOg!hAIT$Xd6XP?Z)WYW?9TXl0O`Dj>bJ z7d(9Mz#16f!lg@1nL3a)_*oEd(gc$*-4cmHeK>?tKWoB-3Dl{|nQnwmU_2rkKL6M( z3$DKw^fS{q5O{<5S>XS0SE^y&X;()2nh^b94r%%n+gAFF1z>p9cli(!(*M z4WpqzK4_t+&_|O2;Pq=oKlA;o+M}>sky>WtG>zrw{iwa{5_8aO3U9fl+yPr5I3!t zC(RxR_@5IiFwHG1-cLaoU@4@ZluqDPQ?UrT_Rx}{U4`dP5}-F%9E$TU#sWLsd~t0ko|RW(55i_ zbIpIzrsOho)Z}A(${ku74huZ~t88R}KyF<=4KJ%t0_z_K2y6?Dp0Afm<|QdCyp9S) zzKL(aZ}LS~{r1$heQU-oE*C(vJmwUPkFjK>q1kX(%crKXz8aIa1AWJ=6d&cSyy|JA zXh!Sdw(@B5R1G%!cIi`R0q>$$F`V&1miElr#D=(DaiJ=ID-rQ1+NJ?(;mn1@7L$v} zt;S(vxZeEyhvI#fdhVC_f4vGNGG6B%pKXK9d>D7j5xm_UGjv#IE{xSa)A=JVpYs(_ zAa(Chn&HfD^7v2V_U=zrVEI0+*2(a&w+ylVEEzcm4>0|OZ>!B(w_{fQsc>N8va-O@VQB<0}gNT%fD40Y|L@bD+0%E}e z1PCHXQ8XG5K~Sk8Y_ZV=R6tY&?ssj>ndHp;&pr44=l(zE`Z;H2VqouIdEfP}^{nT4 zR!`4vUY}kc`Ez-`=aWlT<23x~z4?y!+T7Nm#$=838?1Z(DHY<8{%W*;c8$&T3HMUV z0-Ag{8xu2noIp6HlUQY8lNFDjeq4v2K}xiF-LLueW{N*nb(==l%>S4~@~@1sI-K#e zXntlAFx*Fs0+&5LUcI@vh~dkoT5*Gvo_}^**|AmS=zy1fw5P1@I4rElz5D57@hIho zpaktyZ9v0Tbnl4phn{=yNLNID>Rz6da5aCz(4qHlALJLWAI1VB=Lp&d+L~qox9(n@ zxbmm|*TWCmTEv4m_tS@ZK5L&8sKE?|xUu$DED$KbvA4YwF7ebhOT!o2(VvF@62G!M zO>Eg|ek1DCnHpfLNC|mnZPmlIvUH)h#jPi~V>=aQg?ewNlT$7~7^WGj#N|efhss8hozv`2Ab`#zOMX z=Kjh9kl6vF=-XJV-fc7gAHNm%&aQh(&~iS|wes`FHjU3${P9&L$^4K1#)yF4#rEw5 z2d04rZ%V|yj7d<}(D1+h9{MsR;_aHy?_NEfyEnJGV|8wUm>CMY6qHXa8R+XUTV&AA zpOglhQYr>r&UG)`TuWOZ%%hLJc3jub1(ouJ;_AGpC122NDwuI z`Ih{Sb+8<9|A@td=@jq7V_ACnnbE#Vsw7FhD8Ihbm{Qym?u*J+6!N1qGHq|R*0~_` z7Am~hYJsFl5##`U7`6F4@U0|f0w!S;qV#so>XJsFRwMvWCRuDP)0Ef zaleD#Lig@LwHp2vk7$hDN3zqlr|maKt^EB`$`B?mqwV}HDP`XqwkF1o+p~g9R;wL@ z13PZWjG9epGj)#PFaF@f>eZ{gXon8Ry4b0-rYtAR76oqbFI>ke#G!56+PjpVUX;@M z_qaF>U@Tz9%ZLAw0BWR96bEyb=KVe|b>hZc7TAX-5fb!sG~fdv7z$emka6MSr7><= z?_My(z>olA2+|=nK30sQ$C_T|1$qI|*4Ndphq6RQrR`>@oU89t(;sC6>{c--1gYrJ zF(60d=gnIBZlPbCq5XVt!Q=hem*VpnXm zWShcR*WF6T`d=iQ*rnkxz}Gm6!AjprwkF(+w0_mrq8yMDT9yZl7=K!zG)^79yHoBL z>8s?5OUX3SA*+tyc4R11G>XU`J%V#I%HK&l4<74!<`t#g?;Rbk^{(6p(2K5vEO%*L zk@X+J(yi}JJFR}N8XgjVN8+zKDR0)MK^i|-x^|}<@MkOEvrX>ilMkaQxt_7#FXw02 zeTI*htd836-on=oWGt?}0CD~N1 zc6jjXQus>rX6z7M%!H|F&Rx~rZl2g5r@=Un_c=3wgEayK`(4B_n2 z!3Y5O7UODCpczFSBZE`lI}f6epj$K#;AA8toV42J&h*H9*G%Ct@cr^J_k}TtxWOP( z$igUNDqCe9{0P7VtS^#QDSHk(_Qx}B*lFz>e_0wTYEZrMg0Jvi!08vh`oX^M+3M_M z#66$ur(*L$XiM&MtJJFdmhE)Q0(mzq()3{Al8a>`Rfco3gE6~P-+tJIrc_Ps8_KZ- zlq>V0T}d6rg~p`5G+VsZJ4g6x#6$66LZQ}YW*Gf@ojV(q$p- zDCDTQGQIi})4J)=J{SI%uu$QRY%J>C4;pMC>yxAex}CcM1f)P5y`fmD*63{pX@wvSqSyeZ7;(s%h@ zlvu7k!eXqeqGobpHp1HUet23hu?I{%cV|fg@`oZtFZg~-kQjygR9lL4b9>?u% zdyZdoVoO2Sux+*W;#j02v9Sh^!a^ET+As3b)9pGR4tKeFMQ_T4Yof~r9=?(dggM5s z>OwYCyNY4+YhZsd2AV*a`7Q&^lBk)}rw>70J4BSy#J~}R$6qG^?t51cGhMJLwws8P zfM?gzWmvCv44^gTMQ&8u2XqxF-?bS03}k&275OS;Mvw?6tYTw`k&5^DEvaZ3g)zuJ zTM~E;<&20d<!6BbajhRdm zWLes_*TfBK#{f99Ep><#?YnkeONC%CW?9Xg+|A=KEZ$7&a?Hg=kw!Z+3qcSDR!l$h})(anQE&FBb}HIID(`0SrZg91l2W z>Y%hc=iE@gilTRxW3%AE3x%T`z6|`(6BeL-imUa~xOY}ZN35M2Tj)TDJ=@U4^bR1y zTI!&6oE&#>uUZk?P`@=NnvB7VqVr)!!}CM4zr{acFCl9!#x9H4MjF#vT|c~V@6dBb zUYROvJ96p}$41cf|Md(#!$}0=i8ALTrOnNJCu|c~nn#2*ij&9aao%&K>rO}9Z+Z?( zPiz(1{9GvBR3jKWr$3i22><&M3v73<&cK{4^mSYUZ&0wKE8_p2GgpGAh+zK292AW~ z`-V=%GI0)twnSwJ55k@xn=qulRa*-}FC)l=Z5_IBLyOz_A2_$A&nTX!CfUvnwH7i! z4%&|=7(Zys>kXcim@>Nq6D<(+xmZ36BOzui=aX=ZIxubrVyRm%-ACo{ws3NistC*h zd}SnxZ2{mjdtp5YCOr@00UPf;fbauL=UY7-ie&g3))d~z;Y(p;rOWIn7*qt8eF2Ez9`VyT~#+e*A`Cyy<6LnP}tGk)=*bZSa5`S3@n{RctI@N zkuw1+MmX&umq-c4Zc7p^8G-j8lUySZjzJ<5SfKcaGk8u2aKI2%{hs~I$s%^tj@9e1 z>@X6>E+ns2Cc2_3pfiiP)m%UoCe@A3i6%R_-N+x%s4CT-4k;2mKZpZKoX~MFhKgn~07Y71AZG7(^g5IUC%D#t&S4 zDPj6Bdcj*xSi;he0tY$qnm+9@a2|^{571?ax6(kf=n;9EaLCsLXC`>@3T@L#ZT&bFTQdXx(}wt+{g?UIiQ`{3w~% zYPIYM{FmqIUL0}50e8Z+k`fYza3MNS&VP-|L&DYmi!YXml8D@8RU4vmpzqdwy7h0D zr(yo}3_A~Akwf-dsHb;0xo1M$f`K(eM`?R#P&^Lc^R8{*CZZveI*5qJ8PinBp8az9 zUM#Fmke&@SI5Kc3eUf1W)^p%x_Jz!?(=VV=`|AW`qJc1uhRW68x^a&5aTR;Rev|$% zek*jVr4U4;@{gG8r9ZJ2$MWneTf&s1Xmbw{Yaoc%!-ZGT71baB$i*PeWRECDPwYij z_w$}T!w_;WjrDy6H!5R1GD^=04&a&AYl@p&XP|O6COoJ~k3`Cz3>;p@SHmQr=Gn8& zTiijpcr-Fw4o2jF#Nmn15lz1q%Ql$67yuxvFA^3>noyQzm$0+-xtC@UQ{&^}vZGT9 z$v_VRmPKsH?xU}wO+u*@20y3kI&MX6EiNj;2_>EVy!uOeQhpEzN@?yH@v(b{iX9GL zDp{j+dEKi}x)x*JOIm7oV%zW7`a_w!SXv)TRU9A1R!cG zaB=yyhV3~M;T~7zZoXR#0WgciKs+vmCDg2EB@15E1~Oqnh^LZdk&fA6bYT$xp22@> za2_Cvd6I6*YRRiG{vS?K3KlL>+-!_N$`uAhNygx6$XxL7O~^=o=Gzw zpnU9>MA(UI$o*GB=LbsH;kt%{X`CaJss33=H*1kqy<;XqGR)wW!r_PcYQDtvJ?AEp zI5G#5Y&O0d3z`)xGGAj^Dhetxoofw` z797bjSxQ)oKYC@5(%I9;$5Ln-LRK(2_Ihpcc18hhC}kB{svRT2WCM4lbKRA}Ldxwr zh(f_saKsD926KBhVM3LXduFl1Kkwm60r>t+Ss<@;M&jCxdX_C6ne~C~;R&+N`~{uI>J%GC zKku&#>I2lTww7cK96)vhXY<7gv2|}uc$NtZHokZeieP2mBgfJ~5Nx*MZ0U63t*nup zN+Kj2j!V}!TXT*JQBGDk3?ve~!>}g`!#|i=ZTy=)ZrvBvvKI$9e|R;GgDtPzPND<2 zp~x<-8pCDY^7O+v(FR`s9#A$>HOW_9L#Q+4or5G-|K^*7q*7;#O%#Fm(WG{_$%TZa zPOlvs522t}*)vf^&QEUng}W~`Np|y1pVNUL*q22l^-x|px#N-4R<_+z5))HtQMJr1 zAkQ@>zIMbd8)IP6&L4(zB}cL-(FtWnr!0&&5nF_&Jr1hQqmMNlMp({H!dq&Q9+N#bzld5ktR>NHok$Y>j znaCab@zFlVS3zwR#CdciBuQ-;D<(E!91M%?22YF%9d!AUT zYNZKA3grmlrH*SjXCJ7Qf&CFGLF)IT=?6Y$mBvw)>sjZQ_w4 zbT9cWu$azk8{VyjCrc?Hqlh^qlFDCY^%@`%7pB5=(T80liyJ>kvJU&rCKVhCP!9}Y zZN8pRP8hDjcqWiukr*w~C_%=Wt>rjKsIOSmyuPxJO!qeSAQT?+Np_X1`{<-xt0n16 zhk>ZI2f+SAThin8lPD7GNGAeuMt3Bk4kvq-DY~*lA!c(o1N3Fxk>JW4U*VKdZpc3} z8SA$uHDNO&k`&rAhFv5nCo_p9jB8CNnbjYi*Sw|X{rirgTc~a zr%!*0@fKJ|;t_ADEc%G&Ad>~;D&or}W59%G!aYR2s0S!G%{6t3j3u0q#AmpC(zGfM zjXxVclPd#x8A18{t-Gi{;^N}ga<)pY&pZr?Q(2m2cx8*0iTEr#NU{OYvl1Fqi8YZd zzD#j%B`mMw2l&Oq*RDA)ojosB()zW)o5J#tR2@$AHUzj4aNMueI|^(`d-HPKJ7$JF z-A9tSGJ64``WPg68MAjFI#hWRi)|`B6f$7e~^A zvOb#?J+JB=E%d$!dc07l>8>yq}FTctFGq25M6p#j0B>n7EVNR zlv)x#dc|BMv>gMBI?8dNQoqw<==?T%^LZI6JXG>sejoycokp(Sx+t6TW7*D&PkdcW z=(6Okt!69Cgb$d^w^a7n@FL`gjQkS~2F!jOBDT7cCDM622m9z8XI}v+$S_IR`P>3J z?-#dD;CzqRQEqd-72T7&-%|RBr>rEcA}F-1tl5z+)56klcTgFvWd&O@qQHCgz1XCy z5g$^(tWAgf0;UG8Ip`F#Hs(xBMg6rm&DBS+!ShmN`aU8N6kJ#r~|)>hHF0ta#)QGEY}Fx3Hqa zOg>SZyz#ioMxoveDEdAt^yT@G#(h^?&Fu^mZ=6XM}ok^<{vICA;snR&tZH1@Z)OJ_)|WO0Rt>mxv|D|dZky&;lXMhDUlH_-*rDM>G?ftr zwQ)6xrL-0EWqw>SWT#gcJx7ldqVE8#dq{O7nQhEU1Rf1(IXbN- zON1v)s;`RRS!g!hXWLY-nGKGLFzdS`H#&sZuqZckkTk z&oUKap$Ml$Qp{RBqDB(ESZvOyb;J{a(_FOY_>kJy;*KwqRLKRH>ZdJq*Nx7#UPLv! z;SzF)4%aoS7n=iltq$Or7DHNY%oMma|<-g7?taERzb8z0Q;0Pj?rJ zwQF1-xD+Hy>#ex=lWLzS6^1*0gf}DY9U|Sx_1t_2_M;2S%ge>_R7`$3FbKAp!B$An zL{uOZ11wTa*bvf36C+**g2>Dcan4Rh>Cdz^8T4#l+EBL9IgR5zM2LL!6vV5f;I3~7 zNVnOQ?_M3>)~Q1W)p#r#u;L&|e@7kknjLOzRw0hM;0=nKrGP_LZ04 zhk|bO#hobFiY#H5tE=lK4!f=xqSz;)=r6lV4A`Z%oVZ{=l1Ms&N4@Sv&gHvSPIT$y zvko3PvZ~9jrA~Y#|bwq!7e!Wk|pm1HRa&fj<55w%-nc8X4Xgia;#!zy6?IA>@6Y>q4&^` zxOVR%&=iTG*lVyO?~knEXnnc*@6n%}{9a^I;(j5jw#!O;FClbcqVfEA)})3xa~w1; zFAkD|n<+Ru`(#CZu?KvKWcMtFE1ee^o37yixS%eZqs1k-TJA^)dh3gu3CqL2;!)6r z3l~Zsne(p1u7o0?__&?0v}urTy}7?@81v^TtOq3+q*6SnnZ?F9&Jo`RSO8@h>fgIa z&XYh;f~V`=(svdYZFoHLoV;z)!;bINgJ`+Ta4)kh1?Gr~jFi!OJA1yGpZ?xiRQG4k zom)qhz4M5~5n#rP8IX3wZfs`>6`vo+w#8-u3uL4Zt84hrM5WSfqqulGL-V z%o!XWGw&WesY^hA;w~#yp%5xEGKq_NYoAS*XetLZtM9z{0U)MgxKOMh3zUC&7k>-d zbVQ9hsi?xaAx5THk^mLck?_R6TO2$kG%@bpSb0}=zZlOF3RMFFFReM1n`Lxi%+HNbmqLfut=q4h~r)fFcu?xmS*lcYGQgO;pqtodfo`Kr!JH8$N6f zS{OQs{hvC2_H1XF3XKJ++>>L8|M}+y1?K=xOekB$VJK)Y5sQZ)E*TUJgPu~q14h$D_0!>@j)Nw#ASp;W|8KmGL6kQ3YAukEX)6=+xoR_sP;-;IiE zDzCx~WWJlY#tmu<2pCPB{5%$Z(Q;ghx+Bw^=kZ9Mvv5$jgX6`f7HWnO zuevoV()8J@^5^J}q!0XY`M3N(Ku*0wnRy=EpT zraYGb6K{?9EZ0Q@qKq*xxFM}>X3sPY5rGm$tn7H9QH`X4>QgG)8fPm5 z_N$0t#GXVZ3(ESUdtrKdn=n-A+LD^fK|}*aO&=+nFn@A$bID=W2Hs6hCW6o(7(Cds zVdgW=0OmG&a#UWqa>eSx8#c_aR+Gu(BGNJ?NL{%yp1>w^=yi;?G8zFm1E1zfzMmZz~`vO>aG_(2Ufx2A0o^&6k7o+Lz_}*Nw9W7p^b% zJ)~7p=vz1D-Lu+vtDR@<*{a*{;_mH=yt}%!o9E`%ZaJenz-j8suCG>apS8zP*Wg*< zk9U81x?Y=``H3;HmllOR)eUhdOC@6Emy{%~{zl_!jnmW)!9Xn*ALj=I5F(?Gh|EU3 z;+b)vn(G8EI)@W6R5}SfUM>y85=pyKx)5@Pqs(58 zSm{w0C_JH{1aBnnSm|T}SU)3YGzl#g&$5J+l!%#R%cIn~y6=T=np0xV+^Na#uSkot zgDU8nP9H`}wV|6A$8_)8T{zdxf&fQ*-+lm2Y`K9bwoB~{rI~$rV@`zOQbZ_|1rrXe z093mjJPL2^11n_k#i$5K)sx-ZiS=&I#gzt=-9work@EoM@6zeR0K``r=frN?%6Fr> z$cdNqfuC;IZmDq&Vt@XcIeAH=2qvQ@yKll6;X%ek+U~p5o&nrna^p<6dte3a>+B3% zR=c_H#qs+=JiYhU`n$Zmyv)iV&#s(4?2Gp8Etd;H;HobRG~yL5dnpH2h%PE3^uq@y zlQLR#8=jF}^0^pDUCi<2mwVryK700MH!L9I4y>S4o|EzZ-8-Ha4>dbpdgPPc4`M3U zVI^l=Wb4&;;p2bUXW*VvA34*#s=EGA z#900J{YrmPEBsU;@9A5+Vt0I5)c6y=cGKNG4sZS~ z_|5Mrt@KkL+_f(bKjV2zyWaj=caP0a+|9~v2Nk>f>1#Qs{$ioM-(u|M*RP#}cA1rh z`0ErHyTN}aLDRJ)<2_e1Nb%VWB=DL&L-byGcZMWE$at8mjR z0s8KTRX)cezmucXA?#D{KUeSBXvWDzx{pJ@^7Y2eVELYZMr|3oE>Ap z!i9CCT)1Jwi;>zDe_Ik_>SG>DhwvrgaPgR}#)W#+8!-W3 zGZ`;fu;5@RYET3LcSkwn&cKkXv1L`SwR)#IzWRQ}^iDbsi%bXmmaJU(`3lo$^+f}1 zHZ@qZ%`)~H&~>Ut`i#Nl4O=ba&pLHo5I8W{Dq_i2v+!N>3~@+Sch`4jXK~-FZ;?iHMps^+@$IkH@YzGhMl9b3`tlWLM z`0cIba%Mn1FWQf17j3gM2R@CzU3;YYuwOh^Y}#}%F5{VV&ef{Cnn%@bE9U&>oHzS& z-c?`E`r7UF#fxvpC7146=k|R=Y|UWj?<%zGYU*sS-GA8lkGk6VW)4AdWo;|!daXO# zP@iJvP*&kQYj8(LUFYN9X`kO`em3Hw_t?bZ{FRkeuk9FoTyCWdez)Z+4u{Md*pZfG zV3@S}ci(YWov4i{>LUi#R8?IH)ZT+AprAPak31btMa~0YN2oRq1oM>gx@Lw~Y&QGV zlIKHNJSwrTM)zRqn_F%Dy}i5Zzv*=(HDAv;e{yxr_J*a~c5)V!IXBT+Tw8ml_ye>Z)x>55nCPwgV3lKRx>&RMS!otdE=+{J8T(28Df zH~M92UGg6v_-RSLvHAUrboy=G9%~)ye>-gIfq_qw?S4CZ^w#|jp~_{4cP{QYue8|g z_a$r7J5}eO?6A(&DLHGN$&Uf^UF-M0t*DyzXi9pte^J|arT#&4zX=NT3y6(%4#+H> zof$nnpyb)SHMwEy=GVPCRN}a9kbA&_zy%jF&&Xf2Z*W|9_Oxzg$oV&pk7`rjj?pNo z8~C~IfViu^&Tk6+B5T4fJdBC9orA#^G+CqPBbA)pV!A=Otk$ve(YUu;f3KKa($UJw zD&pnVGvQNq4mLK<>a#WG#KY6ErDn5(TwM(g^0)U({lgay?6+MvD39pm^HtTh~o} zsH$P?uvz;a^<+ zA-AuVY*@IT%N+EIf7-Wia8;yPtU=SPklY`w=ul458R*aGW-A74<-Dbz(y@E@Uoaij zPemV`&WR>t*_1I3S+p0zS0;6m)c#3b(|-9}$^4S=1?KPfYmVMJBRC@ zT{qKZ6xq74Gen$D*Pc3kU*BByFmb9Bhn)g=O20@UMDI-6VYqPE5@3Yb==y*~utrZ)J1CJ~Fst7t!e24t zTyCz48n1A9z3bnZvHyQk2KYw{ek(!)|=+|iB>o7$s7KuQ2Ywln8=J+ciAec;y!rafI8VWN_*81>25w5La4q5(_A&{agd_Fk%An6A0{yk`Txpy4sa z*%>g})&Q0AIEF>Z_+X4av~;FLL;Vp0sSN*l(|C0E@skoeHSjtEcM)tuPlAM|?+)$p zB@8AdbQLIu~K{6a(LR4r_J;eX&2@X_E)a3Vpu)HIO&3?AGt z&f1yIxnSdB-oU>U2Crpq&c7$i5IJ?Y_YW};=q-P`({nAQR{Zz ztZ8xm-M(+j%U^U-C{}uhT|3`I{g}pQ>H~Fw3E&eC`h0Ba(qzj^& zfusP)8AJ(a7QP)OM*wR;=15CBwAVyauzqX9%X)Eoss@PW4sfouK-e?B{WhJ3WeB_z zlx_<^$F(nRr+)}U??JUu4b)oC{&Rqa40YYgeXp%1i)kozekZ zWGF9WfKH39(e9LqQB9k-GUN~!BR48Xi^`(Wimj^7%gOHJaK^B)vDq+>via0;su$*V z%%>A@(M?Kc&QFn{*u-E7C4$01D|%sT$MiKLsEv2F^ww)OMRg;Ip$v1R7Ro-ybni(c zF;_SG`s*FIXS|4Kyo$%MV~d{Ke~J|w^M8tDW;nT%m|=ji(;Kq(5d?%kF5NCOv=jMB zPQio;6AV_yphRNGqkBE0yTvU4l7I_X>^b(&I>wQnz1a5Tu&-24A^#{OReBO3i}AwL zHa0e1xpHN;8}=Wf#!9f0DGJhUkhQGlPd_s;IXT0k;k|Jk0}ef1KOd0Xq~C8F1>-UN z4FEvUN11Ws#=gf}MvI`5U_;Sex@Hy5~MKu;#nZ> zvt5U;QrFQjRza7oyN@=6^cJ!H2K)qZPxI%Li%3hl#Rbu^e|Upt{KxmGhlz_V0vR{d zqgb-Y#8+q&8+42@s|y=<5#!f27>tPZ5r^hHTK=%vW=k27;@CnjYQ@meI?n^BR6Bn0 z#c9}3a%8s2bAE84W1GAIio$WjqGG~KXhUsEsXx*3~mKl84e&{6NU zb#VvfbV)w%xQcCJ@ZSZU#4n=38AJBDPEYijD-L8D)iQ!>zX!g zip$ALog)Y@I6?!T@MHLRXVQ-Uwqip)A;#CE}A8u;}*mW zhX?DgH=fLv`32J*a5xvo5yUk`_<$__b;%Auz)SSF^i%(P`RXxk)e|!OnFX^A37~8a zVLDY-&Xd6xe3FnE+&zvQ>EGG2p+_X+5Tb$b?LQ1I8`CeR6Ax$msu#bHgJVpV>OH9KdAju_~zAWo`|0Dw#_lgB7H$ zLE1AWrr&jq#@ua&5{Nz=M|>gkpm`EL_X(%h`j(7V%?|pcO=GNFvWJ&cDx(|FZ=8mR zG8G_xgBU( z#Bt%o&{3TA;)@}^ss=VIS?4DoN1u|Cx~hYBU73$i~Q~W|e;Q|o zkJyBVT6TIFl z4oCHl1WrlC=yY`G+}U_Tk1X3W!y3CV>KzvZh9~GYJ$%enXbSu}dAjkphD-q(mYF&b zSY#-#VD_TvUwygR=nfyRx3*BX!C!d8qCfyL;c)KHGvuhAiB`+TeyhvP#;%XcTpjc? z;=KTkE8J}YzJaphK^6Q^VU7+RcYV`nmDv4cy7U{_6dO;y0>W2kFSO|KNy^uaub@Q4 zmN*-A__6__PC7$02iX2?^rz=ll4kXeVti9}m;SH#nMsbz+t*K}H5W)7JC$18c7dzQ z%|#sF-pX(ECGyfvkpV@Lpy6LA1PSuB?V+W2ymV%BfJbzztg1@q4482x?=QLPo7OeX zXKqXlvVJ@9lhJtxZ!3M2O%x~hZhljfe)`AVyFD+YAfTno-QS_9M{9y-4S{9vACaIaq1L6^98IYSF^iRRWv@rlT8M8ns!OtGmORp)!W;Du6Jyn)ub9yffohB zu^_`(%idmS9<^EW%8*OvzCi}=Vyqq1^vUO{0B{C=PeK1=DCvVz^F{>uyRgM_K56cRU`_sSAf#8Qif0JjrO?G_(g@L< z=+*t4>BM0hL`loJjwRT48PU8mIT&Qh5@J$#R=iJ!iY0r2xyEPn6Z52-uWIQmn9Fz`gZ5kxL=$&49UUDBXmW<*$tM%G#zwJNDTzn5nk7)W-x;H8Nr*Zc{{zIfyev03#WXaK>?b4^7?rHQ%RbNebpB zJr7vB;^dje!)ET#tU*jZ;WszQh8+ET`el{`!CfFG*a*d}Q+JU&7pbfUM@i`|q-pMs z!{p*jNUaw$u#A?m$D{tJ>>@0xz(gtP=CIw));5tm;lVLHVkv$G=}Q!r>GfnJ)6u8( zOHt@ed3@lWh_6N9D_wHp^M+>#bTUbDOio*N*)`|67$2L=M297Ob}xif(Zb*6h-Kc; zJn;1|3z(TYE< zU()&GNd8Q8KfL@w77Dzts@c~%oxEZ_y{MjfMI%Y=tk1*#{3rrJ$zWR=uYC z7ttv1p(0px9P9R+b)9d!k*|I{`|Y#3J(QLrv5JwdmDGK(sUwDV?%Wx!i9W51DOL^` z$TC7ClO-zJ6o2YdVda=Ry_ymeX6(F?Efz7YJmu)nXYm#t40nuHv&F=30mTq3funTj zW&6TtE%~ACM6osf3uf7TZLc!C3YH(Y%So zr=iBV;XKvbxYGjGoSeiSJ4lUUsi|q3_Zd1^iKry-0=E#Q&x;Ja{1r*cZu95wUX)C6(xeuQ>5iHaywy}Lu$oN^UE)?;?%}h;$9Sd)enM}JR zyTxd6->G{=1}FqUxd`fED&TNsvJ*j0Xpd;>)QX`Ai1C!aI8p&tXOaUVyHu0Iy5GY* zUZJ|aeKik#*HYXW4}4;{me;Ml=;H5I^)%wewLyAUB6MswNFL5%a?gKR(Te!WKuK`^#zkUm!$$J^F_%402#hk{ z`VtW|Cp_1ELyhB8va(KXS||a}F2@`^zO>6&;1g7U!b}{aT3?DbBXInb6chhHU~C4O z9NJ!2Z7iI1XgSex=*9OwwUwP?e<}xh7HtJ14s<9FcGE7&^3fdj^?(V|(cub4!ukXJ5YHl^;Q1(fJ|1#zXE{RxW4iV4 zaBEqpb$itY`o1d~Gn>tu`{|SB8}9EpAsq>!(y208Dw0DnO}pQ^bZ;BP@32wAkvX~7 z)y*xuZVad*(eyq7)&)iVlk}#nUR=}$8q@kTxs=36O84oaZ; z=)bpK#&p2L*LS1NBg~hkMaYW2zCtX$WOJgNEY@~@=L#1QMnuVr2*vKr(~BlTj1yHc z{I9g~u@ze94>#tahM^d2uHiI)j}vGRv^g1qF2>Z8+fMK!16+Oi)6sif``Qm{e21lk zchQp|L%1NsdI)CXD6BdX6y2pe1uSz9uUK)kk?a;{7wKuthvumIsLA_m&qJgmoXNyh zNQQ7QY!P8;f<{X@1`(m)r&00V0I5I-%dATo8~*VCmh(=| z#(it#nYuKc@b>W!k|nXAGpJYGkQoAeq*#4!J$m<#YH#C2jb!lTVLQUr7=3x80^`b!?yPeYO_l zr>&c)NMR=@@%ud|Iz@+4_{o(S}2MtJdp+%q>3G!$y-6TgbT`aa69DCz{-hMs>CPs zTP%i!?uo8WnvtN#LbFCrd!OXJ@z=+satd#NNj95FS1(&{?8~0Pw<8nW)CfW&4Vfac z8X1BR68#9&jy??!uaAkN7y+}UT$k*9s8GtXV%jv zPfqayWvx2DOR@lREPioBao#$iIG@JDJtR$4@O}cQ5}>_aHkn9GQ2J;U-7GaxPsRzt zDFQ4N!pWeKwW0suolq>6mdl#C@Ipe6Y(BB}#`$H1RDx|MR2@K@XVJgmpkj#Y+0WtOkNBizS%lx=HxB4=x!atVqK7a@g;WryVXAnn2Aia9GkIeF1KVWd*! zBS9fjWcyNP8z7S$d|y>n>d&S3|02FY1Z~V3bN9o*Gb-{!MP56+#N~3NyCEVA(Mw`_ zX@me#W`n|db@LXlOgFkq+{Na;&=b~e8!Ndje;TiPrx*`?(TMnk__eRA051h;gV z^~X6?OzX>tuJ>UtuRuED7Ho=ntc1p@Nb#v$5EzE>n(>IMWDc(?UN6f{xOq|Q;6D=H zET_SdU2jZ%)oSv|VPpT?*Kr&~@JF_32+sE+-kGFRpry2=IcrBhuX>G7!l{H!D03*8 zX$7DEUB^g{Q^Pl1clCCSo4W=W#Eb^{tfJ4X+i)_G_T^~j9&TECt)ZE~B`lvRgg#09 zX*Wn#`;f1RpiGx1`r9&oJ0ZEu`QVw8C-p=PDa-KpHlN(GnO;^^ZtnzP^3LIh>8VCjk_htdN-p_2}dx5bb zA{n^T|MbIoCGq2jWRs;-bGFOXi;+V;0aoxbnfXLD`^V1S$0><)dL)?#U833U>2y7C z($WKjb@!vq`Ji2pT$8nnBtAY4kLEywlQLh91rEjeT!mPAm0*dp>0>2f;7B6DWS&<)ZAg&;D#2ndJrGb~Wf2gNMI z7<)@3!!n>oHJbPB)6bO{JPO^BMfOKsLA5JiLTVDRy1HW=v(-+Xy#7mLF8mvMiSuBG z0_})Er2e(%H9@E5;U)?vs9ZuE6^%(yW}gP}bv*ghi-81XcR5Svkz@!nk;o%+-DbUL zWj%0SudV=pIyvFpQu8fDu%1&Oy8|BO@ob5xF2laUL692xE9*0mF_*clr3MtZ2`)icJ;+j5?j$Wp#5%@K_W!TuJ1^tKQr9*N#0k zY}13jH|0l-HsmI?P`{JDK6;S!G7L`1Xcf@WrfIXadyQCgplpnjoX%3suykj*E34(S zQfTg@TW)Ii4nLM2=`9|cp4(NAO6mQ5E9{qcMP= zoOfHtHaYpBv1f7kIy8t8jE0t}M8r{JdJQP710l;=*j)wYmo#)9nNs(34a3kz@u^{p zZy8xYh>k>}HBcXbCqg{_NZ^H!G$nW*TT(`ei(4|PgtIIX&+nY&wa8#cdTX=($bw~3 zao)@IpCqDvn;Ub%_p+6&q!da*OCl zw4I9v9w}YiOQi_om><&#*DxJlhIugRCELyCuSnTF(%?P0Qt|INi_!$%%$a>Fb28n@9v7CkY|xeBO2ReJ4|B~tLsH%I6-229gR6+Tum ze?4gzC3OIH2Qjbsk7muAcM6bk#8N~Fc_BX7^iUbg4S-JyDr03K<56VNt4v0h_*$Iw ziDqMu>Myj432(5g(WI~d=^JE}N1-ESy440orVE_1D#hFXz<~qn%fl$Q(P(^cb+vi{ z5{)FKQfc*$C1L+e`!n@vs$Q60zagvx8B5I1%JH)5&QZ~Q zRtWjD@UCw|du5Z3lcQQHqoSe^_8kL!wKFRfbeXPsgaCQ{?PREup1Y7J#OsGo5*thS zJTLm6yr^z`-qV4$Ai2)f@@k&W%9!SY;JCaizglCipGq>iT*s=*F50UA{oeOGJ+_7r zmxt<59njsMRVS`u0DC4IEVX_^}*7nn8&DQeLg#yEmRdI#| z@N(bt-=Y%g95oAo5sh!f<5`@rE_=j)TpF6~HEoN6AxL4yvC&J~{ZecbJw#wTCHN4n z9dRu!kijrih-q8p>NVX#VhD>el=I{)MPb0bQ!(o7t5g|8^TOs2R$bI>$!@IckVqP? zc~Nt>q(Gp%{F3tgvrA#=alI^dm=t-l1|4Ls9e+p#q{$7d>LWs_5ywuGy5?fzQ(TI1jP`IGKHff^2&s01fEynVgl!WE{KW5XJCs9r>`53+>wE;>m4yakwMAM!7RXvh-f2VMRcB$L* znGk3&gDLe3R@`bNB&ge|!n4DsO>-b2u~711TNF0Zu+;6)?=-$xW#id*bT!o719}XnL8ZpN6;JTCgDRIK#Rb@U3!@^ z&5LvwOTavz+g-FMWp{LIWe{$<%?|nW`YjKp# zSrVnQ(6ON~P=LN$V*8da+rAOestN$E7{}&oV zS^i%g4!h?=4Mjj)3+=LBfUeWqUq#qNOqb#5B6}1|hPC9~{T&*mo6iegG!LGJ6-)++ z_!n8y1_Yg#LPSj(9`AA9kjMiFcs!%Oe2Kz6G5cV7sf@(Vk{((ZDG%3-DOz>WVvF&KJ!4y`> z=IreaD_2TBA+HX5;+B6w^ zWwn95NTbevuIk^pB>I`|EQcv0PeY=XU()`+p^J+FE>JU@I8xd^5$}cIPeGpgx%QQl zKy5|74Ij=6!5^M#Zr8F#to0a#PFqxz3WUJH`^8Bg1ofM!=yNfg2E$sNd5|v$osAFq$*~7Atx}_&Razd>EA*Ka6Q7e${O{lwc$gur`(wt)ajuR@xnY%*gMe8G#`o?O$I_k6LC_Jzb} zXkXiqPRNNXcsx0ApVE1A=cZqCc9uMlz9?Ya93VlFN_^_j#$#jS2mFOfd(e(5D-EyN zV2(7ghT>%$0pXX?cPr|^n5r4Xp@C2w5cD1`a4i~<6g# zqKg+(Bw32_G!e+O1|ZQtvPPF$HjR$*d?rxME$wlk)xYG@ex8B9?VlU1l0MG3WZ<=bss;N?%qj9JRUvvLPdH*%WR(m@2=wbH4QRa37bW<^F!aYfC7u2L<8`V;9 znXv>A5=%H^NTEO&TFFO;P9_HuR}VFzWr(Ir`BNF_ZwAGYIE(VCg(Tn(#c8Bq25Uo_ zs&D+5A>PBFS7z=|u+JwI6SG*pGAB8M&G7u`>uc?o=D~On6bCW%uQ{`D&;al%Ovv0} z`2B>2|OO6bK9r zAH$;QcF6g0&vZ3CkI+?Yzr=DvT-Y(Wp_4Gj(a|xqR)59}cbq~k$w3BYWT^tph4IjL zV%yQ$5*-8ULG)E}#&hGM&oFy2_RrCI$t}5Qmp#8HXSeq7_~(`Xh2>4WFX&Tb?P&Vx zo*==65tCR>95A3TUX}JMj2xkW2~Ahj*zEG0qZ#XDEHgA|gG+9->BXi3(f_J&2DR~3 zGo!|&4$}XZJ^Kv28v5yzEEwUW1=&hX)r6I9LA!RRC|XOyv&_>FfB(Xe&pUq*ZuL1~ zmH#)p;D;JsOR5Ac8IDSX6gDyYAZmT@NPCPbg3A{9n= zPtT?}pxW2z_0KZ87BE+aMWe{DH9XJS(aXN!uvS%DnEw~YnGRMA!tj;u1E>(B(DT4? zB+5y@`N*N2632&(`S`~DM9(4yHzEd9yG`kiNrRwrw2bCohy_*^H3jS*%jLpO!+#Th zOS9A4&NbROV8}9GIzWXxO?Uq@-9ETxYrt@1kOw%n^z;eBf}8*t{rVUAi4PXUkgsl7 z4Wz?~Y0DscT~4ILq@=K9T&4}&0ix=^snIE)o1%aIMQ4}II7u|h03Gsc*V5iX8DjYi z;yWglmjdn59o8y#9)^QXOA=EXbx>TZ@ucnW6Etjm?%cW4rxd?OSLN)+qSa!}6^<00 zdm|OOM-N=~R^o_u1&`ZMrBmZcv0A6#LPe^gB@r%X4hqT_^;0Uq3Z;SH;fpW&boR8d zYcW1CO6)Z_(V;2H42ZCtPneZ=cl~HrLIJ2IAvC|>&9#tf=kbZHuSXG}-ar_@*#eJ~ z7x9?r5KtFB9}BdcHD9~qwz0G59c=t{{o{D>yy@;R&B|tVZL07X9Nzc zc{Vp(7&XSWl%}8)2JAGY%L#o zhFp{gEyl)@Hj2wKtxcY3w$)1pbgja<{$J}yC+T=868lim1N7OLbwa)3WPaw#JrK$Mj^|2$NDtz$$${#P)!k!F8D|G;xrn18gPhm))zc}$#b}9HRiD>i1ak@&tUe&g*i8G`*0U3 zTb%2@(o%=yELfgcNy~!q=#3o?H+u4lI62VqI18ibVK!)gVi&pf>%K#zg=i6LihH&p zo6bk|Evlp~S8;Pl6@q~EfW>fF=3w6?ckl7_k5(u5j@kO=7f}^@Ng*ZU<{=OZd=GlA zc)4}*u2!PM5CWi>i_$D~SJTzir7(%R&2C6+*|TeNkD;{SO321ey#l1>FueP!^(Trw zG>7(dZ^*h7MT zg~1L%$v8Np43OXG8`9e$VoM}+1?B>Wz|ed4ay#$Z zdnY+)f07C##3alN5R+6BQwF}0C$NC*N4J{u8a&&3EDOVvt%^`qsU?bDhB z`qK$$QlvT;www44N_PsamSFOYhR8+ucwG+KoL^NV%6?h{(j_3h5gXc=i4Bl;A;L}- zvtdp|{JPg&9*<2JJ%ZG}`^Wd;GeqUefQQgPnIIx|(K7x|#sIUY?MU2nUTZlw2oVo3 z$QDAudb;7FuPLjR4EIYIM`d>aRSiSQ6|R4cFksoZ(}VPx?SS?8EXJPM&m z)xoI~qDN21qTWcZHmcf!#W?M`lLCSP22wGWFf=i$WbF(5xnnUhf?D5SI+s!(QuwVm z*-reB@s{K4U)8_N8qw}83b7Az85Y`P61cGe)=$RXF~|s7qZ7^ZQJU= z90|$Zy|l|zpbs}f{+E2-s5f*az63WO_$GVO;7bQwtG3Dnn>I&?Uo@rF8F&wL{Ci5bI$t2iDZPedq~ZKHcn zRv!KgmLmm(7t^)nOo`@>;&BSz3rR1hx{@{44aR)LJ0_1j6W*fbqjlk5QUebY+C8`N z3>wG4bZ72Y^#Lq_T}w^tYsK=7x40q@j{E-mfF>|Aj_-*CRhU@iy;1jBV+ZCkdC4o<87M4|Vt08|gf5(m#2d4AAW zB^Dm^@~WF=#TzrYG?Y>oz*%GtSXr|hO!_7!#bc6ad{()w^mMD38*a& zh1f%#O~^MsQK9^G>0|(&hdsJB;I1eyfojVlYohCGKI&n;6HNTm`fj+_k&6LY4N1Y#LEf!>%=WDDevMZbO8D;+25 zOU@13rSlTuwXI`6r2G`1_t=xwcrThXyuGC>#Af}uvLrY=oj*K73SM-8-xEEyx$$iF ze+B_9P-V#yVlFU{#4^k5i&MmsO4tSZsS-h;dz1*jTpk2Dg$7QneANNhB;STSQP~I= zo)bzaLi8suD{pV34}u;$Q_!M~c@t%LnWMPwGN0n`ceO%2qg5%&;ce&~#*)Iw@QORb z?>_M9={$%|^TS`4{vhqXLjz`;S0pi;a%Fb}Y>A<=Qt4f1$g2ec0HB(LZX;!W$g7?J z1GvA12w9#3LbPr5@3XE!6j@w#WlLohRC!6}`9LAAY*%ipE?1fW`-`w$m|u8%UvO@y z7lc>oGoEyr0xca7Qt;6UuYPau2ucB~w5VHc(%T;ZG}dEbE&>E{<7#IF3lZy!q|vzz z>x#vZ)~AF&1dDAQ7M)pkp7!v$7>w~XRN?z#G((UpkxGtz^1QUvbRie7UDTDH8svR14=f>>ohgXWa?!VacTbWX<@8WAi^- mGpgXi{}vqeA8yYLz3hKBo7ZgA{>Sny`cr0o6Fh0j_x~5IKU^~a literal 0 HcmV?d00001 diff --git a/pydeeptools/deeptools/test/test_plotPCA.py b/pydeeptools/deeptools/test/test_plotPCA.py new file mode 100644 index 0000000000..0fb1a492ff --- /dev/null +++ b/pydeeptools/deeptools/test/test_plotPCA.py @@ -0,0 +1,32 @@ +import deeptools.plotPCA +import deeptools.utilities +import os.path +from os import unlink +from matplotlib.testing.compare import compare_images +import numpy as np +import numpy.testing as nt + +ROOT = os.path.dirname(os.path.abspath(__file__)) + "/test_data/" + +def test_plotPCA(): + """ + Test minimal command line args for plotPCA + """ + COR = ROOT + "multiBamSummary_result2b.npz" + outpng = '/tmp/test_plot.png' + outdata = '/tmp/test_plot_data.txt' + + args = "--corData {} --plotTitle Test-Plot --plotFile {} --outFileNameData {}".format(COR,outpng, outdata).split() + deeptools.plotPCA.main(args) + + res = compare_images(ROOT + 'plotPCA_result.png', outpng, 50) + assert res is None, res + unlink(outpng) + + resp = np.loadtxt(outdata, skiprows=2, delimiter='\t') + + expected = np.array([[1,-0.7071067811865476,-0.7071067811865475,4.0], + [2,-0.7071067811865475,0.7071067811865476,1.2325951644078315e-28]]) + + nt.assert_allclose(resp, expected, atol=1e-10) + unlink(outdata)