From 784680b196f4905021493327d8c68134b67776c1 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Tue, 21 Jan 2020 19:38:47 +0000 Subject: [PATCH 1/4] Fix colorbar with SymLogNorm --- lib/matplotlib/colorbar.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/colorbar.py b/lib/matplotlib/colorbar.py index 72f30723ae64..e04c94610c1a 100644 --- a/lib/matplotlib/colorbar.py +++ b/lib/matplotlib/colorbar.py @@ -1119,11 +1119,11 @@ def _mesh(self): else: y = self._proportional_y() xmid = np.array([0.5]) - try: + if self._use_auto_colorbar_locator(): y = norm.inverse(y) x = norm.inverse(x) xmid = norm.inverse(xmid) - except ValueError: + else: # occurs for norms that don't have an inverse, in # which case manually scale: dv = self.vmax - self.vmin From 242cacd87c9887220c2a3bc7a685f67f6cdc6e10 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Tue, 21 Jan 2020 19:40:13 +0000 Subject: [PATCH 2/4] Add test --- .../test_colorbar/colorbar_norms.png | Bin 0 -> 53291 bytes lib/matplotlib/tests/test_colorbar.py | 15 +++++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 lib/matplotlib/tests/baseline_images/test_colorbar/colorbar_norms.png diff --git a/lib/matplotlib/tests/baseline_images/test_colorbar/colorbar_norms.png b/lib/matplotlib/tests/baseline_images/test_colorbar/colorbar_norms.png new file mode 100644 index 0000000000000000000000000000000000000000..922ecc0519f6302bb416cee5371822f9267deb68 GIT binary patch literal 53291 zcmagG1z1()7Ts9UnehpHe(11D4#laL&Y>*_nz@wqMFO9 z6z=#>ykg5|b5e6P&*Fk`#W3y@{fWa>Sqr?TRFQNqi#;yI#4GijAl=X7(@D;OKytFl z1mBsxE#WO;+qvf*0(Qb&^CBPQQoD`CC6OkawI;c~(LK;5bD+qYL_rF~ge*2by=f`S^} za~ZKv6Mwc9JKn(T&wq|vqHX~%k2*Zro8WL-(;TgS`K#x#Nh~)yKs~SDe7ySEuODM7 znBu>3v*n8Qzh7xTIoi8J>9J`t|E^FSq7Q^b5ODUEFuM+Vh`Ru~6UPENW=D*FI7p zU}A2bgpstkH1fc1e?v!BI+#VjGf^ZCU(1mKMIj_)Eb2CL-)?8bZs(sFa5Lkrs=-91IsxM`$ zK^~5cU7G#p8vW1`W*TgoRgUdFkFOE!uT`yg)#Pxg6x4+(irF_7xDKcIdZQEF{>W5s z@-dB8I<&#dxGHRBux^B!y-t?!Z)kfG7UI3S(OITh=-ec~y>0fI*7LXO8>*>%qOiRg7k2$bk7l01^9F*hkSxierMYLR#AtWoty@N-UHhV+0Gg@%T)p@KvI zRZ>z7!5{h;EXOL-H@_@qVIFql`~Qi+nSZlD_slzJV*?v=(pp z=q!T*6&KSiXq=z0+aDb{jVl^QFyYwUI@@KxXq+h{BU5B=|NUH0a4^sMY2!0JGhF#S z)=+M->#j@3BqzN2B^mN&0@8E6UUI2L;|9)(iNb-ZnZjXunGe}_45V3{Cy4J*ndeYB zoz-G}lxF6z`Y!MM<#W@gk}7ulg-5vGVsq>J^E5bYe#+i#bl?Bsnw%HPrvLd*x~6VXIpUqZP#$bmex^yNwGi#{_?dxS?$|$VERc`;oTri{FTRD!{wG zk&Sf*ssL@f)>eD@%!H>2CL{dXD!7ta07jG2U#;fPu z{n;$!?0Hv|g72-)qUuHGDPPj?M>CX#_!+1R}RX=O-=`*(l;Usf$Ty|7$tn7val%85&w>rh)yR0H`ei?Rr>`n&m;r7K>pCr9|6B5-*3)9D&u~CCV z-#1P*SX=qK@W)qIE>ls3#59+F4W;D!NoDsrt-4zH%V&#V4!!0i-%#8`J_tzaBG=QCOI&6KxUp^D0|4 zcd2hZZA2oC<34XGPi>${=nKV9U3odA(QGfm{`|4!YKc#CJUew~(W)jBsXStkwxRug zk!G;`bID&9IoP@}d`((ELm4j>2N!pSJ;?uCcdGQJF&nnq@ut5s^XSD)d>3+aH8l~p1iNzYzU0kg94UbA4k&n7wH=9zniGhMeQ)I3qo3^$s zDU*%met2HH{{w5e>t6nQy>WK6=LD_eHLjb@IgQq{>g1wvkGp%!dt3K2A5(;4ZOZsM zJFTHxQ7i|XB#}4dr-|;oj*5xV>-+RH_H=Hf(3k4@tb12ahDDy}maRPb)mbC!qGLYp z$da##z3W{CFT{wN*3Fgc{J{02HC=3s5a20}!+PN1A!;aT zFWwM+4{vGWYIm?kLzzUX;EVOnV@}DA?=2a5zBn$QZ>h8-`h|yw`*7Sav!44&j<+Ci zxs2z+#+OB$7ZqYF`VMS-zNXhX+dP`7E2T8r#uFf-KVm7DuZjC1_g@lV$1>KO3dqAqg`939u!HqxlPIN() zuhtla-cFsybhnnn*~;40=$X{cONF}B{*MC;Tf(Sg51YwGE1!oQtXE98tHx`aY3%t& zPI##Ll!+b_IbG@tIJCc&p^$J%L*s;zCrif}7S7;JY?k-)hK1ODWb?%7v4`Uy`QNw@ zu!Y%tCGD=Tc5;egZ$`&7`D;Hd<*u?f^?iO6M7VWdcI6~PzJ`Jp)zu>(hGwRz&kv<( zt#PIut2&x4?i6i=0eU@1;Mv=U>G!Z-I&H6X6B(3;i&xPv7!H(ag%Y5w3vHV996OVW zS5wPB)xJ_u$SblK;Wc59-*KGppgx{iS6G;+qmAQmBC}V9OK?4&#~1NV@roX`qNVGsGzyxrA8~}}E_y}p->SIt zaNUl~7w2?;h9HD|?bZB8Pa2Ubo`yx*8uk;Oc^4j0l(uq~NC(xQhBTWy?Cyse3#5Zo znFF=m#@t}#+-l&)m%N4rtSqWUyqr~8b4Xqwlqak}<}JKkj$ ze1olNo=f(MPeLYsc-*Z$ysbX$JiVWuYWyoB^!Fb9jQL0@+Dd`iU!$z8XwqF3?#_;@ zi^+rC1EuQCH3upMRh=I`B>Q`|7c`$gzg|bsHwH6rqkp+}-%y&+58vD`>SKwIlaSE& z^+uhm=nv|7&BG;To8!6J#-k7X*htIuj&WQg@xF`xX%ndy-BOHyqP+dX<9LXe+hSPx z&(WLhG_qQg5V5VcjgFRs{lk%a=SBLi<_w68GTO29U@DCSdhPU8zek_)v`{Zjl=+UT z__fe_;{AHzAf=;|EVCw^VY4+S?>u~{-Ia9L*yo0G!`id`R@c}x04aHcc0xK&3Xxe% zYuN+>w$5F(3ft>W%{;}-s`<$CkP4;n)$$0no_j+&?ox89$cA2=9>Kvbbz2F4Y3# z&NJu`YRhm0xHqa#qc+pJ*a~ljty=hpPuMiQ?JMg_{lK`pK4JCNHG=yRE-uH(QzPM1 z=NE&m`uvB_HIB`~s$?i=#hY5=eWK2&-`l-rwEH=Zshc02L2qC{;YMtSOUuUkDyR64 zO8zNHqdx)P$Vv7tHwF3%5z%H@VN9}=fZ%t`uIA>JTwL7Ifp^nxLo&a!?Iv&9H7aI$ z`h5KOacJ#~T`8wet;U6C+;d%?+k&C7$9IiPXp|d1{lSb2xuKgI=ETa)dmBlHY9*{h zt0QIb9*dqGi6X%R8RzL{7etO%FJK=p>p7KI##&X2kn)?5J$(3ZV=?n1!);U6>X9LO z7aLi;71gSyTT9F43b)3c_Y~8pYW%;?P#5aYUf4}hfB(G7k$$=);^w1hy)_oqYT~u? z6{BuvF|<_gf2Eo+=7!4O*VaxNTC+m`+-U|WI5HE!LUOPOG+PK-}<49>o9Hc6-UAh&w9!tdG7I5)h_7qo!@&LL^I|( zof4vlune`>%!_a+z3MS0 zsQvxz^_$GhT<}AN>FMdQVxFQdyDLG=13wD)KJcpT%`zHVz@C-6(fE#3osO#sx86H$ z#>(@EGLd|cs-mL8Fch2I5%~MQlhfA*UptOvT2}s|f`lPTfVT=g#+5Tg%G`tM>y9g| zQZWj7g*G!%aFbq}4dm+_Z{d@Py75;!n)*BubD2uui*Fy^N7+ly!Fq8%-mE1UYo#ha zJ}ij8S#H>9!4h|;9iZWlrIG(S?@R5*AeH^iOxK0sbTnv`wkaN!l-yjr7jByu+^U6A z9=TJV{>kiWvqVv}u?S`KH^F@y62Y|^u~aLkyOiIqKHZfpK@uAIK>0SY=;^-R`SbSD z_3gG)qf3E(XOtd?nxp_v*Eo$K%=O?*gB4Mo0E7b(m3G#@T6tpK(C9I|G zh*r&ol2a|%S`GSDErWW?BA)JYS(;cTg@zI+%%7bzGBT2t&Z&PWBU5kYNqep-{m9uf z4tMB7U5je5G2EPKt5hrTCM~o` zRi9-6mfa-#rM4a*2cHda$6dJanw)s{?Ms=pKK{m`q+F&XDKmS)G46JzIC}GDOZ7qU z=I)4~#GM z!6quX8vmWPywr4)fSlkvr|ZEggGcg|nl)N}S~ZnAr^g4Qgd;!K#%pk`Uh)YKA3e@W zmU>Z@yuh%o7X@Rpu*^m>Y3#Cn6!vuG;T0O2O>tdahN>YmnQUc-ZQ9g3PZ zYgRYDS4F$KJWHs>kl)xMSS^IPksDAGN;4K;=(=YqD=kYl;c;}Q(!u6_L$r`us))dCI6{fwgR(4T>UfrO6wVZTM_j5-sWmf5f;AH_M8 zaic4o6hnPqjDM?Bx!s*D!I=BZ2?d0q%>Ii{nNcTA2p&!7m8?m<5o)c{=Q@nV9kfY@ zS=>$$&mHkRKe08oH)Gb_4*S~H*4ESg*%S!tgxeN++{KPzEt`9PTSB$kFdd-sd&Q%o z@4csud+at}Flz%k?zTnWxkH_YwfG~7d0*PuXmzcpEp@cJG}J-Vt!usjH(s(}$WN!y z@0p-_!!0(pmLOv0jVWxaRM5uJcgzDHC+|jwspK8oeoi6X*|tiLJ^e&9=h>m9oJ}oY zd%mDn7-#+}@rO2#{ZiaGUJL%ZTbC@OXU1OgUH+(cbETE)yJ#r3M%+u!cRGr1ksDw# z+>3>Ky6E@9vCP}M291SB_KNRx&S#{|N<+}}UL}ZcVe=Y7kSrOTuG?l;FIiQ*@CMo; zPV|gxe?;V>=fRVk%FI*0Y8h*f|H!_JiGiO|S?o!dB@^wXfx&j}@PdkPjay^TM=gq; z?kYk@rqa7BJt~9lg=EjGzDQ|mQn}Wf-py0doBa_5@I&1bp7W-Bm(V=eY%Ga__SM=s zrZGXjhK;Glim!p+6cPk|JzlrNdjG{?qKO+X@Vjpk$k^qDiSsb;8#8Gub)Ftu>^s;r zfJtKoYhY@3btE8m+UNA-sIh(=t8T^8|H7HQ*`rW`BwhWEN;X>)|0$<)#Om=OaZ0sQmDEHpWmja0LA`pwkV3O8g(O3wJ=;W=Yy?i*@ z$|muf>0ogG<2^i@uB$nEiphE{VX#G?3fax!X}JnqHmUoxF`PyMi-?b3fH&7)<j@{C*Xx*;2`($`hD4Qr*)dS4pZ+=)mz;|nS?4QIoA&_1QmUM zvDTy{S-qF(C^46wV>=YAE{$xp@pwV}zXD?lT{wm+@@TJrw9PWiNOYzDl z;|w5A;klpfubQoWZ7ap)Tt5ynY-g$R3cqfkuRqy$D|~7o?>#h6g=$g%#pJfX`7T9Tm3;~oh1uiu-| z;Um6ZTS}Q&qdxj-Y^i{cP>`N#;OMkI-sJjAb7LX(wA@wEyHQAZ^Qp2dJ&bjBdu=;? zs_ljko=y!bLucPoYgQr>6D{F-7XHk(kqJAq_vb#->p42!p9x=B95@%OI{Hm)!nS_X zebooFxaMS<=%q`SHp)oVwOilN8*c?rG3}K#`g3Xen7N^dU4P0^44ixBKcctK)xNn` zcSe0zk+*C@vOTUt1j z2H|`YZbXJ6@spj2-keGx{qy)NN6U2KhT}}fhan^##hm>a(X~ybwiSt!_!m?VZ+inD9 zPn}h;lq09`=C_$xk~RIl97g#BL1NG2P3)_ed}Z=If%RAaNnyl7Q~0P@mhu;M;@TNj zrr79h`d>%Wbm74bllV=k5X-l&cYfRYtD@M6{-W`->!DKKV9}(=W~vMpRgsyAS_Ph* znRs_lQ$7DH`+myM$YNP?+ZD6u%*18R??1{ma z#uDzQI@@m%yUhDZw|JPNvAynDUd7PxkBvEI1%A6$-0)pfFYte~e;4nzwzU=8_nNjZ z(5so2P~@oOH5{$WOKcf(vOHf1<7iy*Ju5`Z$k+Mvjh_(Bv%S;p7mMHQPRTLuNwZY^ zgIIPjz9f<#eQj#G5H7My=0`wlxqaY|Pu&21QL<8YSDDodxp@9=(|%Gm78XgTdC_uZ z4}5%1qy6u+61bG4veIn~AQJLF5%X&}p5tu2OjL&j&daBPvt%&dsDvExoYqF`lkR#? z&df0Cge0|aF02=f_ zPVU>b30rcSviJSsvCF5r!B}OJuav=@@ft8X4cwl&T`f99`0-B81p6gDF+F#np{3?S zUN1ZjF3ir(F7##-NrjNThEcFgrK+s#1L}BYd-0dGqhs^_=8QaN!D@pquJg?LSkZh- z703jU+SvIpX?67$r}q_OH95`4Y?jko#@8zkc^ifYC4ft}EIY_&FQZXp0=CzXc?lMO zKeJ`CQnqsJSuHk6!J`yCS0Tgz!gH28_E-N4y2qY^?@|4@h@d0IARr(hYfF>M?u>-z z6UN*3@4;o=zB^oSyZTTG7l?T?qS}>g^C>BaB9OC zQffFp(6qJXY!=x&_wcb-SgA;NN2#5+#@LUm54ms0-x2aNTbh_+a6K>fQ8CY?CuHgDg$scKfZug6y{oZKXFlr(*plx?C#Z2XK! zjH*1isB=hfXvxlatkNMb|M7=T5mr|Gsi~=r?QNg3GQKb>fpbZb-Rmf^&vE84vkeLKmBmFdbt;D(i8+2c|Kx?EWG`uq>GAUo)r>5@ z+wY4p{>+4nO_!+pP48869&g<-s@}`klIZqUj|3-Vv(xuLt#}GQapBi_GhNTSduwB6 z4rtk9lDyr>C$K0)8i_G5#*(X_hSApTeEZ~CqB}EFN5NNG-x86}Ut314UNNK#j>P_v zq%;x-Etu`^?@x-I9T2>Gc)cTDzbs}*8r$6RymAN;eQWHK-_ z<7Q`P?}G%0c>C6?DVTJC@1?^o_#Tsl8f=L0HDWPldq z&+GD>TauY!2}RDEx}$ZT6ANaov$i3WeE4Slx%H|q+zlEADHM|*X)lPo%EfVClt{D; z0;}R!w@uJ3s7}7Hwe0(Vd1$=xO z;eb@>@agHM;DC^jUIE9spYLNi^sq+9#+Ktt>uxhMHdi|cw#Frp{7>DhQiX(lIX zIKoy;gRk3-T`oJo2OZJ`Pyr9{NiXHx_Q2GKmc7!(mI#6t5Lf&H!wfDq%*XqAOyB?$ zUhcxAtzA7A_0V9OhhgVisK zAG>0>{rS#BCgQ?P!SjhMQCCmTTT%4je4a*GGZ2d$5vQG{zQW?-U$>|jr9!^G!oVza zTpd2V{s|vkB@pMqjx<`2KAlMtycF9mr3}d6qNvmLY_Jg-N7XV*z< z^lV`snb{e5(el-!Jt85&qW7TLV{LPD^HH`kWSKpVud&acr(NkQ^u=U3eiQlVNC={`nAt|dS4v<2? zqF$cGo2;zOLRS2#RuiI+%(#igKF?P))(UtkpGLvTv8q`L;qtHUYAYa=3Zn|-XrvCY zL_K_N6&oy-S`S;NyTnfRn5hB>JoRaKMhnA>Q&b%qkxaB!K{H3gQ;lWMH`W(45WWQ# zY3k#7_31L>sI$eWJMFJAu~X8Q8+jfVikh42J6pVEkZaHkHg#3YW z8$FA=?ALgBh)+*XVbt_rB)D{`VYV%1*=@bDwWGuDLp6_<>nhKe&nCgAp?=9F7OtWv z`L8u^NE^Mh61F786Zflir}d7h#tjMzVxi_qJ%(F>gICxBxIi<$|AA5AWWm?Sdw=`$ z4c3lQwWF8Jh&QC!$tGQ(HO3CX^1FBM9@w7r_A2uW2|)&`B{+5W?p?@^`tpA`KuQoV z=1F5QQtF$T$y9rKXa>~w+)Q(5&W_0Xcunv#tI8zBkEnO!1CyD*OVujHNBcU`lq$Y{ zhww3$e|V}6H=er%rrsx!&cRN#kFazB$kEBk$v0V8zFF0sWH=R%ZExEHs?d64p?fZ_ z_vMg+A#Ah1F{Pfi?OA(v>WYZ8Px~W?z)AC*z<+(Jo9}ls-7(Q|uxK3fMS;h8u@g6f zvC7gWSQln}!RiTz?`~zEoF1){?S_anG&H~+Cl*;MkhgU+o)06JooJ0$)yf5nYi#-b zT3MDt&h*#UmOWNFLSGs>#m>wZjh`+z5{P}%3%_s=YjVNKVsl*)9!@EcB0nNnQDfO1YK4kY5=YPHSoVti*j%2Rgwu!B3 zWU6TV`0g`Gg|Je!gJ-f-!*hWeWqmj}3$HsxkA6;W?qr`Kybq|pa=@1UU_3vNDX1OUjntKGKK7oNS)(=Ag$h_ z#?{ScN~_82mJhO@Kc|!&X9R?YOPA%3^PgzkDs3v0nx?>?$j!r+o`cN;3cA+)$P|F` zjHK^C5~dz*2}P^irdJE&aiQ7rvK4O8%aOCnn^jIGK8$r)8-1!T$VHy5180flG`J+_ zu;f!V;W094b2|zd$u6oH*4EHADRzkQ*lOpqep``THYPs!L(S53Is8v>dB*AUqq4}K zXg;2SBKt)p^U?BdFOHn?fft^k-Hj_nHnWUx+72*NN>9~a2zO^*#HY>6VgvQ9RbWO+ zLb8Aut`QFXjw;P-$+%xUa5))hl1uytSBeKXcjsP$9`ag689Da=w`R%YV z@VTeTNbh(%_)?B)K{N2KWrx+_ciHe+DPc)nK$%a}Qm@w@vDO~UQHD?pm1^0bUcpXG zj#Oks<_guy!J{1b6jFy+-1W(fPRNJFBj@~mXRgJm-_Wc2aAjLbzCV2H&?V31AqG24pk+Yfd-)~1oG?K-JNJf`Egi!PFL zzS8D3_6_*s6Dibo7VUziWqLEIVQ}+Ct1|uE{WZ6Nbc_!~x6L|yqNLG0$tpFssBf00 zUOZZJ-umb{ZR|I7y>0oB9FusaDmXZpkci0J=%YJ{c$3;05}3dU15CeHW;tehoS41r zB*#Q6#4EbAP+%~tta9<37b`tKfBE=8zWn<`go(|@yy!nl^m7*0ZA0E8M^SLEDgazx za);UqkKjMQO0G0DHQ}JqzW0*9!g%S18jfjrOxvt+cZ%=0jr)ZQ7f>iwRn^FEQ31Ih za&nlLvFiKgxg726yuoOntoL?k`1o>;97TL2F6<1OK}X;U?lPKl-s-VP`xSKW8^e1< z7~<_B=U@dl+I5QfhlJq4V{2Jpn(*-OX#M#!_e$dX_ZKOlUQ!SyIsL1!_D#sUgN6Bd z|8L(Uvy^Wqpp}@HamB>MzOU`jMPFDnHr-##>NFayadiR(Sn-g}C(okE3nNNoC~5$H zTkp#TEhQx{q{gt(fLrpQ`>b&MO&HFOA3Y1>oWa^e$_hqNVNZ_|gwYg`&kh#p`PWa8 zK1{#z^5siGiTHaG5;ju}7pTNMH0NF5kxK)0p8EY;e`$dzg7^{|eIMEmjw^%7M2YX- zohKk5h+NT?pECf;yk4aT`1>fQ?}3a=x4<6YBP!|nh3^v+vsPNY0_5$8tz;4yc2n4Tek6r=X1{At;3e?N#9a>AeQNcdGd@WtfG z@v4<4CQ9xDFPf6i(nl$~*CX~xra}`~fgFHuxzDRe^7Hd!g`8OPH7mT%j_S_1p2f8a zers+{NlTNg^8W^d^-J5HpTGYH1N=7>6#b-EICyD84@MzM4hF+Q?{It3+TPx$pnxqU zH8mnS+AoS(HO~B4q|M9T^l&ZfIOJ?I+*5nGKd-Q)qzN=$j$89#tx%%Jp-FjFm0p9- z#aMnD2K5qC-(Q)EdZ5sOpZ1F`mKGJ&w?;4$Qd5UcPHKb5x(pjz8f?kx>guI0u0p6R zo?O1P6kgl$be;jqL*xB1hU_>O+8U8R+KUG|qgiugG(A`IMPp1gFSHGIj*W~^E-o&%wzvB#Wg}0DikkX*K%Nc@ zZcp|trUI>+pm4EMGT;enpY<<7q-nFa_8gB|@M=Uv1k4$1?fojutigcKk5i?}!FL`m zvkHf0xn!Y?M!(!KC^@-fnuP5$vzFFKA{-c!GxXrTkK0vxbbm?)#|S7igaay& z6&kyF#BJ99vs{ww>(j!t zR6<_bXHt?aPYb~~pdjziE>h}wb_(So2|$I%V6_0UFwoOuz@ojct{&&O{$}{mmXn{pWV>{z)aaLI zUOa}^=U-hWBz)F27}3t*sBf20*h=t@-|@r|YauClXidyQq^IzrmRa*>x`ep7SLKzJOVn6TA3aKPuj8$BTnz$BGYzC7Z*%b0lME!z z-G}+U+>6qwp{IVl6=5Lh7LR#PQeQ_;npfgDE{HaS=T4*Sc@#W?M>ns6P7<7oT0T&< zyrD)3AHdY1oye2fRW(E)I^Y3qjR@T=fT*8<48t$+#>0CI48K!xObSVOX7!DYZ}OTC zz5)|R`*?qIcq1+CnzOU>R{&>JlJf1xnwlZJP=Tn5EP)A#l(H65!~4m~NwzCf{ z^z??mm<*QNFoMefs|1AtmEH^w(Kk`VwPAdm1}Y~F#|K+B&>3~xsK*|5g@Vgv#2d(Z zoH{u>>kCC7qzwYhX=7`v5x&V1vF$(XSvuC#Z?X5qlaz#_jF3K}q`UYMNz0f_@JpF# zU3YqF!at9FxYdH=64idp+9JH_TL2->#f#m3?QuM~Fk1Q&U7>XYA;1z|vMnsQ<$}5} zXp^c_8d_O}zk7ETX~VYCGd@?-me--aOw?up0IDj(d|Byi*3eAgd@Y4>MqtE2^fk2v&yUBysz!ot-* zj=}Y{)P{~(x%*KmFAMB1a&mHjZ_MAe0yOU1kDXmykiZ*j509RK)9+M(uD@K{8nY?> zT7->==VHK{aE7#c_1<@pAiC~LN}l)f_AYWias+cFp5Nx2qVVQ<21Z6gTG|&gB8a&I zDtFoE#NlAPwe^8!h3y5z+c|gc+#?kgzX(QY=pLW@%MJIJwuo##@xGQu!cEJg?am;$ zi|iX7_J4_UUJCfJ%OFDAKk%tm5$asm(9nQ4O&IV-s%ZsvrxZFmIyg8us7Kx6&&sXo z0r+6a(YZGSEF^!$!Xb?Cb+1~b(QlVBes+x+UK`=NU{cz8Z@b&Z-JVf?PkMlZ-2=2!bA zACcJ+xT{$`knVNUCy$8cIVCY5z#$}jjQK=O4ae2>==KyoKK}3?+U6e+b#^>2Hdtmw zD|&Wp_j`UGAwCG}slY~g?{OH$k`hLUy2MP)&aw6A064%XllHmJ^o(Q)s*A3Jwa=ZT zw^k;8Xq&nI`tLAwD)?~*Fz7DMrAs{rM+nmft;}IHF1#{QrZ`XGxAtUA&cOa#dmn{CwFfbM7)2W&Bd3NmUbS>B}gIG)SV!S!GeX^f$R7n zgY5M9j3TG*#E~{x0@r6W;EjQ#If8DIyB&DSpL2!X^@R7UmZxnLPPt;}GSa_%R$-+=E)5_|q z%~J2JpC83&5vq<&>y}jG9~z1lJzQXvgTRN&sN);(9h=kRmx!ER=+C2si0XM}c`*>| ztc3F{j6I*5Z5#du#}G|cX|Td?$i=>T^X4*29NZ5M*IjeKO=VZhXV1tDJL0psDym`g z?azI%`ZDn8Dk0%(FoQ6WE-3_A_({44oHyvIYib;#|6FJIgg&to-yhWC4FT=jO5q?+)rcrJxHYxzhmAn(}Nl zBwf7~7%5n7LCTURp~>BaApv1I+5rAM?Ek{d2#A=yu?eOZx>LbYV*tzytyNG~z6vhr zaH)maMr^$|_6!)Nf(0-uZ@s-MNpK71E0q%yHSeU1K1JAUv|L|J1|><@P&CX$-GAYv z0u})dj<}i{8BA0kFytER>ywAg^bHJjx>N2C*0}N^xw?1DcYRJ7rg&uKv>x2F9sb!) z;Tdd;{}<>)#>HKNzR&hjpDdFw5EC04n+J-DEpO;0@DdADayEZ37idp^3v@nQ%rvWh z@o$_icYHIma;W5lwRXfq@yO}%<0eJfH6H~uTD6{&1HJY3d@~TfUtO-^sOSr~`nJcC zAKmN%Msj;9N(bDj;jI|x6M(M`gL8l^256qKzwyw}5bSHMuOPIhrl*x=Dh>_PF|DgOkVuw=s#T}W6HLVtj7hg$_ralYZf6A@9eQ9; zIXpwn6iGW^FXi7#Hf$nUz#0+d4A z%uHkT02mjU+J)de1%^-Wu{c4(5$ZINM*CJ?B=4r8XN+6+x!S+ z^(cGLMj<@|{EmSk1*^HQkC@L&WtINcO}JkLovO-P~lPq9}*+`j2tql1j^}0YuTOcfqV8{Og9ZtoW}s z#qLNoMJ@v~RpaOFz5IXRt1>q~1XW1~>tPOv`wvXyQ#EWwgzrr^hf=ywG7$i4BSIOk z-<4F>i1$$dCQ9GQ*Yb5TV`1Xp68Kd{iwlo1*&SEZ5SRq1>z|s+=;rQ@2;47UxN|it zu5dnU`ZZ(nD?}=g6EQ!mKI`rm0FBk zrlv-N$pPQ|VZL~sp=iP6RqLaUFv9O@Gv8<#vW)@rq(TgwpOK^~{dy%_p&16Igj_5; z20cAJ>J?nO-tNi}ti3na@OO82VHzVge2ES(FR%0I!F-W!)1|?op}xgR)4{^OAyp z?ly)zSMGbVmQufA%JfLy=`>dipXA4ZfnHA_Td55R|Hw znv*L%d9tIxJ&*~LSFbtbE;NN{Tvv*2qu)Trg-6DYf&fIk&f~-y3?L-O;o#sHJ`p#S zMU%G$NlIq%ZBM}*DEf=f*-DOrYk+nWU%+!f>r^@Otw{!rFeR(|KG_Z5;KsOswc%8*y9 zbrYbXqWV-L1-FIdj=B$Az)X~?R`#FM1RuSe?Y zLEGEgrk$!eea^E{s_Zt?l1L@eC0qt31pp}r=$C{Its0klfG&Rm+WZ#`0j;Dhl69jdP3*aZgzN4@q05`UBGUU5+4jBIRdxmq<8s6wlWTJ?kvP)vX=st1#7xDcOO z5UCd-F*7=`yBPD!FPHs;UE~>lotepVWb@mwTL4*4qUxOieB?2g55cz{C~Yk%3_;=(u9MA)N1J zpnDE)`37eII4RP9dlc-}@c5{bt12dX!t-Zr4S9(8XKkT!h1kc?i*(`N z7kbihEA1CkYCyCo54hfwjJDBkp{ClG4L7ad;RKfP{f0*LWND2h4iA>i@d)NE%eUfpjvqvbZK zKia?|3>Q7T3Ei$_i}?Sp97K=@^Y-mq(~p){x*Mlz_Qt(qVo0Iva+!<_2L{hiFbF`! z3L-sI%}RTj^_MQL;*w*}esRXeT+0uNdZ^Z%PWKOBe?rjupS+J&ed2k=|1zq5A|r_? zcudorV(h`=MT7?$3X?D$9SV9|;D1Q~J@^#=_g+E&-)iH5<45pwp;Sbx1}UWDO*qd$ z2ZwGo=VcZod)aSAJ%rdyn+M7=@`Mo9co$ONm<)Jm5oMnTEa3+Vk-wz^|Z z!=JIQ4cp^%;4TD&g-L--?uIa=W^ZN&7g;U2wdiwt{DOihiXTO9)DaLq1EIiW4TZVY ziK3#SfY8tjD5S~nvWI!@6+}JvZbVK6v(?^M&cCfj=`m zDXx7ZSAiN!2j)h2Q02YjXD>O%EYZlxa7(XN3!mC?6*sB>?euc=?gs-JsaG#+v7TMiWjDaX&acHj6K{E}6uZYX`*WceG(fCnW%8wqs z0yjz@TCH$dK%ucn6}YZzSr0K5l|IOqM~0pdn@_3AYf^(;ew$I*tV-x|Yp>m({a zX+}V00Aaavl{sbjm(a!My)yFAbhdngkDHVNbJ^08O6|{I`}&!VTCY}U`v0N{tR)(Y z$X$W%+SJlg5ctP1BPan@1rZk$ES37kMhVxIl>5OOP!D@r(F~=VrBPJ(S3iUFutcgU zFDB`77Z;1+-td3_ZS&jQto6?GRJciWO@ z(I~}(TgNRg85qzyoe!2itlsn3*o;g}*w_R#2!XKKoW2hRo{H<5&qbm)Amf0%AQKd{ zWg{TV#)wtj6r8R3WP1$JoDG~uO;A-*dYk=LN|NC9Cy7FC@d`i1)%28XojFBl_`rPv z>RzHl$!pH;@-z|}T?ng3_7{{I>0;WD=n--zsC{LKK4$t9;kVwrzU4`mut2TKsRP_7IEC3FlKCW5O-T=MZ_c-gp18=UTBV33uS zm-j6$=5pCtN++TL;~!Ez#Q0xw0YClb&717}f!u6t1hAvvG^}O9jGUyh%sM05@{}PV zPCWsbH*)j}r9DyWUQ)RW^WjZYlrK=7rQA+SFhjwn?dSa@S<;Md0>wE0%6f*~q)(aV z>ZJ=1oV>VR%_*1ssMi_sOyO%1&e;V72EK+uAk1{t*?&d^sN2z_ZXh2EA!RNvFIN`m zC;OX#-&qiT($Az+Tx;9#w2-3k-zpxGFr@+EKdt!4N=oY9`uCiGM@tVT>u}-~X=&+P z^^!|qY4-|b{D)XTJ?d$3KtM>c5itvS@96RUdl_a9NP7s`ZO{V@2N{YuQ6Ln^xD4@- z<4Jxv@2Qq?O^&}5qq2o8&!PU2n5pwiIW&HL#3#1O@-^c32SJ^fj&TXD19?m%WxR@@xooAdpYztNKnx%#)) zWjBE4^k)M&eG{O&BKWx&W%B)kppHOh5JrJ;ZEtW z_kXt(mABu`150?)7`K5q$y1H~h%IPj1QGw(zohP=t9beDXMMS$rIqm-A=VeQn&~;! zwo2OaFZdpuLs+|GHPV>zY1z@1M8-%*hrCIKwt_^jI@usbQO(!93(%4Oq7MJPoF5$1g5gB6qd?gf z#2s>r2~FG<@GiF?z7YG{rJu1Jm}OQI{ioFbJtu#j{ktHJ+XRVt5vlhLP6c70V5tEo zkdl)NS!7g@lq8v-nR&8o2PdC`AhRZO$OT#deU1|trHmq`q@QhmjkyX?xKEp8?utdI zBw+rCbq8%?>zQWs7pn;xAX(gZSpq)+^dXGGu2hXAjd45D0=?svg3R8AEQWe4I?`ilfm-vr%bPH z!#c@kk!SE2Q1Q(FgwLGp6*FzFS`r6v>*3!D{5cShMCK zb4paVa`@zEuO`J7h16gO$;gbejb*|OB$fKrKEjKUKqM+6;x*J#Zbm)aUg*Y*WK!fU zw|7m4lmV6u9S}xnH~7P%2QQxkJfcgy z&`B$8ZC!Xl@4m9D3nkqw)%)w@kC_4pG0vX*#q9WA`;qsD{OM{T%Y&BK^)N`def<3! zfBhmFA0JmMv!n)##1FcNa z$z3nI`L_z0gRUUlRB>x-c3WFpYuL9CP+SGJA_+XLWL^QxDDaAq!aN*Eu>p;QnAUYC zyOc-Yz*=@f8c728~+)~vDNM~KyZgb zL0k;v<{PpDbsDj%_r_gI6e;ytn6LabcCH!vQm_2&Mrngf1ROmC%!5TA> zl1eSGaN#Ua7c|x^)LdKy*Cy)1?|Ne`QjO%OvLT5RY#0Yc6ro5jKtxl~d!=cr%U8&k zaTl%eaYV8*dXoOlY;HzSCMhWi1-wlHY!BGX>=1S(xC%SB*NwNtx-K*d(De{H6pMCX zKqTi;^_LgRfGb$KOcAzTnNPIaQo+FAiuSw@1-yo_v6_d@vxPY@ZYkD<%=%d@6a> zRLN8K1t3@&#e6mXv;^!OYdBzcdrDHWnVlWmCr=?;O)n?%!EK6A*h`YVXm{Gn=sKaL z+jPB{7|Aq(I%n_CDAx?D$b_X?V^X29^U&EKwmPm^HvNB{@vGN%f0&U~hI8z7`GY|C z)-D}Q*uDAdIyijVNIex0_4X9_5W{i;MP~_QO86rX=ZzL8+l*raZv-Ks`IawMc)A)is|dch?$qETiOW#q1Uk7gSR}zD z40N4_hGsb7N7TdXU>|>}q3}bxw_q#z!99k`3*IK0l9gmMfBAsE>#P{G_a&k~eE=I~pg!tEDr zLXw(f$&%1ZDxyqj@fIFI3czSw@o7|j! z!}d|Fye!ys;tC_R1fpFY3ZMnrPY&;8^AV_btU|zEq+Y%^rYbr~vf2xUejFZF!wco& z>WW#Ut*2)en%g)lU=t@#o;*Kqm|%}EsSyhb@qM9xD=IIaCM!FZAXft?4&+V0q)WO_ ztr=dmNQvm1CTyC0j!{rqxd0Xg`=ahz{@u+tMSvYye)J6kT{Br{;Vl%aq=ozhnTA9SY6gsD3M$a8EnUh4 z35hBW=9jLMIch!{;H8Ph1md!FAc-Njvi+0`;D{s_pt1UZVQe=?8VHBOs);N1Z#{6x ze$GNrfAlUSJTN|tTjr~b(W$_-{531+Q<}+^&o3-7DE&4mDR@pA3h<}68&uo?W((;X zKuZP>`Z2BNu>H2!WbQT@IFZ+_7DA6iH^KFUBM!aaG z;lm+7Oe|1S)%nK9GtoA^>lm-v{3gYS>fcm(^z5nWqsvse(>L7jpSv>Ml2JE`U1T@8 zX+5X%D!zV~zFtsMH$yBhQ5CUm8~b*_Kmz=+q@?5(Gzn8Fm~vmiph;#&Xv-dBaue;G zO@_mH2UV0e(2^cTgs5( zawPy=r_i!x8rR)e!eze3@10e+>v?y;hPAiV_X(-YbaZsY2)mqVE^qq0?^P>n=mOve z4^|W~2zH|rWf>J&5YA2bKoO4fx6BCva<>z#DQQJvKmbmX<@iE@Knny$cXeIqWkw8P z5F`?m2uijbw=OpLhK^)ru1Mcm$m=pXevq5I)oZ_f(v5TgdUUCpnWb@IEsn}n;zG=7 zD6-C@12zw=^W3AZUX`GzSeYLb`ad-ZOiWCc7`Su12bXS1P!53#x*h7|G9ojF#6e&F z;D=ZD;BqOb784P9sJAi6-ui$a*SL2NZ8&@1la2JgOk$yw&oVS%z&^WVM1c{^0n36h zJkDw^j~s>at|2Y@r9+qL)F4!wlKjQac5+(`e+W9bL(-e~g@K-du9&)EgPpJVq^Ji7 zpvCAw2PE>3efzH4RJwh4ti3oRYPsnNeDiw*6lL5UK3n}oI%ZRf;l%>EX&3wQ0&cF4 zKIze1IIiS5>tp)}B-c%cvm$u?f;217L6C#QRGR4%t%Uswkv?@aLK3~ITYok)fY=WBw zHrHxj76#~Px9z}qu4BfZ|=T;(XJy+2x^ELT|!K>We1iO0oLIvu4h`+5hwn zWW2;Q4wyXCv)}CQ8qqQIU4o-aO;huPN9ZvrQD4LQ?z~6aUyB-{#T0gnVzo1F->N++ zdLvFF35ilPj&8-LA|hV3wK4el`BBE6_8N*tdI59z0D%s9jX?riUG2MTSGSb%_~jAW z`Mu8FGNBpwUp=EkFhV{0>Br(r`|*4umAZCXc-@u_rkjsZpWw zz*)`B`L8Vb<>8hJ3lp@SsRJ*q!q!~cYt;1oxzLg&Q;GAgU>{08$qmE%=pPpsr}t3c z!m;4*Kx6i5Z=Yg#PcS@HfQ;=ETFY5hwuTr}|A9dtYwWG5saY*L2PWSfmyVfe9npTf zgI$DEk`)r)6|!7Dc3=qA>Umk{qn4!PGdd;jKl=IenNMRNvcR0nbgco!UOaieTFZi# z$@vuHmhRlOQZUu&nd1*hBu#0*;iDx6ON8u|4aA)UZJWjKK~r;m5_qpFD^d&C6Ri;_ z;l;)k-5V90Jm3ttqv^)3x#$JSkU#>Nih*UDrZ{AYYiPXcpM#m4AhkG^mA9x03;NK8 z`d%yq@d&N88nj)2Oar0Tf;SC$qX1RbbtNzgerVDKv+wLl)p?>)1`Y0|2j#e>i^}L@#^~SZ{WO{71T@D$PD}#itYu+gF~4?^h4smL4LU+` zs675`Y|d6;ny9Q6?jp0*fYhHpY&|>w9X~C$W$5JvqAQ(Wm&`!?!8}kn)cyPOt3N`E zbsztUXd=kD3L%NCG4}&G)r`ZXty~f0oaA<{vz^iSdHd;=`|&7F{}bPy&C9{ZHy8Bc z<;%++bgtWoB;c{0!u#4VI?+a4M`o>;Cmq-PWa>ry(=91uy)=tf^aHzqXgH zm0HSoH$OkqXULvX1Y&kJZ}h)Pr>>j>a&tuaz}PG36p*;*C!t%^KS#ta{bP7Cm9W%8 zyOj;zGm^)qc&6_uLc7mU`&~RbmGTOQg&cxVhrd--Z357q1fB0&+EV;cXrA+qAOAW( zh<2x;@x{?Kxj8xNiQl#-88H3;j~jcM0m>s|FoUfR6Z-)^3N%AfPOntx%0L{3AHfGE z!b|R+Ckeom8qZh^T3N6&>4BZlwZj{z)~qkrA9%Iqli#WGN3 zcM32*-NlRsSebZV04KbLKnZV7eStaxhecbam6QbcQlxB+9~B~SP0r=b^f`RW!3aHS z4_D_UVGAD+VB08JOI3UA^Sw4)n$Pr)X;lnbwVQTzY7t+qi)*OAsdim8;&n2(xt4VW zD_thlGf%nu`U)&{FXwp?g2A{L|TwY0W2ab?F+`b)4;B4U9C2SQs(gC!{%1HAEjjNYX2gq zH)NnBEAPZRHf_54$*rf6852}F9tmjZJ|JqCc>2(W2W~2p^bi!he(s8u8yTyr*7QM7 zIS2Ft;$y;N`ZvuL>RY%tM9bI3$+^axvMS>+J1|IuIzu_eNSVVU=MTn*qT=Nx2k`b! z{Pwa@hy8@eX@#)@CN8TGt6Ry%2UISi;<@m#d~}ZRH%F+iHl*D^xwk8bQmrp~tXC{< z?;37WcsC9YjRTlaqB4M2<>#@nVhHcuj`IgS z_>f@&)-^mib7=v~d)I_j`ntLmJKDZbiT8{* z?)zJBV%)cJ?rPvVp;=bn_klf4>*2m}{^)!;zisxbI&J<#`8hk@Fm~!DqMJeJ#Eu*% z224Ho0k3Al7L5_b9GJ7aCf5jl^5xM7W7PfcTO+pJ*|qXh~jJqAL=H$QymJJQ#1hf$i9 z^|%n)Mo^&I+S<*$L6d4E0=>WJ8_X=H)8eSoS;_0QgAZ$Vv-TR)V%zFVM ziv`1-g;eLQ9HJKg(d5h|8rIi}Y~SXt4vGk!9QQW2F8Z5{h=qgW7^K3)|M~7q*Y={t zkiq?s+lTi4bX8jrv{0=ziEXvu>Cnu|57&c%QCH6JRpBNXEBX0K2#<=(+!gQ5`Y^(cUD~$H-hIu1S!eXj?ms?Y?>krUf@TZtafytY+ab;y z>2FbDNZ=qIKky_B6ymG@)eNme<2HQus!4V+oFI$0&JAC_Woe}9%a?;W`JLkaXQSJ) zZN+D~pSnGwG%y_ZbjF=i+x-X1mNV6WJ*-!3X}ouD-Is!_*%Ib(D<4R+mzR?xyt-Oz z`??m|HU;~2PaWPu+UCqC$PKp-b2tAYcp22atL$iDZpO?2C( z^B42tf47YWXKXPl>lAUy+r8@p4~{srI7CZ3_nNhST=#+%sdR4v`J{!frSq2>x|(s{ zNVip0odRgbtr$;n54VWm#t$1W{cK@bAxX5RJ5Qbc@nc|7$k~6}E#Q&* z!Q0crT#3+@n-k>}LV4m6{ZJ9_ymoD&eT|(SkyE!>cFT2J>? z*|h0#TMU(wlX&LzBza)pd`21q8!+HSxNj>Ce)Zb>hsb79Ap+53b7sZVO~7BQofzh! zBfjbQf*Z-q_Z0i{lbF#CPntV3^OBjx#dNajyVXc86~^aGWZe;43p73I_`W4~lq+dB zgJZ(>IPw&2Bm=;IiT3MdWxH?qAOBy4_pHzLpKbHZG$-k&c(I+>Hn?r&3H)+1`&;+cPch*&9vDJzFRe!IN zJ>r47(CEP@Duj#%NS)TBqQh89G{VHmdTQ~U_of_^>fP=F*PQFOExGyv^Jh!OL?glm zPMGl6*jdRsGj{H572SG1*{I0+4+YI^KE4E>^0+F=KL9rVy9rkRQ9LOW@Ds#C7HdA- zRW}Wzw)A$B2O!6UR$<$K8npE$xAq)|)QD4Q%eXSXL5`K>`qDWV2?OsmXub{?h->?P zaqjRO(`VQwCnr4)>y6h+(XNzLF+6X=n z0Js&3=519%sJ})@c{wA+v9*AC+O%nLOJd{Box3TPx$&q?$^Kvop;aQ7!JsN3vV?M8 z-}Gjt>6kt6#ddnf@^UyhGoc~gKh$8z6c+SL(&=Rig(g^lOz%P4-m=rcHA=zfxmQbI z_(Ratrs(O?B36|en_0?TTSXy#5inzAc(jCW(h1@ceX=m`hN<_nCtTvhq+J znTR=IpkUx%>9qqF3ZS=ppaBD!Qhy;4MG&9CQ%KMxzz@^TTN)X3>{u+~bTHAIYrEQ& zQ}`f+Wd(XfG@JHH@${FN#_hj$IH5HA+pcWCX!htS6qqbSii(PSOt=5hfBK(j^8)K# z1{Nv{X8`(zb`UPe5w^M8x0N{>VaH+_`NZ1$8UeVn-8`gibT3;J0>2Plj%*RqGpu!V zNbN;7cgxhPOrB4^o1XDy>}p$x^u-19qin-Yl~13OChduaOeH; zx5841hm(&1TC6ELEl0~rx7nP{g^o#pkIGIC+w zFHVy&=8#(1bwO4u4lxqcgxCM-H$}AbKnyAV(Plm~px>uZNPt&LiV(^h)DCb-FED94 zVN=qAx}al0ym_qQMMQR&)_!3B{!Q~(ubY&e4i5~WypC!; z9~9*AN%6+?yR#*U0^dWPb@kr2w%~jAh%aIwMMcoZ%ZbZu-n`MSzgVL+PfzwtM<0Wd z9d&$od8&l)jw{BN21Z-xrU6VWwz|pFsP`kMU9>q$7#(OLC;vaka=ah@oZaY%68=~& z=Q*_FS&RYHGLV`N)}A@~l`)3m4>1sN@+=6|egS4%{Z0Rz36NQStA>4JbTonfuCKVg z?!{xfVGRmV=8G@n!k;>?eakzl-dwyL?2~@i6Z!MA`2xUX{Z$RpvCGJ6b20BE?;m>w zwxw7Rkz24W?MO3KptDZ=b-J$m3$3XyB+j);ye1$6`HBfSB+vggl!^<`go{vcy3BulF6_Yc4Go{O!8TRex4sZp^qee3hmeT zLqksMK00(%W)c!Bd4bDEh8J5_hN3a58y)Awhr40HI3bm+QtM|ChgePE?UEUr?uTeC zNmO!UsyMQXLIF-jqGlv`lJYF@!W9V-+l~foYH9&+;4KN6cz3F|da8f%3uT}Xaa3^@ zs3mC$N9u0NDotRVfO7@uWid^_$?Q7pG?}9hLZ;)K`Jt9rvxa{MZx}83B4qEAS9w-Q zcx>kXkZW4(+qbjb8=73g^lw2>4to2x(awZp#N6HvHU>(7Y|%Cd6=3X?77g`FhSi(P znOMC|aF2bC5ocPsJ5o+ai-0X8L{1AXz~b3;8x08jVq;_P4U)N#AaWZvY-rBJ%-OTo z|0h53VZ!gGO4Und(2Lp$$I!9( z&QoN6JO&=&*4xaE(m+BE9be{)JR5>P0FNN;vKg+{db$Y!S1Vtf%nWud^qFBkGB(0M z3%T{RaN&10<++QYcXt|oZ+tO1`Cen=t;VPIPGQp?PLB-}7mB!Emi|W62(QNiw=W;; zTIBbu38%k#?cTEIt@ZEYLFAxncMsHab)&w}{{a*#hwLuXwQ~zhF**@nSf1Q3Rhc^- zuJ%&y?QztIC#Wqa=rf#nVyS=pZmIJrTbi<0-FfA5x9XKVVmW+{tz(}*e|PKZ$Uid$ z+LR%n$d2|G6F>0}^8y`uxuo;#&INa014PtU*l8%u{sKJRqQSl9Hwj%iD=mV&u#lA{ZOc-MSKhpv*6NAB{_=7cM zq!fG`-cCqS99;Kth%-=#6d3oO9GPC;-ig2>0Ee$f`T#@`u|Cm-?|T_b5L6%{B0_@ohUNYg!`a7NnaQ1*zU>jwHIuS2 z>yGPZnZAqGlpmNM1f%sV{|t@)P_(%sL#T}Qtn%Lw@{=-)sGmNx@vsP9SqTqkM8JLA zf8HkcT*+$nUyhA!5(Bm6<>dja45WN?b>Yb-h$bAvxnDCk&n$3+9&t?XnF@=a4?N=a>3bOY? z4HW;sVvGj9yuyjw5B;ZnOA?8%q|F7e1gjVYyfC4j5syir=#TZfTVtfy$q7{dm?+7A zR|#BQr6n;55 zPFTvJSS&~9{GnvtR({|(aPuJnV3s@9$dGLb*g$t17kOA z+;Ai?AxwN08{24?Bw-8Ag$brSYM%62{UJlZEjG$DXMln2FFZ(?*ohnkJrAdx6F*7n z17kghcC@s-e0{QxfT*bEbIsY4KH_~ZgNut*k96AF+FrnlHU%vYk9Ut5)(6gpfiLP| zJ5-4XHl^Rx3-HxNHH zMwurNaK(K%f1bajv{V2X5PtR(-)jiiIrzD48syzY4GsDWZMx$0~>U_B3<(IRknk1uNr9Vv(S=cvg1nb1BK5cw2@7hZj6bICbG zJb-9_4ki7eCDltI)6AF3Y z)7QL6hCS|QLy$6tBg%M5KHU)}0E;0n^kItvTrh~v;t{X*6+IOqYEM2% z%XGmbg+Stejd`d)So9An17(Og^5LZ*LkGD>&?E^eC~(81L-ZUHXQa`53ffPHLV$?Z zU{a#sA()1cgkPHG?QS@)fd&_Wb_j&z0t&|68P8ymf*Ve=|J$e4Dox!o3;*kY`8U5& z2#4S)Y;=S>L6<2iN1Ok2Zowtb3Sk;C%`{&E=E&0)E^FiKm zL7~pyDmQteC3i?nE&Y0r>6mNz{}?*vC52t!IKKZ^6M&P1j`8@)P8f5bpipPJ=j0{Jx0W}RBQ1@j#?I? zw`GippAG1eE{Uc78U`>n*jH(>Evn3!oL(fTHCj*V)Q8HY1!aDWc+ZH(t2^|kpVZn1 z$!t90_FAMRNy+zgv#-<-KK*7#rCd-tXbC{c=Slj4|DsmOo_RXc0%`88$ zN)L0(S-6k%=<}1xr4$B|Z$Z9!!jetD z#l>n_{`R{uzv_ANq=-%YsFPh;FZr!9gQti5nrnUF1d(QKm;wvXBx*ndVMvQpc4Z?5 zoq%7D#a&kwYaUN^s@h3A3=pMkqnCA3S0E4zfjx6aM@OM^S4W}<@+@|w^gvRe{%Kd? zAAixiM14fCfVg=DV7wecRx+f(sc}9(zlE+SIHcdp(AGV_*3vBEI8@z#`UEj}?)y&5 z4A#2;*Qk*$m$R$ueU!DEenfsl%>DQYVMb7m-`bEwm zKj)^??1y^6-y$yW<-&YGGRqzp`uTn57hs!RxbpJSNy(_$fgyc2Y^yQo#9z-%N^hq5 zA=y0$bKqQIPJ!3V;e*m$=93kXdp}5DP&V^>*zr$Sj%V#;%N7wL z3?1O_4-bUG%n_dAzI>*C$KckB(GSGqZeO@-Z>itPRd)UGe)cY#icuN-NIZwfZrr%B z#S7gaoK3-~``v2@FvA@DyM}G%pc*YbG|PsHZ8^0UH)dvKt-~GPv*&Z9%3|(=yH1KU zWbf}vh_8MjyyTP9n`E`5z)SB7l9QhBo7U|pUbUlfhL}1RhK9tE&*)Z>iD@{)6KcYO zeaaAKy6d^Umpc(Q-oLW(vKX&6*(8LAEB$G9h=dS^bp%XNC=l`WIzv-l=Fh-r?`IV? zReEMmNZy#k-9&>_3I#BP8dkBrbWQJ3Oj=;1*8L{K<}XS`e+y}X-;7{60`{WS-8pNr zxuf#Km=V=_LD+-lHrAVUGrnlwScG&1ACl!|Ii)-TFdG6i2$5hkiS$4mJ{Nm-3pXWos zcj~KIq)p25j-YS7xSD@7ZOUs}jMQkC*?JhI+0hXoQKCL|f7d?$-Jc^qZCETY*?xV0 zK4d0BGPMefjmO5LH6)K4r3V`+j8lD&SJaM*Hm5NejKo=pYjvh+NX`RcSQnK%&BoTY zxU8(~)nO5oYI}1cGzQfKBjme)Ut))-)Ef5nDpJgqMMw&A` z%wQ-^d!e|H?SBXwenH0e3m5z^@vUBKtCirK_)`P%n}@BqI4db{nZiMy4dtToybU*J zMoH~t6BnZD9Uo%gLcGa8C>`#KnKJmpqe>FOv899+v(U6{SyLLX=%o0wAW#f5KJ5 zpoaP+v}wLBy(7$P7d0~A|6{)fKF~3n$|wPRGlbb{rb#de{fd(TTmC=^&BfxGTY1!< z%xI6IQ}fpI=|_9=<|x*U##UyegE##tGW(x<9Aw56pol=2Fb0jQGpw|zmtL_vUU+rs zH)e|cj=*RHE+($boEeq5*FJ6D??N&@^-1;*l1%ZP1w2RsX)qJQ#6i-*fSZ!+tTRH* z)NzE|aT|ONxYB5}VDVxnGkX}JbS869d0A%tv$5LHx8QFin~ffQQtb};;(x}3**o`XbMV=q*TkH0e8BmmJ|WI2W*d#xb+IPx7~WE_<8bnmNKi7=u6N5CNko+5gby zk~}MoSO1=8<@jk%H@Oqkx4_?vHzwC!5s~cpH{WgXY^lXp_gDP%YqCmt8ka$VKe)4Yq6vO}zlQ1R@0Y=`ZBxsoN_x5j3pb`;&co z@QEOQ69X1q1Psg0eo`D7=Kj{t#z$XBso8=4c{pNY<;=l|U(GMHwFCYENIY4=Wq2dJ zBu=;7S-73^kC4GBT=e*hN9xxeh$@rj-`FT9{%)I8+dc}RKo^5&nX>Q)OGE}Xe1$(F z?!8~1{75#-8p#b?6LSA~G&vh$&Ane4YC}!iuIXn0S45nIoC{jLU$X|H^8WZp=b~FW z&IaH6a~>?$<3}qt5sz7ZyXk6i%T9ymude_JkIaJU8+qNI>;r` zTAf!lGVFf|g8yf&P9JVTP!U;q)r8ccP`jTN40vBGT?y z5Db=^Z)vM$lTn7W2)Lwne`o;)CA04(54ytoK=+^Ura|_I&0N}4uprFw$>V;^OPr7I-N3$T=p+Gf^PRrB!>G;Lx>tQLPaA+*sJHxR2w7 zl$F!<%jT7uG z)jf!3T;-Jk4d7hNH3-G?C!VJw#1lj>H!a4dq~pNqlK^@8)O661dTqGbg&S_)PkdqvPaf1OiDvj0JBB~@dcp25b9US` z9qkAfLL4@^+9temB&>B(C++)`U=~fe;G(>V;=3GQ+uTYvP$> z(k*9x!IVm-@0NlC+kN{^i|7)Hj|`#Yb%E^u81ZvL5=*kd5nAE+p+LXWe|OFRg_Y|V z5TBI9&ZODQYncr;9O;g}X7>O^SdCtU8>xRp>{HGooes(sw-Tm7Fax`=;1{+wh2G_$r(yB;$|)Q z!7lxP()P&Bh@*7_UY`KSR4$cod`IkZf8Zsc%9l0$Z0UO zmQnCX=B#}z;U#FY+YN@DTPl?4@5c0{KSFM&a0S^MwJ(+yl%*d&XLO@q?q2hL=h~IqI$b30OG@xR|++T#-M2SsPJNc(%+i{o#%i4D*Z5f{_MV0BJ!9u_~>f z$BiCvn5Ip3Qj#0p#M>vJ!pS3yuYs?U_V@?3W;=ncHCatURRmv}On9aJIAqbWRhCfA z9tLPI{jm9?lgAlHGzkCWj9XOhqBW6E*Qoj_fBu>SZztj-r5{rSZdCqVb_m1e%ge5F z7bye)-6kS?()3|d#2c4`H_16+eL(K7%9&t!+F&;*#WY5^eyohZIwoZV7i4^F`F9+K z%aYDC=_#VevtRY5<9`wMEmRtTVxcVGdvFCFF%kem$+Rk;Lyr>yvqmxzM08aza{MT! z_e`eW^`AldAqY992t$sQUGgH^+~qOxppnzb zVNDF!p)ee%RsK@JBDZz2*Z*6)4)XCPHrH(FWZPJFqC8qw?uRa?bIH$fQEpmEEvRxN zGMv{*bt|Ul`x$yVb~yX3d5VA^5QyQj*U1Az9n#BYuX?NFKqSCeB>9bhM|#;6`6<*Po33#y!MofFTAc|Rl242k{5JT|F^<~GnOW0H ziV5gIT=~EhNlG%#=9dRXOrf%{fal@lL(yAF2wmZZu005RtwRmcWJnS;Sw4Xn#lOfl zB~rEFM}klPxz0wx3nqCnt~?yW2745I-aKHPRUU{dcoXiSqcDk+%>Y>0g3SO76dA`B zP8c`T@L{t%^Kx=tAr-0|@}egI^eF6N<`A9FL>SmA@0Q~fys%C~UCg^O`sBF2{5Vay zD$x?BnQw#w34}Xu^v3J|*~woy_Z*7Zb8CDT07Zowmqa?^quF1(Om9mXW+JOO+vH6$ zDbbDsryf4Wz(glp43r9P-uuCl{oX$Rtls5CJS?(`$$~fB{-SNV438!LUKR^DIS;#8 z3$Fd%fb`kLg7)&^hirb+ThY}8io}dD$2vo?%(%?j@UYq&)g zx?j^wE(VuJ4D|r3c}TPmFatzM`yT0>jJoUY#k@_Tmx-PUDUocDk={s7qN>q?g6_j= zcLLH}0Y$}y;I>qV=qMp!XL~NO`6J_$+*NXm(5{m8GxV*L-dGbPTITjto|*dTBt%(1 z2#$}?nx#wdk#rSUvUwETruz=RzlV$yM8oOYI2_`3=3}wbKNbDIOQ4WZT6cuf4R_qPP)}HM6^~KO#@a_LVB!gtj#e8=5uKb-7LT{_K;-f^9gwXOQ*sy}- z6_2D@mnK2uJi+MCbn)I$Nb+MR)yY7rxs`sT2|(1FP2YM?j}u6{D>*Si%_UoL7cW_Y z_&Fxz6ElUaw5378GzSJ(lKRHn14#l_B-+%K&m*JSuWvIniJ;>ov+d@-(U5ogxhB|Rn~)6jh7iwGn9p~<7=LKAkrC&3SJ04 zl(t+j^QdaS^~Z|L?m(Tm|I97ueXKZfp01((4U8W)vO4xoW^eO+*aaHoZ$objy@J$c zLEr*MkNOziaiQbLG(3ao*km1BXk^7McI$qIZ7tKi#{dbw`o68uIiCBx9v(Jpovt5p z&$#HXaRM=UZ<8j}5zG{9ZP=MzZm^mv3`h&9Hk{Jd(_wu=xeW!Bk%%UiA{uCOG$5c} zBvf3;UH80PXe`H;cL6U7eWw{48`DALWfNI%2G8ErgOB|^4eizV^E-8)uUzpRZ%<%6 zL^&)F@Nfmw^uMM=tT5Veb&BX|lSs43M4C@2gP8us;o(+G-!wC7T0`@cEvteTu%vC< z#=ssk<7@!skctLvw#D>~(;1{sT7TmUILEd!Zt<7d&qfP&W(@LwId^xYx$wsIYBS%> zOCsxFavMZ^DnfNhJu>`Qu-p_IoM_Qj| z93X-0Vg^pgJVU>|8HL3Dpw72jUYj6zgh~a$z!{r7bD`et{1VyKTDTTA+0r(r)6ZTa zb%hd~`c+GB7WqUPYgpz>(;l;i$?Y`FSU9T)q)UrO^;x$kU1-V?dqzU-@DfPxZI-#6 ztd%ZhTg8dEBBN}3{g_^u9fjrO&LB+kymfwgmQ{I$o@ihG;1(#QpJBOJ%mJ*%aPW6| zF?>zWVis-eg|T|p{5!h5w*%>)^aGb{X!3e16>(it9;AI#Vxz3K?Q?YNb}#a>D?2aS zam0aKs)LFqI&3Fb2Ww3Zh9&Qhr5xVK=*KM z8J1$j+vAx*p&h5ym6k4E9DvRCP`EyM-9-vrA{S3`{JP(WQpQv ztu9QuZ~<#&r^Z{A-;`;yv{xnnw@KbOi*5qAP-YdZ8k< z!eb9h?Ld=N7$i$M&5JY`gG%*rE3;gAdiU?Wuz-a%JWyO#HVXQ=Q*m*RfF0b8<6&jB zqugXkq}9i3ds{@FEs>I!k3s$!M%{9_O1cmecr*b5tX28G__(;VsTL9>n-Z}cwZ_6SK@Unp_Q(3wM=mGz_i!-o%14o+i3N9QfrUi6I^ zV%GX8BV;lW9sWyMw$NbF+v1=G-2mM*GupwVRH-F zd4W&yQ7-~16%`^+r@U7A)<-Q_)t%z7NUS{vfA+`+0 zjXjGiPji&8i>^+$>Xd69ZKhh`xz88;wwtF*-P1HH+4@;4&~qu+>J=6#E?IIEty1)J zvpfj^a$CwdSXonNU1by$bWa+%V9@LydeO8~qqB9xhUliOZqL~ZWz(z6tACW(+x86= zqX$!Az6>lxjtT`E7$Q33eM1p~O~WGU+i!&pa2;M)*^TrJ&c9Qp?NHhjPcA}JFf?Rn zbvkZEJBlshnDPNzXe@(82CwLMtfx{-Hgs%Psb5`Zaw56u9PWY&`Q9+5=(pt4fz#u@>Ed!q$-BW_Q;bF9vXp5(2I z%32YMsz#QfAmil(dhOQS14y1h#xL4mi)XnN^!v6x)#bjzE#{;FTK0a)sIybGs26#U z|11C$vQxM^VeQ-^^!&*DXa}I#fyl-;a6T>N=l6g7cpHGlay;-cSO_`i7&blQ@5o5Y zoO0oyXXBHa{HB;j=Ido$R?g>?7fjPz%iIt25*9d*?~B;kH$byNfmQ4RK&8*4qgj|U z%fk3-Q0*Bo?(D+Dk0-BT@6*J5{%bmBS%IeQms=Nn(IrPzbap?_#>cC^J-hXGq+!c_ zG@{1Qp z%TwqTLy%YZBmXB$zCCHItgTktye$sZ+1-(IZ^^dvI&gO2u={(S3d^K?OLjaGcxO{k zBv>UK_;}V8t~*7!5*KKQLRui!I^{xYO?tA?iMZ7K%wLCoR$yHF?oNlFC9iWgw;5~d z@5QmL_phAr`^z$nO8Z8s>1{!y)Srcnz2>luUhmCNd>q^0idkt*0-+u`Ogk+`jGDiV zDV0_`-yF=|xP+Z0l>>`e9%2jFCiJ_AI8*vi#E7kh>1E}|!@@d|;RdjCIoTG%EW#ds z<(zU>kglEV8S;mBCnK{6(+OGRz{oV)9C7_vLUdiN9D|HCDj1}w@pt<2(kg1~XVYSH z#iI7z9a>PMG&mcPz~@0q6Ss3!oMJQvlqb;kMTfa!s_o0|8!Nd8kC3ht@l#mT~WQjcfjH6H{ z=eY%gTKnEp_&o@|w2w)A-!3=Lq?P&CuZM(22`dK?VipP!^mXuBSfW-0X%KSaZ9_tb zzO;_V;|H*Da=yD%k8ErjO%iy96@uh(DNbNaB~pFtXI%$jFD5IeQ8_dL7jkmWKrWi| zY4n5`znWyFnd1i}sOswJmB7$tSAY49Sbo=~*w4>u4whjfA9mb0b;;rIu8Lh9hJD0O zy?Mg9KMs#azc3q$yWPI)cC@Lt;8j$p_B3Bt%fu< zw65xv^{YJI0s_8|f9**TKjbjdioGhc~2icobF2)As zZPnVl7Z;-cB3iWw7JJ^GoR)tmw z#Umi-b-rJIZRE&l{ZZVWYG|ksj^-Xxoo1XV?$-Tg`Ib2G=VPEer9u}uXm=@>aYDyo zs!)JL_c_OoU^U{*T}ziO+HYp+`V7{?7|gq9Rx>`%o<=|TV@2~g9zh*Owlsa+k5>U* zw%F|#k-il;az2p90f-$7diEr@s0@G3^EqneCo2_hhMiykg(m&nqg?VlE@EWg4U9>S z1*5jnp@r~b6I07%`F|<-!l3zBh9Clkk+F0X#F3uj`a>Goc)rW&z0v2Hifg}0sCk!) zdOQ*y+nbtwqHlxe9={Nvt@@uw^ICMVucUp4=L>iGdZjM3>d}bFiAAtWwDNY7@EJ2_ z3a(svqvZ>Lgz6Eo!H2>LB;WY^_mRRuRBMIXm^a8^K-9TRvpH4JUOPCklaH>`T0a~= z0I?R}@q$;_?k(ZE)*EjkQjDvxvQZO}2yh#*_hm@&n>7M?KpUON-8+w$w;H(Sin3Qu zUsF!Rt1>z1E9vwM_VuN+IXu3bm6cbJs?K_;TnX=Uvrxh6ilSh*rFGzwJEIS(aybiM+n}^T;u5l8g6vFnI!o4&fn1oQ*9u9T9c?GH;_b2m`{pjP8QL zyxs?|4NyjwC@aUKRALNS4;V@GoX*n*@0gl%@>cF_=-Q|y9ERVYpvE0ah2@yr{_($zd=#7%|Wv|2gPJ%Dr8f z^q5uAqTwryw1gC%D{dxb+TYZv-K&0%2g>)$vfNN3Dx2g`BNhzYGrB?_PN-C+ONXWS zyJJNJujzPOa4D8Nne&vtZ(ATC%)A*MB+wETyBbaz$Ye9hY>OQ z-3UoKxP4E?>zU*Xq7MoGfE@GZh<&!>Z)V5H?lT; z3riX}9LXa)CwaYha^vCWpM-NZ`*pU;b8NkSp!GTFC4y32rggB2$>+!U&)khklolQL zplSX70T&7m-M1a}_%}JxqL|6dJT^b3Fb(JP`Tu@}XGN{kO*l^L`StN|iEHs3q&3M0 zR|ws@MA|HTedLs&zH>xx9TRVD@}tb&Ii@o)MESHg#ZS!1)Do+S8Erw(^~v^Yq)s&e zlbz5Z`qfJKd1=*VvF61{F8?lQx#ah!FtMI|y93XnvVx~em;AhEy6a}qY_qdYtBQDB zGR{o5IwsfL#=So<#ERZ_hfKEJKX1ho1%AgAqZ5zN1^ze&J?11gdSSr&vk@e-@2MHA z&XEUJY=J8{<{)nCkFs^!9r1QU%PA z1GHW;$(K}au@=tkX)2@;7k;!Z0@hxenanVy+HV%)-Y)dH`=Hxyu8J|n3@NOW-zS{X zNJh~Q9#dL2rtNrYV&XAHxVqQ%yQ$F*N)gPbTncWNZ%1@6jqS}kJvZ?B>*Yq|*?p~h zn6Y@qoavt5<4$>=y?Sh%2zm3*h=!llB{S^rcPefmXVrTab;TV=GBRD4ggS%aU8`ImdX~V`^Cq;Bq(RP0B**UHW#|T+yaz!ZvQ>R96YQi=5iOZOi zP{G`T7K&TgI;+Ae_uq%<-2IoZgo>ESNT=A*Ir$XTQj#xTd<^%F%X6*U_{aKpUg$c{ zXJ(#69Ly-R|CQ`}|UW zD^U-#AAAWc4i-}K7e$87O0C8ou+I;-9#lor3U-0yy6(`hkzp$7ov)Q8^%F(?z>ZhR z$Hb_-+Cq=_BkhkdduJT=l!O^(d|FVj8(f7KNG1)*^ziBP4oj?{toc{ zYA+}dRlLRqAh+)N8OQFowRn8#z3qx-4H&!zXqp{cA_$a#FBuigOp?SW3gfs8)Ydp> zrIF^2om?g4 z8{k^wBSTWjf1#mvtFPh)-fr<-JN6{ZUVGx0NnmS{4t^D7QC;Xdv-a89TW8RqcuVQ) zwEkz;U~?-@-t|&rXT7+QppNg^sg(*7Q@LT20!e;ZmRig+L*0L<$)|*L18|>uYl;}vG{19 zh;c3v{X`Gng}o3%unh(mm^87QyG-)n$6413#_Vq=8}8BUIJ#jE3u=p zW(->O+xOiqMFUtv#%t&cwQ5mw zZtg`h>b27zA1TgU2@Ir>mrMb1T5?y9A@vxRt9ikD!nN9w2mWkp*e?)Lc4&?7FcKWA z>__~t2S`Ix({iZ0;eAW)DO5?8dGqc=ItIKpZ`w5#>b3bT7v_eqv!Zay?m07A@XrR` z=Jf&WEFvmu34}z(UQg%P@5AcoV8Zw&K!Rc~*5XY?Qw;pCy`>S#$2aMEWt-~e>xkD>39evVj)hw$ftefEs}ax5^=1@H}C zr&leu!EJb=@JQz^c|^aJ=NGVyxUOHOtE2M{WOQyXG)0~TYpoxg)EpUyzN-fQPEJJ+ zaac1`@Z5{<$T^AS6v|)Tuk4v8K78r7mP!HbPFC<(D1s9nzchT3;e`uTOq zII{CHvd=0QTB_FM_Ag()v^&W?0Pcs=rsL(lhAZqU*^EzMz9ie$!2)@D+#diw1x-bR>tJ4 zXO?*~B;oslw3f?PZ?-Jn@@9$r_;T^(lpoB{_J=NWJ6N{^D*KNSF>L_H##uNo2LS4| zIm!7)tb2##q1VaLX0KCI;^FwtTpEoq4?)KTElQ_fy&dODi*fCmy?tfWN}O|&mozWF zMU8!NWrhtH2k&=@$L!r6V16Upn5D{$5BWztyQyFvcoi zV08MS0<6xpdt`q?_kCG6zYKYwFui}-ICIa|8|Dq`0bhc+js*#+c$=Mr;|6xig3<+W z;p_--blFO#WWe1(oFZ^IMJYOBdk1Baf}4|7H@PDh1qiBUl2Y@3naPgievOm0ucuAp z_3{UQ^s#d1_Xy#5ufsSGGx1v?$gUz_Jp|aRmuq#4{cQYRAGDXxK8gNB$x@;W;dQ7d=sNDB(h!yi-iYwkFTL(xwIhR0c;M9t ziN#O_R3U*f7v%|%+N&#R z*IcwrO3Nnt6s2BW0Md&F*4vPw=bE!j(@1mvy@}WH8VKO*mrq+;6A-yEi?n=z0kUU` z@-tZ-8-2H-q*pUA7(M9W2~v*T!;y0Do$`IrVbV0dAdNox`p6l=;H+4xvuD$R+^bf{ z)L&N2T5#Q2yrHnLam)P0t{3>xYTh+eHRR1&8A3kx6W<7 z$(C2IXfor)i}{-9Q5RY-`q5qSXacfrc(O03*N#jF`10CRDwfFM@RkAawv?!3y5%vh zo%EqBrH~9|&j~$LIa2WxD=q(t&nB&V*LTV2#8tZ$sWuZWk(Yl3b0uks0vsj4J^h>k zM0YbtaWa3+3Z84Aup!+F(?w~MIZNKa;iG%LetJ5eyl(T39+NlrY8v%S%>AorpMYwT zul93H3giL~6|Fibu%n&h^;g9dxuD+M@kZ4EoqkL=cSJyf5iVom)2)2ZqZNW`M8~tA z*G;qas7boYLd<3p-`&E}DX)IOa0w^pXB^3?>bTHJF4SgyVLQw-* zd#3DO#1hU_%DEo7JnTK8i

