From 0105dc864deee4f73ee983163c076b6d9a7159e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BD=97=E7=A5=A5?= <1366971433@qq.com> Date: Sat, 18 May 2019 16:11:14 +0800 Subject: [PATCH] =?UTF-8?q?spark=20streaming=E4=B8=8E=E6=B5=81=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 +-- notes/Spark-Streaming与流处理.md | 78 ++++++++++++++++++ ...rames.md => SparkSQL-Dataset&DataFrame.md} | 0 notes/Storm和流处理简介.md | 8 +- pictures/spark-streaming-arch.png | Bin 0 -> 51972 bytes pictures/spark-streaming-flow.png | Bin 0 -> 20425 bytes 6 files changed, 87 insertions(+), 9 deletions(-) create mode 100644 notes/Spark-Streaming与流处理.md rename notes/{SparkSQL-Datasets&DataFrames.md => SparkSQL-Dataset&DataFrame.md} (100%) create mode 100644 pictures/spark-streaming-arch.png create mode 100644 pictures/spark-streaming-flow.png diff --git a/README.md b/README.md index eaecb01..a649ab2 100644 --- a/README.md +++ b/README.md @@ -82,16 +82,16 @@ **Spark SQL :** -1. DataFrame和DateSet +1. [Spark SQL之 DateFrame 和 DataSet](https://github.com/heibaiying/BigData-Notes/blob/master/notes/SparkSQL-Dataset&DataFrame.md) 2. Spark SQL之常用SQL语句 3. External Data Source **Spark Streaming :** -1. Spark Streaming简介 -2. DStream常用函数 -3. Spark Streaming 整合 flume -4. Spark Streaming 整合 kafka +1. [Spark Streaming简介](https://github.com/heibaiying/BigData-Notes/blob/master/notes/Spark-Streaming与流处理.md) +2. DStream常用操作详解 +3. Spark Streaming 整合 Flume +4. Spark Streaming 整合 Kafka ## 四、Flink diff --git a/notes/Spark-Streaming与流处理.md b/notes/Spark-Streaming与流处理.md new file mode 100644 index 0000000..dfbce30 --- /dev/null +++ b/notes/Spark-Streaming与流处理.md @@ -0,0 +1,78 @@ +# Spark Streaming与流处理 + + + +## 一、流处理 + +### 1.1 静态数据处理 + +在流处理之前,数据通常存储在数据库,文件系统或其他形式的存储系统中。应用程序根据需要查询数据或计算数据。这就是传统的静态数据处理架构。Hadoop采用HDFS进行数据存储,采用MapReduce进行数据查询或分析,这就是典型的静态数据处理架构。 + +
+uK|TSwXy1EQ35);#LRvNLBtLMD;k?5Un!LFZaG{8m1v{M;VYzN z2}ec&5ao8mNbh?@p%qUwzZLOm@D}o^x7>@<)*7eAw6;x*Z}3r42ep+;Y?Y65q^xMf zp&wj$#HZ=fBoGl1JzzORJmjiLA0Y2^j13N%k->Cb^t^0kyv{x`q~jaWNdM;Ca86)8 z6%33+5GtO5F$ba{_Vnv_6q&~F-7XSn)vPVy+w`4WhA)hXD{?cKnk9JIiu4{&s}_CJ zrzEym`r7#L@*08A_FHP6kHnaK6Pk2--2cPeAic@OOuHBSBc~ZPa7nKw?B(zc)UZC#p^lGr4Hr}!{rda3KV+zH6ejo>uCx{@FX+g+di6vbO9jaXt~o+z80|sgYOOi zW5*~xs?9VY1ONINQcj=g)3AD?+x{yeBElU6(uT3JCzW~}(uM2R;}Hlo--#oQC3QQ< zv^zijk%w2tuW{~>_qLF|o11d=S8c8U+v1&B9a5uOKc}->=;2F0Gy5}QfN}17rX*#{ zjzS6aX4XUA=qA4nK>ItjYIQq^?QGC$m_SD-OZn8UMdd7sp#6_QguIU*e|jHp^dD3p z??Ei6y-Nyt8e>?=`8)^eXgaZ5H))(hufkuN-8|+)?`t9`WdcDMm7|%=zPO(vTY#G# zFZ>Vl>Hsxj7Uj{so@>rQ4;>{L!z(IaKidn{457U)9{w2ppgw41rTD_yuL7hh<%qDH z7Om^CU;5!Jh=YD<0u>e;r?I`bRaMe&@k}T@*4W^2aOFX-D2Ki9384-Q3J0&9+JFhK ze}&wc4S1Te^dboe07V-0V*H^po)hGqyL?I^7?QXL-loMwP#?peq3tsNu_kpX&*tH= zOCK)v2kD+>v$aXl28;Nt33mXPJ$x^FahpeMW>Txl?s-(C#7?;DXb)$NQy=q`@M&hf zznXjIFgrN|6<&|)t#_2cPEOFIP{evDVXUg=P0w {Aw{d9i_{>5l3wkdxT|g zL|spc1@oCb0}gs8F4v2h{5FIiYOe!115;82rDh4>VsuFpUKhEr-B@b^M=Y6?S?(a^ zq`_*rit>nhlOkF5T_DV%^`s-Na>kM$SD^GROIYZnza_ S&mP@%O)i}qV*ms*%|*L1GA3mf^`LKz2biA+eX+9%PpTn^?nB@noD znq QpXdur5h}L&G%M?XPxg*&S 8$+EA;k$gLfB44gFkQ;_}%26NyBoo+H}+B{7W zWlln3MJ)+r2kRduQS| KmtfOYLWv$0Sds9*}niyh9 z?yTDk^0+dgQ6zsqOBhiM1qSdi$l-FxTYU?!nhlD!%jtTH!$|hFb~^E>7#)vd4!5s( ztnSWIR_2xge!Fc*q*`|T@$DIemKa2LRe<60#j>fQ 68*|!7NE!h-K6*lJql{F&gWVE+^1N%0A1G!(|&$HI# zIY&-x-OXNvXEu?6tf-+?X?h0eVTfb|G$&3EcYAc71_HzWZfbOmOeNnJBA2vpio_Um z@J^E>k$*be0M#~C_^jddOa+7!eHp$A8uM~6Hb}3xHq)LyR?bC{W{D-_Gxdt8=`VZJ zf7KE{&B>;O!N|RE0lvV|<^+7*c t8x` z)#b;JePC=L8E{2x!YArtQ~n0hgksYM%-5>(N!VUPZths9KKdpFyS8B1CMb`ME1v?- zEL8At9Zx>Uu47BmjEye!JWQ=F5@Fk<6lGC9#bMtR4&YyZtY_`n1l_z&62)D+#;+<2 zYy}%<+&mb~Z(;Fc|Ks-SA~v}{iyx5i=U~Dem%cf5O`9-?cD@V_#%7P>QWdkW9xX!& zwoe~AI^IwCEt;Ib%wrw+4dT%e0N8WTF(*4Wq_O$CsHk4FOl&qzNrr%>{NxL{f98Bp zI_9Nb#v7m!@a79E%U&tB=A3cH+?GUM+j_6pR>VOQhJLX04DU9fQq62`8EFnP9)qbx zLOpd|vU$h#P9YzZw~+o_VF5NXNwoaQL|q8&u)Nc>3oLjhYD>J#^<}h~D15zBOI%dd z4ZP+X_2!^0y6`}PtEL+b8qGwaezWzPF2c}AtditR#k<3K`wm9|TCS0p`p3$qKK!ln z@I7Ngm_W *;%BlC@*> zb|o~12*daza6PFyayC~CUP-66>PU06dyY6Yoqn45JQyBfi){bBqa!&?1hG(0j-QGR zQvq{p*|vmm_A!QMC-AMQC QJ@Et9;u15xdrG*E48K4=S4b9qm&pk82$yDEd!SMh8*39cnc ze>CDKwf;Duv4|bP8UEU$Cg*puMRs BiSa!aHNphdu8P zljtT|gs!v$d}BNUzZT)*Vv>Mr`cF(>ySGCol|#OI3N|I)$cp*v0C~AcWd-I3A(XYc z7E&|I8E;LZ1S9WRFX0H#hHP4t?s@TOk(s~i7X-%5ilN8A5SFr3x%0gL6Y3s7ZLE3Z zo%a=K&d)l{F`@TUZ@*oASB9Z25l?#Yy1fmw@V%M2$UfKbICZ{OE~L6$Pe~@|{a6jL zXXxu 4= nG^{^PT8z#~C_UL-vX75Zabi^I{unSt<6U9}jaWn}u? zol9;E)+=3|c;RZgqgrMV$o2`3;%4F+M!HiM+lfRC@wjM6c48Cz{VsrtiZBC{hc2gA z^CMO;o*E}LTL!zH;%F<>k;Zv}O(i3dliP=~U{1p_HZsdvFQ?;JMxv01wG-pQ?d1Xi z1I2 VQ=_qowQurHO+UWSD (&4|bTJF6Z<5@mg~o(PQnT3c?M{G+2;+|Q4Sw#wAb@1a!yJg(a!tIa@F#_MrXJ3;pCauW|Mw6_ZC1q#;)ZV+!T`>Os~zklqeYa5wr4 z8<`)~V_%Zggmr(18H&51%HOqO7uSJXHFq+Zh=51lR!q^WJihN#KxqQDj~J@gr?{k_ z!hnya$n^0_1Xrz}XwjR$3lj$bP8mt@+@MPl@nOS~YlH*x8dzUBuz OphO~0mwdQhzleuV!<&OXSL1W@e=pql&P zu;Y_GJ`V`_%^=g55NcrRro?n{?my`NEgr!^0{}-AyB8tUl9zmhTS)K0r1-Ii)J#8{ z5$lD $>NWik(5v15NCg{T+MrV_YH@N@NWrZ9FZ{0zlMlyx+r} zH(uNOfd01HnpvJP=~F>vd~8UGpdI&I77o=s0$- PkccKB1dFw=dDgcLO7Oj6M>zWBCd>^lm=k zg(Q%x*n8G0^FjM}LLY0f5j#EIl&TU+BaLOHiHjxYQbY^wScK}CuuOc?vq-->Zq7BQ zu?(qyq^&MBfe#AzoTNfu&n2M-T<(TJ%)#6WV;T;M0fp!Klpe#2MPMAtgh+!|UH%nz z(+s^eJ>2O7`69a@kW5+4>;h+>tRSAOpOUTI@%|WqX2bZ^MXH1+3G%}Mm&T*`K!M*3 zaQqq()QW@V(^1^= t8DC0=OYONF?%d%QLCX|ZoV@$7HxWD~X zJRhUNOim`|x9VD;y!Ls<*oyg9ohgcJZ46#SP*$=2Y(}Y1zDGq8v&!@Q2zLhhMY5>G z-NkTJWT3Q^sxa_kT#iq&r1b{-cgJiK6B8Mprf3+=Yrx1yAR3Z0QDRSz3<;o<8=EUG z(w;y~J;5&Ni;Hm$FDjcj0E4*`Z#IC @1ZkYOx$CCZEk_xXr4xzuZ*?$8GbaImg$=9?J1i*h4&@m z$^;R2IHgGRKDWZ=V-FPQ)v$9H#icD#w)ndrkf^HcMMwX4V!5 @I~_z^J_!-D$O8yPA`s|w`e#Y}nSS#9 zn|z99btDqz{|QfRDw7=uWhV<@cVG!iRow_5rDJ9dXstpU;NoBiONg3DRCr8|Rz4oA z>lIyBGP?i8%;q$sCk0B`k1Ye-lywlXtUo29yX=mQ29pm)XMaso2VVeO=Z++2O_j 7xQG-HJtn)GPQ-uRP({LEM=wHR@C9_I}+slC;Lj;asI2e-dvb&rPVMVv6LzSHA zG#>E+6CN;kw6m3tr7eEd0yi*P$jwIcgEZ15b{~E+C?HF$Pe@EW%msMRiX}H*p9bB^ z&KfSSVLP+RTO4)JC{w8=o`jaEtuHj_ufE9SD)T&~3+-#!-s1Zjddbf(%Tv+@x}+j7 z$48c}zW-8u!-0-0;TdxiWV-Bv+1W2NVS6%K>0w?PsR;AmFT^>&HR)H7hYM#!6Hx`gG_N}iSZxx$rv*cTq2c4VGmkF^Nw9M+B8Z@pQBJKr zo*%; #ro7naKgX^YBM|tpIZ~(y! zU*?GAya8vG-!B+|GA__5;}eVT<%@7r)7NxBeMA0%f8XB*Ogdd7ivxy~zQH5Qud0{0 zJe@|F)9|+`u2aSI)xT);5W((l|IkmW5(dIGcbfux=>-P0*lPqDYh_XeBjFx6m~Z^; z(hP_OdqvDNAqA(0#tREqA$kKO9P$u382Cf(Vp+c`T_ySh!vjkvRwQ>?!Tky_@E&eZ z0NQ@vH}*<)tjYJ`mJWJ8?B~o9*jb*{soH3S+TsBJPOam??C(ekvZJVuD6P!}>Y@w> zYanaMfeGtKH9w!r*)dYKt1c#*0#`S>cSj`F>O$7&H`L_G68<&_ *|<0g0+<3fxYY8W!OON1QFKl_G#|2LAEG9ec*Qa$fjnB5f@ z;H@6jtk4Di)kuM=43O?tJKcV!-(<8lx|t0)t;-)|*ECT`((_i?A_bZC(X_1=NBKQm=6 zL1!lzBT*~t9mRZ-B;n$~Q3< 5)tda;gZoWlkxRDy+_VLALh^m+HFo8Un8{k8i8KqR) zkawYWLw{a~VMsmKq7RKgqU(wxGj5f&IFDMA9-xl<&a_d-A1>$4y7RZCWqgR?KunKO zBjJx9#}cs1KWlKD4*!tf-udLc2I?S)SRxGxcOZneC7QO4NrSdhriN0&*}rUWuv9 zE3%wgZ-9Kh@O~ns$c39#abZ^kSd+XyJ4{gJ%b6IYdL5>s)G;zKWpreQo=R(42yS9V zOl=!`D`8NH0nK5OuQHHtN2n5D;*cJ(sMM`F@0MA@CKM}Yjp$YU)W~QO)!%hy^www3 zhNh70gU@@?ejJRzH3SDJY+7;QZt|C&tw()Glp$X>!Gy`)gw-^aq5!#QYTyHkZ?(TL z`)!7jH4#H?JL6>Wcn;H{7Wc0T>>Jp*Z&F7-F2|f$0oOO^6X3XmXK#t1$OPyid4idb zn+23O5MyvNNbeQU1RRpO%XV)ZPf{NanF!}>ZBT>}ln&yy4s}ShnHZ2uLkUYhZ<%aC zTjFhTfPUNz+~06XnGw2781^)!%(vyGM|XAm9-u+gG7m}lx*)LBvjkQI1GTAHBR~e6 zHiijRM=a>V$PXihM7IK&en0%`d1i_p)igQL2u={Qo4yeI>=rq)#{Z{Fj2jff2?RE! ztsN6(57afx3n-M4Y~NndC}|62OighueyLW{!?z)(6IpG%x;%H+E5)%@x*EA$C-NVh zW7e1ACA84RD)Z%h7j@u!`5M2 DU4Km#w0|niMu3Z1C4#t>3*$Y-SD%<6>doGT|_X9 `3 zS6i}2USL(!xuLaiDYa|fMw-U%l5q?59GFkg0a|%^1H0d7zL#-Iymh1wscaviLiBC) zSyegZ?E9C~7v?Lq<8FT O$9a|-kh24B=?{dsm_p!W1l@LN zywX>|MLtMlU7&ycsV8`X0;4PZ9@y_xakN)o*_pbO80V)?e0nwvgN3Vr*RX)LZN%RV zY%_L;?|(mPkVFhm)^d;A>#+D57=NFBol*Z$`$pUT<7~rhV7MlSi|OuKOOPaS1Ic;+ zNN8aQzla{SF B+b@ zYZwO)mB&U+KIpRg3{^`5bag5OYT99jNC}ShhX@{xYd 250AS(%agsW!U?L#E04 z*J}?;ZNw4r-~>2BZo+!R=wt==kaUXe-Tz>CayTAnNLM&e{P~Tu491h%#Z!sbpR412 z5=qH<1^Z`dN8S$G_xuzb{b;7T1JE=H7!oSlfKy4&;S!LoNS1&m#lb|V6F|LH K(xKHO7!CR2=raSM&W5l6#LUhdjbTI z^8C5(+mZM0mfE^vz<1j>s zL|u^xLLXrnGdj8G@4)R@Ipvh+>fCA>kH6IW`cCL20<`XB6`*}~){OnF4ZT?|08`^( zvXbsyr<;tx3o>)-p$e$nI! J_`Qny~;oY-Qoao%=5S)I6#A8FxV>?3~CSV58t8_33v=iNHm2T!6etv z@y)F3cGBHB$LYn@U29RYL?C8d;h4%726QaYvih0Ceg_-QkKG#2k`~oeTo`8@VF 5pxkp%^yY%? B*wsze&^#f%z67%XN`tIgd;xIH=%lCoM#9y)5yjZ8em%f 3n zh!y%q<(FW>5mkooeJZI}M{J(vn(SFVaMygjcCzQyYI!48Hli*2Or~BB+7m$_j ;Q#Ly1NfHQ>9cutLVB*MV%?359=IR=wW8Fas92Hy%UM? {}Y|W-!u0I}Ms4(Pq zR&blntt&sckR;HyGAShu)lm<8D37K40k-f%&sf%#cg`R<#h%bUVK6gE_S%0>z5wD- z6hag|QK#?M$^|fa1{%7B?_)n5o7uvwW*1?Iwctw z%DLGIkw|QOs@Mn1OV4Su+m7MZVEabRG|0^oCFD+bp2ceE;vOX~=0sj^yiKe}h)MWz z$BKpXGy?jd#j|dZGX`1tIW&g-xn9ngHA35)3W;6Sc)1oczhk5Q*<{RQ8kQUg4A4A2 zsHV^hy-*cbEHsNwHCAJ0-a63A>-Jr#H!0hJo|T|_)hSJOBzfo;&Up+q3O##rk0^2z zOlkRFKb2qa)k^=5N*nuGl4OG+VXI8qvGnn?lY&z+-4MAb>Hr1swxlAb85ir_Qv`5; zY=nymTHjO&RUa&Q6gHnZxfTl9 OcF@pA_Oh=3YkwLQR220wkLs08_kf zM`u$qMgCPkC>s?hnj=#aT;tM)*uVOkbi75a7TrBQhr-kT+(PY{q@Q^7sH#cia%UrA zRJrVlY%fLBs&2Iw*sR<)6lSu+y I i^&t@WG6Tv;rKrs`hP<0MBSc%!anRK!dH1e4d!Jl zf+73aJ|UVC=Ln!uqWPfUwOp8lA&q~KLKe?V h&-BM}xe$#b6u`r8d^FtBi0VmcAS(C9@~H)=>#Dp$+3b_AZ;B zq^%F9 Q08Sy0aNr~jdC&6vzT(FZ-TPkY_kgq0q&>G#B-ZT4 zA9WIfz|GY6KJuu-F&G@43nWi*N!IZ#bM+H%`Y?z*PG|77z||!oPGOK=Zfa?gP#Wqo z=xOl U@v1De%bFOr9DdyM!C4Ag?u z2h9z}4o{{#BYV;YmAG3Qa )oH0izP!ss1K*a?aRw- zU;UFiB^{pgMk)j>fS=M#qrR|RWzbkLjf!;k_kpLc)Uh$!MtHo3b!3O3UZ<_cSp>&T zy%iaSBOW?$yb3~}*7VYJArE*t11O#!f)&}T+WDV1KudD~_qPvstZrm4gWXtgF-MjJ zJZ{$TtEfVI3UvZ i)feP=co~e}8`4SCW!4dw#Gsiuj%lZlx^56LUOz>D6=g zU|MYba4Et{GE}v2Mc4B;KejavqN2)P $M<8iR%*0Q_SleE$~$$bbe;eg>SIX%phU6-7{ouc!CNT`M!iK zhj;?VJ-mJSO)xcktx6DwB}k&pKMJ^732dfJxM@?(j+=+>P(dt#1J&1UXL1< ppl7 X(oy%Nw+M+Ew(`!m>p{PMLEm5u+J_>5l%w8OH4lw2MW16z`EJu9t&n z7 7<`U27hUT%5aJ?>xjU0#dosFV73o)@gFz5Qm^Lybh(v zrh@ygM;~x(tfT;#whmH U!V-Dt9>4 zJs7Mq5`Q>ezZ-rViYc>bzh4tD<8&zmTd;XR iQYcoV8)V_RCVnhKE)YGmJWqE3(^$+7)-*TFjc}712vY4mPIfl?UL#tPZb@DKDeU z vas)^@n9#|>_JQ?vK%KfcRb71_b zXe>ROve*|FG-k)6KBt>8XR_SD0ZgZHI9}sxHqD3gp0U3R`?6qo(pXwr`Z4tR#0esx z^ax-`_F{@P yQt|G4<=vyZ(QCJUDKuxiez+jZeif7W`Dng%hm^2psHoUNa&u3(P$e*t z_>UZ%o(At<5hKHja%dv9_Gg&?GWpP?b=3Ltm#}7}L8MvotkjkAu-jC^R%M-6+F_7p zk5Eu056xLPtk3CU3Yb7VTcx|}w!x@ab4i~&u~BHIi?MyUB0nxv*uzRw{j)+&k-3Y` zO#VLn5kP*z|iHrh#{=&jgfanhPPg2jCSqv=#SZ%-1 zUh~@u{5#FW4eH74sMdlBC2yX?QOsYz)Wk>uUpd~ASk!zfc50et6+p_0wIz)c6Q2xv zb+*|@)qc^p<3HF=yuP#fZv3eddu*;LTSJFim|X^o<{@h+V~mxlyy6-4!qeaPJuiMW z>-s+u!%&x`U($5yu!I|_h*}ZKkKa03j(MP{YMJgRZI$6L8*|C1=rGM9^NmcjhVq;0 zb>P^h6UzmI2nBAzvqmg^L}( Qt+Ef@n$S%3%yXV$?&n_AGnQCoO zX(pC- MhORIu5k9*~-WJ-A)eGoIx zy80L@H7bDbgHLsz#iMY$3(_%ZZME gMKWms9)VHty2_#sMI(2EC^v$ zVmwAhTxZ82x~*!F*x6u~x}8|iayb|4^o!GqU#r3jSt2Y5XGv#lCIN=ZdNeRPp}}Q6 z9D9sVTu-a?)F%HJoXj3vEZSpFFBY>U8akJLQ)cy;!m2xMiGk{x A$G z7|8Ak-VWi|Fjtffc&}Ss1*g3C+@C0z_v em-iEQYNibSiO*-#irg z3QAbuWq&b*sf-^C`-k(5+Za~OdUm+L{SK`|t|8(v4>@-9@gEFeBUcE}-!2&!emIEy ze@wk~R8`#@E&Pfg4TqM7LzjSb3mhb+TS`E>yAcFEbfYvJx>Gs~LXeh5x=Xt2Tlo9N zz4u?n8H2s{e%6z7&WE@ |om19hzE+c%XVj |XZV|%Kjd-J zfwFVyWFI;C*lnaDGr8W6|Lv?^E84!Wf-68g3E`rypbY@ebnbMzX}4mCOTH+!sZJ*u z^rHP~fMPr;^c~VBswSsx`z4Qs80XMA6-?WT{WVLY{G?e;(XZxAm>J(J6rrAdE;`Ti zG)Q|XZ@2>>J}vb$_HyN=lU?pIZ4RZJgMO58isX}$nlnhw#qDE$HtBF>{L-HBPkD~| zdSl0vt-cx${ce7xRNi9Dn|i6^^aC*rH)_RwaDxmY6f}fsY*wf+FzXTt;!7}6Az|km zsuf`9yu|(Hdr0QNq(#*JHj{F?7ZytXR1iEJT?oW%S*sD|S8`!jWTi2Nki8kP0W4C4 z#k5*2y6Ge%?MbJ4 UI%#C$z=Bid*;o{2=~yoyQ&<)+XZ(SQnsD&Q8IyR^%bNrMd(}QGKz*AdV6wc zIwN{@xToU-0(S-nF55ADdAMc#kCXP_F)?vQQ17WPA(<7+8?6cy!Hq!TZFf+#`W-ll zy)5+j%?pMcX7Cb=oP#4vWi?eH N0eHD_sH^+w xz^e z&DoYSSBGM?pzKa>A503kEQqfob 6=YL~Q^Ju^!F=Mi+I&Zy7n`&dE)y%iLlE{D_zt0N)x#BChxxV1Y7 zdS=Mys^7(_Ds3)TAv7wT;S-t+ZfZ}0Q|2tZ+l@N{NNJ-Mp50@aj ZM%4o*X>0T_ zU4K@@BE=K7<{Xm?+rDhcdS*jZS$L{qX%D5C$@ts059OS@m$O%hlMZ|KT|R2)=rI^@ zXG+ok_6O}mh8@h`ln9Rf2~fvg)2RPBFgVCq*R#!+3(NHc#VsU$7! m?u?ejm zAPN1Gc~@#&@iH^C(5}@_T #)6VE?S7bgnmFJuXP>HUV&KG zKkp$ R5$J$y0|M7^+*`Hv zL$G?k;CG8(WI M_!;Z)^p{e#e!3nl)-ov!>dg{;t(@m)2>tc=<8*Cpx#=zv(H2};?`8Q;S*^3( zBx3J1I{&vVMq<#}A!
ij_fMYUOX)moE%9AKygM7?&t7Gs~JgjS`SmN;eS!a8jpoYq$zmy zVtY}WhcCfz#n@Vhqd{s@xL0R~S(mZ|NB3J<;kfW{v{|DJj4Fk+!;?LEp8`^XgrQLL zwmwB`>Y!o%nWbSavmTRvxpqrtnCs6DN3G VeIoE@Wc&L=0SwX!OuO-zCM18kQXw&GtGVyt-ey#QzL z6l$On6YXts*?5DhbGmLA3z3oxL(VHI+BC>WGROq|aS_N!LYR*nu8{pU?wc?L54DD# zD^{rO2RTWEX&uc>o&eO^=y?L`I+0l-E~M#r_R-@fC)irLs)_9>kic#z)FP>PlT@YJ zdMD85{4ZsdMKl~*!*Zkpf#IYnlGff$=9u5tI4-oOsKeFxO>ZDJ-DYoVIV_+_Asw2f zYiBQ{$fND$qn%j|--jpi(%OVR*M?EtGW0}d=RwtfDVfKc-WoVtWD)f>$$+n#7r5Rm zyP=oUDAvQ q{}0 K?ya)BDhgdIynDG$11ctaSKQC!JF1E(W^#X9)zJinWcE*o*;?{p1Ud$wHn@f zPrp^<6jQB|B|b;9O(>`Ye-7 >4H(;r&( zKHv`7cu(L{JyW2t0f89(3r!u)kK_1tR`op++Lx~I05K^_Cd4>vKe_^=xM$hbhwpP8 zvCy*L4~JVtLTPSU60*%$Z?a`$FBj`x0VGH4I61BKgWp#6Z~0ni7o(Tw{(ZnY(?5;Q zZA(8W$pR~+wrADstM4@l6GN<^&`6rtR&?$h?p8U5yk|LF^*kci$h|a3J+&oi&<@;@ zMH5vu$x~v}WK^Hg257XZ8V^s4bYc^^npPB}dJn{#eq$$$6zAh9Z>vrW|Eq33cp?+c z6TN)qu{%6#7k(|H#9Xp534C#_Rk3g#h;2}QU?8b`T=2_WbV;=9OC7-tyloz>wW-7^ zo#^W=*M s$NcWrDLLU>hIQ}z^P}@{=FcV~QiQ+8r+Pf3 zx#g=XJOpb3p2={}$tR=g#tLiOCtj^9`nEh)6P{rx7BRV&6)jyU?heh%U`k(%Md)7l zIOv3{4f|B0OP2Lo544vhJuNW5{iE^U+`$xwXNWMrnhLs 4?m~}{s#5rLN|3vm^8$g7u#D|yBsrUuZ#cpbcEN>pw8ojS>+?x@ zrLxP!t`on*@fi21R7;GP)l}n9$z4~|xsO7{?Phf;X=T)P1MQ}M#{Cx|! R zf(KrNMf?nKmT 1`AcTxQW`bR>NXUZRwu0BXd2tID56=OBmHH8DjVuo!XBa<_Opx z!@YfV&9s(K=1Kb^9)FRBX7r14BkrdGs46x&l)>pi%pqE1RCfNm$*-|>ynbvz2ZK~m zpFG-wwXlLrM(N5rUu-RVfOUvRw>JjhKnRm6CguHGxF@bT(u{ox8Eew`+zltzB-DK= zBmjq1_U>f606dTp8<@}e zs-Xv~KT~fJ$5hmmI>FVJyl!DHY{0jq9lgOe{q}beC8Zn{lHn$k&0NS#VI0_^Wkk*1 zCyS=Q53>ntRt!k qTB|}Y zgYgmXsZbK|-5%G5gD;EVn6+!WCLH(Y#s-@B!`<@&Io<>_2T lF7*pT#p&6s*gYNr$kg}RJjSLn8%)u8?~9@ zXROjP_4vGr=I}~P `^(yilRV31xR6$;8B!iHAFYoW%jiO8 zh3;bN!}VM;sOa>*4Q;Pl6*j1@a-s(bS3ZcGNEt|TuAqTK73W~CQ!~_~U~B9R%O6H0 z;s}HPd#lmiiQxnxu-Qd0*Kx?*QlzbM! #mrKvRCn5R^c1&&-d^;n%7Rl z{EO#aN<|OYG<^f8iyoT;xTr8?@!RedRrXr_z|3zE79wJ&5$whY@1H2uGWM)L+=Nw- z6I!WE=M {riN!1tT-|h2w3D5)J5Y6JGtQ$0yGiv-!Uq();v^^*biPru{9;%M} zH$Km=_hb~uCIee1O6gpI&eP6-6?V1>msiPVK7Zi@r(g5FkNy=Nd_2@3zHd0oMxw-} z*$R$Hd~u?;r|`^6HB#P6=mA_mYSOZXPncq~rJD33hfuqle`v<;Hh>UG)og U(CpXWO`4WiQO5 zQ~8kNUW&W|5REIxPf1DRsMe9Q!9)WdKJ^L4xRwS7lRVw0DWY*2)I#RoPZ0~+qy;~{ za}&?5wKI0Uw$Oq|fARw6s&e63yRKIju-qBOefcaXyRNm%+{4FRTmnUE28VF7!jX1c zT-8;)4WG$GT};|i-JcS4>4L&TD>}B|#hz-aHpZ%$In;j5ujyF*qfmd+J$z%lx5$qQ z`W+e^c=Zj-Lb>vEOUHvA*QQ>7!!Qel5Z0qAW=XHUBIx`u0u_6v-D6g*`^3b~{hRuv zD2ti4_lH1Aro6+sph@!J2^IC#j7 zRl-utS6n?77AQi$0%5*s3_G4UEvN5_#{|l#ib{@TTFL)iUN7aRr353Qe8ksMfR;+k zBJlgu@f}Q#{JSlevZULn8YD4bn2 p8P92A`n<3L OqmdvWt_Xv^cF)k>s4oNq>z zw#jVdZmE)rMege|+_jZs$HzrS1hjwE6DSMPiU1;vI;x5!?=V#^8aIPTOIM{k&aba= zFYzSje-`Y n%RTpX|h8K?|(ZAM B#iecs!i>S?qI@=`s8lO5zI*vJ+S=fT#h3`PttivaQDo3h3Dd1_JMnDY7$>w zXtw!4d!Kb|{5l>YQPNC`^7jiEf)-&LGvd93mpHb&lh&Y-SVlnmx12BO>O-?ZkqV!L zcIiDHXjvSxaBzHCoHprL*IQa)(I|lNy-iNg14%s|CD1Eu_(GV7K|IPvPZad|ssrF3 zwZ7d0qYMm>h)|iRSVi&;1)uFrtsW-Le}1;~6oOhYjWvpg6~hd$6dbQxp}g;W$g>j( z{1&xJ2bG3|bBD9fY3lt_3Cd_1Shc-s%QhDza*Z)1U&g)1P*`q^Ri7}a)f -&!LLffU`+|z}k93yC|0T zj1mhV4a2=9=tpx*q1{DCYmk=Uf;}NI_kdL)eKj`OFN0XD%(tIY^KWnlVj{;a(X!_8 z>yi_gP6zclthH@4;*5xuR9$?aX=T1QJ4PvIrKY52jPBS05=9o4S-TzO7iF{)TB(Zu z$5Z+rfB2C73mYSkK?Qk8QLl7dRz-j}(Bu5SlPO9Tmn@C|k(tnQ@TC|kQOX zq_qYv znGD$*(o0Sb|7#q`tmM~i&TzMtF9iS^-thU{Qe2I$#M(^SzFrdYUA(uN^yMh8u>BFU z-Dq*BmFbs1$!4*v8*IY2N@dV8(ct(2e9ft&vN4OKh0%*jI^=d-;62a$EQ;PIW@Jq8 zjBytu#FIxb95d_qFGV7{e3k128GF9I@e0g%vz^wE#R%(YqeTpO$$}sPr;?G8+1MuB zyb}OI2mlle_)h>AvHZ2;5}<@}0YYHlVCgo7%1&pn2mdIB7RemNE~_YLRg*n`X$(Oc zZiRnx%5o)0sHu8Xz%N$H?9by52rD;%xhX`;!}|e|mGr4!TtcWjOY8?}icKY6o);a( zOSbtoTrrUM7z$50`KsI^?3Eo$jM+!$qrZw9N!E?!EF!c$B2f4SHOK!#kS3o*ARWEr z@1_30<52xPJty1z7#2|e!d0xgoS<8DL}@#%Ff;zuv||E?rvkSU2RWnLZAbDDl^R zH+*8NY@w0*Ku5YmZlUtPHw5J{I3oCojW~0Ag<&rWZn#8l_6c1E>g=j31W)sC-LC~2 z#3pJXr|?ga>IUsM-q(+EJi?QH41UjRukbddW* n` }oY*6VLutzX8s)R;C4H!J;B1@EA4qHmmpB8*)2w;zlwE*8bR^op zXZd;)#F7U=382jcxez38p9kCt@hCTjPxO#PVZo$bjViKPf6zb^V%!i(3#AX_ew1)c z?NT TUI@>VZ0=Wu2}_9VmH1F%$hk+G-#~7o z-I=G)Uzca5N>UQ#2TF_~N?ehJh-0$pf5~tlGZ27MWwtmuw&OfQ+0ruaw||Nm4YIe6 zS3(xr#3wLzM@P*0@Dw{{-s-Ilr4vW=i$H;kLK0;&s2~{e^Tk)T=!&6PZZyI$NvfLW za*oNOahOxb(xHnoGa5xxSU6$@zXrJeO+WOtudwhZ)cq{X3|L-V_X&VF^`)4V8C&uV zJ*- ce zPQ792bPnLWD>oUUm(HAQ*IsPKW`I}-7a_;$qOWdFFWFVo@~+D(&RFfi;~&5JuY26; zd2qqJg+@iFFp>85Jf!7@=j4?B#>lZ@wo9z}F@_7SG~v+sw{uSF`rh}0hx?e7Ya#<^ z;x!aU3UY#hJ}bxbri8a^Th#7FSj{^jT1SkMn!@I+r`Rkm{H1FnRt2*7ASih|wam#b zHZA%O)JoCyCz~fsWAaIbk(LsC{NLRGX(c_}m`Qx{kAb7&B~W8km*N7W2fC#lo2Y$H zpt^GbdJlHt>ZvQ5lcqKPQ`VT7@#_R?IJp&r_bxODll<~rBut)~$5P|Bo33q4!aWvG zg ETF UPjUyF1mR_y+fWtWN$Yi zEf@8Auc{Z9_Gk?sb}G25r}r3@4Wnj#)d1F`B iF0tQD=E0X5dTi7DM}-)v}m!9l*zUr#R$s}%`cVGY5_P)+fUT$ z^w~LZMXVH*j)<4 9IpqESb7_Tw~7dtcCltA^ py@5E7>F?RXD`o~NCW7&e4di!XBu0)X4VbH6jPo@mjZz0mE z7gG(0&n(=%&9CEX!*A&_pWvPmzBaO{du~v5co{+sBWL+V+t`XZvMNN5$b`Jn3bINr zJe+~nU6P^v6!6uq=E2JuXJ>rVZ%dOI6^m5Z{N=wm6}sxZh8(yl6nkJrF-;vi=&wDu z1)7Yj|4L=Z;xW$5#H!cK4Sk5W49(^Ax)mo{py$e$4< vw{#YAP~;TElX?Aeu)_ TLRk-2qOTxK#r@JLIw;AZZIQ3W)i=G63)@QXTJOx9I zV@~GeZXL^1x|}FXtp|PS9mD5v17`P++8AMJE5J{xvaqo9z8h+=6@Sl{z@&oHRH1+% zS?jj3VSq4rgixT5vHMM# vCkt zE(u>utHs>DUd90NvX_iP(m*phN?BLiuR6iMpyU2lB65#hnzG|*8bqFEV(;4eMv5jL z_ukDfHEB{cu|+Rix+QSw%X`TkLR!QAz*Yp8U?(D5rnb$!a+Qo1*ZY(XW;FMv@q3z1 z)eJ@WqM7s+ZAks6fxPxhZO%V2Nb8>Rj2f7r;7HU5zR)j&IbTSgojD3~So;s%J%&hL z?SSaN+b#b@QhvYSLWE$JV{BTvlImp{=49ya`$^&3^hJW7{dSy;NIfB&8<=iaO*Btd zAhR6~F4t{U3xK?ugVYi88w_W7#*rB!@`tM7$a?R3PlMz-(_*`*XrE5iEY!WV#7*Y? z5?$pom7<*1EL3t`XU%Tz+()Nw*RM8yxYh1f6C2X9YsXd}C{QTm!}fCJyr5MtO($Xp zncL=Yk>>gYB!FL(ZE5?ni-gp-_)!Qf(y3_s^cg~{w{a2EnY@IFt#KO0a`V*Bl~$he zZt}+6S@NG^TPMxJGFayE9vXZvG<}qh%Z5XSR{IGF5>tC|57+~Ys%D?>4pj-f`4WGQ zYI^wNK%m|7mL)#mENJR4?bMHUOaJ@Z^3%3?I~|z!0uc2*%#ANvs~el#VC*F~p;@Qz zNxf_i|2~Bb4c}GkC0C{GuBWb_7jQTfwW))LU#M*=Oeq;tBecg^KYs?$q>nj_LxplZ zk`K;v6jP!4nE{FNeJP(m{Ac)()GpoF72f@X9Vb<|aF+=Mbx7mwoA;bN7z%krfDbl5 z;)jC@s-?YRdN7~ YBd2BOi$rN-Kr)&zOOM1x~(1hT+kpD zMl?zip6^sWs1QCSBMVDYQRCsMa?>4nK!%#-^k}b=r6@Z@llwj>d`9&p$UNdywT04+ z3q-QTCt8G_sKJ!?F&ryHM(*SI!Bh=4NXgGZ$a-{L^eB0t X+Tw371dEAx*}L#bY9 z4&zo6JBNG@k(zdtHn EkOQCOx~7jdsTBs{lHh|@ z7T~?Gq=xRCTxD$&=p&^B(vB$$3pD)G%h}qz2Dzw%ESmVU3DOnPRQ?gN9^qbc_mjq< z$~&~K`-K0*l^q)%G9IV|^L(+tD&dwBFfH%S=tmH0yCc`kE75vg83u2gOHtceY>H J$nzYeIkbW&iSt$p)zMSsC zDQ)GGO%`KY7n0eg(Qf5|XyVL(>F3z@dyt9bf=fFltoID(^n%s{`|HMa+lbJ*Vpj{d zfkcEW)~((1j4O*;hiaC-{r^>NgO<+?WL15*Wl$In=jQUJ9TJpVaQW=TPsJt|unF9Y zw(}Pyl4EcscQ3g5u5lQdw}6Dud>Yx~4m9O4Yr4_Z?yoN|*NZ9@=2LY_-Mfbg>J4pf zSK5ja+^Ze0E8WhVJrW=8WnODG;lOuypIa5IrHj*No3dE-)gLxj1bA;N! aKfBQ+dtsA=nORYHNFR zZXBenlfK~`U8z;qRE_sTiuah!OyxJNhN{KLvRCA8uvJT)Os0yTS#><8-~X;S)Bho~ zeKM_F7VFHOp4p$)n}iyF2o<6Eok!T-L#~{zI+weiEq`J})n`a+TKtXduQp-Rczzj` zG5A$h!CX9Z%=?GPZ9eSD9J&J~O6=aU3k)Q@ot2fPY00JR9x 6LXMhi#(kFikb9*)Y+U54f_( zF dR >OQn}-a5DTq5=r6lfu|03 zXC6;wd3sPFJ3b&(F9i=Rk%FH0g#p%1BtuFzz2GuTW{U~K-R$Td3zorwlT|gw?j`sd zjqL8rhg3R0bG)FM8SC195;bwtP@djZ3~DJisl u3H!Y^nvKiT(#FsT!6$iR#W-3VQW$?k zDb8I~LK4v*b*5c01!5lV8y0e0JHVw$%q`D}O3i(sC93IH`Y^ILC=!?UV#gCTeVMe@ z(5l6I>!QL_kL*1fgSIHw6&bY?k+GF8`sE$pN^JI#|IXS9)(a#8Zm!I>F {LBamj-S6-ujA@=Dpr;#gh{G~ueW~*9-XH- zj@og*x^czoF3|a~YTxUH$NY^{coqk9c%tIBhgD)Xa2cwq@rc)r&(tMZMBaTpiZTyq z>M`*v+d8lHAd}@eSGW>t+4BTa6bfFDe7DxKZ+Q2W{60=fQj)#z;e&WzyvnAhNla>P zJ(c>5>q`4{aM+n}znKZxWpSYiw$T2ydk?9>-y@dJ`-~oEhKSGbPsR?H4&3jHDfkwD z`d+I`-7?XEA%vBdk
Jzk8>Hv0h ^*&3= 5q9inG=_hkzeeLEitE{{AV}^&$48_I0#0+(+i6uj?`GX8TklA^e z&)Z3{q?Dx#RnK>bZOwmCcZ(Ghlug*%eyZ(_8Db q0~dGYLr+BWc?X zuzep>)$tn_?!8qb19?L{BzTnF`R~)INp9lAe&UJ 6-?ri0p;-F4TsZL>5Hs_J%i zBP|jseZqk;FgUjL`cJ P_$_gUNl6k+rbeIeJ*KTq$lD)=7L8ruOFE6fn3g0er zs?M%MTb^5C*(^n>5&mM}7qSgOFc%815l}o(BiqrkaF%v)p%Z9mEU(`auh#cn$KtqG z5M~o6G#v10Uj^%$*1lzva#E|U`S1dnbQcesotQ$Q %P4_~I{-W=HT75nuK}5iKt4e<$$Lj7Oi=@BM1IeCZkvOHI h>-g9>7j={=jhxVG8)GJafRsC HFXy))s(iIWit zCSKKMPxI?)6FKN-c<8#0AjkC@E?w&n@O-O(kh$0$4@r f40)hDL+y2Yn-aLnYP;mS*pm6nhN-u4Ca(yU`g#ogvaxRWCQb(l(}h zSP(>C@^$0fCJX&QUoHNX#gB|x(Fb845DcGbRsR0#`q@kTE@8D?fS2h>uzKA&Wq7vv z_||dI)96=61GyDRC$$c#Jg|VjlXsQE_7w?8sNB41f&}KgqU1#s*xDx*N!7dF~D$ zoiT-@>7-5Fxe}Q67t`(v%&a`M8O25QGd33kqA5 du_pXOxDw z_P+yZ(NDom!XPn{QEgT#9O~t!NSpt&Ly%!leP*jckHT3;iQOLw0*E}Cq&3m5*yGvh zC&BS4-`$tc6h1wfwv^>oNse@N-5`s+ee~-3mKH-GE>b%0Bn;||_&a*sK4c5BdYJwn z=ZEzB>wWE)4jAG^!xkqghJso?0fuEqVlHdcH*GKJG>kEMg~FBx_L^MXzuuhpuGj#N zBwhbY$=+kSV}%TR?F*pMl2Tz^EA%4EA~XS8eWxn`32)E8Bk%X$5C8eMXa7DE08dY7 za#yETTi!t ^O)Q&Us$) O7gft{x=}rkU{q8L`R!|9XhP83-2}?}r3BtP5a;1JAN>bH(_Xb~|aZ_CQsGPd5O+ z-J59TT=#vcwy-SNY-c@$wy%)6Jl+r*I{JxuO6W=jH$ZJuoGOJ?ae0r z|3~?+eK2GXh}xIN5eI5wpeyV!II>{8Nn=>C3u{3-@y}46Ma|E8jt=9 7K1y!Wh5P`gS-sftH}hh8x9Fh~d85AMyGPXfTBAV^3x7yvQnCCue&z4Tm6sWJ z9j6%tQ2agJ-j cButf|0-di=QGj)EDg}o_>RK|1ODO;pE EZ`>TCn5?CNJNM4keR6KDY>l>jUU}z!cG%`o~w7{8Jc?$};mH zJmX`MyXE!#y8?OH4$Do##SSWrm*(~KSdx-(`uo`aagDZbut3u#gpLwic= |AnYGJ|hbr9Wt3_ zoDoCRX2tmo@d)n?+J1CKUcr6jpx>je3Vr!?ffJ~FKP_#}AXYYhFqK!;25DwG?YPgF z^(N2u7hWeL-9J}&cuF|Sfwa1%=wtTZXbK{6+r;CcM$1mm+15pjQScsh;{GD{vkz%x z98FS2%LzQB+ylEhPJWMvaJlD=xsYBz`HY_}ap)~dZc_H!tZ^UIp@{X;pHmRm`L@({ z8T~2z;?rft5vtb$S&g-P@OK(`ou3BWVp~i5$5DlFVNRVSRj>0W_!1F(I1lXrpyq`J z(pz4jo#iLM?fhHgaUEW;YHsh!c**i 3L(9m98eqnJA|5cLFbuyNojsmM zy9&w{xgX#+#3NjvzGA%LFFwVUYBTYtcg^R6Wl+WCbG F?jd{%@~fwD%tOc0ZgiuBAdI+F89LzJ?*WNPP+9fyX$4 zoFzDjInUw1Gh_XmGiE^8u8d^yt#irtE031bSB0#cqkJvy)zZD~A|fI!Ol>j`!)$0y zUENslM&)hlMs*C{moeIz>%J`Q+L|u&v!GPPOLWMnM`Wh9#!eu1bY`<1VH-YbUSl?4 z`FHoAD ;vazdI~J#RUV+$8+se;NeEr@0ERch#c3kI>0H_cB z%+hX~1Xvys`{||=1&UayV0F-ilwoBKQ~mXWHu4n=2c^XQB&c9dz+M!mWp#jvfA-_g zJtCp;z2*=>fSE>>5l{)K#I?C;rx^_Zop!Jz3>o|xIlz4@uX&E7^j1>Ur$8oTbZk5D zP=hAV{%4@cw0!E$P=;|kf?A9KwKFc89z%HllYY36Me>y&%%%x{R(MKHc+b?Z@tKZI zQ$OOu(+Dp96vG$m%rMqD{G?Se_$02pc7S7#3rDU0FD;7~YYy|t8J3-s!NW4EWwM4@ ze`LR#obHWl+ULD-XAe@MQgSqaH$_drsI-Z`;4mRdFs1@D-ahN@5uCp6Zb%=V*j))p zj;((b{5O}QqQjbRVVKQXiUM5$N$t 8cMe#l$Ee73Bh=LUa|4%i-b&`{!hVoFs}Uvblkv z(F~D70-}QLU(fH0tA3 z*S}SmJAoXUK%753Sls|F-!Urh?#r8c4OT7u(<`{4^D9o+o+!AZ S#Q;_D}2Bv{$o=$ ztFLVAcSn&=rh!TKL*~lDz {eU8A`^xDK0U?8_q!+8sJl;eshc}L_c0{I5XX6QMEoWx V}$st5gG@q_G$2z^SiSD>FKT2ZCV(0vmoW<@qQ5+M;$@qz6_ z?e&;87<4Iskw~(*zoVAj8dGPFiKu>MEN*^Mx7~77IN=xCfy(^fu$5YMd1EH)F}3dc zcZKi_Z<0vY5T_8Liix^ZO-`rskSWcZRoPInO@?@-n;kKoR7jN5e5I}Xybh6{-c|*# z0a7wxVFpQ%SW{8q5(6q{rzr@7U YxP0^i+dzY z6F;;W*DStG2CmGjk02l1C>P91I~hD}!o=_Z%Wdh?u4I70^nd-~S*%<#J6AnJ4J=oV z_h (7RCeMRT~4vF8+m_tRq&v z_ENkV4Mi7q5Gp6&WBxmgpu1^$wKD6zOrikpUTh;#!tMkn4I||kK|%mwlHG*BCJTl_ zr|7|)30_VaC?Fozo8cG2H?h7c|L*PMG^>-xKy3j57yPmCM2{CsWpwSqV@2_X?qEHBd8Hh6hN|jpLa-) zjp *+eY3Gq?&VC0z2&JH`n!3p5d4ZvhX@2G#|>4wT%r=(epp9B4HiN_se2$ zM5WP3m}I})&AYk94>Y5&I2zmuegn3Bws?JS3_R;U#v9;u0U`PD?e{A$ri?)K{7;M( zxFZ%;X3CL{!24Vd|0@bxASUs;d;+Ou&ZR{<$=IbRnW#!&cVc%(Gh&Sd@TnBF#{W(+ zmJOM04(GJNG+%Ow?A87DIZ&VpL$hJJoi58xG}9;;HVXrKv-Kz=@*Ts#3kCmM+9o#& zUWm_EPflAu@29wng>~b18bAeBYV<1rex~#PLRNCQ$2_!3(1^obD+<@0`D6C^V!6^1 zzqKbvSHgq&h)`=loHXqtg<(+pUsE!Oymq?B8iq!2{42en%{(_B_Cs)94|pQ~gY?O}geY#x|2jNN#p406Wd)~`KPmjg?y{y6uXdg#|Eq?f#98Fl uAgZ+a~ zm%H~;yf~fOgbMrI-zoP0jvoP>$Fm_r)dP&d(+Kc1vp-fI3x_ry0}crb4YNBbXvhi4 zHC@W()r7Lre~GL+fU((Eu_=V5XFBMfGxu1KzcDD%ZA#X8EbkU#m6%&HiT((E<0KaV zCa{@=DSm8%;+rs0NrHfVSd`%Z^45`p-i}j#HV;(z7L=^MJc=~wdt72L{Xk6>rN?={ zfMe}<@zOVvp%*0|$HR7F+M}zPRh_%nSkq;Soy`ukDiQa}-%uDPRG=Yw_1Pi&^)@&D zETmY=Q=fG&p578a +9P*=%Z;8F4UJ!3}JWCrwvJkYsQm=6D @&3$EB7F_@D=`s}w>zYKnzhmZ^tzdI0`mOiaQOTQ6maGh8H3u`mx1It%koaO- zKf@S$KW4NduPuqrmk{kzbd>O@i(Uc`9YFxpl5r)Oh0PUorO3-1#!V8|(n4PpH3U8! z@j*t(d^yD=*+W7`W+{mdta=>9(R`NTcLG+_oeE2hPRa#cmwROyLFL^CIWxVKWRglD zc;0O8gV(8D5ruBgw?QYtYw^?1mBq@8)Q>%6aQuu}TcuuB=4ql|`N}P)CNH>q={Ac{ zRd?Q|X~cE7=$7wKYhK#o@zHl8XrQVDA&5ChmJ!8sn7Ei~2;L48o>crJKnW&DJTM#G z+H8=o&ALA*19~XPrVd(5S#CCcqDFdi0R*B_Gr^xeDQ|`s<=@vuYq}WP*MWtf2k$B~ zN4(|43dMR7^Mch$00)DDeH=S@SX`?&fCQz!$5iHc#rOQLeH?8 z*Y;*QI5YNrPtu?ZEay9u5>x;6kExK^)ncz}Nuq^WN)aVO40*^FYz3IY{0Z13(Ix2J zrLv4|GEvW7m~Rg~NbleyKdf?9%51Q)>18i*)A0a{*;)Usl-DOhRI=*YOFeDUY9T|X zs`Fq9>w;1IkoL$Ntjsu`xu%c 1qczae_gY61t>ycc=1`>ey>8pDF!7%C zqKO5Oy=_W(UFu%dYqo=Z-!}r-9?Wzqz>!kzonB_SjmnF;?)K&5qyePb8MWX1{>rg# zXyE?Wj!F1X_jR-Tj7iH;sq2tfgN8`-sa&Ck5T+UH`~5pO_dS8xb<4#cuKMG{fJxPB z3LzJB64=j-2=Q*|sa6yZYVp$7uDjc7(iD9|$H&J6XQY-7PCQ+CNA<8N%oQ@Zp0r%K zaqo4jq_szdyF$2;*tqT#eM_3P!EUh6>GKzz|1HYhJ 6VKd1o^R&jDfm)yNNUyDi|qDp-MJA884u|4^=GW2JYzdAWK|UkV$TF} z_ssH|DMQ x38`+V_g7fX1ltix9i+?9De&k+{T@!({BlRrr? zJc*mS5yQ#KcKMzkxas6<&9&zIx8@&gSpd2l4=-u#xq77ukb^4{Pn<8Vt#m#-m}bfc z?3^rYaETKKh$9#_kqrq?>!;ZhRI9EPm7*=D_mU}UuLU$DST6FWJW^6_;c^6(TseMk zp=}OcPYG7tPHuHBY<*!px%xY(B4ZI|ykQc`Xe3iZ6>{BE?DI4;Z(YiuUZNv%9&2P5 zwftDrRQPx%klg6eaDO oM6m7z8acn6t|P_1F<1AirNGQS z$th{3jJ!_G#`9~eZ8|a3E=wr%9*O9>FguYV82`#g{`dYHz&p@KT$ipcy(PVjDN8;s z L@#hCZ>JiVxki0>`JCPAbX-%+7F`3vlG))fAIvBzz z5#eXo$2P#?BWHY_FSiuYs50*JdNVj)ZUtk0AJQVmls-fxHM%!)W8mz!5TV&&wP4jL zW`O1bUFM$Ipc&lr{4VbaqzLc9`I}&t`IEBv |aVK(G_=o!uHc%L(Smz-LOS1i`2XDv;QJ@m{8K>^gH;ssqGoP z)z|wm=?jLeVfyJ Og|;^&)6f~5bWV8*P~f~xXBA&d5i0-L6?uEvaWLl>kFN3 zTyy >KKj|#E z)b@vfZQkHf;=HbN1>S{KiN-!4j(iGLzOk hDR0?*j=jHvZkojFN0kjnq97YiD8~D>A zC1F}~CirRltHeT2+P`qV{rVLJeLHWx!AhmPMTb9HD-7un6%V()^9==q^!?JJpVa!m z5+7?7wQEW!EKRunT-YK!qT*53Ze;>>MIBtAy5@m{05)Z%;AgR;*zj|2?$Lp #7K}hGW80NLKf^U)8dzQyED9C0_hQ zWq~j)0#nh-z{U{DdCS+gXx)2zxhHmM;}<;@4s(b_J^womr?UJwM$Lv-<98}6E3+t6 zX^T*>G@Yzh ^QfWRI_z8u8G*BL%Tf_~s%dK|^(_FFHu=EGwzQ6brx7 zY&%1@<1LYlY+bp2G4OaiEhbz8Nf=Zc0dr3dqs(`(6gui_^ol>KKPEPav*{oaB;Nk4 zU=g!xWGC?UA+*RZ<{jHd|8(2UrJzY4JADgHLwr*%M${ZI2a{l8)4Pu8>`>E$(J)me z|8QShPg7-kk1Exk0+U!t->GVha3>@X0-*TO;BIRNh_%JNP+xxoT=QjwYb{GES)HNC zTg;-t$zh_58w6aKED;%p%3_cF`S2BeK|THIll-hvJ_ETaGrg~@1TM_OzTHT_7#SUc zZ)CXc*rZVUwZprXO(DGP=m&v=0#JtwV#}7{N)p=m8p3K-B4pfmnlml3z59Cq_KT-K zR)iV|AnD!nmFk7*oK+*o9u12uXdg_|`*I3dg!Q>+;#EB6IEtljQN^>Ve&!R;xi{4k zaNy+m)Q{q*LYn+mM?~ZS-poAIK Zy0Q>uqK?phbo*0t9O7MTtq@KEd1R zWwn#Gc-^OBcp0V(*{RxSmL0K=%<}*VJP?(D;p6~5ep-ZI%g|xH!^P>IFFRZHL+PM) zE2mcTxM4NYv7 5A=Dn@q`3SJ zlTPZL8B6X>yOlTnii*gnCYg*Te)Z`nByU7i8`mZc5L9IanRbMura$^#-9!#jeYiuY zN*b7{Kig}rb;XXH2N3EU;M?(>>J!w2y>k*S+Pb7cAAU#_5Kx^ z%rtpraN6 kkO z!WRi2Hn+`HTo*XJg0HbCG3x3aF>No_EYovabA}B3QUWz?0Tao#dhxF(Lj(-l$|g2n zD$6KHM+b43mryWk`(GE6rjeqZ+KN#scy=q#D|{O2{h|$)wN>wRpG+Rhyp4T*B<34% zLqm5}_ty;J(4UX$5LG|wEYy3LhGS*o #y#`8rL%|4`}O{2(0i!1F1~?MJTkQp+YZfM@p5+q|MkYk9@uh zZC>?`>yc{MfJs+Ump(TI1i(?uNFI7N@p) t&F(AwXC_25~`RI&Hm`}p?d@e9*rdy#aB+92XNs*e;&l)+(+zr$x zpFuTxo^F3Pa-?eQIsZ0fkhs|mdkl$Kh>Bpj_?M|Mo${!KtobS_{K8Ymxxh<}*h%Mw z1B(}a^-H;6ZzuQ~Tl7yG)%Q=1aj?72k@XD^BX@7{r^mkFy@!-X;H68D83lzE`;iQb zI;M##d o# zT!&i9uDi}<$%{2NLmTZ$AZ3U8I`6^)Q%E-X;B8>^f$*_plnJ=n-h1^#!)X7yDqU(i z{pLB(mgS^;`4_XxR*5q50S&)#>}L$Ys)#soFe=dmij&-?f4}^wJF)x<&W?lT%0Bzl zAjA&$$Wh!YAcrRqq7vT)t%!v&bSa~=|Mo`CBp;I*Z4t3sX3BAyg$pMWc@;{loF9;J zQ?T2^$De3z%4e(MP)Lk!_Ca64t11)*2rGj#Ka549G~TP1xXHQYOB1vA;ZkQ7>szxJ zb9I-RJX8-4mqs%+T@~Z;uJ8WwOPd>Lue(u`UrFwhBJ`yvu4x|XbswTr)}fu0HtQz} zxb%tR29Jd>d9u);)LuxJT $)3E8OlyNAB=D-o2FT z@q|-kn+F)y!z_Ytab30(YSN1RJa@Yh2wOHkqQzMAZE9!+d~rJSaI@%6Wv3NtG7I_I z?fDRv+xuR!Y6`a`B;={+=Sn2d<&vI^rf6~!6dE&d{`bQ1I((P7O(=2RjL@0ukAQx{ zcaQY$m&~$FA&P?OWmK^5LLvPL5uaqLUT7l|g4tg3sq8A_D 5QiYYvfPHzoWi-QUKvL~n_=Id}h zZPO(o!Q288l8y|Baf_TM9}ax&{%tcBrCVu}8R5pl?~8H|4~(wSc6c_nFFc({B)St) zTb++L{{!UXOx2~6Nm36_{9gmm>$T#N22PHY#Gb+oce>3Dux&v}BukqGxiE;%N>oe( zqLNc4e*VfveT&(q{N)PaR}{af0#M=ZXeMRaC}Nzvtg-akfdzKg$@xfro$5vn$-Go| z1H$?JEfp4gIscFF&*{PR$P@?Uz?JNQ&%ejQ&X9(}5=kCXoEC;R?73gIC>$ds_$vn9 z&&cab_WWi1pdhpotRShD{p;bmZCXHis#22z8$Qg9!{s@q?lLGHy~7tcejp`hymz zn#rBAo&~YX29^dMpj!u49!v$uUivg;jjZ1ELxHg9av;g{r3vfU_9|5LQkygmTfzUA z>vXRyhe(%c7m5oR=ky7SY%S6qoo##acUvo!%1Bw=hWdyh-bJ`lIwj!(; !x%)KsU+FXyPBZ}QLTK1;(yPZ%Nl`hW5&HV#&oMAI2yAAu#htL4Mu8dK zr7u4iN!L%cG}K9GJ$}11r-r&wV2ApCk5+sW+s7d}1>*6pXxJ;)O;*`P$$5OMnGUY+ zkC9qWGJWT)whK7m0`cmSg#4Cd#N0?HEp1R= AM!RO`)RE(Mt_DEk6xGlM5v~pk6@__|9d+nU< zhu@q~oxA&O#fPLt =v8p;sRrLeO7N!bWGX&tYcHP+M|j*5MOl @PZ@}q|F&b zNQl|8wuy97q!{Dk$ZNK?+Dllk5bBaWUNZTCBpXyZ3HhJ3DT{YhZDZ~Eqooyf1SH=9 z6wlAv+ehxYRY!ljP_RG5c4#L4^*2MHJ{InqDaQmd^@dV-W%q)%$8Z(XbpRpd?; zDweq%_cU*iN-_<6MAT1X_aq}+pjZvVTSi6AD5aMYqo;4|LXAHJ1rA3E4Y1mtw$`ZQ zr$8uFr0hPc4U)8Khml9yyH2mky8JF;WVtt5Ma*e+p@v^dYg*uGI{JE;6F+&I^u4tB zr2-~2g$?Y~e2JE8rGQ41 =%w=zR~8>=W_Dx?Wn?V>gR-SA3?>GB zcLR6t=e#o+1L$cyPDmswY;ihZV;e5;kiV!SQF3QN_M30Cx+(O)h}chn!L`@^*Fe}& zEJP%vqbz-ySWqWtIEcQQKIv};RRs_A^@8PKYc95X`(OY&k13gF+KkUTlMEF#x+vlU z>SQr~E4bnUT_!JgtvF{zufSoxNtfxr{HgBKJzhzp4dWwpx3)aORsAnXlb#9gZohYn zTvQPmz67?dE+eSsev|+6k;`qU#HAH++%?MF{-JH{uPM@0A-7C>s&{Eqj$=1(p)AH~ z&p+TP2H3Mv
{KB@*pCf!jVYR^ysJO7J7W9=)TSU8XYP#0vRT z-pbV?bdM W&{&nc+jwS^95rIZv?R@D0|k#RJ6}6s$rtuNrC~ z+2gQI=RpwW@u9bi4oE8_jerl!_o_ee~gK!eMSc=(CA8Sn+TFQ$@#H0C{mtX&InV z^p=8Ur!;3Apq|CJl)BUfYL+KYNUIn+mPBf%R_L}p8mc%Gbwsy{q0T$GJl-$y@Ftj1 zKh(=cYpE*&t?e??QgEByM)+MIIM{$jdsv?}jTO*{ATmCD9F#rV7f1xTCl)Ox6xJ1< zKh*BjCrUHp%Uv^)KH76n=tYZKvRsJ8w{BT}6;9o1>n9)m6B5{j=~3NC{y)tmGp)k! z$}RZQXgU24)UrsVgA>-0Nj>6PlS$%;7)X?tc?mXIEBs<2cdsl}N2~lEMzAsSTbNcM zYeDwfRK4RW&n_LWe0X!s>PYq(o+47HAYY9gdMH&M>$@F~{f=TDUkMagUe_msi-<+y zu<=c&UPmsrW;PsC-vv-NZp!pM`5&Uyk%(FvyPF(#1+IYF>K&Vj?|d6q|G2olcrm4c z={6f1LMN+SbOr~gXavbbw~mB8-fv-PU4 bz_pRTKo~^3;2R T^UAX8F8tNROnOdRgcU#*Qp;BNVLH=#O@ z=s=!j_jxzjrUCz?yAG~JpEYkiMYNfhF9Oavs?~tkt!?SI?}#?dxV-3$8jwyJ^u|F@ zGEmHZvaG$Lmblns@cg&XZfAi-$nZyq_Lr9<7w7fTZ9Z4b|C_D_6`C#~S8aR~q0o46 z<)ey8MM6*<^3`*2hn2Uc=Xlm#E${OGo75nij}BD>*yViLBD4AHN%iO7bM8$RI>()3Mj(n pFQN-sG zeotbEQ=R&C)kUdzf2Db>?*Z4 >NSa-d#9CKaiGD91X5&(lS2lF8b`xT_8_dmC9r=!U zX L}DzJV{A-6bni&NaC#FHa7tNAmW`a zs9bRh)J*GlCvcla%j0w1T6}-%2pP1j?2)in>CNmEbBsc?NbrfUk}l0T0JfKO+wAUO ziD+gr|K`7>P8KU3+b)+{^2+uU^HthOzdZnLD0|F68m1sSh%8R*twpL(<1Mz4Z3eb` zU!=>9$nG!x^2-|aN*n@}zt$N42Sb-IrU4>Ah#uDqgh3ol?23`byBRwI*yQQZU6vgS z bqcAd7%Qj-W4=k`?6hVRoH#rWxl#FM&BBjQSU%Qad=dW&LeTSn|j-{z}t z{WU-Ip#S0RwSGG5`&Q6##y3V7B@d<9#vh!odw`lPo}U|g n7PL#4yKi}gDfsZxcWWse^v?hM 04vxC`fu^yb}^#b$eZ#WaTPHApiI}tADcP z=;3@pOL9?{hh@r^)(66lTsu_3KgaXXWv=1z$BKyLnIln&I_}P;P|QUF!OYg2>G@8K zN!J}#v!tdi1*1par|0n9uIdTNVqo&@WJ=Z wIOF5DQToKCm a^>I*N@c^NW#0$|XFtv7l!Q z)|O wN>18 zPthHjusiwKb15;1`@FCF3ZPwmT7?#U=E^+%L7qusm_QUA5fMFq6sZ+1sDJaA)OFQ* z@tv3LwA&uSS}ssC`+p|}7aQJBx9QMNU6(HOY=|(I95S!9Ja@Z6Rwgu&ipPz1`{(d( zayyI<16A*EuylPypU1qk$NCkh`z^lt5v-tM_$N_prh_szWe)MzL>VRFreD%ZNop~I z1urxqQ{-ZH%m$v$tnLuLf{Umo+1JR_Pgb)Ci%C6MJ~?6)0I#iJQ(dMzq8x*irdt8m z^b7^#{TJOrMA?jjaiRKpsE8C9y!ppzOISm@Srz|tPnpG7!_{&`w19@0S8%-=f#uyV z8;5U0b5$x-lWV&i8I`5%$|4g+!-W*rIb+c{KlkfQY_|N5y{{-mcdvMVR2bO~nhKyx zS=p#QXZ#qOTHU=ljjv(%IUs{<-3I8M2WoZ@C_)b3W~rXngF%6{gzYU6;p8+5_+F^+ znf}|}dJ_5HCVQWOeU3{Qoh$&+LSvZTSi!(FWMGR 0?H PTB _&bskZa{)QA+oqVkpuw5h zn@OSgy*g8R-5K7W@C!ZHs>r8TTaYNwbJ~4rduHsNGN1UA$1iVWH&JSurevSuf5T)1 ziPO8nrP|vy#j#8O+js-b^Ii` 1@~`K`XYWB&b%V9KPvqe? z3WiFLIueeS;}o1w`-yQMdB>Kx#dn&^!4LkpL`i76r|0@WXZ*6U*xy#m* zVGYTY2NT7&96}!z=-b_e#3uX@+5W08yXCJc>(`h2Lu<(I?uH;8T?sF|$05?Vo-B6I z)2pbkS`VGw21%&omv#>o3x+%Xbb3o_wPILxRW?!@NB=X&p;%HcI+qn0ZpQP6|F;bv z#Hu!bXsNX!S?#?UnrU1Of0H)opD