From 702673709d42876b95a512182b8fd3cb43ebc1fc Mon Sep 17 00:00:00 2001 From: Good Guy Date: Thu, 27 Feb 2025 20:05:49 -0700 Subject: [PATCH] Credit SGE BlendAlgebra/BlendProgram documentation with Latex formatting by Andrea --- images/Blend_Algebra.png | Bin 0 -> 34003 bytes images/Blend_program.png | Bin 0 -> 30657 bytes images/blend_attach_window.png | Bin 0 -> 92925 bytes parts/AUTHORS.tex | 4 +- parts/Overlays.tex | 36 ++- parts/Plugins.tex | 445 +++++++++++++++++++++++++++++++++ 6 files changed, 478 insertions(+), 7 deletions(-) create mode 100644 images/Blend_Algebra.png create mode 100644 images/Blend_program.png create mode 100644 images/blend_attach_window.png diff --git a/images/Blend_Algebra.png b/images/Blend_Algebra.png new file mode 100644 index 0000000000000000000000000000000000000000..1590e2e33d3979d8ffd0dcd8b6ab9f588486b79e GIT binary patch literal 34003 zcmbT8WmH_-wyn`1!QBb&4#6RKaCZw@xNC5C3GVI$cMl%i-K~J&?(iympM9>JeQvw= z{aCG9n^kj_ESY`u@%0K*kdr`!$Abq014ESjEUE+s2HpeOvS8nVMqpIHhd>W-cAqsJ z!N8FEesAE3bV&H1K?El;4JRvGfVq)@l?E6K3nxU2KL39k*92o_{b{J6cLiGqCkEELEn;jiun%C8qCzTeddF+-o-*ohKQ1ORQ(@zN(%v@s z3nb*JSkGZuCu&KjYiY?=G^i>ng@;#^@il7EhSN4c$)EIf_E%9?%wxsD)&gpOeq_75 zlkhi=lcY@20zP?nWG&2OIG(oLd7gFb^WKdnQoofd>x;pX1Xe5JT|tlpqVyzvCdCkj zHJEX_6^lqsh64?K6v=`OLJ?kMmkbn!C9z5)7ydmciLOj)Eqpo$o)^uvNKJCrlHj);-`aw^9RDw~?%!AL*|F#yiCa z6JPnG2I&Lc4xE6{@Em;Fbjs7o=3}$8AlADDXSF|LeL|Oi#uwQnEhlQ^7-7(|G{o>~IjV2c-a5GUx zH}$KGSZ!acOM%d&*c?HYLW85y*;ev9EZ9H&f_1&zjwT$B+Y(5VD^b+kq|mnb%Scjx zUhyv3H)3Ze(}V@DhAHf5g`7e@PIlVRgyZcz0Fnjk)Zd|+lRM%%cYkrhzuTT}B#WZs z%|Bp5Z?^h)b+_>Y41;DP&RfLeQk;Vd;i8-1@g#hSsMf6GT$4GF6x^@5@$7T{Wi*b> zOLvmkm4-bnmMZ86^M5U1)QRxA^LF}fZFqD5{%p7IJJ3NyeEk-Bi#WVfLW$<`6=uX+ zV{pif49vwOea3ZBqP}!1lI0f7L!G#{MP6ha0cWDI&jRa_V|%^?o9t`TkCA+?+cXUS zy9YL-DH5AFZksk)m~*oYzvN*|s*^{1wP#M>`j1|Rb9s2D%TSERTBEc5gP|&?`7e1i z30lCYjj&E4)*}pZn>gtnvQapGRt>AK1rZVz3LR=>}Q$ zF=rsgRlT1!d>}>CI_B)z`G2?}lTYQGi3W4H4(4tVsC8wJ?=|SNyf$gap#=R5nG0j4 zpqOeu@WY@38tWNTFhnQn?cKbQ+j(|Vu+E5oOsj3@HKn(%^qH7MmPgr9NPe9eWEB_8 zKn3SyjW23sCFDsom|l2EAu3g<9K-e$Y~}>W$?bhwc69UMNO{}`oFAs3i>|0{j%{sB z>R}JaU3r0<(Or!5GDhN`1?XF$W_jGbFM2>CsofB590X4bcY6L#xRNB3Gq`J}q>PwT z`bm9*r5-7L1oo_VmDzpre8>J?ZkE~Mz=E+f(am;LL9dlBUcQS*&gmO%JO8m|a3bu^ zXyyxWjwu$!JB^|4qa!UBQNwJyOv(!KSHPL0 zGWr206NYl3-2K>N!W~k!@$1IjltA0FVTMKj{i$2d6?are8`FhQIWS?RHtUE|L8@J* z{GI(Vp>vi~S=tF*ObV7;<>kto3Q~dTyf)$BRTeVydMSYhUuFZx{*2j#g1B{*$0pQ$ z^_d6BtL!`ww;VmU+!FUH4<;@x%~&r1nL)L6!dMxA9zLFxhsO`#95om&Ezsd?E%J0+ zFT<7jas43=!S|IQ{Vuq!KvP7@W?2RbOnlr{ckm+ANoDiVuQ!8uG3fFXufBDFoxwFs zR^PtomgREc7EEr?7z|fusWpk8@Wo7R;v1o#uc5^5sTjQ=s`uTH zs&XlftxDUdcvo*=aoHyfq4IhAuO`IHv(JfilCo|M(_#>m86Q{)KX(mBH#{9YIyAI- zjFszyiQH?-tv--!V|0aF7k=|#Vb#9^y<7CyGb#WqkIUs5ZGgw#Y8ki38WWaZPGK>m zU16E%wKMy6Ni(`e+^GM)mT&Pvh0D#3)93oM?dpLsV*L4sow*;@L}ejf8}Bb{Yd=nCWWrXQoKG=3IG?9@`Lml3`7B=xo$Ev4;+=AUu zSZK<3dsimxnws?HPU$-hW12>Mp{Ushq3n!`Dx5q+ObcFKQ%qyKov+5x#)bCIy%c1@ zC4pAvdj%Bq}u+hlczdHtsfdK>bRCiz|8 z*?c1QIqMA=GV4jm_&l8nF&8)l6`p6j7uwS}G42q_F+Ly3G!u{|&+*E|D|fpUzfe~5 zn3jcA0|UV48d9Nt=sSOi%^ZKhbkm&wnT8L z_706-piBbu#Qyc?M~T#H`@Z5#lb0Wo$5Nwe_7d~E#Xv>q97@VqGj%LZ3FvKBd~*V+ z%@mKKiM-yq3MhD%RP^|HNO{-9zBN*5s8EX-4Jaj0Ts^({Y#qn7sTctMx&QYQX>b27N>yQ z`4!wy#;S9qkceKP+82TD#FnqMzB zvIBz070=DJ$XoP-2O|!15YdjE8zPUB4=N|a7xlOSLcQX$exsiSjxOCS+>!4|!f+Jr zzOTmtp{=iRFibs>zY2g)kDnTJ<+7{^ScnhBdvGP4n0I}E&MXf(=^jjv)T>gOFNcqo z0xB1wkow3Eq30&it~)N?cEX4IAG%;9%T*dZ$E~>v7HpWn8@=q(P-kEF**>7?oRIL} z;yt|p>@L36YVPpiFxC#+lE{g?+v!^Oi)^+e(5OocKs-us8ZG$6jhZ0SHYAO!J`ZQq zhx_qi%tSphZE#u}YX-4V<|hAhm%ykF2LhEW9_qden{^K!BOaLlgUK+2PB5bBQmbLX zV357%0u3Y1aQa<>h}2{iy*X=&!F%AhjEv~l>`W-4@Z1{r-oY`2& zq{ze34sWF*6#JyqzDo7<3~dcXJ$rS}FEY=yu>dbm;n3nC=L&zRg!y#(4y zF-7GTXKz8a&XwUP!1lw7CUG{(wmGSE{vRTYKI;D_vHmAz_B?&^bZ*l$4ip3JI*VD` zd(BKQfl4y)&U|jW@XtXM{>R4@Y)$fiy!(HVfVbBa!hdNrLm&reAELRK+a|bw>9ZlV zBD5|qzO~LbLXpPlkfGNWEcUq!@^d9AQ$L!>PjCH;`k%*^e#^*abKWsWeHlxT*^1Ze-SH#%{=- z##~B!fX8Z)DVW`1$5chjXv^w#)#OA|;XD66TkNgyEuHY*AzCo~qpk5(I4**<=B*9o zeDmB^08`h_J|g(>VtX29C!t&0hA~Kf><7i{SAX48>NHo!6Z=b^j;xM@1lHrY!Po%e zbE5(G`>wCq!9>fWa_^UIzwsbEUjTqERXU5G__$7daH?s2FUBI$7mTL`CUP3uQlBk= zT*NIt9zJ(F=3L?=eagkL@`1>ov{R8XhnWwLyk%lks270mJBe4**{F&gJ`_UedV0A( z&65t?2z)M?N_D8j4P58*Ga7qfUuH{C)ZSsuhHa3$dz@9tDL=!}3K=sAyfd&#;WN9x z;PRxhz~Oe{NS=kbO~)JDWAlkcO-fn1>l$*3%6tz{zV-yhRe9a0)z1%nE^|R2iUV2hkKKaO$pp?aUDKWL->Y-Up(0d;*5Dy)g}L&T zTy#^rex$*18gBrFgc1Def=KZ?<^50a@xfAGvMNumz}q*PXv6hWeN%3vm`9w7vyDp@ zcoNYq%*(Jz(R*8E+!m7SQ`f*lNi01rMT|PQG0<|@xNG|7YB9VF;}qf^!sY4u1Ho`1>o<`hLoo&P%4*kFuA-BwVfC)4-P`0d zmMbS>H_O(}*fRCp9nHJJu|}yI*>H;RCM(f^L+qFP zF0#&Jx%LGy7nhr_tiPhDi@X+-dM^~(WjLgYB@FY*+-LZ>W_A;|5eSzPnRbp#R$u9W zvafO4>-md@hd2z8V}^YG!x!BNrB1MKSrfb`z_h6#c$;^^HUtAh?QeX0j**HF86i7Z zf;^xCcD2`?kyQ+h=&AVR~ZhheAV3wV=b%*mFSA8l+mWDrY^-Qhlyxuu_uCOUuY zW4gXCo&Sn!P|W4PlH`QRY6ES*ZDB9+27tFn~dNllLl6*SLFCI=p{elzTsM2kyCR;snF3LMc)pgJfrmG<%oWr;?v&|WE z#R&ggOJvY!6u=S5k~Vticid zgQ%I`A#hbIC@A~4K-=%ke-zXwe ziGF_5UpW7DzV%(F*uf-E$p{$MKkRnl&ar?n_?vNf(|6d4Z^UNg^L{O3y? zZGnr))~}mssFH!5=TkouCRk|2%QP3OP=qyM+BMI%`yTuahoTvrWmtdK&w4P(!yfkoD*Xu7e$cWs|AEOJJ+05?~&dE zUt_8=dRPpnVy8Gq#-#=XBSI9w`Im~FFbvL3Zbny`gmNEJzf*j5`uJ?6I)&qdma_j> zLhbk~<`cJ?UKn<#CdfjZ#P!2&ZN}n7A6B>ql))5zzDV`EnxkJ=?HhL-v=}qK^WSP! zN47o_y;#ytx$G_=SZsYe5pM8|T=u-B3q(o6*bYK3H#i7x#s| z+F)KOidvjCG7Q%?n{EW%?*P;aHK8y?Aqpq|8TSdwrk4B@M zM8PB9aoGGwdj(CV<}aELl;8x<^@F`T_+8(QR!gQzSeQh=`v**=X6`#i7Cry|$XL`j zcpMDZ+vyb^P1=Bm-gaTw3#g;11&LST7q$vFWpVlgdC0mA_M%^REM7lZ$F(kczM}|- z%EZBDi#NrbuSrOZN`qXnRTy_o@qcx|c6ocAX7j6J+`ob56vsYa{b8iZCW-%BBTcQO zNu1aDG`tufDO2?HqU}H`7%omi%Npk!mEs?I?i~}-_cB#SIk5ez`7&=-Jg(bf zw`Dv2c9ZO$=oV_RP!^>g^~+uF+yM!m^1_3U{4_?-n*|Gb;8)>PTo#c7$=mza=OcMO ze*UotaBi6S*n55=v^xo=E}RG$BWKb+9rf%a^ClB4&seY$G2M%<4JEI0o;sa2Ed5lp`NUvwXo3 z7ybOr&(zIbuc*Yyfg6$0X`s65Oe6Y^0dRd?o>P=x{*090)-f`InK?zNYp`+2J^CJ@DHl#sOjR}|QasX> zLu|OIU}G|?U2zOf#FIJ1yUn3W2_%3)4&UY3MAowYp1qvS-p}+20Zbzc`efwOUC}f3 zQjJbn9p)VS3XwZ-FEjln46&$-=em*XCAxr6cJ7&yJ8T5EIt(Ni5sjMZkS?{zKBmb4 zd8}(H=Pj+{w!3^IYjkZ1NczFigoS5P$FPd8?O_V`J9CXp4$gzDjIa7MNcW!O zybT|j&vbZ7;4=P;!8MYhk;pgf8+blrmD-T1+g@(YxZkE+c({EuveJab zQh6sN95tTcIJTLj1&=|6$9c7TbOCY@D-?=uV1Wp~`crdCkL8D5G8#YM5v=PY7QH^; zdh!6Frd%-H9Pc^n7lLZoJb0z|hu+b+jH`GxFjR460D3oQa%e`{j0UEGk9P2CvdvV~sPMWIo&8{iTVmLvg>)t*$tSAhxo0EO!`8%>zFWTeLPgmi zPPgJ;#Lq6wSR6aVjc2mJIaj@&3xRnWge?HKJw+A*CIV{lJ%0fX(P{srnw2ATRqspCWeFljg?{ICS&4McLjE}A?k;2 z`i135Xr-Z1T2fnI(VUPd?k8Ee-wxku_3IHfer{p-9YLe@+UWR(+SNuh4Lvb;5Cf+Q z`(FB$+SnHe@A1f7NuTI3kKWR$?<5pgZ3CFRq^?Yc4`IyLLo@}rG}TPX*RrGp7E`Ux zkhI)AC!usY5gm@TR(m|^Q%C4Oy8X7Lx>@Q(foLmNIN7i#_Y*7D=MFA=5qn+C5TDdB zB=)SenhA}xWk|B<61G*mD)85>e<`h_Mp6=1Vm1VxDo!>xZ>6Ei76??mBJ>Tex5R?y zqoTuy%j&kJZZv@WI*!5VlFCXpis^iZzA+4J+3%%NjcO2)I=cKBuXI&gi&jt(FkG>y z9{8A(t?rwq>H#sPPgg=}mSXA&*P(e_)Vt5)93cocIx*x=03=y(FEO2sz_SCKRws|_ z!x0!%dv@Q#kw!a4RI7cSg-zfo{NwurS?EFfiTe>9!+0WnQu=jYS3M3CW*e|0;aVH_ zLMR4-Y^k>Sy`>sT1a#NRxeVfs(UId{*8^vDQdYQZS*6%$EVPA(JeC4X;1>Q_P;Iqt zTr?=@PY`O3*l?d@Wj;(*(%VGC_nEwt+)?P+o@ssHuHmPBBrCsfStEG7{XTMbH6B|Q zLnd%Se*`0En7p(y3C+^QC<}dC7>D5*n_Wa`oLGl_67s-m{)L{ucw_kcm}NX5>cz3% zy@C~$3LDL)mef@0^hgbKM6Oc=s;HYed?M8I?k-mjKj-D;v%O(EC+e=qDYiP}TP%Z< z=P#5e+?4s}Lxkt;Y8L%>+e)M-jRnDWOz_=L+4xn;p~aWeNMf zeLKrN9pm~+Sz1Vu-K<`#UW-Ai;$2kU7X-xZ#fr4{l@qa5r<}#)BKP7Xm0^VP)YW}* zbx-)m2hE&y!>4J6Rht)@vju8@nq3qR|LkJzY*Q8bN^p$hHCn~|c9Gmc9R>aHLC0Cz zBVQzD%0NdFc2rqZ-h`gh1DXO18ljfusu|a9H=ZMxnlHT+2p9x)?UgGMtjVEN>pSkG zvk8UHD_T11{Mpq68{DPj?@qQAx+cukeK_{z$?bO+INEtUx#$*3bu@QIe%=_gjCemK zQpmnzv+CxHi=UZ#tBe03!ovQJS;u5-*S6+pBVMyB@`q;fz!;e{4jUW$Q?%pEf9P+l z0IkUh;EEszyUGbmawh-jv*+0cYUQPN=uB+)eUmd8@rIy^l+r#4@=g7nJp0#+luq0r%5d?A-6EjDsU;k_0ub`VvK zCp*#1bP1^Scwt=4gKEL9#)*miQ|UWHVnhag|BzCP8y9{5f>H}LU)Wy0fwKx3DOrhb zd82!c+fR!HZ$E9+RNKeYct-{1u#FuOd!Oseh#EI$H6IDs$x=svlzUQ-S)7mR3$+xM7kcpNWvep7H^*k^L`pD!*HtBv~A4OurpClnK)RzpiNg;ME;$ziuXv zYyV6gIpxEg@-{d%UJ&&Irp`7?>cxqS%FWhm9IKcj4#(yDt8EEkv@N6AQb%=0o%?j( zsH3s+K-ZMCKZI_G|sIZrYmN)s2cJ14`>u-67C7V0TYWw`#*o423;c?!s zc2{J)(YGu)bSnNss1-Of$Ft#w!IM9|M- zW_nz}U`3_nQt?7OLtdGwl{1mzvG}~OvAaFRF`ChojeohF@Am0-Zex>UOwr}}>fUBE zr1W)U>{2#ZUJuPFXRILmq1GN%K^5UJOf=}Z-_QB=*=du<95|K@^_LEuYajS1$p>G7 z5~h&rcB1EbCyTGt^cK3Y8Ltz@v8_>r*RYxwmOxHTltL!k4m0%{Gjse*1^v)?WY6MY zviIS!sy%pn(@*^>2Inb=DHuPy<~VMu{bHxM$d2J4#l7?-&J82&CQLy&3+aVtyV{jB zn~A&k|@l>afJHec2kKEapCFCP6+{`E7P*VlSZiIf3)NRIk zI(<3NSm~Reg1p~q-_nCwj%%NOV)N9R`;nhQXtB+K^vspH6q5O1+>H_r1+~50NftHC zYuJ1PqpdQ_A^8^zfHh{+U#g*kv5I$ND0+tF=8iF_7cYD+;A2Y9(y~wQE2-svEC*sMFTW4v-S)2*Mw&&Ci*3i#n3I#}z*wMfT-A)8u55$#M znVjy9Fyx)54k1K&nB&A1o%N1bxVk&kO7|eRx2KF<7UJ`h!%@f5=0?E!Koj?LZ}Md2 z4DQo!8!YK^MdDEB{?M^=(G8MMZ+mC!N{(FPPH&okuYAIG%ZTvu}`y-lqS& zHB0&!1M*y!M$mkWb44J>7xWqYoAHlU^L}(QevLzwrPkih3ylQh_ zu~Oj=*_Yca))Jg@YD0#EG-NX>Eft-h**G6>z`eHY%03#1W5;Dqq}i~*+1!~Bg!W7% zCkpf*?~cb~Sefa&AjO|3276c)EUt0e0Jh2Mv75Mac6p4qdtvoHBqIE3Km)UWxRrTo zxGo`m1{MpQG#29*At)7^k}7KJ-3oea1< zR38juR0?Ve@fxc}GsqZP8etpz)g;bAp+haiH&xTZhzrJ!nRY4OFk+=+pK`8($-y6< zqk6=pTf|{)0UT{oYfwE7UF`_nqw1NYDvmY1Egi$~iiZu+s<&D5m5R3G-G*N{B}xZL zSQtAVO2}E`N-N!wtUzo~e;E~;IWT*#FVT%vg;_LX`!3edtr=THy9T$S-G6DbD`t}% zGB^Q8*oHhO!FF7mBLME6JCqtS<$8ayoihV(3{Oc3{GYBiIVuFm{^R!i)Belc?VB@n zOQM&X54jeeQn49YnPWO1*?tKuEGaqsM(}U}@E>j{)MY3a9OQQa%KHEX1vTqIMRIRr z1-O+acfi(|GTi-F+VomIh-#-d>Ms|aW3K6ZX7H{1@P_I^He{{J#xr-{pQ&yH9!GqT zhAcCn$1KyHGW6-koRfwf*&Mu&c%mf=^2^M11np9;T3HiZ7jjA`1J&tt$-m6Ok>ww2gAyERvFNd`Z8PZV9u{rXc$qA7xqW!e9E-q00pXU}@ zx7Lan_XxYqrnj^dr4NXpqayGtai>IoITo=+rNh{`aNL_U3KAP9(zNCkNMQ5}fe(2v zQ6sr^ECs}Dn17-u9=&f>owv94$f`r6#u~0OTU)gs3#BA|YKX%V6ZL1ys#NodMh`OF z{q<`Lq|y_0Tw9e^w_oCEVxAg*SUb?2XN{;UX1&>QWhyT)d%mc$g6Rsq?6rnmrHc5r z4`@!d7fr2gJfj(ySJtUyrR0130NLikjWswdxjAN^c8cQk^Yzni>y_?S{0nO1t6l;9$1K0bsh1rCsOnv%M zXJw>4U4fS*cbJyw8zkktEYY^wW^P)PWam3>E`|0V$oLajM}kWD0dN}LzNBZ-rot1H zZi!Am);n=1_~?|&%jhf?NgA`OWCn?<6bAIbGkFo)d6fl8WBIWiyt@FjqT13JG5aN| z^WcPEWMKD&%}CQoT{Mw#cq}^RzCD8a=HZGrnWyy*&jA6&@l!l)n<)eXL9wEd)Ld$| zl2>J^u8AzyuumdoGcD@M!Om<`lRgtNT_XJ zjK>ki)e&~dQNC5+n@61@46)>S%H8_JUYyYZ;X>5@eDTEI-V$%Uq@RWM2Cpk{7ejGZ z7e!Ox>oE?|-$L>d!U3H2cR!9EO|pVt%iiPe6PBZ~(`(y!=%3aprb%^m2allVP7#i= z=W2gP*xD7Ej#W)3xr0=t{NvCasPQ5SOM4-)&*~{mCE(q~IkQd|P{&`;zqUDnScik} z`HeyOg?hRQnN1zBS2A9_uVqapy*fDJorAYO+gf#J1vK6Q&ovH5m==*1>-6-bK7Y^g zL&#?px`48MQ3ci$N+uH>O{z##z~U}vvMvj)#ox8rS$wx>Eh&8>blD7m2?w0iRBS&>j@Y3lzx zP^lsJ+eO}g8;t%zod%vFtoioBnnlc!h-keX7Ae2`I0Z={Rg&FOllIdOlg^Cag+AT2 zOy}7g2hzK9;PIjp1D7Y3_@j>`oHZ@ygw@WGBHjHHji(~e+#3(-^U&FA&8Bx_H%8JM ze=-%~-m>S9^g`*_NuQ79Pk;8^ z7!o~k@E7mYTCik;0L{iqoI`s9f(_^J_raGyhHP`G4sqG+3U_UgX+|o@m+bX3!QY#= z-)O$cRuGFx&sdMX&nw>Y7l~UqFjhiHxrX;@Uk&gAvr&E5=x)7UG;#lNK|kAVa)Z9k z?jk0Vh=WyPDc|sA`aoH%rg{}rbj(*La`*iO6r_$+i;YazYFpCk2#jn@3^2LYN|7Xq z_xBb}@#SZW^cj&YBv2DTH(_rWl~iFDhFdDms@P<1OhleFI_!Wiz>j60XBkiEk+SO< zmQHv83*`$!f5L*yk3z%kLwH^_ z=z9VCkws}n1w%bQO{@!Mg9u%c!>ayjys(5i*)wyzl2z3tn-B53`hKNzw>9C zt}hlX3NH8;rNu+(NwHL+#eA+zN$-KZ){lG%n$18ALXnT65>O zC`Gg==W0PWf3sPi9pIX*E=RU~agX*&R#F%%?jMK?(TJ=uTvHN(-@yT?o6k1@ft`<6yqqmy|Q!7GerridLaz!4v)@7;vzC z4PFv>iLQNiN63xzX@lX)H6>bA&qsBHFunr~NNX_Hxn65Z7#ssv6O2BlRS2ZhpMldW z{@sh#JiZc7NbM?>T;>Zgb=zIw1r3MNRakR&3zT*S3x-9E0^$Wjt*`$Iy#5=+6IKWR z@9LZObIr-@*&xfBv-Ozh23e~Y2hyqR(W1SYTm((*XgDyKG@q70AsV(r{(X$4>=q6i z=Y#bo&J#Sfe%)kY<4Ff``6aPHZGM4+H`EjSgh54F^5biyq?hXG_^AOaZNSY|mb|t# z(ID4XFu{xoz9uj;=}W1ziF0#R$QVPHlCTA?^BpHs;!x2crYzITD1P@SXNE4(rd{-_ z6kFHrcrj(_hEe>kd|b82i5~7Xp8%_T4B_X9?{a}OG+{t77Q;6}8w_MM*Q3xWH7tgRN;t}kh4D5Oua#vU1%H?C&Gm!~N;^)0Xb zB7%HEks`W}^28%JFLvTkt3PE(mxt?ZJ;G}`z3wTe5|hX}O-4tx2%ZceUVuS{WwUTy zn%S4@Tk)fUXXdIte-FL>*gpJT!JRGc5zJ~~xw=-6`R@o+m4Y3>$zr211V5!jd|H}R zjWytK>IAV2`uk=cIL5wsy-iAAXVp0Hvp=YU>R(81vSl#TISUBH%cR*)>t-l~ID3fB zbzamFcOwP{4+R7h$Mm}91%DG!ccghLhLeSE#hU%Nzyjo3X~kYQGK;`5MLq{M6NM+2 z`2)n+%Rp5HeE2>gbf)xsBg77O2#Ko{%R1db5OCP#nC4kk-t%?wt{7zk!tyF|E^KnH zA<}&cQc_lym1#JgBt^fIK+-MQ#woQrg(M8H)aZg~i4<(N(r%p<`P{(oJHvwe>79CG zrHQZhfi|A2X$53{+zWxp6N{_gX;+=%<>K)3}e@5bEzN?1-{i%k`;f^#ZyZP!G z#$2M&{(i@=UDFZ~`|anCio>IJH@a98YzN8@vi+v@m++>&vmm;r^b-OJO-|`-(r>UP zf5V_hS@pvo#ZN~qvbDwQaA8;7jbg5OxAhg*z_H8}XPBK^#C!$5o#WtHps3CkUQVf* zEFT-D6JtJoBxa#oqn<;Zh37-&%x=55Rc45n5Bvpv^S>!ggCnByUDz5RL3hMvzRG7;SKcjA_ww+eTxJTB zfh3o;X*%m1F(`H1nmgOU zmg4N+9@`}1HBWy9ON%2Y!YvKY7>3Hw`-Mo4LpD@`uI-el!$(R_iNVRjl_wc}fzZ%= zaC+UwpstE=K#~8rNn}tBR$uD{=4FP~q5XQcFy9I2@|B0;2s#>6tNU&vT{Kq}yq3i- zLkUf>B3jJFtxP&t@DJitQ(BYAt+kxIj|w7MZ5F_KxDzVRJM!okznGXZ2vs`vEXWa4 z*3K9C%36MkxLzq|`z%o2m&CG@`jrGVUn#A!4tO=ahUI<(*xZiRUCp?8C)@E_WK!t( z{E?e=;V%C_ta^{C`TvCFsM`Dqvo>cOjxIO0#IW!t7HkGQv!8q@&*(4{98H#lG&+2V zaJ~riH>zr2R{KeKbxbr4f)d{vVV(&d56p+>bH&zZ6I^J5<+Py|_O&J(bJ5kAf()7e zm5lj#=ohVJ>s-*8j+9`i;#JIBLGZS@dB`j82R#R14I(gW_~mWmrob@NQfu64hjLtX)fX4njG;qpmYX} zmF_os=2VFJklvEM=Ap$k<2nWIz&W2f=lngL`jDWY@IqL`{P({2#-KJ5@^W@s-+zN= zeE!bO|F|)qfj5|IU3~G-${3>dESKfM`M3VQ7n63;qhf(Rv1uh#ao!4k>Y%gMNJNx`qbP)#QUMe|sCAKkDpJR*z`M+vWdk6#4tf1e5h zg?jl#ErPFtboF}o^q0MkOCd7cX$E@Qb{%61)Kd-!BZ3HkQQz#?5Nwh_2KVh`apH`J z5jG%vna{0x#?kcE3wAS3HN({qC_!ZP6TOR_mWad}v%Tx4w@vC@ciTRzyM#(*vT-2F zw&tDHpME)XwO^qkNW%88{{Q*r|1E^%eb|T+vvin42EtVNs(<6T*l_Q6|A$NxG83u= zC{)vmv_a_t=97cHb`eB<%T8@B}SSAEm!zr zx#Rvc{bPa68){cKRSTMBUyTfhMT;1^xdZdYCq5V2GIvG4|BSn)u9Va0yyr1(>HOqw z6`wB;lF^>u?0As%9Bmiz42(yk)vJ&bKgyOCq$;os)`LeA& zoqLWc*f`Nb|F^i15ioA`{*OM4T?i9(`j!;?2{E%kgK6G)DFSim}QZNXm>%!Fr1~V7BURcbqMwrt0MA+FXd9|?fi(DN%bl~BlE%ic_Nw3dZuIQ z(Z45K^fDWsy#pVDs03V7Bf)My5tV_zb*#HSvMZDg8V+v0P(41oc%Wnv!D5-eV@d_W@&#M0(YH`9bT$L^=#@j>=7c*`X&zvw^h8v zYROjYzoRJKF%;PHa*o6^?)sK&;N1syFx+T3TEJNFdX343ENTF1TkiZDJ!(ABSa*GJ z`)&?G&29=T+>uO+Q^s&Z9pFeVR6dZTE>k=8cRqP(LcVSm29=(TMkGt8fJ|glzG1q- zC=PF6=qvh?vOtx0mBY!V)BJpfd_KPjZUYD7)uHTB!cunHkFb9C*(2K3m11t`mDNM^ z?-B9;HraLAQ8}rS6H&!vyP?(Bybc4$!J|CR5uhyvy-sIFy!1$Y?smy%Yp)}41%qo4 zrY1o1o+JxOt&2XNW=j}uJ1lza%(3!scn8fk#s6Y6L&*jewJV;m;;R!-@~Mi+#*muL z@yI2c%ciHfUeaC1fz3Kx2*UOY%%lRoNGx>;FeE z38S~S14l~D*0oezrc(C)8Q-?vl9Ji$i~+&-uY}bEh^Y8cAUFu@*qSw)kBtkLdj4ij z;9@qE-VhE3ZzHR}->>a=+#bsorpeLBXBd}B^GJz`)L^#O3Z6)?<B@pm?Y}YI!!StmM}?yMZw=NX3@qI9A-y7};h{ zIGm^y1%=abRovBPqEw@y&pUtVwxa02NNs=!G?{HGH^I z2JOEDlv<`gP>Z?m<;zcEu-LJaJe;DX4~#)_w&8iQuVf>ivd{e~Md4!|f;S*$9)M$y z&u*u*Rh@eABW*xb!z79C_}Zr_#(>sNxQ!_mr^8!;nPg)b9!g18jhq~$aKVpD$>X< zXkNJwwUdBRGFIYrj|Q%f;y!Yp2vc5m*+Eiz5nPx9GzIO@+R(0+Yy2X3UF;p_@!4-4 z(~}a%FIIMc>d1p51FUEzyI~&8mxa{0J*K=LFOO8>!)d*Exd#q`uS0Np@F zh(LL=ILkZq>Sr*qb;7a0EZK9~L*EWB7AZHiA~jX@_sTlmG6o@w-kq$39__-o9?(vw z?B}O4FQK1qQy4h3ME<)@EVmd-H(^1;Mwg%c79@l0Gzb`l;nT;EAqiPTf96|zWY0IW zN6h(hrWS^`M|c`N<77mv{Z=Xz;$5Zu_~znBE^zn#o_V0?UlpPv8C;Ch_5(JpA#x6v zVzITf1Cpx5$v?7IinR5=dho~hxtw_5=x@sZ38ch5BxEWR-4yvpQ^Z);y5rcl_TqdE zd?A@TTrH>B3#ZL-&XFmc#%Qy75jcHv`zMX!y>S-+lAnMZbdr)j;>?kAxXkV<^NVwol*32(J*T4FmUx%%;b zWL=e8b6dTdEpmIqc>3b+R*%p)Xk1?&tDj>is;q189#FQOlK+iKT(L3uLKHKOS@reC zUBH5WnB^f$A+$J1sR|T_(m#t34ofo9cs1ZMdiN~qjSMfmEAfgD?}o8E!K^v)Sg80d zV4#JOf5XQw0(^xv8!Zq;m@g5&hMg8{Qmy+*Td=*{7^U5VG2T^l2rUKlTt7J~R?-D+ zx!|2C$jc;)=gH=8P7m;ZoQe!scSvwa~%wYB>(`ZBx%62Jb*g0l#HlZJe#EBD>Z4R&(t09#jz^(;PwO7Qx#h{qlcVAM&g{wtXFW zL~p3isUtvusLxt5akP#X@Vo2TT6{d|EmX$VQnCMm;vIY<-Dz}Fy2$H2BEPd7st5Tr zRpTzZ>O>>@SY>=1sVmz2G52os)yYB)8iwOr?2ONO?{-v1T)=tg;18d7dcmCL1*gJO*_>5GDpr&RAu)MJfAT zl6Lh6$$##dWcQ3fW$I(L z4aEkb5=EYfe5`pCu%KKQYTcu9ep>B#0!7w=M!b6xW@N_OS`5gV%b|319(;F8&R(F3 z4wFDo$UdhvHP041Mt6&zV*Dc(O+-NhLTWClUFis3TaB2K{kQDu@fj1BQ@4_MYHcxU z8Az)QNBq{7Tzx4D`?!lS?Z7~*N{W06l-c{(uA>V{-Q3_A7EI!?gqfl_iSjiGU43Ur zp&P|Myvtu|=Twbnp+zIFbUID_=-u{RyrAMc=EI2^Yg=k(Eso+0h@yjZ(Zz*g-8NGd zSKl|%N{5%q$_~&S#9yO>l%3*GvIkBbfGE1wLa50M3HP{rJQv9lT%r;5P7dkQ_K6Z6 zKwXD5FKl*S@6Jp|$9_DNgqB3&s}{nyFcW*%al(-bx^$t%sLz-0=`5b@U%9w_@AS+1 zmyf>cxh=&@gCvUuL;~xqXDOB53BGbaI0#y0oU4aAt06_89X|O|YVSNaSA_JkUy*ZH zVWmqmO(tbf^{Fqa;yyYm*JGk7wc}ERH2SgTIpicGBAEm9KOPtqpz{pRD~pX2=3F>^ z`FqPVlQ|F?zM!|ifgTj9?p8R84oR01_H;pkQuw{E*`~?bXe(sHn(RcX+X*Eau!-iKNwApqYsuDe247Q$uuHH zhrBx|l0dQF2@H<%CXn9PZn^|(%p7DbJ-c#Csv8`yWH;f@%JG)Pe!t?+^Q&t)sHl=h zK}z{5O0V9TtG9cGTP@6&YdEDKyemF^yb?arJ@q`8aK^GIimdN+R zma6e$bB;ZNsnIh@Y`Jk{1EF0@JYE8AhNF5$%>$3-`i5-HOpXgtJ(9oq(2?`hj^q=z zVk2HNFvt1GKE*#;z@usPS<>%500>xvH1!)l1WO+;zY$A6@?4Ch%seM2W^BK)jbsrI z{0!RoBTT(5cS{()wWP!JPKNW|WJ=2dIsHfY$3OhCLm!Y|7FByGvdC`zZurS7wbOx% z(IuA1BU4b_v%3&~$V>-s3NVWCtIhHcMDzsq3X6brqCX#W;j|U8n@`oc*;Z)Dw!-iaQi{cXxMpcTI68K(JuB;ahvHz0Y3XK6i{WuJ8wQ48oX6;GLPz@3FUkgyF_( zgkJ^rpbO1vLD@3}wYl-Z8fn}Zrw(~|lY_O%`oa5*mDA+1 zVD}sBZg%lb>p6HW$$|V_f+NYXM1;EuA7cymX0t0A7j^{&y_G@uKRcAk0~u!Ov@rSk zhxOT#Mr-^kzfRGJiivMF7>ByfTeJ1|_KYU8GLQ*K#^5okfO}gVPv(7p{Q@-EJ+->V zW2suocfhARS?sw|MzK3o&8~e@sgyk<_r$#n zmt&kmr5rISU#*x1f(u=wWcyp1V&EkC1;*Kekp!& zs}b%TDG*bwXETP%+Hj_f+`IR;@7>kBdWt(P)oX@S&eRp`+?#|zDm+636}Z|QiKgWH;85joQNHLT zxJ6A+QkKr81Ux9f!Nh^5fl(!Ym+!DAoBfnf(8~0>12G}!n*znhu+S&{B?wdaKBo~} z8c{+)ENgmbiz*990`NYZhpwu+w7>36+pFswLvV8Afnv}lu(Nres};D6e!mN>ygqR( zw<4J6)$0K_4jEUMT@zs!IDI^D*K6m;@=pe`%HSTH&v`795O5EnYs$_u%!L@x5qMGx$+L99{IBWsA=qiez)`~2f!AgJ%%%ktSWwlhq$Cj z5)=01bNd$x5?)$d!Gbf{-((mGxnK0v(M~Kx7yvhCmOisEHrWdV2k_(!CY`$yi=B<{ zRxw?U&c5M2#N;rO=bz`6jT75`V%N{+o-wp`tp*p2UXaReXAV7(CFE#(S*wl!nG_o# z2~L2@e3)&+)s8%#^+ok*%@hN2;n$mQQW_nT3GmFS1z`xubY-q}Ht)QIAlSxmF;65b z*8z$JDh|W6O(j(@5Lt$6Er7VxY9QqO?G+j=>kEI4rjPkVtWEqA)JkoW6MfoW{7suoRH~PB7MU3TUnAwF`qejJ1$rh+=IZOLLqhXUPaB_A&qmWT-^tT_#S3Y5z!hOLRh|ud#w2Lm|^SzZ*`GzhS0SLmzrC;3PUG3pa z|6A<&LwEXNxwKnnyrVRv%pwOXiEJ?h3zlZu?M&t&xh>*QN%stu6CX7ZIoOa!bN(mx za#qz4QwzBaQd~?y5?SyW>HpNS84XJmtrt%wq$q~$-E~Cv&v#DwZLiR)N)3G2vGrO@ z7@x(Efjq5p>UuOWsr~en_zmGw6||mdY}`zJc3?(aKGS0(o2RMwOMT7Ngnny54E7+c zq_@~#y9v2X(R+#D5#f*e+3iXqigjSZ*f%W>^{EVJR!6oq*R`@E=4VQ6C6JR)CNUcO zTXS4yGE0)M0?rRE&<2s*tGAa!O9|tD$+?KsfvNr%*6emSV9d&L*rIUD^giR_^d}ye zzxcAnHEN-WdeZ!9b7s8Sd>`lMPF+FX*i#3UXP0puvfEoLx{cF9VXM=JQ2_4cpzY@L zp~C35{Q+)D!7Rf`BQIo5b$%*>#>)XFn{iM7_;l!W{vD538lLOGqw-jRb$%nkrd4`3 ztc_s5)RE7bpX5rkZzp|uK3-)EQx~CdYVVViAslm?Vv3VDH2M{R;$?518BL1CCGs$|GrlQ6Kzr+3V5p@AjsaUm+B_*H_g|Gjd<44-yVA})(CSmn_!Sz_e588L z;-c9ge4>R+9|v_VPH+=+Z4tGM&>-o-LysWb}cFD!q_0G_h?0-8N%=mfjeW2$x^^ zc-*KS$c@w{?GHWK{rZqr!`4wB*KQvKWaj^zAUL5gB@3TMJl5Jg#bH41K3cCPLouH) zCZ-hkliV}p#=$1Zy8aR*5p}@pHR3EXU@v_HMQ|EfG0dUamu!+BA7W~$V7M;eH0U97DG8rhfWa<$DX97@$-4ZNx`VYB%P*Ru=3_mGC;jQG-#)_)J~ zC((SwHz^yBwOzTc_S|)}LPGyOo*ebbVmjzkLyAVsyu*-iIW8+~QIG8AI&{^1Q#us0 z7U9A3wKxFoRscQ}et4=&j1+2-)vIVotlh_6J#k7@j0wU(-5xx}QdAMHV+ol3a5NC| z(RoF0-sSh!P-^j>AApUtfYDUsqeR#nK#kL#$IrgPrlY}%F$bTTk=3yW>};&kr>kIZ zM5HRmgSTL#C}#g^YY%mZEREn7RfWR9g8^+XL)s3<^Pp#hWW-A*)Y=o46S>EYI;ig1 z%3oPFHIUX{#OevO8T{A*WXs6)r%_-N8l>#a={zh`2p2cVSE=PZyZgbb%gOe7RUpG0 zAS#f(64FQAQ5CD#jD<-|SQ3d}f~YTQ^aA~m`%eZKnrIrF8n&Q*AB=A~HuDk=orvQD z|NB*b!r!ddi!8b(O*dM*MUmk?{go~p8joZY!V5NQG#~}CoP%;fs&|r~!o?}r*s44A zuH#`)(PTbM|9qcT`Q3A%iHy5?iqQ`%TQo)(*5vsA&Y|Wm(A9r1a_YCpj>X)MJe~xn z_ky1@=+WPCd?F|-uXU})>XuA%|H&@rR%(6kiW=g&sUuGTbo+o6;;!1H$*Eaukw(w> zXOvJ`WhZH#d0X;E$Rp^ivQXPxB&b`X#<9tD+OTLs806u*!1(j$&sy`fXdU;PoMH&H z)#mfn*XOr+{fj)=5HsPCbUl7k$B+x(F`08&+0vZ1cO5QNHWdA;eA}*xmN8U&i z!Al-HaG(w2`@*tmT7eaq;Y9P?69{a+8!ez#ox<73{Yvhr%xz-wP`I$MeUuuTH@iH&|5w$*H^vk3IZYJ`hP75R zLFEf5zns^x`Fc-^8kA??X@oYZLQSdh6uYVVTl~&Zitd(l~y@i&u zV{BQPJNn~$eKOQ1G)i#L62k%~iB^YaqvN4SC>;ht_eAC6ywm5dy1tgM!yAP3Q{&2+ zT&zaGOFagj=h&4t@s#CvAzrSE;1nkRuTU85_6+C7+jH>rdWx@Mmf7wzq$Fr(jUCO> zmpht>Ki3~7xnpEId&;hwUD+84LSLx42-Qt{_4c(t3$=IUcboEZZA_G1H~C6eRc~z_ z?VyNYR=M%MLt!&C!Txs3G}k?B=C^83!&4=9d^UG46-iw4UCli_+LB0Yztmk*LJU^z z-oKJFk&9~}I2S-O_PLgwOCSo-K|SLd-?1?E?Kxffg0Is?YF zfRybV^`fC2AU4O{>Csrx0TWIGnpD$A-m2T*u`HY?})3n-D6Ka z-DK}-^|r#n=y73G7tDPQkv5XrVcY@AiTlFmOnp^XC(zf|2(4(zoU@oZyufgs??^Fw zZM0^Zqw!Wg>NF<4+AE70QMXh!$>&Lu6`vCNP!-N@|4Lrz^?FUPz&X14S}!~&Oh~=H zGG8bsoFo0y5mcfb$yk2%wTnYV>q4@O-b%wWaq>BqgaYLx=FzDlJvmx$4iaZNUL1Vx zzT^xihN-Ea)uQNZnwSgfoYMY=>%{5&cQ%s9x=ywB3Jum<_V|M8ubM5K`0o_Iih9W* z;XT*Z`|?0Mc{^(eo18z$(DWC47{zfi^yNrIzj~p>>+{J;<-ENQdg z*_veyN9mbdp>LY;^%SgKto#pRIYJE#NX?(|1f<5|gY%uy9SHfU3HdnvWolgwAtZ zh{Ns&T;JER1h>t(c2*UVPFP$>QAX+v78k0aXL^ncp%PXrKJ6}e9!Q@|#)2kvw)zr| zei$z}zgQdCi*Wb6!xb@_QMMSPubZejt;rG1Ey1czG1hWBGaQ(2JYJJ6U1IE3gt(wW zcCT=`KOO;A*H&*k+?+;h7@N;*g{Q2;ceC^DwiY$L%vJ+5WGwY-sL`Kmv))+aNKg;& zqM&J}>I`T9u3MgL+&s;W&Xhw?jz++&wwV7s|H*aQJeOH1pnuwVcc&CC3P8}p4m7G_ zbZ)0g`4?OIj<;msWcA!`78^H#lo92YDr2RzL<)viBaX7226|+kBS0zQkBLtTPWAWF zMkd1V#q$sZcA5T|3(HK#d{;ttmhkrx-%Z=I_%lu3(#UgztLgS6m2$Xu>!i8usRRG& zffD5ZT0yy1#ZsP=>$hcagGp8J8U4an_YyogGm80R0S2j^35`MS3XoTDaCn~N&T#9c z0X?|XgOtxcx$Z^F8Av4{@79tF%* z@)3Vc-u#-gup+ON5}Wgi6kYd3WCm6mKrbsXSHI@kcR)ffN9}zdGuwbp{f>d~iwF&T zSFl;}N+!+F{uNyuzvZ9I-e^CApFQK0KpgWdM%Pvm7{rj zw1ilO@|u-5(~h#Ux!G~H!&Aqq5F*aJ%$usebYN6_m1h4HgW?^{8%h+6x|PZ1{CJ#B z0uMhS-}PJ=yUSB|`#OuzxKO<>%5O52ad1mp1y^a&>!)LrSj3qgBDS|3FY%qLLGox52n6L-UdsuKXs08qPC0hddG_EzHjmxy zTTvC=y=Gd17?^JnD7*FOYKT$x6uOcDnriy9luLV+&6R~?2t!>sq@0}o$}Q82JF72i z=)-jm0lC|(!HjVYvCwxK#AtFEJOk4pH4WSs@Uc{knu33n=(}p4iJyo8Oc2YKS%9kz zt0K)xe_$NQZoJxe6-hwIawsE3cPm#0V&tZ&S;LAygRtLTXJ zJr%{QaMhjlC>@$+)AMN4L2qacSwwlcm$IOidWUvtazCLp8l!;Yzb@duO^7xDb&q-( znh+JG{}?`YCl?-KVDO0K8WQqf;JaGBNRUK4?WUZUkXmFqNHDxbwyR!|cpapWHq#Pm zD##mPP&$ewSsxC3)%f^oR*d8!if8p1#oHN@WyF7CX%i#jdl|Z_E(E$HZ_REOTB%k z;zzWG0bdhsV|3A5`@25^W1^o?}AxPK#Hv_YKQ6axDQ%cVg%(Q^$J!X%|& zJUMN@(Ny)@O!t3n3b$D*0`z!rd&ZB|%3JT7oQ8iOi^kkx3a zsdK=m>beVU7xT%)+SI2ckAEZbS|R(}Gm!q*VaOfEho1)>uurb=e_KU_{8e=IG1=<5 z9D!!)1J?h)2SLAB6rEd>6=hv#)zO-egn4Yx&JpC8kQht?69TLbMzP5RuWK_durmZK zQHw(;1fmKv!6b`~J}O8yFmC#R)%0c?wRSeu2)Kg-W;lNxsaT@l~9vwY!QGY3nR;V~AT9;`&kQUuiXcraUvf?@HVq5%3Q zu#cFB(E5e&v%;M)i?i`hFTlU4-JiI#7k9OmIglwwj;a zj*U{QMIZP;Jl~!+9*4e_blXA++H-vp*VbwsDfD9gbD;Z*PX@*NUhS+e`q}pBa9UHb z!<%bew~+X$jQ$(&{$fYpENTK`JYfA1YPgx?Ec9}AkgqNCdMo&*TYta)xDRs0#DDLH z9rA>7@0B>ba8GKpjNIVJ0aJc~jL>r=N_VP@=+-Yk@k|xEl|oQa^2rnocEZyZJ-LC z@qDh8QQ`IAkCSc2`nk*R#OaMKWm=PUilBK+*p*0XpTsR$X1KnG`N1#UNUe}n8N6SeyJ)~HD4E5}pk4c>!C(HM%Y_gokn@ z;EelM{@XOvLu|Gq(B&O%KLq2uMK-FnxM%Q0>K%y|fADAEOT*&zxB~~FKV?1C8g^Yh z#djChwz`jQm?3WEu+O?`u5oqJ*E-sC$<%8xv$G$-xd>)O8&~KZZPwk1`P9eLv=4$A zL-Q=yX7GIhgKJXiuJ1X(`LO>)!*-me+9KN{OI8sbmOnH(JoU*Q?&RocbT0QF_;?hC zk6}TX&#<7(HBrSpdarFgOuH8bL|D6j(U>ph*{Qdoq^4v5_@CdXHDQfb|Q<*jZQQMZdHGL>lGu5m4uP2w-t$ge{e3%2*;soa5J6P2)6kEN?Ut#V(q7d?@=**MPHXayGq~n<(uu zZct+tF0hK#5d`6?QS2?4NEo=Z9O-pmS}MCL1%c6%*ofBB+G=ud1zA9I{NGlCIjGQL~cjyV^o} zyt8S{%1W6#uJP)S_|*JeE@8`x{Acl!z}jP|D>}5{0v6 zK5CQV1dWU?EGG0(WXQ=F#W%9gJUmzvT^Zg<%q^X=MVOhMmqC|C6t#Q0nI`Mr+t)nTskh#MPR|KcS zz=h27Q=$mQ`Mp2&{`4LX-7;;aLr#(!ce41gq1-Qc!?QO}XvH!O&RU91u?U*(bgC7? z2Y+BK^Q96K@MVRn;)pbhO{xX5xb8T@_JHWSxZ^4Kem{8xAMB~cI;oB1b=5t`D9|Ntjt1*jj8f*sh zRtGKJuby2W$h0X!GMvY$a2!Xwn-iL)y9PdyXa;h-3;37dRniXB*tU{A@3~(%yYQ=-_FfY^z1?zR{}`t56p8o^c6a8K{4rtI4(1s( zjDbE3SS1yBFNC?#k&-Z6it;WjNyO8ck5R6Hp?BpKVo2T*;;ssXHwa3?_IUto)0`UD(oD(>51Pb;Sb0Dtp`E_?u+1_ zAoZsf1kNOO`rS&edFg(1-MCH1E=sDy+Szo?CrG^XV;- zPwhuI@Bws5ko@01_qmm)b?vQpPD*xUT7x1%o0-o(h+pW$6l9pm7H#S*9b74Ha>llA z0H4HOpPRW`HHeFSGx@RuwG?%tUKu?(R*W;7sUcOVNZrwcY~oS)B@H-RD#w0@t=YD| z*Lrfp2~*jHMSgm>G0g4DpA(M(uPH_c=V1+6Fv|iAFJg(rn!y;T{|62ic`KOSJNolWkMxPq=Ue~fIJ?Gf4DiW&pg$|kAiQaiyE1aMoO^>cbob|iYEPCrIM>^fTCWZ z%(p|I`TZmp`Ybm;ty?OPrT9I1tOJOzI#NWM@*WdC_JzRHH)}=MfnzbJlb1=VyWcjw z+~97~qL1}cuwjHJXs6?kii~ACngvP6-KF6vt*>i@OCiss{rJ!P+WMC&eP&-jQfv|d zK)}uiWA~hyy z@OddTbR4jkp`_m4ICT5sHT0+LFSH;|%$51oltuNXsGR}Zym3>W-ggh1Tm1{0W;cm{ zZ<3XQybrBsA}`bF{zZM!sFz}}#FouB^FVG@3259Er9jxYK?EB4Xa6cE^G)!K7@2M# z<&TFi4*BNUD@3GifbT8N#CSBoH&S6xZJ+7UcJ0CIM51(=Z~!%AiFcp#-fI)gok^NG zZcU7KA_Pm)%MuN%75&<{Fk#9sO#C_^%BvPh#>Q-xcfa;@|E&ws6nVQ_6QHfz79`iv zD0~axYMgV6Xb6nhNl6BtPmTJDYVn)@10@5-tDrv=bSR~qG>7pU2$`!ZZ=@I$aV9yp zx2|gJ9_vxDF-+Dg<|H1ybkIsM{ECPC-Uzd16=x=g5rp@TNuY(6dxBBPevf{+3W-;(9bk+nM z*~}HQKYFpq2eb4lb_;Pi{@(1dtp|#O8t(s#@hyA(9uuFFGWe{fqw?_*DXikyJAPES z&>oO{BS%6%dQqzjDLDYRe2U0SzY8Tl} ze&=5a_{nCgNxRE*C|B`nK>ZA)6sEx)3(fcFbl!vYAci;~nUq(>_YaleFd4snT(5^6Fxb(UD4uw=r!^4wDwdnI7t zaDNSCr0eGcE#R^zHGuO?H;_8Qe%j7vDV_zbGvnfC;8 zwsrCJ##WKzw0|YGuu|~2;FcL+%Tm16!H3|!A1z$~gZyzI>|&&uVpoOPUK?_cMo1AH zxj$2kH$Y^4FeyLLRe`_)XI2az4=ZZ5e?)!dbQeS1|ASx1h>E>^mZjJIW#FEify$#w z?ZaA1mRD8MUfB?R8Lua5;a)cK2o0AKM=gAJ}O5wVr zT5PH9_mQl7pwdS^&h(tnfoP+9NaM{a$ILVQn0HkS7(ap3ss3b7;Mo@f~q`4y<_9X$jmWsG1 z9VSUUMX+XG-W2rzG~l#~Yf4P2{!fwucLh!0!(nY~h0~}h6W+O}gx2Akj1?1x(W6m_ zx^KCTHpEDo*~9RpaLp3|C_^rF%a>8bSY0Tx(UY?;$XUFI)#Q#$FXxvjCriOdZ$T(B z@nh41pOB8=z3jP~y!q;yWKP+9NPW7um2Oo==U=5?KHYEGkdiHWw=eiJq_0F;yx!K_ z1emTTI!r2C57F0^R~ldGizungUeY`)SZzD@{j9A>!3BcNV(OP`YD+zm$}As)*?uLz z?LK8hLLNEPl8Kvd)#S$N$Y2A@+&NgS5KE@1j?oqvk@82nu?AFHKH)R)5rJRJ;4#Ww zYxO?00qpiWb+0SPM4Q^c>W3LT8=P{r8+FU@rCN8?6tr{}ZXYDtp~%qTikYhRs|oq} zIm7KyW?~3E7b4qx9>;CHusg$t2g`RuRB^GEfjn=wMR!8-e#}|p_64NywdmI0n^O<-jnu7nUm(j07uV2g$t{sK!_& z+VwZxegJu;MhwAmCYA7URZ?eBlqIi9rQvOJ;?r*4k5lqAfK9JFR@>8KrU<`FZbkzw ze(tB7UCfBBBC?Z2 zoAA7)hbtOm9?rxSfIPg+I|q5l`Ne0r@KE}3LRQg_+b*8}VV-Ws1%j+%HupuBE(^5> zIQzt~EsNoQ_0N&2rSM*6H2ADH=;r)mwy}-;#dqY%LDeUM68e9{aD z2j#xr<`uV3kHb|0?Y^nF7eTlh&{?ArqSTF9y0_w=0@2FInKbN=jTL??+Za11tX%$x zD?hw>{5n`IM!sq!4Jp$|_r{0t>m;@5P53{};ykFvHN~=07m1;LEd1*;*mLAY{*$oB*d=Qv0i&5_1ANW0I}LC zDL5I0im8mu|7I1HgX|oclpaV}A!EO1fZlV!G8-u_z za!OLD{fTA<*24;2v;!=(JD>fl&qe!8bi+nRez#zb&6E})h1?{sYcxo1#v z#up(u*v1Zydg}{cVcN;kv2qz7nGGHCd9dArlgS7(u+=sc+z$R!X(M=O=j1$&ftCD2 znFi@@F&ond^M~xJVy^dO>i7_0;5HV5&vPq*d<%M+rHNPW!e7#X#mvcCyfRbXule+l zIeMeA=CIzrUTi0$H#Ij+8z(aAz>lTOBq_Qq%7;ZQntb%E^oiZ0yGMyH< zlqc?Tt7!MJ+!2nZ9E9nM--41wh)r z9&NV5FW7bRZNKw)`^@K3Sk_Yu)SA=Cmtx%p6-R%VRbZEAi4 z4M~nVXWc1ne%F-#0(Qj;rrEd5dp(9{9$I1O|xy0Z<0Kv@+_Bl&5c zgldi<`eE9)q(ego`^=|Cz$}9Fmn_!``{;`66) z#H*!*%QHexVY~$D0uq1Iz`0C`O5YL!AAPxtSe)+$4mpUJ7L^3%7MK zht4ayFTPN%ox+a$-75p7B#|?VRgrls;iWqfN)8x}BvvUezcH>QhgDW=WJnK~k0i+t zy)o4-5#+htBYu(>yLBx|FAfHT&Cn} z2*-z%FOE^u=T3$tH|ohf0~^(@nD9L6Qq&le@=+1XZ=Ob z1=5NC$6hB85w3{(PAKzUW-^rIK|m45pEXB_Qx0#lJsM`8sthSEMkBm!cfAnMsJ(Ot zf1o(!gUK`hMK$>k4F&hn-EVmr?RFfgLFEhN!X?C&Nz$KbRBJjc?UCw2%Y$Owr9mEK zDE7Zjvzz+)SH12-Xv5GyeU~}TOU`1P^P$;{c>5*-hUv=hdQ7QDWBgqHpj5rDEqII_ zV>r@6v@UlfPJeV15JE4{AXJfgb`!;(K=XI$oF+m_);*pb_{{F{TypJWitRM5n~nK> z3Z_*p6NWlL(dAg)lajFQE*>M_WKNjYCCF8a#UC;%UUPsp#!Bj>vJy?<{V5D3f#x2S5~Q_0+6S^}J~(qs+YC>!3PD~E;QK=xqu7JX8! zc_ssKD4xr8_vCW674u8&xTKeh5r>XQAeSUuv*Y zKW3%N7Ud2X&WP2Dz_pQfucW^!#ikA>Ed*K7m4P-G{< zzK=BrJDv@C#BDA|+Y6O<7Q{L1)>X|qzpSgsJo2(EZ7B9$co_3o%kzjh-xDSVUOjNs zQq<$jK9R&eQ;xx)_2N{+?vu(W{)l;LF%CT zBFVtWg6VJg-Lh~pA9?S?avsAg2+zln4UUP~U9LZQT#~a7Go!`0dh(cO{2439O}c=* zGm)TEwt>>>VIBp!~NgEa|WdUu2wYRS3!0xNk9L0X$1~Bt6)jcnYaL9OJT(M z`}D(S7YO-Yi4yMqzghIl<2yV*>EzYlN*~A`7N3vuVEJFn%8R#R^|Vsxk}P~ly5Kw; z3~E2}=lWH?q2;YQi?DSBc7d~esC!OQB-Pi1g8NQ7t}E-w;I zKv)K}0A^obKm3dr6wu3x2U;)@3fo(JZrS~IOb&>z)!Ol+$wFy*Kdaa_Anmn&hMi&y zZHTsKUIw1$qGy&}GceNYnH*^Xve7d0{VLr@K6h7}6y{4>>Xs1)0p*e)RF6FMC+K;y zu#J63O1ibfv=^(Qw%!~RS`cw#knH-DzgJncNsEpGcih|mquuy)u`}H-pw?pZx2aaB zpTU>y(~qV6Z(v3ne-1;FYKlu(>qLLdU#$~>mvQ}TWgN>EWoAc&gS)u*$kJ@zzXns# zFi?O4%Kp2LAMSbkjpL&kn1)i!*9m}0C}diHD1F5sa~g?HQ~%>sy)wd9dHzD^J z$xh$CyHM>(Ak-JwrGjy>Q{C}Z`LmKdP=mJPC|%~`#UGn-Wt*OnIasTd)<}XGL3M(T zxA@4(go4~d6!4Q3FaYDq8vf-%JTqANR`BO5Bf(N+g=pLh4CD8g3rS(?B&mj+nK?^; zAeR$Njwydl1T^m*S{L*~LaFAJ5#hp1_{zDQ_JwR;w%N9c|HG+IukIo=1*`mxAdZ}Z z)spS}G~`GhKbM@rT=818O|-)TKy`}0G!->TNkWVES?r2y*e-2wu+Fjs3r(LJ z8naX#`=Ow5C(mj1%Qv*9rJ&h4d3jQpKp#hHB}$+`JA2*N(K#xP#|W7 zP;h!TE`F-ULXPcw~IpR4)PTvjxZ}Usu z->5+}ydM^aYQp`&V->QTi+4|~{v?|>sB)8e6AsF?O2T{M>=iZ~;fn+5aK3$9 z+W?u+3UbB>p}z2h0M9`sQ+zhlu7*(oMc*vS6(t43B9IMf=AY{w=e4mwrR61o2XmMB z^hd2nfcp(Okpszq{ex2q`L~+a!9tDO5`I|0LW3D^^J4oItDCp!=ql1JKH3c$^Osn(!P%U)f~o>vy6d^-!23$H%z zc`jgJ)C+XD8cLB5%N};lihevwC>O^e>vUyJWL_E2Zru58gH;YzvH zYA;z;Zj49^0Bf%qu!v$DOhk9G&dBJeOZ(^O|QCdM09x zF-6Mx#2x?SP`k#X(06W5_h4R99>Z!!_GKhnmt8To=B!CEo?O9wB4(+Y6C4Q0xSin} z`E)}*&8zhzl<2I%zn1gPw(c=E*lyBro94P_LjSz1Y zN3K!B0kcB+(`163SM%^+QI6(m;NUvMu@K}ss@{&^4}qmFLYOsA5b@3 zAur(ItVJzx;J$PCVEupdt(NIanJ=Ox92~(G`y0hd9JXT{csSVCH!)e!a*^*o{}=xF BDgXcg literal 0 HcmV?d00001 diff --git a/images/Blend_program.png b/images/Blend_program.png new file mode 100644 index 0000000000000000000000000000000000000000..1eb9589b67c553b0fa0a66c09fcb3fa1699c49d8 GIT binary patch literal 30657 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 l{?kq%3{Vqp?Kxx+d;<`a&pJ z!xpzY?|1y=EJq%-&aKSSR?eZa!&^}}Htgux{T>Z{_(uppaGz}2{NR(!Ve-g=wb>DxJ90y#L(v(rJn zfVuGgH%Llib<3o!zmx={8hxMiF?9fxB}3|X_J+xN5oQGFVbB5H+3D!=Skhmyxhp6q zjz)g*Vbq(IAJ30@mC*{@oX<8I_1=N&Q0+(yxJT8Wury5dVIQNxF^9p;Zv<53LHicrUq&h zp$Si^{u_4J7`n?`|Aph^ ziMlg<+gnyKFy!3!d4A`mCJNWTP3#%}bLi8HN)l!`kYbwd?sT@9YHuPFbeznTpajG( z(W&G;b;=mM=}R<_r4QZkC$#H)y9}=;&melUKfA1;wda3>dgZu6tf;6+==a6-@A-Al zgNbtYMAr#EAeB6SpXT%{yWVjA4%$)Mh!87ECzJrt`)voyK+aM~;;#U?kNEIHI)u}u z4ZX6vHTkzu*6K&tFC*ye&ejN4146|f$sGt_t;Hy&y^^)ChKjQ4o)fPko zWuAe(jE-lEI)15IOJe&G_jU6msp7t1ot^8glQQ-C$lB^apSYU~ZW|$M{3tTPqe8R0 zmJGOs%-wQjT67A~z2OKat;)gpHI{(csp4YoxgD=fV1AEg^PY^a!jhuVFQKKxh&QIsgBb1%H7*jXS|hr-q{vMx zi3f1E4!s{r6d>KNkEEVR>uu-BknyYHr)DaA6T&(MG$Kx4S?QD;MG|e3*Cb3BSNN_O zQj(aN!NHMXkD;7_Rz2EFuveEwJwQJK-ta9m@l5e>^+KIK8MXs*QSA+&88tj+`EWH= zs3#t^JKbT0d-4K1SE}CYMqFY5>HhgxA~*<*+$d~k*&p=lLT2(#v zNX?FRni?xCfe!|63YYJ;TWR&dRA$u8m?bvPuLqN>1Hgy81xl)yna%*iguEq0%eH!8fL505f#uA6ODYfd}_=n z?reA*gu-InFC#tzkw>!gXM5<#ap^q}gGgvyiSP>Y#^euzo`$lMOHS!%!v2vA^~yRB z$x7|BH!aNUNE?qaHU5IP;o_4>XpPm7ubBas0cN*o=g|l1my{2s50W)HqLpXwMIk4f zebv*W{8wt-rarh!hkfH%Qq|QtWLm?VXAHxFU@@JsA5#s-SJynRXhJmUiWuY zrftA0Rv?H_| zJ2(UB&0hyRVB@iEblI-W?_@;zt^>=pBc;xXXY8PeoWT^&IO|@|m4OdmYz{?Qi$8eC z>E}XOgdhzDJ{0Sraz5hfsbn%{T}D0OA8uviTi0j$pQt-yt%emhCNu1dk(YqRe?_~R zOcGQO|0;N^EqG%CA+5y1I|4uLr)k>Oln7*Eb+jc;sZS*mv6P`Uz%F&hjgdwkE%Xe# zpJk&@sw~#uxJF0iNZh$3H#j2c1wX5{84?$Qwk|j(l+x1hx^40Oo53f9?F0TZ*FaF?#8L~*FL~5~_30$dC|SvW{rx ztXOn`VE3Fms~;<*wj@GA?PHEZ#*q3r5rpZ5U7v>1z_9esr0cK64Lg^f?v31}(FE|l z-DuC#-lQ+Qrb9ZlGO?B+gseNL7JSJ=&f$%PaQbfADR9RU#Dum4d@^f;upTa)pYM!; zWK*8>C&unp)~Vd)mKj~3IqU$uRFR@)BnAchj7G*p?hgFT_HaLia5h&8dkmipXfh&3 z#+S|zD$5Pev@k2~B8!i|Lb|i$mfA_3VadZ{Et1#QAzJ&8#-aKR_`6SsmFtS~A-hmL zfARc~nQmSHC{pD6jwgs)qs^QlUF9n0j%`kyyAN}`*i-E9p-B9YQ&dbxNS6+lF3h2X zE!cdAuu%qBS=}0Im8#Gl0ZYEf-Yi#GVihx}DXS9(_%d5+8IDiiA860Zjz6~yn_onr_?}{Zr%1k& z<)s5(#^l9$_thJj_~RgTtF26kxzTc6>0myd1N881dc3e_m-Fr2Tl{UL zvi+^;dng}`ekx+&D$mG)9i{aMb)4ARU_o2DIMJmGcb(A%%A!G-atr z^il|d^WIA0>V-mE&?eDa@KuvIBTO~io*lM4E0d;?jzQ7RW~7ChB;~P5Vf`e<5ilQ*e=6tw0Cm$za`v>#Jny4g;5tpl=A$Fb3`l{ z{l8Sot|&2s(I@Zdm~0@Hlpx{bXPoKuB^dl-`zKJrelf7S z%lH+hZ}Tq~py)vP`tK$>xA}HHm=ckQ{QuEf|Nqu>=N{?|CbvEUGhIc+4g;XF4y8Y< z2p0LWw7n0K@nz*~vd-g4MG8%5>q;(D4Sj*G@m*BqOh&NWF>LWh5pMp#f;$U{KZZ?_%5g)bL z)(LOzg;=i4<((Zfu)jUSY~YL4SU%iO@jS@(3Gm$r0dhRCI@!(Dt}|Q01B!Gtj+D4J z&c2s^Vj;IFj5TlS4iqT8x4y-%0EEZpBw1#7MykvSSianKYYpAW=VGMprJ@pa7@Gd4 zNH8$#O5`_QLe?kO?|M)lS{*LIeZe zyO9@AvJ;WkivdH!|mDU=-b-!6|Xea;IDo-O;|8X1jC ze~!BMgyL;9{;UFANJF(;w#|CbYgaCG=hvaBKP%n7GDl)T9Y2`!%|plg@Bu*|x2lE9x>45rGui|k7HYS!5% zsJvqYV$2eV{x9zl+a=AomQ)0lopsB2uAXC`i0T`vz z?iCZOtg$1HzUdZoOmW9lkb4B!APk#$kGN=qX!jDi_c$X9niE#8s7XAIARSnD^)H8ZQfdH zGylwpBNCGykNphs@+Su4*jGM&rGxO+W6rj;|-$%#ElTd;~ zAo&{9SRq~L6U?K@^t*7Wi$d~M*(fWK?hXB1DUKZBV|zK3le$w@^4iDwbgB23&EC?# z_MB4BSexajuAIFW(u|%y57Yv%W-U10wUpo`JzC+6m-GEdQBRH%I-u+1_!hJ}s5aSV zT;Z&86`nGvS?FQ>yL*6prCy;<00g9zvg~|eq$+)QGRpeyT8;9vs-2!I~n%>Z~lN;sufXY^xync-dxswML3z z{$oM&N16Gwmmy-=!rRcLPuy8f=kwmL)dBGA7p(6*$1Z3ls<=s$j$5nu##AXX(*#<0 zAlfSHgqDm`n%5h*0i7W_(L`WmK05ULC1H%!ueP}Lp_#EVkYS2;;gdn35m7H-es^;0 zA*2ZlX`-eeBndmew{K!MoM;cUNFBJb*y1=_1^0l<2R$57wOTp>b@~3#T-$>{5*!XZ zMBQ)Wzg)>UlEJ+mKt(es`5e?+2H@{5#T)#%~+(eD~~9?r`Lntn?~S1Q2ss5EYK9{I+KxP3~GV~R41 z2{7VOi6w>(uN|DL7QJ)KnUvI2{qtBh>Bz2pIQT4-!j(_q_nFO|Xy*9m^? zZ7W5ndIU0m*OB$%sMzw{Mf%!kht6DC{MeeR({q_}bV(UKG0&s>jg*rXp!yG$;{>m| zana;&8)LcA$6FJXg3vt1#477b%!$8}{C_lr=(Ty4`b6;d*?CJu%s06QdP zIAb1mh4oD*vM>gzDLS+8)F7~(3opon=_1aQH_7?SBxqj|AuxiBH65;E9NVt?LiLZ< z1EhM|PxjK0rg){VoB$a8|3LBEdrz0cYLm4h0w&(l;pOa1hEq#i(t5_TiMQm$ck~AH zsI$~xQsl>fmfcAlOtsH+p`wY^DH%{Mmmo=?R*tg?&yBc{X-rMrw?b3A~ zk;UyeX(U-uqq&Y9P{T1&EV3T=7qMbzJ8H$I8G(Y1u|>qEX$u?KUXHEU1`2|*WAa$rAWo> zOQy0*lBLjSgs*Hi8PzUG4Op!ze63}vf{+DF6@iWnm2*ju4Coc=t*u5V!M(}duRg44 z-hTMnG)4NkzQ5t3<`c{MeE2gbZsHPKmj-YZyI2yT`a57CgV=U}t4qhw z6S0nAt2*lrqWI1EU2Z4f>22HPtoJw`g4-AZ3d*4=IE>BmeMhk@*ZJ= zxL8ysBn#QY6rGsV5!mbE!Bnq7a%}aLWS8^p`4!RtlCJ8{wua~}7w6SYPve+B*o@4` zl*!8okE)AD{j7q(XfW;#tjEs6V#od^`Xm;PrP54YP!(5pm)w6#4o~x^_6lm3YoJnG zN56R&)bsg~=1ERU^kT%%kT`(0jXNGavG&9_;aEr>4v@Z5fd9e~ zU25TXe?3<=YZfbBxJEai0g%~rKT$#DB^IP>4OA7s3LVjb3!90D;w-mF@MQsfRY1X8 z-c!d1*EEaOo|upiPM4avL5O<8Dbsla0k(!ucH=mu>J6UT6j~mx=82Ub)DjXc|B6iS zH(R#7NHMNgXz{DOUmk01x84Kv2~Shf6z;ymqzIfs)w?6^j=IOzpLz9GXe87(r?S4R z;QE~8G<6mmulHnPzC09J8r=cDu&jkO8LH=yyHWc?6AJ2a(>jEpDP>surnWmhURwTV zo8xrq-bgM`xsOD_uCn-$*i(iGADW|3aEhFrXC+c^{Zx@WS70i(+07YorgNk3M&J9+ z;GyrX%7gh!&H+()dy85EZ+uTrZxJ|FeoK28tPu|(D%E+zvJTqu?3G281Ha}ly5BQY zgIo2}HP07Urlfr+eKu>HoKB~bSLihK$rAH?gh+@ON=nd(h=bq_07^nZLQ#HC=%Ej! zU^O7)?;@$cfE@M;{nb!SlUiKv^~Vm+-;#`AwHNOp6CejgL|f#`zmZw~e>0o^6vhAF z>Cn}>|0Mw@FAF9Ky0hT>&-A+tnLqxkJHRhEF6_!-4f9@4BW2b;yY2xUx!Yus-G#Gs zqCl0^yKIqrDmHP>;9f_vrVQmyEGj8g;QUT2Wb9%47(Nh*L_Ab9Buv4A7jFUIYU$f! zREM~|nMui9#is=Ynp9q6OS9>@aJE;DvD0ud(}X!7?-0qZI*JM;f(9!pe>^=25n%}e zT2U5akImV~oLFYjmhn!Ag&C?Fsr%;znI@JC1LI8A_gU<9Mu!uXUnbuiyrYXE7gn=X zpB_Mq*~D~;^}ViFHmtNsV>O^DQ_j2RquOIA-+yOJi&>u{mCc{^=l61P>*Rl?Scs}R z_VLbhz0OquEVCa0**m=m70~fXS2den|6o@C*(KIv@A#AL+yr8Ac{hBeY%r6{hj)~^ zbltxo=*{e}930HxC`E4k&eH6npXd{bm&jT2;PB(;3Qm?RkBQ10+yEp7B-u~^MBqpj^g_vagQsB`I=G__GL8(f@{xdi%6S1v@u)Un zH8)=(v7UP5H^n{utIGQBiwsYw&LdecElwD#-M_6D^kL;P#mYxl3Y_9su-4cebBrP_$gg}nhuXNPvKuOA*K5C)FtVKNDL3s!y_ zjB*^Q7rm|@D29gW+?c30@uNjg+}nxTNaLsWtOw4hYPlfL9pet{rRrOgo&7lw|MEW) zXpZFRRGF#TCyUuzje(EEt3v)st>76H^FkyO1NsG2LaBK zNY@WaicW8CDEe}B_ZMAQK_M$N!Z)_8OfbS{Cs}wC+BZ`E<0-P>3k5AT?+g82xooTNvcq-uB{F=k=34G# z$8Tk~CR#0-*ape?>66tm^X|ZWCp2v9sM7ax?IhO%uvIC%&7d65sOCOgEc^E~?y>@V znim!dk)r+h_prdz7(RW`UO@7()}`O&_$8lNDb*P?qc?-8;!bYhqTcWUmBj0^b4)ai z@M8S3kRmL^H1P4(Ij~Hokh6KyP$`&~$*2;KkwvyrBR&70OrUC!qQoD(xZe8ry+6{H&f=dW@I=dP&1_(DMV0~9??F{K`KAlBizM`E|2E!0S5z?M^P+-NAUy5i*r4*HL5%%~e!_UYxarL5uMUWiN(ADAMqRTO1vHbHLAiYDxq7W$&k4%*Pny`c!$sOWWVaVC}HdHYKniA;PSYwchq3z|Wu(U{LmpX;*D66)d#k2k5WIy|T@Yz?&{rk)q*==Psy$?gb^5SttO% z!@DuZwgQ3@cZyBGJ-w{>{2#5#vm=ZTKmQ~=C(8tWoGWC4Ix#WXRB$|7Njo%B{N6n< z9LcFoNzT_W6b#=35`PhhX zc5Nfo|F+WIy_m+-Kym-o!!IMxp)#>pUK}Ew=JzV4{Nu8BLt6Qd!3;XNVPS}Nrbr&H z8S>H0baX()?k_OGh667@+)%FMKuOwVry)j()Hm?M(Ry;jg?VWk)GOH!aBFnl>3Z^q zK;;T@6H*$PZ!u&M6PI!tl(NMjc_+WEu>Q7ruFzwpdS@a z`sBh14piVp^Ir1$BT6;V6&A(jpGNgP;uBtHWo5lc9iT19q=X;#Aw3fi`lmk0=T_DX zx^QAtto5%T^`FQ{Y;M|=x*GLCCsa-~wT-08`MeI~7z<$Xy0C_Z7Gu7y1--qJr>I+7 zh=uFD?S66fn)~$vcqLkpVbj)|%d@G*K8N6Y=0x%Ef@MRX)gP_XvP=W|JH2&yHtMq* z&7t;4pXnY3C~4B`BljK!+N46wRYUObWs34(;F(cSU{>H74y3*GrB1^VO!(<%?y0^w z46M>wboT$HLU+ry+@8cG@c`#A1{d%c_fN3nOwp5$XS4V#aHLHy0i2C9$Vm3&Dy_K|2EHZz{pk$~jBida|1!=~{ z&gp+&XHM zoW%@}Eh7L?3?ev+=l+KMY+#`FtxtV?O{- zLt7Y~HZ|dshT`3&>wZSw8Mlrw3yqbU!`-P!X1^UBh$MjA?i84h{c%OT68PW^rOs0H z!;R~=VlO-`u6n=A6+aD5ILgRwXhK^Ve(#&Uy!(IT)#L3QNcNTnQ-xrcS5!zc1lH*A z4)|olExLaBg;yZTj$=7MD}Q;`A?(|#rA6~k*G*<-K+gN6>AX@5n`eiVHH^6F#)a4> zY+LrT$M-umQVqO;;J1-donNu^Qu-}w@$@l81|xl2c|bA=#WBq5hwnIEo#Hjiy1wIG zqg!C|-$@B3xj+~W1V%;2LjYb5^AbFHxA-kz(?cLGl4im-Ha znW4~f>g3KKgP4Nr{IdU-9(JwY3|u?rQY*XOoV@2hs`UnqE}zFh2CZm+aMPKBWV;TKuurd$3kWnbaPv zDHD}_hVN;N9!$FpDen<0$ZLgBnPLO2W^)$Vbs<$Ux#ob|v(4_mJ|MlZCvzYE(VqpzQFMlLWW0GOEPXSJ^x-f%57MaLr*#dqk%^9L8TfjW6 zinyA#rF;s*y0#~tg^*M9mLvgJd=-RFZLPWWi}u!Ghgn$#S1^V%0_aML;XuZrrRLzp z%nny8Nus@DIenroet|XFi+>B4_ivXKx)xG_=j!5icPteSbHRh4o7AI(y}(YPSh&%T zmso<}FiR z_!}jGQPqE=WaRcH@rQs#g<}0jK5N!Lm>I+SC#+)uOVwDJ-k?zHxeo;=EuqM=|6Jeq zg7Q58c{FIoauH2DeOHRS(zFkMbrfPnxvty&*%2)f1CI4z4==8xI>aO6er_Rx@~!9{H&{)V~%Bs(F!=aGLN% z&iyGX=l2p8CI~c3U9n>d1TPS9M8^w@4ImeUQOF|`bnyH6;n>bzmXK%lF>jqf{d{CJCgyce-1gh zIF@HM^8VI3k(MQtHL0opdxDtwG z`~n`WZBHzQYaN*O#}ezX7-Yl@4;dNUjIPbIU zoafkgzaeg2G1$xy9}9SgG3O?uh>dV}4=fbc@Z=Z4r*gD9aV73KXZzpjINov&Pt54U zj=@@wbsXdcoto^Fy_7lM7VN3|6m(>CZAMq-n8Av7%*v&u6)SJ9TX*%>W5YHxq0hl1 zs-zn#Q1;()U1^?rqY{_|9@Wba%HK1%S&!L`WRsYL2z+-l(?-6ga=jhuO5mQ3VpadI`G(M*+({CqR@5R zgUIBq3tbZL4Jd0}7 z-$0EPt}8n6MXvfLf`XFaXKvx2Gl+x*61?&_GJwirpE^t)M_pASrpY`M!eJvOS1MYl zr_)N4L2;!<3p-K~>ouG%K3RJwLSiznC5wEcZe~CMWO!H&135;LaEG+(N$p?RLmev0 zb!~p9sZ3eap?qSscI7tbX=#5z=!kCGIKTP;dm8KZdFL)8|Pfy%JRX#rs|_|JF}E7AJL zesrP|fF4Ig2LC)Bm6XKrOS&`qN`cPA zN24haCl{x>z9eXAPnqcN&z`nQdDguPF0pt6@n<@LFDVG7)ntp@piay18M*fG0~Mw( z*K3^k9!E4COIZ%y>3kr_%N9Wy8qH3Iob77Vo1|y2bw7|}`osI90x!R@knT|}E(8+; z(nS9RAe)EEQlniih@l1O<%5$lXf4R`?Ti>!E}8u0)BXM)U4U9*IHO$A{8BU;B=H4K zb8IXr0)PCrs_ie&mB6Na>AKPQN*~H#VfeO@Wnx2`+g4&oO6lsvLE2+HeYF+ zL;=D#8-h1eakev6k@b&%Zyf z0p%Yb=TMc3bu&h%RP6A_TxMzj?JQ z*c=rXn>T8rE5p&+32_cjsYWu9!^0NO0bO{PWrk?6-4n){5X;R79N`LnR2u)TShRd; z#QRdjh1KcZe=XN($J^~^P(Dy+8%`|jFl13u=)iCevB3b9KMccWtIG%x^}X0kLN9mxB*PPP<*YO)VjvLCdumh;vSTo;&QR7(U%4 zxiEnp60%Mf{l0nv`%?{srvr}qek$~O1I{^Xr+fLxm6KOLTi6dN1aVhJ7Q$K2HPZS^ zpk&u1OfAj_T)Lqd(JKb6yKLR-XBQduzJ*Kgc>^ld5i=+Drkod!+Fk@4$L~=^IAt^k zd{7Fn4*mG-Jok+T;N4JdqDvNw4+2ir#s|Y8o6~%d1{&I0Z=EWnUl4WDMh`UX++x+J zT2Z*4wK_U;a$6eoyN0r_Ew%h96TXdG>WsJ9_=Q%#3p(Ux+?MieW$o`>|HQLH^wg0u z*5<_!7?lhzm{JugzALVt<(}{`9KQj#Z|JF+{4pkYk9zWkJ0xYQ@~0fm=m9>=4845Y z3r(Ks#W(v$XA?6j=uBoq-aRzqvvy;AHA zE~7=tMLMUKOKuKsj1j%nI0Jvo0EdQ#?tb4blQ^HS4@zip$(dXU)0$-|dL&gKeycfJ zn=#Ce!*z=obMV`;QhOIdK@j|5oESujds1U3DPwUj=gOTS=u zRo`1q&aihH@o>eR<%3?L$RE^;Z@8xCxZ=+e&j^|4A~<+5s)`Kb-SPIP?`>GiIlmhQ zMP;B#oFBsDmd-_s3$ap!8357*8)X96x2B~!bvhZ>EE7hx~7kFZ{@#-J;lS{ zTMyB)L>x0SjpFW(xe_xx(v9LBIn%p!ZCb%tOq?!q;<`|*m3`j$KZe8_ySEPL7F*1%JHV=qW`P4vkq#jZPz`N z0>x=@FD+Uein|y0;u^GAaVNAmL5dZJ;tqx24kfr2cXxLQa>Dz`{^b4k*|X32Co^ki zC7Gvk?(4oDY+d)HN>lR~1uG9QiJU+M3Mx|?*_XJzQgs4uJ@8rx8(u1MVVPZ> zX*W(vYPkSMdScus_d48xi^}Rjnq5_N2n3YwoLJh5u~FSk0^ZCDmCiWc+`sgY_~fS= z9~5=fo$qB0^RG&Btm-U@To18#W@hPODNGC^aHr%ovD@>q=ofQ+q-1D7#YB}byoG;6 zIXORgd;`{O5(CRb+4QiU&mu+eS@>;K!jU7)SVywDlF z{N7Vuw<~8>Q7h|lIe6!6hTQ&w@C|JTo#A#Qu_*YdAIX;5c(Y zTM(a?Gj=Lh@#CnL#J&f9jE&4#`Q8KwQpnjH70FsUul%lS``spIfnUd*l69X z=*JGpOXkN!aKdk8eO?9S3_%p#y5>wu8_9cQ6xhEY8RowiKW%Vyh;jt1^ zQW(FO3NAkLO<%)x9^I+jH?fe$xaX_-`wJ&WS_H63e7YdUq^B^Y9(0uu)HR9z(|Z>q z%Fa^iFLV-!uYoEOA^b{zRhj-0%Jl3hy9ti!e|BKE%rbF)IEJM(yla_ku1_sdh^s-# zMHA$wkWx}y7Hci9ZfaH^B)O6E_lsnZv*>gC^3^FpzEWCc*{iGpof^wfw=o*YMdfv3 zoOn^0sh zU7218YTmT9mb%Uc+EZlIDzk4=4d;!qpQSxTm zYs~GpSPRy4PgHT&$YOhgDB`7(p;8bHx_({i$-zF%-KD<1l~KnK4^_*n{T>FrXJI{^ zptYJCLGU_wSFw^m-Lwpt%y_V9VVo!%&30A>090t5K+*7f>TQSY!9L?C&%($tgC^=Jp;N zua?%`OBL%}V~mh*QEzZ_&m-m(542kK#qz^%s#V2#c z=2c){rjbBA&KmUc=Mm${4quM60}ao+^2KUA1S!m1i#=lX3MvP4sN<#&j(j+^A+4EB zaYMC9+fT}K%QZBmbXYU2Zf4_W>Erv@{0o{3 z2B6Rk0mxvUt6JwA>MWFo6=8fH)H6?#jgYpe+efnFM0k3maykq|i?T(;F}I>&`1KtS7Qj%S6rCChVw|p;KGTi}4)*DpUM<6eBn1aG{pz8$UN+)L)>yiB z{50X7cXYX2Z4&9Vvt^CTCA|MDd+SU%=bICpkIxgC1uN>Q}jvGmpPMPq4+xK ze6}3L4FbN5+?+_+aeDlPhU~l6FMO8PALcAb)Z~7tO+ce?Y3BKrDI(n~SoUJ@T?NoBVnA%9FD=z+eXHLre&c&XE~Yk^IJSlYdbg&UWGCum zJ3L2mW2D6$IMY~WlvicDONDsf0UtahFw=pr{CV&A`IY|6V9mF$N`0$cdE+V@Z0~Mrv-k5Ty_IE#-!iyUerLK*?zD+IE7%OYr zd^dSvx-wo4PYN1F5{x+0odk2-81O9~eRvSpnNM`7Yu_@o>oz0K#`ZYeMt>=ygk`a` z%exPqOm8?aSUz9_Cz%Q-_i74!23z$poP9r2wbO-Y1(s~Tlybu*MYVO;YYv92$c{4Hv#POv9Wq*OAN!>!+{d62(}UhD*ChMB!(G%msyhy z=pK*7NwRj#uZuHFLD@=A@A4%Eapj12jAgZF}tJ~ZSGGV z=%vpEVlDzlXZEOsl|b~)h7%y7l<$N}S%W_Ad<@tLx^`P%@?%4%JHINORMt$CazC*A z=uTVT&dn59%tf&le|&?(nxFDPUbFDKaW7ix@1cCv@7B4Nlil~O>E*Cr^jDZ2s^D;6 z-YJVsjeE8pXyO1Ea_}E+orj9=0C3+7lj*Z-Sl6zOPGS`7m_&^lfvmHoJ@QI%2!;Y< z@&19`G(_5m20?i)WT*=}mBx@cdLRDGLiTsXP#3fBuMTFiNQRZZv;{YtfN^=PXR`JHX4)OagpBQ893H z4k}Q${c!cNnNV|z3^_Y+Jn`(#evVNHwJsp9y~~P2*??r=9536U+P@?Kw6FibX2Ft+ zxBme|S6}+)>I%2$Qt4Vn?c!<*2H)1y4TmqleN>Lolejx!*m$8NNuHFbqrjt`+8#$l ziRw53aP2#i+@{eA;M^sJMA{OhSSWV8UMp{wkb`2AWzKua29hfy!RDv~-$r4?$|ao5 zuy|FQ>9H>rCw{V>dv9}pEh|d9aV6Pwu_%cIZEA}Pv|n2>lIZ_H&HOIz2iZ&0Z9juP z&YXN$-WdI0M0$B;UF=jW=bvJ9Il+E*9osOYh@*?=sonJj8x`t4YQ?7BsLTXL`u}?1=jbc?6MOa0h%H|&-}nBR8S_M{j4T%( z9YP2?R<}_VjPu<_obI7o1Pc?scXl{oE-M%#nVr5cqP`|5Qfn2$a@kk^!MJ|y;H%xrZ?x7jqwWmMm4gmvkaIC|UAP~=b=-%p<@a%cV8vX-){r%!nj z+G=WQ!aaQm6`D!Zz~&e&+F){pv67Vd(57IR^p>T{P8<<_H>{lO$&K^_0Ch#bB=Rd- z)T&yT&W1&Oh463d5Z2g?Hi_H}2AJGXIAlM;@gF+cUh*l&U!^oRw59D$5tF`zq+_HD8uCJYm_#S zZ>-^j2{5&-!dK8*0oC(V{DR+pxFPowt(UH$1szqet7usE0H2fsCi{ipO0HCEBAqQG zTB|Q)f+Ly=fb9T~>2#x7xr1OxU!|Q6dfKY+qZ%pl z?B&@;p|DcrmY(O(+J!SS62-fg7IjI1Jdup}c?F7$Q|ntGVgi!{#9THE%=|7obqOfd zv(s7vk`M~ZVx6{t!>aXZYbg4#fdO$u%-U7;C+=c>c9}*kq#t}vH}qV3L!Ef;^l)~n zp6^1~+u=95-|8t9_@gVe`*ou?1={w^G}qxTWdHQd7M(~f6UF1PRTeFm_wWnKY0^PW zq4raG?$dKW^7TxYG|_m*_Z7Na9lJ9Rwn{wMK&?})!|R4=?zSiBpBO3HhrS;Xlr8B* zoj@YYI^Q!3a_1fc$}VoIvBt2>vm2I%<=z@(ZXvihjH`w4)Wnw)*e=)d$PJwyeN`dk zKIqs;GN@|oCW4%EH@2q3^24%wW=zt5Ly047+wAnbE>|-fA`{C=EzYXfzJ8q(XW_8x z$#(ZrhbSu0IuAPv8Ibmvp%vJb60+L75S-=eTu4-uKSre)XlVn3!gz(2?h|mLlr}5G z0ffzzF{yH$Ulfm+HX_b>(X}l%s{?T?TNX0d_EWx3rv?D(&1<6uvU1d;y z(PDSw=4K8GbYf$iZzz(mD=X`Sbn6ljsFsOT1yGn=1#S^u*I>~z_--zHsAZ-ALvd-z z?X06RT3IM)W|Ui@T0-eO$=fd}D#3?n;U4ePJ>L58*nBPGBwkMP`2vDkfLmq~1gf0S zkL+Xyl2!;)9dE~Cc`I{5JORy3wmJ-lY*V+-mG?%6m!j-mo)N)wEN z0F$2;k=GKOPgbw1BO za7v*taEx`ssYuIvN|>_s&@(zhbxy3rZuaom`zzMj&S>)a#nsjh11RaesqhNE#crLs zlVo``_~6ZzMmzQWa|EbcrbFAip=419-w-=nwVAUA6n3WSYiQJ(sdP@97gxO-lxy#e zil|1Z&O}3jgrl8(>(D|*74tg+Kxwx-V3kB*ssV|Mo&ZJXiU_RvD5@H*WJwp7`xM zcfyATw7ZX93pF1ZLs_biPLsL%z2hr=Ue_w%FDPqP_9a5i}4LZ116zs(B3wA(-+kYjeR_a}rJ@+|SK(&u&WS2KKx*-@uniGt*Z zmxQ}+ImK>tODs#`mPJHPo&v@yy}8em6jeu9NI!26#4_2yBi3RneO`)Rut8(*oD_ zYYBjGbLwn29sltWOD#gm#^%88HbX~@P>k0i1kTfw2l{c?c&YYs-1h33eN@sQ6?9a7 z-fH2MGH!9Kal5JPVB_c~nNC{zDpyyD#&d)RoYkGVM@jQ?cmHjFct)rv2QAtobs>qG zB_l*lf8ld)BrO-OA(d$tPOK^hR)X~x3mP^`!)q-@OFFubENp$Vnw9iShK47dG;~$Y zuFoN2zq+AoW6hkfR&f@QL#h31@BFX3t3lSTq-=SPQku6EcTN1DsC1iOnzSs((>R0I zUQmL7h4sCt6rVtb2i^^R_IM}Vio$CC(cE78$riV7+l*vyTz@*N3AgNwqD<+h$oy=P zq$_i;GoYs7ODZX`Dei;)cYejqKf2d7o&g6_bTkuo&kZSSeS53m1k>b#Cy!nBh6X;3 z5vHUiStfstVR6BwwJ5@S@dAOlY(lvw&8NW5y>6E(MHN16eB{0)wK`*BXz`qMZ+LtP zhfv^5&rbOtJEc{f?yqbQe~oE>shel$9YRo|#iC?d>uBd=59Ecy3ml;@67L&Na zdaCmDe>7D+$KO1=xo~EA0`KL(;5r+JwZFECud(+SicQV-`agj7x*@dsqa714bRuXI>7u)Ll1`VF{PwYUtYH~L0exwB=L zPiLIGCUpmL_RD(Zrqv#$;Zn+9C(5oIt8MRU!`r1`zd!HP*sm|w{9t!dk~-#0w}Sri zQoT2XhGPlm<8Ym<6rS`x$aBH|AvUo5a)rd{O(+qP9Y7%*b&MiSlew_GphPV?3Dg!n*x!BPZ)V0 zn1NrG*;^pPcx3a2i#NW%U6fSOE`I9E4X$;oQfBvgxqE9Kg3dk)*YGvV+^Vzs(MNPo zw|7he=%yCtCJoq~O)Lm9qXW-{dT~CKk+N0;t;3GL8a|f1TghL`{wQw*su7D&hLah*nnGi9l>x8-y(sRWzR`j`SW$ zzm4J@LFYyUT;Iy_!Zcckt!<(m)9D#N0#IXMh`cepIEUbjYDh7Z_9a|IPHXKMBsu?j zCos66bs2Z7`uE;ZTxHN|#Tu&JBD8XHp+nghPT=+G|`b4EDAl6=b5k6fDZk?&f#MO(zA&?|w8a^aBo3mUoQ& zzrLI@7bIL;8_bwPs4s~(Fnp<(LVq~p_Cw^x&_e9makSDgaD@}rlEHI>7f0|GN{UqS zw-Iw2u$Z0Hf_e0_D#yx>e^o^l@H&uMyH4iFZsJ8EdAC(%0309cf=2!Gu&UP-ezWWs-BQb++%& zdSk3M%$rR;xf$$w-wR8sY%gv&Tp}SwCwTyXnvE(5EJ>88C-%5R^jX-UU)mn=$;8tiLD@ zYn{o$stm)uHx98+HAPko{lOG=XGAo$+W+^83GRPda&@B070!T$fp;MmdboQW zzDv{9&j^m94Z%-ml@r=}D zuqbgBb_ff&;nv1Ky{k%=U3@^PI~Bj*kiYhGj|Cq_bCHOptv5mVYru-jIXjcjR&%XspM6={|UAJGYUmNeBH& zR|>3b_-+4QE`XEVMDq1jHlQZTdUD%XKTGG5Rscw2xfM8@Im*v~LK(IFQ*;yV?$g2H z2kVjIbHmzaCiuW|U`B5%--%8%)V}>7Gl7VEU8PB|$Rs}xr@;btb6~Dl<|g`N_++-x z*zO4ru3I(B-1lWDVYZ1w_6-eu86fsJM_I#aAN;fW<%or!B=$guF=oB=9mz(oR26w3 z7`o@-UC)imVWifG^Q)^x>?&_a>(x+&^&n+xaLqIAa#7mq0);&*l>F)#PK42CP%Pqpig_uOAU+;PFnjb|R z*V(v+@1wIbWwtrfP5bUvuAftEj%9O#7Tub=E(VFL-5~a#4B0=n45#{3&|NhfoImIT zpZgiyaYd=@^MDvwDp-CA3M@6^s|gbh?Gpy_EiA2oRm88?YLoW+k5>^}*#xeyNFUA~ zj8|<)j?bsD2z8mh3d4=h3TXc3rOba!A0{=+dQ=vYb;v!dQ#wu=`zj8~W4!}?eqX*Q zp8=&X;5jBSOuuAQ141He3(h=o>@J)%Li&mXcwsgUXO~hleP=axc2!tOXY}LC@YdaF zRuJ`=#Q041b8psIimdmnaDQ_vm<|mhD>w6vVdHpp%7AyI&wh`f$V@4z{d$ zf0AzS3_iUd5DduM6%jDr`7sGh&QA_}#mb+k#bLzP8`bzmd$xjU0(c!g{ZwuUNY>h6 zefHQp3Xsg$dh_EWQ(lvA{wpY`cqtOoW$5G=wEklAg{#eM)bLvj$EzIluxTKi(>h9| z9+dKyt~D5Ajnd5v{Q`EK(K$tGf7I7(9T*D{PAZspl`$m3S0~=re4K}AH=e1GRAIVY z7RJ=Y$}hi0wYS@HeUN$XJq>poiVHq@k)QF&wZ*;dG=?kmb-s!k~%*$B%>c&`?P}Al09c%kbg!|0}c98FAJI87tK?4RSNTbLIT9+5*iuh^|n)LS&eqJ>u zhMG2>s!pC)RgTY1UP7b(#Df6~Imq4i8TQb_Blpc439@%9>b#l?9x0|&D*b929W zmWoV`yjR9W6eohhu0ri>nok+33U53EHUr zO5A@F-%l5K6#l_bAz}0*mbf7!9()O&ok>Xt+$Y_7KJ&MDj;}3bYTJ8Hq#7erQ5cbu z{VbICqDY*R6m;V(sR-(bpM=`~r+vEZ$|Hr`nBr6|C+XD{|5Y@# z?HTc&g8@L_m&3=3K2NM$-Qn|(Plv_~7o=OhAB*cAN*BT&!uZR@LV#Vi?zTD(mM{NY z0O#lo|1-~HFfz=W`7eGBNgQeeL)RZ!32nTN^WQP75P9W!=QWF zqtBBiq*x|@G415tDMFQ1qC8)9Gs$wn`ha2>z}dB(jp^&RpSX;4JX|~S`9ZvC__as8 zU?Q~86PZpVCeuqhH}89cERXorEB;4p*;#Xs1$jfAYf4NBu8kY`s}96k_By@S^bD{s6KfCDpfRt06Hgy)CqI_`u$ zLj#@8lp!95NHLqgvwKc) z%3G4c85{amoUkz$)4z+L0(fICNNopBwJTzAqO-POY%|-ZYgsf>`e^bzxR!#tQ;$2} z07Q3_8aFj~sX6YkKxokUyApfVRpl1rcy!qC1(=y&wJdv*qAlSp<>yIm)U*poxbsaw z!92{s(9oD54{1%paCs=lGZ?Dj?Vs29G*%Df-o5wv+PaR_{(>^>vl~lN7?2II7HVJ= z-pb8cM67&{UY5Gp-<@GcSrmX(^MdlBnF<@C{|*#uO|#P2)u0D^*Ap_r_R#t#Gvxo~ z;IvkrAslALSlQ7gQ;4;1!{Js`!7~AvyqK=)ZIFGTf{N0K`ok^5Hz43nvMn!SQbR0G zw;!KrXCXf-APakgN-hsi1m@6C%-}QAXY9ndIUCP#_w>{uK%cCGtZ}%uxBgjG5V{k!Ta{Ruisuw`+z_kMnhzt=BXjU^^_tiQ>s2+z?c4^>=_=_Y!A1^8_PFp3R~_Q zDW7G9izBP9Jp9wUqbd&MJr9i;i}qbr3sq`qHl3E7X!NDuqD3$cQJ`1ZX-PevUk762 ziPk?;nR?F%7Zz0JU#9(2i;*|}=>q;cgCf=j8<@|3lRmjD2un*=+)m%{ZsPgYkN+nG z>O=WxUhz+kj1-O_y&~v+)B9CCPa$OjX~Dn{fbNawD3UJ-9LGw-QRBkT;XPo~@ZPl} z6<2n7cM}`W~#I?%{!spkr-A%$ewsKkwmu&EIr0@VH`S@1IWEHx!sr*?M#RrW**}0@rD0 z4PXWq5W);dxvG0(dxPY6mCmUCd64MnXmCLCpZiNK6>e{#XXo({dE&~9&mayLJ#c;2 zRNZ23g{$UW-X%3)13FNFDn9Oces-0u+v(i}+Xh4S?8iZI?D3KMJJe3#U9 zlW-VUzVN27uXG5wushb?M?wkkeC~;gd=0gqE%%q@Q_l8oi}>D z6!stAKj-k;iSGT;`@LfUYJ}tz6F3ja-T+N0Xmi27O(ie9&&xD+qe{d4EH9@k8nzpc=9(wfC zr(${PET0wDEFCAEd3yq#zcIr3Pn44p9pZAG}BKD3@d8K)#@2 zg)z5{eCa;Sj;q}Xy9?Z!b)ocXkf1~|khTNWGc_H)r1~ARe>c4X3YMbF7BjtDy|FS2 z%?EZ)0wk%o=KY+}lC8ZKA9|2~HP8<%x=?Q+rA6tKBj^)94(4efhYXC2f=y5in!f<5 z8%CS8?IsD>XvFVboeP{IDJGx893p~(U&&G~apL(AmG@j%3(Yg1d#9+CCn=t;m3>Hd zwUKk7c3YD?2mM`kmUYJA9I@;XyWF3ZU2f6e*XB&!ZQQJ&;-MX%@Zvjjj>Vp2o{^Ji zfH{7}M>LmS>1`2tR?$KC3M(%FE7wXS*MgKJm4FxMw`iap?4^5B+2p)f-xWAfv#jaQ9{pR4eArT|yBh3_Mxhbwl>qB>pG#w6p7sd_Sdj+=pS8tk45z>d6b=KV&zN599;EFfH? zC#>x2uWAv-tfju*j+^+mM0NWD`0D%CRUKRRg(ZpCC@em>JsR9@Pfp??U^s_KsG@7v zSoMB+KDya%x4f#!;=T@twIzKom7#DCaWbO1hG=G!J=ENZ{!aGGS#F?D_cZtFG0`2n zq3M(~7}#8<3=Dk3Wt3I89lVc0hW{@Y z@XwZJt5ki?NZwxYYwv-%^B2%>8E??Kvi`xj0d?oc5=fKpq}g1!E$Pn5r;0UEBjJ`t zeC6~`Blr`~W>A{B?BCrZxO)!p^%Parhqb3;AEJbYf=VsiZLj^`b3J!t6pDPFf?Tju zB4%^QR=O%P_(?{BcKt5ZiLk6ym9BC?HOP1Ql6$8R|0!1<^kRK#>}te%3T zPIF2crQ{&JlU9d6uX8TZ@I@;YY^ukVb7#Df!=PR?|BpeUe}UED82jkIPwXVjmvyKX zu6j@)q}$3|-Z)8E{s=tS?2e5fT%HT%b48tYKRzyI`F(lH<;!b}Bp5FdE45%A;h-v_ z68ENG_FxNBSuka!q3o?xn@QO6xg<_e8q>SLZkB*L=)x&cR`vPvk=Cp)E`Y#WR7VFt zk7I6{j8KUm?oZ9aitYx;|7z0Edu;Y#3LE6e2k?8-Iem~{fL!;c6$$t2bNAtxP)n*8Hzc!a`1NdRe^cW@+n2@aeHI&H3P}(K%e4| zqqeIOzVmrbt{YlXz9b(dW*{+8`a``1sW4p<@BD#G4HpFMq$H~Q<^&=qSHSN9$;ii# z%u)UO${}IWJKSy3!a&M_2E9A~APkbB7-~={D6r1hQ2|9oD1z91;o%QSFN^(~NC}*} zhN6F6^*W5n?$)){;3c{x#wsP{V6!)NANs#vIa1$-xl~|h;nv=Zb7ncir*MrnDpByc z?gmIU##1a{KXUzHyAW^7Q-IN6i0X&eAF&+~aA1xCx&OU|_%Ceu&-&y)iIxAa2XNt< sV`aY!z9hKRKgIEuJ8&Mnd&F{kKEw9r)=CVvoi3b=q@qNbn9q0YFE`>tCq|;cZ8z6B>HQj*Klxf=u%(Al;PkIRN&xV1iV6mjd+^A zFNOU>armO;3nCg&?f)~Z1;@(F zF&vrJ3>$y@XWZGu$<)*iPR!ET!N$l_(ca1B6DxFs93Kwu9h{Vyu&Rgt(WuUW>ds52V*A<2IGX*Pt2jCVM+NM|!{M4?5i)2G4$^{Q$p)N$z;IjuSD( zIy~7G82H%2dIjZa3y)ScGpCo4K|PrLDYYZL;6jDtIE`p(iQVQ5IKUul8`-uM2cbw9X-HJ(-)E zbFo>@x^uNMHZsBjJndC8ji^^_ZKp#}q|LL=|C;q{i*jM)RH-kjsZ$&BS{ydA$}OZ_ z>8W=gl1?P6rLE0ucd2;M+PukP{LaKLJygA14R7SFYkP^ry#2C~Js>14jiBvhh4Rev zO%aXR*O6VZSrENqrIYx{if<>t8Gq{-k|zAvibM7k1heZ0_f#`5litR@ioYo<(5B}+3eCM!q-JL=AdDFoPI+Sld+t~FmC53Y^H9?!FV=eIigw9%kaRXCGYRg zV+KVl?5k91FDBmR9UjGVKhCCF7O$N&GH-sGY?}6c602dd1bv&ft2%_(oXqdj8Yk&Q zjK2Hh&r?U8LIY=Qp2Pu6#50?agJjQ(-newqq`~-d1Nr9 z&~XN0KIbbooLadD6?_gxBxE(I(lirH}d@QUi0e2pwYOd|k^cW{o^c?{Ib=10~ z#MQxEyfp3zjdZzMExkg{O|=)0!ea#OQzl2A=d{F1lWXR=iWxQu2@wEl)t;nYPR-05 z9wMXRyt^XaA4?MC4c~argOMUjVB)!1zNv(cQ1kI~yKwukY#pAMvY z2kVEB2}Gq-(nwz0q@}mp?GE(zC(I7TubYqe3{6sWNklxdTfMr~b;cni6o>f}Q+|H3 zc!JB*6z;e|OP(x}p$-jVCtaxl*ty2s)odb8i28K__7d>)-R-LG{z@)~HzvvM&InqA z_f2OIU7~T!egag`pS)?j_G`!BoRhn_kXMyQ!0-|wlt_=@Dj2z1;jVVujW=`e?h9EK zPpPaNr8RxSfqaj(29FCL>tgt`NootP7YKW<80qu#(43^Qav5c^iEU`KWwhU|M+=7k z=cGa$&)2(ww59jKmNWhjFf;Wot9QuD9n6=abVkl*YPA>x^Td|wZLX<)>8G1kxa&Q~mJ&`299V;!TPd zYh3YDtJZ!OpLamC`dI63?qvGNRMcxcuuQSx+}!%{slLz)eR3{|#A6&>bjBC1%C|6b zhl_m6_(f2o$J(cFd_1K(ABoLuWrhk|5)vBfcrz&V=ar2YL5xOLp~w9pnLo*F-cOZh zGWFDKXJj{CHzbs+RJzz;%_OrG)RL6Mq!M|c_VL9p-}(D=w%H%@a(3&@pzK!6B&~>w z<)#>kD{G}9RTg;wuw+!e)}2T;{q1RY7R!}`G(QtYB?vDRbA1qD9htv;HOI1&U3aZL z$F-H|jD0acN#Q68&W>bZXy_Ve5HSDZqlXU{{XKKsX96Y!bfC?s0^ST)5B z*g8?*V`p<|#NXBwMh)R~xK8IhXD-BHDIt|UmjnD{r^_ZqwPoglelqQkWV;#Yv$7gc z_L;6_i}|=aFhqs@%yy^=IYMojb?9!{lvQtx*&T10j9%TipX8uoYmAMa_*y6pesZbO zAuyLwxirG$Zu5A}hH;h{QSA~o;Wt-m4GGY;pAW`?M9rZOOrG-Me(_xySp3^Kb7 z0h8-Je(pc~VhhMVqFJ-yITAN4AbSsRfQ;fO?i9>kYWX-iy+h#S?`LLR&LE=1n_{}) z;syDAX)ZW8S~&FeKll@j*BZ0EF>0WlMgeHh95~f-<#9 z-oI9Vz5{UC1`Ys@Jv=OMtQ!IS_aQa=h26cp#33CPB5K4;oZkK75G#$0EBn!(AwtuR z4{UjP#=_ZQ>SUCqPzOBGW%8|v@$|^`m@bp73?l>$XTFV}vyAMdJdt;CPlkqJ(=WAC zi=atL(P)ID6Q2|&N+AYv^f#S#S= zoH`zPrrbF{DSoYstrMi>@#vr<4XvZKS;UZEL8rj`d^!@Sr?IzCgn`(|Fz^vi)h)S1 zgC$Eezv{=QMYet39(hlsDqrJ&{DJE^z+AUA=gE^Ar5WGBWH2D7WL5%@6dVzOLg{}5 zI-A64a$lEB&!*?(oKr2+42?>ya-2S7gwx||EHu7leek|~SquIY1>iEZvm1ZVN*qe% z!b}$WIB?<{hJ8XWNAt+Z_XH->Tf)J@8Y)vo(>aRPEXD=7Ds~=l6l-4 znps5_6%j#S*x9VLWCn-D(bDscZz1c8wHbCN2~{`9wLpthOY`=wy!h=2s@#*M5xsyL z&!ZL*^y-N0yP|1qh0~Uk1rAIddBQR3nJDw&?j*8>DV*CF$QrUcXD5-DHhIG|2LZer9;%lwA4DZ)S8A`SsEJBmB?V z(nG&ExkL;{CSA;zo1`cu34RDZWeJt}s%xn&<_hPvc3*&AJDx3I{xv^$Pq-4j7z2Ny zFEz2~qQeRKJ4-p0x)_m&#^*f0;t?uoRq`v)y`f>I{eVnN$w-fm#k(A(K~lyQPP~Uo~}Kvj#BHNO>@x13sI&MGmLX$4caH+zdGf z7@=JEqaQjPUh5S-H@{P=8u`(_I(TsOO~0zxw6?#_W{x0+<_i7(8#W{BWUidENViC$ zu7^meV?OWa&104FFGlW{UIOl?_dk?~GnT|(<8L2aW%8rS@@pJMRFO|VrS(95|Kw_t;Spr{vqiL$uN7^J$K{UVb#j04EB$S-)c1f>Ja&xq#$3e||WcZ~n`~ygd!2&wN z9QxLJiIB9xt9-b%*4e)v)FSD>#lrtR#de9+R7>bV-o|J$!FJ`##vO5+)3`Y4naj;T{ilglpiYt6g{pl_b7e2+b*~;s%og*cjnLtxkFe|5D4nQ*nAig5bIzk zhITIi$QplRynWH*@H0R*TaUvFMX2&m|8_dU_WW5syZt-&v8Q6*y2?m@e};j?b3iaK zJ|0oZ!KKc8C5`;XXxl@-%_Db|lU~xTr)T!mo7k&iIE67(BHsvnf)Med6qZZ3PV@tc z+aokOrme2{uh8GIGe89SYIyn1YX=l%1`Na@e9$R+iO-~`Vm5HNv`-uqEZXGuN!VT*scqVj zzHmb-kuFzv!#gWD-PGLMRi0F4w%?)q(bNBanONuzvtC!c(6@uiRTmV zZ#ABH%FK-KnG}w~-*e8qC2y=Ru+*2Dr@wwj?zr@o2XpjSJ(ughF(oA~?pmWjrGJ6$ zTHw~ZD6C-drK#q(B+Q~o-vtvSX*FsKF7ag9*IbC!|S$pwOcO<7o;quX*&Dl5;1Q=g$EbV=*}Gi$g))p0C4iiHxH^$uLx+h4>y zDj3M1WdpZ~fa~qu^8(Y)F9Pg)yypHL*8b8+d+T_)*ebNQHGBSk3^x{E8A@zLhSk2i zon86Ed8KBirm)VFhsWuN-OvN*=LhP;hnqkoZ=ptH;e5 z3z(_UZahP}P}+o#&N6f(sMN$}T(y;RZ0k^nx_r(~%AMJDbB4#qhm7rRATavYl_-a+ z4SS~?R!ttxgwiLE)PB9yHdgVl)35@<%tw9q!QM@Qw6hu6$a2s1OZv%%lAAYYzSaPJ zR=RgWv9{!JqrEUsM=)Az@(pI-`27du6OKZ;`GXZ*4-&vDf!)}j+qGVy^ZED|zOj%h z=zQHx0}=i%DcCU@m&bV-`|b>pg2GF8W%ZYm04<4H#{AwhL4l^^ox}JMpByw$V9&>d zlbDI0rkkCZy8TG*P*+3CZDoR4g9radS~^o>PTM=qOO{5TZbdMM_^HXmUGZsThGL!( z+c4>K6hxS2yL35$*9~?Ki*Vc!Ema|}a%)na*Bo2^r3Z6<6U zem`jo&6jW(v6hFVBeJv#*~Nx_Tq%{hlEE$Yiq@*SP+0@fr(~EXD3#By$p1RXnO|+4 zsZdYP;;A{GfsP>~e!S)P>%J*vga4pX#!VS^WqwrB1#4p|{MxmqR0GzS$C+^2SGb;T zbJD7LRIKOhrBpzwUb9tDp2ZsTzV4N1gMp{P`a>=rw+jYXE3xf1B-L|QKWJ?7>R_qS zay&-IeeG4#6y=UPh_ArgDW)z?Rt|9$r$H_wK&$HKLxa?$OSb8G>&b{UlL`ypP=JuAIm$NBeUCr--spOSu-ECskDhe*zvdeh!ltC)~sc|bc05I)|INecd;ieU!VYKXO~+~eZ8x%hq8dv ztMTL~lYdGpJV{A!v&W~8JkDQtu2=7~_+8;?CB1`!MUup0G8!!qA$XPH&%TP!WHaS@ zl)@1O+1$Rd`~HlIG{qUuY@(Q|Il7DX<*8o#epv<-Dw0YU3JQ9jMa#p z8`4aOJDi;NwYt04sy;0v-Pp{E$Y8CzI}0F*UgW)Q^exoXrfw7&SGMp7@xH%-YEdbF zX_?_*O*{Q{fZ#R}aS?`5Fe~NSA$Vgi$G~W{&WNh9#;;P3qu#k#`Rut? zVa<`i8IwZJozuanc$trS&N!(~t=Z$cm?SY-tc9(qR5ECIYkPYzCbQ8K8)|6m-OA7w z9ZT`Pd!js9A1hvIVQ~=##YrvJP;d)=>d^<)+`n<+p|XFt~_triwV^^{$2)^#%O``()Y=(6=f`{n8BPme0C#kr#CD zTXQ{E?yT(;O%^t`t!0eLbb-?tJl_nTuU)FUDy6E1i8!eYST94&r^sn21dXj) zr(CRbu&X|yq6;*_5aG4fGC(pinzJ-PgB=frR+#5>gwum=@sFU zd9MU4;fjiiX71V!meGr*Y9a?DrIJHtl0loT}9s|YToYO(h; zvH!vs@H3i#FJj`CgCD^yssU$-=v5i6ql*ib3?A``;Mt#iO2X%f2h@*)0oc@$xHK20 z?Cz(YAKfz<{q5I9pV!tm4l+<-b}e5k!>z2M3n<5t5$l}obFi_ovEIS|oELR*Iau!N-<7S@??ALZ zoDmS&JE*S{`ZZ5&?q-~q4|4{hIVw5K#Twp1>*i;TXtG(*dK`A2jKi_l#R#h3%w;Y~ z+Cn_S@Fk{f1UB{gmCPOb<{}PxiFdE~!NVXHF|ASanVa zC#jGnUM^?nxm33ZJbe=%uf)yA<8)g_yXIyspgyj zrHH8LWEzq0o@vdcHfa&cu5w}6q@mTw?ijoMWY7VJ)eqmWb=~lJ7;5|U^klQxrj?HP zh1B;Ij939A{h>&FN}P5^17&_5!EKMmD`(rZuwtnJi)u8u~ifY&w6R;kT7 zhm+~VC*PmIu##V=0Lq(tT73zD{3ih~)+ewlaRU}EX?Ct*r3F?GbGuICDV@{rx#LzJ zrP|l9Hb|BwZ8(_{S+C;}iB?i_IQf$lo({1*pmi{IwIAPUV&4S@)*aO>BuxG+T}ab> zPnn-IG~@+vE_y(C5#fWCe1NP-TQF4uGxCFMZ5=C-Y+x?M2SFQUNpitbN*IxZGFz#V zJx;1kE$!?$G@fK2`Qi))tLk|_zX3G5^>D(lLAh-0*)-lsO2NkgB^+*d7FQ6t^l&T5 zF7l7rgEVeeJX>wfjm#7|Lcs!ZB_*b2_w`I&w>{ z+;&)z(Zk7Xe7;^j<+6UFKeHB5FymBdh}9|_D2$Dbo4lXLa>E-pQ`osU?df+-(O`Jf z!jkrMnZe$yspHKM@zDi5S|4_|3R5C7rOqaO1+Txp9rA>gj>GO!NmtwdPS;y;h zNptV ze%k!g4|~wKrgmC>%p}e2gpt4xW#To3kLvbc!E3?8?=6eybxO7S@8CoJWh^%lzRxbA z@bT%usH(GH_&13BBS{oL5mzpxK}mm)n0|A{@IAo1lsqp@sV3*wzoQ}r!GD(u77{VA zWl{bmF~xYlFjN0!Jon$BDz+iYE!Qd1{QWhd+Sd0X?zIQ?*5N7j@tF9Gib7Cnq*xWD@ROSxcWQ)U5WBngAvoq#A9(>B_|2@&EIK5X<-HP61oYz%H-qZa0l>3y~$*xt; z3?V|v2|?pYh+qP;xxCZIZCeIS3%Ne^RZGpm_p9YLe{Vs|Oh%mfDuaxc+wF?dL6ds5tRiiIvrj=hLYRgGz*5B3`ZUy@(e+n@d0`sr01X44QhCPS5VF zbNWId_9A-~w91V^ycMgX)@mB>+D328DXz+L#+pCaid*TTHN8T=I^2L5{28$%dw8nL zgvOf7-guzMbd+>8C34)6Pv(Fm5?nNU88d2^{jn>mp{PH6wt`d>!?{-ZQm-viYkga0 zSzL-qPU)_48FT}ZOXk_MoqU@Q8vYbrX;e5W)sb|at}IZT1Q51LZD6=_M;aqp>(;=s zzg_vquLNE8qlk@tZ=h!aBrt!n4>J6avy^Q1NSyzCZ_e95+Bv0D{lhJHe^6-#)1apl zoGgwW)AXwfeveeizmVrrcJ%&AM!#)``RJ7Bkrs1^Yh!*>gUh>PK3DTm41>!9 z{<;eSDPVXEn(cZd&2eZo`wx1ut@f_R*-r5to)w=_7}XhFyO9YLC69f;oTQ8oK(#u|BmyK5{;Tz-GEF+L6B;%Jx2 z0Jp0Lrp|LlcO&(uBx2L(6L@d%xZzg)B_=)xlWHoGIQA&ItP|k$fT(C*hg+y#fI0)+ zXt(T`M9}LSWvd1YP{GxS>Iy3S4>6Au-){I?fPx~|&^AU**}$V*_IzCkU|LL$eepga zRa+7KQ@H0nbfM+|4ZivZYV+`%KbcCCmv~Lt=VR^cmJ{eg-Q^o-w@E|{TJOD-MM7W< zufo45RcPn z1RZDjzpY%MH@U=G;qxN^{kWX_g|5bn_Ct!Ld|p&OamgHeo*5`P`l|pVtM}G4X?Q6{ zTHK(<-N*c3wnBXClneWQR^efxQz;bu`j1K>F}eH2+aaZ`y=^#(##fW^y_CTw9v6dv zrX4ysMLymw3+*&Uwv;JGMmbYs;W_}~9Q~_0_g;!!!l%+S_d+*^UO}4g0TVAx4gLaf z8s{6C;LqFCZY0sW^GG|IK39T(dB*N+-`aC|)xG2D(v@#ZSl)yVJ8IwG#7I4*JUrN1 zm+d-tQjJDELTE0Q$;gf2T<0QP2v<_^06WxCf=S5cjjYhPovh1wqEO9Bg4o5D$FH_m z=*bXGoE_(H;)(NbX1_8ESmF0CQhg)lGh;T}HF|LQ;l`j)Oz~);)rBZy`)=NS)O0Gy zT! zC+&5JO=L%C1Yu=<6EBxuEpgbcZE4OrncA7$^>}*crEgp~{OHA;`9ydQ`v)6In+aPC zyOu)k?o4p%k?%DF*ZLEuW^{hOSz}Oy;k^r$9U-jn^$(M2krV)J&v?0yp6G zgJTDS&?ulAzp;3-T8Z=kx)RWE{+Tz072efOI|k6Hu_3d!RzQKy`xNMYRsFEU3p&hv zSL!^oUF_*B*??{JKtv*kTip(IM=1I6FCLW1ats~A@? z{*b9PW4~=79BVfS(MZF$p3A1-jo7jP#{D|AQ)(xkj#&yh!jZf=@Ttq>j;N~7B%Eqv z9vRtz{CWctvEc*7m5ZBAF3XXO|g;KxSL2Q;wyF zhYab91KzG6G1K+B<47uZc_SSY&EzW;(|O=kiI;xESM~JkKVcgay*_Fa&P8$^B6WX3 ze^11I$M9W%uZrM+l_#Z-PLDa-T7yjb-JdiauArU~M3=0E=agI`2XZvAG^&Z?$+XM2 z$fJ<~`z9ekBd3b2U3DvG0$w{0w7ng-jd?wBM*=oD75ReP{Z2V&n-bvZ9nTE8ZPBoG%321U z|87#0&JOc>^#9?FTg=6`#2Uyesh5#*`Srg28~T|h<1;WJ5uW8Uy8;I3ZiW=&1$U_u zxLhv3n@g+p_d86=tG)b3?rIA}b7zj-^35vk0qvhQ2A~iy%bTr%NfWM#P!jXUYwxy+ z{fIXIq{OxBZKrBjQb?ugv#<3#cYHAUjPDW{)9U*{yOn-%>m;ZEq%@LTSUBFc=t-T4$zR3{gGy}(ax_z^@m&eSZWARlg*sTz1uh<#-smHvTIM7zk#rw@7eH) z#XhKqGF-WCZ@R-^Yt6$JuGh))o|ln7j-$e-*_pZ(kXo!R-op{S&WY>#vRZesEz3l~ zAa7oB!}<3+4LPT+g9?enDjERz{Ax^S*$7=Wcqu@7Q?mMM1EAn`voXtY8;c<@6etV-}q2L(p6E;SU`B04lNA> zaX>JSn2>*GhfMM2)gEH+n)&gKW!m*g??IFv5afVt? zS-w@C;>yqkG5~#?h8@u(f)ZoTe>h=<4qp=C%$YSRJ>fiw$2+i7Cd&|hUEfQ@>=v8b zwNV99f}%Z}D=u~6B}>b6A+1jpIwI=Ys#(+%k*vyk{5n)Kl96^H7F{kWywrB3{Ygu? zzqLns0s-YYKGgQUo32YMKS2s|L$E5qOd3OvRGFVO&{-z@EuQ9X!O!J{Jn*c4^A76uOS@B<;1ZA z=;=o!xdlysn!;)T>`4NU#5KK`!k5q^olFK^iUy?2+>cTr*M~j!{~+;)^n?R%s5RjK zNeSui8f7p-(NCfzAZFxBS7pg1`t{gwyxD)?(BDr8Th`8#&XQ#AZxW`a0rO?FLCy>j69nW*^j-=|;;}XA z`aV^tzPvIJ{+5yQ-Wm^=-y0a1K4~HtC z3WwxvXwLk44vhC8V!m#1$?f`M9c+H$cD2 zd_1Uw+hzM3>&Ko1!A)9OTa65PTba#z)6`u2L(*Ri^J!jpk2ZXOySc*gd${GFcm;BC z8BJ;Boipju>-EK((*j55viA{(C!~h+$Jj0hI+;Fmp%gm1^0#!mR(qsUPb6}5t974n zvt)%$#k=sbEt7UgkU{OAO-=)Bo49hIqLX?34PSh%T8Udes$Q!RvX{|t`2&U-*XQL< z3u5!f^>UVWP&YRXLrVKe21KrITFOY>?bg6MkD^Dd21yM9*6{<%=tRW27vS!3id&Q7 zP)>pS*)S}U3QG5lpoKCt0Y4P#t0gp9I*2PDJ#Tu@a6+4bYeDWK;*&t;kAb+P!w=L; z$OAlg1urYxE5j2}N*J7!T5SA) zya;H9R%}b+-V(>+6t4&PSWD1B`z|r;g1SmOk?7^|zCwoayH!fg7{b8C&Zp7k-M~tk z$YOl=GsrK~m2irE3ibZIHZ1|Cw+Bza8xzQvtWgU3Ge+dyhu*QU{&ALYlYt&f788U- zCv)NZONK*9IU|h#jMa#p(I=mmlZW&<{PV_KZItL5?iG-+MTK?UCyu@&^eFj zc83iZG&(#71&GQi0jm7Z4E>4J`F;a-+pjo}8Yy;f^`5j~G)D`_TFGu5eFx&nQ{;(GG_)H>PsSNQ2 zoMQWK0A2cc-A-<4g@;B9|G+Gfw(RkoFaX5x55ln>7gzM*QTD*hT(vBZ&nIYV%rQh)*d4!{4WV zCX@)K``?QrCx`R?edbr^0Auzvg3~wxg(y&3=6@JLJYr802`~Gw?O<}D` zF8c0nd*P_2Ba;6oSX(W<&RXXzw~}4StRd-iI-y)NE;OvNvM*T7rQ|$s^d!fWkvviD z>_NWk*`Mde(8ndfH{E3HmnHlDT&OmBL**n`kSNi|fTc}NMbNok6vr=Bbi|DH{?V*9B zOOs_Felj((;lUzCN4{B{yPNmRMVN)6%WicKexyuRS9!jRO`Zz>$kn2sP67K1Zg4X8 zeL=jKp9J_V3RZ{G#w#sXuD$yi1VXCF6c?47y*M#qPQ|0}j`x7?!^6&kj%>(OScSb(c zFHN-jSvoBTsGA1`mm>iX9OLm=_&v7)7GH9f*093T%x}V|aIyQaA0E^U5iR}{X{=-z ze_yy>op@trTm|x>{KRrCYtpQ~ z7A+qZF5iF77YSnZ>NC5Wcq1aG=g^?m1>u60GQiY3|9I$W)TAG2y$qdIiW_AZkeY^w zjpX&r_DE#IO2@Hi9aITp<)d`w&soQMWd!Jc|K4$X{X(%2pXGr@G z3BQ<&Hxd6RBit#peRN`U@#rTs6WQ!zn{pT_XFN;hpOITM99hvQ{%&XqZydD%B@NRH zU3qhvSlH24$klzjU*B0-8+vHj!Qv(TKaue7K^5jkv!{gY=A2CWVmMCDOvrIa%37Y^ zzZsv_x;?PVdb=CnW#lfTw{7pAheSV&NoujO;2^Jzq~u$4N~qGBuKj1eW0gN!T8!gf zW;9rK4I{#IpMQgtdw~h)#73t>EB!&3?sv-k4YSZ+NcoLa;{VU>HvfmcIkHJ8-DlsK z|4z>=5kwb)`6xB=_eL;-(I7Z~KmR{$^oeHtJXt4)YMSsj=J|YIyE1lyMW}#eR6M%G zzvkWyz7Qm{Pcmjk{NA^wluq?`nEczsZ}4z|yU6Z;0Q?iq=;&Co6k$S{VcFNAgn!~~ zcS!=Z%rH3Yi`WSYMFQ<tQN@#E`=8xQ0IFnZaiG`L zD@;uA_D~|+%2``r>ij3zi9!8h`3vuDmFqLs2a22r=ISgb#nQ9#j$1L9?I)c~YyRdI zN>!i)x{a;vLYpb77f?{}vG*K@-Dc)Huj|1t`_uN9It632i)>f(!{`q{-#FIA5}49c z=AZT-wuOl{PizRgsd>lbzTw!yq(0&Trh2%C9uG`T#=pk>NHr`IrNEl@LbJ(*;~tYl zorZRQdmr^d(7Bye>))t)js;UJNX*i!EjG9kD=`_+*TRR##F)ZnOJY>Z5D7u0t5w#-lRFp3{(JP?kykWg4gM*qlhd zy=(0@iWwR${XLZ>(JynXiA4xTywjQDaRE;@&mmv`tXVi_0ulIiCBagwVDf7AuQ`d| z_nnC`)BYy6SCZ*Zw-ka%D9dlXT$U_Ee1Xj#E<*mF)(4W`Wjh5^rMJ%iNZDoZwi|w= z6r`3|T1jMlllV?;U&TWqi_cv@J&D2J-~Zw9F?p!;f-Hy*ja_@lmNX@D|dAhzc?8CNn~L!r40#SNavPM#z_E`dJA41`f_ej# z<8a(d_!E)(>4BMUGH@pouhx0Q*v(F>TPUo-(M8vEbnwPJ;^x*BLPJ6sXO5} z5!#6=T95k$eO8&9@$MAj(PDFgXe)k=!xvYl^sl*h0glmS$70QE(~H%n@Y674I%ehL z=JdH)Ch<|ZFR0---!efDF<`iqeyfqe*r$?zsGU}9N-)+se_ZO&Aat7B=hJG2Yr$G0 z>RG8^+Igk!)a45#4C0Z#k@>wf`!rTqE!c}Jf9M+tbVr?XRn<9YTBhc!dw;z|-)_4Y zQ_Lya0rKjuq}X*zSL_rJKucM+7I3i^)`Nv>C^4yApr5I)|fQ zg{(Is>110&vut5(|GvjUAGF;R3#JhG;OB%f z{p6c==`GTXighaRD5sd%(Ia+!q}%nB{c)kg8D+~#>jP?^O6%MY%j)|I9VfgFf(b+e zlgAU7sOT=ZC{V4*^S;CtKrUHA?H_{U^RCa6btKu)qw<41_qGq|$ck>e^ ztr_M(Unj3%8XpEMa$bS1E*OIn?7H%Z1v#T1utUbF3?o>V$!fQkYN$w|a=jk}z8565 zdhH76TTEPTc5vdum$x(9P30`P#L5B)CCa%Sr{63)AT^V1q%PvWy6qjfOr}!_L|MVv!H zg(du(f_+LdC&M8Z42D`N`+D_gBEg6u^{uPqm!C*I_9Tf@qyx2D33SRJ4H5($a==fc@mCJscl9QpM=f_Cc_-M>g)uf~PG=0NQqn%a|*Q!3(S}R|QX75W_TwblV`!hl7$=i)(!P!CcN+i`Z zzMaCf@+(@+G1$!|$&*WU&IacilwSfRpAPe(v=eVlf92B`Re7LkHvzGd`lf189N?WGS9;xEG}XKPNh;8 z0)f0-2I!EP@1}HDJYev+$Q2B>L4kUX;kcT)8|xk;?&QF?aN_PFI$F{oC&J6eb!B_Wbf$ zL{YPhU7*e{4==Mag)&JYlIPCLnU{KxXJgP_3FJssdKszbF^5afZiEML>9BfP%F+6_ zB3tcWPF?S77Wn9E|ED5(L-ddpE6`eN`)FpW-gZs8H1OQ!HGA-qXJ4iBll_5Lkw`H0 z3*5hz(6_G(e>=zj7v;d&Nidxp3eqzWAXT5>8QN6zQs{_x?6SpdI7_y0{PB}D6XTB< zl_`bjFG+w%XU+@&*6E(tzfCb_QXR68=BZ%X)T;Rad7_pt&kMMyyci4R6=|hCgv2SH zj~B2Wg`l{GPAsu&dhypOK`Nu(?~4dh2I9qlw)5kcxO3v#7l*^ZtX78*YQV8lN%8XFEW4(q+4fj~@Neh@0`!5-^L$IRioqtuZt9mM-2MGv9Wl z_I(oZxmojNF7)p@?s;~&Y9{+tC^2tT$6$GN0{D<~G+n<*HL9?mg|pLv?saKzJr8qF zK?@Rxxg2A!MkLslxj_2k-QNb*{98J$1cGTcWvrY2>xqy~<^#1d*~)gEU;BcYC^5B# zj0Qd~s+@?W+V3Ne^R<;qWf84h^yFkALk}~(Lua1lLo&s5Tcv*fujK^GKkvlKgg=?_ z3URrJC1)I~&2jTta~~-sZWay`Jtf~}tXEm#WJ|V1lbxa$HF2I9Ue%m%-`wWHH2f-w zm4V3l(voLXw<0J6%T+l6SHKUDgR2yJnR8`aOWJ7&%8i0Lolh}JByo7I%4snX8$@dkGNIQf8J&4O3Dkvo z+Cm8AzdU2BKpSNBT2rUZK~5(C+=nSD@}kImTC;6kIOoQy8_Qe$@oc`nA>assj*xj? zz>tNXG`M2VYxZlo2!QaA$7%QZXw}n4R^z$z9F#pYCHC$6kJ3sDC96{E2o9xhR@&Zb zmdDcMI{28mA0qLp>wIUlKTZ9nXrRRvJBk;JC{(Mrr=Y5NtT8w9^Z!bms3oGBc-L-F z)Fjyl|1P z4$_t4LX8>uIdA72`ub|vBL9Qw%-dYOgBtE7+6!>Hb-~`}#7kPG)CA9QLHC5kclu=0 z$2E%nN}un7sT0l*frE8ax_qI}Nlza2mcfz$Tq<{nX_Dm0Qe_z@LNPGP?ePO|-EmI> z+ajWtD+@7%6L`O-RAym2quEv?&y~fJLd;S!#^Dbo9Zn@q4p<`J1|V(p!prh z%;s8M1`3Pn=-e9SU%PZDc8yEVvYkmU^32DVxrd~cJCnJ7Li(gH27T5U>%9JCIdv_7 zx9*uO{!Azp+~#r6(gyY8@Js(K8f8|we+58x$q~$nHN8UER~nvfwDesBcSY)Saw-hBwN0dMg%5l1VNOBIpczCA5*vKhH z;p{Cy)1A>>i~e2^92bV=*w_2H|CgR+nAX*!z}kZqe12nS>;BD zqy=(k%dF?yRje0?r+w5pI1nc$l9ZT~DLYOI^xhS<6aK7{BBieG2T(|1lg8xHdk`*A zv;N?nYxVmSk1y7iehpFDM73WYBZYK}S!~V8;*RhslUV zf=w3#W&^W1eeYiKv{`iz5n)x`Mk4=K1^(hVw(GpKd&0~9vD6apiERNLz7(z$eCDIr zUzobf=ngpa)$WZJrshgHIIJ9yAQwJ}mq4Le1_uEV@)G)u_DW(Sx@Uv!3P z*WWUbcJnzBVe#>;p|dj#?U64=Q3$Q=RuYnWrIz>Cn==MS1yQ*gSYa#b@Gb5v*+S3(xO3d4Feiv1@rBfK! zBWy1v0j>Lz0)GUk+jcQzi%y6rinB0^xU+nuF7u7 z4uQ?2o8cG_4DRT@@BWZ$#S_r39_-EXtkGZ>muZ}S-*oXr4$1I)1WgXi!b_7=5{@Ri zi@ed#cAXc#6Km8p`?Ehw*Sn!5p{T*7`h#f`0Hi0+68vK1XX7^Q?au|T`v!HbR>e1$ zJ_3;{kLN7mVK+$fUrU1lc74w@%3_!i;XJXp>NO^Zp*SG)APavH;8_@ z@+B8+3C-wTm!O--u`x)q^*Agkt4#FT{QRcI?}2wW+b$ub z5Oa9xdr@j5{S4H2dSH$zY4nk++9&kE1MqasJ9Z|FY zz|L=b{eAn8u!XNDW1tT{X)>Ro8kP5miY_ua**jp2%ZAkQ6}iAeL7D*{U5&KkKDVom z_UdARmmE(i&1g|EPsB96gR;@R0+ zc)HWPkjMrrE-VQQ`Rw^W^bkrbe`SS#UYi~SO|~vSSnmC z56s3pf8G=z8?jYo3@zsV)`MxpB$X7T50l1kl*pF z-qMJJ<%c7;c-2vbdk8}rOMV4QCuVb)S?6<#HN3?0MSSVo$W@WhOd=K|K}>vWr=0Fo zASA$->1Z2|>$zRmeR-YRCV?VOV@662DJgZty@&RMT%oZgi$qvBDYddKXq{@kqv8`A zSCgGpCI|;*-nvp3TaCrQg)47xp?}rkW7ewP1Ur9HOR%=q_p4PmU-Ra4wlN~wsMtI@ zZ9L5d@TuBzdWn8zzg_j83&*ik&&809KzXGBDd(5I<-SkLPk0ZPSG?(S3{zA~{S(T- z<@7>Oa@K-H@68-pmU0?$-~WT)->u1<1_QB{b@pAYX4NK>jx1-X6Id7Zn|&+gZSR z(*WWJhKz_8g_(#Z(XCQ`|1NG~5=2!$JnsCc4^>_0k^>>TsStaJ&STjPYXyhI1vVqq zbWT;yp zeZvhMZVCNtCnc`YhH{2t7ymcTcNoA38>4PFd7Vo+gko$x;Mm?fIgzxDi&Z*Wf+^(u zmh(=-r>r!`yAX9f1JiYw55l#th$_k6C7uMWr@oy3Vmpxah>f>CjmW#}Li37Youwmk z$TQ+KrgQW-$feSyii1r?$2ESOCf1hw>n%)&h=~8Wr3RzG@UFZO2$WcZwPyRXNKF{@ zgvhH0&j}Rb>xB8Ur;D#1$P>ckAhwSVLlv>$A6r@DnKUlQ#Qs#9vCN!2#ax`Z1Sq&{ zL+)(uDPMqWjR+-$M|`l5+Ah10V8MF@Q-W)b@El3KHZfWAkpft6H66069b!2XzF3Xe zHzC3VT5K}Fd|O*Bc5}IT;wR(FM37TP2$%N@XB0RewiI^t_D)bK*U|H-ueT9IEKMr! zsik~Ew^Ki@#RGeVcopof(!1qj_U%pk6j~M*&5u^Q7J9Ax-Ukfo((s`~I^wry zF0opU;YYecy7_xs?V`s+vtj~!P6Gb1As+7rj zDNBv>T*;H=XMTJdS@c>i*OL3D|PSxo=Lwbqp>>ck&&n zoc5^|E44EF4_+NBl;sOx=i8I^sGD|(kl;F|_>zWK>m>Pcze)Eh&5i zA@SOXi(16>hP$JBJ3ab5oZk%vqkk_tn*ZTLd}XPw!@l8`8zS)!f#9NNU`(Z;#uN!L zF)=U=3zF>9c5%Q(?6M}87b8*^I?}L_d3E35K*GOJ%9l5xWAFcWtTeE_&=sPa4kLZ4 z&_3vytw(A#MWzHVZ^zy%nMIO~OO)p+S zsgTB3dV5;b`}AV3GZ2Qu(Nrb&%+1-wWSWy`L8~V7p5xm6@!a0YfwosKNY$HP=K+>b zed{zYkf+phaKkDa%*uxU$-KOp%9|#Y8OlqdR6%jo6L>Uds8CtU=#Bl%(WP036`r}Llt&Pj?z^- z8H%qRr7PYdnyR@0p_TIG_`|$)DHdtoLLw3@EG2=FRa6?B>CojS`6zGPcK)>8nbA-zy7>|J39U7rL4(^FF{}(B#+=x5 z!ynBN2U@kEi9*Ai!Ag>wGJ$={=8$=zczmh8S!3HsT`>TT2cMI!7GT%qDwe5561NXh zu&q-$!194Qy(ol6^*}G%`qD_|7y_rKD_+6gj4f??w_>QVlwC1lGlcmJC}Zp+0Ve$% zzlZSA8PAj`V(np<^x&onlfze|cT2z_KO1FDQ%0WK7pg6;{I^;leXORDC7?@!PyWkv z6Q9t>0%@aUTy8@}?7yWCyJ0=P{$59iH~Z#dc27{#OBT)iw&w%#$vhiM)>0l5SsBM%Z=nuh%eA0i0PHygv&& z92JK#;Kz!xQ}qY0$gRyasbvAx8oIx65 zJdviLz+-9|S-M20SXtf0P8Wyq=-C?laALN-5JM%O(d`Cc+lv)0xjTAYKjySEX8Wdw zKJjLH!F_VZ>=+F?*aHa+EaoXDEN4E~J&%8L*c$t>&n6KXrDWNS`<;GpC!g;5_0n3* z@27anJQ;c*%QkNzx|_hH3u0*!mM-)GE3F8l+wJhi6^>}V)}>7K_S1)(?Jm+c(!+OK z2lNkO+WkO@l(+Jq!&&G(+MlvG<3Tr(9b}GfmM>kF7TrqgIBcgPK3JZ#e#VK_i8r($ z`f>J-F4cXJXLPBU^stqCtjyXn`C7XJHilG!2B1Q#KVsOO)K9OqMnq%UIz{~DsA zHl_A8U2Klj>xsr>p6Q`g>Oh;I7o`i;Uh!_GO``m^_@?AxIP7h8#JM?aGiw55!=hVj zqOYB@xIihN-K0zxkci9{v;5W(S~B`!C0^?bSsQI0Wy$to1E`jAp-2+jQ^)VNaV3-m zTtCf#ib~s+3r)@+%HO+5jAxQ+aI+r6g8VUd( }qESE+yl0F#zRI8|630wS&VR$-Q0_tmzYNlh9^Y7h= z7|j-L?GTDuSrtk;2Ry-9g178TDS*H_G{X(N0ce%zk4@*lP$1tou+$Pb5aM`&Z^`va zld2a&ny?o0ht|hm#a+CrVH>*hdQStiR5&P@^nPi}C0a#Ei{oq`nGdC$H-K#lCoA+%Ru%evPKosASBr^rq1H z5WcIcD`?02H@F(tt17-C;^%?Q%6(EDbr$0M9`#sJg7A*%Z!5npuW9Bu1qAz}wr0SRS6{Lqap&TfIrG-)ptLKLqLmN1zX1;P%!a<|g-Zr; zr?Jd12LY*Dx2Bwr8tOWm6>n45O?89SbQkSgT%uB#u^8WZ_eK|(L0Z21Px#Sjj@ZMo z)Wb%n#>zb;L8@482=xLGWJk%-svNj%2k)Z4u5*JKi2A<~p`c?bPH{c4tV;KLGx_Ov z4n$+#Q#Px=c)hUH#b^>y;`rj|PQc}%_}P5h{;9*k)T)P>L*Q$vy4^)>IR8>fpSkS)(55mZgSfaQv~etr`^t57%pNBh6!l0 zZr??`o;$Xs7*Ru*q_GUBTCZ6gOKWz`zWU%fmIO5Eh-eG4^zMs)gD|4$8ty-5^&(2ibyn7A zZ@i0b<)_LuOd9^oTo6me!jJ}38jY)U4c*?gPYXb7At+BCo`mv;*p?W!CVPd|w!;${ zJ?o|?$ffiKsN;e3>ncp~9e<_G6l2ReRQ3c-uldayRR0Xer8gNq{`MEU@D>~Y6=HcE zDG2vRlP`4ieEV-6PJj9!wfGfb{)&0JIBYc?e=oob7b8Mn9IuN{J|Wjb!y=Ghx>Ck{ z!RvRuwU!}#=TAO0P9$SqUS&DT`yikH?Bp+CQ8~jX$`|B;YBOGnTzqTbL+5R;yA$J- zJY$o7rq}qVLDZKNBqXW&U7v5=<$Q5@0C!xX=2;F|_WJs2hcC(ZE~vryi#;Ky=?z6l z(HgBM+%anK_9S~``KY!AyA`IKo2{Ez=kqIU9ATl@KHEx5``7O%*vDwTzd!A#8MNa4 z&8lE(l{Egv3v@#JRCI&p6Kl;Hh@p{oDS8`>I9GiW12~WVdG>TPPS2QtSo1mGuA5No zZ}Ps3xzej^9k0RsBQPfBJR2+?trn4m`)$UIO2dJ3r|M&w_r;;mR!HfPFH_Eb(n}3QB&c!^wAqAx{NTQYOU*q(_9!`#Yn)!qup8spiJ_}R zHjsB)`KW`R#ElY+?NW7Lf;nlaCI(xecamlK$nwx|@Y zSN$~KrUw;nP?VEvb9lKDnVz2{5G4mO#w{5(XE^afeT+Z364S6U9l~_Psz9!Qp7q?y zC=j-9(Fp&-HzK`j^LUofY+YTboV{z7M71 zVCM4brRmPHf#K`1taqMxo10iN+U>D&zJptb zQ*`$G?J%;}zAVs`TKpi)`Q=1@nQ*%+;A|PSd8EW09?n)}r{0XBwP=UHaFNc%D(u_V zysff8Jz|KmXH&hjvHFJ>=CIUARGa3@b;$dHp5s|xD4$Q6j?Nz=d8nxwoZdip%9S)d zf8)39^}c^>*Q%wIrX|bR#&^y@&D%GUqh0I!4!!jbvju+)9-#ra2wfu?gq`cJOPV|> zyXG|E%=)oOjGzdlw`S-guOof&MLK7?Y#{WD93kSSxc&FhOnlvTL}F&<)ZWJw%`1CK zi^K*KtY+Tl@oR89Nn$*+q|+h%ZwJttu0@Tk(RPA-y5|J)_cBDrGtpu9Az% zJKq~=QCfw(91zV#+W=KujpitUM$Dg(ZD5Z{`-=c zIt8a}8+#$<&N;dWnXlN2~+Ye~ayK9DwH(wQu4Mg{P;*~sYG9{Q;L!n8umXKFe}Kq0x5v$DcB0=%4r+^ynU9(YDpL2z z({}&3BIzR`eu5zGm9&Bu?-7Rpoc#DKmz;R6CKV;>mRRWx@6|JUQkU;w6J!ZTtaJw{_|MZ&{axzzh-hJK7%Q zLdAT1!%5e`hPYRDG2fg!!ZcUG#Z&XM8Jb_qcWCvcQ9b=HL@lmkBCbnf_zfggN;+a? z2kdDfEw2Pn3HtJZ=%WQiOm4#OtS`qjJf=8+uB#k#O8m+p>GGk@>k5f~WdYQRzm3so zse*&gz7#)8ECa$=0-888Nn9z!RB@)IxZkY38C8^H(8bzjw_VMH%(pD9VA!@`NPfTB z>5N3#s?HMXKBL+IZ&86&Tt?qO-XZLh;QK+03P>@+<6JVhF> z=RSK^FOjwcCOxuvCnhhV9M`;qJ7|bL54s3fz+!O7o)@ykrF%&^IAPdMHEX4xGu?9h zHdk*Th$*F^;QFC?>nua3bVrat{7V5m_j}Pe?pkU`YxwDNI3d$BJR=ip*j@7+oLwH? z-80(mak1r%I%jPF7vO99{C-7U2RBcQ4Cy7!8|mpe86pa}{YQYk;y8BgqCEE!i#&AX zRjh>Wq9liDFVoncBpqy~usZV%Z^?NQ;}+EEEXf-*t@Iez#0j{T6k=+BxF<8uZbZ{f z2M<}E>->NnQ{6OMs>i!5iJrAdtdqE`*{WSSUatf)iLYA~%-g=OjpG47Ft$z>=_KPd z&$w-Q!^su(oCmfW>Fd}aI@2}D;|Qja`rI70C-8i)%G1n1HLG=nzPIEr93g|^$haXP zw6HfkJJB=MXmnuWTWalFywtb2!Y7&e)iwBx(^5T(&FHHJLrz3gx&ZgGtsl#rn;kx^j`Wj?^= ziWHVpYR91UCo;-hblch5| zxZmz_RrCDwqaI58^A)`-$|jsVS}i_jR8Bj_Bp({r>YOIh*-?c%Zkk}!KUj)S4^M@ABx=1L)0fg< z;!&s{`@uwyXh>wZXoflPT?W_fd~Ib4&Kg%5six};Z#VXIlJX4BYKX2F>naTTDaxQb z$q%I`BhFF79nheL0<1V5fjQImZ2PKy*!``TT;SpfVF{g{ySPdu7OFM!JVj)O!CAW| z0e2i?kum*|ez*Aft7v0R8f|0IhAAtevi#f&6EDKj#qJ2o;z8IPc?}Y3S?xM@_u#h4 zddhwE66OV36f#`hZ&YVZsBHzt%G$iCp60Z(@*^NmeKGn z54$znLTWk0^YI*VwY*YZzkNF4Qz>?;mY2?be&*Yt0Cs@|9uS%6!zlaA)wyenxjA^M1)JFc>;_ zrCZlX?T&pb&P)#U1Xi@0*ttq*OUl0zE|60*rgjuP$F7C~U%5xZA3wzM23I zUbeH-5$21BQHmg(|I)bhvSrH$$^jc>UlKoYVFYs5SR{hwmX~U*#!~BqANux~B6s;Q z6-VrS$0d?kEu{P&)RFE=8YB)zg;V>hV)bLiu$Gno3xSf03vWLm10y$d8)gwB`$f3heSfr$Xr|7=BW zTX4{vh4~j7VV9SPR_dL90?)<`*cNAguDiE`XPCHx_)K#HrK&1c zKZjUCu(h9{7y4VFjo_D^ghi3J+%Jhm%)d#87|*f_)MbQ{D(4fQcFMVA)Mj}M^>bx7 zLnB@+%)PzdCUf;B3aDS`EU(bYX@q4Xx>NHP8Bl(xXY;-Mu{i^ zsSp8dnHQ0-&M`gYUx12b@p$h_-ZiE$Wb-;?Y^zL~uGF}WmJx{t)_H3uz|d&9V53JwcVA}j}&9pG;JX@{~qLALnIefcBgB4B63nbp#pxF50a zMoD))@7(J;vhVTBToMO5uPwg%`V{Vu9H)gmTzAp4S}uL+z{9+wOO`AL1O$R)JSS^! zKAakQSU$U{Fp|ct-|Y+Z$rPaxrCR=~lzwGBP~p?SL8s-${J|Ql^|9?6&;-+TAKE98 z8}~PKAPy%KyWcKm)^J16_rWGOM}r3J?No8dOUi$R#eTFXe*8yTY*7Ja7@-?RJkY`E z5#Zn3Ye#ZzYdQ-`D==8Q(mXgr)(FY>SRz23Mp`K14Ve7YZujm2yN(uDkOtV*7DW7) zjuA`vL0il7XH<+F_|CL2J){<8DhbDUD{`)eY$=?$*aD@f2nj^U#)h{AqQOZQh&Wt6+P(DEf0J&w-rS6xp zsx}ltR`p^X^upYxqjZa1(3E#@C}_8^bH7GitC;*}83KdbCx2!BaOad~B+j5!VIW7`SPKhvR*gJF|&Xfg!Kj9S3kJAFaD%%DeV`US3A3k+K*{&f;yyM0>2LVNt(@ z_=$yrS%7RCO;GxBkQ*B;nLq8G-*rCoTV0v;&9t37ehqF-Q|Bq6;l|GzUqDZDGQeCt zuIzsq2g`=W!AyR}!5FhM`@}*Kpf{b&6ID$Ac>Iu9-<(Qw&YSx2$>a&xXrr z->gB(zwsXO9WAMwsdb#LqL0XUs$%LEB)TW?oTBO!V6>1yRh&PY{y$}`weK^vtMjPm=?1@= zuTfFD;8~i3VyzJb3O| zkk0suC}(YS59IQE9(c$3^`v`^=@8VR_oCV$qqfd&w9GpE*tdQ$bDAzWCO{h;!j@QN z&K0qlF}=E-NqT!>MS`o!250*+r&JI3pX5h~0so<&24T*Z>b(2*mxKCMQ`vA8d0C<8 z00*F=N}PRZ4kaHJ)2W`R#f`I zkE~?q_bOq|WACyZ^N1BrGaC+4(C6V${PxcoteHvxbVTh>beCuQ={rPG_c#F}d?PS` zqKQJ;Buk!#bdGn7Q0GBoNh2XoI@Ei3E13YKPG`TPs4tyY>Qnr5v9J^c{dLYJc|?Ba z!|ArH|2tad$oY4)tjm%$a(4aV?P=jI+;w4Xr=6Y03{3anQr z&Stz~=L*oIo>4peogSEX-c@oB{JZ>?h$Xd?z<6A*_jqZ`-tMLZY(&T?g65TnCopY7w3f}DTn4YF<5BNFD?Y#`4{Ok3W zjU2$m=dbW(@|OD-X$y}eTrTXVA~QPbJm(hTit$b7Q@lT68bQLtkKeN6rw7KU;?`ez z4~+!R4<*=ccG8s2ja-0nV;`>_5c|11&WPUZ)B_T`RS8BGg1pVFA;g z&j8N39f?q`;U^S`;leP71NULTwUPB{KTnoNjhmU#47)q>s~E`8-bkT}0=c6-1i+u{ z`jw27Mnd%3cphb{CjCm_p^5vOF{LA$A$&D_DanS<5p%R4Zzza*KLi_vbFXk|V6^N3!+wI+7v;2CT|2a9#46GpfcAy9R?iqxFd@IJ- z5~cWh50>Cj>i=pmS5|L=Q}%@&;=*cKHT~Ov3<9Rg|JpqBN43=d$$9vO=j$%5Q=vHj z(Fg8}vWpb2@lz7C_LqsCp9rKOes{cVUK{_u^iHwwOnv&aJObLNP9DB?!px8UFw?UA zQc;nT%i9XulG0O|v_0d4-}C|_z1~flw0rroU*e2JDRy^&1p&XI>}51-WKm`Ox$ekQ9gmgY!HaJVG3Uv+h|pYq)3H^uQ(^_Y51H?T0T0-AhVOpE!3;73JWzfbx@c|()sC-#;R z_aE7e+txv0^q2}E(NKYE@~vSL(@@s=nEIxiAV66LS*vUDRz>A3{j=@5N|r3;m=S$h z#C?j`7+HC1c=Fgc#eV>e2Njcozsqa`lfkH6|KZI`1`ZA_58uvAi}gf-EaELtRNkCP z+0&ZA7&i1$#+9hFI_ASmQwQgGv4bY(54$cfnPOq#5KroQ$1=AVBd-SU2ml00%9bL= zQ}d{HI*v)1dZ=gJ`pe?KTpYT7EZS6&NceOq{dmI-&DHfv$oZET<;lyIph)=!-MMpn zo$(0!7lIOj2De6$*PGvv5jG`oYIsdyQ`KFW_Ha)5` zKS+T39|^?mw^mBL;0%3bzP!Dc8US_Z0zhBMiJz=qFG ztWq5RJ8eRjt_&CQuiY&_L@Eo4FAc96s!H^$B1M#g2@Q$M*i!~uu1t-;nlHx-@?q4K z%!;?Xs`v+)h?*t*O6UxyVXy}!fSj6XC-gDCwtWaTe(+#m{_pCPu*_fU6oh}PQ>tv3 z!fk;kG$ODGi-=ZF##Z(>A{Q&kb#}hn zkz-%0$9@qn;k-Q!%`dYK(9pX7e+WszV8G)O^p9Q^za}B=3SMYWG9hy9_eEB?Y~dj+ z!){P@M=pNuyZU~I!Ag_$vl_U&r8GFYs|;;ukHVgNj~n;BZuYB5BL;h>cFHpHyH4^k z%jr!~BLXqMhj=ixa5sJV>%ZuOBEIbV7CGGT?Z?>M@mV)*pg}IBJlfip^7&b_u(|US z^`V@2rAxW*@d6$UiYoLg z*)hUzHJ0D(H*rXqC=GsA>~SKR zxkS7L`uVUUJ}u>WG^MOzN2a<0Skv?UcxRCxrhfEs1M_Otq-Er3eErF7WwJFx6Q>nL zo3ht%z7jW9~qYHfh%{)axY9=bynw3QXbYdBCjH zH?n`aKc*yEU!5Pe>S;sPp6l4JP&wdf{LhxA2cEtApTl7-uY&%>lpnn>YDQgh&p}{J zD|s{UeTIzDRj-H6GMdEA;zEQ%rkk&Kb2`EABhq?iWyBo_-Xo%wkp!Ph`NQ#ZfBijsB~- zQT(A=D4v;j#nW}#()KAmYBzufiDi^N*UQtiEF);~`gk4F4YSDeY&5m|MmG^6#eiFWXAAIg$;k+y(g0X@I&wNLgXS=$YOrcXn`hk~$OGgrGUL-e&s7pW2DtR>DNx<%4`b#A{ZDgW z!IPR`+uc;=mTRnf-Yz%O-QT6ooU;#JM!o0CxeMwN;rj6AhTq`cc)~0^p=)fsxa<(W z@GgFR6kA|4kykEMuk5=Z7R-ea*_aKiQQPp6m*?XzpqK^{j=pN z@-~-Hr|)wFOJXD4*Nq&fwc&?^w2tc&W*M^(`rxl|1MWss3I6!g_CB`?aF1q*1!l1! zHeMH(4#{eDBrK$9Hv(6T)@qChvzj-`&O~>`h-mLfQrD`@+)ZPnxZeUT?5a`Zlw>un6E-B&p#Vmey~W3iz(q>U)B|*DfLa6etnB4u4GT7P4~ZO zYr+1bttF-9u;p(Z^QZ72@BfI_HB)I`yt?J}xV)bMsfWP%w(>>hUxl)T)H7dB%+>?< z=iJx&X~7&zBYRxbHW7M@w)U1Cs>oev7q);8Cp z`9T3MMqiy4rPuQa2ODSoRH7wvDZDuJ@cX+e3vnvNe0lq=9d@;_>mRDRUw`a7*i}(B_v)-IBBeS(F%OR^J68zVz4Rp~!i^QAy7eXN>NvdLnv1 zz0DQQXIZ#%rJ}xsM!>`~*PrsDSj{J5;cm;ZE;Q|k-Gg9W>Fna`Il_m) zrn1TFr$@dG+iWSb-a6r~+Hp~ae`NsxbOhJp;ny-TKKha>2j>%cV%T|4Z=ttrLGy=) ze4jXauHoj!1#M#Dl8)wi#5p|bqb&C0!o>WMlc)9(G2v=mvyv?_TRhT^g!V0@a7jfu zCIyJp)++GbcHhT`52x=mZJD{QR$9=+`4>$qxFN6SzwwuIt#g@^v$WETdUaB~@;}g3qtGC~P{jQ1$3)Nal#`>n+~3!`epq z1MV3*OOxubbpqPfp1~0(bn~EP*%Vn*F*uyYa+&)&J#Hbqc3B{GAVT zqy!9t#>oTDyT)Yw7i9$f;vv9e@OoC!9ejlE5%Tj-(7EwOTTX7{23!!Ljafirpk<@M zoKbSTK>fss4)Zi23)&E6xPtP65H*^sv1F7C3#KcEF*@NaaO)a=o^g=z`3(A&d%NDb z$1dNs*Kp&u&339Mu(ttSYDX2*86WA6Xzmobrn$pSh-vh=I2z!Z+MmMYQ;S+wug?6v z5S_kD&2G^f|IyN7u&+0n(RB5t3Qzt>_CDhjXafeIWSi0D`y{cTt7}iVCG7!mm$9dJ z%cHRkndYf`xbe}SbKU7^(0!w4>HSuz`CF5c?7}^#gIg128c!4RNipc+0lLRkDI>mi zGk?MxuG4Nxt6RQM{pnYrp;m@t_yrn1^lZr@$?LMo8LmFR2!h48t$YcYmi$I`bfhWD z&99hXtA)?D!f>@CNr~LYD!s7-ywYScL|JxJTaB+sOs2Zt^Su20P6fw74~GdRp?JA+ z-Jt`+Ys>thO>(6)PM^89oW?u9#L%Xgh4ws@1QJq6vMTdV+^Blw@$GxJqon#g?{ijq z(Pcq|UOd)ZpEZ;+0qTRL;-F?1zY>Ze^PJ+Yf;ghSH#7sd7uq;N#>Sjcpz8{AQ`^?^ z7}X|Ty3Nr1_0*B#14ltM5CRZnxlqm)Uit|d%=GYYwQRMoq}hS)jI*_O%Sd8~1TSX- z8YfHA8ecGiL!V#zU^_x|yPfCK;!x8J{`0_u9X#$+*e--}r0AJ~dKA{G1e09CiM&zm zwa)=0)Imr(;D8YgrLl}?&9CvEl%LVnV|o>ZZ5Ft|OBLVLN-acLBCxNlC~1k|Rd#hy zPB!05iF@#R%tdBVj_Fz*$&m zkMomE+gaDq5O{tuMI0Flmi}Q`WD5JKlE^sqSRa@!A@@TqHJsJZdjDeJsqs4W*@J z90tGBURMm}X7QtSL@F|0o^jfsJbq&taG9yj;L7ddkUJcEm~)}gvxTa?@AW)qY}1@t zo_BFuq`TLGM``{6rD;k4loe&Wwlth_=q{{rydK>8g31U%hc`u)m|JgmTzs{EY9s!aOW}oQdF5vLd~4 z4Vr}J`gJMrm_&Syn@ecu+O}Evp7aVB6>$hMSw0kr&dRwz(I1NUY9#g5mi$1 zoOxdG^@~iv*YS-s$%e(-^o}S^QR&>|#nV|XymQ;0H9|L}z2?)7D(9Q&w62lO)t#d< zM952u2she=UVPA^OxhJXDw4-d5p+|GAzH@qhH%NPtwa;k6BVP6SquX2ZL~=Gexs6X z#QITW3vcI8gA_j1bCN$Ld#f3n-?!uD0S-ot>5CHJ`?B1lyfFN%L3||QL*6a-Y17(o zAjcY(x5U@TNKJJnpBA14n(DgQj>0|L0~>xHvtzEA?hbNc0JdN!{H&r!^KOqqe%@CL zi@?^NavI6WVxvM#)%yX5ytKUP+i`XsZI&cr;U$BhY2+v6H9+3?simd{hbk>j?gB|! zfRC#>k126irStZXzVQJJ@N>BJ&{{1ykHu`UgruBsIAWZXP#&6;S{LpR2a%vF!F!0q z;>EPEfymD@@L@4$Z!wXz|C5pS^Ty&)1l5}3NO9BGZSY2YBC=bH3R9&hTjZ#yTKgVh z?;cnZ*$jID0{n%y&zHts?AWR~CEd^EZD!f?%oQ_)#SZgi3taBuToG+;O*W>xMGT&4 zCK>NFT=Varg@pt@Ic8<4*k8MStLPG}F3)2WjY<%Xh&ZIjHi1L%#qY9R#>D4#{`RR2 z+q`DS`Wmsv(>};YA4+Q-v1g_)+ZSwxb|k?w12E&<4dI0Ek)Ff12iMZ6$=jkit|Lep zYt$Y@iaQR;ATGV-#sc!dN=%v^Z4Q0J-R8p0JFSsIg;qx)KPojV>&bGcGWvZqGD;Cf z4bc@ny$j;kL33U^-sdHxw_LOYwSb6bdp7g&Oaum)UW*X}H(xE4J)C#%YzM!8p}A=Y z^y`ru*GF|1or9istG-flT?XhoF*Tvq&`l|HmgBCEPew*zBd6HT+kceVeb3E6SF0~~ zl)pfIN}|=DdPOcLT6k||GCo{nqKeNtx8cN? zdXCNL2-!?ND@X8VsSP%yy^r^i6>#J=2Bb zt^CNlJ8xCR&88c7-wOAwH&$L)jvFnovyzqmM||Qkdcucn(!HFGUl=^;dVs#~cFi?& zemwMMuDn=4Qdgja#%;Luv?Hq8+A!Viw`aMGnC{V4Fdint^x%y4v*bvP2TYfA&bWxT zCv_HiKV8=?PMqTEeOjPm_e}{&&}ZD=)5`LC`w22AdJw7(Q-7jg7Zo4+G&K6u$15ed zzSO7B`IJ-b5_`r}xy^>HKF7BZ;KWPptBG@|pqfMQLh$udLJ=2>y^Jup?5SdcMy=mc z`_{}HW$XT6-3jHrQuOQA3{6K@M+nZ~6q2fZZMt&Op&B+zJlaNMiCH7S9(8>Y%bwzz z*mG;RYZS;INP^Ea96`$af&Kj1d3%Zx6@;r~m(zeEw7n!et}uD@`LaXecuU!3|x2`wGe<*h;Lfa_4x%o=utmbN@CLyY~feEd`&%aesmN`!nc-P}`JssnX zf+$hQ6=X@DG}jQCTTDW@$&OYXYs}dsesmT5q|A?L~&`ZXh017r~ngC z?>o!w*v2x&I+=7}`h*_f_g6#TppX;oS4f-1?mq4tb9E-Aptm)^L38^^^2c`-eC^+! z$Rw~p^4H7XnW6bn|NR`|>wo)?+Y_AfnVJ_q1~^$SZ;sj*Pjj*Ih0cXZL+K0X!!;1> z_-6G1`5Los&wW%oe!ypa;rNm2rgW3xYCwbhAC-Dy645X2_kezoZ&ZTbVIWW%>9Bh< zzo~n*mgb~A7Dj>-Ik7`LT%IXc8_0dB-QVY=J5b~IbD$hgT5IDC+n+A8%RX@=51K9A zB%fj~o=$Ox0XDWcbGmRpJ$=h`TIC|C&Ko*$zac;-zZ(-Z1RsH11Mnhn1O593_>!vG zf(mw!pyBld6!du`-G*h9Esmqaah1k1sc|Ct&LvA4b=G~glSabER6?WkfKBg=KHG9N-F@WrjmF2l#11hZ`EL5 zprfII%MCgnDy+z?kzq0X0YXroE0CK$&0yScMglnP6|q4cWA`bAZ|F2pdJB|?qZS0{ zPdo!~P2||!xf34I3luHu{NBA3(#)}#neF4^YR99~t{;HZc&ALZQzNMAEdR#LL>7$8~4A3-3c+)3Br`gPJMF>nik0=SQoY#RG2jC{GWl>9;K4$BlP% zzE+%Tbhiq$_s%z1;X0Ns8H^-P`blz2kde|7uERd(ToC`wa z&FE->fTJIP+7AeyKQ<_OtXB0{jA6QS;qRSIT1xs8?%-9r8nA?^jdR zMmm`seb6P{fU0)0NsIouGJMsPseZjRx-`O0z zX&9G_PAwJxHMxn%lAMnErHTNz9T z^f-O)_U;6cEoB05UT<2w&3-pXC>?XKAi#{xnmri5K89=##paR~?SQo`04b{dNU~E& z?{>UEj%!3Q+6DMp3x+FeN!!Vsq~{Kq$d2R}2n23s4-pquX)Y{mE8Fk1^SyIxBp?=) zA^_pAVQp7_HXXwAr%CRat$NTe$`UACE@K2mWEhU;DMjfyx1w9PPQ_}ooQ8cMkrKJj z^l?AI5>u+|U>gzzFsgS##3Zhb@uVd#1wV#ksT`|3P>di9S<~|%HJ?4dEx;0LN@8QYTo|fF!St7H}NcYd$LOZkmQAja z#7i(JX;b|SUu_k=(#ibp{Hdevbi&W3^;6sI{pUPKK8O62rW>2>GkYlxCwqf+rO5re zeS23m9kvEX4_Xr2%}}ZN3pdQp3WA7KH?39FCMDP1yr{v_w$2mAG(DxWgjzHW*t;{e zL!LS+{B(5LLTl3%xRI3yZ!%%v)KWVU<4Y@RS+@nS!1Tp^n0k94pUK+#&Ta_khr#ke zb=piWF8cV8@f;^9YS4`rwC;eszi*l5RO$X0(!c*fmiP>F|3O#cC}2)QhL?B|A@` z^w#MZRs|w#f14W>q3YbwtH={gEX;R5hX}2@FKLxJ^#D5zL}EISi+;wYd*K}S#!N!b zY#pLA6Y89*TB#o)+{?Q}HoNkKeOD%cCLpiZi0MWblw@HSq$+j3AkSECK`x>a7H+FK z6#fT{y$@<@1|bD^D8~PqV7A%Nt(vMw*c*?a_jy@>i6ipUt@I!#;5lmyRWxQ5k@M zl_fTUOlW;O-dpTRQU??5OfP0i#)gc0Y_ZimxOUvf{s;*&mpH_dFy(72)J;qFE#ny0 zqv0r)x%u-ec)}fD2KJCs)a8PBVO9h{WXpktJkLcF_PVgKI;N=uW}~0yZjJ~yF2_JL z>$SG_FzR&3Uip%ed-Sv>Br%ZwM;a_vb5?hd0!#P6j!-53~`I*jp|tMJ$y| z;)ZKGP^+>Ge_hv1-;p?e`mzl#|u>fOj6{CEvyyQNxKB=5^E2#(SnW zsr)$TGX!SLaLsmXZyePJRd5GmFs&r?FSN;URYb_+N#|MUKU{y=I2j{h-s$XP{8aLa zkUPQHN>9Q1%XUm$l4@GT2!8-lGE%N?Vu=*{fa#)kI_P^4MPK6Ut1ahuGo#G2ltjrM z7Dp0lpp6QxGg@WRp{@8lSb3BiP@Y@tuv@tBSNNx};`huH1mkhVi{<3LFN6O77ft+PO@-d7lciKkH^f zCTmIL;_s^&sS)onSfW}GvQE75gvv-*Y*)m?t zMnB>wM6`W;5P0M7#gwd}=IUU^XCVgjj&!~bzc<~t9*s5%UXemAdoUuj#b4r6S5 zhq#7y5?l-nCMIT5YU)Qgc~ppP!=9>N+_t+*pu5bHjt6@(X&@{1&Mp=90*`CA?!+RV zrgHflDr(Al{?+}bW8I}Sq7t5*SUidu?0FxFjyonW=Th z7Yr)k6)o3dmUIA(Q8Wk!eEcj7USfo-=1Q-2_V5d1ajDLYL{|Qb*1580Ki;b<$mC~; zN8iAu8qs$3LpHFDsYRuuLz+45dbgRUHEaFDV%2VI=5*b!;bJlp1Vu+8@ew3{v|GbC zFpxxA{Gh){A@+n-_2@?5LJIEBitubJGN4}KeSEz@Mzr}*i|RQRmi#4B6f9S@!qT zon12U>&8ShmJ)$xSaUnPsGM9f7}hy-e)`;ZNpy11agFfoJmV^9(4eLE#Y{QtM4#4mwKaMHSAx!w<3U<>HJu^IjN19PtY6lLp%bMz9~drIy(4q({fo5kk$R zC9@TLFjDeTKB(_Okn5}UI$@#)f{E1lv9yWBfcG}MJjymPOw9QWOY4q1lzTO2WV4sG z0z+az#a_OI4xsSBmT&olr7(2dT*JlWPu!841;9S8ciyKDuDrFoC%YX<$`m4y$^7pG z{jdxjh-z3^nR&g*FqrBL+RB)_Ygl4J0V{FNyoQjX`#>Z|X)8UIz*=bAAB_9{b)S%% z)b{#`$6{z`7(R2&-WquA!7NW+JXQ#q@=hN?4!6!MbTD14m(TM2+1Ap7M%zsTr>Om{Gd;2`eu#A3&xH6cYO>K9lZIF@SF zYj&09Uvz9@<{`dIU`ZL!>hl$r%l?d~b3@&PCiO28Ci!IAfY(#vt^M(1_Z>5J z5>Y~UUbw<}Ud-PhuI|`ioGUkvw#P4vComX+bEHi&{xMp0mKs>h0xGXUY`2|Xnyet@iHpcJIv86ST##eaml8B5>arVo|7 zDySW5#ju5Pf$lF;4>>H4cXmASp4zk6ZmSLK^RPgun0n_(D0XXUiKsg(^Ld$;`l4=h4G0?n?{}B~H?S=>o%_vTcuLWb zi#gIss=z|0U9~aS;4lIS)GoQXAg4YugHj;E=Mi~#YnA!k!JRArdBo^$3}dTNEYJ_& zzFR-|zQR7cZ+mv0V!YPS7w&k;@rO(A+@~fwgZ| z+3Nh^=W2^^ab&PM;iOV~%GRm*efu%n3#5bfusKvxE5iiZ4E-%KBN$=9C(?)?U0cAs z{Ju>mXeo{6)|qW$BX=e3HTMv!=GBlncCFBp%B99<85tlv;_6s8kAo=E_idChah1kY zxwp~kA+JAJKRwu&YjEZ3k$WXuAPgLHFuIJ=N~Ur1_ZCB&CvON5XfO%|OtUA|yGK^O zgm6m8`!WHygh@@v1@DF7;!sANab`4Pkx{~zd`&jV`qO3bqnE7Mbq(i}X7~ngs^s}+ zHNo9UgL-s<4y`SRJw5D&`{|9LhHY;lNZ5nivVhIqP-XckHGlQWXT7 zdsd{=R?3Jtfsye1chL*lMxeM`VX1+!v9agv?VM@55&8d#bSVa1T?1%h`>Qz~MfUGh z_<`p`Klf)An!(soOo%fPH=ok1SdU1LR^{S~{!%JI4<8_3 zY~&nXB@%@bws=;(M^hqot4e)uIWqOY^7WPnw)?s1q}HhajBLe~{vVNTp`Kx(_urE3 zFwvk-8~tgy+VGEOO9Sy6$+}~X5C>GZn(M>CI(h8awJ)hdhm5vYxUl&ieu=46W6+5< zr2t#SNYg0Z)Y4G-*b|M?YP%RX0?rnCS2tSzIrsi`RR*Mn#P_eewLXBDJl8&*%?{Be zFV4kx$SKk{&fp~62}Z;HDOO@#{gm(3XysFk-DQgLD~muIi?~G`9sSb_FxRAIhN}h* z5%Vu!yUn?7=_)lZrAP-P{iS*aZ|LQqmp^_>P*$1ES{wS!mde!;B*Ex*=#gIbOLWuX zVy_HK@*bW!owsQo0myp)3CVNB^nO6mRlSM~RN{|{fGG}8RxF$0p8nnY)H0w!UssvrFo*uc)LY8=Ie`H5c zQ@IO9Gq9?f}X1WNoM`Px8`c%xaurNer^AO&8rq z6y(kxwdhk_i&HaXm z786c0%YM!!PQw%bzfw$j_!Qu|T&X8l`%Bin2S_OB>)AAtgAi~SaD@736*6t3X6m{) zfNxRdLg?5J01zoQ6Ci_G3oN(}y^OL3N zF}RiNA&cSRw2Ug7xc!BC<549-&ua83w&PVHsD{=aI@)h1vN}n3pg3Pd{pr|b_0`cOn zufB@hKS;4uU;Y$bC+nsE5?$l6LRtaP0R$*1bD{whA#M1!_Uc;!K>uI#d$ARp!n@9G z0jIs&we>Mz)6Z14j9AmSRzrG zG&_<`VIk}<(2}$RADN7uqcd0SX=bBSc?!My~;6^5ju+fP?<69 zA@VW+T4U7<71+d&|41`#?FnsB(&iHPG`GlLV@Q;uJoEyGZh?90DiEgf%b#4kkyUMn z@pqaqMD2x)M|MoyzvNw`1`L#@OS|raYljmGzAH%7t3adf$R{#<@lPWM*PDKC!-J7H zL~?NDZT?=G4ZF?h0}XB}tgcig4~l9P(6Ws{557c1L>w8Fh}OGJ`W&ZaIG3QgqAI;4 z>*Ej4LIX!{q>h+_8npY2n?CzgTeB0-NeE?&i<0^!Gf%^uGv2alTo1_)7~~Awc*U`u}-gz!Ncov>ecH33oqdeuWHyOmFmD$%RB>HK~-HGj(TeZAV zmvz*#x}Mw8)-O*2sET6QZ5RkDX@pg@)N)z; zW(RV`!pS@&KXn;ibn=_N@62XV=&yO|iH!2N_|U=opndaBpSxo$x<2#l;n;qf^tx?# zQ?xZ`DJp_&8#oxQ3u-KOzJsZ)s2~{%dV4#r-rE6jx`)(3<_KR&C@L*>a`Ty!PHQ8l zn4v^OzFvA7j;@S)VEo{}9?1;K9d}0&WYf(c5O)4yz6*otj>?ZQ4sM>RN_+4!N7nET zr%pcvJl$&diTunEM3ukIES-RA#vz$B zxJhTGXHY`Q2&M#dK4VRJHKlrW&UJW|P%5qBsN8M7kRDAA*2A@Ryb8+Ku3-h1(-BK)ack0>0>J^l`~ke{0Jx}PCW zv)?IN`o%xL7+=#CT@8u!>sFZ>mgn5@+VYa`C_7PpNqf(*tVpR+0Ac9k=YXA)nY!Az zYwCl0YTZAMia~a-r!Wg*O}YMI``TLPZz3e*P zD($Nyh-||<oRhNE#*ACYOv(Q1YC}4JwCNLgo71B<}U2d*I$Lz1k`1 z*pAy+S{^Pq<+#6!@-GK-kO8qt?#(upaH|;eUd!!kC1NG)`cYqLjPG6OP&4}+V6?zC zOP>z0uIDsWH@+8Fauu0K8;$xNRB=JoOXWgO)FEiE_@KUwZmqpU z&FtKHZ)rYG;rF1v>P=6Txan#}l9A52&g6>6ep;quqlNcL??P;*sy5cn*0XVQtKxX6 z3@o9NLnuh8meIhlg~LO3DfeGQZ4n9`V7340Zo_-Sr&r7AX?yEOgBJr_#~7f&@@lyZ zqtREWi;c(LpzoC;)>=b9bt3M72_{B7s+_^NaJ)a-?Tk2FMmFW!_scFU10ptL*cUba z;_*wN*WP=P3KH=hz`vKCJ-Lsgc;(WUlj@n1LMQn~OpIO*RGsobuX%K(ak~W;RcSwB zIZI1P@@2G-;N8=jT@wK35Tnz0FRgfvbhXq~99TjOHQnF75qH-AB=dpu?A-kO%dqd| z3Yn}&)~U5HM5u5a?schX*}`}IrJ4)KAnIYOL|#Vy*&^Q14n$JQ11_DeC6)QYh?5ub zvwEuxOGKA*3NIaH^}G4rj**c7JHg@QFE z8@MRyk{^Z3w+HL_@t;Qh?~%w3od(ajIuaKVYLF=}V?pfJ?mMKx_oK*f1H1@Uw z!TC#L*U3CY()v1f=h4UQe!QqtHB^zu0>4Fj>on+j10fF2BNipQt=cgOlli?IOOSJcZ9KG z=bSW%LhY+EPzl%n@+%}=pERSi#%<=UH{44+)G!)e)Ngq@4gvHmr# zNHL(H@9<6PPZ0!(SK?i%e^D>|Hv~C!_JwV9hZcD*7j!Ah71(Kv^dK+Tat~UoiMab< z)+WvADaC*3ygYM5k@~^$2FUm2NWbM%Zn@1f)i(AYn*GjMp^#gXjDTQw@|TEy!|cQ8 zq~A#Vzti_b;gH+N3`j?yH-YfGNWm=AO;T5H1M58AC7cUXa^d*{sZXP#=iqcl#btU; zNOSpE)d(FWuf{Las^wys&G72ZexTryYu4KMI#E&9;S022Pg1cZtYD zb!LxyZr_(ul-`Q)sju6z`1i-efa6AdAr)tD)0$EQB5-ZD#%!(wVd_m4sG3m7o2!gC zb>P{vM1iK>ba1j9KbMMK`CJLH9IdwO-BF@OpVsvRQm6BMJiz-(hUVN?6q!b99c?10 zuFSXL1gVl2phn+G7c~_W~E#s3;$0PO!5Z>8=a+*!>L#Zo2GX1&D{f)nJyq6b(dOh ztJjAfT-AwCe{N)} zf7Ne)o%}e#e^*?|e1nMz5m^}kHmq`mPrW_9!+9L%Zx9V&OS+h5cEe;Gu9+jB!$H)jzZHgyXXu?VcT5;KGP3P* z+VpL=rKC0*&(Uvcp-$e`5hs~+NVZk5{W!-zM*4DsgK2Lu{IVGaWwhmNH3#|Cbb6n6 z{)YbSQN;MzLXsCF=FJZ^>9ugwgz}!w6Z}A0RN*;kS+CY-p|&aUgr>mr{dvZ`lDAU% zL%+_xOmoZh;&d@ZUdp0Q= zQB~haTai|V8G&Ld8yiBzX9l3wXKOfVy9*8DUAOP^4vDXH&B-MwH^qHaC<$rkB;9IQ z`i*
#AUl%iwO0=vH-L*|1M!X>NWBDwf%4a`xki|Nv}LP#n*05WE;A8wGcF+)?* z5@+`lyaME_EVD>YXUX{=J&CDkUOc{Vi#Gm1VVno`zu=f#>MuA(u;To8N3zuKj$|LZ zoR|M{Bxn6{BS-{(C23FDzOn1Ce}8Xn z46X#2tUObyX*O@YFvvi|$P3{dssN29F)hXR@4mAw#dMa~^BXLd*1aHCkOCD*+FPmM ziJ`$q>40sq`cX~zO)p7K$oX8JQBVmq&Wtq}y*U4k&BXvzwJY%^_~1OOmHW1E;F8~& zyW1NpDG<=`UL*ktZ|otO$wc znHgIR%K`U;8VhJQW*nZqa`#{tzOC`tFu-yEgOc|jC0`X;nBRsCyc#j5u5NN;jR#2w ze!Q~Hoqx2T)b#8sD>Vzg(0K)B#Hyy#3@G`yMD^Mi>fd>>y5t`K^lxQVqtEelk2FZ9 zpuZJ!pDiP@AAwZ`TmH$^;2IXi0#k;qO54W=FZ!pT*1H=ww1=1*UWJ_@PGTx8uB;Ke zoNoE^qfAcZ;pS(+>;%mGz|UsSk;m4)GBK0oz+td}pW~eyi%KG1VroXd=4we2q zruzfd#C9PII;t}XCg_27cGW~L_^ z+~i&e?Q&~@9^HR&aT*&tr$eC7HfuARzvTu$YmEU>f&)K831*@ z_k^JHHJ-PJx6Y!^$s+KaktFV{jWG0wWa}r}0&qrB2@pGCWm4scD{gef=#TpyO8{2N zUL!||{?)UuKm@_k!Y;I+@;TA`T*`v4vY92tEZ z>Cw#Aso$4+IQEXCli1LExq>lv?r5_YBLAjw{7AsDoTfZIF_Qv;n_; zWUKzr7t20#etUsb$b0D9Ead<3zuJs*(y!u(4MQMCV@!FMZGEFyjkCe(y&*ThPuG^5 zLLs=*Ceh}qO@Yvfkezx|F1E*SguNKEJ$qE|=E$M%0)UbKIW4mOqQxtGx_DZt&}?T6 z-h%jlnV9`$ONag^Rs>jcBj+cwYPu|)2aw)dD9G+a$hk1~S6+8rU5mo9IdmJ$BUH3T z=6XqlH@{Lr>!-%|F$JQ#+7tBOCvkldJUF(y9VZHIEu|XkaTht|jieZZ8L!@vICljk z5UrhxJ)m%7H;Q$em80^TV#zC&1iKLlqe$K4*$FGbdR`@EWJ(q`Vg%}$%>iXUl6Bnr z({vi0A1-b*HQ($!dAo5KIwC;EXtkvt>G4#t-~Lo!sUlbTri#q0GecZ#!2$(Fb9bik z{%6+udVJZ6%MwYn-veC~P38E&j2U*^HL|8<1ske*e>vf>3U>+LIn=jSPx{}+u+r`& zoRi?h*>R&wz4jxCij$FcBN;wQ*!x=jD0f+j7N_$5F%d%hqrLvU<7Olc5RRYO;Dnl_ z4ku);%*FVx4W%_16waX8I;)KS{5{S%&j@V+PY93HkMAI-$nu`U&Sj!Uy!=ar{W+sE z&13jUtc==h!ph)vbo7P*;aX2Ya=S?uut9PEqAre3(q}gf8FE$+4!5Q zCHn@eDGfQhIxmlxr1m|{jpQq`3exD@z~v^pw00f7a@84x3h4iZ@mDe7*G|zel7H4o ziHT44JU`-I1ItNmzXbB1Htty;LOnc7f3%uU{9sX0y>*DjH3VZ|i@rwGBtaEvi5`I# zUYvPyT>JhmQR7j)otJ+x^~JmEcDRW<@Q3TCg43^Qf2*q+t?Zzm5dXTL^Z%P`cTPNE zB!bWmYvSopx#oj~6yJ&F!#7BXf9IBNYPA!Q zxU)LXHC1>SNhns=SWU_H-d03ZoJLY=kiQHlTS#0&jT3@J+>_S;=8!=qy8 z4^ed~>JL$s*>dpy0(!fEBnHVlCeDnn?A{TIOt^Kz*aFGRbcHHY&?O}dQiBj_l8k>h zC3kDV)%Qg0?e^;UwP8vnS|t^VHCN&GLEwQ2xkl>bA>Kj+9m}LuX$U2AlI*X&r;AW- zRPgUWPUZ6L90{u9t#zH$MvEpKsk|0LsA#01b1Nz7p#%Dphc7Ld<=K!OsJJ*VT6u9Z z-IIJ0ra#f9r=djuKt7oIIaSq^UrMN)(Sh7Zk6mE)N#?3ceQmlN@tKY$0p=8OVQXn44ctOts2JaOw5?gbD^4x411>=N#H9 z)eRwEYPo(MrPaq+wT3aK`k3#MiqH(EtQKGEm*AS^*xpbQchZs~pbZRtk^^|$s3aQ6 zb7efym;X{$1(op2J`GUr9g~a8Z0|(L`5d#vRg4y04Nv}g9<(-JVdmdl)2okg@N5y|0qa}Ht!-QC!X#BCd_vJjj026F$|EC7! z+KD?*wj_+vgDzwd z8s~`|O9o{y8eNa1F*0&$tN17qA@?&nqPEg)KXy>in38q<>XqvX5(PNgvfU)+rW`&j zxa8CKkUHcwXpHH3)3ML(T;aMz(xn)hJ}^P5-mV@Gk&+hUDFJ?L_PmXK)Af5ib{}Fn z;ER_c6xe`F)re!u?DO>R10ugQo^aT zWhQ0@hh+!%pj19C_8G<_vDp zwM-Yti;f{XB#nisBLZxBQoqhk$-C-oC7TOp3-?>(%T%9;M?WE!l8yG+jG14jH;`=sKDTOB@0V&^<+x|;F89wc?x)aFX=H>br4E=u1;S@U2ZJS>h~z~@M` zJzzQ!I@KRan&G+&H=Y&ry#@!Z5OKcye2XrXaX+)Hz10+4#6uAD?8DC1`D*{BqQ+{W z@X>v^&97kac#7m*4NcnMGjPl&o=jv=&2ppLj7DwhlO^|1w11j`%4FGUlt5?w2kJ`Q zAX3^GZ;{&D51OH~^6ZcT7+KX!{`&Ley`4TtfQf!E$U9?t7mM=_>r&<0I;B zhw<;O_4>V>$bjxv&Kc8~m2GGx-F?vDG{|sdq)+whvK|waA*TD}QU;U?&oUV5U=MO2 zw6Bm(A>xedbMD^Mo^}%BG{%dH#$uLV5cD`5FU8V;&5*IMzG=9N45aeJn#k< z8%np*yNs(+(wPjC1tAk|V;D-4uNhFl39T3!-|TF!QbSs$A&EVkbmhiRTT>Xb-0UMD7=&8dmIq?v%SfV z!R`&mN!2DVPhcx=CP@giXD1ZWX!_95>vK8vgjj%^yL5MuEs%1*)iiv^(x4}kqg3Y# zJYQg7RX?64Ut~Jze;knS{PFH?a{F1_6dU9kghNZSGJSPx4C3H%C5fftt4%)hP=7&} z@ki1Tx)S6V`vR4?e2EHy!=Ze3(S25}c(fP=#uaCy59N3L*3G}ab5lyDtnsf{*tK}^ zfbO>u?@s(Q_~!RgHH zd?n7Ur604_)sQ$KULV~XgbuXCnx`M|y1HZ5C)1iNlA!GSSR3E3ccjqD=-80tk5{|_ zL1!zEHzxYeM?@d$D(*2oeaM=dD(J?ZhdZUnL!@@TXHuqL^63r@v$jYs&A^U0%bqT;T~XUXF2b1(>*&Q z&_2!Dh;&*uXO_w!?rHbmHm`SR3(lbEDZj=3DzI&m({r;q_wgBv1E@7#h(Jq6B+9-x zvI^KK3TR%Ee>}$A^pYTzgNn-^jgs2GYN6RBMAa1Mu;=J8fHYq4W;y;)u}jJ4_b^^; z!pS)Gkno-3+P$(FWv5qZX0%y=gr^evCAMsnBen7?dbGM@hgoNB@oqczSb2B7uPj7$5R+b=J%#Pqvdna=yeBBxFP zo+*RLB5hcPKPU0XdGK{D7}2H{%m5!lvYlO=Cq||cVPqBpsdmY$GPGOT9*c_B83{Ut zihFqm<kL9FzxV)e_8pT8ysJNR`y zQtf?~nT+=5ovMJTgLKo!eO}3Z%~G~3bZZqknMHEtNS>WoFYh?YO| z%R$-`l0t%h#lpH8Kw@E+0=u};9m{xod)yC_dIYqjJGSKqsz$j=5mOO{|};KZr5 zZZ$r$Ed_P@;xZnXlyLbuyG$#%(ObEzG?cOR5s5owfs`}xVEO|`MVHjrhgqPDRyoEOf?nFcX_HB&@^xoG1}} zZah0!pzIu0}pf}y_4 zavkde$a8qN5E3Dk4Rr)}Fj*~zXln6hZI!`0Cwj=P7*Xt)%oQN11wKr)xwze1jpW?? z9N$xs2^e%lgWTSNb$7mSXTl?yxrY;Ubw(jaIi}S^e8po}p*SnW%;`cjx+zQWyOrT% zBEn+b!SAovz5#A6pw7E%O}!MRr1&OnyGs*yqkOHwu1}l50{ym_nv&u z8$xjHxU=`zr<0TO@jFLNxFB_Z1E<5enb!~0IqgWCv85B))MU-yq z`>p|NR1pRm6Fd=tCwhRIw{`Yo1abyzTNnG*AFZ~7btMX>>)Tvf#{^ltFhtE^jbkd$+Mfw6_lX42#dQ5Js~9d} zQRN6@6H*f#IAd}XPh%lrwexamZH8ifAqE-hHe9tH#2fICqP`8=EZ$Z^79dSzP4oUj z+CoFd)_L+5*v=sQkNr6aGa9xnMn2V`;>hN@bEhV?28tE8x|{}Xu88)L83E)2RUUh* zGeo?^lO0i8mW5(?^-j=dBU!^daffipOH=!RQ7xjKNa_i$@4HJHjn*I&F_QTGOZ)9MiX3A}+q@mqHg4AH~5m*h%Ij0J}n3jJAZ@(7+v=2ENQ_uJekIE!;#S@tQN zMWn^2Hh&BNA&|PJzK@hR9;v+*qoq#%r-eC%o^uXEOy-dt_3_kOD=WH`Mq>$p44%up z4o@k7ndx3Y7*bU(o#ZUaPAAl6G`?Ez7Ce4>P?0PjuU@PVg0(0~*PVT^+M02Bg;(oV zts6l{i;&gKH*rKk&5;Hg(9}6FiR0s{%0Az7vG44N8owsv@*)$H60y9|iiM0|?xUB7 zF>K!?e9(yVW=w`7vW6~K@Z#L%?9k>|`Mgo(Pjbg;FC%PXH&^K?O}^afAH@wYtd2X! zC)6>7V4z9R6zLg&JD?!qx>@Tx^$8g%x5S)&u3&&@fJ${{sniE!OH1ADtXHt8M1z5T zwcokxqWi=;chX`JC6m40+)OB+dUc4$i;<|8;WAhr@(FFz%2AsSw3+#(>vC`lV+P;V z`^hYP;{N8@(s9BAe}l11a180}xI!>zg+%`AsE{R17SJ()g>=;_zEj>oYZ(iD zU+&JiYo6>o$_jms&;mcR$Y=<*eOV%&f8+Z)3{|O5%Qt|Ehp|()l(%HR!%xULGGJEeJSGmF@!Pt3ItegFz@Uf%Vis=9bx@kdWeQq z>aoWUyk<9Avx$@4H{RkZDDXV8d}ooGt?C`@dx6oc#4L|tQ=Ub<4<@#cgU*Od2H2Z# zx!9RmRZU|P3@Tk$+g|W=*jjJ3H&ZDy6Z=Gz5=H6H_>1nKH{H0u2sAJy`UGh|_q|%- zCEZI73bHGb$O96DBW+=hyc8~k6cTFU$fgzVfrpB#c0oYt|FhhHT&Vm;24R1Y%UwwTy$*2ac&?)c`kbtAlA#gPAT(_F-ys za;r*R8)G|^(Q^aQZ>D1I&3( z1mzvzhjtxlWeZ*;W-6+(nt;i4y-%ig$-Vi)l}^J)!Qbvlyr+7?^w4v4qPWvzZ%%AK z$mLv=zi4(BM}| zm6Etovbf!QPe)CYktz|$Zudf1`L=EK#5uF=FhV`D(%5P2M%n8P?YdTgEmt4?7S5Y%bhJ~U8(LmY!@{Ci^ul79 z&#|wGUb_hngBrc8)R}R&T~z=kXh(gVIa+IH8T+*1s#xDB*cT=O+4b{P&wcOF=#xin zmrE_AHGqQ<%GC4{M-=d&rs752x19vQUz~q3=hjHvkaI6K$jxe~lc9y3MI_3}8oyDDI3h99R5+%hTr0)xz{ z-@Q476oY199b)@T#E0QcCbE+xLw8oM+G_5*v)O^rZA@t4UVG8Xm?4vEFxc2$>O+wc7)uXO~TA#uL#$8bG;Qf<#&4^m))GYfA` z(aGrwmG&g3f~p+X*nZ_@9zZx8j<#I*SdXhTNEV8oJ@N-;^w$?si%)mvOZ0kEua=QD zPjkgMew1aGvZao%HUG}-Umrct?HKaA`}D9gY3zDtB*Swgwk$^?#jgf}rl`QxftjX+4TZ)v3<+uAWbj^`fo$?O|&KIp--6i|ug_jaTGNk12SI+PE zk5Pkhe`2@KzwtAKh2s{(2fN-TzK9X6}ko;g9NbXEJdth6IQYh8r4;xH8Sd~u2vvdO5Isn+&LDmMp%Mqn3c z2XLygRhGlQxNaSMRCK0!4Lpb!Qy+d%M=%uS_oIu?*o?nvd)%UEx>N&@Jhkk2RtV8# z`QdB9B)C&jq5otX zm?`IA%)mInqEK-{uhfHLx8XDPIsdhI+?79yh6p<3{KLpvUndV2m|U@U>XK^`5;B1< z4fy28v;>uo4kmumq;q?=n@l$0SOmU`n$i1E>z-~KsgocNN|yZ5ufx_00DXKm;g9aw z=222I`hf*9_5dNeucU5FdT}S8(i%9D38UNn-Z78H(oTbn%QAQeS$&B?Offn*7l1T0 z%4>5G+%$ye*=V-ovSjo1>|UOCif#_-rHwKm6^zSkkvCQDND0DZ?%y(tl3d?qB}tAO zl&m0{W1UmuG>uv_P&(f_-XkP%@ELnp9h!a%@t z7r3rRc1OVxve)xs#A68qBdcP4uxMwA4HKuYd7$T2`R#X>_~|URpN`#g?vt$u2JJxG z&-O&aZqxn4^3AY~_K4MtRJ<;8f(rq*L>#te&5@s{TAV@PX50@@+Dk# z$!o#4fwvg^*cb3?4tbUI_bv)GnF4a7e}lc-gi);D1zNjO)`%)e*U^|;T_MTyJB5iY zyZ8HUk1hMycF-V4>*EdGFD_;a6E7&b9lezzIeGZWAEQKnhOv153}ZRlqH=bFm+BUR zwlUUeVP@{Dw(49ZMCO?$TG!`y8q&{VNZPef`xp8??rCY)V4d|O8V`mF@w(HS!t4b? zq^g_xozY~W@1PR%^vZBv>EKr~2U9Qbi$?eAOk-ex*2V2t`mKxBhr)T3q#MF{y6oN2 z+*dRp0IWugb^3d~+dJ19>j(gmk3!=$(*VmAVMXK1hh?YryD09lYIOwu#llgWIed5J zfs#^asAFX50l{&Y$Jw;w(+uD8{f_H$C3Lgbd7CD=xtj>A+}?5Y)|gJb)JealJmDZw zb+%VyC+aznfza+xC*%(EnsVsTr@r49E3{y8y5o3c;iE3~MjDft?xl^G_2&{xgUKA|x7oR7s%l8n z5DlIp95+udbmQ8gFW5h^*8Wded%}}Ft8b$k3DU(Ur>6GJCs|Nu+oLPoaX_Yl4jeL; z>@d_Qp0l+jZP}`}YDFb=0T=5pLu;Ql_S63@2NGxd?$sMkgM9#0Ip5 za!X`+GZ@%Bz}qBAJfEN@M z^T$;4yrhfA1y?7+_MQWs;-rnRur(NAXe7NEi|N(b8x?#H%deD=G2sUe@zDJqPJz+x z65Lo$PK>poB#uKX%iNCId>+a2vJR`wSW09z`)PTnr%IGX(w)&@6|~RxmyRyQ0XL>~ zK99@NCCTP78sIj|+zcxRVhUe?aL^ecTJ@heGjC9-QJ)w6P$$V5jah^yB9v`F6+hj! zFPwsY&+OGGSx;=fm$Xd@?a^YW*Clm?f#`!vAT+cdf$b23757D&xu&h5>hclj{oa~S zhO?a2bDu>;(|uFmT|nQux54;?qcppQQod3W#$ChhTi@+%a*>x3dM78*mYkenvqE_4 z&F7jRu7*|9QOxh%=!sexp)%%__90wDR$$MCZp&X>i7Vs+^uI$sioB!@4RnXAg)T!$ z;yEG@*Vq*mCcZ)UbtFQ*x24ngACm zvnAixGXI@ZaZGry6QN%%W$fp~d}(!Hvshy(1m^)a?hqxDprU31h)H(AuPPNU3(#ef zXo*HMtg~Y~H1mdFDgWS~(RzwcmC2Z_Pz`p=gjG^1ga)nDIXmzivub|uHl(Gcd&d{S zO0olrp&u!B{j5++*C~+y>($0I}ISSZc$2-;*or zDEz2=Uc!$X4mcom*6rJg;0mCu%eQ*)uc-XD2732iZM=Hqod&n2uYpj>k+UZn zZzqM#G>QEg1@W4IC3#?G&rpUM%eRx4(6YK}63kvfE+Fb`>p*6F5l#UFa30>WsBBqL zQ`6nkGf+&kwhm|XAJkCX?7ve(O+gF0D4>vTy0THoGdacV5jpPVm4RDBD)L_5ZN|Bo zb8vyA$#LFt_2De)iZ$QK;k2K%A#8odo1R5}uVkzgIosQ@>YdsJrKZ#w`u9Q5nGRlT zaIjoxjBwZi;gMsg|34K?Q<{O6%(YC7MlZ|MhZh_Kc23L)5>;OrpWK2)h=vr?7IDtD z%u|%A-$7Gbg4*!)wijQ=RI=P0#X{6%(}%W48{!o6>^R&h6nl!vS5_i%X|7fRX||{h zGzIjFi*3@~N{lU1x=KX3V!l@CsIV4skdE0{Ar2PJehUdB)f=bv4xY)PlURVpFfz@% zI?LdNEmixJ(>uaP7QQVdR3A(V&?g0F4y9%%kGCRE4^hmzJWg1KEZ~fLV^W;*l!js@ z?0FIPUha9DpOdV}khxHK~R{suhXOI6qh&y3xB66{cRL>&yke? zHvQwoe}=bQqGY&rENqMAT19Ii~FTZ76SkYA2d>S+LbDWJ{2D!bA&Xu zJaz8LpxlVmwVUM`QrBTa9io{<^jP1j5iNGcHwjF}bC?CN8UG%$eC@1Q{0V$mB-IdIBK-hb#Ay6`uG;vpbumpkLtd z-iA+nS8Ok5sxh_{kZj5`7ropL`y~XzJA?YuVQ`zPEt%`hmM{>+zg2=s=o;~|!+Q1! za>Ijhilda04~*wQPejdIJYsTfXqxEQL61}>7|BAj#s(fer1#fXvNAumFuZqylNF&` z>8a?W1PK$8n|6y<7o1nqsQnce?(mWWZ0{5f*Fk;VF#aMLYdb6yob}BV%1YE)^U^<_ zf?msH@P2f3MTBAT%r|$op?TK^J#z4TaVZEiwzdYRXeZTB z`S0#d_y<`Une-08$>uvIt8ritwfVk8#~={D&UiA^qDfp7VaTM13ffqC9&g(N;};O0 z4w-PPzc0TeJFiR_C~fE!yP)x8+(+%$kulc3KK^drKKnuN4-`ec>q;xZr)~eX$b{Z_ zrW?AyX60?H40^z#%~#2OPyOMd5-VMoZ=_9?fP`L1a{kckp5}z!%ENu_dlD#W01eRF z+w}wq4i67clQqFi@oeRQ>Rq1;TurO`hl*51;FD{uuos2&dvAq!hw>u1{(y{QXPs{p z7px8=R~|Pki5`*7rLLq0MQkAC#Kp_@89{Tn3f`#eXEhwA6J_Y7g*zL`#lS||%i5^x zi+egk@Q2uY8m1Wq*Z%40>+k2sQa$lGF%^$Gtos@$I<4VHPwKs&o#{*$w_y`{Tly=@ zM8|);k()8@i{Ywny@1o^(-^HB5iE805=%T4X$)<|^h;pKt0Vs!)vP(1?+)9$oJyR4_CUh05rO`S~ zglrLqo__a~&a(^g*=JZmA)%q~_WPVwq}>Ns$Hw!1@kF=c*?@F)@(C%xIpEHRCm90Jii9R z?~k&^XA_abpU8iPZGw4bD(<{raJwf6w<~G?^bvt7+0G(+ZEqHloPCyKR@iCv?-+2N zuSAyhKC!KA$kRVabxMz;o$cH;;Z=A!ee@g zq$Jr=PXcowg$&6}KY#ByKLOQ=fD<;fG_fJDq zGabF>HbzRno1okqk)Mf7?_5G-ZXPLZKVNW=Z48X}^)a}GiEM598k+FhiMxx2R6|wB zLB%ogh%D!h_IKKe*s@udHF@A21t`eH-5}V#LT&u^SDcubtcxCdQza%Pf4mf7n=1==gY5GpuQM=$aEqJ$6S+o z(yDt^od&7+6iItW_-n!6NP5Gv!xaC9G<((kvaSvcV6raLloMWd@1vO3k(p|0f<#IU z-L!k2cy|vxxLS!2Jd%3`tw|s9%G>;AC<|2^3A_@MG6*^=YM*T(9hd+(^G;5B zyKo-b_(+cAJ3jcorx|jFg}WS{?BW|rQc6yaWw&=tN%)@Hi^ORc*lT5QLjts72v%q% zaHy4P-%kDF3b*8Meu%^3!v&+9JMQuEx1PLQ=n-@&ZG^-DD2^R!s4bFEavptQrWi7C z`6{?A?_=WmS5g{)*7-6hD~>KKJsQ_Emhh{Q@)wD%jECoHzqCj8^?~u|^Zg6@mRsr7 z6_KdtJ;|{vCvNw=^P(dAHoD7Q3l_Atj?_=*p`X{Kgt6#e5s@02iTs?#HXmapIv9e~ z?mEe+t4&3m*h~$5HcE3?FwUbI{(*uazvCK_3IQ)@FSeJf!5I5uz{$vNSHJbVV(JCG z4&^l4UX3XoFySc@&5*-^>(DG_`?hS+u~0ajVg>1U@z7!s#N&neNAa-j&*Gu>YnM<) zE+)~B3lAtHUg*$D>%-odbWVLC4+oeUY1lYO^+@)a1pii34W`YZenWIaK3*Y#O` z!5Dy&;Mm6ap(5^$n`ce=f>oi-^L!;P5`wK9iF%*<&*~X~>$cCj_TDrmj=XUK!^d?Y z4pt$uou^!fChA`j()r5UoZ?rE==DB8KgIGPeA_{PV|(4acRs~ZkxdEPNSiz0v6Ae0 z!1F)i?7lg`h5z#TfaW^t4nf7+@aFPb5TADZ`e8H?CA}uF+XiF;0=-j+nQ(J`^tkjV zT{TV;AS%$eP&?4>x>v`#abMqwyR&4!dp{5pe@%1u0E=X{lN|def9xXfU)y7AIe)G| zSZM=~%I;4aED6o);W_N7#c@qt_-a3bF(}00MtiCp=G6{zAN-uYvDhl**k1H$^w6S^ zsOS0pgtf4|Kfu~PSumDJGKVNjju%F8vTXVBJ;h+n@8npy{#UNr8>`6wpaYWrIN>e* z-*v!n0dG~(fCcMVFLX(b;rr;E^h3Ey#d@5ER5!mF`)i#e73|t zi2dg*Vqy~tpwvRov2gvwMI!me!0#N1#ou^&*pK;C6Bs5L-gt@Fy7I`4Hy>$y<%6R5 zJKJ^eK8T_iUeywzU_F`rbkh2|3=6OW7VI zPvz5GPujK#+#l7`_Z2L@kU4iMNmt@LB1^$dmtNeIc;a z0CJitrHv)!ID`WtSZN>7m$vI$*djmET&sDPR-{UAM|bQ%l|%*g-7v~EpJu4)@jffg zpVvpBfwn{q=9PB5*16Y6x>`2|7uu|0xyFQnZ`bchbD`0tPFmwD+lwPp`Ec$J(z0I` zl*b`MVpv&mG<>mCONOO^1lt|3>G}geaGRDEWN);^)(KNE_}@0t{iorNG%n=ycrp!3 zh9~wec>yC7_(j|q!X%4wsj>7roPT40MMwVJ$PL??BnnQ|T?H?rL_LE0Jzc1(c(}5X zVs)wfs;W}T_pHoD%f&&^L!1PyQC`I;icrlAVsyxdzqGi*e?d`K7zS{|;03L{CK{>o zX;kcOu_7@`t7}0`9nI8txV_dTgKRQ^O!%sp^~{?jxHI+~zsW*}Og=;=cM^jar^XYn z_kA`emRnLL2GLmV_{2oYU%6tPKqSuabqrJVP~R#32h&X)Z+-_~zd;WL;hc_~rQhy- z5Z5;Q(LV(Ry=LqTDh%Ls(3m;sD3&JvBnl+wH6mf*QJGGa!+5QG*t5w86MktrLID=! z#6usNBp=bGt1MkgoC@+WlHVD~hpDOJAxX5}+J#98P8RksE&_R12VQ3gXh z@BVd{MF29fCOvedfGYWrdHa|2N1*=U0h%-XRzdZ!yBT6USGoQ=>Kp-SzjAhge|_ex z&b1g;`n0S|OLC1&b7ApIO^73;W9)Avz5lV36=19J4=3w?kqz~hSJj1XH=x-RkHnJi z3Hf{?)Sv?2@}q1nr((koO_;3K zXE1{s%SLlEBxZU@`Cw+FeteCUTi;SbI@37-v1$wdcS$#rJU-~3=yYXlq~8&_)n&?q zGd!zV}wMZ-wFg(s{HM{qtgDyf#?Wke(HF@w59)TYhuOeXc0W6X zcJs9*?s&Bh^NxXaHq7J{SdI>Ys|p-ytm)Ee5OF_rpJZj%W9^GF2x`&h;`XtFh7loV zMOp%;zSrevj8Ik1Zs9Ou$STjl%FfW->)6qPeJ`OVZ6cn8h|HX-f^R7a{^%bM+M*-( zXpqcx+-xZ67;FsAx)&G3{>g(P#`ipvG>~Hc3!dhC^}L} znUw!?xNzB73HhRqX0T4@9)Bb8EB#B%>f<>{k-%bLjb|aq9nM@DkyNugumio<)U;$) z=pVhS+#OdCudB!jUlRw3c~_29RLhDsx3ripXR#58T5akF-4qkfjP6dn`^TY5p+u=t zrJEo7lnfL2p$@Xo>l-oGqQ=yVh1Gc)D)t9RbQ^&+w|>p)fgJV{kN!ss^7BvM{8uQb; zqi-KMln(NrK#U@n=b5=Jz9NQS6s=xZA21(VWKkan`+d|}YH@wzbYcH!$n1^jV%^Q} zlk=(KTc>|N<@6lBxCHTWwEiC*rX}Y3LfhJS2N_CSVO?F{^I(yFsfefP+a|H+?{4;P z8}CRLRc&3WMdev1Y04j=wM)2^aTaVL4JDm7J3r7#_gs%$WF&5!hvt~!Qf=VZF&xng zYXC#{TfZqKOB}&Sf*e@OJ&Mb_^KA{0|xxM5KC!2mS#fl3pTha?u>Y8*DEI7O}??fF#( zVMVbM!5z6*3->sP83K+U%9Rt#HD`( z!{+kg%dP@|XUkJezb%49?%qWsn4uLPKQetBxyOE|dbHc_I&`nLx~oJOut?Jo%7UR? z&FlF!JO}3jOECC}tDErnOG|+wO}sLK#};i>`M2hl(C%-;T&%r`ICI)3;xBTaj_|(2 zEFu}-FuOF;LcXo7BYK-_*t*w86Lo}Peg406nYz_OK@me1?+(v}Zb7bH=gavbQ)muG z!d$WuZh@{omGJ`ey&p1u3PBfvB02_3ZPBNn54hpyWX4GzcpI_3?Oh8j8T=8o@_j%O zSxqH#O4JV$zSMd2V$QUbXnVCJ5SoDz5{6q|D0TO!U0~zN^=4Fyr!Q(|5u5dhu5cm$ zgLVS7Q_=eBuK&YEYFgVRA}aL(o@0AnM)b3rQ7r+9U7Lt&y(9{H%* zh?CcIq~wb`QGP%cV_9KxIs#!5yiu){5fDuT4toJf&Ee$d(8M(Gse44)LIrt&#hBN& zAh}C^W?eR|**xGi9n{KN@lEB5*wHC?{evs={`(nSMB>LV$Nqzd$<$hcrnQ9k-mAxnQn6;ZfTk0B*4ornl zUbDFO=p0ek&d$#p7#arPj`k23sfOdh271V~3${0gau_Zb2`kyEfiC3HZoyam+QY&?shmr+REL>weWX_OjgV^nU7Z9IrdV405gn; zzZvPa`z#8SpW+SH^K|iFWNtwcn*{x&u-%>sp?Gk>&Xoe}!Wif_X2VI*Wy5C4hZuqax6Y~G(fR$TeP>}5wif9;g8>0P`lb=-`bo~m$KDEnRjKIbK_d3?R-kNE)*03iRsUEL6 zMKsazv$~L~UF~e$!0%w0MM`wWA|4Rd%gC>}9axl(E1cT1lth%gk7arr6c!NuXWwVm zrw6P*6ifbojrDFt1DmtoeWbx{=*dz@zmq0fpOM7xcOCkHT=91&tNd@>sZvm35MRKj z{>wkT0Ql_+HZ+}a9g0m%b~_(2UE`Ugn4-9x#&q)-x02ECMpSV3-~B@?yfeaA`?FRk zaT+Cqk?B9^u{Q;}W-n*cqV<2>@iqtF%H(*%eo~N|7l(o}&W8E3@Xt_2krPE%#Fb$m zpvdJw?D_vD*+EFvn_d4W!r|SbkvB~20+#^jg&+z?Sy zUrY6t$x~O{`Z$aZq=yU!Dq3G*H!m)kt(_tD7DfWb5IH8FInyQIPN`87-Nw~vxURBs zBR1(j_3j)iQ3_MA%VYlyP(mvzmH)3QD!+!fX09HvBuY>0J9u}?HS_YCZto5H=3DxG z2&668W=a1X(Pgh{zkX$}c!ecU7C$=Fo$Mk)>9prg|28 zyJz2`0oOM}NH6J+#WCWM6P?jdo{0Tpp(Tz4gn~a%hzfC!Ti{qI%YHP%>@t@ZFGMlG zLMcD={q2d#_Vx4+1-s0Lrz)2n2$S{$Y_EU|xg@~=$@CDRZWdXFYezA$wEDE2y5oE%TK3VZ-4LzHtl2-+X9e15ts(A-{a6zf{bXH?!BkGJpY}$`~@74SF$7jAy)8aH|Oz$I%H12^ZocA5wc)tABCP zD<{5X!aE=Tq12v~uWe#uAKT$aG!$YPPA>BGX^~n)OQ)QYzYCb!XyEQmA7amI>Vr9g z#71EgN>1in!s)X2zvVtVWFF%{{V7@YJ3_vO!%C7FKD3xlmZE6a#_2p2>)Rr5q||z( z8Z)J<-%erUroiquqUbVXMd1O*vTN|HZW%U1cNiO$S?wQ14hOy(5ANnIbv5Z&vqE+| zo4h}M0y~l}bBg~6uRA$E`O(rQaMg6fIK4FMv@b|0wiFlY>I@D4=sK!4-}_j`a5Q=o z8`7-7{{<-U6kO&byOo#&ySsaXdu)A+p5Dl9LkG!r8TY}N9fQ5nIcr!pgOOY=h3pPR zH1gZDDMqvqIp!Ik)t*1>(`%c^b`;%b8xUnHeHUu7x5VC(9!wy>siyby_6CmU#UQ&1 zu0*^R!f?w0MxMcsy(bMG(XN6^t5cZTNq+7wT#(qm+?!JXC`Ut zWn_rlc19;gdieCl$k)It8=st5mYYkR-HNA$1q;5&x0w9qu0^U!2x@ftq#H?E}Zuwb;r=U@^#-0yDNzwfza z@C%lKwHi0}K40lZCGo(oDdK3s)iFq4v8Jamj!CvpE#g2Qg~5^6zxQOyaO5-k1l;`e zoh_a^o<`+~Ms10itLg?XvO5>n?7rsdHJXWX!J3g}6!Lyb*;rk_@wCqcix1%Q<&hct zQT<1f<4Yy)>k@#y^Mtu?mf{##v7ut;8DO|jeqzp5s&6x~1dJ3m_?s89YF(K=pczkl zaWMPDs1=Xc-<7%8lpB<&ql$I9*Sa7AZ&#o-zcmush1q0N(G-529px1s2pShXWouu= z4taxhU7ZPr8;4qHfeQo_KcTi@wSSkxYOckdqvF+3-h>W`El3HIfZaYUeav}lh2t!O zB2>KROOAYdhB@uCcxc(!UPTw__N=6-L5O&v7#RXv=sXOMpQD!+tzBaxQ3+6bYt>)q zcBP9H+fk@H5WXzRND4STS*bi~K5UzB)l);zy&(1W&Ucc|@4CKA6v5MqoLedXG%2z$ zje5gqED1>f-^lTjxqB$|TvKJ1x7ZrqE+7~wnRHp&y}Fe@V*!F(a$qI@mhJ-h!v*T0 zA(QXg46eYMR%lDW@%ONU6tWsSu` zp{hT<>4cwAN&>lMdL9WRZqR1+8AL3#WN~Qsm`;>(m>a5x2%yD2co!ulBQQQmy6AtQtN5BAtoWo~h#db-1QQE~pAsrAN$)z;539theGXh?wh5{#d0sG=jqLDZh-JcI5v1WL zadR2&zK|^B@VvpSFluvx{%kw*bx#4Mx z0rTwUAG%*eI=SVTOy{V@PL`gh)O@8%w{J}zNZWo08toawe@mm~ftnYj&50m*lwIq= z{Bxy`~oVQ;F%}};! z=$fLgo(b>BgfNFT7Tlh#v0<63r#=;Swd_ddDQi3JCI{u$NNI@q%I5+0ZOSD5m2!@W zK(==VE^^bUq^OZiP&aHj#BuEIdQC}NMEWqYDBgFz76w+-vHigG^^SDQ=m;qr+g((q zB%mJ6=D?XfPgJz0qM66NB=BRZtHh_JP zqCWQ?$eSYakxuU;{L73=a=J&{kD9Xf{8hOh-@Q9yenjW*=>YKJMbUMEq&jtj_yJu9 zW$KG=FCFR->;2;THE%%s1_@yeUhZvFBtJ4)_?j4$HIBrS6uH^xGm4WV zppwTq05(@s($tuVXAZ*y583DF6}=|L`>uuKP;d|uBqUhsYTca22w`u_+kI-**5728 z@}&^fHFwNkZp__8>F+Kd={{y;nPK>t-gG z0)`fz{=7NLh)rRdf063{xppy>BUypNU?4;8zL^$95m|OA_*E^D(H8($XPhrpe`8$r zxE8c#9C~T_#(uTRN$O>zLejm`Dvv$E=b(N8=Qo1EfOG@Js3W55ime}Z@83iF{%l%L zOJC)RTynN6xnsU4baIc{O1(tKbq<{%Zi3i(gfbLhkVzVg#=`IyFXMdb`q}5Fg5XJ< zz)oI3qx+y6B&AsuG=T=-bg`tN5n=C@p)&P;!HeZ@yLAfpp2(B_K;L`=9}b&R$E{%t z?-eD8-AesX*^@newT=ze))QN?-E0+?e$&$7a!2C&IrkO|JqO{d58n)`+G*#jf#v0L z-biyJS7$3(A%})EIC)B$OKB}yD7r~S2hD@%S&l!oO)q9u-&bc~?H2t37Qv`Tb*mI; zbz8#xOVLBBdlA=(X0sQIEBB!b8LiisF8$n$$r7UNV;+Pn(l$SCwn$Damr^i~megNc zp9@rlF@LBi5K0v(I5^!4(wxAo#v}Y7avU&pbo3eOV{Km@@r2Yr;w)*_WL{+2i1~Cz zah1(wza?!`cquB%*3L3NQEpdNEIW}wd!u}(#z#nP?G`B2MRUt;CF69A^II`qh_)qd z)RTu4p9_1`w>`g0c59K&9=g3_pMZLFQLa?T?7-Y<7=l{$x?fIqe)$<6uVzih@SRYk zN@`!$SVSLy5GmjGGUJPE?At7&7v@>K(SG4%&^0Svsvvy{r^%86U$Hq$4bMs0K(AYvuEAtt_w1uS;QC?6?j=1~NI4!k z?`7=CN-YqbBGQ4|NC1YVr69rQ*z40$FjZ6S>VyyWAZ*mhU^1hOrDop`Rh_JzG#f7b zH=vsnzu&GMb3<|8m7Tsl;0A5=RXmOMlHHXb%?6NtL{J|mi%N%fIU5WVx_N)XxR%$6 zICnurUhOpS2y;r^`z{d55hUkVg6d5MEW|$K*}|d{O0Pd+IVsuo&oiV*h-ydG^*$02 zpXFANZ!#!2zJraZlm@;94XAq`T+?MZwj_8Yx>OvivJ}n~`y

