From c395fa7baa2fcae8fd1857459f33bce19c3cb936 Mon Sep 17 00:00:00 2001 From: Colin Date: Thu, 29 Aug 2024 16:47:06 +0800 Subject: [PATCH] Refine to dump heat image. --- tools/show.py | 43 ++++++++++++++++++++++++---------- unsuper/conv1_output.png | Bin 2885 -> 6527 bytes unsuper/conv1_weight.png | Bin 191 -> 648 bytes unsuper/conv1_weight_grad.png | Bin 187 -> 698 bytes unsuper/conv2_output.png | Bin 1020 -> 1601 bytes unsuper/conv2_weight.png | Bin 2080 -> 4869 bytes unsuper/conv2_weight_grad.png | Bin 1841 -> 4277 bytes unsuper/fc_output.png | Bin 84 -> 109 bytes unsuper/fc_weight.png | Bin 2464 -> 3525 bytes unsuper/fc_weight_grad.png | Bin 1163 -> 2078 bytes unsuper/input_image.png | Bin 320 -> 544 bytes unsuper/minist.py | 33 +++++++++++++++----------- 12 files changed, 49 insertions(+), 27 deletions(-) diff --git a/tools/show.py b/tools/show.py index 2548bf7..236ce3a 100644 --- a/tools/show.py +++ b/tools/show.py @@ -8,7 +8,7 @@ import numpy as np import os -def DumpTensorToImage(tensor, name, forceSquare=True, scale=1.0, AutoContrast=True, GridValue=0): +def DumpTensorToImage(tensor, name, forceSquare=True, scale=1.0, Contrast=None, GridValue=None): if len(tensor.shape) != 2 and len(tensor.shape) != 1 and len(tensor.shape) != 3: raise ("Error input dims") if ("." not in name) or (name.split(".")[-1] not in {"jpg", "png", "bmp"}): @@ -17,27 +17,36 @@ def DumpTensorToImage(tensor, name, forceSquare=True, scale=1.0, AutoContrast=Tr if len(tensor.shape) == 3: channel = tensor.shape[0] x = math.ceil((channel) ** 0.5) - tensor = F.pad(tensor, (0, 0, 0, 0, 0, x * x - channel), mode="constant", value=0) - calc = tensor.reshape((x * x, tensor.shape[1] * tensor.shape[2])) - if AutoContrast: + calc = tensor.reshape((channel, tensor.shape[1] * tensor.shape[2])) + if not Contrast: tensormax = calc.max(1)[0] tensormin = calc.min(1)[0] - calc = calc.transpose(1, 0) - calc = ((calc - tensormin) / (tensormax - tensormin)) * 255 - calc = calc.transpose(1, 0) + else: + tensormax = Contrast[1] + tensormin = Contrast[0] + calc = calc.transpose(1, 0) + calc = ((calc - tensormin) / (tensormax - tensormin)) * 255.0 + calc = calc.transpose(1, 0) + calc = calc.reshape((channel, tensor.shape[1], tensor.shape[2])) + if not GridValue: + GridValue = 128.0 + calc = F.pad(calc, (0, 0, 0, 0, 0, x * x - channel), mode="constant", value=GridValue) calc = calc.reshape((x, x, tensor.shape[1], tensor.shape[2])) calc = F.pad(calc, (0, 1, 0, 1, 0, 0), mode="constant", value=GridValue) tensor = calc.permute((0, 2, 1, 3)) tensor = tensor.reshape((x * tensor.shape[1], x * tensor.shape[3])) - DumpTensorToImage(tensor, name, forceSquare=False, scale=scale, AutoContrast=False) + DumpTensorToImage(tensor, name, forceSquare=False, scale=scale, Contrast=[0.0, 255.0], GridValue=GridValue) return tensor = tensor.float() - if AutoContrast: + if not Contrast: maxv = torch.max(tensor) minv = torch.min(tensor) - tensor = ((tensor - minv) / (maxv - minv)) * 255 - img = tensor.byte().cpu().numpy() + else: + maxv = Contrast[1] + minv = Contrast[0] + tensor = ((tensor - minv) / (maxv - minv)) * 255.0 + img = tensor.detach().cpu().numpy() srp = img.shape if len(srp) == 1: # 1D的数据自动折叠成2D图像 @@ -51,13 +60,21 @@ def DumpTensorToImage(tensor, name, forceSquare=True, scale=1.0, AutoContrast=Tr if scale != 1.0: img = cv2.resize(img, [int(srp[0] * scale), int(srp[1] * scale)]) srp = img.shape - cv2.imwrite(name, img) + + img = img * (-1) + img = img + 255 + img[img < 0] = 0 + img = np.nan_to_num(img, nan=0.0) + img[img > 255] = 255 + imgs = img.astype(np.uint8) + imgs = cv2.applyColorMap(imgs, cv2.COLORMAP_JET) + cv2.imwrite(name, imgs) def DumpTensorToLog(tensor, name="log"): shape = tensor.shape f = open(name, "w") - data = tensor.reshape([-1]).float().cpu().numpy().tolist() + data = tensor.reshape([-1]).float().cpu().detach().numpy().tolist() for d in data: f.writelines("%s" % d + os.linesep) f.close() diff --git a/unsuper/conv1_output.png b/unsuper/conv1_output.png index 338397c6fb92bb0c4c1ec8fd5ae1502748ef7c01..90c2999f6525ec639b8d26b50f85fe3adb562f81 100644 GIT binary patch literal 6527 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 SmIMD-0pT?9n2%_y;Qs;03-Ch# literal 2885 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 VE0Lr2LJsSHY=*W*)fu_O{RgyNVmAN) diff --git a/unsuper/conv1_weight.png b/unsuper/conv1_weight.png index 76c8669907db678b30d5e8a28940bf5addae7b71..120638b4c45162896ddee9c6df4754166360ce7a 100644 GIT binary patch literal 648 zcmV;30(bq1P)52# zA&c8!0D$55gNTTTiW3!OL{vmXRFn}>QBg)Y%7`eV;zSt{$5BQY$EY|;DJRMpBaCvK z2&3Xe85Loaql}7*iZCiFA|finsHiwm5fKsi_5-T!dBk7&c24_9amdiaEpXaWec|GY zrxgtce@nH_S|fGw+RQW53{`xPzifg#?yq?)afmTYB89xlHbH;ny3F1tP{@6p1+8z~ z?x=_x`Os#5#nYI6pRt3#r|jancnwx2QG{7#yP&0zhgeOP3b}ZYH#0gOZiIQHn4*>0 z*VtsJHi1rJ5gsXqSWT7&afGRnim&oZi$$MtgsG9*1Q)zmgelsLPL5LI5Mes_TdE6M z2TBgU7|0Q?CqB#X2C+u!;g0FAsn^)V7*o14IstZyrjv~6>m&*Kl4`#} zwL(6lbHPiQy-DQawVB5lU8X+Hl&(hV;f7e^k9-$nc(^`}i)Rz)B*27TfIXq7lEoN1 zDlT4t-C>rXi%;^0O)z9wVW*RvC>X>B@s#eI_7zVmS%#{RE94G-g1(|5F6Hw*cLh!x zY8vT|N`UR)>mn4vCcRoIDv9PxVMjr`YPW)UuFT7(I@PEuui$9;>1 zLA;{D8F49}$MhBQ3B4`VCd&=ATfXfnSJ|E@gjk#rKjp^)ry@rOzr{i&+fb{sjxoAS zUA#7P&WPXg{fv%5Y!GXtA=ZjUi9>?^$n}`MLChI3l7j}T9uu3uB-&BYNrnuE4EK~H i%nCcsh=CmOdjA0=0s|0sR~}>l0000kIs6KCFMnVUOqko@E pHZ&NTOgy-Hwskini-hC^1_n-3b>6~7*Vcnv=IQF^vd$@?2>>%nN=yI% diff --git a/unsuper/conv1_weight_grad.png b/unsuper/conv1_weight_grad.png index ab560181e01bd95e0ef0e9608cb129fcb02fbfb3..3f1809f344f97db9b93aecca80da8c4ea5b1c47c 100644 GIT binary patch literal 698 zcmV;r0!96aP)52# zYiNye9KiAK@9c$aPqJgNDA&mprg>pTwsaaVRwl}n%VcG_#kMA~|8t)I5k@q%m@N0p zQD}0>GMW2c9QUQQm|W7y7>^ZlA1rMN$ z+GS=}ND`3YK#*58qtm5#pIR$PA}+s}HTA~zX|vq>wuv>dQJFXp$N%=r8k%IZ_Bte< zUYKa+hP)-lJ#KA7Jr%GRJuCdc9byBtmvU(!@pb}Zm-o1bt&pum4?uLC`g7@yl5N}S z$$^~L1JvJ2SqH@fiQi$yR<`)%c{3!{icw472@y?B@ySu8lb_9OQ)|V~e~iYwmu7bk zH4cNm#$pYbW@AW5=+2CdIlP$n^Zf08GusJR@$(;}F>jIa!ni+>xN4TTX;!oq&O$bH z^Y-HK7Amdy`KPo{-`_n`=q|M0G(#APDqX}@3~FS(#Gw(&p%Xr6T>{67pT8Ebes@Az zAgR`SVkDwe-XvU9vhZ2~opMZ76MWn}c(AN8>a&sr2Ljy5n>77d8LdaCcq50P zfR5Ssil$#>ju^G{odm&M06U-qe&MdP-etoCLL*E9r{Q;GzkgesP6V2npLc!&U3PCh#pLHbdMG{6 gZPZ5!F>2|%KfZJj5L|Ku?*IS*07*qoM6N<$f&qF;NB{r; literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^JRr;gBp8b2n5}_Slc$Sg2#0L)pZ{z3r``Lkb!@-S z{GSr}zB9fzJ1(=_nD_m$dQbN1e1nu3Y6i=5Yfc_G(ZC`hxy9sq)vHniBL>FBdw;Iy z6!U!bjmP1@jMdW*otW@FMV48>z(|4dn6dp@iL?2?^->s^jv35N$=nuyvRJaAVdBB- ks`h71TP8AcNJvg#V6ahC;eFcQEevv%r>mdKI;Vst0Id>4WB>pF diff --git a/unsuper/conv2_output.png b/unsuper/conv2_output.png index db24d41c5b2129fad77ab086c6290faa77769b7d..7b9d69e473ad562df7094812bb5818316b81c2f6 100644 GIT binary patch literal 1601 zcmV-H2EO@;P)r<510l?wkX;7)5xCRP%DK45Q6ObYxGKxY|nwYAT)Q$J1L{_7QF$}>=zMfxc-nt}Z$6J8T2TOLkV$q>M*2@# zDp!a>rRny)q{LAUtfHunh^+Q>`e7aV*D@HV2mQSmmjCTIQ9Lx_6^gBq7fK3B6dmBl z^Od6#DBH^RMnX4U+^4-`uOp(Fz_tScG=r0zD_dL`57cbXXGtk6@Q?y8+z46OWT5xz zp?Tz?H%Wm};W|on5`(11?AdiIRalkJ$p`DmH{&S9lzMp=aW=el{Gf{TF@JGmNETX1 zhES-3K^rOh?meHTKHQ~w*#-9%2~YqfD6@!}P+7TVE{8Uvoi5s7Mw7-ss>*A88 zerD^_Zj1>F>#IL8W@#M}%P2W38gwUmkSt+Y58f5Tnka3#Je5*n4pt^o;KC@_tK=uT z1M_a-KUIZH@4G3sDZJ5idkT9e(h*HnD2-(#v;<7$b>@6^J&y7r+?)ivGkBuqePtA5 zMm>4*>=*u{zE7k;_^56pu9`KG7!X_4Xs`bcO#eCVXtnks+_H;5%U+q0NAkUA<1f22 zTFo}&Fi~1flojjjJJ-|&@$_R)&oh1F|L}tYb2U+d4z*;$$v4Fky$V7R9*QDxp=H<| zm^*(OCtuMg((&PlW1QpH@7(m`eiYS%xK|LnkaL!MQj{nHS-arKp;K%1#ZqWW@=^)> z6#axfz0puOgC0nR3NWC}vfFlOPq%n_@Kk)G$mL-XUM6g%yiig;v}Ai_q}OMW$jGK2 zpWhilKbX+|Z5Lsxp}svVd{RThni(NSnr=-%R+N3y`FLV}vy7^*)XmbBnl0f{eKgwM1G>&UlR zH1fFdIIIWnw~t=L+}?xHs}4O}+G;dPVIsI78BwRyLO~k(K`C<7=FQ*iz=PMOJbu(S zmTlmUDiHbuX}hT5gbqkU45|%N4o(&u2I0Aq@=q2TVHKOV?93_LL}H&6gKj{7EQQJh z1Gkb1a`0o)$dN72{HJ~2p5?D+$XF_daH}RtTV&(hK9!q-AJe~(`8gcbv5FzU3d@khN*))F251m)X5rqmCHMjY@lD1+EBYWngrV7v1%Kzw{)#UPj z`avl#Tj*i)(w#Z$H!&ZzS1i7A`gFj1+FiRCtp>KTJ%O@j0+)#0K5AswJ|9~OFO;;M z(jF}K@hR*g@tKNnKT^APwKzPWJab8tM=kM5U!GmRh5{KLQxI5vz~uCDwAymB*sy0#ac$f#;kq# z(U25AqpLypl?+cP7vzBlL{PgRGICLk3KZm`D`~r>eHHZf?|yTMXoBqD#!@j)Y>0#X zN-{iAspduVwI5v`^tX)-p!d`VY9JVAKORP0272FXKP~Pnnjw~)Nn6|)>cznD#B1u& zqYuY2ANs+3##6nO&${LB9@qaN=W}6p%Qd{g+lHS`H7h3lwTy%`av7dDu2xhKTf(v@ zVt|FdDoxZcokMg0>cxl)v;sZJ217XKl+Q-?O=5%%w3u~T*9)} znQ#2F_P70bEXq1dIYhJ6ej<=&h9@*7d8z&fCUmbK5LWq&00000NkvXXu0mjfEJ*@Y literal 1020 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 delta 2078 zcmV+(2;ujICZG_I8Gir(0044nrdt322j@vdK~zW$mBEQ4(|rQ~@ZZ-OMao9zEE$zM zS4hV4ZcmuyDkMZr)1vfbiX=BfQbu%mvWFERnJMHEm0Ji|j>bg7T;`#1P}fP!xN zz0aK|%kA%GXFw)xbAd0$Fx;Fo(xm~O42||H_h6S2r2~dGBY)M<{!h!CTFiloPmnLg z%zG`eM%^jiS$1>8lJe`*c=n~vLYtdCz<*|LhjQL?o1@wA<5=bEN^g8X?CM{Ye==!& zR};2FjiwZ9jXf=CxAI|LOmxCU-cT(KJ-5oP0NScYlN7$6)fMed7>^tf z-)!Rgm37{4YMI6VZQ$3+n55E+>u;$%BYjEt(CNZH-~ecgz)skhWjZcUdMbrdOsx~< zFIiR*O9|nLlEa?qFnvP9vCoKpRBl*T13swU;Ii--D1WMoojweLIld#Cx6w>DbyWtW z3X83M<`&VfG(>`@B#b59iAX(XxDs+VI;QMhYZpR?eq%%7cI;N% zB80NR0eeoI3wO8)QgIEl^>NyjDG|$Eu&E0K$gr#{y{F3RKt!yL8C5~ z8AaZe;5BolFHMaLpv$K)l>`WWQTHN%Y<=<5dL~yn{RBVjRFisEn(R46f6uoH4l=0# z3R-J6wK@k9tqy+wCky|GFLrSIjez}}7GF`LWQYfaD~Rq)c6|7QfI6_wkVw2Rd>5mY zGJo{d3p9`Wo@dN0&aV`9u=w52g%Vj+c2gGU8t5{9=g%{GU!?wp6Pj4Ix9!7=@w>bx z>H)MxAW0J0_v$NqrsHyM%9Q*Bm+{a(%O6wJ&s_F*Lq3{xFe>g-iI$~w2~E9r9$fA( z1W5}%ntqHV34Y9z3tt9KY%~xr#*51segH_ z2=vJ=ORiGzII3tvuV|Ko?#FZhZ4rQ)3{OwALzwdK z*^fZ#rKpUx%4`;nDF@}(X=eQhJ`-b@&kI$0`y07&|{2Sm_+!MIbB157zlX@Xh zBSw|yfZE;Vd#=QK^wC-#f3C#Db$_lj!DazLgKovXIwb^eMRkvpNfiIXWMN($nN)52 z`fe0z(1&ptaqrpvA)&RVaXtK{7*ra;+F*PjR5P2 z5A{ehV<_KGtB{^!?n_>;a3iTyjc9xV4UCs_Vw<{c9K3hhpvEV^L$BRl3eYzBT2^(g zhy3i&ts5N>eYHD0tUTD~%YQ~G8${j7ly9KhY0=VVX%OAEoz^pM)@zjFCR?r~d>3f9 zfPJ9d+@43M+qi3iJM%sE6G*x~V~K1dutp0$u(5w@P*-YflIN#;Xd+ll^v32=74b&a z`Z%>P#LNS-YM6|92&gkD)N0-i9U_QbzcnKVbyRWbG}2@xk%d});(tOi6I;9j0t)Sv z1$3PDkNw+Y0klORe?q}fAGq@l*vZ)j%Wd1EbM(2@`NrP>`oMA=IPb74=}CkHQroIT zyf=27)abewSi7nW&eEJ$jEp{}N3CpEfG&N3^wRG-;0SV*9;N+loQ?_iLoaL4Oldu7w56XdNkRLw}?yHyz4-x9T%^v5WgxBc$0(Yq>8KTM3jhEB diff --git a/unsuper/conv2_weight_grad.png b/unsuper/conv2_weight_grad.png index 18403846dcd7ad3d2fd81dfd7a7dd15a94c80c08..032b31b71c8f16f8bb47e90c24e8d5d03c65adb8 100644 GIT binary patch literal 4277 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 delta 1837 zcmV+|2h#YpA+ZjS8Gir(0044nrdt322KY%tK~zW$mBEQW)OjBO@XvP+GlOQBF-+?m zh6p3aP{~=2a<5Wi*`>!iVn=&+M{ikSFfe*QK6#J%hglX)f&l?dnw}> z_tDI6o_YQH3%uW`3Cn4%@O``ddpTvWb@RJ!{~x^xL(NY@Gk>t_5t%H&B{AyV+aJ%a zw`4Dmpr)RLBUxs5r(=|JgtZ;#t&5zptJ6%sXp<*DO?~$@;G!#+ibbVms^?yxyoTNd zjNV&upDX%y=TG)aCt8zT>}ZxRiyLqM77>#>YXZ2Y-q`<)6#mr_V|3jW-H5)J`Ia{k zwtB^mS}Sz^X@5ZtDzs7wFNoB^70d*1sq*tR95?xqw(LV}wD*k&Q&syR^WZP*w1|hl zxyz|(pWp40)Ei|6&k*zhR}lB3x=L{M=k_%ps0g+Q*+K_oovW0Nrox^@$a!wsFAb<1<6@>$oQ#N=2gKRP2EC57D zE8;;dm4T2gsIgFm9{~MBB?BllYJWHYWuu%2U@+4SI15k^#RG+_5{+y@p~DXpsu`fL z5Dp6EJWv<}oCPR|;z6MV*@8lcA1G8aKw%*q6v}y^FbFscP!Pp~LJ5K`Le46j&pvns zuTbr{VSho0eE>U}Kd&oc#`w#0)v-LlUDnWN@AX#`FLyojqquV(l1e;Ii1s>Eu zn}LuF0`1SmC%TkK%i(0erIB>CNPeNfJxsPlg21!?%vxEQMtQ#4wJ#t-^DVEz?RwgU z(_acrv$>xEF4|RpdM1{y7ZKbkK>Ne&D;#`%4u5)VAK|-sx++o4bEk@|`qzO?XY+pm z+*vY~td4dCA2l8{MnDf>8=eG~W{~v}(6Y4Gi+%J4qhcom#-!TDR{>|%kCong1Uod2 z^PLcE5sH2O7s^RLPHB)Bw;y`fNe-&~0@LO)LV`NRjIAr-BL+#P-7BQMSZ3Ct%MYi< z6Mu3t`(BPS7QSm69@|~(!Pib6Hq2QQ@xMWUyJYrOW#)Y1o0p3^6X?!z0lgUw^!{($ z@Y@#?4^i|UCXMaAeC^VtM92CV;6&Sq+ON%Db#?V{e@1l!ZM@Se6GM;X$*j)4K9&%f z(Lxq-;qu(1je#%VI@dLfMvTPc)vJ*^QGZPdmTs!m)h<>|L{IDF9(<0T)Nvl3BoA#< z@%j{SEvtJ+8j|{7_mI*Nf-OSw%+l|DIP#WLvp>7Z3vbz+;qK~|O8-?h5y-hOBLnV9 zhs%0aT62EPrR* zcFy6Vu%W9uz`0V&yF@qosx{Id^b?D^FGE?8wWAEkfJ?Gf8G)3_BzCEe0Rr1RGPoEI z1fC}E2IX`RA&voGD{-@qqBpc+LAdzB`zzw8gc@7R7IhNVg zW(ac6$?Y-#65wVNekY?%Kv7zdgMVO)(B4p9){^KGX91()v3Z!$qrv7z=TK8w_US$K zW3Q$F=i>cP**;6l$j9KuQxuhYySZaF-J23a>MU`eNS5{qYYqiUJ$){eVS{ymlmFS< zA&B%2-f{kYA8K+kQ<@T2@0pBT?eDQT)g&Hkb4bwCj(#C39A1HsR&pK1EPtOu51N;3 z2yGS=Ev~=_E3#`CWNjzLmSA5?;|I2toIk6i-w3$T8*{4E3nKIQ2cv+d1k=Pl4e~1C zqS}Zow0Xm?o7sj*Lxgg9o_`r$NdO<(H2=^Kv&qlKE;A*pl!g95`Yo?xR5;GtFa^FQh|(hfS?PwwEqs63`s%5L@&h-!4@I!nRcz!B?oDz zTxruo+%MaN8j2N@h@3{pR5v#PmoiEiZUg_#wq?o^x;QpNoN0<%8{b%Zl_8dFEIhlT ztVB|=OQTFvB)lcS+l*3!b;;B%AYBQH$dTaa~lUBV(=2r_q5j_uMbrx^~eiwk*6`bHovFwXVvN zaekG#Dm*`oIxWQS?q$`u(>8hp4LhjIBA>H2*XNX1v*b%yLnb%iZqD*t=!AQ&bnLYy bf-U+#;T79Ym#OVv00000NkvXXu0mjfxB`nn diff --git a/unsuper/fc_output.png b/unsuper/fc_output.png index d6b04888bc857e02d21ca5b7e97c025ec140441d..00316efe5206fdd7591fdbfb5cf6eab4664c96d2 100644 GIT binary patch delta 89 zcmWH^ogf*)#K6FyHknfsNSS!LIEHY@CjZ&r_Ars7xrUATaSz)uHnz4ZNwzk5o*vEr slD+@tuTFTeU2tjf{*8OH_FN^a;Kx0P1J(boFyt=akR{01j^-QUCw| delta 64 zcmc}|nILJ+00cd=4lV*x(w;7kAsn*FIyK1$&P$xw^~yeZR-GBMGP3{!gUt_?1wU`a Q-vuf6boFyt=akR{0Ew{`6aWAK diff --git a/unsuper/fc_weight.png b/unsuper/fc_weight.png index 21649134d92197dcc769922931431caaf07e9742..516ca3fa87d048ec56e849f4f976273ff87876a5 100644 GIT binary patch literal 3525 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 diff --git a/unsuper/fc_weight_grad.png b/unsuper/fc_weight_grad.png index aa41d81ff78693430f236c5c1645e6a292d56b68..8a2c5db5ddb6343c412cb894a74f495590cc73da 100644 GIT binary patch literal 2078 zcma)7eK?fq8W%^FVLFb(dPlTVi%z~W6WeHwq6pKlY?$(qW~Nb`#rU{NKB7e1yEPFr z!(>QlL*?rdnzB}g`M^xn(g(GJ8LQ*_V+?Vg(O%a%*ZJ%G@jmZ$J=gtvp8NN^fA{@d z@h5s2=%Ms9G&Bsn4<8Hwe=PXWUuc4L<=tQYrJV5FQ_aVC7ZQteISvsIGJ?vIZ zt(=?w?pe+O&nFcZ34KOOk%*iyk=|TQS7mVM>vD@xi(O;rgDTQ)pV?8BQ-8?sKj!85 zm)kb|aVQvfUADK^GDc=txVQg9h|IL&!-QkMqy7hvXV1&oiw^5L&GPf2sV}1}JF8js z?JR?oYNg^g^US$y4+3AH??wI;4-Hp>P0B^QjY%Tw zMO{ah1!Odf8PadaBMUf&|BG(+;llO?VHLJGzZ|&Gi6~Mg8|w)+nN=rnEu+Oz1E+{w z*zxHGe1~_p_GDZM-n@`7_?7Gu4}J`i52x%WGA$t^6IdZ33sBb7)W>?+BifCoaa`?a zPA!F5ltiDDILN9pgXr7Y_1%yMAitZopXqoGS}y~kxp>GNg{iO|yyHP^N9ALlk+R+C zU7OQ_Y)NF#b`wMjg`g;yNhvMZ>N^Ir;;val@9Ed?GR+5jAkm|$k;EtkhTL|}h0;*% zXfHc{bm!MPF)wHxS;#>kc92AA8iu_u4UeO8`K2;xtGz~J%xzOphAtSujB zNbC4baO}}C#?~5dt}()eaC(Eg?m4ya&%bP$TzTDBsVv`?uDap(X`(nbeKMbTcJNK> z+7&PE@ zUs+qiqZ}^L)*n>5XWFz}@951~yB;1t#7!T2?00LuDnj-9FjpCn+PYwLeRbNa>o4`Uk#{_oX-AJ;tLRuEdXTX88pDlFa76)kn(QF59tBY`t$_vhRpZ%MhB*z0G zNSKpEE+&)d=vU1049)+9W8{~RZ)_F2ODoVj zXrAo={ypGTcgTZloZt-A_vE2{t>%Si_ep$+A$6TBZP%VAv6CRz-l-ll^uQf`A6M3% ziwoNj*P}BW3iFg;^wM+kK#5W*F)f$&p-abXh!jLSU|mYEkBt4Wb?Xd zFe$>+(`(ArWa`t(HvHnpsi31fr)!lLt=l{8F+9||3eg(ho!x5Cx;m)5C3j7dzC0hX ze19TiHM(_HxZu{R2(Pa6fB)lTx02sivhp%R<(0OCUzp*p)lNPA)MjmwHu|J>J=;ym z_sZza+`A=XZeIik1@rO{EfMKSzFZ6YwHDUNH00pD)Y_C@tWLna#q@HmGBbKSOn;y>`jMrU=jg z7*`dA(DXjj>?7u`m5pq|A{rqfc>B~ZS@=$PBT@QcBG*1J z`P;aw<`rUrP+61%o*JFdvD}2}sM7-#{~fu%$0e+1VBr_LWL5wep-EdDBtFO{v7tOf z`l9AY_XX{=YfwRatJ-^l_~kZk+6c~X zgZ_5ExGtbR%CldeUEgDntUkbfcDw5<0joxy86El_hR#95(`x#b7IKC`(4K~vKrE%l z<(mP!4W)eNL+*(#xo!!SY0~;B)YSHN1hqPK=cjFU*cAJKeMMH_-PiCwL_GM={Y2Kk E0kI7OsQ>@~ literal 1163 zcmeAS@N?(olHy`uVBq!ia0vp^IzSx40VEji%wzM*KDg_eo0_rSnsym&f2`rTchLO@Rdj} zvpb)`T~##q+@%{fwIcV*On&vQQEq<%*qZguA_ueYL_)o2# z^}m<=|Cbu9uKRNEqU`(oSrPTC3Li}FP0ySC%6#7QUDul|ZOhr!@9%k98Kr^MjaUW$ zTob*!s^-Z4N%r&qvgyCA`ucYDx0&hho}XP`#vk{$=X>7%SS$?#i-b>GVJqh=((ee~(sW3J6vr(=pAy^%Zo;nI`Nr4ygprhRfY zo8Pi+*|v=pS+Cnm0t1|8s7y|opg@`A38Suu zC0zED*!B5>$wm1WJXdb*=J(y4^)~%^S@~WI8|F3krj~1ey#DE~H|MSq?+G4V<7=z@ z=G@E8(l)qpw%$=E(V1+Js7#bp_^_U6m(e*D4uz)y9F$nUjWtmikyDqNrxf@#ekdw!<5jm_3_zdn9FPBi8MGg2sOmz&`@-PnDl$UFCh*$G#p2PLqU@`9AatE*l>e{M7aeH4RIJ0 zG=#|e)*ytZ-kpOL>l#NY6LXU4wD2%dT4fd19*kXm@p|p%*w~L(41R+u zl%c}DL70R^U?PTxWrBk|Oq32r;o<^sX1H8o-!`AB4AFq~tyo%;Ee`T9QT|1?ffOH8 zeAw8Kby|6tD1SY>0q6M$%dw%U$YCBPO3!vKj(ph#2 z`KmyyY8s~_4-=(>Iq2gTEUd))53;gHXC5X>2hFI}qzS}zO?A5AVWPB?m61vvHi5XV zsZKXMOq6yCQ7TD+KL)ZmDQTN-c$g^d6rxm;0++JJJ6We&9wtiuJWL*i@gMvKWwF=+ UCb)ud01E&B07*qoM6N<$f~E=a&j0`b delta 304 zcmV-00nh%R1i%828Gir(0049NIMVzB>-B*c;d|@>K5nRa-th1VUuN*OKYy9-cMSkL^Yib zOq}sYM6IqJW(kOh>AlaXa{|KDcGRVE{4jJWkSNxS7LS_g9vpWcP;0CFo=-r zkn%8z!016UDJc(=2skd~nGz-uaNMg*g$Q9IY<>Z{2R$D1%IEU{0000