From 3126e76d031f2428e59fea75662664b2ccad72e4 Mon Sep 17 00:00:00 2001 From: Richard Peter Date: Tue, 8 Dec 2015 17:13:36 -0600 Subject: [PATCH] Omaha #4837 - Upgrade jasper to security patch 2 Change-Id: I29110bc4d8c8d762eb19b57899d2520e99d8b7f6 Former-commit-id: 646a336252f5f931ace17c43b6a14e2c54abcdfb --- .../lib/native/linux32/libjasper.so.1.0.0 | Bin 377620 -> 377604 bytes .../lib/native/linux32/libjasper.so.1.0.0 | Bin 377620 -> 377604 bytes ... => jasper-1.900.1-security_fixes-2.patch} | 510 +++++----- .../src/libjasper/base/jas_icc.c | 6 - .../src/libjasper/base/jas_stream.c | 14 +- .../src/libjasper/jp2/jp2_cod.c | 2 +- .../src/libjasper/jp2/jp2_cod.c.orig | 921 ------------------ .../src/libjasper/jp2/jp2_dec.c | 10 +- .../src/libjasper/jp2/jp2_enc.c.orig | 436 --------- .../jasper-1.900.1/src/libjasper/jpc/jpc_cs.c | 7 +- .../src/libjasper/jpc/jpc_dec.c | 16 +- 11 files changed, 315 insertions(+), 1607 deletions(-) rename nativeLib/rary.cots.jasper/{jasper-1.900.1-security_fixes-1.patch => jasper-1.900.1-security_fixes-2.patch} (67%) delete mode 100644 nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jp2/jp2_cod.c.orig delete mode 100644 nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jp2/jp2_enc.c.orig diff --git a/nativeLib/files.native/awipsShare/hydroapps/lib/native/linux32/libjasper.so.1.0.0 b/nativeLib/files.native/awipsShare/hydroapps/lib/native/linux32/libjasper.so.1.0.0 index 570902ae5d3706f82f78b4c5f4e9d245fec200dc..6a490b270b2d56103eb6510c0cc397c9afe95ee1 100755 GIT binary patch delta 84443 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 C+ zo!qG>^q8=p1z+zX=X4zH^Bp&V&-n8WJdG;hBJofTiM5o(MCgvbRlVnOJ&-YmHt)i8 zy#k%srI#yNbrUz@S$Foxr4G(*>VbW%Me#0F(4m)%@8(b)A$HNA$K;z?p-Da$O|Iq8 zBur_t7A0Wv@a!Lhzyd729`utPtJ$}!k%X(f8?N%aV60D+z;+Nw?|woalIfO1Z(J|^ zTbKuXI10%<9MBH$U`E!+uAMms$g+GlCG1D)xmzdgD*d+`qxHsAeUDx~$W;yVZnP}M z0g7=xCGOGd;YR$!d-Q_YIR0~09D0ADIQ;0%9=%b#t8lZ=&k{b>sTE2kar{ZkNWQ-U z)=pZmm}AsFkq}f2^oWumM+z_UV`fWq}R%3A9LuDC4P@$8Ba@o z(o2@Uw}bs5gdyTgZUIKi3zm85<6|6b;@AZn-|`NI z0zA4bhvHDdU01URNwFFf$HIB4he$Rtvw5yHt%3udICavL z{?uRopWNpa_ujcK-0q7cx8vY>y@&{MO}xbi5-+&xlAc%7`Z)4k)<4#=rI?e&nc||E z4(RKpY5zFp{e^LSHl}tTNN4IaQ_a*A-JzX#th$ynwVaI3)ZC`HFk+4VX3iA5d?3Y_ z2`1yaH!y3&RMV{P8G0a%f2rGO%RldLj zqmX+{YVb_{yRSep$p zlV=wY6vOP}9bI4NOxgbf>@oda%HiPP%yO8cdD7AhJ;0WKBwJ*J<4}g~E!?;F#3Z`4 z7fxLqKCS!YzFQqX)w0?7g+^OZt*11u(Jczi`YhNV{1EB2qR3xXV`A)MxZ#;l|u6vevT4`5gcGttYaFaC=($pdA)SYV<>547RtEYQL?%?0A3FdoAw!z8z(fU|n3qFG-a z8we{VB%j36HikJo^h#|@Bk~zhm0rPYIEjS_#hd;q#5xx(VO_BZ^oy=EUjy3<8}BeYn$J6iH9 z=Fyb7Z*l+geZW<~Nx*(b)gne7VfzwBNJxG_5ygz4psOxJ$zNbPd}7=T!3e4=|3d#f z#WA;-(O0uyXv>T>pHSr>!^cq|z;Nh6Ctdif$U({fdtvV8Hv@fM01z<@%wStBqM|y<7CMvJruO z0QIXFzE!@i%wrz;3TRz*mg~yVS#s>XDR-w1Vu!s!Q>x%l-%HwB#qh)ZLno>j{`NbK zSa7qObRSsh!3}b%_k)ZtV2bf%F}3TxrB8a{DDjl`U)@Esv8YG z<7LDR%ttT<>r~ySf#?k~tI)|jt%hjcwCucUd)DKu0nQld z88wO#aAd-ryiKPe=}c+#CW&xd{C70|I}mP)_P8iO^Y7~w$^HnqB^pPKP95(1W;|fy4nrIgOqpmfL4z|K| zIUirpo|;CdqJP$U`@Y^hY>6J(OXjMd*|y5-AF=ncmQl8Gy($=OCwiru1%JIP=HpoT z#@8UwxXudS&)(n%5_zsV6d#?#!F{HcZL~abQG}M(GAaf2burVu9NDd?q?e`pwT#x< zJ*r#VxQQ!mi`Fs9Yx}8r9iu|9E5Ey};aTP8H9uv|3$Mq)m=4 zb&bLr<_IH0jR0&fUL0yv)mqW>I1HE9Lr~$~7|T;oN7xMn({}?$2(7zJC(^ z*~q98e_V;F9iY~6?&6fAB{i3{rPu7fQj;6Vd|&e-{I)J$@>`BlexqdlRFW-rgD>F- zKZhUx2X~vqEGKcY$1C>H0slAe|H2wZzc)5~qFj~y^#e+}t5ooTl@Dq7A=cB>w24tG z-p-~#?fR*h%mXY% z*O8p_(!5R`Fx%qUMC(-RhMQ-f)Mg*ZZwGJx`vw!kMnUvPm9-#G-;tSPqR9k z&t;>x!gO%duy0lQeu*qNyA)xr>AA8E$icQvv9))y*^?sQ&)RURxuJ;-#d(s^oC>ut z+6KD{8S()kQwwvyWJtU%njP#;9T|i)JYy8AIhZhJSn& zU$zBKfCpsVud!eHqr7TkSaEKsyr%Hr(!8oGt5z5;D)Qnf-j!yW`k1oWV{aD!Y!=rF zzA0BVI+?6Ruv+^e-d)rq((vh@Nej~DA4q1bN`^n~^}i+af3P-GtPKm%?^U#7zS9fI zPDfoM!?($DlhBw7d}0LI7Qiz2J`y$f1m+|f@`=#^U#s8xiBTy2v=2A^zbgyyej2b{ z=86zLH*x%2xsB)flPu@FkRvPSl*QZ%u*K%e0hDr1S2pwYbe5qnD>m(nBciQ=EjcB8 z>3Bz@xnpHJqojtt^oKt+N*HUP9Hq85%92-mOgmf!nxC}D68J<3+)tg`V=NFuQ`#FP zaC_*6_Qnc)t2e9z`u8O?xPuXxO^lnYeOY3hdSTl^2Lr1|Tj^LwmeH`=c%O9IxZG5x|Q`XWce{gq$mI6R=Kuwpb;B^aXXJKQk&4vU5rYe&#X-I50fvY zw_S|)*{m9qL(5pD<#XKkVGM6PUpJLC7jn-r)_%#X{P=!Sj@(YjA!mh>(}>P>LvfU+ z*WHYGTU%6xgybFgLa6bFUo{)cel{zTYwj$3EnKa```M^?Poo;G>|xBdf1RH>EI&{} zcjISz5oLH4j+Yq%Ulqw0=;XtZiJrz``+bxV4)bhhj*{fw%lIa5L~b)B^NO!pxmkV* zy57quT)8Vs154V-%|EQMS|u$g=SW$;c3S1;A(ifJv;6^twN$7u(2ZfKlHz%Fe`@$griqlxDTz@OH3p+>tr^^D0lyk%EcHJw0G1o z#wd>abVtP)=e2&+YM4=3*#Dym!!V<%=r}&i$gh>G^WY72lc7H+UH z_CL-co$2jxqoY76wI5-WDdhk?u2PWK1jzWK$Q5s6<_~*G5!jJ3!tk@@d;bQx8BT{s z809M6P$u}~AzRq?+_dD=XIy^r_1GBPdElXfD^THBqaS+yNwLNNobG)P3$N-&MMoOV z-DkgKb@3%MIy=l*M+M@Hp5CkOnqd>A(o%;lG(FBJop%wEL*`nltSqL3aYpYJ)zWil ztRYWw&Xag#oXa%_fvNFuKWr&k2BV`LVcK(MmBEyQ^0WFV) zG59r$_T+tpfV$6f5aEC>&v+Tf(()I^aNB6;BhT56#e(k!x;EA*5`X1irx54NdODI~ zrU3W}->GBwn)WerZ{De6AApq9!X@t1Ik(7SaR8PA#sazl8UsoLJOPgvat`jZxCE3x zKli{p_&z9c_ZhMmuVVYC*cB?av2mA&Jt{Ur#ZGX>+V65(pkm9Y*eGYL=UsS%Gd7os zZS0Jdw^~S*9zA-~QR-CM8RwnWM+rUm$W+(U8C8hyMUrfLRMcZQFz2Lkk+e!GYNd(_ zrZ(e^pu&ezA;jF6;5B*3J6vpLN_a&{|JO?`2V3~phf)hUjHk6^HoU<~n|fuh50&U0kdmWR^v-lqvy3Qb3k zRf58%8{I|z%d~E~(WzFaYtGU-@@W_66*GaUyP<4Ca^V?f+Y6hZ?Y$=(8PlxaQ;ivz z=wGG&GmM@#O;Y!w-)9&@_)OqTW2@%IkJ?mbmeEFZyGrxc8HH%xEMtdl+HDq%(|TWG zC^Me=eQErQMflc97*+j3F-b--Z9UCNGJI`8Xp$0=r_z=r;~TN&hG}DI)|s=75%$x6 zb9CiIDz@H;5%JeKK7^vaHSBbHy)j<=d`*RXt=VbT2BVCv>MiEL`Mr|Mo z%{BUn`4>zDbI&(|ZO!2_{9*MO^Nix6f{ZCl$@7dV;^ui5vL!c|>_4hAA7io6)NQ`; znO^k#8~Q3p^EF0pO|@{4AKm!Iz@6jsjhVI<*O>tqcP=n0esm~>8;xf(1dn+wI89## zH^87U+3jObs~+*LzwB;)RN-Ce?gC?``#%ajLE{!0N%o&1DIvMkc*?iPD3Z70OUTGt z8tF&%78$`Usv(s9s0N(W_p%-fj93j=EbGagpzMf zrI#2N?58htSmiNfU23!|y7?EbzxZNjUUjS=71ukpo1{5FBbVY`MGsoP)Tr%${}S`H z8f`A=@W;6$Szj2j1-)KsjKqt*m}Qu9pQr81jAbI%Nou*=C~E6b9E@hfAGn08jW zy94eXD}?1B`K-n}#N9N0HP#f${?5r@IcBxdDrluyKC&G(KfgFol~_{ZXl0AnM$8e_I7b<(9mxvw?;wWq-Ca9nx_y;zI7_!G@t2luVE4sU^b@o#TBIp473 znrr-SVta+s#j9GnvJT#Vi89vVRcr;?_zmi`7h}@#L+m?|&xB;3L1rb5KAy9ZZakKw zlG+RX#vEe?;7GqQSe!hX$uUXfcOqP)OKvo(+u}|z@kQ#o(J0}5Nagk*P2FhJ48Eh# z_}$W(j#;n;AoJ>R)jKRWMtzcv5+ddpO~bQPt7B%Z4*@2FzL;1rB_K`^Fz7SjrcvqERc?j=wOo9sBe$@ocg4^#L7 znzq>}?K@YYvv+bgoUX8m^vh=B3c9>iTa1!6cT^FaF{Be)jH2$X|1*_aOpmr0g+4vC z1I{G}gm2Y=aO@t0K>GqeLrt_cBXP>m^C%YR0@TQGnPNfxQLeHWvehW; zm-h$d_-VdaqDq(34jKQFW^XloY^9H|R@3RbtwyhWBUw^b%Q1ZyZChj%rO3UStr1_h z#Y+{b6O);Go29s4Zn_|288I_p?{uZoKwN zM1pAL64@L{3#L%$_wdHI)ESSES=p5d_>pH?_ffQ#q$#^GA~PGir0i6$>AUZZ#(8t_ zq7nGs=!^xfjz1WS?bi-+1{&ZKDL)wh>dSV$p@Yq}0J?VCs6^#|Gy?784lqGVH%ecp zCFm=5zM)2Iw1fEi%JQ8?SO0U!C9VMOn$>{KWgSpf)gAeF86Ru7(!HAluWt6za)(hD zA27M-Fk(wg+$+u2+3cVH=iF!v4cd*l(P~<^+ZbctisHwm_MItckI^7(w@TpBw`>E< z4PiB0p8bysKAaUS+hEng$;P{DYB?!t7Ja+Ns9x9o8+NpvSX%pMR@jvN=E8XY*V3A@ zK{D6)a+x8Rb9?hIZIuZ* zS{^dK((Jdkv)Cq)^!TtbQ6z3Qm5`&2jXxVrOZ>Hs<3roXm?d$_G5Qx{wPyd}JI-H$7F6Px@ll=GBnx)8 zS+Kj!g8iIX)I2y%Hj3@d5EN_=C2k7g^xd!8GDnx=hQH9?eXXj)gWrtujw8PsZkoPn zWmec8{q$FF==xNQ8E&0K=Ud8={}gEKJJzu_-eDAQ+E}jdS)Ns?K6X?&gSVSnJncVg z1Qqp|!$V$Aj4$T$pS;L7HDxt(*Kb7c&Kk9a(a2HzcjKu&&w!pIdW?u2-nZxAO1&{% zZGFXX6OPEM#s;^JmcGM>4;@}7Ai8J&L4ErK#10LJ={bBv-+<;#ngqlQ9~zC&Toy(m zO(dX6yMUl7wMOT%42Y@Lqfg)7kcj^k>-Qhr^YgwH>-QeaTs^4T-^OnhU@9fP|B$$z zgZlRg=-sd9kRg2s1q>NExL4od0sV&rGzklj2f@OQ&%t=| zCX-0q&XOC?<7W*V&9_(zfrxh=oC~&C-0*znVX@$TEX#K4me*R^efOspOFp1cl$6)% zTlhwp#R4}P%2NQm+Z{T&k;MXE8hW3!Jl1VAD4%t7{9>fA98}I_)*27}) z0R#g=01;fDGTmak#ya2et*?a)OfDk|gpaUQp5C@nFSPWPX*abKW zxB$2fcmZ(h1Aag-AOsKr=m3ZY!~v$pjAp}M*$ZAw*fBzZg|1# z0|*9$03rY#0MUTB0Vw~e_^}wU98}I_)HV^^;!GI7z1fT;T8W0DV3RnzS z57-4b3b+8c4R`@?8w7qpFdzgF0q6jT2E@hV-&DY2zjz-_<_fZJdQ00aX< z01bV3406GAo0dat-fW?6IfL(y2fD3@zfENI_81Msv0U>}0KnFl{ zjAfuD4nL*>76aA;b^(q8E&y%=UI5&1&6E!y7!U%80CWIE1L6Qv0gD0a0lNS>|HjTl z_)PlU-&&Zi`&g~j%=^z`Sp(=jqHmu^ zZ!MOF8Q3cXn1L3%6=1xsSz<@`jV*(dE}!3PyJCObim(Ro7r+~b zrUn8w0qz0!tw%GQ0dXXl7$Bc=MZj&Q^ z3gY#}W_-VDF#|qDywt&$qJphPeCHhWwdQD+Bt_r5cTBJDF7eZ5Y8LBU%@RYVyy1g} z_U`QxUw46K=`>HX97X&}&Ix5(xmVf8``?$k-YatEaDb2CqVJ^U=4n z7ZsNg-=jKCg{NKBEDKXKOZ97-WdXt`{x9^G5k8q7l(G88Pe=4>kX`}cd*PO2e`}Vu zi2f4cq5o=@E`Z3}@U=Udr5(cOBHaD1W+?+GbWgJcV{c7&gfCRdEPbe1T0TNarfU|y zXLkw0d*Sy4zz=|{fNlt1f$*)5wRp>^$0(U6nx)`V)CfeZLPVvvn&opq>^seJ>b+)Z zkMMOWffZI2S8Ob#+4=Xk_|2B)-`GT`mA6*T z;}a&NbvVsqVN}1o)yKaU^xzCJT|&5NasItDTzY%K_^A7+Bnaq-Cr8KN$vMSO`S)A8 z8UH(;9Dfy09nU*>vJ*eS(~4&Xo^E*B9vc=Lp84_Q4Ey8hj%N^_x$vxvrw5*O@Pwh_ zEe-G^Hv*dAnFr72czWU47EjJe2R!rP`5B)1@$7*opSJuQPtM5@Jbmzt!?Pfsf)0rU4;lH`=nPIf8rnMYxscEess#c{dHLX?2tClsDUe&Tzh-bN+CeIrfuEOS= zHve(j3^f2;1Wd>C35FXm4aaeM{AA0A0+^TS&IOyWolU6zoVtYphrT@Ph__5`gk}lQ z6`an5SpdT)0Ic4~=?PC&7$zdj0B}4%`7a8;4}Bw=K3t0j{1)wTMTU1o;M z;6VtMzzpiona(=;q%P*5-_aO;{6MSu;h+=zI6{y4af%9u;_(MH;>TaqpC31A9v%g6 zLmaE=wAAF9R!e6(6>2SIO~KDc^qhZwTF+`ZOGWEhOSuP5u*x#E&{==0A5V7OX;3|D zKsBa?HcP?8xhaB!z^eSG%O=TU8APq>TOWx-!>E1(Yb9*F9NfTK8COev z)xcUDAME(4fwe(Ak2%qtpj138|KPa`_+At-;}}(1DvUsXqwqYi>#{%0hD$^9R~k6Y zut+|pZw!3X0#si`-w}A@sTK=Hds1F3p0z>WT%|WdL)H5cH-t`90n0%!bun5+g=5HM zc?S7uL#BiFE$(f1Wd&W%m;oN*>RTXCgAUW zr%H{j^~Ld3Gz8E1r{7vErJyL&*EcMdGkcJ0#UBYge4oVvx03OFfZI1%ET5|Q(ZDya zN6V|?=K%NlF3Ts^1MdZSgH`-?;CX;^UE=ii8t|cZ=gr=hbMz+&8Uc3}8Ab+{7H2G$ zN-Dvpz{i|LF)92t@JgU}7I^{q*5gy?xmA2=;MyM;@u>u>0q+DnO5t^_)h(8veuqF6 z&;$gfAdu@UE7TRZA8>btj|6U`lqS~Va(-7^v28{$&-H>7{u6MX_nlVw8Q?qzT%_<@ zz5C7%SGC!5a{z7{x7Jh_XIB?X)(p(tF5pLRn^JR7a40&aqU zXQs{s9|PxE>Q^dWpc&;E>qCX}{qj6}t*Y?Sz!dn0jvuT+b=o*gz zp6Uvijx`(t9MfLQ2!$sA=NWK}60it3&xUg=*H{mnXT{D0_5tS^a*(1w1)OKgd6m2y zzU8A9|G4o`nJb{bH8ycLRPn9SyFc zj|JWo_!kPF4!n4(#q!+DK)huI0=(~`5mh<*0eJlVtmfkc@RcRAOnL>l?SaM8ObL7j zyy0`0UEwx3`5_mD0)RIN(q!|-7Oo0B**aAZOj(HFoQ!vYf&J{@=)D6~Q01Uv-_H&pnyz+WKV*}Uumz8MP3${G)iP9mWB zGjmkN8vYIZ2jFM|WrF_!e~&u#u~Nu07jg&-HC6E?fIljcWua=oD?tIL&olu(6#R1) zeP`g?12ORgK7bSKkAO`unGXWExtIi;fIHix<-j9RZ-*)YKL9U+1pid{&%nFF#AOtI z8hCpo&_&@Xz@HYU?#-;NtM0j+U7O%>yKhC;%7s0#|!Uhn0?}8r!z8ZL52;lh3z~{N(Pk>JV?zE~$ZZr}9 zud6eUv$<*m`1#%6?EDP%`KWFQ$QevXBe+hOf`^%*QMr!b9PP*t=Yf zPJ#E0@yvWx;5B#%+T9s)%q&4rod`~Wk74ITfzM$vQ`S%g4#8rwbPMBYSj?2G)c*=B zCd(I<3o^vSEV)a$G%O~{W0si|t055EWK#{$7#2I_E6Vr7VzX?ooC%Aq(v87Eu-Gl> z=(Yw%!(zicso`h9V$a;5yciZ+rd@btQe2Nf44Zp3flpvDau(MJ2VgOHx)Pj$#n$N* z_!kztCrg)A;ChCO*g#$U6jz+y06 zp!_s^aJFY|^0mb9pRakQvKHWF_{SrOCS3}rzv`Je>c0W*`3m!lY=1<7?Fd%CNgHc| z`{AD!Vu;iXkHJZABs$SKxXe7y{HFf@!tIw}2h|MnCgGt@`cPr`oAsUx-%>W?v5J1FTCU@?804CkcB`j-Y$XZuvov(YJzXUVhNXXxhSv} z7OVJs>c0~ftN1GA?_jZzuU0+k1N~}7AyN^_3sUf#ohIKeq!2M-@jM?NpMU|@UF@iAP{qW0j=USu$boA0@xC7 zgT+jrto#iuR&KX8oP@<>?`rTeET(yv{`EyUjsC?wmMV}^l<_Av`wSISCxF=R=P5UZ z#fI+^co-IYK6_fL&=c@=e|u)6@-SG;{4V|kSj_w_)qgH5CVw{!mluukh#i65pwgz< z1Q0v_R*kR+7MuS#<)g6J|Fe|O!*U1U6wJ$TlKX(2>VFd~cLQz%T?v+Zg1^u`FGu*>r34cu|WFus2WD$G}?y60+39g?b{C>FU z85T43kNtw6QjP#V13Vd~U^auB;XnTHtbtE@eNDLRdFFoYBQ4m@-EH^37T7TC6#t7s(#f{?!VYyOq`~)o5Dq)2D<~dldR-FG7xI@#3 z`9L#V2+K8#^Is2dhu!+W3zjRFJ0-lV|34s*dl&w*CA`1~?q1@CySz6tj*CRh9ol9k z;D`7jv~=Z)@WrAL(^$DKJhNRwffn#4{B4Hh*99JPHavSU{}nJ#BN%{y;cDA_GF+-z z#N40>&V#EokHpWR@54LcS*q|(czer;c}MvmyslKl1Wf7DWM|-C+B1r@i7vxlTEsLF zqlg43z_PWeTEyI~0ZPFo+i+8+38umsD43)Q-U|;wfd|yT3w*FGO{5Ax2`?jlRpnvu ze~2$LuoU=Z_$W18pY_Koun<9ie#y>FtsCK{tR-47X43m2CR@1ze1Q0FqG|+Zw1}9;sDG96Q94u19+flK8m;m5FZGKxNjdv{|LX@1Axk(XHi-8laT!G-P-vy82jG|4rrN{fd^ z%>KL~-wZ!DlD~nj{x#qT{#oQA;hVrC;quCD;NE1w^kNl!0)7yd(Jf6d5^i`Yh{Xl7 z5mYCD+d{2|%jMu*@GFa0Tyz|N2d`Tiu}6DR;Agm4j__Vd%m&LM*t9|g3&0oOipVlbEY(zz5(%nqfnD-NrKEC4-ajKNwhP zF`Hqe6!&&8RwK(L;8QvL(_ojskp$BbI49f+9z+Ii*!6(x?Twf*+KGnb3O^EF8TjUI z5|J96mdpS3T)eCl`B%J>7?;}!(CAS=zN`HPz7cu^-fKF|zXcz&Cz;0N*3|}Eb*K3!;zrxOcD||Qye-D2FyYw!? z&WQqk3LBaszG+6ANDU>&5PWkrQG%*)t(b4#qt{4)JK>+k`{psu)50y`)-!$cv3AP# zaME1g+^^gN&V1818+DlWhj)^`Q}{)ALk^D3N8p@jm<$JAG+yN^;7jybcb?w?pM+fr ze}I3__RS@FttfaFKJ|rfIqE)yN{-Xk&MEO&AH8tW&d>meogRj8Ta&U4PZntxARoGMw;yb8@a5eZ*#CH8} zi{L3DxaGH(L{KLs90DIn3(Tj;q=v@AnSP>)=D|y925}S1YWP0(A^Wj@jz^xUVa)sZKi}%7A zyqIv|PsROX@&Mr6)e8uEJQEn~NVbZ-a@csdEPE0yq{@@vw?-#ARe5;9bAg%WhyJPX zhffFQISt=f!V~`^e-?}7JCVf{a>f_4b*o*0;i zHG!`1%Bey8DzY!!`PxJqj)k2Qg{Q!arUh|J{Tz7M^dNq`Uko>&6~wPH--o}M5epc4 zVHIyi;G87*SuXwxeu_5@0fD3wo`84EW--$EXW>J00wZ^>(r5mGA6OKadFr2+tW= zud@@09Yu}cny{;phv9Mmiu~4|>bt}AX7yAXxa5wx-Qq<<)k^YZxo85_d;7klb5xKF%c}&2U;p^g@ zWb)ij30}9}w#232-Jd5WqTAr72PFI(!o}n9&s}W>m&PtTAB76h$2!2y+4;X$F2S?8 zcqW`BSEy8Z5=YcG;XVK3R!tM!1W)+NGfbd1gD>FvslI8SC*%`wWvmTz)c+#v916rt zz6#82pGOP^YMVe=c;cVo6A96{9_*ZG+!AhBG%yu3d?)yseV*A(pONqb;l=O!rX@3= z@F+Mh!}KHK3QvYx^!2S-uaK<&ixAY^%20A8f}fus;r2X?up4$x6!-1gE!!}YkOvs@=Ewfa@2fGdIu z=bP@DUVr$^8aAoY{*u6ONuYexWKkue;W&6GeZZCYHTb@}Jv)vi{Bn3Y*6(RV6W#$Q zALA)5!&3M=xE?nmjn)4&{8KOAbkioi1mARyJ|^dXiBO<2y}S`snl1_yHzkF!W~Y#V zD0BxrxMFx`BjM}7)mnNcpO&aOT!I>ErWtmC#|-cd{nDoYIGjSCc@dWMo`*|S@=QCK zev<8u$U8TGuxz%I9;$mnO<{ z2Wv|P``>neBv2B;2k-OHR5h+D0qT3^vidiHZ@ker19g}^43FyS5i^Y68y@zpXC`a> zA#m@Bp{-Za9|dn?%r?;Qlip1=ggE%)c;2~y+~mGRsI_;gnwJ*>#OjA{%4(3$t?(qVx6F{yKbbY|R0Y3q+?8k^0bcwhVqefmfHiQVn(}TjjIbSkSGQnNBYWZb2Qbs9 z|1o&{u80}0d;xaO_WEkrkWvF{H(gxm)U3RX9&xBVe`=*C>;%DIQ-8}nhOEP=`uD^vR{ThEl3_+!Z*lRU`*Wf3n zd8UU3cn4mxhA%a#|0eh-GvjpS-EhCcf!U*c99~%1XJ!j)>>})()WEgXd9%c?^L)r> zQ7BdnfpZd|BHXK|Z$|K00^AALJ;|^u5%Rt8v^9ZwNK4orzJ(gutl@jX&PjTs;Nb&k zHa<&wufs{qGfP8`nfDOXfx2pd&AAfz5{^C1pSxH8qt*jqsYzuK%|qaIO#^>c9uE9B1)a5@-pZzRNS2%AMdp zW<<V7$v@av}21LTg;A)s!U8kM_zwo$kwrKpf;0?SK?Ik-TS^qa7D93fi7~L}M zg|kL6%&21NPlP@o38Xl^wzh}!~`hWoCj8Pz`( zUIaf2+x5RGfoYarEGDWH4Sy%xC|`tKG2>qnY=NK^yV!IB2zP|bFzm)D z_lGBM4(uh9_z#CuR{4gx#)h8=FYXjx-HQKgxO3--J!}duhdV7!4D)RGIU*NyGuu7{ zqgr_JneQa*oYcrAxWQ?L8lNS>>uNHSvHZ4CPJ!1~3s1M=p9b$b%v_?Q;BI)>p70t^ z{5!(pB!3db&Z`2)qu~^$TFF4F_$7GbcF!JGC4o2Ltcp>)jTZlR;gd_{%a5Ug+3}tjAdw}(@^I$sY#WuE z!g~&KRj1qzZo7nxlzYGfAK^Yg`B^ymVFKrl^*k#W^e(1sxVhF>Mxq@YZI8e3xx5nhquh)eL%jD zZ-(b!f*F7^QlMMw(Eno1ym*_|Ccq1~a(k@-+QQCB2{PdsrTq9F@fo;ZLEqYpB*F1; z69yx|y%oDOZAr-N)-Vjo%0!#J-czphd#;`;m#c2M{D?WxIVj= zx0GAM&Pf3~!)1BHbBxa@95VwEY^jcgA{3aBaDV3dLCVwM(?i13s+8~zcy*qLefuT6 z9R4;(m2ZTnahC6(opc-QoG9=WJgcj(=LpXKrx1*0*p1LVp2xynh^f?dk{jUnn9JR2 zRt_$~YSxp)M1h)ccCn~weqGpSTEb=CVB4=X`XF3@Fde* zf34Ci_(-21eo`3^H_K*cto{pN=cGhy-~+rFaZR>4m;aaWXPp135ZkE_!@pv%C=1*5 z|15&jY>Q_hkP=1eQ%%ftV%Zcf2w!A9@1*{>z|M&RX>dW-e>YLphdWmD%;OsWK6ofY zXar#;y-fJP&7A*bXD@;w2xicW7ioYO;fDu?=5_I(4yO&JnbdzVoV_m+-}SDA<(p^X zZotg81zyZ^yTYo#*RXS<@JV4t!9ZF6B!f!`USc`Tk6gF_$J7rwc#Kyr4bNJNOxrXS z?$R+~(YOmddKVwJ4v4T4+LVxp7#f64F#1dZuwM@J)RE``VDt!~YcI{4Y-~ zB|xMhZ#ecRj!s43wQO;>Xabetp2E&xgKxuz*Qi75QmZT-xuri#L<1APk{`(^y7O4Vv z!R6*-N^#>HPOit7*j1s&;dIUsvu*m+0DSgB_-!^(;3fElSl=M7;cNuXi9*ZZIZ@69 znqW3uVW(%#D1Qf+d?EbumL&Kq++mP!zt1Q9FPz0{cv-_IrK7N{?Kl}F$#AS2B`k?R zB9uXpogSDK+9ztlUyxuw^=|^NV3%wymxONxXN@C4_Th3+=?LF2kA7pq^m@V#*}}Ok z+7LMFm8hL(B>aeU>VNAd%r07mlL=6r8fmKu%!b$P<$hRu?Q(c5r<5<$e*@h99)2W4 zOZW+VxkF-DehcruDTteFPQcBXMyVKE;0x(7rq(BX`;7*v0k1I!iG!T)H9%2#9u|xL zDBlh{CrwlzZkS`aZJx`&1Dx`5V8(i3hTY*|7$W-+SMnPiL+~yej^YSp!|@zEhE1ev zl9%B&tX9o6!a~?NQQ&>}O!dGWr_CpD-G08|b(PKFTlgds+bx8Z3{S&7F|qyQg&gym zaP-E$58F1(4?kQU%ck~$BJj3~{4$3oP#S)L)sfw~O|S~QG>1v1E?fYGj;McY37=zX zZU+Z+px;CPnCXGQCxZbRVF0{&A!c^v5pZD^k8a8n;n!#~TFELf2cA&EH|(-3uYj*% zu^OxXTj58zyq>K5HJpEa_?q6H|BoYh=KM)sMd8au ze6v9_ydBQYaTu)y_aMHTdYi!yuzzq9QwH4cuE3n~Nng(Y0}(hUZ8{qMor9a})idC= z%!FO=lQw)iNBAcx#n4@meO5#!@83U-3s*R2cj9H|@Jt!!dg z_J?P%{O+M;Y=n^r44uS{f(h^-n0dvHikWaL6mnJiHk_2<+XoAh;Rh05oz&nixXao* zo{zqJomXRKi{OZ+HXPz60SM@qI zW_BDOE$h_`xn{MRYiEs*uJZFfHlSahCo(gi%AC1pUX&k>o)nGF>^CV|Es|Dq?HiM# zx9}6m5V3=T6}zCZ_h5+?JGhXwfQThm9gRKqUQoe~ zVnJhUvBzFlC69>bLPyMGiPS*;YUJ+Y*Pq=xy&n(3EcTk==-!G)n!P6f9K8MD7(w;^3#S}{qg zje4O7HV7{EW#sjeypCz!c-QK3#gad5<;9ai8|v6jR$8*K8hBWe%4oDnn>);kIHh&m zQlf$`#yMck4%e8{<0Si}gqEvn^h+7iGQz%h2iw**yYnI}I)vLwRT4_|)#?8@KW$-s z=CLMJa?~oYo!E7j((b*NW!YfJVbID(zA@CqAH z+Dr0p)t8+-KHc8OPAXG7Q7ccYVZB8=e`m&Lzxnn9{hQuz({^=OQ-5txX-Sv5KU1;~ zv+z#pSVQNi+pKX&h)%O^nqYjOm(RI3@9;Lk>zGf)`!@dG^GfvJqpg}LX@`dWp>>z! zY0O$%CR3G09Y`V=Aq1fwLIZ?G2u%^f5h4(pBba|$Bhm(;EkZkl4hS6)Iw3?MMC2&5$N*_;W@%fgdBu_5ndy_ zMachr5D%XOegS?(_=b>2X_!q6L4#m{V2NOZV2e;vk1sof(g^f%1Uex&Be)>AB9uia zkKl>mjZgu>4}m_FfK?F!5o#jTLa2=pjFA7Si{}s#uLo>kmWTdJQbUo@2-pN66rm|X zGX(lX09zomLTH1~7J)t;1$GwLMIhxx3I&G=Og@vpdc(jSctF)fiv`f zF&^l%RNyk;3WQY%e~7d-0@ni9BWy(2gs=r+E5ddJ+nOiS_SSCW`s~*GxRx9LEji)Q z+%Lmwc6=dkA5-?;v@wkq@43_I=%c~%i^aQ6Q>PZk@4t}PiCzXGo{bx zo+f&%|2NM5peVHq?|bU zW0XF9(ZYkB1FKtaN*?^!F}lsuu{)br3!J}ZTcW}1Fa1B)g8r$Hd1q|!?QW-kFSjlA z{;#^^L46hJ#>`SDR!#5wIeoy4Nv&2nk8kx|+WO(>AzM$wl|G%WwDNv8Z*l3td71b7 zb-bi0Svq_{uHU*%qvu|F8@Stc%BSpmZuj;CU0EI2qiR{5KC8j_Wm0>crr+|B7uP)w z&FMEIt!u{@&B6yqPdwHxZ`Q%4jr!MocW&9ByJH7q2o4{Md$sg(y@l3XbwL&eM=;h-U&K|$X-YewJ zl;uAT&1^Zl;q#Q7xG`Nv4XfMq%j}Xp1_fRWURUu`gL!}cJAFlk7pERLe)Fgr_h_G6 zrao%+x!vuoHPc>uJnONd(~Dv2rRa4r2kgRj{*>ay!aD|?f8l+q_JC6v(Z)v^tBt=! zugiV?!mjkDvb8=h^%*wrn0M06IvxW)zGxX*&uRDiJClyoxOiYvm%x$>4jV%=9;b9W zmu44zb=tO1vp*gU8obMTUBx?ZtHj-RY~>XE`{vFcAMVq;I@RhhptFUK&5OTZm$IJv z`F*#QwVsb{bbaCeVO?8??=OF7;2MYazYp0{#dX^D2VHx&8QS&L!TpDIopKLs?KOV- zG{(0EadOnPfPK=RPA@E4{rqx(%dQ66Qu|Zima6DKZRXOa-+}^PS8LJk z)`4MP&h2*^R`KVVBgVGqxyDUDF7k@&zj5QT|NPnM``%^#tu)il{hd>L(cGTBhMb)^ zvg5}O4Z81%aebW7Y4QSjq}{j@!SV=)a<^WjT?zbo+sVeu{^^)I=I-Os3wIoC{OI97 z$Me=4IzC(Koq2Zk`zvjh?)fr$&!OWrZ~tpq(`w7QTKahzDH8{u_ja?Wc5`$$_gYRB zm$lW$UtegGa_{elolZ4gcSb3B)Nk<3Bjxs3z8|<~;+WN+gQ{Kb(pvuS_Pv+CoY_2Y zv0m5fg6c>H98H+y}UFx=*=s3i=+1s!E zvn$@aw7uJO*RBqWGVYDIHg=J6DJN{k)3_UDy1O1Pqo4drGvvUz#2B}iAF9X3?%k*K ztX}`$mYpWXbYD{A)u2j`Z$^n0`z`K^ZJo)tUYD91yW)G-f7WczOm(*UDn(89 zn)u5@C1R?}P|5az?XFq5{jT4M`I;Vo;linatRdImHQpY&)AgM1%FSg5%zFNDt!1;P zy}oaXydLV7VZUwMkLMoe%T)UBM~G=y(mHHTrmdk7VWfjvueF^)YhM zMxPcV`d`sH(u`6?%U7bFhz~uwYVu>IPBbsVlq8ia+MZr2QLLBMix!YJ6zlb@??xK|_&pQcZd1bAb`2sjsZNUDJ6--|I2fNpo*AgdmJ8SDX5!SL>uT6K3o z@qeL*Q))0N0d*<9(N2=Ay2|RFsEi&7{p=;_R&QB)A_`PT{9d*!X}}0oC<&1sgP++# zKS;G30_3T$vf zrnN?@A{yLi1UIQ(cX6?>4Ko&2Dr1Xg@pN`Tqt9q4*|nR%V;H?V0f~vBu(GO)SV#J|Bn3J z#aeaKM)4~pVIg#~MBXRGIp|NuHX};JyCDC=B_`Dn{GLQZ8!}C9FO{zh{#~!g>UIZl zy%dBo?&PGA4hRAx!Qiwtkdk0{0R%MJN~5~2MBptN=yaQ@yAO)@p$<4}r6FjD;+YV@ z&HxJua*;?tM&x^;!yQC?9%g!@eoT#*k@PlFMa-&NXzixpI0Zx8^G{j&PsHbe;8>{0 z&mwM*5z&P)b?-zCHbYAZ(;)^hTpG=~xJXioP>rNR66J@ZW7DDQp9F)+h&y2~)RE|s z4lckfYK4u@At8bOi1)_EC`B~52h(^kDs&TZCu*<>sE3*wybHoLkE7S3ersf1{)?=j zi2lIJzKfL<(gymU>i)CKvf4qk&utg+E)AS%p35AU~O(rghQ0iCeGUIc2X_Gl_Z zIx_1crcs&oWfN$6k7y_ZAF{nyHl*3WAZC<`WgIy2qmO(df`M?BqHM9cqIf z2lbcL9#ei0Bz&SalhQ~=l#m5GGD4B1(SjhPCAICuqORYEU9~C{d#5!D1+xV*r!3i1>DtZ#@)as(df$qF;jnNWfGt zBbr+ab}Fowq!*&J27+kAW$B{G_kv2tqP2VtX$@+N9ktRAQN9_bfXzPBVH$CF2}ASY zC2Xn4{~7t^(p@gE+ooX^m0o!H#}`yncff87nFTp}_4C z+JcpAF$Q@10$KIlh`?$P+J|E{m|B(KR5XxK)k5+@eKOp85buovn78Ra=Ip3B{ z!YHT&_JUv>=EQaoq6Y2BO4LCiFit&=Li%Wo`BqVW5*SK?*~+)eKVT+p$HPpbJk@^$ z75{`)tGZRxU|%rQse2(q3Wl)v9a*x+Y@>Wj zFzQu>Nfq<$=tm^DuEM#bXwZOyDL5Z|FXEMIxE3OPQBNazi5_-EgFDA+r3IqF2uO5DkXC|VR0&i=zL$@Ml457A zr(sT6S2#oFppIWVCVdf|IRqPC^*SqoL%POsID8CpT=__c*gSR{2Em83D z3Hhb=7v>*Cx#c-nm`vsMQXcf>S=&NKz!CbF;9oeU_d%f(pr18Rf%L~0s$+K=E1hUy zB^XVGksBfyu!6cQDj`dBtVzRt62dzUKefI~vr*O(M4;vuNIrZp?jS4&vo!B}P^ z$={?N*n$C8Mk9R_1f4LYul3VPXN1TmqQ{j%V6q_C6%E=XYYRl|1D)wMi>VhnM9&@# zE;(sBXQ%je^td@DK>iTHiIF~S#T|?cnNWc+*r11J<$?xgfuPT6R?x$BU}$Y`w5~E> zEphY!WT2GJD)NuUoz=K8lJb%AIp{sIN=DYA4y5LgbI5rX@Qp9BHgY6Y$` z-4Igww&-Egk6=QSe*g*XJueq1LoC}AbGs-8- z#F*sI^U~<~5%|jM1;KqNFn^>*3X+vTA7_0vbnr+{f#H%;sW^66T}1IG;O}%Pjnqx> z*B=54pP*Im=SVAu89sgNV;A;+~brU|4?~_KcUNqZ( zeSiWTT_~#;Zq!;`Xmr(%S}6i-Q9Kmgjf=$Q0$fpi9m-Ek(@1}rjFw(XM}s@jAO=z` z&=~!-!7<2d5!azY+wrn`qe}#aBHlSumf}nVq<^t8uECwb+#xY<+z~M$Xqb)^&KA2)#;DP2>SO$X0=VU2TNFW4eaxe1pRXPR* zzcptCJJ9LqX}_gf_1c;k_Qe1v7z$^QB_w`tfGmw5dbF~IVq}klok+pJKopRx6dp`v zpa<>1K)$nT57GYiCsVJNsR0j^4>9w+QXs*jSU2<6iHqpK2pE|bg8tta!nrtp!@-DY zWqSdUWYz|UNT8Lg8dk1|eOT#4g}vxe&R(t5RfxPc7&;xUm0k*!j70vlky2AvG=&(s$-sKLAF@Sm`f6-E9e5UPF%^H#*e!O(;troLT3c%!h3$~QD(u+qBb`R%6=uhRS{f-@ zNC*yzR2Qq;Mlm7-NXM2~sLqPITL9tsX{I++h~8nSz*S5N@S#c|4jrt8Ne3|L;35#X zJQU8fDBy^Ow!(=-M^y$qAfa-tm{dv(;YjGvz8;0!hd&{KxJGb@Mg3Q(KXX5m{u1$; zD1V@0Vfl%mvj#do2KlOY~GxZf0D!&BjcVScWb;u7A7}dLQ|5FtUixRgjXO^Z!DPWT7O6*H-3*`~3eHJoI%i z4(Pb#g1tc3kB zB82~9??U(peIP`uj)YhlTnX`hk2@g@ju+tw_|1ekLGuUdEt}&if)cjlc%N__PKyZP zN`?@=!Yew2L$F;S9Ll6{LioNd33tN45#GYd6k!xxRKl|~Nq{|Y3QSlYTTH^*Od3cC z$2z98g;8uYd0uKqy7I;qJ4S~1y;=w2|N8l%c-vsIcg#-k; z3Un9fFEBu0h`@#dTMCR6*iE3mr+A1FI9%XFfpG$p1kM(?Sl}{&8wG9^m?7|xz-)o% z1l};AUb-z3i~@56eiHaipsu=*fIwG)?gIS<1_%rh*ic|gfsq2csR%9XDH37?4i`94 zV4T1tfwKiJ7Pw5{MuA%eW(YhaFk9d`fj0>CP`=wD!6-0C;3t9K1nO!C2?%r*=q}J- zV1U37fei(=6c{P68&FT$-%}*S2pleOqQE$TNdjjJTr6;zz>Na83d|6ANMN?Wa{_PF z!2Bl$Zi@t?z#M^}1b!2!t0^QP&{d$jK!1S&0z(8g6xdQ=q`+=9#r*Fn5@G}n7dTO1 zoWLZ3vjr{|xJ=+ifm;P;2s|V(Ti`i?H}vA+wm_r69D$z%eiNv}Eip;VR-mgucY*!_ z0|bT$Y$&j$z(|4mZsMV*z!-tU1x^$gCooCiY=MgfE)%#>;8uYd0uKosRT{QG6xSq# z_3;YiM0$V&97os*xB7%5nKX?M$J9xL5Aa$gVHVyICd7rx0zx>xiwUs@Uq-l1l2#E8 zXVO~2Ke4|e#Ies-!fV*@5yExbL)ZoLKZ71{i*|@`3Bz485PQ!Pgf+1xCHxh;Ji_W@m&V-T{!HquCl zWj==xzUCW3xa+xu1KlmKVfpKvn#0YVq}1B5$p%Ss3rFobXslNu5}l%!C??bxpn+QJ_o zOocx{=z-gKLinOx2xD>AO*j?yhHw)0Ja|<>vceJ3KuTzeYbV0+5cXiwC&EF{0m40SBprZo zVzq=@p#y}$&;de6CfO6pIEp4rf({V&g-=L`ZGqm49y&6~hY$xj{)C^P1B9<7sRki7 zxIu*2G=>m|MGL&Vf%zh%IDK!VTB}^`!^w zkOmU&gDXau$fV(fj?e)@Y6E1`f5Y~kb5LUqaC&U)>HlhA1E<5OMhT!rx#A9D&$GYYAUM2MDpnvn7m%9UvTxVuS|h0AVET08np*4T%>el!F~0 zTm>B<90(mCbcYTQ&V>#T9)}$uOn?p$PQ|`}a5MG=gcG0xgcqR$gl(V$gtegqgdWfV z!evbA=}7bc9ySJ)FbsBpa1nHX@CfVxp(k{Ja14%;2?JpV2&X{@2)n`#5cYx&5MoG^ z2)p537s9#F0m4?$0m8$u1BBDCW;oLP_ks>k!dF}&5awXfAZ&(n2*Tf>1B8jt0m62$ z1B4OK0m2c`0m2OE0O1YT0m3EF0YY!+0O5bo0m3)11BA1n1A2N`2SY$O13Ez11Un)^ z9D3vso`xMDtN=SeI0b6~VRhI6!k*9pC!jl%w1gF*1BCmb1B64N1BA0+2MB+H4iIj} z{CB5^4Ok2a+d>BjeXte~c7+ZQ`a%Z?%RmPRHLwGOouC7Rey{_CHqZgWEzkkN#n1u5 zKd?6>lyDkP=!CU^uoC8fPkO)|VP8T8IzZ@vwSdqbc7Sjhbb#;*>;PdhbbwHS4iJ`r z4iNf72M9kv2M9;P4iHA-=7(?)bbzokbbzojlw}z`e1{GYR)ifOd;uLGTnil_+={h; z@D6l!cp)C2>U??2*aQQ zgz3-$!fwz3!s^fg!llpw!sW07&NTm9!w^tHW9R_kF02KFL9hdaU7!PmRhTr2@Mq`% z;XvpB;duCtgf*}h5N?C-NLUj(K-d9xfG`R=K-e6ouY|us2b{a&Aq6@>2_et{!kW+l z!urqw!r9OP!diGCGWkhoLyi{94}M&fnB||Ql~RChWIy9 zY}1s8H_2KbWBVVJmTQR5m11j(w5rO}F?Hp4UwLL8b8=_`4id9MS7@cvS|6qb14ES- zV{7)Ta11rWeQZyM`{<6LNxuyEtP2|U@X&uzGQIz)TPPd6_ zS~oQI#Fd;Se^sw1W~O5^bzo%+2*LR4;YQ*BB_E;>Lt zZI!j-e^i^3o0peCvQIpLWkTxFE6X%;KE`wiI58_@i7Kj=$TL<@E=;JxepbFrXvsp9 zW)u6_4*yWl&;w=XL|1wDV&&|_NLEF0nUvu6h@)-Pu(lOf2e$)TAwvb3(+ve^ePZRoYK;adb?je&$j?^Lsc!nLKS9>#X=suV-8RZh??|lwYR1wEd8R z6X7sIJdQ@N+P=pX0MA(nB zQAg8oLW`j^_P>#rr%oqBj+fCthX%BAidJ!b=k0gKthvR-nzN-m42RWSrO!K8C2dA! zU-RNCiWLtM#aAh8W^XoH={xhk2L5=bA-{K1(YxJd&EW;}B9iVe>bu>hF|*};d&tgm z>NDlyf3^5XOJ?D~pA+Yc@!|;NyO=acR$eDnVJ#H582Om^YpVp#31O|3pXc;ouavAg)!8WJ-JA)mxiV~S zYc^5YH@7jHp}e14mDNzZ=T&DNl#cUKTC7MQWw2+Y0yE4QrTZ~+b<_(+7yPYiQ;JlC z#Su!y`4PV6^$!=TpWjhOC3U_xlhbz0w`D9rIrQ6CIV)b-uk3P2!tA>D{LT$Kp82xO zorq6&66dAGFL06Nr<0XMi~QL`<>;c?Ww)QE?vr+z3`LM}OLM2;|aId=@Jlw2O{wDJGQ*{L*H+>?z{mMw117AubycV(7JgC$<_lZ#5PC7$er z62HWYtx;Cs`&Z>CzWb%!Ut-NzhVtU~D)@Fs5h{r;t}HBTAXQ%AK`THm$0rSvyM0H}_?3 z>|Z5!RYT}s&DBS(&ru!lcSHHSx(bU|eEtZrek{_4D}(-MWi1^ym2gwi|A@D2j%!zA zx>A2l7^|bit#M}|X-n3$WAgK3%Ja1yN`~P#9hiD>8YLs_=(-fkO?YX_=%!p>w-^(C z)cOE9D3d=((>gl&7?1u*UCzY2!KeZ+N-|baPOq=RMk@cU_hADSmkp~~jIw`2U3O7< zyP*nOsJL(RXK_lzMqe!S!#4KNoIQ}oOCOS*f;(lY%1%AmaKLQZVb%p1C!V2pCgIhe zln9@sh{yS@-BBDjrRjb;k(c+<0*2zkrf{}RaooHF=6L(&2=v^_DaoYHrTOW9W7AUVR8EVo_KO!SLJ5u80x=4~0w4k#bD z)Y1}{yq_g=P(rs_+6E0G-c&{LR61?#B3~J(Y}~q1e!f>}wQUi5pxocKRn9%C%-MdO zIi(HWQI4@DX}|8YVr+skYu7r~Myav8F{_}A-0h89`1$z0tEBC2+$R-#abHTU8QlbBL6^W`Kx3_)zo^?SVOH+4FO`*e^G+cBG^o2a+(k8udGZf?{H-Y z9DzK1UJgl#aHM|KQZA&Gw_A(!LZ@Mo@-?lMZE!E@m#U&Ql@5CXO8)3sknlWBN!}A6 zpX{lm@0sM-8X54ZwD67dYgALh_trcqb6CUbHP90o5 z36n@m9m`ZkAN++aQ|=wy$XY2$hdRiAbWv^{sskHsf7p%fQ>q>wU-80P_^O#$VLzt6S)k$f8q&nk@ z{)iivso#%yz+>8vl;4!+N5;XF_Bq;*?Np8(?Z~z(4w+4vuM(XZ&is_6nX6g2(&*S4 z_Pg@nSU6j%_#MxcpRQNjv-Zgw+bXS3R#VuCgG{R&K9Ry|DXmUEXLFR=r{*@yXf3=7 z8@1Q=!mZe6CQrOjgf*p5o*RWc*C;*)dP*R(#_ zyER3s;XT44)g)>h5+9}npR3M#qzyioD>E;p$AvjEU%|bHvg&-Et*qlC#xX0U^2HE_ zW%#0B$^Sx4U4isV&f%lxXkC=87k6O|=zVEd&0$SU%0CIJzQwF_{}pRHQncMq3BBxB z)6uNfA7-`a#Vd1>p@XNJrcQ!82>tV{Z%N}f5+WX7S3?|F=N-eBLO|JB;HP?(< z6N{qMItv~i%%w?m+vJG)D1Tik$8^f`E8g{^weM+=FVx<4YLU|xMhvFf8mbxB!$ zt!hyC?^JQ4A%3GoA~vr$rdY)|QE~Ne*F9NH#q0X+ps5R}wz>r?-fVoa+6Ga3sbYDf zYMpzF|DVnNTC8Gzvkhk}?7D+8>4ptEr%b<*$^KND-)xD=HTPyM@9Gfw>4=T$v>l#; zwIvTH7^byVbp@&`4^cK)sd}q@jx@4upEw|t|reS-M zWLD?|6?#L3&LbI)4m~OgJuarlPbtc+TcM79gJJ#(b_T=2j4?|I{3k^IGE<59C%`)n zHH5z|9LlcbQ3e=KEuwYjbRA{yKka;fIt9^)%_)w=ps#O8bgDuBB7`_e@xL8`88YIw zhx{r?nR7eP=gJIXN43&t@MylUIU0Y5dL(8oRqo$*EW6cEG&kJ%i<&z^DS4-XwG9?h z>QaKz@lHi+4-xC4#NV05+AH$iN{%0)x6?E2rsEtDDtn&_Ur`#}4P;l9;djfql}#W% zt|Uj?PL0SmjeyEjqi|*Q-Li0r58kcI8Y}Pa_GFio4)+|{R%Ot=mSqND0BI`3!k(!# zJ1Ix+xwDnZ?R#EqkMjNAa^IF_f=N>MgN1?#5{$xYz5jsSQC2_jU>%jr2g{1o!eLPn zaYl+-UP|J_4s4ck`C$ciTY3MmHZv-fAI&UM_fWCAqeR_v%GF1nRO?ZDZE!WMq*Q-5WN?VGa#uUv)5T z4Vm_4#Vd=eqN*Omk_nXw8Cr2(-i97La*3AbGO4x@-cSB z{7lU1RtYcqy>w*JN`n{WJZ7lX?56*2YB@!9Q5+E=)orB2zNiya+eEoNL}|#>nzig^ z%77<;40C543;dlIb>YW4z4Vit_$d!=J18Aq`m%r0#=mr74*&Y7OG%2ox;kr9Q(FF` ztjcj_C6x4>UTm=9^lv-2vpC7a_{FQ;HE(p6692EO+hS988#UW}6!ppuWDhoFmsPXP z2d1s^;NQx%`S)@)j@U(wiXLlraV7D?us!wybXlFCjr3$tC?e(E~c?-jsW0?w5Num|Y6Njqr{z@5;TM4E$ zB{$e@zq^U?P#st~_E5v%RH%M%u<}oCTeeZD{N9%ZDDB^euro^1`|(iWy!ZXE;pq3F zzI@LOhbs-DGlrWj5vD_rq$$*9vYQ~TO^te!-!mhQ%7vO2CjL!{QM!~dTKX=Ls_0HC zfgj7VB}&VWjpX-bm6;!xz&G^%B=-X=0XpS#>9=uAVcLVV|mConQ2+ zuI)Bgas=(^6f9f0`Kg^8R7I)$*dM}glu} z^JM-DOR=)7GPga+%JNkQWh?EPZ>H%Mu7hd9Nf6#_E+TN#ta6Q^IiH)-$(CJa7Y&)6 z&86dGJO{l=%=*iI;Sv_$kx;?Z$JIgzpitPyn1zqnboMJB!dOR^!VfZ5jrHQs8LPr3 za7UTdVc&RbnWZo%eobaWSQ{RyVcyn1^;Eky&PrLC>&z20%p&~82x{|Y$zuF=z=6P! z|J4u|>HtQhCAQDGDIIjFh6yOdSC?T9Jzo86%In~mYFO~URWF#b?e>Mb+U>iTYFPch zMYf_yQHfMjxeMfVwamlKw@>lx55ExeA8q+aEi2D@^HeRXs#~WfuD9ixT2@ZZi{W>) ztTGGdxZU#(>^}fBGI2m|Kdz*@^t`N4FpHpQ*iV%#&^W)|s;Q~>9}HY#);pVGB2v{! zW1?4->tkw#<2HPb1uKW)*=)gnWgB@lOV*;r-@}O5l@i5>VM1>IUx7FbD&FG-YW0OB z_(4nNsh@@MR5dgRjF&P!(G(bypB_?>9zyBe^V35M(nBe|X?}WmL3%i)S3$aY*Bp&s zv8*I!eX~~CSE9bVJLN^2P2-bl_9<&V%ZjyW@Kafn3eUkt8q7iNW-8oJWa7xvl<9Al z>B;SNELOfah|kcm$t;vJYgWU9ews!8Cw@p_sv=xQb=s%#_SVdgedgn>Sp_*Kn*VOi z>dKD>@xQGxIi_(|f=!m|4dOLim?NKGg1N~zqj+D694o;lv0UE3hV@|!_);6zmNnhv$JZ6Axg|@#lPCJ!>lylUy^0p zwd?`0eaf?&b^?sPY(S>PiI22nmV8Sowu(*Vk#;OgKJXJSZO=xtTijsJ!dPE^(jJV~ z;_vKPS0uJ6%?7e@d}nD^OHOp)BRrTJ|52J%XCHZB8CFks6|*5R>)H=KvJ9&tXP#6_ zA1*7u@5UQryKQY+xl#=;`I|D#i!I@$9hf_t%>x}+Iqf$nnmT3OTXm!H4J|y$_A#F6 zO=Qo0*YHD@%tL>){r|0D8}ieOY1rKS^kNz|AwRvChV?6IkO6^CU51;LYP1Q)tLp#XIk;y&Mb~i;niI*R^@mf7pBPC z5iz>S+pEuOM2v}b7q-jj~saG9~hn5`Fh4@mu3FCcnncu*3^&u zP+2yMP2?@yShl>Q9WPxD_@piWryM)Zywg{>vyQT^X=f_j>_2mzVEuU`PgbkAN?3B- zpSa7PBYAZP=4Pf7``Vc6ggA2u>O_R=aIF`cDW|nH9nT%|VlmbwJ5o-mHyWNef(@6~ zMHV}{OTX#OBAJyf#yK&oBoC;_j%hAM$LX&fNrVmVNGk)6#`s~L)`!J>Hx=13h9=~QI$1=(`-_@+& z5+06t4Zuen$y{qjX{Ofz97Njj`uw~v^RS9g=``o>d@-TkHszjvth{`=DR1n@TBDzslG9zsqO;U*#>xo?G*nO025yxdK)m6%-Xu`K%mhz%webDn8E& zihe67DxUI-4&#>otg4TM>kyMDYMY)Q3h|U*(w#@4q;E(;$)5{Kil_XNf7R#f{L%cd zf}+0`6ctbTMW^z2AgZ5HP;ym4N%53lvU+`Jc0?{qF=XQ|gXFP)y~eZwHJk`4@Yc1) zGf*7Zz-JoC_z%@luQcbGG{DigMa|ucT;X_6XquO&FM5QQq?So8EYk%;RkX+;wa8!; zq3fDh$ATTEdH|Li45t*QTk6v0f(D9K_E#%c7L~_2rj)|eDRd88@G4c92W(QSDy)M3 z31}6qzOMy!F#V}$+b09^$U8u`_TxAm_ON5i7%$ew8L31Y6O)^St5BWY4ii7Q#rW|t z4pIpY{=W$dihBMZxT)H+4slbsDey6tR4bQ4<)SjE#hX-Rem@ z+}B*~#1nNKU_kXcRBsUBNE`65Y?Csc#=g2Q`jBc^Ytjn1wL9qvgTIF3hwYwh0KZ$6 zwQ{gksg(q^{JX*lynX>xdjfe2#kW=V{j7&SLH5i1rkIK9Eh; zy~N-qX5~EK9jY^Dt6PC89eyd04dvIXvr<;=)cp252b&=_ns=yy73@M7)wy_|53d2= z>v%0buLgD^i}=AB@L@Wpd(~t|<@#M3Q=zCkq;$6G{eit1R}Iw@)51}DCAex+1J25> zAXY2AO%St^OFlry60;uS&y}Pa-t#`e%-wlhWeDSw99u%w)aQ6%Tg{t~JggMkgIRqU z;(HOyYBXtHiBA6Mpj>+Si#UCM8I@}Iiq=x2j959$54kq_6JZuxMjYb%^PlRn9`1VB zgv6|bo2KDy3ANLu(0(ZoL{z`ZnRJFyTVhrt&($ms9%ji9*0Pl)`u@@~)u02WD%SW; zY5OKQ(ua1kI$FU}r$ZxEMXljS%K|4YxLTctBeyW`M0LI*1fHR`9&?bN)aHMMFc;>| zpM)?^$4Fn|Lfsler%RyE#wFaf9&1qJyHCNJU009{(>G6@SnAP3RtRT>*>0Au7$wYYTy zR*?;&U0ZVd9sY!h@-9}+v~Xaz7{qqv8HBm__XxH0p#^@pb6#jVTe6nw%aERYT3p-tF)UC&yS(d!bw*@RWB z*RCQpt2-S^20ee>s)xj)>p}^&lFcPmvuPYGd7V&Jr(+hlhDux%2F;c1AqVY~Bhms&5fK`c%sO*{ z{}RSL{MwokdRC0k9zkeJ1->hcCCJH@cwPq<#D8weW>|${$P%-{cy3eVoT_4K;Nn66KW;oM zf;sE11yJGZfAT&NEJ^;mB2Ns*4zWaY)}`r%s+4u{EEza^iC)@jWY&wOILApf6pG`y z=*6k>rdb-1`}{C3J&cWz11gzu-Mj@0)2)XpBxY?m!{@eOQ#IB6@_5bhtO;-5k_GB^ z!ulm6q6YOxd3r~d zXemQ*h3BQ7d{ig4ROoZvhk06O7VWYHtk7G%18iFnVHe7a>=vSWSS>gseZH4aifE-ms+p)0e&NzwU%$# zbDyrvr~MN*qV{yZX+q$Dg5G;DQg_5y!9^^hR|hE%^Wml~2}*rOso+j%uQlggS+K6J zO0?g8ezhxW;(OPO+UH`_vIMmXyk0k)K=$E>y0P(cb}1h86RQ_yUK95NMfmtz)I3vy zjFZuPd*o=G=}NsyO6S{uVvX4d{_jt$nw5i^=*YdhGhbJ&HC4+!P4drQZQkfGRp|9M z-64!xV%Fh(d{TGj=~e+v6kVtdYW_4+e%WNJ;`y!B{5JeWcjl#+9E)d{RAFlRKbgIDJb2REz0tqGp5FO-W2>xdoX5nGYz8ZlF^UFFu~i3 zCEAW}@5Nl1Ge6yn)$bjsR;`Yz$j(367e5)OZb1XA4!aK?i+1ik1{3SxZd1ijTnpyB z)EXjk@Cs0l-98Cg<6}I+SM|o>-sIlQm&Ma_HP)Vo_JJqxx;M@QZ79jR)Ok~lhJ9jB z81Go|us*CFOW;%b;GA%*6<^&Oe*4Kj@LCi2>pnQE{$OcJYucCf(akAMT+H3cH}%CW z241{A)t6Q3r0$`PHQOmR?iT0-HW7(BxR>O^V{dG%N!zSrUMP~9mxH0h5Gz^ zKNc)+vgLL9GtVKqZ$Ap>jZm?~oVCyV!))+I#5H+8a5=w6#NPiv zEaDt_jH1OlFlt~2d#HJTnrdA7!4LOm6-ulT@pV7=^Zu-(;~o)j4H_vCkBPV^Z#RGi z^u8f-N+8GNyVFlZNQb7@OEr8GxjEle_RZSGKD(c8sO+`#j`0-{auNAL&I^oXJ6#OlF2v5??s==?elop zC>+3hjb!85dLB9ow!v{G6SLx$@i`AJ2ZNpnRpo1;1ksMr>90ws;8}I=@(S@8S!7WIXe$byUPx zz4(#$vQA=rE`zeiR!ueJXUwDw_f*4eQE&oxo`AcealG3En3+y|3c#y6jW}MWXbOJ; zOB>woN&Qj{wttD)@|+)@z5^ z1d&d>!6YcgqV)7htP*2$_`S)@xlw(LQeswvMPxPbE3HON+nRp*c8zKYtuSKtry9nY zQlJ%jL9r^YHHA&p=|2#OgoWuDQ&<*bVLUFL9b zW7p&157WIKeiwIAXW%@pH3T)!;cIb0KBc7nwd!>+*EH1k22n?K zr3`mSxVn^4sz*;JhPjsNk>LscB^A4igmm9I%*d>&K*18Ts&dD9I8zScjpnhTx_RI~ zF>8JT-!Tu@QcupS_q;oA@elKux1)wQEV?zC%&X3470T5`lZF#D%&&H@-zQ2p^gL!h zyT*cfli%QUZ2z0jTg)ohsTX|>jf)`9#4J9QZ~Be(l5H%Biw7alpCEG2g!i$-I)={o5mLv9htp_BME&NAd{YTxczXM=wnElm)2lzp$5+4sd(vXAxa>r~*)cu`>H-&CM6 z?`tiOlP_O3l`d66u506C?2PeF%<3{u6n%M#a?|8s6&v$*%b8xDaM4u1)c zDkZK{>q2#D4aHCPm&$*fH?3k~dR(GpPwusv z{VG?;=ANbHOu6rA{-CtnaZzh#p_>AcV;LI3ZSCYlS$~SpwUbZD=_k3}T6Ri)eZo|u z+6k)BndhuyQ92!#jl^Rghw@hIS$*9e$UQM@?@*qy9wWHD-KTSk74CYHV zGY@SP+E!2Ey-RQ$#u9I2;yk>BlrO6jZ7BA1I?b(!3JfWJ>;F{Mt3Ojl$+ z58}i2uu68hBJI&uq~&S&>OHKY-;yoh7b`_Zat9OB#4%LKfh365mQdln{KX!2T;8>r zZ{N$VdY>gBkwST;L|r-dP)>EkYxg(k4-MR=DoeNWwfk7-QglmtI^qP)yXT6;8>ZvM zt={}jI@^rxQBnqTx6W5J9p9D#qxNbqH)gP^-r@Vnd_>@1jKHagj?OGnvGY?0N%b*G z^Pv5#E^Eby?`N@&6EIH_vnF;`ojD&AHa<+_x%=4|>$mBY^Ix<^{mTN{4lpcy{sh?( z3+3_yICJts0w!CrlZ_Ho>{ztysJXo52hW@!J85pE{or$t;^8t`C0mCCd3>t`)K~X86bf#x#EXC`;6j-aw7s zr(X$?4o^0lQ#mvyhDN3oY)M)OZ7Bu%`6pTE97;*X$xuPFscBB;RWUN{1)0-pAYDBs zlse|>rawxR4UW>bE+@&W(}b-e%0@%Hk=}Ds)Qs#D+(DDmqdKq`puMEs*~uN?F=m?# zWwE}zFUG`Af(hGZ#D%G)iM;JG=F#RRx|b4_jhBz>T?8v73R$VXlFF)_4pisk9ux2C zh&TPiB=z3dnhL3V@_onHpG?DlJ` zBkE@4XLLQ)@S7-`YFI{37=utAahgpnyI?bMzpxeU<8n!YVg=vCZ=Z%Eu$kLrGf)54 zOG!nF9f`aCe~f(xSd_=}|GoPz-cb}3REh-^EZ9)7VZ(wNdoS3#V(*FtFIYho>)16$ zqp=&yDKVB{)Ywhz6=OTVf+ZG2`G0ob_uwF3|Id%-8Qyz$XJ%(-W_x)hsh1$-ewczZ zSfi-j8Kp(t!;r+B5Z_cETe-=}c2Nvh*vYj!hg@%Uxqhb6e`01dwi++qb*d~Rm}^JM zzWP{3??d~^H2m$-U|MrE-7by8Inv1cw{BSr(r{DMe(S%|p7&~#B^UNO(Y3QmvpO|U zZTi$xFbA$pMVl-S z&%^mu>uRZ@rqtx3GB|Q8sugp>&kg=#+1hrJzRAI|o1XlNWx|OttBf9>(5XGm+Z;3# zb(;P<4fal9%8DvnQZ8VdRr)0*!L;HBAMV0gp_d<*(x4)G9#>x__3YGgy8IP%zjelW>?Um*9 z?_Wx6YC^N8BlZ`@lTXTdsnmG zX+WfwG_FoFSg%m6TZ(t?>x%`6MEE?1Qf?|fRqxM1x^K$-KJT)q#bcuiUDK+R<&wKZ zjR8tZ0Fu&Y)2tXdfEyNIJKa*s6}q-UI!|?>DRBXnYz$07!khDH-7TdO=HV~jQbI7} zp7*xmk^k82%$!cPZ9JSp!MBz2k#!I?>-ePFf)UmgLvcd%LTcNh*6Z&hjS9i?KOt&k$qOXMQe zWEmfUbsyQi6?(~EO$@?CGZ52MtP90p!muOsF30#dSyT9~($`~%Fhusbu*$ULu2Qq2 z32tS-@Q*RE!TJ`q&pt^dsv2{`fFNr90p9L*PjP0SW>VpM=xiGnNL}K9EKafLTLk5J zrWCchr+D%_h^LoH*pVK0PjNB*x>RsFQblko?!8O8;rRAKeA_85N$gLF_pk^5%zXNK z4~u-;=hN;+%txCfs%`a_Onj)(eXK5yqr#8T*9f9T_Z3gmt|fy1?#i_HzEad{)6ASX z8871}P||&DvvVTn2k1-ZrqX!SN|j#WI%^+v06S+Mos$Cntw-YaP%Tp5R4gM8Qse{0 z(|fJvR{bThr{+&GekScje3hYEJX8hdzIO5LviV!WJ*0$?G4*r`BbeY^Iv9s$z$` zPmk2qgoz2e$mKNhAE;@X#2GKt6cb{vrvCH;;;S^*;)R+p6t$zTtVIYliLJj`63(ON z|6o2nf|@_V8caJHD;@!~`jJwt!fg1TIbjaA{-AUSn~Gx;iK3VouK%Z0oT7|JIN9KK zor*lha=|>RjRynp>xt6L^bU17=6B1|&?kx)OPxitpD4w= zFQ9@z4WpF`QNy5YN@aGS6Hl-bznX48QKlO+V0d$afqFevN<_}Lv(L~R_Bk$Og@x}= zleI2pX>#MJpe!~XxYZ7`KWMV-84Sz8;GNE3Z6*U3*MrCH1UpH}Gn9obROFfBS)^{H zl)o@iKw6j;vPT_F9iAz@gMNfL%n6&yWN9`PmH|3AUyh9`d*eUqy&px^XV?Z^`-Yf2 z_g){RIh&}s1f3%327*qjy~a>`E2gk#NNlAFEw(CcoQ?>#(8SqE^xUd6GL@Pqq$pjQ z*1y5hR;wh%RVhe4lTb0tqxnfnQTC^qb|xufL#v~%!OU{0EOAAxiDVsW`%ZxNrr4?f zP!8=q(i8Qi0m&$Ub!cv~QjDFOLfi4mK19-`WTlU>6e?_pLe*20QjFgedF0J!p!#cb zA2KaX!9L``o6@t`*GM{(qLeTWL(^hT7*20eP#gBvl#YVonb}@Rr)feJo}=JY(Bk1# zh_`pD{L~xqEPXmfJV)b*f#P!|u8s?Q5C@C=M22y&G(^$zInXYjPI6mRRy8p3rl#Dl z6KL)WY~UzJyI!E^r%k2vs886vsg#6gk>gWs-XZupWcQ9AsrXB*!FQn1FO@*kLD(4Q zDT-_6Irb9f`H3#Q#LA8jrM*;&`gGHHp-`j!aIka822(|y?`u*e2d;A%^Gfl+`La2$ zlp^fX1lsZn`u`k3=Uzd)`w_C0$SrzQf!0>2%FGF^$t@MuSbCF2JE-336jSDS?Ua+81j4=y}vGiO}9GCXPPW_6nF&Igup|8<FcP+N6cHH?DEN6I+E))zPVH;dWt8{^@_MNhHwC9G(J&fq zOV$woxz3hdSKSd}tsw`d2AcyTXL88LkIIUmdrq@RO*-M6G9U&jDw3(7n#$Fhu8| z(w2X*Cf11_|En})FTPMkIHR#T97e1VwRjKZkD#gVQ5RPs%X=K={GD#TSNx5UurgN8 zsnrM62(q){F;x1Jv8s%zCSppk(j#SHg`^09p6r#qVh}BaSqPH7-&BT9fU9w{r1^>N ze^7kAR}anE%NQo3hkI%LrSc!KVc}=Y=ooY^p&$BPS(*{a2rm27GpDJ zl9bXk3+6K?%q~a|K49f)%8;C5wvh2H3uf5jgW<*I zgdqhao;!AWWiRntMv^aQ0oXJ?^0QLP^b{61Cp^nfy*??0>}2;G^}l3SekLUy{kLu8 zn~qK7jU{mt)M!r?4?k=Kk{v_1V(mfMr4O>^mZ*7XLb}pdc}Ta?m3oSqyuK)<3w`V_ zyGG@baKSewnN#fCy$<#GqLeARPhz;vI&bUG>Ei=g-@YGCo4=q7F`O=Z!QkWRVT}?$n8`wL-DIsO~VOJ!5Rd}bF{vLCHwIr?mw1jLF+P<>c%bb5_7^c7@e7 z;>rrJUrMP8tLi;Y+H|~VO0th8x=}sGsu-OlvNKI)tgMnon;G*{eCaG>rA^VOJk1F) zd9;!;1F2>o0JW9z?eb_PMbs(EQ|h3yAT~OjLKb6EZj;K2p!bxZvP!18BLug3xdnD{ z9C$9uSy|R=Fpc`Gl&s(+Bc1V;N?V6it_-8P@f5Xcb`v$D4IB#_2j~E2O_~2~%HXUp zwzm~_U?uYp94PE(+p{f)Za)r^15QWR;X(p87nN#qrI5F=XU+`W93~KMInxesQcBU^ z4y>AIZ{%BCGt-V^9$as=Q1m8Kv0SW&=_|}`PRMYg*}0gXNBRE>TaJ$AV*ZXRCEhA0 zeIG!jLE0+6xUG=Ho&wYHaKY$=Bb_v|naTq?5_nm3@y&c!4WB&GvVdn*@~SR3tAu0fvcrStnx`Ooy3I zG@&~ASY^lDP#Jb5WH4%pt%|suATA#ZQuBBDN^1t7GEL3L{EdTp37o-H$enq5&1x-7 zVZUX#nvAYaEfMY0Av4-`>@3KtN(4@k?#v&zF>H2cZ%mJS2%b;UX}t$4=XgpO1C|P< zs~)VF&)61dw#AquYLr;WXgoH)zR;7KOuY** z|2Eg}BfI(#*DNRPOm}1mW~1_nUr0Bjr6@Hxd)PtDqJ{8cm&H^NW~=mgSL8)sX6iuK z3b5Mf1?MZsW|&UqVU6lD7_1-H+W6|bFu z{L9W(cQobDF}hvdg?uTUgiTEI8uXT7y&;{0^`}r9vOpUl2}|!l(|uSYHn5#|deU7VmIuA$6d&g6 z^;;vUkeD{85v*dwuHVG9nfwZ|fFcokbclx#?QScHd^$uddKj!NX;>lF!acFAu)o-; zJWUrO51lK-nmex0U*oB0VHSlt^~b`jk>eRXG>K9Rvj&b=_1AS&s|brW9c(WIx4fYX zMc8hoHcczaUMRb0s4r`TMT0%QY?boT(!3a(&Xrem)}MV)wpe~IiK2u3u+~y+9%|_^ zrP)0Hy>=$^mtD{-U1jJ=&LiJ4%oDrNYL;O!EE`Fq93;8#YW{VclFFivZb!y)tPXnj zq2*W&rIuxSIrf9XKGmXP71$_cj%9HL)=N>I(VL1aIPyqEtvoiWBAn`O)U>;D4%%MA z`8kp+swY=JNGKe8h=XD}-nE%#YCTjkp^4a*h6rEL7{WBw>wL|q6`JU}FhZ6>K_Y_V zLcY@WK;~t#)E9a^lt||T*{`KWgM~gNJiC%!meCnOzjORq(OuAHoP20kC05WYAy6PA z&=*!lr%n74ytmVRL@R&O`${aJ(#K%w8<@M%u;5I70xQuLj`QQ=@=7NwB*L3g+sdp` z!Ny2lUP6ahTtTGY2Wy~}m05Y^FFFkzuMJXw^O$eaSc_kR#UaXD1p>68GF4a`oD7Yq z!iupMm1%7i=8F;NQM@W$DX|KxPs_m|A8|5oUsYB!Kov7E>+D>rI+g%%h*>xis^ZwF5S@AnO|QlRYqYBlr4E!uyhhZ= z|4`Td26b6Ut;Ab)S7SXHODRjPHQ96b-~6SJ`D3Hn>&cv>Ji#p9v=7Oc6ZT)H%fYC6 zs#<2&V!4@8%Cfi)>!Ywgidp`x%kC@2tT_;`ut*Js`mZHxjO;a-KT^QjJIdzD1$+K6?)Em6A~v0|nj`*eZeadRB{j7^5qs4*|_Y+^~u%?%yuc539Htu$A46iytlNzJ^tF*i^TWoA!R;1g3 zDmGz5gT59No_teZ`;ZxyC9{B^$jnW-0sW>{#`1}sH*nx{bg>EBWBO7?u=#q1j&;IU z9@4#OUA$7j<#7SQPkQMsI^L9RH@Zo@yfo%J7UCag=Zy`qgT&q&OWxCJtH0>RcdU6f z)J8c_YwM_eElrxSHQczOgpg$=CAUJ4cN96cX5~=AtF>kojRj;>K^oSY74|FYD=M>h zdKaOX(6XFc5ZNkGMEGmuS$fe5hTcPe3MTIKzBM~h{Ul6lPWas zOZO|iY{Nbnmm^W^(xvBZ*=wggdfeMQ^sF75RChM8j-(;l^m8j4GT$SP;VtdC`;m~p)44)TzIVngs{6(QO?BmKYpm^<0pE|QJ(0Awp zl@BI!7v@#4w8Rz7hrWU%OF#|U+lAE!>RW;OC;4_|-UaJO)W{ z-R{bMa5s30>?szRZx@m8p|l{3)hP1D0iJ~z;O6Gs^|lv)_^s{UF{B7^ziG>Mw_1I7je(_)7tK=jGB*Qi&quy z)#YHWOr>te&&<9ih6^6nsgh>eemj1s#7Ee9TWi!6_Qj@!h=Y(LDYyqK>s~-ICm2;Fmj$C=Nzs)8da_dLv%FuI zTzOMTe#gc1+FkH^^9wER$$Dcp>}^jr)x|{y=KcjeCJ=xlFRihXdVx4l`PB3F54ofp(CYY)2{3W7NSwMrjW zo25C?o<1zdoxm5Lm)V__cSaxju=>V^GNKXH>&ptZY@lT3xjKGoBcH6BYH~?jBbbP* zez4oCc={Kcjs}^4Z_SO~zOJ-R^kZMvJ@V(z0wpzbD)FypvWd0(3YAr}AR65_y1m9r zF`oMyKFX7uu=4+pD%S(e%Jn2w>WM^WR|^(fp8IED2OmxE$MSkVhqiGG=}zQcKir{h z5wfPz&;6KhsltgG3**->8A)P4oXCS*Xx94{a$Gc-Qv0z`Wh_% zcAYZ{M3{Jvndv#TGa_$`odg+)u@elQTbbeW7G}5u_!Y1kFa^*J5LpZVJOTgy#0(bz zn*j{~iJO_>2EYQ?0GJ0D1Ly{51Sk(E0La+H40i#u0QCX7#Ev36kgvY*fsPyIv80da zf$NdanHK4%e2tVf*@k&-c+$-*g!4KA2eqi_5N}F4loh{2kADn{=+vVE z;ysflWyKHE<2M;1GZ_?0>XL=fLPwaH#lSbIMpk?|J-)w)M>f}FK;xljlJaMvIO-_% zb(F~x<$Tf`G%vayo+@7lOY$N*PA7qb{9@ZNPdb~0cvR>C$-Ecwcvi^5GbL@z!douz zIp$PM59zQDd*~x zZE5aMR@(85F1vva4`r7eQ*{wb)1qOlT;#9fbt>A$aoT54etjT|K_C zh(~_HQLN{MUQH>fhdUuLEqRZJn$8B(=;6%WD@YVN?VA*?GmC!~Q!i59`LuR8>*H8k z$Nr0qBUq4QfBkitrO^nsPH~#AzrTD<&quN&jtBJj(zJIJE8=)Te^uz_C^o{;s=r24 z>(T5y&Wjcr!$K4*^%%q2)OPzvldHrlsAU7J9X0KY>jdmZ57r}`M8q5!ab8BW(<5HL zq@*#dn&VLYeJ_jlNYJL&wL`Uz=tunxmxRIgapCpFdl|GA^4@8CJzzlr(Vd$ zPal{c(%wYGPW-f=Gz_v%mn1TwO<@1K zk{05PElDNUoveVeosLdq1)2Jc+>WpUfhpF^Hhcr5$rN1M={8ET7`;*|LuBqQ6`sU~ z=X?E0uzrKD>gfXZpf!^)EpbYQpI$+~O=3ma`47v@n4fw-i4||q8|grS7@7a2+h-R- zw6nUwI7cE?EZfbeuoT|(b`v=i+qSH2G+tvSGpe)usivW&^V*b-30;cm4Ya4|CLFQr zTv$*y;*yfg&P9rzYCmcm!S0vs02Z1!@AZg{2+_pRw*JH7Qk>h=dJ4Q+AxKAu~#^sJ%tta41BGLnkakEiE_^J(P2 z+@L2mDFOsD==T6ZG%4yMr7WeqNTE7Y*>}o6G-oR7<=^ffp`(+6Vvg{@tRmz*jV(|v(W+^z9SX;bX>27c{zhcOvSB)_sWe#s(3X5dJ^2?1(UPBx0-lw; zzvd-bHt8;GvM^QJx5^9_p`4>#Gf>((($yJQUBv9^47OkSgZ7&d*qUyeF)n_MiUUrw zfEItxrdAKXE9A!1Db5K%*EsGCz0A5JZ7-JLLN{3FB*7s+I!?!yJy~2%qsUU(*{q^v zToh}mU?t@DnXG~TW;?Uvv!~h2-d)ew3@S5=1qH|4M;~pNNYH>uCw(f%p8m&g(C3r% z?8QU6FbgBP!IXD4GJVf7e>THsK5IULpyINUn<jgt<5!a+0df zV>1f<2**kBikUT7OzMTm`$k}8gTVKsEAvo0PSxdoNFV31I@R8Su~d?;R1#+F#6#(RkLxs#5TaRFe5pZlm2U1sd16?1R`-eY zkC`#3MhaW5N@^z!zeYBPY)<#*W7S1{BojLpi>cZ``fdTN9Zw?{u*%H%kBs?s0W0pl z`Y)Rpw{$TuTf6{seZ|PMkoh{rAtNY_4%Ug5$_rV0MX_3D$6+WL+Ea_rB@p+^>8{|P znXxyvj9tpin1-fLYks~+u8T3QTSXNYv*N}Zx21$@ydHq z#+(lEg-JBc$dNUs92c{?ZF)Qq-rIA!-Yy7JpvqZb=X;0cN1U>%9Oa2trrTW6om$@? zCw;jajab4;n3Ca;_+Y>^TDgS9IlAc-Td499~aBMZ@>rECK3%f7!9>!JxY(K`-( zOp)!F4{dGB@=@qA7GQL_C-~&13Cq|ef3uxX`Cv8sdN52+q8^1WXNxM$K!GzSm?QLD zq1fS@jq(6|5|Z^d`Q_;BqfC5f2RhPU;+&pZX$CFClT8 ztxHg+)vTlcIJ;b(%aN;RI`u8OyqfuS_z2YdpYHXTt9#2*FpZftRqt!QKPg&WIrtHu z|FY+MJqO=(oo~N0U+BAytb}Fg8a9|ISh`!s+5|m5AsB5Cy@;HQJTUmQSG(z{<_m49 z%X-wtBWU}2R>)NW1MFRPu--iSCByoNuCHfByghW(yNHYm-KyN1B^CznMH#G=X9Ft} zSX+-@iFoU{^EP$HiH}^wgs#zgm)&)waVK=aqc^Y-3@hlLHnI*yhyE!lR-Re0-T|vD z{S2pJKQbTpcPJ0&J`9(01~p&~YcI>HA6a(=Gdv$QvCc}krS)cpPdB8};h$LLqAkHh zZavR&75k)fg3n}f+QOQ7H#(x11vJ@uZ>qGY{>mMZ-4PdlOvZ~KM~d5mUd*+#g8cdr z%dRb~g`yO(eBR1bMTw@2pIJ{_QPguAmeK~<`9?iC4U|<3C+VsPqt@HeDM_=?sO>Dg zK+k=eB(hHyg6xSj|D@FIm=yo@50U1P{&Z#sM*K09XD510KOUq7$5;WMTE9Vgwrc_O z`vw9eL0L4o>_VutMXnnkrzwn2hIayA%E{A?GrHTnS zHy`e8F&$((RBXUMa2UHNFta5dEhu+99==pF9(y-BS^CAZ9*XJLgEGq<>CCUJF|_M? z1WQG4_UP8q7lF`D`w2DOrh14D`rQ_tV^(z=!n12=s`b+W!9T5oCHe?^tCa3$XRw#( z{@It6HM+r!KcTtD9ibi+xR1HusQjs;thJ+xP!#KwytMvTR?M+B%xF%i(~eR7irkNe z9mA}?3&kE|1$od9pcjWomGkr)0@%ABrISI`FOD%!C75qTzH2TyfL zT%#4OJINYU>X?+3>_ACaJ2Tm)I^p{bsBc5hBi4`+3%JTgw z=E_XTKZ`U{n$qh(SPB1Hc8NU6L1|0m3_U!9MC?(YssNV|HaoYe{e%n3;$wE8mp4Sm9{ zS6Gs)`2FSi9vY)D6WmVZWNgvQpDz2Qo@Fnx&KtJn)wIb=n z+OnA|4Vze-(eA4-+bv4G%1RdwS@TV^v39o`_*>x=5G_c&b&ahQ(_9ASAW=m=6XSR(sj-xiO z@p2>`FS!P~6X~*I3@9j7&G23wno+mievNTP?NR>^DwBt~Hx*dlPQ|&ld zrbrH!r!QG)g{4ilAWwA_ESk4|&FU#igk|9y@eH8u(p z-5u41_y#pScT#`)h_*v9FEG?YXy9(Bq%j8ylOw|Vn%oK;9ra{#(bG5U_w9<(@>IdvAIP40{Eqw*%R)vn{Rf|xXtLo;u ztBpXv88z*u$U&UN%S|;a>}y+k;iP&y{?S_yoXSw>SY9>A_1_-$$XhHdpSo00n1$Tc zzg>-aTMOiTG`fV^n_C*AG>`OG3$bVQC?-s8z{b|0OJQmN`%s%chp8ofE`29TwN*_1 zi2DY_6u7n=inF-2yQu-Doh=2wUC(JmH?@&ZtLEQ8pVg2qbW=O=7Y+3kaVN(Pf3+c& zZ&Ur%vdRlfp_1y;DyGSvf?b3~uq#gG!qhsvsGE)C0Y!&_Lkk$RP{mP7aIDt z&+?OsoY#r=)7$C8I4tMH2&e8qeYWqm6BZ5bBdmb)wJ6U}@9))x8IHdCkhW2e~ z+T$0=f&ZJ1?*#nVS#rq*JF~EHDio{3YJ|T%ZPgsK=XKgJOY6RBZUraldh}D*W+TzQ zd68vA8%Z=3?XP}huQ~PXr+!C$2dGo)u5}UlUAO%|I;&up->@7q*yN9;LIc$iCGAm% zo(Ud`IAigQMV-V`ng7nuQwS;lDlZcu_>4Vfx z4WgcB`R4c1`f-|E@Xa;i7ksmFdOEz!u2UqpC%i%#!QE?HY3X3KShulueByHOS*P>4 z^f_HxZ+!KrX&wf#Bh8*_aSp1TI@L;Y8={sE82T@W?RF+(1T6(9zf}}BT+8hyS{~X4N)6mZTRgFwYGnMJ1NBo0C&^=C$}A`L%3SO^vNjb(|)4pa5V%M zXPygJOS{aKf%EVw35*CcfQF%Rg`sLq=*#Zj$cs$bwd#N7*>d;iaSQ7a%6?olq}XMOwufj#0-Trn$Sunv$o zara-}i`qa7hpDv!i^z}_*{LQ=stq=(w2y-GhD<77@*b}G=8Y4nB;D$fnvzG#v6Y$+ zha8h7_SWniuf7*@?6Gm|C~@{^9M=zr9C>8Oq3l#cB-L>nRk9E(^thcI0VCAX#xkg< z%n1S1b%a{Xzonf$e5GS&+2e?AeV(ZLJx9a& zO)oOiLHTkWEgz$PE?Loza%B!mt4{egl`Lb`5e@Becjv%$7kp4SdZlWG<9P1O2>>}p z@%}1O#Z<>QwTgdHyF`D>!N^NzltjnJsk56`{UYe9tx*gyQMj;7rqK#!&-8t<550H* zlyM?2kZxJ;^}r`susbEsJ+ts6+{gW)hbhJ5o_UXD(Rg*RV*DP(4(9=vPgEP=`-lxE zstqGczsxH2H)T0Eq)CWUe^Qs{>vNH@lh{(NP5j!^+{!`oMyENONh4H~{?5k1Hu@8x z6F#Jq!z48T$G`$7sWnTzO4hL2;4(AZ6<5f%nltF72$vzC`i|lzsrj=B{xpXWUv(iK zr09fV#=4!Bh1eyzUm(l+(sqxx!06~XuYs>jK%d#R&tOsx-mZe0`!QUUQ*yG}#4)e- zZtX`CCaVFNuYvUQWObvzJtr>Bou%H2I%Q4Es0j6zk`31@2X12>w-$|x2)~2WvPt!9f?-aEdxlBjPVWy_j z)glFF>Wso4+0-bk=0ek^t7Tl;y%B+O8Ez2$GF@%e%s!#!ITG5VvziIPG|Ta-0K{h#R(m8J3lE1WK=KwvYj|f1Wza?_lpfK?Ph0if+m{QWqt`OzI;$du5mX$B-Ij?ww7OjVF8Chc0ivK5) zb=NhL(UztQ)b#AhxPBv;qm^nd#rfz-TgXXE$5kR^XM!zcpJm``5whlYTgXP5xJLca*auEwPUveX zwia!CNhdq=U;0K)JWgq1J)^(YsVn{MNp5_D#EatAtF_tlKk4Fnbw##R9(;qO$Vr(B zdwquf+>nFj**9oP;A1&(O!odXo%})FVRXJM^5$ZhxKXt#&OgW7vc8+bH>ty%D`y7O zpog2(Ue0F@+b}L#nr~Kp6z7eHY$01|^iS&Cysnu6`GJhVGu7RudRmHaQ719y5eID8 z<7o5G>RjhL`)vUax766CGLOr@*aEKa6XfFD3GMn>jm%poGp3;yqcMKBL;Xi_uDr)a z21$28jP<*10hWzr>MxS>KDCIk-7%rl_LjhX>NLf@`9aj)RtMamM!L$*61nrop}Zy|n(Mw6->KsWRWjXR*4BWE8GjOTPiA3+=ZvF##f z^6RK#IQE?#$KyFT_SQL$+?6ht9p&U~_9G?Zw~0Dl>;}Oe`24n}TTjUoMx}8F)ly1% zT60jv2AE%kET_Zhw}WbNoFh*>sOGO#(@uci>E*Qo)*OU~yIChkTQUSrQh`xavslRtDO7cF<<)niIFZI#cF;1wM=nT{P%yJthydLmhDAL^(> zDC9S_c&Vo-&M~1oV%wmEpyQW$mhYwXNQB5kd^2d?Z)(lR38Gw20y^f$v9#JO245dR zNs0V9T`ae|3%?D38T8;TKM2+mBNiC?0+8;1Ap5vc(+19(`elXwgV1@WbUJ^~#d_pI zir79HL-miU?zslT(eHnvkfW*xw#bY;s^-sn?A6}%$LXVLs501+`xsh5*K6yA`NYM+ z;&WN0==PcWVokm?!JF(xF z(x_B~BwkWIjZsjWIbo(HV9Bzaf$mYtQNZzYwX- zqD)SX@c(6G6UiL?A4ZoKWHGYLzoX91E>in%h%{!7J*T*P5a~pW#_94WXzA4b z99qiB$R^U8ng3x_e_j?NOXG)Xx9lQy`-Vu5%vqe?v&yrx@T@tf9jCBO4;GXEa{IYt{GUherc1q>9 z^W0o=d*y#U_wnc~;dRfgGC}6R0?+M|oe8d0z%b#zOk76VGm*a5ZEThrgs+vgl=}dg zv&rP~4R%4p?Ab{_i5jKJ1V70klg~GpbRUw%Lu#>1uy`My382 zR9xQUg#vvngTJUAOj$$IGBC)$LR&M`cC1Jr%>rGQ`SK3RrezPgpYmYYD&APBA%Bmx zOK~cvUTp7;mJoxE|X3Im<4U*J7+eaKTGSJ$<9%->y*jPiEjpZ2kqTpnd~CsyS3NYEpMl>la(CUO{cSY_!{<0TMhjM z&3EM?tcCW<=d?ke=tzcImpy5tA^2(tk@_o+(7ADMw!3|19qCM8-MEwc*gisK<1l58 z{*UO2S?iKdUf#RBK}INu(EDBIJD_g2O@HcpaPIUL)ORz;?9O+v4(+L;2lp{L$xvsS zl#k!R?$i$M+~3H02~3q{xbvO3-KT;FFJ!FLQ-oEfwjO-8l9z6J@KMGpJwzBTQq0eL zVgKOn{QS7lrMn2jM!N!hiqe_h6yRsE?)6(i{xR1m(fa*KmkRPS^w^VMwhJgqx4if< z4Y3lP_2#a|jhzLfA1TqB53KopyY!5jr>0>726r9wmfg)3w$9D$MxrgoM%kt*fg)y< zEgtQ3Gm7-#wTm=$LSN{%b_6GG6K<4V3YZBP2k39P<-_wZ<5K7hHzd=`!rb4Vr)KrC z|B&6YNm}VfFMFo=1?HnIHHz>7is?RtGbcQFZP{FuUrZAUm&-(~=EkG>*Sjk7UvJp+WfcFyYhZseB+WUFcCYVb*u^ z8nnP-g5)_Krz+)1v(hv=koz=yRbQl@nkY9y0z>;UkK8qknNVq>uJv-}C|(l%3L>QE zBGU7(lTHymSUuxF88wIsRpOyIq1v|+Us7v!h)84311$}CN)vtG<92%PDx1126K@i6 z$m(PYtjtHd--ZM@tBqj|(v!<-p|rm;4{@0zBjzH)T61|79;h^>N>zAqw*$3hj}&=* zF4$C~epPrG$5(Y_Uhf%bU3XTReXdT&s&Ma$$FfwrA3yC?>tUTGX=dM(vI|~|$P~mM z8W-0Qys!f)h!_j@kFVIb?DC_oMr4H5C!)u>rx zLXU`y=K=~wyD=fPaTpcX5$Ku`17O6WA*;bF_{Z91IypxMI_li>)6yEem2#aP)!+}6 ztMo@rUKSVHzOKp3m9(dKl!Z3S0yg?V0ko_JZ>iuMS1@m?9HZO8yfnVkrq<$K3a$+) zT$}r1iMwuXUJ2W&M%Cuu;ZQ+*ZC;~5uJXtw&m{)UF|#J=#o{5E>hNEiJCwtiC>V;9 z!+N2>NTI+?v?pbyD`H3ea6KQ7O4zit4{o1@Ife4n<%Nnbr~n_tzFFMo^<2BbLmtz` z=iqeuSZYz17lr+X)#W~(m7v~vp+};o9WjV)`zv&$U|L_7`-TpIMPj24>w(UhDc^yP zbo(?0iuDR|h-nh62e=7CAs4Yx*L13D#Ov|%7#3Zr#~WZosGXQvJKT3l5iH&V0|ATQgmG~KuVH` zb0q_2%H8e}cCK(Phbc>lIC#y^%NuYn|Njf-P^#O27l{17pavEfj+z)V3Y!0hJZHZl z&%ebq(xy=0{~|2}_xKiVJiThbYeWXxvQ|X0`rrDv_>J@%>FJNcK>B~BkL15a>Zp;@ zPYt0O1n)ml*`hrY1yh@r zJ4#cU@?t2>Yn!4}7biYuZ{+2B%s`crQH{f84 z4Nhac^dUjp=KMak3kJ5}Q%#rrMSd=yr2Q>;*;2Lb@-gKbY&I9v*%WEX?=zP|LW-vH zOAc*X@wzy_xUdy3kJ}4>YsJg4R|P1g6|aCA(z`VeG*&{bA$zT@xsR_)L7@*$_`;Pfs=_^h~fS1E9^g5x}8jjrD=BQ6&dj#+_zZG&$AYUsk8u!f$sfdb+0 zZQ*_;+$4d1!00D*nDnpB#1{~?^C#Ww^cL|CZ&9JgMNNy7dvprhsq%V`Jf-WZe3MV8 zGS1#h?Z~`M+In-A36wWlHHr;?ZFz2mA;Ke1rUznI%1q* z>446>9Yd4$0g5bs-a5anq;y1^JdDbBL>W9wtvm8HVrySVw6ilQe<$vjjZH3D471qS z#KJCuPTWnwXlP_-{-@F#pJYd?5=_0i@H*KTc;{dcsLO$EeO>r(xc)n`D=(n*qvc)s zrN||)f|yvG8#4)WomYj;X1I!W-B|O~RP;yfGZ>nKaTlF&hNDpQ+?Y`|4s`_wF+q7A zb&yGnreFub+QC`0;u+(0qnA=~i3#uFV&u|N0;4vy?1ownQ|jG#1=mCe5%E|=%yNO^ zr?lt2$=IE*$(G?!IpkWS%k_}XbmwClVDVClr%l=(7jGR`#N@->jXCl+JqMqYI-l}1 zwFgvPkT&+~zjeYCI-Zd?A^i*KNmp4`DqeFOIW28y2oIz?huZoSTHN*LHV<#BEoY0xd4ds@SbD@;` zpKcw$m3GG(k!zgWy_+fQ-c7N$>2uoW4E(-zFKX^vI$DtXkl!%wVQiR7P-8qgjMuKZ z_RD9~HklX9jknXV_CcV*S_s<2vEmo}Gwp+A&oEv?iCh9_#$BsFiuyfHkG%W#Gpe-x z`rAeM_AZk}%Xb=!g9z6*CuCivRG6rl0i{N&yDA8x7ihoJVNq2p+^fe5OYucza{0jBQMHMq*xUJk1=*>*wbGLP&kl zhv=`7yquCu86(l<#-)U#_%+;Q{_iMWk-hs!B}ZeB;AI&#n&(rBS9|dpJ=*d8^ozQx zzy6Fh4^j1^x<4Znhfju&;hovNxAbKUFWqP#@Nw^fyc|HrZ$uu%PGj-aEO{r7IW<#F zQ|bw-nuc*I0cqdFN7px}ZYK1C#uqT}u%Lii| z7ch>8JMMojgm#^UThK@GQpnmLD~lh&^YI_5EmC$O+c@#1LdE{t1I)VVGn zP>a6Gdra1NZG;Zw;3iDh#xY8sgaTZdjFb5gqqAh>LK7!rD0qcdOy(6F$LW|(bZIj0 z*ZC>Tnt7{|*mkLJ%N_v%F=gXm?f6(oDsQfGdInt4H$_XJS?CbdEiBdMUm$7UX_1&4 zXkG*#W1R6pWW-Et3Xh6h0%htKH@MCcHFnZn{L`m2PCc=)wv9)}K>)$p1!fob=a^jQ zGy}eNe@^dkq_0oj;r^Vd%M6BIfck(E00%(wQiI_VU_W3bpuC>aa3KcxZidChwNWhT zoy@hIS!tt3&ZSCId49*r`fE6~#%rX9{@Ow(ZQzo$DvS30D~)jlTdcf_LbAQ1N4eXg zJW~4W;vCnbKBDx<`~Ez|eMpjOvmSL%kMd|xD5ZiP7p=$TqYqP23$LNV)6f*XqpH(* z?_x{-$*er|nK?P#+ueErx`bmbp@Y--WYPPc&e!7DBp!t*c{(?R#H`}*uV4)$qXS^(BRm$taJZy1n4ws3-jn$S0c&6S_MBdC(-3(C6~w!Ko)z5 z#mPl4JHgiH5G=QdgJ7Q@((dnhXYA@SM)82$&0tP!Xeax(_H$Yu`*o!;W0F@7T=^O8qFuFZyxDy7o&Mw>=N;f z;pa^Yp9=PIvnYBQIw+X0na`gn3G{wGI{bUDf6ky?%eha{#rUN+rsBi}PC|&AT0*Sl zQR$cyDp1E*zFA$6DD_>9sx07RT&_P7Q8&If7*Z5cX7XX`&<8SoT(7^7Pg8f@mv7j; zBX0fnj^m|`HBsv1dA&GvlD<&eMckWa$MOF7Bm#bW(Sb$0q_Hjh$DGiPDlJ0$>nS3d zu?yFzSPb{n5H=(VgdgaiMc~q(dN1Z4;sv%9KG*xAu7)HZ*?Qd7!<*8gB|O^E<%5QH zfc%#7SkqZ>GAEpyN{5&7LT(*JWY)AqBYLuwmn zo%(O;w2YTCeYz`BNSmS=?-Bj93=4Y;=<_nZ6<>whw4D3_;u6uTO#bnB-*)xx5rGXvXbXF4v>KZsqjinr+1@PD|tpi#7`km@50hs|%9@1>y?w4~x)y9M~e87i?BUD)!}eJww%j=d~hxvHh* zIzE!I^rLii10RSZ?fyStNMGrSNC&HSKk$~7PidBscMEDCEnK48DmH3^u9T<0%Q{lO zUunsPpFE6oS@2jvDL?Q9s_S_zIoi9CKQTRlus8%goYwt_QOM79{6`+fS|tb7CSJy9kk|@+zX|SslG<*DyC2@fNtBJvaQDwAXyj(z+T}N7*_?26XjXY_ zcgDUvE<2sGJequAHgiI;a9Noshv>={sOIY*_IPKv@+!vZe+s-v;y?3Zj#fR-+o{6O zytHbtNnEy8h3Y8y zDSXVv>vtfbbek(gMv(iFORvBd( zvJDdij>GhTZB%gwW_AwguMr1C8|?W>%gZntzJuRZ>QmF5ytpy%A0qcS#$(NbiD^S=rBT{p^Oud92L%Z>?e0Q1vB~TB(rrA z6f&LrV}!`7^JQ1@ATp(IJaikkQhd{KlI^Bc7b?7qdlq@SH?tDRYNdm$6;BGu1F8Kk z-Z$@B!8@yd>VJ?rFXM&F>X&?qOCZHugLQ6#pqbZKl(Ea%%2*2J+0A{}tAkW_H%gK} z_1}%D+g)^LH%}|K9o$jRMG5`HF4>9yF)bfw|8Vf3ubOs0lCqZCop; zq#<^eM3sG|1KF{zQ~SNVfm;sRnY4K??~3WCjJFF_%gJ(Ty?JxWZn|+Xc&thW1 z%}*&ym-q2fjx%98bHc1125RHPW?)~Jc|R7APwoFqt2QewOWRHx?#EGj>)j&)_g=TG zdhn1C2-YlWi9f)bDY!<$!GeX5<yQFEU;9{J^ys)vdq^Uw}4)ZFt95xFN zJ8(pFDI3i?0*6A6YLOt&M?TstTV*W-Bj(yVv*+9B=wWVE|Jf&Nqd*h^CAZ~iJnzla z27B$oX!dWsiIRd3lw(onAh{pqrOSov7h>0MFB~0}D$c98&csn;3_BEjh*}o5MtVA^ z*pG6*lC$hYY9gD{ERn|PsGl}l_8!H|pL%+imcHfPF?6_1$$La@e{{e%CYnBupKJpS5@{yfF221k>$_#w^Whct^X6ePOEQ$(qWnx=)o;&XI% zqp8Me>?E0OQO}^{D#@0jXVLDnz;l-)<`y&nXp`ysUM zGOx)tg;;J~=5I~K{l|_QKB_{O%s)d#yc@#%jO{gc+?WAZ}2 zg^#M-tN(z075W*5^y@cj%*cU;?;1ArZG#^}h7Is-*xuJau*M`O15nD>9WuPnpaJFU z_8TtndKu{cKl~isc*Ofysy*gs9F;njj2FB|QO83kGBSdovKllXw?iphjuV^Pp{#P* zayYj`QMTO8p-}y*-UiwD)Wb6mFh}4iwmod>X)xr*v-A~i`1fnZNKg1R?&mW2l`IQ0VqKmZ^Z&X1H=Q)0&Yj*Uos#K z;4}aX00DqtKr=uXARG_@hz6_zYy-pt&H`=&k^yM|r-7gc1OS2o%>ZG5a6kkg8n6nm z4G<4F3y8dpf60I}fD;xey#WD$U_diK7$6)F0f+{y0&D}s1I_|&1Cjx00H?vA2Lu3u z0nGqmfN($rAR4d=uniCoI6D~jzl|TsfHZ*95HJ7)0D=L{0AYY|Km;HfunMpZ5Dz#D zxD7}Kqye0;T&L3`(Ct*FB_v6euz^HE-SS7F~dgo``a%5#uCNwZjoZ>i}+wX#|-N?>ZV;J&Nh43BpqO?Q7$UTTI{6H~u0$3kHH;)xVJ4EkC_@O6?;RfLRQ^ioqsuNLLI;0q4Fd20sHcbVT@hJ%P6l%&9TeU4NNPd+1YMBLRGwfLYImIM9)EJk>u9xhYV z|Mf%oV?BJV!VEPSGn@eQN4OQ?^;Kqw05s$X2Z)i=bA%s(@U{$GKqgv8fDVzIE63BOkdGlRGnTI9W8Ehf$6f!|w0m^6*}U7|jd<`BQH;XvmV;1dTqM1}<3EnLec{>1Os zp~BJgN6vlDrR;Hdir5u+ii`?8@%J`Wi~oeDi07}lLB-P*PvOJfcsk(ek7q7CE8=Oy zGZ;^i--dWP;@J{UCp5OMzJfWvZ!yx>~jewze=D~9`p00RC;3+aP9nZXYevfB9 zJm=skju}9O8=ivU zE<6Rp{dfw7zv3xKPU0z4b^%YJvcK>YD!YNFEkVIY{2g-43Tx7^VX$xMCapS_@eQgF zRH2%0<-kgn1FHm9^)20QK!0DyrhUd~5wxSaLwS6*_)c|)O6s5y|54L2u)JSo?W&SQg%YJ zM7B>wNy_&9-v9qS_s%otdFGk>d(V6J{XOT-B-BSlQJkbs)-XnX+M{cek|6TKA%=fb z;OfZ{CazBCV0<8NLRaL{dqn3;0=aUqZwPxGM|?cgJ0b8?!iY5D81@zNlc|HG<2os@xKaGrnB}Ne;z(#a zDOMe?a>;Rh@tB2&{JiC48EblzsvIU) zg$Bv54WWhdYisBm`L!?foBTQw%2SPBCqvcc*ZEL4`SojP3cvE)(3s2dTikn<1Ex)A zf3-m2z*#>26}l}S+f)yj3!(hg`B>%MfH@ngQ9V#EC~Ys!r&TX)?6O-m(y%T|&z1&s zexWT@?>3zL_BlOW8c0aktq^G#m!-LBjWElkVQM<Y( zwv058@I82PGSi6i6Exm`N8PE19g8Ur|1*IFMZ?#Gqh_%nss1bQM`Mk7mERKIKz`3d zzk%vcU@Wjg83+1nPZG}VF|#t$FvO@b3!Bdg5R<8jESeh#eW_A_84Q@sr~^t z5l&FP0B?Ga`BRyN(cA|PdG(+5d1No($mF%GJKK@eWaWUZzn#PtR=o}K?F+>Jgb5e@Gn%6%<2+>{0)SO zX#&s}OdS5*)L;Iq%;71_XUe7EYj6$a+HhTRb4^*U2L=R$B*Ay! zcj0|hmGBI>%=Ac`eh#-k8Y)>c@S?ZGl29*x2U}8~g~_PszvyQ@+(IH6z8So9D}~Su zbcNqoW=t#f9|~uM+p7OGc<}N_pZo;gz1f}ZB>vTKAGnq3Z}HQI)}3(IODWMY6qdlY z$ynRX@u$;qaX)BhJ?dSU^xgj zSMCbSp|GOzP*@I#m$c=lz;al;qnrxM!BG|hiGK?$he#UN;e#1SNlufMRd5jnIa%5S zZ^LrRT&Motj7%?_G=Eo?Kie*+&sgQ+u$)8_l`F$?BAut)2$s{SEkN5K0y(O(+BiAt z19NOO$;u;PIl=bR2xh}_nnmR3e*(*?)+VqOmJ@DK)&BvO({2Hc?*c3*->S;NI|$?$ zJU|0vW?>i~9Z8@7{MJvr22uYqaLld9d{!HdJr(Ku?chSUnQ&EqAiNCyVans-;57>2 z79eOAAQ*VV81mqhXf1sHW@P%<4<{9lROuPG$8W6i8sQyy@!w=pIU}7sCQXK7;EP2) z&h#dIAQql;nSS8(kzf{67r}(9#@y8i+QK_Xu!?5rO?WL0P9dBO4ue1XgDFaRJiLkw zEmID`LBb~~e+suIyq#V)z*$Mm8LUBa^gV*l?ikZk16+c0QlhEK|H2*q!ak!J${Ixp zNwA*!7lNlh7pbB0@L|~YnOg86#^n2||0>*q8kq(&`DZab5kygCc@fBTF$(_Y$H;s% zA70H$+*c!53vVyvF~^j5!;grtgz`ZNU&LcxSN<8E9fJWw3vd%w7wTI-5FeZWOr!%< zWYWq2=R!j=^Ah~eY4>m<+ylNAI$b|dHdZV(@u*1|K1VE88_VlqvEW$V0dEP#HwZ+> zib2N?(CdiBxMTTmSPVUOLXgAKx1k9H3yR%`je?U}al~Q+I;|y&g~c8;Q2i6&O|YG@ zYr~lmJZ7c(w}#(p>@mYNd{4M<64nFt9|2!(?g@8^sr)HalW^8OYDq1~zuzmGhGiJ$ zfwL2V`0vC&kcLmgfBqDy)j#3$X*f$Z&e5=4l#9SuDDW7~P}ywElsi$New+mAqp$&% zrj!Ib!PfcB?Zr|8Y8A8B8bG1dr|R2`?sJ!!bP~Gv^_= z8C!r~$(3}FGw@9Q{AUFwJmD+wx5?Q5vtV4xR?rOWfyD}G7n@_SSRU7@|7BRLkQ0^vhQ-eKgK~x^ z*_VYp=90tAluscLV`D88!>wQ!Yjzmdc|V!5UbsmUip88x{+uEx~bEjF&b8zrte3WIc156^M}LBOQ4{i;YJCpAPKo%n9S)=3}w4{o)^W5%j}<{V6;+dSq)*^@~x&V?ZAa-`Rm zhIgP~tGF_}bt{%~ji3g6h6pbzH-{fyij=q)Y@K9aAbj#$k7=y>DR2u(kMx~kHxI$l zZ#;%wnv1YJ}(Ee)vDF@!f-4r{NqqjY)#-VptL`2?wp9 z7J}Sq6xzZMes!&0G7}Dhe}$jY1g65)NeM$R)@XBq0?5p_1Qx^dXDCSxuZ6`3y-4|M z7=v`s^ijbH1Y&l!Rel2&6Z8z-_1=fY94#kBi7+cmshFmj+#D_li+MU)UHtky);S^Zx+j3Z!415TSt$U67uZG3ey-s-- zEOzfNm5;(=1MjSS89o<8@Qe!nMIc7;IOQlBTMXnSl?%XPEI+FJ0*t{toZ*_V*v@yW ze@j^G=(g8)g~g_RPW=bNK{2e`DxZWvjO^L8iWk6QaDP=xyaE>EdtT)ou-LBc+He>a zL%glQi?A5nZTxp(F}`2X3}np1_!CQfCl%z&V;rmeV&#&sSmtd6iLhAd+2}e=&M1at+W;6&k@~b8?-a z+!h|h$(!Nr%o~H?mN&U2Q~#-O2e_j)Q7YUujs7-x$8RiV>K{DfL=cJa2K*ucD2S7Q zj{)EJj>nYK1fGEx!Ftj$vGAd44+_2n_40rrl|4Sf{ zOAD7T(as$IQ!7%@2Gwl(4fPmrYwD}Nta6PZdt`Uxd$JY0T52p*^LJhoTu4Z^O z9L=9h`&{{JID53$_?fb0raTVUe1%b@O>_}{HIDyzEtV2dxPu^ftk=|0g#gRgpk~~E zX@vRV31l#bX0SYbkPNj{|2lA73z|qX+yV|X_nNZGo#4TQXM%MKI1Emx>owI_f1C_V zMzEg}*s1j+cz$DYs0nO>AM?+s;*<})}0}8AY1jckt)`vi{p~ehER7ZeFv3t&%j!ZxX@VUUMR|%RW}A6QjIlp87uxzcw^7 z6Fv{0fr}AL!dHf8kpR<)lfh>2J20cu;hu2!fB91+Rxk>|t0>rWzXYqevgCA5HliA)r$` zRn`fGYOozv!{DN@?W8l|ylMQufHS7yZ{UB(fQ|1QY@KA_23&85&(y=PAvN?c=qLoj zGgICeEM!5SSwpW8h3DYJ$v)Ga^R#d*yfox9d$dzlhkGvcnHI{8;jJI}%vK$yZQ$FF zBL(UY|B{A-6A@S^IebWlN_zs~DxZUYA=sYhSHU@8Tf%*C!(Be}FTGYW_#<5Fu+O~8 zq9uGCUU1E48fl5|!B=nj%r|ZUgC?pFFHau&%;!wb5+FbPm_fqY;WSBk__s9N2)0f# z+&Ue1hW9+Fwd;{Q01^s5d@+kO!(S9S>4PL|gKLf$DMY&kjD*Om;RFY1jycRy2 zro;!}@6+&Qcv~8N2!D}=^FGJ6y{tdHgDMJ-hdWRTXZ^2&U@igd^4lD?PDd3kXA@mU04 zz3n&HnVc%V2G8UM?M-qaReleCG$zuivK67k@A%CupX;9=&Wrv#s$T+r1n*EzfG3ag zhqqvj;B1*_0@8PCpeusCC~VOH{oqE!{br3;=}0&M{}$>$9e#hLKfL8y0zb?csbVp9 z--hktvjzW=qsgGg_ca_%1|0jNEFNbOSSK}dB^}>_cTez}VH&}GxY}gD>7+H5u_$di zl|G=H9iH*NKYTx02p%?_0%-wWfJ@C_{XegQst6WN@tZapK|MHXrr&vuAx-cyJcbu1m*X!TosJ z;73V1;rDRN0v00;|07&+q2I_wtYr8SynLD8ELQ(p@PUv0rk3(!xL1&WwLXFfB|tXz zPV<)d&3xtjaNI|JQ%M69g|DFhtNO>mAM%vPws8~qiBBR;&>H?6e_LaHVe6!TZ^OYY zEBxjcjc_7@1uL0IlxM?iT8Do4Oc!9)B%z^e~O=7Hlu1i7!<^*rnS zUH9FDa3R<_$#E<^Cy(E`b`$?v@ZZOH9!;MSeogc@`bWJkKNZ2eZ`_9!qL2!oO!YbsHiS3A)=37Az?q7;^FR*ff$Q+u3VzcIKhb{#FJclX zK#d7!FUic8(Pvg_jTMGBtYR*Z49oeyG6L%)f%1WS=koW8lB*c${%8JR8ojpXbKvzY6Yi$!iKTEX98pe3JWv z8tQ)xPJGj6Ix~@p{{?v1ZTgs;|3z>IK}sT3nj{&>XZ)q%5&;uK1d^fLaGp}`osH;6 z!za19j?xm9g?A-+oXczRPlC@4@EQ806Ms`UhCVY9miW5C+ljB0%s&#KAA;0G9#$)l zf~||;!}N5#6u!{NVfa0QUee=O zNF=?%aEmOypsB7APDZe15|_)$bKxv(ILMQe!KLulPG0l2@&@?$JinQu3GRZ+ESA@O zuKo}3+}wWiNck6d05fTG<-4%-KgUUxWGcgBsMfBDMRJ%Iwod#@!T)9QI=5Kj9}ml8 zO>sF{auU<&w}5xbDZ{oo9F@cyMMM&QDEwcLhiziT62T+{g&CxSwM2{HlpxxqA)Rt1 z{L=TX9Z&Rk!u{I&oyU5@N8p`tkpwTp$!~JH*7$D2)=7c9WhsA?79Mk66>=h2O`D3% zMj|W(Pawg@>R%4tSuv78EqHM$?tIXfUfl@JPx~C!@UO$xNrJuL8J)Sz=Ci~SKkzSymCwS~Nd|t0 zZ)0k6B3MQlf@% z)~9?1Lz=@K;Y@6YPAR_$&-$8&`Wikth+xuE_aTx*Fa{3H_Ly#}FdfdafuW-bq{21- zaUZLR{ziCjF26aV{s-WPxqQrQZU)Z5)=3Tg0p}m$HQV_t;e(ITDddP{pWnl0MykSd z@bv2py8>>2^6<^|{_rrZ4v$<*7}akMTj#Vne0BiMrv78${uJm7mxE?5g1JyfRrn14 zksOXz-VEPj+{(T|a=agYOqE|$J_Ykv(M)MZiTGcFQ%VP%v%39Uj5$#aLlk|Cb?18O^YwlSr@L0H0?I+(#4K1@Fj-olp4~+!Qn0 z$C|(|@JW_q4Bk!w?!X7XR|0s(~U!q;~5Jtd#Z&EcWze1^Hj@$U>bZs%Urihe(M zeLJsnxD*}@Z~HVdtY^a~2>gV`|0(=@Lys9o`c8z~5m+ZRau8m46Vn@?CBlp8{O`ck znW~$qf2NAmOsspl75!)67cQ`G)GB`gzI(*I#uNWqusBJd1bD}%0?WPO7^YfDK&pH& zT$u+4a#)oJCc-Ht1I{*D{O7`BR`3Nx_5Tz;`h%N*=zj%UC+Qu6D}Rgq>r<`L9}%RC ziHw4)aMr;-=b?~9a33za&3(`){6rE}aXPDt#sT1KexNyhF@|p@~KI?JLf|B4`xFr`7A8Po$aD!GJGeHY< z2DUB-A8w{$sewoEGr@K~lcWK1ROY;X((Al*k_3vtyEoC%P!_HR&-v1Qcr4r$P8k=e zu@3NvP8>9}%?H5NNrLae)A(;Q91WcK=D@+|>^}303YH_d&ic(rbQHG3J7#;$Wc5D) zkDtQa?-M@9W+dU0;j2yDcaOsF!L^x+=Mq+U zI$Z3i`z%;^X%$LS=#a;7!|o_-Md1RA#|3IYdi6edE&&+oj{iBhJ)Mm6s>6T4GY)vn z15F^noO^gTUz}6U1;;ewb)1GT4(H}LPQP@*R|z7pPDI}R=P}3e z6YdJ9kQ-{&;r{TH|1r*$$G}}_5?SP&62q_Y-Gu~Qe3rona`?j=oZuz|B{KU=NiESq z_{V?T*YOg;b+}}As!&Vt08ZG!PFXo;0yE!1uNk8WmVhs?d-+7UB5a)$uns(&H$0d4 zO#DIfI)X0cu~4`I(+hrzxqqPY2)OnT_p~Y*ngC~E8~%s-&w*pvQrRj`g{utV(TaA` zm9TY^f$i|Ejy^p{aQ;7r;Ae*2NZsRIhkKQa^wN89W>&La1eOeBWuZ@odni8(?|dp? z>SuNPOnG?J61M$Xqt)Sl|F0m(Qq5!fYn8qMSLx#qpH!0J zWjnEqssCiyIw{dYxO_&w70PEx;PZ6;+u-jx|5G7Or``+K#hy?YcGmw>2x?=&n5z-o zfLk!riDgqFybCvFb!)5snXBi<5Rk1f~{sVp?g-SsEqtB$J97WxB={DBc}@LhhVlq_@QWVj&4*-Y8l1|8 zfsKx%zXY~UO0*Wf)s|k*XVL!(Zp)U9mUH+Bd~ch_$oCAy|18|{NzVWB6Mh71%I*tr6sYk+mSNKfIwR4qGP~h=<2Ab=%dnHN5Q&_eMqH?+8(rdm5?(XV=X}Xe_zGO?B}_P~|1Vrb)^?nXl1FgRO9`JvAOWJ1=%qFM zW|j7dXW`mNw^fYUdM8YejJ=Kfe6``%fY1<+;1_~SL4Rl6rMx)V#@8|lz9PX zo)P_?Nwj~_uQ07?6%IvVLYkRxG@S1kZ+ErV&VkQ!Y&m4y1U`Zv)OEjtAq7|qw|Ffw zEO)^ru){9U8u$Ue$uOnhPJw?;3Sz76>2to(AQ40;ImXwANV{nxj7#zFfd(no=SO zzZ`DQ;dGq(?}FFX_d9RP9Q*$<1miZl&+8??1=!olXPRYjBlrv6M-@^LPK3T%%w#`# z!iUWqaEm-Xvqcju0`E+7SS=4{rVrVvxE8#e)zq1&6*)I6v*AYwTX}Ixce#5|W^e@Bp2g@S{UH?6`ISR3d ztEUm>gvT?Lu2L=tpFiO>Ny;z4F&{AQy>6eW24}#;vR(a~ivB*Y@!>BSYy*ERxpn+A zoA&UQ!p<;t*Z-oE|p;OsWF&-WWGtW4qWG4JE8M0Nn6z*{MJ2J-qU#a41Z#K%_(O-~Ix<*igP z6dMfW^~T1AIxP)6<%_LSKGbnips**-k^3r^i`%$xQed4gGjJN3%az=x-+-Qd26j*DGk#}ag!lgs CtK;|p diff --git a/nativeLib/files.native/edex/lib/native/linux32/libjasper.so.1.0.0 b/nativeLib/files.native/edex/lib/native/linux32/libjasper.so.1.0.0 index 570902ae5d3706f82f78b4c5f4e9d245fec200dc..6a490b270b2d56103eb6510c0cc397c9afe95ee1 100755 GIT binary patch delta 84443 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 C+ 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 CtK;|p diff --git a/nativeLib/rary.cots.jasper/jasper-1.900.1-security_fixes-1.patch b/nativeLib/rary.cots.jasper/jasper-1.900.1-security_fixes-2.patch similarity index 67% rename from nativeLib/rary.cots.jasper/jasper-1.900.1-security_fixes-1.patch rename to nativeLib/rary.cots.jasper/jasper-1.900.1-security_fixes-2.patch index 469560c73c..298ff84df0 100644 --- a/nativeLib/rary.cots.jasper/jasper-1.900.1-security_fixes-1.patch +++ b/nativeLib/rary.cots.jasper/jasper-1.900.1-security_fixes-2.patch @@ -1,16 +1,17 @@ -Submitted By: Ken Moffat -Date: 2008-12-29 -Initial Package Version: 1.900.1, but has some offsets -Upstream Status: unknown -Origin: Debian. I suspect this originated at gentoo, but the links to their bzip2ed -patch were dead. -Description: Vulnerability fixes for CVE-2008-352{0..2} +Submitted By: Armin K. +Date: 2015-01-28 +Initial Package Version: 1.900.1 +Upstream Status: Unknown +Origin: Archlinux +Description: Fixes multiple security issues, including: + CVE-2008-3520, CVE-2008-3522, CVE-2011-4516, CVE-2011-4517, + CVE-2014-8137, CVE-2014-8138, CVE-2014-8157, CVE-2014-8158 and + CVE-2014-9029. Filename buffer overflow and Stepsizes overflow. +#This was updated to fix jpc_qmfb.c as it was updated as put of the 64 compatibility upgrade -diff --git a/src/libjasper/base/jas_cm.c b/src/libjasper/base/jas_cm.c -index 77514dd..e63a6d2 100644 ---- a/src/libjasper/base/jas_cm.c -+++ b/src/libjasper/base/jas_cm.c -@@ -704,8 +704,7 @@ static int jas_cmpxformseq_resize(jas_cmpxformseq_t *pxformseq, int n) +--- a/src/libjasper/base/jas_cm.c 2007-01-19 22:43:05.000000000 +0100 ++++ b/src/libjasper/base/jas_cm.c 2015-01-28 17:57:34.114045370 +0100 +@@ -704,8 +704,7 @@ { jas_cmpxform_t **p; assert(n >= pxformseq->numpxforms); @@ -20,7 +21,7 @@ index 77514dd..e63a6d2 100644 if (!p) { return -1; } -@@ -889,13 +888,13 @@ static int jas_cmshapmatlut_set(jas_cmshapmatlut_t *lut, jas_icccurv_t *curv) +@@ -889,13 +888,13 @@ jas_cmshapmatlut_cleanup(lut); if (curv->numents == 0) { lut->size = 2; @@ -36,7 +37,7 @@ index 77514dd..e63a6d2 100644 goto error; gamma = curv->ents[0] / 256.0; for (i = 0; i < lut->size; ++i) { -@@ -903,7 +902,7 @@ static int jas_cmshapmatlut_set(jas_cmshapmatlut_t *lut, jas_icccurv_t *curv) +@@ -903,7 +902,7 @@ } } else { lut->size = curv->numents; @@ -45,7 +46,7 @@ index 77514dd..e63a6d2 100644 goto error; for (i = 0; i < lut->size; ++i) { lut->data[i] = curv->ents[i] / 65535.0; -@@ -953,7 +952,7 @@ static int jas_cmshapmatlut_invert(jas_cmshapmatlut_t *invlut, +@@ -953,7 +952,7 @@ return -1; } } @@ -54,11 +55,9 @@ index 77514dd..e63a6d2 100644 return -1; invlut->size = n; for (i = 0; i < invlut->size; ++i) { -diff --git a/src/libjasper/base/jas_icc.c b/src/libjasper/base/jas_icc.c -index e5a0a2e..6fb2721 100644 ---- a/src/libjasper/base/jas_icc.c -+++ b/src/libjasper/base/jas_icc.c -@@ -373,7 +373,7 @@ int jas_iccprof_save(jas_iccprof_t *prof, jas_stream_t *out) +--- a/src/libjasper/base/jas_icc.c 2007-01-19 22:43:05.000000000 +0100 ++++ b/src/libjasper/base/jas_icc.c 2015-01-28 17:58:32.874025377 +0100 +@@ -373,7 +373,7 @@ jas_icctagtab_t *tagtab; tagtab = &prof->tagtab; @@ -67,7 +66,7 @@ index e5a0a2e..6fb2721 100644 sizeof(jas_icctagtabent_t)))) goto error; tagtab->numents = prof->attrtab->numattrs; -@@ -522,7 +522,7 @@ static int jas_iccprof_gettagtab(jas_stream_t *in, jas_icctagtab_t *tagtab) +@@ -522,7 +522,7 @@ } if (jas_iccgetuint32(in, &tagtab->numents)) goto error; @@ -76,7 +75,7 @@ index e5a0a2e..6fb2721 100644 sizeof(jas_icctagtabent_t)))) goto error; tagtabent = tagtab->ents; -@@ -743,8 +743,7 @@ static int jas_iccattrtab_resize(jas_iccattrtab_t *tab, int maxents) +@@ -743,8 +743,7 @@ { jas_iccattr_t *newattrs; assert(maxents >= tab->numattrs); @@ -86,7 +85,7 @@ index e5a0a2e..6fb2721 100644 if (!newattrs) return -1; tab->attrs = newattrs; -@@ -999,7 +998,7 @@ static int jas_icccurv_input(jas_iccattrval_t *attrval, jas_stream_t *in, +@@ -999,7 +998,7 @@ if (jas_iccgetuint32(in, &curv->numents)) goto error; @@ -95,7 +94,15 @@ index e5a0a2e..6fb2721 100644 goto error; for (i = 0; i < curv->numents; ++i) { if (jas_iccgetuint16(in, &curv->ents[i])) -@@ -1100,7 +1099,7 @@ static int jas_icctxtdesc_input(jas_iccattrval_t *attrval, jas_stream_t *in, +@@ -1011,7 +1010,6 @@ + return 0; + + error: +- jas_icccurv_destroy(attrval); + return -1; + } + +@@ -1100,7 +1098,7 @@ if (jas_iccgetuint32(in, &txtdesc->uclangcode) || jas_iccgetuint32(in, &txtdesc->uclen)) goto error; @@ -104,7 +111,24 @@ index e5a0a2e..6fb2721 100644 goto error; if (jas_stream_read(in, txtdesc->ucdata, txtdesc->uclen * 2) != JAS_CAST(int, txtdesc->uclen * 2)) -@@ -1292,17 +1291,17 @@ static int jas_icclut8_input(jas_iccattrval_t *attrval, jas_stream_t *in, +@@ -1129,7 +1127,6 @@ + #endif + return 0; + error: +- jas_icctxtdesc_destroy(attrval); + return -1; + } + +@@ -1208,8 +1205,6 @@ + goto error; + return 0; + error: +- if (txt->string) +- jas_free(txt->string); + return -1; + } + +@@ -1292,17 +1287,17 @@ jas_iccgetuint16(in, &lut8->numouttabents)) goto error; clutsize = jas_iccpowi(lut8->clutlen, lut8->numinchans) * lut8->numoutchans; @@ -129,7 +153,15 @@ index e5a0a2e..6fb2721 100644 sizeof(jas_iccuint8_t *)))) goto error; for (i = 0; i < lut8->numoutchans; ++i) -@@ -1461,17 +1460,17 @@ static int jas_icclut16_input(jas_iccattrval_t *attrval, jas_stream_t *in, +@@ -1330,7 +1325,6 @@ + goto error; + return 0; + error: +- jas_icclut8_destroy(attrval); + return -1; + } + +@@ -1461,17 +1455,17 @@ jas_iccgetuint16(in, &lut16->numouttabents)) goto error; clutsize = jas_iccpowi(lut16->clutlen, lut16->numinchans) * lut16->numoutchans; @@ -154,11 +186,17 @@ index e5a0a2e..6fb2721 100644 sizeof(jas_iccuint16_t *)))) goto error; for (i = 0; i < lut16->numoutchans; ++i) -diff --git a/src/libjasper/base/jas_image.c b/src/libjasper/base/jas_image.c -index 876debb..c09974b 100644 ---- a/src/libjasper/base/jas_image.c -+++ b/src/libjasper/base/jas_image.c -@@ -142,7 +142,7 @@ jas_image_t *jas_image_create(int numcmpts, jas_image_cmptparm_t *cmptparms, +@@ -1499,7 +1493,6 @@ + goto error; + return 0; + error: +- jas_icclut16_destroy(attrval); + return -1; + } + +--- a/src/libjasper/base/jas_image.c 2007-01-19 22:43:05.000000000 +0100 ++++ b/src/libjasper/base/jas_image.c 2015-01-28 17:57:34.116045403 +0100 +@@ -142,7 +142,7 @@ image->inmem_ = true; /* Allocate memory for the per-component information. */ @@ -167,7 +205,7 @@ index 876debb..c09974b 100644 sizeof(jas_image_cmpt_t *)))) { jas_image_destroy(image); return 0; -@@ -774,8 +774,7 @@ static int jas_image_growcmpts(jas_image_t *image, int maxcmpts) +@@ -774,8 +774,7 @@ jas_image_cmpt_t **newcmpts; int cmptno; @@ -177,10 +215,8 @@ index 876debb..c09974b 100644 if (!newcmpts) { return -1; } -diff --git a/src/libjasper/base/jas_malloc.c b/src/libjasper/base/jas_malloc.c -index 13f7bc8..90658e8 100644 ---- a/src/libjasper/base/jas_malloc.c -+++ b/src/libjasper/base/jas_malloc.c +--- a/src/libjasper/base/jas_malloc.c 2007-01-19 22:43:05.000000000 +0100 ++++ b/src/libjasper/base/jas_malloc.c 2015-01-28 17:57:34.116045403 +0100 @@ -76,6 +76,9 @@ /* We need the prototype for memset. */ @@ -191,7 +227,7 @@ index 13f7bc8..90658e8 100644 #include "jasper/jas_malloc.h" -@@ -113,18 +116,50 @@ void jas_free(void *ptr) +@@ -113,18 +116,50 @@ void *jas_realloc(void *ptr, size_t size) { @@ -249,11 +285,9 @@ index 13f7bc8..90658e8 100644 return ptr; } -diff --git a/src/libjasper/base/jas_seq.c b/src/libjasper/base/jas_seq.c -index 16e1778..672b60f 100644 ---- a/src/libjasper/base/jas_seq.c -+++ b/src/libjasper/base/jas_seq.c -@@ -114,7 +114,7 @@ jas_matrix_t *jas_matrix_create(int numrows, int numcols) +--- a/src/libjasper/base/jas_seq.c 2007-01-19 22:43:05.000000000 +0100 ++++ b/src/libjasper/base/jas_seq.c 2015-01-28 17:57:34.116045403 +0100 +@@ -114,7 +114,7 @@ matrix->datasize_ = numrows * numcols; if (matrix->maxrows_ > 0) { @@ -262,7 +296,7 @@ index 16e1778..672b60f 100644 sizeof(jas_seqent_t *)))) { jas_matrix_destroy(matrix); return 0; -@@ -122,7 +122,7 @@ jas_matrix_t *jas_matrix_create(int numrows, int numcols) +@@ -122,7 +122,7 @@ } if (matrix->datasize_ > 0) { @@ -271,7 +305,7 @@ index 16e1778..672b60f 100644 sizeof(jas_seqent_t)))) { jas_matrix_destroy(matrix); return 0; -@@ -220,7 +220,7 @@ void jas_matrix_bindsub(jas_matrix_t *mat0, jas_matrix_t *mat1, int r0, int c0, +@@ -220,7 +220,7 @@ mat0->numrows_ = r1 - r0 + 1; mat0->numcols_ = c1 - c0 + 1; mat0->maxrows_ = mat0->numrows_; @@ -280,11 +314,9 @@ index 16e1778..672b60f 100644 for (i = 0; i < mat0->numrows_; ++i) { mat0->rows_[i] = mat1->rows_[r0 + i] + c0; } -diff --git a/src/libjasper/base/jas_stream.c b/src/libjasper/base/jas_stream.c -index 9a88556..61fcc64 100644 ---- a/src/libjasper/base/jas_stream.c -+++ b/src/libjasper/base/jas_stream.c -@@ -212,7 +212,7 @@ jas_stream_t *jas_stream_memopen(char *buf, int bufsize) +--- a/src/libjasper/base/jas_stream.c 2007-01-19 22:43:05.000000000 +0100 ++++ b/src/libjasper/base/jas_stream.c 2015-01-28 17:57:57.483434550 +0100 +@@ -212,7 +212,7 @@ if (buf) { obj->buf_ = (unsigned char *) buf; } else { @@ -293,40 +325,7 @@ index 9a88556..61fcc64 100644 obj->myalloc_ = 1; } if (!obj->buf_) { -@@ -361,28 +361,22 @@ jas_stream_t *jas_stream_tmpfile() - } - obj->fd = -1; - obj->flags = 0; -- obj->pathname[0] = '\0'; - stream->obj_ = obj; - - /* Choose a file name. */ -- tmpnam(obj->pathname); -+ snprintf(obj->pathname, L_tmpnam, "%stmp.XXXXXXXXXX", P_tmpdir); - - /* Open the underlying file. */ -- if ((obj->fd = open(obj->pathname, O_CREAT | O_EXCL | O_RDWR | O_TRUNC | O_BINARY, -- JAS_STREAM_PERMS)) < 0) { -+ if ((obj->fd = mkstemp(obj->pathname)) < 0) { - jas_stream_destroy(stream); - return 0; - } - - /* Unlink the file so that it will disappear if the program - terminates abnormally. */ -- /* Under UNIX, one can unlink an open file and continue to do I/O -- on it. Not all operating systems support this functionality, however. -- For example, under Microsoft Windows the unlink operation will fail, -- since the file is open. */ - if (unlink(obj->pathname)) { -- /* We will try unlinking the file again after it is closed. */ -- obj->flags |= JAS_STREAM_FILEOBJ_DELONCLOSE; -+ jas_stream_destroy(stream); -+ return 0; - } - - /* Use full buffering. */ -@@ -553,7 +547,7 @@ int jas_stream_printf(jas_stream_t *stream, const char *fmt, ...) +@@ -553,7 +553,7 @@ int ret; va_start(ap, fmt); @@ -335,7 +334,7 @@ index 9a88556..61fcc64 100644 jas_stream_puts(stream, buf); va_end(ap); return ret; -@@ -992,7 +986,7 @@ static int mem_resize(jas_stream_memobj_t *m, int bufsize) +@@ -992,7 +992,7 @@ unsigned char *buf; assert(m->buf_); @@ -344,11 +343,9 @@ index 9a88556..61fcc64 100644 return -1; } m->buf_ = buf; -diff --git a/src/libjasper/bmp/bmp_dec.c b/src/libjasper/bmp/bmp_dec.c -index 4cb0df3..7a6dcb1 100644 ---- a/src/libjasper/bmp/bmp_dec.c -+++ b/src/libjasper/bmp/bmp_dec.c -@@ -283,7 +283,7 @@ static bmp_info_t *bmp_getinfo(jas_stream_t *in) +--- a/src/libjasper/bmp/bmp_dec.c 2007-01-19 22:43:07.000000000 +0100 ++++ b/src/libjasper/bmp/bmp_dec.c 2015-01-28 17:57:34.117045420 +0100 +@@ -283,7 +283,7 @@ } if (info->numcolors > 0) { @@ -357,11 +354,9 @@ index 4cb0df3..7a6dcb1 100644 sizeof(bmp_palent_t)))) { bmp_info_destroy(info); return 0; -diff --git a/src/libjasper/include/jasper/jas_malloc.h b/src/libjasper/include/jasper/jas_malloc.h -index f2a8f8b..258e4c7 100644 ---- a/src/libjasper/include/jasper/jas_malloc.h -+++ b/src/libjasper/include/jasper/jas_malloc.h -@@ -95,6 +95,9 @@ extern "C" { +--- a/src/libjasper/include/jasper/jas_malloc.h 2007-01-19 22:43:04.000000000 +0100 ++++ b/src/libjasper/include/jasper/jas_malloc.h 2015-01-28 17:57:34.118045437 +0100 +@@ -95,6 +95,9 @@ #define jas_free MEMFREE #define jas_realloc MEMREALLOC #define jas_calloc MEMCALLOC @@ -371,7 +366,7 @@ index f2a8f8b..258e4c7 100644 #endif /******************************************************************************\ -@@ -115,6 +118,12 @@ void *jas_realloc(void *ptr, size_t size); +@@ -115,6 +118,12 @@ /* Allocate a block of memory and initialize the contents to zero. */ void *jas_calloc(size_t nmemb, size_t size); @@ -384,11 +379,18 @@ index f2a8f8b..258e4c7 100644 #endif #ifdef __cplusplus -diff --git a/src/libjasper/jp2/jp2_cod.c b/src/libjasper/jp2/jp2_cod.c -index d0bf058..8edf453 100644 ---- a/src/libjasper/jp2/jp2_cod.c -+++ b/src/libjasper/jp2/jp2_cod.c -@@ -380,7 +380,7 @@ static int jp2_bpcc_getdata(jp2_box_t *box, jas_stream_t *in) +--- a/src/libjasper/jp2/jp2_cod.c 2007-01-19 22:43:05.000000000 +0100 ++++ b/src/libjasper/jp2/jp2_cod.c 2015-01-28 17:57:34.118045437 +0100 +@@ -247,7 +247,7 @@ + box = 0; + tmpstream = 0; + +- if (!(box = jas_malloc(sizeof(jp2_box_t)))) { ++ if (!(box = jas_calloc(1, sizeof(jp2_box_t)))) { + goto error; + } + box->ops = &jp2_boxinfo_unk.ops; +@@ -372,7 +372,7 @@ jp2_bpcc_t *bpcc = &box->data.bpcc; unsigned int i; bpcc->numcmpts = box->datalen; @@ -397,7 +399,7 @@ index d0bf058..8edf453 100644 return -1; } for (i = 0; i < bpcc->numcmpts; ++i) { -@@ -424,7 +424,7 @@ static int jp2_colr_getdata(jp2_box_t *box, jas_stream_t *in) +@@ -416,7 +416,7 @@ break; case JP2_COLR_ICC: colr->iccplen = box->datalen - 3; @@ -406,7 +408,7 @@ index d0bf058..8edf453 100644 return -1; } if (jas_stream_read(in, colr->iccp, colr->iccplen) != colr->iccplen) { -@@ -461,7 +461,7 @@ static int jp2_cdef_getdata(jp2_box_t *box, jas_stream_t *in) +@@ -453,7 +453,7 @@ if (jp2_getuint16(in, &cdef->numchans)) { return -1; } @@ -415,7 +417,7 @@ index d0bf058..8edf453 100644 return -1; } for (channo = 0; channo < cdef->numchans; ++channo) { -@@ -774,7 +774,7 @@ static int jp2_cmap_getdata(jp2_box_t *box, jas_stream_t *in) +@@ -766,7 +766,7 @@ unsigned int i; cmap->numchans = (box->datalen) / 4; @@ -424,7 +426,7 @@ index d0bf058..8edf453 100644 return -1; } for (i = 0; i < cmap->numchans; ++i) { -@@ -836,10 +836,10 @@ static int jp2_pclr_getdata(jp2_box_t *box, jas_stream_t *in) +@@ -828,10 +828,10 @@ return -1; } lutsize = pclr->numlutents * pclr->numchans; @@ -437,11 +439,21 @@ index d0bf058..8edf453 100644 return -1; } for (i = 0; i < pclr->numchans; ++i) { -diff --git a/src/libjasper/jp2/jp2_dec.c b/src/libjasper/jp2/jp2_dec.c -index 65772de..5f7be7e 100644 ---- a/src/libjasper/jp2/jp2_dec.c -+++ b/src/libjasper/jp2/jp2_dec.c -@@ -336,7 +336,7 @@ jas_image_t *jp2_decode(jas_stream_t *in, char *optstr) +--- a/src/libjasper/jp2/jp2_dec.c 2007-01-19 22:43:05.000000000 +0100 ++++ b/src/libjasper/jp2/jp2_dec.c 2015-01-28 18:01:07.082617636 +0100 +@@ -291,7 +291,10 @@ + case JP2_COLR_ICC: + iccprof = jas_iccprof_createfrombuf(dec->colr->data.colr.iccp, + dec->colr->data.colr.iccplen); +- assert(iccprof); ++ if (!iccprof) { ++ jas_eprintf("error: failed to parse ICC profile\n"); ++ goto error; ++ } + jas_iccprof_gethdr(iccprof, &icchdr); + jas_eprintf("ICC Profile CS %08x\n", icchdr.colorspc); + jas_image_setclrspc(dec->image, fromiccpcs(icchdr.colorspc)); +@@ -336,7 +339,7 @@ } /* Allocate space for the channel-number to component-number LUT. */ @@ -450,7 +462,7 @@ index 65772de..5f7be7e 100644 jas_eprintf("error: no memory\n"); goto error; } -@@ -354,7 +354,7 @@ jas_image_t *jp2_decode(jas_stream_t *in, char *optstr) +@@ -354,7 +357,7 @@ if (cmapent->map == JP2_CMAP_DIRECT) { dec->chantocmptlut[channo] = channo; } else if (cmapent->map == JP2_CMAP_PALETTE) { @@ -459,11 +471,21 @@ index 65772de..5f7be7e 100644 for (i = 0; i < pclrd->numlutents; ++i) { lutents[i] = pclrd->lutdata[cmapent->pcol + i * pclrd->numchans]; } -diff --git a/src/libjasper/jp2/jp2_enc.c b/src/libjasper/jp2/jp2_enc.c -index d41392f..b837612 100644 ---- a/src/libjasper/jp2/jp2_enc.c -+++ b/src/libjasper/jp2/jp2_enc.c -@@ -194,7 +194,7 @@ int sgnd; +@@ -386,6 +389,11 @@ + /* Determine the type of each component. */ + if (dec->cdef) { + for (i = 0; i < dec->numchans; ++i) { ++ /* Is the channel number reasonable? */ ++ if (dec->cdef->data.cdef.ents[i].channo >= dec->numchans) { ++ jas_eprintf("error: invalid channel number in CDEF box\n"); ++ goto error; ++ } + jas_image_setcmpttype(dec->image, + dec->chantocmptlut[dec->cdef->data.cdef.ents[i].channo], + jp2_getct(jas_image_clrspc(dec->image), +--- a/src/libjasper/jp2/jp2_enc.c 2007-01-19 22:43:05.000000000 +0100 ++++ b/src/libjasper/jp2/jp2_enc.c 2015-01-28 17:57:34.119045453 +0100 +@@ -191,7 +191,7 @@ } bpcc = &box->data.bpcc; bpcc->numcmpts = jas_image_numcmpts(image); @@ -472,7 +494,7 @@ index d41392f..b837612 100644 sizeof(uint_fast8_t)))) { goto error; } -@@ -288,7 +288,7 @@ int sgnd; +@@ -285,7 +285,7 @@ } cdef = &box->data.cdef; cdef->numchans = jas_image_numcmpts(image); @@ -481,11 +503,9 @@ index d41392f..b837612 100644 for (i = 0; i < jas_image_numcmpts(image); ++i) { cdefchanent = &cdef->ents[i]; cdefchanent->channo = i; -diff --git a/src/libjasper/jpc/jpc_cs.c b/src/libjasper/jpc/jpc_cs.c -index f076571..d1fe721 100644 ---- a/src/libjasper/jpc/jpc_cs.c -+++ b/src/libjasper/jpc/jpc_cs.c -@@ -502,7 +502,7 @@ static int jpc_siz_getparms(jpc_ms_t *ms, jpc_cstate_t *cstate, +--- a/src/libjasper/jpc/jpc_cs.c 2007-01-19 22:43:07.000000000 +0100 ++++ b/src/libjasper/jpc/jpc_cs.c 2015-01-28 17:57:34.120045470 +0100 +@@ -502,7 +502,7 @@ !siz->tileheight || !siz->numcomps) { return -1; } @@ -494,7 +514,21 @@ index f076571..d1fe721 100644 return -1; } for (i = 0; i < siz->numcomps; ++i) { -@@ -1091,7 +1091,7 @@ static int jpc_ppm_getparms(jpc_ms_t *ms, jpc_cstate_t *cstate, jas_stream_t *in +@@ -982,8 +982,11 @@ + compparms->numstepsizes = (len - n) / 2; + break; + } +- if (compparms->numstepsizes > 0) { +- compparms->stepsizes = jas_malloc(compparms->numstepsizes * ++ if (compparms->numstepsizes > 3 * JPC_MAXRLVLS + 1) { ++ jpc_qcx_destroycompparms(compparms); ++ return -1; ++ } else if (compparms->numstepsizes > 0) { ++ compparms->stepsizes = jas_alloc2(compparms->numstepsizes, + sizeof(uint_fast16_t)); + assert(compparms->stepsizes); + for (i = 0; i < compparms->numstepsizes; ++i) { +@@ -1091,7 +1094,7 @@ ppm->len = ms->len - 1; if (ppm->len > 0) { @@ -503,7 +537,7 @@ index f076571..d1fe721 100644 goto error; } if (JAS_CAST(uint, jas_stream_read(in, ppm->data, ppm->len)) != ppm->len) { -@@ -1160,7 +1160,7 @@ static int jpc_ppt_getparms(jpc_ms_t *ms, jpc_cstate_t *cstate, jas_stream_t *in +@@ -1160,7 +1163,7 @@ } ppt->len = ms->len - 1; if (ppt->len > 0) { @@ -512,7 +546,7 @@ index f076571..d1fe721 100644 goto error; } if (jas_stream_read(in, (char *) ppt->data, ppt->len) != JAS_CAST(int, ppt->len)) { -@@ -1223,7 +1223,7 @@ static int jpc_poc_getparms(jpc_ms_t *ms, jpc_cstate_t *cstate, jas_stream_t *in +@@ -1223,7 +1226,7 @@ uint_fast8_t tmp; poc->numpchgs = (cstate->numcomps > 256) ? (ms->len / 9) : (ms->len / 7); @@ -521,7 +555,7 @@ index f076571..d1fe721 100644 goto error; } for (pchgno = 0, pchg = poc->pchgs; pchgno < poc->numpchgs; ++pchgno, -@@ -1328,7 +1328,7 @@ static int jpc_crg_getparms(jpc_ms_t *ms, jpc_cstate_t *cstate, jas_stream_t *in +@@ -1328,7 +1331,7 @@ jpc_crgcomp_t *comp; uint_fast16_t compno; crg->numcomps = cstate->numcomps; @@ -530,7 +564,7 @@ index f076571..d1fe721 100644 return -1; } for (compno = 0, comp = crg->comps; compno < cstate->numcomps; -@@ -1467,7 +1467,7 @@ static int jpc_unk_getparms(jpc_ms_t *ms, jpc_cstate_t *cstate, jas_stream_t *in +@@ -1467,7 +1470,7 @@ cstate = 0; if (ms->len > 0) { @@ -539,11 +573,9 @@ index f076571..d1fe721 100644 return -1; } if (jas_stream_read(in, (char *) unk->data, ms->len) != JAS_CAST(int, ms->len)) { -diff --git a/src/libjasper/jpc/jpc_dec.c b/src/libjasper/jpc/jpc_dec.c -index fa72a0e..b1ea056 100644 ---- a/src/libjasper/jpc/jpc_dec.c -+++ b/src/libjasper/jpc/jpc_dec.c -@@ -449,7 +449,7 @@ static int jpc_dec_process_sot(jpc_dec_t *dec, jpc_ms_t *ms) +--- a/src/libjasper/jpc/jpc_dec.c 2007-01-19 22:43:07.000000000 +0100 ++++ b/src/libjasper/jpc/jpc_dec.c 2015-01-28 17:59:44.748230228 +0100 +@@ -449,7 +449,7 @@ if (dec->state == JPC_MH) { @@ -552,7 +584,16 @@ index fa72a0e..b1ea056 100644 assert(compinfos); for (cmptno = 0, cmpt = dec->cmpts, compinfo = compinfos; cmptno < dec->numcomps; ++cmptno, ++cmpt, ++compinfo) { -@@ -692,7 +692,7 @@ static int jpc_dec_tileinit(jpc_dec_t *dec, jpc_dec_tile_t *tile) +@@ -489,7 +489,7 @@ + dec->curtileendoff = 0; + } + +- if (JAS_CAST(int, sot->tileno) > dec->numtiles) { ++ if (JAS_CAST(int, sot->tileno) >= dec->numtiles) { + jas_eprintf("invalid tile number in SOT marker segment\n"); + return -1; + } +@@ -692,7 +692,7 @@ tile->realmode = 1; } tcomp->numrlvls = ccp->numrlvls; @@ -561,7 +602,7 @@ index fa72a0e..b1ea056 100644 sizeof(jpc_dec_rlvl_t)))) { return -1; } -@@ -764,7 +764,7 @@ rlvl->bands = 0; +@@ -764,7 +764,7 @@ rlvl->cbgheightexpn); rlvl->numbands = (!rlvlno) ? 1 : 3; @@ -570,7 +611,7 @@ index fa72a0e..b1ea056 100644 sizeof(jpc_dec_band_t)))) { return -1; } -@@ -797,7 +797,7 @@ rlvl->bands = 0; +@@ -797,7 +797,7 @@ assert(rlvl->numprcs); @@ -579,7 +620,7 @@ index fa72a0e..b1ea056 100644 return -1; } -@@ -834,7 +834,7 @@ rlvl->bands = 0; +@@ -834,7 +834,7 @@ if (!(prc->numimsbstagtree = jpc_tagtree_create(prc->numhcblks, prc->numvcblks))) { return -1; } @@ -588,7 +629,22 @@ index fa72a0e..b1ea056 100644 return -1; } -@@ -1181,7 +1181,7 @@ static int jpc_dec_process_siz(jpc_dec_t *dec, jpc_ms_t *ms) +@@ -1069,12 +1069,12 @@ + /* Apply an inverse intercomponent transform if necessary. */ + switch (tile->cp->mctid) { + case JPC_MCT_RCT: +- assert(dec->numcomps == 3); ++ assert(dec->numcomps >= 3); + jpc_irct(tile->tcomps[0].data, tile->tcomps[1].data, + tile->tcomps[2].data); + break; + case JPC_MCT_ICT: +- assert(dec->numcomps == 3); ++ assert(dec->numcomps >= 3); + jpc_iict(tile->tcomps[0].data, tile->tcomps[1].data, + tile->tcomps[2].data); + break; +@@ -1181,7 +1181,7 @@ return -1; } @@ -597,25 +653,52 @@ index fa72a0e..b1ea056 100644 return -1; } -@@ -1204,7 +1204,7 @@ static int jpc_dec_process_siz(jpc_dec_t *dec, jpc_ms_t *ms) +@@ -1204,7 +1204,7 @@ dec->numhtiles = JPC_CEILDIV(dec->xend - dec->tilexoff, dec->tilewidth); dec->numvtiles = JPC_CEILDIV(dec->yend - dec->tileyoff, dec->tileheight); dec->numtiles = dec->numhtiles * dec->numvtiles; - if (!(dec->tiles = jas_malloc(dec->numtiles * sizeof(jpc_dec_tile_t)))) { -+ if (!(dec->tiles = jas_alloc2(dec->numtiles, sizeof(jpc_dec_tile_t)))) { ++ if (!(dec->tiles = jas_calloc(dec->numtiles, sizeof(jpc_dec_tile_t)))) { return -1; } -@@ -1228,7 +1228,7 @@ static int jpc_dec_process_siz(jpc_dec_t *dec, jpc_ms_t *ms) +@@ -1228,7 +1228,7 @@ tile->pkthdrstreampos = 0; tile->pptstab = 0; tile->cp = 0; - if (!(tile->tcomps = jas_malloc(dec->numcomps * -+ if (!(tile->tcomps = jas_alloc2(dec->numcomps, ++ if (!(tile->tcomps = jas_calloc(dec->numcomps, sizeof(jpc_dec_tcomp_t)))) { return -1; } -@@ -1489,7 +1489,7 @@ static jpc_dec_cp_t *jpc_dec_cp_create(uint_fast16_t numcomps) +@@ -1280,7 +1280,7 @@ + jpc_coc_t *coc = &ms->parms.coc; + jpc_dec_tile_t *tile; + +- if (JAS_CAST(int, coc->compno) > dec->numcomps) { ++ if (JAS_CAST(int, coc->compno) >= dec->numcomps) { + jas_eprintf("invalid component number in COC marker segment\n"); + return -1; + } +@@ -1306,7 +1306,7 @@ + jpc_rgn_t *rgn = &ms->parms.rgn; + jpc_dec_tile_t *tile; + +- if (JAS_CAST(int, rgn->compno) > dec->numcomps) { ++ if (JAS_CAST(int, rgn->compno) >= dec->numcomps) { + jas_eprintf("invalid component number in RGN marker segment\n"); + return -1; + } +@@ -1355,7 +1355,7 @@ + jpc_qcc_t *qcc = &ms->parms.qcc; + jpc_dec_tile_t *tile; + +- if (JAS_CAST(int, qcc->compno) > dec->numcomps) { ++ if (JAS_CAST(int, qcc->compno) >= dec->numcomps) { + jas_eprintf("invalid component number in QCC marker segment\n"); + return -1; + } +@@ -1489,7 +1489,7 @@ cp->numlyrs = 0; cp->mctid = 0; cp->csty = 0; @@ -624,7 +707,7 @@ index fa72a0e..b1ea056 100644 return 0; } if (!(cp->pchglist = jpc_pchglist_create())) { -@@ -2048,7 +2048,7 @@ jpc_streamlist_t *jpc_streamlist_create() +@@ -2048,7 +2048,7 @@ } streamlist->numstreams = 0; streamlist->maxstreams = 100; @@ -633,7 +716,7 @@ index fa72a0e..b1ea056 100644 sizeof(jas_stream_t *)))) { jas_free(streamlist); return 0; -@@ -2068,8 +2068,8 @@ int jpc_streamlist_insert(jpc_streamlist_t *streamlist, int streamno, +@@ -2068,8 +2068,8 @@ /* Grow the array of streams if necessary. */ if (streamlist->numstreams >= streamlist->maxstreams) { newmaxstreams = streamlist->maxstreams + 1024; @@ -644,7 +727,7 @@ index fa72a0e..b1ea056 100644 return -1; } for (i = streamlist->numstreams; i < streamlist->maxstreams; ++i) { -@@ -2155,8 +2155,7 @@ int jpc_ppxstab_grow(jpc_ppxstab_t *tab, int maxents) +@@ -2155,8 +2155,7 @@ { jpc_ppxstabent_t **newents; if (tab->maxents < maxents) { @@ -654,11 +737,9 @@ index fa72a0e..b1ea056 100644 if (!newents) { return -1; } -diff --git a/src/libjasper/jpc/jpc_enc.c b/src/libjasper/jpc/jpc_enc.c -index bbe1ef2..6299ead 100644 ---- a/src/libjasper/jpc/jpc_enc.c -+++ b/src/libjasper/jpc/jpc_enc.c -@@ -403,7 +403,7 @@ static jpc_enc_cp_t *cp_create(char *optstr, jas_image_t *image) +--- a/src/libjasper/jpc/jpc_enc.c 2007-01-19 22:43:07.000000000 +0100 ++++ b/src/libjasper/jpc/jpc_enc.c 2015-01-28 17:57:34.122045503 +0100 +@@ -403,7 +403,7 @@ vsteplcm *= jas_image_cmptvstep(image, cmptno); } @@ -667,7 +748,7 @@ index bbe1ef2..6299ead 100644 goto error; } for (cmptno = 0, ccp = cp->ccps; cmptno < JAS_CAST(int, cp->numcmpts); ++cmptno, -@@ -656,7 +656,7 @@ static jpc_enc_cp_t *cp_create(char *optstr, jas_image_t *image) +@@ -656,7 +656,7 @@ if (ilyrrates && numilyrrates > 0) { tcp->numlyrs = numilyrrates + 1; @@ -676,7 +757,7 @@ index bbe1ef2..6299ead 100644 sizeof(jpc_fix_t)))) { goto error; } -@@ -940,7 +940,7 @@ startoff = jas_stream_getrwcount(enc->out); +@@ -940,7 +940,7 @@ siz->tilewidth = cp->tilewidth; siz->tileheight = cp->tileheight; siz->numcomps = cp->numcmpts; @@ -685,7 +766,7 @@ index bbe1ef2..6299ead 100644 assert(siz->comps); for (i = 0; i < JAS_CAST(int, cp->numcmpts); ++i) { siz->comps[i].prec = cp->ccps[i].prec; -@@ -977,7 +977,7 @@ startoff = jas_stream_getrwcount(enc->out); +@@ -977,7 +977,7 @@ return -1; } crg = &enc->mrk->parms.crg; @@ -694,7 +775,7 @@ index bbe1ef2..6299ead 100644 if (jpc_putms(enc->out, enc->cstate, enc->mrk)) { jas_eprintf("cannot write CRG marker\n"); return -1; -@@ -1955,7 +1955,7 @@ jpc_enc_tile_t *jpc_enc_tile_create(jpc_enc_cp_t *cp, jas_image_t *image, int ti +@@ -1955,7 +1955,7 @@ tile->mctid = cp->tcp.mctid; tile->numlyrs = cp->tcp.numlyrs; @@ -703,7 +784,7 @@ index bbe1ef2..6299ead 100644 sizeof(uint_fast32_t)))) { goto error; } -@@ -1964,7 +1964,7 @@ jpc_enc_tile_t *jpc_enc_tile_create(jpc_enc_cp_t *cp, jas_image_t *image, int ti +@@ -1964,7 +1964,7 @@ } /* Allocate an array for the per-tile-component information. */ @@ -712,7 +793,7 @@ index bbe1ef2..6299ead 100644 goto error; } /* Initialize a few members critical for error recovery. */ -@@ -2110,7 +2110,7 @@ static jpc_enc_tcmpt_t *tcmpt_create(jpc_enc_tcmpt_t *tcmpt, jpc_enc_cp_t *cp, +@@ -2110,7 +2110,7 @@ jas_seq2d_ystart(tcmpt->data), jas_seq2d_xend(tcmpt->data), jas_seq2d_yend(tcmpt->data), bandinfos); @@ -721,7 +802,7 @@ index bbe1ef2..6299ead 100644 goto error; } for (rlvlno = 0, rlvl = tcmpt->rlvls; rlvlno < tcmpt->numrlvls; -@@ -2213,7 +2213,7 @@ static jpc_enc_rlvl_t *rlvl_create(jpc_enc_rlvl_t *rlvl, jpc_enc_cp_t *cp, +@@ -2213,7 +2213,7 @@ rlvl->numvprcs = JPC_FLOORDIVPOW2(brprcbry - tlprctly, rlvl->prcheightexpn); rlvl->numprcs = rlvl->numhprcs * rlvl->numvprcs; @@ -730,7 +811,7 @@ index bbe1ef2..6299ead 100644 goto error; } for (bandno = 0, band = rlvl->bands; bandno < rlvl->numbands; -@@ -2290,7 +2290,7 @@ if (bandinfo->xstart != bandinfo->xend && bandinfo->ystart != bandinfo->yend) { +@@ -2290,7 +2290,7 @@ band->synweight = bandinfo->synenergywt; if (band->data) { @@ -739,7 +820,7 @@ index bbe1ef2..6299ead 100644 goto error; } for (prcno = 0, prc = band->prcs; prcno < rlvl->numprcs; ++prcno, -@@ -2422,7 +2422,7 @@ if (!rlvlno) { +@@ -2422,7 +2422,7 @@ goto error; } @@ -748,11 +829,9 @@ index bbe1ef2..6299ead 100644 goto error; } for (cblkno = 0, cblk = prc->cblks; cblkno < prc->numcblks; -diff --git a/src/libjasper/jpc/jpc_mqdec.c b/src/libjasper/jpc/jpc_mqdec.c -index 4cc2f46..66a8581 100644 ---- a/src/libjasper/jpc/jpc_mqdec.c -+++ b/src/libjasper/jpc/jpc_mqdec.c -@@ -118,7 +118,7 @@ jpc_mqdec_t *jpc_mqdec_create(int maxctxs, jas_stream_t *in) +--- a/src/libjasper/jpc/jpc_mqdec.c 2007-01-19 22:43:07.000000000 +0100 ++++ b/src/libjasper/jpc/jpc_mqdec.c 2015-01-28 17:57:34.126045570 +0100 +@@ -118,7 +118,7 @@ mqdec->in = in; mqdec->maxctxs = maxctxs; /* Allocate memory for the per-context state information. */ @@ -761,11 +840,9 @@ index 4cc2f46..66a8581 100644 goto error; } /* Set the current context to the first context. */ -diff --git a/src/libjasper/jpc/jpc_mqenc.c b/src/libjasper/jpc/jpc_mqenc.c -index 758b361..399581e 100644 ---- a/src/libjasper/jpc/jpc_mqenc.c -+++ b/src/libjasper/jpc/jpc_mqenc.c -@@ -197,7 +197,7 @@ jpc_mqenc_t *jpc_mqenc_create(int maxctxs, jas_stream_t *out) +--- a/src/libjasper/jpc/jpc_mqenc.c 2007-01-19 22:43:07.000000000 +0100 ++++ b/src/libjasper/jpc/jpc_mqenc.c 2015-01-28 17:57:34.126045570 +0100 +@@ -197,7 +197,7 @@ mqenc->maxctxs = maxctxs; /* Allocate memory for the per-context state information. */ @@ -773,13 +850,11 @@ index 758b361..399581e 100644 + if (!(mqenc->ctxs = jas_alloc2(mqenc->maxctxs, sizeof(jpc_mqstate_t *)))) { goto error; } - -diff --git a/src/libjasper/jpc/jpc_qmfb.c b/src/libjasper/jpc/jpc_qmfb.c -index 00d406d..cf3320b 100644 ---- a/src/libjasper/jpc/jpc_qmfb.c -+++ b/src/libjasper/jpc/jpc_qmfb.c -@@ -321,7 +321,7 @@ void jpc_qmfb_split_row(jpc_fix_t *a, int numcols, int parity) - #if !defined(HAVE_VLA) + +# This was modified as the 64 bit conversion already removed the #define/#if +--- a/src/libjasper/jpc/jpc_qmfb.c 2007-01-19 22:43:07.000000000 +0100 ++++ b/src/libjasper/jpc/jpc_qmfb.c 2015-01-28 18:00:17.753785538 +0100 +@@ -324,6 +324,6 @@ /* Get a buffer. */ if (bufsize > QMFB_SPLITBUFSIZE) { - if (!(buf = jas_malloc(bufsize * sizeof(jpc_fix_t)))) { @@ -787,8 +862,7 @@ index 00d406d..cf3320b 100644 /* We have no choice but to commit suicide in this case. */ abort(); } -@@ -389,7 +389,7 @@ void jpc_qmfb_split_col(jpc_fix_t *a, int numrows, int stride, - #if !defined(HAVE_VLA) +@@ -384,6 +384,6 @@ /* Get a buffer. */ if (bufsize > QMFB_SPLITBUFSIZE) { - if (!(buf = jas_malloc(bufsize * sizeof(jpc_fix_t)))) { @@ -796,8 +870,7 @@ index 00d406d..cf3320b 100644 /* We have no choice but to commit suicide in this case. */ abort(); } -@@ -460,7 +460,7 @@ void jpc_qmfb_split_colgrp(jpc_fix_t *a, int numrows, int stride, - #if !defined(HAVE_VLA) +@@ -447,6 +447,6 @@ /* Get a buffer. */ if (bufsize > QMFB_SPLITBUFSIZE) { - if (!(buf = jas_malloc(bufsize * sizeof(jpc_fix_t)))) { @@ -805,8 +878,7 @@ index 00d406d..cf3320b 100644 /* We have no choice but to commit suicide in this case. */ abort(); } -@@ -549,7 +549,7 @@ void jpc_qmfb_split_colres(jpc_fix_t *a, int numrows, int numcols, - #if !defined(HAVE_VLA) +@@ -527,6 +527,6 @@ /* Get a buffer. */ if (bufsize > QMFB_SPLITBUFSIZE) { - if (!(buf = jas_malloc(bufsize * sizeof(jpc_fix_t)))) { @@ -814,8 +886,7 @@ index 00d406d..cf3320b 100644 /* We have no choice but to commit suicide in this case. */ abort(); } -@@ -633,7 +633,7 @@ void jpc_qmfb_join_row(jpc_fix_t *a, int numcols, int parity) - #if !defined(HAVE_VLA) +@@ -603,6 +603,6 @@ /* Allocate memory for the join buffer from the heap. */ if (bufsize > QMFB_JOINBUFSIZE) { - if (!(buf = jas_malloc(bufsize * sizeof(jpc_fix_t)))) { @@ -823,8 +894,7 @@ index 00d406d..cf3320b 100644 /* We have no choice but to commit suicide. */ abort(); } -@@ -698,7 +698,7 @@ void jpc_qmfb_join_col(jpc_fix_t *a, int numrows, int stride, - #if !defined(HAVE_VLA) +@@ -661,6 +661,6 @@ /* Allocate memory for the join buffer from the heap. */ if (bufsize > QMFB_JOINBUFSIZE) { - if (!(buf = jas_malloc(bufsize * sizeof(jpc_fix_t)))) { @@ -832,8 +902,7 @@ index 00d406d..cf3320b 100644 /* We have no choice but to commit suicide. */ abort(); } -@@ -766,7 +766,7 @@ void jpc_qmfb_join_colgrp(jpc_fix_t *a, int numrows, int stride, - #if !defined(HAVE_VLA) +@@ -722,6 +722,6 @@ /* Allocate memory for the join buffer from the heap. */ if (bufsize > QMFB_JOINBUFSIZE) { - if (!(buf = jas_malloc(bufsize * JPC_QMFB_COLGRPSIZE * sizeof(jpc_fix_t)))) { @@ -841,8 +910,7 @@ index 00d406d..cf3320b 100644 /* We have no choice but to commit suicide. */ abort(); } -@@ -852,7 +852,7 @@ void jpc_qmfb_join_colres(jpc_fix_t *a, int numrows, int numcols, - #if !defined(HAVE_VLA) +@@ -800,6 +800,6 @@ /* Allocate memory for the join buffer from the heap. */ if (bufsize > QMFB_JOINBUFSIZE) { - if (!(buf = jas_malloc(bufsize * numcols * sizeof(jpc_fix_t)))) { @@ -850,11 +918,9 @@ index 00d406d..cf3320b 100644 /* We have no choice but to commit suicide. */ abort(); } -diff --git a/src/libjasper/jpc/jpc_t1enc.c b/src/libjasper/jpc/jpc_t1enc.c -index 3a5acea..c8bfd21 100644 ---- a/src/libjasper/jpc/jpc_t1enc.c -+++ b/src/libjasper/jpc/jpc_t1enc.c -@@ -219,7 +219,7 @@ int jpc_enc_enccblk(jpc_enc_t *enc, jas_stream_t *out, jpc_enc_tcmpt_t *tcmpt, j +--- a/src/libjasper/jpc/jpc_t1enc.c 2007-01-19 22:43:07.000000000 +0100 ++++ b/src/libjasper/jpc/jpc_t1enc.c 2015-01-28 17:57:34.128045603 +0100 +@@ -219,7 +219,7 @@ cblk->numpasses = (cblk->numbps > 0) ? (3 * cblk->numbps - 2) : 0; if (cblk->numpasses > 0) { @@ -863,11 +929,9 @@ index 3a5acea..c8bfd21 100644 assert(cblk->passes); } else { cblk->passes = 0; -diff --git a/src/libjasper/jpc/jpc_t2cod.c b/src/libjasper/jpc/jpc_t2cod.c -index e734900..f3d030a 100644 ---- a/src/libjasper/jpc/jpc_t2cod.c -+++ b/src/libjasper/jpc/jpc_t2cod.c -@@ -573,7 +573,7 @@ int jpc_pchglist_insert(jpc_pchglist_t *pchglist, int pchgno, jpc_pchg_t *pchg) +--- a/src/libjasper/jpc/jpc_t2cod.c 2007-01-19 22:43:07.000000000 +0100 ++++ b/src/libjasper/jpc/jpc_t2cod.c 2015-01-28 17:57:34.128045603 +0100 +@@ -573,7 +573,7 @@ } if (pchglist->numpchgs >= pchglist->maxpchgs) { newmaxpchgs = pchglist->maxpchgs + 128; @@ -876,11 +940,9 @@ index e734900..f3d030a 100644 return -1; } pchglist->maxpchgs = newmaxpchgs; -diff --git a/src/libjasper/jpc/jpc_t2dec.c b/src/libjasper/jpc/jpc_t2dec.c -index 6d2cb72..8300f9b 100644 ---- a/src/libjasper/jpc/jpc_t2dec.c -+++ b/src/libjasper/jpc/jpc_t2dec.c -@@ -478,7 +478,7 @@ jpc_pi_t *jpc_dec_pi_create(jpc_dec_t *dec, jpc_dec_tile_t *tile) +--- a/src/libjasper/jpc/jpc_t2dec.c 2007-01-19 22:43:07.000000000 +0100 ++++ b/src/libjasper/jpc/jpc_t2dec.c 2015-01-28 17:57:34.129045620 +0100 +@@ -478,7 +478,7 @@ return 0; } pi->numcomps = dec->numcomps; @@ -889,7 +951,7 @@ index 6d2cb72..8300f9b 100644 jpc_pi_destroy(pi); return 0; } -@@ -490,7 +490,7 @@ jpc_pi_t *jpc_dec_pi_create(jpc_dec_t *dec, jpc_dec_tile_t *tile) +@@ -490,7 +490,7 @@ for (compno = 0, tcomp = tile->tcomps, picomp = pi->picomps; compno < pi->numcomps; ++compno, ++tcomp, ++picomp) { picomp->numrlvls = tcomp->numrlvls; @@ -898,7 +960,7 @@ index 6d2cb72..8300f9b 100644 sizeof(jpc_pirlvl_t)))) { jpc_pi_destroy(pi); return 0; -@@ -503,7 +503,7 @@ jpc_pi_t *jpc_dec_pi_create(jpc_dec_t *dec, jpc_dec_tile_t *tile) +@@ -503,7 +503,7 @@ rlvlno < picomp->numrlvls; ++rlvlno, ++pirlvl, ++rlvl) { /* XXX sizeof(long) should be sizeof different type */ pirlvl->numprcs = rlvl->numprcs; @@ -907,11 +969,9 @@ index 6d2cb72..8300f9b 100644 sizeof(long)))) { jpc_pi_destroy(pi); return 0; -diff --git a/src/libjasper/jpc/jpc_t2enc.c b/src/libjasper/jpc/jpc_t2enc.c -index 9358a1c..d96066f 100644 ---- a/src/libjasper/jpc/jpc_t2enc.c -+++ b/src/libjasper/jpc/jpc_t2enc.c -@@ -565,7 +565,7 @@ jpc_pi_t *jpc_enc_pi_create(jpc_enc_cp_t *cp, jpc_enc_tile_t *tile) +--- a/src/libjasper/jpc/jpc_t2enc.c 2007-01-19 22:43:07.000000000 +0100 ++++ b/src/libjasper/jpc/jpc_t2enc.c 2015-01-28 17:57:34.129045620 +0100 +@@ -565,7 +565,7 @@ } pi->pktno = -1; pi->numcomps = cp->numcmpts; @@ -920,7 +980,7 @@ index 9358a1c..d96066f 100644 jpc_pi_destroy(pi); return 0; } -@@ -577,7 +577,7 @@ jpc_pi_t *jpc_enc_pi_create(jpc_enc_cp_t *cp, jpc_enc_tile_t *tile) +@@ -577,7 +577,7 @@ for (compno = 0, tcomp = tile->tcmpts, picomp = pi->picomps; compno < pi->numcomps; ++compno, ++tcomp, ++picomp) { picomp->numrlvls = tcomp->numrlvls; @@ -929,7 +989,7 @@ index 9358a1c..d96066f 100644 sizeof(jpc_pirlvl_t)))) { jpc_pi_destroy(pi); return 0; -@@ -591,7 +591,7 @@ jpc_pi_t *jpc_enc_pi_create(jpc_enc_cp_t *cp, jpc_enc_tile_t *tile) +@@ -591,7 +591,7 @@ /* XXX sizeof(long) should be sizeof different type */ pirlvl->numprcs = rlvl->numprcs; if (rlvl->numprcs) { @@ -938,11 +998,9 @@ index 9358a1c..d96066f 100644 sizeof(long)))) { jpc_pi_destroy(pi); return 0; -diff --git a/src/libjasper/jpc/jpc_tagtree.c b/src/libjasper/jpc/jpc_tagtree.c -index 06422d3..8dce000 100644 ---- a/src/libjasper/jpc/jpc_tagtree.c -+++ b/src/libjasper/jpc/jpc_tagtree.c -@@ -125,7 +125,7 @@ jpc_tagtree_t *jpc_tagtree_create(int numleafsh, int numleafsv) +--- a/src/libjasper/jpc/jpc_tagtree.c 2007-01-19 22:43:07.000000000 +0100 ++++ b/src/libjasper/jpc/jpc_tagtree.c 2015-01-28 17:57:34.130045636 +0100 +@@ -125,7 +125,7 @@ ++numlvls; } while (n > 1); @@ -951,11 +1009,9 @@ index 06422d3..8dce000 100644 return 0; } -diff --git a/src/libjasper/jpc/jpc_util.c b/src/libjasper/jpc/jpc_util.c -index f53e248..6da1b66 100644 ---- a/src/libjasper/jpc/jpc_util.c -+++ b/src/libjasper/jpc/jpc_util.c -@@ -109,7 +109,7 @@ int jpc_atoaf(char *s, int *numvalues, double **values) +--- a/src/libjasper/jpc/jpc_util.c 2007-01-19 22:43:07.000000000 +0100 ++++ b/src/libjasper/jpc/jpc_util.c 2015-01-28 17:57:34.130045636 +0100 +@@ -109,7 +109,7 @@ } if (n) { @@ -964,11 +1020,9 @@ index f53e248..6da1b66 100644 return -1; } -diff --git a/src/libjasper/mif/mif_cod.c b/src/libjasper/mif/mif_cod.c -index 17506a1..a1b29dc 100644 ---- a/src/libjasper/mif/mif_cod.c -+++ b/src/libjasper/mif/mif_cod.c -@@ -438,8 +438,7 @@ static int mif_hdr_growcmpts(mif_hdr_t *hdr, int maxcmpts) +--- a/src/libjasper/mif/mif_cod.c 2007-01-19 22:43:05.000000000 +0100 ++++ b/src/libjasper/mif/mif_cod.c 2015-01-28 17:57:34.131045653 +0100 +@@ -438,8 +438,7 @@ int cmptno; mif_cmpt_t **newcmpts; assert(maxcmpts >= hdr->numcmpts); diff --git a/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/base/jas_icc.c b/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/base/jas_icc.c index f5cc16b184..6f7cca29f5 100644 --- a/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/base/jas_icc.c +++ b/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/base/jas_icc.c @@ -1017,7 +1017,6 @@ static int jas_icccurv_input(jas_iccattrval_t *attrval, jas_stream_t *in, return 0; error: - jas_icccurv_destroy(attrval); return -1; } @@ -1135,7 +1134,6 @@ static int jas_icctxtdesc_input(jas_iccattrval_t *attrval, jas_stream_t *in, #endif return 0; error: - jas_icctxtdesc_destroy(attrval); return -1; } @@ -1214,8 +1212,6 @@ static int jas_icctxt_input(jas_iccattrval_t *attrval, jas_stream_t *in, goto error; return 0; error: - if (txt->string) - jas_free(txt->string); return -1; } @@ -1336,7 +1332,6 @@ static int jas_icclut8_input(jas_iccattrval_t *attrval, jas_stream_t *in, goto error; return 0; error: - jas_icclut8_destroy(attrval); return -1; } @@ -1505,7 +1500,6 @@ static int jas_icclut16_input(jas_iccattrval_t *attrval, jas_stream_t *in, goto error; return 0; error: - jas_icclut16_destroy(attrval); return -1; } diff --git a/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/base/jas_stream.c b/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/base/jas_stream.c index 578d046bfd..15aed502be 100644 --- a/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/base/jas_stream.c +++ b/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/base/jas_stream.c @@ -368,22 +368,28 @@ jas_stream_t *jas_stream_tmpfile() } obj->fd = -1; obj->flags = 0; + obj->pathname[0] = '\0'; stream->obj_ = obj; /* Choose a file name. */ - snprintf(obj->pathname, L_tmpnam, "%stmp.XXXXXXXXXX", P_tmpdir); + tmpnam(obj->pathname); /* Open the underlying file. */ - if ((obj->fd = mkstemp(obj->pathname)) < 0) { + if ((obj->fd = open(obj->pathname, O_CREAT | O_EXCL | O_RDWR | O_TRUNC | O_BINARY, + JAS_STREAM_PERMS)) < 0) { jas_stream_destroy(stream); return 0; } /* Unlink the file so that it will disappear if the program terminates abnormally. */ + /* Under UNIX, one can unlink an open file and continue to do I/O + on it. Not all operating systems support this functionality, however. + For example, under Microsoft Windows the unlink operation will fail, + since the file is open. */ if (unlink(obj->pathname)) { - jas_stream_destroy(stream); - return 0; + /* We will try unlinking the file again after it is closed. */ + obj->flags |= JAS_STREAM_FILEOBJ_DELONCLOSE; } /* Use full buffering. */ diff --git a/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jp2/jp2_cod.c b/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jp2/jp2_cod.c index 808e6f07bf..56908abf01 100644 --- a/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jp2/jp2_cod.c +++ b/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jp2/jp2_cod.c @@ -254,7 +254,7 @@ jp2_box_t *jp2_box_get(jas_stream_t *in) box = 0; tmpstream = 0; - if (!(box = jas_malloc(sizeof(jp2_box_t)))) { + if (!(box = jas_calloc(1, sizeof(jp2_box_t)))) { goto error; } box->ops = &jp2_boxinfo_unk.ops; diff --git a/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jp2/jp2_cod.c.orig b/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jp2/jp2_cod.c.orig deleted file mode 100644 index 83cecb1f91..0000000000 --- a/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jp2/jp2_cod.c.orig +++ /dev/null @@ -1,921 +0,0 @@ -/* - * Copyright (c) 1999-2000 Image Power, Inc. and the University of - * British Columbia. - * Copyright (c) 2001-2002 Michael David Adams. - * All rights reserved. - */ - -/* __START_OF_JASPER_LICENSE__ - * - * JasPer License Version 2.0 - * - * Copyright (c) 2001-2006 Michael David Adams - * Copyright (c) 1999-2000 Image Power, Inc. - * Copyright (c) 1999-2000 The University of British Columbia - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person (the - * "User") 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, 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: - * - * 1. The above copyright notices and this permission notice (which - * includes the disclaimer below) shall be included in all copies or - * substantial portions of the Software. - * - * 2. The name of a copyright holder shall not be used to endorse or - * promote products derived from the Software without specific prior - * written permission. - * - * THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS - * LICENSE. NO USE OF THE SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER - * THIS DISCLAIMER. THE SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS - * "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 OF THIRD PARTY RIGHTS. IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL - * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, - * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION - * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. NO ASSURANCES ARE - * PROVIDED BY THE COPYRIGHT HOLDERS THAT THE SOFTWARE DOES NOT INFRINGE - * THE PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS OF ANY OTHER ENTITY. - * EACH COPYRIGHT HOLDER DISCLAIMS ANY LIABILITY TO THE USER FOR CLAIMS - * BROUGHT BY ANY OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL - * PROPERTY RIGHTS OR OTHERWISE. AS A CONDITION TO EXERCISING THE RIGHTS - * GRANTED HEREUNDER, EACH USER HEREBY ASSUMES SOLE RESPONSIBILITY TO SECURE - * ANY OTHER INTELLECTUAL PROPERTY RIGHTS NEEDED, IF ANY. THE SOFTWARE - * IS NOT FAULT-TOLERANT AND IS NOT INTENDED FOR USE IN MISSION-CRITICAL - * SYSTEMS, SUCH AS THOSE USED IN THE OPERATION OF NUCLEAR FACILITIES, - * AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL - * SYSTEMS, DIRECT LIFE SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH - * THE FAILURE OF THE SOFTWARE OR SYSTEM COULD LEAD DIRECTLY TO DEATH, - * PERSONAL INJURY, OR SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH - * RISK ACTIVITIES"). THE COPYRIGHT HOLDERS SPECIFICALLY DISCLAIM ANY - * EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR HIGH RISK ACTIVITIES. - * - * __END_OF_JASPER_LICENSE__ - */ - -/* - * JP2 Library - * - * $Id$ - */ - -/******************************************************************************\ -* Includes. -\******************************************************************************/ - -#include -#include - -#include "jasper/jas_stream.h" -#include "jasper/jas_malloc.h" -#include "jasper/jas_debug.h" - -#include "jp2_cod.h" - -/******************************************************************************\ -* Function prototypes. -\******************************************************************************/ - -#define ONES(n) ((1 << (n)) - 1) - -jp2_boxinfo_t *jp2_boxinfolookup(int type); - -static int jp2_getuint8(jas_stream_t *in, uint_fast8_t *val); -static int jp2_getuint16(jas_stream_t *in, uint_fast16_t *val); -static int jp2_getuint32(jas_stream_t *in, uint_fast32_t *val); -static int jp2_getuint64(jas_stream_t *in, uint_fast64_t *val); -static int jp2_putuint8(jas_stream_t *out, uint_fast8_t val); -static int jp2_putuint16(jas_stream_t *out, uint_fast16_t val); -static int jp2_putuint32(jas_stream_t *out, uint_fast32_t val); -static int jp2_putuint64(jas_stream_t *out, uint_fast64_t val); - -static int jp2_getint(jas_stream_t *in, int s, int n, int_fast32_t *val); - -jp2_box_t *jp2_box_get(jas_stream_t *in); -void jp2_box_dump(jp2_box_t *box, FILE *out); - -static int jp2_jp_getdata(jp2_box_t *box, jas_stream_t *in); -static int jp2_jp_putdata(jp2_box_t *box, jas_stream_t *out); -static int jp2_ftyp_getdata(jp2_box_t *box, jas_stream_t *in); -static int jp2_ftyp_putdata(jp2_box_t *box, jas_stream_t *out); -static int jp2_ihdr_getdata(jp2_box_t *box, jas_stream_t *in); -static int jp2_ihdr_putdata(jp2_box_t *box, jas_stream_t *out); -static void jp2_bpcc_destroy(jp2_box_t *box); -static int jp2_bpcc_getdata(jp2_box_t *box, jas_stream_t *in); -static int jp2_bpcc_putdata(jp2_box_t *box, jas_stream_t *out); -static int jp2_colr_getdata(jp2_box_t *box, jas_stream_t *in); -static int jp2_colr_putdata(jp2_box_t *box, jas_stream_t *out); -static void jp2_colr_dumpdata(jp2_box_t *box, FILE *out); -static void jp2_colr_destroy(jp2_box_t *box); -static void jp2_cdef_destroy(jp2_box_t *box); -static int jp2_cdef_getdata(jp2_box_t *box, jas_stream_t *in); -static int jp2_cdef_putdata(jp2_box_t *box, jas_stream_t *out); -static void jp2_cdef_dumpdata(jp2_box_t *box, FILE *out); -static void jp2_cmap_destroy(jp2_box_t *box); -static int jp2_cmap_getdata(jp2_box_t *box, jas_stream_t *in); -static int jp2_cmap_putdata(jp2_box_t *box, jas_stream_t *out); -static void jp2_cmap_dumpdata(jp2_box_t *box, FILE *out); -static void jp2_pclr_destroy(jp2_box_t *box); -static int jp2_pclr_getdata(jp2_box_t *box, jas_stream_t *in); -static int jp2_pclr_putdata(jp2_box_t *box, jas_stream_t *out); -static void jp2_pclr_dumpdata(jp2_box_t *box, FILE *out); - -/******************************************************************************\ -* Local data. -\******************************************************************************/ - -jp2_boxinfo_t jp2_boxinfos[] = { - {JP2_BOX_JP, "JP", 0, - {0, 0, jp2_jp_getdata, jp2_jp_putdata, 0}}, - {JP2_BOX_FTYP, "FTYP", 0, - {0, 0, jp2_ftyp_getdata, jp2_ftyp_putdata, 0}}, - {JP2_BOX_JP2H, "JP2H", JP2_BOX_SUPER, - {0, 0, 0, 0, 0}}, - {JP2_BOX_IHDR, "IHDR", 0, - {0, 0, jp2_ihdr_getdata, jp2_ihdr_putdata, 0}}, - {JP2_BOX_BPCC, "BPCC", 0, - {0, jp2_bpcc_destroy, jp2_bpcc_getdata, jp2_bpcc_putdata, 0}}, - {JP2_BOX_COLR, "COLR", 0, - {0, jp2_colr_destroy, jp2_colr_getdata, jp2_colr_putdata, jp2_colr_dumpdata}}, - {JP2_BOX_PCLR, "PCLR", 0, - {0, jp2_pclr_destroy, jp2_pclr_getdata, jp2_pclr_putdata, jp2_pclr_dumpdata}}, - {JP2_BOX_CMAP, "CMAP", 0, - {0, jp2_cmap_destroy, jp2_cmap_getdata, jp2_cmap_putdata, jp2_cmap_dumpdata}}, - {JP2_BOX_CDEF, "CDEF", 0, - {0, jp2_cdef_destroy, jp2_cdef_getdata, jp2_cdef_putdata, jp2_cdef_dumpdata}}, - {JP2_BOX_RES, "RES", JP2_BOX_SUPER, - {0, 0, 0, 0, 0}}, - {JP2_BOX_RESC, "RESC", 0, - {0, 0, 0, 0, 0}}, - {JP2_BOX_RESD, "RESD", 0, - {0, 0, 0, 0, 0}}, - {JP2_BOX_JP2C, "JP2C", JP2_BOX_NODATA, - {0, 0, 0, 0, 0}}, - {JP2_BOX_JP2I, "JP2I", 0, - {0, 0, 0, 0, 0}}, - {JP2_BOX_XML, "XML", 0, - {0, 0, 0, 0, 0}}, - {JP2_BOX_UUID, "UUID", 0, - {0, 0, 0, 0, 0}}, - {JP2_BOX_UINF, "UINF", JP2_BOX_SUPER, - {0, 0, 0, 0, 0}}, - {JP2_BOX_ULST, "ULST", 0, - {0, 0, 0, 0, 0}}, - {JP2_BOX_URL, "URL", 0, - {0, 0, 0, 0, 0}}, - {0, 0, 0, {0, 0, 0, 0, 0}}, -}; - -jp2_boxinfo_t jp2_boxinfo_unk = { - 0, "Unknown", 0, {0, 0, 0, 0, 0} -}; - -/******************************************************************************\ -* Box constructor. -\******************************************************************************/ - -jp2_box_t *jp2_box_create(int type) -{ - jp2_box_t *box; - jp2_boxinfo_t *boxinfo; - - if (!(box = jas_malloc(sizeof(jp2_box_t)))) { - return 0; - } - memset(box, 0, sizeof(jp2_box_t)); - box->type = type; - box->len = 0; - if (!(boxinfo = jp2_boxinfolookup(type))) { - return 0; - } - box->info = boxinfo; - box->ops = &boxinfo->ops; - return box; -} - -/******************************************************************************\ -* Box destructor. -\******************************************************************************/ - -void jp2_box_destroy(jp2_box_t *box) -{ - if (box->ops->destroy) { - (*box->ops->destroy)(box); - } - jas_free(box); -} - -static void jp2_bpcc_destroy(jp2_box_t *box) -{ - jp2_bpcc_t *bpcc = &box->data.bpcc; - if (bpcc->bpcs) { - jas_free(bpcc->bpcs); - bpcc->bpcs = 0; - } -} - -static void jp2_cdef_destroy(jp2_box_t *box) -{ - jp2_cdef_t *cdef = &box->data.cdef; - if (cdef->ents) { - jas_free(cdef->ents); - cdef->ents = 0; - } -} - -/******************************************************************************\ -* Box input. -\******************************************************************************/ - -jp2_box_t *jp2_box_get(jas_stream_t *in) -{ - jp2_box_t *box; - jp2_boxinfo_t *boxinfo; - jas_stream_t *tmpstream; - uint_fast32_t len; - uint_fast64_t extlen; - bool dataflag; - - box = 0; - tmpstream = 0; - - if (!(box = jas_malloc(sizeof(jp2_box_t)))) { - goto error; - } - box->ops = &jp2_boxinfo_unk.ops; - if (jp2_getuint32(in, &len) || jp2_getuint32(in, &box->type)) { - goto error; - } - boxinfo = jp2_boxinfolookup(box->type); - box->info = boxinfo; - box->ops = &boxinfo->ops; - box->len = len; - if (box->len == 1) { - if (jp2_getuint64(in, &extlen)) { - goto error; - } - if (extlen > 0xffffffffUL) { - jas_eprintf("warning: cannot handle large 64-bit box length\n"); - extlen = 0xffffffffUL; - } - box->len = extlen; - box->datalen = extlen - JP2_BOX_HDRLEN(true); - } else { - box->datalen = box->len - JP2_BOX_HDRLEN(false); - } - if (box->len != 0 && box->len < 8) { - goto error; - } - - dataflag = !(box->info->flags & (JP2_BOX_SUPER | JP2_BOX_NODATA)); - - if (dataflag) { - if (!(tmpstream = jas_stream_memopen(0, 0))) { - goto error; - } - if (jas_stream_copy(tmpstream, in, box->datalen)) { - jas_eprintf("cannot copy box data\n"); - goto error; - } - jas_stream_rewind(tmpstream); - - if (box->ops->getdata) { - if ((*box->ops->getdata)(box, tmpstream)) { - jas_eprintf("cannot parse box data\n"); - goto error; - } - } - jas_stream_close(tmpstream); - } - - if (jas_getdbglevel() >= 1) { - jp2_box_dump(box, stderr); - } - - return box; - abort(); - -error: - if (box) { - jp2_box_destroy(box); - } - if (tmpstream) { - jas_stream_close(tmpstream); - } - return 0; -} - -void jp2_box_dump(jp2_box_t *box, FILE *out) -{ - jp2_boxinfo_t *boxinfo; - boxinfo = jp2_boxinfolookup(box->type); - assert(boxinfo); - - fprintf(out, "JP2 box: "); - fprintf(out, "type=%c%s%c (0x%08x); length=%d\n", '"', boxinfo->name, - '"', box->type, box->len); - if (box->ops->dumpdata) { - (*box->ops->dumpdata)(box, out); - } -} - -static int jp2_jp_getdata(jp2_box_t *box, jas_stream_t *in) -{ - jp2_jp_t *jp = &box->data.jp; - if (jp2_getuint32(in, &jp->magic)) { - return -1; - } - return 0; -} - -static int jp2_ftyp_getdata(jp2_box_t *box, jas_stream_t *in) -{ - jp2_ftyp_t *ftyp = &box->data.ftyp; - unsigned int i; - if (jp2_getuint32(in, &ftyp->majver) || jp2_getuint32(in, &ftyp->minver)) { - return -1; - } - ftyp->numcompatcodes = (box->datalen - 8) / 4; - if (ftyp->numcompatcodes > JP2_FTYP_MAXCOMPATCODES) { - return -1; - } - for (i = 0; i < ftyp->numcompatcodes; ++i) { - if (jp2_getuint32(in, &ftyp->compatcodes[i])) { - return -1; - } - } - return 0; -} - -static int jp2_ihdr_getdata(jp2_box_t *box, jas_stream_t *in) -{ - jp2_ihdr_t *ihdr = &box->data.ihdr; - if (jp2_getuint32(in, &ihdr->height) || jp2_getuint32(in, &ihdr->width) || - jp2_getuint16(in, &ihdr->numcmpts) || jp2_getuint8(in, &ihdr->bpc) || - jp2_getuint8(in, &ihdr->comptype) || jp2_getuint8(in, &ihdr->csunk) || - jp2_getuint8(in, &ihdr->ipr)) { - return -1; - } - return 0; -} - -static int jp2_bpcc_getdata(jp2_box_t *box, jas_stream_t *in) -{ - jp2_bpcc_t *bpcc = &box->data.bpcc; - unsigned int i; - bpcc->numcmpts = box->datalen; - if (!(bpcc->bpcs = jas_malloc(bpcc->numcmpts * sizeof(uint_fast8_t)))) { - return -1; - } - for (i = 0; i < bpcc->numcmpts; ++i) { - if (jp2_getuint8(in, &bpcc->bpcs[i])) { - return -1; - } - } - return 0; -} - -static void jp2_colr_dumpdata(jp2_box_t *box, FILE *out) -{ - jp2_colr_t *colr = &box->data.colr; - fprintf(out, "method=%d; pri=%d; approx=%d\n", (int)colr->method, (int)colr->pri, (int)colr->approx); - switch (colr->method) { - case JP2_COLR_ENUM: - fprintf(out, "csid=%d\n", (int)colr->csid); - break; - case JP2_COLR_ICC: - jas_memdump(out, colr->iccp, colr->iccplen); - break; - } -} - -static int jp2_colr_getdata(jp2_box_t *box, jas_stream_t *in) -{ - jp2_colr_t *colr = &box->data.colr; - colr->csid = 0; - colr->iccp = 0; - colr->iccplen = 0; - - if (jp2_getuint8(in, &colr->method) || jp2_getuint8(in, &colr->pri) || - jp2_getuint8(in, &colr->approx)) { - return -1; - } - switch (colr->method) { - case JP2_COLR_ENUM: - if (jp2_getuint32(in, &colr->csid)) { - return -1; - } - break; - case JP2_COLR_ICC: - colr->iccplen = box->datalen - 3; - if (!(colr->iccp = jas_malloc(colr->iccplen * sizeof(uint_fast8_t)))) { - return -1; - } - if (jas_stream_read(in, colr->iccp, colr->iccplen) != colr->iccplen) { - return -1; - } - break; - } - return 0; -} - -static void jp2_cdef_dumpdata(jp2_box_t *box, FILE *out) -{ - jp2_cdef_t *cdef = &box->data.cdef; - unsigned int i; - for (i = 0; i < cdef->numchans; ++i) { - fprintf(out, "channo=%d; type=%d; assoc=%d\n", - cdef->ents[i].channo, cdef->ents[i].type, cdef->ents[i].assoc); - } -} - -static void jp2_colr_destroy(jp2_box_t *box) -{ - jp2_colr_t *colr = &box->data.colr; - if (colr->iccp) { - jas_free(colr->iccp); - } -} - -static int jp2_cdef_getdata(jp2_box_t *box, jas_stream_t *in) -{ - jp2_cdef_t *cdef = &box->data.cdef; - jp2_cdefchan_t *chan; - unsigned int channo; - if (jp2_getuint16(in, &cdef->numchans)) { - return -1; - } - if (!(cdef->ents = jas_malloc(cdef->numchans * sizeof(jp2_cdefchan_t)))) { - return -1; - } - for (channo = 0; channo < cdef->numchans; ++channo) { - chan = &cdef->ents[channo]; - if (jp2_getuint16(in, &chan->channo) || jp2_getuint16(in, &chan->type) || - jp2_getuint16(in, &chan->assoc)) { - return -1; - } - } - return 0; -} - -/******************************************************************************\ -* Box output. -\******************************************************************************/ - -int jp2_box_put(jp2_box_t *box, jas_stream_t *out) -{ - jas_stream_t *tmpstream; - bool extlen; - bool dataflag; - - tmpstream = 0; - - dataflag = !(box->info->flags & (JP2_BOX_SUPER | JP2_BOX_NODATA)); - - if (dataflag) { - tmpstream = jas_stream_memopen(0, 0); - if (box->ops->putdata) { - if ((*box->ops->putdata)(box, tmpstream)) { - goto error; - } - } - box->len = jas_stream_tell(tmpstream) + JP2_BOX_HDRLEN(false); - jas_stream_rewind(tmpstream); - } - extlen = (box->len >= (((uint_fast64_t)1) << 32)) != 0; - if (jp2_putuint32(out, extlen ? 1 : box->len)) { - goto error; - } - if (jp2_putuint32(out, box->type)) { - goto error; - } - if (extlen) { - if (jp2_putuint64(out, box->len)) { - goto error; - } - } - - if (dataflag) { - if (jas_stream_copy(out, tmpstream, box->len - JP2_BOX_HDRLEN(false))) { - goto error; - } - jas_stream_close(tmpstream); - } - - return 0; - abort(); - -error: - - if (tmpstream) { - jas_stream_close(tmpstream); - } - return -1; -} - -static int jp2_jp_putdata(jp2_box_t *box, jas_stream_t *out) -{ - jp2_jp_t *jp = &box->data.jp; - if (jp2_putuint32(out, jp->magic)) { - return -1; - } - return 0; -} - -static int jp2_ftyp_putdata(jp2_box_t *box, jas_stream_t *out) -{ - jp2_ftyp_t *ftyp = &box->data.ftyp; - unsigned int i; - if (jp2_putuint32(out, ftyp->majver) || jp2_putuint32(out, ftyp->minver)) { - return -1; - } - for (i = 0; i < ftyp->numcompatcodes; ++i) { - if (jp2_putuint32(out, ftyp->compatcodes[i])) { - return -1; - } - } - return 0; -} - -static int jp2_ihdr_putdata(jp2_box_t *box, jas_stream_t *out) -{ - jp2_ihdr_t *ihdr = &box->data.ihdr; - if (jp2_putuint32(out, ihdr->height) || jp2_putuint32(out, ihdr->width) || - jp2_putuint16(out, ihdr->numcmpts) || jp2_putuint8(out, ihdr->bpc) || - jp2_putuint8(out, ihdr->comptype) || jp2_putuint8(out, ihdr->csunk) || - jp2_putuint8(out, ihdr->ipr)) { - return -1; - } - return 0; -} - -static int jp2_bpcc_putdata(jp2_box_t *box, jas_stream_t *out) -{ - jp2_bpcc_t *bpcc = &box->data.bpcc; - unsigned int i; - for (i = 0; i < bpcc->numcmpts; ++i) { - if (jp2_putuint8(out, bpcc->bpcs[i])) { - return -1; - } - } - return 0; -} - -static int jp2_colr_putdata(jp2_box_t *box, jas_stream_t *out) -{ - jp2_colr_t *colr = &box->data.colr; - if (jp2_putuint8(out, colr->method) || jp2_putuint8(out, colr->pri) || - jp2_putuint8(out, colr->approx)) { - return -1; - } - switch (colr->method) { - case JP2_COLR_ENUM: - if (jp2_putuint32(out, colr->csid)) { - return -1; - } - break; - case JP2_COLR_ICC: - if (jas_stream_write(out, colr->iccp, - JAS_CAST(int, colr->iccplen)) != JAS_CAST(int, colr->iccplen)) - return -1; - break; - } - return 0; -} - -static int jp2_cdef_putdata(jp2_box_t *box, jas_stream_t *out) -{ - jp2_cdef_t *cdef = &box->data.cdef; - unsigned int i; - jp2_cdefchan_t *ent; - - if (jp2_putuint16(out, cdef->numchans)) { - return -1; - } - - for (i = 0; i < cdef->numchans; ++i) { - ent = &cdef->ents[i]; - if (jp2_putuint16(out, ent->channo) || - jp2_putuint16(out, ent->type) || - jp2_putuint16(out, ent->assoc)) { - return -1; - } - } - return 0; -} - -/******************************************************************************\ -* Input operations for primitive types. -\******************************************************************************/ - -static int jp2_getuint8(jas_stream_t *in, uint_fast8_t *val) -{ - int c; - if ((c = jas_stream_getc(in)) == EOF) { - return -1; - } - if (val) { - *val = c; - } - return 0; -} - -static int jp2_getuint16(jas_stream_t *in, uint_fast16_t *val) -{ - uint_fast16_t v; - int c; - if ((c = jas_stream_getc(in)) == EOF) { - return -1; - } - v = c; - if ((c = jas_stream_getc(in)) == EOF) { - return -1; - } - v = (v << 8) | c; - if (val) { - *val = v; - } - return 0; -} - -static int jp2_getuint32(jas_stream_t *in, uint_fast32_t *val) -{ - uint_fast32_t v; - int c; - if ((c = jas_stream_getc(in)) == EOF) { - return -1; - } - v = c; - if ((c = jas_stream_getc(in)) == EOF) { - return -1; - } - v = (v << 8) | c; - if ((c = jas_stream_getc(in)) == EOF) { - return -1; - } - v = (v << 8) | c; - if ((c = jas_stream_getc(in)) == EOF) { - return -1; - } - v = (v << 8) | c; - if (val) { - *val = v; - } - return 0; -} - -static int jp2_getuint64(jas_stream_t *in, uint_fast64_t *val) -{ - uint_fast64_t tmpval; - int i; - int c; - - tmpval = 0; - for (i = 0; i < 8; ++i) { - tmpval <<= 8; - if ((c = jas_stream_getc(in)) == EOF) { - return -1; - } - tmpval |= (c & 0xff); - } - *val = tmpval; - - return 0; -} - -/******************************************************************************\ -* Output operations for primitive types. -\******************************************************************************/ - -static int jp2_putuint8(jas_stream_t *out, uint_fast8_t val) -{ - if (jas_stream_putc(out, val & 0xff) == EOF) { - return -1; - } - return 0; -} - -static int jp2_putuint16(jas_stream_t *out, uint_fast16_t val) -{ - if (jas_stream_putc(out, (val >> 8) & 0xff) == EOF || - jas_stream_putc(out, val & 0xff) == EOF) { - return -1; - } - return 0; -} - -static int jp2_putuint32(jas_stream_t *out, uint_fast32_t val) -{ - if (jas_stream_putc(out, (val >> 24) & 0xff) == EOF || - jas_stream_putc(out, (val >> 16) & 0xff) == EOF || - jas_stream_putc(out, (val >> 8) & 0xff) == EOF || - jas_stream_putc(out, val & 0xff) == EOF) { - return -1; - } - return 0; -} - -static int jp2_putuint64(jas_stream_t *out, uint_fast64_t val) -{ - if (jp2_putuint32(out, (val >> 32) & 0xffffffffUL) || - jp2_putuint32(out, val & 0xffffffffUL)) { - return -1; - } - return 0; -} - -/******************************************************************************\ -* Miscellaneous code. -\******************************************************************************/ - -jp2_boxinfo_t *jp2_boxinfolookup(int type) -{ - jp2_boxinfo_t *boxinfo; - for (boxinfo = jp2_boxinfos; boxinfo->name; ++boxinfo) { - if (boxinfo->type == type) { - return boxinfo; - } - } - return &jp2_boxinfo_unk; -} - - - - - -static void jp2_cmap_destroy(jp2_box_t *box) -{ - jp2_cmap_t *cmap = &box->data.cmap; - if (cmap->ents) { - jas_free(cmap->ents); - } -} - -static int jp2_cmap_getdata(jp2_box_t *box, jas_stream_t *in) -{ - jp2_cmap_t *cmap = &box->data.cmap; - jp2_cmapent_t *ent; - unsigned int i; - - cmap->numchans = (box->datalen) / 4; - if (!(cmap->ents = jas_malloc(cmap->numchans * sizeof(jp2_cmapent_t)))) { - return -1; - } - for (i = 0; i < cmap->numchans; ++i) { - ent = &cmap->ents[i]; - if (jp2_getuint16(in, &ent->cmptno) || - jp2_getuint8(in, &ent->map) || - jp2_getuint8(in, &ent->pcol)) { - return -1; - } - } - - return 0; -} - -static int jp2_cmap_putdata(jp2_box_t *box, jas_stream_t *out) -{ - /* Eliminate compiler warning about unused variables. */ - box = 0; - out = 0; - - return -1; -} - -static void jp2_cmap_dumpdata(jp2_box_t *box, FILE *out) -{ - jp2_cmap_t *cmap = &box->data.cmap; - unsigned int i; - jp2_cmapent_t *ent; - fprintf(out, "numchans = %d\n", (int) cmap->numchans); - for (i = 0; i < cmap->numchans; ++i) { - ent = &cmap->ents[i]; - fprintf(out, "cmptno=%d; map=%d; pcol=%d\n", - (int) ent->cmptno, (int) ent->map, (int) ent->pcol); - } -} - -static void jp2_pclr_destroy(jp2_box_t *box) -{ - jp2_pclr_t *pclr = &box->data.pclr; - if (pclr->lutdata) { - jas_free(pclr->lutdata); - } - if (pclr->bpc) - jas_free(pclr->bpc); -} - -static int jp2_pclr_getdata(jp2_box_t *box, jas_stream_t *in) -{ - jp2_pclr_t *pclr = &box->data.pclr; - int lutsize; - unsigned int i; - unsigned int j; - int_fast32_t x; - - pclr->lutdata = 0; - - if (jp2_getuint16(in, &pclr->numlutents) || - jp2_getuint8(in, &pclr->numchans)) { - return -1; - } - lutsize = pclr->numlutents * pclr->numchans; - if (!(pclr->lutdata = jas_malloc(lutsize * sizeof(int_fast32_t)))) { - return -1; - } - if (!(pclr->bpc = jas_malloc(pclr->numchans * sizeof(uint_fast8_t)))) { - return -1; - } - for (i = 0; i < pclr->numchans; ++i) { - if (jp2_getuint8(in, &pclr->bpc[i])) { - return -1; - } - } - for (i = 0; i < pclr->numlutents; ++i) { - for (j = 0; j < pclr->numchans; ++j) { - if (jp2_getint(in, (pclr->bpc[j] & 0x80) != 0, - (pclr->bpc[j] & 0x7f) + 1, &x)) { - return -1; - } - pclr->lutdata[i * pclr->numchans + j] = x; - } - } - return 0; -} - -static int jp2_pclr_putdata(jp2_box_t *box, jas_stream_t *out) -{ -#if 0 - jp2_pclr_t *pclr = &box->data.pclr; -#endif -/* Eliminate warning about unused variable. */ -box = 0; -out = 0; - return -1; -} - -static void jp2_pclr_dumpdata(jp2_box_t *box, FILE *out) -{ - jp2_pclr_t *pclr = &box->data.pclr; - unsigned int i; - int j; - fprintf(out, "numents=%d; numchans=%d\n", (int) pclr->numlutents, - (int) pclr->numchans); - for (i = 0; i < pclr->numlutents; ++i) { - for (j = 0; j < pclr->numchans; ++j) { - fprintf(out, "LUT[%d][%d]=%d\n", i, j, pclr->lutdata[i * pclr->numchans + j]); - } - } -} - -static int jp2_getint(jas_stream_t *in, int s, int n, int_fast32_t *val) -{ - int c; - int i; - uint_fast32_t v; - int m; - - m = (n + 7) / 8; - - v = 0; - for (i = 0; i < m; ++i) { - if ((c = jas_stream_getc(in)) == EOF) { - return -1; - } - v = (v << 8) | c; - } - v &= ONES(n); - if (s) { - int sb; - sb = v & (1 << (8 * m - 1)); - *val = ((~v) + 1) & ONES(8 * m); - if (sb) { - *val = -*val; - } - } else { - *val = v; - } - - return 0; -} - -jp2_cdefchan_t *jp2_cdef_lookup(jp2_cdef_t *cdef, int channo) -{ - unsigned int i; - jp2_cdefchan_t *cdefent; - for (i = 0; i < cdef->numchans; ++i) { - cdefent = &cdef->ents[i]; - if (cdefent->channo == JAS_CAST(unsigned int, channo)) { - return cdefent; - } - } - return 0; -} diff --git a/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jp2/jp2_dec.c b/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jp2/jp2_dec.c index d912cb9fa8..857b92dedf 100644 --- a/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jp2/jp2_dec.c +++ b/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jp2/jp2_dec.c @@ -298,7 +298,10 @@ jas_image_t *jp2_decode(jas_stream_t *in, char *optstr) case JP2_COLR_ICC: iccprof = jas_iccprof_createfrombuf(dec->colr->data.colr.iccp, dec->colr->data.colr.iccplen); - assert(iccprof); + if (!iccprof) { + jas_eprintf("error: failed to parse ICC profile\n"); + goto error; + } jas_iccprof_gethdr(iccprof, &icchdr); jas_eprintf("ICC Profile CS %08x\n", icchdr.colorspc); jas_image_setclrspc(dec->image, fromiccpcs(icchdr.colorspc)); @@ -393,6 +396,11 @@ jas_image_t *jp2_decode(jas_stream_t *in, char *optstr) /* Determine the type of each component. */ if (dec->cdef) { for (i = 0; i < dec->numchans; ++i) { + /* Is the channel number reasonable? */ + if (dec->cdef->data.cdef.ents[i].channo >= dec->numchans) { + jas_eprintf("error: invalid channel number in CDEF box\n"); + goto error; + } jas_image_setcmpttype(dec->image, dec->chantocmptlut[dec->cdef->data.cdef.ents[i].channo], jp2_getct(jas_image_clrspc(dec->image), diff --git a/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jp2/jp2_enc.c.orig b/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jp2/jp2_enc.c.orig deleted file mode 100644 index 9e1e1fc47d..0000000000 --- a/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jp2/jp2_enc.c.orig +++ /dev/null @@ -1,436 +0,0 @@ -/* - * Copyright (c) 1999-2000 Image Power, Inc. and the University of - * British Columbia. - * Copyright (c) 2001-2003 Michael David Adams. - * All rights reserved. - */ - -/* __START_OF_JASPER_LICENSE__ - * - * JasPer License Version 2.0 - * - * Copyright (c) 2001-2006 Michael David Adams - * Copyright (c) 1999-2000 Image Power, Inc. - * Copyright (c) 1999-2000 The University of British Columbia - * - * All rights reserved. - * - * Permission is hereby granted, free of charge, to any person (the - * "User") 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, 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: - * - * 1. The above copyright notices and this permission notice (which - * includes the disclaimer below) shall be included in all copies or - * substantial portions of the Software. - * - * 2. The name of a copyright holder shall not be used to endorse or - * promote products derived from the Software without specific prior - * written permission. - * - * THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS - * LICENSE. NO USE OF THE SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER - * THIS DISCLAIMER. THE SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS - * "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 OF THIRD PARTY RIGHTS. IN NO - * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL - * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING - * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, - * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION - * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. NO ASSURANCES ARE - * PROVIDED BY THE COPYRIGHT HOLDERS THAT THE SOFTWARE DOES NOT INFRINGE - * THE PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS OF ANY OTHER ENTITY. - * EACH COPYRIGHT HOLDER DISCLAIMS ANY LIABILITY TO THE USER FOR CLAIMS - * BROUGHT BY ANY OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL - * PROPERTY RIGHTS OR OTHERWISE. AS A CONDITION TO EXERCISING THE RIGHTS - * GRANTED HEREUNDER, EACH USER HEREBY ASSUMES SOLE RESPONSIBILITY TO SECURE - * ANY OTHER INTELLECTUAL PROPERTY RIGHTS NEEDED, IF ANY. THE SOFTWARE - * IS NOT FAULT-TOLERANT AND IS NOT INTENDED FOR USE IN MISSION-CRITICAL - * SYSTEMS, SUCH AS THOSE USED IN THE OPERATION OF NUCLEAR FACILITIES, - * AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL - * SYSTEMS, DIRECT LIFE SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH - * THE FAILURE OF THE SOFTWARE OR SYSTEM COULD LEAD DIRECTLY TO DEATH, - * PERSONAL INJURY, OR SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH - * RISK ACTIVITIES"). THE COPYRIGHT HOLDERS SPECIFICALLY DISCLAIM ANY - * EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR HIGH RISK ACTIVITIES. - * - * __END_OF_JASPER_LICENSE__ - */ - -/* - * JP2 Library - * - * $Id$ - */ - -/******************************************************************************\ -* Includes. -\******************************************************************************/ - -#include -#include "jasper/jas_malloc.h" -#include "jasper/jas_image.h" -#include "jasper/jas_stream.h" -#include "jasper/jas_cm.h" -#include "jasper/jas_icc.h" -#include "jp2_cod.h" - -static uint_fast32_t jp2_gettypeasoc(int colorspace, int ctype); -static int clrspctojp2(jas_clrspc_t clrspc); - -/******************************************************************************\ -* Functions. -\******************************************************************************/ - -int jp2_encode(jas_image_t *image, jas_stream_t *out, char *optstr) -{ - jp2_box_t *box; - jp2_ftyp_t *ftyp; - jp2_ihdr_t *ihdr; - jas_stream_t *tmpstream; - int allcmptssame; - jp2_bpcc_t *bpcc; - long len; - uint_fast16_t cmptno; - jp2_colr_t *colr; - char buf[4096]; - uint_fast32_t overhead; - jp2_cdefchan_t *cdefchanent; - jp2_cdef_t *cdef; - int i; - uint_fast32_t typeasoc; -jas_iccprof_t *iccprof; -jas_stream_t *iccstream; -int pos; -int needcdef; -int prec; -int sgnd; - - box = 0; - tmpstream = 0; - - allcmptssame = 1; - sgnd = jas_image_cmptsgnd(image, 0); - prec = jas_image_cmptprec(image, 0); - for (i = 1; i < jas_image_numcmpts(image); ++i) { - if (jas_image_cmptsgnd(image, i) != sgnd || - jas_image_cmptprec(image, i) != prec) { - allcmptssame = 0; - break; - } - } - - /* Output the signature box. */ - - if (!(box = jp2_box_create(JP2_BOX_JP))) { - goto error; - } - box->data.jp.magic = JP2_JP_MAGIC; - if (jp2_box_put(box, out)) { - goto error; - } - jp2_box_destroy(box); - box = 0; - - /* Output the file type box. */ - - if (!(box = jp2_box_create(JP2_BOX_FTYP))) { - goto error; - } - ftyp = &box->data.ftyp; - ftyp->majver = JP2_FTYP_MAJVER; - ftyp->minver = JP2_FTYP_MINVER; - ftyp->numcompatcodes = 1; - ftyp->compatcodes[0] = JP2_FTYP_COMPATCODE; - if (jp2_box_put(box, out)) { - goto error; - } - jp2_box_destroy(box); - box = 0; - - /* - * Generate the data portion of the JP2 header box. - * We cannot simply output the header for this box - * since we do not yet know the correct value for the length - * field. - */ - - if (!(tmpstream = jas_stream_memopen(0, 0))) { - goto error; - } - - /* Generate image header box. */ - - if (!(box = jp2_box_create(JP2_BOX_IHDR))) { - goto error; - } - ihdr = &box->data.ihdr; - ihdr->width = jas_image_width(image); - ihdr->height = jas_image_height(image); - ihdr->numcmpts = jas_image_numcmpts(image); - ihdr->bpc = allcmptssame ? JP2_SPTOBPC(jas_image_cmptsgnd(image, 0), - jas_image_cmptprec(image, 0)) : JP2_IHDR_BPCNULL; - ihdr->comptype = JP2_IHDR_COMPTYPE; - ihdr->csunk = 0; - ihdr->ipr = 0; - if (jp2_box_put(box, tmpstream)) { - goto error; - } - jp2_box_destroy(box); - box = 0; - - /* Generate bits per component box. */ - - if (!allcmptssame) { - if (!(box = jp2_box_create(JP2_BOX_BPCC))) { - goto error; - } - bpcc = &box->data.bpcc; - bpcc->numcmpts = jas_image_numcmpts(image); - if (!(bpcc->bpcs = jas_malloc(bpcc->numcmpts * - sizeof(uint_fast8_t)))) { - goto error; - } - for (cmptno = 0; cmptno < bpcc->numcmpts; ++cmptno) { - bpcc->bpcs[cmptno] = JP2_SPTOBPC(jas_image_cmptsgnd(image, - cmptno), jas_image_cmptprec(image, cmptno)); - } - if (jp2_box_put(box, tmpstream)) { - goto error; - } - jp2_box_destroy(box); - box = 0; - } - - /* Generate color specification box. */ - - if (!(box = jp2_box_create(JP2_BOX_COLR))) { - goto error; - } - colr = &box->data.colr; - switch (jas_image_clrspc(image)) { - case JAS_CLRSPC_SRGB: - case JAS_CLRSPC_SYCBCR: - case JAS_CLRSPC_SGRAY: - colr->method = JP2_COLR_ENUM; - colr->csid = clrspctojp2(jas_image_clrspc(image)); - colr->pri = JP2_COLR_PRI; - colr->approx = 0; - break; - default: - colr->method = JP2_COLR_ICC; - colr->pri = JP2_COLR_PRI; - colr->approx = 0; - iccprof = jas_iccprof_createfromcmprof(jas_image_cmprof(image)); - assert(iccprof); - iccstream = jas_stream_memopen(0, 0); - assert(iccstream); - if (jas_iccprof_save(iccprof, iccstream)) - abort(); - if ((pos = jas_stream_tell(iccstream)) < 0) - abort(); - colr->iccplen = pos; - colr->iccp = jas_malloc(pos); - assert(colr->iccp); - jas_stream_rewind(iccstream); - if (jas_stream_read(iccstream, colr->iccp, colr->iccplen) != colr->iccplen) - abort(); - jas_stream_close(iccstream); - jas_iccprof_destroy(iccprof); - break; - } - if (jp2_box_put(box, tmpstream)) { - goto error; - } - jp2_box_destroy(box); - box = 0; - - needcdef = 1; - switch (jas_clrspc_fam(jas_image_clrspc(image))) { - case JAS_CLRSPC_FAM_RGB: - if (jas_image_cmpttype(image, 0) == - JAS_IMAGE_CT_COLOR(JAS_CLRSPC_CHANIND_RGB_R) && - jas_image_cmpttype(image, 1) == - JAS_IMAGE_CT_COLOR(JAS_CLRSPC_CHANIND_RGB_G) && - jas_image_cmpttype(image, 2) == - JAS_IMAGE_CT_COLOR(JAS_CLRSPC_CHANIND_RGB_B)) - needcdef = 0; - break; - case JAS_CLRSPC_FAM_YCBCR: - if (jas_image_cmpttype(image, 0) == - JAS_IMAGE_CT_COLOR(JAS_CLRSPC_CHANIND_YCBCR_Y) && - jas_image_cmpttype(image, 1) == - JAS_IMAGE_CT_COLOR(JAS_CLRSPC_CHANIND_YCBCR_CB) && - jas_image_cmpttype(image, 2) == - JAS_IMAGE_CT_COLOR(JAS_CLRSPC_CHANIND_YCBCR_CR)) - needcdef = 0; - break; - case JAS_CLRSPC_FAM_GRAY: - if (jas_image_cmpttype(image, 0) == - JAS_IMAGE_CT_COLOR(JAS_IMAGE_CT_GRAY_Y)) - needcdef = 0; - break; - default: - abort(); - break; - } - - if (needcdef) { - if (!(box = jp2_box_create(JP2_BOX_CDEF))) { - goto error; - } - cdef = &box->data.cdef; - cdef->numchans = jas_image_numcmpts(image); - cdef->ents = jas_malloc(cdef->numchans * sizeof(jp2_cdefchan_t)); - for (i = 0; i < jas_image_numcmpts(image); ++i) { - cdefchanent = &cdef->ents[i]; - cdefchanent->channo = i; - typeasoc = jp2_gettypeasoc(jas_image_clrspc(image), jas_image_cmpttype(image, i)); - cdefchanent->type = typeasoc >> 16; - cdefchanent->assoc = typeasoc & 0x7fff; - } - if (jp2_box_put(box, tmpstream)) { - goto error; - } - jp2_box_destroy(box); - box = 0; - } - - /* Determine the total length of the JP2 header box. */ - - len = jas_stream_tell(tmpstream); - jas_stream_rewind(tmpstream); - - /* - * Output the JP2 header box and all of the boxes which it contains. - */ - - if (!(box = jp2_box_create(JP2_BOX_JP2H))) { - goto error; - } - box->len = len + JP2_BOX_HDRLEN(false); - if (jp2_box_put(box, out)) { - goto error; - } - jp2_box_destroy(box); - box = 0; - - if (jas_stream_copy(out, tmpstream, len)) { - goto error; - } - - jas_stream_close(tmpstream); - tmpstream = 0; - - /* - * Output the contiguous code stream box. - */ - - if (!(box = jp2_box_create(JP2_BOX_JP2C))) { - goto error; - } - box->len = 0; - if (jp2_box_put(box, out)) { - goto error; - } - jp2_box_destroy(box); - box = 0; - - /* Output the JPEG-2000 code stream. */ - - overhead = jas_stream_getrwcount(out); - sprintf(buf, "%s\n_jp2overhead=%lu\n", (optstr ? optstr : ""), - (unsigned long) overhead); - - if (jpc_encode(image, out, buf)) { - goto error; - } - - return 0; - abort(); - -error: - - if (box) { - jp2_box_destroy(box); - } - if (tmpstream) { - jas_stream_close(tmpstream); - } - return -1; -} - -static uint_fast32_t jp2_gettypeasoc(int colorspace, int ctype) -{ - int type; - int asoc; - - if (ctype & JAS_IMAGE_CT_OPACITY) { - type = JP2_CDEF_TYPE_OPACITY; - asoc = JP2_CDEF_ASOC_ALL; - goto done; - } - - type = JP2_CDEF_TYPE_UNSPEC; - asoc = JP2_CDEF_ASOC_NONE; - switch (jas_clrspc_fam(colorspace)) { - case JAS_CLRSPC_FAM_RGB: - switch (JAS_IMAGE_CT_COLOR(ctype)) { - case JAS_IMAGE_CT_RGB_R: - type = JP2_CDEF_TYPE_COLOR; - asoc = JP2_CDEF_RGB_R; - break; - case JAS_IMAGE_CT_RGB_G: - type = JP2_CDEF_TYPE_COLOR; - asoc = JP2_CDEF_RGB_G; - break; - case JAS_IMAGE_CT_RGB_B: - type = JP2_CDEF_TYPE_COLOR; - asoc = JP2_CDEF_RGB_B; - break; - } - break; - case JAS_CLRSPC_FAM_YCBCR: - switch (JAS_IMAGE_CT_COLOR(ctype)) { - case JAS_IMAGE_CT_YCBCR_Y: - type = JP2_CDEF_TYPE_COLOR; - asoc = JP2_CDEF_YCBCR_Y; - break; - case JAS_IMAGE_CT_YCBCR_CB: - type = JP2_CDEF_TYPE_COLOR; - asoc = JP2_CDEF_YCBCR_CB; - break; - case JAS_IMAGE_CT_YCBCR_CR: - type = JP2_CDEF_TYPE_COLOR; - asoc = JP2_CDEF_YCBCR_CR; - break; - } - break; - case JAS_CLRSPC_FAM_GRAY: - type = JP2_CDEF_TYPE_COLOR; - asoc = JP2_CDEF_GRAY_Y; - break; - } - -done: - return (type << 16) | asoc; -} - -static int clrspctojp2(jas_clrspc_t clrspc) -{ - switch (clrspc) { - case JAS_CLRSPC_SRGB: - return JP2_COLR_SRGB; - case JAS_CLRSPC_SYCBCR: - return JP2_COLR_SYCC; - case JAS_CLRSPC_SGRAY: - return JP2_COLR_SGRAY; - default: - abort(); - break; - } -} diff --git a/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jpc/jpc_cs.c b/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jpc/jpc_cs.c index 2e109a742c..89e4bc3d2d 100644 --- a/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jpc/jpc_cs.c +++ b/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jpc/jpc_cs.c @@ -989,8 +989,11 @@ static int jpc_qcx_getcompparms(jpc_qcxcp_t *compparms, jpc_cstate_t *cstate, compparms->numstepsizes = (len - n) / 2; break; } - if (compparms->numstepsizes > 0) { - compparms->stepsizes = jas_malloc(compparms->numstepsizes * + if (compparms->numstepsizes > 3 * JPC_MAXRLVLS + 1) { + jpc_qcx_destroycompparms(compparms); + return -1; + } else if (compparms->numstepsizes > 0) { + compparms->stepsizes = jas_alloc2(compparms->numstepsizes, sizeof(uint_fast16_t)); assert(compparms->stepsizes); for (i = 0; i < compparms->numstepsizes; ++i) { diff --git a/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jpc/jpc_dec.c b/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jpc/jpc_dec.c index 6808d60a47..d44e3019be 100644 --- a/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jpc/jpc_dec.c +++ b/nativeLib/rary.cots.jasper/jasper-1.900.1/src/libjasper/jpc/jpc_dec.c @@ -496,7 +496,7 @@ static int jpc_dec_process_sot(jpc_dec_t *dec, jpc_ms_t *ms) dec->curtileendoff = 0; } - if (JAS_CAST(int, sot->tileno) > dec->numtiles) { + if (JAS_CAST(int, sot->tileno) >= dec->numtiles) { jas_eprintf("invalid tile number in SOT marker segment\n"); return -1; } @@ -1076,12 +1076,12 @@ static int jpc_dec_tiledecode(jpc_dec_t *dec, jpc_dec_tile_t *tile) /* Apply an inverse intercomponent transform if necessary. */ switch (tile->cp->mctid) { case JPC_MCT_RCT: - assert(dec->numcomps == 3); + assert(dec->numcomps >= 3); jpc_irct(tile->tcomps[0].data, tile->tcomps[1].data, tile->tcomps[2].data); break; case JPC_MCT_ICT: - assert(dec->numcomps == 3); + assert(dec->numcomps >= 3); jpc_iict(tile->tcomps[0].data, tile->tcomps[1].data, tile->tcomps[2].data); break; @@ -1211,7 +1211,7 @@ static int jpc_dec_process_siz(jpc_dec_t *dec, jpc_ms_t *ms) dec->numhtiles = JPC_CEILDIV(dec->xend - dec->tilexoff, dec->tilewidth); dec->numvtiles = JPC_CEILDIV(dec->yend - dec->tileyoff, dec->tileheight); dec->numtiles = dec->numhtiles * dec->numvtiles; - if (!(dec->tiles = jas_alloc2(dec->numtiles, sizeof(jpc_dec_tile_t)))) { + if (!(dec->tiles = jas_calloc(dec->numtiles, sizeof(jpc_dec_tile_t)))) { return -1; } @@ -1235,7 +1235,7 @@ static int jpc_dec_process_siz(jpc_dec_t *dec, jpc_ms_t *ms) tile->pkthdrstreampos = 0; tile->pptstab = 0; tile->cp = 0; - if (!(tile->tcomps = jas_alloc2(dec->numcomps, + if (!(tile->tcomps = jas_calloc(dec->numcomps, sizeof(jpc_dec_tcomp_t)))) { return -1; } @@ -1287,7 +1287,7 @@ static int jpc_dec_process_coc(jpc_dec_t *dec, jpc_ms_t *ms) jpc_coc_t *coc = &ms->parms.coc; jpc_dec_tile_t *tile; - if (JAS_CAST(int, coc->compno) > dec->numcomps) { + if (JAS_CAST(int, coc->compno) >= dec->numcomps) { jas_eprintf("invalid component number in COC marker segment\n"); return -1; } @@ -1313,7 +1313,7 @@ static int jpc_dec_process_rgn(jpc_dec_t *dec, jpc_ms_t *ms) jpc_rgn_t *rgn = &ms->parms.rgn; jpc_dec_tile_t *tile; - if (JAS_CAST(int, rgn->compno) > dec->numcomps) { + if (JAS_CAST(int, rgn->compno) >= dec->numcomps) { jas_eprintf("invalid component number in RGN marker segment\n"); return -1; } @@ -1362,7 +1362,7 @@ static int jpc_dec_process_qcc(jpc_dec_t *dec, jpc_ms_t *ms) jpc_qcc_t *qcc = &ms->parms.qcc; jpc_dec_tile_t *tile; - if (JAS_CAST(int, qcc->compno) > dec->numcomps) { + if (JAS_CAST(int, qcc->compno) >= dec->numcomps) { jas_eprintf("invalid component number in QCC marker segment\n"); return -1; }