?26AMg3b;Hvb(gcC|SXO|M8VtZ3ke5sW!YYkq?I%O;(#w6YOzs_Xywb zK1%-Z@zbW4PI)Z|_h~aUF}*}X*OMXv(0MAf=s}wwa@s}0oIo2NesPs0-^A=Vr{Mlj z71&O&XgYsnmC)^IvZrcjYWfl?c6#<}@mhO|L`_>)@3noU$>`iw8S9%A`fr0F9}qkl zIC+81nfV+hyV-2H5aFqHK1Ll+anWhkO1USuzZ_M8#ldXeR`m z9JN{b6^}P0sUnq5BV;Heop_R}e~n^>{RGopPf5y#DKoO`TA$u(e9+E*IkoY=;nbG2 zl;qZ)w4es8IQWmwI;gem7`wM~`W>A@NCK4s@v*vW^-kx}28nn_Dlba$0X+XVC($ixTpej(u@t|^AakH=OzPnJv@I%lgj6=6xs zyPRjLK+t|u!#d0#xwWMogBE=&MAV2@{im`Cm+O2eIFiV4vJ?vY$?SZ0;*tD%kj-D| zQ2LnMBwxGbS~Yz|?aBD{m|3QD<51LNQ@y@XRJQX)u4<=b@!7)g)^{mpMQeu(ljq#; zNT|bs3_Y=>LE*cxX~EUG3OV)xyFMBq%cT!$TJT2q(sH9^M&$5S`e2O5vAr>^7wfxD zJcTW$aGQ!5k3<~_!+MI{SL%)CNE7CV-GDK>HxZ!k&zNtF!R{UF%pZXrQ->C_IL9Jb zSJ2KOijn%*P}oyR@>unt^$pvJtU6n!IGBiC41`69mLG0J&Lmiey4XKl`j z70i5B>1pkfX4I>GS%AOC>P1fAt=n;$-LD>2Tv8z+Nle#kr&1}V)+{|mXxBW4(0xY)63RFhNHGFin&irkFMUQ%UVm3D(IV0SAB4Me>1^sT-oBNRM z`HqzF*qZOMLE=D;_Tzz=WjhZMsKZ4HHp?0Q&8^GjXL?m$nv}@1oSCTr&&K0g2s$Y1 zGjuF)F%AlPp38A@>H`TSr9gB3G7MDZP~8{Qe{@ z<@>Qt#nSZTR;=gTOqxy;u4Eb|Xx>C?K|X1i)X)F=dr-Q1(bPBD#@-eL;XNl)r_B7f zZ@U9;Z{qWA(l1s-7!Mp?fxK>s+pt%BOa@6IN7?pcy$(D&-{M>7LbHb3@SzVE(-R5gKyt7?108DzD<>7T2Z#^Jp}3`w)I*GfcD1!x{7F zDxZbI^k=5?@|-qP7**3SOx_sHS5wz75GUr^LF9|Ne}*G&w+Qz^vSW*nR%5|$^`ljO z%{i|RcG@Cc$f-Ru&T)v%gt>VeQ)r|--X3~}d6Jsmf8fk5$hWV80kyHoJ7^sg$42S4 z?9TGCZ{vP_H=3Ap!otWvSr+r+53fL7O|Ec))!!b{**NP4sDs ziD+zUPRx*yxpVp3dUh3TC`o*pBk7`a$Koewi%N*pM6T`KII)UN)8{J97v|WJwc+2v zSx=h@4J070D5`DDBtUMg&JV9<$^cr6F_$rO{=#d%?B24StZn(2%Y7m(7uy_A=Zco_ z7IzJm3rS2qLeP-sDW0K;HGBast4M9~PeyB|XpyGbT433?0=z6i+B6|VZ}nxgSw^)P zCcJmi5%MD(9)6cVw>0u%d6|{HxhrpW{X#}yzy1=i)oz%^Z5NJ?C!)|Mh=qwjuxTg&h)A@XJkR2q!@LB$$twu1wLa_LskO`nIUy#7Kt-ttAn zZ_tuTzD|oD=I1$uRqu$ObC=IaT4+ zr_7{-0^=)~6rW+JFw`2mu8@<8q>)HiaBE|=L=nkM8Bb0g)oW1YTj4RqpuGZG|6{83{`vR~yw6v&DTv1!wGcfR+Ei;U(FEUsJg>VWNzydc|sMCCvOS9(T z8#0j!Dzmo?RlS2(s$~*wN4X1ZNoFsGL2L4>T&4%u9?)C61w>pK)tUX7zUFZVsy3zX zRNpeuTb)>IF%_k6gR1xDaToAZuN4P3Am`!-k9}d6+V0~m0Gr0E1L+Y6j8+TLQ1c_~ z$paT~E{{>LCkE>ITG|f!|BY;kU*lHG)DMh{dD+driq~U10>xL7N=s$_C9&4<Na2z;__ptpX}$phMU6+zK7xn5;RgS_l*|=IV`%YB6x}151aAefe#KFxgRQ@PeqEud+I$*Wgp73@Vm-07h{IJ+ zPLUwh=fq=J>YSR{@^{EcOB9uu@OC5}|7OaW%4mPQ9t%rWp~6Pn6V#_xsict7P%~T= zc8NV2g!)*7ij|1%bU1boZCf;5OEd!dx7##J4?cphA2hsxf+fIIV=+b9PNPV!E|;yY zIFtplJG91CQ_chTEl)PS{_rVut+88g=}Yp8bXI)3SJOZ7th-g|pI%Wiw^X1wb(#kB z+$AT%wn9F8mvu4pI>d}WHT2@05j|D=_2mopKln|lWO5a_TI^YuRB-9B{sCgam3i+N ztkHg_GW|bFiGK}fAE8dseG#cS^iW`8z|S&7JV^VcAMFV(AW4CdOg#}HR56c2p6C~s zLGGjNj0=>T`<2AUwEnJ;sR>s|Z+p|<~!!}=bd|#JpwSL(28wuc(vP#Q-2HQ=;Q0KV; z(><3-+vD1No`-d)uu>9h^{0oWVEVk?49@xe)FPIK8cj*irAY0cHgZPmrg^X|Gf$>}fs zO5Dhi%V*ct?yw*RqAvjObhYg<$k+B}<(zA6LFU1`;{wREbiFdFS9qMw((AK2dwaMA~YiTcdq*hN|%v5j23gE(U%b3m<9@6;n zM0Ou*h7Q<*$$C|oethhAx=}cs3}p&~MMUQ5JO)HM*s2p17AkQ%CHX(qKBRHlrA-ju zAtmie*Z5|%$U%X=l6K?P$2>{G0{ENf$-38DCoV&KDg+Ll_JpH(hI6)*y1x;U-#cOxH$8Ux*UHT4x-%_6 zjnl?Sk2;hVs+Q!NBSzJ`Vj;-yce5g?>DBMV6!-GMkjvR85~F3-Y5#lS(3eJ;^0j-h z9qL?zQ3P$>v86Ni$EWm{59T5lDe-bJg;;!hx8rWD+HP@4tOP0fEuIy7n1^?+>zO|* z1PMj&j0~PyMKv@urYZPftq2#SpxqSpsCCBb%;*aGv98@G858`MNoMvNrN)V>Ip`uB z!Okd$CFK{XLZrJegDTetJUt2W7k#+CNx^`^40wpt#a4%R)X2|55DBun^g?Z%MoX%e zNA=Ftm)5LSSL}lZ+*RjAOsuR3&^D;8M)ZUn{Mn)w9P{V8eHbJ9jzy-M&3^Oo#DfWA zvP~f_EsLh>V?iztzRQrafq!}df~WVyn(bmfd~u)tctyObxN}J+!8EORL7omc)>)Hg43W?QaZA5tYmnMuw*vZOy||s zD494HdqQnfZ@`}Oo?t%Su#?h8qxPUL(+TJN>@JQ!Ug-l;wJ;)a225xG!9@!NQ>7WH z=9N~*$$f2wqjLOoeUsL9nZ$-VdVL~Pj;(asGo9y5Sk#xkk5XsLb$cKM34i(qH_5gy z$44JSb43_F|8Kbrj}doMw4!}F_qnzJkCdw`<(g=1x&3Jod|f2}KSUVl>!8tlxbfwn zDIs)ElFNL*h0B*6tIhDiW-c*@`Pdesgs4A5D3x{^1*ptuSm!e+X4o-U_wX!**2yX{ zPYJz{I-C#4V9;G{!axWf-yO?)kUmMYKrEO~U6vk_YjTH_ako`G4!+Bp_>k(DO!VMl z*C{3|-{d|~v_>|4bGU7ktOS zn1(@*vGunJuL;9e*Bdqt?p^R6wVM3t633C_O8;J%nhQzrq88=N{PGg*wzrWh4Pru)N%9 znL@ZO-=wG+#89tqW{Om}`~bbvCc=_Ti_R#rx9uQ)urYXp@&*GB*Adt?UXwc8dVx@D zefz3Ymt9C6xhmP{>uccoiDigNkr2=^%Hvh&ICymbgFKZ8dn?NN`WvEjvoVt_p#bU; z8>ZN7H>@ zx`bN{5rkg*zytL*p#PJ_Finq0Pu2k=6n8)~p6iv#b`w7D$?vXi@6m zzA`M%ZCNu30TML0LxMwacLE6#G(fQ6H16&aAh-u@oZ!K=aregE2@u?AT&E$~=j<~# zXYS0MJ3pp>@z7tdZ%M6M@2YyMO1`wLRX$4CW&WXVBg|sWRbe+v~_baVgZat`K~F@KB9> z0eb*8X3vl>QIgt0p13s?`reyY;SiCUgrCSHZZZ8e8#JA0t?%hY<#u%VJ^e56f!AQp^R#K zAPRsBwds0~tnx8^C5@PkiO=ZCOt;T9=5)X-49zUR7=*FayiXu}hf|a(O09LbpZpcM zCFWDe`=gsMriTk5k zHoo_i;?n(^MskZ=w+KwWa!XH&LZ^Lvgpv7ZRVp(hSpVwya7yYfo?VEwRC#{AH*&ll z#1v1iVAv&+_pu1VmF-XvL;;x|b-!&}t*wTZ3FJy#!DBW9F8P4x@OBVvTWIMMhNKk^ zpZB?NbbY*yni{rg*IT123Mup@mfjHwGjmG~TwLsP8TMMTR{ztr;N@foLYqUP?!)nX zYOk=EF+2$p%zB~vJNv^gSLJ(VkGhi@Tr-OiRO-Qn_rB`#Xq?FtrJ zV&ONqM?b-&Qpiiv#qI5P<{wO&T_^$=QG_vJ%zwo|WRH@;A#QV?+4&T`1|A_TV9(}OFul7TX zV|-zJP=nt1Sq3}%D46B_f58PqvCd(ygQ`HVPTl`nKh3} zgJr~N$cWR1gJ0~EXZN;dg3+VS_gw2=y(#OoQ-n2)#rcCFoT6{&G zqGw9J z-!kmd3i3d7{_hyaV zcb`8nQkrbKb{)OutoCncw?9+(7X=Cng6RL_I92n>~~K z7r6{TY9JS<1M!cj*X0nL8xiE7VF7AJJE3A_&kw%BbA{e%IDqnX4(aP)oO6qg$KTjo zj*UGru2=Dezn^A1Vz7=CXZQt z_v4AuQw_2u4;Fl~6Y$p_Mzu){?6~Kbm_-&^Z39l6wbgNA=}sq@!U5~vHSmpHq}5J) zT)cPleu9$>I^Zm}w#pB*PAr$wY7WH<(q;p*fe7(h(L#TQ#@3a>e>o1|m7!TL`24l* z7@VA)M@IU67yy%zL&gI6lx%A)7h_4k@*IL~6B!W{b|-#wzC5gg)3BtwE=IPugazgu zdCy`P6gGXs&cp+&u7Ko#!4c|k*C_u$(Lu=rHL0+4kR?p^TQ7chgDDBWj*0>tqtvhso4LZQG}Qka9vX zs?Nb`aV^`fhYD+#fXNm+p|ZvmO{=7&Vj?d-z%4vTCiq5Fp3w0zG!ct4YVgGAOQ#P6 zCiMJ+ByjMzPzqPhlP<7jBI7r2klMeH%esEheue63U)83cvo|}DrG~~Ib)#rBpu{)q zy^o~|hX;1viu&KD7AV%ju-$E*1Y)yWl_|btFlGI4Z_)3rWY$>LK&MZTtMPu~NW7~< zH%D2v6~*HwsEefF(crJ77^*`6V;o0j=^-_K=;h5nXXw}PRs^#Q8V?ut(Pkvlit{-{ zcLG`#DdqJHriB(y`%YaG`*JPn#~*IkIX>2!IQi< zxhn~+y*}>cu|QS1VWp1cv{=G~Gmi8I$otgU&^*m8U4^_zi@?m~}k4QCp8G0!$McCOhmcE_QK>4)QmGUlx1VXzf9xN_lAN?=q%5Yy}~qz$dvSE~WHs zR~)aHm(|0(vJw(*#D*wt;TySK?n-BU5Ms5WX(kw<1@UM*jc)KbZ8<@hrUiwCrDbJr zkT-Nu%E-Q<`G{3^PD{0veaG2v*pxU=`B7k7L3xxHB?`+g>D<-q3SKBGYa≧};pW*$ft#EV}c)37Zmh!5;{d*6j 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 Iu(tRA0Q9poGXMYp literal 0 HcmV?d00001 diff --git a/parts/AUTHORS.tex b/parts/AUTHORS.tex index 690bcdf..9af5fc5 100644 --- a/parts/AUTHORS.tex +++ b/parts/AUTHORS.tex @@ -13,7 +13,7 @@ Software developers working on \CGG{} since at least 2021 along with some areas \begin{itemize} \item Andrew Randrianasulu - continuous ongoing support; bug fixes; library upgrades with relevant patches; some nice enhancements; created and debugged builds: NetBSD and the Android tablet using Termux. \item Andras Reuss - created very useful Autosave backup feature in Preferences with Andrew assist. - \item Georgy Salnikov - added all of the Help software in the program allowing access to HTML manual pages; major improvement in the Motion plugin; provided scripts and program mods to convert Latex manual to HTML. + \item Georgy Salnikov - added all of the Help software in the program allowing access to HTML manual pages; major improvement in the Motion plugin; provided scripts and program mods to convert Latex manual to HTML; Blend Algebra and Blend Program plugins major enhancement. \item Manuel Virgil - DPX list writer developer; EXR package upgrade to 3.1.4 (not currently in use). \item Mat Nieuwenhoven - creator of the AppImage build procedure; LV2 specific control patch; maintains \CGG{} wikipaedia entry. \end{itemize} @@ -27,7 +27,7 @@ Personnel providing current recent testing, examples, demos, and work on the man \item Pierre Autourduglobe - designed and thoroughly tested Interview Mode for implementation; major tester of Mixers; provided reason for getting the Shuttle to work; tested other new features. \item Phyllis Smith - facilitator of checking into GIT the developers and contributors changes to the Programs and to the Manual; tester; creates monthly AppImages when needed. \item RafaMar - updated Spanish translations; instrumental in getting friend's help in adding the Help button to the Batch Render menu; provided additional ShapeWipe transitions. - \item Terje Hanssen - especially tests Bluray video media creation providing invaluable feedback. + \item Terje Hanssen - especially tests Bluray video media creation providing invaluable feedback; created a detailed PDF document on Preserving Camcorder Media; major building/testing of QSV/OneVPL on Intel hardware. \item \textbf{+ many others}, some of who wish to remain anonymous. \end{itemize} diff --git a/parts/Overlays.tex b/parts/Overlays.tex index dc948f3..f925763 100644 --- a/parts/Overlays.tex +++ b/parts/Overlays.tex @@ -227,37 +227,63 @@ After that the Porter Duff overlays are shown using the same source videos but with each of the Source videos offset in a different direction so that the generated output is more obvious. -\begin{figure}[ht] +\begin{figure}[H] \centering \includegraphics[width=1.0\linewidth]{normal2.png} \caption{Normal and Arithmetic overlays} \end{figure} -\begin{figure}[ht] +\begin{figure}[H] \centering \includegraphics[width=1.0\linewidth]{logical2.png} \caption{Logical overlays} \end{figure} -\begin{figure}[ht] +\begin{figure}[H] \centering \includegraphics[width=1.0\linewidth]{graphic-art2.png} \caption{Graphic Art overlays} \end{figure} -\begin{figure}[ht] +\begin{figure}[H] \centering \includegraphics[width=1.0\linewidth]{porter-duff2.png} \caption{Offset source videos to illustrate Porter Duff overlays} \end{figure} -\begin{figure}[ht] +\begin{figure}[H] \centering \includegraphics[width=1.0\linewidth]{porter-duff3.png} \caption{Porter Duff overlays} \end{figure} +\section{Problems with transparencies}% +\label{sec:transparencies} +Often in applying overlays, or some other type of blend, we get unexpected results that can look wrong. Sometimes the cause may be the different formula used by CGG compared to those in Gimp or other software. Other times they are a result of setup or order as listed next. +Keep in mind that blends can be applied not only from the Patchbay but also as an Overlay plugin (see \nameref{sub:overlay}) and the \textit{Blend Algebra} plugin see \nameref{sub:blend_algebra}. +Here are some factors that can lead to unexpected results: + +\begin{enumerate} + \item The colors of the 2 tracks that will be blended; we often consider only these channels to guess the final result. + \item The Alpha channel of the 2 tracks that can interact with each other in ways that are intuitively (but not mathematically) unexpected. + \item The choice of Source track and Destination track (\textit{top} or \textit{bottom}). + \item Overlays effect generally depends on the \textit{colorspace} of the project - YUV can differ from RGB. With the \textit{Blend Algebra} plugin this dependency is addressed; the necessary colorspace conversion can be done automatically. + \item Overlays can depend on implicit clipping. In \texttt{RGBA-FLOAT} no clipping is done; in \texttt{RGBA8888} clipping to 8-bit unsigned cannot be avoided per definition. The \textit{Blend Algebra} plugin addresses this dependency also, clipping for float colorspace can be switched on explicitly, and then the results for float and RGBA8888 should be identical. + \item Unclipped overlays can be displayed differently depending on the graphic driver (\textit{X11}, \textit{X11-Xv}, \textit{X11-OpenGL}, etc.). The OpenGL driver could be more robust in these cases; it runs perhaps under control of some {\CGG} shader and seems to clip the bounds correctly. However, all rendering is done in software without the use of OpenGL so be sure to check results without OpenGL. + \item The presence of a third black background track, (or even the color of the \texttt{Composer Background Color}, which in {\CGG} is black by default but whose color can be varied manually) which can interfere with viewing the blend in the Compositor and show unexpected results (see \href{https://www.cinelerra-gg.org/bugtracker/view.php?id=559}{MantisBT \#559}). + \item If the footage material in a track has transparency by itself, it might be modified by overlay formula and develop some color hidden by transparency before overlay was applied. + \item Overlays can be applied at two places: via the \textit{Overlay} plugin or the \textit{Blend Algebra} plugin + in which sequence in the video processing pipeline plugins are processed, is defined; and in the \texttt{Patchbay} in which sequence in the video processing pipeline plugins are processed, is not defined. + \item There may be \textit{masks}. The mask can be applied either after plugins, or before them. Results of the \textit{Overlay} plugin depend on it. + \item There is \texttt{fader} control. Probably, fader is applied after all plugins and overlays, but this order has not been verified. + \item There are two buttons in the patchbay, \texttt{Play track} (can be switched off) and \texttt{Don't send to output} (can be switched on). In both cases video from the affected track disappears, but the background left is different in both cases. + \item Effects from some other plugins can have transparent parts (\textit{Titler}, for example). +\end{enumerate} + +Ultimately, if we get a result that looks wrong to us, we need to look at the formula for that blend and calculate our mathematical result. Then compare our calculation with the result we see on the screen. +In principle, you could attach \textit{Blend Algebra} in addition to \textit{Overlay} plugin, switch one of them on, another off, change the formula in \textit{Blend Algebra} and see how the modifications affect the result, and even print and analyze the intermediate color values. This can be most helpful if you use some specially drawn regular color patterns instead of your working footage. +Another possibility is to attach the \textit{Blend Program} plugin which modifies any given tracks directly. %%% Local Variables: %%% mode: latex diff --git a/parts/Plugins.tex b/parts/Plugins.tex index b4f18de..17e7221 100644 --- a/parts/Plugins.tex +++ b/parts/Plugins.tex @@ -963,6 +963,451 @@ Allows you to apply an alpha value (transparency) to one or more tracks or one o Automatically scale to a specified size. +\subsection{Blend Algebra and Blend Program}% +\label{sub:blend_algebra} +\index{blend algebra} + +The following description is based on the \texttt{~/cinelerra-5.1/doc/README.blendalg} that accompanies the code by the author of both the code and the document. It is the authoriative documentation; the most detailed/original source and has additional commentary and programming information. If you encounter problems or confusion when using these plugins, always refer directly to that document \href{https://cinelerra-gg.org/download/testing/BlendPluginExamples/README.blendalg}{here}. + +The idea behind these plugins\protect\footnote{credit to Georgy} is that the user can program sufficiently short and simple blending algorithms, called \textit{Functions}, by following detailed instructions with no real programming skills required. +Blend Algebra and Blend Program come with a library of Functions (\textit{System Library}) that mimic the 30 overlay effects found in the Patchbay or Overlay plugins. The user can modify these Functions as needed or create new ones. +To look at these example functions, there is an \texttt{Edit...} button in the respective plugin dialog. You will need a text editor to do so, which by default is \textit{emacs} if it is installed. If not, you can set your favorite editor via the corresponding environment variable in a terminal (\texttt{export CIN\_EDITOR='name editor'}) and then start \CGG{} from the same terminal. + +If you can not wait to get started, checkout these examples \href{https://cinelerra-gg.org/download/testing/BlendPluginExamples/Examples.txt}{here}. You will also find test projects to \href{https://cinelerra-gg.org/download/testing/BlendPluginExamples}{download} to learn more about the plugins and to see the various ways they can be used to create your own functions. + +Both plugins, Blend Algebra and Blend Program, are similar. They are described together along with their differences. The main difference between the two plugins is that Blend Algebra is like a function; it combines its arguments (tracks) and yields the result which is placed into the single track configured for output. However, Blend Program does not produce a function result, but instead directly modifies its arguments. If more than one track is to be modified, Blend Program is the only choice. If a single track is to be processed, Blend Program is the best choice and might run slightly faster. Any Blend Algebra function can be rewritten to become a Blend Program function. But if a function processes several tracks and modifies only one, it will run faster in Blend Algebra which has more controls in its plugin dialog. + +How the plugin works is defined by the user. The word \textit{function} is used to denote this for either of the two plugins throughout this description. +These functions are for their plugins the same as the plugin shared objects in the main \CGG{} binary. But these functions are simple enough that they can be easily written by users and manipulated in binary or in source form. +The plugins make it possible to have a user library and a system library of functions. Thus, an experienced user can have a number of such functions to reuse in many projects. + +The plugin is attached to a track as usual. Generally, it needs several tracks as arguments and it has to be attached to the additional tracks as a shared effect. + +All the parameters described below are keyframable, including user functions themselves. The top area of the dialog deals with programmatic aspects. +The middle area of the dialog is color specific. +The bottom area of the dialog has controls for the argument track ordering, +similar to that of the Overlay plugin. + + +\begin{figure}[H] + \begin{center} + \includegraphics[scale=0.5]{Blend_Algebra.png} + \includegraphics[scale=0.5]{Blend_Program.png} + \caption{Blend Algebra and Blend Program GUI} + \end{center} +\end{figure} + +\subsubsection*{Blend Programming environment} +\label{ssub:blend_prog_env} + +\begin{description} + \item[Function] This textbox contains the filename of the user's function source text. The most convenient method to select the function is via the \texttt{Attach...} dialog, but you can just enter its filename directly. If the function pathname does not start with '/', it is interpreted relative to the main project directory. An empty function name means that no function will be executed and the tracks will remain unchanged. If the entered filename does not exist, again nothing will be done, but in this case the user can create a source file via the \texttt{Edit...} button. An error message will be shown when a directory is selected in the file selection dialog instead of a filename. + Although you can use any filename, it is highly recommended to use distinct suffixes: \texttt{.ba} for Blend Algebra, \texttt{.bp} for Blend Program or you will have to make adjustments for some entries. + \item[Attach...] This button opens the file selection dialog as usual for Cinelerra. By default it shows only files with the recommended suffixes (\texttt{*.ba} or \texttt{*.bp}), although this can be changed by specifying a filter. The user can select an existing file or enter a filename. You can exit the dialog with \texttt{Cancel} so that nothing is changed or with \texttt{OK}. In that case, the selected function will be set as current, and its name will appear in the \textit{Function: input field} above. An error message will be shown if the user presses \texttt{Edit...} with an empty function name or when a directory is selected in file selection dialog instead of a filename. + If the entered filename does not end with \texttt{.ba} (\texttt{.bp}), the corresponding suffix will be appended automatically. If you use a filename with another suffix or none at all, you have to change the name directly in the \textit{Function: input field} after exiting the File Selection window. + +\end{description} + +\begin{figure}[H] + \centering + \includegraphics[width=1.0\linewidth]{blend_attach_window.png} + \caption{File Selection window} + \label{fig:file_selection_window} +\end{figure} + +\begin{description} + \item The file selection dialog has six additional buttons specific to the Blend Algebra/Blend Program plugins. The three buttons on top left change the current directory; the three buttons on bottom left do simple file operations: + \begin{description} + \item[=>Project] go to the project directory (where the main project .xml file resides). + \item[=>Userlib] go to the user library. + \item[=>Syslib] go to the system library. + \item[Copy to project] copies the currently selected function source file in the project directory. + \item[Copy to userlib] copies the currently selected function source file to the user library. There is no button to copy a function into the system library because the system library is meant for functions distributed with Cinelerra, which can get overwritten on reinstallation or upgrade. For details on "copying to/from" project, userlib, or syslib, see +"User library, system library, and Cinelerra project directories" in a subsequent section. + + \item[Edit...] This is used in the same way as the Edit... in the main plugin window as described next. + \end{description} + \item[Edit...] Open the currently selected function source file in the configured external editor. The editor that will be used is defined by the environment variable \texttt{\$CIN\_EDITOR}, with emacs being the default if not redefined. It must be a windowed editor, like \textit{GNU Emacs} (default), or KDE's \textit{Kate}, or \textit{Gedit}, or ancient \textit{Xedit}, not a bare console editor like \textit{vi}. + \begin{lstlisting}[style=sh] + export CIN_EDITOR=kate + export CIN_EDITOR=gedit + ... + + $ ~/cinelerra5/cinelerra-5.1/bin/./cin + \end{lstlisting} + If using a console editor, it must be defined to run in a terminal emulator, like \textit{xterm}, or KDE's \textit{Konsole}, for example: + \begin{lstlisting}[style=sh] + export CIN_EDITOR='konsole -e vi' + $ ~/cinelerra5/cinelerra-5.1/bin/./cin + \end{lstlisting} + This is the same \texttt{Edit...} button as in the file selection window of the \texttt{Attach...} button. + \item[Refresh] The external editor is started in the background so after editing and saving a function, the user can leave the editor in that window. Alternatively the user can edit a function outside of \CGG{}. In order not to check modification times of all the functions on each video frame, \CGG{} has to know when a function can get changed. That is what pressing \texttt{Refresh} is for. It indicates that now is the time to check functions, and to recompile some of them. How and under which conditions the functions are recompiled, see the +description below. + \item[Detach] This button clears the function name in the \textit{Function: input field}, which means that no function will be used here. The tracks to which the plugin is attached will remain unchanged. + \item[Color Space:] Here is defined in which color space the frame pixels are to be passed to the function. RGB, YUV, and HSV color spaces are supported. The most often used, and the default, is the choice \texttt{auto}, it means working in that color space which is required by the function itself. The fifth choice, \texttt{of project}, means to work in the native color space of the project (as defined in \texttt{Settings $\rightarrow$ Format}). If the required color space does not match the native one, pixel color components will be transformed to the required space as floating point numbers. After returning from the function, pixels of the result will be transformed back to the native color space of the project. + \item[Parallelize processing] This checkbox (ON by default) lets you execute user function code in a parallelized (multithreading) manner, provided that the function itself supports this. It is described further on as to how the function code is executed. +\end{description} + +\subsubsection*{Supplementary Color selection} +\label{ssub:sup_color_selction} + +There may be illegal floating point operations in the user's code, such as division by zero (producing infinity), or square root from minus unity (producing NaN, not-a-number). Even if only legal finite floating point numbers are computed, the results may go out of range. This dialog section controls what to do in such cases. + +\begin{description} + \item[Clip color values] If this checkbox is on (the default), first the function results will be clipped to range. Clipping takes place before back transformation to the project color space. The bounds are defined as follows: + \begin{lstlisting}[style=sh] + RGB: [0.0 .. 1.0] for R, G, B + YUV: [0.0 .. 1.0] for Y, [-0.5 .. +0.5] for U, V + HSV: [0.0 .. 360.0] for H, [0.0 .. 1.0] for S, V + Transparency: [0.0 .. 1.0] for Alpha + \end{lstlisting} + If the project color space is \texttt{RGB(A)-8 Bit} or \texttt{YUV(A)-8 Bit}, clipping occurs unconditionally because of intrinsically restricted dynamic range of 8-bit storage per channel. For \texttt{RGB(A)-FLOAT} clipping can be switched off. What occurs with unclipped pixels later, depends on further destinations in the internal video processing pipeline. Moreover, displaying drivers handle unclipped colors differently. For example, an RGB pixel with unclipped red component\texttt{ R=-1.0} and two other components \texttt{G=B=0.0} is displayed as black (i.e. with \textit{R} clipped to zero) by the OpenGL driver, but as red (i.e. taken with opposite sign, \textit{R=1.0}) by the X11 driver. Explicit clipping in the plugin eliminates such driver dependency. + \item[Chroma key or substitution color:] Even after (optional) clipping, there can still remain some non-finite results, like NaN. These results are bad and should be eliminated as soon as possible. If any of color components, or alpha channel, is NaN, the complete pixel (all components) is replaced with the configured color and the configured opacity. +\textit{Substitution color} is passed as additional arguments to user functions and can be used for artistic purposes, such as chroma keying. + \item[Select key color...] This button opens \textit{color selection} dialog to select the color which will be used as substitution for NaNs or infinities in the results. + \item[Get from color picker] Use this button to copy the color selected earlier in the color picker tool of the \CGG{} Compositor window. + \item[Substitution opacity:] The slider sets the opacity (\textit{alpha-channel}) value to be used together with substitution color. Substitution color and opacity are passed as additional arguments to user functions and can be used there for artistic purposes, such as chroma keying. +\end{description} + + +\subsubsection*{Processed Tracks arrangement} +\label{ssub:processed_tracks} + +\begin{description} + \item[Track order:] If the plugin is attached to N tracks, its user functions get pixels of the tracks numbered from 0 to N-1. This defines which of the tracks is to be the first (that is number 0), either \textit{top} or \textit{bottom}, much like in the \textit{Overlay} plugin. + \item[Output track:] This defines into which track (\textit{top} or \textit{bottom}) the result will be placed, similar to the Overlay plugin. This control applies to \textit{Blend Algebra} only. + \item[Hide input tracks, use output exclusively] If this checkbox is \texttt{ON} (the default), frames of the tracks the plugin is attached to are cleared and then replaced by the function result. If the checkbox is \texttt{OFF}, only the output track frame is replaced by the result; all the other tracks are left unchanged. By comparison, the Overlay plugin has no such option and its input tracks are always cleared as in the "on" state. This control applies to the \textit{Blend Algebra} plugin only. +\end{description} + +All the parameters are keyframable, including user functions themselves. That is, a plugin can have several functions attached at the same time and switch between them while rendering. The color and alpha channels of the substitution (key) color are interpolated between keyframes; the other parameters are switched. + +\subsubsection*{User library, System library and Project directories} +\label{ssub:user_library} + +The user library directory is that defined by the environment variable \texttt{\$CIN\_USERLI}B, or, if \texttt{CIN\_USERLIB} is not defined, \texttt{\$HOME/.bcast5lib} as a fallback default. The functions for Blend Algebra reside there in the subdirectory \texttt{dlfcn/ba} and for Blend Program in \texttt{dlfcn/bp} (\textit{dlfcn} stands for \textit{dynamic loaded function}). Having user functions in such a library in a single place makes it convenient to reuse the same functions in different projects. The \texttt{Copy to userlib} button in the \texttt{Attach...} file selection dialog is handy to save such functions in the user library for future use. + +The reason to define user library \texttt{\$HOME/.bcast5lib} by default (and not \texttt{\$HOME/.bcast5}) is the following. There is a common workaround: if a newer version of \CGG{} does not start, to delete \texttt{\$HOME/.bcast5} completely. Doing so, all user functions would be deleted if they were saved there. + +The system library is defined by the environment variable \texttt{\$CIN\_DAT}, the \CGG{} installation path, and under the same subdirectories \texttt{dlfcn/ba} or \texttt{dlfcn/bp}. System library is meant for functions distributed with \CGG{}. + +When a complete project is to be exported, or fed to a render farm, it is often necessary to place all the resources under the same directory where the project \texttt{.xml} file resides. If some functions are used which reside elsewhere (for example, in a user library), they could not be found after exporting the project to another computer. The \texttt{Copy to project} button in the\texttt{ Attach...} file selection dialog is used to copy such functions to the project directory in a convenient manner. + + +\subsubsection*{Syntax of Blend Algebra / Blend Program functions} +\label{ssub:syntax_blend} + +Blend Algebra/Blend Program functions are written in C, and with usage of a set of special cpp macros hiding from the user all the Cinelerra internals. This approach makes it easy to write functions of moderate complexity with almost no background in C programming. All macros defined for user functions are written in capital letters. A typical Blend Algebra function consists of the following logical blocks. + +\begin{lstlisting}[style=sh] + + + BLEND_ALGEBRA_INIT + + + + BLEND_ALGEBRA_PROC + + + + BLEND_ALGEBRA_END +\end{lstlisting} + +The macro \texttt{BLEND\_ALGEBRA\_STOP} terminates execution of the \texttt{INIT} or \texttt{PROC} phase immediately and returns to the calling plugin. + +The structure of a Blend Program function is the same, only the word \texttt{ALGEBRA} in all macros must be changed to \texttt{PROGRAM}, here and below. The following macros can be used in the \text{INIT} phase: + +\begin{lstlisting}[style=sh] + COLORSPACE_RGB + COLORSPACE_YUV + COLORSPACE_HSV +\end{lstlisting} + + +Declare the working color space inside the user function. If there is no such declaration, the native color space of the project (RGB or YUV) will be used. + +\texttt{REQUIRE\_TRACKS()} + +Declares the minimum required number of tracks the function uses. If the effect is attached to more tracks, it is OK. If there are less tracks, it is an error and the function is not executed. The absence of such declaration means that the function can process any number of tracks (one or more). + +\texttt{PARALLEL\_SAFE} + +This declaration means that it is safe to execute the function in parallel. Without this statement the function will be executed sequentially, independent of the state of the \textit{parallelization} checkbox in the plugin GUI. + +The following special variables (macros) can be used for queries: + +\texttt{PARALLEL\_REQUEST} + +1 == parallelization requested in the GUI \\ +0 == parallelization switched off + +\texttt{TOTAL\_TRACKS} + +The actual number of tracks passed to the function. + +\texttt{HAS\_ALPHA} + +1 == the project color space has alpha channel (transparency) + +\texttt{WIDTH, HEIGHT} + +The dimensions of processed frames, in numbers of pixels. + +The following variables (macros) can be used in the PROC phase. + +\texttt{TOTAL\_TRACKS, HAS\_ALPHA, WIDTH, HEIGHT} can be used as well. + +\begin{lstlisting}[style=sh] + R(i), G(i), B(i) + Y(i), U(i), V(i) + H(i), S(i), V(i) + A(i) +\end{lstlisting} +Color (and alpha) components of pixel from i-th track. Tracks numbering is \textit{0-based}, as standartized for C arrays. Although it could be possible to write macros for 1-based indexing, it is not a good idea as it would lead to confusion with standard array definitions and regular C for-loops. So, the first track has number 0, the last one - number TOTAL\_TRACKS-1. All the color components are floating point values of the C type 'float'. + +Here the letters R, G, B, H, S, V, etc. are for readability. If the user has declared \texttt{COLORSPACE\_RGB}, and then written something like H(i), it does not mean that he should get the H-component of color autoconverted to the HSV color space. Actually R, Y, H are mutually identical to the 1-st color component, so are G, U, S to the 2-nd, and B, V to the 3-rd one. + +\begin{lstlisting}[style=sh] + KEY_R, KEY_G, KEY_B + KEY_Y, KEY_U, KEY_V + KEY_H, KEY_S, KEY_V + KEY_A +\end{lstlisting} + +Corresponding color components of the key (substitution) color, in the working color space of the function, and the opacity slider. + +\begin{lstlisting}[style=sh] + R_OUT, G_OUT, B_OUT + Y_OUT, U_OUT, V_OUT + H_OUT, S_OUT, V_OUT + A_OUT +\end{lstlisting} + +Color components for the result, for Blend Algebra only. Blend Programs return no result, and do not have such definitions. + +\begin{lstlisting}[style=sh] + PIX_X, PIX_Y +\end{lstlisting} + +Integer X and Y coordinates of the current pixel in its frame, in the ranges of [0 .. WIDTH] and [0 .. HEIGHT], respectively. + +\begin{lstlisting}[style=sh] + CLIP_RGB(i) + CLIP_YUV(i) + CLIP_HSV(i) + CLIP_RGBA(i) + CLIP_YUVA(i) + CLIP_HSVA(i) + CLIP_A(i) +\end{lstlisting} + +These macros clip color components of the i-th track to the bounds appropriate in the respective color space. + +\begin{lstlisting}[style=sh] + CLIP_RGB_ALL + CLIP_YUV_ALL + CLIP_HSV_ALL +\end{lstlisting} + +Clip all color components (including alpha) for all tracks. + +\begin{lstlisting}[style=sh] + CLIP_RGB_OUT + CLIP_YUV_OUT + CLIP_HSV_OUT + CLIP_RGBA_OUT + CLIP_YUVA_OUT + CLIP_HSVA_OUT + CLIP_A_OUT +\end{lstlisting} + +Like clipping track color components, but for the result of a Blend Algebra function. Not relevant for Blend Programs. Clipping is done according to the inherent bounds of the respective color space, as follows: + +\begin{lstlisting}[style=sh] + RGB: [0.0 .. 1.0] for R, G, B + YUV: [0.0 .. 1.0] for Y, [-0.5 .. +0.5] for U, V + HSV: [0.0 .. 360.0] for H, [0.0 .. 1.0] for S, V + Transparency: [0.0 .. 1.0] for Alpha +\end{lstlisting} + +\texttt{H} color channel of HSV is brought into range by repeated rotation around 360 degrees, all the others by simple clipping. + +\texttt{ABS(x), SQR(x), MAX(x,y), MIN(x,y)} absolute value, square, max and min values for floating point arguments. Can be used in any phase of a function. + +\texttt{TO\_RAD(x), TO\_DEG(x)} conversion from degrees to radians and vice versa. + +\begin{lstlisting}[style=sh] + CLIP(x,y,z) + CLAMP(x,y,z) +\end{lstlisting} + +Both macros clip the 'x' argument to bounds between y and z. CLIP returns value leaving x unchanged. CLAMP assigns that value to x. + +All the macros are defined in the text header \texttt{\$CIN\_DAT/dlfcn/BlendAlgebraStart} for Blend Algebra and the analogous header \texttt{BlendProgramStart} for Blend Program in the same \texttt{dlfcn} subdirectory of the Cinelerra installation directory. These headers are prepended to the user functions during compilation. The user with a basic C knowledge can easily understand what happens in these headers. + +Of course, you can use any valid C statements inside user functions. As they are linked with \texttt{-lm}, the standard C math library, and of course with glibc, almost any mathematical or C library function can be called. C-style comments can also be used, and are welcome. + +\subsubsection*{The compilation script} +\label{ssub:compliation_script} + +Compilation of Blend Algebra and Blend Program functions is carried out by a Perl script \texttt{BlendAlgebraCompile.pl} and \texttt{BlendProgramCompile.pl}. Both scripts are distributed in the \texttt{dlfcn} subdirectory of \texttt{\$CIN\_DAT}, the Cinelerra installation directory. Like the famous \texttt{ContextManual.pl} script of Context Help, the system script at the first call is copied into \texttt{\$CIN\_CONFIG (\$HOME/.bcast5)} where it can be edited by the user and adapted according to your needs. + +While a regular compilation, the script works in that directory where the function source file resides. First, the \texttt{BlendAlgebraStart (BlendProgramStart)} header is prepended to the source to produce an intermediate file with the \texttt{.c} suffix. This C source is compiled by the system C compiler (gcc by default) and linked with \texttt{-lm} to produce the shared object ready for dynamic loading (attaching to the plugin). + +Usually the script is executed by the respective \CGG{} plugin when a user function is to be compiled. But the script can also be run by the user explicitly. Execution can be controlled by options starting with the '-' character, the first argument not starting with '-' being the function name to compile. The following options are recognized: + + -compile don't check modification time, compile unconditional \newline + -cfile don't remove intermediate .c fil \newline + -opt add optimizing options to compiler command line \newline + -debug add debugging options to compiler command line \newline + -warn add warning options to compiler command line \newline + -edit open function source in text editor \newline + -verbose verbose execution \newline + -noapi don't copy itself to \texttt{\$HOME/.bcast5} \newline + -h, -help, -? print short help and current configuration \newline + +In the beginning of the script some variables can be redefined according to the user's needs: the C compiler executable, compiler options for optimization or debugging, text editor executable. + +\subsubsection*{Environment variables influencing plugin configuration} +\label{ssub:environment_variabiles} + +The following environment variables are taken into account in various places in Blend Algebra / Blend Program. + +\texttt{\$CIN\_CC}: C compiler executable (default: gcc) + +\texttt{\$CC}: C compiler executable if \texttt{\$CIN\_CC} is not defined (default: gcc) + +\texttt{\$CIN\_EDITOR}: text editor (default: emacs) + +\texttt{\$CIN\_DAT} (set by Cinelerra binary): Cinelerra installation directory. The Blend Algebra / Blend Program system library with scripts, headers, and functions distributed with Cinelerra resides in the subdirectory \texttt{\$CIN\_DAT/dlfcn}. + +\texttt{\$CIN\_CC}\$CIN\_CONFIG (set by Cinelerra binary): user's config directory, usually \\ \texttt{\$CIN\_CC}\$HOME/.bcast5 + +\texttt{\$CIN\_USERLIB}: user's library (default: \texttt{\$HOME/.bcast5lib}). User's functions reside in the subdirectory \texttt{\$CIN\_USERLIB/dlfcn}. + +\subsubsection*{What comes in the plugins} +\label{ssub:what_comes_plugins} + +In the distribution 30 Blend Algebra functions are provided for all the 30 \CGG{} overlay modes according to the formula defined in CinelerraGG manual. In principle, they are not needed as the built in overlayer engine is OpenGL accelerated and runs faster. Nevertheless, these functions can be handy as starting examples for users who may like to modify the formula in some way. Furthermore, their behavior differs from that of the standard overlayer in several aspects: + +\begin{itemize} + \item Overlayer produces different results in RGB and YUV color spaces, Blend Algebra yields identical results independently of color space of the project. + \item In RGB(A) FLOAT color space overlayer results can get out of range, and then be rendered differently depending on the display driver used. In Blend Algebra clipping, when switched on, can prevent this undesirable effect. + \item Overlayer always clears its input frames. In Blend Algebra the user has a choice, either to clear them, or to leave them intact. +\end{itemize} + +There are several example functions from totally different areas of application: a user programmable plugin is a really universal toy and can be handy even in unexpected cases. Even a programmer can sometimes make use of this plugin when creating new effects. You one can more quickly test different combinations without spending time to restart \CGG{}, recompile it, reload project, and reattach plugins, etc. + +Also, there is the \texttt{ydiff.ba} function, actually representing the complete \textit{ydiff} application running inside a plugin. See the examples \ref{https://cinelerra-gg.org/download/testing/BlendPluginExamples/Examples.txt}{here}. In addition, there is a Transition example, +and 2 more function examples showing use of the Blend Programs: the \texttt{chromakey.bp} and \texttt{background.bp} functions. They too serve as excellent starting points for further user's experimentations. The usage of the provided functions is either self evident, or briefly +described in the comments of their source files. + +\texttt{make install} copies the functions into Cinelerra's bin directory in source (\texttt{*.ba, *.bp}) and binary (\texttt{*.so}) forms by \texttt{cp -a}, to preserve modification times of the files. Otherwise, if modification time of the function source accidentally becomes newer than that of its binary, the plugin will repeatedly try to recompile the function. If they are installed system-wide, so that the user has no permission to modify them, such recompilations will fail. + + +\subsubsection*{Caveats} +\label{ssub:caveats} + +User's functions can have bugs. + +Most probable bugs in a user function can be illegal arithmetic such as division by zero or logarithm of a negative number (FPE, floating exception), and out of bounds indexation of arrays (usually leading to SEGV). + +Most modern processors don't generate FPE. Instead, they generate NaN as the result of an illegal arithmetics. After calling user functions the plugins test the results not to be NaN and replace them with the configured substitution color if necessary. + +SEGV is more problematic. If the user has written in his function, let's say, \texttt{REQUIRE \_TRACKS(2)}, and then accessed \texttt{R(1000000}), most probably Cinelerra binary will crash. Although theoretically it could be possible to trap SEGV via \texttt{sigaction()/setjmp() /longjmp()}, in Cinelerra it is problematic. In a multithreaded application, which Cinelerra is, only one signal handler for all its threads in the same time is allowed, and Cinelerra has already its SEGV handler which we are not allowed to overwrite. Thus, the user is responsible for his indexation bugs, where most attention has to be paid, as usually, to the off-by-one errors, like referencing elements like \texttt{R(TOTAL\_TRACKS)} (the last legal element being \texttt{R(TOTAL\_TRACKS-1)}), or \texttt{R(i)} where i has been decremented to -1. + +The user is allowed to call any C function from the -lm and glibc libraries. But some functions are not thread safe (which means, \texttt{PARALLEL\_SAFE} macro should not be used), and some others have undesired side effects. For example, should the user write inside his function something like \texttt{exit(R(0));}, the whole Cinelerra would immediately halt. The user is left to imagine what would happen after the following expression, for example: + +\texttt{R\_OUT = R (system ("killall -9 X"));} + +\subsubsection*{Hardware acceleration} +\label{ssub:hardware_acceleration} + +Blend Algebra / Blend Program functions are not accelerated. Hardware acceleration would mean, the function algorithm is to be programmed as an OpenGL shader. + +However, functions can be parallelized (using the load balancing engine of Cinelerra), and can be compiled with optimization (switched on by default). The default optimizing option (defined in \texttt{BlendAlgebraCompile.pl} and \texttt{BlendProgramCompile.pl}) is \texttt{-O2}. One can redefine it to \texttt{-O3} or \texttt{0fast}, for example. However, it has to be noted that using \texttt{0fast} or \texttt{-ffast-math} options can lead to ignoring some IEEE rules for floating point math, namely, some intrinsic tests on infinities or NaN can yield unpredicted results. + +\subsubsection*{Debugging} +\label{ssub:debugging_blend} + +Although user's function can be compiled with debugging option such as \texttt{-g} or \texttt{-ggdb}, debugging functions can be tricky. The programmer can set breakpoint into the function only after its code has been loaded in memory by the plugin, and set another breakpoint into plugin only after that plugin itself has been attached to a track. Moreover, a function can get detached from memory under some conditions, and then its breakpoints will be lost. + +Debugging printout inside the \texttt{PROC} phase, although possible, would seem too verbose: the \texttt{PROC} phase would be called for full-HD footage 2073600 times per frame! Here perhaps one could make use of \texttt{PIX\_X, PIX\_Y} coordinates at some selected place like in an example: + +\texttt{if (PIX\_X == 320 \&\& PIX\_Y == 200) } +% printf ("%f %f %f\n", R(0), G(0), B(0));} + +\subsubsection*{Editing functions} +\label{ssub:editing_functions} + +Thus far, to edit user functions an external editor has to be used. Although it would be possible to implement editing directly in Cinelerra via some multiline scrollable text field, this could hardly present features comparable with a dedicated text editor. + +\subsubsection*{Portability} +\label{ssub:portability} + +The current implementation should be rather portable. One prerequisite is a working C compiler. That compiler which was used to build Cinelerra itself, will work by definition. But other compilers perhaps are compatible as well. I tested at least functions which were compiled with clang, attached to Cinelerra compiled with gcc, they worked. + +If the user has built Cinelerra from sources, he definitely has a working C compiler. But if one has installed the binary distribution, then the compiler clearly is a prerequisite. + +It is not known at this time if Blend Algebra / Blend Program work under Cinelerra in an \textit{AppImage} form. +Other architectures are still to be tested. If some other architecture is Unix-like, and is ELF based, it should be portable. But in the case of Windows it is not portable. + +\subsubsection*{Blend Algebra / Blend Program workflow} +\label{ssub:ba_bp_workflow} + +As in any realtime plugin, the \texttt{process\_buffer()} method in Blend Algebra / Blend Program gets a set of frames from the tracks the plugin is attached to. Then the following events take place. As in any other plugin, it is checked if the configuration (the parameters) got changed. There is one parameter which requires special treatment, the \textit{user function name}. + +In order to prevent from resource consuming recompilation of the functions on each new frame, the plugin maintains in memory cache of the successfully compiled and attached functions. If at some keyframe the function name gets changed, the plugin searches if this function is already known and cached. Among other important function related objects, such as entry points, there is a timestamp, when this function was last checked to be up to date. + +If the current function name is empty, it means a function is not used. Nothing else has to be done, all tracks are fetched and passed further in the processing pipeline unchanged. If the function is not empty and seen for the first time, or its timestamp is older than the global timestamp, it is checked as follows. + +\begin{enumerate} +\item File lock is placed on the function source file, to prevent from concurrent modification of object files in case of several simultaneous compilations. +\item The compilation script \texttt{BlendAlgebraCompile.pl} (texttt{BlendProgramCompile.pl}) is started. The script checks if the resulting shared object file exists and is newer than the source, and recompiles it, if not (just like the well known `make' program). +\item The plugin checks if the shared object timestamp became newer than the timestamp of this function in cache (if any). If the cached version of the function in memory is up to date, it stays there. If not, the outdated function is detached from the plugin, the updated one is reattached, its entry points are fetched and memorized in cache. The function's timestamp in cache is set to the current time (as the function just has been checked). +\end{enumerate} + +While recompilation and dynamic linking various things may go wrong. +\begin{enumerate} +\item If the given function file does not exist, the program does nothing, as for empty function. No error message is shown in this case, to prevent possible deadlocking situations. This case is not very probable because usually the user will select functions via the \texttt{Attach...} dialog and clearly see if the chosen function exists. +\item If recompilation was unsuccessful (because of a syntax error), the error message is shown. More detailed diagnostics from the compiler can be seen in the terminal window in which \CGG{} was started. Although it would be possible to fetch the compiler output and show it together with error message, modern compilers, like gcc, bring more descriptive coloured diagnostics, better than we can show in a \CGG{} dialog. +\item If compilation succeeded, but dynamic linking did not, error message is shown. In case of any error, the failed function is marked with the current timestamp in cache, so that such error messages appear only once before global timestamp gets updated. +\end{enumerate} + +Updating global timestamp forces all cached functions to be checked for recompilation at their first access. The global timestamp itself is updated by the following events: changing function name, pressing \texttt{Edit...} or \texttt{Refresh} button, exiting the \texttt{Attach...} dialog with the \texttt{OK} button. + +If currently active function is ensured to be up to date and correctly attached, the plugin fetches video frames from all the affected tracks, with the important parameters like frame width and height. Then the \texttt{INIT} phase of the function is executed (once for each frame). Here, several important parameters are requested, which are defined by the function. They are: + +\begin{itemize} + \item Working color space needed inside the function. If it is not the same as the color space of the project, then color space conversions have to be done. + \item The required number of tracks the function works on. If less than the required number of tracks is available, error message is shown and the function is not executed. + \item Whether the function supports parallelizing or not. If the function does not claim parallelizing support, it will be executed sequentially independently on the corresponding checkbox in the plugin GUI. +\end{itemize} + +After this preparation phase, the processing itself takes place. In case of sequential flow, the following is done, for each frame pixel individually. + +For each input track, the corresponding pixel is splitted to color components according to the actual color space of the project. All color components are converted to float (type of the C language) in the ranges $[0.0 .. 1.0]$ for R, G, B, A, Y or $[-0.5 .. +0.5]$ for U, V. If the project color space has no alpha channel, the alpha component is set to A=1.0. + +If the function requires other color space than the project uses, the necessary conversions are performed. The key color components (selected in the plugin GUI) are also converted to the function color space in the same manner. + +For Blend Algebra, the values for output are preinitialized from that track which the output is to go to. All the other tracks are cleared if the corresponding checkbox in the plugin GUI says to do so. For Blend Program, this step is not needed. + +The user function is called with the parameters: actual \textit{number of tracks}, \textit{4 arrays for the 4 color components} (dimensions are equal to number of tracks), \textit{4 key color components}, current pixel coordinates \textit{(x, y)} (upper left frame corner is (0,0), lower right is (width-1,height-1), \textit{width and height}. For Blend Algebra, \textit{placeholders} for the result additionally. + +The user function returns. First of all, the color components of the relevant pixels are clipped to range if the corresponding checkbox in the plugin GUI is on. Relevant for Blend Program are pixels of all the tracks (all tracks can be modified), for Blend Algebra the result only. + +After optional clipping, the color components are checked for not being NaNs. +If so, the pixel is replaced with substitution color, then backconversion to the project color space is performed. + +If the project has no alpha channel, but the function returned something not equal to 1.0, alpha channel is simulated as if an opaque black background were used. + +If the project color space is not FLOAT, unconditional clipping followed by 8-bit transformation takes place. + +For Blend Algebra, the result is placed to the right output track. For Blend Program, this step is unnecessary, all tracks are modified in place. + +Then the loop is repeated for the next pixel in a row, next row in a frame, next frame in the whole sequence... + +If the function is to be run parallelized, the necessary number of threads is created (as defined in \texttt{Settings $\rightarrow$ Preferences $\rightarrow$ Performance; Project SMP cpus}). Although it might seem that running parallel on 1 cpu be the same as running sequential, strictly speaking it is not the case. To run parallel on 1 cpu, an extra processing thread is still created, while sequential execution takes place inside the main plugin thread. This could induce some subtle differences if the function uses static variables inside or something else which is thread unsafe. + \subsection{Blue Banana}% \label{sub:blue_banana} \index{blue banana} -- 2.26.2