From 56daae2c9e5b0f0bed13912ae937e3a856e66e72 Mon Sep 17 00:00:00 2001 From: Anthony Debucquoy Date: Wed, 31 May 2023 23:01:19 +0200 Subject: [PATCH] learn opengl --- build.sh | 6 +- main | Bin 15984 -> 0 bytes gameoflife_graph.c => opengl_train.c | 74 +- sample.png | Bin 0 -> 331670 bytes sample2.png | Bin 0 -> 319115 bytes shader.fs | 14 +- shader.vs | 9 + stb_image.h | 7987 ++++++++++++++++++++++++++ 8 files changed, 8077 insertions(+), 13 deletions(-) delete mode 100755 main rename gameoflife_graph.c => opengl_train.c (57%) create mode 100644 sample.png create mode 100644 sample2.png create mode 100644 stb_image.h diff --git a/build.sh b/build.sh index 755d00c..3ac449e 100755 --- a/build.sh +++ b/build.sh @@ -2,8 +2,8 @@ set -xe -CFLAGS="-Wall -Wextra $(pkg-config --cflags sdl2 glew)" -LIBS="$(pkg-config --libs sdl2 glew)" +CFLAGS="-g -Wall -Wextra $(pkg-config --cflags sdl2 glew)" +LIBS="$(pkg-config --libs sdl2 glew) -lm" # gcc -Wall -Wextra -o gameoflife_term gameoflife_term.c -gcc ${CFLAGS} -o gameoflife_graph gameoflife_graph.c ${LIBS} +gcc ${CFLAGS} -o opengl_train opengl_train.c ${LIBS} diff --git a/main b/main deleted file mode 100755 index fb53280c0368e3c951c26b47a0d5f47288a132b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15984 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 NzqVFcTzUcj{{lSh*#H0l diff --git a/gameoflife_graph.c b/opengl_train.c similarity index 57% rename from gameoflife_graph.c rename to opengl_train.c index 4add809..17b4152 100644 --- a/gameoflife_graph.c +++ b/opengl_train.c @@ -1,11 +1,12 @@ -#include #include #include #include -#include #include #include +#define STB_IMAGE_IMPLEMENTATION +#include "stb_image.h" + #define FACTOR 80 #define WIDTH ((FACTOR) * 16) #define HEIGHT ((FACTOR) * 9) @@ -13,9 +14,16 @@ SDL_Event e; float vertices[] = { - 0.0f, 0.5f, - 0.5f, -0.5f, - -0.5f, -0.5f + // Positions Color TexCoords + -0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, // Top-left + 0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, // Top-right + 0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f, // Bottom-right + -0.5f, -0.5f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, // Bottom-left +}; + +GLuint elements[] = { + 0, 1, 2, + 2, 3, 0, }; char * read_file(const char* path){ @@ -88,26 +96,76 @@ int main(void) SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2); + // vectors GLuint vertexBuffer; glGenBuffers(1, &vertexBuffer); glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); + // reuse vectors + GLuint ebo; + glGenBuffers(1, &ebo); + glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo); + glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(elements), elements, GL_STATIC_DRAW); + GLuint vertexShader = CompileShader(vs, GL_VERTEX_SHADER); GLuint fragmentShader = CompileShader(fs, GL_FRAGMENT_SHADER); GLuint shaderProgram = LinkShader(vertexShader, fragmentShader); + // Textures + int width, height; + unsigned char *image, *image2; + + GLuint tex[2]; + glGenTextures(2, tex); + + glActiveTexture(GL_TEXTURE0); + glBindTexture(GL_TEXTURE_2D, tex[0]); + + //Load image + image = stbi_load("./sample.png", &width, &height, NULL, 3); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image); + stbi_image_free(image); + glGenerateMipmap(GL_TEXTURE_2D); + + glUniform1i(glGetUniformLocation(shaderProgram, "kitty"), 0); + + glActiveTexture(GL_TEXTURE1); + glBindTexture(GL_TEXTURE_2D, tex[1]); + + //Load image + image2 = stbi_load("./sample2.png", &width, &height, NULL, 3); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image2); + stbi_image_free(image2); + glGenerateMipmap(GL_TEXTURE_2D); + + glUniform1i(glGetUniformLocation(shaderProgram, "puppy"), 1); + GLint posAttrib = glGetAttribLocation(shaderProgram, "positions"); glEnableVertexAttribArray(posAttrib); - glVertexAttribPointer(posAttrib, 2, GL_FLOAT, GL_FALSE, 0, 0); + glVertexAttribPointer(posAttrib, 2, GL_FLOAT, GL_FALSE, sizeof(float) * 7, 0); + GLint colAttrib = glGetAttribLocation(shaderProgram, "color"); + glEnableVertexAttribArray(colAttrib); + glVertexAttribPointer(colAttrib, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 7, (void*)(2*sizeof(float))); + + GLint texCoordsAttrib = glGetAttribLocation(shaderProgram, "texCoords"); + glEnableVertexAttribArray(texCoordsAttrib); + glVertexAttribPointer(texCoordsAttrib, 2, GL_FLOAT, GL_FALSE, sizeof(float) * 7, (void*)(5*sizeof(float))); + + glUseProgram(shaderProgram); + + int i = 0; bool should_close = false; while(!should_close){ + i++; glClearColor(0, 0, 0, 1); glClear(GL_COLOR_BUFFER_BIT); + glUniform1i(glGetUniformLocation(shaderProgram, "triangleColor"), i); - glDrawArrays(GL_TRIANGLES, 0, 3); + glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0); + /* glDrawArrays(GL_TRIANGLES, 0, 3); */ SDL_GL_SwapWindow(win); @@ -121,8 +179,6 @@ int main(void) glDeleteShader(fragmentShader); glDeleteShader(vertexShader); - glDeleteBuffers(1, &vertexBuffer); - SDL_GL_DeleteContext(con); SDL_DestroyWindow(win); SDL_Quit(); diff --git a/sample.png b/sample.png new file mode 100644 index 0000000000000000000000000000000000000000..3ec1d66eca77ad50601ac010d3176de940ede1bf GIT binary patch literal 331670 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�LtMTRYxZ&2+ItPTB zAC~LU{}Q2PuohFV5Fh!}=hsX>+GQc3b#ryw3R(}d;^J6y@^a6o^B>b0YIR;Q#p;Lh z_L{))Yu^T+d;5gtgmEv?1}O^Bq$%=g>R+>eW(Fm=15%efIhMUr~N0XD{vcP9WEEpYmaZE928Jm`Bsyu+Anr-{6 z+JMkxzVm!bzlF*_ha>MLYQyDF%z6^+JXU?^%KS&ZYyxy7C=~R$_8fsJf~R|H(_?tr zR{Q6VAHPJ0J~mr+!|)`cQ7}M832~X5uAufR?~f7JCPY0j8JC745+&(<=R)#V=JRP$ z)eIoX*X-bk96Yc&LNR=)&!ltKa5wygv2JOBOE|kBLwgiigdT&?9^7P+#s>mN|)O z91#9NCO^4211ql`N4I=_eEBLJ52fV+*#~m_EV?fx+@D&qaZJ2WN8sb_gF2gnbAT*v z(`?fCu4}#a@vipf{+xDFklNRbkKqE;_sU>J6GmWJSwre!q@7D9e;oNX7KUikN*OB~ zetAU7V}}i7{{WF_t&E(!9J&uGd0z!IHy+NzT%&>C7M=&?@6JumT#>tl%)ZQ(N0;(Z zeeX7?w<+$`T6=r?pJlwF!;n||wKSoU2V#0Nxa34)GO$cPA59Z=%enc3LF^mV!&}0w-jWTxSuZVisjn&< zEL&mI0$=bRhV`yK>}T#N6h|uHG#VguzJf9a z_SFu33mEF5S9{OXdm)O`)9EDOdR`h((}K%WWV4E*~FUPgurkf?)=qR<1u zzi-TSw*_&-+y?y-ac1%iVs=XP0cq^x4Sa_Xn2#3&i=|_80-j&z)^vJFlebQ~&ekb1D zqmPGta$^skzoO`$$z!csh)9eniPTBnK^>|~rz6WQ7vN={WG^SGk;?C)qi8r<%-&m9 zUkWv^bKCYB@9>kGj5;?L+KaJlup4f@Xb?=4QIwG^KvSYDNd`^I{QEDwp)CfAXeume zqL>l0)QckPbTX6O%K7KfhIsB%WFil1jI2FANFl4P=g4CLFx5 z{Txe_@{BcrK64C!@6264`GNQrIkK|x^3-f|lu2`$J!&!A#{ET(?RZ|w2ga7{T%LC( zV8xis?fGA)h6$W5a)J}71RKJZR7sa2hw~0+$sRRJh8>xB!T`lOq)e5V#>6rQ z5M)^nQqJ2ka){Z$v?Az+3U|5sb;XoAe>`I-pT^-x2Hi=M)J{VLDb_%>A*g$R&ykg>+)5M3p0t&eXout;}lew_VZkR$>LR|-~HN2 za}g+{QOoE)5dSIf@DD#ipX$gz>=}D*lHn2gqZv2Z`|8t=DPa;bcN5RU)rCxswl zMXoXH0+mUiTuNlzI9ZNCK?M^21GP+5BNU(84YnwLsf|nW7o6H-_ zr#0|MyG4yZ2<0A8u7KJB2)5fq4ke7oZoWg7Ssz=efwSCQOWwv!Pi|Q6gQcJ0g|IzUy;U zT3m(hX&05$|J6;^K7)wI^J%aI#R@AiR)ZYV`>IwP=cT!~W)7Ou0vd>oU@x!j(h3yz zmQ|ZZmSH8JZef*N7xFF=wnR{(x8t$DO8PJVfjziW^MmJV!~Mj#doc0p<9j&Y56+W^ zO>Zi?{(AK)va7pwB#U3vEdBJFgQM0nt6bOcY22H7)5p#iVe)r*0T=Kjyr#p#UMm6^ zl2`!j7*SvGczk+DS9}La>{;&Gb4H`PyRme|tnh;hZk3u$U9ly52dArDe$RhDQNj2x zSrx*z=Zj=Bp})>WBls#2#NTiY0zDNZdffVjDrXS zDVNw&5ynJ<^&cOaO&IkRiIj{gCKmNb1!cR7(PfDuX@--LOXbE@ClYxtK!s%)O&SZk z9(%l(fuZ`cFP^t(ZYmnR=R$*t6Sxgxyh3q(c>pzw(U}7loho9k z?H40u#g%V)7GB63kcBk;DT_3nbM+5YUz%fMkJ$hLj6uv^P&BVVTf&5C@EMztC5|vJ z@SYvqlh9}bFXC;-rPj~ZpHJ@v)QM)ug`TB-(x3gGQ^HGdDHr-+Zf@SVP_^LrhDcG1 z3|*s~u}FkPr&pMF${Yp`Ug=@(G@ZFMr?=fSQ!N<+vA?yn_p-(iQdM&gR#7=zT0U2s z?Ej6{SDAHl3r9*)W3bf;~m3F-88z9UWMFa5v;QR7m7F>BLzq9bs^A}ei`bM)Q zTfaB6p0H19FH_)O#Dq;@a3l;7k~Ff9-i9tXA|nIs_(z+cCXph*yZ6#D#SnriNFooM zFLl&(;n#=4lvT|j$wEuKEFkZ<7J}iLjBB&O=lNDwfY{SiUjV1sdEV(dkn!Uk%k2Bo z9^>V{-XvHytOfa|*y>SQsK28%<)OXPg{DUL;q-3p#u3ku#Cs?c#);+njuM&vxcv7r zbhG=R04Hmd@nAt#ivhPVs^KY*TEzxKE(hYR`|J3|7O@;6o>5L6hP#ebabkD0nz$Js zHRK-nkFT%#@_j zsTti2z9Fbjh{Jx5ft9>m}mO|alb0)g#7jy_XWD~JrwY@*9eax6ZIRFjJ<4hv3ga89X^ktu%KJY z?l9p*kpwsHl7o(QdR6`Hb8-;CbrjfIFV?;tHouSO>ADFWjZ-HXEye3s)k{wY1f6N2 zaEov(COy%sTM!z~0|2bOwu}d7;DQpIf2Lh#HMsD6BPKs1O@t*qwdTMs=b*MTS|m1E z?UF?{@AG_1wK@Lku9}Gj1HOlxKCdrZooT4f}E{2^Kp3eQ5UI-ru7;_Yp zr|fgydAMlQ?H!_(?i1~^X)HZe5vPWI* zra$p=#}gSm;8sgRf-0`n+m#L{0m0c=5%yXF&Eq!Te%7veQ zUZ;T`UPlN~<-xgMJc~&q$iMZY-6b93`R6;T7rv2Ddafh0Ecq&o6m5R3gy!AaasGS6 zRpOymofhrzWlP@CWW=C_OK|jHb6~|8UK!1M>a*jIR1`R(0p?VXX8#0{y;;py{BiVt zKhDR{TW{2}te(~iKahnd)BV%6VnS@}6_a&ID{tNWxE7t{_$5}iSmci*< zQlEZ2M>E|RU)jII3bE+Qv}((e!RnQnm=#}VvJ@jp_qS_{rBi|QTI|&oMUAHz*}H|D zoN?3JQ@A9xkGg|;ch%|m1tad2?hVm1ULU9y`%}5aNCjPCM~1(m`|) z+e{uUprjKvoQ4+JO)M6wLUa$m5Dx+$oyyS1e0_nJJLTnnc3vRk6RJcoDX7K}lB`K= zI(dW@D{>&wJ9+`>6xzLhPz$#AIL_DKLBowzj$&o(n9l)p5=k!8hv|~KIt)- zX8VZXX z)YW&Q9V!d5yLXXYr$ll-N}YV0hN{aRO^cB5`ZsQe9Z2YvnIgd~%KMTLwqd6%?HS6)>RiQk7=t2^q>8I(I_P0LfKCP}LZrS;}jQFpQ4bEH+ zSD!!x_B`NqTI9HUE6K>GbjGD`Sp3(8c*=F3aSg#%Eb&HBxLOnK%wFkS9(J=JOzPzu z+LVQQzm588Lo0^kK4afwsv9J;C@!-V=&KZ+*K~E#{G-@;YWbA**fLG>zse}~#DeGA z4L=W7kF!Gh`u+bslekZ&M%>aSo)s=#uqF6U%&vHXPv|-tf~$8jRWKy@i)-gF1Z2n z(MEMI-xzEwDa3`onb-G~f&uV1G(qg_FJ}C`%ix8OEvK;HThQ@2MPvwugtK{gEJ9Fm zi7}hbCD0E}gf+0)LRvEDuMe%toB^j+|L@qli#C22A1~8I>#gbJV(<)gR6~=n}#C;`}an zgPL#|-&YSSDkbq_H%qL1sDRu-B7i=e006@G%e)5ry(V*I1vfdeC_9Ik;>^ZI{lQ{B zHv+fQ&D4dn@U%w#DcxQVQLFZaR}=}N#@v~I%D{JSOiRlsF9#@WQ;xk`14B#;sHLcj zH^@#NQFAnT&^E?+B17Yo@8(bZPvgN)-FDw4i`|q6qQJFHhCg4sj+-&oG9zwl)jvPs zl@f^HC^6Zu8zM`(uweIDQ0ruvsn)}s*+)~qA2`Gov0yTCbMrheCOf%Lt(hkJphz|l zuT&74%%pm|Tg>`rTOV+P05v_ZzMP+0mnzkUyjXV|3VE9ZK?}i)s$9w_nx7WLk)_>O z^32O*E1~t%Fim-r*ibVMZ_VM-R!K!=2e%HJ4SYqS_x`B>A`fuWdzMjCc3dk!^sEOGyU_aFLArrwcjUKp*bn^Ltu}1 zsmckx-W~^m-dxKTaBKe?&8x&DFFO+hHq7QeG+bG6>wHQl*A{J(M(^+G8+PB2xc0Ow zu#i)k=r#3~j0Xd{-v5;NAaJJTkYbX&r+!sydw3<9FsDLHpiE*FIOeC{oUVAxXxm3_ zK~-p~xO`)zpFh9Ne^BjS;)aae4TZkUounzOU-e5%t8oI!*iV;tBepF`dP;=jEg2zn z*bH8tnr1#c*KAm>S^xv@_ByTK0`}gn!2?z0^>;x{TbamJ)U?w~$MmA=LN+Wg(emY| zD&TARTYi`p3>WJWT|iu`Thl!+y+$R_yP3$ENJB-b_?DHW$-^1f8?84df(oj#7A&=N zp(X#}O_3)Ad|DgWLK~faVNwmibzIsRRnBiP>A{k@I-JI8t!(dMpZbboJTv}lx?$Mv zvSepKlG(_chGl2_tgIpqpVKqYtVV5*shU~`11yzwU}4={XiWOq5g@d?{zdQ44*!(E zDQ3)p%9M4cSH#JyF%(Lgj($DLFha<;WUepqEI}Xh#z}!qH1&pMJ-I-bCJFJLdddIP z+rV&{QimJ_vsMFn%({G3b&2wrGMV1J%LCf@xMkE_K+$$R3;3!(Cb1 z7bC0s$6ncWuySuRI0oP0yeXuexNP}+Oc$E*0FRJY@or-D{bO?-GP3$xdl%8CjZ)xd zZR{iQ@aP;Kd%f`WVS;p~IQ*A)!26ZEyZ+OtG8k+WyeF`+(q{=N6nP zxNKfjmMKLbE!g$1Z-x(hgw90!F6r9 z7129d1L~LRVQ|Tmak5aU!m;lpVr_K;nB)F+ZZZs(yQ-mBDh=^;vAp0_+$^fZLm&F1R^h15Y!U|MQYr=Wyz`A_Szw&TsyDsU0%J3OT|7xDRS*bEk_ZX zWxWwEO%iz$YroqJsffI3>o>ZB0|7O)R3>Iket=?h%I>jUEr1Fu5u)-^3~_zcPZc@A ziS|SZ=Q;t7X?h*DJ#<#dosLFJsv#6sy4|q+DJC=r{|58l)&xGxpZWUT0$kK!@ara^ z87qPV?i0Q`VUv)7=U?Ym)^Yd6vP(1-wS1T**Xs+M&p+h-XqTR7VZt;NbN8ye4@s^& z(wpsmhc}OJ10R0je1=`qu;}3ZCyq+OSf!lohIvV%y0%f3h-c&&=N$xdqphs3f#n9X zO-%|D;1zzkwt#ilCSJ`KKRHd`OZNT_6C6fRAaz2IRaDY1R`x7*aokb?hQTVFD`4`c zt*IvwC)2+POl(3e0(@qCJ=J`M`PYuE4(lR}*?;b3Gg2q-!>uKXwtZ{^^WlBY7?qdd3kE6jKk%Br7qIRAG}Py$W|d6ng7* zKx_)F&rEO|EA)h_|H9TZzI{)(bsecTpi<<&BSfAcgYGc^J`9*)zlL@w)Jw| z3g)tg9k=5;n-%I|tVvVYpLs8iKUqMq^_qsQdwnDZ$+R^Z=llj5qc_Ol|H!XD{uTde#k25ZaQBN3gkfm0aHO_!fMV}2=vs( zNB~Gh0qXg0Wo7EhLM)1Vw;t?o*Xd^i=Aq4b9f+a7$4`a7U9i(`T%|ppylQun)()cVpW(Lq9z^EtCkpJM zkA3z;wnuyYSx>nK=Q`@Fhvvd!WZ9ck>-1{xscy^b`l(lJ^g+~w>gZ~K(K^GsmT3j; zDfl6TAQ3Yf=t%VQR9Z6`pvsfreQt4;FUrDOpnsxets)3%&$cL`d5wzD1{~teRZ7d|R;AtxCv+5#5S&|-bw^ttD zkkSf2x_&S;^kph_VHn!rv(KV0wa$mLk03`0D~L%;?`&^JE<5jBZ>Y*aJ^RLKH{Agd z#((0iutRm!dzvJY_^8=1h?Lk5=Z|eQ&z3ATqXa3K(cDTVa`Cd1@8u@=5omD_pTNg%^1}W+8R8r~gk`5{97AZlxyIVlIk?!sWkycVV z4sd`&cl_)A57(!w54zcVtvSDMjLuneqSuIJDoPj4yR)-kaKb;kk5`1JG>abcY)oMu z9VfcV%l$4=HNj#1?DKFF`s+JmDhp2@6;YonI)iJ1z@^%&XGg3jvk7=?EV{*E7C-h6 zSN)~&vgq||?Gh_1UIt+lb`!;d~pYO4l!lMtj`dWWkl0 zYeVFxnI|C})$!o{Rsa6A@%ZyG2zFug>XVW%hOXQ$M|JZhrg!`RTCVD8jN$F4gJPpK zvh=C~nehu=vOGF*vV6D@RdNYW2eo-z1+0y@{ASZZv@ej34@OwS$R<)mGCF3!a8$-7 zzx)~$gGSWC-(%!hf3PxXZ#%k9=Qd#)nF;1Nks&acGR-U=vCUKu4#>9?3|3!loB`NU zl#RV;t2mWn4TddLc_Qixh@h0(fNwYC5^Bp(&rjM&-`=%xcE;TPhn766Y1JzCELe2K zgH1ezA$s_|jIJV%tZ(1@l)4Mz>j-~SfV(_iu%FX08%ad5V!;ej$1xLd(Vq=r72jhV z;6QWKox@`5B$4!3lud%QdY-bjkB5$0AC?$Xhi%IQq{_9evrXt<@Jt7&2dn+zCH+;u z^u4XVVhH2@JPergtl`VvST&zBduwY~w{&@oA6%tCGv5Bnr;C;(IOmtgDIkrQO9%a= zIos+y@VW&G4{%fz^1AwR(qiPmqbO6*3*QaWjE<=QVeXmM&GO21nHAvPsNpToL7%Dw zP)9vGDRS>KGBUj2rHDd<^A6PD98g!d#@EMcmp!g~g9Li?#=h`~%W>@Lmzm1W;t9Vo z0aYuz$&fnX!{b*S+$3i0tIRWF4-!RFI9K=N<$p135^p|*a+v^y+7HE%x>MDgxCnh@ zDOz;Nd?p$tbxk7GJxt<|U?+bkBxd{}YX?4pH^~}AkfVafk75^3WDYVr6xF`~H1@$u z>P4(DTx>VQck;uFYh&sA;q77~Z#m+}V^zxg;(?{Xt_>+tyD4?96iL zN>-{L11=oPkBS89ATJTXABkYSMf?Yh$GQv4Nqx_ueqh6rn|y{SN9tm=aQt;B z3CsSU?P}9G}=0zwq=|OLE3-wa8Ynyor}`imVMSwm}jBMu=cJw^Nr^&jEB|>A*!HFrij<>5_Ygnpr~KflMgzCD4%W7_U%jBL6_WJR29kIo z(RIZVX5a*8iPWsj2)f=hkgZ+{}Uo{Kwee=0zrLUcp*lU-g8!wC*xnt485csuOGb-DI< zYXa}clty83yn%6jWx9h&E3gT#@>^dBw$jh0a-lfZtbZfYv`i@b`@ux^NzCXrt+rp1 z?`T8XjpLZVLj9AUAq7u~gU|EuS2?HWT1s1WihSx}8WK*t{f*$ukdazY^Tu2WZI+?Z%M4oS4U^k z*f#Vdw28(2^wOd9ELILRpG#(t+6Frht7$|6SXSjCq^W{{(<&NGqK<0|_WT694SPPr z^1iI@-nbk~1r`>(kbV*3+)}}cmqj!cA&*s5?4R2{&U|}9Dodt`r2$*n`o%x@lWuJ} zGk9uvdC8K{&^Bh~$joB9@T~li=CrC^E}U+Os_PY^p9wLD1>Q zOV4r9$1Tw_qi68!b7mya|Cld*C60GXW1S@p<{c3A&s6K=XkO_SM7dREc~cWs&V`zX zQRHp2k_?@5=|Yo>cG`dqmM!Wx0WH`5^DV?VmPNkR`>Q;jbcgq4phNd#D9u_xEtkdE z=guKLK{}W`Gic6bTQ7*Z5{0f-xpj$A@4Ltv%wLbVgM%9AGT1vfcz}|8#!)DkHAdrr zm!E|$`Xsm+EyAwh3Bd$vXv@iHN-+2Z{?7o_7Q^b7X_G*)l~wzR4Ol&76-EI9T+i*d zm04hJ>UaK0ug@7v!+fvi-@=F`P4eVEk znMN^m@<299njbt?2R70@xK>tC^r<=C63G^zcBz|;LY<~)Nn~PEUg^e+hXXB~e|a(Q z@8#&=sfc#dh0(j*Dzn*-oZc+7*1mWyi?c85HzCY%xer}K)_V|PSn+}g5I)ddVB)N2 z#GMBWA0}*_=_s|$zmVI<-H2}Ss?ArqCoR79y|m7hmWO?T@Xb64!q~obeBc?n3AAK= zbCOaQwz;3T3IF?niNl9b>7F_@+Ur5WSys=_sba-jOsu8)haYLH3VLmYMC5hkjgR%U z`@{P%tYxRb98R~GX|uTd-E%&p3jFJZo8ifC{|eE&?}Avc28iavR<5RN$&?=ZDa7v1 zXPa0nk3BhLr(DVNB7LIFE3Lj=k4Jx7RpyPBD4r!QA+-7=avMH)h=)IP=;|e42MTRX z=ZSTIg6$&25NRgj>DfDKIsv>y@v-HElhX!>Ix`%`BILLw%=dMh84gA?!Bq0_0M;eQ*;mnVmqN%tpUZ zeLzhy#bTh7<=9c_r*GeNZ4Zvw&QlYx~aK-I6nEL*9{q>wOlM7#cj_^5;*QaSV}OkQsJ6$4*;w>5w%W%+jJE z+AV|GDJXO^MTQOmX*)R5YJCsV7;uuBcg4F8e6*h&a!-C6+j-Owr$W%x>X_bUA5j1d zlc<@}sO+LVL+bM}SfXfVF7q3isdq{YTLHrx@)0u-hKrDHoAeFsa*XDC@`A-oz7JDP z=YmfnmU{9bNz`-1g`6&P?Osgu$cRG$DvlgFo;q9J+Q zlW=XkiA?#AS~`_Pms%RECzO}oA4_oR8cHgP*XDGM4R=ZriY+mcm*DdfcSyMn?45~+>7n6SNM21Nj*v7V4fsyn@it8#*#Lgfu7+i?U`tmX&zi>(D zEZFn>Gt`np7#j>^7kLf@^3lXdzKfG9Yas?@9FU3H2Z9Zm6iWp0^}L6sJg9)??E0O- zH?m=oOv~mifXL^P=a>V{=fNmKb|FTp*hM?HPu*RX-OHdJHtBvhtx@;;UI3^WeB0q| ze<%)tDWBFym#lqfLZRSpy~-)Q_arfC$|XSP^`EROJrpvTGy9QS+Atn=O;Nh1jVP@K zytre)dSfsTL>S&Dakvx-0za8Eou$;cxJZ$;`j3uS%m0>%UPl&JdhK>#Z3CId*5P3$ z2YP8)WGcJS9fVipTD(OP{W1+4yHMbQ+b!!y@Bc-|Hyv45ij#&pk&l4w-iEh{%$-UF z7**+#f}cJv?jfB%j)R0cYik6|@kwk52||A-&)5)4Dx>1AM#GWLkv$W%(~q^Sps1*k zn;=NTUH{mZ_j-8u{P}0`v)9+gRabr2HQNbaZ{agG^DE`om#(@yX2XvLF%z&XggwvD zj*EEz`Jj7?U45Mb)2UtoEAJE!EJ2EXHVL7BT4S;V7s8w;ukDBKTa|r`5_|52!_>=U zv15%hpDH`>L-(H_^FD}7{P2})c`e}$6L=B{AGoK8g@p(B3CZ=>%Y7*74 zOPCeh)k!Q$!jWnD7> zyXJ5zo3XJ^-rkJjW`mj?uQvOSNh>`&5J|4sQ-AA>roC`Daq0bg0`q;vl+vCCU!N8 zUjQMx8fijI4X^*=9~VYIG4~&kYels|~oHqhJ01!-|Igb zFYB+{?HjD(HNSSt^?NMNYh;FNFMHK4!u@qY(x|o0TaRm75s~U%{g?hP8FoivuSU{T zI@+OaemJptw9^py75QI6`>=_7UyfqondR=W$TK&|7cI!7x9N<(l(F8iC|}K zu5lc8arG~c{T8HPQ#Ch;G}$cw{x+HLyQEv;Tj0+Ie;fI`J4m@OWqo!N z;XMb;mSD#r$xQgUnlB`9hEbi8U%=VsmFnxQn0mfX<%){f3g<`;R!=Bi-EADX*0c!W zVSVSXiU0`Ch2{<)FvQm_tS7ADicpfTX?T5pf2nl{r-d2v{)kRfu`<^UeIL8RP*`dU zTVkZw(w*VDTrXw}5wrS{de2HoWYyZ%*{j3eZtF#=3(3TyNK8DM3nNovz;#Ic15Paz zn<}%()7Da2AR2QTIOyJ|;(Ml1)BV1VVp0LD<@4p0_$$to9SROOK6i4;Px7dKYt-wRFm3e}s zay9Y#t3cMfABsToc65DE<@Wb{NJL5hI)|%T6BK8!6R&5u$hQNu@YN46}h3BoaZKESE;wni~oF9^-EJ z$({Qa7Q1jQ!*wr6w|q>*zk{JXk2NvX6j$=L%OlQJv<2bBPDZ)+zRMLNQjv@4@YO%r zVp6DcnH`H;i%j?FQhKg)CGOfQ{>7SFN>+O_8sEc{U{tYt{d%|lJbTwHmhr*|jAKva z#{;h}MyTUV=Pd8KBpVTPXHc3dnyr`u>>r_QB;P(tK1!)xPFaaWBHcOVo1?6u^s;(R{jDJtiEj^e_R>!+29h2tv_ zearTJAbz8&IBeEdw_g2p-~h77Vj`YBW1<&R?>VKp z052-xso8R*my8!2(C0#a-&8QmZKwT?Bo1_oqX9+Ylr3<`^N%T4c0BBHRe=3#Hx#Di zlIfg_C!fLz%{r^&DmYpaN7^&W>D}<0G2zm|t^Qapj^xG^jC}UP2kR;VNhBO<1s7JDZYyn`prDF;`StjM5IaRh4ooI_V#sOTtzFELR2Yp!9} zarj6tRoHUAI+Lnvk(9GW%K*~?zu+rQJ+MLa5)qeNZpej`TGNSr=eL=}WSq=^5Reb; zNFUG@6gvYz<>LKZ_r12*amy`!tjBIa9a`9bKn1D4N#n^+{hh?8jF~+!>E%FUDR4DNzz~^ z)=x9he`xD=)%@;|-sCeTSdWS;jHE6uYMyCsX{I*&eChT2}Wvu1!LVue$z$kIaCS)r~1=%#KZ#LdS@XtLX7C^Njk^Vp~- z-Xtob13tkH-^X;I0E3qFTw20UaAvvpQ!nekPZ8w;86+v_q$V#*z21(l2;J;~ObeHI0e2dY$T>|DJS>a488%o#vjPWK$WCCy_ zA{!D`t1=Nvf0r>n>It7yRtA2Y;hlZsxm?qIzRz;8e$()x45lI@Lwj^NvI~&yq*l!w zpmUljr-Q3-tqA09{RPOAVu&t!W?84jD&M3HY!8NPPlvZ^C!=~uwV8KDgC+RNX5Nx5 zRY~*YGrGuwnH+GCQG9v{`X}PKcSwWIY=++VnSU+&54TZA%_CjY+bX9TUeL)$HsBPn zd~~sfycZH!HVNs~5yXD~+~WSCBjnG~>M5*sSaM77_{S58-#O>1PxWIB^?7cCS4+MR zU&2}*oC8G68|M7}=i{;SVPLbSG}aLXn#yw=mTN9kS5OG*&;<@IlzhxvZYoRpis-o8 z>xI+vAjSR#7EJ%wnxvcO7o_#o5clx*m75^pr}nfwhoJAPc2!OdiP$iPTyz;(hj~hB2#DV*g9HUR~h~u2Z0LkVrrz?;dzXbLP zaPOBS$>a>Z^h8wW{4u`YmI-n?Wo`K*uXvVOo6GUlnUyD%BR27h=(JX_gPA2tS1}3u z=%^wk6Ip10UQcYAJ7uE5+Q7_3_NRoy`WAXvW-teOgr{3`mHnO~l<~|r61oHkL2Xq< zrKB^OKxWfvINe0B=N@KpouA1$S1@L(w5FuGJ~v;FxdY<*d72t4ejoJMs9cCDRV7XOmgft{Mr3R0n6 zo;_v5^lkKWc!($t5E5E}=Fe;C1V6hm4YnL13!yA*+1Cop2TSb_ZXnntspM!sH&Q-p1#>vsXLGh?)FmP%uzM$I|RZAu4!CKrGv3@wwln zuLoi?`j}dpz4>e~wM4?o#mbsh{?PcDTgIKP=iIZ+Yrha#=C*sddidj{L%FlV(Cf(S zFNz{Rqgu<$9dutltj3M@N4^b3T4(BCr67MX9oA2_8hq4VL>qdy!r297BXgU*5EpTE zBoHiw*Mln6Nl}s>@;fxe#n-P6?DQy-XUjTH8tld-c^L6B{Uf(}2?<3paWdE3`ipwD z_a`bqjs~e)!s*&4_M(*15nqU>lX88^%zXXiLupXPGC9koK~1deyF+-9osCDb))S%d zPp*$^s3*QpkI#0`W0ZOUP6SbIT($yA<)qO^-Xfisv%W?8a7A(zQlWj%9k^0zkj8{`)tw`eBkYBp(((Ux<`^5d<~~Wp(h&_|U*;ICcO&4!+bQvV>^`rx6?@E}yxR6_-7|?xO>{hC=F`L?kryhK}OKeDH zxQgubc`{;BVe+FODVTBDCL8f4GQY62GnjqcbYjQ~gk$Tz05^n?$60dD!=Y7XX0|#o zd@XxYdNY@1q+fm>^Q^xTL0200uI<^lGw(yQVrhHtVmDua#BX2=b|ft#xg`rn%vsuG zfQIlBuYNyROkQF~R9_u+l65LQp9Q-LkzZVzSuNSrMbu`C(b3>rHs7+B7J_)RYUJD> zKHCU0qnpOlUCkvv9AbCfMolLC`U~aXg=w&}f%M*>im8`ZQ7>`Sby- zmAXA|gCFIV4BNf;*-5qDTSLVGE5n-~`}X)dQC`RJStny#bvI>I=2nF7Ld1R97yi{@ zlwkDZKQ`B{8fQ)|OBA#yn@=Gd$DrY0ajXnu&TKh|c{qa1+y?yrz<70^<)q^2${w!MhO&o5;1RbDeAB(eFI7zBlWXePl z(CV9Squ>NBekb~z$w6f0B#iJz3gz9|l3p@9S1p)Q{8O3R5h-DLmD5EK`lr#fSvLqf zdM5h(T*GoJnI(ehoE17A3N0ti_PgX3z2Bd#S((hWbF>>|!Xz4e8BoJF``U_g(IuKQ z7P?GYrkoT#Lku+{R#SuR#Ph84v z6fb)Lp_87DhdEcg2Z>HGCY}k&^QgfP(O+;suZHoW>ElfjOCwHwmxq@9!0bwOgrM(*~xQ*TnfcW(GkxnE296rJP8?(Ia&Tc{GuA1$NDaHevCox>c%x z3vTsOZl*g}KVaY6*MBOPZbG+$^XXAE`Ne)%Z$Pz4<)FYM2FC;CWXR@m!nJ@3Xb@Sw;Usyj8IyiV|oZcc&m{+j+OaO1*}kf1v2M z?5HGWXtMRqUd~`z*tt%CsB{dBc0}bvn~KHuwezPw=;=Zn2PUUp@S4WUOy$Q-BHSHi zv}Qs4_iebZR*>mh@~*M3oP$?hi%@o1s>1*CNNMg_r=S@$megwxrzX-l#tQ%mx&@2z7BDEwU!eB67K)THy)l zLN!G)h?E-oL~bw@s=bSkgV3yKxguH7(iu}p zcDXjk?yjl`~2D;ZLYKL)}P*rd`MzmH?l4uLomHfT26fBN)e)w znf#L}KQ&&Nfo0BisR_Vi10p%*>I9RMwFr%y*XOC|qe8@_Fh7gd5?X{va%4^H-NpJk z%g#1Ze_TYwdJ_IYK!x!JNA5`SOL0^to$~9M1f_RK?>UONp?@Ps&EIulA%%#~a+!(r zP+|Q0!sBn2XfdFdxMMg<9n82r4siy{Fe@m1`QJpA4|`rgwV~zEw|Zo=qra_0@dEST zltwP;iw$#nsFq(0@t*4qf4QdLT|thlLt;!*CM<;h3FG3X=bfL|w2)tGG`IP+Xo`RH zQl4YMiN%t6$aSC=qWaPJ9=9+PKoW z_)=&GALHpc6RtiJ7Xj-gElyxcQxI2Wcw*vytHY9#Tz@o;iuso|qFGleZl(~;*wu>$ zpBO|gI7SJMv=c+ht~9KJ7re^5U(?>p6#n&TQlT{eEkd%GQ^cUSwfPc`Sz@b4Cv!XQ z%+y1NAE~q384LR<=?$Ov`2HgE%HxdRXNC*+`VERx{o6dzXCDuItVut?Oy*tjQ_)V$ z31NlMKRHLD$Kr$m?Ywx8liACqsjCs-3?$w}ns9FRE|HU3A*J`-0&-RhI~}*EFYAgG z0&=ekN3%Q1+6h9#Iqy+XwjmaJBBg&7)Mu#ECGHIl#djCJX9jXnT+hl=e4IF5W!Dyw zAiAN*BnHO1sHu2I3LcuCDL8xbR{|HV%Dig9iXDE?P52!;h0P)x~b>Rrg1o<=N&Grpu|OMq&l`t`B6=g|!ZEgiFiCb>vA(3Vytrz+s-O7?%0> zS7et*NyAYUpMH*{E_a_2s6~&PKxS;22V^1Z468@ayQY!fsJ%fOVEcIx z2`s?33v0PdA;18 zXxNa3H*JIIn@mbEMI#!W9Czw(f>#W)#8HEZWfhLfQ`ezQmm$~3$FcnzJz-dsV9vhi z9e{AgV$o@sNY4p~=H=yY56T#3Ue9@G%Q=FWCg=(p%+FktJF)EFrL11y4feLnqK)6) z^2=wN6*?TG7Z39@jp<+A!)t5n_vFzIx)e*&)%9LX2`n6AZT~QClza5}6Vr6USvFlSvWY4Nk=5(Ia@9f{xsr#2ZzrEnLslJ*gH^baX9|qqa+vm5 zs@`w4p8oK@E$mtSu(HJ`wEEtQRL&ueVn8%zqSUrVFUFS4JW zhohbei^5g7iDM}%2x%kBlVw$dPoc-M>X;O7$2X(i_00CIAG>K@cO>7U4*nfgEsnGC zn?tHOp<}Z2-wCf4Tm9SAVsx(Bj=H)m`NEdVL>%4pXEsACV z*DFfT>d`F8e@`mS|Dl&i8aRSx_oL+ojdPELGBJD`O`@Cc#u;&Euk;LHYD>w zS>>9SS^XY&RpefF-ygyLTbvB7XNf+Y#tk_A`XT@U|1e+(jhzV1AO&O-oL;vzA6Z+^ z)sCk~uB?-d11|wHo$ATf7WdGO<+H0J%A2cYht{sHVyGZPQYOpT{{1Rsj1faX-MW%# zEO9x5)JXGO$h||b@ah1il3QKMB>i+msqjyl-C6_w1WIPWsQD&FT}2#y>=x0on_Q9V zuV)cv1Ro&Q!|<8s%o>kZS5Mgqr@0;Iivy3^$?iBQgU7_;BEJtzzD)wHt*V5jy!Izn zl{-LiVo{3tJA=ATvXW4>)$aseMFwI4b*?oo@B5=>>q?KSLt+DMXP?UiDbzymQP0jH z-Qf+#_2Xmvx@VxIaW;t4|v9+y|(Nlds#ebx>9iOP*M*~|NG>#e&pu2v(gUy+vfGjN*S`v_fgY!bmzyo_wKU!=TxxSjOtYZ95e z9G~wtZRbBRdZK)W_q#hcaz8Jx9)!w-qi;5oc4sPSi&cl+s}nub>(3A(&;MvxoqepCf|$RXDW~8iqQQH5%Rktv&B#=kNBlSM|R?*-g$d7NK$WQz}y^`cyuLC565M&A)^*H|(f0od+yqj~M8{|I;I zkV%iH2YzThchqen%OnTfuVM_IHnph*)pU&b9vxI!54!Y5X`=(rJBjldRNxN-Kqt&MB~e<{O3tc(q#b7;yaf4L3g=Uko&r z+&;G9ThZR{BvGa3ugD@3+cU7dy`OpHP&$P#hT|x2T)sv1bBumHW1&^TQQ=d3Z)~89FFJ)@hh20Z}Muw@rs4?-6By%Z_n|2(#?=~T4CGky!QNawQ+n`tF`Cj z_vH6`_>>a?!MK89rkzV9VnT%TeXCy_!@B#GNH0E_D8=|^N0mUB(ZiHzNjO%Quq==8 z@T&*OS2(Xw}{}DHdM>lSBwno z0diS<0jp1DIPs1 z_*7Y?PX2f3;@boAlSghsLP)_;b$>e{=0u3dc@HhRmhSAg#}>Gnx!7HqAUG2a$+EYi z(q3JX(gwT*0%o6`>sWfzvRC=596AnbD?WggX_{gQAN77^GqrL(^JI?fzke(0WN6^> zQuVfJIS30){k4H@k9e|qq0hkbdMjv`l9 z{xO+ht8l$gseJKoGCb}fj^h@qm%eM{p24`orpTR3{iYTPYO?eftLjDHFXgp4pZS3%S&Te*CJ9~Qc0v+1JLlAfarQ1hemGolq z?k<{~ZL`Ge#?{uUN_`RsxH!irf3g-_wqR?UqR!HIP8T~#4Xuk#Y87G58A0=Rzr?i1 z=+z2kDetJ^cq8*Ui|lofzZ@TPIIMz{(a+`Vs&Wt$l4Ty;wcl!`-?&svBqEkDPOq}y z&oGrQeJeMc#uDW;;aTlp&mHy%{@JgA`Zc8-2;YSYnBP*m;3ZzA4|&Z)JSMzFO6->X zc{oB}85kJE3<*iA{fh!|aSck(bC9qGb+s6vFlN?c&ZHed(E#uiD=RCx(uFUs>m4vj zo~(Gt>-+JoqFO6YDV-;%F-M z=Iu$s)0JkVK%puusc+fX3{Tb`a-K+cXX(*eR*zcRyLM_;RCzG899kAv)EeoRC5Mkz zShe(xr9W7al4t~Qjfkx_OuYLF3qio2AY?8rOK&Q#oha$Sq;n``Ie0yHr`m!PJIYam zKKQ)Wj>`9@ez1VdpZ2BWjey&Bc-GmlZ;gF;_x%g^U$$Opa`*HUJ;Ej08_FveqPFV3 zXK3sDNbA8m1XqKx>|>iNxvw4%NwSBIktz$%4VOl?UR~b$KJTxcZ*`;RmDnR!peuT1W19jvwaLunZL> zh~kG{(zKM)gX9HH<)g`R14zE-jGSktR(DI3hKoM$u(QmI__o-z_grP4ri%JZF2mN& zHu{mv%4p;}e*Y%w2ltnjuC9&d?nhQI!{2uaeep~3!otnb)A_?o#Ac#`?}M}4hXuZ)$EP`g0|7|@o`IQt3^{9 z?L7rGefeeNC>>)2E>N7Xph*?#R?pGd{2IUH2IIAYiZ|(1*ZkLGh)JV#cm~7mZZM`O zcm)jG(D!p={93xF`?JIGdyt@R0JpARWEnX8HCeR<{wMIK=T$*p3!lA>0U9ddEs!_` zR4M=h0MH8j^Zn>c&lsFQ$q~$vx=f)-xx_ClOormL9i__Kj1$GD+iJFz4rIlE->0gD zp|n*w(q2W{dHD$4)OrKGjI8n+A1`@}878c@t&KG2vFoGj9#oL=mwVDsXluMYbyYzR zI-UE|PIwc0Fue=vBq454w@m(10Ve0}Sp8&@?9wD(#1TTvIP7kWK%Af1m zjhB9>3BOK?L-@27b0!5LLpo3Tvf{@q(xc(`tcplg2>BC{lYmqnf*q#`%Q1a;K1mmq zp1OY+bRvk~q-ZcDHVBgRuDM4g^UsML&-6SJz1Z^;!WHNc!|J*k?x+zhL?B8h&EeVG zvlGSXKJFFHNuWk% zCKj*rBheO?Ke(4g)>*cGs@G$i*2@o8c_#h3i@etY6J+?YHaY=uPH)<%VFwRoaoOj5 zCTgXxi37-|f4)gB^8n<+{Dt{`up3PDY=4#!yvE1x9*F%Ok6G^@10d{c*n`aTZlnio zNC==ca%3r~n_@;CMKf;cJUl-BExh6~1UbOS;es{naiYIuj#s`95l(kLzsSx0eecyg z>SW)VeG_;`lMQd{hJFN{%Kl5}-rWQ)O^j&#=7KB|)>-r4&(d02)|IUt9oryE`rqWB ziPg=Gm*sdDSOrpw%yo~0Qrj>~rR3P7BR0eN=7?+;{;k$5!y@v7za&mKvsS7X))NDM zafhGEie`m2_zroFdh_)2zxUKg?qzillOu>4{0QPHb)VRNOj`afarPsh!K0?rO@BT3`dtTa=e|-fcW6FSEzzBrrBKKRdJz=H z*r0)rn4dH3e^X-j$-Y%#BxcXrooGpCL6VH8(Z$nvH3syyoMl{|5jIOTh9|Z^}=#1(_42 z(Nj8f9FVh&_iNo%5b&j?^t>*=!@s5oQ+-1exR|?L%VgEVomN$3*V!z+=2gBGAmu5A zK8_WNCj4nxq}ctA6S5aKYI6E+AKB?Lg|qZ>7|-+?KKg0)`|ypRuXX998MU|ymM>O< zG4*l#Kh*6O)91WUi8#^t`wbKc)WW3ROJ=+ekZXy6W;ZMu5pMnUfS@cC!Ias7&eyUv zt1@#RWP`2@znaQi+@h`9NZk+PE#OKhT%$a~WNULFnPB)O7+ycKiuc@R|e}=2SmEZ2@{J6boNC3k6xroT*a_9Hh zQP=G*DWOmo(;+DHMo+K&yh?_e60BRDu;AUGp%Xx2d1sJ zbFt$<0w%hz{CtBB^Utx!k32fFw8_Obm}Hnd^$JR?yo7#-;!iiHcCg zt6vBH{kaVTY1tr`1%4CfP|ceC)C_F5#3L4uz}Cxk84SfQqz`K>xl!pT+yImD1m`kY2GxZ zhbWGQ3E$c2G*DFB~5~}J<7(*5*-*vjg;&y>5M4sqU1yW{yrm{P=d(z3e^veDch%F`n2kIAhjzHY4y|qJ*^fM#yo7>5)Ph3*gX&IQHQn8O{cdKm+bAmZ zoJ}#S5Ap*Ya;U)s-3poY-JSCMwLwDS-@7J_7;&so4~>&=64uf{Z-iXv#reJxmta>m zzS7Vr@ykUMBYSlh@pp^L<3v$Y^fK;aB7Ek?K$5+?D86a;{G0HCMXb%WRF)e&$*WV+ zf0CMdZ-b*{f7Ze7)s!z!c7=vsx98O6Hjgk|`0Q>CI0!;_HaN{ZH$%zmy`MoiOlPe!IIBrgztb(S8XsVwZWFce5B7 z%ZZTckKk;d&N2q(5azlf$0@L5`_XfNrA+;A=$6|3@K##w?B4H*5C%8TL;b7CyuOt- zLvgP?_Q-y$y?N~nBKrJea~F5wV&J?rbr;d$PP|&>)1sB?T{wnL^|FC?Ej==ww#j_1`5A+JLxtyX=n0PeG}#zU0DHN z3{d*oGNW)uX)W8qI}?$6rJI$+@;FMH_E4^q7i6)wUwfh2)oGIiAONX} zmtaopkzy8O=C%Orz< z4)1maW3BTs+YPq*)!Apfi{*40D0iTH-Oxkj+u)5;KbsXVEbjQTda8o3ZxG6b7ysZ_D8rzX z9YjGEdEGD0V6M(Lq!*NK&QGe>0xu9H+|RRKmL0aS{Y3b4b8gOYN5sMx^00qt6z%nn zSK*V;9f!;Ij6NN%;`_p9;eCt40%U%gM{}*f+^m_y z8_!;fO2jj80#yq&!u=7s^ak!?;(+852&008ePVI4g}9c-o_D9Av#)QjDJP`ep=;~l z0N&{NV7}0%@BSKAdO%WyaQ}$;mR^q1s(lUC(stM5>J?^dt2)i6b=S8e{IZTk5{2ml zjD3w4W5#tsL@Y}^x3EMht*gLRSm>a0S#YTg?YHBe#KvcR*`0@TjXtkh(pj?#YW1#+ zW|PKu3)`3)XD$L@l>uOHGWjdFi~RSSJ>y4=k!?ahK0|14nI|8Y%)8g7oA4$0Ci&uU z%G!4C?$TLCe=es>n(Qs5?{i(x4C=%^pxaim%bjx8cR>YU-BX@Q;KuB0M4^89t8N=y zI%xAi%`66|7i=O$syFW57KJCJ@yUmq!2+!+i!k;h?(4{+_HT%hIY_?$6CIN-OYXhZylkJg%^Y zY7dT2fU1@LAO4wv7%-EEnP#@x7B;lDz{ixYvvxzGxloPQMD^=3uH>j zG+^^My(6A9{8aa8a=JEE!P4WGH>Yd~r}Tb7*0qKBnp=a9ifG+EZDEbva$H2PN?y|Q zPo#B}BxHy0YKB&z8-pcwE1J~<$!6GpM7en`Me1q24?n_kdDVsLC}hI=TeR&Zwk(}k zi>&r_fx2<#L|l1Dj+dEm7yI2X?z69T+|H=hSGqswst5hw`c8LmJa`wU=XCxx*I_b< zt+;JbF$uyyM}o#2PBT8Z!w=VM+KLkEgbbWVZDru)3RGvI+SRMrjHqFc*-&VlVhN}S z2ggyaIr(_WCR*TWebD6|p_8zdH)#I1V(83wsH!(r0=%K|5StpO$}~kr#WV2HcGtNX zf{c8qxYla+rKbt*LDDsvZ%URHpKp|k;XNz;g~Nz1A=k-45QuICjOFE#*Iy>FMcWZV# zyqr++@lnw|xbt2Sa!c;!=B8<}{~ig4o$ymmwfoZ<4!OtM z9ndNRujY<{cjFQ1JQW)c!~~50VQvrI1ThEg8}QvG-eQ6Apyc*x@QUx4Z*xf%iGWp) z>%uDIXBs@v=$mIZnz;(CW3p+dAPey3XB@M-2ul>2|E=x(5%S@f2e-5;kK4r&B&EA^G)SkE^hg0gLb|298>MR?D%~K`E#2K9%|8ZOmkXT)D4)EJ0!U|CM#}D1E zx_JGGh*#;G+uqb?NRT4ZsmOc%$OyShQkC66Vl&@5!oV-uF7SyUt+uTg+3SdsbK9M6 zmp(tt%!h#rg!umRn<01R2XAW`{S?eDPxGt`8SLO&M2e}W9MMkWSlrx)H)QX{Q=cBI z5)=5J;*U>$k_aF{vZ_coOZt-VoU^pw~3CLFC za7CFZXg!EGplkiP)_to{z$1@nL~>%P4X+2_L>@R1NSf$19M*!Fd0`@Il+3dpJ^%ip zI#xJMv2Ap`bUYj1P5^TjkUF_Ic|!efLiMbbL+k2zI>WJV@Z$)*T4a=4o%R%Oj%O)_ zsAoF@B4MMwQ$@95oD$)mE6Bekz6u94&0naHPxFnl4qpj}l}R%hAj7rWF8mG&#|BFc zg{5})6+QAOGrpQR1Z?5_Sb_Tz0jjKDXQzv~P*4Yr(0sSoFBJc{ct>t}bF@MQJ|w)* zF!E@S=koXJjkY>O=6S2Y?3O)K_+Y={wJw`#5CUwptX&|daDRt$^F=R}Faq&VY%@^mH45vRW8>z=Mkw%*B^(B` zMDO{A5eV4M;LDNQQ8}<&hx-NAF1xw80m&_-SIJ_4e*pQypSJ=?f?^L&^69CfuZT1j02 zcP3UZ8Fj6TSKLUkm0*r1Xl^fLlXSg0BY*|H0DQooD*l@;o()!l=^rYewx9+wS-l0- zIA71>iX^3x-;0=GD%oaSVA;&fNmQYSRA*I{)Lr*Z3FZk1BwNZ`+xgDi&D(Y$-#LMR z&Ry?N%hX+!T{mEn;V<`UFH0M?W=jz;)G|f#aXs}RO&oe@g0fQ&U8*(+(}})h2n3Vz zVNz$U7PDN0RctxwBR$&GtP@zSDT@g_C3y3kz*i$i{k$qCVQ)S+kvKgt+8LZ}Nx($B zLOC$g(L!#KhhKQgxx`5B_}BYHTs9*2hM1661QQ)v`PKOLt`r8Jt#c7hEWF&$@xO)^ zeB7d$F!@Q>I#%|6g8SR7KVa*&l%~aBTzu z8cBb^p3Ib-a%Yb?2f!0&eoM**SRBP)4Kt6d0u${M(3W$58CApaYxKPH1jtE<%zWt^yzKXaZ9qI5N zn+2^m#Y!og?EwIM6%O~;U_=I-ew6mucIAW!>B6=oZ z9BG{5lyfnu*LSTps$M-A*tu1^)FV{-X8b(k(Ix|*;f zP>ATl^J}|W^6i}6p~y8tisge$1RJ2UlW*1PLK)*sDoi2)%af^BO%i0nO2WH$Z(gLl zuTm5QAY3 z!5gnxTlW=V2H|xq$eP}$Tr!de13}|oc2Zcv64Ca-5}GWqSlroHYB}y(n~Y&?r9X68 zr)Tkp2+Iir<~8P#^%b69;wW+M7Xb>MS#wb#%MHKwapp)g#yYLCxuBk)=-;s)ZsQZ< zQ~GY6?K|fiWZM5uD_`y_KO6f!EdFyH`qD6mE!WSKd_E_Gtj{y{usY(x6NhZ5Tb zj;qC%F7n+KBP+LCKK1PfX>4hu0)5+dWjs)iii^}v7s>>7gnDgRHh?q&ye?sb$|;Sl zE4b2nfs{hp=X(_-lIvk;g5))~XWGowzG`>_gz@`y2#Ia83mTsN8HuMf|PC3Qqz|W z3T9Q#$wuxlX8b73S&0mt_VfwL0^NW#mdi!}4)BMB#14?n8yg!x2RtfjlVqVz192p? zMgp50$5wmy#^tlKP3Dwn-M6WuR&GoLFnjiGhnB*W=RM4{05YZzcASPV^Un$2iF03r zQxZ#l&fdxQk;n8*HwegS=j2bCfY4pia2a`A2=nXc)wB|fSifS%aCG;Or zf;UpeGs6iTDDeKrO>KU8t0W{ob4o*z8v*?WC5ZV>MRX77_Rg@bj#_tlp8a7F$>XWu z@N}B;ZD5Vs%2IMoG}5oFVDtUL+2G~%!vZ!P?R2zoDl~3_U!q0}Cqy5gwJu@BJwX7h zzN(1-;pVZ}FfuHj{wpDQnUETp4sN%PysI^((i{5YNHgwChLK>7^B|a~Z1pu0D{nV{ zmA?%|1xFzOTv21sigSF6+mikcsE(`Gzc{#Z+qn>E>B(A7 zq!!Aa073xG*T}_Xr7j7-Kt`^XiT=&)eR@brc!jJ$j-mEn27i3gFin=N#QOH1?~M)R zN(VJLb_NGB`<1ymb#s%8-%7qOfaoA1E-8~_iCxNux`*YvzK83uihKvZrG~Q)?)c_K zTC}2Xhk7;88NO3K(JnQwH#nAzVAzRfNw#eLi`m`d@5fMH{?|0O+^|8}P*+*pPs zE3@535?!=5Q*0*@0Ej}VfJ~$bFuv@v{pUXdF$pssbBJ{a?H8FOZhnt3|1>@@{kV=> zY3WX7(eCw(Lh~F=Q?jt7Kz1^SmCLwYTCr;x-eKLid{>VQe7NbQZA&%F_IIbxNB~Cs z&P2duYgB&6N(SH>BJzjIjh%c9yL&?!1#;M^m5o;2=)ZIgFZPwU&G_t&$ zWDw~2pV7Z5-`C~GqI{^P)ERbh2hCPbkaJPVe=(5N z3-ig?WC^)0IpCWA8L41(WpinNG;(PxyvcKkNjH2?NhY8Fg8vUu3e8MSAU&H!^zqo7cJXY=~ zpQIw~CE)F6cJT)Kn>@bE*TwzyvAE>rRMTwSfiOzOXyNZAdEEzsSLaNI{}X8m0~=sBv~ks)27)n5s7kA_Z>A;;Q6F-mSjh17nPA8uC3WVWI*EZ~&FQ4%O$ z5Tvjqr+v>r#_;2%hYTT_UHPGZKBGXCn=Zp%dRBWyl>>6WZ=@J^!=HPpc_9h2dOqDk z+i39!kUYjNOo)y|>I-VoK%IcY@+8ZCkkPWHJ%24n(I58CweXMyjTRI-axs`$`fnDvPoJ&Jgl!E9)-n>%%bNgXmpKtYVS-_%#=~N!8Q)5;t*7%t$vHOo0 zED#I5=yC)4LXD(60Z#go(t>lFe7Br%c{U1431p=&K)~S!M!p1PkZ%*vHLuQl7t;3h ziY1>Qes1kjA}i=sNB}p5=*e;$W&Q}f(uyVxmO*@B%AF(=?(Zx~l^6MRLzxVI(ktpW z>eG!uXU*zKbJN8Z8@9%!Eprm2y0+k^^w%NP((AK5!z6pn(CZie7p@*-N`CS6(Txmd zj(-{wLnpn$mpw$ix)~L6664Y-wu%t0GnP54w;ta<+(Q_6`M|R-=V=_AgPMmTtkPtZ zg~gHq-|Gw0(2r+?QZef@tGg2_z+d^`)T70JI-iZct=qfU3QAC4%uIY6@6s%-B#E4* zNYduE=pxC4n~if&oT=xn@im$D-xRfo`-;B8+Up{x(7%c?)x^KQrTd+JyUu#jX`1{@ zl}^oyj2P$kr4`cs6^}52kese=UTis8$dDUV8ZBiG^qW?V)5VPCCUDx8TzzF^I)i`g z*MGIDM2JpmGry=a=+&55h%`Q-+8ZVnko~D80u!72DO2|48!~&7tp*0=9P4-7qfNft z`^%+m`Fr1lEH7gjTK^np0>WwY*Y=Hm(alWJW^jhe*Z;XB-8T4{hc&HY$ZGF0_^EWcew*1_;?&vofjNk=3IRmFj18HB~i+MxAY4^+fJ2Yq1K8l zxz61hDabg>0?5fe$5*#AtomU* zbVZ;3aM%BEci4V22x3T0`>4F*Gu-zDTq+k9{ZX>C1=5FA#O@MJgQA;muMz(k4R#4!bzMqk*nM+>W1FnVR4uGB zSV+pgq9#YqTxz9xc@^FlW$xIuKM#AO^JaJT?AEjErFWScr=tvKdB7u^{r(Ul@`kp}f^>`p*W@Dr}7ysZ*x=B1H*t$rm^LqK4d-t=y zAlwtx`OP;z`YCufF7#>__-JjczYF72q)l%q#MEgDlXHa>=-P=8qI$Ma=_`l@Rh#iF7`;i{+x0C|@ zJh&Ok@Yw-os{isxPlm@#rq9emmel{3*<@(&WgNtyq?wVDV!4gO$e7qYP!@k`oH(ZK z0XF<$QwZNiLZh41%ujiF8rQ3fR-C3?#vH29UUc@jVtq{=uy(zZ3e2egRbsWZ$fI?o zR|bBKr_Tr*vy#y`0TyUY4B*UCpckE(xXU^Nta@TJruCoK%IHS4qGh58A^s4)Ax%&; zNN4M9{~V{+cGlQ+YBQ_&;%bl#XaG zI1Ko{a%D*}k7)vL5uhV|)FvXt=RI0a=;EIlO4(S`M)lBpK-Xi<6Fw(!u-@0tZV*nN z_ysWHcL9R-24J=h3_K}J)stTpT=@*c??dM;;rRwGhldFW&b=cc-^_>fJiSw-03rkr zWAQ~5J#6{K4&>(`%QVZ&arIdxyV$e1DrOlq>FF%94o+^X!!Q_d!Ld_?c-JH9HdqP~ zD>H@$2zh_U7T0-0GZf%zf`uNUM#=a2+k@6$w9`aUCjM8~dn|0*`gZloh80tXffBAMkU{DRiA2Vm)>Z>iatHx#>{TgO{y`rdipE@VG96#spF z55GEUEmK{YF%sQH|KLj78KCnVk9;qThq|*t`s*BR=7mo?MBJ9VH<=iMQ~cP`h_IGL z$Tax)=$3?|ndL2w=xvYETE2P4B(C%vKNJ!MzjuB@Rd`ztG@Yyu3G0v^cJq_0Jc|io z(Uo;jpG%1HmT-SoY`SnV^{bpZhuMX3oRT7y)}2=uTgDtKm$_WFS%@AhLinYMp_~OjYtf=bCoxo_rLki@hh$SzQEiWYS&3O zI6a%3>dtS~rCj(V!8ZhE60zMWw^TJb@oFCyE?G&v`$jUU{xMGq6%=*Egwh~KzpOdCYZ;RR?-%`!H?C%eBL{+#p@pMOBw zHdO#I{@IQOGC4e1v)i#fSW1{;>Cj~S77eyJ4=N8W4Iu%2JHV}Sw+h#R?X%c;p5Np7ChBH-%m+Dv}>S%kKdkc z4tyZRd??+rYT5ljS(1iP&ZrN7H<_aZT=MYH?v2b1L#v5pWoPt(u}pC$g@h~1&9kAX z!VcQ;lGS56U;&wFfSL!LQY32D=z7B<0Yyt&JKx~|2x@WsG2td+kUbiUJRh>TuhZoK z{0__$7iVpcXPXKe!aK&#+dwYhA4O?{X(Q}n)yoO6B#{QZ>3nz)Qsuh`9o;;fKD1&0 zXWYAz^)}`~i5CBF0;zzO+x2>*h)J;6t!V)p+a}Lbt|uqKog08svqH z9=i^{=?z%(e50vz@skoEcDx50G#tATIouPBr`FwT2$3nz&lK%KWwH@rid%k zZ#{1&?C#c7S|yKLrjX2K1-{>Okc?+$SQ}ei1~Da2pir)mZ0~G1*&ziIPr+GP*Umg3 zU8OH)*;hEVh|hGyTl?W~@1I|fyhUFt`pYYcIUw{0#Npm-ean7wL`~Sn@+X$s>ctVX zLG%f__v(s1k0Lpl+K|ja-mnb|jo1$fgSM1@!I8U$8gj(H??>0CVx*HEt_l^tk`fMy zmJj>}+xD9^_L2BTkahP*pxl}CFuSbp8xrezKVt&m;tG_Q$miS-eI~G3i z)l~os5faWZ5#Uy&b-sw0(*G(+QxR|TKC9tO|DfGL22CZVDsZBx8l=P%MHGej8&ge$ zzIfn}P%g*a`$!sZ2$MafQ3_BlrgeAU(CW;1;j5tiox+>byKbTKYRqc7ecTAWGwZSt ze6ubbS^-be&-)7CZ&cR;!Vd)~fq!Y=cSSm$uPVK-4jAP$0ACt5c)o#OwJ-bS{L_YF zG6=t*XDWGnB9efM^Qbu$bkn8iFoPneq`vx3cRpENt1fkGCbsA|z$2`wn3RWD;jyK; z6{VuFF2HYAR-sg6i{mvlZ*4VKS4?3V|WC;iQHb5AC~~0|}P_6EQ6$qo0(S z2(kx-n^3XaDV2Wn)cBmfM;Huc)gsgZ8Mg(FwZLI#PhL(>hbElq=?2kxo#<7H;Z=cO z1+Vax?Aj==KBVL~zEA5n-CpBNiQ{qC?rDE3Oo+-w<=IsnWDyxtl}eZ}PqRybw8f3K zP-S;>#KjmSb$qFZbov$i%>QW{?|0^=8{*1tNKo-^;cd$up4ci`IgzvuIwUODKUxEfv+FsnKouvB`><|J^kqK8CMLY-U z6=_HO$JxE_f--a{)#9tYBr${K_V z?bg*l>AvP1`GwMtHe)^h%ls6*nhe`b{$Pusl07y}kNmSu4VvtY2e?7gL zX6)G?jNJMkb*vpGR3GwQ@sMB70Di>n$Hxre>pyu=wEyBIhsH0X1Ao{tFfRa;I?wvi zV<_x#XFkI)LyIsl6ez*%@l=N0+s&m@AGUt06gOpJ_4aglJh_g*%adPeqG2BEVN~C%&Ce#tpMq zm+s3d4Y?`0Qb6A}7AqN$r1@&x<$u)m7J9}n3$I1r%Evh!ak+YVKB)?t$mZI9@;z_# ze>}ztey6sCT?7qP`m&cE*{ZPLHh*8bZgX8vl{aK6Lx@B}re)gjU#tk&g_m%jrDs;V=ImLiA0 z8ZF1dlE5?W_6_eOR*h;`;X}oIK$Wt{vCH~^SYW{uH!RDNU;yU0<) zio>=09DD`%TFmst3Iph{@IKe~8J6!kK?;QIYP|M_am20tr2lJ%ZN}*0qd{<@YSk}S zgv1tk=mHT8R@>HmN97D66=uG6-wOfY3<8=q^3a^mDr|?@E7noxE(35_ z^2titVf}NJ1_I0TbBwqGvU%<5)W5(hy!}BTn9lSZv}#ySxqu;DsajPsi&YaX{Jcf3 zqgHbL8Z*|(gK|{DK>1t13oFvIa@sA!>*K7?=}_kTRRwAFA#bD_p)&RphBkkzEH@b2 z%~`jkSVe?RyJWw@OR?IKB(>%3x~N;UfA;xKuevnfa|K#37a_Dsp5|u7aUo4iz%a(o z`HmZ$fF2y53^Y4`3aCU!%Uq8tJn1o$#9fcic9Z0udcj3pJ6Tmh!W16n?KUTCosf*^ z>3y<4VAeq>rVQ@tzP$A759db`RT`>62XA;SI4q;&nXGTJ%CrYNfjXBY3euxA+Beu^ z&WDj-q*3PDP~B9l_bC)$Z1-vmNJoo}*oXcYne~$m;2dy$)n};3XeR<%We6D2xnlEKl!t2yY=K!ij|Br8HN-`{FE_`L?Y`X-Qv7&w z(~%1&ipT>*1$CQkt(}_D5&3{6iv&%m30wBoPiW7q{=)-aPAOYP7)!Lg=2{Nz@4|vV zc0ln~y?$JjCx8$2^Yfdi@m4gRb>X*i#RN&(aRSk$E{nlrKB081h{?}CJKvM?q87}h z_)VzqsZPZF01&}e{P|~F$ zWFn59%&S9`-z9$U&Fx+?62z`FXe6s{)V*Lb#C^Yi$9^boY@QeRA!P!=Z#SfgiB+#8Vc_fk z{#0G^&JWaCz38n%M|;vGQ!M+B;n7vIWL2t8_&eb+K_$}N*7!>;wra*}o!8wkEl?^C z0WF~|E4rK!UDyvugrr}Y2VGtx6}l9dK2a&WEeAtV-G@3@{J=h9me(51f^o0>6P|l! z;UVUO1K=42o=(IWb_k1k%WBd#k53jZDsc+jGIu^0ECIPT^ zR&D?X&9rveyq(WIV8l#725rPuWcN>{kxPRS&sb}6K6;m^lIS^j-2McQn8+u@2j(&B z0A3XmX8v6Y=`mH;Bc82KkR;|M^dRFX>U&+7O`t%Kp~&(lt!0@)!Vvc1ySCK4ePV~; zWf6liAD|;wt0nT%WASzt*)BLX);UmM+MU|^s>YE)$YLf_>afD)>42&z)?ryslEdF#u0e2R<~Gx%Z(S%ZN4WHCF7Ba? z&7ZaUD-u7_={&LS?hSdvXecS+eisI&GWn+PdBGDLt)DN_8Y1| z9Z930^8XQQiyR)NI$Gdy*}WdI#2AIIlXUh5DKdgDUkSA3!a3W{)}^HH;?%gP#xcsy zO+kh*tyJXYW8m$77ppPK{3a!O?*SA1Ev|L{1K{)Y*uI%ZOl!_{@`JFT*xlW(BY7Am ztMXaREb88(;;-Ry8W19bGZHOXFYZD)#*&mYJ`pV+#{>IKY`w~EZRbw=#zfE^Un8u; zvPOa--ptA^n{?OtvL9D2nm-EfEwef#M~(*s#%#-dt9;*|XammH`&^|!jFyt3%W6}O zJmr&2v(K%npsfvD%a`V83nQQfr+-fZU{hdaL&}mrNZq0}VpeIzqt;qGwXA>sg~nKu zaLn7)*q#)FP;;E;s#fjqX0o3LUoJWxNuEz5B*Sl){;MEKDgu~}0EQ9R2^rG;C9*Go z2A7?yL*r_glN2cgtfY71QlY@2nx^_o#WgjCmE;H4?ZFsDYK#aq2M^^nYP2grs%%$a z``V{IVCk~<;plgId;^u(V>&I_1sk9!OH(pJ$CpS82rX>m8M-6USYLbmJKeu05SoYH zbo^HCK*fk4elFJ*@zP$+8<6Ux21HFGNc?7?cP1 z1=^iPc$t!igxBGo?*RC;A{bI6Yb&k&X;T)~aO|yKp~L=PgbZjzp@@91+48q#b0X-T zAn0+E#`Z9+!gkTI;gSyB1!9?zomp#C9#Gb>AC+%Y_c2wodeI&LhFAf^R0EY357N3# z3-L0=a8d3TcHj9hUfrpwWo#-rkZ5jgJXC+;mgL03!LQ?$u(p@acIVWRh43y7U*VlC z=IulWTzDUrZKd8bLCu~gAzmwEcc+KstiRB~Pni`s)}{#ala+ZW&|3ds*Kaj|B{{zm z!}jdY5+LRN7$p@(AwsTx`22zt{wm5ZneU{!e~ssMRs77W_> zip%U`J+|(`S(Lcv&W?c~#*YsF9@7>^!^*q+#*XdtbKcHJ2xtb)Ed26Mnr&9C?&x6c zPjR5N$;Cn0P%!IZ4O>0*utyvu2s9cH8sY4zmJvKeQvc)?GE`r~WiZ z!4$V5*NNQe4F@t9zgquo00-PxHKo6&KaAub*oysg^u3eX-C>epT=cV2~#k7!;2Q zO`wr<6<%5AX4w~~gUk|K#R@R^n#V;HTGx{KWbysl0<gQuhZ9@&> z?Vnb zeCz3Y_n>OUSCotn{J#CKi0I|wW%s2g=&s|11R8jg>C~T8P;J$wU!z~HXPj}?5_C@m zoRyp=m9(^pfLna4-%UKc-A{ShJ+KYGFAD)9uuxO`hCDb6MFiw}acT4*sUMwL;xP+~FTDiGwEt~!6_ zY|1`G5k4oQ7B$JNc&$c(@bZnD!PF{o;j)2B?@Dw|_Wj#g3OruYjK*>yPQ$5gwhG2vVW*9qEe4_?HM#PChC$lxaRiXh6t{w)}-eO5QrrWUQhxE8&h zA0wR>W{PHFDHQe!%=^0vbzLCg_n^p_&ajrWHtOCEg$K;vw6n0v(dZCKXbR_*0aCnB ziX}M9`oF28vi&*w;sOA7$x{~VZkCLs@yGm9WBQy?S!Fo(d`*xn#vEmy=BU0r#~)WH zG0?ondZ`v!%47&&=QB0n4VU z2GFnc{fD0*GJd+AZ}q-|4B1OS;FO5gVoIB$3gpEq#acj7s1hsCyhuVqGHO*z`}Lw= z0I=UqSY;SX>@LRamd&~4Dc0&w1cVXW(j4J?7R=9Q-+KD3ZANrVH!%M3>30{D+gLaj z)Ll-p0!F}EeJ)*&)KOx-=Jw61WfM%${w(~k9((TJkYfBri%!Bv*21=jj3oE`ye?}c z0An;)0oc%hQE2%-Blc|xRza+@4p2FOZnmFZ`KlsY#kIM@vZd`m^{1gkMj8f`{;))c zE-x=9t$iXy7Ayn2Nq+K>qJ=5{KLr5Fz}GOrHnXwOX#55^hO76-m^00=BFa~W%vZu_ zpZ&UMQkC0-9>gD3smVfrxYOz)TKraMd=xbw@N6lxC9jKab-1#SrewY;vnxzdWOnJM zPZEA)>r~Ll7DPPRyI7C+6dxcu;?mgbo9V&XFsi0Z3!YhhbU{A&i`(wmOao$k)})Dl zVEvjv1fK{n$*KSsR^(qa1cncUtk}; zIyyKx_BTn;h~j8^DBds z!yAqlk3A`)0i$kO(DQE4&fUl-z=*0k15k$o>};0Ff76Wso*Yw&%njc$-!`DP+xlmb zg%`u(C6$AN4JRR%{Wa&IrGgz}b#y02?B0G-7XQ4#B>v_pYtR$VgPHgC^z1;nzMY0N zclx;ECefemv|TRa^FNjC8}l7^M3o(ZJzv`B)$kMV7i=)(2>Z&2*-J;P{hzMpHw!M$ zx0Ru-K0QDvNg~^ixkXCf;4O*8-Rs{3?g#S{F64JAAuRGJ5iJMKIV|Kg?(q}bC75g690U{xWQ!KCPmoyJS?I7 z`N&ES0d@cM&Ul>Wzs86Ue$A?_^@&q%eKQtSxW$2dxCV1t>O~@se%ttvqp)%bPc>bI z$-Ik9_eoO;JECU+P51Pfbp6m!k${ps6a@ALh+S*&J{B-8zyM_|0?5CvjE1T#0?IzP+I@Z zcD&xa>6S0bBP#g3;4|gdBHXI*p#E?x2ZTLC#??8QIRdGzglU*9h0ZZnl2|8X+%go( zg4bizf`bMecfjWZyFwYadP1Wnz!vL6U7VTYBu_c_tNPWNEX8^o5onIQ8A@5~gC5rF zP=|;8S}L303K4J8#4w>2aUZjs$i2MR9YX~TBbu;ZfY7pQ;1AA`AgT&HawD>V!?x5H zbCeX?3lI&N-Bo4&N_yK;OU%kDL`xh&QO${X2^)a=`=;iIlZhxQtN{`{bJLRS8-~v-oRcV4G z#P+Dt^yr52MJjB{($G8qZufTC-ylL_B52JVYB=4mtqZ>|#&*6FLe+*WdDH2X>s4`u z@TEl6E>db@IdVE)><0kLsC?R7k#GAYIlIRYkx|JKI4yZ=y!9IA^aH}+od zfWV%!@acf$a}wYuNd;10>~F^>+CK8Ag7YH9ZX`&2PR0T}AD;FOt6(&^^rRGYC5K-? z489FcvQAk2$8 z^Mk}j3tUbHDw*XCHnSHxpUluY&40_Qdj@UJdrw^ZQEP-vn;f0@hINo6d=U*=34Dp@ z*x8GCp+#EH!oHdvF!ryuy`{tMw28Vhd2#D_g+}mQKvA^SGG`99@w9 zyh~#4#h9IJaBcO_`iXKtkI4V$dqw-Qw=!juI zFQbUh0AkqD`zF0ncGVC1#T0L@Vl7Xx4bFlTl7T4`WECb*6=ifGwBz{ng?q6;>DafT zQrq(U3U*He*vHW#w+-R*D)<#v(9^X+9?Q<-5t&@e+3zo^K*n?X(X7k2-mLyKsd2b& zRCA0!ezKx3ch3U6OtaVg&0(r)@kfD%EHyYb*`0W4e9~Q9v~$@ftwxt@di+D9cphKY z&+i~v{Y@2|C85{5BqaZJ@{mkqySW7RTkyVD+NYw{R^Pz90l%C-}eLN%8fDxRX#JS{QQOFy9}w}NS3TBT?>vM6Nz<~tHkBB zLj)fw&6glGWmQb!&BA16Ha#6>UDtF37AYQIKdRDIFPM)C;+wbXsn2^+yJ(Tqad;Ts zYwHl^*Gt=0sjAP^>29uH0aaRi z%hdU?>J!dH)9)i}mtGTs6(ckULY$>g)O-+M67!x-bRRUITDXvdn$1>jgm7<~UL@D)8G2j73=1i=njW#d%2wkiaf-VV^AfEFxj=7apQ%2*@`}*kWY1?}NkW$1MKhKxd zRVr9}z(_>GC*ifRbRi)4y!??88`T{Y`rW?QUjmROb24%b%W(t3jtmOy_6$|FPi)?S z|F*4vXgG>a+qPFKW1K_R-z<68ff$*oeq`|WN3WjRs{4xlbyE#fGyz1IURkpaU!^9p zwpL)*ntgoUZhT@wH@h6TErefwg{rr_9Tff^aj9+j7)1(}rT5|Fq4apXkYRO(m9+RtM4w!!zdPGg zS}Q4j(d?mB$5_-78tLiqy77D~*?#&`Qu?@=g39{+sAVnOh%0Px^u$V6~e%wcaFQW7E zz5HB#iZ+1`5^>u2L)W|a8EUwiGBdf!v7_MThJ3!%1fVAR(LK&B9`<-G1T4vR;W5A2 zdMqT&|9%x3a_IuaO`Uel0nJahOSQ*o=dG(>C z9=&a+wqAPjDWV(A`L=E0yz%Bt)mA)XL(DuEw&S(H13c#j(AjFYfz|8)=ZQsHZdjTB zs}zRxNifp#SL)guoxb<3UsRO;L(h2v80IcFq&h3nOypy~v7NQ2SAZFwG%|~w{W*Rutr3sN(1@6I-+0VS8YpC0+Wc;6`6~zR^KYkBGrMjP z&pv<*xessOA@{Yfr%MJ5oSdXJI(2M5KE{6HY7Nnz_po7XYW+;0@a2+^UD+x1JBU>S zA2p@ig7<1TswLgvB$O@p_fifuZk>k;6>B8EuXSj-@9CMBLU&XxVoWCrfdE|>wnl50 z>Ax)5Oz6A%@TV@KJy^Z7>wo5w55D5J%sI9+gMhadY-bTaINvL8P zgwICtZkn8NBH9Mzr~JNj%)DOYnr&sa3`U|Gz1c#lU5%d>JLa`NIV?aOG03n-m1#vi**fyWf0N zDOy@Xr>Yr_LIpnO0EqE=A1|#E>Vbr$o2Sb-kjS;o2uZy3t_aq|LtHObBZ^yR)7G21 zi9bxInrp6V87t9NU!D62<^5GI(lW|D_kozv%d3&4ys5S6f9ThX#f;-?DL4o4YrFNS z<9=AV#l6?6w$O>+mVR)TAj6?#843K(vYPF0>#C-|YfAfkPC0pLsVPJ~k^Yr<*JL%j z??-#-GmM*#S__xxVJdwL;wUR|)xnF%eU2S_f%PNTp@T)ToBQ!Jv?ggK`-` zxSe>CRH;iNRNFv>hMfM5wzjLEA3%@A0$y5*c3gGp?t~F-;g+M@NDI7UbLQW71?@80 z1o{+#rb)4SKqNA#bWDUaXn|bfXSw!dKlo_a70p-nm!+F4iRlVpqI89h?4hQGF0!qU=-Lc*ZU!yZ8CV{4Z-{e(^ z6NlkVKZLIla5=1@M+M*Gpu89SiJ%w%C+z*kcAu?m5mU?k@+w|uv+#jcxz9K%k3{z|N@JTN*~4|Y_}?I-oL z?zyOYRsH>ozoFWqi5Kwv%45*oR=o+8ew@z>GI$%p%uRZX>a2m5?6<(}e zhQUoF4gLv~8yPa9E(x`?;j&^)MbuwXng5`0Rq|C_^%Q-eMHamR$iqW2X=36%88 zty@~?7Wm1dMP=jq&13OT#j!nVweWWt0$rx#BY5SJRnl5soDZc)tGVHfsi74P+ztxi zwEv=k!*iPDD2d3-cKAgtS*@Hr@6ZQ5j3jv*r*-?xukAMv=TOrOFNw0@Vdf42B2B-| zWT+6-I<+H{& z>4A^1?C!OjXMdHhi>WQK;ToFI8EOXm7u>0n;*)=pPL#dkmOZxuCv~S(*%?mby~57f z!Mp?iN6}da!u`i#9Mj#+#OWT>OuLg))6L}RW}Dh@nj5Cun2s~KX=a*J)7{fG{Jy`x z{papJpU?aKJkRSH%VE5IWixU{PIa8VhVswIX}tryYQ26L7gI<|e{gnbz;#fGog&!<&iV)>J^0VtG)`Rs;<|IZhoCg*UUzK+b1O~+)M zOe3tAkSvU4=mq@hO-*U@bdy8yHF8|4@6NT)^#y9Uf$K^#2hMOGdpQNrTu?mZW3TJ=pGp8=Xb-nncIS<%m*XU& zp*x5*ToP?GRcA0GBx7?tz%@10n2hF3jJ6#C@F4F!N7r3Pfv8Vf8Mvxe!77`>waNJAfowo&_uuCzv0RifjHMt#_Ny)Q`o#)%>Cuobo1LF3q9%L4hso z#>RajK&G(eYkNp&JHo^>la|^UIRNlJI~wfX&jD0hogfSYQUQPn?E;l@5Aq!nL%zaE zmnkMNmSc!nD>j?%DW~p>+p16Mpz2cw@GXGhrRvE!|C}4)AB(~Z49HnaDy;nVrAJVxnFP1_Vf)#+?t6%V0X(U5!pN&$Hunm9*G?pVIQU0>qhgP zDxXw1n8$2TYC`R`4-gz`c0ESOXS$Gp^H9Fpz7_s)a((>q6K5}9@PU(}%fHLt)z;$HGP#d9ID;&C+{ix{kd>O>lzWC=Dr>=Yx|L+7#TN7G4@$Ja9Bypz z+N$2TWO6E(v4-S5Vdfu#PhHh>vJSQj#|0Bf>I8OtB?Jcq(1a`aFyWA3uvuv}U*0O+RX7k0_ZI9Z*FF;A*dBruwAOF>l!c7-@b{hKRax&1~i9Xmk;JgGgnX zFy%Kk%|)TCF$vQea6@)Q`PbI8ZDifz$=9}oieuv%QDCcc*IDMoomr{^jzt2gmwF3; zTDFgoJ|-}Dj{lMttjrvym2kcPTCZ3?|DE@112(|_bfkWKEPMKJebUkfcrh6IC4Utb zxE#+x)qzT>rwi>TjbgpWn}H8S71u^UR|7NJ0`Y)Q>JXfFxTT|GV|zO@D~rHfSQsN%bM2pO zOR(@Ua`O1aI96;qda{#V!LCYYJJ6y3Lyx2Dxh*M3!DgStT1LYEDQsCmJ8R*z;UD3n zq6kWaaYPSurFd(0d`-zk`D@B-A7*=KZKzMd+KtrN~Lf^XY z>3pE7*`VKNG+GL>Sxjua+rmhP9lKQe0}z0k-}|k4rUirvzYxDT_Uslj(!|3)gQ%qK zfVt)kF$@85_GX_9Aj2`U0c+?|oWPWT>)z7RiYp&;JR>)^>J|VL2juPn4Mi|ZYw+xk z6jHOyu_SsUk~1NKUI*B!d(s#9Dr75FHnNQAx{1}U3|w? zJ&XIlIlN=-RU$GSN5Hjh{^k$#m~$8=5+7X{S_?Bgva6h|GQJU~sP^Gaz;S$$ zvkL&J)Q)(wtXW$=p~m7mb_A8V!|V0zwGk?+;7$RtYfgFEBNk624)JPS>OXy*1(&z4 zC11V}rMWjlXXvg6+9JmKyQcCFB(>EDX5D~h+?~Mae^*L|VakvXgyL&sj2o4PnAj1q zpWjp@7D{xP|C#;jC2Ek-jjEEIY)1n1GhpbAFYlE8_5!4PWuoub=dQ15IZISk8^J;G&2^d8o);!o&L3Ygm6V9_K}~gL zg9-Z*O3!M6J~`)C<#e(7ncxA`pkoq+Kn|I9fiUk+j8U*n@ymeTuHk=`zP+Amx!N5y zp=aFT=jk=TnFO4P02Vn%1_+;~_)kAPi5* zSbmKl@NF8nSbpa!n@8HR^L@EifQWt{ZG*R23~0XLJix8OH&JCA0c?&wJ_uG4n7I0v zQZ5IooyyU%7IDiuGhV>LVf6ME?)n0#lGGhAD(HV#Rf|T!!#)*Pf$L;zv<|YT8Tfu1 zw-wTFBg6sItGtX{0%<1c{I*-S4Sm=6&Ar=>iDM63#KLg%Os4#c&?~8(Z93T%RdSFeK94VtmZquv2%{4txlzaH(#&0F|#qmrbG`pDYrasObq z*znRl;_eAwnb9B-b=*Apd|#!?%joy0`Q0XQVcr`m8wH4}y@-M|Vxj&)AwE4d8g_rn zuZG_!+Wk1!pdbC)WOT77K>)9Ev9WS&^ycB@!vG)v^@F;*%xkM%V1?Ae6rY4ShU=Md zd;rRe9$a=t7@Y`Mnskx~i90=8xV~MueG)u>ijiDxEFByh^j9U#XUsNTq6)y~APC)f z6<)Nua-#U8%Kdmv7e+?-bCsK=J69@+Bf$$hSRmhHlk9t#$aT^??#FL|VY!8pe^jsg z#)9!l^*IHRL6GEE#oDU^T+$cM;m`Ps(M=Yo{L(t1y6u+sEjJlM0pc`n}V3`N!QwRvxqt_VV{u1o5TnPc5b) z{;;wYLn8H4LL}Gbhj#!CYxJtvcr?oY`P`wOh_C9(r7V`5GAG+^1e&7rkWJlc-xfxV zrR+vX$Ljno4b=|MTkog24PM2)IhU0pbdC}Z%)W6N#bb8f9iEz3?j1b2lO)MVFi_eq z0jW&nb>JF0$7kT^t<#<*3)c~gf5XYZO77EttN&`M$fwtCUFIp3Q#rDzu=!VL1VX~5oht!jJ$B>nQKYEBpqyV6->jL+$*V~Omfhd zX;@=nOK|A-kpq1h+S1ag$aAuov?Vc0vrvsY$OPoRLqyAXc{1OUAysKh%*IpIiyJ|Z z-*zd?k+^;fvh!0^0Mmq#Z`@=pu4LfVDDQAM*JlPY%Hev#u$S-OdHB5_-MXa-%=YjO z?(tvgu>Y|_GTr_jxbjP-%2;pff~y%8UtyzoQw?*C!=E^Yh? zeX=6>3G~rTffaWWq)zSy69a0mC71~oHag!r;zov`T{TZ;CI4FuUcI>Aa`<>vPF(mw zAg4TFwT%hw&84DFY9cf0iwt{l+kcYEPVfuFPm_BEn|QH{J)jnxh)<%FuD^z<#sV(SFwW;A8!lmeUX0O}Egw2NuF-jX$R5C{| zMC>UPJR`4PB`pgVh#`mFPnRD}oW{5W(b!m2%Av){YPNA=@j`@+T1h6iERMk%C$Bx@ zl2SUMj<9D1jm|S_!`mpo) z1`LoXwmM7sc`8~NvLY^>M?iT1?pDR_G^9UI!zzwDTGg-yWyz;RhEagn>Ab5fA&cf915kd`dexo= zIG_b(sCIS$nyhov&jnku&4+&vcOZxj5QwcsChbT7bLfzr!jy=JCSW471t4|4vW4Oz z7-}vo^lu=MDPZ(pm*ZY$IBMZB`Wc^~NeMWoAHHL*ibz8R(Im~o?kLLJ2kJjmILhMh zd;a)&9+2_r#`X;gvS;m;li&<1BwWwb_&C`|8=xQ16b4s;Y7Fz96I1in>KqG^b5=QDv`WH~m*;#BZqdWis${%nZ zG}d;Ka^nU*5$vTxN5|3wD%n zXENQZzth9)RV!NWH5H?aAYN@E<9pyE*g6eqF+2&27 zb@wsXFpTqz`27?DfGqjlhi840I+k5J{hy<0Zm##4;?_14{ zS-CeqhzZRd#5GP!Wf#)L1*~Y06u>@f-$E3vr9!U!*eXdvj*nZ8uB?N8v!Wx$09_)+ z;*St3I-9x$yqA%fI%;7;GC+RdSN-bBH ze%C_|0|Hg6uaM2x^E*D@Q6svNR17bVI^Rtat~4XtmahZfkJ*J^zc0ZtLVW-HWS%Z{_<%5g_~q~ z_;BKZb)vQMvZBvFIM(8%0Asij1Nb>%aT}Pg-B~Pzxb=FU`nFRB)K0hgaUG!kDn4g3=N zOT0BuKSTC!VOIKk&c&|YhbZ3=Y|I<4!WC2VrTXBxPFt({T^-Ab$L^1KtFWIh-lFa{ zaf^4ShWLj!AWE8&TOFjN-Wb1Wgihsztk1GR!XY9i*MsM>ChT*x3%|(B)TEk=f33S{ z8z38fpLN*=NkoLiN()HRO@UN0_vbpxB1}O`;rnLAKO~&ZTuzy-G)SQzt-pLNZIMAF5A$n6C z+dBBvto{Y%bk2)~rivDuH`D8jlv`*Pjo%Jtr4mn2j3#?8q^m@HP1huA+OB1TE_2G9 zc$=EQ_JhzcZQUf2pSB%xh%{-XoY0^CA0y%+iNn=&tADY%l9@+SaAYU3Kkt(ML;A3F zMbv(q0!P~Kz4XWRNoO@i#?pNcZEv!38tqpZ{@Og`lpqGDhM1?Mjj^0TX*C1gNjz2xb(b1;nMJSon*1}a;zzy(L zx53!#iT==vids#@iLs(LeUkgF@weo?F1CWyN$fZV<~0|>fX%WII()l_1GLGva+mM7 zs^8Gnc659sPHrYvWu-_R3QQkP9v7K1AiwtVHa4M6M6o*UNd1R{5eJwWkvIQQG6vSDiy6h@~4BTAs-H`Eznv zvE(XamaFrLPtLb2=THP>4b6h+sS=}j4ma7puI)crLI)zFWKS-|4ERmY84|AL-3N;# zQLOp!cEgi6S?E6SQ3Xq|Dp`a*Nf*zVG<8MhyO~zh+lgAfo;9Frx=ZJk%`e2XT^CV?2o#l@FP!Xfz$C9b60TC+g_%XLMQ{kpRBJWQ5YY)cXfjb z?h@GwB~gc@zx`AnK;vLCDy86vZ9%N?yFma}ZJ*0NZO~`;A`FC8?sV|!yg}H+w5Y_+ zR>Ve}o;17f=rD=8XM6i?HY!h7e}B?Qm1a<&f{jQFsVn|{ag2=)|5tTtLfjM)W=+!K zu_U#WGUHx)b>*5tnyX;_2UKhK=WEZ(wY~@M5LSJwQ{q77&kb4R_T$jf)_U_svVc5d zgxNR~a5XLPL_)q+^^NW5tWrcB-5}&SxO6$bBTBMI${qAvm+~V)JYK}%x30eeL{+hs z({?rkiEQz!8btW>8$w3%h@f->oC(yQHYE4$de_wG*TvyI^Y8_ zKMi)WPd&`RZNc9cyn=$%mKwkD|9R0NKxx7EVDW>F2>sVB{MPRG-ky;E2?I-{5e3Sq z1m#wESN>T3N>4FB9q$kKH4)Ak&Cs%q%7?P%6;>b241JhKBFwRqyp!AanPEKf$N45} zvcC60ACOUa><=)pNl)YMyX|?lAQ*8cp2HfE`}nKxyMLu&J7@WqvOZ%^)>y4kIDOBj z+1>|u{v~uyZOYlVwmdWch8plK)1`dXGKFxXl)8GlV6Cu8fIoOXJ!4JPQqZev$*ZK( zT$=@7eIen8z}2-B<;xaaoD_4B(!K?}y5*F~61YiVMtT9YTDf?Sd*+P$0X<`E1L1R~ zG2x&NM&$`b|GnUJ^JlrMeAtl1{$xdNHqNm^GbM3iMki?}=Rq&U+_HcJu5Zfe3v4v_ zK^H+XpNdE#-iIMmDzd%3NV%NYA%f+-{&QpY6Sj-koL&Iae0{Hamaed5pK=;n(Ykdx zYv~|KBTRiYPajX6IL0+hlep486uf+Hcj(gyv?+pxNBaAtb8`4FAF_ENU`=xUc|>Xb zRiTVCpQgb^Rp0JcVT61^&E8?h_6*XA2z_SeFk}>>5i>oG4&@Azt8W#Zcv{#l}Jg6&r z5-%<(xqfql9d7UK5~<`B;?;e+M`D2uPXPVoJxO*{q`sJ2UQ$AdRi=k(mf1E^USMG$ zCBnTkdX?t1v9_ERKkeBmnA>x*fhWni))qFz0#19L18AixvE|jPtY#7xOe`l>At$Yr zUX&`($lT%*Xa-ha0hDoW+}vcGpL?@U;RNQU+8dKYaM$Nbf|t?~V(cXgj7qHgqu1>X z`Ng$oMBxS>&j|}iQ$*y;aHwPO{G8HZeD0nS5Fe*zi&t>ve<#f!VxNxVwg}wMR~Yr_ z|5&1!Q8Ws~Hl6fa-nE^NB)NqDh}C?L^JENrW+RXM$dmcSQ2W-pugMfY=KL_006F8$s&$CJF-T zl14x~(AUyyMTUuN{ynq)KDJCRnJGS`+OsHoVWKCDui)QH>;6-BFnVRCOvcfF7 zJOt&KGDhDTEv8T_ra72j7aUDKYEZ?^r0j4NO%V9`H3KD=yy`<5pRiLN^9M$+D5a!K zU7_w?*T)P18ADm8*D4Pf8huEsLg^GmF`oq~ciAQ`S=rhSR+%=7%gFRB3|bk%lP3)g zX%J1tL)oRLIhbX}B)E#vjol?uR)HT3?SZODBPMn94vR2|Ft?%YVrv7ch3qY?q)W&Q zL0F^Ey9^26Tl{nLBh_VVG1!X8n%S(c=SQFG`wkSNM5f1_IF`q#MiisP^H~#?bmuVj z_hZ9rV#A^%y0vxLfgkQ0@rZ_B+-L#IfiL^A3-94DF=v00doA?u=uy3uuFaW3)y?Nq zBFfw`NvNqA{5FQ;qIE`cO81r;*l{b1{vS*@#w9zekq9G0R(mE0`keTRCaH4DKJ_Rw zYcV>B>8-CV*EfmLpoM;+EP;#>2W(K!T2d<{nY-Jg5t&>iOPy2_=f)I&3|K{y+J<~!=cQ96Q{>Iv9$dE)9>oYbTa}~DvK2%=EqX=G_LbmxT3-? zBxo>1mNj7Dc$v{D&Dyj%Q_u2GnKhf*)i+1Oz=<`y)pygxoX~MvbXqn7mPSW=E;d}yaBI(;)ru1TA?5xs|aa zke%a+aiWII3mT^#wL@NWselG{Da`CeNz zHkaQN2i0>oY*1Q+E)Qp{5~BenX7q%HHb0H9?a-yCZZj&X9VNR~yt0Wu_w%o7$1q^> zf#hi#A)fr>A{1S%qsz#iW&n9!d~Qyhl+VY|LGA(TYqyb2EaTge_MNHCm=WI*EVmZi zRgSDhPi4nf74qf7#pt?~GY4|zLpC}u7_~i-)*8U=DeoYC|0nqN=l!dnSEH1Hl%E$K zED~2uE#BSQ|LO~0vyyWke@1iKWD-NYJ0)_1=xQRU;Gu<1)n{lkqw5yw=)U+yN&lxU zs>(DDP(_7DwMNBXN!aS+@5Up*r12UI1)jfYl^yxeKf3c(H|dC^gEk>5r36T0FS0-! zgj+el6nAjYDU;K$52nf(-3IE`iaQvM(_Yl3O;ZD(ymCzx)T9w`P%npT;rFbeByBS2 zBA~A597l)5=;X#Q^meERRC8+jyZ7+TVVp~F+XbeKpFd)-0T^f`#Ko;dv(Bp0fzv{E zV|!$PnoyNW!K{DH{Idc4#YK^$HoMBugHR-++_Mb+otnHQq-uZqI%cIwMxhW*t9^R3gZ|;#?ca$N zI#VkWsd!cS4MUq;Cu)TcWqC#-INsm~f43F1)QjsrFecP&)cjaomoj}Ci}<5CGvX%4S7(n;AW>ue@D=Gz653Rg^QkE52)xTw{(wRL2ArpkU(|(i#pa+Y z++XJX%Zo8WBQwL^4XV%OPKapxeTBF4={ljJk~6~L#TO+W8{6_r&JHD+FQXEe`q~>dqGfr)I_;wShBFaUmP2nT6Dn z9pg#Irzr|5umiQ+8|6*xn3#BQ>qS)6a%Nua@wngYWu zz(+Y_!}u&nBV07I)mNM-1~L?kVVtR)AopWzBk@)L@hJPKR9tcfXs!R!1s}5`fW?n* zXq}FfxRl-#I zg;dUmHY)>C(pnv+$R%Hs&RoKQu0DmVL*Zpp;V^6Si?13X*_q<9*VB9B&Da*0T2)1I zf8VB2*5GLDb1L_mT*6pK4!beFsL8FwoO4)tX9L)Edp|6^G+FfW3Q{nbf!p&kHtF*4 z$*1&&7XtOozgVRtSF+!K_}Sl&X>2pMG{1TCH@c{Z6?muG8>E!(;l{f*vSJM00y$1Qi?>ySnKRk&>O6;yo z9`II2p0`JY#$a_h9e;>OJFmE``iF)Z;z^=R@DqdYZ#OqJlKkQurQP=msv9l1aL%g7 z(Iwsz{VVoE^UlyVQxY!aIONf;J#%mTM6l|VsJ=l<_~xc@_{7^8=ID^q=pb_h(d?0I z7gjMY1Cf-EwR!<-F`wx_em9StD+SnGCna<4zf`3)^L*YNkyyLNAF`GjRGhxME*WiX(&Iuffbi!4ad+JBGHmDSOtU zUBuj8*Dq6JmRZ0^Fq4F%q_}BbiWW$DHf0+XqJ&W!c zjJL;hz(%Nqo2oIUtCR~W>>w2X1WZ>T^RSon7c|=vT|wJhar$MBPJ)nZo*m;)k&bm2 zY)~qnzE5!*R8`{;QanDia-rQd6lS3CE- zN`tA9=C)JqOs0?B1)TNdO%0kZi`Zn7FcHnb!@2=L9FdgV$EKq81wKzjUJ!j{GF8 zX#}UJn3}XJFI~6I_^6K#%ba1ISIOsZ;0CR!GUhZ>p?~5EAY#5Et4KAP7NYuYUOXJ~>x8 zEy{VEHorE%ib)I#t*_QmNhPOYhqRK&{X0_L$u{~`$)*!F$B?jGescnaIv;dho%p1- zEX2LrEWOF^*i#Vmy^Tea*54s!WWK{ocippjs6||bB1w9`{ibE?wzhDdcvGVn(CghH z*}Zr1a-HNnix_!E(BmvHL$p}i{meC#>dTor&6qu^+22at2mTyyjPxo{A}>CY6_^t~ zT}{T)6>LT_2?(FQYZQjnh7@er!X5)XnO6^3UKce7X|7&lf9o&d@5!7ItTZM+X`^|g z-QLq8yQ*fOyAg4an`rqESHj1|K3i^3mS63{p6Xd9js!`vsRLNYO=Z#{8;160Bt7p# z7T4Qj@p5!IZNVih*y_gG#4Pzf;rc?gszDHVAuSj3A{jSDb2*h5b^e%)Kel9DWT_S71hT2X?->%4deIE z{1E>0i%a(IPbx~-Wy(~hQnp2v^M4WqztlT{r!vk&84{Bf{%&q07JTk*+l>@7nbOC5 z>()Qiv6%g*ZQ$mRzFoCNCgrGVmxwCYS=9QiDP~8wKAx`a+|qJk`j%t4kjaF)mxo}E zMh5>|qXRB4Y?FeiNYKbvO1!t{FZ}E#$pzTngddTw`kE^=$nij!Z8;O*q&cP3tU9{+ zjm+AteS*V*5_oC@^X_n($OMt*?16y;4K4}>Tt=Ui{@VOir+0K!9>)DlD{rle zaF-wX?o<-5$JKkDaT3<%qnhz$eudYTUuar}a3u zJndh{>_+s3FjD0gdBwd-dtbve=8Zu3wfG&eFJ@(-g8(}J={&s4V=y>3By-0y zAh)YOdOoBp;KkbJP4v7^_jZ4DM~8X+?{NUS%js_aDzWC@ZYuw|a9rnYsWfeWjmu!z$$s_NY%k(IFIeu@)D^<$OX9oawKEEAPk;l70W*R`(^f)S z+*&jTu!7{C_L6A}(YtxKs6iq+@54@WQGQxX6jP>>0=F zPp&c(O2020w7Te2J~Kl$xyn}&=Bd{gS{b{3nEv*sBjrjXHu1srISM-yQEWXe=sm zQmIcB%=(?7RXPo2pwcfXH`O*4D~867)25a*b`@2sg0&B%KE2BAmoO>h)BA#6u;IFN zn-N>9;mSL#ERE{Nalph{qv8B9Exfh5Es+bJkb`=#0Pgo@TKH67EojbF*~E_R=o*Wk zBe??N!8G|xSi%g!3-_6hRZjm|ws&dM8PPy_;u0x{%`jjztTbTnqR-uencX5SMqcr3 z9y?~Q^%;6?RZ%&;fhAFpjyPAnuCqHwU@RMDh@N79p`@kegm_mJy=#$IAT zN;|E@k%BK&)10;SVyIz*Oe=Bhd*B9pghk%c5yNtOa4(&EyH*M)P9+P(zOh%9_txD# zk8ZZ+Jl?&%7Z7P(6cN;v8ihMlO()$oD_S`nTEX=;-i+ zBs!hMWhFX$QENqC@TSFtA^S(bE)g%n^U=U$z8LKBAbC6b7GI~_t^wY7CbV_gU;D4Z z_y5gw2DP9NE3^-n-Sd;$B?FDxr;A+l_$wA9t1tX-7av?8C1mSMorgqOYySu>I4j?k^N){Z}qjo7g*A;S)anTSr7uzer~?G!@a!DTryA(Gq;Fy9x??*`{slz zxx`$Px<89|ku-XJ$Or~Gl~tzcuAAGniNzN|r4b|nWh4r=r15`g!pKh+OMb;#)I?2q zKGXCG_fHtQiQ98UGlEI89$eE9ioJ0P1v;-vfvWQGsw$|cs??wFp7EfUz{tO~8PYv8 zPh(&(3Cx(%WxVQI+6h2=BQ}YLrh2Xe{wKwHkhQ=6px#L!JsSmwDwdFuGG`;CaP@`e z{KCSg)zhx2H1BQA7!Y9SK^t4_*A}Be!+oa~0$qBEj$UOB)Acy5FnTKFI z7JV7pX}{fOs6Pw^j#xiGzrE|Ikkx0;^EvO@FDBK2{ovgL<7~A#P|d3gu;J9?)3#h) zU6YD&fX$20FbgoF-Q(ZABjuCG)A)b&d3adq@{*^Ws8LfIUy0Ol`u?j@#2a*qCK9y) z7s2=O15HAta{?HlT{Q&G&+F#VyWD**ANVEwmiz-kX78WcxN$qBa!^jbqZl2NrFTax z>rP+uTa04WrN+eVvqjwdzvrNmUQpp&J{!@FV;;|`KI)6_a4lnlOqRcAWobN${18q2 zOx>;)=I-+Zp)U@D831GP6Gt%a1OUTAk{*)fU!OrA{?I#JLPDmw^ zdDHG>7`{|+((2cH4V$J8>X1t=`$||v*T}w$&Oy+0-e|9wgjVH~oy8O7%U3|Cu>)k# z*foVsTu98rHwwxAI#n4`zCL+(5vN@?;m1zlo3Vzr87P3*`y9<8zti@~8lAM9P_Z&z zp0lTtTPkH4)5@5a9nia>&cBpDHYDw5CaLH!m@`f4-uUBCye`U**t)n&<$pCvO&{!OZtv?GZ29&AA*3H;P`_r`Pv&w!gzqAlmw_iz z0kwW3V}iE!_jlKXng_2XCvV=KOKhA*_JwrK{&*x%AO?QjsS_R%IXVB!CIDA@xqZIx zo_}t6xj%ReI5!h?oqbcr>f?BaS@80?xjOz={(5>8kC!_Z!)k0ad~7CTT?xt740P4o z<3w@G4Giu2^lBPpDHSD&^`~)_K7oJY`0JoYUT&PVt{zs41ehJnRZTe^!)Iy^JbxB{j9Q7n%2rp6zt8oL)x$fM_^MaFt0V(@ z@kb~fsV(PO=f?9pLtZf7=daW%PO3R*RIWJLprs z7@4@KDgkSWs6iIanG(=w<9Hv#+0l4x#kOjWs(~OIvtFGBD>U9gRfkKJ0DFeyX zv%ka`(Sr2xHatrh{To6KJHnCT{TXm&W1AdXTbJ1L2BD3iY-M9lzxRoV_>ZR{o%!56 zjapw1(t@uE=jNB$H1&Wlqk%yxNXTv7YAv8OdB!Ahs*ccN<8UO1E`S11Q+1&5s z&_H+*)EU3MF!F39|m z_-`j0larac3!e!cI_(j9pH+m&$rR6vdTCbPjhCPMGqBN3{8ZUfxsbV&2);l@bK-u- z6p*zbb??Xv&Aly}hxdu`6DW%!za!Yx$wXD?He1+r!sa*0Q{Mtx=m{RLgzW+Idy(z# zu^sR1cu}?Dp9??dZzEePfd1n(52eiFMomQnh7CnId56SG@f-~aNr{aRNr!sQWVDJ> z`xkj6kqV9kY6E1=@MvVg=N>XusX9Dcp=FZB-bR87UYu^dSvIIC8MX*C;_4Rm_&sCH z7V*v?dFHe(H#f)AD+rdBqLZ6k>{&FU68;yRUN;83kxIMAFT%_c3Z=JSO4;J-3jP(O zB|$d@Cp%M0b>Mn|zEA-Y*JhCuqhXHWPqpXXYW?f?ZVB65p(Ks8xIZwFKu8H38Jdd9 zw%PZNh0O%U33hc}K)@KNb_DxhlPlu`tYrhkVyJ1O?r$nKr{p4_!<$-nh9Gq)8?ZYi z!73^}Muq4TYLTp;zm!Q*4M*<(XqO1xh$+*bXM>HX@q z2u~OwDM|J;YUKthQIoiQXx%O1+`>2!UE!wz_4R179uI7-n8lMql9Ii>V%iR5W|%N$ zf$ky3K|$jaGc|tG-N!ZQ$XHc{<;SP%+2$sco1=w`n#Wu7Qyw$kII7e5_4?V%6q(wd zy}Rhlc#Wr<6J1=N!U;8tNrRi2A?eE6{$Z{UX5s=-Onkol=`&x~Y%me{WF`kTybm{? z#Tzy|bg$L?t#YaV*>?0HC>=I7Qdmr$mB5WoJdqO!egs|CjZi8G45hZC1E&kgW(nu< zd5BK_dfjVWB4Vf1&4gMHih1+Wa9~8ACT;?-;I&)$6u|;m-XGRw{eMria~2wgIMl?R zy|jZ&N>DljM6uX;^7fsDCYQrQH${)%+Q)r%-4@Rs_^_g)go0(q91nnhW_O5eqRx*9 zR9*DZ#4vf6GPZgqPmrEaM@@(^(U_O=^nFTrUtzB%pl{NVE6e|QW%uF>GrZJn zT7z8}fCja^yXSv+Z)YH)*<(e_8a_5Unxr61O8^Li-5K!scmi~xP!|V>sEUffqb5TM zS=oZ>gK8<^Qclup%N1K&+lY}7%}+hnycJb!n)oqk-&?yjbkrJ}D0Z*MY~RZr@cXKk zz$eO!SOEuywh6;ds-&0r?-! znWozw+}Dj4rvsFTBIwaC%zD?ZDB@Pi1|{dZGiB2QN#r9&7tekTdH&xnzp86D5(938 zVGHaY&N&nF*e$urN=Za)t0Z68y3~u+T$sowMKQcmNXEra>HC`qyk0p$9U*G9#G(*= zM-%f)M>2v*r)!lv7V-=OXPGwc)86+2Czq7b&bO0sEW=VLWAs%vL5${EB4e@9kuuMV zn$}u&a<}@ZEbY8)BQ~al5q^Gwr+tYYqOvYrZS))I>?=_#z>hG^&#hQG}SUxtAU3BCf zaU#NVrKP@+VC+CL+3lRUYmmUaGNL=|U=>y)Y<@^7(-NOthJf>$UK&{-+8tpJ!inhEhrVx`tK~1$g#Qv`)`p ztS;@NA!AW@{y3AFJ+*%$iBE5(SYNBkSCy%;*Vw_>DqmFkd?<>vABX%=%4t~Q)wYnl zj3l->tTtPKZfH_!`y6nT#NsJ{!|)GUro5B`Ob|}#i8KD;Lm6%eC74>_s!8?ZF<)cV z0odu(2V}RoF`%bThnLIWXfH@h8Xil7Zca>q4NnFIYUL7uHROqL7t!9Ve^wntH&<*x zSqy@cgu-mtKW{M1Re#Q;k_c!s+1+nl+ucoS-$r2RhmY zMwe4q3_i0($bw5-J(n<|ge()Hcna3J1r!UC@&G||nF5(}dtOo?gKc?VDivyB3*k=t+f^Q3c912i6&>2DXM8od+<5Fy(#Q352LwO0RxU2CvQD@FtvHIfgv1v;u_Oav8aoUm zj`V-VW(3aTorCjm5zd9h)gG^j%}qgI4en;<>`#YWSzRo$qp>!gKEC$47-A<>oDyxk zU$l8=pp?B2Y_>tKLVq7ilJT#K+atVL)D_bUS$^f2D`)q?V1jEtwdJ{|S0p1Zdun@r zvZ%B8Qw6*rJZEtwIxWyAOzPFpsb;)DQ&iJD-LNxv{ricsIT+bFjP4s2JU?>m<2f>R zb4r2|_mJ*}xGZ{+ffe4s|I*6NXI6)Dw_|ti(Wq-@@Mc#bGdIf44x#RAr@TMxN#TchS9NztJiteLMZj1z{FkDL@og_p`f!jUZd95eHFbb)q$RC;S2y2aYaTyQI^e z(Ec^f#fNCA%9&BCZP3Gb;h0A5*u`aE&;q*7S?`<3>l9O zWaenw3ce;Z8nszzag#5`fck7wI<7Q#XW7p;dmM|h50tF5`zKD>3McT)&pzRs^7C0- ze*fog9$VCI>W;48ZeJrBn{WBG==AIvWEzX7EokO2sn1dYEbvi)!ZjiRptz17B9ewa z2TXG|W>wd2#O11oE2`sVFzbfJj=UCw!Om2XI#|2iDdTDSr2o4O?h zUg$gPvEIHMv7Cw0V~W}a2qdlnXx7duYB5u=Qj7ZBB98fvF>Kh`Y3S(Ow`QJK>}TP2 zF{IAP6-j!8Ds!k<;t46M#m2KO2{fFkGHb0gD+a$;FV$uGj@#pN zxrxwz^d?C<{nYb><&H8ZI(Xld%8mD&aSgV8cQ#ohBfsuMuMTIV`mwu*%*sA(PkcY> z;oA#VnRjwlh~OTzskwmp(2G5ZLp=UKxH0U?q!g3eMV@;Rct}+yZ(6!o;0l<~D}2az z<{iM-S6)u~VDY&?#_^CUoT(RDZ`mN%CN6gQ!9U3@e1Ed%c!%=)!=l=6`pvSz>-WIg zi>k!zwHCxsmyb*&E2gSc!}t6u5-pL%bHCsK_u$(5&4AUHM9v<6a*`b@=@Tb`@DdOw z1zs2jdSlGx`PX0bYwGgDwR>ybj8z@}QFSmhD|uElR(VgIYCc6H0v3G+Ee(D_5|c#x zkmq!nMP<}vt9VVRMLZ5l1_m|F+?IoSQA&sM=`0Jy7>5K}JPWnb){{}ZNb&pFK1Gre z^`){1#b$H4@yUwZih^q4T3Q~E!OSdf(lk)?qMJ5Mz5K7{M@ZOQ(-3}@y$yh0&c4+V zl*YpyLACiaf&onzhI-AC(5(}0f6(>JUilg#=J%?ZAk=g}`40lWV7TPTu^AM!xO z-+4>827iJlz%hdx`x@sF!-kN*t3DoHdx!g;cZVgmR09al6%6h^ioLQjaamaf`!V3G z_saGl9M?^;E|EGYNCJEp$)0tNT;n?0)#L8!v4M*Y0q_8Sxqiz(+Pa)=G|yH^(T2I( zul^7gc+ins@~NH+(x_lB{zQJpx@(=}R%5hHC3+o}bvldGcTz~WH>2&6TGdCJ(kJXBhjA*D!>qfg?A8*@fs(j5(5*$=k4Of2)L@Hc0;1Yh*s7Nh)T6k{}dh&tC zf0Kyz@?yfrNLRo4s)f8R;?~IWUA1}E%gjq!&6TPT*mM1qRU}`N32Z@awal@q%z&DD zsE&j&uZ%pJ-3sueh-h-&VH8aL@P~xyPcDVZ^YEG2!`2vE-`d~_)vlK7xkp9yn_w&a zWWk710USiE(CeX@=mH0lZ#9`F>3ARMJFk$*nq(76#azxLnP zN6D;wVwI}YnGqLYcJ?oQ)|RMZF#3y&_-Ct08{M5klSEb=m2{@S@Y5}>R?K>mSpzNO zlr$Dbt=iYNS1APfY18gz)$+bMS_$#RcApUw`+}pz%eUn&qsPyW6*z+4V-{==Ei}GJ zge8?_Zg=e79{iB+1Qyz!9^7vI*J_AaXq35{`~SXP63q1zzZx; zKeD64uX5cpa{|1n>3cUL7dIU_2#6MWeDnimze6`SqKe`F zJU>cjJ3-IPVq;%U=}$x9>N6zJ?Sm;69IyAT>1mlFW0GpR?Z^TnVRJ0>fJ;WE(vAW* z(2m;eLJe@vi%+T~jA~TvzQ?|9XoP*o$KK?1L7}V9jx-27GL7@6zm~wKM?DXJ+4V05 zzL^yi=267=;|iYB38fdT#;hiXR-+Jnn;PpxI-Aj=hHIvWYszg~A{*guD2mvro;{Ga zWXPH_Y6D95E50?*<_)iS<50hAwFV!9{_>n^3 z$10?U2xtu8k}K_ajdNGEk9taf`39!9!m~h(@m~)Ask%53)_J?bIe-OcqWL{n2!q42QTRMnOa2+iPq=B8x?RB+KdEb zj(eRH^@qj11thz@)v&10dGl>``W78mdj~iRm2Fi_Rj>W6cqIjQjJw;fGqbhN&1;(K zR2)Z-9{I?DCCARjnb~k(X2+u$W)NekMvc&OlKVvhLN4vNvy1-YDi=R+&VG*1H;1>! z(vB>uiNCSK5)?mBRmhz9$7gZ8s+NXDB_Dqxb!1`{pCWBcVW81hOi^P~`Uff-+4AP( zlLkCRKt0|Df9ZAc3w|*Lz2~UvyrarNuB1*5SGTmNxBR|6P=n;;+(zWcmj+urgyamg z5mW_vcg0Zq?09u|cPIh3{O4~_Nhv8Q4(l}SFMt~_GJm5#CIfKI0~ZS57prLu0lLtF zsc`8ycEq7bq*kg!46p`q70Rpl+7741c<13AKK==iLepVnz|5P1=VnZFj(txiOMj3O z@juhg|6g@= z#M$5{37~JkT_Nurta|LPDv0^wV;@!afdNDM{zNz$^O?ENwZZtfwqUW3!-D((f`onsr&&|lrN1@pcGU|az{Bz*va%E# zXcD;&1dK?1cB<5G`iQpdAP0Hhdzn0v7UCT{m$`F+Rx-^w0S za~IQ(SLcD^WWRysX*tnxZ=b_kce{*{eX_t99GiZIAKzbv@dF0Y&6AV%HhwPP@9Nu^ zg?qh>)kfse--*vxu5ZkPA6?pEcf3cfTW1|UnVFfFHF1v&^!_jvZEe8)S^PsSa>0^5 zMwB8(6xi|tg3wwKfPfz@3e2IG8m$20}4{~wI5 z3(V_YKIIwF1wMIOyH{@#3Z<+U#yiP``{3}Zx{eOo<)t+jfB(OyV&C4*zj{=7!@5lI zf-^GuN7RuMWB%Bn^1Y&!>G0R77OX9C7T1aSXZqrb;fI0Unwi8kC{9EH{QzMSku+}( ziP6K6Lkxfu$`HdaO5-pC;A7P|HL%loq;ESLN4XI%Wd(=#wH`q z|LQ(%g8X5cABhIJ;?7~5!1cd^BmI{ex6U`{GNrfYwHjOE_@lQ)&4l|>VFrx=nD9Nv027dOpT>+)_`*x zXbGj3rLH0u%2p5HiwE%6h069SU+_9aSapcJy}J8zby6sZDk!d=-+9IA)!L8P*GCr= zvP8_))_$!XpJ|mpmUgq}JPw@`1FW2n{``^Kg-jz%KZYbAY*fU8UNsaO!JqU*u~}5i z8E`!3Eu)#lM-aD3b19#HvAx2KP)>}up=6sPQTaQ5BPvGUHuUuLs$Sc&_uQ5^`LkfY zl^#^H|XgXMfq)4Mvb_E$IXbf73gVXd^f~tD&aoG|D>lV?WrWewm1Ww*w z2_-0dBsKp=xv~7k1H$RMbxEl;6?q~eQ@o*bwIV1 zz4!^;XGh-ZTs*GdKdyATMIqvO-rHkCSvFk;WPvMf z9&tM0yBXk-cw&Nrp;)&i$aA?dS82e@dReODpJ0>Y6ImDP!{1`8fed#4aU)oH9Z$DN4e+CAUliz`-JJJ4Lm64iAkp7wPD# z(^5G~DQ_@=4JxqZwh})`r1FDhGr!hSOetnjoq@vhoucLQU)T`^eb{=1u4+GB`GTgZ zif?IgfbY#)!%=eK;jh}+C0BPrd}yNXR)zW$Me22UtEGc8BCOCC1R5T$5>aHRQ0hz& zb~hu2V4`{GKbcSO{@PZD%wg`E0>)6lB$$zr;otyG*p<*wiTvm!*lJQX$YF%(!|x`5 z-J(%oYT9XOE|0A@vcUr)rhNJH68d{sLd%RXQ0-8h>b$eBHC=^N=kY&#REtm8Ok$mp zC+5Ty45to}&+MXl*1L!Z1T?;Vu0q?-=x-UIKI`{h+cz2Q4;S`3D&x1lqf;=!2{|O% ze+7Kaxc)y@AD??z{71{kjn9$=4Jm#3fY2xN5|##p-~iJ@z~2h+x-<-ufk#GLTgNiA z%W~X7wxp7~9ONYHKD5+YT&huC!F;yBf_L}qBL6@!YE-4Zi2$2b%IW>eLlD91BE5cB z@Yi5-)fhG2*d#_au46vMW^O$6yb)|1`;7NS#Lv8yoeV|wVBu&V%@zjV#PaRTUQ3{hb3OJ&RyjKPS<=yk+oEUY$nFRPaX$1HO zX)EL{#3e}(uDKH*Ea_PrRy&C`Rkg?2qxpz;l4RLPzFJ|kw&6F{o4`S*zB zugNQ}_c<=cA2zFcpO-U-Fz4yKj`)xohpu+Mdg4-{(#ldVL2rSx$O%<>bJyqQawIN1 z3*gbH7|_QD)Od!UFPlWCTw(dC7N8CfI_gCdHUu|+D=tPN1t$ux~N3Rbl5! z_+$7=8S}?Gah8v^rbav_<-{K#FmZnAdj<^*VXFij`;Psg zTkZkt)=%zENALs=lm*3HnxbN2h&eGx-^7y+ICZ(nd>dh7z5z!PBhjgQ7^}d?roIzc zkTAFm(p(nVGI3cacVG9W-%9qnlz#JOcx(@Fk2BD+~)T%o=AWre{hIS>4eRalTT}_;8MG^;$7B9*vj8 zF8{sF7K@fTQ4m`6^Z|j2NzAF}9~K1;6@rA$>35>vw~rfDJT?El6KUAK`aR(!kiUMc zf?6DZg+-OsTSH>jn*CzqgXR|zYQG*&=>n6?&58(S?r&2jH8nK>f(di|Ns#a61qs0{ z6X&m9XC-{b&{t0Y!dt!%*A{b`F10d3U%XC4-<&(UzYZxMkxvzBj0%jNkLn#5V5Bu@ z>srEO#Z6G&_EVS0d26o@UWm)WnV)VA?Kk-lzQ2OV2drIbmeQXlp}bHs?K2cvNYB+@x_ zk%>0 zavbz|i$M>gXW`dx!Jb&W@#pbq9}UD^T@ZYeT!XA_>6+c5nt#^*K}i&Oobth%{rk&f zgMLkm({_YO?+zR*p;e6u`9XZ0lUw=vu@-#%WvY~CZPSV#1uMu_>~r!ginxS zPeNl@w}&OfbIHV=HKhO-3c5OghkZ6)Vsx|b-v(&oB=jb=JWOvcc>v%0fTjKN>J@p& z_^=HvpLU5Nx}t53meB~`K_mzHZ%|MYPB;ma6iw?qve=m;3zl6%w{InP&gs9=7YFzz z`z;XsPeRC^^}7t3b(xJ{`|CY%$lII^W_pCIV~2m3PZ+MKYDQ*u<|Q}eLhd5N;*JR@ z?x@>ux8Ub*krz6GzhV)`$WvsPj{gbq0}wRU&F{A-{9p(^g;;iSAaAZu&sB(7;IVOf`qS$xy|~p`TKYKa5ffYYs2e*q8-)nx~#l zn@la=BZ^}yihidiqb;r~4a-;fr3N1AaM7X+Rd(@gq64A69 z-;dVOQBO$9H~jcKVm9&}cYhQ{736|##<<7n^8qPa?6-uMR7EdXE&FcOIFbZy6MHRP zjX!eHN{Mp0`xQoHQ7GpY_2ERllzh(i4EvK^W{(f`e03}~1@28VON%!7Mqtblm@(hB z-@`1O^^;C`L(G@44I0m#e562$;RlEee(^y>Se#1L)595wX9M%8)Wn$|*4T9iU+{fn z8_LGtGFoosX5ZkLiY?rG_wf43rrLB1SFlp5&nCSYO1ZO>CAqPJt|1kh;qw?Q7NVnT zqjk4gUPV{J8odj~o`kn>KGLYotZTf=%zx`s_^m8UxUOH_+;&6Gjz$RxWXtzVMpD4R z*F4=zy{O@1#n{ec$o~7vO_5}MGmhAzO3P(|P79(U z{z&S@v5e&5tsIkS_bC6FzMSWr6eNDrv+>24r3Ew#_fe6^C#*AmRRM0Da}{fToK**X zVqFHbxqv8f4>IdMUor~38^q-O`o!ggZ}_o~&c!tM`o_1%7|7T<5}~slvC^M}0b*crx?9uFKhdIEj8d7W3K+fhQDlTHNo6c|E|`C7M0L-v^Av1STdb zIlQffv}r<8g|nh@KC7o&zHBepy?$F?Mmhg>e1a`AN5_(U<2D!oQ}o=+ zr+@hYcpy7rF{u>SO^XyU6ft+w&Z`$<$grHAv}oiQFu-3=VZ%lRQ45aQ zB}^U{87)^546I=R*NYguzs&%Ky+au!t^jNf#vFI^xNOdRo{&-Db zmK)y`P}|r%r$?eh*XEx{-8S*v3Tb!Y8&D}nAX4B+H9kJ! z3{uLse$#j@dt>`fOcIveN(&5A#=AEKt&IgKVi(ri`sez|-2P39yv=lDvFmpdu@o8P zoJLp3wflNhTSyjIY?9lMCl?K1^z3YpB+I&INQzj!AWcNwoV04F3g~-o>gmP6?j^-~ zr$bhobGlugv&U1kdpUH2x3SczB7B>s=qHgz!O!V!-_ZBz()`$i6i5ev`qZjeKR4@k zLUDcXhZ&?*KU{iDrhvy_!o!u&E+@T=rFxN?7u4v8HM{ENcdmnJOo{ZNm$%nkRRd$E|$%k zQ?WrGN}v0CJgjHHqx9|k`kQ}{Le+YU-E?wCm80o!Yp+BYUS1D(nD{VmK(U=HDWDry+A#q?~d1+G-<+h-l)wLForQhFta;mI1m__n0TP!)%M6UGzK;z=6Si;2@S z=l-OMIcp5(sJ;^Ks?~VjA({VZM!w+z<%f;Sxf5ctRMxY#nhB%SW?YsNpl-H_5pf0I z+sJC#4nBg4f5(yqlUDD4l{7}*ueZ;(_9Co>gZ#qy$c;2AY@YK_KDs7#a&>x{#`2Ay|AJ9A&%jX11%JM7C_ll>N|w znTM^=hs38Vc=1?1aJHwF?REFe;l(#6cl`_CK1^A^Jt6nnjuAs-ldq2eyA7Od?+Z@0 zlDD$(V@N*?hNBi{^Ki0`@LBOc6=hQw{CgP$KF`^)codc!+w5q2NQPXbB7k7b(VRQ- zClbijqQxE(X7MB^Ath5JN8^0D^x{96!{!ttaCe)ov?IjB!onP)RqMxHJY5H`AI)lc zHg7lLTRB@g>(tY)&)sNOiP&PcURA_1Zgc?U!{5b43DoYn8$O_IwzdBKhb)g&RUNYj zRm!K0q(uRdW-cxvS8|05kP4>+>-?G}n1pe{JfK2Z+6&9;79kr~7t%tMzTuXgEML$` zIwFhhwgK@x2`GvfEwR{aU&FF6_w~$6IHhE!%Pj4?e@xy30WmRJm_2w|N$B)%ZwjMP zwR%MQj0YTK0S?Gk=4X$6s=7n8B2p0fCsRYW(QgNm*814GIFhjD*S@X2Y~))<3hd?9 z(YycwqV4h|>Pf`BDYCg}~w_c4IW zq5c+#z0C*FjAJIS>^|&dE?UxU7uE&Gflq>xwEEVOSIAKxxm*9IbL19&9oR1?)xs}g z(+L~96EUrsOQIuvBc73A`VeG_MES=1=$|v>8F(ttib~i*IH$+|b+3-H``-5LiNg<& zy%f_&g(?dI0`hTuPN|VH#d_0@~!v{^Z)FX74 z=e%PfD&j_b-knpb6mxHt``W(lKb=)U7rNnJoo1{jSAw2PbY%bDmts(6=$!$xbGcxD zHfpm70;}CbLudJ+%tu#WN34fd&1L(e1enw<6G)|eWyEa}A5whJSoPj;QvPdN?;r4O z5r`;ZEP4ZXUe>$IKk97YWo%wRd-JwdTA?)U@XWy%KlSf$F~~M!Fm&Fek61aIk#*K> z6?R?l1tmX9!LH6Emp=~GXzXWeabF0jJz~xNg~E3G-{r{`z++syB@-tz;iA)-TITkq zSeWc`x&2|9R~Ej=FPJ0hyG0BMqrc0Go0)w9dH5rzBMj10xZKM!eORjU%MJ>X(jBv7 ze=GY`0Eq+s4L3O#E?^||5`1@w6qS1#KvE!=AWu~=dkD<}HM`liz-VTQG&kYBbfmd!lheLMn)S(W{Ma3{y^Z;#P#rWGv=jDA;>($)E zU}fJYqYT#8#(Z{pWMpe{bCM#t%&bDez z?9{g0FD>IPhhN=4OOR$B5!l9neM5)WpX0E9f z1ftbf`yD+?wOo(Q2-G)>fN4c&Y2mYvO&n||6H&h7D;*)9F~x?OmX#BP{kmey?SN)Y zr89W;ZtI-jf$OignG~_)=~zg-=w$s1#oKXOXJ_8CQ;U*$dZ+KMUESTN#nf*9K$@$g z5>gd|wMpOgrnoUZ`Nd@=0lrbT-wlR?Rf`MsrA^5`MY1K4){H2ihAnVKL!SLmGA`rEw4z(=Z-W`8T4T9hARB{c|C*lCdzx4psey|^e(hro71$@ z`M7iUJht-bJic`5V!t9vUNWWIWIi9nY_sNOnRU={mdK*HCvRgA{lUVr_nR`zWZu$@ zhYZkhqLhOS<+!K&woW__FU_7FM#x8!5vlDb=kfY#?@C{zs4Qbdtz5wkq*SU=(p4MZa|jmma8CUf=p>XwInV0vwlxRTqDQVgPqQC*P|?``e!lq#=ZsT_b z+jw>i(-_f(v=TcZ-e*wzcts2?11qV*j6xiZI-0S0Z|^Wl!4#R-rnA=U^CasK!SwcZ zHL9SK1i}vdRrS9E?_Cd+dCOtEy&>!NrLTxaRP^PSMX>ESYo(tTwC?>7;_Ueu`-{|V zZ08~K@bh1X&fEqn=ytOMpx@6rmC5!l`yylxRDM+|Z#=@S(paga!n>ZH_&WS^*a4C$ z`Y{0oo?4RD5IN*QVwz_YVUuGmn)Cg5j`yZ&m0{vJV8ByL`Qm$Gm9z2BaDBtj@sUVv zfPKa5QmdWx#NitNo!)hbhPJxPqL(+&hI3*V?Glrytm#QvkqDX9RP&UTgQ`J+qJ+KM znJAlj!O8u0rFdc5@!ZzEH|3c=w10wrBq%G;qXowZlolxswN)~hn$D+^?XRysKyZDK z->k*U14WQzK{Zpu7b$Gf8`(geO*~6nvHml_YW|c9Q+LoVLeS6mD56(#;ZD46132 z@I?U$sBZh!sS+K3xzm@OJ*6bf*VN2q6A!3kFbKpBZFLvt9;{^yTEp~$3}{0ofkWIu zNcHtU-h?o`NUdz2n~syy6Bkc7nZ^B)pUjzHuH-*KKlo|=$>a7RRd!-*z|lRh6_vmJ9IeAVE~rQ8 zP5OT~niO?iO^b?w!5e_DYOCNGJ$-eL;Z+rO8L*uQI6br}uUy`w>!upax1?DqeXOrh z`KnK5tB0$X*B&yh)b2Ez-DL!akeHm7>- z=X;oz4xaFnzjIRp3+95Bn-Tjpb%NR2wxFO{DzS{MB`PQpW)P}fewrbx0+15JIHaE- zlI>ljZ-lQvDhQg!Eu3WO|ESWolBM_8HRN}Z;nkpz#I>)2!ThX2h(~DqeAF+ZEcy3` zXGzck>*#B(ow8pZLmj%#-n6Du0J0r0bgjCfScaj_GZlVpt_krFpq~(zklnsIq1k_7 zZB6-Khl1yIbGQ#!_qIdG*VK&Xd{6DyH`cmkmipc4{MDy)m}CSe79fqlzO>NsEAXOX z)3W{0Qz2$yC4K_ygm-ieElOD2FUy6j-c_ z`c))TtHB%#DH{2b2A%}2l0*T@1)s$zbR!w0-dyYZElNo8NhSJwoFnnqDK;u9f>Dl2 z@vp)C5;nfro}A|+m!}5e16)blo5SN_gtxs?UpB(-4}6bZ?y*85+DSQ`%ods+XmxH^ z$7(RiOkxQwrOpBmA(g2{mcD&{T_M$In;%?h=0d`@ruUBg4k#YWObJ%FV!laChlfu_ z1MJ9-9xbJ1(Hbd6CJZf&2)D+2k1&Fd(QG67Ns;t#zaHYno7skU|B0$a$n& zr3Iwh;%Njap{5r0a0Pj&IuDufjmbV8h6xJ1}TsI#I?ab7xEm0>}KRRwt z0V9osFD!Pk@d?F_FxlMTXm(}#t#F0om#<0No@tr&Aq}~nn}&Q~h4Vi9!gq6@9CoF@ za$9@3lc_=-5uaVgRXWV|{IHOvd2mlxJycPD+$J+_V3ds1U^nf}mz5Tm)c@f4hpwu6 zR{-{x-Sezvf2cMPP#ATzg}q^SneOdf!DU`tSYqM-4rq16=)svC_CCO0czH`47xbfN zTPfT3NZs8XjtH@MFfjK%Bn6h>>)r@b?bujEFT1S5j0m6uy!`89!7%a`5bn9HZe{ho z4w(BILSPXIAFkcGy817yvv>voG@vprAqf7=zx{2CMWU~3;I_X@{^x%Fe!;kU+|B9( zAtj@%KB*Pc#&;03+=?hOd{qgWe?M@aMn`c@%jaqQr{YZ}tgFV|$fT0~8~f^Y#oXzL zZidI4b;=fP^Q>gXddRcm?)CcspT%bmA#vUxzJ+vj@(0Jd{kbo|Z%U<`Pi_Raum3ek zcWGwY=r6M|r+Ij@+}PhoccwztMYUl2%eA;wi)jP8{1G})4UxOQ{{(^ZGZ-nb&gra^ zcMf2Yqu~4GrHBpvgOb{OJ<7WsxSlYJ!JNyJOP#NMg}bXF1tz_5%=} zNNMhcuzq^TxtIIDtWECn+mo?*+qER}DF^9+xCRzc6bfr2>eIpG=AHrg;2q{nz$|+_ zCIyfmge*oW^fESR?GltT%Oh+LSa>JZ z12ksD?V($-F|j#ynKEizc^`0s8U)3U4cYZdXSs|MxUr9|A6!Qx2x$F;kG@&{+?YoX z7%7hoXL>Km#*m$pBm7I75j}eDr-3DJquo#asm9pEL>FzHfz0gKmdicbGg_MO{<3Er zVF2fKkXT20X#9rGZB;*obb|wvvY>)d%yI3bl?y;I85nPPB$aGC*u@i54JJtA-8(rm z-;Q9<-W$*GK>SVZ9Q1A6NKUo*)M<2n{}i!4KwSj^2GnbtrEqB#bCMd}?_`_IhDw}3 zm1wF$G_illC-k98^4XflU3BrOsMl(Q(6;2HNmP8TX2~0zfLl5bQSIXgF03vS^3B(p zlNs@}DU{`Kah}GJbKX5ZFTMIK#{KkHEc|_eh z{>nT%pZ=4Mq%^UyR@Hp&D+iE}ejmdS0lr-`2I3neabGtDB==>YUa?~_pmFU9;8qqVuVw@$ z?Eo~!!7W zD<`1Izz@tlxF%F|0)$0nt)E@$Caxdt0X5zD_<#|hPLhcVpKFX^l1gMqR^?DiDds3j zcL2C6-Tz}r9S;V=IK6VOuw(DhIC3R`x=5_658fh2_+ zQS}7<6jsHq@o`arWn*P;pSbBHueU?U^l!7DIgO`WGEF_*a+;z&$p%BeGq*_yQ!SHfDuRny@1GnX!8p*p7XZ)p+!Qqt3nOy}R6PY=!8WskuPa4TU(OtJ>^J0h zm6f!;?5agMKgK{QpUoj(?lo=t;(v_MmEbnfcj#5Iyto-q{_FJvz^$vH1F z0qf96JFNd$(5bZk#1VR_^Vlt?oMQ7p4&H@yar8hgp$|S3iRU)Rv7F5r@V$-Rui^z7 z-5ts@?(dl{z)pBQ-_d04eht3azJ0qB-2IWF^s99r@bQC}Nx+8y^zyalN4Cqp%sG?s z0juHG;)WC!^@D4*G#+LGavdnGwZV3ljW|s$fLhJog~^oK*Ute(Uu})V-@>1JWD+-w zQo>`R}P*L>tlqr;#B%I*0J>eH$;jLnlc9 zY04!?NMKD=+s-f+^^%k38sqf~A(b+UFd9k{=O8$vtIKw!5=)!oBA4S*m1toU(+w!il8qYP6Jin0};+MBiPgh@dU#_n-9b0;`v2wED@fOem8? z7Rq9%{g-Rg25#3E&`8Dijd;j1Gid;6J#8jFFo6b;2SBF|y70%hX2~!$b#Um_0vk*3 zX7z9RO7Hs8;K~58a4%!i-jGS(^b!LS=sKE}mI2^lvv|6gzrD7&fAO?I|L`nnHxL4c z%W0XZ-4}rD)4#_iF}3Q{W&(CR2hoCg?uFG=Ye0dTl?4LAV>-;E`s3^add)9#T&@Z{Np)SeSa1T13I(ms^+;j`%KTzm?~zO~?#t(Y&U34m zZhQJ#VY$QyZ8WGW5Ug`rPL%f-ElyL5zPgxWQk*Dsa}u8K6wZG;Ki%y^{>=|nE|>-^ z&8fD*6;>rXZlB?zEOP41>t*TL0+t`%z%a*5$S#`vr1NNB*<;PxFl1@i_zBtb{D)c$ zd++yvw)9?hPbaDw=I1C-Niu&AB7;?RP3(vU#_Z6F7=g6b;!5gvd=js5TdSZ=r{JW7 zS{^%4on!^SRY=2>d~PN8QEM!(3g^&twDg3oNrh97W^@&aC9hGBMJ1Wx8tX++h1(+%F23_0pyq19Nrk?5&(Cew5)b3Ocv&R1BZKEC(k=ER<|_` ziQbD+?iorS^dP4OQpozL{xLw0pBQdL&6R z0ljI9(Z?)i{_jAmZ%if@xU0U(g2Se@9kJf~+Zu$Y!OlTDpr+5tARIi)QQ9g{;u&XG zG`ZxeqTs+TwQuPC%UblYb)29k+!w7S)tuL@p?A9CQu1=YmAts9w*PNIM%%2B1a6nh? z2K>VJ^EX}-KG|D$*Y*d>Q}rpe<%iez(W=xxUzP!RAO)4Cu{yC5(vqJ=0q%&Q@8O8W z=5DIRt`7w61Ne`SPgTelu`lDqrGB{_$IK&Kz-JQ|Mf`q25TqQE$pF~&>`?GVP*N)j zW%s777d0$Ms2LcTExhX>V&LX%YwV0m*%gVonLLx!suTGx7=36NVCMQPPgk-#4X;!S z?lChpuJVu>OE?*-ZQCBo=E3Ohz?3RM5FAJNcZB4vGvUdl`}D>M9n%uj z;U-w~S{e04ijS4y4-3*txr=+wnx!a9q2mkLt5p0m%LaVud=#VcsQEp@kwzz@M&h~e z4T=B{j)S!FR4!0h>+~-^K~HGFzmK5qvVd&k6nwZ!ZJk$!3I#41%E|$7E;)sA0H` zQZ0QqWk-@YpFne5t*%YDT>~na7Z+|2AZSo?35OL=|I31EwULpi7~FI3kUXAg^Pl0` zM^RG&8azFdzL4fjm(#mfmFw*aGw<7-k6-mC5{rsrNe_fD*<6Alb2 z$?;DimpdoaeyM}FDv=w5`ybrjMu7L&0UbA_-{R3895Vra!o9kn<9apg=H`6rcDXx* zkkFBavC!Wy3^=V_-c^_a_Ts%8GQcJ0gM~GvVFMH&KQ?W<77r=C%s1L?By%=>eNQjj z)s~JwB?PyEm>U}gImvN>8QIkFr|7MR6Fhs|qgVid0V;)*jg2atK&5}>^N7uJB>JiJ zg(A1Ea|-`^5V&KQSXZ)7Q;C39%KsIV{7)m8z!GE^BNpMJ$IlYnZp#*W)|;2|_oo|a zDYJOgrKq{7MrGwtV^n3Rd_uool)Zg$U~z@<=)PWN8k^_7gp9=Y&FS(=hf5crkwTj_ z7;zOXaijtOBRu5XsMcolED>KO>4kD8&ewoA4X=m27eKo&1DpbR(RmGISu7+SvL@`@ zUCAf?Aoh}d!Lz2X;xe?C4OQU8%S%CeZ&;6Q1>(fUKjynWuoiti#eE9{HcP-Lvvb@K zav`+V$g-69n`6}8bQ#B0SP@$f@-~G~f3^__Ol>jJ9k){B3Vt0By`4o;p+(~2ZU;Vo zb8A$cQ7JH3;3#hwteeGA?efAcWp=I!W;BT-logltYge1RO;j*tu`1%(JnoMsq82|f za+DE~e}C?W+Bi{C)?Lk*8~MKb#jl-KNTT4Ay_Vfkv-sqI?bTpUU+Ipv20R)1g^~^> zCz7ZNAH10G7aqWX2c$2Q=KWOrv1@08(-xM|HQgj?Gyh9ZPBgvLNq0*>7jkGh5bC)l zcG&ApcxP#Mlv4bxoX7Y{J;9x<<3#avwNXA3rdH%w5AWT|J$3Na41pYKS7Vm;a#8({ zqqB~u`|ZQHo|(=wOl%C(rn_?(#&nx*hUwUJ48!EK>F(}6(>0EcX-C(2?%(sTKhDeR zobUI(KXF~}>$AccQON?#rOMq_tDq;>*KJwqDI}&ZjzB z($uXAf2=3--@Q>UbLQ3E2uZB1&(>wx#lrwRkKkSic)l$(Kj&s&XZGg2!fN8>lbvvx z>sPjAg8ZF_eBVJ2SM%K0vRYkpl20wrw*1LX>YQsufgi*IeU2S!m4W2EQP9)b-1+r= zg+{`@MQ!CfOvyDV;R_1T{OB_c`tE*MeNiR%8^XS@SfrV~-`}^p0#Wk*PQgA~%Z7WL zqhi5CV?dIxKFO`tOD+fOeI&DdETnIT`><_aj0+`BW1{U??)>%JP{uu?;z}F0rUKN~zB~_#-ZVt!teIdsMug-Cx zNaO-!q=oDB0Lh<;e6ZG@A18t z0-myhWX~WE%xuO8pDkXUV^cOJzxt{P(}nPd#F(#3@#7F7WDI+5UO+Ll19CQ?w{4kHqxibSDBxxf! z`Y}zIl0ksS400nOQO)CH`?5&YQULqXAnf1%<}KVP^YY%p0s4b~HIx*|FyvXu((Px8 zS

bP>gE_Zlu2qpBnvVYd2TeEx+SY$OtR`VvIXJko1;Du9V&@cYIWv*%uNn*;5H2 zL&>UU$sJSt&7%}6W!EMTK%=pAv3$PAMf_ISu7Z&uU>Da)YO=j!{#>tA?Z_n z%IS6n-_Nmvyx-f47rynpykG;nIiA61{ck>Kney<&7j}orLdw%|rj%u3Tib*9r+Tk| ztAcye0an`tp;s~U5c{f@8aZIj2ErnaC@9R^$5ud0cx&5??`9JZ3?AHl9`<3wh4EBGXC|qvazyjD#fnL+1IqvBMd782S~Zkqh*PKP^o~f z-;MN-yc4$qilQukV$D2nPQa63Ca>3vfJb=T87R5LuA8!U z{+o~Z9mL)fIJ7xGv$a);?f1DTG1^i^oU3xCsowN|Y*);Ap*w6vdwBIe!^yFU3Su@0 zXZ&+c`^$pPBURwG$X&JsU4ydosN|613MJc3!1!Mp^xb;ahclPYO3SVshG%5KRqO0`;AneFTuAQqDg}~p#aY-bR;U; zZmcP9lHZNxM@9~rWbi)sk_>%!d@a}Ex&cy=5#j3hjd;K5*o$izoI^*h@Y9nvJpQ>m?N5h1|MwlTT)B(}>dHUA$1hHs zE6tXc{wqyKqT|936ATO(9`U#noG-2TM?a{Fw?5Z7lcd(%G zX$pPe&BpfH3(?0TJOKfbjk%87kTgDrQ`N^O2sQ==hI=x^LC5M$iP`Io7sBk~brBPu zrrB>4FD|QQOl1s`?pNi+K-c3l2$WL;g@y0>iO^2=3OndeL~=N!L2S;FiLLEu^ZMj8U5}eMshh_Q5Mzkc!dNOe-2XwSzFwn$Baq|)tILYNGa(bFu-KMw zArX^Ia;DkZuuuWB2OmZo{LtC#D-7cecTVSThyZH3F!6a7blYbK(ruR_OUn4>s~b-; z$C~iFbz1ABkeQiLxi8;O#Uh#xIEWsyPj2@gUdL!=4!dB$_KRMN%{0o|h3BR$d*eVzR(+ zT7ANiWX(eOyD)epyK+DAd|JptBpcQ0@tGtIs~I}-w5EGdl4 zHUxDV=Sp;W-Pn7)Kx?m&wr2k0BJfw{`$W-V+v+3+;<}#0Bb#X-FVgr0^2=Lr*19i0 ztF|j&Mjy$kC3PG@AtT&-nrLHPJN7E>WkLC`LF|oFoE6`zSM?qau712*LkWeuvreAy z*WED(6!D?cmSc#H+ac5bG2fJc5&i}RO)V3*bR<%0_x)d^#khJm!Xd95&y2pgu-{9L*>=)wQJIMt`$NGxvL$%XG>o5=-y&` zTsC@L8DNV-Gha+hv#LQ(|7|J#6E?Ht+PuFe0doS{Q;`o-aTd%Dux91@QO2_%H%nvZ zhQNYB*VhTGlF!vheki*>6T!+4>xpwF{W}-8&+#5KKm*UxwifSzIaDVUl-- zML*n8>!RUD4LFN6uRgyLe`Zq1iYfhzvs;HdV@zE!mIE_9cm511B=mETNq+vAoRv*P zb&fTOp;aBR31l_2U5F79hY_8_`G=Ra&g!IfzTCSm?d8)smPylhQ(62i#{ACoG!NCh zo!X15vJXxIt`9sw6xV)R>3Q*c$;ZNXPj!ld<5$UJJ8D-Or^1m`$qHkX3ZBOhSGkZv z2a&1mL1JG3hk*vY_Xp30q}>7>-Q5eO6M)@c+ z#fz-|(ieIZkUk?-y>dLlhQAx+bg;hn#dp2qFHOqhxUWIB45Em`5mTA10+mI$w?MB- zi}hS&qTrjj;AzH#PCI8zlY@KZQ!}Sf@2iyt2AW*j6R8}I{wov|*yBn5^2nPqUaC-y zD{q4V>$pt4wiMEQ^0Svxbv&7luB$!9B1dw&eit+?c+PWC`kq9Nvb1S_dF+(5Sjc`f z%c1IPcasv~EW&+o$yzM6I@R6SCXcI@zb$tJaIY>)a9HLPHM$;C1$PA`%R%|GGMsnD zm5TCdZT-uE-gt7SFi4E6uyI68Vi35W(9A!)TG;>WtOi>650KR z7-9hQ)h9;amyb}T_8EWdLRL$!9K{Nu&Z+%n9WAr)()vfXjc&27^WBQK&+(nuuQ#?- zqWAIqQBMH?6&p>IQ0jY`C#X~b7YRhrj&8eNdRzfmRDQW_JY)VFTep(mCEpH*c&*dp zSU>W{^F5uI*MNu{ZWq5lc z{nI)~{oTaz`9NI#MUpO(Y(r5&7i77^GPR%@(+v7Du%uYLgp{_6?9T`EnmwkSDGjX= z*VKACZ1hY^ei2{gpUKADQ*fq{Er8~toPkVQ4esr~HGJ_xgOtb1(8cXMf{fkpeImW` zvMzG|1X@)-q+lJd_o zPaD&Vu2huTcJO9)5J7L@h}xE7*1>ePA}nHr4sCiD>|4XQ#6vG@B+%AY3>JFKUuHTM z?nTpTKTPl-nVMCwjow0gzlhl3Wg6s~WHGnMezYZA>#u7S>!LV}XgvDeTJ6Z;cD#SQ z)nvNyhi#Vm?s4u@0@p6?fNt%Iw;1KU%u;=zGf}{-)kkj`u_tk*6i6PGhR0nn$dwV> zqhpRmN6ehd+p&N9hta&OzGO1N)sE_vzStA7ADg$cy{8Q584ucJ1$4FeBr1&)+35dZ zB}OgC8~%Hu@#!#knQ~d4qIELbXQ@7)(Pfycq5X)z%B+KpeEw@PCez8^`Fg}3%<`2! z`{A z_CFELWbiuQrFGXhdwg=$whi4#(5A9dfF73NaoKhWc-ygHwiUc9f z9k2#T!-?b5LtW@mu*e=!NYZ`bawB!1Qf^D8%Pd$GT9;Nr>93zURn^7M*hs8;V}C;> zg$uwJ5*Z^-gu8AQKyKPVdU~sAlkVzWJim%gnHI>Q)hbD^ws~I$2qT|%lx#y;6k`mj zseP}**fTrK0mM6F-0Si{phOci-{#)lk=)^okwH@%W(Afzm`sh%PMr%2&sDQTH^gr7 z5UBO9m+ohb5K)$@s-E||w1`l|1|p{Z_svX&s03z@xiGSs7(yK@#F@EM1-hx!+BpEH zZ>J{wN}v#rFT<&jia+pFfr|#S6z2~dHODI8oRvY6350xq&^+wzBNsb46@eiS*{Q*U z@he|$6xg#?sRex}w=XRzvezS@`K5d3J+Ux|{SgxxHcf6&H{h2>wOXBjSDf%jktAfv zL*hg)_&EGcvYmwAb88Jhdv47$IX!MW=J;o{rv z5WfwGAJ5B1M2jEk%9ksD{_DsBYm|-8OT#+oZU{U+a-@}6Bp(vY!TV)CBvYvgzvpl0 zX0=3^`hKKuE9yA-~(w3?)WZBk^=sZ;W? zKY}4jc1hUlK8QgzbFw(q`}nVnyyxTn)6}G^74Oi8V39MQzL8|;&#^*jwZZWtQfE4y zQK*1e)+G0Ec|_j8a?7z3{De2Q-Dh-!tm3*0&usiU;3=GAU-r0u(vPDw=bE{DW2f?y%r3fN9tJbxhpZ|o zd?%|n!H=g2JLp@ksb^JH+*vu9OH$owsUOF+-J9-TRe+woNGGv>%dMywPOU4HvV+yc zg^@oeWCrdsKg(lO-TW^q0q4RYCw5b-gZ}-0?r!;>Q?~sfmD2kd(6@Ly+2t2C6ANJo zICQ}Q@v@AOQDsAzOb7dC=L=?Mnx9VF=j#F)P{#{hRbrrC5C2l?XRZz94K!OlPlNhg zfc|#W()Da~8(gdQZvEmu3IMYsSOClp7Euy}H8nh@mfn$nt^~w{wt&2%*~a=`dP2e+u}*)- z)$s#}R9>s_yL1I@UuBEXI#9m*D{AoFpCxxl*RcjV&iP-i{`wBeC08VByfwXSL*hlw z4s-+^owH(U9yW$lJYC(dEXHp5;ffK38PSWS{xb4I#+H!~%pOd!bMMB)e#xF%bw=WD z)G~_wH(d3c?^SwC-tS|qR`+51vEy_$C?)cI6k} zQP&#(wo_jUO^#_bZXCGE$j7Zflo(k$Ua{QP1qTU2YKxI5wc%b)uqOXPX$l@%}y$ov_T!ZnB{YRY|`y$EYguO3;8LHuk62DKB zfuX``F}}sau?9rm+0?Br)G$y|cf3@71=gvjz7jv#b=W>_dO4{6${aX4LT+$`S%~VL zoJ4}K>6KMrf7%A0cYizAQSjR~ha<;YcN|KZC=={}?*7~AUsC;qya_#vyJoI#--E|7 zh-tSsq^5p_X6NX5x(bJSoveC5a;=wAmow}^X9c_s{hbp-%pm`jUo6YT#ie_1=yzLD zKPQHK0`?s2OCeNdncq;JWJ zH@qAOw{NueX)TVm>xmUZcQh|;b_7HNv{;LOQ@)eF>SQu2wNM+5=}cBj5&%@0^o$o9 z-c)}Wv zC^6dEO_gL9DJH5(JNE(=t%qd=o~4ampN&PNH>F;oT#|*f+B=Hx^h zh?{WgHRhlRH!JZzx%XQyN_0XUg)2T^R<`;j$^WvFpxopnc8=6ty7*M9)F;d&~^7kpu{=n_2cV_HyA9plhdQQg}7And1 zJQaIfqpt374OSI@q5@;g~WWj?^1n?1LWq8$NdiQ*w;7IgRg=G zXz1QXk?v}#Cu7anxY_poP<&oo-3|9?zgj*f_=a3z*k`MDuPDIyk0&zeBH@C1Tm6Ef^RF zH5dNG4Ov{xoLyW*fiYmdtmWO*i4o`cX(zA~+70(zXRJLJfgO$3xirq;QstLE5mqD= zhN+;r!I0+rvgz+`M3&1ObiHrMY%?lw*uSIs8Nag7o56b#?Mt*e^edU@nO(wuQ$Uux ze%%J@E=C~E6;nxk^*Eusnt+ zQ~;Db)A+*(aIGD;!*LZTIfTT_1X&dl!st$KE-L)T#O@QswhR4FLMgLe)aa9@Q)Znp zAXce?Vi?Nqe+q(95^3Un*K-N_W9~)fQqVcSqe|uP1-Nmz*an1kIgJ7~h{B<6Xa85d zk{qq!nDexLi$E|+c@wgy5HM_2+*~)Y#%5PK1Ec`zAD+8wWDC`Ywct#sA#?ig;B+oY z`#5I)b2s8;+dXK84`{VWpXfUaE5C;{Rbb4bk5G5`3rMp^VRH=7-)TWDz%2j<&NVx#0)7u*77M|BazK4R zD2+U_mA+sXF~O=XUOz0qjx6?gstOLhj_W>ls~_93{+Jfe<<1VKYJ46D zey(3wSgg*`PB(|L=^US7bW++XS)@ zljY=k)w=C?*!hKoj-6~7^Syml@zL^v zY1JTWH(>aJ4{NaYhTjDBnVNj{Wse0ls{q3Q!=}uTRkchK$#teOj3pvI_ai&Of9KSo z6aVHK8J^e8Sr{YciHL*_i_Tc#bvrbgA{09m^EE!^fpO#aL%cPs)o=<)|8t2!5@@~6~$^9W0eolD( zw6JiecKGDs_#q5W>^>~V>iTSr$gtJt>+#LsRDbz< zDeP4Xq4u2Cv?ke~WWd#ky0m)~=a#m8y4b^b(6@wlGwvb!QrR>n)`&=k)~kMfBovPT zlEcvp5i)rmE9-MU5eg~0Nd_#WFP9qRUQjW2Ma-NM4>m;VGG_ zUhZyanDK$j?08dwTXlS_)^>XiUWW4@x(fOdME#6C4$B<8>FO9nx@rDZWiQSv#HnMw zvVS{U&swGx5@?SU5@&$Pm&suLBS#ZAVA{FI*Izk#Nn7W)L-#7n$4U4LOT#IfWCQ2E z)KYuaq*+pJCDrNT9BZz;KajE^EhRwSOi?Ms#$d8HfS;_9wR%2M!Wx*P>aB<102vXs z+}LcbJDk&dg_^3RvH4?+oC5>)i~}Q6tif}aPGx>^QL^qoY<CkPKZ6&P|5}o#(H_V`|-*S;59H6A4 zT)h)5WUyo*bu9rI%z-;PriJx6m1`Up+=?f8#Y49nv1DT9teh}LH5Jr9Yy#=`dwYc*|}I4*l?mQPlX(eIGj z6|(h=VC9ZTE33PabuG~i?~vI3W;JjlE$6L$**t+wVXQ7w=lM^#u^~ZU1~?ZDjNk+` z79e}xJ#Lmz1n@1Rbs#WSCD}T843<94UA>;Rni6d8PcQHJ!aJnYO|o}k_O@FevZuG7 zRcpA%D2-XlT4aCXi|21PR>?$uAgZq(!S`Edy=3sYaVX*f=H%m}m`+DYNy+g%764%TZ2B+91Kc2B3qB0`DmT{aev=cA>OP4EQ(+R*jJRD0{l-vy zRi;Rmrb;}&`h9Kmh&CfLfU|oYFW<3{y&W&K#GXu?t1yD!&Mz|UFrVQEykq$KF8z&-3?Tz1cF9ZxzsmKHs$VyaGEjlNHnNzmBYC0-TSQ30 zj<3QJP9d~tVDj3D_dE|ZhXZ9#ZI(y!&3)(VVXyXQj(ggK4x>ltT9rFDRPOdYVcqkD z%gyHOw`yeu8qe*3Pw1Oa1a(0}$2SQpRX;`dX$IjZ{_o4fcez9lEV~xe>YTk-`;m)F zA)0mc?seU+pVi7pDZ-IbJ@H5}6M?UF24LJ6@lKZc2I#?hAv&Mcr zzZ2Bx1aUjb{H?xa-hu5%d2AK#v__*_egz5QojDK ze=CMYygyEtp&u=t>)+X$QQ{wuNiUYf-`)QGSz$`3PnwTN(?h0HK{ZBYI0?yDett-t zcPSBxlUezFUD2d(#_Vz*ydC`WFGek=l$ch0#FxL?jJeKJe(%sZ5V}+M5L))@V185| zHgxk?9{x3jgt=xvkG&wi_0MnFgx6^(Bc;-P!{|^&U&2^HU$RuK-B<%Z-#cpmVgL3< zQeT?p%A-LwFla0e_pWPK#jW2WR4+%5xc5W8sbI!wMr`|tD&nMY)RNf`K4dvdu&SrG z2rl153+rHChr_k6-*R)w%yk?F=8u{bCqw9>f2u$!4+i65)qN2eW%iIr^(OrC257afF-?W{a(`sobN65W5?-9G)cwKzBj@*l=-tY) z$4TBmN$x8Q>nQbzLe)&rIF>TBmE(6hr2uZQl3>`)0`xJyz`oIUhj*aDNQ2a(0`pQN zi~8aEzx|B!{cWA{P2|hY#?3~;nOf{8OdAuJP`r~65rwB_|Ec0RAdTj{U8Vx`FM8!+ zW=*;}wT`Lh^OpJCL!AY;UYVg_gHs?YuRz%!vuoM5%BwS(`PV$Tm4SW|kEQa75P?+- zv4EI^}kYD^}bu&!wvEwg^d;A^<;0 zdG$%6g+!(W;C{G#{-XGO$5RsjIxzBe5>Q2b@8ulX3WC>Yq*muSyrGEC#qr8autYDm zHwZ{1IntSv83DRmX20_dF`5V|zq=*q4G6%xo~iH~61xxe?`}D6A3^LG-7Bd;3l0wK zH4^DDW8FBquTZ) zd*Qq{=Yq(qX=8mdzMWgGKWF=DjkKRpEE5q$^OCWwzu3DN+k?+g9oDssw%$;>`TQ)Y zeKyCfK39d!R`G6S8mZRaIL|E!U&-Omr|6U)FS;weo%60SN_R%OMAw;TF(}k(!+2I# zC+8pkF$J`CBJH+o8Rk6LudGRjziJjXE5EbNcfFmBj_AuS_qe6F+9O2Y zKVw4Vpr1rM4QTv=M1t{MB(R%~fk83UGHr?>FWAJAK+Wr=X&iycrrFdB6^G zsll;@hPKC?OY&zbe1Ws%Z^7Kcfa#$PIEnigxO%LViNB_+T0-crS3JaCpS%L?It(8T z8C>gPeOJCz!q@3QCGUY!y_$||vB1l!JT=LSF@yC1)xGY~z5dP5sD?)8jU@EJQK-UH z$b#K)!ayt&GeuFgE-R;Q70*v6_$)1O-5A}Ev9pkV7Ot#stKM8)jRQDh#ELJ-Gtgm8 z0=hULy7w}HFF~Q>?{$})GC6v$M7lX>pl>5yg0WF31s~o-f90@C@vw^fBwb!HvzC|2 zL5RKt{-1g+^B)CZ0283Kq+yq|13~qJXum75MZwliJdouNn?VgA<#lMbCf}EiGpxWQ z^G#sRfawX%4y3+e5?Kp##F)|j>_0V4EE5PaU}%H6bIQ4tTzwvc_Z78&7jjAv142?d*`M=W$Qwl2Lz-Lhx4=x?^uzSQp~z z3^|G+(y1SIL*<#k5#={-nI*P%QS!>~EP>h?KCA3^ncT5@VAnsslEN4j-aX&U*B!=K zyB{z}fLNbjq-eQ_$0t$?NP$AI1z2+aK1eec$^;>)b7o2RP(RWGwc5<(%vzNbS<6 zh@oAngjB0|$78%2rFgGmRw`5$Nka<2E7ItnG)TI7{X{j=#-b33?5$&#e>Z}_#(<934TNyvbQ*duO9>uML7s@KU0Q!w`` z6mgoBu)~w({}{j+4vA@iXYM;j_AD1HNi zto2w~t*hS7!<{PRlZc1W%*Qq(L$mK>>r0sZL|s%_L~Gr!Yqoyn7n z$*l5v>68lBLN@&G?F3lerE2kW;cwX_12=!929(3!ZZ91gm;1fzjy{&@cwJfSu<|#% z?W-m0-_%|^-irRluCGM2c>KmQ`8HeRWy8WH5vw(kh!H@h(`kmhsOEd0gVD^BWj8E^A| zt+i15CX=ZefsqKa=>3V%e+@rKFN>Fpr7{h9sX(N6@2*tB%&aSA7(nH&v%{;pA~l$F zYBe}MjvM(?B!l|E;lBZOd?v}Pa(%x%lYoFIEvC=6-09m>PEby1YF4(i zNM)8?AJjnk!L+kXuVL^k{SV#(Y}vB9O$zd@*8QtAXWBTJgbo>VY|fUYVTVec32$tT zB&VxFf0v|A(8*XA6$f!w(Ya*3jAwJQJPQ%e55tu_Uysw3oEga)P@*{4lMGOI%3j z8qsEZOX2Uc&)e~EfK2Vcmfil6Utnoc#9MRNqzsQC6Td^7Jkqi>3UR_-2lty z-Y^X}WdMSwvYQzD-#_Wlk4h$NuMnf%ob!zXZIuBdQ{jFEroLx-5&M(b8wl~Do z($aG9g7Rd|Lp1NrM^F{}h;6PKXDu(=`;awn-b^0B$drbQ>!X6IH$k-OeGR~kZS;?c zJTCk1K)r4^nX-H@>46OQzJebFT_7e9n_$!AH%ewCEd4yzlj9|RHx|-VBEPa7ma)0& zgYL72;eBBQYaK^X0gwh17yl|dG&I_uB_%fFSS-(ovQe9qYGBocxY@!&`wjS`s=L+l z>!wgjgV%bO>FYsan7YDP2h>6SGwcx zS0Bq>-|CTdG@Q8}x^5detk2H!9;?r7$D;{8K74ee=+|FHH}sQ$9bNgrVZJ~*I1|}; z)8F)0pzTl;0>2AXm!7fU{CTQ}6KRuk(ShkN=E zR#WpFw8eO$*8yS=Q)2n$Z~Pwl{G|-$^7aCN!3@`NWp%bpPdYqylHN=0^q}wAnTv#Q zSgF+n!QKI*klWqo4J!{?MT*x6_U(5Wv0lDzqdQp-F@V2udOAQ22ZO}+>vd!aNL-#2 zM|~rYd-&|#^N&3B9Q40qNB9HYu0d^0!SAvG z7%yS`mW#;+j%1ZS3%`H}?F(!$D}IITOC{NJ?6bKC`oE|2pH5QMdx-`$tG4HCPE|3*FE#;@=B`8D2SS*g=UHDEDIg4u2rQ} zKnhTUg2M{RnTCU0EDqgunYn`)72j9!vCz}UiFda@f_+mJhcPWVNn9ap)*96dG#3L z-v6{?T@2Cj2-7Z0LNj@{se>!Miq%1ehPgJuO)Z zQm`Su=8h*i<4E4#>PHu5nsD)Zs|j7~6O5N_j@@6cXL1u%b-P*8Oc|h5KGK%l~-!c))*x`vRT9n9tI% z1!;E<$xUY0cK&&9zQNF^e^a+}WNX~EWC2Y`1iG=`d-YCwTsAH%3@P;GP+I-^I!UgK z{7OhV3o_n^ISkO1f0%ICX0{W2747Y6SFRu^T`BXS3|7orBgNlhByPY5T#QG{-l3ow z$K#a!PnmBbnAYs6-Q&c)3I1NsUk;YAFI+`M3W`5^W_IBnvgy{5Gl@)2-7YtE zjKFxkC<}jlLd^xizL{b7lYvNsgH_L|qnPeN_vh2yOUXk`#(Z{r&Y*Yr?b5Av3KK`rI}AeBD}`=Xp>09RGruod=jC z0Q13CFy0Z7EUl5>O`PxuXin~0uZ~)TeJ`WHQo8n1Xz%;$@a4X{K>CgwQB8xF`5DFF zog(NgTjIMp>A?fKEq4D0=1gH<(>|}s+|mPFUykb8GLHI&jJ$Aqbkh@`G(0h*Q5`l? z6{0x8#>Tk<>!N>Huo}<#S$eov`_>W#**4KPQHfQJ85|ikZ3YR5&YSG|=%nK(F)T&+ zwT$)>A0}Pj`CDt3Z@;tLxjYXuAey$9(U?J#_hDbXKObF-cmh%%Df@cW4rXzaq#4rf zUHBIynR?s=3t1@Et&lv;b-MP3!rLG>@mf4+fuUUtBN3SvVrgSc!-Qg(5Zusr_4W9Y zPP`(PqG@`{;!7{T0-Yit9@k}<_Tr+KE|dRaQ4&HHuc_myA|jq4M5A>!?aA%tFtxQ! zZK;gK}6>)zO*f^))|?bjFt_h zew?7L)-LrtJ4e^i3OKnw8i4Jr2wnXg`&d+O!bR15=WxN(?ie1YTvD{3R9wy!k-B9w z5)2%Kau9(VB&VT@5Xee8ZiQ-!h5V`PD=Cy@&Fa3lweWdQRFZjauf zJ?03TAuHnVd9?0&W>KN)-{`7x=pwD{f0tmuVzt>m9@rf_UyX|Zr%2e|LLv}v-Q@)% zcihgf13db>*JeO=Z*Lpa3A|?|k9ddST0B_xblskqC{dScWuXot)fO_Fg$IX!S9f=L z1_l^Fr<1*yI+b8n%R8>i#L-NzOb8Up1`dDuf#$_>bmtjJg&VSI+MGy^1#_;g*vAvR z|5nZ&4~IK>&fVr*ug|4|Xw2hYV^1Pmr#5SRtE1eKQBm6jcc)&1Lp9HH_}MNAUc0Bb z;U;))<=tG@=}fuFL3WY-692QMfP!-Guf94-EM!{x0_3sbxtMESz`&zMVy>ft9|9`8 zfBlPShir2wUlY}(9XgiYcu($=&nnY@#*5)1FPdm}`Op?XQ#-htGYZ~s?Q+t=@!vTl z!Td6FSY|8=XBYcsN(B_ycT-v*2E{_TM7L!-o=Spp>dhE3>r`2g2886Iu2dD?tNfpJ}*XtEtP1)>d{rR zyTK6=-i=@8t_u6Rkcp3uoLM=m2Mb4e5=;xadS~J(ZXWw({62!*(-6WCRS0$?EfPy1A_kh|uDTt-a1RnW+8m4IEb5dnQVNzvyko*dO`F>sUl$mvQgS z9;Y?oWho-&*~|3cTxVv!nKy6vsu*jcsw;>5H8q>sIt+HEqutSqW_gfwC+ab1eLr>^ zs3mJ*GUi2=lCYI)Y2%37lJB5heg=nEHPAtP&#zPw0ti%75={-$2!O0g-1@C8zF2XUfl zzImjw+L{+g(NZdfZWZyk?rD}s>P1fDyob<4U6Y+sw+pYquv z3GZFt1gyOOX*lY^wT~e_>|UK<{%XNGgRc_fp)^#vAe1M7vpxVkdqFgt|5vP~=G`B# zBO>M)26~;}Y3OZTkEJy%sqB5LoV1yf3Cxk<7C!N*h++tUS2xqLH!fGp&+l zdiIxTgs=>a+UG4+%)9XB*G4VPulrtLLLw-$rgV(UWn7LSy z7L)aSz|(4LikqsK)I2g(f{RvpK-m8>zS#yaBMSz(ii>xRmS`~bv9h3dS3qz`dA50) zoSvS!?k&2rvjfI7!D82_K=khj>c}Fks+t<9R61$3upNchxj>aVk3u15%=q168BZ53Z5bvHms7+8(OE zwykx*^vU8^ITfMaB9FJL+q^&jt0T|K_Sv%fs{_smix~%{x+Xv`*VMFFqI+uYowSp9 zsc{*xq_B}OhC^9x&UEjbFy#2*qn<5nhW*dV-UIF@jZVp)d5K<`Dmj%91&d$Ka(A)Smyll<5 zzUow;Dk#UEd9fhd`f#{-W|%gIqPY0qGPNXTNL8StTDrDY=oG_3LZ8f4p zK%9u}px2|aCyVf8&u92XkkB;V^={-sv9KmFe={^crWuDRX8*vzewi23nyG=$B##}E zj}Mw3cxGp^O30B+nn#f>hdz}lS3h6Lh;|HKFy-}R%b*%vu;2Qc^2J*(^Fp!(D|pnSWZ2sb#d*jW*$$Xs|vgIz;# zz7bLBO#O6$AXA!MysPbGd7%GupjN4cm~xsH`xmmS+nZ_JVRM2id00kb*Oe)XSiu_` zt&yO^Lxaav2LDb^VK7}0+d55LDY<65C zjG=%|JkI&oFI5P+zp+3U#O4Q{`9u_(|14uH!9v~C?7H!Z*?H3I40NE+%ecVMI@`eI z7d}Y&9IE~=27S#cz`Cs6R8U0D7=lamuX_FZBEHxLXa+uccu=#471`=(rxi%2C2=c1 zcXZ^0Xsc6AX6`cR38|=wy^JYy&32B#^p0;J3fIyxcPP=#+tGOlF}o%ceuM-nCS$)s6Kn}Be%PZ+BPsRZI1|8Sib;z z0F9Zt+&Ep6tl7_rhc_s+i5WItC{V(+7g;&(<^SX8tir15x+n~YG)i}efHVT4beDjD zbax)QyQRBRTIueR6p(HX-AH%CzrO#HhYQYg*lX^&=6uH(Y@RiE{ib|-(d-6YH)ZN- zX$TC~*v3oYU4PKyve=QRJ?Y{P{|QwxViQOCJ6W_8#ng7d^zXkdI`EjaxBQH?w$t(Q zZ-(=U>$02c@jP6`nj3Gi8HV$`+ih7ua1wXE<9)MUeioQ+;yN9mG*8q?&EjbrbnRW2 zTP0W#`wa_5jL>_i)y{U>JRM`T4Zf9xDr=CF#0WKS(6hSgWL)f{+pq1ILR%}$JI@}5 z8(AuEKes}Ut;+l>4DR10#BzE4e5gMDc4V%5In5W#|8ydEKC=yVW{q@tS}~2;_#uQJ z7_cR-DX~i4qCPhoX>b^LB!r(q-E?fC6xD^zu1H~_A`7LDJR^LAC2+rI^yaP2=^$Os z`P%x)A>tg;PL_>zbyOMxssJ-~WN7>}M z%Pql>E$H3t(9w0_{Vos_+zkdxsW*Pd&KM33?lTO}1RSm7Icr?pUoog?RMpqNMmo=< zM591MFEU5U^8>!-kn%j$^tPXWP_@Jgb`63gr)IAMG_{Z-RnZaT6xB6#*F3@0cnXKp z`3NNko-cjqYYMYm!CCNcd_1k?Z$uVw8|HqA0X$#A0&rGiq_J{ZAYUauET&hzcQ74( zt!SNqdeC5^vQrn8H_JS19n29=Q=Nt;o}6F;-erXl+H6+LNqMEBDTeG5Oi!}Z5Noa; z$IRzJw?ER>&Cg@mom;b6uArMX<6Ja-S;Lb{P{dI_e{aUrAoX1ouof~Q1_794HZWOht8>M?=G=v-XPW=GyNlc`-?xQri!9cF!g6Wn>B(zTWCp)lhOvd8kRVHgo!{b??7G0=^%RB1hX4UgCzoMEoEl7Sx2!k5<|- zI~o0KY*(CHRnT@@VdWOU-_f#$qk=eA`}7b(%&mfP1f)5H>eKrS#nYp2_gYs?TwPhByW4c)D!UOE#0JE>3kv6cXNJ>FR7XCqCZC#C8tCyFJYrED4-*jS*I*m z<&}@D-Y6+@ZgYf44r&sY!O$=lmD8V6Um;3Zy=R(T`Zt2FaA=%8L*aX z_z$qGy^B0^`$7=186FMz<1iH|r%y(&szuOBN=ky`E8a1LA+jbrR=uajZBbdq8I!rmzYo8dIF*a@CiGzyc0--N8hdrvpEa%eXY4$VPGK ztJ>`Mm^d+mzq7M%3^1roxh$72eH8E3`;m)5;5Q+2n(|E;wO3f^0R#d_Nx=BQM$kA;RK}!qzt+4$Bq&}8&Nyn>43#PZ!z)IKdC-yn`t1>6p51F%x0mbEn zOrZbM6X{MZgYQ%2OL(j6;pNB$&G+w!fQJP$c0%`T0DPZpdcvwKfL^(N=gu2^j*$FOxw{$m5q@?cv=cuVI+VGOJHFxDX>sK?ys9G*r$@_l z_pbPU7^idi<|vP+w@H1@Ica(NmGyD_VT6f7O7^Zdf9HNtqmrv%P9qf0^KB=aYLFu= z^@2A>B(^qk5NG=sFPbQkiKr^y7{}_{w{L+$p5-l>*C<`iW4}0zYz>ozqs9IQba^y)()j12?BiaiQ>8i zuRCBB?{~B6o5MHe{`}Z%bkPHxV?m5K;E2HO&HscwBTK6&0ApHZ@bWS8FYWIc=Mf>R zye>(us4F9&Kbg7B{(hn{UBxy&jjocm`JK{41M~KiMg06(*)09cHMM==ksH6>H*!eC1(VD2^y12^}k_ri=ECFXQ zlkJ>9L1N2f#7kiF@DQg^z!;p2nx$MOdCa{2x32=Ca?xPlC%;?XdW>M-Qleu8!F z(99?I>KgRa6KrwJgu!0nM2cu5Frrt)`E;%i*e5Vo#B@{5q2xE_3W1^sh#0s8(ddn)p{U+90`h z^D}7|@iF|xmDNJyFIksztNTF-*B@=s)TfZU4?9FVT~M2;&RJWVzr-<(z8t~Ly6X1( zV=H*LURioC&~T#42cHxTn1d4|me?z9Y5AdrGM3}WEj11#mbbdI`Tp`!j#rKiY2U|% zW4VcwP-9A89FZkj8k4Hp-1w4*X(zG0F3%(ZB>)U;a?XIkq|zL2;6yB26>k&$nU^oFZ@JAqu*kv<%r0bpk#PeJk#|929b_1UF!-NLaYh-@ zNDbw!9UexuSb%|aW=>9dMqrD5%x|o_NU#O&dCr@7y@CcRvMe9|+r#pGjc+E>x;w{k z#RM_mU5cTL%McY67n0=$3^%uIZ{~=+y^P|PlJS0Zb9u#hwNC(rcH@vpQvIT;f~%2y zMfm}6MK;@5*Qezbgcu_1S=pPO{^F08&>)$y$%i~P8qxxs=3|A^{tF}#;#=z2AjR&l z_XITViWA>(AzE=Xm=B1aoL6Y8b5di#G+4vw#2Q%kb4F32QFXIPAelSMLTA62Dc9Ms z`UUiF+S}5i1^lpe!-%Cp&Yr|Ekym_&Hic7L-)HC%JsUoLgB-{LsV-zfDcFU*Zf9wy zm77|-qihYN9A?`5FH!d8mi$S}>-0C`-(nKhZ>c> z@8mvy?BT^@vO))Zio?^P8 znByfOEftxmr3Uqy7$MoBy~)W~bKHr}VXSl75%q#(=|%hQcOAB**nrM#?35)4!4Vgp znr~XW^I9>(00Mkob~|i83ba#8)NJH#{c@2T8uvJCiP?(X2QVsxiKIe;7YXrZ01Sa0 zFIBj59*+s%iXpciCSBZ&_svWb==HlM^NuTv|Ql8;s#9`5Pg;iJKEQ=;IIE`Trh9K&UNwaY-6jCKs5U98? z(I6ykzu#5Ma*wC#;_dBjly14=^YfuyTkD1F@kV9IZ*@Ro)3zGUZJ1$hw0JdCwC$0~ z*{EpL$fDxYmELhs0S-Qr->M6`-LkPE={dy;#v2!-w1YA{+n^J#q%ONxoc4-M<|}Ta z6?mnos79oeOGjy3a#hOiQ2U$#uX0h*J(05agf& zr>3xy+uJoEPS-)APGlDwBxDW-xaEb6S6R?y=IVyBm!f0F?rxsz<0 zJbNCVke+_*yjNpV+l`bE9veGmE0FQy%%=V_-b!m1@VDaEeug7DeJk}%aLnvte}^g; zO*qvsLj+toZU_G5NXbM9J({_SY_+x+BWb)>@ z4V{nvIKKI89N?Gt(?XMRBO))93Ggu~LBc{h3zaAG>n0Wh{Zyp-iO0wx-EufZQ;q@S zy5Zu5>>bv@$t2IS%gUj{+fQ!ZTIK{84775ra0oi5y?9g()-I)8Syhn zHr>gJ9IdEN$K*0+OAs^Q zro@)^CH2cYZz*MxfdUH|6&3HmO?S*}j6`Qq)g2rS2?_(Vfg(Y;%&eSRO{Ok_Nlsda z(x86a9s2O2lG6ImVQk?VxUa#5?yu*~$wk&%!HtA5pJDwUgfWuf_LWeqfc)s^dc6E! z<2n%2K{Lj*+i6)s7DEdE9BgIXY1GjxzW;n8Hr#LjEVl~d6u=XONz@+q^sB2FznedX)TlQ&?l? zzq7{`;s9GH48a#$_xuPr?xs+wKncCOJZ-K~-Ol}vmWSph1UB1P_|B(q>m&HeynIEt z9ibm3Ub3kxbi6Vbm9AC-PTEiBJ-MvRa@1q$SOh+%2oPi;z#Kgmq!1U5idaZGDY+4# zmr@yV5}p5kApcRfbGA7Esv`pMDTDypJZI)Tb$Hny3jslKW$Hp&A1=9I_7153y*Z!; zr(ou_??O}=Rfp4wKb}-|x<-r%JjIX80@qvam>fP+fgH-hJQZ9;4C-q9H|w*Mvqg<~ zM(M*Wn9Lrq@$7I0hdA8>#Vl65>8z;VcnjX6dQu*`y*+k^KxZr1>-JHVmN_#OiaDJ( zyCH4QhJ*w5zW)yTJ5*FaZ~xR-k2|y6dIJ(zTS5QvA!iI=^CsLG8fUBeU0~KbydAIg z(RN+>K_L89OrMv(B6mK;DgOqAQ0XkftJkoK1hFQcnA1z%)0cp$IApP?=-2xU7dm+H zZ0wdVe#b$J1+T=cM7XuE{A(zPMmlxG^qa~IIZR0j6_WM*s8=%u zD~F5Ab!bB3Hr2_%G&p9@J?j|eKxEA$!&WX~A&P?>?<9m1LL(gzDJsyJdX{LSm&doR-*DogmYz6ZAnx0c<_vL`5a zOZIo=i=8F70AkC9ygy#*7-{#sal7130pGRJ_^na}_2@@K<5sJGCO9@~f99|i*ktti z0_{0PmrdZLAV*%aw$^m0Seiz!eidBC6%|?#)3o%QU9H@6Rc)09FQkaO*v`VAB_ZnD zN9`Q^^L?0UsbhTU`?!x9RG)+jA%Ti(yJ@GWjbym3+0IzD(Jr4Jp?8_i(e`EpbbZvz zuvPJ@JU8-5DtRtZzHoj>7};nU)aY1($lMstzfsrQORqHIvvsKcXcXSLa`9s|)zaFB z{v)h3{$E()7XMK>gIAiFANmu#ZCZBk{_AQc+btH{*0yaDzerdhX5PV@vNZ%{SO_5G*JnM(W{!Kc;TWZ}lo}If3YOrG#RcYk& zxI~hZ%|z1Fp%mLg>D-H`t#48PP$r?DD2`_ZS?7{Kwj%A0rY~2KqKZp&A6!^SBMuhP zz^Svbw%v?=4S`Hl4XMkPIvKVWS^TN}o82Y4dcU3pQwB|Qp|*=isNYi`s|~)|8G(A; zu79U5bh|q@5v0l)+x;&!f&%HkCr@t5&dyGs6lp%eQe~0!!QATa>^uT?l1Uh=cb>4w zn(lmqJ+B+$D!WWVxoV=jJXYV&29tX2I2v{poex>^m`EEGUFN(VCqm*boqEtyqOpHi zXdxx+tye$f__T>i_Jnx|S!-Vhn4eIc44JkIm#4#DPOq!sNIPA+Bhh*9! ziR9H)yCVp9&AJ5%odO-1&;5Yl_J4LC7h~iV<@)_!@m>RK2@q3$ywcGJLUV`vGB*?E zm?AQZELWnHr{(nHQLjCg>TxFR z5n3XWw8@Px`!<|NZ#rMvpZ{e&eq@Nf*ObkA)>44!IG?tet-m@~eSiqO*go^K{u}02 zTd-}7>6owj=S;4?{%mm4;}qA0H?6%TG1d_Zpqg#5KOks1^9~y4`i*QTB^F-z8-xw44j-xU-5Z zEVOz+^d}J2l8}>M+)hvjj5|z08>$mOFr+!IxQ@>OqH+{C{bz=8Lfg_>0mzgJ) z(7yZxi~$K20-68r&Gpad>31Zmjjc}=?4fz%x$(BAYrg}1;5*crK$Qi6N^bqm)>aTt zG}yAy4Rbhwc$E>0^mO6$n*Rs58`f(YWM(l&Bh<;YkGgbePIOaoXlvv`>2_1FJ6 z30{nO^xy!}g2K(fuiNeuH5F(qCfY1hK-8%KA;n+bSBcG`C zTe$;W{$;b{`dyjOIl0K1%2z`sjr4t+BNov{9EI=ITyLv z1}i*0%o{RM7gvp z2*3NBRQV-Kv2B9=Rw3lhZ$lg1vEWwUS|lD{yyI@>=q7;o&_QCw-Hq@yy}$fZDYMub zxz}zvORga`k)dnN5)esQgs21;qfI%ipp`ENBnJ;Z-^9d+B> z{FRsk$4x_tjl54Q^>VO+U_Bo^LGej%aS>+anW_0l3{!|Ea?8(N2_bs$<(%o^HY2B2mVHetKXAOZQ)V{ z>W4ugE6tL;0;czoaLez%LB|`=RZRHz3%WG`q4#6JQ!2sJ*axxFrZ^I| z%n37W_YYu#=4N>rOp2NT-TbBa1K-%e6%HuHK)zh1&B72K;JV`eohKUjBhXgrbs9Ej z)^eq>rA3D26XYjhZ!NGlSW;W!|HBc-Tr}sEb1v>|P*mj%qZo52pi^XdX!lgWa}N>1 z5U12^#-sZx^v-apdTmU zI48Q2<Xi42qm|I$ZM=d6Y_NLP_KD4Ch40M z-|!oMQY2^A{Nl<|@p8(u)<33R(3WgGYPR9hg~WRrfl;E23wACDs{PUQJ5;}KATDXF#8;fx=-28PZ+3xO$aMO%wol>|8{fvo zSZ7sU^Vfi{#M6=w^U$Kc8|u<%TdTSNio`8<@rJUdm*0|+lF-KkaM`uCJu(pMxx2)5 zZx*_@9Kll4&m1q?L|XIeQwrGM(=Zi9+atJcVgEV1n6)@dktjjj+F22fqUSNKvcUK| z$&#rWtMwX5lyOH%vsRtOqNK$ZF0d>5<@X{MuZu4o++q0Y$_iQbF0cW=J9ZT`bahP` zh{?&XcW@CV4gfA+lJPXapf?`aYJ)&A(07A|b)nlDt;c`a2;V(=BAstIlb5i%;Sh+$_Ut4nRvCW{?&+Ch!fbXyOTwj02l7m$N_T*xCQ_o z?f1Iwi-tLLwq!7)Md9t?N(!r92VkUI508(5Ng^sx37{UY`o?(jx`LC~09k-SH?I!n zm{Nv2+=2QM0Y+T6>}IUPn1?97;Hxp01&2N-2_=8d1pW5a8EX1$g))%+pwWo9!<$G! z8_WyUnXH*?lg*a?V>wC4Vz+_3R{nN5a5X-NJ-bd=CHpc=htokrb53+>mL=4(7id&^ zeskMnV1&R92je0)Kn{w08(`_f14`a2%CvS?GMqwY5FwoI9h- zo&=PG5x_6-p`?-pZ!apqbpu&^UeT=54asDcVUE3n$ekY z(@sR)kOQ|>GZ4Vh)I4?#gdJ@cZw88YlW9*@Hq{o_FEu-9gMpbZAFCan_!wm$t)}_u zVYcGb;*O4$74md{THfHpCCndt{)0k%2|Z4%=ar;uO{*=5 zh7mO`n3U44;Hf4*Tk;yOq^Z-4<;fa;v-cP6{<| z@*4^kM*Y^##yXyM%1ie40blG%I~8SviY4Dv)Ugp_TOwtl{%KWDtdmS5-MwFWyR^k-=lezbD-`BDs1;sgT`PxB1MuadnWgwT%POgvS$_LVZf?LYn$s zwPq|KLs)m{r%XnF&j%CnZSE)0zmmcd_-th1dSi`fOI!o4U_iWEBq!lq|kf} z!K&hk28%r<+9*XN1M(D%{-_&j#An4Pi_=-=Rx9T4faPT!f!noL;oTzUV78esSU_Gc zp*S5Od9vC$2AHqkfvjaBf^tZ0l=dV_YQRb&m^;0sY*3Xko~N$VZ+1m;TNO6@6!<>j zKNZ@4fpYFO^x?--fq~GWrx0UQZ1R<@?I+{vyyB$Lxzyc+%1?7N4LXoR;w zEXr>~a-6WuI64{)?41lV3w|51WYPcP&AC@Z7TBu*ZFZMJJx(1VGH_|ZIZedb^eP|NW_@YyucSOFAp7O$%f za445=Im9&evj z`E`ohYxM-Nq}-Om2Oo$+7fI{cO<%OWB(sw2MYapnD1PV|nw^sqs?b#M)hg?no8a54 z^vAw_i0f=v&gJGtsX?u-X1_?rn4$Y?Z(r=K;pMt4P^jEzi*o6+`gZA^jt<;pS)=U>!`RR(=P)6@^{Ep71c{`^Dg6ir@OVZQL z(^CXqXlt9t6`;bXyTF7ISe?~DM6-FJYRZnlvwDMO`)u<&_s#MJFfG%Rjr5GvS*%tn z$0e1?VLPX1ERF1RJrNDr=k~oy=`;ofyF`;cD~p0Jn3YRp{tzaxA(%9b+ryiKtqHZb z%RHEFnNUQlugtQ#o2k&kN=}PwI;raevq)=1U6qBeh~|14D}NhB-r=AVW}xstdM7-2 zFwu}WSlL}IN&chJ(NgWKGe>WN4Qsp7whwQd9vJw_+UdwDQOP@S2DkZ`zaHG|udnfj zP5Qx<$ReGMQX(TDqTQ4ho&h0NvcT=fjO3l_QWK`_(zhfPLq@p< z?dnV|1Yu|$yfgser6|qiB9zdl_6h9|u?N715t;h7B@QbA^y1mOaoZZUzFI6P-&FdZ zp9SnmwES~1faDUyl7a+`|8#0VSaz!Bd!=Sx-t4$L`uepuK}h6)(VI7Kn4p5EB!BZ`v&lQR~OP;kn=gY8cJNUY{WfGA&^%uOtBhu&2i?}@*&l@W zTwF4QKy@1doU|OmFhkDVdI9%t!L-w8!vymaqRGefwZuNmJwt=kN+&jE79C=AMdYk9 z$yrFd)=WQNWbuig--K^rW2c-q@}1V-9odg@VFZQ97N2P%jrjCh-lo-w&%H&;pT|39 z05(J`%@=Q0??%5ry87O&YM>OJtO%CAmSCJKYsk#ZT$7Fwj<>t$mpjkfTUSw9+|^`o zHfWhb)%7O+7mVM;@Y5^pGID-j1I;oA14OGxu)TUOJ4+y|l8f zc-P4@(uQ?@?_1_zNI9P2*fwR~-(1~rcfP1}sWimM4?;Pk3hms<3<%0F>*m_rY$xHH z$1QZ}ybcv6C3xco`jES>Vjc{8&&0np7}>~L3{*yK^hf>I?md*LegX^a*I=Tt(tqO} z!3!ZG{SgxkUilHPo$2!$Eycwn1P#Ftl9L}eY_~QdgWW{@zm(Rl~ z=wyM))9akXSadD$l*zmRTS>Y&QdiOqg^mU*I`$B&;eH<#Ph{Fs5~glpcUEAP$~jO` zbqQZ$R?;@IKLLvn0mwUqGJBuiG+7Ymv56G^ifZY@cr5@YdhqRe`SznU7MMqZjWcMF z6z8}Q5fP;r+`&|6YCjSvzMuT^{xF1RuG;}aLKdJZenNJr_WuRji_|T zz-CuGzPH!@us3TqZ;q48fB?!~$~zb=Yz|3{`WNiNUHhZ1%)g}n0!_p8D9#6if}gxx zQ*|Mn4Fycy>C5R+WFs&5RwYJ;{PLJ!gyRdq^+aA?9!%z^o#nE3mpZ&N+S~b)Wo2if zD=Xk8uv&lCuOc2_w8YaUthfcXVDU5tV3BoZ{3Ur;O!^OiiWCzyG34`^TUvfiEK(zR z$J6AMaSToV;D0qFYSrW9Giq4Ot3Rns`M$iWZRt%EEfx(w`X(g?}CYaTNbzjEqoD)*X*ouAK?L zsAYh*B7)bH9j9@UiJK2_C}ksw3Qd@npDMszclVJZpaYj_tKdtBm+i70&_kgKJ_T)C zkAh$>2;aYODm~0k@~|SCcLL!4WqNWN%Oj5jhpJ`?#RFP$uhkPe7~z`*4agXNENFmtGv73nbAH_pCVItzVS z0(z~nwhk~Ii)p8jD@S4vRJygt&sQ@qi*RVQzvN#Yp7aI|@#Rw|k0_7!U#M~xpPxP# zRx&2*9Z^0#$urkYRs_~RXs<&jd~cQ*%g;P~o#lv%Nyt{jhWzkZvw{DDX;gJ=uO0{&O*pKp+_FyfiK_yxC*ihr3rSKPedVd%KpA;khi|>omWEvEH&$({^z4ML! zTK#eg#>g5Ynft36ZOgA%2_1r*K*`izdWgCSm_=kBWkEnY=xkKXKY4+i7s@Gp7Vtw) z@m@FxKj>Q&`VnDNKL8-)6%_7HpKjc5vRrTZULxDuy;X-l$>}WoU@?erBY9B8k6%c5 zG3PYkB*KIja0lqZ=u$mIr=Xmkt@o{H#L!rM*OP?B0o7DXn*{*Ex&u?=P+l*lgee0HuuUAtt)rE zd|0eGGVWC;A}7W)bY9b9MK)Utm=!x%Ct-|Zfj`3vtGJ%l41Kt~IUmWp=7{A&8O114 zlu=jPo+1d=uTG#1^=t^hsJO|{U|@tatcI~S!^8ihq>%0NeNDa5g&7045b@LVLYwfx zKV;tuST=J$A%znnyb(MN ziJCYfq6)4*B`nvbC!C&4yCGC}0BUIKJ(vp?!bT_mh0hXeSv(YvUvyaoK$)f1QS=bdasHrc8wFaMASfyI}2Cwe2#3@8+sFG?>bMj|k5p2ha(hJNpX&GwA3 zn!@sc4RkXPEQu76l2-o6Z70DilU>_qV{7{%?F&IvexL#G( zD$R0pD3R3JtC%*V@~c|Npc<`-V(c#CqDKTx7y&x49vgkHHNg$5h;=0&)55}_N(S4} zqaD!^r&+Fw_h;IrS0thnm!N>%t-JjtpsW7~eCTzIzyfwKp=fqK zjW=S$K^YvZtYQ*85yB>O>J{Xm#>ONYtl#wsZ`i*U6 zCWk0>KG=4bGrvW5((m0gWc96XOmA1z6tBE{O(Pt{XWQrN2+L55U$=y=yfa&8H{29! zW*_1vDo?DFNcb6xbQ-E&cBb2DN!F82g>?&HwMpn3fC2qmYtySG{c3OwA_b?h96#uZB9jkKR`tz1 zWA2=O1N;pGuA$MzKfK2B*HGkmiWC~~bmeWd#eNMtmMxG6aoFGyE=AafI+P?0=Wust zPZkzUBomW|Fi3cECK>ylkV^D0XY+gi)yIi7+1qN78Y}@g{is#mY_lin`U!@pHrD< zj4H7v?P*{ytOAV>fl;ROC@S?($X(XD2KCyGt2y_o+qkmZK{r7k4KtgbhP%9Z*GKa4|){ zPJ^lh(boP`=JJ>PeE+Hri74+YMo0jaEjU_7$crBBH!5Ci3){8B}1^j zi7qZ0t*R(|F(vOI4Z*QuxsrULOYgfH89#nxN9qnbgRirEKswN5ctki*oq&^@i7<-F z5NoJ6L1Wt41>$myVq_DQYVC4!l^#R(#{1WARX>e4xJ`;82*_zEs-|tear*MA_1_1H zA9X_9T+XB$cmA7KNPK$N7=rNEA82qyh`jdwk-rjY=3_()yr(h8k%5jC#@OW<9FVaQ zv+w+qQC!=p_x9d9sFPB|y*#LxTK=8qij6$wXcaV-KEF}w$zIj&-LCj!q+ipB)OtFs zv!#WVZ^HN2(&dqBTjp@O%@O>>4iV=Cm;IHR#3M?k`NIg2#aqqAqMtUL4Bhj*w%nZR zNMF0H7hx)^4zI?(x87EmoGxz`zLG3+-AXw^$`f4INn>(@%m>cXx6C1nRd_feeeCCc zl7e1jA~tsFxUWxpYQQuxz_&bl2jAXrpa%+@R})$8d8N6qvAnbC-+1 z4N{cKo|!J(I9+=O)$#;<{Y9-KAA{5sl9RMXIej=Tfi%_tAbuzGyP|qT@ghD&^nL1h z+yBj6he|w1kqjkM^@pdn>J`({8`fdXc(;u9Bi=0yVU^L)4Ols@fmAHLiq}C7)K@Z2 z|D@p;xne|GN9P!xf?dW+x$B}txW*eo8j`-%|A4>~RL;FM&p&M9Jw*~-_1MpdZ?Pdj zfW`W$^Fxk6;#idFv<>DIg9Cu9AR|~>*I2T$`{Jk82nXYz2qFf39-_57mjSDw!dG>!nBM2INw4nJThSW#-0vUw1DV1dmIjfIE~ZrzZ_j0#j~hE_?Yq2b+V(LBX= zm&fr<1G2ZYRwEi#4t+x~2O57JraA2yKd(%*A?j@y^$xHb5I2`kdawQ;Qr-2RBOzQ&fG!FYJ+$2FYed;1LvjtnRYKt<>QgiLkAEby9(GK6y28S$~k{Yw%QTOJVb| z<_-5t(|3}MD{e>XSyh3vE9*PGF)R98qDADMB1I9x`fS2b`Boe43#tl|Keww6sOPxU z5g!$H^sexli1MgA&Yo(#avE6IlsulK76~f$1xD0R@K|FEI|$z^X?w-!41d#AFbY!M zCN^RHA+8ulL+#>vErcqsAkPpHd1mf+BAPt%3kqJ`+8jC&O3XJWoeDU?U_XR3!;L0^ znTlf0uGs<%$N8!@osY0?11KcwL#RrDNl2^MM6B5unUW-Wx6~ zko9JIP#6AZ)vaLp*Qi{`4+}I1^;c$kS|*Np?+AJNT}19UCRUDfYw;=iJRVAOqB`vG zuqtdiXm2CiPfU>wY4XBDd0pQ3*%JucsmuN5pwaOX6eAR;FBhd4Km12w70}Vt}%#d=oBze1tpwY9O$VE1!s=o`170rRVe2hVTLJs<)|BkAcuk3n2R<3`v_@bGj>1m)W@ z8$YjO-ZbfdhT#YT5q;en5>{-B3tqC3=eZ1LaHuDfZ&cr%NySf_V!2gsziBenmos%{ zV_8@F3Y}HKu&5O7UjSYXML}3hEHKpdw4p7?{u4yZLFLJst_$a@YnsoEBfglngeMtR z{}P*bto|n5^El$7scC<>-c|Z=7Nvotw=4TMME+!Cq>H$brlJa#iu*jM74>pQ)}cAp zTYTc-^Qhl}3$rirgwBoW(IJcNj)5Meuj$`|-pX91FQj9FMkutDjE-OGC$^XRNn86* zdPwLdY`;`dEp2ur&;07Z1^mcd;<{T`{i>1|N-Js8tX}8%=Ii||!^Jh8dCC#GKZ7y#~JL9vJABwtmyDs{7}>PeMxucxChSTrW^CY+B4`bYnk z#pNyE{cc*df|ULFQ?APL!!N0-Z^67#uMX`z`jcSJ*e71zVs%_@(|Y>2NxJY2RQCMr zM5$Gey!L*_mzDb}bcAwfHatNHY%YH68>L9aI=KiJ3qQyd*vbMs09fE~P=16gu6X*m z;MhHG20TgZ0)NA9o*}KKY-yk(NaoejSrhZ~I$eJQ5k%bd{f*Do>(cR@l$WFm%jStj z4W8Mn3Crhvl2U_ihS+2gRJGx^JO-Yg-+^ulm8Pj_HLq@?gOfHIyEyJw);2byO#+#L zd0%3O*)n3BqqbXi494PeOe}qPSYB$81(H_`#TyGP(Wy0}dL&9O&1Igs@8Z^?aypIh z!e1}|MfBGpO;H6`JnchP(QP(`w2`rXU#6VZku5JTubacZHkDjweAz*WOEZ=Hq`+jO z%cy@1(}UE>8^5|V^+ir}jbugMZ%*k2(<&gnqt`XK-HK{sT=QKy(zr-(!J0^R(1}>d zCa~S6^}%7!8OhucyNVmkx^imPzQ$7w;u_;t=>urUP|nMp;FkUi7_;clh zx9rcAkdet~WV+57n@@2u7${gzA1|(!%h4hTo|5tkWd3^U56<>n@Td z#BaLY)UKLCE2DN%Qs56{94NfZ8F;O7gPbwD-c0KQUb(9`fzs-kMFAQ;Py)Y8+Kz?UQMn&0fSyA3~Qvbo7}3 z0h;!TsI1Du#*F)YYn;Q{v4SGbn|8*qym5~~9fM;5+l~`#_=d24GYk@j^HS22!*5`HR`f zn1}IT!==z6G#_0+Jd^T+?F@Kg>xC`@TV|Nx@`x~2gP*_0KZ8MopAQYCkVhQM8>$Eu z_7$621)+1`o=U*w@gY~(~{}E1fmgP9C8Q*ZjT=kE1jiiUELxG!p zZIRdjTYu>0S?F#tT^HRXGwNvdP*sBRKIu_`_D!xtJjvca?_DXI4^Q4kFNGnkf& z;AAYLp}mJUe|p*H%T(tDPtM4ndvZ2Q!P5TuN$c^rvC}_8A~X{`0ql`LnzWZ5lD1WI zuQ;BL(i?j6S;Ul0Z-CN`BOUXnowNNS5 z$*E2Zh0P1Sc@BCAC)oR^`KwilK6x0ATjrjq?zP}b?5-8V6jIe*qm!8K4k-OFLbEQF z#roSon#*bO-kO^@-meIzr?ko<{YR4Ul= z$97u~PP278Ir;nU8{HUjl&R0B^_$H{$7RN(}Dv+fzzs zLAu%QaYvT4k+g*(?sy(22kcd|d8^j*7*W?Ro1DTtE$^(k{{)O?tHO!AH%^Pi@K22s zS(_nz@Hx$XG&#C=P#47iHJY-2;WI6CW2AiN^Y`+_WCiwa_)Y5l`AsQ1^>eMOC=13H zN{R4cJO!_Xv`6h1zp+v8=Re4dA64w_wEFd*jY-LTG9#vrHYrlk=*0@0OwDJUNjZuGEBsd36KWSIbHf3z*UJ-jh(Y&LEBc$5RZ94`Mz43@e`Uv3d-yr5 zXUhE~OlwBP!Q)Bff+zrl8MhrVy|AO8G5;5YyIKjVM( z5B~vzbNKFezoVNlXB_s=2r=UB{tk^K+vAt~Aj zKNhz>Q}gM|bl)@$LI|+dVzpW!rG)eOglQVt;+I_IthMO64#(pWA3l7*G)>s;c37|1 zb&W#J6036-SL)24DUO+v`3efo6E{U@31eE=ri0N(OoM~>0oEjFZDAUagfr1On%IK@ znTp0RoZ0GkQ;YfC-3~b?v_=6rBBoNzExX!fjN`ySq^QS6rU)S9QRZJ|NPJY9RKBi`H%3A|Lo83&;R@X9*tJeO48a!WJs+MV?Yw~b1tO} zs7rEmO*&*p)U;rvYpr1<$6{NJ5G^t?Vor#OB()($M4p&wU6(jAe32#_m;Na;^FRL> z)bxvS*)O;K{b^=@@lgcem-ta0y`KmYywLzKK`S%qBPC*?&uG7xEr7H5=s|mJXa1$d z|8rdhuRFD}_gz~4E{p&5_r3KxANxBmy#T~#HV$R!KWo8@3{fco9}=0ha3>F;FrGb9 zl(>KU7Q4H9oQ_94KR*K^Lu=aG<{Y5e(>^5%KsgTs-oAYYYYqP5um1{y_3Pe`$RLB5 zBKZl?L#lLT%}nG&=NtqScH4VQljqz4TOrDf1f?2C33x}TiZvdhj`)csewnlY957WN zQ;{gRM?wlp=tJMlyE^uAfRX4*@D9V0z zzHYcF5s8SRg@+Kxltzh+)A@wM@c^WRA3l7*>3GJU{>h)>`RN(|`d|GkNC1u2`0M}i zukictzk_Wo6BRSMu0^8_w2>?|BfHuVJl1QPoXHY+!r^#8&O|ozeu8%+B(D<+YEe)P zY7+c>48{>TliOS0_x0}=|NRdiKH!HReyBx}%zZLt9yAu(7|LZpNkL4|nx$bg1PWsD--kS3E&`T6IWj)*9O( zM33P-!MO=a8LU=49U~VpV7!>5hiSx_n*(cYMORA0RKAKoepv~XdzlQLJjQXXW)H-Y+rYLR+P0_H>B&QavIjJg{FrypbRD{`ug{^fjwy&`d0(E>2ZfZ_ZMO*1 z2+6LGfAJT8iGTKg_;2y%?He2p2dq~eBVM%1bHT&A2xASb;Z;`&)na*=loTQ+WHA&Q zfx`h!+heur(Ab8^l-c4uo@uC%M7(uwLh>0Ykh7)_p1BO7kd30S5Ai+7$ z6PLj8IO6W^ExvyD4ZJ5iS8{8khon@16x8|Cy`FJ84X{mzufBSZhld9|Jbb`v-LrQ= zKw<|kq8PDGR#0~?6_JK=N@NW?oUmTM#n)edgQurw98V|Q-@V22{(F*BNqVS6X3Z0; zKO-@cAaZ7QF-QAifhbiZX_koQrBp}=B2FoV$Z^GGCs_zh<(f(W&(GfHVOrglgX{m4a59?-OtXAjqjPCrp9N$U-C%Wwka*ODLW1;X09vo4NNN zBVB)r0QfSZ{Ug)Ac%=|mbEYpx3@!uoa;=+!3toBp7w!M@YgzwZi;mB@jfUT?ulme_Jd)+s0?y%~6oY+;4lns#@6}e^> zdLX;jr>ANwO#5U9t5hxeWwKwd*HB7T0$G8R0ibQ$%I+@H>iK-e!@~m}AIX;Z{{9|) z-`9tZQbec}$lL&>8rUP{yh;;NK%@eDE2ySJN*+0r8>2N1jG1L+Wd|;Jy+b9z+0LbXO7Ju_Me}#YhZ~s5|r~mYShyUmQ{r`dee!!bI z8wd#ulgGMmX`LlYQRDSoihvi8(lhLz>W~zIhYSHB1~~6X+NTs`Aq(fkaomp86qGL# zc=9ig!IGIUbFJis2MEW>0?4mEi(fp$KS9pB9u7a}p?vM$`iJBM2wb}DU3k_myijh{ zsZX!8^NT`$UGr{!HX$j2`3ukrO_7EYsSvd)190*1g}89!BfH1^#ge}3F6iS#yBpK= zM{<|15rWrpnqNZ?URyuBd@nC!DsL$l2$qsnURfnFna%HbN;bw|a-LHXB|~<=`}bdA zy;a^$e0$ZevRYdg!B1~rnS5t2y@);GA5ak2y*31 z$Voy;gK-Gx+BM$4`wHWE#5kVOG%b#&Cxqw#5jj@bLqR|)QTKm9hLj29F;%)#3hcoJ z8IwH$Sa+NPAd;-jL5_)Z#V9t@^uR0+aL1-DZP#Jdc37=fFxGH78(zTvr7%?`0IvY7 zHI;Kvtb>cEcOed@7|^vXe*Nn|#y4NR$KU>!t?VZymRQf7Wen} zc>DGZRvbJu3@4mUNBEGC*_3LU44KKKg!3?PkdM09^|x(<&1S=S2MVjz3aizs7I&po zUB?)=lX?i5c>%hb&y>et z*^6iPSXed&Qe@=F2oF!fjcp*enq+(-!Wa!Vo)P`DAlflv;v7%;l3x?t1U59SPN^2x zX__imqM$z|?zs>v*XuP~9B(cNdCMQAxhigyjj`C>-QnHaci8Rj(RDqHZJ?}$HkL_~ zYF49&8BHlGh12O&n}W7&xxj|HJ^(Vb(P&zdST;?Azxmt0#XtEce}+H%C;tupZ~y#X z;_X`n??-4YE8-%RxO~bv1ahjoZP)yW3LP`#K%v?A4c_VM5uQMm-^Aqx}(Oa<~8HgNeyp;sz zgn<0f!g>As@(VhW*NXD;M`5vk3hEG_kSmh=RelvBy8XFc>P>IGS6ZVK=6|lqfTB7l z(pS?oI3ABIyOMCuVY|J<+qds9O%6Z&@I9t!fRq^_MrcVldI%og(}VADI3k9GU;XOW zkV@i*AHGLQ30CPV=${%nBK!#iACN^t781kgVRa8c<9s^dPyh6fvD@9_Z~o?Q;r)co zW{uzc_FH5)NSSNkQhCT^v9R;Z3x_HRaF%rC2c#l7NR%8HeL@Zb0*dTWQ$~oS`<@2^ zn#P@*wa$ho$fj**x>Wkb1EoONh3G^LKq(xIUF4ZFB3Q0yt;O@>0mfL`GnM(-4dPNejVL0RQ!w2m5&xk1_WdS#lflk{sNQq2nymJUX zpkGmnn-G9j6ryu?cZarZ*q^{w$oQJ)VvJ#}f8sPjkK^%(r>7?}j^T;6G#RA`*~Zd7 zI1~soS7nA$l8ZgdH${P#X*v`_LzX=BET|EXn%7O`A<2!nVu(MoRjO8y!XRae+HI_b zQi(r*K)>qISZV^Cn=o)(FRgzftq?NF`X)B=S*=%4PGj<}7Jq;ugqMu|(m0joDVDTF zhUUwvXlC-~3sl2sLwOUMHMZL=cDo%`>kY;Ef*Kp84QGGIN-#_@@p%iiIXj=v^_*(0 zad&seD~N#OVUMSW4|sll=J)FH@bG|t|L^`i{_Fqke~th5|Lb25+Xu_WqS(D$Vk@ZZmfnQfv<=Ru2|{Rm z_0=~N#rpUNrGOAd48tC#5s+#o`V=UTio05@J8InfoX-vR#7;cXC4n3yQlLgmauZR_ zniA>Xso4q4f#CcIW6@X(qc!a{7cPTk$}1dzQv6E+lxzzvWv=E!OSOoAK;Ld~*gxa# zc8B$>Q=QRNbZld=S@*cxZirmgHZ?q^NVv+6Qm81Nc#eQB@b}Zx6HccSthHFL=k@55qt*!o?1~OylL6B2Ngi=C+o|lh&F##b*c#4U%dm!SS;xgaBFiG0Y1X$Fa%} zQ%ZH+lXJv44tRKYz<1w$N3q7N5c&6i{^$5d|Lgw(|LmXrQ~Zm6@h{NudoCouf>2fk zR4OYS$vgoHvsv;yB>#Tm?3CyuG7>@zv~C+ljE;=IvMeEIEc-1U`%AUhl|`Q57@;pG z!+je5|NoaCi8BYjq}Kf*iG??1g^QoduXRmD;6$SW1upgKIkQ!4Ubw~K;|4yLkom`_ z@tmpYSnf=f0cp(!yP`qyfIPmn`88 z%*3`G8FVCp-S!@NI|vDEyAB}^ynCaEv{DMeXG~Lok_~p7H^^CF|GbCy z5ytXEM9|`%LX}0oDUQ3-@L{$`f+Wk_}qOA;3bA@#wOXD$FeoB%+v(;T5qA&`H4*~M$EkWGe65{jp*7$e*? zL8=U?FUgw)1t`!rJ>cVlkd*2*CKWjbA_HAx@%HUIY_}_<7%+`Ag+4w$B87yvcX!As z;KT2qkRv(NMd$JK_=u;c2MoiAaX2I8h?oFn1fvOLdSi@52vl5@RwVz@wD-Tezr(s~ z$-$5Vw2EWgviO(P2D$Tzi(*#3a?V(-R@iJdv;JR+8$B#NsHKo>w4))ln!OZapMN@o)ak zzrla|zyGKB*Z=xoAtjH)en4YLEkm!joXF{(A#2{ya}s*Z+Ik(`z#nqY-YjIlPJ zB%PHAG18G2nIg+?MZ{i>M^dTT2K)~!{j`Y z;Tb70kRXuAQWA-ff*N^D%>e{M#8N^ig&Zkb6hd&KnyAWzz^eeQG=!Bv5b)90 zV&hUId6@~YwuRA#31+s+z{(Woy@wPLLXz{JQW9F1wG6@9Qb?rW@vC3`3f_U;Q<5%GmC^d5sJ37k;CGE$I~#N;l; zSplU9D9Fiby~1|8!)~>~YP~|&HgvAIh-M)e4o|fx5$sMTIZGs}X&N+bgU)w|F=7}f z*Wh$I;raO)l*yYIfkZ+`Pz{OVV~!e9N>eC5uX<8bT#*R%0aq7VireJo7F9$U^obpAKYDd@xiEH=Dyi7%3>IfyjTL3o9;~ zxbpK%@XLR1i$C%_B<6~?r;DNWk_5=4@gYXCSl(Mjy{9v3gp&QA#lAwkIoIV+scBl^__Z{ED4pp{|3Zo9%bop2tH zXuB<7#DeY13_=LRSdsw63^pw!f6EJ02+A9miSxvzBuBa>{J$_0p`rw64Tu=wB|YF% zi15J?f}uQ269Fi+ZR7`>y6}3>xwr)?BL69gM%%^i8$e2skT{%<==%;24-eSy_jv#A z9eKm=_gHV%*lsrDtv`)ibdU5=Rc1n91Fbp$5rX~y@87<`dcC5?CMQH6V2lO?kwM$G zBkNfo5R{}*+k05v`PU42sTM?6IkUPW?UoOR1KBidUCDz*HINtQU}+j67{w}i5n4+W z_eFZf(zKgnMhrl)Q%F??${qrg>x|$7tZC~rg*50Img8CzdphJSXcaPgG`6E4oJ3v^ zDFnn6NK4MwLYdT`_j@26(64%0S2D~#`KkH~l)^eqQq$jmEiwdrpy*v98AhCkGlp@3iwRN)PFfUI zhUdM9zQYjcg z(o0%<$=dvt!dZx*N@+G-;s7Bf5xmFbh&brnM1_0yX;AIVcUF}dkU0>k<)V0HvMX^qNvsJ2|0B6{Xiw%DHzmG*b z6c|{@*H7BZ1;kQuCUc<} zGn7%thzP+^wCB|okTVdb0Bd_r931fv{=q*)*RAmVci+;3Do6Uh$jB)`Dw+ZXj}keh zdaZ!7(CM0q$SKsnS1#THCs$GoL^Tb{iM-rHOo)Mkk+d?fMj$s4**S_EjTF)oouhD- z;K_Z?TK1ctNrU4!8?Gqj7yDlUo0|*8fM8xk3^YYPK0V^$;Su+5-e9xY;M;G%g^&VY zfAgM5g8OHL6fn90=iy8bXC)}uM@ja4kg$!#cDKc9wSo}9FbqtM;t&?jq&LQ}mGgic zBeVo!AP;%(91;>5VQX=YA=DVx7()$}IUbKtEF;`(HdX6hng~GDi7>@E4_(wrQPqcf z;tcg-;*<(cC?({~J_`l?;z-*R6MS@JG!+G81d_a3OCU1rP^B&?sV!c{3Plos{-iKKqrkH#{h!K;c#KK`1FnU5A z0yFw!2=I>96u}2p;Sl1tTW_)M$ndBbV`*+$y&GYS!S~<)9&g^`SOF_0`+ zn+))3NU{E(;QzTH&{Dw~1IQu)=FlIdAv~%6aQqS?BZ+(^7b69ENrsYq5#)MM&#JmUQOxlZm<5Dxe zL>HEbGYZTOIXe|shYGO>r4#dSu{Vfxa1bgj+Ay5hL6H*M&jivyUoUqKQX(hHl*yZ(;BEz(6_jjXjY9GsPEZjDjvnaVJ9sxy8oLCn)o84t z%!3p#O#^cF@UB7AwlvZ44m_oZ#9C;r6qF<{{+KencTm>gaNNUKgFpS#KY_ItXE$MY ze}}ibEslp{EqpOYD5Ic_hBg}ORaeQ8%2=#dYc!2P3=YFE;e1v|+YO-s98X-%MT!Yg z0Pqpk2qZ&MzA*$yElH}V6>~6%;8_}?f#GiNJ&Ykgf=aAoSiBJW2o4rN62vPh@>$Rh zJ7?7Ehxn_kyb;vgCH{Bio>!8JWJ=`apOQz2XTUjR(L!pH!$ERNEKi{kfg7C(PmgCn zNUYixN@=nVo&r*)iG3U==5){+X>v4OkK=&#W({L45%BmXEW8Qt>G)9dXCZ{*Yb;I2qf9~#xmk<-cMoh;L5JN)Sba;N+qiZ|L>w$#K89qh;iTER2 zmXr`Mipa8BD|&q)p@e`^1+Y(SV3YZNlF)*`htNPeN3LeOU%mu{#orDgE+5%!Wham69VqPds?NcBv}>NQ(cX zdp#oOfCRZ9bBZ}7rv9E>Y+6tWx{YibHf~XHQ+fo zDB*ZKvR2+hhzw)MAjmn-F~|;Gw}R9L>(vHb+fr2YFyeeV!?7H&u?-sAqHQ`zCDG`H zTo9dy1T_Jh%?6eYd?csr8B6C@NQEiSXoS)lLTlnjWJ>0v1VNJat=DU4IU*g;7}&qU zYPuhlR8Vx_5rd~D=R6?#fD|IRX(r+dZMqH4;~A}O;k>8az95dw#8Z0k5#CXeYjlQH zn%4#z5&~KZ7%8EZfMK3T3Lb&)2SnoSq!gi~M57IiP-v}X>7_u(p2)p96U8TTT~HkK zEs2|ykpK~qNGJ$dcma7X%!LR&8`)4|Bm{^Pw2W>SOQNcP6kw8ZA;87UVlBDYFC=xP zIS{x`Fuk7L#RY+Vxi+J6mFET^mm0$LubLo{JThjcs>((E6a}u&m`(iVCQ|Sqp0B(F zBp-td(?9WPXdo{*U@s7W%m=CL^b!3r0K%Nh44ZVxqzwaG01g-$^y{FAfPCkzHP#K)QO2Q8=H^021E4dyAX`9v;3&NFz%(b#)y~ z3^Pli7Q~$SqL0zT=pN^@gBvIOFaN=R0VO5&&(FM5b@0wrqa0L%Q=x<7f-3@%xR>YG zPl6F6LLqWu-vtODaTrl97Mk=x6OvXKLK$RwJQ9C_qsBz0J#`EL!3Bs+`Q_GVAOq2R z1Xds@DItv}H##MW4XqXVr}L^n@l=yjV3^CD5S8IP;HJ!DY5MgG}y8iiRF%x zn-|ZHfdS5qwE?K!^W21#xY?>3V92e zsWdC3cc-SI$vp%zyz>xB!f4I@@(#f{HiU|B(+D4kxR>?@BOAFRmOI+r8PiD zKL2ggKr!*rXoIF}&^9fgG%O;VC-W{PHLWyCH19%QSDI0@fcFv8G*)6AfI5kn)eL2U z2tp-Bha6~XR+=oEr4VSEuIlckP;hQ!KZ5`v2{}a0jFMm`%DM?!No3tXWC_I{4lxqK zB1DGLysDHm%@c{Xg%vHdQphP`^b>rVkTL}k(O|*_O-X8?5fLRr{iO)!{K}k~U%>rz z10vhY3Ag{L0x8~A|KNq*x0AFSo z^m#vYUcfRlM2{N<^>Q-DRsCN=_hP{x$SEVsCH%ac=JQn(kZ!v0Edx8s|CcTz=dz>x zh!iB_bx1$|xI=kqgOD#Yzq7rtsAfYU5;@O#k6}2YX)Lz=7Pf71*gxTPI=CoQ?N*e zON$H!Bo2C?B4o8aI za8RL)(E(Y(xmcT`^ZATn82GbUG);@XUtt_448s8DXo6OjybWw)vAf&gbUq>`40r6fwevAmD)DPF8v zN};EKBbo+NOz_UbDOazRgk*0A)vc;w~fB?%Z1AOq+88M~E z4IWuU8VjbOj29tU0YnB)l93*vB(G^CJQsGV#iVx`enld2nN)|H^1#oD5q?!2kgthx zuZIx5W<|VwFUw<4_N=6*CGUK4{bJ`aqiE{!jtf3114O=k?1dC?&Y@`<>~=eZ;Mo|3 zJRFL&?B!<{%p$qGNrX`FJ|icAH}`MRG#wrvpBQFMaMOsC1B8f3xp+mSS8=CH8|OvW zoD-x-NTR@UfXE6tk^C<+ha)G2oE7l_Qpq)s@Gipn2p{O7=bb}{q~({quO7zDG(0N`{wQ9__|7dF5~YmCzfqsRuiX=H`s$7#aI zNo^^I%F-v|9!;x7`nY74Un2lZ-+RF*UyKP#C6>U^q&+v*vob?V2}r^D5`yfPS>gq5 z6iB*B4QU7wQp9TVL?J#D9qgR1a!5+)6VwnyAO?pZLY=6K8)Et1Wv!vLM$=m8m=S%z z4?ld*&0<8~w~UBbtk(qZ_kD|LnvgTF?i$?R-Q)fH_t@>WkWwK8Ux%Q`7TyFY6B$w( z+MH%i!V@AOXL58TJ-@^GJm7ddVVnj;pAkaD@p!~EO$#e#D(K@la^x`~Bc&-E&jVug zwdvPJ*7$8Axd!+!B4<)%NUfnIts}@Af=G!{C>Ybg+J>Jy^xD=Kn6`l^DgjA|Tb2SU z22z9=Lq=4{m?j4mCa6ft6`F7*(+4QiBj<>Oh$#5y9GOS(g&8szpzi0C#=qw(fM4W? z_~Jj)v*c=KXXYze-V0u4{&D`vw|;%?+kdN&zh)EsvDf(A115eddCHCEq8bJ^WEkEDPoXxIR}qksu8=9Y zxJeGD(J+cn46YD!TkVKUA+98*Bwx0Q`Qj%Dh1#LQ+GR!IS=Gn6tgoETWV>z59PrC=5=O=8`4 zk-}2p26F`rAu(Xae@gSYWt4;(a}CR`dO7pPHx<@C{q<>bNI^p?#c;HrQ~V~{>z8mU z`eJ2138^3NMM?{PdGnSH;88mH&e!a$u z{VbZkg>4!b(?DAb+mf@P5CTbno3ja%_s9b5!U^b!R%#FmA|*u0L_j8qlUWdrdu3Ho z1JJ(cS&EV)wjcna=9#>l_CJ{h@IU<@`IRQCAp0-Y7Ig(sxEV{h_|pabh0)GpQlBUL z8@#+5|MnKq?sMXTZ|&$`E6%rGyQcKrKo(vL2YT(jU#~E(W0XUPuvVk(T1W*BYdOLg zUHJhiB`7VgWE+JrL*^u#%?1GQ`1nXcFI`Jh>V?V14EI;QMPibrm=z7)CG6h4!QK6P zJU>6;d?NR{aXcfzLopNzHjJW)LVvWWN@>{yF*GRhV#k-Nd!i5;fQ3jFDH)_75j~Is zMGeQ85mT&oqk>7B);7pV0W5!WKEoIw8e-C?NcrmHd4$LUT8|frd00r-kO{3(nq*OJ z*FY)Sr)nt>r9@ZkWK)DN5?$M1nq1vWFQceui(Zl$h8Q5Ts75d4dMsqTf*jHNYmj2Z z=`_MC0i!jh$#K|9M$Ta&>5HVB7k~%}{c1yM2Sz!T(b!8{+j=jsWpi;qq=!C1&c=`$ zfEq8q_;-T6<;(RBC~fMBs+jzEADBd_DC9?sEOSikQaB>UPy>5P!6Bkwgp_*Wx`{e5 zmnh_7=+m|>-!lr68}WR6h7S>4(_pjPq3>E4Yw_;w8+`TE8@zq@9*Uh66Dvx5@EFDu zLYS&+qSCY)(wcYxv(0Wq@&TS%?L|>gj&nggZQep;h4Xnr2oWw!@P0yZHKhTO;r~k0eGP>Z7dl@84Dw~el>wnj zB&`8bgA9uZLojhslT?bQWZ4x>Gi}o#X$$X0jNT#eUfLRi);4I^+BC-qHw;x@okK+K z*fT;%I0*R3K}jN68Ldn9B_x>X_va$Y`DdZF`15Wz` zhH-?}8r$u*M#7dzV?uF=2zWjvh~y!eQR-gyIsE%u8WsxNjB%7waNIP8aqzgH) zteTdD)^bmzOpR7d3JDDp$Rm>Y48xgG5K0hKilm)JYalZzO#)ddc<1?^r4`iD;V^NA#gaT( z5SWrwSk^zKAt;7TLIA7P3d3>0^TRU}Jtw~RM18K5W-f7)mtunLI;{E*UDrWMO^^ln4xhqh}0p?Ff8P_5()HLbMabp^BNMc{Pmnn7a@g$wubip z&S4tQ2;RY1P40f7>^fQTAjReTO7tLY+ZN;Ku-`vju(_oq*;Fxoxke$%?v}j1GmKF< zogIuOd(&ZBj9+GyEW>1Vox}1ns?-34_+!h0CC=Zgl7K8K>i^%Ge6zU&3ID zWUtuVI_KcVh{gy6vz-28Eh4lsVpRk0bB!@*n--F7Y?r81N~ty&nF(8oA$`emsazw0 znav*~62P{(kySX{v^Ok5=EW~mesPw(gRP~(bIjEhH( zgr5S&k*43mVJMjno6QEh-HyHdNkcDGhGK|5u}?+Qv}hVz37Plz_tLW2F0c`h78GQZ zIVh-#g%ZFl)h{e&i!ZU=8i4)1N%tG{QEP&;Y4mj6m=Xr(=TT1Un*FMo0m;6e@a=Slv)y+p>!; z%_s={KYl;9i{Y>pRz zG71U6X&4Zu2(2xehOdV}`4@-%35gl>C7?!YgWv|{e^7z%x~_Wr_kB;HNq2WpigxIu zI|Cwf#Ic+SwLFO`RaOXq)~4Q@N-8MPW3>V%?{PdFaX22}LO@6(Cg))%SJVHb5kPYF z`Y(kXkZ=>FRvwQ>eE9Hy=jS~iQ$w%C(0_S`lygu_fC^bO$A}on@zb(TNMKv!(zMO1 zBYGp_FhUE8BZicSeL~+Uw5CDRb?AC(^zYxi!FomRkW%Ry=rv6fT<{pqlu0m*BSH-D zF_I&72yl~!bF_jYyNqJ&B|rw+5;94$>B!3vwjZUlT5z9c6%)ytuLs)v(HFQ8T>Du> z@mtUNk7W*&qWY!1$n638r(A7ZHwS`|Ke1c^T(T^ef&jdhRCo=I+>#-F?0a1}{?$F6sIr-Y1Q=_elwbz*#AYT2!Mnx!BUgy) zmUUy>T4o5J7bpW4(U^Gen=Ty?7Y>D~c8Rq62L#@{c?SSE9G@{wBb=X*GocYFXL2DE zJSj>=TJhR(eykBx)yF>sZiMm-*HKfDNo4>Jku3mSAKXxagK`wKN=V8eDj*wyWD=4Rl=THeOj>}gRZTk?@u8A}AUY2qCE=^_Y8N=Z@4U5B@C$pP?m zvKZYN+UlzCDC-Y0=h1v#2uUi4LWY2p7D_7!6%Z4dG@nmrLh9Uv)0uJsnzn&%0;KX# z+K_E^@R%mD-yH^u&V7ESDCXnw#J1BOZkqE6$}__lgY9-(V}HNzY z2x}X%H=ZJ+IpDRCWF$z_Iw=NBZh{{CWTGa*)K!#M#fN@j1QD_P>Q@NGYMew2!!z zXZ$%Z`D=exV9oM-OZf5{?qB}dmoxyEq`!2rBdv}F`QwcK&-qbS7|RFMoL&efJo)O& zAEU445p_kv7iLUx5pkT*wCyZWx`OuSq=sAVcG;gQ48sV;Q`X^dMBDY)-Q8h0A8Wyq z0+5P{YjQS&A}JvUJ>=W_B$^ao9&;s`3Y6Fo2((g=)nlHV{iI6BNkS#Es3jX#vLRJ6 zlSEBXqoYb*J-;6U5;B5w2yTMa5)uuJQb0-=hI6&5C7*o>BPlRNaqte2Ea~PA-a#aV z6hk!)f+fd7C5Vr(ycS6lFKaE+!irK(Qsks5A9k{s2tS?40Mctqk z06_sxDP{za_x>A zxmv9dW5D;{eFq;iy0*dHW{Y*VLJY1Vq{_?c3s92$lqUX&kb-TPNuf~A&EyHKXc~*A zZPB$o)~gki)bJtTX@39^<^m_nJtyIO!ZeOJk0Z|KGmggtMt_1d5!#Z(RtU;@pkvQ2 zkIO)>3lpFp0sqU)*1F4ecD|hcmurHBbMDf*_oHe9hzow$tpWFbmrs=Bu}88-s5j z9uT94_Y-nCkeTUEw8o?MfD5By^CenA#1IJ9O%yMSlxY$S z4lybyL&!rh2P(}iy)Q94B4$rvKUrWLC+znJjN`QM`N(zh55Z#?MtE<~G;JkPwrxwH zK+e_A{`B-z)dS0@Ua2(Y5b(xIDFG#^mpl8)dN|7aCe;P+EGjfPflAZ4J6_Hj%q$HvE&*X(a-MlcDSA|_018o}0#Lxy?2yE7L-we})hsQ?@ z!&t97&*+p7BmH*&y^0|CeY32N`5pg>L+;bxHNMt)ASN;pocG+ z)7)Hj@V{HKe2dnX9#BM%@$7nL8#3!iT$C!YRi+Bvmj`5d4_Yg7oAbr|h1s_CJukDk z#TCyYLn^@!q=*eFPE!nPpuaP_ox64O(I^?-vMx zgcN#_h*d(FC^Q8KRqyyD4;uy6xP*14+ou#{~eV6>{HDyQQf!Fz<5 zD0;WZi9pRn3<1b3oL1z&FI#x$K!GZ#F{+Z&0*i@IadE3ryj;AC46s1F#u#`vVHz9+ z7rv%xu-#HRVBhz3)djFCT$&XWF=lA3>PpFbD*l?ra9G<^9|$Dics%0q@v%bd7YTT* zNJyORkOfVPQq8{SDW}ThC!!=9Oy!7i3dqqz<^-b)%RNA`zQ241?;SS>92FfhD`F(P z57_UIOklL=x)p|jtc@Govi|LIqHap@w0=!Z z8*N~01Jg7_U~F4-s}*e9LTPf66jB3{JQ<`i*qVkAIw8@F16=TUJ{$l^TnQh@fGhER zYqCHV4$25VeK7cGCbotqE`fJ4RPbYOjmN*STq4XJqbV^8)&3!7H)s3!Ah|lA6gvGr?>oSmv5%AVg^Z)XQ^~04)t% zAnVxOj+nr|`|S@nosZ~Nh9f%zAaq3(%ET_2k)Ii6ea&wI>=jRt^fJgwERZ@TE7iqS zLWbu_M<8X1lq_Pxf}kp@wRB3kK9GpaLTdscDAJTX045B9_SWa~z|&+0V^rPK#~9Ey zJu~1*86cRHC`SQfDT1{$amE-l?50*4y;4+5VJ#3fnKHR~p_j=VodsJ|Z5M@^p?l~Q zW@w~SknW*jKuWs1l@O5_VCWinT(IJgo|x#58? zB+Q2Ppc4E8xy?xSV$JW};||%jSg3zRtQ;A*H~_*8%SNG5KfOGj*MZDvlskvmmS0e8 zG_JU>({c}IbKK3vU7g9Vhd5_q2RXUR_!{XEp50|&>w!?bj@@S z#H}Zl{T&%>!Bb;%;jk_+YsKyEfDJK-K!D$gPeI_R^D=1CR5w<$7vF`ZFBn-BeFGf> zJGcl%Ip;Dqg-Y^h!1ny<*6pjqV_O-p~JGJ7`rRB%`6uc zjOn(n_6e12s-;wBrKtwJf_hv!-}fmH^WQ40G@@Eu8q8jtXi;i~2$;A{o5W|vJGHgL zdkJVOKm>*$e$M7KRMHH@T2{Hh~f|s?9!6iVhGoNclQZ+lkCGL zY)1_?9dTv;6`@EOF~ii?&taC=&P1c-O^CfYAUQ{<(&M{;<{<`Y#V> ztv&j+|3F^X;?xOE_5JpjFUnG~Ml_cy?N)PboxNjg;{37k=JLGQ?ljdJ{FS#m*ToAw z3h_r+C*+oRwDwwRCv%#$V3(T52dd-e!^*3tuR1=9;S(qDkQ z-uLTtu1JF&o}gLZ5)QwF)@GB0wnNXZW%f4zxAg24^&iY(}NXP)IIn2p`0#YUI*k2Mm zjus$RXG|Y^d#$D$^KYyAYOW@KUd+J%E;>Pgf_e%iGvSt5PSTW8yu$WlLmcG35 z?US^B>9&QGZ9X}C(LG(v5)1%w>Sj+!N3=A%tfE9>fU9>{xz;5oi;{C)n#M=>Wt)hGqjk;uDKVbxd~6(EbZbgru-c4##hz@Y;s#JW z)-<~QsskFnn{H>zHE`LRzMfW+yHhF1NB6T){39}CN@%~G%ggFmt5f&cKp9f#lop z87%J>pXp$Y`>Bk+=rJp+CcAi(_0lrojK>CqBzyFYbf17zeX3i|*!4BoUs#;0(rzk>x*!pv8u+K~3x>XC2C%|%gPSSij0SnYkaew{# zUee*d)3rkV!xR04fiWxA0p#Ts$)Mhet_BIhA#;!&@9XJ6tk$!gByO@sDA(>^aP(#u z^{wBwze+VFy~el`fN~D}@OWh;8!s3Zw}e%~mTIT^_+@u?-0RFdxmvcuTgH0895onX zndfCkW%N3^b`uxIc|)emOEbkJ^*0K`fe#C-BVL|<-MrhG!?|=XoExiTe(tLtUL5Mt zAby{OjW0-%OVlE!)2-p?)enz=MfVZzlwlvTs!Ia1=lzsEvhTcQ-;srcjWb#Ayw+-9 z0ckw%yyLQh^@sV;3ble(3`T#nmlJ`XNct)OK7K!sH53Dx zeo5@U(EAd=v8c_q)W43uI}fh~sZ)=P(l=F60c^A>0t4@`*?MyO@^?=9e1xNVwLkiC zBoN`0PZ07xV0N~`GhyLu=q>)xbtFbTu*E z=rjAxM1Nf@1U#Cr0v>R$$*7mN5Oju?)Pb*rV{2N3US%jJ1-pc3S4@y=i`NYq5Up6L zs$M4}C5M~(rD4{RD1M;*4}#n~-sVKIp}VcNn}A#^a;%yQ@^-pxA@HSz*j8HMEB$Q8 znT^Ywpd*Agwi9oBP;V4zZ`C-S9)W2v+%UkuM4V-GkRDede28YLTX!I^3g!v78ic8_mRnDD16B@tjC6WQ&Ioe0hgpqA za#m{zW_78RYe=@q{uH^8ecoL+vL>j&lR<@zN6GZ0Phz@1{ zn%VRbqh_eXEx6IiU{^ zhMiLzGqv^J>kpGxP1HAP*}x``vCpsZJs1`{V}x<|ai9_?`IKg(#-qPuO56%*_cHkM zJSbW+3eF4exPPUuQWk>4kK-9DXc@5Wo;Ll&(SBm<56Y(ligediUvk*H>;=kh-U{|g z_5?zg(ZB z_jxn%Ov0R085`HDNrvzywJ`EB*nKRC&3)PkvaihWIogUwZqHU@wffDuouc2osHnz% z)Zy7d^8HJ-Kz4zL81Qn){RnC(H(tI;J=?gXn~PJ460AGedsT?zIwz*`Or6j7Id!CO zZADvrM_T(*)~(5cwo+xd#YS9KRQm>nUWl&VY_Y)SmW94-m2FSs?SCq*lZfz48V}7* z#R%W~+kW&X6bd^(1pl|dn^d_!Up(uuEQ1+&UlaT0+pGn5cy=ahX1Q^2#vN$OB~o+` z_cnJN_x@7krMo$gvTAo{UZhl|lc1^WhYWP4v#UPK_6|QQf6NIhUOWp7K{D%q-fG%& zr{MokWC~-~rg%f1p>Pz5TMT`^WUIo9oxolY{9CNV2%@2=9B!DarCw)BKc;+uFG)b; z8kYGnmQ)z>F>Jn{8Q6^?QtW%}M0+Nc!A&JR#`ZXdGbheZtg2s7W!KXBy8mjYY7dPn z+s_JsRvC4{8#N3YcJa)5La(PCkUq!;Y7I?s3s@&|+ONOvJSkWPV<~OnK`;?6`O!uX zpnCP6pECgydm?*Uo{%z8Qx02Ls=AeDvCM@8k;FS)+UTO-IZbY|4mFKOrMx&1*X0_& zFps}IVx#1oPQ6XlvyalQqO;9do=;PI-4)T`c-5{;roCMFJDB614zB`WZP>|SlycQf z(`$6H(r7_hAd-p1abYH+PpL`?$f%xi6aP)n>endbJ!bcIo|Z`Ro>qcK%>^3}qX*AX zHjJk?>zFz*6w*UdZt7T4$0Fo-mvloSw!VM|!k1(D_uYMW=5W&)#p`6zL`cuMpDd>O zH>wXF4DtwrrOQWu<_HGG7i(Ku0TRXiJz$L|`TX+{fK+<;UM;?tlN3m{R?LX0Sp15o zA7w*N76LtI*KJs~chdTi3N%L9JZ0?sC41|Y@T07k$loQ7HTB3oc=T)di6QX}$&8NMk7a=&K=h&-I zD}aJDzsJBkwyhx{5Ck~~-I6^H>qV5uP*E2ND4H|po8$X#{L#KAg6U{_{W~nE6Ua<^ ze{b-DrPP2A=MlF`f*q8{lzYV3a(v+IJ#s+#(eqTfcaxk4^9dCLdc)5Tn+>UOwu`wY z+)A4B>n(pO;c1k;zYxzk^Rasoa5&X*LT~bc%F=0?pB|$D4`(D6FN~Wd8b!+;{8mu~ zUT#qU5W+@PH6#>$J(P}zr8;s^R#%{WwLRE zbEkpItJlva7OrIygfbdD5+d|J46u~-qbP4>nz9)wL@-S6?l|G9*;<9gURtLcoXAlT zY0HRMd*ONu%n@?wV8N924##tvnF9*k9uwQSR~%5YWqG>DEb^pXR+1ssG8g4>{P|{- zBn*d?jo59Na;H_U8+TNMi|%4~7T;p^BaeM`9MLZ0&^AX>U8xo}D0V~=u1aK_?q zDszDnC=Mp(2>Bs>cEB5U^2;xOy)J4cW2Ie^B&ZgSrajh}X(nf(YNBNoQ&E(!5`JM| z#}gH;4iGL%e%k&pp#AF*WjvMNI3`eu8j-Z;o))D(I3gLQ>)TIYRg*4=5lQ;1beRJX zV_b`>J5ti3Al~#kDDJg=pX8V!Tx5!kzmj@_U>F;xOnaBTM@}iaK2hbeV-Lb^=d8G3$U!i^{#z%%pqGZbGUG}k|4dR-g!x{6 zxur?kacbL_F&cMZaRuha}uGnksStVr%3Ty&FXOp)yb zH6M94{4VL=0HIU}?S$y<7Ro<^LWcDz;Uh1Y;;1Ip_D4k?3HzM^>=Du(#$E2GrQcoj zsKVRP_NZbMT$~uaR=$K1h4$6hcxEy;EDGew5@c)lJZ&$L72W9nCHuSMKW_=( zE^d6BWIMi@_Zjt!KQ0c!YM$VK#|_NS^~=B4ejxn;@DnvKX z=V~W+9PLQvJKqo_qIo&*7YY*VP#?#p2fz53phDz5 z{wd;TKcU<8HkOs_Zd9)suh_i+=kK7(34s)h)5mH$<8F~vP13L#UDMb~tTUsnyBBtX z54;D3ceg*oZitH4wkPF!@gV~K=bt$GLtfxm`Az<G)YhYsfQKf7oNW1s!6>KFO z7kv%Bif$|h^vm+qdC1GsB| z`|-R4j;C`08m0q2q$_G#vveCc=lDsdf4jPO7PqVn7(%+0_D(#W z)IZ)5ckkX_JfMlY-5$-S`JWnyV~kzbYyEj#C)9VfF*m%~1{$6!Q*ay-iFhC=u(9mJ z^ZAZpZuM*XZXhLvywWZ2n({u?S6=l)J{G_l|AdyhZUmVufvp1an8Rl(VemZDPZ%lo zU!buVCKp`&{7FRI9-J^IY zEEBKCCI?U4Yl&KW85)ge$7ggX_HtRO1T8d7HZSh3|BiblM>|?W$S97;C25l`1`Uf+ z{A6kKWkpfst@Rg6yJoW;iA7D4aNqIc>47WDHo=oL)*MilVXM348C7Mz{?*P~0ZQ=x zA1RJ!QG!4sCd>!}a(i{!mJMgOWLGUi%Yo!ATx~0CQmKxLm!C~v)QKYJA=z1f)#1=o z8Nr@9dJPK6N#*B{C?EA52&qCHbU^lCD%gkqklkTxVPzM7TR)KD@huvWc=k2ckVqq? zrd~X{-1>}np$us271So26-CkEttjwIaFyP?RZY#ia3}7B_2rX|NO5sn6M*yybeI3o23H~_2g1Npm!c)w))!o0qI#1pscI6(AW> zcY1Uu1t>C9FQtU<_m`rlY1#=j{e4jQvTXhx1ScyCgXL+7x3{Lbv!&WWFf$gGoiH|V zQLGpZw84!l>n*G2(Y9Ne`XdgC+_X|`v(Hc|E9HXII0Gu``$VxGwYUej&sPPr=MQ$P zf6Id`PE$EgG!5l9X>RnN_7q4N!uWoiTEf41iV1DJ$b8rhDLeG^{Eorf;ArE1@dTkzQ9QRAe1{TTt_fK9eKUa^6e4)qF&@3EJjhT4Ck~3KfVFtpT$<8%T zaa|hm0p?ZhSS>mXMORt}ST*d*4*}Q5(1-0{af_nk<}Q?Z2tOp0h#)VTV~c;C+%9VH z-$&1W(~y0&-12PH=xR?BuSrXlo86h+x~3Sna{ls*rh?S3ua1Ncyl8Rz^2b=dS+DVJ z6EgH=g*H32rY9utU*kd*V^BCQFrYjFG%ua%9v1uMJHpZi>!6;|sOPvX8&DB{6A7O}W`O?1EJ2?5|Dq7WJW+={;S zlL*`tiDVf5pSbK!Fqj;irWHT(rs#bA)oEt%!IgEUsiQPaC;_1zT+WJR2CO-D8uX_i zCehzv<>SAPZ!u>lM+}~;5O)c#7CWlZa0!=``r(7#J#T7P8KKq*vwykJrzp2d;uLSKZI$1_IgctSISi0J%g z5pk*-+1l#;?px`;8DgFqP#C{*Wq~Xck-E~UXG$~qT|MsJW&rofh z8=)RimLAzaJnztj_>`;kfX$WY_gHg-GobvY zmbeb5LcLX9>B6u}gz5*uh;{F$eNr*#3U5V6e~U5S8m&<*ou?)8OxmM3Zmu{T8|rPx z#(Tyx!ZEP#Em2$hro&+^heaNkRC~e0g^YjLsL1hLP}~Zx*zni}Q3RcyS<&;F6Qhc_ zMSIVD&V1D0+9673Y&+i9gEq89CB4BPBhun>xno)qwdzYU^p{_vVC(gA>-#RGBWI&O zJ#k^f7_K>tvLQENv-|#J_s{eSXG$^>aP3Au!M3FRFtX$Tqy}JguuWL3p8t<71fZ>e zv|aup)U~A51(Z~JbuwWGTr>(pg^{TK+INF+|JO=vU0>;cx<B4n}83|?N-uT@~mWK2^=2uS|sMkh?a92}kdbLTr?HmTnEy(4*yYG*P z_cz7$y%&vpt?7|T!z3)y9-%_;_zfT1+Jdaef|Va@FgJULyfKZ^vQ`SEd(UI9YR7nE zl7;ptdilxwk@$@lVoX*8+va%(Ze@3TES8S?n|#D~yE;n?Nw3B*U*0_|*moqe6Y$Rw z6+{V_`1_n?hO20{t)Cq`Dr7d3$KQS9sY*Yq2WdvdC3kOMZ(FC_1~}Ws*cW{H{+oLj zm50^TqBm-tqm##lTS9+3cAU|N)YyHU@un%|8Mw0PXIsZ{N7(reVY0pFxgqOLo^CWH z_TeG1eamn~e{*A-)hL$nAH3sXWjJ?ZbjB|Ve&vX1a-}$wEOa26UMiC&jV<|CdQ)++ zQw@9Omzh9mX&YJ`=bEZt74`(^+~6;k2C0rNw57k*v&s~@mI{AM%_mJFd-SeaHF{jn z%F3y2gL*|-6tNn z6`}}^nSx||FmKg2Y6!(Lmz1-nilqy2HVembtez9mnhXLDxO#^GSMP9!FSHc-1*8!0 zUV9RQ1Yu2V(J|l&W&g=jeoogXXm}A{+m+C_-j=UhGoq7a8$1cXM{5shN-2+yjw-?B z_FO>I4ul1*@BAlUt3ou0OjJ8^jdA}rSuJ4~^XBbSnjLC;4-U1BeYkm#+KE0AQJId2V|jX_u3&FqF@R z=FwA(BUl$dTPoHnD+TdSBar2|H>>?% z<=ZDas5WLiio!N_4WdMvq}=xtO0Ma4f&)Qc9<-w6K5d}nS{5E|`tM_uWa`KuUayZG zL=0>#oXXA}Sf2$<#(RDuzdGAa6zg;H?<1rmV^t~CD0-Yn!%EjsLMst*(=wy9r5UtQ z9^CT$&dxH2I+jM8_ivsX29BvqKX0mZijv|PNK*MGWlg3{_c6Ck6Lv~r>4rLMA3bq@ z7^B_0e+GCRX3(H~`3T3Gt{;Krvvh#bZudNFF0SleZ*iI^sMaX&p_bAXFDn`_-^nw? zUt7JlaEM%?Soid&upK{q67t zxve%zaX{I%k70pYvlzRm9$CrcyLF5jv8CE5p_ZH$E(}0nRHXxWJF6xrMlzN{bW}3| zKnB;g3o0Nqsj(iftW9>-7#A$VhOR4i3nt;gdc<)O0c=C2|0e(1{wbXhd*g*i&UdG^ z5XZKXx~~qV$-p3yJKTB@B5T*R3al)^&=xTDbRk-uJF&BTZhpOfXmeJCd3D@pn!M^+ z%y~BXwJ$hfe@c{kB9ZDyKsrqL_K9|1Cn=7k6OcZfb<+rcIrkn2E*XEL+{r5bfnHD6k%Jm$F zxw8(*l6%US@}7;`Q-x<%#dG8*MmF2;afVz)g_xvR2 zi-48BdFMkxq+5zC=)>yG=|@qFx{>41TAV_iKURxh9YVWf1>7+#KjMX67F*w%lb;{J z1ei8Trzo2geGt!oTT);PQc;DWt!YC?g4w~^jv|Fwtjb{W-4QpBoee9-U%tU&%k4}I zvGl|p9YLAYg90~9w`Vw2-`?erbBuiaz=%1VGm@k{<#R?S31<@s+#UO?UQv`7JuaVV zze@;6w-qmjVc&4Nbt!rts(<4!9DJL5rbYYc`%Q2%y^<93tJuzCU}#JJ>KK_varKvC zqFe?+w0QI~Lo~y-cMrEjnnjqE&P+p{2a33l;nxK$i`ZyA${Rgt;_td3K3FQyz1p9Gzs=?IGh1^eGHn}+Iezb$J`j|^Y0Um^Icm%pI<4sOC zUI5#lpx=Q>lA>7bk&R6%Ux6wc5zC5M+$IB)o4LqiMsNG^V@WfU;7M)(bp6B2_Irl2 zB5M`p!epLhvS*d9$x%?jXUWc*2^l6toKvQ@P_rk~ z#FqdI=pHw`VWFc;qad|Y9>#C*=A?b?k`u*Hdi~7Sw05lYDSIiBe#UsdJZ;bi8#{xF zoQpx;(UjqtVfM~%r$j`fc-Y4#zfgbvpa`m^A#$-VwZ8Ez0-2VevDG1g?FYmGIsYJdD;rFmy#~rQyQrg46 zctR{g-xEDfD13FMf;sjwVxXyioR2m5ohhQv@g<)E3?=|fVB#jEO)=3o-0poaRf2Gq z(y*TW!Nyhkc)#w32yL<=DV2Z2yK7_pvPEh2lZn?SjKe?p92}()eoVVIAFg^gC4m1n zo1Tz{^Nj>{JoxHXg!*WNJSkL5+xD$AF88n$^{kMxmv10@~GbC@$>zh1#G z6rxmlFg?)nvpEX33X<6PPJLf&(Lz6vlRRd<;>nP6l6Me`;Ru~PjBRl!fzg8Y%(W2EqC)4oWNZ$y4!}2A<@5 zD0vW;^5!u>>^_v5X{fJD-)<-B>%!`oGa)~;uRL=sz+Oy|dHigWQPOb!U=TTI1kn3! zi?j7o%oMxjtEg2?;YF$7Q%Yqct;Si%Q^gmLD3y|mMO7sGbScPr9^2xfvaik|VT2$J zby`+egQJ-JW3Qha+i`!GYGWlx~POD#uLPH%gB zI|)15Md==wDcPG)o~-xbM&vF>GbBdqMYzZ>i%aAu1%~)G+nClExjTdab!}|53Pf2~ z6im#_z~!vLY!>|--$T(lM->StSEz|i6rkGWsSl7x;lDrE%Hq@J!v2DO$8su6*@z(> z^F&?6SLaw}Vl!-RA2oNX+Suux=#AMS>6x`;M{Jyux;|I=%9x-V{>J{5@08CvjNO~+GvWL!HwUa zr4}8<>l(%ToO=@G*jwl@MH8W)SN{_+rdoJys!iz~jB8Eq$krn`!F&`$V1zbih9a2@ z8o!dRzuct8nb=pFDOIE<$9H0mxZ%T-5;We3RSmJzaax;Mx^BX_7MSvE4(lhHUulh? zs4fLG;5*4@mF>b_r!+g(;1GJx8`n8p_v+n)dsGk;($Tl$hR$-g`GMxiba+7rsMW*m zW>)-po%SkF1!uT;s66$#vA#W)Bg1Mz@9pHl9vtND@-Ekn%tUcQ<;~$2wF^(+znH+- zAP9`hFEa0hdgTuju-XFq9F~-E%3?1&B^Bb#HwC=JFwP(ITVXw&%cVRI;!}FvR+pJ% zB{^2fX3Al~ONOPmuNg;OZoy5=$2X+U09TMbf15c5o)N@H;6veD-h#S8tiJ?BOXb~g z?OPIvtJ?-u&YL?thkUvL0rKuNffBR5bKveLb=9-v+VY>rr{4Xi{*G-7zr!^{T!mcq z&5RLF-|uK}g7j&sjj9f?^&r@@X4MNkEoGOq(IUB|4lKEeoX-EX1>lxa0@!!}Cs^Uh>Ht&7Tk4z-Oa)Q{C5U0&}qXkqhskd>q;mU!#m47W!_BvFG_CH_BM;C&( z81n)WoKw{i*1oGjwEsz!d5C8wS`;wq-SgNGLh!be{W5D=!icum>VFB4)6>+%7*sWl zVz-1AJV+iKBwmtrE9=YFEJYfkoyh?OexGy*j7??Y?oX?s@p&RZ-NF4{@;#~~8B>Le zVm+N)Sd3Zjk@WLt1{T7q?_JCQrtIo*IInf0;zGb4)SG@HaD`OxC31#t`DacB^`mO_ ztt>9ey!VgiTgYG6H7vO|{9IW-I${b4@MhL#Lt~>K(!?t0Yb-I{v2v}te#LYV`Q&6Z$jOK?Ij+$v7xz7Hj$}C zRjvOg5#!W0(6=opA)G6d-;|41BO_8Z0o;S#pH(CQ&fxW+`p&i+CP<=JN~muB&rb1z z$&;S?gFNVoL;|N13T@pKZaW!eBVkJ`eT5rC3pV-^v3*jMCqffVR(_5_!(rE^bc# z>*dfDG~2B5>Qr2KL0d)^a|fE#eZ`nuPLRw~3UIBYs{e{1p{5^Z&{{N%ski8s6iHU6 z$x$SJ8lkkpE_SJg-i+aQBO)SAW0v=vgKeb4_$h@{nA;Q>vl2EB{}L!!gN?L-FyU^< zrA9!y5*|~Zi(*{2C=sQdyYs^R%?-+i76SulDXp6pMJ8yiJR6i9;ZoO-BEr1-%h{h* z|NTdi3opiG|0G2SElz$3WBY8xmmDZxfsE#vrm?PBl!m2ExD@R!p90FKN6@D9CJyZSs|C1384 zRDC6R-Bp|Py6Ko^?$l?8O65w8Ow16jk+v(Is9-(OCrIQ@o9XhX&-WV(E5H6nm7fJP zJR@1G#i(K7uNA+*KZXgRoXR)4(nA!EQKptyW83k&B$87*0|eHmytdg^oxzsIJT|Ak zVky4n(#dDN)KCHP3!t6VPfBefxl!=)*lG_ zO~=1XrNzI)E@YKh62fGeRpvI0OMN@;7456nv=O^XpDPV@eENOkaYAN!Ei-PwIJruA zsrl)ZE2jW$K@eGI*kloldBLyXe#`szkd`bF<+x$r?BzV_M+emb85@ljDgS~LHBvfe z>)KzeJPa{HKUV*_531>dxSKiZoc~V8I>w=b<0~5#Pb7OEC7@-noGfGDsPOKwcqu37 zK-C4@)DsC7vTVGYox{$S{DsS+G`h{M{#l(}l$;j>6GVvjhy1&Iue_p?axBCpnA#Nb z>SxOo!ITDhxCX~o$(pbHNe)X0Lp<87pVs!JVKZ1XP^bW~fS`k6*T*aGn`L~ln3xJqmRCdK zkGuYc-{DeD41qkBH>y6Z$}0kqE#)%19fguM$_hF*c8%z3iV*8buF^r_-0u3}h+aVf|dLySLQA(t+FVFj#F(_HimR{|~rSe2Z`;emJ zJ)7ENL#L3NbtMnR(95q+h9MH9POUD$Z>0CuKSCUxy=LBh8dzPXx%~B!crFP*oY0-r z1#UXs=d-Lp8;k@F;}w9Tqw5Rm5B{hS7nTczwgnxMT@u3d@VKq%Wzx!JXG>8a3N4#q zkxzECkE)A`SH#J4pT&EsRZ7@Bq-`Rij z>1XlpVA}Wao^{oPUCf-8NW%R2Hv>a*H}tO=?VwbNLKwn%tTg>Y<(&WS|E>a;03ccj z*nE3mjY{G52-&>Mul>l|96^9}ivc;e!UJJ%Fqe$4kUSyyk+9X!krKlew7#b_IhnR( zmZEmrdr+69%03QK*eHG(>u^_j46|u4g$CJG2-Tqhi^Gq6nl}|#tfhoV+t6E4&Fbxh zCQF?cb$*nHeB56|_^JJhZYi~N=`>!(!`Rx2_IqfV2xwj4h|WjhbQ{gb3Ifl1g)r&n z%-Pe4UHQ#IOvg#7x0>=&>n@TCJn{MmMmoc^5uIOlQ?f5s{)GxJyE(!<5A*~~{y^UT zHtM`TAK0}D{H)~oA+JJ@X0SX@KnpKu9UgEO#D*7_4jI;JVtFD2bxcNM6~rq)i6(jsPEpNv+e<;QzD{U=J3LyZzeLXqUJt~a($u~!zk52;LoIjVAmYp`_ z!Wy&zHzEU=c4x8J@ZU3(q^#M=6DfCKp}5qD0&(qPA)HaYqB`hwXskb1AvCe9I#RUQ zg}388OErd)HRP&EV0SKz8m!7irfgiq zjLA+!een6AP1NeYpI%&#M3hCfhuq@BTo_L-Zb0dN01IWRJ={(yceh*(p4wpfKoAhX z6DYT~-iNiTT0&d2*BF@_#tdv^efQ?Zy4(hlq9m*xr2mMDU+JFK$dV)xzy46j9zC79 z|LTcR-{aU$_6tmICBn#1pdzAKb@}o|@MK=-Vhb@R^VJkWDZ)^ZoDKzo;cjiEMktL+ z-OyT#Z4;Jkk%h>|fmVV7pD1c{J1fc3IK`ntLxKm7yB@;&*0X0ZCQ({wzRabFyW7~4 z@<6P$4K6X^I5h0!KrQW99%{d~#6=>u6e#J!&${G?53U&vvyEnTrQ&hWn|HL~zfao+ zc=Rd4F9ha?pl3TO(W8wmsJC6z7`W;9KU&0byF8<8stnd0FeyhcqxeR49|_ece9U4f z?=bIDggS(8zZp(*^Uq)CaxXTVuVv3Mg*O03>^NM~X^O+Yj+Id>#l=_en7uW{VV3L$9hNs|j8m-Sx?kS@x_y2S<>qUxL#J-pu4OUk zlBud>JHJo3HIUE8&Ku_~AD0iok^I!CXiGNtH`UJQ4Y%BAZmbaBFD-or1(?3qpeqE; zeSteFPe7O|W@`kGFdsl@p=9-Patj|hEWC8~zvPBz2D@T)Q@8Qxx>e1h-%~VUW|A&zip547-NAh`$u|OQcK9Rqx-H^)c_tm)9{r zf67!hz+pB|lO?v{@Z@2j4CVZ}IZpHZvml7%GaYX1NjLB@Bm1EG$SYsrw(q}RIxmxW z%-YbZ0)^(Q8&A4!i9;XyNbT85iEB7Gl3VtICj9pX7&qs5FL5-5dfLL)@EbGr zfM>mVYWNW{u?w2O1)z1*zH>@DS`}|t{WKRNVbPK{lTy0tQsHHjloSZ4GMjRmyUr$Z zS54SXIHxxoS-kypo7vgbQ-q3qSrj-!+s3HW9H zTZABIafuoAR&rdH7skX69&&Z-8p%NGFxMb^M+k2hgj zFHNi1zU#9?r zaz@eYEF{b>+gsGPA&E++yC@kDk=kTQH!=62Y;3&{s_p8^k~uU}@r5i4^S2^Pd^T)N z7c^#!GL!<>e{(8tYdZ6?K6-1#e2W^xvBtseAER9vIDUxOzAqm8%UC?{R+K9UWgnh(@*ziZaOtyW4ZxwN(+s^4-LKRw1| zk@}?$gC!!#(`@w&kjfF~B(j06HY_}=dFvfcQP>Ch26!Mhc6!#LX0s6Ld@U7@SI=bc z2Gh`^X7NDl@viq%{f6pS>Z#K&fZ$G*c>h>+cyA~F;1kcB#iQ1WL1mzo9D}`Cog1*O zdP_5&e0uZu)6LP}|F_fvSc6h{pB4QaV6kqIA!j>!^ueK@`zG zVJ!e;BMrZ~Xm10Nms6&YfDc$Xfi45;ep~`N38X5nQlNDx3g(aLpE zM2@;KB6{!TcjvSz6j{8&I=%L1mG%4(((xkNX&MMsTzgfp#eyW+(vDr&B$H`b&_RE3 zZ3eoNP^lnjw1C-TV`j(rhmO|kci;G^*%bfvzSyNEW9lkg=za@f*p*wz$n&1Y3Xu-D z5xef7$?PC{^AEvk%U>ApJX)aQ*^pAb<-q0@I&$}U$02mXBxO8V^@i7{A-!v5R-h(E z^G_x@`X-aYp@@PZ=PJlPv*}kE)d@vGZahxCBcC-{Oq=^J3SSab4=f0DjF(0|4HeFT zIYiG8%+qr{+pu9(A68VHV478)X~qd=v*LLP2ecae0ID+ra)9Qf5d|IJfQZ}>EBhr>UyB8O>-H3(C42pC&12x z|5s+px<`{pHdnmmboEZm1jcYd(ZIGJB?EIy}!hd}xikQl={nRIl z|tDrHeLI*n*KI_EaaRCU-! zOQ=^xZCwt9_Z?;*gTg3s`Dya&3!GSfA`IfAZ|8XX0a9W+DuxwX^vaaYuecV&_dcuE z{73ckE_;d-@*+r`8p*wT)Pq=3ug3~-J#EaAn^rai2h^s|lowuYcmCbg0)^CoOnMLG zek%gr(V>@}avRj6N+^abiSgdrNY6$;E8C36IeKgMb&KaX zGOuWnq5D;gpaWY086$SlFlCXlre4zr0#4*wkR1KGOwYZ%vet#S@sgmS=B&OQu_@n2 znlKF1MH$=YbZ+4k&{`CyVhM(JMLx=)-q4#814bn(=j^_`@q78x&Ca1${m~QAL}uN7 zq%Ks68ZW~3#dFhNG-Z!}>6zFYW0w~BOT|;Ne*CD;-uT@e@F(Kh5p}IJ1TV%wtZQm! zW;PV`*kVe1P%xu?JB`%zUlY=N>F1WSqR(hnuJ2SF!&}PkzXMd@^`PY4awo2u@6?$R zPdDX-+Sq)k^1eg)?R&QWW?nz+ie{|)uVK!Ob(mM4P!8DBVDl;wHcix*b6Xv%HkQ+1K}KGl2~U|2tgTVBrj-=YP#(Q-QO!rO7ODi;rc! z?;cQ7abLQg#SZ=-NoN_>^w)=RV!$Lvk8Y$J9Sx&PWOR2+x1fw}X(T4y64Korf`lL< zNQa1|gw*r%hP~OFvva<2-=F(LFa*i(PI#tRtQ}`E-R^wHEyf?8tKVKnmxLFl zk@&2qTe{75j$|$sfj#+$Gg6bU@UO0aYW9|8WO}2-&lnt zW(pim1ILXZdzpjSLEy*CvM59~>}X_;E8YxrzWl6le`Jq?9=mml&LAzBZ2E#DDv1p> zui&)caA9>+qcQnzZra= zm9T%4hF=@pi}+3F@`w&hM{S_kJ|F2vs5xp*fjR01(5<-8IC55ihZStw*RwF0oT+!` zuB%LKN{KmQRC<4yqd+dal*=T++XBO5qX?!Esc8q`VMC_paknp0N4DsB@WEq- zDkADW($%n*aa#AvSc}v?b3@uP|Dg3KPG=f^!mRAH*AYaXJSAF?kHx|B6c6`OTTNc= z^Rt=sR^W%BwcXn@>gFH)*B;Y_=9v}qXiqxE9zI0I){C@VE)#|Q_CvTH_ve{@m%%A{pZGr$`1}45dSwm~JFlBN}JydN$Ew zv@VgNZ<3#y?cWsUW(p3YunJPISzn*C$;741o^_R@QWQHFcT}DcGDU>PnF$i7sKM2- zu+Rl)jAKBIUJ12z^975@^zDy%UO*E)G7aL?z7Y}mJEAbB$q9)0!y|_Fu^nIFB=iHk zshAXm>^RBd(Ct?!V|v)1*HKX{z<@oAQMahO%X-IZ>3`dI!EI1&M1jw*aLLDtubyq+TY);(V zwPVd;GbZ1e*%DKpmWNvyghX=%PJ_26iI|f7Kx%7hT^I?oLXBZu9}q)m#cdNJyh}U* z$l5VUr8~*GnL^xy^#H3p=R4f@=`V0phbg+eOkR|gs?KW&U~yc2bBtX?kd~E1wNT{p zvfZq%0s@WiK-QR5v$;GMrpjwSF)h~a0naC#ED<0|xNlwpr@SgU<@k=!d*ZHwXpEP} zEJ{h|r!nUTpl$r(n86|fy3zCO;v^fm4Z4%=&UVQrX0i^Q8guTeC)(A@_I6)12Dylv z`J**b)$HBU&*P2tnja9l2RYXY&gwmauO3Lo&JSskSi}O47?F?4u+2lZEv;Z|SJ^HE z?F8oOd+GJoT;yGL$n(ekI=y1=^X5=RIdqEAV`tveoOrAH1~U>gcP1QlCrwdWd-Wc> z@YMN%<`Z1HY@N=x#^B#YoYjXVH*eS#!29Agcr_~4*aQF=y*)rHb#z~KdRI6oO@e)w zioK#ff;^QT7MJi%qT(n*`&Kr>UAanAL_tDd!M>aF47jFmG~? zO{;Ht`uQz-LhLDnjlxPxMO769eaVV<`8sOd!~AU3d%|p5XiQ;XaN|?hg#)-Bfq9a; zfaRM#H?t?4APA@kO>&|=WkD~Wi$b9nTr+)vb8mD;?iE7#*~W$CIdF8}t$y~BVRB@i z4%tI-gJ*43CMrsb76mIM+X|4}9W#}uF4TCXwALj>VuVs?VLL|f-iYLJEvu1JSYK(I zE0ZI6nnjRbnyE^!bi1w+I1dGjTchDDQ7){d(algxL`KZvW+1-ggyJcNsv27Xdv#X{ zpH*zYd4NyarfD315G0*?#W)m`Rn(RU2(e<(M&a9uf}EMbpe<>!sxo{e?cWbd zk7E>3!OwP$a?nj7T$I<3qGA91QsS=bzUJJslyu2dU3YIhGAvIt9nDF-z|CXg&bjL@ zCqg3?BF_I7NdqzIUq6KV5K!(BUHN*Nn5eIXZ7dyzyG*X$y>XYDmppj9{}s41dXvMx zekeW~<3fd}&*PVwzyMWN9VAIW%$X}+^~^>Lxw|W%VfSNc{_8Klig@kKus=xfuIShf zHReEtm|Swc|L#uiLoINZ8&vmq#%nrF&)Ixi_>&6#4iC1FHZHv-E+QpgEcnvHLsbr* z;2A+Rg0U7^gjtp@5?`iW@sT>g({OLyIzmn06_{|^uuXOikYTNTIM3QeCuWj+yf8(H z?srhEO$peKh!Dn%6jXt-G9hs=AgPy@5GP?U!in{qmXpm^-K*XTik`e(=R~9Ho7m#C z-aQJyxj4fDf0gZRBvf8c4?0Q=l<`>K zLjuKQIVT!J-o6bJqyUEEfM>3CCFSRvP0HVXo!b@u5mh36P(M#Vl`+0BceDEeb2K#s z66`Ee9l22DfhXjgLIXvZIRdKw{|~WeY)5SEHO|xLe#d|u6C#PWZ|T!~eZYR?xFz)~ zM`Qhbv|p~UM~2dylr_Tz3AbPn&lEhBc9i1s%}f?q(&W5&oHFxGDOoQ>wP;K(r8`}N zqaYPsd&#$=O8nkG@u($qjvQW+zf=`Q#^uzn`iqL0vA?h>EERnbTVX`NB=yApFIc@n zKmYDuWO_16r}*$yLn*~UpwZM8I6s|zR^noh^j~4LFNJ4OmaBw>#<_;fi~{r5upf|Y zMtK=qsdgj@Z3-UqnU_ujcAG|nw34(CYW9y9nfEh`D71H3)csTVgr(+l*&C#DUaq>A ze`o(JiQ04*O%oOfVx{ir9d?+To=8p@eRj`VZPowTba{8@@#fGU;?;3i+Z@JqHdMzk z!(#DVdpirOHqIciPZ9bO$Z^eNocP-l((khAkatmo@rf+%gnj1sV%7S`xGjShmlp1@ z3!(yy=fxh{)Ky)*NjyEDU*3@BOj&1nPMSAFoUz`1zW(bGvUU(1AhGnXqrLM@iawnL zONg&Ps3kh3B>WTdN>(=}&*~ZB{I;b7(VpXT?nu7CUkPbFGRmtM_;4=}ALDtR5tyTv z2^5Vs4(j$_4=bz`?bc%ITc$b}>7NpwVkIg3EYFU}%fvw8fu;pN3;&y^iXMEjhNauV zCnV$WDs_gK%))@YX>R{k7>Kbtz3`DuAnsfx47r)KK=cciqJLT>QTybaBTQ6KRh6zI zkYSx48+2H)p+SErK0yKuvVfTeQ-to6mSYZe0#j*UO1CE%fMSqwTD2^_2@LGt@aXgF zmDgL+9jj4XX=a=Ar&ca_2k2yrki~K*5dokfc*Inl!@Zb+8j$`V&l#zelms0`Pa&=R z9V`tnBIGN%`oFTEO2brGho@5At!hTyd+BCdxHuV*=gS37pzi?0$8UT+YSEI1Pad0u zKWYKvkT%e3;GB=#MD;}oe2nBDDLODzUv&$=f2a)*RblE^P?%r*=IUQ@SXRO%q{Np> zOr}P@OC`Eh(aan@0qVbf)%=@QVbf##O;;nI(KX2_Klc00*EYDuzXUI(SZy3vC}zcI z31?vWNkgOvl9BHVL&nC%rH4~g#T9Of2f0lcG0AF_4X9cj!2W=y8Y=~1Ex6{}4 zb1r%C2q{gG27Cd(7ey}E#IBBItbhJ%pE+H6;Bhm#+dVeV<*c9ieQ)uIvaK96Q^$PJ z=Gd7#ioJhd3wo&jd0+GKov73P$2^NWuX*1iMGv{R!G8_oy~%GUu8wCm-E7aPrlG8q z+irFkU9Bh5Xzy4IafCtmgAwO}VWQ|UBuF%ehTl_>8aQ_N$yM-D5s*R2*Cb*!72OOF zCH~@+r7A9!HFA!`m_%M`2rNtl%O8u+4^2?zs$nG8tjl1Ixt9D4b!hk`8byNfu>(FY zBAf6ZI5!_hgg~w5&X)b|{#a&XzFdpb$G&y0sT?gE6iQhZWK6p4B&`k>)^>+R;e7@2 zQcF|DNdFEF%3B>dgj_l0s0rl>D#Y0&eA_WwB7cxoqCCT8nS9Y0EvHZ5p#&aoXXvBi z28T7qQYJ4Dxy)JTO{60fcfN>d-q007s92)j_I;Vz??6@+LCRh+(Xvb&)>Yv~4^rhz zOJP=chV&}0yoPQSq|54wR#ah6XK!a~#XPNH8q>k348Tp%cZ(Uve&0ZXCR^3jfv9lS z1gUUpFY)@V5CAeV&ydGto;>p4tbSPdBKb43=qfkJ`7w51dzd%6^z=ftvmyuOUOMIg zj2SNEpVQY+#KOcOFJnoI6SE&m7DBf!n8fn$oN8pMqIsa~kP$j6c`2}nRDU;yvCGQY z9P6Qqu3b_=j7lj?F5om1Ak^0zx;?>0M@OkD(9aM3NxMtZhv4IfE;mtwxr-U{7Np!2 z&)?RbgcuS3jrQ8_*_6Cxf$2VeOS5lr$w_blwqhoGcW7a0U<`lMZj(6(KIYEo?e!hadop>H0fg7D`46-%?K zWTvGEBEZ6DghYa@2o^n_FUO(LW|F^aRD3umrkqxYnvCH~;g$8OH zv}F39#wIbZvuE?;`wx7$6q=6w;)xiffm%BKQ!Y<29+Rv~_BB{11)r<*)2drxIv0WJ zO3T4ty>$4J$QR@OXyp7&f|^TLNC44@?7M{8sP!U+vE5jiHbdMuJ>}=eQ?Xg?rzwc^ zuxUe(1IBbplUMJOLQKL;Kp>Tep_Alw_q>K!=6x9 zFmD5C$pfr{s;$}4D#g-m*O{qqIYO)E*k`jpC&p( zrB3G*N$a_m{~jaEnau4BSVlh5Y$ZLI<@XvG5O`4~jmk9fb6XL4?RFG&+iyVN#R*>^Xy~`zi$wXK z`JR%O`$2enW7;*xTCfimC&92{8L?M>WIuD`16$BDQ~gGl>A#8LxM(1#64n!n-JBaH z^{U7o@jp6fA#ZPkeypx;Y-|*2JdSSFCqo)j2>aAAP!LDCju zJMC$<1eRemBGnhXXnc)_&JhrNH9QX9*%nP^lV@MzXt|pg*>>AqoekYR#q)JOZ$J=i zMujR87E#H%?Ta`9x!@vcvOgFpf1$g}1IF;~E^p4}6dU@d7kexth0*>k*X9d)ScFRB z35+2SCTKbtM3wMR9z+?{fH}AIIt8Z46KJIp+sBHqw5peS@$3QUtC`T4xq~r|E|)WW zsDY@C%d*~2e|7?d$1f*Y+v+4*y#l^-`y+mEthf3RxQkG=QlmxjKSx`#n|gF3+j3s& zr3Tk;3T$7&&*sq9i_k3#ARjzj@^7hDumAqJe=QRn|MIHl_+mvO`w?}MAI8?u#j-~? zBvZK@kjql9@z`3*Zg4-I8x)l=kdD2jwd`CYRNiP2u#2q}H8%b^`P;74ZmiHjqc9x? z|AvB|9@DvbK-g?<)RgXbxA2ZdSul9ExJo1K3BEG&prK6|+Lre_xm-sfj z*3M}%^25~rw4CG9P!6_nDR&fO3FCq3Tmy}bhnkf*LJd%2ziKrJI6gg?f7;d6MYd@f zwb@7lWPY`j!kbr);>KSl5FfAgj&}MVkBwScsP9YbZ|yOzyDV za2p}w$#L0X)`<=SU>cg+^hVTeWb?Ri=8wkmigFQcP&H@_Su1{V*H`I>VAamYMOhji7}NENcz14l(Bkiok7Yvs_bhiHB~QIYegc3QZxdCy_i`x z^%aoGBx-6L=#1csf_@_cUh;IZ?b~BIl-b?ycx|n-k@6EV%RDE#l&*0#o6o?Xt1c{xVBCTSbpM2SSMQ>k5*5i~zVv}bZBAm;_9San^xL<)J?y4%> z&bN90d3d%)8A5n89-MLj?Wu0+EC(}X#UZYye9DlRN5!Fd@Z;*${xdpynKxW(n1OM5 ziJ|GZYvNFsLadubodu!g9xu5A8)7oDopAoo_I{5hd&~)2U z4O6(slilDa+PKo0)e$YO+6UBEL{~8=tNj^OxAuzQj+V$w{AT?u-WrVR>~V~sJjTHA zj=7g%CD|j?S)9rs7w||yBpTUR9piJC#?aWPX}q%ah%g+p+$^>U?jD2eb9n_zCe^2b zh*ykktQ&EdC!?qFZz)r56E*+%lAi3H5I)$3T|0p7Q$@1XeVCKBS83B0;zG^(A2$f} z`kbGe!|C+373ymFI<-HY==}+;^ZRPoWBY#EF9er4*|+w6@9w3J-IyBkgzNBT@&nIc zY4?e-m&)S^WiNUZ33k((S=a^_+u>RB&^|xnA0HflGx3|;f4YnOoe38tv&%~BATkIXEJ&8!Vy_Qi!8LR5HxI#luavA1c;&!>&r9p z4mV8fsJ%g9U^Gh@O*&!)@63+pc?m{0bAs6jyuh5&2tA(;ys$#U8NDB*OArxgWcukp zZB;#N-v|WEm(M?$7x}LZ05lIga*F)?ICppFGZny@T%}LIR8wp6MeqkCy@f(hqi(${ z?xEWx03s^_QPDKw1QkdkElC#0^!s8hZ+(ZAkIo}54Aiet}X?|Y?G3PE4Sf2>cgpZ+# zxx_#r8brL*zn{?vyl{?vKPX&gK45~m$Ma4(UX61>(~CACCC_Hcb5k(VQ5%=NX2p8r zSHK7{Ri#y%E)rr}!%Lfu>D{14n4s?=>)gfm^!?1xzdc$Aib8o1)RmN0qL0=C*GEj3souUut?xgzT)%#t+03Ze_;qSP8~WP?ox%-7Z7;Ld z3L^;qOPl(1Vj?fQUY&a#%FL=oHNdoN!7e|JP~H-yVi~04{2OX#e$(-%=T{NT=nFgc z{u~dFmUHYkyZ795etOTS)Gj=xBzEqa$wE!G+1d>o*u?&|M4s+h6{{Eh;QH?WL3+40 zB&z1^Q#D-ughTeHwcy~u$gp9r%dh9AV(Ltp0iOd-uZNlvV@|B#V0;uQ*?ZqQltXlF z^_bbMinlmaHllllFZw-Kgv*P8NHz58AC1E>wtuWoS zHhSU#qs1Nnb8tW`^Kgv^j<6rhQBVqP(2BCCFK;yENq72uMVTM+(S*xcOw#vZ7pJzrCVL6O zyvK9im;R+b7?Zc%>Dh(9*|fUx;yr(kFROfY!%1 zCB!WPpeko$=``1!tUo;8jIgtc)s}H);xPLipjyq*P4lf>jKrk$4Lfs7(GxVj_I-<6 zO4c9Z5zTt_^@nM-rIFZkI9#0ySe7Ci?tUD~c{{y^TGTKs){xnJ{O3WX#gBynOQp{g z3^>u1HRL3ywxuoaMtr9=U7BxeK(elk{022Ek!)gh_5M+VxBZabZV9(grCCA_2z3c5 zB&ADqOV%fE>rS#n(OeVV^2{Z>7m0Rw68Ct-VpaF>GjV@p?(pj~b`x^`+i(dRNf7)o z=WG6n*drT8o(bp%0Jb1Rv0;uiim%@dW6Xng_y?;A;oO*Ti@B+pS>ts}9OH2a|ATbI zw(GQ71(Ed`f{32a!_ z2`{MSHZ0u`(af+NP>^`6VrQWnuk7oDZrH@JWs*E&1a&gNrl%*S}r3eFJIBe#*c7-g0()x%C^wve8vjbM%- zXKY!0T!dpnc)tK)tQf<~C0yUHn?B+hC)rNS^!@kuQVH2W#M|kL`^-A3u*%t(G=UT# zgw&9?5B?qcwS=&w$B}&470?m}SjwrweQ84Bf=~L9mQp1UkF@@==%OQ{wLueXP{-2_ zO`HSrvXr%_m1G?)g=U?ZUz*{oB11xZ#ET{%G_%hB&S)Z_Ko7dRn4f{sTd09&C09sR zCiUeEhPn;KYzA2RtaD}{D4S>4Oyas35t+1pc^hx~AS@`XqVfPUHdepYC|c?jK2c+Q zQ?4mKR^M^L+s>dS*XYlF(Y3C#O$0ky3SNvp(^d`mdEVffzBafe_TWZLef~UkNz^*_ z`EP+smJ-OfRafAd{o)IgW;i+I2Xwvj?rlGRS~ae00=|cpBkazW$SdN}Exfn6K^G$% zJ0}VC$AzUsZ&$1umtPtt`-8`q`e!KCV4(hfJGTVy07J$GSKDF8yC>+CqHSMdOv6+) zsW53z`jaJCKpeZ1dq!bXG0-=B6SJn%=`owsWBPjs-_@>jmoN`J+g0Y@sB9hO{3Ltd zm3u-Zw3cK0MzhPFyF_HTFFb9taO{`&QQvFJMD>2Y8NZv`tmws81C&F!QoH$fJ^Z3O zB>i@%Pm4RvJTWn*;k{N;ugm}BFqIhhr4ra$yPL}moZ@a8#ywgiKFPATV&dVdibTs< ziWb&F3O{j`)LV*8l3KNG=A_eb@ww}V_Vtnl-BH0;I!?#ya_w%`oXHyyVAEYIeu6=^ zB_X~tDpYrUwXvK1G+zq-h_IL-YfS!o>_40GnZy9{G>+7O1HV)Am90g&u3?&1Kv=U^ zPk-2A@{G(Le)5nxK`i?5n@9*U@X~`FsTip?QNqB!qL(r^`C`-o^@3kuTGl|c=qKZ% zDC8sAQ#BvT$}yWfc40U^JT4|fsP7+I3f*!9C@Hl1Wlgwe-gn*?Pr_U~L$7RGgoZtx z5H>9+J109iik5i+tKR@GP6M5L{7A#A59`-8>eN*Mt{#^OJ1a1%R-|NcNY=d~<>MhW z5I|BmtXyMh&y4TZY68?LJ^<(Z`1Il;f+6INcxGlMb`YY&9uZxXh!!<#l~+ks;p_}< z)*nx^3OlDzbMet6;7&o^@Qet`;wqIW9v6}nraskSJ(e;BmEa{C7dnZHxJI*+Ka{!R z=JyBT07TTyb!}FISUY?#ral-ZX!Ds$EyOe;+g@WWyb)P@kBsgNx+oWZdwb(Ro1bqr zLL9yKbZQWJvVpm9OXO20wC*FlwUF;g4_M0ilW8HeUrgbQ7#anxV|abjws*ofa9tSb zSlKN~IBv|3&{!?!t~6|c8li8gfsTMMiM(!WB4J5m5LZ_*rcdiPz0@|$4-w2xt$Cx0 z0R_EbNct#uc<8@UFME3$=lIrFsiBS$+r0nLh0GEil9@4JZ8OF9tn3um0}T($iqkQm zD%(yX#cEa0>YbGoxM2oA(tX;cuJ-+qGo0V}o672lmt{E|v*9P}*@UlV9Hn2w&cRUD zXZ&8Z@5(2trk2!Qnkqq9au(z}8p=jNvleTR-Wi#He{(GV1_%}(dZu)k{Q z^(&U6g~oRu1atOnti7Wlb2yn?(f;)8siGca=>6hTjiDbLzKa@=|0+{l5|8jF)+>$g zF+Ze=Q2>#p7T4;jd2BT$(c`Fjc}qvq&;CVY38XUYgXut0w3xUx*t;yhz ztIdjNf2DRc*$S542&QM!%Us}#4sWJdq;@2D^^D+G2cL6TN2TRdLiwJ9##W5qeBryk zSN4+9GX2!?9hKS#ahLy02VP@(5cY#R_Tm=MH9UNB2{o5Uwk)_~RQqvo*u{bk7eF^! zdMU5?%E|4m*F|VPjm7JpJUsNUKHa_L2_hGu5S$@Ae>Kka%|w^HfGoUru7_be8HSI! zyI|@uT@RSNL85v00)t|6t2FXDuB`{3R*$R_mW zLeD^jnml%i96UvHA?PTJvL-@$?$7WCyq4}GWNBK5SSF+JOC#1H`smXbs(J&^@dwz` z5P+P(REDhKQZ#W9sD+5xQ3M>P&OG@*1y@n9CqZd(BeRN-7L?r7W0}^ucNX6=L{E+x zTWjL4bKiaH6)xWU`~CcikQ$&#@LOw-0Xza(RXy;~Iw-)vp^4W)|O7 zhR3@5Xg-hs`@S2E?`KKC?ALC)lN0>{!pXF^U38Q2&gs!6Q;zZ)ZZd_T?X z{n=8Vu+)&S>ycd2Q|=xkaaW}nRLdK8-=^z&c);+9e{PO}~_tuVVRaJ7UFxX+Ck0Pf}Ox7;dv;>Fd!vO+O z4DUFKapXl^4dqOqDc3`yBi6}^w#G;F)KX)H7id#T`1-zW%OH^u!`U1f;f>Q%vHHW% zEl<-*NG3?ShWvYr+=*@A?a3cHVC7@=VG#DB;*eT%egH>EGKb*c+)PIHklI&o&{#QA zmQw(G!8Ng?mKeQB4S1?$xvejkG!p@xX^%|tAL>^vG#77@oB(B)<`aeqP1#GOmuglx zh&SN=H~>={wds-NP0aB!wt;SXk9g0UsMN8Qk4-(Gc!8h=#A612ry zF8N{FV|)M>R(K>1j0N|r;G!>1*4M3%QeLtx%HUu|uaksE+xn2F4L64R4sDH%M01^USNFF_d_H%-N^~%5s z^w0BvZ%3b8UGDy!YX#h0!~jxZGKY$ExQ;d~B^9Hi3X;JQw2*+2*)3L~O=-%b77Ox^ zf~?nbNHj!{nUeC}zBg)^HCw)^6^@JO=jj@h=U1f%nh zHq-|_aYm408fUU`A7EYB=qz z6uzgZ=UL@cqwgsJVAO=g|Usl-GklhpfMJkQ7{;cZUScW3>QA-C*2Oh!GH$u|X_RiO0V%&LM zyk%0IN7$}ra=7m--rf`R-d}R(<>$rB6XUns(wTm`1|o)|ZzaGAFySqy7bD6k(hhP# zpc=-Duy+CZn~@))oAburNkd24hu?d#K+-;IRrhhGCsGk7mYq%ZY8C*&`$@)7hk zQ1Y{eRqx=7HOHFks(2;~N?@&Fv*{BIx%#)8bY{d;nx!Ti2Aa2~{_APNXtV!m@fjvh?W)<#T{UMGK&R}`%yKf+9hl15_^fN5p_UQFh#Zl)LX0?Re< zjz9qq2nbKY1V|78%~_J7-|+SxtR^K9|i^9c`VLdd>2!B zk@oyOEfVyx#Qty;_kQ_?H7Gd0KVi`0o)R^=RsHg|P;BtZa;x zVvLz(K9o85yTe}Zj8lM-`iE}9t}AF1G2(1n8#3GS3&Y;DoX~!0psLEF6%chaC!b*f zV^~0x&5}MB@Rt2=pM4{f%Mz4H!OJu~4sJKso#uPDb}K|Y3Mu#)H;0|U3^q!$a|5Ff z3Xp+hT@nGGR7Wj9DbN{_)0!7dds0imhII-Y+`aRg0Z|beMpYwB;Pk=A1q;4#{L2H5 z_J1fqSoQg*5m`=io`{cCOn-4?-^C-W@_0u);VXWCILnm7ncCm?qQb zd&^~0fEDyF2>Z3M!?OuMu-$QlHSEk$Gh8Tx}L`eOz0M%fq7VZ{Fe_z z(+=KV9Rm?y(Vo<&*BmEjUPF>eV5ar=79nsm7utt^ly^rK4^hT0l9G~);y4nTJ}&}^ zZ0Nd(lBeaJpCl~=lv^^{(EehNW}o%7Hbvr1utA8yvGoj88~ryL@nA6iNlMIc`rlkO zr&IRmxV;Y2*lLQmlTShtM|O>qd+R_$Y!1@XGVT!u&hqOY57}`8 zZyN_ayBr&(lh7>fxO65smAzc!xo2q@`#j?%M)A_g3`AM@rbcEoW+^Rhal!kC`e<#| ze;%nGSuyZ8Bi~+}nHfS7TW#6v+@|34rbju8A5NW18{8Oc-;mYP)cJjY>-L==BzU3ijQ%S=z3;b?@s4bc8Fe|&<~1GtjT>MEy;YT!LIdM+%&NsoTrZoPjN2! zp;Z|;!6c3s9d6ZFIMgz@!Pb99yEcmP*I_HKg^eO0s>gdX4}#HL8wy?^C*O*W2IMSS zF-+E-tHcVl7#*Jpw*)M62>#HoS#=&+;x9v=yM{j_zdUlw#qjVd-Te6|aqA^* z&&Fx=#e!ODFi_Cq{>p=dTG3kWibZarnI?-t($EQogA25Z{RwLsC52j9J*ELgi36P> z`{)f=m7b5M|89K_0`TR0aa0wYTnB!rYP3ica-A=YMhKW z7BH8}m?uxD(3voppMr*>FV4s5mphStl9EX=)^zfdlpjKZb72H?6N7&{qF-_i+P@@Avk&G9B`=0GvzFLbwqE$wDF zfaF1HK_NpM!8{y|@ZldO7lUY=tj~yuzP&PbEL}$pPaecTQ~V}aA6Zm$hAr*8Xx{;I z9|$wTc||(=5)|NIX^j-dFsB*<;tp8e@$+xLehTvWiey1de0Vx4#rBn%)Qr;>byYFa zqftdWzLN~nLEpX(m#~AB5d6-6{HGahJr{r=f4rxg#IT$Ue zwVs67DRJT!G2ZO$l1+hooh4z{L2lo%}@kZmitH>>`Rtz{pC`ra+ zmXzx6{LN~=;-abcj;FRO%}G4veX8}G45a5rr5=YOi&7U2jV@8VT+6 zi8I!T*y`>MUqnrbzx!nZC3pN`_!egFk z`w>7q$=`d2Sl=ysaPZ1cBM}Ukng_jSwoWX#zdZ06*x12BD{c}qL+=lbMt=4S=Tcp& zF3no~5h|>7gO)(r5egR3ODl=TppQ_R@)ojD{fK6RKVk*i+m@Pvr7~%(4I`4(%?z+= zKDs1!utyrm{OKHki`ec{pJzbwN-9r^ux-9r&m5S!HMEdLgrk4%|$q!9Vs^^fg zq)!j^U^5F|X8?_aAKBU#ZBy-+CSF~&DwpriviV~#=yfRM*dKOOyPR_7Dt13HGQmm~ z6y4e$be2TddP9<+|539x#3K4E6O_%0Ij|i+*s2R?DG`6qq*ngvI~*;qPyXwfolwaM z4K4~%VoQu+%CW$BuqJ?iAuWtO^2$lc>$jImp^h{*%m(p^2xkw2e`Etl6a#qG9~uSM zS7OvSUv*II&Eq{h96v_QPom4*onZdC^#A6=3yl{z2fHYt;ro^r3=^7}Y%I9w+C-io zV9g6`0tyTfwa`eSrabMOH6o^i-|P5-#-Qt_q%u;8oeb+Mq>?b@t+BbDJ)Gc?S5RUG_1{Ppd1Lm^Ee>wlkbxZG*3e^85i3qX6tZDgYL zL*AJNym_cqUDV~z+%{wNxvx>JO>V(tS-y?KdkKzkk}@)V&7W>;@mxUtQ?gHNb#g;P zxXx644L(`&0ESq(8J4)IKhJVkOz9iK!mk^fs@;k&xWWFZva+A>bRrMK+I#j=C>FF^Ea@<&zB2*R(VDp6ta|He59rbfI==Y8h7yx5eM$~DrM4E{bDHVu_2SmQOM#pC-loNuhsWp&O!d(N&$q_y{D#Nl4AxY6o@>Y7byjcH`CXmW z;I-u?2MYO)DT{?{!9Do&gEC^0aU1OD34edwddr{pxitc7m$4Gw#&}-zy!&KpuY~fH z#sKuFsvYr&_Tz8KsBjLuKFKTuBY;)QvkU}*S~DJGrlaQxwyg`i+m2-jSJpA8 z0DL1(R}zH`ud@Qf$S{uS|ICVzS7!_2OA$s>O3FxW-gpdrA#yZM1jceP$33?(x3^O1 zB%GpO`v3htI^KX6+zX6dKLtg5|6~aR7&+D}%@tf>599c3NOfm=FZfT9&sj$ai^^dx zY^s+~oBikqYdA5Yk4m{;*gi_#IikZ!#Xx!n%rv~`99dR-a`H#&d&{s$;>mRJ(RU0S z&Qi4o3%&-;dBBX35rus4Snv%$a(f@#kJS=8_BuFFZoWy@_M~4<4Xcv1x)^m+HP^KC zUZ}>Gs@nV0w7ov1D3xy{gcfSeboSNP%shy1(e|N91Z@$dz_5|k89<;Ab75z&Dx#Uw zaZ5%+i`T_q!*dvhO8r*iG65CkLVyvTtYf)?FEr&EUMeZ%>^}*$N+_(P&Ki-M5Uv)p z&U1MEvmHqkajmPTn5cO&Z1i;n&7HU1hEL5fLiPcxf7yDLCOrCzVo<=E`nARua@8#w zK+@jc;tZ+O=8e2G%&6bK8`EJSHJR`nTWVpzP9VK+O&xN8s0{|`Y?fm}x#W&3YiT%2 z3#)Ju+FNQa;#}Xi3CH>)S#!7gtfY2c3$QaXrmbaEd)s{CWDS3{L8Ub$yDOs{dRun? z_{e|XD1wt8DCIK#b3*c{=zHB)^3xSP*M{FzjfdYHQ2!>Pw+S?5CiP=tKaDg#mm0(( zKFPUxpz!?TZT5|O=Eh)ZMm^W^$2U&J^0Kh;22IqqSR+%^Iq|1J-!&g5;lKvb2nyvInc+r(t6XPI1GV1gv1+C<8woQ_m0X6gH)ObuaI&g=CxPIlQTm>!w5I41) zcU`ZRleu`Aq2wx377>teFSZk4tE_=rE1r*T!`{^;xd9ZAgP5LT=_Igx2U?4FCwVBk zjKvC3(U6Q<#NC-Gg7L5en{*qeFHQ36(+om&X)Ir}VmI(=irN6qi=h!nUnJ{CGj>%1 z3al*UO?k)^`^+;bi;$L_Pn*qax;ssJsb&z3oi8$nxgSj9XE)O8y}^ zMMEm2HYP@lFe^a`D%c>ltdGG-@JZlVpp`=d9`h(oY0!@2dp5c-Z|g+!>tDUA*W~uU z5}!X~08{=6e9~gEh=vy$Cm8n9t^V@NZI@ywmp7+ObIOB@f+>m&ZD2A;kS2b4N|EhLGcQ+VEOO_Scm#LE z7puHIpM5Wp9ws~^MI)??+By2{bP$j{%^=e=3Ltn&7P87x5|X$weuo%kCkQv?l^<14 zE*ab8sS*^XzxeH)1Z_~aj4a>7e77fDUAzQ)LAtwK@)u`EcpD?{4K=iQSEd|+JEB7? z5S>}HJ+}wXHgIfzGA1~3!@wq*1)&U=eMq<^3qh&Aj<8+W7ms!lvK#If1CF527dA30 z-bj2VrW&2&xju_G=$za4(xI_ZK zEwF8#Z-8_-lPqrgiDnm$10hQN`!HS@9UOeZ#42B&l}-`6m(2Q+InX44fuw;|^%=I> zR}f1b-o(iGvo_iUZFX7n#4sFL6%XQmu|lq)?9=rd-d&d+;?9fjk4o2%y|1f!zoM!G zoh<%3!=IU-*}a@3v83QnBe3z@R7{EG-+OGp82ftx=$$#ckda;fhC%3`QYX^8e?ZsP zKBtF`L$i-d_#`sRHZF%>n}ObQ5Jg@8k`CYw<=e#!RP3|lS$VnnwS?ZlUff;t(L#yG z++VLXE->cjx7k{w9ZHYcfx9i9>e|moVIlFa+B^h$-aS37VL+O2^fg~Zc{>Z(j6I18 zKJeM{>T@owT)n_J!JnQZ6W0>n^@Q6t@h>?K99&~K;75?Ob*>N-*VYztN2)E6sjI9C#!FhfYw#O5~|dehG~;7_OnITg9XjOm02CT!niOsN5y$e zuHZ=80v+4TE$9?)6=~gpCq5=4GSLLZM{M9PIKC+ifk`>K9Ly3D1xulIkDhDq#iGhb zXFeEx4#0~iKt5NbFA8V$Rn$kQR9aT| zzoM%?6eN67mV|Chx*$UcEL*(c7Cuibf87eR+teQib#(^yl^yoMxKRm#w8#;8?$COo zeYzW+tn6vtQmm>tl{}+*^5W5r6Hp~c`t3Cur`WSx>~od>QFPYPbpK%-zq+~lGI@1( zZMwU=JEn7Ly1RQ~)6?BtZE_eh(+tCO*YEo~$A6rI^8=G=khdyP+{c&OA6Zn}Y4Uvo zbw^_+0-(T8^BLH#g;E~#|M-pI8fOvMZ63^?1B_4Tmadr?#`bzQ%5cPcaQ(vLeb**4 z`i+02P0r`x<`G~XCo=Td+Pz3MwL?VJ_@4eCgXj{^xqS~5=k+YJLXT=fjabqqDGri1 zk%tA|gy=1^uc}@SW5mRglL>y_L=78P_7h`6L?PgcTqEOBp38$D7Y7Ra$hM# zHq^zU-T@06fV(KT!#T}U?l8!!0z8xj82bBQ2ttvaJT(=;1k%2rtj-U&nF>|}cMJbL zPfc^?8|zc0+3T$EU16i)O<1Qq(a%2R3r+UlQLN;PhE~9IlC4A$So9#9=aqZR)VxWA z(A1QTC1R@2(6!5OpTLEbQx7|nG2Dsk_U+=yM9iTUSHG7R8N@*-xSS&-ymR2rDTmwl z1X$ANM{51sYeOQUfln!@(ag2>(1NWqpHW^9)ERXLaUFP-+655_yQ(z!9%u7f7(lX= zA#TSKMELj5Cq+_nnQsprf+Lp5$wO@{sp!UFfq$6ajQS2iaXwDI3SHBIG4ld5K_&fd z_@XsMsiTKDChK4T_s=E=XCgn+o2DQk_OHuyr3^S6!dM0EGsPjnyeOMuBn__%o!X0_ zo~+27IC}Bc^fH|RQtA$qR-4@8%a*Au#BK~!np>~>z_n%XM@=7G2!a~sXhT}@9vY_r z$kk-lH~w&(-R$m{S^x0usCuD$%;e=m-t9?N{<@L+a~{f>&+9e4a)HR-k zLL$l?nqA(tn4mDx7BuI`Vi2)SDKFLSaHjPK{QX=-Le=r?0zAQVHGpUdiikc7XQi%7 zS7|gjre9v)wyOT#LI*ZO6o!8l5d0eQ7>$BD15oADx=k~;hclII+K#5#}MYC>8pO3nRy~HH+@L*b(nmT;8a!yYG zE-di~+=CJUvcn9+#XOnP&a0AnH=P#9(X$<_zhe>3vahnV#8L(~oZ&cEZW~HCPo65z zWNlx#Kkr0_9S!|HIlbnDS@VTSG%AFvo&Yk$n~22RzEpe~8&jQuj4;N#vY3+6qk@i> z>6G;`4ZF=GUzZ4=7SG<@XBPowK9mt5pASY6n;Jg|Tks%hL}pBhUG9~CS$nn3H&MT* zKWU;4SDI%cTMY=#UE)cauli&JYv`m%!hV5-bPrH2@?sJ~8EBa45&aB1&_pBA6&y4K zP6lr+dn!LjCV16ze%4LD$N7N{BMBsM`%X9-VC~?Pz!Wm+??#BB7Ugazf;i<$#(3P{ zQTdv5BBiWR{Ccop%lIu$?_ZzePKo0`%KlbtzmufypzSo2!g0z@xU-n4vcq&5rgw+a z?0JpGsVjt!qKB^@AVj4|`$$Y{ThT)qEq~LOQ^JYR9#r3l$C2m;@U4E+Z=^4o1oo6V zPiY3<#IX0&<3h?jFp>K)J? zwzMvtEy42ef7yn+bi-V_L&40wKC#txF{+v6hE{C9x+F98|7kMafj1=?b%&{8U0m}? zYtbR@q~E=V9q+D}i_VYg#fEa=ymd;d5qt7+!=tl6b`&!+>hO@-&}}@!_W)cKi{@XO z5hMHf>bib$oI|?`tADOG+TvWNc8o*xEF`)WdFg>*w{$>eJ3{)w)UFCGCMG5Bi$k^7 zC@qra#r}p9|3o}2Yk+pfFZVBxz^1QoiOU=GIP{EBK~<3qa1Pdlqyzcfj@R4N67_{J zo}?}13#m_?XAALZL}KDT(aXOQ&RsbSWS$-_+05tqK+aPfXh7@ZAf~+p%#iU>Iy+B7T+% zAC!TZjO!B^+KTY0Y$BN^T4awt1Ou*6S6ETeo({x5j>X08TX^?Qbl!mOrw0*d)Fz=Z z=O!zC7!}KJsw0y|6tgJOY7ukMT8S0AsOlpNwzO*UcwD3N#>9JJ)e>hLLF4=1O~Y#F zUqk==m?Kd-XFDu+x_+mtTbIBkT{yFz5`EaQIN>|-FuN|$aysiVGAW$nON~O+X)cW@ zNh*DS5X@9-9GLa36*)d-r89v`(}B|$Bj&4dVzT-EVG>K43poxBDy9KC zo4k!#>}x=DM?r+jnjmZ*Vqv;}GD@iz=)Oq#(_)40?qI)gdLCNJ5O&V-N3uW5c{sD~ zlDW|#Gmv#9l!hZfVz{R;p}yBx$S){2UDN>GbRb+z~hB5Y(yHtqKjU@HFb%Wit)R@e{8551${UdD<|dWKg!~k zQNaYaOH3Uda95P>N>w7wFo0#ph36A7Mx8I+hXOEPhcHiMmCKNogu9~Gqu|Z`qL-xd zS`A0EQDJ@FgFN(1%d?r{?czZT);|`*14w)plApix8JfVQ;-<~}W*|W)S5Szk8=B(I zfXp<-P{C&)SU_H_D8bAfd9g0VybaQ~qZT|F=`>G42cvWH+@Cm7E48@&LA4gz1=`oF zcYcLHZLuC?*Rgs6Tr30mtt~Nkq=B7}!{#xj9fPD=fkZ7|7&&flcs$XJ5oQHXST63G zv`_bM8s;=wNjO7LCPB>7=Gg1ysbD{u`q3-S&4#lEM(6?jvC|fLEvu~5&4Q-;9dHX# zmi&vX^8S5Z7cw!~(%Y#^Oh>Y)2@75t+wjE#+EGEP%`_=_S?18LD7*nLbk3+J5QMlg z?OiEYI*d?LQ#48wBv@*$ULg988c}*5*97DwzmA~r>l-2>h(gF00GUZ3iVvew2>KRV zPWC`oH*<{b7YswRrAi<-#!Cf9!FFGF1hXvYh}E*vu@Qu*>C69W5-umVqPrPgF0pGp zXCa4Fln4Z@vli6a{EP!@$2ST0`tH=2>gh+Aa2fN9z?D$JFt*;=raxZ|X*GejlwlvW} z&>?nwrK^n!M2rD3@o8R*i`|0sn46^|!^URv$7VWFsFaO8^LotpC?l3uC&6H4ubqg5Hr*`$n76YTE zz5}nJ6b7<@ny+8baK(n`)}9yZLYXxg{|X!iwYmb-+;4xvQ^Z%ETH^=S0L0dc^G#S< znPMtz)4X6jbVg24X?Mt{d8AwV;Y}2-8+9tK;~l`+<`E8QgJOs9c>0M+Ar|Dvqp8l& zj*s#!8DTz?=%iu3JREV{ZM;4P12}CoP2mvNcM1FWVL(dZA8eDWFxfm5J}V=|ZPffY z;JED_5bLwAirG3bR_x+IU81w=5U<8ypekeE61Zng(JZfeihoLG!I>!d z)`x&CYQCV!I-pL>SqkFx3*aO%+>oa(6Z}ZQz0te7nX{iGoAEPfZvvN>I6V`AtfAPa%^FyR z8ReWdVON{ff>*~Xim#f4`m;4>E{QphaLj3GX>|NRP&1ub^a-|#l0w3Q;P$c^C0CJu zj>X`;a0TMD4ILxmgk*kOS*Sc68q3!bZ_=?e52~;wNP-<-vi!7k2w&7cI<-pWmq1y? zc!W!|P^`rP&l!zaQgb+{?|@u{efmC!pSv^>9$tf?M!ADGT;2-OgqwE^NBrMwL;lwd zFvopls>xX~s)Y&eA^eg|DHYs(!Q__Aao*|fM+eY_+cyY8prK9EZWF{W^_nXRBf4KH zjl$^se!DEMxP!i&&|eu&B9(B)v=e~Pjc#Dx@>!IvF z{kPZ4JKucLHOw=_6}Kcxhlcjg$Z?K-e`Cmpm+P67*5LlN1y<6`_1=X*$fk~QF`wBr z&^$Vi-nvn5_I}yenJ`B(2N$H@h&T)%b+La9Bh%LUL1=4r2E_3DU!PC!_Oi|9ZvS5( z0NH>|DaNcmfWDJ|!k;?n^u2kqS{966v4bn6b`Nqkky29pzMvV(ljJ}Kn7eGPipz$_ za83aJ%J?He=^A^%7J zfpSSC`}8n4ILJRNmnrH4K+V25s!x$DIUIitF2r;==X1xYX$9^Od%awv=7q83qKWu5 z?Z9<5UquFydq2Gjr{Y%hS?H6$8*I)Q)n%44v#k!caM}K^zyp`DmkSx22WMi)EagZ2 zQY2!IN_1013N#f>hRasgjpFw9);@iL;Q4ogJ8hZFD!+X`5s<|xWMHgSpNNzHG$W}) zdMT(WuNsz;*c?Ms{FNwwjffo)a{<-B0k!PRv08(UV;&Up?_0igus6I=MjJ_eE16u5n#9b-FiFq*1h$KTurx6 zBcs(Fgs|gaK0S>(6y_VkfgaMpkJxon6g#Qd%*e1KbLr-&Z-TRV;iG{e&gCNCd2*b* zZ?ijd)tUeeYLo9%osBQk(~k+C45EXYrZMXhr+@t7WX-1aIA0x7aXm4=!c~J0Cw3ay zKrap)M7Hzj;bz!LZjOpNTR8uGo$*_%9G-M5`6`f;AeF`Yby9w7cvU_T4nZv!g^bLS zj!8w0W!HO5kzyQzNQ{(=;SQALVQMKgli2Qu`!&r9qL8h`Q16MKQO$T6Ia=rTeCBYn zlvmaBn+5ciOsHKmfgv>|v$Rd+4(7EZfD7woN9+Xws65ilJdCMV-hthxl`q1YBFK2IM1Si*ec#t`iP z-l>!pYUSfRmFHc{BxhbYhDTgr72o`qaTMsZO)m52V~GYmg=Fu*6;V(E|9R`dcOigb zm9gyG+{RP$8)$(o$x3%)9xO_zkv_C1SM~t z6^~2fP_TirQ}$5VUw+ROIR*`Q^Q5B0x4JLd@gSOhN_VAuEx`Vs>TS~3=GM2MjtEgpDaX%GQ=wsJ2>*H7(s2Bv`p#SI+Qtbr7XC7n6d4d zs@S8apYC>&?+z<~&cUZ*KDy&Q?XK3wANPS#T;;s*m%>(L3_myB530_r-x)Id-u&22 z?Zx?3&K4>?#A%+6nW*?(p50gbY8*|~BdUC<>`rw-nwk?0y`R2@xznR+AbtgD^!A^--3;Xy-0m@esO$wBVED!*UP63;ouWPhAuQ$F~S z0`(T4RR=(43F5n{bGO#k$Qzr}|B0z#0@nv*>eH4AhcGlaY~g2@T=YtqV3K`ax!|^t z+*1T|YKtS|~@8#YH!i%7^rpx(OhkSk#-jxhS`O{|4 zB>4RIShXx(YlBJ?Dhf9`<4t3~eXpgGhwc*UoPoGE(^m-=fH|2`m`**T)TNh6tEvik zm1#*z<_UlKgwvCl8thvX(0n%21j$Pk*8JhnRM~kC ze!R>JO+e)cwRdRfvM|Cnh88Y2yg=(sX%Ls~*p1vf8s0MKv3Rq(G&M#%*G&7@X@v60 zS!iH1v26vVyw9yH zAsG5}>y^zLys5#@=;qW6coOtYHb`f!SfI%$QW>10;@9{?QTFO^469HA~ELXJj zB!mj`f_8fNB4(kqjSX6{U?9RlcWFBJFSnlR8omNew%dUy{%v@{rSW!ArS%K`rtb`z z+0_hyiZXvB%@_u}Wk7L?o zH;*DMOTgx2rW4~UfY6B9-?s~^?8X9_wfrM-7(a?LCa7)AphaP(@Y7s%;-53z@e-C` zX;Pb6@N*&i6&2$Fi}sivbvGXLY>JacMO2IRTj13!my)Dz`dD|%8~cuU+<2nP(znUj zY#ZHe2H>V`7JSY<>{VV6fs`(RjVq!Cv*p(lMt27bHk#eZU_y9YswGEV+lunz)2K`~ zxm}k5PPI~B-biN8^G&PQr$Hl;6AwS8rNpISl&PPI7JFcKRZ}y|&?^EyviF;ozi8gr zY4tSqxv?4Nm+w{Dp%+4FEfg8o4}FKZWaY~mR{za;zsboc=$KJfR}^1<({!ATr>G|# z^@A`FvBO&dUjD$yKnLlAMzd0=(Fuc)9csc-*!a84Cawe-m$A4*HT|sPU^kiuRgr6o z_!HhqmYM5@rh;zA^y>KDAbodGT%60Nxpr{*;b%lm$+EE76uK3%kbc$|ixaYOj{NXp z6jUzSA3D&f3aTQfUJlV6XU{dTd|`OVKx}Di_9c{MYAIq>!)2qQ>(l<>LKk^EQx<{d zs7xCf5ijfO#DPsk4j?`!+3Rqn3B#2&G0vAGKoE=0gamOmFN#K?R_1oE&?tD+% zQ*l^ilSYR@%YYSnC!J>TK`vD6e`&65v%<83v~>o#_*`cxLW^^wL)HZIQ1t?DCfdi; zs&hTvZ%e;4sg_YjffL`KT}w%@S$|Hu+WY(fQmKHvzCUc4T<`qGR=9D zKfGX;@mkV8{(KGsiXRVs3_M?2^7q3SWII{kJpq~M)f05>!XnRc-Ntl@vt1@N(Q86W z#F2MOXpXGL(ojBTd4Rl*a0RmhHL&cu3xML#>dds_9JsLYv1ipF4{+W9 zE1i%JW;jHOz_Y-21^R3rQy_sFS?)YRYUtob4=&&c!b|YfFH&CWVfa!JlSz2;gDHE4 zAa!9c0u+IWPZ73&=$UJl91mF)YlDmV%Jbeiu{%wmd0FG{GSJmTpvuv|kF6PBIQDLC zsL@P+#k`DU^)pCrl7sCHCx1P&LzeyWA~Olu_*P_R7Rt;D=1%>}zEud>5fI=#+IR-2=IQx{UirtLd3wF4P1Esr z*uF--IbP;7vO3r8;Ae*3(`llR;p>TKofSgr;{{o6xrU5ZmJ4nSEi_oH3BuyKSicfy z^^Za2#^w1JANe~!?!A~T*IS~ z7Cm-e{jAwVPmRNkwHd4K?VXkG*F`r0 zf^4=K01Wqy0K?yY;A@!&s(w~EjCdV&7zO>@J) z-w=&dEdqQN+P~!r=`Wz#ue)gwYL?t$8?zLMAzaRnhoNoXgi1$AaFm5|>KqXl>QpmZ zq^6_Ew#TLS#4H9kNQM-#oBJ{#V$rb{0ky!@fYV~@_=Bq z^tYV^i##mBFWRu*>NqL9o6OHQT%U-=6w$u~6no5EBLG8zQ0aQPl>hBl^!ll9TEGxy&L zPVm?|WI4?0l?=8N*;o*DV`hn8o>o3{JVa`Fr&4;xe<9RmA=2f)y1JG@S14D)2u%s? zop8{nDL?8@r;hUCytI74w*nEn6N0p}h#Xum{M&o_>|OZ~1uE9TW>}SeYIM3)CPzj6 zLFr8doTE0s?9luTnl&B9rY9e$hEsa5H`s3+bs5c4*)NutXdAAl2RZbqS;F5$=`HMD z=V$4W9no+8dVO6wnbm6`P&@BVF#8>wz2@Z4ak;Cqe0`mCl!g<+A_IHBPYC^(kqz_zD8a60Tvtl*uxXulW?1q%#vS zTEmE|`32yUevM40<~xT%LG+BP5__^$@u&{brlc=kZCHnXVO-zx&P3@xHZ?uY9u+(Z zb3XuHEc9iIJlPg+3_8fMpazko)a@bf4J4W;uYBaiCE0m7ROZ`ogNy28FqoTAL07@2 zmoya@Ev3wUH>bcz3iGOSY9u2y6^G7>eoV7ad8tWS@Hu!C{~L>72SLnlgjDK=Wl^r9 zhNkU}uw|IX9>KPg&HJvPgbwJxM(LmFF=s3`I)UEoX2?~IO=HQ0nWT6eGde-|A*k-3 z{tl)OeeE|^sK0romPRbHKF5@vQDa#sV={RUxBr!=dv`UE{4c8(JiP&={!8czA0j2k zjYvEFnNgMBIePb9VAJ~Yb9&hu$2%r^@}r~J0yw?cFpR%$SPjPMvfEgdVq=%1dS~CV zB`WJBFoGE7Mu?i@p5mKa?wYGtETJD&XpM&yk7lmBgl38Ij0g_S+u*JpPgZUxILX)WP?IYO&MdI`SClqMnERO z6ST_k>dXA#MgfEi7kEpm?eUEFXCJNE({EvhM`1)YCVwt~aX_eu#O-B*gQ(OY@+swd zX!us}lh`Xx(9^k`u!zW)c~ank2l6=K&By@u?UMHkWffRNSh%>F89-VxmI0+`7Cg1J2z&AVZpSYBO4N#xVI&=0{r(pPJ_ZN3Bi$)`Q(mbYb^>?a1XN5Ae4B zKMK5Uk8dvw(ld4-JKh%!E*16l^MkX(1ZIwO@IpN2o>q*AV}f{ZQ*4TcS926grhns< zjaT$nzjtbTjIalNdmAC2;KWXwQONaXTPG$W!}pZy3ZaJ2yx@y7etn3>UyB%OzbCn= zrL-dPvr0=H-#30?lhT?@HV%T1LE>de9UIQLpCUiu9~E)=QgS9qNrG*EuWeNP34^^w zaV(!7m*$ku2#T|sR%*FIyb$`oNnGj{TX#O_k% zEj7o#F&jR`fbU9+ko&EF+jqj?rV`X=deWyV)N35hedD9TI^geoXot0x8#Uym)+{J#lVkI%tRCD1goHfCl zzMxv6WuV7uKM>LV7|?QpEIBu-}N9_5tMrUn~fYP(tug6 z4}%;(zTZ9&9^YtRaZ+FA10KRrcUG<*TEYaI(<1Mi+*b|STtkMFk4UvF+Byg(e0y)@ ztKvxI94?NCMao`Dj?{HZ0#8%^HJ7^#AoYt^bHkY25Fim*&Do`StW@Syd-n{*BKkM=xUPS$(p3mz^yI8i9P) zTe7CGJv0*6!Y@ykhPOw{85knnE)+qpVi$OLrcshvk|_G7IOd-M$2jCM+v)f8q$9)v zFM8<>Sr6r@Yp~o?pv*hy{1#tr6F#P%2X`K+!QRH0(ZbhlJR{-Wx0P?@yBgp4^IaDG zC^qRYcq08sg^0GPOBlcm==xw3!&01;~1cbOQ>Xc+gYIY$_J2;XyLD&R$cC&&qcz9OqH7t7w19;NTgI~>FiC-?V`v*wFi-P@S z#WaZmQQ=O-f(C#FI53?BTMhR=ulE0sIgMN*-3WdaX(=Cjx;n%MZN6+_OQK#4h4h_r zP@UDZo2kLVFvuPdW<(CRacTZIu*+yLMb_1UkkcytlDpT4@?8-2<=f~Zq)}faN3-*j z3l{fT8()zad|s?8<|B4xsRckQ5m9qlSfdUDysE%R+xrLbGYwtBt-p)g%tTLH^}sfC zq%LDo58k*1POX5JrdU)(QGxbLX%!||5=_EW(@ufpo=w6OA_dt=^9>Bk}$oiSWj%&%W0pPMIzb z{9;FjpL?Ombzbv+>TGdsUrSe&2#o?;+3(vlh;k8q6^QHt4Q}_Tpgx2Fle+IVCmD#% znsHLuf)Gv)rF^e#10AW2)8m&|Latp(e}ipURq@^iq2WdfY=-JBrRaGK?!7#8?W@-L z>q+y^yqdSM)PYHFawiIFb4t&7HeQ{v#%;DOusPxoZ!Nj(;v6u+@YWb)Lc;QD#~7#E z7gFOwa$dNX!V;)5(}lN?3X+#&3oHXT6tz%INjJ`k?=Eiv0Kle8KZ+IE*bdwn4K_1eiW^ogVv8h{;yhuqgrRbNQ-y9s^k+&fV$jbALEj)a%X0i&1DxQDGry z^lWV`SsW327A3*TY$~QSL*^n2qxrTl4@J%FboS##xE<$c*kw#t6-KiOY923%ylLm^ zzw^ubei#H{)VPTZ8wqJVl75mdu@y3k7O=nBqxQ}xx{Z#9+!4tAgCIT0USc6q^a0k= zQPnPuYyMlP?Dt*&nh?%3ec}iT%5Jbf-pPM_ zZOwEgGB$4hQ%@JTv3}Ty5p*YMWKP$Zten1$bvTm!sa$MKPu~;#jdUBC#BED$I39EV z_sVnXwOHSUM2y+8fOOxlogI(l;P2WEv-Kc|+4H}taW;eRN^i|O-97WDB;L>0=*+4%T`{d%?BZ@KCmr?inQ_7XF+g%o^$WH!gkW@?%Qf#*L5<(NJnSo!)!AXstoW4h2Fx#Q3@r^=d5#sfgDfc-l1W!aqz>p;RwjbqX8*Ca!GzH)s$g{qo9HN0Ny@b28aLCN}5oV#mXY zsNMACJlI>glfD_Fml5!gVcn%3*)nsQ4&{g+QIOyEEzBxM zma`#4!&NKvi(5v`>5W2B(1+mU?q^`w^AywF-JQWJXU#oh|9Qj3$Kl&G@jUN)c~dvx zzG7# z0PF=^hGF_~#cbAt5UUAdbxoqQ@{F|klTlnN;7Bg>x$ga{cORa)ga*mRjfmRgf*-Yy zH?Ff0fKsa{4a0!uvR@w8Y87vQW*RAVl)h+DW*wI!It6JIg)M)~`VfQPmQT0TviE?< z$F)I8c1viSDq9>%_?Ba^Iz~<9irV zMg|y-4pnl%Gs(RG4xkG0uWe$cF>%5Tc%q(G<=6~*d3^oy^VcrvxBDZHB5lN1!q)qNkdrhJA`kW6#vMOc=taKPNeN-baz8wBoa6B zln1OF@vI7BRB;hbSQX6$Xhr3t1=Yh=;^uudgg@UNa`>ss_0_}}BOx!9}hVOOEUhq8iXNT=|>9 z`}v%PuO^THr2U9_zWq;zsc2cZP*Zz}{v^i%UFnQT%&oHT2CO_Q)3WTQZlJ7Nda+B? zKL`quzBe}dO?^`8sQekDGMq@mB>WTb&CCP8LJmkuQ!4=ocy8%Q8=l-=)qA-K<$W|j5#4bVee2>-)zvwT1c0Z!D zn8c$-tq4wyhH-^<)dE{C;Db|5`*-Nsrt$jDL*z?^7;NUnA z(kBM>O@8(XKOhIdLr-D{Y7Cq+-&^?#KAm6rhBOl?rol88cq1c-n*QP}$e_X$fBzH2 z_iGMHo=f+Kp=)@ zTewxjAt6dFtzG@O1-4=?NRkj9T1&`Gg4^>Y<^&YM8NNjl61~Jd;(~#SE$*SHnSm!N z9hZCq2R(T$OVfU8l{ImYuRY|kBmaXcUj_5KxRFO?i9d$&5mARl#*7O=vSs9kapMp5 zk?n-O++;Om+%HD7BJ0W#KG#Dy2(|K=9-PgrnmCAvD7sm zP92-Z{-*Zy&K0C_s4$XwQ=|`>n@9e}``pijXw9Mv2#wD&)k|yG2NW+nMDA^^3Y3Yy z@#pBrFtvy&=B-@Om-}bN1wEK499z>NHSp5dkdLr$zSh%$M(3p?bdvbkkF(;(K+w-v zUmxSL10$8hj&(SueW4G?zh)VVZuJLEp~u6V`62ENkVmv7FxuRk>vQiU;tvoL2$Rk+!15@@Hk4=xky|)txZxf3i>zWFHM6 z5!u`EddIh|N}_#JT-J%Kb1tby76mQ6y92`_rPrK+%^U#V93YWG#ZJ(ITC_=BuZznk zsYoGNWMcX8#{!^`MwKhLd!yTr{5TX z#3Q=2e~I-?*JblFt7k?kVYB))|&@ zXiU(uy|dXe7vJJ<6Z+W=={<P}nM# z$S*6Wx8!={2&XWrfUti*HCF;_#b82ZLi#C4SHAU}qL-+cq)(a4^`%J85ni#?{LFUvC&p5E&B5jNBaAVwfas30b+y^tXLcB_tL4QyB#`2 z`e`j3?4Y9qnKq(#P4Ujtguh?%^gWa?4D+G_t!jR?K0v#&1Yl9Md;eYk>&z=2( zZ{nr2j0~o|VPJtH5*Yt_p6C3A15!1)e7}c}0rHifHl3-X*Mhi;B*6XoZbgP!o(gXo zR#6q-#z#Pj>+NY_9Tk4f}g)W1`i&3jdq?= zw+;pcN82vI#zM4$2e;fp_=voh%|En{^{o+l(wOK}@-o3oCNv~%n|v)Fv2B-IO}*SW z_ks$D)KZnnN197Y16iFBK)qtSKqt5~ltWS!^h~IxmJHOu5y0>y>p3JkwT&yhKTr8{ zM&Y=8k55klXZeQ3g0n>}3k4{5Gjrq8fpl_%OO~1q*0~s)$|SF&vv;i^6L4E0r-(VV zG^mLlF#uR3xpo`$mlrWnVHT`R*b%gNYrF}YVOC`Rh?H|ngwA52yCQFU}OniUGHcLbcf4*j*I;tPu{QthI+o|nHE zB;8fr#|$$+1*=Y2-E&Ea@2198?z)Xyu5AC6(%rm|L#K4lvExsGo1O^Yt3qn=b>NF{_yMu&8Sl1=_U1No??Z~Q0f!kKLsq5L zO`E^v`Pj@Ob60fJc`_K6%S|w9_n4U2ixv-e_P(KKiM6#;ougPdNTFUitri$5r3DA* z=$uiXtf#Lr9Tvdt(_cN~?(=Y+ZG5}~mC^Qi=1fQI%zdHs*X|k&>i-f#ZLokX&>SHY zK8MbIB28mo|GRvmRg8iYv!$rM`mNu0oS4*cmwc7@y4BA|hJyRwZ$(5u`VUvAC8HMl zbO7h%w-}=e9Q|u9jfZWhg{Uq#0J-hd=ZqrqE}Q&uX(Yktl8Kf9**D$zv9vgx9`~w= zkUfdflpk9&*H)q%~oy9_ON=zq_^Gs%l$7Te z9`Y&!KvqY@r(2{&6A|uhbepr5gu_T8sD2lPUX(c;p$Pgvx}Qo(5II#DGiUNZllxz>##+JcmSE%zes^|8AGK_02-* zK#88zmVKA5t6z}1ZUIiu$<_D(!=p{2ht$SZB=g56Ekzxs&fuO zU+WZjuyBZbktpVh#Z(!NqN$X6hkQ&szq8V}Y;SDbfr2>oKe3FhzOenM5=vE67*J^i zls={4oJ0w+B%sX4XK>aAI9`3^5-!2S9$GH&;_BT?=;B5Rv4D<*6I+B|C7qrFjc1l_ z&!u_Iyd9`_&szn!y1k`1zntwaK1F$2Fbf_qd%2KOSlcn)?mq1s!x0Ni&fY;A65Miq zeGqUGcnAF1*GE3%&*C-y23zkyPRU#92EcQ(TH7dYch*bV%iibTE2M`T3GNm3IC)H# zfywkri$e@*PHpDw{-p=U2x=Lkpxy{}_LNV#H2fmclG%n49f%?*RxV$U&T3gttFsUQDMFpn$WxZcgib|CWyb`FU9+>(bB4ib*re6S!okP!B)n!KS#_Idsv0L1Y$0UFHU8UJA64g=H!iOz1?MG86UR@4!`LhPbfF(NZ7 zTY3Ke(b!x|S6l3Fo)7a6FqXUkZ-12GrVbc)F zee!Y3&|N%nl&v%*`&vz2zzv(GaUE7)QqwxkRl$_D)r2r}`q>jP*mGtxFyezKpQ3gI zkO#~d!&;Zp6W4N`9QGC@8xWLRTTGEGt};3(bpWFOF0V7jIJU){5xP4mzvx9oja5&U2W;97#7PxK&;=jS^pfv?ZE zV9lY&kP{z3D|rjVN~4G1!oFG>6*zk~yY$dLxT}T=&sgdU8z~{=i25D1)9Dxb4EeHPxjoa7-N&1pJ|Mtth zMtG@og|fI`2j+cA(tc}#zAyq>4|bdb2%HK%G6{<%x%fhzWPD9DTQkbP&e-8*KoAza zJT4>OfB)rQ72L=cavsAm}y%)-H{YZcx(Txa4r&!&r-Mvw>7p?9Tle(5Zo!!+XV?jCn{djtSOnpEqGNORc(;dD9`y?nMXuIidR0+Ng^ zc!3<4l@I=To^d=L)2bqtW+x;Xc3syO0Xx|}Q3z2QknEGNGz1(<$+UkaGXc5aiE*af+#V$P*}?BvJ}UCJ9FOWNt*h0vgsv zG!1z@1yb&yIzDpEDX^m%KV8iLcko6mCcL=fe(m+u{8 zObP;;VP=POKjPevu+}U?K&JVG)PT99wBlLe#jduqf9&!#hLmX+aHW}NZ=Umo)z4Wm zx&uTaZu4UOTMU1GPgVh2Rsb>LBINGv*Aj5kyCx_5v1I@XF%reMF_AuP~Gkz{1XVwv1>hy%L{bGRO?#G8z(Zh8o>& z&e*F)p|~oh03urI3$|txJ)k=> z_elq3-mOp5RNUG!JH1ZD)s1DU=`0(KaB4aonk6?`B zyB~hQhmYTZ3kFOP-~aFfcDpTp{Q2)-jN{?q9&NKtHo4*=`gWbpSyvT!ikB6sqReK# zxDRsfe2zlSnxHFc7L}CPZZ~*-enNjfV;VC#K_BSw)8bl>u z1I7eGAWp*L(<7#7q}5HO0K^iIMC%fAN{kVhCWm2gAnO8#y4FBiLuBp;X|_MkR@ZqQNNb@H^JFj^M-4W}5s@<#)3*@F*^x0%pI^Zd z7kzQ6A?vAp^`VaJ_eB9@B~n<<(d?kdZZ#TLJhKw>n|KZ^8UJLc{nGR0o2Jj~lDzti zea16};lkc``5AV>TjOQbwKNtH-`D_Lis0G80Vol`v9R&6_Cn56SiD}S$FHDpTrwwb zt^inggWU0ZVfagz!V;7F)l)t`JKevH0A!dcydnj%a?P*C*b71DYh#{eV#meL-X!^5 z$pK%J0Au;ET*LU+kUsmuir_j*H#6hGu8BHicj*}eM?lEq!Kx|C5u}WBKm@=qE2zbz zAr{s!7%_N5;zsaQg!B4!5X7CMlF1rcrfJ7HBCBzwU{6Q%|Z#Elb%lCU5C5<4!ivh&N@UeJiPya z@4x>6P1AyNV6)w#+ic)tK-+d`nhtH%psCv80kF<9$OSlCz7iAOQei+WK{fe(%y|HL ziX7A5XP3s@{0Je6HF5qdXSAU2dxS`EH)9M+szS)rnyh}^(Ur*K{G7e>Kt*qNPQ%OS zN^WA-#VI#A!3P*;lbIBfX%j0=0cQdXBrmnb!LbNqi5rmZfpbno4pPd|&ySCfr5U(? zc$Zw?$m({}b=Y`bn`_}}v8zxChipojuDuh9Z5@{pVU0E~pG@M_Y4;@UF+ z7r_s7sE8y%SzxV@SnHgxI0Y*xZMor>L;TvY@b$mHCQ7dN*tZNd*3!va`~K_4LIeco z$?ITwo*{=!MKWEXEb%qzMnEW;tWX0P?|4EJq>w}+Vjl1-jqfUyBkzjy2YiiAgtQ`1 zN}#Hi@Sor;xDYrWkLZU1!#n|;VZYxONHuHG0ZLdK`W|C)rOP2V`T6I6cb+~|Tu87G zp%kUS8S5Yd`N~HCQfch&?yv{L{T+q-oX=-GysPl;-2>jee-Eu|=t^L>-$QVYX&$iM zkt1MJHDCdySZD3L5CX$66nK|025W3#8&l!6Wdh8k!R(M{tt~17tu?x?Ex!8MD?g)7 zIifcsDJ&J>2r|~G8VzF!S-8Ky1Lus`^XD_356}4c@dLD`cx9K~Gw*$I5X|>aZZ+VP?YG}>I-T$@!9%MG zQb{N&(bf(A^cWLbF^)RZquP_yObTE(bgK9ZA%S+((oZSO=PG=P(7LWR7p~q z9U#F_);GE6=cX%jS*CeP4VR@AOJT^rHrmM{UMxilU+(5}5fzBhQ&`xAw4Yx}+TKDY zUs251<+-{_Cw*NR*@e=LF%H2}A|fN3an9w6Baj{=#EU)X`aBIca&9s{{p^~JZl3C^xj*jQw*?1DSDAl;YE%kujq<=fMn!#J6RK(Gr>dB%Vkd^%7$IM?L7 zm-Y86cH@OMah1Mz4Gov1xO8}|FJvh&d}$mC)JNVNuhQ;5CrP{hzO{YuBK=^=$uQh3 zZWkLP#tIy>eyzDF2qnxWNs?k9b00+Hl{n|u4M4;?TOjYsVsfWj92T!gfHyK3{$JLv zw7G31yPn?AAV_Gj=!bVEm-rnK>yLXQ*a(JM124L1UETYt6}s> zvptQ#k8fLahaK7tDMe~q;n?>OF`%jvdC{FdAID>#2M(oZ5U8|*kmS=(o)8Tz8(h^E zm94Q_t?0~6DUahg5U(Oe7;B+T1*sHb0J&WTm7BV9P~&H197l}925UVT7*%$4V^8-bTkm}- zU|IOfKY^JX3z*^kwazt`X4!CLQ7|v%a2#;#k8rbt)io+pq3b&AcDr2sIWdq)Yg|l>p`aNd1$+#2;7iiD zJMWVutAbE6Z%Y`5-n2Iq3%qXN!werB#jvKxS04kWzQ;5kG0G8coHK6D#v~jAT>93> zNC|EG{T|1@$K&GzwAOfed7;euq_yYVd98H{7&=Y(y!Nl_ISfG^NiNhMsa7 zng-KE{DAd(joaH6hr>LH#=rK!V$8o|mjW`@SDu$An-PSf4PT*_K%7&+>C+zoo+}+(}`QeZ6&-kDJ{$E&I zVY6v7SxZWRySsa|n;-b`{U_!*qA~)uQV1^49|_DJIPN{de1xqju}^CS0l=r@E1tJknW&W&4Nrpdiu~j&O$VFU4^_JV#OXn?X^kY~y05~_4iy_H3 z<8|+Y!UyJj3lbuk$jKP;CO!BvrSyLQdy`t+n*qS6^x-!r*H9hL&ye6H?N`OzF9uN`WdJknP z)XfSI0^>}?Ht%U$LT+$AHz4Pm94>Tonp*j=mx;K?&;~bR{JnkOqiGtn?WRaXRCz7m zwr#$a#+cj?Fo_TVx^55WNGi8pHxPn0CsjrN{`U43hrJfNy-f|SzlISfO3CWv3~{QQirJK*v0 zGuoDjnP30;4d1?gg@DBU-5pk|6%L03v{Gm{Et+P9!=CaUYHOiZx;QE1@g0uSSMZGy($pe#&Q!QlQ+5ltM|x+0(`rNo|uR%{lQ#sA;0JS}C29F%5LG zJmw@&;yHvx!RIX!Z-ksH;4}f^!iU^=GarW}mK-%pQg%Su0=#ZJ#C<91?|9A(^4x~ZDDf*Ko{NnIg!SA+Ap^n0pl>_iP;5D)AbBgYXMzJ zOlithT47a_8{MJn&>xO~0IJI1aOm*#^n@5ACG;h>x>5=%;j6p-9zVCwIPCYSz#7Dw z2#AzP!66WI9XFd6cXxOA^yw3X5O{gnVxA}5-rkS{AUvjoe+wyKD}xXzu*MjZC*$Ms zxRB!UJ=R*IO3g}@QvE1-uFZwDbowK*pT#g7^L=LQoqsmV9=QQH!4L*YAx+*uUDI^h z_Z^PM4pn8*wwvq|FbvdiNu?K?3@%7MH8~6i#2DcMt@@3wfG9BzBf74Kgur^UPHRv_ z*tjF<;o)$EcM&%?H@RWi@AsMSAf-&Ijt<@jJU%|+^XCV|;IV(*;-CNc2jD&Y%`K*R zO1}OEpYComK)P-ktm+yjIW6w@J3Rl~qw5_e2lyDULPTZg*;HDgURlEYRm42|#PTP2 zh^{S7-^NsE+YRd4(l!jh#6E2RO3w&Zw-B6$ z6qZCA7IFtpe+PmaA^@pFQXiCOipWWtkPID!Z~qzoslJr+E&#hLUT8T^#m_x2pT zWTGx0+2cR+6{s2b9iHDM6;=7)!o{<8>00=nj{l=yA!X>5895;!E9frx0L0}AnUj%Z z;rJ#ZqD<*dQb4L?^|-LGJ>MF{H~94LmRDx#GY^1QEpL?v??V9R|F66$;`bV@B6LFh zhUWhL1i?%=S*)ureQ*5GrsCT4AJ0QGaI*U?|INZZvE1pTfTj3>rYm0XwqD9TMe%w> z^kX)D6odyt3P_z+b5UXn#DtECuVRdW)f#JKVdSZpQ9+?Ku(cHtEYo_L4!9AsAK}N` ze^3oJfK&?3c|c59Z#HP#8?ekj!N?^B(*=^6-3f5Ms$c)LkaE-dQiTyt#q#{u^FV49f1KhT4mhCC2C?i5>RF%el zf55Rjz*ZK+1?y2h8&xFWXm)!?b`phGEE?04B)o_eXsH{v7~te|L|EPxpX# z7^exlBopPP#2AB{wgnPTp=la4s|MC8Xk)N$8z?QIp10__0Ou0~meeT5Xqd{tT7$Ya z$x@kMmi2m_H#Ma#vb7bot^lbKAV~=$1axJS`UE-uVfG$y5>gu&ZD8c-+MYNwG4Wzt zCIfo!fe5(h;QWB#f#4;a2b>3Dkc6E}v0SI;rrW0mKq4kpLQDoc)CAD_ItrD-cwF{! zxMWj)-Mgh6u+BUH%FS(*^x;X;_FVjv-v90TpK4~L6D_eu@p&W*5q>Cf4*#Ek)mPHadD2Xu`#1rPS^dOLLSg03YE0#V3@sxF07XMh7M}P2oU+LCstbgmC~7otdRNHJrASke6e+1q0a}X`U=ty= zgtZ#Asjw2<&5P`4#yaYfoll`SbkI+;z$B&wDGJQaLmM&#iXoy|H@LaEL9<%H2ao;k zfU%n(5;XAh=TAtf@a4-F+~42ll)9>_NLKdxirsFH|NHg>``sRoj}O@t$jv9bp7{dS zTG-lV_W9w^;pJtAei&e^K}f89ttopRk&39BX4FPQCja_U&c>4+e-0=mE?`88R!&4O z*6%y#GU09?ciGfv9Em_V3nBb?WO8pT zyaCerD8TqN>-bA9)pDb7UL>=u`U4O^8Ep2;^DMsI8Z1oZE+`aow0PPw=51y?t^Y%a zzl09rJ5lqO8UQi~ijb#dpvE$PnQ{#38cdC5eom1H2c+Dqg5Tn4v2GX&|*G96u_EH1%q& zP*sXj06nFUohL|^6A8=U`eTpo*kPI~j8hLJo%Hc|q#U5oBi|;+XMP;036^Z zhwj+Hm?{Oi+~f({druO<#3bLozT)+8np*3+#yCxw66vh2Ycx%R)oO+HW&>N3t?={9 z7BAZu3`3u??kj{C;6gxjq>@pJtX;JUsOlPin$aicx@ns7R)MbryY~&lfd1H}$ec$U2$L(9f7t6JRqu0U*2Wv5H_!842|L z29PEz8F)fx*nyP^rFNax)l({vCfgHlx7$47vh)#t_)VSMZK!=_~`-v@%b~h+bs_JJwi&~t8ERb6hiRO zTEebu=5FvkVbUcBHqk0yAP50#8wjO|l$W*_{5hzMNm&y<7K4|BYa0fZFoURIYY9DrH_*aBGN zqVvMCNQshc5Mm;sBq^5{&|3c14LCQb2_dA_5b}KfA#C~&_yB+WbK)6)5EqKO5NAx( zvupB(8z9~(?(gvc{{49d*RRi?y;e*QCQbav9WYsj(iY%cR)d8URYF1mfp9w|$%(Df z3Q8*|DWD}K4u`a+;{%5eB%ZM8(36OWFja(^XbtIthxZPX^Dvdbdeh`Iz5RZV?aLM- z3MgpocY8SRaDPvByu6xbMF3;)FR!n7-R}_vh1YD_7E0^vEGMOeR3z=QX#zLeV0JTJ zUtjU^`U0&rZq^%ArXq}02{<>y_YT?^m`ag1e`VmOIUm|=;VX)RpGkUrVEOpg^oJXT zv1m|;C^qHE#usEm#>{zD&tFPOgdj0ZGh+0)FfWQ|iXY}@j;8P#B9SK<0$})ogK5~C zo}`yDfA8@)psp=$Zf;<$Mc?=NzHkG<8v)L2U=t!XbeiWmuiLo+;f+PxwopQ0NL~wk zuS;G;-}hNE$qJ8VWnrrd>xOKhZ#Ek=s|LH>4zqJGX=@-7`4BR~)>UrU%IBEx2g5~L z5wT7PL%fM%*vZdW@keWo%32t$a~AzM2a8RSmZg+7MOhI6BKZ7sLkyWias9lxLZ1G^qj2en8UU!Js^9}>jc*F~cfN7a00000NkvXXu0mjf|58fY literal 0 HcmV?d00001 diff --git a/sample2.png b/sample2.png new file mode 100644 index 0000000000000000000000000000000000000000..7dbd06a8a1ae5160a3418fe25249924991c28aed GIT binary patch literal 319115 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

jT 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

)RPWR2-{4$l0m8(%@3RC6 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
D)zWW9_Nc4k%AAtOuS_XRochi% zD8hB2#@3**(2idHOkQ9r=beEfSlkpKo6~!`IQv(ZYmMa<(SnIw8Z+F+hluu6K5xzN z2{y|UED6e@5LG4HfU4kc_LGFtXoNcEWD-pu8pAi9`D{F;s zkL;x;${2?eg7+}aV4k^^x}zPR>ZZUd_rwhJ(|ClB0j_Bfaz>7MA#c^72(GHNwJ^?# ze;sITgSNHM)?%ImPA@Nr39wBI;~aM~tc9~I21^+TF~G+pifgvBxrR@nkT$fo4J+SC z;cy&rdv}kQ{DQ8Zp|!)^-95g1`3j>np1wYU66ZYJ-`--LXH3I@aTpPN6boHK4jEpK z+cEKIpazAA7@%>4VdPD*X@S-e{B*+eoSA!`GxmLhzI9M4!)nVLq-kJWi{1Vf+OS(= ze{%<8HJaAp?*5)n)sd-!OkLv*rrb9n2Hf7=BPU{8oVM8Q?vXRZPNoq9FZ9kDWbjzS z8paT7GC+z@FtECXwHDsb$cd4z>;llpiSfgYZ5eBu0j=y3qOzLjHm&AOj53;*mGvA3 ziD&5EL5Mp>dWA>73AZ>>@Ds8Hf>m&k2~Ei_qcAm#_He zfB6?o^Mq;i(Agjp;pzDq`-0b!U zaR#Y`)9D$Y9})b3krE@NHNiRypCdqwUygak;}CEPBZe?xj1!CnKmjq&V1rSB5nT@3 z9l6_A4r;6;;Tz;NVpr8YU_0v1Z?p;WW{)}t>TEbOMNpoX{Ce7C5LcQ;RsWZJ0y!`F zH?%!@=A3}6E{u}%8TD|bn_D{z@CSCO{>PkOFLu zjOA2Pl`1J*h(&)n2Y3Vk3Mm2O9Ps0h_hQLoTT%{-wn1xyMv9hV;Y*nb0>xHINxIzK-auJ{d6;oJouIYG=Z7CK z4<29KuW-&n6XC~CpDKXow_m@2NTF|9_&Lbzmvi0cc_q3rfWY5i#a^ux;C;m5`B|)_ zLWxWojninFmcxD$C%#$h(6lXE#`Z04Zf;;3i+;Dme!qun8k|liJRe?=g>07+;Dg5; z1ITuDBeb@Ga~)c-SnhhhCPL!xT`LWcfmZw-B$JS{!Z5J^KE}d8uxJ{!8G$WnX+X|S zES;i=N9K57QY%&Rf;{Egz`$Cn!a)|vdhwzw!DjPw!{)_i>3J-rHIEQ(?(RW3A;y4d z;%Mr=+oA0{{N=B|V%Oi`;l9C_FTbJLIXv_|#_5Fp-5r{ii(=O{Af<$4NZ9Xh;KPh@ zIAS=S&~^=e`uTS-&f@<50YtSLG>yR|WWba&7uzu~-q$F!x^B(a1Rk%t~S3?-=_logSl&WP=zOqj7(KkDI#(Ov40Cz{95peER$uzx?uV z&{pAiIwH&geZNBp9>X}mnFe3J{syNTq^RKM39je-isGi|yBn-MSN zjF2QTcTF%#*BJ%t=Q>C5UXq#Jb|D>M-jaTr}Wm=oSf8zhoUolCg;ycr8{2XpOL z$2xIuU1sn+Lao~5DPs`_()Eq^V+Fvqu>pNtMfqwPqOM3pUibYkQKsHYl6s{>5V2%> zN2_qHL$bVg67i)Z=y@+`jauM1ql^zYQ=nBXLJHjSH|!@jjfDvoDQ3*`DB&|B(*SMD zEybA7b}fdN0j=%PwheUFnC6Lj{lxY)tq9%+@vJM^K*#F$<|H?ZVHo(--nRJl%dcn~ zEvMnQ5!fu=+r{s%6jimjF?vzMW^OV27!i@7h($>mGsbzwZofy@_i(POR6{MPYmhNQ z3JJq7RHs2JLb{YV${3jhI1w-Z7N zthulnmK2~QR7G>x4a6Ct4WJc^rsg5wbYx4UbHcKaIiIzTz1i~w61;EIG(695*m7r` zLEE;X$``-AYq+HyJt!p@vT$u9Gklp96VnC@D9G9dK4ipc7Nxh6KqgdhQ{mL}VwQ!2 zpsTHDT>voP$_NL5B#%PW};w8;cOl0>)AbP1E4+?hXKOJRZ=t9d^4N ztkIaJBimDnvC@N(_I!+D=@n9g^>HZ$`Jm81VpD-L> z@WVfS#xPE76{L<&zKLz3{cZ=Ec?{wGjM+0zTWPh7J4@$uEt0#5{$9N9b?Dp2 zwE~Jr^ci@y7p(dF>-5==;(RZ^W_sJtc(!+*?@iY*#Mk!8%gMfgDdGaqf&@+)Yh3={ z{fl1r_oY2fZ`d#X?q^*o_x~}!)=|ahMFM@l0p;TF)qHlz%~ z$aDA*1GLhZgiPpMgX8g3i_RE4QlnSkpLp?xD~fTmIwdWh_$B-z#mL~O(lwFDU+;ZY z;4_TI)a1jIBfMA>vz)jK%q0Z2<%Pg_)!BP!l+BD!I^KKaMA+>*_z>{;_=Lmpz%zbi zxW?l151-KX9h#>X9FGSMazX|uBFl#FoPnYSKFo01@@ZdUqjTh&%vnO)vQwc5HI+hb zSt_H@_buACfe)TBvnw~rX&7NefM<!3{$KwGf}eS0I38f#XN=Pc^E_f6d3Iki zU646AOG#!-<19#b&`NQ{xg0pF^Wn^nU5b?~t@h=+RTuYw@1gyDkM-@+hFuD*VrN}% z_?wvW)z9J|_p)BO0P=;`eaSiS_w9+R0-)Z=IWMFn`9I~QdOHtTP*=8AI#XDlZ<3cQ z9lY{Be&ob|UZq_=wO{)EHTE&TIRd!!n3uQ%wB`f6(W<%D5!tFyQ+<7f8?O{`Y8+Sr zoqXhzrOJRx$i&HjKFk=V5x4z~P}d078b*xDf|XOk&CLybiFxf>oW=qB-3=4zVyti< zrvGt(PELt8-4LNH!%Mg=Xjp~aIDGy3wKR=H9GPFW@79mIJ`ENjPz~4tj|{Zd$ckW1 z3*#)5ZV+YU6ho9kWWqd8=(?`XzC%djS>_Qy2m#0A5h)cFI}68jN-!j_7EP z&-}9~Mm#?~$>uOulIzciZc%En-!D%gs zWfm6|;UkF0O2%^XUBBzlb`3BJkHPSWPHBxfc-}aSX1uS~aJJ=5+ceP1AxWNqA|8?C z#90Om>R~Uw(M}dZ^(ygfZ7sTnKRxfHowq+T^3{Xd(mBul^{;=$e!m9*Oyh+8p2?D3*I}M#yu7@C2xwbQ z%45uOKu#P`#MejyrGy}@+msT5k1(qgPJUksDQUS6G@NxH5QcHUc$zScBai+p=W%Gw zU5890p=-JpO-377t1)>F2vgR=%J)Y~t=1S4@Dpog;wfOa@9^VKKjMG?@BbSb>%=}C zkrE@N|Mg%0-}vc=-{af2FKC+^XibPAaHqm@WIQONYZmr_GZrTTcPl0Fuh6$IC=$@kV=$N_?IIjHB-V|?WFf7Q!>VgLHb`}#<*&|821($5*L?8YjaA^i4`UHCQ`>$aS z@97B2Dd#-Xc^v{oq70!`bwl~Wzn=+M$_-mG7&s7*#A3rO1*1BZ%j4?thB_|Q8(2$b2 zxa)iDZ}u?S$y`{i+Q)!(79nIDjz^@N(Y7tRt`iW;gwrtK55NB-k1-_JCI*J?+}to6 z< ziH(x!eSC_vu!hqeD};&U5j}gU<0HiD|mzBq#_Xy1{Cs}u6T4|=Fu&2BT2)< zvGYP>y|&|Q9lEMFc(cupt6I2g1R1se^1N?2o$&Jf#K~rn5ul}gs};dnho|Q! z+}!M!f<~%+r8N{5Aq?B)lC(wXRr{Eff>Hb)wK0e*>S9W)R4Mu9sgCU{M*5P5^=r0nTy;g7+TN#P&=UP8wKckWz-R8pAk1YmMipXMFkkO}zO7o?n06D=q1~tv1BK-8j1NJw!XxbLm zStz5?@3;VHng;uuJ?0QG`yjy~2~Zl=wXFVbS`Zl~`q>7~HSF;ZiGfDiawY(2Ic;vm zPg{0}szp}OTCgCHs>)lbWn*XTbFA%sQaswY)CN$SlPiy5LgZx2(iO;c!#B`6@`$5| z42hj5-bd!vD+A|Rw4wpY>SJQ;b51}A5yNo6@pOX96Ap)GG<}1RJt%RgQch9C zn!xU6hi|`r!|8NH-|aC@Gn#gXwrQcJBa%SInD`h$mTKyy$_b>i@MJ`Dk@DtzR@VmU z=2XJ!8AxZd8D3g)(+a=)9h=B|9jt4o_z!m=h`#%^ycsI=o#TWWBJ_d1(r5|V$pVd8 zF9K>sxZB_g@{;KH$~JeQ8hiUg`5T5R^cD??Ef+X%id8N>Jp4ls%(1CClA41|atQ#~2X9fT#$jcYw(l{RkLf zI!$m5BYBnLlkhZ+jOkT8W^lH_6ecLsqj46~$ei+dp6X{YjiUqru_v47dkXVBNtjI( zBrjIriM&`np#&4GLBt!-wfUA>Qj+RuC8q>RQe-K9Jtu7##G`cm?8;-N6q%GLECT?T z=9vSNnhshUeEIEH^j#056~=L5#zE#NR7DzAbK;wG7N^sJ7d!&SdEj(Ed40T~&o~|< z=OARNCralyoe^LmWeNd)o^i9^qwgDe3@#d+#KrZq@2~+i6?J6Y?L=Hn)8LLps5R60~Z!x)_XW8ouEm{XC1hx2|Ru=nm-4n42s zzUSP+MH_wo(Efj}TUl=>CDuA$(6?M0ZM{YO`&+bSTbtnbwfWD-?|Ict!5f_hql6qp zP@I{Z>w$G!R^{~^V6|IPN%W)-&1U`)RnDcB%DV0N`ngGFujz_NX%*-yr?o&4N!)lG9gCK4ugVaH454(1b7UdKq(_fpm81A-Xi3H z(GS?U4t~gDLjsJ^Fjixn*tQcxgjS5J^(ml1M9Q2*M~cH}a*k-4j@#EUKxxzhz!-&T z8j--B|E_E6Nqj8|Vh9L37Z@y}Hk(Ub{BvfpUrsn4PB7L$8H20{S~W1_B-M}e)Rk5U z-eZbWZ5LZ>vD@uM+3l-Xv2X!W${0=qVvHDv0e%{*z%7Nuh-3ynAjkrtHKFS|48sXs z*Pw9@-Us~t4?p8~zxx5-zCGdV*Ke3-53MzJyWJv4OgvWMVxU15baK-;km7ELHmn8E z5|&i@bj%tcG_3;}f@>|DW2Qbb@q2?p-|s~L<`^v;6Oy!7EflP6B+1XRbuufY7(}2Y zMH4B80YR;9{pEyO#F|8ljjP;Kyzy(iCY|J3DDo-3CIG*>rwCv)b#iWIUE zaig@6wNkZB9794343yH^%CiQhMUq%jjX{$e{4V{7U;gVqF-;SrZAIJh!w;XuGOBPq z9x+V=lmZ?e9&mSehv(-fG_B*G$()=xhk$t+G0qc5<~A)3KXEcT(Me8EEX*dF0s$`+I@$NX<77y!5kg$T z!$J@@i3KS_jGSvwy6S4P)+wB)@#%N=h4+MlfA5}BpgpA3M*Np5hI!E~z1JaF7dq#! ztKI`S11pW#`k(4m*NtB7ckj6XF6!2JICP#h8&zRP-I|RgJC#fj05I49s?J9HjzK40^3JE(*RjSt&mgVv{QQir>)^eI$!3WJE~gavDikrLuFQ?g zuhJeZ8~MY-gVdUYkQ20Opq&+woPuo{IA;YXyBrod^{qkIHJInEa4pHnvM8$WZf@$l znTU(6loG~i!Z;2%z8o3Nnlge9u+HMAo1ftQjK{}k>~_omC@A6(Qbod!2xW z>~=f8ZblCOv95&=d~ay2F?$x}8e*M5i~+W3&~-f*Fv#$Jg7<;3!KBePEke*tob(Yv zBCo^jkrR&vlvr|=*37af(Xpv?%m~_8gctxcc=+@QP!k9f<_JvT1wa1$Bd0$q;PLqp z4>u3^^7S_yUXJ*5|2r7Rk>M$44C4ft6S`dsB8z#N(RDp1VtUri_`sc^AwtBkS`LWi z`#vYxElk-F*Vuw2$miG|MS1= ze^>|NBbDmgMZ+~%MR8sTUO25j!%R@p#*fLv`+-AdazIQPZQCOxkHdICKekAe(Dn{A zcQBTPY6`?GZ~}Y9DT6d*{?Fp6hyW$g%!+`?dz^+Ne3+rNVpcvfyywOA`S}U9VcSvP zcQ_o%sc;c?vA^FTrsd?nuCPn{us8~|)}p#joS>E>w9+-jEy>BkT8FOfkp)yz{{Qmw zjB(vjvD?U5j0}XOWt1;hL7y8^OfC6nLX?PBTyk5F#Fb4r>Z#O3O3ks^%A5 zsX&~RBJqSrnbUJ_Mw!zV^lQwkLTk0buTNd;KRaiMXaWqejj_yrW8!clqpft{B4P+K zic}z#g^$6ZR6b^bDmgqoKH<}+&zx`n^n}O9Z#W*0czHR%`x$-DSYq#IkOI1nbr@VA z&hWv*BnxdA+++;DHkB0S;E{#|9~nFqB@S5&p|WWjC?XtBN1TQMQ}8^u7j1x_J#z9j zK`%mJT<6gC z4W@BMNFHAvzhKwiz?c@l|LFnG&o9{B++se>7`}eR&+X5WR_Vm8U@#m;*e0RxJNR&7 z{f^Pqy18^b>1^yvqC|@^wxp$k5pVUH zoBy6Y=-j%uwgG;$n!D@(INR)L>qlL{8Lv|TFNsX5{c#0QAfl`F%C&CCrA_`)yQWsV zltr1%ua#%&3YrK|yah%x;=P7uP-@bfB*YS*>NY$CXHVV$|V6=swXUuaDKn$N+_P2ZZ5b*8m zH-z9;3<3Vmv{tygzlF6H^W-u62|xezGhSYvFwO%a60~WszuhCpfL3PuaXiA1mH1|b z{r(31u44dE*VGLpXF`Zc1e1hre*;n)UAN;6Ks%(Qgt@QLw)}fhxCcf%7{k%Q+=VG) zJ+%q%szgj)C6{)+6kvs#mLmgrihHPhuOzJh6cb`v!nDp$cBL3x+W^}Tw5dYq0&m~5e~#_@E*>}UM)+pqZNzC#EBhw+3TV-S5r$BYHTt{5L9?jLp-Cni1i zeUDK@vkRl1R@BGkkZ|dMc+CQMZG$VH`{kDW^#kZ~2vw3-u+=9l?3eYOfmN(`UgZu@ zO~}m`X8YTnbP){J9&*0?`rhiKU;13ufA2jyqFJC5YL(Wu<_xd9HMFGU(K6BbUa`Y# z5nleT`OinZmDitpD@yvvZ2luv)f(RMJ>7!WkDV`sBQ4&{CGHlLcEtTxX%P!C@ZZT#r__e2_{J#t@puKv5Q0j>l;j7;8I?7^fN2JXJ^z z>yLD8$MU>yRjG#fs^F_Leu;rCR=?%%p(@Ku#;lW*Qt&gp_t5ilkF2IKVKd{%PF|j{<-#2nQmxV z6bRO`#1+Fp5rMj{CeiuI*=PT~F$Sm8N%S%f&Kb1rJ%;gwfBU!pFZTNz{I@^-8JcX> zmUMlO`-ca#ZHsZ9aXcQ8iN&=c$cmGgf>^Gn!_zb3>;c2i+jcFqR?>-6n8udxfgCG4 zf+XvLq|HA}6O6Uk@Ah!6N8j%Sfo;Y8!9i8ZB!n`gES<1K#2f zFQiDX>~{HsU+(q)ep?86Ziu8>2cC5dYDtwZ=o%n-0i2~x0`UOxW*Op)gap$l%zi|p z8$2H#;ckAwX*i-a9dZOh@^Fghn$QfVQIugc=RqW~^^w*XgU2`xoNT5w+mPa1PiHX( zaVP}DRESz@l37vw%V{5J)ym5C^JfbgRW)>uB<*gVg{v4adxrj;PA5j5wk=ZvW3K-4 zGTUz&h6SCbk*$4lWBQq~rAQg16uPbzcuS};!Ys39myv5MVEMiH#GQ+n1FX|9wnx)+ zaIRtTQ;z7`9lW10juUQf_d;Nd5=UH84s{h~y`%%$rh#^b7k5%<`yFm>?x2-I(>iWp zYX#SKtoAonZksIc*FozB+FCfvm|||t8-TbVFS;3vK>2B&zzd*CPS2tu9x)_LiPj@WgEY=60CLD?e@^x;N|57FE1~cCKi!eYjAsei{tSi9V!oJ4esym5&yua^T($r+~3}F z3tsW;eK?(%tsnU{uolK(_9EUTw!#*70}m@QoL-m;NnAAizO`6nqgY#+oM*HJDSjVw zoEiG$T4o(&#&!o^x-VMjfC)YUbC}_i2dM<@2qtKBH!XVC!zqQAqXlxr;E(WwLiEr0 zmp}hM8N;n2CO_iwFnO!t`kpTIR-pHNHo{kWxOZ|5-W)S$Y=e>V1+(2My2rfz zv8oGumn`fG5>_MLW4hq&CwjB4DWtc=q?EHQ@&nRQt0{?)5Psl6upcBj8zDUxGSS_ zwMJU2(RB^(@9(6`5fCDu9{Y}Cj2Wb&IpMDB*#4yzls2$U1LGu|CT3Pz=VIeiXquK| zj#U|D5Pug$m}3;67wZI)WCvs^CP^>JYp*ZX1>&-v+keD+Zp&lYXi$ zoV*m0qIgfV-Y6LTn_^+?Gn*nN#w|PJ5Dg)Cz^BArftX-4>t(EU2qEHdII(A5imKb& z8+h+A3?p)mcsT(5Zihep>0j{g|Nj5OU;p}7G`7Lb?Jb&?Lzuoje#0=1P|Bcb8z`B9 z7sNa%QwxBU68hZ^p$#(TV=Lk883M$eg($9@87X-FuCidFWyIN9jm9-KRnYqYN{TJ1 zJ|btTp<)O;MoUN_&9UUB)p+RcfCzNf;d6SxaGdZwJR?pDyY>z~PPo0hMM_{0)}w}L zH1@YU%*O#KMYL^;n0id}L4qCwuM-l>t;izBRC8t&Xdz8YG&0o$KE8L-de_PyK383x z{eQ#>@IU(3cC)67i0pp|{Wx9VCY+gb%B^kkC3B`CP*O|i4+KWD;v6g|fMS2kZ?^TW z2?EbsgqQ3V@2TlOR0+Om;ZRVor36a>aAmH)Edahhx$yf1iFtD(f}9XoTm&Q^krH5y z!bAy)B9cm&{fH^fh}lDtL$hm<0=EU*7yzS@QiPu-n5IRF0kfYFjb*NXh{!}pF-ZQq zSi%%TMi$lf!f-D!pB2@rjpS;_rSVg*1+@}-v3EOBmQe$HosBVY)o)B_#HoXDE;|(2|U(G@tlW;w%I!jQ^A(d?F~~7XOmFPNkmTCZ9>}!uE1b(#@fZ zC!6&>s-!!${#mUxcifbEH9mOt?-#~$YfTP;L$^{&a?%WyLYT9Be=5m%OK{VPkd=ax zb~BH!%Iu#VF7rHNng+zMSnizTR{yWR{)U^IJr}wu;qmd2vBA3@L@da2&LPWnayT4- z3?#~8F(ar7zhe5HF$UfBW{CVt@}G<2)ipkA1ge4G;Bbdxm3$fi*0je|*5#=dZZ`{24iFB$XJc97f!< zJ&wOVV;E0x&fzoy-cKME*@lQDu&s;~)e32@sxUA{zj1w3Eml@gXXLy0Hvdb(Qg4lQ zH-$o3;`95b|4SpU*F^`tJtjWiXf|E<@9RWg5;vxI9%ub}O{(TKru*g9j4!WF(o3RK zu1HVDZ?S#iJ@MQ3Y>d}tfR{uM*EZAbf72B<(ds;2`PJ9Oe(QG8xhUhkY=KLyr;Fkj z+V)ZCT(?jqCR_j%DkD?CxOxs@LMA@h8$%fV1k!-A3RXK9SPZ8baSlSuGeUjL5~)fU z4igT~PawrP0HFstqcpv!vWJr=9$zn%H;jS_fa?WU)1^}?z z?a;O@{5%6G!L@Ah>pJdikm7=<={vMd$239WR8BJ7I%%2~u5p!w2mm2vhREdNnOC*o zDysehywOV6aZGVTkXprD=d|jKsZDI_dg00fK3c~CuR%gutIF{&h;eMFuFDy)5H-t) zV%uJ1Om+_9l8I5?6aSns8rB&EKe2T#1opB6Lick(VnSYwJPvqx_>7yII~)!#czpbd z5CU#*Z*hNrhtuhVz6695sWgJS;p z{&eln&cmy&h7Voc7vA>!zi0njzmaP*|MP;u)U8D}lB}xaQEpN~PUmj_Ri#7!7}3K2 zz{blv-!NUYcKkgT!awHy7T@f(1vl5!JSFJnlEXbsC#G?w0Bs1T;mAAzm7$!5hJlG} zubce@N(qf|Fj^tb6Rcs#$}pVJv@A{v!DAfRuY7xV!xeoDHQB5zXyvtWJAZBK;+A?2 z2_clthC2^Q#sQhqf(=a>3M|e`61I|4hR+ek&ah2DR-B4xltJG!c&8)~vQ;okKv2(q zX99Ahsvs}WpcFjbWKJ($(&Yz`4yW;snEeLS2^syKdXXCBy@4voJ77J_Xlq`%4X1K!3$mOM}viX2r3N4=p7`n!HVTXI_& zN4({dSqJ*8T_5#l)XJTE5rr*}eJ1E#QaH1Wkrvm8Qf4Cr&ce$tr!l1z$QWb_qWb5N z!9s=PPC&{`MZCMa$1lJ9g5%+Yrg7Nq`1^Q%ZsZ;PqZJM-+PDa#z2#|mMd z5#|Y`HDdCZ{Rp2JxIxdj-j{c8Cv&f0!4!-s$bKs(FqdreTv zRkc5F%of8iU>FA6-ri!r-$TU!r45XALOf)#qArW9Xg2)J%Ko$(V-+^I692q&4&ylD z`T3a&oTc#RKmQqDzkI>t<5wvX5`OvRFUT4A)1UqX=L{adedS?X>2@hD(&jnB z#~IeOEc8ri5jBcfG)kIh@B#^nd@3&vnZ`K~fZ!+5J+K3!6m5;+0>Cv5n!bg0204`i zn0XRi(;+AB@I`U(Xk(xw3vE*lh}px(5lUqkr_nSHDkdDp7j*3o`8zDVgu-7^DMGs&fU( z;(f}J8(&3mxX>og)k?4g-K^RLmzpzcLEWoa&3o;4+MYn_$z8qEP{frY;B2#5JwH|5 z!`X+oi4y+%#u;m2Q$63vyjJ9~@^q?pJ!z3+F-b~Jh~>0_OfZVM^+`6n7(Fs&B%K)_ zI?r&ngAV~F8$Rh1V}E0e^+Yy@8FQFny9Q0mGiDzHyq}P<JF^65(vcPwgf`V zUQSneIT^+Pqgedql*MowWr0}{>cH5~6cg_5?j$THNh{yN+6F0cTiDM`0pxT&W)K{X z2YmVZ8*XoI(e)kn{f>oKurP}m}2G_Rxt}GrI09{ZMFh&Qk+spX=|y? zn_HTyxNAYF7I%ltM>Dq9e8vX9y8TE8#}vRH7?A zk7x1`v-b!w!ZikM-+>h2bUfm4JmB``7C-;|6Jp}cx$ist?#JKZ@#zUqPfu`;fl5u+ zqLa?h5N1rn$aYy$(Ao$&kqZQ8nHU&i!Z?n+Nu*^&mRB~$vRS5_k$ePF-~g~P!icP` zQChGmBq3jOiMm(R6h#`uDg*S6jd~ImWqpxu~;xIn( zcw~Qzw$u3Kum6spfB#Q790!E#@qBnh$P=dHfX83{3fE}tZ(2M)e?DV*IA{Ad?CYTUDW3l;g*&LHi(qa`|$c_-?ad~2KcxN`u)mz3mm-5!9fg(O@sg$S6>}Mccy41nYx=AAi_q&=$=UO2c{e1u z1r0t$Yyr&cHtFh{Cz&6TFw&7KKY%HYgqRb^5F#QA#tZ<<8*w0ykRq(%&=N-uAdPvL zIm27p{yxrtCfL@&G#01l7k*q)nEiyNZP7TkpQV(bkbwv&!;3QI%oZd;e%5BDDEJo^ z01KNUimgj#reObciWxpd%zlKk4Z1FJ{<+K#6%o3=g|QYXM@;hskVeW8A#$OlRmqwM zd<;;Yse#ix3x!Rvv07^2#Dc6{w-ei4l$h9NrQ**p%Ajo<%yX=s|9PH3l=12FJsut& z;HO#evJ>uZZ)(O8{Cy`pW z{^=5z^ZK}~2+L4=W3M$aEHX0)f$9kz#2Nvz3QAeb7%|5|Hb8~GZ9!UL_8#-`8N)c@ zhaW!ScR&4v)9J`!&8~xS4qv}ALC+Y+Na02Te~1{dtdiJV*)_oliaa)Br_kD|z#Y4k zA`k^c6(hW#kyC&oMoJezTZ|D05vM?+C}5b6@FC&h^JkE9`1C%XgJynncfNRnrz<*|^tNP8)$2b0&GyB0!D09U1Pu5>R7N8! z&fKQNn+aiwWnDT3nLF;_gg3Q0*=|qvNrDte<&Cv2m-aAd^Tm{(FKz?Eax&)j5hq|V zW|EMSuhygUnPko%OCl^mFog|3o4-?htCzD23YbKx%dwOfF^-ARo>_dBECy0?iYeE} z*?e^Kc>J6x3R$mIJ@S|-dXRO|#+)z*59bGt zp>G`SZuZaw+~3|-JwRg(j8?Elqj8qI830o7ym5;%A2IRCNozpte~s(l+6FmkB(Mc= znkE*+X$J+~jEtaaW7#Z8s!#>yk!N-nAYY*G<+3)>rj({v|3mGzDCiop!s238vCetD z`R64B2*I;R&vUrdF!Fb% zjpn33qj4Mt80T~tzD?g4F}x0(N*TxFz=A>H^^Y@W2Pmb` zcY6@ATP4JZAmcOzf;Ad&Mns(nK1%|i);z|dEXkD~wzaU%g2-_2Psm7-0LLr>tsGJS zA|+&Co(Z{QC4C`1bsau5Gbv z_jq}E!t>z^Yy+6Ag$d9g=7|6Lm7|8+w#Og;>5s@naITYBiq&z=od_MmRta2h#mF9$TsC|7h4X{=coBgiv9C(#w+V$dYeK> zf*j8PZ9$U0>*(Th3nEK9$wQ@KEqFdMTuhBvEUt zx>;?R0L;V~#sgyDO=`dI(Y6it`@OXFxqJ2S@EO(^XhpcYyT!}P0e#oOHI1~$O8^t= zI#PQm;N>U^^l-3the3#AN#s&T7I4glr9Ig;8~hb(G%4%~{h zHSC6u6cpn5_BpV?y1Poe1D}$H<40zJ^Yz-ZJw!{ks_!ljds3L zxtg!@vt0DRuZ(G`co)t(ASIUaeD1L*11@atU{O*Mzwh=#D?VhkX}Q$r-~9gjoBzdG zQ;t`*@$1UY+M-I=nlh`QLSCt^!K&^0StM?^zTK_J7c5$+00C|UBvH4QO_wYBm^?yE zyeO5nFM)-GT0(|$LP$Jc)N(BxPXneoAf}9I_J|$z6 zxY(lBPcb3}K&iB`k(B~~fgy|Lq*nVmqir3WbpU|iJu+fVTr2zl4HidD)64`x%_1u+ zC*oSPl|Y=c8&xX}BdUCcw3ILt)+H2FYq61WVxN_hpTRH;7^e|^*W%{(7Q-;$a5}i1l9m31%iRr4n`OP<+Y~7 zvA$LG`)VPhj~B1FWCdJ`Z$;20?RccVD@lE3R*3;RUNi7q1xuVB^ArFCTM z$_1fv6`~ff5{T9J-g~yBF$|ec)TfN&>4a$*pfxAkDdF@J5nR&%O2N7YHsu=1WQ>It z=ZbU90!AVw0#C~$I6*!aHNNsdARaq~5bO8F-;?H%Px8o`MUNpy3BzJ>V8LaF7%WAXV2~zf@>U-YG6hU9Y{<>gnBM9z66P>r^ksIdFita0#}Ph6$yYZpw!y>0 z4;+pIQCFu3${LjT8nD)gCpfQYUz#`k7~q`4ZnqOqOJwV!2%pO5+U<6j=NZq>2Taoh zA2OV?a1BT7_PZUF(!7vQBc_=b#HQsWy%c%0V4M*VU_gq1HAW7}S+p-%7T-`a!Hb&Q zXjggJHK+(IHk+mi^UTR}H~Sm3u45XT6dOPBV~{5PoJdn;qpLH^WsFHIS3tMFhgJ$&aTttMT68jI*;p?mti2Zb;;IFT3Olo@c<@aU~+ilc-@g+9+90>9QlVVXw_ z<52>|xYM9XSNKrMS;j1$!BUC492prQ&hQcFb}f{KM3&Qr8L_tVc3p>GfBhBz{%`+* z-EN0ZpFUM5%+vF?+Bq)w-8%MmoeA+#%-V#cJFML8a+;?2+LOLf{PXYWqRyqur;67o;LGQ0b;YK!+0ePH zynqqC?oECxp{Z`%SL}m%eeqp;P3xb&a^al6pR$OjRbKRmF6ejuj6`SzBx!Mb0mdk} z#(ei<|u|jJ23Oi|CZr zFquU?M8q3gjH2vc5YLHt1K~|SZmgipGoK~iG^5||QJ^&(0UPDJ;_v+1w@0=EIwri4 z*rZC#aEd$zXfw}YonsVm-}lg3aUAM6Zm#FDPy~r9o+poao~3gU5F={xATQJzH@7!< zxW7m1dd!u9o;f(?@e$5B+~40L#pSa&olf}Shu_sxA%Kd9Ekax_Lil~mK0@gPD^8I_ z3K~rA!^*a(r9)tplg=2IlwN$<>ltai7G-3RV&0CLHaOomyv;cyW%1>&Q~j`QdaXC} zOAF+sqT_s_<9RTj>eE>l>>LOC*6ESSiF(1O3N#7e_Wd+Z7>5&(xwA7)q8ZT&&auv- z+{aDRKr1fJlBoXMu7fdF+%*BGd18J=!KrT4Up?|ZmrtVaRT2*<2XWVgZ-Yne$UU(7{?LLI{fg%k9c}|Wc@-~itqJzxsHWi zpMcNT_)FK%M>blm6=K@+frMUz7+z5GoZ^wP{H{TL#i%XHb0&t=1sR6p=OG_q2d<_K*8KSi8QGoYNzpB;YpyFcRd z=g;VOH%K{Q_5oS42r?8@ipYsG!L!P>1F(Gcv}9n{&H#`Sf2VxF=7sWbIPxMYw6vJE zzIX50c4vvHc*>aSeUHH-C+<`gL80k7ILjyWa?-GJ8cUk>4wRfE_AyUAhNVbh)pv<8 zE(Ao&k;2N<_sWZS#OZWI2mwF-{1dvat1ZvAZK1Ws-Q6vNU}CJ4Ib)1qgQK`7coe4% zE4-O9Xyjhx_fj$!N?}xEZ&w8XtNhC-C2osfx%OiUXPgSP)zoBE;qF$%RIWuWFC(wb ztxLBmlW3gYhh{Bqh4uX@Hz%!i0L!&?J}bUDrxnc*BdjgFnwgPNHy?xjevjZEFpZa&x@N(I3G}^vLCSaaMfD$Msj3@3Yc^_(r zYAr4#5|@l%v;7=kRDyP#0noO+xDqr#2_bsy4@u0c>^UJPqc5Wa*p{lpz@h0wJJo{+Imw-+LOr zq*vL1rfA8<*aY#cJGCDyC@w$l+uDI^xMRwzp>b*dOZBW)dVsRx*ZuhXz`d&3OQ&;f ze+2iG=*;-G{I?>tn)qJ=c)o|(J%6KHs7K|JWZDpgX*o=<1ajN|Ud5RR)a5K0Ft7Za zADL(7B_gpjGZd{x7OMhb-Qc{)2{?Nqdc!25)~8RpEF=6#jO6+Au|2S;R2lFyj3=l( zLn9z1!W1X;HluI$d@?s0wrLTjgn7=GXCOv}w!J~hd}8_e=Re~1b`MfKqfhb;Xrroy zu*98aTvnr|Goel0yp*oMl7x(TWI9{Q8I;q8?xvK+e$N&x7GAONkp1rL8P}F+hUF&b zkQDY|^Xw6@0>M(6Pi2;P!F4gh*aLxlcue!eSrozmDC&4)HIGACcLlgeMWq9l5zRbvG2)y-&bnTgmtvy-rp^EV#$O*T95$SSlo4@x^Di~Es_CU` zg3KGKyJtSzLeebiC$q7-t@kk^QKKt>XgfJE~^Xr+9E}7NU=VQNG3v#>;lLn zL^-YM%o;hs5TIay7@(;|$Qdd}wn?=u&$tuo0=gYX(Yj`Uu@;{{{{U??W zy*T-KQR!Tp>J|k$6A^Pp^nOv?%L16BgV6OIqe922o~i*BRP}w2w%@Y=Fb4P#Fb59^ zSjQT+(gZ1zFK%(_EjFQ%Z}q2}>b-KL0OS_3PgLx&u%);7nU_5;Je2u=3SX zs9X{Ou0}?e(6GwrcQe-CBCIj>6aX0+F9lfBAO;ra6-+Iouq|BE;y4^Jj02j6ogG99 z-@ZOC*K5uo$+O@>&!g))#27Jo&(0CGbe=+tc>MYmhk*lzw7euAdCu;Pfw3C%%tfRz z24wU?R8(bM(kz}%i%Vj?@F>k)jtov%Bua9fXZSc*tw9A~#V8$0)MU?63}~ge_{$>B z)(X=+Bc>#H>Gc>uZPvUsAu`5@Y2p;Xwr!z}+XVTPpTDN2SJefQ-)(t+^qM&D5?>nu ze2)|15`OsI@hvH+oZdwE7AxR(8_HK5I@k8y^0P*hTD+302T*IPO+BIKO+Sz};=p|2 z3m~k0l$R_KwDc&p6tem=>cSRDb>Sh}T7jx1=wcvpexox1!Q)=AYh+qZ)33Axz&Z#e zpN$08ujL|U_}Z8A&INV#!j{FjbO1=GWXMX?^otLJnf<(A`xFrgP|lhR~mQ|S90 zv@!4@pzS(5eEJ>6dBEtswDYyh-ZL`%cEmy45m1U94!p4gloga?-9QWxKKP;}5+sv*D6?WGf-zOq<@yTtU`q<-x&Sy=^Al4MYEiT9V!X%uSVohQ z+_nm>Dt!JBLk+3nlW~Ka{T?y-YF(SA2{$*lXxnBP-&o5EdC|P2oDrr8!FxsaJ>_Ew^J+1b-g-uIm#mA)>-V!9T+@yJP^HXJf zE9nGmEB2IfZBM@Wr3;&YE;ilY`|_1o(cX%R%Q;SZ#X*UPo>!$qdlnw0iNW&3tC zCV@oNk0i9WlE0n`V__L9k=B4#n5T%838rb$sy(Kch|V?m`R6}i4hc#t+}_^8XbpcF zcxI1c8?wk?K0u0@AuL!t?WLtlk_XRi;$_@X@~cbHQhtTRGk&(-@w~8U+8U!;LPnPM zGo+o$t_l{{Es&7)%(l#8=aOR(5@Lv$W0FYRTsLy-8f2h$CyJmj#=r{vuEVb1!x_iv zf5e{^k;dWqrA7dU;Nb-H6M{$IcMP6Uj$?}FS@aIeMjn%F&{)KeiWHQ#FxE*2Ez4ZH zEKCWB5;OjVFc@>dVzVSfDO6HQ$YQgkH3(=mQ(U7_X{E*4I04H4gaBE{e`PkB)#8R( zkMv8Kkm&k-$)iF#>oTqdVdqHjw|~XR@RuYaRBa4wvT`C$G7jJks&y8PYti>TrfI_C z<0JeW@NoaRS}L7$a4m1dQ94A6>n8%4*k;B$ml3eGyjG$BS``3RRbK{~@bFIf<%+KZey6o~K9^hzB47EtG{ zlm7qAU#~g=>D*QG*6_Q%ya58)rA{ND-=)iNhdv=V4Z7Pm4;f!j#huze|IAV@%pwJj{Q zn3acdJG9*mFb6b^L)YzbJRUJk2{{`Oj3}v7J$+;rAS{AVZ0xOalM8T3W~N57x*1CJ z0ksRI>ui>YV6@$Mgm=3=&&=iI7Gn@m)7I;*g&QA3tk*0fNclv#n$2?YptJ~}wxEK*8{ zUM#92HCCjdh~tsjni`OT$2>8A|KZ^itTp)0|NIM{pP$h*J)%TMLlJCtEC!V4aLyrH z3nS6DB?=lKkkwo$Y7OfQ#$jYP4Jov32Wu4OSxGSxph#C6YdL_#kkGgtjJD{y9U9l8 z6=ER6zanDt$Q0x|k2sxP@c8rG=e$*VEIrB`-oNT}KQ=280tJ@fT5iGmnP^0+ywb?edRn>(k{+Dlg}w9QGM(#15qoEOl`*7v`B zVe5IkrI}6Y6v);j*M>A3b(g6Xe`qLPvZn*nb{uvjNoT9 zO@pp&F@}Jrr>7dzOPYZ{S*%O*9O0)K~c$2YxYrFAE;hG!g32XtMB5CWznTlaqZ?Kg~K4{Uck5G{$7ZQEj;CivM4 z7S~~zMjVbW%yNhkx@0OCD|`YE=Q{3~rG&O|aE|pNsv~G+;2Z}48Qn-1GJ=$aF$xMA zbKs8Le&1ua+u`dIaC|x7a2(+pc6t?Jr&g>Lh_Q_0c=V?fqlu?+mXRV~i-nL`^E|48 zU!NWR5*FGjZRYto=bE^94*p@cOck5nYy|OZi})hMJ^QnKUL>qA!Pg4mf&xw{a|<-C=J2GpEpD|{>8FBy zRD}G-hxxsp%=b>jSxyocH%7wSYW(v$h)@AY3kYJ%qb9s=J-juCDwagn>2Rw%({?77 z&+9tcDl|VbtN>l^Qm|~Z#6{#9%))^p5kNpt0Yt949E`DOn;ur}&^0%(Xn@I~Gq>oP zJzJIPrB!)O351NsOAB{*hYIJGr$=|tY(5hau*@&dkYS7AAY)*HJN2W5Wg0}J}B zg;quu3)TcU=inm~1$X-$e2fTwMwSy-iV3@2kKO*3M--V0ix2|FX{tiJVn-_8|023F z#vpe+2oZ)B46s(*jx9gSiDxXv>ib?qPTVR^3E1!VIGs+|?RIc>&kXuHiYQs=(iu_( z9Ah{dmKgo31&3_pxs+gKgPf*{`+yXIw8VkRf)W!KYB>w~Rtl4{;HH$91+T;do)y-7 z9VaRMOHN1W79`PHNOW`J=MP0tmJL6zgykR+l1)fpI~|Hf0nE@>FjB-)oo6pYhR8*@ zLfy={u$Ojqg(N9?k8#t2F1jIYY$XyB5s)IR5G6Ari(KasDF!?~K4Bb>_-XzLpFV%W zpZ@gE*nfS*FMs_F>3FQ2rC}J*_dOmS9wbnQ-%ktyqjZyI?~zl6vg~pRGRCT1swDQ- zd8)C~1wN&%;N;xDCovwmcQ+)lt( zGsc2He22b7uRM^O3I1l-u>Oxy36_f)$ghl#>Rc_bx}M9QF(qqxEw2&{O9({-Xe;`3IGxZm9ooLf*RNmk>GLP_ zT`QX|Z^jHzQiwStOBhQog^vDi zGB%wL&S6lTf~Pc(X)+fK%jqW~1kWQLS}cvlTh2w5mD6ZI2&vv{r5l%0h9k6i3E4mUSD+}{JwFGq3JpcZ|7-=pt)W^TwY){1>(g{dXQ)GZDI*AtZt{F;vD$HqwDRT^6d5G)D|^^7uE{n1 zF;^vcxd_WFy4a71vLxPdHUT1UX2voDKP$rNbi&R44)Z+Y_+QT(`<`LH7nod05j$9VEtr9p9!DxeV9C17z;jF`$6vzCA zfYvpzh6{qWZQ+^*O~)s?*^eLsYYxCCXI>b&uueIzWAJJ|B_FmkC$*KXgq(!eC$5CV zHc+6R`jskk`I1pzMpIG{;9Q$Rn|VEfkV24lZbEq_84;AXb9;WgxD1bHQ2f*Sy_cA>N}7@wYS zJRZ1TI7}1#JY(1I z5I=oFhy!908)r(3>x-ilft+dzYjLKO5o2A~FB;F+-|JeWmNx6(hoDX8hb*;>3(jqU zfA{8|SIQPy#OVT^mfq1AT(X{D>TbMR%W3JsYzn0HbFKvi=LLq`Q?C%5I1?ePey?T$ zC{gM{sU-%nrVXuG-O`SWqJCEkV1$T1ENt7h@2Pa;FLd$gYHMWin&wxUgVK6p$!&h8 z^|Uvm||9!~dg zjYCWxemVlM=!6Khu~QMoNXs2Wa8?`+Ucymi-aL;yH;yv*Oj0D2$F#;EMqmmapFVw(Fd;8t zK@QVAVVWl7%oaZ)1#JM8bnUP!(ojZ2X@i(pMV_HJ6v(l@BP4F6D-#!&fOHm0m#TCf zkg0Ep+bERqcJ`uXp8uU^4pShrAG+w0wk4R*U-wGon1I2;bOqr`d;C!tLSQAS27B~0^-DS2eMR=U<9rHJWt z!ZZ#T2i73WbAVFB-3ie^g%F{vfwK+b9P2uywGwTJgVF||gqRcbtg+wkV7niYzm7PK zBbv6woxa22$f<)VrV5AQdr^b)E>@d-`R=QmE7y+YYl7)z7u{QQymM6UTANj_&r3l% zmpC(jo1%Zon#o1%{tjmMy@KU+G4KW=f05L#KIeQfFXIy4clq2^b);P?Ue3P*vlij2 zTJW$*&5;2?YK+c$JcYE^T(kJ{DFT=OXyP0zReVS zUA_DBJR^e8IEUlm1g#C4mhq<~U4W%<@C+0ZI8QA2U*}+rk<%|{)=$CL*|?U3HLbaA zth9!*3V|Tbie*=GdM#_{sufTmq{yfByc)Ji zOz1K)NKyFlkwYZK4UuIG5`wRw8y^Bf@cjGIjwY1u32#{3>ep4_PtdTf#KVfq0sxxC zt?1d$JSxb*JV%^{6OUzTJ_NtElJuw~8v<#epOtY#B)uTMRjNT{ArQK@#fvsLo{sD) z(R@t>39-^zx*02~EkZ;OY`Cnj7bcg+0@QG>Lj2bB?*86i9{j}hRAOMcCIMag$vGt!&HlmOV&J`vGcdK zz_;vs>uhJbD4x4i8C_Cs(wiYbTYKZV0#%<02{#nPGjYhJ5Twi53U6P8TC?zqTS?6D zPBDSVLo1Kde1tVSST(@k5IUDZxkYGa%;Ny1dRXej_LH%sE>JyP8D-(DL$D2Unvmm! zND77wkBE_Z(I8fruM4^YT!JB}tYNW@xr{N^0<$c*WwxGkh886>c8ub6jg=sg1Zy>n zHt>=2)Qxs%+Xi;Gv0?_#yCjqZ47}S zQ#n;cv(e1p=Z(7PQ2V*WMxzmk&=N@J-V*P^Yas)o}SURhR0)?g`PwTk531jPDk9|-@_P# zX=c63?d>g2rxR?`!dP4LAxH?75V33qFw7&KpPumi{D`N=Zf!AXz{mFAr5#^|tf1GlzS5vxW${!i zY^ICaH#++~7ry^W@Q1V-L+7h|aqV_iE8IDnv$o}FL;NGG)$>W(?Wuxa-fD}i3xEY^ zplkd8O=94McFcP=ImV7wy2&fNX=UPF*mytkUg*p+b>5;q=*kb9Difc0Q!dKTV^Y zI@vmw;{y9(JgLm0`PhD8mKQ5qJ*9-x>4X&7Uv0F8_cPkAha!z>8ZnLolw#F=+Zsk7 z6K@vtJR^p{83RPfk#W3@b1*vB6aTv1IL|X?KfzfCYZa29l>Oupd_YbaM(lHK(*hYd zgad;27)~don9#L50S3kDEQra&`wUz33BS>eV z=v=I}E3lBXc|lMrVV?P<3;Eu)=7Nqb$&i*mVH`(H(}Wbcu+T;ey)Fv2*;K`Pic6ch zI7|v|y0l#RGUV@Io+H|(MdMlw!$Fw&JUTcYkI>rS)29c75YRLYcWsQR_RGHS5o8pX zR&Cr60&--lX`TQdkhH1Km4uu}N>`VR5%x!n zLB^f|+8WG$#yn5l9S90uicm$w)^CYbCM8OfOfur3P3-fl)_jpTmo;y-W^tEu(S2N7 z&&oCM*4}zeEJz;+-uYV^0ELC~w~PRCqIciJ#rw6`*f6cIXdjxR#HD4tGzBZGU z`9E#u%Gjvn^Md@OrRAP$$iO)_Ky4K3n+-N&Gyi{!gZ#FxfL^78z0w)bdegrw*nGXY zmkRDoQ20jT;o|?_eh$~jR_F1WlS&m1rpv-tYk$GkaP1+iWwmcn8qWb zCQu?ApC{aP1ap4_N*p;_+O^gYj3T70Fs9?;-NhOsin`dvC>yE>Q%FwTDk(&8`&%iE zRC^5AT+A_2%}1Z63C1=sj%V}pG-DXP!MO%XlGD6rJC;&%+5*AP9w5N=J@z*@Af+%( z%t4=LkGAcqio47c%Vw-JAeY2toEHU1lcP8{BF~Kj`D%$Qg1Bj%SPzoK>KAzgkjsH0Cq%>Plu5*kIb~#G zUI4fLJ+gSojWzJeKqoGk{5&HTeL9u%MSCFJ{1iFkAlJ{_RKe)o z-5s8vpYihi$mBbv7_5T~tqtxik7i~GirU}YV45ZzPA4>tLlEA5UfrYfJTtT^CB($g zDk2T78l)IFh$pe7FD2GeP+>y|xJzkW7x^fW+Jpt&%c4VqHeBRCJw0L$2k3^c`>&5* zkZ6Xr7Q+;4A-*v2v;3Zt;$YnYAZ#Je?`?|t)q1?0i*La}mrkqK*1vyjmtY07I}_Md zarT<%c14C?_sj)_g>zZ$`Z>zySq5$(G1pz#|1NcdFMU4g&Cf4yKI>dXfbwz^ie7GO z;W$?$E=g~Bd-Bg0`YM}7B)!@!KXe`a0|q!$RhH_kRkeyPt$FiX#VL}6o6zf%_yWIB z+mD}$yWv6=d)_izA%Not2w3l3^n^um4*)z0CI*ctf`)>#202=pH>c|JCQ_^FT`ed3 zDwvA(JFii{nJN|)kvAx9j6A<^#%UD`OMoT~1w!PoR9=KKy;Am$Bg0b~*T8i<@o+B) z*bt^#d@x)`%Lz3hCKk|@u$?lNF~(q;Jf>+x+jcd?rNjpF<8ViSNqgKb*2+M)nqzI_ z;$)yqReYJj;{hY>?Lt2Do=?W>cI`B=5U^++Du>>dqD!qV>xAGvd`v9bq7~~QMLuOq zN2WycGCfgCB4VsU&4M)Eu<(nute|;QswaE4r3H8ikBQ#%<`Y8Qgff7`%L_&cTFOa0 z0x=-u;u+7Nl%R}(YdW~r@n|t;fLPqvgjw_|Jm0pB!yIPp`hZ=}sfx&{0#R}ududqf zr1f9s;l<{+bf!oF8b*qTveW3c!BX5FV9bSdU}Mi30bioCio~qODy8P+BH4*RLh#5vbcJva@E$_s|^(} z<$u%yzY)a!qpg4R#!j;AV%t%&NP<=gG_O9Y3-wUmY>rF4OefYEzJy7Keog;l|9W;*b4|mwMf#L^bhYRqhbOY9H zleHUQ{n#m|&8Xl~mqL;=SEo37b^2c?;^9It(4|q#CHTel*$!9L3TA&`V$XWJh zhdII;J~@`}-v>6-EPp7O+B=lnsSs#y`(9=D>4t zT`~pYvZ*hfFphxclf6aO{94M1dELe@=vYn?X++8%#u?1B6tHiI$kKZ4sry)} zP0_{PmoN4JuAN%B;JBRpcgY!Wt%LgaZ;q>=sdI#R*`CgV>j2&xGp8-1Lb9MhnN6}J zYJOU~D5R56^`|1NEH>_h{3=}OQaDn+5LSI>9WK3G}6o>$$ctxU(3Uv9q=YMwQiDawb8V@P0 zG+Oz%y=T!>rm*t02PEatHXZi+dvx{=^I)OS!l)j7dyifBfX>|_qXU9kJr6HVs;HsE z%qd|q6OJLsxIyzNnIa3!An0W1RRO%VoIyC_1f_WK1|p^@aMWmwFt*_nkTtbCP^@$> zFE5BOV!ylLQx-JF$wLv)G##|Dh|y!1`Bb8YRA!pzT`6@VHpRND3I2q=We z#%d_V-f^V}F?fu_gxT}vKa2y5?oLMrH~9b`1EQZr55b#yP8_I|yl26%*w)IXuZZ;^ zDFbng(7}sslZ#1sR?QTRQH(O9F1ZFW+L?n#@@zS6#AaulgS8DZI6YB`3xt#NOdW#& z3OPj>O~_>VURR4209muELnU-AhX9?115%3U`xY^Jyu3Vv$e`ct&^X7!M<1Y#DDp`G znvk6VGUKg%^ef^evnZ5hA*oV8iY*H%qesl#(FtSVC~pF^WzntcT5+B@C}okdf{(Gf zU@|2*V?iMxh=Gq|0NQjhH zEoLFQ(85qDhe=K>%vHFya91v$cGouSg%h$3zgd27WudEUcdiABR(jPLE&EeG6Yp(p zdP-4EycCw!s+rFkFH%d_JjPhpsHsZc|=q0ckB&Q>#(-+F_U8>5h~*Xo6aum7>F_i=(E^xM1UZU8shnimEh; z(3@X}76Fq|21+*o424NBZe}gXOdq6v_^^!F|e3VDTR5OB=l*$kNk2su;82yB4_B_r=38|d^!SS<6 zGypxoEQNB;QE;|OHjymjtdiHk%6R8E!uNQ3kygKv#{fs zaTY>IFl0bVWAYi9BDBuTn25aeM`_XLnE7y)Su~8SDd;$99HYvUE3Yo#hLPg z$zPlNr0!X^@w{c=VpU7grtv}-SN^y35!IGlqQo<=v6Q(wDdBx6qpsDV+iZvZSW>&z zDPijuQc?h~ywL4@eKQ$(^=8!BOyF|6Ctn=_tgFEDe}79gy6HNcA%8E~_135FYX!ij z?NSuAtBZ(Mb`GovTAPdEZ-7mlyEZs|ONj_eLRE-QS(FWOBn(H7oio_)AMnHd&#<_I zQ$2LHNMUKEk`N**X^zSU%(KtJ91oFw>ubU2nm2zQ;8f@A;JJqX-HWw4CauX-0^F#d_Aj*$g6X<3rO%eXONG;KxcL?D7~#0RhQ8 zoW0jsf}fbJFitaK%-HXHbbZGs=!tU&3S6d$2T#WVPtVUlNf4Bu*LqQrC$V{HBM4>? zqmmOZV`>$OmCsbyDMv(!Sf$J(7G^*M%qd|UM+~AoXBr?O8-qbBm|!>}7KCw}F-!x7 z;-F`Cun zB(%s)7*Ng#!PeA8QUql+jBVkF{~JVzDT2Z*ot~wOz$1@<48bMK)N09 zjYHEkjGi8Y#5yyOY8v=`vg;wiM=q{Niq9h6O9U8gpv0QX{Qpp(y7Jl+g4jZxb5=1!{Axetm z7?u#9OqW;rZ9F9E(=E~+Q`t=;sR)+t~8z4PSN&7po(4_tB+Y=d%ERM~ZR7O!RU z6_9uSGx_r2n9jw5mrl0ykC^q-qT`}7q)hkt7mR`>)(4qX&q^=eenU)hb zWC1x3R>>QmXxh%Za5=r|`$RG%9%#d-bO}W9o|WMU9?^L8%`J@X(6~Kzy9ado4vu;l z-9y2Fvg7%4Qo^k-Ma!B_6<2M#*8-h&7Wn!zD09%#Ay_DHag+SW|0MAtm**@0Ok$lQ zR;uR!5HaA#8qD*I)60<={muX}A?XE)yS@&J=+D|l{+toOrD*Z<%mFSMu+~(_Obmg& z{#wIHI1wi=E^}H=*~^t<;JwE*j?kp4rK^BrvYhf0F%~wVoD3Pqs!1=p5+d==FQ0b^ z3Bd=Q!1MEg3xJsm z0FskxV+@c1KY1bOaVwPJLfkFMkw3#F(2E0z7}qPaATVsFghUYqggL?(kJxg-=^BUD z7+9s?j6q{Gtdi^o;`=HF&w)v5bt)tvB`&IBSpbz>vuOz)BI1oxr6INP+Z{^B#&tScJ1iI$dZQ7^9Gq6+l!HVW_SE zu>!9GR2^d#w@1!=vW_BJJ{}Kvet7~^K)}RBaqu-h+vr?7ZiTs^%{Iop-oKk=O944< zvQD;Kl;!_Ln7UmK&)FxCjVWC$1j=ivi1QDuk+1XwxKaRQ?ga532!W_w)+8vRSGL7B zUq>!{8wt<@UFe#BRP1-TQ!u zz;i!wzToMv;Gc}zuDjUTzf^&Nu1^)NF@xWnK&+}XBndXT{4m!#0IEpYR%K_tAli7( zPkQMBcsn>FpH;{JGW*W0Zjf~bkwH=fZ5wpWEpGNd;b!+4t=+?_4$k&y)Ej$p)Z@q!1;eqLc%mt5;5+(ljO>XZ#~ozhnP%nSZA$~DLv5{uSUEf9?1Jb)r7 zQ?k)b(}Wl~Nv%%Os5k~nfFo#N+tGcxYDtvrDT|jsd5|Y4O$gCoI2{oM@H5W=$Kw&>fprRp;}OTD zs$=keuGd9L0py5VE;^`ej-@M+OH$jm03bQ_BykxSW6<||gfJt75zj9(k_1C#A2El7 zB;c(qn`Mn3UyZal2&}j|_>?`*9HDItCp88i5QDGo28KhiBf%P0`YX+;n2H!YRa_4Y z^HIpzOUM#;vWN_tri0QEkrXlo%svBwuL-5Nh=ptloU(W>He1{Ow$0+phpe?1oi^^d zOX9t<2fV!wW_$#>e$gec^04POU1F>K=)&V}#NV|2{p%fo_XUd=1%34PUU)7JES;oM zY`+$cFM`1HJ;*2`Xi_W`D4VldTIBRyr%`&dHF0g^ub^IiIe9f~A#79cs^a}@gE?2! zzxoVUGXlD*CRmh#`5nUHN0bTIgCo>cTVkxunn4+}S4Yaa6AIuG`-Q%YJgs%C7 z-rYf`7Rf6>X(($s%qQilc+DyUF;@(15)`Z#54vCBbJtnxY7Mi&HjlkH3bx4Jg~4CC z1Ld)b$fk55I2nzZ|EJS&6N1C1)xa~@wgEs;58_S1&|A6O0Vy~pYKz^K~E zV;BaE#}U&wVi-q^envs$YKxi}X}T?Q#$l)1tcWiIh|(6$Xi zU{!X`fOEX@T5FNBfQVMl#f!NWzz$U_lGdiee^_0;bTBk=2V|bD{Cx)y(Ab89gcKqA zneAQ9LV@5K_Vv&6%o~3W(#mBOd)u@a^SH9^p|T6CYQ)Lm5mIK*k!@|V;1CX6+*;O1w6;O8 z4YcO=tRh{x16f8&UG?^hP%yF}E{o+k)ilNBzIDzaBV&?`gVM1wS|iB)YMW+t`sO4} zV|Y0Yf$ex=9_F~^a71LI6aC zEfqyO5#jB8fQ>u;f)l?e;nP)p*Y(zUe%;B1+TiEkEic|kEPVC%^LHE+&mObjxk`ZT2ge_%LQ*@S3U;Vb1Qt$Gc znB9+@wy&{`aiwi@38-)>J&KBqeq9i#T){Qli~VxsW3}SZQkf}Hywdr+ET6U5-f8`R z#D!4iRN899z>0Q4Mr$pMZh&MEMuIX18ZEkJkNxfr4fQb8z)%ZiHRd>DPQGGj>y2Gf z0qg&<`9G!00-$wUZXKQ!La5bfA^t7b2jA=^yPXAcys#AbOpFmPFE4n0K7dH!{{Ef` zXTyMRkKbU7#cqEqiff(`8)M;IaSjlko}PK6Q9wXCEua;paGC}nM`0%@-t;x&tEXv# zB7)UeMj9vpqfv0RGklyFexx-E!Q_1}{C3acIj~DXDa%&7l;EXP0G(v>Ey;CD_>oc! z`e|DQXB$}zxTv9=kps7Pm2u3gNQq~`fltbO&vVO~*#rX)hXcmbh>}9JAcEXvMx8ldloF!9=k%7ln9n6bKjqYO_#p?`2wiQPP=enwEJFAt1#B3=teE>Zd7=CZ}c+phx zLGE=IS}k_Vn#@T{$ebK%E;DOh7XxO=R^FzZZGUk*q^j=0b?bpHG=ivt4K{6gs54#s z){RH6J#X(c*Uu})zoW1?|JzEUd{$|IsphWJhILRxMru6|!a^NXoA+|9jh5eSgJFf- zeg824${Ly+8n;8=-odIHwDu02eZc3t-=lACv2X4`$%2vsf@ICti(0fzVwqwUzJkdb zF=(XB3zSX@F)c+wj9b0L`sOH`c?peK7X&5!tvpU)4JY|lHx==lb|%~2WXX?x9&!iO>7ZfvF*?~Cpq$Lg)4N#^7qTQz=wd8 zxwz=MPNH*pLo0LtWzpCc%+5Jz0M_v)!+@A9Iuk%E2)jc>U@G%`Sbkm;#|r1bBEL+r zx(KwE4#x^j}nCB5bjyN6;DA-y8A@8$LJPG48S9b}w zpjr1|t(77~GxkVxtaT~a7l;>+KtPGd0rvmT+@CE;k|f!J*kKkCRW&nrkBH2w>TTwN za9;=i{}FhYcMxU(x_5BVOXU)ayP2xW!gyd7QBhkwBC87^M0ZeDY__PW2{Ru)%K)$- zOTsv*RzIiIoEq!OD%F*e1tSg37i1$k?;1EmgG3n4jGk&zCGB`KeX&xvMka4f-##){ zK=x;fysY`G_b$|D<1iiJJ>WdSjf8c5#rgGf8&^3Hfg#Y)GyLcz1nDoD6eQWYPftrbJ%@bdd-b+{W_yP6p zI>P?;n)>fwIt!SQP6{BkGVCYXN8~-?J_WFsB_KJrci{=)pxldSmXAdMB^i)J3DZ%l85GIV_fZ&f9 z{1cuJf5OYtUvTmt@zcv+;4mS`*p?|$6oLes0S(pN5_REF3iWwM$Yl!x(&<(wtWpi2 zXk(vVe+JityB=A9L8HVfVT&d^t1fSXf|wL7I6WQlbb5hv9?P=ed_DsZ{Pfc&tg+zj z?Q9cJX-HR$4y%tC!hn~TkM>%v0Vvdcd7K(572cUbDJ0Ao!hjqZm$x(4xP`35v}kIc zrR!CqqO&;T`h~1A%2KEq){sqor_-oNjgbXwz|WSs!1kJ}RMLZ4EsX0|N$YEczKa^n z(v`u%-oX-@ZYzXe4oSI}56oK;Eb3$k%Jou2nCljFrUAohYJU+xy51?)kJ(H-w4oPtVPu=Ux~a zZdQf&3RN!|yhaxu%fvU1)kZwWj-#+cG~SW^wUD6eT5^5J3+?vrx3!1Ag9Ow%OLq{C zdyPxkeGhx2;-35Bz3b}x7v$=Gp+a<2O%CM!j)mx52%hf9=Wa@yJPwYy*AQI)o)pr< z=|KY0y(#qiMU;|vTY&BFKW-kbpYMAcd%-@+anI_cy=w#>u|Kc434Icrs9W4L28`|i zM+4#ttddcJ!{AN`ZbZpy33?0;jDX-KkPkox5=9g?&;J4d8G^jOp=lrItS)*R3Q(Q6 zDyz7kD5~eabFM|?Ruw??@{e&r7#NpJ?(Ak=7w4)nwiqKmfBtODag_>s_Q*M5SrpD@ z@0#px7*yLmjq0(kq%xIR=|L);$TX}BK=0H)zlI5o!?@)-zI_ZFa+{i#Eoc1<(BS5LM{D{q;GTuSp-x>eP(LHU`H8g zax7MtGDQZGo=8lXrU{3`LFL3)@jAbnwX!xTF{Q@*k7)%L*L{DB7PnlCA3|VCAQ*aO z4MfI<{D=qwIS_eBnbr3{XLt@cowOl)ef_p;W}PVvobxyw4mhu~@+yi&`W9`)Dy%=J zgp@Ldzq9~B{eqg&V!J(UO)eM-z*Ok>f~Cye@9Vpy+-`rdUW@9yI5T61}=2c z>)l*V{Q!4AxmDyo;k*%k_ zmJXtJOc10N(Ba&Gg2W-Xs(;l(nN4%gouYtjs;y8H+dfykM-gwH z=iF>Pw+@so?ToOknfAL@Wu^x!mbnX7(uuf2xxHWiFlfr3bFLu+F)d2AD@Cn#!T9p! z3u4kngBqVN1npn6$ME#_H7iFP(q zi60T~2%*9Nc}TddY=wFqPs(I&)uCBmhY;GiV8VVqFpBjT?M=F1t& z<%09u87?6meNrq?{2B6MzB35HNTTMp5$Rynxu5CxAAkY>kFC zs``2dTVGZ5qI%Wll#z<6JiPPB30RgD=j9tN%V&Ih`yH2f24u#3nRf$4E;YOU%7UHt zA!>~yz+?`p)Hn_mX?t9l&8e=-k`ckf!ugnccTGgUPpoFN_R9l^>RYT$6^hKvMT%?9GnQF*J#8335H(;1T?Py;mn<6spE4`eoDx z!2{wD`~lC$PdJ31a0t&B`~ksDU{Uy4!C7@NK-rl8*o7A<+)Py9n4#8fwE+mo*&(Le z2H^TVXaLJ5!Q(FKv~LpXK)*@6JkcuSaoZ#Km zlnCscrt;aL&gOzh?f$AL3z;*cM=&;efBjYRrdjYYu4-2s=cZS$6GYAh>$>3e^&38a z{)}(mzTy0K2AR+Prw<==-|Rf1$%Vx@7^xN>^BONXV--OZYbr}dPMRF3akkn>R0A;) zz=<}k#SW{O)zoRQYepy-m@y1$<$O9GalRaJKA&-ZJLBu;&j{Wl#fanSsKi%RJ8rNR z=6e5Z@+axMN4C(`rWUa8uSyCT&IJG~0N&6jVz7OVF-DX%!h3zrHO3bI?7b>AybpTc zGQ*VuF9qaXldg_FH04N23FG8Dl=2G7rtNGil1<83L%&qknR3MWaz;#VSo0a*&R_91 zf5zM8cYJ;Oj3g_ZOGt6Gxk*o|Mm(ea;30R;!n%e~QNUh+Ch{1b-*^OCZbkU68mj&i zZ6@AVOVx&BUl6;k@^?t(&6QSY$K|@`M!@Q(qpe2QSVA^V9PdI3j6;R8d%&LG(Rd=# zTg1`>4%qg2sd7UJxV7jrc(cO3dR&t3v#3_U)LH%#x(}n}6H}LfMCRGuy?Ev=8Sd%^ zz0b1!F{0jexX=B+C-1@^_fnLI{(kY4{c}|P`{q@Dg%)&BxLkF+-;00TY3d=JTUu%8 z1DW5pbE7)_xhEXL3CHOLr{N=}@Bzo^1r82u(oEt?XuMCPY|ks*jVJrP*G*$$%7;FA zPBYv$IKMiN4Z|k8>tV;7GlbN^uEOZ+y5ifnZ-_CqL%k9S4~HWF!ezcda>D8Kgs0~h zI5(g)4|p`gpc9ZwqQ#U57!0}a-h%<86mdA5 za5_D~GvhMPIG@kRrC^$-7MkRo#vm(NaE3_1VX8q$U1P`870UWG&W+()Va#IYI%vD# zWZ^Fc+nQ|Cd4`8;F}U^h%=3)-a>m=YSA72b8JF_~A_d385r@MOpFVxkb%P7|{q2HW z1ex^t)bdx?L`1;6ERC4QAWg!vc;AX}kaM7F?F_Y3_97rIM({Mhi8ZRjV^%%?WC2Sr zACGu`dcx)H4PQQg#@8=jTXNykZMxj% z+UEnJTfxrZbUML%k9nT)?d=uwy6AoEohB*923F~}jaXB{`EtSQ>o-+g zkOolI??m+!2;O5D)C;0|XQ)br)X~vlSNIe~(Y4z7a>m>FcVxNXyu4z~iz;D)Ls|=@ zWQ5>V#ZWf))8725ZvgtUtfn%iq`n}1?63a$kIB&V!TFs6PrGyUQH{6 zmweYF&2&GY$nNn?pwYHQd#|2duSIUT2wO8jJI(-uXshWx z_~p6okqQ~x8$0-+{cpPJ+&V`;a8*@WQMqE}Z$S(4h}eGP2(?M&tgkF`^*CiCbx`Tn z47joJ-R-Pup^-Z`rN~u5ySgcB(1LYx)U6Lt*9&4FWDVJ{L@cI_W4NImebN;@*yohC zPj5sRwdd1)YqgjpRqH!a)0n{>5Zn<%c*b%3faCCj!M$MMNss43mSIi}`tLV=1cDQ@ z=QL(2!J%yC&%6FuNS6l%q;8Usot&sn|GghTg~01)Q1_$tfFb9Mg`RDi-kb)j+)wrG z2X%9U;Q92d53b%$=P0OM#%|rT`&Z%hBf3ch7rd}!*;&BzG;(a z0Y1SGIHZ%3S)0ADd0SXxS`m~iS(P#!w9CxucR_pUS_mpTtPYOVA0TJ-SU8@JSQkyO zECd{n$MzW(QxK(`P!{$52RplW)ytwp<7(uDA=G=YsGDO@&w=gxp?sx+446YCsxJqL zg^>vkhXefZf;AB`pCRi4mpzg&mRJLpv;oN7x`T+Cfz>cf*1*(sN6Ql^O3u{`3umEE zw^HAp9sXEHZ+5|r53v7tJ^61-f0geBv-L@|)TgZ8)2>l(1y6T(=8m~};_Re>xm=aD z-VmwazF`t>6kTmKA+#s%N$FP8yhjl%N?pK^yGn#!B~Y%e8*eHA!Vga8=<^?n%eXVv-pY?FO~4W78= z@yH!*E42xx!r=XvXhTuh(%>}K)_e8#SC0V3>2%r=V%BxV<$S^6aKvFcv?)&yYQJkZ zDqC7zVe-Nn(C%4u!d>zB{G3IsMi5pArf&G9p-{!OQ3KxuF)!3K=iwvrbG^ zH*O@m%4?|8hpUNjDh%(4mRmDhv;wPa(I#fSH!Impn%!?M8V*y+YSVU7MtUhoQB(b* zAsh2$#&SMmofj~B91lmFjwcM>5tTd^K}lMeOU`Y_uQFkiEtTrJSdi1&GBU^t zpEhweVIqNOZL0w$MoJNb^I%6t|Bb6)+`LIK&k~4&)gjXx_j&Uof998gp#-tRuoOc#M;#Cf3G9pl*!pSd|kNaOK*B z!EkVxB*2#u6c_k~;j$)d9^Hsc2c$Sda_oq&-S^beHA^lvp&2026#+Y4JroVDs_WOg z)9DX7;Qfe{?!6zq_4rO*WKrZK??2a%INmbxF1nrFHcUtt2miPZNLPUQom$2_^n)x~ z{rdV|FK4RkTyVV(!JX&VM#KM+>rR5^#4qDGQ zo;#q3>^K9vG4{@#vOz5Oqa3#6)#tz^6V(e57cm1|+R~o8cXOL(Epi;0S#_)tG zykHE^7~B&E_XH}VO4^*WkQv#!NYjm#N?@tk+2-_b4RNlh)L zz3QU=y0-$}+mCJqr0&a8QexQQa6l<4?^DAVG9Pm-oG~s)F~J3oFt}!JQ`7vidDPcv zVK#YG^^u1}Bhe+CFRzf4%?p0BFDCQdmQs*%1Oqr64l29r&;*f!%jJxDS@Co_wT2+C zsi_~xT=IJKqY*`U^N+8DI~0MiL6No==qIge1)Xz5&Z{;6d2K|n)uMdU8j)5__DeBh zIbZPY>sREMa6CR^90nYw5uP1jpLbj%vJ|AK?^_)SQzI3otdh1;tmv6_w1^-(b+}^= z=8I3JGLQ`g7J%3zr4?lu5QYGff^|_Q{`1oj?11BO#57Gf9*&k?I4fy!jmSPA#)y~_ zXkFo#rMWxy*LWl5W|YELD51qem#p6UWi!$tR!++Cc*H!bn`0<8oqLZYMXymst?YkS z-wK#*@3O8a5tzmS-g$&DAp59R(r!b!h9Mw?>aJMY6qidv;Q&x>Y7naDpoIrzaX?m| z4l+ke_Ud9up&&(vWu7%*F**&ss=S<{&Wb5*2ote@Q5_G}3@fJ6)Gjyd{=ef7>LT@s z@UGnZ#+>baCSi9klq<3$9x(7_BNoR!NB5e+f70G7IkMLvr`?B|Vb!zw`Us zD*9enq2FIXy6KjxuG>`zp_}?^FpneN*UhWFaJ!`CQIzghfF7CLTx&=x$*e;4*Al^7 z9>ML-Xy0H+Z*8#Cj1pZ}6l3kj4f*SmV-ma8Jy!!W(Q@^w0^lRhgYx zSz))^?+=Gf+Q&P6eI?r|OI>AEA%sS9j4@(eBHmu#AOigS^G`UPp78prJM3|s@bvtm zkZX)^Az*2iwwuJM$^eI9G9`oVk)=>`=)25scFdJ#1FU}rlpG;a;1Vo#QSSwn7;2R9 z+uN&}!VCk3QIUn&idlt~iBw9+&TZ={GF}Zc*b)VkscA$CSlA3@2qFoE_FCX+pt*x66#T^kz233NeS{0p4kII!y=o5X>H1Kq#P`K{d`A z$@UIM7v|%I`cy<`a6Fz=?!LrOaFALUXL0pa4ngDphFz9<* zQ#3R{;A~yT#E41NH@-8q>IuDl;MWi0tlNdR-D>Y$zZJDT>|T+u?fiGU5F@%iyYG4t z*lPEx3E;ZUYMh8_OOJgRP^(LHw|UXCoA}t+EUzkUn3+`6Vxt9T6 z+Zy&+<8r6-pc|7Kz79N=y*~iaJH$5GHW~ed`^TXpe4lIrJbZk*>tAri%)hd68~{=aS-JlDbg6&#I`-DUm2{<3-1TH%+5UABuKxJFBVL`9hy>o)@ML-OYEyeg zib^VbdV1E$$);}IJ8RI53jrWtxh#mLCK%1XJ@|mb;b_FdWV_d1MFC6tdj{ES*~nLH zNP=F+924gA8E(#zCpCYdRd22x#xwIfvu%*!H=>Z|Q(NE4e0hma;WqnpC-U z^|@L$WAlhed1L=8BBBYVQv)dapbe4a(s&8%A|kC|ToC*SAkQN*R~)8O!+$@4ddx7~$=nsIG;@cJ_TyD!Ev_(eIFh@;jVU zB!HcRgGwG#(k7CfItlj3QOrr-Ps#f|c;#uBPe4tSthT&4X{4}Nylxm=%d@EWNUS0D-S040grMv?%*sE|Tz1!14vq&5{)EHf zBaYKgnEW#wPap)F?p#L$wNASGl*InVo}3USF4b z^TXWwLTgfnG3eabX`)+tp_jL(}&v z>ejx*)ij39k{ATfz8M86x@YECR2oFznBa!;)yQlS(a30XdvwXS=5|>YxN*`rU#IYX zTrS9QZSI1@5E?R-l5~ZqfEWmYA&HtBo~l1AYoTbyLzWAKX2iG{5|gnk7hKk_NJwBR zC@VmYT1ug0YW@&CI#<0jY7<{mG`;ug{SE3Yv#F6*#cZqb-E#JaxBgub-Al4tPQiny z;lGuC(9W@){{Wh5XUBPb$nSdpxzuZBzi#dar_u=95BOHV4rP!|0xx$Yb$-`D$-W2? ziD|%lXtIZzqG^Zyl7rCqvmB2;Y|n)|k~T3DMlk zs_KC@Evek;ZZ~70$9rRw7>5>o6N8hI%)@Md&I#{7={y$hfg>jJ|M^mOoJi` zqRUp=)S+$VQ>p>f)d#>JmC>>3OT_^akdfOS>^6Pz76s`)k4n<3GNS7#K&NdsBOcNz zsR)Q14%4Z@ua$%)LRgj+-n$0Ne);+ZDHjaG)X*ipb{X@UAeY&k_@+H;+2AofsAr5} z06S`g!<3R10THAWu`F8bl}M;|zdCsrltOJE?VM9~yGhAlgjA6e#ZIrg10ZP`1bWHmUY1}j(T^PgIr1aGsOhW z7p{^{;}0Zl3hHF7#UZzQy*2}m98gF-0bEoAE0Gp3Ro`nZE>Z+JRr#qPN5;Bb@cQ*D zkW>LwL~uHt@bvVAd7dExq$DkBxqm!n26!x=6Ary)zy znB~j_V*SjOln3Quloc_}D6#@PBjpvt;PL$Y1ab@L60yV!ykmspfGj{X%k3mvaR)T; z%6pG64$aZBDr9s8!vadF2U9PvETZ;|nN{I?0$9yWDiqrQLu`((>j78{DUZ zs56BdvigN~VzWJO#PhH=32 z^D`VfoG)iM=TVC4@?Tz_F$}s6h-<_&O%P(ll#$kGntM$H)IwjST>}8M6h5EdK*ShF zWVVSj z%VoCjA{valmRaA!I^%LaBS}Hb5pmUh@oF-_Xn{-4IYnPm+{j1OrvS=KcdU(&Q18B{ z_h8BDnwWD0isloLY1?yL5rVn{GJwNL8?NK=fYafqy8E2rP353F`;3?}LR2k2xwxTb z9Xm_xtkcO}cjw+23Sy>8Ij1H?CiWmICe2G&qbePGqTzH<9ta$77RgpPRp0NhtWn8; zW~dXwU~*Mwe3ccYWDEm=-2fj{&s}m=*sZXE@s7Cl@Q&d%A^CU5GBofNsN$=CI(g*ut}5|iI^ z+OJjzdkgjNtfoPCxnPg80eZMrLvd<=5Mi&<+7tm@15j!dut8KepRca*t<4CL0@kUHHZ@Ak~O6{U9Zx@g`Fb=WKus}n&zRO&vgx$lvCUzbT; z(d#DpET!EHWRn3d$k~i}ioxg_R--EoK}@TWni%6@#5fMfB^#4H zHO6}pAST^K>jA_FPIKmy0OK0%(C3|{a*Qkf{onr`!!WjKP9t8k<N5$ z;2^8|>nC%H(^Of)+kA!?41PEqFib}f1qd7lKiXc|tK4vyl*LVPn<6X84+RCO`$Pvc_~v%iFAH8^L1;9$A1jWwYycNJ%hXBF=9MzJ7hfe4cSS9?gQ6ah~5a zZu!d_e);VeT;^Fh6>-HfFIbk8x%Ga*oE)aTvxC*`W255`;9DLF`^DX>-PF zMA1PL2AMKQvRWrgO`05=t+RfvW&p$l@2ib^GOk5YYha1W^~hQG`jo+bg?CCCTl0ca z7LX)(CXB;~l65^)-C8w)P%QNmEi&1`wWw&Z&kd1qmJ5~?;n+7TWFg!CSNn21`>TQi zy~3v|%A||9y=M8-o!k>_(zaG}?y02Y3NdaPdnIqvHQ}48OP&p&jhrgg!)I#>MAt;y z_l)YOiR%ElJu1qZms}cg7R@4wiQs5bDTvkS%~oUEgeX zBMAlBzE}hi2k!2!4vY1ScF)wGxtOhKH!=#@#GY(+{A5Mloq~?WRA^mS( zzhRmVIGv6-9FG`GzLyP&NlAC~lT&mj#ue+b8Z=w|)0JdbvS2`fO9{drE{u2@CQM<{ zP$B|C7@ISlV=9zkFk>J}$e2MWU@q`3fm}h%3)c9C%jGN9ctOky7=UMoLdGR1 zde2ok>9!3PuqQ}iu()vqE!NOjlI&Yi%@G4Abg(zskw*KY#;xL8IiTzva#6MZyGh+|gKD*6C%1cX)w87v=$ZJw zw4Ls)^xjz;$W1`A9pK)4UCQ=2)XM?OjtAg-Sz5otuF5xR34yY6C+j}|YF#6)GMDee z^tUL$b^I;u_Tbpj9&R1;Zc+k;_E5=gmqU+SAxzJ1nq+Jl^hCXEgF2~-Y(zQQHzwbM zdiI{sT`E=$72-ZAi&}t&YQb42cX5#Hkt3l*hr$6;26#Te@cZET!bu#nwHzGOHD4tdm17 z2`JFQWd<$lx`1h~?b08{P+>hd1c$r5o^5Qcs$`SO)c%voBJD?7Mv)+2Q9=3^CzG< zI9Da4n&u|75o_5T4$HErHa{u4!3HfSlqQL)=t3^lHrk+0$BG2NHJ^F{FipDp$dZs( zTi4_nrC6{~PKax^W=*I5oW-=@T9k^8x|^T6sL51;HpiR^$(#za2(p;CSoBCPaaBfq z_K=*w0f?+qc}WS&s9e0hVEjB)T7 zrwQXQBCZJ{77kTlR=d8XYzndlJt1y3&zcYg9~kULxR?>+1u-rtvS3MXSmGILe8alF zsVuZCs?agGo=S`3>CRl<970Mhh;?vrO%)Tu0CI$6-`7TvZI<49H`RUIuTA|80VDLz zsCtZ+`+Ta757oFm-`T!Xs}*Ip3eYpYs9{i7BZy>grz_j!y!qbnjkWK44E}o??Hg!c z{&NbrhB6cG#xK)V1LF6(^grmrbT_vi-zDAM=p0+o#vP4hy&33Xm{22{TrnX3nCHJd zH1^q$kK6SDb=Jtcosr1j)Bw;;3&kCc(CHxw55@>j2f&Y*f=d3Lj-T*+`q0IO@tbZH zf?@FO`D-KMoP!T)l%uap_5EHH`3T0a2eL^rEt`O)?TI%_*E$ttfIUK(KwkHbt=N(@ zU;Q;_+euQ3;H?HFJF*f}%dB8~?I8p>g04B7y1Xry8Oyrha=u`Gd(&$f6LJa#TFf@AaRd`mUYa43 z5@Laz^!do5hKU(c^m87D0V%DB33z*Z!!k3TK^Vhm1WLVDNt9@rb3~D$LFPp2oTw@h zflxtA8ATYSWX#JM=kr(0^BZzmP-sP#1u0z+(}I|0#8e$E#dt*~HKm?I^~hjH2SG9g zg?G-}6mv^|lx|(zpCj8DaFt(=EmiN@E2Pio?ekWE`?cy3p>SVNsnh${T$3sT?3G-- z@z7q*PIy0h_u6Y_FDd^XF`n*P!vpw1$>cS$U9Rez?1Gy7e^M8B*TwHzZ~w<+7!Pc4 z<$>?PA5aVY$Q!C;tSYM$dB+!_QG^ZlFMr^f9)tjC03)j$iCNty+Dz_@@aHkm5yS8T zPbYkO{s(;e@K5+~`V&4Jf5yP-d(Yio_>VMqZE|Y{LB{E}X^w<23;`(@+xsQ3aI>Q1 zcdmZjg;tZ7oRyI0eXs^#OW6~sOI|JN)XDeC&Xj|8J_2fMu72%B$e{ntY^iz=G7+#>r{p6hgo%$;g6AB#Nv0 z11#q=-d?}qd{%>>B7~TA8cnGn7a-=&BBOIIrjALSuU1S&Ha1R6plrMWyY212?SGrJ zjEt{S9UikW{gWXdj!ojp8?q-NNI63+h^Z97RbKd!@;=!5q;g*r1D6`N zoEES*^C;-5qZUNvGgxf0H4fu6B1^ywZrnlV)B2)WsiK3$XPyziTGqmS~vdpb~cs@DC!N|9>=fbF}3 zjJ-b(;W~-cT%&~LfrZcKh(tw-Au;cOM!Zn$aia+u-7_Pn21Pj{_dl2h#zl2Xy?**k9ct{ zN1;C6x4vfi&)y8i3v69T3!wzagK30w0|x(u!}t*g{}CUb{{f#~{sB+ZPdJ1RaAnwi zrhVk(qmJ_Cf0r#DsFxj9lGjGW?4T|Ce3+;S9`~K^UJ9t;KB~)hUZsEa&w5!{pGu|@ zGuT0PYbvt&^((0=jK@Y6sz^aEJFD7e$IjTxoh>YBhzmp~51rnpwti40K#kO0QHmh= z5yxXNVxjUT`XXa`;uo)YXMLAnKWLn^htw0T3ao!`Y1=Ua^XC()c(WxM#JvU~ z8QgtWw<=dA61!jMbJ0c|$)%c>IFJnR;ebF#4DJO7_W`HzC!A{GmkB6NjXba=ofBLI z@9)52Tie+aTpqRFN_rE-MIGg0T9I;6et-yA0D%Lu>X(^QmjggetG=aE8JuqxwmFwp z%!oZ=%uU6?OqM!khbDV$Nnv%xu-6BdnplKdzt7@=>G64B1k2n2qCb?=ye|tVn`~;l99{>P$VOY>hY_TvPvk` zDmJ&~r)DTr6ssmELUf%`Y)9{`QE+BpRI?t6eHJB0q^KJ2xK>_}?(I|2X{}B21l{@4 z6(f7w&h3V@Ym?IU_uA=SckzG&!@Gjul|$jHAx+MzNLcl~a|rOkx7CqO_u5nm333+I zxtD~I971KRUy;t(4PfWD6T-+{1TuN5nCTWnyc+rBVo8e~;g!8j^rH7Ql}%COoL2-O zsX0P3@#=+!;O|1eeO%#tnnfdD z@WT(2n^*t+3vdVW=!h6X*iHVMhVg0=Z@%`jpL)9q`iJhxdSgpzoP&NRMte&Hyqj+M zkoZ9j!o168=opqF^*t+LjA($937$_F+%pctCp;Z~#?#?vO#UONcu?^+dCDzXgU8qY zURcqV7jXL}%&FM^PvOdvOLP9J+2GXe=(h=g8^LYw0GG_SeUBbxa~Z3yWLoGpyHaJw zSEl*iQLs%BZTjCxgcVs(oxU~zy;QNfh*hZ}L@eXn+2K7y zph#MDQ&}wsew&_~zCLBk1prFa=4e@#D+EBzY_3C>>gT8?HD-rfJ^ES0YuLM%JO~n$ zoRP#(h8Puc&N`WwzUUW)^`-wl)TrvKdt2_@1dL*Ot?2*ZZ12;a$^k`^`BV&;EwVZ1)S8ElpjR2;PB}r;n|EnaB3XER zi=%Goa%I;LmEs`pyrCReGc_Y0EjhbX*<=H1%Wk@@ zdkIeO;p=z)jBq_;{6PKhPPBWGyf-(^{f_G)U*LycgV~Lm2E6uZECU>kaCAg)Pnd=e zI30e%)ASRL!$*wn*+QFC;w9C(ch^|pQMYv;n|;7&Wi$Jb!nTj+W{NqH8n8?C>RVl%++Ft? zxsmfq-N{S!I;TxT3{wm^XO_fngVu}sIn-SEmiAzzFZKCX$stJ72v-X)DmI#x0xa`_ z%jJS)SvIfrN~*MbrP{~VeXJ6vv?1KpX7jlx$Bp2fMHGD@T?gc(k-rYW7=X1lW$7l& z^UC6s9?UE9K!|%qsN4n3v!v%_SZXQ`Db+@jL{)w#yAFD!xWWeis+Q@ zyv0hVCYawHT_Od=av0cG-j11ov88L;@t5!Vrre$(+aCM25xus}y+_>Z6F~cac*{rV zBW~p?RPMnm?V)hH9&D~Bt$D$BNbvF)wNS+HkMa&`;JW@$zIMnm4|3*`*iO zlm<0)0D;7V5Wp1RXn=P|jKd3#(+4~qKHxZhz~oODX+mvTKy`L}yP|~C}a7N*5`_c@MLpHlqHGneKa)$uO)t8&uHB+Ffb55OuU|;ZR z1ajpN>^^UTdAYL^un^%KcTR+>6?*-*hr^+HFjTUk2KIP>7%!(Mcn6f?cJ{o)(uK!gml?0GuL=h%%Tcdm)0S^Y ziyAGJeaBz6{UY;bNMfsN6vw1A8BLt79rz4(UPWa0|e8PD2h;hbce#6__D=zaltZT-+ zT=2HOA?8&LqZn;HR!TJ&s|Nseu88$I7j-?TGU#oW3P$So|7^(976`YmC$zmF_zfQlk(@+ohuR@{;9UAYSGIZyXc z3`181H>-lmE4r^>_%U+1pg^eH@)M{wP^F#yy9S`eA=8ic7)k;xH}Z?kt>{Nc7zBni zN4zaSs8`HgCmsC=-15iCcf8-pe+RDm(bsYPcY4|4&EF-lBsf-`De<-fkbuAk9L5(s z9X{dt@Ck?T1dma-IVNc$E;|@Yy3YD8`SNZ)K_4{JeFjGEl0K{2ii+y&y;`Umk*Owu zk)T=AGDD4XI&$9z@v8^ATA}uS_#4B07<>n1mK~W7t;pDVsznuVO+aJX+wT1O&nv<( zj+6EiIk)Di|Fu}A!7xr>_RR`cc?A}zVvuo7+JwF4loGPBvWH=W^D0MNQ&NaM04PD% zzH1?6W~3Z3&oh=~w%{We5zg7?AUInRUJV|qai~lL^1d08Xk@c*g|W)rQchUs1%U-L zR(HtKYpsptsZpU21=$zG*%bt{r=rKx%ZtVx~n91CKK;2cm= zhNRRQfK&(vgZ-p7%%wpHQ@KpD_(#99rJPqv%>%VPT4u-wiKav3Ki}aui6kW zYleXoG{WQcKzW^#dOzaaETcu6lm6*@G@&&JrGHIycP;$ry_HjWJ$b%P2yB+72=lo!z zZ>Bo$ts?dc`J25?W3fJha_D_Lr|}=;&JEKOG~@wtaVtOUZ?;F;&g&1bdMjv=3LqIk zG-3)T9Kuid`1~h)IQ@i|<0l-(XN=A)XT@xUi6B(AAdH^9`Ui9-ZR!>=Kfuy#J~e12 zqvRS8qlb$I2XSXwqf#@0Z2SNt&h1S>wl8-zX1U(+_2EL*G)JR{T_aAZ!yX{cPy?7R zIbrkC2f(ZcEEDUR0Awk2u{9GZWiUr1QFgyJ3EG$y`(m^AAaC9b#uBf4NVbHq8hTTA z%cV$j6q9a(u7svyH-hutWJf*1(G!NaGoYdyB&3gOW$(d`%-&d`UgsRhS%{Xoc+Sg$ zS65JyO5f`B8U`g#4t`KWnw$}Z_i$+Etal|yKx}lQ%hQZ-@@_1TC zeEISPZ*N~QFBkBeKxD+4&tM05PdJ`NoK6Q6@o*kEJ$bOt`1Lozx~ep=NNPb_WP^oL zSjg6f>PT2*Ys_73TI%^ITTY8(-XWKL@vrvOBKKJQch2I@L~fhb33AP8xpR8&%y;Aw zbFE)1(-kor?aaBZ(X?Cr(wzeR9^2qi4Wb7~!r#XHzh77A;jrDaD|~;jQfC~}eDu2o z-?cQZF{P>Z+^2USf4ZqbRQ;ai&P_s_DNVa6WX~3@Hpq{fnB8_!Sp9mtPWYC9^2bOQ zd&wYL?BaEz+k0rhjx;HREP73YAK-9=qX|!kkNEWApYh@J4>*O7I1bP7ZiIJ(+D{6> zlLv8WISvhwwZ{{DUxK-p)mgHfZIEjNAVmX7AZkaeO+dEa*G%+lbB{X3YoSez!Jcz& zll&H=>Or2drq~{%7WfLQuj`5s#wKOs?%-ulKq~DEoecJ^<~)^5NFaC@Y#Lmffe^qD zS=BS%p4WSw*x1Nm>>R>4f(TfnX0=O}3;e1-2tK+JGn;kK9xxI}}v9h@6f zRRBVY*_`G^^)pE7{zvG^kEJOXoC~Io(C5lI11TZ|j~FA?7}fMB1a)#Ff_EOnFyTyu z%jJT!Trhf%lyqx9jS~bOgb}gKSQ3MxW-w&geO)1U&tBcpotM3DY#ddBBH)d7k0Cu57-3`G%Mm2v!`A2fTcEg7>;Ue0n+Ie-8f>j!z?g z{q3*#?bj9al3IhEbB#Cl&Fz%H=6JYGuP}#2bSSZOswXzo^cK?J_Vl~F3#pL$6^G24 zjeC5gJ$gwuo8c-K>?UF<0%p0x-tA%!eqh)AJvigqIqnf*sP5(a z;#~?1`li+t^go<)e-poAA1!=KJlVf5M$7De=gC?MTGu$RxsIVk-Gq_{yMRC=27ba} z`he5n15VR34&eo(J0ZAHJ<3Z1`VF=fi!`UZ*ZxNxrJ5ASS^#F*rq4_bblY|QCNGj6 zO_4o9(;|({H@+0tKG!B^BVZUuEc4u0?=?$c7)BfpM@wVd3VI(c+!ELzbhMH8uQ(8o6-u0^d7WR*rxspNYv5H5kVk=}PyEcCF1l4#XO^ zY9D+A1S?3VVZdokcimkyM4@a!)3O{%dJ4lHdtduh( z>nG@f1HmKZjqu3MvM;iQfYTlC5ZV)cZxAyoJFcvP5ynavHFqH^BryY*1rQ_*1t`J@ zxgc1GPm+RIGD1q`+PGqgYJlV2fMFOh4C;~48UUN*J^MC@^eci*(zksf>U5lwrcOqQ zAhIarDxs8ZwKfa`o}Q0zp7C~hMNSFBDPRl(&cmcBizx!6A!sQ9U%$>s>4IVS3FohG z02NHrfPebue@2Wme*N{Y`1QBHB9#>{FGsK&@$0X@;=ld({|#YqIGrYdGXDGzKjSZd z`7=Ize8OM;{3rbO`>*)@_h0e$_6_T*_Q-xXfX&+1IS)57L_*_geE#;OHMV-~Tx%@X zI2+pKI;Ym&YL<8K_oF(nIfRy-6b@8&f44OPcgD0`({`_3Ts0egqtMPL?wW!f2bvzJ z+}>X=T*uOXZ@}!Y)1$(FcL?9r?&@HgAJ(#+4Dj6sz>0tW;&1oi(hk4(Cgt6SE_5?R z-)bed=iA>fpMchCh*waQ)iERmAPPYxN-{t$$p2vc?Mjs1$y#e*^NKc z{*3Ks&?!?qNCKRj5W*9VhYxr2JTub-b!R7iRwMvL*96Xagn&*}KszhtjiF?{XF` zl6HNw-MX4mS@Sb2<&SlVT9f+3rh9Zg{tzGxgEkwsM~*Rp-Im^_#hz{TKoz}4vBWvO zUTABBFbp^x4p^2m{5T+t0n264JcCj|nSfm2NfD16ixs&76G1eus`4H~+-^j zsup`B?uRe63Q=O66?~L}RDdi579hrid0xO?c@o60I4=uI&KM5|c<a8 z4vLVNYiG9atz!+2N+}~1Y2-0(;il!zwvp}-*7jjz*D}A`G(g-@joGE&qG?;88&&QL zw#fUP`mA3W^dxfG0^)ASee#$iacu*<2@j~_vh6txbs*~9XNmTx^tOK9(Be&oxOt=O zGix59)|)EAe{UlETU7$zYY4u(H=##9$mOOJ>IjY5cs6LO_@%EXxIJ%E;>qB(>r7 zq#g?MlCdli%UYWKuY6a7^~ZixWr)JeojZ-w)ef6FBMXp=GEc-@6Jt~u|8lt?7vOA! zNjO50lesNw*m=yWnGMO-K;{JJ6`{$wAg7AfFx=?PO4;O}mO?7U7}wRqtV&0XJhrYY z<~W0xFwbYaT`qV#C%im8<7qlznnsWVN>0iJI1T_!SmTVGSB%pLBEh%USA72bD^iL$ zo+iA!yx{r60l)nEA6Vmx<8guyK*}?Kj9eI>KmUgR`0IjsJ|o5z-g|ub@PhHDBVJxU z;&^z%JkQn`dAz;7HJNE$vmK8|plAj~GD~A;IR`E{6j>oTUWMS?;d==>=KFmjAgYj8v~r7m&OBv0hQo`}Y&|>H>MlDY(5Xj||!O z*Yf=aK>ij>-CK*toAka1r$sYgY5GjM%Urwz09o4IJ?AL??(5(7H-arO?^+Yc8*F)Z zmu??|O#zQ~{qJ5+0fuluDg=iCo+mguAowE!A2IL|4iixKcESq7iqSea8|e)1UjO$( zCTbU{am2+Yn(8o@n~#4juBF&6(X`D)bUN?RhW2`FNvs7}C4bDl6wqR1SqW-H2V~J5 z?z*m~i!bf(ZiKh>PJme_DfaFLwShgi_a4I_JDx>7z|ZG5 zT+TCGFstD(Y!ep9)*BA&0yqpH=TVH8AW_4foB+fb>jIqT74w2E$cG;6{jWH_w0$); z!Y@6R3`=+Kcn^?gkaqxkMMc_LUbXgY9>Q5HH^MPeii-3UC1_SjW^nrJk`t0&!KC~M zm5maJ&5)`{Ga`~OG*uHB`Oi5A&RiW9>P-x0kMq1>7y^dLLnNEbRWQc|U%$K}tt-;$ z8PhZZRP3{h$i-ngc#MY=N(tJK#S54Ve){>NH7gO{zI}loMPrM{5#L@v{_p=gob&kf=@Wkb`Oo-=fBZ)<5x#u+g5Q4s z4X14dT7Um^@(En>hFGl=dTj%~v{1)Fz;`LeZ}|+K1H_%bmx*Jd7E> zCnJH-gzBeza{D8{%7sm3p5cEiQgX=Hv47SBrzSgKyKupdpKQwV;ql#rb*a{oSZ&PcIXQ~`hn0LLd5(wm!V8<@08ITmjDC$HPfi=}+zsHmRy^nr3{d7^<*9~wb<<;hn zP;@^IwV+<25>5*NW7e=Iu;wQ;C5RnvJ9S9Th|7$e2z;2dNq}1UdbZ35Q$slWNj-VB zWccDXVFOb$``OvORw_IDBVac(qCF?Q83V-(C}!-7ZJumTCWe zjXvEu$@n{vPwy&qeQDmi39pq8cRIU5NGssnh#|b-`SfReeEtWV#-DK-KOyi5ga8!Z zyvda)WmUZt6j3YMcUH0we{-`3?K|<(Ni>TsvdiYWR||h#frtS3@l3`_>}$I+GeIgP zV_s*>^9Ad=nBmHHbLX6!B(ap!KDqPzu5FDGYea#M+9RZMF z@NgDrgh3bF%(8>o>%SX@Q5%&mGFOX;gLi`^H>xGCKrL%8^U?~ua}Hko?r^P>e$LW9 zx8^U96Jjh4G0|Q1s;UP+YLZ@Du~>p&GU8?dz}_Pa6G|$U@vcnzlm)r$s51ABBxLl3iEAnsg;4MWN_Z%AMx}n&(AK2}2P$?=g-erZK2LLX0SD#=wk} zldfXc73|f+!i51t2pGo^-f4kzhP>ob$*J7PX=Uf3QW|2GvtX=YP`| zKRttr;QaQ6H7*da+4pL8#Tpkwf@UQ)v)+r$V#Qz89&=RZ!1MVGc7l%|U+`c5>;D-k zE$SJu%&k$Z&8|viH&u zVc%q^81l9`2Tl5uAC39tkSzR)PMRlZqKx>3JKTp=RZD7-=3rUy1A{TNJiHjwBhpZ>Zjp&w$o%hjF=H#aHK?X7Xm$h__}ui2+H zIgjoHBlXk5BTs>}0yKDdf5hqd0WVKK;WU22z)x^Af}mEvt`)Jep(bR+8*x|GpYpB} z;|5l0k5#Vx3+#rvk^Nj%0;*|l*ujEZm%VrQ^WHTre9b|RX;Id6)`U7O%&w)OEz6>s z{8EsUP1Nk#mrT9j39%GKN<3MiWn?S(1i~t@)jt> zVm83KGq01Eb55mUc0CNwV)Bue)!r$UgP^ z>U%FagUmx;IW57y|JLlF20`^Gnl?Tf8Lg4U!#Ki)0U>ydVF1^p$y~6;)!fq5unH^) z!L_M41dk9#P1mcCcM-kMoT`m#WUs1C0I~0jl1Lq<20&C3Nb&JfA)0hp!{(=>rO;N!=SxLn@w_IAd%*Uxx< zIpTl$U;ZyxmN)#b|Lgx1F|8P<0rPxrDUsd>0I6NCloG~qGy|!O|M>TR*D$Hz;X_cz zLX)8$jt5;WEh}EnZ+72nVsryFY{(0IuNxAReUqtQ>N_SOQ-!a;0Wa~S`aJhFA z3yes82UeFK9gwN3E7wZ5ALYyaagH7JhDJRC(UBc@SpW}J0D_jkeLWdB|9_B8N_Yn* z*)I6~-M1K9bNfPX&`oJ+eoX}+UEsJuiABoZs`VzD;9*uoBcN;tCf^khv`p|jYX@ms z;XnEzN|OOHF+>J5y2n9m_YDg3L0WkwxVArb)nLT`Hu?yJu=O{0f1@v zQ^(ZrSp8H%0OPiI?0t>ZWfYiyKJ7`K#iE28VNmv;s}}ba%Q9O)PMvJ)WRY62c241X zwe(FEa+46v0@o)GKa3#umVA}~3hn-=!9hCB=eFOihkE^{jALjfKup}ASmy}Ng=RCn zB@|Y~z_o+1rE1#0W$Bb3Ox+?~S^p^&tZPI}Nu`X5z-zVfrH1h6oq zIVBnrBbSUdMy%_Kby*R!{OV$`)?^GF-5|HzX%SF8dLhzW5M}!dY{QQJ@A$*ff$H_kDY|VCVXMkhII0aLk5Ksi)zJ4`D32*V%%$UXlo=z_~&u5&M#nu7b zeZRJKK*`jtR%KTg#IiB2&)a*e1Q^NnUbDbNI~G6WI|WntDh;jW`qlng-dEw)F|bP*yh;nCU8=3|Yj%e}Z3LZCNqC(%GxhLh z$FM|K$i9m_i`-1~*YNS((V-P-G$w9!psV}rJ=9L`OeJ*7RF&<0Jcjb=UBXFw7{MMo z>b&=FKg=52>Hq|c;e^pWA@BiA6C5Tu3}7164j69B-$nuV@5v@f$b->ELU6>QPIaH2KuLWCK+f!3HH2lEFAxCU2e2EO43vox!hq>;usC0hc2xqJ zAo!qDrsEc0tc9MtNh=#vx>^LUHZ2Zp$$EkmGf)WPm5@h5op(C51|!A@?1)q~mwq*J zo5dM3H4V3O3?BvzQ&xxltW)1IFIeM>RATc>fT1QiIusGasEKv!x*{h*Nw7b-s%=hb{9lBrF^>aI0{(nJC9UW0dY6iq zN@{;6rG%6O!&Jc2L6iJs`wnY!w~>^YEa!r`($+PIDrF-ID$?`e#baLngt*Q)pT8lO zgu^t!IY!DWvaJxD59*6SWPer=(~5PSk<)^dGawpNG)@zqUtaKZI;sm`S@8RpSBMDy z{O5nd+rPcx_uqd*De6byoI{G*Sk~fG{Vz%>YG(|x)JwgNIcAe#5`d)F-Z=yWPzVTK zjmVw1Sm}yFSwd(^qW0B=cjskVcuTMa@Z3`=+KfGQdL&fU|_ZoVDNuurYLQG@Nc zDYbb;=dwv%vh6n5^r(lOO4~E-p75Fgxo-;o2;5&&J&~#T{clYZ-FPnah5t5iPvCp; zgn2I**#zBG-iaxwnvkmgcH{E!jhv^xH^!dgNZ6c~?i=*p#)y`VJdB=nQ=h{*)ST{X zSVrV~3`-;b6{><#)j#2pv_rYaNKH7D`&jqxxw|2a6Y$^*u)rPi*osfQlZB z#XP=C&M2J~FM*o=I;GUXg=~dvPzS%Njm0)yW@B@gQku-ivo}d!!AfrP_a_FJAw~>~ zYXrO&Xa|Q3f}{jLOc(}_;9SdoXJc~{u?j4sat_o>pY5PB_!njYYws@SqPD6AIadQ7 zL%GVLneNIHVfpT|TKl;8&sx+w12#R$W zsgVCBH;1qWD>3Pc#JOruOFP1$Ugr#=jA95#E(OlAGuUb4m8HN*W#g|PW+d;Ct+16H zDY#e+FU;y%Q#@13YETqBauN*30qcB0iYszi;fe64PaiO!2A}}baKJEl@MU+86t58@I$c zjSGg_MAr{PkszprG^_2i%6rA!KC1_U-uo5Bm39j0dJaX2$9p(`bI?=r?Y2rPJFNMR zoLcw}%e1djyx&V*9phB15gB8o))eC1qud(KQ>QYsT+8k}Q)CG(T~NBUvj(75lI|l_ z!JYL2ZV8Gc)wR%U-$n07G8=fhH}Ku&A#bExm?w0s}SD&PIBe>^n#7EbglC7g9(jK;KE_qB&Z9^^=(Iy>6+i^{;jV_b3|o)(m!#5P?dDq>N&* zvh~mzOnYBi3ZLFn!6v3*7&U24R?S+ExjEd`qLNeALR{3o)4KrjdH}?ARnr+F1n)2o z9_yMA=NUW#)9|F0%Q0ab0*%aXgrh~`FpFZGU{^=j_?duuHgpbcJaGtQn88OX>>jiOH zkm3rE$`+5~02%{AAh_TlC1Fh~=J||oZ{P6CUw?%Q4o}Zdc=_-QV8AcG{s%sO_=x}V zfBG-@<(I$Wzx}uWhV$iu=a(1w5SmoBDjeE9Ap)>~;H-JJ_-nve{tf6*ehxHgQOx8D z%+01c#bnpg=@0;Fq*_?&V<`pVoPJ*mw==jjWOwtes5J5GGrkR^%>|ZP8E|GjQLFfNpFKie3vk?QOk=*D??eHjR={;h`k3k>%or!EdVGWkaSyv02 ztKOcZ@ql`8C%TdDe@HDy05_|KowQHnLEF`Je#X?-LhHdaAcP|Z|AcWkVf0V%Jb`5Z zm5ta|<(gF*b=y7CL+$L2#P?vo)^>Mg+qrHsK}8(InD=Pb!?a_`SNUAZ>cX}$^1J?; zbP7pDcic=2F)#I;1Zzx4c?Ge03+SG{60cxc?+$|tmdsZg>QssVg zgkwfr7BD$D*5thTa)$Gv$xTuwOJUTUcjp8AFxn+%tSKo|-KhyvjvAtpxS~3CFI0J= z6f01QLP!_2S|f6qsY&31_xtok2{=qA+bJ3;vlPreXd0VriWg^=tV34U+A3<&50yj-7EEyoTzyyz_8r_r;G$JaB*NxcBR3K_!ANWbz?joLI|2maGbq z6^+>*LO{s{=gY;=7X7m@gq?It>@%ssR{H)kf)6_d=L z29}Q>J|NBuK7Dw>ufP6+X$<)9|NZ}oFJGT=JdF7G@)5uO^>_UK`xpGn|MU;=p7Hzd zXB?&jhQRps_qW!B$EZnwjs??kLssW z;q!+tSeAds<#O3Hnrd1>;C`&tCN>YkA7k!Bl68Kx^V;UKPFrAD$ULB9=WiuOSg3m zyHLYQ1kR3s+w+N_-cQ#>>WoegOuLugfRO%W(!Mnd}erW}D><93~~<_-4Cn&qy| zLu>`fhoLzRvXR8XFmy7%gcK8yqB_#GCW}$V5yP-RR&}M*7+Qxg42^|dO_nr4Q78Y} zB!mz&$SF!o-Xr_F&YOPTd!(E}Zok?WdGEXNpZihdv8k|fGqflfvylz%$|Vw{Mu28JGEjVHhwk7vxg#^Upuw>FI>?`AM5s zY!Syy3afLMQKJZYz~sHkOhYaOJU zjtM`!JAWuMlmcm|C^cfC2*1-nFzzp`=|;jzoi_yY=4{y(5PaXD4c8%e4|ZgVB<#uS zy^TH--`e7K9JziNBv2;`6dyoHqcJ3BEv1( zutNpzNg00tk$B%L;A&;iAqwxt8^0@x+HNUF4&DzK#|ek&h+{ZlnhqG;h!6$~Fyh_h zMc;W!!u_C#eJ4&krtNhzaGyRXS8<=xI{kj7AhJ0tR%4t!*T9+}A^5^51_M@RJ_t}R z9tX+X41>J)ouw~>iF5+XsRacoWUg|i%O!#s7!T^Q2N2GeGn`V(O+puOJU*k83@=&? z7?$*g3`YR*U_1n|;$+$7F+ozsFsc=BO1a%DjtC5=M)nl~bRNPUF(u?8aDck25gV+} zyTd~u$c0cykWy3_KIfKm;Jn8$47xKlnU+2V8<9=d2t*FcJX_-2+QlMo##PN%!AP}^ zVcz*3IVCu^2^Hjr8ss19J^%0zW@wbH6S%OM{HWr>*|gu8I(K+8JT9 z0>X|RoOdX(V96_N?g7D)1eHB%FtUa$u~*V$GH(L*N-m8#AxpvQ`D`XS3;yz#zu?Q4 z-|_X!7yRqL|2uyE=^ro*1HQh#VF-*5&rcwy#!FA9XT)?t%zE#+z$l2wNv)3Ok`uJ9z==-NP;lA0N z6uM#O6W;~|{fH;cJ)ZbIB)6gnkK*N}+11mnG;pV~(_j0WgB#Sc%G>{zjx^S#COwk2 zU0c!qSh20l$_;JUXAsasSx23UswC~6_I(GVKZM8ssDzL1*c@+rQR4D$k**0;!3PZC zfMJ~A{A7Cdpa+|<#Tajr$DYnw|z8L4Pw z>^#qg3V58)XUvwWSPQ+nDCUMV}*RZh=?F&41V0s80f)Y z*uf702WG5m#JZ}YVi*Pluj?h}2>;{%{Xg)_FaLoxp7EEz{0UD_N92_7`t1#W`q|;- zp! z>DGOBSG{)}HXr%$m=oYu$a?8aZSxx8f#`w3&8@zE$DQoRfh7IZf8R%+`Yutf4*^Se zqU)ewoj8BUHToeUaBcmI8|31T>T z)mlH`ET!cSR4##Y9?Wu+d9BWLaX0zroUvL+5EJ3)^aL05_m_D^Ou50p%d#pb;CMhv z5yLQo2#9e7inAO6jiqJ#EQ@HNWJg`rwys80r*7WzDPzR~x2Qxd1dno@u;vISo6T`C zd7`tuzt|L+lEVJgXeOqlk-RQ|IdAsGR(+W}E>0(9Ti4aN55=T{Ci%0lq7)zsq_+Q7iI=J%*b!K2{I!xGRfEn~gr@B< zb)F!yDG0oSt{I$46;saeMIT>mZ{1kgby6=%`1GD(mrVFEPq_O+Z z3qeT7#hem6Gcq%ZbDQ}Q6FfTZd0%JX#X zGK>Sf*Z;C3b6C9K?feRIgv05eE2zL2rV*ch`U!C0%U}M4m==8b@*Di19F4d0 zH)M&3SzQ6M6mVAKujA>2@fc9@8`dZdJ8iOSHr6@B8fjetyuQ9_V*qTcB&S{+WDRFF zQee5G%+eIgE#4N_Q|Kh^*Pye_rkK73)R)+&at(!{_myu{Qw`} zkMak;^ZTXxK=kbh6G*l*q89IlrlNjMXup5kJ8zFDou3A6pL`wT?az6qxMAaDp{X#a zM*wgGVfXe4d)T}lfLHs#8+hd!B6)uua1DoiFZS`aI9DmhW=>OYobN#}KSCzC*8udL z?%wA1R$f?7pbctfo$Se5GvL7-%*Bl$4(bm8ZV|EdgKbVj*jsHXifCt{I~Z&%m^HIuYXO;X17|(7J^|#j*P`$jd+G( zfS)FS)Cq2hW|HF=OwJq*VUwU1Qtv~%-*V2#*a&sbdrMI(@XiAWfE8vUE9T5}^M{>jwKb@a?fH8j@^v(yt+Q0`9(}^E?B#G8u=_ETHvX2q832{}#SvXK2YVl@Gdm5H}p3>c_Hg!aD?X(+1oP zw&{n4VnpM1zA`l~!mjaeH`^T<;GMN|Kk@gg>Dy#k-VIf>qvhY;p9H#lzV6;vr+R8l z6YZnmTOqHUIfWXVk=J`U0c}0dqcURLBPtz8QIT0RA|{c8NCuJH8h{;`A_g(`-Be5H zYgP)16m+h<47!3rw3EXF{iEEtG41#2^bRqvUdGb+H#7m=q)*s~o9yH^-OkOPBU}8h^txM{{;M$sZmgIMg3d)PO;g12sF~>Ad*o7D z@>q-!?EB9_eH2K{#m@thq`}$@U>diCv)8w;xGWLgdyK=-jCU9e?^KmA&ofS^lc^mN zK+;(Kf()XdQ&CZ_0_6(rZQPU?7o1<;RGLWD`=3>+<;_~xq>(UX06B&uhn!#ze*pVn zPH2R@O9PZ{)vAwEQxW^bJ7#JLdThvx8nNh4g20(a#pdc*r>adtTPFr4z!M`o-K`58 zieJoBXG8di{$6wbz7ws)Js$|((>8_I*XNb+DbkJ66 zI@aRtf)+rhWFy7QgGB=?QS&$*F^&^1moo%O-TXvNe0GU%&iGhG)HTp__<#EI&mc~Salx{zy22vZ z>dXR+V1_^Jj4Pt+f;rBJYsAyjv++tC1VQ~)(njj&ZLzD{oN{4}>F&1kq<5*TP;L!5 zBU3-AzJH76ZVs}-;HHx5V{)aPJ6nyR-T&?G8*2vG(o%a_7IiD$zCPXzgIDlCh%KHK<*OT@4B!9r2oPhlYbr%&83#KVzFz()We)ql@@3Q?L?MUvu z*!yHgd9dn|JHIl^S1_nJkT^gba$(yqo75w>PZZp^sO9nS-d+D~Cq!M;GVj>AO?FfF z@HT04Z@OLuqQn|CTo3(HHU0!Ut;(!+iu8j6LNs7&xMP3GSr@_k07+FMxJl}kWq}aXC?*VT!Y%>~ zVMIz~mc0V+tN(viJKc3vA|cRr{#C(Ivjv7B7{OAFf=G(40g~WyK4Y9Fuo2Yi{=V+; z>qjm{8u_-AqQ*fT2co|BY>quCtNBm152JoF>aKg6Z1ugw)#P+0?^M2u<_IX#0i;U= zbG`|{-1Yc>uf0EQdw*}m-Z?FtTnd7#sEr~SL_ly})gh%|S!U3(f}bpGswQ1Rkdw;6 zoL3ZxtPZP$;;g?_k12L`m@ZkmX@~x>0Lh$ebmgBJCvP8JAif|nc2W|Mi zWt`_3Fw>)Al2>3eN~_!l?>(dd=eG;O;K5!ki&H6A%B|}?_9mfgQ@3SyR95^ZR+df% zr*|NebaC2bJQZ!wn(U&h38nFHXlnpE#A_?s<%$V#H30VZ>{Vvi8SLCjy#M$Lp=$L@ zdo4=HY>`5O8xF#C8DYnp)w|q!9!O`;Udi7zEweTQB=;=uH}4#++xlO>e*@I{w{J!L z8Zznq;kOHWUFzsv2I5uq|FOUO_@Ca8*{)u#vg!YTGC^V9`z%X(m$395!&B?tiE5!| zl)@;<0%YJeEJa8yIO%&2ZS2q=*=Y3w+bif(YW}=ga8Q>Bxci`O3Ilta&KY9XpE0W4 zB{Puop1H5VJ$h}Arz56m!rS=`Z*SjlK3{a7?Hv5zO(_sTUC0RT$PT@87=kzH-^Cox z3cL^So-M;XB7}e;49JpjnJ*w>JUuN9~BwM1urij;OU^@O(lcdy;qRZ z3de-QVM5Gr$g!AZGnrE%BPB&S{`Ft~1I`hio}Ms`BMNI%pSv}c>iTnwyG z;5p#;-#(j(9B=yYUV-KK=KLbs^8;jO8%}q5VUIZ>rWBAX4neON=%To(w;u1jYY10n z6;~2C`YzM!eYMw*+_2Zu!`s=CI*!DxwW|7XxGS~9UI~!1T&WbWLkRAZF#CGEe_Btn zC+s$j`1WYsE`zs?NoUd6{;zdpypb8~#aDQ;ez6)MDQ9z!+w4Fgw=DeHu?g*qF5{L* zu-A>!%|7e?&QWfd%bT;{ZHu$#E7*s`+?=$~pc@Opun)H;kPX8ChoFTs6XGHmPXWxM z?iNDY^nd-(hw~@kDaqZ zmz(TPi?bepQf!iqYvTgceR#D7eS3Rt6TmPGZ9mUUD6EI8deSE)Z8c(%HWlMApyZ76 z`OR4FV$s4nO&3ue^e{Shdj1dPM z4@WbF(QNme%zVnY0QDN@k`XV<=7a7$!m2KO-fgBlalIgkgByoN`Wps?i+u=)DIt}D zR5BbGgCE-GQPaFC*{h-P|W3gmqbLMWq#S z7zQls8RyFx^Qv0?lp=ol){14~${(h;hZ2w=bBc38$wchH=2>&%fih-+se5j+n;LFyH^&YlZiCM4tYf&{J;~QnKk8%L_4#`zK&m#oUHzaN zi68IIV&`rf1103r-CMse*cCC^>=epXecM!d*8^+wPat~8b*r_w);+%!`74{)4QJm$ zD!Y{LUX#|I{81;>xxdjJ`Nj?@>SPY@92UFcZXW*Ell}J%800QNu8-=yC-wL-h=O+0 zk(xL-gS0&y1`NXisO)Yd)M@ga z+6X)EEZe@K2$s2SQLId~d4<<5m~^-0suQ72adll#*8wjtFSeFQI2;dP$9BjH4#y*$ zbBJ+)5W^*Xe?iyu#sIHGIWlNBW1bhx%LVH?!+D1fPfs`)gq8GGAC_dTn3rKp&0C) zOSb#2v}P%1L0nd>)2at^-p;+ssSpvY%L*x4T)g*cjASbU^`c;;b%991>2$!;(-Y?T zf-he`t8BC+yuQ9_a~B3YKfmB`IN&%Pu(D=c=;3W^j3RKJ;GM&~W~?cKp!eQoy&&fq z&WpNQx`N}=5ubmb@%hVFOv?d({?niE{QQKJBEEe2($I=}&)4Ewf9+f)9Wpp`E6ly| z51}XS-L7e*NO#tvBLMCZ*u9s`J+!s5`uAP|Ts=@43PiiLGz`xE@tOWRu#<79@PqZ^ zQ9Zi%`|<;R0vkzCwjKYKU()V-bBEh~uK~E%paXz!rN3O0#rEC3poT~JC+Uz6s73mE(WhY5%A z2`^7S;V{17Y5LF@$4tJZ*=^svvT2&C?BvGk^7inplexZ((n;6KzS9&KJJe8`k}V;u zG^r(w2cQ8k3PrE$+}!h8(Ish#Vx{O#J(>Gn&wkD+1ErYJNA2Xj9TdFVan~KBcTNp( z?74#NV|6Oe+WmV6$)e;slfiiJ)eMLkPft(y`t_?xV#L%2igeUQCZz}$M&uk7QWk-C zqZx=Wg4eD-#)x^I@$K6yUf;eUCp8c{j^joOwf%kNA22IppM-YGfLh4)I_T%M#1-fB zrBi2!I?Y+LrLXH z5<|(4AI8*ibiMD0RZ@w7dJRCu5EyL=Dl%2F10}MFKLL@jK%EjRS{368h`RrI^ZAeK ziup2Q2m^d6NHK!gVVVx`Ho_${iK?GTE(L2+?u8Ft5t?X8gDCLq_1*+942mvPnO&S$ zynZ`FGDB8fP1F@c=1rqsvL^opAFxIbkyXEYDIuoCjILObfWy>cbmO|JyPti}KYaLr zd7hgDwQq!L!6nWhFq~%$7?6twQZ-BPJ43}TY4Ll35RZC5xx>4X>s3;p$5%N3_lw!) zQ_>se?AOrS*Mi>3pppNS4DiSHTJqh;Y^#n=uD8vAy~<$A9pU!NeNrv&NbA@k@FD^) zQXy>Why*p$zPoTWuX!hy*s?x%AD8sK-v*ITqe%AMiEP9SDK|?BxpqUU6YU@T4DQO} zcJjvx*9*24&VF08Bg8a$N7*+rmEkG-508xaN5b%aKyV`*4H&}#Psa~93@@05100(J zAk$6fD3uu~0;w|R(w+C#fT7dzU$aN0M)dZRXbs{hf>KhO#5TF%H5Wh+oLrI-{E}S< z^A~rFl2&ut%PqG)t`S)hQqswEnkKC4iupW4AQ+~AX`EE6%#1Z}*8!0P9pEa)ZMbQp#~pLd>dJRUJ$&X5}J!-Qp>5p%>iPD&cf z1+Fk=VpLSa_WvXr z2*ie1h{4W1_aTcypgO%1QYt%wB%{j(Cks=`1(1xC7Q|&ioL7sgwVZcmeGLs6Yq}h5 zK1Cg0wed&R=!<&l1(wy@lmW9=^Fsee-N-&MNGZd6cNclW)#UNl7MW{ z%x;4bq-2d`C2bzLt{%FH#7@$t?aSvGfZ+N08Ko4wy}jbgm(Li60ng9R2qED0^>u3kp!Z-)B{fG# zsSRqW3ZHam@)dMJ;te$x^fU@G5?tNkck(3c*UUx{+@}22UeLythnhVRs<+HOosYT| z1LWG@1UuD|Tm{PQ-&!?T>v#sB8~>Os(2Re)>{CDd-Kj}J`}V*{k3DmtvthCzxULqN z5fG8HN?QKVkbL6`w@!ZI(1l#~qh_WGv8MrN$b0%wg!Wl!g< zxvfkBD zRgsNsR=3wW>MGH6P6@c)(6#E02q7%agPg3Fpg2zpo|3IS(H~%Zrdy^lUI2_TIEdt&^`M*wRg; zg8gwR8_``hZq#iS0B%+R+dV*g@}4DM7L*&AIaP3oX=idqbUWiq@0@2(NZsq;hWN_H z&3FXqgZ}W4`5wWrm%U4|X5e2N!DbV>&609w@qkKXv~;Rw)>9jd_P>opLdE1m z8naqTLXq721sa@P+84G-p^W&K@`|*^W>({z!(dUYc~vezGRLuD2soZ55UalZVm|iE zvLX{9SjdTU+z_OkH)NsMgtz@#A?%V0)}(#|MGAs>0X#jOz|6Q@E_ix+!tcNT-Uys2 zB@mpMz&OMd5i>9hCcsP?iIUnjGb1Hs*$NO{_x8n-*)}SWbIJ{1 zNBR@mbZ`yjp)T-;xS1V6jOdEIeOE+LmM{d{>)Sn9GQipx$GD)p37lg*pPn%t2cYOZ zTS&>fRXRG30mC>zN^B5&Tr$3W`-Uk5xIj2e2QWJfZp88Uqz;tR34{0Wtc^@z2XY=h zIYdC?jS&%?Ly-YP7;&7Aa83{t;j+9Tt_8!;XHbZRKWUiN+uNJwY=i-02uQYqW3d!P zQ;HPH4Y=Hr7-fq?uAUxOJK=hc6eEpqDR*_)qX+Oe-7?^%gYvtfuLYY`Zd#M?)s(=y z{p2nX?YqqVR!w+^R=*c=_pkvd`_Qwtw2=Eizd&xPmi+L#;XXf(IuYg;AJ2O?#tvoo zH#-&k=Y{sLMQ>mrb-IvkcO};!GhJsu-|Lp>9l0QN#Kd>XH(htAeP{KUfN}r#e@IBT z+p|^|=Kbff-N+)Fdm_j}Wd@bbRV2W{HRr!g(<%=ohqp4wY6f(VWT{YbX&U-`g(?(# z{l%V7_u-OP`!`wttdgWG<&WKF8C)lim=-Ln?j6%w3x@$$qHO+US(?#F%O&@Em}fKg z$z21c2dl~gsbok2VkzyhODRaJlH!Ewp=3cimi$(vpqOf4nkKxxylgzX*E{=fVa0dU1iXSaT;v`-Et9_ z^iVFg1}G_^FgKqD4NNk!7CS6U*>urF7Vtv$c-uMK=K@s3D7RHYX~a)5GUe7#DEoh1 zs$Fn`Aj3IUCVt%rbk-YECwcin0J6gSH}>qtFQ|pxRW*(h038uXsAX#CE_*8m&XINu zP&BJoy5y7)L2y2(!B1sGONMs=&N~nZQd-RiA}isJe2ZaqE?9JRw1TTs@-z(i@bZGs zDdG3ezhe6I6UGqma(cly9WaFh4%10FK*OltBWp+?i~xf3ro6}tR*B}d;o#U~^dra% zcrA!&ZT7O&DbqPq4Z$@;Xg;4olOQ;UF$~C-{ouv7Gg}cPs6WLnT7E+Y>%dpn6LkeZ zU2vFmD*@S|17d^GcA9O>_Pz*nSJbY|eN1U}y(f1yVz_tLdtgI=Yj2ipO+w4=*=}^=I<5eO$G4aP4ArW_{o?Izpq2<|kZyN_i0%Ii)qS42*-0_7mqGpox}z2;D)*CYMjoH_k$nN0u!syU!YUIh_!5!t1wJ9FHdu5zgl`N>Oy6$`308ygEHr&w>yX zx|LFpL;$2lv{E&P8e^rX_ks7pxDAXD6cPIEw_mZW5jg?R&(Am9WB zwV6tm4Na#$KYzi-0%)Iwt=akn#7A>3wVRY~=G`PDIHh+DA#H7=eHF4g1jN@pHZNTw# z!qd|Wrf`7wBj!0_T_TrP{(*l?`1cBSSr{n=KU$ohQgYyA{WE2-H;@9DPelsS& zem`PV)U6cYa5!K-Um*DnFCRWMzRj{M?Q>9>tqlcrXK#tBQf;3Z%fAz;8 z{r7+W-uv#|SnF!=I_>sejlSEYT&>KnpZnT^-|r&hx&uaTm<)2;0CXqol&`75tm5`krA(_ydn8&9ARA*mW$D-M)ue_4C6pU<#9w zgf#v)_+cYn)r?hgcbX!3khWHXAr#85oC76D6`j~&zgLn;>e7x3SaN}s1nNvRsxw&1 z$#!LGU=vqu0E!jGV(xp)4&yjBKEP^5DOIa}IH>F{<=9y4ebFMDYHNepbgL~Bz~EkQ z4uw+G$qfaipfT!mG@gN7s!Aqg^UEhv2L7@v%HsB;stIy3W1tbit6|QXR}gvI#jAW! zi$+lB&%Rj4;}PC_TrO|8%x^efW_mmqMqjYnbs$191xiIx zss(d}Zu>ao+JJ594>J~8qZM35dDK?enWsW*;W!mBsL+4&X}@-$ti>7I^j%XN{vRFS6ny*&1DJdh$kI&1N6%tihFzM$=2tN|U1s z7;ubWe1Yca!0Mk5B4p8(m^X`PCA{hqXI)l+1&#}nY5#N1?H*uK1E-t|3JKT~reOq= ze(sVB7#URGhnR%b4e&@PWd%rW!l^h*Csf4HJ9BY_eqOEVCW0fSsg+!?+6stS8|jpi znm@4)8$@YCZOl7k%k(H+c0AufOX(h}+;Rd$=)Oz%ucy$V7P+;JQ+4o4iu6Ar@(<2Wh&2oL81JZm@3<#uhcv2Pz! zQ!1>yH2`Jrc*&#&Fad+bsQBt{gQ%9KE8oO#|1Lu&Q_8I&E<+Q>f6Ik+N5RwRsOh(d-w>}4@z zQpE*aeA9wELt~ctf)oo5$0utpG)KVufZ&53#@->6fDqUMf-YE>1#ho2&X*bUc}4Ie zKD<2ZdoE(d!?#nDX)~ay#Xs1uW3JM~)d*;1BkCpD_z>nY*@s~@H$9uu9RrRDiS;_> zoFUn+p;^twHLB4HD+61zb2d&)l?P^zcEFaR#xNC`0dEMvl`Xrz4(D{b7loIZ0T&p~ zY4O)6=(+}=R=`VxK)2OaObJ*c*fGK|8eCttrm@;nlA<}vy8!$!sF#6VU*{ayd$^!V zlxoim-a@cM0Cpb1yS8>><`%=d#?**;B^Q*K6`2!4U=Qa8BkQVzony7-Mb0Q$8xx0s z;3hB$L>8>^jCD~or(^+%!!QiG4qJ1#GSkmFr-TrctoZu+ieVU={q}rGC@Dc4>w2*H z{^!l6w-SCe@uhkHf8R&1bbIu2ha)DpZsxRCOjRQxs_v$29x4U9mGoW@&l}(^*8+4i z5t35fP8!NuSiLrw-5!xQHBp`6-_zl9Si^TVGjQbbU`vXx6WvQXX1@FWC??eB0PzaG9;|2(Igga^f zrCPCwb$WCY#_)t`c*Yn`7{@0BKY=Zk*+4+uwGr**CUljmbscokeqEa57Ha3$NH(ll zL)i{dY>aN{H)0hkvoHU)21v~jPNdj-?A;Q{%xRP>ps;YjAq+T7r)KJ-hrL7aBTAWf zjhDz~Y?E^V4hJpf=5puZQJ56fs49Vq6=Tmj4#8v1Go+k<0(A|Gb2?rk&g5=zgE_WZ-5_&E<*Ewk&*8ejtUfE7F^Q$y)iqD$pLGOqt0{Vq zur&=E!LCC7WQYhlSz!0KTAjN_kO?}pvT+)z$PX&{|MSIvYXI&u{_jEjy-fYltGo)o zgx|~H3W#01n0laZ%EyfbSsBQdP-f;o)I0!qH_bChFJ9B~cO;3PPoRFe?SSmb5^Q*< z&?W)f!kdbPUF^w!?;H2Y4MC)u!r*3Sv+)V4$94-FqV2yqCpcDESz&gS{5dz^aCpWz zzJSYsY5a)bpD>Ou7>A=yY~)d5LdCBxCtVt$hb5D_DmXvQdNV8YB8rm2O*q+H;g!@90u0zQ0r z!rR*$=F6oqOkFbomHFyhmPPdFZ*;6hLZz@kJ*Mu8t3N}log%WsfEn5F|>US2Rv z0rO=xe*@jYF0)S1BpRn1ml;oo6FhJGZ>EBIUQjZSMc_DWcA*dy%iGQ+Z3MQYe)Q_X z2xKE_f(XMjVp&&YNoJbEEgrba0v(gGwhIu~h&V4OIjLd=(h!tk8gQZ`F0;BCq7cR~ zp(Ksi70NaV>*Moa+LgiB^aSNZ6u`6YnjHYjIzbPCaXgOZQYa0kou;vRpBTY3nc_pQ zSqL5?5xD?d3KEL0X~x0SHW{U;%`FFS1X72br5P{*jOlpNguXRmS!RT3L~weYV$KNT z0nQIdIpghoMsN<(Fu;34jEkuTMqC!)>3G6)9Pw}e`ftdqdSZO~@Ckz(Fb)$)7&#U! zWr1XY_X8X&Oy67FIqPAaW8|#1#`B!8W&-huU4Xy6ui4Nz625U%u&ZOyxrnch(2y6J- zp4_;}7`KpHZm*xQCFm0F$N)Fcr0g#Ewddew6!Q)eWQ_J^s2~qIr7IS2-$2~|7qnXy z$ek{ycN4y+qby~!`Q7bD=rQxYPO7Ec(Y4wW>t!j;TbhYM2yi?hxD!h8@O*@KCk*}s z&j&>Z$XWN_i>L4H_~q(z+EAHR&>L%4Ho{bC>_nTyY|^kBoMkhdkQxn)VhMrfk|(*j z&eiF%hS5}}zW%z}%WlX@^%rPr1=2tq?+6*W?YzBbhy;VNZOU9%MDN==AcUZ+3^C@v z9SF{(mnCPUoB-SLLj)nXMmW{?P~mZB`_Tc@bcAV6WV@HyIfTKZNI=XBV$$!uA3T;MO%c*~2#v{~ z!6XPa#AZdbwQprTES-I~98=q=gG-Z;`M_|b=uXZ8eCuF-;loOnUw%$^C zAS~!en=&xNNwIrSRWRNKFvX_0sTVg@Z~KafNXD8Ia*FC2=p2T@fgLc%1vCTRG2UKZ zQBuZnn(*^aKjHi~V;T<#euQ@cfgK!3|LdHQ*}7?t*~q|z3_>DC84Jo%AWjec!0G@P zUO!`rUf;h|%Vy2c$bSkRGb)e*DSz$g$rWHN5wN-jnmmL+$>LNP>C--`?2e zdl#qvaCdemw~`LIG5C?)4XAqXN6+{DC}B??3_;2T+4Qzmnj?iR^Ll`D6M{d$@d$=* z+H-OqdbHubkp*zaula!vcH7>yOO2_;24q-odVYXjy?K35Szwm=?+Aa>?Z znd*w{JC$|0&n5RG&0>h3i_(_@vf^!8#UK_e`0N5esXgIho zX_>6C@ZLz3^)NSbp*2R#Kun9FBlh=$1F<15IU}YBZ}L#@9n!kue15~~7QDPX<1`(> zo^e?ge0%+>&~_>C-XZva5C(Xc;LQkV90m+7=yP#Zn&@>w54qbtCd6>W7={s`gjfXg zst6vFQ`BP}5X;&TMs0P+1muF8iY-RBl)oZkfqB~8SMEy@K}H4_z6z$<2!K296RIaR zT@63``)RWq-)YJ(P#|U&Bb|mpr0&=p2t(`c znE^I0c(Q~--PL*}&lFOtS|dp99KGAreY@w+Sz*~4$y>Gk`sdQIS2v_a^WS+p_{?6J zAXmaa~b{Nnu_0|KaW5 zx*W-sEKP8W08mxZ+~Z_sch5u5|NmptFE!m&nHk}3Mydi3nFkSEl%$z^oXVP5%h!qH zVHZ-V3J65@{&qxQL1njWEi2d)%aS`H?z`ErLW8^)Q~PQgqJfuiOS zRU4SVb;MeS;3BnZLNIOPo?0PLlw3Ujz54uIQMB6VMD1&;7m5`MHM}2C%}y$490u}4 zz=9$NiqDw|L!m7&LZT)01^byQHjfVGac5-<8xrXS1Uyxa+yX^`0r9gPnQNkrGZcy# zJcPhWFexxn2ncKu)~w!D@zlUptf>PMIJgxzjda7{{zh?dkfk$bs4NJapdp}EK`A#Z z_h?bpmjxvsxE;H1{^lGgrFh0f^kR&j^-#51$A;LKJUxx~SQ%9nB_BSQuO`3^1!*-0 z(Yh|Eg^;u7X>c{e5C?Ej1b4(VzrT2kyA|iH6C=uAESs)@UW`B0hvcV>dZGv6FQx#W zfrTE9f+@N6aUGR``|VCN$D7UML7Lbo!{N^UJNXH?GpwR|f(^BF!4^N<_OsA-9FYfc zHBH3D&rjW?|Mi=G+Y_I^?loTc@BWTBG#9gyn@*y;-rAW&aVH@H_!mmXuf=rQRi6rd zVFNsSC24TV=^5hitMsPN{FQBi1?g|S{^#HG0IDEH{u&oztizR|B%Zfy) zTL*#ggi8GiVf;HHlJT{2?t;+l8{kQ4Di1audtFRG3_xIG3&4wr;E)_`o@o~o4bQOj z&nX1zHbp}Q!#f0q_MO8@EcvgZRCSwN=<54Y3`oOaXfo<#ffHAAKYCtUfw3&9k1vKT zkWQ94;|SOTA3&Zp&sNNFgnGxRWV6@VVox@sc0rj)MfBc#vtr$EcW=$22l)VmxUBB& zUMqqCjT_8j8|_Q81Mir{lrSu^G670 zw6D%qHa*>orry_y6YzOo_?18#Z6=S;PPjPj3;Hyk{;ESd(fp`cAI~nN*E9RiTljq+ zs)GOj{WId-=P}3M4XllL;wNuv;H^S^l$9h=x!cE@&G z1_VxsaX}0Vzzf#(itF|r+xi_#T7BLZz#I{IK|u8HE&nz52A%z=55CHAeA6k0bABI9 z=%Ysd3%vM`w1p-+esrADN6jsMQm1LNXq%RL!C~+c|2nc1Hs%144-i$~@GU1moVI6e zZ~OPO1P>RI?!&kAHw!pv?aM}M+xOj5_hRn~^pmA}TA|0h&JVSSxDCzblTxi+T3zgV z3paN=Sdo%qgvJQf1tFRk^!Dd}pd7_o^=fv?pFe*haKz<$g?igQEq0Gp5#&;_?+5n% z4g!!uFg1EDCcF#5bOFHR8ZfO#traCZe<3%RlXV@A0n0i&#=~6Mn~v2!9$AY z(R&I4!8;`0#V!`s6N0sDqk3DtksLW9S1b71VilOIO};Fs9@rEDL)G*ZP)20JvLt)0 z9%&3HQVdv9uy7wQK(ihuR`vFFS{GBGE1}i{`MBd)0um>P78|>`cvGQRB!QvOT5$Mu zAqK+ra>4bwVTlp<{R8js@A&w*V7p%IG%4QcfKeou7;)JySeK=TI?XVeu>s1b60A1v zQV;?K#FUWhz2{`am~h#y-j&%QhnkC_)^3YCZMb9|m6nznBD;I$@dzbnU6GF$tPRi4 zRyaQlkPh9FHYZY#3J$+GoY9x9bS8S}2>))>^p_U>Y2n9-FYwtR>s3qsf9(eU;?|hb z{q&!_1al`Nj@B?Hyx?eyjNhaWzV=^F_-fySuY@HofRol@jHpG;zo0T{NXC2NKv z5Gin)qxc3N2PZ%s@)Q-EtbJ@0L_mt25<_ByXd@vCfQogPMAY;RrPxUogc#L}OZG*L zeXJ1xM4vM&V&qW(Fj?Uh0+vWvJT>)s6e1D6fBS~*+Z9V>+_Q!4zPdP?+(eEz zpZeW?NH2!(uK+xcf7-#NDe`BE-f8^%iH7X4JN;i;59sSXXKdc|G|K+{!!FGQfS%j` zuG%L(XA7TmhIIl1{ra8%)(GH}|Np80cqxd$&;aPf4Zx(}Jc$h(Scs=htBSQTaZW<) zr&pC8)O! z+l|3J#M4PWm{q%Ko>@@bB4vtmJEh+&hd^!fOEE$m zvmDsa!5m}1#zX`?jF&H2eO~Q}i;iBN@81y2nF6+J8Ke2-ciDT(wjoKofK0^fg+Lcx zwt|n?=Eo_T{sGF6;Ki5#$B~iqj(smMQNE%UJEhkusL}vCie-s@ei z;oI94Z`UjK{f773JO1-O{=~8G`1b7^5=U&yifvh)Igt^3gw#GKZnm-Jk)Q3(PloR{ z+NmIxKIYl)JMPB~#0e=_yFGF=tai<)a+rQbn|>lpFvLdPbUQExXhw7diM4g&M3kJ+ zlNOs!9iOXHG<>(R^@GEd$)caFYY%gD{l)3}kxbi?U|*2;x-NmA4^%B8NPU4sg5luPNG%YN)Y1R7ck%VnP$x*hUw}z=fa(KG3t<_%4P-X>) z{_X2A&*jvOX=b_8PW2Me5hV*(i=Uc(V;~ur5s9Eurtp~B*Qr_9V&-X@DZ=H$) z?eqUmLBwncBoFJc_nKmKg*Z;La_;;EM-}3i?znlj2-H(u+%?=lKowdzIYMr6ahA9>jB?UP*tZ(6^0-C$Wha z4_a~T2e@Q}wRY#Cx;J~~t$!6@^tu&=)96OkAQ7F`1u`@+n_a1j34!`ax5Z&HJT}-F z^nP?`h~VZpP_q=k#34^K}=QzEsMptT1(Zk;#)z~KC>A^T*~--ORb=4%z;v? zE54)i{B1Kf4*dZY@hD+JqKKLgWU=t2xFi&hEhhhcN6Gl>um8Zl-|_bC8{WQu$F^;D z!fx$tQV$6#h|yH`RSP87Uf|@MvF|sOQgQ5ezjo%!Z*hCAvlJpBAx_l4IyprA^%3=J zWt{{!kaBWG|1xHgs-R%%eC7pEE0piI>>7rOd{o=;>kt;(NI*esUcpjL9Jt>zw#$O$ zlAM#ks1gx^pU?^5NQj{c>1ad(yRDBofU0#i8aJVlInxr6ive;X1HlER(#3$qP`zHD z2hR$C8WFHc?z8g10FxoAr4)qi0toQ_^C#Xe-ypEgh^gHD86+FG5W9=&G2ra!Fh!m{ zVV}#oZ8&6wN=6k$cD+cgGU%G#T_{JLHuFi0CxX&d_SDl7TOn`v0J|7bpO$s)m|XQV z!$#C|@m}LKU|xr{^I%>yJI-tL1W9VZxaMXe($i?5#Rh-g{vRm&(KVLw^IHqM;i4Z; z`Z{+J_-~1^|Jl|*fluVu`G4Ets%M2v$nW3T{2$#5@o{tMIxm_;9@;YC&*j47JpP}x z0sc;F<*_Aoj*8R)v%rLxoZ9_Q)JF)WH=J0p}oH`M(_ACeP5vSv87%GbW zI3V~ypbc9TAdHi8aDdLR?R{MYyy}Xz2S0M?V3+niOlI|B0*+dH>v)Vf8WxxUH3h!Z zg5q|)DxN`ay^22jY+Zn!Q|~MVyLQ|Y??mF0(tcSMT(4KuD!AP~AX574$vO8;yUpqE z`yC%2AASl9C-v^E>L-8A&EA*ufe=Cufw6xt9-|r&Blj*ut<~al;iu~s=;Fl>hlq7E z8&-&x5V!9;N+?JnVqGpB2`jD8DS{;}AZgdf3YDW|+}_{u@qWXRGeQjJ8BfLx$hBZU z3d(VS#Kdq4VBZf^G1$?5zvFhl<2ZIp@yoWUvmN8@-fBsI?f27Y>*rEHKKGw(m+ii3 zjC=q{adAce(w_;V0oo`@#n|^HSKMzqe!d^r@7fP-JZ~TljXU-V=EG*)1bozrQt!B^ zb;InluZYnDf9e5_z!C#eh;Gj$C`?0P#aRHQ=``b$WhI5nHV7j+oatM z5`*J@VF0P^vLU2^oOgWOBH&4wm+J)t#&O*7et*Z37F^e>TeNrx|Cme%;P*0S+;9V* zkxt!9_~@)4=ZZb=_}Fidnjygosw02k`nL2)V-ayAE;*fbN{#Gfxv|k(VxN)ZTI;*# zi1bZzF#QRDI5$M6+5f3|>|Mv9ui~@IK|dMuPRV?;`K#qXHMdG*jsSCX@sw5bux38e zV9)F3lnD4V_dlQRA5Yz{9b!Nr{+~bpKg85OCja$hR(v+n_;q2@I-CFu$fas*@Zf4% ztEl<(=5-pY(z$Qqwb_;56GNoI`7-xrXZ52Kcf9qu2BD$BQ^CzaNX1M-Tg; zV4V}%9zP^@HFIzQK~)o{8Ph!2LYp&4ca%z4;~Qi(D2`C=x#gkdvg7MKgEPK)N_y(n zP4S2N@#fJE+cC?Z^w`_h)d+!2)m*c;gUuVQ?vYksL}Co6rT9ja9U3zPqwFp4#~ZfI z@J$5B{e;;BYV9++TrS9Y_tQCy><3%mbI!Qm?+$9Q)7iYiYZW9mg?KI_V%GwE3>j^l z{{yAktkwc$4jlP_s31kNfaUBUqvr4Mj)XcFVL$A(ENO*?=mIW93=!mnL00W}-gR9; zA#@JH?e-H#QDiAtw}i{}ie+1!!k7p9U)5UZO&q0S833%-6*&wmOk~12DD1ua7(!7| z@{UqQ@?xon=RGhgjH+lIBkzRNDGWgBxNK|JEYxb)>X4#){0V+k zx7>yhJT^l6z1)C9Ou&A-tn;vQuK5>sAzLo82@*$GM)v!OzhOc;6BUfP^q=^MFI!ZO1Rx`c3(!|a@i0<#_eVr z4AEj;2WBuBxmFa-AdMXvUEv>s2OQbsNd0{^5({1tz@Q54V=P5h_<;K|bWAOvh(q@J?(U^CR`gDSmPr~h78 zKwlr~rnS=gvebDQ>i0%aK5?R%*Xcb8j14H8x-4FDOegkd*i6>*;}x&Vyk z9tzaVy?>+Fc~uxZo@5{6gj>}I45HhwHpJg~4WEBVI(gT}e29nvs{O>%PV{Fn#b_h9 z5R4GW+u7E_)p|hF4iezVZo`TNLLTpm;;P+$RvR(yEAh;<*1>?HZ?Gc8i#xLf)!xE$ zOPDaE?5O!Rr9Jz}Uv0yOd$y|$*61 zAaqthV73`N#3Fxhcc1ka)ENC5XQZ^iBQvnB1|Djx@LbKJXSP1^4rH-Yyj%V3fL6gI z19atpF6*fH|5q_SeL32C>!MNv$>iPK1RN@kyxWN%F21YTBVpl$zue(bRU9Hk3XTm^ z9YAF2`RY7_CRDrM50t~uw6!Ysn?UjeZ}UV!ez;#%O$^${(cC%%o+YuEcO9CMl2Z!Z zEK5{Ty-jaU0k+LwEHanb0(mUmFWE*KqY*iMywVaS`@ukLv=TzVWxM)V6o3|#e8>CG zcYJ*Oz_xCP!GH%LB>ZvxW*vrV!|MQu_iv9u*c@z zDTWW@m;s*qTHkga7wB*AL-T$(7kxqL#ktl&b;JP52UndQo7^U5i&A+?@B^ zDPEwy`4br-FK0sK45ore%c0mfdLnr!;LhC#+qiT8Z?-AlQLD|>*EM^k5z}y z6$pO({E2)Vh;c#AcW8-Tz^gk1*j)|Lbq5}|n{yXEuIq+1dhD^nyz0B@3(SJ(CoW46 zGEo@{O3lb6qj;op)9@HZm!TdVT*W#X>WJIpxSwW;P0eow(cZ~{vkr)T$X*LjvVn4n z7jlMit|&!tdp~@$0FJw3_Q?-5&TE$`t9*`MZRvo;I7;K6sv`rz3v19hm92_7E~Iz( zJbD}iB^%4dxL{cqgtR~X(gX@{~Cx(NM5e39nDTO(7F2P4&xEquAhtK8e#7&IzR6v+(s01YU`d^ zv~3h|mKgLy%nIJ|%~h>|BTc@+YEK=Wnr_o>~?xU!L{DhoPzaan)w%*waQpaxl#Deciyc0SZ%pEB0wAP-B_@~_j{t6I z_JR-y+qPg`6K?k#NuQ$D%Z6n&A?miQSeAr!-OL43Go&y|KJeqOzi_|r9mCrej zOOps4UR*1+J^&fdz<*bmSI-`4?j6OpX6sZ`5PAY3ra0i!VfG=X=BolgyE30&b_m8e zg1)x8KM3_+bsUJs;p`Q`aOgk2?u187otr*4po!N^=Oln0kkCGF)))BNUyTCjb?crU zT?KRk_25Nj^HYU13ri-O$m4(eDpY5@2Rao&&8GH>TVNJJ?z28|Z!@V`x0Yn&uDA6& z-nJ{Y^@4R-v4q7E!n}>w8t$)7`Ew-k=Y@f%-Fds;76}*fHU2);uCN|)$41!`tv)g( z(w?(Z!+3!gdS$k`XD=YR^;p(5=Iq;dyN*(u#NmXu;22UL$9?m7moZp$N-EVv&# zYOW}4cbQH<$C0sac62)kuBI8gN+` zP_)x|T&(rqeC{bleE z3IW&a1pwjp{*L?Y9a1YkK0Z)NMoNqrH!RDF%Vj}I8`iWUMIRH1pq2urgws*YpX<=X zbKPk~)7UGx-O{nNaNY(558_fML}nZ%yYTa{&K*{Jz~Cd`={fXPV2Is+gr1FElg%Y3JEE0 zxL&^D``dTCt>1CIe8akKNNM#1!QiKWuk{SCnC-6=wNhR6?bf`x01z(#+9o?@@3sj< zuku^_xphf~P}5x@{@^#eP*do#iyjY;u|3;qFmd`v8?xy=RBQL`n?)`A*O=wVEN>=O zYi;_$2e5X(ip}?v2mXl2NyItp6597$H-LI*(7x~Z_;^Ro#R`ZeVs*RX?dMP2-ru3{ zlPUS8TkP@(N!6T>(meoEB_0G(?CajkQ>~4*;1q-qg z6U|;P8~*W+KXAQX%vi`etO~nxX{j~V3>2{Sx4q_pYvln8BZxuUvAi+2>2e~h+^&l*kbm( zoBwQCJtsjudRVomo6X&dXS-WLlIcMD_>s42Mz{2a&b%mD72{l4Fj^U;&$)G2L^ z?51wfLkGdwqFnMm$bxb4S#9Z__F77J6Eu~!rT%fZ5ayh5yWRbDDPmmk?fW0Nt{Z;7 z|G@jt9{?2Bi-`%3{cg!|T1}}f0-*{m2KR}jbj7zN{c*QX*-W-{zj~<6j+n7$JE)4OPpPGU&RtyDc@@;HV@4s&ZY8wSrTwvuU#fMo zX*wtoEF_8?2&X@RBbWl#?TW?ij8+htnm?C}{l1$DzL=#l zq=2+W*Y%i)_sHfb2~%3Fo-kaDA;L?dvGL934{^Cq@pa5`bbS@LKJ( z-kmAc#G0ToTG~DbXJ(L?-_oLirH@`3ov+H25US6bopb0~6Fr3Aaq1B*!NDs9JQ@FNSW>R4-z1;TY^T5rm4e+IdxXAPMfuUUA^eTF8ry#{Zs%< zLA6tu#_x6u9=(xs^W!DN2b0pZD|659qlKf4zzlj2bhzr$RZW2tVp@^Xh9%jFKgHD- zo8+lkZI`2dO8$y&HQQGPvR0>AkiMvlti?+Hh{a$cDXEqgrfMQPvw#X}-60;*1B5;f zF~lt!)$7OsXkCM5^(u8J_Q(Ar9TL>i z;~q~MfPr7ub?vX^SkCvLu3K11**TC%2Z z&IeQpmu*8#CUP8!gVqf=j^iYZtksaOT5S`GOEg;-H!pc`dbDGBwNBShd;>xMqXbv= z7q?4Ar!BLI2!wISYF)lq_@OHmh!B-Vn2^?*dCuAM4NO9bEttH)I zoAl{M&<`W7b9`t0P!(_+PCp_(>NA8^AN0GS~LMKt-N$uA`v;0NkET87$^jjMy(Th+c`eauA zH=6>_QS*OCv`+t}T?qY!PBEVUg8<^D-SE)7k$Fz?J58Ry`$BCdCB6#|8{U7-g`ie( z{#Li@b?RXU-)-Zym$-Uc=7Y87z{kC#x+%2!k? zHvHOj95OM8fm%avW2cl5!QCNHYekHV5LUoP7lw_MzR_1F)Pc=H)PA<5+?n4w=K~5t zsTENKR0@uq5!1*DX!CzV;gWyVu-u@qX5pWT!u`PV_hMkUrMntX%LA)R%q-c0y4uBMa zRP9~17y?oV9!*OqA}BIwn<+8Y%ZhbNX8)@dlo;FOqu(x9JN5gui77e!husa5urw7YcF3IpZ{ z)_~&Ak?Cn&q}#Fq9yXgeeHL30sjTN+>1BxwQgaA0YRV|diklW4*>&yer!P&uB=q( zsU7o`2=LV$K1vmP0H6%^3ru2OJfB3uK{m|MhY|iKIUVE=+lk;QN(es{Iy&A;9mXiZ&ggK&XG{gq+WuMpX5wc zOm6>cxLjLo#2_LZKoraaE_8B0NHwxtl?)P^z(dwCFjc#v)_~jX<`J+?O4QP=h4wma z(=cI|2cdWXP|me?WU81gYum2a_j}KEKkj!FHB~$lp)lk2{()snV(cVo(ywBaYbAfq;0ps?j@lu|vo2d@3m z5e()9bdlta=9(G+vEu2Md=mST@&l7!F&Q1lRO6u?K6i8<3#P}RDm7uc0*`qB zpPlGiq4G+P_5|_iNs0Pw`_?n{_MdX7y;9fxvuVaJ#tJ6<20F6``Xx60^8&zet*xae zt}Y!Da=VeNolJPVg-LyuA_`?1ArN0s`sNr+R(LzOorZ?jaeQABqtQdjb_Qy^YDLkI zIlmk~z+eAtix@=!cjRW9nVVv@$)7F2hO45gp-PTDBXPx=fItaL+7NiL%G@`5RT>BO z>9cs8#XY+Mq%*SBecP79UAjNNSpbzh{u8$Gs+!%#d1>)Qp}W%HtuP>#de@NRc)W2u@8NNuBEmIw~i z=fV^KiUfwaOByMUQ$UQNlXBII?hwWpr}&)SMq3dfMO10nq?W&pJdAjSvl|G%L(F;{uBb%}h=*#aiG`x1rDZ84i$kLy#b3BRg{ z`Ps1mN~YeGfJhsbupwx|8a6OR1lY#fP?n;@8Z`%3Jl@2knJ7lXg0?U=NDsrLOK7PBFH)4~r1a;?_PtF*=*R1=KK`m?^E% z3k|XVp1n;EKi#+A?_T7_KW}qs2I0Q%xP5#80wj;?-PRTPD8{EJ!m($tGPdQ46cTRv zhMFs`Z{Kj;uDIXtP*L1(cU-VwTQ=YzT-Pf~IdB|im)b5D2NFdSft6~{zgRmzgaEKQ zKt%zc`I=xbcs_u=c47n2lw$`ag%EH^MTy26Ag{SN`i98OrNHLv4(NeYM=5y!u>T%I zLSSPb5Ctr8fmGWe#h*2fgoRds$)G_}5MeRGq6%yP*vN+v0>XbYtegR;if>z38IEVjxiy`0Ih;@WE?KQ3|m54Qs+jfS`oKiHY4k$ z1qg0^^XTRTi+~O>+G}&yY)CDxIhgJwMkq6QSwJx%q!sJsg6(p_vaU$Wie*{NK36mL z4~HWmL-jxv1y}2&5C?l!y&#O9>PbQf%1|*9p_Cng5;z6uVsXWDxEc3M`8JZHu`W(g zxwEE9Y54S|R)nx1>V_ygu9xo!ED+qWmpf_>$Z~)*An=M>ca+0;5lmz`7O1G+WqPFC zX>Z}RSTGAMQim%we3SPjdi<}dLP-WLou=sD))}0V`?}gnMpu9y!+i81c7B=<_>rk= zOsEMAn-QU{-8^L$Jk912bRUxJO> z=t-R3#fBm;#uYm0%_f^A!L=N8B1qC;0e*_aZ@Q0O06b;@&pyqel=KhMy*}DD+!MYA zV^H3$cf+qe;CkA_BZALhbpk&CW|e81eorLyP619x$5vQ`$(Bal2->T6&wTE4_ExPi zc_kaC4<*44d`NISBHi zMbzf-s@1y~&Cgz7jn#JY&kk)7RR8;aL#xr_YCVubwAp4YeO_q9Km)pvCmNPwn|cHx zCQm*i%V!ro9Q$fB%2F$e4b8svt&2WD7Il!{+ZtRpc^)N$wwa zFcE(K_=){Eu&pb;zkN3{U>4jz?nuiD4vhC7?|=%Hbu%@3u3)eUy{clr?FeKesgx)M^{2is0A}07fsQFhr=0q{flK8UQU&CWN#i zF7QItKI4Y;jUk!;U#p}0#BGofDMXK4HhY{ZkkVqJy0CN(#ugH4-B63+N>eg4F1#SZ zvD;_Atys6MpIl2Z*1)n|k$fa#)I)+0A*Bs5CVQPrwD2B(>;oqxX4|a2V-;dT+Ac_O z!LnU&{q`Mi*Eg)|iY0A04h!=+?l&CwJ94>0G=rm$&>$w@ZGbLVz?MZ#Gav-+T^~Ox z%o>gmpw(l1J!Ggo)1=07w@0oz8-UFX8LogcPjvRr2o90Su|dMWE^%kW7L*D_+~!kXm36q>msBF3Wx6Jg@W$c*j5=PvLal z->5kY^Z}GJZ}_w5PN#sf`2_6vna2^oK>Go1rlFojy3GV-`nP^Df+pf%e7o%(n7tU(k5c0XYu`KtO12iBY?)i z_wWjOITN2|J1rj^7QSNO3jKS&{Ry_ym8g>rkMy-8g8epq4w7u@@u>*#o1xX*Cm;lM zob&{IoIIxb2;5PC>bMbfkgOB{MMhc@mb4(!f@Qhjdijp)^$%RuZx$ij*wsx~GL0Ns z#s7GNj?c$WgzBev-|R(;6$dSJrD|u#i-_mcHx;;5nT_i|@(rBY7wi;Sa_z*oO4_~i zQUy!_B~QFoZ{0I7l&yWcts961T1;HnvgfUUINzu(fv?tzz!54H`6!S*yJ%1mI3oDz zKj(_S{`%omiNsU&BT99Huq=1-`^ZyS3!EBK_LW)EOsZYcz#MP$N_XDJ294 z+2m!#_3eUVujV}9XsvcM?S-AfBbz<66dUD;pyPpw*ys56x&1e998lGSr)@b|))f?~yCFh~-PUKP|75y?kgzTZX}REXz2NQo4cE6Twr#^@ zx#Iu&zy3csa>o8~!^iC%rR)Gz#Nc9C1}LZ_go72UZc`;M{Hs(fv?9dSilN28LU05% z2@fDvx8SyD+gT(#&z`3)ECv-bAV7#fVq*i#Y7i_TATc9T@Iue&iq5t$O;33k8)^p; z%}xOAo4#*~R8JewISzd)0-Cmf^Z^U+&a#%$2kLEfn!{}VS*hDEq++jZ)bsl}&C>l) z`=~{$E>vXifT*5@nxg<<@2HN*^x-WVn|xdUz83A#3o9VMR`<*3Bn`OT2+vc|Pto!1 zSH-6dMyIyWBOpj8t{x39{ja4OSQ^hq2>&CojB6X=wY=1ei1MNg< zZP&)7?{S)D2S7e@=Ym%ePuZf;xM|iwC;c@ayLpf+$W{JBub>mXPu*fxZ1eX>+&)wBR9~Gd0 zbxYU}(*>jk6$)dcK6360mI)cPxAAPDwQfjsoNjdjBm2*47~zzngK@klLqn^^VX2;! z{~Q8RjHZc!EkrRzpJ7{ctz{PwlBakYgvuZ}Dm}m zEsi+_RJCVZ#h*amT$oH>LL99tSf39QHaj1uUw!rGGbOuXDpXu++}Sb4257IJrcvvB z8hu9SEB=o8O~>f_(^OiTtd{52w?6S@=xOAwr!%xZZEKTFzN3)!lo9hQD&O-6;BjB0 zUwr=~+((}ZwqJ<=RTXho`Tqh!^zt78Kz@pR3fTE4>=OTURrpCo*`So4dF%Up4u8*o zIk!>Tq621!p(uDWJJV&m_EsruxgPq0ezD~jHkGM>l8HH>+WpdXEjiYp75MJ ziXj;xEjkHHnEZ4=BNrmZh!~=E2~o^r97Av6ipX$-z)s*fA2y<>mP62r0}Jpe#u-ox z`)SzS7~+Ug<$$n8+-@H|MmOh-`|So0VOtlh+lrD)SM>MSqIROsIV0DKZCjnl2T#T` z``EfJo{d00^K8>j?%_e~*j}1^`Yl8#dHS0L{RqrV;LmoJ1NFo;dm)`1@iaAIUXC9wGiA-)J|@Vo_K zlx!O<$ACZ)!DHJ<%;K1MF~K577Yb^RjI~p{4+D8n?b>}6)e3`vF@B&xh+#np7U2sv zyJ54l**L|DL&IrrRs`^%?hO$XduJeFT`e2H;7*F;xY?p#tw1Z~fE?B}vke_;cz{w+3A7^E47oNo%^J`#-?u^k(w-C|@Flu5D z_J!DH_O&A+)l&zV12iat(;sb7_tSBoC3(PvTFajua>JbMXLI|R^rGuS9!R4T)p0yf zwPe&{T7V<(9`0k8)8dA;7Xln2QcAdN7aYfb;dSr%NbSDPP;oz(Mj_-s1%6L^sV zBF5X>n~epEE%KMkrMJwRQoT5qw~evPW4?ky?S;e8W2pQ3+on7owv-ZbF1YXaj)!jd zzKJC3d4VOu#|;p*U?GA+N}cX2SnMoCw_ob8N|Go4`dEhoBXXQ{JoefGg6l=pG$$B^ zjIvE{>r9&DnKc2RDuPC&b?rjiT5Bg7a$qZ_>Y$Ca&#yBgI5>p@C-%aUR)|~ET9>Dd z01VL_CMZoXZ$Gn(etquD+<)e_ZTSA}4=j#u&ZVG~AGqB<5W|9P+e}!R57csC+ZJ5k zE+(oIONm@k@?Ezkh z69n!#HjdhWc#KQ?8vU36_&YG00S+4KyYVyIkN@nwyk_s8Ka(>=?RhVoT>|IM2%g3Y z|LgxbU&Hx5&Em(el4N1wTZ~sZe65wM55>S^0YJY=X_(twU+DyT7hy^}`fLO+{~bS8 z0uQY#rN^7;H97FB3*Ja~v(mLMcI0eRpV7sz;ClIvWxar?iIW!KIM=RCwXJ-97|*AR z;ftV7_OsS3`FoS9R`sd$mcR7#WV3ZvBZKu!f$8--<MwVAaLL5qzJR1{jRO-TN`Ypuw~0f^bq0CC%ry5+7S#Dw*7MR0XDg$N}^RmJUg z!+ziKal2u^-w{HiP&jxXM&usaoQgB6xk{uw-QfQYfR%+GB{Vx2ln!TEbrLM z4W<4xU{;J%4D#7dc>2QxmvBsN{?GfKZG=&A)*%f_>=0%@#>F>}KY3fS1ztUq<-*GY zU>8(Qh}Fl=_hX#&upW*i!ZE6yH5MarQBUJ;JhaqhDx@EXuQE)EGcNd11JJ+kl?LFm z5x{TqZ~kZKgr^R`uodXkQu`c?^Iy`wm;gOrykb0#iynbKuQ~utK!aCd7WAvvb>=^h zYE@4b!cjQrllVhU9R<8B0L~R2^~`~$C6o>; zYHWbE$c$93)-si98Q^G$T26GJb{6 zC~XsLO)SrTsD=P1|2>N8fTGDB>|0aOW*c?>MElde-XT-Z1%N$MGDXg|_uj@5>}~yq z^@W;nkzDZG5*zLGA59#`RsdK;ueJRzmkYLKb+>}xI1b!yHy3>Z%aU+i-#`Q`F+p<1 ze!t;*-LNhRN8Y{dE?{ui$B=7WYBqi*Gb5A)<^qxB`5C6!x`hE)bFp)?Q)6~Tkq$4u z2(lbd$|!Y5E+5GGjzexZ@;i?F6H5xne&6PtQK|uc;Nu|CS>%RiG1zaNGqrbm&X6}f z(E|IyoF2t(bEe<0d7nafK0Efm(0M(zN55FdKcB3?t7)+?5{B5*>`2vs(Voo~5lmXQbiujpf<)hiH&d!Sei z-Q4L|>>7h%MPX)8Os-Q=k8T}|?LqhB2`JIB%!j43!cOpyqZpd(JynbYupb8mw%OM< zqc0UIrMo)}Jf%ae>PXvsc&pld-5~_r?|1y?fBp#(!T0aq5M#o7`RR#@M(kVCij*SW z-o9a37jSMPhJw5wHuv{aS@uLVRe|OVVshrXfWow3_4%mVkvJkm#o~!_>Z1V>!4}Qd z)?5JB>jiO1sP%wK>2qxhZeyVkVvmwu7W+KbwD!4wKgH?!-?cJ6e*VDQ z_iwmdFWC1Rj{S}hfOSoHyIeuAVig>F3!fa|Q?*z!WsHcmB1k>Vq2 zg#2ET?dK!$jvjw8uALY!r{$7Hh}wL>FdO+V4rHI~KEH#VKfgr%q^uce@p;A7StH=Z zfar^#Bh5zM;+5rvmg|3J@6^AgcWd@Z@#0lK2@7gPcoQkdj;?IL9TzY3tmn^W8`}J> zbn;q0egdDx*S^vKJmY;|K*lf_WS6Gr06fcC#=Mb2pq(kf3nbH!V(II}qov>H85)J6bo zbVlQatB0+OR#j-HHMNsxsnxm!+H6bC2voR0&L+!hs5@(ix=-C=YAsS%Q6Z(EWJ}_! zQbA&~YpDgteTS5aTnqG2h~$$XiUUKGaNjfbBRdm5KtYIUw2G6@d+lVt_-Df?WaL6- zqvdf3sA8jq;!qz^acprb?9Eed@uUG#;mBNoLPTP-;)R$TOKd3OCi-Jf=!-EL23H9A zxTEA^WI|Oi8*iZjx31d-QUS>olmeg?$8m?$f+ek>5J5$8-0mjs3c)_#Tu@R*N-Owo zaLd8<2;3k zX$HtVRsEz(Fpk2qF4j)>pJ5TqsXI?Xu&}8RjpP^IcDba~uXPH^Iu}Jyf+absR4@bU z5)u4)2qEG2{sAc&?3@BU>|SI7F6)Y#6*X7$(0Bd^`{8G3Fv>~Vt7Q;X@k1>e)C}u89PaE;mrtD-u^&yGU)0i9hJPq)x4uIn80-*1O zD$g2#9@YF>pZDza&`|)GfRIlc&iu`@!k?K=ZKWrX-;4IkV{84@SmAWC1pTJ{4=0h$ zi5kfCvbFFyXF1P`9@{H*`uB4ySf|xfg`gD(Va4_O2e$PJ<^<-1C0PPs&Em`ec~NG| zBy1eT*ci#UD2qlBEz`|8To~l`KY>NTG#gt4!aNJhontRlJ+%u4oe}M)yQXAU|5|PW zF(TBOQ4a(BG{91f0n2*9$H#{k4nEHmidKJmDc7U zFdl(*H;91y{SE-QTrSSWw+%PO2ywqZ1CXv@ACIYt7$)JY8rHa2xXrQOu^;bU zKp0{&@QDJkMt|)Y9E>m+<7&1+M-DT{tcs1_A!XRL9Ggs&AC`l);B8c7#VJXE9NAz* zMLqw*u7w3$MFTy_utYV%Z4Z@_79no$zlxlSg=UlMT>v6?A^<5wge3tnA*P6JU6GmaN+gY(57JLWXl;Hi&C_kl{uC3Al5szF{Ppus{CNK# zsPq#B1}};fp`zfG5I8|$k=x}cIPx8}9-RmANOt||1o~MN`IFR7$M{fA9rQD4kQ;9J zvlH#ZKJu&f{$r(fMUQ&Q1yBGi(@45ou}uuyNPNvoc;44s$lH279PnRY zg*d^IX1gP`VqI&ulg@?5d>=GjT*Tx87+(5$1T!NIf3I)!tKgl-)BNkN`~8f;Ik)=s zv-Dh3HG2+y(k>bg=kskfSMW23xq%=oB;V zGYg;Bw%NOK&)Bx~E%oTuFud`z`rd6n(3UHn`v%IbitkBZjtzBHb_fwMHj$srs-*(C z6$YU#oN)0QTf4JiL8lRi*6QTIkymfCU3A(cvxT&XDnf|3T!Ik@r6R_J%jM#mF8S|u zpS#YpHy1Pd{JF8wb3s}*{(Jbz2d`5YMWJ3H+M4FY-7sx|X7pf)FYwOr+6C z9M)a_bCmkSTzYJgrt=7aQ4hN}a^A6*8-xxNxkI!dEen>_DUg1*6{)=_vHKJKnLn>Q z;s=_C?&^bjzqgFLoqFoPf^7}bM_>4atA+6%Ua?^a^tBFbj*@u@LKB=-|J*6BQ}-Tq z^2^V2e8pqn+M{LeQ9MYKrm7zV+d;hF>#z1X*T{5z75&x-fIf>Rez-Ps0n>me@c! zCIrmK-mA@af^G##;DB7b=!ll%kUZwKs3PYBEEW(`UGd(8G~zAX%VlvcKRAhe69UH^dS>A(7w$PIpK^kWzF8fpd z`@fq@qzdl04-_r<`1y{1`Th@VmlgM%?S5StfBtzxar@sA5(3#Z56s}SSQn!hLxUW! z)XL+txQnJyqg|6)tGfaOf#>4e1D>30$i%2~TYFl>+g>SZpGPi-LzIkH02bVi1LP6g zi59cc9)~?^rSyBU^R)CS@8gRX}4c%0|M*lWN<&}PaWD2Kvlac{=^&MRwNAD zHuRy>i(hniKM|jIuY_w8j10(6A!@Tv|7^v4qzKTH18ax{wU1*}<|M&!-I|sugs~RQ z!t)uFKdka}#vZpCh+eZ6Uq zjYof@Wj}~rufBdx?)%Jz@CZRT!-&o^9{NQJVCV0XOfk3T=*i|49p4whu&B;$y&{Iq zaH|MzABv6+g$szp`SA2fTZ>N{zQ{8r(CB~FEkrV@bhO_QHO+&BkTU0_{rg=yU(u?RFBE4zKu7_qM|bxuuU>$krC^d4}6i$0;q7Wry6hXRY}r zSZm#f_xBr8GVl4A3EQSCQh*+%96(ZsDAUIerPl6gXSedzT0K(N7Pc4yaz1do9bH2J z6>x}90!k&^Z*Xd%E9IR{&_rhx1C|g#Dfn1`5i}rba{6I#kdS9-Fd-&yZGz2y34zuK zVe-)c5Xi}d801acc(^a{+5tr5fTswFt*EiiO-c!MvBIP(oWXAbxxfJ_TKw;_+4IG0 zX@=z}U3mEO#}BA;7pk9t@B1AbxQ`&3$j~}Mib?|R5qE=O(4LpzaGk(|IH>CA^S~~M z6c^f^H362-A*cCl?|`*=J-1?CPUKZpMb(PK3s@pTh!GoB8$ENj=wvaXW_5AsywH;u z8qzy@5A*4Eh>@>H0p~-Um@0aC>HR9JxiPTG1#vcWU6w1B<$@HiNb!moH$+Z|9BuyI1eM^P@TO12u1=nUXMCql zEjcs!D>t~ScB>)oJ3Z9#7lyb=pSX{V}yKHU``wz1C# ze3or~YD-OQk-^Pc*KLW83I^HcAA+;~LqJ?2(z4i}m>|{GpmHeQ|N4RLvSCRJ{>p#i z*bn^i{k!WELs1Z+1AWI6w5HZl;9_%9( z)CvLANdP$3AVD>;9kI8S@o;Ez-@MpD&SWfvWnH1XL0ECrXsGIvaXSv&?{^e;gqQ%) zPuz}&MyU=E8*}Yeu<6uwc)&?4u&+|rDeLfL-tnb%8_i0Th zJvotnJtmfinSwn3es1Pd zd}`2a5DB;?%oP3!ffg_&q;$o)e#4U9u%tJnWHz-HBRWP=&))y8bd|PN$nfCGV0I6X z$aMPe!W0=b8(VcLa*7-8SY%N_dnUw_0f{0S))i3q5XhrSb_13bMVy6=E z4e&S)c3V`HH(Uvno^vG;Kz%Y zTD`&!0U;SECb>l{gop)geAClS_^ zTnTUP5p{8EWG^tL#+vr$&fi0+E@mXN?Hsc0l; zgUx+2gMnyvpZjPrgop?$eu^ZB>|NczXA=nS$AKc*M~JNeFid1)VVu{#xkdeYljw2o z^h!C`4lq0s0A4$?phlZ~&0*0gXXV${#Mf&xePI}!|NS-VADl$ zu)64s`@HHDb$Hs;&01p7vga@$ebiVuH01Q!r*Q?owk3(`k`sdAZj&1pOOKK%t?@)d0a z;|EG9c)MP4yf@&cp=P;N2F6R6;H0KCq(Nd7m@F+}A@! zfWiZe@bJ4Hvvgls#a^Vl&Vq43r?_+)*yk^#-1;!m{A{fIdSpA+PQpyr!+=t$zF6aB zB&nYE{l{X6yY;zuOVn{IGCA)~n=n5i@Xx3027i(c)&lUvWq90YKMT!!<+OX{WO&s9 zcqPD(!|z|aAdQGHhYQaeDNWM=dRaYvrC$7eR`dA5tJAXdiJ`48U=P!UZ@5Z&RgFIF z?HUwH-P!{aO;+1gM*OEMNs;R>!hF)0wUYxkj z^JgK{RiB_{|3FXWY9c`*hLCi1f33A!tO~@l&7&6!wkcW@ND+xaoUkN#ENjNTPc*kG z*7|o*A3a3;s<*|=eV`z3Pp4=$uCa`ehw9h~KYG9pbvPA6ME&GbUHKop5^um6?YZ<8 zkQDkTh$4eS3u|)tvJ0>V(zq?K+E2YHIjBXg-O4cnq`2Si2pk|>EocS=bqZJr(Zp+^ zWhtP))>?H~GPQ}z7?{-X?DQAj?wwVIlGt`25)MqlOFZt#aA>jF$#jT;s&UaU36O=)$Q_x(Lv+0O+|~(@!jV z>=VDK4fJ=~7W7LL??3O6?BDOnWy-&cx}rfr)A`nV_2Ia)f$U)_nSw?huvT;>Y}wCJ*yQ}N{^~7C1cyx zu{jcqSI{F)?bO=F9Lx+U(g|jE3S}4P`C>f9FSnDa3A!xgMW8)7&vNJOv{#BH^DU0> zZPd4v?BrKUb#;I4?d)3RbaINpX3MP`U>XS{(P=O=ZlLJlF>uX*bZb^|)pTo>8bD^u z7h{U3TCg7`Y}|K4%l`5GJJK5Q@%|GePV-}n?QI|pZu)5MNd1SIUlNSsqHONEl@HA3Q30YJfi-)Zci4f>_e&$@&u%*W%8 zIU-WBkgDj;q8Lz0K&jDnI_!KM>g&Q+uKCm7(Cek=yj8w(-8Ty{x+a8r0bq%TT~E*u z)b#u5fPExE&k{a61i9WsWZDpcIk;^&y!6F*;PIUft06=lMkMXpx}}`77XU9AIwBCI z$vrZ<_s_yWwR>{zUHpRIFypml_Io~01Z`Ny5M^nk=|e%6;AfZy1AAC-wu zYVL=N`Dxtmqt&pdQofjb(DOY$POh^mL#K_6dTTCp#d9$4a0rNL#kO5=y?n!E`-XMB zV%x4*(xoTOwaZ65J^0krvO`)ja9txP<5VfqV+Gj?0EhMXX5V=6s>KuN4!e=OJwE2n z_MW2K!g9?v7SPfQwww$0`vKHqs9|pb<(w_6yjA!lr@LWU7UXIO;1DC$En!R}j*Mg9djZfk@ao+2C8e`NV!oH0Iu}!%Vv$Wx(AvrEzA+nL z=mjb_k{;Rns8Vnoca&UvTiI-CY*sy1u-Yu!ERmC2LFL)V&lCud1#jJNA zD;_u`tjhva?PR+)2PGa@UuNz_ZaX#xGzy^2(L-PaPLN_&ILoYOw-MU-t`x)UcI&Jc zb5borT1!Q~+xTf+R$R9Y`~8mnz9Sz6-@ku1pwIn&$|DeWSCnc_oHa#*g*%;z7?WmW zI7wzlQu{k28Zy=f3kqjy=~-=EQ7iYwlsO>yc&2yyNSeyZyIq505o5CK0rGAm2e2l@ zn4nsbw0hcPyYF{YRn($THbSR71b_AMA_hDLQyagv6vx^}4`kN|O_4rC0KYod>SIUY zVKdjyon^1v;WSRb;@~7ax5M=mZ|tWm)Yp{`UZe=>tAIS`HK^xg^e>YaZZw@Zsbj6GfBWDZ`-7t7CyDTowDh0>cyN58akBMUP%*dlKL`Gt-@xhN zYub@l%z%fqD@;u8CJ3|#>|xfYj~~B|U+$~C-XoD*(^z2=X zecwG&cBryztvHUOlkF@Z$C&xYo-L!k^8m<&apV2XHoRqBAw;M|SXLnEf;AVB^U6AvE5bbrn-#$?C0S0i{Hi!Jox))1cBmzpVcFK%){Z)om0z}Bi zVTpB3Ly)3DmW~}|KY+jp$!FI@CbVSNC``0HoeJMz-bX;}e$rY|4+9w0{SK`G4DnOD zqDFIYZ0pufx-llO3J_f(6M2|Ud;GMW@Ccqs4+2OgtEFocm=O?A4%24Dln`4Bo5)9H zin}u-N>z_C1yu+pPV2 zyGu#Y&;P@5MgAGmv)xbBF**FpF0f9|3r&`1rKW*+p8Jm%Ej|j-7bAhWJI!aIq<7co z;n|v<5YK6V^rZFZTFch`=;3V72jQ7l^XhuM(f~Zt0Ez!b0bn<)OaP}awNK8z%~Q(W zRP8C9yI2oE-63w7H}X;Uj(G|_bmphi_frAT!$xfOLNfnUI;8_Xdn|GCdiQE=N^0xh z`g95~(9G(Vza?Feocw2n!HN_Yvvav{kVK(jW?Fytaqwile6WtR0>A}sw&~X~@0s$k zn>V(pku7807XS_@c~}QUDsrvZZ+9H~Zf)vyL5Pg|{f^@>b@95co;xl$jvcjB5F77a z+;+#zSeAr!Tk+%Lj>G}mvKrOR7n6Ibj?k@0iKiS2J8eh*9QK@{r9#QVcd8VWqo5!o z#pnoMawo!I@wb+(D%@vZkz(w2xW=7Owf1{V(N6KiJ>f9Aa4Y8u&X#UiCF9RO|HS*x zccdkD1^Z=L`W#+;tPos#!M+i^e|+F_xge(GmdfLdD)v@wsRe<_ee^t`xykI2(JX^G z7u)<}gm^JV&7-d3R$h;K^~_(X)wu-5W)P{^ed9uQdT`yHZ+b=$0H@@HU)1oh9kKV9C5hbJID^6M1hXr||qw0>JQ2;;;h*XP0s6Z$ns#w7p-@v>nkj&?_vH=I-%Cb!K`V|NFVbCv?o2% z3=?v7pgC*k$@@ROm=lBH5r)({hApzQ>EK4^6)z6j5BDnlda}|v0IG-~L=W7ULmD3{ z4;~h>Q9ya6*q}HwcV8afw4z(jx*C?p3=KXfnm5Px!QnHZM8{LQ?zGJuCs&9*wvnDA z1jq2*MNeI4@8Td+(rQ;gMqXU#wP0D_u*55%3m_{P3oMO2bb46Jc5l?c&l!Ks3P|3O znCv)HL8krmZ}WbI8gbC`$!&gbN_{CAB4)pXKX^<4r)UB$UuX@-TM!6ihRqf!x-6#7 z-#n{+-**pGs$B$DYUxUJgXh@85s1OTP5_5{+4GURs+@vtk}Vj7n29M zEX=58{P^<+-rwKx$3MOqn_yY7#E75A?k!&GOnp)yPy)pO(HoX^0|1m_t^ck}Z&?d1 zuGcvZ?59IuW08zLe)1b7+}YI)#H33wKkghD1ZrlBvKk*U|j+7;%Ot4<3K(R z&}tUJpZPCTFi_awE?#_F`tSBJ2rY=IV7u7Uv+p~8{QQY;-q8vnK%7Z&-8O%{WCfNl)ao!A zl~y!)R>uQitanwyaCej<0B09P%A20&_06yB^FuS_HW8bi#1PLegQ29?7WYUdD>M^YWrB?j;{*LYP4XT9O&Bh4jxSM^DTVh{R##*_Q%Ym9R78mS9Cdc+x z)M^Oa7#JK@XtmAxIPS>RRNgTJL}u(+aAd=|F6)9A2&Ei7tW>IESvHg+`1tt1vaCpp zrT)bwV!z$-{{F+~>UPSCY%^GbqLu^u?E~Mxe@7r=_cNOho)C>^poChgy|)x_y?#T8 zrcf_c@a^r*1%Pve_**@5lVm%x`j`=SWd7k0Uz%_4HhJV z6az}BxZn0p7+e=;{D+8-_Zw<1_|My)*tQFnWyAh)N8n`4eRkX`pT~#>wz6;|fbsGE z0RnKnTu^Jpe&4|y@W=N*@Z-l1{Ez?mcPu>!ig7;*R;N80anDzI@6-`%7lj%*vIRa7 zM51+8*bWHAy8t0*&xZ&cAvL?ULAnkh1nM?Ja(xF?>0LQ?fRcg2)Uq`wAXLNc=4=Gb zEO)&Be8*95IPyD0ceB?v0j68dL~7^4i!?`pgToXq`laq5X>ELwvEdRLsjeNk=8moS z8W>%#MWYShH!?MHW8Wv(*W7^zraljEtz_rVkd+*rPvf7HbpFX4^*m1aBBhI%yBHb( zu|6mLb%+mvRl0+0ti4S`13%D&iSCH=exnu4$w#@blmFVYZTcP$*?P3AF+JJ)XzCg$ zWOVv;Samz;&_||?pL5ovj4^v-+Qi2>J(EXZwpP_wv_7U`ZJ+B#I?pfa;EeL z@Cjb<;i$5^cXOH;NTF)Ow)S1BbWL zlN06k{qUA|KuQ5IGWNZ8c79jYt0FBC-l{3duDWIpM`snv;ptop+Rgh&86bw%*Q4GMN{Fo)8omR;1qaLJEoJKb7 zK1^xp@zCGDeS=g%h@l@ox;mY>cNzQd^CD_k8Fk`*44%Gyy<>%|B5U?U)tkpBj^HJT zFK~47yPv;i5>fSbJ$V<`+gx3A+VMqtwr#89f=R${BwM5(viPu&NaHsc9-eoAGf z8RuK4lfJDT#CmdT%u6gi3fmzgm*sIDjbRO(zyFEG_e#s)(aSR7hRH3Ij|ISBfXLK- z*N4!$S3Zsr$*d$VvjT7mu(E3zA2-t3;`qxvKI#a8QNS?aF=6Ua@JO7L@ zj;8dL-?kLaV4}XkD^H{cI%@|e7XStS(6lYU0V%B57DJL+H)DiCv^FD=JV+>Czh8Mk z6OC>LPC3ub1KUv(>_Vza9l9eE`&oRU5EYbT2eV>{2{GDYEokcN3L!!W$xfnG?dOT~ zlN_LUd%FUlu8JSflw$ey!SV%SbedVPg|(K9V?V&IIy&+(?Q8U8eQBVw7MjyGrcz25 zkY)e-wyCzwwzd;)2;dk!lS{iWiir`Ig!}E@=khU-TdTA~gBo93Txc~ma|TE1Cl~VB za23NJQ@4v!|DN`YwT-qp6WV<|bLCq!Zfrq1-LKv_9o%6$!%wc=slqI0eMnDutNl;w z7BuVI;h{3^^KAIzd>p2qW=3#`Qf~@|V3EfA(Kwm-;DCSmH?y1GK6bk{M?qOjZ?j)7 zSCC%|c8qbZwXX?%MoRD~Yn(jg?fGwME)@S8t82tU5|%9nj3con1kGSp{!kzX;fg2w&Vj#sN!Mu&x(e*6Sz$IJ|s4gR}p6va-$;xRW{Yj6as?L}7p0 zzR*a85rG)N=k&E6b~@IAEhU@zdMHq-EtSw__JIR9nANDC;Mas@Nqw=qT&{S3f5-j4 zdkUZ3RQbp#sN| zc^z%f@v}zkg=P%;OmCdl_SO-2+^6)5C}esHQ<~nP;sv*1T>n?yZaOuO8zJ^A=A1_i z-3F)+4+7Cp^nPaH>p_{UUv9*|4E({b3y!Zi$09NWnV-Z4zZxMtUSRSdq#>k`$syY! zG);fNfe}N(x^38&iveCjGV9-T&3ud6LBG8h3>7PErYjCF~S zTCm@Dl)QVZeL7u%ATFkB3+%eC=IzgBS^N3(Cq6ztu)FYUSr)`--yh&OVTw*Ebd5r> zJb@Gq5_DusxU&v{!C3~_V!Y=WcF|6OZKH05!R+lnJubd*hMo$i-lDZ#rJ;aRObC&o zRl2JFvTl~czVDD)tYApVKkIk~ak#Cix)K|(&!TsXoRIfeq%!g0t{ZN*`w8p(=&Ns(&IUH(K$9-X8w4@-ASRRvZKv8<&R+a3@o2AdbsTW28rCPWbPGFpK+TgTfyV8P4I8q*dI~K(k-}isLu=pYR|&c+Wf-z{|wQQrvl(J zs_lu_qQAS}>GT{w>ersH(MwK(Yt~v`$r&W{Sd`Ex04nK|-!e@8_m?SsApd=@@r8f) z#DBVI4;S{cD*f?mJ`Fy2;sHEgJemMUCQgy5?P982$;IZaF<@OTczgQ;Yx<5QUHr5V z#)75ugP^}G0KUFX^ibmA<+X_+Af$_Bz00@}N+DF3y1k0e-Tb8Aik;RHzVAC!VM%Mt z<~aeOUyHW+ef#zuZ*SjFebX$(ih+<4w(Wvas|f&0cF~G$O!+t!(A(MuY)SsPL=Oon5E-q%+wJD}yFiuu?@WQQE(t&W{7?M+`O`Mp zY_D}&H|OY&({L*e1!}ZDW{cUSbMmE#n8rfYtc<>Jiz=kl-id1)p&^$o$cBK^`y665 zo=!=Vid=zO;oTXaR1-(en;S9Xz8@1$LMG@HoWE~fh~fe~YVf)Vq0KIQ)G978CFCRH z+aDY1w&AZofAs6sHfR92Ua$C%|M-vI$ua63y@){_>2-F^_~|5PHdVXlTjy!tcf7s5 z^-hL}AT4X}lQiq5{Ty;Ew{?Aj(;+EDgqR)*2Oga^UhGAZpjU@Ia$P`^%S{FG<3!;JO-%Y?b3AX< zy;c6G$x;RV#sTaz4Z!2Qc0Ul}6y}3N z`@1;LtIuLY%L)GsMc8u9TZQ;)LwmJ>|LU~+DA1cvL%;Jgel;feMF}$X90y8~9P=o( zLdfi9DI{DjZ}|512U7fo6xS*C_fdd#&Y1q}1V6hVKCKd2yM?uhnDnt2Uf21Xl!D_Z=3JoALu||!U;N}@|9@LIq{aUG?c)X!Qbcuxp_l5+o`f;-lUb$SCDNsXJ=T5Xpd+E-tq5QFipVKc7`x z7%jgZWPdUz?j*n$-#;7#kFoL7cnbV^!SL$fH;1;tf|Ya&-p?~F8l76a<3i}0)!czlhqdwOB>V|K*BIe14; z;0H{t8*(wt{B><1Y=y<^WG8(&fBS6X{;V+QMFD=V+wiJGq20sEy^CTVQr|><)@xC( zj1U&2v|(AUSe7dyTT9qf%C9zV;M2sdr-Dg;V=OY~VABL-vDSSl87kF8KAn(AT^vR< zfFVj`3e`ywzAOpR+oq?qy`tFf2k!gLgkhK5`2ZXk*Xx_9+Se6-{q-k~T&INu6Qytj z8^x&rom*CIVQ$~wu1_h&0YyjOK!z_p^p<)H`H=~bB(8ag9(>eddzl!;+vB0P#uayu zmu&}&mN_s#RLoW=S5;6QvtD&}!Jspa?`esK>?4y#Wow^O7q*I=T6ZRt3r;C)Rv$iH zzt`ilp;4ge*>2Ir^WxWd1T8{$o`r*Q@8ZlBC7yM&+60K9|Ez6Y@yGY?*s}qotQcbK z`yKD^?_Ipve&_SZ5RMWyqTl1jAq_U;iHhXOg6$saiGyBjJgy}==~Jx3Wwt${*uS>j zhdgCUFa-l1^}8+J8*d}z>{LG|fCeCG0IPFQx~g5f30>7}w(tbUm>A0% z!O`*n>^`vqpp=3t2TI9KAe3=R?Fo8ARQ$V}n94|hoNZ?#HhM$jpi;ITZkk`gB}Y$P}ASPnh^8jn$47(#|$&+oqy;ho!={A(2CCq=+#1;FD) zdnuf7=#T0U@mHAr66DF;4yv0u~o2QWs{i z<5^R(V47U2k2!1(t!x{$v^F+duufn`C7b`NLwss2`1#`pN}~gYfHg+rO(^w@aAI?Y za1}6#CFZJ+Mll40)-`FJGxj7!E3Rs()|wY<2e*zzFE)J6%PknD@!Hg_L|`!W^m4oZ zJk+Sg+qO+A1pB&@Gip`DwDt}H5DXyY7CM`$Hx~oY<|B*&G^t!?G+WrQmwG;HaOU6s_pF%c%Mgx2|+P zv`j%ZPpDQM%JTuX86-Sa`t%ff)=A03=vRKPUD08FlNIsB_q8!yD+qLA&77{oFEVZD z6DQh9Y>0|s@SNa!EuxvHWZlye{(02>+#&dUGoQXrUhj3!hu`WP0RIF78F+(ribFh` zCO>T#oi5OWprYN7vp}iGL7q-J_*6M5FPH?Mbq(f`#%GzykKf-O1md}l%CBzQ~S7#M6h=c-uN70bFBQLm}5_q(08-0wUDVI#n%!96N~Bk#~6owLyH zL9=6>Ls<-+n|s0_bHKJ;JT0)Ctbwgt5o5%%tRO0&7%X1csdbvm$af$?z8?tN1}4T) z4$o>Zpve7hCsZjF$?cNx*x=qaY#I;Z4tWxljzuLl?|N%}$Cw~d`fDHe;0VSUCvt=M zFtbI{Hjs#ps94+6Xtcy-PzBqc2KFMh=den}@nLiSOB;tU^#UvB9UK_>zW3`30GG?9 zJ23hk=Un??*|X6Pam2c;`1#`}(z@aMx9`YD#`W#mW0=j}2>jc>{Tu$H85I*6&$(TvDZ6t{=mn_ zI}UkAOhC>%6b0aOj4*jiTWU3+o62b|d%1ScYyHII8$kJ~jjuzI-#>5VvoG(36W~{3 z=*I$}|4y2mW;E%ZCcO*2Oi$I5oC7!x8dh`b{5X21=&P>2YOfTzd{eWBlYSm1PO)sI4Fn(O#R zuPtKsK^5N%E45Ut7#KhRt3s;-gmm1C`<~q|j?OYLp`1}5k8BX3fpHzbGr9+S-**R` z0Hp+PwHnc}#r_`0j{UwH`jjlnwu+s2NfjJYFV=F-9pQRnMlhe$=qU{xYn!n)CxTAg zgJGWvHqL;eI*HP8GqgO=)_uCB+MOha=-GwRSiFykktx#%nakt>X zX@}L-_%TLgI;QbT=oU=yi1wZ5(pI$Tbo#~Al5HFPdCWAAQ)ZUM7ze;RE8=my+&2>u z#c`C=IHr#QfD`zM#B?dmp2);d7Ej7t@cyx5zuoZd?ORV+Y?%SelCY!&fBf+W{@Z{1 zzi}J~mi6-DwBjxYwef+y|LXR~DN5C^X%mMwCcy1>$K`VA+Jj?1Z#XTFVqCL99Bt3u z&>)Q>%m{t~5TmK8Qio-=ah&ODJj$6Y36WeN${~QFL!M@}KH2ZhB_roMZucAZ{f=Ay zK!}1Pe{`x}?UquV`1(_%^;f6p9*j26@z0)1n(@6&jM*7A1gayzRHhC2v$5}IUE0w$ z$3xNb&;_N3lRniK-B9goWzzukHS}*M=IK9G9L%kJ(ig5Xl@o@3eD-J8#HsavIzaNv zu5dGm({CIyZ9Q+^Uur3OZV6&~Qss}c#yQKGQ#@Z>JxLzDnDB~?Tje-_6_JC33#89S zo8tCy2?rNR8GNIqyAcs0F=)9Od9DyxBaBLKb6JS7 z?VDC$2xP((0)cK-8LzeWhj_Lh+3AL+ZbIW)>ogZVZ-mVcT>0E09dkzvb^6@f+Z&c;>4L8IdK#LQCtKR(a`A4&-kAWU3Kq|^zuoTm^UuHVk3ar^DDZLn z!0qD$mnEI^*En7^iv$FO!?)%SoEbE4Ky`Yqg5Ul7+Y4J#96ZM5<0W)Dg4iG{YFNP4D z))?^d^M<##JO1%6|G@k09cx&vu-YzI(r^RhBjelme>`c3q}shd#*^?3+wRlAjJPa_ z&T>$t&NTS(;|BzaKmYu*-=A|QvE9F2C@MOIRB7L|V@w?o6rzoNg0lhO-4i>tX9xEr zs9Jbd;NoOR*GEw7K~D{(YlOgnzzRr(X#1QCRI6ERGc1V9R^Jd#l+v7D13R_cgFUyK` zjs1r0DRDA6IS^5~c0nJYRyYvhcDtD!48X_7$3()LyCrh=;6GSz+C~v#L|oEo+|+08 zEriE^PE(?j8jvR+_a50xYQAcLg%yPueZj(@CpwL>lLIFU*4$bike}J=H?r5oan0sG z4?aIeS1`XEk$KAAqotHyz^g2__@RRV(;mc_?6fM1<92s8J%QOy>T`h}<6=dnRFndT zU(MFU;HNp$I~@CgEp8~eLh23MW)Ps`I1oa>+uIx7U3A&HJzWgR*1{c*kZ|H5a3jWb zpvuCvEc@BPBUmu2#?bs~3Bg%6z)+2fKj~?*F5YyOnbn{A4}nCcWYgoQdT# zUqGL%dgsnBJ%6u0SR+ZzlKCX|(%cMr=Df9kQ-GKl1_;-Byb3dOx6Gh_?B~XV_xbb6>uW3E*PWkPU9au}XpyS!aTWF|cR}C{DQpP5SQ`-Rp5gh^ ze&iLj%DTSnRJ8ZkfHjRlFk+giTl_?<;%zF~SpdUL*$=#^f^AWbDS3;qsin&_H&n!w zMxvUZ_=%{`e~HQoHZucUL<;u3x-G|@1*qrKg}1|7*MfOKX|gAq5i@im{&lqS^traV z|6B;nif;-L$>VwzYMlfkBktAet#6t-FqVo~j%@M9U@R$lw5y`3AaPT~H(Qt83!VGsQuA5M}c;d9aHPT zS(r@-0ky#r+0^&U5e&;m04%!MIz6U1U)ObPn62wZ0Wl~FtV0k|=%b;_GqfkBWZ^ZUZo@N8$IMDld1e?4t;cvxb}vQOLvTk>2j(;7ZXSUWog2}8Y%o|K zF{UosY!SW#F&rRDut%RgL?^iI5I!QK-U4sM+_EevvOsi2sWw*QumTj2QpD}{Vb5S0 z(3fs5dv)@Ac9Nf5HYag*8xx&`d=H{NZC3F4AjXp=@beb>JZgD%ubA#bU%cqgmHN|+ zbNaNJ=&^NWbs86(N5nFrjQO{;0bl90K2gg}qdM=HXuB`_LqCl(9$gJDii;<~qnz|& zcsZ1(ey!rCu$@m%?sHTE`-7st;kkdZOU&*4)+`Uc z5s}@ZL1*1Vb7v4mKQ#uB)+c*UD`aZT=Zp+@Urq}X{9F{+O^%wM06jAdEz_Vx|w zs94qoBF%YGE#8^J1VEuFQ0H8rw^L0k?2eML)&*~GR~Ka3*RAV{ecyX)zIw6ORQ%R$ z;QrY(Wb@oX5f3U-krP3(C#g+cH5+&8i0O7s1k;G7K5L(w(m;#g?7BSTNFsnFZyIUlz92kC`U)C3iCc$}Q~G?MqY zg~s6Q>3?)ZJs8dUd!5B<<7?*wqTdrwCscZQY8Kz1SkEnQ?Q!x$TcFeNd=L$vJFi2P zKW%=b-sRNE$k3P>G#&f(OWWUk(w{}lb4&j8b&4+zqB?yBm=1K$-5IE!|Bj~L*-uvRF!UsEmB*J{Ew2)K4RRX9>OD_+M?rk9+}(!1deh3wH7^ z#T)wi>%aQGdE=j}q}IA?oNsUfVZpk5!)5)3%k~G>1&793`)ZjZg0!+>;<{+b2E5T&kD@YmWl#OlD5w$V1!ZaZPC+UB@z zmo5hU__$%;KXBi7unLZ2A9K?Xe6#>>8`r*Q9t{>0xQh&>Ru^uK_PwR#(FwTIL`$u! z5Mr>IsFUeEn;HbE#mWX|XauqtNa_!t!~Z}3&wt0Z zZn$2*xnlnf9PIOIuf276hzOCx04zOp5uxYAzNQms+>Ul4>Ze^7HIDHZo*V$$Mhkv| zpFfv&A1G#FAp6GGgt4_}e?ZM8WNqyLWpqoJO^Oua;x?&*T&zg0b;q7RjQ)4*IF1ZZ zv3w7=zQWmKJ?)VyP%R{=7tXF3fs^nE)cVw0d}^A)58d3)-2#;PaKXhdSE0F;$yNPy9JC}NWw|^kMr#6 z7i#=R9{#71zU>d6J-naU0{?E9(61Z=tJaAUZ_dq8YvRG#|xK1s?b`z3VR4wTA zQFh_g)G=s6MIs=j1tBor-`|l^>ht-WGw$~r?)MvxT)+_IV+T}F3;EbVnjsl62Ba8p z-%Uu^EQMAW1iZa{!@6vz4DaS^Zs}+2Fdu-S-aJZS@%gSmFtv!=1}#AJHutc2Wl*;@ ziUD0aXX!>?yMoWg$2pr5l%jfNWC0ciTkiGM!C;1ds4cSGt(IvwY8FXkrD&gqce#JeZk z-MruF)b@UH%BS2EMDzXA!Jh*=%R zVyfztE=c?hm&vn&Pcx*|r#{@315+WVeS>qv2HZjsi;w#(B}E7zs?Go#|JM~?5U{cA@CK`P1p(A%)dP*OwplKZ4(_% z4%04FZCV;XWGVN!-=X3quyPMwYK2L^|4T)Y3_y^}9m^7}IM)J^3@yd-Bp!8C`uQZg zC%}4W&p9+_&fI;*{OXtSxo3#bS9?Ks7tGu6w7F}~Ll@)J>YQ^haVTg`ygSdqM`vLC z882ywsmE*m+>`&xPOg{_eEjfVUTY!FLPP2uj5C23PeQ=a;c$HromBc~+F`>aQ~O#g z?$J8{e(`4vFyoQ_hdwK7*M?yu0ChppuQvWyK|Y_k3uZdtD=ok)Az(%QQfd0x&wPAX zIQZi4^G&8?@So+1ZT*IIxgy04A*{ae1Y?K8MkbF!m%;acBpLEav~l7_Jp7Ea9Zv^C zo?ldu%{4H$$@8NW2=2ZPg6^Ij{Ti^?!!Wfv!A<-Vno4d=rXLU17xW~v_y|M>GAVJ zuq3_^BjBy>F5L13wM7G40w8*e7Z5O?wH<9n-&)fRRr~na8Hnc?Bs+f%xztZKH1X?D z#_y3j3F4yTmhFTzeDAinh+0_C$OLIHA?Y+prr-!-(|D-bD1cxydsW4{EGV-I+6(Ar zH6J8VT1Lje!~uBPVEt$F z?25tfiOu_S_(D4{P{8Qx(CHGKkOunX*mw*cf`@v&g2J9hC(h%TjFPQ$MvzmNA083QL3DK(Egcdw+u zLl$h?H*DLRQ2>{#v;Q0ae~66~G}$kvS&p`%LLSB^^ehy_>ui7)Dq~)7!OMtX_s}Zz zA&qdpR))>ZqCGMcOh6zM5Bxc5!I3R?w5k;iEY!K{V8XJl5Ur@C;^X$wM-vnn$36ET z8S|oBw!r0bL5vaa@9)St_jYhQnOSEbT9rCc*xDxh`0&X?Sjcc1m~FDuihVzjmKA}6 z1*xF%_{WJb#RNe{?chDgoih@6JhL+G3XA)27H0N7Au2eaUQ2$&D#yd!6e^ggmBYy#Eny<8`V z+9L#}wWkKo{XC}CQNv+gr|_u-uK{}cH9KbjKBN!R3zw8pk#!o1&nI+MJPyn8n9z6H zTS-rA@S{%Vx!^!QV9hYM^CnE6?oYkj{wl5S1s-QE0PI<=(@5xr2vEN`CE~dN=p&Tg zg_dbA8epV2tNUAL!V>p6QE5a{`b`+ls_#<)aQZQN5;nBt zyZJ=_m?QsK1y0n}A^IVnRK7L_Se6SeUIZ-56;K1hFbAtjeGi=j8P33o&*owCY|`AQ z^zgN3d*t{)XGg(Y(S{ft0KzBlyd}Q*|3a`AhxHJ-K+O{Pj^pSjdt&Nofw|yxD$=G8 zkZfTj&hv+&a{-zqufcp8V_<$=Ap~45SL}N}r9M^{Bep=D6H$^TJ5duzdU{^Y#Tfn) zag>VN{f-b8tjhw$t=p#7Wkb#fI53uFL9M{Mw_6u~?=dB05eN;z6nXZ$?X}X2lcC)A zQANp+T9KB;lIiaE6QQopxLqI_LqILn9T6kYreT5$p3@@5qnMW^xpqMZOvT6IQVRk{ zNF3uWZGL^UagcR3ss}=~)wfg`T@V2^kAKIv@89tD?XACuKmYm*m+N=z``%q0O&bEWA|<8Jukq-h=&;mzVQ>Q9Fd?OA z-H;fesE8>cMZ0Dx01_BMEDK_`sP);d^y-q7|nWK23##$SANzLv~zmre>`acQVm~#c!TxKOTkU+yOWtc1I|Z z>MMHQ>m6$TTC>Rhj+OjDhw!j(_dS8gonz?sP5RX4H%9cGZm3TNz^OhWNJj^c5po|M zOwUGqnvH`_x!Wg^#`F~Q50<8?(S;U|%z#0X`iw6?cr~bcHM0i|5rip1*@aF#rQ^|W z&HvHbPgAvPEiSkI=>q85egD1vA0w#F_P^G4@3j8T$2`L!K1XDBtA^s#0ch8!&H1hB z&nN%vxxJ|#7$e%YnW7 zwyh-`!-9RkW53-zC5{JgUF`(i+yt#Va2yASEr3Y%!!zLt9F5H{>JA1>s#@X>`_Ojs zpaJwLwOAY6J0itr^C67jq2RA;zhx}E`rorJBWh`WZ4TNnvDFy=12jV@B_o$&G)rQL zS{LEiJ(aBr*2|^G!_M7;wpjrHr-bMumigHzKKo97-JhO$FOH%U*#;G=+W^Y}*E6M)A{otIh1^2@1@b7?@ECusI_5 z|NH;_zwzzcH~iyY{(+xAenM68^Wz7x!23-w_h;>{DT z*iTq7`u$KVLRq0{F^Xwaa3Dl>m45ZYl-0#0?NC5NN>)8=*LJlI4r|4Xi7KrCh)O_U zaA>~!ipZgJ9mr?7GU;7PEy%@3L7oI@Zj*|Nih4Pa%N;QQrHvsASroA-1a%tS>l5$f zys`z}p-Feu69MVVAe}Y>I4Sk@cNj9gpw71Mzf)n!s_#yhG@XHUa&6zif#J` zw(YIkiBd4LofHGcn0~@@ygl?II9+OZU1t^Nm@T##-hnjMQ;Xle&N=mykDQ37Zh*Tt zo0!dU!ZAcF6j6$0imNE@M@2boh8QAaU6Mgv?l*kA{{&PK))hsoZ)TPQA7g-2gXBOJ zmnC8egkwKYy=zeO4u;~}_wP9NjQzHQnQ%XDxbJs=kKEk@m&*mUR{Z?&!zqLTwPxJz z8GAnL#72r-GXTc6t%$*9!?)Ybgo(?7QZn9e?@%$ku#Iwnlmafx0x20aA0QR1DFV7; zzwb!N5XQIt?yrGxxxN{sCTCEoxNH~v_16zOSotZx`R~&bR77Hn}d$6EnfsnfRP$w|kyeWHOtqLXa zE>OFR*$W-+!b?#&p12+IEklH)3BnCEj(!4d7*#Z(i7DktddCBuf55#1YVauxr-sk^ zJGnrg%Z%CUuT2{uYGWg^uFA8Re006glUrNIVCr%xzYwGA6FUKO=-S{*;?!TKQG}Du zV*(fc_O!-_aYl1boklKm1haOmH(@Y*w8x=`j*=(9J9Ks(BV_6&H0T7;QFw87Z88Px9k6g z?{EJ*-Y)-&7&p%V_hLvIq|E>=@D~25C9fx;r;i-yG+*i>SEwt~>uF2)OVB0o?5Ks;~$%nuQDMD(oR=?W@BblAe ziY|a;O4LfpZ>MUfWFAWOM*pj&fKx)v1t4^svWWu=N||kE<}x5vD5-yLge4`98206JV!@Y9G5)%6a7B_;oF6;ciyswU9$1v9eQ0ma2-5(>12 z?r>lq4TTW?f2{p$m)y#cr3r8I3xJ4B9v(^6Js)P)`~QF0boZ1>I)|AV0l?kO-VbJe z0U|O9M%0Qat4H059|u{ z5kOGaT<+2KhqEhyPS(0UG3X=t<{29qHFkD7ko4&o1VhT76~xl%qB5v(dgss97?#dQ zkuDTGPO0hWR3I7-yTLC{{*xn%PKOGe_V8v?wWe2y2VKc|dm+b0SRSVUI7g=%XXN;SJ92~pyH(VA;6bq!+GzGFH9uk`r$bGI076hDCTMW z;IEQ{4*$->`w7eR4fFgr{Qmvl@a^??TrRKhPH%jk+)(tK@tA{>{w!Lnq(M;g*^i!O zK^-6FgL+vS@s9_5Y_|qF6D_LZx*+ErIpub6JA&;+vn7aCg?NO69>n+iiha-RX0>ly zOBD0ATdrw&-s|XcUGLyhFkdFb5U`O>QGx`#zrW*tUt6$I6*f5^5a)oBHL_JiaJgKt zSO$Vm@x6%j_=F$y(BOMMJ= zr(A~gMeP{7#gVGj&sVf-G3G&^P!&7)TKqDXmN1x&DmYCML=N}+tsU&^dT-yaCn082 z*4Nj_fyAMR>Il-FKsEw)mJd*}qM(&mp~`<}cDO)6Ayr;i7AY4i9tgRpfGt`w9)%}&8sH|?Ar=18Pnw( z_I=0O#}8azU-0(h4gcf+`k(mY$2-_D_Ehk1|MqWqf4iaNf)MNbqJ>iZ9Fpz-#&55i(pmA&dwbS0)AQneTY8$3!8EYkuXV%r~c$tbqcAn%$5P%V~LfIzRQ z+JG&~VpE>SowH^JnEKxYRz%%P?!2OYrzzrg6MU>6cz^pRq-=P3xnP0dR-xyCU{}L{h){-!B>EEbAnxvmVz%GNQ042h90*VCBO%Td@*c~w;N|rjzJ2?K%kqLLMunQVSk->Lh-4ftzV;Yh=eF0$ zgdW^z9aFQm9bi3tVtAWX)6qbQlP0#**PvSt=Xus-sZt>oeIKe8H5C!1U90MzRX?GW zr2F_~!TZ}AN+X(igg}^shW&W!R#nKx17g;x)sCnM{xtc{vJOH(oFd-d-mvd`TLp}k ztx^iI6s-3fgwT@MXi(f=uUGA!v#ulNd9q&--ubo%Rz<&BsH$aev?O+|MMd*+i-#5G zbd1WS5e@6^vWwe}NtlHhQnEf~KOI~JF?xJ_DCRf>uLo%hTH>}!tD9!U@D>FXIo&ra zg%QZCkglrg2l8RM6@qJa$6CZW^2j3Ca{}##*A<2jb~s8w3=Wfv_PRTi%vhbSWwy0I zQbFDmrfJgWcot`^a8 zeiQ2&LfdpHS|C^&Db*!rp8%18j+`d|5tGcglnY+-tF8bRhu{VK{TLxj^0M13pF;9U`ZZZt7k2E(1(NDsFKJ#(XCt)+sAMCU5^YaVknP6_rDEL`naaaS; zai;S4e0uk<$!8ZV%PTHs`3oVMzc{quA~XSq-mrzp)<}b=_<)k4w$BmK*vHYbR^KeO zrnyt`Q@IPSMN+D;&crJ=au(a|)kAKyxO6*R#=Pjkw69yUSIJ;F-L`~mcwSd03;%s-H_gCo-=mH#`^};5MrAxOYWkgX@Dw@?aj--|1PnMMHKgwdwYlH&~XZ2_c5br;lT5!fdoj>RPpi*MNi{v%?FDmq-Pz}iG>XI z$MZe=IQEybRp7t$T8t}VIZxT?nOK}Z5s?qqX|sOULff63Vy->K@MYJH|H3={-~6Bd z4*c&kb4Cp^aV{XjW13!Yy?n>@@*9@<1;NjDbD{&rwZ6c50Wlhj76ZyshB0Kb&gppd z806CJev0>WN2RO?mm|y``TbFRjj8j2G?$!7|3Dm25uP% z2MLjL2!pNke0?f2UnfACuaKK{?U01&HDXvj{kjKd6S~!PPc16OgH1znU;x%YDZhui z&Xc80k+iq+L`r-oLdqEeLY$&zBv^=)V~0SxKW6BTU2;a^y&ae_dibKn(I%_f0FB59 zfw~uB)W_HIeB`d<2xJ(ZI{KAZkglq-s<+3293t|+M za)Iz2DHo(f$VHHg3IkKxkjkdQMyC)e=5CF4c3|>h^-3+eSVm1A$$))#rxQTM&gDyc z;eYBV9HzzR1UtrO$#;+AW;qpE(l-`x4`8E%#Zk_RHu|N-u^eeU5A1;BSJK1d<-z{W zbe6(>_R|K))8K~a%!$Xby`|$O<@n~XwBc6k z-dg!l*A?~WJ2c#~P5?|ea#oAjfuWSRtYd9b^_?=~>zi6y_>WeYijjpgtg9n@+*S|? zre#Lph_ok^oNT%vnC1&+Bhcy1ETeG7JWsgn3)bz9bzRMSO~!5TZ7f^I-scpy8q2$x z#jC=BYR6c=hHO6_LVz_nQzr{5^a~AntHoXS+j<}1oWfFcRLciK z9EPzOb7^2GcOv(V&&_)ef)-QtljHrQJbs&-o*4kTBP@1EGYV_0uG3k6XOgwi9k;@* zPA;6&T|8U%16$`L1i(8@pA)_E3KxI_f<;$%=9eJvN%aKYBbNjzjF0;bF;1AGJ~!u} zzIh_V>VaoLPDu~$IDrJ>jGH{h!diViZ+&lQZyZN+&Swt>|4-~cixgBO`s=q97;;(dSuQzA>&Q8+fqQD z5T}6UGQsUdrw>po>$a&ggt)WrMFeS2wre*$v$(bshPc+@lHEh(tU!BmXmt!r9ii71 z%NU+~3WtZex}cB$#{z%`Vc@wKpvQxG z%qju%i9dtEs*GWRGB$)Z36UQA1NzG5M<+dmJfSw?B$VU>Tu27mWBBS&r%xWlAvMc_ zW9SQy`y&dHK0W;Fhx8n)_zWX_EDGq$!sLv0)H+8$q)G`3a5N)^8B>rfDean128fx`~eJd#r9_I0Z?=tDR&QRY0PFu;cR?(9&X+YW>sC zZVe|}RmIwU8?Yw8;6?^Ay1-Tk`g5Xpm<_{vyWMcV-v9v96frLzahmXQeL*hTrI&Jr zgTtOyq@<|bDwwOHy9W4i`f=}EgVY3qxibDkz_iTR_7(f4(}sQD5o5&5%PT^d4(Wt- zw_g+XYFc3(?bn~7z?^w-AfSoylr!Yvyfk}UDf&30=?_xQaCD3$t{R6@vI*TvgSZqc z==Mz?f8WPftT3A}aBU;`5cQCiQc!Aqts!~qbFRgfPDgMc;_13dY@$JJ5;D)4T&WY5 z{pg#o@S(!Z&rVgvtO-;oQoy;uhsnnNeX64?n5DhPwI~~tBtuZLUCm(FwoQeJ#xB@y zEBqAja(%@gfBd2Ek9~4mRIuq$yscw=2*c-DH4a)FP!q99RbmfCu@8!UmaJ!?v-d$A zBDK(yp@>8igZfgCEh4xAY;rE}o*^!`&Qc3K0%&URB^nZERr8Z|HRHy6fL1N*eZ}AZ z*Z+cG!{w^*qU&|R>o@&X%8vW(hHc&O9vp6Wpkx9g**$^Ved&BJR;~gpWig-_hd{(Z zxaKVkRyOL>&r!B^q`7yEz`wErcAz94TGQIe0(8IsFy< z0`Kat2u~4C`zE!OJqd}Z!<c`cIS0` zJ7x!jpy=T)&YMnSyM8U^To9d!3b|MqjBD!u+HJ<@k+WdWx=*btc}aSh=3Lr=5TiFy zqq9&Bv_n!49E+|+_d?g3ZBGbfE0hUDL9IWebTuDh(;7G@AWOrW=L=x&jy)-uXPRxr z<8|*{a>6{%h#?|{fEb+}R*aGgQrWT0Jz}<$qV`5oXTYH_GI5*I4Kwndu&!%6V9UDV z+i$;toQfgW`yD<9EVFVU-rnBYINv!%R7)ukuM>_y!TkHazt?sQIr2@9!xocT3fp~( zVfVi_C2&p*3+xQIbPNr`Af93_nxt*wzMi?@TZDK;D0hpm9LL;;>7)Ixud&Qkp{3l7 z+nSMnd|*%Skg{UAOaNsC421xm7;~P$GART|2ss0}(1VEWh*CGPDfur??T34MJ1mb~ zdrys(gGKyEsXHB<-GAQD(W4bmCm83>f9QUjTfrDJ^emi6+Ckq>1$S7_9J=`jP2}V2 z_*ntK<1U`%VS>OY4_b%ufc_cWrzU)&3!c1 zHpe_1%FL=N*Z5cE#!u6P7^dcQs0Be4*y&i`W8XIee{?Zc6^)JQa&1RDjBS|4w~ncK8s;1+&H3@mMt(rGQdt5z+*;`caGuwaOW=0>FEM&kpR+z))jg zPALWV+YKNBTd`Jo|IsEu+V!spVLB8&^Aa?za7zt5HL`9Ncy8Tc^owwqbRT1NP8D1C{nN0VjcHhmp|}6 z4hKuU?h1qrtxdMN@=AZyH-Ifri0vBAxLz-~Z-3(B;{$*G_&fIX4f7H}POr(!vH&8; zWpC?4vaG_$u_bVx1;r)~0*Sd++CeABC}48Gs?hqx5%;g`?$2WFpS#fH@HLO9bs8oB zJ$`$%Ee`wtx+|l)jK>pe`572259^BO&wt>wNFD_jeFgJV@86iYfMM-2B9NuOkAU$L zhKvRoJs$=FdI+Ey4x`TsgU7@@JPDNeY`6b-K|H1(34Vqkdb9z4IUcahy*m~HPH)8C z$aJBl{Atin@RJn=9>VTH{Y~gIJ*ha$dhIlHvcuuwndneIY^PiW>OzkG7)NSGz_zVe zw+*GFMjNYRSC|!W-}c7XS7*aX998xZ&+bHQ1bnb7y|^-lF?w< z2Gyon^V^*RO40b@_xE?i81VXfZO^%@{gu#GN9n;d4)wq)r6{aT#uUbUu+!A*yk2)H zB?y-mR~)0a0>HXX=|xEWd82iwO-2k(jghv>FQd{F#q2 zVz!^pg+Wmh3R6zF-EIg`bs+ORx5DuE-+#yZ+pXD0>*OiS<`~II^Bfw%&cg-Ya^s6> zJ;XT#D|$w?dD-`eNZ|Tjl#;uRZdgB3o3g0AQmvN+Z~xl_ny9>nI3(xwbyO|%VvLyL ztScqb!X)L4ZBwVq+wC3e{)YGWw;sFgplN`6f=I!~+YkHP1I!6T7CK}_W+@3{K-;0P zv96hIvL%fsM~C~5-rig*91pwl(Lq&5@;Cq1(DIpn~5cziNrRgCB9e8YwJC}fZaALFxPp?*-$o$|9{V@zopznA)i ztF?-T8>jAm6`Bx16flJa%W_ps00KNkl+5sT$A}J@XdfJy1<*uv!lifjM2E3a;nZ9N zbqaB`uZ&?N>hDh}sqjY%wsl1=8@!FanPH=TR-`8bz=QDq@dIpK9TDNL zfBh>!z(4-^PlyO!Ute*#T=4$>jvqgMXu2RXzJ2?KY$Uz3Z+LzA4Y&Ip*UJmM*P=zC zMY&y|IVV&38(O*4xZu)?9p?h>_dE7|$Ls5Bi#Y!Hcx#0Mm)t^)_I=08bTM8*L}9_c zXVtto2Nwfe2+BRMYqjPLtoKzPL)#|@3kk|Y7q7y_nt<4L*@4=gyz2!7!8+Oyf?<0% z6|V&kw!`Dw_unAwA>@p}m=WRxfycJ(2qKv5d8_!c45T!|zN?k&a=BWbggHYj*r!@I z$5`Qd(AUXH)dq|#h-sS4B~Wm=ELfHqiIwN?MHTnV8HIsuyMr9?&p-Zwzy0;Ecz=I~ zbA)~0O!TOqx_aGK9Yl4~XyA`^x02vpP@Rvt1g48`Bl}Ug-*ptBy*~Apa3?jFnJP(X}8LVt~n}fYMaubw1QxOs)BOSo-rp8pooM z@iY(tyP%I-nb5?EEg8|B)}LG@t~li3Ql~w_oILU{vhV4&Fb&d}N~ldjElyk)0X``b zo{jyFmh+h-~WPbZ{XgK9DsA7@GSDTP7=nyb41`WCI^zeurL9PQw~75 z!23ymxu}`*-VM8>YO6VHrLaX4qeQ=8gbnHt+qm8iSvE#=9pl z*RCrciX!Ljm!lS~S#OR+4xGCcu!*dS6&w4e^g!-j{tAuZT@SUCiUNSVLyQv`1#WjH z)Vt#T_6`8*9JpKnC>`x~|G@2b(-4{3L0j?3tl=^-M(o=P*f=(X2_?Uy6o&V}zUS6C z*PFO@v^Rtf8efw<~{Y%^9mXZ#TAQ!dhan?N-?jCCAJ*Iiax@{22 zc8$4~{8tL2CU02n`y^?E<9Uy2D70|ImR&=wVq&n03SHYM_#44OF*A@WB!!hv}w?>zsG+qZn>* zfY6Y-Hr_MZ{*Cy)6aeY4~~0+%HkXvyzH= z85@9%FzIL1kr)^%A*J0CC6(7-ictmKXf!(o_1FrDn?k+}qjNWCk>txwu&$?y@gvZY zw=^Dn)HGS`I;ea6Gvx<^tKcLG*ZJ+3l=^7-J8%n79iR0iwgg7kBfI4=v!~wRjd?Qo z`iy(j1<-@_+zkT7F-r&Xd;-8QN-2pty;^r)POl{&oF6(R(y0dzh^K>6ZO|1FQI7-u zbju>oea;80B+*Yt8NXsDd^Q0X_r!XmkWW_&&#E$_XFsP`cAEd}+m4?|JH_C2=j>dt z@xLDunubx842e#*mpSB9KN-7x<_{fN_}S9;6zyBu#Tw@s!MnD5tjcdaz}+EXu1-5@ zirSc#Caj0Ia34)oy4`wzSCnh8mB4UAhluXx(XDw^v=@8;7skiO9m&S5byUBuE7o8C%JAbMm@kFt!4VV4fFj+ufWL zedQqxbtQmxj7`elFS%PGE4i||LaG~Lv_jU`Vp%S_SD$rcn^I9hUrMNK{yMZ9K{cU; zOKCDAiUE0=Rmuo=!5<(u)zUadIM-sbuUyLErUL-?+Z|#Fm&^5{2Z{arIw|npJ>Qoe!nEyS#9WO6Qmtz~Mck8jgGB|jEXDZPv&3VRl&r zi~S{KaZJ9#ph{QEw?Y!_Gv4p#V>jPN=SS7Lb+v4Y@^hLBjSl6b?61Do4t)jkjBAf4 z*6ne^Dx;0BzDAGAI8(eo^YHg;x2*$kMAoZ3Gt6!sUy!4pdh?%+P(Ifb z$nyfg=}75Wk)WNIj?A?>?Jr1sAzaP%uA?B=Vqs&5h;cy-lVM}M-jvOE9GnAH|0Idp zWi0=%YA#8*sbCL-F*_`H7@_s6yVIxCT2&5+U^GIY*VtZL3GBO4{HS73r68wd)H>fP zZ@rf6Mn}ih3cN?L(3v`_R=#=A{cy=BYk}J~gQn>II7|T_@9*X_Clp~IshupRjLZoh z((Gl5v&}81{`K1{y!pTDA#{CtX;7ba+u-fMpWK4?_xEPaTNWK3dmq~O>|8TU>iZ&q2bNCN+3+rau7|97EW(2fN`%ruH||$W28zE+i6?D zYKL*z6Vk3}d9qyawrwhgyWQHP0L9=~AaKcGr^0qmXIwBE(J^iXQ{5zVtP9q2$H{lvICyh;`LWuUo)O~^D8EqdJgv>C_K9NsM)qh7+lpPDIQ$9KBB!A zav+gDY6D!i24ZX){7-CvA`cc3dKOA9N3FnDqklOe7Qb>1oJ9*H_@pAT1C%w|vRCEw zNNF-Fmm|ZddTJ=yWmfo)_f>FaS_je&f#sPvk!@U7--w|g7=nyi^yYbTQ6=B@KlMFlj^P)+0*6BE}2eSwxh20LtGK|OBx?>d{s@N^r>LZywN`q|lkkpP)rr2<< z-Lltx--7NVuU_(O0x?GE7QYw_$Gae-lzCyqj+@d1DKwf!g2baOP5;Hx7 z5f7_KuID9qnCKrNc%o zoQS=`oZ>uVUsuyYMAZZ^qomXn;LbUOX=0ofo4NM^(=_ATw{Ms(gzvv!@Nv81+dn3h^o~D&cx?L(?;jrsPA75N zA@gvO@BtdrQ9E={+>>?BB!ft@YVh2dvEmMU?x9uuxqe-~>Yj%*)A}gI!hg>y{Hm^g zC?MQPWlabABH?*f4Us$G;j3+!>dHhOkHYg&C4(S$jQAb(BQhS$hG#yYiQ5C>wod5< z&`^+&41bTK#_XYiK1LHC;ds3;55IB{KNHy<4`@CdjBVWaMHtXC0pQPzfiJ!fkA$S> zyy~NO)mieI0!l8I3zqqcX_{5pD}WS>Uagk5)AM|~^Wk0;3GCo+cvLx9ENPgcbT4Ti zRVz`h-eklgHn}m#>rSW&mb{P1L8k+X6dp7I24G>Xc0PtkZma;|qP>7o$2_|OwQk#1 ztoO~d2%0;e+YJpZ+SI`Ttb{dZUEzq-O)24@|M5>Om!*l{)^)}Ge#h^B`3wH{|Nh_D zQ^NPZ{I272N7&b7DtQ&bq*QRb-7wEf^St+w^T4BTuf28puIowI^bS6_L%gzxZ+mYY z?^BEECFdFzn7mp8tDuy*#_{$vHD{E$lDX~pRb;2(MV>tNeYKnb6*2i5Bm=gIj_v$| zgM(KLZ!HjQl2Nq@g#|9?{+ld_M*zfm0-J!(dyn9q!EDssQ4cUj9)6lk9lqHrL&aQh zp*bhop=a8FIt`fSS&OEorzlN4Hfj&*FBU;AiXJ9%2r;y^QO?{5fdKIRx9@u0Zo9<| zo4&=?W;Ld|6a`g*R1@H>0~0DhVZez_5Sp?ACWJIc&=BD~iWx_3$=K=lqRniDsD*b{ z`=o_3jW=a29&ivjS46A88Ki55iv?jSnCAkvp-`IrpjSQS`3V#KWNp`2|+~a9^*31UHVhpCk*`$9fRd zxs%;nxh*~D-QnP`tq;_V{yoIo)S1x2JP2&XqKk%E-=_IN|^h?8&Qz-`^I zSzwU&9@pzt)!~JZwt|<}7wjwHe!t`W{T(@H%+rh*BVNC~f|>E>pMT>qf+5iv0idQN(Ch|$a{UPaLB@7u-f2k zBI3LUlS57kF-*oIU@Vu}4(6%F89Ub%*wTWf49ry6I`K)bDIv{@fWDU5Zbo%y@4SZ( zp$YwZuvNE;@eoYqn+WxY;%=kQBA{5;1-VT!{`lh${Qlc_4UDql#=#J~q+|Iu-V_E) z))6WX;1zrCn1Hh5P>iI+w*HzMAWN_LXb>vb_Q_R+t%r;L8P|A$VT`Vmp$RcgroE6h zA=Llx8W2be0B85G>I4$}cz?&9{=oak-|_GN@&AEv!?xd*0dTn@r@Qhe_N0?fCxbFv z4r{;pl$aoabN5Y z2DQEy6Y$l8)}4|cyAbfKi0|1!bYdmQK_~E;E&llHs~|i++1&Y{dy`>ME#SkNp#>1N zLWMuI#(!nIf7WClH~^1_D-ABT<7odg%iYf)KjRB^pxiO{-84QE_)+Vuzv2z_3W$y# zP8zlWauO1vr&DRVS45;>oeTyv<|AxqoRl^7{u7d4)d5s7_2mlA zwreFmOp-<%?dZSGCBr+5Z6(4KCreDL-B@T>gZCZ|zR~(B-H!`*zj5n?v_ML!4Ew}B znFt{?mqLuO<#H1VVw~C(Lk2~>aGz$3QN+%=-&~4WKKntUMO47H@A^1}v?z!XAx2w) z$YC5Etm7T+dlj?Wyx(R6b#87tf|{l{-gKJIW6+t@(f{~4W&p>7D*d=wC|qI$S@)hWY>GOpSVHv40JUdlf35T;@D zkB3Icdv}N)mX^(K_d3^aN}8(>dS-}7b9(F_34i?Y1AqVf-x2%@xPt37;&PdB$F3G; zCyfGHsc^c!^Fs{qBiFtOBM+&3{ct^igHD~KHnzP8fK35;^qw^o^O1IX6c19Hg!XHM zT7sc!t>lw?Z^c%-_8K1|euv4y_*{++>*p)$XU(a6LIJGL>+?expH8_CKbMZH<45KV ze_BV4&+n{5`0Pynmr%ez8`J;G|B-+F%gsQFY!8&x)eT1MJ+cdz23PLU$2oNT8^;!=$N zUxvuxteNaJlpHeb%IpBO%z(V_%@41{Gl8@2M>7L5;v6u$86~r&0~$!j5j?@h#eFBN zbiV}h4%h1yIcI!)d|=x){Oxal138EL{f>EAAnS^^k2_voUK&K_{rz2ugQBj7WnQpz zYMP1heXk0B@74QWt&aP)gMw=-lPONfoDK(du^3|SgHhJB({|2juxL%_GXY=i^7WA4 zTlZITQJ%hY2qD_&9}W0ZS@-%g^I>m!oW8jh$IL?pN6zY4aL`qZmF3@3>H;%VEbAS&8zcWWk2oX}% z`{WD{ZId4#@aG>&!~6F7io#;tg}&J(v-brbTO2TTA6TFIS?3izX$HaJe!zn(WNO(7 zA^3xfL@I&N_p$$ho_Dal@hMk8-PY|nB&N-mCp;_s#bzu`H=7L=A5ZO`6)}{)2 zXvnFR;U1qZpVQ@P=j%ul4)IG7KA(EV{&U9w^I28}^7IP_1r6XH8dU$(Tu?0~&;8t~ z)+=)x;*&pqBmvS9oFI5!&776KU$Klo zm;EVAu+Vhmxhq1;3GmTx_57DhtRGhHo+hnkEJjWTjjR`^fN5HAFLz_- zSHUVjtOsk6SywCPDPdy{)Tx7WP5rO*Mc-8P^?j>_jwiy)^`Z`u>jm4M!InhnhLNsA zFP>u!2@(MbwR>k5V{;Q`)h@oi_cgRhG1^8H6lse1ZQDEK$D!#%x~szt85D}e225WN zT+`-s9YL+#r8y0VI$f}`G_KbxN-o&m-|_x_$GX1b+v`=?Aj2rT-h;e1?65rCG3{rb z)&z%;n`ifYI*Q8L#B<0zsFPQsBTw%a4pU$hQfpT)L;Z3-@D3|!l7|ET0SzplA>xPU zR;Q=np_|5Oa`3zW(ARK?$aV>xWw`-OZS4TwZf$bgC5T`43SHxDQ z`F`=Z0OuziZMqqAc!Bq`TC)Tys;X7CtJ67k8bJ6-0YF_waxM&p>50}$b?>KFSQZAc zz*EmYsDAel$PWED+$77e>-I(#D}Y(J+Wy%Ms%_^HgA&)IB&3|cC0o*6##`Z@P|7b1smgs|t`Rw&!KW<$8fYkaEVpZvX+`zkf%x ztaw;=+@fJ)#JcaeecbW=H;n+kUSAO7Y>=Id%jKfFh;3^(_1=-9-O#n8o7*1TdyjQp zbtg`)X(y9f-i;PT>+fpl*K-*drt6C5BPmg z%^~2N<^&X0I$sO{o9qgE@c~l=l1sMpXN?OsaE#jebV`x-9ntBE<-TqTX9^MPzF}S# z#GsbIT-4hiT`+{Sid^@URC{3pK<6Cd6cK&EM$SHW1%3{|`1v8S)sk8$$Nl~oeLUL# zVhETQ-|gRk)5TX&=f z!F}H}`O&!+JFQbHF^7l=V`W2(ldZl2N-kK}6~Kz?RZN>gh;h`KkgkqoTub?uXW>Ht za=#z272>WI_~gOj5u9cPh)^q{QzuhKsgq zl>t!jEzb-9qqf!@AGND_nrLzEJ7~OX};K*>H zff_h!()xk(S(2N|Inizpr6rlSSgQdGy1g4e`42{ z&p0?|l=1O3sB1)KK^XIp4PgI}cGRmJ47LI}w8sK^1QVQk{rZ8`7l7Nv-x!dGYRRlV zsHk4+bTMEZfkWjuRvR*ua5bP;i(D-hd~hI|0ldKb@0j9W;OP|s7f8~n0M|~-IRM!# ze&fNeInJ#MZj71n9nMC;b$nT4iedkz9_BTbF0}otjs}Yboz&u^ z0%uq4bDQvh_529ptNYeP+lHp?n zd5>++@KJ4}Z0Kdh&~}t;6U~K)A_DTN&{iOefQhwCv<{7P(a;(njO511EQsXb!erfY zK`9$bfffL!VJNKZcdlt)qLerVJQa;3P6;y2V2jb^%-|x{{VQ$E4Wo3OFac6D`Zxp? z(^bOWLx=Ao#AWPd0}pzSmV{xuey&BlGmESX2ys%jeJNn1BTK+O^J;nYhK1Hb%6W%W zvcji=u3Pq;l+@>4+haEbt{pvWzJ79{WhQhTOSRlaL+g@t|2kobAzHWJoh>P4yBEY} zKP2*i_wewCMu?ff1qj~tdmTw@f+|W}EOj)5h$&2%<80F-XmK+sFp4B#-*ZRjh&2_? zX%k`%0oNwZQA4~l1WbcnPHI*PH8)D9Qo5mg9PhHj{mmxE$Bxs^f;JxDhQzJ^|Ii`R z@w=Cy^%jzbP9B@6gT~7cx-tacxZxq{y@#7qK?WQPVMy_7ZjEQ-egaWxAUF|cVpTf? zd2lG87hI6@t0qrI_&)>OeWgbj1HcBGr>n&gwTV~LY)AtE(Ljf?YPvoc8kPJ<%i)>g zIDU^&(D2;g(ErQkQ>PZ0$j8x?JuzQJ95qa5Oml*qu!__pB3-|jog=jb36%KfFL3S^ zA^xrffLsx<031Nh8%~qW##5To`{0(4L24p`QX?NvO6QUJUvHv{hV2SzMXs74i9DQl zEg?(~nPQQ3P$v;gwd-nwa;uv`|6n>8$L zE(KfC?{Wx1NIEH@jQqEanG?<0;uqUB5 z9dIEuJ6kTSU>^~PcYp&tO&}`RY1d6W`L^rV^g?R;%~A~AOPVSxmMJuR)*SYr0$`E_a?$7oo0wm@O+2} zEQcL?Nt!W1A{G&?Q4o176z z$zzJMQarsg>#|*MkjBO+O_PCkU~`KgHw&M=-$IsH>Pf|OBi>wkN7o3jzGfECF~V2Q zN7~Vm1-3|BD*!<|NM&S~1+8bXm@&>VbL0NCTB0VghQ zcze4=nMHqv2P?w>cTklvJskK42f!0;z{A*uPK3en)O1Hk!3gE8G$DRKUpO|3Jk4SIb$A2o5nao!srwJOxWRu z6-pn!)m`;S5bUb$(w;{h8-g@W*)dPqz%@HgKX&3YUD+O@hla8Z{ zj!|cW%iQmGe0+Rho@czgyr|k*1k1AYvEu-tF@!coWYNh55#jaawY^@;tW1Y4gyeSERAqOE z{rEv&p*Uz=pLm;sQ~(eiTq}Z}-O$8lLPl29U>_d{O<7)bDhz?R{yEDA2x4XggrDXyfmCZPy$IE=4C5jfW3-d)#B(v^p^o zN)apc0xDLaIz-wvX_3GcOIo9*z0)ZI1CT;(SM3HHSz!j10!L-YL@@j?1ltCXIZBAs z*-^uusvD)keVh+U`5REhM1*W^jZwc+?>Bl)`}VyATG-Z%2O^IcefziP?+xP$^uN=o zfp@-RgdIKcZfg_d>L|TV2AykbjZ|u+ae;v09RUca2w=9`As=jXbOZsBv(@QvkCo4L zT75k29tr>%74@Q)zfs@N8F8byjvqwXp9vH}pB;dG8q5}ERPBss*p2Hxzr&>XtS4(+ zeHsY2bqr7a@w5YeQ0#Y|!LP{Jf^86gd_E?r3Qo|I0Es7U)ToBoCvq4&Kn8JqiaE0z@S0)%SWsPyt_8`eWF{0b=yK zqB9lq%`OBEb<_8O;G1>LJBOSLUM?5xd&2vVH$4Q&lE!SL zB}Ko-GA}48<9@&ENYG2`{zsMiC=`4alUapQV+`yVKJ@H5Zina?K;?YXr&M}hDU}If z_~O!UmW&B7aGR)-Ov7LR~t~bkS9&2Q5}cX)%olpIySB>&(da( z83s6c`JcU~KiAC37eaVB#EJikRR1$e;V=J(a41r`md*srBc)D@Mu&s!L&gJ`4z`ES zP=wF*{?e4E=g^*tQ6AB=!d(Q?#!5C$I7g8lc5QaSY6P%lLBrVN4F(a^=4Y|DHC!b? zed=A+iy=(oY~A?e17rT!0|BpDs4%1(%IQ}}J4%HF4L1_C9jZ%u9kLYTXQBJ?Aj0#EdX-S(U`Mw zvT(tkRMf@7@WD6GPfE!OfM}|IEoK_!&A9B#ydbBHecP}sON*zis~6WY9W?Uye!Ic@ z0QTV!d~=SetpP&^kd3|WsU$QK6X-DU7!NIHBC8QPRNW{Fn%P?RL=7Y2p__5TdtFx& zRftwlN7E_*jguAtN@nR1-YJ(sG)r3L+kbM-DBfw&G}to7=fKn_OY9gPzGWiRuUjs$ zS?+Y#ZqI{M!08G#D;*l46875En;*3is>a`jrg32|*tYy|L$59dO)oU>vWfNfeFrme zy@r8^$nbVkk)i;tdVti|S2+=(z0Uof0((Er7S+37nZ#p@O9cLXBLK|uRF~;EdZNB{!?$)1*#}tn*NR3cDz=580{!ej;g3lF=!v*#Ep5yB>N8KQF0EF~?mhH5dAmZR%fcFt0 z&X`&Nkm7G2qlM{-HE{^Z7^`QJ!45MPI}B!eTJ;_OtY!ujn=TX;o3-y%;JD}rZ?Hvr zXYt-FD3X!(dz%i>!D1pPnXujO5EPrH6qJx0OQG+q0myJhV-rzy5ffqFnWvT2ar5TA8H^*vz`&7p6+fm26A#|~BZ&8msebpjvM z{gntgG8Agk-tk5`P8N0T)E09CsZEOog>JQD;v5!cHy<9Zr)m$)Su+`ey{COWqb!7~ zv(cMT82Xmu^rjYp`npqF5i~KO{p|6+^sE`F;>Ghgy#k=bpV$G-~@Wiyg!S}|1%?SIR+car-5~+De<#u z-?+vV{ImmqMz-xM>HpkF|EmeZuaa^frw#OF`E}#~oJNYDR~8OE(X0-H+{1--crpi- z;Uf}K(~pjC1`VQ*ub$}Rf!&>|T@<1W0PQw<-0w6knBs)!mCOE6J=PtX>$bWkwvh4A zmJ=gjw5s%*`Zz*9kgNu=V`*tn0v(>AZmM`s zx{tKigM5IG5tCW7f{zN(X(T*-p10dgV}PAf{Hp#Tc#o}Y$a}&RqD}?a>~AruaFPX? zH92pZCoI#9-ROj)HX#p8{AVNFx(*5w#5^i^?f* z-aaQ($%78gM>tri_SZ7`wZ$vLsvjOrLBIR>g$->K?xK%#|PL~ ziz9B39X(*GVAVN?&~V=NSz|s3p^E+6eXnaYIe?6al3ka6Xms>*r;2_)6q4s?>PKtW z=^z@r#V7XkYT2Ep3sU)j_Yu+0;8`t+IlGfuA&MN4?uu0zF{lXV53-Di6>7^nC`G-SPX-A%wA})YD*bsD#3L4Yxn9PP6l% zo^U1<(ZinQc+k@!WZ<(giab$19v&2qmA^dwSvX)ON9E|~2B_X(7^YK||Jq>?0vts+ z7i|qNYy2paVw z7(+i?j9e1Zo{{o~ly}4!00vS{`dT>cWVZDVGRRB_0leu!5a)ovlR{~14_ooQmt|?8 zEA@g`(O^IDAU(@I5puRQ3$3Y zM{er{eLSpVd+#8*pp;G~bmWoq-c~#+g3C>y6+^_lOqiw#$;g5jCQxLDZhf!1m`z{1 zI`Vhk57a-`CII#K?fN8VKcnBM8qLr77N}I$9?nr)X{3F(gWZC2sDE+}9aD|gCO2Ss zxiuBRqNs)4VG8FegTXWgWGLPkL%ViHUw?}Zeu8HuORFqAOvi{orIRzYaExsg5M0oA z$W|4-qvxj~Y3JMJW1h;{R&~6ulv1$ncie6&!u|O8KymsRP^+v0iKsOoeU{LRk@FyV zxQW)UA$%%cI~2OZzm>uHHAW14mI?EDFdO}9OFK-d@MXvUSx0@?`9Bl`cGCT%%l;Vw z_xxIplj5%)_hBmWx)|KUM1t83*~-^1SN z9$%Q_QBPk~Nyi~stD&W5H(RKdRm1{v+?1~>;PZe)01*xm-c9f>Hu7I}JoJ#}XAgxA z;t_fBTKDHW3dm?UbjB!5>oN;lwC7`RgLec9_B~LU-}?2rh=t?m%^~Fs<{cshC_pOP z!D5wi!m=#N31BfQUBEO&^V$N-<)R~bQ9upVopB>?5z@Z5J+`HHBU`3GHtJwX8GG8` z9qAa~iiq3o)(-ZRvK=HfIK|tImz$4#-!|;qcG$y_6?xao1vw@BVO#=X#=hy!T}5L% za_$a?$-;%4gRKj=!IZprZ5^N?Ilk#uMyuLcm{t!$RjcQLi=g&V@1h3$u#x^mGXb3U zkR**mP>ULMbvU>X5e*)b^1-ZB6=to=tp!J0^)SQPzS$oHYv$WFKopII43Vv|PN|iK z$0kA31yn5nISnD&_g#g7)SU)!V-RbP-__4UK;Z((xpn(B9EqGWim%cA9JGjW4xE!I z|9jRz#X(n!pRQS0A1^sLf7B~EQqiROK~!5x#=5T9wiUO#70YhJz9;2tFzZA|dc!~#?xgoIhexb$^@Gb} zSI_^#u9@qhtok7lYQ?F(m)x2s`ErjfzqIA%rzgU=Lis8e=8LepC%S@vr2sfgt-n`GkZ_kHhAZ7yYw+~1720(Im7IHx=vG{dp*>99B~!+ReW#V1*6(rhZtcUrw+yG$m<`3YTV*+sl`gy zg2g%Y)WcDaUAIHng>GXb2NcP065E6UO)KHs#9^F}RL2O_!iDS*BoB~6!3q<6nAA^A z12xkcjaH~Z4qa}uLK-?(U;l`R0t%t+;_LG#Qcx0FxDrE(K889ykW!FY%oeOGmy(jL zbNqn8l@o@X4qB1^8SdE*I8J{aRsg31o8%-K>)3Xt>innYla(iD z&cCWDlYikDe{cceJV_Zx|HojTiuQf{?((GzU<{w5XVJ#bp2ZV~$M`Kng&cGOl52@| zAZmwE3ss<@vzdO12w5bAYUa}er*9>N5XtkVwX;r)i&?PiZb32-D1-sol9wj)g4 zPFN4&>JjfLWUdvSqbTiQ`5Rmg_4Aoa0jGp$x`&d>A@R>ShuEA8rTODiR=@q_ay{fO zkRwFPJs3rj07XH%zRUtf0hv$TwQFA24x=htPUF&Ez^dJJa-%jQA8y2T#UuhP?x`~Z zN>MGt$Zn__q;aReEIRrZMsr}~T#)w+1dkA$p>+8WuRUHDCG+rl^TVM>2fzAozknR{ zDizV4OF@Bt216uxiYTF=9K?la2JZU&I`Y;H#zStb3F5EOvtQkVd&5YU4A>_C&WcR@ zM8ox8(#wxd8b|*v-}9@^pIN>r0K`z!?q6DOJX=*foIx@MN1a#Tzw$oePykfTi>(0q z$eVH66-f0flN~sGP&zsbVyG(HvsmY=u}rU)U9Wri$%{Z=UpN(uN^}2hm-h~FNGPj+Uu^#l%7!_X!-z75?yXPT-p1CK%LTzX?0ZHC1u=%E z+}-xg)c*MZd)bEFXMKyD-T1V7XTUjxX#xq5Q)->D24Wb!Y~QWB@k7vxjn9R!m%RaN zN-6mFfB$#IvQ|r6jQIHYz;D0(hHu}#wfBFTX9MG8+-`S}Cj+tQ0sa2|-fr9}C0wu9 zLy*n3ZJ6g-Ep1c~f(J9~=W;6?y!Wk$TIL1Q6!G%%(p2KpH0i;3yW5!GHGv_KLrNO3 zG@?AcQ&AN;0@*3VA_&f5nr2%eprN3P!J%qsl-e}=3ZnknwyjMi>f@_Xz&jU1Yumu+M7@0b<&Vu~QoDinC^}>wkK?Tu&jZnJ2CmEUqYG?K{C(&_oB2V5E{^_*h>0^I*UpwAe{V=0- zL5{n!e)!STVx#Vl3iDwEbIdQM!Sj4PILDBm^Pb{dK%6s@&xM4F;oNbJV0?GyBOnv5 zm*4Q)Z+}A!ulWA`Z+N-poFkO_w6G(M?3ad~dF88a>h2!?Y5-coA*K{-_1 zA_X}s1uyLhNm2_gaX5OC6|fQy@x|J`WbFGLxAz+g?|Aw4qGMIo!`C^7Wm$~+m+^6X z*RYouak*UJ0Nii));*B}7zMZ62exf*hkq3X)|;|(eOja={G=L$l9lcUT@z@bsA+vE z>_|Dm!Rfw!->tGH+-~tFHq z_J$uneqf#^q}vVeA0PO*-B6_9`}gl~&SBqoY}-An^z> zz=y8W2+`wq+e}2LMGza_c;B{m=vPJjc!S9~xA(A4Ut)}ym$_*QGAjkLWL-y9UwtYH z`(a@?j75z4{+&~csB$A@2vX@C2dd`4cIYe&?<&zxF}ccs=<7xem&z?Pr<9C>qM9Cy z*li>Gp=sE*4LJkCtA;_DFwmLiA&AJ@p8 zBTX=b&~V7dHK2WN*n!>As_HUCm_$a{b=kW;ZRrz&VAd)(62EY1ak zN~xQv6lp()sdE+Def7yIcMJ!rt^pp#{Kudm0f7f$c(;5~j}9EvAUG6>&-V2^6aaJ( zz|mm>JZ94fp8s#Q;-pPPPNhztLh3=zQ<3-KfsyT_;lZ2EA;b|U>hCR_{e5odG>weYf(nd z$=;w~upHg7hB#xI7Ld%C;{{W^B8C@L|2wO&eE?CwuS}25Z)}g(9DWlYn^7DZXhz9j*}4d&x_x}S>CHrdk~J_S7fsEp6O-G= zO%H)-!pm~O@4x?Uk-Z6f)_7ndEgS$9%zb=(=+CJ(H)iCNnz*rwv4Z!eMbHb-2agG{ zftBj0xuiUFrNyXpf-D`=O8}zXoPYoQ_f~|Yl$zkHL37MXc)eV(tt(Q_xV~IlFw)qe z)v3m^EJ%hS9&Lbibk8QP^8UDHs$=gu>Q5jY-T6enz!7S~rr1n+0evxz3t z)}~1H2I5?ID>x!6{AwyBnqwhGQT@W{GkYc+*4MdP7wJUf6s+soijjK2Rr_bo8DW|r zxjb~}<64kN5Q1HM#-Y$;Iz8%G7?QhiPLuS!3d(GhJ*Eea@E%UeR47u0;-+gQ>RLes ztsdS5geJz+X#k7Bxf{Y15kkKXs)nPALfcdibXcEw3J+@PqvcU-eRO<{&!8y{CMqqG zy4fOY{w-DEAT<>52puYg5xg6&X@axRmmZdbgQ)pDk(c(Px&x{=7iXk9HSJMdYt*&F z5r;nL26cA=kZXJhfY}VxrPiiG!AmmraiO%aVdk|iUu3@*tyfELcd>8Mhf~G z^L$R|1n`;taCn@=EzR-hB#bfVK*!<# z4`cd=0h0{lBdd0>&OFHRbYn_yw_d(P@AXO-JE_PJ3SE*?F|8p)j9xtYLHZhkJOY+v0Yu64gWA*Xa4c9L20oMNDr z>ZbxdmhsT3opS8i@}gbkS)k^9P-2{|{0QDAewu(+^#J4;v!4-S&`4Jggdj+1!!!jX zW)liJ_!xjvbV6m~LgyV^FxQCaBtzo`1sI?_)d8bA7}vBFgFh%NCKzZt@qS3xK6b_?>@WDb^!+dy1>+2WakS8<< znh*2%j+mE2PCZWUsz)pMSt~B~c;w5ydVk;K6F5$TEa5o|;b$NoYKcx?9mZej0!&z5 z#pZ52Tj;b3IV=3=lSKwS6nfp^+ua%A(-jOo^Mjt5!fatf{`3yfgKh8e_j(YTO0Ok# z)p3)16xM&aKJre(Nk(4ukT?YABVxQ_p00@Dir{BB3i|WwZtOGbAw9b&h9C_Z##Msm z5*WLOBZHof1(2oj5qYFqT_ZQJ50?UR0t#+eOPDsGWTORY<)lR>H>Iv78Peb?05T_} zeS@EMVZmIm=gs`|JGdl33P>1v->{oMA5stQ74y94hnw~A2iFjkPX5xHt04NILcGB= z;#}!ST*Li(8>?R~7vxg#e!r{w9l)Lv;xysDuFYoXyvMrl*wz)xvKS^+52EYK3xo(E z_HKUMFV{|8EZC_2zSyLs{=Kg_V|)L{!@r9C>i0fR7^;x4767@NGsne}3B3W7hR==_ z0nVaZs}`pi162#k@yvDOoNMd0rrOVBqF#k%<(v#66%~tY z3jVtKlPVO3Ae&~zk?!cL;(WYsFzdRos@l~y$u{~wuLO@FQ}yFnCq31g?3}ICtjKUR zDULe4YZU0653~x(sv^MFfzmOrz5OEA&-D`lgyS-n2}4igk1{~a+-}%58UVHmHVmo{j(19z-D2z@SpYv2PHoZiFij{Km*q?{j$2*u@x>#PYwLS>29%pGSq~Gb&TdtQKjbc;_@i)scsH z6GE5~!UXRlh+>}{3`?-jtRqBp0zJrabs|UGU%e@}3X*CTKpoGPHtrRR%uL%hU{;HT zycDIz6S*-$ z@828XhD|T9t}Fih^G~FtJOeZ^(T-(tngHm%x)cl=GkW;zAyWoRV^^y8l)yTEo|X)J=VW!#$O^vITJ~`M?$BKRYT!`)059#6A17+Jy@p zN9Of)WdmA0uR{uh|IAdP$E7x55>~CPM(;<9qb!_iwTRdU{5U zE`>8ve4GOOw^SkL?au+ec#LljU;oSDG=9b=7}o`-@%j0GpB>%}^dZ!!1I>j{FAU*9 zho2~WtrhaP!IBUhY!wfkZg+S zgp?SLbIa;x?-98)J7U*E=;5sU=^67x*l1ID(5`~E*KgkdNBHxPKL8@E+Xf-vzOB|# zXDpWsmg@z7{_zJ=$+*70fE;1lx7H=rgMGXK*8_Z>=eFanWBV8*_I+1g!F2(%*xz-# z;JU7Z%`YK@*er=DCCu|Ya5JQN*!yRq?ogfW!Eu-t^*yW=#y$X$9_L%hfA%>Y4;5$D zIuU1qN!{;XJ5-P={B;7;qlE>4IE^#jO;_VxFJ`7$6a83p{i6rDz87p_yI)IpLVqd3AUljltUWw1Lq8pcl@fDhonIGPS-i-;kj0dkAb{PbB z!0Xlu=3JK?Y!z%d?r(FRpNx%!0jA^lOZWGB z_~*PEU9TVhnKJ_E4a?a?f-Iw*29g>%0_TF9R79qGeT&64Ok{4z4`rd}qz8Hl896Hv zZ@s@`+jKPi#~*(ngou)NxIhpTY}*bN#uNeyXWZ^tEnjoA!-QH#;E0Edm*D+mE(Wz$ zj-6^{%EuT1?ogZ%xcS?i!B(7eSho#6cyKpPE|#h$F2Q#p(uleSK|{g6d+}foAg>k{xX0fq$u1S?XLA*!a6QwAR=d(4Nq2%XGx4qkY_ic^X*6;%xI4c({bB-ECA>P)-lSZLc(?g{>)~eol z1Rt#1_qKPkf`hwA;`}kefGa+XHLcrt_QvT4mk!=h7#6nV?)m2`_%J&li(s?JT#{jx zA#D4$V%?a1Jr`3%4<8@~iXC#(q}HsQGuCahL(c?r1l(>P?eV3wfe5(YGve$)4oGQl z^uyfc_ z!c+x&%Yu}48-bGke~W{~zTCovG2PmRUq(m4CyI++?i(M{0GDLIs+z+O8k+P;B9Kw{q(*a9Ot!4-D`&s zbiBW9s%bEPK9NJpZ20IdG}X?<9rPAN86&)`7GJfk)ec!SIvRUBoU6OTPZ7nC*>&we zBPo&lq1Cbyhz_nE0x3|)9dG(=3P}V<)$S{gVlWwn!Nv4HuB{FFm|G9sJtb`S4M{e0 zGVs%hgFJfbx=p?BA^NR*$a?3ta>3J>b2-J9KgOc)L#3g5gfh4Uy0C2&#_2WX|D{9w zL8K`E%7K4A^yOD8hEV|aG~DhyJsE|F&m-)I4S>yQe)S==8i0rC%R|3Tr>LbmS+i(u zs^TH=agWvxKsJRcJ+EL+UGdW=_{sQXR4F^}8oqR#9PlUO9XWA=oFP;z2GfRZI>K|# zgjRa!3p-U-t5QfUYeWMCNV(d)A}5bNny|^T@8q+AX9Bm3h3(H_&LKsZ_G^(AOdkUMNaQ7ah^f@t{wQm zJ*X~}YMbLyzmMt!>dmgx5E;%{mOaX06;eOmjsnPwWjEx5-Etg%pOfBdK$h5tvyEtr zfb*c`m?m5<7Z7{10`@Q>a{V*E?|X|vcCJ{8Vuk4FL8S##hQPzSXE`a|xkJP!2Y^O{ zb78Q3|4Oo}0It$vz^wpS6V_D=fV3Box4@!04TV1>#Z`_-;bS6ebKy(TLV0aD<1#Op@%4mg>C5QaqD}| zdLtH%d3C1zhLlDFRFycjh*-^$msT*SS{Ps{AS)WK*Q-|E48`x}3}MDHFZlNQg8TiB zWL|*0_^1jVVVIJ ztoId+jCq<7V?dlDNCe(_yuN;e!wuWE!TX@LJ@0Y<_&~}DftAxN7uKmPb9m`j7w)E#+F z3Hzo8(lt(Pbx=Ft3ezC~KW=w?d(n=0S(dhYpJKp2_qAQujU|st2cw7SQtgWBN37b! zAk;VrYU^7EFSD&<3R`k8H=vI)=IgH3+Xz+F?9-&N%Ue!r)wDySh18vC|Ggb`u@6(EfW zAVIOY!R~#jBsda%OqS`;qmb)FD45f!chUMD39`%Z#WE34p=G+WWh4G^$=K75byFd3 zraMZ`2s8h5r2M#ckVAuWP@0PsizXsHiWG;5L=B2EWk>VUa|Hx(PgFHM$S`_1h@|nb zzOTw}9%6)t{rtF^AUR~PJXjT}>p>36L&Adyu%`>CHJk158`r)4xgBktIQ*||s5|Wd z3};0E_0T1OiKpe$LS+>Eo@um)0HpIGh{l0Lw^*L1CertA3I$H`P1rZt5#KXp0i&#E@P@{neQc0q~?i@XPm10lfsE66PXCir+& z)NegdsZyk9G(H@~C=cTt+bLSXz$4_N5u{u%T1da9SSC3)*0)YpRHe=XOB!%-?CkWg z?;;e#uNsqH#cc)qo&aJ@&Lcz(FWL5tZBs!Vvmi_p;xvJLXpyQu_@<*2(N3L3N5N_h z1EdrcNM(;43huWLyuH2Q<#N@aB3~BlLWC;K;eS2XH0W2#QbHgNr73&X$C?Uah>)0(wjH_v6Q(xL&V%xVlMWlq*0)dI%GWau%FCm z%?e6!;Gk|BFCE~c@Fq3^Xt9sIv{+wefp>baasfCq!sN93|DM~oB z^;Ojau-Q;W7$p~Emu$tMpGl1m6nKWlinB*yLL`8lzLpyAOa~^3wCSKt1HE4J&Vri? z3mh}p0lx0Kn>DoFi45>n1;s`VB{vGLkD9HKnpYw3Ed`)jL4^l#AKQ472PHwpzH_@@ z>B*71l~0D8gYi%wOy^?vsz-WXzuVG5`=tqk^`JbgUFsRb!_RV`JL*{Yp~LSAbLy5$ z>cKr-b7mu7V+}yqCdhJ>E)4$*8IyFa_;J#5f_v#Sti^}_wr2TLizeDMph%B;Y7Z9x z)8GU-e2cSYK!1fIJnZRYK#~rMTvM0Uj*}`~$qpqtP;cmAVqbl}^+_D9Io`%zJm?Ro z0}D(jRRcv1sbVm@5eh;K*i!~v0JDRLhjR;nr~J^Pkwa6~gL}*tZq)d_iJHa7r$8RVXI_my9WB zZi06K-(Ftyb5t1X$GcX&w%%DLk8IPKbzNJ6VJXQ*_u6^X%z5560HIMB_xE>jQmP<= z$F^=LHmL}4!tHj$tBv=4#pePDK7geL5vi9xmmR*;T!V~#U#;jdtZ$48ZnDnV8@hPg zHlzZ~aYmAYZQbE%8dg@)?hg@gIO?73q&-M zx0D^hM@_>sfv9(0R~%VKtln}hD$5}mx1tJU$+AFntnZp_t2+p+kRY{@s%3K56hH*+ z;#lmABnVA9iiL+1wc2Vi>syMUqOhs4>B)qx-s@}aBmnGmeNo#O6Eivo#K|ME$5aAd zu2(IxxuA%yN#~Bpkzu3J$M#Sm6=Xt+6$5+_ z1U7J+xg}uZ`g+KYLN}o!@X3#3_k+lBIDbeNjBQiU?v0m9D8&a@L&Vw19o||$inhy2%{sThrbaKn8qfuyMVNjrFK?7 zKL3GgIjnfXSe3b=zcf2~PL957wKDS<+F@^_wU_~gmGHUQ@Qm=^mUWyN_ zf@WPJ+qpRpPm1;h1vocjiWeK1dZPmh;A*u;O=L(v2_7n3`W~Md{E*@W1@;X4e`k9e zHs!FRh@5Gdju;ZvsS^HUy=zcTEi54VJ{#e!k-97x==Js0tW*V=6W(t(-0v$=F3m;Y zd{F9Nw2^)AT9LAL>rjp$NEyd6|#OM&?D^g1M=O6zx7?9w0yEU2|InvSl zeN|f79Dt%$uF7uj$X6IQ-Kj`T0506ord4syY%GDkTfcwY@cp;%$~I>)P?1@jNu!Ou z<-ixS0RlZOt|DNoBcZN$a@MJdipw;p$5RJX5h-boD|6p@%$6mPERWv%!P8HIm&-*9 ztfJbFZL`3qQt;dN-@pY;PXK7pPld^}wNsH6b6iK@W2ny|pP^2hr1usgrFB>;w9}iB z8!Wfu;TWqnV894K)M#F_pTZl-J6!uiXIJE(r!Bjz*)dn&PnN(QN8#|GS}$| zdA;tYX+p4-5fBVDuB(bn8HEXpeI~Ve>VPkHz5DaQVVWmgE*hP^KWfex zeZBDDCcv@aYllAu4oRiA*wGuuQ05z%;r}U=!0h6IxZu{q2xzdpV@QerW+)Bt# zEp=UCEMHqZ2LKRxvyX}HSv@(#5OG|f|FkW7N8z3!gH&q~bMvNXQ z6|iI-Qj6kQiwH_l*803$5vB?2{f7K;w}aas!f?`_5rg@wbJj4NN!JfK?RbBGNATV# zhl+E(zP@6*%qjp35k3T5oky|5vs#@pXXH{aO%d~=QNOit*wz&>PU^Gwu6d1x`*qr( zGDiK&30yq9i(tOB1Nw5g;Kz?2mZV1wI<#$jyEcWZ4ux7*)I9AhE#L>ED!o+UonB)q zg4Aq zNrsLxfH>T=^jLKEJ!}4ea|CjB(AzaqghA|pU^YN|?Byh6tL&2+#C5%1L21Q(osmm~ z^P*D`qwuk1Z}eTXYXp$C*Xr4%Y{s z8ValJ)eZGFKYg3SSyf9W8Uj8306HDK^uz`5^dfkIo9r3i+$c?r!t}tfk}k}61{A7q z1aj{T=hXsHo8_hkC>AHpMta zI1@vWbGW>`;Cj8l$6yD5b<@EEMI(l*V2n-88beQe8!P^KUhwb!%V}s~%86b+=&n;$EJQLegNzM(EeGcZ* z+y?h(U$U32769IRpnBYk8{ z*6ICg$ow7T47N7Gk?J@y4CKKLHwyU%0jN9%F|$agd!FG$XS?Sp4ul)j@ovx*j7WCZ zAG;i(L-LRYSSeL~;c<9V$+?F&h7JIl$I*-o1f}zsreP%ohZHJ$5_R~Tv_;LYTa2v6 z+?A-_`}zI1Ds z2}ORqy+J@ahV*qvQOr-v@XldgX5<9ylFZH_LuiV_{l4|b>J+rpz*COeL_j3Md+Xjq z1W%PbsD#1azI_Kdk3DTzZ!1I?*XtGYJgYrv-+O8w5!Q8sa~{jGXu4p^czb_Wr$Ncs z_6@SG5Jwhv;}tTLRLek6Sd8~oLB6-2QFpu*Nn9;?rSyD-+I=<-zkQvKrk$zwO?YSr zVN>iIk#AJ3b7ADnJ$l!Ql+gyau4{|_t#P~E6Ry|c{eEv^rDa|$I#|hp@9*!Jri^Kx z5gdaM48v=iIG)RdhStA4*ZnlXo6**x`@=_Dpdc;W_&Lbxa2*6+XVyM4b17ka#G-8HxAf(ShNy+kKiPALTSd#xL` zZAZ>(y>sLd!wf-Ikuev83Td%=fcyxzsX)UsGurx%g?~z`I~-Je1n@w)e5*Ty1oU06x~pV>MrWr_cmC024U`AB@>umD-^n{s-29w2H0A93O91 z&o1zveRwqfw@1~AaLb$@yVaac)h=wWRkhsI53P>u0YMR{P%o`0X$Pq8eGAq#gW#}C z*CxCq60=GX#OYW(M(BQ9NJEEggwI8HeYcM{WIG%~h`N( zvy$$`{`PO*a9J)80QdFYMpw>hT3oW5w;$j-aCHpNHnq^3X|V8^%d)g6AqufX4$U8PEw(MYn@S zR_~4wX~r@sDe-o@H+PSmwoEmts`M()N61c)sJWF418-p!AP) zQqf24aVX5SC?Mp_fbWG;{kqXPQ3-WpJn}h~bu1DZ0WWmhXbZBcT9XPo8h(w%MIVj( z76eqSf6oec&4n;#gDLG@D{R~_$#V$7nJ5#sJ_=2FT?Na|N9)#%w_tZ9*TldX&O6L= zgq&ul3^7FW5e2Kh?ExiTq;>!I`-XMfl+D4}?44w;5CWJ?mq8W|G+6ya83EN!tu|0O zr2Rdc${z1|l^Iaiv3Ae3Fd%-&K;frF>6gvisKpvm4cgs)v?kWHS-9cQJVoOiVh*Lx zlW7DR$)Pi@0=>>$t%ob0)*qj3E##08`&lFT84G93i|GQ&p5!B^d>*otKx&!=h8*d5 z!x2VJh&Y0q4ikW;@PD$OX&-8VVnxLcYOAE3cZaZxpTZ1>u7Mu%9X~l#tM~o0olzZe zasBY>q2b84!ooZMtFcT^AIfJ1K>NLWevOO(7yUrGM{=TFqtg^y<;vzUVd7Rn>ezn= zv*nma-<%XF?P_y!4mnHX2q*x@ZnO@4{NHx9^@gLX3Kjwj;p4UfSWUfc>3}u~2qx&8 zD)SzCgXNrYD<7bL{0Dyf?Yk++SB=*V4%56Kmby>3&eF!%weZTD5&rCexV(OAqgM#< z{{D`A-*CNt(>w+lG`k72A0ahAOz3wYa)07nEEq&KAfeL3SOP$4Q+B`@SL0Gvd4;dXKGW z0WgNO?95tF*d(MLoJ54;%OC(mI~3J}&&Z`As)jFgXm}>3K z*zP-SA1m%@LrMjSHD@8EqBhm&4GyM_K^KKpi{yBZ?aflR#L2JS2;~djfWgsd2ypuB zYd_b54c5HI);-$wh7q#~FNY{$c?O%ayFQ%(z8DUBb2^A?HbAJpRb2pM0dPn)q)%R` z=f%!56#f}9)FxcMYY{#t&C@}`MmUP_86(PhjNcyJjm7~Ofjh^}n2t7w3KghT$DpMA zsq&vbALG{$9%%_xEfn~0n6?*BhBu!2|8_K_v&1}a6+Cs(;scFS}io{qJLp2*$X-@AsA)uLY?LqZ=Jd#i+s}-&D-fvgw5#)|=X` ziV4iBt*Kb7Fu2HA^iF05B2h+7!noO*A?5g;`?vEX#{Ugf3u(O z%ue>d{@4G)mJ(iH)irS2Hsq4=@>+pS9&w%_%<8!wI_G+b&$I67UteEaI8RCm>$+l| zCrtCy)W*5woH*2_a5H#=9H}fO8Pgm`JCh zx*l(P28-02Pz}%_f{Etj;0(a96mAZU zLvr6~{96kE-Mz>5c^)+f`kWcw_s*TXZ*Gfmk39YwU$>kIrKDy(jMI$Z%)w&eT4L^- zI#nPaTL@V$8U~hff%6&Uf?}4PGbdG@xY7Z9Q!U3SW!%>t+qR>CjqK)7Z34`KwA<*K z&Z4y5LDxw|KlF|}^^wN-Y<)}p=6xji$uS${NKEBl9`lbK`#7S9eB~%pvFmtGe-s(= z;rIGIPy7NXlR}0#<7)Lrn|KeMGo9f&bkg0NK|}O#emt90jYXn}`*O0Zzj32!K?{{r z>SSXtJqcavj~RUhK&GA@J@Mxqxd^ur&8Qm?9+HxtDLo0F?9!{HP!1SLIS3X`s!2CM zF2u%1wg)3ppKXW}LWpqQVt@w^WD`M97jX#bYJJ5CZ!LLJl|DgNML5 zEX&;d`(sRPu$yKPP2$TrBbB6dKg(Lzc;KvE9(fcgCL~l5+OjMf;k$3`L+FA-fD*@i z(Ea)C<|K?-Po@e*KB{w z^@@xh8=FjBopS+ClO33$9l9Y#%mjo$dMNn-mL0cs!^itOKn^e8z9WQyZC%yo$3

`Ds?MWF6hF>x$?n_+U3tKZ>c!VG2;0_47P8Az@7w)Db({ zYAvUPeRnO+wIl@>?QuiS$<_p3)%yA(!PAW32Tpx{rUprpuAQ3$vwZqlj zajpJc>oBVjZY=d(u&>YTgrA83^?P~X zfWYn6#<3V256)5VA!h&WVL8uigwh~A(mDe&s-zg9Zy;9=h4yHP#b6y&T?8G3j9+1c zM-i^bV-nyI>@+@pYGTK_s_0fmexOv;1ZE-VZry)@X?a!#0MEu3z*8(@Czx+9ArDv8bx$T|V2k9(S?HZ`b+)i{a{ zF<@FWR4Av6DNeR3DeWTM(~c0YZS2pi{_|?()C9#1MU+9{y~jRi9qP|+-7aasj7~C= z9p(Y#sU;g~hul*Jbu|!hyWN{O(%Cws6n#IMI4}6t^=tGsOpMmkDl3MUMWIn{z@(0% zzN*gha z&g96nYj$bDNf7Ir*zv%eC)bMCug;poVL41Nj*;^+jJwY^Z|QS$gDy2km!W`l{mPxp zCj(diz>2llcah<6wt%dsFOv*5KRm=LH*qiq01zljBI^XqoujUwU9VwI?X;B6kRWMsO2|f>p~wGXTu<`+%gBk-8_J zS`D8mQQHpPtbUCI_z?cV5HTxY&WG;J4Kb(QJM5Mg$YyV=7D=+*jUHOX5Wl*2C#N5> z+wF!@I!O)iM)gzoK~KhWEtF>L-sgEzN}$&W-<-|X2hyKq1jG;`uw1b1JEW-Ez8-uj zXGA{%&SAZ;_*n1o(}dTT?sy2svR55~e%Mk<*!SH!X}bZ(fRuK;y}jddxv0{9+px^a z`FGACr#$fA>0ou!u1Jt^)S`M_=nuM&_&v^cb4hu~z!Q=zlbVZ_LJ4*%uG# zX~W8(n2pSP8p5p@7_L(dfzruU)jrgF#W?nF_Cl>L+nP;S?Tdb3^N-_bZ*GTLB=&>D z4K4&4JmG?z(Hu2e90-WYVYN}f5LayMu9G3rR{wCz8pon_Jy&g=`hFxkP>r@I+~Uk@ z)N`FAP${6f{{SsUGmr@Zx;pSo@bG{KoF{l|Qq=w%m36@jE|)8WHvP=O*;-S8IB9HD z6ZNqj2%@-R5qLumn~_*Qze5w&M&$=;iJaV=S+HB7i)0 zqB4;BaDZs_Lc<&!RT(HxR`vAk=h5(Iou(Y>O``{Eu#LTZgAp_#4h^bI!zBtvdka16 zgPs8(#y_j+cn;{Gp~Lr(p-L}Z05Rl5Yp0=wfPO#%LDNLUe>BbTA^w(BD`;Yy7=9S{H35tX74osvxhAkDpirnpY+ z;vYp%oKyg~uD5pJX$MCQds|Av6oP?(5=8Vh%XtU5761`}^{^;HMor|Fs>ULS&f)U% z3K9n0ZyI;O41(IQ?)!?j^#+hfHjVU;KmWx2c0-I2%d#j6HflCOy*Vyl zB*Zx3<>f`Mnfo0sO}H!zLh#6gHbdi$-60bB`}gln^Drv^>*qM_2|g+;iVn0yT{#7> ztDyV+j%k{jred^U&W7o&ZUwzJc{oRHB@;qy>otJjCf@*2wFyvLEFG+k^_m!khugLr zk8NBvj5cUi+V;+Ca}(9oKYvq-KNC~_=FO^x3zlbVen<oQ}c;JqLk%A1Y-SpHnY#nzqb73q-cgIjQ^coRm9afcx|W!^))>Wo%j} zt`XTRt-z<@TxM7yhyz%+y-%?Fb=CQW2W4WdVCX@kZ~w$K;GK*+59(k0Km>$*ZY>;e ziA@YDbl6jjNYruX(<()~5jp7LAL5MYFPNqU^SmI&37+D~FNvp}{j=J)QM66~igApu z8S5G?tRJe<64*v1XtzsAQ)icA@EeA)#2uWghdf&(ZQU^|wwG*`kV|T|HXk%7MaTWw z>|A{v08^psXtJOr75_$deP%|Q`2fQ8{ zV}5-dGw*wX2)AyrIsocezfM8g4Ns(r{3@-nUWe7gU$2`w1sLsc^(HvQ2`|?d+;`1I z$R@I!TtvzlDb=Y*!DU)-xn40%Q~Tbx+YLe<yWVcWKY z7%{{EWZ?bdjwv{UAmM=9mD8TG@)q{ApM3r_*d_Y}rG9==N|xy88yKigHtOnync;^O z%HeTvI;>Eto}vZov`K?`^O;e&PC#ONuf|<%#S9->9}H^qCoUvrZW!U#usCCfIJFj& z_m*bZQve0NL4iOHxfFPaYHymxrZzDGc-O>kVxRNkGK2-06NClRynt~*;ezFIK`M*h zA9qG!LfQqH5#-LNK^Om>adllA@U><9 zxd_lEBM)W<8eZFh;lLIeHE4~v=EgNHk3K(=YC-K9f%@pffpGW5?&b3x(66~keyVI7 ztqs*Li(?g9M}K;;%TTcDE>e}p6Q=2c%k+Zl0Gma%{MxOHnhL}xafs7)n69f?}99+st4?5^HGVo+&gE_%~&MYiVV**x1+2Zn&-i zUc8U+0X=OoJ0$EzQ&TZq$=Weaal$k&X6xaG%N&D7OJU5`1+VL>VME3V_{(2@$NT$x zJ48APw-_yO6c#$XzrO%!skasfNWdS8)Bfwv++VM-bA?;o0gxMcVcaJgRX=k9oa|A3H3oSiZQjD7$8 z`*&O}7o<{fGZJB41=QEVJEb13`;Opdh1ZS(U+VbU(NFJvz!Ya}duq|Zb(K&x1Jwyp zyXS4&aKGR2^6~=jJ?{5AZnqmQmrI+@Y$?H&awxv~q22W`otq&If7&2_77d(>Iwo=n zh?Z|b#X9UM+6~fo|NSs*u7Y~1@r6~O2!)`fqCrMJ1O#)asC~3xOBw~^g9C}vwMiA( z*8GGzrWGB#dvSIIF^IJxijIxz!60U!WH{f)x#S4Ta)ro>%)5$*%f&{w87UWVPHNdb z`1&=8QD2)p6jixV3ae(RLesuvt&cXq19`9AI8AKHZDQP6Dv#p14&`wVP@jj4VAjKz z+vuK#aes9SxPA~G7_wDlsfRsRZbtnx>CSjP4@z4NjIU+?ey;iHRj>$*xR_2(#8VRD zuX@jWF>qx6)vQ7mwh2~khPk`hNIi_=sBJv7ezBlA(}mXa%Z)C8&kBI^3ZNa*COiRs zef|6lG%*$+G+tRIj1kbOlA@!^u_-`x*YEv|DK1!+3ogqQQ&`|h4@(CRXF?4bEEC*9 zWYANh>@f+>c8W?&l*55j_km6PLLD$Mb~Y7XOU5v-f*5DtKJ5uEP|H1MRBPANXm^fu z$13JQ*6<@j3=`r+h;c$nouW6|*HX#gfp%A!`BeZ0LHWMPn{#PIK4&2(T`uI{44ZnH z`XN{t2o?sEbH=*eK<0;^rb#=TlyHClXhcc>>fjblP4gk>=!zN1a_k{W!HaRSPF}m= zDe4}dbFZwMPz~M3-(qg?EQ0ahmjLfVl zjUW#pD8iLhAFysaQegzMfWLL?131R0@5&pY1d%zk{z zQ6V}x#VW{$MvnbCi-5ajoQ@6$b%)i)u>h2Z_HA?pNbmls$4tYD&kmcDLq<*ys5@J1 zo$qInz zbCm99gM;U2-%rFPI8Gt-A~azZJm9r!30`;oKB#Rbcs)E+o#~AL=Fm~ttOrk(@H7|_ zp75saO{$%I4Sr!h?5KLNq?Iv-uYrlW=6Qni-LowaI2-MdC-|tD1$#~)We6u5r#hp;Rjg`iBUNFg*RAWSdw9d^ zPE+3%mt5M-o6LV*ieO#eK_(W{(WnPIMsN<7>lH)}>;0~fmKYJdj@pSk5o?(jOfmNL zfPFt^#=5QTx=H(vVmsnxS&;U0_;|FPS1Wpy9{8YHIe%zbkaF+->!CHW>PHp+$bRTn z&)nYY7-O3n)qQmg0b)D_XNTXu@1UG9$AIhgifu30nQ@8Nwu3LF;Cj7cnifpcg!|ju zfnmVR$Y$xAr%6Y`HOPde`Mkj6=}+yzA89dcDF8>4(mW ztty%vH8tM8|ClV;g@SA_o}gV&;kHADt+OzojJ4n?#&9t8xpi$yMRf=7{}?J?!Bk|~ z1m{%}D~}hYWO()_tThWD*%+P#-sqIo=>ld8EfRZ<_ITmVzN~A(5Nh^>PH%j0kfN@D z7$*n{Vh&)5*zRQO!5v%L?EI@3@@&P(F#hM78&H~k?F=M)Jj{=JtmmHmP%y9<$!lOAyD3GW?(D#0CM&~BuZ(EQCrYJ&P zvGJ?j3{J(E&N}cS3?_yrk78Z5w*x2H2tQ7e?32+_0!A%YK4QyYuog2y15y5Fwd z|5>~=THCfw!Ai?@Ze&rhRl_vTh(<9aX1Ewl|DdY#O4nQF0P+!&u`AYfYr;dlhD1{p zuh&*QsAa9%^y+%XAINuAEXs210>@b47y_~#dPKTg9;YipKo;#L$q{_i*M83lQ=Blz zfV3xUX;& zhuPPvv*pPyx9y$jfN5r~4zY8g@C)a|7c{_r*pY(DAV-|>*(l)T36H-VoCmcZW?^L) zQ0M#8;XsrlnenIVYI^YJKMSh+`O5pVzwej@HaDJmIcc^wHsY2rSIRp8kp)qGtC#wFV}YS%obToL0UJcg-UMgoKylzyuinRl$EuJU>q5A&|Ga}gmZy$gvVlL2WnK(mn59^aQ>UV^kR6kSQ86D}{ z3q}3CYlXJ6R6t=um?J`sy3PXUcxX6mk6Hk7Z0;}J$5&{P9%`A=F z4M!C4m+<~CbO7|!?uSDZqKxT&#a1Be!TsxMlb zAP5GZY-x;mrX#MjD`xqrvU3#L^ht&;7xc!ZhXgr2G}JMW+G`O)z#R0zD9w&yc?O|- zTw{m|hhbLFzNwrm+A;(W=dPH^MqjL4GVdG^fRceyc7w!3_(^x%wYydCbHKLVabNFE z#a$1An!va3dmF_|JuJL=&7HniTVBUdcBI!N-6NATcuK)wrC}{?i<7f z1n&>wGWEKvZh+bq*8{6{&^GGc)~$VpI-?+I2($N?VuV;YQA!Dti%t>Dkr84BIgetm z^|CC(2$h;cVzfY#r61N}HJ6G$J?_@Mud4^xH0VflYZ1I7gRft#&g2K z8-I9&^7J&kmfw9wabghY4RO9_7V@u%0jY`Q2G;VS5|oo?vI!7cG;EwEM1R3NtN3qO z7EFG&@to!Ykaa)p!$5MPS@j*)n0Pks{-5n~Mv-47$dP$RGgo00w-4{W>mDkXe7Hf@ z4sy#|TMdW_ZMbj?wVBLE9egmc)#6{_JnV*zv1KK1A9*GMpa72o_6)y&mK!$8u(>jH;n~O z2?Q$&X4g8vrmrXkx#*h2Q^26_Gtr%!|A4!i&iD|}P&aRc{s@j9gbzH0UCx)Rb!;xG}e z2R;euqJ(WlP)UFf1CaxnPfpBc`ec0X1}g>*pqoPwAwAj#sC_sFFXh-W4iu^JUwI!9 z!h{$nEYlV9@`CI21(*4X$?2||oP(224#W^n@_d&u3Jyj~N&gU^GtV2fulc3X+zai) zXiH$`4A7B0$lKFy)wa9NsNz=cLfZscf6Q*u#VZucCi@t*v=8AIAfZFaqzh*+~;|2uo>op z>-7b>Bs)Ypp0)|~Otjh3@a%K&@^Z!fzT)HKqY)HWLnAY@MHLrJ(}a1MkwgiJ*_;M0 z1S?K}J!MQLI-TcP#h)Ry?1GZC6HEJ!;tFP=b|8sl>wtS9Q!@#s%YxZxeK{plG@I43 z?$}8WoO*C;Au6*JTs{?}DVdQh>9-lFfRK-b$c}w$m$^aRvt^k5p#4k+mC8>zSgmFtJvNe!>Yv}YRdAOa(BJ7 z?jwW%$)(Y~ddt>PRRR?E$QL4SB`=( zqMI;zRq`+Mg!i`(tm_6MVBc5kUiEp^!(vR315~8g|L)eV-&%-N-+3u~+BdsCI<(iq zIj4GnTqM#N$De2BS#0a0cU0*3DY-s~Ph|7$Z*H^s1zvF(tgFYMYoHDfh2&}1 z{-goK)6TdW^y@0X9VP>UV^pt5vgh6dklMLL^*+yse@|k1!okCTGzT7Oe9dwvbmZ53 zGTwh&Yag9A-PV56VW4X@m=0ThoBoKMFlgGG8jQ=3!}q8i^A&VwG&Hk^40 z*qGHu7?Mldl@|P=kn@gxTM>fCvdmc1j*=6^e7w#S>{9fj znsP=d3C)Uc%8K9;ZQ`A>wJt> z%z3Z?i4!Q0Qr}8J<_s4iT(AR_1;LT-a9JRRU5=Bg`$$~6K4T;>QO!8}iR ze}A)S2iizEgn*P2)@_9_uq;1M@uN+xOpbzuzIw!N&;@1v&X3a9nU-cdYrJ_}kz94b!x=l~3*1 z*KM;^7I2xO<)U~@M7ZDYTF}f3aw-6MT$YPoKXx6*X*!4-YuD_9L-by+6&5VZj9m(T z{7~U$3=_!f0V<|bfdDD(xLhtKWF;&?1%TVWt2>0%Q4z=?Lx!uT{R8?>~Ww0vufcJqDK2_0ibu-k`q?*o4XL;Et^8xezd6b zCEXE1gui@4@d-tO@kVrC>q6%$?3}Qt4SQO#Z8y8tw^pRAd)8G@J@`zAQ@dP|Y@K_t z?o{mYaudV}_aK@7KWksw<;IO{c>_RZlB|;4@64R}|G)1&+t0G9$Xo!#e24`=lBM=6 zK1Xe}tm2YPA|h_wg;gJ3&AQfi(2Af?)CMAY@mHRn`Yw<%pQz;kboIb3dWl^!O;B>^ zsaSgbamPMuX7Xs%L%RP5YqYNx`r0IeA;MiFsYjiAPI*fU9)Ju|b_hOB0Es9=0cMa@F zgtZ|J6(kKnZ((R@fP6v$I;`Qf2!Q_|Q~_T6$)~Xv!zgflMOCvLi}O^5KM4Uah6Pi+ zAd)Ho;-n1u&^jthkU|%csYDzKBw5=OoFpp@T?2Xy&QwM$7t~T3DW)1ERT}JXfhz73 zpiJsqQFBJlMM*rJe*DP#C6;0#tao|6xnxO^^T3s;u#z&+kBt4;gbiH|E!x0wY{G<% z0{8#?_*)7WvpBb<86n7*q*7HVev)oE$a;W6602hXQ%HFKcGWL}?tLpEX7N5Rdb67Z zshIA)2nnqKxV+tP`}U4}X!_xCU{w-aj1kK`W0@wrU9ZCI&lR8dPb|yD34fvh43hJZ zME(_HLs11ggtMRl zOQyI8gvaL{`zA1V46*6RPhTD*ijgtW#py{t*IGpdaJfmcT{%#7g=5^2Lz4mBDQV1Gj1rW-MI~)3h&p>)JOLGgj#se zLkO3NJ$u1S+fdtDx*Ca+nq9Eg|7Ib~K&kegRZRdOIh4(;A0d71-gnAx62`o&0_sW6 z@Q>t!z9Q)VB*J(&#N>Oj#=>k+jC79)F=_aRcGH^rCfDN;(RGn`?0Ec#?G0A(U z(9A;Q9#h@y`4(nw2!g_m(g2jsXhXi3p>r_o*9XR`?RS`R2t@av7D!zVyM5omwVXZ^ zfmd@a^6#8QAFuYLXA9+85AVzyd>VDfoZVoCE6d6uCY6)5o6vu57NvzeCNPDl8uT53 zB*T2$AJ}y#Z4IUsuH~|*3*Z6LY2BoeY!;>Yz&xeqFjum06DY~`@FEa#U2Y&!uZEHp z$r1iU^PDddm#kX!o+WOiGc(d5lHF@Pq=RqqvW@H)ZCdU0^Q3#{WnRQhE@$6!$3%m{ zjfDrnWfpiB6HW)unjUD-Ng?MKSMsU|sKcJU$U)#kPOqvEH$+4^+;2=2YG3 zS0zWb2Ec}q^DmJl>vOWX7#7s3`~@dAo1Te1D6X=PPVSK3xx+ns3ZR~%7klKKhx9vF zu&c9243ySv+OaBs8AEu=%00P`$6%rvED5JGLYXJjPlYV~048JjpeKD|}|@K^h)7nB&| zI|PtG^~z`tAs|_@8P&l$b)IK{11cY4=UF3|vlF>e5~+~|d$6{5L8r%rgcO79FCUvS z(JyKg^uTc(_@Dpde~Hh)v7wZVbzSjzJe+)WD6#Hxx%ysIB$cEd3lXapwNj)3ST2(j z^Z;pGj@(5iD=XX@fOQoTorSnuE*A}SYWL4WCv6X@i3xL>kShim8j;8%fv5pH$B+?V zMZ+R*5B1{j8SgIDbWObE9?WTRyI_+)TE>8J04~=X9=cL7DO*Yj-`?K=0KfnKU-I5M z6vE(d*?}K!Rcy)ukv+;?^zm`WAAkIg%jG)k$?e+47;(K`1wuarf;YM5$Hym*yyN|P z!?G-RdwX*pgYXA}W*~@3RPX&^AxDO|)GQ4zQcrjdp3Ik&wcmfwjYMZsKt!3S%*8Ww z1=!wiFFUTaxx_Ww;fA_du@qN58g0ADX48>%UUC*LiMs(>5l>B~s2q)`jf4^Vjx1Ak z|2#x;f0me?$zNyvGba$rbrMKg@!fOSHgF6R~E{QlvF;#jP8lR3_5~_CfWL^MGEl_Lwy>OUx@~7c);%w?`B|AOa z_qOPRL8hRSGI7^doD2xQ&Io#Te|l;#xKBbNH+z7)bv3BTeDZB-nNFu}hj}LYy)6D+uo&qIfohkSW&st7j>sV;Fl&lYMZ56n&pPuM7%>4=iB9v9 zP%9zt5|>LPyV_BYO$ucv^+T5_SPn%XT(5&v>*vp(qM1Jq6iZ4pc zp%yX8`+0kN^F%)TOrvHZxFkuUBZL4d=&C=NZJ2SbhwGjOt8f~21|6d#y zcdXkwWK>8YnDBT!aJl@3+wG=FhGMB}_d&CS9z7H6e&*VYjw)Ciklw2w9-V6_QJXlq zbN}Ok^&Ud#9wR*Y|JwoU=vZf4Yz=_RG(!|0lP+uErK6|HC%HC)qXk&?*3N_1NC-%Y z5f72~%6cOEDQ8WYol_o*3~8`Rt)9OCmL?{Is`6ZEHi{+=8r*#zMnWV^A%c0<1$On} z!-_>u${UGlEhVp=y`gIazB=z-oaQHa;Q4h9mcggp{_6&Sn)6TxowveTeL>&QGJbv} zeqkf8{|@xR`e$?m1``I30J`UD$Pjt08k*fM6X0vF|3-{7CjL2y?v=H^4BXYiS4WZ` zj|c)kDHUFL9+_It5P(+({PpC8FH4IcBnK^-;TP~o)%{yzy8il~5c-M>l;RW38LqEAf^bf3BB=DK&$3Pe5!ULg zYc~wa8HJl>)xMO%j%H`0%bs7Ug{7bpNm1)Qd6yV!QxsV&OwEMG1Bgn&uKR7<8GBB6 zY+)l)nlY!zq3nGZt^(6|GYhFMqSoBGv@zCo$2=$8KR&@IxLg*INugqj37n)TMGBbG z1XNbug9QLZ)RX{K9+*Nw_UC5glQE^65&?_K%&L%qOtTy$HyfSHofQ5&7`^n-vj#nz z^P&~OWxjYpww-(L4R5J;J*v>+a7iKd)j!wXWXFo7O>Xvj=6UuaHczu#+secr-0iJ* zlWbu=BdK>;F39`p6LrbOt!tY`UJA2C`i2<1IkE59vF}RyGTnARBn7dgR*7fOJ$#B0 z8PzrUA+UenLx=+>qBZa59FQQWn34iPug$oOmEV8Yh6aP_B-QQKaZs+2u69grX!o^z z9)xL%NF2e$C^@+F%g!YaOY&w>b5$VweKKVZ$oWXz1(1SFB9sr(V+i+XkKxN^5HYb)yBBxqQ9aD(~n zIeRBT>i+Ii13+CTan>w)zZF`RI6AA%SMPlEPv)1ag(iieL6F!~0_3dXell=)Iz+@c zf%NUPpKX@LPX-leg3=Ma=E04Yfj)MLlvv0i(-r@ z5Hcz$?0=aTY2pZjT+^C?hKjUUF{G4D$p=XY;lYdLKZ_n3KLQgAAp$DraUNT!Br0O zx&n**Q9c6=VPY{kVrw3dqFzCI9JE%|AnFuU%3qPiK5Wk+fa9e6J7>5v|9LtVw11XiOmL@UfK=!Z`X>s z`y(*<;L*PXNxpu_To|po`AzYci{|QoC_F@?3aJ34Lwdx4V9FP-++YL&LtTDwJ0{gOE~0 zFKi7*Z-prbycM0|L_UN24I;Gzoof{%5Y-eji|kE2|AC0;4S)s6*mGEin@d)hcGu@s z#R3CSnalfrhz_;_N7Hcb*-*Huu1o51<&y5e!ay91v1)kn9o6<4?2i_*u(2iEn# zvdoTR>_<`Nc6gdxj+~Y37`vS^22O%Kj`<}3z`EU)Lm;{G`~5ggsV%bhI1Wt9f_YvX z_P5W`ApU*deX8zFg=})Sw8Tx*4Q-NdubU9Vq_V}s`2xmydAq&ga=G|(ESJd}3ww>9 zpP!gi7Dog}F3dwfkhBTY6x@N5SqPt|GjAz-b(j=ODF}Kk?K#cT_;$PDvMh)xVLdi& zdSXYqvk9e$^tSgL(ZMiuE^V@l9#*p_Qmvt8&#MG)%pxJzXIQqMc zuWnsBe}VRvBp{0h6zr)o*@IB{8o?$4m)g7&m_huj9D(Ml+Y0UL6@snA?Q&NmG4gl~ zys@es-@!hI@@y$w2}mftxefso&t-!OVqmmwX^n6=KP@0hkyIP0+Y zY9t(80cctp7den)$2hkYfK3_e`e=5O<_H!D*Xz|8-(}bRyT`9??dGTjDMlRohM*xN zAq0fWr3J9)Rn4V}TOf3*J_POuXAknbQzOarXHD8bVTu=y4Au(W;N*Xz}%w9xS&gkTtz zn8#{Cyr9;}r*yeDx+qRx@WzH7mkV4K_R4Ufk|z5fr?D$&IDx~(~| z=M{H7(zQVu))?nJjQ)Ka*^*T6EsYl|DbwVC*(F*~8I-~4h;m5DeP{6SbM&k?B4)0Y z;=knpGy-23I1FY!#2i(B-9-;m+Y1+UiUc)HQq&|%TOsyV#3C=2^C?(ta8EL>>~XEe zdyxCEILcReN3FYR;rsKZxs96Joiq4530WI})C>wE3C&j*O2alYpcXYd{=QMm>4^hy zjt+K1IDY1|H*WyDCiO)F(7Ot@ZAQO~KTo>0*B^G{&xtbbO4|N^<4w@HKYR)M%gQ3# z6B?nUK47;yD>308}u%@lHsN_!$V+6k?O_HCk)7RxPW8YbufULHv2H76E2GLm3AX2P(nlYux_mq{y%e*!8bRrTa ziBwe-M0V#gZQK0-hZfn(MdVKHP!+P{y6*t07vO1{90@p%1Ix1DcDt$0JUO4? z$a^EqQFU}enu`M^AJ~uVu88wA`&z_`x}~*QF|p4;qI|PAT-F#!6UBoAofR>QRPKwM zaR-ilN1DX1pbw5J-9!wqTSW^GfKFtz)V>}960tJ4$=H(I|om2vqM^}aQWpl+VA~i7~Kko9DvR{z_>=_*2Qqi zAQ53+=CR?Rs$TjP6zJ8ptLQepPtsksG?WbuE@75J3{yITNv z*W%=)=UIpXGU(Y?0O^WdER zRqM!vm7=KOHMx_-DD-B89na%N1+nUosinx-)Y~jG`|0Bf<|0mR1z1;O1QYI$JIaw8 z{AhmTx^H!6d1a&|1vZ3$kB<*8jy>6JN)x8(oO-74zuFs@Vqs5F*BGT!0%Y}Buh@5y zv3-7iV%t`{zrBfZP2T)4?)C2uzt7ZJu{OrFgxwrI*~z3VJNRwSTF9dECla=8ch>rx zB%1cX;eU2!oLiF-V^quHM!Yk5tJo$8$sEhdo;G`_-S(0gEd6cJRu#j@BjGt@TSUEO1<&XvRvH#(GUb7 za;8D1X^qLY?dq`+eKLH0eJugdI1gz`xLhxY>x%pRF7G)6+}__1LPXAwrWiOOZ$$70 zHN@w5;t-;e56jcf_I#l;B;7Xxwx%J9Pd{sqC$EA0ef7zPHafAXB}n-I-1PiGrH&~H z8fl4^F(m|&CY=d`ioWT|o3T;qxIrOAl+&b5)SOdC;&XT&TJU0jenkoqH0*uoDzZMDGPvpOK+nI8dT6F{?G!Sjvshybw}Zia@k`DA`@Vsw9aFXKl+3uKJ+`>^ zNpZ6&*A5%vik!EhQ4&~QZrDRp;F?ScnCA)eoG?vEw9L#{w+(;&`6obxDT$d-E(Mp% zrOCTe0s^pad-vMQi6AEvq)myEIJbC!(eJfBXyi*l`>?mgS0+ z1bxZJu7O1GYb%iUb6l?w^@_sl)zJ)-RnBSleXunFcKs?d)@{YSE#ADy<7Izdi+_$O z4(#WY5e_{G~?&bpN*j&qZ2%H zDd0dT`M^;!;v~KTrJ4ss@~i-ywnR+dK2MNfz&#n;aC;kC_?m}qj zM8kK4fO{VR>K;dtn9dgh8YLaoUC0n3Pgb-7Tw7;S4WUMKUQ266nmn_Y%{Mg09041a zUwgx%&drZIRls0bP&>mT8rK1)1SlO^V6P)_=Z+;oA!@xyV*}8u1VU%B!D@lq7kKaP ztpPAjfu%hWb;(cYjD`Bpq1H9B1{jcb&neAV<}2puP0djjgpia-)U=uv+`&qrS$@{6 z6SNQ?IfgHCoS%1&eZ(ZG8&c@3i;YdqC$2%&!kTmTSX?3Wu_Fhvi$A=G$nQ5C`H)y5 z)g222-!rIXbx^V-u?4*$g_u^6-rgO?H#3?;t#=u1Pc1C|2bOup^?Fg5SG@kE(2A3w z?XQo+I19k-cGE&YxZN%Y4CK7|^hQK@dwY`(wN~WVgYPZ8BV12AeDPX=$h`Prv zY8_ik#^+oh{bThBjK;r^l)8vegxm)T$mIh$7j?iS?0ZY$ljkT+=Bi48X`0*^3;zA* zVWcX`=P)$KI5EaYX;MWw7!6Uf_ai6+l!(|2k4mjxJV?(do1Tikjuhn}4=$@EC+ji= zlw45i=F!W|C6fKM*gxC0HVao<69gLEJIw-`RC3B_BvTM1=~2naf)40PN!1xNcQx1StX}68#(-WWo^MgK(T z=7|6XQdN)ZPzg1*)`5dQ*lCXj^$-rf5PUYNU6;HBdQEb8v3D^Yv86asZ*N2qF(gdW zf@Qg4o-bIIi>5G`FL&q|m^`=$HrJ(RsYuhMVo(|M?0)jYOBYL29Znf;UiEO!xrmi! zJzCy+#~wyUx;l;uE;}BNhaTh&C15c2W5+b9CR-WdITwYbt4EMhsd)ePO;hKNrghii zV3D}@?cp!hUi;&*A`s#2?Ft}?iHUL=jG=C_LJ27nb->%Zq|vSG10Y5s!lhiC)h{l8 zlCGFK$>X+dGR>BPT?=Dl&bNm0`}gnoeB5!r-*LY`P)fn)=Uq&Ejtrs?C7mTK^MWI1 z#H6l;>xymLaJ^n#X<>Wq#@i?-Vi{{9T)}0z;(otlnkL~bsPi5X;rQz>Z-@+nx0Jhe zUGe9if8zW1Z=PV-%lxKk!sT+o zBzX?s%Xh?B@K_Tb>!+_vdE%V{IbFG#0vWo%kd#399!I?StLA|pQL;ylJz7VuZRLU9pK+Am&Co?6V+Ta>jg8AFwuH!U?h6ur+V})ZZ6t zFp!TbpJi4RN^H;FuQW{i@BaU#c_O5g5EcnJq7XqTi94VkYzaXRKW+3w;|Ea)k|L?u z1J=}7COuc6*6@VR9LMfF7P|&OkPL#@94YNR`{d2%eLoFE!8Fers?xF_`tN!GOIQyx z5{V=)rHB|@V+=-cmOacsC|3kjghZZ0QY)iy1=RvB1kj;!;LBiHZaQ3wmtQ?Pm`eI_vejb+WB^BntXfGtypbD8_%Q9tt-SGuZ><24}3t-w?H5`hn?PU#K zlIL!_KS>)a8b6xFkHB9iyAAMhP-`$cB!&PaBG9Z;Zr-u&8z{)MsrCWbcF}2@KY+dU z%jJrJqOx!+NPu(l5+9txa14Z7x>mD8{uL({ZxyE-eH{msnCisi0y zHD)oXnWiX6fNIx?2i+Flh!~4AWVIl^6YcMF2cKJGbuMyN)Iylt)vvd% zHL0B(5JgR9io5%bp6?Z<1bt5GTmq$;wf%Pp8Oy?mO8l!_TNL$iNGlyqawcl7d!dX%(i+)(;sq2WMm$V zdYpLJc^+~T;GY3@=AMAq_a$vt&}L<7>Auf?NW(wLV`_~o5y;5|Om@M?SL2dRu-kI> zhv0BVgr^h;xsM#>w?gy<$yD_qmm@3dvTloDy2aTwrwN0PMI8Db-!Umhfl_L$<`5HZg@ z1P&1ukEX6Vsmc2SY7!$SQvd`-rASST4Bmzs`52k6IU5F-w2?OYcFpCpIvU@F#CVD- zK$V)T*9yFPZ$t`%@}zI>LkKuZKFKe;J#R0;4AHHjNA`X2_XqPnsQ?EhgZX64IxvuA zuj`p04Nw*p3CZ~uETbZJ1UN+*`Oa!^1#ko0mGWd8a}yiQ_;{F zgw9034nk{adYFIEkkbhzI9$!o^e?&xGZm2 z<{Reu0@f}V)nIt)T>NZ;Rv7GL{?iP9>Im&Tkze?!e~{f~ld?4_kGO)>z@SRQMA!B$ zVm)g`snm?aLTR*!=A!%oE^7E=+V~7EYB0oMfTHSNP;&uNz&uZ0aI+qe^HpH}oHyhg zC6p&6lv?oDkH3(0Cts>L!X=%|ita@Zw@kI^onb~S^7oeOjAP%lX%SvSPDuidz+#3( zvS&SV#ym~9Emy1{td9ropLhKD`4?h}Se6O3e8)5;{OdR2HvIVeZ+v`w$hF%y9NVgK zuN7}^H{H<(tn2E{Nv-U>gGJN!3{tf;z_V=Z^Wy`{a&@OZLn@|eLW&W8e|&;+!Q0!L z%Lq*lXocP!99gyD2DKZiVs46yCjd4SL3kY1gO%(tTG);m#qdB*;|jz;YDwGTgJs~^ zopTUETOn-QuAGm_U)xzv&l*2knGm$0qatgXz^obfvL=8Mt3rwj;T9*p9Y@RfAj-|) zD+q!HT?q&gPgYtMHJoz+D0_@-Z&$u;8y=tcp~(up#56`{LG{++E;H=xqbrL6&vB48 zJyETbXCP{_Ur!1&b1x;7#%htf0Vz~eWl&R+<|XGtR+gzE7 zalZ?PWj_vV$A)cPu^+3hmkO$qnq5|GXi=pn``k7ucXqu)gL4i};}^&+28nd97$EQ% zl*5hE&iF+dAdf?%PrcoL?16$njqE87raTY{8!A!9+I5l(`Z#aoc2L)3gs$lrxe3y^ zX$@rKfz?rMV641urOY@X1%?6)rgdl4LjU=Mrnaz^2)EC=GH?|AEV>4uS3(3uE2IIi z4w3;8Is~9} zyJ9)OnZ-}OvKcmYT30lGYVv8AvF$6UGNyC|Ku$=bC~_jpt&gcqc>#|GaQQN2G9K$H zN)R@SVPKwt6v*?%jVW&ELsgR*n+CRRL-JHJg}1w+x9>ZqG~=QYxg*OuB2mQ5vro>K z+k*W#aKHb=Uw{3D%jF^reo)Mxlxt$zz>M6^A?oLdon= z-|`&f?wZ4dt_DnE+;oVfh6!MrX+Gj@Sy)cuZA2I zMD-+0W;t&{j9?<+BL$L`u&yiZ_$(GxTp6(zIk;gF-W7#2a*c?!BGihiL|-tw<7$e6 zvK)KHwq+spWepCC6KZCCzKTESZ_=m1cXiN?rbpKy?{`W>vXHwvh9LrzWDi6`Y zHTuBSE`%kq|v0@s-NJn~3l=9uNpaDrF<)bEgQPr)$!aL9Lh* zcX)$kEo)@GvN!lI)N@111&2C-m z{@op^=seBazK~$*f#(qAaq@5e{C%MzSWDIHrkt>3mZ%!sky7(v|LP8ugUB4v;Awl6 zr9r603Y}Qq8tm-vQ*A?u86iuCz|Wt5<2Vjn-)@Lu!sBrlkN>y>p zOUR7cxJJ3T?fHzEZP(&{zdM|2rZ_q8o}_lW-84{U!{^7R=+QM2Scqx|C`w_tEDNr; z8xW+K+4l#wZEK`B{ann*=I!kb$9`ZhyIA+KbpGX##)M*OscPMRUK{{-HU23>b2w?7 zFp5MY-`+I8;PJq>Z{Khn2Y&qcf$Q~#%jMz*K)?OgB6pi4PaDt712kQ0bt_=`OsaeF z+x0c%NVp^9WH07r(EHopbA5fOgCk|H@$P@F=RBCtftgG7h0#|bs^>0Mh=qZKkQXO` zu(?RFB?RPJP@x4$A^KPXDpk*5kZWL^x=p#Us&pU3dKb_fP!%{DH!EfGa{Qj*oPBp*VG1u(Uj88}-$yT>eF8iY@LWQwt?${3dY^PRng{VO7Yt8J3Bps{?|Egx zCoQF;4(DA(@6ih$rJ7wQ!gx;iJ6}q3@#~9!)ju?#rH>0f)AvK@&5XEl0BCT62(3Wl z3&|YDq`cP`k^Z?eu&t&@Z$E=eHGsj07jjsI5xUodE>2y*Lg#Arm5Bx8{9*MP(|R(+ zs81bmo4VSPD1`1q)`{IrP$=*~uEHrc)ISG%Z?% zl1nj?{q%F>p5+fg5G2izUmzgWl`cIG!2W-!Sye{~95nq8G@Lg^ICb{9UJKL;su{>Y zqzF!3L9p+ +#endif // STBI_NO_STDIO + +#define STBI_VERSION 1 + +enum +{ + STBI_default = 0, // only used for desired_channels + + STBI_grey = 1, + STBI_grey_alpha = 2, + STBI_rgb = 3, + STBI_rgb_alpha = 4 +}; + +#include +typedef unsigned char stbi_uc; +typedef unsigned short stbi_us; + +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef STBIDEF +#ifdef STB_IMAGE_STATIC +#define STBIDEF static +#else +#define STBIDEF extern +#endif +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// PRIMARY API - works on images of any type +// + +// +// load image by filename, open file, or memory buffer +// + +typedef struct +{ + int (*read) (void *user,char *data,int size); // fill 'data' with 'size' bytes. return number of bytes actually read + void (*skip) (void *user,int n); // skip the next 'n' bytes, or 'unget' the last -n bytes if negative + int (*eof) (void *user); // returns nonzero if we are at end of file/data +} stbi_io_callbacks; + +//////////////////////////////////// +// +// 8-bits-per-channel interface +// + +STBIDEF stbi_uc *stbi_load_from_memory (stbi_uc const *buffer, int len , int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk , void *user, int *x, int *y, int *channels_in_file, int desired_channels); + +#ifndef STBI_NO_STDIO +STBIDEF stbi_uc *stbi_load (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_uc *stbi_load_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); +// for stbi_load_from_file, file pointer is left pointing immediately after image +#endif + +#ifndef STBI_NO_GIF +STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp); +#endif + +#ifdef STBI_WINDOWS_UTF8 +STBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input); +#endif + +//////////////////////////////////// +// +// 16-bits-per-channel interface +// + +STBIDEF stbi_us *stbi_load_16_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels); + +#ifndef STBI_NO_STDIO +STBIDEF stbi_us *stbi_load_16 (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); +STBIDEF stbi_us *stbi_load_from_file_16(FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); +#endif + +//////////////////////////////////// +// +// float-per-channel interface +// +#ifndef STBI_NO_LINEAR + STBIDEF float *stbi_loadf_from_memory (stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels); + STBIDEF float *stbi_loadf_from_callbacks (stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels); + + #ifndef STBI_NO_STDIO + STBIDEF float *stbi_loadf (char const *filename, int *x, int *y, int *channels_in_file, int desired_channels); + STBIDEF float *stbi_loadf_from_file (FILE *f, int *x, int *y, int *channels_in_file, int desired_channels); + #endif +#endif + +#ifndef STBI_NO_HDR + STBIDEF void stbi_hdr_to_ldr_gamma(float gamma); + STBIDEF void stbi_hdr_to_ldr_scale(float scale); +#endif // STBI_NO_HDR + +#ifndef STBI_NO_LINEAR + STBIDEF void stbi_ldr_to_hdr_gamma(float gamma); + STBIDEF void stbi_ldr_to_hdr_scale(float scale); +#endif // STBI_NO_LINEAR + +// stbi_is_hdr is always defined, but always returns false if STBI_NO_HDR +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user); +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len); +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr (char const *filename); +STBIDEF int stbi_is_hdr_from_file(FILE *f); +#endif // STBI_NO_STDIO + + +// get a VERY brief reason for failure +// on most compilers (and ALL modern mainstream compilers) this is threadsafe +STBIDEF const char *stbi_failure_reason (void); + +// free the loaded image -- this is just free() +STBIDEF void stbi_image_free (void *retval_from_stbi_load); + +// get image dimensions & components without fully decoding +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp); +STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len); +STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *clbk, void *user); + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info (char const *filename, int *x, int *y, int *comp); +STBIDEF int stbi_info_from_file (FILE *f, int *x, int *y, int *comp); +STBIDEF int stbi_is_16_bit (char const *filename); +STBIDEF int stbi_is_16_bit_from_file(FILE *f); +#endif + + + +// for image formats that explicitly notate that they have premultiplied alpha, +// we just return the colors as stored in the file. set this flag to force +// unpremultiplication. results are undefined if the unpremultiply overflow. +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply); + +// indicate whether we should process iphone images back to canonical format, +// or just pass them through "as-is" +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert); + +// flip the image vertically, so the first pixel in the output array is the bottom left +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip); + +// as above, but only applies to images loaded on the thread that calls the function +// this function is only available if your compiler supports thread-local variables; +// calling it will fail to link if your compiler doesn't +STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply); +STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert); +STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip); + +// ZLIB client - used by PNG, available for other purposes + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen); +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header); +STBIDEF char *stbi_zlib_decode_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); + +STBIDEF char *stbi_zlib_decode_noheader_malloc(const char *buffer, int len, int *outlen); +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen); + + +#ifdef __cplusplus +} +#endif + +// +// +//// end header file ///////////////////////////////////////////////////// +#endif // STBI_INCLUDE_STB_IMAGE_H + +#ifdef STB_IMAGE_IMPLEMENTATION + +#if defined(STBI_ONLY_JPEG) || defined(STBI_ONLY_PNG) || defined(STBI_ONLY_BMP) \ + || defined(STBI_ONLY_TGA) || defined(STBI_ONLY_GIF) || defined(STBI_ONLY_PSD) \ + || defined(STBI_ONLY_HDR) || defined(STBI_ONLY_PIC) || defined(STBI_ONLY_PNM) \ + || defined(STBI_ONLY_ZLIB) + #ifndef STBI_ONLY_JPEG + #define STBI_NO_JPEG + #endif + #ifndef STBI_ONLY_PNG + #define STBI_NO_PNG + #endif + #ifndef STBI_ONLY_BMP + #define STBI_NO_BMP + #endif + #ifndef STBI_ONLY_PSD + #define STBI_NO_PSD + #endif + #ifndef STBI_ONLY_TGA + #define STBI_NO_TGA + #endif + #ifndef STBI_ONLY_GIF + #define STBI_NO_GIF + #endif + #ifndef STBI_ONLY_HDR + #define STBI_NO_HDR + #endif + #ifndef STBI_ONLY_PIC + #define STBI_NO_PIC + #endif + #ifndef STBI_ONLY_PNM + #define STBI_NO_PNM + #endif +#endif + +#if defined(STBI_NO_PNG) && !defined(STBI_SUPPORT_ZLIB) && !defined(STBI_NO_ZLIB) +#define STBI_NO_ZLIB +#endif + + +#include +#include // ptrdiff_t on osx +#include +#include +#include + +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) +#include // ldexp, pow +#endif + +#ifndef STBI_NO_STDIO +#include +#endif + +#ifndef STBI_ASSERT +#include +#define STBI_ASSERT(x) assert(x) +#endif + +#ifdef __cplusplus +#define STBI_EXTERN extern "C" +#else +#define STBI_EXTERN extern +#endif + + +#ifndef _MSC_VER + #ifdef __cplusplus + #define stbi_inline inline + #else + #define stbi_inline + #endif +#else + #define stbi_inline __forceinline +#endif + +#ifndef STBI_NO_THREAD_LOCALS + #if defined(__cplusplus) && __cplusplus >= 201103L + #define STBI_THREAD_LOCAL thread_local + #elif defined(__GNUC__) && __GNUC__ < 5 + #define STBI_THREAD_LOCAL __thread + #elif defined(_MSC_VER) + #define STBI_THREAD_LOCAL __declspec(thread) + #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && !defined(__STDC_NO_THREADS__) + #define STBI_THREAD_LOCAL _Thread_local + #endif + + #ifndef STBI_THREAD_LOCAL + #if defined(__GNUC__) + #define STBI_THREAD_LOCAL __thread + #endif + #endif +#endif + +#if defined(_MSC_VER) || defined(__SYMBIAN32__) +typedef unsigned short stbi__uint16; +typedef signed short stbi__int16; +typedef unsigned int stbi__uint32; +typedef signed int stbi__int32; +#else +#include +typedef uint16_t stbi__uint16; +typedef int16_t stbi__int16; +typedef uint32_t stbi__uint32; +typedef int32_t stbi__int32; +#endif + +// should produce compiler error if size is wrong +typedef unsigned char validate_uint32[sizeof(stbi__uint32)==4 ? 1 : -1]; + +#ifdef _MSC_VER +#define STBI_NOTUSED(v) (void)(v) +#else +#define STBI_NOTUSED(v) (void)sizeof(v) +#endif + +#ifdef _MSC_VER +#define STBI_HAS_LROTL +#endif + +#ifdef STBI_HAS_LROTL + #define stbi_lrot(x,y) _lrotl(x,y) +#else + #define stbi_lrot(x,y) (((x) << (y)) | ((x) >> (-(y) & 31))) +#endif + +#if defined(STBI_MALLOC) && defined(STBI_FREE) && (defined(STBI_REALLOC) || defined(STBI_REALLOC_SIZED)) +// ok +#elif !defined(STBI_MALLOC) && !defined(STBI_FREE) && !defined(STBI_REALLOC) && !defined(STBI_REALLOC_SIZED) +// ok +#else +#error "Must define all or none of STBI_MALLOC, STBI_FREE, and STBI_REALLOC (or STBI_REALLOC_SIZED)." +#endif + +#ifndef STBI_MALLOC +#define STBI_MALLOC(sz) malloc(sz) +#define STBI_REALLOC(p,newsz) realloc(p,newsz) +#define STBI_FREE(p) free(p) +#endif + +#ifndef STBI_REALLOC_SIZED +#define STBI_REALLOC_SIZED(p,oldsz,newsz) STBI_REALLOC(p,newsz) +#endif + +// x86/x64 detection +#if defined(__x86_64__) || defined(_M_X64) +#define STBI__X64_TARGET +#elif defined(__i386) || defined(_M_IX86) +#define STBI__X86_TARGET +#endif + +#if defined(__GNUC__) && defined(STBI__X86_TARGET) && !defined(__SSE2__) && !defined(STBI_NO_SIMD) +// gcc doesn't support sse2 intrinsics unless you compile with -msse2, +// which in turn means it gets to use SSE2 everywhere. This is unfortunate, +// but previous attempts to provide the SSE2 functions with runtime +// detection caused numerous issues. The way architecture extensions are +// exposed in GCC/Clang is, sadly, not really suited for one-file libs. +// New behavior: if compiled with -msse2, we use SSE2 without any +// detection; if not, we don't use it at all. +#define STBI_NO_SIMD +#endif + +#if defined(__MINGW32__) && defined(STBI__X86_TARGET) && !defined(STBI_MINGW_ENABLE_SSE2) && !defined(STBI_NO_SIMD) +// Note that __MINGW32__ doesn't actually mean 32-bit, so we have to avoid STBI__X64_TARGET +// +// 32-bit MinGW wants ESP to be 16-byte aligned, but this is not in the +// Windows ABI and VC++ as well as Windows DLLs don't maintain that invariant. +// As a result, enabling SSE2 on 32-bit MinGW is dangerous when not +// simultaneously enabling "-mstackrealign". +// +// See https://github.com/nothings/stb/issues/81 for more information. +// +// So default to no SSE2 on 32-bit MinGW. If you've read this far and added +// -mstackrealign to your build settings, feel free to #define STBI_MINGW_ENABLE_SSE2. +#define STBI_NO_SIMD +#endif + +#if !defined(STBI_NO_SIMD) && (defined(STBI__X86_TARGET) || defined(STBI__X64_TARGET)) +#define STBI_SSE2 +#include + +#ifdef _MSC_VER + +#if _MSC_VER >= 1400 // not VC6 +#include // __cpuid +static int stbi__cpuid3(void) +{ + int info[4]; + __cpuid(info,1); + return info[3]; +} +#else +static int stbi__cpuid3(void) +{ + int res; + __asm { + mov eax,1 + cpuid + mov res,edx + } + return res; +} +#endif + +#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name + +#if !defined(STBI_NO_JPEG) && defined(STBI_SSE2) +static int stbi__sse2_available(void) +{ + int info3 = stbi__cpuid3(); + return ((info3 >> 26) & 1) != 0; +} +#endif + +#else // assume GCC-style if not VC++ +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) + +#if !defined(STBI_NO_JPEG) && defined(STBI_SSE2) +static int stbi__sse2_available(void) +{ + // If we're even attempting to compile this on GCC/Clang, that means + // -msse2 is on, which means the compiler is allowed to use SSE2 + // instructions at will, and so are we. + return 1; +} +#endif + +#endif +#endif + +// ARM NEON +#if defined(STBI_NO_SIMD) && defined(STBI_NEON) +#undef STBI_NEON +#endif + +#ifdef STBI_NEON +#include +#ifdef _MSC_VER +#define STBI_SIMD_ALIGN(type, name) __declspec(align(16)) type name +#else +#define STBI_SIMD_ALIGN(type, name) type name __attribute__((aligned(16))) +#endif +#endif + +#ifndef STBI_SIMD_ALIGN +#define STBI_SIMD_ALIGN(type, name) type name +#endif + +#ifndef STBI_MAX_DIMENSIONS +#define STBI_MAX_DIMENSIONS (1 << 24) +#endif + +/////////////////////////////////////////////// +// +// stbi__context struct and start_xxx functions + +// stbi__context structure is our basic context used by all images, so it +// contains all the IO context, plus some basic image information +typedef struct +{ + stbi__uint32 img_x, img_y; + int img_n, img_out_n; + + stbi_io_callbacks io; + void *io_user_data; + + int read_from_callbacks; + int buflen; + stbi_uc buffer_start[128]; + int callback_already_read; + + stbi_uc *img_buffer, *img_buffer_end; + stbi_uc *img_buffer_original, *img_buffer_original_end; +} stbi__context; + + +static void stbi__refill_buffer(stbi__context *s); + +// initialize a memory-decode context +static void stbi__start_mem(stbi__context *s, stbi_uc const *buffer, int len) +{ + s->io.read = NULL; + s->read_from_callbacks = 0; + s->callback_already_read = 0; + s->img_buffer = s->img_buffer_original = (stbi_uc *) buffer; + s->img_buffer_end = s->img_buffer_original_end = (stbi_uc *) buffer+len; +} + +// initialize a callback-based context +static void stbi__start_callbacks(stbi__context *s, stbi_io_callbacks *c, void *user) +{ + s->io = *c; + s->io_user_data = user; + s->buflen = sizeof(s->buffer_start); + s->read_from_callbacks = 1; + s->callback_already_read = 0; + s->img_buffer = s->img_buffer_original = s->buffer_start; + stbi__refill_buffer(s); + s->img_buffer_original_end = s->img_buffer_end; +} + +#ifndef STBI_NO_STDIO + +static int stbi__stdio_read(void *user, char *data, int size) +{ + return (int) fread(data,1,size,(FILE*) user); +} + +static void stbi__stdio_skip(void *user, int n) +{ + int ch; + fseek((FILE*) user, n, SEEK_CUR); + ch = fgetc((FILE*) user); /* have to read a byte to reset feof()'s flag */ + if (ch != EOF) { + ungetc(ch, (FILE *) user); /* push byte back onto stream if valid. */ + } +} + +static int stbi__stdio_eof(void *user) +{ + return feof((FILE*) user) || ferror((FILE *) user); +} + +static stbi_io_callbacks stbi__stdio_callbacks = +{ + stbi__stdio_read, + stbi__stdio_skip, + stbi__stdio_eof, +}; + +static void stbi__start_file(stbi__context *s, FILE *f) +{ + stbi__start_callbacks(s, &stbi__stdio_callbacks, (void *) f); +} + +//static void stop_file(stbi__context *s) { } + +#endif // !STBI_NO_STDIO + +static void stbi__rewind(stbi__context *s) +{ + // conceptually rewind SHOULD rewind to the beginning of the stream, + // but we just rewind to the beginning of the initial buffer, because + // we only use it after doing 'test', which only ever looks at at most 92 bytes + s->img_buffer = s->img_buffer_original; + s->img_buffer_end = s->img_buffer_original_end; +} + +enum +{ + STBI_ORDER_RGB, + STBI_ORDER_BGR +}; + +typedef struct +{ + int bits_per_channel; + int num_channels; + int channel_order; +} stbi__result_info; + +#ifndef STBI_NO_JPEG +static int stbi__jpeg_test(stbi__context *s); +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNG +static int stbi__png_test(stbi__context *s); +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__png_is16(stbi__context *s); +#endif + +#ifndef STBI_NO_BMP +static int stbi__bmp_test(stbi__context *s); +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_TGA +static int stbi__tga_test(stbi__context *s); +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s); +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc); +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__psd_is16(stbi__context *s); +#endif + +#ifndef STBI_NO_HDR +static int stbi__hdr_test(stbi__context *s); +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_test(stbi__context *s); +static void *stbi__pic_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_GIF +static int stbi__gif_test(stbi__context *s); +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp); +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp); +#endif + +#ifndef STBI_NO_PNM +static int stbi__pnm_test(stbi__context *s); +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri); +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp); +static int stbi__pnm_is16(stbi__context *s); +#endif + +static +#ifdef STBI_THREAD_LOCAL +STBI_THREAD_LOCAL +#endif +const char *stbi__g_failure_reason; + +STBIDEF const char *stbi_failure_reason(void) +{ + return stbi__g_failure_reason; +} + +#ifndef STBI_NO_FAILURE_STRINGS +static int stbi__err(const char *str) +{ + stbi__g_failure_reason = str; + return 0; +} +#endif + +static void *stbi__malloc(size_t size) +{ + return STBI_MALLOC(size); +} + +// stb_image uses ints pervasively, including for offset calculations. +// therefore the largest decoded image size we can support with the +// current code, even on 64-bit targets, is INT_MAX. this is not a +// significant limitation for the intended use case. +// +// we do, however, need to make sure our size calculations don't +// overflow. hence a few helper functions for size calculations that +// multiply integers together, making sure that they're non-negative +// and no overflow occurs. + +// return 1 if the sum is valid, 0 on overflow. +// negative terms are considered invalid. +static int stbi__addsizes_valid(int a, int b) +{ + if (b < 0) return 0; + // now 0 <= b <= INT_MAX, hence also + // 0 <= INT_MAX - b <= INTMAX. + // And "a + b <= INT_MAX" (which might overflow) is the + // same as a <= INT_MAX - b (no overflow) + return a <= INT_MAX - b; +} + +// returns 1 if the product is valid, 0 on overflow. +// negative factors are considered invalid. +static int stbi__mul2sizes_valid(int a, int b) +{ + if (a < 0 || b < 0) return 0; + if (b == 0) return 1; // mul-by-0 is always safe + // portable way to check for no overflows in a*b + return a <= INT_MAX/b; +} + +#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR) +// returns 1 if "a*b + add" has no negative terms/factors and doesn't overflow +static int stbi__mad2sizes_valid(int a, int b, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__addsizes_valid(a*b, add); +} +#endif + +// returns 1 if "a*b*c + add" has no negative terms/factors and doesn't overflow +static int stbi__mad3sizes_valid(int a, int b, int c, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) && + stbi__addsizes_valid(a*b*c, add); +} + +// returns 1 if "a*b*c*d + add" has no negative terms/factors and doesn't overflow +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM) +static int stbi__mad4sizes_valid(int a, int b, int c, int d, int add) +{ + return stbi__mul2sizes_valid(a, b) && stbi__mul2sizes_valid(a*b, c) && + stbi__mul2sizes_valid(a*b*c, d) && stbi__addsizes_valid(a*b*c*d, add); +} +#endif + +#if !defined(STBI_NO_JPEG) || !defined(STBI_NO_PNG) || !defined(STBI_NO_TGA) || !defined(STBI_NO_HDR) +// mallocs with size overflow checking +static void *stbi__malloc_mad2(int a, int b, int add) +{ + if (!stbi__mad2sizes_valid(a, b, add)) return NULL; + return stbi__malloc(a*b + add); +} +#endif + +static void *stbi__malloc_mad3(int a, int b, int c, int add) +{ + if (!stbi__mad3sizes_valid(a, b, c, add)) return NULL; + return stbi__malloc(a*b*c + add); +} + +#if !defined(STBI_NO_LINEAR) || !defined(STBI_NO_HDR) || !defined(STBI_NO_PNM) +static void *stbi__malloc_mad4(int a, int b, int c, int d, int add) +{ + if (!stbi__mad4sizes_valid(a, b, c, d, add)) return NULL; + return stbi__malloc(a*b*c*d + add); +} +#endif + +// returns 1 if the sum of two signed ints is valid (between -2^31 and 2^31-1 inclusive), 0 on overflow. +static int stbi__addints_valid(int a, int b) +{ + if ((a >= 0) != (b >= 0)) return 1; // a and b have different signs, so no overflow + if (a < 0 && b < 0) return a >= INT_MIN - b; // same as a + b >= INT_MIN; INT_MIN - b cannot overflow since b < 0. + return a <= INT_MAX - b; +} + +// returns 1 if the product of two signed shorts is valid, 0 on overflow. +static int stbi__mul2shorts_valid(short a, short b) +{ + if (b == 0 || b == -1) return 1; // multiplication by 0 is always 0; check for -1 so SHRT_MIN/b doesn't overflow + if ((a >= 0) == (b >= 0)) return a <= SHRT_MAX/b; // product is positive, so similar to mul2sizes_valid + if (b < 0) return a <= SHRT_MIN / b; // same as a * b >= SHRT_MIN + return a >= SHRT_MIN / b; +} + +// stbi__err - error +// stbi__errpf - error returning pointer to float +// stbi__errpuc - error returning pointer to unsigned char + +#ifdef STBI_NO_FAILURE_STRINGS + #define stbi__err(x,y) 0 +#elif defined(STBI_FAILURE_USERMSG) + #define stbi__err(x,y) stbi__err(y) +#else + #define stbi__err(x,y) stbi__err(x) +#endif + +#define stbi__errpf(x,y) ((float *)(size_t) (stbi__err(x,y)?NULL:NULL)) +#define stbi__errpuc(x,y) ((unsigned char *)(size_t) (stbi__err(x,y)?NULL:NULL)) + +STBIDEF void stbi_image_free(void *retval_from_stbi_load) +{ + STBI_FREE(retval_from_stbi_load); +} + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp); +#endif + +#ifndef STBI_NO_HDR +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp); +#endif + +static int stbi__vertically_flip_on_load_global = 0; + +STBIDEF void stbi_set_flip_vertically_on_load(int flag_true_if_should_flip) +{ + stbi__vertically_flip_on_load_global = flag_true_if_should_flip; +} + +#ifndef STBI_THREAD_LOCAL +#define stbi__vertically_flip_on_load stbi__vertically_flip_on_load_global +#else +static STBI_THREAD_LOCAL int stbi__vertically_flip_on_load_local, stbi__vertically_flip_on_load_set; + +STBIDEF void stbi_set_flip_vertically_on_load_thread(int flag_true_if_should_flip) +{ + stbi__vertically_flip_on_load_local = flag_true_if_should_flip; + stbi__vertically_flip_on_load_set = 1; +} + +#define stbi__vertically_flip_on_load (stbi__vertically_flip_on_load_set \ + ? stbi__vertically_flip_on_load_local \ + : stbi__vertically_flip_on_load_global) +#endif // STBI_THREAD_LOCAL + +static void *stbi__load_main(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc) +{ + memset(ri, 0, sizeof(*ri)); // make sure it's initialized if we add new fields + ri->bits_per_channel = 8; // default is 8 so most paths don't have to be changed + ri->channel_order = STBI_ORDER_RGB; // all current input & output are this, but this is here so we can add BGR order + ri->num_channels = 0; + + // test the formats with a very explicit header first (at least a FOURCC + // or distinctive magic number first) + #ifndef STBI_NO_PNG + if (stbi__png_test(s)) return stbi__png_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_BMP + if (stbi__bmp_test(s)) return stbi__bmp_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_GIF + if (stbi__gif_test(s)) return stbi__gif_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PSD + if (stbi__psd_test(s)) return stbi__psd_load(s,x,y,comp,req_comp, ri, bpc); + #else + STBI_NOTUSED(bpc); + #endif + #ifndef STBI_NO_PIC + if (stbi__pic_test(s)) return stbi__pic_load(s,x,y,comp,req_comp, ri); + #endif + + // then the formats that can end up attempting to load with just 1 or 2 + // bytes matching expectations; these are prone to false positives, so + // try them later + #ifndef STBI_NO_JPEG + if (stbi__jpeg_test(s)) return stbi__jpeg_load(s,x,y,comp,req_comp, ri); + #endif + #ifndef STBI_NO_PNM + if (stbi__pnm_test(s)) return stbi__pnm_load(s,x,y,comp,req_comp, ri); + #endif + + #ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + float *hdr = stbi__hdr_load(s, x,y,comp,req_comp, ri); + return stbi__hdr_to_ldr(hdr, *x, *y, req_comp ? req_comp : *comp); + } + #endif + + #ifndef STBI_NO_TGA + // test tga last because it's a crappy test! + if (stbi__tga_test(s)) + return stbi__tga_load(s,x,y,comp,req_comp, ri); + #endif + + return stbi__errpuc("unknown image type", "Image not of any known type, or corrupt"); +} + +static stbi_uc *stbi__convert_16_to_8(stbi__uint16 *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi_uc *reduced; + + reduced = (stbi_uc *) stbi__malloc(img_len); + if (reduced == NULL) return stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + reduced[i] = (stbi_uc)((orig[i] >> 8) & 0xFF); // top half of each byte is sufficient approx of 16->8 bit scaling + + STBI_FREE(orig); + return reduced; +} + +static stbi__uint16 *stbi__convert_8_to_16(stbi_uc *orig, int w, int h, int channels) +{ + int i; + int img_len = w * h * channels; + stbi__uint16 *enlarged; + + enlarged = (stbi__uint16 *) stbi__malloc(img_len*2); + if (enlarged == NULL) return (stbi__uint16 *) stbi__errpuc("outofmem", "Out of memory"); + + for (i = 0; i < img_len; ++i) + enlarged[i] = (stbi__uint16)((orig[i] << 8) + orig[i]); // replicate to high and low byte, maps 0->0, 255->0xffff + + STBI_FREE(orig); + return enlarged; +} + +static void stbi__vertical_flip(void *image, int w, int h, int bytes_per_pixel) +{ + int row; + size_t bytes_per_row = (size_t)w * bytes_per_pixel; + stbi_uc temp[2048]; + stbi_uc *bytes = (stbi_uc *)image; + + for (row = 0; row < (h>>1); row++) { + stbi_uc *row0 = bytes + row*bytes_per_row; + stbi_uc *row1 = bytes + (h - row - 1)*bytes_per_row; + // swap row0 with row1 + size_t bytes_left = bytes_per_row; + while (bytes_left) { + size_t bytes_copy = (bytes_left < sizeof(temp)) ? bytes_left : sizeof(temp); + memcpy(temp, row0, bytes_copy); + memcpy(row0, row1, bytes_copy); + memcpy(row1, temp, bytes_copy); + row0 += bytes_copy; + row1 += bytes_copy; + bytes_left -= bytes_copy; + } + } +} + +#ifndef STBI_NO_GIF +static void stbi__vertical_flip_slices(void *image, int w, int h, int z, int bytes_per_pixel) +{ + int slice; + int slice_size = w * h * bytes_per_pixel; + + stbi_uc *bytes = (stbi_uc *)image; + for (slice = 0; slice < z; ++slice) { + stbi__vertical_flip(bytes, w, h, bytes_per_pixel); + bytes += slice_size; + } +} +#endif + +static unsigned char *stbi__load_and_postprocess_8bit(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 8); + + if (result == NULL) + return NULL; + + // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. + STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); + + if (ri.bits_per_channel != 8) { + result = stbi__convert_16_to_8((stbi__uint16 *) result, *x, *y, req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 8; + } + + // @TODO: move stbi__convert_format to here + + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi_uc)); + } + + return (unsigned char *) result; +} + +static stbi__uint16 *stbi__load_and_postprocess_16bit(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + stbi__result_info ri; + void *result = stbi__load_main(s, x, y, comp, req_comp, &ri, 16); + + if (result == NULL) + return NULL; + + // it is the responsibility of the loaders to make sure we get either 8 or 16 bit. + STBI_ASSERT(ri.bits_per_channel == 8 || ri.bits_per_channel == 16); + + if (ri.bits_per_channel != 16) { + result = stbi__convert_8_to_16((stbi_uc *) result, *x, *y, req_comp == 0 ? *comp : req_comp); + ri.bits_per_channel = 16; + } + + // @TODO: move stbi__convert_format16 to here + // @TODO: special case RGB-to-Y (and RGBA-to-YA) for 8-bit-to-16-bit case to keep more precision + + if (stbi__vertically_flip_on_load) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(stbi__uint16)); + } + + return (stbi__uint16 *) result; +} + +#if !defined(STBI_NO_HDR) && !defined(STBI_NO_LINEAR) +static void stbi__float_postprocess(float *result, int *x, int *y, int *comp, int req_comp) +{ + if (stbi__vertically_flip_on_load && result != NULL) { + int channels = req_comp ? req_comp : *comp; + stbi__vertical_flip(result, *x, *y, channels * sizeof(float)); + } +} +#endif + +#ifndef STBI_NO_STDIO + +#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) +STBI_EXTERN __declspec(dllimport) int __stdcall MultiByteToWideChar(unsigned int cp, unsigned long flags, const char *str, int cbmb, wchar_t *widestr, int cchwide); +STBI_EXTERN __declspec(dllimport) int __stdcall WideCharToMultiByte(unsigned int cp, unsigned long flags, const wchar_t *widestr, int cchwide, char *str, int cbmb, const char *defchar, int *used_default); +#endif + +#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) +STBIDEF int stbi_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input) +{ + return WideCharToMultiByte(65001 /* UTF8 */, 0, input, -1, buffer, (int) bufferlen, NULL, NULL); +} +#endif + +static FILE *stbi__fopen(char const *filename, char const *mode) +{ + FILE *f; +#if defined(_WIN32) && defined(STBI_WINDOWS_UTF8) + wchar_t wMode[64]; + wchar_t wFilename[1024]; + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, filename, -1, wFilename, sizeof(wFilename)/sizeof(*wFilename))) + return 0; + + if (0 == MultiByteToWideChar(65001 /* UTF8 */, 0, mode, -1, wMode, sizeof(wMode)/sizeof(*wMode))) + return 0; + +#if defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != _wfopen_s(&f, wFilename, wMode)) + f = 0; +#else + f = _wfopen(wFilename, wMode); +#endif + +#elif defined(_MSC_VER) && _MSC_VER >= 1400 + if (0 != fopen_s(&f, filename, mode)) + f=0; +#else + f = fopen(filename, mode); +#endif + return f; +} + + +STBIDEF stbi_uc *stbi_load(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + unsigned char *result; + if (!f) return stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file(f,x,y,comp,req_comp); + fclose(f); + return result; +} + +STBIDEF stbi_uc *stbi_load_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *result; + stbi__context s; + stbi__start_file(&s,f); + result = stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi__uint16 *stbi_load_from_file_16(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__uint16 *result; + stbi__context s; + stbi__start_file(&s,f); + result = stbi__load_and_postprocess_16bit(&s,x,y,comp,req_comp); + if (result) { + // need to 'unget' all the characters in the IO buffer + fseek(f, - (int) (s.img_buffer_end - s.img_buffer), SEEK_CUR); + } + return result; +} + +STBIDEF stbi_us *stbi_load_16(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + stbi__uint16 *result; + if (!f) return (stbi_us *) stbi__errpuc("can't fopen", "Unable to open file"); + result = stbi_load_from_file_16(f,x,y,comp,req_comp); + fclose(f); + return result; +} + + +#endif //!STBI_NO_STDIO + +STBIDEF stbi_us *stbi_load_16_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *channels_in_file, int desired_channels) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels); +} + +STBIDEF stbi_us *stbi_load_16_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *channels_in_file, int desired_channels) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *)clbk, user); + return stbi__load_and_postprocess_16bit(&s,x,y,channels_in_file,desired_channels); +} + +STBIDEF stbi_uc *stbi_load_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); +} + +STBIDEF stbi_uc *stbi_load_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__load_and_postprocess_8bit(&s,x,y,comp,req_comp); +} + +#ifndef STBI_NO_GIF +STBIDEF stbi_uc *stbi_load_gif_from_memory(stbi_uc const *buffer, int len, int **delays, int *x, int *y, int *z, int *comp, int req_comp) +{ + unsigned char *result; + stbi__context s; + stbi__start_mem(&s,buffer,len); + + result = (unsigned char*) stbi__load_gif_main(&s, delays, x, y, z, comp, req_comp); + if (stbi__vertically_flip_on_load) { + stbi__vertical_flip_slices( result, *x, *y, *z, *comp ); + } + + return result; +} +#endif + +#ifndef STBI_NO_LINEAR +static float *stbi__loadf_main(stbi__context *s, int *x, int *y, int *comp, int req_comp) +{ + unsigned char *data; + #ifndef STBI_NO_HDR + if (stbi__hdr_test(s)) { + stbi__result_info ri; + float *hdr_data = stbi__hdr_load(s,x,y,comp,req_comp, &ri); + if (hdr_data) + stbi__float_postprocess(hdr_data,x,y,comp,req_comp); + return hdr_data; + } + #endif + data = stbi__load_and_postprocess_8bit(s, x, y, comp, req_comp); + if (data) + return stbi__ldr_to_hdr(data, *x, *y, req_comp ? req_comp : *comp); + return stbi__errpf("unknown image type", "Image not of any known type, or corrupt"); +} + +STBIDEF float *stbi_loadf_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} + +STBIDEF float *stbi_loadf_from_callbacks(stbi_io_callbacks const *clbk, void *user, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} + +#ifndef STBI_NO_STDIO +STBIDEF float *stbi_loadf(char const *filename, int *x, int *y, int *comp, int req_comp) +{ + float *result; + FILE *f = stbi__fopen(filename, "rb"); + if (!f) return stbi__errpf("can't fopen", "Unable to open file"); + result = stbi_loadf_from_file(f,x,y,comp,req_comp); + fclose(f); + return result; +} + +STBIDEF float *stbi_loadf_from_file(FILE *f, int *x, int *y, int *comp, int req_comp) +{ + stbi__context s; + stbi__start_file(&s,f); + return stbi__loadf_main(&s,x,y,comp,req_comp); +} +#endif // !STBI_NO_STDIO + +#endif // !STBI_NO_LINEAR + +// these is-hdr-or-not is defined independent of whether STBI_NO_LINEAR is +// defined, for API simplicity; if STBI_NO_LINEAR is defined, it always +// reports false! + +STBIDEF int stbi_is_hdr_from_memory(stbi_uc const *buffer, int len) +{ + #ifndef STBI_NO_HDR + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__hdr_test(&s); + #else + STBI_NOTUSED(buffer); + STBI_NOTUSED(len); + return 0; + #endif +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_is_hdr (char const *filename) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result=0; + if (f) { + result = stbi_is_hdr_from_file(f); + fclose(f); + } + return result; +} + +STBIDEF int stbi_is_hdr_from_file(FILE *f) +{ + #ifndef STBI_NO_HDR + long pos = ftell(f); + int res; + stbi__context s; + stbi__start_file(&s,f); + res = stbi__hdr_test(&s); + fseek(f, pos, SEEK_SET); + return res; + #else + STBI_NOTUSED(f); + return 0; + #endif +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_is_hdr_from_callbacks(stbi_io_callbacks const *clbk, void *user) +{ + #ifndef STBI_NO_HDR + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) clbk, user); + return stbi__hdr_test(&s); + #else + STBI_NOTUSED(clbk); + STBI_NOTUSED(user); + return 0; + #endif +} + +#ifndef STBI_NO_LINEAR +static float stbi__l2h_gamma=2.2f, stbi__l2h_scale=1.0f; + +STBIDEF void stbi_ldr_to_hdr_gamma(float gamma) { stbi__l2h_gamma = gamma; } +STBIDEF void stbi_ldr_to_hdr_scale(float scale) { stbi__l2h_scale = scale; } +#endif + +static float stbi__h2l_gamma_i=1.0f/2.2f, stbi__h2l_scale_i=1.0f; + +STBIDEF void stbi_hdr_to_ldr_gamma(float gamma) { stbi__h2l_gamma_i = 1/gamma; } +STBIDEF void stbi_hdr_to_ldr_scale(float scale) { stbi__h2l_scale_i = 1/scale; } + + +////////////////////////////////////////////////////////////////////////////// +// +// Common code used by all image loaders +// + +enum +{ + STBI__SCAN_load=0, + STBI__SCAN_type, + STBI__SCAN_header +}; + +static void stbi__refill_buffer(stbi__context *s) +{ + int n = (s->io.read)(s->io_user_data,(char*)s->buffer_start,s->buflen); + s->callback_already_read += (int) (s->img_buffer - s->img_buffer_original); + if (n == 0) { + // at end of file, treat same as if from memory, but need to handle case + // where s->img_buffer isn't pointing to safe memory, e.g. 0-byte file + s->read_from_callbacks = 0; + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start+1; + *s->img_buffer = 0; + } else { + s->img_buffer = s->buffer_start; + s->img_buffer_end = s->buffer_start + n; + } +} + +stbi_inline static stbi_uc stbi__get8(stbi__context *s) +{ + if (s->img_buffer < s->img_buffer_end) + return *s->img_buffer++; + if (s->read_from_callbacks) { + stbi__refill_buffer(s); + return *s->img_buffer++; + } + return 0; +} + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_HDR) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +// nothing +#else +stbi_inline static int stbi__at_eof(stbi__context *s) +{ + if (s->io.read) { + if (!(s->io.eof)(s->io_user_data)) return 0; + // if feof() is true, check if buffer = end + // special case: we've only got the special 0 character at the end + if (s->read_from_callbacks == 0) return 1; + } + + return s->img_buffer >= s->img_buffer_end; +} +#endif + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) +// nothing +#else +static void stbi__skip(stbi__context *s, int n) +{ + if (n == 0) return; // already there! + if (n < 0) { + s->img_buffer = s->img_buffer_end; + return; + } + if (s->io.read) { + int blen = (int) (s->img_buffer_end - s->img_buffer); + if (blen < n) { + s->img_buffer = s->img_buffer_end; + (s->io.skip)(s->io_user_data, n - blen); + return; + } + } + s->img_buffer += n; +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_TGA) && defined(STBI_NO_HDR) && defined(STBI_NO_PNM) +// nothing +#else +static int stbi__getn(stbi__context *s, stbi_uc *buffer, int n) +{ + if (s->io.read) { + int blen = (int) (s->img_buffer_end - s->img_buffer); + if (blen < n) { + int res, count; + + memcpy(buffer, s->img_buffer, blen); + + count = (s->io.read)(s->io_user_data, (char*) buffer + blen, n - blen); + res = (count == (n-blen)); + s->img_buffer = s->img_buffer_end; + return res; + } + } + + if (s->img_buffer+n <= s->img_buffer_end) { + memcpy(buffer, s->img_buffer, n); + s->img_buffer += n; + return 1; + } else + return 0; +} +#endif + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +// nothing +#else +static int stbi__get16be(stbi__context *s) +{ + int z = stbi__get8(s); + return (z << 8) + stbi__get8(s); +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) && defined(STBI_NO_PIC) +// nothing +#else +static stbi__uint32 stbi__get32be(stbi__context *s) +{ + stbi__uint32 z = stbi__get16be(s); + return (z << 16) + stbi__get16be(s); +} +#endif + +#if defined(STBI_NO_BMP) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) +// nothing +#else +static int stbi__get16le(stbi__context *s) +{ + int z = stbi__get8(s); + return z + (stbi__get8(s) << 8); +} +#endif + +#ifndef STBI_NO_BMP +static stbi__uint32 stbi__get32le(stbi__context *s) +{ + stbi__uint32 z = stbi__get16le(s); + z += (stbi__uint32)stbi__get16le(s) << 16; + return z; +} +#endif + +#define STBI__BYTECAST(x) ((stbi_uc) ((x) & 255)) // truncate int to byte without warnings + +#if defined(STBI_NO_JPEG) && defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +// nothing +#else +////////////////////////////////////////////////////////////////////////////// +// +// generic converter from built-in img_n to req_comp +// individual types do this automatically as much as possible (e.g. jpeg +// does all cases internally since it needs to colorspace convert anyway, +// and it never has alpha, so very few cases ). png can automatically +// interleave an alpha=255 channel, but falls back to this for other cases +// +// assume data buffer is malloced, so malloc a new one and free that one +// only failure mode is malloc failing + +static stbi_uc stbi__compute_y(int r, int g, int b) +{ + return (stbi_uc) (((r*77) + (g*150) + (29*b)) >> 8); +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_BMP) && defined(STBI_NO_PSD) && defined(STBI_NO_TGA) && defined(STBI_NO_GIF) && defined(STBI_NO_PIC) && defined(STBI_NO_PNM) +// nothing +#else +static unsigned char *stbi__convert_format(unsigned char *data, int img_n, int req_comp, unsigned int x, unsigned int y) +{ + int i,j; + unsigned char *good; + + if (req_comp == img_n) return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (unsigned char *) stbi__malloc_mad3(req_comp, x, y, 0); + if (good == NULL) { + STBI_FREE(data); + return stbi__errpuc("outofmem", "Out of memory"); + } + + for (j=0; j < (int) y; ++j) { + unsigned char *src = data + j * x * img_n ; + unsigned char *dest = good + j * x * req_comp; + + #define STBI__COMBO(a,b) ((a)*8+(b)) + #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1,2) { dest[0]=src[0]; dest[1]=255; } break; + STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=255; } break; + STBI__CASE(2,1) { dest[0]=src[0]; } break; + STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=src[1]; } break; + STBI__CASE(3,4) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2];dest[3]=255; } break; + STBI__CASE(3,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break; + STBI__CASE(3,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); dest[1] = 255; } break; + STBI__CASE(4,1) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); } break; + STBI__CASE(4,2) { dest[0]=stbi__compute_y(src[0],src[1],src[2]); dest[1] = src[3]; } break; + STBI__CASE(4,3) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2]; } break; + default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return stbi__errpuc("unsupported", "Unsupported format conversion"); + } + #undef STBI__CASE + } + + STBI_FREE(data); + return good; +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +// nothing +#else +static stbi__uint16 stbi__compute_y_16(int r, int g, int b) +{ + return (stbi__uint16) (((r*77) + (g*150) + (29*b)) >> 8); +} +#endif + +#if defined(STBI_NO_PNG) && defined(STBI_NO_PSD) +// nothing +#else +static stbi__uint16 *stbi__convert_format16(stbi__uint16 *data, int img_n, int req_comp, unsigned int x, unsigned int y) +{ + int i,j; + stbi__uint16 *good; + + if (req_comp == img_n) return data; + STBI_ASSERT(req_comp >= 1 && req_comp <= 4); + + good = (stbi__uint16 *) stbi__malloc(req_comp * x * y * 2); + if (good == NULL) { + STBI_FREE(data); + return (stbi__uint16 *) stbi__errpuc("outofmem", "Out of memory"); + } + + for (j=0; j < (int) y; ++j) { + stbi__uint16 *src = data + j * x * img_n ; + stbi__uint16 *dest = good + j * x * req_comp; + + #define STBI__COMBO(a,b) ((a)*8+(b)) + #define STBI__CASE(a,b) case STBI__COMBO(a,b): for(i=x-1; i >= 0; --i, src += a, dest += b) + // convert source image with img_n components to one with req_comp components; + // avoid switch per pixel, so use switch per scanline and massive macros + switch (STBI__COMBO(img_n, req_comp)) { + STBI__CASE(1,2) { dest[0]=src[0]; dest[1]=0xffff; } break; + STBI__CASE(1,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(1,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=0xffff; } break; + STBI__CASE(2,1) { dest[0]=src[0]; } break; + STBI__CASE(2,3) { dest[0]=dest[1]=dest[2]=src[0]; } break; + STBI__CASE(2,4) { dest[0]=dest[1]=dest[2]=src[0]; dest[3]=src[1]; } break; + STBI__CASE(3,4) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2];dest[3]=0xffff; } break; + STBI__CASE(3,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } break; + STBI__CASE(3,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); dest[1] = 0xffff; } break; + STBI__CASE(4,1) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); } break; + STBI__CASE(4,2) { dest[0]=stbi__compute_y_16(src[0],src[1],src[2]); dest[1] = src[3]; } break; + STBI__CASE(4,3) { dest[0]=src[0];dest[1]=src[1];dest[2]=src[2]; } break; + default: STBI_ASSERT(0); STBI_FREE(data); STBI_FREE(good); return (stbi__uint16*) stbi__errpuc("unsupported", "Unsupported format conversion"); + } + #undef STBI__CASE + } + + STBI_FREE(data); + return good; +} +#endif + +#ifndef STBI_NO_LINEAR +static float *stbi__ldr_to_hdr(stbi_uc *data, int x, int y, int comp) +{ + int i,k,n; + float *output; + if (!data) return NULL; + output = (float *) stbi__malloc_mad4(x, y, comp, sizeof(float), 0); + if (output == NULL) { STBI_FREE(data); return stbi__errpf("outofmem", "Out of memory"); } + // compute number of non-alpha components + if (comp & 1) n = comp; else n = comp-1; + for (i=0; i < x*y; ++i) { + for (k=0; k < n; ++k) { + output[i*comp + k] = (float) (pow(data[i*comp+k]/255.0f, stbi__l2h_gamma) * stbi__l2h_scale); + } + } + if (n < comp) { + for (i=0; i < x*y; ++i) { + output[i*comp + n] = data[i*comp + n]/255.0f; + } + } + STBI_FREE(data); + return output; +} +#endif + +#ifndef STBI_NO_HDR +#define stbi__float2int(x) ((int) (x)) +static stbi_uc *stbi__hdr_to_ldr(float *data, int x, int y, int comp) +{ + int i,k,n; + stbi_uc *output; + if (!data) return NULL; + output = (stbi_uc *) stbi__malloc_mad3(x, y, comp, 0); + if (output == NULL) { STBI_FREE(data); return stbi__errpuc("outofmem", "Out of memory"); } + // compute number of non-alpha components + if (comp & 1) n = comp; else n = comp-1; + for (i=0; i < x*y; ++i) { + for (k=0; k < n; ++k) { + float z = (float) pow(data[i*comp+k]*stbi__h2l_scale_i, stbi__h2l_gamma_i) * 255 + 0.5f; + if (z < 0) z = 0; + if (z > 255) z = 255; + output[i*comp + k] = (stbi_uc) stbi__float2int(z); + } + if (k < comp) { + float z = data[i*comp+k] * 255 + 0.5f; + if (z < 0) z = 0; + if (z > 255) z = 255; + output[i*comp + k] = (stbi_uc) stbi__float2int(z); + } + } + STBI_FREE(data); + return output; +} +#endif + +////////////////////////////////////////////////////////////////////////////// +// +// "baseline" JPEG/JFIF decoder +// +// simple implementation +// - doesn't support delayed output of y-dimension +// - simple interface (only one output format: 8-bit interleaved RGB) +// - doesn't try to recover corrupt jpegs +// - doesn't allow partial loading, loading multiple at once +// - still fast on x86 (copying globals into locals doesn't help x86) +// - allocates lots of intermediate memory (full size of all components) +// - non-interleaved case requires this anyway +// - allows good upsampling (see next) +// high-quality +// - upsampled channels are bilinearly interpolated, even across blocks +// - quality integer IDCT derived from IJG's 'slow' +// performance +// - fast huffman; reasonable integer IDCT +// - some SIMD kernels for common paths on targets with SSE2/NEON +// - uses a lot of intermediate memory, could cache poorly + +#ifndef STBI_NO_JPEG + +// huffman decoding acceleration +#define FAST_BITS 9 // larger handles more cases; smaller stomps less cache + +typedef struct +{ + stbi_uc fast[1 << FAST_BITS]; + // weirdly, repacking this into AoS is a 10% speed loss, instead of a win + stbi__uint16 code[256]; + stbi_uc values[256]; + stbi_uc size[257]; + unsigned int maxcode[18]; + int delta[17]; // old 'firstsymbol' - old 'firstcode' +} stbi__huffman; + +typedef struct +{ + stbi__context *s; + stbi__huffman huff_dc[4]; + stbi__huffman huff_ac[4]; + stbi__uint16 dequant[4][64]; + stbi__int16 fast_ac[4][1 << FAST_BITS]; + +// sizes for components, interleaved MCUs + int img_h_max, img_v_max; + int img_mcu_x, img_mcu_y; + int img_mcu_w, img_mcu_h; + +// definition of jpeg image component + struct + { + int id; + int h,v; + int tq; + int hd,ha; + int dc_pred; + + int x,y,w2,h2; + stbi_uc *data; + void *raw_data, *raw_coeff; + stbi_uc *linebuf; + short *coeff; // progressive only + int coeff_w, coeff_h; // number of 8x8 coefficient blocks + } img_comp[4]; + + stbi__uint32 code_buffer; // jpeg entropy-coded buffer + int code_bits; // number of valid bits + unsigned char marker; // marker seen while filling entropy buffer + int nomore; // flag if we saw a marker so must stop + + int progressive; + int spec_start; + int spec_end; + int succ_high; + int succ_low; + int eob_run; + int jfif; + int app14_color_transform; // Adobe APP14 tag + int rgb; + + int scan_n, order[4]; + int restart_interval, todo; + +// kernels + void (*idct_block_kernel)(stbi_uc *out, int out_stride, short data[64]); + void (*YCbCr_to_RGB_kernel)(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step); + stbi_uc *(*resample_row_hv_2_kernel)(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs); +} stbi__jpeg; + +static int stbi__build_huffman(stbi__huffman *h, int *count) +{ + int i,j,k=0; + unsigned int code; + // build size list for each symbol (from JPEG spec) + for (i=0; i < 16; ++i) { + for (j=0; j < count[i]; ++j) { + h->size[k++] = (stbi_uc) (i+1); + if(k >= 257) return stbi__err("bad size list","Corrupt JPEG"); + } + } + h->size[k] = 0; + + // compute actual symbols (from jpeg spec) + code = 0; + k = 0; + for(j=1; j <= 16; ++j) { + // compute delta to add to code to compute symbol id + h->delta[j] = k - code; + if (h->size[k] == j) { + while (h->size[k] == j) + h->code[k++] = (stbi__uint16) (code++); + if (code-1 >= (1u << j)) return stbi__err("bad code lengths","Corrupt JPEG"); + } + // compute largest code + 1 for this size, preshifted as needed later + h->maxcode[j] = code << (16-j); + code <<= 1; + } + h->maxcode[j] = 0xffffffff; + + // build non-spec acceleration table; 255 is flag for not-accelerated + memset(h->fast, 255, 1 << FAST_BITS); + for (i=0; i < k; ++i) { + int s = h->size[i]; + if (s <= FAST_BITS) { + int c = h->code[i] << (FAST_BITS-s); + int m = 1 << (FAST_BITS-s); + for (j=0; j < m; ++j) { + h->fast[c+j] = (stbi_uc) i; + } + } + } + return 1; +} + +// build a table that decodes both magnitude and value of small ACs in +// one go. +static void stbi__build_fast_ac(stbi__int16 *fast_ac, stbi__huffman *h) +{ + int i; + for (i=0; i < (1 << FAST_BITS); ++i) { + stbi_uc fast = h->fast[i]; + fast_ac[i] = 0; + if (fast < 255) { + int rs = h->values[fast]; + int run = (rs >> 4) & 15; + int magbits = rs & 15; + int len = h->size[fast]; + + if (magbits && len + magbits <= FAST_BITS) { + // magnitude code followed by receive_extend code + int k = ((i << len) & ((1 << FAST_BITS) - 1)) >> (FAST_BITS - magbits); + int m = 1 << (magbits - 1); + if (k < m) k += (~0U << magbits) + 1; + // if the result is small enough, we can fit it in fast_ac table + if (k >= -128 && k <= 127) + fast_ac[i] = (stbi__int16) ((k * 256) + (run * 16) + (len + magbits)); + } + } + } +} + +static void stbi__grow_buffer_unsafe(stbi__jpeg *j) +{ + do { + unsigned int b = j->nomore ? 0 : stbi__get8(j->s); + if (b == 0xff) { + int c = stbi__get8(j->s); + while (c == 0xff) c = stbi__get8(j->s); // consume fill bytes + if (c != 0) { + j->marker = (unsigned char) c; + j->nomore = 1; + return; + } + } + j->code_buffer |= b << (24 - j->code_bits); + j->code_bits += 8; + } while (j->code_bits <= 24); +} + +// (1 << n) - 1 +static const stbi__uint32 stbi__bmask[17]={0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535}; + +// decode a jpeg huffman value from the bitstream +stbi_inline static int stbi__jpeg_huff_decode(stbi__jpeg *j, stbi__huffman *h) +{ + unsigned int temp; + int c,k; + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + // look at the top FAST_BITS and determine what symbol ID it is, + // if the code is <= FAST_BITS + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + k = h->fast[c]; + if (k < 255) { + int s = h->size[k]; + if (s > j->code_bits) + return -1; + j->code_buffer <<= s; + j->code_bits -= s; + return h->values[k]; + } + + // naive test is to shift the code_buffer down so k bits are + // valid, then test against maxcode. To speed this up, we've + // preshifted maxcode left so that it has (16-k) 0s at the + // end; in other words, regardless of the number of bits, it + // wants to be compared against something shifted to have 16; + // that way we don't need to shift inside the loop. + temp = j->code_buffer >> 16; + for (k=FAST_BITS+1 ; ; ++k) + if (temp < h->maxcode[k]) + break; + if (k == 17) { + // error! code not found + j->code_bits -= 16; + return -1; + } + + if (k > j->code_bits) + return -1; + + // convert the huffman code to the symbol id + c = ((j->code_buffer >> (32 - k)) & stbi__bmask[k]) + h->delta[k]; + if(c < 0 || c >= 256) // symbol id out of bounds! + return -1; + STBI_ASSERT((((j->code_buffer) >> (32 - h->size[c])) & stbi__bmask[h->size[c]]) == h->code[c]); + + // convert the id to a symbol + j->code_bits -= k; + j->code_buffer <<= k; + return h->values[c]; +} + +// bias[n] = (-1<code_bits < n) stbi__grow_buffer_unsafe(j); + if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing + + sgn = j->code_buffer >> 31; // sign bit always in MSB; 0 if MSB clear (positive), 1 if MSB set (negative) + k = stbi_lrot(j->code_buffer, n); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k + (stbi__jbias[n] & (sgn - 1)); +} + +// get some unsigned bits +stbi_inline static int stbi__jpeg_get_bits(stbi__jpeg *j, int n) +{ + unsigned int k; + if (j->code_bits < n) stbi__grow_buffer_unsafe(j); + if (j->code_bits < n) return 0; // ran out of bits from stream, return 0s intead of continuing + k = stbi_lrot(j->code_buffer, n); + j->code_buffer = k & ~stbi__bmask[n]; + k &= stbi__bmask[n]; + j->code_bits -= n; + return k; +} + +stbi_inline static int stbi__jpeg_get_bit(stbi__jpeg *j) +{ + unsigned int k; + if (j->code_bits < 1) stbi__grow_buffer_unsafe(j); + if (j->code_bits < 1) return 0; // ran out of bits from stream, return 0s intead of continuing + k = j->code_buffer; + j->code_buffer <<= 1; + --j->code_bits; + return k & 0x80000000; +} + +// given a value that's at position X in the zigzag stream, +// where does it appear in the 8x8 matrix coded as row-major? +static const stbi_uc stbi__jpeg_dezigzag[64+15] = +{ + 0, 1, 8, 16, 9, 2, 3, 10, + 17, 24, 32, 25, 18, 11, 4, 5, + 12, 19, 26, 33, 40, 48, 41, 34, + 27, 20, 13, 6, 7, 14, 21, 28, + 35, 42, 49, 56, 57, 50, 43, 36, + 29, 22, 15, 23, 30, 37, 44, 51, + 58, 59, 52, 45, 38, 31, 39, 46, + 53, 60, 61, 54, 47, 55, 62, 63, + // let corrupt input sample past end + 63, 63, 63, 63, 63, 63, 63, 63, + 63, 63, 63, 63, 63, 63, 63 +}; + +// decode one 64-entry block-- +static int stbi__jpeg_decode_block(stbi__jpeg *j, short data[64], stbi__huffman *hdc, stbi__huffman *hac, stbi__int16 *fac, int b, stbi__uint16 *dequant) +{ + int diff,dc,k; + int t; + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + t = stbi__jpeg_huff_decode(j, hdc); + if (t < 0 || t > 15) return stbi__err("bad huffman code","Corrupt JPEG"); + + // 0 all the ac values now so we can do it 32-bits at a time + memset(data,0,64*sizeof(data[0])); + + diff = t ? stbi__extend_receive(j, t) : 0; + if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta","Corrupt JPEG"); + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + if (!stbi__mul2shorts_valid(dc, dequant[0])) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + data[0] = (short) (dc * dequant[0]); + + // decode AC components, see JPEG spec + k = 1; + do { + unsigned int zig; + int c,r,s; + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); + j->code_buffer <<= s; + j->code_bits -= s; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) ((r >> 8) * dequant[zig]); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (rs != 0xf0) break; // end block + k += 16; + } else { + k += r; + // decode into unzigzag'd location + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) (stbi__extend_receive(j,s) * dequant[zig]); + } + } + } while (k < 64); + return 1; +} + +static int stbi__jpeg_decode_block_prog_dc(stbi__jpeg *j, short data[64], stbi__huffman *hdc, int b) +{ + int diff,dc; + int t; + if (j->spec_end != 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + + if (j->succ_high == 0) { + // first scan for DC coefficient, must be first + memset(data,0,64*sizeof(data[0])); // 0 all the ac values now + t = stbi__jpeg_huff_decode(j, hdc); + if (t < 0 || t > 15) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + diff = t ? stbi__extend_receive(j, t) : 0; + + if (!stbi__addints_valid(j->img_comp[b].dc_pred, diff)) return stbi__err("bad delta", "Corrupt JPEG"); + dc = j->img_comp[b].dc_pred + diff; + j->img_comp[b].dc_pred = dc; + if (!stbi__mul2shorts_valid(dc, 1 << j->succ_low)) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + data[0] = (short) (dc * (1 << j->succ_low)); + } else { + // refinement scan for DC coefficient + if (stbi__jpeg_get_bit(j)) + data[0] += (short) (1 << j->succ_low); + } + return 1; +} + +// @OPTIMIZE: store non-zigzagged during the decode passes, +// and only de-zigzag when dequantizing +static int stbi__jpeg_decode_block_prog_ac(stbi__jpeg *j, short data[64], stbi__huffman *hac, stbi__int16 *fac) +{ + int k; + if (j->spec_start == 0) return stbi__err("can't merge dc and ac", "Corrupt JPEG"); + + if (j->succ_high == 0) { + int shift = j->succ_low; + + if (j->eob_run) { + --j->eob_run; + return 1; + } + + k = j->spec_start; + do { + unsigned int zig; + int c,r,s; + if (j->code_bits < 16) stbi__grow_buffer_unsafe(j); + c = (j->code_buffer >> (32 - FAST_BITS)) & ((1 << FAST_BITS)-1); + r = fac[c]; + if (r) { // fast-AC path + k += (r >> 4) & 15; // run + s = r & 15; // combined length + if (s > j->code_bits) return stbi__err("bad huffman code", "Combined length longer than code bits available"); + j->code_buffer <<= s; + j->code_bits -= s; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) ((r >> 8) * (1 << shift)); + } else { + int rs = stbi__jpeg_huff_decode(j, hac); + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r); + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + --j->eob_run; + break; + } + k += 16; + } else { + k += r; + zig = stbi__jpeg_dezigzag[k++]; + data[zig] = (short) (stbi__extend_receive(j,s) * (1 << shift)); + } + } + } while (k <= j->spec_end); + } else { + // refinement scan for these AC coefficients + + short bit = (short) (1 << j->succ_low); + + if (j->eob_run) { + --j->eob_run; + for (k = j->spec_start; k <= j->spec_end; ++k) { + short *p = &data[stbi__jpeg_dezigzag[k]]; + if (*p != 0) + if (stbi__jpeg_get_bit(j)) + if ((*p & bit)==0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } + } else { + k = j->spec_start; + do { + int r,s; + int rs = stbi__jpeg_huff_decode(j, hac); // @OPTIMIZE see if we can use the fast path here, advance-by-r is so slow, eh + if (rs < 0) return stbi__err("bad huffman code","Corrupt JPEG"); + s = rs & 15; + r = rs >> 4; + if (s == 0) { + if (r < 15) { + j->eob_run = (1 << r) - 1; + if (r) + j->eob_run += stbi__jpeg_get_bits(j, r); + r = 64; // force end of block + } else { + // r=15 s=0 should write 16 0s, so we just do + // a run of 15 0s and then write s (which is 0), + // so we don't have to do anything special here + } + } else { + if (s != 1) return stbi__err("bad huffman code", "Corrupt JPEG"); + // sign bit + if (stbi__jpeg_get_bit(j)) + s = bit; + else + s = -bit; + } + + // advance by r + while (k <= j->spec_end) { + short *p = &data[stbi__jpeg_dezigzag[k++]]; + if (*p != 0) { + if (stbi__jpeg_get_bit(j)) + if ((*p & bit)==0) { + if (*p > 0) + *p += bit; + else + *p -= bit; + } + } else { + if (r == 0) { + *p = (short) s; + break; + } + --r; + } + } + } while (k <= j->spec_end); + } + } + return 1; +} + +// take a -128..127 value and stbi__clamp it and convert to 0..255 +stbi_inline static stbi_uc stbi__clamp(int x) +{ + // trick to use a single test to catch both cases + if ((unsigned int) x > 255) { + if (x < 0) return 0; + if (x > 255) return 255; + } + return (stbi_uc) x; +} + +#define stbi__f2f(x) ((int) (((x) * 4096 + 0.5))) +#define stbi__fsh(x) ((x) * 4096) + +// derived from jidctint -- DCT_ISLOW +#define STBI__IDCT_1D(s0,s1,s2,s3,s4,s5,s6,s7) \ + int t0,t1,t2,t3,p1,p2,p3,p4,p5,x0,x1,x2,x3; \ + p2 = s2; \ + p3 = s6; \ + p1 = (p2+p3) * stbi__f2f(0.5411961f); \ + t2 = p1 + p3*stbi__f2f(-1.847759065f); \ + t3 = p1 + p2*stbi__f2f( 0.765366865f); \ + p2 = s0; \ + p3 = s4; \ + t0 = stbi__fsh(p2+p3); \ + t1 = stbi__fsh(p2-p3); \ + x0 = t0+t3; \ + x3 = t0-t3; \ + x1 = t1+t2; \ + x2 = t1-t2; \ + t0 = s7; \ + t1 = s5; \ + t2 = s3; \ + t3 = s1; \ + p3 = t0+t2; \ + p4 = t1+t3; \ + p1 = t0+t3; \ + p2 = t1+t2; \ + p5 = (p3+p4)*stbi__f2f( 1.175875602f); \ + t0 = t0*stbi__f2f( 0.298631336f); \ + t1 = t1*stbi__f2f( 2.053119869f); \ + t2 = t2*stbi__f2f( 3.072711026f); \ + t3 = t3*stbi__f2f( 1.501321110f); \ + p1 = p5 + p1*stbi__f2f(-0.899976223f); \ + p2 = p5 + p2*stbi__f2f(-2.562915447f); \ + p3 = p3*stbi__f2f(-1.961570560f); \ + p4 = p4*stbi__f2f(-0.390180644f); \ + t3 += p1+p4; \ + t2 += p2+p3; \ + t1 += p2+p4; \ + t0 += p1+p3; + +static void stbi__idct_block(stbi_uc *out, int out_stride, short data[64]) +{ + int i,val[64],*v=val; + stbi_uc *o; + short *d = data; + + // columns + for (i=0; i < 8; ++i,++d, ++v) { + // if all zeroes, shortcut -- this avoids dequantizing 0s and IDCTing + if (d[ 8]==0 && d[16]==0 && d[24]==0 && d[32]==0 + && d[40]==0 && d[48]==0 && d[56]==0) { + // no shortcut 0 seconds + // (1|2|3|4|5|6|7)==0 0 seconds + // all separate -0.047 seconds + // 1 && 2|3 && 4|5 && 6|7: -0.047 seconds + int dcterm = d[0]*4; + v[0] = v[8] = v[16] = v[24] = v[32] = v[40] = v[48] = v[56] = dcterm; + } else { + STBI__IDCT_1D(d[ 0],d[ 8],d[16],d[24],d[32],d[40],d[48],d[56]) + // constants scaled things up by 1<<12; let's bring them back + // down, but keep 2 extra bits of precision + x0 += 512; x1 += 512; x2 += 512; x3 += 512; + v[ 0] = (x0+t3) >> 10; + v[56] = (x0-t3) >> 10; + v[ 8] = (x1+t2) >> 10; + v[48] = (x1-t2) >> 10; + v[16] = (x2+t1) >> 10; + v[40] = (x2-t1) >> 10; + v[24] = (x3+t0) >> 10; + v[32] = (x3-t0) >> 10; + } + } + + for (i=0, v=val, o=out; i < 8; ++i,v+=8,o+=out_stride) { + // no fast case since the first 1D IDCT spread components out + STBI__IDCT_1D(v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7]) + // constants scaled things up by 1<<12, plus we had 1<<2 from first + // loop, plus horizontal and vertical each scale by sqrt(8) so together + // we've got an extra 1<<3, so 1<<17 total we need to remove. + // so we want to round that, which means adding 0.5 * 1<<17, + // aka 65536. Also, we'll end up with -128 to 127 that we want + // to encode as 0..255 by adding 128, so we'll add that before the shift + x0 += 65536 + (128<<17); + x1 += 65536 + (128<<17); + x2 += 65536 + (128<<17); + x3 += 65536 + (128<<17); + // tried computing the shifts into temps, or'ing the temps to see + // if any were out of range, but that was slower + o[0] = stbi__clamp((x0+t3) >> 17); + o[7] = stbi__clamp((x0-t3) >> 17); + o[1] = stbi__clamp((x1+t2) >> 17); + o[6] = stbi__clamp((x1-t2) >> 17); + o[2] = stbi__clamp((x2+t1) >> 17); + o[5] = stbi__clamp((x2-t1) >> 17); + o[3] = stbi__clamp((x3+t0) >> 17); + o[4] = stbi__clamp((x3-t0) >> 17); + } +} + +#ifdef STBI_SSE2 +// sse2 integer IDCT. not the fastest possible implementation but it +// produces bit-identical results to the generic C version so it's +// fully "transparent". +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + // This is constructed to match our regular (generic) integer IDCT exactly. + __m128i row0, row1, row2, row3, row4, row5, row6, row7; + __m128i tmp; + + // dot product constant: even elems=x, odd elems=y + #define dct_const(x,y) _mm_setr_epi16((x),(y),(x),(y),(x),(y),(x),(y)) + + // out(0) = c0[even]*x + c0[odd]*y (c0, x, y 16-bit, out 32-bit) + // out(1) = c1[even]*x + c1[odd]*y + #define dct_rot(out0,out1, x,y,c0,c1) \ + __m128i c0##lo = _mm_unpacklo_epi16((x),(y)); \ + __m128i c0##hi = _mm_unpackhi_epi16((x),(y)); \ + __m128i out0##_l = _mm_madd_epi16(c0##lo, c0); \ + __m128i out0##_h = _mm_madd_epi16(c0##hi, c0); \ + __m128i out1##_l = _mm_madd_epi16(c0##lo, c1); \ + __m128i out1##_h = _mm_madd_epi16(c0##hi, c1) + + // out = in << 12 (in 16-bit, out 32-bit) + #define dct_widen(out, in) \ + __m128i out##_l = _mm_srai_epi32(_mm_unpacklo_epi16(_mm_setzero_si128(), (in)), 4); \ + __m128i out##_h = _mm_srai_epi32(_mm_unpackhi_epi16(_mm_setzero_si128(), (in)), 4) + + // wide add + #define dct_wadd(out, a, b) \ + __m128i out##_l = _mm_add_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_add_epi32(a##_h, b##_h) + + // wide sub + #define dct_wsub(out, a, b) \ + __m128i out##_l = _mm_sub_epi32(a##_l, b##_l); \ + __m128i out##_h = _mm_sub_epi32(a##_h, b##_h) + + // butterfly a/b, add bias, then shift by "s" and pack + #define dct_bfly32o(out0, out1, a,b,bias,s) \ + { \ + __m128i abiased_l = _mm_add_epi32(a##_l, bias); \ + __m128i abiased_h = _mm_add_epi32(a##_h, bias); \ + dct_wadd(sum, abiased, b); \ + dct_wsub(dif, abiased, b); \ + out0 = _mm_packs_epi32(_mm_srai_epi32(sum_l, s), _mm_srai_epi32(sum_h, s)); \ + out1 = _mm_packs_epi32(_mm_srai_epi32(dif_l, s), _mm_srai_epi32(dif_h, s)); \ + } + + // 8-bit interleave step (for transposes) + #define dct_interleave8(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi8(a, b); \ + b = _mm_unpackhi_epi8(tmp, b) + + // 16-bit interleave step (for transposes) + #define dct_interleave16(a, b) \ + tmp = a; \ + a = _mm_unpacklo_epi16(a, b); \ + b = _mm_unpackhi_epi16(tmp, b) + + #define dct_pass(bias,shift) \ + { \ + /* even part */ \ + dct_rot(t2e,t3e, row2,row6, rot0_0,rot0_1); \ + __m128i sum04 = _mm_add_epi16(row0, row4); \ + __m128i dif04 = _mm_sub_epi16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + dct_rot(y0o,y2o, row7,row3, rot2_0,rot2_1); \ + dct_rot(y1o,y3o, row5,row1, rot3_0,rot3_1); \ + __m128i sum17 = _mm_add_epi16(row1, row7); \ + __m128i sum35 = _mm_add_epi16(row3, row5); \ + dct_rot(y4o,y5o, sum17,sum35, rot1_0,rot1_1); \ + dct_wadd(x4, y0o, y4o); \ + dct_wadd(x5, y1o, y5o); \ + dct_wadd(x6, y2o, y5o); \ + dct_wadd(x7, y3o, y4o); \ + dct_bfly32o(row0,row7, x0,x7,bias,shift); \ + dct_bfly32o(row1,row6, x1,x6,bias,shift); \ + dct_bfly32o(row2,row5, x2,x5,bias,shift); \ + dct_bfly32o(row3,row4, x3,x4,bias,shift); \ + } + + __m128i rot0_0 = dct_const(stbi__f2f(0.5411961f), stbi__f2f(0.5411961f) + stbi__f2f(-1.847759065f)); + __m128i rot0_1 = dct_const(stbi__f2f(0.5411961f) + stbi__f2f( 0.765366865f), stbi__f2f(0.5411961f)); + __m128i rot1_0 = dct_const(stbi__f2f(1.175875602f) + stbi__f2f(-0.899976223f), stbi__f2f(1.175875602f)); + __m128i rot1_1 = dct_const(stbi__f2f(1.175875602f), stbi__f2f(1.175875602f) + stbi__f2f(-2.562915447f)); + __m128i rot2_0 = dct_const(stbi__f2f(-1.961570560f) + stbi__f2f( 0.298631336f), stbi__f2f(-1.961570560f)); + __m128i rot2_1 = dct_const(stbi__f2f(-1.961570560f), stbi__f2f(-1.961570560f) + stbi__f2f( 3.072711026f)); + __m128i rot3_0 = dct_const(stbi__f2f(-0.390180644f) + stbi__f2f( 2.053119869f), stbi__f2f(-0.390180644f)); + __m128i rot3_1 = dct_const(stbi__f2f(-0.390180644f), stbi__f2f(-0.390180644f) + stbi__f2f( 1.501321110f)); + + // rounding biases in column/row passes, see stbi__idct_block for explanation. + __m128i bias_0 = _mm_set1_epi32(512); + __m128i bias_1 = _mm_set1_epi32(65536 + (128<<17)); + + // load + row0 = _mm_load_si128((const __m128i *) (data + 0*8)); + row1 = _mm_load_si128((const __m128i *) (data + 1*8)); + row2 = _mm_load_si128((const __m128i *) (data + 2*8)); + row3 = _mm_load_si128((const __m128i *) (data + 3*8)); + row4 = _mm_load_si128((const __m128i *) (data + 4*8)); + row5 = _mm_load_si128((const __m128i *) (data + 5*8)); + row6 = _mm_load_si128((const __m128i *) (data + 6*8)); + row7 = _mm_load_si128((const __m128i *) (data + 7*8)); + + // column pass + dct_pass(bias_0, 10); + + { + // 16bit 8x8 transpose pass 1 + dct_interleave16(row0, row4); + dct_interleave16(row1, row5); + dct_interleave16(row2, row6); + dct_interleave16(row3, row7); + + // transpose pass 2 + dct_interleave16(row0, row2); + dct_interleave16(row1, row3); + dct_interleave16(row4, row6); + dct_interleave16(row5, row7); + + // transpose pass 3 + dct_interleave16(row0, row1); + dct_interleave16(row2, row3); + dct_interleave16(row4, row5); + dct_interleave16(row6, row7); + } + + // row pass + dct_pass(bias_1, 17); + + { + // pack + __m128i p0 = _mm_packus_epi16(row0, row1); // a0a1a2a3...a7b0b1b2b3...b7 + __m128i p1 = _mm_packus_epi16(row2, row3); + __m128i p2 = _mm_packus_epi16(row4, row5); + __m128i p3 = _mm_packus_epi16(row6, row7); + + // 8bit 8x8 transpose pass 1 + dct_interleave8(p0, p2); // a0e0a1e1... + dct_interleave8(p1, p3); // c0g0c1g1... + + // transpose pass 2 + dct_interleave8(p0, p1); // a0c0e0g0... + dct_interleave8(p2, p3); // b0d0f0h0... + + // transpose pass 3 + dct_interleave8(p0, p2); // a0b0c0d0... + dct_interleave8(p1, p3); // a4b4c4d4... + + // store + _mm_storel_epi64((__m128i *) out, p0); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p0, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p2); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p2, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p1); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p1, 0x4e)); out += out_stride; + _mm_storel_epi64((__m128i *) out, p3); out += out_stride; + _mm_storel_epi64((__m128i *) out, _mm_shuffle_epi32(p3, 0x4e)); + } + +#undef dct_const +#undef dct_rot +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_interleave8 +#undef dct_interleave16 +#undef dct_pass +} + +#endif // STBI_SSE2 + +#ifdef STBI_NEON + +// NEON integer IDCT. should produce bit-identical +// results to the generic C version. +static void stbi__idct_simd(stbi_uc *out, int out_stride, short data[64]) +{ + int16x8_t row0, row1, row2, row3, row4, row5, row6, row7; + + int16x4_t rot0_0 = vdup_n_s16(stbi__f2f(0.5411961f)); + int16x4_t rot0_1 = vdup_n_s16(stbi__f2f(-1.847759065f)); + int16x4_t rot0_2 = vdup_n_s16(stbi__f2f( 0.765366865f)); + int16x4_t rot1_0 = vdup_n_s16(stbi__f2f( 1.175875602f)); + int16x4_t rot1_1 = vdup_n_s16(stbi__f2f(-0.899976223f)); + int16x4_t rot1_2 = vdup_n_s16(stbi__f2f(-2.562915447f)); + int16x4_t rot2_0 = vdup_n_s16(stbi__f2f(-1.961570560f)); + int16x4_t rot2_1 = vdup_n_s16(stbi__f2f(-0.390180644f)); + int16x4_t rot3_0 = vdup_n_s16(stbi__f2f( 0.298631336f)); + int16x4_t rot3_1 = vdup_n_s16(stbi__f2f( 2.053119869f)); + int16x4_t rot3_2 = vdup_n_s16(stbi__f2f( 3.072711026f)); + int16x4_t rot3_3 = vdup_n_s16(stbi__f2f( 1.501321110f)); + +#define dct_long_mul(out, inq, coeff) \ + int32x4_t out##_l = vmull_s16(vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmull_s16(vget_high_s16(inq), coeff) + +#define dct_long_mac(out, acc, inq, coeff) \ + int32x4_t out##_l = vmlal_s16(acc##_l, vget_low_s16(inq), coeff); \ + int32x4_t out##_h = vmlal_s16(acc##_h, vget_high_s16(inq), coeff) + +#define dct_widen(out, inq) \ + int32x4_t out##_l = vshll_n_s16(vget_low_s16(inq), 12); \ + int32x4_t out##_h = vshll_n_s16(vget_high_s16(inq), 12) + +// wide add +#define dct_wadd(out, a, b) \ + int32x4_t out##_l = vaddq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vaddq_s32(a##_h, b##_h) + +// wide sub +#define dct_wsub(out, a, b) \ + int32x4_t out##_l = vsubq_s32(a##_l, b##_l); \ + int32x4_t out##_h = vsubq_s32(a##_h, b##_h) + +// butterfly a/b, then shift using "shiftop" by "s" and pack +#define dct_bfly32o(out0,out1, a,b,shiftop,s) \ + { \ + dct_wadd(sum, a, b); \ + dct_wsub(dif, a, b); \ + out0 = vcombine_s16(shiftop(sum_l, s), shiftop(sum_h, s)); \ + out1 = vcombine_s16(shiftop(dif_l, s), shiftop(dif_h, s)); \ + } + +#define dct_pass(shiftop, shift) \ + { \ + /* even part */ \ + int16x8_t sum26 = vaddq_s16(row2, row6); \ + dct_long_mul(p1e, sum26, rot0_0); \ + dct_long_mac(t2e, p1e, row6, rot0_1); \ + dct_long_mac(t3e, p1e, row2, rot0_2); \ + int16x8_t sum04 = vaddq_s16(row0, row4); \ + int16x8_t dif04 = vsubq_s16(row0, row4); \ + dct_widen(t0e, sum04); \ + dct_widen(t1e, dif04); \ + dct_wadd(x0, t0e, t3e); \ + dct_wsub(x3, t0e, t3e); \ + dct_wadd(x1, t1e, t2e); \ + dct_wsub(x2, t1e, t2e); \ + /* odd part */ \ + int16x8_t sum15 = vaddq_s16(row1, row5); \ + int16x8_t sum17 = vaddq_s16(row1, row7); \ + int16x8_t sum35 = vaddq_s16(row3, row5); \ + int16x8_t sum37 = vaddq_s16(row3, row7); \ + int16x8_t sumodd = vaddq_s16(sum17, sum35); \ + dct_long_mul(p5o, sumodd, rot1_0); \ + dct_long_mac(p1o, p5o, sum17, rot1_1); \ + dct_long_mac(p2o, p5o, sum35, rot1_2); \ + dct_long_mul(p3o, sum37, rot2_0); \ + dct_long_mul(p4o, sum15, rot2_1); \ + dct_wadd(sump13o, p1o, p3o); \ + dct_wadd(sump24o, p2o, p4o); \ + dct_wadd(sump23o, p2o, p3o); \ + dct_wadd(sump14o, p1o, p4o); \ + dct_long_mac(x4, sump13o, row7, rot3_0); \ + dct_long_mac(x5, sump24o, row5, rot3_1); \ + dct_long_mac(x6, sump23o, row3, rot3_2); \ + dct_long_mac(x7, sump14o, row1, rot3_3); \ + dct_bfly32o(row0,row7, x0,x7,shiftop,shift); \ + dct_bfly32o(row1,row6, x1,x6,shiftop,shift); \ + dct_bfly32o(row2,row5, x2,x5,shiftop,shift); \ + dct_bfly32o(row3,row4, x3,x4,shiftop,shift); \ + } + + // load + row0 = vld1q_s16(data + 0*8); + row1 = vld1q_s16(data + 1*8); + row2 = vld1q_s16(data + 2*8); + row3 = vld1q_s16(data + 3*8); + row4 = vld1q_s16(data + 4*8); + row5 = vld1q_s16(data + 5*8); + row6 = vld1q_s16(data + 6*8); + row7 = vld1q_s16(data + 7*8); + + // add DC bias + row0 = vaddq_s16(row0, vsetq_lane_s16(1024, vdupq_n_s16(0), 0)); + + // column pass + dct_pass(vrshrn_n_s32, 10); + + // 16bit 8x8 transpose + { +// these three map to a single VTRN.16, VTRN.32, and VSWP, respectively. +// whether compilers actually get this is another story, sadly. +#define dct_trn16(x, y) { int16x8x2_t t = vtrnq_s16(x, y); x = t.val[0]; y = t.val[1]; } +#define dct_trn32(x, y) { int32x4x2_t t = vtrnq_s32(vreinterpretq_s32_s16(x), vreinterpretq_s32_s16(y)); x = vreinterpretq_s16_s32(t.val[0]); y = vreinterpretq_s16_s32(t.val[1]); } +#define dct_trn64(x, y) { int16x8_t x0 = x; int16x8_t y0 = y; x = vcombine_s16(vget_low_s16(x0), vget_low_s16(y0)); y = vcombine_s16(vget_high_s16(x0), vget_high_s16(y0)); } + + // pass 1 + dct_trn16(row0, row1); // a0b0a2b2a4b4a6b6 + dct_trn16(row2, row3); + dct_trn16(row4, row5); + dct_trn16(row6, row7); + + // pass 2 + dct_trn32(row0, row2); // a0b0c0d0a4b4c4d4 + dct_trn32(row1, row3); + dct_trn32(row4, row6); + dct_trn32(row5, row7); + + // pass 3 + dct_trn64(row0, row4); // a0b0c0d0e0f0g0h0 + dct_trn64(row1, row5); + dct_trn64(row2, row6); + dct_trn64(row3, row7); + +#undef dct_trn16 +#undef dct_trn32 +#undef dct_trn64 + } + + // row pass + // vrshrn_n_s32 only supports shifts up to 16, we need + // 17. so do a non-rounding shift of 16 first then follow + // up with a rounding shift by 1. + dct_pass(vshrn_n_s32, 16); + + { + // pack and round + uint8x8_t p0 = vqrshrun_n_s16(row0, 1); + uint8x8_t p1 = vqrshrun_n_s16(row1, 1); + uint8x8_t p2 = vqrshrun_n_s16(row2, 1); + uint8x8_t p3 = vqrshrun_n_s16(row3, 1); + uint8x8_t p4 = vqrshrun_n_s16(row4, 1); + uint8x8_t p5 = vqrshrun_n_s16(row5, 1); + uint8x8_t p6 = vqrshrun_n_s16(row6, 1); + uint8x8_t p7 = vqrshrun_n_s16(row7, 1); + + // again, these can translate into one instruction, but often don't. +#define dct_trn8_8(x, y) { uint8x8x2_t t = vtrn_u8(x, y); x = t.val[0]; y = t.val[1]; } +#define dct_trn8_16(x, y) { uint16x4x2_t t = vtrn_u16(vreinterpret_u16_u8(x), vreinterpret_u16_u8(y)); x = vreinterpret_u8_u16(t.val[0]); y = vreinterpret_u8_u16(t.val[1]); } +#define dct_trn8_32(x, y) { uint32x2x2_t t = vtrn_u32(vreinterpret_u32_u8(x), vreinterpret_u32_u8(y)); x = vreinterpret_u8_u32(t.val[0]); y = vreinterpret_u8_u32(t.val[1]); } + + // sadly can't use interleaved stores here since we only write + // 8 bytes to each scan line! + + // 8x8 8-bit transpose pass 1 + dct_trn8_8(p0, p1); + dct_trn8_8(p2, p3); + dct_trn8_8(p4, p5); + dct_trn8_8(p6, p7); + + // pass 2 + dct_trn8_16(p0, p2); + dct_trn8_16(p1, p3); + dct_trn8_16(p4, p6); + dct_trn8_16(p5, p7); + + // pass 3 + dct_trn8_32(p0, p4); + dct_trn8_32(p1, p5); + dct_trn8_32(p2, p6); + dct_trn8_32(p3, p7); + + // store + vst1_u8(out, p0); out += out_stride; + vst1_u8(out, p1); out += out_stride; + vst1_u8(out, p2); out += out_stride; + vst1_u8(out, p3); out += out_stride; + vst1_u8(out, p4); out += out_stride; + vst1_u8(out, p5); out += out_stride; + vst1_u8(out, p6); out += out_stride; + vst1_u8(out, p7); + +#undef dct_trn8_8 +#undef dct_trn8_16 +#undef dct_trn8_32 + } + +#undef dct_long_mul +#undef dct_long_mac +#undef dct_widen +#undef dct_wadd +#undef dct_wsub +#undef dct_bfly32o +#undef dct_pass +} + +#endif // STBI_NEON + +#define STBI__MARKER_none 0xff +// if there's a pending marker from the entropy stream, return that +// otherwise, fetch from the stream and get a marker. if there's no +// marker, return 0xff, which is never a valid marker value +static stbi_uc stbi__get_marker(stbi__jpeg *j) +{ + stbi_uc x; + if (j->marker != STBI__MARKER_none) { x = j->marker; j->marker = STBI__MARKER_none; return x; } + x = stbi__get8(j->s); + if (x != 0xff) return STBI__MARKER_none; + while (x == 0xff) + x = stbi__get8(j->s); // consume repeated 0xff fill bytes + return x; +} + +// in each scan, we'll have scan_n components, and the order +// of the components is specified by order[] +#define STBI__RESTART(x) ((x) >= 0xd0 && (x) <= 0xd7) + +// after a restart interval, stbi__jpeg_reset the entropy decoder and +// the dc prediction +static void stbi__jpeg_reset(stbi__jpeg *j) +{ + j->code_bits = 0; + j->code_buffer = 0; + j->nomore = 0; + j->img_comp[0].dc_pred = j->img_comp[1].dc_pred = j->img_comp[2].dc_pred = j->img_comp[3].dc_pred = 0; + j->marker = STBI__MARKER_none; + j->todo = j->restart_interval ? j->restart_interval : 0x7fffffff; + j->eob_run = 0; + // no more than 1<<31 MCUs if no restart_interal? that's plenty safe, + // since we don't even allow 1<<30 pixels +} + +static int stbi__parse_entropy_coded_data(stbi__jpeg *z) +{ + stbi__jpeg_reset(z); + if (!z->progressive) { + if (z->scan_n == 1) { + int i,j; + STBI_SIMD_ALIGN(short, data[64]); + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + // if it's NOT a restart, then just bail, so we get corrupt data + // rather than no data + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i,j,k,x,y; + STBI_SIMD_ALIGN(short, data[64]); + for (j=0; j < z->img_mcu_y; ++j) { + for (i=0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k=0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y=0; y < z->img_comp[n].v; ++y) { + for (x=0; x < z->img_comp[n].h; ++x) { + int x2 = (i*z->img_comp[n].h + x)*8; + int y2 = (j*z->img_comp[n].v + y)*8; + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0; + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*y2+x2, z->img_comp[n].w2, data); + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } else { + if (z->scan_n == 1) { + int i,j; + int n = z->order[0]; + // non-interleaved data, we just need to process one block at a time, + // in trivial scanline order + // number of blocks to do just depends on how many actual "pixels" this + // component has, independent of interleaved MCU blocking and such + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); + if (z->spec_start == 0) { + if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) + return 0; + } else { + int ha = z->img_comp[n].ha; + if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha])) + return 0; + } + // every data block is an MCU, so countdown the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } else { // interleaved + int i,j,k,x,y; + for (j=0; j < z->img_mcu_y; ++j) { + for (i=0; i < z->img_mcu_x; ++i) { + // scan an interleaved mcu... process scan_n components in order + for (k=0; k < z->scan_n; ++k) { + int n = z->order[k]; + // scan out an mcu's worth of this component; that's just determined + // by the basic H and V specified for the component + for (y=0; y < z->img_comp[n].v; ++y) { + for (x=0; x < z->img_comp[n].h; ++x) { + int x2 = (i*z->img_comp[n].h + x); + int y2 = (j*z->img_comp[n].v + y); + short *data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w); + if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n)) + return 0; + } + } + } + // after all interleaved components, that's an interleaved MCU, + // so now count down the restart interval + if (--z->todo <= 0) { + if (z->code_bits < 24) stbi__grow_buffer_unsafe(z); + if (!STBI__RESTART(z->marker)) return 1; + stbi__jpeg_reset(z); + } + } + } + return 1; + } + } +} + +static void stbi__jpeg_dequantize(short *data, stbi__uint16 *dequant) +{ + int i; + for (i=0; i < 64; ++i) + data[i] *= dequant[i]; +} + +static void stbi__jpeg_finish(stbi__jpeg *z) +{ + if (z->progressive) { + // dequantize and idct the data + int i,j,n; + for (n=0; n < z->s->img_n; ++n) { + int w = (z->img_comp[n].x+7) >> 3; + int h = (z->img_comp[n].y+7) >> 3; + for (j=0; j < h; ++j) { + for (i=0; i < w; ++i) { + short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w); + stbi__jpeg_dequantize(data, z->dequant[z->img_comp[n].tq]); + z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data); + } + } + } + } +} + +static int stbi__process_marker(stbi__jpeg *z, int m) +{ + int L; + switch (m) { + case STBI__MARKER_none: // no marker found + return stbi__err("expected marker","Corrupt JPEG"); + + case 0xDD: // DRI - specify restart interval + if (stbi__get16be(z->s) != 4) return stbi__err("bad DRI len","Corrupt JPEG"); + z->restart_interval = stbi__get16be(z->s); + return 1; + + case 0xDB: // DQT - define quantization table + L = stbi__get16be(z->s)-2; + while (L > 0) { + int q = stbi__get8(z->s); + int p = q >> 4, sixteen = (p != 0); + int t = q & 15,i; + if (p != 0 && p != 1) return stbi__err("bad DQT type","Corrupt JPEG"); + if (t > 3) return stbi__err("bad DQT table","Corrupt JPEG"); + + for (i=0; i < 64; ++i) + z->dequant[t][stbi__jpeg_dezigzag[i]] = (stbi__uint16)(sixteen ? stbi__get16be(z->s) : stbi__get8(z->s)); + L -= (sixteen ? 129 : 65); + } + return L==0; + + case 0xC4: // DHT - define huffman table + L = stbi__get16be(z->s)-2; + while (L > 0) { + stbi_uc *v; + int sizes[16],i,n=0; + int q = stbi__get8(z->s); + int tc = q >> 4; + int th = q & 15; + if (tc > 1 || th > 3) return stbi__err("bad DHT header","Corrupt JPEG"); + for (i=0; i < 16; ++i) { + sizes[i] = stbi__get8(z->s); + n += sizes[i]; + } + if(n > 256) return stbi__err("bad DHT header","Corrupt JPEG"); // Loop over i < n would write past end of values! + L -= 17; + if (tc == 0) { + if (!stbi__build_huffman(z->huff_dc+th, sizes)) return 0; + v = z->huff_dc[th].values; + } else { + if (!stbi__build_huffman(z->huff_ac+th, sizes)) return 0; + v = z->huff_ac[th].values; + } + for (i=0; i < n; ++i) + v[i] = stbi__get8(z->s); + if (tc != 0) + stbi__build_fast_ac(z->fast_ac[th], z->huff_ac + th); + L -= n; + } + return L==0; + } + + // check for comment block or APP blocks + if ((m >= 0xE0 && m <= 0xEF) || m == 0xFE) { + L = stbi__get16be(z->s); + if (L < 2) { + if (m == 0xFE) + return stbi__err("bad COM len","Corrupt JPEG"); + else + return stbi__err("bad APP len","Corrupt JPEG"); + } + L -= 2; + + if (m == 0xE0 && L >= 5) { // JFIF APP0 segment + static const unsigned char tag[5] = {'J','F','I','F','\0'}; + int ok = 1; + int i; + for (i=0; i < 5; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 5; + if (ok) + z->jfif = 1; + } else if (m == 0xEE && L >= 12) { // Adobe APP14 segment + static const unsigned char tag[6] = {'A','d','o','b','e','\0'}; + int ok = 1; + int i; + for (i=0; i < 6; ++i) + if (stbi__get8(z->s) != tag[i]) + ok = 0; + L -= 6; + if (ok) { + stbi__get8(z->s); // version + stbi__get16be(z->s); // flags0 + stbi__get16be(z->s); // flags1 + z->app14_color_transform = stbi__get8(z->s); // color transform + L -= 6; + } + } + + stbi__skip(z->s, L); + return 1; + } + + return stbi__err("unknown marker","Corrupt JPEG"); +} + +// after we see SOS +static int stbi__process_scan_header(stbi__jpeg *z) +{ + int i; + int Ls = stbi__get16be(z->s); + z->scan_n = stbi__get8(z->s); + if (z->scan_n < 1 || z->scan_n > 4 || z->scan_n > (int) z->s->img_n) return stbi__err("bad SOS component count","Corrupt JPEG"); + if (Ls != 6+2*z->scan_n) return stbi__err("bad SOS len","Corrupt JPEG"); + for (i=0; i < z->scan_n; ++i) { + int id = stbi__get8(z->s), which; + int q = stbi__get8(z->s); + for (which = 0; which < z->s->img_n; ++which) + if (z->img_comp[which].id == id) + break; + if (which == z->s->img_n) return 0; // no match + z->img_comp[which].hd = q >> 4; if (z->img_comp[which].hd > 3) return stbi__err("bad DC huff","Corrupt JPEG"); + z->img_comp[which].ha = q & 15; if (z->img_comp[which].ha > 3) return stbi__err("bad AC huff","Corrupt JPEG"); + z->order[i] = which; + } + + { + int aa; + z->spec_start = stbi__get8(z->s); + z->spec_end = stbi__get8(z->s); // should be 63, but might be 0 + aa = stbi__get8(z->s); + z->succ_high = (aa >> 4); + z->succ_low = (aa & 15); + if (z->progressive) { + if (z->spec_start > 63 || z->spec_end > 63 || z->spec_start > z->spec_end || z->succ_high > 13 || z->succ_low > 13) + return stbi__err("bad SOS", "Corrupt JPEG"); + } else { + if (z->spec_start != 0) return stbi__err("bad SOS","Corrupt JPEG"); + if (z->succ_high != 0 || z->succ_low != 0) return stbi__err("bad SOS","Corrupt JPEG"); + z->spec_end = 63; + } + } + + return 1; +} + +static int stbi__free_jpeg_components(stbi__jpeg *z, int ncomp, int why) +{ + int i; + for (i=0; i < ncomp; ++i) { + if (z->img_comp[i].raw_data) { + STBI_FREE(z->img_comp[i].raw_data); + z->img_comp[i].raw_data = NULL; + z->img_comp[i].data = NULL; + } + if (z->img_comp[i].raw_coeff) { + STBI_FREE(z->img_comp[i].raw_coeff); + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].coeff = 0; + } + if (z->img_comp[i].linebuf) { + STBI_FREE(z->img_comp[i].linebuf); + z->img_comp[i].linebuf = NULL; + } + } + return why; +} + +static int stbi__process_frame_header(stbi__jpeg *z, int scan) +{ + stbi__context *s = z->s; + int Lf,p,i,q, h_max=1,v_max=1,c; + Lf = stbi__get16be(s); if (Lf < 11) return stbi__err("bad SOF len","Corrupt JPEG"); // JPEG + p = stbi__get8(s); if (p != 8) return stbi__err("only 8-bit","JPEG format not supported: 8-bit only"); // JPEG baseline + s->img_y = stbi__get16be(s); if (s->img_y == 0) return stbi__err("no header height", "JPEG format not supported: delayed height"); // Legal, but we don't handle it--but neither does IJG + s->img_x = stbi__get16be(s); if (s->img_x == 0) return stbi__err("0 width","Corrupt JPEG"); // JPEG requires + if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + c = stbi__get8(s); + if (c != 3 && c != 1 && c != 4) return stbi__err("bad component count","Corrupt JPEG"); + s->img_n = c; + for (i=0; i < c; ++i) { + z->img_comp[i].data = NULL; + z->img_comp[i].linebuf = NULL; + } + + if (Lf != 8+3*s->img_n) return stbi__err("bad SOF len","Corrupt JPEG"); + + z->rgb = 0; + for (i=0; i < s->img_n; ++i) { + static const unsigned char rgb[3] = { 'R', 'G', 'B' }; + z->img_comp[i].id = stbi__get8(s); + if (s->img_n == 3 && z->img_comp[i].id == rgb[i]) + ++z->rgb; + q = stbi__get8(s); + z->img_comp[i].h = (q >> 4); if (!z->img_comp[i].h || z->img_comp[i].h > 4) return stbi__err("bad H","Corrupt JPEG"); + z->img_comp[i].v = q & 15; if (!z->img_comp[i].v || z->img_comp[i].v > 4) return stbi__err("bad V","Corrupt JPEG"); + z->img_comp[i].tq = stbi__get8(s); if (z->img_comp[i].tq > 3) return stbi__err("bad TQ","Corrupt JPEG"); + } + + if (scan != STBI__SCAN_load) return 1; + + if (!stbi__mad3sizes_valid(s->img_x, s->img_y, s->img_n, 0)) return stbi__err("too large", "Image too large to decode"); + + for (i=0; i < s->img_n; ++i) { + if (z->img_comp[i].h > h_max) h_max = z->img_comp[i].h; + if (z->img_comp[i].v > v_max) v_max = z->img_comp[i].v; + } + + // check that plane subsampling factors are integer ratios; our resamplers can't deal with fractional ratios + // and I've never seen a non-corrupted JPEG file actually use them + for (i=0; i < s->img_n; ++i) { + if (h_max % z->img_comp[i].h != 0) return stbi__err("bad H","Corrupt JPEG"); + if (v_max % z->img_comp[i].v != 0) return stbi__err("bad V","Corrupt JPEG"); + } + + // compute interleaved mcu info + z->img_h_max = h_max; + z->img_v_max = v_max; + z->img_mcu_w = h_max * 8; + z->img_mcu_h = v_max * 8; + // these sizes can't be more than 17 bits + z->img_mcu_x = (s->img_x + z->img_mcu_w-1) / z->img_mcu_w; + z->img_mcu_y = (s->img_y + z->img_mcu_h-1) / z->img_mcu_h; + + for (i=0; i < s->img_n; ++i) { + // number of effective pixels (e.g. for non-interleaved MCU) + z->img_comp[i].x = (s->img_x * z->img_comp[i].h + h_max-1) / h_max; + z->img_comp[i].y = (s->img_y * z->img_comp[i].v + v_max-1) / v_max; + // to simplify generation, we'll allocate enough memory to decode + // the bogus oversized data from using interleaved MCUs and their + // big blocks (e.g. a 16x16 iMCU on an image of width 33); we won't + // discard the extra data until colorspace conversion + // + // img_mcu_x, img_mcu_y: <=17 bits; comp[i].h and .v are <=4 (checked earlier) + // so these muls can't overflow with 32-bit ints (which we require) + z->img_comp[i].w2 = z->img_mcu_x * z->img_comp[i].h * 8; + z->img_comp[i].h2 = z->img_mcu_y * z->img_comp[i].v * 8; + z->img_comp[i].coeff = 0; + z->img_comp[i].raw_coeff = 0; + z->img_comp[i].linebuf = NULL; + z->img_comp[i].raw_data = stbi__malloc_mad2(z->img_comp[i].w2, z->img_comp[i].h2, 15); + if (z->img_comp[i].raw_data == NULL) + return stbi__free_jpeg_components(z, i+1, stbi__err("outofmem", "Out of memory")); + // align blocks for idct using mmx/sse + z->img_comp[i].data = (stbi_uc*) (((size_t) z->img_comp[i].raw_data + 15) & ~15); + if (z->progressive) { + // w2, h2 are multiples of 8 (see above) + z->img_comp[i].coeff_w = z->img_comp[i].w2 / 8; + z->img_comp[i].coeff_h = z->img_comp[i].h2 / 8; + z->img_comp[i].raw_coeff = stbi__malloc_mad3(z->img_comp[i].w2, z->img_comp[i].h2, sizeof(short), 15); + if (z->img_comp[i].raw_coeff == NULL) + return stbi__free_jpeg_components(z, i+1, stbi__err("outofmem", "Out of memory")); + z->img_comp[i].coeff = (short*) (((size_t) z->img_comp[i].raw_coeff + 15) & ~15); + } + } + + return 1; +} + +// use comparisons since in some cases we handle more than one case (e.g. SOF) +#define stbi__DNL(x) ((x) == 0xdc) +#define stbi__SOI(x) ((x) == 0xd8) +#define stbi__EOI(x) ((x) == 0xd9) +#define stbi__SOF(x) ((x) == 0xc0 || (x) == 0xc1 || (x) == 0xc2) +#define stbi__SOS(x) ((x) == 0xda) + +#define stbi__SOF_progressive(x) ((x) == 0xc2) + +static int stbi__decode_jpeg_header(stbi__jpeg *z, int scan) +{ + int m; + z->jfif = 0; + z->app14_color_transform = -1; // valid values are 0,1,2 + z->marker = STBI__MARKER_none; // initialize cached marker to empty + m = stbi__get_marker(z); + if (!stbi__SOI(m)) return stbi__err("no SOI","Corrupt JPEG"); + if (scan == STBI__SCAN_type) return 1; + m = stbi__get_marker(z); + while (!stbi__SOF(m)) { + if (!stbi__process_marker(z,m)) return 0; + m = stbi__get_marker(z); + while (m == STBI__MARKER_none) { + // some files have extra padding after their blocks, so ok, we'll scan + if (stbi__at_eof(z->s)) return stbi__err("no SOF", "Corrupt JPEG"); + m = stbi__get_marker(z); + } + } + z->progressive = stbi__SOF_progressive(m); + if (!stbi__process_frame_header(z, scan)) return 0; + return 1; +} + +static int stbi__skip_jpeg_junk_at_end(stbi__jpeg *j) +{ + // some JPEGs have junk at end, skip over it but if we find what looks + // like a valid marker, resume there + while (!stbi__at_eof(j->s)) { + int x = stbi__get8(j->s); + while (x == 255) { // might be a marker + if (stbi__at_eof(j->s)) return STBI__MARKER_none; + x = stbi__get8(j->s); + if (x != 0x00 && x != 0xff) { + // not a stuffed zero or lead-in to another marker, looks + // like an actual marker, return it + return x; + } + // stuffed zero has x=0 now which ends the loop, meaning we go + // back to regular scan loop. + // repeated 0xff keeps trying to read the next byte of the marker. + } + } + return STBI__MARKER_none; +} + +// decode image to YCbCr format +static int stbi__decode_jpeg_image(stbi__jpeg *j) +{ + int m; + for (m = 0; m < 4; m++) { + j->img_comp[m].raw_data = NULL; + j->img_comp[m].raw_coeff = NULL; + } + j->restart_interval = 0; + if (!stbi__decode_jpeg_header(j, STBI__SCAN_load)) return 0; + m = stbi__get_marker(j); + while (!stbi__EOI(m)) { + if (stbi__SOS(m)) { + if (!stbi__process_scan_header(j)) return 0; + if (!stbi__parse_entropy_coded_data(j)) return 0; + if (j->marker == STBI__MARKER_none ) { + j->marker = stbi__skip_jpeg_junk_at_end(j); + // if we reach eof without hitting a marker, stbi__get_marker() below will fail and we'll eventually return 0 + } + m = stbi__get_marker(j); + if (STBI__RESTART(m)) + m = stbi__get_marker(j); + } else if (stbi__DNL(m)) { + int Ld = stbi__get16be(j->s); + stbi__uint32 NL = stbi__get16be(j->s); + if (Ld != 4) return stbi__err("bad DNL len", "Corrupt JPEG"); + if (NL != j->s->img_y) return stbi__err("bad DNL height", "Corrupt JPEG"); + m = stbi__get_marker(j); + } else { + if (!stbi__process_marker(j, m)) return 1; + m = stbi__get_marker(j); + } + } + if (j->progressive) + stbi__jpeg_finish(j); + return 1; +} + +// static jfif-centered resampling (across block boundaries) + +typedef stbi_uc *(*resample_row_func)(stbi_uc *out, stbi_uc *in0, stbi_uc *in1, + int w, int hs); + +#define stbi__div4(x) ((stbi_uc) ((x) >> 2)) + +static stbi_uc *resample_row_1(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + STBI_NOTUSED(out); + STBI_NOTUSED(in_far); + STBI_NOTUSED(w); + STBI_NOTUSED(hs); + return in_near; +} + +static stbi_uc* stbi__resample_row_v_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate two samples vertically for every one in input + int i; + STBI_NOTUSED(hs); + for (i=0; i < w; ++i) + out[i] = stbi__div4(3*in_near[i] + in_far[i] + 2); + return out; +} + +static stbi_uc* stbi__resample_row_h_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate two samples horizontally for every one in input + int i; + stbi_uc *input = in_near; + + if (w == 1) { + // if only one sample, can't do any interpolation + out[0] = out[1] = input[0]; + return out; + } + + out[0] = input[0]; + out[1] = stbi__div4(input[0]*3 + input[1] + 2); + for (i=1; i < w-1; ++i) { + int n = 3*input[i]+2; + out[i*2+0] = stbi__div4(n+input[i-1]); + out[i*2+1] = stbi__div4(n+input[i+1]); + } + out[i*2+0] = stbi__div4(input[w-2]*3 + input[w-1] + 2); + out[i*2+1] = input[w-1]; + + STBI_NOTUSED(in_far); + STBI_NOTUSED(hs); + + return out; +} + +#define stbi__div16(x) ((stbi_uc) ((x) >> 4)) + +static stbi_uc *stbi__resample_row_hv_2(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate 2x2 samples for every one in input + int i,t0,t1; + if (w == 1) { + out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3*in_near[0] + in_far[0]; + out[0] = stbi__div4(t1+2); + for (i=1; i < w; ++i) { + t0 = t1; + t1 = 3*in_near[i]+in_far[i]; + out[i*2-1] = stbi__div16(3*t0 + t1 + 8); + out[i*2 ] = stbi__div16(3*t1 + t0 + 8); + } + out[w*2-1] = stbi__div4(t1+2); + + STBI_NOTUSED(hs); + + return out; +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static stbi_uc *stbi__resample_row_hv_2_simd(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // need to generate 2x2 samples for every one in input + int i=0,t0,t1; + + if (w == 1) { + out[0] = out[1] = stbi__div4(3*in_near[0] + in_far[0] + 2); + return out; + } + + t1 = 3*in_near[0] + in_far[0]; + // process groups of 8 pixels for as long as we can. + // note we can't handle the last pixel in a row in this loop + // because we need to handle the filter boundary conditions. + for (; i < ((w-1) & ~7); i += 8) { +#if defined(STBI_SSE2) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + __m128i zero = _mm_setzero_si128(); + __m128i farb = _mm_loadl_epi64((__m128i *) (in_far + i)); + __m128i nearb = _mm_loadl_epi64((__m128i *) (in_near + i)); + __m128i farw = _mm_unpacklo_epi8(farb, zero); + __m128i nearw = _mm_unpacklo_epi8(nearb, zero); + __m128i diff = _mm_sub_epi16(farw, nearw); + __m128i nears = _mm_slli_epi16(nearw, 2); + __m128i curr = _mm_add_epi16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + __m128i prv0 = _mm_slli_si128(curr, 2); + __m128i nxt0 = _mm_srli_si128(curr, 2); + __m128i prev = _mm_insert_epi16(prv0, t1, 0); + __m128i next = _mm_insert_epi16(nxt0, 3*in_near[i+8] + in_far[i+8], 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + __m128i bias = _mm_set1_epi16(8); + __m128i curs = _mm_slli_epi16(curr, 2); + __m128i prvd = _mm_sub_epi16(prev, curr); + __m128i nxtd = _mm_sub_epi16(next, curr); + __m128i curb = _mm_add_epi16(curs, bias); + __m128i even = _mm_add_epi16(prvd, curb); + __m128i odd = _mm_add_epi16(nxtd, curb); + + // interleave even and odd pixels, then undo scaling. + __m128i int0 = _mm_unpacklo_epi16(even, odd); + __m128i int1 = _mm_unpackhi_epi16(even, odd); + __m128i de0 = _mm_srli_epi16(int0, 4); + __m128i de1 = _mm_srli_epi16(int1, 4); + + // pack and write output + __m128i outv = _mm_packus_epi16(de0, de1); + _mm_storeu_si128((__m128i *) (out + i*2), outv); +#elif defined(STBI_NEON) + // load and perform the vertical filtering pass + // this uses 3*x + y = 4*x + (y - x) + uint8x8_t farb = vld1_u8(in_far + i); + uint8x8_t nearb = vld1_u8(in_near + i); + int16x8_t diff = vreinterpretq_s16_u16(vsubl_u8(farb, nearb)); + int16x8_t nears = vreinterpretq_s16_u16(vshll_n_u8(nearb, 2)); + int16x8_t curr = vaddq_s16(nears, diff); // current row + + // horizontal filter works the same based on shifted vers of current + // row. "prev" is current row shifted right by 1 pixel; we need to + // insert the previous pixel value (from t1). + // "next" is current row shifted left by 1 pixel, with first pixel + // of next block of 8 pixels added in. + int16x8_t prv0 = vextq_s16(curr, curr, 7); + int16x8_t nxt0 = vextq_s16(curr, curr, 1); + int16x8_t prev = vsetq_lane_s16(t1, prv0, 0); + int16x8_t next = vsetq_lane_s16(3*in_near[i+8] + in_far[i+8], nxt0, 7); + + // horizontal filter, polyphase implementation since it's convenient: + // even pixels = 3*cur + prev = cur*4 + (prev - cur) + // odd pixels = 3*cur + next = cur*4 + (next - cur) + // note the shared term. + int16x8_t curs = vshlq_n_s16(curr, 2); + int16x8_t prvd = vsubq_s16(prev, curr); + int16x8_t nxtd = vsubq_s16(next, curr); + int16x8_t even = vaddq_s16(curs, prvd); + int16x8_t odd = vaddq_s16(curs, nxtd); + + // undo scaling and round, then store with even/odd phases interleaved + uint8x8x2_t o; + o.val[0] = vqrshrun_n_s16(even, 4); + o.val[1] = vqrshrun_n_s16(odd, 4); + vst2_u8(out + i*2, o); +#endif + + // "previous" value for next iter + t1 = 3*in_near[i+7] + in_far[i+7]; + } + + t0 = t1; + t1 = 3*in_near[i] + in_far[i]; + out[i*2] = stbi__div16(3*t1 + t0 + 8); + + for (++i; i < w; ++i) { + t0 = t1; + t1 = 3*in_near[i]+in_far[i]; + out[i*2-1] = stbi__div16(3*t0 + t1 + 8); + out[i*2 ] = stbi__div16(3*t1 + t0 + 8); + } + out[w*2-1] = stbi__div4(t1+2); + + STBI_NOTUSED(hs); + + return out; +} +#endif + +static stbi_uc *stbi__resample_row_generic(stbi_uc *out, stbi_uc *in_near, stbi_uc *in_far, int w, int hs) +{ + // resample with nearest-neighbor + int i,j; + STBI_NOTUSED(in_far); + for (i=0; i < w; ++i) + for (j=0; j < hs; ++j) + out[i*hs+j] = in_near[i]; + return out; +} + +// this is a reduced-precision calculation of YCbCr-to-RGB introduced +// to make sure the code produces the same results in both SIMD and scalar +#define stbi__float2fixed(x) (((int) ((x) * 4096.0f + 0.5f)) << 8) +static void stbi__YCbCr_to_RGB_row(stbi_uc *out, const stbi_uc *y, const stbi_uc *pcb, const stbi_uc *pcr, int count, int step) +{ + int i; + for (i=0; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1<<19); // rounding + int r,g,b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr* stbi__float2fixed(1.40200f); + g = y_fixed + (cr*-stbi__float2fixed(0.71414f)) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb* stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } + if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } + if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} + +#if defined(STBI_SSE2) || defined(STBI_NEON) +static void stbi__YCbCr_to_RGB_simd(stbi_uc *out, stbi_uc const *y, stbi_uc const *pcb, stbi_uc const *pcr, int count, int step) +{ + int i = 0; + +#ifdef STBI_SSE2 + // step == 3 is pretty ugly on the final interleave, and i'm not convinced + // it's useful in practice (you wouldn't use it for textures, for example). + // so just accelerate step == 4 case. + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + __m128i signflip = _mm_set1_epi8(-0x80); + __m128i cr_const0 = _mm_set1_epi16( (short) ( 1.40200f*4096.0f+0.5f)); + __m128i cr_const1 = _mm_set1_epi16( - (short) ( 0.71414f*4096.0f+0.5f)); + __m128i cb_const0 = _mm_set1_epi16( - (short) ( 0.34414f*4096.0f+0.5f)); + __m128i cb_const1 = _mm_set1_epi16( (short) ( 1.77200f*4096.0f+0.5f)); + __m128i y_bias = _mm_set1_epi8((char) (unsigned char) 128); + __m128i xw = _mm_set1_epi16(255); // alpha channel + + for (; i+7 < count; i += 8) { + // load + __m128i y_bytes = _mm_loadl_epi64((__m128i *) (y+i)); + __m128i cr_bytes = _mm_loadl_epi64((__m128i *) (pcr+i)); + __m128i cb_bytes = _mm_loadl_epi64((__m128i *) (pcb+i)); + __m128i cr_biased = _mm_xor_si128(cr_bytes, signflip); // -128 + __m128i cb_biased = _mm_xor_si128(cb_bytes, signflip); // -128 + + // unpack to short (and left-shift cr, cb by 8) + __m128i yw = _mm_unpacklo_epi8(y_bias, y_bytes); + __m128i crw = _mm_unpacklo_epi8(_mm_setzero_si128(), cr_biased); + __m128i cbw = _mm_unpacklo_epi8(_mm_setzero_si128(), cb_biased); + + // color transform + __m128i yws = _mm_srli_epi16(yw, 4); + __m128i cr0 = _mm_mulhi_epi16(cr_const0, crw); + __m128i cb0 = _mm_mulhi_epi16(cb_const0, cbw); + __m128i cb1 = _mm_mulhi_epi16(cbw, cb_const1); + __m128i cr1 = _mm_mulhi_epi16(crw, cr_const1); + __m128i rws = _mm_add_epi16(cr0, yws); + __m128i gwt = _mm_add_epi16(cb0, yws); + __m128i bws = _mm_add_epi16(yws, cb1); + __m128i gws = _mm_add_epi16(gwt, cr1); + + // descale + __m128i rw = _mm_srai_epi16(rws, 4); + __m128i bw = _mm_srai_epi16(bws, 4); + __m128i gw = _mm_srai_epi16(gws, 4); + + // back to byte, set up for transpose + __m128i brb = _mm_packus_epi16(rw, bw); + __m128i gxb = _mm_packus_epi16(gw, xw); + + // transpose to interleave channels + __m128i t0 = _mm_unpacklo_epi8(brb, gxb); + __m128i t1 = _mm_unpackhi_epi8(brb, gxb); + __m128i o0 = _mm_unpacklo_epi16(t0, t1); + __m128i o1 = _mm_unpackhi_epi16(t0, t1); + + // store + _mm_storeu_si128((__m128i *) (out + 0), o0); + _mm_storeu_si128((__m128i *) (out + 16), o1); + out += 32; + } + } +#endif + +#ifdef STBI_NEON + // in this version, step=3 support would be easy to add. but is there demand? + if (step == 4) { + // this is a fairly straightforward implementation and not super-optimized. + uint8x8_t signflip = vdup_n_u8(0x80); + int16x8_t cr_const0 = vdupq_n_s16( (short) ( 1.40200f*4096.0f+0.5f)); + int16x8_t cr_const1 = vdupq_n_s16( - (short) ( 0.71414f*4096.0f+0.5f)); + int16x8_t cb_const0 = vdupq_n_s16( - (short) ( 0.34414f*4096.0f+0.5f)); + int16x8_t cb_const1 = vdupq_n_s16( (short) ( 1.77200f*4096.0f+0.5f)); + + for (; i+7 < count; i += 8) { + // load + uint8x8_t y_bytes = vld1_u8(y + i); + uint8x8_t cr_bytes = vld1_u8(pcr + i); + uint8x8_t cb_bytes = vld1_u8(pcb + i); + int8x8_t cr_biased = vreinterpret_s8_u8(vsub_u8(cr_bytes, signflip)); + int8x8_t cb_biased = vreinterpret_s8_u8(vsub_u8(cb_bytes, signflip)); + + // expand to s16 + int16x8_t yws = vreinterpretq_s16_u16(vshll_n_u8(y_bytes, 4)); + int16x8_t crw = vshll_n_s8(cr_biased, 7); + int16x8_t cbw = vshll_n_s8(cb_biased, 7); + + // color transform + int16x8_t cr0 = vqdmulhq_s16(crw, cr_const0); + int16x8_t cb0 = vqdmulhq_s16(cbw, cb_const0); + int16x8_t cr1 = vqdmulhq_s16(crw, cr_const1); + int16x8_t cb1 = vqdmulhq_s16(cbw, cb_const1); + int16x8_t rws = vaddq_s16(yws, cr0); + int16x8_t gws = vaddq_s16(vaddq_s16(yws, cb0), cr1); + int16x8_t bws = vaddq_s16(yws, cb1); + + // undo scaling, round, convert to byte + uint8x8x4_t o; + o.val[0] = vqrshrun_n_s16(rws, 4); + o.val[1] = vqrshrun_n_s16(gws, 4); + o.val[2] = vqrshrun_n_s16(bws, 4); + o.val[3] = vdup_n_u8(255); + + // store, interleaving r/g/b/a + vst4_u8(out, o); + out += 8*4; + } + } +#endif + + for (; i < count; ++i) { + int y_fixed = (y[i] << 20) + (1<<19); // rounding + int r,g,b; + int cr = pcr[i] - 128; + int cb = pcb[i] - 128; + r = y_fixed + cr* stbi__float2fixed(1.40200f); + g = y_fixed + cr*-stbi__float2fixed(0.71414f) + ((cb*-stbi__float2fixed(0.34414f)) & 0xffff0000); + b = y_fixed + cb* stbi__float2fixed(1.77200f); + r >>= 20; + g >>= 20; + b >>= 20; + if ((unsigned) r > 255) { if (r < 0) r = 0; else r = 255; } + if ((unsigned) g > 255) { if (g < 0) g = 0; else g = 255; } + if ((unsigned) b > 255) { if (b < 0) b = 0; else b = 255; } + out[0] = (stbi_uc)r; + out[1] = (stbi_uc)g; + out[2] = (stbi_uc)b; + out[3] = 255; + out += step; + } +} +#endif + +// set up the kernels +static void stbi__setup_jpeg(stbi__jpeg *j) +{ + j->idct_block_kernel = stbi__idct_block; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_row; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2; + +#ifdef STBI_SSE2 + if (stbi__sse2_available()) { + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; + } +#endif + +#ifdef STBI_NEON + j->idct_block_kernel = stbi__idct_simd; + j->YCbCr_to_RGB_kernel = stbi__YCbCr_to_RGB_simd; + j->resample_row_hv_2_kernel = stbi__resample_row_hv_2_simd; +#endif +} + +// clean up the temporary component buffers +static void stbi__cleanup_jpeg(stbi__jpeg *j) +{ + stbi__free_jpeg_components(j, j->s->img_n, 0); +} + +typedef struct +{ + resample_row_func resample; + stbi_uc *line0,*line1; + int hs,vs; // expansion factor in each axis + int w_lores; // horizontal pixels pre-expansion + int ystep; // how far through vertical expansion we are + int ypos; // which pre-expansion row we're on +} stbi__resample; + +// fast 0..255 * 0..255 => 0..255 rounded multiplication +static stbi_uc stbi__blinn_8x8(stbi_uc x, stbi_uc y) +{ + unsigned int t = x*y + 128; + return (stbi_uc) ((t + (t >>8)) >> 8); +} + +static stbi_uc *load_jpeg_image(stbi__jpeg *z, int *out_x, int *out_y, int *comp, int req_comp) +{ + int n, decode_n, is_rgb; + z->s->img_n = 0; // make stbi__cleanup_jpeg safe + + // validate req_comp + if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + + // load a jpeg image from whichever source, but leave in YCbCr format + if (!stbi__decode_jpeg_image(z)) { stbi__cleanup_jpeg(z); return NULL; } + + // determine actual number of components to generate + n = req_comp ? req_comp : z->s->img_n >= 3 ? 3 : 1; + + is_rgb = z->s->img_n == 3 && (z->rgb == 3 || (z->app14_color_transform == 0 && !z->jfif)); + + if (z->s->img_n == 3 && n < 3 && !is_rgb) + decode_n = 1; + else + decode_n = z->s->img_n; + + // nothing to do if no components requested; check this now to avoid + // accessing uninitialized coutput[0] later + if (decode_n <= 0) { stbi__cleanup_jpeg(z); return NULL; } + + // resample and color-convert + { + int k; + unsigned int i,j; + stbi_uc *output; + stbi_uc *coutput[4] = { NULL, NULL, NULL, NULL }; + + stbi__resample res_comp[4]; + + for (k=0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + + // allocate line buffer big enough for upsampling off the edges + // with upsample factor of 4 + z->img_comp[k].linebuf = (stbi_uc *) stbi__malloc(z->s->img_x + 3); + if (!z->img_comp[k].linebuf) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + r->hs = z->img_h_max / z->img_comp[k].h; + r->vs = z->img_v_max / z->img_comp[k].v; + r->ystep = r->vs >> 1; + r->w_lores = (z->s->img_x + r->hs-1) / r->hs; + r->ypos = 0; + r->line0 = r->line1 = z->img_comp[k].data; + + if (r->hs == 1 && r->vs == 1) r->resample = resample_row_1; + else if (r->hs == 1 && r->vs == 2) r->resample = stbi__resample_row_v_2; + else if (r->hs == 2 && r->vs == 1) r->resample = stbi__resample_row_h_2; + else if (r->hs == 2 && r->vs == 2) r->resample = z->resample_row_hv_2_kernel; + else r->resample = stbi__resample_row_generic; + } + + // can't error after this so, this is safe + output = (stbi_uc *) stbi__malloc_mad3(n, z->s->img_x, z->s->img_y, 1); + if (!output) { stbi__cleanup_jpeg(z); return stbi__errpuc("outofmem", "Out of memory"); } + + // now go ahead and resample + for (j=0; j < z->s->img_y; ++j) { + stbi_uc *out = output + n * z->s->img_x * j; + for (k=0; k < decode_n; ++k) { + stbi__resample *r = &res_comp[k]; + int y_bot = r->ystep >= (r->vs >> 1); + coutput[k] = r->resample(z->img_comp[k].linebuf, + y_bot ? r->line1 : r->line0, + y_bot ? r->line0 : r->line1, + r->w_lores, r->hs); + if (++r->ystep >= r->vs) { + r->ystep = 0; + r->line0 = r->line1; + if (++r->ypos < z->img_comp[k].y) + r->line1 += z->img_comp[k].w2; + } + } + if (n >= 3) { + stbi_uc *y = coutput[0]; + if (z->s->img_n == 3) { + if (is_rgb) { + for (i=0; i < z->s->img_x; ++i) { + out[0] = y[i]; + out[1] = coutput[1][i]; + out[2] = coutput[2][i]; + out[3] = 255; + out += n; + } + } else { + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + } + } else if (z->s->img_n == 4) { + if (z->app14_color_transform == 0) { // CMYK + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + out[0] = stbi__blinn_8x8(coutput[0][i], m); + out[1] = stbi__blinn_8x8(coutput[1][i], m); + out[2] = stbi__blinn_8x8(coutput[2][i], m); + out[3] = 255; + out += n; + } + } else if (z->app14_color_transform == 2) { // YCCK + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + out[0] = stbi__blinn_8x8(255 - out[0], m); + out[1] = stbi__blinn_8x8(255 - out[1], m); + out[2] = stbi__blinn_8x8(255 - out[2], m); + out += n; + } + } else { // YCbCr + alpha? Ignore the fourth channel for now + z->YCbCr_to_RGB_kernel(out, y, coutput[1], coutput[2], z->s->img_x, n); + } + } else + for (i=0; i < z->s->img_x; ++i) { + out[0] = out[1] = out[2] = y[i]; + out[3] = 255; // not used if n==3 + out += n; + } + } else { + if (is_rgb) { + if (n == 1) + for (i=0; i < z->s->img_x; ++i) + *out++ = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + else { + for (i=0; i < z->s->img_x; ++i, out += 2) { + out[0] = stbi__compute_y(coutput[0][i], coutput[1][i], coutput[2][i]); + out[1] = 255; + } + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 0) { + for (i=0; i < z->s->img_x; ++i) { + stbi_uc m = coutput[3][i]; + stbi_uc r = stbi__blinn_8x8(coutput[0][i], m); + stbi_uc g = stbi__blinn_8x8(coutput[1][i], m); + stbi_uc b = stbi__blinn_8x8(coutput[2][i], m); + out[0] = stbi__compute_y(r, g, b); + out[1] = 255; + out += n; + } + } else if (z->s->img_n == 4 && z->app14_color_transform == 2) { + for (i=0; i < z->s->img_x; ++i) { + out[0] = stbi__blinn_8x8(255 - coutput[0][i], coutput[3][i]); + out[1] = 255; + out += n; + } + } else { + stbi_uc *y = coutput[0]; + if (n == 1) + for (i=0; i < z->s->img_x; ++i) out[i] = y[i]; + else + for (i=0; i < z->s->img_x; ++i) { *out++ = y[i]; *out++ = 255; } + } + } + } + stbi__cleanup_jpeg(z); + *out_x = z->s->img_x; + *out_y = z->s->img_y; + if (comp) *comp = z->s->img_n >= 3 ? 3 : 1; // report original components, not output + return output; + } +} + +static void *stbi__jpeg_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + unsigned char* result; + stbi__jpeg* j = (stbi__jpeg*) stbi__malloc(sizeof(stbi__jpeg)); + if (!j) return stbi__errpuc("outofmem", "Out of memory"); + memset(j, 0, sizeof(stbi__jpeg)); + STBI_NOTUSED(ri); + j->s = s; + stbi__setup_jpeg(j); + result = load_jpeg_image(j, x,y,comp,req_comp); + STBI_FREE(j); + return result; +} + +static int stbi__jpeg_test(stbi__context *s) +{ + int r; + stbi__jpeg* j = (stbi__jpeg*)stbi__malloc(sizeof(stbi__jpeg)); + if (!j) return stbi__err("outofmem", "Out of memory"); + memset(j, 0, sizeof(stbi__jpeg)); + j->s = s; + stbi__setup_jpeg(j); + r = stbi__decode_jpeg_header(j, STBI__SCAN_type); + stbi__rewind(s); + STBI_FREE(j); + return r; +} + +static int stbi__jpeg_info_raw(stbi__jpeg *j, int *x, int *y, int *comp) +{ + if (!stbi__decode_jpeg_header(j, STBI__SCAN_header)) { + stbi__rewind( j->s ); + return 0; + } + if (x) *x = j->s->img_x; + if (y) *y = j->s->img_y; + if (comp) *comp = j->s->img_n >= 3 ? 3 : 1; + return 1; +} + +static int stbi__jpeg_info(stbi__context *s, int *x, int *y, int *comp) +{ + int result; + stbi__jpeg* j = (stbi__jpeg*) (stbi__malloc(sizeof(stbi__jpeg))); + if (!j) return stbi__err("outofmem", "Out of memory"); + memset(j, 0, sizeof(stbi__jpeg)); + j->s = s; + result = stbi__jpeg_info_raw(j, x, y, comp); + STBI_FREE(j); + return result; +} +#endif + +// public domain zlib decode v0.2 Sean Barrett 2006-11-18 +// simple implementation +// - all input must be provided in an upfront buffer +// - all output is written to a single output buffer (can malloc/realloc) +// performance +// - fast huffman + +#ifndef STBI_NO_ZLIB + +// fast-way is faster to check than jpeg huffman, but slow way is slower +#define STBI__ZFAST_BITS 9 // accelerate all cases in default tables +#define STBI__ZFAST_MASK ((1 << STBI__ZFAST_BITS) - 1) +#define STBI__ZNSYMS 288 // number of symbols in literal/length alphabet + +// zlib-style huffman encoding +// (jpegs packs from left, zlib from right, so can't share code) +typedef struct +{ + stbi__uint16 fast[1 << STBI__ZFAST_BITS]; + stbi__uint16 firstcode[16]; + int maxcode[17]; + stbi__uint16 firstsymbol[16]; + stbi_uc size[STBI__ZNSYMS]; + stbi__uint16 value[STBI__ZNSYMS]; +} stbi__zhuffman; + +stbi_inline static int stbi__bitreverse16(int n) +{ + n = ((n & 0xAAAA) >> 1) | ((n & 0x5555) << 1); + n = ((n & 0xCCCC) >> 2) | ((n & 0x3333) << 2); + n = ((n & 0xF0F0) >> 4) | ((n & 0x0F0F) << 4); + n = ((n & 0xFF00) >> 8) | ((n & 0x00FF) << 8); + return n; +} + +stbi_inline static int stbi__bit_reverse(int v, int bits) +{ + STBI_ASSERT(bits <= 16); + // to bit reverse n bits, reverse 16 and shift + // e.g. 11 bits, bit reverse and shift away 5 + return stbi__bitreverse16(v) >> (16-bits); +} + +static int stbi__zbuild_huffman(stbi__zhuffman *z, const stbi_uc *sizelist, int num) +{ + int i,k=0; + int code, next_code[16], sizes[17]; + + // DEFLATE spec for generating codes + memset(sizes, 0, sizeof(sizes)); + memset(z->fast, 0, sizeof(z->fast)); + for (i=0; i < num; ++i) + ++sizes[sizelist[i]]; + sizes[0] = 0; + for (i=1; i < 16; ++i) + if (sizes[i] > (1 << i)) + return stbi__err("bad sizes", "Corrupt PNG"); + code = 0; + for (i=1; i < 16; ++i) { + next_code[i] = code; + z->firstcode[i] = (stbi__uint16) code; + z->firstsymbol[i] = (stbi__uint16) k; + code = (code + sizes[i]); + if (sizes[i]) + if (code-1 >= (1 << i)) return stbi__err("bad codelengths","Corrupt PNG"); + z->maxcode[i] = code << (16-i); // preshift for inner loop + code <<= 1; + k += sizes[i]; + } + z->maxcode[16] = 0x10000; // sentinel + for (i=0; i < num; ++i) { + int s = sizelist[i]; + if (s) { + int c = next_code[s] - z->firstcode[s] + z->firstsymbol[s]; + stbi__uint16 fastv = (stbi__uint16) ((s << 9) | i); + z->size [c] = (stbi_uc ) s; + z->value[c] = (stbi__uint16) i; + if (s <= STBI__ZFAST_BITS) { + int j = stbi__bit_reverse(next_code[s],s); + while (j < (1 << STBI__ZFAST_BITS)) { + z->fast[j] = fastv; + j += (1 << s); + } + } + ++next_code[s]; + } + } + return 1; +} + +// zlib-from-memory implementation for PNG reading +// because PNG allows splitting the zlib stream arbitrarily, +// and it's annoying structurally to have PNG call ZLIB call PNG, +// we require PNG read all the IDATs and combine them into a single +// memory buffer + +typedef struct +{ + stbi_uc *zbuffer, *zbuffer_end; + int num_bits; + stbi__uint32 code_buffer; + + char *zout; + char *zout_start; + char *zout_end; + int z_expandable; + + stbi__zhuffman z_length, z_distance; +} stbi__zbuf; + +stbi_inline static int stbi__zeof(stbi__zbuf *z) +{ + return (z->zbuffer >= z->zbuffer_end); +} + +stbi_inline static stbi_uc stbi__zget8(stbi__zbuf *z) +{ + return stbi__zeof(z) ? 0 : *z->zbuffer++; +} + +static void stbi__fill_bits(stbi__zbuf *z) +{ + do { + if (z->code_buffer >= (1U << z->num_bits)) { + z->zbuffer = z->zbuffer_end; /* treat this as EOF so we fail. */ + return; + } + z->code_buffer |= (unsigned int) stbi__zget8(z) << z->num_bits; + z->num_bits += 8; + } while (z->num_bits <= 24); +} + +stbi_inline static unsigned int stbi__zreceive(stbi__zbuf *z, int n) +{ + unsigned int k; + if (z->num_bits < n) stbi__fill_bits(z); + k = z->code_buffer & ((1 << n) - 1); + z->code_buffer >>= n; + z->num_bits -= n; + return k; +} + +static int stbi__zhuffman_decode_slowpath(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b,s,k; + // not resolved by fast table, so compute it the slow way + // use jpeg approach, which requires MSbits at top + k = stbi__bit_reverse(a->code_buffer, 16); + for (s=STBI__ZFAST_BITS+1; ; ++s) + if (k < z->maxcode[s]) + break; + if (s >= 16) return -1; // invalid code! + // code size is s, so: + b = (k >> (16-s)) - z->firstcode[s] + z->firstsymbol[s]; + if (b >= STBI__ZNSYMS) return -1; // some data was corrupt somewhere! + if (z->size[b] != s) return -1; // was originally an assert, but report failure instead. + a->code_buffer >>= s; + a->num_bits -= s; + return z->value[b]; +} + +stbi_inline static int stbi__zhuffman_decode(stbi__zbuf *a, stbi__zhuffman *z) +{ + int b,s; + if (a->num_bits < 16) { + if (stbi__zeof(a)) { + return -1; /* report error for unexpected end of data. */ + } + stbi__fill_bits(a); + } + b = z->fast[a->code_buffer & STBI__ZFAST_MASK]; + if (b) { + s = b >> 9; + a->code_buffer >>= s; + a->num_bits -= s; + return b & 511; + } + return stbi__zhuffman_decode_slowpath(a, z); +} + +static int stbi__zexpand(stbi__zbuf *z, char *zout, int n) // need to make room for n bytes +{ + char *q; + unsigned int cur, limit, old_limit; + z->zout = zout; + if (!z->z_expandable) return stbi__err("output buffer limit","Corrupt PNG"); + cur = (unsigned int) (z->zout - z->zout_start); + limit = old_limit = (unsigned) (z->zout_end - z->zout_start); + if (UINT_MAX - cur < (unsigned) n) return stbi__err("outofmem", "Out of memory"); + while (cur + n > limit) { + if(limit > UINT_MAX / 2) return stbi__err("outofmem", "Out of memory"); + limit *= 2; + } + q = (char *) STBI_REALLOC_SIZED(z->zout_start, old_limit, limit); + STBI_NOTUSED(old_limit); + if (q == NULL) return stbi__err("outofmem", "Out of memory"); + z->zout_start = q; + z->zout = q + cur; + z->zout_end = q + limit; + return 1; +} + +static const int stbi__zlength_base[31] = { + 3,4,5,6,7,8,9,10,11,13, + 15,17,19,23,27,31,35,43,51,59, + 67,83,99,115,131,163,195,227,258,0,0 }; + +static const int stbi__zlength_extra[31]= +{ 0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0 }; + +static const int stbi__zdist_base[32] = { 1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193, +257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0}; + +static const int stbi__zdist_extra[32] = +{ 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13}; + +static int stbi__parse_huffman_block(stbi__zbuf *a) +{ + char *zout = a->zout; + for(;;) { + int z = stbi__zhuffman_decode(a, &a->z_length); + if (z < 256) { + if (z < 0) return stbi__err("bad huffman code","Corrupt PNG"); // error in huffman codes + if (zout >= a->zout_end) { + if (!stbi__zexpand(a, zout, 1)) return 0; + zout = a->zout; + } + *zout++ = (char) z; + } else { + stbi_uc *p; + int len,dist; + if (z == 256) { + a->zout = zout; + return 1; + } + if (z >= 286) return stbi__err("bad huffman code","Corrupt PNG"); // per DEFLATE, length codes 286 and 287 must not appear in compressed data + z -= 257; + len = stbi__zlength_base[z]; + if (stbi__zlength_extra[z]) len += stbi__zreceive(a, stbi__zlength_extra[z]); + z = stbi__zhuffman_decode(a, &a->z_distance); + if (z < 0 || z >= 30) return stbi__err("bad huffman code","Corrupt PNG"); // per DEFLATE, distance codes 30 and 31 must not appear in compressed data + dist = stbi__zdist_base[z]; + if (stbi__zdist_extra[z]) dist += stbi__zreceive(a, stbi__zdist_extra[z]); + if (zout - a->zout_start < dist) return stbi__err("bad dist","Corrupt PNG"); + if (zout + len > a->zout_end) { + if (!stbi__zexpand(a, zout, len)) return 0; + zout = a->zout; + } + p = (stbi_uc *) (zout - dist); + if (dist == 1) { // run of one byte; common in images. + stbi_uc v = *p; + if (len) { do *zout++ = v; while (--len); } + } else { + if (len) { do *zout++ = *p++; while (--len); } + } + } + } +} + +static int stbi__compute_huffman_codes(stbi__zbuf *a) +{ + static const stbi_uc length_dezigzag[19] = { 16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15 }; + stbi__zhuffman z_codelength; + stbi_uc lencodes[286+32+137];//padding for maximum single op + stbi_uc codelength_sizes[19]; + int i,n; + + int hlit = stbi__zreceive(a,5) + 257; + int hdist = stbi__zreceive(a,5) + 1; + int hclen = stbi__zreceive(a,4) + 4; + int ntot = hlit + hdist; + + memset(codelength_sizes, 0, sizeof(codelength_sizes)); + for (i=0; i < hclen; ++i) { + int s = stbi__zreceive(a,3); + codelength_sizes[length_dezigzag[i]] = (stbi_uc) s; + } + if (!stbi__zbuild_huffman(&z_codelength, codelength_sizes, 19)) return 0; + + n = 0; + while (n < ntot) { + int c = stbi__zhuffman_decode(a, &z_codelength); + if (c < 0 || c >= 19) return stbi__err("bad codelengths", "Corrupt PNG"); + if (c < 16) + lencodes[n++] = (stbi_uc) c; + else { + stbi_uc fill = 0; + if (c == 16) { + c = stbi__zreceive(a,2)+3; + if (n == 0) return stbi__err("bad codelengths", "Corrupt PNG"); + fill = lencodes[n-1]; + } else if (c == 17) { + c = stbi__zreceive(a,3)+3; + } else if (c == 18) { + c = stbi__zreceive(a,7)+11; + } else { + return stbi__err("bad codelengths", "Corrupt PNG"); + } + if (ntot - n < c) return stbi__err("bad codelengths", "Corrupt PNG"); + memset(lencodes+n, fill, c); + n += c; + } + } + if (n != ntot) return stbi__err("bad codelengths","Corrupt PNG"); + if (!stbi__zbuild_huffman(&a->z_length, lencodes, hlit)) return 0; + if (!stbi__zbuild_huffman(&a->z_distance, lencodes+hlit, hdist)) return 0; + return 1; +} + +static int stbi__parse_uncompressed_block(stbi__zbuf *a) +{ + stbi_uc header[4]; + int len,nlen,k; + if (a->num_bits & 7) + stbi__zreceive(a, a->num_bits & 7); // discard + // drain the bit-packed data into header + k = 0; + while (a->num_bits > 0) { + header[k++] = (stbi_uc) (a->code_buffer & 255); // suppress MSVC run-time check + a->code_buffer >>= 8; + a->num_bits -= 8; + } + if (a->num_bits < 0) return stbi__err("zlib corrupt","Corrupt PNG"); + // now fill header the normal way + while (k < 4) + header[k++] = stbi__zget8(a); + len = header[1] * 256 + header[0]; + nlen = header[3] * 256 + header[2]; + if (nlen != (len ^ 0xffff)) return stbi__err("zlib corrupt","Corrupt PNG"); + if (a->zbuffer + len > a->zbuffer_end) return stbi__err("read past buffer","Corrupt PNG"); + if (a->zout + len > a->zout_end) + if (!stbi__zexpand(a, a->zout, len)) return 0; + memcpy(a->zout, a->zbuffer, len); + a->zbuffer += len; + a->zout += len; + return 1; +} + +static int stbi__parse_zlib_header(stbi__zbuf *a) +{ + int cmf = stbi__zget8(a); + int cm = cmf & 15; + /* int cinfo = cmf >> 4; */ + int flg = stbi__zget8(a); + if (stbi__zeof(a)) return stbi__err("bad zlib header","Corrupt PNG"); // zlib spec + if ((cmf*256+flg) % 31 != 0) return stbi__err("bad zlib header","Corrupt PNG"); // zlib spec + if (flg & 32) return stbi__err("no preset dict","Corrupt PNG"); // preset dictionary not allowed in png + if (cm != 8) return stbi__err("bad compression","Corrupt PNG"); // DEFLATE required for png + // window = 1 << (8 + cinfo)... but who cares, we fully buffer output + return 1; +} + +static const stbi_uc stbi__zdefault_length[STBI__ZNSYMS] = +{ + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, + 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, 9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, + 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8 +}; +static const stbi_uc stbi__zdefault_distance[32] = +{ + 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5 +}; +/* +Init algorithm: +{ + int i; // use <= to match clearly with spec + for (i=0; i <= 143; ++i) stbi__zdefault_length[i] = 8; + for ( ; i <= 255; ++i) stbi__zdefault_length[i] = 9; + for ( ; i <= 279; ++i) stbi__zdefault_length[i] = 7; + for ( ; i <= 287; ++i) stbi__zdefault_length[i] = 8; + + for (i=0; i <= 31; ++i) stbi__zdefault_distance[i] = 5; +} +*/ + +static int stbi__parse_zlib(stbi__zbuf *a, int parse_header) +{ + int final, type; + if (parse_header) + if (!stbi__parse_zlib_header(a)) return 0; + a->num_bits = 0; + a->code_buffer = 0; + do { + final = stbi__zreceive(a,1); + type = stbi__zreceive(a,2); + if (type == 0) { + if (!stbi__parse_uncompressed_block(a)) return 0; + } else if (type == 3) { + return 0; + } else { + if (type == 1) { + // use fixed code lengths + if (!stbi__zbuild_huffman(&a->z_length , stbi__zdefault_length , STBI__ZNSYMS)) return 0; + if (!stbi__zbuild_huffman(&a->z_distance, stbi__zdefault_distance, 32)) return 0; + } else { + if (!stbi__compute_huffman_codes(a)) return 0; + } + if (!stbi__parse_huffman_block(a)) return 0; + } + } while (!final); + return 1; +} + +static int stbi__do_zlib(stbi__zbuf *a, char *obuf, int olen, int exp, int parse_header) +{ + a->zout_start = obuf; + a->zout = obuf; + a->zout_end = obuf + olen; + a->z_expandable = exp; + + return stbi__parse_zlib(a, parse_header); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize(const char *buffer, int len, int initial_size, int *outlen) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(initial_size); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, 1)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF char *stbi_zlib_decode_malloc(char const *buffer, int len, int *outlen) +{ + return stbi_zlib_decode_malloc_guesssize(buffer, len, 16384, outlen); +} + +STBIDEF char *stbi_zlib_decode_malloc_guesssize_headerflag(const char *buffer, int len, int initial_size, int *outlen, int parse_header) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(initial_size); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer + len; + if (stbi__do_zlib(&a, p, initial_size, 1, parse_header)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_buffer(char *obuffer, int olen, char const *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *) ibuffer; + a.zbuffer_end = (stbi_uc *) ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 1)) + return (int) (a.zout - a.zout_start); + else + return -1; +} + +STBIDEF char *stbi_zlib_decode_noheader_malloc(char const *buffer, int len, int *outlen) +{ + stbi__zbuf a; + char *p = (char *) stbi__malloc(16384); + if (p == NULL) return NULL; + a.zbuffer = (stbi_uc *) buffer; + a.zbuffer_end = (stbi_uc *) buffer+len; + if (stbi__do_zlib(&a, p, 16384, 1, 0)) { + if (outlen) *outlen = (int) (a.zout - a.zout_start); + return a.zout_start; + } else { + STBI_FREE(a.zout_start); + return NULL; + } +} + +STBIDEF int stbi_zlib_decode_noheader_buffer(char *obuffer, int olen, const char *ibuffer, int ilen) +{ + stbi__zbuf a; + a.zbuffer = (stbi_uc *) ibuffer; + a.zbuffer_end = (stbi_uc *) ibuffer + ilen; + if (stbi__do_zlib(&a, obuffer, olen, 0, 0)) + return (int) (a.zout - a.zout_start); + else + return -1; +} +#endif + +// public domain "baseline" PNG decoder v0.10 Sean Barrett 2006-11-18 +// simple implementation +// - only 8-bit samples +// - no CRC checking +// - allocates lots of intermediate memory +// - avoids problem of streaming data between subsystems +// - avoids explicit window management +// performance +// - uses stb_zlib, a PD zlib implementation with fast huffman decoding + +#ifndef STBI_NO_PNG +typedef struct +{ + stbi__uint32 length; + stbi__uint32 type; +} stbi__pngchunk; + +static stbi__pngchunk stbi__get_chunk_header(stbi__context *s) +{ + stbi__pngchunk c; + c.length = stbi__get32be(s); + c.type = stbi__get32be(s); + return c; +} + +static int stbi__check_png_header(stbi__context *s) +{ + static const stbi_uc png_sig[8] = { 137,80,78,71,13,10,26,10 }; + int i; + for (i=0; i < 8; ++i) + if (stbi__get8(s) != png_sig[i]) return stbi__err("bad png sig","Not a PNG"); + return 1; +} + +typedef struct +{ + stbi__context *s; + stbi_uc *idata, *expanded, *out; + int depth; +} stbi__png; + + +enum { + STBI__F_none=0, + STBI__F_sub=1, + STBI__F_up=2, + STBI__F_avg=3, + STBI__F_paeth=4, + // synthetic filters used for first scanline to avoid needing a dummy row of 0s + STBI__F_avg_first, + STBI__F_paeth_first +}; + +static stbi_uc first_row_filter[5] = +{ + STBI__F_none, + STBI__F_sub, + STBI__F_none, + STBI__F_avg_first, + STBI__F_paeth_first +}; + +static int stbi__paeth(int a, int b, int c) +{ + int p = a + b - c; + int pa = abs(p-a); + int pb = abs(p-b); + int pc = abs(p-c); + if (pa <= pb && pa <= pc) return a; + if (pb <= pc) return b; + return c; +} + +static const stbi_uc stbi__depth_scale_table[9] = { 0, 0xff, 0x55, 0, 0x11, 0,0,0, 0x01 }; + +// create the png data from post-deflated data +static int stbi__create_png_image_raw(stbi__png *a, stbi_uc *raw, stbi__uint32 raw_len, int out_n, stbi__uint32 x, stbi__uint32 y, int depth, int color) +{ + int bytes = (depth == 16? 2 : 1); + stbi__context *s = a->s; + stbi__uint32 i,j,stride = x*out_n*bytes; + stbi__uint32 img_len, img_width_bytes; + int k; + int img_n = s->img_n; // copy it into a local for later + + int output_bytes = out_n*bytes; + int filter_bytes = img_n*bytes; + int width = x; + + STBI_ASSERT(out_n == s->img_n || out_n == s->img_n+1); + a->out = (stbi_uc *) stbi__malloc_mad3(x, y, output_bytes, 0); // extra bytes to write off the end into + if (!a->out) return stbi__err("outofmem", "Out of memory"); + + if (!stbi__mad3sizes_valid(img_n, x, depth, 7)) return stbi__err("too large", "Corrupt PNG"); + img_width_bytes = (((img_n * x * depth) + 7) >> 3); + img_len = (img_width_bytes + 1) * y; + + // we used to check for exact match between raw_len and img_len on non-interlaced PNGs, + // but issue #276 reported a PNG in the wild that had extra data at the end (all zeros), + // so just check for raw_len < img_len always. + if (raw_len < img_len) return stbi__err("not enough pixels","Corrupt PNG"); + + for (j=0; j < y; ++j) { + stbi_uc *cur = a->out + stride*j; + stbi_uc *prior; + int filter = *raw++; + + if (filter > 4) + return stbi__err("invalid filter","Corrupt PNG"); + + if (depth < 8) { + if (img_width_bytes > x) return stbi__err("invalid width","Corrupt PNG"); + cur += x*out_n - img_width_bytes; // store output to the rightmost img_len bytes, so we can decode in place + filter_bytes = 1; + width = img_width_bytes; + } + prior = cur - stride; // bugfix: need to compute this after 'cur +=' computation above + + // if first row, use special filter that doesn't sample previous row + if (j == 0) filter = first_row_filter[filter]; + + // handle first byte explicitly + for (k=0; k < filter_bytes; ++k) { + switch (filter) { + case STBI__F_none : cur[k] = raw[k]; break; + case STBI__F_sub : cur[k] = raw[k]; break; + case STBI__F_up : cur[k] = STBI__BYTECAST(raw[k] + prior[k]); break; + case STBI__F_avg : cur[k] = STBI__BYTECAST(raw[k] + (prior[k]>>1)); break; + case STBI__F_paeth : cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(0,prior[k],0)); break; + case STBI__F_avg_first : cur[k] = raw[k]; break; + case STBI__F_paeth_first: cur[k] = raw[k]; break; + } + } + + if (depth == 8) { + if (img_n != out_n) + cur[img_n] = 255; // first pixel + raw += img_n; + cur += out_n; + prior += out_n; + } else if (depth == 16) { + if (img_n != out_n) { + cur[filter_bytes] = 255; // first pixel top byte + cur[filter_bytes+1] = 255; // first pixel bottom byte + } + raw += filter_bytes; + cur += output_bytes; + prior += output_bytes; + } else { + raw += 1; + cur += 1; + prior += 1; + } + + // this is a little gross, so that we don't switch per-pixel or per-component + if (depth < 8 || img_n == out_n) { + int nk = (width - 1)*filter_bytes; + #define STBI__CASE(f) \ + case f: \ + for (k=0; k < nk; ++k) + switch (filter) { + // "none" filter turns into a memcpy here; make that explicit. + case STBI__F_none: memcpy(cur, raw, nk); break; + STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k-filter_bytes]); } break; + STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; + STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k-filter_bytes])>>1)); } break; + STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],prior[k],prior[k-filter_bytes])); } break; + STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k-filter_bytes] >> 1)); } break; + STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k-filter_bytes],0,0)); } break; + } + #undef STBI__CASE + raw += nk; + } else { + STBI_ASSERT(img_n+1 == out_n); + #define STBI__CASE(f) \ + case f: \ + for (i=x-1; i >= 1; --i, cur[filter_bytes]=255,raw+=filter_bytes,cur+=output_bytes,prior+=output_bytes) \ + for (k=0; k < filter_bytes; ++k) + switch (filter) { + STBI__CASE(STBI__F_none) { cur[k] = raw[k]; } break; + STBI__CASE(STBI__F_sub) { cur[k] = STBI__BYTECAST(raw[k] + cur[k- output_bytes]); } break; + STBI__CASE(STBI__F_up) { cur[k] = STBI__BYTECAST(raw[k] + prior[k]); } break; + STBI__CASE(STBI__F_avg) { cur[k] = STBI__BYTECAST(raw[k] + ((prior[k] + cur[k- output_bytes])>>1)); } break; + STBI__CASE(STBI__F_paeth) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],prior[k],prior[k- output_bytes])); } break; + STBI__CASE(STBI__F_avg_first) { cur[k] = STBI__BYTECAST(raw[k] + (cur[k- output_bytes] >> 1)); } break; + STBI__CASE(STBI__F_paeth_first) { cur[k] = STBI__BYTECAST(raw[k] + stbi__paeth(cur[k- output_bytes],0,0)); } break; + } + #undef STBI__CASE + + // the loop above sets the high byte of the pixels' alpha, but for + // 16 bit png files we also need the low byte set. we'll do that here. + if (depth == 16) { + cur = a->out + stride*j; // start at the beginning of the row again + for (i=0; i < x; ++i,cur+=output_bytes) { + cur[filter_bytes+1] = 255; + } + } + } + } + + // we make a separate pass to expand bits to pixels; for performance, + // this could run two scanlines behind the above code, so it won't + // intefere with filtering but will still be in the cache. + if (depth < 8) { + for (j=0; j < y; ++j) { + stbi_uc *cur = a->out + stride*j; + stbi_uc *in = a->out + stride*j + x*out_n - img_width_bytes; + // unpack 1/2/4-bit into a 8-bit buffer. allows us to keep the common 8-bit path optimal at minimal cost for 1/2/4-bit + // png guarante byte alignment, if width is not multiple of 8/4/2 we'll decode dummy trailing data that will be skipped in the later loop + stbi_uc scale = (color == 0) ? stbi__depth_scale_table[depth] : 1; // scale grayscale values to 0..255 range + + // note that the final byte might overshoot and write more data than desired. + // we can allocate enough data that this never writes out of memory, but it + // could also overwrite the next scanline. can it overwrite non-empty data + // on the next scanline? yes, consider 1-pixel-wide scanlines with 1-bit-per-pixel. + // so we need to explicitly clamp the final ones + + if (depth == 4) { + for (k=x*img_n; k >= 2; k-=2, ++in) { + *cur++ = scale * ((*in >> 4) ); + *cur++ = scale * ((*in ) & 0x0f); + } + if (k > 0) *cur++ = scale * ((*in >> 4) ); + } else if (depth == 2) { + for (k=x*img_n; k >= 4; k-=4, ++in) { + *cur++ = scale * ((*in >> 6) ); + *cur++ = scale * ((*in >> 4) & 0x03); + *cur++ = scale * ((*in >> 2) & 0x03); + *cur++ = scale * ((*in ) & 0x03); + } + if (k > 0) *cur++ = scale * ((*in >> 6) ); + if (k > 1) *cur++ = scale * ((*in >> 4) & 0x03); + if (k > 2) *cur++ = scale * ((*in >> 2) & 0x03); + } else if (depth == 1) { + for (k=x*img_n; k >= 8; k-=8, ++in) { + *cur++ = scale * ((*in >> 7) ); + *cur++ = scale * ((*in >> 6) & 0x01); + *cur++ = scale * ((*in >> 5) & 0x01); + *cur++ = scale * ((*in >> 4) & 0x01); + *cur++ = scale * ((*in >> 3) & 0x01); + *cur++ = scale * ((*in >> 2) & 0x01); + *cur++ = scale * ((*in >> 1) & 0x01); + *cur++ = scale * ((*in ) & 0x01); + } + if (k > 0) *cur++ = scale * ((*in >> 7) ); + if (k > 1) *cur++ = scale * ((*in >> 6) & 0x01); + if (k > 2) *cur++ = scale * ((*in >> 5) & 0x01); + if (k > 3) *cur++ = scale * ((*in >> 4) & 0x01); + if (k > 4) *cur++ = scale * ((*in >> 3) & 0x01); + if (k > 5) *cur++ = scale * ((*in >> 2) & 0x01); + if (k > 6) *cur++ = scale * ((*in >> 1) & 0x01); + } + if (img_n != out_n) { + int q; + // insert alpha = 255 + cur = a->out + stride*j; + if (img_n == 1) { + for (q=x-1; q >= 0; --q) { + cur[q*2+1] = 255; + cur[q*2+0] = cur[q]; + } + } else { + STBI_ASSERT(img_n == 3); + for (q=x-1; q >= 0; --q) { + cur[q*4+3] = 255; + cur[q*4+2] = cur[q*3+2]; + cur[q*4+1] = cur[q*3+1]; + cur[q*4+0] = cur[q*3+0]; + } + } + } + } + } else if (depth == 16) { + // force the image data from big-endian to platform-native. + // this is done in a separate pass due to the decoding relying + // on the data being untouched, but could probably be done + // per-line during decode if care is taken. + stbi_uc *cur = a->out; + stbi__uint16 *cur16 = (stbi__uint16*)cur; + + for(i=0; i < x*y*out_n; ++i,cur16++,cur+=2) { + *cur16 = (cur[0] << 8) | cur[1]; + } + } + + return 1; +} + +static int stbi__create_png_image(stbi__png *a, stbi_uc *image_data, stbi__uint32 image_data_len, int out_n, int depth, int color, int interlaced) +{ + int bytes = (depth == 16 ? 2 : 1); + int out_bytes = out_n * bytes; + stbi_uc *final; + int p; + if (!interlaced) + return stbi__create_png_image_raw(a, image_data, image_data_len, out_n, a->s->img_x, a->s->img_y, depth, color); + + // de-interlacing + final = (stbi_uc *) stbi__malloc_mad3(a->s->img_x, a->s->img_y, out_bytes, 0); + if (!final) return stbi__err("outofmem", "Out of memory"); + for (p=0; p < 7; ++p) { + int xorig[] = { 0,4,0,2,0,1,0 }; + int yorig[] = { 0,0,4,0,2,0,1 }; + int xspc[] = { 8,8,4,4,2,2,1 }; + int yspc[] = { 8,8,8,4,4,2,2 }; + int i,j,x,y; + // pass1_x[4] = 0, pass1_x[5] = 1, pass1_x[12] = 1 + x = (a->s->img_x - xorig[p] + xspc[p]-1) / xspc[p]; + y = (a->s->img_y - yorig[p] + yspc[p]-1) / yspc[p]; + if (x && y) { + stbi__uint32 img_len = ((((a->s->img_n * x * depth) + 7) >> 3) + 1) * y; + if (!stbi__create_png_image_raw(a, image_data, image_data_len, out_n, x, y, depth, color)) { + STBI_FREE(final); + return 0; + } + for (j=0; j < y; ++j) { + for (i=0; i < x; ++i) { + int out_y = j*yspc[p]+yorig[p]; + int out_x = i*xspc[p]+xorig[p]; + memcpy(final + out_y*a->s->img_x*out_bytes + out_x*out_bytes, + a->out + (j*x+i)*out_bytes, out_bytes); + } + } + STBI_FREE(a->out); + image_data += img_len; + image_data_len -= img_len; + } + } + a->out = final; + + return 1; +} + +static int stbi__compute_transparency(stbi__png *z, stbi_uc tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + // compute color-based transparency, assuming we've + // already got 255 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i=0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 255); + p += 2; + } + } else { + for (i=0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__compute_transparency16(stbi__png *z, stbi__uint16 tc[3], int out_n) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi__uint16 *p = (stbi__uint16*) z->out; + + // compute color-based transparency, assuming we've + // already got 65535 as the alpha value in the output + STBI_ASSERT(out_n == 2 || out_n == 4); + + if (out_n == 2) { + for (i = 0; i < pixel_count; ++i) { + p[1] = (p[0] == tc[0] ? 0 : 65535); + p += 2; + } + } else { + for (i = 0; i < pixel_count; ++i) { + if (p[0] == tc[0] && p[1] == tc[1] && p[2] == tc[2]) + p[3] = 0; + p += 4; + } + } + return 1; +} + +static int stbi__expand_png_palette(stbi__png *a, stbi_uc *palette, int len, int pal_img_n) +{ + stbi__uint32 i, pixel_count = a->s->img_x * a->s->img_y; + stbi_uc *p, *temp_out, *orig = a->out; + + p = (stbi_uc *) stbi__malloc_mad2(pixel_count, pal_img_n, 0); + if (p == NULL) return stbi__err("outofmem", "Out of memory"); + + // between here and free(out) below, exitting would leak + temp_out = p; + + if (pal_img_n == 3) { + for (i=0; i < pixel_count; ++i) { + int n = orig[i]*4; + p[0] = palette[n ]; + p[1] = palette[n+1]; + p[2] = palette[n+2]; + p += 3; + } + } else { + for (i=0; i < pixel_count; ++i) { + int n = orig[i]*4; + p[0] = palette[n ]; + p[1] = palette[n+1]; + p[2] = palette[n+2]; + p[3] = palette[n+3]; + p += 4; + } + } + STBI_FREE(a->out); + a->out = temp_out; + + STBI_NOTUSED(len); + + return 1; +} + +static int stbi__unpremultiply_on_load_global = 0; +static int stbi__de_iphone_flag_global = 0; + +STBIDEF void stbi_set_unpremultiply_on_load(int flag_true_if_should_unpremultiply) +{ + stbi__unpremultiply_on_load_global = flag_true_if_should_unpremultiply; +} + +STBIDEF void stbi_convert_iphone_png_to_rgb(int flag_true_if_should_convert) +{ + stbi__de_iphone_flag_global = flag_true_if_should_convert; +} + +#ifndef STBI_THREAD_LOCAL +#define stbi__unpremultiply_on_load stbi__unpremultiply_on_load_global +#define stbi__de_iphone_flag stbi__de_iphone_flag_global +#else +static STBI_THREAD_LOCAL int stbi__unpremultiply_on_load_local, stbi__unpremultiply_on_load_set; +static STBI_THREAD_LOCAL int stbi__de_iphone_flag_local, stbi__de_iphone_flag_set; + +STBIDEF void stbi_set_unpremultiply_on_load_thread(int flag_true_if_should_unpremultiply) +{ + stbi__unpremultiply_on_load_local = flag_true_if_should_unpremultiply; + stbi__unpremultiply_on_load_set = 1; +} + +STBIDEF void stbi_convert_iphone_png_to_rgb_thread(int flag_true_if_should_convert) +{ + stbi__de_iphone_flag_local = flag_true_if_should_convert; + stbi__de_iphone_flag_set = 1; +} + +#define stbi__unpremultiply_on_load (stbi__unpremultiply_on_load_set \ + ? stbi__unpremultiply_on_load_local \ + : stbi__unpremultiply_on_load_global) +#define stbi__de_iphone_flag (stbi__de_iphone_flag_set \ + ? stbi__de_iphone_flag_local \ + : stbi__de_iphone_flag_global) +#endif // STBI_THREAD_LOCAL + +static void stbi__de_iphone(stbi__png *z) +{ + stbi__context *s = z->s; + stbi__uint32 i, pixel_count = s->img_x * s->img_y; + stbi_uc *p = z->out; + + if (s->img_out_n == 3) { // convert bgr to rgb + for (i=0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 3; + } + } else { + STBI_ASSERT(s->img_out_n == 4); + if (stbi__unpremultiply_on_load) { + // convert bgr to rgb and unpremultiply + for (i=0; i < pixel_count; ++i) { + stbi_uc a = p[3]; + stbi_uc t = p[0]; + if (a) { + stbi_uc half = a / 2; + p[0] = (p[2] * 255 + half) / a; + p[1] = (p[1] * 255 + half) / a; + p[2] = ( t * 255 + half) / a; + } else { + p[0] = p[2]; + p[2] = t; + } + p += 4; + } + } else { + // convert bgr to rgb + for (i=0; i < pixel_count; ++i) { + stbi_uc t = p[0]; + p[0] = p[2]; + p[2] = t; + p += 4; + } + } + } +} + +#define STBI__PNG_TYPE(a,b,c,d) (((unsigned) (a) << 24) + ((unsigned) (b) << 16) + ((unsigned) (c) << 8) + (unsigned) (d)) + +static int stbi__parse_png_file(stbi__png *z, int scan, int req_comp) +{ + stbi_uc palette[1024], pal_img_n=0; + stbi_uc has_trans=0, tc[3]={0}; + stbi__uint16 tc16[3]; + stbi__uint32 ioff=0, idata_limit=0, i, pal_len=0; + int first=1,k,interlace=0, color=0, is_iphone=0; + stbi__context *s = z->s; + + z->expanded = NULL; + z->idata = NULL; + z->out = NULL; + + if (!stbi__check_png_header(s)) return 0; + + if (scan == STBI__SCAN_type) return 1; + + for (;;) { + stbi__pngchunk c = stbi__get_chunk_header(s); + switch (c.type) { + case STBI__PNG_TYPE('C','g','B','I'): + is_iphone = 1; + stbi__skip(s, c.length); + break; + case STBI__PNG_TYPE('I','H','D','R'): { + int comp,filter; + if (!first) return stbi__err("multiple IHDR","Corrupt PNG"); + first = 0; + if (c.length != 13) return stbi__err("bad IHDR len","Corrupt PNG"); + s->img_x = stbi__get32be(s); + s->img_y = stbi__get32be(s); + if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + z->depth = stbi__get8(s); if (z->depth != 1 && z->depth != 2 && z->depth != 4 && z->depth != 8 && z->depth != 16) return stbi__err("1/2/4/8/16-bit only","PNG not supported: 1/2/4/8/16-bit only"); + color = stbi__get8(s); if (color > 6) return stbi__err("bad ctype","Corrupt PNG"); + if (color == 3 && z->depth == 16) return stbi__err("bad ctype","Corrupt PNG"); + if (color == 3) pal_img_n = 3; else if (color & 1) return stbi__err("bad ctype","Corrupt PNG"); + comp = stbi__get8(s); if (comp) return stbi__err("bad comp method","Corrupt PNG"); + filter= stbi__get8(s); if (filter) return stbi__err("bad filter method","Corrupt PNG"); + interlace = stbi__get8(s); if (interlace>1) return stbi__err("bad interlace method","Corrupt PNG"); + if (!s->img_x || !s->img_y) return stbi__err("0-pixel image","Corrupt PNG"); + if (!pal_img_n) { + s->img_n = (color & 2 ? 3 : 1) + (color & 4 ? 1 : 0); + if ((1 << 30) / s->img_x / s->img_n < s->img_y) return stbi__err("too large", "Image too large to decode"); + } else { + // if paletted, then pal_n is our final components, and + // img_n is # components to decompress/filter. + s->img_n = 1; + if ((1 << 30) / s->img_x / 4 < s->img_y) return stbi__err("too large","Corrupt PNG"); + } + // even with SCAN_header, have to scan to see if we have a tRNS + break; + } + + case STBI__PNG_TYPE('P','L','T','E'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (c.length > 256*3) return stbi__err("invalid PLTE","Corrupt PNG"); + pal_len = c.length / 3; + if (pal_len * 3 != c.length) return stbi__err("invalid PLTE","Corrupt PNG"); + for (i=0; i < pal_len; ++i) { + palette[i*4+0] = stbi__get8(s); + palette[i*4+1] = stbi__get8(s); + palette[i*4+2] = stbi__get8(s); + palette[i*4+3] = 255; + } + break; + } + + case STBI__PNG_TYPE('t','R','N','S'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (z->idata) return stbi__err("tRNS after IDAT","Corrupt PNG"); + if (pal_img_n) { + if (scan == STBI__SCAN_header) { s->img_n = 4; return 1; } + if (pal_len == 0) return stbi__err("tRNS before PLTE","Corrupt PNG"); + if (c.length > pal_len) return stbi__err("bad tRNS len","Corrupt PNG"); + pal_img_n = 4; + for (i=0; i < c.length; ++i) + palette[i*4+3] = stbi__get8(s); + } else { + if (!(s->img_n & 1)) return stbi__err("tRNS with alpha","Corrupt PNG"); + if (c.length != (stbi__uint32) s->img_n*2) return stbi__err("bad tRNS len","Corrupt PNG"); + has_trans = 1; + // non-paletted with tRNS = constant alpha. if header-scanning, we can stop now. + if (scan == STBI__SCAN_header) { ++s->img_n; return 1; } + if (z->depth == 16) { + for (k = 0; k < s->img_n; ++k) tc16[k] = (stbi__uint16)stbi__get16be(s); // copy the values as-is + } else { + for (k = 0; k < s->img_n; ++k) tc[k] = (stbi_uc)(stbi__get16be(s) & 255) * stbi__depth_scale_table[z->depth]; // non 8-bit images will be larger + } + } + break; + } + + case STBI__PNG_TYPE('I','D','A','T'): { + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (pal_img_n && !pal_len) return stbi__err("no PLTE","Corrupt PNG"); + if (scan == STBI__SCAN_header) { + // header scan definitely stops at first IDAT + if (pal_img_n) + s->img_n = pal_img_n; + return 1; + } + if (c.length > (1u << 30)) return stbi__err("IDAT size limit", "IDAT section larger than 2^30 bytes"); + if ((int)(ioff + c.length) < (int)ioff) return 0; + if (ioff + c.length > idata_limit) { + stbi__uint32 idata_limit_old = idata_limit; + stbi_uc *p; + if (idata_limit == 0) idata_limit = c.length > 4096 ? c.length : 4096; + while (ioff + c.length > idata_limit) + idata_limit *= 2; + STBI_NOTUSED(idata_limit_old); + p = (stbi_uc *) STBI_REALLOC_SIZED(z->idata, idata_limit_old, idata_limit); if (p == NULL) return stbi__err("outofmem", "Out of memory"); + z->idata = p; + } + if (!stbi__getn(s, z->idata+ioff,c.length)) return stbi__err("outofdata","Corrupt PNG"); + ioff += c.length; + break; + } + + case STBI__PNG_TYPE('I','E','N','D'): { + stbi__uint32 raw_len, bpl; + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if (scan != STBI__SCAN_load) return 1; + if (z->idata == NULL) return stbi__err("no IDAT","Corrupt PNG"); + // initial guess for decoded data size to avoid unnecessary reallocs + bpl = (s->img_x * z->depth + 7) / 8; // bytes per line, per component + raw_len = bpl * s->img_y * s->img_n /* pixels */ + s->img_y /* filter mode per row */; + z->expanded = (stbi_uc *) stbi_zlib_decode_malloc_guesssize_headerflag((char *) z->idata, ioff, raw_len, (int *) &raw_len, !is_iphone); + if (z->expanded == NULL) return 0; // zlib should set error + STBI_FREE(z->idata); z->idata = NULL; + if ((req_comp == s->img_n+1 && req_comp != 3 && !pal_img_n) || has_trans) + s->img_out_n = s->img_n+1; + else + s->img_out_n = s->img_n; + if (!stbi__create_png_image(z, z->expanded, raw_len, s->img_out_n, z->depth, color, interlace)) return 0; + if (has_trans) { + if (z->depth == 16) { + if (!stbi__compute_transparency16(z, tc16, s->img_out_n)) return 0; + } else { + if (!stbi__compute_transparency(z, tc, s->img_out_n)) return 0; + } + } + if (is_iphone && stbi__de_iphone_flag && s->img_out_n > 2) + stbi__de_iphone(z); + if (pal_img_n) { + // pal_img_n == 3 or 4 + s->img_n = pal_img_n; // record the actual colors we had + s->img_out_n = pal_img_n; + if (req_comp >= 3) s->img_out_n = req_comp; + if (!stbi__expand_png_palette(z, palette, pal_len, s->img_out_n)) + return 0; + } else if (has_trans) { + // non-paletted image with tRNS -> source image has (constant) alpha + ++s->img_n; + } + STBI_FREE(z->expanded); z->expanded = NULL; + // end of PNG chunk, read and skip CRC + stbi__get32be(s); + return 1; + } + + default: + // if critical, fail + if (first) return stbi__err("first not IHDR", "Corrupt PNG"); + if ((c.type & (1 << 29)) == 0) { + #ifndef STBI_NO_FAILURE_STRINGS + // not threadsafe + static char invalid_chunk[] = "XXXX PNG chunk not known"; + invalid_chunk[0] = STBI__BYTECAST(c.type >> 24); + invalid_chunk[1] = STBI__BYTECAST(c.type >> 16); + invalid_chunk[2] = STBI__BYTECAST(c.type >> 8); + invalid_chunk[3] = STBI__BYTECAST(c.type >> 0); + #endif + return stbi__err(invalid_chunk, "PNG not supported: unknown PNG chunk type"); + } + stbi__skip(s, c.length); + break; + } + // end of PNG chunk, read and skip CRC + stbi__get32be(s); + } +} + +static void *stbi__do_png(stbi__png *p, int *x, int *y, int *n, int req_comp, stbi__result_info *ri) +{ + void *result=NULL; + if (req_comp < 0 || req_comp > 4) return stbi__errpuc("bad req_comp", "Internal error"); + if (stbi__parse_png_file(p, STBI__SCAN_load, req_comp)) { + if (p->depth <= 8) + ri->bits_per_channel = 8; + else if (p->depth == 16) + ri->bits_per_channel = 16; + else + return stbi__errpuc("bad bits_per_channel", "PNG not supported: unsupported color depth"); + result = p->out; + p->out = NULL; + if (req_comp && req_comp != p->s->img_out_n) { + if (ri->bits_per_channel == 8) + result = stbi__convert_format((unsigned char *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + else + result = stbi__convert_format16((stbi__uint16 *) result, p->s->img_out_n, req_comp, p->s->img_x, p->s->img_y); + p->s->img_out_n = req_comp; + if (result == NULL) return result; + } + *x = p->s->img_x; + *y = p->s->img_y; + if (n) *n = p->s->img_n; + } + STBI_FREE(p->out); p->out = NULL; + STBI_FREE(p->expanded); p->expanded = NULL; + STBI_FREE(p->idata); p->idata = NULL; + + return result; +} + +static void *stbi__png_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi__png p; + p.s = s; + return stbi__do_png(&p, x,y,comp,req_comp, ri); +} + +static int stbi__png_test(stbi__context *s) +{ + int r; + r = stbi__check_png_header(s); + stbi__rewind(s); + return r; +} + +static int stbi__png_info_raw(stbi__png *p, int *x, int *y, int *comp) +{ + if (!stbi__parse_png_file(p, STBI__SCAN_header, 0)) { + stbi__rewind( p->s ); + return 0; + } + if (x) *x = p->s->img_x; + if (y) *y = p->s->img_y; + if (comp) *comp = p->s->img_n; + return 1; +} + +static int stbi__png_info(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__png p; + p.s = s; + return stbi__png_info_raw(&p, x, y, comp); +} + +static int stbi__png_is16(stbi__context *s) +{ + stbi__png p; + p.s = s; + if (!stbi__png_info_raw(&p, NULL, NULL, NULL)) + return 0; + if (p.depth != 16) { + stbi__rewind(p.s); + return 0; + } + return 1; +} +#endif + +// Microsoft/Windows BMP image + +#ifndef STBI_NO_BMP +static int stbi__bmp_test_raw(stbi__context *s) +{ + int r; + int sz; + if (stbi__get8(s) != 'B') return 0; + if (stbi__get8(s) != 'M') return 0; + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + stbi__get32le(s); // discard data offset + sz = stbi__get32le(s); + r = (sz == 12 || sz == 40 || sz == 56 || sz == 108 || sz == 124); + return r; +} + +static int stbi__bmp_test(stbi__context *s) +{ + int r = stbi__bmp_test_raw(s); + stbi__rewind(s); + return r; +} + + +// returns 0..31 for the highest set bit +static int stbi__high_bit(unsigned int z) +{ + int n=0; + if (z == 0) return -1; + if (z >= 0x10000) { n += 16; z >>= 16; } + if (z >= 0x00100) { n += 8; z >>= 8; } + if (z >= 0x00010) { n += 4; z >>= 4; } + if (z >= 0x00004) { n += 2; z >>= 2; } + if (z >= 0x00002) { n += 1;/* >>= 1;*/ } + return n; +} + +static int stbi__bitcount(unsigned int a) +{ + a = (a & 0x55555555) + ((a >> 1) & 0x55555555); // max 2 + a = (a & 0x33333333) + ((a >> 2) & 0x33333333); // max 4 + a = (a + (a >> 4)) & 0x0f0f0f0f; // max 8 per 4, now 8 bits + a = (a + (a >> 8)); // max 16 per 8 bits + a = (a + (a >> 16)); // max 32 per 8 bits + return a & 0xff; +} + +// extract an arbitrarily-aligned N-bit value (N=bits) +// from v, and then make it 8-bits long and fractionally +// extend it to full full range. +static int stbi__shiftsigned(unsigned int v, int shift, int bits) +{ + static unsigned int mul_table[9] = { + 0, + 0xff/*0b11111111*/, 0x55/*0b01010101*/, 0x49/*0b01001001*/, 0x11/*0b00010001*/, + 0x21/*0b00100001*/, 0x41/*0b01000001*/, 0x81/*0b10000001*/, 0x01/*0b00000001*/, + }; + static unsigned int shift_table[9] = { + 0, 0,0,1,0,2,4,6,0, + }; + if (shift < 0) + v <<= -shift; + else + v >>= shift; + STBI_ASSERT(v < 256); + v >>= (8-bits); + STBI_ASSERT(bits >= 0 && bits <= 8); + return (int) ((unsigned) v * mul_table[bits]) >> shift_table[bits]; +} + +typedef struct +{ + int bpp, offset, hsz; + unsigned int mr,mg,mb,ma, all_a; + int extra_read; +} stbi__bmp_data; + +static int stbi__bmp_set_mask_defaults(stbi__bmp_data *info, int compress) +{ + // BI_BITFIELDS specifies masks explicitly, don't override + if (compress == 3) + return 1; + + if (compress == 0) { + if (info->bpp == 16) { + info->mr = 31u << 10; + info->mg = 31u << 5; + info->mb = 31u << 0; + } else if (info->bpp == 32) { + info->mr = 0xffu << 16; + info->mg = 0xffu << 8; + info->mb = 0xffu << 0; + info->ma = 0xffu << 24; + info->all_a = 0; // if all_a is 0 at end, then we loaded alpha channel but it was all 0 + } else { + // otherwise, use defaults, which is all-0 + info->mr = info->mg = info->mb = info->ma = 0; + } + return 1; + } + return 0; // error +} + +static void *stbi__bmp_parse_header(stbi__context *s, stbi__bmp_data *info) +{ + int hsz; + if (stbi__get8(s) != 'B' || stbi__get8(s) != 'M') return stbi__errpuc("not BMP", "Corrupt BMP"); + stbi__get32le(s); // discard filesize + stbi__get16le(s); // discard reserved + stbi__get16le(s); // discard reserved + info->offset = stbi__get32le(s); + info->hsz = hsz = stbi__get32le(s); + info->mr = info->mg = info->mb = info->ma = 0; + info->extra_read = 14; + + if (info->offset < 0) return stbi__errpuc("bad BMP", "bad BMP"); + + if (hsz != 12 && hsz != 40 && hsz != 56 && hsz != 108 && hsz != 124) return stbi__errpuc("unknown BMP", "BMP type not supported: unknown"); + if (hsz == 12) { + s->img_x = stbi__get16le(s); + s->img_y = stbi__get16le(s); + } else { + s->img_x = stbi__get32le(s); + s->img_y = stbi__get32le(s); + } + if (stbi__get16le(s) != 1) return stbi__errpuc("bad BMP", "bad BMP"); + info->bpp = stbi__get16le(s); + if (hsz != 12) { + int compress = stbi__get32le(s); + if (compress == 1 || compress == 2) return stbi__errpuc("BMP RLE", "BMP type not supported: RLE"); + if (compress >= 4) return stbi__errpuc("BMP JPEG/PNG", "BMP type not supported: unsupported compression"); // this includes PNG/JPEG modes + if (compress == 3 && info->bpp != 16 && info->bpp != 32) return stbi__errpuc("bad BMP", "bad BMP"); // bitfields requires 16 or 32 bits/pixel + stbi__get32le(s); // discard sizeof + stbi__get32le(s); // discard hres + stbi__get32le(s); // discard vres + stbi__get32le(s); // discard colorsused + stbi__get32le(s); // discard max important + if (hsz == 40 || hsz == 56) { + if (hsz == 56) { + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + stbi__get32le(s); + } + if (info->bpp == 16 || info->bpp == 32) { + if (compress == 0) { + stbi__bmp_set_mask_defaults(info, compress); + } else if (compress == 3) { + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + info->extra_read += 12; + // not documented, but generated by photoshop and handled by mspaint + if (info->mr == info->mg && info->mg == info->mb) { + // ?!?!? + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else + return stbi__errpuc("bad BMP", "bad BMP"); + } + } else { + // V4/V5 header + int i; + if (hsz != 108 && hsz != 124) + return stbi__errpuc("bad BMP", "bad BMP"); + info->mr = stbi__get32le(s); + info->mg = stbi__get32le(s); + info->mb = stbi__get32le(s); + info->ma = stbi__get32le(s); + if (compress != 3) // override mr/mg/mb unless in BI_BITFIELDS mode, as per docs + stbi__bmp_set_mask_defaults(info, compress); + stbi__get32le(s); // discard color space + for (i=0; i < 12; ++i) + stbi__get32le(s); // discard color space parameters + if (hsz == 124) { + stbi__get32le(s); // discard rendering intent + stbi__get32le(s); // discard offset of profile data + stbi__get32le(s); // discard size of profile data + stbi__get32le(s); // discard reserved + } + } + } + return (void *) 1; +} + + +static void *stbi__bmp_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *out; + unsigned int mr=0,mg=0,mb=0,ma=0, all_a; + stbi_uc pal[256][4]; + int psize=0,i,j,width; + int flip_vertically, pad, target; + stbi__bmp_data info; + STBI_NOTUSED(ri); + + info.all_a = 255; + if (stbi__bmp_parse_header(s, &info) == NULL) + return NULL; // error code already set + + flip_vertically = ((int) s->img_y) > 0; + s->img_y = abs((int) s->img_y); + + if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + mr = info.mr; + mg = info.mg; + mb = info.mb; + ma = info.ma; + all_a = info.all_a; + + if (info.hsz == 12) { + if (info.bpp < 24) + psize = (info.offset - info.extra_read - 24) / 3; + } else { + if (info.bpp < 16) + psize = (info.offset - info.extra_read - info.hsz) >> 2; + } + if (psize == 0) { + // accept some number of extra bytes after the header, but if the offset points either to before + // the header ends or implies a large amount of extra data, reject the file as malformed + int bytes_read_so_far = s->callback_already_read + (int)(s->img_buffer - s->img_buffer_original); + int header_limit = 1024; // max we actually read is below 256 bytes currently. + int extra_data_limit = 256*4; // what ordinarily goes here is a palette; 256 entries*4 bytes is its max size. + if (bytes_read_so_far <= 0 || bytes_read_so_far > header_limit) { + return stbi__errpuc("bad header", "Corrupt BMP"); + } + // we established that bytes_read_so_far is positive and sensible. + // the first half of this test rejects offsets that are either too small positives, or + // negative, and guarantees that info.offset >= bytes_read_so_far > 0. this in turn + // ensures the number computed in the second half of the test can't overflow. + if (info.offset < bytes_read_so_far || info.offset - bytes_read_so_far > extra_data_limit) { + return stbi__errpuc("bad offset", "Corrupt BMP"); + } else { + stbi__skip(s, info.offset - bytes_read_so_far); + } + } + + if (info.bpp == 24 && ma == 0xff000000) + s->img_n = 3; + else + s->img_n = ma ? 4 : 3; + if (req_comp && req_comp >= 3) // we can directly decode 3 or 4 + target = req_comp; + else + target = s->img_n; // if they want monochrome, we'll post-convert + + // sanity-check size + if (!stbi__mad3sizes_valid(target, s->img_x, s->img_y, 0)) + return stbi__errpuc("too large", "Corrupt BMP"); + + out = (stbi_uc *) stbi__malloc_mad3(target, s->img_x, s->img_y, 0); + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + if (info.bpp < 16) { + int z=0; + if (psize == 0 || psize > 256) { STBI_FREE(out); return stbi__errpuc("invalid", "Corrupt BMP"); } + for (i=0; i < psize; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + if (info.hsz != 12) stbi__get8(s); + pal[i][3] = 255; + } + stbi__skip(s, info.offset - info.extra_read - info.hsz - psize * (info.hsz == 12 ? 3 : 4)); + if (info.bpp == 1) width = (s->img_x + 7) >> 3; + else if (info.bpp == 4) width = (s->img_x + 1) >> 1; + else if (info.bpp == 8) width = s->img_x; + else { STBI_FREE(out); return stbi__errpuc("bad bpp", "Corrupt BMP"); } + pad = (-width)&3; + if (info.bpp == 1) { + for (j=0; j < (int) s->img_y; ++j) { + int bit_offset = 7, v = stbi__get8(s); + for (i=0; i < (int) s->img_x; ++i) { + int color = (v>>bit_offset)&0x1; + out[z++] = pal[color][0]; + out[z++] = pal[color][1]; + out[z++] = pal[color][2]; + if (target == 4) out[z++] = 255; + if (i+1 == (int) s->img_x) break; + if((--bit_offset) < 0) { + bit_offset = 7; + v = stbi__get8(s); + } + } + stbi__skip(s, pad); + } + } else { + for (j=0; j < (int) s->img_y; ++j) { + for (i=0; i < (int) s->img_x; i += 2) { + int v=stbi__get8(s),v2=0; + if (info.bpp == 4) { + v2 = v & 15; + v >>= 4; + } + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) out[z++] = 255; + if (i+1 == (int) s->img_x) break; + v = (info.bpp == 8) ? stbi__get8(s) : v2; + out[z++] = pal[v][0]; + out[z++] = pal[v][1]; + out[z++] = pal[v][2]; + if (target == 4) out[z++] = 255; + } + stbi__skip(s, pad); + } + } + } else { + int rshift=0,gshift=0,bshift=0,ashift=0,rcount=0,gcount=0,bcount=0,acount=0; + int z = 0; + int easy=0; + stbi__skip(s, info.offset - info.extra_read - info.hsz); + if (info.bpp == 24) width = 3 * s->img_x; + else if (info.bpp == 16) width = 2*s->img_x; + else /* bpp = 32 and pad = 0 */ width=0; + pad = (-width) & 3; + if (info.bpp == 24) { + easy = 1; + } else if (info.bpp == 32) { + if (mb == 0xff && mg == 0xff00 && mr == 0x00ff0000 && ma == 0xff000000) + easy = 2; + } + if (!easy) { + if (!mr || !mg || !mb) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } + // right shift amt to put high bit in position #7 + rshift = stbi__high_bit(mr)-7; rcount = stbi__bitcount(mr); + gshift = stbi__high_bit(mg)-7; gcount = stbi__bitcount(mg); + bshift = stbi__high_bit(mb)-7; bcount = stbi__bitcount(mb); + ashift = stbi__high_bit(ma)-7; acount = stbi__bitcount(ma); + if (rcount > 8 || gcount > 8 || bcount > 8 || acount > 8) { STBI_FREE(out); return stbi__errpuc("bad masks", "Corrupt BMP"); } + } + for (j=0; j < (int) s->img_y; ++j) { + if (easy) { + for (i=0; i < (int) s->img_x; ++i) { + unsigned char a; + out[z+2] = stbi__get8(s); + out[z+1] = stbi__get8(s); + out[z+0] = stbi__get8(s); + z += 3; + a = (easy == 2 ? stbi__get8(s) : 255); + all_a |= a; + if (target == 4) out[z++] = a; + } + } else { + int bpp = info.bpp; + for (i=0; i < (int) s->img_x; ++i) { + stbi__uint32 v = (bpp == 16 ? (stbi__uint32) stbi__get16le(s) : stbi__get32le(s)); + unsigned int a; + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mr, rshift, rcount)); + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mg, gshift, gcount)); + out[z++] = STBI__BYTECAST(stbi__shiftsigned(v & mb, bshift, bcount)); + a = (ma ? stbi__shiftsigned(v & ma, ashift, acount) : 255); + all_a |= a; + if (target == 4) out[z++] = STBI__BYTECAST(a); + } + } + stbi__skip(s, pad); + } + } + + // if alpha channel is all 0s, replace with all 255s + if (target == 4 && all_a == 0) + for (i=4*s->img_x*s->img_y-1; i >= 0; i -= 4) + out[i] = 255; + + if (flip_vertically) { + stbi_uc t; + for (j=0; j < (int) s->img_y>>1; ++j) { + stbi_uc *p1 = out + j *s->img_x*target; + stbi_uc *p2 = out + (s->img_y-1-j)*s->img_x*target; + for (i=0; i < (int) s->img_x*target; ++i) { + t = p1[i]; p1[i] = p2[i]; p2[i] = t; + } + } + } + + if (req_comp && req_comp != target) { + out = stbi__convert_format(out, target, req_comp, s->img_x, s->img_y); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + + *x = s->img_x; + *y = s->img_y; + if (comp) *comp = s->img_n; + return out; +} +#endif + +// Targa Truevision - TGA +// by Jonathan Dummer +#ifndef STBI_NO_TGA +// returns STBI_rgb or whatever, 0 on error +static int stbi__tga_get_comp(int bits_per_pixel, int is_grey, int* is_rgb16) +{ + // only RGB or RGBA (incl. 16bit) or grey allowed + if (is_rgb16) *is_rgb16 = 0; + switch(bits_per_pixel) { + case 8: return STBI_grey; + case 16: if(is_grey) return STBI_grey_alpha; + // fallthrough + case 15: if(is_rgb16) *is_rgb16 = 1; + return STBI_rgb; + case 24: // fallthrough + case 32: return bits_per_pixel/8; + default: return 0; + } +} + +static int stbi__tga_info(stbi__context *s, int *x, int *y, int *comp) +{ + int tga_w, tga_h, tga_comp, tga_image_type, tga_bits_per_pixel, tga_colormap_bpp; + int sz, tga_colormap_type; + stbi__get8(s); // discard Offset + tga_colormap_type = stbi__get8(s); // colormap type + if( tga_colormap_type > 1 ) { + stbi__rewind(s); + return 0; // only RGB or indexed allowed + } + tga_image_type = stbi__get8(s); // image type + if ( tga_colormap_type == 1 ) { // colormapped (paletted) image + if (tga_image_type != 1 && tga_image_type != 9) { + stbi__rewind(s); + return 0; + } + stbi__skip(s,4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) { + stbi__rewind(s); + return 0; + } + stbi__skip(s,4); // skip image x and y origin + tga_colormap_bpp = sz; + } else { // "normal" image w/o colormap - only RGB or grey allowed, +/- RLE + if ( (tga_image_type != 2) && (tga_image_type != 3) && (tga_image_type != 10) && (tga_image_type != 11) ) { + stbi__rewind(s); + return 0; // only RGB or grey allowed, +/- RLE + } + stbi__skip(s,9); // skip colormap specification and image x/y origin + tga_colormap_bpp = 0; + } + tga_w = stbi__get16le(s); + if( tga_w < 1 ) { + stbi__rewind(s); + return 0; // test width + } + tga_h = stbi__get16le(s); + if( tga_h < 1 ) { + stbi__rewind(s); + return 0; // test height + } + tga_bits_per_pixel = stbi__get8(s); // bits per pixel + stbi__get8(s); // ignore alpha bits + if (tga_colormap_bpp != 0) { + if((tga_bits_per_pixel != 8) && (tga_bits_per_pixel != 16)) { + // when using a colormap, tga_bits_per_pixel is the size of the indexes + // I don't think anything but 8 or 16bit indexes makes sense + stbi__rewind(s); + return 0; + } + tga_comp = stbi__tga_get_comp(tga_colormap_bpp, 0, NULL); + } else { + tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3) || (tga_image_type == 11), NULL); + } + if(!tga_comp) { + stbi__rewind(s); + return 0; + } + if (x) *x = tga_w; + if (y) *y = tga_h; + if (comp) *comp = tga_comp; + return 1; // seems to have passed everything +} + +static int stbi__tga_test(stbi__context *s) +{ + int res = 0; + int sz, tga_color_type; + stbi__get8(s); // discard Offset + tga_color_type = stbi__get8(s); // color type + if ( tga_color_type > 1 ) goto errorEnd; // only RGB or indexed allowed + sz = stbi__get8(s); // image type + if ( tga_color_type == 1 ) { // colormapped (paletted) image + if (sz != 1 && sz != 9) goto errorEnd; // colortype 1 demands image type 1 or 9 + stbi__skip(s,4); // skip index of first colormap entry and number of entries + sz = stbi__get8(s); // check bits per palette color entry + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; + stbi__skip(s,4); // skip image x and y origin + } else { // "normal" image w/o colormap + if ( (sz != 2) && (sz != 3) && (sz != 10) && (sz != 11) ) goto errorEnd; // only RGB or grey allowed, +/- RLE + stbi__skip(s,9); // skip colormap specification and image x/y origin + } + if ( stbi__get16le(s) < 1 ) goto errorEnd; // test width + if ( stbi__get16le(s) < 1 ) goto errorEnd; // test height + sz = stbi__get8(s); // bits per pixel + if ( (tga_color_type == 1) && (sz != 8) && (sz != 16) ) goto errorEnd; // for colormapped images, bpp is size of an index + if ( (sz != 8) && (sz != 15) && (sz != 16) && (sz != 24) && (sz != 32) ) goto errorEnd; + + res = 1; // if we got this far, everything's good and we can return 1 instead of 0 + +errorEnd: + stbi__rewind(s); + return res; +} + +// read 16bit value and convert to 24bit RGB +static void stbi__tga_read_rgb16(stbi__context *s, stbi_uc* out) +{ + stbi__uint16 px = (stbi__uint16)stbi__get16le(s); + stbi__uint16 fiveBitMask = 31; + // we have 3 channels with 5bits each + int r = (px >> 10) & fiveBitMask; + int g = (px >> 5) & fiveBitMask; + int b = px & fiveBitMask; + // Note that this saves the data in RGB(A) order, so it doesn't need to be swapped later + out[0] = (stbi_uc)((r * 255)/31); + out[1] = (stbi_uc)((g * 255)/31); + out[2] = (stbi_uc)((b * 255)/31); + + // some people claim that the most significant bit might be used for alpha + // (possibly if an alpha-bit is set in the "image descriptor byte") + // but that only made 16bit test images completely translucent.. + // so let's treat all 15 and 16bit TGAs as RGB with no alpha. +} + +static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + // read in the TGA header stuff + int tga_offset = stbi__get8(s); + int tga_indexed = stbi__get8(s); + int tga_image_type = stbi__get8(s); + int tga_is_RLE = 0; + int tga_palette_start = stbi__get16le(s); + int tga_palette_len = stbi__get16le(s); + int tga_palette_bits = stbi__get8(s); + int tga_x_origin = stbi__get16le(s); + int tga_y_origin = stbi__get16le(s); + int tga_width = stbi__get16le(s); + int tga_height = stbi__get16le(s); + int tga_bits_per_pixel = stbi__get8(s); + int tga_comp, tga_rgb16=0; + int tga_inverted = stbi__get8(s); + // int tga_alpha_bits = tga_inverted & 15; // the 4 lowest bits - unused (useless?) + // image data + unsigned char *tga_data; + unsigned char *tga_palette = NULL; + int i, j; + unsigned char raw_data[4] = {0}; + int RLE_count = 0; + int RLE_repeating = 0; + int read_next_pixel = 1; + STBI_NOTUSED(ri); + STBI_NOTUSED(tga_x_origin); // @TODO + STBI_NOTUSED(tga_y_origin); // @TODO + + if (tga_height > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (tga_width > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + // do a tiny bit of precessing + if ( tga_image_type >= 8 ) + { + tga_image_type -= 8; + tga_is_RLE = 1; + } + tga_inverted = 1 - ((tga_inverted >> 5) & 1); + + // If I'm paletted, then I'll use the number of bits from the palette + if ( tga_indexed ) tga_comp = stbi__tga_get_comp(tga_palette_bits, 0, &tga_rgb16); + else tga_comp = stbi__tga_get_comp(tga_bits_per_pixel, (tga_image_type == 3), &tga_rgb16); + + if(!tga_comp) // shouldn't really happen, stbi__tga_test() should have ensured basic consistency + return stbi__errpuc("bad format", "Can't find out TGA pixelformat"); + + // tga info + *x = tga_width; + *y = tga_height; + if (comp) *comp = tga_comp; + + if (!stbi__mad3sizes_valid(tga_width, tga_height, tga_comp, 0)) + return stbi__errpuc("too large", "Corrupt TGA"); + + tga_data = (unsigned char*)stbi__malloc_mad3(tga_width, tga_height, tga_comp, 0); + if (!tga_data) return stbi__errpuc("outofmem", "Out of memory"); + + // skip to the data's starting position (offset usually = 0) + stbi__skip(s, tga_offset ); + + if ( !tga_indexed && !tga_is_RLE && !tga_rgb16 ) { + for (i=0; i < tga_height; ++i) { + int row = tga_inverted ? tga_height -i - 1 : i; + stbi_uc *tga_row = tga_data + row*tga_width*tga_comp; + stbi__getn(s, tga_row, tga_width * tga_comp); + } + } else { + // do I need to load a palette? + if ( tga_indexed) + { + if (tga_palette_len == 0) { /* you have to have at least one entry! */ + STBI_FREE(tga_data); + return stbi__errpuc("bad palette", "Corrupt TGA"); + } + + // any data to skip? (offset usually = 0) + stbi__skip(s, tga_palette_start ); + // load the palette + tga_palette = (unsigned char*)stbi__malloc_mad2(tga_palette_len, tga_comp, 0); + if (!tga_palette) { + STBI_FREE(tga_data); + return stbi__errpuc("outofmem", "Out of memory"); + } + if (tga_rgb16) { + stbi_uc *pal_entry = tga_palette; + STBI_ASSERT(tga_comp == STBI_rgb); + for (i=0; i < tga_palette_len; ++i) { + stbi__tga_read_rgb16(s, pal_entry); + pal_entry += tga_comp; + } + } else if (!stbi__getn(s, tga_palette, tga_palette_len * tga_comp)) { + STBI_FREE(tga_data); + STBI_FREE(tga_palette); + return stbi__errpuc("bad palette", "Corrupt TGA"); + } + } + // load the data + for (i=0; i < tga_width * tga_height; ++i) + { + // if I'm in RLE mode, do I need to get a RLE stbi__pngchunk? + if ( tga_is_RLE ) + { + if ( RLE_count == 0 ) + { + // yep, get the next byte as a RLE command + int RLE_cmd = stbi__get8(s); + RLE_count = 1 + (RLE_cmd & 127); + RLE_repeating = RLE_cmd >> 7; + read_next_pixel = 1; + } else if ( !RLE_repeating ) + { + read_next_pixel = 1; + } + } else + { + read_next_pixel = 1; + } + // OK, if I need to read a pixel, do it now + if ( read_next_pixel ) + { + // load however much data we did have + if ( tga_indexed ) + { + // read in index, then perform the lookup + int pal_idx = (tga_bits_per_pixel == 8) ? stbi__get8(s) : stbi__get16le(s); + if ( pal_idx >= tga_palette_len ) { + // invalid index + pal_idx = 0; + } + pal_idx *= tga_comp; + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = tga_palette[pal_idx+j]; + } + } else if(tga_rgb16) { + STBI_ASSERT(tga_comp == STBI_rgb); + stbi__tga_read_rgb16(s, raw_data); + } else { + // read in the data raw + for (j = 0; j < tga_comp; ++j) { + raw_data[j] = stbi__get8(s); + } + } + // clear the reading flag for the next pixel + read_next_pixel = 0; + } // end of reading a pixel + + // copy data + for (j = 0; j < tga_comp; ++j) + tga_data[i*tga_comp+j] = raw_data[j]; + + // in case we're in RLE mode, keep counting down + --RLE_count; + } + // do I need to invert the image? + if ( tga_inverted ) + { + for (j = 0; j*2 < tga_height; ++j) + { + int index1 = j * tga_width * tga_comp; + int index2 = (tga_height - 1 - j) * tga_width * tga_comp; + for (i = tga_width * tga_comp; i > 0; --i) + { + unsigned char temp = tga_data[index1]; + tga_data[index1] = tga_data[index2]; + tga_data[index2] = temp; + ++index1; + ++index2; + } + } + } + // clear my palette, if I had one + if ( tga_palette != NULL ) + { + STBI_FREE( tga_palette ); + } + } + + // swap RGB - if the source data was RGB16, it already is in the right order + if (tga_comp >= 3 && !tga_rgb16) + { + unsigned char* tga_pixel = tga_data; + for (i=0; i < tga_width * tga_height; ++i) + { + unsigned char temp = tga_pixel[0]; + tga_pixel[0] = tga_pixel[2]; + tga_pixel[2] = temp; + tga_pixel += tga_comp; + } + } + + // convert to target component count + if (req_comp && req_comp != tga_comp) + tga_data = stbi__convert_format(tga_data, tga_comp, req_comp, tga_width, tga_height); + + // the things I do to get rid of an error message, and yet keep + // Microsoft's C compilers happy... [8^( + tga_palette_start = tga_palette_len = tga_palette_bits = + tga_x_origin = tga_y_origin = 0; + STBI_NOTUSED(tga_palette_start); + // OK, done + return tga_data; +} +#endif + +// ************************************************************************************************* +// Photoshop PSD loader -- PD by Thatcher Ulrich, integration by Nicolas Schulz, tweaked by STB + +#ifndef STBI_NO_PSD +static int stbi__psd_test(stbi__context *s) +{ + int r = (stbi__get32be(s) == 0x38425053); + stbi__rewind(s); + return r; +} + +static int stbi__psd_decode_rle(stbi__context *s, stbi_uc *p, int pixelCount) +{ + int count, nleft, len; + + count = 0; + while ((nleft = pixelCount - count) > 0) { + len = stbi__get8(s); + if (len == 128) { + // No-op. + } else if (len < 128) { + // Copy next len+1 bytes literally. + len++; + if (len > nleft) return 0; // corrupt data + count += len; + while (len) { + *p = stbi__get8(s); + p += 4; + len--; + } + } else if (len > 128) { + stbi_uc val; + // Next -len+1 bytes in the dest are replicated from next source byte. + // (Interpret len as a negative 8-bit int.) + len = 257 - len; + if (len > nleft) return 0; // corrupt data + val = stbi__get8(s); + count += len; + while (len) { + *p = val; + p += 4; + len--; + } + } + } + + return 1; +} + +static void *stbi__psd_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri, int bpc) +{ + int pixelCount; + int channelCount, compression; + int channel, i; + int bitdepth; + int w,h; + stbi_uc *out; + STBI_NOTUSED(ri); + + // Check identifier + if (stbi__get32be(s) != 0x38425053) // "8BPS" + return stbi__errpuc("not PSD", "Corrupt PSD image"); + + // Check file type version. + if (stbi__get16be(s) != 1) + return stbi__errpuc("wrong version", "Unsupported version of PSD image"); + + // Skip 6 reserved bytes. + stbi__skip(s, 6 ); + + // Read the number of channels (R, G, B, A, etc). + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) + return stbi__errpuc("wrong channel count", "Unsupported number of channels in PSD image"); + + // Read the rows and columns of the image. + h = stbi__get32be(s); + w = stbi__get32be(s); + + if (h > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (w > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + // Make sure the depth is 8 bits. + bitdepth = stbi__get16be(s); + if (bitdepth != 8 && bitdepth != 16) + return stbi__errpuc("unsupported bit depth", "PSD bit depth is not 8 or 16 bit"); + + // Make sure the color mode is RGB. + // Valid options are: + // 0: Bitmap + // 1: Grayscale + // 2: Indexed color + // 3: RGB color + // 4: CMYK color + // 7: Multichannel + // 8: Duotone + // 9: Lab color + if (stbi__get16be(s) != 3) + return stbi__errpuc("wrong color format", "PSD is not in RGB color format"); + + // Skip the Mode Data. (It's the palette for indexed color; other info for other modes.) + stbi__skip(s,stbi__get32be(s) ); + + // Skip the image resources. (resolution, pen tool paths, etc) + stbi__skip(s, stbi__get32be(s) ); + + // Skip the reserved data. + stbi__skip(s, stbi__get32be(s) ); + + // Find out if the data is compressed. + // Known values: + // 0: no compression + // 1: RLE compressed + compression = stbi__get16be(s); + if (compression > 1) + return stbi__errpuc("bad compression", "PSD has an unknown compression format"); + + // Check size + if (!stbi__mad3sizes_valid(4, w, h, 0)) + return stbi__errpuc("too large", "Corrupt PSD"); + + // Create the destination image. + + if (!compression && bitdepth == 16 && bpc == 16) { + out = (stbi_uc *) stbi__malloc_mad3(8, w, h, 0); + ri->bits_per_channel = 16; + } else + out = (stbi_uc *) stbi__malloc(4 * w*h); + + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + pixelCount = w*h; + + // Initialize the data to zero. + //memset( out, 0, pixelCount * 4 ); + + // Finally, the image data. + if (compression) { + // RLE as used by .PSD and .TIFF + // Loop until you get the number of unpacked bytes you are expecting: + // Read the next source byte into n. + // If n is between 0 and 127 inclusive, copy the next n+1 bytes literally. + // Else if n is between -127 and -1 inclusive, copy the next byte -n+1 times. + // Else if n is 128, noop. + // Endloop + + // The RLE-compressed data is preceded by a 2-byte data count for each row in the data, + // which we're going to just skip. + stbi__skip(s, h * channelCount * 2 ); + + // Read the RLE data by channel. + for (channel = 0; channel < 4; channel++) { + stbi_uc *p; + + p = out+channel; + if (channel >= channelCount) { + // Fill this channel with default data. + for (i = 0; i < pixelCount; i++, p += 4) + *p = (channel == 3 ? 255 : 0); + } else { + // Read the RLE data. + if (!stbi__psd_decode_rle(s, p, pixelCount)) { + STBI_FREE(out); + return stbi__errpuc("corrupt", "bad RLE data"); + } + } + } + + } else { + // We're at the raw image data. It's each channel in order (Red, Green, Blue, Alpha, ...) + // where each channel consists of an 8-bit (or 16-bit) value for each pixel in the image. + + // Read the data by channel. + for (channel = 0; channel < 4; channel++) { + if (channel >= channelCount) { + // Fill this channel with default data. + if (bitdepth == 16 && bpc == 16) { + stbi__uint16 *q = ((stbi__uint16 *) out) + channel; + stbi__uint16 val = channel == 3 ? 65535 : 0; + for (i = 0; i < pixelCount; i++, q += 4) + *q = val; + } else { + stbi_uc *p = out+channel; + stbi_uc val = channel == 3 ? 255 : 0; + for (i = 0; i < pixelCount; i++, p += 4) + *p = val; + } + } else { + if (ri->bits_per_channel == 16) { // output bpc + stbi__uint16 *q = ((stbi__uint16 *) out) + channel; + for (i = 0; i < pixelCount; i++, q += 4) + *q = (stbi__uint16) stbi__get16be(s); + } else { + stbi_uc *p = out+channel; + if (bitdepth == 16) { // input bpc + for (i = 0; i < pixelCount; i++, p += 4) + *p = (stbi_uc) (stbi__get16be(s) >> 8); + } else { + for (i = 0; i < pixelCount; i++, p += 4) + *p = stbi__get8(s); + } + } + } + } + } + + // remove weird white matte from PSD + if (channelCount >= 4) { + if (ri->bits_per_channel == 16) { + for (i=0; i < w*h; ++i) { + stbi__uint16 *pixel = (stbi__uint16 *) out + 4*i; + if (pixel[3] != 0 && pixel[3] != 65535) { + float a = pixel[3] / 65535.0f; + float ra = 1.0f / a; + float inv_a = 65535.0f * (1 - ra); + pixel[0] = (stbi__uint16) (pixel[0]*ra + inv_a); + pixel[1] = (stbi__uint16) (pixel[1]*ra + inv_a); + pixel[2] = (stbi__uint16) (pixel[2]*ra + inv_a); + } + } + } else { + for (i=0; i < w*h; ++i) { + unsigned char *pixel = out + 4*i; + if (pixel[3] != 0 && pixel[3] != 255) { + float a = pixel[3] / 255.0f; + float ra = 1.0f / a; + float inv_a = 255.0f * (1 - ra); + pixel[0] = (unsigned char) (pixel[0]*ra + inv_a); + pixel[1] = (unsigned char) (pixel[1]*ra + inv_a); + pixel[2] = (unsigned char) (pixel[2]*ra + inv_a); + } + } + } + } + + // convert to desired output format + if (req_comp && req_comp != 4) { + if (ri->bits_per_channel == 16) + out = (stbi_uc *) stbi__convert_format16((stbi__uint16 *) out, 4, req_comp, w, h); + else + out = stbi__convert_format(out, 4, req_comp, w, h); + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + + if (comp) *comp = 4; + *y = h; + *x = w; + + return out; +} +#endif + +// ************************************************************************************************* +// Softimage PIC loader +// by Tom Seddon +// +// See http://softimage.wiki.softimage.com/index.php/INFO:_PIC_file_format +// See http://ozviz.wasp.uwa.edu.au/~pbourke/dataformats/softimagepic/ + +#ifndef STBI_NO_PIC +static int stbi__pic_is4(stbi__context *s,const char *str) +{ + int i; + for (i=0; i<4; ++i) + if (stbi__get8(s) != (stbi_uc)str[i]) + return 0; + + return 1; +} + +static int stbi__pic_test_core(stbi__context *s) +{ + int i; + + if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) + return 0; + + for(i=0;i<84;++i) + stbi__get8(s); + + if (!stbi__pic_is4(s,"PICT")) + return 0; + + return 1; +} + +typedef struct +{ + stbi_uc size,type,channel; +} stbi__pic_packet; + +static stbi_uc *stbi__readval(stbi__context *s, int channel, stbi_uc *dest) +{ + int mask=0x80, i; + + for (i=0; i<4; ++i, mask>>=1) { + if (channel & mask) { + if (stbi__at_eof(s)) return stbi__errpuc("bad file","PIC file too short"); + dest[i]=stbi__get8(s); + } + } + + return dest; +} + +static void stbi__copyval(int channel,stbi_uc *dest,const stbi_uc *src) +{ + int mask=0x80,i; + + for (i=0;i<4; ++i, mask>>=1) + if (channel&mask) + dest[i]=src[i]; +} + +static stbi_uc *stbi__pic_load_core(stbi__context *s,int width,int height,int *comp, stbi_uc *result) +{ + int act_comp=0,num_packets=0,y,chained; + stbi__pic_packet packets[10]; + + // this will (should...) cater for even some bizarre stuff like having data + // for the same channel in multiple packets. + do { + stbi__pic_packet *packet; + + if (num_packets==sizeof(packets)/sizeof(packets[0])) + return stbi__errpuc("bad format","too many packets"); + + packet = &packets[num_packets++]; + + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + + act_comp |= packet->channel; + + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (reading packets)"); + if (packet->size != 8) return stbi__errpuc("bad format","packet isn't 8bpp"); + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); // has alpha channel? + + for(y=0; ytype) { + default: + return stbi__errpuc("bad format","packet has bad compression type"); + + case 0: {//uncompressed + int x; + + for(x=0;xchannel,dest)) + return 0; + break; + } + + case 1://Pure RLE + { + int left=width, i; + + while (left>0) { + stbi_uc count,value[4]; + + count=stbi__get8(s); + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pure read count)"); + + if (count > left) + count = (stbi_uc) left; + + if (!stbi__readval(s,packet->channel,value)) return 0; + + for(i=0; ichannel,dest,value); + left -= count; + } + } + break; + + case 2: {//Mixed RLE + int left=width; + while (left>0) { + int count = stbi__get8(s), i; + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (mixed read count)"); + + if (count >= 128) { // Repeated + stbi_uc value[4]; + + if (count==128) + count = stbi__get16be(s); + else + count -= 127; + if (count > left) + return stbi__errpuc("bad file","scanline overrun"); + + if (!stbi__readval(s,packet->channel,value)) + return 0; + + for(i=0;ichannel,dest,value); + } else { // Raw + ++count; + if (count>left) return stbi__errpuc("bad file","scanline overrun"); + + for(i=0;ichannel,dest)) + return 0; + } + left-=count; + } + break; + } + } + } + } + + return result; +} + +static void *stbi__pic_load(stbi__context *s,int *px,int *py,int *comp,int req_comp, stbi__result_info *ri) +{ + stbi_uc *result; + int i, x,y, internal_comp; + STBI_NOTUSED(ri); + + if (!comp) comp = &internal_comp; + + for (i=0; i<92; ++i) + stbi__get8(s); + + x = stbi__get16be(s); + y = stbi__get16be(s); + + if (y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + if (stbi__at_eof(s)) return stbi__errpuc("bad file","file too short (pic header)"); + if (!stbi__mad3sizes_valid(x, y, 4, 0)) return stbi__errpuc("too large", "PIC image too large to decode"); + + stbi__get32be(s); //skip `ratio' + stbi__get16be(s); //skip `fields' + stbi__get16be(s); //skip `pad' + + // intermediate buffer is RGBA + result = (stbi_uc *) stbi__malloc_mad3(x, y, 4, 0); + if (!result) return stbi__errpuc("outofmem", "Out of memory"); + memset(result, 0xff, x*y*4); + + if (!stbi__pic_load_core(s,x,y,comp, result)) { + STBI_FREE(result); + result=0; + } + *px = x; + *py = y; + if (req_comp == 0) req_comp = *comp; + result=stbi__convert_format(result,4,req_comp,x,y); + + return result; +} + +static int stbi__pic_test(stbi__context *s) +{ + int r = stbi__pic_test_core(s); + stbi__rewind(s); + return r; +} +#endif + +// ************************************************************************************************* +// GIF loader -- public domain by Jean-Marc Lienher -- simplified/shrunk by stb + +#ifndef STBI_NO_GIF +typedef struct +{ + stbi__int16 prefix; + stbi_uc first; + stbi_uc suffix; +} stbi__gif_lzw; + +typedef struct +{ + int w,h; + stbi_uc *out; // output buffer (always 4 components) + stbi_uc *background; // The current "background" as far as a gif is concerned + stbi_uc *history; + int flags, bgindex, ratio, transparent, eflags; + stbi_uc pal[256][4]; + stbi_uc lpal[256][4]; + stbi__gif_lzw codes[8192]; + stbi_uc *color_table; + int parse, step; + int lflags; + int start_x, start_y; + int max_x, max_y; + int cur_x, cur_y; + int line_size; + int delay; +} stbi__gif; + +static int stbi__gif_test_raw(stbi__context *s) +{ + int sz; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') return 0; + sz = stbi__get8(s); + if (sz != '9' && sz != '7') return 0; + if (stbi__get8(s) != 'a') return 0; + return 1; +} + +static int stbi__gif_test(stbi__context *s) +{ + int r = stbi__gif_test_raw(s); + stbi__rewind(s); + return r; +} + +static void stbi__gif_parse_colortable(stbi__context *s, stbi_uc pal[256][4], int num_entries, int transp) +{ + int i; + for (i=0; i < num_entries; ++i) { + pal[i][2] = stbi__get8(s); + pal[i][1] = stbi__get8(s); + pal[i][0] = stbi__get8(s); + pal[i][3] = transp == i ? 0 : 255; + } +} + +static int stbi__gif_header(stbi__context *s, stbi__gif *g, int *comp, int is_info) +{ + stbi_uc version; + if (stbi__get8(s) != 'G' || stbi__get8(s) != 'I' || stbi__get8(s) != 'F' || stbi__get8(s) != '8') + return stbi__err("not GIF", "Corrupt GIF"); + + version = stbi__get8(s); + if (version != '7' && version != '9') return stbi__err("not GIF", "Corrupt GIF"); + if (stbi__get8(s) != 'a') return stbi__err("not GIF", "Corrupt GIF"); + + stbi__g_failure_reason = ""; + g->w = stbi__get16le(s); + g->h = stbi__get16le(s); + g->flags = stbi__get8(s); + g->bgindex = stbi__get8(s); + g->ratio = stbi__get8(s); + g->transparent = -1; + + if (g->w > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + if (g->h > STBI_MAX_DIMENSIONS) return stbi__err("too large","Very large image (corrupt?)"); + + if (comp != 0) *comp = 4; // can't actually tell whether it's 3 or 4 until we parse the comments + + if (is_info) return 1; + + if (g->flags & 0x80) + stbi__gif_parse_colortable(s,g->pal, 2 << (g->flags & 7), -1); + + return 1; +} + +static int stbi__gif_info_raw(stbi__context *s, int *x, int *y, int *comp) +{ + stbi__gif* g = (stbi__gif*) stbi__malloc(sizeof(stbi__gif)); + if (!g) return stbi__err("outofmem", "Out of memory"); + if (!stbi__gif_header(s, g, comp, 1)) { + STBI_FREE(g); + stbi__rewind( s ); + return 0; + } + if (x) *x = g->w; + if (y) *y = g->h; + STBI_FREE(g); + return 1; +} + +static void stbi__out_gif_code(stbi__gif *g, stbi__uint16 code) +{ + stbi_uc *p, *c; + int idx; + + // recurse to decode the prefixes, since the linked-list is backwards, + // and working backwards through an interleaved image would be nasty + if (g->codes[code].prefix >= 0) + stbi__out_gif_code(g, g->codes[code].prefix); + + if (g->cur_y >= g->max_y) return; + + idx = g->cur_x + g->cur_y; + p = &g->out[idx]; + g->history[idx / 4] = 1; + + c = &g->color_table[g->codes[code].suffix * 4]; + if (c[3] > 128) { // don't render transparent pixels; + p[0] = c[2]; + p[1] = c[1]; + p[2] = c[0]; + p[3] = c[3]; + } + g->cur_x += 4; + + if (g->cur_x >= g->max_x) { + g->cur_x = g->start_x; + g->cur_y += g->step; + + while (g->cur_y >= g->max_y && g->parse > 0) { + g->step = (1 << g->parse) * g->line_size; + g->cur_y = g->start_y + (g->step >> 1); + --g->parse; + } + } +} + +static stbi_uc *stbi__process_gif_raster(stbi__context *s, stbi__gif *g) +{ + stbi_uc lzw_cs; + stbi__int32 len, init_code; + stbi__uint32 first; + stbi__int32 codesize, codemask, avail, oldcode, bits, valid_bits, clear; + stbi__gif_lzw *p; + + lzw_cs = stbi__get8(s); + if (lzw_cs > 12) return NULL; + clear = 1 << lzw_cs; + first = 1; + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + bits = 0; + valid_bits = 0; + for (init_code = 0; init_code < clear; init_code++) { + g->codes[init_code].prefix = -1; + g->codes[init_code].first = (stbi_uc) init_code; + g->codes[init_code].suffix = (stbi_uc) init_code; + } + + // support no starting clear code + avail = clear+2; + oldcode = -1; + + len = 0; + for(;;) { + if (valid_bits < codesize) { + if (len == 0) { + len = stbi__get8(s); // start new block + if (len == 0) + return g->out; + } + --len; + bits |= (stbi__int32) stbi__get8(s) << valid_bits; + valid_bits += 8; + } else { + stbi__int32 code = bits & codemask; + bits >>= codesize; + valid_bits -= codesize; + // @OPTIMIZE: is there some way we can accelerate the non-clear path? + if (code == clear) { // clear code + codesize = lzw_cs + 1; + codemask = (1 << codesize) - 1; + avail = clear + 2; + oldcode = -1; + first = 0; + } else if (code == clear + 1) { // end of stream code + stbi__skip(s, len); + while ((len = stbi__get8(s)) > 0) + stbi__skip(s,len); + return g->out; + } else if (code <= avail) { + if (first) { + return stbi__errpuc("no clear code", "Corrupt GIF"); + } + + if (oldcode >= 0) { + p = &g->codes[avail++]; + if (avail > 8192) { + return stbi__errpuc("too many codes", "Corrupt GIF"); + } + + p->prefix = (stbi__int16) oldcode; + p->first = g->codes[oldcode].first; + p->suffix = (code == avail) ? p->first : g->codes[code].first; + } else if (code == avail) + return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + + stbi__out_gif_code(g, (stbi__uint16) code); + + if ((avail & codemask) == 0 && avail <= 0x0FFF) { + codesize++; + codemask = (1 << codesize) - 1; + } + + oldcode = code; + } else { + return stbi__errpuc("illegal code in raster", "Corrupt GIF"); + } + } + } +} + +// this function is designed to support animated gifs, although stb_image doesn't support it +// two back is the image from two frames ago, used for a very specific disposal format +static stbi_uc *stbi__gif_load_next(stbi__context *s, stbi__gif *g, int *comp, int req_comp, stbi_uc *two_back) +{ + int dispose; + int first_frame; + int pi; + int pcount; + STBI_NOTUSED(req_comp); + + // on first frame, any non-written pixels get the background colour (non-transparent) + first_frame = 0; + if (g->out == 0) { + if (!stbi__gif_header(s, g, comp,0)) return 0; // stbi__g_failure_reason set by stbi__gif_header + if (!stbi__mad3sizes_valid(4, g->w, g->h, 0)) + return stbi__errpuc("too large", "GIF image is too large"); + pcount = g->w * g->h; + g->out = (stbi_uc *) stbi__malloc(4 * pcount); + g->background = (stbi_uc *) stbi__malloc(4 * pcount); + g->history = (stbi_uc *) stbi__malloc(pcount); + if (!g->out || !g->background || !g->history) + return stbi__errpuc("outofmem", "Out of memory"); + + // image is treated as "transparent" at the start - ie, nothing overwrites the current background; + // background colour is only used for pixels that are not rendered first frame, after that "background" + // color refers to the color that was there the previous frame. + memset(g->out, 0x00, 4 * pcount); + memset(g->background, 0x00, 4 * pcount); // state of the background (starts transparent) + memset(g->history, 0x00, pcount); // pixels that were affected previous frame + first_frame = 1; + } else { + // second frame - how do we dispose of the previous one? + dispose = (g->eflags & 0x1C) >> 2; + pcount = g->w * g->h; + + if ((dispose == 3) && (two_back == 0)) { + dispose = 2; // if I don't have an image to revert back to, default to the old background + } + + if (dispose == 3) { // use previous graphic + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy( &g->out[pi * 4], &two_back[pi * 4], 4 ); + } + } + } else if (dispose == 2) { + // restore what was changed last frame to background before that frame; + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi]) { + memcpy( &g->out[pi * 4], &g->background[pi * 4], 4 ); + } + } + } else { + // This is a non-disposal case eithe way, so just + // leave the pixels as is, and they will become the new background + // 1: do not dispose + // 0: not specified. + } + + // background is what out is after the undoing of the previou frame; + memcpy( g->background, g->out, 4 * g->w * g->h ); + } + + // clear my history; + memset( g->history, 0x00, g->w * g->h ); // pixels that were affected previous frame + + for (;;) { + int tag = stbi__get8(s); + switch (tag) { + case 0x2C: /* Image Descriptor */ + { + stbi__int32 x, y, w, h; + stbi_uc *o; + + x = stbi__get16le(s); + y = stbi__get16le(s); + w = stbi__get16le(s); + h = stbi__get16le(s); + if (((x + w) > (g->w)) || ((y + h) > (g->h))) + return stbi__errpuc("bad Image Descriptor", "Corrupt GIF"); + + g->line_size = g->w * 4; + g->start_x = x * 4; + g->start_y = y * g->line_size; + g->max_x = g->start_x + w * 4; + g->max_y = g->start_y + h * g->line_size; + g->cur_x = g->start_x; + g->cur_y = g->start_y; + + // if the width of the specified rectangle is 0, that means + // we may not see *any* pixels or the image is malformed; + // to make sure this is caught, move the current y down to + // max_y (which is what out_gif_code checks). + if (w == 0) + g->cur_y = g->max_y; + + g->lflags = stbi__get8(s); + + if (g->lflags & 0x40) { + g->step = 8 * g->line_size; // first interlaced spacing + g->parse = 3; + } else { + g->step = g->line_size; + g->parse = 0; + } + + if (g->lflags & 0x80) { + stbi__gif_parse_colortable(s,g->lpal, 2 << (g->lflags & 7), g->eflags & 0x01 ? g->transparent : -1); + g->color_table = (stbi_uc *) g->lpal; + } else if (g->flags & 0x80) { + g->color_table = (stbi_uc *) g->pal; + } else + return stbi__errpuc("missing color table", "Corrupt GIF"); + + o = stbi__process_gif_raster(s, g); + if (!o) return NULL; + + // if this was the first frame, + pcount = g->w * g->h; + if (first_frame && (g->bgindex > 0)) { + // if first frame, any pixel not drawn to gets the background color + for (pi = 0; pi < pcount; ++pi) { + if (g->history[pi] == 0) { + g->pal[g->bgindex][3] = 255; // just in case it was made transparent, undo that; It will be reset next frame if need be; + memcpy( &g->out[pi * 4], &g->pal[g->bgindex], 4 ); + } + } + } + + return o; + } + + case 0x21: // Comment Extension. + { + int len; + int ext = stbi__get8(s); + if (ext == 0xF9) { // Graphic Control Extension. + len = stbi__get8(s); + if (len == 4) { + g->eflags = stbi__get8(s); + g->delay = 10 * stbi__get16le(s); // delay - 1/100th of a second, saving as 1/1000ths. + + // unset old transparent + if (g->transparent >= 0) { + g->pal[g->transparent][3] = 255; + } + if (g->eflags & 0x01) { + g->transparent = stbi__get8(s); + if (g->transparent >= 0) { + g->pal[g->transparent][3] = 0; + } + } else { + // don't need transparent + stbi__skip(s, 1); + g->transparent = -1; + } + } else { + stbi__skip(s, len); + break; + } + } + while ((len = stbi__get8(s)) != 0) { + stbi__skip(s, len); + } + break; + } + + case 0x3B: // gif stream termination code + return (stbi_uc *) s; // using '1' causes warning on some compilers + + default: + return stbi__errpuc("unknown code", "Corrupt GIF"); + } + } +} + +static void *stbi__load_gif_main_outofmem(stbi__gif *g, stbi_uc *out, int **delays) +{ + STBI_FREE(g->out); + STBI_FREE(g->history); + STBI_FREE(g->background); + + if (out) STBI_FREE(out); + if (delays && *delays) STBI_FREE(*delays); + return stbi__errpuc("outofmem", "Out of memory"); +} + +static void *stbi__load_gif_main(stbi__context *s, int **delays, int *x, int *y, int *z, int *comp, int req_comp) +{ + if (stbi__gif_test(s)) { + int layers = 0; + stbi_uc *u = 0; + stbi_uc *out = 0; + stbi_uc *two_back = 0; + stbi__gif g; + int stride; + int out_size = 0; + int delays_size = 0; + + STBI_NOTUSED(out_size); + STBI_NOTUSED(delays_size); + + memset(&g, 0, sizeof(g)); + if (delays) { + *delays = 0; + } + + do { + u = stbi__gif_load_next(s, &g, comp, req_comp, two_back); + if (u == (stbi_uc *) s) u = 0; // end of animated gif marker + + if (u) { + *x = g.w; + *y = g.h; + ++layers; + stride = g.w * g.h * 4; + + if (out) { + void *tmp = (stbi_uc*) STBI_REALLOC_SIZED( out, out_size, layers * stride ); + if (!tmp) + return stbi__load_gif_main_outofmem(&g, out, delays); + else { + out = (stbi_uc*) tmp; + out_size = layers * stride; + } + + if (delays) { + int *new_delays = (int*) STBI_REALLOC_SIZED( *delays, delays_size, sizeof(int) * layers ); + if (!new_delays) + return stbi__load_gif_main_outofmem(&g, out, delays); + *delays = new_delays; + delays_size = layers * sizeof(int); + } + } else { + out = (stbi_uc*)stbi__malloc( layers * stride ); + if (!out) + return stbi__load_gif_main_outofmem(&g, out, delays); + out_size = layers * stride; + if (delays) { + *delays = (int*) stbi__malloc( layers * sizeof(int) ); + if (!*delays) + return stbi__load_gif_main_outofmem(&g, out, delays); + delays_size = layers * sizeof(int); + } + } + memcpy( out + ((layers - 1) * stride), u, stride ); + if (layers >= 2) { + two_back = out - 2 * stride; + } + + if (delays) { + (*delays)[layers - 1U] = g.delay; + } + } + } while (u != 0); + + // free temp buffer; + STBI_FREE(g.out); + STBI_FREE(g.history); + STBI_FREE(g.background); + + // do the final conversion after loading everything; + if (req_comp && req_comp != 4) + out = stbi__convert_format(out, 4, req_comp, layers * g.w, g.h); + + *z = layers; + return out; + } else { + return stbi__errpuc("not GIF", "Image was not as a gif type."); + } +} + +static void *stbi__gif_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *u = 0; + stbi__gif g; + memset(&g, 0, sizeof(g)); + STBI_NOTUSED(ri); + + u = stbi__gif_load_next(s, &g, comp, req_comp, 0); + if (u == (stbi_uc *) s) u = 0; // end of animated gif marker + if (u) { + *x = g.w; + *y = g.h; + + // moved conversion to after successful load so that the same + // can be done for multiple frames. + if (req_comp && req_comp != 4) + u = stbi__convert_format(u, 4, req_comp, g.w, g.h); + } else if (g.out) { + // if there was an error and we allocated an image buffer, free it! + STBI_FREE(g.out); + } + + // free buffers needed for multiple frame loading; + STBI_FREE(g.history); + STBI_FREE(g.background); + + return u; +} + +static int stbi__gif_info(stbi__context *s, int *x, int *y, int *comp) +{ + return stbi__gif_info_raw(s,x,y,comp); +} +#endif + +// ************************************************************************************************* +// Radiance RGBE HDR loader +// originally by Nicolas Schulz +#ifndef STBI_NO_HDR +static int stbi__hdr_test_core(stbi__context *s, const char *signature) +{ + int i; + for (i=0; signature[i]; ++i) + if (stbi__get8(s) != signature[i]) + return 0; + stbi__rewind(s); + return 1; +} + +static int stbi__hdr_test(stbi__context* s) +{ + int r = stbi__hdr_test_core(s, "#?RADIANCE\n"); + stbi__rewind(s); + if(!r) { + r = stbi__hdr_test_core(s, "#?RGBE\n"); + stbi__rewind(s); + } + return r; +} + +#define STBI__HDR_BUFLEN 1024 +static char *stbi__hdr_gettoken(stbi__context *z, char *buffer) +{ + int len=0; + char c = '\0'; + + c = (char) stbi__get8(z); + + while (!stbi__at_eof(z) && c != '\n') { + buffer[len++] = c; + if (len == STBI__HDR_BUFLEN-1) { + // flush to end of line + while (!stbi__at_eof(z) && stbi__get8(z) != '\n') + ; + break; + } + c = (char) stbi__get8(z); + } + + buffer[len] = 0; + return buffer; +} + +static void stbi__hdr_convert(float *output, stbi_uc *input, int req_comp) +{ + if ( input[3] != 0 ) { + float f1; + // Exponent + f1 = (float) ldexp(1.0f, input[3] - (int)(128 + 8)); + if (req_comp <= 2) + output[0] = (input[0] + input[1] + input[2]) * f1 / 3; + else { + output[0] = input[0] * f1; + output[1] = input[1] * f1; + output[2] = input[2] * f1; + } + if (req_comp == 2) output[1] = 1; + if (req_comp == 4) output[3] = 1; + } else { + switch (req_comp) { + case 4: output[3] = 1; /* fallthrough */ + case 3: output[0] = output[1] = output[2] = 0; + break; + case 2: output[1] = 1; /* fallthrough */ + case 1: output[0] = 0; + break; + } + } +} + +static float *stbi__hdr_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int width, height; + stbi_uc *scanline; + float *hdr_data; + int len; + unsigned char count, value; + int i, j, k, c1,c2, z; + const char *headerToken; + STBI_NOTUSED(ri); + + // Check identifier + headerToken = stbi__hdr_gettoken(s,buffer); + if (strcmp(headerToken, "#?RADIANCE") != 0 && strcmp(headerToken, "#?RGBE") != 0) + return stbi__errpf("not HDR", "Corrupt HDR image"); + + // Parse header + for(;;) { + token = stbi__hdr_gettoken(s,buffer); + if (token[0] == 0) break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; + } + + if (!valid) return stbi__errpf("unsupported format", "Unsupported HDR format"); + + // Parse width and height + // can't use sscanf() if we're not using stdio! + token = stbi__hdr_gettoken(s,buffer); + if (strncmp(token, "-Y ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + height = (int) strtol(token, &token, 10); + while (*token == ' ') ++token; + if (strncmp(token, "+X ", 3)) return stbi__errpf("unsupported data layout", "Unsupported HDR format"); + token += 3; + width = (int) strtol(token, NULL, 10); + + if (height > STBI_MAX_DIMENSIONS) return stbi__errpf("too large","Very large image (corrupt?)"); + if (width > STBI_MAX_DIMENSIONS) return stbi__errpf("too large","Very large image (corrupt?)"); + + *x = width; + *y = height; + + if (comp) *comp = 3; + if (req_comp == 0) req_comp = 3; + + if (!stbi__mad4sizes_valid(width, height, req_comp, sizeof(float), 0)) + return stbi__errpf("too large", "HDR image is too large"); + + // Read data + hdr_data = (float *) stbi__malloc_mad4(width, height, req_comp, sizeof(float), 0); + if (!hdr_data) + return stbi__errpf("outofmem", "Out of memory"); + + // Load image data + // image data is stored as some number of sca + if ( width < 8 || width >= 32768) { + // Read flat data + for (j=0; j < height; ++j) { + for (i=0; i < width; ++i) { + stbi_uc rgbe[4]; + main_decode_loop: + stbi__getn(s, rgbe, 4); + stbi__hdr_convert(hdr_data + j * width * req_comp + i * req_comp, rgbe, req_comp); + } + } + } else { + // Read RLE-encoded data + scanline = NULL; + + for (j = 0; j < height; ++j) { + c1 = stbi__get8(s); + c2 = stbi__get8(s); + len = stbi__get8(s); + if (c1 != 2 || c2 != 2 || (len & 0x80)) { + // not run-length encoded, so we have to actually use THIS data as a decoded + // pixel (note this can't be a valid pixel--one of RGB must be >= 128) + stbi_uc rgbe[4]; + rgbe[0] = (stbi_uc) c1; + rgbe[1] = (stbi_uc) c2; + rgbe[2] = (stbi_uc) len; + rgbe[3] = (stbi_uc) stbi__get8(s); + stbi__hdr_convert(hdr_data, rgbe, req_comp); + i = 1; + j = 0; + STBI_FREE(scanline); + goto main_decode_loop; // yes, this makes no sense + } + len <<= 8; + len |= stbi__get8(s); + if (len != width) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("invalid decoded scanline length", "corrupt HDR"); } + if (scanline == NULL) { + scanline = (stbi_uc *) stbi__malloc_mad2(width, 4, 0); + if (!scanline) { + STBI_FREE(hdr_data); + return stbi__errpf("outofmem", "Out of memory"); + } + } + + for (k = 0; k < 4; ++k) { + int nleft; + i = 0; + while ((nleft = width - i) > 0) { + count = stbi__get8(s); + if (count > 128) { + // Run + value = stbi__get8(s); + count -= 128; + if ((count == 0) || (count > nleft)) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = value; + } else { + // Dump + if ((count == 0) || (count > nleft)) { STBI_FREE(hdr_data); STBI_FREE(scanline); return stbi__errpf("corrupt", "bad RLE data in HDR"); } + for (z = 0; z < count; ++z) + scanline[i++ * 4 + k] = stbi__get8(s); + } + } + } + for (i=0; i < width; ++i) + stbi__hdr_convert(hdr_data+(j*width + i)*req_comp, scanline + i*4, req_comp); + } + if (scanline) + STBI_FREE(scanline); + } + + return hdr_data; +} + +static int stbi__hdr_info(stbi__context *s, int *x, int *y, int *comp) +{ + char buffer[STBI__HDR_BUFLEN]; + char *token; + int valid = 0; + int dummy; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + if (stbi__hdr_test(s) == 0) { + stbi__rewind( s ); + return 0; + } + + for(;;) { + token = stbi__hdr_gettoken(s,buffer); + if (token[0] == 0) break; + if (strcmp(token, "FORMAT=32-bit_rle_rgbe") == 0) valid = 1; + } + + if (!valid) { + stbi__rewind( s ); + return 0; + } + token = stbi__hdr_gettoken(s,buffer); + if (strncmp(token, "-Y ", 3)) { + stbi__rewind( s ); + return 0; + } + token += 3; + *y = (int) strtol(token, &token, 10); + while (*token == ' ') ++token; + if (strncmp(token, "+X ", 3)) { + stbi__rewind( s ); + return 0; + } + token += 3; + *x = (int) strtol(token, NULL, 10); + *comp = 3; + return 1; +} +#endif // STBI_NO_HDR + +#ifndef STBI_NO_BMP +static int stbi__bmp_info(stbi__context *s, int *x, int *y, int *comp) +{ + void *p; + stbi__bmp_data info; + + info.all_a = 255; + p = stbi__bmp_parse_header(s, &info); + if (p == NULL) { + stbi__rewind( s ); + return 0; + } + if (x) *x = s->img_x; + if (y) *y = s->img_y; + if (comp) { + if (info.bpp == 24 && info.ma == 0xff000000) + *comp = 3; + else + *comp = info.ma ? 4 : 3; + } + return 1; +} +#endif + +#ifndef STBI_NO_PSD +static int stbi__psd_info(stbi__context *s, int *x, int *y, int *comp) +{ + int channelCount, dummy, depth; + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind( s ); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind( s ); + return 0; + } + *y = stbi__get32be(s); + *x = stbi__get32be(s); + depth = stbi__get16be(s); + if (depth != 8 && depth != 16) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 3) { + stbi__rewind( s ); + return 0; + } + *comp = 4; + return 1; +} + +static int stbi__psd_is16(stbi__context *s) +{ + int channelCount, depth; + if (stbi__get32be(s) != 0x38425053) { + stbi__rewind( s ); + return 0; + } + if (stbi__get16be(s) != 1) { + stbi__rewind( s ); + return 0; + } + stbi__skip(s, 6); + channelCount = stbi__get16be(s); + if (channelCount < 0 || channelCount > 16) { + stbi__rewind( s ); + return 0; + } + STBI_NOTUSED(stbi__get32be(s)); + STBI_NOTUSED(stbi__get32be(s)); + depth = stbi__get16be(s); + if (depth != 16) { + stbi__rewind( s ); + return 0; + } + return 1; +} +#endif + +#ifndef STBI_NO_PIC +static int stbi__pic_info(stbi__context *s, int *x, int *y, int *comp) +{ + int act_comp=0,num_packets=0,chained,dummy; + stbi__pic_packet packets[10]; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + if (!stbi__pic_is4(s,"\x53\x80\xF6\x34")) { + stbi__rewind(s); + return 0; + } + + stbi__skip(s, 88); + + *x = stbi__get16be(s); + *y = stbi__get16be(s); + if (stbi__at_eof(s)) { + stbi__rewind( s); + return 0; + } + if ( (*x) != 0 && (1 << 28) / (*x) < (*y)) { + stbi__rewind( s ); + return 0; + } + + stbi__skip(s, 8); + + do { + stbi__pic_packet *packet; + + if (num_packets==sizeof(packets)/sizeof(packets[0])) + return 0; + + packet = &packets[num_packets++]; + chained = stbi__get8(s); + packet->size = stbi__get8(s); + packet->type = stbi__get8(s); + packet->channel = stbi__get8(s); + act_comp |= packet->channel; + + if (stbi__at_eof(s)) { + stbi__rewind( s ); + return 0; + } + if (packet->size != 8) { + stbi__rewind( s ); + return 0; + } + } while (chained); + + *comp = (act_comp & 0x10 ? 4 : 3); + + return 1; +} +#endif + +// ************************************************************************************************* +// Portable Gray Map and Portable Pixel Map loader +// by Ken Miller +// +// PGM: http://netpbm.sourceforge.net/doc/pgm.html +// PPM: http://netpbm.sourceforge.net/doc/ppm.html +// +// Known limitations: +// Does not support comments in the header section +// Does not support ASCII image data (formats P2 and P3) + +#ifndef STBI_NO_PNM + +static int stbi__pnm_test(stbi__context *s) +{ + char p, t; + p = (char) stbi__get8(s); + t = (char) stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind( s ); + return 0; + } + return 1; +} + +static void *stbi__pnm_load(stbi__context *s, int *x, int *y, int *comp, int req_comp, stbi__result_info *ri) +{ + stbi_uc *out; + STBI_NOTUSED(ri); + + ri->bits_per_channel = stbi__pnm_info(s, (int *)&s->img_x, (int *)&s->img_y, (int *)&s->img_n); + if (ri->bits_per_channel == 0) + return 0; + + if (s->img_y > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + if (s->img_x > STBI_MAX_DIMENSIONS) return stbi__errpuc("too large","Very large image (corrupt?)"); + + *x = s->img_x; + *y = s->img_y; + if (comp) *comp = s->img_n; + + if (!stbi__mad4sizes_valid(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0)) + return stbi__errpuc("too large", "PNM too large"); + + out = (stbi_uc *) stbi__malloc_mad4(s->img_n, s->img_x, s->img_y, ri->bits_per_channel / 8, 0); + if (!out) return stbi__errpuc("outofmem", "Out of memory"); + if (!stbi__getn(s, out, s->img_n * s->img_x * s->img_y * (ri->bits_per_channel / 8))) { + STBI_FREE(out); + return stbi__errpuc("bad PNM", "PNM file truncated"); + } + + if (req_comp && req_comp != s->img_n) { + if (ri->bits_per_channel == 16) { + out = (stbi_uc *) stbi__convert_format16((stbi__uint16 *) out, s->img_n, req_comp, s->img_x, s->img_y); + } else { + out = stbi__convert_format(out, s->img_n, req_comp, s->img_x, s->img_y); + } + if (out == NULL) return out; // stbi__convert_format frees input on failure + } + return out; +} + +static int stbi__pnm_isspace(char c) +{ + return c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\f' || c == '\r'; +} + +static void stbi__pnm_skip_whitespace(stbi__context *s, char *c) +{ + for (;;) { + while (!stbi__at_eof(s) && stbi__pnm_isspace(*c)) + *c = (char) stbi__get8(s); + + if (stbi__at_eof(s) || *c != '#') + break; + + while (!stbi__at_eof(s) && *c != '\n' && *c != '\r' ) + *c = (char) stbi__get8(s); + } +} + +static int stbi__pnm_isdigit(char c) +{ + return c >= '0' && c <= '9'; +} + +static int stbi__pnm_getinteger(stbi__context *s, char *c) +{ + int value = 0; + + while (!stbi__at_eof(s) && stbi__pnm_isdigit(*c)) { + value = value*10 + (*c - '0'); + *c = (char) stbi__get8(s); + if((value > 214748364) || (value == 214748364 && *c > '7')) + return stbi__err("integer parse overflow", "Parsing an integer in the PPM header overflowed a 32-bit int"); + } + + return value; +} + +static int stbi__pnm_info(stbi__context *s, int *x, int *y, int *comp) +{ + int maxv, dummy; + char c, p, t; + + if (!x) x = &dummy; + if (!y) y = &dummy; + if (!comp) comp = &dummy; + + stbi__rewind(s); + + // Get identifier + p = (char) stbi__get8(s); + t = (char) stbi__get8(s); + if (p != 'P' || (t != '5' && t != '6')) { + stbi__rewind(s); + return 0; + } + + *comp = (t == '6') ? 3 : 1; // '5' is 1-component .pgm; '6' is 3-component .ppm + + c = (char) stbi__get8(s); + stbi__pnm_skip_whitespace(s, &c); + + *x = stbi__pnm_getinteger(s, &c); // read width + if(*x == 0) + return stbi__err("invalid width", "PPM image header had zero or overflowing width"); + stbi__pnm_skip_whitespace(s, &c); + + *y = stbi__pnm_getinteger(s, &c); // read height + if (*y == 0) + return stbi__err("invalid width", "PPM image header had zero or overflowing width"); + stbi__pnm_skip_whitespace(s, &c); + + maxv = stbi__pnm_getinteger(s, &c); // read max value + if (maxv > 65535) + return stbi__err("max value > 65535", "PPM image supports only 8-bit and 16-bit images"); + else if (maxv > 255) + return 16; + else + return 8; +} + +static int stbi__pnm_is16(stbi__context *s) +{ + if (stbi__pnm_info(s, NULL, NULL, NULL) == 16) + return 1; + return 0; +} +#endif + +static int stbi__info_main(stbi__context *s, int *x, int *y, int *comp) +{ + #ifndef STBI_NO_JPEG + if (stbi__jpeg_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PNG + if (stbi__png_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_GIF + if (stbi__gif_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_BMP + if (stbi__bmp_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PSD + if (stbi__psd_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PIC + if (stbi__pic_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_PNM + if (stbi__pnm_info(s, x, y, comp)) return 1; + #endif + + #ifndef STBI_NO_HDR + if (stbi__hdr_info(s, x, y, comp)) return 1; + #endif + + // test tga last because it's a crappy test! + #ifndef STBI_NO_TGA + if (stbi__tga_info(s, x, y, comp)) + return 1; + #endif + return stbi__err("unknown image type", "Image not of any known type, or corrupt"); +} + +static int stbi__is_16_main(stbi__context *s) +{ + #ifndef STBI_NO_PNG + if (stbi__png_is16(s)) return 1; + #endif + + #ifndef STBI_NO_PSD + if (stbi__psd_is16(s)) return 1; + #endif + + #ifndef STBI_NO_PNM + if (stbi__pnm_is16(s)) return 1; + #endif + return 0; +} + +#ifndef STBI_NO_STDIO +STBIDEF int stbi_info(char const *filename, int *x, int *y, int *comp) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) return stbi__err("can't fopen", "Unable to open file"); + result = stbi_info_from_file(f, x, y, comp); + fclose(f); + return result; +} + +STBIDEF int stbi_info_from_file(FILE *f, int *x, int *y, int *comp) +{ + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__info_main(&s,x,y,comp); + fseek(f,pos,SEEK_SET); + return r; +} + +STBIDEF int stbi_is_16_bit(char const *filename) +{ + FILE *f = stbi__fopen(filename, "rb"); + int result; + if (!f) return stbi__err("can't fopen", "Unable to open file"); + result = stbi_is_16_bit_from_file(f); + fclose(f); + return result; +} + +STBIDEF int stbi_is_16_bit_from_file(FILE *f) +{ + int r; + stbi__context s; + long pos = ftell(f); + stbi__start_file(&s, f); + r = stbi__is_16_main(&s); + fseek(f,pos,SEEK_SET); + return r; +} +#endif // !STBI_NO_STDIO + +STBIDEF int stbi_info_from_memory(stbi_uc const *buffer, int len, int *x, int *y, int *comp) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__info_main(&s,x,y,comp); +} + +STBIDEF int stbi_info_from_callbacks(stbi_io_callbacks const *c, void *user, int *x, int *y, int *comp) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user); + return stbi__info_main(&s,x,y,comp); +} + +STBIDEF int stbi_is_16_bit_from_memory(stbi_uc const *buffer, int len) +{ + stbi__context s; + stbi__start_mem(&s,buffer,len); + return stbi__is_16_main(&s); +} + +STBIDEF int stbi_is_16_bit_from_callbacks(stbi_io_callbacks const *c, void *user) +{ + stbi__context s; + stbi__start_callbacks(&s, (stbi_io_callbacks *) c, user); + return stbi__is_16_main(&s); +} + +#endif // STB_IMAGE_IMPLEMENTATION + +/* + revision history: + 2.20 (2019-02-07) support utf8 filenames in Windows; fix warnings and platform ifdefs + 2.19 (2018-02-11) fix warning + 2.18 (2018-01-30) fix warnings + 2.17 (2018-01-29) change sbti__shiftsigned to avoid clang -O2 bug + 1-bit BMP + *_is_16_bit api + avoid warnings + 2.16 (2017-07-23) all functions have 16-bit variants; + STBI_NO_STDIO works again; + compilation fixes; + fix rounding in unpremultiply; + optimize vertical flip; + disable raw_len validation; + documentation fixes + 2.15 (2017-03-18) fix png-1,2,4 bug; now all Imagenet JPGs decode; + warning fixes; disable run-time SSE detection on gcc; + uniform handling of optional "return" values; + thread-safe initialization of zlib tables + 2.14 (2017-03-03) remove deprecated STBI_JPEG_OLD; fixes for Imagenet JPGs + 2.13 (2016-11-29) add 16-bit API, only supported for PNG right now + 2.12 (2016-04-02) fix typo in 2.11 PSD fix that caused crashes + 2.11 (2016-04-02) allocate large structures on the stack + remove white matting for transparent PSD + fix reported channel count for PNG & BMP + re-enable SSE2 in non-gcc 64-bit + support RGB-formatted JPEG + read 16-bit PNGs (only as 8-bit) + 2.10 (2016-01-22) avoid warning introduced in 2.09 by STBI_REALLOC_SIZED + 2.09 (2016-01-16) allow comments in PNM files + 16-bit-per-pixel TGA (not bit-per-component) + info() for TGA could break due to .hdr handling + info() for BMP to shares code instead of sloppy parse + can use STBI_REALLOC_SIZED if allocator doesn't support realloc + code cleanup + 2.08 (2015-09-13) fix to 2.07 cleanup, reading RGB PSD as RGBA + 2.07 (2015-09-13) fix compiler warnings + partial animated GIF support + limited 16-bpc PSD support + #ifdef unused functions + bug with < 92 byte PIC,PNM,HDR,TGA + 2.06 (2015-04-19) fix bug where PSD returns wrong '*comp' value + 2.05 (2015-04-19) fix bug in progressive JPEG handling, fix warning + 2.04 (2015-04-15) try to re-enable SIMD on MinGW 64-bit + 2.03 (2015-04-12) extra corruption checking (mmozeiko) + stbi_set_flip_vertically_on_load (nguillemot) + fix NEON support; fix mingw support + 2.02 (2015-01-19) fix incorrect assert, fix warning + 2.01 (2015-01-17) fix various warnings; suppress SIMD on gcc 32-bit without -msse2 + 2.00b (2014-12-25) fix STBI_MALLOC in progressive JPEG + 2.00 (2014-12-25) optimize JPG, including x86 SSE2 & NEON SIMD (ryg) + progressive JPEG (stb) + PGM/PPM support (Ken Miller) + STBI_MALLOC,STBI_REALLOC,STBI_FREE + GIF bugfix -- seemingly never worked + STBI_NO_*, STBI_ONLY_* + 1.48 (2014-12-14) fix incorrectly-named assert() + 1.47 (2014-12-14) 1/2/4-bit PNG support, both direct and paletted (Omar Cornut & stb) + optimize PNG (ryg) + fix bug in interlaced PNG with user-specified channel count (stb) + 1.46 (2014-08-26) + fix broken tRNS chunk (colorkey-style transparency) in non-paletted PNG + 1.45 (2014-08-16) + fix MSVC-ARM internal compiler error by wrapping malloc + 1.44 (2014-08-07) + various warning fixes from Ronny Chevalier + 1.43 (2014-07-15) + fix MSVC-only compiler problem in code changed in 1.42 + 1.42 (2014-07-09) + don't define _CRT_SECURE_NO_WARNINGS (affects user code) + fixes to stbi__cleanup_jpeg path + added STBI_ASSERT to avoid requiring assert.h + 1.41 (2014-06-25) + fix search&replace from 1.36 that messed up comments/error messages + 1.40 (2014-06-22) + fix gcc struct-initialization warning + 1.39 (2014-06-15) + fix to TGA optimization when req_comp != number of components in TGA; + fix to GIF loading because BMP wasn't rewinding (whoops, no GIFs in my test suite) + add support for BMP version 5 (more ignored fields) + 1.38 (2014-06-06) + suppress MSVC warnings on integer casts truncating values + fix accidental rename of 'skip' field of I/O + 1.37 (2014-06-04) + remove duplicate typedef + 1.36 (2014-06-03) + convert to header file single-file library + if de-iphone isn't set, load iphone images color-swapped instead of returning NULL + 1.35 (2014-05-27) + various warnings + fix broken STBI_SIMD path + fix bug where stbi_load_from_file no longer left file pointer in correct place + fix broken non-easy path for 32-bit BMP (possibly never used) + TGA optimization by Arseny Kapoulkine + 1.34 (unknown) + use STBI_NOTUSED in stbi__resample_row_generic(), fix one more leak in tga failure case + 1.33 (2011-07-14) + make stbi_is_hdr work in STBI_NO_HDR (as specified), minor compiler-friendly improvements + 1.32 (2011-07-13) + support for "info" function for all supported filetypes (SpartanJ) + 1.31 (2011-06-20) + a few more leak fixes, bug in PNG handling (SpartanJ) + 1.30 (2011-06-11) + added ability to load files via callbacks to accomidate custom input streams (Ben Wenger) + removed deprecated format-specific test/load functions + removed support for installable file formats (stbi_loader) -- would have been broken for IO callbacks anyway + error cases in bmp and tga give messages and don't leak (Raymond Barbiero, grisha) + fix inefficiency in decoding 32-bit BMP (David Woo) + 1.29 (2010-08-16) + various warning fixes from Aurelien Pocheville + 1.28 (2010-08-01) + fix bug in GIF palette transparency (SpartanJ) + 1.27 (2010-08-01) + cast-to-stbi_uc to fix warnings + 1.26 (2010-07-24) + fix bug in file buffering for PNG reported by SpartanJ + 1.25 (2010-07-17) + refix trans_data warning (Won Chun) + 1.24 (2010-07-12) + perf improvements reading from files on platforms with lock-heavy fgetc() + minor perf improvements for jpeg + deprecated type-specific functions so we'll get feedback if they're needed + attempt to fix trans_data warning (Won Chun) + 1.23 fixed bug in iPhone support + 1.22 (2010-07-10) + removed image *writing* support + stbi_info support from Jetro Lauha + GIF support from Jean-Marc Lienher + iPhone PNG-extensions from James Brown + warning-fixes from Nicolas Schulz and Janez Zemva (i.stbi__err. Janez (U+017D)emva) + 1.21 fix use of 'stbi_uc' in header (reported by jon blow) + 1.20 added support for Softimage PIC, by Tom Seddon + 1.19 bug in interlaced PNG corruption check (found by ryg) + 1.18 (2008-08-02) + fix a threading bug (local mutable static) + 1.17 support interlaced PNG + 1.16 major bugfix - stbi__convert_format converted one too many pixels + 1.15 initialize some fields for thread safety + 1.14 fix threadsafe conversion bug + header-file-only version (#define STBI_HEADER_FILE_ONLY before including) + 1.13 threadsafe + 1.12 const qualifiers in the API + 1.11 Support installable IDCT, colorspace conversion routines + 1.10 Fixes for 64-bit (don't use "unsigned long") + optimized upsampling by Fabian "ryg" Giesen + 1.09 Fix format-conversion for PSD code (bad global variables!) + 1.08 Thatcher Ulrich's PSD code integrated by Nicolas Schulz + 1.07 attempt to fix C++ warning/errors again + 1.06 attempt to fix C++ warning/errors again + 1.05 fix TGA loading to return correct *comp and use good luminance calc + 1.04 default float alpha is 1, not 255; use 'void *' for stbi_image_free + 1.03 bugfixes to STBI_NO_STDIO, STBI_NO_HDR + 1.02 support for (subset of) HDR files, float interface for preferred access to them + 1.01 fix bug: possible bug in handling right-side up bmps... not sure + fix bug: the stbi__bmp_load() and stbi__tga_load() functions didn't work at all + 1.00 interface to zlib that skips zlib header + 0.99 correct handling of alpha in palette + 0.98 TGA loader by lonesock; dynamically add loaders (untested) + 0.97 jpeg errors on too large a file; also catch another malloc failure + 0.96 fix detection of invalid v value - particleman@mollyrocket forum + 0.95 during header scan, seek to markers in case of padding + 0.94 STBI_NO_STDIO to disable stdio usage; rename all #defines the same + 0.93 handle jpegtran output; verbose errors + 0.92 read 4,8,16,24,32-bit BMP files of several formats + 0.91 output 24-bit Windows 3.0 BMP files + 0.90 fix a few more warnings; bump version number to approach 1.0 + 0.61 bugfixes due to Marc LeBlanc, Christopher Lloyd + 0.60 fix compiling as c++ + 0.59 fix warnings: merge Dave Moore's -Wall fixes + 0.58 fix bug: zlib uncompressed mode len/nlen was wrong endian + 0.57 fix bug: jpg last huffman symbol before marker was >9 bits but less than 16 available + 0.56 fix bug: zlib uncompressed mode len vs. nlen + 0.55 fix bug: restart_interval not initialized to 0 + 0.54 allow NULL for 'int *comp' + 0.53 fix bug in png 3->4; speedup png decoding + 0.52 png handles req_comp=3,4 directly; minor cleanup; jpeg comments + 0.51 obey req_comp requests, 1-component jpegs return as 1-component, + on 'test' only check type, not whether we support this variant + 0.50 (2006-11-19) + first released version +*/ + + +/* +------------------------------------------------------------------------------ +This software is available under 2 licenses -- choose whichever you prefer. +------------------------------------------------------------------------------ +ALTERNATIVE A - MIT License +Copyright (c) 2017 Sean Barrett +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +------------------------------------------------------------------------------ +ALTERNATIVE B - Public Domain (www.unlicense.org) +This is free and unencumbered software released into the public domain. +Anyone is free to copy, modify, publish, use, compile, sell, or distribute this +software, either in source code form or as a compiled binary, for any purpose, +commercial or non-commercial, and by any means. +In jurisdictions that recognize copyright laws, the author or authors of this +software dedicate any and all copyright interest in the software to the public +domain. We make this dedication for the benefit of the public at large and to +the detriment of our heirs and successors. We intend this dedication to be an +overt act of relinquishment in perpetuity of all present and future rights to +this software under copyright law. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +------------------------------------------------------------------------------ +*/