From dbcc57b7a6361a481954d249283bc2456bc0c799 Mon Sep 17 00:00:00 2001
From: MaxED <j.maxed@gmail.com>
Date: Thu, 17 Dec 2015 10:07:28 +0000
Subject: [PATCH] Fixed, Script Editor: file was marked as changed when
 changing script configurations. Fixed, Script Editor: in some cases clicking
 on an error in the errors list didn't navigate to the error location. Fixed,
 Script Editor: in some cases incorrect error line number was shown. Fixed,
 Text lump parsers: fixed a crash when trying to get a filename from a quoted
 string with missing closing quote. Fixed, Text lump parsers: in several cases
 parsing errors were ignored by overlaying data structures. Fixed: in some
 cases Thing Filter thing flags were cleared when switching game
 configurations in the "Game Configurations" window. Changed, PK3 reader:
 loading of files with invalid path chars is now skipped instead of skipping
 loading of the whole resource. Also more helpful warning message is now
 displayed. Updated SharpCompress library to v.0.11.2.0.

---
 Build/Compilers/BCC/bcc.cfg                   |   2 +
 Build/Compilers/Hexen/acc.cfg                 |   4 +
 Build/Compilers/ZDoom/acc.cfg                 |   4 +
 Build/Compilers/Zandronum/acc.cfg             |   4 +
 Build/SharpCompress.3.5.dll                   | Bin 418816 -> 419328 bytes
 Source/Core/Builder.csproj                    |   5 +-
 Source/Core/Compilers/AccCompiler.cs          |   3 +-
 Source/Core/Compilers/Compiler.cs             |  15 +-
 Source/Core/Compilers/NodesCompiler.cs        |   2 +-
 Source/Core/Config/ConfigurationInfo.cs       |   9 +-
 Source/Core/Controls/ScriptDocumentTab.cs     |  47 ++-
 Source/Core/Controls/ScriptEditorControl.cs   |  10 +-
 Source/Core/Controls/ScriptFileDocumentTab.cs |  15 +-
 Source/Core/Data/DataManager.cs               |  90 +++--
 Source/Core/Data/PK3Reader.cs                 |  40 ++-
 Source/Core/Data/WADReader.cs                 |  45 +--
 Source/Core/Editing/ThingsFilter.cs           |  59 ++-
 Source/Core/GZBuilder/Data/ModelData.cs       |   6 +
 Source/Core/GZBuilder/Data/TextureData.cs     |   6 -
 Source/Core/GZBuilder/GZDoom/AcsParserSE.cs   |  67 ++--
 .../Core/GZBuilder/GZDoom/DecorateParserSE.cs |  46 ++-
 Source/Core/GZBuilder/GZDoom/GldefsParser.cs  | 335 +++++++++---------
 Source/Core/GZBuilder/GZDoom/MapinfoParser.cs | 145 ++++----
 .../Core/GZBuilder/GZDoom/ModeldefParser.cs   |  63 ++--
 .../Core/GZBuilder/GZDoom/ModeldefParserSE.cs |  48 +--
 .../GZBuilder/GZDoom/ModeldefStructure.cs     | 210 ++++++-----
 .../GZBuilder/GZDoom/ScriptTypeParserSE.cs    |  17 +-
 Source/Core/GZBuilder/md3/ModelReader.cs      |  18 +-
 Source/Core/General/ErrorLogger.cs            |  43 ++-
 Source/Core/General/MapManager.cs             |  13 +-
 Source/Core/ZDoom/ActorStructure.cs           | 119 +++----
 Source/Core/ZDoom/DecorateParser.cs           | 159 +++++----
 Source/Core/ZDoom/PatchStructure.cs           |  22 +-
 Source/Core/ZDoom/ReverbsParser.cs            |  15 +-
 Source/Core/ZDoom/SndSeqParser.cs             |   5 +
 Source/Core/ZDoom/StateStructure.cs           |  20 +-
 Source/Core/ZDoom/TextureStructure.cs         |  22 +-
 Source/Core/ZDoom/TexturesParser.cs           | 191 ++++++----
 Source/Core/ZDoom/VoxeldefParser.cs           |  28 +-
 Source/Core/ZDoom/ZDTextParser.cs             |  51 ++-
 40 files changed, 1113 insertions(+), 890 deletions(-)
 delete mode 100644 Source/Core/GZBuilder/Data/TextureData.cs

diff --git a/Build/Compilers/BCC/bcc.cfg b/Build/Compilers/BCC/bcc.cfg
index f9f1161e0..41f747bc4 100644
--- a/Build/Compilers/BCC/bcc.cfg
+++ b/Build/Compilers/BCC/bcc.cfg
@@ -9,5 +9,7 @@ compilers
 	{
 		interface = "AccCompiler";
 		program = "bcc.exe";
+		zcommon = "zcommon.acs";
+		std = "std.acs";
 	}
 }
diff --git a/Build/Compilers/Hexen/acc.cfg b/Build/Compilers/Hexen/acc.cfg
index eddbd7dc7..d20ad6610 100644
--- a/Build/Compilers/Hexen/acc.cfg
+++ b/Build/Compilers/Hexen/acc.cfg
@@ -9,5 +9,9 @@ compilers
 	{
 		interface = "AccCompiler";
 		program = "acc.exe";
+		zcommon = "common.acs";
+		zdefs = "defs.acs";
+		zspecial = "specials.acs";
+		zwvars = "wvars.acs";
 	}
 }
diff --git a/Build/Compilers/ZDoom/acc.cfg b/Build/Compilers/ZDoom/acc.cfg
index c001fc7cb..b3e100301 100644
--- a/Build/Compilers/ZDoom/acc.cfg
+++ b/Build/Compilers/ZDoom/acc.cfg
@@ -9,5 +9,9 @@ compilers
 	{
 		interface = "AccCompiler";
 		program = "acc.exe";
+		zcommon = "zcommon.acs";
+		zdefs = "zdefs.acs";
+		zspecial = "zspecial.acs";
+		zwvars = "zwvars.acs";
 	}
 }
diff --git a/Build/Compilers/Zandronum/acc.cfg b/Build/Compilers/Zandronum/acc.cfg
index 869a826ca..13eddf2e8 100644
--- a/Build/Compilers/Zandronum/acc.cfg
+++ b/Build/Compilers/Zandronum/acc.cfg
@@ -9,5 +9,9 @@ compilers
 	{
 		interface = "AccCompiler";
 		program = "acc.exe";
+		zcommon = "zcommon.acs";
+		zdefs = "zdefs.acs";
+		zspecial = "zspecial.acs";
+		zwvars = "zwvars.acs";
 	}
 }
diff --git a/Build/SharpCompress.3.5.dll b/Build/SharpCompress.3.5.dll
index 103de7822c1ee7a4c39e96e2796632199595a2d1..56828e26f04d5d20322f77b963d47ca1aff95a30 100644
GIT binary patch
delta 146439
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
QVCBsble8~*W4`5o0o5zci2wiq

delta 146098
zcmc$HcYIVu*Z<D!?%k5Q*<?3;({tHP0we+<N-xrsB5Hz25fnl6LRQg-^|C?iQpEe{
zRqTrO@v))Cj@Y}1kB`0<)W_a?SNMI;%-!7^z_<MM%LneAIp@sGnKNh3oN0G^o-gTn
zy5#(`tK*yBJ=9_Sz3brBSuD%pn5{S*_(y-a8*e&1_pX(S<8X@gD2`6&#_C}9Rf;1U
z@l*e%ILeJ`-eh#KMt|WENK^&zY~x%OV{?pqSR*^i*vV>2zCjN3Hv#{-!|gc#c&Fow
zET_Y14m^VoF{bg>j*!FQ_bXZ$ujW8Eb2yf{)M7;9C3vjlPFI{L)KWacidKe~qLt$r
zuP`3uWh`X8&Q(@vFlSYH1mL%#4wg@a`5fUYho1`X;Ldo+80IW1ssw?bD=saFith9)
zO^TvLjN_e+$tqy7LpiYyuWyrI5k+Qk#i>;TuGQe-(F6w`!GXu(fRF{qs=*iT%<*~G
zFK&G#`l3tLC96Azy2NWiL$#2}T_U+_kL1xxCs*r?kn0rIU~F)WXT`?9T?d95k+l0Z
zWCA1#(Q14SMOBS9cU?z6pw#{Vsv<NHp{OG`!0AAgnlQi<QIPnRERRzKAN~`;W?42r
zHEL{hSBEpW=Dlz&`%Kp&(q(Y=bc8E2w)a!Q;K*Jkq)cV@H<l~aHk?Rn!<88$qe^%{
z-?W7??EvFFr8=3xiL@ykQg}V8)8UBu6;Inc(Mq0xB>d4D?$kxV;cyOcITn)=;7^Fr
z&z)*3h<L6`ZNuAYtx)%Kq<I?2T&kaFICnUtx*SPIY;nGmbC+A&5BT^XJoLeMaL&~s
zcx&wh9!lU2JRn{a>~>5S#r{RX$gXggvOgs}01wrTYPhxG6yG!d<X#2b-?uI*nmlGp
zrg|uz;Rk{lNqmuDMBoIeA58`FjSeyjcx^Nh0Y~jjIC=w@%pg~AZ44p3TpNpbb5{4y
z87-#<5cS8K#1kFO^VqHs`fQnY8uYR=dMnq)0TEiVYCNS5KmrFM5Qly6_Yg?HRWI1L
zB{p_>{Yfj`q*S`e>2w5IMGu*-RhFUpD3eyniR!0FN1kI>sDij5O95`R%S6XPV>um5
zQjL{32*~F7GU2L&DFQx|%2b5n)9~mam_Vpm$X3=_Lu30@7{}PE83>809fCl7CLTQm
z5^yz#QiOFXBRa=Q3QO#l#c78T+<~s_a^M9cMqQb@mAk1L0VB&_S_zY!qJfr^jROsJ
zktP*y<IR@pWG9gf<{C6f;aV5P{2^I?(Hgf=y&q2DNwlkG;UTy_0)hB!JbDNu;A$?3
z?|L4e1BgBs4=Xq?6P!;$r+O4#(d3i=3sRSwhg{u->H<n~=l>=Jh!+y^ES@+T?<NmV
zP_a?2QWa3)1To~)lE+X~G%M6g{6XfFgeL^|yOc$U#E->8gL&{b$c!{70Z2qu)Z;{$
z$klu>svVCIl+r4KN(k*@(W7M9e3x<pAVO|x0IeH~o@pm-MsJe5Edv=>ms4hgx$`<|
z4z=5gxk7H3r8vb7#+ZRfu3L>8E!h=^oCsiZj<fr4=2)gtq{-(Di;*dxLF^|HB+z{X
zuuf^eUSkf01|G`8t*!vxs=T6EEErd0*NJYm>SW5CI^!t_#Q%mz4}k<+EuhM;L^LPX
z>eCVk_?1Zi$ZYLY1hYIgj=Ubp5eA(yRR=bEXUM0mLZJD{oqk`F;u9V3tx(hp<rc%V
zF)AmNOoF0;)SZkbY>@bqEu~_dh^^|OEQr6=2*hDZ{5=E`aJ3K=s3*5In6?Jk==CmP
zqnf-fVY6VXZh&~wBeIaLcDlo1{5wZYo`Dork)jiyiMS~8ECggHCeSK+$WAQUQ}+0?
zQ^e<_i3zld9u_g_lq5bEA(8WW2*{kzb+|x%uCY3|E=gvU%qy8$uso8dSuRwcMVmGS
zd1y&U6Efq@LiH)YqBfAal!yv!5U09$Pa5yuG`q+o@X*wB-s-D>?2*w6k|<46qJHn)
zo29P+i*~Ok&et08yvfQss_A;;@w__tYoF%T1xf+%D^`UH6>Wo2nQ!TVA}f#&Ac&ya
zi@<BvPF+dYT2Tf28Hzu^Ro2cU>=c6c48?PTVyKP6;yjQlrcnJd47Rg&7Fmp=@RgQ>
z_-y`w*7Fh1j^%l^jR-)&UFuYjd!=@Ny3_A%LL>s*TWP<tDbQG32M7&|RSt(s48J0v
zL`&lr0JE}^{Js@|8)le@X&2+c6H7e~S6dNJ9EW#gS6dbj=@jJtm?sp!)$dUJ3QwE>
zh<-dC3UXI(05lpLz#Zcq4hQ-x#)IPwtstBf33-AD<9|Yq@hc$+eF<e37P*F_yhsE>
z#3doX+9kvqWh?<JQ_hCuLrwFl6RYUARB`|%<9{HsE5)OJg2!+N-zu>xnrI{uz`3Be
zXiMX_U=`b7lohsiT#6EVR3KK-Lk*M3A&F<j@;pM~e#MfwCoOSLlj4E*epcZiDAhxS
zhp@|xKvB`)5R$1oNKeZKFh>K}f`JHd>6G(OlnYPXuL$+dN;TF+ckyC3>@g+^e=900
ztVAZ5D5$R^pA?C?_C{W8JW`aGGabeY*pRY*v39xfR?)!LD?pFtEma|3e-smru=*jy
ztzJdZO<cPgZ?y!qYRc-q!zud3h)^s@VC`Bw!UNNAJycV<8K9niBo2D07$aiZb%5o>
zntj^!#zUd{YN2YDaedBiTvO~C&hWu=(oMw^%h6V(R?G0V)QW;ot6(U8kEK@Kfavsq
zik(Q|IE6{YZj&nJbYOtDRBV}XTR5B)neYS=s_?C1+WVwpCn3stg0kWXib(algK!!F
z!#X7t>PG>geuU_wegcqDKT(uT{isS4E&VG7TTmO)KdUmb9!{O=A$vzPXh0X>>WvU)
zhFd@Eg4STHFD^^k1a=D2k-$#I+Y%TBWj}n_64**W^uOUDgw#tyDnoC03MIkDp&wF`
zEKjJ#=P7Af)qXwT=x`z*o}hHvKfsEvBLtD0oWwiU4Z#sWyM<5*Lh%H>v@an(?Iwb*
zB51M5DApfnifcC$=2S^fFMS1tO9WNezq8#+U{Q;4`Ejm30;a73S4}_;&8xY(6|j(h
zr-!Q#BJ>s}mo!?t!2QDyJ3M$fU>qp-RC76~)=2Guu2QXyuS?3<$wpRbsh{$Hi?Z5k
z^e?STid3046{4`UDM=kx!jh4YLsOQ;9_c)AkQ3EQ)R}Oi?gE##MCfXy305oV)JmuW
zS*jzs;{XK8L69kxCsu=k8oLK?tFb948~bV0fQ;@MK=jk_5RJVJP|?^fmTK%CqkmaV
zQY4JS#rEr`Qyx4)Y1DVpjdvzN!#dH$js}|IvhmI!OhTkeP*}Sixo{c8P@-rRSOYkr
zc!~NOtV?r0q$OIN)CP@98HWAIowKdXxs3@~h-mZmTzv+-%d{H0q(3yUvQJheR#rO;
z&=8cX)P*OhC6#DO6@LHSkx~U>Af*cVLKkWvWH}P`7<0=@*fYkc%F?8u%QQY^%`?rQ
zQ!9wZ7YM;JHL#FR-v*}kLjzkaqf^UR4J_3VmZ(qro&$omqJwziYy_+Zrl4%#m#qdq
z4-oxaJRqEP6kbbVGJns?#&$X|QdvFwY-4UkSyE)e6GW)KOD*(IYWEF@q7eug>wst}
zuH8zQ^@QOGDugE}5<e1tgnkyqi$wzT)Ostel~A<WeO%oECS*&zBwND4j9)7X$|-S5
z`g;f;OhWiOgzyDfM)-nroA60QLihq9SSH~M)-%E<J4?ca@GYt7BsImUlfabdVQFUp
z{msQ)>W2^tO~a$c8<i6<+}B2C*}a_$kcv9qM!c<dp`aX=-mu!m07R#UXp2{5Teuue
z=y>1^_GY8;QlxUaNLZ-<ozn9J(I=XT2@zCjT+*hY|7dqnLtIQ$VV%;n!v;H$f<W5c
zguIZDi3^S4RW(V<2Vp!<LQm(~x5y_p7vusI1xS<_o00-K33L&qk|pzmh$M(F?JK0#
zO^KwJem;eZ1s`a6)ndtF1}z`-cZ}P;dpB3#Ot=2)#&=cq<&^L*T79Ev^*5>2y98OL
z)rE{~txob6tu7Ek1k~z66q!~JKtPqU)vY$s4dapOX13P&s=5TLmfo8C;e|a`a}c}7
z2-KDpl7sJxAI0GVRlzBM0>HBxSzB6(G1}j3cf-h+@8gCU=htQ@dqD<=szkk)0@B5t
z2_}$PpMHHQ*eCVbgtw(W6qM@ozNJ3b0HV_a-THD0Unav>QuqoAQx|_rs+H66tOF~4
za`dLWvOMFQDA|qw@XH+M;(z;<c)&D@qIiO`(;fh$`n3q51qmKI4$V(-?Lop^MVJIV
z<)k#nii`mg(>&dkp5_rENyNmN5TSlGCFTiw>6cKrSQKGd3c-aeN?3}sx%xp`SKdR2
z#_#k1zHOT$Wwj}*eQOW|DpcqLVK@X`MukLqHWi{a5Gs^mgj7h>J)=ShiPnSRu-Zj7
ziBqR0QCvE;1{kHu1UVAb>6T7j3>opn^}th8Ux&BV)D)CW{e{)kHvpp315JGsg>R%V
zHSdSiyuksA<2z(7M<z<{SH^JwsCCIXYyUSMXjzdnPf%(#305q(_GZL+g7W7H3Tqx{
zFD7XJKsc5}6A_Bm;#`S07!eUd+e!*>3qm|WPc4RS(LBbYmKoVn%0!YhJ`<$L_#Bj?
zZ>9{wf-~VZ3l{4|3E@t`K`LcmCbUOT{D}FmA;QU~Y*LL*f=LKKrgcTOw${DgQ-=hy
z2a@rpc0n6j0++IO>Ngo$V+HKMy2dWwHk9XA%C$$0uNy}Uehjfyt&oUV^T<I>;*SH=
zLm&ZH;VQ&dVJ%)#<Pyab#zM7Lp`_Z=#yYhM?!&EWZT57iasBpxq6X@-#@lL%aYa8r
ziy6!N4PniAHiw@VMW;7Cir|l81LAojr(d-Vhe5%Aq75fEFJ9=I77I_5_64zdk->?y
zHk{nNc(HF<%s46Si(>O4gA-{}IHc&ad2tc1a=^!4M|IR+0@fNxUFvp<IMtW&qW0QB
zZ(7M00RUb}0Ym^p?Y{ufumU0sXA-ku743$ZFa}COQRfsS)H%5ZjraQtQY+)1&~S}R
zU!&wyiU^G6iPr&W_VBR!UxcBxI_{W-eCbbOo5-xIZvc&1?h|Ct)*_r-DNAe4;aqzY
z0QD`(fG6I@t6AadPQ1~DD9W{W@NDAH@32k<hJ@nD#rdp#SHRiib;`Yne%-&LP)=@`
ztPtiRWt#DO%%6M@pm;kRt(BZRwf`VS(^S7sVz7ikrjtsRMKTBUL&|Iq0U@36XM_YP
zkzkRLQ{)gV?oqx8`ZB8L2a*;Jn%hD1!$zu)`mS+hQwe+5xUZ=O&$pUNkEON`@dUkS
zeF3iqZ@4qty9BG<61e1u*4JR)1Yrhvq(zK2fY0U6@mUn9R3fX;fKO731;(7_x+F;*
zt@XM)HT(#1egr56rAZ2)A0xbyWBQ|#T-OSjR*}_ns?e3b@M?mGMN^8I5xjJ3!c81u
z4M(kl6>dl^QDEtnwN#hy#RJzqC34Ei7~WC=xy)`U_k9K!{0K;FbxVnldL(U$yztjs
zBGmC{OXNk`5;?q+l4JSlIf7y}p59pR`5Z6p3kyf)gK+fjgB#7mCF+*~s*i-FijEgM
zYH;U_L;4T4FSC3C<3yv>$9P+#6b0od^@BA^eF}(9547Uv6#k6DG)jF*qZDb#1dK}3
z2l?3exPN_8WWp1aC_x-(WE@p=?3n%qU_3!t&@u)w$rA)yH8y2aC#9_}fdpJwUF{)I
z>)%lNuudh!T9KCG+QWqTk}y1h*EpB{5k-mxS=j&fc?{iNCbCjcUufRO)gMuX6bIu{
z984A*7~2O_C!YWv?e)26ug|5{(%||XmG&(aP$CLw{~DTuObDcXPspzbDXPyC6xMzq
z=qTi1i_<O(NoduNgd7bdDr6-}NiI*0&r)DO8p(m7q{vYS<2x#+R0?AfIH0%`#@B?g
zGNZ6|FzTcojsaR9Lu~K_L8X|=EHUle-^$C%NXY0WuKr9ilC>jHK?f5q{!akQ3Ep=`
zLu-8vi99t{i;3M5h$SZMAhniX2^)dZLN7`DEvTGvPHUNm5ZT^RLini|vGnqj@l0!L
zQe>AI>4i$!MtV|R;l~MtPy-q&ggVerVZ%|o5Kgp@g_A8OD@r&aIe`;CU9qFxL3^6y
zJXrleb^)hOT|kMhfCQ<@c!I>KRYS1x2AFL1C*#hx896_LgJx$a<|%NfzZil2wkp2@
z693Kk_kJg0>M?oH#CEatdmLH?#rzM8zqCoxch>R2prZcdxo8>+ZcwxZc!}d5p@HSw
zp{ZQ`9au$M4ES0R|HDuRH?TixzEg#+iun$<Jj98NSTxFuv0%LmPz<8Q>TcuQ!Hsq^
z@gu5CX5t6DEi*wuX(o1~*=W7#CqQ(1Ap8r3f2J^*iC;h=%)}MwhW&*?{9xn_DNTw@
zc!CI3NWpSje?^oR>c7z|%o7w<FQoc$hJNyg0PB>ry_mW+PY_7MJl3!OPRIm3hyFo*
zQUrw%B2(G|ASIN@xgFzr5(HGr&`Sj^@h$<f(D()v8j7C<;bYh(HZ)AB{aK23HbB{N
zHzGM+pByE8mNoNf3cx{&3$+E~X}}c<xG*@v`}V6fkcGAo8Dn5eruP`_J2J8;kF<@J
z7^HM1`+G5`e@~2;3Xz0^?w$Q$>4apZV5rM>yuOPj<rwmn5Gb&``6u`=u5UkdASLe8
zYbziO%n9IrQ6@omz#VQ;0`Afl7Nvv^qiJZ_JdrBXIYn`{&PfU*I$(wm>SUs!?48Wv
zfPkovSxO}J$Ep8f+%R-zB_`Yco{8vQtLULNk%l-(=&^R6#*C7Vs)0U4wFK&7m!P%L
z@JPycfB-W4TuV9*DD+cHq!rFuP`|(9BvxSz*nhQsS$#JuLYlt|Z%gwj2+ha#mKWkA
z&1YUHl>-liofPIW?541b!qf|JW{rA*(}A984VIJ@ChRT%-1rZl*|7$0#()EIlA;uz
zpj>%^^0RdT4*|nEk+h$MG|+1T$u6LX6!dI@|3K-(ZG%A};gplmYn~v+;-^59^*^ab
z#UejU(z__@=>UnPdP-Kf?-V7e6toN^_?2u3g<C9!2p=h&SeaLhoMENqR8k*hYXJKN
zLfLj<5xzvIrq7r^tTZV|Ga4rHw`mwPjL@)5!K7hA4jBzY$k8e_%xWy18Vl=x)J~Yj
zQxhpTC*g9dBnr5R=i&v2$@p#9Q|Zk>%yOu(1ij^E;2XoMusZnr@K#o_rDa4dPm^|8
zr1X}gOGc?6HAW4G-QO|lAUvx^mqx-+O8d%^Q*4)~jl9t{dK$|yZXR6~AVcoaE{4fi
zdng(9Ka4j=4`F#ma7?3R$o)<ja@f@vtan(=hjQc0Nf;JAV9XlRW;f)1RF~A*hqtB9
z6qJTMV5xH!AUZvu&N&p$rZB0nU#hU%0T<0NSTvi@_<T%dQe?stM5w}c#PnQ*pmg+-
zTWom}K-ngafNXezAlj#7*9*b19w36SPC2!2kxES<t%#8MgiO$LC}t=y+Y}Ts$?+9;
zjWf<38%R>tJYg$<Xima>5`0iu@tr6uelsb&mq?36S>ddmM_R?k+GM^b^{0i?aWE<{
z`&0vA#pMPn*>Eiz^5$wDgs~G-AHn4+?A!V~h6$xFAf?YDTbXAxjcY8Y()uWU4XS_%
z8!W8P(8iVUf-K|U>XM|O%V@lisZHal?S#e)geaCYUKF3v_+sQeNNT**p0X*OIyI$&
zp<bgo9vub}bGr*bKLqqnmuFQ7m5ZNm^c!E63?tYx2ko?q9&`pVrWF7tPSpev$nt3a
zfGD%EtGyoic|96(QbZP-v2T0)<i6}N*=AT`hPeTE9ONin<nV)|AR@yY!xJKcaE@c;
zS;oJ|H;u!H?-v>-v`SiTWT6y>)deV()&SHJ&|p_vEyWwrGKyl2pq$>cMo?}Xcwj#t
zVTr2F_}hU!6(UB7=^#=jmj)cwQ7g==FXdrl<OG*7a6*uk7~>|iWLF}&bL~-Z-PB4W
zIiaC1;EoAL$$fWcYTvzT;;=&^NR!Q1Jqn2i-34y%QY;lg;uvuK>TZ;)lx!@WTiP}p
ziHgPiH%kd^RKgppFz7jEbsn4J6YDKOmow#3TyESxadaalvN(}Mr|=Gk?1rK>!-CKs
zuK^}2l#Sj0F!ugSCRGop1;pF5!=u$95R|H&%8iseDysY+v?Vr2oLZ@|WKwB%0}y(W
zdac@MoIj~L?-H=Q(mHy9m+{D?FuUA%eNrt`jXx$;1z{)|`9P;44RVj<qxAlhn^-?%
z_T=XJD6+dO;0bpIJpqrq^#gaRclg6}@DKke&s!(A`C`NoZPFN@O|BY`9Ta~sJCGgL
znh^?Q>t_&4k$kxdbvh!&*uBI{c*3*%N@b@&WvMNow^03!X;X$pU>5vAw~$W|E|E93
zD4=*$bevc~DOoq&xMfNQYc)Qe(&}#|N)Huc)E;zkE!9kG6WLMe0iU*CI#SgG@oR&O
zod*p}5}hS~?1&OigF%<=j1R#Jr>{ftb_9Zuj-pmWa~pPM2V6~_fGc$@$94cM=#Eu-
z;DT+$CMcEZj^rP?asCdC+7jMbC;4bN-O>7HD5%7Og2-5Za5<|p{&8@>fx<Rqy2DT;
zqVCW^Z|V*r0OMYVHYFopXSk=XZupsEm<lmR9x4Ub3#&i1FrZj_Qw5HWpX_hkGIjn4
zN{DeM3M^JUPQ4r~N)ovYI}Yg!D1G8G62k!~7c-+J(Nx@+GOaXk7;&S7yU?TizZV~F
zoHVVbcm!aHwMf(HhpuE{?dW34V5D)|v}!iWczIe08*O|p!a36^+&H~DGzN*BZCpWS
zo#dNsq9kLDInyf&MgoNrVzn|OMH^wPn?AUSz>%r}c{~BFc4?zUbRew`W&r7YzMdXN
z(ViI<9YojqN+>&4YL(*EsBG;W3=XumC|1Ez>4^6AbcN^4C`KkH&!{>=Wb#s^YTZKW
zFz)y`5C#?b@{n2{B6$sXHIhcq7Yh1gc>x9S@rVcfXnZ^azQlRpz4fC|5ND7A9zq-6
z&8VG2b!)vM6wHoIl(h+DYojQmoPZm-<Rsue;=Cas8;FDY<@5|AgPg?KDNH0X_o#WR
z34xy1N&PP+7$bg2Z9yg-vdp^>l*WyRjBY*<dFs?&JU)SfBwH>jrc;yf_(Xz|Mv%sZ
zXRfcuqKm&(iBG``CqeZq2$i6x%cC6xV2Iwvvoj6o^_)Y;xv`+(Uuk@KC{8&YTFnkN
z{&VOkJnIe{f#<@*4#V>SJTEZ{4sS%b<M1(ft~z`io{t}1joA!YgsVj%*W!srq*s^b
zF?Jt5TM<n;)tKLTyD|-w+886;)xfqI!@Ks6Ob4JDlSy?xITSMx({H7GPNk=Mh;eb(
zQS1Wa_pX!KbR#}%0IN1O&#K4s*;ykBXM$P`0P3L#1(gCtJ<O;$qJ8+`h^n1<WJj`v
z(Zb9!l8s9mU0N5QzR(7;DD}(fS=ECsHE+ji3j37Esals|98sM;3v^tSD*?tMN0hK5
zj5m&m=D?fr`>k<kmJyg8siJftk4E$uHQWwVmNu~h&MFMG4(x<Xn;i<scCcKZ$U?~F
z<k_vh*+`ScJ?fFhowEn|s}Q4+Or2wVJ3FMNC%EcLNQSF_!&99Ln&yMM-|^65H$k*{
zM*ky2Ng~eiiTN;If-1~?-G|`NtE`0j9_)%rQ)RBwGDc)dOJ1saz>xEdt06S%!E6f)
z6Y|I4$0(g#(dHxf9hV6k;0|~7FT%O<Y9wlXH|8gb&}GKsN0#}H0+rv5g%jhGBO6D{
zG~#lMTuW*FK;~bM{3k&^;`$0ag3L@F2lI$?>hDUWy1<w|r!d)%%;CO>$moG;Aripj
zA;$mbj71vtXqg0QoaA;pCa0L`#$wbmjaryj{T&GCit)jm<`D6)H_m9Bdu-?!5cfO^
zO%=8tbTqy;8rRM3gu3pUJ0i5l*bWLB>5W6?wP1)pZC-S*!T*7ICn$@MD-NagpFh|>
zdoF~_Nz;uW-qv)3f^zm;3OAW7bO;c=2oHpdDU6e?a=H-&g_tqtK|!aAA%v3Kwz#pZ
z>i7iz<qB+(4)p%Cc2oi~o}i54+fV^q07yWCEHEJzv2fO$#noaI^7b9bgC~lN$Wfsw
z5`8RHh?aZeVu|4tBv&*7)(a?45Sex~!0JVKbc*GgSc`<qq7gP$A61_u%AGU|p@3e1
z2j(7B5wS5!f%amt-zj#zX|TQLKWI>NQVi2Xo^p@S{s4m2X^;ht;R2bNF;G_a14<<R
zXs{AnUo<N?7>TgbVu@WRv11-wY>ZjZ0*l(cU=)njT?;x8{(3<qKsEx_<T}(Xtb|I{
z#YSXdS+3A+0W4Es5hg4=t_5yCDTsLC8h~md1&=R*q}0a{#8g_n2XE1_wd0KU78Z}E
zT$~}NwImi5HpUjenXC6AMHSXA94dApV@=tj=Q)L<TjW}QW5m%vOvTEmKWjU5LoRrF
z){5XCD4<!X+Pxc_Tu!C9lMZS7v%S);I+fB+U&u?x%u&HdQIZFXc(>rK9dDd=%v$!N
zk+*0Fo(C?vrx9}-|4OG+B1Jm^NwC;TFX>n+o{$IC(2Tlc56dBuWjnng7;U(_XC2$b
zmKk>)JDM#uem=Ga&(g(>c#dA&kUC+0!r~EZ{gzu7@6QTl|3P6mHw8|l&->?+2idX4
z{m1P;95)U9+6zEnu?ai%E=>R)+7qx1fLM{lHe_B#+tU5AXq;Bpp#&Ul?_T;8TW@q6
zUnlmc{VpXG$p*_yjvon@|8aa&j1W1+qK-kA%NO!dm5{c9ym`z`j31Am7RmIEtti(e
zJBCwx5RntmAB=@3473}Aawr@bgEG7=V?aT<_E2LPg9<=&dZ4Be3RhB?OjQ{f12UTT
zqX$TTl9Jm_M3_Ld(-JdIM2MV2OJaHzXwda28_|k-4FN)WExiO-i<2TGs*Dj@agyi|
z#<O%uSFv?(fhQ=Dkhxw>1oeU<yrfHJU!S1daI8UQO3$iKoDK($Nq>}uP080Vx5K_N
zC9Rq^*{zIRM(YIe!EpQaI?690pEX{bq|r8sR+WqpTpI<t6H<353iWzQVX;n4pf`vt
zWC9AOcGdP^nkPuEk_}lS^#c?oR!CBriuwx!XXQ$TH4WnlQK)!|_Qmo6{%MyJs}iY~
zQs!YHcwyJ51=^1hb`6$_uqiV}%_#vH(<RzVH8IDO7YlUK7BNan<AsSW881ssq=q<k
z(hyP#IVyI72IKBDo4C?Fm--9*7DZNhAQpJCz0H=h>6LTdmr)txkmWJ-{N(aO**4?V
z<x}yj@2<0JaX%DET8!I!DJ`a;)Z(b6#Zf?XdO(YtC>*0OX>n~zi?d<hu?~h=5hbU2
zVESaw$E3$!Nj(;MCli$Zq$i-+xKG0~F})e^80~8iL41q{3Pm7{fGzam35rR*?@xdP
zF(pjM(6_{pmyT;>aw~<o9lDKBHrk~25-G|of}Tn_YF{C)%N#|V^bmcBAflUOd7$VX
zZyTlx8JI0ck7dl##oOpKY1VA0WI7LxESxPLdsrHtE;(M4MUr%dI$2CqC!L8tfJ7m&
zxPnL#ffTwS1(zW4iS@;B+eDreV${Y$ywDn~xrsVYMAVimj>u6WpZXz+PInGL>ZRy`
zL@sIcMk+I`Q{#%hLV@;4*rE|<o(P-jD`Ln`LKhsfp)AyK1UA!ggo4;s2}wWEBV?~Z
zi&3w!)KY4sQzwm-rgQ=F#i$iXuc5%#A;z-lm0DNHVQ$3WB2GA|x=6YOJb|qlj6!bA
zbro%evFfDoq$W}UMNCb!K?vhII-%DuuAHTvOz~n3E9}?=7K=AZ)V|h(UT<Gbdgr9Z
zI$2P{k8&_N`Q_-tMO<99A^{oE6$ij4U9@5_n_^tCqCW3$C;%(6R13H)D~%m1YFNVf
zafQlGH7ZYD9^Qv*3umLwxc=nRkwfg1+L=0Xz-1Y(dceE33Nckds4v7NAjJZ$W6>1)
zgC%TNNJT@z$|Q;qX)1?jD}h_CIc1o)TEqBTzx`HhTd2>XzC9|CWD)8RiM|N=Ua)#H
z_6eq}u5gV7$e6b}l>CTrI1|thv|0}`Pe*9XN=K;o(RETHa|-Jp9d5;N37p1lEObh&
zOAKil;?<PYMl9xpG&$io@e^=3z+Hd~140e>s1ZEvw&}}I6IwNL@hb90*Da?wmUa5X
zv7m$a3~W71{O~>EBQo@w5nMC8l;ophQNxANdlJ3EI#vXP;vKhUVj-;r^2C9F(4sfJ
zaSiY3H4!6tdeHc7O$l3W6rR4Jq#9%vokrmlZME^>=`}g00fK>8q^{ob`RU&<Nc^oc
z569$uzq3wf-Nt=q-P<M_YB@c_ovZ037N2rGtvkb6v2vGZLx#ZR33vS+M8@W`lklAC
z&UuP0-}1#d9Sqzwo_7zc-m>$&C`0bPbvyDh$pU$l=CgID<Yr)0ma%O8Z6L1NaC`r5
zl<RQ3$MU~rUK#$yneTOpFiqL9isv{6ZBqr~=2)j0yEn`XXEK9bIusJJn0w^>u(A65
zfqN9T<&pERapj1%8%1(fkc)O<HOk+3;dLdHSI}GK!YH*)gnd?c%hZd8IFmvJ;8gc%
za=68P;+lwORAAX2@#P}UMFmit4)Z{bk4^{UlPij?-+o)F!{}!cTx}#hFx;CWzBLFr
zBeS$MTbeg1&cY2)bF8$2h%EH!ctb%BynJMCs^17u&z1`>FXU{Ear2dvd?Z*py`&rK
zt}F+v^r{uCd&|bFb}*l)bEte>e9O{nMzf+gDC?KgQ}J#JM2urQk6j%%9=mqp9zr!r
zH>-Psrfog}>acb5`)t{kYp?6?k+OAFiM}Jsam(<sEuY^~!1hd@b!(NaWpR%QHN!%w
zP`lB$4zrVYL50@cI%W^hmYugA!V0LMdZE=-4o8(^-fC^jnA=C~RoVr2H0^`b*nY=J
zLr7KXm($Y|Zo$zO7JhmD%d07ln{$Gx&J7uwD$KncbAjJ->YdA-O@z>iiYt-APSLhH
zY?x3xLY+wADh8QA4NLB6sw7$KCjly#U~s<1fhq*5gw&QB3+{Q@UQOyeS@%}#2|B*F
zbx+Vgd#CLQ+DF2{_crfIwfx=|sK{0K*7$_Q9t_L9<+*!LbcyDy-+p^aPkYWKrn_mt
z?0jgyy%tL@eJD~dCzUv|*e@q_WYI0=T2SCkNUelmwT*WkDrSp~UmmJ07xeCC7A^F<
znt~Q7ma#%^Ov{HnTs=rwZMvpwAK=#W#HGlriP7;?3Sn|Cttgd&&av*{vhYHPxqkZ{
zDdzRdi4G&;)`uVUqQm%Cy0GtY&eoBY;$Wo<bM}Gx-P^!+_l{ifo+kNt>&%jB^uX57
zET`RXxfV{2nflB}UT2L)^R_|k3}eBz{qekVTP&YcvWl+ht)-B9rt!wMiKEbg$wXfR
zJ`xk)c!<NYv?X)_7H9#)@y~5}D0weBF;<dOu<+4ESoMAW(I{;D&yQB&#C7pwjX5@Y
zt;d-1SY^Hqf{zzK;42>+>P-pIc;K-J*nIP`mi#Fhj)-oSQSx{hP=g*Hi07imt4hxT
zK~YN?oV%;RpjhaTpBXsYxcc$J=Hq|{*O%slYwTuF?F8N7^lb#0mOOZZsplB~dAzlP
z*7IVl5NiQ<!qaFf5DO$S0$~n(Vn3|Z9rMJZNzgQZb3Rwk!&~kmUP7LUdNH2Ctb#0c
zEfA|PBX-HvW^aL4Jq)15L0`b93TKJ70mxGdKRJM{G$uS*i|5iO`-MrP0`B#TqqC~+
z^x&>)I1~zn<Hs1cJULaJj@HuuiClT9&|3XY3Rek3elp=6pg8ou_Nk5iq{iI>h;-Zb
zbo)-j)d51rjklkwVV7L+v<Z*y;-??=P)_yBPd4U16UNodzddtui3I_iC#VRoQMTaa
zu9sJzyv6tIm26+m-G7LSt<Qx*g5^hvEuNs)`o+bwpxB>3S20O4xQ%$&K%P>RCmulr
zE<0%*9BzuGx)yvfL78&DM8pMI33qhH^MlZ1&whS1p3gmBh36N~Hxw-fI)<~qMC){U
zJKf$cC|lzTqfyZ%FRU*myyOb5>ti7D^28H(p>G$wI2oDDd9nBaB2v7aek?saP9$AA
zz4q+#$6(#rt-XTgZ%CB~h23)Ji#|S@hV1(7XiUrhd>ZL1twDB68u|>N(N)qb#U{)P
zh;nBn(pk1(-9qEf?Ind|{PsdbUmiMYJvdZfN6}b?FLdHV1&HI5CyKfgFtHHt)QG0_
zePJP7;<EcG<X$GIly%FD%`bPb^Nn|2ZmT~Zbm%6}1MVzaVBeYoFLSL8DPzcvI?&JF
zQJX8QnAp4W(Eii99W`vDar=&vq6?5wgSB}`rL?}SXoj(KM=@Jy{Ji74QmTz$$L&DZ
zbgU913@j2V>-^WH4Sz@Se+eDWiZydj$ce?iB`QJXa+p{{z<$!deokHpAnqZc4DBKj
ze4T<O1q=26LYRv?HrmAk`6eM{lD8;$iGaSH3W6nZV__WL^v4tbCKP;Ze>41iQ3{N>
zA9rdKqMS=<=FyBP2bH9ar3m&j-=N4Ns3Ivd-4qZT2qW?C5pqv+5nAF8WyK;qK@df|
z4C&!QQkfnNj=Vp;0h?x{^%b$~@;LHZO?f2~`>IC>*@m*)H-buX;}y4ya(r4pIZ38<
zkEVd9ITsf!P+F1L)r`&aH1CJ<WzA50dRI^sBDX$eRTZ&!*{mr0W4AZ<yv#+Bd!w%A
z607A&D3Y>OXksYK+MJaFGUBftz=j#Ozg8ZciqaC7Vsiv-NyR(0sm436g@Qr|*<x$R
zliE`DzFxoIM9|ZR*ox6-Nj8eFQwU6mP>{PUa;nA~PLCH|fBx&G$#g+3nLte0aaP(|
z*(6~&Mcw>LQ40>il5}MioNZoos-MxRqS#LoYBCe)=+D|zB}RB0X5X)qrttWc6r}3#
z_*E2qgB?m?VqT{fxAtYJ3@b?GTT@dQ=yxcVco$FYYNR0}6Q76%)Cm-&bLT{%U1LoB
zud~^;#_Rvp(YzUS-ZozWQ?ElP#zJsIl$-*mN{D730x38a;fxV)#QXx0jnf6!87IDR
zZ+{=?wCgEtzS~>i+*NcKj@saJ5`c)tbG1IZGq(WW>l%%E<HH(9yjh#P0Z2NZFb8jP
z8@aGC`Owcirrro3R?iSxgpiu;awuZVjN&p;5zb<liS;>Q5RT!AR;-aY@qsqHTxt$z
zwVNnYntEaP!hzlPKs+W^``kLwDqJ6!hc{%S>{6P5iQjBwzja{${gI4LN~P;DRn&tZ
zRz05UQ;*Z$YGSt-x4l){f)N%Tz%Dd2o$rX`%?&C6MHr)?hX*{NfTHdOGN4orRN|Lh
z@b;PT3eI}F7QW9v-fm*I8n3@SgxzN3?<@kOVW-N*8&h|NePfYpxTOhxlD4xHuyc2+
z``r#0`f02cABA}vSvD1Mm7~r%9$#GWe+LL+`JMvTt|DR|hg9w`KHAwn0|UQ*IxI&a
zSK-GgXJoskd4=kWj;FMK!c`aL;}e_2R@1vvP2b$?6C2<JkNBZ13fg|zJ2l0`&-75x
z6$`tk6?m*NJt*_$cSf--#ux9@jK2#cJm6CEk-axy>tvm>mnyAK*u@GP_!f_3s~(Wk
zA(_#xY511TRAc754fqgC;@y6Y7IV2N=9>7<LjzgCyn;NTvVy-n@b}!iWq#_sf$Ttz
zcDM1(yHk>a{~YjNm`>auz4ua3#qSYS$-=1|m7#1QAS`mo11*xK^@G^$O0cM)C{s{T
zDx>CMN-$Iqk{BO~2&FN#N-$gy1|}&wR5*>mo~DAL+Pkp!?wZ!z(3h2*7<dQ^3n}cA
z#lz=ri(%QMko}1ekvtkg>en<kv?Qp6gPzz>C0JZgoZ+ZAnJT%d#8QKx*F6nKP-qyT
zqbi+HTqpz`_6oRLx4Ea`_?kvC)DD0V2`F8X5*sKq9Jr=wV}Wa3tprO7N;2h?q>I79
zO42HSNF0X=mEg=v8<@=!_EMY=Ys+&YI@Q?mpPFWBhStY&U4_$?U}-_A%#gILG?n4d
zf1pR_x&r?A?MC(cWmz~5;Sc6J19`~d!1pU_e}(qg`hgk>7Q`xYQDROYSG$|)affmC
z`;l3qq;mtg0bg5ozz+hA#^{zVwHL403?*1rP$r6p{VPiq-n1VGo110vpo88AW5s|K
zlv|2lj_lb7^E{+xS<t{^KbVBY$}Jx>9Vj&HUVwviR>-H_N5O)2Ow}9(1?v42^C>tV
z<jagf>vXt*!7Mrv6u~i}KsJUSqv6Am{mDZP=7ahCP#}N(V)a-znkHAQp@mwrx}QnU
zUeJj7+5^UgA2zlB0>QLpL+yW-J_eQqFwrRqq$WCG;z2OckpoRcZ!FjqS_$g`WBu!g
zHA!J<kK&0oSWV%nIE8QE((0fT_)y*6h#`N482DF+w!cCQ;>M<rYLd;c)4}pUxl<=D
zEVWXC6$KTdor<9)73qe`;i?yEXHgYqDZ$EuN<miwy2><N84r|8=KqCJ(WQov2z^qh
ztP+eAL`0fWq*)M2C+g-NE7hs5B2_9(LwPDpV|gk}gLx`U-c13=h+2e#EMR>im5Xu3
z#}!E-V@e~967}(Hi!$S7#mVgESm3>}WXXghONRMCJKpNeLAN*H7F}9;KLK}wjsj|T
zkcCRo6SLC#1g!p^!lc=2-JAjm_v~Vns|2eGs#0C2DlIhk+qYnsRS8xXR10Jol(AZ1
z;qa0&S{r<A()hv*$%Y9i@rS53lz#{&4H}Tqws;4WMtj)!;*%EXllTg1(Cg|xt@lz7
z4Avqt{nL3lX}yJ=*lIldY2~0aMEKmTkG?$)OPd9`DHlbIK^_>yaC2Uue3#NfPQq3r
z@Yx!rzw{S2eO93ipx`6ML!Xr@17+}S1Y2eB&(A8*^~*l5%ok<tApQpgh<jt==Pk8U
zz~4&Pk5I5M6fA1L9d^K8vp^9T-Sqj8eDY?s8dNh7@&yVpioN&w*~45Uk@t`zPW{sK
zR{sx$aWqlPo!_UT{ILjpA_^*zDwu8BS;+EW8}(r0`Y#5Kr|C0Kd;qkDxvpQsL>r$(
zgOjFWR*StMF~3Iaam1QGmBTa4k^H_XZUl;yPZ$+n&O{}<zdRn#cfTCeENTV+n)p!?
z)Tg@O@H~l3Fh$&ns5dP4>3x{08Kb{yLAvE%)n{!6MHm`EHuLJQib^ORAwc#XDq_6!
zRcPsCVhUHgeuV!6o4IolPWBQEcc0{u!~!^7zK}SHsA8+uvID`Kf*hfHlyS};86){h
ze3n@aqhq4Fo|GmS)4v{+d<xi()6hgt(FNs*m}QTMiAc876ViSHQ#rz44?<zxP*|5!
z%s0^EY!i;uS>V(Z1tqk;DrMwDC%qhTk6S$g-1xaqh#PZ?r;XfiN+;2n=XZ+fqnu`d
zlgykW+v^&jV9~*onu#Ht1BXB`6Cq}(D+y+{8r|PC<TXGQ0*VCVixS2S-!vWk2w?u0
z3u`Za1#6k{XHX>OPVLu12A*cO%lG#f^Wki}m<ifkkD|7Gcz8weYVfT+i$t+yUhO%f
z`rAtOtTFQ2LX~)jbD<<Y1`}e90S9NxtT@IvSHRPS4cHfqQ@@Smy-37G?byF`z~g$!
zxcOU^jWJ&Nc5owkB*7fn05~R_o}mSEoq-(L2En}eL}S2r#YxeFgntu&*Al>APG*d4
zeMQPVkcW|ygdWI|QV$knKAI2=1_}bfP#|cXtO*td3Y&5RSp+K-M>AtP!Qgfz@Av{c
z!_c3iT_K#0pzdNk^<8W0%Ru28Y8+O;uZt;K{1pmPH?rn#kMcPBi(e<f(5i0i`wAbH
zLHt-u#lqP1@0((&^-i>nZ3lLrG2_PXBUn;>`ulpE9s26~N}Ptx`GKxB4gMiAbSsi*
z&FB_QF-!+PL3u(Y6fvf2^+05y=L=7&3!a7k1t?-!JnlBu{}4h>*ZnY_%`(3Dp&9v=
z{@9j7D@AQt!gIn@W!8@a*sI2QKR(g+f8duYf&JA+W6e)$k}TTsm_xxoSx)|mSW@S%
z0!INW;OYdZmbfF}){X&p;+$CyS3Ev-A~3imfpHiIUD3b99yYz30pVCZb$K-m%zph>
zR0v1--8jPUmPh!pJBq2NG@nNF=V3+CJ`$lI*y*JOdE?ZdH(-q~`<D@ZGN<SoWKIwL
z<veUzzxT^HKUv@DxvmgQ+kjt-VcI7CTICZa(d_}O``0>5`^;baVUoA)*D{3P{<YnU
zvDBYa33SD86$fC*^*8w3A*|*WhBO(&DXz*?ghs$R>Lj)k#^KH#^+Dh2>BfrR>Wk2~
zk%9ImUO{i_4v%sBZ*#z6-tYau{m|d1=7^TT{y-@V<|W33zb_pL`{CDdj?oqU2v@`K
zmRk`NN^eCt5fS48?jvS`ZV@y_{c&;<OLAB*zz#+hU`kXR?@dsq+S|z9I^o;8!!1|0
z<md9P#JHC^5`k}3!?~j~JA?4HPM%Rvp4sWZ&`PUaLjcj~A=Uxf0L5(ImF@TlJ5OcE
z5Xp@(e@49`Wk_!~PWZDp*-op5P<Tq05Ot}hN*_SEC+Ha(u?*=!L6IGLhd>Z@eZq@M
zgqL*c^acT;^!*4Q)~O6}FhmrVz^6cv9TBJpLm!)?De|KQrarMh(Rb?f;v!N7$ICHx
zAssWTPYg|iJM~OhknG<=B$9m(@nJ7(D$3dfq_G@^hf1%aqqZ$L=pw31jf5^NBh+~M
zFe)gd50@|ECN`2M2rA|gbhiV_4FRnLS435Llq8lhWnL<_SA9y8LwZqZk+Uq2q*l75
z^Y|`(1QjQMd&!hgJETyH_Y~?r8-Ws3F0_)A*pejw`$8i5sYIo=ME^sY;#8WlJ<{+5
z@ev`s)xbmP#8IhizV@YmqRlLYA$<E00En#$QXkrhxNsl~A3>3|WIm#q(?UX@GF?Nb
zo{{P~0W>c492^+3`h?XT08bsU6X!0~x(lym6KYA*ZB44|pz|m>XcoDTG6@4tZ!TlQ
z85?09#939&NF-=|x%(k8KQvczHY6g<aM<tk&UATZ(s~3f9N|+i7ejw><;C32S!kw6
zcdLT^(qRQD(@o2JUU3ce8nEmZ336THl8j#wmxjVES>5x~^t28gEA~i2%DKbI>cH4s
zCmUTn3XCPrMv+0UE8yLPF``!_H1Bh=Cbr)E$jNH)^1E1+4KoM1*w8AuC7T)Z*C`M*
zEuvQ_9$bv_nd@CFk~@}a{Hoi!_+&odV%M@u%(-rMOj4N3R^I)OpktZ5v53gFbmX)+
zJX?PcMpRe0rv=Yd6zu*G1RBPAeBD9-#6!a}ELIAOVJRhUl?1;BaJbEKUnK}WG;RuZ
ztZFgGDr`Qh>%CrKGZ?EgfAz4V+55e7z3fzu_gj8e>IVAfJk~(y$^iQ#n{=rM=FC;R
zZdh+a0o%dYLi5)kd$D~XF!~x`FkjG5r+1YD4wkspq@O3_FoW+(z*<3=kC?f;kWCyc
zQeQ#9Qj6kBij>Kr^D2?N2TEumuO<L=YgG|@B$s_)j;LcD?1SEwb?h02_t*yZHpjcB
zADf;fM@pK}n5XW?-e9xL!w0cmx$7<Vi!hWg40n}wl^@l)dZAfAn0>)MGz*5X9&ua;
zWAPjq!IhrtH1p~qtf6ceDw+afuO6J_cupjs_L2FYA#CDasXE%(VS53uY-dCF0)E`i
zYWD(`3}v<Xv~!m()N|dk-YG+&yJ(%|9qeU#k2!#?;X;ho1+K1ozqqia;1gJGbt|fX
z&pKDpc`i$acajVvq6z*O&W53dJ4Uc}yy7F+5o0tIcufH3{>8>TLdBj`sKlEJmHJYl
zGIuJ3c?qa1oNJevfst&L&=~y{(O!+_r6XBC7BQa~$)04>&9$T0A${?mk75<<0@F8|
zsYP&D=@{3)kW|rb2LHIyqnP7IGs7#qC^$~$d!s>rN$>8_>;oLJGCvs0R_BsUsyqtY
zs7R<)o49XQw<qknaj0muxpN%buqP@po>it#0GL<fmu=W5=KbT@>+EvVIFS8|P47K+
z0=u6?UOS1E!nT>iC!_x?G&fFWE7-zb?-W+)RN#R7gN5e9Q&~yxxT$Ohmymq({271@
zp24nQ5WuU4u;Z)AEhXpUNASC(6_Z>F#JI8;*A_fWy0iv!!Ay2Bo7MZrOm;H^8#f%r
zK4go{b%(P#Xss^}XLHl%n|4v1H<(?W>?XFR*V%=iH3CU&7J5gudCV+WvJIv&3zn?f
z?45<=;?-ylI|4?j+I;T_b|J`5p3QzhMV21PCX!HF=CVff?Kx~3tL{a3m=n>ZN3m$8
z6|OjnjT*a8uUt5(eUGGIx619vY-*M|#d(h1FlzC&X6*tt&^HSL5f_roBNwoKerjy#
zC!6OlVAE>HB2L@#_}4e*Ow4pHM9nWZV+&b(<31RpFV~T6!pZ~FYrz4g2<Ev9Su>kr
z-n$S|ikTlSWOa4>NLnga0&Hb9AI)0xD5v`6^n^RNS~pKPn$-{c3>9f|iwR8kxI$F0
z1b~$oYv~HZaj<4$D8-o8N<TaxPS-foCxXoFN3+7F^C^Wp)arG^t;V89KXLFTF2G`=
z|8htJBk%w?Rc8J%EQI!JJcfOg{2U4WO83bqR>MRKS5~^u%Y?bMl;${JO2oApM0pB!
zcLv7QWj5lM?1&R>i1#xH%`n$4g3f8?Q;XQI1Id=?hmx49gxE#=us!03+v4W8$Fj?_
z1=$kOI(5C97PEJ9QnmUtQ&jh#nJ`aG1$C+hB}M6~^Tae8VxS!{-G(^Gj+kLXEV2+u
zh><4_v0>KOlgzXsF0muJY=|v(#4H=)6+7Z!LVP8g=i4-55K2GNhH-~%Rh(l(^l6LU
zTTWp~MToP0`(5IghdCt4-eOvBVGlbaE!9XSxBr!{tXgX0en=)U*EZYKV!92X-fTlG
zN+AZ5P*1RNzdD5>gl0qZsg`;0dN#X*l%#(9-RZ+C%RydVu3~}G-*X(o(HU|b1m{(f
zh~ne%U_k)Q57x6sVAHPKz{awaW?h;ox_e6|jIS6F8(+%?dCZQ`ZHQOxh*dVkr#6K8
z7zx2@TW46dpquWL8RqdD*}@bn9t%ZXw=5IJCk$*E53(cH*bvk0h|_I|REeTM)F*xZ
zoW6Xq7_9Y9yMX<TA7dGiqci#Zuau%R)&1g`g!lrYt=;=HVsHNo*<oqvpOHz^eQl;+
zr}MlrgU9F2sZy2&yTguHZ$ms`M{KYm`f!1jKq-gbY?C<|TWRKB%+5(Q#Q#+UX&d@q
zw!+nKZ6f&Ej`-e&V8xjZt(N?3!}Q_T9C!)4eP8VLDG@)bmp1WzO5`?#y+qApL-Z*y
zB_A4kaUAY?2r_EU+r-8+2_t<O;=GFdb9t)wa*D6QK}6TOTd?w>Uqf-Y>o09WkAnww
z{$=bw7o<GtYPNu_?7j7B_GVfKDl#JI9-0Z`AS*ISwf6!$;tCrgX-8aXLtJV{TxCPt
zVIigo+kUkT^OQZwwKl|?cEn~IqL0kX&dscvy>G7E3^#GQdEsW(gIDM}b^v_GL#~5k
z2}vxyo_Sqx9#6WN4X_<y!%cvN=9Zh;`~Xdi(jI-#wR&N1{Xf`hmun50#GG;m8*ILN
z8~cQ<F`v1eO@_BtbO+p*>fX_JFit+|xI5V^&fIUP{qR|i=fJD_t=Vu7s~h+oVES7C
zSc5Xn?DV%q+(o{Ti0`!F&BQ&ZNS%4nJ?v`sz1iN&YS<6v5xs1Fo;(-~*Tqvpj*R(S
zFX~#|JLO(>DC@rm5-PNkKDD&~y4FyILS<3@m=E74zy}F>x8KLIIs38q?FZPojQwOD
z`w$zf{0wf@pUlk<vBTLfy?;E!?#f|5ns+?MZXZS{{b^z}LDlhiRV=UiacmTM3!Pk&
zMi6O5vAPsRFX?)@6URo)E1qZSAd$sW`_5utiN%Ri^Y`Z=fuDOTUtsS#+0W+g?QF{b
zZ)Qv|)6qM62m8$hF%5f-t?<^0BeUD@Nso|Uqn_5iuKMl00^IxWci0M7T1~zKh5Bvp
ztPj}3EDiik0vkSJGk6-fO90I?Kfxrl&g}dYUU!|@^C=scTZeXr%Uayl<_xJz&8?rZ
zkt}l2XY9oAZ)gNsZ=xT%+<`a!k^g<(XD|jAm|uU!2H{ozIa^WZ25DHEkLI!#i&Gvy
zY*3*KHVAIGx%G4QV1wOL$Dwx|334@+;=@>Y<I7)o(s{K{%&Wg(m2$>eN*I*-+!t(Y
zb`0g<!vg?e@>KRE8-f*@L%xJtu-Lr#OSU>QAFTe0l>;~YD>eW)4B~$i$BMB6O8JF6
zIK5krfV$Y+^%XkHVzcCHHY!|+?EOxaURjD~t_LSEJE-jCU$cJu**VY5DyWzAjjh0a
zU1TkepPMg!jWwA@^T)4QeGYZh^lv+vjo+|gNm-vdQ6Dnddmgy%o3j-|Gtj)G9B(l%
zNl<z!E;Yr#r?mBY!1g?GY^A49NRS*|s`>smER31v@82+ak<HBemW8H^)A_A9L4jM4
zsheyvLQ`PaCmDhDp_^<XV%=mTzJ{duk_h6<T=Oj(+=%@!8~tiZJ={u7NA)Q#r2X!<
ztU>%%9hDR&9>!40R3ycn!1P!QiAah&5lL}Jk@P(~kzGnuRGPr1@7c+y2G+uYH;J`)
zBe!dtdD(ZYdS5fu4j$GX1)CxDcPSP`%@4j~(UAo8<7%a|rLwySX4feeU;q$r^-Pe*
z|G)!3i`KWfM{}(DAeV!`XC;jhP~dAQrJX8;vYf6;8OnCLBH1#SQ@Tzw*MHB-lYfE)
zwX3u^+9jj75-1o<%4n$-rTlEfvng7`wcU6x0z5^Aug!>q^T=Xl2T$d-v~OOFh&l?=
zC3A`|;qeA@{~y>=rkXeYz@`lDheVmLA+2BBx>KBP^G5QIXuZQJ1~hR<Di*@|C9JbR
zsa#srjQ+?<r()km7$sWdZi1%$O1nMcTOZ;kJihaOEON(mL?luXULrsD!PQaFgy=EY
z#spArMV{2PjUU;7#ncU*bX9R6m9zm>#IgFY-bOS|98XclAt}z8B5r*-7Iu+-*%jwp
z#h=6p4&;H1R@gKmPkm>BRFhVSntsAi)L>5iiB%;@Lqkhi##@OML}A=0mB<L}SOrp7
zkrBnS7>eV;cZR6DqzPyTA0PE1F8|7e;6{$992F|l<%&`|Wdv)kfBeMil9W@F&eEp1
zNTHFet2Nh-X~i`OB9om9TS-D(cAld$u{}|jEkD^Vv^n5*Kr?CM&b;zx7A(*3C=R!@
zoMPo8Ov#Hsv(SEI>2OSoE_pZQr?5(={7jPK!PSe598)El#lNtM2_#GW7^UPqWizdu
zaIl>uj%`aJ-aY%H)jMZ#SE=gi)qi38u_|mS`f*N<v~en`a5J>As%p)>U;3-W0?I=3
z<zHD6-sJS(SU8us&UQ8Va2d?2%`#W~#%lI}^<MuQW6VdsBtCP7HTT<pXE$P`?)n3R
zg}7z60u1uvRrpP3*Q~I0H}B-Wu+x!RUrDgAekQ%dwPn6)I>NX~BeGd0lhn&>QqbiR
zTGtoa4Jca4Ecz2(!;ihg{$%%X!Hm3Q8K&!%C=wS7LAWZ4#Kp5V5Tq|YHX-1O_y^Qj
zbg{prtFkDX{)z&J+V1Y=hjPqFp62{ZmbXV?=Ho6tV89+g!68-9sa^!N*_*}QIyZk+
zL7u;5@n3NO3JFxV`D=*xi0=sMvq?BS(S?_kA$A)GFkb-7%fh@G^Mr@Pd=W9$P>LvX
z_f9C|uethDX7$_eO}lmnAx$K8q36Cd7#qeA(Yj&g!BzZtObQ;X;=A{*-Lp0PEPIu^
zAb)dSEwA4b*!%ZdKAAJce7ByT&*J9t20pwXBbNFgK1YbOz1tf2Qdg4HrhfbVX=W}4
zGgb7Bv2_yjKpJz2z|h=7VjfImHc<sCtcywyrNNgHI91(;)8NYhPOoaXy2%{h9^<%o
zXnqvq?RZ6+_}(`U%~?&n707i>d~E6l;#J6LuN#P01BmUx`zkQiIRo7uC(tr<!izwU
zHVc~hOn8cmnt3chmLHvl5?Tw{*EaLI`L@K;9Xb~`0Qa4F+PCOCl>he$W|?XW9~{C#
z91Lyr<0mJ|Q3bz(fD!$~7G51C1=8<EndwEc%@nD6mrkt+<Uc8n>!!V1TR7wLPP7N<
zd!HG=Uv@$xFWrw{$gt8oa4-*|8;={zpLdB>fnaf<I27?+5hxDkA^}PYmIO*d<yQns
zf_WAopK=<uKfi`@dUrUFVD06ik^J6lBCp@RRkW%3_((p}f;=K1y>+Abh8!#)+;uQF
z@R~4{AA<~To629~kvd2l4n|miH(f96CZwai*UjL+vQ$6ZJd=;L!o6S3<ZImMTivtx
z>$E#Fc{V>_j~l?|g|qqVVuw!NqYmWY*0Fi&k$hf2a4arY*Q0s_{_;rvtDQENfIrS5
zR?XRS`Sako-#k8;j}(H=f?48DDfC<lV~!>eeu|XHaJE3?$w*F$%DnO@9u^;$&_&7w
zJws0QN3=XXmqC$8zWSs28h-jaPXhB&z~0;id~I1$%6nV754nJk%oF9*Z+|omb`v;a
zfgekQ6+8IxG}uGnRR4S;4ffi>PYQ4)+N{S1c)H)>)YfoPTyl>~uw2dSvX(<9Fww#2
z>M@T=@|tq`h8V6E6IrYLE}w=YA#x?p+??c#VC%Ab_-XDAVV$-=m1d!tSU5n~+xqQK
zr@<`*4qDZFMu2;tJ_G84vGUQg_y{?5JP=f5RC3Pd+hLk_p3Sovd(Zs*93I2w^2YP{
zTyw>_{IUaRGaetm84mKqk$5zRyVun?mU-nys`SwRg)w8LxBH)f+bGrd%!AM4qh)SK
zvmW#3^LT&n-%!y|DMt8~wY(w|J7g`N0ByZ&Eo|FL^VPLD=zO`kYb}om-BWQy#~&BP
zn76IvCG~WpS6zv$0`8D-`h#$VCxJa}Hh96UV0Wn+F_*04bz<KpAUAt$+~RzqzolRI
zr?rk{fh;lE2>8WIJ=5H}jvtH7Gj%<uoyJ4g^Tv^4DrK21+*_pk+)kPbk-JUvy7@3l
z0fwtoHGtvtge1WSIzUKYEH)op&ts*vKzf=UR>UWZbHrt6`9(61$u{uf0-6L{N#*C*
zu=%%v4-e8TB**&PGCs8F!{?UGQ#bHRi0IM{yi9z{Cg_%BLLej@6#3i+81Ku?s`Ggr
z8*7d`pRYVXtYW!C{c*RU9)@3Rz`2|u%?I%UxEQO|7SP=ZFixlW@#!x~YyN&dKLz=n
zxRI|EcEaA&S?2DI{H(peXPV{(e8{0=$(Z3x4T&u^UzHJSzA7VPirRN<z!J$kB*ItV
z%k}vPKp*s@=&jb7wFa+2-xzQ3BJc{)@x&aU5{JQJrkZm3MZ6jMbmc`bhAYieOg<3{
z4v(5*9R0=Q9T+OxF5cHTdcws#eTDx7%2n_#DuOLrOc*o(F@PSfW(Lp<U3vih<zhYq
z1L)*SG6N_jv<A?#F3Aj_lsG+r{zc}0J%Ii<31*quoA_Y%xjAMNKL~458#h607npZ#
z;!(Wb*~I7IHT+WEg4gkv@-}ABSHjyX#WILf#W$7|e693Gs9;l$6QM;2VY2q~rTl=u
z_`;?+@iIODnzHgTUM7zR^=(wLhS)h$aGWbX2dbgtASI6d(2$1%F7Fcrr?2o8WqeI2
zk&6({39ibccc5^Wl8-<<fJYC31Y8}BZ!2POBwAY8r~It-f@Ep|>R_%ON(Bg{Q#%G>
z+Ca0xTv`F8!*Q<+Pzw?WD^FGpDtWw67NQo>`!IawC4@kVdp%6hIrwZQ-c(c)B@%&F
zOo-9=bSB>Pdu}=fXx*k1Z}Ib9*0lMolz$`Ag)s+B<>eRL^v}ncL&_58B*iOgQ3y$)
z1VK&$q@Qe`<8K;Z%fXI)6(Z1ZB!{lz?;}4c&h+tw@mwoIo+_4`VjA?DzK5xmnai%=
zH|0c-34WJEe(2k5xRMWJ=a_jn@lb0s*UkW~T8^anqNG}ZH$IYEiB~fYB}edX@OcE-
zAM-j9GH<z(kC<Eq1bv<NU})b?*i8D#c`C%Uwgc;|CE}@mj3w3PkOY-xKtrKH4*a4#
z=(D|A*c^NnuTRn!CYp-8Tsxia*|-W^;*%2eYeyJ-&m|ar{Wnb|AoNY+wWRI1VFIdi
zh{{vo$xw;B=vx$msuomxG1Jt+HOzxsF(wuGRNM&jH}&&wM;kNoyG8<uTN(v^6-Uec
zY6BkE5msw7v#;i#)#(UdqZD&(BT8Q@V<lX}=Py$+RW(bm;g_?1=DpWoS`{_lxP~ua
zP3G`x`B?xyd946`axF|>i`lxF53&D@#%LUyqyxpH@U{*VQ&1i#9&H^c9s`I@4=nSH
zqwrV?lasSQ9WE}z`1dtLUP`M?iBaZLn|WnY<dUF7JVE66btycx<I$cnsN$}hKi)=P
zjywyd4|7E#NKn}Jd+P^M(y&gs#b$wq;_@fE#}mdXAd_+#<qz;gU}auELQ*_I)baCx
z)JIafVv(cuJFb#dk+V3XeF;~`pkDIVUPhY#ypESvP^y#-5Wfgkg9^(9=22c_UU@Me
zBY*lr5N3|4io9*dR7u|Ar!O*vim!kHEEHT`_J+^pD26wI1FTjXNbx&$5<h*LUd3S>
zzlK$JC3-*Vdp1dsV3mGtI*C9#2~Tw*nZ@`I2*%$)Us2o4yRPSThdzLwp`VK+u&@}(
zC`6{h-vmETL>@#W+C4Lhp$(gE%F6q>x*y7GuCo&tq1-gJI>>Ck0o}gNJnjbG#ahiL
zZonwhYJPG9uMQ1D+6H_)Vm%7NPw^zyi2}{Yjl3dAMQM@%zvfMdR&(l&ykFs9B!Zu;
zm4SiO4;PwiZ{&@IL-vJv>P9}eAcW3}j#`Q&((DK;R2%(2SfAN9@%}z(o)mbHf4_;h
z6k5i}VnrGw^WQh|Ue<1|zZpZ_P;=|en1RV}(we@1@Mn*egPD#ic&U*nH4wplB&bu{
zpKu*k4By0{D4ZlhYQrd!8Fo@&8XHq;cn^LUM=R~!{}$el&0YjEL2IrUxx^pF(c#EK
zy_=N5Db}mycdXQ22@%-)Y~cqetlo=fm7{0(ZuJ)k5enhdy3I%a$xmmGn&WQe%WJ4!
z(Te~cN!f3+W$>64HebJ$PpB99KO;f3TCP543%`&e9d{dFrBF`s-^^!j<FyJUi;ptD
zyN!>i7s=kTCEIBWzbnHddk?!Et3hH$@29z@`TQNce$V;t?mPH3!Z(%k-Fn>rrdjNr
zck+S$(I_$6;Y6P|zr2%|2gg#JJe2pSb4f(`7G7GL8U4@-xM*Q5b}M1E8@$lhq07v!
zExeqC%oSVs4Ed{g-x3O|w*#2?f<vKLkPkzK_Fqg=zXMhJ2a_(kiyvbBRMI_wul3>+
zuj(J>!n=6wIJq^Y--~{NCb$Xt==V@KK~K?#8@T!tmAMNwkSq85Ni6-orl5+L&)>yM
zFtPdQE_BhGP2b(TU(N<(h5jrEZZ=2U&1)KN21u(A)>DEhj^<aiO8l66n)a-_d1nqS
z-qMwKaV^69;%+`18OQG74HHBzB9)3%aF}0;!K&bE!1NvAJ@Tyq1x;fFSeW91?wL)P
zpt;pz^OAdb=a~QPHlyXO(c*a<`UBm15hoAb>UeX%UU0Y2jQ8@x59<~NL-r3fo2mtU
zCvDA@VWH#^j8XEVRQVDr6tmbCE=5>&xGd@!X4Sns>ZN?Lsr$^hmmi4kv*}*`5nikB
z<4f@R;yyl#onW@y&%2q&y!w7VbsQzg%3~h25(TP|yk9Au+gz2$@TCuOFv$0)mEHTB
z5#k4T1W_nkDVdu?cbOwDZMQk-0ZjMSnzJ6@71;+umuIOHs83axYaZYYwG$DJ%x;VD
zNdL%e?NpQzT_s@s+p>6McBH>{YVY$8@Tn|Ebl`!O7)<pc-pF>F(;nh0{L-|oU%YO*
zx&0x&k}WqUKg_G}TKX`rY!Jd3A=8~eq8uf|Labv%7+Y`V?GN*L7%c)@`BJ+-G6~}w
z`6D!bTmA?Ir9U#+@<%2EqSFIfco2oBP?-FYvE+}?e#2Fe6FLk0k%{J;TY0HR<dT?d
z{;`!;Bq=RVP%3RYI1=e&G3Y<sO_x4_uwk82h^tF7DWNp#kdZ`7IY@1J9D+RRvvi{H
zG~XxguTUN-Lrt6|1i<nOhTs^V$kgT-P{qZkb7<^ukYm49Us+YBevtXnBfPSD8yXFF
zKs>^z=lCKsMm~uoV&g98!Z#ToHFLM|nkqV4gS&9<P>I~H!9COoSQ=@^?GT5cnzoG(
z8L|fz5-58li1oAOlERx0Z{z#1N#^(4_-Rn)6_4_ZD~?5haz_tE4TDJN)9K(fR)wD%
zFk_GL@l8Y`Hr6yh@b+IJz*R%CDpraJrMUbtKJLFuA?=WrVj88$eVi{YGf3xX(MlQ_
zO!0)iMzSzAT<|#mtd>>^)MY3vdQA!^*C^F)0L6l(dF2yuVl?yDCwR@#lpMn}7TPi?
z$MY%}SGl+>^8!JjF9F+&pxj0<$0{3xE%KS(+w&y<4O=5-;u);pU*3D`Gkhx-OILEp
z3ge5I;F~9wDEMB2>+kT?PC&@JfuI%%hP2)*p2zxjpP>%-kO05^MSg*^4;;J77y=L3
z!8eM}7g{4@j-dWw2Y-`e-ERA<JdD>TuVNu=R&UY2`7uswjrG~|YUAl(Ba&mSHa?dI
zpFv>11%5saKGRP9LK=J)fqfSBi)rxLcIub@A8qde7UdDWi_grrEW0#C4OImM5ov<h
zz>d8|0Y&WC6)~$~Nkse>yT%&JYShG@XksBIY7!GQAR0?z>@9Y&#Fl7ciP8T#XNF}l
zxxag#|8p<T!@K95GjpbwZ{{oHjQ2@cXM%h2j_fhJ?^%w%f3Z8i@8J2k-F3F3=M#2k
zc>2jud_)7=jp_|^b4xtyRgayryUzo6S*cZzowmEqFY)bS3^3EW>m#Fe0XoZ;R`u8!
zyYCOsS?+~bJ$BaaywK72IlJ>B-O>AbyZd5rmd7Lc(7*8yUTKJJBWECJL?9iw5+C{o
z#|Gu7ANB@^+sqvGy>f<^cF4hY=xD(51|RVTANd9!<-lzxF9^85aA%i`VuykDsa*mM
z2I?T*SA~l~w!V>=5p!5On9HCIgKV^Pfv)TA&>74|OE+-p_AgI9|MryjFHgRuJ@v3#
z(jDXT`?s%uoANL1sh8c9qos=f_VjN{mB5o;+}R<2eg4x_<<h3m)4xpxm>qq=O{q`?
z|1PQkmw)+kG1!gm{Ip24QWbLSg1sTG0aF1L={A+B$1d8P*P?Tb>fpcHo!2=!U$Q%|
z2j}Ac4WC<5y>Nqr>lNi{d*?T?p;~)r2|1sET4a&<If*S`Cdk>0;>1KiSgzE+2OFVD
zJ4f9U@Jyq;<1D)msOZy%86q3*<}?()6w$W$KAnW@yD#df%Zmncl6E{0Q=NDR+qB29
zq1?gN=ZWz1d>hwPO=8=_+li_`vMe2Kvz~|`V<&L7B-!$wi1O{Emu@xp!<#q4c0-*M
z`&D5_dzxfe<c_);K1ySEw3Yc&gtnB%(X%VOw!sxnGgRdEm?GSYZFVG^mS+$xyi>|-
zd4Ynvr#ln~Jf&5;LNe&<?T6V4USJ9Z055a1bg&itDN<^60FC7kdiR7EK#)+*)3YR{
zkn1$ha>VV<wswDs(2gbPD-Y=_?+FGRgHcJqJC(2`WO$3cBpf{2b+)~Ki3<E}+bOVJ
zT(JD9C?DmRT@{eBTdp{}<s7ry^r`UYoov0Hib^4vYsjk1vn2&s<1qZRbapzFfv1NT
zycDgw?W3onJyi2=PepZq^iuPHFy;&f55*tF!veFU*lIizU%(7`?U^{hD=&j~2Y38z
z0hP$cR%z)BK~+SZZ3kY65prlNZk8~#1@7$sw^%ITUd!kIh%UT}t>Y`$i4V3-eg#Lv
zRczj`VNoA!Yw%hmdSlV9px4sT+QC322iG-=UyCN8n8+9pI19seZ)pxGq3{2hC^g_r
z$w{&O{aS?A?E-#1i<5`}y}Ma{gc^~7z2v(moxCjj!7U<GhBa9_Ebgg=@-B-fYrV^%
z{hIIsZCH(9eDK}C#gDZ%Jk{2aYrEkz?*-RpLaj{^T0JjWQ#IiI4AhWhYv^b@F0}8#
z=K@Vj1fM50tv9eZgBA%a-Jo4jFQvX}9|d+oM7T!}_x(6&vtW^S!%2&UFkVJ2&nF3T
zp}`9ToGOPo!9|qZ@;DB?@Ul_!_LW-SG^YTcH`HaEwf9{yg@G&(KGoFHw%%C_4WW{z
zcN=Cn*Zft>4#wV%zB0&LhI6;DMYe~|S_HHye-r$4wY4&7)p?q2q)8jhJKD~fG=JXG
z_NPgMVaFC}*52c3J2#lMp(ckN3O`ud*(#OO`bFYYCf8wpa(1ZK#fZJK5VDM;zg??B
z`0d<ZPRkW#N;Cn1sOs{T*5yAU@UtC%ORHDD#CLHlhir|!G{2p7y|mfFF&req_KT0!
z*|R0&8NPER!X`me@G`=U!F7DKiM*TbD_^Y(58mnOr)}myzxIb(?6&izKh#K>?hvTF
zQ@wUDu)xlG4_kvu+K_TR!4V#gj|iW53NmFhTheShDrq55au+ITpS{%!)Cn8qOJbZ}
zdBL7Hyd-Al^2*v%L0zWmv1`;2c77D3J?52g1yH`4XBE$?8Qq4`EM7hgSSYcbTY{n3
zd5-O7h;~TFopbqUqi19Ci4Qn}n`bTWd5${I+HxYat9{;3%L&k~_ARZh^G0YtrS3#=
zHTJCYMsWYq!Rx*eyy6?`lF&ORhHBq%dfA=)l%nZ)ANd_c5q1P>Ni(LI(;VJ|VmOYU
zS+orf)9yiw>|9-I5`+_A)nnJ~Jqv3DFQVy!XDs%xuc~Y7;Uc|9xR%hgH<WcwAb5r|
zI~0RR#N+N9ob?2qeCJ>n5pn^Y6N0j|HVUns4%a&KKDLMmt$*coFfm>;!0WI2lH^s>
zEG+#%G{B2B3T>Z9XwB+jPm6`K4*Ye2_j7pBXJX|Gm}~wXF7JhfLn1FrfAAqJIPeQ+
z%K%%oNUev94k@F3ya3zmNUf(1TW|D*7(>`Vv}g1Z8r&^P_YlyI0UQ^xCb(mu(Z^3*
zjE1x!a2#n2D+>b&Y~kTvQi%<`i{alkitjqd&o{#BvMhrjrgi<G5gWa2)1x%+s)NA+
zUL@vh8G>nm-R+_9>r5MWQFn{axor7STJRfQ;WgA5|K-&+TC0+5gKHwoQUH-X3_Rif
zNhbWN{Sy>n|HRoVYdA=F_wPIKn_~f>J(Ce2(9S~xC;@q-k!jPTHSZo25>C3&`$z!T
z6hSB26hVP@I#5xv(*YaR=pfHCOO8RvlEZGtFx&6&;e|n?z$+vuCkuX!;n5<>S<AWw
z`4|sJB=E8^D0um?OL!*dvnbd$3?>~U6K}bw1HUg}V^3W{Lu00QG()AjnKHCkO&f||
zi-y+}+lJTBs#lfEJ@pZ5umk?0A3?qi@Of_8GT<HXwr^`_`}iPRPK;Kk6CMWQHf<S3
z+i&>Vr`}lY@Lt~0kYJx4AdCUQzh62?V?hdVC2<^zWl4muExH7}MdEulNL1rMN{3g5
zTZD(nIU~(YJ}v}iA+3-kNNvAZtwz8~NMTi1ub68_*tdK|?{IG<yaEDg%g!?1wk=lM
z==d?ORM<YkdhY_is@_qQ_1;76o27wEPFDbE1Km;XCgq+e_dprDe`nl7!!x~OP%iRJ
z4^26Is}lBf*?a~UBlXsU1SjAWmB>cZ7CKz&0}`|rbdMMbn`Ou?yCF|Gy-<^lXlV{S
z65hc>q!|#X<{U$DHA5)r7ZWM6F?m^k!R~WTZ{%>RhiNFJx-$|Vib$R2QCeh#w1qrL
zg!P0R$<w@UAYC+u^RoC>A;u0IV9xNvV1Et`6*uEI4*0sr1HPW}fR8+uv}}sbp=D!5
z&;egbI`Dvx3II>A<pCc^td-p4Q<am0l>=X~#CkCra<EEZ)WJ7DcLu+$!LN*DpzP=U
zK#%p^7k*WJqbTcpfU55S;F8lH0P1@X$^)f51m(dfV}19+`o?}x6K85V!|iK3Q%kGd
zoGijs5%?6@7*=FssI2v{3z{<&xyZ(!oOG1EbI?Bx4iu17mW2(f`0DYSArH#4<q=k5
zh73(V(&Hy!G^{HeSdKA+->^vN{FL^HJ`nJKOv3-x2z-mMR7!o`OevbjmWaO=I-QwK
zV;knHxKYq9E;*D`KIPM)^08KEst^oo7;6oVa0htF`pCihfGWnSfGQqh8&pRdqQmE0
z@yxOsv<*uTK-K~n4B!*t<l^O^kYDocX6XU?;+G*Dg;CKrYyy~w@^Bt?2AI@DG=)<E
zA0P5tPK4!vhsZEo$vTg^YWHLcaH(O|odaSlAAreFXOny`H3E(SYe4BcTW~9tZlj<)
z8QI^Er?xmnS}4)RQ6<qwdX2gThGlZ)_A3q6(qUAMXh_*aNQJ9291%(TQl*z<+70f`
zz+!;sCw1@|>g6uEvwxZt0-`~*SV8C9&0iKodH9eN8NY{F@HD{7V=1!<_|Oc#V6u#<
zIDhbh9QwXIT!3IXgU?*B)Qm{Cn&;rH!}J(-arRA=J6W72hoa~{sy<{!CP-z}Hn*M@
z#eHnM>uL4%cOW5Q2{?6W^m)~=1`cu~2f4MB>0G3VgPiE#r#Z=RHVMC$A0X9XEkTkS
zeSM)e@DGkI<54{ca-)fkVf9N$SVIT7m4n<E<;fHv3_r?QEK@wvP*@9epJLk|ukDbT
z>HrSKnd;~ue~s@DRhj+PK|bst|0re3>`@2#I|q3m$kGfPj$<*p${#n8q^x&!h_#E9
z$zqCwoCGqgmawqgg)oPG0an9yqG@Mxg!giq;EbeQeJzHMuuZ71HR-1^{5FJCrAVLc
zEtbE5z`qoeLqLk<gAVc$lvRoDc98dyY^&Tr^Xf(Mcom0E!|1Rj+HI#gB%rf{oQ$%v
zjo$>7GE|PNKr%GdwxEHwMpjfG@KanN{|_ri7BalnwYacNVYV+CYE_|F&o<PWq^e@Y
z&v6##`Ttf?hC3FeEC@Vg>i}0A;c#}JL&7X!@P@m2w=~jPIWCpp79^TFGvT**i43AV
zV$4)i=R4q%g8)+}+*4%8v7n68<v^S+{o#o5F7&;(aWu?EOAgDU0#LyEjn&%&0IMTV
zx55bs&1HAQi=u3_W_g4KGaA}?4%|S1^C#Mgco%#kw~Rr}NYrE_M)rYU+qaFiDmv0J
zv2a^}G?eul7|McoxEgbYp?4oL1k0hC#WqbMECZ5#2_Ebv)3`87co$!o7&aW-<=O~+
zz}g7b(Q0*c^{Rb!gm#N3LRQuvRwX6(KV{10(QvsuBA+EQBxcF+L*7{Uv^*jOr3RNr
zl&X^D5uSl|kdvpX5Lp*m4%P+Sl_4)H;Tj<mnmRlvtA%A?n>XaxDmT><=us7Tp=@?C
z6m}GR(qX1;Xj3ho&$6v;s?~!#A1*e9Ev#UhmZ<e<MAN<3D6Iw?VW8>9VfHduVEqfT
zvt~3{;Mz`pn#wW=qO#wSv?@`n1b2LVpQ!oNtPK4z%5zj4n9>}qz+Jmxfe;#B+~@CX
z`Vf}-8g+b26`QG<R^1)$ro^@HPzaY5Y-`jEw$SF-W;D}U>JvaymTLhCmiNInTyWNO
z)4bpc*fJX^D7@#4g!+O>HK4{yXUiOLg!+S3qlWK4WGPUD@_y^63S|s*3ok@-pP~W7
z<2?*+usHY>+F6tdzFP&q5zgQ+7o(!j%=@@HJK?8J=t{_WB8;g9@S%mxvkh#n)is+T
zgaE^XZR>%W@XE#uo(_Z;m}x;!%ElJ3-!<Q6ZK3%T-x~E%3(clihqy(U6-tqwdT@~s
zJ%mjuc5v0;g|A?%>aiP8fAoz}ugY|Y9mq_K!95jpu~5cTIsF$mLx4w|lgS4pxV!WP
zBnUq0jgNn7hF?li*t-JzVU=8%ZVa0bImBlW(4PpKhKkZov;OTg`%NdfS}PreSE&f$
z155v{)@8h<eV1l|EEjem9djeXX8bFDx?ZF_$cF_`42Xtgr9s?jI9Ab4j%*LRpgknv
zXqBZefZXTw!EwktY%o|APF16fp%d}uxtw%xHdwC0SOT9T$7>@2|83wu5dLeyzbpJB
z$95Lc3bwg>L5PTMqB04>V7ZRtP;Yc>4&Nz}YB(JCkWvi958Ii>oPHR8KtJi~Kk9W1
zc0Y`Fb__26=~g;<mk_*pVF;v>E=kiM)-I3>EwY0b>~>%#EFVC2+#)JL!(9jxyqZ9S
z4aHn#W6CUZK}>T2<swi<orjlC>*AFc49~?cYd3~1Mc-Q3I~WO$eF9!D7+#-wKwK;u
zUr$ycY$59Knm7>LV040AA}0?xDgtNt=6qNn{Du|}3DCMPDm$+5IX&ircCbsrjnFKW
zvue1-v=~B^<z<ASq<hiF?_~Faq{5BRYuad0dSA%IaLY{aZh~>h5Viy)SGZvt-JRb_
z%fVkEa|~}Q2BjPT3@jdEOU9y-clG@L97uEn^Wcni1w-_>iYB|Pj1azz4JmTyInvpO
zdas+wE1>ZTlj@EXm^wOsaMOu8GCZS<6(xIf1!w5ZFcV;<VV8D>E)5=Z^x^E-6=Wdk
zu~Y|>3IlfWQr%g)2e?tH+|6DAZqxy#^P8Pmx|Z}t=rS-?VIt)A4E3?f*vG=}N_Xww
z1@Iqb;$-(_JJ$}TaO`J}MOi%J-2`{X5l_aUTKZyW7ypsv|5^JV=@Z$qS=rN6lF2s)
ztv9nC{y=06gu94x`eU<`Z_3be1|xyp1^j^*XRLzK${B=2shn~K08?)}q?=m*>!}dj
zf@lnFEe%I0E$cRp5<}2RHX`(PjE35Wo2hb)yU8m$!c;lBdcB9x&`kku-CAfMgu(xL
z_^(Tj{p!;?>?ja?tR3yZ5(w<*hHM<7yt7t9W{Nf5URh<}^8|_pm@Rm7lnfP6!GZWY
z$X-guyi-Gl7b0XGgx7pRJQ!Wp&mcpyM%meN2^ILG<LAVw89J-zRQ7OKv>bt~tA69)
zERA?)9R+RpsEuZP*3Moev!n4YQF#M0PVMwwnki74_y^++-3l5%793zJ2=lLARgM({
z`yLo8J~(HY4s|E8r7Nb{atC6wyzk&T6kX?#gFVyn8!?t_Y5)}2g0oe{w0A6c1DI4e
zmK1zs52GMo0Uma5)Q+SE=VX~-N&)OMp?{k_T9tJg{bUH7veg}DQYptsnHh`J(r5`A
zO4&Ll6^1W(&64BrMdhhN{7)&sg#OEXK-sk7@mSUiO|dd@OQ7fCz1`R=@FB0p_AT?$
zPeyHlksWjDl$L`(vS#q9FUTmA2L?yh-Imx%3)e$da~2G1`T6iW;t$4xQ$~*(`p#f@
zOcefLzH1N*Ze3DXgZ%<u;Ln0vb!pQae%k|I)e?AOrllYHg+G|*%XYoIBf?x6$cw6R
z49-Ka`MeMRBS3%^I)iHk2D<`m6S&#%lXS2R&fu+R<Pp}#*mY@N6(d7WXF%^~b5GLZ
z^nqTzy^L%m;dH`<gewU@_gVwm?IeFk@*$F+dR+u}CvU`1@ABS8R+Ho=B)9iQo81Ug
zeNpa9INlenO(xvqx82Xk+Uk`rdbzOQs-vM-)ltnNu7?}hq&Sqni%0n~pbP8U3jJ&Z
z^k9u!qtS#>hz+vP=e_q(eopA8uK_=+K0%jlgkOHS_)AFW4s<E^J^S9ssuL!DucK4i
z_o&V!r<sJG67D0sNcfbn>>dhC*l$nEJw`T>aMhkUdoHst;lk3$uJ6eQcWrO}9uF1-
zXk;z-ViME$VqEW#JcV%6-ZeTnZ71?}40<|9p3YM+*L@hE>b?s5JXlkZJy_>`twEkl
z?mz#4+AjHsO$!iv5RN4DEt~@p#}-!DXJiu!F|6~k)*zogh6%cP4E_HGs2iEbFGwm-
z4edUGa<{XHLkVXRetH%wVi(~}!q<d#&Y^q#b67PgB&QROJckzEJ%{BwmvGrR%w8e5
zLv^3Ka?Z#ap9eoWn|cAg*1e2|1`@tYIQufX?<aiPALXN$(S*wtlt&ZJC)|34N{-|T
zSFwU3u43bAaut2fy*g)454Q3uR?Vm2lFj_DG4?l?E-mX^Lr>|1gRfyCKD&-Z_x=rZ
zpLq*S`%=}cn1}M|JLul;0iyX2#4dld_+#fgowdrIaI{&LC3ppS9W(TDp6}uWtT}X7
zU)JAwnTrNX*qN{eVP+Z5pAcJGh|J==mDs%l$i_PFB-ZmsWV-V{Vv&cDO?N&-Y}FBD
z^PNu+`<>V_=Zh|y4pF51gvxc!H(@+rtnV>oo1O2wl!qZ;1F%Z02pA^j_%Em{W_M2@
zd+hv-bTXm;ICEF@DHCck!Nwo3_Arl|SvgaAVs|be^E3Ga)625$zap(>3U<W^Ke&t$
z#+o9Coh!x4UUAelE5)wc8AjL->ds77kZmCrXNsce$3b11SuIl>#-Ow7*U@MbQ+<li
z=Y}I&P>SW3Vt<xmp*J1FrIlh|lw#LQF}*^OW58CW*n6eeBRj)9$>PRjBlEk9d1`HH
zPMK)+8`|t>YESIlQfy->_CPO1r`&T4c(@cRci&MrsubI0XPB7x9$;cHdSv5ZQD<hI
zO`VCYd4w$8)Qi~60v+iv(?D0wV*GyPoVEA6#)H@pzsG<Uzo&rj`Z){EmidJWPsaTl
z0r~+3vG4pl1ODjW3$)vO1_ACTJnNGM@;x8;W&r!G;!{9B|EFNNsL~4vJ8R$QP)~M_
zu>21PbReyNI1M=E2XnO`mQ>kO3t~M9hXHbyUHK^l3(cQj&6ADJKLz+%KKj2#=v#0a
z?(qL5@F^taQD8X(XSIS74MD6!5GFl2s3pi<gW3QN2tq%YF-(Ld3~^7G9>k1Q9z*J6
zN;_5=;1tBBRIxY}r@CVBryzF>&UcDsS;3J;OiF&ZC%gRf8Nm2siLe~J7L2*P7u?s#
znJEP2Z9YRm-cMLk9zkqDNF=ypES%+3g}c;s_F+{_*V(F@L2;#O9^iwjn4p(ccR*xy
ze!<8_5N`VAOgLv%LW{r;=F*d8ooWz;`ToE;h^2+voc~X9kN(et|6ZYOptSV=eQ|L%
zDHM}9rHU|d_H*cY6Bga~QCMZeV69xG+D&l(wpvRtcZIO15+((G8ja1uUYSy@?ZRx%
zsn$+}T?l&+rt9=GgfNqEB;gps@qkd6Vc2{M!!Ux2gr3#0cCjuw8&(}_cS-e7Q4-lS
zbE@^@>WCW&za~5cD62b&{aPI>;#zh6eQ<hQeLn2JjSX*UNU?q${>oI`@};N4;nM4F
z@Pm2PSWLt#z<PvDBhHvL);1#2sIgAu(hIOSxe1Y)3unoMG8=;<v3*P;To%~|U(U8I
z5^LfB;iX6y2=ENl8tWVt<f5@2QQ?3Cqv8NZMq$L0qY^-#7lo$lMz;lQ5{*XN6Ap;R
z<Yq==B1RKV08FwLMNf7~vfd~BlkguvJ;`dQfeKebPeLEUDu5iC)kZ*B)YuC+v(><2
z-(F(}M02<XHrVSmUQtcobxF1Q#@q+2Oc+X7gRm}PBH`PFX^6VD7m-1P7Q*p>acp{w
z3k*t*b^mQFy8Ie@9}@H|78BuB6H6<;Cbkc3q@0bZiLGQi;mMjfh`j{F<W6wK_OaYG
z)fy1@5ny#fJ(_;v2-^^L1LW+JxSs$E<DOEp!eF=J&H?^TXs&e*v_+K=Th>|**t-@M
zyG)i$boDxDr%9bjZrE(GEM;>0*Fkw|o$27dLa#F)evZ~z4ER?aH1usOVsa#U@~L~?
zxwutl)%^*gA5S=ya1r5Zz>-S2?uMQ7Dm)`;tXJG=Q>@|jCcC6q8xkfHS_o&=(^0Vk
zNRo9Y;b}kv`=?$NcTVF!XYTRU+@;YZYiK++tIYVvJjuEd<REq|KFd9bor#Y$7S9@w
z;>SVQ7vz&AV5zt!VAc2}VAWtXC0Q*AXb1Y24(dq>b0EMh@`_UqXCIMlu8)DM02Y@)
z&-!!RQ>}vuM*(s+v;I?_YF$$w2bpbzdkBvZ{z7<~@G@Z$;RC{#fVvke+aMouAX~U>
zMAaHxc2BZ4Y=GUSBVk{{EW)XT9};c_<V<UbXd*02Sh*qQIGW_zgbf<rh2%DE_z<ua
zxxC%*u{(_a-SCGEARJEkUc-EFnLx6Y<QWa0g3DaOMTE=9eRV@@+nXq|FA2XV(}xJp
z5Ec<WBQ!U{gjQ;ViK|7jUYC9v5;iAnP1u&OBVj6GPr^QpUP4l^oH|=iG=633Y`s8u
zlkhPiYl80XgnodWMKr-E|D&9AN_Bhk^nXxX|4~|9nqc|$Xo6)nfN*G&&alyHA$c@e
zevjl_l4lbxCj7XGj_LZGh%CDANtUaDYf>hBO6XYN2b$))YwUSb9FkuWz6SJSA`#u&
zCCV`o8)jPh%g}7QBwlteZpiJzW_hGq(-UXu@G~S4$#B98O=fu%dm5EE58THC2C+$r
z^WB1=E23P|RAbrf#8u$(LE?IkICd%#$4A}_d(do%o-;GZ8hcUWFqDVPQn_ZB;lO67
z{i0bL1C0OWnqxb!Oc+Mkh_C}-5bNF?2hoAeu`3P(7tY2JPHK*Z<}}AXy@a$Y$$b;y
z4s!XPuz>Ioxt}7uM0l%ta2aU-cbel!_mJ>O^SdBp<1#Sk7Kj)<Y+|;+=)DLlwZKGF
zCzOdm|FNuIi-+#9tYZso2mMGph;TxS^^p5XAlG4^ll(=C$uLDd1@wgLkCy8_H0IXw
zE=;MugrO~48Z_1mrVx!aZi!QEo0dCZH#52AKEUoRX(DcU2;_03olh?73A?p=3<W;4
z)nm|(ZS@jxYAdv}kZ^S?%*KvZysXB$w!wDOSErxhZMt~Eg0Kxvuesm?1xvV$+|elX
z@-|r1TfsfmdbUl5XR7rI;cdd-0qd}5ZO)kMuvdhJwkW#-hO)A4Gr)e^wrD50Ee_8;
z+G0}rx7E>TW?RIpwit0X;bcNA*pl{v)wF?3d_nj<;i0z2!1UR+rvUqt9ck@W+Y8`w
zzb&>Bv;%7-@DFbXZ#NlA)CDlfTBhAA9hzQoqr(XNN%7xnmH&CEQrv5%wM#9RYW;w4
zHQ_eG9fW%cj}l%4)L~vH@`RAJ$H3(XD-wnh#sYe>ciWE!w6=dLQmtRN$3}FB@Kk%O
zl$(T42wgj%wlZNv2h_%s+=j3-;SfaKI-bZ3!Vd|*Av{LGZj$^L$>rZhqmgf;x%z}{
z3A>YfCgDWFIe<nuD8mxH_4e{|oIQSf6`)f`#J32m5$f^u(~dB`;|5TVl!}g@gS?<)
z9^glWTRQFlc~3`dCC56V>B}9z1(%y7-z9uV_=GT_(_zpyBka%#EvFIo?}U~uozTKW
zz0+AB(>tNj#e{1}ak|s0a!J;!ASYQLf_swHoP=^^!dSwDq*rh$(mV-U^1viaN@fy{
zALEm-$1h0ogZ+gMlL7%hNvaC?RZ=+M_k{Zie@fEP=?sx8g!htSz~v>$=Hxmc`z6;0
z3?)oRZUS=KWQ?GDGUi|i;RM3DgsTYi2n&<3{a+;izY)G9G^b!#zm&;3{8UfD+}9<i
z79{r~98E4$2$vFWO2Ll0Jq3+^mx8_dKuQZp&{=XRBK(`s+8L8LmC(5hmQcAa=u)W*
zj(W*m)<URJAnV25W>%LL<x{P50ijkpeGd5VO8KY@mezqT#{qvPJlh3J>l)#`E?8PT
z6{9hyV*V<CY-D>}zAa~D%~N3|%{mdLg4W3TAnI%=5ewlsLM!2P!nuTt0X4QS^<jC9
zId}OJqWLiubAKuo%i}WP-Bc{a=c(A*wXVhru(8+G6;Mu5a;EU<ivFt+#uMtTx?*8=
zB<xFQA$+eZ7Mk9*ESSLY3-)};MGnS$x?=u*B%hZ+hJ9>8=QNbd0m7@@39FGy9l#{(
zPlV?PZxH^j)6XkH*KX*^ACR*egiQ#O3Hx-zf*nAZK`x^SClbEj4YRR?<V}QM6UwW>
zSKY8|%B3OJA#~}EvR8K<e=tu*7Tmq10e0B|VdSFe_;W9G-`73E6CP)Qff;r*x+5Oz
zj#ql<N4mofFKCTS`bRsdG^nRq8-brBE3PDxtP^|Sz_k!i4)dODV~_Q?{=xCz(W_K*
zcCZIFx1TA%!5%nrN!ipBYq5M!Yyti~F+nBM3@pP*Tkj2R5Nkp{I}mp3iKW%I=c5X+
z|2wG#<QpyxF;5eFKB<sub&5fpMDilSO@!YN77!jKJWIGS5dGITA-Yl6Tjc(X(9{dv
zD-c#Dd>Mu=@lk-fwK4u!TM!15dVDCl#FE^O+#7?;*_2+`Bv<r$WlFJb48$^X?TzS3
z=tmd|SckRkgP20t6Ogk(ec;QO%+hBnU{0S|fHMg7g?;7$`G`DyO1O>i8$!7n&L{a$
zA6#0UAiO|$lkh%i{~{FW7@2!IUaq{Az6dP)r!RZUlZB*X*c#~=R{~)R!cIE<^ho~*
z6hjHerDN)*6WRzrA>0WjVp-jOn6u;{jHW5bFc|lH0sd3^q3NEa?ceWz5gElboP569
zZ`NBH+nKKCyQf&Y_QxXaLD;81Hm)Ir4{3FKhcL5$7Tnb%m)^(v&j$G=`EeS6{>uQS
zT4l0w2Vk<M6V4)>2Ux5{mtr|;Agq5lt2qz@;Dwm1SJ(k0mp=(#0H#_)1|e1>3@3~N
ztix6lt|Qz6$k{H!9|vI>oFu$VE_VnY6TTqigLiu2qg{hBSXn}U!eGLhgR!~QCAk@4
z%HZ!H-+c!E062m$7cj~C*%0jIUlQ&mJWLoe2;Hj@h7+zPJPq1dc6CUkF;-^};0Nx9
z2PZh48H!kbD4tDKBn%;pB7D*p-D?iL3iuWDg(T~r;6KUw3J|LdQC>&jHHDFl8h|*2
zFdGnd1EJR#+3sHGjuz@L{aQw(cd9jG7^+7PdkNQR6NcevHFMZqFujy;BjGN>LhzYn
z{h9Cr;XOdko(`Mt&6y$d1HiX3ZGa(}D*$U|Vkved97vdziHj6H6H9%YPTgh}k)?#P
z%WWi2UlSH)t_MR4`)mUI!)+^ICHF4@k5V)j$<O`Fuf1d0i_G9Mv8>GSNaKIy^;(9_
zyLh^H9kCv=9rccmKjn%1yKt^$T=e>HLz}!|{|Cy$$d->-?rLPo15s{|sCInUj)?S4
zwXP@J2xw%RYaxC<0<U`-yJMDij)3;BsXRG%N$@T1V0T8~`25F+#^Ca7M03EhG^4Az
z9H!$S_IgB?7wqPa#N!IjkvJDr9EqW-jKl(u9ErtShp;iZv>`c#uqPo->(KrOQsB`e
zsS(kZvfR%{HD{|wj)Ca+j>KMmVdO-Raa*w%H;qE~Yt`R}y<yxf4pL_(xT74TMvFFC
z1rRDV3$00;OF+hRm1Dk1x^++1D^o0N8sO}HI13YTDXXO+$+~hhHp9;dza#vS@Fd}7
z!h3{I2@PY=zbBzTVF+O)VI9K8glz~@2=%`36UT;)$#;)q*?_QM8q?Y@maQDKwtOu6
z473{iYD@?CD(h~N^T*&$_hFLH5Z)M*4B7`IKPO~kF_beQUbJh>gXDPwaAU@AEMfq-
za8^~PpBjYmgv|)wChRu0iyvp{Bo8Nimv9E*0>YJqpAc>zdmfAyjO`Ag&Qdhj2=5U-
z8QTZk`8dQfgq6qXn3kG@G2hk3VTxi1<HrpEPmMv=SO>yxg#8Fd5soLEN;rq`!*N5P
zBvymWncI6<-+_R|J!0c~H~dnqUl8slJoMfT-LF`E>b*OlzCd^dP-B(GWAtH!F@*IA
z+m62j74&(F%Kj-<tXEl0aV%~80C4XM7{@XR$BoBoodgKy1>-xzM#oaJuzGxme-OJd
z{;&tM|3~BTDnC9O+d-pj^eXGS1<9?!9m;?(nOxGcaWURIdx*cr24xQe%p~my(vBs0
zLiPx7$NfHyO#v6&MIHk#Gf6w2a0&X?X;(*M%fP9)B(`Ud@lUnxBK(f9fbbCEF~ZY?
z7YVNr-UN(ecfcsj3t%nD`ZwWgLgNH<aV0EI=tHPiq@N(ds(>1cBCI<BcZ3>}oHzkX
zr8UW&$-O(ty$Sn~b_mJtu<Na{(Ime|?h`>yvdRvO-8Ggio`5|9%NQ<C^$EB&^5uk$
zP&nUCz=Hje@C=zKq#40IehX+XflF}-HO|=rCDf9z9bpn-SHfO|{RxK>jvyRIIFWEF
z;gxJ14c*M%;xAi3l67_trgs71M}(UQzaZR4_!HrI!Xm&F>tBSg2~88RCAm+;rsqW%
zKp09GMOX_^WA!KI>+sW%NE5<D!sdi60gH3oF6=z4e^yRJTt~Qt@GHXIg!zPr2y6MH
z&tFJBOL&>Ei105!X&Lr^YWa7Ej`z<*M5EpvI!`MdbI^&f8)09<48n1QI^p|-3kg>e
zZiEpfjuj9dht*{qyR3&m!@N!S2cX9O0WFM=R%-vAR%|l<gh7C@EP^lwusHV(t<5W@
zS`!J|0y?pd)((D7EZLd{a&PM_4<|O1+(%k3!&e|CS<joC*i7qF;lvhMBjIZdYr&cm
z+e$KC?m4lLY#b%^udJ&e@YmL-;B<iSq}2sJJ#iTV!1$b7JZlvvWk_xsB<1Uoh!&8I
zEGiopaPQ^f(#lG>AQ!JBKgvb-&&Xvv;eK*Ik&Bzs7joaLsIhB$?nL;xlZz{|KXRc~
z7@LHKFm<Wc%^;^*za_+mnMw^a)rt)hhEhUolBrf~jH%Y6<g*A+j&5>rb36|$&W1L*
z8Z7nPC+pSV?8j>|-gHoTGM?X8os72|%-R>*IEd|-jQ2LkjdL8=f>^&PewFaBzDgxe
z_UEmi8snV|R{@*d_G$u~$+yuZ>(tf8#nH428{m{`eRm4t3_uREel4)DWC~tQz<m)q
ztX@t`8D9w&7gKPfy=cljP~W$^z<f0otKhAvJHd}n-QPfq7a_$F3<-Myn~_7OA`T}U
zN!SV8af$H+{EwfCr|7e$;`au3PwfYYH*=&|uTCA}r>9sS!Vm1~Orw>|G?f3Iwi!HC
zuY<Dpbi}ynxG*_49oxiHa;Y!_-G3mwFauY#PYKJ-ME7+wFM@@=Gp_><nT4Sy&q6<I
z2)_Z83pm*Sk9{8_Zc5nU{e=PY{)Zrz{yr|YEaZ;MFHg4W{q-J6)@|?O!u%URJW$23
zpUt@hq4MWo5--ldvve^RF_^Fo;jp>re>&lYxtJh%CxPC-4w@*Oi-#sx=Hk-vIjQ~T
zp^WFbDb|DYhWMpeF9E`J&wRx9=c9==^Y6kzwQ<3#fH>w22y2K17;4D^jBM)yJjgw~
z0F!ka++p+b0}Lha{*d>?*z^yo!O~;L2PMmd9ThfLPPHy7hd7h)#0Mx}BD_Voo!l!D
z{!T8nLB=*Q1bWTGso8<W?c>!4)<D?MScvFOSdP$#u<Ak`6=6hT2;&J`02Z6*wD3|u
zsx_6cJ7GHEK*C{w=o3%KM=YEL)^Z4A2%QMa5zZuBM7WahlZCT%2#`nQTf#!ZUkEP}
z77^Yfd_wq~kT1f>%z(uSEw^X~xC9f%5H<qjENU?>?-Cbd;rAjONjMb{)<4ULY$n`C
zc#7~2;Xj0)OE7Q*;k_kj&e?`og|MNmWT+l*+Xso5PB@QnDd7gf?SwxN{*0(w&k(r|
zCZOgBUl6)4MVGRK<q5qB{Rk@&Rw1lL7)cllSclaiYzkOhHc3k#L$Z1i4j~*xs86Jy
z1%w|FZY116xF4|C#EGTPz{Ews6l)QfhBws{{sjn^TFbD7r!2$OLl46Kgqeh62qzLw
z2Xtcd376~3aE@9JXrQY&1KYX`XQyw;{Q!CTd09*N`Vd}7II#=M@?n0vPVRRJ9})gd
z?)*d4nh47fdJ$G63?>XGj3uo5A<WQDtPznGA7Z*X5OyZ)N!Xt-gK#9_IKqj9Qwe7i
zE++ht@MFSH3G)Cw*=~r%ll?$=knpDuVg2LDP7=95c#ZH5;UmJQgs%vlmZJ$b!t#LS
znIB;YVKiYqKqq#0d6^(5c7HjR+26}CW9AizZxIFq2C=vmZw2X2tlkQL@LGRGAYh{v
zRRI%Mgafu%Q6s1hYrP`hy$<WN0yj%iN$yQJfN(e<OiL^A620O|YzNg=)(V0yw=y2E
zHesWcaWDdQByIPVIGGJxiKFDmmCpiU{GYfI2jID+SV6d+yygLVv3)Bs0=&wHwaUjB
z!E(Y~geN{ma}P;&Uo|iY?hRRmy=D~QWWq&&N!CvYx2<YvsKX9{3}*+c(6WAJ)p$th
zujF)_@OQ#*R^ukhiPg9(e39@b;RC`Kgr+s9Ek{_9FdWc})m;NCAGHtCY|ULrR$Ia(
z!ZgA@gadW@$t27o98Z`_ID>E=;bOv-glh>m5pE;gN%$RM0pStC6NDECuMyrMd_?$k
zjgF~%MZ{?>${vJXgaL%r2xAE237ZnOChSO<O4y5V5aBz7V+kh`P9vO4xP<VdwRd%h
zas!bqggXeoCoClViSRUFagnwQ8xNtbtwp>|_yDk2`($lq6<E#_8rPv*4iF~pb$6kn
zXRN~(vu@q{;PN#fjQ>TIQ0=`Q8$}dhGeC`{uish)&hiOu>vw^?hH&$GY&fnP(0_Hp
z4uHkcuiCH&qTEFI1>tVO9|?~W{z`Zo5ZZssT4>1d2`&?gDuEN5`)SE)pk3G`H@H!R
z(0?P!T}aL(>_J!++;Opm%MHsW#ASs0H=)fNgg&34`%Jo{sxHY(XnCSP{2UeDo6&1?
z!pzO+vWO6GuPVNw3<F3R?*(-a!R2MS5IB;88*7Vqwq|X?y|GWXz@4q^mo4ZnS60)u
z;(`pV72n$S=~j%fP^X`3fI+Ozwn=V5EOFa;7@N9p`vM~9w+#af--dVbPS}><8^rK(
zC5Y|a_8Vvmx8aHz=ZheAYTF}7%EfJe0^Zz)rk@lv4ug`|kEOc~5O#ub-ORq;k4bz|
zz^bEGFHvV6FjqIS9eM76V-FxsJ|MmR21{>8L;a>S1nu^Nh~FQqRmsSX9Q+ON)WH_u
z^57sYVxJVur3gywJBAv6XbJe7bLcl6f-N~D1N`(x0KCjFvX_Suf6v3n%tsKtkIV&(
zIC2jBKPh-KahV4&L0=#F74mxg$nW6u@{wyG-#&s#d~onD3Y8cxvjpv57S4$&t-_7$
zz){4Fc>|n`?Br3zt4FcW?i@`7_sj#E;fn6mLA+dfQjnue6kCwm9eFdr=hy>?b$`aN
z&40$iZ~yZSV|o6=v3?QddEVtmvE}(+mq*nsuk#vLjB(|8`V~LGpRcquz>(k8nJ8aJ
zWH)Xll;^c?RBc$Ew;|km<0i;gZ`=hecQdw8dEWeH9l)_S>jTcZiQ12DqW0&T!@z|V
zjR1@*`Vnwo(NBQ3q7#6h5$b!2(CZ1pGPjCA5qt|>>fXY@1AhCyX?ec*w|v0D-wpzv
zC)xGhQIG@fp?lmtOlT{Tdys4)dG)>Hpxr_8?R#fH{^uTMrpEn?AUD5{ayOmG{QG4S
z%ky>jF~I5jZ-IQ5@YQ`ZUG4#5=mShp!UHUcw;y0qD*b__6$^;f@mECYMw)qmM>@87
zBinG?2rge8&w;Ahd%O(DM~~}B&L6J`<j><(0n47K7>VYN0Xnw%%mWudyCd%k;MfC*
z-<-tSJ#Z3ktYsGo@0`3tVHZV}4vTk?8d>Yph$WrSh!>{1GaMeAwgC=4jfO0zr3vro
z(k3zwREfsus{xKZfVlHaxey~OID?7!<xC8?oI6t+LOm&%0K=DK(*IY{SGq94725xk
zg810d0WuGWQp1IjoxO-V8aFTEHpQP8o5vcN_!V2V_phx%4*oSBu+guwB4YlPbazOo
zW4>oyng#xkAAv;cZ1p8Hx8)L=&OFc-aN?Km)iN@_ukdcLCk1#Z>6n|$17+*MvufAz
zz@^-E3{{Qf8YI`fj>&3z9ZRJRxugK1opw#$w3FJz$aKeajk$wEgypmxj(&e*ILbU=
zf$_l6f29lP=SczH|L>T@+F#v-M7(@}?oSG8y)k+^jx-h>?)NpaI*$<lJ?u1p)U|oZ
zfb*syy62zeJ%T&`>DcAJ?Cg2u4BA7F@F9*T1wS<}ozTn!`Z<WeF;9a}V^gx6zSJC^
z#e%;=_aWY!89W$8e}(S3z~E6##a05tXQlD45Dw)w(=(fr{p7uyIgti+MZjQli~b7T
zxsQ5X9z1^o%1S`tp-`o4;By=v$|+{8eJ(h#&hUVgUFX!x=WYpexA;7CVA-YEET6{?
zx}|mo@fSL^^^M~tMl*clIX#I6DJXQx@@>P*uug%PoFy#FHyPFgqZP~W?ZqpwgLd6O
z?hOx@fJgFa;eM=MP%#_NE3wvgHiZYWDads2I^TC54`!E?GQ)QnhgX-;U!nUt-?cnk
zvHUVyeK(gd=e>?P=aa<BRYA{Fe6ITDflohTlYxB=EJiZZ6W@Fu$?6f)b4{Axk3gF$
zWjViNJc_j;mTL;~I}I$ESiZn0qFEQ|6O6t9HbUtzF*RAfWG<M{n(VyYr<<tBUQ1@u
z{rp88<{XR(&DBk_{Q`lOC7MqG>$1AUmY5Fu)ev=ABgIbo)dJR1u`8gf$2ur>A9VFt
z7h(&1Uic*ld}#&#6*{%>Z{@)H`oAq2NEPVx_x$sCBRierALqa}0Bg)L$!L)o`#}@7
zPBH8UP1!}oupcC{3L$8y$c+7<8EdZ?_JihZielIgTCm-UaUEKIOZG%j><6t_^{QxQ
zis_2qX5N~`63aE+_nRtOvj)VlMrVmO=neh~oKE@ML<jbzUAJCzWS*g@L!UcD3Tr~F
z$c+7`GiyyO*L2li-yu4)B%)XOUC3`2He9h<72|j+n@MZ|n^5sP(UpBdtkB%Rr$D5!
zt;D98TKgOYc2McCtEDj~YQu$Q>}vR`75u}5o(7-tufS<$#oM~*&SJ^yRrBJC$5{{7
zNU^;YF8~`L&G07`^LP(-Uh4QuVowxnTIp@kgGJ)|8rW4nsZuM^iwz}K#Bqd3m+?XL
z2Pz>ON4i2Yju(15n<>4TallAtJ5_!&_YDtCXHOLS7Fa*ljv`#ZoPO9BI)HUoEa8V^
zp##}?va*0#e$c87VqX)Jg+G{Gw=-XD2z#qKrU!LZwP89-BwA>~B7KJqA(qQ#SI*<_
zup^S0HdKz)-eEV1O=E3+6M#9>uyB=sRXL7Z*jvP=u?*iP+6We`bhj(V^U<uHUDr{2
zk9|ojm-z(r(I!IvBQP~Z9LG7GZ6P*=MFkAda!~<)1y1q6rbz-U%XhT)K6^wy3mI0-
zJl0Jmd+QI!E6!uzDs~gte72S%T)<rOXH{Fk+Ecg%Y*7Bs)jnWnbwyX?9}8W`t|)c_
z*dlgYF_(g4p^Mq<NKC;JmKN}VwuHSKC0Vb471~mEP_eXtb=orai=A!KK4j<ZEKgg`
zp4izp+DdjMI#HS#5Ky3f%sSOTHVtYfkFP-y{tDg41RT{$*vx<v4(!8#$IMoCt>&YD
zRmy#Tz-9*vM*|+R5(~eUV)sk2=cTN81UkkQ9QfG5N@U<ghjeVV`LEU7_0rK|;!2_|
zosH7QN=H;WE2WcEI{T%wa#Sys7ss6Cm-#C2Z%A(%mGEQ}cD*$$U9mlZ2E!T#?<|AA
zeC=>x9$(9b5i2xfKG(8Q#N@QLmW`L;pq{)9YuQZc(=;YPKdP-`vlZP8xnIZTD~2Vr
zj;&M-OJ*Hgtr(WYI<{UhEQ@vQOU1A(*0CdsVOgwWHx$FNSO-s+P%|+>S?FNqA4Rdw
z*D)3&l~@+*;6*BwLl-QIb?hFoh3t7?Wdr!6zd|QN&|1E}n7QMaRKh9*RX40>=2%qY
z_z?%pmslakaQY`Kf@qN$y?(;th~=8Xf*JtBcX;6RghoGQjftU|B*Ul7Lafk)rM87-
zDTbxCg=H&-rM89Xieag3Vbc}EQrn`l`HEt(ZDF4(hQ+pp?NtnmZ3{cC7&f6T?3`j)
zYFpSv#jw=2u*<~qsnoWxB4Ss~BOt$9*aPX4VeTPmE;TWS`2w5J78Xft2^$d5&#;9B
z5L>_o77h)|V=I&{Eg;kI1zT@tqYT^G7CU>-@FhE7XOj#&*abVAZP>*g+Sx+G*G$v#
z1A#C^^$J*N_!eHCjtmQU4Y0R}6|htOpBcVm!OG|Ppl=L&Sd5+RG3;fdiA{sG=2Wqd
zO|i2;@dMjy_qpGY&z$isY81m^LjfyS3m4Nw^LQciCncIWX((jj#0pq^z<I*~)>E-8
z-@Aq*ET%Sw!=$}79AmBVW$3_WRxIaqoMkG8Gv^7GMBx^&sfAyMonYJQq0a^EW>6KU
zlk8*yEM}4Z5ftlmimjkE7Pju@PN&&kVptZ34QJVD$xOJoJ<qNyR=!GCr}OMLV!5V(
zD!qU`Ay#OPsPd3qU{4imNbCi%B3c?;fM*SHF-^H2?R0^41PYASP?uR(VsZ_2nWZb;
z2UT*NuAn#g%XeO0Wx4~~SY<x2PaC6dGTQ~ZYiz${ro&a113OAA*Ys<Z)xb_8(^)Qi
zSS62NXKqa}V4(@qeVxTAhUvb}Qi)A7nS+tNM+{5mYp3gMDzSWli78@p6vM<6u{FeS
z0zBw+n|)?yKRMlDUlP+%dCKW7J8D;6a=OQ^+SzTV2kcKfd*}q$OHCR4$wvA+dy5#h
zgy&9=Sp#BVGx!_BpRB!|?J@kt=G(&^HaumkCDS1ndHgw>-wchS8I$oj>(oNBnHBww
zf3wlVa@pYElZKaY6Bp_*iv5Ov*jZu=SPrmP?6nGqP46`eY>7S#Y36v%rYMGM&DYGC
z*aD`1`}6Mb*Q}hPM}Ph)oN-+-|6_ku;ru7b=n6sOXcDLRA>J{@5|#@Lwv?1^B`~;n
zR_se)aCV~@F74sg0>z4Spm52rC|={5?F^Upun(bhvx9Fi*ricyMQ~%IojGlQlCd-Q
z?a)eKcU$^&+83P1OW46uIzy1&+*qQV<KM%9Z2;!ZZ&U8^QYOae!2?^N)gm+Iw+v5H
z4D(x-&sPld>&Xu)hWUlZ5L(M{cqvn!*Ha9#tFsDxgrb<=xA=Nu*u2IXz4&3tOxV+X
z_z7aNr~B}WDjb%KFTbI5ejz*H`?8dIsHX4`tI?0&C*3sDir}fhUdnJZ3g~`3rj1M+
z7MmZhM=aM=JH%k{<4vWGV<GzU&Wd3n`t#kyCbMQCvyA?{R$H`^ucd{o<rR4s#fFDG
zWEE9n@|~Xt&No)%14x(4ribM5N;;pf=nABKbUR86#~Q7~FA|%~R)?H4ROS`hOPwL8
zxiNq@BQ}M760#gvdtwFr>yYNgK%PVFs`+3@V_>r-<9N{%$O{z1iyk;k;T_QERsJxf
zhp{TJq*&dmJ&d6|o)}iex5jF`EwMsVc*s6u7$2R4;qt}vzyrXR5-VUBJ$w(Ed@f)i
zzw8dL&Ic&g8(28ED7N&MpTZ;f4xIvG6z7bQe7|HSQ|J|A6hBHV*YsBCIbf%W6~dbB
zs20s{D29uVXzrDai77PU;v<@eDTa%WXdbB;E<U1pBgJs>5zRX#>oOoNKBD;$rNqTY
zG`A{-i;rl&L@``^MDt~e;o>8jf2J5NKBD<H#c&xK&Ce5)OOa@Pix_72cVjevnoRRw
z5v{~xxFH1-BNt*Z+>MxAh{f=?lnxhSvD}B)G*g36WZ}ecAb(+u<#Be#oon(2c4l^l
zD|I_7?_8S?1qS)YfR&x=@*KM|)VUsCpxE1?-xw13Dm&X_sLyZM*?vO<-nug;8}qcr
z(2%DP!+|{3xiKGa*Bv%A<x}k}k2m9Uk?Az%H*s#pXLLm~xQIw`Zoxk%hU=mM&Mo<N
zrHc>90Cr5VEZ=PBc6=#q4iqpP^E>ha(!sUjsoGH;`F_%2(pETk;una?7L?4d6Vv7T
zHJRU1N^C;O{JCP-gp#>yH%wZg37b$ducR0@p=4f5F>FD}yuD)Bf|B_F#jph>^YMyd
z3rglWlIbRFLdkrgQeqQI=1YjlMw85U_rU0JU9`a&5=sp7w9B~*e@0BM<<q!JPxL8U
zP#P~sOtzpj?yq#%g1Yg_#3uXbSAF+8cjKLi%Cbo3ofX5fNasBj!?H-{>55@lr1K$)
zVOgZ}5sG11r1KeyVOgZ}Rf=I*r1Kq${fgIr>HKR&u`JU0ZpE-H()k`@vMkbhAu+j@
zPv<{LpR|@w=Xa$~TFR&M*Tk@#E<305dcCk@WZn1WvlZJMpg(4P`NxW4e*5w~#W25p
zd4Xb>-@g2eVwm5){EA|j-@g2rVwm5)ylih7A?CL)4^<57zAta27-Uxm+DTE&Z(p85
zOy;*QPbY@CD01%0M@XMEUi9aah{@XS&u0;nwcVdDR64Bf0elIuX{L8VH}e5}GcmOJ
z$XOr2e<dpGK7(IX49g;e-%$+9B7@&o49g;e|EU<3MFu?MB=d`9k->cw!?MWWF^XYX
zWbl@XVOeD8yp5t*_ZhssVptX#ydyDL78yL1n5_E@-dp;ly3gR_rBAB+4E_<ZX{I^w
zS&<CBL9vaY?!dMZ!$GftX&BePw$qBH;XL2Ys+uhPS38S=@2US`XAMkaxN|z@7tORV
zjpG#++aH=_8qXu`tgC4Px7t~6(?ssp7lP4fInZR~!8%bKE-j|XyscfC$EWfXJDX^l
z$}{XfXP9R28~xD?j+V<!vv`F8l4bdRZhD_zR4hIq-!zZ^Mhr*Nlcq)diPGU{xrmQQ
z*D>G%cK-Cvs72gFO4x8aJ0N;7uQCvIxV1G^Ea4Hvu+b!FHl84Lrn1$h8kh1!V!0;Y
zY6;p>-cIQnR(s5r@e~=()TP=T(=y&u>4t;uLq1?2&3}_ki$M7yA1;*;MIK+y$CP4I
zRKU(YN44dAwqjTPADEW&#fo8Vuiz^c!`fcKKP9%rR5$ET(@LJNbd$n1^N;vpV37aG
zruW09ijVk7rNq|#F~3L*k`{Ky^fAAwbl4A8@%u`*5_GHhUs6ZOUd><G*;KKbI}a);
z!!^9DoyD2gazA9cD&X}z*g?60N7>m_@hPukXL06@yosGn6`%1o#Fj8#J;D4rPqwo}
z^A_I2&f1!{@&0z!$@~Q$Mhve1c=c5Cmwbj@*~h$t&sWS`eV}<4UukEV=5P78#IPlt
zG<?s0k<8>({e-rMpCguQs#blhc@MuvOrFr}<##0$c<i&6zmQC)6QaG`Fc=Fem({C&
z(y*65BesAgSGSt?@g75p3-Pew2R_iw)))$SHZghCT*xOXhF8snJlF2iW-jDgrH(zT
zp2vUWI~3E+;j7F)^6wP&2)|=G%nKCr3ID`=gx@AMja35nGhaRw6H^FF@~!6Me2rwL
z$nb~k6ko4cJz}3K)|}X9iY0|V2A^Lj)>9|?jiN&#`cpigSOM&l8w{s;5wTn-?!D$S
z{H0{f9FfP*@f*W1F-us5hy&(x@Gb{r(^zoCG4lm}gqYmxxX8~Dlil|szb$=2_tmEw
zf8~#e%KrN+e=e2Oo-c7eoQx`FmW)<Hm$)Y}*+(vMKc$0pulX{sqIAO|ZUBo=y3GL>
z%~yDw(v6L{p#yE8l-Mh;^5#m3o$@O0pmY->9<pn^i_*=GFc_}!-b(i&=&tiYO1BPl
z*ZByg+XA{9e70iW5&J|k_H)F2vwnkrrIhC)PG~pzcf=-}u1AbD-{gf#cOP^`{3oS*
z3c4bGM(KFu3GEiYtaPrCW6ihtZKZoF@(=TE{z&PnM7{v_T<LJ}en;nUW&?kdO*JA7
zhCAFvGAi!7+*j$AMLlG9c^I*2Y)jN*U=tME9o5w3F5jit(Wn-{o+x$`*l#?>LRH9K
z0lUYCD3%rYklp9{HbuRok=`0vQrq{r|0ra#3Ek%{iA`gjqdU6X=cDZ`&E+A#P7G$l
z=z%W3b3+z}Tf%xrXSzJ*-HG8mveo=2w@PN365Z708K0p`%H~C90WDB$Y4ld}GhTKy
znwiGdMBg#}&Fk4&9)HPOEB0CRIG30FiDEmz=u2L4j12dEbT+Vb#eO88>l8Z~y&0^O
z9ZT~cc8f2-YsOd%IN20lV=X)oF^X8ODZa)@1H4{b=~~y=<HE&crAw)?AJ}ZA>s{lB
zix7*HZfK3;z*Z{V=o(GoYai>CZeopdz_yH~`A-gz2JtN^<(aub>{SehOM@6Wj`BoT
zzXq{_*km@N#!<~6UP~Qh;;_LW%<sxfU~e)CPsOk|8HJx>IK?@OD!^#|!#U1bL@1?4
zpognT#3?o>raZ6)imi$9bv29TifxMt0M<dV?_<_-7tuwrpJPtKTl3Q;qYVsKaqm4$
zS}wZ+Iycc^JP;kWN`1mZUERg(Y*a2_&tf87J;X7^%(1my%ZZQ)Qs*1n$kj`vDHavm
z($!bYR;($oiefLZg{)KT+pYodRR9dPkPQG9DAI{dGiAsAVGa^Qi0RWz3u0dY9jTO`
z#BSzQ#CwY6#ZDDf#4^dKQwEDk#N-_V!D6*t*T*$j>>?(I?y92fM2tSyWUcv_g$f_V
z7S+6C3Kc=brs=e!T}@P1%1>*aG*lBci51ec5+-UZhSN%zsHYfCD`BF(WHhUViA1Ht
zNhVCRQLHDiPKx0i6DHDBI34G>>SB|kI2%TaJjHM}j262T!x^uJ*h36^^I=0x@gp(p
zKZ9IriOZ6iTGz0+))BXe<(g7zi~;tDn7Ug-P`iiSqrEz`?z*B2bwk<m>xz(ES!=Fw
z(_QO|*2EStuec?y@!}m~c&hi6Yl4_UY_h3$+-}$UVm7f{(}=jQfT0cCr1uH`!L@;%
ztqwWp+E6T3;pWBZ4_PCzQqkpc216sUff(lSE7!(iE3tfmW}1jR#n4Psu}g*P>~qUC
zQS4Rhs{egpKPr|K{=~JJ_(idRTF-!;S1i2NKe}skaZS;BwS-%9@f$IWK99E$kCkq6
ztt^)of=$9aO*YM|^^a={5u(`2TARV=+r)~)r4d^QtA2mC7UEL}U2Bm?OlC=MEp{o2
zd1@o}5R(PmR-7O<nKmifiJMZ#4%e#Y)=v0L#>7lvXKO{dwHM8ZO*Y{u&_T3Q3`c<u
zqO)Q+B)u(qDuzSS+qxL2=*?PjZXLyN#U9p*2R2r*=e3%+brKU5D^t5Au<43@7?ACf
zB<3l$GVH!NNi0<idwQ~1r5JYfWU*1Ps<pFSQiPtTXhQA#<`nUbVjXLDaO*67P^??+
zuD}i}*1vW?w=Uv@V$*960d`Tb&uUxTQpF9$4%8k4?7m{xYd>-AD*jaLS?y=QUg?T@
z1U_+16UHgBe&@tI16D?{&5*-x!dtPiuxjZh0*Osw?sbG)cd<z6yz5MG>mgPs7Fg%9
za}TjzGH6eQZau{hN{3TiZ*gb}bv!x8^%f_TvUQE0-TH_Nilx*z1?&bf*?-f;6Uk^T
zpDyZ7#bnFwn=Vj>OH-#$>aOMKBAIkkOuOpBW{wyw89P$<q8qU3G!9H*ML_$Cfuvl(
zKD}^0rk`js1I^&j^1!XXNFoLU28<Vj#5+<)`x%3Tl~^wGtCt75gTx9LMn6bACx*>A
z(tVI9I}>eAVXkqt+=qyFXVLt(kd=#X=$;{-0ma$LKfcgyn7B=B0Xqwc87{JCqYe`@
zRlFl^%q7O!#<y~}2-7^tdc~)>j}UDoqv9SVIunzL87&47lbIMTb|J(0&l=y`eYB`K
zpUhAcW5kmWq|v4EgWbmppM}M`Z1-_u2C-Zgl`z$Pyx31n&K23>pkg>zWQ)U!;arg|
zeo_o)hiq|*80>%I^pGtsDkV-2+2RH<Igd>c)fQp&g*3_Jh#19i=ExB<h~=_`gip*?
z5wjS5=CV!+Tg{V2x?(+mO%rp76*8P-W{O3U=?o{C_r-Fh#7SnhSVIhp`vdoR;;3Y%
z?Fs+5E)=H}+mj&N7K%%X9R}SZQKZ;e&@B=ViRGGZCNy<fEM5{@$ety9<i1$MERhM-
z@j_~e*g;gzYD>gk$*6fP6$gn;Hs#cxDwc{TA7MZ_%q|mWiOIFVGV#)`JK(-d#C(iC
zWf`s%orp~{eNg4N`$r;;Sgy%SZ*Uf9U!t-OKNjyOhIRO{$W{#N@MAGUGOCJ?#bTwy
z8vR(TQ4A~eW3g2+tk93ecPboK+A48WF>|=S%Dh%wR1~XXy|}9wR>cPKlGqX!&|tq|
zqo}b8^R$2!G)NGeM66;*h}Bc<9I?iV6%lJqESJ4#kjFQPb;Pg?U+eCh#H!T{{$xRI
z7DtFJWPKYsdu$QU6nm#p8INruWDWW(gsX+7E?<cG#B$+U*xTa^5waF_xokqCJic8#
zQEVEqPV1y@UZaO>yI4zX0bANALFn7XCPmi+-7fMJ`;yo$74SPU^HQ<njVgL<7Zuk_
zqn8@BaQRB?R_t1%V2>T*pkntMHFen`OdF)nzrg1X;i(vJ+|*^KE-EVO*0`F-PGR~)
zdJSrv$G;a9HcD2D*uBk?wI^0<t7Kh?#cY#o5U~Qq#u3|{Cw0?^g?%B}Vq*F(MK=%)
z*)Ekk8=rIeUc5_8_WM0zf@0W&_J~c2VQ>CHY*7qbP=VN{7`CAO;tR=WF?&#ar5HBu
zgJPGiD7Nl{;#<YAJs%W%6vOs>P~<Cy?fIbCPiz6J)g(duC=L>n&Fe=I@+D?s5ld*&
z*5gM}VJ9+dY$pvzMWCHk^!P~(*{K&R(>#ue%w5O|*}*319w)>TV!7;ilRSP>cz=sJ
z*+@@{WMb3U1<;)mvx&)aIwh77!)A%PgNk9ZJSBW~qm^8S&GM8uxtr#{T;|dgY1nsC
z>DzRm$0^ZYF>Gw-#SF!;Azl>E6sy*BgvUj(=zAG1qUkx8OJbE`b%0$K_Z4dlKCg&p
zinWFKu8DW|)BKmq(ughsifOYn9qVyTlszEXcwje0nqt<bIUcvg48^8`?l-abkn}kl
ztUM5pewJ)8v318JTSqMI7s>WCo#OF89613D?|(T0%15HpNvXU=Eax<`Lbx{k#QaED
z6~o5%SWHn28{3~^hGN**{t}-{Mvd*c*s2&dw&&st#jveC7he&B`41c0bMduOVq<$Q
zzEcbv+jFspm>lz8hy$hADPohEdtx4cAucKApV-vpg}9|yHDV7HtCe^Tbk8KySyP~Y
zi+UF@zj7jZDLNCw2p4(06eEer+2OUApcv-qwa^vAJiQjP6vHgN77G-^EWH*>6~ipO
z7ONy<bo~d<V_cNQjfJRby%fW(Qlr*KF)VzeHb^lne3LeunCum1Z5=V(s+=lZv?G$4
zmL_JwCv~0>Tf#OZZuD@~2K<WgO=IKr#IHO&v@aDM1+1)A;Swsb15Fj>wC2PXvMq_<
zd6d_>+u44Px3nS3=ibD04=?RDF<FM*+7n{aOqUZ+Xx`dO#U3S&HG6ALmnnKksD8}D
zNAtAPa~^(LB|E$6QAw+AXAeCBwU)#R%`wehdW2{xiZyB`%7kd6rB74)W=&nHYEu;J
z(d-<sN5t}7Gn&CpfF`bB^!cu1n?2TnRv;?tH&lyP4C^;kYoHj`Z>ZK+F|6NEZHQu6
zzoFWXiedeRYR8Dlim9f>TxIYl2dFTulVaGn^e`<?QLNtxZI@zLzfsy=#jssOYnA>#
z-rhXU$Ljz8Kd;xdo$I2R!7ww-Fc|w1qEy7l*b{}U8C&*DmJ)J#HDl~$OUe?Z(0jrZ
zA}UEkg|bv8dZQ$YD0+ve-*bD-yu7{Z-RJZ9-hT7PnR7pn=Q+=_UFTX~*Y!0P!?zLZ
z8kL0bxTvm?DwKIQ{EWkBCp7!+$-#QY4?;_zXKpbr5{1-CB;Qzi0t@9)yT#bRq^>ou
z5`BxYS16EHCAxueiU_xgTG6)|%f7{Y+`>DJ9YoxRjf|Z_*oTdbkA$!f8yS0;=m@Hj
z;U5$cyR?z<ix75cBjcJ7c4;HSJc$l@Nos7oa+(Qyt*P;v5cXO#W4#de+TF$$B0L4T
zJ-UT)k%+6^8Xf}wo{FLMs*O=m2<zR(s4Rr_Ze!GDqI$P68i<C~ZeuhP!fLlM?iIpn
zw=ud(J{;|~##3hstKHss=8VsX_3mIS77^>+(Le<{*s7hj((PnyBn>-1HTnT#7ZLn)
zA+1$(H{%e|4uzK8jZHsdJ|56s#z`W~m+$p5^f}a!?umZT=mbBe5WGJ+-I&dynx57(
zx{tA)36|$nuaEJOP)wCRp#3hEbJOy@zDA?-SZJntF0D^=KVvabo_Z+_?sXd{h`2KS
zjYdDAWwzR!mJ3=M5ctnl@1&(i^*08I_+i@6=mEwGp-<DsdxMO1L~x%pZB+CiW53Y%
zY2%}Z8b{d@+LRj@VVq};o)#QoO#K-hE`Y}kr$vu2P6!=tIy?Fi;}jD9nCru|XQD?M
z>H?d7n6@Z-w9%)4mPbEoj47a%(PNEC1@v0<IAax2rh2zUZeXHO^dgp$sXl0NPE9n@
zi9%`*X*oh)5>5C8E&XhDfp8{arn=PPK=edolTeYChodJMG5_L1%eOoh9WsUyg;d>^
zXQQ)>nL@3>GTYcegyWkVm|~>-%K1KMxz?RxqzN5pnH!jHbY=4C%Kvm@0AWbsmH+9+
z7$Lm6Kg)PhGUC<!S;o_%;nn?F#$qA7x<AXv5jxS*i<xB{5yJZivyATxC^ztwaY@Mk
zp=E5$Q%1W>SksWY40U_jm?RY4s!Yt&#x9{GpxMTGp;oOb#LO`=E_1$at!|5%Z_F&9
z#xc(r$Akv9Y8$h_h`+*?<68BJdCpiU^pxLfzqi;}e3ivztsae8Vq6qj*D5n+sj>AM
zYj3xDE@rur{0GzSR{wzCkW_`Y1z@$0w%Q%D(%2+)u9aPEt+C8xt;j7Uisc%e=t0tK
zcwFJ2`G&Do=;LHRH?ZEQPtT5KE3b7@vGqm<ys7~UjcZ-G*ajmu3MpIF2HIq761u&0
zy<%I8Q!%Wiw!W*_JH~mTHm%zhd)N4#iDtrkMk0LJfUloqM7?L+Lxi)Wr(f)SV<aK3
z-8+pjLbwL*G{y?y8o1LK&qQnBPUA_@a1GpPOcTO2aHla_2-m=!#<P+S*T7xIQXyQr
z{f~{81#u1BW8@Hp)Z49d1AC1`cytx};uE6vM11deuQ3#UD9>xzoMQWo(L{NwM4MD^
zzwxwCxi$-m?Kkk%@Ysjt+AJz|z<8Tzfv()<#bO72;}gMpfS(&D#Iz|CbI9=E71rUU
z^pKH8#Qk*0XeEUGbjWBcg#C2LXwO9bbjau|8urs6qo)w|(;>s}Cx{(&$QU9Sv1{^;
zM})9v4jW^IaPM%$@QHA*mK!)~OeMk*%_(-&XbSI@4)2=3G4Pevu-~NXOec)RLRgs-
z#tNU2j`L3#W*nM^V13?H>^ozZ&{J*liv3{hif3&>o0aa5#xQ!s7ae|G>?flLyk9Kr
z@S>4MG)Li4!!JfpAv~h^)fgl6YnwC0E*tYp`&2h_|C=!yUcH9nq}u*m>~~{66Sz2N
z{%#x+4R2KbVO$f!pR)a7c;zS`^~E1X5>ZGcw>|6rVRT|m-BsdBF=f_IM$0*>X4^pV
zfH?_Y=7ZR-ty|nMuZs9k+t}i^*{K4W&QlMyty;XOd8B|E7B6OgRI$)uDf5f#2r|K6
zo;9v*`(P<EOkUg8#p4U;&UQnJClP`FJga@XgJ!t`v0uAj(PZ-k70Nr#@}`x74i~6d
z?Zy``Z<ZHY*zS&C1v8asj(U-(gJ{cBCKaz>K2Sj8i&r!sETGB7Q_KNKxc^%V87rH^
zMO@o%Qt`^>xB?nqyox!cfF>8OYR(sWzWwaz>gJ0?JP~V{uM+VdzJ~dR&_CMe25OjR
zg*Flym9R;$|JzQOK$xv|6V(wq-2R-ZVK!o-@vULjtc)39UvV!Mnjz$M$cU<8&KD}z
zA>XTI9u&gEjoPNJiuq0ka42e<yNNP=<+a^b{1)>_4HmKUZ#DbYM9Nn6I~+7`Gbai4
zDtFdxXdV*6LT@)4!Fwan@~#q}7QfwG#Y7do)4VELuW}htcbb#n9SdlQ`5K$=5QUVV
z)8U`R8=J>O+|c1f@h0X~q3s>c7H?*jzL_#op)Je`OmJf<H_*bYFNB4*F#8K_=<sXt
z7Un{s?HztE-qO@{uoRw8t<9-Ss=eQFc64iVn_xGfHYPmM45lG9wPS9et=Uir9kw-(
z5b*&<TQlz#wk*=gG~1e=3Snj1naK@UE8nS2iFW1!q57T9y6w%4LXA54_m#NUJTKU;
zQ}+@b&2_hO#-5$}mFQ$15gOEKc!{oN)7w~ktkdWcJ<N=TOtU(TFVV|9*otXkrzcDF
zHqQvX1P=R{d97KyRPC(W*StuStzPdm)i2S{T+@NYcRRuT3v<8FC!G$O51Ge=j(|4M
zJS%jT=qgdRy4q=OiGk*_j#vs$uc0P9L`<XYwOw2y!|W-9^J%1ck?3RqH+z4S+4FvO
zU%PW|V6?fd6H_yyOGI;2-_9#bj5cd_W*4}8j4_8jz%HKXeAa!;94myAZLE1!2!~>v
zc?W)(8>Zge&aamkXAWng`82^d$B2mIJHebPgc&E8n}k+(eyhX;^ODfI&f7~&G<$aA
zLf`59afy(5k%<b;GPAm~wmI#rn`NF5THX1J5|hngJy`p-^RW_BO}}YR#<E?`x--qz
zLhp1wU1FBmlPIKWfcCUGRkYiHW}B;ou+TZ?2_|ws-z?IL%Us+gH!$BUBeasJhS0_?
z=hS@jR-aKa-gO<dEFjaIZ+0%A%O##M`xnq3C7v~t9wdiQO3B#g&3Xlt6ua1LQ9zYr
zUod+XP@UM9%q6{P|A(7X<Ji?^PVaCrEn{=cjC3SE+*oIh7sA7hb>>7NJlt4k&Sav)
zjdkX1B0j@iXMQV|xWCUeFACwoN3MA_o%Vlu8V^2lO|uU<q@D5W=BIs;;Ab)q<OVjF
z&-P~x4@@?gONH>j<W2KsAv`eIWPV7Lt)F|~T9Ga0K_->jH8-%uY&3vM3A80D^$@(w
z4qbF6Oa{bR+N<3Cv0Kb+q3&JbDMvF$s6SY~Yi<z2N&2pNM5sP&l<%5V2XZMRyLOL#
z*K982ckLa!&3spAM%VG)`{rIGc>Yr@>zWU!2T?}7rt3Mi!z{-{^J0ftl}Y7w%lCGe
zj|yScJ}`YDtXiHqRS2t=XYLTfs^yv9;KHiqnI(u||A%$kX_gfc>-LdZRj60FF|i++
zu|qiH-fmCC?ltQ?%(OV=tow;s^bw?x%I}sL`>EMT=v24dzyULxC|mv9?W}vie42@x
zbkN+&<U@Dodk4+9kzDA_-Qh~OSxIPf+ClR(v%V0nUZ0z5g|NL}nA?Q#QsozB$|x?S
zLHCTPFU*5NO}eK?<(tW)S!>z7d+e8H2O<C7?lWQ!n=xZp?B4yf{>n^d(*3%hQ~xxZ
z3S|(r6H7dm_@}v5$cJhlH}l1EM)y?jxOs|++I!qQFP1oH$IZ(^{e5V~*Jkihc8{a>
zwV5LH1r++VdAHDUq7Fi5iPD8ucfLRNYjc~>WzfDgJ3Pi^27Ann{np$nRHDbi*ze4W
zV_8e;0oNJ6H>)sGO}{tmh=`s4y%`e1?*74?E`;uXFc%8pX#ZfI5vtn*sp;eFqS3Qw
zzc$MFt$Vy0`=c2<juX50SQ~rJ9K@vi_c*71GDk5{C4Mr;izW8RPv%r1Jf!}~+$OZT
z^M=@;&939IOg^x<Xud-PmvlP65PQ-5N@#uc9^<`V%pb!dku`xUlic?0*k8<4q0P_c
zegpNz%T<@m(NC}m*5b06BZPi0o9Bg&^w<#lo7r$8TcY1<<|Lu-d%O_)ySa;Kf%?A3
zN3nmH`2Jixls?kqvslAQD_DT@J#D2ksm;%}Jpq-t(&PPD&#F3!GhFHMO>7Zs5D~7}
z2hC_}A`!2(G1iN$>ExalR59ySCb&m6-YaJ9C*sw-nDv<uuI9z8LqfQk7qbpCsY^a=
zQ^l;WM8pNWm~}!37w}@%4??(p7qfnrjJRnOw=N6eie1uDA#6k*-R+OFv=FY?@m4n?
zZc-U5g9w}Cn`WZ5ibZNulC_SB+LUA+BH}hBS>Fm_o06<kLfEDx>jx&<LnT>1i-t`~
zvMvi@lak;?@KjOUCHXqZ(u}lEDr@x-!Zww+1_|L_sG>DO2-}omJxYXaI_p-k78CI>
zRkg0NC0+BaX8j?A)vjg*Gub^>+plI>j8yMxmLnq8yP6dxg!Qgwl@!9EsAeTfJ{*eb
zRz)GKb}g&A5LWwUtG*CcyN(58gu`SF>iJsW7T<b`#04s?SB;XlSUE!Ndetde->R5}
zHN|H%f<+rz^_X;*Ue}7;Zrwo?(tUabi{5VCP4s?|VZBnlJFK=sV|(QTbt1}wdp&oQ
zywe&%#AP<J{IQIB2V`t)%@NuM85>)#FhRy<CGWD<3jGtbCe{w2^N_Epl~44(ak*EU
zl1;7eM7s=@sg|0|(-JQhH?w9F@goGytV2Fww!Znn9wnPu$Jo?u^k5&LQ$p<@O!b;s
z=Y_fvT@rfe!F<r1Y;xg_dT?OLyRB%UNnm-m6({r*Sl(?V3oQn%xm7ir7K1!D2gK&q
zZ6a<3G0kcsv<tK}tCi3}&{|j>guVu?h1E^yJZLSgK0<$h*3!xlit0VAWGibdQKl~4
zdnC}LY&tf})G58k0!|gvTY6tB(#m>9s8R1!ua&io2<Likpp~_L3br?--bzQBFpcTs
z^n9=!JDurE&{|uwi89rR^p{Guwl>Y6ehQpRPxabb6KBz}Szh2u`aepxwXy+WUIy$w
z`5-P3Dh|}ndPS&QpMfRsvDOGxC)y}<8__nRkZRWF4X_+Mn=5mFpWMK`)>xs3h=x4_
znh)z0PK<l4bqmlGYr3W6z1Fa2nMQ)?eb!c@Y;`XE{gU@t@FOFz<h{}TR#T!(ZS*}`
z@_wt8P)y$oK*Nag+@!v#UMK50q3V6}fp!r2*rmauovlVo*`ZtGkCI)i-a=FQjxG6s
zHBe|?U#HXq))=7|pwO<?QlZs-qe^wPatbKl>t^jEdf&s1vb&Wpgd1gd>vy7%uiohU
zN68*m@(b+#gT5t8^|Zzc?dw~iRBvn5i>&4MtyU`CN_vUuyS}%S>TAK1pww&Uz;b}K
zZUxgHeeWpskk#&GCa2#Wr3P6$go^cRR%(c~VkK*SIS_|hv8xb6s!G4srG{Ilh%#0E
ze)pFeVJ%zDrcEK^NNeUlka*BWSqpQJcqm3$9~0ryGPcwx>sSFDG)G&Pi14ywZeWac
z&udhse(a8ZsoogNCk*MS{Vu36)@vfp>F1XkV{H&^X}`%p@35x+(eLoH#m*QB{<eO(
zfyb;PYYJ=inDxk7DqWTApYJ_pJ;|iY_P?OUTGNGU_CKx1S__2k0PS&Wxll{c9=Bc-
z>IB+2YlF~(ppCP35J4~aFn7mWP1m7A-a5xytqLeubiCD(2!6oRKh>LHO%z%RRhwX~
zU{b64KU?Yv>#9(0f4IwJK|ev6@RAeAH_>`nXd75gv?dggpYQqBa=~3-I?4J}XfL>!
zWL*_H2wKRh^g0)M1d0h+w-ivm_oUU8h_{DKtB+{tKFgXaw5|WrQd!o50?PNj$<|gv
zo)Xzs{Ws7>p8Gvy%(jLIT_74MbPcMOZH0uK0jb^;Yno880r@}+h01_7)mkQ$0@_q-
zEm1b?mZ0&|tV1jY8V-PaUe-hF$$g*+m`=CGGSLz<!_pg2<6)X%#Srn1aE6t@q<ewG
znO1F~K~Ty}tBKGk&}La(geHJC%eMwILTz3y^^`SIXflXTTh9p1gN(DSSA~`hh$=PP
z+EhUK-W+SM&}##nQgf|~1=ObGJS%o1589gp#+ICKRTA1o<ToUor}789R%*UAlZc06
zfz{wm%1CWmU^N!PHZ8E)31OR_wK@r5o1V4$37HSIDY?*^MwA!8COv1pAQb&jzW2Pf
z!5739F0$Sh!WJ&FJ}#hqZ?ScdiH2f{)nQZNP%N>!66Lv#A4>I>Sm{C?z{L`4uuwnH
zmRgSpjUak_lkC4A2h*k2lOkq<_<}WEXf9|kSo4H%=eo>VM8q>;nU&94VD7-&z%uIu
z5!@ynm=U$iO5ThW%?rE)+KW~lqL9iNnC87`4c|=r?~r;E@FnX}5w{H7S!#uqCG_6F
zN26Y`ewSi)LoutZ+u!0szZ#h8t+tvAogdgIdbQPQ3u+-190ZSXT0P%pDmEz1d)2D?
z4(Ce-`iGSRg!dK#H3p@6Io4GX8xGo8D#z;jE}J$VbW5o<R-RCYK^alGR=!a8LHXVr
z))}FG;BdV);yrda8p>R6O(5d=wBG8u9W`F<*IQXgegWS5K8oC>>#adduvK88&3BNd
z?i!pAh0YafJ{Yb#S(}7f4<7Gru#!Ju%LfL3S89W`O=!U2A4_ets^+maX7ELznM81H
zB{cZ=Qk$&!oh;58?8a@eItV>GxLDlV)+(V@kntU>|1P#%5AL^FT|Yz$sdvHQHml}G
zO#24M$GvCm7CHi!JFKa@S^Hsd`M4d{xII(~+*=ru8`x>hWK`vc95i=YdM}CUHqdri
zJ%w5i$@g|yIYQ}R`Jr_}Xe7`_R@F~9-!!0)tyMxV3>ok3wvGs`AM$GKZmY<rZ0YX>
z7kjK!Mmjv)W3?`zx^a7~o=mU<8t;8#truF_AFeD}G5e?({oRm;ai3bFh0YJT3+Rl{
zWpKaGYPFv&ouOyleby?WlK#+hYQMFGQB@pzSKNN<pitGJaDmGDMd;?CX>kXv!~<OK
z-2M&YKC{w@@R#HF0Cg9-b!eBk&#h4flpc4;nkv)`v@fmY1>~p49kDhFR&FyS?w{5!
zp?W~atYbuZa9?;qv9GP9gXo^`Ab(?3C*t}1jn$BdC-67c>z{E&S9g9l?i=ekQKqUe
z{G+&&R`TblWvbf45BPE4Su?+2)4NK%8~43+f+$nnG5ko}S*zV4Hf=HdySQ`KwtS?J
zx^MVTaTl!QBTUI{FUS32oj=CZYq*O4m$mg9riX{$6o1+3dXj0}@Pzo^tc$0R=BO#d
zE64l4TRl!Q&IDBU6rq*_>cj`_g+w7WXLxSFvNs7W8h%^6Wq1973ta=`*zsqXwgS2K
z>>rsv8h$yhh~4}=(^o)6?Mpu~{Qz{6Z?C_=czJk}_$a&iMW(>RP2ywh93l7N*73#d
zVZX4J^zh}l6851>OqCwKFFw{buQ1hmxJP`P-RUY*eV_z;-8Cd0rZV<XA{?f=ab;}(
z9HVai@F*|I{zK@&hts2y?3mv%W48Vle%Mvkt{`--etJ|{yMfTChc6Z>XZH}A`tT*7
zETJV24~S2;PYLBbJQOJX4=!`d!z1I%+q-<hJZMvSyQvD2!+nskg56o@7*wr-Jy7Tu
zs9FVkoRBwSlvmN7DO6!ZdQ?Swna~|0M#iVuW`N7QZ^Y%e6#H=^++xPYSF)c9_$V&W
zw+;=(SGHG**bJzuy-jGyh#B$K?azds0IF$!FI2hBjQHC2RiS!7b?n$6mdRU8J-ee2
zK67!4{U8w!#Vz)*U=Z)E^H|(sParWHe(~Ntwt+ocD51*o_*?CliLl-);~Uy<70|l)
z+wD&ZXmk7>_6ea|hi;F*)4ozbyW<<%MGbCl>5R|go7iQ6!2bf>3{0Ea^+jwpba#9+
zyM<5{Fl}ykEzpj}r`dyr>SvseZ)uMg8ZzQ^d~18QP*c#_+Aj({0opzGn?jY_oQ}WO
z{tyZ7t?PP#9qnTza<|=YCz;%d*lnHc>O|aao$Q80+-sfeR!ne^Hp=T_cNH2mAU&#!
zJy_`8j8WbL_V}=6Mtal(_G}{fZSByEk?~#aiy}UraXGH5J=j9`I24!SyV;pU*!h3N
zcefV`-8xh!^sv_nmCh)h(97N~)C{x-?JtF@fR=8b5gIb0Oagq8(59jA^%H>o>{5*I
zz)hKi0d`fPdO!p1rbOH`gY74TuxEzY(}}oehS&><@W}qGJH*~9)N;UhZ>W7q=tDR$
z8ftfPsDb!yCB&YBOhXDNBWkEUh6s=I>n04h7Z+&3q8WB^&HeO2MymISU0UdijC`OD
zLU@yFq&<NNN@<-i((dkJKDa9C!!^V)_5eY=zBtAnB!t%&$JiN6ba`=%J(7s8QjW1-
z6HC0<_^7>J2ro81YHt<7i;a)kJD3z+Y<$dq+#~n!GcWjU(KvgOAYN^pU{4XktBp_C
zIYc<w?oXIx|3<{_GwpIkq!m!nEW3gbHX_TeB!rE~va2#tBeLx3qCvHN5N{L2dS}@k
zgs|ROc2~)W^`30U6%E&WnLE`kD}>daZdVn;YR|CS-Gr9-;*{PAPuatXa0m~Yv+W5)
z+4=$;(D-xgEW(h!21hh=>{&#7y?U-aTL{}U*PbVYZJKK@V4^n7wHJzpLowHWK?s{P
z*M3C^n>5#cP4Z!r=E43?5HI{Lu(t?dn-<#Jg|JP}*~f^o^^8ZpSBvdaL?ON4k%0+|
z?VpISg~Jn;*g6VZpG~hXe8Fx&#Dn&NJ(`FcxXkt+6T}uSv&RWx3zykXFi{Ja*;%4t
z3zyk5gs_Fn?72eN!e#bi$%idmZtoDn2ClF_7QzO;V(<3_v4tz`d?K7|PbR!-pCjUW
z=h%O+M!&^>&32-(g&~c<#edC?A>uZzv6F<bNo(xtLfE7=_H9hmq&0T)Xxjhr?@QL$
z9mN#ew8nl=2-~#A9wr&FO>6D7LfEF)?RSK*P3!I5LfE7Y_7Ng%(m`{R{R0s<X|sJc
zn)iRyrnl^0NaQxXW&h5_&>e^^c99sG`5N1_#f}%kHf^yhF;Sbg*!4uiVcKFh5yB>I
zvD*n@leXC1f$;o~7KN?$5EkjTpYPg_3t^kyv!@7Qo3`7}5^<Y8u$M9E6OUX_dG;zI
z*qR<Wt@G?$)>NsHaFSzhAwqwt-cEZv5?;T>F5PK=SRhVM_{jcLsLaT7YL9(X2p{a*
zW1kmVSbJ{59{cuU)HABe$cj;W?WRI?MlMX)Yqu0?HgajgCw5n&kZM121<+a|KTq`;
z`C7t0`yDYIHZm7zkI<tdQ@wrm5ur&VFQ|R?4?@#NZUD=RLi0y%1~Q6sW$@J{`)p6>
zg^?GF?6VVu@S*5^c2y={;ZxE3?Ar*jOW%fK?jy?5-$LsT*y%)>>erFMq6h5poDrVF
zo||yco=+4~)~LA&pV^H{p!;l<Fe*3jx!q1Eg(!=OCgSJzQld=lr;j?PzOY{*gx4~R
zGR-gSwM0Bi580n{Ml}hveEU)XeVFj2-7}UQP5~E(?GK1}GdyhX62d8a*#1}ur|e;S
zFB9LtJZyg^BF@>v_7NeRvxjZ7By}l0e{$HK&qQ<Ph~2jocQ<Z^NA1BvIAxF98A3Q^
zzqTJE!u9cE^IQ8V*5Ea%{$~l_*$W8qJ#mMDUM0e}rk+eVZLcrTeogq^-V}!p`EcWm
zT_T=Zug{LUpw8H3gw*I%?~I+oq+&+frO()KF2w^gx@hUM_70(HqhtNj=j^?Nnd;Wj
zrAz;0pAfO#=(X+zyLkd;45<f3Czt-0ogp-6bd}PV?1e<|1Fg{+QCIBtrO5@f5Z=9G
zrxRg&kz&hmDX%_;G*jqZApfczpNL|nIzZwop>H1>TKcM8KMA#Y>ilCPOaE^7C(2Y;
zKnpr6%5pwqY^rBEHOnzYk9{=Cbe0K~9XqtN<7`YuEu^ZBUF*8e5u!|0Z|sE9MSVw?
z=ZuZUW<*6fM}%68%?-pj%`33hVQf}ZjI*sGQ}?l%rHeZ|QkXKpGS+EWiD@Fy385)O
zqbsvEXY7p9vCd6Zm==#U%{a$zC-~afxuxTs?p0ab45kUrXrYgQ5}nc2Pz$Lqq0n+p
zMh&(+3Hg9(GyM#d>|CwO^!wN}ue>v|K9O$t_&HU<87FlA<EB}`$@CfFh;>oviq6vo
z^m6G+&f)@ESGuZ`Q$X*OuIXHAz%KAvoVw10TbU;IO!ewIhloPz;m1*HbQ^2q9^X^C
zuCq!g>+vs2-{Kr=Nc+D`m0tC$()FE~yU>(pcLN8a@S{Uql71{5ro6znkIyZAn`n6f
zXWYfo4GXBmxImdZolR5<{=(2J)5!UjXo2cDu4I{1=X`{RX3q8|wEvr@a>i9F)66;5
zgloEaT<tP<JIT$Mb^tYZdNxOzr#>0ipiG)`NGN~YU1eH1D_Wz570nH_abk$L5pA5D
z0_|K>8|OnJ{%K%)=W`(3|GD_v!1m6sY)Zckyw@??P@x)s8+fmiA#`P2^D-TrCxo2w
zZGe^%<+=E~!H&*4A^6=O&~_%;iFb6q6T%g-qw_ry?Ef?_i5;Ejw&;)#MLIh1LbwKY
zbovY7e!HVHjEI-#`<zXz(cb@l=a3NYQ}1_v6T<beixX@|9_aawu8vCt`#)SDyE!!p
zvvutFj%9i}{fTh-7zcEMN!{Fiyw}@leh(G{FT5U~2DGjx6F#4p?(7oEdVH;$?pzdF
zJwDaz=a{|N@=~=lp!E+T&GG3+SpA*Y-h@K6h%(`3UuK#9&M=|n<DV`w#Hl)ji<vgz
z*)qeN%nT$R`_ayf>*)CcGR@J>I-*Q{Vgj61Ih%z1z!Ro9#@WFLEll+ub>bdj7q~e+
z>eLr<YrIkBQD=ov*(bg#J=U2zmMw8}dfbVBoM{mJmUx^~dmPj1@mtD_a~cuxv>fjY
zA_}Qi{=~y&#yeXlvg!R3e=d{lRP~u2nixo&;Z&Q1G*3;KSSoS8(~2mhW>18hDNcnY
zsB!C`ccv~zVi(Ul)vwd)70~41^Uj?_3siC6zpKn5r@3Gyze?f~C!1)Vy4n9AYPmB{
z=uW?0;)~8QB6j$avx<lvzU1ho=pMKG+Y?`MCcIQwnN?1m6-e_`gGsMNuX5gb8Hq~q
z13AtrLM|r9$s@|t_(Rkj=U9Phuf!au<13hPvc5R!oXT~25{0xK8lITz>=r5-x>h9D
zIZwosJJ*@83iE|j*$~`Ka1Q>1Y1nw!|E+g)4kB+(>z&a={4?AQPDlthpbgGcAw0l%
z(^*Ia7h|iv7TDzI*SOHSp;T{^Q*{jzAKGqm^41aYp}ccIhz{j_=a?WJ%R6U<=;+<K
zB1A{;P9T?yp`&+46J_fnPo{cXofsxs1GhR=3+T{ITb*ns6$h4YJM#-DGx2T5f2jb|
zymy@S1vEABUFWnA&h_`4qOYU-Y*h`4+3qwIs!x<I)Rbs&0X>zt-Fdu#o=JS)nN~nc
z5<hU3`33lL;!bB15p?O3nTa1cH@(3Qap&~0Q(I^_xY+Hq6&m|wZeX`FRA};(drI$i
zW(na&x!2i2l&Kbg<tI+e1}rmEt#}e%6zV*`fi^XqiJwO8cU~b8DL?9<^Lhb&8})_r
zP63^Z`qDW}#5<CII;VtiKk`q<-AL7@{m4-#UI_OiN1ZGp-d7xR7Hp*bU!IFQi(}3z
z7HOIsbM^?~G&$ycDulD-nDdJe&XQx!RUw=u$DCGgqI-T``<T;#h$r`PXEAHEulU;8
z3RH0Z_qB6WM4ap2Iwys2u7Bs86~cYRDJNzVx|pYadvZ<U4^E=cT_rXoo^@W{Os$7L
zoE$votSO*d-1E++0_t7lXXkSyez)${#EVYwEzHO@{ndd>yg>X~zDrJ&5Wbf0k`qUi
zO=r!QopPe#m4M4mRU$qGx#H9i!als>)E2@%yyDa)g8d&pmVCu&C?a<06{m?1cIg$T
zg%ECdSDX$^bPDpDGfxP6?RV#SA?!7!mkVL91@tN+oL!THrp{%;Z>#J|wDf+$OjS1%
zUgx0gE!cYaY(-{W11{zeoebQQc?VEQA^a_|qZ5TXX6{dPbRD7YnTHa!PGfTM*$Gc~
z73!0DPI<bASo*pB_a}O~uV6;zvBV;J2+{Gt#LUw`pHkK4sBYiYXi`LvBn^)YeoQQ?
zr*b}bPv&I%CcR8b!C&0nq;t6xH$U@o;!S#+XlB+qb(6k-D>m?C;AVU%`zGC;aDf_B
zA&_*F9wyW%E07eWCkeIB(n-;}!`qk<KmHVxR7`Ib>XH?c6stjizxSi@TbFS<`CYW+
zSEk45+Cuos^f-N|P*k!HFP_k?1o6G-ak{e*z85`C_Z7nTqQ~hGLik?vI6YGcUyB~6
zUlYRDqQ~joO!T-yoG!Z!E5kp4i_?{fun(*FNpU)rkl%Zspqmr%8{-pnJ0gC&dV=mI
zge^?avn3yXUn4<Z5W@F{Cg^hSaqIDA*a^BL5r4xXL9bw<4~F>(`ZvOm8kCg_g$|`+
z=D-K4^O_{+Q9_BQzHCxj$B^Y5RsB?S(=yr@8geSHNs^u-^a@y()iK-AeKviksho}%
z!f#!c)8&b<^}VcQKRjyAqO68V<@K#3;s;FbN~)mmBEl2%yMbC2Q2V45-E{}Lz|-_z
zNtN{kq8)*MWc_AT(bJgdQzupQCL%0la8eb$hX~z2nN(f-UlYQonZSKbeL@Jo5K~LT
zi;>6$ej%ooZb-C4p^I8Nod}DWpHxd{5uFTVWWJPCM^7Q*?Wc~O&KhhZIiSrY3Tbz8
zF3=)hGU6svS1;j=w8_-ft3<<1rmpUnhn0a%2G98PAR>5GOT}$Tb@hq@+L?5VJ|a|m
z@+V0R^m(CXKn?ZcomdL=1<;-P%uXK>Tall1mk#bC(s8#QOKPe;qL5C$^;@74L_85w
zb+Qmn#8h32h$nEWt|Np~FI6`a!fBbRI}xG3%~q-&x{LOI-1*J*Bof~bV&|vnsRgE&
zlhX7nQcU#}t86R1F2b^vj`>j9RIUhU?-Aj=C{?zN{*(w8-8yC4>Z3%wlD5+)fnfi4
zGJs3zJ^HMOxRl<be-px`w7vE|LKi1#Dea)+gm5YCpi46aa3$@a%M0O3+ELdg;+fD<
zHz2~+-%+-s?uP`=zo=&>H!s^sXR)Z4O}?jWXFZcBq}NP-0O%Rf@Ef~b^b*nV6T4mX
zD@5-H@oQoa=#4`7rLk^$8(XR?lgF3srsF@xM&SEKpDf#54<hn+1dQw%Wqat|gqf;%
z_S~{Pb=%!&x+9PbS}%PMQI@WoeL+2_I}?R;lkC&_LH(d;_hjcL^wtlF)-8Kc+1`2t
zQKlY{y{v4yeoVB{*{=Xi;(R{bT+dDDqo;~^uKuF3ee@g_btV+rS3f7(Tqv}!eo?gL
z+2g%_`c=`^XP<TZ={JaQwBg+$dJEAGg$?Ylj}v9;F;h~#0s6G$^RuVq1O6=Hvr}>t
z9@1AtTsdV?*@v{T2m2yZzX{qvU4$s4cY!ug#}cu_K{}C$9S+j%C12O6xe0@H7s=Ou
z>Y}oPb#Ku!{Hde7A$p*Q{?zoSAv#0Er$8I3$BMQXw4pjA+N)6LFg;DQjZo+?J(q|p
zGh8nw;>rxyze&Ch)3%m<SQ~q}N&Tn!M~sJc5yFrjHElbHu_8V>?c=f|bfReUrX2vP
zM8qyKbS)xwk)eA_zJE=Fd!c%u<TIzky-=MYTJh<lypejWXerav{iu;TB;u_gj?&Xa
zOr4${HA>GFtsQ8i_4A^22W_-|iHIvRM&}UCQ@>BYRCbJB{|V3aA~S;J9@8Iw%I!^@
zaZ|bRdLI+ak^$NuuTK%;=RHc4o2Y*+5X+aFq@(s>M*M`w&E+z6oX}@wnv~1ZRfX^~
z9of1w5r4=oTMs0{T~5bx**a7}J<Cng3kqmZxtYFRSAe6-J*__wsxsp(bFMyEK<}FK
zbo_p-%mP(q#s}tnol-zq<(|=5M7XppD)+3;CE{c0=k!IQkeW6lH}Je(d;m+~Q`6_Q
zfASz9opdbGr-kr<d5JzFga^z^^f@LvUS6XAB^n+tFVWY8@OXKNHb3Js@pyTOF2Y3j
zm6qz_LU@F{Oegq)c!<1QClf7DD`&hGy+WrG@pXY!dMgo6wpDumA#@Q^c{8dMU9DFM
z9h|Yc+^c#A(HwPj#@cc@dTKse&QTX;ykBme-cOVX?-#$IUe{md^ZpOsFMe9TuD=oS
zj~O4Adqe*~6w=<zeLxpQD>-w#w_aZrt^CZh?s{!~i7qmAt(gam4f-ackZv*aQFntb
zC0cLLHtMpXjRI|>uJR@A|1$Ly5Z}}{i?|HLH+4hFxEZufx~XV;LEEHTi}uaTQQl_V
zQM8|Drblho-9-z`8s)vE`-)a#R(jN1dZ=iXW~F*t^e7<M|AlnJS^0nyL~J|jP`Ryo
zvJmdYx9V9$A&p;C*{T<aR;j@S^|oFr+8qr}>$mkv(eNE(@94Fn;XB6O(VIl;HtSlE
zcl9<Tc(<S)Fe_N}UHzemk3ikF>3x!MGE{Aw{!+B(Ame-bYtdeWeDCQWi1-oH?fL>y
zHof9{yZ%iGUva%%n}>0jc)fUE7bWs}LcOoM5oYSMPybwQhwdX}&dyEPp$8L%bn)4X
z%I?r3MN6KY>V2TciB^4fK2WA;^=FUr^7IVR+RRRm%G2|SvUNJVLu;pA$Hd>(+^ILQ
zDQv$+@=kq`C=(t!bdz`K+DEY7Cj;f$L??f!8xiqV@sZ9Z;zoR=Hxt1`oHO40SidKP
z?<N0Oe@GP4cg#tT`dIH5&2KU1Vv*hYOA$NIxdil$i2b3MJ^BaHM$b9x?$H-T%bIho
z$X<O_v{`e4MfYm!tHKWcMBhY&OH!HSPjq#n5Pc+azpf`#&acqR+OO~AjC8tiK;JDQ
zo-Q2F?T9jUjkzJ~pzb7E<GGcS59(f`;py0CdVpy6&Na=?^tyjyWinOoxwVo%*9VD0
zYUtb}MZeJT$50EY(R2OVlMm^Jf>Y<FCg<zyuPGzcJ2&v9Uc{vDnLn`Pm-;25knTKx
zOY)aGN3>q^Q@z7_z0lD4`9N<AJr3Ft{ejRV(2nT6LR03a`rcRibHS%T{7N4cdImE7
zQ-3G47_@)t^Fl9yc2r*ydKI*zI`9ouTjzpyOuIsxKs%<33%v{4aa~#{4>bR{t|+(%
z#IJP?p@SfPt?LUN2JIW&Na$<OzR_tyr$IZR?-4o=+6mo7=vUCb)ej1p&*TFQ6e{*i
zs&~@YBLvHVcv6pLqR#(LXA|LR^OofA^jfiea>2lor}UddAw7G+mgG}<n`lcxgLlu0
zmIK;py-&2aK>J?ji?$22@8SGU#LpL`dOzszg^n-C2fDySl{us1Phbc0@^MB7iFh+S
zqmzknuIC2M=$o&j)a$6jb=23t4j;LWrZMTO3$GP9qvsI8)$ZqlMbGHxSyM63<p$2`
zSA~+E%lFRePlYNym+Jkf>wio0Le+Y%PxOy+w*7(CY>{c6)2+Ux{a==94|rbJ{|-&F
z)B}s)$KLudQAqV&l;-`Ue-au2^t0Bd&=P)yxhOYqL8~8_vWPC7Wtu^>@I2E3qB=h@
zy$Jp;=v_b2{x76*LA<CZ{mkN9i>@VK)Q5!LUz8E`FJ1ovYx@>i<uB<;L|N)E<h!b4
zFQdj6SFY+|zasI#T-7H?<3YQs+g;&O@I}8@bvh92|1#C+#in^xAG*fk6N@vVuIa14
zGfiI%FKyLX0esbBmU<Q}|IlZMLh9wkxdG*N2%;8J>lb&ARqip3#O?#`7#As9Z-Y_-
z?h``$7heFHj0D#|_0h$rb-;Z_#53R`=q?kQ3cqhN+@nHQ79)Kp<Su~^)VSxFXzH2n
zLmoL)`<DcZn(lm|FP1bbZ@H%mC^w+p{zcHzhcCS>K|DnmQfHQ!rgl3OLouX&0nK$g
zm0}7k&4_Z{9HFSCYuzHQ8OK_grTJcz+eD}uSVp@Ygl-2a=EldP<p&C<UI}+O5&V9!
z`BJ!l@9t()9hRO`v2N7_F0?n1N@N;Bv`lCWQP(8aGMC;{KGtnlfoay#uI1z0ZA97X
zIq(qgHmZmk4@|t<nTWoviQ*tey=Q5v7w={W9f3B*yN?U~09t|@68a6a1b4bnkrz_E
z((YWLgctIG770~(0lq}+z9e+(3#M7d%@IoTA!DMuUa$*fOmyEC8u&u*@=5LoLZe>j
z3ba?~t!3AWlyyHR3hC|3f<?=^M_HqpP|medu)Ucu6X0<Lw;WMOU0miSmvgHNU0vq;
z<&)iXL2LPx@)g~6M42jT`Rwvl+}KLorOC?|m9OshC(2eemUk^*!);oHwOf|=iLU96
z6`Hm5#qzb>qPL-zt!`hwru@xr{2gqWx_ndldT#ukOl_BU^~=|Hw>CnYr#da)R=$Bd
zwlRynmhUWotK0Q1riYh*TE3xsDUB&>`4{DHcW1U>dVcvWr5d}jEs^p9>y{ra-_-3+
z#G~EZT}{NRKy!C?gyuJQa|wCvZti}<q!U*>QlYu~g;13hj{zMMs<+~tN^?&MrLHi|
zH1{W=4l5>BXyINa3hAyZvVelEuxgn)9kiCNM-<Y7Kx^r{B}D8Lzqmpxw~Wy7GA{z9
z2%TDy>a})j3jMSqAE<%Q70}wajfISt^MP6j;Rn3hy6uIEg4Wi3fQb8|o$L2z)MH*w
z_1d`ug|fl4otq&U-vI3%cdXDypxxt!gpPyO-km1&FVNb%bBWl+z3zV2U|Q~|aIbq#
zEb*1G_qo6Ngz&ZS`uTvWHFwm-SKzxZt|kiUtFORkU)*A%!Pg}#baE3!J6`6~@}1lY
zL<>~H%KQqQ-J6Aq!_Dn3Zkq!7zCu^GQvsc?(A|BcwT}+*M)<!f^mHePc%jAB3J<#b
z3P@M%>mCzISy{Ydf462E&R28gn#70Pi9(H6CRQBeP7%5vv?1<np@AzaRvhM@5PE!N
zjfx{&v#kO9A8<bdaHLzcEf@MYn2vE<3Ar_HsW{fn5L&siS;cYgCZWwM@2@z)J=Bi#
zy|;2e#fk1OLVH&}Qqgw<_po+&<zp2?ZnDtglqV`?y8VH`{{nSxWmd(>?o1JXT{*pC
zwtGk@YSrwDQ{1ffTukz+XDd!~e-esXwY=hVSKrH8)T)&gXSgv!^;W%Bai-f&sPU=|
z6`yjmgj%k8yW(tjJ`%oLu;Z%j73a7+NaQn_d2Sw2rh0G{yn@SB9neLldWa~7NslCo
zCxSbLtKbb>Zh0b}de6AA_hG(y>Wx(&ReZ)x?i8l4DlT-}5&3h})>UUJE^?O<&QZHp
z{j1^<w^L^{ouf_zEp>ZzVX{|WtN4ODk_gv}&4Fd^1S0-k%!}?cCU0%RYk?QtWrdd3
zi*Als;)U9m-3?5B5U<p(bl)cAdc*rq#S}kiwbE_$0J?uah#!Ai<*p{m)=y5mSY)-E
zOBB-crd<MhOSGF;Uo7&fyIr()t1kh4EZShu{^1@F&7TV5KinfCu3SCd%W+SLxOw$i
zH^)6I+Q*>1=Kdnu&!D~L{w`X=s~3x`ap7k&P|=XC@#-a@Xd-+Q`L!Zz-8j*nxHDLE
zt(z=bV;?fEbE}Hj1v0L4>#|7uv0S$u5q}9Q*PYs}urFSB$8<-^)S2}!7J0*cf(XxW
zF9Br}!H>88ak0pH_bDNja|!5Kp)xr>{AkpDLGaF;v+f3Wl~9kI@!m#vozSD8ZFDya
z&B?h~<W2WIp&TgmP4^?AouF-U_X`~cZIgRg2tV$;+5LtngkP)igPYwusD*RX@8`d)
z^Ok#tO{w);T(bwa7iYp2_k<A6gstvlJqug^w(Apd>)&>Np;EZacigFL31v>y@4EjW
z!h39SDgJi%4MMzDnUu2K-S!|myqsJu<pURb7yj~Ys=Vd|JSQh)El;^KCC@!UmU!5`
zG5Dc-fk`!8lNj}pYxKravUG<vF9mkHMTp>4Giwf-yWLo#lP;FI$9EG&9Jyv=aL;uv
z_PUiw+Y!L8tnPCgb4H-tz<#$UYbvw`X(17AKL^eI?mE#h-vM_Q5k3oaXUai0HXW<B
z0H{^U7p`Bw0Pjor(p^|UJyX7NR|y?mGa%)ddzA=Xv<{qbC-lK$xX_dCVxo{bwI(Cw
zw0nXm8(fS@`QDw~7cE2Zal9!hKf1e!_|oio_o7dToj)t(CpW$y*R5;0MJX5ECy8Ko
z!=<!e-RVMjDeYHxp3s#w2aHSZBBAKDkGhxK6+$@KF1tBG_z8f^?gk<JUfC7*?S4Kw
z%+&b7vMX+$h$(Bwd%wARg&M3q>;C3`A=Co2tL{;u&Y)d&PYLx0?V5XDXbfoAT-~2M
zKwqp*`Q05i0Ew45<z)?^{U73%6y>#g2u1E1!`n*49c+5Lh_FjPNO3%KAQhu#tUHiW
z#9K(jogd{L6MAmlv6N`<${@6aQ?+&X#}@ON4ra<-ch-&dydkvz!<GC>N=dH;AdDzo
z36J+$3*nXUc(0uhUI~x)?iIpo-|=1-A-wh-@AVQI4A-~gz5YZY_4B$TMH9SrL(u~_
zu(a27I1v8+0Utmq<K2TO*X7H2orLhQlCoY8A-rgw?DZAGYv$#>m^zS69S=Oe<JPJv
zURNP}bR)$}7s5NpDc<W$Zs3Ev!SXF4|9GI=2f2Y1@4awFqW8rVpWR6DJ|@Cp%J)*d
z<_*~4t9idxt>i5fLWh;SWkTq%k{5L=S-M4cn$;?KrI^THB`=A|4@?AymArCdiViDz
zRfyPOC2z50{9|YRYL&ecLg=uvcSZ;uR`x!<jU9I1bu6i}cZi7`R`!kwp})#rhlXtF
zqr=KxS3-7J*?Wu#&Wv~E2C8`Tgf0_(${7QXei*7&#f!h4`vNOd#Y+~#%2e^1-oY*|
ze>lae;<aL;%2e?>2u<{%HdVaYVv3ci;w>cN%2e^*BnqkJALRzBdKV?*T_5kLR@G~D
zXQBJ5UI!s`U)9r%*!|Lv4}fJ16S=SI#S2aR0NyQM)$1yz=)S6#PQ>o3dOlG|-L^Y7
zP|eF|%norVs(G7)u=UlvZ9?e2nit!I-Q!SH^AefJeKjvd2!_IkLi>v;y07L9BVzZ}
zyctCBB4_CQ>RwJNyEpbUtX|zK+KdU^SNCFt(0z69DwF%rp7-qPo_RN0;#7xxLO2ur
z>RvlWdg!9M*NKSTSNBE{@l2@UZIz4z_KvDv!;5KN=)Q&*FNE%Ec%{-vb3fVpBv_VZ
zqSn{&DhZ+c8opOWOtJMfyqk&GeGPBIJ?!GdzB4sydY=kmduw`!gwSD4uT=+j*kb>0
zVA+9*9M<%@3ZcWA-X*a_e>FW{b;OM9u%=gzD5OsA&kfY_?i30fKzcwZk!VFHuG-ZD
zc{OW!mxQotwLI0CHLMzFU5MPC2R{Q#^#E%)6tz6<3u4`BdCi$<C~A4_h`4ICyrD#J
z1>+#RsM}l7jf;8yv+1>JduDegbYI&mDunK9dnrBG{m-902bMLNsAp<>^?Ue|5!~1I
z#)>I+O>J)y5xcMLy+9OF<37&~-0V&2!}%_MepBt6y@NvN{$}rp5W2tF>(Gzgcl#m{
zEW0w1`<uP=et7-`Yd5z3W^b98qWhb@RYdImW^X4^NS*j1H&DmxD%I}w<>Webyqs_&
zz<nKWy%4&u;~ksC?%(-xM3Fk)DJF7X$2$)M#_Yb1cTG&ueI3sVVMcae$D2A6>3AS`
z<mS3{y(2={-n!liA#_;RdzHSsdE9;Y$X#IhIukjp>unao=GOJLAo=PzKkekbPa-?4
z>ouCq4nO*8T-|!!Y$0@5&s!*j4(oaA=8~mb<DXezxrvD!*7LRrp~HIK9<js**7H6i
zqW8Dud-c3`E@Lt1J~wcSm&c^W9M7(Qix+PO3bY1ZGLw4mc<Eakc()7f2g}>M`-HwZ
zo^tE$-cX^7KzDjsLe|$Qw>I`pl*TfT`+?Bcx?vNqW*I_y<g$rZUkF>+#H(DEH23|l
zM|n-W+Dz2KCSF4!Y+(~GO)Rm6O}zVvxJR3KJ-6cp?c;$hr&60X_0|db*riRqO@ipK
zskh^OGIbM9cL3AfOysbscTfl&HuYk6uq8Td>Ln7f!=~PyM7+hMdKq+c?s%Z)_cc;e
zy&XameQ*!Ya|@#TRBtTZt2^$_`n~~}PGTbW@SZOrbf4-?6H9cT>dhfy_o<$u>mbJi
zPyKi-v6<IO2%Fo?>mX!i`R7zKZy}?b_v2){nYT<tT%nqIE5jLyR*NM%Z02nwVu#JV
znsn*mcp&>+`{s9hGlkIM-QIj5Y~bDAB>HgEarfxCyZofPy{U}U!n?iMLfFE)y-&py
z9p3F7B4USkd%qI#&Z)WAl&*EK`{v#<A#~r|TP1|<n|mkkH*hAP`y{`)_ah^@Z|?mf
zgzlSrzltfkZ|?m;#O|AWyXd^}c)<N>NAol<u@@Ce6FALF5kiM)UQIeTJnr`S=>S;P
zXCi-TzSl?)9j18`#1tK-d09m45Z;hQ#1pE8r&K@%a{p)HwsmOlK(3%Fn~6Vf^ZS>N
ziGerqLujcYRNSD_D36<rrm<v-DaLgvDUfcc+GNi*7{A_TLA8HRVVm0`axL)5C^D&b
zZcL1!T0&^5&Jm_qYeQk70o51cK{bHX$UZ1cHxyRdR3jh^sIk-}R1L~yszH($*8l6f
zu^2cALVuv?P%;_^VNg9oaqd74BOU+!c-P8U8u!iWTv-3Zb<8C<kOUQCBmC60p)e(E
zgX!VwMpgye8c=8-B>RBcNaaLU{l<os-30repqlg^W=06dn@_})77-yk=4$b5h^%Nq
zYamx-wZan(2NY+RDKjjb4$bpbf9PtQfJ%iYV1x|nzfVt812nqfNg8R7<**xzO1^%!
z->CZ78ZO9C?@(8FEQ=0q?1RYuh>Q;^9TOAocJ3$ME_kY9Jgj0$IQ}7}f8o<?=g#Cw
zbUr!UzJNMZ2{W7l)9|Qs3J<|O5k2<+#BFIY+k6pGGFSIMRg30-WW9JQaj$T-BGt%A
z`tQXBWaGTC1Ww_e;AN*^Abc2goB`nx#g*Xtfw*y2b8Gs-Y=@PALT>R-)K8IB=N`T3
zcI-t=H)uUDWg9`&4=DQ)l&?@`&cH?B(!rbG^)~<B?(m34_7k@_vMP~kL@)ZXh@u?s
z1Mc=4+g(^FTVB73@&;Vz)55vJjrr@)XL$hh!S&njUuU~f#YzX2_4<EyA6a$wwe~r*
z{MM&E(qFGrkxL4W^nYqS&x!N2?QrFIPDE}y|7qa<#{7@W#_jl%v6MyW&xY@RIsXe=
z7Nq?`Kt;}H-c1*_HM|Rs>;tScr<)4b42xD<Tj84FJF@w4*A*7@KUr|t8Sc1)vcp|a
ztuW5*UQNpp?~cR$2m1wIGVmhGGS(M2D%@>w%AXY-nJc1D$rZ7g6%0*bnY?}ZJX*ZF
zWXCryLH}{&3KlLNAP$Ss{Qo=02Rv{AA2yqCS93RV5rtt;B~YP%KcyVl2NixpJ)r(u
zoaX<3Gs5Xp>)(nCr|=fRRp)qN_@7ory8>2@*VeD9!SPQ()uH;{Mh>{3yC?<I4RzaH
z*p9!G!g<rE9CQ#=-~jSQ#_uJyaDZU_=WKr+cBgEAZPSMxQ^;}NnkG_8WW2C3@c!Ef
zh=?0%8f7a~!zsAy4DTuKt%yDJ=y*KlnN9Y8Rz;rLJlP{{Wc`m!TF@LFaCnk-uYBl;
zRWWF=OsO2^3R0!7Pmiqhe;GcX3T30`sRbNHR*37qlvEzwNR{I^y8Jt{YEWsI|KVBs
zDmVzLtM#z;Txj7!8=xhV56r_V_swUt17mwW`nxebvbuZ>je~2b+}COTM`qw6woqF+
zjLiIhkH1SLb2->xIR5ADHL_?<`G8D$UCW}a7BldPRd^@F%kw@+4=Qd3#slgrO5t+2
z1h(W941?-4TKbB+orT{i^Nps_Z=hq|A}}5v0-g;wj(uc`0hi_feEskv7n#2^WuCkP
z>y8VHp{7GTd}<cie`pilL?bsjZg-V8a3}O?V?43B&8ODfIIAODz+1=PsT}uWTPQQA
zl3?9LH&_)e|9(pELLS3$TK~II(m;|q!(d7oO5s!}BB-8%&`|Rs<gMRQqd>LQI0zjT
zBFh;R{*S8eL!sP0?!fL7(Ah5o&>0qLl7oPHmWswOC~e~SGDr!xGKXxqt><773(|}+
zsG?jBeBy^}3Y!Y+Keja}=X-b3Id3xxvGqa4DQhYII)sMW0AWDANhxnp3isCAl=3d6
zaIW_#C67`*hA^N$p_KZCyELB`)NmjCoiXNq+E2yhQ^?cm$!1tNT(ZJj$BhGVV+zgx
zpo-l2atHE8h#_=1Y?g-lCpp6%D0gf?ouk(9X36$gxuCjCmR!-``oaovMY)O+_o2Rq
zDoRF$a(F}|Q_#kgvFD;AL$36V?fY*%O7lOmpyJ>rs7g|WBI6rrLcIf_p>{xMs_qbm
zH!UvVf9{^ve<uxHVsVCA^63AALZMnWR;AEOK;a~18(9Cbi^3C-#}dP!il;uPKp`Gt
z1n58`9C8sC=!yoHzy~Hbrc|LG#q{t|Lc}4AFRS{7N$3E>psGzSInEvX*KurXxM*%b
zU2@rw%4tC%&m>HTOHl>s@cescf<6>Rb{ZFSV+z-ODA^bGRzOXpJ{tq+hMGv~<cRP_
zRZ{$j3|PAWtcF1dr>_q}PrL`Ap+2VciLYbIL5d$F^$4l|g3wgK4Vag0Ft0&*O~?x;
z<&Y}~OEua%3hlMndmHHZrzB-A4I%6{D309~P@MimYfQ&(40j!;V4q!|QVa5iQ?Rsv
z;xZdh9PPQBaQb)6Vg4KH4v<ZiMn?bZ4GEmJp%U()up@<8Fl~eCfg9rN1*a{{|H!p3
za=dxBGypcspy~xh7}Ou8!u?@*yT8%C*9IJ>z7QI4lz>C?2)Q2(VfeU#`<3!uzy9+%
zDLadF6S)xmS^UPT@F4yO`_h1lfxE{6l|_{p0qw>(R@8r*YPy{2_$JBk(YU@3ag#Dw
zYA?iXnGL+#&4(16Vud!`CLDsG`kGX1hDo_B>9aGWUVxBy=t1?HPo^lC3I$798&Q4_
zZkoev?Tqo?ARVsbc8-Y&s3=l-{7O>1G=xD_{x8$<s3M^5Aj`&N*_6U(-=O)A4h(f;
zCBE;1MPG){PzH4%SBN|IZYl!PgQ^3?yFnOK{VCp;7WIp?k6;^2G1R}M;QYrVQ)Lts
z7a(UrNx^Jzos+_G@TQ}Hng(G|%_jTh6dt{|uo5prN>E{nA=Tm(>;r?+O-aWxVg9qw
zfr?&3nKx3QvzntDObMvBD18UTxvjg&{tQi`3p9snG(}4uES@F*-me9tUfAFMb)(MN
z4v?FC3c0v%DIPf|zN3^s>+qjI4Jw}b9LL@@B;|KfImKrq9?QaP;jY8B!gBd0W-bAt
zsY*i_P)QVG-tgFSul!j#RmdL0psEoW_W=xbD<$FN3aSsgpo7A=p+5VMDW*F57wML|
z8_Kj*%LfWe!?>Y3Mfhs@0L*`bOidB^K<fXp4EF&CFnJ+_Js~;c?WOP-BB*AO3QHVb
z|5-prFZ?%Cu*?CQpxQ*4cSC5ZLzL?W3VB=j1>&%<KnQmWDcyuyTX4ckAy<V%tc1+}
z@F5W<h0ol0(cu04pDnKObk_`R47!8H_l<%og`CwT731Nl$Byw*eLzuOUoI^Cdxn6_
zReU}uJd=5<Mz<|Y;YH~-Dz0$y22^C6b8)x}9^who{?<^RK-^R^|04y=Y?5qACD;Kw
z<1o@5Q`jC_PgVIJ%pt!1d1LqDZKCi__Wv>&`MC1WD@4ct|Lr6JtJ0QQhU532u6T7J
zl`G02r)=njc_UN0lO-<C0bGo6{zqo}vv_~XHmo1IA5QTx6#5h{PQi3MB@IvBw|e8G
zn@%e4`y)%{YGD=O{P+I8n5}0-$fj)ca|RYYA50Ckh>F9MfU12HroTcdwP+oz2O-=q
zi?HFmaFhr3{~nhVUq#Am3o-}Q(%yIowZ0%Fps@AazHpyyC3QQ6k?o6Y0LR(O^!``^
zhaXZd|7l9%kXsySbYr2rDceB`BS)7ldDOoo^$PSyKyk?9eT>piKnPdADE=R=|8wRW
zi@32W*d|yTs2~ofP-8BTgWuS}X0$OOgtKf2;gJps!}c`)%aBn85;$HJ;_!S2rC_at
ziq-m*@+QrIJ1L$9A?ySHEpDh@lrn@=w!}DW(h(`JN5J{dMk7Hm)Oa$&WhDHB3TNhp
zGmBJ?M~0mKG!^|U+1%J$ODP>gxTr&M^b7N!lW-0Ad-2s&#0DxNGR`L+kyYoTMGhm=
z`2dGfe0dIsjd0ZqAN6t^SH|$UEuWD1!_ekEa=!=S@RR^mh>!TbqI8VI$p*zS3@WrV
z)VGv!nNrkSnAeX42a<v+ay#ZD94_e3;)QPDx-U71bRQXyw8R+`RM9@nSU6FlY(>cZ
zjq$%8*BeJVGKD7{mdO`7xQgL;vA1CU2UTh6ielvcuj4$%krm>3!+Q{R%oB~9fvpcu
zaJJ;hUJx&w{{=|}HRZZjq-xcqD*nHU7d8WqfBtNPDXb9fsS2vaZQ^ld8%~LwNq;9!
zmGD&qY8fsma5hTwxiAi=m^3qZ>)`Iic=&0K)3gvZqY_xX@kj!z_~$42K5tZikb8U*
z#8AZ`{C{!i(Vhm5Z^QCp6*)1bqLKH%{<@}-SIO~KOZdjkpC8*`GyYqdwEiE47XPQ>
z{&!u<73CI3R_;HRhV%cw)e+kf*@4`3csdcjY<Xh}SAxSXG!W<|e00PYtMMidtpAaw
zk#4x|-Dz^6gYZFzj2tb@ocHfGAbh7W;)yX|S{9L{@RC!2LU>S+;)AFKL#Qf|@y>9{
zef<U8VPrXqEFYuzM2h2aaQL$Q<8+VZNlNz_@D7HdvLMM+w?BsNIX#<<o`MjbfP~Oc
ziz$WGh2zkY4@2;5#-M8n0lH@rq!PH#!j2o0W4-{>m*UNQ_!m%k&o_J_0&g}1)CzL5
zib7V`K-`e@8&lYl!_Ab7r`!7w56b<8!nmRMviAGD{^P9$PBPVwN6~$x>4#8+sSZMD
zsjsMLw1?d*#rbTW9iN1hpvt2~tgu2sbr#YMg=#?ki^6MUskhMe&zLRfpbUhTst#d5
z>Wke4k4VAkSU4=~b~xRnVdDE-e5#6*Hwbrt@b+TS^>}-cZ{|fVJCSjm;4uIHck`Kh
z=t0^D>r$ng(p@vWI|la-Xg2VDF;2e)Y=Y`m2n}^Rgr;f)q2;SI_-CtD5C+tGniPMT
zA;R9FzR{{T-A?OBB}9%oSBnRNhlwrm)<sYa0eg7<8S7|LK^EQFv(+OYIBFDxnzjg6
zje)qQ8bkYvMBFC~s<iP~!~zISvazHpW5GVC#zSb(wqPo3y+y6Jsr3#uL#r`92(Dzi
zv5T;8!i7$Rcz7OUK^zXrVHyV142t8yq(R*dH<hVB7L)yI3a`;&jst4|?A{=R*#@Dd
z%1@&8{|zbvH>&W%B#{%U3at%%`wge3CDZE0dBZE_-&qZLnBYzzuK$~<j<}fx6ox@b
z;gLhfyhXrKELrmA$E`1n8=|sJVczRER9-oFdg5gpnE&C;2Hh0K|9`qE3GL5C$2WE+
zKXlVK4ONaGrPkm092i%6DXp6v$6FeP;*=YA!I2*S$Im~od%irw_jNct36+CKm8puH
z!q0tdgi{)RkU1RwN|xqUOy7pje+E_Lv&#5vR#3%m#Z`<Sp5RBP_(|WNzr$?&<Uc?0
z$|;fQ+`huRIIM+_XdlQbjMMW!;ZYv}Mq!tc58tBufWk!yR&qG-GSp!R!$$*rD8|o-
z-WZQ;7_0x5;{RJ)t3tP2|HL<sC?2tdE5{Y$bbO33oF3UqRN+bor~&m?!vyo6ADoPI
z5c$jscV^@>(zR*iur&dB<|i`F_J19+J=uikKWB&#{=-$V8`T?AA|3OsyW6R{jj3O8
zX@cDk#Q7HoaQ+*9Y!n4PER1|?v~V7TRen;mFdeRh(Q~hnkE`<2uaPO?p}`r(USt~b
z^Z%U0lL#xsQ!+d;c{p(X2UYqERC$}ean0b?|D6T6IrYbdYOwxae|dqsw8|WGgIjP=
z-9sICFJ-`c+HfQTRWVg7+Rfkt#c+R=Y$7}VZ^m)`|C^=-mVY+t=~M}>I^X~OGfVb}
z52C>NZ{#@rSygy*x-tAS`@fxj{rrFEZ*-$PkU^HXS_Bk_yr<ys2};j|FsNowd;!H*
zS4aC7DBiXf4yFGR030Zi5f_9;aN<EJTu?5>Z)_9($~*kq2s~>x6hGC^<-7^Gf@&M(
zz456KzSA-d&wu%L5Zu>{h;tD;sfc|LhM)dBM8(}$l|M`23$jP39E|g152$cT#Qf(X
z&?tOL#VOyC%O5B_N8!&@+#j6M9PLjn!=l+nzl|yAARsAK{=eGJ1U`x){rgotJv~Q4
zAg6>RFadI(LlSb6nH-!!K!V&dAp}J3!vn>giNLCe3wSjss}sRhL=+H>2kHdSRTmXS
zfhfvEf`Fo;vf}OgtLi7pitFG1`*~lqf8VE`dg|!v>SJa)-G3Lhaj7mMISWAyXED#=
z`bUxXXq#99Tq^6^nE}7>n8+ixtHRE|i6%=%{<ro1vwj@^jbRrb5KZ(41{W3<KdRxD
z0eR*&Cg7j3jcbDbay48~95ZC64ZpN;{f{4m@%@ZEm>3zx9R8ne6CF8zjr=`N?Ria#
zn*TG#J5gqPpvD)@oEbkL8u#!Rr%v%rl_D>~I6L1qzM`EiYcQ^ejBB22Wo<s`|EpBP
zHq<C3TEqd~i}SScgA)D(PhKh++2VS>^Ym(L4&#(_{%QKc6ZdM_@NKf{`_EJ3obu~m
zM|PfB=85~CJ1-y3KgSyf&hzhWzHm<bH_!j7?61dv<EG0C3mbmpYDb(2J5Qj-DfRq|
zHskQTLymzMMH72gj)8GcwNZodw`RX~9rORf0>&4L#uhT{3uDCC;CEixA!Eb+dC$J*
z#C3rD6IU-gDElZH!(M>uey>BK`3wD>*D&I93_j(^7^Az!x|-$Hj`4>k=X;D+j4}9~
z`~QC(oX%6TxMcvJ-Lb};{n}9zn<_m<lVT(~f3h)#{kI;K@hVY+;TJL36}{4R{`wh(
zpTOY=hgBK$m0UC9hj?R<UqZts`cqS*yT*y<zg-vo_bVbf|BZvs`WHp-{(q?WsuDNu
z$c-zmniLlEp=b;CB}j;ysbm7Sanqm?bfNvHI;Rg?qJH5m;}5ek?!@vamSQYsR?c^0
zabkH1OEDHR8^B-1;>7YgmSQYsR>9xJ;>7X+mSQYs=Hee=abo!xOEDHRbEB*qJ~zs`
z;d8@R$-l<p^g_PFQj7)nqHv8@A+U<u!D7(N2J&=15Wayt8!QIRY!IwL@D1Wa!D7(N
z2J@+WFnojgbg&pSvmtyg9|GSHz7Q-1&1@*Y7^R%xC7`z$hM5iHSMgzR4&&E?#h{th
z^5=Oie6@TxSPYt39aoe(`0BU@7K3Ism1iqc;hW0)fyJPiHSo`{II(<*r5KBu&Ed&d
zoLJJa6k{>7xpw{*n+xY$eo%kxI<=Sg3S~Z$^Z8t`7&NnbHXjcsSioMxpZXVb@!So!
z)FIFn$|$Mhp{iOhb*A(zkh(-_lhm7~u9do8YO~bM(CDP6q47ztc!4(io6zmNP3n3k
znrY`_0-v)}d`2KG=?nN*DC^nkKu*$nCLZq9&esLPLUtmu#IzpIXmcmon0WeJxZ)l%
zDd`j!4>3K(pAR%9#VVp~I3l<6MA&%12@{V1Yv=zCY~`o8cSc}Q(q^W#<|v_TTleWo
znsV*p>yn&`v-QTLG-dm=>ykp*i|~iC!`&A_Pj_Dm?Gbm5hqCs#Ct-`n;fLZaCAzW;
z&Ac2R%ASj>gJ*E}*Pu7YpH%je|CPAO@GOmgPT2>~XFc4?6mM&KvM78|aVyhXhr<3S
z;XCDRWS5xkV8@qCPj)i#s52+agod)R?t4+i%GSk*oZUJnxq~X&-nt5&HtByBez(GQ
zZ-M8N_;ZMl-2G43=H0EyXJ!0e`35_5akuv%GD>#uPyT^2#Eb5B$=BU&kj-zB8p_1m
zR6^PE-L{laHgC5nMa4!DYp`W^d`hU?a8Z0z&u~)|pCok_6eEOZ5DI-j>PjVwU)K{I
z;^JLSQT(ypZ+YY6WksR<z1_8_NWAhXivOdh)8tlW1jfSi;DawC^!V<#;@!%3yXU|o
z-nSRUSM?N;LorTK{EFBSrc?NKd<yLDy@Y1<ng&hYvnC~qhwNFI(pR>Ui5Gzd<MX+A
zE#4_Ue9sdp-cxve!?P(1n0O+FQ@#r&iZ9;t4vJ0R^F~UUEEdHV#V$s5#i%q?PP8b#
zWzWInD86COe&~nNJ|OMby~1zbyFa;JPCYS&KS`M>ZKo_-Ejv*wJF&nk=VYC9O)^|~
z+3j||MEaYQqL+rJHYr12a@$1}*cFw_UYeXb&FB^eHp%3aFFcHb9cvQ$q!Psz;ZcaQ
zxtJ?%rRk;3sf)RI*WglFYPoD{m2AtccyB{>v$>e7cgTzlGGmjpACdM>Y44KuUR1H2
z@0FWiudH;R%zazt9+7s3wBym0m5R^@q&}&fmbqtT?hn#dmDjx35}}INDp88qD)CCU
zln2t|713We3cszo*}Cl8V&mn^?~5_`tVgC)w-ULZWw@2v#<Yxl8DA#->y@AO&&a4&
zwsoJWRVyz_6}xV=B6i(sWo_R~_<Qty5_YfN-pS@_Wkm03(Cd@F6G46IwK^R8Rv;+7
zuMc{6(mD7)>?5?Guc}rnkN3gjTIB1{s+Fp~D-mPuD{^n_i)XVa;;nSm%7#8-ip>b@
zKv%wXtkG(5R1L<%FJsiiYR$>;)Iu-Yj$W@o;pV<?qw1&oR-?KH``)9~!e3%~MDBil
zF%nm4@$!&TCr4|N94)tU<AKV|Y0@)WdKN1$_F93e|90Rj-j|7bmMXU&_?#_O{0COR
z-T_@MYkpdJ{lL0RJm(~MpgA)W4J4U_#!7usStTpILsq&$+MA^9Wa4>>HaQP$d}Ym#
zA)DExcfztBk%PZeR=rCR^J%XvwNI9MTjsizj}IQm%9m{keNxHCbEeSb5gFPcLr+Wl
zth7(@>8<DZ53;ao5|zdxeua_<-OfWzu_+~{P*d-e<5uC%v%R9!AAUUhP35Y?kH)WM
ze>wbAwv(;Kv$o?+B0k<EjvVo(l{Ndb+fXMSuW0fLIAwKxO=8mZHLW{bV(M%19~Q$X
z9#q;cL)+Ni!{23ZX8RB4D4W@l!&#wUNWWWIS!2%mR_W5V-`2)r+mz5Y=8&4&)@E;G
zRc(biVziXdaCD+9CsTGhQ+9f(((c7J&X*16o5ai)>#?1eNxMw?tEF8n?OJKqk}V=@
z<vNwg^{bYeFEtIiDW^_GiUZMhUMI^I%iKxQo@9Eo&3iCsnn_HMX~-xsO*4rJvX(vB
z78bIWRnGb@$8CC}Z7ZJY{qMHBLf%x499DCil?lu2xlTOt^D&z^$wuV9iD6I89b&S+
zdlyQ@y&D#Cil@B$j4F<;Q*dA|c(*k76=h?M3wqVz;n4cSW2H{^=B~vWUy-|0&P+E;
z&)LYwn^wKIF?Y7?=_!8Kds9qrD)+tj3Or)_x!HXS&xW|=QExF~#7XGo_a>*h+4I@g
z*`4zGV5v#$Y|BkzH*RBbM;~^!v5cc)bHtQA?i8yLa5gKe=4{OMwzJBkFFD)UrAOaz
z&O~)V=K|A_!?(r0sVqMl-^VE*0_v2nW?zfk6^fI+?DB*)!_LUtEIp_AL&2iFQ~c4k
z3h3}X)p^@ZJA=>l*~!GXu4RGX(7c^YjBBfm-yk>22Du5Ez0&mxw9WpCsknV}UbuWU
z>6@mS_OE;Ao5cBWlhjF4;}zklCBK-klVo-Ia%}SD+}?!Rw)06+<K?!0#5ANG#}d=U
z?JKmM@Ryi&n#A#7r^ze&xXW~W$=Lk0?2`7m`8(y|Vz2b<Lg;5b_DNezu{L{|Y(`A9
zHhZ<SMPqIDP1L-wMZ-eH#@a*^R(RS>dV7gdN4fKtJzns(Ngn^}Wa!%_aS9gw#k&?1
zQFtFhKkKnq>Jd}Mhe!K&V7s2}e;V7>r=6DZN90IwRjlz5(})j;6&^utWAo3V6y9AT
zYd$MS$gNELaB}Jf@`&btKt0|S+7Hz5qiqLs9+Ab4NZlaSrbZ5R+h4)U8DB0Gd-KE2
zaCLI8j>2yhF=M_}#O(Q2nfu|7A*w1SU8pK1U6kxllq!ZjO1=A-@Q95SrHW1Prs=+8
z1LDLczQ^136i*&H%6f`#JhqjK14Wx%=wr56RIx&7GX;+AE*A4+I~Vg~AME1x15!&$
zg#ATHG2TaYS9qdHbhIx@%@4~Yt;_b8He<#-QQB9n%YGgj)$w9!CiGvhcTK*m%qw<=
z((*Tz$sM)j;^44C;b{I@$D7KGj!ETi96lG>-&E#zG$3Y4M<eVTI%eZ2DW+i=cHOIR
zmU}4pe7RVsE&~#I_w<#qo7stvjt*#6hMlOfH!H58HMkgmC>T|-m&Gg#H|@n2O7+@a
zmbC1gve%1iStl~YON{f;>(6?Ga`9@<P<e4tCOq+bnHbnI^{VTBvX-e&F2hAM7stvn
zRb1Vc$pK#~&yCwn3r;-OXS?az#c4_5$_*!;QNtDe#Dof`I<D8{6?g{QjgcYk{J|4K
zpN1}1<osVQ4?byZ--(3?dgsKo6{5e-R8-3j)k+l?UI()3$ZmQmK4p?z`$=-EPm`UP
z#3Fl-HBVyV+&@X4d?zt+H86>Zs|3-BIWF;W<yzNbS#~iS=fyi!XR9k$r1q?4;-a{k
ziM6k0#`Vwah1+A@YVgzpE;qYsq1(O~&6k*#qVP&(DGT=4%7y&^uJS%UI5|~JC^4-*
zKV^2~y?Upf%HD1=ef&cgH~W`kJAczO_tUhvrKn*$U#iNhEbJFvadH&fGG6Yf@i;q;
ztX!%ZDmt-L6}d}Qu|w9%+~sm6FPBv;m;U7#gU1V2$uU^2iv4JnDt6}Ovavg$xjlzS
zTYMbb&YKnS0WIEyRmJtcNnGKJX?Un=gL-_)3T=}d(nn-<J7ojA;4d-lRX4r(lXb7U
zUaHtr_NqU8b{w99CxnV83hq_U?mceZhsN6M`(*A~R`fZZLCC74UMzL2)G1KBXJ969
ziZA?pD{toq&WI0%?Pq3GFEO1uGr#&2|ME;lp4iR2upe!^3I2^WTlt$f`+XB4^i!Kq
zB~<7NWtH5nZ_5=pB3EFP8v3O#B3wQWUDOa(a|&;yjmQ-(M%L`CmDgoEnK&AYF<9BB
zLk?7j9MaRWiqmp1JLIr;$nh92W9+Pe%?XcS#dv8^7`u~c`s!QML41yW=oU4hOE;U9
zo#xRtJNtsqY2m9>Cm&JS#mX*MHRQ}zL!k3j5p|9F0Q^hUhoL_8G3auY!+(>ET&4Dc
zy++*${~c;H>~-qXus5jB>rJ<+IZ6G)tZcEl6nc%>1zl<ug?;AdMMdTscy2OR>hIjD
zUO%R5S1a>tQP53VEc79*C-f1mht0-ZmgQYT*e=VQ@DLWTTm{{0@j_p=+!StQs<mrZ
z8?#zPS(mj38mP9$!ZX;~Q-APp>eWf2olS6|QtQMBRBH7=w^<t_Y<N#%G#Ut4C+bzJ
z)tp#Yn2mKv*GZXu+FAq88S5(jmeuN@<h3Z#*LD~5A)6M7nrtDFHnz>y4Z73Tf|{PP
zMMvu2tX6BCQRqTwsOXd<RCK3rs92%YP|?B6P%*^0p<?*TWUec;r+(!c^~Fe0;AEG^
z7&|-N<%$?9iwc{l4_~XMStg>@r;xaQty<7UR^GJ{`Kete>MyKSbNDL#^R?<le4=i-
zO)ZV>l4NB^y73;^(A~1p%9(Cy(6imT=@V~Lhx3Q^&9|v9@NW9d+too%F+lqx#Q?n>
zDF*0pq!^$hkqvQH7K{{|tRqs)jFXX~+ovO!>+QFrMVB6ahq~G#HtZeIF8#qf)bG1=
z!>H`PXjC++x@c9)V|S`aoIl_4&Rv*dz2x?e6V0rO6V0rN6V2Qa*9ct~=hBnbseO8h
zsj)Rqw6-noY@(Izj0-`PPsNG3w=1rzK4TqP?xySO)LDF|Zd#8Hh`LV3H|p!xt9N=M
zu;RC-a2vj0W*J<wrGU>yX|`;UW;fIbE@Q2d_prl~8(F*L7G}iV&fbveVeB5sS;SIy
zr%YE-I*;lbP3ej39<K~&V9hmd>HxmgXQJX(O1Bd^H#*1_gNa0ZJtI3_PxOJJd=sVp
zly0VUfYPlp?bU4JX|JL{kch9HW!gb>5j{ll<^wTOO~htmE3uu(RU^(tbQ3*9pP&~N
z`N@GV3}wZML=VwNY$67Tt;8U)orrtwWIYa|n^;e5B34=O<9LQmvo*sIYt%|?C*tln
zqatDxv6&bkwi1KHb|SaY3K5%#%LLJGlN~>fiiSNQMxc+_MD!Dzi2-6OF-UAD;)_IC
zUn0>>tS7ePFPcPq$G};kf6L=x_;Elu9AQ+D=puTEK4KHmPYe))MBdG)r<K?oPHAF0
zkw;K_UNYRodSVl?nb=BfC%Phy3OvMRQO2ZAj4}LfqK8;d^bwng-eWMtP?#<<xCaz_
zLw$Fnq9$T9F#yWllhQ$AJCVoInh~3b&BXRj;#X0OJYL@vXB22A28gZ1b|R0biivJw
zJ<&&OBKnEV#8zTEktc}yu>U7YL$kSvZlZ@+Piz3?frZk`DBVoyV}h8~tf$dY2eAQ^
z<tW`uY!wvy|FK>a;4lhSB^nhiBl-mqw~^8TN(YJUy^Va{$6zzDPm)ou2NdP&i9Vtq
z^oooCIb6v`poh2z6g^*-V)!=__YjW}O{qqHA7T};fw+vghj@%=5)X$H9q5y0RNx|3
z5k15PqK~+Y7$63TRk*K3)Ym{<Mr4_W-$AS*He}NNzcI@Q*h4%<G-Vt9AkpD8(k^0a
zzLEA77!)rD5glMf1|39yiIENv9i>Lv<t4*I^b!5U0MSuK1&AJ^j~E~ZiL9JDKy(p3
z#6X3S?+udSt27+`PF5M|0MSuxq+LW0(MR+X1H>Sa)fnX*L>JLx&};LNgAJrWqKoJu
z`iOpFfEXmQK~$dTA8Mon#2}Fkqc}<I|1NTPh`!Ertr6%W`iTKzkjREpg+v$8L-Y}Y
z7aMU5e=sKIh(l29|1NR_iEJbV5M4z4l57+tveA?#`iTBcf1Q!<B6^5Eq8~K&|IUm{
zjRJmRfEXl-7hA}l6J10P(MR+X1H>Sajid5J*SOB}KRJ9vKQTZI64`jFfaoH6h(4m9
z7$mX@MmZPJL-b9c{ohXx|3o7&ILV;LW6($R69Ys~J>?S}Q;oEX$S*h2iJhEpq}d{a
z4lfz?%MHgSun!Ko?Ue4j!brP8G4%DsCSvnn4S(<v#)frmDP~)ZL$(VP@gAa&=qK_=
zjeKt+8T>KB(MoJ5@@<Ack?8JBZ#VpW2jvsR)7M19%|yPF@`-L@y+N<7i5$(uR$@Dm
z<JJjLVIt8@tS2@Rn~AN&b|Qb0$`jqh))wK%{@*SQ&BmXiK%$%IA=VRp#3o`hv6a|P
z<WEz5L^rXX*d!?S|7LQu5)+>>3c88)#C9TomMSK?iA}_2Vk@zon7D`PCDwy-|8F8k
zGqIJ}PUL&3L86;jPi!JK6I+SxME)X`CpNuG=|i;tyAK(TdSVl?nb_Ky-)6)Gj~KJu
z@xGCE5d$AkK9RK>X$LX*p^;|C4Dw^N|0j~eO{^z25u1sv#CD>;!>Fj47$CM1+lh%E
z8F6l6J+aA4M)L_Hpq1E8<R=Y(BGFB(C;Es@L_e{a*h*|C@>5hF(d#Cop4dceCbo9w
ze{2+NBDNCSiTo3)nCK?f6Pt(*Gnc!w%b?fhA%~CXw;BOH8<!WKeqw+aBr>~^&$<}#
z4x)?bA^M1ZVt~l-s42PsJEVcDU{GA`28k@(NIQrwq7M`YBtJ12Wu#d&b%f~ZWQ^hW
z5Pd|ypxFNd<OmYkMN|>dMf4DTL_d*rr+A`^=pp)ueqskG&M_<&e;gs!!~sLlMf4DT
zL_aY=3=%zf!H+2CBl?K}q66>vk@XTiL?6)~hlj(8fB-pyL>5m4L9t03iIgUKh(4m9
z7$63TthZ6lL39y4L|<>*94b2CCr5x7B(gqK0ntVD5Pie|F-T;6sT|Qo^bmbSzn6>v
zF-T-dQ~}XL^buJy<r7^*579^T69Xwme2~aejkMQ6hKuMS`iOoaOQQyfE~1C%Bl?K}
zVzASnZj=uYg9g1ejKACj4x)?bA^M1ZVt^PVvP>#ZbP+v7AJI<?5QCC9|FbNrfaoH6
zh(4m97$7>bjdCuchv*~vi2-7e$a1J$E-3bYk1#-1WY9r$5j{j7(N7EzgG5$L<%uq$
zhv*~vJ6T5ie*lK)K#+*LMrGPTbP+v7AJI<?5Q9YAVQQ2ox`-a4j~Ez0`+txexDC}P
zNOTcB!~ii!#4V~uJkdq;5PhIHet6u(N`pS4ztU?s0^|r1ar>%q;32w*ej=-;e4>l!
zAqGLYNo%NsgABTe9-_}nhMyQ928p;A)>uQLi|8Txh<;*#7$oApSy|pk^b-R_Z;%Y!
zOKUVlbP+v7AJI<?5Q9YAcWaa<x`+W{kcfM6jkw{GUYpA>Y#ySolNTF9>?a0@K_VMT
z6%k!T579^T69dE`k&P1NvHv@yfwLdcL-Y~-#9$p~kK=bdHpZZf=pp)v0b-EIE~R*)
zhv*mdqQU?<f<!i!3J^U+KQTabjH5WBkLV``iEKQ@5j{jd=oM=eAP1XZ1UiTwqK_CL
z28oV|R58&<^b><bHi_bh9-@B|_J7#{a<IwN0iuWKBl?K}BD;*@i5{Yl$fi&}(L?kR
z15><4K#&{`kCAo}eMCPoNM!XCNAwW=!~hX@l*<)#5Isa6G2kU5NOUw%#Y7L$M+^{y
zM8`CWCwhoJVt^PVIvOdS==DrD96n-z7$iDoPywQc=pzP*L89YwiYNMreqxZwX39A1
z|At}n5Pd{HF-T-rP{l+K(MR+XgG4rq;)x!jpBRu7=l|J8po8ck`iOpFfQY;QjcrQw
z5Pd|e`2B4l{%DdhR>Qe?#snJ<79oAHNUMyE07H=;>4o8dF$#2nW590UrQl+4EO-q#
z4vYlHgG^y;f*}5%2;zH4>|uB^BRE<3yEE(<ocUl*0hhw>5ot7B4`w1g4a^6<jWAMS
zOb7ddGr)N8auD^fnP3@s1vnp^1qQ&`yiZbD((t59lded*KWTr`mr3W6e@tGHvNz?6
zlyfOvQhTJ1P92|mL+b6R>r+pp#-$~u4Nt32o1XSy+9zp0r$wiaNY~T1q;L18KaqZO
z#@39dGhWGfJ)<o1FPSSdH)np68IzTqH96~ntSwoeW>sfT$o^~g^VtWpKhBQG`N`_c
z8I<GA*^$$d)0*>Q&MP@ba=yyxo|}_9Fn4tB)ZD9cug_hbduQ&wx!ZD|$lag&Lv9ym
zf^)QUymPAaPUk(&jm~GB?>bL9zi}%4Z2i35`o;Fk?l-dErTwn%_m_S<`aRq4g?{h!
z`@G+|ej$00dA;)b<T>+3<ju)z%DXpjQ{J|`mb_*5=koUC{VVTCUVGjrd1v#w=J&`i
z$gjvBoIfRhasGz<t@*q159XiF?@~}%@Q;F*3Ud0}3S$cE3a1tRweXq3J%z6ozE}8h
zVRTVkQSYKOZ&6v%#YJ^R6N(y(KDN&-y0U0#QAg3~B3p6S;+W#3;=<zc;(^5@ipLf=
z7SAePP`tAEzT!>ATZ(rSzgv8&`0HX`Vk>c!xJzc0EGSuBa#zWHB@dN6ThdzcTFJX5
zr%S#mQA@j)MwiByW|S6`mXx|n2bGQ}9aGv^I<NGa(#@p@O1&payOcT02A5r0)>t;b
z?1nPEY;)N&WqZorDEqlAq&%iPy*#(Pf4RGSQ2FTcE6SIa`^x`Xep~ta@(0QvF5gzZ
zxBS)eH_JaSKU@BNdE|hU0j>d84*2VUy9Ycv;K>1p2YfQ%`vI1U_=*t~^%YGOtrhjI
z8LnlnRjv)LEv^>V3$8a^?|EGvt`K)mcVD;LJ;;5ryWZ_}Kj7Z(Zg+p={@QJ-Os&kS
z99!8`d1Iwsd4J{h$^(_{m1isSs_Lp1R(Y%5ullJfwmPG_pxRYEsCr^`ef8DVf2&?!
z{ZRF%)n8SAU(IW*HL*3lYMeE-H4|%Q)m&YpV5jNA%=nGY#vHIFGyJK_P|W8Sr5^5%
zFX{1zDfou{5B&H#9PvW`GyVd9%k|HyBb204{-9FEA5qHrqsjojO{w5J6c^vAxcQSx
zC4Wk(;?F1p^)H@N<GgkJRb?vQr!?@_l{tLBGMB%l%;Rt4FNzLguUBIuu}_D_#zUiG
z@llY)#%4ehrDn$BlLhN9^^ur|V4sM60{Uds3FyrcpZ?;xHZ~o#8M*m!m9WbU^~Q+;
zM%8NU&&UXkwVD_^zv>?nL?`<66rDJ~c_V&!ubUA+L+yYTIzEP0J4CleOC2jc4Gz)D
z42S6YBB@@fH#)qcz&aVUSr&NI@fAEqVWXH)ozZ|1W5gR(-zdu(4I5P(%@_@Q?6Bb&
zXmr}B*{J82`f)ix{r$hI+Sm||#B4NUsNwmgf&Za?d>#46eSa`fY*%CJ_70zE#(}!G
z7{;rlmdVXm+Gi{LcSJn?n_O2P5oxTwu|b~*7jtMizZB=H!y;F|C7{N7rOBR167CA+
z0JMpH0{zWkp{TJj{<mXg485^2&L5>g$)bZZymIpV*&+L%M(q3s{#>1M68@RZ@c(K&
zelrqc5?-4uc9B2VU$M{pneKj*d=!@=MJW%7t=(Phlu@ZtW5v#D<o=NQ1g^=Mu|<uo
zdvls-z&Kc(KiSr#i><Xzs$c5nbWz<lsYWwKJ&!uV?P6twiUt_#mL<yekm`_{A+<OQ
zZFyOR0IQKYEGrhpjH!{FEs7n@_QLaBj@T2-xgWp|&Fz3j<_f>jQDf5>jdf1Xx)8=X
z%;TXW`-!rX`-z(8^%EUB-A{Dg*sr{Qyk_QHaeI={jAA(e`)Ho%R#dDNmvo!c!=Ov@
zBcNOJFM>WH?HBTYJ?0tB8=cE8yc;q3g??zY;~&t;UfHjKg(5Mw@L}jK>rUu>mS;qE
zp=e;8L+EH(U~XXmcISAUgl%;0>q5~jV<!FaDwUOr?p8}3Ug{OYXcQ~$)6s>oKQ8?L
zJXg$rV-o$VQVih!Dlr@0ud;Q;npKI;eOV>8)^}3>xOrnWOx0rWL#svEKaLl<nE(H6
zR&P!hRTQO6M_2ymivD{&#_AdS%LVm#F^PWNkscZ=woPE1*p~NB5c;6h9TP-X7EKhM
z>`5a2f{Om5o<9>~)ZqPZYyZS#(Uo13MZ?NvLjO|#YBXav*6)YjSuZ>rq&`r85S~Y+
z{gl+bQuj$cD7C%*J;Wq*X@{PwKLI^kFY5o+E3<D2of3l&Obwz^qsfn@eXc>Q>*Jwo
zk$d?xVK0<=oz#wLB7RV#&|0aNNF68jL#d}OuoI?>=9gVAO5Jw3od0*rgkP%Bua0SA
zha5F)@kRJ}HcQx^Sz_>SpC=}1cA?Ns^TclX#JoH4(J3(R9_T-%{g#Y5CiR^37o~iK
z+z%T?sT=1DT{~aI7o{Y5V;TEiHf(JBKi;l?oLk!{I{L>kPcK-47JrSw{J-#cZX6na
z4f?;0*}qV1vg}1-<Q|uLL7o3O|0|R)(7PKJi(+dR%Pq7-6h8lW(D%BrasQj6Le_PY
z5ubd$sK+=e)HVrw%78`q?CYJ-B<A4-{rZpHslX??a(*ZN{6Xpblg;n6;yrKgH|Fq`
zWukXomWwlY^zt9kN8@V#{Of~1e-&(;8;$EC<I>~&+BQ49VyKOCzj5_yTvk>nS0;!~
zJPS2CF}Lt@*ymSaRDJ$cVTIBg_c@-w8i!WQg2(s>vMyV+HTuRK@VpiABs9BlhZmSA
zUDIzAv$x+(VyG)_5<$bHX51|7yqm>tGeGKK>G?k5WB5O~S$t+Vb@Lh6@2nJMkFFGv
zpGrL|H6-fRUY*y%zug4l`sch&Fj-z2d>nBM1#(x54i&8yC#2z0Cre!@b=hjs%-^JL
zSS=d<BH|QE8RIdqP^_zQD%!GI%&^C0%pPeQ*90%F`KA}He-5t^>-XUrQN_tMqSEiy
zh#BzHTG705Sz)<N9BLwN6P}obqB`UAfU&V|?j}A17@vR!-X#vkL+=u`)kz&Ib%NB%
zQaw@|q<W`I%#=D?>O85}NFAe#>ZVAYDRq%9svf>xbfWoQ(b32573=zxw9m=I_U?N{
zOtN37Q);=?L4FZ`iL|HquSjI<4R5ok==Du&dSm--64}8`cfszE8Wp=4_QVH7MbFrU
z8rOsK{vqt8QddhgPS&MXF+x$X2T*GBL!vh0>gd$XV*Dm=5qg!>wOd5weOtT&yQS;e
zWYLxV(%zackL_E9?%OJ2PD=e*dSV_Ge&ce(h^)Y$xHDGpsQ8Gr_fc`dY1qaLVB5qT
zGUAQPxbSVF&Ys);;RVuU;<q#NKPTpkFAl~xcgC)`=ASWXownr_v0EDc$6men7yrP0
z$A7WUkNNsF@e$96AN$7Ibj*Jvk#V4ZW~Z&Z^W`u0O$YDG>hynkXh3$So&KJ<GB(N%
ze}6dcku~hV2djUvFFPitv*G{Csfn&m`}D`9Zn86(_W7?zx)Eo@VaF(NzTNVLcq(;t
zOT`;%qGrS6M3vj|)nv3j^BuJX$+1cclH>HWgX&l$XDP2BIa|N^pqheYlkz5#H|S4`
zBxh@t_c>m-rJp*eCL(#iavaHKJ@Sy6hv1#cR|tMWA8|;HE9UH3<y+)FBXyVZJ+hvY
z`hxN!{Le!<YgK-R9gw<P;R+t8p>I5-u19SqQy(N%z2>lbE0R~6h9G&3{@!7=7){@2
z8n58RD0)JhS`p3JcGD~*w@KY$nuEy4^#yIH2al6g??G0%9{H|Zg~RG*BoFCT@2dA9
zcb2&g$t(0v-c_?wIJ@3_9Lc3p|6)FYdVJ<n@OYsZ2lFSeoAiqJ)EboCX#Nq&`}JGj
zQ-|f@g{I~%CWXBY<?L;9SJ(%nc9_FqA2&zB|B=*_=4g0M=pjecxEjvRn&XiCN-EP5
z5XPmNv|jKlP>h3?2s>2k1G@`UVPRSl>~2~L?5_H(BWhx_!iH%%aMnt_SaTw4xZZpO
ze?o^9(F&3D>MtBov$7O+ljcU`%}|A{)T&_LBK20S2A)+?*K32|zgv%eU(G@d|I$Vw
z>s5Wk`|6b#^DneTNS=}UwRR;U&*^RNtHY4h&2kH}x=Ovsax1dB>%||aamear(UH|t
zYLaC=vXb?gAE;xIb)RKBvhJ1Yw>*xlX8oNHFtzXlr)3Ya9@fK;sx@&KF-segUrGJ9
z<vm1(Ti=JLo4(+v`ZH$B9BZ1&*<5`|P>n<JTdhtNE2aNEsODjm9<){=_aP`Ad1<YI
z{jh#Ks6K#6`?j?K&I3@+4q6*wzazEHIs=|}p$dD?IurI0C>}Ltodx>?eNVgkN}|FX
zwmXqbgyNahHXU{!C?1YxTMs))-}<2%hpCcjyARF`sX4Z0*txci2yjC2))CtSu=AuA
z*dBx@U;iEjF+^_LV@SHBR@$~BtV+)~rtV3^K5ILGtXWd$*xo_bT&Thp*bc#7sCVta
zj-#-Rwqr<c(nod3fql{TIb!zew|1y;S=hw3e<S&-)P1&dh<r`zN49U_KMv*Wr0sjy
zC-iqZ)Rba{eQq<EIXeSY*cUc4>@TIBwOQc#O6u1(8~o>>3j4+u0{dIN;J8|YZkO0&
z;VhO~YL7!!85BFLJpuLr{hs4$1wQBwx2M5bEA?V~2C_y#@wOd%7VJ?_g<WFLfjwI4
z7`qdmI;of1^WYyVb-cX*{&7&wrq~N%UnX^`y%=_*y%hc{?B%d$N}Xk|F!L}r8&H_f
z?nZW#KI0?Vr(5mA;any4Zu<z>_t-~4H`qr*|85@xz1Kb#Mec)Q`r5}sx7sH{ci1OG
zpRiAXK4Y(kK4))$?zJ~U|7o8Aea$`-y5BwvdeA-x+Gd{zJ!)TIR=n&(`ywPx+OLFu
zV!s-C#=ZplmHj&C_x9_dKiR!dHKYk@30Vg160!o?E#yXMOvug9*pOSGJwtAVCWfqr
zCWowrriI)N?H_U{v^YeE4hUHfb%)#|JcC014h#*s4>}^G8G1>`M(Eg(2cQ!|9)x;A
zHbWaiwm>fr*$SN%@|gbb6Y2^)l<m^!3|_`ZMw{?Jwo9Uagw{o;!E<qR3Upj_1w0d?
z#iQCTiyp?yxd)Nud@3T#`LyWa@JvSy<@|C)mh&qRIe=d)bv_~o@P&vRz!yi4;RE<p
zh#bJLLF52FH+nS3l)5Q;GOysv5n93jiqHyvL-a&=RwA^5uR>@A{~M}v@jId$xr^V0
zNEcs+NEg35dImfj5b5IgBGSeEh;;Ku(3qP)gh)4k7?E!N4>acHk0R2|w;|HacObHo
zd!LG4#4GtT2(9G15L(HfkG>L~075JIZiH6yy$G%1uSQ?TtN1=dR`J&nS;hB9Uk}e)
zh^*poBeIGgMC3sJZuC(;kRL(hK>h(D2l8NaJ3JpEav<+O<UsxrA_wuaUStpAUm|o6
zKNHQBLHui+lLql`5ITr|htNU%2ZRph)|gmjFjr$tu(g;Up-Rj}@YrKA_+TCyQvpv{
zjCc@TR7{dGgvTIq2=9)_A-qRS3Ow<M9Kw4datL=Iawt!Z!L%I8QxQ6prz3PI&y2Ca
zla0`!JQtxuc|U{><7F`!$}nDp$YHz$k;8cZm^63>AaWRYA#xb6L}V==7;{Rg<%1Df
z%ZDPeme<C70?);WtmPvSS<5d$WF4O!^Q_lY$1g`{9lrvhb$oiv)9}niC?1T3&^o>l
zp;P(Nn0j?8zXp+0`L&3g%CCx<0?%I%IhFemIhEgl$Oe8>%uL?ES0b{3uR>%4|69x~
zc-A1Yf!~J627U)3=kR-Dws7wpem6qr@C^u^!`H?9lh5IPgwEmjBXkbmgwVPCp_s9J
zE`J!2bNM5PoXa1L84u4kM9$?q5IL9cMC3gF3?k?8U5K2=pGV|89zf(gz8jJA_+CWL
z<1Zm{K7Tc)t9ibI??dQ({yIYE^Zha5=K1_BgwE%0BNV@)>5-?^EN?+lx8&~0j^xXd
zy~#HuA5H!+`Saw+l$@0QDb*==r)*AnEah0r&na4JYHCjElGOWBUrF7c+LjtjO-{>7
z8=W>GZC2V<X<O5FrtL~Ir*}zDP0vjqlRhcEA$?Z*-_twN&!*RA)MYHlcst`rMn}da
znNu?tW-iaXE%V9D=QDrG)Ut+qv&Lr4%epq}hOAeze#|mw56!+LdujH%?2XymvR}>a
z$ex(fkTWx9LC%t#Ejh2}9M5UZJ)L`nbD{I!&Yzv@^4`k(InR<`o4+Ri{`}_(4)y<}
zKP#M9czxjyg-X%jqG0jgO7AKysi>?tUGZ~8qRZ(jcHQCH?&?w5RynNdjjHylQ&rwG
zRp+W~)#25Bs&`iJsxGams(E=JK3G}~--U1OEV(WC1ZOG2P50X@>y9wC-LmF0#&%fN
zK_9oA+<>=uSjIhqOJd8KA31x{;)k|a9OZa#r)3@VX^XW6hkuI$`mDt<NWrrR9D{Kx
zu&jeVZ@JuinZjPM?1u&{-J2BFYU#cnPua7qyIWy<EZy(H`NFae`l6-V2E1*>QgkoQ
z9hRr=SMUgf+>LmFswMR-PUn_!(0^IhK=)amg1%-s1AX1n{oe|E!!i=O-!dQirsW~%
zTb7rh2k?GuJQDnEi{oot1X;#G4_f9!4_UTB4_nSa+bp@~6!xxVjfPhNSeV7cj#wPf
z_box_2Npkm6g_GQK!cVuy-lp$GI)TAeQ3FSkcl0$;0aKy!%{R8Z)3BlKKx9~Ld3lq
z^e;bvTS1i06v){ae3vP2>-fdX*=5pa!f(}`|8VW3fAyKVz+1{oa3+bs+2JA__q*eO
z-W`YP?l=g?;pm!x<7NWxJgLU9F%gHmzBrI2;SiO9W6v-gRmS6ZF%fs9RP&3mjKDGy
z%P1_D@I`DimO8!!H=<PYOR<c_G7iglEEBLy<ken23C3hBmtmQL#e=0D%T#^_M*|C=
z2D=f<bSyKlT#jWXmMgH#!ZI7n9G-?<UF^hS@9ZbXrw6+xMi@PqSFU|LrQ<2>l4*QC
zb&+EN6JG=4b2RZSZlvEPo*}-g2!D6>iOJxn#IK0oO5*!GyU6dx>cfqCY*9vhBr#eL
z?Xwi=z~^*g1~Cg9&+bSX&tAfEGU*$WJ^4CTmF#78SjH#c&K^i!&swnTN=}ce13v~o
zPJR}7nNbxfZQxNX*RhQ$>)8h>=}{k~WJdK#E#Q4pkD^>=)UB!B8oo2NjqQYEXX*%E
zky5~K1ryT0L}Qszz0(VL@ARYWv-DfJBV#qs&$yjU&KS?G%NT)5j`7dZGo!X;7VvGE
zZER51Q7m7Ywr3?MC$ci5&Se$wb6IWds_dg!J~nO1K8+<cisv*aJZA*|H0LPxp4?-~
z*SYIWR~Htb@gw$^ild^A7ay@VmK?GFR1$&U0?u>NqsAwX;6p2pp=0Y=pVaHvxr(u>
z&2>A=aII$v=@VgFqY~1+>Xz(V)PK1=;WONx@Hto(VX+~-#2tmYzBKi&JjS<VM?{IZ
zg!BXjjkkEdRF}lGoVJ?3UEif)-kkXh8y78_Id3kTrn_U!7wIE6ntO-MpFd~X$c6Lf
zH!fT}vvE<&f{o_sU0RN9GvoSbbYsJn3ui7~l0C9<;hdSWD5gF+fAzT+FJ3rv>XnNd
zf5~$<EJiaeMLW!AyY(%os>;vLEhx+?tjW*K%FoT~pXJUQI54YUWo}_rUT$G-mD8<{
z++)t>xh>v3=Fh@-kv{h=^Yy$~PyE1~pxX|Zo0QxJBeD5_IRc56=MI=(Qxs<-c@LTg
zN9SfaS>L{M8W&$aZ(8m({d043r}oR$wL|7co^OQRe8?OHyFO^{r9XGb9L@`bzo-7`
zA#)^be%S2HD9FmYpq2tWLh!dW7i1OaqxP8N^lJ{IaDVEDunP_Q-NWW+ebymV-=)nQ
zrT_g98g;dqBg>0_r-kC*X`wi);DT0*Th_Fh*QiFvbB#VH=<_}>M_%+h9nVL{jZW@F
z#O3JnZ!1JZ|KITy{*JHccYMXa<8$U3O%6S3j*KnHa$c}e(5ADW5wn(JE*NqVBfB22
zw;eS{#31=Qeb;%=9A!mbA#+b%WK>xMS9Jdir$T;zvE7}c`d>Ku`TZ{(efTbHu>bE2
zR-t|@XimXg4QV&`Xenzqzie{WqxsQG7A<a^lij(uurYJ5YFs#T`po*Nvm2}CO>6vh
zr@`S-KXb+$)zb60Ioa85tZVNi*I)X(HvXJp*<%Uq(NY(qRdrELn)LO3v>`1g`e-+r
zO)BfwGCNJXJA8yyi;fu2BbImA93~zS8{yj(*2SUnu!z{`@ERUIBrMcniii!Pgx#T7
z$yPNK5^@r9!w(^%`0|tb6{T97OLK4@?rS$&IO;PqB`hq=>|hbTA2p*M6&b@r911+)
zO+38GY_$km1dAd+>d%*IeJ#-uP2zw3RH^p&9tjFM7u&s?qC`hz@t#~NLw<tpFVjks
zl1%nUW>+Ga4L&1*U{hzHU{lgv<=Xs&1OzEoQBoKY-SEWf^D4WwTuTT|<EYEQMNpdl
zWVx2vD?#bW6m&ZhR|-4~tzg(>1!1x#oe$9Z@+>`hfL6qR)Ta#4##r29U6!BGpB<pZ
z+0p%4qftFLKpPm2^hgDDr16N6Mh%4(+Aw}rUsj<x`8WC#71}su`44(mmsS;x@9!d(
zofKQDfWr{=u2A(EE^P$2>Mbs95D(RVc4---QLAs2Vr4v{Nre?^bP^WQVqA=TvmIl+
zDx@=wyk0b{a1Bv<@}3x1jIlAg*Sob|g+mmhM!DJ;UArAy2YvUg5}lV0)vnm>susQ?
z%ElCQU{rY182x}-+t|=qm{!2Is+(LB*_ctSITe%RCb?eSyLRK)R^xx^L|4(5^J0-M
zI6p1cV~E~XsU?R@4sWWrFa>>`tlO)!F+5)PRB2UWuzl+kx!UXGFz7q0v~k>_cd6F8
zhak5pUorf-)mju!&}*u->AbK0NVS$6FA8rm3UBHh!%a%KMHRFCvubT|&Xp!RH;1Cz
z37rGi(-LM)FejL;)`+Gi^lt?h2_wBgUt6PH6nSf;#gbqaD{78d5aC-9(R8!^Y>hUG
zuh+W_)aufj!-s?q!CXr)+bs?`o>sF%3A0+eigNgR3$-Dnsaan+P`j9K*4qYZ2|ZG+
z7E?r`HGJ6yv5O_*5!zx)pckX`ZiBQUxvnl+*U^Kt89Y;ec97=gx%!WTw4RpjViPni
z(0dQovaC;Nn%JEA`q;r*leI{*D5&QZJvdlf6<ubrnB*G4E4m^AU3$|H&BdGb-9xl2
zUag-QqB*R`O^AqSI<9vgs(r!-x2VIki@5Cz>_^t<@TM>HzO~wL{)N7<R=b1O>cL@J
zik>}Oi_Q8L`(~uv0l!7Fu^|qI@E^%3EI30^GmcVCKkAEzYx7V`$8aqV=zg)57h(&y
zV34o@Zm{W>UaTeakuBF>tUbxQ9uLFO2|cpPbv>?Ej?|{`<NEz0wJo7_Dpt~N<m=-{
zX?yvomY$brb2uNTuNtkrpiL4h>d{BlX#+#12^$Zm3tur?zrRk)(dG+#v3{sd8`tw1
zVJ{Wp(=b#fs};2-V9bPTxjuZ1R)$7bj?oIUqQf+ciX$W*=_U?>VK^dU631f_i!wa?
zhJ+$Z2%O>oIsC3mwHUqIrJDAOB#FH~K4N*O#<&95X{TQvs@O60DAQs$f@lUKQ|u0+
z5cb-Lcv%R$F)R_0q~CO@=1P`(<g%ATnTh%(j?@@DdDO-s+vt@3*`?Yuc+lJCvD$Tf
zjqVty_0p@yY5lZE#JX;4SvpQD;IUtzwKWMA94^G!W)1#Vti}|0b-Z?^K5&9ol&}-i
z!e+tFy+T+x!hpDi*zoB0Owh9XKP3+myR6J)4Z}!fq5n!)H!G%NnAoOPoUEFTV=uwJ
zVl`Rq7A*{u_PGA@1Z@%z=#wUDb=^cyI>Ia_8zARkV4@af4Y8;R=J2Lmy?vrKmOJ(0
zNm_x|cW*ZLE&t7_`24HcU(V0Jb2Xdkn6s#1-on{4r)D}XZCofWoXh)V=ZgO_9aUG(
zUVP=k#`3w1S1w*yKReSg^2({RXEqFLTv9i0R^#0AsfC601>S~&{?6jO{Knj(;%Hu{
zbQ?Wu=6qCz%YcS@afK{D&Mn#$93wuRi4VKtZsB!HG`4P{#x5CMJ^JcVN8Y>AyLtGs
zmjlml{9#%jQD9ohBwVjw(b%wf(WKFr*DstuX_3&*>-$NI7hXAcmdw##ous`RapYS3
zZb|=s61HP)VvOm`wc6Um$d(T$Yw=tU^JqT&P=cQ&@sGFY9xa4(XUoQV4S&es)Vnrl
crDi9~X1RL!W!etgd`<pYMz_)yB){hW2bjF#+yDRo

diff --git a/Source/Core/Builder.csproj b/Source/Core/Builder.csproj
index 6cf6e8e6c..338f3cbef 100644
--- a/Source/Core/Builder.csproj
+++ b/Source/Core/Builder.csproj
@@ -533,7 +533,9 @@
   </ItemGroup>
   <ItemGroup>
     <Reference Include="JetBrains.Profiler.Core.Api, Version=1.3.1661.20096, Culture=neutral, PublicKeyToken=1010a0d8d6380325" Condition=" '$(Configuration)|$(Platform)' == 'Debug + Profiler|x86' Or '$(Configuration)|$(Platform)' == 'Release + Profiler|x86' " />
-    <Reference Include="SharpCompress.3.5, Version=0.11.1.0, Culture=neutral, processorArchitecture=x86" />
+    <Reference Include="SharpCompress.3.5, Version=0.11.2.0, Culture=neutral, processorArchitecture=x86">
+      <Private>False</Private>
+    </Reference>
     <Reference Include="SlimDX, Version=2.0.13.43, Culture=neutral, PublicKeyToken=b1b0c32fd1ffe4f9, processorArchitecture=x86" />
     <Reference Include="System" />
     <Reference Include="System.Core">
@@ -860,7 +862,6 @@
     <Compile Include="GZBuilder\Data\ModelLoadState.cs" />
     <Compile Include="GZBuilder\Data\ScriptItem.cs" />
     <Compile Include="GZBuilder\Data\SharpCompressHelper.cs" />
-    <Compile Include="GZBuilder\Data\TextureData.cs" />
     <Compile Include="GZBuilder\Rendering\SizelessVisualThingCage.cs" />
     <Compile Include="GZBuilder\Rendering\ThingBoundingBox.cs" />
     <Compile Include="GZBuilder\Data\ThingCopyData.cs" />
diff --git a/Source/Core/Compilers/AccCompiler.cs b/Source/Core/Compilers/AccCompiler.cs
index 7e314956b..add7b8744 100644
--- a/Source/Core/Compilers/AccCompiler.cs
+++ b/Source/Core/Compilers/AccCompiler.cs
@@ -17,7 +17,6 @@
 #region ================== Namespaces
 
 using System;
-using System.Collections.Generic;
 using System.Diagnostics;
 using System.IO;
 using CodeImp.DoomBuilder.Config;
@@ -44,7 +43,7 @@ namespace CodeImp.DoomBuilder.Compilers
 		#region ================== Constructor
 		
 		// Constructor
-		public AccCompiler(CompilerInfo info) : base(info)
+		public AccCompiler(CompilerInfo info) : base(info, false)
 		{
 		}
 
diff --git a/Source/Core/Compilers/Compiler.cs b/Source/Core/Compilers/Compiler.cs
index 648f13b85..2dc37fc65 100644
--- a/Source/Core/Compilers/Compiler.cs
+++ b/Source/Core/Compilers/Compiler.cs
@@ -71,7 +71,7 @@ namespace CodeImp.DoomBuilder.Compilers
 		#region ================== Constructor / Disposer
 		
 		// Constructor
-		protected Compiler(CompilerInfo info)
+		protected Compiler(CompilerInfo info, bool copyrequiredfiles)
 		{
 			// Initialize
 			this.info = info;
@@ -83,10 +83,15 @@ namespace CodeImp.DoomBuilder.Compilers
 			// Create temporary directory
 			tempdir = Directory.CreateDirectory(General.MakeTempDirname());
 			workingdir = tempdir.FullName;
-			
-			// Copy required files to the temp directory
-			General.WriteLogLine("Copying required files for compiler...");
-			CopyRequiredFiles();
+
+			//mxd. ACC compiler itself is not copied to tempdir anymore, so we don't need to move it's include files
+			//but we still need tempdir to compile SCRIPTS lump.
+			if(copyrequiredfiles)
+			{
+				// Copy required files to the temp directory
+				General.WriteLogLine("Copying required files for compiler...");
+				CopyRequiredFiles();
+			}
 		}
 		
 		// Disposer
diff --git a/Source/Core/Compilers/NodesCompiler.cs b/Source/Core/Compilers/NodesCompiler.cs
index 049ffa74c..5bf25d52c 100644
--- a/Source/Core/Compilers/NodesCompiler.cs
+++ b/Source/Core/Compilers/NodesCompiler.cs
@@ -43,7 +43,7 @@ namespace CodeImp.DoomBuilder.Compilers
 		#region ================== Constructor / Disposer
 
 		// Constructor
-		public NodesCompiler(CompilerInfo info) : base(info)
+		public NodesCompiler(CompilerInfo info) : base(info, true)
 		{
 			// Initialize
 
diff --git a/Source/Core/Config/ConfigurationInfo.cs b/Source/Core/Config/ConfigurationInfo.cs
index 64c04f718..45867b26b 100644
--- a/Source/Core/Config/ConfigurationInfo.cs
+++ b/Source/Core/Config/ConfigurationInfo.cs
@@ -454,13 +454,14 @@ namespace CodeImp.DoomBuilder.Config
 				{
 					// Copy the things filters from game configuration
 					foreach(ThingsFilter f in gameconfig.ThingsFilters)
-					{
 						thingsfilters.Add(new ThingsFilter(f));
-					}
 				}
 
-				//mxd. Validate filters
-				foreach(ThingsFilter f in thingsfilters) f.Validate();
+				//mxd. Validate filters. Do it only for currently used ConfigInfo
+				if(General.Map != null && General.Map.ConfigSettings == this)
+				{
+					foreach(ThingsFilter f in thingsfilters) f.Validate();
+				}
 			}
 			
 			// Go for all available editing modes
diff --git a/Source/Core/Controls/ScriptDocumentTab.cs b/Source/Core/Controls/ScriptDocumentTab.cs
index 85fde7e11..3536a2c44 100644
--- a/Source/Core/Controls/ScriptDocumentTab.cs
+++ b/Source/Core/Controls/ScriptDocumentTab.cs
@@ -410,6 +410,7 @@ namespace CodeImp.DoomBuilder.Controls
 			}
 
 			// Put some text in the navigator (but don't actually trigger selection event)
+			navigator.Enabled = (navigator.Items.Count > 0);
 			if(navigator.Items.Count > 0)
 			{
 				preventchanges = true;
@@ -421,32 +422,43 @@ namespace CodeImp.DoomBuilder.Controls
 		//mxd
 		private void UpdateNavigatorDecorate(MemoryStream stream) 
 		{
-			if (stream == null) return;
-
+			if(stream == null) return;
 			navigator.Items.Clear();
 
 			DecorateParserSE parser = new DecorateParserSE();
-			parser.Parse(stream, "DECORATE");
-			navigator.Items.AddRange(parser.Actors.ToArray());
+			if(parser.Parse(stream, "DECORATE"))
+			{
+				navigator.Items.AddRange(parser.Actors.ToArray());
+			}
+
+			if(parser.HasError)
+			{
+				panel.ShowErrors(new List<CompilerError> { new CompilerError(parser.ErrorDescription, parser.ErrorSource, parser.ErrorLine) });
+			}
 		}
 
 		//mxd
 		private void UpdateNavigatorModeldef(MemoryStream stream) 
 		{
-			if (stream == null) return;
-
+			if(stream == null) return;
 			navigator.Items.Clear();
 
 			ModeldefParserSE parser = new ModeldefParserSE();
-			parser.Parse(stream, "MODELDEF");
-			navigator.Items.AddRange(parser.Models.ToArray());
+			if(parser.Parse(stream, "MODELDEF"))
+			{
+				navigator.Items.AddRange(parser.Models.ToArray());
+			}
+
+			if(parser.HasError)
+			{
+				panel.ShowErrors(new List<CompilerError> { new CompilerError(parser.ErrorDescription, parser.ErrorSource, parser.ErrorLine) });
+			}
 		}
 
 		//mxd
 		private void UpdateNavigatorAcs(MemoryStream stream) 
 		{
-			if (stream == null) return;
-			
+			if(stream == null) return;
 			navigator.Items.Clear();
 
 			AcsParserSE parser = new AcsParserSE { AddArgumentsToScriptNames = true, IsMapScriptsLump = this is ScriptLumpDocumentTab };
@@ -456,17 +468,28 @@ namespace CodeImp.DoomBuilder.Controls
 				navigator.Items.AddRange(parser.NumberedScripts.ToArray());
 				navigator.Items.AddRange(parser.Functions.ToArray());
 			}
+
+			if(parser.HasError)
+			{
+				panel.ShowErrors(new List<CompilerError> { new CompilerError(parser.ErrorDescription, parser.ErrorSource, parser.ErrorLine) });
+			}
 		}
 		
 		//mxd
 		internal ScriptType VerifyScriptType() 
 		{
 			ScriptTypeParserSE parser = new ScriptTypeParserSE();
-			if (parser.Parse(new MemoryStream(editor.GetText()), config.Description)) 
+			if(parser.Parse(new MemoryStream(editor.GetText()), config.Description)) 
 			{
-				if (parser.ScriptType != ScriptType.UNKNOWN && config.ScriptType != parser.ScriptType)
+				if(parser.ScriptType != ScriptType.UNKNOWN && config.ScriptType != parser.ScriptType)
 					return parser.ScriptType;
 			}
+
+			if(parser.HasError)
+			{
+				panel.ShowErrors(new List<CompilerError> { new CompilerError(parser.ErrorDescription, parser.ErrorSource, parser.ErrorLine) });
+			}
+
 			return ScriptType.UNKNOWN;
 		}
 
diff --git a/Source/Core/Controls/ScriptEditorControl.cs b/Source/Core/Controls/ScriptEditorControl.cs
index 7d337d26c..bec26f459 100644
--- a/Source/Core/Controls/ScriptEditorControl.cs
+++ b/Source/Core/Controls/ScriptEditorControl.cs
@@ -250,8 +250,6 @@ namespace CodeImp.DoomBuilder.Controls
 		// This sets up the script editor with a script configuration
 		public void SetupStyles(ScriptConfiguration config)
 		{
-			Stream lexersdata;
-			StreamReader lexersreader;
 			Configuration lexercfg = new Configuration();
 
 			// Make collections
@@ -259,7 +257,7 @@ namespace CodeImp.DoomBuilder.Controls
 			SortedList<string, string> autocompletelist = new SortedList<string, string>(StringComparer.Ordinal);
 			
 			// Keep script configuration
-			if(scriptconfig != config) scriptconfig = config;
+			scriptconfig = config;
 			
 			// Find a resource named Lexers.cfg
 			string[] resnames = General.ThisAssembly.GetManifestResourceNames();
@@ -269,8 +267,8 @@ namespace CodeImp.DoomBuilder.Controls
 				if(rn.EndsWith(LEXERS_RESOURCE, StringComparison.InvariantCultureIgnoreCase))
 				{
 					// Get a stream from the resource
-					lexersdata = General.ThisAssembly.GetManifestResourceStream(rn);
-					lexersreader = new StreamReader(lexersdata, Encoding.ASCII);
+					Stream lexersdata = General.ThisAssembly.GetManifestResourceStream(rn);
+					StreamReader lexersreader = new StreamReader(lexersdata, Encoding.ASCII);
 
 					// Load configuration from stream
 					lexercfg.InputConfiguration(lexersreader.ReadToEnd());
@@ -426,8 +424,10 @@ namespace CodeImp.DoomBuilder.Controls
 			functionbar.Visible = (scriptconfig.FunctionRegEx.Length > 0);
 
 			// Rearrange the layout
+			bool ischanged = changed; //mxd. Don't want the "changed" status to change when changing text styles
 			scriptedit.ClearDocumentStyle();
 			scriptedit.SetText(scriptedit.GetText(scriptedit.TextSize));
+			changed = ischanged; //mxd
 			this.PerformLayout();
 		}
 		
diff --git a/Source/Core/Controls/ScriptFileDocumentTab.cs b/Source/Core/Controls/ScriptFileDocumentTab.cs
index 82e99b49e..ad2a85fc4 100644
--- a/Source/Core/Controls/ScriptFileDocumentTab.cs
+++ b/Source/Core/Controls/ScriptFileDocumentTab.cs
@@ -175,23 +175,24 @@ namespace CodeImp.DoomBuilder.Controls
 			AcsParserSE parser = new AcsParserSE { OnInclude = (se, path) => se.Parse(General.Map.Data.LoadFile(path), path, true, true) };
 			using(FileStream stream = File.OpenRead(filepathname))
 			{
-				if(!parser.Parse(stream, inputfile, scriptconfig.Compiler.Files, true, false))
+				if(!parser.Parse(stream, filepathname, scriptconfig.Compiler.Files, true, false))
 				{
 					// Check for errors
 					if(parser.HasError)
 					{
 						errors.Add(new CompilerError(parser.ErrorDescription, parser.ErrorSource, parser.ErrorLine));
 						panel.ShowErrors(errors);
-						compiler.Dispose();
-						return;
 					}
+
+					compiler.Dispose();
+					return;
 				}
 			}
 
-			// Only works for libraries
+			//mxd. Only works for libraries
 			if(!parser.IsLibrary)
 			{
-				errors.Add(new CompilerError("External ACS files can only be compiled as libraries!", inputfile));
+				errors.Add(new CompilerError("External ACS files can only be compiled as libraries!", filepathname));
 				panel.ShowErrors(errors);
 				compiler.Dispose();
 				return;
@@ -349,6 +350,10 @@ namespace CodeImp.DoomBuilder.Controls
 				string ext = (config.Extensions.Length > 0 ? "." + config.Extensions[0] : "");
 				SetTitle("Untitled" + ext);
 			}
+			else
+			{
+				UpdateTitle(); //mxd
+			}
 
 			//mxd
 			base.ChangeScriptConfig(newconfig);
diff --git a/Source/Core/Data/DataManager.cs b/Source/Core/Data/DataManager.cs
index 19d439fd6..4dd39e32b 100644
--- a/Source/Core/Data/DataManager.cs
+++ b/Source/Core/Data/DataManager.cs
@@ -1404,9 +1404,8 @@ namespace CodeImp.DoomBuilder.Data
 			char[] catsplitter = new[] {Path.AltDirectorySeparatorChar}; //mxd
 			
 			// Create new parser
-			decorate = new DecorateParser();
-			decorate.OnInclude = LoadDecorateFromLocation;
-			
+			decorate = new DecorateParser { OnInclude = LoadDecorateFromLocation };
+
 			// Only load these when the game configuration supports the use of decorate
 			if(!string.IsNullOrEmpty(General.Map.Config.DecorateGames))
 			{
@@ -1423,12 +1422,11 @@ namespace CodeImp.DoomBuilder.Data
 						group.Value.Seek(0, SeekOrigin.Begin);
 						decorate.Parse(group.Value, group.Key, true);
 						
-						// Check for errors
+						//mxd. DECORATE lumps are interdepandable. Can't carry on...
 						if(decorate.HasError)
 						{
-							General.ErrorLogger.Add(ErrorType.Error, "DECORATE error in '" + decorate.ErrorSource
-								+ (decorate.ErrorLine != CompilerError.NO_LINE_NUMBER ? "', line " + decorate.ErrorLine : "'") + ". " + decorate.ErrorDescription + ".");
-							break;
+							decorate.LogError(); //mxd
+							return counter;
 						}
 					}
 				}
@@ -1823,6 +1821,13 @@ namespace CodeImp.DoomBuilder.Data
 							}
 						}
 					}
+
+					// Modeldefs are independable, so parsing fail in one file should not affect the others
+					if(parser.HasError)
+					{
+						parser.LogError();
+						parser.ClearError();
+					}
 				}
 			}
 
@@ -1895,19 +1900,29 @@ namespace CodeImp.DoomBuilder.Data
 				currentreader = dr;
 
 				KeyValuePair<string, Stream> group = dr.GetVoxeldefData();
-				if(group.Value != null && parser.Parse(group.Value, group.Key)) 
+				if(group.Value != null) 
 				{
-					foreach(KeyValuePair<string, ModelData> entry in parser.Entries)
+					if(parser.Parse(group.Value, group.Key))
 					{
-						foreach(KeyValuePair<string, List<int>> sc in sprites) 
+						foreach(KeyValuePair<string, ModelData> entry in parser.Entries)
 						{
-							if(sc.Key.Contains(entry.Key)) 
+							foreach(KeyValuePair<string, List<int>> sc in sprites)
 							{
-								foreach(int id in sc.Value) modeldefentries[id] = entry.Value;
-								processed.Add(entry.Key, false);
+								if(sc.Key.Contains(entry.Key))
+								{
+									foreach(int id in sc.Value) modeldefentries[id] = entry.Value;
+									processed.Add(entry.Key, false);
+								}
 							}
 						}
 					}
+
+					// Report errors?
+					if(parser.HasError)
+					{
+						parser.LogError();
+						parser.ClearError();
+					}
 				}
 			}
 
@@ -1939,7 +1954,7 @@ namespace CodeImp.DoomBuilder.Data
 
 			GldefsParser parser = new GldefsParser { OnInclude = ParseFromLocation };
 
-			//load gldefs from resources
+			// Load gldefs from resources
 			foreach(DataReader dr in containers) 
 			{
 				currentreader = dr;
@@ -1947,7 +1962,16 @@ namespace CodeImp.DoomBuilder.Data
 				Dictionary<string, Stream> streams = dr.GetGldefsData(General.Map.Config.GameType);
 
 				foreach(KeyValuePair<string, Stream> group in streams)
+				{
 					parser.Parse(group.Value, group.Key);
+					
+					// Gldefs can be interdependable. Can't carry on
+					if(parser.HasError)
+					{
+						parser.LogError();
+						return;
+					}
+				}
 			}
 
 			//create gldefsEntries dictionary
@@ -1957,12 +1981,7 @@ namespace CodeImp.DoomBuilder.Data
 				if(actorsByClass.ContainsKey(e.Key) && parser.LightsByName.ContainsKey(e.Value)) 
 				{
 					foreach(int i in actorsByClass[e.Key])
-					{
-						if(gldefsentries.ContainsKey(i))
-							gldefsentries[i] = parser.LightsByName[e.Value];
-						else
-							gldefsentries.Add(i, parser.LightsByName[e.Value]);
-					}
+						gldefsentries[i] = parser.LightsByName[e.Value];
 				} 
 				else if(!decorate.AllActorsByClass.ContainsKey(e.Key))
 				{
@@ -1978,7 +1997,7 @@ namespace CodeImp.DoomBuilder.Data
 		private void LoadMapInfo(out Dictionary<int, string> spawnnums, out Dictionary<int, string> doomednums)
 		{
 			MapinfoParser parser = new MapinfoParser { OnInclude = ParseFromLocation };
-
+			
 			foreach(DataReader dr in containers)
 			{
 				currentreader = dr;
@@ -1987,7 +2006,20 @@ namespace CodeImp.DoomBuilder.Data
 				foreach(KeyValuePair<string, Stream> group in streams) 
 				{
 					// Parse the data
-					parser.Parse(group.Value, Path.Combine(currentreader.Location.location, group.Key), General.Map.Options.LevelName); 
+					parser.Parse(group.Value, Path.Combine(currentreader.Location.location, group.Key), General.Map.Options.LevelName);
+
+					//MAPINFO lumps are interdependable. Can't carry on...
+					if(parser.HasError)
+					{
+						parser.LogError();
+
+						// No nulls allowed!
+						spawnnums = new Dictionary<int, string>();
+						doomednums = new Dictionary<int, string>();
+						mapinfo = new MapInfo();
+
+						return;
+					}
 				}
 			}
 
@@ -2024,6 +2056,13 @@ namespace CodeImp.DoomBuilder.Data
 				{
 					// Parse the data
 					parser.Parse(group.Value, group.Key);
+
+					// Report errors?
+					if(parser.HasError)
+					{
+						parser.LogError();
+						parser.ClearError();
+					}
 				}
 			}
 
@@ -2049,6 +2088,13 @@ namespace CodeImp.DoomBuilder.Data
 				foreach(Stream s in streams)
 				{
 					if(s != null) parser.Parse(s, "SNDSEQ");
+
+					// Report errors?
+					if(parser.HasError)
+					{
+						parser.LogError();
+						parser.ClearError();
+					}
 				}
 			}
 
diff --git a/Source/Core/Data/PK3Reader.cs b/Source/Core/Data/PK3Reader.cs
index b94db119b..5888ed6d2 100644
--- a/Source/Core/Data/PK3Reader.cs
+++ b/Source/Core/Data/PK3Reader.cs
@@ -71,7 +71,7 @@ namespace CodeImp.DoomBuilder.Data
 				IReader reader = archive.ExtractAllEntries();
 				while(reader.MoveToNextEntry()) 
 				{
-					if(reader.Entry.IsDirectory) continue;
+					if(reader.Entry.IsDirectory || !CheckInvalidPathChars(reader.Entry.Key)) continue;
 
 					MemoryStream s = new MemoryStream();
 					reader.WriteEntryTo(s);
@@ -83,8 +83,8 @@ namespace CodeImp.DoomBuilder.Data
 			{
 				foreach(IArchiveEntry entry in archive.Entries) 
 				{
-					if(entry.IsDirectory) continue;
-					fileentries.Add(new DirectoryFileEntry(entry.Key));
+					if(!entry.IsDirectory && CheckInvalidPathChars(entry.Key))
+						fileentries.Add(new DirectoryFileEntry(entry.Key));
 				}
 			}
 
@@ -415,18 +415,18 @@ namespace CodeImp.DoomBuilder.Data
 			string fn = filename.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); //mxd
 
 			//mxd. This works waaaaaay faster with 7z archive
-			if (archivetype == ArchiveType.SevenZip)
+			if(archivetype == ArchiveType.SevenZip)
 			{
 				fn = fn.ToLowerInvariant();
 				if (sevenzipentries.ContainsKey(fn)) filedata = new MemoryStream(sevenzipentries[fn]);
 			} 
 			else 
 			{
-				lock (this)
+				lock(this)
 				{
 					UpdateArchive(true);
 
-					foreach (var entry in archive.Entries)
+					foreach(var entry in archive.Entries)
 					{
 						if(entry.IsDirectory) continue;
 
@@ -444,7 +444,7 @@ namespace CodeImp.DoomBuilder.Data
 			}
 			
 			// Nothing found?
-			if (filedata == null)
+			if(filedata == null)
 			{
 				//mxd
 				General.ErrorLogger.Add(ErrorType.Error, "Cannot find the file '" + filename + "' in archive '" + location.location + "'.");
@@ -466,7 +466,31 @@ namespace CodeImp.DoomBuilder.Data
 			filedata.Dispose();
 			return tempfile;
 		}
-		
+
+		//mxd. This replicates System.IO.Path.CheckInvalidPathChars() internal function
+		private bool CheckInvalidPathChars(string path)
+		{
+			foreach(char c in path)
+			{
+				int num = c;
+				switch(num)
+				{
+					case 34:
+					case 60:
+					case 62:
+					case 124:
+						General.ErrorLogger.Add(ErrorType.Error, "Error in \"" + location.location + "\": unsupported character \"" + c + "\" in path \"" + path + "\". File loading was skipped.");
+						return false;
+
+					default:
+						if(num >= 32) continue;
+						else goto case 34;
+				}
+			}
+
+			return true;
+		}
+
 		#endregion
 	}
 }
diff --git a/Source/Core/Data/WADReader.cs b/Source/Core/Data/WADReader.cs
index cfefe4b31..7c4b5d45d 100644
--- a/Source/Core/Data/WADReader.cs
+++ b/Source/Core/Data/WADReader.cs
@@ -408,21 +408,14 @@ namespace CodeImp.DoomBuilder.Data
 			// Parse the data
 			TexturesParser parser = new TexturesParser();
 			parser.Parse(stream, filename);
+			if(parser.HasError) parser.LogError(); //mxd
 
 			// Make the textures
 			foreach(TextureStructure t in parser.Textures)
 			{
-				if(t.Name.Length > 0)
-				{
-					// Add the texture
-					ImageData img = t.MakeImage();
-					images.Add(img);
-				}
-				else
-				{
-					// Can't load image without name
-					General.ErrorLogger.Add(ErrorType.Error, "Can't load an unnamed texture from \"" + filename + "\". Please consider giving names to your resources.");
-				}
+				// Add the texture
+				ImageData img = t.MakeImage();
+				images.Add(img);
 			}
 		}
 		
@@ -655,21 +648,14 @@ namespace CodeImp.DoomBuilder.Data
 			// Parse the data
 			TexturesParser parser = new TexturesParser();
 			parser.Parse(stream, filename);
+			if(parser.HasError) parser.LogError(); //mxd
 
 			// Make the textures
 			foreach(TextureStructure t in parser.Flats)
 			{
-				if(t.Name.Length > 0)
-				{
-					// Add the texture
-					ImageData img = t.MakeImage();
-					images.Add(img);
-				}
-				else
-				{
-					// Can't load image without name
-					General.ErrorLogger.Add(ErrorType.Error, "Can't load an unnamed flat from \"" + filename + "\". Please consider giving names to your resources.");
-				}
+				// Add the texture
+				ImageData img = t.MakeImage();
+				images.Add(img);
 			}
 		}
 		
@@ -725,21 +711,14 @@ namespace CodeImp.DoomBuilder.Data
 			// Parse the data
 			TexturesParser parser = new TexturesParser();
 			parser.Parse(stream, filename);
+			if(parser.HasError) parser.LogError(); //mxd
 			
 			// Make the textures
 			foreach(TextureStructure t in parser.Sprites)
 			{
-				if(t.Name.Length > 0)
-				{
-					// Add the sprite
-					ImageData img = t.MakeImage();
-					images.Add(img);
-				}
-				else
-				{
-					// Can't load image without name
-					General.ErrorLogger.Add(ErrorType.Error, "Can't load an unnamed sprite from \"" + filename + "\". Please consider giving names to your resources.");
-				}
+				// Add the sprite
+				ImageData img = t.MakeImage();
+				images.Add(img);
 			}
 		}
 		
diff --git a/Source/Core/Editing/ThingsFilter.cs b/Source/Core/Editing/ThingsFilter.cs
index 75926524c..d8a2e5535 100644
--- a/Source/Core/Editing/ThingsFilter.cs
+++ b/Source/Core/Editing/ThingsFilter.cs
@@ -236,36 +236,6 @@ namespace CodeImp.DoomBuilder.Editing
 					for(int i = 0; i < Thing.NUM_ARGS; i++) thingargs[i] = -1;
 				}
 				if(!General.Map.FormatInterface.HasCustomFields) customfields.Clear();
-
-				//mxd. We don't want to keep unknown flags (like flags from different map format)
-				if(General.Map.Config != null && General.Map.Config.ThingFlags != null) 
-				{
-					List<String> unknownfields = new List<string>();
-					foreach(String s in forbiddenfields) 
-					{
-						if(!General.Map.Config.ThingFlags.ContainsKey(s))
-							unknownfields.Add(s);
-					}
-
-					if(unknownfields.Count > 0) 
-					{
-						foreach(String s in unknownfields)
-							forbiddenfields.Remove(s);
-					}
-
-					unknownfields = new List<string>();
-					foreach(String s in requiredfields) 
-					{
-						if(!General.Map.Config.ThingFlags.ContainsKey(s))
-							unknownfields.Add(s);
-					}
-
-					if(unknownfields.Count > 0) 
-					{
-						foreach(String s in unknownfields)
-							requiredfields.Remove(s);
-					}
-				}
 			}
 		}
 
@@ -274,6 +244,32 @@ namespace CodeImp.DoomBuilder.Editing
 		{
 			AdjustForMapFormat();
 
+			//mxd. We don't want to keep unknown flags (like flags from different map format)
+			if(General.Map.Config != null && General.Map.Config.ThingFlags != null)
+			{
+				List<String> unknownfields = new List<string>();
+				foreach(String s in forbiddenfields)
+				{
+					if(!General.Map.Config.ThingFlags.ContainsKey(s)) unknownfields.Add(s);
+				}
+
+				if(unknownfields.Count > 0)
+				{
+					foreach(String s in unknownfields) forbiddenfields.Remove(s);
+				}
+
+				unknownfields.Clear();
+				foreach(String s in requiredfields)
+				{
+					if(!General.Map.Config.ThingFlags.ContainsKey(s)) unknownfields.Add(s);
+				}
+
+				if(unknownfields.Count > 0)
+				{
+					foreach(String s in unknownfields) requiredfields.Remove(s);
+				}
+			}
+
 			//Integrity check
 			if(!IsValid())
 				General.ErrorLogger.Add(ErrorType.Warning, "Things filter '" + name + "' has invalid properties. Configure the thing filter to fix this!");
@@ -298,8 +294,7 @@ namespace CodeImp.DoomBuilder.Editing
 		/// </summary>
 		public bool IsThingVisible(Thing t)
 		{
-			if (t.IsDisposed) return false; //mxd
-			return thingsvisiblestate[t];
+			return (!t.IsDisposed && thingsvisiblestate[t]);
 		}
 
 		// This writes the filter to configuration
diff --git a/Source/Core/GZBuilder/Data/ModelData.cs b/Source/Core/GZBuilder/Data/ModelData.cs
index d99eb9e2f..dde94fbb5 100644
--- a/Source/Core/GZBuilder/Data/ModelData.cs
+++ b/Source/Core/GZBuilder/Data/ModelData.cs
@@ -12,6 +12,12 @@ namespace CodeImp.DoomBuilder.GZBuilder.Data
 {
 	internal sealed class ModelData
 	{
+		#region ================== Constants
+
+		public static readonly string[] SUPPORTED_TEXTURE_EXTENSIONS = { ".jpg", ".tga", ".png", ".dds", ".pcx" };
+
+		#endregion
+
 		#region ================== Variables
 
 		private ModelLoadState loadstate;
diff --git a/Source/Core/GZBuilder/Data/TextureData.cs b/Source/Core/GZBuilder/Data/TextureData.cs
deleted file mode 100644
index c4a6f5059..000000000
--- a/Source/Core/GZBuilder/Data/TextureData.cs
+++ /dev/null
@@ -1,6 +0,0 @@
-namespace CodeImp.DoomBuilder.GZBuilder.Data {
-	public struct TextureData {
-		public const string INVALID_TEXTURE = "**invalid_texture**";
-		public static string[] SUPPORTED_TEXTURE_EXTENSIONS = { ".jpg", ".tga", ".png", ".dds", ".pcx" };
-	}
-}
diff --git a/Source/Core/GZBuilder/GZDoom/AcsParserSE.cs b/Source/Core/GZBuilder/GZDoom/AcsParserSE.cs
index 3d2db7d2a..91f6522fb 100644
--- a/Source/Core/GZBuilder/GZDoom/AcsParserSE.cs
+++ b/Source/Core/GZBuilder/GZDoom/AcsParserSE.cs
@@ -63,8 +63,6 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 
 			base.Parse(stream, sourcefilename);
 
-			// Already parsed this?
-			if(parsedlumps.Contains(sourcefilename)) return false;
 			parsedlumps.Add(sourcefilename);
 			if(isinclude && !includes.Contains(sourcefilename)) includes.Add(sourcefilename);
 			includestoskip = configincludes;
@@ -180,46 +178,68 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 					case "#library":
 						if(IsMapScriptsLump)
 						{
-							ReportError("Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": SCRIPTS lump can not be compiled as library!");
+							ReportError("SCRIPTS lump can not be compiled as a library");
 							return false;
 						}
 						
 						SkipWhitespace(true);
-						libraryname = ReadToken();
+						libraryname = ReadToken(false); // Don't skip newline
 
-						if(string.IsNullOrEmpty(libraryname) || !libraryname.StartsWith("\"") || !libraryname.EndsWith("\""))
+						if(!libraryname.StartsWith("\"") || !libraryname.EndsWith("\""))
 						{
-							ReportError("Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": invalid #library directive!");
+							ReportError("#library name should be quoted");
 							return false;
 						}
 
 						libraryname = StripTokenQuotes(libraryname);
+
+						if(string.IsNullOrEmpty(libraryname))
+						{
+							ReportError("Expected library name");
+							return false;
+						}
+
 						break;
 
 					default:
 						if(processincludes && (token == "#include" || token == "#import")) 
 						{
 							SkipWhitespace(true);
-							string includelump = StripTokenQuotes(ReadToken()).ToLowerInvariant();
+							string includelump = ReadToken(false); // Don't skip newline
+
+							if(!includelump.StartsWith("\"") || !includelump.EndsWith("\""))
+							{
+								ReportError(token + " filename should be quoted");
+								return false;
+							}
+
+							includelump = StripTokenQuotes(includelump).ToLowerInvariant();
 
-							if(!string.IsNullOrEmpty(includelump)) 
+							if(string.IsNullOrEmpty(includelump))
 							{
-								string includename = Path.GetFileName(includelump);
-								if(includestoskip.Contains(includename) || includes.Contains(includename)) continue;
-							
-								// Callback to parse this file
-								if(OnInclude != null) OnInclude(this, includelump.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar));
-
-								// Set our buffers back to continue parsing
-								datastream = localstream;
-								datareader = localreader;
-								sourcename = localsourcename;
-							} 
-							else 
+								ReportError("Expected file name to " + token);
+								return false;
+							}
+
+							string includename = Path.GetFileName(includelump);
+
+							// Compiler files?
+							if(includestoskip.Contains(includename)) continue;
+
+							// Already parsed this?
+							if(includes.Contains(includename))
 							{
-								ReportError("Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": got #include directive without include path!");
+								ReportError("already parsed '" + includename + "'. Check your #include directives");
 								return false;
 							}
+						
+							// Callback to parse this file
+							if(OnInclude != null) OnInclude(this, includelump.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar));
+
+							// Set our buffers back to continue parsing
+							datastream = localstream;
+							datareader = localreader;
+							sourcename = localsourcename;
 						}
 						break;
 				}
@@ -276,5 +296,10 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 
 			return "(void)";
 		}
+
+		protected override string GetLanguageType()
+		{
+			return "ACS";
+		}
 	}
 }
\ No newline at end of file
diff --git a/Source/Core/GZBuilder/GZDoom/DecorateParserSE.cs b/Source/Core/GZBuilder/GZDoom/DecorateParserSE.cs
index afc80a6bf..3ff98a1a8 100644
--- a/Source/Core/GZBuilder/GZDoom/DecorateParserSE.cs
+++ b/Source/Core/GZBuilder/GZDoom/DecorateParserSE.cs
@@ -4,6 +4,7 @@ using CodeImp.DoomBuilder.ZDoom;
 using CodeImp.DoomBuilder.GZBuilder.Data;
 
 //mxd. Decorate parser used to create ScriptItems for use in script editor's navigator
+//Should be able to parse actor definitions even from invalid DECORATE and should never fail parsing
 namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 {
 	internal sealed class DecorateParserSE : ZDTextParser
@@ -21,38 +22,35 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 			base.Parse(stream, sourcefilename);
 
 			// Continue until at the end of the stream
-			while (SkipWhitespace(true)) 
+			while(SkipWhitespace(true)) 
 			{
 				string token = ReadToken();
+				if(string.IsNullOrEmpty(token) || token.ToUpperInvariant() != "ACTOR") continue;
 
-				if (!string.IsNullOrEmpty(token)) 
+				SkipWhitespace(true);
+				int startpos = (int)stream.Position;
+
+				List<string> definition = new List<string>();
+
+				do
 				{
-					token = token.ToLowerInvariant();
-
-					if (token == "actor") 
-					{
-						SkipWhitespace(true);
-						int startPos = (int)stream.Position;
-
-						List<string> definition = new List<string>();
-
-						do
-						{
-							token = ReadToken();
-							if(string.IsNullOrEmpty(token) || token == "{") break;
-							definition.Add(token);
-						} while(SkipWhitespace(true));
-
-						string name = "";
-						foreach (string s in definition) name += s + " ";
-						actors.Add(new ScriptItem(name.TrimEnd(), startPos, false));
-					}
-				}
+					token = ReadToken(false); // Don't skip newline
+					if(string.IsNullOrEmpty(token) || token == "{" || token == "}") break;
+					definition.Add(token);
+				} while(SkipWhitespace(false)); // Don't skip newline
+
+				string name = string.Join(" ", definition.ToArray());
+				if(!string.IsNullOrEmpty(name)) actors.Add(new ScriptItem(name, startpos, false));
 			}
 
-			//sort nodes
+			// Sort nodes
 			actors.Sort(ScriptItem.SortByName);
 			return true;
 		}
+
+		protected override string GetLanguageType()
+		{
+			return "DECORATE";
+		}
 	}
 }
diff --git a/Source/Core/GZBuilder/GZDoom/GldefsParser.cs b/Source/Core/GZBuilder/GZDoom/GldefsParser.cs
index 075a11bb7..d8f10a48d 100644
--- a/Source/Core/GZBuilder/GZDoom/GldefsParser.cs
+++ b/Source/Core/GZBuilder/GZDoom/GldefsParser.cs
@@ -16,7 +16,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 {
 	internal sealed class GldefsParser : ZDTextParser
 	{
-		#region ================== Structs
+		#region ================== Constants
 
 		private const int DEFAULT_GLOW_HEIGHT = 64;
 
@@ -82,12 +82,6 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 		public override bool Parse(Stream stream, string sourcefilename) 
 		{
 			base.Parse(stream, sourcefilename);
-
-			if (parsedlumps.IndexOf(sourcefilename) != -1) 
-			{
-				General.ErrorLogger.Add(ErrorType.Error, "already parsed '" + sourcefilename + "'. Check your #include directives!");
-				return false;
-			}
 			parsedlumps.Add(sourcefilename);
 
 			// Keep local data
@@ -96,18 +90,17 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 			BinaryReader localreader = datareader;
 
 			// Continue until at the end of the stream
-			while (SkipWhitespace(true)) 
+			while(SkipWhitespace(true)) 
 			{
 				string token = ReadToken();
-				if (!string.IsNullOrEmpty(token)) 
+				if(!string.IsNullOrEmpty(token)) 
 				{
 					token = StripTokenQuotes(token.ToLowerInvariant()); //Quotes can be anywhere! ANYWHERE!!! And GZDoom will still parse data correctly
 
 					//got light structure
-					if (token == GldefsLightType.POINT || token == GldefsLightType.PULSE || token == GldefsLightType.FLICKER 
+					if(token == GldefsLightType.POINT || token == GldefsLightType.PULSE || token == GldefsLightType.FLICKER 
 						|| token == GldefsLightType.FLICKER2 || token == GldefsLightType.SECTOR) 
 					{
-						bool gotErrors = false;
 						string lightType = token;
 
 						DynamicLightData light = new DynamicLightData();
@@ -117,41 +110,39 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 						SkipWhitespace(true);
 						string lightName = StripTokenQuotes(ReadToken()).ToLowerInvariant();
 
-						if (!string.IsNullOrEmpty(lightName)) 
+						if(!string.IsNullOrEmpty(lightName)) 
 						{
 							//now find opening brace
 							if(!NextTokenIs("{")) continue;
 
 							//read gldefs light structure
-							while (SkipWhitespace(true)) 
+							while(SkipWhitespace(true)) 
 							{
 								token = ReadToken();
-								if (!string.IsNullOrEmpty(token)) 
+								if(!string.IsNullOrEmpty(token)) 
 								{
 									token = token.ToLowerInvariant();
 //color
-									if (token == "color") 
+									if(token == "color") 
 									{
 										SkipWhitespace(true);
 
 										token = StripTokenQuotes(ReadToken());
-										if (!float.TryParse(token, NumberStyles.Float, CultureInfo.InvariantCulture, out light.Color.Red)) 
+										if(!float.TryParse(token, NumberStyles.Float, CultureInfo.InvariantCulture, out light.Color.Red)) 
 										{
 											// Not numeric!
-											General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": expected Red Color value, but got '" + token + "'.");
-											gotErrors = true;
-											break;
+											ReportError("expected Red color value, but got '" + token + "'");
+											return false;
 										}
 
 										SkipWhitespace(true);
 
 										token = StripTokenQuotes(ReadToken());
-										if (!float.TryParse(token, NumberStyles.Float, CultureInfo.InvariantCulture, out light.Color.Green)) 
+										if(!float.TryParse(token, NumberStyles.Float, CultureInfo.InvariantCulture, out light.Color.Green)) 
 										{
 											// Not numeric!
-											General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": expected Green Color value, but got '" + token + "'.");
-											gotErrors = true;
-											break;
+											ReportError("expected Green color value, but got '" + token + "'");
+											return false;
 										}
 
 										SkipWhitespace(true);
@@ -160,128 +151,118 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 										if (!float.TryParse(token, NumberStyles.Float, CultureInfo.InvariantCulture, out light.Color.Blue)) 
 										{
 											// Not numeric!
-											General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": expected Blue Color value, but got '" + token + "'.");
-											gotErrors = true;
-											break;
+											ReportError("expected Blue color value, but got '" + token + "'");
+											return false;
 										}
 //size
 									} 
-									else if (token == "size") 
+									else if(token == "size") 
 									{
-										if (lightType != GldefsLightType.SECTOR) 
+										if(lightType != GldefsLightType.SECTOR) 
 										{
 											SkipWhitespace(true);
 
 											token = StripTokenQuotes(ReadToken());
-											if (!int.TryParse(token, NumberStyles.Integer, CultureInfo.InvariantCulture, out light.PrimaryRadius)) 
+											if(!int.TryParse(token, NumberStyles.Integer, CultureInfo.InvariantCulture, out light.PrimaryRadius)) 
 											{
 												// Not numeric!
-												General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": expected Size value, but got '" + token + "'.");
-												gotErrors = true;
-												break;
+												ReportError("expected Size value, but got '" + token + "'");
+												return false;
 											}
 											light.PrimaryRadius *= 2;
 
 										} 
 										else 
 										{
-											General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": '" + token + "' is not valid property for " + lightType + ".");
-											gotErrors = true;
-											break;
+											ReportError("'" + token + "' is not valid property for " + lightType + ".");
+											return false;
 										}
 //offset
 									} 
-									else if (token == "offset") 
+									else if(token == "offset") 
 									{
 										SkipWhitespace(true);
 
 										token = StripTokenQuotes(ReadToken());
-										if (!ReadSignedFloat(token, ref light.Offset.X)) 
+										if(!ReadSignedFloat(token, ref light.Offset.X)) 
 										{
 											// Not numeric!
-											General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": expected Offset X value, but got '" + token + "'.");
-											gotErrors = true;
-											break;
+											ReportError("expected Offset X value, but got '" + token + "'");
+											return false;
 										}
 
 										SkipWhitespace(true);
 
 										token = StripTokenQuotes(ReadToken());
-										if (!ReadSignedFloat(token, ref light.Offset.Z)) 
+										if(!ReadSignedFloat(token, ref light.Offset.Z)) 
 										{
 											// Not numeric!
-											General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": expected Offset Y value, but got '" + token + "'");
-											gotErrors = true;
-											break;
+											ReportError("expected Offset Y value, but got '" + token + "'");
+											return false;
 										}
 
 										SkipWhitespace(true);
 
 										token = StripTokenQuotes(ReadToken());
-										if (!ReadSignedFloat(token, ref light.Offset.Y)) 
+										if(!ReadSignedFloat(token, ref light.Offset.Y)) 
 										{
 											// Not numeric!
-											General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": expected Offset Z value, but got '" + token + "'.");
-											gotErrors = true;
-											break;
+											ReportError("expected Offset Z value, but got '" + token + "'");
+											return false;
 										}
 //subtractive
 									} 
-									else if (token == "subtractive") 
+									else if(token == "subtractive") 
 									{
 										SkipWhitespace(true);
 
 										token = StripTokenQuotes(ReadToken());
 										int i;
-										if (!int.TryParse(token, NumberStyles.Integer, CultureInfo.InvariantCulture, out i)) 
+										if(!int.TryParse(token, NumberStyles.Integer, CultureInfo.InvariantCulture, out i)) 
 										{
 											// Not numeric!
-											General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": expected Subtractive value, but got '" + token + "'.");
-											gotErrors = true;
-											break;
+											ReportError("expected Subtractive value, but got '" + token + "'");
+											return false;
 										}
 
 										light.Subtractive = i == 1;
 //dontlightself
 									} 
-									else if (token == "dontlightself") 
+									else if(token == "dontlightself") 
 									{
 										SkipWhitespace(true);
 
 										token = StripTokenQuotes(ReadToken());
 										int i;
-										if (!int.TryParse(token, NumberStyles.Integer, CultureInfo.InvariantCulture, out i)) 
+										if(!int.TryParse(token, NumberStyles.Integer, CultureInfo.InvariantCulture, out i)) 
 										{
 											// Not numeric!
-											General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": expected Dontlightself value, but got '" + token + "'.");
-											gotErrors = true;
-											break;
+											ReportError("expected Dontlightself value, but got '" + token + "'");
+											return false;
 										}
 
 										light.DontLightSelf = (i == 1);
 //interval
 									} 
-									else if (token == "interval") 
+									else if(token == "interval") 
 									{
-										if (lightType == GldefsLightType.PULSE || lightType == GldefsLightType.FLICKER2) 
+										if(lightType == GldefsLightType.PULSE || lightType == GldefsLightType.FLICKER2) 
 										{
 											SkipWhitespace(true);
 
 											token = StripTokenQuotes(ReadToken());
 											float interval;
-											if (!float.TryParse(token, NumberStyles.Float, CultureInfo.InvariantCulture, out interval)) 
+											if(!float.TryParse(token, NumberStyles.Float, CultureInfo.InvariantCulture, out interval)) 
 											{
 												// Not numeric!
-												General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": expected Interval value, but got '" + token + "'.");
-												gotErrors = true;
-												break;
+												ReportError("expected Interval value, but got '" + token + "'");
+												return false;
 											}
 
-											if(interval == 0) 
-												General.ErrorLogger.Add(ErrorType.Warning, "Warning in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": Interval value should be greater than zero.");
+											if(interval == 0) LogWarning("Interval value should be greater than zero");
 
 											//I wrote logic for dynamic lights animation first, so here I modify gldefs settings to fit in existing logic
-											if (lightType == GldefsLightType.PULSE) 
+											if(lightType == GldefsLightType.PULSE) 
 											{
 												light.Interval = (int)(interval * 35); //measured in tics (35 per second) in PointLightPulse, measured in seconds in gldefs' PulseLight
 											} 
@@ -292,50 +273,46 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 										} 
 										else 
 										{
-											General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": '" + token + "' is not valid property for " + lightType + ".");
-											gotErrors = true;
-											break;
+											ReportError("'" + token + "' is not valid property for " + lightType);
+											return false;
 										}
 //secondarysize
 									} 
-									else if (token == "secondarysize") 
+									else if(token == "secondarysize") 
 									{
-										if (lightType == GldefsLightType.PULSE || lightType == GldefsLightType.FLICKER || lightType == GldefsLightType.FLICKER2) 
+										if(lightType == GldefsLightType.PULSE || lightType == GldefsLightType.FLICKER || lightType == GldefsLightType.FLICKER2) 
 										{
 											SkipWhitespace(true);
 
 											token = StripTokenQuotes(ReadToken());
-											if (!int.TryParse(token, NumberStyles.Integer, CultureInfo.InvariantCulture, out light.SecondaryRadius)) 
+											if(!int.TryParse(token, NumberStyles.Integer, CultureInfo.InvariantCulture, out light.SecondaryRadius)) 
 											{
 												// Not numeric!
-												General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": expected SecondarySize value, but got '" + token + "'.");
-												gotErrors = true;
-												break;
+												ReportError("expected SecondarySize value, but got '" + token + "'");
+												return false;
 											}
 											light.SecondaryRadius *= 2;
 										} 
 										else 
 										{
-											General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": '" + token + "' is not valid property for " + lightType + ".");
-											gotErrors = true;
-											break;
+											ReportError("'" + token + "' is not valid property for " + lightType);
+											return false;
 										}
 //chance
 									} 
-									else if (token == "chance") 
+									else if(token == "chance") 
 									{
-										if (lightType == GldefsLightType.FLICKER) 
+										if(lightType == GldefsLightType.FLICKER) 
 										{
 											SkipWhitespace(true);
 
 											token = StripTokenQuotes(ReadToken());
 											float chance;
-											if (!float.TryParse(token, NumberStyles.Float, CultureInfo.InvariantCulture, out chance)) 
+											if(!float.TryParse(token, NumberStyles.Float, CultureInfo.InvariantCulture, out chance)) 
 											{
 												// Not numeric!
-												General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": expected Chance value, but got '" + token + "'.");
-												gotErrors = true;
-												break;
+												ReportError("expected Chance value, but got '" + token + "'");
+												return false;
 											}
 
 											//transforming from 0.0 .. 1.0 to 0 .. 359 to fit in existing logic
@@ -343,33 +320,30 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 										} 
 										else 
 										{
-											General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": '" + token + "' is not valid property for " + lightType + ".");
-											gotErrors = true;
-											break;
+											ReportError("'" + token + "' is not valid property for " + lightType);
+											return false;
 										}
 //scale
 									} 
-									else if (token == "scale") 
+									else if(token == "scale") 
 									{
-										if (lightType == GldefsLightType.SECTOR) 
+										if(lightType == GldefsLightType.SECTOR) 
 										{
 											SkipWhitespace(true);
 
 											token = StripTokenQuotes(ReadToken());
 											float scale;
-											if (!float.TryParse(token, NumberStyles.Float, CultureInfo.InvariantCulture, out scale)) 
+											if(!float.TryParse(token, NumberStyles.Float, CultureInfo.InvariantCulture, out scale)) 
 											{
 												// Not numeric!
-												General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": expected Scale value, but got '" + token + "'.");
-												gotErrors = true;
-												break;
+												ReportError("expected Scale value, but got '" + token + "'");
+												return false;
 											}
 
-											if (scale > 1.0f) 
+											if(scale > 1.0f) 
 											{
-												General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": scale must be in 0.0 - 1.0 range, but is " + scale + ".");
-												gotErrors = true;
-												break;
+												ReportError("scale must be in 0.0 - 1.0 range, but is " + scale);
+												return false;
 											}
 
 											//sector light doesn't have animation, so we will store it's size in Interval
@@ -378,64 +352,59 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 										} 
 										else 
 										{
-											General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": '" + token + "' is not valid property for " + lightType + ".");
-											gotErrors = true;
-											break;
+											ReportError("'" + token + "' is not valid property for " + lightType);
+											return false;
 										}
 									} 
 									//end of structure
-									else if (token == "}") 
+									else if(token == "}") 
 									{
-										if (!gotErrors) 
+										bool skip = false;
+
+										//general checks
+										if(light.Color.Red == 0.0f && light.Color.Green == 0.0f && light.Color.Blue == 0.0f) 
 										{
-											//general checks
-											if (light.Color.Red == 0.0f && light.Color.Green == 0.0f && light.Color.Blue == 0.0f) 
-											{
-												General.ErrorLogger.Add(ErrorType.Warning, "'" + sourcefilename + "', line " + GetCurrentLineNumber() + ": light Color is " + light.Color.Red + "," + light.Color.Green + "," + light.Color.Blue + ". It won't be shown in GZDoom!");
-												gotErrors = true;
-											}
+											LogWarning("'" + lightName + "' light Color is " + light.Color.Red + "," + light.Color.Green + "," + light.Color.Blue + ". It won't be shown in GZDoom");
+											skip = true;
+										}
 
-											//light-type specific checks
-											if (light.Type == DynamicLightType.NORMAL && light.PrimaryRadius == 0) 
-											{
-												General.ErrorLogger.Add(ErrorType.Warning, "'" + sourcefilename + "', line " + GetCurrentLineNumber() + ": light Size is 0. It won't be shown in GZDoom!");
-												gotErrors = true;
-											}
+										//light-type specific checks
+										if(light.Type == DynamicLightType.NORMAL && light.PrimaryRadius == 0) 
+										{
+											LogWarning("'" + lightName + "' light Size is 0. It won't be shown in GZDoom");
+											skip = true;
+										}
 
-											if (light.Type == DynamicLightType.FLICKER || light.Type == DynamicLightType.PULSE || light.Type == DynamicLightType.RANDOM) 
+										if(light.Type == DynamicLightType.FLICKER || light.Type == DynamicLightType.PULSE || light.Type == DynamicLightType.RANDOM) 
+										{
+											if(light.PrimaryRadius == 0 && light.SecondaryRadius == 0)
 											{
-												if (light.PrimaryRadius == 0 && light.SecondaryRadius == 0) 
-												{
-													General.ErrorLogger.Add(ErrorType.Warning, "'" + sourcefilename + "', line " + GetCurrentLineNumber() + ": 'Size' and 'SecondarySize' are 0. This light won't be shown in GZDoom!");
-													gotErrors = true;
-												}
+												LogWarning("'" + lightName + "' light Size and SecondarySize are 0. This light won't be shown in GZDoom");
+												skip = true;
 											}
+										}
 
-											//offset it slightly to avoid shading glitches
-											if (light.Offset.Z == 0.0f) light.Offset.Z = 0.1f;
+										//offset it slightly to avoid shading glitches
+										if(light.Offset.Z == 0.0f) light.Offset.Z = 0.1f;
 
-											if (!gotErrors) 
-											{
-												if (lightsByName.ContainsKey(lightName))
-													lightsByName[lightName] = light;
-												else
-													lightsByName.Add(lightName, light);
-											}
-										}
-										break; //break out of this parsing loop
+										// Add to the collection?
+										if(!skip) lightsByName[lightName] = light;
+
+										//break out of this parsing loop
+										break; 
 									}
 								}
 							}
 						}
 					} 
-					else if (token == "object") 
+					else if(token == "object") 
 					{
 						SkipWhitespace(true);
 
 						//read object class
 						string objectClass = StripTokenQuotes(ReadToken()).ToLowerInvariant();
 
-						if (!string.IsNullOrEmpty(objectClass)) 
+						if(!string.IsNullOrEmpty(objectClass)) 
 						{
 							//now find opening brace
 							if(!NextTokenIs("{")) continue;
@@ -445,10 +414,10 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 							bool foundFrame = false;
 
 							//read frames structure
-							while (SkipWhitespace(true)) 
+							while(SkipWhitespace(true)) 
 							{
 								token = ReadToken();
-								if (!string.IsNullOrEmpty(token)) 
+								if(!string.IsNullOrEmpty(token)) 
 								{
 									token = StripTokenQuotes(token).ToLowerInvariant();
 									if(!foundLight && !foundFrame && token == "frame") 
@@ -464,29 +433,26 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 										SkipWhitespace(true);
 										token = ReadToken().ToLowerInvariant(); //should be light name
 
-										if (!string.IsNullOrEmpty(token)) 
+										if(!string.IsNullOrEmpty(token)) 
 										{
-											if (lightsByName.ContainsKey(token)) 
+											if(lightsByName.ContainsKey(token)) 
 											{
-												if (objects.ContainsKey(objectClass))
-													objects[objectClass] = token;
-												else
-													objects.Add(objectClass, token);
+												objects[objectClass] = token;
 												foundLight = true;
 											} 
 											else 
 											{
-												General.ErrorLogger.Add(ErrorType.Warning, "Light declaration not found for light '" + token + "' ('" + sourcefilename + "', line " + GetCurrentLineNumber()+").");
+												LogWarning("Light declaration not found for light '" + token + "'");
 											}
 										}
 									} 
-									else if (token == "{") //continue in this loop until object structure ends
+									else if(token == "{") //continue in this loop until object structure ends
 									{ 
 										bracesCount++;
 									} 
-									else if (token == "}") 
+									else if(token == "}") 
 									{
-										if (--bracesCount < 1) break; //This was Cave Johnson. And we are done here.
+										if(--bracesCount < 1) break; //This was Cave Johnson. And we are done here.
 									}
 								}
 							}
@@ -549,12 +515,12 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 								int color;
 								int glowheight = DEFAULT_GLOW_HEIGHT;
 								bool subtractivetexture = (token == "subtexture");
-								string texturename = StripTokenQuotes(ReadToken());
+								string texturename = StripTokenQuotes(ReadToken(false));
 
 								if(string.IsNullOrEmpty(texturename))
 								{
-									General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": expected a texture name.");
-									break;
+									ReportError("expected " + token + " name");
+									return false;
 								}
 								
 								// Now we should find a comma
@@ -574,8 +540,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 									}
 									else
 									{
-										General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": expected glow color value, but got '" + token + "'.");
-										break;
+										ReportError("expected glow color value, but got '" + token + "'");
+										return false;
 									}
 								}
 
@@ -632,8 +598,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 								if(!fullblack && !fullbright)
 								{
 									string expectedflags = (subtractivetexture ? "'fullbright'" : "'fullbright' or 'fullblack'");
-									General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": expected " + expectedflags + " flag, but got '" + token + "'.");
-									break;
+									ReportError("expected " + expectedflags + " flag, but got '" + token + "'");
+									return false;
 								}
 
 								// Add glow data
@@ -655,25 +621,43 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 							if(string.IsNullOrEmpty(token) || token == "}") break;
 						}
 					}
-					else if (token == "#include") 
+					else if(token == "#include") 
 					{
 						SkipWhitespace(true);
-						string includeLump = StripTokenQuotes(ReadToken()).ToLowerInvariant();
-						if (!string.IsNullOrEmpty(includeLump)) 
+						string includelump = ReadToken(false); // Don't skip newline
+
+						// Sanity checks
+						if(!includelump.StartsWith("\"") || !includelump.EndsWith("\""))
 						{
-							// Callback to parse this file
-							if (OnInclude != null)
-								OnInclude(this, includeLump.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar));
-
-							// Set our buffers back to continue parsing
-							datastream = localstream;
-							datareader = localreader;
-							sourcename = localsourcename;
-						} 
-						else 
+							ReportError("#include filename should be quoted");
+							return false;
+						}
+
+						includelump = StripTokenQuotes(includelump).ToLowerInvariant();
+
+						// More sanity checks
+						if(string.IsNullOrEmpty(includelump))
 						{
-							General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": got #include directive with missing or incorrect path: '" + includeLump + "'.");
+							ReportError("Expected file name to include");
+							return false;
 						}
+
+						includelump = includelump.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar);
+						
+						// Already parsed?
+						if(parsedlumps.IndexOf(includelump) != -1)
+						{
+							ReportError("already parsed '" + includelump + "'. Check your #include directives");
+							return false;
+						}
+
+						// Callback to parse this file
+						if(OnInclude != null) OnInclude(this, includelump);
+
+						// Set our buffers back to continue parsing
+						datastream = localstream;
+						datareader = localreader;
+						sourcename = localsourcename;
 					} 
 					else if(token == "$gzdb_skip") //mxd
 					{
@@ -685,21 +669,21 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 						string token2;
 						do 
 						{
-							if (!SkipWhitespace(true)) break;
+							if(!SkipWhitespace(true)) break;
 							token2 = ReadToken();
-							if (string.IsNullOrEmpty(token2)) break;
+							if(string.IsNullOrEmpty(token2)) break;
 						}
 						while (token2 != "{");
 						int scopelevel = 1;
 						do 
 						{
-							if (!SkipWhitespace(true)) break;
+							if(!SkipWhitespace(true)) break;
 							token2 = ReadToken();
 							if(string.IsNullOrEmpty(token2)) break;
-							if (token2 == "{") scopelevel++;
-							if (token2 == "}") scopelevel--;
+							if(token2 == "{") scopelevel++;
+							if(token2 == "}") scopelevel--;
 						}
-						while (scopelevel > 0);
+						while(scopelevel > 0);
 					}
 				}
 			}
@@ -716,6 +700,11 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 			parsedlumps.Clear();
 		}
 
+		protected override string GetLanguageType()
+		{
+			return "GLDEFS";
+		}
+
 		#endregion
 	}
 }
\ No newline at end of file
diff --git a/Source/Core/GZBuilder/GZDoom/MapinfoParser.cs b/Source/Core/GZBuilder/GZDoom/MapinfoParser.cs
index 93c8f1950..e361b4b17 100644
--- a/Source/Core/GZBuilder/GZDoom/MapinfoParser.cs
+++ b/Source/Core/GZBuilder/GZDoom/MapinfoParser.cs
@@ -28,6 +28,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 		private string mapname;
 		private readonly Dictionary<int, string> spawnnums;
 		private readonly Dictionary<int, string> doomednums; // <DoomEdNum, <lowercase classname, List of default arguments>>
+		private readonly HashSet<string> parsedlumps;
 
 		#endregion
 
@@ -50,6 +51,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 			mapinfo = new MapInfo();
 			spawnnums = new Dictionary<int, string>();
 			doomednums = new Dictionary<int, string>();
+			parsedlumps = new HashSet<string>();
 		}
 
 		#endregion
@@ -67,6 +69,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 		{
 			base.Parse(stream, sourcefilename);
 			this.mapname = mapname.ToLowerInvariant();
+			parsedlumps.Add(sourcefilename);
 
 			while(SkipWhitespace(true)) 
 			{
@@ -118,30 +121,30 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 				int bracelevel = 0;
 
 				//search for required keys
-				while (SkipWhitespace(true)) 
+				while(SkipWhitespace(true)) 
 				{
 					token = ReadToken().ToLowerInvariant();
 //sky1 or sky2
-					if (token == "sky1" || token == "sky2") 
+					if(token == "sky1" || token == "sky2") 
 					{
 						string skyType = token;
 						SkipWhitespace(true);
 						token = StripTokenQuotes(ReadToken()).ToLowerInvariant();
 
 						//new format
-						if (token == "=") 
+						if(token == "=") 
 						{
 							SkipWhitespace(true);
 
 							//should be sky texture name
 							token = StripTokenQuotes(ReadToken());
 							bool gotComma = (token.IndexOf(",") != -1);
-							if (gotComma) token = token.Replace(",", "");
+							if(gotComma) token = token.Replace(",", "");
 							string skyTexture = StripTokenQuotes(token).ToLowerInvariant();
 
-							if (!string.IsNullOrEmpty(skyTexture)) 
+							if(!string.IsNullOrEmpty(skyTexture)) 
 							{
-								if (skyType == "sky1")
+								if(skyType == "sky1")
 									mapinfo.Sky1 = skyTexture;
 								else
 									mapinfo.Sky2 = skyTexture;
@@ -150,25 +153,24 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 								SkipWhitespace(true);
 								token = StripTokenQuotes(ReadToken());
 
-								if (!gotComma && token == ",") 
+								if(!gotComma && token == ",") 
 								{
 									gotComma = true;
 									SkipWhitespace(true);
 									token = ReadToken();
 								}
 
-								if (gotComma) 
+								if(gotComma) 
 								{
 									float scrollSpeed = 0;
-									if (!ReadSignedFloat(token, ref scrollSpeed)) 
+									if(!ReadSignedFloat(token, ref scrollSpeed)) 
 									{
 										// Not numeric!
-										General.ErrorLogger.Add(ErrorType.Warning, "Unexpected token found in '" + sourcename + "' at line " + GetCurrentLineNumber() + ": expected " + skyType + " scroll speed value, but got '" + token + "'");
-										datastream.Seek(-token.Length - 1, SeekOrigin.Current); //step back and try parsing this token again
-										continue;
+										ReportError("expected " + skyType + " scroll speed value, but got '" + token + "'");
+										return false;
 									}
 
-									if (skyType == "sky1")
+									if(skyType == "sky1")
 										mapinfo.Sky1ScrollSpeed = scrollSpeed;
 									else
 										mapinfo.Sky2ScrollSpeed = scrollSpeed;
@@ -180,17 +182,17 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 							} 
 							else 
 							{
-								datastream.Seek(-token.Length - 1, SeekOrigin.Current); //step back and try parsing this token again
-								General.ErrorLogger.Add(ErrorType.Error, "Unexpected token found in '" + sourcename + "' at line " + GetCurrentLineNumber() + ": expected " + skyType + " texture name.");
+								ReportError("expected " + skyType + " texture name");
+								return false;
 							}
 						}
 						//old format
 						else 
 						{
 							//token should be sky1/2 name
-							if (!string.IsNullOrEmpty(token)) 
+							if(!string.IsNullOrEmpty(token)) 
 							{
-								if (skyType == "sky1")
+								if(skyType == "sky1")
 									mapinfo.Sky1 = token;
 								else
 									mapinfo.Sky2 = token;
@@ -200,14 +202,14 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 								token = StripTokenQuotes(ReadToken());
 
 								float scrollSpeed = 0;
-								if (!ReadSignedFloat(token, ref scrollSpeed)) 
+								if(!ReadSignedFloat(token, ref scrollSpeed)) 
 								{
 									// Not numeric!
 									datastream.Seek(-token.Length - 1, SeekOrigin.Current); //step back and try parsing this token again
 									continue;
 								}
 
-								if (skyType == "sky1")
+								if(skyType == "sky1")
 									mapinfo.Sky1ScrollSpeed = scrollSpeed;
 								else
 									mapinfo.Sky2ScrollSpeed = scrollSpeed;
@@ -215,20 +217,20 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 							} 
 							else 
 							{
-								datastream.Seek(-token.Length - 1, SeekOrigin.Current); //step back and try parsing this token again
-								General.ErrorLogger.Add(ErrorType.Error, "Unexpected token found in '" + sourcename + "' at line " + GetCurrentLineNumber() + ": expected " + skyType + " texture name.");
+								ReportError("expected " + skyType + " texture name");
+								return false;
 							}
 						}
 					}
 //fade or outsidefog
-					else if (token == "fade" || token == "outsidefog") 
+					else if(token == "fade" || token == "outsidefog") 
 					{
 						string fadeType = token;
 						SkipWhitespace(true);
 						token = StripTokenQuotes(ReadToken()).ToLowerInvariant();
 
 						//new format?
-						if (token == "=") 
+						if(token == "=") 
 						{
 							SkipWhitespace(true);
 							token = ReadToken();
@@ -249,18 +251,18 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 							} 
 							else //...or not
 							{ 
-								General.ErrorLogger.Add(ErrorType.Error, "Failed to parse " + fadeType + " value from string '" + colorVal + "' in '" + sourcename + "' at line " + GetCurrentLineNumber());
-								datastream.Seek(-token.Length - 1, SeekOrigin.Current); //step back and try parsing this token again
+								ReportError("failed to parse " + fadeType + " value from string '" + colorVal + "'");
+								return false;
 							}
 						} 
 						else 
 						{
-							General.ErrorLogger.Add(ErrorType.Error, "Unexpected token found in '" + sourcename + "' at line " + GetCurrentLineNumber() + ": expected " + fadeType + " color value.");
-							datastream.Seek(-token.Length - 1, SeekOrigin.Current); //step back and try parsing this token again
+							ReportError("expected " + fadeType + " color value");
+							return false;
 						}
 					}
 //vertwallshade or horizwallshade
-					else if (token == "vertwallshade" || token == "horizwallshade") 
+					else if(token == "vertwallshade" || token == "horizwallshade") 
 					{
 						string shadeType = token;
 						SkipWhitespace(true);
@@ -277,9 +279,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 						if(!ReadSignedInt(token, ref val)) 
 						{
 							// Not numeric!
-							General.ErrorLogger.Add(ErrorType.Error, "Unexpected token found in '" + sourcename + "' at line " + GetCurrentLineNumber() + ": expected " + shadeType + " value, but got '" + token + "'");
-							datastream.Seek(-token.Length - 1, SeekOrigin.Current); //step back and try parsing this token again
-							continue;
+							ReportError("expected " + shadeType + " value, but got '" + token + "'");
+							return false;
 						}
 
 						if(shadeType == "vertwallshade")
@@ -305,23 +306,22 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 						if(!int.TryParse(token, NumberStyles.Integer, CultureInfo.InvariantCulture, out val)) 
 						{
 							// Not numeric!
-							General.ErrorLogger.Add(ErrorType.Error, "Unexpected token found in '" + sourcename + "' at line " + GetCurrentLineNumber() + ": expected " + densityType + " value, but got '" + token + "'");
-							datastream.Seek(-token.Length - 1, SeekOrigin.Current); //step back and try parsing this token again
-							continue;
+							ReportError("expected " + densityType + " value, but got '" + token + "'");
+							return false;
 						}
 
-						if (densityType == "fogdensity")
+						if(densityType == "fogdensity")
 							mapinfo.FogDensity = (int)(1024 * (256.0f / val));
 						else
 							mapinfo.OutsideFogDensity = (int)(1024 * (256.0f / val));
 					}
 //doublesky
-					else if (token == "doublesky") 
+					else if(token == "doublesky") 
 					{
 						mapinfo.DoubleSky = true;
 					}
 //evenlighting
-					else if (token == "evenlighting") 
+					else if(token == "evenlighting") 
 					{
 						mapinfo.EvenLighting = true;
 					}
@@ -331,7 +331,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 						mapinfo.SmoothLighting = true;
 					}
 //block end
-					else if (token == "}") 
+					else if(token == "}") 
 					{
 						return ParseBlock(token);
 					}
@@ -356,12 +356,13 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 			else if(token == "include")
 			{
 				SkipWhitespace(true);
-				string includeLump = StripTokenQuotes(ReadToken()).ToLowerInvariant();
-				if(!string.IsNullOrEmpty(includeLump)) 
+				string includelump = StripTokenQuotes(ReadToken(false)).ToLowerInvariant(); // Don't skip newline
+				
+				if(!string.IsNullOrEmpty(includelump)) 
 				{
 					// Callback to parse this file
 					if(OnInclude != null)
-						OnInclude(this, includeLump.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar));
+						OnInclude(this, includelump.Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar));
 
 					// Set our buffers back to continue parsing
 					datastream = localstream;
@@ -370,32 +371,33 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 				} 
 				else 
 				{
-					General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcename + "' at line " + GetCurrentLineNumber() + ": got #include directive with missing or incorrect path: '" + includeLump + "'.");
+					ReportError("got include directive with missing or incorrect path: '" + includelump + "'");
+					return false;
 				}
 			}
 			else if(token == "gameinfo")
 			{
-				if(!NextTokenIs("{")) return true; // Finished with this file
+				if(!NextTokenIs("{")) return false; // Finished with this file
 
 				while(SkipWhitespace(true))
 				{
 					token = ReadToken();
 					if(string.IsNullOrEmpty(token))
 					{
-						General.ErrorLogger.Add(ErrorType.Error, "Error while parisng '" + sourcename + "' at line " + GetCurrentLineNumber() + ": failed to find the end of GameInfo block");
-						return true; // Finished with this file
+						ReportError("failed to find the end of GameInfo block");
+						return false; // Finished with this file
 					}
 					if(token == "}") break;
 
 					if(token == "skyflatname")
 					{
-						if(!NextTokenIs("=")) return true; // Finished with this file
+						if(!NextTokenIs("=")) return false; // Finished with this file
 						SkipWhitespace(true);
 						string skyflatname = StripTokenQuotes(ReadToken());
 						if(string.IsNullOrEmpty(skyflatname)) 
 						{
-							General.ErrorLogger.Add(ErrorType.Error, "Error while parisng '" + sourcename + "' at line " + GetCurrentLineNumber() + ": unable to get SkyFlatName value");
-							return true; // Finished with this file
+							ReportError("unable to get SkyFlatName value");
+							return false; // Finished with this file
 						}
 
 						General.Map.Config.SkyFlatName = skyflatname.ToUpperInvariant();
@@ -404,15 +406,15 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 			}
 			else if(token == "doomednums")
 			{
-				if(!NextTokenIs("{")) return true; // Finished with this file
+				if(!NextTokenIs("{")) return false; // Finished with this file
 
 				while(SkipWhitespace(true)) 
 				{
 					token = ReadToken();
 					if(string.IsNullOrEmpty(token)) 
 					{
-						General.ErrorLogger.Add(ErrorType.Error, "Error while parisng '" + sourcename + "' at line " + GetCurrentLineNumber() + ": failed to find the end of DoomEdNums block");
-						return true; // Finished with this file
+						ReportError("failed to find the end of DoomEdNums block");
+						return false; // Finished with this file
 					}
 					if(token == "}") break;
 
@@ -421,24 +423,24 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 					if(!int.TryParse(token, NumberStyles.Integer, CultureInfo.InvariantCulture, out id)) 
 					{
 						// Not numeric!
-						General.ErrorLogger.Add(ErrorType.Error, "Unexpected token found in '" + sourcename + "' at line " + GetCurrentLineNumber() + ": expected DoomEdNums entry number, but got '" + token + "'");
-						return true; // Finished with this file
+						ReportError("expected DoomEdNums entry number, but got '" + token + "'");
+						return false; // Finished with this file
 					}
 
 					// Then "="
-					if(!NextTokenIs("=")) return true; // Finished with this file
+					if(!NextTokenIs("=")) return false; // Finished with this file
 
 					// Then actor class
 					SkipWhitespace(false);
 					string classname = StripTokenQuotes(ReadToken());
 					if(string.IsNullOrEmpty(classname)) 
 					{
-						General.ErrorLogger.Add(ErrorType.Error, "Error while parisng '" + sourcename + "' at line " + GetCurrentLineNumber() + ": unable to get DoomEdNums entry class definition");
-						return true; // Finished with this file
+						ReportError("unable to get DoomEdNums entry class definition");
+						return false; // Finished with this file
 					}
 
 					// Possible special and args. We'll skip them
-					for (int i = 0; i < 6; i++)
+					for(int i = 0; i < 6; i++)
 					{
 						if(!NextTokenIs(",", false)) break;
 
@@ -452,15 +454,15 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 			} 
 			else if(token == "spawnnums")
 			{
-				if(!NextTokenIs("{")) return true; // Finished with this file
+				if(!NextTokenIs("{")) return false; // Finished with this file
 
-				while (SkipWhitespace(true))
+				while(SkipWhitespace(true))
 				{
 					token = ReadToken();
 					if(string.IsNullOrEmpty(token)) 
 					{
-						General.ErrorLogger.Add(ErrorType.Error, "Error while parisng '" + sourcename + "' at line " + GetCurrentLineNumber() + ": failed to find the end of SpawnNums block");
-						return true; // Finished with this file
+						ReportError("failed to find the end of SpawnNums block");
+						return false; // Finished with this file
 					}
 					if(token == "}") break;
 
@@ -469,20 +471,20 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 					if(!int.TryParse(token, NumberStyles.Integer, CultureInfo.InvariantCulture, out id)) 
 					{
 						// Not numeric!
-						General.ErrorLogger.Add(ErrorType.Error, "Unexpected token found in '" + sourcename + "' at line " + GetCurrentLineNumber() + ": expected SpawnNums number, but got '" + token + "'");
-						return true; // Finished with this file
+						ReportError("expected SpawnNums number, but got '" + token + "'");
+						return false; // Finished with this file
 					}
 
 					// Then "="
-					if(!NextTokenIs("=")) return true; // Finished with this file
+					if(!NextTokenIs("=")) return false; // Finished with this file
 
 					// Then actor class
 					SkipWhitespace(false);
 					token = StripTokenQuotes(ReadToken());
 					if(string.IsNullOrEmpty(token))
 					{
-						General.ErrorLogger.Add(ErrorType.Error, "Error while parisng '" + sourcename + "' at line " + GetCurrentLineNumber() + ": unable to get SpawnNums entry class definition");
-						return true;
+						ReportError("unable to get SpawnNums entry class definition");
+						return false;
 					}
 
 					// Add to collection
@@ -503,11 +505,11 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 
 		private static bool GetColor(string name, ref Color4 color) 
 		{
-			if (name == "black") return true;
+			if(name == "black") return true;
 
 			//probably it's a hex color (like FFCC11)?
 			int ci;
-			if (int.TryParse(name, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out ci)) 
+			if(int.TryParse(name, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out ci)) 
 			{
 				color = new Color4(ci) {Alpha = 1.0f};
 				return true;
@@ -515,7 +517,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 
 			//probably it's a color name?
 			Color c = Color.FromName(name); //should be similar to C++ color name detection, I suppose
-			if (c.IsKnownColor) 
+			if(c.IsKnownColor) 
 			{
 				color = new Color4(c);
 				return true;
@@ -523,6 +525,11 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 			return false;
 		}
 
+		protected override string GetLanguageType()
+		{
+			return "MAPINFO";
+		}
+
 		#endregion
 	}
 }
diff --git a/Source/Core/GZBuilder/GZDoom/ModeldefParser.cs b/Source/Core/GZBuilder/GZDoom/ModeldefParser.cs
index 65e619d32..954d16bf7 100644
--- a/Source/Core/GZBuilder/GZDoom/ModeldefParser.cs
+++ b/Source/Core/GZBuilder/GZDoom/ModeldefParser.cs
@@ -10,7 +10,6 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 	{
 		private Dictionary<string, ModelData> entries; //classname, entry
 		internal Dictionary<string, ModelData> Entries { get { return entries; } }
-		internal string Source { get { return sourcename; } }
 
 		internal ModeldefParser() 
 		{
@@ -24,66 +23,88 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 			entries = new Dictionary<string, ModelData>(StringComparer.Ordinal);
 
 			// Continue until at the end of the stream
-			while (SkipWhitespace(true)) 
+			while(SkipWhitespace(true)) 
 			{
 				string token = ReadToken();
-				if (!string.IsNullOrEmpty(token)) 
+				if(!string.IsNullOrEmpty(token)) 
 				{
 					token = StripTokenQuotes(token).ToLowerInvariant();
-					if (token == "model") //model structure start
+					if(token == "model") //model structure start
 					{ 
 						//find classname
 						SkipWhitespace(true);
-						string className = StripTokenQuotes(ReadToken(ActorStructure.ACTOR_CLASS_SPECIAL_TOKENS)).ToLowerInvariant();
+						string displayclassname = StripTokenQuotes(ReadToken(ActorStructure.ACTOR_CLASS_SPECIAL_TOKENS));
+						string classname = displayclassname.ToLowerInvariant();
 
-						if(!string.IsNullOrEmpty(className) && !entries.ContainsKey(className)) 
+						if(!string.IsNullOrEmpty(classname) && !entries.ContainsKey(classname)) 
 						{
 							//now find opening brace
 							SkipWhitespace(true);
 							token = ReadToken();
-							if (token != "{") 
+							if(token != "{") 
 							{
-								General.ErrorLogger.Add(ErrorType.Error, "Unexpected token found in '"+sourcefilename+"' at line "+GetCurrentLineNumber()+": expected '{', but got '" + token + "'");
+								General.ErrorLogger.Add(ErrorType.Error, "Unexpected token found in '" + sourcefilename + "' at line " + GetCurrentLineNumber() + ": expected '{', but got '" + token + "'");
 								continue; //something wrong with modeldef declaration, continue to next one
 							}
 
 							ModeldefStructure mds = new ModeldefStructure();
-							ModelData mde = mds.Parse(this);
-							if (mde != null) entries.Add(className, mde);
+							if(mds.Parse(this, displayclassname) && mds.ModelData != null)
+							{
+								entries.Add(classname, mds.ModelData);
+							}
+							
+							if(HasError)
+							{
+								LogError();
+								ClearError();
+							}
+
+							// Skip untill current structure end
+							if(!mds.ParsingFinished)
+							{
+								while(SkipWhitespace(true))
+								{
+									token = ReadToken();
+									if(string.IsNullOrEmpty(token) || token == "}") break;
+								}
+							}
 						}
 					} 
 					else 
 					{
 						// Unknown structure!
 						string token2;
-						if (token != "{") 
+						if(token != "{") 
 						{
 							do
 							{
-								if (!SkipWhitespace(true)) break;
+								if(!SkipWhitespace(true)) break;
 								token2 = ReadToken();
-								if (string.IsNullOrEmpty(token2)) break;
+								if(string.IsNullOrEmpty(token2)) break;
 							} 
-							while (token2 != "{");
+							while(token2 != "{");
 						}
 
 						int scopelevel = 1;
 						do 
 						{
-							if (!SkipWhitespace(true)) break;
+							if(!SkipWhitespace(true)) break;
 							token2 = ReadToken();
-							if (string.IsNullOrEmpty(token2)) break;
-							if (token2 == "{") scopelevel++;
-							if (token2 == "}") scopelevel--;
+							if(string.IsNullOrEmpty(token2)) break;
+							if(token2 == "{") scopelevel++;
+							if(token2 == "}") scopelevel--;
 						}
-						while (scopelevel > 0);
+						while(scopelevel > 0);
 					}
-
 				}
-
 			}
 
 			return entries.Count > 0;
 		}
+
+		protected override string GetLanguageType()
+		{
+			return "MODELDEF";
+		}
 	}
 }
diff --git a/Source/Core/GZBuilder/GZDoom/ModeldefParserSE.cs b/Source/Core/GZBuilder/GZDoom/ModeldefParserSE.cs
index e591e4533..13d3995fa 100644
--- a/Source/Core/GZBuilder/GZDoom/ModeldefParserSE.cs
+++ b/Source/Core/GZBuilder/GZDoom/ModeldefParserSE.cs
@@ -1,13 +1,14 @@
 #region ================== Namespaces
 
-using System.IO;
 using System.Collections.Generic;
-using CodeImp.DoomBuilder.ZDoom;
+using System.IO;
 using CodeImp.DoomBuilder.GZBuilder.Data;
+using CodeImp.DoomBuilder.ZDoom;
 
 #endregion
 
 //mxd. Modeldef parser used to create ScriptItems for use in script editor's navigator
+//Should be parse model definitions even from invalid MODELDEF and should never fail parsing
 namespace CodeImp.DoomBuilder.GZBuilder.GZDoom 
 {
 	internal sealed class ModeldefParserSE : ZDTextParser 
@@ -25,34 +26,39 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 			base.Parse(stream, sourcefilename);
 
 			// Continue until at the end of the stream
-			while (SkipWhitespace(true)) 
+			while(SkipWhitespace(true)) 
 			{
 				string token = ReadToken();
+				if(string.IsNullOrEmpty(token) || token.ToUpperInvariant() != "MODEL") continue; 
+
+				SkipWhitespace(true);
+				int startpos = (int)stream.Position;
+				string modelname = ReadToken();
+
+				SkipWhitespace(true);
+				token = ReadToken(); //this should be "{"
 
-				if (!string.IsNullOrEmpty(token)) 
+				if(token == "{") 
 				{
-					token = token.ToUpperInvariant();
-
-					if(token == "MODEL")
-					{
-						SkipWhitespace(true);
-						int startPos = (int)stream.Position;
-						string modelName = ReadToken();
-						SkipWhitespace(true);
-						token = ReadToken(); //this should be "{"
-
-						if (token == "{") 
-						{
-							ScriptItem i = new ScriptItem(modelName, startPos, false);
-							models.Add(i);
-						}
-					}
+					ScriptItem i = new ScriptItem(modelname, startpos, false);
+					models.Add(i);
+				}
+
+				while(SkipWhitespace(true))
+				{
+					token = ReadToken();
+					if(string.IsNullOrEmpty(token) || token == "}") break;
 				}
 			}
 
-			//sort nodes
+			// Sort nodes
 			models.Sort(ScriptItem.SortByName);
 			return true;
 		}
+
+		protected override string GetLanguageType()
+		{
+			return "MODELDEF";
+		}
 	}
 }
diff --git a/Source/Core/GZBuilder/GZDoom/ModeldefStructure.cs b/Source/Core/GZBuilder/GZDoom/ModeldefStructure.cs
index 225b764a9..a62e4ef4a 100644
--- a/Source/Core/GZBuilder/GZDoom/ModeldefStructure.cs
+++ b/Source/Core/GZBuilder/GZDoom/ModeldefStructure.cs
@@ -14,8 +14,12 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 	internal sealed class ModeldefStructure 
 	{
 		private const int MAX_MODELS = 4; //maximum models per modeldef entry, zero-based
+		private bool parsingfinished;
 
-		internal ModelData Parse(ModeldefParser parser)
+		internal ModelData ModelData;
+		internal bool ParsingFinished { get { return parsingfinished; } }
+
+		internal bool Parse(ModeldefParser parser, string classname)
 		{
 
 #region ================== Vars
@@ -35,13 +39,12 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 			bool inheritactorroll = false;
 
 			string token;
-			bool gotErrors = false;
-			bool allParsed = false;
 
 #endregion
 
 			//read modeldef structure contents
-			while(!gotErrors && !allParsed && parser.SkipWhitespace(true)) 
+			parsingfinished = false;
+			while(!parsingfinished && parser.SkipWhitespace(true)) 
 			{
 				token = parser.ReadToken();
 				if(!string.IsNullOrEmpty(token)) 
@@ -54,11 +57,11 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 
 						case "path":
 							parser.SkipWhitespace(true);
-							path = parser.StripTokenQuotes(parser.ReadToken()).Replace("/", "\\");
-							if(string.IsNullOrEmpty(path)) 
+							path = parser.StripTokenQuotes(parser.ReadToken(false)).Replace("/", "\\"); // Don't skip newline
+							if(string.IsNullOrEmpty(path))
 							{
-								General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected path to model, but got '" + token + "'");
-								gotErrors = true;
+								parser.ReportError("expected model path, but got '" + token + "'");
+								return false;
 							}
 							break;
 
@@ -75,47 +78,42 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 							if(!int.TryParse(token, NumberStyles.Integer, CultureInfo.InvariantCulture, out index)) 
 							{
 								// Not numeric!
-								General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected model index, but got '" + token + "'");
-								gotErrors = true;
-								break;
+								parser.ReportError("expected model index, but got '" + token + "'");
+								return false;
 							}
 
 							if(index >= MAX_MODELS) 
 							{
-								General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": GZDoom doesn't allow more than " + MAX_MODELS + " models per MODELDEF entry!");
-								gotErrors = true;
-								break;
+								parser.ReportError("GZDoom doesn't allow more than " + MAX_MODELS + " models per MODELDEF entry");
+								return false;
 							}
 
 							parser.SkipWhitespace(true);
 
 							//model path
-							token = parser.StripTokenQuotes(parser.ReadToken()).ToLowerInvariant();
+							token = parser.StripTokenQuotes(parser.ReadToken(false)).ToLowerInvariant(); // Don't skip newline
 							if(string.IsNullOrEmpty(token)) 
 							{
-								General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected model name, but got '" + token + "'");
-								gotErrors = true;
+								parser.ReportError("model name required");
+								return false;
 							} 
-							else 
+
+							//check extension
+							string fileExt = Path.GetExtension(token);
+							if(string.IsNullOrEmpty(fileExt)) 
 							{
-								//check extension
-								string fileExt = Path.GetExtension(token);
-								if(string.IsNullOrEmpty(fileExt)) 
-								{
-									General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": model '" + token + "' won't be loaded. Models without extension are not supported by GZDoom.");
-									gotErrors = true;
-									break;
-								}
-								if(fileExt != ".md3" && fileExt != ".md2") 
-								{
-									General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": model '" + token + "' won't be loaded. Only MD2 and MD3 models are supported.");
-									gotErrors = true;
-									break;
-								}
+								parser.ReportError("model '" + token + "' won't be loaded. Models without extension are not supported by GZDoom");
+								return false;
+							}
 
-								//GZDoom allows models with identical modelIndex, it uses the last one encountered
-								modelNames[index] = Path.Combine(path, token);
+							if(fileExt != ".md3" && fileExt != ".md2") 
+							{
+								parser.ReportError("model '" + token + "' won't be loaded. Only MD2 and MD3 models are supported");
+								return false;
 							}
+
+							//GZDoom allows models with identical modelIndex, it uses the last one encountered
+							modelNames[index] = Path.Combine(path, token);
 							break;
 
 #endregion
@@ -131,42 +129,36 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 							if(!int.TryParse(token, NumberStyles.Integer, CultureInfo.InvariantCulture, out skinIndex)) 
 							{
 								// Not numeric!
-								General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected skin index, but got '" + token + "'");
-								gotErrors = true;
-								break;
+								parser.ReportError("expected skin index, but got '" + token + "'");
+								return false;
 							}
 
 							if(skinIndex >= MAX_MODELS) 
 							{
-								General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": GZDoom doesn't allow more than " + MAX_MODELS + " skins per MODELDEF entry!");
-								gotErrors = true;
-								break;
+								parser.ReportError("GZDoom doesn't allow more than " + MAX_MODELS + " skins per MODELDEF entry");
+								return false;
 							}
 
 							parser.SkipWhitespace(true);
 
 							//skin path
-							token = parser.StripTokenQuotes(parser.ReadToken()).ToLowerInvariant();
+							token = parser.StripTokenQuotes(parser.ReadToken(false)).ToLowerInvariant(); // Don't skip newline
 							if(string.IsNullOrEmpty(token)) 
 							{
-								General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected skin name, but got '" + token + "'");
-								gotErrors = true;
+								parser.ReportError("skin path required");
+								return false;
 							} 
-							else 
+
+							//check extension
+							string ext = Path.GetExtension(token);
+							if(Array.IndexOf(ModelData.SUPPORTED_TEXTURE_EXTENSIONS, ext) == -1) 
 							{
-								//check extension
-								string ext = Path.GetExtension(token);
-								if(Array.IndexOf(TextureData.SUPPORTED_TEXTURE_EXTENSIONS, ext) == -1) 
-								{
-									General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": image format '" + ext + "' is not supported!");
-									textureNames[skinIndex] = TextureData.INVALID_TEXTURE;
-								} 
-								else 
-								{
-									//GZDoom allows skins with identical modelIndex, it uses the last one encountered
-									textureNames[skinIndex] = Path.Combine(path, token);
-								}
-							}
+								parser.ReportError("image format '" + ext + "' is not supported!");
+								return false;
+							} 
+
+							//GZDoom allows skins with identical modelIndex, it uses the last one encountered
+							textureNames[skinIndex] = Path.Combine(path, token);
 							break;
 
 #endregion
@@ -179,9 +171,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 							if(!parser.ReadSignedFloat(token, ref scale.Y)) 
 							{
 								// Not numeric!
-								General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected Scale X value, but got '" + token + "'");
-								gotErrors = true;
-								break;
+								parser.ReportError("expected Scale X value, but got '" + token + "'");
+								return false;
 							}
 
 							parser.SkipWhitespace(true);
@@ -189,9 +180,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 							if(!parser.ReadSignedFloat(token, ref scale.X)) 
 							{
 								// Not numeric!
-								General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected Scale Y value, but got '" + token + "'");
-								gotErrors = true;
-								break;
+								parser.ReportError("expected Scale Y value, but got '" + token + "'");
+								return false;
 							}
 
 							parser.SkipWhitespace(true);
@@ -199,8 +189,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 							if(!parser.ReadSignedFloat(token, ref scale.Z)) 
 							{
 								// Not numeric!
-								General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected Scale Z value, but got '" + token + "'");
-								gotErrors = true;
+								parser.ReportError("expected Scale Z value, but got '" + token + "'");
+								return false;
 							}
 							break;
 
@@ -214,9 +204,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 							if(!parser.ReadSignedFloat(token, ref offset.X)) 
 							{
 								// Not numeric!
-								General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected Offset X value, but got '" + token + "'");
-								gotErrors = true;
-								break;
+								parser.ReportError("expected Offset X value, but got '" + token + "'");
+								return false;
 							}
 
 							parser.SkipWhitespace(true);
@@ -224,9 +213,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 							if(!parser.ReadSignedFloat(token, ref offset.Y)) 
 							{
 								// Not numeric!
-								General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected Offset Y value, but got '" + token + "'");
-								gotErrors = true;
-								break;
+								parser.ReportError("expected Offset Y value, but got '" + token + "'");
+								return false;
 							}
 
 							parser.SkipWhitespace(true);
@@ -234,8 +222,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 							if(!parser.ReadSignedFloat(token, ref offset.Z)) 
 							{
 								// Not numeric!
-								General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected Offset Z value, but got '" + token + "'");
-								gotErrors = true;
+								parser.ReportError("expected Offset Z value, but got '" + token + "'");
+								return false;
 							}
 							break;
 
@@ -249,8 +237,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 							if(!parser.ReadSignedFloat(token, ref offset.Z)) 
 							{
 								// Not numeric!
-								General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected ZOffset value, but got '" + token + "'");
-								gotErrors = true;
+								parser.ReportError("expected ZOffset value, but got '" + token + "'");
+								return false;
 							}
 							break;
 
@@ -264,8 +252,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 							if(!parser.ReadSignedFloat(token, ref angleOffset)) 
 							{
 								// Not numeric!
-								General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected AngleOffset value, but got '" + token + "'");
-								gotErrors = true;
+								parser.ReportError("expected AngleOffset value, but got '" + token + "'");
+								return false;
 							}
 							break;
 
@@ -279,8 +267,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 							if(!parser.ReadSignedFloat(token, ref pitchOffset)) 
 							{
 								// Not numeric!
-								General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected PitchOffset value, but got '" + token + "'");
-								gotErrors = true;
+								parser.ReportError("expected PitchOffset value, but got '" + token + "'");
+								return false;
 							}
 							break;
 
@@ -294,8 +282,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 							if(!parser.ReadSignedFloat(token, ref rollOffset)) 
 							{
 								// Not numeric!
-								General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected RollOffset value, but got '" + token + "'");
-								gotErrors = true;
+								parser.ReportError("expected RollOffset value, but got '" + token + "'");
+								return false;
 							}
 							break;
 
@@ -322,8 +310,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 						case "frameindex":
 						case "frame":
 							//parsed all required fields. if got more than one model - find which one(s) should be displayed 
-							int len = modelNames.GetLength(0);
-							if(!gotErrors && len > 1) 
+							if(modelNames.GetLength(0) > 1) 
 							{
 								string spriteLump = null;
 								string spriteFrame = null;
@@ -389,23 +376,20 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 										if(!int.TryParse(token, NumberStyles.Integer, CultureInfo.InvariantCulture, out modelIndex)) 
 										{
 											// Not numeric!
-											General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected model index, but got '" + token + "'");
-											gotErrors = true;
-											break;
+											parser.ReportError("expected model index, but got '" + token + "'");
+											return false;
 										}
 
 										if(modelIndex >= MAX_MODELS) 
 										{
-											General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": GZDoom doesn't allow more than " + MAX_MODELS + " models per MODELDEF entry!");
-											gotErrors = true;
-											break;
+											parser.ReportError("GZDoom doesn't allow more than " + MAX_MODELS + " models per MODELDEF entry");
+											return false;
 										}
 
 										if(modelNames[modelIndex] == null) 
 										{
-											General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": got model index, which doesn't correspond to any defined model!");
-											gotErrors = true;
-											break;
+											parser.ReportError("got model index, which doesn't correspond to any defined model");
+											return false;
 										}
 
 										modelsUsed[modelIndex] = true;
@@ -420,9 +404,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 											if(!parser.ReadSignedInt(token, ref frame))
 											{
 												// Not numeric!
-												General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected model frame index, but got '" + token + "'");
-												gotErrors = true;
-												break;
+												parser.ReportError("expected model frame index, but got '" + token + "'");
+												return false;
 											}
 
 											// Skip the model if frame index is -1
@@ -434,9 +417,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 											if(string.IsNullOrEmpty(token))
 											{
 												// Missing!
-												General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": expected model frame name");
-												gotErrors = true;
-												break;
+												parser.ReportError("expected model frame name");
+												return false;
 											}
 
 											frameNames[modelIndex] = token.ToLowerInvariant();
@@ -451,7 +433,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 								}
 							}
 
-							allParsed = true;
+							parsingfinished = true;
 							break;
 
 #endregion
@@ -467,28 +449,38 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 			}
 
 			// Bail out when got errors or no models are used
-			if(gotErrors || Array.IndexOf(modelsUsed, true) == -1) return null;
+			if(Array.IndexOf(modelsUsed, true) == -1)
+			{
+				parser.ReportError("no models are used by '" + classname + "'");
+				return false;
+			}
 			
 			// Classname is set in ModeldefParser
-			ModelData mde = new ModelData();
-			mde.InheritActorPitch = inheritactorpitch;
-			mde.InheritActorRoll = inheritactorroll;
+			ModelData = new ModelData();
+			ModelData.InheritActorPitch = inheritactorpitch;
+			ModelData.InheritActorRoll = inheritactorroll;
 			Matrix moffset = Matrix.Translation(offset.Y, -offset.X, offset.Z); // Things are complicated in GZDoom...
 			Matrix mrotation = Matrix.RotationY(-Angle2D.DegToRad(rollOffset)) * Matrix.RotationX(-Angle2D.DegToRad(pitchOffset)) * Matrix.RotationZ(Angle2D.DegToRad(angleOffset));
-			mde.SetTransform(mrotation, moffset, scale);
+			ModelData.SetTransform(mrotation, moffset, scale);
 
 			for(int i = 0; i < modelNames.Length; i++) 
 			{
 				if(!string.IsNullOrEmpty(modelNames[i]) && modelsUsed[i]) 
 				{
-					mde.TextureNames.Add(string.IsNullOrEmpty(textureNames[i]) ? string.Empty : textureNames[i].ToLowerInvariant());
-					mde.ModelNames.Add(modelNames[i].ToLowerInvariant());
-					mde.FrameNames.Add(frameNames[i]);
-					mde.FrameIndices.Add(frameIndices[i]);
+					ModelData.TextureNames.Add(string.IsNullOrEmpty(textureNames[i]) ? string.Empty : textureNames[i].ToLowerInvariant());
+					ModelData.ModelNames.Add(modelNames[i].ToLowerInvariant());
+					ModelData.FrameNames.Add(frameNames[i]);
+					ModelData.FrameIndices.Add(frameIndices[i]);
 				}
 			}
 
-			return (mde.ModelNames.Count > 0 ? mde : null);
+			if(ModelData.ModelNames.Count == 0)
+			{
+				parser.ReportError("'" + classname + "' has no models");
+				return false;
+			}
+
+			return true;
 		}
 	}
 }
diff --git a/Source/Core/GZBuilder/GZDoom/ScriptTypeParserSE.cs b/Source/Core/GZBuilder/GZDoom/ScriptTypeParserSE.cs
index 64e36725d..e018b9039 100644
--- a/Source/Core/GZBuilder/GZDoom/ScriptTypeParserSE.cs
+++ b/Source/Core/GZBuilder/GZDoom/ScriptTypeParserSE.cs
@@ -28,18 +28,18 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 			{
 				string token = ReadToken();
 
-				if (!string.IsNullOrEmpty(token)) 
+				if(!string.IsNullOrEmpty(token)) 
 				{
 					token = token.ToUpperInvariant();
 
-					if (token == "MODEL") 
+					if(token == "MODEL") 
 					{
 						SkipWhitespace(true);
 						ReadToken(); //should be model name
 						SkipWhitespace(true);
 						token = ReadToken();//should be opening brace
 						
-						if (token == "{") 
+						if(token == "{") 
 						{
 							scriptType = ScriptType.MODELDEF;
 							return true;
@@ -55,7 +55,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 						SkipWhitespace(true);
 						token = ReadToken(); //should be opening brace
 						
-						if (token == "{") 
+						if(token == "{") 
 						{
 							scriptType = ScriptType.ACS;
 							return true;
@@ -70,7 +70,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 						SkipWhitespace(true);
 						token = ReadToken();
 
-						if (token == ":" || token == "{" || token == "REPLACES") 
+						if(token == ":" || token == "{" || token == "REPLACES") 
 						{
 							scriptType = ScriptType.DECORATE;
 							return true;
@@ -79,7 +79,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 						SkipWhitespace(true);
 						token = ReadToken(); //should be actor name
 
-						if (token == "{") 
+						if(token == "{") 
 						{
 							scriptType = ScriptType.DECORATE;
 							return true;
@@ -90,5 +90,10 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom
 
 			return false;
 		}
+
+		protected override string GetLanguageType()
+		{
+			return "SCRIPT TYPE CHECKER";
+		}
 	}
 }
diff --git a/Source/Core/GZBuilder/md3/ModelReader.cs b/Source/Core/GZBuilder/md3/ModelReader.cs
index 18b1396d4..62f174d51 100644
--- a/Source/Core/GZBuilder/md3/ModelReader.cs
+++ b/Source/Core/GZBuilder/md3/ModelReader.cs
@@ -148,15 +148,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.MD3
 					//load texture
 					List<string> errors = new List<string>();
 
-					//texture has unsupported extension?
-					if(mde.TextureNames[i] == TextureData.INVALID_TEXTURE) 
-					{
-						for(int c = 0; c < result.Meshes.Count; c++)
-							mde.Model.Textures.Add(General.Map.Data.UnknownTexture3D.Texture);
-					
-					//texture not defined in MODELDEF?
-					} 
-					else if(useSkins) 
+					// Texture not defined in MODELDEF?
+					if(useSkins) 
 					{
 						//try to use model's own skins 
 						for(int m = 0; m < result.Meshes.Count; m++) 
@@ -171,7 +164,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.MD3
 							string path = result.Skins[m].Replace(Path.AltDirectorySeparatorChar, Path.DirectorySeparatorChar);
 							ext = Path.GetExtension(path);
 
-							if(Array.IndexOf(TextureData.SUPPORTED_TEXTURE_EXTENSIONS, ext) == -1) 
+							if(Array.IndexOf(ModelData.SUPPORTED_TEXTURE_EXTENSIONS, ext) == -1) 
 							{
 								mde.Model.Textures.Add(General.Map.Data.UnknownTexture3D.Texture);
 								errors.Add("image format '" + ext + "' is not supported!");
@@ -193,8 +186,9 @@ namespace CodeImp.DoomBuilder.GZBuilder.MD3
 
 							mde.Model.Textures.Add(t);
 						}
-					} 
-					else //try to use texture loaded from MODELDEFS
+					}
+					//Try to use texture loaded from MODELDEFS
+					else
 					{
 						Texture t = LoadTexture(containers, mde.TextureNames[i], device);
 						if(t == null) 
diff --git a/Source/Core/General/ErrorLogger.cs b/Source/Core/General/ErrorLogger.cs
index a4e0c80e3..9ce3bc07a 100644
--- a/Source/Core/General/ErrorLogger.cs
+++ b/Source/Core/General/ErrorLogger.cs
@@ -81,29 +81,38 @@ namespace CodeImp.DoomBuilder
 			
 			lock(this)
 			{
-				errors.Add(new ErrorItem(type, message));
-				switch(type)
+				//mxd. Don't add duplicate messages
+				if(errors.Count == 0 || message != errors[errors.Count - 1].message || type != errors[errors.Count - 1].type)
 				{
-					case ErrorType.Error:
-						erroradded = true;
-						prefix = "ERROR: ";
+					errors.Add(new ErrorItem(type, message));
+					switch(type)
+					{
+						case ErrorType.Error:
+							erroradded = true;
+							prefix = "ERROR: ";
 #if DEBUG
-						DebugConsole.WriteLine(DebugMessageType.ERROR, message);
+							DebugConsole.WriteLine(DebugMessageType.ERROR, message);
 #endif
-						break;
-						
-					case ErrorType.Warning:
-						warningadded = true;
-						prefix = "WARNING: ";
+							break;
+
+						case ErrorType.Warning:
+							warningadded = true;
+							prefix = "WARNING: ";
 #if DEBUG
-						DebugConsole.WriteLine(DebugMessageType.WARNING, message);
+							DebugConsole.WriteLine(DebugMessageType.WARNING, message);
 #endif
-						break;
-				}
-				changed = true;
+							break;
+					}
 
-				General.WriteLogLine(prefix + message);
-				General.MainWindow.SetWarningsCount(errors.Count, erroradded); //mxd
+					changed = true;
+					General.WriteLogLine(prefix + message);
+					General.MainWindow.SetWarningsCount(errors.Count, erroradded); //mxd
+				}
+				//mxd. But still blink the indicator on errors
+				else if(type == ErrorType.Error)
+				{
+					General.MainWindow.SetWarningsCount(errors.Count, true);
+				}
 			}
 		}
 		
diff --git a/Source/Core/General/MapManager.cs b/Source/Core/General/MapManager.cs
index 41e88a535..058e98f1e 100644
--- a/Source/Core/General/MapManager.cs
+++ b/Source/Core/General/MapManager.cs
@@ -1879,10 +1879,12 @@ namespace CodeImp.DoomBuilder
 			List<CompilerError> compilererrors = UpdateScriptNames();
 			if(logerrors && compilererrors.Count > 0)
 			{
+				//INFO: CompileLump() prepends lumpname with "?" to distinguish between temporary files and files compiled in place
+				//INFO: also, error.linenumber is zero-based
 				foreach(CompilerError error in compilererrors)
 				{
-					General.ErrorLogger.Add(ErrorType.Error, "ACS error in '" + error.filename
-						+ (error.linenumber != CompilerError.NO_LINE_NUMBER ? "', line " + error.linenumber : "'") 
+					General.ErrorLogger.Add(ErrorType.Error, "ACS error in '" + (error.filename.StartsWith("?") ? error.filename.Replace("?", "") : error.filename)
+						+ (error.linenumber != CompilerError.NO_LINE_NUMBER ? "', line " + (error.linenumber + 1) : "'") 
 						+ ". " + error.description + ".");
 				}
 			}
@@ -1927,15 +1929,18 @@ namespace CodeImp.DoomBuilder
 					{
 						// Get script names
 						AcsParserSE parser = new AcsParserSE { OnInclude = (se, path) => se.Parse(General.Map.Data.LoadFile(path), path, true, true) };
-						if(parser.Parse(stream, "SCRIPTS", scriptconfig.Compiler.Files, true, false))
+
+						//INFO: CompileLump() prepends lumpname with "?" to distinguish between temporary files and files compiled in place
+						if(parser.Parse(stream, "?SCRIPTS", scriptconfig.Compiler.Files, true, false))
 						{
 							// Add them to arrays
 							namedscriptslist.AddRange(parser.NamedScripts);
 							numberedscriptslist.AddRange(parser.NumberedScripts);
 							scripincludeslist.AddRange(parser.Includes);
 						}
+						
 						// Check for errors
-						else if(parser.HasError)
+						if(parser.HasError)
 						{
 							compilererrors.Add(new CompilerError(parser.ErrorDescription, parser.ErrorSource, parser.ErrorLine));
 							break;
diff --git a/Source/Core/ZDoom/ActorStructure.cs b/Source/Core/ZDoom/ActorStructure.cs
index 05d8cca17..c0f2ed3bd 100644
--- a/Source/Core/ZDoom/ActorStructure.cs
+++ b/Source/Core/ZDoom/ActorStructure.cs
@@ -109,7 +109,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 				{
 					token = token.ToLowerInvariant();
 
-					switch (token) 
+					switch(token) 
 					{
 						case ":":
 							// The next token must be the class to inherit from
@@ -123,9 +123,6 @@ namespace CodeImp.DoomBuilder.ZDoom
 
 							// Find the actor to inherit from
 							baseclass = parser.GetArchivedActorByName(inheritclass);
-
-							//mxd. Does it exist? (We can carry on regardless, so add a warning) 
-							if(baseclass == null) parser.ReportWarning("Parent class '" + inheritclass + "' does not exist");
 							break;
 
 						case "replaces":
@@ -171,7 +168,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 							break;
 					}
 
-					if (done) break; //mxd
+					if(done) break; //mxd
 				}
 				else
 				{
@@ -188,7 +185,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 				string token = parser.ReadToken();
 				token = token.ToLowerInvariant();
 
-				switch (token) 
+				switch(token) 
 				{
 					case "+":
 					case "-":
@@ -196,7 +193,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 						bool flagvalue = (token == "+");
 						parser.SkipWhitespace(true);
 						string flagname = parser.ReadToken();
-						if (!string.IsNullOrEmpty(flagname)) 
+						if(!string.IsNullOrEmpty(flagname)) 
 						{
 							// Add the flag with its value
 							flagname = flagname.ToLowerInvariant();
@@ -212,10 +209,10 @@ namespace CodeImp.DoomBuilder.ZDoom
 					case "action":
 					case "native":
 						// We don't need this, ignore up to the first next ;
-						while (parser.SkipWhitespace(true)) 
+						while(parser.SkipWhitespace(true)) 
 						{
 							string t = parser.ReadToken();
-							if (string.IsNullOrEmpty(t) || t == ";") break;
+							if(string.IsNullOrEmpty(t) || t == ";") break;
 						}
 						break;
 
@@ -225,31 +222,31 @@ namespace CodeImp.DoomBuilder.ZDoom
 
 					case "states":
 						// Now parse actor states until we reach the end of the states structure
-						while (parser.SkipWhitespace(true)) 
+						while(parser.SkipWhitespace(true)) 
 						{
 							string statetoken = parser.ReadToken();
-							if (!string.IsNullOrEmpty(statetoken)) 
+							if(!string.IsNullOrEmpty(statetoken)) 
 							{
 								// Start of scope?
-								if (statetoken == "{") 
+								if(statetoken == "{") 
 								{
 									// This is fine
 								}
 								// End of scope?
-								else if (statetoken == "}") 
+								else if(statetoken == "}") 
 								{
 									// Done with the states,
 									// break out of this parse loop
 									break;
 								}
 								// State label?
-								else if (statetoken == ":") 
+								else if(statetoken == ":") 
 								{
-									if (!string.IsNullOrEmpty(previoustoken)) 
+									if(!string.IsNullOrEmpty(previoustoken)) 
 									{
 										// Parse actor state
 										StateStructure st = new StateStructure(this, parser);
-										if (parser.HasError) return;
+										if(parser.HasError) return;
 										states[previoustoken.ToLowerInvariant()] = st;
 									} 
 									else 
@@ -273,11 +270,11 @@ namespace CodeImp.DoomBuilder.ZDoom
 						break;
 
 					case "var": //mxd
-						while (parser.SkipWhitespace(true)) 
+						while(parser.SkipWhitespace(true)) 
 						{
 							string t = parser.ReadToken();
-							if (string.IsNullOrEmpty(t) || t == ";") break;
-							if (t.StartsWith("user_") && !userVars.Contains(t))
+							if(string.IsNullOrEmpty(t) || t == ";") break;
+							if(t.StartsWith("user_") && !userVars.Contains(t))
 								userVars.Add(t);
 						}
 						break;
@@ -323,17 +320,17 @@ namespace CodeImp.DoomBuilder.ZDoom
 					case "game":
 						// Include all tokens on the same line
 						List<string> games = new List<string>();
-						while (parser.SkipWhitespace(false)) 
+						while(parser.SkipWhitespace(false)) 
 						{
 							string v = parser.ReadToken();
-							if (string.IsNullOrEmpty(v)) 
+							if(string.IsNullOrEmpty(v)) 
 							{
 								parser.ReportError("Unexpected end of structure");
 								return;
 							}
-							if (v == "\n") break;
-							if (v == "}") return; //mxd
-							if (v != ",") games.Add(v.ToLowerInvariant());
+							if(v == "\n") break;
+							if(v == "}") return; //mxd
+							if(v != ",") games.Add(v.ToLowerInvariant());
 						}
 						props[token] = games;
 						break;
@@ -341,7 +338,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 					// Property
 					default:
 						// Property begins with $? Then the whole line is a single value
-						if (token.StartsWith("$")) 
+						if(token.StartsWith("$")) 
 						{
 							// This is for editor-only properties such as $sprite and $category
 							props[token] = new List<string> { (parser.SkipWhitespace(false) ? parser.ReadLine() : "") };
@@ -350,17 +347,17 @@ namespace CodeImp.DoomBuilder.ZDoom
 						{
 							// Next tokens up until the next newline are values
 							List<string> values = new List<string>();
-							while (parser.SkipWhitespace(false)) 
+							while(parser.SkipWhitespace(false)) 
 							{
 								string v = parser.ReadToken();
-								if (string.IsNullOrEmpty(v)) 
+								if(string.IsNullOrEmpty(v)) 
 								{
 									parser.ReportError("Unexpected end of structure");
 									return;
 								}
-								if (v == "\n") break;
-								if (v == "}") return; //mxd
-								if (v != ",") values.Add(v);
+								if(v == "\n") break;
+								if(v == "}") return; //mxd
+								if(v != ",") values.Add(v);
 							}
 
 							//mxd. Translate scale to xscale and yscale
@@ -377,7 +374,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 						break;
 				}
 
-				if (done) break; //mxd
+				if(done) break; //mxd
 
 				// Keep token
 				previoustoken = token;
@@ -407,16 +404,16 @@ namespace CodeImp.DoomBuilder.ZDoom
 						
 						//properties
 						if(!props.ContainsKey("height"))
-							props["height"] = new List<string>() { ti.Value.Height.ToString() };
+							props["height"] = new List<string> { ti.Value.Height.ToString() };
 
 						if(!props.ContainsKey("radius"))
-							props["radius"] = new List<string>() { ti.Value.Radius.ToString() };
+							props["radius"] = new List<string> { ti.Value.Radius.ToString() };
 
 						return;
 					}
 				}
 
-				General.ErrorLogger.Add(ErrorType.Warning, "Unable to find the DECORATE class '" + inheritclass + "' to inherit from, while parsing '" + classname + ":" + doomednum + "'");
+				parser.LogWarning("Unable to find '" + inheritclass + "' class to inherit from, while parsing '" + classname + ":" + doomednum + "'");
 			}
 		}
 		
@@ -438,12 +435,9 @@ namespace CodeImp.DoomBuilder.ZDoom
 		/// </summary>
 		public bool HasProperty(string propname)
 		{
-			if(props.ContainsKey(propname))
-				return true;
-			else if(!skipsuper && (baseclass != null))
-				return baseclass.HasProperty(propname);
-			else
-				return false;
+			if(props.ContainsKey(propname)) return true;
+			if(!skipsuper && (baseclass != null)) return baseclass.HasProperty(propname);
+			return false;
 		}
 		
 		/// <summary>
@@ -451,12 +445,9 @@ namespace CodeImp.DoomBuilder.ZDoom
 		/// </summary>
 		public bool HasPropertyWithValue(string propname)
 		{
-			if(props.ContainsKey(propname) && (props[propname].Count > 0))
-				return true;
-			else if(!skipsuper && (baseclass != null))
-				return baseclass.HasPropertyWithValue(propname);
-			else
-				return false;
+			if(props.ContainsKey(propname) && (props[propname].Count > 0)) return true;
+			if(!skipsuper && (baseclass != null)) return baseclass.HasPropertyWithValue(propname);
+			return false;
 		}
 		
 		/// <summary>
@@ -466,10 +457,9 @@ namespace CodeImp.DoomBuilder.ZDoom
 		{
 			if(props.ContainsKey(propname) && (props[propname].Count > 0))
 				return string.Join(" ", props[propname].ToArray());
-			else if(!skipsuper && (baseclass != null))
+			if(!skipsuper && (baseclass != null))
 				return baseclass.GetPropertyAllValues(propname);
-			else
-				return "";
+			return "";
 		}
 		
 		/// <summary>
@@ -479,10 +469,9 @@ namespace CodeImp.DoomBuilder.ZDoom
 		{
 			if(props.ContainsKey(propname) && (props[propname].Count > valueindex))
 				return props[propname][valueindex];
-			else if(!skipsuper && (baseclass != null))
+			if(!skipsuper && (baseclass != null))
 				return baseclass.GetPropertyValueString(propname, valueindex);
-			else
-				return "";
+			return "";
 		}
 		
 		/// <summary>
@@ -524,10 +513,8 @@ namespace CodeImp.DoomBuilder.ZDoom
 		/// </summary>
 		public bool HasFlagValue(string flag)
 		{
-			if(flags.ContainsKey(flag))
-				return true;
-			if(!skipsuper && (baseclass != null))
-				return baseclass.HasFlagValue(flag);
+			if(flags.ContainsKey(flag)) return true;
+			if(!skipsuper && (baseclass != null)) return baseclass.HasFlagValue(flag);
 			return false;
 		}
 		
@@ -536,10 +523,8 @@ namespace CodeImp.DoomBuilder.ZDoom
 		/// </summary>
 		public bool GetFlagValue(string flag, bool defaultvalue)
 		{
-			if(flags.ContainsKey(flag))
-				return flags[flag];
-			if(!skipsuper && (baseclass != null))
-				return baseclass.GetFlagValue(flag, defaultvalue);
+			if(flags.ContainsKey(flag)) return flags[flag];
+			if(!skipsuper && (baseclass != null)) return baseclass.GetFlagValue(flag, defaultvalue);
 			return defaultvalue;
 		}
 		
@@ -548,10 +533,8 @@ namespace CodeImp.DoomBuilder.ZDoom
 		/// </summary>
 		public bool HasState(string statename)
 		{
-			if(states.ContainsKey(statename))
-				return true;
-			if(!skipsuper && (baseclass != null))
-				return baseclass.HasState(statename);
+			if(states.ContainsKey(statename)) return true;
+			if(!skipsuper && (baseclass != null)) return baseclass.HasState(statename);
 			return false;
 		}
 		
@@ -560,10 +543,8 @@ namespace CodeImp.DoomBuilder.ZDoom
 		/// </summary>
 		public StateStructure GetState(string statename)
 		{
-			if(states.ContainsKey(statename))
-				return states[statename];
-			if(!skipsuper && (baseclass != null))
-				return baseclass.GetState(statename);
+			if(states.ContainsKey(statename)) return states[statename];
+			if(!skipsuper && (baseclass != null)) return baseclass.GetState(statename);
 			return null;
 		}
 		
@@ -734,7 +715,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 
 			if(!string.IsNullOrEmpty(result)) 
 			{
-				if (voxels.ContainsKey(result)) return result;
+				if(voxels.ContainsKey(result)) return result;
 
 				// The sprite name may be incomplete. Find an existing sprite with direction.
 				foreach(string postfix in SPRITE_POSTFIXES)
diff --git a/Source/Core/ZDoom/DecorateParser.cs b/Source/Core/ZDoom/DecorateParser.cs
index b87e56564..c7215d084 100644
--- a/Source/Core/ZDoom/DecorateParser.cs
+++ b/Source/Core/ZDoom/DecorateParser.cs
@@ -119,42 +119,56 @@ namespace CodeImp.DoomBuilder.ZDoom
 				if(!string.IsNullOrEmpty(objdeclaration))
 				{
 					objdeclaration = objdeclaration.ToLowerInvariant();
-					if(objdeclaration == "actor")
+					switch(objdeclaration)
 					{
-						// Read actor structure
-						ActorStructure actor = new ActorStructure(this);
-						if(this.HasError) break;
-						
-						// Add the actor
-						archivedactors[actor.ClassName.ToLowerInvariant()] = actor;
-						if(actor.CheckActorSupported())
-							actors[actor.ClassName.ToLowerInvariant()] = actor;
-						
-						// Replace an actor?
-						if(actor.ReplacesClass != null)
+						case "actor":
 						{
-							if(GetArchivedActorByName(actor.ReplacesClass) != null)
-								archivedactors[actor.ReplacesClass.ToLowerInvariant()] = actor;
-							else
-								General.ErrorLogger.Add(ErrorType.Warning, "Unable to find the DECORATE class '" + actor.ReplacesClass + "' to replace, while parsing '" + actor.ClassName + "'");
-							
+							// Read actor structure
+							ActorStructure actor = new ActorStructure(this);
+							if(this.HasError) return false;
+						
+							// Add the actor
+							archivedactors[actor.ClassName.ToLowerInvariant()] = actor;
 							if(actor.CheckActorSupported())
+								actors[actor.ClassName.ToLowerInvariant()] = actor;
+						
+							// Replace an actor?
+							if(actor.ReplacesClass != null)
 							{
-								if(GetActorByName(actor.ReplacesClass) != null)
+								if(GetArchivedActorByName(actor.ReplacesClass) != null)
+									archivedactors[actor.ReplacesClass.ToLowerInvariant()] = actor;
+								else
+									LogWarning("Unable to find '" + actor.ReplacesClass + "' class to replace, while parsing '" + actor.ClassName + "'");
+							
+								if(actor.CheckActorSupported() && GetActorByName(actor.ReplacesClass) != null)
 									actors[actor.ReplacesClass.ToLowerInvariant()] = actor;
 							}
 						}
-					}
-					else if(objdeclaration == "#include")
-					{
-						// Include a file
-						SkipWhitespace(true);
-						string filename = ReadToken();
-						if(!string.IsNullOrEmpty(filename))
+						break;
+
+						case "#include":
 						{
+							// Include a file
+							SkipWhitespace(true);
+							string filename = ReadToken(false); //mxd. Don't skip newline
+
+							//mxd. Sanity checks
+							if(!filename.StartsWith("\"") || !filename.EndsWith("\""))
+							{
+								ReportError("#include filename should be quoted");
+								return false;
+							}
+
 							// Strip the quotes
 							filename = filename.Replace("\"", "");
 
+							//mxd. More sanity checks
+							if(string.IsNullOrEmpty(filename))
+							{
+								ReportError("Expected file name to include");
+								return false;
+							}
+
 							// Callback to parse this file now
 							if(OnInclude != null) OnInclude(this, filename);
 
@@ -162,51 +176,49 @@ namespace CodeImp.DoomBuilder.ZDoom
 							datastream = localstream;
 							datareader = localreader;
 							sourcename = localsourcename;
-							if(HasError) break;
+							if(this.HasError) return false;
 						}
-						else
-						{
-							ReportError("Expected file name to include");
+						break;
+
+						case "enum":
+						case "native":
+						case "const":
+							while(SkipWhitespace(true))
+							{
+								string t = ReadToken();
+								if(string.IsNullOrEmpty(t) || t == ";") break;
+							}
 							break;
-						}
-					}
-					else if((objdeclaration == "const") || (objdeclaration == "native") || (objdeclaration == "enum"))
-					{
-						// We don't need this, ignore up to the first next ;
-						while(SkipWhitespace(true))
+
+						case "$gzdb_skip": break;
+
+						default:
 						{
-							string t = ReadToken();
-							if(string.IsNullOrEmpty(t) || t == ";") break;
+							// Unknown structure!
+							// Best we can do now is just find the first { and then
+							// follow the scopes until the matching } is found
+							string token2;
+							do
+							{
+								if(!SkipWhitespace(true)) break;
+								token2 = ReadToken();
+								if(string.IsNullOrEmpty(token2)) break;
+							}
+							while(token2 != "{");
+
+							int scopelevel = 1;
+							do
+							{
+								if(!SkipWhitespace(true)) break;
+								token2 = ReadToken();
+								if(string.IsNullOrEmpty(token2)) break;
+								if(token2 == "{") scopelevel++;
+								if(token2 == "}") scopelevel--;
+							}
+							while(scopelevel > 0);
 						}
-					}
-					else if(objdeclaration == "$gzdb_skip") //mxd
-					{
 						break;
 					}
-					else
-					{
-						// Unknown structure!
-						// Best we can do now is just find the first { and then
-						// follow the scopes until the matching } is found
-						string token2;
-						do
-						{
-							if(!SkipWhitespace(true)) break;
-							token2 = ReadToken();
-							if(string.IsNullOrEmpty(token2)) break;
-						}
-						while(token2 != "{");
-						int scopelevel = 1;
-						do
-						{
-							if(!SkipWhitespace(true)) break;
-							token2 = ReadToken();
-							if(string.IsNullOrEmpty(token2)) break;
-							if(token2 == "{") scopelevel++;
-							if(token2 == "}") scopelevel--;
-						}
-						while(scopelevel > 0);
-					}
 				}
 			}
 			
@@ -224,10 +236,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 		public ActorStructure GetActorByName(string name)
 		{
 			name = name.ToLowerInvariant();
-			if(actors.ContainsKey(name))
-				return actors[name];
-			else
-				return null;
+			return actors.ContainsKey(name) ? actors[name] : null;
 		}
 
 		/// <summary>
@@ -235,12 +244,8 @@ namespace CodeImp.DoomBuilder.ZDoom
 		/// </summary>
 		public ActorStructure GetActorByDoomEdNum(int doomednum)
 		{
-			ICollection<ActorStructure> collection = actors.Values;
-			foreach(ActorStructure a in collection)
-			{
-				if(a.DoomEdNum == doomednum)
-					return a;
-			}
+			foreach(ActorStructure a in actors.Values)
+				if(a.DoomEdNum == doomednum) return a;
 			return null;
 		}
 
@@ -251,6 +256,12 @@ namespace CodeImp.DoomBuilder.ZDoom
 			name = name.ToLowerInvariant();
 			return (archivedactors.ContainsKey(name) ? archivedactors[name] : null);
 		}
+
+		//mxd
+		protected override string GetLanguageType()
+		{
+			return "DECORATE";
+		}
 		
 		#endregion
 	}
diff --git a/Source/Core/ZDoom/PatchStructure.cs b/Source/Core/ZDoom/PatchStructure.cs
index fac249b72..c036d2857 100644
--- a/Source/Core/ZDoom/PatchStructure.cs
+++ b/Source/Core/ZDoom/PatchStructure.cs
@@ -83,7 +83,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 
 			// First token is the class name
 			parser.SkipWhitespace(true);
-			name = parser.StripTokenQuotes(parser.ReadToken());
+			name = parser.StripTokenQuotes(parser.ReadToken(false)); //mxd. Don't skip newline
 			if(string.IsNullOrEmpty(name))
 			{
 				parser.ReportError("Expected patch name");
@@ -163,36 +163,36 @@ namespace CodeImp.DoomBuilder.ZDoom
 						break;
 
 					case "rotate":
-						if (!ReadTokenInt(parser, token, out rotation)) return;
+						if(!ReadTokenInt(parser, token, out rotation)) return;
 						rotation = rotation % 360; //Coalesce multiples
-						if (rotation < 0) rotation += 360; //Force positive
+						if(rotation < 0) rotation += 360; //Force positive
 
-						if (rotation != 0 && rotation != 90 && rotation != 180 && rotation != 270) 
+						if(rotation != 0 && rotation != 90 && rotation != 180 && rotation != 270) 
 						{
-							General.ErrorLogger.Add(ErrorType.Warning, "Got unsupported rotation (" + rotation + ") in patch " + name);
+							parser.LogWarning("Got unsupported rotation (" + rotation + ") in patch '" + name + "'");
 							rotation = 0;
 						}
 						break;
 
 					case "style": //mxd
 						string s;
-						if (!ReadTokenString(parser, token, out s)) return;
+						if(!ReadTokenString(parser, token, out s)) return;
 						int index = Array.IndexOf(renderStyles, s.ToLowerInvariant());
 						renderStyle = index == -1 ? TexturePathRenderStyle.Copy : (TexturePathRenderStyle) index;
 						break;
 
 					case "blend": //mxd
 						int val;
-						if (!ReadTokenColor(parser, token, out val)) return;
+						if(!ReadTokenColor(parser, token, out val)) return;
 						blendColor = PixelColor.FromInt(val);
 
 						parser.SkipWhitespace(false);
 						token = parser.ReadToken();
 
-						if (token == ",") //read tint ammount
+						if(token == ",") //read tint ammount
 						{ 
 							parser.SkipWhitespace(false);
-							if (!ReadTokenFloat(parser, token, out tintAmmount)) return;
+							if(!ReadTokenFloat(parser, token, out tintAmmount)) return;
 							tintAmmount = General.Clamp(tintAmmount, 0.0f, 1.0f);
 							blendStyle = TexturePathBlendStyle.Tint;
 						} 
@@ -278,6 +278,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 				parser.ReportError("Expected a value for property '" + propertyname + "'");
 				return false;
 			}
+
 			return true;
 		}
 
@@ -306,7 +307,8 @@ namespace CodeImp.DoomBuilder.ZDoom
 			{
 				parser.ReportError("Expected color value for property '" + propertyname + "'");
 				return false;
-			} 
+			}
+
 			return true;
 		}
 
diff --git a/Source/Core/ZDoom/ReverbsParser.cs b/Source/Core/ZDoom/ReverbsParser.cs
index 09ffe67ac..5186a0de7 100644
--- a/Source/Core/ZDoom/ReverbsParser.cs
+++ b/Source/Core/ZDoom/ReverbsParser.cs
@@ -47,7 +47,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 
 						if(string.IsNullOrEmpty(name))
 						{
-							ReportError("Got empty sound environment name!");
+							ReportError("Got empty sound environment name");
 							break;
 						}
 
@@ -57,7 +57,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 						int arg1;
 						if(!int.TryParse(token, NumberStyles.Integer, CultureInfo.InvariantCulture, out arg1))
 						{
-							ReportError("Failed to parse the first part of '" + name + "' sound environment ID!");
+							ReportError("Failed to parse the first part of '" + name + "' sound environment ID");
 							break;
 						}
 
@@ -67,7 +67,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 						int arg2;
 						if(!int.TryParse(token, NumberStyles.Integer, CultureInfo.InvariantCulture, out arg2)) 
 						{
-							ReportError("Failed to parse the second part of '" + name + "' sound environment ID!");
+							ReportError("Failed to parse the second part of '" + name + "' sound environment ID");
 							break;
 						}
 
@@ -75,7 +75,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 						int combinedindex = combinedargs.IndexOf(combined);
 						if(combinedindex != -1)
 						{
-							General.ErrorLogger.Add(ErrorType.Warning, "'" + names[combinedindex] + "' and '" + name + "' sound environments share the same ID (" + arg1 + " " + arg2 + ")!");
+							LogWarning("'" + names[combinedindex] + "' and '" + name + "' sound environments share the same ID (" + arg1 + " " + arg2 + ")");
 						}
 						else
 						{
@@ -84,7 +84,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 							// Add to collections
 							if(names.Contains(name)) 
 							{
-								General.ErrorLogger.Add(ErrorType.Warning, "'" + name + "' sound environment is double-defined in '" + sourcefilename + "'!");
+								LogWarning("'" + name + "' sound environment is double-defined in '" + sourcefilename + "'");
 								int index = names.IndexOf(name);
 								firstargs[index] = arg1;
 								secondargs[index] = arg2;
@@ -119,5 +119,10 @@ namespace CodeImp.DoomBuilder.ZDoom
 
 			return result;
 		}
+
+		protected override string GetLanguageType()
+		{
+			return "REVERBS";
+		}
 	}
 }
diff --git a/Source/Core/ZDoom/SndSeqParser.cs b/Source/Core/ZDoom/SndSeqParser.cs
index 791914522..3459884bd 100644
--- a/Source/Core/ZDoom/SndSeqParser.cs
+++ b/Source/Core/ZDoom/SndSeqParser.cs
@@ -86,6 +86,11 @@ namespace CodeImp.DoomBuilder.ZDoom
 			return result;
 		}
 
+		protected override string GetLanguageType()
+		{
+			return "SNDSEQ";
+		}
+
 		#endregion
 	}
 }
\ No newline at end of file
diff --git a/Source/Core/ZDoom/StateStructure.cs b/Source/Core/ZDoom/StateStructure.cs
index 7d53b7a54..18f79caf3 100644
--- a/Source/Core/ZDoom/StateStructure.cs
+++ b/Source/Core/ZDoom/StateStructure.cs
@@ -32,9 +32,9 @@ namespace CodeImp.DoomBuilder.ZDoom
 		#region ================== Variables
 		
 		// All we care about is the first sprite in the sequence
-		private List<string> sprites;
-		private StateGoto gotostate;
-		private DecorateParser parser;
+		private readonly List<string> sprites;
+		private readonly StateGoto gotostate;
+		private readonly DecorateParser parser;
 		
 		#endregion
 
@@ -77,20 +77,21 @@ namespace CodeImp.DoomBuilder.ZDoom
 				else if(token == ":")
 				{
 					// Rewind so that this label can be read again
-					parser.DataStream.Seek(-(lasttoken.Length + 1), SeekOrigin.Current);
+					if(!string.IsNullOrEmpty(lasttoken)) 
+						parser.DataStream.Seek(-(lasttoken.Length + 1), SeekOrigin.Current);
 					
 					// Done here
 					return;
 				}
 				//mxd. Start of inner scope?
-				else if (token == "{")
+				else if(token == "{")
 				{
 					int bracelevel = 1;
 					while(!string.IsNullOrEmpty(token) && bracelevel > 0)
 					{
 						parser.SkipWhitespace(false);
 						token = parser.ReadToken();
-						switch (token)
+						switch(token)
 						{
 							case "{": bracelevel++; break;
 							case "}": bracelevel--; break;
@@ -143,7 +144,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 						spritename = spritename.ToUpperInvariant();
 						
 						// Ignore some odd ZDoom things
-						if (!spritename.StartsWith("TNT1") && !spritename.StartsWith("----") && !spritename.Contains("#")) 
+						if(!spritename.StartsWith("TNT1") && !spritename.StartsWith("----") && !spritename.Contains("#")) 
 							sprites.Add(spritename);
 					}
 					
@@ -202,10 +203,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 		private string GetSprite(int index, List<StateStructure> prevstates)
 		{
 			// If we have sprite of our own, see if we can return this index
-			if(index < sprites.Count)
-			{
-				return sprites[index];
-			}
+			if(index < sprites.Count) return sprites[index];
 			
 			// Otherwise, continue searching where goto tells us to go
 			if(gotostate != null)
diff --git a/Source/Core/ZDoom/TextureStructure.cs b/Source/Core/ZDoom/TextureStructure.cs
index 4dddc6cdf..63ffb76b3 100644
--- a/Source/Core/ZDoom/TextureStructure.cs
+++ b/Source/Core/ZDoom/TextureStructure.cs
@@ -84,20 +84,20 @@ namespace CodeImp.DoomBuilder.ZDoom
 			// There should be 3 tokens separated by 2 commas now:
 			// Name, Width, Height
 
-			// First token is the class name
+			// First token is the texture name
 			parser.SkipWhitespace(true);
-			name = parser.StripTokenQuotes(parser.ReadToken());
+			name = parser.StripTokenQuotes(parser.ReadToken(false)); //mxd. Don't skip newline
 
 			//mxd. It can also be "optional" keyword.
 			if(name.ToLowerInvariant() == "optional")
 			{
 				parser.SkipWhitespace(true);
-				name = parser.StripTokenQuotes(parser.ReadToken());
+				name = parser.StripTokenQuotes(parser.ReadToken(false)); //mxd. Don't skip newline
 			}
 
 			if(string.IsNullOrEmpty(name))
 			{
-				parser.ReportError("Expected texture or sprite name");
+				parser.ReportError("Expected " + typename + " name");
 				return;
 			}
 
@@ -153,14 +153,14 @@ namespace CodeImp.DoomBuilder.ZDoom
 				string token = parser.ReadToken();
 				token = token.ToLowerInvariant();
 
-				switch (token) 
+				switch(token) 
 				{
 					case "xscale":
-						if (!ReadTokenFloat(parser, token, out xscale)) return;
+						if(!ReadTokenFloat(parser, token, out xscale)) return;
 						break;
 
 					case "yscale":
-						if (!ReadTokenFloat(parser, token, out yscale)) return;
+						if(!ReadTokenFloat(parser, token, out yscale)) return;
 						break;
 
 					case "worldpanning":
@@ -169,25 +169,25 @@ namespace CodeImp.DoomBuilder.ZDoom
 
 					case "offset":
 						// Read x offset
-						if (!ReadTokenInt(parser, token, out xoffset)) return;
+						if(!ReadTokenInt(parser, token, out xoffset)) return;
 
 						// Now we should find a comma
 						parser.SkipWhitespace(true);
 						tokenstr = parser.ReadToken();
-						if (tokenstr != ",") 
+						if(tokenstr != ",") 
 						{
 							parser.ReportError("Expected a comma");
 							return;
 						}
 
 						// Read y offset
-						if (!ReadTokenInt(parser, token, out yoffset)) return;
+						if(!ReadTokenInt(parser, token, out yoffset)) return;
 						break;
 
 					case "patch":
 						// Read patch structure
 						PatchStructure pt = new PatchStructure(parser);
-						if (parser.HasError) break;
+						if(parser.HasError) break;
 
 						//mxd. Let's ignore TNT1A0
 						if(pt.Name == IGNORE_SPRITE) break;
diff --git a/Source/Core/ZDoom/TexturesParser.cs b/Source/Core/ZDoom/TexturesParser.cs
index c9ec99074..7f62efe5e 100644
--- a/Source/Core/ZDoom/TexturesParser.cs
+++ b/Source/Core/ZDoom/TexturesParser.cs
@@ -46,9 +46,9 @@ namespace CodeImp.DoomBuilder.ZDoom
 		
 		#region ================== Properties
 
-		public ICollection<TextureStructure> Textures { get { return textures.Values; } }
-		public ICollection<TextureStructure> Flats { get { return flats.Values; } }
-		public ICollection<TextureStructure> Sprites { get { return sprites.Values; } }
+		public IEnumerable<TextureStructure> Textures { get { return textures.Values; } }
+		public IEnumerable<TextureStructure> Flats { get { return flats.Values; } }
+		public IEnumerable<TextureStructure> Sprites { get { return sprites.Values; } }
 		
 		#endregion
 		
@@ -89,104 +89,139 @@ namespace CodeImp.DoomBuilder.ZDoom
 				if(!string.IsNullOrEmpty(objdeclaration))
 				{
 					objdeclaration = objdeclaration.ToLowerInvariant();
-					if(objdeclaration == "texture")
+					switch(objdeclaration)
 					{
-						// Read texture structure
-						TextureStructure tx = new TextureStructure(this, "texture", virtualpath);
-						if(this.HasError) break;
-
-						// if a limit for the texture name length is set make sure that it's not exceeded
-						if(tx.Name.Length > General.Map.Config.MaxTextureNameLength)
-						{
-							General.ErrorLogger.Add(ErrorType.Error, "Texture name \"" + tx.Name + "\" too long. Texture names must have a length of " + General.Map.Config.MaxTextureNameLength + " characters or less");
-						}
-						else
+						case "texture":
 						{
+							// Read texture structure
+							TextureStructure tx = new TextureStructure(this, "texture", virtualpath);
+							if(this.HasError) return false;
+
+							// if a limit for the texture name length is set make sure that it's not exceeded
+							if(tx.Name.Length > General.Map.Config.MaxTextureNameLength)
+							{
+								ReportError("Texture name \"" + tx.Name + "\" too long. Texture names must have a length of " + General.Map.Config.MaxTextureNameLength + " characters or less");
+								return false;
+							}
+
+							//mxd. Can't load image without name
+							if(string.IsNullOrEmpty(tx.Name))
+							{
+								ReportError("Can't load an unnamed texture. Please consider giving names to your resources.");
+								return false;
+							}
+
 							// Add the texture
 							textures[tx.Name] = tx;
 							if(!General.Map.Config.MixTexturesFlats) flats[tx.Name] = tx; //mxd. If MixTexturesFlats is set, textures and flats will be mixed in DataManager anyway
 						}
-					}
-					else if(objdeclaration == "sprite")
-					{
-						// Read sprite structure
-						TextureStructure tx = new TextureStructure(this, "sprite", virtualpath);
-						if(this.HasError) break;
+						break;
 
-						// if a limit for the sprite name length is set make sure that it's not exceeded
-						if(tx.Name.Length > DataManager.CLASIC_IMAGE_NAME_LENGTH)
-						{
-							General.ErrorLogger.Add(ErrorType.Error, "Sprite name \"" + tx.Name + "\" too long. Sprite names must have a length of " + DataManager.CLASIC_IMAGE_NAME_LENGTH + " characters or less");
-						}
-						else
+						case "sprite":
 						{
+							// Read sprite structure
+							TextureStructure tx = new TextureStructure(this, "sprite", virtualpath);
+							if(this.HasError) return false;
+
+							// if a limit for the sprite name length is set make sure that it's not exceeded
+							if(tx.Name.Length > DataManager.CLASIC_IMAGE_NAME_LENGTH)
+							{
+								ReportError("Sprite name \"" + tx.Name + "\" too long. Sprite names must have a length of " + DataManager.CLASIC_IMAGE_NAME_LENGTH + " characters or less");
+								return false;
+							}
+
+							//mxd. Can't load image without name
+							if(string.IsNullOrEmpty(tx.Name))
+							{
+								ReportError("Can't load an unnamed sprite. Please consider giving names to your resources.");
+								return false;
+							}
+
 							// Add the sprite
 							sprites[tx.Name] = tx;
 						}
-					}
-					else if(objdeclaration == "walltexture")
-					{
-						// Read walltexture structure
-						TextureStructure tx = new TextureStructure(this, "walltexture", virtualpath);
-						if(this.HasError) break;
+						break;
 
-						// if a limit for the walltexture name length is set make sure that it's not exceeded
-						if(tx.Name.Length > General.Map.Config.MaxTextureNameLength)
-						{
-							General.ErrorLogger.Add(ErrorType.Error, "WallTexture name \"" + tx.Name + "\" too long. WallTexture names must have a length of " + General.Map.Config.MaxTextureNameLength + " characters or less");
-						}
-						else
+						case "walltexture":
 						{
+							// Read walltexture structure
+							TextureStructure tx = new TextureStructure(this, "walltexture", virtualpath);
+							if(this.HasError) return false;
+
+							// if a limit for the walltexture name length is set make sure that it's not exceeded
+							if(tx.Name.Length > General.Map.Config.MaxTextureNameLength)
+							{
+								ReportError("WallTexture name \"" + tx.Name + "\" too long. WallTexture names must have a length of " + General.Map.Config.MaxTextureNameLength + " characters or less");
+								return false;
+							}
+
+							//mxd. Can't load image without name
+							if(string.IsNullOrEmpty(tx.Name))
+							{
+								ReportError("Can't load an unnamed WallTexture. Please consider giving names to your resources.");
+								return false;
+							}
+
 							// Add the walltexture
 							if(!textures.ContainsKey(tx.Name) || (textures[tx.Name].TypeName != "texture"))
 								textures[tx.Name] = tx;
 						}
-					}
-					else if(objdeclaration == "flat")
-					{
-						// Read flat structure
-						TextureStructure tx = new TextureStructure(this, "flat", virtualpath);
-						if(this.HasError) break;
+						break;
 
-						// if a limit for the flat name length is set make sure that it's not exceeded
-						if(tx.Name.Length > General.Map.Config.MaxTextureNameLength)
-						{
-							General.ErrorLogger.Add(ErrorType.Error, "Flat name \"" + tx.Name + "\" too long. Flat names must have a length of " + General.Map.Config.MaxTextureNameLength + " characters or less");
-						}
-						else
+						case "flat":
 						{
+							// Read flat structure
+							TextureStructure tx = new TextureStructure(this, "flat", virtualpath);
+							if(this.HasError) return false;
+
+							// if a limit for the flat name length is set make sure that it's not exceeded
+							if(tx.Name.Length > General.Map.Config.MaxTextureNameLength)
+							{
+								ReportError("Flat name \"" + tx.Name + "\" too long. Flat names must have a length of " + General.Map.Config.MaxTextureNameLength + " characters or less");
+								return false;
+							}
+
+							//mxd. Can't load image without name
+							if(string.IsNullOrEmpty(tx.Name))
+							{
+								ReportError("Can't load an unnamed flat. Please consider giving names to your resources.");
+								return false;
+							}
+
 							// Add the flat
 							if(!flats.ContainsKey(tx.Name) || (flats[tx.Name].TypeName != "texture"))
 								flats[tx.Name] = tx;
 						}
-					}
-					else if(objdeclaration == "$gzdb_skip") //mxd
-					{
 						break;
-					}
-					else
-					{
-						// Unknown structure!
-						// Best we can do now is just find the first { and then
-						// follow the scopes until the matching } is found
-						string token2;
-						do
-						{
-							if(!SkipWhitespace(true)) break;
-							token2 = ReadToken();
-							if(string.IsNullOrEmpty(token2)) break;
-						}
-						while(token2 != "{");
-						int scopelevel = 1;
-						do
+
+						case "$gzdb_skip": break;
+						
+						default:
 						{
-							if(!SkipWhitespace(true)) break;
-							token2 = ReadToken();
-							if(string.IsNullOrEmpty(token2)) break;
-							if(token2 == "{") scopelevel++;
-							if(token2 == "}") scopelevel--;
+							// Unknown structure!
+							// Best we can do now is just find the first { and then
+							// follow the scopes until the matching } is found
+							string token2;
+							do
+							{
+								if(!SkipWhitespace(true)) break;
+								token2 = ReadToken();
+								if(string.IsNullOrEmpty(token2)) break;
+							}
+							while(token2 != "{");
+
+							int scopelevel = 1;
+							do
+							{
+								if(!SkipWhitespace(true)) break;
+								token2 = ReadToken();
+								if(string.IsNullOrEmpty(token2)) break;
+								if(token2 == "{") scopelevel++;
+								if(token2 == "}") scopelevel--;
+							}
+							while(scopelevel > 0);
 						}
-						while(scopelevel > 0);
+						break;
 					}
 				}
 			}
@@ -194,6 +229,12 @@ namespace CodeImp.DoomBuilder.ZDoom
 			// Return true when no errors occurred
 			return (ErrorDescription == null);
 		}
+
+		//mxd
+		protected override string GetLanguageType()
+		{
+			return "TEXTURES";
+		}
 		
 		#endregion
 	}
diff --git a/Source/Core/ZDoom/VoxeldefParser.cs b/Source/Core/ZDoom/VoxeldefParser.cs
index 33b338ac3..89a46d42f 100644
--- a/Source/Core/ZDoom/VoxeldefParser.cs
+++ b/Source/Core/ZDoom/VoxeldefParser.cs
@@ -49,17 +49,15 @@ namespace CodeImp.DoomBuilder.ZDoom
 
 						if(string.IsNullOrEmpty(token)) 
 						{
-							General.ErrorLogger.Add(ErrorType.Error, "Unable to get voxel model name from '" + sourcefilename + "', line " + GetCurrentLineNumber());
-							spriteNames.Clear();
-							continue;
+							ReportError("Expected voxel name");
+							return false;
 						}
 
 						modelName = StripTokenQuotes(token).ToLowerInvariant();
 					} 
 					else if(token == "{") //read the settings
 					{
-						ModelData mde = new ModelData();
-						mde.IsVoxel = true;
+						ModelData mde = new ModelData { IsVoxel = true };
 						float scale = 1.0f;
 						float angleoffset = 0;
 
@@ -109,15 +107,16 @@ namespace CodeImp.DoomBuilder.ZDoom
 									token = StripTokenQuotes(ReadToken());
 									if(token != "=") 
 									{
-										General.ErrorLogger.Add(ErrorType.Error, "Error in " + sourcefilename + " at line " + GetCurrentLineNumber() + ": expected '=', but got '" + token + "'");
-										break;
+										ReportError("expected '=', but got '" + token + "'");
+										return false;
 									}
 
 									token = StripTokenQuotes(ReadToken());
 									if(!ReadSignedFloat(token, ref angleoffset)) 
 									{
 										// Not numeric!
-										General.ErrorLogger.Add(ErrorType.Error, "Error in " + sourcefilename + " at line " + GetCurrentLineNumber() + ": expected AngleOffset value, but got '" + token + "'");
+										ReportError("expected AngleOffset value, but got '" + token + "'");
+										return false;
 									}
 								} 
 								else if(token == "scale") 
@@ -127,17 +126,19 @@ namespace CodeImp.DoomBuilder.ZDoom
 									token = StripTokenQuotes(ReadToken());
 									if(token != "=") 
 									{
-										General.ErrorLogger.Add(ErrorType.Error, "Error in " + sourcefilename + " at line " + GetCurrentLineNumber() + ": expected '=', but got '" + token + "'");
-										break;
+										ReportError("expected '=', but got '" + token + "'");
+										return false;
 									}
 
 									token = StripTokenQuotes(ReadToken());
 									if(!ReadSignedFloat(token, ref scale)) 
 									{
 										// Not numeric!
-										General.ErrorLogger.Add(ErrorType.Error, "Error in " + sourcefilename + " at line " + GetCurrentLineNumber() + ": expected Scale value, but got '" + token + "'");
+										ReportError("expected Scale value, but got '" + token + "'");
+										return false;
 									}
 								}
+
 								prevToken = token.ToUpperInvariant();
 							}
 						}
@@ -151,5 +152,10 @@ namespace CodeImp.DoomBuilder.ZDoom
 
 			return entries.Count > 0;
 		}
+
+		protected override string GetLanguageType()
+		{
+			return "VOXELDEF";
+		}
 	}
 }
diff --git a/Source/Core/ZDoom/ZDTextParser.cs b/Source/Core/ZDoom/ZDTextParser.cs
index d677989df..b95331b68 100644
--- a/Source/Core/ZDoom/ZDTextParser.cs
+++ b/Source/Core/ZDoom/ZDTextParser.cs
@@ -47,7 +47,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 		private int errorline;
 		private string errordesc;
 		private string errorsource;
-		private long prevstreamposition; //mxd. Text stream position storted before poerforming ReadToken.
+		private long prevstreamposition; //mxd. Text stream position storted before performing ReadToken.
 		
 		#endregion
 		
@@ -213,7 +213,8 @@ namespace CodeImp.DoomBuilder.ZDoom
 		
 		// This reads a token (all sequential non-whitespace characters or a single character)
 		// Returns null when the end of the stream has been reached
-		protected internal string ReadToken()
+		protected internal string ReadToken() { return ReadToken(true); } //mxd. Added "multiline" param
+		protected internal string ReadToken(bool multiline)
 		{
 			//mxd. Return empty string when the end of the stream has been reached
 			if(datastream.Position == datastream.Length) return string.Empty;
@@ -228,6 +229,14 @@ namespace CodeImp.DoomBuilder.ZDoom
 			char c = (char)datareader.ReadByte();
 			while(!IsWhitespace(c) || quotedstring || IsSpecialToken(c))
 			{
+				//mxd. Break at newline?
+				if(!multiline && c == '\r')
+				{
+					// Go one character back so line number is correct
+					datastream.Seek(-1, SeekOrigin.Current);
+					return token;
+				}
+				
 				// Special token?
 				if(!quotedstring && IsSpecialToken(c))
 				{
@@ -418,7 +427,7 @@ namespace CodeImp.DoomBuilder.ZDoom
 
 			if(token != expectedtoken) 
 			{
-				if(reporterror) General.ErrorLogger.Add(ErrorType.Error, "Error in '" + sourcename + "' at line " + GetCurrentLineNumber() + ": expected '" + expectedtoken + "', but got '" + token + "'");
+				if(reporterror) ReportError("expected '" + expectedtoken + "', but got '" + token + "'");
 
 				// Rewind so this structure can be read again
 				DataStream.Seek(-token.Length - 1, SeekOrigin.Current);
@@ -469,20 +478,39 @@ namespace CodeImp.DoomBuilder.ZDoom
 			errorsource = sourcename;
 		}
 
-		//mxd. This reports a warning
-		protected internal void ReportWarning(string message)
+		//mxd. This adds a warning to the ErrorLogger
+		protected internal void LogWarning(string message)
 		{
 			// Add a warning
-			General.ErrorLogger.Add(ErrorType.Warning, "DECORATE warning in '" + sourcename + "', line " + GetCurrentLineNumber() + ". " + message + ".");
+			int errline = GetCurrentLineNumber();
+			General.ErrorLogger.Add(ErrorType.Warning, GetLanguageType() + " warning in '" + sourcename
+								+ (errline != CompilerError.NO_LINE_NUMBER ? "', line " + (errline + 1) : "'") + ". " 
+								+ message + ".");
+		}
+
+		//mxd. This adds an error to the ErrorLogger
+		public void LogError()
+		{
+			General.ErrorLogger.Add(ErrorType.Error, GetLanguageType() + " error in '" + errorsource
+								+ (errorline != CompilerError.NO_LINE_NUMBER ? "', line " + (errorline + 1) : "'") + ". "
+								+ errordesc + ".");
+		}
+
+		//mxd
+		internal void ClearError()
+		{
+			errorline = 0;
+			errordesc = null;
+			errorsource = null;
 		}
 
 		//mxd 
-		protected internal int GetCurrentLineNumber() 
+		protected int GetCurrentLineNumber()
 		{
 			long pos = datastream.Position;
 			long finishpos = Math.Min(prevstreamposition, pos);
 			long readpos = 0;
-			int linenumber = 0;
+			int linenumber = -1;
 
 			// Find the line on which we found this error
 			datastream.Seek(0, SeekOrigin.Begin);
@@ -498,9 +526,12 @@ namespace CodeImp.DoomBuilder.ZDoom
 			// Return to original position
 			datastream.Seek(pos, SeekOrigin.Begin);
 
-			return linenumber;
+			return Math.Max(linenumber, 0);
 		}
-		
+
+		//mxd. Language type
+		protected abstract string GetLanguageType();
+
 		#endregion
 	}
 }
-- 
GitLab