From 5fd02a6080c75cc9d0e63333c5a37f16348eebdf Mon Sep 17 00:00:00 2001 From: MaxED Date: Wed, 27 Jan 2016 14:08:15 +0000 Subject: [PATCH] Updated Scintilla control to ScintillaNET 3.5.6 (https://github.com/jacobslusser/ScintillaNET). Scintilla.dll is no longer used by GZDB and can be safely removed. Changed, Script Editor: pressing Ctrl-S when fixed compilable script tab (like SCRIPTS tab) is selected now compiles the script. Fixed, Error Logger: fixed slowdowns when adding lots of errors and "Errors and Warnings" window was opened. Fixed, Script Editor: text caret was incorrectly positioned after selecting a function in the navigator dropdown. Fixed, Script Editor: incorrect ACS configuration was used for SCRIPTS lump for maps in Hexen map format for ZDoom-based engines. Internal, rendering: added more error reporing-related code to D3DShader.LoadEffect(). Updated ZDoom_DECORATE.cfg. --- Build/GZBuilder.default.cfg | 46 - Build/Scintilla.dll | Bin 442368 -> 0 bytes Build/ScintillaNET.3.5.dll | Bin 0 -> 189440 bytes Build/Scripting/BCS.cfg | 4 + Build/Scripting/GZDoom_MODELDEF.cfg | 2 + Build/Scripting/Hexen_ACS.cfg | 4 + Build/Scripting/ZDoom_ACS.cfg | 78 +- Build/Scripting/ZDoom_DECORATE.cfg | 13 +- Build/Scripting/ZDoom_USDF.cfg | 2 + Build/Scripting/Zandronum_ACS.cfg | 4 + Build/Snippets/acs/switch.txt | 3 + Setup/gzbuilder_setup.iss | 2 +- Source/Core/Builder.csproj | 37 +- Source/Core/Config/ProgramConfiguration.cs | 6 +- Source/Core/Config/ScriptConfiguration.cs | 139 +- Source/Core/Controls/ScriptDocumentTab.cs | 212 +-- .../Controls/ScriptEditorControl.Designer.cs | 127 +- Source/Core/Controls/ScriptEditorControl.cs | 1144 +++++++++++------ .../Controls/ScriptEditorPanel.Designer.cs | 92 +- Source/Core/Controls/ScriptEditorPanel.cs | 194 ++- Source/Core/Controls/ScriptFileDocumentTab.cs | 7 +- Source/Core/Controls/ScriptLumpDocumentTab.cs | 7 +- Source/Core/Data/ImageData.cs | 6 +- Source/Core/GZBuilder/GZDoom/AcsParserSE.cs | 2 +- .../Core/GZBuilder/Windows/ExceptionDialog.cs | 6 +- Source/Core/General/ErrorLogger.cs | 20 +- Source/Core/Properties/Resources.Designer.cs | 37 +- Source/Core/Properties/Resources.resx | 147 ++- Source/Core/Rendering/ColorCollection.cs | 61 +- Source/Core/Rendering/D3DShader.cs | 21 +- Source/Core/Resources/Lexers.cfg | 8 +- Source/Core/Resources/ScriptConstant.png | Bin 0 -> 1201 bytes Source/Core/Resources/ScriptError.png | Bin 0 -> 1419 bytes Source/Core/Resources/ScriptKeyword.png | Bin 0 -> 1265 bytes Source/Core/Resources/ScriptSnippet.png | Bin 0 -> 1357 bytes Source/Core/Resources/TextIndent.png | Bin 0 -> 353 bytes Source/Core/Resources/TextUnindent.png | Bin 0 -> 351 bytes Source/Core/Resources/TextWhitespace.png | Bin 0 -> 1163 bytes Source/Core/Resources/WordWrap.png | Bin 1148 -> 1328 bytes Source/Core/Windows/ErrorsForm.cs | 11 +- 40 files changed, 1508 insertions(+), 934 deletions(-) delete mode 100644 Build/Scintilla.dll create mode 100644 Build/ScintillaNET.3.5.dll create mode 100644 Build/Snippets/acs/switch.txt create mode 100644 Source/Core/Resources/ScriptConstant.png create mode 100644 Source/Core/Resources/ScriptError.png create mode 100644 Source/Core/Resources/ScriptKeyword.png create mode 100644 Source/Core/Resources/ScriptSnippet.png create mode 100644 Source/Core/Resources/TextIndent.png create mode 100644 Source/Core/Resources/TextUnindent.png create mode 100644 Source/Core/Resources/TextWhitespace.png diff --git a/Build/GZBuilder.default.cfg b/Build/GZBuilder.default.cfg index 791a228c..febc41ea 100644 --- a/Build/GZBuilder.default.cfg +++ b/Build/GZBuilder.default.cfg @@ -171,52 +171,6 @@ shortcuts } -colors -{ - color0 = -16777216; - color1 = -11425537; - color2 = -1; - color3 = -4259937; - color4 = -3750145; - color5 = -21504; - color6 = -49152; - color7 = -128; - color8 = -12171706; - color9 = -13018769; - color10 = -16711681; - color11 = -24576; - color12 = -49152; - color13 = -1; - color14 = -4144960; - color15 = -16777216; - color16 = -6908266; - color17 = -16753716; - color18 = -11366857; - color19 = -6671822; - color20 = -9868951; - color21 = -12490271; - color22 = -14513374; - color23 = -14634326; - color24 = -5103070; - color25 = -7077677; - color26 = -4684277; - color27 = -4144960; - color28 = -8355712; - color29 = -16728065; - color30 = -13447886; - color31 = -5247250; - color32 = -40121; - color33 = -1146130; - color34 = -256; - color35 = -657931; - color36 = -18751; - color37 = -29696; - color38 = -4343957; - color39 = -2448096; - color40 = -65536; -} - - mainwindow { positionx = 150; diff --git a/Build/Scintilla.dll b/Build/Scintilla.dll deleted file mode 100644 index c5c68798006af64b1280d8009e9b03d7637b9587..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 442368 zcmeFae|%KMxj(*}-6V&wVHa5;V#KJaLPHe|)vPCAAlW1c3xSX<5t3-d7Nb>!a|G*d zvh*a7li>huZL6&p>#bP4fESAi(cK`(uX=3|il}%yxTy^iVS&i`zMnap1X{hH z&+GH|H!nD6&is7lnP+C6Uo#uHXM@dQv)P>ZZ<;pScD(7YNId`dhh(?eMqK+}BW$k> zd;7ZW_E~RVH-E{4%X5}4d-OZY?)z@e{r5fc$fHWmw;sq@raqGM;3GLDb1HMb`{?2a zZqCfi$W2x~M)f>W>1~`c@c%&ebyF(v9Vk6NMHTP(lv45jV#*}Ei?VN+G8gXyc;AC} zrMGE{A=3M%$l~2IWuAC{l6?O|yyrc5{}O8Bt9n%7x7lXdQ*F21duGN!p5wNZ>xSEh z*=&bWZ8qvG{!->6>_MOxZwgU3#by&<2oAh$o^%VTR}JHS~;1N;?#H!BaURFI||K%)c~ z^_7U>lD{0A?cST0Exu2=&t~g-0twXj@8SLK<$xA}Y;Lx)*?wJy^rdMw+t=}~!26QF zBJ}d+Wy_b{k2uj+^w~yPzV|Qrif&%^z{8IsWArYh0|%mWk$=fI9jX8S-~R&!D)Wyl z*?@AbJ+^0YTf9-t97FjPko~#o-Xn9;2B-*#nT>LeI>nGH;%@O-*rW* ztw!!t()l~}c3V6pzg=HV1zYQo!;b00q6<5#**1!6IiqCr8y4AZY`ys0t)ww~gWdFK zzol}wE}N3dpF@nPW?6Yn)ywRrnq#Wj4JoE7nH7?ifY^#0=J)7p2t?+0 zMbqv28Unh$c2~A763UfqN{)MHNv>4E@JJtt5PdIIg+XCixe%C^~Et*dK zF<#7V?l;X|A{HOQD=xLPH#$poHR7v{xYvDr(KHD)sweU~(WVX5_$|c6J?wQFF96Td z*?tTeGYIwdb@^{EXG(IN z_G)%2mX;Wi=26nC`Oijxj##t~HGp=t9#5>uwImy(yjw5#R0oZfUfr$Faq4pKFQ2uOs?nF0=u0c~^7(rC0=;~RUcOW>UukTPpdb1OJ9} zY}*Oy8a=Hp=Af?XWfco);@SgVt!F6+I9Y`;E*}WJu9qN` ze@H&Bhq+$W=U(@=m;`-nR?7zYE%&-VichbRozmveYkQj86<48M$tX;5w+us4p&d&E zv$>!0UxQcrtEN71|F=nRVsR!QB1A9>;))WBv50j$ju8Tt+auv@bVkzE zT)lRplFEu!#vQC^DW)-%Fx4J55{oz54Gtjid2`-;su}~B#r%D2e#-{a-{%YWx!2}n zvewrv+`Vg}HH*qIbBaq0bvr**jorfEp6B0=egUfoSeo&qE6Dc6{9Q!bX2rv7G(LfL zbKYV$nkAV3cwWLNOTlm&#jXk@g^!x^mVlnva!GsOxXmb$?7IIQUG0hbO?y0zg^x0| zry--7f1FO60)`H&ji;L5j!#FFzL60`a)OOw(Y#_QZ=W9Mc67-H^r}RYL-!|qfkeoG zIm#-X6Z{E^@1yuWU!afT`zD~b{@%Qpz=Wx~(2u>?LDXJD?EQ%D%c*4D+LMy4I_Pfx1Ar65bAr#S zqT%Vu1GNWw^8(ylz9j$9bo8$W-8ZHIdI{s8SDnzSxB$*jPk;`AGiIkLLH&_p#Rb$~ zZbz%8n!rG_w0skTYF6Z$TOvqeY4njriD{g1G_hD@#8y+ZpeSTAN^>bM|J%7sQ)y=zz=yZ88Vf?P6wEjE z9aL0~Dd`oQNuVI?L;SoGfuahYGYoINSdwGvD4H$>`bww1QqottPEJK@$XdbcKxfRK z4a(Ejq9*?Lc|dBfu4c<;l|3wwYd+?*`X;T~K^abdL7jC!)#2W{doFOXfqHLlp(K%S zg9!OC3A1!rf6^H(US!vc@3rd42?m3pwH#w6(!Fe?j{4_0(Gxw~tB3paa6%9F8&7%% zb{M}4936(x--kid{Yb)MLYq%R>hpD|C_Co&5Zd(R1-yu8E76bv5_epTr<;CHLk4iL zj&MOc_@_+GHq~4U5CtKNN2+K5r(LTZvUo)FsD$ zY-z?lc4O9Uc6|XhG?y6G@iuK`xh-0>$fjge8%s<0uDN!Llf)veJs{cgI;z1RO?TyW z$h|>!u`z`uTFk}~I#$9I!`W)jnl?xM+;O+Zr%K@~IzC9r1O25qI_z0mhjX^tS6^3) z&ApPQnVbr`{;(jV`^>qt|(P14K*~CDxNExt?JD5uGYSE`EwqN~K^i{~JQ+B-*cL zDYg?bRBcwxCkUMqo>j&xO+YRVWv~nKeqROlrt@X5rZjtX5(N^A5=Gg|0>S zjcImF=d(wq1^FhiK1g~R_-%WsGoHnoq&d7BvHG}pD$zNm=%r3ELbPfSbSzCyG!El0 z(=;Cuca$SjsRT$z$}6R?3o=PD+s}V>-fml1U)R}kCNu_s$V;WLo9*L2lQ6~ZXiRgI zIXm;)iQSl6NtKpKY=NX*us1pL+vBsVjpZiah3b8NDU@myUyR?WJgur}VdM$*tj?Rn{_jA{0{hPist&SF zJ{%pYgOC$sy~dMve(($6|43*QIwvoXnufFaxh}ScpNDEd3;_5?&=9|uD*Co$s}WKU z#mq*Gg|;LHJs=6@_v)ptHh)%4YpJJpm)BO^u(&RNcZ2sH7Crl+dqao5!g==a@UHxJ zkgNNL?Pt4(cT{kKvL=7G+@V~jPcoJ|8}4V(dt#)r0Jn#!1CG$8wR`V=A`SvP(_o)F zcWy(9euu@T>T^8$954Si@W^5UI+{R!$^DYw<>-w|G(q;6RUR|odg3%@hs(y&AxMm^ zUJ|~><}sG`o3}T3`I{(S&A;aWAa&YJHX1Tk>@>{`q#7rSa2U(P>M&l~_U>oPR#1aVaJ<*2^~Jb+&8 z1X#KQT(%(LYD~_Lkb{-E%}er2(iCA?r6>6S(p_j@~)sr z#~ls!%F4=y6mCZ}%Gc>-5@uVLEod~(;yU&bo^io6jmF9RIV$*g7M}z?o%Zc48&<%t zQSe5ref5MzEF1-OlhnI|1$DP7lUdjkI9RV(ESZS0wn73Lq%M3_tKa29Wpe}3c zx<25!GvHG4+5(<42e0qS2)N`%S9mxUwb3lC)s-H1%Z*YvgOz&NXh*Eo<=J8{qYBmS zb@gr3ii=vAiv>CV2)6v%e(K3W>d4*TZe08Ws1|*-E|#dluH1MHEy#XX-uu{!4VMfk zN&rP`dYKtWsGm~bJfd&d*)beagPs2r$g8K0fvMu<=o_tTK(xzNjjh3jX>Yl%BV(ANvTn4Rv_X5G>up&_o0f?{3E_vPt<=gN3TsZ27sM5r=!(>u`pA)9yz~3 z#UO^1$o2}Vz0TCyXYqMxoYf}c?t%Df{&$c;X`BCIv0Upx+o&wGB@+H311g2^#Y{B= zg=bgu&ydSPpBOc?*3#~7P6J-ibt%|#M!iBV#$+;{oWV%NPGS~{U@1dx!hHD-C%*Lub(7*f~@n1qF;!fjX=4ENUE#6G$?O&H8b)V$8|H7(a{&q82A7- zt%x0X=#aOXJ%+-!q3|$yT45Lq4-%dzVlk0QDavT}SYf3c4QH~N$=WV&kybbswJa3X zfQIEdXXE@J_#3|Ml$~}R=RK@bY@xK}%;oAAP8%^rHJI$V;EH+yLLpZl0$lpRD zR-WJYBhMQi)|rRBV5+?ooE&(ZPN<2(nJv4+4zMQ7#+q z8$69o_gcxAluIf7lN010 zlAMI-RFUY^14M;*61S)brcxk!=K42FHk~({3x0J42t@>m+-fYeJoe z)(NYkDaneyNfk}9D*7wRi;AA5K&i`-M%=5ng3m#htU9zes2X&gILdrejq*f-4^>NT>bI%>SEgKx)T3O*08$q8i=8xbCv7ppLwz6vbwjt)nx z0{X_kJz~RiPxS-Cd`ImK-wATVo79a02}1w z#h0WUy(C5A6D~>FHIM>f&INqmXOKEl^0CExAs974tf>RM^`N-r zPAsU3i@%5R)%;cgDl|CvJIRjV;+-OTtQGCj?w73S7e%x~L_g`#?swVHl#9QHW`evY zfv#xxdu;WwVlSG3;H0fYKb@?|+sTSN5amdkEAJ$AK4PbNiL3A6f5A?}o&Zn7A2>~# zDv_>SjWk5gk=P9Iq#Y0}JCLI|nS=1>V6n~?vq>xq`}l8B3nZWn%$jErtccr#pd3C4 z1wd3zjHJ^n^>$V^*n<_ku@N)B&WSLek09P8A}kTH*x7@8>OicE&l9mOiXBhE7+Sc8 zK%VWXU@?CD6oRE5N;VN(*a?owwa^dB|?Vj>gJ7mHbzzyN=Dl;>caVHssnptln9~ zs|ci7;3w+AMi=qY!B1!wiufJ)BmuXQEr5WnIyc+n-vC%LNp?%6*}M<6`bu&=Axar3 z@3g6tffs-u9cb^AeVg` zok+(lBbo0Wa9q@>CiMJHzYE+Wb!sDOr#e`#nsWA7etUu6<^FMdMJ0N}yU=0u7Tirg z|6{Ld+M$xF?FZK&p{m9$`RzV`0-56}x3v?aAVE1nlmytl#Boud_|!q@lbjQY;~0`U zrr%hTo4^2rfnyl)k;v@c8gNC0ZgLEs6$V#lu=0<&Ob77~;_s{sZFKp1dy5&)gty z|A%Qp6XHS$U=6g|8Dvj-Fw3s4s%EzsE1Y~hnhWx#&uMY_qUG=E$+}vabTminX`01{ zvvQXVgA43`Hjw=(fCfTzLUH2J9lQqxS#J$yxffi%0gXu06Tmt+RV*MRuM!m)rOpP} z@q&PZ&GfJiGB_w#vXw3wn-Msa1ES`Cv>Z~?VMST)i97W){kD2q>?9j2hQh@}ff>FE zmx_fAyK=E7e!Z_ixueBY$1$m8x030b>%thEV{ToFV{U5&HuXbv^U7-KV+lYC@}Ku% zJ4Lr@>d-N)suRjwq%ZKqufUfFRPQqCoV=2NydB)(Cm@~pHLTo;6@wNH?VKH4a)k?0 z;DbPP{I~%6ebBUIgL-47C;tcA6os7U7l9{(IsiSE>C;<(zM?Ur42QxBpcL+5=lX$#R}0m z8)ga!yxyZ0K-gpMB+r(SqFf7=on03~VNxV?oZ>y7g6PU1eM@!B{ZPBNb&=#T%RKd1 zxdyBJ50Iic$D`gkR3QZC!mq0GnJ=jl^?{AoB~nsjNCL3PA?$%_1ePk8?^qy9FZYrq z5ASTfJV!6jB@N6_r<;?Ve(JM9ER&%)vfN7sXJ-ZPPVR%yP8E^f>hjdvX_vxyetGIM zv{`*+YX8~GQ!8U>ivdkl{*jy>7f- z2lLP*{?gw`$ethEPD}!y9*5lRLR5p@Xk6S{R}d}r+4<75$g{c~8T71J5x6=87D)O6 zm%hN$y1?6z10Go4_yVPGd=bys>gVtzjeczPuMxTyq1KIyMfwu)d{{h}il-u;E9v=% z%_97Y2ye$Ty81Od;c)OLdbMucNhuq#-r*U+vvuRsBK$0#eCsJ71WVX8F#LioKufZ~*qCkdmlhbv-AcKGL%B=-*W7C<_XNuQ`g~*rM5Ceg z{}*TmD&Iia&-Yree`U`4T7C6X$f-YmujNm1icbPs2N}6hRDs3F(KO$G=`=t4kHNIc zDr~Li^8cQH#`h8-FqTd<1HHl;LaO2Hg}(!n*vOzc&r>RIqb#A1%x#p&H&ZnYsm3-! z-ab&&+4)}KEd{vP(Kf3Qv( zI>-T7JG7pO(Dsu++{?-qA)irh%BPwZvQ5-jIre9$lx7~W+jPGRvVAP(?zaejLZtdXoA_BR+Cbw9t%;G%Y)exA>~4ki4w`?Z7R88pikKyh>iLrUfu zH38-0_%r@KyD}E)0#?3=cA2LMk{NSh3=8s(_h88PCk}qMPwggE(tg$%^Y0Z9(Zm$s z01}u+yLI)b9zL$CCv=qqHXT-7fOo)9_X3!mIT$2@BI)#yL_+=W7es71N2 z!e0{YsMDFOlLn7)R78U&Mlt_P{*m$^oEEO9ctI?rP;>DLAZ;*fak<kLM=U?+y5qH4DhlRQI(@n zW2T+O)U<^sU&ppr&0ob6GzaX?=Kq1P+}k(`$}Iy-^B#T+cH6>CHHDo9;R`y2ei7z;QA^0} za4wiR_8$NHGGH3BB5F;@3-8k$1WZs674Vpt^i&zcSq-;&;f+hyMzU zD_k;?Gyy^yAPBNuLh}hFDiJf$3QX_sfFAm;p=s5h92gcMu(3vf`@2RXZ?Mp4AK26| zadJ+r-O0ZrV2Y=1C$KH@hu{%*nOFsSRS)sw+kncinQkm~nDeF7eXI`{LKsgI;m0bC zIlvk}2cZNe!so_d)h#1se+44LDET{b$5gKbGqQu~xS{igJ#v@(*>>>bnJnBdhZCVc zi4-|3HC~UhRImgEZ|L;-U5y^%*}pkZk7A#*kU@z?%SB}sdpH*=r`}*Sdy`**EG%I) zaUp&UMVUa}?`)VK$_V=G#pey3ax9cOyX8#NF^c-@V2&&3b6+w?*a#q?7*&Km!j_L&}1a>une)jo1y0|I8Fd})Qp zmpK|7HEf{=+8VjD5qi$NSbPrah|dInRbo5|g{D+(`1|tDe0zpLEaxc?x?hqnhQ~nzjOOi^HGfx`>6c&-3LQgtV5%Z_D35O6Y!_3+Wt(!G+8Ks+pp&=7 ze==p)z&9qKExsC3_kW9ydoLMDjN%btpj9D8%H82dNV*Ox*BDQlpoG1c3m8^6*+tOZ zVtYKmV(}SlHH|LDXNonv0RzU+J=i7m+Fm{joazwHt~UI=6_psk9=--diOPnF%C2O! zy{xkyJ)v>=!G|<15dLa=;wLMO()oPr2bcw20HFZ}0l5>D6h1%>T7kZNGp~a@Wc)pb ztANM>jq|^JLi8}DuS_#jLMJTvqWC7Ns7TTTq)^o0{_(EqhARbZMx@Cl?}0B>=(i_n zu_dtF>lzSp>^gZrUJ&L>3zTWT)x-g-K1ij$)q*n<5s0&aJ6mmWXNe?tRt<-ZGI?i` zJ6lI3g&|DqnG9;{2CZP~xEwLL*wdJPTl>jT$iPnXABg6B8u8sKkBK)mP*7apZh0R8 z5C=9>J@8IL23E@Mf8J8z(nD?_hI%08Kj49073=3KSty1z9>&z-3YdH5$i?M`-z3Hd zv#}cfcEX0i$9!y>Fr;9zCX_28Px@eGY9N?OsJtr4%RQkhA@7d_u^Wtd5uY7i685;u z(8SlI#uR;$wV6N}Vv_SzA}>~c_As?{_3l+4*m7WU(so~A_z&=#pnXbm1>jl$SV!SX(c9Sb!VME>PuYy@)7qgd2`!N$M&5#i@N?HP(&;Afb?PcGFEkdj!C zfCV6$_7uW^3m8Z?KNncJaQ5&3CbZon`E~ycjfA?s0t>Vc2QNE2V*<)~kB?aBvuMl$^lSgnJ#_!fo&fI}YCUj0HTt zPO#!~NcN86LIw{pPKppLD%*2_(Ri+Qj_lh-PKv-rtE;c+YP+s>VMmX{-)MUdh!1?Z z9(WCVHIPA$l;FbrT^9Cr^$lI!tE&erR+bpC?Vti_G)jfRs25SgWs^zCqmD3_y4X@@ zkmsF%{$&ioaRs8xrIKA1M4`5 z`G277x2PT~Igz_1vs^aJPr}STG|U}eGR(gn8s?cp!yM@4_W@-?!%X(4|I;wb`@|?0 z{qranec31%{XdQJ_2@H$v{EWYxzrlvku=IHorG3C4~u@>O9SmjENpO2e#?hIAzE~>}K4vh1(csdQcqhWe|a-jE%fu6aDJ$C6p2adx* z6a&5gl7ZeoIM8fA4K+8k?1#?HVq zG2XNbl5oxEAB9Zc(%wYM@+&Gx%Sc*Qdh?I5B__QSP|OmAo`&R(Wv9*Wq2=!1@KHk^ z40DB`4qYcNI0M(Gc4fpsRUTp1uOaqRtgokF9h8kHFJjAm_j9pPr#7Sn+bt~@5ia1OlGb>TxYBUZSCK8@21dSlfspS@jT`qTpr?5H?vTefR z&l2%Gwx71_T+H9X9M~}Y{qZq{!@%leVOh5sjXiVrT#@@FZ1VkO&;%SLA;6j+t9lY( zZ3elQ1PS=(h;RCguR@Q(-NITWC)~{%Adc*OjR3c*WPdSQT+pZQ_!}xvu7y+G)#&e- zsBKtL-ocsj!SJbg1|l+|ww$87XSN(_`V7@ZQ98;`VzH(+NER!k3KIyt27V*&f-)>f z-Onap0Z~0T9X^%lAje}&NIAx*y20M#JbxOFDrw5J=F}%B;*U>tF)-aif4l0 zA=x=0(4|uMKY^66u#P+z1r79qIm$o6f7(r>8M=qfCQSk?T;Vx_TPj4A@j?s1otRCi z#hb)HXA-TfyDXj!AB=HuJs2xDdcs#?WbNSmi}^7OJfI1|r1M&Rou#+Nn40W-! z(iKA$kO<9B4lmhi%HapoSWIqGvi%6kvG7%F9qA?=f&O?}o(NX5 zcX=nu&Xj9i;cY`~MWs=4m%X}zXa5!U4Aqr?q=t31n2%S-;53ObZX4ZvNSP5ipP^(# z&SxsAts|$!Z`HycyP6ucXT~!TOu<%R&zu&uXH1Jsh3Mo9yOxhIs_l_GGt{(V69VRE zrSy{DU-mM*U88neURRx-v9MOm5=c-{zJg`f-e1CXfjw zdZ3>t-p6N#>IV0(+y_QAMV($5j4vdXRUKZrM1rCYRR$T*<`?3|0A$PelEiKrp#<+D z{XMxMdH4wmcFU*3*AFNvrV;=Hii%t5W0;zW(?X#Sgxms|6zkiWRoiKi5u&0?=;4=P z@mUbhaBoE`?yV*E#Yusl`XO4yK_7oV$u;3pl33I`;hjXQ%D!Vl`XJGpY`R!O;@2AW zu#-{Z%R`B6NR+YU%wrc|1^#RNZc)oMM8kJkG~7Itxz?(Q60bMvXr6ZR2ZoZTChJNo zLyph~v>?+Y*ns73h~g~BS#Nl0%Nh5&PCyQ&5Wp&v_}GD}V*K<)n%7W{o+injay~;j zXOsGffA-g8-(q|Z@7mph*9alvw0~O^mu28T9WFf*MOFv?me(=Y>Osue6%Q zHdH(a`87kyXTGo?zcC5EVuzRk3nOG*kk{g&B2z?7{aPXg9+?S; zdM)-zK|oqf;K0?s`?GrC>c9V zPb0*EQE+fBmEU!*`%lm`3wz7*YQ2&0D4V;Pd-kGq;P}{B9|5hm`1c7uk81L z$a=$%R%2y+5h@~30eq>|ASNzcV#c6Hw7<7?x7H@0Kv1sXZD53IK)>H?>lCByh{SVR zYvDZGAHSNjWMUQ)r-2k4kxnE+0oYd^03zd0CFJOyNsEb zG0~Vtc_}+z@@FyMd;@k5%T7b88q02!RMJ4t0t&Yb5DG+naPa?q^~=XJxi`lC_ZSchiKpg^=+t2Vu&tN*V!V122#;IEIwl1 zfG4%ug#px3$v;YMk#GAd(dd9m9#d-b2I}u&{^>3ZQL!?{Tj$KLV%eSG7r^y@__!qN@a>npH$%Mca?==WgQ z2C+!yT2)#VZAYiHMx3F5;cxUjRDS`>FwW6{bHZ6VII_*-HtcG2)Cuf~--~4r3RPEy z*6HNs^9j#%k_y^DDEjcPoEG$9IOuzf-;QFm8IMw?fG@y=&;v)|xdT+_f#c9&|F5f} zr%23*(|}GO$zx+e@ecO@95e3>HeSuvk=mUY8=p^2_0>3)snfL%38&HH#!5T<$EAB% z>=OU+Z|(c!V%CSgDCRVTCybfTNAH7gy2w+b z%UII~JR%|g2_r%N5%~gnCtjCqtb=*vDhXX$;8d<8b5m76HhlRnp}*bMZpmF5{2Is1 z<$rn`%GXQ$ZB81Xw14e*A=;;oXMIJ-Nndh7`IQBE{-JUh*(X`+BYUgk1BYDIA9gxA z;!dN)F0m{<+lRr{OMFhN!1Qup{D8TY27~7TB6A%fM&C&hHJj}xXMhUDB2Cfgq*!^O z$B+!?B^DEDz+&=#eNxOjTpUP}?>fz|aKE;I0N|SJGM|W+rISP^Ht)GaSjB=OUa#evfESw0==5q*Eur=Qe@^4u|cgs#7At?APq_|r?7N4I0N#fImnj#l++|30d zFl^bd$c0Sz>aUBhi2M6>2%Id#1IPipwgm09`Uy_{kyV8vp!&c{o-vgC;Xn)53>MBC zO8w11stIsT5=&!MAPr^t#h287a^GO{-$!!%HLKL2q3Bz_q|}z7WDk{EZIya3zJ!O8UqkZA0LIQLct290+K>u?t-{O|0s$XeN#$13L?qo*nE7~a{5mUs62(WB ziL8IOqOK89%k8E0Bxxqi03a*UZ1xUFt%co?2fTWcI_`>3 zq%DfSDT)YEit%TMGWYRs3}v=lM)r#WPg!k5!imW8`9!6|ENrNc(#Kfq!`=J=2FYl& z3sLmG!8Z8OcP&a1s#kV4UMK1-LWV++&tVi2-YF+f?xR5_0CR^5ZyG54@<6`7p8U-~ zzW%*~gT2Dar`#m!`XGL-sOZR01|^xn>emM%`L&_sJCex(82Cj8o*PQ@CDU#N@ZX>w z_x!gtiKfvVW=3PM#<=Ro6is4RYqDDZDX1;$-kpv5YXfdZCZ>mVtj2ff=|r1}F_ zEY!U<$cxi#Xje-tYx^xlPPdJK+o82*?)L9dfP!~+#fjsFSH@$qeVPKdvZXKnoV8n0EZ z)c80h1I=84xF_R3#WNiL0iFxv45Dbfj#MmFq?YSL`{#~f0>irkp!4V6g2rhlNe(!5 z*EEJAb2vlf^};>&&QA5JHvboQ;-H=bX1zQ8Cf>O8Bb=})nT~MZ6Td027e zgNdi&6Ra|B$LZjsbM26Q!OCSp3t&zHF9*#FPNx+K|8)sHI{7pZ0y*1QF&{kP#CCwI z!o5Jk$F=y-!hLqS1LK5B{&>6>Yblgap)2W<1`k|R$XF8Ne?&B`RJel&sv&P%i3ETo za?c~K5#B3NT&n=5%0MohsG5ZuCXkDA-xK9vLe1qrL692L{aNZQxNJiXNOV&NoX!#o z?w#;P?yOTnkiTHMED<`KEX4<1N3Qan_^m!QR~=1iqyXg&cq6_#rGk#A<0=@drjevM z!yHEbJ5VVaVfd$V=&Ozz{&y-M9>LuWV$O3IIQU%fr%MP!IDw#^Kx{K&0i=U2-^i8y z$K5T3w5u<`9Xf2zL|mP5IIkPP0|z~7am??fE5PJHRukItngK6#pjc(lWRDSer)Vyh zMdiv>C@TkCxS3!yJFHjr7|bFPT7t_LTY+``^jPqGXw#6OZmp>wGxix;4G^vQfObK z7Ppny?S;37#ufUS#$sNxXV*N8?&UqZrUWkyC%$W?Y4M!G`$AV0eyh=2_-(~g_y{KP zGE8CxllXDfJ`JQWO@1r%BA~)eBYy;ZHToI?j1+RDAV#|*paKl^yVv~=pR5W8ghv)G za<|YWDQzVq34q%Hz-5Q2(>CQz*%+7Wr6IN7XT|4q=J`=~!SHD64 zgY@kf04R7;T^F$sttL#SK8J_AtI=hA|6cIcR;0F*l5F90?KdL8*3rvYW#!dZ6XF}w z^q4x`%1vxpo-Y@TQ$S~AHwaGVRK`p8sx+MdHVQB(=w~fl0y!hJGZ0pM?Yc?K#}>2HZSXD?p{#99B`QTKoKyKmRYZDYgn0p*UWK z4Mkv!zD^!`2iE9S0wD#25S?P#3=iCsY@JNh5`^R|adP@3fy;bZC z_cs95Y~5m{=5@ga>$C3=c)IhXfMDm=GwMpfEEg1{q`C1meBXSVz^(9RO(_K(YY0uO`H3zoC-0AzdBK zf^@nPQ^n;+{iM4}PSY&fvNK@Jp~H|6>^AwKrymYwI2?=9XNxJ1J4MJz3o@FLO1JTS z7aN|>-xpp&8F3~aw_d<|q!gTEM&U3eE$Sa`i%WNQDo!oXFQJq=3;{cs7`Si+`cuyM z`|TnPcb+7k(LPLf?CMB34CkA)PGQ%;?Qhtl`QxawtvjxxF;e4H^{?_L;16WeM-m_t z0f=%_m~Mw0fq>_-8zPapT%v=Gjn^`IyTW7O6NZ3bL zt}m$xeT2mPBgu1gdVPsrU(TP~hHmKf6_EOd7UGBskL+%t-L|=c9`aWiX6Zr?yjPnaXe?=zuLSZjPv21 zHoq5n>FOdJz()~W$m+!`Upx%!_HFIx;AXoul{p+FhR!mT4FQGYpIQ^{Z!O`6ae73j zI~jbqiIRC(mpMnxF0B(iV7A}cT=4jDY_@m4aIZ?v?=M7Pn6#WQV(EpzHVz#b zW!_ksQ{4DjFX{Cz{;eO_ZN@eQb{Vez1KYv2ZUnX2Sx{=m(k71sLx_WQ184bK=`3G1 z?*6!n+Ktn~BW5APb62rCvr@z*$)&=%& z>q}E`It@a=-B0vj_U|^Il+YWufOME$sKFAKgPTbl7?$13>9 z4-f|~ytew;m{Nkr5Px{BGH;4!S)t$18PibI^+BR_fCrtLEu zZqwJ4Q}H#k@LZs8B4TW<_vo8isneU*(sTU=dTx74#5|2>>!xSL^WVgCqlkZw!s~x6 zp3jTtZ$x|v>TTUrL2YbWAfAiF^Ij3Zn8MqZi08v1e!h4v6;DMxSJHF+2|QajaS_ua zp1l;az7NmXngpJJ9R27Q-}He1+H@kMZ}N!e3k1=c7X@^i@r_wN^dO|zA0br>~W%g>^g1DZr zf5|6}z$KqF3YUD+APjyQ>uFYCs{p&U?Eo-`n>i>b5fX3bNBC=|Rpj*hMH@^L?eromdsV(GM#V7Dce151PF#fGP-54f%q7eg&& z>!>eugww;;Q74i?>Oe9`z$b$QID+?j=0fdrI$G?p@f{c~V~c40l~2&RMlj`{;r9?! zI|Po016FMZ&6X7PM%)&P0PEz>k{x%8phS&k52AEL=^9NUGEoUNSA&fjNaqXb6vF$w z86VhB@`fYJ!kW$jZcXd(@{vyoxdeNjb|N912G2#BJT|q;fE#VJ%wy+s&!I3raEjp@ zMm=tj;mdvu+d(?~55*EM7_1zA2at$J2ow;pa;N}Wyy-p+*%_!1(x744XA(l$$F;yI z_(fxyllPb?WNB|K*({f>$p$9ukPhh<{RvQzMQOKTX^_{AKrh`2T7g4G{os?HIlFT_ z^6c*9N6%V*chO;??@Fc&%M3UKdYhSSwyH zZV<1{Pl?wnPm9;~XT|Ha=ftc1*W&fY3*y!FqIm7yEM5m*5wCZ)i&yt+;&rrLypF#i zUMIT5i|-Y$o&)05`;K_^b&FTxsCe}s$7?y<0-cj9+*WV}wJqbSq&tb5ImVl(C)&d{vBSUWX=hB)e9AFPy^u ztXF&4Fm{)G4!6|oCnuPCeRkGDgqeSBqr&!(`P=Ahvn2l8CfMWsA#7F!(`5bt3T;Gw& zG?8sT{~T*JGNBnDvJ`h+j>r8;A~D{j%^q)RvvbYlJb#9Cetp zL7Q4*u2~OW%MyT2;I8BxTn%+5A6}2TlAEQ6acuy+WudKFU z#v|nY{`Wv0quHR7k7+jc33dUK+lx;ZS3XD6kPfW{2vNCMP=1ab3Wr3&(k9SMuDkgR z<_3-{Hh)U<2*vWW4Zs`;3EJY^EL*wzC5>hxif3DG^Upd_?-tsOpol4k>08OorvH_E zelFr5oJ83QFV0v1rp7TWxCprY_zEm5bIRG|m-8mCqCTQ>x~gZ9t#Jw65{4|hC`+#o z0Efz_^H=aiH|R7?q+$p#=c+vC%cwJpX|$Drs~(BvCzG+s0MGqWmwi@lmMERU1jKeg zY@$QdDY=xL_W@{^|#gMq{>Xor!O1$PhR1lDr&GAG{)w4?K0OqYRk_*h1;uno9D zi7OacH_lyFSPt!?zC2O)Lg+k+CQ+gE%-L57Z@3fuWf~xsaJ)*0<ja|s5Ys7LS#pEm$z%gm;gzSiUh&36xx(*F=iopCoG!`mVhA``gF^s$ST{Fdv9 zNct?gnFV+*RdB!&SNm6Qq)NPlEgUF!-XY}^)#}k;V>N~g|@9zj<0<$Q@c7EqZa*cC0KP%=o5hz^O z+-nVd(glg`wHhTbqFLaG#(0Mqa2&4_wBxX*D@>ogeCjJ$oBVxHBCidIQew@Tkvs?C zHpqfaion3FF>j_?`00*M*@$#OhsL$sf)^Mb?UlJM8=T@z<$g zoc>4->W{VvoQXjVVo?8`26aC_K0>%9@zZ#-s$Oeg=@JTz>jqc@#LynX(Ei*S+QSoY zo`QxJox_#*;5lw5dgzk(VNlD;jqFz3&FgR^2emgeZW>HB@;(eI)wns&-$O?*CSgEu zOC;U!oN#oZ*EGaD6YDsxbq9^Thv5JP4i0b@qWPOvQDbcqm9Fm#08Q=U?(2~-zTi~G+i(s-OU|9k9^kM{3@X-ASG7-wi5-# zG7A)obrxq2E~2VR-h&EQV;1ae`G+uBS~Cf+3I21ulSr)sL12F(#13M0Xu{yCAgHVo zG-qHI!Osmu`B55^F4&R6xBu&WafOD9`GVeYnk#*m&6QoWJcy~V{;WXd5Y~tVqp4u5 zA~8rSus5XK15evmyYOXGQ*<)0c*MC@V${fNgGH_zJ1}vB_$3c;gMGLm0819UHL-g6 zy^RQZg@#X}SS)*(&mM}!#KVogUYtC}S#U&MiRy#{3$A?!T~t2LfBtz=$tG^e{gT#_ zCFr7ftHguJ5*Bp1n9Jl0zK>7D&_I9pptiFMtFH~W3`Y6y5El>PmmUT7x!2csZPGYhZ<5be&2=lO}gB-jJAC+`B5 zuz7WXEqY7d1uOs+SOwQm?cfXMq9S9PV3PG;VMO-vl+A(&X^z6?sfb7vBT*D+Ya))Y72w959-A(KznefO@m$eT`+g=${om0*AL?IQ`|05j~uKM)MA~P z5Tro!2IuC}03>0h7nO=%HF=)zgQtejmtwPR72;EbrE6T?rN?+ZJnuJ$nHG7%z2IXETiC?wK!;9TzCwBn$11ieSD=wL? z=f8+c5^+gC-EiT+;0T8SSF)!E(7^*B9XQKV&*!pObk(ycZ092Z0^QXw&KmYw^np7l zh-V4T#YN979n-R#7!>*n68{tq%0UCX!PHB?y* z#tMv|GZrD#V8x>^DH`GUg4Y`wPD%}tR~KOx(D5W?9-R1aSwHu z{<&C2CeaPpuM426)iJmV3IMU6iecZ+9|By^+~0!TI))9Ie+>)`xzE9)kZzWkg=9?a z5r+RAUI6+>_@j8r7JD6TzP65~pc~dfrUct2=5xoNz~a9yx`^MSY2JgblK+X7%7niJ zW@O`ixMg}B{R|0f%7r%tPQuU}y94V6thhJ$`>BsH(Z>wxqq~L9NU+Co!ynQ89-jFn zInyYox~Nz_7J4sU6|O|pS~N$T!a4TBzgB#U$o`G^P2w1i9+3F78}G<*QG2VSr>%s2cm(xHieY{$%Y;B?3N7R>#Qd9&q97a+ zu{A8N$Nej`w?uXbdQ+dH`oD|%;~PN)LqrZX7OW>WIUESK@jC|rjPhFuz>U-+3uNFc9@(%MOf0ka{UlGhu`#&IbrCc<`5Bv_FIUylHBXcY~%#%z%42M(xo(C-A_ zMp?Q5%xK(&KXg$qvgmg>jwCo1^I#GgUP)s_NpAUmXT zI~a)yS{Tp^1@$pTOEQ|o?=_J0tCd4#pL8t0U8WO%o>qY$XDska(J=I}|%O|X`V zQj@Vw&&rjoecD={#V<~EKF=qip87hhQP#ehBY0rqwl45q7^nt13JIzo)@F26_H#JM zK%y2M#=T#>B7Tb@I9-PO&h0q1*V{M|mjk?w;y5WmS${;hfq0tk=$Py1sF=s!{S0nt z75VMFa%gi9%Rv^kZ*f)Rvrm%qW6uss&fs4^!Xy|JaHilMh<_4rz6~3e7VZ_SagQ<^ z-2UB{vc$c}Ude+v4+a?|$-TV|UYvNj6^rt^;1~ry4X&__qp-ldhq1$bT;w)2U4A$8 zcakBh;e`kx;}XVc@VtZQfw&?ihp_SDGp)0Xh%l_`B%rlw|W9)P{KZ+FK_(3!PP60}{ zlqLrbn=(e}mSib-ZQ@os*uf5-((#G2fWN)o=UPrwe4-F!&RLh{u^$ycDPD=$$NPe;I! z2VwIp5WOglNs8kdQGSrrpS?6ag-DLu89MoDXk?I-LPT%PyyX0Hw_HPx&i;4u=%i1d z){YaCP9Wd8fNdeGi6sEi55c?(lmp)^0W7m9K4}mf2TcsXhZq3LYzM2 z^;1A7e)C4_N0uOd#9|Tv6qxS?W>T>N;(}YXFRxeo)Tz_2vAJ;@08*~DN&s`%_4tL0 z$wGZB5l_X>NTJ`LO26cY!ud#7V8Hdok*7 z#S3NiozNZlB{=m2hHQoaBm;?|sYnR>DBExrMFp^)?~PBU+~C{Mq%q5Gw{$8jyw~tf za-5U@63${>d4au-eep>sfg28}6ER0u{9P7)hcbjjhIh0b^RXqR7_)A*t7#6Qi?UWu ztje==A-A{eZk%kWM=^Cz!*&wcu^9zy%5_OC4t|0!aKh1HuvZW*+Z%_$J*ShuH3PUx zF0-9{Hm&R8YocIv#IIZ2)?TpsS(H(-Ee$+==#&N@KXghja|1b)#9gf-wpB!O&=|By z#%fwTaCW9T=l*nr@reI|8Eg5tb;1P7BNORp!MYDruhoHTq#SCkD9;xBZ3oq7l0;VAHoyXHHJ1O~Il9pMW)#ri*t{ zcd7R9=r2$c6hXcGXB65Gy$^ms@VF5;Fd)Qt=i#R+Q4h<;5Ln6soDRcnWq|{_MqR*V zAG{nUMG|ZG^SeK$f#Cd)$B4(`HlI8Jr*(r#o z-$wMGFtXF+!~Hgyo-t7K>#aCkrYJjTHE_67+4N zO>*+-;jcYMoB{NHB&_opBt-{~;}VxtJ612y751whejB3g$PwU|?B?&&k6S7eFtJbh z(S=Sv89f9?+J~9&0v2m5Y`o_r)hB+yW>TB~f|%&ZAKGC*X~qn#44PY8@dg+ATd+D< z-&=&;(jw*(5HH(F`QYAdk2hG1t+-u~bVCQg@Q|Mg-+dG~eZvV<+)ipq85)2ItEpPl zPDH{#+D^OzE_S*x8M8Tue+O}<$OUT$_Ey~ghx!V0+&}i?MB+{=9$J^2RU-fh-AW^_ zqEyqibJ(H8hkZNUv7w}Hr%O4AGh{y^aB-0-j#6$BJ=??I2IosXD!|AIYQxu#!bV@Z~^pTm+5L{lyOfps0h`h8X_=eQ$k%Xg47)45eN54LUcNO=J(w zCkCvz*T0JuQE+~|6nMdTh5EPfGb*MU6Pytt8Hc9^M@d<2(3zCt0YoW&hXGHnj@^o;c%l;Afz?&3qUoHokO{Te) z_mU^3#m8sUk19e-mGGsxS04uEK#@4YwNIS7CmR>IIHid-dhinvj&QUW%t4LdvT}91?jhlol4~w+bs;#HCVzIRqD&_vllvJCOlJTwjl{%!1b44-o;&??JN;d2lG_O#l@0PzuTUe}!~$6m|GjzE@tJeu ztz$Dc=UG210FyhbA(Q9N4jnGFYKCAenJ5iC+_4Yaq7s@WiWxQR7a)JEWY;Dhyq@Y3 zO;_^Y)3{VN24^xkfiHW%7@TOD!WZ4r$^ zXhTrsEMpjj(j7~WIx?anJ<8HuL;U0~9}EqwN)ItPiew1VH*OYCH|eUv{#exFWZ%>z z?TB0~2~1(0)hk&NCZ8*Pz6q>98%9=f!vSeV`mc7_iG<-94wo9bknjgG40eT!p{rteenVg0TtnynT?Xdo>}+F;i9YUfOnSFh4}~%vfX^9hVI*a zn!q>yp)0ZO+~zTHVGPND&*DKOFwVi zhuFkmkZYqg!p0>6A0UIn@iH^e@v=dYu^Cf?K4LT`H|l2mh>Eh%VaR|^A}P5uIy%`T ziJ+lcHW-%iX~1vrk13Kdn4G_sgG=LDbqr!)@fXHoGbFkSLq|(X;?Y%(@HzVet8&7l zX|1)O(F{zoN$LsJsGGOYd5y+*M^{aYcNE4mMRhw2=_#YvbB;y=RxqZnyC=KGJ*z(a zil&=sZ15|C)9TG61rZyh>}mQD4D~G9wx`QlD<^S}ylZ4B$kYt?;eo|by}cbEPbb@f zmAsPlrLUH@&JOis)(He@7>6p^_KgL?vlGU`vK&YQ`98MNptlNAi)e8MT)Q)`xnf#ym^D&Q)?x?}gKhb>pjWil24Ac{OK`_x4fef)mq~=% z_!<~ltRtNVFqJ5gSJ)Qt#3Lov=po!~lLI-#{7zN>2=IZcCkFM^O?()}6>=!p#(#8$ zMD{_SHuuKOi<#mV&r*+cvwjvFtO(U&x2`YwkX)NNvMLwTTVF3&O1Sq65571t4Ds)k zuGoRt&HG{p_Ig&Vkfm^-_vTVL#pl)C;n`G~6K{*f4_tKXk9g0u->>m(sz8iO+W<$S zi*3S@-WWUZ!Odq#K4;zJ0r}1+ZLXcx*O@D{h;$-$;Q5n5jvad`( zdqtLqT$wzX;Cw4E|56hB19O+Z;lH)O)1;9_T=-X|?{oyN;eZ?J2wW`^Fslv8Yi`o* zl=iNdwkA=oolMDAaBfTBD)>OoovM`YSo9iHZLbcWx-u9#HF&i(Z9RtB#kGahk~fAbP{ zhG$#gs*pPF7kL~?_#S1xr#&Ew6f?^xSlTUj<7*sv1)JhoH4VT^i%`%qRe81rulBcL z2zOec9=W{u_Y3K7`4xqpCh_NLMV56=V`*fDbWWQuV;A2x0kGyqO6YlJ{d&$%R!sVz zi7ZjiKcV{%2YA}}x}zZjOdF3?+L_}8C;}**(25C2v*!|BpSUk@*^6l`U>3 zus$`g)S5Y=C2#m)xG&`^3vYcawx+m>#h!~BC{~74jzHBTpdMiY{&2qmEBP>UDf7i2 znBiG3UBgeMm9N_RTEknxT+;^4XsVi7?(q_cA2`om4T%#fm$iG z+>|;p6A77e{{VJBqFj3D>{#i#pfV>?DAOr2G8VncA?|5w;RwW{OW8;9RKjr1w`Nwh zeUKY3hHpA^LNfmxS)QooRgd>(VKK@lheHJ84+KQaN~gTMq|pe#Mxs$Lxb(|ydwqUcP|HdN=D)@|(gHo*-Phoqy z3~Y+lYRLbEXVq_o@f(;AS<(}WUM&(cKq{{x?#NACQD7q#D^M5j%a0CTln<|>4rHAh z9$G$auBUN1!=0Em_d-E0oT%{KTU+VRTUqb6aZRdL=1}$GeRqo5Lk{%g>Sew=i}c#5 zD{aM;P*-Bw{6t_0ODPcudsY`qdTC}uo-a7TAFT7NY6hhK1xq4RY2s)r5C#=FyJSIX ztPPtwquzRuK6LvQ%$0OFqL`bU;mjGBBu8x`i7zl0W-gwUrp>PkiS2%0lr+ zUY2>DY?0Op@bc~xrwtSEAVJHtSwtFeyA@mmZTq-hiit|5iL=YIZB{1!CF+v#FNa1vo^3btR zK-fR6z_aRI&c^hDv5{?k;pOo^U%LZUxY(ce%3V0@YG|847t(_p+NMZXh9+Ec`A6~s zAt`s+f`V{S+5IBN7rwFK*-C!lxH%$MAosxqPH0`}tLUNLB2Muy8(&vwRmg%U3#l`@ zvZxv1kTO!FOT`!Gpcg%rum5GRe6dI=~p(lT(2vi{Og;I+p^p}Kdqw| zp_82G>qT6d&vPVZ5y(iX(|NUfXhD<{@6Vnmk@9hBEA;$`jlg12!_G#ziL#TrBq`sL zrbJ|(g*pTrmU}2vMTI5s!gdsmA zqlz&Aq-(86v2|&sRrq7yg7HFvi{ga+SPWV~P_*unmFC>(M5q~xSjj|nF82|vgI`=8 z92dF4swqM5{c7vdvHrH@m-}~zYh&AG)^bliKPP948)FmIFtb*6CfqL-bWi%s-=M|d_9CibjuSr}fo%eqtF4F)nvxO zP3Z@$(uPQ1D3B@Gpn=ow42+FEJ43pyXIvq(3qVM{v$BnwyX#mg(g0J9h&KrGEZr88aFk8 zro9{uu%VbO@W!_2uJrd{ivinz>4Ek10I(HfcbZ;|l56VM0Vmdsp=HFP6^<}ls%u|^ zDA?ry++?&{20QE(g0iK7ij~|C@TeLn^fj~sSuDEv;u0aJia_@w5Cs!m*qITXRc)b8 zz0xWS#zOWLx@rIYrVfsVRgJPcECkpDcYg@Z`U94Q+RW(per&w^l%}U(gfZkx4IwZG9YWj*hZwr+BvIpV0IM zyTMLO?#v@_czJdGlL zU=l?Mfs4XrB!K89GI3V0&AujoR$lAGtI1>P@KyIPRMUM8#?4_fMi!9Qj!TRhHPQPysq_iGKZ7Qu&4+VuZ6v$ zSpq+nKEM^QUi5Lm@j98Pdy`XgIe#Ez*Q7(>#U4v@;W)s>5TtIQSq=UTc$p0_Qw(yKl4gg*JQO=Zyk~-R1)ELgtW~RC zen2lj&yx*u{{d+y*&;ypLgWaH^-bg~?gjCKFvzDbi))k77t~%@a`9*vw*p5l*)W{F zX+E2`mfJhD$0pAGohb!-BXg6xAEX5X`sRvn7M6K#q!Rv7<{8PKjJ!}=rM{#9EGxkP zbiQcatM6q&m2}UtYJs5eyL+v>B=wCuLR`W!;SqTvT2~<4=zNV-0fyH!R-O7gac_VR z%w+Hd`jm)x)nhQ7Q3gP`z5aCgNfEC<^1@PPZhmsg;GB?7=T!|Pn&#K3>fWXAc3ThQ zpU9=L=u5b%Ld*sb!CrGwR&bZ_ht_LQRCt}AWoeJc+CwXtQx6C;%5Aks*WgShg5Bf| zi1Bf17weLd?pYQ(^b-5-ES)!_3nhC9>H7Z>0MVuw#%4hnwW2+ile3T#P!z-6v=G12 zA0;}xcVM{wfQ`mpKh{5WJ~pZjXFZ&{M4W2``{3ANT5D|N1VolB=cSs*FLf~Wh4IB} ziEuqj^ogTKj{EWJ)+5Ob*KIPwjmbz!GP-N+T79WzBE@KUY_rJEIM#Lqx*Xwgu`R_6 zrXzet!rGFM9O2<*?1TmODmNHIhz z@xQbc6WRT1$!gh5Z#_?1W|H3r!&4oy7~E))VPHR@M#2b%J1tiz*?m;qX|rq1j1bIF z!kl4JKy<`Kp&OgN979r9A*qAhz`Jj=plSfyqiQ#=u`NMq6Sl4y7sD<~1Rmga7@tEp zue54kOyBA{0*yf4Upqf~l=>N2QFFS7rZ>u*+bs7g)_o`crHv|*O(0TmVmr~&doO1g z&y#oROBjn+CP51g_3dy53t^`Um=eL3L|~2FCf28i>Ne@KhMekb?p>sWESgH6ZCY-4 z!oHZC1aiZu+pRI%d?L`o?O5093`m)o$OFkpi+#XldyrC8he&n_5|cKeYAFYV9Cj=~ z9ZL6-y2A`Mi zpb!o*=EpsEVPG3tT#0AZ?|EUN`a708aad*r#`(MIps#jY>{HPXtf>=b%1tg2c*L4o z;@_2suB-FN0eg28zj3WOkP(@FtqyByDBhO|ABCmdq5hgV9f3VLbwuo8Z`xy3Kaz>G zA`6{~tYF|-`NQqLZ8!`|n- z&D_KTpt)D1i%jU@Fvx>z<9(y8oVB;Q5uU*@Ls{xYfXT1Dgd(G)1|v@y-;xicp(Fo> zBqG#`SW2Z9CD?E#_T^hd?hfYIhq;O1W-C}^U0mi2_F^ZeC~~!K?3G70b{0s*s(^a5 z89@+QjhF+PmogN4_(r{O*8^*CH2XMvw>B+Qq!+ec&hE7^?QTT& z2$Y~hMGxWyov(N;>Fq=^RM8@J9@4HzstK@!s>CE0Dln5=?=S&)>2kT(z1dYEv&S5X z87R9)D+60Ik(Uf=QZIc^(iR=D2$J`>>72R%Y-HGM%;wY&03s7VnUpx0>{ajToYuva z@I=jgccL`4+3L{qJO?7$!gm+yLFo_(b&{7J%n2X)kI@0cQSDx^R1zThqPv zM1P5EOG2}~7(R^E1X>Z6kU23GLM`4L(2HS!StTcdf&44WSnSbbVp~>GnvlY*yLpil zMD=EW4YeFE>q{1lCy82~qx{kmPoroQ#s8`1kPFdHD#5_3AtdIl|v>B^)%fe755{P2v^Vl%5wtSDEHXe{Et+%X6N^k!P%89n+Oc+4=IMMHvY-$bK=D+yR;B+To$nEB z1<{~-k27$e^F{wehOMXWw^m#>O*WUtC7j&twJHqstN646yI6@#))p*WAbns3x>@?N zE>Qrd9uT}N&A8O5Mdgw2vX>8MENpMzix^w{h5VElP4R5&iXRw#>-V`x#-9};a*?dw z=<%LS3Bl!PLG*&DLaKbLn<9AUtE5kgHr)rYa_*Q~acG09KoW@jR?mcVoN zQequ-1hzWB4l~jVtl&%j;D*QotSrxCjMW|2Xr4gOvuOzTlSgeL^y&4`p3y+w6q7b^ zk_GWXX=2Oi%kFa_A1UYW=L6WxYo}$nHv9L#B!dN?=3y zTa@SPom%7EWyQ_S;I-M*(et0He@@y*ojySDzeqfT`bFARhAwhkS%4kzkFs#$f~q}@ zkIA$SZqP_taP^)ugL^>K650k1V7baMc>^1ZGtd*8;41Po2@lKC=O^Jfe#UTpecsxW zBg5p_MFKrpTQvf(#wGKP))RoGHDE!_*9)pfXB;H<>Zki6O0W+1B)w;Wd#vi$5?b`Z z3cj1rQWK%XJzAJUSkFS1$P$=zB!j^f!kkACvj=ncg2QCebq$<{INGq8?7|kGn9!m! zlvR;vx?W1nVcBe)&zp^V0jO@}<=M43+jP%z=OE7>u-arn;#Sfx+m~5-mHkUkESe!& zV3r<;{_xUU@+oyiin1G356dtfXwCBn_IOs`&f&y96U>cmd6XsO2+uTltrENzoy^iR zbB6h!)bc|#R%G{NRU7Gn3LB{=jPyZHQcJOjx{jdObU;pY$vV0jtIIh>xG+Z)Il=V* zaFG=R03i`%vM5X9fp7nc)|c=P{DBudt5%979X;LP1d2R~)6-PW9E#&Z%F}eV%qCXE zW=*t%ny_De3Tsj;Ept2UOD^d_I|#ynn1d=0^wo2RhM%vVLe>+u^B^>c((gf9@(1#x z=QFVT)$hnIX++rd%LbgcJBk3;VCOS(b~j^|8_DDL;VO@K<(THx_s~8IzQhtN@dxtb zt=Q;5bqMZwU(~K|Vzxf)5^}-Jm!=#eGOzp91yqPyHANvIxLs=TM=}1pCt73a4ISjX zM= zI?20}W#@a@az3g2a9{^bOt^r46sHl(_i`52EGt;C;X0H%vclA#z^}0X? zS{F20xdKRbuvWK5B>IvXJ~w+mJu`MY7t%4Ar{$I^B|R-S(<4e-L20@uPG$Kv1>)Ct z5O!TLH>{%M9aG}&Xi+9m91j$d zwYaEmyY=)278wekSIV&V*L6O1S>0pagKi!0#;+4G;i9H@sHvTbsAW)i^f%V>$|o|o z0)^dQVKF)0N;R$`GS{_bHWmXt_38~ma@x38?m->$uIZ=a4D}3I+jFk#u|BR>M~Js1IStA zT3CY*Ja_y$#XYIV(Xb^(!x%S6(~Z30c7*@XtD$E@jE3CY7TeN75O~arui+)OMXYS93wHFR(tWe1N>7fA6vm*HGikQOXt}fpAj4YP_E5IVrUdCC1DUo^XMue^jG*h*qQA{ zXM1jXh^Cf^pV@_G<4hHHoGxW5h4j{K$;#5zSXR~;9uSI56U!XR2x$u}syUsxeAO!R zbP22FLg3==|1e|G4v1-uY z!or;;7uF$3ePWp<7U+sGvhi>jAZU{Zi3P7^LUpn24-jA*BD8WmcO!uR>g+0F*v71f zrG5AB|H_!L(C5IyO1_g}4iDOFh6vyza<459LePS=uYSLnJ4SExMC%YIS@j`b?7V^A ziRv@1)HGPAy4s?hZ-toWiC_1EBeq?Oq~o#;B1Ah|BH9u!c%EFqU86U#V7;|KsjK1R z#J6wYCY+0;^M2YbRLAh*G=(oXp~oj?E|qk74tglI9sI>69eNX#q7@}xtZu^t;D zYRN%bLedO|gQC+Q4?j8EjF$%mn z9%X~FAVl#s`))7S*x!0;y z2y=6+Dblk&OJB2>M>e65G>qbUZiE-DCg^FLLPO*X?P5LM=m7 zMJEKu<0V0$z^^THc~%dToJK?x_=?ira4Rm8o6`oTsF8>e-cSSHgvbUcjWu2gyoo>^ zqK^jJ+7g!pIo4~-2Y9eE%Gju(aWvw?2)Vr`syf3LiX^KBN^}DkK#r*#*4J3NNr}J) zOKZiQ*?(V4Mo0xdTN7hS#DlBYqTh97HIiT%TJ6b=dt|e_iP2A0$(jqS_Xi3+Nulhb zyegn5gNKG*nwS^DQ;mF}kcXn3Ke8%36{dcqTMZ*S{*dg#{=}CkiN{_?7)qkkPXa}4 zc?c0S??WbqQm|G6$ifc6BqeB{8Xlw>x-Cd#olG z1xZMgTfdBjI?9n!NY0a>u#06{m=*C$Fq?PD*i6Tyao`ZKdn$CU%8+FVog`5Sr}YJc zR5~rOpLDN#C*t6M!|xeMgTKQJ-{JF z=q&pwLro*Q>_KqD{v?23;1c4MmZ)FHB@vpmAt(%9mm3+Jp0_S9e7z($+8g6<5xtEf zAaa3T7os|1K^I49Dss0GK$pgF9Vw*B>~5k(z9n4lBGGsCo$Xj7#P71HmQ8tF%uSHj z)3{$Yx&BJG10r21*4l^|Q1K(#ipNu%R8W~{DjQgFHk^u64@+LH$0kL0sOu?K-ufCo z5oLjfe>p@%v?CGiQ9+_kbM!jc60t%fCw{@Bm>WnS)kxN}BwjL|C3*avbtmi(^g1d4 z%MF>x6C`l!Cdatw&jmahHd9O!X}y3aB(03gc!PkIAYo^qEAvMU&!i+3gA(-4Rx--s z9lH<#q|_)CAgYEl&#P?Mg{kimU7si>01>GVsOVeyf2&WD_SYvL{R3wgqVb%VMu_&X zHW}z5Q~27tV1Flir6bg41?_$a`%Cvg64T|9fdyv^pd&&G7Ap@u^-nW7^aXN_r%4k& zg0K04k0Kq7Xk74#=n(5OtdU_OjbVY5wu>G3+%|m-9X3gon75Hy+PO-GdfI#hVRqS~ z)VFd>l|0G3X8YRBJ|zd)-d2)Edwmm{t*7Of>Wp@Ag65=p0;CP~DzV&8kGA6GyxQT! z@EjV0I73+VPlph1=7JwQt3T53bL72I)HTbs?TctZSzN9{p2p`1D~pTLyQgsz@A^tF zNLUVGerzcP-xatD0)`s4AL?nwu{JVT*kCYd0#EoS7SsvZKgW7n8bX+%9W2T7an(QM zj5-%N7t%d-N~?6I2Rl!=VN!qr|{6-)YcqHD62anCbyaG&b zY;io7d3ro)7`f~$uo3=Y?FFbN`o#6qLP=;;Py*{q_tl`@W^6sqhFvKsg4$k`_cL}I_J2fJF81r|I9cS|PlQZoLWROR*W#(vd{2qAOy`QtTm z*?-Bi>H)|aX3u!zaamQmRj76!-qd7A+n^fAU@V8)_Co!ER(c<;)fnYJw)p-|$G3#2 zIwx|D6}MRfvT9|uK0QOj2}Z{Tz?Y?GX7@)<25UF74~n^{+Vlf>_jxG^--Engkx9r6&k;~*dYHftBup56Y>`2U&z zEoc}!DWUBn*YG#w-|mE1aJCgVS23-Bxnv0*0RF6{ETnC3p|@GUTubO(odz6R+S;!~ z^J%qFqTwR{m93=|c$j&q^`;!**UeD?MbhNPe9BNIM3(L=*B_9kl3oIB3ydA<$BmWj z#8w5=)cY^6(Ap7Qe{dP*1=XkLU@#^*mh>5%p6*CCjVDoj*+Jy-%M0pV2_2QrO%zN- zu_%6E5dI}LO0%uz7U16U;Eze3crYgan;P}|D*m@T_yhyd^57%Y%V7SNsK)+1Eb$Vd9)rB7{%A>n5K8?rd*$gl(`zkKv|>a#ajo3Od;31 z2)5PkUO~#d?QeOB#*+l73Ek%YLg!Lwa+|q!5t!7Y@rUzsu;$VK`7ocBHX~qdm9t;w z){^AHIUERcs%UN(+l_CU+YHhD`?szFtg@3KdZiDDm<-WOyUeX)$@21S0IkDuGNga4 zCOwdbUO3TfVcB$+%hFk}SsQi9nXg(d0^RChBR|tz&L$aXBrC0%CB9o-@wIYva`-mt z&?{((hHg@djX%4FA#^14*jY^iyo6TWOKi;JJ>u=u`h>g=v2=)Ex5;zY1Mr1lwd?-+ zugLc#EnyTTWtwxDUDHUR+bc#xlQZ|Potu%>N;V1fLK!{(lUv7;HnXuv|ChF?;XBE! z*BRQL+)Lw{^q+}q5`Km=hmgFiCIO(cJ-$`_*ywZIDCCpU=>0EQ22xKwE_Z%b&tfDtEd`{T%o^n`N&D?IQ>?~ zUTFX&Ey(C&NJcL}%Bd{Z-*sDgXJyo%4ENP8=S^UMu@OA=Rrms{%z;*nM0py81QXXv zqI?|C&6ZADNtsQ~cK^hD&s}mLu>0&;^}0?YoifU-`C66Y%4?YAO#%o@tBoc%%6oEa zH~-}l6XZp%C~hxeq;BL%bg*66`w4hVqt-Xbl_%${MU zR~9FlacQ zk|qegGE*kAQHIjM%S=h2m7T4ErP=Icimp|^dRw|LYr}3!caE6==6=F0Q8yQ>GVoc= zv@`2h3+zo)zx%#SP+5TKGn2J8wL?9}5zcxup{JF4Qa<#2@^$6twTkrHDjN)|1VLu> z61At*Ig(rl*lTn3_YTrJvyI%hP2jJQ)-mJ2QuYFccH*@(H92()XC2v!g&fsw9Z)Yk z1RyY$JoY{ci5%qIieEyPdVOY|1FH?9v}{d7N&}yzN~&oso<&7hxzGK|CX}I|_&D1gg>^{1 zxKWq$ORCG(fk{Z{Sk(t{I}iP@Bk*siu@y$>Q>@-|tPsy%E5!bke}%Ts+3C5bT?xN7 zwp|~mJEjyL>j+=b_)g?<>t1cAYEn*!+sWGB=}t|xjcnefi@4Mq{f_8Y{;k^9+(uh4*U523sa&xaA4Z*8wmiozJO{*GVTIm#P z$(?F2wc~V(mJK%#;n2%S9>-c zySbHA{#|v|bSWo1v*F7R_>LYUsjRogbjQAmMJ|YcG&+4&!$)j~p1qr&lD_|~Kz18cAnQykXdDg1rFk*YTkb8u$)SH#1`~oH3)g47+3#n2vZW2p<(PNoT3Y$e+Xpu3E-IVeH?q%Lr3O zLbrozSfc78vmC^2i7{SOrT%?6b!&@CnBhe?T3a=(mImp-*fJCcPf0#h$lO;)*AT4j zhpIKp`(H1r&n8w*DvUoS^BR|TGDC6M!&=RKgcRAedU@*fp9_`O)EN_r_bMF2`#WJy zb4hb!(hr-sKa&gXKv!@#&Z94rvQFSkZmjv%)`nE6w58queq_4|?ucDWp_#t)~2 z^@!nLb^7gqN%w@))^Axd44|K%#2xwB*0e~Dx%isME8U^CP0rCSX7o^J-2$mz(75H) za5+KM8&osG8X|Q1DPsQn@>DmIn_na9t#J*L|M*Al<-g-hVZ8KsHXS`ny$WYr zV*+%fiHRM+d9$YOh#gMT7^6LpT2Nozx8s}FQ9y2ZIDiVRKT3V?2b6E@YwMUCJ7$=g zL5xT?zYo1jeSrP5!!3V_Y3j!l;cRFy&JI6z%qvY7tj^MR)E|h|HjX%LjWglvi)@^< zAEcAf5Xfejtm?DrF>JOg_T8i49%Rxdn?^0d<&wr}>Te8($tiF_`?AN=^wptkfia0K{RZI&q34W3FW@Tk|0Ap(tFx5-S7oNv9E6de4rI)!v3 zJF7pyYXaO^Q)2hg4R)QG(37##*`Z$kirTfsZ9bkCJ7Mki#0Sh)2OHYHM|F+`7t3AYFlwITsatOXc9M(41j4SRrs%okrSO5c=Py<-Irs!wj@>meb5T3s-s zuvvvbO`dOOI@kB2^@ci4pobZ3J?+#xe93aK1VSe0QA$gnVKyd9`w&x?P$b&Ao$8t| z0ktuF-KlCNPp9hqy-_d8b7XBQUKzjcQDMJ{+2wU&GUP3F%M~16;kFyg%YpTlQv~WB z?F>92oW!i{Wnl&9iMek`P?^y6_D;|^9Vq3(0nIk+EXF{d> z7R_nF?`>dR4Mr4(!X188?OBKg8Pgo(en1UyS^69G7UgsXUb>x`+21y4n&_3t#xx&C zGkJCwr--F<>ElnN#1~+8!^L7XbWSNQdV_M*6fiM?>{petNZM8T19FhS;1>qiOIynV zUUqgbV(0tcI&nw*!`$J>7zPW>N8a!@jADzm>M6x_(!T!Y=&dr}2qnxFBi9B%PYBV< zMN5D-#dskINfjvUtUFu-Ca?F=;Z~XRKzTGDqS@z8*Ce4VeL1M^?`Th~S|O+dN#eZNa|PWbcZ8S8BFL^NbvjL^ zIox%bab*D)!f><<$!dEJv9R9G0^i#|!XgQ>S#7wNb&D9EZ2syFwm5r+MfRX}Vy^)k zzSzFc6+`% zx@0M_thana*4GAR1!>vlT)!cAl-y>GvjFdIH5kV_IOtW~Il$dNlPN|w9+h&ZOyuio zO7|HHxKmZ+x19BiQQPq822TSaIrAU7NYFWsrNpj!RdRk#PDtI$q37}=QgshZg;sy= zEM)KMP{>}0BU-J_q|w@9Eb1BVcuq}iNBjZMUyg|Q!R^R*cFn@``-E}0R1LU=j}^Yq zPRdrTmmJdh)+=mXC36`q4(B*L@q7Mhd{x&T^)zlE+d197B*5$w#LfJ*r7b&2`65@hkPY&X*JT)saKV z!0$)?q$-(bc2~zBKYr3X-x>jtrkWps4F8D!yeg z(;Q=|;R0i2P`n>}e+D$Sz*tUtxA7M5DOogZo}df-w0yBveMQrREL9-leqO(JRTeEv z2HfhGEA+W=tT7qScu!p|XO}=ht+PWt`zuYd@OOmW>VW7p8$;;j+DAd8T=HLK@}EV{ zInZ9x#dhR(nB4wX!rzuo(2WREie5CAs?<)fPCQzG@S9{m)nu3H8%NDSQlo7f4%#y_ ze2#WpfGInzFlb~kI2vTtL2(2J9ZnP?*E|A9IN%=3+;lNE8Qk|pimKGV1T6>L>#htJ zHMZVX__(kN!pA+XZ7v>7tw)J+MZ3DsBx{Pl#AtdNlN6@c5qEgq=eZnBie#ghQd}Zu zfrCPtM-p=i*IIV5DaBJn`jfK=3x%H<0FWQxSi}!7FXrc3D^SAE^+Lj}^HX6VPfAFtm((eEG^DTV)dvBc-Ue<7^M&j=LjZQa@_gk)QICPm#|5F_{U&2BShpy!} zT-k7Fv3%draA*m?>EAXSx}D#fZ)`ZUQo>6b4*ghuFK;+>ulyD?99qk7*xPXEb@`s$ zaOh2bZ}lH>pmEJPyeq%PsLQxTc8RQS|HdpQ-2Sbne*?o)7DP&YGQfDUT+ak6{Jfl* zwbg8?Pc5i8K}hS_3LJYPvugxQ33#5PK~-8G{Cwm zx|<(^RWJx^qAG|IqGa~eG2Va<4C}r`u-_gaf)4k@%u9KH7 zauN%nWaCm3u15e*%nY}yi9Z8LoiA+iUFuDmo<2@wUy%4T$tCsCq)rBQsgEs<8X*=) z#_eP@4N=_}O9Qhv7a`4x+dy4_4MGh4Z8@Lx$aO)B_N@MxIZFR$kkO>ORJ+KV6Ot2{ z2;tnso7^9JN%dVF+KXtix{OyXn|5+J?IE)Pf0pd2p)cdn=CC&lu0-UMwxpjUn6XHn<^=c!i6JTh={=o9C&$p6UjVk1Y5l$So}TxdPI zaLEOeW2`ZmXlM*#8ZmJmX}Z|ixo%%DQ)dJOwer>nh&$D!d!DAiaHddP%WZjE_Ek#K^e$5&!>?{)L|K;{uETS4mvwSxQFfZwR7JW8wUq#ZOX(v zK*Ogxi{8w`AUc=Qjt0d9bKu9B(N(RV(hA*8t3_(uCU()Ac0`736O-xbVetbwkwM$U zW_pd80&Ef70bmcDS)*p^c33iDIqxx-mI96RFk}@%>ZaaIX6nkp>|DJ>JOFt4S@wxd z9BEgNn{~1og3>}| zL`GdoFzR#n6RcHgVOn78c#n+{zRh~p7{R^~h=_x%IDsf~NZGq7)S$q4yM=xA7mM`) z{9*W6F$bfk$aFj!$`Ft~PV6$&{WE=(gnhX{57S^1Mnp8vdL=y`Pf)N)-sUWoK6~b} zQzhjtlhQf!w$D&B@kr2C9Tbrub1uJ=42vMRakRNjro3+AfcC8|HSMEG^~d?^y>(vu zJg62-)a@uZ4A<#8#M5{Zb2ELaustG$B0k(_9g-owjG|OI^@$rLS!e?xq)E48`~P=w zTA@i$tO(gN#*i(E5I;*RQ>SOWxemz%uv3-%PLI@1hIy|xPt%A9vY5wg{E48jehSym zr<3&=Iemb?lG8-;6bW+H(;@Yh6cKg#qJ94Q{N)S9jZnNE-@$Y6`or;b1qH%SK5vqW z>bK=%wR5pS#G=GMRfN?JBE5VikybZm>C^g&6AL!nedf7~}$5tb@`D${%VQeIfy#Gmj4=wpCs|8 zk$+KUR<>}!m%}WD)6J|~L)Ci2@pmmRFb$n0Jv}Yk!ndXgqDpOI{vKJz*01a`uK90e zeE4k}68D%g#?a11Ik1lnK&k$=Y#F1a4BZ7w1DorQyGD@LgOs7_$X`y#^1*(H({*_g zOK-Rfr$$S=jwtiAY?(Xn`Y&Z(EM=B_Lz%EfgjV8BMY*>#Jshc4041TkqKal8V5oYD zH?@{1<2q4iyUClHX6Itgw=3UXAV1NB)CV8K&bA+ zN&Ou4M2n!%PUY9xC(@LEay}EJu-uM0#T4A3UME6k7Yc2uA9AQQc)}EOot=2^x1<$P z%x~;s%Iui8bqo=!?TC+wpqd0^##BLnafh+&Jl5Uk_Ku<*p0X}7>hx=feYKBr z%tmoI#!XCm@qYy8s2SIh;g?^}kfY8eCheC}vvZ!d-M5eAHEp@o zad-=P9^h%^as9*LE#dk3KONp*^ZbEl8_zzTFM0C*MH-%CcrN0(nCBLr$9R6rvx(<< zp0{~c^*X#y@%)*mmuKT=9V6vxw*a(8h1kj+;rpi*Lo#%hShmJ?;1*zb!lu z^E}IQE@jN-nZf&qP4IbheI&8T6sG~jJ5yu>x zf85AX1;?LoV&O?Ak1jgp)G@`Uoqk5incwn_J?qtGxJ<=`(_M%%w9!vu0QICzF>sM|}M+KB`Mw4Lz`` z79vfDdJRgeu+ube^1t%b5J^uqyEu|!{igI)?#3r#o3jrwD*tF0sSDixEAql;PKtNB z{k!W@SY*a=IMkb9f&ay@vjfw`-<>^MJ{`A)?}ZbJ(}K{X0EPkAp_!#&5`t z^l(@iv7PFicla^lNIMC=QEs^WKFF`lNVkPn)JlS|ef4dVI<{>qCE_d-jmYD;I$5iY zQqx{6^7>xHv8DA!>Nyga8&hoabCTMW7|su^AF75;CzBTTs7O5~3GZ7^5>-qsqOz(l zTGo0A^L-valmid)i_&+v=$>ecq_u~P)ChjswqKILs^)ujf48GL(sOCmaw^DzV=rBL zQCb73~%LzNm&8ld_wp+G%G!P-_jt&Lwu zC3gw$MbsF3&|2tFKhj|`z`icgYHH_h56z*@l~^FRP;4$Nz{2uDQU*wAL<_Onr$b70 zh~$kpGdg7GdB6t|9wAeqhOGN@kHE-u?LwlNJ^r2c?C6LdtNuAb?%cf)PCLT+c;!fs z5dE!i&P4SZF@yr87xf!5es^ZYE`)}axy7Y^avCHd+POZb)_SEab=;|4*eXJ`xh<8S zechePzO|)tp;R)}ow(F%QxRuDFOzlC zr%t85hN$Zz21=@}eJUq1(R#lvecY*Uc{aUMWlMVzkZ%W|g8lyPwEaPNuDtGq+=YRm zOW%ift^Av(_|S)ZwIYr(MGX$wS9VA=&77jcZ*)PeC20fcYi7s?Ut%uoo(!cAwY7_ zI7`fI61Iiy+VC{06kv@oz-pGL#OfCQ3&^rEc%k{$Y!?azq7G%awJLLgK?X-R(7X;+ z&yFj*GOr7oMN&x}H*Gs%f-a?6tJ3Yk5P7p++%Zh^0yHDm843o`>#qUi><@BOY+W--3T8 zt?rxGF~mVCEa|$dYSo(YT4Kf)$FhavAO*Xx7y4waTJrVy93d6EuNR_btqR%kQ;X$H zlUZLVlJQy;F|+;&5KOJAKb2Y|F0PuLs%B9pQ>FIGD!JnF^f}h0#oT_N%j#SRg6={pE4!+}}gR_>)FMp8R0L^LBds8zW3<{;gmi*<(Ce*|4*0`BtrgoX=BVJC#p z|8Fuw7JL~cCme;WUL|-v;I0U%7w8pp!v9|Qj##vtz@7*b0qpf!8mAh9z0x3djc9`h zWlD@ZlPQsR@>H8l73iz`AY1$CNs|!!VMbhWP)FX$M@_XHMtl)7<9rXBD((4!Y0rZ+ zq9d<>%}Bt4+7Te*>WC&1A`h$`!9!ZC-HedwoE{Ocjw*>dL1pg0KJfOx~GjZUh#}k!S8B5>JiQp^z z0t+dzM^#acHN<*Z8+@o!C3dYwu&bxAsuVW^z1Gy?#DYDE1*&C1Ps@UTh}r%Hd##uh zD=ZLOq*l)_>p&Htou(dU%GaukkO`XyD%|654R%g?ZH-&JcOL{5Cgt-kUIBA4w2nM z^4aA>=2;?q5IC&eo+o!(U7jbqoV$_E`O@ooxHT&b#tOKST63#vB11Y>T+6G2W0}Sd z7swKl)$r`?Y?9q!53gdig;GTS8y_Y^0U~~%e?B_q?UQ{5QGvq0| z>W=mY`|1bzutk;YYjbwXG=6M}URLi?b;E8E(#&^=MLD;+=wwDzXyjF_=AZn9R+*N> zXo;LC=G;NiQ_Zo+*B;XSKf6wFqTA|4cvf%v4{GXoSX>6X)jv+kb2vLRKDttRY04W% zdBR7uMeW9FVQ9P9Ho;wQQxWsOQ(b$T05v)&-jzwu;QRafyM7Q?w)6xWEs2P2`fStv z*VHe5n60KtsOtZ7BA)ag>Grlde?muhQFwU0_T##9mH$jaYNtN#&6N5$E9IJJKjJ>Fi-uc&Y-2x2AxAFeAZvP3J??$qCmU4KweprKcW9d8Xby#>8n)mZ0u+EF|A#qj9$qKNyKOHKRq~M z$!{_q;(wVpTv(1a9y$~GnWyLT%dO<;x%|#nySqh<3t5W8a;IpPyFiMcp`=|4Mtv{Q zEJ+iqC8HY4EVfpg<13C7Y15-j4qy;}Ox7yUa6z{$#G-0PvoZnjaPrmsH}zK3v=G{u zm{vz>1#v=RFf;Y=8@dFU2`kymRtED|c9*s`z5`xwY(rWdxi0F-+)AqBUi*9yf?{6Z z>M0cN@AAYK3npluz!xje+E&4fuWOc?J&s+!&pFR?*K|q1@uf4QF6<9HPXY&{;359& z*4!rzH?@31Emrd!N?DYP*3Br#JSL+%@sNbH%r8DRJ=)(+7gx)7`dH(CKK__|ITFo? zc+(d7AkjsZ{w_Bz>Wx1<&mu?NQ4nMXPi8zZSd$)(b@oa69dfEpX?c_)BwdQF;c{6a zFAH3*lPRtBH9*p`QnrPuMV)$1{}dS|uYl=Cw~+a$eo^&N^hc}vcp6`%&jNZbqXkkb z3j;Y~Y)UN#Dd)qg+DQVzl)tnSzGp@V$P}pqf8mtTA_?B{G`>V{V+bvEHtQ1#U*Tib zKX%bXWPqAwWKy?~RO8J_{eAf5519TBNxRuqoa#NcOY6h|jsmO4NoTa1z)R$n&ipDu zXC_$9F#)LtPkjz7AH8a1!CyB@&m0Y-M6(8opIR&fojPg&g~4ST4Pn&QZ_|U_sRs$_ zqa(F}f6~Mb0kcT-z@!E;h1S5{UrFzEZ!ptmCq3^gnb6pS7|^(|yR%tV0ewdX(OwY) z>y2;I(cwv^SuK5bvDrC(1N{|hMIqD*dsbB>G?2~YFjGu@x^w`jS*?j?5sLv{kJRfO zSk`j^2W~@Hm|CQgqscI{7#91OW^qEZ5Myd9r?|e=Ud!Ne&659W2y;wt+H9ahtSSVsG1!CxN zg_y?icSl_QXT&g0_)@vbxUGBTqgHj^%m)0hBuVIK%%HcUBc(GT(42Ti=k5p}le|kZ zSR)eW)T*D52{flO^zSMndxGMH;Hz4Hz=ffKX2DwMuh@EtZC{!R!{EBql{eD9BXC(a z2WESWu&TpF{N;#jsG5G0*(60}Hc8<|vsKp0g+js}47tfhBUU@pZT&tjS&n4$E|P{= zSYzRm7)9F_nQ}uVkBpiW1!_v@MpDU|2lV{&G~U1%C7Z_*9d|rnxteyM7E4fko1DTN zosKU4*A3ToO`)!I*kBz{)i4o_c}-w*rReleHb{sQ(yU}Z3aURE6cqn1OH6ZXU^1zQ z{gtsiY&YMRFUlDs<$$DZB=o@zbi*vIQ&><^)1w3>IUzUqN>{ReL<4R=);DKyOM&WT zYn=UBGUG22eP^q$DH9!KZ;KULDxs370v)B+UJC)dZ<<`GTUieL43qtN!NIf-pCi%J zO{uC%YF@2nMBit2gB3c|8k7EQCbHbR2)PaP7vCoH2UEB|25Ow14ylho3=CdVjDYm5 zalO4e#BizLLp7LH$;!@KG$egW|8k$UUk4T*vD}Ydlxv1n7xbO}#Eg7_1s@?N)jW}Xv3o2&(lm6jo`hiOgCJ&W!R!2rt*QF^NX%jog5l4jd;&Q=L_1xshNoar|)W`jS;{>a6LBXtSZiM|7ra;DWjYj&+# z!S2YIo`_F0O1CLCQ)p1yB@^v4-jWYV#hFrd{z#FgpOlZV;} z8G6~aIiz$%bk^(1s^$sm+@?1}7B;fJW*5{zm7_^wwVX=~n%3IP&&yDn5frKdO?U;= z!(5oRfb+S=VuNc1rS%T!Yg++@;vw*>`ZJTwMZAM7$_thkCRd9| zp|ax>W!MsI8Bz97KA+)1YTL3*rtG2hoMpqOls&Xrevh|SKgVyfc?19buKJ1dXAI@Bndd4<-1LweX3aM#o#pEe9w z`U0+|R((VtWvm88T!=d-8#a?|t@?AVWE1ddsjw2c-b7u-USUq;n%MR(DLrx-2v>F= zTx+5UlL=o^n_SSN7P1v2Bkw9V*AHxgk~Qr6mi-asMiAt0~U zK}UKiqmAAC2sQaTBgOuQ9_0=6Iionwzj__-;l+dx{2m#?B{c-tD$z4c8pNSKzD-NVi>}9+{<>mUbWD}4 zII9m)wQ3fXR?vZ2Cy9feIs^~?e)$z-6!0A|n>#iIR3V&Zo4)KR=8&?_|6Zi{`fl)y z`u(xoUlEEQjza#&;PBFYVhTE;FP-erTL0BtK{FM3@w=pZnfP7OzfAIBLExR5qC-*a z|8)c>o{8!IjrxBJ|JB0dsa}_8*&9Zvrb<0}!heLqR7B^*1!$7bh`6{~e5GKy5+_on@^SfN`_XQt!eL^4#-$=?-z((w1n}al3iN z74Z@Y9k`1TEaF|2$r(d4kcybKK_O#92G&>fPq?DX)>mI7H`1*3@>cGwo+qPy&Q2?O zka5_-cYmQmI74O+8L+x%pe&oKvlk2YINAQpq=IHxDqht-f>D%lmdmX5+|>yzaf0V| zgl|D(V4DCrzC2GTOX2GP&>AL>umyH3pM#e)LEPUf05^9<1Khx+!JX=_0DMAD_)Ph_ z)vdm|hY5B?9@_@rz3SY1`J9GuCqkly!zpZmtDnYKzfBw)`AzF;RRQgK+)>2TKV3J7 z>vXf;wW}CBz0IQj#Z`!7)5-K8?VOgtFne#g)3e&ow_a0*pbl1yxNAjm&Ba_1N{|*s z5K-8tPqQnD94F{JMx7#T?3ToM*l-wS5=kljqSni7`3ww^K2BaJw5+sV;@^{r#`&e! zv-($LT;!;!P)AFcp)+Xd4Y_%whXJsFyZ&bQK0nk1^>*c!{p2dC^_V2hMnrG zf0MdheeXH_^BK(eBLGy(E%E@OBFf2b!dWKyjDQ-59BmqOv!NETN2&RAnKB^y@?fbLquLig`nz8F<4x3$7e zoU_f}zI;A#`SE3B&WVwjL?couF0b-MSRmBM$2yojL8CI*lJq&~jTiTWj z*Vw~qc|a!ph~xrz8llW=mtYb!P7P|QCO71`E3MUnGp%O9nf|Wu2w$7nme6TtsY}k# zRS>Nat4>t!W!!7+BkS#T4`D7LdH=InW^%3&6fL`Kr`o=pn&qkpDuZ=%j<#5%1!_f_R@`xk zEbWsqQq|ALfuDLGh+9s`k2|%+no$zAlQ1&7vf+>`HLUX-_gB?0I=#CO)u@bHGcic_ z!_wBKeYcEYb9S$EPi%1)V1)YS&)`lUYj&END#HZUfCJY{S}4{PE4?lG$4{)N@V|WX zUfZyX*_m8b9Sz1_#gDI-!E)57W6RjB)!&CRpjp1QpxXu(#=^_lW%VZ8i>=yPHU3{@ zp)H$_(Szq%@gg(Z(5`~YFR=;uN;}12Ol#c6!6>vm2VT$ujOfK(+Z5DRAGBvQBY%oN0zfdSu2K~)4vh%aL+^DE%9 zo@YDH>pY+FH~_=n_#MaZcX=-1sp0uP&oUla#o8``5Qj_Ok<)boqAAx4Fs^V+y;i5} zBJZgix~S=$hK$x=Tk%dl8gH3{jJ_xS{S%nYE6(oAWG+0F8Q@v5v`A!hVjoV(5fO8& z|9Q(7c(Zs7^Kliat4Sd{a(iS5GTw9eD#eT(s=xmBTTU|QDc&lK&~ok8CnXlI+PksCW;Mjx3Sq@@=0mXYNgk|GdyHgl^T1hp=f-36<~^Zt8Bh|K%+!` ze(NO{C?&NUi+FbK3U8`izMxb-OOYMwQ-&eM1hwxpQ&JcAzlX{m5-C)DIBzGJ&4qvS zd*m2HDkT=c(;rdDc6s@uF-BOvu+puZ z`YVA}vus|ev!qpq;KRYAQypM~;0Pk5`H6gf$|vsy0_&kZ0#gT1CPQ6up}#Nc6Z-lq z(7$FB7y8~G2;r%6)FZSduUtS}Q1_A5o_bz#8ep2EImSkseotWP6={z#sffS4jtQkZ z{8Qa#{Ujw5s<-Vl3cYGOJ7a-}P*-VY)->oE34Nhf4_zUbBP|9g&0S(?dZ-Y$P5@TV zE@V(%o#Yb&Lo4qXEIo&^OIhH;;?@P1?l2r~xWyB>({ylJ2^UwWPgo(C%taFw2wdsx zgiVJ@CUt0zKD&K_Tl>_k6eDSe67!44@r;KHP{vcv`vjf}b?FCmb58MCEFb+P zd_w(6fR92;d~Md})|V^uT`eOfUK-htfnug(0X3JX<1S&euH~pyzQFBSb-J9HbVFG^ za<;t7LG+DOO*HHy=y?m|h@z87{Evv|cmU`S3TymCs5b_Hp{)3a3;J^EOiEA=Hty7D zT^1I!w~*GR0}fIDGlGmAYOfsmB3{EW$egdLI2c+(RPHf4Sp70b_AX6_5^b#x^=F`* zx=7kAX9PJ)q^{LX(61W`Wnk^YLu$H?kkd%&7ZPDO9INGehZC9+Cc6=1NsT6LLZ4sK zZ2+PQaH(!Eb?Pc|5`biDkKh<|i5`5H;7hVKt&-wD{7RspU(eAs$ubbvy|nl?mbA6n zSk(@?ovX#=0a$7m!6_fL0%l8#X0TtjOe{-{(yf+t<=IqGmiq8Sl53k+GY~UKy~-yO z(X;A@R7r!F9%wedr+Q{n3+7l-Ph}GXk4&)BBq&a;kpiPQh`@R7qi@rQ>rMyB70wqa0C4FwZoiM;v zKS~h2J!kEyqsE*}`u~T$caM*2x99zw^Vj)&4j)!#Kl`%weeJc^UVClT!^+fLkMZ+4UgrHv;W}a zZk3L`EESZ415Hc0!jz^zEFu7js4O?7=#vFbT;|W}kB$i9 z0mZ>U*iX*||DOpk{{AekZgExq0oMz-OqvwwagbbttkP=!D`UTq5LG35y(ktREe)lJ z>*FIx*m5%1_*lLdsc(_M#X2RbjCu7{BLRx^Rz`Z~8^28F6Y~+w)N2XhF%v}*jft0m zB=00rCNry;abPggfK8pTAAmBkLFS3ntS44DTuLJ?6T3lz2lO^*h)Bq@h!zv)1kp)c)$}6B(ZatDNXqx zt0rU_`?-z;+(Ns3=)mx70(yQIHE8K%;tOgrE>RW z2<2ZXuSmuY;1(()lvR2BU1*hBc~|}gXVfgaTk8-lXWdftz7dBe? zTuDS3Ah03#EBf_QrdX`=kSe#?jK;;{<&YA<9;y-;b`T)m59FMc7_kmxa|S*#U3 zB7@c1P{wm ziaJ2)k)?K;N+$;^v4=@#9Q+QRMR-c*{N32_T|O^WpTg82|C}JHmPi&W#b8CO9w)r( zT*gQjSX>)urY>IAZ9Vi)wF>jq?uf5ps7i3Gi0Fda?9NAI1-uBa=t?>9A+bW0#PI9@ z3{aAhlJlMuY6?i~*r#Vo!cLs=SHLfh*jxCip3IdmbZn)Z;_Q?F-br2gTY9v}!6`rO z6C?-C5&MOTCIPVr&Gg9~%W7FfSBh5?=j-aM>v8%`&eStVYSuzCq%4%6+AoPo#g$vY||ZTRXF~srk9IxW@;*MB@92P}y~#lZhM!jakOykI7hL zmM-C{_^!Ljo1#b+qK)~vhT}pS=?ERH!Uww|zwg6c;l}uzwkm(SjJCl- zWF6M-Pa9}k&<_tGxW zW{**@kC+z`GwSyk@pt$bEy?CO3(!a?|I5c1Hwa45vjmy#J6(JD5vYi^Nt9(`Z6G!~ zP;U|M*bW!HZ*~M4>MYC;vuBFEfbXfUc5wy~ds4hq*Xu2-NQqJ0*pKmJs20kwU5Pt2 zj+IA?qKw57)*xwxt5jd#Gy68F@$l)16AUeh(BxdvBQk#DxOiQSmym!SL;Hm6FIJxe z#_lV!f$#S=!H$3UnK>E$RzbwQe4HX3x5!wIk1$8LDm`Jw3i17`_$F)aG%{s`Z^p|! zVk+XM)B>dDSN;)I+qeT(CzO5^8u z$ss}|M@*b9z0pX;1`6VgbCf<8q^ z>^93`%msCPAB9dHHM#kYl_-*zT4_!N9wbnx&M!U%-`~`hEtPJaq;m*0Qrx|)8#`EN zNLy_*d`R?LNkhIuyzlym@7a8_PyIC2r^Sp>wS_8?!TOjgfyqk*QXx|%L>mxtb1G!M zg#4cYAq!I>izK8fRjzy)E#>mHQaP`by@IsKvSHf8vn23R0vl|#-mb;NwAIQd6Cd=C zByhM&sho$Cyr|E~OD+!tT`#jOh(7FqcpLx4raIPmFp;QN+m3xJdc-?%wK3#hY{s zke#`Xu>Eb^L5VI;`oMwp82iO13!fydKSP{qq9vBP#ZxN1s<)xklQ)KxL(z5tS7Sblbki*UYOANp-}EoL2Dw^`Xk3vfUdeB-JRbom zmz8Rz#EJPNwbUmlUy~G}R?e{me5v9LB0RcU;Z=EP95^0;{tME5{PtQEQrR$=g^2Zm zOC{>3tcHIsn12+L(Bo3}-Grt_!$$E~Ko|sFxt}92$+C&C_Y})kN+gvEmMu2UOd&C1 z5mH1~inA~i0cCu@43d*Xx6(t$s0~7LZX7XW^rJtWpBoF9ZJ&=9#&7yIt1)W)@2N&CB00t>;~%6|2UC`l}~X)BNO8M{Ii0-VXf_{S;- zNuWrkM2!tiMUtapsSv7~H8YQy!xw zp0wy7XynS7QpGg9Pz%PXhQnc*N@mD=_^HUyv^&XIwv}jlbY21ZYIo+xwoBAx_uNRh z8N#c@`7zlsrh>jr5Iqz*GT(J~0dA8nZWQv?F#toR83bKaLGuMeYQbI6(@Ej9v>>g2 zAsc(m@96d0Re9f|$5NbzM2h8oJt0RZ^0EgTo7l4hqHmGt$7v_&f0N{F5I?odJvxR) zZY4H>veKC&iM~n=(ZQ0N@iL`}Z3M?x{FlRX${?I%Vu&uX8|#*kUG(cwXC|YLlA_&i zm%{WKtua>rK4Ts~vD&Yv$xf#EfFVo*jQtzm7xb4)RJExHhGOT-$6R;A1&~%_-rLk? zJ<%J!6?rWYKS=K+#WY7RBII8fZ(-DorSW1h+^JEcJU$SrC9^;o(7*<55#N6|`hG>i zn?b3ofY|Rzr>|TmWBf^RN(%M$n4)??!5vKnsILwc5RiaSDnNbRrUGQ{#%4=^T1ytm z)P3EUEj9V%04uW6!n*h~)?x014WYSi;+#lyu%zY191VI`v2zq+w>Y085hKy?3(NSF zd`Jcf$Ej3n2}xZJ zXpwd8T!lfrmH8Qk`T_Z}s{rMkNoo`&84=dlr|)yUQk}lW-p7eDM33QzD97I5D>ZT- zkabrR{AP^y*6`5`@%!X(o>_AX(?AG+D$IwSi|SNR-o=Q-sxTb{NCtH%*`B5V>JmOw7-ywzx^! zqD~b~IRmKxA(Anl3Q*1~QUUc6FjfU9rS>&YOs#wC)>@wH@oMx82L;mN`kOHtN-@zugDHj;%aJiPau&TmN} z#k6hm?U!j%{U8K{%TsdCN=R?4~+=`C)s8T}tZ@iu@(>dQSSW_C?t%~MQ16ous04BESiE$6|! z180x1y6*&9fnB4m?yPL9+Xu`BJ_8)*TivS(yNus!fa$k=F0i`K0LB1U z0%br@fbpshfcsL)23!Ud0_izccP4NR5CG-@w*hwpKLfshk=5M@{2JH> zya~JyoB)PUhcaLRdELVAv*%jf<7uM>z@5N-z>~m>z^lMtfe(N)>8CKza5lfde&BJw zR|78q4+2N=%Q(mCE(gBF_k3U{_&*0SvnVfc8*UHrBDf#M-35%}`$ixSc$fbFCvXDD zk$C)$1@5Me9sq8m+>Zc%CH)7$XTWhFA3UW%0GI_V0Q|I7EpQj`IPg61XJ9`tm;MR^ z?ZEGV*MWUNCvXs0NSqG(_$iSac=Ef>Jhu#Q&t7ATyeH4g6=C4Vqb1T{Elp#@Tb`*3G-= z=I?xW{w)i>SO5KnTNnP|hyQ2MZHt$L!b_Lke#f16H8wRbZ`r=$N0HXHm3Oym9fP-T z*H=YX-?Qf4AOB?S_WSPt=|I#e_X7|9?B@^t*TcVfXaBJNxed>6d|~_cKmO^(mo~lJ*|oWQ%PT$GxA$({_UdbE@-DZ!R}?Te zfu8}t16}}%$1yg6UjU!;eH<8yI|KL@a5=D>`FsHQ7clcmtGfrkSBdu#Fck67 z0WXec+yHL_2Ji)7znb|9TndZ_%774QuLW0>a{U_ki1B<2{+ak)1X!+MP5?qnmf-&Y z@DgwYEc$MAatFc-KLSPJ|K z2orV$d_%8c4C8(QxDi-LdFp^=Km>RazbNsZ1zraZ0u!%degVsX`+z5bZeTa?36Md3 zuLHVB{~oXw*Z@3BzOMi~f%kx8jOkJ2f1I#yk**Z?bl^sy9+*VltN8sTa1d}55)b$` za4)a~zZJlvxSt0;1YQTe1k#x+=K+@k6M-o}C2%wFeP9~(xDiOrDg87{U6|_9leW6_ z0miy=a&j)r$-!cmj>)bZee7krSna|$M=Wy5tePMnr~UI5>(}ZNb<^)OlUzAdD|G&u zGplmIKbd7b0sXakmeX*nu77o^>1wVer<&lCf9>Ya|Nr;@Yb~I4B(9Dua9E6U-i5)u z$P!tAQdoCQ+dHUzC*ngYjl14~%|w~qZ*S{ddcL=R*|~Ze3gWId%sbUo290B|p>WN5 zT8};55}>ai&Zs{Krc}@mRgmAi$kF(!Y!)!6 zvqaSdYbct%2)&GKb{pB@!7oVuGlItR`)p#BAeU2*amFwIrW!EPYfqrxf>$<><7%sr z;!sU6W<_$=CHdHHgdcRwu%OXEx^msVNz530&N~Bq*3J`!e0hcEu53%FgiCh3CGf29 z^-Y=Ffl+rA#$lN4MNW@20^yb6lu^M?EXhq&W^)(R@CX{?r{oRaoU~}C5aygjc=P`j zA@9(7jBe^$Yxqwgq&{}7RFq8|T4@eHPOUUI^#nrWzz5#3RS{k0)_iNZbC!l|O9{oC z(pL=*t=z7av!SH8rZKCLiSXK9Th@8(+%n$ye6X7QU7@*12&4uX!6RG+)n zI9GHW@viTajb4zGDba*yPi9fR7KWqvx-?%ak=&;~+xhgEpBfJ_`yNnR#h~#K7Hn&4 z6MG`JtfgUB$%~KoNHOOVB}l;%Rju`F@Gxf68hT&BJGI^~Lir7Yp}_^aUtk7VjJ^CZ z<45bpR`#allZ{dLmKqycT~@(6)aAP`Ut(we#+o@wQ)#ls(%4}IH05S%{9dDIk?jsN;7Sb(_hBZoV3*#uMv@Z zZ?)WI`5oxbFFgNtd);iTrzEWjYkW_F6H6Si z|7PDR)}-2^(#2^tC(%TD2a}-b`e^yTNg_A3OwnSla>`axWyf8;k&(_p^rU#)V1||_ zd~TI@PQ>RPY+`DB(M-66+wl}C()(}FyY4BFeK|G<(zq5R2qWEtDr=NsLUftK({!)I ziVi1Mw47^xZfS+I(o(Z(ISBOhGJC)~#i8$NPS-0P7;wa@PudM;9zM4n+5v{ft+7|B zU!>n29<8TEx{jZ0t||6N%swObOBFiU)%uunq)C&OpKJ`8C0T6A@H#1hG@i<2fRE~d zTvEkrBmL=NzlbdR^b&it=^$5jpD2-AKh)u%Ugl_EE?~gW(Qs8_k?1tbdzxq9#FQ4N zOb6ZiaY>Q5p(LJhs#8=clr%I~UGY(mn$1w-!cpqoT3ypP9m0=F<=`6!5PlmIrIxww zJMQfYH5W~>H)nETv;bTCw!Ubw`-vw?pNMoiy;JOspCk$*Wsbo{9up2@7F-6Wapk@z zrYj4uPtoM?PQbVUdKq`xLla6Po1GYais{2{?R4r@4$b2rdh*Mu&2%taQ=e`=9f>l# z`Hmdza_ctK@~?EnKhuIv^c5W%77S-X?t&iCUetn_{MfZ%mY#9b<7w_*i!6g$fN1u| z#AC$~Aq?D@7|!f)CkD%3g1H9$s05?n9&mWMe;i^}VsQ@lb#oboi$^^1HeN+ITlZ(l zT`rayN6=XOiO?v%hv`f0ZC{4p=f+4ki>)jfda08DjH8I%o>QyB&d3(ez%_u^ou@Ko zGi8=EK`|K19vUu3ABm9$CPrpnzqQF(u#FpRom{C(`np}4wqjSXLN1khu#3lxuXKYs zxxhTSeodNNAO6Nq)7-YLw&CmLclcWMH>Cc~RDZ{*zaI7X(ESqU4fS`u`ny*B4XM8~ z)!%XIuSfkobf1c^{;pSl*Q&oE^>?QEH!5+)nV~-sw@0}TtyO8&-}UNmNQJIdZqL0E zdWag>hKH2TO!ar18EWGBvBIW&4k`Eg)e5KSR)5#3zcba}aq90Og?YWg@P_GDf7hzN zAr&X2+=o=0naVxRjANEZ{hg`)jx&8!9S_~3a#w%XtG^xhD_hH>Cc~RDZ{*zaI7Xkjn85{uXr7xBQmSxyo~#`PW3N+=o`Ff~mjj)!((I zk697r9;g0>)L)PKi}5?Rb$B~70&@h*^7^%=zGx`Tsvi|64-)l9Cl9hhXLOT- zaXV2Fv0y&aK6xGT{~?CSCoza-Ef&BKgetosLQ?;dw`G$c-SvWvP!g9Z-$sGZGbj zrX9DuFt!X2Nb7n}XwTgam!iEClD|!d8f{z|wQWvR91?Dz%3zt{$?DBX)<8UW@#4*X zEb~1WdEaK++|@rwtvCC5Mmf^SQ&Ic$HbH3X+;w7CqNq*KVgZ7>u!>e4h=$x&{fx*_ zYxwHKZ5$jNNZjVYa$>Y;yOfdYZpRE}K)vgmY-9-#>kz@>*t498V1Do#Nx6rFc{{bL z1NxitV?;gqwqA1?tm4g6mO0R-l1`2-BWdL5pm4FI?aA{UA~}yaX}&EK&P1_QR+_5q zQBNVkTGdWl55>@$_BPm}6P!A zkLXqVZ2yEc*L)B0bgR7j>)Xe>$Pz33+vqZ@4ekvlk`mF3tp@2KuqZ}h$t$$XIA>nK( zk$Sr=6TTn;e{AFOKYUzbnKO2XgQv*Rq2ciZBEjn1b~2LmYK0Lk=JIllN|viv9E^0G zh`l5e=IAhU5d9D6lR4#n4M|S?1x#v&ulQf&8lC>{8D_@uYa>U`2u~l7=Bw5DhWt(@ z&!Ga59<%CFhwEx)#10E*ebgDw9e~s45JvCK#3BdwNySRS<3~}Q*y4=sRTUoopCd0z zM*dVq9uc1LpDn4bykeMt3*JS%KUvjl7ms`Ec5jlERc*0jO zyg?5C8G~5{cf28T)MJ)*KmqRihUBrsY|A4@Gr~*0l2`pVME**HC5WP$OSgTc!A_2c z(}pxpUNMx_kj;(#iY8rg)O|5_%f8dGnH!iDuCZ*p!tQpT%ZxLJYbrd()|KZw03}p( z+X~J19k9uSmYzF{!4mah8zTsbXNt;B3-i2ck|rtV4Z+y8s`EyL*{=3QdX7eemZSX(qcH=4jE1+<2j)I2D9bg1mQ!-K`YcoK zHs&?BBUA2nDzGsbIOv-KpE}n}`QfW4Q&u+2pT*A1QSgqrG1Ja#uXAg4PV|`O(<-Kb zZnhvpm*uR6@7@><*tOc@+UQ7^$#ekYJO2Ux!;JKXu!TOF6FBwMJmHPj%!7yWvE1EV#=hl#?`7W z|4(E$m}r(6t-E!}~9L^EK=(5@>Ud*n3I_*~=NG-ieJbieZ{W#$>v*lIH@9)my1F!lG`D`bE2e zvw_#A-9sCia{rl zo}V1GA^=z0?ipfK3IX@a+3a3w5*d4uTT;AJ_)+Ub{Vt)84-o+hy%)Cn`$ctA!?UCo z0fZih_tqBq-QfT=@p(?KM3Fx`oG->)sYIbaC!FKj;J=tVq~UWYebhfTh{~MI4nzmM zM`%y*OamhZ>u- zup^_M@)c~uuKR>tuC?9077wGT9kLZ*OgpszHTFzd@qzo#BP=Vr^TP<$XN^n7)dHDX zAWI8mYk?dskgEm85;5^EOJ%nuTOt-}fqX4c+#V=VX7qZ~1h;{@o255RNN-(tWtD!J z5II$HkC^4SHpnN`bA&v*k$4mR@x))XIuBwVt?o4cO!3bWOZ0V_qB&^B*XnX~|5&Xq zdmxHji8@yI=WBJj_{$nB$TJp_l~$KuSmzA6l*d@*;b^aOVvBD!#(#=R9gHlfwQ7Gi zmbNlx5~m?Eh@ifQDUir$=UaBxsW>9^H^Wn54l}GK5p;7q)st98)`Eq7x*Ig|qfm+e zEc~T#nm;#@Ax+VcslLXV$S@t_7Hkm+S+cD{qZ3O#QhL=^YRQOj^C+^wBj+!oHcz1& zPoi}v-emfEq{NZt%z;RE(8> zKRa}Oq&deTr4JEZ3LhV0{%ZalqG1%4SDk#UgG4k}73 zp8^umLqu%8s6t3V#4pG6lN&Z}vtz^_jmH?vkXH#Mv6MKUh|*xJ1<2(xQ*pythE<{t z6az~1ITBsw5%D7jvsrFrhbvn=B)nn(3LMHju!pISY$4jTUl_NykRU&i$S5JT*lktE zB~jmg9_maTJc0WGLY1u7V`9(Yg(ba2%sgVW4)VhA&A6R7@nQ7|=0`#`vxrA1!$DOB zO2Ro2B_VeVQ5}pn?R(;h%BXK2{N!##4*8Y466RAyhPdYTYhpS!_1k4(VNugY;g-UI#ENn2G$vhZMXa zyJP_y^;!J6zglZrQ_xx6>ub-YA+?HCTKEA?IL$}cyK7-K>A#IOt$RAkW5&Ew+)n*5 z+jTIJF^;OM58oTfLF?O#e7z#O$9LQkZTk0ur+-63D`89)7mQf7UC(qq_$TQt{n+6| zdqtw1rNx)kWjK;yc>4bB+JHT5A|7Tll-uq*p>VJ<$T@{W;*m1v>nU^0l;CDBs#O@I zhbDy&HDl^98(t{f-#nHQdiP+Rsi}Xu_sx(?nX+s;G~J6u#sgs+$5UF-q)3WyV*H-BhhRRGZ#8G-ZsX#gh|WQLRN{GwAym+#h-OYA z;{Y^NyE_MOy|*rT-h7~c<03qa4Y$}W=E?IGtu<$%#PMY*3vOSaB9Lhm%8nn^V&twE z5|YN7oKqsLH#ui=2eyQ#<`kkQ|^3itvb{ z%Hq(F!pag?E5cDuNwf8`LSFA?{Zntldh~0BB;G*jGtqO+=Qo>H<2XH2PUI4ALJ``6 zaF|8hhjXnKnFb51I#hZ=Snj;d-Y$ydTyCd)Vg@NwwSn8VIfzF-C{Y4X=&DobTIH$~ z0cydK#doZtHrW(|^llq?Y@wVi$q*Fo<@dy-K8Yp8RC%f_QjG3wW4w^hYi}YE8LrQf zrd8!PonOtftyL;-HaDk8cgUgGH!oE=5SBAk_yXFOpnXZEuS z&E2df*nh@?HuL|0rRa1lkSt#gqxP-lpdQX{DbCLhJ0NB`jfdjjhIFZ>kTP=HLRuwY z_LD*mg~_6frwS-< z=7EJ@gBR1AMg1*Cw}*+XY9VvqZ4`5z!L@-i;xADm$^x=QnMl-0N|-Y;1zyYvJ%s&h za~8ObD@6R*nj`rrn_y?31NP)MH>77!@`c2wzPOi+BaD!JS!M&w$>2ufmA$IYXYcpJ^0`$^ut~=MdRxQyGcGX$J0DT=6{EsZA@u#-{Qdy zc7J?C@&3j323tI>xMi`eVNfl5xNS?byj5;Y_rIuc>BY};Guy2d|721LcZ(1BdAHir z_#6>;H;ZX1h{77)GIV=)H4PKG8!f&+@6|7!rkJ@!Ojk<7?S=KqVQk*We0f||*-{%_ zm9vOY<0*!h`I5-BG9)Zq>XG?ZR_x^|;Vn2@?kd4k$fI<>x-d>VH%i(aBG4SrzJKKW z?*Cm|Vc5EeoAaxSS=gkx?osOS&+}m0)?gS(AlmHjE^9P z4bo)nJK3)0Co<|u#0FLE)?|G>1;PidB9y%t=h3BZtuzz$xb6K4Md*Gz zWzhV^XzgVf49p^&>g6t^Fzx;l*|s)JHu@oWBC;7AE9TNPHhND9pB`chBw~-`X)n)O zF}V=H+Y=d&%j-+L_?M=0km$G5%j~{|ANM=;o@6(|%I2{-@{maJbI711xq3%aaM?vx(nk4%j^h>Nw9&T{)HP>yG|Cwsl5}8)m3HSAcdQFm{y^Xb7?N&t~ z#X`hutQCi3t5hLMLc^jJeY|6mvGqSz+-xZ}q-?aYr2sm&&j!l>P* zw5IGf4baNC@yJqShk03KZ^-9VFp;sH5PGT_qo{xVA$sT5<*>AO)!XGKR6j_5eo)^k zKMU&HSr;is;9%_hoK3dnB&m=06}bAeld`9KYtz8^z55=$|*qD?dv ze2u^2gU)ZWQ)_l>&7OJPZMz#sd1rW_TGwF~aojE)0W|810efAy(uR$^ih&t4o}{7G z)36R>2$wANW_yXP-`nhvr(v4|(bjJ###k&DTDUVN(k0`pKS<7YM#t5a#_cbXpgS+E zV0UDTyQtdJj6~5Hb?&lSCwZ$qjsK*i*Gjpx^H63)LC&b_LM1%xwQNV&*IVKo%KC;FF%rm5L;^Vp#EB`np-2psgm9b| zKvY<)1xnfjlY2`79F&t}YHvwUWQAH_rWTl`1?Fgho3z0E-V!mKhVMcxut*Dpw7~6J zpfS3pMLdUU*W06O+EdPM)Oz(YcXds#O-cjB7{&;Y4P@lItQbpjjnS-O(YrjxlbmYJ ztLwG(k4SU#2Bgy8ox=~Br#C^-AWFtMR?d?m)SZ~`IHkr7DS)w(H|Mlzv)~zcE<}~V zC6B30x5FQ6)0`a@S(<-l`?SgWEPKOI#56)Ms)M{9&=9P@pCUKRZYDmhJ~7)n4{q7|Jp8j7jy8k3Y?ru$E;KO(}Y zuaod%!W%3>X717w&F?lRFKV;}f37oDJ#FgGn(Yx}N}H~LxJmo33a?yUGmzbE z5nfp-3F&WD8jECaX`ZDD^C^_uTNXe?rA(~z$r-~FD15k{!EN)ywh2X^5}c=Z73@BI zII*Ne@3$SfHQ{7o&*B7u+9#IC_Ee^`h#47kEc<%de3)=7NaSQg`-TUN$0@yN%DdyT zdqrYXHkrp0uBEbxCG)8W#-(x=8uP^pirQ7J&uKTAZuJ9Oagyu)8!IN9OlEwf852$s z6fAK>5k4N@T;YvrJ>d&*iPHCE@zKiald=nuN-il$Wb{*hLfs`&-(t3#Sn#_JA!-e+_jT7AqSXw_aMQc^Dg)47I5E9o5D(W(@q!DvCc3 zxxVZPcKzDqco6e;VmFbi$q+OjL5?c*NEnOuCb7vgtQZ{wET?}s>y6LN2XS0H{PcbwMFGqm!Jzjm80(R z`KVVj9re=UZkccm79&j6NhCJuilG+f7P@}rz*6y;&varbll4kM+b*HEC5zG>*(y)X z2yLFh5p{JGP&qeR>NcP6Bn88xC z8a#|y@*yp|QTEz~cV=p8ydv`BDI#!XeQn$NdjxAo24Pd+h}G3L5wS*eNmlfwhwxU5 z{3M8zwM{<1EOT2M(n2$I^`&C{HW^DFFH&EvZ9U)7Ht}V6XTnj8h^olump~(GCwEE{8adKg(~{e zb^?u;urgAgt~9t_}-66l#a=S9SLZ+s#?4BPDTGbA=`g_B1yLGYs^6wyMbn?u3^FB zUE8CGEks9~=PE{0+OrF`#fRRyZ77C&qf@Or%RAC}`{f_nG&_%zPqQa(Fy=lfldw!C zVcAqYO)HykK473EL;731O!9^C4`!4};N_s%xRfM%pTF9e&ZOZmpW9=#utL~+n55vsMh5hGBKoKf9tlaG zP~{E}(!2aE#S<;z*CI_0OUN}K_9$ZOcNOd7g&Z|lYU;%-tB~D2Y#h;eC}F)dNzoG2 zADxLku)W^iMuWEe!nlOEYF%|&)WSgcgsb{DWZVxu)ps-PN zM`rUm)%tB7eWZSay=X=@?{Ce>E|<}AM`q(Eb@TM=vfH*T=cbOHVaUvI&cK2=)ksp` zO1(B%-C(OL*o~^imwKP=i(9{R8uwC{$Sr-A$SsE~Nt%pqu5q(e(bu2n>#Nh!*}k9z zIa{vA^d>c2J(YT0F^cQvi}U?@kL#IZ#$f~sy!W@)Tr?uL90Y5h#Rh*@?|Q~R)wWm7 z&8WSMB|wfww5EOo`&gVi9LlR;S0IPf75$L^d9ZhEJM0*mQA~fZVc1FXkF=V{c804X zM_CeNgJ6=@$idv|n#yQ+uW<`YY2=oEvgcHVt#=~BLBmoXSPs2%p)JzFFtO<(H;rum zQdT2w^c+oJmY2x6Z{}TAb|-t|W3-BW@w4U6=kjN`R&gLcO#ZyjA5LhZO?|Kwj|yw& zGlF#N0jWvZ?ec7WUs1(gL=hEx^{|oG|M?w(q6r+QRjSVYu=8cihUAcAIiH( znTfDZBJ9)47Db);MHTxca6iv8+f?fP61ZP43q_soqKX3&c)->x$qq=!0kv_X;t=%8 zCybwcE;7+=-D{$E^5h5bW8kO2L%^fJlfct}+SDPQr_Bx+SCUHai{7;eB=Q(EWK%Vo zs5pGd4V7hnHd=i&4t0!==8x#bs)nRoaStVrf6AW$zKwaP+AXnb5ozZ{#(FwRTe8p; z0<7r-({BLz6?i83{YvsTRW=xvGCK!7j(WjDPaYRE?20=NiEXOFhHsgpjXD@~q`^L! zfy?R8L49Z5E)JxcGPniR^$&O6X4lI*cJ+I=HrpfUq%qne#?TN}wlU2U8W#wi8wjNZ zLV1Dk6@tpRz{KN?h&p!sOyxI1{FH~+cd#iP)i%1E+#F_|RFOT^^3KkmRqE5G&%oK^ z6q3RXoVqBZq1)&dEUy`9Y>`C6um8crM|gyj>p#MX^)(gh*9xJD`gw%w!3Itx>Q|fe zMxN_QyeUZ>w%5H~&AgqQ*AuM&X_6YfIiOhVyxBd}Fldb`a#M$3eR6=LlmT!s_mc_( zT;3Wl46oi_lh`Aygs^M|ZOYEQAx#dQQK8W0?$_oXNUrGIOiHV%ABA31Vo{ReQRh~b z^0phNZGFnVh$i|l0gkRKwrx#y*g-27kZM6_y7?(9G;ppRUM?v zf7oQU&DR^%Gc%{!W)^1#D7gF+=CX!;h%<6D$8~o##dEc0^H<+Yi)@k>akZ}HC&Ke* zQ)K*KL=%QaM~q>v*4f0v=6u^!ekpZK-ny2@T)O$CNZG*|X4#e7T&|>qF?kD{)v1|N zxchO|809dv4I}k#+9c?DzB^b`Q=_Q2h_y^5qtyW5(YdiVL+L33|gf*gnTmVK>$ zt>CP8H)99oID(Io#GAo}xRmP6*n6}Gb#e!d3q&C9(57UQ3EMWF0N2WLj7{*K;)^PU zT`S9q{hs*x=7^E!YJCJJEh@JmBgU-Ioe|^Q(Dx(8qEN+U|G+Pl3w24Cn%ofQ?USPB zg`weE^Fnrf(h~HN1VP&3u1NDjE~v?8y&OEwh^af&yc|b~;$>7@1&LWA*NH(rr159{&^Fko7lJDyf;yoE?vjU#v}*|nYXkU5adlN{uLY@yXb z4R)KahMh4xKsl830P!T~nF_ zhOGplNqAqcZ$CRdn2ZA&q*@dr4)yx>hF4&IMTyNIFHzslV6U%Vgc3adm&kaE916BE zv9KoC(Z!M`@(N?ZFHXu>*z-EnF4=+0-X!~F#A(rmIjdG2WNT|VDF9i7B3r}qsPFSiO1n?y zlSvM>xrR3PVEf!YW5jy3j}uWQl2OVLX*xKlUbGWYE&QdN)G#jb)_sji?)d0Jyf8lK zsSk?qQC+-#%=F`q{4D&E^?6LR6^vEFYE&#L`15RI+Rw=8mC&~C$de@;>R7HldF*c= zc6psBj$gkehtveXgJZd?N{e~R{+hIt#If^=h^IuGTQ6P>?b0#9wJPe=+ z)*sWx((s6f5EHcfab%*Kg~nAo3UdBj%|Ess^*8@G&0mOgomr;&Cu{xy4^tqM>h;f} z-P3#ha~Q>zW?vmI=xS4Uiaqhmgn?vJM~? zoh{cc850Jk>Q8ANKKNfJyOgkAtCZPbR-r2jAu2TPAe-HA1G6*`#X zJ$rYxv4xtmo|k5Ndzwe<*A=n{N_3pja&&lTa0^#n(gN4!`iLXP|Ih)F}g_*YJL{)B2o?4r@13JE9euyv+;{=*~v9Knnxlk)twtp z-S{s@NYAC}rEcRbnbJzTQfz!U#TrHAcCHNPx7_ZrgfB%UE9l^ob$}h-y^$hIXsAA< z=(a4LV7@JDk~ipR{1DAwdryhSDjPqzXAFPv)|WMGE03QA&&&ftO_}AG5aG%^s#{s! zyQmram+#6T?KOt*6Tet)^N-OFBiGiQ>rNGtZ!w|a_bzcXexP9@fFq>4GDE`)zVyS# zatSV>-IYm}J!Kww02SLOyW@qD=NMFeycN#SKe*0LfNS-7nf!|qI!bFNCdIKcYjd?d zf*+%&ZMSO`0t-&Dq4DO^r`}5L^{)`We|CK|$kr1nw1h51cv9gg3OKoC9`ImFz3D87 zKX(n-W^YZLsfwB=NFvx651-d?lW`FZTT7gwypCgJBNLR>L7&2b^9Z7uSjQ-=TEK}9 zZyolOaJf;r5@p;0S7_dSZ~&UOWWg0Qs5AvcqZidq^oVOv8ecro)~SXDL~_9Bc!cEY zVgpf@y7Xz8=EP-qWH0_au{6_o>j4=)&6(ahPveDpbvD;1b}v0k_h;&b-giT1HD+;x z!tQ-_F*hhOwX8J>fA+lYsC|uo`*E%Cdi=b*mi6JOWwk5uAY5T&+Sr6Pf+E&v+%dq+ zwL={hKt&nFo>}eFSY;cqQ^TbXv!q&cw$_}ZHRqZ%=Tk}qvF9>IQFGQ(CuP=(S5V+A zp7(^POmkG~90hswHyH$rVC%fdkv+|4>&t_1l+!gs{q6HkP;5 z_vY0(rx>rvdX}co8mqouN`8%-V%l7(b4)RQjb97;$f4^aw=gSqNc1{~_n2N%h@FQf zd4y1`93>zlBYmqQPQXGvR5xXtXct&(y!uXD$e%F}IPyD4wbGBvn(sXH9 zOWcNpmNiTy+sOygXUvG)F*d=b$-L#MmwLRVD9ZN#Np3eZ-KrPqHN|*F$GJO3PN=qq zFY=b=hR)Y(3T-=Go34tS7_-#l+H`|8a&*knVI`VM-MBqopzrj~$PJH9V6vq&r>Hc0 zse@a-x_zZtg3{dRBr7}Ds(wlF7uTxCWYCv-xRa;%<^9w9g=^Kl_-Hf6>a`yIwy_-7 z^+fvTH{TKAS?WkdeC8w|zojV+jg`MNW0m~4rICmEj>i!LVUD12uvR)2 zGby!W_0qAdGHH?P#`4~>91{zF_z)(-uJa+v}_gH2Pd=>WA82ndbTV~F^ zClb}h8RU+38_Z(iJZE?mW@eV2S*@o>$L%%dK`G0;^X!ZJ>Uzr^!VvY8JFQ$`kQe3q zjBNz#>4LY?#5?PFq5!;h@KzcxtOf6ET8>LoJ&Les%j_~y;nBM6t{-#LXINLzD3t8M zaZz+yA{ykdSl`U<^z4E!&tGIm?AcRdnWLEOf=?v76&VY{_a=0%VhjCsT^)9sjl zrdU{|ajlfSW27nbJXb^rw_e52#*9wa{&bXkm!9d`lr{4Eon@0;mV$1-H=Mcnv*Z_g z)4Nknw|)&mhQpuhZ?iSrZ?pBeHl%rdZrNNY^;T>g-6Zpp_7y!($&q1qYv+ZW&v8}w z8g;=-rDE7h!m~~#yjbRS)$vr?A4%Hu1^U#zgBEzF?i{pq5Sdm;NM!txq^3=; zA>1Fjhpv)UL@^q6y$3cWnWRQPYTKIEKSS?LrEDRkmZogg_A<2LOh_U?NIrR8jLNue*8<_TZtYC-b}#-yQ~@U2 ztTjQS^2aG|I8T{VlS?YW8sop=z|dB>=U$oAa`{l3C}!12XX{qvg|mYDI^nC7p%>K* zAs-tYw&QZnwj)Y^=>5pJ9kzG9b@s(Wj60c3~KCbH6 z9hTX$fY5s)3xxbZ3PbgX-r&)f-Gl;}WDs^5|3~n%ZmA6By3HIi%^V7AFz^f$ULG3B z8prsoa`W(N*Yu7+qJ1g|J`ru9G@H^F3L38nuegOfd5(Fq8B*qXv1YStNl{JYgmv*H z(c-JTN0wZW_j;**6km_-uaj zgp6C>Gc|rJ8skDp?0IQwk&?lw+D-41H_hw1BUt#5hI1JAuabuA!?Xc?^Zc4r-<+wg z(bO2D%+mJQuR(V_No*pIiC`CLC{GQI`%@eh0u;Vv!ayvH*O?gfsOVZ5n{mqx)@oxT zEG$qMoc(QCcFq` zsT5&%gWGsjrZCUbeU<9P*NdOr_c3{I$= zcAnyJq>M^u%=oz(i?X*g@@3)xu}bQ(WrLnnur zu2q+_^od@jYjqAT;zZ{SsxKxMjAWQt^cY)!Rr08b-W?xGM>L(K_hXAfp)zhDinn*U zp{FT}g!)#N??H&ptBxZyh=$)V)Ek3b^6sIR1|cA;a0H{i13_cGtQRLenabyyCFf%B z0V*lSf^vMt#rE4TO~pHPFN)Izz$fkx2O5j7db)d58V_o5oT)MIn=X6XAo@ zEm(t^!v{2KsvUkpoJ9D5GRqh~XuKzrhubGw*p!g%Gj`zPJyFXwb!>dNqPwNkKGDia z4s`0nVW-phkakF&bv4Y#ha)^G+H#e^N$FCGrXn`xhywmc%8uk@y_6nZR(W@xJ-8)g zPUIp~!PJU`pqdVk%+K*yj1o1wd+J1;AN`21GyVYsat8c@IuW4qY%Y%LmdtXpk<*k^PS5mA&J?W*b+A|! z{cX-7s=nf&o3WLW?6t{ZkKQK2KBig2(7J+m)EO-XTcW;Il|lW8Hn-il@)0%vdwdUC zdwlm>3;#>xZed4{@3(y4XYELz(2YX=4lZaF&KbNaJfv{W_*EfW!q;A^_jOn&bca9G zeeJU0Dj6s=(1g-p7KXc{Q?S&j&22RTcf-E!=9>S~OQX(Ft_`DG8qZyYoH)|dYJmjI zZP%QC@W*W&Wpj0Vl2*~`-MM&=SUqUhir48FnaP(YwOh1IJ*q0^Yv&*Vnc>+hZI%_U zi0PVb!kreK$J6vQ>&?=RR~t9-gX&@Oy{h)Q;j_CL0(N*8V=$XtSYhXk=rqR+eJix8 z$3NU+Ji{=PMJSDx0imfQk#GJr%8^yo*2=zMh7gZ%`c<8=x5>7pdAOw}Tv)&Lr^w^& z^de}iL1XU*X;@_rw3!<$bj%k|v#w&GZ3KH{*M=e5zj4^ z#+Jgm&|k0WG|e)yNBC0B3+xnC{S^z^t!p6Za2o-mRhN$p#y$8cZ5u z*j1hL)FhMCspjkadfWYOK-Ow4M#@ZVjtfNjQ=hgjawHM*>HfWu{zT|no|f;AmNTZVf+(1L_JsxSv?bWsRj(7u zVzvF{hJ;%m(QY4B=6!c@ENOSwE)7R^iHiR4(~O=ZxnM5qTf1Vm$o}+>mU@mSqN~n$ z3QaJFwOi>UbaaPv#@<{!x`P+x4BjbAbaao+j-N5MRCx_CUQ}N8Y~v3&m?hwg7&nKm z2!t+)7zvxm;$#AqmByQ;H$-LUR;L%P=u?_M{wd!4g;ouhkQdUs{V-j;a& zvx8fX4Ou34KqE$eJX`!qC%m2XxF+rrkDKu*Q88*d-XaY<0!cIk>k(+z?VQ~$zLF~G zv(5C8WJ#Z2&lbJ4*=qiFq=|$9YN3r`4=}i4&aC(p*M_Z;BR_QABSV|z{XynLunn&=iQz$EPWPz*gUA&a$2gPHFhXGRKr6GSd;=hh= zBMLz&iySLz?&J0DDu>=7FYhqlTZ$cnLg_?UC=pg16B5z*_xQ_^W7#23KDxgeU3Rm>9CDM6d7o?X-dU21u1- zUAFNvmhg2$jGxHQP-B(+3^&^3$Ei--)(tb3@fF(%B8W@mU?CM!Y*n=5aZn*Rh~B*? zUC!6uU>{kr7v&n1Eje_fjV!!t-ueeS7ae_WSL<(ZXg_+KCWWPOtzN~ax9JVn-T62= z&eNKVmSZ`t*0(v%Z#i~}Yjr?5@?5K5W8>L!>~dGD>|I-q&33hp0(Z-?Iia&#j@7x^ z#t_jPcDmYrgQF+i9+TgM?~uPEt@z5uisGW?^NWi^8O0OBr7iL(>Yr7#A+d=1b;R!C zSFh+}L&=~xT`tdIE?RTwyTE!b03-a57IgW5mac=k`E)qxjhq|H&MaZlV z1RBYD($mV@)5}Xxn~CKRQhZ7Hl9r-0S8IrmNK+pi=WV#qZRkl)@0k3fMv09vz1U&u zc0;sjr;$!;>lHh#6^CprI3oFS^;oT??bcEnK6VMwV0U_~wubD|!9oh=b-3HlD1~t> znI1kAe@EEIo^%_=Z4dcdCf3m#;i0%8FA0BKQJI#Bmxa&7Yu#nNzJr&^jJO}(kjQgQ z@40x-74PNZExTlHbdhcGTvzLvG<@-8uC}KL*XJH=d&jj(4x!n133Ye1J|sPKWNzp# zo#sp{BNwza&@YPg&k2{31$(1A%!+O|&J#|x;*iV_OaW}?Y|3iu;{rXGJdlVunI$J! z_Bq((XsO~LCb0WC%(OISbJ4oUcVKxVLXVEQ2aH2RN+@eoUf;gvPvY}W)oT+$@tMVQ z!X?pZR#x3mq5e5-yw!M2b{HqK-kQw%WWFoEl5d>tFY=A89ec59WkghlGP*=uB(LtM zdWkwhLw58>(kHbYnODtCw2vv5Zn-Y}d2BR+J?VpD!t}{dZM_pm2dkn{j0VIBny}dJ zYF&tD@!)1h@le<5n{c-r%L|XvdyATkC8$3d9Yfk(^s7>oYpXpQyjM`DkFU50Jw+LmLv;gQL4yDGpq+n75h%^iDAA{@IU ze6AX(pYf#z>OD0QW2VFq6_wU^!nT&~IW0|`1zmX>Wei`yfNQXn8{Zc_yi-kZvi^tS zSv~32^7b+Dvs#+1Fh4!%gX0doI@Dxgj51J^@|596z~)-@A^js|XueenuKV`VjvH^H zB;n;77xELoedA5CS*zF!4;sI9<0E{;Ki~MG{Cu);r~G`d(U6~g8;{G+UpHn-ve!3; z(FxJz<5^N$U)lK}N4lZG~ALIichN1^X{SpYh=>}<5`Tu-27mtHN3w;jXE z{1dudtydC}wK#UQBn|jf ziJr{ytAT2P1c9q{x{CBaB5Awge?|g%BQRb{>2%Kuee#OjGVe}pu174u`5aA`NZX4E zes{;-WHI~+pL4=qSKHeV0nxSfIU3(K8=FRMdqjLijOZ=q2uo3B>^N#ww!QI8T8#n3jUjX6-k)%_)luVV-ms_XgIEUTSmS=o>dpfS zfd#;=Kp0p7bO5gbXFblXH-M2}$PUfP;q9_zybHG%t$>l$(IpAvdOnc~yE*dxd)qt9 z527R7J=>H{%4p<%fV5?|dH2GLt~LU)k)*-6Rnz4X^o1dE8FtX}(FdP~3VhB|@?fXW z4IpGIVBg7s69HJ6D4B;(hFe@ci_GpH?20Ctxj5v@iQ6=Szl#!gVVU75y3+8A%J1k z4USocE3BS&{IVfayT&LWm<@Djl$P0B;t@K5#eZ#OkwYq{aSn)Tj47}swVZOY9l`g^#5G0{K9P%2bjz0@W&diP+9K;|#+Rhgw^CW- zuI3ZM>9eg#btS^$t>+5fnUG<~XOmwFac(^r3d?>avM}a~y*F=L84AP9dg{SEQE8@@a zA!Bb71@a2!TmAAa6=rXwSx;e-9Geb#Pc*^xa3pT0|F@8;9G^4u4r^F=W{eCaCo$Xj z1sa{?vQTmnN2XLlX}FHSwazN~s7{NqJ|xxYYkEvHLybieJB-bnL;m<$*)~Ug$B|7r z(Me%*cU-2X@fVU0prR+o?I1}j<2HQUs8d*-;RbWu$__z|SdqzwuSe8c@_#Y*E`U*0 z*TVlKGYJC>%m6{7Mu`&T5zv&NCMIAYOcLZZA(9XgVq2i;Xf47SgqnnjCkbB4(H+baWd&_h(Ct&rWMF~DsA{rG;VABbIi{axeTR_H z&smZ}y8+uR;u&DeRW;@*mvAHt#YAk0QaaeKoDDXZKm zt2|RyaX7OL=#fq@z(Z_q$K!Z-NOc)II&7c2H@r(eCK6kW$fNj-$R6BYhsOtd*$!n^ zC9-;g!x4$pEBD*DM&uUduEXsOYq(ng8Z`++&+B*xdHU|XU6!nRhe7w-Ejgl0@n(DYmTB)4NSBsScyK~(^yw0b zf1rh6e&?sZ3J&jSttWqqaetP4xIa(11-Oy>XDWX&ZuE(RxOMeDu2MEI2&b^yt%4+6wb(sG=TgHUdl4)~<~d zipGQmAuD>nw9$G93&GJRq#M?nAK`skb#AY8?rG_`^*^g+&YFK*xgz%IGcxHvwqEG$ zPc-)kKop^0cq_BuzhvLD8PgCu=8&o3&Uw<>z$->obn7ud7O-58V*fn4^@Iw1{wozY ztpfkF11{PTu>K-}=3Wnh8tX6t){KoA*+&se=1FNASUj(od!2!5>t$LA)h@lqKQbjg zRuc61G{;Mn%w7uzMEpwS)x|qidG8eO1m$fOFPe}L+BquOhAVHFSZw3$ zc$A4D#1gcl2#xCF@B!%$S98>xwFuir$2o*C{j>r-JH6Az#mwI1(p*e2s| zQSiCc;%$+Kdic3pq*d~Z@G($;Pre-wtiq)f7(Vbm1Le@Zy?-)!niFDLT)VnCks`lW zG$&H!cT#i0DZdk%6Jk|YJGVI@{m?EbI)(Iqo0?i9zr*CQqg_R(u$$7>K<|p$EQ;SU zkmw(5$|5uLXt5d=c}5Uje6h>f2i4$1C!Y`Kx5;Fzv3|Txj%&dP|6s?jx8s{t zJUY!>xxFwpTQ7f?bm9FQq;POKt=80~Gr1f{?3C6E;8Y>E82NCUx)`2LJSLy5Q9`v+ zUQ#`)QhA!>iOo(`lT0>YJA0`rFn;x5^1Decmy(b>w+D{Ga{^J<>_GCXs>2eRSh5{G zPSF9@ZLK0xY$MlrJE4fvT82C?u5(3AnR(FRySaN>x2_SgeJ2G@W|2foIk?<*o`Bh9 zUGQ~EMj`&5O3~SzbEdPZzyb<1{T+~1qM<#}#!jSzf~y~i2JS0*zK%1hVWxTaE>=SB z;poBf2!u8ErD5V?DEfm^@H?RbPI+Qehhgh#9&JjGP2${A=;^Rv^S zD8mqfNtzt9qk_P|C$wvN2K-g^8M|R!4s%*)M>+Xg#g!SQQk8qWx;~zShC4 z(5}S9*7Z^U!_@&J^q}Qv1xLqHz{21;yk)+?`=*$3c(B*ME5_9M6k8C9z-n+2tAsiP z3o*CblLL59PWrLBkqG3WKh2FKr4uSkU2A8f@Lk$T#{?2fr^(HRcRfLhnvWd^ogaMH zyM+MPqyr5McVzB4uJ}t}8qW<2h`C0x*+koJQ)%A4+1|Ib;q2P7$;8vF47Nwx z9&=JL(2Zi}M3?@Vrs~<@+`FZp)kV+OG>i)GZ^7@-Miw31GR&GUWymnTh{qnOM`fgT zS=G>D&x{nW&c|e=cJ=!A{PWC6$-pOj(|qhkPLTmIq?VlJgoJzSr1^b&1ktA8VcdG= z#^E;K+^zNfVN~fX}*{Nobc}Yb~cv2K;Sx`#^`oYKDnXL>9Xn0&Vp8sPoy_wA#E&utOtIFRZKA z7@KZEXxRv?V^6*LP(ZjAoCi6H(C?JRfe~9J8U=2f$#Idm4LyGY$5ZmO&-y0K;fOkt zJfi$3iu~_4jkR~dT>mkr|HKsku_+KQ2kenp>|SDGX2%{NKlC8r!`a*3BT@YYni_b- zGWS9_Yd(=(Y0$(_yrIJdCma{2qv<#MPy zd_XP=;PN%#W3mF$kzK2)zfrcJ7j49m<=ZC6_vc5?Kic1&)F&?pxN$(D6XSg>2}31m zIjWsIuu&BkZt@^wu?fi~n>W=wClDM_-@q-0lJ62EkmTd-+c;>D9!(0tM}GFI3%TN`(U#r6!g{a8dA3`Aw+->9!9G=3J4L$ z+-n2(Q2=ej|0|HM;~M5hC*zye80hNB8F>MmYC4nEf}v-r_&MP`f5eE5)K?u{?p+Da%Y5)=D~tO>qmHd+9W1LsLR8X16bmNY)22w zAId(H+l_G{R5?Z4YAc1@77kJ;cbzppJ?O--VyYZnLBcZj z5u2)w1X-J^!OX=Dl6S8z=X~rWe*1KeeJI{PSWh8U8hZ+VyWbO0HjBsZ@CjQNnf#Z)-%C6F+u?l)2aTYhNyt zLIRe5uuM`rV!1;LklR)4Ji7qp&ma0#u1B#`9N-kM{Nwp5S8r6j=>i)rcJBiB!S=LD zhUe`J%Ktuo;Kxx11Kwd_$>ZeDqX_F(7FrCpe#gGQGA1%2SE~`3pho0dYD7kQx5D5q zBXV^o&m{_1meBxB^u?G#gGf8J6=RzvEDaMhJLZ>=?Y#+aa!FT!y2YjvrbBWoj?Gia zcVOD(LqPz-74ZaB6`#r zof7}AL2wIN5?eu``+f##O<*XhiM=hy8Rva#n3P3bw+FSQ=E3IJ+W=WB)?=f!-1*x1 zdTg1u^%^o3F7l{}Bu7_l3=wLo%B4BxB*auz{tLywS6B5(DwzXAN256Q8Wl@DQjqpd zJ$9)!t2vgz-ObzjihK%rs*T5FeOotgV>7#3c8yvi6~?I%Ts&%sBV?zD8Dt2ns|GB0 z@*=iVN*KH;<;6rd!kKVMY`KJWDLu9UZxr!dSfV%6$68l^$xc*hgBv#m^lvX zsc&!@FneRapgiH1B~!qztID!oW1IW6v}%!OAa2;}#5FQc;QrsRB>I#t`?z_vg_r`{ zI5HX51bp!;@#_yMAXxqFUmb*3h+`1Uv8}Ig4VmjU6hwKGy~O;93>V_6X=Z6=d|WVX zd0bK8{y^UY)<2gIl6pLj=zPbof0yFx;qP_+{>I-2{Ege6;ycOjFn+J%?~m-T^Z8xD z-?#W{=kGrLcJcQ+{(AU(lfO8BcRa<~=kG`S{fxh({G~me;=7c;Z{T0Y-?jWLYbWFVNOf*p3SzJUrNJC6gq$j*;(jh!cy+o#;qD&9ek z#2fWHNV?W&OI0B}E4{4x6IQAXb7>$~L8btVHc%v(s6=H4tUpUw=_-Y3eV*tgE$Z9i3HtdxvPGWx5l<=M zcEV#VC$uu{!-&YM5VjW;h`AXHXal`%P;x|H0+`Zjd>Bf}p?V%KE}SK5Cqw7JVw@WC zg%8MAplfA6|pG!V@Pv_cw8N^6P4hqHhox#SyXvQyOaJ^4<21kgBQ#|!9AGM;m z1Ic~xn-PjY<`u?&P?!8aTF>49;)1Nrbno}uq`oG-Z{n7DAT0;=m|OeWd~K>86J|d) z+Dtu`u8o@SZGDx59b(tIyJLp9!C}k0gQNHx&YydEcZa)|ec#7u?w`(^R;2~L*s%gY3z;st>Et_{;pVV z19bHnfIj#t6Q2o@|5!AWCGEn?qOJ>{tgKk{ynx*5))6Jc`6!u)cWPmgi!UUL%W4YUd4<>_n8Ns76aZTfN&6Er%}{- zcCnDV-b>@EZJj1b0I#qDWxOyE`^1cdK&Sl-sJ@pt!Q6_DiPA_1G|NqHGZC4Z~C!Ka(=*RoX4e zZBp*{lq;8S#W0ZaifxD zE*2~gRzg<9Of59u!?qL)ieQY;JCJ};b1h1y8eahCK@9=M%*Q{h_SMiBs6e79snZUo zA{Yh_Qm@iFShp-W87DXL3Bo%B6_ET9Y3FTP?z`_nq%;d56x4l;|~j-^FM& zVj}2$In2jCzqd^`BE7HN+qO|f2fVF6Bc`S*5X)A-!JOE+c-HC(G>mSSf)2<5n;H`1 z2;T)o740>mOwRTS+AxiVfz)Pz7I697d$rnTT)|=S5@OUBA!eSqO2tF|kqKO+-V`+# zd{*ZVO?5+YGPheEO4WY6BTOqqdDRs_q^2sE9ouMkI-kQK=xFW{7>Rb-B#dJD+(t-O z8Cy)ceTT>`lSS?h-WEAnXUSynZrzDH>p}7AQ1$`J9om#xcS^YJ`(&IYQ^ec0gio`! zinnz$u|d!B*e_^*k_f0(d7tS;Asy=IY8`)J*}M0hmFy zMuVygxJlo68qKIg`*56TaC@3+`yH{n=)`m(cxrz1c=Z!P7OocotI;Cb3VlmmY)X9k zsRUAK2SpWLWgwm!s07qEAjFe=NB-6mOpHq?l({>cPn&kbZ{&peNdiq05JW13$NS`A zv#0BCXiHIn&XLc?4$$G&qm83TQ6fpf0?i{;cGY_4_10?v3jZ;QrpsyXZTT%OYwH2~ z=Mfq&OYJ^_EHA_bESI-+ru5`RYvMW5&-zh(i~WM;HM7{bvyG>!Z55Ebgh2g+F0(6k z4aJ8K2x`p;d?q|XJr-8rILW*%*D;0jJJ-^#(Lff_An(jp9)j@hRiB!Tpjoy=l-a{8s&9JEz6r2EOxgm3fcte4o#vN z@0F{$I-14ZZylvWv3;a&@1}ddOl2&E$359RvqxIyvG&+mM1Pz#*UI}hExkqJzS`22 zlxBlIu}6`e%W@KXve=%i3T~{mwL*jrj*BkLnOVthEj>h`ntc{SN25X%wY`{FS`y2k zAV4n^gxEA77#!Qvrr^siO(*Z|vL@uD1jj@G+?Qf}#Q28BNI0sp23Y=({$&#opY{6_ z9NX5{k)V)m@*#HQ0+r6&`Xl@`Fig5*|0VtDvEJGXA3;^U?CLSpK{@vAAcd^gXZiKE zJVpFId4iRwg#^4Uzh|(f%MpKu9YUTkE3{u!XmcyH85PKW)?Z$giy5kH z%TE{(`sCXr`8M`!h|5}Ap9P_ZpQx}S|Xz}jjjqrzkx38nBrqXQj7AZY;B0%F7yb>>Gi%s7t$c)_6SHv{|C0z}t2Q?yNhNw}^9i zR-1TR*WgOk?m+BwkhGpQx&At0vT=RZ?b6&eRh6+`%2yf$@14>nH{!%zajl&Y_Vm6@ zwcc%alG;>9U2EsYP4or=MrFbr^v)3?C+k$iN-S~xt7uEgywY2A%N!?(GJzRf{EjLwTeAU2O}q9!&QSIQhs znS83}lR5&{i>KTb`;4)LPw=nSdu(X*JWI_+=3IRy&BhXL60ugQBKhXAGGyn2?<|3` zGpt49Q5;NnjwhNzIilmoJAQFI#TUDk=1({1hPUPG;(dc2ds`~->egm&i(GvHh!BRS z|B*An)^a)hZ`7-eQJV&%WocawDL|QtV*saZ9`QwO6}Z}5^x6uVdXxk82rtlg{*%LD)JcpgxJSTP^e z?o%SIxm;S)18PxhKMsE~Up)@PJqOC+q7|3Viv16ro;2%Wfp7M#UGj6@EW}qG+Spl0 z@4{g)tCC?*;u=E7fxsjK4ri+T$RAonMR6pBLe*(si29v2*)^ie8lSrdY@KMn^AVz;EzMxIETWvm9 zSW(ZMgiKJWt)@B60G-c+C+eqY9+?%ZPh6PB}ut{wk-_! zCC!yKeK$#t!0sxK)EzY75zDbdI7UKgNIA!shzgr4g;oN32fdXu5@q9k`JLEI&sUTB zby(~_)3W7JTgVYLtV9pVQNgAuAvD55tl+jKKLY}e|=Qb&cn2f?UAwp`HLb5*L@U)iTz{jAj z_vq&l8f4$KZq*eoksT3J7qXEVeMgXwtD;Yu{+Ax;um2`lnpsoz+6 zL}cxhI%V{Sin`Rn=5VDgc%YLqLo91(`h_cxguI3Rw=n#-=$%kn;mY^5sqo8HOSz&v zTm)5;1*l?0jfCB3#12!iuw*UyA^X?X$0-t?ZDeVj#!9N#LzvNeK=wP7f+4jHf8MZM z%>Pnw)nJ)P7}1Ea$o?T@LpwsrcFduz=D9S2H6K7-v}kfYlT%v5r5}aScL@j!pOh9z zn;M7bAA&8V{ulj;fw_kO2?}X%8wr1~L`(Mf~NXyH9+Zk5$gv{i1rT0SOI0H;jei2p>y|1UUfU>6kS`PRuxn4-g? zi_oor35W(6-nU@|T2+@MW@nHW`&wt`6*F|l%##6Y-&gZLKz`xBqZ!t7r_?@^S_gox zECx_myL_EBEPNX0!Eb$Dk-Euv#N3CyMT_>WRkkEdkaKYl=c18LjuDJlhXl&R3Y%1UOdNCoG^AWD!oW5t+XbRp0fxvQpVUuBkzT{3;?Y6$|$97MeV?35c*b*Y#r!? zWZ&Jy2*?BT51Bj3+OMdhfr>I>&XNJjKWbA*LgTzosyCuQ;td$@d@0}(t_T`n*>$IY ztMT*5PIWcUBB8u0kT01Nlt7GbC!7(%Yc5_MEy-D8ahU!^}4 zY{1!x@lP?vFI#eRm`v6zYb*97lUf)arE@Y|tSQMZbX0DdT>JRTvv!kEf6f=@7+1r0 z)?M{Jh#a-GRs0JIYg+-OOcRotq8axsQEDC*2=wgYwSuau=#rGmfStNZs<0E|^YJH@ z<_P~!mi1l1e?UsCHSh$~;>%W|!Ay1O{bXrtIukG1ds9pcPlKPYMd*a2o@{qonTDcc z8#55L^Puo0t1u+ipgePm4z522oIX(WEt>^jy3+Cy`wCA4;FfP#q_2F|8%x?vkz z7C>c6bF3>lE|UgZQsB?5u>y7qy19$7g@(rzNlw1BN+y!p9hcL=c1~?@M&Tr6JJl8C(-B%Es?4f` zU$A!`Cnq$?nqbCID`bvv{e!%1*58DXsyw)zAeGT3WK*Nwzfv%1GvG!|dQrgFn1@2a8f?P)He70Ma<4TTHhFX` z>gw}7iM2+dQRy}+eF=mkH@VA-Hu)M}t0Q{`TWYG2CpJpCn<%JAnV@MY6<}&0KT?M< zxvTnv8P?_Y_5~Lpt&CQBmU8%+l|E&vS#At~!>zg=utdcaB_K5SvWWY*dmYQ=y&8RH z>##29YdR+i2RvY2YtCG})|fG8?%bjZU&99?@TGcI;u0O!N>nJr64obhUxaTOz}dB7 z9VtA@#?J*g_b94^92=K95~q-1;RES9Qsp;U6djU9>N7XFtnYxk)=7dCfS80mfR|2- zRB5>52s6N;UAER7v$kl5Y-yqM_07BhXSCG1HLt#zgJXD0txw%cuJArdsy}JowfYyM zLKCbdGu1A3j>_PZ3?o&BG%|#cJ{9)AWaq4jq(#L}OD7Q?EiE|e1_bC{mYbPgA!7!p z(Ef&!Gihv^G*-Q0Gu&l`ArBnCejhhE^(Fod!I?^2)=T-S{!4iF4Q8xG;$*E68f|T! z!wh1mr$rZeD!I9&-T>9R$4+3~nEdFqKbo&w*D-KvEJOAz4k!f{N+F=#j*Mh`WLn6z zOnOv>mB1R-04jwBCa5USm)$4Rx(1MbnM_nUdBq{7*&wdji(t?KH-}$MD}{`X3Lbt}^`hM*TYiiO^FPm_w)aAhX0`9f5Gq{j`&}V_+N|o zUyu0Ti1?30{BK75e~$Q%M*MG~;%Y(8+F$+BeD>x}P`$^^dF~9So(&+2kZkF|zE7yb ze%NkC&mynSNaJv&8)I+2S>E6HJAxHL!3tR6fYZTE+20A1H7p5_i+bIHiZO6)&u@Nr z8Xa%$66>W%kc2ml1^<2{1$ud8(W^cFw;W~(%tzQo5t9X0-7Mx_ZB$G*hMux|;eMk= z&|~g9FD3x@Qv$)Kh&Dg%(G_T|mY>o%`(=8CwU18<3$3iQ9{MY2>cRY1ik{aRKpX$2 zh-2DqCZ83X=4N7ee(srfWgl$~rIca041@EFP@D>KT(T-Yl?tire5hQh(M4{mG>7rc zu2Wv9heL#a$+|S&kEF3JQ=xR_i5#D>3?nhX0XTq#-6FGS{EbXz6bto0rqARr%Sxkj z2>VgbH4xSi6@P?g30jg->+BSE{w(XSkhz)sS%O;phMA;xxT{HRJuYc$FJ&D_W z*3bXOlQv8d(8$bmYifxHdIpvA)fV^x-%3 zs}3n^R4@uB{)5bWdHwLnZC&Q5(fB_1dPw!jdp&nCo@3?4E{3eWhKh|}{R3;f@k!C>XPvHD(hH=+$2$h(oh&HUZT-+w0m zOn$%5pL!2hxBfo!0U-&<)$BDSJVdoh=vZ!#voq+F6)V?6{p7IQSHOjM^MAvI7|)0= z!RSN$y4)l2GVG?Qn|iMQ1XjR~peNx-{A>9~(UAIpT%Y5Y%H{7cM}u6@6)l0gKMYFA zJ~IiO=1Pkfz_%^8YP-_01rMH!s)qA7n!mC9n{7ui;=t|WhVPY8O|hOpMFOe|;F7u6 zrkN?;9gVthJG8&_p18#{-VJ$n|p;3&zNm0ebkrs zKa<#!mI~IR3=inXChKdkEQnV6YH%AyH2&!8`z42C6_Wzy)@+ApW)P{pH<+*@=$Mky%_2IH{ka6($V?8wsSvgc?8GN*3S zoqu#`Df}$ZvTPofz8=39%SH!{l`j}8Urkhcih8`;YB(ASLvMLo7RwnCdMio$VCnZ- zf1jc-y)qRo*JU`ZUdB8ju<#$VYIvB1&{Gny8n3o5cW8U)@wTL?f{v5y7%8nV$>g^D zZFB38+j9B9%kHgj$!)osf9&w8VA$r=9uIbL+`5FKMbD}f{HSaeq2rhxTeUz{SPd=f zIHXsV6aO(gV`Qawt+`cpYkkqKM0DAGK;%9Jk)?p+L1X2^#>z(%l^LRMBLit%?At36 zAo_7-tt*@_WT6c=z+Nm66ty2&YIaAL?V$~O2HWtsv9iNh*{OyAP&SNV1khxA2Ks%4p+0Xb>?CZ$$I!_v zUmm1}aHH3u4X0-7n^&qEo7#wM#Zs_*rijA#qGz@9)}lAv+jdM~^LT?B2* zQmuROwp8+#^=mwGd*BIMMWJs`1n)s3phBOsRxcc7lkh^b6HmU%T24H97}sh5okV+c zZPax^AWCbVL>eApUwXgDR4J2#0`~+znT8rvurJr**7$xWWS{k0MqF^YV|@1zitq0+nDiS3%1as&a`C z%a0u8QBD!8#nhFt5=C*SmOE`U!rt{xz(zkbFG@Kdi^yE{Y_tuq248|w3$wLCXet=XDzG{==rMTRWz|z zUM&)PB^&sNoO?V+5wI@L2lFU%*M2F*UirkDTSsrf98F#_=HZ2dO&NGNuIPCg@^O4U zZgY>MXKxyyl`8Jh%LX;1D^9oT&v3d0WG*RtZG$G-P+xwi=*`e%gg;V3-o#avP+Z=p z=$LT!vW`L7g}+YT-C~y!#g3`CmO>eo14$)S{hdH5{<_}h4SkO*Tc$AK9VUzK-Zt)0(Bp#Db>cro%jc|2R#-?=gARaJqn;59* zUTNG`(kfOf?YddAezekA!pMQ9zGr&6K7@zi#me|H*wjMf)x69f&ws19WDA!;O8v#s_+Mf{r&_WfUJIAL1ZgfIbRs7ei1QTa-qtl$I?--p(|y5npYm9=z6t&U$>)LI~Bps`-5(I z5D2BtIGVU}wJc?^+n0E~Ud-I_M#Ju^uq7e>q=YU3KrUEH8W;Hqu_;@heug}@|20Gcs%MoJLuj=5(h#LXveSYEt^)4fjpxu zFVIuwOR>H$0I==CDT_hr`r1772u2rA6WK6SO~Y+&XAwz<<3*oqtAot0RZnOK*R zSckf9YX$J^Zm%43O<+u@xV>`hHG#3AnPz21Q6M8U&8*BS3S@Uxyfl<@F0XYfHLOTP)WHvn<2e6-=!~8AsVnNEnM}LZ&NN<%5xbRorLg_F0GCGg6u_ErxWEdp!Rr`qTQfsokJY{67>s^DD((GPKx3L6Pn43|Ql!+LYGX z6}bTOsXFXA4u?a%>|3{H&ed1 zA*uj|j2bp35axs);SMd$P8 z%U%B*8-D(H#3w#a_;1&a_*01;NGDJ-;!hD@N%-AsNBkk;j!%%1J>f&|V6RZs@h%DY zFqlwubb9Y(&q?rD;m7=suLmZpx|Lk5u=XPW$`eIp?HL$n3~xvS`-`6w{^Fet!gK5i ze{md-Gwu}4{m$o0irDVg9~Ogt0GGYX+x7>#Syco*)vG^)x7{;iZun$)!|=7p!7Ee4 z;gj!d7!!VXf<&zCdN+No;n@_=37Nvu1er z9@XEww(C6>z#;wJVO{Tzb^c-QkofeWLFXT$KjvUgbe$T}9Cu81IIv`twW;}C8MAVP z26ABFrs{G=7!dJbl~@7B(rtEO7%JfY9bvZPL*^&OIus1bgFwK8Mn!pSH!3n^C%r8b z1i@qd5i(Y_H6B4)Y+oV4B!&*KE9V+w0dFTC#gdDWjy#?0!4_wrm>zh03Lh?$j552h zk_eSEF|)(!C0^_!);4@3`RdeXARZb91D@aslJ+7_7`L7NrDAG_cy8;uQkE6}hEBi2 zGIv8sRkWDr4chdj=eLnG2`mbOjqci}(aPR{;n6X1=Wh6fhLzC(F^SORS|PPqyDxP* zxTn2FG}iA-^>k*q+Cc@en=`YS8v-9jgFhyS;s1Hfr|TdwfDpMl;{TFY-Q(6fTttHt zqGHALCF=(S^xmumn?H^I@E%4aIH4|j9oCSH)W{r6!JRfzdgr*11;Ac?hTfI2Wb;3w z+oyre8Y#vcS9E*98E?rMZ{Upg#xvg4XS}zZ@oqZfZ8_uJamITe-k>X4Uk8C3l;4=+ zj?D4sUB2r!e-z!G#deWQGWm>m=72X?0wL`Q_-*Pq6>Yre&Ay z1oWP)B>=;;fw3w&$HP1v6AAPgfzyVsx5NfUSBBo1v3T?Q2sP~&a76VyX>ozEUmy|{ z%a1A~K#A(}k|BXhRKGqM63|5To01`cPE@Z?h6F%SeVqzL^@e1uzzT#m84_?s^?Ot( zsy`^d`vqHNMfHMY zNFbQN@M5=hJCg%mq{1f8Mn9UCOiXuTy0Y=K6Vc+e=awMS!62zy%v%WJw5iQN`^&gkz&BYXjo7qe<9<(b?+c*|!kF(lEf^O3Z zV^d#miCeAtMJI}0(lTIm`U`8f+Pd^ICcKbh`f3f{Fgvpni%{v=7ka{c9oW$3+&^&( zl(M5UQ-f(3uw~%TT>0rEp$}B%`EX0kN;9&1GJ=LFZhPcj z6)&zCk?}N4aoZygt9WtSBabM*xb2Ze$}g@N3E�xb2bUDqdVOa-)hD*Nm)IesRsn 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ℑ;w;qi*Tv)Pfaa9lQp|*% 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 Icne?P9~qn>jQ{`u diff --git a/Build/ScintillaNET.3.5.dll b/Build/ScintillaNET.3.5.dll new file mode 100644 index 0000000000000000000000000000000000000000..555afd4340ec48f4f15726d802868c3b97cf87c3 GIT binary patch literal 189440 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 mUwnprcp7wI5 zsS}>zvu7!Ho|&9q;dPOH^m6(hTT^BAb(U9KtDg2dNlp`f;@NSM@7|5pX%cBWO z$Oa7apmWYy&O}VwTP|3K#ZPb^;lVj-%s%S0Abi@2=ZsXq)jX#p%N~08EwA@dqC8Nj zm#;aSVI{kKUTy3yNtgYx51%_%8f$UQP7jZ0ZhLia|7f4zrJw53+|Z2_#UDTMTl$y! zE83T@S>{)G(=wSB18fVQP*1Obx7a>di|mcG{q0-3wR@puXDv*$=wPX_&o~Tp^!Bgn z$gOQ%w{mSq>#B|w+18H!wF9l|R`hqQYVXKqR}HK%rp_~Q{bEPknl?QN%^sXRaL(LF z>+UYQo}xET^f`;?Pr4(gad)EMvnyKZltp4~k$U;Jw0ZeEgWLJg;CA_MnzV%{?I>z( zTo-M3F7t;c`bWnP4)y&$clR?^EgQY=NPX9Vp|L%hWraV%W|yMAbhBNV^YSMeCZ0dO_A|dAz~+m4Hf`?NhTK2iH3!XDEl`?Y&yR#87ZY_^&mvIu*lzOT`1%e-e`%!i{t{0&cK#q1QNy7UVY3j<_Di?Y_oqtUEpM4r-w z!8J_f?Vm%^<IX2DPt0kOgZ&1Bg}Sqxbj(#|ourxl*=F?iVkoHeKCl zT`r9N1Kb zomumxde>%#)sc ArgumentBox.cs - - UserControl - - - ScriptEditorControl.cs - Component - - - Component - UserControl @@ -534,6 +524,9 @@ + + False + False @@ -698,7 +691,9 @@ - + + ScriptEditorControl.cs + @@ -766,6 +761,12 @@ PasteOptionsControl.cs + + UserControl + + + ScriptEditorControl.cs + UserControl @@ -1128,6 +1129,13 @@ + + + + + + + @@ -1201,9 +1209,6 @@ - - - @@ -1219,10 +1224,6 @@ - - Designer - ScriptEditorControl.cs - diff --git a/Source/Core/Config/ProgramConfiguration.cs b/Source/Core/Config/ProgramConfiguration.cs index ef6afab4..6ef7a991 100644 --- a/Source/Core/Config/ProgramConfiguration.cs +++ b/Source/Core/Config/ProgramConfiguration.cs @@ -66,6 +66,7 @@ namespace CodeImp.DoomBuilder.Config private bool scriptfontbold; private bool scriptontop; private bool scriptautoindent; + private bool scriptusetabs; //mxd private bool snippetsallmanstyle; //mxd private string screenshotspath; //mxd private int scripttabwidth; @@ -162,6 +163,7 @@ namespace CodeImp.DoomBuilder.Config public int ZoomFactor { get { return zoomfactor; } internal set { zoomfactor = value; } } public bool ShowErrorsWindow { get { return showerrorswindow; } internal set { showerrorswindow = value; } } public bool AnimateVisualSelection { get { return animatevisualselection; } internal set { animatevisualselection = value; } } + public bool ScriptUseTabs { get { return scriptusetabs; } internal set { scriptusetabs = value; } } //mxd public int ScriptTabWidth { get { return scripttabwidth; } internal set { scripttabwidth = value; } } public bool ScriptAutoIndent { get { return scriptautoindent; } internal set { scriptautoindent = value; } } public bool SnippetsAllmanStyle { get { return snippetsallmanstyle; } internal set { snippetsallmanstyle = value; } } //mxd @@ -268,13 +270,14 @@ namespace CodeImp.DoomBuilder.Config movespeed = cfg.ReadSetting("movespeed", 100); viewdistance = cfg.ReadSetting("viewdistance", 3000.0f); invertyaxis = cfg.ReadSetting("invertyaxis", false); - scriptfontname = cfg.ReadSetting("scriptfontname", "Lucida Console"); + scriptfontname = cfg.ReadSetting("scriptfontname", "Courier New"); scriptfontsize = cfg.ReadSetting("scriptfontsize", 10); scriptfontbold = cfg.ReadSetting("scriptfontbold", false); scriptautoindent = cfg.ReadSetting("scriptautoindent", true); snippetsallmanstyle = cfg.ReadSetting("snippetsallmanstyle", false); //mxd screenshotspath = cfg.ReadSetting("screenshotspath", General.DefaultScreenshotsPath); //mxd scriptontop = cfg.ReadSetting("scriptontop", true); + scriptusetabs = cfg.ReadSetting("scriptusetabs", true); //mxd scripttabwidth = cfg.ReadSetting("scripttabwidth", 4); previewimagesize = cfg.ReadSetting("previewimagesize", 1); autoscrollspeed = cfg.ReadSetting("autoscrollspeed", 0); @@ -368,6 +371,7 @@ namespace CodeImp.DoomBuilder.Config cfg.WriteSetting("scriptfontsize", scriptfontsize); cfg.WriteSetting("scriptfontbold", scriptfontbold); cfg.WriteSetting("scriptontop", scriptontop); + cfg.WriteSetting("scriptusetabs", scriptusetabs); //mxd cfg.WriteSetting("scripttabwidth", scripttabwidth); cfg.WriteSetting("scriptautoindent", scriptautoindent); cfg.WriteSetting("snippetsallmanstyle", snippetsallmanstyle); //mxd diff --git a/Source/Core/Config/ScriptConfiguration.cs b/Source/Core/Config/ScriptConfiguration.cs index 80e93897..e7b59c44 100644 --- a/Source/Core/Config/ScriptConfiguration.cs +++ b/Source/Core/Config/ScriptConfiguration.cs @@ -21,6 +21,7 @@ using System.Collections; using System.Collections.Generic; using System.IO; using CodeImp.DoomBuilder.IO; +using ScintillaNET; #endregion @@ -54,21 +55,27 @@ namespace CodeImp.DoomBuilder.Config private readonly string[] extensions; private readonly bool casesensitive; private readonly int insertcase; - private readonly int lexer; + private readonly Lexer lexer; private readonly string keywordhelp; private readonly string functionopen; private readonly string functionclose; + private readonly string codeblockopen; //mxd + private readonly string codeblockclose; //mxd + private readonly string arrayopen; //mxd + private readonly string arrayclose; //mxd private readonly string argumentdelimiter; private readonly string terminator; - private readonly string functionregex; private readonly ScriptType scripttype; //mxd // Collections private readonly Dictionary keywords; private readonly Dictionary lowerkeywords; + private readonly List keywordkeyssorted; //mxd private readonly List constants; private readonly Dictionary lowerconstants; private readonly Dictionary snippets; //mxd + private readonly HashSet snippetkeyssorted; //mxd + private readonly HashSet braces; //mxd #endregion @@ -85,19 +92,23 @@ namespace CodeImp.DoomBuilder.Config public string[] Extensions { get { return extensions; } } public bool CaseSensitive { get { return casesensitive; } } public int InsertCase { get { return insertcase; } } - public int Lexer { get { return lexer; } } + public Lexer Lexer { get { return lexer; } } public string KeywordHelp { get { return keywordhelp; } } public string FunctionOpen { get { return functionopen; } } public string FunctionClose { get { return functionclose; } } + public string CodeBlockOpen { get { return codeblockopen; } } //mxd + public string CodeBlockClose { get { return codeblockclose; } } //mxd + public string ArrayOpen { get { return arrayopen; } } //mxd + public string ArrayClose { get { return arrayclose; } } //mxd public string ArgumentDelimiter { get { return argumentdelimiter; } } public string Terminator { get { return terminator; } } - public string FunctionRegEx { get { return functionregex; } } public ScriptType ScriptType { get { return scripttype; } } //mxd - public Dictionary Snippets { get { return snippets; } } //mxd // Collections - public ICollection Keywords { get { return keywords.Keys; } } + public ICollection Keywords { get { return keywordkeyssorted; } } public ICollection Constants { get { return constants; } } + public ICollection Snippets { get { return snippetkeyssorted; } } + public HashSet BraceChars { get { return braces; } } //mxd #endregion @@ -112,9 +123,13 @@ namespace CodeImp.DoomBuilder.Config this.constants = new List(); this.lowerkeywords = new Dictionary(StringComparer.Ordinal); this.lowerconstants = new Dictionary(StringComparer.Ordinal); + this.keywordkeyssorted = new List(); //mxd + this.snippets = new Dictionary(StringComparer.OrdinalIgnoreCase); //mxd + this.snippetkeyssorted = new HashSet(); //mxd + this.braces = new HashSet(); //mxd // Settings - lexer = 1; + lexer = Lexer.Null; casesensitive = false; codepage = 65001; parameters = ""; @@ -123,13 +138,15 @@ namespace CodeImp.DoomBuilder.Config keywordhelp = ""; functionopen = ""; functionclose = ""; + codeblockopen = ""; //mxd + codeblockclose = ""; //mxd + arrayopen = ""; //mxd + arrayclose = ""; //mxd argumentdelimiter = ""; terminator = ""; - functionregex = ""; description = "Plain text"; scripttype = ScriptType.UNKNOWN; //mxd extensions = new[] { "txt" }; - snippets = new Dictionary(StringComparer.Ordinal); //mxd } // Constructor @@ -140,7 +157,10 @@ namespace CodeImp.DoomBuilder.Config this.constants = new List(); this.lowerkeywords = new Dictionary(StringComparer.Ordinal); this.lowerconstants = new Dictionary(StringComparer.Ordinal); - this.snippets = new Dictionary(StringComparer.Ordinal); //mxd + this.keywordkeyssorted = new List(); //mxd + this.snippets = new Dictionary(StringComparer.OrdinalIgnoreCase); //mxd + this.snippetkeyssorted = new HashSet(); //mxd + this.braces = new HashSet(); //mxd // Read settings description = cfg.ReadSetting("description", "Untitled script"); @@ -151,14 +171,25 @@ namespace CodeImp.DoomBuilder.Config resultlump = cfg.ReadSetting("resultlump", ""); casesensitive = cfg.ReadSetting("casesensitive", true); insertcase = cfg.ReadSetting("insertcase", 0); - lexer = cfg.ReadSetting("lexer", 0); + lexer = (Lexer)cfg.ReadSetting("lexer", (int)Lexer.Container); keywordhelp = cfg.ReadSetting("keywordhelp", ""); functionopen = cfg.ReadSetting("functionopen", ""); functionclose = cfg.ReadSetting("functionclose", ""); + codeblockopen = cfg.ReadSetting("codeblockopen", ""); //mxd + codeblockclose = cfg.ReadSetting("codeblockclose", ""); //mxd + arrayopen = cfg.ReadSetting("arrayopen", ""); //mxd + arrayclose = cfg.ReadSetting("arrayclose", ""); //mxd argumentdelimiter = cfg.ReadSetting("argumentdelimiter", ""); terminator = cfg.ReadSetting("terminator", ""); - functionregex = cfg.ReadSetting("functionregex", ""); scripttype = (ScriptType)cfg.ReadSetting("scripttype", (int)ScriptType.UNKNOWN); //mxd + + //mxd. Make braces array + if(!string.IsNullOrEmpty(functionopen)) braces.Add(functionopen[0]); + if(!string.IsNullOrEmpty(functionclose)) braces.Add(functionclose[0]); + if(!string.IsNullOrEmpty(codeblockopen)) braces.Add(codeblockopen[0]); + if(!string.IsNullOrEmpty(codeblockclose)) braces.Add(codeblockclose[0]); + if(!string.IsNullOrEmpty(arrayopen)) braces.Add(arrayopen[0]); + if(!string.IsNullOrEmpty(arrayclose)) braces.Add(arrayclose[0]); // Make extensions array extensions = extensionsstring.Split(','); @@ -170,7 +201,11 @@ namespace CodeImp.DoomBuilder.Config { keywords.Add(de.Key.ToString(), de.Value.ToString()); lowerkeywords.Add(de.Key.ToString().ToLowerInvariant(), de.Key.ToString()); + keywordkeyssorted.Add(de.Key.ToString()); //mxd } + + //mxd. Sort keywords lookup + keywordkeyssorted.Sort(); // Load constants dic = cfg.ReadSetting("constants", new Hashtable()); @@ -179,6 +214,48 @@ namespace CodeImp.DoomBuilder.Config constants.Add(de.Key.ToString()); lowerconstants.Add(de.Key.ToString().ToLowerInvariant(), de.Key.ToString()); } + + //mxd + constants.Sort(); + + //mxd. Load Snippets + string snippetsdir = cfg.ReadSetting("snippetsdir", ""); + if(!string.IsNullOrEmpty(snippetsdir)) + { + string snippetspath = Path.Combine(General.SnippetsPath, snippetsdir); + if(Directory.Exists(snippetspath)) + { + string[] files = Directory.GetFiles(snippetspath, "*.txt", SearchOption.TopDirectoryOnly); + List sortedkeys = new List(); + + foreach(string file in files) + { + string name = Path.GetFileNameWithoutExtension(file); + if(string.IsNullOrEmpty(name)) + { + General.ErrorLogger.Add(ErrorType.Warning, "Failed to load snippet '" + file + "' for '" + description + "' script configuration."); + } + else + { + if(name.Contains(" ")) name = name.Replace(' ', '_'); + string[] lines = File.ReadAllLines(file); + if(lines.Length > 0) + { + snippets.Add(name, lines); + sortedkeys.Add(name); + } + else + { + General.ErrorLogger.Add(ErrorType.Warning, "Failed to load snippet '" + file + "' for '" + description + "' script configuration: file is empty!"); + } + } + } + + //mxd. Sort snippets lookup + sortedkeys.Sort(); + snippetkeyssorted = new HashSet(sortedkeys, StringComparer.OrdinalIgnoreCase); + } + } // Compiler specified? if(compilername.Length > 0) @@ -198,38 +275,6 @@ namespace CodeImp.DoomBuilder.Config // No compiler found? if(this.compiler == null) throw new Exception("No such compiler defined: '" + compilername + "'"); } - - //mxd. Load Snippets - string snippetsdir = cfg.ReadSetting("snippetsdir", ""); - if(!string.IsNullOrEmpty(snippetsdir)) - { - string snippetspath = Path.Combine(General.SnippetsPath, snippetsdir); - if(Directory.Exists(snippetspath)) - { - string[] files = Directory.GetFiles(snippetspath, "*.txt", SearchOption.TopDirectoryOnly); - - foreach(string file in files) - { - string name = Path.GetFileNameWithoutExtension(file); - if(name.Contains(" ")) - { - General.ErrorLogger.Add(ErrorType.Warning, "Failed to load snippet '" + file + "' for '" + description + "' script configuration: snippet file name must not contain spaces!"); - } - else - { - string[] lines = File.ReadAllLines(file); - if(lines.Length > 0) - { - snippets.Add(name, lines); - } - else - { - General.ErrorLogger.Add(ErrorType.Warning, "Failed to load snippet '" + file + "' for '" + description + "' script configuration: file is empty!"); - } - } - } - } - } } #endregion @@ -279,6 +324,12 @@ namespace CodeImp.DoomBuilder.Config return null; } + //mxd + public string[] GetSnippet(string name) + { + return (snippetkeyssorted.Contains(name) ? snippets[name] : null); + } + // This sorts by description public int CompareTo(ScriptConfiguration other) { diff --git a/Source/Core/Controls/ScriptDocumentTab.cs b/Source/Core/Controls/ScriptDocumentTab.cs index 98acbd0a..bd7b5daf 100644 --- a/Source/Core/Controls/ScriptDocumentTab.cs +++ b/Source/Core/Controls/ScriptDocumentTab.cs @@ -20,13 +20,13 @@ using System; using System.IO; using System.Collections.Generic; using System.Drawing; -using System.Text; using System.Windows.Forms; using CodeImp.DoomBuilder.Windows; using CodeImp.DoomBuilder.Config; using CodeImp.DoomBuilder.Compilers; using CodeImp.DoomBuilder.GZBuilder.Data; using CodeImp.DoomBuilder.GZBuilder.GZDoom; +using ScintillaNET; #endregion @@ -36,8 +36,7 @@ namespace CodeImp.DoomBuilder.Controls { #region ================== Constants - private const int NAVIGATOR_BORDER_TOP = 8; //mxd - private const int EDITOR_BORDER_TOP = 33; + private const int EDITOR_BORDER_TOP = 4; private const int EDITOR_BORDER_BOTTOM = 4; private const int EDITOR_BORDER_LEFT = 4; private const int EDITOR_BORDER_RIGHT = 4; @@ -48,7 +47,6 @@ namespace CodeImp.DoomBuilder.Controls // The script edit control protected readonly ScriptEditorControl editor; - protected readonly ComboBox navigator; //mxd private bool preventchanges; //mxd private string title; //mxd @@ -68,10 +66,14 @@ namespace CodeImp.DoomBuilder.Controls public virtual bool IsReconfigurable { get { return true; } } public virtual string Filename { get { return null; } } public ScriptEditorPanel Panel { get { return panel; } } - public new string Text { get { return title; } } //mxd - public bool IsChanged { get { return editor.IsChanged; } internal set { editor.IsChanged = value; } } //mxd. Added setter + internal Scintilla Scintilla { get { return editor.Scintilla; } } //mxd + public string Title { get { return title; } } //mxd + public bool IsChanged { get { return editor.IsChanged; } } public int SelectionStart { get { return editor.SelectionStart; } set { editor.SelectionStart = value; } } public int SelectionEnd { get { return editor.SelectionEnd; } set { editor.SelectionEnd = value; } } + public bool ShowWhitespace { get { return editor.ShowWhitespace; } set { editor.ShowWhitespace = value; } } //mxd + public bool WrapLongLines { get { return editor.WrapLongLines; } set { editor.WrapLongLines = value; } } //mxd + public string SelectedText { get { return editor.SelectedText; } } //mxd public ScriptConfiguration Config { get { return config; } } #endregion @@ -89,19 +91,6 @@ namespace CodeImp.DoomBuilder.Controls { // Keep panel this.panel = panel; - - //mxd - navigator = new ComboBox(); - navigator.Location = new Point(EDITOR_BORDER_LEFT, NAVIGATOR_BORDER_TOP); - navigator.Width = this.ClientSize.Width - EDITOR_BORDER_LEFT - EDITOR_BORDER_RIGHT; - navigator.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; - navigator.DropDownStyle = ComboBoxStyle.DropDownList; - navigator.Name = "navigator"; - navigator.TabStop = true; - navigator.TabIndex = 0; - navigator.DropDown += navigator_DropDown; - navigator.SelectedIndexChanged += navigator_SelectedIndexChanged; - this.Controls.Add(navigator); // Make the script control editor = new ScriptEditorControl(); @@ -121,6 +110,11 @@ namespace CodeImp.DoomBuilder.Controls editor.OnFindNext += panel.FindNext; editor.OnFindPrevious += panel.FindPrevious; //mxd editor.OnTextChanged += editor_TextChanged; //mxd + + //mxd. Bind functionbar events + editor.FunctionBar.DropDown += functionbar_DropDown; + editor.FunctionBar.SelectedIndexChanged += functionbar_SelectedIndexChanged; + } // Disposer @@ -263,112 +257,13 @@ namespace CodeImp.DoomBuilder.Controls // Find next result public bool FindNext(FindReplaceOptions options, bool useselectionstart) { - byte[] data = editor.GetText(); - string text = Encoding.GetEncoding(config.CodePage).GetString(data); - StringComparison mode = options.CaseSensitive ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase; - int startpos = (useselectionstart ? Math.Min(editor.SelectionStart, editor.SelectionEnd) : Math.Max(editor.SelectionStart, editor.SelectionEnd)); //mxd - bool wrapped = false; - - while(true) - { - int result = text.IndexOf(options.FindText, startpos, mode); - if(result > -1) - { - // Check to see if it is the whole word - if(options.WholeWord) - { - // Veryfy that we have found a whole word - string foundword = editor.GetWordAt(result + 1); - if(foundword.Length != options.FindText.Length) - { - startpos = result + 1; - result = -1; - } - } - - // Still ok? - if(result > -1) - { - // Select the result - editor.SelectionStart = result; - editor.SelectionEnd = result + options.FindText.Length; - editor.EnsureLineVisible(editor.LineFromPosition(editor.SelectionEnd)); - return true; - } - } - else - { - // If we haven't tried from the start, try from the start now - if((startpos > 0) && !wrapped) - { - startpos = 0; - wrapped = true; - } - else - { - // Can't find it - return false; - } - } - } + return editor.FindNext(options, useselectionstart); } // Find previous result (mxd) - public bool FindPrevious(FindReplaceOptions options) + public bool FindPrevious(FindReplaceOptions options) { - bool wrapped = false; - byte[] data = editor.GetText(); - string text = Encoding.GetEncoding(config.CodePage).GetString(data); - StringComparison mode = options.CaseSensitive ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase; - int endpos = Math.Min(editor.SelectionStart, editor.SelectionEnd) - 1; - if(endpos < 0) - { - endpos = text.Length - 1; - wrapped = true; - } - - while(true) - { - int result = text.LastIndexOf(options.FindText, endpos, mode); - if(result > -1) - { - // Check to see if it is the whole word - if(options.WholeWord) - { - // Veryfy that we have found a whole word - string foundword = editor.GetWordAt(result + 1); - if(foundword.Length != options.FindText.Length) - { - endpos = result - 1; - result = -1; - } - } - - // Still ok? - if(result > -1) - { - // Select the result - editor.SelectionStart = result; - editor.SelectionEnd = result + options.FindText.Length; - editor.EnsureLineVisible(editor.LineFromPosition(editor.SelectionEnd)); - return true; - } - } - else - { - // If we haven't tried from the end, try from the end now - if(!wrapped) - { - endpos = Math.Max(0, text.Length - 2); - wrapped = true; - } - else - { - // Can't find it - return false; - } - } - } + return editor.FindPrevious(options); } // This replaces the selection with the given text @@ -376,20 +271,13 @@ namespace CodeImp.DoomBuilder.Controls { editor.ReplaceSelection(replacement); } - - // This returns the selected text - public string GetSelectedText() - { - byte[] data = editor.GetText(); - string text = Encoding.GetEncoding(config.CodePage).GetString(data); - if(editor.SelectionStart < editor.SelectionEnd) - return text.Substring(editor.SelectionStart, editor.SelectionEnd - editor.SelectionStart); - return ""; - } //mxd - protected void UpdateNavigator() + protected void UpdateNavigator() { + // Store currently selected item name + string prevtext = editor.FunctionBar.Text; + switch(config.ScriptType) { case ScriptType.ACS: @@ -405,16 +293,33 @@ namespace CodeImp.DoomBuilder.Controls break; default: // Unsupported script type. Just clear the items - navigator.Items.Clear(); + editor.FunctionBar.Items.Clear(); break; } // Put some text in the navigator (but don't actually trigger selection event) - navigator.Enabled = (navigator.Items.Count > 0); - if(navigator.Items.Count > 0) + editor.FunctionBar.Enabled = (editor.FunctionBar.Items.Count > 0); + if(editor.FunctionBar.Items.Count > 0) { preventchanges = true; - navigator.Text = navigator.Items[0].ToString(); + + // Put the text back if we still have the corresponding item + if(!string.IsNullOrEmpty(prevtext)) + { + foreach(var item in editor.FunctionBar.Items) + { + if(item.ToString() == prevtext) + { + editor.FunctionBar.Text = item.ToString(); + break; + } + } + } + + // No dice. Use the first item + if(string.IsNullOrEmpty(editor.FunctionBar.Text)) + editor.FunctionBar.Text = editor.FunctionBar.Items[0].ToString(); + preventchanges = false; } } @@ -423,12 +328,12 @@ namespace CodeImp.DoomBuilder.Controls private void UpdateNavigatorDecorate(MemoryStream stream) { if(stream == null) return; - navigator.Items.Clear(); + editor.FunctionBar.Items.Clear(); DecorateParserSE parser = new DecorateParserSE(); if(parser.Parse(stream, "DECORATE", false)) { - navigator.Items.AddRange(parser.Actors.ToArray()); + editor.FunctionBar.Items.AddRange(parser.Actors.ToArray()); } if(parser.HasError) @@ -441,12 +346,12 @@ namespace CodeImp.DoomBuilder.Controls private void UpdateNavigatorModeldef(MemoryStream stream) { if(stream == null) return; - navigator.Items.Clear(); + editor.FunctionBar.Items.Clear(); ModeldefParserSE parser = new ModeldefParserSE(); if(parser.Parse(stream, "MODELDEF", false)) { - navigator.Items.AddRange(parser.Models.ToArray()); + editor.FunctionBar.Items.AddRange(parser.Models.ToArray()); } if(parser.HasError) @@ -459,14 +364,14 @@ namespace CodeImp.DoomBuilder.Controls private void UpdateNavigatorAcs(MemoryStream stream) { if(stream == null) return; - navigator.Items.Clear(); + editor.FunctionBar.Items.Clear(); AcsParserSE parser = new AcsParserSE { AddArgumentsToScriptNames = true, IsMapScriptsLump = this is ScriptLumpDocumentTab }; if(parser.Parse(stream, "SCRIPTS", false)) { - navigator.Items.AddRange(parser.NamedScripts.ToArray()); - navigator.Items.AddRange(parser.NumberedScripts.ToArray()); - navigator.Items.AddRange(parser.Functions.ToArray()); + editor.FunctionBar.Items.AddRange(parser.NamedScripts.ToArray()); + editor.FunctionBar.Items.AddRange(parser.NumberedScripts.ToArray()); + editor.FunctionBar.Items.AddRange(parser.Functions.ToArray()); } if(parser.HasError) @@ -494,9 +399,16 @@ namespace CodeImp.DoomBuilder.Controls } //mxd - internal void InsertSnippet(string[] lines) + internal void InsertSnippet(string name) { - editor.InsertSnippet(lines); + string[] lines = config.GetSnippet(name); + if(lines != null) editor.InsertSnippet(lines); + } + + //mxd + internal void IndentSelection(bool indent) + { + editor.IndentSelection(indent); } #endregion @@ -524,11 +436,11 @@ namespace CodeImp.DoomBuilder.Controls } //mxd - private void navigator_SelectedIndexChanged(object sender, EventArgs e) + private void functionbar_SelectedIndexChanged(object sender, EventArgs e) { - if(!preventchanges && navigator.SelectedItem is ScriptItem) + if(!preventchanges && editor.FunctionBar.SelectedItem is ScriptItem) { - ScriptItem si = navigator.SelectedItem as ScriptItem; + ScriptItem si = editor.FunctionBar.SelectedItem as ScriptItem; editor.EnsureLineVisible(editor.LineFromPosition(si.CursorPosition)); editor.SelectionStart = si.CursorPosition; editor.SelectionEnd = si.CursorPosition; @@ -540,7 +452,7 @@ namespace CodeImp.DoomBuilder.Controls } //mxd - private void navigator_DropDown(object sender, EventArgs e) + private void functionbar_DropDown(object sender, EventArgs e) { if(!preventchanges && editor.IsChanged) UpdateNavigator(); } diff --git a/Source/Core/Controls/ScriptEditorControl.Designer.cs b/Source/Core/Controls/ScriptEditorControl.Designer.cs index 17499de3..f1123f59 100644 --- a/Source/Core/Controls/ScriptEditorControl.Designer.cs +++ b/Source/Core/Controls/ScriptEditorControl.Designer.cs @@ -28,109 +28,37 @@ namespace CodeImp.DoomBuilder.Controls /// private void InitializeComponent() { - this.functionbar = new System.Windows.Forms.ComboBox(); - this.scriptedit = new CodeImp.DoomBuilder.Controls.ScintillaControl(); + this.scriptedit = new ScintillaNET.Scintilla(); this.scriptpanel = new System.Windows.Forms.Panel(); + this.functionbar = new System.Windows.Forms.ComboBox(); this.scriptpanel.SuspendLayout(); this.SuspendLayout(); // - // functionbar - // - this.functionbar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.functionbar.FormattingEnabled = true; - this.functionbar.Items.AddRange(new object[] { - "Function1", - "Function2", - "Function3"}); - this.functionbar.Location = new System.Drawing.Point(0, 0); - this.functionbar.Name = "functionbar"; - this.functionbar.Size = new System.Drawing.Size(474, 21); - this.functionbar.TabIndex = 1; - this.functionbar.TabStop = false; - // // scriptedit // - this.scriptedit.AnchorPosition = 0; - this.scriptedit.AutoCMaximumHeight = 0; - this.scriptedit.AutoCMaximumWidth = 0; - this.scriptedit.AutoCSeparator = 0; - this.scriptedit.AutoCTypeSeparator = 0; - this.scriptedit.BackColor = System.Drawing.SystemColors.Window; - this.scriptedit.CaretFore = 0; - this.scriptedit.CaretLineBack = 0; - this.scriptedit.CaretPeriod = 0; - this.scriptedit.CaretWidth = 0; - this.scriptedit.CodePage = 0; - this.scriptedit.ControlCharSymbol = 0; - this.scriptedit.CurrentPos = 0; - this.scriptedit.CursorType = 0; + this.scriptedit.AutoCIgnoreCase = true; + this.scriptedit.AutoCMaxHeight = 12; + this.scriptedit.AutoCOrder = ScintillaNET.Order.Custom; + this.scriptedit.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.scriptedit.CaretWidth = 2; this.scriptedit.Dock = System.Windows.Forms.DockStyle.Fill; - this.scriptedit.DocPointer = 0; - this.scriptedit.EdgeColour = 0; - this.scriptedit.EdgeColumn = 0; - this.scriptedit.EdgeMode = 0; - this.scriptedit.EndAtLastLine = 0; - this.scriptedit.EndOfLineMode = CodeImp.DoomBuilder.Controls.ScriptEndOfLine.CRLF; - this.scriptedit.EOLMode = 0; - this.scriptedit.ExtraAscent = 0; - this.scriptedit.ExtraDescent = 0; - this.scriptedit.HighlightGuide = 0; - this.scriptedit.Indent = 0; - this.scriptedit.IndentationGuides = 0; - this.scriptedit.IsAutoCGetAutoHide = false; - this.scriptedit.IsAutoCGetCancelAtStart = false; - this.scriptedit.IsAutoCGetChooseSingle = false; - this.scriptedit.IsAutoCGetDropRestOfWord = false; - this.scriptedit.IsAutoCGetIgnoreCase = false; - this.scriptedit.IsBackSpaceUnIndents = false; - this.scriptedit.IsBufferedDraw = false; - this.scriptedit.IsCaretLineVisible = false; - this.scriptedit.IsFocus = false; - this.scriptedit.IsHScrollBar = false; - this.scriptedit.IsMouseDownCaptures = false; - this.scriptedit.IsOvertype = false; - this.scriptedit.IsReadOnly = false; - this.scriptedit.IsTabIndents = false; - this.scriptedit.IsTwoPhaseDraw = false; - this.scriptedit.IsUndoCollection = false; - this.scriptedit.IsUsePalette = false; - this.scriptedit.IsUseTabs = false; - this.scriptedit.IsViewEOL = false; - this.scriptedit.IsVScrollBar = false; - this.scriptedit.LayoutCache = 0; - this.scriptedit.Lexer = 0; + this.scriptedit.ExtraAscent = 1; + this.scriptedit.ExtraDescent = 1; + this.scriptedit.FontQuality = ScintillaNET.FontQuality.LcdOptimized; this.scriptedit.Location = new System.Drawing.Point(0, 0); - this.scriptedit.MarginLeft = 0; - this.scriptedit.MarginRight = 0; - this.scriptedit.ModEventMask = 0; - this.scriptedit.MouseDwellTime = 0; this.scriptedit.Name = "scriptedit"; - this.scriptedit.PrintColourMode = 0; - this.scriptedit.PrintMagnification = 0; - this.scriptedit.PrintWrapMode = 0; - this.scriptedit.ScrollWidth = 0; - this.scriptedit.SearchFlags = 0; - this.scriptedit.SelectionEnd = 0; - this.scriptedit.SelectionMode = 0; - this.scriptedit.SelectionStart = 0; - this.scriptedit.Size = new System.Drawing.Size(470, 377); - this.scriptedit.Status = 0; - this.scriptedit.StyleBits = 0; + this.scriptedit.ScrollWidth = 200; + this.scriptedit.Size = new System.Drawing.Size(474, 381); this.scriptedit.TabIndex = 0; this.scriptedit.TabStop = false; - this.scriptedit.TabWidth = 0; - this.scriptedit.TargetEnd = 0; - this.scriptedit.TargetStart = 0; - this.scriptedit.ViewWhitespace = CodeImp.DoomBuilder.Controls.ScriptWhiteSpace.Invisible; - this.scriptedit.ViewWS = 0; - this.scriptedit.WrapMode = 0; - this.scriptedit.WrapStartIndent = 0; - this.scriptedit.WrapVisualFlags = 0; - this.scriptedit.WrapVisualFlagsLocation = 0; - this.scriptedit.XOffset = 0; - this.scriptedit.ZoomLevel = 0; + this.scriptedit.UseTabs = true; + this.scriptedit.WhitespaceSize = 2; + this.scriptedit.TextChanged += new System.EventHandler(this.scriptedit_TextChanged); + this.scriptedit.CharAdded += new System.EventHandler(this.scriptedit_CharAdded); + this.scriptedit.AutoCCompleted += new System.EventHandler(this.scriptedit_AutoCCompleted); + this.scriptedit.InsertCheck += new System.EventHandler(this.scriptedit_InsertCheck); this.scriptedit.KeyUp += new System.Windows.Forms.KeyEventHandler(this.scriptedit_KeyUp); + this.scriptedit.UpdateUI += new System.EventHandler(this.scriptedit_UpdateUI); this.scriptedit.KeyDown += new System.Windows.Forms.KeyEventHandler(this.scriptedit_KeyDown); // // scriptpanel @@ -138,13 +66,24 @@ namespace CodeImp.DoomBuilder.Controls this.scriptpanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.scriptpanel.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; this.scriptpanel.Controls.Add(this.scriptedit); this.scriptpanel.Location = new System.Drawing.Point(0, 27); this.scriptpanel.Name = "scriptpanel"; this.scriptpanel.Size = new System.Drawing.Size(474, 381); this.scriptpanel.TabIndex = 2; // + // functionbar + // + this.functionbar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.functionbar.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.functionbar.FormattingEnabled = true; + this.functionbar.Location = new System.Drawing.Point(0, 0); + this.functionbar.Name = "functionbar"; + this.functionbar.Size = new System.Drawing.Size(474, 21); + this.functionbar.TabIndex = 2; + this.functionbar.TabStop = false; + // // ScriptEditorControl // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); @@ -160,8 +99,8 @@ namespace CodeImp.DoomBuilder.Controls #endregion - private ScintillaControl scriptedit; - private System.Windows.Forms.ComboBox functionbar; + private ScintillaNET.Scintilla scriptedit; private System.Windows.Forms.Panel scriptpanel; + private System.Windows.Forms.ComboBox functionbar; } } diff --git a/Source/Core/Controls/ScriptEditorControl.cs b/Source/Core/Controls/ScriptEditorControl.cs index 687c2a5d..1e8037a8 100644 --- a/Source/Core/Controls/ScriptEditorControl.cs +++ b/Source/Core/Controls/ScriptEditorControl.cs @@ -17,17 +17,19 @@ #region ================== Namespaces using System; +using System.Collections; using System.Collections.Generic; +using System.Drawing; +using System.Globalization; +using System.IO; using System.Text; using System.Windows.Forms; using CodeImp.DoomBuilder.Config; -using System.IO; using CodeImp.DoomBuilder.IO; -using System.Collections; -using System.Globalization; using CodeImp.DoomBuilder.Rendering; using CodeImp.DoomBuilder.Properties; using CodeImp.DoomBuilder.Windows; +using ScintillaNET; #endregion @@ -35,11 +37,19 @@ namespace CodeImp.DoomBuilder.Controls { internal partial class ScriptEditorControl : UserControl { - #region ================== Constants - - private const string LEXERS_RESOURCE = "Lexers.cfg"; - private const int DEFAULT_STYLE = (int)ScriptStylesCommon.Default; - private const int MAX_BACKTRACK_LENGTH = 200; + #region ================== Enums + + private enum ScriptStyleType + { + PlainText = 0, + Keyword = 1, + Constant = 2, + Comment = 3, + Literal = 4, + LineNumber = 5, + String = 6, //mxd + Include = 7, //mxd + } // Index for registered images private enum ImageIndex @@ -49,6 +59,14 @@ namespace CodeImp.DoomBuilder.Controls ScriptError = 2, ScriptSnippet = 3, //mxd } + + #endregion + + #region ================== Constants + + private const string LEXERS_RESOURCE = "Lexers.cfg"; + private const int MAX_BACKTRACK_LENGTH = 200; + private const int HIGHLIGHT_INDICATOR = 8; //mxd. Indicators 0-7 could be in use by a lexer so we'll use indicator 8 to highlight words. #endregion @@ -74,8 +92,8 @@ namespace CodeImp.DoomBuilder.Controls // Script configuration private ScriptConfiguration scriptconfig; - // List of keywords and constants, sorted as uppercase - private string autocompletestring; + // List of keywords and constants + private List autocompletelist; // Style translation from Scintilla style to ScriptStyleType private Dictionary stylelookup; @@ -84,19 +102,27 @@ namespace CodeImp.DoomBuilder.Controls private string curfunctionname = ""; private int curargumentindex; private int curfunctionstartpos; - - // Status - private bool changed; + private int linenumbercharlength; //mxd. Current max number of chars in the line number + private int lastcaretpos; //mxd. Used in brace matching + private int caretoffset; //mxd. Used to modify caret position after autogenerating stuff + private bool skiptextinsert; //mxd. Gross hacks + private bool expandcodeblock; //mxd. More gross hacks + private string highlightedword; //mxd #endregion #region ================== Properties - public bool IsChanged { get { return changed; } set { changed = value; } } - public int Position { get { return scriptedit.CurrentPos; } set { scriptedit.CurrentPos = value; } } + public bool IsChanged { get { return scriptedit.Modified; } } public int SelectionStart { get { return scriptedit.SelectionStart; } set { scriptedit.SelectionStart = value; } } public int SelectionEnd { get { return scriptedit.SelectionEnd; } set { scriptedit.SelectionEnd = value; } } - + public new string Text { get { return scriptedit.Text; } set { scriptedit.Text = value; } } //mxd + public string SelectedText { get { return scriptedit.SelectedText; } } //mxd + public bool ShowWhitespace { get { return scriptedit.ViewWhitespace != WhitespaceMode.Invisible; } set { scriptedit.ViewWhitespace = value ? WhitespaceMode.VisibleAlways : WhitespaceMode.Invisible; } } + public bool WrapLongLines { get { return scriptedit.WrapMode != WrapMode.None; } set { scriptedit.WrapMode = (value ? WrapMode.Char : WrapMode.None); } } + public ComboBox FunctionBar { get { return functionbar; } } //mxd + public Scintilla Scintilla { get { return scriptedit; } } //mxd + #endregion #region ================== Contructor / Disposer @@ -108,53 +134,28 @@ namespace CodeImp.DoomBuilder.Controls InitializeComponent(); // Script editor properties - // Unfortunately, these cannot be set using the designer - // because the control is not really loaded in design mode - scriptedit.AutoCMaximumHeight = 8; - scriptedit.AutoCSeparator = ' '; - scriptedit.AutoCTypeSeparator = '?'; - scriptedit.AutoCSetFillUps("\r\n();[]"); // I should put this in the script configs - scriptedit.CaretWidth = 2; - scriptedit.EndAtLastLine = 1; - scriptedit.EndOfLineMode = ScriptEndOfLine.CRLF; - scriptedit.IsAutoCGetChooseSingle = true; - scriptedit.IsAutoCGetIgnoreCase = true; - scriptedit.IsBackSpaceUnIndents = true; - scriptedit.IsBufferedDraw = true; - scriptedit.IsCaretLineVisible = false; - scriptedit.IsHScrollBar = true; - scriptedit.IndentationGuides = (int)ScriptIdentGuides.None; - scriptedit.IsMouseDownCaptures = true; - scriptedit.IsTabIndents = true; - scriptedit.IsUndoCollection = true; - scriptedit.IsUseTabs = true; - scriptedit.IsViewEOL = false; - scriptedit.IsVScrollBar = true; - scriptedit.SetFoldFlags((int)ScriptFoldFlag.Box); - scriptedit.TabWidth = 4; - scriptedit.Indent = 4; - scriptedit.ExtraAscent = 1; - scriptedit.ExtraDescent = 1; - scriptedit.CursorType = -1; + //TODO: use ScintillaNET properties instead when they become available + scriptedit.DirectMessage(NativeMethods.SCI_SETBACKSPACEUNINDENTS, new IntPtr(1)); + scriptedit.DirectMessage(NativeMethods.SCI_SETMOUSEDOWNCAPTURES, new IntPtr(1)); + scriptedit.DirectMessage(NativeMethods.SCI_SETTABINDENTS, new IntPtr(1)); // Symbol margin - scriptedit.SetMarginTypeN(0, (int)ScriptMarginType.Symbol); - scriptedit.SetMarginWidthN(0, 20); - scriptedit.SetMarginMaskN(0, -1); // all + scriptedit.Margins[0].Type = MarginType.Symbol; + scriptedit.Margins[0].Width = 20; + scriptedit.Margins[0].Mask = 1 << (int)ImageIndex.ScriptError; // Error marker only + scriptedit.Margins[0].Cursor = MarginCursor.Arrow; + scriptedit.Margins[0].Sensitive = true; // Line numbers margin - scriptedit.SetMarginTypeN(1, (int)ScriptMarginType.Number); - scriptedit.SetMarginWidthN(1, 40); - scriptedit.SetMarginMaskN(1, 0); // none + scriptedit.Margins[1].Type = MarginType.Number; + scriptedit.Margins[1].Width = 16; + scriptedit.Margins[1].Mask = 0; // No markers here // Spacing margin - scriptedit.SetMarginTypeN(2, (int)ScriptMarginType.Symbol); - scriptedit.SetMarginWidthN(2, 5); - scriptedit.SetMarginMaskN(2, 0); // none - - // Setup with default script config - // Disabled, the form designer doesn't like this - //SetupStyles(new ScriptConfiguration()); + scriptedit.Margins[2].Type = MarginType.Symbol; + scriptedit.Margins[2].Width = 5; + scriptedit.Margins[2].Cursor = MarginCursor.Arrow; + scriptedit.Margins[2].Mask = 0; // No markers here // Images RegisterAutoCompleteImage(ImageIndex.ScriptConstant, Resources.ScriptConstant); @@ -162,17 +163,42 @@ namespace CodeImp.DoomBuilder.Controls RegisterAutoCompleteImage(ImageIndex.ScriptSnippet, Resources.ScriptSnippet); //mxd RegisterMarkerImage(ImageIndex.ScriptError, Resources.ScriptError); - // Events - scriptedit.ModEventMask = 0x7FFFF; // Which events to receive (see also ScriptModificationFlags) - scriptedit.TextDeleted += scriptedit_TextChanged; //mxd - scriptedit.TextInserted += scriptedit_TextChanged; //mxd - scriptedit.UndoPerformed += scriptedit_UndoRedoPerformed; //mxd - scriptedit.RedoPerformed += scriptedit_UndoRedoPerformed; //mxd + //mxd. These key combinations put odd characters in the script. Let's disable them + scriptedit.AssignCmdKey(Keys.Control | Keys.Q, Command.Null); + scriptedit.AssignCmdKey(Keys.Control | Keys.W, Command.Null); + scriptedit.AssignCmdKey(Keys.Control | Keys.E, Command.Null); + scriptedit.AssignCmdKey(Keys.Control | Keys.R, Command.Null); + scriptedit.AssignCmdKey(Keys.Control | Keys.Y, Command.Null); + scriptedit.AssignCmdKey(Keys.Control | Keys.U, Command.Null); + scriptedit.AssignCmdKey(Keys.Control | Keys.I, Command.Null); + scriptedit.AssignCmdKey(Keys.Control | Keys.P, Command.Null); + scriptedit.AssignCmdKey(Keys.Control | Keys.Shift | Keys.A, Command.Null); + scriptedit.AssignCmdKey(Keys.Control | Keys.D, Command.Null); + scriptedit.AssignCmdKey(Keys.Control | Keys.G, Command.Null); + scriptedit.AssignCmdKey(Keys.Control | Keys.H, Command.Null); + scriptedit.AssignCmdKey(Keys.Control | Keys.J, Command.Null); + scriptedit.AssignCmdKey(Keys.Control | Keys.K, Command.Null); + scriptedit.AssignCmdKey(Keys.Control | Keys.L, Command.Null); + scriptedit.AssignCmdKey(Keys.Control | Keys.Shift | Keys.Z, Command.Null); + scriptedit.AssignCmdKey(Keys.Control | Keys.Shift | Keys.X, Command.Null); + scriptedit.AssignCmdKey(Keys.Control | Keys.Shift | Keys.C, Command.Null); + scriptedit.AssignCmdKey(Keys.Control | Keys.Shift | Keys.V, Command.Null); + scriptedit.AssignCmdKey(Keys.Control | Keys.B, Command.Null); + scriptedit.AssignCmdKey(Keys.Control | Keys.N, Command.Null); + scriptedit.AssignCmdKey(Keys.Control | Keys.M, Command.Null); + + //mxd. These key combinations are used to perform special actions. Let's disable them + scriptedit.AssignCmdKey(Keys.F3, Command.Null); // F3 for Find Next + scriptedit.AssignCmdKey(Keys.F2, Command.Null); // F2 for Find Previous + scriptedit.AssignCmdKey(Keys.Control | Keys.F, Command.Null); // CTRL+F for find & replace + scriptedit.AssignCmdKey(Keys.Control | Keys.S, Command.Null); // CTRL+S for save + scriptedit.AssignCmdKey(Keys.Control | Keys.O, Command.Null); // CTRL+O for open + scriptedit.AssignCmdKey(Keys.Control | Keys.Space, Command.Null); // CTRL+Space to autocomplete <- TODO: this doesn't seem to work... } #endregion - #region ================== Methods + #region ================== Public methods // This launches keyword help website public bool LaunchKeywordHelp() @@ -186,40 +212,38 @@ namespace CodeImp.DoomBuilder.Controls General.OpenWebsite(helpsite); return true; } + return !string.IsNullOrEmpty(helpsite); //mxd } // This replaces the selection with the given text public void ReplaceSelection(string replacement) { - Encoding encoder = Encoding.GetEncoding(scriptedit.CodePage); - string text = encoder.GetString(GetText()); - int selectionstart = scriptedit.SelectionStart; - - // Make new text - StringBuilder newtext = new StringBuilder(text.Length + replacement.Length); - newtext.Append(text.Substring(0, scriptedit.SelectionStart)); - newtext.Append(replacement); - newtext.Append(text.Substring(scriptedit.SelectionEnd)); - - SetText(encoder.GetBytes(newtext.ToString())); - - // Adjust selection - scriptedit.SelectionStart = selectionstart; - scriptedit.SelectionEnd = selectionstart + replacement.Length; + scriptedit.ReplaceSelection(replacement); //mxd TODO: encoding check/conversion? } // This moves the caret to a given line and ensures the line is visible public void MoveToLine(int linenumber) { - scriptedit.GotoLine(linenumber); + scriptedit.Lines[linenumber].Goto(); EnsureLineVisible(linenumber); } // This makes sure a line is visible public void EnsureLineVisible(int linenumber) { - scriptedit.EnsureVisibleEnforcePolicy(linenumber); + // Determine target lines range + int startline = Math.Max(0, linenumber - 4); + int endline = Math.Min(scriptedit.Lines.Count, Math.Max(linenumber, linenumber + scriptedit.LinesOnScreen - 6)); + + // Go to target line + scriptedit.ShowLines(startline, endline); + + // We may want to do some scrolling... + if(scriptedit.FirstVisibleLine >= startline) + scriptedit.Lines[startline].Goto(); + else if(scriptedit.FirstVisibleLine + scriptedit.LinesOnScreen <= endline) + scriptedit.Lines[endline].Goto(); } // This returns the line for a position @@ -237,7 +261,7 @@ namespace CodeImp.DoomBuilder.Controls // This adds a mark on the given line public void AddMark(int linenumber) { - scriptedit.MarkerAdd(linenumber, (int)ImageIndex.ScriptError); + scriptedit.Lines[linenumber].MarkerAdd((int)ImageIndex.ScriptError); } // This refreshes the style setup @@ -254,7 +278,7 @@ namespace CodeImp.DoomBuilder.Controls // Make collections stylelookup = new Dictionary(); - SortedList autocompletelist = new SortedList(StringComparer.Ordinal); + Dictionary autocompletedict = new Dictionary(StringComparer.Ordinal); // Keep script configuration scriptconfig = config; @@ -268,60 +292,78 @@ namespace CodeImp.DoomBuilder.Controls { // Get a stream from the resource Stream lexersdata = General.ThisAssembly.GetManifestResourceStream(rn); - StreamReader lexersreader = new StreamReader(lexersdata, Encoding.ASCII); + if(lexersdata != null) + { + StreamReader lexersreader = new StreamReader(lexersdata, Encoding.ASCII); - // Load configuration from stream - lexercfg.InputConfiguration(lexersreader.ReadToEnd()); + // Load configuration from stream + lexercfg.InputConfiguration(lexersreader.ReadToEnd()); - // Done with the resource - lexersreader.Dispose(); - lexersdata.Dispose(); + // Done with the resource + lexersreader.Dispose(); + lexersdata.Dispose(); + } + + //mxd. We are done here + break; } } // Check if specified lexer exists and set the lexer to use - string lexername = "lexer" + scriptconfig.Lexer.ToString(CultureInfo.InvariantCulture); + string lexername = "lexer" + (int)scriptconfig.Lexer; if(!lexercfg.SettingExists(lexername)) throw new InvalidOperationException("Unknown lexer " + scriptconfig.Lexer + " specified in script configuration!"); scriptedit.Lexer = scriptconfig.Lexer; // Set the default style and settings - scriptedit.StyleSetFont(DEFAULT_STYLE, General.Settings.ScriptFontName); - scriptedit.StyleSetSize(DEFAULT_STYLE, General.Settings.ScriptFontSize); - scriptedit.StyleSetBold(DEFAULT_STYLE, General.Settings.ScriptFontBold); - scriptedit.StyleSetItalic(DEFAULT_STYLE, false); - scriptedit.StyleSetUnderline(DEFAULT_STYLE, false); - scriptedit.StyleSetCase(DEFAULT_STYLE, ScriptCaseVisible.Mixed); - scriptedit.StyleSetFore(DEFAULT_STYLE, General.Colors.PlainText.ToInversedColorRef()); - scriptedit.StyleSetBack(DEFAULT_STYLE, General.Colors.ScriptBackground.ToInversedColorRef()); + scriptedit.Styles[Style.Default].Font = General.Settings.ScriptFontName; + scriptedit.Styles[Style.Default].Size = General.Settings.ScriptFontSize; + scriptedit.Styles[Style.Default].Bold = General.Settings.ScriptFontBold; + scriptedit.Styles[Style.Default].Italic = false; + scriptedit.Styles[Style.Default].Underline = false; + scriptedit.Styles[Style.Default].Case = StyleCase.Mixed; + scriptedit.Styles[Style.Default].ForeColor = General.Colors.PlainText.ToColor(); + scriptedit.Styles[Style.Default].BackColor = General.Colors.ScriptBackground.ToColor(); scriptedit.CaretPeriod = SystemInformation.CaretBlinkTime; - scriptedit.CaretFore = General.Colors.ScriptBackground.Inverse().ToInversedColorRef(); - scriptedit.StyleBits = 7; + scriptedit.CaretForeColor = General.Colors.ScriptBackground.Inverse().ToColor(); - // These don't work? + // Set tabulation settings + scriptedit.UseTabs = General.Settings.ScriptUseTabs; scriptedit.TabWidth = General.Settings.ScriptTabWidth; - scriptedit.IsUseTabs = false; - scriptedit.IsTabIndents = true; - scriptedit.Indent = General.Settings.ScriptTabWidth; - scriptedit.IsBackSpaceUnIndents = true; + //scriptedit.IndentWidth = General.Settings.ScriptTabWidth; // Equals to TabWidth by default + //TODO: use ScintillaNET properties instead when they become available + scriptedit.DirectMessage(NativeMethods.SCI_SETTABINDENTS, new IntPtr(1)); + scriptedit.DirectMessage(NativeMethods.SCI_SETBACKSPACEUNINDENTS, new IntPtr(1)); // This applies the default style to all styles scriptedit.StyleClearAll(); - // Set the code page to use - scriptedit.CodePage = scriptconfig.CodePage; + // Set the code page to use. [mxd] No longer needed? + //scriptedit.CodePage = scriptconfig.CodePage; + //mxd. We can't change Font or Size here because this will screw displayed tab width (because it's based on character width)... // Set the default to something normal (this is used by the autocomplete list) - scriptedit.StyleSetFont(DEFAULT_STYLE, this.Font.Name); - scriptedit.StyleSetBold(DEFAULT_STYLE, this.Font.Bold); - scriptedit.StyleSetItalic(DEFAULT_STYLE, this.Font.Italic); - scriptedit.StyleSetUnderline(DEFAULT_STYLE, this.Font.Underline); - scriptedit.StyleSetSize(DEFAULT_STYLE, (int)Math.Round(this.Font.SizeInPoints)); - + //scriptedit.Styles[Style.Default].Font = this.Font.Name; + scriptedit.Styles[Style.Default].Bold = this.Font.Bold; + scriptedit.Styles[Style.Default].Italic = this.Font.Italic; + scriptedit.Styles[Style.Default].Underline = this.Font.Underline; + //scriptedit.Styles[Style.Default].Size = (int)Math.Round(this.Font.SizeInPoints); + // Set style for linenumbers and margins - scriptedit.StyleSetBack((int)ScriptStylesCommon.LineNumber, General.Colors.ScriptBackground.ToInversedColorRef()); + scriptedit.Styles[Style.LineNumber].BackColor = General.Colors.ScriptBackground.ToColor(); + //mxd. Set style for (mis)matching braces + scriptedit.Styles[Style.BraceLight].BackColor = General.Colors.ScriptBraceHighlight.ToColor(); //Color.Cyan; + scriptedit.Styles[Style.BraceBad].BackColor = General.Colors.ScriptBadBraceHighlight.ToColor(); //Color.Red; + + //mxd. Set whitespace color + scriptedit.SetWhitespaceForeColor(true, General.Colors.ScriptWhitespace.ToColor()); + + //mxd. Set selection colors + scriptedit.SetSelectionForeColor(true, General.Colors.ScriptSelectionForeColor.ToColor()); + scriptedit.SetSelectionBackColor(true, General.Colors.ScriptSelectionBackColor.ToColor()); + // Clear all keywords - for(int i = 0; i < 9; i++) scriptedit.KeyWords(i, null); + for(int i = 0; i < 9; i++) scriptedit.SetKeywords(i, null); // Now go for all elements in the lexer configuration // We are looking for the numeric keys, because these are the @@ -338,7 +380,8 @@ namespace CodeImp.DoomBuilder.Controls // Apply color to style int colorindex; - switch((ScriptStyleType)(int)de.Value) + ScriptStyleType type = (ScriptStyleType)(int)de.Value; + switch(type) { case ScriptStyleType.PlainText: colorindex = ColorCollection.PLAINTEXT; break; case ScriptStyleType.Comment: colorindex = ColorCollection.COMMENTS; break; @@ -346,9 +389,15 @@ namespace CodeImp.DoomBuilder.Controls case ScriptStyleType.Keyword: colorindex = ColorCollection.KEYWORDS; break; case ScriptStyleType.LineNumber: colorindex = ColorCollection.LINENUMBERS; break; case ScriptStyleType.Literal: colorindex = ColorCollection.LITERALS; break; + case ScriptStyleType.String: colorindex = ColorCollection.STRINGS; break; + case ScriptStyleType.Include: colorindex = ColorCollection.INCLUDES; break; default: colorindex = ColorCollection.PLAINTEXT; break; } - scriptedit.StyleSetFore(stylenum, General.Colors.Colors[colorindex].ToInversedColorRef()); + + scriptedit.Styles[stylenum].ForeColor = General.Colors.Colors[colorindex].ToColor(); + + //mxd. Display constants as uppercase + if(type == ScriptStyleType.Constant) scriptedit.Styles[stylenum].Case = StyleCase.Upper; } } @@ -362,13 +411,13 @@ namespace CodeImp.DoomBuilder.Controls { if(keywordslist.Length > 0) keywordslist.Append(" "); keywordslist.Append(k); - autocompletelist.Add(k.ToUpperInvariant(), k + "?" + imageindex); + + //mxd. Skip adding the keyword if we have a snippet with the same name + if(!scriptconfig.Snippets.Contains(k)) + autocompletedict.Add(k.ToUpperInvariant(), k + "?" + imageindex); } string words = keywordslist.ToString(); - if(scriptconfig.CaseSensitive) - scriptedit.KeyWords(keywordsindex, words); - else - scriptedit.KeyWords(keywordsindex, words.ToLowerInvariant()); + scriptedit.SetKeywords(keywordsindex, (scriptconfig.CaseSensitive ? words : words.ToLowerInvariant())); } // Create the constants list and apply it @@ -379,7 +428,7 @@ namespace CodeImp.DoomBuilder.Controls StringBuilder constantslist = new StringBuilder(""); foreach(string c in scriptconfig.Constants) { - if(autocompletelist.ContainsKey(c.ToUpperInvariant())) //mxd. This happens when there's a keyword and a constant with the same name... + if(autocompletedict.ContainsKey(c.ToUpperInvariant())) //mxd. This happens when there's a keyword and a constant with the same name... { General.ErrorLogger.Add(ErrorType.Error, "Constant '" + c + "' is double-defined in '" + scriptconfig.Description + "' script configuration!"); continue; @@ -387,13 +436,13 @@ namespace CodeImp.DoomBuilder.Controls if(constantslist.Length > 0) constantslist.Append(" "); constantslist.Append(c); - autocompletelist.Add(c.ToUpperInvariant(), c + "?" + imageindex); + + //mxd. Skip adding the constant if we have a snippet with the same name + if(!scriptconfig.Snippets.Contains(c)) + autocompletedict.Add(c.ToUpperInvariant(), c + "?" + imageindex); } string words = constantslist.ToString(); - if(scriptconfig.CaseSensitive) - scriptedit.KeyWords(constantsindex, words); - else - scriptedit.KeyWords(constantsindex, words.ToLowerInvariant()); + scriptedit.SetKeywords(constantsindex, (scriptconfig.CaseSensitive ? words : words.ToLowerInvariant())); } //mxd. Create the snippets list and apply it @@ -402,90 +451,326 @@ namespace CodeImp.DoomBuilder.Controls if(snippetindex > -1 && scriptconfig.Snippets.Count > 0) { StringBuilder snippetslist = new StringBuilder(""); - foreach(string c in scriptconfig.Snippets.Keys) + foreach(string c in scriptconfig.Snippets) { - if(autocompletelist.ContainsKey(c.ToUpperInvariant())) continue; + if(autocompletedict.ContainsKey(c.ToUpperInvariant())) continue; if(snippetslist.Length > 0) snippetslist.Append(" "); snippetslist.Append(c); - autocompletelist.Add(c.ToUpperInvariant(), c + "?" + imageindex); + autocompletedict.Add(c.ToUpperInvariant(), c + "?" + imageindex); } string words = snippetslist.ToString(); - if(scriptconfig.CaseSensitive) - scriptedit.KeyWords(snippetindex, words); - else - scriptedit.KeyWords(snippetindex, words.ToLowerInvariant()); + scriptedit.SetKeywords(snippetindex, (scriptconfig.CaseSensitive ? words : words.ToLowerInvariant())); } - // Sort the autocomplete list - List autocompleteplainlist = new List(autocompletelist.Values); - autocompletestring = string.Join(" ", autocompleteplainlist.ToArray()); - - // Show/hide the functions bar - functionbar.Visible = (scriptconfig.FunctionRegEx.Length > 0); + // Make autocomplete list + autocompletelist = new List(autocompletedict.Values); + + // Setup folding (https://github.com/jacobslusser/ScintillaNET/wiki/Automatic-Code-Folding) + if(scriptconfig.Lexer == Lexer.Cpp || scriptconfig.Lexer == Lexer.CppNoCase) + { + // Instruct the lexer to calculate folding + scriptedit.SetProperty("fold", "1"); + scriptedit.SetProperty("fold.compact", "1"); + + // Configure a margin to display folding symbols + scriptedit.Margins[2].Type = MarginType.Symbol; + scriptedit.Margins[2].Mask = Marker.MaskFolders; + scriptedit.Margins[2].Sensitive = true; + scriptedit.Margins[2].Width = 12; + + // Set colors for all folding markers + for(int i = 25; i < 32; i++) + { + scriptedit.Markers[i].SetForeColor(SystemColors.ControlLightLight); + scriptedit.Markers[i].SetBackColor(SystemColors.ControlDark); + } + + // Configure folding markers with respective symbols + scriptedit.Markers[Marker.Folder].Symbol = MarkerSymbol.BoxPlus; + scriptedit.Markers[Marker.FolderOpen].Symbol = MarkerSymbol.BoxMinus; + scriptedit.Markers[Marker.FolderEnd].Symbol = MarkerSymbol.BoxPlusConnected; + scriptedit.Markers[Marker.FolderMidTail].Symbol = MarkerSymbol.TCorner; + scriptedit.Markers[Marker.FolderOpenMid].Symbol = MarkerSymbol.BoxMinusConnected; + scriptedit.Markers[Marker.FolderSub].Symbol = MarkerSymbol.VLine; + scriptedit.Markers[Marker.FolderTail].Symbol = MarkerSymbol.LCorner; + + // Enable automatic folding + scriptedit.AutomaticFold = (AutomaticFold.Show | AutomaticFold.Click | AutomaticFold.Change); + } + else + { + // Disable folding + scriptedit.SetProperty("fold", "0"); + scriptedit.SetProperty("fold.compact", "0"); + + scriptedit.Margins[2].Type = MarginType.Symbol; + scriptedit.Margins[2].Mask = 0; // No markers here + scriptedit.Margins[2].Sensitive = false; + scriptedit.Margins[2].Width = 5; + + scriptedit.AutomaticFold = AutomaticFold.None; + } // 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(); } - // This returns the current word (where the caret is at) public string GetCurrentWord() { - return GetWordAt(scriptedit.CurrentPos); + return GetWordAt(scriptedit.CurrentPosition); } - // This returns the word at the given position public string GetWordAt(int position) { - int wordstart = scriptedit.WordStartPosition(position, true); - int wordend = scriptedit.WordEndPosition(position, true); + return scriptedit.GetWordFromPosition(position); + } - // Decode the text - byte[] scripttextdata = scriptedit.GetText(scriptedit.TextSize); - Encoding encoder = Encoding.GetEncoding(scriptedit.CodePage); - string scripttext = encoder.GetString(scripttextdata); + // Perform undo + public void Undo() + { + scriptedit.Undo(); + } - if(wordstart < wordend) - return scripttext.Substring(wordstart, wordend - wordstart); - else - return ""; + // Perform redo + public void Redo() + { + scriptedit.Redo(); + } + + // This clears all undo levels + public void ClearUndoRedo() + { + scriptedit.EmptyUndoBuffer(); + } + + //mxd. This marks the current document as unmodified + public void SetSavePoint() + { + scriptedit.SetSavePoint(); + } + + // Perform cut + public void Cut() + { + scriptedit.Cut(); + } + + // Perform copy + public void Copy() + { + scriptedit.Copy(); + } + + // Perform paste + public void Paste() + { + scriptedit.Paste(); } - + // This steals the focus (use with care!) + public void GrabFocus() + { + scriptedit.Focus(); + } + + public byte[] GetText() + { + return Encoding.ASCII.GetBytes(scriptedit.Text); //mxd TODO: other encodings?.. + } + + public void SetText(byte[] text) + { + scriptedit.Text = Encoding.ASCII.GetString(text); //mxd TODO: other encodings?.. + } + + //mxd + public void InsertSnippet(string[] lines) + { + // Insert the snippet + int curline = scriptedit.LineFromPosition(scriptedit.SelectionStart); + int indent = scriptedit.Lines[scriptedit.CurrentLine].Indentation; + string tabs = Environment.NewLine + GetIndentationString(indent); + string spaces = new String(' ', General.Settings.ScriptTabWidth); + int entrypos = -1; + int entryline = -1; + string[] processedlines = ProcessLineBreaks(lines); + + // Process special chars, try to find entry position marker + for(int i = 0; i < lines.Length; i++) + { + if(!scriptedit.UseTabs) processedlines[i] = processedlines[i].Replace("\t", spaces); + + // Check if we have the [EP] marker + if(entrypos == -1) + { + int pos = processedlines[i].IndexOf("[EP]", StringComparison.Ordinal); + if(pos != -1) + { + processedlines[i] = processedlines[i].Remove(pos, 4); + entryline = curline + i; + entrypos = processedlines[i].Length - pos; + } + } + } + + // Replace the text + string text = string.Join(tabs, processedlines); + scriptedit.SelectionStart = scriptedit.WordStartPosition(scriptedit.CurrentPosition, true); + scriptedit.SelectionEnd = scriptedit.WordEndPosition(scriptedit.CurrentPosition, true); + scriptedit.ReplaceSelection(text); + + // Move the cursor if we had the [EP] marker + if(entrypos != -1) + { + scriptedit.SetEmptySelection(scriptedit.Lines[entryline].EndPosition - entrypos - 2); + } + } + + //mxd. Find next result + public bool FindNext(FindReplaceOptions options, bool useselectionstart) + { + int startpos = (useselectionstart ? Math.Min(scriptedit.SelectionStart, scriptedit.SelectionEnd) : Math.Max(scriptedit.SelectionStart, scriptedit.SelectionEnd)); + + // Search the document + scriptedit.TargetStart = startpos; + scriptedit.TargetEnd = scriptedit.TextLength; + scriptedit.SearchFlags = options.CaseSensitive ? SearchFlags.MatchCase : SearchFlags.None; + if(options.WholeWord) scriptedit.SearchFlags |= SearchFlags.WholeWord; + + int result = scriptedit.SearchInTarget(options.FindText); + + // Wrap around? + if(result == -1) + { + scriptedit.TargetStart = 0; + scriptedit.TargetEnd = startpos; + result = scriptedit.SearchInTarget(options.FindText); + } + + // Found something + if(result != -1) + { + // Select the result + SelectAndShow(result, result + options.FindText.Length); + + // Update extra highlights + HighlightWord(options.FindText); + + // All done + return true; + } + + // Nothing found... + return false; + } + + //mxd. Find previous result + public bool FindPrevious(FindReplaceOptions options) + { + int endpos = Math.Max(0, Math.Min(scriptedit.SelectionStart, scriptedit.SelectionEnd) - 1); + + // Search the document + scriptedit.TargetStart = endpos; + scriptedit.TargetEnd = 0; + scriptedit.SearchFlags = options.CaseSensitive ? SearchFlags.MatchCase : SearchFlags.None; + if(options.WholeWord) scriptedit.SearchFlags |= SearchFlags.WholeWord; + + int result = scriptedit.SearchInTarget(options.FindText); + + // Wrap around? + if(result == -1) + { + scriptedit.TargetStart = scriptedit.TextLength; + scriptedit.TargetEnd = endpos; + result = scriptedit.SearchInTarget(options.FindText); + } + + // Found something + if(result != -1) + { + // Select the result + SelectAndShow(result, result + options.FindText.Length); + + // Update extra highlights + HighlightWord(options.FindText); + + // All done + return true; + } + + // Nothing found... + return false; + } + + //mxd + private void SelectAndShow(int startpos, int endpos) + { + // Select the result + int startline = scriptedit.LineFromPosition(startpos); + int endline = scriptedit.LineFromPosition(endpos); + + // Go to target line + scriptedit.ShowLines(startline, endline); + scriptedit.GotoPosition(startpos); + + // We may want to do some extra scrolling... + if(startline > 1 && scriptedit.FirstVisibleLine >= startline - 1) + { + scriptedit.Lines[startline - 1].Goto(); + } + else if(endline < scriptedit.Lines.Count - 1 && scriptedit.FirstVisibleLine + scriptedit.LinesOnScreen <= endline + 1) + { + scriptedit.Lines[endline + 1].Goto(); + } + + // Update selection + scriptedit.SelectionStart = startpos; + scriptedit.SelectionEnd = endpos; + } + + //mxd. (Un)indents selection + public void IndentSelection(bool indent) + { + // Get selected range of lines + int startline = scriptedit.LineFromPosition(scriptedit.SelectionStart); + int endline = scriptedit.LineFromPosition(scriptedit.SelectionEnd); + + for(int i = startline; i < endline + 1; i++) + { + scriptedit.Lines[i].Indentation += (indent ? General.Settings.ScriptTabWidth : -General.Settings.ScriptTabWidth); + } + } + + #endregion + + #region ================== Utility methods + // This returns the ScriptStyleType for a given Scintilla style private ScriptStyleType GetScriptStyle(int scintillastyle) { - if(stylelookup.ContainsKey(scintillastyle)) - return stylelookup[scintillastyle]; - else - return ScriptStyleType.PlainText; + return (stylelookup.ContainsKey(scintillastyle) ? stylelookup[scintillastyle] : ScriptStyleType.PlainText); } - // This gathers information about the current caret position private void UpdatePositionInfo() { int bracketlevel = 0; // bracket level counting int argindex = 0; // function argument counting - int pos = scriptedit.CurrentPos; - - // Decode the text - byte[] scripttextdata = scriptedit.GetText(scriptedit.TextSize); - Encoding encoder = Encoding.GetEncoding(scriptedit.CodePage); - string scripttext = encoder.GetString(scripttextdata); - + int pos = scriptedit.CurrentPosition; + + // Get the text + string scripttext = scriptedit.Text; + // Reset position info curfunctionname = ""; curargumentindex = 0; curfunctionstartpos = 0; // Determine lowest backtrack position - int limitpos = scriptedit.CurrentPos - MAX_BACKTRACK_LENGTH; + int limitpos = scriptedit.CurrentPosition - MAX_BACKTRACK_LENGTH; if(limitpos < 0) limitpos = 0; // We can only do this when we have function syntax information @@ -505,8 +790,8 @@ namespace CodeImp.DoomBuilder.Controls pos--; // Get the style and character at this position - ScriptStyleType curstyle = GetScriptStyle(scriptedit.StyleAt(pos)); - int curchar = scriptedit.CharAt(pos); + ScriptStyleType curstyle = GetScriptStyle(scriptedit.GetStyleAt(pos)); + int curchar = scriptedit.GetCharAt(pos); // Then meeting ) then increase bracket level // When meeting ( then decrease bracket level @@ -536,7 +821,7 @@ namespace CodeImp.DoomBuilder.Controls do { // Backtrack 1 character - curchar = scriptedit.CharAt(--pos); + curchar = scriptedit.GetCharAt(--pos); } while((pos >= limitpos) && ((curchar == ' ') || (curchar == '\t') || (curchar == '\r') || (curchar == '\n'))); @@ -594,120 +879,19 @@ namespace CodeImp.DoomBuilder.Controls } } - // This clears all undo levels - public void ClearUndoRedo() + // This registers an image for the autocomplete list + private void RegisterAutoCompleteImage(ImageIndex index, Bitmap image) { - scriptedit.EmptyUndoBuffer(); - } - - // This registers an XPM image for the autocomplete list - private void RegisterAutoCompleteImage(ImageIndex index, byte[] imagedata) - { - // Convert to string - string bigstring = Encoding.UTF8.GetString(imagedata); - // Register image - scriptedit.RegisterImage((int)index, bigstring); + scriptedit.RegisterRgbaImage((int)index, image); } - // This registers an XPM image for the markes list - private void RegisterMarkerImage(ImageIndex index, byte[] imagedata) + // This registers an image for the markes list + private void RegisterMarkerImage(ImageIndex index, Bitmap image) { - // Convert to string - string bigstring = Encoding.UTF8.GetString(imagedata); - // Register image - scriptedit.MarkerDefinePixmap((int)index, bigstring); - } - - // Perform undo - public void Undo() - { - scriptedit.Undo(); - } - - // Perform redo - public void Redo() - { - scriptedit.Redo(); - } - - // Perform cut - public void Cut() - { - scriptedit.Cut(); - } - - // Perform copy - public void Copy() - { - scriptedit.Copy(); - } - - // Perform paste - public void Paste() - { - scriptedit.Paste(); - } - - // This steals the focus (use with care!) - public void GrabFocus() - { - scriptedit.GrabFocus(); - } - - public byte[] GetText() - { - return scriptedit.GetText(scriptedit.TextSize); - } - - public void SetText(byte[] text) - { - scriptedit.SetText(text); - } - - //mxd - public void InsertSnippet(string[] lines) - { - //insert the snippet - int curline = scriptedit.LineFromPosition(scriptedit.SelectionStart); - int numtabs = scriptedit.GetLineIndentation(curline); - string tabs = Environment.NewLine + new String(' ', numtabs); - string spaces = new String(' ', General.Settings.ScriptTabWidth); - int entrypos = -1; - int entryline = -1; - string[] processedlines = ProcessLineBreaks(lines); - - for(int i = 0; i < lines.Length; i++) - { - processedlines[i] = processedlines[i].Replace("\t", spaces); - - //check if we have the [EP] marker - if(entrypos == -1) - { - int pos = processedlines[i].IndexOf("[EP]"); - if(pos != -1) - { - entryline = curline + i; - entrypos = pos + numtabs; - processedlines[i] = processedlines[i].Remove(pos, 4); - } - } - } - - //replace the text - string text = string.Join(tabs, processedlines); - scriptedit.SelectionStart = scriptedit.WordStartPosition(scriptedit.CurrentPos, true); - scriptedit.SelectionEnd = scriptedit.WordEndPosition(scriptedit.CurrentPos, true); - scriptedit.ReplaceSel(text); - - //move the cursor if we had the [EP] marker - if(entrypos != -1) - { - MoveToLine(entryline); - scriptedit.SelectionStart = scriptedit.PositionFromLine(entryline) + entrypos; - scriptedit.SelectionEnd = scriptedit.PositionFromLine(entryline) + entrypos; - } + scriptedit.Markers[(int)index].DefineRgbaImage(image); + scriptedit.Markers[(int)index].Symbol = MarkerSymbol.RgbaImage; } //mxd. This converts [LB] markers to line breaks if necessary @@ -718,7 +902,7 @@ namespace CodeImp.DoomBuilder.Controls foreach(string line in lines) { - if(line.IndexOf(separator[0]) != -1) + if(line.IndexOf(separator[0], StringComparison.Ordinal) != -1) { if(General.Settings.SnippetsAllmanStyle) result.AddRange(line.Split(separator, StringSplitOptions.RemoveEmptyEntries)); @@ -734,6 +918,104 @@ namespace CodeImp.DoomBuilder.Controls return result.ToArray(); } + //mxd. Autocompletion handling (https://github.com/jacobslusser/ScintillaNET/wiki/Basic-Autocompletion) + private bool ShowAutoCompletionList() + { + int currentpos = scriptedit.CurrentPosition; + int wordstartpos = scriptedit.WordStartPosition(currentpos, true); + + if(wordstartpos >= currentpos) + { + // Hide the list + scriptedit.AutoCCancel(); + return false; + } + + // Get entered text + string start = scriptedit.GetTextRange(wordstartpos, currentpos - wordstartpos); + if(string.IsNullOrEmpty(start)) + { + // Hide the list + scriptedit.AutoCCancel(); + return false; + } + + // Filter the list + List filtered = new List(); + foreach(string s in autocompletelist) + if(s.IndexOf(start, StringComparison.OrdinalIgnoreCase) != -1) filtered.Add(s); + + // Any matches? + if(filtered.Count > 0) + { + // Show the list + scriptedit.AutoCShow(currentpos - wordstartpos, string.Join(" ", filtered.ToArray())); + return true; + } + + // Hide the list + scriptedit.AutoCCancel(); + return false; + } + + //mxd + private string GetIndentationString(int indent) + { + if(scriptedit.UseTabs) + { + string indentstr = string.Empty; + int numtabs = indent / scriptedit.TabWidth; + if(numtabs > 0) indentstr = new string('\t', numtabs); + + // Mixed padding? Add spaces + if(numtabs * scriptedit.TabWidth < indent) + { + int numspaces = indent - numtabs * scriptedit.TabWidth; + indentstr += new string(' ', numspaces); + } + + return indentstr; + } + else + { + return new string(' ', indent); + } + } + + //mxd. https://github.com/jacobslusser/ScintillaNET/wiki/Find-and-Highlight-Words + private void HighlightWord(string text) + { + // Remove all uses of our indicator + scriptedit.IndicatorCurrent = HIGHLIGHT_INDICATOR; + scriptedit.IndicatorClearRange(0, scriptedit.TextLength); + + // Update indicator appearance + scriptedit.Indicators[HIGHLIGHT_INDICATOR].Style = IndicatorStyle.RoundBox; + scriptedit.Indicators[HIGHLIGHT_INDICATOR].Under = true; + scriptedit.Indicators[HIGHLIGHT_INDICATOR].ForeColor = General.Colors.ScriptIndicator.ToColor(); + scriptedit.Indicators[HIGHLIGHT_INDICATOR].OutlineAlpha = 50; + scriptedit.Indicators[HIGHLIGHT_INDICATOR].Alpha = 30; + + // Search the document + scriptedit.TargetStart = 0; + scriptedit.TargetEnd = scriptedit.TextLength; + scriptedit.SearchFlags = SearchFlags.WholeWord; + + while(scriptedit.SearchInTarget(text) != -1) + { + //mxd. Don't mark currently selected word + if(scriptedit.SelectionStart != scriptedit.TargetStart && scriptedit.SelectionEnd != scriptedit.TargetEnd) + { + // Mark the search results with the current indicator + scriptedit.IndicatorFillRange(scriptedit.TargetStart, scriptedit.TargetEnd - scriptedit.TargetStart); + } + + // Search the remainder of the document + scriptedit.TargetStart = scriptedit.TargetEnd; + scriptedit.TargetEnd = scriptedit.TextLength; + } + } + #endregion #region ================== Events @@ -757,81 +1039,238 @@ namespace CodeImp.DoomBuilder.Controls } //mxd. Script text changed - private void scriptedit_UndoRedoPerformed(ScintillaControl pSender) + private void scriptedit_TextChanged(object sender, EventArgs e) { - changed = true; + // Line number margin width needs changing? + int curlinenumbercharlength = scriptedit.Lines.Count.ToString().Length; + + // Calculate the width required to display the last line number + // and include some padding for good measure. + if(curlinenumbercharlength != linenumbercharlength) + { + const int padding = 2; + scriptedit.Margins[1].Width = scriptedit.TextWidth(Style.LineNumber, new string('9', curlinenumbercharlength + 1)) + padding; + linenumbercharlength = curlinenumbercharlength; + } + if(OnTextChanged != null) OnTextChanged(this, EventArgs.Empty); } - //mxd. Script text changed - private void scriptedit_TextChanged(ScintillaControl pSender, int position, int length, int linesAdded) + //mxd + private void scriptedit_CharAdded(object sender, CharAddedEventArgs e) { - changed = true; - if(OnTextChanged != null) OnTextChanged(this, EventArgs.Empty); + // Hide call tip if any + scriptedit.CallTipCancel(); + + // Offset caret if needed + if(caretoffset != 0) + { + scriptedit.SetEmptySelection(scriptedit.SelectionStart + caretoffset); + caretoffset = 0; + if(!expandcodeblock) return; + } + + // Move CodeBlockOpen to the new line? + if(expandcodeblock) + { + if(scriptedit.CurrentLine > 0) + { + string linetext = scriptedit.Lines[scriptedit.CurrentLine - 1].Text; + int blockopenpos = (string.IsNullOrEmpty(scriptconfig.CodeBlockOpen) ? -1 : linetext.LastIndexOf(scriptconfig.CodeBlockOpen, StringComparison.Ordinal)); + if(blockopenpos != -1) + { + // Do it only if initial line doesn't start with CodeBlockOpen + string linestart = linetext.Substring(0, blockopenpos).Trim(); + if(linestart.Length > 0) + { + scriptedit.InsertText(scriptedit.Lines[scriptedit.CurrentLine - 1].Position + blockopenpos, + Environment.NewLine + GetIndentationString(scriptedit.Lines[scriptedit.CurrentLine - 1].Indentation)); + } + } + } + + expandcodeblock = false; + return; + } + + // Auto-match braces + //TODO: Auto-match quotes + bool endpos = (scriptedit.CurrentPosition == scriptedit.TextLength); + if(!string.IsNullOrEmpty(scriptconfig.CodeBlockOpen) && e.Char == scriptconfig.CodeBlockOpen[0] && !string.IsNullOrEmpty(scriptconfig.CodeBlockClose) && + (endpos || (char)scriptedit.GetCharAt(scriptedit.CurrentPosition + 1) != scriptconfig.CodeBlockClose[0])) + { + scriptedit.InsertText(scriptedit.CurrentPosition, scriptconfig.CodeBlockClose); + } + else if(!string.IsNullOrEmpty(scriptconfig.FunctionOpen) && e.Char == scriptconfig.FunctionOpen[0] && !string.IsNullOrEmpty(scriptconfig.FunctionClose) && + (endpos || (char)scriptedit.GetCharAt(scriptedit.CurrentPosition + 1) != scriptconfig.FunctionClose[0])) + { + scriptedit.InsertText(scriptedit.CurrentPosition, scriptconfig.FunctionClose); + } + else if(!string.IsNullOrEmpty(scriptconfig.ArrayOpen) && e.Char == scriptconfig.ArrayOpen[0] && !string.IsNullOrEmpty(scriptconfig.ArrayClose) && + (endpos || (char)scriptedit.GetCharAt(scriptedit.CurrentPosition + 1) != scriptconfig.ArrayClose[0])) + { + scriptedit.InsertText(scriptedit.CurrentPosition, scriptconfig.ArrayClose); + } + else + { + // Display the autocompletion list + // TODO: make this behaviour optional? + ShowAutoCompletionList(); + } + } + + //mxd + private void scriptedit_UpdateUI(object sender, UpdateUIEventArgs e) + { + // If a word is selected, highlight the same words + if(scriptedit.SelectedText != highlightedword) + { + // Highlight only when whole word is selected + if(!string.IsNullOrEmpty(scriptedit.SelectedText) && scriptedit.GetWordFromPosition(scriptedit.SelectionStart) == scriptedit.SelectedText) + { + HighlightWord(scriptedit.SelectedText); + } + else + { + // Clear highlight + scriptedit.IndicatorCurrent = HIGHLIGHT_INDICATOR; + scriptedit.IndicatorClearRange(0, scriptedit.TextLength); + } + + highlightedword = scriptedit.SelectedText; + } + + // Has the caret changed position? + int caretpos = scriptedit.CurrentPosition; + if(lastcaretpos != caretpos && scriptconfig.BraceChars.Count > 0) + { + // Perform brace matching (https://github.com/jacobslusser/ScintillaNET/wiki/Brace-Matching) + lastcaretpos = caretpos; + int bracepos1 = -1; + + // Is there a brace to the left or right? + if(caretpos > 0 && scriptconfig.BraceChars.Contains((char)scriptedit.GetCharAt(caretpos - 1))) + bracepos1 = (caretpos - 1); + else if(scriptconfig.BraceChars.Contains((char)(scriptedit.GetCharAt(caretpos)))) + bracepos1 = caretpos; + + if(bracepos1 > -1) + { + // Find the matching brace + int bracepos2 = scriptedit.BraceMatch(bracepos1); + if(bracepos2 == Scintilla.InvalidPosition) + scriptedit.BraceBadLight(bracepos1); + else + scriptedit.BraceHighlight(bracepos1, bracepos2); + } + else + { + // Turn off brace matching + scriptedit.BraceHighlight(Scintilla.InvalidPosition, Scintilla.InvalidPosition); + } + } + } + + //mxd + private void scriptedit_InsertCheck(object sender, InsertCheckEventArgs e) + { + // Gross hacks... + if(skiptextinsert) + { + e.Text = string.Empty; + skiptextinsert = false; + } + // Do we want auto-indentation? + else if(!expandcodeblock && General.Settings.ScriptAutoIndent && e.Text == "\r\n") + { + // Get current line indentation up to the cursor position + string linetext = scriptedit.Lines[scriptedit.CurrentLine].Text; + int selectionpos = scriptedit.SelectionStart - scriptedit.Lines[scriptedit.CurrentLine].Position; + int indent = 0; + for(int i = 0; i < selectionpos; i++) + { + switch(linetext[i]) + { + case ' ': indent++; break; + case '\t': indent += scriptedit.TabWidth; break; + default: i = selectionpos; break; // break the loop + } + } + + // Store initial indentation + int initialindent = indent; + + // Need to increase indentation? We do this when: + // 1. Line contains '{' and '}' and the cursor is between them + // 2. Line either doesn't contain '}', or it's before '{', it contains '{' and the cursor is after it + // 3. Line doesn't contain ';', line contains ')' and the cursor is after it + int blockopenpos = (string.IsNullOrEmpty(scriptconfig.CodeBlockOpen) ? -1 : linetext.LastIndexOf(scriptconfig.CodeBlockOpen, selectionpos, StringComparison.Ordinal)); + int blockclosepos = (string.IsNullOrEmpty(scriptconfig.CodeBlockOpen) ? -1 : linetext.IndexOf(scriptconfig.CodeBlockClose, selectionpos, StringComparison.Ordinal)); + int funcclosepos = (string.IsNullOrEmpty(scriptconfig.FunctionClose) ? -1 : linetext.LastIndexOf(scriptconfig.FunctionClose, StringComparison.Ordinal)); + + // Add indentation when the cursor is between { and } + bool addindent = (blockopenpos != -1 && blockopenpos < selectionpos) && (blockclosepos == -1 || (blockopenpos < blockclosepos && blockclosepos >= selectionpos)); + bool isblockindent = addindent; + addindent |= funcclosepos != -1 && blockopenpos == -1 && funcclosepos < selectionpos && !linetext.Contains(scriptconfig.Terminator); + if(addindent) indent += scriptedit.TabWidth; + + // Calculate indentation + string indentstr = GetIndentationString(indent); + + // Move CodeBlockOpen to the new line (will be applied in scriptedit_CharAdded)? + expandcodeblock = (isblockindent && General.Settings.SnippetsAllmanStyle); + + // Offset closing block char? + if(addindent && blockclosepos != -1) + { + string initialindentstr = GetIndentationString(initialindent); + indentstr += Environment.NewLine + initialindentstr; + + // Offset cursor position (will be performed in scriptedit_CharAdded) + caretoffset = -(initialindentstr.Length + Environment.NewLine.Length); + } + + // Apply new indentation + e.Text += indentstr; + } + } + + //mxd + private void scriptedit_AutoCCompleted(object sender, AutoCSelectionEventArgs e) + { + // Expand snippet? + string[] lines = scriptconfig.GetSnippet(e.Text); + if(lines != null) InsertSnippet(lines); } // Key pressed down private void scriptedit_KeyDown(object sender, KeyEventArgs e) { - // These key combinations put odd characters in the script, so I disabled them - if((e.KeyCode == Keys.Q) && ((e.Modifiers & Keys.Control) == Keys.Control)) e.Handled = true; - else if((e.KeyCode == Keys.W) && ((e.Modifiers & Keys.Control) == Keys.Control)) e.Handled = true; - else if((e.KeyCode == Keys.E) && ((e.Modifiers & Keys.Control) == Keys.Control)) e.Handled = true; - else if((e.KeyCode == Keys.R) && ((e.Modifiers & Keys.Control) == Keys.Control)) e.Handled = true; - else if((e.KeyCode == Keys.Y) && ((e.Modifiers & Keys.Control) == Keys.Control)) e.Handled = true; - else if((e.KeyCode == Keys.U) && ((e.Modifiers & Keys.Control) == Keys.Control)) e.Handled = true; - else if((e.KeyCode == Keys.I) && ((e.Modifiers & Keys.Control) == Keys.Control)) e.Handled = true; - else if((e.KeyCode == Keys.P) && ((e.Modifiers & Keys.Control) == Keys.Control)) e.Handled = true; - else if((e.KeyCode == Keys.A) && ((e.Modifiers & Keys.Control) == Keys.Control) && ((e.Modifiers & Keys.Shift) == Keys.Shift)) e.Handled = true; - else if((e.KeyCode == Keys.D) && ((e.Modifiers & Keys.Control) == Keys.Control)) e.Handled = true; - else if((e.KeyCode == Keys.G) && ((e.Modifiers & Keys.Control) == Keys.Control)) e.Handled = true; - else if((e.KeyCode == Keys.H) && ((e.Modifiers & Keys.Control) == Keys.Control)) e.Handled = true; - else if((e.KeyCode == Keys.J) && ((e.Modifiers & Keys.Control) == Keys.Control)) e.Handled = true; - else if((e.KeyCode == Keys.K) && ((e.Modifiers & Keys.Control) == Keys.Control)) e.Handled = true; - else if((e.KeyCode == Keys.L) && ((e.Modifiers & Keys.Control) == Keys.Control)) e.Handled = true; - else if((e.KeyCode == Keys.Z) && ((e.Modifiers & Keys.Control) == Keys.Control) && ((e.Modifiers & Keys.Shift) == Keys.Shift)) e.Handled = true; - else if((e.KeyCode == Keys.X) && ((e.Modifiers & Keys.Control) == Keys.Control) && ((e.Modifiers & Keys.Shift) == Keys.Shift)) e.Handled = true; - else if((e.KeyCode == Keys.C) && ((e.Modifiers & Keys.Control) == Keys.Control) && ((e.Modifiers & Keys.Shift) == Keys.Shift)) e.Handled = true; - else if((e.KeyCode == Keys.V) && ((e.Modifiers & Keys.Control) == Keys.Control) && ((e.Modifiers & Keys.Shift) == Keys.Shift)) e.Handled = true; - else if((e.KeyCode == Keys.B) && ((e.Modifiers & Keys.Control) == Keys.Control)) e.Handled = true; - else if((e.KeyCode == Keys.N) && ((e.Modifiers & Keys.Control) == Keys.Control)) e.Handled = true; - else if((e.KeyCode == Keys.M) && ((e.Modifiers & Keys.Control) == Keys.Control)) e.Handled = true; - // F3 for Find Next - else if((e.KeyCode == Keys.F3) && (e.Modifiers == Keys.None)) + if((e.KeyCode == Keys.F3) && (e.Modifiers == Keys.None)) { if(OnFindNext != null) OnFindNext(); - e.Handled = true; } - // F2 for Find Previous (mxd) else if((e.KeyCode == Keys.F2) && (e.Modifiers == Keys.None)) { if(OnFindPrevious != null) OnFindPrevious(); - e.Handled = true; } - // CTRL+F for find & replace else if((e.KeyCode == Keys.F) && ((e.Modifiers & Keys.Control) == Keys.Control)) { if(OnOpenFindAndReplace != null) OnOpenFindAndReplace(); - e.Handled = true; } - // CTRL+S for save else if((e.KeyCode == Keys.S) && ((e.Modifiers & Keys.Control) == Keys.Control)) { if(OnExplicitSaveTab != null) OnExplicitSaveTab(); - e.Handled = true; } - // CTRL+O for open else if((e.KeyCode == Keys.O) && ((e.Modifiers & Keys.Control) == Keys.Control)) { if(OnOpenScriptBrowser != null) OnOpenScriptBrowser(); - e.Handled = true; } - // CTRL+Space to autocomplete else if((e.KeyCode == Keys.Space) && (e.Modifiers == Keys.Control)) { @@ -839,29 +1278,25 @@ namespace CodeImp.DoomBuilder.Controls scriptedit.CallTipCancel(); // Show autocomplete - int currentpos = scriptedit.CurrentPos; - int wordstartpos = scriptedit.WordStartPosition(currentpos, true); - scriptedit.AutoCShow(currentpos - wordstartpos, autocompletestring); - - e.Handled = true; + if(ShowAutoCompletionList()) skiptextinsert = true; } - - //mxd. Tab to expand code snippet - // Do it only when the text cursor is at the end of a keyword. - else if(e.KeyCode == Keys.Tab) + //mxd. Tab to expand code snippet. Do it only when the text cursor is at the end of a keyword. + else if(e.KeyCode == Keys.Tab) { - string curword = GetCurrentWord().ToLowerInvariant(); - if(scriptconfig.Snippets.ContainsKey(curword) && scriptedit.CurrentPos == scriptedit.WordEndPosition(scriptedit.CurrentPos, true)) + if(!scriptedit.AutoCActive) { - InsertSnippet(scriptconfig.Snippets[curword]); - e.Handled = true; + string curword = GetCurrentWord().ToLowerInvariant(); + if(scriptconfig.Snippets.Contains(curword) && scriptedit.CurrentPosition == scriptedit.WordEndPosition(scriptedit.CurrentPosition, true)) + { + InsertSnippet(scriptconfig.GetSnippet(curword)); + skiptextinsert = true; + } } } - //mxd. Handle screenshot saving else if(DelayedForm.ProcessSaveScreenshotAction((int)e.KeyData)) { - e.Handled = true; + skiptextinsert = true; } } @@ -872,28 +1307,10 @@ namespace CodeImp.DoomBuilder.Controls int highlightstart = 0; int highlightend = 0; - // Enter pressed? - if((e.KeyCode == Keys.Enter) && (e.Modifiers == Keys.None)) - { - // Do we want auto-indent? - if(General.Settings.ScriptAutoIndent) - { - // Get the current line index and check if its not the first line - int curline = scriptedit.LineFromPosition(scriptedit.CurrentPos); - if(curline > 0 && scriptedit.GetLineIndentation(curline) == 0) - { - // Apply identation of the previous line to this line - int ident = scriptedit.GetLineIndentation(curline - 1); - scriptedit.SetLineIndentation(curline, ident); - scriptedit.SetSel(scriptedit.SelectionStart + ident, scriptedit.SelectionStart + ident); - } - } - } - UpdatePositionInfo(); // Call tip shown - if(scriptedit.IsCallTipActive) + if(scriptedit.CallTipActive) { // Should we hide the call tip? if(curfunctionname.Length == 0) @@ -911,7 +1328,7 @@ namespace CodeImp.DoomBuilder.Controls else { // Should we show a call tip? - showcalltip = (curfunctionname.Length > 0) && !scriptedit.IsAutoCActive; + showcalltip = (curfunctionname.Length > 0) && !scriptedit.AutoCActive; } // Show or update call tip @@ -921,8 +1338,8 @@ namespace CodeImp.DoomBuilder.Controls if(functiondef != null) { // Determine the range to highlight - int argsopenpos = functiondef.IndexOf(scriptconfig.FunctionOpen); - int argsclosepos = functiondef.LastIndexOf(scriptconfig.FunctionClose); + int argsopenpos = functiondef.IndexOf(scriptconfig.FunctionOpen, StringComparison.Ordinal); + int argsclosepos = functiondef.LastIndexOf(scriptconfig.FunctionClose, StringComparison.Ordinal); if((argsopenpos > -1) && (argsclosepos > -1)) { string argsstr = functiondef.Substring(argsopenpos + 1, argsclosepos - argsopenpos - 1); @@ -939,9 +1356,8 @@ namespace CodeImp.DoomBuilder.Controls //mxd. If the tip obscures the view, move it down int tippos; int funcline = scriptedit.LineFromPosition(curfunctionstartpos); - int curline = scriptedit.LineFromPosition(scriptedit.CurrentPos); - if(curline > funcline) - tippos = scriptedit.PositionFromLine(curline) + scriptedit.GetLineIndentation(curline); //scriptedit.PositionFromLine(curline) /*+ (curfunctionstartpos - scriptedit.PositionFromLine(funcline))*/; + if(scriptedit.CurrentLine > funcline) + tippos = scriptedit.Lines[scriptedit.CurrentLine].Position + scriptedit.Lines[scriptedit.CurrentLine].Indentation; //scriptedit.PositionFromLine(curline) /*+ (curfunctionstartpos - scriptedit.PositionFromLine(funcline))*/; else tippos = curfunctionstartpos; diff --git a/Source/Core/Controls/ScriptEditorPanel.Designer.cs b/Source/Core/Controls/ScriptEditorPanel.Designer.cs index 7b023ab8..d53cdc8a 100644 --- a/Source/Core/Controls/ScriptEditorPanel.Designer.cs +++ b/Source/Core/Controls/ScriptEditorPanel.Designer.cs @@ -44,6 +44,11 @@ namespace CodeImp.DoomBuilder.Controls this.buttoncopy = new System.Windows.Forms.ToolStripButton(); this.buttonpaste = new System.Windows.Forms.ToolStripButton(); this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.buttonunindent = new System.Windows.Forms.ToolStripButton(); + this.buttonindent = new System.Windows.Forms.ToolStripButton(); + this.buttonwhitespace = new System.Windows.Forms.ToolStripButton(); + this.buttonwordwrap = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); this.buttonsnippets = new System.Windows.Forms.ToolStripDropDownButton(); this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); this.buttonscriptconfig = new System.Windows.Forms.ToolStripDropDownButton(); @@ -68,6 +73,7 @@ namespace CodeImp.DoomBuilder.Controls this.errorimages = new System.Windows.Forms.ImageList(this.components); this.statusbar = new System.Windows.Forms.StatusStrip(); this.statuslabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.positionlabel = new System.Windows.Forms.ToolStripStatusLabel(); this.scripttype = new System.Windows.Forms.ToolStripStatusLabel(); this.statusflasher = new System.Windows.Forms.Timer(this.components); this.statusresetter = new System.Windows.Forms.Timer(this.components); @@ -88,7 +94,7 @@ namespace CodeImp.DoomBuilder.Controls this.tabs.Name = "tabs"; this.tabs.Padding = new System.Drawing.Point(12, 3); this.tabs.SelectedIndex = 0; - this.tabs.Size = new System.Drawing.Size(720, 379); + this.tabs.Size = new System.Drawing.Size(794, 379); this.tabs.TabIndex = 0; this.tabs.TabStop = false; this.tabs.Selecting += new System.Windows.Forms.TabControlCancelEventHandler(this.tabs_Selecting); @@ -111,6 +117,11 @@ namespace CodeImp.DoomBuilder.Controls this.buttoncopy, this.buttonpaste, this.toolStripSeparator3, + this.buttonunindent, + this.buttonindent, + this.buttonwhitespace, + this.buttonwordwrap, + this.toolStripSeparator6, this.buttonsnippets, this.toolStripSeparator4, this.buttonscriptconfig, @@ -126,7 +137,7 @@ namespace CodeImp.DoomBuilder.Controls this.searchwholeword}); this.toolbar.Location = new System.Drawing.Point(0, 0); this.toolbar.Name = "toolbar"; - this.toolbar.Size = new System.Drawing.Size(726, 25); + this.toolbar.Size = new System.Drawing.Size(800, 25); this.toolbar.TabIndex = 1; // // buttonnew @@ -240,6 +251,54 @@ namespace CodeImp.DoomBuilder.Controls this.toolStripSeparator3.Name = "toolStripSeparator3"; this.toolStripSeparator3.Size = new System.Drawing.Size(6, 25); // + // buttonunindent + // + this.buttonunindent.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.buttonunindent.Image = global::CodeImp.DoomBuilder.Properties.Resources.TextUnindent; + this.buttonunindent.ImageTransparentColor = System.Drawing.Color.Magenta; + this.buttonunindent.Name = "buttonunindent"; + this.buttonunindent.Size = new System.Drawing.Size(23, 22); + this.buttonunindent.Text = "Unindent selection"; + this.buttonunindent.Click += new System.EventHandler(this.buttonunindent_Click); + // + // buttonindent + // + this.buttonindent.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.buttonindent.Image = global::CodeImp.DoomBuilder.Properties.Resources.TextIndent; + this.buttonindent.ImageTransparentColor = System.Drawing.Color.Magenta; + this.buttonindent.Name = "buttonindent"; + this.buttonindent.Size = new System.Drawing.Size(23, 22); + this.buttonindent.Text = "Indent selection"; + this.buttonindent.Click += new System.EventHandler(this.buttonindent_Click); + // + // buttonwhitespace + // + this.buttonwhitespace.CheckOnClick = true; + this.buttonwhitespace.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.buttonwhitespace.Image = global::CodeImp.DoomBuilder.Properties.Resources.TextWhitespace; + this.buttonwhitespace.ImageTransparentColor = System.Drawing.Color.Magenta; + this.buttonwhitespace.Name = "buttonwhitespace"; + this.buttonwhitespace.Size = new System.Drawing.Size(23, 22); + this.buttonwhitespace.Text = "Show whitespace"; + this.buttonwhitespace.Click += new System.EventHandler(this.buttonwhitespace_Click); + // + // buttonwordwrap + // + this.buttonwordwrap.CheckOnClick = true; + this.buttonwordwrap.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.buttonwordwrap.Image = global::CodeImp.DoomBuilder.Properties.Resources.WordWrap; + this.buttonwordwrap.ImageTransparentColor = System.Drawing.Color.Magenta; + this.buttonwordwrap.Name = "buttonwordwrap"; + this.buttonwordwrap.Size = new System.Drawing.Size(23, 22); + this.buttonwordwrap.Text = "Wrap long lines"; + this.buttonwordwrap.Click += new System.EventHandler(this.buttonwordwrap_Click); + // + // toolStripSeparator6 + // + this.toolStripSeparator6.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); + this.toolStripSeparator6.Name = "toolStripSeparator6"; + this.toolStripSeparator6.Size = new System.Drawing.Size(6, 25); + // // buttonsnippets // this.buttonsnippets.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; @@ -391,7 +450,7 @@ namespace CodeImp.DoomBuilder.Controls // this.splitter.Panel2.Controls.Add(this.label1); this.splitter.Panel2.Controls.Add(this.errorlist); - this.splitter.Size = new System.Drawing.Size(726, 516); + this.splitter.Size = new System.Drawing.Size(800, 516); this.splitter.SplitterDistance = 390; this.splitter.TabIndex = 2; this.splitter.TabStop = false; @@ -406,7 +465,7 @@ namespace CodeImp.DoomBuilder.Controls this.label1.Location = new System.Drawing.Point(3, 0); this.label1.Name = "label1"; this.label1.Padding = new System.Windows.Forms.Padding(1); - this.label1.Size = new System.Drawing.Size(720, 16); + this.label1.Size = new System.Drawing.Size(794, 16); this.label1.TabIndex = 1; this.label1.Text = "Errors"; // @@ -427,7 +486,7 @@ namespace CodeImp.DoomBuilder.Controls this.errorlist.MultiSelect = false; this.errorlist.Name = "errorlist"; this.errorlist.ShowGroups = false; - this.errorlist.Size = new System.Drawing.Size(720, 100); + this.errorlist.Size = new System.Drawing.Size(794, 100); this.errorlist.SmallImageList = this.errorimages; this.errorlist.TabIndex = 0; this.errorlist.TabStop = false; @@ -460,10 +519,11 @@ namespace CodeImp.DoomBuilder.Controls // this.statusbar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.statuslabel, + this.positionlabel, this.scripttype}); this.statusbar.Location = new System.Drawing.Point(0, 541); this.statusbar.Name = "statusbar"; - this.statusbar.Size = new System.Drawing.Size(726, 22); + this.statusbar.Size = new System.Drawing.Size(800, 22); this.statusbar.TabIndex = 3; this.statusbar.Text = "statusStrip1"; // @@ -476,11 +536,19 @@ namespace CodeImp.DoomBuilder.Controls this.statuslabel.Size = new System.Drawing.Size(60, 17); this.statuslabel.Text = "Ready."; // + // positionlabel + // + this.positionlabel.Name = "positionlabel"; + this.positionlabel.Size = new System.Drawing.Size(634, 17); + this.positionlabel.Spring = true; + this.positionlabel.Text = "100 : 12 (120)"; + this.positionlabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // // scripttype // + this.scripttype.Margin = new System.Windows.Forms.Padding(30, 3, 0, 2); this.scripttype.Name = "scripttype"; - this.scripttype.Size = new System.Drawing.Size(648, 17); - this.scripttype.Spring = true; + this.scripttype.Size = new System.Drawing.Size(58, 17); this.scripttype.Text = "Plain Text"; this.scripttype.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // @@ -501,7 +569,7 @@ namespace CodeImp.DoomBuilder.Controls this.Controls.Add(this.statusbar); this.Controls.Add(this.toolbar); this.Name = "ScriptEditorPanel"; - this.Size = new System.Drawing.Size(726, 563); + this.Size = new System.Drawing.Size(800, 563); this.toolbar.ResumeLayout(false); this.toolbar.PerformLayout(); this.splitter.Panel1.ResumeLayout(false); @@ -557,5 +625,11 @@ namespace CodeImp.DoomBuilder.Controls private System.Windows.Forms.ToolStripStatusLabel scripttype; private System.Windows.Forms.Timer statusflasher; private System.Windows.Forms.Timer statusresetter; + private System.Windows.Forms.ToolStripStatusLabel positionlabel; + private System.Windows.Forms.ToolStripButton buttonunindent; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator6; + private System.Windows.Forms.ToolStripButton buttonindent; + private System.Windows.Forms.ToolStripButton buttonwhitespace; + private System.Windows.Forms.ToolStripButton buttonwordwrap; } } diff --git a/Source/Core/Controls/ScriptEditorPanel.cs b/Source/Core/Controls/ScriptEditorPanel.cs index 975d997f..45bf19b0 100644 --- a/Source/Core/Controls/ScriptEditorPanel.cs +++ b/Source/Core/Controls/ScriptEditorPanel.cs @@ -25,6 +25,7 @@ using System.Windows.Forms; using CodeImp.DoomBuilder.Compilers; using CodeImp.DoomBuilder.Config; using CodeImp.DoomBuilder.Windows; +using ScintillaNET; #endregion @@ -116,16 +117,20 @@ namespace CodeImp.DoomBuilder.Controls foreach(MapLumpInfo maplumpinfo in General.Map.Config.MapLumps.Values) { // Is this a script lump? - if(maplumpinfo.Script != null) - { - // Load this! - ScriptLumpDocumentTab t = new ScriptLumpDocumentTab(this, maplumpinfo.Name, maplumpinfo.Script); - tabs.TabPages.Add(t); - } - else if(maplumpinfo.ScriptBuild) //mxd + if(maplumpinfo.ScriptBuild) //mxd { // Load this! ScriptLumpDocumentTab t = new ScriptLumpDocumentTab(this, maplumpinfo.Name, General.CompiledScriptConfigs[General.Map.Options.ScriptCompiler]); + t.OnTextChanged += tabpage_OnLumpTextChanged; //mxd + t.Scintilla.UpdateUI += scintilla_OnUpdateUI; //mxd + tabs.TabPages.Add(t); + } + else if(maplumpinfo.Script != null) + { + // Load this! + ScriptLumpDocumentTab t = new ScriptLumpDocumentTab(this, maplumpinfo.Name, maplumpinfo.Script); + t.OnTextChanged += tabpage_OnLumpTextChanged; //mxd + t.Scintilla.UpdateUI += scintilla_OnUpdateUI; //mxd tabs.TabPages.Add(t); } } @@ -160,21 +165,35 @@ namespace CodeImp.DoomBuilder.Controls // This applies user preferences public void ApplySettings() { - // Apply settings - //int panel2size = General.Settings.ReadSetting("scriptspanel.splitter", splitter.ClientRectangle.Height - splitter.SplitterDistance); - //splitter.SplitterDistance = splitter.ClientRectangle.Height - panel2size; errorlist.Columns[0].Width = General.Settings.ReadSetting("scriptspanel.errorscolumn0width", errorlist.Columns[0].Width); errorlist.Columns[1].Width = General.Settings.ReadSetting("scriptspanel.errorscolumn1width", errorlist.Columns[1].Width); errorlist.Columns[2].Width = General.Settings.ReadSetting("scriptspanel.errorscolumn2width", errorlist.Columns[2].Width); + buttonwhitespace.Checked = General.Settings.ReadSetting("scriptspanel.showwhitespace", false); //mxd + buttonwordwrap.Checked = General.Settings.ReadSetting("scriptspanel.wraplonglines", false); //mxd + ApplyTabSettings(); //mxd } // This saves user preferences public void SaveSettings() { - //General.Settings.WriteSetting("scriptspanel.splitter", splitter.ClientRectangle.Height - splitter.SplitterDistance); General.Settings.WriteSetting("scriptspanel.errorscolumn0width", errorlist.Columns[0].Width); General.Settings.WriteSetting("scriptspanel.errorscolumn1width", errorlist.Columns[1].Width); - General.Settings.WriteSetting("scriptspanel.errorscolumn2width", errorlist.Columns[2].Width); + General.Settings.WriteSetting("scriptspanel.showwhitespace", buttonwhitespace.Checked); //mxd + General.Settings.WriteSetting("scriptspanel.wraplonglines", buttonwordwrap.Checked); //mxd + } + + //mxd + private void ApplyTabSettings() + { + foreach(var tp in tabs.TabPages) + { + ScriptDocumentTab scripttab = (tp as ScriptDocumentTab); + if(scripttab != null) + { + scripttab.WrapLongLines = buttonwordwrap.Checked; + scripttab.ShowWhitespace = buttonwhitespace.Checked; + } + } } #endregion @@ -230,7 +249,7 @@ namespace CodeImp.DoomBuilder.Controls { if(!string.IsNullOrEmpty(findoptions.FindText) && (options.ReplaceWith != null) && (ActiveTab != null)) { - if(string.Compare(ActiveTab.GetSelectedText(), options.FindText, !options.CaseSensitive) == 0) + if(string.Compare(ActiveTab.SelectedText, options.FindText, !options.CaseSensitive) == 0) { // Replace selection ActiveTab.ReplaceSelection(options.ReplaceWith); @@ -321,7 +340,7 @@ namespace CodeImp.DoomBuilder.Controls findreplaceform.Show(this.ParentForm); if(ActiveTab.SelectionEnd != ActiveTab.SelectionStart) - findreplaceform.SetFindText(ActiveTab.GetSelectedText()); + findreplaceform.SetFindText(ActiveTab.SelectedText); } catch(Exception) { @@ -421,7 +440,7 @@ namespace CodeImp.DoomBuilder.Controls if(t.IsChanged) { // Ask to save - DialogResult result = MessageBox.Show(this.ParentForm, "Do you want to save changes to " + t.Text + "?", "Close File", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); + DialogResult result = MessageBox.Show(this.ParentForm, "Do you want to save changes to " + t.Title + "?", "Close File", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); switch(result) { case DialogResult.Yes: @@ -492,20 +511,24 @@ namespace CodeImp.DoomBuilder.Controls t = (tabs.SelectedTab as ScriptDocumentTab); // Enable/disable buttons - buttonsave.Enabled = (t != null) && t.ExplicitSave && t.IsChanged; + buttonsave.Enabled = (t != null && t.ExplicitSave && t.IsChanged); buttonsaveall.Enabled = (explicitsavescripts > 0); - buttoncompile.Enabled = (t != null) && (t.Config.Compiler != null); + buttoncompile.Enabled = (t != null && t.Config.Compiler != null); buttonsearch.Enabled = (t != null); //mxd - buttonkeywordhelp.Enabled = (t != null) && !string.IsNullOrEmpty(t.Config.KeywordHelp); - buttonscriptconfig.Enabled = (t != null) && t.IsReconfigurable; - buttonundo.Enabled = (t != null); - buttonredo.Enabled = (t != null); - buttoncopy.Enabled = (t != null); - buttoncut.Enabled = (t != null); - buttonpaste.Enabled = (t != null); - buttonclose.Enabled = (t != null) && t.IsClosable; + buttonkeywordhelp.Enabled = (t != null && !string.IsNullOrEmpty(t.Config.KeywordHelp)); + buttonscriptconfig.Enabled = (t != null && t.IsReconfigurable); + buttonundo.Enabled = (t != null && t.Scintilla.CanUndo); + buttonredo.Enabled = (t != null && t.Scintilla.CanRedo); + buttoncopy.Enabled = (t != null && t.Scintilla.SelectionStart < t.Scintilla.SelectionEnd); + buttoncut.Enabled = (t != null && t.Scintilla.SelectionStart < t.Scintilla.SelectionEnd); + buttonpaste.Enabled = (t != null && t.Scintilla.CanPaste); + buttonclose.Enabled = (t != null && t.IsClosable); buttonsnippets.DropDownItems.Clear(); //mxd - buttonsnippets.Enabled = (t != null) && t.Config.Snippets.Count > 0; //mxd + buttonsnippets.Enabled = (t != null && t.Config.Snippets.Count > 0); //mxd + buttonindent.Enabled = (t != null); //mxd + buttonunindent.Enabled = (t != null && t.Scintilla.Lines[t.Scintilla.CurrentLine].Indentation > 0); //mxd + buttonwhitespace.Enabled = (t != null); //mxd + buttonwordwrap.Enabled = (t != null); //mxd if(t != null) { @@ -519,7 +542,8 @@ namespace CodeImp.DoomBuilder.Controls //mxd. Add snippets if(t.Config != null && t.Config.Snippets.Count > 0) { - if(t.Config.Snippets.Count > 0) foreach(KeyValuePair group in t.Config.Snippets) buttonsnippets.DropDownItems.Add(group.Key).Click += OnInsertSnippetClick; + if(t.Config.Snippets.Count > 0) + foreach(string snippetname in t.Config.Snippets) buttonsnippets.DropDownItems.Add(snippetname).Click += OnInsertSnippetClick; } // Focus to script editor @@ -589,24 +613,27 @@ namespace CodeImp.DoomBuilder.Controls // Done t.OnTextChanged += tabpage_OnTextChanged; //mxd - t.IsChanged = false; //mxd. Not changed yet + t.Scintilla.UpdateUI += scintilla_OnUpdateUI; UpdateToolbar(true); return t; } - else - { - // Failed - return null; - } + + // Failed + return null; } // This saves the current open script public void ExplicitSaveCurrentTab() { ScriptDocumentTab t = (tabs.SelectedTab as ScriptDocumentTab); - if((t != null) && t.ExplicitSave) + if((t != null)) { - buttonsave_Click(this, EventArgs.Empty); + if(t.ExplicitSave) + buttonsave_Click(this, EventArgs.Empty); + else if(t.Config.Compiler != null) //mxd + buttoncompile_Click(this, EventArgs.Empty); + else + General.MessageBeep(MessageBeepType.Default); } else { @@ -625,7 +652,7 @@ namespace CodeImp.DoomBuilder.Controls { // Get script ScriptDocumentTab t = (tabs.SelectedTab as ScriptDocumentTab); - return t.LaunchKeywordHelp(); + return (t != null && t.LaunchKeywordHelp()); } //mxd. This changes status text @@ -837,18 +864,14 @@ namespace CodeImp.DoomBuilder.Controls t.SaveAs(savefile.FileName); return true; } - else - { - // Cancelled - return false; - } - } - else - { - // Save to same filename - t.Save(); - return true; + + // Cancelled + return false; } + + // Save to same filename + t.Save(); + return true; } // A tab is selected @@ -894,15 +917,15 @@ namespace CodeImp.DoomBuilder.Controls } // Compile now - DisplayStatus(ScriptStatusType.Busy, "Compiling script \"" + t.Text + "\"..."); + DisplayStatus(ScriptStatusType.Busy, "Compiling script \"" + t.Title + "\"..."); Cursor.Current = Cursors.WaitCursor; t.Compile(); // Show warning if((compilererrors != null) && (compilererrors.Count > 0)) - DisplayStatus(ScriptStatusType.Warning, compilererrors.Count + " errors while compiling \"" + t.Text + "\"!"); + DisplayStatus(ScriptStatusType.Warning, compilererrors.Count + " errors while compiling \"" + t.Title + "\"!"); else - DisplayStatus(ScriptStatusType.Info, "Script \"" + t.Text + "\" compiled without errors."); + DisplayStatus(ScriptStatusType.Info, "Script \"" + t.Title + "\" compiled without errors."); Cursor.Current = Cursors.Default; UpdateToolbar(true); @@ -948,6 +971,32 @@ namespace CodeImp.DoomBuilder.Controls UpdateToolbar(true); } + //mxd + private void buttonunindent_Click(object sender, EventArgs e) + { + ScriptDocumentTab t = (tabs.SelectedTab as ScriptDocumentTab); + t.IndentSelection(false); + } + + //mxd + private void buttonindent_Click(object sender, EventArgs e) + { + ScriptDocumentTab t = (tabs.SelectedTab as ScriptDocumentTab); + t.IndentSelection(true); + } + + //mxd + private void buttonwhitespace_Click(object sender, EventArgs e) + { + ApplyTabSettings(); + } + + //mxd + private void buttonwordwrap_Click(object sender, EventArgs e) + { + ApplyTabSettings(); + } + //mxd. Search clicked private void buttonsearch_Click(object sender, EventArgs e) { @@ -958,7 +1007,7 @@ namespace CodeImp.DoomBuilder.Controls private void OnInsertSnippetClick(object sender, EventArgs eventArgs) { ScriptDocumentTab t = (tabs.SelectedTab as ScriptDocumentTab); - t.InsertSnippet( t.Config.Snippets[((ToolStripItem)sender).Text] ); + t.InsertSnippet( ((ToolStripItem)sender).Text ); } // Mouse released on tabs @@ -967,13 +1016,52 @@ namespace CodeImp.DoomBuilder.Controls ForceFocus(); } - //mxd + //mxd. Text in ScriptFileDocumentTab was changed private void tabpage_OnTextChanged(object sender, EventArgs eventArgs) { if(tabs.SelectedTab != null) { ScriptDocumentTab curtab = tabs.SelectedTab as ScriptDocumentTab; - buttonsave.Enabled = (curtab != null && curtab.ExplicitSave && curtab.IsChanged); + if(curtab != null) + { + buttonsave.Enabled = (curtab.ExplicitSave && curtab.IsChanged); + buttonundo.Enabled = curtab.Scintilla.CanUndo; + buttonredo.Enabled = curtab.Scintilla.CanRedo; + } + } + } + + //mxd. Text in ScriptLumpDocumentTab was changed + private void tabpage_OnLumpTextChanged(object sender, EventArgs e) + { + if(tabs.SelectedTab != null) + { + ScriptDocumentTab curtab = tabs.SelectedTab as ScriptDocumentTab; + if(curtab != null) + { + buttonundo.Enabled = curtab.Scintilla.CanUndo; + buttonredo.Enabled = curtab.Scintilla.CanRedo; + } + } + } + + //mxd + private void scintilla_OnUpdateUI(object sender, UpdateUIEventArgs e) + { + Scintilla s = sender as Scintilla; + if(s != null) + { + // Update caret position info [line] : [caret pos start] OR [caret pos start x selection length] ([total lines]) + positionlabel.Text = (s.CurrentLine + 1) + " : " + + (s.SelectionStart + 1 - s.Lines[s.LineFromPosition(s.SelectionStart)].Position) + + (s.SelectionStart != s.SelectionEnd ? "x" + (s.SelectionEnd - s.SelectionStart) : "") + + " (" + s.Lines.Count + ")"; + + // Update copy-paste buttons + buttoncut.Enabled = (s.SelectionEnd > s.SelectionStart); + buttoncopy.Enabled = (s.SelectionEnd > s.SelectionStart); + buttonpaste.Enabled = s.CanPaste; + buttonunindent.Enabled = s.Lines[s.CurrentLine].Indentation > 0; } } diff --git a/Source/Core/Controls/ScriptFileDocumentTab.cs b/Source/Core/Controls/ScriptFileDocumentTab.cs index c5607de4..698ce69f 100644 --- a/Source/Core/Controls/ScriptFileDocumentTab.cs +++ b/Source/Core/Controls/ScriptFileDocumentTab.cs @@ -61,7 +61,7 @@ namespace CodeImp.DoomBuilder.Controls if(config.Extensions.Length > 0) ext = "." + config.Extensions[0]; SetTitle("Untitled" + ext); editor.ClearUndoRedo(); - navigator.Enabled = (config.ScriptType != ScriptType.UNKNOWN); //mxd + editor.FunctionBar.Enabled = (config.ScriptType != ScriptType.UNKNOWN); //mxd } #endregion @@ -289,7 +289,7 @@ namespace CodeImp.DoomBuilder.Controls } // Done - editor.IsChanged = false; + editor.SetSavePoint(); //mxd UpdateTitle(); //mxd return true; } @@ -318,7 +318,7 @@ namespace CodeImp.DoomBuilder.Controls try { // Read the file - editor.SetText(File.ReadAllBytes(filepathname)); + editor.Text = File.ReadAllText(filepathname); //mxd } catch(Exception e) { @@ -332,7 +332,6 @@ namespace CodeImp.DoomBuilder.Controls // Setup this.filepathname = filepathname; editor.ClearUndoRedo(); - editor.IsChanged = false; //mxd. Not changed yet SetTitle(Path.GetFileName(filepathname)); UpdateNavigator(); //mxd diff --git a/Source/Core/Controls/ScriptLumpDocumentTab.cs b/Source/Core/Controls/ScriptLumpDocumentTab.cs index f9a79abd..5b774514 100644 --- a/Source/Core/Controls/ScriptLumpDocumentTab.cs +++ b/Source/Core/Controls/ScriptLumpDocumentTab.cs @@ -17,9 +17,9 @@ #region ================== Namespaces using System.Collections.Generic; -using CodeImp.DoomBuilder.Config; using System.IO; using CodeImp.DoomBuilder.Compilers; +using CodeImp.DoomBuilder.Config; #endregion @@ -72,13 +72,12 @@ namespace CodeImp.DoomBuilder.Controls MemoryStream stream = General.Map.GetLumpData(this.lumpname); if(stream != null) { - editor.SetText(stream.ToArray()); + editor.SetText(stream.ToArray()); //mxd editor.ClearUndoRedo(); UpdateNavigator(); //mxd } // Set title - IsChanged = false; //mxd. Not changed yet SetTitle(ismapheader ? General.Map.Options.CurrentName : this.lumpname.ToUpper()); } @@ -116,7 +115,7 @@ namespace CodeImp.DoomBuilder.Controls // Store the lump data MemoryStream stream = new MemoryStream(editor.GetText()); General.Map.SetLumpData(lumpname, stream); - editor.IsChanged = false; + editor.SetSavePoint(); //mxd UpdateTitle(); //mxd return true; } diff --git a/Source/Core/Data/ImageData.cs b/Source/Core/Data/ImageData.cs index 06e2cc87..d5cbbc88 100644 --- a/Source/Core/Data/ImageData.cs +++ b/Source/Core/Data/ImageData.cs @@ -547,8 +547,8 @@ namespace CodeImp.DoomBuilder.Data // This returns a preview image public virtual Image GetPreview() { - lock(this) - { + //lock(this) + //{ // Preview ready? if(previewstate == ImageLoadState.Ready) { @@ -565,7 +565,7 @@ namespace CodeImp.DoomBuilder.Data // Return loading bitmap return Properties.Resources.Hourglass; - } + //} } //mxd. This greatly speeds up Dictionary lookups diff --git a/Source/Core/GZBuilder/GZDoom/AcsParserSE.cs b/Source/Core/GZBuilder/GZDoom/AcsParserSE.cs index 8b40ed32..320ba1dd 100644 --- a/Source/Core/GZBuilder/GZDoom/AcsParserSE.cs +++ b/Source/Core/GZBuilder/GZDoom/AcsParserSE.cs @@ -166,9 +166,9 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom case "function": { SkipWhitespace(true); - int startpos = (int)stream.Position; string funcname = ReadToken(); //read return type SkipWhitespace(true); + int startpos = (int)stream.Position; funcname += " " + ReadToken(); //read function name // Try to parse argument names diff --git a/Source/Core/GZBuilder/Windows/ExceptionDialog.cs b/Source/Core/GZBuilder/Windows/ExceptionDialog.cs index e1d97ed6..311bea14 100644 --- a/Source/Core/GZBuilder/Windows/ExceptionDialog.cs +++ b/Source/Core/GZBuilder/Windows/ExceptionDialog.cs @@ -156,8 +156,10 @@ namespace CodeImp.DoomBuilder.GZBuilder.Windows private static string GetExceptionDescription(Exception ex) { - //add to error logger - General.ErrorLogger.Add(ErrorType.Error, "**** " + ex.Source + ": " + ex.Message + " ****"); + // Add to error logger + General.WriteLogLine("***********************************************************"); + General.ErrorLogger.Add(ErrorType.Error, ex.Source + ": " + ex.Message); + General.WriteLogLine("***********************************************************"); string message = "********EXCEPTION DETAILS********" + Environment.NewLine + ex.Source + ": " + ex.Message + Environment.NewLine + ex.StackTrace; diff --git a/Source/Core/General/ErrorLogger.cs b/Source/Core/General/ErrorLogger.cs index 9ce3bc07..354e396a 100644 --- a/Source/Core/General/ErrorLogger.cs +++ b/Source/Core/General/ErrorLogger.cs @@ -30,10 +30,11 @@ namespace CodeImp.DoomBuilder #region ================== Variables - private List errors; + private readonly List errors; private volatile bool changed; private volatile bool erroradded; private volatile bool warningadded; + private object threadlock = new object(); //mxd #endregion @@ -62,7 +63,7 @@ namespace CodeImp.DoomBuilder // This clears the errors public void Clear() { - lock(this) + lock(threadlock) { changed = false; erroradded = false; @@ -79,7 +80,7 @@ namespace CodeImp.DoomBuilder { string prefix = ""; - lock(this) + lock(threadlock) { //mxd. Don't add duplicate messages if(errors.Count == 0 || message != errors[errors.Count - 1].message || type != errors[errors.Count - 1].type) @@ -117,13 +118,24 @@ namespace CodeImp.DoomBuilder } // This returns the list of errors - internal List GetErrors() + /*internal List GetErrors() { lock(this) { List copylist = new List(errors); return copylist; } + }*/ + + //mxd. This returns the list of errors starting at given index + internal IEnumerable GetErrors(int startindex) + { + if(startindex >= errors.Count) return new List(); + + ErrorItem[] result = new ErrorItem[errors.Count - startindex]; + errors.CopyTo(startindex, result, 0, result.Length); + + return result; } #endregion diff --git a/Source/Core/Properties/Resources.Designer.cs b/Source/Core/Properties/Resources.Designer.cs index 462eb5ac..8486a9ed 100644 --- a/Source/Core/Properties/Resources.Designer.cs +++ b/Source/Core/Properties/Resources.Designer.cs @@ -753,17 +753,17 @@ namespace CodeImp.DoomBuilder.Properties { } } - internal static byte[] ScriptConstant { + internal static System.Drawing.Bitmap ScriptConstant { get { object obj = ResourceManager.GetObject("ScriptConstant", resourceCulture); - return ((byte[])(obj)); + return ((System.Drawing.Bitmap)(obj)); } } - internal static byte[] ScriptError { + internal static System.Drawing.Bitmap ScriptError { get { object obj = ResourceManager.GetObject("ScriptError", resourceCulture); - return ((byte[])(obj)); + return ((System.Drawing.Bitmap)(obj)); } } @@ -774,10 +774,10 @@ namespace CodeImp.DoomBuilder.Properties { } } - internal static byte[] ScriptKeyword { + internal static System.Drawing.Bitmap ScriptKeyword { get { object obj = ResourceManager.GetObject("ScriptKeyword", resourceCulture); - return ((byte[])(obj)); + return ((System.Drawing.Bitmap)(obj)); } } @@ -788,10 +788,10 @@ namespace CodeImp.DoomBuilder.Properties { } } - internal static byte[] ScriptSnippet { + internal static System.Drawing.Bitmap ScriptSnippet { get { object obj = ResourceManager.GetObject("ScriptSnippet", resourceCulture); - return ((byte[])(obj)); + return ((System.Drawing.Bitmap)(obj)); } } @@ -942,6 +942,27 @@ namespace CodeImp.DoomBuilder.Properties { } } + internal static System.Drawing.Bitmap TextIndent { + get { + object obj = ResourceManager.GetObject("TextIndent", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap TextUnindent { + get { + object obj = ResourceManager.GetObject("TextUnindent", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + internal static System.Drawing.Bitmap TextWhitespace { + get { + object obj = ResourceManager.GetObject("TextWhitespace", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + internal static System.Drawing.Bitmap ThingStatistics { get { object obj = ResourceManager.GetObject("ThingStatistics", resourceCulture); diff --git a/Source/Core/Properties/Resources.resx b/Source/Core/Properties/Resources.resx index ebf75344..a906cb94 100644 --- a/Source/Core/Properties/Resources.resx +++ b/Source/Core/Properties/Resources.resx @@ -154,6 +154,9 @@ ..\Resources\SaveAll.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Update.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\Monster2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -175,15 +178,27 @@ ..\Resources\MixedThings.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\TextUnindent.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\Marine.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\InfoPanelCollapse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\mergegeometry.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\Splash3_small.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Group.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\TagStatistics.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\VisualVertices.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -196,6 +211,9 @@ ..\Resources\ScriptHelp.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Light_animate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\CommentSmile.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -217,17 +235,14 @@ ..\Resources\Redo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Status0.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Brightness.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Model.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\mergegeometry.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\ScriptSnippet.xpm;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\Configuration.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\CommentProblem.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -238,8 +253,8 @@ ..\Resources\MLogo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\UnknownImage.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Reload.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Paste.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -248,7 +263,7 @@ ..\Resources\LightDisabled.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\ScriptConstant.xpm;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ..\Resources\ScriptConstant.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\FolderExplore.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -265,12 +280,18 @@ ..\Resources\CLogo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\WarningOff.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\List.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\TextWhitespace.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\LinedefColorPresets.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -286,8 +307,8 @@ ..\Resources\Cursor.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Grid2_arrowup.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Preferences.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Reset.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -313,6 +334,12 @@ ..\Resources\NewMap2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\About.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\GridDecrease.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\SearchClear.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -331,6 +358,9 @@ ..\Resources\InfoLine.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Status10.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\MissingTexture.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -338,7 +368,7 @@ ..\Resources\ErrorLarge.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\ScriptError.xpm;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ..\Resources\ScriptError.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Lightbulb.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -370,6 +400,9 @@ ..\Resources\Model_selected.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\GridDynamic.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\Collapse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -382,11 +415,11 @@ ..\Resources\Unlink.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Status10.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\TextIndent.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Properties.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Status0.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Script2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -406,6 +439,9 @@ ..\Resources\Hourglass.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\GridIncrease.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\Folder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -424,17 +460,20 @@ ..\Resources\Status2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\Link.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Brightness.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\InfoPanelExpand.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\TagStatistics.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\ScriptSnippet.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Properties.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Test.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -442,8 +481,8 @@ ..\Resources\Undo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\InfoPanelExpand.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\UnknownImage.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Unpin.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -454,8 +493,14 @@ ..\Resources\ViewTextureFloor.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Light_animate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Grid2_arrowup.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\GroupRemove.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Sky.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Pin.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -464,7 +509,7 @@ ..\Resources\ViewNormal.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\ScriptKeyword.xpm;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ..\Resources\ScriptKeyword.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\MissingThing.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -472,11 +517,14 @@ ..\Resources\Monster3.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\SkySphere.md3;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ..\Resources\DockerCollapse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\GroupAdd.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\ViewBrightness.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -511,43 +559,4 @@ ..\Resources\Check.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\GridDynamic.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\About.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Configuration.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Preferences.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Reload.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Update.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Group.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\GroupAdd.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\GroupRemove.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\GridDecrease.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\GridIncrease.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Sky.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\SkySphere.md3;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - \ No newline at end of file diff --git a/Source/Core/Rendering/ColorCollection.cs b/Source/Core/Rendering/ColorCollection.cs index 86f60314..aaaa315e 100644 --- a/Source/Core/Rendering/ColorCollection.cs +++ b/Source/Core/Rendering/ColorCollection.cs @@ -20,7 +20,6 @@ using System; using System.Globalization; using System.Drawing; using SlimDX; - using Configuration = CodeImp.DoomBuilder.IO.Configuration; #endregion @@ -38,7 +37,7 @@ namespace CodeImp.DoomBuilder.Rendering private const float DARK_ADDITION = -0.2f; // Palette size - private const int NUM_COLORS = 41; + private const int NUM_COLORS = 49; public const int NUM_THING_COLORS = 20; public const int THING_COLORS_OFFSET = 20; @@ -84,16 +83,23 @@ namespace CodeImp.DoomBuilder.Rendering public const int THINGCOLOR18 = 38; public const int THINGCOLOR19 = 39; public const int THREEDFLOORCOLOR = 40; //mxd - + public const int SCRIPTINDICATOR = 41; //mxd. Additional Script Editor colors + public const int SCRIPTBRACEHIGHLIGHT = 42; + public const int SCRIPTBADBRACEHIGHLIGHT = 43; + public const int SCRIPTWHITESPACE = 44; + public const int SCRIPTSELECTIONFORE = 45; + public const int SCRIPTSELECTIONBACK = 46; + public const int STRINGS = 47; + public const int INCLUDES = 48; #endregion #region ================== Variables // Colors - private PixelColor[] colors; - private PixelColor[] brightcolors; - private PixelColor[] darkcolors; + private readonly PixelColor[] colors; + private readonly PixelColor[] brightcolors; + private readonly PixelColor[] darkcolors; // Color-correction table private byte[] correctiontable; @@ -125,6 +131,12 @@ namespace CodeImp.DoomBuilder.Rendering public PixelColor Selection3D { get { return colors[SELECTION3D]; } internal set { colors[SELECTION3D] = value; } } public PixelColor ScriptBackground { get { return colors[SCRIPTBACKGROUND]; } internal set { colors[SCRIPTBACKGROUND] = value; } } + public PixelColor ScriptIndicator { get { return colors[SCRIPTINDICATOR]; } internal set { colors[SCRIPTINDICATOR] = value; } } + public PixelColor ScriptBraceHighlight { get { return colors[SCRIPTBRACEHIGHLIGHT]; } internal set { colors[SCRIPTBRACEHIGHLIGHT] = value; } } + public PixelColor ScriptBadBraceHighlight { get { return colors[SCRIPTBADBRACEHIGHLIGHT]; } internal set { colors[SCRIPTBADBRACEHIGHLIGHT] = value; } } + public PixelColor ScriptWhitespace { get { return colors[SCRIPTWHITESPACE]; } internal set { colors[SCRIPTWHITESPACE] = value; } } + public PixelColor ScriptSelectionForeColor { get { return colors[SCRIPTSELECTIONFORE]; } internal set { colors[SCRIPTSELECTIONFORE] = value; } } + public PixelColor ScriptSelectionBackColor { get { return colors[SCRIPTSELECTIONBACK]; } internal set { colors[SCRIPTSELECTIONBACK] = value; } } public PixelColor LineNumbers { get { return colors[LINENUMBERS]; } internal set { colors[LINENUMBERS] = value; } } public PixelColor PlainText { get { return colors[PLAINTEXT]; } internal set { colors[PLAINTEXT] = value; } } public PixelColor Comments { get { return colors[COMMENTS]; } internal set { colors[COMMENTS] = value; } } @@ -148,10 +160,32 @@ namespace CodeImp.DoomBuilder.Rendering for(int i = 0; i < NUM_COLORS; i++) { // Read color - colors[i] = PixelColor.FromInt(cfg.ReadSetting("colors.color" + i.ToString(CultureInfo.InvariantCulture), -16711872)); //mxd. changed default color from transparent to light-green + colors[i] = PixelColor.FromInt(cfg.ReadSetting("colors.color" + i.ToString(CultureInfo.InvariantCulture), 0)); } - // Set new colors + //mxd. Set new colors (previously these were defined in GZBuilder.default.cfg) + if(colors[BACKGROUND].ToInt() == 0) colors[BACKGROUND] = PixelColor.FromInt(-16777216); + if(colors[VERTICES].ToInt() == 0) colors[VERTICES] = PixelColor.FromInt(-11425537); + if(colors[LINEDEFS].ToInt() == 0) colors[LINEDEFS] = PixelColor.FromInt(-1); + if(colors[MODELWIRECOLOR].ToInt() == 0) colors[MODELWIRECOLOR] = PixelColor.FromInt(-4259937); + if(colors[INFOLINECOLOR].ToInt() == 0) colors[INFOLINECOLOR] = PixelColor.FromInt(-3750145); + if(colors[HIGHLIGHT].ToInt() == 0) colors[HIGHLIGHT] = PixelColor.FromInt(-21504); + if(colors[SELECTION].ToInt() == 0) colors[SELECTION] = PixelColor.FromInt(-49152); + if(colors[INDICATION].ToInt() == 0) colors[INDICATION] = PixelColor.FromInt(-128); + if(colors[GRID].ToInt() == 0) colors[GRID] = PixelColor.FromInt(-12171706); + if(colors[GRID64].ToInt() == 0) colors[GRID64] = PixelColor.FromInt(-13018769); + if(colors[CROSSHAIR3D].ToInt() == 0) colors[CROSSHAIR3D] = PixelColor.FromInt(-16711681); // Unused! + if(colors[HIGHLIGHT3D].ToInt() == 0) colors[HIGHLIGHT3D] = PixelColor.FromInt(-24576); + if(colors[SELECTION3D].ToInt() == 0) colors[SELECTION3D] = PixelColor.FromInt(-49152); + if(colors[SCRIPTBACKGROUND].ToInt() == 0) colors[SCRIPTBACKGROUND] = PixelColor.FromInt(-1); + if(colors[LINENUMBERS].ToInt() == 0) colors[LINENUMBERS] = PixelColor.FromInt(-13921873); + if(colors[PLAINTEXT].ToInt() == 0) colors[PLAINTEXT] = PixelColor.FromInt(-16777216); + if(colors[COMMENTS].ToInt() == 0) colors[COMMENTS] = PixelColor.FromInt(-16744448); + if(colors[KEYWORDS].ToInt() == 0) colors[KEYWORDS] = PixelColor.FromInt(-16741493); + if(colors[LITERALS].ToInt() == 0) colors[LITERALS] = PixelColor.FromInt(-16776961); + if(colors[CONSTANTS].ToInt() == 0) colors[CONSTANTS] = PixelColor.FromInt(-12566273); + + // Set new thing colors if(colors[THINGCOLOR00].ToInt() == 0) colors[THINGCOLOR00] = PixelColor.FromColor(Color.DimGray); if(colors[THINGCOLOR01].ToInt() == 0) colors[THINGCOLOR01] = PixelColor.FromColor(Color.RoyalBlue); if(colors[THINGCOLOR02].ToInt() == 0) colors[THINGCOLOR02] = PixelColor.FromColor(Color.ForestGreen); @@ -172,6 +206,17 @@ namespace CodeImp.DoomBuilder.Rendering if(colors[THINGCOLOR17].ToInt() == 0) colors[THINGCOLOR17] = PixelColor.FromColor(Color.DarkOrange); if(colors[THINGCOLOR18].ToInt() == 0) colors[THINGCOLOR18] = PixelColor.FromColor(Color.DarkKhaki); if(colors[THINGCOLOR19].ToInt() == 0) colors[THINGCOLOR19] = PixelColor.FromColor(Color.Goldenrod); + + //mxd. Set the rest of new colors (previously these were also defined in GZBuilder.default.cfg) + if(colors[THREEDFLOORCOLOR].ToInt() == 0) colors[THREEDFLOORCOLOR] = PixelColor.FromInt(-65536); + if(colors[SCRIPTINDICATOR].ToInt() == 0) colors[SCRIPTINDICATOR] = PixelColor.FromInt(-16711936); + if(colors[SCRIPTBRACEHIGHLIGHT].ToInt() == 0) colors[SCRIPTBRACEHIGHLIGHT] = PixelColor.FromInt(-16711681); + if(colors[SCRIPTBADBRACEHIGHLIGHT].ToInt() == 0) colors[SCRIPTBADBRACEHIGHLIGHT] = PixelColor.FromInt(-65536); + if(colors[SCRIPTWHITESPACE].ToInt() == 0) colors[SCRIPTWHITESPACE] = PixelColor.FromInt(-8355712); + if(colors[SCRIPTSELECTIONFORE].ToInt() == 0) colors[SCRIPTSELECTIONFORE] = PixelColor.FromInt(-1); + if(colors[SCRIPTSELECTIONBACK].ToInt() == 0) colors[SCRIPTSELECTIONBACK] = PixelColor.FromInt(-13395457); + if(colors[STRINGS].ToInt() == 0) colors[STRINGS] = PixelColor.FromInt(-6089451); + if(colors[INCLUDES].ToInt() == 0) colors[INCLUDES] = PixelColor.FromInt(-9868951); // Create assist colors CreateAssistColors(); diff --git a/Source/Core/Rendering/D3DShader.cs b/Source/Core/Rendering/D3DShader.cs index b5275e41..dd301e03 100644 --- a/Source/Core/Rendering/D3DShader.cs +++ b/Source/Core/Rendering/D3DShader.cs @@ -109,6 +109,8 @@ namespace CodeImp.DoomBuilder.Rendering } catch(Exception) { + string debugerrors = string.Empty; //mxd + // Compiling failed, try with debug information try { @@ -116,16 +118,27 @@ namespace CodeImp.DoomBuilder.Rendering fxdata.Seek(0, SeekOrigin.Begin); // Compile effect - fx = Effect.FromStream(General.Map.Graphics.Device, fxdata, null, null, null, ShaderFlags.Debug, null, out errors); - if(!string.IsNullOrEmpty(errors)) + fx = Effect.FromStream(General.Map.Graphics.Device, fxdata, null, null, null, ShaderFlags.Debug, null, out debugerrors); + if(!string.IsNullOrEmpty(debugerrors)) { - throw new Exception("Errors in effect file " + fxfile + ": " + errors); + throw new Exception("Errors in effect file " + fxfile + ": " + debugerrors); } } catch(Exception e) { + //mxd. Try to get something. Anything! + string message; + if(!string.IsNullOrEmpty(debugerrors)) + message = e.Message + "\nInitial message (debug mode): \"" + debugerrors + "\""; + else if(!string.IsNullOrEmpty(errors)) + message = e.Message + "\nInitial message: \"" + errors + "\""; + else + message = e.ToString(); + + if(string.IsNullOrEmpty(message)) message = "No initial message..."; + // No debug information, just crash - throw new Exception(e.GetType().Name + " while loading effect " + fxfile + ": " + e.Message + "\nInitial message: " + errors); + throw new Exception(e.GetType().Name + " while loading effect " + fxfile + ": " + message); } } diff --git a/Source/Core/Resources/Lexers.cfg b/Source/Core/Resources/Lexers.cfg index a62b35c7..5cb1b9ce 100644 --- a/Source/Core/Resources/Lexers.cfg +++ b/Source/Core/Resources/Lexers.cfg @@ -33,6 +33,8 @@ lexer3 // CPP-style, case-sensitive 7 = 4; // literal 16 = 2; // constants 37 = 5; // ident guides + 6 = 6; // strings + 9 = 7; // includes keywordsindex = 0; constantsindex = 1; @@ -87,10 +89,10 @@ lexer35 // CPP-style, case-insensitive 7 = 4; // literal 16 = 2; // constants 37 = 5; // ident guides + 6 = 6; // strings + 9 = 7; // includes keywordsindex = 0; constantsindex = 1; snippetindex = 2; -} - - +} \ No newline at end of file diff --git a/Source/Core/Resources/ScriptConstant.png b/Source/Core/Resources/ScriptConstant.png new file mode 100644 index 0000000000000000000000000000000000000000..556e12ae9f6098651956b35aaa2e633df47fcfb4 GIT binary patch literal 1201 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nAI{vB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuU%v{0TQqR!T z+}y-mN5ROz&{W^RSl`${*T~q)#K6kLNC66zfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD#PU%0_}#n6BP2AO_EVu8M)o`HUDF34YC)x{-2sR(CaRb3oXS&*t9 zlv69T3n z5EGtsfgE_^Pt60S_#$A^mbd8N#=yX+=;`7ZQgQ1}@L4ZrN1k&{{hCeF`dA&CZ4*v-Vai3Ay*n_w_ax znlgUupL8{$+?sJy(d#9L8MPhXE?n3@Io)gmYiE_R*}ik<-X~<|YqVtEUsJi@{rtPJ niy5O&m`^^P)cdbBpOKB>l!4vWbAEGuL4}B?tDnm{r-UW|P7|I- literal 0 HcmV?d00001 diff --git a/Source/Core/Resources/ScriptError.png b/Source/Core/Resources/ScriptError.png new file mode 100644 index 0000000000000000000000000000000000000000..bc396ed5b00a2bff7b353f0ce48bae3b24c4d475 GIT binary patch literal 1419 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nAI{vB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuU%v{0TQqR!T z+}y-mN5ROz&{W^RSl`${*T~q)#K6kLNC66zfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7I$IMft0!ZY(y z^2>`g!FqgstvvIJOA_;vQ$1a5m4K$`WoD*WnOj&IJ3ASNIPQCg-$LND17b&t~LckORV#1RykONQrsd>N@Uj$6rl8IlZGcYjz z_H=O!skpTycz?D?puoShe1BVmMwvjDB;`p?EEn|@W*o9=O?n!y5Tn0YZtsa=lb5-#-x*OmS9%N2d| k>yp^t%h`8c{!%=^pm@Z%QPK8I52$$bboFyt=akR{0Q9W~n*aa+ literal 0 HcmV?d00001 diff --git a/Source/Core/Resources/ScriptKeyword.png b/Source/Core/Resources/ScriptKeyword.png new file mode 100644 index 0000000000000000000000000000000000000000..a83b2f1781e822755c87cb9dee6e70b4bacffc7d GIT binary patch literal 1265 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nAI{vB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuU%v{0TQqR!T z+}y-mN5ROz&{W^RSl`${*T~q)#K6kLNC66zfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7I$IMft0!ZY(y z^2>`g!FqgstvvIJOA_;vQ$1a5m4K$`WoD*WS-7~G8d{pWIk`AH85+8pT3DDly12T! zxEZ+_nLD|-!t}c2Czs}?=9R$oroi=D7~s?kN)EXNK$~4si!#enQ{0O3a}~hew#vlq z78ji6LG`BKbc?wwPQCg-$LND17b&t~LckORV#1RykONQrsd>N@Uj$6rk(bq)85kH7 zJzX3_DsF9=eAdg!QRMjl=eL|5E#uywo7fewL#XB6W2f!~sR6H>Ua)eV5?{GaFzO2P z7EUgEu}0lPEW2GTs`fq$5A-`XwIyq!+F1h`i!(px{c?ui}1H_b)15WT-s}XRSVESI!#KarU^v_LK*)OIRh+1I~x|)TFI5uRbT$ z_|oB~z_bm!mV7Z1xD#uBY5GgMC!ubOZ##T4;SAIH&KUNaDe`T@?f=1zDHG4EsXN(z zCY0^qPK6+M%^Oi>9(!#y99OKk*68k5v1&r*baBzmf$UwUlrIZTXq{l;ub^>$!LLQL z_e%Vd3{^eoJWs$+ukYc^FHY6hHq`EQRrXyJFiHQ}#Vm8d{hgOjOx8FTRWbK}rqKVl e#=X2h1QHk?wzJqoY&Ylu6+)h_elF{r5}E)+NWWVE literal 0 HcmV?d00001 diff --git a/Source/Core/Resources/ScriptSnippet.png b/Source/Core/Resources/ScriptSnippet.png new file mode 100644 index 0000000000000000000000000000000000000000..60d5346410cbf6a1f3e8c2234b118de82fce2e0f GIT binary patch literal 1357 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+nAI{vB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuU%v{0TQqR!T z+}y-mN5ROz&{W^RSl`${*T~q)#K6kLNC66zfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7I$IMft0!ZY(y z^2>`g!FqgstvvIJOA_;vQ$1a5m4K$`WoD*WS-P1TnwgrpIk`AH85+8pTADeUIJ%e{ zo0yv$xfmH5!}Pl3Czs}?=9R$oroi=@8{pInN)EXNK$~4si!#enQ{0O3a}~hew#vlq z78ji6LG`BKbc>lQPQCg-$LND17b&t~LckORV#1RykONQrsd>N@Uj$6r-_I;t$iTq3 z*VDx@q~g|+;Jy0Jfg<+((s;)qAX5aI*b@B%_YIHx4G5Cz;&VIiqGcAtUSS z)fIkS3L(zID?MiKia%%Bn{|0w$L~+~&hGvG$L^fv_sC-sKhAG>CAj9u^d2@=FO4{T z|8|f1qcjS0K-zy;w7Ea{{duOmOzWQEs%{+a{*2buXg>yvD9iFEs z;N_$=nL$(3qcuP9;ITJhp;l(K94^zQItr;QanC%<`0!joru=pH>*}U_Ga9C-Hk&TF z|Ni0D35U0?;NscJzd$&0egog6n<^H$<|WpDK1@2lNNcBnh4Rj6H-vfPmWw|#OXoQn z9JPC5?dny%-Ry$S)ATnLvKd)6vF=+ZCe9*ruqf-|V~IDqF1ouf@ofy+7r*L`;GCt) zl(N{Se{cQa*EogqOdYlKPww=CE-4L(mr~Dc^6%v( ztVrJSgd>#q?bCHLS`MV_-qvv=nd$g^|AaHh1D za@zMkUgP!P?N8aTS#k4?4!%=}(_&ndD7`Uu`ATEHfRe{rOrEA?B@yCxKIH#7{X-;y YVScyW3in^mlAr?4)78&qol`;+072&DegFUf literal 0 HcmV?d00001 diff --git a/Source/Core/Resources/TextIndent.png b/Source/Core/Resources/TextIndent.png new file mode 100644 index 0000000000000000000000000000000000000000..9364532344e4b182fc286c4ad78c738533335d73 GIT binary patch literal 353 zcmV-n0iOPeP)A?80v9Z^YZA8as&YaOiG2qAVzYLj+o?N|k`)kPFX7%epMT)pIgD?z$ zz0k7x#eWfQHil2%e>0rE^YzTbTVLW%P1UySD{rve8ZZphV4}^gtsg#oV8j^<1D2Tp2_^}JGDwbz00000NkvXXu0mjfU=gFa literal 0 HcmV?d00001 diff --git a/Source/Core/Resources/TextUnindent.png b/Source/Core/Resources/TextUnindent.png new file mode 100644 index 0000000000000000000000000000000000000000..1651b074ebe5f830c23c909d04ed3282cb8892aa GIT binary patch literal 351 zcmV-l0igbgP)$KO_&&&86Lj*&d?hr!$_c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuU%v{0TQqR!T z+}y-mN5ROz&{W^RSl`${*T~q)#K6kLNC66zfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7I$IMft0!ZY(y z^2>`g!FqgstvvIJOA_;vQ$1a5m4K$`WoD*WIlH+SIvE=qIGY$58ydQrS{gfN2PQCg-$LND17b&t~LckORV#1RykONQrsd>N@Uj$6riN5!|fZ5`= zr;B4q#jP{JhI~y90(-0#R8*ogr!MV{f52GwgD);EUGq|qklX?GHyaiyI56$-o+d09 z;PhB+^6tCI>3VNu*1w*m%eilg!&IL+nt+@Nz> zVp2^fvjWqRNer_$NM5|Bz~jt5Rp+$T<4OS*KF!ktZ=b!|^{hdtPDZlrpor^4OT|j% z15NLLR|i;T%{tbS(N}c9Ir!>!ne~3Zulp}KB-c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuU%v{0TQqR!T z+}y-mN5ROz&{W^RSl`${*T~q)#K6kLNC66zfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7I$IMft0!ZY(y z^2>`g!FqgstvvIJOA_;vQ$1a5m4K$`WoD*WS(q6+8=JYhIhz<68ydQrTDX}QI2oI| zxf(cIx*54R!SuT1Czs}?=9R$oroi>O8Q|0lN)EXNK$~4si!#enQ{0O3a}~hew#vlq z78ji6LG`BKbc?GiPQCg-$LND17b&t~LckORV#1RykONQrsd>N@Uj$6rYZs_rXJBAl z;OXKRQgQ3Z?kG+>CsTjF{Jf;@Qjuqo*Y-59?h4WS zed?=C0I(MwBt&(;AvA3JyT$ylGqiCe1XyMhjmL9rCdyQ2k1-KbQR;(0RDgR|2*X(lM zIn%fmJC07dDaarws`F)h|3Dw!MH*>^ZmfT`!p6Ko9RP>BvACsfjQzfsZK{vkE z*vZdj^3A%|C^=uLG~xe-j;OV4x3`_$owc>=+h>mcyM|G7^ONI$@HsKepa0^LjQZwX zZL43mF#+|wHS$Dc(^V%Q-Zb~IyyiQ>@63S*oL?XPUvXpJ1(jb3 tD-sX6WV)Ss^=N%_v(v}=f4%lhJPeWjG0Piodp-k|VVV^B=`|dmM+;iXiRxi(=9}7=~0gPqR zsVfpA^pV5zJzlqWBpg{x-?$Hq9;17B{$f&!elBxy*8g~PDjW`7I_;kTLerVl*@eld z7YXfk1@V98@%Y;7n(cHA+T8#h@ph-5TeSDxTI+&gRBXq^LnN?tYsCR$JzWFJt+jrI zSQ_y(#t@U}$Tn_WOTZY5z@Xp}z^}SN z{dW_s#vZzjpV)7HN9E-LqT@cH`24MffO5rD0TU8Dy*n-)oC?=@W~e~a?AF?tnebJa zX8jc&?377ix2WBl}d=m<9e`IEMogh z6Q6clsP6m`HEiY-3 errors = General.ErrorLogger.GetErrors(); + + //mxd. Rewritten to get only the new items from the ErrorLogger int startindex = grid.Rows.Count; - for(int i = startindex; i < errors.Count; i++) + IEnumerable errors = General.ErrorLogger.GetErrors(startindex); + foreach(ErrorItem e in errors) { - ErrorItem e = errors[i]; Image icon = (e.type == ErrorType.Error) ? Properties.Resources.ErrorLarge : Properties.Resources.WarningLarge; int index = grid.Rows.Add(); DataGridViewRow row = grid.Rows[index]; @@ -145,7 +145,6 @@ namespace CodeImp.DoomBuilder.Windows private void ErrorsForm_Shown(object sender, EventArgs e) { if(grid.Rows.Count > 0) grid.Rows[0].Selected = false; - } private void grid_CellContentClick(object sender, DataGridViewCellEventArgs e)