From ea869fb403fd74ddda04e6c2e163f764a311d46e Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Mon, 28 Oct 2013 18:12:06 +0000 Subject: [PATCH] Improve preprocessor by using GLSL scanner, allowing read-only strings to be compiled, unifying of line # tracking, and correct detection that ES #version appeared after a comment. git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@23721 e7fa87d3-cd2b-0410-9028-fcbf551c1848 --- Install/Windows/glslangValidator.exe | Bin 355328 -> 369664 bytes StandAlone/StandAlone.cpp | 21 ++-- Test/baseResults/empty.frag.out | 30 +++++ Test/baseResults/versionsClean.frag.out | 3 +- Test/empty.frag | 0 Test/empty2.frag | 1 + Test/empty3.frag | 1 + Test/runtests | 1 + glslang/MachineIndependent/ParseHelper.cpp | 84 +++++--------- glslang/MachineIndependent/ParseHelper.h | 14 ++- glslang/MachineIndependent/Scan.cpp | 86 +++++++------- glslang/MachineIndependent/Scan.h | 79 +++++++++---- glslang/MachineIndependent/ShaderLang.cpp | 66 +++++++---- glslang/MachineIndependent/Versions.cpp | 8 +- .../MachineIndependent/preprocessor/Pp.cpp | 25 ++-- .../preprocessor/PpContext.cpp | 33 ++---- .../preprocessor/PpContext.h | 10 +- .../preprocessor/PpScanner.cpp | 108 +++--------------- .../preprocessor/PpTokens.cpp | 11 +- glslang/Public/ShaderLang.h | 4 +- 20 files changed, 285 insertions(+), 300 deletions(-) create mode 100644 Test/baseResults/empty.frag.out create mode 100644 Test/empty.frag create mode 100644 Test/empty2.frag create mode 100644 Test/empty3.frag diff --git a/Install/Windows/glslangValidator.exe b/Install/Windows/glslangValidator.exe index 9cb8d50f2bc080301eec0de61a2b6365960cccc0..41819bcc0a65fec7c69ad1566619230f87e0ad98 100644 GIT binary patch delta 166304 zcmZp;A=+?4YyqRzrsa7-3{dcZfr*iuk(+^G2Qvf17e=t?&56tm3<3-c3>PMAG0HQ3 znC!)<$Ey;@$`AmOp1{iRU^-(7iwMsGR)!x|3=9`8GBa3ARFoD~P-A6q04agt3(O2t zKuV=2e_-S=W7-Zi7GxC*ObvuqU|>klD@sW$Nn~J{HI0#h;Q})Q!wg0ShCP$@n56h@ zgcukY3RoE!I2afhLMDeX$#YI%Wnf@pU|@)uT*oBESKz|Hz_5Uofx(S|fgx`5GNvd- zf$oEc&me#31`@gFEx|3SQV^c+*37RZ4h^y`R1a+!Wh>5@i-d~RQW0t z`7EColWQiYvdS}Fn%v6jt<~+L!qR%Ogsqz~i}Am};WMG#Z?gVpILvfrNLdK7I-vOt zPjFcHLWQ!)uUIn-rc{G1>vVn7dZ5(kzo^dzXNGQ9j!xG%4xOnV0(yP9kGcL~dXdb? zz|iT+v18igCN^Cr+v>?1*`yV8YM2?i&$Zqz;SLTAc%cP$7Eg1Xh(Hn7f3p`%)sx?_ zIkR7OX811}b78U>yNh5K*fO5b7nxOHTVp57yE>YIBB8lbM4*VdoAEF-R=QnOSd34$ z9w?D&{_($@Kj6jJN@j-c6U|3hT2Gd;ft)${6T2$=C6M6(7beSbNW<9<9O7E85ey9R z-N)i$qYv>gH2?os#+|_db%--Vx0{Id@nZS^Wdh+ZY$i8y_%N$iF;Cu@Br^F4N4Er; zGRgmC0^R4rUzkm9=d@?itDJm-Gg0A!GbmnL4|KbzaC91!a36PIVJL8Ah&#l=aNL1~ zqhPWpS2>IEfx~Aer*P}?gF>`KMF8aX1G_vfO2?Geh^eV{8mBs{T$^;lXNBh!g>ne*J;lbmq*N9S)bA z8IaQbjuJHf77%~(Hy(MR<-ZviI@!99#T`Bq-u?49`;$A9(|Hx@LrcL?*L}{qoTc<# z-2ZZx7fui%a5^vH41Zw+;ddX8Kg7ZSid`_y`kzsaoC*sTDwMf07$50$QOOAo1*b?5 zH=wsgrG^#RZMY`}mZYY`#u@#HY*j zR(`S|zl>l;nJYu5tH^Oz2~g4af+2LW9lsjWjxUqb_|2Nf9@j1ELM9}zjcFa;EGCwGAg>F_W%F? z@o~lnqQR*+>wm@$NWL=Q#5?(+kP6RrIR=L2AOA~vUd)xBEGR6>Ombv*+E zLzcmdO*xa*#Ej}c{r`X5O$X8*&;Ysin41K{YbN7w3qk%l=AvT5&}p&*%;{#?(dnWh z^1=|5A$2_pT^V{^R73*)m$K{xaYA2Iyk%hM76lb%J3~T4MYT_Le`x;6Sd{402^Q=u zW$AWf=`?sDAkV-Jy7cQnm^;k9cPCBmz$5Uytpm}Dh)J1ffER?Nlyj7xS7Sw&@BoQ2bH-W zKs7@bR|j8j5Myr{W6R0XPu(%PJr|rAGA!;oGX(s<+Wn*X2uJIG{+4NC3=F+XR6tP! zmdj%Je-+gF;AlO`-!egrfuW1hMz=)3#(=-4NsNKP#*)9kN{oRa@V{sSq;1gsVOPi9 z$<`8vf)|__I!!@k-^>4^3=BJ`+@0JgX#f$;DRX6bxep||1WB|2Bw7m+-GU@q0ur?W ziJm|btpJJs7GYr6c?U_f1|+%*B>DqMv;ibq2@>VGhj2p+NYnx(ssR?20lT*YB>G*L zfnle|J!gjQm z1H;Z0NTPE_dIlsq10?zdEDG_^1(0YsNL1hfRu5ePDc}bw z(0Kp~2Z)DmfJD#nF)-|OK@zrJqpMXTUL83E|L|=eJPw_G^ z?A(GR`UWHls#tbjKob1`67>M7eFGMSc<2jAlpQ3>@er$ret;D0=V4&jDe(~Dp+6we zI*_OXk|;yDE5l1$kZ1ssC<{pR4>u^@kVH8^qPsz&El8p~Akiw2=n^DR0g$LANb~@b zs0c{(2Nx(8f<+-7k^qTr2Z{c`?jaeFf_#tyiAM+zDS$-vK%yo{qADQKx10?;-BvAv9s1`_c2a>1>Nc1HKD9Is-T7X1XfJA?QMIj!t0g0xA zL?s?$jUfk+0(p=Eo5u(bxqw9Pu`@92Oh6L#0Ex~8iMAk#`hY}ZK%y&r+_4La2vlEq{s)Ps0Cz#W;&#W z(|Vwk8|=m<<*p2`xx+J7JcG1aI1mjBXse^O@a6yi-7YEutp`dt172)?3hJb=#K*-( zM;>lHx#P|qX9j-Pg8>;1ccCVLrKTtBWfZXv?bhwM;LH#fp2cST|NqtQ5*3~98yRz6 zIfI&u5@7+IF)BL$MRUN76Oj3mVHpcvf%=ve7bg2Fh%sK6oTi`#im_gICQw7@L-P@V z&Jq=c)^DW}87E*WS1U+~LyWLKUIOZzX=FTs$=y+qst3!lwEi!Z$zu9{wfP9kF$RWC zTTpi|KCY8Fw)-%+`)F zyP{q_$kc8Z6&X+%f%>dr-6bj<-EIQSKUj;5vRE^oJacBqVr@R~JD~gA3w;I#hSme6 zQjPyWZO#(Dtp5RFJ3-7BqBs8k-@q7m*ysSHUjuL4b~_4mhp4bvA1da~_y8S-a%KS8 z!lQl2`qmV#Aps z64Zfee&Z2rbQ{$9eo<)3!0>{HiGksNiAo3vzc~MJa=)@vJ-9a$-fatNNS7%7HwCqG zGv0ub*Y)Nj9MI8^QpI>W zWZ(M#|D_(NX9FHUVdS6hqQbwzp~S=Z8>j`HAt39(@M0RHI=FMw>9R$n^+1WZTk}7G znx~+?NtQss3r!}FB*$yLj1SKy`>TlQncw^WpMTr!oghnF5AeI(?2J(nF#c}|?$+`5 zZ2)!WWkI7j-Ty&7x5+BX5}>Y7H_MLZ0}{;@A_7HB-3$T$FM}k{sfaWBO@5}L$mlnD zBa5(Z7-)nn#}CwxVR5&HnAj8Z|NsB)7!`pATTm~Lp@cWX!HJ*Yh3I4tRh{}Z<*p3> zMOiMO4240XHj4oS|BG^5aAsHxQV5C;s2qs;FA6F&nos_3{_&sR<=|nE>MT&)2!L4s zMW=w%uLN9I^BWz+NP$L{Mz4#CCQHD7QGpAf{(iA9Ge|E_h6H$|2NadvJ}L&yM>ven zyvXyL%%djFcww@JnoJO=lsv#c^#I7=|0OCc|3!J=?$7$4#rVHO1=Ot<`7a6@o&>1^ zxfX)|n}R&@Uz7o=Bdq)5iwKj+)6~?M3X~`BQ&VK}Ri6A%&945qy96kM9e0<3P~gGp zb4zs7NQaDVlfPB)Gh3n5B7T~uV?<;{T-LD0xmc=w4H zKmPvz-|5Eln*F#N&vZL;MhPYshRI%C)a5jO}?OMQ2)PB;yB}s*Uk(tw7i)a zA`gf47HV{#dvR2ef#JW|i*=r0w;+`#fuN~`eKMedni9F=ZD0myuAof;Bm`!uKv~WE zK#d6okTNg>EGYn$Jl-Y(V%38Nz4rY94GMwOff-91}#m0mv;h(?}(7vhQx z3~}Jn?@VB~BTMr^7Kju_z>7bVKWfQ~On41yQIz;1rd_-|z|$@o9-xAN9b6Fbc}z~w zmZ;Zw!KA>z@V{8&#VdDahTs=Z+(Dtv(R`f6xAZosk_D$gP~vMoz!LC6z=xRuR8>H% zhvXVCd7N>xyXeX^#G zw7$j*GkFGv|K%DlD<4QbX4Nj2Va|4$eE1i*+oRJ~~cbtE0v=(`_v#NgQVbr?KN;BOtR(pxGpUH;_+RpwmZSPk{3KiNF87=#9gzvz{l+^8qYbc}EE z3_V4r_pXz7>si!0&4w2+jc>NFBipor9c~k(bZAjI!48{C=x$MY!_L6ay+!2)h}xs_ z07R`(`NPh@(CMP$(AA>yg`I(+!$rlWyG7*(NVG)7qO(TDq|-&kpfg8BsU7}*q9iyVt?V_U5e1N6XMWvwE8AO#BpX@%q3pA4ocKdM`l?+fi>#R}9 zIqsrT!2l{=j=QMTfU@&($XpGG3GoCM$d6N0IzaWgk4jA^ME?7&PLUJcJ>YqrZWooB z<|8b}T@JE<8Uwv9Dl(wjK_;NrN2TC+3pj2-=DnEe#|Rp*lwj!kfl%~+i%LBxW;$wA zz=?!^%HjWI9RJH$UOZ=JVCeQyF=;*`(cz*Z-g3KCp!p|9DND=$QubpmDhdp*SwR$I zw~LBIU_hrUPp2=(i%EP84Bas*4*yG36uPT9UI_7m)1OB7hZoy<7#Mn4He^ZkvN-gz zxOdyM22{E-ys&cOW(JQ(inM+!(U{DbFH(QpjR)jl@SLt2xPb~9%5D8$!V%tm?uDQ@ zs2Jh^4Q+#L0pYO!#Vp}3IR1dz_Y%E5Dr*?Pwt_t5@V}Vle=*1Z5)~Z~&SD4+dl8?` z$k5vYR&~4u9JHWZ+6kHNN;_WPqA~$wKSMxokID~L2GB&<6?O&&rWfoCOdyS*$mncQ zu>p;Zx2Sw!Wnk!RQE>qA+D#Z4z}i6VuVXDLAZ^SqK=b?!H7eo^rR@J(R6IZmA#QvT zR=~gjb?-436>-KFss#)T_1!Tl8r>&4xqIPbuiZ7^bY-G_s+0e?OEZheduN8@F6}IA zpk(2q;$nQV(?!JxC5?H2(^!m3Kxd6g$Z;2y2#}YKyQsuKX;AMDI{rV~ftjH@L?xr! zMy12UsqTUA7YB16Rmr@`Dvbg?lQSkvqL5s=* zkegp@=(m14URp>x&>=aIAy9db~yD4J!i!xVmmpdBF+_Kd|f#5HlkJ;-Cw< z3=H2~R18>3`2Itj+I{wg^;ZUl@E3a>z)ez}7h52VjN>jUA)wfKu^8-Yp57jCB7%l3 zQ~e8;|BSF?fs{aBz}+d$VeEHc(oHh2vR^iK8{ z$8{JOG9G|=FLs02peX1*_hP-yHia6eaT@(glLp6A5PYy9v^=1hMPj~$Y za$sn*pTNk#P$SUI-28)yzXcQx%|BR5s!<*ANsECYBLZUHGY}hU-Yu=kM^J5E1Cm_< zQMmxbhN_&RHJQsyFBIY_quVc{L2^GJ>ij`$s5)mY28Nd`|NsBb2zUo}zL6FKLl)P6 zb8zYY;s`e^UBhzyi$u-Iy=D?o8Sk7KUc19|z0`#3vIuxljiL)wp}dgLWMDY%qT&M1 z0ni!OV=gKN3>iDX_JWN6|NsC07xOhI|2LD;k+%WmWuL>no(wL54q$vCz=7dikg4@{~t7M+I)ngo29Yamm%PV2>)a&3nOL* z7N*Jh7Ap165h=CtO$SOVr3JHHHfr)|PIHUmtDg<8ahy&Ln zIZTkEZvm+F-lDRCoq>VzMa_4(+;JBb4{!zJqT-Ww+(jjT0W^l>(b=N%hlv4HpUeT3 z;%ASws4QV;U|{ZSQDIuo_aFGZqZdhJSy2;4Ua-h_? zJ4Qt$!v$1YoPOb_#=wxV1j2R#vB8P>^b0f4x{_+}aD;Sl#sPSzz4-`-(e2kvn?c=h z1CaCULH>9lU1~tRMC8qI_&K4B~q(=Eo zD+8wH|C70`l|;_#Ffsfu1qGNwa27*&Sip<7eN3mOuahgIeyO_zextVgl*@@O$z;Ygwj?zbD_dmX+M}8`S2J>Ge^OI1Xup zfOBH?|H;BOiqcEWK%OvQ1Qq+B1z;Y{KiJD9|EsiiL`>djBcg14;Bfc<<_HId!UzWj z5M2(XL2MANjhNhKqr@2!2`&UJA}4ROG3HzX;dMk#eruyGYaHpoa5=((;bw#b!~F;c zhNlq@46h>`7(n6-lMmV&$xYyobYKvTbYPHt!wX^K z$w%$vRene?fX5&LI$cyGpi7S!UN}jE%0w39Z&?yAE*MSru{WD+XV1gb17e1%7}U8k zyqE@FV<2ICdqQ{39EEOo7H#&G;Ap7Gl6WBuQfMsRYmyz_eWH_PE65!$mf15fblYs* zP(GR8L5yj7z+`m?Q>H4z$#D+u#^5Gy&>L{srqFzZqnE{_`}}{CRn!@R*#y3k&hdVoo*&Rv?dn zMvRZe8J~Gk0X7UVV3+0cB3U2ogVqDkrG`yTCL#-v;~Tbu@|067(^QGcn$9v@1 z5tEGGWGUBcf@(UD-UdtSH>g_}-Gn7BIx}>$cjvQczi2+fbMP-{jT&dbi%;5?p z_Phs;B*$FX-0YUZ2wxS6zCv;<2aziz=S&Xt@L`^=1z#a4iDQN2w4akZIPI9`X-+=D zX)(!5f@#XH$x>c!(-j<J!6s`sZX}Up1!3&nH{^&S%>6WAYtebGes4|Nrmy2TyZ=ElR= z?Z^?H>aFUgsA)IWbUz@%QAa zz!}P*A>z=6YF>u0@a~r-+!<&ty8RsLqSfEPE;{@K?4n6u!7e)a4Y!MIzk*#f^&8kl zx4z(Vk-@jga)D0M8-$oxM0`{@!n^APtbZcSDNMe>6~cINvM#sj z--aqM>QCkilMvl@1=LUV=|2DB%nAku;{%rNBK-3wUpy;1IUvlCY4^>^&0)&g-$08^ z-B`Lk{V#`fR07~%o2G48q(}O@xpg< zL%5jKF%|}f~UJe8gaKV}y1{Flf;D7z4xqGLBv!6_FPU&VyHoaRmG? zQAt6<3I9t}P;l4_*X#fPcim_{qS11@M7i5Xg{SpoiF9*~iqB++NEzn`(-|0ESc3*U zPP|BAV*uqIgBPbiLu%g_o20>|m+^s?+tK_}4}hF=_{^CXw;|0OX5#~gU%sC=d48mk zv-bS||NjSYv>xbY>poY)`#*pquG2+@<)tuKoTv3bi6BVke*h0e{P(>7|3M>_&?pXk z5p{F2NK~!&>>J<~6v*giTTr#cP->iI@S;u%?2y(2C30B;84L>G(XxC728P8TH7}Mv zVPF6^01q1TYO-gHoTM(q?9Muo z*8ioiyWM0!wgkLbCo#DpMk(9^R5hxe{{O!lw3ZfiG6d2vLQWab${REc1)Ze$ZwfZy z@hMPqg{AdCX?&K!3w?>nKVwXoeu_`lkCk8tE0}OA`(BMvR=J4@fdi+jE}W2V<)lbz%A_;!ndgA>%+ zf3aJ9a($c)ysV#mIIf%Ngy`gecu%HU(aE#pGngidO=eAa05AXFB*?&*;`1kpilY_c zDuJM}s>{W-OgHIWx(Xd73cD zj1(sK>668iV}!udlA?1!_3#0Ofd8TkE=+Ds_GaptHu+Mr2R2!q6kC?Z`~Lr*oSUMl z(TE&m(7M-^!T4xEuj>~`PVP+o@WR1%^1c)oo?B1<|L=B|>2#CnK0aB$LQ+FekQrPe zfR?d0*0Y3!hO!oMXI%IUsV1Enf#^5onE zCYO)XXPPrwP1eujXZmkH*&$C^C==mOs7aGc^UTzIJ~=bI;Q9am|8aMhFCU#5j=Ot+ zx^KPC0s+1L0-)horWbcbCST0+WmKOmpC8P)YcfxatnG0|kYYrx&HA6Q6UhSXC3$C! z3eR!&C7&jr&9`N8`8b)UK%R-^(`4NORV9{B$TK)u|1(~on>M+mppAJJEA!;P1(Gbs z?*IQkS-(Jx^Eji+N3hPxl|||Tpt*gH20MmQUgJwaVJ~7QKPZx|x94DBK&tdW+5I>p z$iD7_;8o*i&YXex2EhkSrrZG4qu_l;AbF522>IiVkg#$T0EwfUcIFJIXVm;dq`dgQ zN^5;cw*$kDKkuCx4)5Uj03rpzqy(7M0h0z`(gaM}fJqlH82}~|z+?`XtO1ifU~&$a zTmvTefXNeJ@&<_P{{NuMf#F$~Lp{TrE(eAmT@DQYx*Ql-x*ZsNx)FS?ZU=@>T@DNa z-3|<5-3|;g-3|;&-3|;I-3|V<6oOg*GZg2;lVcAt3h|Mleh5?LmJt&``K7)>@P)ir~)fSnn_du>`lDK7j)D-&`>n!I7)1MQ|2Z`c7W3Ux6Ri z%?R)H6L|4oYV!X|Gt%mTg70|VPs2L|z}4h$MoAz2DkV01dNz{;aDS^qOuFN0?~ji5GkiCx56HV`_UlnWI5F^9&-&S zsHhxsQE^~y{a>Q_qVdlE|DEmpfOpXrCA8Gnw`9~MNQT4 z7Fhi(kh5G=R61Q$Kw}v)pyI0aK#53L_lXzlmQMcAqQUv(CRnBKoym%=!b~q-O*U(d zW8(Ndd0MNM!k?p{J}79%r$RSdH_MJr#@FK3ejKHoS&ZH1Ufer6`9Z63q{aexbT_{d zK#MdLSfq95fVO1$iZU=XSIaPzBxi}d*l+`Evn0rCpnZ2H$Dt#!t^Z3@Urf3&Ij7Cc zVwWrX9g(aF6X z;!HD+PF~j0D<6RzP{=#HAkCx6L7n=hb0FC@1(e#DyHEcQ@W|oMwxi z=8l8*@POtPdvE{$pRwWd0aeH!5myvY_$l4ztof&$)WnM(z{{KG| z#8`Ce|No3BpCO{IxBveS2Z`E%)PlyhK^*RVAp~0cDhAr7bFR}x zWpYHfpkXt}wJ<-F-2(S+ML=%M0!hHU5qk^jxg|Fz&+66}p8@rrG)NK5SA4f7Kj@ZX zd^7oXH)u2^phtl}xI0FLCoDX;`{xV8i%bmD<%O8!nE7Y^pY9;UE=3@%F?7`&D^Fa#`_Jg?V=QEBq+UKu9S zIg@|(nooA=}PPI5WJEe*>=h7(q2(x!He}R*~fn3>hpRof%#$W^jNgsSF+vC7dAu zqIfbSKoo0+!bfmjn*SJVI7NKE_Oi_@>cf{Z16S*#g4Ai;AlwnN02O8Bza zGE5+1izjPMkP@4;%z$1sF6Wk_mn2=!H>nMQe37i3U z-qjZ(CBYg*60CqG!O6xGbsa#(`u_rf?h{#{#XTx7?o9swzx4or>qSNehX17ky)G&> z88M%o8L~vcl`UvTw?LN63)ZvXqA2hD;M1G5|t4CZLCgplh03*W4t!`-K1vbAOHVPE}3k|YrgaU|IQeMyaYRF3+Id2 ztCKHI*5SRs11wtt(akkQj`8Yb%_;Is4<1kUn(~T?eCvTc+%y@nB zv#E1EGmt%wysQ-JaahUV04>sAg615$L5nJ4RAgS5~) zy!do}vdtVfo-AJQiXfhV7Yoi$?wcbf8v&X^{m~mQkapaihk>E>c8N%LiHbm2_vsh8 z=O-VWV=M(46gchxIjO-x0aP#@a}WTZU$B{P?hi(h4ai{t9f+7LHNS}IK8=&9wk#3vbr%Q-2I*)9>4;sB&zf_c3DSiSxq$2* zq`?Yi@0S15uQ)S@F*Z*=y|9t_!U?9y^E2can4Pt}v;$035Vcj3I z47&X|UNG;Syt>p>BkO;L_ab=8YJ3A)1_g6BWOWq8>60~DGAGEDrfvp_8vuE1Uw6_bD$o{PYhdiMv=K?E7cAq%lU zN#lim>;L~5Z@xJ*K&t;^E#Nggj4z&l`~N=-Bo-5JtOaZd(+l>+-~Rv4IPq=rhb1D6 zJ0`O(^=6uJX>!og#hFvSI5X^8@ddQG;}A+o2QKSYAUxRo#s=m)7ZnT8xF{@6T%h^= z;|r-B|Nk4GwBY^m*%_446?TADQS-YT49NKLd2-`&8Be9<;QY?fcnsv-fbMgU8GZ%^ z@Orf4ps9S&P`wX$UUutth-o5Upr(OVw}DL)`2sS{dG9iaX;5=Ot-BX1fB*lFW=8?!p!l3nDc)r#66&*3{>2LHg~-K zh2fqVP;*is=Gg3zgPD`^W%7gNGNKD0=BPmZ1?ri+=$S0ILY8UQ`N;+={7m5e;nx5B zEu4&?rGl2ACF9LM{-K;TV(BJQtQiP$2G9J-n^qJsUYxAF(uVQk!8Bja`_nQ*{*l3Mx!k z0y0>>gSTdhWZ6K&4z#EuAUs3kyEAA_H0Yp@g0L4#YM`P?r`t!x1sqO(CnwKYrzE}Z z%m4qN(G{7D317j=L3^=e!d_fcWt@C-U0Qtw$UP;H<1@lu#H)e~k%@zaE~F7fYCHaB zcZrHmcaDn3eo)5hzP7{RyE8)x29)PeHi?d?o~F60WmC=S4^t14FlqiimYHNM-4Zmxn;3G@z)2*wq0t z7VHFw3;vft?X6Y@+xv170|P@Sc*=Tb1td+0O9b?S?FFsz0jIeFP`{U9x~>$XtUuHu z*Vg|fhQ03pn}0Bs+d%vn3b6rV?-67_dNzRVdMzA^kbD{N|NsBaipd8yN~AL#17#Tl z&;dd&DlE-ESj)BltF+pjbYR%A1yq~v*aIf7fXO#t@&}k?`39$GHwKJ9Za5EB*(O{XmakRIwr-U$!|AFYB(;2*SVls3D|Hv z+HA}Mp2>Qf)mSu`7#OB+3}zOYtdPp?*m?x1CMw(2r1o;KNVkJ$7EGe-W&2ez__Y(OYR%;MeJ z8Y7Gtd_MS$2{eeKx@xlLHYLW!$vNAURo5PZTFY<{cfu4tt4!;n^K-KME?uS*6DJ$)k(xYV7mEV?P%4Aquy9bK0!`v~ z-^>C{vMapE+5&Q<0N7NgEl@|Uyg&KrE_t4iKVZihpLtQWXR^R)Y_KN*0{4TPAh0WxTK|_wb+bdZZ3%#y z0jDN{R)o3iob0tX!0^d;XNKc$JfIW_-RA|0yyK2wk>iXY>BFFN^-5GY!o#|MzIZhG z^j<|qgUN6AhDm^C1W{CWLnhcJXYZ3z0+|TW4;2NO3&F=7V?bIb7wi*N!=?<=%*lsJ z>?{zuxZ9rxl#yR}E&Tt#lfBcOh51;gJ8b3%V#k>?XSzK(vOHd>Eu8#gpCQxd1(UV+ zmrXvn-%0%BTyWRbXaT5qRKgD$M(RHCLV2^)0U1WoX>-7m|L1`vc|h9>KYyR>eQ+n| ziP>No!+Dc=4=FR<`7zn(&|ZWsB5g=EM6LyCxq#{FhN@^1&m;oHJ&C z6*119YcE&X zS@M`F)4JD_9gd}Pet7_1S$X5ZRL&1FqhVuIk3`zGL z7&7lWFf6(6z_1#sZ`yqahPn407;fBmV7PzZf#DQX{NjB`ec1elBP=}2N;bPa87L`7znyw6peV{Ie}tF)!31+9phyyzaCj z)7`g|FP?Um-!Tzvmf{q!JzAhMySh(+NDzLZHQD%#gV1Y4yul)^^-MD3lF2X6_;602 z05*VO@?^WSN{l^|6VFakFk6aLk%TOSmv#X#?ZW4D6np!@8oy2a{~t7KbKFIx02E80 z$xrcxBf3tfAPByZKmhA zJ7`w~Ll$HA`A&D97pG55{(LS%_`iMgNhXkmpgtgI>c{2d=032Vd2@|Q0z-F=N=$c*N=j*N z#+5(dMUMtA48kYdU6K@j0O5mX$0EReZGj%rOO|fZUsyhxsu7$Up~41iUCt>`Q(jP zq~#Pq^~r^9SC*ZJ4j*RLKGFP>v6vfvI@sh_S5)gg7lB+9fpAgQ{|ss5bPhUU6y^ZL zayyiGX3%i6oiFaQ7VWCLxf>)a07#L``(qHuh2 z-&J9z(?ydPUv*IMKv)ag69nB71eq_H%zVv-^U8a0$#vrW@U(-hJ#PcnHYlMO+&=0UYlD=Rxp6kh3Q@U7uxSGauxC zpF;u+-Tyt_IWT;B>%dU<4s<9Q6DZ{}^t^LmnEcLxVb(hbhK27O7*@QS>~}+&DdfZC z>>HkZ(jOccct1EWIDc?pF#a(4&<#W8&Ss{~-)?9z3O66*>1O<&AOlO*-HtYsgKxz% zI!xYtOP8b9F#tSBH2KCY4HKwR9hlNyM;@>wj1O7^iN5e?vdL{9`IsiKw~n@eGdLm| z4wP_1in814@@0)xz~pUr zj5xnEfX$C>p8WBSD5KeA_PfeVLJpI4?wSjrXV1yScMat&AnF%3f!)J_wDBI~o~p@* z?0nomk-CrFT_I(APt;jHa;$+5+lRw^bQqx@y zFX|fKbfD}=Zb91o5P5$BqwwTc_w7K7nY13*aaAxnf{qMKV04^Z^uU(Mw{P;s2N_I{ zdnZdjtYbPqb@J?o#!4nkU^OaCjtt%2F5Sfr-HiVO93Wv7;Lv^I#oEaq9!fJ#oXqoR z9@iJJ;@&$Hk4CpuMjQ3=A$GCp$gXlkGuM z1R8<@DRNP%aQQg7_i+K!|E|gZAIpH2I>|mMV9M{B-2X%p#9Q@brtHp6R4YI;>=4}^ zE+021JS}Ec&;+GyBv*h6V~~;-l@$~SkljUBzG0iwJIqjtstf%%66L)s4q2EU(^pS@hi*ZR|eVfjx7hRmN142OSCUi4~} zyybrf2G?H>3=94_Fg*R|!0`Q#0|VDjP@FL`FfcJqZ;WD|GWq{&LH6|wjtpUpj+4dT zSTSd?I8F|E(-I)U;>hrn*^xny#gX9~vm*nDkBngnKD7Hy^OGN0|1$~@ao_v~>7>~V zNbx*bd0`B)sZ2U&5?nD-I3t~ zt0O}~BXTK;j z`Djf3^hH~Ke+F1eBO6>AsDQRpftwMK(ur}h%~yM-i;E}MeobMr4x9Y=t07awlFee@ zni!QpyTh7~@U$E#VFj)2Ivfu@x95L}3TRI?$BWC8y?$6T@=tF2p>N9X$j|}B3;7)( zBahIafDBCttbi9F@PUrWuYUL_A$kYBEY_gG-K)nyt1x&DK41#ybbaxnEq!vtPkHgs zg`idU61~1}{+DtD2K+A-038f_esbSWX%^*$3=EUk{xlO*tpjbi;^_5#5f~g0^df8b zw7*fQHKs?_l@~8cgBiNEof*2%zc`c%?jnhFpMSxg`u~5%69yNM@aok6|9hQfKpoi+ zDTuM_DXIVeA9HhJ?1q_ZW?i5$dG3E1F^z5x>k}n{4V8`zB`n7r9T>Ygt^G76pZ~8a zdZG;MnC@fNpG)6^rX7P{Y%QD0$*96~{`*vYM%8-6SR^b30Gu)9cn+#wE7LJ#Zy z7~Whbz}Q`*!c)tg(ZS%tAQJwf{Xb-VO8*}Soz6D(IipSeG(=o9zTrWsM>!DnD5R|i z*;fc{Z~pA|m*`%j0@~2mExQJEuxJi=?G9*8ilMheCFI+|`cl2_gQ^Yo3=Fmn@(c{6 z3f%`)84lPp*n)^sp~i;{42}ov8-Fq|9I)qa5dlS6!C&ymc|^tu2G9xGmwQW85|}@9 zyGtB=!QT9!zWE4G^AGzHiGW^+TQVyCPJh72sB8$@@R-r@*O@{4SU?!)+*kpqE-}^r z3=9mmAOcC-l)uxtm>3mhK~t8md3J>S1uZGuk@6Qb+Xppy!Qbf~OpG%1)hrAQAnQOI zEHf4$*&xFFp|?c^w3Rhu36d}m^M`NlB8(;CFv%4dl1vE6Ef|t42+0F~of)P-W?~d! z2itPu@AQ96jAHd*&IJsO3J8r4FeDuik}ohM8xWEo&?QBYeDVVx;J8otH~k|Eqf9+mrUc0%0p<^&L&|PN{QuujqY?s|nguO~GXSqcgf6K& z=At6QP|9L_^0h#(k4gyQG!5-jpqc0h&;cnbFRr_TXSpl_y3ZePQPBa_i=bs@8`}T> z2e0k#^-*mn_HE$*07Q9$g{QrNqyF#}I zi#7*XD_oBU^C9c{8^r=yj2RPPc8H?e;S5*Ke5m;-kM)hB+1)uRB3Xv16he7i%fnr(EPH%@2*??Xb6@`G%|Dp|`osl8+DmKkW zcwV!Ej*{>61)U0`)9EYF87k6!w7Unq@fpz=i;eE?Q2`ZW#%ErfDqv!0JR-pe-d;9= zMaGeVTgH(=NXC&tQU=mK04=5UX#T-mF8^PpwE>h+OhDD$4jVA(0w#U_>VWD*P`Pn< zLb{wIL#~`7L$RDAL!z7`Ltt=dSogtj&|*)c+s1ES^!%J|#Ku_3`+>m)H0>wTed0yg zkLf$u7%liUx}7z;je5N`g2Dn`oc}oeKO3VA?}mTi`96v6(=XV5OxIv%Oy$-80p6}F z(|zNG%8%)@*cpGON`tBfp4J1U3D%#BVyr*&Pd(6jpfniNbME$05y^P*&zT|oMKNgm zVvLGPH)ty?b2kqoIFg}NV)us^!qNZ#cZ+qO`#%Y^Xc<%q21X$&!LQSQa4?3M^1b{2 zKR&wo2oHQD05mXxs4<$~1Rw?`e4qmp)0;UNJ(wOopMI8;QA139Imo#jEeA@4GD7}4 zGl1r!mA_8s=3><6$N=$Qy!kTS3B>CF^R|AOUdhF1!LjDQGeg*m(l66@axuQ*y8+^L zgU<0e_oDXm^o`t%Pq{=GT)?LFeVV?2hjDr0)wlougHCS(&Cr5;oe=?2@Z#LZ|NkN0 zKK-I8?En96SBCDh{{t!lx=+726bkk7OVH{PuqG3*rkNkX8Brsko4xz|e{i4A?bGxX zyo@pt8lONN3#f_5TvQ4eUxQz$0}#L<9qazGquD5nO*;e&E|KpaNqdWe7KfOua(XImbZ$yfv8Jcn}jfH=3H zoHHQKSt#cYh;snSc?05XhI0OZILn|M9v&BlmouRp84#xj$}!+^VW@uzYSe>*)CD9} z1eJ;aaZ;h23=k&*%BcZyyrG;4AdVfBvjoI3gmSikI4V%i5fDcl%DDmJa6vh5>Os7} zpd&$#%VaR{x-h)_0ObgPIFF$m6%gkdlw$$noP=_GK%6~LP7H{%9?JQ`;==H95tPHh z>ca4HDwLxD;(*3&nvd7ZWY~as)ljJdkO_HEP6ddQ2<3Euj0=HsT0k=HP)-ksV+G|D zaJVqM)P-^;fMh^*HYk9nfH=ZXnHeAs8zVzKI5{r>@qRKu(!vrD=M9vz2E@4!={EEy0h4aCv`v0^|h6A&v1#Bu?#JV2}j5X%n4Dgm)fK&%cBOAExB17azFSfFyC z`}~W2exQ}>eBd0+y9vYr_a)B1ST@~Vlu=&o1uIDExQmJfs9Jte?guKx&cE323tAKh zmV1%x_ka3(2PQeL?(^XF?k}wTra#bNl&s&K0O}0sfX43jYC1BU(sX3t(sE>YqUp$B zpykM*r0d8Kq~pk7q2tKls^iGOqT|RQsN={Wr{l<=t>egWUDJ`FQpb@YN5_#NUdNH4 zO~;X8vW_Fe0v$(&wK|RryL22Gj_WuwT+wl4c&OvZ@J`2(;kS+>1Bb37gQ%_}L%qJP zBZH-`BZIT9BZIH5BSW~ZBSWIDBSW^XBSR@jfvzJ%r>-NzQY}Y@n_7+xg<6gbwpxx1 zURsU};aZLiDO!#Uby|)L-CB+eGqfBTHfcFB?ALN+IHTpr@J!2*;j@+_1B13B1FyCt zgOs)-gSxgOgNe2ygQK=1gP*pe9YeIXBSVI^BSWdSBSVw6BSXKoBf}hRM~0Q!jttwh z9T^U5J2G6*c4WA#?a1&-+mYeBwj;x2T}K86MkZ#K>4M^nV$&7G8QG_+i8IbsAhcm% z`eSiM>-rvJa1s8%$dMuA3Zo0d%gvzP)DIAAC5R=%PnVn8fV_Q?R} z5YXLb84Vz@=^$BfG0+QQ^?<~hL97`pE)1`0GM0d-(u@rtDlg*zh)U160HP8y9)PIG zjCxR^^g1X5R2;qb&HxoeuU)_;&}-X_7*-dC*Jc?xAWA=@0YqtJOaW1f8B0KvRK^w% zC7f{pMDb*t0a2_OH&|U5daGr+&%a>s0yiB*Ku6165ny2G{*VFBOrQZ#2ALQ4JR!MB z%@dKEPJ!4BucvEDF)A@GobDsVC|e%`$w$)-9T^rHIx?&_bY$3S=*Y0&(2?P!p(Dd( zLq~>NhK>vm4ILR?7&kPu*~pQ>%gB*I)zFba-_Vi4($JBi*U*u{)X0%xrhy~FVgpA8qqPQ(4BHJH z84emaGMqMWWVmYJ$Z+4lk>RC*Bg1C{M~1%!jtuOEjtqi^jttUYK2p~b|J zq0B_pk)hVak)hkfkztYvq-hUoErExh4m7?gfedm?pD)9x%_LMX{frEwUHus|M}`I) zNrqlOnG*I44@MWz?n4Jg7ls!n-2VRu$6&9Y%!}P1jtsvGNZpHdAkG_5#QVv-SP0^P z%21H9DQ^G&zr4!8!0?G*fJL(T4F~x6^Nb^mE}*lQLNY)-JLt;5<|87#E-LjN0U&*` z$c6;C{r}%xq9XAUoYFP;T^RnGNM@MuyD+@oonZszdVsiVKz*TJ(6SfCp#K7(W^A`b zcL59dxT_bOZvX#>g@c!J_PVIpz?XA^PLYRLZV=F|e(uF1SJ;})b1$xe*a7@54Bh8m zoC2{y9_v2$V&8OqIYwof2=LH0sC>U@>c{}Xl4gz!8fK0Rb*9tv2~sr()AZW>^`sp9!OGo&6RNnBv|PJN>m~YB`Pq( z!y$%upUZdyQV;>wB?8d}Phg-V175*Jr~r0lFg_A6{f0cFn%xmlg?jeIb7xo)aQek= zE<_Ok+Jpfv0$v<-29*G3U+_Br|DW*yqHE)H8wEyFwkLcp3@^&2mn$&pD}4a59i9LG zhb+OU=oSd?KJh<@<26^tACQ!q^Yjx6jPmRPAa5`@Pk*PtsK*#OT~?9NSfK}$eWrtE zJxf)B!(Y@gf`+Skdi`ZGrhsH>rxz$PYO*f?vHhH;FHmGuR+U}}??*Jg0UZks>)f@d zfX-2Y4Af44p~#pdQ~=5YE-DroCqTnvpbf3lW0V*Tnc^L%_bV}4Sq6hT+h15fhkZc; z5<+JE&qzR6()c^%{9V;~*|78Q>l z`ssPfjM^ff6_M3~#!OyJn7&q-QCap3SoI502XICzY5i8mpK$>q#^^BptumvGMi8io zjW|rW6J@BvXkEX>30%vTI68uxj2}R))*qn61Zp_5xiGwZ4dsY{IQO6&1rX;Vlw$zm z9D#BiKpfD`sGycv0En{+Dw6=>%!P7FK%5E8(1vOch}R62S_0z0`b~R499X~U3Wx*i zH@yLIVErZ*b{B@1uzr&ahy&|48Gtyjev=1?1M4>>fH?KAj#CMU#|U*o2Z#gfH!T2h zVEv{YAP%hGbOFRU%LHj(zW{My{U!!ba~;-ik^pgF{U!qt2i9-0;HYa3=xQZ>j;w!1_%cAP%hGGzG+g_M7T6mVkJ$ zj?)$p2i9*o0^-2>O*cTC$DkZ{TqffVhy&|4JpgfF{iYWn4y@nw0mOmzn|^>e@O~2~ zwBJ+@N+uE@9;D+Wlc50O!1_%ZAP%hGWB}s8`b`!f4y@ng0^-2>O+FwFtlty?;=uY% z2_O!v-;@F32-ib>Q~~0#K{*{D4y@la1H^&#n^u50@O~4B1M4@P0C8abrW+s*tl#tk z!~r$@KwkX;;=uY%99%B-3@>3FCjroS0j%F7!v*U%seoAEev=M}1@1SQfLP#ulLLqa z?l*aWSm1tB2#5vlH-XlhzXtc4B0yr`ep3#J1@AXSbf16GY7H7Pf(&X@g4v)snDZ}k zt-)nJXnXJrN6;J{QnL@zhw`=tmHFpiOtwO_`ph9FOy8rysKmr)4eCEh)%$|VByjiX zxs4;k7aKSBQ(H#{CtF7be_Ka}7+Xh%Oj}2WxweiBWwwqC z&9;sV6KowBR@pi-Y`1k}xM=IhaKzS;;hwD{!)sed239*qh99<$3_^B}4Dxo43_5m> z43>6|3~qLg48eAe3<>pijtseWjto_HjtuQ~jto=m92pkcIWnxXb7a_U=g4rv&XM7& zog>2|J4c51c8&~x>>L?5?Hw7!>>U}D?Hw5m>>U|w?Hw7s>>U}x?Hw6X>>U{j?Hw8F z>>U}p?Hw6r*gG;TwRdFLWbeqZ-` z8Ppvd8B81;85|uP8T=d^8KNB=88RFk8HyYn8EPCH8QL5i874S5GR$&tWZ2>0$Z*KP zkzt90Bf~leM}{*Fpf1()3;rxp(-X898|%5Rf`^?sA|dOGq2s+A<+lG-S~oa5GVBOo zbYVEWBLYk&fXNat*#IVcz~lljxdBY>0F&Us;9gILLT5*Ya%V?|T4zUwW@kr+PG?7k zerHF9sm_iJvz;9o>K8gATBD%)FzbKD0_55d<)BG$Z3u2#fOfOOCf%CtnY-tJufpYT z1y8}O5O4u+12?ev|38cCf4M}ji%Lqsi-VGoO0m~l26}2U1L$n`7g6S*f=stw+F%L<|eSHSaGoT;@mcPjK zm=-Xw0@E@LHeg!Az#L5LIGBKGg9Vn34Bd>qAu0kv{{uL>eN<`?a}KZtAV!{`Y+P}O z1$=K12k4e%cM<;SKKmKv881%H+0W?4^owWumi>%+OkBLvpX_J!V0Lh4ny!CtN>I=|%217H@-qjc3y>6hrtM6YtWMg2MZhw@~P-hJr zSgm_EX!Gie&e9hzyg-L**1oW|E)fImTm@~l_I>}N1*BunQN~z9V|E7c4LdK&oR~mU z(V$d*<_z?j@(;+)giiZU*E+^n&K&*z-{d3dVT|vm|31dp$Yc!K&nnCG@$K}v#~Edr zH`y~y-+P=+mAJf|2#<)oPyU{_;}{Fuj+GQdecQl6~PTwObp!@nvbxwUV^Oq zn7;iYqrPAPhVb``j26tgR*>{vF9b0Qv?v7R8YuqnDAMi7(;X-h)?FxIEwZ5|r#FnT zGf==fkfm0t+fkxdWHbUO-IJF?VTOaKe>G}}yIDAjht zr>`DaW6jCqj-Z{d3~`6Ux<7V@30Q}*@b^l9s&F@sZk`Fk>|6MMyfM&A1Ko?O#wcG?Q>mjz(ur{3j|60Bqu1AKk z;Wxtk?sG5R{QLjE<#wH2!|#}qkcQv9B~A^$xk|hs+WC7ySK8sxy$-Cq{t!qbXTxtU z{#MXA)!ktN_10l5H3cBcpMvDxfegJ3Gc*z8CEQMm`uG2T!*5>xR!fk&b1$--L4m^G zss-XgLqZP3h8fXd!^rjW&%giw5iYIA@F?rQ|Nmcx{RjJ&z5CpYrC|&V(V(l@Y_#}W zLF0Sf=Uz;7U;vFrbUA=7RcN_gX9Bvftl_s-i2=mvwdW8vU|6u^FUair3k|=uN|&L8 z|290j^8bQ7t6w?^?3V6xFZe+20xdfOVQ{hqEw<_Q6R`GUsbS&y|C$GES_dT2fEM7` zD3tKnaF%e`@Rsn{aFtrx@RqRD+i;aKA7f{Px?2{k2b9o2VFgcL-RE9>`1AjN_qi9G zP7DmMw}aPEojC(J|0}%vmpCK!sxWxnt~%FN{EbK2RbI zI+X?#w%zAm><6o5FS!jiY`WEDMir)ij?)t^Gs-A})_nahlgVI^a$)#iCh)(EC*Xz8 zN6@H&MEAM4mxcDz=U!&i18=nlDNB%qDGPk@_XAYf3uSxAk$KI(I7$T?D+NF!T{WN> zjdBE?CaVC=^5C&J&{9sh&G0h2@eKzT@=jm|E(Qj~KKK?D0WQ#8KjNUlfM#2tI#&h; z{?>`M3=CNuFEUJ-rYBxu)KpRW1zS#@#hL*+Ef2KUQgtpQGrQZ z`Gwk^fB(CALFV*=@AYm`k>O%s05@W!e}FcXvrK<@n^B7AlnJ=p%VN(k`7oXDDx-|j zq21VYf)<9q*!~@)Qxl>y4XTqVLkFre4y#Vk65$uYV4Z3ZolH=j%ozp{owC1nVY3so zZurIfZ`1j&G0OAIGln>nHNys?Nog8ZO`w}XUUYv0IaC8|9j_HsCtJn`0hj6gR~e<1 zjIe5D1Fc3;2Wy=P(R$4YX6X-@)^j_tITf@>`Nd(-iC+v{5UoW}tsEH)f)HC}v#@IA z0NEPH0B;{507`ZpQn zdF!CMSTaf!}inEe^#O<{7IcftkpOOqBX-p&;_)aQszbAMr;~Et9)LBfi?0%G_pc9I>0ot zVAUuHvXK+4Q2?TGhaT9m86Gf=+c#jdQ3#}Q&qq)I34%51WkWTB4tN6Z^UlJmQ5d8# z|Ks%j+l=yha!@^>W1ql!WU=Z2H6&greVl&hHlw`pMO}ykK}Se|^;}qw&4Hj}E?!*y z0CFH3*nyHQP>rDTrobATp&F+r-eDAG?*Oai0IM}NhpG*Lg@PGWtt)7%K_cKdq+A0P zn=h=v8pXgG^fTo(b;_;MXK*MXLEzIgY3y1-pVdA+$%Jqa*9bFk`>1cltf_tRtV zGRhkVK=ow6^!Q`dBL&hE@*Wfl@?ZxVGeb2Nz%(*p)hG?p$PU)10MWQj8{)GHn8vMZ zvH45}q;c0fkd2C9je40-jSVo38CW&Sf;8s7n?CU#qr9FBR8I#?k2F?2av(hl@220o z$0%=nUJK&D2{1k9)?jlW=p2<7m*0XMC=GU?aT8SI44B47tQtXQ8@*@)YgB@0G=*wh z0MlrKRih%vm6l+Q$`Fm9%U+w0uw<-&X?(sKn^ToQ8sEGDIaLL$QE#>;#E%H%F?`XUHySuof#V@9Y((7YWu!!Tggs0y--6|8X) zSfk_?4Tvj2GksucdjV0zB1gg6Y4}dS<@J1^dPHD)ys_%h1L+BPIepz@MtS4^ zst^Y%!1VlEj?ICfE23X8gB_?3cA)Vls74)_#*J7t8h|X@_5$QH8;HhKs7BDDQE-Y% z!K%>^q%jk$Q5T|70;cPUrxvRo(2koIP0vBz69rplYzWl|S}hIso&i>krXb5q!5S}vHA+5FhPV>6 z+8V6!@luE@r!zid6lQ<%3}nd_uv+8kP_>}_Ct$VHplVSQzd6W~*$GY@)YDVJFo*?lOY;=T~x$D%bH~Zj=8AFGrY)I_3wZ45zsvn5*ax{E(|Zcv6^QM zGB4oi^mWe}CA8U|{{Np*0&@TdRt=!jIbQHSo&NDTqeT7TC;$Iv)W9?xU5w3_wjdi$ zJ^BA1bjI6p21iElC1VoM-qVW)kP$5)BYIRoHxIw4N0`#0@&hy#3~g`NfedN{8Po$7 zKh7|{;{~IDqzTA`9*7B`;l&rmP!pzae8DKjWcpTIUuw4 zK+FmOnU#%fRsfP&t{}5=AN~J7eex?tNkavY#v>4oEg+5Z$Qm1vG`fK_Dn6Qi_Z6eG z7U;)N*W%x|Nnmmi?9pmo=(s;tS|P@L-Ha68zP1Kfixbx zKi&2%qqJlRNE;7Cn+Y2O!;505w&{g$8O4}N?@#Z1%P3v10a7LbQ3kq?=7l;`8Q6;n zNT!318hW95AM8bt_;H3RG%wz{_y2!}3dF1_AS-XrMRMr`B(nlRF1>s2|NrUA?-(Tw zCxA5SKr|i!Y3xVVcmPRb5J=<1d((5@F-jY{fV5daw0!|-bDsO}|M3B`{I>8Jw z0Mw%L0c64p*L%}8H85?BArR!&al&yd$TLMxx9jXkRa2Ft%4!Vc<#mw7aFM`C6Gqj<3(FbJK7Km9_ zKxTO(n{@%ntXPmseQ*E&KYjB@MoB{kkj4WLjVzoD3@`rAgt!nJ3>Qi=moY*g9zc|(fRv>}m4Qu9Kr%f6 zWP0W;uopq%#~HfNyeI=Q>jT8BDIl|?k z+w_TF7{!=EZ%kkLg;Bbm1EeegqRa+lIy+Pu*oziOrh}Hkz2Lk7_9969IKw0~FYdYi z|9?gS#H=1rLft(L$%`FG2{jYs(!JOJ|DW#sl~K~L0Hm=7qA>^LhG~VjKn*&GvN<5ruTMpC)(j-m zb3mrwyax6nNc=d%G&C>vfXrF~G0O)Oi`~d(c_77NF37CjYybaGFaE|TY3KmbxCNr| z49F4o$Qr>b8KF&qJdj4mYt#3BW0aQsa`pfJ4A2Siy*(;9ATNHN0&)BFkKY)@n7&?} z&iS2Dx_$*n*%658Q$PuIIaC=q7AGJjRL~NO7b~xVy$BLN&R~q@#TbxTXCP+n0mWi8 zvRONjVzCh9(%7s2|4(21ol#O)0HpB>L?dXH{00A%>F2*QinD_zI$j7~o&NSaqqO9a zEC2sz+<~Z?1M<<~$xt6D{$LbiI(lWgzDAKf%&02vJX{8{ubg%sXKmGC#MoGg5mqDkuLNxY( z9C3dV#I0aQbRapR45abl<>|6N8KotsfV3Gvw4DKYaWYif^uV8tVoXynPtW|xC|&OX zQsx0swg+UoJ5(9i^c_g1SAb0SybS8h#eF8%+X5dksl4Jgun zPegL*3#3S^1ex{s(*OU{nSU`#8g2k-Oo3_yIbuDEMkGg6fi!NsG~M?XqqJlSNLv9! z+aHh@lcCzCH~wN2V@ka=edaGl>3Ru}vIdAU8BjSZ4pj#Bq6Dbn15NccAk!r;fnyOQ zew-m2Ef&vQ{Qo}#bOAzdk4g8zQCiXjq-_R7n+_;QjiK76Z~P7FE?%5|@;9ivcmb3{Ayu1MRVg(xm!*K>VG%wBpnY999mJG;?vysh`K=NWE$fa{HfVzu+ z7$xfiKpOXeH2SEdya+<*a#2ZuwWXRsTEaor`=}%wXNW+vn-^rn8ITb@Dk-2Mga=_t zi%J4g5dxYMf58Vbs0S>5oMHO!Ka2u~2hW3gI}j5dc$!bB&0*N1Ih(j~$?z#W}GkC6O}NFfbcI13BuE|7zModuf( z5lT?(Fn{|BTXxi6DI; z5PhKKy)P1w-4MWt2rbaT%rBD8PM`CiQCd5ym;OPceRU(0n8TA>f#q~PJ@TP430Atqq%nx$cPOfBYISxfGl2!Fr`K1 z0g}a_Go)WE1{u@?7C+7~J&ln`KsyX%!U2#8J}N#hA`seLR6Jmgm<;l2?CI$X8JQ&N zg+UswKs4065JlEd0n-4^=Taccd{ioqGnApZ`obyD1}2aZJt}KJW}okb`yFx~7|ful zAlZwjz%d3oC+s-GbPFaX0m&AS34b6a+ySX+hMF)vk%>u+srA(KN+u@hdJB*;4smei zWyDNtPsO14PZsuyxz!;3d3|NqaBfS6?iGV65*lA}T6 zUof*khl#&lE2_Q2@Xq;_;Ci1 z-AF!tvF8M+xd1Wi56Gm6DAy}PwM{?B!X(C|dSd!b7AEQX8^=K_cp=I_n=M{k zZ$olc2a@UYL8jk44)!8Q{5S(>xf`+psk@V9FI@m%gQ7z`Q;dBLm5Py45&c)+zN5~^pC7eVoYC; zP3L4|lCEC?QU*HPqqj%J2c&E{R2euHJ&>x|#UN*`JO=h6Nc=d%b+p_S12Ss`#L60w zS<$WV5hl<9^w1?nEh-ftV_(D`1GUuIm?RAaKpM9|G%f*okssL+3y{3H6yylOW7FTV zF-Zp=Ir{&97RQV2OyF6IP8Ss(Xn-$cU|?uHP{P@L;zh&J|Nmbz86U{lgD@Ui1%n!@ zivvIxD0jDjf+nDDdL%oOw9g722GHms$Xcj*AeAp1kN*FkaRg!t*mn+4UEq)cd#Tq& zMF5l+K})Pag~p56=?B=E#3a8R`TsxT0z@k~kiRxVEqu?;ByAuBu@D@nka`Ym;cAes z8xURK7+eL@WyQfHU4NV#>`Vz}_>dA-E@ds|e%iFNuF4kjT}aPS#Iw1b3^wVyit|9{3Ch<0%9IoSmD zwKOM_bp10fu=~Ne1 z12GC*I2a=tHGL~5lej?uL?@`AK-T&4(EtA#91`H-8(bc}XoNcb56J1P5M7{h30c=X zkS+m;E^vuB7pe>FbWq8M;`EImr|;qfhXP0v*{EQUQ4$cNz-4eyBRnf@03a<6;t%Oux&;Bweopu@Sup-h1%>{|p_7E^sZg zrvc(+u;anC405{J0&@IK4zS}vlE{uP0vTljF$!Gy6(SiW2|k1f;$rA(M9?<(7kwPl zCvY=~N~(i2+dwpfD_AwC=IQ&mnWPPzAy$Hx`yyL;=KyGw8lnqavEQzTxPCe(50kX+ z4|cFaL3t8c*F=!60FW*pm6{imVOj!tm?Y{qgS3De5lCs%AEZ78qTc64AXGhga?}IG zM>|2GQwTA^1KCDikO?Uu6QIo|9)uy#W)mcoEg%auK{wsJ&;%I-Z9E~l=FtBC|1)wx zW`SC9N9v#+R^VllsDHx709txxfNXaINPP)NeUA#btymA$0*+yDTM=S6#OggDKg5Y3>rE3)QS`~LsW=zwSjH=AG9LY@Ab zmr1&w4WbL&Oh)qUe2}gQ5MAJg`aGyEuWL6XQ02mu*217Z}Y z&GjM}$*Ad5`Iy8F3LrW`-3DZxoFJVGAUeUF6Aq}(>38^;r0Z27xHYjnqLLaQ%{w5P!97EDsOIT=`I)5aT_9G1dWgtY-re*6f5ribE=WJL8p-wG zZYXlH0c~Y`@sk-G@E}QKqb7ljIsq{X+&!L%WRxWM0x=ZV9|O659rN@80VYvNcaY{A z5Y6Czxf@jT^mzhI(gw*8E5ZG8q-67FH)vNmL>IVo@Vg4)`sptPn54BqwP$aS3aE30 z?9h!MT`wTIz=IDPs{T#a7i5y+02j9}&N5986l4+=O9QF<08$4U=g5E=T_eaOp$n?m zdO<@QNUl)64ZeL-P&+5th-3Sx(K{5 zKkjh16Gw12&xUR%kuKQo056IEE+1LCPrXpw`~QE};pjM&^R*jlR6u*TK9)?66lM~G zuX}fZuX_)8@p2>7(iflwvCy^c;B5hr)9MoutJ}f%3qbeNgW_8Rx})!7cb!a@%!~hb z|ADSI&Uo+-bSOVhC+dB{JmH|bnrl{0|0K-h%M|f{x}ykFkyu!rD?{@e4$xguBE2pu z99awjFHE;hKPkdwECE~0e+9|4F&h{dri+L&nZsqLz-0qp@PcHMMVS=E1gyPSYM6Qc zgMzG^rvnsXER2Vz&k|))f``HyxXyqVbJjycA@1eDzo2~{3a9}IjxR9rzfdN_0Hm`} z;C~^{|3a1*0zn|XGR6mxg1-5U1T>&Pw>$-d?nKiF3-7K`(dn&sQ4xmRC>_xK@wh8^ zx&AR16>)|apnMM5Pr=`7j4x8B{H z|80u+TS4=1-REBX`2GLCO)-BfXg7EFxfd@%+)VyfP-CY1+>2WvZa#lnD`@ns``nAu zAbuWys~>16+7q-dW+zBQq2#L#XURt!gBp1o%X;Z#ZfV9g+ zML0h0xGMu_6@M&fbEJsznHP?q!S`Ps;$Ue0&r)guF#vRPB$5I32TEPwx16&xEe<$za z;+n1^#-wNh%S_1SP4OB~!UgY)neprYf0(AmH=qf;g$iZUE5(?sm|hxA-zvuBtmv== zd~n2##f}WeoH-bF9A;!-0G&+5}41@=OgMr(20LNi!vXoE{G1JAIs9 z0iqQ@PM-;)89q+m1)}eNn0{NFNjmb-2S$d*BOn_OaWL#SifZUm6v<<#k{u|L$5AD- zKTP+RV3KC?`!GERL>qpX-YLN(Z6kuB=`^aQ@9&Y_0_qANdGOZz=?_3A?R`J}FNj|7 ze!7$-leA4Uilz&wCZ?fC?nagLd_TQVl1Z9L=l%3P5Y7L7`f5og>H1Iake#sxRnt{u zN!GuhZNxw1`P;>q89;Xe99ZJWuww_Rj>X72c5FhGY(tUU2$JOK?ook8YUaD?fl^G; zOg`_X=YeSbchkG2n4}|xP;{*W=|X7w`WD&wprgBxLh%NQL*IGfCT|plDi+s>vNiaxJQ)*4yb5Kqm3NoxT=Ce|R(f6v)KOZ;;)%6;;zV z6v^$Vk~7~-SCnCrW~zBJ-A;x{ohcYhOHOZ)Vd7)bdNX~343jp~-`5~ocKR)l;Dy)I zU&%1Z)^B``WM{WCOIUZYKzMgGPj>_d_?V;a(=R^V_y<4es6_=73GlOyK<6B_sOW%Z znY&NFIC9u-jLiZ-r4V|?I+ z9|N~0pf=Bu;mSNmhSd3v42S1BGCY~<$S`Z3BSY;xM~0NSjttK892r>WIWlaY z=g80s;?H$t_&CpzVbNSi2EO@@3{CSL8RpM-WY{y`k-=lWBg4)4jttuK9T~pOcVtMI z=g1JU*pY!jQc_ZKI;$L0b-n8XM~0*Yjtun+92w>;aAerIz>(qF0!N0=3m{5wFLGoM zSm?;0yU>xrbg?5t=ORZ2uZ4~b=?fhhS{6DoEL`Zwuy3Iw!|jC-^&sPaEOcZLUF67M zw8)Xce~}|Y&LV^yNFIbYEplYwSnQ|*y1#w`a+AgZQBT9Jm71YQ=icGS? zN$>yvf9c80z>opD3u`CV(pM(=Y1QgHHGYwKGn? zc=X}_|Cc8rY%vgfFNFPT-T(hDH$vF^-cEN=VzOZpSUpm_5+JYm^#M+V{LjtpMQ9T_ICaAY{T!jVC0xg&$y3P%RM zRgMhDmpd}>u5e^{yxfuD%W_AC{1uK2TUIzSyk6vC5G_eU&3a_zFjc>{X5oOIA5D zyjwi#Vc(PfFvCihcfB(PVkUsGJ21p3j$T*YrKjS7M z9|l4X=4#buRAAnI{NMBy+KkT33pf3n{!W`wLEzq_fB*lNsOWT`%VKzRuF4|NeJ>=qynY>5fq`IPRhX z+P1{d`mIFmh1B7Hlk!Emg1gUky79bt{pa6w69dM4p*&<;z{f01-)g|9#j)g*Gs6py zL;t2fH(*p3vb+56f0jnCb3iy~b-f1D3)$%khK!QT&Hw&Qw=rZ?&tXMeSP#106LOCf z%(*g9=f3RBQ4#5OQ8DOr1zjhr)9DI|FqckOj&2tfhfY_XZWk4cPFI0$7ZsaMSCK9k z6^{;AiEbAapH5eqwBxP{j0`Ul4*r{d-jGqOzFq16|4vuXT_>QuOAN|I(sF)mcQBh$$)(V=q zXE@#pn)d?jg+316)emBIw1Q_*ZXNjd|9C5C?g1otymbZW;1>|H7kqVcXDfKD&=h1Y zSQW@vrem!OKyBq0^A7y`-`VFkg3Sg=fXrq&R^JNR8o=!kM8K+fpfbl>L2JAr`atWyL9EVJ38-qe7ti*Cd@Tc4tpI1Ku!4h`fuXZi zgO!0H0~CJ8TvRmJUu@nFPKYvxz@2UnkYhPoAyX(nB&XXNGy2zWU|?X_`GeB|)kW0mWSoID|-bDS)<_BHPC%7O&-K}fDI+wt8 zu0+=fQgEzw1xNu@XFXU`ck2_@;wLHw-M@zXHmx2WU|F;KK95S$qqaM^*Yd#`!NCkehOxFJlLqu+d+zboL z$*_CrK6ZzwC>&=4-2>Of)Zxa`?WA(>0f(_0iz)*@1B0O(OShNG!G|2iek_d-89p#D z82hnw`oUBkRApe`XD~k4>BiE)S;xZG?WED^CNue8uFUjLri?lPI;{svJi8qfI^7hy zy>viFl!|o!Xs#C#C}Qfi&ysnu4|K}Fi5Keo!AVR3JYNUB$F=o92^Z*AQ0tC=;MuxP zH=XWdljm<$6akg*i3o2&O1i~njQUJ2AE#e2W3*O#3pz;P#EYn}Pp9CPJh z_+QG=>&g-EzntZNF-zDBt8bvgs1#n7{Qv(yu>1UrRZ@_X`qM#^cjn#a{};0ycLilK zhX2MdY>)l>{}Ozzitn2j53YcU#w>;x#+Mmkk&b>BEa-MtgBQ$62LI)Y zpjHLqq#7nmMiu6^-T$U*S~BVi7F=XRJF+I-l2J!t1G2|l5batAXmvLIvLmCtOxDSN z|3Oy*90#3`#lXM-x)u&}DaVV0U;a(kb7CyjEU|TA$oL`S!T=ud3J(o_@m&`*QXpge z?KMkxjfzCCkBZ8R;^+USpK)T8v|#@Nx=jFdQE+&-Kxp@gV=gKgjQ@iiy14_wUhIHbJkAT|Nmbrf&B+@ zR){V5ehZiXB`Pk#FS>N5tGF=gi%M)mYC}lC9pS<_k6G;bzv-N=j55sPd;d+>aAo|- zbo#?|Wj96@?NaIg|6l8Lm#8?r-ren@g6#P%5L-h2m#BmUys*)le#)IuP9p1nMgUfe zR=6>$Fn#$r{hS-4q37O%|Na|)JLaNd!f074P*>MkqTOvV&I+r&y!J&=?2eqH7`avrVQ@sZeEOr zOsQ_uE4>(HnS)L;PM_(;n9Zb6Hl59zQBOug>;M1mAFcmOC7SENg_apOUc)kOn7d35 z@Me_a1Py+LW&AOBnO^M8Xu@<(-t{&U;246;XE74D2GgZ2o|Cgw!fYKpLmdK0w z5ZxT0Qyf0Dek+kV?gkn;WjO8zs!kb>vzbV_On>Oh_|Q;B$Auw_?LVmf{1HUHxcU3v z{|vAwLk4JA2`niC4h5MPJiq@<|Ln)8CL;31nIWqJ96~an8>?Sj`t@(Ru0Nxc#jk(= zqIwEp_{A0#!s-k(uS=NG7CY<^&G z!(3|FT*t#uYMk*x-Gw3R`~MOZ39ut1UVH}Wc%kkx{h&Xi7}KwR({K7ShPZ;G0!&=d z2B#gcyTV_jD}bZoIOwEN2Jq$Skgx|UU4Ww0MqzqU0Hc}}SPD#V=zxs^)omhyFaF4b zjXDIoQW$iN4I;IHP8phhDS*+)?2V!eLm1c=Q1U(Qq5{5H3B(S3(E~O^q1#7=1J)vm z16_^d!Z7)ir#(F&I8>O1v(-LRMMIRzPK$n zeRCkAhK&Y8scd(UO824W2OkbTkO1w<6{zPv_(-Pl7Xt%>K%D~Ei4fw48rUSLN6Y1= ziw7~fg6C;a^c3h+A>3N%-OivZ3YATjF?{7%OL zGXAKzFa*BX2pWbt(R_rb^<=4J^FQWdp5~MPTTk*&IRKjUGCtY-kC}h!LE{53p?Yv- z9R@nPF1*+6fA`PkAFSnC|5aLNoO5K@32M{6mfHzx$-Wlf2};+m1$Kh$e9gHNbi~kW zCgYQkTPJ0@8M*~pFO{;#cXGrX5@E2uSfUH67Md%-E@cP^d-1#k)VN>?$XFu_4hXPE z>%(6d$ijRo!k~W6kwNdABZKKVM+UERjtn;E92uO?IWmNTPJCnQ&QNH5%ir>Vfq|i+ zMn!}nyhOjd4b*?=uK3e^zMK7j00;CQAf13vP|63VW`!4^W6t8^VnHF<2I`z>w}Cn< z!3TdZ8Q0%#Jy2rb{l6P5)NL~ZVon9r92c-TDqwR|UR(!_;bDvj)9@GfrNKekTqnZ-OM)eaE(~a@c1klaST-M#Xs%O$D{H`1 zHW^|VI32HDHCzVNU}^nUssna>Mue&hL&g$Qu)8fl?U?WvB~sJ7f*G|Xwljm;ou!}@qSMU} z8WRZ(4ttSkHT`TbqofVUPKXg55Z&OqCH%!dNwBYt55&hsHy`0RB*F0gf+NGf3yut| z7abX1UT|diaACSq2&18bz;>h-54N$<;t)oC$zNO$2bVa3@81e?=)Mu&efq^>^Xa=o z7!{a5e)~85UI?R-{2W(M)!YrbpV=g!`y9N<8RXD?;zhmdboo$5IfX5zE({PagPi|= z3;1YQC>8u-p~UpqP)0fCy}KEw*M%|~GWXv5H+@qm<6K4A%b>v*P*WDx!Vv9tm-$~H z(9Q7Q;D!9kf71)X7%P~UT=+Nrbr|Eh0Fdbrd*-NugVy1Hi3$j-ywDH>htCE^NcT+U zkOYJEhmu{8pajQ83c8lBqSHAe7_~f3sDi3;KE7ak4;pxnH98R8d<0}vLyd|8 zLy10;X)n-CYZjee9l_`gDf7SClLc;nyy z|HU%BJ}L$;N)xANMl))wTde)}zt=@Y2Xqf%!m$<=kYdIclWzP2odgl{;v{ISj?MV? zbjKJ*k?H578K;SwdxGx81TCHq1Git!hQB!SVtQ2!qn#AkpLa}L7&1PXfD?-fs0Iyv zp(8l`QVioQkq_<+3<1GVZ6K)^bxQI*#J|AVTB<1H$nJ48XXOA%8yLqG=D zOcPTVhL<&e!Q(JGpex|KP?dv5jgXY5KuQ9Y@X!~HeA8>=8MW#sZUoIl?OHaruKUw{Be?tg3!7<-4Ba25Ur1n- zsh5iT_rLW(1zTr{iok2OZg$Xm5l}<9o57mBlp{XQ_yE`n2c7sh5Ch~qB%Jj>;~*jt zL5GiFjcwS%lo(K(w43>VfI{m5P*0?U>%Ty^aQBby)31~B{s*XZf9O8fE%rairCXr; z#DAeIneHDiu7LJ_o_Jw96WsI#4NC|d2VHy#S(+>W&cxj(Uic<~#@)cRJbPgGdC<@= zXe8i&01x;gxd5<{-RA#;Oai*k{|_^m?3gcKf94G6cEu7EiSX_k6_xIr-TbX5`CCB? zx4OMqdO>&CXEB7mun_$JzmvW7KuJtPjfx6GNhsKLK`N~WO0>~BDh7}iA}DRD1i$d- z0cUYg8Fom50b)34ArVYdJ=pPK88JF846jdS`Mfv}+B#k+%C{$FZ2fYE=e z(Q#pTDGxd!)Lo{Vq1l3=&KYETscLtQibD6E`GLsqAL3W-O_J z`5Nl!IXa-T_b-7O6*(#jq21?SG;4yZQuJQq0g$b$KqR(9BHCFIK1ceul z3>i;M!QHzp5VxNf{|{lkSo8Sbe~2Wwmp8q@iczHg=A(cAUuS200qFsCkHNiTh!?>w z1nstavE|Xf|1c#z;G1Hh-bW~z2r@@GgT>4RbpMfn8Hy8NE|7T)8k7r#azUEw!H#@U z^6dZrZaw3Zojxiepu+7e>g}=2hxl7S{VC(y-8|Z$x>KW@ulq%}izG{@i;70KizG*A z!2c3SmhSVNE-ET7zWFmSbo(+Kd?2Nm4l6dRBcVFs^wEW%&paDX#+w|f96x3QM8eRE}z0h383hA=}AW_0JMXh6+b z05vBx{DnHikk>3AX}Bht<{xaO)8%X!MT9}sUO>hhgpTLz(_L*CHM8&j`~SZ;KA@W! zIkwB=|Eshbyl`ar%wN|I8i((02MxKW@n3UMk$Ig25(SOxcejJa_@SacAW_i3dv`l% zj2$X!1`-7guy?m#n10uWQM3NPeK06U!L#K^(FBR5+n|$p@yF761_lP>+r6MYObqb2 z5(CAR6ic@+2lM5FFU3F>bUSf0J_KE@-RYtt(fAX@D$(n9saH`s_yThAw)MdhIdD*B zOaOHOB+OkH{ugolFJcJ?pBmqMM55b8MddSpor{W07DH&Ki;7LJi;4+oO`}Tpc~J8m z>`8|g+Z-7{A?2c?)9s>S^4~>8B#r-?D+6dgP7gh;)q}4$Za&Oo>7pXS-(>S29Q@#u z)j|0dTo{0IIEeA$oC5;`s7UDbQE>=+VQ~5X|LzuWv2nab1vZHW8mb4ijBH+P02RWZ zBkmcq7_vaqw>2+%7ySF5<#P^k&Io z==Byj=FG!*oEba_@4o=t^2#{o?7$Gv>n(8H88QU#3>ku7a2h;2aJ$=|CHTc=Q&1UG zYTND40y6P`xzCFaod5qr>NpJuCDZ(4`c->I{$xmUv@myJc&QJnT-Jc2zx8dYO_t1y z4WK=`CtgTS1lQCep!hom@h_;C39qR&qyGKxe({>g_$^eHG0O+CH~7ShyA%FRk8xm> ztp|G}V?Nj$7C5}I^AwUd&X|C`;hhB;B>!J3(0w+G;lC z1GPf_2XLUtZK(%IT7e=KRJ?fXu(zj!m< zFqu(F!2?o#f@;s^Hy*I6(?!JvT5nD-PG+=Xsy{bX2lNJ+cGd5urF0^uH#`Y1zpx{p<-{tQYzft2AaGx zhNv+<(dnb&06y;yY{oGc6?KLe4}2LIx+VRcKA;hOkvb8?RyBm zsYL~}Qd%bfY3b{_WG#kyoe5%o|nQX?!E~$qvE5Y(CMQh z@tOrR@C+I-YCTXAma)YcX&4i1XzQ(i|G~oGL1j>_2^P+~^>6x_6h>*rhUqU-7)|&= zSt&H*fUyfhaCq2@z0-RDAs!(V{+C;6yIbh@Z01cJ?a zW;VSzl~FauA2bZ@qN4D6BD^Ku9iqY!7T*1{*NLaQoW=TBiOgsII)*gc>Q4wf%XZh0YqQVp3DG&#_$)WKLXks3;*mP$qqpKk3dURio<|85* zpi5p~*iV?wpT;Or-vS!&l|Z>}P#~cD+zZ|buw`)PUNC}=RVd}isE`5Q`S+>+-+xeq zzv}<@KcfaBcCY{6f6$c&*Fa)ZK0AZf9G~h3XL=2gar;2x4WP@A&b`>w|L^~Q@VbQV z9$OXALI6veQ6D^b74Tv+=zypk6@_NdINA&om+6vOj22n5 zzyJH+U85q>%@-aT9FVb>fq|jZMaAUB<7eQ4Sf=$rsax|KneH>4DJmv`-KSry0$rT# zqhiziM&@{n3TS}`XxKF5#U#)@-XM>KhjyPk-U8m)4eCU_;JgjaIx^GW?`9PD5Sz!y z(0nA~kO;Ur4Zf_P4Yce+yA8Aq!}vdBR8bpxcR)8-wENtDlN~P>JY-<#hO3<}mCb0t zEcE~1bl+@7aqy&2Kt_qN%k36dkO?g0(2by8d zc%b4kT`q^wPhg6=3-|^ba7p!Ill%0V97YZB@J+xAp&8If-l6Wo@Un=JfdM?35YzmF zxiq}_Cwr+RxH%E<;^lOx!V@5cpyL9Yt2G!(kY*iVQy=Ru{reA@i(tqAE#CmoeZYoF zA6@+SzqyWwrIgnjJl(-k>YVXM-DSE#E~A(oNY0wQRI!^K(sF}Z9S^fwM8k#Q<$h3y zjJf#-a|u`T50(iIitiN%JB$jIS%RnxTq9B=gMAow}30F z?ky^yGf$wGMu9d|bhoI0dQqSfs@FwDA)pg9my;F5z|dWzqA-159;2r^D9Qr5V^m}^ z=E%4(1c!ybm=2!8mv|`(S{wm9Q8IKr*#DsUtAK6>(1a26o)Px$^W6>^ z;Mq$BNYxFVqv&>U2d{|z!8 zfYt%P7XyHX$-+Wk$bAJ(Sjd31L#^g-0d3v}34qLVkm)`R?y+~PGMB3U4*!Q~3q#p8q8( zP!mD>OuI`|K)F*SEO>fCA)|V|f-Lf~2GAr3$R}W(5)g-bH2>h}W-pZk-MA6heg3~d zMvg3a`mcbc`|N*%7a!05`~Nzu`~3d^4^WrMr?FN5G*w&U+|7>A(gV`M_8+Qc-&xR{ zB1kq1Vj@@?vIaK`uIl9(a03eLc-wAYh8Hhh{`(IamE~^*?S1WzQ4z@k4MRzM`RL5> zLK?Jr@x+T3&=yqC;zNbwE-Ij-oj?l@)nELr`8O$Fmgnp?aBKA&Xern98AXg*0mnft zH(!R}?idw?U{I?>A>bG!A2Gdn{rKPim)k)dYG^Az3$zV2;KgK+9(M5f7HFqDY_W*L zi&s1TO&2I;6l0YI#nE(~Vn(@ucc7Ds*?N6cYy!K_{SUBd*b81WS0Vzo5*+j0XMv4rptVw^QlPMhrlJyFkSYm~szh;y>1Rq9r5qflf{OnPw2?~iwYG9Q!Q(2R zhGF9yP_q_RrnGN&Vv82*+cp>Qk?!@GF$EZkT z+yLboqfmfV?!y-K60c0u^G)=D&`a=Ev^zG%0R*+$N1vwXn z3>7(WPXQ`_`Q3Ex3PwXF2kGf{6^sf36HsIe-c8S|V3dXE_5taRL6Nt7H+^XZV<@we z-M{I7D;TZ7&7bg$5)?%f-%j_fWYlG1Iyk+ilF^Gvt#$f|N=ALAt?ko)Rx-*dUIlG` z^koPS4hYM#I|lJ2$8i^x5YVc<7wnJ!O}D6GR0|N0gSXGlf&%SD?y-OWGeDvl=uI?` zyv~ccN5Sb(Cjc_A91#G@A`0CgNsSi)2GiG7F}mw-Zv!hT0PRs|QGqSjd{Lkbncyf1 z0L@guH2pd>U8R~)k16Zm^pI*sRVL%M>DASYDono3(-&4V>NDMG1^GxundQZw+yDM| zL;Yj}^%FDPPkImkO&6?T)R$bd}~DT{-ej)=4j%2?1Wu2;*L z1&*|U3=K#R5;P>P6aK>B<@9y6jAi}-3NE1OlRM6!T1O=~{KfJY;4FF^v>q8$?14&G z3vlUbTLc=}f3d6tR04OFsOTJT0gpO>5^U?Y67?4{MW6zf`OWHo(0SGg>gsd^7!M zJ!1s3{?&ie6&e^tm^AFBn>8@%if;j}yaOlv2OwRL$>@}4)2kX7^_WuFrmt#X^yLAq ziw^i-&hcW-lYi5h8yP#pzkn2%v-~&ju2C`RKK~*?9Mr-q(dq{EheK3Cx*3E1L&jMk zi|9B&Wg*0H(Wl_>?JiN#0A2J4y0$%_Ge*VX1&ic zYc(+%Fa_05k7;7m*96DJpImTEq!ysX1ZXi4I3{lAf@5O!@_*B>G%*^>F0F&aL^nS; z4gx^+8)yQJ>&59S|E8-nGb-v`Zes-P$_8~NKwURP>S}&t083gfDmt(-vbdR1Tj&5N z%YxPbCHyZ@NqC{Z_uupl&5R<R85qLKn0^hxaZ&W zf6a_~OahG4^;#HJT%!(v>I{yS1En#&pvfLk&G|n-qx-~*fZ6{b6Mil#pfk1^kfNDE z9$e0)fD8_Q;r?j)^cKci9Z>VN+d%-*qz`y;5_Hx^4YZ?Xf}&&I!|4vKj4Jgv1VM3E z3T@t@k3f~6=<#_7iM+$zJ}NG-g+lRh;5{!o#%Eq+w1BE)8|0-(mytsf+d9F=t&BEm zpd@B}qJ%5!KWL-({D^=5yInyI4u{-xQmL8 z%g5;-I~gOG5C8c$-KUFDv3_+uC~cI$)5e)IXTrKmR0P7ie>Us~odd{FDgbdYs142E z0y?UrVLzxh$55&WkqGE!fF$hZ1HYSpFqU&Q*Yhy&x2iERFf{D%1eL?3(HJWKHvix+ zci|V`*6=~V3A7dVg@6+SNMor1NbU6V#f+jhY@l|j189)B+sOvp4{HUT+R?DT7i=m& zNagQUXs3EWZ$D`84R57f;ui>&x4!}nKtEbZ3T6G*+EhUpq_QFi;74< zZy#tC*o#TZ;10D&>;IA@P$T_+Kt(-hm@Ik^s1_^n?`8*OGmzGbZa?JxYYSJQ%I~7)$w@4=^F}#oo`s7PU3F?4Zk9}Tu0i4;U(zMCnT{iAg6*( zz}XQZ?ZVK-WyJvsn-ZZeFGed5kY$I!mZ1lY9cUy9BWPkk7O;bc7F=0&vS1IJ29O$1 zPU(h+4RpATgwRnWC3FNBTMv}FcDO5|gieVKQYhSzc42tUk0h`}+J&LJ9n>uB_K@gy z5cpqmkmbM0!SEMm*TKa!s0M?KI>U#rv;JpD?}oQ9o8Mp=zJ-lSC8R8#-q*`mX|naw zzyDbRpy?*i;#zP^MJNGW#8-nBg@AhG633yVxZq~Wmw0e9<;cu`)1&(sO_=r;OrO}t zD6IJ67_40kY7ZWBQK?|evODgg;@|@6%ptKCUH;1L0 z{WVkfaj^FTGFoK7tprf3S0(gCBR6A%%47SGUNK`wo@3z#3HdAx|2F( zdgc_yLrj9*({-mZ`hz=DprN{qJ&4t-J?ExRn#$-X(IX2Esuo!%h7F8|jSd{HlXYTf zly#c^dMcxa#2JX}5xDF=Sto{rvQE>rr!h)0DU@w@o5sk^D9K&`iYJ*vu#f>Y>_Rgv zlwGE0O=r{*I+TwtJ$=P=Myv1^1+d)-3Qi0=T9jQFUKi|`1EMl_>;O?oJ1&5z=pAoB zRLBkv6&HrrzB^Pvl-mvm5M>WePyrsT2TJroqj>B)VpLqFTh3sVsb_{;x}!wJ1vF16 z63}|GL_R#DL&b$5G@}5r;vKr(Xy$29#3{U%$(VvH3tj^n{Gu8xE3<*I+ebwMRPq>~ zd9gST=BWw2@=gp>+T$?4fYHSwhi(O4E!xmz|}dd`2<;#a{;u=OQlst$qBU4 zg`-p?V~>#w19;7n#Qzc%i5CJ(K?7e#^)3uq_dx>SMcooFw3dSB6&S$EyU&$!W-(-V zfsWfL$w&dsCd~q|Gn(r}Kt|pG8OZ|D4Z<(>Edh-Xfy9tays-pqB1;BHb@#c_?JyIS zGIWew>LGhUAa1e)8K46)0K7(sq5B+o;tDk0qwt~-bmNvghbqGXdj?w&QDOv}-)R29 zTB6$ggAFzX5dvDX@xut5<3Pi~GGQ+sp9DpmL^sF)2Iw4ciAFa&sE}iU=>xCz&_G%{ z9`<4lL?3v$_caA41`S0ghCC<+#SFONA`;f^3Tn83dNdla1%@i!H-bUA3EVT3dEpFN zUFOZv_z)CvjXxnV*9h93*{rrI6&vHEtzA~oTjJFWi(~ZQFEF; z7sRMhbDDm2E~9aMkFpa(or)7fo~jeWDpe{E4OIIil%a6#3H;ijq+!#7nYhX1Ng z3><1s41#J-;OR%uEOxh#3Qur%6i3*%!|Wy8-Hsf_ho`sAW0Z<3;^;nx$c!btASsA| zp(95(SQeC6At@Fr3lady261#BQU$F>h>Hdudet#aLv>T|L1XubQ z9U9<74bBmvFS3q+!~L5Zi%f~yH+L2pSR8>hTtHE4cVxQ5d`4?tuoRe(&~%yJF`rQe zNytIdW%|bXjA9mG1z=)=rVGPsnQv_NB^uw^4=^$?pxE(46YL&vdJ26}e|Y-;`HTvX zF;}o|9W7*e*Td5-7cdsfgQNmp+)4xujj#k{_@F4-d}#XV1&rEIMGIa*6=k3($~-h( zbRnZDBhz;8g^a5iA+w3=OBhv6 zVia8%z&p|uz+=D)FS=&@`=0?4&F}%0%AnI-!15Ykd5sslrvID%bO~d*HrTx-pc#(| ziioB&SYQQco8h6L{PH$hzsLgdm4_w)9(Q}%HRwnVFfGm>5BO!y}Me-3o}2H<_?- z&|;9rWsJ_+8Kv-1G4SyRMNHk0W>i2%1!U`-&;Jq?pYRv)d#1l%#wcAM52{{u5b*_y zvomKvhm?TESp~X3f^u#^XB()C@M5VN14Gyg{#Br5l`P%oUYH&Po$_MY1{#Bo z(iw#qfkHOF5ka_DpgRP#n%GGoyt`(4&X14tVi6ADYbqAc7Ujx>P`L-uEMgyfstXdM1&$sGl*dupOJ|M>M|S{=w!pz(OkT~unE3mgnHU(rCycaMf`(B_R20Hq*vtTp74f&IGchoL zc0Fjc{x7i(?>_rN87xt%5AMt|b%WyGnISx5g)TUvH2#;UXoSAt+XnTk(ScY{H%g+O zA>)p&3j?D432yG_fJ-`^7Y3m9TYq$27{XqJmVYfA%HYuhi8#YVN;d{)F|__K z5$W~?ZMx722!9d23%tKt<+XHojEY7#b2kTgBN1qUw?wxuOTY`WUEn@!Qhh^>iUvce zDB9)%89f(<*QQ{Vcb9{=yq)hB@2pYL`5%N>(#la{fTk@5QhtIvf}t;zw}PB35gi`~ z^DX!=ky7X?4X{D=-A<6r^xBXCIj|sNIImO$?C#!P@EF@;&`G8>DmoCQI^75*<16%EjApG07{hr$b`E&u;_TY$v6L3?i;6s#*iJz|a0N!>Xr z0^Oh!oP1frUd(>-A2h8P*6SJ*@Ir6nzyHzkaT^#RG0f0>oagmkL=b?-k3WWkdKvsJ zSA{@hAvG!@;V)iHg(R%Q(;L<@iqx-TWMIfR@xhrP{Dp!mDBpmhp0}}10CWl(e=iG2 zdJb5c5k(rbn2NvmDFXvThK8;SL->nFF37q;r2&60=se>L3$XNIEYiyv80r}^Jizix zu*ic3w=*KZ(yef5&c-_M;*r|ii~_J!7N%5CMh95RA5+RaL*+8avnCL!`j!JF{7@5X z*g%WHO2jhe=z=^X3{lZ?fWHMa{NC*cTE6X~A`uY&B4Rsez_#^&Nhx^Ka7j97$8z{F z2F7kbmKWYj{)1MPF?avytWgm`NrgxWP6Lv->cI&SmN-GF5HyMmPK6=A|HGCGf`@ud zK*s`r4rCEvh&MhE2d}L`t4O=uS&)mAx~gu_ik=rACxha;L>*l8gST^MFhF)tg3HA4 z7Z2(;g7Xe&11D$=1XC76hJ-439cWnQzyHlY{-fnRut{MVG7wY1MSb{-*7H`tBGn|(>GWw!04-tE>GUfA z>4f?+H3O7kSOPLuKw8_-mhivz(-&-Hln4tG>HgXLOQ49QTkbVe_dN)c?=@5Rxo$TB z=7UIl>k}nn|4p}CaApV&2n3g7FVagv(JGR~lM(XQnc;t#K=-*Uh8G|I|DDdaiBXO} z1xfJ8|G(3%L4u%5QD7>k|NlEZV-uqc2k0vMuop=V(|a~CDsZ^`b!G^AVdXG=%O*wz zEgvvX$N}UHP^saW0TKaMEHdDVUgpKpj(`6%eEv@Vw~0}#{s!pI86Opi_-;p$<_Ghe zPe{adI*LRe5@6_d=K%#LXY&sx{#MXVl8gpMP}Q@{9%i;6D2K(z9d`ho`o#d!(_9bQ zPj?Aa00n>*S7K2N8p{JI&M0AYsb>g#5r#z#XqPBhO$68&V=PKQ%WlC+62M9XuqXj- zN(C$F0V{cHhvD*Y(6xGCr)Mkxt2u?KMuMGz0jvbA!n+C}f}t9EXrS zI4Un*f$pa9QBi3AX?kRU;e z+!>%aDp7$(uGDH!+<_xkgaOnCV}WiAXavnTb~$i#G=e5w8+L*xbW4m{4wUFM>;%8i$D|uX0z=s!t2Hpc-M6Uw55Of#{3v7)8=qwZsNMU>?IK2BOsMrHF zjSN7G|M*+(g9cZHL%UCdj*;?^>CRD+vCI_U?+3LHx|zd36C9ugyA|F3ECDapto!%B zzWYP#H|Ww>vF>yKgCtrHlo&zQeN>=r0s`&I1uX~z;qVvxSArZT5f>W|%8j6rH`vUI zPq#ly*o*kt|Nn!E4)E!dGNsxe6`-{w(D`S`>~5(ds3w*P=R|WlA})jIt%5Xm0~) zKOzBI5(x8V@SXqv;e+AOO}URCGXNE!0QBehc96Y9u)7VkDbx61^82f%bPoG_`@4V2O$n^KLK?BvD}qX1-SG_UAy}WL1K?smc(%!wNhE zf55&TI*1QVEueBX!@&wUm=-Jp#V&Zr9yDeSp6ndI9jNYzfrSfBtsRwuJvGtrG4|4BwnN*h@5;K?j_%bhEu?>OKbcd_cw@h?&q* zw`wUkoW418RPeWeHjaaJFm=O@L^H8=VE|t)((Mh39cWkvfo6_C*HdE^^B4aK170O73v8CMX+Ji+<;dAk@RR6s!=o}mDm zy92FF41Mu+F*uO2d|u4f1-GPG45mx%W>jYCx0`Oin^8_Uz6jKZ2X9&QWr0kDPcPWb zD9UvG^7QuIjC#!N^Z!lXv71p*WX%U>(E7ECEJoOZ|HK;bJT#M$+jNdSj55%H-8+zz zP{3O~0$&_iG~H?sqb%qIyU0C^{-7f#yZt#pyWR|5J2Sj^YV_~_|1Bz@Jx<-_98eZ$ z)lUYleQ=wN5c}Yk8~yv=T@K#|H^b=P|IqGpFD8JLK=;A57(w>I)qupNd^QAcgex!t zFCo?dt?)?!Ni;w8|@2Jt1=fDj<;vm_|^o_abb;^cDLU zU6?*-PJg$LQG@B2=5&euj2iVXZh!v!zuERgi7UhZQq>o{U;h4I4B|BZ_+QHL;@+3P z|BVhDej%py?|;jIlJ_q_yIo(L`11Gv21d{py)$PP!W1(b9XK5D!uQMH|IJ5OS`U;k zZ(uz9LQnJG|18G;rXWQx9KmuNEeH6g!tZm50}WWK?;+4L`w8xevEQ+EVd(YeIPMNw zrOI&Jod?u>c_Gcjz|iRqI(J#&xVr#I=(xKCi0X7Vn0`>5Nm+;oq@o>kzt=Gr6$!={ zF&fjqsWa(0+)-g<2=6}sf+e4U;kY|^9Q=5@1*k*7zyQiA-C)jfmv->c%m2Z==KUZA z4mFRDw_8k4)L@dYKNAQ(CM@8;L9dGnPr!>_CI*K8W-r_vKqI^?agm47fe z-R>OCM_79OIUtUc2mr0B0WGC`agqgek_E?$MEmKnnoK5v+V)`Ab{_*B*mmYjmc$ET zh)C;!Qnvr9J{O!BdOcV=8Cp-4Fm*EadT>A(X~!LS7#Rs=JYeW6O~cp19?l{|(ineL{=q%}FgOM<%vbV`X? z@QXLLjFX$abSGc%mSKAEZ+f2=(ZIH-2Wy=1RF6c@&23K8!Rb3jr-sK z*HsObJPf5m#~gVW!@5r&bK_xn@s8);L%Qn&N&Tsco)yV|Hs^U7(-uNFlU^s zAEHc8;8^QuQ_oXcLL{)F>;(@aRL&km*FueKT%y7Kz4Fdzi2QUk?*rMh$NbCw|1u2+y19Tsn?ev3sOi6mH z@i+<1MHvsArw8gY2{Q#-O;6Kj3a#(?;LPx1jsOEgSe9T0Xf*RhKbRww0jh^yG=Vw7 z83!i2FuW)Qb40*nqOWbjvUoERK)U0=!h9JyAWk5d!=F(D;<$i0+!?ySX>xhYz&^xYsjR@ z-oop`@S-tzx-E$F1!PrV@bp{|=MRXZ7(9J0h{G|(h2h1=py_8p91#%bV9@lxAdUiv zGcjnot`U0C5rbpZ*sl*8>WYiT=}d zO_?;=AAsDQ=s!Ic#JL0F82V4|1#xbGIE?<&_kuVtK%9$y)8B$PA3&Uie$!>mm^9gE zfQ&Bmo9+wZECF#G{ifG~I4eLLLBHv1L7WXB&O_hncR?HtPEZW_PUkfTg(-;B=sVpO z#IXQz0)40Ff;c-sdK7)9&joP~fH)t0rk@3ICV;$f&}aHz5N8UAGtp9Uqgn(PT6PNDa7Ul1n) z#BubVUJK$>fH;EQ)7OGH9U#s_ujzL|oEad_Mz86-R!o}gD?pq^uj#fR&JGYK&}(`w zh;stOQS_QV7sR;%;(YX+eip=e0pc9=oc(Q|q%h_eIa zZbQ%My&%pBP>?WsPTvdSoB?qzdQ5){;s|iLFuYjkF1%D6bl5{cdhWST7qn$kd4=kd}0~&tG5Si-2@Zzr9^oO=gTI?Di&KkGrLUv5*^*&R< z8GDZk149OA$R;BJBCuM8fgvvXa8_l84Mbp;3Ijt{RfY?M*8}2JXXrq(d>uq_Ml)#a zGXf%(1u_vd8=R2?5r_l{G=fwJ@PY00P+?%u1JBZC$UsEQA?8542k#K&Yx5fe$ZCRT zc1)H`Z%d{t+A|sHybS#RKTG7eiwb00MHMf&3-Fj9v_iJCL?z^yi;4?q!Kdnrc;4yt z_DnX$jc5M<59{?&5qRN#>Hq&MpBDlUJ(VCmpxF_y9;Vj+CB7LYpkOjkp8n3BNg8sh z%sW|dyP5}dI7$HK=_vM|;LRzZ+4qR>V<1<(@YxI=rMH2NN`aP;+CW;eAWwo?qxhFk zK&!dw9S%%_OwK&hXFD)iN_qVL`yVty1zzC~-qGs-uGBuXO@HUW6v(8hI^EHcNkU#? zFTA1K{3Zgi(jfq{*KT`-Bhyw!CV8vr`p!(xjf0dR`>8k>vi@fzBD6NX0abc1-7PAh z$`H1x%F~4@Q53b7bx{cjcri(3`hFKC1E#m^(?7Z}1=pWY`S(AIHRD0M3urU4&Wjx& zK5qtSISlx?locxf{&yetDBhE0m_Exie|#*C|1~z|noKgfojf zV?#SQpm;O(fK(-b!T=H|3f<>kY*d)O*PTf<{7gGIyKR>I_dhN=9y9v zF>rDO5n2B;HX=tp2O|RmBJx4Audv9s^k7nDherPNR1YR4rV|R=J3W}9nV5bsPJiab zq|0=peY&VOlYRXTIpp|{d9gwce3WNM>)R5}EY^${5O1(&d;oc)TkhZgX7E9)prHN% z3K$=im=`4wVI77NP^>UOVj$*4tlYokJG37FgXhu$%0dy3dmm|Zz;)6 zf8)cX&Gc1fx}+~tkP3{!U zduFj_1b~d4Dm}f@kICFHMjC9IOzXE&_J$f2aY)cZb6(5~TWPRYpqVG;g|77Uhki`L z=@pXy{%8FU>vd6y3Fz%n0ky+lq@ap{mJhuMKotWWxb?yYRScARUub~Ez?m{80JP+x z*MsGSu;lb;f2J;JPyz;b4_s7g0*<$+n1K4U|NsAgu~Twd0F!)*rx<8Evj`&t!yyrd zrzK7dZ%UjPK9@K#{3>x`U@UcF;3#!s;4gJz5G!?JkS%p$Xnqp{%P%e}0nIfk2^^5a zSW|ibgAd{L7B{{Jrr_3Z^R=71%P z_@uyMGN2<>GcG{IZb^XDDS*W|Iza{)@y!B@ser{?pkh&AF$=I*1yoE5ET#h%+W-+0 zy(JD#WjGVXLv4+v(GVP7f!@Bho+9MiLcn56mJK^)Mn^Z(0jGI+W` z7K=<@5yT|L=Oqqu5$JR+feeSP=?#HQ#=Kx57qCSoV711)Vjxu>V4)RVU<;fVi2eKj z@)JAwzI2}6Kt|9lxLu5nEeA?}YM%nl9}9ra#;pRWI>XMu5DGfoKo=Zzce-2{vH}AB zU!A@_m`PpK3~V?kphPlQx>2NliGu6}g_lT%30z7&gh^X;7g!1uY$6#Ms8Us6DNsm> zWK2Pk3bg`BnS-j}j2$qU<|6_PH7WuOr7XrLUyFj;8NGpwkgaFP-Vp(L=a&e`L7)U7 zl5qoOz;uX%z*3-vOClM6P^GHCQaoU56?$Mk1naT_OM#||L^3>3rG5#6?2-WMsz8<6 z1(wnPOD#Z=@~aXC=iZ#gf1tH9bpj2xZ%bSm7)sfjYg7tYN(D1!f{x$0(c=QTuF_Zd z-+zcg{vOZ?CjZNQz-E?AfH@KzL#$xyYQR!6P^45&3V}=j^)2~(m_dVD+d-{Iu*w5) zl^~ziR|)<5|9?BEVGEZ10Fy-tenDvPPe4gY;Gnkx>j#~;2-dGK5$Z%D_1C}nB?xi= zXiy$(Kmdsbyx0ZS4>|@FtiOdc{q?6`RDlfuUEmHjU<+vmoPJ>i)(`60gY`clNq=(p z=@-8QKp_B{&;=VHGKsVxe6dRa6xpC{CpGr}xBmbQfV!xNWVpc00q19}Vz4UEf-wG` zy`XZrJOX6h|MHOk8v6`^ueSo7MIGM#GNTrh zA3uObt$kTuWPr4ksE9x^WsOhoIqL_zo`l4_qWv(0H5dMAM>F2|lf^ti)pl-3u<2C6tkn4N|1=;vCQP z2N6tS^%dEm5fq+(|C|4F@V9JZU|?wemr^GLzOXgJAP1s&BG^Qb?KLWm|3HiSYj`tm z)EZ`NfU3=e+NS|Yv}h3^ zlyMXk|1Y45ZMgr*{BQgR_M&J8*wGs*L2d(kOP+gre-x9XrbiXX8454{aQ*xLS{BVj z-i#O35b0c|=@+AzgzF7zT^L@AVkqONgDA6P`u9Ier8ia~<47I2+MB@zOD!cFjsHO9 zVX0S^Oval!7lzkXS$-gu0`*{(d2p3zrt@SZKvdje{8ta^O#Xpz?cf?}__72t7#hIF zXn;jQ7S-@&31x^tM1{CO5ye!(+5De{zx5!fLGPP!paJCQk{4e&L6R(`LK&b|GuXCX z-;x*iIRE|6D$EdQgs3{t`R{+@^heQ5LiHf`fK+S%snE`7fvQ*tQUOlCwS1rqA(17X zv7r$ho#GiMpo(h1iogZCVU}dZ1Bmczg8iUhJ+1@nN<_yjTM@gclle5ihhDKy$Ppiwv4U z7Dc@1z)-`+0Pfp>;IIVgS5d>4C7hAb;!@Ah zefott2P|RLiNT5?UT8rE%IvkE*sp=;=jQnLzxy;K&(!i|6=qCmabbAzmHprU*S1;G z87!?X3@@Iu!_7l2)}%o?L4{K-dxk=*3&U&H`iusU4!8e*|3eDR8on&)j4!QVw=Mvi z1B#{^zO0H2fi|#c7g!XW6iNTA6r_=e8nNpa(eB54=%=Cywbd17|N^z!LO>fnjo2oFNCyj_IE>nU)C~AapmsseufjuE}Cj=U50{gmq-$^xIiX zI!dm*|Neu{s4{r5`}N=d-Q^C)TU0>F6EvoH+(pIa%g5=O*-Uawti01bvzg{GW^R9x z&E&|abYiLtL-T=Ooh~XG#{Zjtl=8RhvNJI7Z)?a{1UCP}!s*_*Oe$iFz-zriR17}x z3$R#pbEWZzvp$$Qy)~EV9@BxT(^K=947m?Xbz%6#FUVr~vU@sjK9lnFBY8|hj4{)% z=P@ZW#!UYWqBy3@=QAlY-TOA(C7(%&>DagF8Tm|>Ow+$jUku_`ew%(gpGjG6##9%E z*Xz1nR0O(>x*5QBzHs=)!0?Gbl6A$@=^O=2N{njLwF{V(xtPGh0=x^RPLC*H(qpCuHu%1j+or#FD;2~(#pEo9Qs?*78Sa5qLJT~u;Fss*O|7BSf{ zUYOoh#AL*@;Pdo-MNGL&C#FuC?}ZFe%s1 za$>kV%ZY)1wi83xY$t}=*-i{gW;-#QnC-;yX0{W9z#JzAlQ~Wd5p$dvCeLwV*gnUJ z;r1LSh7WU`7-Z%;F*wY1VknsF#BgV>6NAS*Cx*OvP7G7#IWcUW=fqGt--%()d?$wc z^PL!e&v#*2TaJLk~f$b7@%2Au8c{K$>H&IzcMB%%_*QZF!*E%k?tSe z&JK{&>EHj?F`zT2di`y>LE}(10WUmLz*ieZFflN^ zmO_(@O_^@k#3UWVmP|W zi9vU@6T^hnP7I${J2AwrabjRu@5G?6-ihJmS|zo+&u5)6@TIs~lzQTz? zd94#e?^-8@18bZZjF&kvJY7FMtC=a@Xt@)^!sSj3*Oxmn$gDst8qE5i@ftbJfrcYs zW8c4gprb&ztjjc;|PG@Xq@?g4nZ@PColNr%3RGG!)rBFAU;jcGGrz`#Py7PBJ3y0hJ}Nr=8izoo+lHyrWxJWoI3@RjL%nJL z^q6iYdqr@lzd8H&e|WDq&x_!nfB$#8sOTJL1_!w_D9HD8Go^zn6V)Cj9m$PO4Bt08 zG5p);#ISjz6T`%fP7HfDIx!gSoSxOgWUaWxi6MH66T{RkP7K~#of!6Sbz+#b&50p* zyA#9C?M@8LJEtG(VbT?r*blF{n%@XO>K?XUCV3w9*N{{w@M7-C>4v>bRs!IP+C@d9 z(~+h7{ENp2rdRhe*)WMJP2btev`)IKIn5Iv!f$UX21~x#@5*Ffi-@ zjpl!HfI4;PsTvC;q?u$j!je z{L{9SYX|7Y)0dC9K?ksdtq2V0cHjvE*&(n)pMinlJ4(9Eg!QCqr>zlK4vLKhv}t!%t~IqAme|>ltv?a6t0iAM6LNZSBWBcWo$;oG#7@9 zm}yAv{GCgC>4K+c_cp$1PkQL5@C8g;gAZAn zk4SKXuD}p^Z3ek%1G+;GtZ@yp#wQvm?gw4;4qD;|a@GR@W|8S)!pxdTo&=XD!6ZSbV1Rrx^kU8$eaQmba1H<%0DQ4N} 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 by#bCNP&vtB#$mR7VG?UR=XM7*)|HF^+~*Gv delta 155230 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�dcDc^EfcH-t%(Jp#np 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 0) { - char** configStrings = ReadFileData(ConfigFile.c_str()); + configStrings = ReadFileData(ConfigFile.c_str()); if (configStrings) config = *configStrings; else { @@ -731,9 +731,11 @@ bool CompileFile(const char *fileName, ShHandle compiler, int Options) for (int j = 0; j < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++j) { //ret = ShCompile(compiler, shaderStrings, NumShaderStrings, lengths, EShOptNone, &Resources, Options, 100, false, messages); ret = ShCompile(compiler, shaderStrings, NumShaderStrings, 0, EShOptNone, &Resources, Options, 100, false, messages); - //const char* multi[4] = { "# ve", "rsion", " 300 e", "s" }; + //const char* multi[12] = { "# ve", "rsion", " 300 e", "s", "\n#err", + // "or should be l", "ine 1", "string 5\n", "float glo", "bal", + // ";\n#error should be line 2\n void main() {", "global = 2.3;}" }; //const char* multi[7] = { "/", "/", "\\", "\n", "\n", "#", "version 300 es" }; - //ret = ShCompile(compiler, multi, 4, 0, EShOptNone, &Resources, Options, 100, false, messages); + //ret = ShCompile(compiler, multi, 7, 0, EShOptNone, &Resources, Options, 100, false, messages); } if (Options & EOptionMemoryLeakMode) @@ -836,12 +838,13 @@ char** ReadFileData(const char *fileName) } fdata[count] = '\0'; fclose(in); - if(count==0){ + if (count == 0) { return_data[0]=(char*)malloc(count+2); return_data[0][0]='\0'; - NumShaderStrings=0; + NumShaderStrings = 0; return return_data; - } + } else + NumShaderStrings = 1; int len = (int)(ceil)((float)count/(float)NumShaderStrings); int ptr_len=0,i=0; diff --git a/Test/baseResults/empty.frag.out b/Test/baseResults/empty.frag.out new file mode 100644 index 00000000..fa91cf3b --- /dev/null +++ b/Test/baseResults/empty.frag.out @@ -0,0 +1,30 @@ +empty.frag +WARNING: #version: statement missing; use #version on first line of shader + +0:? Sequence +0:? Linker Objects + +empty2.frag +WARNING: #version: statement missing; use #version on first line of shader + +0:? Sequence +0:? Linker Objects + +empty3.frag +Warning, version 110 is not yet complete; most features are present, but a few are missing. + +0:? Sequence +0:? Linker Objects + + +Linked fragment stage: + +ERROR: Linking fragment stage: Cannot mix ES profile with non-ES profile shaders + +ERROR: Linking fragment stage: Cannot mix ES profile with non-ES profile shaders + +ERROR: Linking fragment stage: Missing entry point: Each stage requires one "void main()" entry point + +0:? Sequence +0:? Linker Objects + diff --git a/Test/baseResults/versionsClean.frag.out b/Test/baseResults/versionsClean.frag.out index 19082c34..783d469c 100644 --- a/Test/baseResults/versionsClean.frag.out +++ b/Test/baseResults/versionsClean.frag.out @@ -1,5 +1,6 @@ ERROR: #version: statement must appear first in es-profile shader; before comments or newlines -ERROR: 1 compilation errors. No code generated. +ERROR: 0:34: '#version' : must occur first in shader +ERROR: 2 compilation errors. No code generated. ERROR: node is still EOpNull! 0:41 Function Definition: main( (void) diff --git a/Test/empty.frag b/Test/empty.frag new file mode 100644 index 00000000..e69de29b diff --git a/Test/empty2.frag b/Test/empty2.frag new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/Test/empty2.frag @@ -0,0 +1 @@ + diff --git a/Test/empty3.frag b/Test/empty3.frag new file mode 100644 index 00000000..14cd83d7 --- /dev/null +++ b/Test/empty3.frag @@ -0,0 +1 @@ +#version 110 diff --git a/Test/runtests b/Test/runtests index 0bde19ee..5f0e9411 100644 --- a/Test/runtests +++ b/Test/runtests @@ -41,6 +41,7 @@ runLinkTest recurse1.vert recurse1.frag recurse2.frag runLinkTest 300link.frag runLinkTest 300link2.frag runLinkTest 300link3.frag +runLinkTest empty.frag empty2.frag empty3.frag # # multi-threaded test diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 7abc7bee..77100a86 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -35,6 +35,7 @@ // #include "ParseHelper.h" +#include "Scan.h" #include "osinclude.h" #include @@ -51,12 +52,10 @@ TParseContext::TParseContext(TSymbolTable& symt, TIntermediate& interm, bool pb, intermediate(interm), symbolTable(symt), infoSink(is), language(L), version(v), profile(p), forwardCompatible(fc), messages(m), contextPragma(true, false), loopNestingLevel(0), structNestingLevel(0), - tokensBeforeEOF(false), - numErrors(0), parsingBuiltins(pb), afterEOF(false) + tokensBeforeEOF(false), currentScanner(0), + numErrors(0), parsingBuiltins(pb), afterEOF(false), + anyIndexLimits(false) { - currentLoc.line = 1; - currentLoc.string = 0; - // ensure we always have a linkage node, even if empty, to simplify tree topology algorithms linkage = new TIntermAggregate; @@ -106,43 +105,9 @@ TParseContext::TParseContext(TSymbolTable& symt, TIntermediate& interm, bool pb, globalOutputDefaults.layoutStream = 0; } -// -// Parse an array of strings using yyparse, going through the -// preprocessor to tokenize the shader strings, then through -// the GLSL scanner. -// -// Returns true for successful acceptance of the shader, false if any errors. -// -bool TParseContext::parseShaderStrings(TPpContext& ppContext, char* strings[], size_t lengths[], int numStrings) +void TParseContext::setLimits(const TLimits& L) { - // empty shaders are okay - if (! strings || numStrings == 0 || lengths[0] == 0) - return true; - - for (int i = 0; i < numStrings; ++i) { - if (! strings[i]) { - TSourceLoc loc; - loc.string = i; - loc.line = 1; - error(loc, "Null shader source string", "", ""); - - return false; - } - } - - if (getPreamble()) - ppContext.setPreamble(getPreamble(), strlen(getPreamble())); - ppContext.setShaderStrings(strings, lengths, numStrings); - - // TODO: desktop PP: a shader containing nothing but white space and comments is valid, even though it has no parse tokens - size_t len = 0; - while (strings[0][len] == ' ' || - strings[0][len] == '\t' || - strings[0][len] == '\n' || - strings[0][len] == '\r') { - if (++len >= lengths[0]) - return true; - } + limits = L; anyIndexLimits = ! limits.generalAttributeMatrixVectorIndexing || ! limits.generalConstantMatrixVectorIndexing || @@ -150,10 +115,21 @@ bool TParseContext::parseShaderStrings(TPpContext& ppContext, char* strings[], s ! limits.generalUniformIndexing || ! limits.generalVariableIndexing || ! limits.generalVaryingIndexing; +} +// +// Parse an array of strings using yyparse, going through the +// preprocessor to tokenize the shader strings, then through +// the GLSL scanner. +// +// Returns true for successful acceptance of the shader, false if any errors. +// +bool TParseContext::parseShaderStrings(TPpContext& ppContext, TInputScanner& input, bool versionWillBeError) +{ + currentScanner = &input; + ppContext.setInput(input, versionWillBeError); yyparse((void*)this); - - finalize(); + finalErrorCheck(); return numErrors == 0; } @@ -163,21 +139,21 @@ void TParseContext::parserError(const char *s) { if (afterEOF) { if (tokensBeforeEOF == 1) - error(currentLoc, "", "pre-mature EOF", s, ""); + error(getCurrentLoc(), "", "pre-mature EOF", s, ""); } else - error(currentLoc, "", "", s, ""); + error(getCurrentLoc(), "", "", s, ""); } void TParseContext::handlePragma(const char **tokens, int numTokens) { if (!strcmp(tokens[0], "optimize")) { if (numTokens != 4) { - error(currentLoc, "optimize pragma syntax is incorrect", "#pragma", ""); + error(getCurrentLoc(), "optimize pragma syntax is incorrect", "#pragma", ""); return; } if (strcmp(tokens[1], "(")) { - error(currentLoc, "\"(\" expected after 'optimize' keyword", "#pragma", ""); + error(getCurrentLoc(), "\"(\" expected after 'optimize' keyword", "#pragma", ""); return; } @@ -186,22 +162,22 @@ void TParseContext::handlePragma(const char **tokens, int numTokens) else if (!strcmp(tokens[2], "off")) contextPragma.optimize = false; else { - error(currentLoc, "\"on\" or \"off\" expected after '(' for 'optimize' pragma", "#pragma", ""); + error(getCurrentLoc(), "\"on\" or \"off\" expected after '(' for 'optimize' pragma", "#pragma", ""); return; } if (strcmp(tokens[3], ")")) { - error(currentLoc, "\")\" expected to end 'optimize' pragma", "#pragma", ""); + error(getCurrentLoc(), "\")\" expected to end 'optimize' pragma", "#pragma", ""); return; } } else if (!strcmp(tokens[0], "debug")) { if (numTokens != 4) { - error(currentLoc, "debug pragma syntax is incorrect", "#pragma", ""); + error(getCurrentLoc(), "debug pragma syntax is incorrect", "#pragma", ""); return; } if (strcmp(tokens[1], "(")) { - error(currentLoc, "\"(\" expected after 'debug' keyword", "#pragma", ""); + error(getCurrentLoc(), "\"(\" expected after 'debug' keyword", "#pragma", ""); return; } @@ -210,12 +186,12 @@ void TParseContext::handlePragma(const char **tokens, int numTokens) else if (!strcmp(tokens[2], "off")) contextPragma.debug = false; else { - error(currentLoc, "\"on\" or \"off\" expected after '(' for 'debug' pragma", "#pragma", ""); + error(getCurrentLoc(), "\"on\" or \"off\" expected after '(' for 'debug' pragma", "#pragma", ""); return; } if (strcmp(tokens[3], ")")) { - error(currentLoc, "\")\" expected to end 'debug' pragma", "#pragma", ""); + error(getCurrentLoc(), "\")\" expected to end 'debug' pragma", "#pragma", ""); return; } } else { @@ -2282,7 +2258,7 @@ void TParseContext::inductiveLoopCheck(TSourceLoc loc, TIntermNode* init, TInter // // Do any additional error checking, etc., once we know the parsing is done. // -void TParseContext::finalize() +void TParseContext::finalErrorCheck() { // Check on array indexes for ES 2.0 (version 100) limitations. for (size_t i = 0; i < needsIndexLimitationChecking.size(); ++i) diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index eab5fb7d..4f9e0537 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -40,6 +40,7 @@ #include "../Include/ShHandle.h" #include "SymbolTable.h" #include "localintermediate.h" +#include "Scan.h" namespace glslang { @@ -64,9 +65,10 @@ public: TParseContext(TSymbolTable&, TIntermediate&, bool parsingBuiltins, int version, EProfile, EShLanguage, TInfoSink&, bool forwardCompatible = false, EShMessages messages = EShMsgDefault); -public: - bool parseShaderStrings(TPpContext&, char* strings[], size_t strLen[], int numStrings); + void setLimits(const TLimits&); + bool parseShaderStrings(TPpContext&, TInputScanner& input, bool versionWillBeError = false); void parserError(const char *s); // for bison's yyerror + const char* getPreamble(); void C_DECL error(TSourceLoc, const char *szReason, const char *szToken, const char *szExtraInfoFormat, ...); @@ -163,6 +165,9 @@ public: TPpContext* getPpContext() const { return ppContext; } void addError() { ++numErrors; } int getNumErrors() const { return numErrors; } + const TSourceLoc& getCurrentLoc() const { return currentScanner->getSourceLoc(); } + void setCurrentLine(int line) { currentScanner->setLine(line); } + void setCurrentString(int string) { currentScanner->setString(string); } // The following are implemented in Versions.cpp to localize version/profile/stage/extensions control void initializeExtensionBehavior(); @@ -177,14 +182,13 @@ public: void doubleCheck(TSourceLoc, const char* op); protected: - const char* getPreamble(); void nonInitConstCheck(TSourceLoc, TString& identifier, TType& type); TVariable* declareNonArray(TSourceLoc, TString& identifier, TType&, bool& newDeclaration); void declareArray(TSourceLoc, TString& identifier, const TType&, TSymbol*&, bool& newDeclaration); TIntermNode* executeInitializer(TSourceLoc, TString& identifier, TIntermTyped* initializer, TVariable* variable); TIntermTyped* convertInitializerList(TSourceLoc, const TType&, TIntermTyped* initializer); TOperator mapTypeToConstructorOp(const TType&); - void finalize(); + void finalErrorCheck(); public: // @@ -213,13 +217,13 @@ public: TQualifier currentBlockQualifier; TIntermAggregate *linkage; // aggregate node of objects the linker may need, if not referenced by the rest of the AST TPrecisionQualifier defaultPrecision[EbtNumTypes]; - TSourceLoc currentLoc; bool tokensBeforeEOF; TLimits limits; protected: TScanContext* scanContext; TPpContext* ppContext; + TInputScanner* currentScanner; int numErrors; // number of compile-time errors encountered bool parsingBuiltins; // true if parsing built-in symbols/functions TMap extensionBehavior; // for each extension string, what its current behavior is set to diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index 2866c7b9..4f0d4af6 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -40,12 +40,12 @@ #include -#include "Scan.h" #include "../Include/Types.h" #include "SymbolTable.h" #include "glslang_tab.cpp.h" #include "ParseHelper.h" #include "ScanContext.h" +#include "Scan.h" // preprocessor includes #include "preprocessor/PpContext.h" @@ -54,37 +54,37 @@ namespace glslang { // read past any white space -void ConsumeWhiteSpace(TInputScanner& input, bool& foundNonSpaceTab) +void TInputScanner::consumeWhiteSpace(bool& foundNonSpaceTab) { - char c = input.peek(); // don't accidentally consume anything other than whitespace + char c = peek(); // don't accidentally consume anything other than whitespace while (c == ' ' || c == '\t' || c == '\r' || c == '\n') { if (c == '\r' || c == '\n') foundNonSpaceTab = true; - input.get(); - c = input.peek(); + get(); + c = peek(); } } // return true if a comment was actually consumed -bool ConsumeComment(TInputScanner& input) +bool TInputScanner::consumeComment() { - if (input.peek() != '/') + if (peek() != '/') return false; - input.get(); // consume the '/' - char c = input.peek(); + get(); // consume the '/' + char c = peek(); if (c == '/') { // a '//' style comment - input.get(); // consume the second '/' - c = input.get(); + get(); // consume the second '/' + c = get(); do { while (c > 0 && c != '\\' && c != '\r' && c != '\n') - c = input.get(); + c = get(); if (c <= 0 || c == '\r' || c == '\n') { while (c == '\r' || c == '\n') - c = input.get(); + c = get(); // we reached the end of the comment break; @@ -92,30 +92,30 @@ bool ConsumeComment(TInputScanner& input) // it's a '\', so we need to keep going, after skipping what's escaped // read the skipped character - c = input.get(); + c = get(); // if it's a two-character newline, skip both characters - if (c == '\r' && input.peek() == '\n') - input.get(); - c = input.get(); + if (c == '\r' && peek() == '\n') + get(); + c = get(); } } while (true); // put back the last non-comment character if (c > 0) - input.unget(); + unget(); return true; } else if (c == '*') { // a '/*' style comment - input.get(); // consume the '*' - c = input.get(); + get(); // consume the '*' + c = get(); do { while (c > 0 && c != '*') - c = input.get(); + c = get(); if (c == '*') { - c = input.get(); + c = get(); if (c == '/') break; // end of comment // not end of comment @@ -126,26 +126,26 @@ bool ConsumeComment(TInputScanner& input) return true; } else { // it's not a comment, put the '/' back - input.unget(); + unget(); return false; } } // skip whitespace, then skip a comment, rinse, repeat -void ConsumeWhitespaceComment(TInputScanner& input, bool& foundNonSpaceTab) +void TInputScanner::consumeWhitespaceComment(bool& foundNonSpaceTab) { do { - ConsumeWhiteSpace(input, foundNonSpaceTab); + consumeWhiteSpace(foundNonSpaceTab); // if not starting a comment now, then done - char c = input.peek(); + char c = peek(); if (c != '/' || c < 0) return; // skip potential comment foundNonSpaceTab = true; - if (! ConsumeComment(input)) + if (! consumeComment()) return; } while (true); @@ -159,9 +159,9 @@ void ConsumeWhitespaceComment(TInputScanner& input, bool& foundNonSpaceTab) // is that scanning will start anew, following the rules for the chosen version/profile, // and with a corresponding parsing context. // -bool ScanVersion(TInputScanner& input, int& version, EProfile& profile) +bool TInputScanner::scanVersion(int& version, EProfile& profile) { - // This function doesn't have to get all the semantics correct, + // This function doesn't have to get all the semantics correct, // just find the #version if there is a correct one present. // The preprocessor will have the responsibility of getting all the semantics right. @@ -169,43 +169,43 @@ bool ScanVersion(TInputScanner& input, int& version, EProfile& profile) profile = ENoProfile; bool foundNonSpaceTab = false; - ConsumeWhitespaceComment(input, foundNonSpaceTab); + consumeWhitespaceComment(foundNonSpaceTab); // # - if (input.get() != '#') + if (get() != '#') return true; // whitespace char c; do { - c = input.get(); + c = get(); } while (c == ' ' || c == '\t'); - if ( c != 'v' || - input.get() != 'e' || - input.get() != 'r' || - input.get() != 's' || - input.get() != 'i' || - input.get() != 'o' || - input.get() != 'n') + if ( c != 'v' || + get() != 'e' || + get() != 'r' || + get() != 's' || + get() != 'i' || + get() != 'o' || + get() != 'n') return true; // whitespace do { - c = input.get(); + c = get(); } while (c == ' ' || c == '\t'); // version number while (c >= '0' && c <= '9') { version = 10 * version + (c - '0'); - c = input.get(); + c = get(); } if (version == 0) return true; // whitespace while (c == ' ' || c == '\t') - c = input.get(); + c = get(); // profile const int maxProfileLength = 13; // not including any 0 @@ -215,7 +215,7 @@ bool ScanVersion(TInputScanner& input, int& version, EProfile& profile) if (c < 0 || c == ' ' || c == '\t' || c == '\n' || c == '\r') break; profileString[profileLength] = c; - c = input.get(); + c = get(); } if (c > 0 && c != ' ' && c != '\t' && c != '\n' && c != '\r') return true; diff --git a/glslang/MachineIndependent/Scan.h b/glslang/MachineIndependent/Scan.h index 9d600fc9..fb050372 100644 --- a/glslang/MachineIndependent/Scan.h +++ b/glslang/MachineIndependent/Scan.h @@ -33,6 +33,8 @@ //ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE //POSSIBILITY OF SUCH DAMAGE. // +#ifndef _GLSLANG_SCAN_INCLUDED_ +#define _GLSLANG_SCAN_INCLUDED_ #include "Versions.h" @@ -44,7 +46,17 @@ namespace glslang { // class TInputScanner { public: - TInputScanner(int n, const char* const i[], size_t L[]) : numSources(n), sources(i), lengths(L), currentSource(0), currentChar(0) { } + TInputScanner(int n, const char* const s[], size_t L[], int b = 0) : + numSources(n), sources(s), lengths(L), currentSource(0), currentChar(0), stringBias(b) + { + loc = new TSourceLoc[numSources]; + loc[currentSource].string = -stringBias; + loc[currentSource].line = 1; + } + virtual ~TInputScanner() + { + delete [] loc; + } // return of -1 means end of strings, // anything else is the next character @@ -56,23 +68,13 @@ public: return -1; char ret = sources[currentSource][currentChar]; + if (ret == '\n') + ++loc[currentSource].line; advance(); return ret; } - // advance one character - void advance() - { - ++currentChar; - if (currentChar >= static_cast(lengths[currentSource])) { - ++currentSource; - currentChar = 0; - while (currentSource < numSources && lengths[currentSource] == 0) - ++currentSource; - } - } - // retrieve the next character, no advance char peek() { @@ -95,21 +97,58 @@ public: if (currentChar < 0) currentChar = 0; } + if (peek() == '\n') + --loc[currentSource].line; } + // for #line override + void setLine(int newLine) { loc[currentSource].line = newLine; } + void setString(int newString) { loc[currentSource].string = newString; } + + const TSourceLoc& getSourceLoc() const { return loc[currentSource]; } + + void consumeWhiteSpace(bool& foundNonSpaceTab); + bool consumeComment(); + void consumeWhitespaceComment(bool& foundNonSpaceTab); + bool scanVersion(int& version, EProfile& profile); + protected: + + // advance one character + void advance() + { + ++currentChar; + if (currentChar >= static_cast(lengths[currentSource])) { + ++currentSource; + if (currentSource < numSources) { + loc[currentSource].string = loc[currentSource - 1].string + 1; + loc[currentSource].line = 1; + } + while (currentSource < numSources && lengths[currentSource] == 0) { + ++currentSource; + if (currentSource < numSources) { + loc[currentSource].string = loc[currentSource - 1].string + 1; + loc[currentSource].line = 1; + } + } + currentChar = 0; + } + } + int numSources; // number of strings in source const char* const *sources; // array of strings const size_t *lengths; // length of each string int currentSource; int currentChar; + + // This is for reporting what string/line an error occurred on, and can be overridden by #line. + // It remembers the last state of each source string as it is left for the next one, so unget() + // can restore that state. + TSourceLoc* loc; // an array + + int stringBias; // the first string that is the user's string number 0 }; -// TODO: The location of these is still pending a grand design for going to a singular -// scanner for version finding, preprocessing, and tokenizing: -void ConsumeWhiteSpace(TInputScanner& input, bool& foundNonSpaceTab); -bool ConsumeComment(TInputScanner& input); -void ConsumeWhitespaceComment(TInputScanner& input, bool& foundNonSpaceTab); -bool ScanVersion(TInputScanner& input, int& version, EProfile& profile); - } // end namespace glslang + +#endif // _GLSLANG_SCAN_INCLUDED_ diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index fe5c5a3c..9f8bc17a 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -143,7 +143,8 @@ bool InitializeSymbolTable(const TString& builtIns, int version, EProfile profil builtInShaders[0] = builtIns.c_str(); builtInLengths[0] = builtIns.size(); - if (! parseContext.parseShaderStrings(ppContext, const_cast(builtInShaders), builtInLengths, 1) != 0) { + TInputScanner input(1, builtInShaders, builtInLengths); + if (! parseContext.parseShaderStrings(ppContext, input) != 0) { infoSink.info.message(EPrefixInternalError, "Unable to parse built-ins"); printf("Unable to parse built-ins\n%s\n", infoSink.info.c_str()); @@ -420,27 +421,42 @@ bool CompileDeferred( if (! InitThread()) return false; - if (numStrings == 0) - return true; - // This must be undone (.pop()) by the caller, after it finishes consuming the created tree. GetThreadPoolAllocator().push(); + + if (numStrings == 0) + return true; - // move to length-based strings, rather than null-terminated strings - size_t* lengths = new size_t[numStrings]; + // Move to length-based strings, rather than null-terminated strings. + // Also, add strings to include the preamble and to ensure the shader is not null, + // which lets the grammar accept what was a null (post preprocessing) shader. + // + // Shader will look like + // string 0: preamble + // string 1...numStrings: user's shader + // string numStrings+1: "int;" + // + size_t* lengths = new size_t[numStrings + 2]; + const char** strings = new const char*[numStrings + 2]; for (int s = 0; s < numStrings; ++s) { + strings[s + 1] = shaderStrings[s]; if (inputLengths == 0 || inputLengths[s] < 0) - lengths[s] = strlen(shaderStrings[s]); + lengths[s + 1] = strlen(shaderStrings[s]); else - lengths[s] = inputLengths[s]; + lengths[s + 1] = inputLengths[s]; } + // First, without using the preprocessor or parser, find the #version, so we know what + // symbol tables, processing rules, etc. to set up. This does not need the extra strings + // outlined above, just the user shader. int version; EProfile profile; - glslang::TInputScanner input(numStrings, shaderStrings, lengths); - bool versionNotFirst = ScanVersion(input, version, profile); + glslang::TInputScanner userInput(numStrings, &strings[1], &lengths[1]); // no preamble + bool versionNotFirst = userInput.scanVersion(version, profile); + bool versionNotFound = version == 0; bool goodVersion = DeduceVersionProfile(compiler->infoSink, compiler->getLanguage(), versionNotFirst, defaultVersion, version, profile); - + bool versionWillBeError = (versionNotFound || (profile == EEsProfile && versionNotFirst)); + intermediate.setVersion(version); intermediate.setProfile(profile); SetupBuiltinSymbolTable(version, profile); @@ -458,31 +474,36 @@ bool CompileDeferred( // Add built-in symbols that are potentially context dependent; // they get popped again further down. AddContextSpecificSymbols(resources, compiler->infoSink, symbolTable, version, profile, compiler->getLanguage()); + + // + // Now we can process the full shader under proper symbols and rules. + // TParseContext parseContext(symbolTable, intermediate, false, version, profile, compiler->getLanguage(), compiler->infoSink, forwardCompatible, messages); glslang::TScanContext scanContext(parseContext); TPpContext ppContext(parseContext); parseContext.setScanContext(&scanContext); parseContext.setPpContext(&ppContext); - parseContext.limits = resources->limits; + parseContext.setLimits(resources->limits); if (! goodVersion) parseContext.addError(); parseContext.initializeExtensionBehavior(); - // - // Parse the application's shaders. All the following symbol table - // work will be throw-away, so push a new allocation scope that can - // be thrown away, then push a scope for the current shader's globals. - // bool success = true; - symbolTable.push(); - if (! symbolTable.atGlobalLevel()) - parseContext.infoSink.info.message(EPrefixInternalError, "Wrong symbol table level"); + // Fill in the strings as outlined above. + strings[0] = parseContext.getPreamble(); + lengths[0] = strlen(strings[0]); + strings[numStrings + 1] = "\n int;"; + lengths[numStrings + 1] = strlen(strings[numStrings + 1]); + TInputScanner fullInput(numStrings + 2, strings, lengths, 1); - bool ret = parseContext.parseShaderStrings(ppContext, const_cast(shaderStrings), lengths, numStrings); - if (! ret) + // Push a new symbol allocation scope that can for the shader's globals. + symbolTable.push(); + + // Parse the full shader. + if (! parseContext.parseShaderStrings(ppContext, fullInput, versionWillBeError)) success = false; intermediate.addSymbolLinkageNodes(parseContext.linkage, parseContext.language, symbolTable); @@ -503,6 +524,7 @@ bool CompileDeferred( intermediate.outputTree(parseContext.infoSink); delete [] lengths; + delete [] strings; return success; } diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index f6cf13fa..8b9680f8 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -330,14 +330,14 @@ void TParseContext::updateExtensionBehavior(const char* extName, const char* beh else if (! strcmp("warn", behaviorString)) behavior = EBhWarn; else - error(currentLoc, "behavior not supported", "#extension", behaviorString); + error(getCurrentLoc(), "behavior not supported", "#extension", behaviorString); // Update the current behavior TMap::iterator iter; if (! strcmp(extName, "all")) { // special case for the 'all' extension; apply it to every extension present if (behavior == EBhRequire || behavior == EBhEnable) { - error(currentLoc, "extension 'all' cannot have 'require' or 'enable' behavior", "#extension", ""); + error(getCurrentLoc(), "extension 'all' cannot have 'require' or 'enable' behavior", "#extension", ""); return; } else { for (iter = extensionBehavior.begin(); iter != extensionBehavior.end(); ++iter) @@ -349,12 +349,12 @@ void TParseContext::updateExtensionBehavior(const char* extName, const char* beh if (iter == extensionBehavior.end()) { switch (behavior) { case EBhRequire: - error(currentLoc, "extension not supported", "#extension", extName); + error(getCurrentLoc(), "extension not supported", "#extension", extName); break; case EBhEnable: case EBhWarn: case EBhDisable: - warn(currentLoc, "extension not supported", "#extension", extName); + warn(getCurrentLoc(), "extension not supported", "#extension", extName); break; default: assert(0 && "unexpected behavior"); diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp index 5b4d83ce..aa2ab671 100644 --- a/glslang/MachineIndependent/preprocessor/Pp.cpp +++ b/glslang/MachineIndependent/preprocessor/Pp.cpp @@ -134,7 +134,7 @@ int TPpContext::FinalCPP() mem_FreePool(pool); if (ifdepth) - parseContext.error(parseContext.currentLoc, "missing #endif", "#if", ""); + parseContext.error(parseContext.getCurrentLoc(), "missing #endif", "#if", ""); return 1; } @@ -552,21 +552,21 @@ int TPpContext::CPPline(TPpToken * ppToken) return token; } else if (token == CPP_INTCONSTANT) { - parseContext.currentLoc.line = atoi(ppToken->name); + parseContext.setCurrentLine(atoi(ppToken->name)); token = currentInput->scan(this, currentInput, ppToken); if (token == CPP_INTCONSTANT) { - parseContext.currentLoc.string = atoi(ppToken->name); + parseContext.setCurrentString(atoi(ppToken->name)); token = currentInput->scan(this, currentInput, ppToken); if (token != '\n') - parseContext.error(parseContext.currentLoc, "cannot be followed by more than two integral literals", "#line", ""); + parseContext.error(parseContext.getCurrentLoc(), "cannot be followed by more than two integral literals", "#line", ""); } else if (token == '\n') return token; else - parseContext.error(parseContext.currentLoc, "second argument can only be an integral literal", "#line", ""); + parseContext.error(parseContext.getCurrentLoc(), "second argument can only be an integral literal", "#line", ""); } else - parseContext.error(parseContext.currentLoc, "first argument can only be an integral literal", "#line", ""); + parseContext.error(parseContext.getCurrentLoc(), "first argument can only be an integral literal", "#line", ""); return token; } @@ -662,8 +662,8 @@ int TPpContext::CPPversion(TPpToken * ppToken) { int token = currentInput->scan(this, currentInput, ppToken); - if (notAVersionToken) - parseContext.error(ppToken->loc, "must occur before any other statement in the program", "#version", ""); + if (errorOnVersion) + parseContext.error(ppToken->loc, "must occur first in shader", "#version", ""); if (token == '\n') { parseContext.error(ppToken->loc, "must be followed by version number", "#version", ""); @@ -759,7 +759,6 @@ int TPpContext::readCPPline(TPpToken * ppToken) } else { parseContext.error(ppToken->loc, "#else after a #else", "#else", ""); ifdepth = 0; - notAVersionToken = true; return 0; } } else if (ppToken->atom == elifAtom) { @@ -805,8 +804,6 @@ int TPpContext::readCPPline(TPpToken * ppToken) token = currentInput->scan(this, currentInput, ppToken); } - notAVersionToken = ! isVersion; - return token; } // readCPPline @@ -931,7 +928,7 @@ int TPpContext::MacroExpand(int atom, TPpToken* ppToken, int expandUndef) int depth = 0; if (atom == __LINE__Atom) { - ppToken->ival = parseContext.currentLoc.line; + ppToken->ival = parseContext.getCurrentLoc().line; sprintf(ppToken->name, "%d", ppToken->ival); UngetToken(CPP_INTCONSTANT, ppToken); @@ -939,7 +936,7 @@ int TPpContext::MacroExpand(int atom, TPpToken* ppToken, int expandUndef) } if (atom == __FILE__Atom) { - ppToken->ival = parseContext.currentLoc.string; + ppToken->ival = parseContext.getCurrentLoc().string; sprintf(ppToken->name, "%d", ppToken->ival); UngetToken(CPP_INTCONSTANT, ppToken); @@ -964,8 +961,6 @@ int TPpContext::MacroExpand(int atom, TPpToken* ppToken, int expandUndef) in = (MacroInputSrc*)malloc(sizeof(*in)); memset(in, 0, sizeof(*in)); - in->base.line = currentInput->line; - in->base.name = currentInput->name; if ((! sym || sym->mac.undef) && expandUndef) { // push input diff --git a/glslang/MachineIndependent/preprocessor/PpContext.cpp b/glslang/MachineIndependent/preprocessor/PpContext.cpp index 40cf47f0..5290f0e0 100644 --- a/glslang/MachineIndependent/preprocessor/PpContext.cpp +++ b/glslang/MachineIndependent/preprocessor/PpContext.cpp @@ -84,7 +84,7 @@ NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace glslang { TPpContext::TPpContext(TParseContext& pc) : - preamble(0), strings(0), notAVersionToken(false), parseContext(pc) + preamble(0), strings(0), parseContext(pc) { InitAtomTable(); InitScanner(this); @@ -101,28 +101,17 @@ TPpContext::~TPpContext() delete [] preamble; } -void TPpContext::setPreamble(const char* p, size_t l) +void TPpContext::setInput(TInputScanner& input, bool versionWillBeError) { - if (p && l > 0) { - // preAmble could be a hard-coded string; make writable copy - // TODO: efficiency PP: make it not need writable strings - preambleLength = l; - preamble = new char[preambleLength + 1]; - memcpy(preamble, p, preambleLength + 1); // TODO: PP: assuming nul-terminated strings - ScanFromString(preamble); - currentString = -1; - } -} - -void TPpContext::setShaderStrings(char* s[], size_t l[], int n) -{ - strings = s; - lengths = l; - numStrings = n; - if (! preamble) { - ScanFromString(strings[0]); - currentString = 0; - } + StringInputSrc *in = (StringInputSrc *)malloc(sizeof(StringInputSrc)); + memset(in, 0, sizeof(StringInputSrc)); + in->input = &input; + in->base.scan = byte_scan; + in->base.getch = (int (*)(TPpContext*, InputSrc *, TPpToken *))str_getch; + in->base.ungetch = (void (*)(TPpContext*, InputSrc *, int, TPpToken *))str_ungetch; + in->base.prev = currentInput; + currentInput = &in->base; + errorOnVersion = versionWillBeError; } } // end namespace glslang diff --git a/glslang/MachineIndependent/preprocessor/PpContext.h b/glslang/MachineIndependent/preprocessor/PpContext.h index b19d8141..d130408f 100644 --- a/glslang/MachineIndependent/preprocessor/PpContext.h +++ b/glslang/MachineIndependent/preprocessor/PpContext.h @@ -95,6 +95,8 @@ public: char name[maxTokenLength+1]; }; +class TInputScanner; + // This class is the result of turning a huge pile of C code communicating through globals // into a class. This was done to allowing instancing to attain thread safety. // Don't expect too much in terms of OO design. @@ -104,7 +106,7 @@ public: virtual ~TPpContext(); void setPreamble(const char* preamble, size_t length); - void setShaderStrings(char* strings[], size_t lengths[], int numStrings); + void setInput(TInputScanner& input, bool versionWillBeError); const char* tokenize(TPpToken* ppToken); @@ -113,8 +115,6 @@ public: int (*scan)(TPpContext*, struct InputSrc *, TPpToken *); int (*getch)(TPpContext*, struct InputSrc *, TPpToken *); void (*ungetch)(TPpContext*, struct InputSrc *, int, TPpToken *); - int name; /* atom */ - int line; }; struct TokenBlock { @@ -177,7 +177,6 @@ protected: // Scanner data: int mostRecentToken; // Most recent token seen by the scanner int previous_token; - bool notAVersionToken; // used to make sure that #version is the first token seen in the file, if present TParseContext& parseContext; static const int maxMacroArgs = 64; @@ -195,6 +194,7 @@ protected: }; InputSrc *currentInput; + bool errorOnVersion; // // from Pp.cpp @@ -289,7 +289,7 @@ protected: // struct StringInputSrc { InputSrc base; - char *p; + TInputScanner* input; }; int InitScanner(TPpContext *cpp); static int str_getch(TPpContext*, StringInputSrc *in); diff --git a/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/glslang/MachineIndependent/preprocessor/PpScanner.cpp index 98f1608e..1352deb3 100644 --- a/glslang/MachineIndependent/preprocessor/PpScanner.cpp +++ b/glslang/MachineIndependent/preprocessor/PpScanner.cpp @@ -88,23 +88,7 @@ NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "PpContext.h" #include "PpTokens.h" - -namespace { - -using namespace glslang; - -int eof_scan(TPpContext*, TPpContext::InputSrc*, TPpToken*) -{ - return EOF; -} - -void noop(TPpContext*, TPpContext::InputSrc *in, int ch, TPpToken * ppToken) -{ -} - -TPpContext::InputSrc eof_inputsrc = { 0, &eof_scan, &eof_scan, &noop }; - -} // end anonymous namespace +#include "Scan.h" namespace glslang { @@ -115,79 +99,26 @@ int TPpContext::InitScanner(TPpContext *cpp) return 0; mostRecentToken = 0; - currentInput = &eof_inputsrc; + currentInput = 0; previous_token = '\n'; - notAVersionToken = false; - - return 1; -} // InitScanner - -/* -* str_getch() -* takes care of reading from multiple strings. -* returns the next-char from the input stream. -* returns EOF when the complete shader is parsed. -*/ -int TPpContext::str_getch(TPpContext* pp, StringInputSrc *in) -{ - for(;;) { - if (*in->p) { - if (*in->p == '\n') { - in->base.line++; - ++pp->parseContext.currentLoc.line; - } - return *in->p++; - } - if (pp->currentString < 0) { - // we only parsed the built-in pre-amble; start with clean slate for user code - pp->notAVersionToken = false; - } - if (++(pp->currentString) < pp->numStrings) { - free(in); - pp->parseContext.currentLoc.string = pp->currentString; - pp->parseContext.currentLoc.line = 1; - pp->ScanFromString(pp->strings[pp->currentString]); - in=(StringInputSrc*)pp->currentInput; - continue; - } else { - pp->currentInput = in->base.prev; - pp->currentString = 0; - free(in); - return EOF; - } - } -} // str_getch - -void TPpContext::str_ungetch(TPpContext* pp, StringInputSrc *in, int ch, TPpToken *type) -{ - if (in->p[-1] == ch)in->p--; - else { - *(in->p)='\0'; //this would take care of shifting to the previous string. - pp->currentString--; - pp->parseContext.currentLoc.string = pp->currentString; - } - if (ch == '\n') { - in->base.line--; - --pp->parseContext.currentLoc.line; - } -} // str_ungetch - -int TPpContext::ScanFromString(char *s) -{ - - StringInputSrc *in = (StringInputSrc *)malloc(sizeof(StringInputSrc)); - memset(in, 0, sizeof(StringInputSrc)); - in->p = s; - in->base.line = 1; - in->base.scan = byte_scan; - in->base.getch = (int (*)(TPpContext*, InputSrc *, TPpToken *))str_getch; - in->base.ungetch = (void (*)(TPpContext*, InputSrc *, int, TPpToken *))str_ungetch; - in->base.prev = currentInput; - currentInput = &in->base; return 1; } +int TPpContext::str_getch(TPpContext* pp, StringInputSrc *in) +{ + int ch = in->input->get(); + + if (ch == EOF) + free(in); + + return ch; +} + +void TPpContext::str_ungetch(TPpContext* pp, StringInputSrc *in, int ch, TPpToken *type) +{ + in->input->unget(); +} /////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////// Floating point constants: ///////////////////////////////// @@ -332,7 +263,7 @@ int TPpContext::byte_scan(TPpContext* pp, InputSrc *in, TPpToken * ppToken) ch = pp->currentInput->getch(pp, pp->currentInput, ppToken); } - ppToken->loc = pp->parseContext.currentLoc; + ppToken->loc = pp->parseContext.getCurrentLoc(); len = 0; switch (ch) { default: @@ -696,6 +627,7 @@ int TPpContext::byte_scan(TPpContext* pp, InputSrc *in, TPpToken * ppToken) return '.'; } case '/': + // TODO: preprocessor: use the Scan.cpp comment scanner ch = pp->currentInput->getch(pp, pp->currentInput, ppToken); if (ch == '/') { do { @@ -801,8 +733,6 @@ const char* TPpContext::tokenize(TPpToken* ppToken) if (token == '\n') continue; - notAVersionToken = true; - // expand macros if (token == CPP_IDENTIFIER && MacroExpand(ppToken->atom, ppToken, 0) == 1) continue; @@ -831,7 +761,7 @@ int TPpContext::check_EOF(int token) { if (token == EOF) { if (ifdepth > 0) - parseContext.error(parseContext.currentLoc, "missing #endif", "#if", ""); + parseContext.error(parseContext.getCurrentLoc(), "missing #endif", "#if", ""); return 1; } return 0; diff --git a/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/glslang/MachineIndependent/preprocessor/PpTokens.cpp index 1b4455a8..00a47a2b 100644 --- a/glslang/MachineIndependent/preprocessor/PpTokens.cpp +++ b/glslang/MachineIndependent/preprocessor/PpTokens.cpp @@ -306,7 +306,7 @@ int TPpContext::ReadToken(TokenStream *pTok, TPpToken *ppToken) char ch; ltoken = lReadByte(pTok); - ppToken->loc = parseContext.currentLoc; + ppToken->loc = parseContext.getCurrentLoc(); if (ltoken >= 0) { if (ltoken > 127) ltoken += 128; @@ -399,12 +399,9 @@ int TPpContext::scan_token(TPpContext* pp, TokenInputSrc *in, TPpToken * ppToken { int token = pp->ReadToken(in->tokens, ppToken); int (*final)(TPpContext *); - if (token == '\n') { - in->base.line++; - return token; - } if (token > 0) return token; + pp->currentInput = in->base.prev; final = in->final; free(in); @@ -418,10 +415,8 @@ int TPpContext::ReadFromTokenStream(TokenStream *ts, int name, int (*final)(TPpC { TokenInputSrc *in = (TokenInputSrc *) malloc(sizeof(TokenInputSrc)); memset(in, 0, sizeof(TokenInputSrc)); - in->base.name = name; in->base.prev = currentInput; in->base.scan = (int (*)(TPpContext*, InputSrc*, TPpToken*))scan_token; - in->base.line = 1; in->tokens = ts; in->final = final; RewindTokenStream(ts); @@ -449,8 +444,6 @@ void TPpContext::UngetToken(int token, TPpToken * ppToken) t->lval = *ppToken; t->base.scan = (int(*)(TPpContext*, struct InputSrc *, TPpToken *))reget_token; t->base.prev = currentInput; - t->base.name = currentInput->name; - t->base.line = currentInput->line; currentInput = &t->base; } diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 801d551c..2463ea2c 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -270,7 +270,7 @@ class TShader { public: explicit TShader(EShLanguage); virtual ~TShader(); - void setStrings(char** s, int n) { strings = s; numStrings = n; } + void setStrings(const char* const* s, int n) { strings = s; numStrings = n; } bool parse(const TBuiltInResource*, int defaultVersion, bool forwardCompatible, EShMessages); const char* getInfoLog(); const char* getInfoDebugLog(); @@ -280,7 +280,7 @@ protected: TCompiler* compiler; TIntermediate* intermediate; TInfoSink* infoSink; - char** strings; + const char* const* strings; int numStrings; friend class TProgram;