From f5b6f2d0f7628302be8ca207d8cbcc328b7b9d79 Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Mon, 22 Jun 2015 07:21:36 +0100 Subject: [PATCH 1/2] update docs for scRGB --- doc/images/interconvert.png | Bin 26322 -> 27924 bytes doc/images/interconvert.svg | 194 +++++++++++++++++++++++++----------- libvips/colour/colour.c | 20 +++- 3 files changed, 154 insertions(+), 60 deletions(-) diff --git a/doc/images/interconvert.png b/doc/images/interconvert.png index bc98d461178640ece6845fc8898a6c3c42e75694..fc9f8e51fc2eabe068247fe2a27e745788405dec 100644 GIT binary patch literal 27924 zcmXtf1z6MH_y1rp1`HV8FiN_+JESB9>6DZZlqt2*-69>5N~=i2=uo<)LrRd*sKkGM zzW*Q3Gq&B`_r2$wdv3j6=foQ5YZ4LA5dZ)HqK8^)MgRad4(9V;FbMOX@=1ap<_*VB z<)H}}^A`kmiotxx_tAQSDJPo$_rg-)%7tSJY5mpB{f)h!`UluQcLoFm1PHi!dH6Zn z`#1}DKX=LfB}WGUzyJ@`luh7yhxq|;6ZLsisO1zP3qF3Sf$ARr`D(5h_d6rc7_K;0 zhd|2hMrtUfx}ut`vI!0)bl+6z!#OcB0t!xvNLl?76#8w&iF^vNa`;rVYd72Fc(vol za{B04wy4XPAw!j?qLEDq6+}z?y2FKjHv|C^uhK#Wpn>+a0*UB_6}Eeo?WZjbT9xVEsS5veQUv zr1!D9-M{KuBjkxSxLkO5;d^=VC_OwuX5<=)(ynDuXYK;lr*aXMGcmXfL6DJsouX44 z8zcp0C+{$(jCqcotZg7w9*1Y0FoKY|GL$@Ik*LPFCg7{98O;h7@r=RC8+Mw^bMq?_lgTIdUs`zJ_2Sj8MTh3Za*(~6Q1Abw`9-XmFOr220wV<8 z+WjT=nfH4%4Rn4+$0i5I9rM_L114~Mu)mn!zUTO-Y>N)Vr0N9r0%5aCd{up*X!DXC z(;8rTo>pQ;lZH?g*)?KI{9m)$gOd0G730)K#JhykUz zqwRlk#+JIye4#@1$c1YuLV`X5-JM}k2NLc!E%mOlt`|x|Xj@)|wtq%r4@hKt1-3#G zDnb2|BaSSe@f#>4e?~I1A^3`zd}ar*AO7EYi!p=KAh zgiN(fPb(&p7E!a zsuW|>v3z(TfpY*vB4ju3r6>*4{<8WoEreJ0aDQ^5dIX+ebd8&E5mG5E09!u=OvX4k z;~}lV@;dCqu_ZJ(EB!iK<~}?rq!azP7oXiC_|26}99UbNJM3yKn(uBzJ7fX`TDE?z z(0AGQR_liAYG_{pE!I*Pb#_SZ_Djt*O!G3P=5VEXqGJl@T%coBuwXJAnf zTS%5X;<;8C-+M$QA{AAolpDs}va4cFFryug@Fl{oBxC?}z;JFM(*q|&Yn(#3Nb!f$(A<(Rc9-TuVnZ9B{!b}e!jy($&xoJTrt~TM z;E*7xDtRU7ANT~00^||ek;O6Nu2VSU`uS)b{Rb{9GG3+SJB*Hi33p*RG(h>ae3WTb zb3s1;<)cFVTT(VxQCDcZ#4}bbm{3ao-z(9lCl0N|3`6Bh>d#)NF8YAnfvH#MWwOCi zN+FWHye?iTBG6zD(04+<#gn5g`8A3etDcoY{~9TblSL#)qN_QxPzk}oVrFaS8v#^m zOPsf1lUPM!Np@F3UT8R2**S|}^W$8CRBEXm`X`K0Z78c!JPo66UyK%lDO?h7Z@`X@ zql(owjJwTJHV4bubpgi$dz*nr;ys0-1zv`R%jk>#>3Qn90{JJ;4=DEeE!JP4Vd=@t zyJ7m#3NS$7q383ZCKop&vR21In&2%EckrM3)tj8UF8%N)pJ+C>dMmQCBXyVy1ESH? z8Ip|9CzKpy(2_Yb(&4HMQ!f53`|q?g0k^AnrdROZz>WG&sy#hw3y^M4!^$cfv;=N@ zA|ZxbAdP42h&p1L%GPW{wb|E;L8kP0qlj4(lKigN8`K@0SR=$mGv^wv@T{bAC7Q4S~X+m`ntV6wSSH zMf2n99NCx9-NOXqwwLfV0nH0t(Uy*yO7e&OJ>=#@?Icpl7yjn;gv8$AC%#3kgOmb{ z-rcr;?f-&Y?N5yoHT)f%vo-5nD-k5fH7r}<(bEI_m}NknEsiAPRq6Qm?0U3Ro&{le z358>gxJu#Go8542_RK!ga>%#k3Jo?2rZ>ACf(N3rl4}zWSi_)#g3DEp`_D!w$*{s5 zl+eSRc{mVh>3V0vitk^_9@LxFfI1Y`)`g0vW4ZBuG)~<5?|>HM6AajiBbe)v?HNnA zB^wo?-Qxr&9M)dl#Wm>Xz^r-f=RdLUVKNQ3nO%i?6M%R`!{)OR9P?JZoC?dk$Ks;) z7Yf&RBJB&rMsi3~l-fGp*R@Bi4FXAa&@6tS_Jk3aK5C|+%H&lx@XY*6LZ`B_$?YE7 z%YnWWg;ye@Ig*?>6TG{$)6>Jk`ES!zli~?2ltOQ1ViW1N%&v2+Ti4&_>Wod6uv6Ya zHopNowof@?B^@Z0JcLK`d>A_ApRQPbKuT8>EfLYI0gY}EiAs;w>t7r{dtri-+@=Kv zzgr*gxRQ`JpektQ%cLYZ#F{ik9z)$m-dbFBlEpgvMsSBy^eHm?bjQnPiMUQhq;Tj+ zq0h$q4!^5A9DOfu8IU7Ex}Up-=?*q|>1mlz%wzSAykYpYn*X@Qa?9<{@-+GE_OSoz zr|2y=x9wGdLHtkqL|(A>-zrHNH7qBSN52Etn2MLloQc}7cqNgV5(c=!&b}32>5dYc z5S;xx6Mpsf^Bs>!G8)Bo!>x0RUXpEkw}JOuFE}%`_+r@LU`UJ_-{|^h=18lP2PECg zE$8}=IF~+$o;W1sDd>Ik8=vf5W1f!zhxPX2cZB5Q{GbDskoM+!PqjJgB+b;sd&g5n zTDD~r@#ou?B(`0+$!=_VQ^ zWZ>Be2R!`_qp2}tZ5;#I@Jew*BY^6i=mZ0#1-;Co){Y<*I=GP5S%?zN7Lh;+**Y5z`ztT9^VbkBujL%^c*d(0&HOwDf8%oW?rH}+mIg+< zt2MuaIev%U-jgb`WJJBtK>|&8z+iH^gMeyCU>BoWG|cML+IJ08GT9DZ_%gI3j;Vj3cO(s-kOni>es;%JSwY zc3v8+p5sa^8PUa-@=3)hL*s^|Yoq2vBd%%~vR+8u&_PJ_OjrH!UM^s2jM8A=a7%PO zAxS@UI^dcjvXBGQj-hr@GgD*rMcK(L zx4_DgfVar5{vGdUEZ*u!#>P55Zr2jh-xC~f(k1(JdOd`=bDk5j^3_C^^#UKL{^3?L z9g9QxqttOU$D|WRFI?UAU&BW;;MMXUd)}8~uXBO0P%0~HxwFkdt!VaQnUeI8f-TW>l!+Qd{ zgkRq-I}?OO6^Xi^jaVsH5&uN`Vh*GK-DcU6beV1wqrZ9NQst+(YJTLw;|U~(;W_O~ zBG$BqmS1u1#$)*5xYTN=oUwggz8TKZ5AIx9D0sC5&r~y^NaN=m+{HOH z@K)wY|BBh?57Ou^A+1X#b~auEh#qSLC&RF+-6l5-|Kp1Njatmh@?}ljM{3G@>O-dn zDp1*AiTd##w1t+LafyEp!iZp}cwCvAQb^KR_J^cWh^s0SYNr>J68 z2oS<=Y2-WvrF-)-`CYE9L$!Y=crk zA@9&JBTeqa)MUimcoD8~s36$I_2+p+N zSh4)9VMdXC^rVn1R@I4zPgl(0?(9(vNo4JK4|2Ttwe%d%_+wr#6>@qcu9A??`SmDPZXXi4kKWphOYR5|tfNB0*4c_;X z(4KbVRp&~l8<&$5zK*k~t*z8ZVz2iwqm%F)k~B1Q!iK|(PA)Z!r#f&i$SDVvdPNip z)f~t%*B3xND2r9XvA1~EUusXeMU9HHl4bLu)VxaS51e=Jtl3J14YCb0PfYd7AZu)& z^bfy`GlgVHblvoY0qE1sPvFO{ucSty=B>=(q19o!f>sY8{;Do zfIJ8YlAZmkf9!mJf4i?g^~qF+I-xL!_J^pg?T}O{SkfMgkTA1w+BHq>EV4kBK)0jKaa${h5LRjpCK)yna$Doz4KR9)%W78*JW4V zA-*k1J5pFG3njVc)VtZ=clk5=K1WWo39vXYV$%-vFO`)nR(Ar%KGfd$eCV#HiMaUE3vC4EZvi8j< z(%&rR1eqT)AyzigpnhP4aYGtH5GSV?E$udi!hqUy5$Qzwv)gz- zz@}Qr?|sf%iWm9{?q?n{7On#F6VmKy)VQ4|;2sk3G{0!qBCCzE=eXMi#eL+E3Qvx}(`YrfHWYU+T8O|O)!NooSBm{E!9p~jD_q%Nxl%$T?K9@+ZtKJoPom0MnvWj|=pZtTuO%f-)Ysa4dH4*C+*~S)2f09GGx9Hio;~pDQ`I;_tN~?dRONZ1AUJ#jm@c0?|x)lK-+HP5&1azmUb^V`O>~ zS%KSq2$>k&%kRYSsgT?dx05jNhcl#tOYCY=l;^}N*}3pT(>gYCzI-+n z4_IJRBipDJ(C@Ug5DSr-qR%^RE5U}P; zD%AP=f#%=y;=5XFx!Wc0L%Gm`Tq3%4Nq?>*&PO}*lO-oXhr%+RtKWtzxzcjQx2rA|MZ31x>MW;DOt$rWP~LTDU)H{=vZDs`JS zzx-L(H&>hJF`5H!bW?S$vk}wMX1yJi{QY8#VeE~-!6MALx8Q<1b%+B4WhhDZeO3uB zqFRrQ0gowvySLGBqL%}C;?-KLch*3^Rzx|j(QdG3ZpcAFs$Wor^w0QpCxc9>3vx@_ z--i$Vw6EjC8c?}C^YJRKiR8}V6)-sC7jlJ$leCOzIW(DQkSH6nWAkP_E@05mrLV>Y zv4t^nBz=7VgItRBdKoX=&6zApMF-OZVPqkRk?}7!GU&y=^ddSQ(Q^+Vm>SN_SsN^Q zbPS5+KhdXp{eILJqr2IB!)`-{y}p!_5vYAMWsydA`NhPEpX2$efH}Ss!UlM}RGIa} z?U|{i`dlL7J;g^ghqqecD1`-VIXq7#T{A6)^pzMTc{{I1)oI*kHs5D1-`#;;s~PbJ za^ji`NSFnLTk?3;s-9h{3R!`Too)+F#bBxCP&eoT2|cumc@9h5lP|tch6YK}zq9|K zUWg($*-r21Bl*pwW$GFAVQ4F=ZxDfH6lABZ=~=6Jb~zRtm*9d_tS-YGCyg+Ibedze zN1CVYxi~&ypWEP6!z&JxWKwhL6h}P_*z;AqvDNdOdX>nG<7Ns~{_Jh}1TS-&q6dMM zNfdT#v#<JG*5K4^ z|8k4)VQJDV#g$OGPeh-)HCWp`E0l!f6YranV!aMV{G1Dc^ZMd|aamzJ5PhfaJ*^Sb z!eKhsdx#aW*`++>u;H#mhdomnBkHJ4--qzGq?0o;OL1%s&?ZDG*bxSuP;#OvwLymX zX6WoTiU2e^ak#N!ur+#z1!+tS7ZK>znaJrx`#REr{9>zf+I@ojf^b)3!^(NYarIpv zSuAdKb`!ERe`vcIpD$34?5MKKqw(IWw(r7b_ZfbJa5;>{b zHS|Ye##akCYuNL)xTeIbo&$A*`LG{jglCRm-F%3o9(UXt?o;#Q5VF`8DIn#3dkF*j zlP!LET*`F)82>hJpdw&Q3G5Kj336p2CX~Trz5{GI@(2E9vq4`2eM)6FLlyC9kXrpm zTFuys*d=|Ib#S;BX?y6mk4-IQk-k8?Tb~J8mU5&Gz!OTtle#QB1*?>*MAVU9P%>%q zd8e5$6kyvZf8(Y8k#mL9sdV!U>kX5|9g*l93LTg?uee1#{kk`^JH?Twzm0?@ehbw8 z9=VT_1@{tG22(t!3w!(3Af=MsNDQr_dA${)B}^F>hs&gl6R*uqN#+JM;hRA@^u?S$ z9OCukZLqb1G6t*mWsD~pB{36!;}CQ#8v!&Xsno5Yr&wI`48JTrkm+8ILc4HEO*1`T z$sm~`Eo)UQey*$7h`nQMr>@yZIPr>FR{;=A{`F-x17(mUeaJpoQ%1G5?i7jD(7Iu& zrbiK5+QUi|78ealUEY!Dk>_r(B^V^kXav4g-7d}|Fd1K~5eYly0C$3weW6)6Hc!^8 zqn*sODzVKz^v)VI+c2MxJ)QriqHEk9O*8uVfk_NUdmT`ZAY}UmW7wFg4+9Pd!i5U% z(#>zCbsp914yA^e(J3WWEXHcA3$Aw!o&F&E2LNMLk^172{VgT;AvGL5_3||xvrUen zZ^;E;m&C+ep#oES4Gpk>q@Wjc0TtskefQQ|&oixA8)T+b4SanyOalMn2_K{{kd(ub z(TGrfe?42Z?I6j%xb#0U=W_}%_gfTd*i~oRONn5rgfA1fj6{-sVk#s>+$x1EG3Laa zFrdAd8jH5_ef-2OzSB(-25DDaCRH@5TQDb%Md6wQZisLe%&Gp-3nn7%r1%L14UMoj zc`&udt@o-4LjUm-+yNh8nIH8&V}78}=_CBdFsM0@e!v=p{#@qxF=(vBJ~1#C_P=6Q zDCzk*q6YUpPSz&w7q%_j|0+jEV7nlczfkodQ%|t}!Ts-{Gpc;@Kixc(8B)fE;8_3l z59=ZITe5z}9|L6h-*ZMRZc#L&BgBWRK3JXV1ON40iakwcPx1Lk$ zv0bni!{x_&R<}lrv6QAKf6RZxMCLm}AF4_Z4`m)Org-iP)qkaAI@2VEm1SQNf7H7; zwIlwO@!(zoE1-T`X<`2-4UYyECuuej2R5zXKlUe0d$rQToT8yve}_ zQ@6aW!EGSLH2y4R)8Id6oC;JZLelCCYq(8168<|0%s7nuHGb=Kib%#E^W1|46>~N+4+bp7|Kyi9}jM`vgD- z0blmg19q#T{3Hc#jH4`SM!X{?n3JMM#Kf0kL*V>ge?kJM z>CK~Q-cuc9iGjdFh}TUpIs5}oWjh(ycquA22cmm0gU8rPglIjefv-W#9jg#)nBsi} z&l3Y)4%-Tr_v@*~=M7d^cfBhwcK&DeUtuE>&JzUJ*ur(y>*e7Bz7zadf7n&x{e482 zLq6!^a<15?3m#U2Lgx__E}wwOVL?lIiQIgumZa#*9~C-{Tgrc)ti60gsXw zFTE(9PU1G;Z`%7h*o+$Esh?&3Vj5k^^OU(9Ltz#IrJYk63DH2bOnp0KQ0Jf7i$Buf zjG+Qi@!N@XKUcyk#(PV7*UP%jbe>ji3@TlJP+$n@eTeA9ds3z_!x;S;L$oIQB|dDNcLGKlvI-=1n``+I=PvXf z*cZqptAP8C)EKxLqo%!tl!OYi{F?+;Y|V+QDIrDA(XD$nYwJ=s`;K77R^GCeE`0u_e8 zY=G|Kj!PC>`5$}$CVPs$xR%106{MYt` zu0%?Vr{NnstToVCD6)34{(yO*34e7F*HQ&$m^gdUQV;U1|!XJA|jm9o>)p;KLV%s zEMv3>=EC`Yd7_``K%=$2p~+!$VC!hrBq~x(bo0e8{(p-UP*W8A7#Q9yNTh%NI7lS# zRIM&dLv=j}=0o5b(zz?( zoRpVEmw580VstcdV&INif1-qoHH;pS9ubeJ|9puub$z+0I~J$HTvWUev}NmAJJ_Qf z^(g1D*K%^D{eMd?=H3j!Cb9dx(0*S^=KmBgKl4@K%xAe;UW0K0nR?L3a?laI5G!%+ z&w8K0-;m}XuuTT0hDu3A$B{I@fSVKD6p%k~I%r4kc9F>E5RlB^elIG>;Vm6a=1 z$zf9_`u*Ke!Xdj(pw=P$NE$ydMhWZy zx6=$;7d2wI3>Ew!4`}ip7s2`g!QGw7r0c0hv9n6qi0qdkzf8X3=qg_QjSaq-M2Y?Df}ypJU7dN)+i1Bssk|A0F znnUfkV|6ST_af6oL*cA4W-z%})}0(vo^!y62U5b5=B_P3luIVZw?h8}wd6fLaVQ5w zRX>T))DYRZ_SMkK(~8+Ys~5taui5hVbtCE<(i(A*qTr{j^}T6;}W_a9r7iK-acar&PbWApbg%Ekc{Q1 zhs!osFk$O)B05Wb>Gwlo)t>i|J(g_>VJ@S$syhj4?!E z2)>U#EN@MCAO!`@S3fm7e7DSJtEiD@JHngaXgk+h(o02Mnnm2mte2N3s;$5N;J1vU zKhbRMr6#fuVEmMyje3Q;wP9M-zCl#7f*HW!1;CBi5;U4Jm7^X`5nhBy3J#j6wjKY? zZ@EBA7x#C$1#-Q|_7Q_2_m(?iuvUq2x!%@#p>~DajKAK?u;9C(cOwsK+qiY!nZ-u` z3&SWiXXu9cjINyzmAN*3YWdlP+Eu*M(!Ds43iy>!*d}}M$t9LnE~}N0nyk#oe#X@x znel5>C6~z6uOB-oWQ1P6_NRQ=MFj_(pPhf=l1Sv$a^D-%!hcc?GY9t#Br9q>j4L(n z)~T^GG#m1XwBr0^NdicEqEAGnnJV5-e&zuwk3vGLfKlY77ni_v>|C^7hN z^I{Esr?~t2^J}5Wl~zM)DOZ`x{D6fo!Ls;EP3aRQcz-cC71i0UU$N&qnOqU0)|Gu# z?SG@P4hAV}-0koir{-f<&Nk`MZVUT8NW>WAE;ZFkUx$sC3vAn=5c+|IE&N+0*Ocy{ zZL69}$7>Vd`NM~Mg9-Ms^&L<3taiuBw%U$GHtV{s4`;ZiB3~;i!oC+G(at!Y?iE%C zd=4$8@>2{_Fo|359=5jiH|fwU~2`*uWEC-)`DZ+~FO8 zv6A@#mwYGItx%h5nf`P)kiJACPpGGN{*)&`%x47{C!uGR)tqqj|NB~VHr209<>xlEL<-~ z>`t9p$Mc3qUY+&1`uBoBui@+1G$uR=US7@cz!Lq3%6L#HVz9=tl)6)27eebe_>rG2 zycPrFT+DDA5ylCL5eHpn(c=6hWvuIXg`WrIg}emH7j<)F`PEl*QvYCq?{moTTaVNZ zr!SHSg(@6@AVXFAb^tKRpuCI)O+a@yytH(=c5CyY=qr%XKMhG=DYXJfusVhawFKT+ zMWnV9U*nD(bUcU8#K76o6@I=wX=kugtfwj-cl7|9VNJq7aV4Z*_kU)dwDUzM++$~A zztvG_cg6VW5Kb+&vd_rdcaC5P;MtN9hjezk;jjJaQrbkCgPCq}q4S@bjRMxLA=_XV zCXCD^46ojb=w1oX^aAC)9SK~STamfk}M@!zK?makv*g1SX&YoVn zHM#x$dK7RZ5VZzIKfu#0Ji;y7Y;TvPhk9xlBF2B&U97)Lp zaEcQ)+N>^FcFI4tkp=h@g73FSDqU9WI+#6cK$hXKQQE!Y&%r2))A9udCh;C9oCH0- zX3dNH$2!sme?k)f#=k$0B=7n7{O%=8D?o+a<0tS?%|A}F`U?Cqk_t`-r?1TEYSaIC z9dfCUSZykD$NwX@Lri}gsc=sm2H_VnaI+-USc=^oA0IUQz}QLj4e=q?=PbRg1<@v( zlaR2vTb-Y8_|u<;C~8R)h~c^Xp2yu)!-zOhi+{k>i&<&OjnaCgXXU8zvp$0Gz!EXW zs@clCd_!mFm4^yp+|M??rh*@(GC#L5N_(WIw(sSPUo!yi5a>PEvd38_%67lDCA$8o zkoP!K))AnfS^aIe)2#R?s})67R06LOSF%+v?1&>06Uc^$2hro4^={<7SDj(gXc8r5 z($VB#xTbaGUzMS?Lvg@=WBcoMw&|3+t>1^)hXgn8l^o7s9rM)mHS=i-gIm+zraV3J zq=ENl_E3yEn^npJ{q<2e>w%U!CImcvCb}Q0HP_9J?bs&P=BBg`qmVJo zmOnHbwoI>2xzx-jM6Xm|z)Lu+#Q6i{A&@PBUGJkjdz8cJRCYjoq+qhLC?Uw=&KCO3 z9e-XfgYhq7Ln#k)^^lZ{$;!EaDmHcq#2>q;5)!-aM51K*VXL1%2XhLM#R&d_U_|_^ z1Tg@DJi}jjc=Asi$xSnLz5DF`5fJNIhh zt!JD6T;?$aCO1YMic9Tt zfQq#IC-LkA8k)-DOa6sUTF?VK@!(dP_3ozf}qE% zXH0K`7r$zM+LXkx7U4m6!w3N>M$G>RSpVXNuXzFm%xF|ozYN2B-1~74FnzzcHwB`UCh zctF&T>#rnChd^3=B|eAWzZy^5y83BxZwM-j4dpzS2#`OdD()=-3CCsCr!m;y4I2`x zPf)B%xTAI5Uyjx-RqBh%o)`fioFf>B-qm>~54og7m%zbFa^~O(I#v(W<6vk`?5Jjg zuRc0UWaKHK!?2M$D+rD=^#L`@PD7{K@)MnW;Pc&>`&rE)eUPGBB+J}dlEx0K@^D6- z56eF~=V84c8;*-%?b0`vbw>;^2dFjRG)!;;e&RL@me3EE z!AHA16S~IcC-r4{DZS7q-J@^#O>mvB_jH1$){NKe`k#%FTZbwBXO&Q>@ zKaMjI*pmc+{{mD(G6M0Qu7Z*fXNl0sk8H@FkLQqOu_`xg5)tVaMN3$fZR^rd7LT)ZCe*flA6lE1u61skh zy1al|jSakcugEmdfsXh&AuivO&mW{3L6{+%G|YQ2+nE>B{=8#9#-hQ>bAF=ZokFw z2?#AvnSegCfDaLur^;L+I~t*&$7~tz`8CDBO5djCuxadj9L%pD{f-x^W75qfkfF9C zVU2w#J?3JO#}b2LdLu*t*i zr?MMg?-7q%>(+jyW91h$P{J~tAD0@?7a`fhyGPhD-n(-|)m)ByPJ2W!s;T;cm(}%r z_+OOK4fM}>m~zF2pw7+XCrX7bD=ZFTPEu@P8Wo5wjQtiO%+r~0G;@0!>4lmZb~_ba z!F7+Y@_8K=bwdeoy-k$HSg<86RdSMDX9ar4BG=yy9>~b=U=>0l#cZ8zvC$%|_lVNd zQwAY2G0=4|BhDMYWhLKHW4u_I1#7}oP>?hw8|)W{osjDVdRM0MDck(Zjh%EtvjiU) z#RjF7O8>Q9FmMkjAY=ZC>BEklpS1(dJwtP4RBtz!WR67X!}pw=dY1i|#>|QckKeiY zLU!P7x?#ae$FfUvYPcWIb}P#!?jKgN8x#L9D6ZBwt3nx0sokjA7k_k!_AWtIRq@v< zoNONhJCd^Ed}oduN}Wtlq7I+_zH-e^nC*%Wn0i_e_F+Hfc$eLSyF09sbXrhpO>{zv z@?WG=haZESDCrB12NpW`RDHT*%ACbX@9lE)KVKz>SxUSk?jc`aP%Om=Hn>PBJbnbW!j)j_+;-`&%~hVbcm^MBe_o7hSxd@v zfV<_Q@*LnW@~9l<5o0q?bH{L&CtPu zePBe~=Vz{}z&cBEpSNM&>Vp6QTI+O?}t}TD8W%^194Tu@#leQB)F0q zuka>*^o5zpv{U!79>CVFrNh!Z69y!;lcLfByz}{V@8GL>`xLI;RoLAvwUSFb zx-?X^o>?}uv}8EK{5GuV{gMV zBZIH^NVV$gggEi{azwPzGu}!3%WG7@flobgo*SegQTf>O<#7p^w~g-!X8^1`CPdRI z<}b;nj-an@9#n&M;*n67uYx^n8{B{QNKw3hNvs1BDv9-dc}vui zJfQDXw8%31q9sV$8jt9mw9;cLX+y)lu2TZpCQp`0e_eALueD&!X0t_GT# ze!;)2E`!gACIKfWx@a_N)<6Gjw?)F4K=$%jFwe$}NGvWgcw?bSAsDMHdGE>klBWob&;O42pEtC^=cr2ew}5)3fp)LWgrMs zy(OSx@gFe>1IBMX=z(VG^jo-CJqBU2gl@U+eka7dk0^wmm5u|BSOy8l0-(<#7dLXO zgg$f|Ec?G9wg&_uvoeKNk?jp&?|~pSt8VkYHLFed44b!pr=DC{#tVJ|7nce5$%x34 zMvd@;NzM22j-YU2hV_9Q@nwK{YlfG6;FQl4`{Npme(`Xu*H;6_;Us%In_TqQBnRemGU+6}GwT?%FcgBtJDuIEZ&-W;=N_$V|&X!5*T80cd_LbnnGew@kK*uNBBW%tvMI7Ga?8OnxMstGU;YQSW=LiyihRuy$)K0gL=eOw8gNlp;*S zi!7Q=EcDaSD37Uu_jk25k9qj%0MP>`g>T^WKt(Z%-HV_5eiuB+gZ;uAS8Mwq3^oDL zVC(BkA*EFRQ~e~b{Y89+*9sT_!NkwVIN&^6dmT^o^{pQVCtinsbVx7AOHB=J`SgLz z51D~wEC2GJn7cP8z%l&+8~_6Av|2xHQ%%)#j+lE$@ti;OH%Cpa)kZ^~T7gVJQZydP z0P~N<7cwV@gGs3(-b{ENGpMzBY9hNV>GXkLznUSmJ>SzgA7Vk8yi(6FSpyySAzyM< z!ZRp7IywwVJ&)L)t&*mv(R$PKJm&FW>3GhM@_bp%$qM7zwC5e>O&!{AcICO+*D8(d zaUgm*>&&zdms8o;fl=Rd{rz@)Fi632@Lw&A9ABr)C;M)0idEhI>=rWc?ytU^9hr7< zK7&#WAi!!%we4nXolcEdk5EMR?4>Lsj_PbO3YsnyXa$E>*nz-U7h=f2+)1{Vgp}wP zk%_YZc@uP?=haY?JO2>2+VIR9R8`D-oY<{(4jVC0WsYc|#8H)L?EdmXx(}Km}IxHCBjsbUA99(KYQ_$cfu%feiOm{--+(xA20&h zbxsfB1*9w2Kck=Y+Yvgb>)LB{BRA~28~K3=z^Owbd0 z>8WpUaQ>)MfwxWBfCl((I{8Ztjl>US3=8S^ykBKr*Tmx0CvsY|^-8XW2Xu^fKEBF7 zcA|{KLCwz=lzMJ{_fX1v(jZw_a6Y^BJ{lh018lhz;sZ@EQKs7w#ty9Gl_r%P9VZse zDS8+<7#}rGvU~0?;xBW`Gj;U6-#}5Z9n0obq+XSopEbs=P{eq>{U)9~CX;4sFczs= zfPUh*!1(mR6}}p(;q9!rze{r*bq9z}FN`kMfS0L2Zs$N|q;j&-G?8wj(S=0PtZuAs z9piO}6G)BN*ct!lJ&SfI^z{~>x^HM;;1(IBdf0w&GShX)t@ssIX?faWt#xNH6REOm z$LnkNM%T|4CJhbj#;C;3I)ZN=pthbjjP7cfaH_*cg(Fv@gS0(`WAnSyns#c)nSLHh z&>Mn_iDEG^QKOUdK2?0Cnb14wT?i;s;gW{*xMMIy+Rtb4OJZ+0s6l}fZ|iU|FHa)z zE?G`xf<)2h_o9p2>uVtwLF;!A?jI|pDNIUTt9xRkmZ-%T~`NJ=f9AzK5>MGjtCwc8z@ z_v%ns!lqfNTs!il51+L{-`Ou;1|D=Htoo}hd4iI+?^yG>$UYVp{2k3ECL=@6??LYC za~S*v-sw93W<%n~O;5Q-SJ700 z8nE6`t3n}8GAeJx>ui9#IH-duch3-6 z)H&p>^AY2Y&65w5I=SBZjLA0oy3#g%sCaLW>r4mW$nGq3n}VfaE_k}?G{DRDFIQed z{giT%F}yU1H18ks2xxz|C?R-fy}5bt^m4z~)`H)IDKszVlgkU1-{_*Tu=-GUkj_%!|DC>hqJE)J&RZjpZ*ho~Oz5`}hYI@F~aD@%>L>coSz{b@CqL9P8cqVd5R?b@8}6zQGv? zqJTSIi08e+TZiJUtM7QkeA9K4_P6sUO#q1Z5fhW1mHlw8)|&knCQ<371aBta#))_5 z#&&mj>EZHlBqm-_X*5S_urK9Jme%Fz4=a2~pL$CjRzyYj`4wQHBUddEWQxg@WL7xL zhje*ktvohof_Psb&t7CWz6E-JSFtY>Vz^e_`}Bth+=A8nsOMAaJ0UBDxM|GVC&>uIo(Y}}m)^SCr zUHP!`q1O1-U`slL#o6eA@$-=JGX>G6ZyheHPQT=@W-J~&34q<>UD8y$?NDXi^Lzd# z9$?NqcoTqoxgs20ZeQ!FpR2Lev{tU{%Ei&%VSn!G9uZ;iY)eBw_tLgK%WuBU&+*W_ zwa#+z*S3?s~nVyK~G9Pc&pu;W}a_TaYM)bu-cPh!sn zH2wp2@C$7q8{@%im{KsBe#M zcXAJpmfk)Xm)9KSHkJ}`z@Zng*&bN${>&(wshO7kustZdGF$Yw{i<9Ka^~yXmd8y3 zL~r@*?JVf5y2eHWR_zyO-j}yBa`MncD z1v*Kdt}NRH!{mH8+8Di8*%esB;+?c*+kKFgLt0+g+;0VZe`dS5NSO?aBL1>?a(dc4^|1fAlOv0Br%6{O z%yd579 zW9$x}j&m^3J^b;Zu(EHBCAQ)M?KG8zfjh8c$z;RuVceb?fi}rLS)A3^$yaX@ZuA~{ zr^gycR-G+4E4C39MU@Z99J$sfSjdD5tT1EfXO!(>ZUMB!9R(6UW0^qsNMHMfQv@?V z`-O9iFA%No}av z@7g+g6MSjTlah%6kC0sKi+ln}`H*~KjNuc0^CFS6_&Moj>T}W}FY%N#>KsIssKAxX zIH%)P{?K!4ufg{EgP^8cg3SU4qQ@MUuQTa4HqGM?%st4D+&FH1<=fgF!okZ&V5^S9 z+o|U=4Pr{U+D8Y^t$vAX0}-@9!m5!=AxMh15MevJ*@4paf_(qjEc5(GkMA)#g7G4) zh*aA&P$-x=E6b79JhFXX@zE87T;OhvttH`XU)nhX>JIh9?^vD}e=IWCmg#`nH?fV$Il4mWZmk`DXmaNre#cbjdFg~ZaqBZrHH^n> zLPAq=O)9jQQL1>c0)`}k55zW96KSE6X>eQGdL`mzr*BH{_}f=B7D%ptd-fmG$&`F^ z{orPu{0M9jn|wEa($vi>>TG9{ygoqY(Q{hsM~h#)6fKEc!IBKuo>W@o`LoY3p&Du$ zRBA?_E36{+M`8%BsQ76Yyt|FgFO@T4Kt}Kq+oP25tXQufvPC8bB)xzdEa#-}##SzK zS+B+wxK5$MgN{ce|ACpKoQbjMpDaR@vRygqP(N?e0`o}YRRkRgN}E+XCm7c*M_opRK3a`6-#6^8 z3iUcp3AXFdRrrj17sR(&%Sv3rKs|lm|Hhs`^`xSSm_$~7R*bffTPmsg-E&+(zHlPw zx#QknMJL-M%Pxs}jb{&UJmCCFatH zCVGSDlyFe&BjZM$2!C0n-OY);y-TBV9oJn~=)z)hhgFT02Vw4^aQM`Jn%9mXwt$_9 z{1?wVKQ4_tj;3A{2&1m*zKm0Q*KKX&wIPhW!}7-~D&{D^iTSs8sO7DPAsnAAlq^H( zX*!zZf`1F_RsXJ@@x3K+pCh{PG$ z@B82eV9*kkIy9iNXTjo4|7NNkZBO6K{bZgtZTb!RI zi~P~JJlXS5`kE>29{Ag_Tz~`I9vUR=Z*Qmv>J0Q7^{`<$#Ji~1g)Bxd4LMBZn$$Dc zwJcjjhig*lcP23>;DCapO19=;U%D1-CsSW4jIqcqh~t-+CPSHF@y2_y{uoUP(X!Tj zhL^j5mS}6POXrMfNw-!OJ@07n_LEajmhR?GHQJSnWB>fSicNMe!IIrKViFy@Aghh@ zLoy~alAz^irSjFxyD~B_KYe#vMEPr5kMpF|>0ve^8rO3G^`O@)0T@pIS2+~vSPPBm z{9Uo2YoDJlRD9x^f06kp$MUM;5<+NnnFaS;fNRIYj20AJxlA~EMDxgj((5AV1YN@H z+la|XD~S(cOp0OBhvr@*P31}It@L^e?qo$$u;i$3D}oBGL?a*a4AspO<6a4^lxpsX z(Z_wnb(lbHd6@viDV#B&flRFf!(X2;pc?jWZa=po0lri0uP$lXjg4Sv>$=!S|cDZK;vNWs#E+(;5^_W@MQqx8h@pAlv1t zNW=O(MXFGDcM^`>W)9SNG3(;Fr}NE&)A{DLaC77_6%mF zj+!6~J2XAhPYXa(#Db34@q@ZGm7^$eq+EzxTIPZ3u}xn-zvHh1eQ)1}RL=RwwYouJ zrAg*$3L~yu6DGT$IcrHxATe_UkxqWH_O+%lm?{csBpTzk>O`19n&d9StDqaWY7Qsz zOE?o!Lb#-5)1%+4hbB+@SI1MOeECXh${^bMd@f7@;YMdc5tEl43{8Yrz*S!+it;t{DMP136m83 z-N+lL!)=w4fmkn|1}o_Cr`#!yu;u7(><}`B?vRrMP$4!@8z$sP`1(B7GrleczgS(M z%JgGl7&sNMXJBwC&|%YAeO|c9UH?`&J2!K zh;#R&aB!*7v^Bs@8R_>dSftt^=!PFjAuQb}kTKRPKpL~8Eyo4Y^+OT7v;PQI+5M7Q z=32M*Er>XmpE!yH3%RU@QQ{3E*|S!8gC)wctm?^dxB%bY4ZTz4v{ycq?-@OQn0D9s zeZ_B@fqGa<;iz15{d6=XqTI0OEQlk4wUnk2o(Z*XquY}%5ZN8#`Bry(r`)X~h}hJ; zT7X9MdsYPK=d7zUF|)3yBf$qvqffSd#F}%~EIq0VB$w1b>4FBvd`~q_-HpdFe&1>L zc7fz#{M_d}@bkJid>`11AroAss%!k#_O)_i7^HdQR$C%6dQ$fzeF{8-*wuxc$#{iS z>M;`>|3qfzP}h4{R{@ZQTI8VkingO>;jf~hj19FX8cKztWz5-4KqY$2fD15aV4f!i z^wc!_O+L&c_+pSHD3tfKPdhgSo2Hj4M!Ly_8sNYi>bXBq(Ef<>h7A@dX@dZ+I|g4M z81~)b?k9F^J>0!<)QIB=E)C|`^RaA zy;{>nz(f1Gpv0)yo!sfg<=9ERcU$AL%3o^_tlFg!H-9~AS zGLT!cg9FTAm#q|(Teb5Vut>*QeXK7Tk3m+LP@^~O8c62^TqaZz88Dxk7ikes5HBxU zarV9aPBrW@qw=h#WXIdK?mgqa#5~xBlU&^MDKuc>1}NbkV=c!~aPt9!^n{F3bzH^U z)Y7ly4z=;XDrLX&zyHG&k%3be44hA+zPv(QtUbhag!WfJrRodV-CLBV?GaUc-=C9d1ujPA>Oc*qX2>fE%?@CryZ*ON=YTgWI(s7r9KR4O*XgZ7Q>~AYk8skL4^a))Fy6? zrboOAt1O|(ri@UK*2(-y!lmurAN6U%WXd0QmlEI;!p0s^ZdiE5|X^3ptv(cL|`FuN&m(&vaklBxH`B zdvLykUhEwmy zm}bfHz$?2X%$j9iN`->glfb@ByaU<(Tu-K6GKH#d#1RP@-fGLK*3*E%^rgvFc~y5y zF2Vv_&mFreP zo1n(~;2$18gJ({}pQ<}$FH^rwZe&#V4cojkz}{t^yMc*$jDB&!WL-jM;pCLSEg$tcL79lOsit9tzi5 zhG?)K32esZG+3Zf$f@(HfEyrR)+>@l}lb) zHdss?Z}Go)MhSxA8asl}+`TMjReU*Frl7DqZ9=wJ$v~*6wVELj1c54^g!mPkqw#Xq z&4C|q-;T+jKjZ(E=$e8;I%Xw+IfzwW`qH3V*C(t&8`vig-WCFcZmmoPGN7`b94NV2 zvd~!&xd6)1KMPXztK^SK1|rlXzL1R^J2$M))^w|1%H)2w&pl}O-=sQtuX?cTzlrZ2 z?v#11psA;qhHBg6y+O6b=}!$_Z;j}@`Vg~LDs3k#3T&3RaK{utNk&r8y?69hxD zW+X+TsRJhZ$`y0X3Sm;#^8Rr4jLqfw1PAeCNH(2Q%?Gy3vSr=aOO*k? zC`RAX+v+M#^HrF{KFeX=)-naDb!Xavk2&oRM6%-Kh$j|yZmcNqY0_ugBU1pqYYVOY~i5$Tz&yaAiD?tjloUACs#e* zE4QUuwx=x!;m8T;;=Tfo1RH)LC2B zXwHxkpK$jD#o?yuj*&I$#IBdA*H@s8)?BAdDi@)EafuxMS zznEmjEqwz<-X%>+OH147zZ7nCz5}>*%V4%OtKX)E!q~97mdasB-uElun=JkET|bS7 zz^^bz(V)Mg(7%kp8T{7#7m#zqyQ4g}Earmikg;-FB?!zBZw=I0+8d zEH?l0_@$EHWN=m*1!NQJd36Vo<+&0n^OS?4EHHytiPN&yt#t-)9rO+BL08FiO6LaH z0V)CZQ=Hm8*xg`Gjs&}(5*_9w8bzi8m&Hc;7jeAR?w!#|ELCXqG+H=P4#xsO_1@>&34beksHxrH{^3vhSVp!C&#`f^T5OTJ^8 z7w%P#vFS=(S=+@?BPz?Ok#Q?`P_lUSO7gM~2eKRt<&b*`^41gpgq3HcV>>BqYsoVCXJVY*i(hNX7bc3b8~$c9c=FUeAS-G- zk}F^%;%tW1tonAXdB>A-MycUyxA}h1LaF`|tqnk;Jo(8)Ntfs-^ggm4_ch6-gLFGo zK!En72BEt`c9QJH#WH1JaC%BSpPZuNpBG)7kj=Hop}9KiowWYv=51cW4ewAHAQYrh zhvlRpM)j71E}x|t@LsUihj84Q2;T@ZGy>T44)CyM9e}5qC@t5lB>ic!LP$<~ynV@H zaD?tN&#Lwxgy?HE{q)B3UE-bds%p;0X4c7EP9JZ&DGG1WZUs%YAXY?_xFQN?`|TfN zgOs#8Ts+!!hl_OgObMVUfm-YT=Kl&ErLWCu!tVQ?ogJW z!|~*J-$1B!Wa!P@W6m^wl&{Yc!mR**{CwMck}qw8SI&bgE^TA| zspd6*vn$6I?)p;dHodY(pW{kka@`q`_PkNOxmut6)=q9l0fC)#nn7(s3NNU{h9jl* zwV%?ibCqLhB2SX8s0WQ<0)m_lQGN?)F}`-XrWiI?N}4%Zg_xy34n6L7G%BBnkc_<- z_!{VANz!si^-S2<1vl_2Tg5+`8jU_xcGr3TQgiE#!7HeBIg60xmo3Wh@X)}$4L2my z04*nSeM)kTL(viK?AW%zrLhxdtq8zPoRb>L7AoPXWN7eTpSOenGpcHwxbg zk8UJtG^O-*eWrcQ9mFdNeIyx*9!FH5T?8SRs8tE7j%l0>g$iZgw)G*Jpqv`8%RxyX zCOuEwn5#P=lrx@Zh?yQ9I(rkCC<(NjjV^P0dnrSNvmYH}DkPh_u{+-c^B!78+}DXnF6L@BfbU#%!qgr!P(LREZ!%W2|RkH$aWoB^^Il5^Uh;J z45QRuV5UUu#=NL!);CSB@MVc1667oAoP<)Y)_6(|FV?aX*>++}8oriNT8M@{CDVXW zfm^Avt3E-0HIgV|B`A3d>j$3ku|SiL{Y@~Gqb6Txx;^tavpK9K-+rPmp86?0jvvBm0BNE$3s*ocIvoUkNlovU6Zs0Vpg)kk0) zsj~;*D^xqA9Pm0b1`QIs-HqOPe~KMXQXTN7z1Qx%1<2MZF)8{S$5vR0)Itgv6WbH# zYU_QgDuAkv7BUe11zd~xcUeR;Tt+8eu2qm#B?qW_S|I_c^c0t4ZR3`*h^Jc})YenfBncrgwChhj8)TC&gZh!3ZvJnF^ zyrcBQRF0>YJHl!VmH@AWW&evj$gh+DBJENe^NeXS>x>iDumsCQzM9B_AKYTuXj)#l z*PR?PD$%W#ShWRtsuX2eOB!wWR&k6Y`+I^MhU`i%qPD$A0iH7z^{8rF^lc3};1lZo zJc!6Rwj*Jp7qgtokK_<3gmQT|?XO|8$vV+X47MCBifEP)J}ApX7KhDaE^%Tn`)GV@ zti%@*`A^r$%sov|($IuQz+n=1{_(4WrqIu#NTM=8kZ>1ymP0QXf44)d{lxu1<`Ben z6s_%yX2=u3OFC|vfZ{rAm;nsASEPB(lL7WDWPXg_elb~^k-7Yc?&~$6wk2937Ph%5 z7sHsP#WvEk>Bs?H1gJXiRVxj}@l}y;;-nedY)HDKQ2*kHUYh?5=kXTmd_5TNT%cGP z-ARu%2bHf56LwVc86jy9!!bkq!4nr7~m@gtBcEdi~lZpk1Oe07TBi(<^RY8GO;C1rdffC@UqT=(STbF z;aC27*@d^l>NsL^8{P+9-S0a2mlX35_p<(#uBk*xBLv8o(f<%0dQMzDC`9^kH}2RL zh1Uv_5j*Mfq>X5zMLiIQ{@_BYC(}|Q{4xgmzY`F^sUqgI)Rj1M7%+AxhE&ZHa*JV~ zD!IAq09M#%NTSeh;zxve1xFPCke@t3ffnLN$*~jL`9^}LJrTz0-ND*+l#MJDR^pwX zFqtW=FKg{{Vu5f`3{rsrjz$#4BZ(9mDLBKUkV^NiE@~8>?okhXMo5f%)Mx0M`jTnZpw8lK81@p}MC2LTqmVH0ip_!1#ZW=d7r%FDAXc1kDd6 z`~#;I;WQz?AN7Y2!%>iH435i3P^^)3!nKVI>9I)eN7~I-+`f*OJkpz#%!3@`a$zB* zfy80wBrH}jKYrwSa!D)!mZnk;jfcX%`|-L#flQ03zZ3UuZCG?g89p*VFl(hi5)mTS zQ~7ic2=ml0%&VU4%jX`R?boP?7z=iR+I+` zNF<;Y1yHf~8%4A1c!SO@<(rCL90lb)vO=z!f*HyG%*QtpIULrH*zgIJ91Mz2+O=iZ zXHHAokG8J&n#wnfZHEU5YPV8oZ`Ds_Qt66vnS%+*2qPt2E+)d#s(;gf&{EsE-~4jU zr~U5j?_URAl}+c9)UiseJoV0%o+*9NgPk?6K$z|@Sx^uzyE^X9EneKZQp%gp-}K%}Z}(@jvnA+4n;D>M%EkC$uGE9WJfRD4bk!1^ZPSo)mB=#g)dAqK zYe;!P&EiXjAoOF26Qus8MRE(Po7Kve!;N1ei|{SaGfsd1cz$QpjEIQF>wn(}I0*S8 z*=f{QcAxp>^urJHMR%;9J~TiB1v6$_DYo=X4`cpYSALDdwN&6|maP5UpvXFAF_Vvu zx`qUpL-qSPw_4-%R@UX^xc=YsRdOERz&@{jhAEOVv*OC;$7b$v(JQot_p%XDPJPhk z7i!ZIYCZ->uSeP}-xHuvqW|9(!TvkdYQgwz`)0j0LZ_96Zv>vuXri#JaUIQ@(C2suD(vA8E6+dUQ7&DvrnA$m`-EJF zf~AQXfp(+U-U9NCzk5XpGg|*Gd1?*2k8*|}eOZJH72$QMsd>7^dH&*ro0IoNI_cHL zckg}%F$V~>eb_)*tpc*-UeWgNA3F**^b(wXhRc$KBgp&zbIs;o^r|dUC#_|Wu+<|p zQ?JF+yLQFW>KNya(&vT^;_lbs<#vzOUwYEg2>PBs4cOQW^{s9JA2F7X#utDXcAW_@ z=!a@{il}4T)v+6!^L)Y$nkXK_KT!KwkGAED9avN<1$6Yx)KsviyZ`IiQPY>;C+-Br z&C8Yqo8R`n9|ZAa_<$via)_?J3$>P6o(~ zhpy+a@Ame`ymWLKd6{)v&c1#xNk~oGJUPX z_|X3oO{i(Idgg&7Z%0RZseP{D_u{IZL}_S7!&vyz0`?z&<)YzH9wa8R3I2@)O2S3* z+<8u#2v1}PpiRxnOF%9>@a%e-oq-wLu&XOit6H>cn^^D~$LoVK@8Ix8^L7kEV36-n z?I++wutZ5V%6{*XPN?Z3q#4{cygjU8Hs|?vpMK(V-E+Eab5M_eJs@slcSp(E0Bl_q zNzJWR9XcU+yt!L5?p;|`1pWi>_tl4BZaaoWaT5uqKIQC%@Z-IAd<ee7vV`&WLx0mxLx8M)xrHBzsr4+v@_ z-y%{QsVC%kKn;=<5@T1e2yO@$*BipSA}2FzEtTwcxfHL6%B{NAjMrU}?^ZvJuUewD zb_^|%j5Wd(fU?InoQ=&+izF;Pkmxjr+L^v?n-60H;;SkkJz`TNRzze_~m10LQ*5ze8WYB>9N5aWA)u3O1{=kHa?4Hqi1a| z7?feb8!qgg6(P$rJTVa7D8@v+5S^xeBLf{`#E7G?#UhAmF zd#djwZ4HfzHwC-X@*##Dna1b)2Q_^w;b`lyqx#5lRFLhAD~3CWL=sU5rPzbn3VQkQ zVO{FI7!RLbzaj0*OjQ5(Q2X+Dx_WjW5?HJ_1s153CQBfhp}TxLvfZwCdFtJN>*R;$ zs3}jvZHlp4ul6c0_xk0HdsBR`qvhfUd}tk2DB){-)%=XRZp9E?1CB$YnpEs+etv7g@Ts+0qw(DX{t6IdDxT*I6B+cg&Bu2*}L+Tjj9b}*X zOA%8r^BRr7Rk1dT;PP~3ZjAqAi*-`-u+ucFv5DUUTlRdIQpqi_e%Wb4!2?JBzSc9s z&n*!u$F@&+(~fPmSjxF#8(2Ey;Z*oLe&}u6uFgKbsdUv=#wIeC`g$>pcHT%bAz!fs zq(*G-RsT#Q>u7fP`33)_YbEpb_qdv^Y}S@3j<7vCtEi+51DqNHS7Rw)&c*Uyk`r*w ze|OT|rQ)!aDt|uzANc1pz*jxjtMM#vytdG3lhlqkMaesDOt8VB1&(b`3R?^zWN;Yn zH8e^`+jmUI09!$FUXGaUl{X)64<5SYKR2k+nEh0SRTM31;DX7TT4Pc}tmsI_A)m70O z{CG^-|3uNqG&`~&fSn5#7N3~Bsey3m)GEXq%S_}~av~iY`H=!(3d;L`^#*Ci_&!AD zE7~L$N?c<={O3$><8_#f^#KqO7Br!1ZyiTe*kDNE|NcO`g0g{8h>xr6(evmEvscVT zGo~!#9|_m16P+-a6oN6wu!(D%2;X?nrh%*vGAVv>AMh;slXg}`n4>Q3G> z**CHqvR~MK#-=OA()4ucF!*crFL1m#aE$ago(=qdc1>#cuW zJFJ3qZ)3#X&Aoi#hvy=5_aZ}T-1>iq>u#kE_>?mE{6Xwf)=dLR;!bP~ z_R_u~BNJF;^bjD9Uqb9hBdY1=LTI3gZ+Dgjw*PjQA+ol!aI`BA3W1Lwo(*HSpL7?j zMRhY9={+F(pM8>**B4S1z&XGtY}S!scZ_fE>7^p-&Fu9Of_l9oXRtM57boO&rY!ip zo&8WDoO8f^#>G=Ju^VWvIBL&iYE+!|EcYO_pSD$)A@-5ZWp337a{~40kmt?!UVjmt zU#CFXf37DFS{R3PY1ZyTldYARl8%6!eN^!KVm{g)S>gmA3{z_|{^|+;&zk~kjK^N{ gf19$lbE!E#^b55Mxtb$FC`tqA}Ae8OA3f6-3@{)A&4j;t>n@nAqY!1SO`chox;)$ z?|#0&>)k&#u6>?)&YYP!Gv~hV6K|lWNltQ)1ONb#KhlC50RX@i-1jRY0^GYr>~%2i z1J6h8kqHs*6-x9JiTlmut6}bI?BVPiVDIe&2nYxeb#-_1akTez67}$Q$=*}E2LNyY z9>E`&1m^7K1_ZwE`-6_)`=+X;#!v8;7ZFSce1I=NA_#Tx&^ow$qHtOzIy?~BX5zPNLHx4LTsU3g)uNCiq?MHsKSs@yey#~<^Oxv@L_+lk8c@xj=;nLs zMwtyqB6ck(XZj}!INKZ!G_Nh05(kMeh7E`<#?UW-uY5r@ePj0Do57XwKK|Ea$A*(M z3vRz~UJ@>5?L_oLy=AZ+GtaY#(&$xBRu(+ulmOKp_$qlDyXQIxkF)T$|5_EOIxog~ zY=O}QrTQ$7C^0;?R!!E0jz^|BQjA%FIi+G7x%_hRe{JG-8uyQ1E@`L+m8Fwum-NUf z!)V$f^`6+-ldDEmAp9H-M(qFV*}G&F!Idmk8UB2VPQBPanqhong&fc3Nt^mX3Xue; zkLwCS|2f-;nwbCm{m)m(W6;;EDh7Jh9j;7HRLbLBV#X^Wysxkk6x-qYjTP?FV&7#M zE=LG4o+)TU{RVD+msaB>KZIblb8zIKE2}}Zg^8s8H#r_t+)7Dw0A&~3!(1V65#GbI z5o+he9MpkxR;+gaS@tttMPLQEUc9BZ*-4oHvD7F1<3PcpZF0_30#fCq?Y}n0sXGlw zphgs%?oFbLF%us=+}Hl-CbxWuO4e8;{Xd7{U06m!Kgm#$e1bir=~uMw-t3?hWPcs@ z13ihhw$*+r@C2!)_#IrMgNx>TUWw+tKx8Ag zGy_DB5NKh9(mJ!N$Zc{b|BCW@@sem+_I8jeo_j~ub{b!Uj6l5FKzwo{SKyqi=-xtZ zmW9RY)|&r95ZpRU`e1Dsq8Ook6>*yd4x0MwL=!qiu!*l|U~VDo!~k(6IqnG^umZjt zC_nL@X|{!zI2^j)6`}g5qN<;AK{o(X05iaosPBq;RoNpQQjjeC>zEOr-AK6Nur5E+VCQ3EF+8zyU7fE&K8Su<-3x+ z52kpXc{|5W64Gt2*~)?_0qujh5GMxW^RN3-4l+``q>rfc$y$ZOzwZnNQ@)1zb?(MXDu)l>E0M$`&;L@ zHQg-Md1IVlxwq4!!TskJDIy0+{fhQMpFF+t?JZU>g>U8(-JGfGaK7KlA%PW2j8>CW zII6k<*g-uSt8y6alQ_Nu5LGHa#vY@LHY{7p`tHtttQ7;iDsT_(lCC0+^Fr7;)0rC) zCu=&q`%XraDibAxknXcOvpy^&=5~(##_~oKFTz_o`&CoP09_T29-i&eSc`^=;-kt?X|f!`3f+r+`Jdr zyKHjjS^L+Vg&Rj}2-|p#tE=3Hh?^cZ=7UH?fBFk}5j&R2U}3l1n{3aDl=5F>!7r1X zC+~FZm4pQ;Q>3HiCRKMp`QRJ)Dm~)FK1O~Y3f%y!ynWeCITDk7zh}hdt=boRLB(9V z;cBYDcI8lGLOm0-q9QqMYK4iP`j3U!;z|tV!tW1Jc1KN3Ay0D}T0R^KT=D5WH49Z_ zmvSGSnnWE8y(Zrc`X~K2(5BggU2|t@V?^HXoLevfYi3)_gh5%Pwa^JoXEls7Nlw#I zt9h2{!S9Tdj~X=psQP*MClnuZK!MOh39OO3A<@ZG`w7?cp)YW>J*L6 zcX`kTFP*7~?1TQSJ>P3Qr%JueWIQ=Za=rViTk9?#dfhCpk*^zJsvRd@VK?Tx**p_p zJ4Iv;g@z?wn2Lm}m9sPX3_m-QU9~UiSMU1zNQe7oh|l$RA$aoh=lC+~ERsi$ia??R zm184f4It0rlI4#Qv7Pb(C8D*mu(y%Nz7pPlf{yu_0QUAXFN5DMU0{vZ*Z&FM!QpCA z>`{5n`e|U87w2z*n5|>qEq|h~Hx&ARV$Cd7P1P}!kk*HY2!YGf&{s%Bu%cU&U`bad zzGo{#rGZ~c*SQnSUSaMBFc}V1Nf=x~T|WNN>~i4p_-4=?L5X>0uZ843<2T2{!wk1Z zj53P0tkM4+%^O=!<+7;ts~qDz3|B`)hxkHX9(JF{ol8dr7M-Oc4sfV!d7|6`b1==)F{gdt;>vl zxdvR6a6#Ov>J**dsajM8OTiLKN;5iHGy7+39EFR#Gu%{}32L?Q{p z6L`bz4HJ0_TQJfoSHaljHgxZLPl2A7CpG+HO)5TxZ*MtqOzw_Wvde3f6M;y(3z{=B zrAk$Z(i}Cd(Z%LZ_KEdfXfBN`Vzx&xaB{nPq^}V|EOYQ%B2tR510Ph_Z=ZRq5JT&O z&DUbk$pya*?#eqv2SQwHP|S&D6xy!6wh#MvMn{G%S7Dq^Pv44%D>hKF^J?@a1?Ik! z_T-SH7q-*gU-+&680z<(qa#l-i%#`Vp?XmY`^0Y7tE}m2){Wog>boM%u;6WzQ-Fmi zL)O39qkkd$;-7Jo<4F*YF0=Hfap@`SjBSLMY$;2LuuqC2b;6ebVIC4lIa#|?(?{;^ znAmgS_(%I;Fo(RO(Z3&mGAFI8b5IKwb?G-07@Zy)9i*R2WnxL;IRJ;qvu_bQ^bu&= z=-~sY%T1JD>Z1QQP^-bOXyY@FH>EaW4)sE70AOHMcA> ztL}mWfEFczGGg)p?g22_h0UEv%kSQN!r4oXsfy3O6W%xJADn6weyH3)%hm}qR`9X@ zHTq|_oTvrf_j`~kfmi1A zuD9K?`!KV!@q20=r)OKn-r_Rfd8~y0`QP>zHTWKXip>@INv+a9yqaOi6D%#RT#9jS zpL;=WNw7A*^IKbssg)X<;&{tI5M05YkhwFaJ%G0v4#+<%blK`8{QJUZwY^KB+2erW z`VrF|k??&F+Z`~|9kOMuO`?+TX$;^I+RbJMsQqZen*$GI?HNEk+Qu3NlINDKKRq(# zqosoykw5cjy7WMA++PL>wUi>95Z#0Zkdp*bTa%P2}6Vh zQ3$(lATQc=DGW=zXstg#G59qSr8M4n957(&zRq36KV*$h6yuEkXN3(~Tr(x$QT3#! zBC_84R$cqv|N0>lxNKX|E_&wj{NDLCOTy`Z-^bw)UD-JwLg)EGf?bI?i9}?K-Jv;H zDdB~Qbp<`=*hk0`JktkQ{r3wot8$KH4yx5j0p9Yh?JBTbA%TSN+tZ3FD#TOXyG%yV z-^M~~INrM>a|5csMZ}Pk9h&u-ji8K{mG7f3QKDNnt_Pgq#YwDefK&B{{A5fdq@S_z zLEBn@<95>IULX_N4xu!rBTldKiGa#=!KN-3)S+T#{UB$g?^_TnyJF@&g#hngmnU=L zA@^^LjhW~&oAz}7n*E^#t&Yu+H^}6HYp^SJYr{3cqA%1{XqHbcdI0wNvn+f zN5I5QgUhd%hfhVlJ!IS-_8zVs&orkL{wneEGon^c7c2G1zW*LeJVXSiqMfx7qh4AuK`K!4a0B$VCB1#5}<<{!b3+d)4jCO>qX539{;iJ8x=N z6g4XgQSt+`XYK+&OcXAfyliIr>Jt@M+}sBUD2leP_I=h`yo6JdR_9w}mCJ4O_0`mg zNhp-F?l%_PKNS5i7ZlXsL=Ty0*;eimi9_PO&6Piy3%!!8>7acuKQkw2%8kviZMiS< zhDO>=0%gRb{3c=fTbAU^@2}EyC=<@j){V`BUYb#4;!0Wq-9?$Brm}5&rkd;{G0Dc{IKaTmgVxpx%4!wfAr)h$*fHLykG z@OE|Ko$e0(UVWNo`0w1S{xzkGoN5YNFFpaaRG56*oL{B&kUdFX>mCPO978A?w}+1GkyKe-c3+)+Qv~2;LqPuS_yC z%&G64w60h90E|+)Q~Y&UuKD@1fLYbOwdYgoX}34=cjt}-No->!F)?${p4Kc=V&!L` z#5ww0`An0150F_lw=qvNQ|3t@g?>P^z^vW*qQSno=tdhyn|{O9sL#{64y8%68s`vi z2|jN(?AfARZG=i(_|=;o=TW;8eU-YCIQHosL2Mdc*#;8?#x`x8St0C1ic2;Ds7qVO z3{faK6P^8Pr`;(_pbOO6e6aLycP$^@-ZsUrD>YN1b;{ibh_KSlzqRkZa~3Vp0wkPb zhsOP!oH2Vd>W^(skeK07?xS?8%e|w+9x8YE7s#p>!B=HWDtMF(zXinGiUNr?Pl2@M9215io_VDf!&2c@Nk9|75@cgnpha^`@sp)b zq=hRJ*d_h%ux7q3HE&s>y|0Yn+oW4`Il1v@0OIDRGPe1gMz4LfXKiSpXq#6>((f@z zIr+V}E=tfABjZOSqudJD4$i!MpFR-{w*AW#4h$+5n0kV@@)d9usjf)2YcvKpA zvTl0lgR%UQ@W$+kMnle3Pxt6Wkae~aiEzuVU+LwwI%3xTlja)Zn@h5;K*KYR5ZX5J zccFVOGZGYS)-9r6k>(RO2M4|Gi{qSVX*YW2Y^kO8{x|w#`pKG|!Rfv5pQUs5m`#~R< zCpR@kA9~4L_8$1r(d zJ-}v(1@Z!v@=$a-^Z0XO0Q{+n0e;g)`ha5gv9EO^ecg7J%Vv7!VA0E2tq|;kkEZ2n zeRsDRlaX${M1K}M!L#8PvDunQcKz)^yB>3yWrgalH%AjM%v;{xP%3L>i*>H)yovs(PH3wwB!pcFFf- zt}{Z#m{-Sczc@o;`($cM{yFUp7)(6Zng1$3wA*8A>nV$TZ{1k-OjO*EG-p)q)oJSE zC|>Uj^tj-7e^aRbiBfi?U~S{QnLgPJ1Y4sOU5dQ~~XWB;Q6d_#}8@8=Xd`VSz9o z{#yO1R#y4{+of!a3>2+$XpOh!)p;3mt6W~STdPRiDf+OfV_|KnL zVGj)CrktcY)^>Quvqg9;APPEwhpLv`q2@HVHF%;-!JT=Zk-%_lIe$8}Zk8uT@KM=z z0NNHUiM|77ly7@2K6Vn|hdJUVkQ*V6?c1}HrfHuf)`&&90|GeGym+Ki zE@GUMTeOun+C)i~`TZ`zQq07-Bv#RwW z@e8swzG^>?a)T^>6VTIoYrwrexO!nrL+~|RxAYTJYJK{Z)!@+xX>~XXAQ^RrI8nD9 zaXJu%{>*w28+tZ{4ev>F61Dm%j~!ljSp&&vm4+|VD4n$-#4or#5+cHFY`yl-=B zONeU;aj4rJk(NVUOC6UZ`_edOH7Q*b|F!&*0&XBs<2)gI*u(`-j<=uKKjcQq`FS#E zLR!b2ZnWC#bLA6PsTia8+h~#e+iEA_dSah_Js?hvo@v;ul2fQMQrERB!RY zol!O6LTtq0$*-9AUxTG#kTqPp`H7`3_c@_8V9JkGrbn2J8jcc1YU^F{sJ-T{#h1CP zV$+M&YreI^Eiq6i1pU;m4yC;A79_0k3fb5l0}p$I$VkxAu%qzoko(*hnt6fW>lCP; zu)*9jqP`T!-M{p#7L|Nz6Vit}zX5DPQ`t(0rf!*i23peV-Aq$r_f|p*lK}tF5>#_Y zjZ&hD1I{7+#J?`MYAq4$$6plFC3}cp1rx#m&%mKos2;`S3~)c-W;Cyb)pKzQ+xz#^ zho??*Ep3#-y9D`2I5kEt5GmjuBm2Jxc(feWOtZh zCJ&-Bwu_LPW+#vPv}DIKy}&5Z?PGGqg?*2@eWDm(f8bInA*zAY;=s!FU!C|@yw%1< z5m1Bgmdbypz$_H%n|?zwU{vu?T2-IpQmW5DXLx*wvGmiE(x7jPoKV(C<|v`ak1hs% zycj-=HsXop`+AGv`=(485;-cHKU9f48&LFbr{|33kb~rzhSMS_`H8GEu^JTN_@{A> z(K#Qn0t!zGs{QuYAVS!X=A07{)<@j@diC-A!&BIUx8En*;xosHNRJxaNMTBn6;g4R*9KRgHxn$9B}S z20Q98g;)uvH*^a+s;D9I37rAIG>Y15)($ik*W(7tw{iLCl3Uh)4;lDaeuLWusWvH( zO(wZ;am&_oJuaWny*}u<2)(u;^{N|CSR)11!3pJy%!2;>+{l|GCJ;DE*-R*3zRkv- z_!P&zk-3$e8k?Lv(J897&0!o$mqcf==Mlp}3|1O1>df1t5dGmv4ZqjJ?9!1YhhG$n z$x|+tY7l{HwMsu`e=~SEJJ2+H-%$UGak52FCt70ingHo=Parj=p%@J|k}8_YV0K zBndBSM!BDU(dp>VVh<;fRJo3;S;G-UPLvf%BOECCNpTB(np7bZzgIO*hxj;;zr=Yw zUYULf$21z^0(a6Ulw=eqnik@^>K2s1>{33Z!-3b*E9j8ex2%nuY&~V$HE34!Q;6#_ z?tfC3@IW?fEb4Y-oDxTC**ZEJTT!J_pcyhvB89?4Qe+^h*-@oY%m}}_|5-s_%jHOl z;Z|y4V-$l{0pUey9>s!|aBeO5EqE?Ai@hmf8fOP%r9=~;0Hq!27UiK)#EPv){>Ijs zYeWxRds2Cp|IhV2$!1!fV_^Jd<`G!R$PcH$V&mnb{js;+D(YoIpBHNHZ~&E$tf zvZ8{qyG0Z3`oAxX5(h=lX_*&GJQ{|bI65uxl|)sNMiJ;c%_jI5jJb@+pSAY$M`YpOlPL zl6uKlJO>PXh*%WBT=Qcd*fI8hdV53`ySYM@K_Mz07Az~3vV98J2kn7?@K_$p{QJ`2IT*8Tz`;n;R@vzMc82)9ODKnA}N? zDG_P+CtVp|mZb5y;9ML1-Zc4#364$m=YUXSd>ap<9mTQPl}H7I^jamp*aM`N=QxHD z>dm{$$gLuK;J@T4 z%}KA5nV7C7tvhhN^uTf53gQ`jpp((Ok*0352(=uBb%-P$+Y6$7X)qmzs6R0PM{TSr zz`5}lV~IZ#o9IS~ZS)jBT5$DxtkF`%#p0P=qXO77oD|l~i&f>t%3)O$G;vYtF;{p+ zQf?$&1YjdGXelneOQ`Q{?q(tiR!LLz8o-2hLS1H`&7LSHx8Av7K6yos2OKDH`Q`a&UrI(8!_p z_ba1mD>hj?YYZi?8zczW;LgwzP9EC95}mL``kvEMS0QuPTrN-xvB;m-B!csF+j*{p ze{{e#-m#QV*8Uwyk3VfEcLcnv_#3A*?KIMGFfPG1`BT@UT5Rjgb`z8HxKOx&1irj2 zS>khmDCRjL*W}t8XOH%e<&@!b2!^iV1Pcuui{l;jKy~XXvD9EZ5Pk*wPvv~zMZC`B z9*j~8q}tA^aEM%Iu4vq=0))r35u_ohJdb=EN98|Oz=55)n}*qu{F`;ak_lYI#(Fvi zetXsM!w|u6ZjvLZ3hxI^sb5H$E3rLiIje&2Knt8A{)5DgCOJDk4E)EZQ$&pXJr<_I zFJ!{rva6==kBmg9`!xq$iVP5=eq)|`dOti?&ro~gc;2qh%odxSp#WXj;%=_RvGqoY zi~NodS0b|eRx;I*U&}LtG}tpR!hyksT+RwQ3z(n1%#o^-J=pGhp$qwY65e#ZMGl~_ z_Pt3q+}-qID>B23pOLQ$y2S&-V~Pld%$%xC=zZXAkDmi33vpC5S-1taB>Cv?l@Msy?OylpU*DI(;utw|%LU7a#Z zN6MoXY?g$Dd(z`K-+qGsTPS2WU>*mesERcB%|8rPem+t)*NPu4DNZa{efU_DR%slp z7pF`0K6c^?<`O>~*+iUNY08A#!Hp7a`5o&uJ?V@vf1l9)$PY7Tl=9Gf`r|i42*}c1 z4zchq5t&0MC22Jkcmga%2o2*Ces=M{k=|iVolVs8^Ei(EFWNFk820}g)1Jj6Iv-&7 z&y|m1?{1ZD3?=SS#mIFFSb)I^B;tvodP z`-Q6sA+&tx{`n7NLpKK*Q-;cLl+UNr%kSq_H!n2Ox&KV{iy(q%N$PU?jn=6(*42oU zbeQ$kd!l+L+$Ns>Gd5pf<@wOtDpe&zK)N!9-`|F1~0INok z0!$xKn)l-g0}iOAPy|-;g-|G;^0%J3viV&%q`3Xz-kouA{ZR%%G}I4%lunE(&3FE? zA@_#acyBGkm6=ty*Ua`{s?6|(Nc*bz(EmpFr%t(9Ka`r-1ZE}egXm9=2GnoxG`RkH zy*b||C*ew+eNT$x5(mX(e;ht@9H`gEBPZrO$6-q63n9YplL?Pk27FdD7!HQs@vzKv zG3Cc6TNUTUP|07KDeLc+dbSRB8)7_W zy2lx8?EYkmuWIQWKNESR%KSzs7I?H66h{v5+cpT_H29lzudk##-s(2< zh_}ge19$Gy9_nU)e{h@T(cG3B>AidysI+!2(rmEuMy5qj`a>g^rdE|n{HBQ2G`I!s znJfFCf4Pslb;7ne`P*2wF{|gx8MW;`21%yO&>5#*rAvN>&~r|i(fo!Mx@Qjm3RsEcQYHJnKoJoRtjmgRyUpiXX?j@>3s;=N$A<)B zIW(bAB2w}({}QlW7l?X(Ry(79BSGj{RzqI9+-mrs!06_@!_Y&xAV4<~#l}OBcIk_Q z!irG>9q)cE-@OlZszeQFtOBSAtwz$?vg9Y^RyOih>h+bEng`e%dC&oiUS40G_u9R$ zBOs)qWlJt9&iY~FD^*xtUbI%Zv5`M>HX^2@r(YV>>~8Y6QNWC*Vndq2p*=zY+%SH8 zn@H_4-U9K2z=#3|14{?!FYP&-mBar@%U4-HQp;DqCd00#N!`1jRL!>GTKt&rgHQ3} zn3Ceuy#H)BSqN&VsP(oS79FquCKRchxoGRjDXJg}?F6Pp<(o*eFH$A09Uo*A>yGDR z$Gumn%LN!D{rri^dH5yX0XQn`)w{p?eUAOy-T)t@ey|Xlmac00<{nl* zPYy?NA{K&TzV3WIvw2R44{3Q$N9dCVzMt;1ItFU0*oGrSAPJ1Bh+ifrV8j!B|9svL zrC7tdIkwHxT}nzme#IPB4k7t_ttX~uMvZAx^C4nYQI)kYUyQ2d%|+?fO818zL%lHE zDn5k6afpwEPWVA{r1qd`FOY=pSK$NdM*Wz}IL`a?yM!FHo4|I$7j&tyxb*3Kzk9jn z{bg!hk6wY?3$Gflv3OFun_#xHxr^(gq?=7HXO&aNo0^V~O`;6dP9x?FOpo}-2W6FV zk1tQ+XPe$|*46b2KN6`|-J`Y?*|T?;5AxskH+V`Y`wyHy%0X zqw=~W@*MgMU&MXp6emK_%F5G6oh_^+pDie~?hmkM-K=MiGAn(YJ=-hxH>I!cOSG8k zP$EA#uf&lQv#n`uTu`FL<`nSRT+cr3^QZ07WIuay-^`bKMWjnaBdtl=;r@!CNN+w& zH+=IOLoj=!`~W8`Beb3gl-+|VmCZDzqenzJcA@dnzK|?Z#d1_9!^oKVHGSuxi!hWD z$i*o|PSHV>T3Wm*XvWK}ocEnhNcQ8D9HN4n`rczq)61fuJxWrp0$1ZtgA?zQ7G%>9k z)E&;`rQ$MYszQNofVV&s)5#teuF}2;PgBcKHGdL=$Pz+Ky!7{d0A7AqzHKldsRB<- z=JiP)#VcEYx{0(%jgUzCHI~82nsE9>lg$Mln??RUzOucK?C%hIDL{)MV&Ky9Q#4iT zV$}F|2Oiz8(=>bBbf*$tsPh*Ej(bgHJ!|BcLBh%6q?0Tm1b*b^H9ZVJ{zSCs7+rGdi;U+LIs0 z(A$sK3;eE=0)*~=V5@yEpVK<062;3wa#k5L_RH?OUV@a{^!zNRz2MwQ^Dkd*j6S5b zCDVO!S@S<}fG6!hy>l%mS-ud-#Jgfx;VZ5UVT7ONvf$RWosERrQhBI@`xQ!Yp58i2 zmDic}slWJz$`>;$J~=Xw2?$P6THNvs)6ByxFW32UK~*3gaQ#{ zMcoIUjDK18`6DIA+GauilfJ8=zuc4zdSypsa^i9(LYOtH-~Fs%R$q$SOD z(e)U6g|B@S!aO7Ee}7pJ;L*8hIH`+{82i(>2kRhF-v9MO+D?x_vscDMTJzjcn`!k) z0Vm#9%&VF2YgEb??*1wOk1=td$woYzquVO0YhWj~EYC`$O3X-u~ zW8?i1CMV&GL*DC1E#X>V8Id6&=FF@xC~pMaKGM#(dBD$75ouw&V1PJ!lkxJv170Lu zi$`^S#*RH*#DB69=I(~?Xz9S#on5|d`Jdc$2A4AsP^B884I2C=&#*m7%Nfg)ud&l% z1yN}00;@*}55m66idRGssBwhTT%SC&UqLXiDyS7sa(NaI^zVA5qC`b(n1p%AAs2L; zBp=f3cVvkIE-ZPqNTTJzOP+Wz1VZfW3q1YZo6fBA`8lwxTy#V`f%~pn-A9zobAUdj z5ADH2%=XVpB#u9&@XVO`8^+eiOh8;nYn6XX2V~v%qOBusFr5`#mPkfg1AV2fdKexA z@+#*)?7|nv9lQIIGr#5X+tF+1ov#fts=|lu9~Oy>=B*#ut#23z^t6fC&XDq+1^l69 z2ZDY6H{KZ7n%6_E0&==w;(+pJ(DHlCHJH~2-XRPcN+HM7;ZAG2M0~ENo;n0bm2ej<9z2T zQ88mG0(6p07id`5fMSvA{58|^7{PaG!oto8rHj(C(>JuJgBJ;MplwdT8tctmjxwli zqe;HVaMe#)15f^tf9(J=%mKJ2UeOG@P7sH&QD&UPUV3y*Ovxw6k_WO#YVOJ;n8Uj@ zxQBi6QRDcQ;D)ih-eBx+8qYm0Sdmht$}9e76;MnvDd+7YM)5gy$OOQ0!=yKvWsA|} z+q^2H0ho~&YDVwGZvL3tEIZ?}t-yw)^x%ox^jj=WnFBDJMBzn(y zME`qpUX^ER0dUM)i|hATV@i3g$tnAt04G#twAOJFn#ssk+y_m8S1a*4fd%T z74crC+!I<@Cc#xF+#f)HeO~*Cj{8r5&b9lx!=eq3s2Q zW=DR7Z3dhN4sBVtxwB4%-O35sglC?B(0M8#&6T z;P}sjv!G6(lD0QWJ7UPin&0Gv5u4C(y!8M>U%<s3ItH9)0xu%KieTxn!Uk-Cx`;)epM`q;!ZkYn<295?1fr)>%oW@AkSxI5 z>qkvX>-RAc_(PlgKk6c9r4|7zc3a-b>^(X>bV!t_-@{3A)~r{NrICbl3DY8y46)w%j6tKFkfv-+ouVSTB2LnBZ@|%@vRRAxpK@5+DdYE zO#45u#(I|=<2RwUpO5aZ`KLH?s)iJRoiEEMoiT=*2paL><%cOp`=CGT;t>k>T5RBI z0Qjn6>0Wn<;medd1K>4YyC~EnUMuC7mjg}e>&!{mp7r({82#8*Y|AwZq*WJA5I^_~ z!@uf!5y)^(aO7#m?isSC3Hk;bQW+<7$5)1=_KzQY%Y+0YMk6LVHHs>@LTGZLJ{o(3 zB*g+odyEuDT@dU?N^BM-5Bpn}LhH;{Vyb*}*buqYge+aYmo}J46|3t%%&$SY<-oeB#Fm zpBR_*JE|h^KA(H@2qqLPhOeyS5}A`0ugY&ndX^>?4|9k}TK+bddav}G1Z@l42Hysa zcOE?a+i@%3$;KqQ@oMHxvM8XXn}&S4jD0Dz`>tDT_+N2WUO@GYW1ywZF>bN#5^ws~GX$F*k@0 zS5Q6_pC{1qc^_;uCj^~xP|i?A|7$q#uoGB+uq?!30^dVS{GB6;XQu%6*M7 zmMM2HAfF$)56sOOD@FLdJL+J0m`Vtc7B?M*jYe4N)kl_~TTx$`%-6kkWwGs!OxD8C z74cWET}=Gqky6yDJ5eN=gl|d3c@Jh`#4p0Vx8*izVRv;h;2(NS;84W+2QNLAv;lj& z+!`kVcN4!bKU_r66nB}d(f4(L#wp*t*Nvk{J-FC-aZ>3v zC!5}WDd+|iL_k;nSh-$}N>&cr{ua!$S@@9?g@g9C(N5@lkf7f)VT>(6$$GGCI+xV0 z_~<5u9W}NZ**L&o%9`iXomYlR7<55bK@Y*s^81VUNLjixZ$I|hA2$j<@28*HHGZ~> z1F|Cr;bRKFEL}$J?5I35knLO7V*5Rco;jp1yvD=uKL>UK9hA1G%TQ;nGVoO^%p=U5 zx9h(1XhJp*w4QyX^f1?F*N$SRiz0{c0VIgT@nvRYkgCDx2B`t-?ZsPOXE__;eujag z&SybcQpQ%^n(%6%O<(1_PIsvNV`?{H3hfv{n#m}&e#Z`$M?2=xu2zp=4 zKKvANH3-q$U7X-N8#KrByY_n`){f4%w~yIf7y}EL!Y~H|<@<&VBk8%7E=y{sCe=DG z!e3_B|B&?gwIJEPXeDm^R8yR*9i|ibclM}l@Xcoy6@u4xI=|WJJ%?N}<+hk}no4Lr zZyzFZKcn1^f-!#UZw3HeISw=DghQyW#)$mBxg*K(6Xq!0z|7g)qd)eh^{WG-Nz@a% z)p&?+5XUbeV6-`M3(0L z21O#tdNb?3mT&7pf(9>^-v|GWfwBriUq#_VB@ABjkNq64PV4&0?lU1uaLj6P>{Jn%6@O9&z61))CT>;Lo* zGp$6Ec0a?$9YMhwH<5PYVtBIJ}h(K(qBUHLG=lbJ^_M8NY z%bwp`pP-pGN)CnE>t>?+Uz3-Ib>Y7!tba|mG}j{QpplgISDnelZyRo+MfBC1CvLwZ zJ2sBe=X}m5-gA5Tbk>!XHb#g8Foo%Av}t`ue(~ky@abXlw9CEwO>DJvpMNV}VHmOO zNuQnWInzb+2_4jOl*OAjQ#Fv4!-lV3CQ;u=4cvkwH$L92SKm< zfwVLEv3%0d*P1ww@BVh={at5tm|!I)!~sqbVUv{A%trCTe{~L7Crk#q?a%x%e=9Ko z%y+!>V_oMIK^)}f*a_v8v(mif8ga+X-?f|v|7IoKam9RFKVJFcDs1>glM{%E zUvzFlJ9PDUCFQaP*2f$*66tdoXyMp8N0yzLG_gNbpCf7WGLEBc6#z%MlLX2S;100i zPZcP7*u+anYBHJ;p;Tl3w_&(t7YbE}<%P|U{0+7q_K*Tf@UsPGm_KHO9@2ZV z_p(L4s$uXAe<9pOCq&)u#dYy|EGdzz#gJ>*V^QyK(@VY$Xj)p3!*`Bb8CU9%ohd%= zNkNjVUkd9GSr%~nCsYdE-p5ZGa5nTPotV+2+L&a9UxF2rm82h&27IsUT2@TNErD@V zu^vUyCk(ORfV$8z4K35~W@e~+;R@vNGZQIUpENc?}KE z;?lIb=X7zTsDbx2QF?|Gu}lyeB(f8_kQ@!=SwOO-lK$&gXD zJ%H9_EPXp0DxAD_oT-1Bv+1IXef(l8&FS#zdZq2e(yz9?3f|;O1(TCTHUIy%3rj@C zg-=e*r-z6%#7WBX^NEk;BRJ;}IRnGRPCh@ScS+17gDpDd7_!M4?;C0#K%wlQSDb>x zP3>fLJkM?;+!&>Tsef`sH7iYhvlN!A<64o3S;<>u-n6GXD3|@wCfeWYmcQ0}^yPi% zE%>RLH`$z*_yQAMzP<8FSB8ATIbOd?m%|VZt|vr#rk|@bA$7Ku?4r+2q}35|_8^*3 zhE)HK^r3eOP@`WKGPkf9dxBCMvWgx#$F(dMIWYch2!7^2J;kGB6mMWDpYUz8v~dQo zcUAdi{3CZ8gQ9z+m>6;v(smP7mM7ZcOK|-V{DyTYvNS1ltOeI!ATpX)+rIA^(eV;H zj(V1AWxg-dAM>cP6xG@XZ!)jPN%~YYb)fqtnX$X35C-Z2uN5_nKO|`JQHb*aC+aIZ z&8HJS9f@e+q`1SiOjQ!}VpX9Fd;9L_hls5|6Szb<#X{r7#og(+!ebQF4bw?VM&`=s zoz4;ciNg>N@4Ym~Ln=dV;!A;&Cx&D#-Cx&{j8uNQ{E4o8M4!rtv}uRzd5GRU;3gZ5 zgu%|PKBEemc#p~Ee@QBx1?c657urmQ?fagEA^g<&GbNG@dk?5ZGn|_}ogND6oOAH! z-t18}C9^2Oi;85Ft&yaEI_WYx&+Z|VDp6dr@0R!5L}9feOZn9lg~wX}Nzh`}57bBH z;1Bjskpe4>y#w{EZxZ8zzod-4SOs+^hcb)SUFxWWyWV;pcit=C$(sF{!@g_=X0?oJ9tD z-($jb;J;DFu0i6GBu65MK!SEy2^x^E{hNp@9Chh9$G&Gf#x8e_9CT{At{?FtUQr*z z(zJ9)U?JlnfU*wiyfEhK5#g*ZVyxcFmI#g)q(viF^cgw@286%Fy_0dh?%G%krOYt6 zzWb@W$YkHk?DGa~QFew^9_}ZGLUSYeB6C}OqZ0KBsvKJ88eiR{N7{-&Bfe1e1i01ZmDBLU9~YsPla@T%SEGc)nPJ*iAjdf`1h z*Qiizc9epN^vAl=Hz1tppyUbVWAR!&#F!m-$^kL2G9d5JtNINUB=uoSXv2vY*U}@% zb}8+6=C)0aM?Ie?{*||ENR|&8PGW|aG z&sjVYLS4FWKb0Y&EJ-4TL5)BgE*FWY1=g2ABtlRl{4=#hJ%%mus(UugFEnx{>UCag)uZLPi;7U7M_X6Rr{6 zvWkolU4;-g^Kz}M%B+ZMC1h_IzxU_+`|m#9kH`C*^FHIg#`F1l9-5c8({9{5e{EQ+ z)DaJiG#QscqfPhQP{x=Lz}04?2KGvFFrMac$8TSlu3iCAtf!7wCch~va^Y>z?fQ*# z<7YB~!D}jfU2^9q%%)VA%2)g&#NSxq;O>r8Q2a0{n-q+?AnY5FT8u;LP()NkfRxsH zh4@f*GnafOCGEsZ;UbKI^ov;cN@4a*$PS8Kz(33ia-i8ipW0gwZp)1<#PjAT%Ddo@ z{4TJ~_XKSLpso2W+Up`zU&>cjVH|9uR%6_fUp<_rq}JW?*nE{QiaLF?rG(|_eY2fH z`aP`6NNU@djN+$GwH#~t_OuJWtpQ9Gd(7i241l^oL0Y}0(Qlfg#!9dsod>mV;9RyW zEEA)F_0ygAA$S^b$m2V_P^Y5Vz6Zn4( z7h?xuvB+lYhdf@?;$Q&9`ORJ_lbAc+!YLKGYkDH;)pFtIIz}K?e~{X86_XkQDU%`;|ECP3AM@6#lp^J#Z6b` z!*@LI7z3AGVQ?f$W#Mm{qA{XzZYskLOtuX{5r1Aw?Z8OSN2L|4pYW&*9zLvFyrSQe zD7i-Gm{?mQpB|I~)Mqx0jLESyCkfsH2P76PRc$UXmUGkEzqR)!ah8#fN$NYHj@`x5 zlEVaCUR=t{k912i&6_k3|gUStfDe*|qq*d>2*FN&o5&c`RAQ$+}K zhxu#jUhK#?_!7ww??I^L9gK3k)+ZI?_9_SGOiS|LiW_EU>FZ5XLQ8|qJF&=7g1;Yl7E zGQ7j$!`}+NhZ(YE0p^TsqY14&CjhLCH5{_sQ)$k2y%4B1I_s@3yRmmWY?& z$N-SR?fH`oPmq}`|07oft04ap=gI9UgyU;$RWb0k8lvO^WrSwBnra$X1KB>Q`MPY4 zOzV-J6(EKWQhiokJW<`eZT={WF9E9lCUplija!n*+gMug>c5NNfxcj=!#)q~s4CF= z5Va{LG|eu&ObO$mzJZNUU2Gm6Ph=6R0n8f*>{&UX$#8)gsN@s07+o6aJ;(Jb6NzJ_ zwo4sPj>Pp*1k!aaS8ugE4nJSU@9=F_n{F#zggnS(ZjL9Gao2wA+{pg2m;yWAP}jz* z2Fer5?HiG{n5mAQ?21`(L%rfc1uz!_=J+R=>sr*wG*mY_54P@`OhjLVv0&c#ZKOeT zZ=YRmsEikAY9`tn&hhgl;IF(%tp&35;fws{>mYO51h4|Qv_&up`Y$+0q?A>+U{5vd zb(Gy%&2az2c($ecd`7}9eSGZrH!ww8gf=Js2W&eR_qXR3UYHAS22->^T*CEo!UE0x z&dL!bvT$}O#td3okOV5k;--IZZ&h%Z$omN*4f{7?22a~cHmUhOB9%yj>jEf#{LA;I z?A;y-pQ=p5F*jBFbb**Q8MIFI4MZzQn^v3U+jn;wG-EZ@(xvU&@?9#7eA;quf(>Cu zm-Dv!pIVnn0fjH`??h)h{~i#PMxPWVs`{?l?I&GC5!lba#0HvvACSzaq)OcQj%tv1 z7f@ln7p7mzy?<#(^it|tQ}aPeiYx)TXsn^crHJ|*t_Z17B_SBzFawR;b{Kc#vNH1$v> z#Q#%#z1d6nn>$)2N$7!o*Z!>0N~hdDa-xz>Me7A+aGz>Lwk>c1kVRJA+S5Bhx@>7D z()o3~@;_xb16w!Gio*yidCc+z`aD0I;rJ{8V-<_Z zIEUiF3@r7F)(70D&JUB664^XI?|d0q%(Ty`L5ntljGnml_2M0`-sjlp?6Fz+&_mo5 zIj7{Z2qGi?Udf_s2st~l{X71I=ipaQw)gncyq5Az@XR-XTXss!Vm@4q6PKWBY=`U( zth4}?FEXp0!Xnw~b5_u|N#U=C!R2xoPs~up1ukSGW>FY5R;6e_`};pPsR_pr?y>2} z^gB1Qs_TRAo8$%1_K36GYR<{eRjJj`o^G)%h?MVfwvo zbayqtH*7!N_nP2K2!M4qgR*hV-R`;sW(k|w>GGjI%QnUOCR|{1)Fb0*QA;3*p3arB|ptUm1Slk@Kqd=56vPVrhex zwrw_#3{$?hgkPyRKa5*2%l)2xc5I=uc+!b53HjS=T(rOZo%7I{-qmCho{DA%LVxI| z0emcbA3P z&({o4dHO#VDbp(zIul*2=h9%l%R`dGnrdocdSH<~Mj(<*y+N0Y8AHvHaLb9J94Dvr zNEzEq>^^@kAPurV=^qqQsaXrL0AXNN@%4!wqiLft1Ow%l{2?~;4( zx|svK;2RVtUCP3R%{^PGP@HD^z1=<-kz%hfZV6q!FzcYQt&*GWHzad|XXaJVkf$KEZ+l%(@v(V@eNZ&|)0WW#&#?xX zSQ=Od z#$KeUqpq(`q^oG39hNHs!YpgUHzJx`4ZtH)RGPc&HrCdvTv30|{v9;16kW4;)8RL2D_Z~BuUh>M~PjQ$Q8u|gFBH2!gf)Cc0T&*JtuyRB4t;hZq%i*CH z5DP36+VW4(Ypp`Q5sDsOHsRaqc^#FNgf?Rb7+H$BbKvSnTqnq)vE@>(i;Ffx=gd8} z-J5e=%{GV?qXiHj1iQ6<*G4WUUw5=Emp_xitofaiDOAvC8miRC_b0JGfksm;Mf1uy ztt@YysW}?px5@rai&>Ip=!3ni~8y9 z@Kk0T1F(;hND+P;&rpbHfj+v5(7F`E|??cTZE=t|Cb zYm?Z=rroQe&^GW>(On7<9N<;FZktY*VK0_}0xU^-i6 z?d%5cPAULv&Y|gSzb@mt%w)Nbp1u)ieM}P-%QO%4G`TmcJ62c zu3l%dDE>>+ZMjL!51>b4yr_4`smP6QzI|L-VH-o~*n{Uha!9YK92&|dF(6p|=pLcY zZ_uGXyNT*JAfOkZB1(;F7x_J#kpj?YfT)r+_9Vv;70Zs-Bjr}NiU$8>sqNN{x;=e; zD~dXN>tP=3jQ>yB`q~Kw=SUmHaKhjN`JLSBO-cdcw&~AaeDQJMHV;{tq3W~z%6(yd zXGsl?k%P)6RYRKPk;JzI<5hsMxBlVoE$7Cof!_@C)B?qAvK5w)B5&Uc#VkOx5~n?j zF^aV1Nmk`nV-2bt2GOn>UaEXN8J8@4_>My{qG9A&Rmb4!e$*cFx1|43G=H@LssM5u zl=+{c(9HQda8fxxY{n5f@X(l+r>7Ll_U3UI4>s%6#YYDzL;H?a-gZoG8M4E8t7s^}c}#gt)fxwOJ?1Ij#EE%?*2EtJY`)_&1&7>Lt*7)Lypi z!VT1zf!@DW)JGk(mi+6f18ubwS3XHytbO-%d1saDduaoCqi#W!nhFoI%bs>&-(aDo zrA5H8xH7u0B%jhpla$Xk=OK6mK}CyXpFh0dWpy)L-tmw*@7HAF(7zGG20hJ%Peg*|5ikRC#4`>k7TmtgaVk~`}K7*{So#%9I+!@t*7^-ZSM`=Rb9 zKfPruZsI$Ea%w)uvYS`x09v%)RPPx;r&A7xuMICf_npiVIghUZ*{48P7wly6)7nPRz9PM4T|#47CUkr{usq+2{$bmGMqO(%{z_+?7FpqCfN;;49}%l0V}HqYLf-n4g$HW$Xk|=#Ym;0D994lt)`0LulX@1Bp_5&# zo?_X~B7D)u1xu*!{oy1K4;8t%0M2vYkr3Jv>dmsHw5cAHRN01v+!NOnK8FS9pt=17 zB2x)Q?TJ6(jI1ACr#9(c-0U7LE4r)AY>vKpaSMc$XF9P#i6qw}jN0`PG+wl$bcFen z)rxteA%}n)B3MOx)N{rAmo3-*NjJmpbCH2G<_!pcbZRo1~+2c;l74UtL zw)F8K{EuDR2%zR@h!P_AiXloEHn}VriT0@2}l;PDM zta&&0=!vr#R4|?aT{Z-rQHAxd8007W-7 zSPd_-8>0InEu~+J`j8t5#cRP74G`p4KD(Jt?&Z{9*&=-uskGI>%-I9f)3{8F| zV%cmJpQ&#C6jI5INhYj+US}lZ+)svw<x54Cwc}Cdwyp7cAP47> z45~b-V-eH(@Fvv(qyqv+>pTi8GjzDbhZ6B?>)&9u9%KJi$Sk%G#Rsakt>hCmzxXFi zZr?_5V49*Bw)ZSl>DTJpk0y)Gw9BKZ%+;w-)~*ghCwAa#o#d)gO4DU{1!GAkM7c#U zoHkoiOf64QFg`uUx|<57$n%HA&}O!jmy)IY?YT#&8j+%nG^fd;Jd(>vNpvkSKs=a} zt@;8MwjKLI9$nufexK21zy8_a>s`6sDQ4b{N3YcmsWqiGQHF=*v{AQtS$Xy(>#2b- zgoy6-;WBr#;rRNWE*;^PqNpM>j6{LZ){ zbfou%isNE{%*lbYsu)`texDo56X#+WG^HNIhPqG?b}DGpZiE=>`efis18}|igd80% z9J0xet9*SR)2zidgd@G&?HGm^a?8G(V>5+3B&=-AZuH~a-K_bkalH@{qL5GACo$VO zp;b_9W~Z5kxXttZ`&SX7GpZmtsx1NPaClMDe*R5WED6&8;}UET8%JoAjq@f@)q)D@ zUT>UJ-gjBbK8g)~3qF0>PWR*lo2lzi(Af>whk0aP!Qgg5(=^Ej-{Ll7{mFlR;8z2J zwTMfsNa+nWAVJq8Hc{Z(sU6c7!4Bu+qizPv(#YG5b?NPy%(*ewVPD_h{A)@Kik`lH zZ0i(WC|APZ_c*HP3xhA;4~~&OfRQ&utKA;YN+U23XRMvzP0mri?+2cWft*C;TYNv0 z1gdpg1zWY5i_!D%UvDfT*FBR#6Xh%VQ0YgxFV}xR(9z~hFlrCqX}6(#&^5(|MX!63 zd$V%vfn8(Ga>%FJBXT`XsjP!(zG%L3s-gLku-^)!O;blvcr5zDS0~g`LC$D`D~%Y; z9V<+HyPBoTJ(Yo0pui{r_CXZ=aHV9c^~(DY5y+#ssW*fwgauD=p`}y?FeO~neqca= zXQD@X@qtXyQPdwLk%#f{+xga@JHD(sA2BRtSaUv-$y@BWoUb z6!c*3wWkEQl+x@xn<&-8t1A9=T>;*3t(w!TkRZ7^?9WBZ_(YMFGLh-m0}()G(`d!0 zWc&azXcSG!OBK*W_LJ7PtINRR_LvNl<(HcD&9s1@-(9oZzWDA? zO0)8YWZ$;+*LRX7JY9<+!a}}DsV8PYDgktoF;S{(PjO4L8MyTf9F<->ex{FVcJnz!HWi04SfMlBJa%e}U zD5PLTP|70B(Sk;^Mu=%DKMdpN>iuYBuQ7BzCOwXJqJ8=qsh{xBxK2WGTj5PA3t8$Z z4r%4WWXVrEgjLybecUwd*-o@0T`H{qDN>1N_>iIh4W8OzNJlDj`P;y#ns;upp*!^Z zC6PFpfEWE=1Lffbb1ND}Bdo9U8#IfDLj-M2wgH#B(*W*9ZPT6L%4MtGl%7`6Ya|`I zYP6VrXKrA(XQMIYVH}-}Ler|nyE+CM5j9E0^mZJ?lwUBx%JS`+wt&0F<@{?;bShi2 zey3~q-N)WtdSyH(mX4l1IYNZnI;pUS6?&8iKepPu;toV-SObK~{ID$eo&u13ZeHV`x&Fh8EeAPjA(tl=h?wn`NEXrFIOkZ4wWY?KRRjj z(Kbwcl;Lg+F47M@ZM2qwn>qcGY=fuH!~g3*ucZ6iAZ;W)AcX0`yc%#!=9&SL5E=4VH_(e{cQ->R;Zg__)kOELlbGdYy4hjXU@U94(hU zXE$lH3`^&&Qyp>|hNqD;KDhEh@RyBM1pi8OO3zQX92Et+b3EL8{R;z%3OR%)V(TJy zzMp(anY1&rKdS~E0pdZ`hkIQ@ojB;{C!FZln3>MGN8dWB?t?G|D9uDvILrPwO>THg43 z!SfgDnQLFPda@N-k?D;g(!%9RF`7XF%CFDb&Ic{jmf6N7!z1F1b`k<)yI#v-T=|UT zU$9)oykNnK7_@jTAb+C>oz_#m+!#QTG-9i(x&EQ@XDV`Ht=HJ)&@2UuZ!biPor|1dE!d|IBF`%U9@L z=em3Uqp!@T-fsFp=#bIl_u{%1ATB;V`%A$(wDD*CL9m5P;ctjs(dTq zp-*2nfS0PoM2oF9)jVF_M#Mnz$`OBa&NwVrX(r2=n}um_1sa%97D;KiW?2}El7>H@ z(f32z20z)&?fVF+9|kEr84`_3d*=?+&!lmFt>qNC7U2Iyf%r{p_Zxl)(PmR*~3yk#V%m z&vsVBdoDL2N^Z#%{FZJWM+7e)yW@4lnH;ReaDfgASU{1(x2}iNQ&)>PqTGLyrn@?>O-jh9&QG4&rga^aLP1_X=0Xju(I_ zYW#6DghtpPVmR?~ux;0`pY~zf#W)`h{4Ln9Hm90D6kntlZN`b8j9WOlj<}5L{R~s= z5{cy~r)!phF&UPGSw>DI^#;Z|t9Xu!Xf5G`yvKZuYeB&EYlZ*9biKTfI)hzI0 zQpGJEh87?4wxDR`DXt4!KFT*DIg$2A(z+p(Yq5Tp(4K{_adn;Uk}on_m7r=&fa_%P zj{hrPIlJwm2(jQV(K zlWOxV&UT3M;~nk8qctVW^HZgc{+x1x1~$AfNk^OcCf(GZRhn^pKgbh2c-oQD54a_lPm!@pCp{LwHAV_VIh7K;F-Iij z<(1ZVgjG}s+oniiypA@jstv+?@1F{2qkIL+eB8u(*g%j+joIdH%LxR>u)`V4nhDf* zRiD+4`qH(C?@~|OjMWvcLIH)72$CG3(E-I)v0@tAsN?s`qXnpt83)S*jBGEzV9kTU zP-vSk=irqi-t4xg?Z@eDWmhSMgtHezWoRNn*m5j_6qptr0cRFFUAl*i=xbMwY*3;_46PC%jG@2O~)U$iPhG z@yfg&JBIy)y?`>~z_$Rd2V*%-5L-s;q-23WpzM=+!G&eGRO*LR@0I=(^HkfQlxp6+ zi;GO6&sQ{|O^Xb$96OC!X;MOKZ;JbgPq%NR4=e~P!K8onf5tC)@^vQ_5mF2nd?~bt zf2|MyT?+RJ*cCr^kU5-<>xz~FgJOqA88lf(14}!ZyPp51>(Bd1L*cfP+ zbK*Cu=W2g~k$k&i&<;7|C_Ah%M4i*gg7Rta^uJz-)K!4qUu7W)_n1*b!lB`M2!Rx2 zGcND<=~L>c#|~i^l5Ga~Ki5EWr~oeRn4!2H0_;5}-hri}qSgKHjsO*Zkdt9a6)uAZ ze;F3|5jWafE(e?ni0rP-*O~eJi9pmZ{AXoBY=z-MFjTsrs}@*X)5FEu8<;_KIn7jz zOq3O#{*#8g<8&2m7|SDa0Lh=kO=#5F4)gB>8=`F*_>caaF{ys`|3dvJ^9xVjHj9U> zU*EyVfV#~XM97KvOgJaO=2*J5PfS(f-=)oz>>|gndy&{B>>3HmbbktY)TZ~ZC7@{g zQsj@Oqt#flnNk=X4@if~DPUEd{|awTvI8$0(K5R0g92C@ZORTn*4wJ*%We12!Yi# zo7@c^6D9pT1&TE&3A9*Ghl+jYp{OZ=cJoYz>dun)Iwm zcF-(uI@~d#<7ZM!AB#W&0KHC7vVIAsX)Sg+Jvj{J| zgmXxzK^@LOG(f4OAgvsG2Q<(+33IBv75{Aab~K-cT^*uYaLCgb=PIls3~}MhFsi5) znc+YHs^yPbXgk(rnL4*%aTF)%ptHU?oGeuVS;e}At8NA5hRNHYD{tlkpV`@tarvXK z(3hwD18F7(E$ApzUz(qYl_yC=;jZ#hGW;(tcYTid3K))v$Aoq2tYbGmt72p*H=-mP z2e7-|Yk!=@6b3D&^iKW|dutWtl|~2KyP<^R zT7ot{>775W_dMyw9?{Bir3VpPnS~qJJ*Wj>RW3XXwvEBP+?i9|===-ey<~tnj(B~zj z?C(9RiWQYN84n>MZy&0cj)bkuN5(QT?*YCiSo`2Z1F($DVmE3~-P)%vhS23FHg1C0 zdOcK(&DaD=83k}or7J80_p%nhn_BX}nyFNC9*sevCXQvV13Fyc2D0db$O6Lpw)VGZ z%u@8}J;#`NZ^M$DwmSeKSrW(WLFLyN{oG=Z$e5jfg|os8=!>jsQZIHB8X@c%a0sd9 zEGz7TpsrV08kn&WSyWi^#*PGF){ZEplnbw*?RIIa0Y=VPdbNMUkV|hDS7|2FsR@+v zcLt@b!1WC12i?Dfav6vJn>R)A8}5J0a{VFZ`#+wt<5S3^2NR?nn6){OsrnOkt(rG` zcXn-esWxZ2lDp1{ExY27Z3?MzDiwKQ=%#G+X)kJoyq_`EFU*M8;>+ zI7+}I3>O|!^5A<~tT$<+WME6lNPvqX37bcck4Tf)T}p6MFxZ~qf-UqD^^!*hze*C4 z)1SB}4!1)oF|nWXY^oI0d{EqEh67@ep4K`_XAnnG*u>FjD#~y{0Q&YNITRRtsy + + inkscape:export-ydpi="90" + version="1.1"> + + + inkscape:window-width="1920" + inkscape:window-height="1052" + inkscape:window-x="0" + inkscape:window-y="0" + showgrid="false" + inkscape:window-maximized="1" /> @@ -279,28 +302,27 @@ style="fill:#ffffff;fill-opacity:1;stroke:none">LCh + id="g3405"> disp + x="372.46689" + y="225.67583">scRGB ICC + inkscape:connection-end="#g1468" + inkscape:connector-curvature="0" /> + inkscape:connection-end="#g1555" + inkscape:connector-curvature="0" /> + inkscape:connection-start="#g1468" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + inkscape:connection-end="#g1475" + inkscape:connector-curvature="0" /> + inkscape:connection-end="#g1505" + inkscape:connector-curvature="0" /> + inkscape:connection-end="#g1545" + inkscape:connector-curvature="0" /> + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> - Any VIPS RGB space + inkscape:connection-end="#g1535" + inkscape:connector-curvature="0" /> an ICC profile + + + sRGB + + + + HSV + + + diff --git a/libvips/colour/colour.c b/libvips/colour/colour.c index ba7c377f89..f2c9246756 100644 --- a/libvips/colour/colour.c +++ b/libvips/colour/colour.c @@ -64,7 +64,8 @@ * * The colour functions can be divided into three main groups. First, * functions to transform images between the different colour spaces supported - * by VIPS: RGB, sRGB, + * by VIPS: sRGB, + * scRGB, * XYZ, Yxy, * Lab, LabQ, * LabS, LCh and @@ -77,7 +78,9 @@ * * This figure shows how the VIPS colour spaces interconvert: * - * + * + * + * * * The colour spaces supported by VIPS are: * @@ -135,9 +138,10 @@ * image. * * + * * * - * RGB / sRGB + * sRGB * * VIPS converts XYZ to and from sRGB using the usual formula: * @@ -149,6 +153,16 @@ * * * + * scRGB + * + * scRGB is sRGB bit with linear primaries. It uses floats in the range + * 0 - 1. It's convenient if you need a linear colourspace but don't + * care too much what the primaries are. + * + * + * + * + * * LCh * * Like Lab, but rectangular ab coordinates From 14dfda4e02661945be264510b8b7a7dab73b6890 Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Mon, 22 Jun 2015 09:35:16 +0100 Subject: [PATCH 2/2] improve colour docs --- libvips/colour/colour.c | 184 ++++++++++++++++------------------------ 1 file changed, 71 insertions(+), 113 deletions(-) diff --git a/libvips/colour/colour.c b/libvips/colour/colour.c index f2c9246756..c8d2d8d63c 100644 --- a/libvips/colour/colour.c +++ b/libvips/colour/colour.c @@ -57,20 +57,33 @@ * spaces, calculate colour differences, and move * to and from device spaces. * + * All operations process colour from the first few bands and pass other bands + * through unaltered. This means you can operate on images with alpha channels + * safely. If you move to or from 16-bit RGB, any alpha channels are rescaled + * for you. + * * Radiance images have four 8-bits bands and store 8 bits of R, G and B and * another 8 bits of exponent, common to all channels. They are widely used in * the HDR imaging community. * - * * The colour functions can be divided into three main groups. First, * functions to transform images between the different colour spaces supported - * by VIPS: sRGB, - * scRGB, - * XYZ, Yxy, - * Lab, LabQ, - * LabS, LCh and - * CMC). Use vips_colourspace() to move an image to a + * by VIPS: #VIPS_INTERPRETATION_sRGB, #VIPS_INTERPRETATION_scRGB, + * #VIPS_INTERPRETATION_B_W, + * #VIPS_INTERPRETATION_XYZ, #VIPS_INTERPRETATION_YXY, + * #VIPS_INTERPRETATION_LAB, + * #VIPS_INTERPRETATION_LCH, and + * #VIPS_INTERPRETATION_CMC. + * + * There are also a set of minor colourspaces which are one of the above in a + * slightly different format: + * #VIPS_INTERPRETATION_LAB, #VIPS_INTERPRETATION_LABQ, + * #VIPS_INTERPRETATION_LABS, #VIPS_INTERPRETATION_LCH, + * #VIPS_INTERPRETATION_RGB16, and #VIPS_INTERPRETATION_GREY16. + * + * Use vips_colourspace() to move an image to a * target colourspace using the best sequence of colour transform operations. + * * Secondly, there are a set of operations for * calculating colour difference metrics. Finally, VIPS wraps LittleCMS and * uses it to provide a set of operations for reading and writing images with @@ -84,112 +97,57 @@ * * The colour spaces supported by VIPS are: * - * - * - * - * LabQ - * - * This is the principal VIPS colorimetric storage format. - * LabQ images have four 8-bit bands and store 10 bits of L and 11 bits - * of a and b. - * - * You cannot perform calculations on LabQ images (they are - * tagged with %VIPS_CODING_LABQ), though a few operations such as - * vips_extract_area() will work directly with them. - * - * - * - * - * LabS - * - * This format represents coordinates in CIELAB space as a - * three-band #VIPS_FORMAT_SHORT image, scaled to fit the full range of - * bits. It is the best format for computation, being relatively - * compact, quick, and accurate. Colour values expressed in this way - * are hard to visualise. - * - * - * - * - * Lab - * - * Lab colourspace represents CIELAB colour values with a three-band - * #VIPS_FORMAT_FLOAT image. This is the simplest format for general - * work: adding the constant 50 to the L channel, for example, has the - * expected result. - * - * VIPS uses D65 LAB, but you can use other colour temperatures with a - * little effort, see vips_XYZ2Lab(). - * - * - * - * - * XYZ - * - * CIE XYZ colour space represented as a three-band #VIPS_FORMAT_FLOAT - * image. - * - * - * - * - * Yxy - * - * CIE Yxy colour space represented as a three-band #VIPS_FORMAT_FLOAT - * image. - * - * - * - * - * - * sRGB - * - * VIPS converts XYZ to and from sRGB using the usual formula: - * - * http://en.wikipedia.org/wiki/SRGB - * - * You can also use vips_icc_transform() and friends to go to and from - * device space with a generic profile. - * - * - * - * - * scRGB - * - * scRGB is sRGB bit with linear primaries. It uses floats in the range - * 0 - 1. It's convenient if you need a linear colourspace but don't - * care too much what the primaries are. - * - * - * - * - * - * LCh - * - * Like Lab, but rectangular ab coordinates - * are replaced with - * polar Ch (Chroma and hue) coordinates. - * Hue angles are expressed in degrees. - * - * - * - * - * CMC - * - * A colour space based on the CMC(1:1) colour difference measurement. - * This is a highly uniform colour space, much better than CIELAB for - * expressing small differences. - * - * The CMC colourspace is described in "Uniform Colour Space Based on the - * CMC(l:c) Colour-difference Formula", M R Luo and B Rigg, Journal of the - * Society of Dyers and Colourists, vol 102, 1986. Distances in this - * colourspace approximate, within 10% or so, differences in the CMC(l:c) - * colour difference formula. - * - * You can calculate metrics like CMC(2:1) by scaling the spaces before - * finding differences. - * - * - * + * * #VIPS_INTERPRETATION_LAB -- CIELAB '76 colourspace with a D65 white. This + * uses three floats for each band, and bands have the obvious range. + * + * There are two + * variants, #VIPS_INTERPRETATION_LABQ and #VIPS_INTERPRETATION_LABS, which + * use ints to store values. These are less precise, but can be quicker to + * store and process. + * + * #VIPS_INTERPRETATION_LCH is the same, but with a*b* as polar coordinates. + * Hue is expressed in degrees. + * + * * #VIPS_INTERPRETATION_XYZ -- CIE XYZ. This uses three floats. + * See #VIPS_D75_X0 and friends for values for the ranges + * under various illuminants. + * + * #VIPS_INTERPRETATION_YXY is the same, but with little x and y. + * + * * #VIPS_INTERPRETATION_scRGB -- a linear colourspace with the sRGB + * primaries. This is useful if you need linear light and don't care + * much what the primaries are. + * + * Linearization is performed with the usual sRGB equations, see below. + * + * * #VIPS_INTERPRETATION_sRGB -- the standard sRGB colourspace, see: + * [wikipedia sRGB](http://en.wikipedia.org/wiki/SRGB). + * + * This uses three 8-bit values for each of RGB. + * + * #VIPS_INTERPRETATION_RGB16 is the same, but using three 16-bit values for + * RGB. + * + * * #VIPS_INTERPRETATION_B_W -- a monochrome image, roughly G from sRGB. + * The grey value is + * calculated in #VIPS_INTERPRETATION_scRGB space with the usual 0.2, 0.7, 0.1 + * RGB ratios. + * + * #VIPS_INTERPRETATION_GREY16 is the same, but using 16-bits. + * + * * #VIPS_INTERPRETATION_CMC -- a colour space based on the CMC(1:1) + * colour difference measurement. This is a highly uniform colour space, + * much better than CIELAB for expressing small differences. + * + * The CMC colourspace is described in "Uniform Colour Space Based on the + * CMC(l:c) Colour-difference Formula", M R Luo and B Rigg, Journal of the + * Society of Dyers and Colourists, vol 102, 1986. Distances in this + * colourspace approximate, within 10% or so, differences in the CMC(l:c) + * colour difference formula. + * + * You can calculate metrics like CMC(2:1) by scaling the spaces before + * finding differences. + * */ /* Areas under curves for Dxx. 2 degree observer.