UTetQ1e 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 P0Y55=nhGU1A3ysK$n%~w literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/test_colorbar.py b/lib/matplotlib/tests/test_colorbar.py index 3932177565c5..a2b8abf9c112 100644 --- a/lib/matplotlib/tests/test_colorbar.py +++ b/lib/matplotlib/tests/test_colorbar.py @@ -581,3 +581,18 @@ def test_colorbar_int(clim): im = ax.imshow([[*map(np.int16, clim)]]) fig.colorbar(im) assert (im.norm.vmin, im.norm.vmax) == clim + + +@image_comparison( + baseline_images=['colorbar_norms'], extensions=['png']) +def test_cbar_norms(): + # Test colormaps with different norms + norms = [mcolors.Normalize(vmin=-1, vmax=2), + mcolors.BoundaryNorm(boundaries=[-1, 0, 1], ncolors=4), + mcolors.LogNorm(vmin=1, vmax=1e4), + mcolors.PowerNorm(gamma=0.2, vmin=0.1, vmax=0.6), + mcolors.SymLogNorm(1, vmin=-10, vmax=10), + mcolors.TwoSlopeNorm(1, vmin=0, vmax=2)] + fig, axs = plt.subplots(ncols=len(norms), constrained_layout=True) + for ax, norm in zip(axs, norms): + fig.colorbar(cm.ScalarMappable(norm=norm, cmap='viridis'), cax=ax, extend='both') From 11e3464e11c67428b5458126bf41f5126f9c4a24 Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Wed, 29 Jan 2020 19:54:24 -0800 Subject: [PATCH 3/4] FIX: contouring --- lib/matplotlib/colorbar.py | 3 +-- lib/matplotlib/tests/test_colorbar.py | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/matplotlib/colorbar.py b/lib/matplotlib/colorbar.py index e04c94610c1a..68d5c507479f 100644 --- a/lib/matplotlib/colorbar.py +++ b/lib/matplotlib/colorbar.py @@ -585,8 +585,7 @@ def _use_auto_colorbar_locator(self): one. (check is used twice so factored out here...) """ contouring = self.boundaries is not None and self.spacing == 'uniform' - return (type(self.norm) in [colors.Normalize, colors.LogNorm] - and not contouring) + return (type(self.norm) in [colors.Normalize, colors.LogNorm]) def _reset_locator_formatter_scale(self): """ diff --git a/lib/matplotlib/tests/test_colorbar.py b/lib/matplotlib/tests/test_colorbar.py index a2b8abf9c112..7c6a9100843f 100644 --- a/lib/matplotlib/tests/test_colorbar.py +++ b/lib/matplotlib/tests/test_colorbar.py @@ -373,7 +373,6 @@ def test_colorbar_get_ticks(): data = np.arange(1200).reshape(30, 40) levels = [0, 200, 400, 600, 800, 1000, 1200] - plt.subplot() plt.contourf(data, levels=levels) # testing getter for user set ticks From 3b32e1693622d197f3b51e0ccc72965e0f760c5e Mon Sep 17 00:00:00 2001 From: Jody Klymak Date: Wed, 29 Jan 2020 21:09:16 -0800 Subject: [PATCH 4/4] FIX: contouring --- lib/matplotlib/colorbar.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/colorbar.py b/lib/matplotlib/colorbar.py index 68d5c507479f..ec37014a74be 100644 --- a/lib/matplotlib/colorbar.py +++ b/lib/matplotlib/colorbar.py @@ -584,7 +584,7 @@ def _use_auto_colorbar_locator(self): Return if we should use an adjustable tick locator or a fixed one. (check is used twice so factored out here...) """ - contouring = self.boundaries is not None and self.spacing == 'uniform' + # contouring = self.boundaries is not None and self.spacing == 'uniform' return (type(self.norm) in [colors.Normalize, colors.LogNorm]) def _reset_locator_formatter_scale(self):