From 618f6ffd5ce0bb5c2df4c4302a0b5859368e5de8 Mon Sep 17 00:00:00 2001 From: Marius Horga Date: Mon, 30 May 2016 15:12:48 +0300 Subject: [PATCH 1/2] Update MetalView.swift --- ch13/chapter13.playground/Sources/MetalView.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/ch13/chapter13.playground/Sources/MetalView.swift b/ch13/chapter13.playground/Sources/MetalView.swift index 37c8100..7120f0b 100755 --- a/ch13/chapter13.playground/Sources/MetalView.swift +++ b/ch13/chapter13.playground/Sources/MetalView.swift @@ -27,7 +27,6 @@ public class MetalView: MTKView, NSWindowDelegate { } override public func drawRect(dirtyRect: NSRect) { - super.drawRect(dirtyRect) if let drawable = currentDrawable { let commandBuffer = queue.commandBuffer() let commandEncoder = commandBuffer.computeCommandEncoder() From a4c93d757af6d187b078bebe1b6eb725a80d0669 Mon Sep 17 00:00:00 2001 From: Marius Horga Date: Thu, 2 Jun 2016 01:29:16 +0300 Subject: [PATCH 2/2] added chapter 14 --- README.md | 3 +- ch14/chapter14.playground/Contents.swift | 8 ++ .../Resources/Shaders.metal | 49 ++++++++++++ .../Resources/surface.png | Bin 0 -> 43006 bytes .../Sources/MetalView.swift | 70 ++++++++++++++++++ .../contents.xcplayground | 4 + .../contents.xcworkspacedata | 7 ++ .../UserInterfaceState.xcuserstate | Bin 0 -> 21322 bytes ch14/chapter14.playground/timeline.xctimeline | 6 ++ 9 files changed, 146 insertions(+), 1 deletion(-) create mode 100644 ch14/chapter14.playground/Contents.swift create mode 100755 ch14/chapter14.playground/Resources/Shaders.metal create mode 100644 ch14/chapter14.playground/Resources/surface.png create mode 100755 ch14/chapter14.playground/Sources/MetalView.swift create mode 100644 ch14/chapter14.playground/contents.xcplayground create mode 100755 ch14/chapter14.playground/playground.xcworkspace/contents.xcworkspacedata create mode 100755 ch14/chapter14.playground/playground.xcworkspace/xcuserdata/marius.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 ch14/chapter14.playground/timeline.xctimeline diff --git a/README.md b/README.md index 4104d77..4bf80c5 100644 --- a/README.md +++ b/README.md @@ -14,4 +14,5 @@ Repository to accompany the following blog posts: - [Using MetalKit part 10](http://mhorga.org/2016/05/02/using-metalkit-part-10.html) - [Using MetalKit part 11](http://mhorga.org/2016/05/10/using-metalkit-part-11.html) - [Using MetalKit part 12](http://mhorga.org/2016/05/18/using-metalkit-part-12.html) -- [Using MetalKit part 13](http://mhorga.org/2016/05/25/using-metalkit-part-13.html) \ No newline at end of file +- [Using MetalKit part 13](http://mhorga.org/2016/05/25/using-metalkit-part-13.html) +- [Using MetalKit part 14](http://mhorga.org/2016/06/01/using-metalkit-part-14.html) \ No newline at end of file diff --git a/ch14/chapter14.playground/Contents.swift b/ch14/chapter14.playground/Contents.swift new file mode 100644 index 0000000..366d424 --- /dev/null +++ b/ch14/chapter14.playground/Contents.swift @@ -0,0 +1,8 @@ + +import Cocoa +import XCPlayground + +let device = MTLCreateSystemDefaultDevice()! +let frame = NSRect(x:0, y:0, width:400, height:400) +let view = MetalView(frame: frame, device: device) +XCPlaygroundPage.currentPage.liveView = view diff --git a/ch14/chapter14.playground/Resources/Shaders.metal b/ch14/chapter14.playground/Resources/Shaders.metal new file mode 100755 index 0000000..946c689 --- /dev/null +++ b/ch14/chapter14.playground/Resources/Shaders.metal @@ -0,0 +1,49 @@ + +#include + +using namespace metal; + +float random(float2 p) +{ + return fract(sin(dot(p, float2(15.79, 81.93)) * 45678.9123)); +} + +float noise(float2 p) +{ + float2 i = floor(p); + float2 f = fract(p); + f = f * f * (3.0 - 2.0 * f); + float bottom = mix(random(i + float2(0)), random(i + float2(1.0, 0.0)), f.x); + float top = mix(random(i + float2(0.0, 1.0)), random(i + float2(1)), f.x); + float t = mix(bottom, top, f.y); + return t; +} + +float fbm(float2 uv) +{ + float sum = 0; + float amp = 0.7; + for(int i = 0; i < 4; ++i) + { + sum += noise(uv) * amp; + uv += uv * 1.2; + amp *= 0.4; + } + return sum; +} + +kernel void compute(texture2d output [[texture(0)]], + constant float2 &mouse [[buffer(0)]], + constant float &timer [[buffer(1)]], + uint2 gid [[thread_position_in_grid]]) +{ + int width = output.get_width(); + int height = output.get_height(); + float2 uv = float2(gid) / float2(width, height); + uv = uv * 2.0 - 1.0; + float radius = 0.5; + float distance = length(uv) - radius; + uv = fmod(uv + float2(timer * 0.2, 0), float2(width, height)); + float t = fbm( uv * 3 ); + output.write(distance < 0 ? float4(float3(t), 1) : float4(0), gid); +} diff --git a/ch14/chapter14.playground/Resources/surface.png b/ch14/chapter14.playground/Resources/surface.png new file mode 100644 index 0000000000000000000000000000000000000000..ab6d6a2e2da2b1a5f316410359e988fd05affa84 GIT binary patch literal 43006 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

Ux*ROa4;Yki_k6= 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 WyH@IS+~F+%0000 + + + \ No newline at end of file diff --git a/ch14/chapter14.playground/playground.xcworkspace/contents.xcworkspacedata b/ch14/chapter14.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100755 index 0000000..919434a --- /dev/null +++ b/ch14/chapter14.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ch14/chapter14.playground/playground.xcworkspace/xcuserdata/marius.xcuserdatad/UserInterfaceState.xcuserstate b/ch14/chapter14.playground/playground.xcworkspace/xcuserdata/marius.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100755 index 0000000000000000000000000000000000000000..a9856822261d25930c0699cf4f4fafff5ecc34ab GIT binary patch literal 21322 zcmd6P2Ut^A|Nl965lDbA!Uzx$89`POl8`XMNN{f)h$D>YYPGdmZSBxH>mIGu)>i-L<`N)Q-_pMC^Y70*k0ke=^Eu!1J>PxKy#p)D zN^N$9;v|5803@IQ4H)JobE_a~xV6ewT2WpQRWa~IYmwd7C(2S)G`JLB?h$3LsPqMJ z;*t$MgePzV0^kSyfds??Ifw(TKs-nQi699igA||#T|igR4RiA{{$w!O zf{Y|vlJR5$nMkIPYBG&XC$q`6WIM7w*`3TMdyoUkBC?pYl7q++(oT*fN0H;mm&jMh z@#G|OGC7@`LB3ATCg+lGkqgPU$tC1!at*nbTt{vpw~^b)UF2?ZANdJ+nEZ@Oys;dQd$n3pJ1`qKYXiHHa#q22*ybni@`xphi-osL|9!Y7#Y>nnF#brcu+WdDMJr z0kx1?L9L`#QCq3^sBP4C>V0Yl^#Qe$Iz)X!9j1;@pHfGuW7KEVH`KS(chvXPS?V11 z19hIdMct)x(nTv?nZZ~2he8v1=>Onq>Jcc+DZ?jt7sc-rxDH4uh28;*XUXF+w>xOF}i84=^j zgfO8@7$aj6m_#OtNoFz`1CzyMGdWBjrav=)8ORhdCCp%^j2X%dW2%_p%m`)-GnPRN z%S>PZ*QNpiVqRw(o-8in4JXw)fl6V9xj>k#w$hUFXCQC{@%W`y8z*kKTkFy? zYgdbXaDV)hp99xX3c<`!O?AOqsaj>OeeAD43f+--T z7EA(@Q7aT*3#Ni;C;=rp*pqK9!x4_PxM3m9;)sHxiehUL=6#1!ds4%Vqs|Zn0O}uq0t& zDJ?I_E9ZDv%!_EloLum8t%EA6tPMSQG|t}Pk+89G+SY~!^^ne~t^limZw*+9G&Nu~ z(sCx8Bd(XFtlDbJv2k$Drt85*PEI$V)Eck}>5#lngH$`4Yz6Own5E!7unlZSdX$FJ zxgYq0e{dgp*WURR)m24STc7S$8~+Wf=G8nr_m8@2QvxbLDq zzkmm*4Qk7AoHKC^tIHXUmf4lr4vlio>v!;^X=ex^MD0-rtm3$9qp@k3J#lc;evpCg zF8w_4pq&~AZ7^ZHA#9c0(}r1+Jk(NET5U_l)^7+-9FiNB`On4+ieV^-Sp$8bFZ6@{ zPyz#BAPj=RPzpm(SJVx4NBO7+>WO-x-lzceL4|8z7?in^By0(zU^I-uiqseN zLzA)p4n|YaG_(SJi|+C&6=AXtvQ(GZyK?!B&5nh-yS1{)YQtYFoSnkHJD`CJov;xw zV=XE#wp3xg;cj$ou(&4c!0HlisvOri6V7uEYi%zMyP}-`onJk0D26HIe{qO~7y>&Z zUb(o~rSX=zjkO#z3!5~2xt`L7aX3rPjag!?YB1+`xw)a8*Ew?PR~c%c)0CJGI1{%=|NZzB9rL^36w+-w7e3!zuupMlV zENCDqS_(VjW$BEH@iI*0L^IB1ILFaH*6rG@(bM*I-s{=DqgfnSR53KkQdwDMO)9oOLxrl~NZ`8+ z+Mpd)!{KlQsz8-!7^*_HWpET64Wi*#I1brSHCBh=Xau(^L0zj#v67B*j?<%bsMTh- z46Vcg_*1v){f=?4rOJX`W>t4fd5N`u+tOldPFYzyn+=3SMX}p zyR_Io7|YvJcuu$F3fMAd=M%3nIk$Qja3)-((v54G9pkV>pcik{zl2lZR3L=Y;B+_x z&V;YQS@3nN3(hHYtSEA5^MFP+a>10N#ZWA>jhDH=7`xYzT?RS(Hr_)oqtWOUGzz_B z7AH4E1TM>Gs^H*~8e+zV0D%|CIh;VgiN;`og!ABhOmQ*Rh_?$H$LQ%89ZOp<8rSFo z9l;HJ2QJ}#d843Ve5@{xK3y%PRkg4N=>DRO-^)+eG^wn{UFCd6L(_wb*#!$k546=StMVbsVM7y2bb005_V&a%}co z_}e&hR~4&;n>e^;w>OJp8WxZX>3BtU5}DL!)la~8F_X5!m2ewe&gH8EEjDXk{I|+l zhDB<)6#+B>A)e+P@PnS6^Dzf&;SMe$#fdKbkX!OyXcF?mo}e)n(Wj>3%t@gb=Zr_- zUbv69&+cM)5*~t|z{9xv5%?)Q3Xhq^zEu?!cHS^^o}x47io}5>4*$SY&*g*Gk#_!0 zP$jR#f4YU{pt)!|T7C+C4v*sjzJMq2a4YdZr*WO?D^O5?%X($SRo3!el@|QJy>AhR zTW;qJ9u9Mza`L>D=vz@$>U5r%H*?T3G^43{o`K&u)bo2Z8_jfR)9XB=&T)+T0ln6! z8y7jYW^v1Aj8ID`IP~T;b@Ew7XmA=zq~IWICF);GXo*y`3av&s zf#8Y?T`O#*To4+WCHnNJvrh(*#r4U=an~ATt|hXG9JChg#~D)&m)Mo#g>W{_Bii8* zjA%`?A=;vKXg%7nlxPp~h>mC@R;s=KA3`vqI~Y_$jJULf5a(+bLJRJ%-ipWhuA>syc7sS*NH;G%sZQ>644tn-UUH8!s z=n9^}Z6q(~XdP5vdX-=c-H--1M*VJSLuy0G&q{ z&_#5q4%goDND4$@!3ai|anS%vTSzZlwcs*4TqL)S;8JW`cgqOAkYyH2UGLWCrujt` zj)=+SrlWgBl^vHqimFO0xmq+XB)BwjpmWidgKMM+sFpNn4(Uz$V4ZhVhDcxZV|`_a zl;GMe89)Z2tLR39sU@XkSknRxDI>$tHFO)j{WsaCpBa$*I0}0)sQ;$lcVvo z3({l;H>ph0fPO{~8Yh)Qnp`N%BU_{U=od^OmH^(+wai9h7YaL&on88LA-kf7=vPkZ zxq@WVa!JeVetTT{_9Xj)m}O)yvNu^k_8|+=BlJ7^13gAhmXZC){^S4{dhSw;>e%gG9|k{m`>vADwb5&D{i zBnxR4y0Ormg+dm3vd|lIx-sV=M{o+vLc%O=_xE$a`f_Y?C$0+0Nq&-TMCl-VQ~a?! zKJ}0A8_K-NuJzU?^yBoEqn|PRK)EyObP$oqSBMiaSFKfp@J8X^ib9j0GqtQTTmh-J zlvp$Q7@2Qo#PZ*<{zejxm#tOY66SNfXy+V0rk);-%b9;8&wdUeG4+!y9+ElKQdD6Z zsZ=B>mGxKcmZ}n~J#(Z^Yu2h09o3`6Cas#T&qSVo0<*Zy-(Ua6^|4huc$`#OUeXkO z8jtSr_fvwDrnRmn>phD{6#Wm@yXg@B>UuYakpIn|EMDUtC_}Tw}nS;U}0bl zxrv215NN9F@9}aF^gpyD^#i|8e!va9gN4!>awm)ThByv5YspS$>#RKTyWQj-9E_45 zu`m>Qoh0|;GAJ&F;<)c1IgvcXZ|yYjuPe6aovViqv{s>D7KX7*;Zql1Is7T!DbwjeTybXO~2s!PDpDB@nYg>`xvizaUSLC&@3# zQ{-v#EAngd4EYWA@!yf(lcnT2@(1!fd4ash!Uz^dvM`E;F)Wm`uoVjvSeV2@1q)Ry zR68O7Eemxl#OK=5SeU^=0}HcRn9B`wnY=>&NM0qck=Mx^s^K9F)t)7ni~!%ni!quS%fA+NRd2#OS9PcAKjTFVrh!q=*pa-hJ9qyK!y_V z$kENDT%r5V=={cUqhq5yd3>Cb|4quB0fLk6r$aExmq(8KuaW;mb0Ck5D|F2Z9$n1p zpE>>~{7@c0@gLzk`QljWX9lNK3mzZW|C&dCa~yS3X^i3Vm1c3?-;+ic+I!&LxjzNg zR6LKJ^3SpH1{t@7Z~HU0g2&c0lP|8a-az~F@ijbt>VJp-+@ym_ZpL|L079KG7x~JM(X2H$#!y@z`0-WH`2J(27W$| zZ#0Wr|FZ?{Y#kA;QnbdoSG~0Jp#{~8!pVOf)tf4y`cT-n<*~3e3)`@;Z5`E*>JOqR zGYi|X_=JO$g&iDu|5IDq|LyL1v$x1kUz6FhCVS=ft(z3V8JdWD}r0So*5>k~LJH0s>k!Hx-}=v569 zm_f~c?h3p?&B5|CmxX;<*pHK^{z#6a%<1QKCvMAmR-~xM^~M!odN@HabsEnF*YSq4_-GHF%gBFqF26wUcP|?Gby4YbcrvQg6c-D0fx-tH zpJRcpQrGZgZm@7P3&(Ji8OzK6J<714w(pn}HQs(wYLp6&M=B*&f<_+QqaJXuKT$tZ z_o-i4_!0}TbwDg+>!^p+uNd|berkt><2hJ-itB%W$f?<8dZwz+t%Zes$EZ@&j_D|| z^roa}n#_i#X%B8T&$4o~kQVVOJ&}cz8dUm3$;p8ITMNf%9j0HG;#36Mj}F36^}Ars zJ+Py7bTBOi(R3&aak+Xb$CPOfUO$=J=e42=egRVyT1;9h2id@AI+BikE@^T)4r9i% za0Ux!a+t3X$=csXW?uXzQMvdb#yAN z!=Py_e3ON9IncNM)zzE!Moer{Y=iAAz#Mm3IuqUQnfz`~cfixY{&qeK7jV;9SkLd9 z3-npoXDhL6tCV_0Wei7A|7pVivx`!XVelb1+?#n!-V*I*xMJTYI{i9?d~MD@dcq&|`UhS;fND4f=BW+Uw|4hyzit zZ`79Y^kfd`S*DhrLQmy^*0OM21JEzfeSvHkFWgG(ot-4TPS53#o)u})Z_)F3BwQ)m z*nl+sO8cCnmAxH4P2Yg?4!s;dEI==zYv@{fDY1pdoY~C6cUkxz3%7GSI6IcpE9jN< zDta}&hQ_q*WZ^y*e$2wpSa^bkr(NnR^d>$~-hv-(`CEZ$D=k#%apDd$K(qFQ0Hw*W0PnNL|2P%6x{cT|?wbh>@F0+i{jzi<; zH7sR#bFUcZLin&c-Z6acp;{c^&CG~(SKi?DMV*2V%jP1-j%L9ajXI^NY5AVMh_^O* zd8g021Q+{pe6ftaL|?|Dicbi$@BoVsxAA9$IrsUzGrf5DU!ebloxL2xb7ys(thr5N zAH9OUL-nTb;dH8y>O*5seaMkhed0)~+B!0;!z<{A^sjI%{Roc3Tk%mWJi@}G2uC=_ za8e@W_T&3-8)~g9%8LIJBbvjP+eQyMRgbKH#MFYq0)G1F+2&VF2bMY;!m zq7K)U83E&tH;fw|XyVWNF2$EU98b>izcJHKUwdQsB_q%Dl!okp@nZbB6?TLYjIT?| z^f}I&mN610z`4T5S@=csRv5eVzEk)9X|Ql68V~l&BR5P86U&Xm-~u#`VZY?YVd1HI zC-|^uSepiUX*l9iFF1^X!QsI&J~3g`E~&{^I6GO!q%t^0z}V?5#0K#UkNu6q6aEJ= z<&p?p!SjdBWjcYF)r^rbF?mdDrVZ1UX~(o@Ixrns_#F$+vhW8MUSQ!R7G7cDRTf@n z;Y}9aUd?o7x-eatZcKM3pXtH$WO^~!ZQo@f7Iz$mK4uBP5(G=oEaAoy0+tZE*l4C7 zZ->5bZn324V}H#k#xNEh|6FtNo7&yx;1A;Q&o>vpsU2+&{tzDjVsnqBH}yZsO$}IlUi|D_gyW0TsLf**av1ZO1uT5P!iTlY+YFBEe`O(l()}rn z2|w0jOls?bQOB%!3S%XM!`$Cl_y_mg>?D4~mf5fJUz|g)XEyz*8!qkOZcn&wuS|9s zWE->Nsn#E0LJ8;~6dxaRGzL!WJROcLoJ$w|pK41U+)EoG96AP%fsm0U*{33~~xI*z8^*i+#zc_-xFO6Vm2_1+N z^bk4>zc``=-I9*RX>kEPpFTuiV;H6dla5_d8|;iaVDDnauWG1ds+pJYYZ(^fmod~b zbRC9@j8j$u8sk=e%_z%OI?ggL?-Wj@0%WH`Zm$(&~HxRGw&Zdq>K-B`CdZcE)Z zxovTK*X@YgS8m_9edl)0?Y!GXw}%2KU<3kzhd?9<7RUqQTf?0yuf;oakg5`p(f}Mf`f^P)p1-Au13w{wi6#OB0;tt(O z_dxeF_x|oLx{q)lV#lz--JjQ!W@R;l|)nmHHT#uz5t3B3wtoPXHvCZRsj}JUP^w{mO z$K#O47ao^9?s?qzc;NAy$L}7Gg+ig1P%QKlN`!&JC}FHHPM9D}5-Nn5!fau#Fi+S< z*iP76SS&0NmI}*+<-$tgIN?jemxZiwrto#)8^XE5dBO$4rNY(1wZiqnjl#{s-NOCC zgTh0?qr%UG$Au?^mxZ^5zl)%V6wx9Nkx1kv5{qP_Sdm(!7p03bMY$rAsI{oAsIO?U z=uOdD(R$HF(Pq)RqW47GMLR@0MY}|MM0-VFi@p(kCps(oL3BZMNpwYYRdii+Q*>K& z*VErK(X+K@56>Z?+tPrPEi)LyAx zdan#GgIBg!o>zCTK3;vj`g@tZ26+wkdeN)QtK4gW*JiK7UMIXxd41(|#_NjLFJ2G5 ze)Ia>>#;ZRCcG(cKW~Y5pm(r$hFZ15yeZ>1K?+f0S zysvm)^}g$b(r3KS6rX86Gkjk2neS8U^O4U%pG!Wsd>;9_`TF?! z`AU2PeLMR0^c~_`={wQ)HQyb+yM3?u`T0fo$^F!RT0fm%nxE0HonL3a-hPFC{rm>_ zRr|f-H{S16zlna6{HFLV@Y~?`iQh%P%YHxlUGux)Py2iMOZ;2-oBX@_clYn%-^;(i zf2ef3^Pzf8;;je}exc|2h71{pa~F@UQb<=fA^$r~fYhJ^uG4UJ|jySK==T zkc3O3Bry`Xq?N=d$&<8^w3Bp@^pNzH^pW(H*d@ayBPF9HV2nYxYkOo8tv=7J+cp+e5KykpJ zfVzNn0q+Hz3%C^M9T*g72s8$k1`ZD#6F4sL<-k`1Ck9RqoEkVUa8cmuzzu<$0=EQi z58M&BGjLbnp};Q#zYY98@Lb^ez^j4R18)Z24!j!_7NiO46x1uIPf*{W{y{GWjS3nQ zG%o1nAU0@x(1f5#L34xV1uY1AJ7{sxlAzk4x}fDjTY`26oe8=X>=7&vRtL8a?j2kZ z+$XqiaAj~+uswKq@W|lN!Q+D`2Tu*29y~L6VesPMCBaLBmj$l~em8hq@cY3#gLeh* z3H~JbR`8?XKZ2h~q0~d_DfO26Naa$EG(&2TW=nIW?W7%~oupl)-K2%m{!+8lA}yDW zlfEovrQ@X&q?4pmq|>Aeq;E?XOP5G%rFGKf(v{NH(*4ro(r=~TOV3HqOD{?f{KC?qSSQ^??uSt0X7YD3n9>6&;?@*smztFJI)}i^KJwtnk_6Z#rY7H$3Ee%DXGeYNv&I?@-`gZ8z z&=sMpLf3?@3*8X9DRf8Z7op#UUJ3m<^pDUdVK9sgqr<$y#9_W+{$T-OL1Egk{IKC+ zuZ7JEn;*6?Y-QM*uytV@!#0P#8}?z?-mv{)2g449eHnHp?Ax&K!!Cqf3cC_^HSAv4 zBbh+vDf5>3$O2?RGN~+779&fRWyrE*IWm*1wXChIpR80?CM%Z>li6g|vMI9JvbSXO zWea7CWUFNxWSeALWZPvsWIJWMWQSzOW#7v#$S%pQ$Zp7P$?nMRg;U|4;nMKv@YwLU z@c8h=@Z|8c@XYY+aASC0c-!#y;nwgG;d8>*gdYh%8GbeVM)s&qMx2WHD&m_+w@ClUfXJZ8kVtD}Rir&~ zc;u+aZISyU4@Mq}Jks((6cxop38I8i?V@@`6+{(A^^cwsJv;i%=(nQhM=y_F7rilh zOZ0ouA4czq-WPo^`cU-67|$4Oj4`HlOuLwlFT|P#U{jRVhyqVV~b*VQjgFHuWlDCn!mv@qPmFLTQ z$@|Fr$<6YCa;to>e2BbUK1^@qY1=_@MaW z_+jz3`0DtP@q6Nr#(x%nJpN=tXhK{Z}(nrZ2 z$$`lc$t{y(lH-ySk~PV?q=i` zgtD!&o3c<@qO4Tfl*5&ylw*|>l#`XylrxmGl(Ur!m37Ls%J-Ffl?RlElt+}ul&6(v zl;0`ODt}O3P~K49R}m_q%1h;=@>d0_B2+C^F)Fz#UX`e7tEy0qQ!P`iS8Z2)q&lWL ztvaLnPIXRoL3KlQTXj$Mv+9BB*A)Mh^ptif!%{}4j8B=7vLIz?%JP&|DQisy|nsP=BjFt3I#3sJ^1Us-ZOT8okD%c~LW5^Ri~T=1t8!%|gv$O^s%? zW}RlEX0zs9&3l^Nn!}pYnsb`-nv0stnjbZHH9u<}XnxiFu6e9=)B0$o+E}eZo1)cf z_1X+=p0=&FgSL~ltG2tguhy!q(2mtk&`#D))6Uesu3eyAq+Oz|)h^Sn(C*b<)jmiK zPnD-CQ`1u0q;^g1p4ua|S8743CAB!UB(*fPEVVp!MC$m|8L10Wm!>XHU6r~vbwld* z)DKd3rS3`HmwF)eoX$-r(Pipd>+*H|bfvl~UA1ncZjA0F-6Y*q-3;Apy4kupx<$I> zx(&LWx&yjHx+A({y5qVty6<%7bmw&!b(eLwbr1El-b?SJ_tyvNrTUio7=4^RUZ1E> z*6Z}S`Y!qceP8_my+vQFAF8j^+w|4?5&BX3SM*c$Z|UpwEA*@N>+~D-oAq1ud-VtO zhxAAE$MnbbC-tZF7xb6(SM=A?q-n8facS{sNofPqD$<6f+0urmtxnsP_I}z2X}i+y zr9DZ9>0~;So|fJwy+?ZQ^uqN1=`W-gr4LHCr4LUZl|CkYTslf0pFSadRr>z)qv@y8 z&!+#Fem?_bkQq#ddxj{(J42cgmJyK=nGux{lOfMAW^~NxnK3Y9ScW}gM8@chaTzFM ze8$9#H#6pCEX-Jxu_U85qb_54#>$M%8AmhjX8e{(Wx8d~$ef$GGIK-b_RNnm4`-gv zJfC?f^T*8VnYS|UX8xY}#6TD*17i>vJPgr>BtxpfWawh(X2>`6H1sy~F%%n03@;kW z4CRJl2Ag55VS-_%VWDBUVU=O6VS{0_VXI+}VV~ik;gI35;i%y=!!^TChTpU3EZ?ly ztX5fxS&FQbENzxPDo}It1zp7)(crhS%b1lv&yn6vZ}JGvqol(&YF}pC2LyN z%&aq6SF)~VUC+9eotE7uyIppN?9SN>vR7oU%3hPbKKnxUo$PzrKW9J4G3Ip5>7LUg zr+3cMoQ*k~bKcF_mP_V}bA5CDa|3hDxn;TKxs|!L+}*jK<{r!aJokh#+?Zfg8r8;B zV}>!ym}@i{+Z($X3ynp_N@KNgq;ZT98OIwZ8YdfP8s9W7Hm)$fYkc3h)41EX-}tfd zu<=vlm&Wgn*Nu0KKN){9J~BQwK@({bnSxC+Qwvj+DbAE&N;WA?X{I)&j;1cA?xx + + + +