From 2106e15648c07edc35e9d31629664f4bf2860443 Mon Sep 17 00:00:00 2001 From: xmm15 Date: Sat, 15 Feb 2020 17:38:06 -0600 Subject: [PATCH] Cmp -> Comp, CompComp function --- src/0000Boot/0000Kernel.BIN.C | Bin 190160 -> 190160 bytes src/Apps/Psalmody/PsalmodyFile.HC | 4 +- src/Compiler/Asm.HC | 16 +- src/Compiler/AsmInit.HC | 8 +- src/Compiler/AsmLib.HC | 12 +- src/Compiler/AsmResolve.HC | 8 +- src/Compiler/BackB.HC | 10 +- src/Compiler/BackC.HC | 2 +- src/Compiler/BackFA.HC | 46 +-- src/Compiler/BackFB.HC | 46 +-- src/Compiler/BackLib.HC | 2 +- src/Compiler/CExcept.HC | 16 +- src/Compiler/CExts.HC | 38 +- src/Compiler/CInit.HC | 4 +- src/Compiler/CMain.HC | 40 +- src/Compiler/CMisc.HC | 6 +- src/Compiler/Compiler.BIN | Bin 193920 -> 193936 bytes src/Compiler/Compiler.MAP | 550 +++++++++++++------------- src/Compiler/Compiler.PRJ | 2 +- src/Compiler/CompilerB.HH | 56 +-- src/Compiler/Lex.HC | 38 +- src/Compiler/LexLib.HC | 12 +- src/Compiler/OptLib.HC | 18 +- src/Compiler/OptPass012.HC | 2 +- src/Compiler/OptPass3.HC | 34 +- src/Compiler/OptPass4.HC | 16 +- src/Compiler/OptPass5.HC | 4 +- src/Compiler/OptPass6.HC | 4 +- src/Compiler/OptPass789A.HC | 46 +-- src/Compiler/ParseExp.HC | 26 +- src/Compiler/ParseLib.HC | 26 +- src/Compiler/ParseStatement.HC | 38 +- src/Compiler/ParseVar.HC | 16 +- src/Demo/AcctExample/PersonalNotes.DD | 8 +- src/Demo/CompileDemo.HC | 4 +- src/Demo/MultiCore/LoadTest.HC | 2 +- src/Demo/SortFileDemo/F64FileSort.HC | 10 +- src/Demo/Templates/Lex1.HC | 4 +- src/Doc/Glossary.DD | 6 +- src/Doc/Lex.DD | 2 +- src/Kernel.BIN.C | Bin 190096 -> 190096 bytes src/Kernel/KHashB.HC | 2 +- src/Kernel/KTask.HC | 10 +- src/Kernel/Kernel.MAP | 4 +- src/Kernel/Kernel.PRJ | 2 +- src/Kernel/KernelA.HH | 10 +- src/Kernel/KernelC.HH | 4 +- src/Tmp/MyDistro.iso | Bin 38895616 -> 38895616 bytes src/Zenith/Boot/BootDVDIns.HC | 4 +- src/Zenith/Boot/BootHDIns.HC | 12 +- src/Zenith/DolDoc/DocCodeTools.HC | 12 +- src/Zenith/DolDoc/DocInit.HC | 6 +- src/Zenith/DolDoc/DocPlain.HC | 8 +- src/Zenith/DolDoc/DocTree.HC | 4 +- src/Zenith/Gr/SpriteCode.HC | 6 +- src/Zenith/Menu.HC | 6 +- src/Zenith/Utils/MemRep.HC | 4 +- 57 files changed, 641 insertions(+), 635 deletions(-) diff --git a/src/0000Boot/0000Kernel.BIN.C b/src/0000Boot/0000Kernel.BIN.C index a70c835987ab5ff09b51cae4baa0d004287a1e29..474bc98af13c6a89157cae073fcfcf3f3820ebca 100755 GIT binary patch delta 562 zcmca`mixk4?g=LBhFL#$YdLXmUdVEhc{2~o{Yb_Qo8QE$u`*>$+ANY>Aj`ONa%+PV zQ>wz|lMUI-%v+~1PByfZ+#Jv%&BVg64amFDC$hP@t$>k*1H`NERGci)VayaWVX|+B z9}5pu#pKs*qLWW_#4(v0Ob-la6q{_7CR8f(MDo(^Vu2POpT0_3)@6D8{PcM#I$hR zWX(I}Y`S)7MX9Nqm)!~BVQ~(Lx7hseMJp2%1HlNYv#Z2y+bD8~*G70YIPE6j9m<9611#_b}^(;$A|et9xuffbX*_U*3c80*-X zQa4YRQ)HCbe)lS)gBs)R?Q(w@SMf0`C@4(-pwA?={V5ldt~z7!c3~r?YYI$-ySKj% zVwxZ_y)J-Ja{H8YCjNTe{M-WPlA;`!)EowmWpRuQ&QJlr)N%%n(wR&Qt`(_nnK`K- HPcr}jo7U9k delta 560 zcmca`mixk4?g=LB?|!b|rRBuEc_GV1=FL1T_ahnCY#YU(`J$60$IjolUo~{ zm>3u~pKQoxp8PtNYqEu<(B^;^X(pEGyQeWuzR)MKxw)-?k!AN~$^g~^5;QczV)j>|XKb{VrW7H!_xpDM|? zd$Rb-vDQnfZCWY~eIUpaG#C-EWK!@b6Mp(ft3Pfq&A0*u#!Nu6~nKzbK=tc%lkZ5g+Cl zw0Y^54~)|dmoW-&Uh!>#G;0yaxap0%7{#_H3o#ZNGJRUM{hBkQoB)XNEtv5YKa+*g zchecked=TRUE; else @@ -242,7 +242,7 @@ U0 PsmLoadSong(U8 *filename,I64 *psm_octave,F64 *psm_duration) } } } - CmpCtrlDel(cc); + CompCtrlDel(cc); } U8 *PsmCvtSong() diff --git a/src/Compiler/Asm.HC b/src/Compiler/Asm.HC index f2fd9128..42c5f11d 100755 --- a/src/Compiler/Asm.HC +++ b/src/Compiler/Asm.HC @@ -1,4 +1,4 @@ -Bool ParseAsmImm(CCmpCtrl *cc,CAsmArg *arg) +Bool ParseAsmImm(CCompCtrl *cc,CAsmArg *arg) { if (arg->imm_or_off_present) LexExcept(cc,"Already one immediate at "); @@ -32,7 +32,7 @@ Bool ParseAsmImm(CCmpCtrl *cc,CAsmArg *arg) return TRUE; } -U0 ParseAsmArg(CCmpCtrl *cc,CAsmArg *arg,Bool rel) +U0 ParseAsmArg(CCompCtrl *cc,CAsmArg *arg,Bool rel) { CHashGeneric *tmph,*tmph1; CHashReg *tmpr; @@ -174,7 +174,7 @@ pa_asm_indirect_imm: } } -I64 AsmMakeArgMask(CCmpCtrl *cc,CAsmArg *arg) +I64 AsmMakeArgMask(CCompCtrl *cc,CAsmArg *arg) { CAOTCtrl *aotc=cc->aotc; I64 res; @@ -265,7 +265,7 @@ mm_done: return res; } -Bool AsmStoreNum(CCmpCtrl *cc,CAsmNum2 *num2,I64 cnt,Bool U8_avail) +Bool AsmStoreNum(CCompCtrl *cc,CAsmNum2 *num2,I64 cnt,Bool U8_avail) { CAOTCtrl *aotc=cc->aotc; I64 i; @@ -392,7 +392,7 @@ Bool AsmStoreNum(CCmpCtrl *cc,CAsmNum2 *num2,I64 cnt,Bool U8_avail) U8 asm_seg_prefixes[6]={0x26,0x2E,0x36,0x3E,0x64,0x65}; -Bool ParseAsmInst(CCmpCtrl *cc,CHashOpcode *tmpo,I64 argcnt) +Bool ParseAsmInst(CCompCtrl *cc,CHashOpcode *tmpo,I64 argcnt) { CAOTCtrl *aotc=cc->aotc; I64 i,j,arg1,arg2,om,seg,arg1mask,arg2mask; @@ -811,7 +811,7 @@ Bool ParseAsmInst(CCmpCtrl *cc,CHashOpcode *tmpo,I64 argcnt) LexExcept(cc,"Invalid inst at "); } -U0 ParseAsmDefine(CCmpCtrl *cc,I64 U8_cnt) +U0 ParseAsmDefine(CCompCtrl *cc,I64 U8_cnt) { Bool is_dup; I64 i,dup_val; @@ -885,7 +885,7 @@ U0 ParseAsmDefine(CCmpCtrl *cc,I64 U8_cnt) Lex(cc); } -U0 ParseBinFile(CCmpCtrl *cc) +U0 ParseBinFile(CCompCtrl *cc) { I64 i,size; U8 *buf,*st; @@ -901,7 +901,7 @@ U0 ParseBinFile(CCmpCtrl *cc) Lex(cc); } -U0 ParseAsmBlk(CCmpCtrl *cc,I64 cmp_flags) +U0 ParseAsmBlk(CCompCtrl *cc,I64 cmp_flags) { CAOTCtrl *aotc=cc->aotc; I64 i,j,k,argcnt, diff --git a/src/Compiler/AsmInit.HC b/src/Compiler/AsmInit.HC index bbd2206b..2aea2837 100755 --- a/src/Compiler/AsmInit.HC +++ b/src/Compiler/AsmInit.HC @@ -1,4 +1,4 @@ -U0 AsmPrsInsFlags(CCmpCtrl *cc,CInst *tmpins) +U0 AsmPrsInsFlags(CCompCtrl *cc,CInst *tmpins) { I64 i; while (TRUE) { @@ -51,7 +51,7 @@ U0 AsmHashLoad() {//See $LK,"::/Compiler/OpCodes.DD"$. I64 i,j,size,size_max; CInternalType *tmpit; - CCmpCtrl *cc; + CCompCtrl *cc; CHashGeneric *tmph; CHashReg *tmpr; CHashOpcode *tmpo,*tmpo2,*tmpo_max; @@ -68,7 +68,7 @@ U0 AsmHashLoad() size_max=offset(CHashOpcode.ins)+sizeof(CInst)<<5; tmpo_max=MAlloc(size_max); - cc=CmpCtrlNew(FileRead("OpCodes.DD"),,"OpCodes.DD"); + cc=CompCtrlNew(FileRead("OpCodes.DD"),,"OpCodes.DD"); cc->htc.hash_table_lst=NULL; Lex(cc); while (cc->token) { @@ -193,7 +193,7 @@ U0 AsmHashLoad() Lex(cc); //Skip ';' } Free(tmpo_max); - CmpCtrlDel(cc); + CompCtrlDel(cc); for (i=0;iaotc; I64 i=aotc->rip>>AOT_BIN_BLK_BITS; @@ -27,7 +27,7 @@ U0 AOTStoreCodeU8(CCmpCtrl *cc,U8 b) aotc->num_bin_U8s=aotc->rip; } -U0 AOTStoreCodeU32(CCmpCtrl *cc,U32 d) +U0 AOTStoreCodeU32(CCompCtrl *cc,U32 d) { CAOTCtrl *aotc=cc->aotc; I64 i=aotc->rip>>AOT_BIN_BLK_BITS,j=(aotc->rip+sizeof(U32))>>AOT_BIN_BLK_BITS; @@ -65,7 +65,7 @@ U0 AOTStoreCodeU32(CCmpCtrl *cc,U32 d) } } -U0 AOTStoreCodeU64(CCmpCtrl *cc,U64 q) +U0 AOTStoreCodeU64(CCompCtrl *cc,U64 q) { CAOTCtrl *aotc=cc->aotc; I64 i=aotc->rip>>AOT_BIN_BLK_BITS, @@ -103,7 +103,7 @@ U0 AOTStoreCodeU64(CCmpCtrl *cc,U64 q) } } -U0 AOTStoreCodeU8At(CCmpCtrl *cc,I64 rip,...) +U0 AOTStoreCodeU8At(CCompCtrl *cc,I64 rip,...) { CAOTCtrl *aotc=cc->aotc; CAOTBinBlk *tmpbin; @@ -124,7 +124,7 @@ U0 AOTStoreCodeU8At(CCmpCtrl *cc,I64 rip,...) aotc->num_bin_U8s=rip; } -I64 AsmLexExpression(CCmpCtrl *cc) +I64 AsmLexExpression(CCompCtrl *cc) { U8 *machine_code; I64 res=0; @@ -144,7 +144,7 @@ I64 AsmLexExpression(CCmpCtrl *cc) return res; } -U0 AsmLineLst(CCmpCtrl *cc) +U0 AsmLineLst(CCompCtrl *cc) { CAOTCtrl *aotc=cc->aotc; CLexFile *tmpf=cc->lex_include_stk; diff --git a/src/Compiler/AsmResolve.HC b/src/Compiler/AsmResolve.HC index fa07107d..a7d0f0fd 100755 --- a/src/Compiler/AsmResolve.HC +++ b/src/Compiler/AsmResolve.HC @@ -1,4 +1,4 @@ -U0 AsmResolve(CCmpCtrl *cc,CAsmUnresolvedRef *tmpu,U8 *label,Bool undefined) +U0 AsmResolve(CCompCtrl *cc,CAsmUnresolvedRef *tmpu,U8 *label,Bool undefined) { CAOTImportExport *tmpie; CAsmUndefHash *tmpauh; @@ -40,7 +40,7 @@ U0 AsmResolve(CCmpCtrl *cc,CAsmUnresolvedRef *tmpu,U8 *label,Bool undefined) } } -U0 AOTLocalsResolve(CCmpCtrl *cc) +U0 AOTLocalsResolve(CCompCtrl *cc) { CAOTCtrl *aotc=cc->aotc; CAsmUnresolvedRef *tmpu=aotc->local_unresolved,*tmpu1; @@ -74,7 +74,7 @@ U0 AOTLocalsResolve(CCmpCtrl *cc) aotc->local_unresolved=NULL; } -U0 AOTGlblsResolve(CCmpCtrl *cc,CAOT *tmpaot) +U0 AOTGlblsResolve(CCompCtrl *cc,CAOT *tmpaot) { CAOTCtrl *aotc=cc->aotc; CHashFun *tmpf; @@ -186,7 +186,7 @@ U0 AOTGlblsResolve(CCmpCtrl *cc,CAOT *tmpaot) } } -U0 AsmUnresolvedAdd(CCmpCtrl *cc,U8 *machine_code,I64 type,I64 rip,I64 rel_rip, +U0 AsmUnresolvedAdd(CCompCtrl *cc,U8 *machine_code,I64 type,I64 rip,I64 rel_rip, CAsmUndefHash *local_asm_undef_hash,CAsmUndefHash *glbl_asm_undef_hash, I64 line_num,Bool U8_avail) { diff --git a/src/Compiler/BackB.HC b/src/Compiler/BackB.HC index 6c5135d6..c20179ea 100755 --- a/src/Compiler/BackB.HC +++ b/src/Compiler/BackB.HC @@ -99,7 +99,7 @@ U0 ICXorXor(CIntermediateCode *tmpi,I64 rip) MDF_REG+RT_I64,REG_RAX,0,rip); } -U0 ICCmp(CIntermediateCode *tmpi,I64 us,I64 is,I64 rip) +U0 ICComp(CIntermediateCode *tmpi,I64 us,I64 is,I64 rip) { I64 r1,d1,r2,i=0x48,j=tmpi->arg2.disp; if (tmpi->arg2.type&MDF_IMM && I32_MIN<=j<=I32_MAX) { @@ -274,19 +274,19 @@ U0 ICToUpper(CIntermediateCode *tmpi,I64 rip) ICU32(tmpi,0xE0C08348); } -U0 ICToI64(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 rip) +U0 ICToI64(CCompCtrl *cc,CIntermediateCode *tmpi,I64 rip) { ICFCvt(cc,tmpi,REG_RAX, tmpi->arg1.type,tmpi->arg1.reg,tmpi->arg1.disp,TRUE,CN_INST,rip); } -U0 ICToF64(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 rip) +U0 ICToF64(CCompCtrl *cc,CIntermediateCode *tmpi,I64 rip) { ICFCvt(cc,tmpi,REG_RAX, tmpi->arg1.type,tmpi->arg1.reg,tmpi->arg1.disp,FALSE,CN_INST,rip); } -U0 ICToBool(CCmpCtrl *,CIntermediateCode *tmpi,I64 rip) +U0 ICToBool(CCompCtrl *,CIntermediateCode *tmpi,I64 rip) { I64 r; if (tmpi->arg1.type&MDF_REG) @@ -465,7 +465,7 @@ U0 ICAssignPostIncDec(CIntermediateCode *tmpi,I64 op,I64 rip) } } -U0 ICCmpAndBranch(CIntermediateCode *tmpi,Bool has_res,I64 rip, +U0 ICCompAndBranch(CIntermediateCode *tmpi,Bool has_res,I64 rip, I64 us,I64 is,I64 not_us,I64 not_is,U8 *buf,I64 rip2) { I64 r1,r2,i=0x48,j,res_reg; diff --git a/src/Compiler/BackC.HC b/src/Compiler/BackC.HC index 4e9ed632..41a3e5d7 100755 --- a/src/Compiler/BackC.HC +++ b/src/Compiler/BackC.HC @@ -600,7 +600,7 @@ U0 ICXorEqu(CIntermediateCode *tmpi,I64 rip2) } U0 ICSwitch(CIntermediateCode *tmpi,I64 rip, - Bool nobound,CCmpCtrl *cc,U8 *buf,I64 rip2) + Bool nobound,CCompCtrl *cc,U8 *buf,I64 rip2) { I64 i,j,cnt,min,max,begin,r; CCodeMisc *lb; diff --git a/src/Compiler/BackFA.HC b/src/Compiler/BackFA.HC index b6df4581..7a428dab 100755 --- a/src/Compiler/BackFA.HC +++ b/src/Compiler/BackFA.HC @@ -3,7 +3,7 @@ #define CN_INST 2 #define CN_RES 3 -U0 CmpNoteFloatOp(CCmpCtrl *cc,CIntermediateCode *tmpi, +U0 CompNoteFloatOp(CCompCtrl *cc,CIntermediateCode *tmpi, Bool dont_pushable,Bool dont_popable,I64 pos) { Bool link=FALSE; @@ -59,7 +59,7 @@ U0 CmpNoteFloatOp(CCmpCtrl *cc,CIntermediateCode *tmpi, throw('Compiler'); } -U0 CmpSetFloatOpPushPop(CCmpCtrl *cc,CIntermediateCode *tmpi, +U0 CompSetFloatOpPushPop(CCompCtrl *cc,CIntermediateCode *tmpi, Bool *dont_push_float,Bool *dont_pop_float) { if (cc->pass==7) { @@ -74,7 +74,7 @@ U0 CmpSetFloatOpPushPop(CCmpCtrl *cc,CIntermediateCode *tmpi, } } -U0 ICCopyTemplate(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 op, +U0 ICCopyTemplate(CCompCtrl *cc,CIntermediateCode *tmpi,I64 op, Bool off_the_record,Bool dont_pushable,Bool dont_popable,I64 pos) { Bool dont_push_float,dont_pop_float,alt; @@ -85,7 +85,7 @@ U0 ICCopyTemplate(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 op, alt=TRUE; else alt=FALSE; - CmpSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); + CompSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); } else { dont_push_float=FALSE; dont_pop_float=FALSE; @@ -116,11 +116,11 @@ U0 ICCopyTemplate(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 op, } MemCpy(&tmpi->ic_body[tmpi->ic_cnt],ptr,i); if (!off_the_record) - CmpNoteFloatOp(cc,tmpi,dont_pushable,dont_popable,pos); + CompNoteFloatOp(cc,tmpi,dont_pushable,dont_popable,pos); tmpi->ic_cnt+=i; } -U0 ICFCvt(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 r1, +U0 ICFCvt(CCompCtrl *cc,CIntermediateCode *tmpi,I64 r1, CICType t2,I64 r2,I64 d2,Bool to_int,I64 pos,I64 rip) { I64 rsp_size=0,op1,op2; @@ -134,7 +134,7 @@ U0 ICFCvt(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 r1, op2=SLASH_OP_FSTP; } - CmpSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); + CompSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); if (!dont_push_float) { if (!(t2.raw_type>=RT_I64 && t2&MDG_DISP_SIB_RIP)) { ICPush(tmpi,t2,r2,d2,rip); @@ -154,9 +154,9 @@ U0 ICFCvt(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 r1, } } if (to_int) - CmpNoteFloatOp(cc,tmpi,TRUE,FALSE,pos); + CompNoteFloatOp(cc,tmpi,TRUE,FALSE,pos); else - CmpNoteFloatOp(cc,tmpi,FALSE,TRUE,pos); + CompNoteFloatOp(cc,tmpi,FALSE,TRUE,pos); if (dont_pop_float) { if (rsp_size) ICAddRSP(tmpi,rsp_size); @@ -166,7 +166,7 @@ U0 ICFCvt(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 r1, } } -U0 ICFCvt2(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 r1, +U0 ICFCvt2(CCompCtrl *cc,CIntermediateCode *tmpi,I64 r1, CICType t2,I64 r2,I64 d2,Bool to_int,I64 rip) { I64 rsp_size=0,op1,op2; @@ -191,7 +191,7 @@ U0 ICFCvt2(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 r1, cc->last_dont_pushable=cc->last_dont_popable=FALSE; //TODO: improve this } -U0 ICFUnaryMinus(CCmpCtrl *cc,CIntermediateCode *tmpi,U8 *buf2,I64 rip) +U0 ICFUnaryMinus(CCompCtrl *cc,CIntermediateCode *tmpi,U8 *buf2,I64 rip) { CICArg *arg1=&tmpi->arg1; I64 rsp_size=0,builtin1=0,t1,r1,d1; @@ -200,7 +200,7 @@ U0 ICFUnaryMinus(CCmpCtrl *cc,CIntermediateCode *tmpi,U8 *buf2,I64 rip) if (cc->flags&CCF_AOT_COMPILE) buf2=cc->aotc->rip; - CmpSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); + CompSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); if (!dont_push_float) { if (arg1->type.raw_type>=RT_I64 && arg1->type&MDG_DISP_SIB_RIP) { t1=arg1->type; @@ -229,7 +229,7 @@ U0 ICFUnaryMinus(CCmpCtrl *cc,CIntermediateCode *tmpi,U8 *buf2,I64 rip) ICAddRSP(tmpi,-8); } ICU16(tmpi,0xE0D9); //FCHS - CmpNoteFloatOp(cc,tmpi,TRUE,TRUE,CN_INST); + CompNoteFloatOp(cc,tmpi,TRUE,TRUE,CN_INST); if (dont_pop_float) { if (rsp_size) ICAddRSP(tmpi,rsp_size); @@ -239,10 +239,10 @@ U0 ICFUnaryMinus(CCmpCtrl *cc,CIntermediateCode *tmpi,U8 *buf2,I64 rip) } } -U0 ICFMod(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 rip) +U0 ICFMod(CCompCtrl *cc,CIntermediateCode *tmpi,I64 rip) {//for MOD Bool dont_push_float,dont_pop_float; - CmpSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); + CompSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); if (dont_push_float) { if (tmpi->ic_flags&ICF_ALT_TEMPLATE) ICMov(tmpi,MDF_REG+RT_I64,REG_RAX,0, @@ -263,7 +263,7 @@ U0 ICFMod(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 rip) MDF_REG+RT_I64,REG_RAX,0,rip); } -U0 ICFPow(CCmpCtrl *cc,CIntermediateCode *tmpi,U8 *buf,I64 rip) +U0 ICFPow(CCompCtrl *cc,CIntermediateCode *tmpi,U8 *buf,I64 rip) {//for POW I64 i; CAOTImportExport *tmpie; @@ -336,7 +336,7 @@ U0 ICFPow(CCmpCtrl *cc,CIntermediateCode *tmpi,U8 *buf,I64 rip) MDF_REG+RT_I64,REG_RAX,0,rip); } -U0 ICFOp(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 op,U8 *buf2,I64 rip) +U0 ICFOp(CCompCtrl *cc,CIntermediateCode *tmpi,I64 op,U8 *buf2,I64 rip) {//for ADD,SUB,DIV,MUL CICArg *arg1,*arg2; Bool dont_push_float,dont_pop_float,alt; @@ -355,7 +355,7 @@ U0 ICFOp(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 op,U8 *buf2,I64 rip) if (cc->flags&CCF_AOT_COMPILE) buf2=cc->aotc->rip; - CmpSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); + CompSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); if (dont_push_float) { if (arg2->type.raw_type>=RT_I64 && arg2->type&MDG_DISP_SIB_RIP) { t2=arg2->type; @@ -500,7 +500,7 @@ U0 ICFOp(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 op,U8 *buf2,I64 rip) ICU16(tmpi,op.u16[2]); } else ICSlashOp(tmpi,t2,r2,d2,op,rip); - CmpNoteFloatOp(cc,tmpi,TRUE,TRUE,CN_INST); + CompNoteFloatOp(cc,tmpi,TRUE,TRUE,CN_INST); if (dont_pop_float) { if (rsp_size) ICAddRSP(tmpi,rsp_size); @@ -516,10 +516,10 @@ U0 ICFOp(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 op,U8 *buf2,I64 rip) } } -U0 ICFCmp(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 op,I64 rip) +U0 ICFCmp(CCompCtrl *cc,CIntermediateCode *tmpi,I64 op,I64 rip) { Bool dont_push_float,dont_pop_float; - CmpSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); + CompSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); if (dont_push_float) { if (tmpi->ic_flags&ICF_ALT_TEMPLATE) { if (tmpi->ic_flags&ICF_POP_CMP) @@ -546,10 +546,10 @@ U0 ICFCmp(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 op,I64 rip) MDF_REG+RT_I64,REG_RAX,0,rip); } -U0 ICFModEqu(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 rip) +U0 ICFModEqu(CCompCtrl *cc,CIntermediateCode *tmpi,I64 rip) { Bool dont_push_float,dont_pop_float; - CmpSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); + CompSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); if (tmpi->ic_flags & ICF_BY_VAL) { if (dont_push_float) { ICMov(tmpi,MDF_REG+RT_I64,REG_RAX,0, diff --git a/src/Compiler/BackFB.HC b/src/Compiler/BackFB.HC index e4351e34..dafdfde3 100755 --- a/src/Compiler/BackFB.HC +++ b/src/Compiler/BackFB.HC @@ -1,4 +1,4 @@ -U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 op,U8 *buf2,I64 rip) +U0 ICFOpEqu(CCompCtrl *cc,CIntermediateCode *tmpi,I64 op,U8 *buf2,I64 rip) {//for ADD,SUB,DIV,MUL CICArg *arg1=&tmpi->arg1, *arg2=&tmpi->arg2; @@ -9,7 +9,7 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 op,U8 *buf2,I64 rip) if (cc->flags&CCF_AOT_COMPILE) buf2=cc->aotc->rip; - CmpSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); + CompSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); if (dont_pop_float) throw('Compiler'); @@ -98,7 +98,7 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 op,U8 *buf2,I64 rip) case 6: op=SLASH_OP_FDIVR; break; } ICSlashOp(tmpi,t1,r1,d1,op,rip); - CmpNoteFloatOp(cc,tmpi,TRUE,FALSE,CN_INST); + CompNoteFloatOp(cc,tmpi,TRUE,FALSE,CN_INST); if (p1_mem && tmpi->arg1_type_pointed_to==RT_F64) { ICSlashOp(tmpi,t1,r1,d1,SLASH_OP_FSTP,rip); if (rsp_size) @@ -197,7 +197,7 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 op,U8 *buf2,I64 rip) case 6: op=SLASH_OP_FDIVR; break; } ICSlashOp(tmpi,t1,r1,d1,op,rip); - CmpNoteFloatOp(cc,tmpi,TRUE,FALSE,CN_INST); + CompNoteFloatOp(cc,tmpi,TRUE,FALSE,CN_INST); if (p1_mem && tmpi->arg1_type_pointed_to==RT_F64) { ICSlashOp(tmpi,MDF_DISP+tmpi->arg1_type_pointed_to, REG_RCX,0,SLASH_OP_FSTP,rip); @@ -223,7 +223,7 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 op,U8 *buf2,I64 rip) } } -U0 ICFCmpAndBranch(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 rip, +U0 ICFCmpAndBranch(CCompCtrl *cc,CIntermediateCode *tmpi,I64 rip, I64 us,I64 not_us,U8 *buf,I64 rip2) { CICArg *arg1,*arg2; @@ -247,7 +247,7 @@ U0 ICFCmpAndBranch(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 rip, else buf2=buf; - CmpSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); + CompSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); if (dont_push_float) { if (tmpi->ic_flags&ICF_POP_CMP && alt) { t2=MDF_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0; @@ -423,7 +423,7 @@ U0 ICFCmpAndBranch(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 rip, ICU16(tmpi,0xF1DF); //FCOMIP ICU32(tmpi,0xF7D9C0DD); //FFREE,FINCSTP } - CmpNoteFloatOp(cc,tmpi,TRUE,FALSE,CN_INST); + CompNoteFloatOp(cc,tmpi,TRUE,FALSE,CN_INST); if (tmpi->ic_flags&ICF_PUSH_CMP) { if (r2.u8[0]==REG_RSP) { @@ -485,37 +485,37 @@ U0 ICFCmpAndBranch(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 rip, } } -U0 ICFMul(CCmpCtrl *cc,CIntermediateCode *tmpi,U8 *buf,I64 rip) +U0 ICFMul(CCompCtrl *cc,CIntermediateCode *tmpi,U8 *buf,I64 rip) { if (tmpi->arg1.type&MDF_IMM && tmpi->arg1.type&RTG_MASK==RT_F64 && tmpi->arg1.disp(F64)==1.0) { - CmpNoteFloatOp(cc,tmpi,FALSE,FALSE,CN_INST); + CompNoteFloatOp(cc,tmpi,FALSE,FALSE,CN_INST); ICMov(tmpi,tmpi->res.type,tmpi->res.reg,tmpi->res.disp, tmpi->arg2.type,tmpi->arg2.reg,tmpi->arg2.disp,rip); } else if (tmpi->arg2.type&MDF_IMM && tmpi->arg2.type&RTG_MASK==RT_F64&& tmpi->arg2.disp(F64)==1.0) { - CmpNoteFloatOp(cc,tmpi,FALSE,FALSE,CN_INST); + CompNoteFloatOp(cc,tmpi,FALSE,FALSE,CN_INST); ICMov(tmpi,tmpi->res.type,tmpi->res.reg,tmpi->res.disp, tmpi->arg1.type,tmpi->arg1.reg,tmpi->arg1.disp,rip); } else ICFOp(cc,tmpi,SLASH_OP_FMUL,buf,rip); } -U0 ICFDiv(CCmpCtrl *cc,CIntermediateCode *tmpi,U8 *buf,I64 rip) +U0 ICFDiv(CCompCtrl *cc,CIntermediateCode *tmpi,U8 *buf,I64 rip) { if (tmpi->arg2.type&MDF_IMM && tmpi->arg2.type&RTG_MASK==RT_F64 && tmpi->arg2.disp(F64)==1.0) { - CmpNoteFloatOp(cc,tmpi,FALSE,FALSE,CN_INST); + CompNoteFloatOp(cc,tmpi,FALSE,FALSE,CN_INST); ICMov(tmpi,tmpi->res.type,tmpi->res.reg,tmpi->res.disp, tmpi->arg1.type,tmpi->arg1.reg,tmpi->arg1.disp,rip); } else ICFOp(cc,tmpi,SLASH_OP_FDIV,buf,rip); } -U0 ICFAdd(CCmpCtrl *cc,CIntermediateCode *tmpi,U8 *buf,I64 rip) +U0 ICFAdd(CCompCtrl *cc,CIntermediateCode *tmpi,U8 *buf,I64 rip) { Bool dont_push_float,dont_pop_float; - CmpSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); + CompSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); if (tmpi->arg1.type&MDF_IMM && !tmpi->arg1.disp) { if (dont_push_float) { ICCopyTemplate(cc,tmpi,CMP_TEMPLATE_FSTP,FALSE,TRUE,TRUE,CN_INST); @@ -526,7 +526,7 @@ U0 ICFAdd(CCmpCtrl *cc,CIntermediateCode *tmpi,U8 *buf,I64 rip) tmpi->arg2.type,tmpi->arg2.reg,tmpi->arg2.disp,rip); ICCopyTemplate(cc,tmpi,CMP_TEMPLATE_FLD,FALSE,TRUE,TRUE,CN_INST); } else { - CmpNoteFloatOp(cc,tmpi,TRUE,TRUE,CN_INST); + CompNoteFloatOp(cc,tmpi,TRUE,TRUE,CN_INST); ICMov(tmpi,tmpi->res.type,tmpi->res.reg,tmpi->res.disp, tmpi->arg2.type,tmpi->arg2.reg,tmpi->arg2.disp,rip); } @@ -542,17 +542,17 @@ U0 ICFAdd(CCmpCtrl *cc,CIntermediateCode *tmpi,U8 *buf,I64 rip) } else { ICMov(tmpi,tmpi->res.type,tmpi->res.reg,tmpi->res.disp, tmpi->arg1.type,tmpi->arg1.reg,tmpi->arg1.disp,rip); - CmpNoteFloatOp(cc,tmpi,TRUE,TRUE,CN_INST); + CompNoteFloatOp(cc,tmpi,TRUE,TRUE,CN_INST); } } else ICFOp(cc,tmpi,SLASH_OP_FADD,buf,rip); } -U0 ICFSub(CCmpCtrl *cc,CIntermediateCode *tmpi,U8 *buf,I64 rip) +U0 ICFSub(CCompCtrl *cc,CIntermediateCode *tmpi,U8 *buf,I64 rip) { Bool dont_push_float,dont_pop_float; if (tmpi->arg2.type&MDF_IMM && !tmpi->arg2.disp) { - CmpSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); + CompSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); if (dont_push_float) { ICCopyTemplate(cc,tmpi,CMP_TEMPLATE_FSTP,FALSE,TRUE,TRUE,CN_INST); ICMov(tmpi,tmpi->res.type,tmpi->res.reg,tmpi->res.disp, @@ -564,13 +564,13 @@ U0 ICFSub(CCmpCtrl *cc,CIntermediateCode *tmpi,U8 *buf,I64 rip) } else { ICMov(tmpi,tmpi->res.type,tmpi->res.reg,tmpi->res.disp, tmpi->arg1.type,tmpi->arg1.reg,tmpi->arg1.disp,rip); - CmpNoteFloatOp(cc,tmpi,TRUE,TRUE,CN_INST); + CompNoteFloatOp(cc,tmpi,TRUE,TRUE,CN_INST); } } else ICFOp(cc,tmpi,SLASH_OP_FSUB,buf,rip); } -U0 ICFPreIncDec(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 op,I64 rip) +U0 ICFPreIncDec(CCompCtrl *cc,CIntermediateCode *tmpi,I64 op,I64 rip) { if (tmpi->ic_flags & ICF_BY_VAL) { ICMov(tmpi,MDF_REG+RT_I64,REG_RAX,0, @@ -590,7 +590,7 @@ U0 ICFPreIncDec(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 op,I64 rip) MDF_REG+RT_I64,REG_RAX,0,rip); } -U0 ICFPostIncDec(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 op,I64 rip) +U0 ICFPostIncDec(CCompCtrl *cc,CIntermediateCode *tmpi,I64 op,I64 rip) { if (tmpi->ic_flags & ICF_BY_VAL) { ICMov(tmpi,MDF_REG+RT_I64,REG_RAX,0, @@ -614,11 +614,11 @@ U0 ICFPostIncDec(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 op,I64 rip) MDF_REG+RT_I64,REG_RDX,0,rip); } -U0 ICFTemplateFun(CCmpCtrl *cc,CIntermediateCode *tmpi,I64 op,I64 rip) +U0 ICFTemplateFun(CCompCtrl *cc,CIntermediateCode *tmpi,I64 op,I64 rip) { Bool dont_push_float,dont_pop_float; - CmpSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); + CompSetFloatOpPushPop(cc,tmpi,&dont_push_float,&dont_pop_float); if (!dont_push_float) ICMov(tmpi,MDF_REG+RT_I64,REG_RAX,0, tmpi->arg1.type,tmpi->arg1.reg,tmpi->arg1.disp,rip); diff --git a/src/Compiler/BackLib.HC b/src/Compiler/BackLib.HC index 06467861..9679c13e 100755 --- a/src/Compiler/BackLib.HC +++ b/src/Compiler/BackLib.HC @@ -659,7 +659,7 @@ move_redundant: } U0 ICLea(CIntermediateCode *tmpi,CICType t1,I64 r1,I64 d1, - CICType t2,I64 r2,I64 d2,CCmpCtrl *cc,U8 *buf,I64 rip) + CICType t2,I64 r2,I64 d2,CCompCtrl *cc,U8 *buf,I64 rip) { I64 i; CAOTAbsAddr *tmpa; diff --git a/src/Compiler/CExcept.HC b/src/Compiler/CExcept.HC index b584a8ce..ebcdc638 100755 --- a/src/Compiler/CExcept.HC +++ b/src/Compiler/CExcept.HC @@ -1,4 +1,4 @@ -U0 LexPutToken(CCmpCtrl *cc) +U0 LexPutToken(CCompCtrl *cc) {//Print cur token to StdOut. (Crude) '"'; if (cc->token==TK_IDENT || cc->token==TK_STR) @@ -19,7 +19,7 @@ U0 LexPutToken(CCmpCtrl *cc) "\" "; } -U8 *LexPutLine(CCmpCtrl *cc,U8 *start) +U8 *LexPutLine(CCompCtrl *cc,U8 *start) {//Print cur pos to end of line to StdOut. I64 ch; U8 *ptr; @@ -47,7 +47,7 @@ U8 *LexPutLine(CCmpCtrl *cc,U8 *start) return NULL; } -U0 LexPutPos(CCmpCtrl *cc) +U0 LexPutPos(CCompCtrl *cc) {//Print token, line link and, then, $LK,"LexPutLine",A="MN:LexPutLine"$(). LexPutToken(cc); FixSet(cc->lex_include_stk->full_name,cc->lex_include_stk->line_num); @@ -62,7 +62,7 @@ U0 LexPutPos(CCmpCtrl *cc) LexPutLine(cc,cc->lex_include_stk->line_start); } -U0 LexWarn(CCmpCtrl *cc,U8 *str=NULL) +U0 LexWarn(CCompCtrl *cc,U8 *str=NULL) {//Print warn msg, then, $LK,"LexPutPos",A="MN:LexPutPos"$(). if (str) PrintWarn(str); if (cc->htc.fun) { @@ -78,7 +78,7 @@ U0 LexWarn(CCmpCtrl *cc,U8 *str=NULL) cc->warning_cnt++; } -U0 LexExcept(CCmpCtrl *cc,U8 *str=NULL) +U0 LexExcept(CCompCtrl *cc,U8 *str=NULL) {//Print err msg, $LK,"LexPutPos",A="MN:LexPutPos"$() and throw exception. if (!Bt(&sys_run_level,RLf_ZENITH_SERVER)) { Raw(ON); @@ -101,13 +101,13 @@ U0 UndefinedExtern() throw('UndefExt'); } -U0 UnusedExternWarning(CCmpCtrl *cc,CHashClass *tmpc) +U0 UnusedExternWarning(CCompCtrl *cc,CHashClass *tmpc) { PrintWarn("Unused extern '%s'\n",tmpc->str); cc->warning_cnt++; } -U0 ParenWarning(CCmpCtrl *cc) +U0 ParenWarning(CCompCtrl *cc) { if (Bt(&cc->opts,OPTf_WARN_PAREN) && !(cc->lex_include_stk->flags&LFSF_DEFINE)) @@ -181,7 +181,7 @@ U0 ICArgPut(CICArg *a,I64 type_pointed_to) '' CH_SPACE; } -U0 ICPut(CCmpCtrl *cc,CIntermediateCode *tmpi) +U0 ICPut(CCompCtrl *cc,CIntermediateCode *tmpi) { I64 opcode=tmpi->ic_code,i; if (opcode>=IC_END_EXP && opcode!=IC_NOP2) { diff --git a/src/Compiler/CExts.HC b/src/Compiler/CExts.HC index 2f91face..e06a81c5 100755 --- a/src/Compiler/CExts.HC +++ b/src/Compiler/CExts.HC @@ -9,35 +9,35 @@ import I64 DocSize(CDoc *doc); import Bool DocWrite(CDoc *doc,Bool prompt=FALSE); extern U8 *CmdLinePrompt(); extern I64 HashEntrySize2(CHashSrcSym *tmph); -extern Bool IsLexExpression2Bin(CCmpCtrl *cc,U8 **_machine_code); -extern I64 Lex(CCmpCtrl *cc); -extern I64 LexExpression(CCmpCtrl *cc); -extern I64 LexGetChar(CCmpCtrl *cc); +extern Bool IsLexExpression2Bin(CCompCtrl *cc,U8 **_machine_code); +extern I64 Lex(CCompCtrl *cc); +extern I64 LexExpression(CCompCtrl *cc); +extern I64 LexGetChar(CCompCtrl *cc); extern CCodeMisc *OptLabelFwd(CCodeMisc *lb); -extern CIntermediateCode *OptPass012(CCmpCtrl *cc); -extern U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets); -extern U0 OptPass4(CCmpCtrl *cc,COptReg *reg_offsets,I64 *_type); -extern U0 OptPass5(CCmpCtrl *cc); -extern U0 OptPass6(CCmpCtrl *cc); +extern CIntermediateCode *OptPass012(CCompCtrl *cc); +extern U0 OptPass3(CCompCtrl *cc,COptReg *reg_offsets); +extern U0 OptPass4(CCompCtrl *cc,COptReg *reg_offsets,I64 *_type); +extern U0 OptPass5(CCompCtrl *cc); +extern U0 OptPass6(CCompCtrl *cc); extern I64 OptPass789A( - CCmpCtrl *cc,COptReg *reg_offsets,U8 *buf,CDebugInfo **_dbg); + CCompCtrl *cc,COptReg *reg_offsets,U8 *buf,CDebugInfo **_dbg); extern CHashClass *ParseClass( - CCmpCtrl *cc,I64 keyword,I64 fsp_flags,Bool is_extern); + CCompCtrl *cc,I64 keyword,I64 fsp_flags,Bool is_extern); extern CHashFun *ParseFunJoin( - CCmpCtrl *cc,CHashClass *tmp_return,U8 *name,I64 fsp_flags); -extern I64 ParseKeyWord(CCmpCtrl *cc); -extern Bool ParseStatement(CCmpCtrl *cc,I64 try_cnt=0, + CCompCtrl *cc,CHashClass *tmp_return,U8 *name,I64 fsp_flags); +extern I64 ParseKeyWord(CCompCtrl *cc); +extern Bool ParseStatement(CCompCtrl *cc,I64 try_cnt=0, CCodeMisc *lb_break=NULL,I64 cmp_flags=CMPF_PRS_SEMICOLON); -extern U0 ParseStreamBlk(CCmpCtrl *cc); -extern CHashClass *ParseType(CCmpCtrl *cc,CHashClass **_tmpc1, +extern U0 ParseStreamBlk(CCompCtrl *cc); +extern CHashClass *ParseType(CCompCtrl *cc,CHashClass **_tmpc1, I64 *_mode,CMemberLst *tmpm,U8 **_ident,CHashFun **_fun_ptr, CHashExport **_tmpex,CArrayDim *tmpad,I64 fsp_flags); -extern I64 ParseUnaryModifier(CCmpCtrl *cc,CPrsStk *ps, +extern I64 ParseUnaryModifier(CCompCtrl *cc,CPrsStk *ps, CMemberLst **_local_var,CArrayDim **_tmpad,I64 *unary_post_prec); extern I64 ParseUnaryTerm( - CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var,CArrayDim **_tmpad, + CCompCtrl *cc,CPrsStk *ps,CMemberLst **_local_var,CArrayDim **_tmpad, I64 *max_prec,I64 *unary_pre_prec,I64 *paren_prec); -extern U0 ParseVarInit2(CCmpCtrl *cc,U8 **_dst,CHashClass *tmpc, +extern U0 ParseVarInit2(CCompCtrl *cc,U8 **_dst,CHashClass *tmpc, CArrayDim *tmpad,U8 *data_addr_rip,U8 **_base,Bool data_heap,I64 pass); _extern CMP_TEMPLATES U32 cmp_templates[1]; _extern CMP_TEMPLATES_DONT_POP U32 cmp_templates_dont_pop[1]; diff --git a/src/Compiler/CInit.HC b/src/Compiler/CInit.HC index 109a7a30..086d953c 100755 --- a/src/Compiler/CInit.HC +++ b/src/Compiler/CInit.HC @@ -201,7 +201,7 @@ CIntermediateStruct intermediate_code_table[IC_ICS_NUM]={ {IS_1_ARG,1,IST_NULL,TRUE,FALSE,0,0,0,"ATAN"}, }; -U0 CmpLoadDefines() +U0 CompLoadDefines() { DefineLstLoad("ST_RAW_TYPES", "\0\0I0\0U0\0I8\0U8\0I16\0U16\0I32\0U32\0I64\0U64\0" @@ -236,7 +236,7 @@ U0 CmpLoadDefines() DefineLstLoad("ST_FSTK_REGS","ST0\0ST1\0ST2\0ST3\0ST4\0ST5\0ST6\0ST7\0"); } -U0 CmpFillTables() +U0 CompFillTables() { I64 i; U32 *d; diff --git a/src/Compiler/CMain.HC b/src/Compiler/CMain.HC index 1179b54b..0cc7da13 100755 --- a/src/Compiler/CMain.HC +++ b/src/Compiler/CMain.HC @@ -1,4 +1,4 @@ -U8 *LexStatement2Bin(CCmpCtrl *cc,I64 *_type,I64 cmp_flags=0) +U8 *LexStatement2Bin(CCompCtrl *cc,I64 *_type,I64 cmp_flags=0) {//Compile one cc stmt to bin code. I64 size,i,j,k,*res=INVALID_PTR; CCodeCtrl *tmpcbh; @@ -32,7 +32,7 @@ U8 *LexStatement2Bin(CCmpCtrl *cc,I64 *_type,I64 cmp_flags=0) return res; } -CAOT *CmpJoin(CCmpCtrl *cc,I64 cmp_flags,U8 *map_name=NULL,U8 mapfile_drv_let=0) +CAOT *CompJoin(CCompCtrl *cc,I64 cmp_flags,U8 *map_name=NULL,U8 mapfile_drv_let=0) { CAOTCtrl *aotc,*old_aot=cc->aotc; I64 i,j,l; @@ -154,24 +154,24 @@ CAOT *CmpJoin(CCmpCtrl *cc,I64 cmp_flags,U8 *map_name=NULL,U8 mapfile_drv_let=0) return res; } -CAOT *CmpBuf(U8 *buf,U8 *map_name=NULL, +CAOT *CompBuf(U8 *buf,U8 *map_name=NULL, I64 *error_cnt=NULL, I64 *warning_cnt=NULL,U8 mapfile_drv_let=0) { - CCmpCtrl *cc; + CCompCtrl *cc; CAOT *res=NULL; - cc=CmpCtrlNew(buf,CCF_DONT_FREE_BUF); + cc=CompCtrlNew(buf,CCF_DONT_FREE_BUF); cc->flags|=CCF_AOT_COMPILE; QueueInsert(cc,Fs->last_cc); - res=CmpJoin(cc,CMPF_LEX_FIRST,map_name,mapfile_drv_let); + res=CompJoin(cc,CMPF_LEX_FIRST,map_name,mapfile_drv_let); if (error_cnt) *error_cnt=cc->error_cnt; if (warning_cnt) *warning_cnt=cc->warning_cnt; QueueRemove(cc); if (res) - CmpCtrlDel(cc); + CompCtrlDel(cc); return res; } -U0 CmpFixUpJITAsm(CCmpCtrl *cc,CAOT *tmpaot) +U0 CompFixUpJITAsm(CCompCtrl *cc,CAOT *tmpaot) { I64 i,rip2=tmpaot->buf+tmpaot->rip,*str=NULL; U8 *ptr; @@ -299,7 +299,7 @@ U0 CmpFixUpJITAsm(CCmpCtrl *cc,CAOT *tmpaot) Free(tmpaot); } -U0 CmpFixUpAOTAsm(CCmpCtrl *cc,CAOT *tmpaot) +U0 CompFixUpAOTAsm(CCompCtrl *cc,CAOT *tmpaot) { CAOTCtrl *aotc=cc->aotc; I64 i,rip2=tmpaot->rip+cc->aotc->rip; @@ -416,7 +416,7 @@ U0 CmpFixUpAOTAsm(CCmpCtrl *cc,CAOT *tmpaot) } } -I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv_let=0) +I64 Comp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv_let=0) {//AOT Compile HC or PRJ file a and output BIN file. Returns err_cnt. U8 *ptr,*fbuf=NULL,*fbuf2=NULL,*fbuf3=NULL, *patch_table=MAlloc(0x20000); @@ -433,7 +433,7 @@ I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv_let=0) if (map_name) fbuf3=ExtDft(map_name,"MAP"); - if (tmpaot=CmpBuf(fbuf2,fbuf3,&error_cnt,&warning_cnt,mapfile_drv_let)) { + if (tmpaot=CompBuf(fbuf2,fbuf3,&error_cnt,&warning_cnt,mapfile_drv_let)) { aot_U8s=tmpaot->aot_U8s; ptr=patch_table; //See $LK,"Load",A="MN:Load"$() @@ -573,10 +573,10 @@ I64 ExePutS(U8 *buf,U8 *filename=NULL, {//JIT Compile and execute text from a puts(""). I64 res; Bool okay=TRUE; - CCmpCtrl *cc; + CCompCtrl *cc; if (!filename) filename=blkdev.tmp_filename; - cc=CmpCtrlNew(buf,ccf_flags|CCF_DONT_FREE_BUF,filename); + cc=CompCtrlNew(buf,ccf_flags|CCF_DONT_FREE_BUF,filename); if (Fs->last_cc!=&Fs->next_cc) { cc->opts=Fs->last_cc->opts; if (htc) { @@ -598,7 +598,7 @@ I64 ExePutS(U8 *buf,U8 *filename=NULL, } QueueRemove(cc); if (okay) - CmpCtrlDel(cc); //TODO: can crash + CompCtrlDel(cc); //TODO: can crash return res; } @@ -631,17 +631,17 @@ I64 RunFile(U8 *name,I64 ccf_flags=0,...) I64 ExePutS2(U8 *buf,U8 *filename=NULL,I64 ccf_flags=0) {//throws exceptions I64 res; - CCmpCtrl *cc; + CCompCtrl *cc; if (!filename) filename=blkdev.tmp_filename; - cc=CmpCtrlNew(buf,ccf_flags|CCF_DONT_FREE_BUF,filename); + cc=CompCtrlNew(buf,ccf_flags|CCF_DONT_FREE_BUF,filename); if (Fs->last_cc!=&Fs->next_cc) cc->opts=Fs->last_cc->opts; QueueInsert(cc,Fs->last_cc); Lex(cc); res=ExeCmdLine(cc); QueueRemove(cc); - CmpCtrlDel(cc); + CompCtrlDel(cc); return res; } @@ -675,7 +675,7 @@ I64 StreamExePrint(U8 *fmt,...) U8 *buf=StrPrintJoin(NULL,fmt,argc,argv); I64 res=0; CLexHashTableContext *htc; - CCmpCtrl *cc=Fs->last_cc; + CCompCtrl *cc=Fs->last_cc; if (cc==&Fs->next_cc) PrintErr("Not Compiling\n"); else { @@ -690,8 +690,8 @@ I64 StreamExePrint(U8 *fmt,...) U0 CInit() { - CmpLoadDefines; - CmpFillTables; + CompLoadDefines; + CompFillTables; QueueInit(&cmp.ic_nop); cmp.ic_nop.ic_class=cmp.internal_types[RT_I64]; cmp.ic_nop.ic_code=IC_NOP1; diff --git a/src/Compiler/CMisc.HC b/src/Compiler/CMisc.HC index 54838d6a..53bbd980 100755 --- a/src/Compiler/CMisc.HC +++ b/src/Compiler/CMisc.HC @@ -68,7 +68,7 @@ Bool Echo(Bool val) U0 StreamPrint(U8 *fmt,...) {//Injects text into the compile stream. Used in #exe{} blocks. U8 *buf=StrPrintJoin(NULL,fmt,argc,argv),*st; - CCmpCtrl *cc=Fs->last_cc; + CCompCtrl *cc=Fs->last_cc; CStreamBlk *tmpe=cc->last_stream_blk; if (tmpe!=&cc->next_stream_blk) { st=MStrPrint("%s%s",tmpe->body,buf); @@ -88,7 +88,7 @@ U0 StreamDir() } } -CD2I32 *LexD2I32(CCmpCtrl *cc,CD2I32 *p) +CD2I32 *LexD2I32(CCompCtrl *cc,CD2I32 *p) {//Not HolyC. Sprite-like lex 2D point. if (cc->token!='(') LexExcept(cc,"Expecting '(' at "); @@ -104,7 +104,7 @@ CD2I32 *LexD2I32(CCmpCtrl *cc,CD2I32 *p) return p; } -CD3I32 *LexD3I32(CCmpCtrl *cc,CD3I32 *p) +CD3I32 *LexD3I32(CCompCtrl *cc,CD3I32 *p) {//Not HolyC. Sprite-like lex 3D point. if (cc->token!='(') LexExcept(cc,"Expecting '(' at "); diff --git a/src/Compiler/Compiler.BIN b/src/Compiler/Compiler.BIN index 7712b45b103b66b2e2369e45f5c7bb5342e9b093..61f32428bb27e959e55835f71201c79935cf7463 100755 GIT binary patch delta 692 zcmY+BT}V@57=XX;T}o5Y>6Y7sM5U6}RSPmxgSFF9*UvfllXuz5Gd*(VIk~f@MXVnP zEWvpXBcthwlXO-y*3bp3fe@la z8>qut_Kau9UKWQ`p$~t=puX~co^^ObyII95^zMIY0n+YfIpxf? zATeF~KNBCV!ero7wHsl2w0ee6D8Q7xASDyip@!=qB34g0#jUeN(ZNdK75>nMocH+EHWu@ zn!nog8RukgA0zn0q0CpQDL80e&e!DJJndOG#1wqN2OHq1IF!)KIG-;dsLl?dUt8LM Gx3+)Q5cUlK delta 693 zcmY+AUr1A77{{ey~=JJS{v6Q1Q5z~DfeO_-i2Bg2|;YQEhjW-F-Q>*X2L2JfnRBu|N zV?i3$XIL1!V^cOMafVdCpfQrdYplveBSV~`V&ft-w4_!^Y1%8weWR+tDWa?i0b;qo zE&KT4e`LL95zbO8`^x~HQ#4_Ri1(JD3kyroTHSQO;4z{k_3_swA%f;Kcu`KnDV$Hk zVcbl^mHk)$!xPKv8X#^b!>V03qd4*&3Z`y` z{l!P9Dm%Ej4P#n&4kMQ1UkG7UjR^|^v6#y7RR-$u$0vBZo9#9@nEDK-?XiI!4~HD+ z4D<595V2$(CCw$?DkZ7Rf*Zvwv|6t@jXg#j=~o?WpCb~&r&(ZZA(d(SV~g#^Cr`0N zeJcxt)O_fK(S}nCOD;jeKo0CUorBJXiN6ECc)OUg@TlbLRR(zJJRf$;qJ}?n(1DIT z*zj^5T=+5%?bh!$1L#%wfJ+F9ac>cEcicccc‰cH>Loþoþ‰þ“þ—þ›þ þ¢þºþÒþÒþÜþ˜u—®$®$Ê$Ï$Ö$à$æ$ñ$% %%%!%+%1%<%L%T%d%k%s%{%ƒ%‹%%›%©%©%¿%p©Á©«²¸¾ÀÆÌâõ  /EX}(¶å¶åÊåëåïåïå÷å8†å†åå”åŸå¨å¯å±å¶åd`µnÙnÙŒÙÙٟ٬ٮٺٺÙÇÙÉÙÖÙØÙäÙäÙÿÙ Ú ÚÚÚ.Ú9Ú?ÚDÚFÚRÚYÚhÚsÚyÚ~ڀڌڼÚâÚòÚÛÛÛ$Û4ÛDÛDÛIÛ\ÛcÛjÛjÛjÛjÛqÛ‡Û“Û™ÛŸÛ¥Û©Û©Û©ÛÖÛÝÛóÛÿÛÜ ÜÜÜÜ!Ü D¶Ã&Ü&Ü<Ü?ÜBÜOÜUÜbÜeÜhÜnÜpÜzÜ -,cjp‹p‹~‹ˆ‹“‹ž‹¤‹ª‹ os66DY_ P ‚7‚77Ÿ7»7Á7Ó7Ó7Þ7ç7í7ô7ú7 ”;\ßLßLçLëLMM;M\MeMvMšM±M±MÐMßMèMõMüM.N?NCNKNKN^NnNrNvN|1’"’"¨"±"¼"Ö"Ö"Ù"è"î"÷"ù"ÿ"# -###!#$#$#.#„“°`¢`¢t¢{¢‚¢†¢ª¢½¢Ä¢Õ¢ú¢££££B£M£X£Z£a£j£l£w£~£¨£("—á—á¦á½áØáØáÞá 7á7áFá\ábá ˆè´è´ µµ+µ7µBµTµeµVµTµ…µ µ¬µ³µ¹µÅµÏµÖµÝµáµãµéµõµÿµ¶ ¶¶¶¶ ¶+¶=¶N¶?¶=¶n¶¶›¶¢¶¨¶´¶¾¶Å¶Ì¶Ð¶Ò¶Ø¶ä¶î¶õ¶ü¶·· ··+·=·N·?·=·n··›·¢·¨·´·¾·Å·Ì·Ð·Ò·Ø·ä·î·õ·ü·¸¸ -¸¸,¸=¸.¸,¸]¸d¸j¸v¸€¸‡¸Ž¸’¸”¸š¸¦¸°¸·¸¾¸Â¸Â¸Ì¸Ú¸ã¸ü¸¹ ¹ ¹¹¹Ž¹ÔO„O„l„:ªt„ƒ„¦„±„Äʄۄã„ç„ê„ø„ü„(…(…=…?…?…K…S…W…d…d…p…x…|…‰…‰…‰…¥…°…Á…Á…Æ…Þ…í…ò…ø…††† †%†4†9†?†J†O†O†]†f†r†z†‚†І†“†˜†¡†³†¼†݆݆͆â†ê†ò†õ†û†û†‡‡‡‡ ‡‡‡0‡U‡l‡y‡‡‰‡•‡¡‡§‡®‡·‡»‡¾‡ʇЇׇ܇܇ê‡ú‡ú‡ˆˆˆˆ ˆ/ˆ4ˆ4ˆ;ˆFˆLˆTˆZˆeˆjˆjˆyˆ„ˆ–ˆœˆ¤ˆªˆ¯ˆºˆ̈ÒˆÚˆàˆåˆåˆùˆÿˆ +H2@2#2#;#A#\#a#Œ#Ž#Ã#­#Ó#Ú#ë#þ#¨­Óaa•aa¨a´aÔa¶aãaéaéabbEbSbSb€b¢bºb§bÉbõbâb cc>c>cEcicccc‰c˜u—®$®$Ê$Ï$Ö$à$æ$ñ$% %%%!%+%1%<%L%T%d%k%s%{%ƒ%‹%%›%©%©%¿%p©Á©«²¸¾ÀÆÌâõ  /EX}d`µnÙnÙŒÙÙٟ٬ٮٺٺÙÇÙÉÙÖÙØÙäÙäÙÿÙ Ú ÚÚÚ.Ú9Ú?ÚDÚFÚRÚYÚhÚsÚyÚ~ڀڌڼÚâÚòÚÛÛÛ$Û4ÛDÛDÛIÛ\ÛcÛjÛjÛjÛjÛqÛ‡Û“Û™ÛŸÛ¥Û©Û©Û©ÛÖÛÝÛóÛÿÛÜ ÜÜÜÜ!ÜD¶Ã&Ü&Ü<Ü?ÜBÜOÜUÜbÜeÜhÜnÜpÜzÜ,cjp‹p‹~‹ˆ‹“‹ž‹¤‹ª‹ os66DY_ P ‚7‚77Ÿ7»7Á7Ó7Ó7Þ7ç7í7ô7ú7 +”;\ßLßLçLëLMM;M\MeMvMšM±M±MÐMßMèMõMüM.N?NCNKNKN^NnNrNvN |1’"’"¨"±"¼"Ö"Ö"Ù"è"î"÷"ù"ÿ"# +###!#$#$#.# „“°`¢`¢t¢{¢‚¢†¢ª¢½¢Ä¢Õ¢ú¢££££B£M£X£Z£a£j£l£w£~£¨£ ("—á—á¦á½áØáØáÞá 7á7áFá\ábá ˆè´è´ µµ+µ7µBµTµeµVµTµ…µ µ¬µ³µ¹µÅµÏµÖµÝµáµãµéµõµÿµ¶ ¶¶¶¶ ¶+¶=¶N¶?¶=¶n¶¶›¶¢¶¨¶´¶¾¶Å¶Ì¶Ð¶Ò¶Ø¶ä¶î¶õ¶ü¶·· ··+·=·N·?·=·n··›·¢·¨·´·¾·Å·Ì·Ð·Ò·Ø·ä·î·õ·ü·¸¸ +¸¸,¸=¸.¸,¸]¸d¸j¸v¸€¸‡¸Ž¸’¸”¸š¸¦¸°¸·¸¾¸Â¸Â¸Ì¸Ú¸ã¸ü¸¹ ¹ ¹¹¹Ž¹ÔO„O„l„:ªt„ƒ„¦„±„Äʄۄã„ç„ê„ø„ü„(…(…=…?…?…K…S…W…d…d…p…x…|…‰…‰…‰…¥…°…Á…Á…Æ…Þ…í…ò…ø…††† †%†4†9†?†J†O†O†]†f†r†z†‚†І†“†˜†¡†³†¼†݆݆͆â†ê†ò†õ†û†û†‡‡‡‡ ‡‡‡0‡U‡l‡y‡‡‰‡•‡¡‡§‡®‡·‡»‡¾‡ʇЇׇ܇܇ê‡ú‡ú‡ˆˆˆˆ ˆ/ˆ4ˆ4ˆ;ˆFˆLˆTˆZˆeˆjˆjˆyˆ„ˆ–ˆœˆ¤ˆªˆ¯ˆºˆ̈ÒˆÚˆàˆåˆåˆùˆÿˆ ‰‰‰"‰(‰(‰M‰t‰y‰y‰‰“‰©‰º‰À‰ʼnÞ‰ä‰ô‰ü‰Š ŠŠŠ#Š)Š?ŠPŠVŠ[ŠtŠzŠŠŠ’ŠšŠ Š¥Š¥Š»ŠÁŠ׊èŠîŠóŠ‹‹‹!‹)‹/‹6‹;‹;‹Q‹W‹m‹~‹„‹†‹•‹›‹¥‹­‹µ‹»‹‹‹‹Ô‹Ý‹î‹þ‹þ‹ŒŒŒŒ*Œ=ŒDŒJŒRŒXŒhŒnŒvŒ|Œ|Œ|ŒŒŒŒŒŒ Œ¬Œ±Œ±ŒÀŒÉŒÔŒÝŒèŒóŒøŒøŒ*;AFX^c|ššŸŸ«³¶¼ÂÇÇëóû ŽŽŽŽ(ŽFŽFŽKŽKŽWŽ_ŽbŽiŽoŽtŽtŽ”ŽœŽ¬Ž²Ž¹Ž׎æŽîŽ6>V^ahnnn©±´»ÁÑàì7C^fipvvvv{{„”ª°ÈÛáæøþ‘‘%‘1‘9‘<‘C‘I‘r‘z‘Š‘‘—‘—‘—‘œ‘œ‘¥‘½‘Ó‘Ù‘ñ‘’ -’’:’@’S’Š’œ’¹’Á’Ç’Ì’Ì’æ’ò’þ’ “ “““(“4“@“K“K“P“P“j“v“‚“““’“’“¨“®“º“À“Å“דÝ“â“ñ“ý“ ””””/”:”C”O”W”Z”`”f”k””Ž”–”®”¶”¹”¿”Ŕݔ唕•'•*•0•6•6•G•P•\•d•g•n•t•y•‹•𕢕º••ŕ̕ҕê•ò•–+–3–6–=–C–C–S–\–h–p–s–y––„–˜–§–¯–É–Ñ–Ô–Ú–à–ø–—"—>—F—I—O—U—U—f—o—{—ƒ—†——“—˜—ª—¹—Á—Ü—ä—ç—î—ô— ˜˜6˜S˜[˜^˜e˜k˜k˜k˜k˜k˜p˜p˜†˜Œ˜˜˜ž˜£˜µ˜»˜À˜ΘÚ˜ã˜ï˜÷˜ú˜™™ ™™-™5™M™U™X™_™e™}™…™¤™¾™Æ™É™ЙÖ™Ö™Ö™ç™ð™ü™šššš+š:šFšašišlšsšyš‘šš¿šÜšäšçšîšôšôšôšôšôšùšùš ›'›-›8›=›=›P›f›l›w›y›y›Œ›¯›µ›À›À›Ò›Û›ì›ñ›œœœœœ+œAœGœUœdœiœiœ|œ’œ˜œ¦œµœºœºœМÖœóœ  5;@LUddii…¢ººäêïûžžžžž.ž4žQžižiž“ž™žžžªž³žžžÇžÇžÝžãžŸŸŸBŸHŸJŸVŸ_ŸjŸjŸjŸjŸoŸ}Ÿ†Ÿ—Ÿ™Ÿ«Ÿ¸Ÿ¸Ÿ¸ŸÈŸØŸÝŸ     ( E U y ‰    ” ™ ® Á ÿ ¡¡¡¡-¡<¡n¡v¡|¡~¡ƒ¡Š¡Š¡“¡¥¡¸¡Á¡ССÕ¡Ú¡é¡ò¡ý¡ÿ¡¢¢¢4¢;¢A¢I¢T¢Z¢j¢p¢x¢ƒ¢‰¢‰¢Ž¢“¢š¢¡¢¨¢¯¢¸¢Ç¢Ç¢Ç¢Ì¢Ì¢Ì¢Þ¢ã¢ã¢õ¢££££££££&£7£:£F£O£[£b£h£m£m£x£‰£Œ£˜£¡£­£´£º£¿£¿£¿£¿£Ä£É£É£Ô£Ø£Ø£ä£í£ð£ð£û£ý£¤¤ ¤/¤:¤E¤K¤W¤[¤[¤g¤p¤s¤s¤~¤€¤–¤¤£¤«¤¶¤Á¤ǤѤÔ¤ؤؤà¤ç¤ê¤ì¤÷¤û¤¥¥¥¥¥2¥9¥D¥O¥R¥X¥]¥]¥h¥l¥l¥x¥¥„¥„¥¥‘¥§¥®¥´¥Ã¥Î¥Ù¥ߥë¥ï¥ï¥û¥¦¦¦¦¦*¦1¦7¦?¦J¦U¦[¦e¦h¦l¦l¦t¦{¦~¦€¦‹¦¦˜¦›¦›¦¦¦¨¦Ʀͦئã¦æ¦ì¦ñ¦ñ¦§§§§§§§*§,§B§I§O§a§l§w§}§‚§‚§§’§’§§¢§¢§­§°§´§»§À§ŧʧʧÞ§ã§ã§ð§ô§¨ ¨¨%¨,¨0¨0¨=¨I¨Q¨W¨g¨k¨|¨ލ™¨¨¨ª¨²¨º¨À¨À¨À¨À¨À¨¨¨Шרä¨ð¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨©©©©+©+©L©[©s©u©©Ž©Ž©±©¾©É©Ò©Û©æ©í©í©÷©÷©ú© ª*ª6ª6ªa¬xÝ÷Z5Z5l5n5r5{5‡5“5¨5¨5×5Û5à5ì5ÿ5 6 666"6,6Œ×ö®®ÎÖÚèîôô 6JXou†”°¹ÉËÒÒØØèlbyG}G}]}l}q}†}s}•}˜}˜}¥}º}§}É}Ï}è}~~3~L~V~„ž‡m‡m¥m­m³mºmÁmÃmÆmÍmÔmÔmåmémïmïmnnnn/nRnsnxn™nžnªnµnºnÊnÍnánçnìnònônúnýnoo ooo,oOo]ouozo~o£o¶o»oÉoáoæoêoppBpUpZp`pephpjpppvp|pp‡ppp™p¢p°pÈpÍpÑpöpq)q—F—I—O—U—U—f—o—{—ƒ—†——“—˜—ª—¹—Á—Ü—ä—ç—î—ô— ˜˜6˜S˜[˜^˜e˜k˜k˜k˜k˜k˜p˜p˜†˜Œ˜˜˜ž˜£˜µ˜»˜À˜ΘÚ˜ã˜ï˜÷˜ú˜™™ ™™-™5™M™U™X™_™e™}™…™¤™¾™Æ™É™ЙÖ™Ö™Ö™ç™ð™ü™šššš+š:šFšašišlšsšyš‘šš¿šÜšäšçšîšôšôšôšôšôšùšùš ›'›-›8›=›=›P›f›l›w›y›y›Œ›¯›µ›À›À›Ò›Û›ì›ñ›œœœœœ+œAœGœUœdœiœiœ|œ’œ˜œ¦œµœºœºœМÖœóœ  5;@LUddii…¢ººäêïûžžžžž.ž4žQžižiž“ž™žžžªž³žžžÇžÇžÝžãžŸŸŸBŸHŸJŸVŸ_ŸjŸjŸjŸjŸoŸ}Ÿ†Ÿ—Ÿ™Ÿ«Ÿ¸Ÿ¸Ÿ¸ŸÈŸØŸÝŸ     ( E U y ‰    ” ™ ® Á ÿ ¡¡¡¡-¡<¡n¡v¡|¡~¡ƒ¡Š¡Š¡“¡¥¡¸¡Á¡ССÕ¡Ú¡é¡ò¡ý¡ÿ¡¢¢¢4¢;¢A¢I¢T¢Z¢j¢p¢x¢ƒ¢‰¢‰¢Ž¢“¢š¢¡¢¨¢¯¢¸¢Ç¢Ç¢Ç¢Ì¢Ì¢Ì¢Þ¢ã¢ã¢õ¢££££££££&£7£:£F£O£[£b£h£m£m£x£‰£Œ£˜£¡£­£´£º£¿£¿£¿£¿£Ä£É£É£Ô£Ø£Ø£ä£í£ð£ð£û£ý£¤¤ ¤/¤:¤E¤K¤W¤[¤[¤g¤p¤s¤s¤~¤€¤–¤¤£¤«¤¶¤Á¤ǤѤÔ¤ؤؤà¤ç¤ê¤ì¤÷¤û¤¥¥¥¥¥2¥9¥D¥O¥R¥X¥]¥]¥h¥l¥l¥x¥¥„¥„¥¥‘¥§¥®¥´¥Ã¥Î¥Ù¥ߥë¥ï¥ï¥û¥¦¦¦¦¦*¦1¦7¦?¦J¦U¦[¦e¦h¦l¦l¦t¦{¦~¦€¦‹¦¦˜¦›¦›¦¦¦¨¦Ʀͦئã¦æ¦ì¦ñ¦ñ¦§§§§§§§*§,§B§I§O§a§l§w§}§‚§‚§§’§’§§¢§¢§­§°§´§»§À§ŧʧʧÞ§ã§ã§ð§ô§¨ ¨¨%¨,¨0¨0¨=¨I¨Q¨W¨g¨k¨|¨ލ™¨¨¨ª¨²¨º¨À¨À¨À¨À¨À¨¨¨Шרä¨ð¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨þ¨©©©©+©+©L©[©s©u©©Ž©Ž©±©¾©É©Ò©Û©æ©í©í©÷©÷©ú© ª*ª6ª6ªa¬xÝ÷Z5Z5l5n5r5{5‡5“5¨5¨5×5Û5à5ì5ÿ5 6 666"6,6Œ×ö®®ÎÖÚèîôô 6JXou†”°¹ÉËÒÒØØèlbyG}G}]}l}q}†}s}•}˜}˜}¥}º}§}É}Ï}è}~~3~L~V~„ž‡m‡m¥m­m³mºmÁmÃmÆmÍmÔmÔmåmémïmïmnnnn/nRnsnxn™nžnªnµnºnÊnÍnánçnìnònônúnýnoo ooo,oOo]ouozo~o£o¶o»oÉoáoæoêoppBpUpZp`pephpjpppvp|pp‡ppp™p¢p°pÈpÍpÑpöpq)qÀBÀqÀfÀWÀÀÀ‹À’À¡À°ÀºÀÈÀÏÀÓÀÕÀäÀîÀüÀÁÁÁ ÁÁÁ-Á-Á-Á3Á?ÁQÁYÁqÁÁ«Á¯ÁÍÁÔÁÛÁæÁüÁÂÂÂ%Â3Â:Â>Â@ÂSÂ]ÂkÂrÂvÂvÂvÂv„ž¨¶ÂÁÂÅÂÅÂÊÂÒÂÖÂåÂçÂöÂøÂà ÃÃÃ#Ã7ÃAÃOÃVÃZÃjÃuÃzØâð÷ûÃÅÃÓÃÚÃÞÃèÃüÃÄÄÄÄÄÄ%Ä3ÄMÄ]ÄhÄ}Ä‚ÄÄĩĿÄÇÄÒÄáÄéÄôÄùÄÅ ÅÅÅ'Å,Å@ÅHÅSÅSÅSÅSÅgÅwŌřÅűÅÂÅ×ÅäÅèÅöÅ ÆÆ2ÆKÆdÆfÆqÆyÆyƂƟưÆÇÆàÆîÆùÆÇ ÇÇÇ"Ç"Ç"Ç?ÇMÇ[ÇrljǘǥÇÅÇÌÇÌÇÜÇðÇ È -ÈÈ$È3ÈNÈYÈpÈxÈxÈÈȰÈËÈÔÈëÈÉÉ!ÉAÉOÉeÉɑɩɩÉÁÉÁÉÍÉèÉÊ Ê Ê ÊÊ&Ê>ÊGÊGÊNÊWÊ]ÊiÊÈÊH›‡‡‡5‡E‡L‡c‡~‡‡”‡×‡4IRöØöØÿØÿØÙÙÙ!Ù&Ùì=OüOüwüzü˜ü¯üÀüÀüÛüáüæüæüýý ý ýý#ý@ýXý]ýdýjýlý‰ý™ýžý¥ý«ý­ý­ýÀýÆýÆýÆýÖýËýçý÷ý þþþþþþ#þ8þ?þ[þ[þmþÌM¼ § §:§E§P§Y§a§d§k§o§x§‹§§•§£§À§Í§Ü§á§í§ò§ù§¨ -¨ ¨¨¨'¨0¨A¨?¨7¨O¨X¨^¨^¨l¨o¨ƒ¨Œ¨•¨œ¨ ¨¥¨¼¨Ô¨Ý¨ë¨©©©+©<©<©C©\©h©p©ƒ©Š©ž©§©®©²©½©Â©É©æ©ªªª ª+ª7ª;ªPªRªcªmªxª‚ª‘ª ª¹ª¹ª¼ªÄªÉªK«Pw‡oOoO‹OœO¯OÆOãOþOP PP!P$P0PŒ cccN`Š`ŠlŠ€ŠƒŠ—ŠŸŠ£Š­Š·Š¿ŠÂŠÈŠ/ŒÄã~Ü~ܚܦܪܮܼܵÜËÜÖÜÜÜáÜãÜïÜöÜþÜÝ -ÝÝÝÝ$Ý,Ý2Ý8Ý:Ý:ÝFÝ08 2/2/@/F/R/]/n/x//…/1@‡“wíwí…íí—í¶íÃíÃíÆíÈíÎí2ÜSÿÿ% 8 ? F M S U \ c f f x x Š • © ± º  Ç Í ã ó  +ÈÈ$È3ÈNÈYÈpÈxÈxÈÈȰÈËÈÔÈëÈÉÉ!ÉAÉOÉeÉɑɩɩÉÁÉÁÉÍÉèÉÊ Ê Ê ÊÊ&Ê>ÊGÊGÊNÊWÊ]ÊiÊÈÊH›‡‡‡5‡E‡L‡c‡~‡‡”‡×‡4IRöØöØÿØÿØÙÙÙ!Ù&ÙÌM¼ § §:§E§P§Y§a§d§k§o§x§‹§§•§£§À§Í§Ü§á§í§ò§ù§¨ +¨ ¨¨¨'¨0¨A¨?¨7¨O¨X¨^¨^¨l¨o¨ƒ¨Œ¨•¨œ¨ ¨¥¨¼¨Ô¨Ý¨ë¨©©©+©<©<©C©\©h©p©ƒ©Š©ž©§©®©²©½©Â©É©æ©ªªª ª+ª7ª;ªPªRªcªmªxª‚ª‘ª ª¹ª¹ª¼ªÄªÉªK«Pw‡oOoO‹OœO¯OÆOãOþOP PP!P$P0PŒ cccN`Š`ŠlŠ€ŠƒŠ—ŠŸŠ£Š­Š·Š¿ŠÂŠÈŠ-8†å†åå”åŸå¨å¯å±å¶å.ŒÄã~Ü~ܚܦܪܮܼܵÜËÜÖÜÜÜáÜãÜïÜöÜþÜÝ +ÝÝÝÝ$Ý,Ý2Ý8Ý:Ý:ÝFÝ/8 2/2/@/F/R/]/n/x//…/0@‡“wíwí…íí—í¶íÃíÃíÆíÈíÎí1ÜSÿÿ% 8 ? F M S U \ c f f x x Š • © ± º  Ç Í ã ó   & > @@ -378,46 +378,46 @@ $LK,"AsmPrsInsFlags",A="FL:::/Compiler/AsmInit.HC,1",BI=269$ å ý     & . 3 9 O _ t y ’ ª ® Á Á Á Ó Æ õ è  -   3 K P [ o w € ˆ Š  ¢ ² Ç É â ú þ þ   # + 0 7 M ] r w  ¨ ¬ ¿ ¿ ¿ Ñ Ä ó æ 1IIIU[ep‚’©À×îî=M[[dn{•£ª½¿Þíæ//H3D‚¾¾Îâëñ -4\ObÈŠÈŠèŠ÷Š‹ ‹ ‹‹‹"‹'‹'‹8‹<‹D‹\‹_‹k‹50ü^å^ågålåuå|å~åƒå6á¿¿áèïú";;FJU‚i\‘¨¹ÍÑÖë&EY]]b€s»¢•Êèóù %*>FOW\cu…›¶ÎÒÒçÿ >RVeeeex~ˆ¢½½Ùé÷÷ '<OTs‚{šª±ÂèÙ<<<TG…Š•›¦ÈâÏñ4HLQob‘„¹¦Èæñ÷ #(<DMUZasƒ™›´ÌÐÐÐò #222EKU\oŠŠŠ¦¶ÄÄØæÿô%*IXQp€‘¯¯ÑÑØûûû7DtffvŠ“™««¯²º8<›&7@FJU94o¸GG.G1G5GBGKGVGfGnGxG G G°GµGµGÅGÊGÊGÚGßGßGïGôGôGH H HHHH.H3H3HCHHHHHXH]H]H]H`HiH‚HH§HºH¼HÂHÄHÇHØHÝHÝHãHóHóHþHII3I;IAIAIUIUI^IaI!J:lz‘W~W~m~|~~–~ƒ~¥~¨~¨~µ~Ê~·~Ù~ß~ø~*C\f;¼ª44#474T4_4‰4¹4»4Õ4é4ú4 55$5+5?5F5F5U5c5r5Š5™5¦5©5Â5Å5Ê5á5ñ566 6J6<d(=ø‰ø‰ŠŠŠ/Š7Š;ŠEŠOŠWŠZŠ`Š=Ä ng¬g¬„¬Œ¬¬¬«¬À¬ɬä¬ý¬­­+­/­A­D­O­X­d­w­¨­­ƒ­¸­Ï­ã­ï­ý­®3®W®k®m®Ž®t®©®¬®±®´®´®»®Ñ®Ø®å®ê®ù®¯¯¯1¯5¯b¯b¯z¯¯¯¯“¯¤¯®¯¿¯ɯܯá¯á¯ñ¯õ¯°°!°+°>°J°O°O°O°q°‚°‡°”°©°©°®°¸°ǰ̰Ò°×°×°ܰæ°õ°ú°±±± ±±±±±1±=±J±V±e±o±u±~±•±©±º±DẔä±÷±²²#²2²<²B²K²T²T²Y²Y²Y²Y²Y²i²i²i²²—²Ÿ²º²˲زÚ²ç²ì²ì²ì²÷²³ +   3 K P [ o w € ˆ Š  ¢ ² Ç É â ú þ þ   # + 0 7 M ] r w  ¨ ¬ ¿ ¿ ¿ Ñ Ä ó æ 1IIIU[ep‚’©À×îî=M[[dn{•£ª½¿Þíæ//H2D‚¾¾Îâëñ +3\ObÈŠÈŠèŠ÷Š‹ ‹ ‹‹‹"‹'‹'‹8‹<‹D‹\‹_‹k‹4á¿¿áèïú";;FJU‚i\‘¨¹ÍÑÖë&EY]]b€s»¢•Êèóù %*>FOW\cu…›¶ÎÒÒçÿ >RVeeeex~ˆ¢½½Ùé÷÷ '<OTs‚{šª±ÂèÙ<<<TG…Š•›¦ÈâÏñ4HLQob‘„¹¦Èæñ÷ #(<DMUZasƒ™›´ÌÐÐÐò #222EKU\oŠŠŠ¦¶ÄÄØæÿô%*IXQp€‘¯¯ÑÑØûûû50ü^å^ågålåuå|å~åƒå6DtffvŠ“™««¯²º7<›&7@FJU84o¸GG.G1G5GBGKGVGfGnGxG G G°GµGµGÅGÊGÊGÚGßGßGïGôGôGH H HHHH.H3H3HCHHHHHXH]H]H]H`HiH‚HH§HºH¼HÂHÄHÇHØHÝHÝHãHóHóHþHII3I;IAIAIUIUI^IaI!J9lz‘W~W~m~|~~–~ƒ~¥~¨~¨~µ~Ê~·~Ù~ß~ø~*C\f:¼ª44#474T4_4‰4¹4»4Õ4é4ú4 55$5+5?5F5F5U5c5r5Š5™5¦5©5Â5Å5Ê5á5ñ566 6J6;d(=ø‰ø‰ŠŠŠ/Š7Š;ŠEŠOŠWŠZŠ`Š<Ä ng¬g¬„¬Œ¬¬¬«¬À¬ɬä¬ý¬­­+­/­A­D­O­X­d­w­¨­­ƒ­¸­Ï­ã­ï­ý­®3®W®k®m®Ž®t®©®¬®±®´®´®»®Ñ®Ø®å®ê®ù®¯¯¯1¯5¯b¯b¯z¯¯¯¯“¯¤¯®¯¿¯ɯܯá¯á¯ñ¯õ¯°°!°+°>°J°O°O°O°q°‚°‡°”°©°©°®°¸°ǰ̰Ò°×°×°ܰæ°õ°ú°±±± ±±±±±1±=±J±V±e±o±u±~±•±©±º±DẔä±÷±²²#²2²<²B²K²T²T²Y²Y²Y²Y²Y²i²i²i²²—²Ÿ²º²˲زÚ²ç²ì²ì²ì²÷²³ ³ -³³³$³<³H³Z³f³l³t³z³ƒ³©³µ³»³Á³гسà³ ´´+´-´;´;´@´@´G´U´Z´m´y´…´‹´‘´š´Ÿ´Ÿ´Ÿ´Ÿ´Ÿ´·´¼´¼´¼´¼´¼´Í´Í´Í´Í´Í´Í´Í´Í´Í´Í´å´û´µµ/µ<µ>µKµ[µ`µ`µ`µiµƒµµ”µ¶µµµǵǵǵǵǵǵǵǵܵáµáµáµòµùµþµþµ ¶¶3¶H¶i¶ж•¶¦¶«¶«¶«¶´¶Ú¶ã¶ô¶ú¶·4·<·D·R·|·…·‹·¬·Å·Å·Å·Å·Å·ç· ¸)¸/¸5¸:¸C¸L¸Q¸Q¸Q¸Q¸`¸t¸’¸¢¸¨¸­¸­¸À¸Ô¸ú¸ ¹¹¹¹¹'¹;¹Y¹i¹o¹t¹t¹‡¹›¹Á¹Ô¹Ú¹Ú¹ß¹ß¹ß¹÷¹ ºº0ºAºNºPº_ºaºaºaºaºaºuºuºuºuºuºuºuºuºuºuºuºuºuºuºuºuº„º“ºžº º º©º«º«º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿ºÁºÁºغàºìºìºðºõº»!»9»H»T»j»„»‡»‘»»û㻼'¼)¼<¼j¼B¼…¼…¼ˆ¼˜¼ ¼»¼̼ϼé¼÷¼½½½F½I½X½l½½¡½½½©½Ù½î½ ¾A¾?¾4¾)¾¾O¾O¾O¾R¾W¾Z¾t¾‚¾°¾Ò¾Ò¾ý¾¿¿#¿D¿X¿t¿`¿¿¿®¿ã¿á¿Ö¿Ë¿¼¿ñ¿ñ¿ñ¿ô¿ù¿ù¿ÀÀ1À=ÀŽÃ>Ä…²ÈÈ%È)È4È;ÈFÈZÈZÈeÈvÈ}ȊȖȣȧȸȸÈÁÈÆÈÎÈÞÈìÈûÈÉÉÉ1É1ÉLÉxÉxɌɎɎɘɠɠɪɲɲɲÉÃÉÃÉÃÉÉÉÑÉ×ÉÜÉÜÉâÉêÉîÉôÉùÉùÉÊÊ)Ê8Ê=ÊEÊEÊJÊJÊQÊgÊwÊʉÊʞʣʫʱʱʶʽÊÈÊüÊ ËËË#Ë8Ë>ËCËCËCËCËCËCËCËCËCËNË\ËlËrËzˉˎ˛ˣ˨˨˨˰˹ËÂËÏË×ËãËîË"Ì*Ì9ÌCÌ]ÌcÌhÌhÌô̧̟̯̊ÌÄÌÆÌÑÌÙÌîÌîÌöÌÍÍÍÍ"Í&Í/Í4ÍXÍdÍlÍÍ͒ͩͮͮͮ͞ÍÄÍáÍæÍîÍÿÍÎÎ$Î)Î4Î<ÎQÎVÎVÎzΆΎΣίδÎÀÎËÎÐÎÐÎÐÎÐÎÐÎÐÎÛÎÛÎÛÎÛÎÛÎÛÎÛÎÛÎÛÎÛÎÛÎÛÎæÎõÎøÎÏÏÏ$Ï3Ï8Ï@ÏHÏJÏRÏaÏgÏoÏwÏyÏϞϧϯϷϾÏÒÏÛÏäÏìÏöÏÐÐÐÐ Ð2ÐfÐnÐ}ЇСЩЮЮЮзÐÀÐÃÐÍÐÛÐíÐïÐÑÑÑÑÑ#Ñ@ÑEÑEÑNÑSÑSÑSÑSÑSÑSÑSÑSÑSÑSÑSÑSÑSÑSÑSÑSÑ^ÑjтѕÑѬѱѹÑÀÑÍÑÖÑßÑçÑîÑóÑóÑûÑÒ!Ò)Ò,Ò.Ò>ÒHÒHÒHÒJÒ_ÒpÒsÒvÒ~҃҃ҌґҙҠҭÒÂÒÉÒÚÒæÒÓÓ1ÓFÓMÓMÓRÓRÓRÓRÓRÓRÓRÓZÓeÓqÓ€Ó…Ó…ÓÓ•Ó¢Ó§Ó§Ó§Ó«Ó°Ó°ÓÀÓÅÓÅÓÅÓÑÓØÓÞÓèÓíÓÔÔÔ,Ô4ÔWÔ]ÔdÔfÔlÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔuÔuÔÔšÔ¨Ô¨Ô­Ô¸Ô¿ÔÛÔèÔèÔèÔìÔ÷ÔÕ#Õ×?x[××-×4×;×F×M×^×h×o×y׌ההׯ×É×Ïר×ß×â×í×ö×ý×ØØØØ,Ø2ØHØOØWØmØtØtØt؂ةزغØÌØÔØÔØÔØߨéØûØÙÙÙ&Ù-ÙBÙSÙSÙZÙZÙZÙhÙٜ٥٭ٿÙÇÙÇÙÇÙÕÙÝÙÝÙàÙëÙÚÚVÚ@x`ºgÝgÝÝÝ–ÝÝ¨Ý»Ý¾ÝÆÝÍÝÐÝàÝîÝùÝÞÞÞ(Þ3Þ>ÞIÞTÞ[ÞnÞzÞ—Þ Þ¨ÞÈÞËÞÑÞÖÞåÞëÞóÞßßßßß*ß9ßAßPßXß{ß߇߉ßߕߕߕߺ߿ßÜßßßßßæßóß÷ßàà(à8àKàgà|à„àŽà­àÁàÁà5áA ?C11‰1‘1–1BDTaÇ|Ç|Û|è|þ|ê| }}'}?}G}CœfÉGSGSiSsS›SªSµSÎSÓS×SßSèS÷SþST T!T2TQTYT[TzT‚T‘T˜T¤T©T°T¸T¾TÀTÑTÖTìTØTûTUU UU!U@UGUIUhUoUoUoU†UU›UŸU­UÃU¸UÛUàUñUöU VøUV!V(V0V6V8VIVNVdVPVsVyVyVVŠVŠV”V”V¬VÜVåVñVõVWWW1W1WCWD ;zŸâŸâ¾âÇâÊâÜâòâôâýâã#ãAãPãnã‚ãšã¡ãÇãåãôãä"ä9ä=ä=äAäFäKäUäXäbägä€äƒäƒäƒäƒäˆäŽäªä¸äÄäÍäáäéäòäåå%å.åBåBåQåVåVådåEPcsAA@A-AbAOAqA€AˆA“A•A A«A«AÍAÓAFPµÅŸûŸû³û¸ûÇûÇûÎûûûüýû.ü üFüNüGD$÷r÷rsss)s.s7sCsEsWsWsYs‰sHŒ•´úúRú~ú~ú‘ú•ú·úÇúÌúÌúÓúÛúãúøúûûû+û?ûDûFûFûFûbû€û€ûûI¨.®ï®ï¶ïºïÆï×ïÙïéïôïððð+ð<ðCð\ð`ðqðqð{ð‚ð•ðžð¥ðÀðÏðæðæðññ3ñJP­>>8>:>H>N>i>x>‡>–>¤>¯>²>Â>Kè7×/×/00000*0A0X0|0˜0›0º0Ô0æ0ó0 111*12121<1<1G1L1a1g1†1¥1§1¼1Â1á1222222/2m2…2—2L$ ïZïZ[[$[,[MTHYÀeÀeÒeÔeÝeæeôeùeff -ff"f%f/fN¨!Gdd(d1dDdQd]didudd˜d˜d§d²d»dÂdËdâdùdþdee+e=e=eFeieieke~e€eše¦e©eÀeOlõŒ°p°pÉpÔpäp-q4qHqOqWq_qhqpqxqzq‚qŠq‘q˜q·qÏqØqØq r7r@rbr|r™rÃrÏrñrórúrss$s@sgsƒsªsÆsís t0tLtstt¶t¶tÅtÒt×t×tætótøtøtÿt -uu4uLudufufufumumuzuuuuužu±uÆuv v v vv.v`L`_`a`o`}``”`«`²`¾`Ë`Ë`Ö`ê`÷`ÿ`aa'a.a?aMaoava‚a a a a¨a³a·a¿aÃaËaÒaâaía bbb$b-b5b:b:bIbVbdbobzbˆbŽb”bšb£b©b¸bÐbÐbábìbîbúbcc$c*c3cDckcsc}c‹c£cªc¶cÅcÚcÚcçcìcþcddddeRædFÝFÝ`Ýi݉݉ÝݗݟݧݯݵÝÂÝÂÝÜÝáÝáÝçÝìÝìÝòÝ÷Ý÷ÝýÝÞÞÞ-Þ3Þ8Þ8ÞAÞaÞaÞaÞhÞjÞjÞqÞsÞsÞyÞyÞ€Þ‚Þ‚ÞˆÞˆÞÞ‘Þ‘Þ—Þ—ÞžÞžÞ¦Þ¬Þ²ÞºÞºÞºÞºÞÆÞÎÞÖÞÞÞæÞîÞöÞüÞß#ß-ß0ß0ß:ß@ßFßFßJßRßYß]ßeßmßsß{ß‚ßŠß’ß–ßœß§ß­ßºßÆßÌßÔߨßßßçßïßóßùßààààà"à-à2àHàYà^àaàáSLœ«؇؇ñ‡ó‡ú‡ˆ ˆ&ˆ>ˆVˆYˆkˆ³ˆT$¯Z¯ZÚZÃZäZìZUP©¹GDGDhDUDŠDwD™D¨D°D»D½DÈDÓDÓDõDûDV,Ö×Ö×ß×å×í×ö×ÿרWWWx›¨Ûèú**77>QO__jtz€ƒ‘˜°·ºÏÔßê‘‘/‘5‘;‘B‘Y‘H‘i‘o‘u‘}‘‘…‘¦‘¬‘²‘º‘º‘Á‘ؑǑè‘î‘ô‘ü‘’’%’+’1’9’9’9’O’O’O’O’Z’d’m’’™’ª’¯’À’Ԓْْä’ì’÷’“ “ “0“E“Z“w“|“|“‡““œ“§“·“Æ“ã“ø“ ””””(”>”S”_”p”u”†”š”š”¥”𔽔””є֔֔å”ê”ê”û”•••••)•8•=•=•P•_•d•r•d•†•‹•™•‹•­•²•À•²•Ô•Ù•ç•Ù•û•–––"–D–I–W–I–k–p–p––’–´–¹–Ç–¹–Û–à–à–ý–—$—)—7—)—K—P—P—m—r—”—™—§—™—»—À—À—Û—à—à—û—˜˜˜ ˜ ˜;˜@˜@˜[˜`˜`˜{˜€˜€˜›˜ ˜ ˜»˜À˜À˜јÖ˜Ö˜ç˜ì˜ì˜ø˜™™™™)™B™G™m™t™~™ƒ™”™ž™³™¾™Ùԙߙç™ì™ì™ð™ô™û™ššš"š'š'š'š+šDšMšMšsšxšxš€š”šš·šÄšÏšÚšåš÷š› ››››"›?›J›T›_›d›o›w›|›|›‡››˜›£›³›Ë›ã›÷›ü›ü›œœ$œ/œPœ\œmœrœƒœ‡œŒœŒœœœ§œ¯œ´œ¿œÏœÞœûœ%05@HMXhw”©¾¾¾¾ÃÈÈÔåå +³³³$³<³H³Z³f³l³t³z³ƒ³©³µ³»³Á³гسà³ ´´+´-´;´;´@´@´G´U´Z´m´y´…´‹´‘´š´Ÿ´Ÿ´Ÿ´Ÿ´Ÿ´·´¼´¼´¼´¼´¼´Í´Í´Í´Í´Í´Í´Í´Í´Í´Í´å´û´µµ/µ<µ>µKµ[µ`µ`µ`µiµƒµµ”µ¶µµµǵǵǵǵǵǵǵǵܵáµáµáµòµùµþµþµ ¶¶3¶H¶i¶ж•¶¦¶«¶«¶«¶´¶Ú¶ã¶ô¶ú¶·4·<·D·R·|·…·‹·¬·Å·Å·Å·Å·Å·ç· ¸)¸/¸5¸:¸C¸L¸Q¸Q¸Q¸Q¸`¸t¸’¸¢¸¨¸­¸­¸À¸Ô¸ú¸ ¹¹¹¹¹'¹;¹Y¹i¹o¹t¹t¹‡¹›¹Á¹Ô¹Ú¹Ú¹ß¹ß¹ß¹÷¹ ºº0ºAºNºPº_ºaºaºaºaºaºuºuºuºuºuºuºuºuºuºuºuºuºuºuºuºuº„º“ºžº º º©º«º«º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿º¿ºÁºÁºغàºìºìºðºõº»!»9»H»T»j»„»‡»‘»»û㻼'¼)¼<¼j¼B¼…¼…¼ˆ¼˜¼ ¼»¼̼ϼé¼÷¼½½½F½I½X½l½½¡½½½©½Ù½î½ ¾A¾?¾4¾)¾¾O¾O¾O¾R¾W¾Z¾t¾‚¾°¾Ò¾Ò¾ý¾¿¿#¿D¿X¿t¿`¿¿¿®¿ã¿á¿Ö¿Ë¿¼¿ñ¿ñ¿ñ¿ô¿ù¿ù¿ÀÀ1À=ÀŽÃ=Ä…²ÈÈ%È)È4È;ÈFÈZÈZÈeÈvÈ}ȊȖȣȧȸȸÈÁÈÆÈÎÈÞÈìÈûÈÉÉÉ1É1ÉLÉxÉxɌɎɎɘɠɠɪɲɲɲÉÃÉÃÉÃÉÉÉÑÉ×ÉÜÉÜÉâÉêÉîÉôÉùÉùÉÊÊ)Ê8Ê=ÊEÊEÊJÊJÊQÊgÊwÊʉÊʞʣʫʱʱʶʽÊÈÊüÊ ËËË#Ë8Ë>ËCËCËCËCËCËCËCËCËCËNË\ËlËrËzˉˎ˛ˣ˨˨˨˰˹ËÂËÏË×ËãËîË"Ì*Ì9ÌCÌ]ÌcÌhÌhÌô̧̟̯̊ÌÄÌÆÌÑÌÙÌîÌîÌöÌÍÍÍÍ"Í&Í/Í4ÍXÍdÍlÍÍ͒ͩͮͮͮ͞ÍÄÍáÍæÍîÍÿÍÎÎ$Î)Î4Î<ÎQÎVÎVÎzΆΎΣίδÎÀÎËÎÐÎÐÎÐÎÐÎÐÎÐÎÛÎÛÎÛÎÛÎÛÎÛÎÛÎÛÎÛÎÛÎÛÎÛÎæÎõÎøÎÏÏÏ$Ï3Ï8Ï@ÏHÏJÏRÏaÏgÏoÏwÏyÏϞϧϯϷϾÏÒÏÛÏäÏìÏöÏÐÐÐÐ Ð2ÐfÐnÐ}ЇСЩЮЮЮзÐÀÐÃÐÍÐÛÐíÐïÐÑÑÑÑÑ#Ñ@ÑEÑEÑNÑSÑSÑSÑSÑSÑSÑSÑSÑSÑSÑSÑSÑSÑSÑSÑSÑ^ÑjтѕÑѬѱѹÑÀÑÍÑÖÑßÑçÑîÑóÑóÑûÑÒ!Ò)Ò,Ò.Ò>ÒHÒHÒHÒJÒ_ÒpÒsÒvÒ~҃҃ҌґҙҠҭÒÂÒÉÒÚÒæÒÓÓ1ÓFÓMÓMÓRÓRÓRÓRÓRÓRÓRÓZÓeÓqÓ€Ó…Ó…ÓÓ•Ó¢Ó§Ó§Ó§Ó«Ó°Ó°ÓÀÓÅÓÅÓÅÓÑÓØÓÞÓèÓíÓÔÔÔ,Ô4ÔWÔ]ÔdÔfÔlÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔsÔuÔuÔÔšÔ¨Ô¨Ô­Ô¸Ô¿ÔÛÔèÔèÔèÔìÔ÷ÔÕ#Õ×>x[××-×4×;×F×M×^×h×o×y׌ההׯ×É×Ïר×ß×â×í×ö×ý×ØØØØ,Ø2ØHØOØWØmØtØtØt؂ةزغØÌØÔØÔØÔØߨéØûØÙÙÙ&Ù-ÙBÙSÙSÙZÙZÙZÙhÙٜ٥٭ٿÙÇÙÇÙÇÙÕÙÝÙÝÙàÙëÙÚÚVÚ?x`ºgÝgÝÝÝ–ÝÝ¨Ý»Ý¾ÝÆÝÍÝÐÝàÝîÝùÝÞÞÞ(Þ3Þ>ÞIÞTÞ[ÞnÞzÞ—Þ Þ¨ÞÈÞËÞÑÞÖÞåÞëÞóÞßßßßß*ß9ßAßPßXß{ß߇߉ßߕߕߕߺ߿ßÜßßßßßæßóß÷ßàà(à8àKàgà|à„àŽà­àÁàÁà5á@ ?C11‰1‘1–1ADTaÇ|Ç|Û|è|þ|ê| }}'}?}G}B ;zŸâŸâ¾âÇâÊâÜâòâôâýâã#ãAãPãnã‚ãšã¡ãÇãåãôãä"ä9ä=ä=äAäFäKäUäXäbägä€äƒäƒäƒäƒäˆäŽäªä¸äÄäÍäáäéäòäåå%å.åBåBåQåVåVådåCPcsAA@A-AbAOAqA€AˆA“A•A A«A«AÍAÓADPµÅŸûŸû³û¸ûÇûÇûÎûûûüýû.ü üFüNüED$÷r÷rsss)s.s7sCsEsWsWsYs‰sFŒ•´úúRú~ú~ú‘ú•ú·úÇúÌúÌúÓúÛúãúøúûûû+û?ûDûFûFûFûbû€û€ûûG¨.®ï®ï¶ïºïÆï×ïÙïéïôïððð+ð<ðCð\ð`ðqðqð{ð‚ð•ðžð¥ðÀðÏðæðæðññ3ñHè7×/×/00000*0A0X0|0˜0›0º0Ô0æ0ó0 111*12121<1<1G1L1a1g1†1¥1§1¼1Â1á1222222/2m2…2—2I$ ïZïZ[[$[,[JTHYÀeÀeÒeÔeÝeæeôeùeff +ff"f%f/fK¨!Gdd(d1dDdQd]didudd˜d˜d§d²d»dÂdËdâdùdþdee+e=e=eFeieieke~e€eše¦e©eÀeLlõŒ°p°pÉpÔpäp-q4qHqOqWq_qhqpqxqzq‚qŠq‘q˜q·qÏqØqØq r7r@rbr|r™rÃrÏrñrórúrss$s@sgsƒsªsÆsís t0tLtstt¶t¶tÅtÒt×t×tætótøtøtÿt +uu4uLudufufufumumuzuuuuužu±uÆuv v v vv.v`L`_`a`o`}``”`«`²`¾`Ë`Ë`Ö`ê`÷`ÿ`aa'a.a?aMaoava‚a a a a¨a³a·a¿aÃaËaÒaâaía bbb$b-b5b:b:bIbVbdbobzbˆbŽb”bšb£b©b¸bÐbÐbábìbîbúbcc$c*c3cDckcsc}c‹c£cªc¶cÅcÚcÚcçcìcþcddddeOædFÝFÝ`Ýi݉݉ÝݗݟݧݯݵÝÂÝÂÝÜÝáÝáÝçÝìÝìÝòÝ÷Ý÷ÝýÝÞÞÞ-Þ3Þ8Þ8ÞAÞaÞaÞaÞhÞjÞjÞqÞsÞsÞyÞyÞ€Þ‚Þ‚ÞˆÞˆÞÞ‘Þ‘Þ—Þ—ÞžÞžÞ¦Þ¬Þ²ÞºÞºÞºÞºÞÆÞÎÞÖÞÞÞæÞîÞöÞüÞß#ß-ß0ß0ß:ß@ßFßFßJßRßYß]ßeßmßsß{ß‚ßŠß’ß–ßœß§ß­ßºßÆßÌßÔߨßßßçßïßóßùßààààà"à-à2àHàYà^àaàáPLœ«؇؇ñ‡ó‡ú‡ˆ ˆ&ˆ>ˆVˆYˆkˆ³ˆQ$¯Z¯ZÚZÃZäZìZRP©¹GDGDhDUDŠDwD™D¨D°D»D½DÈDÓDÓDõDûDSl£:OGOGhG€GG°GÂGÚGõGõGH'H+H.H2H7HAHDHKHQHXH^HbHgHqH‚H‰HH’H–HŸH©H¬H·HÃHÆH×HâHèHïHøHI"I+I4IQO__jtz€ƒ‘˜°·ºÏÔßê‘‘/‘5‘;‘B‘Y‘H‘i‘o‘u‘}‘‘…‘¦‘¬‘²‘º‘º‘Á‘ؑǑè‘î‘ô‘ü‘’’%’+’1’9’9’9’O’O’O’O’Z’d’m’’™’ª’¯’À’Ԓْْä’ì’÷’“ “ “0“E“Z“w“|“|“‡““œ“§“·“Æ“ã“ø“ ””””(”>”S”_”p”u”†”š”š”¥”𔽔””є֔֔å”ê”ê”û”•••••)•8•=•=•P•_•d•r•d•†•‹•™•‹•­•²•À•²•Ô•Ù•ç•Ù•û•–––"–D–I–W–I–k–p–p––’–´–¹–Ç–¹–Û–à–à–ý–—$—)—7—)—K—P—P—m—r—”—™—§—™—»—À—À—Û—à—à—û—˜˜˜ ˜ ˜;˜@˜@˜[˜`˜`˜{˜€˜€˜›˜ ˜ ˜»˜À˜À˜јÖ˜Ö˜ç˜ì˜ì˜ø˜™™™™)™B™G™m™t™~™ƒ™”™ž™³™¾™Ùԙߙç™ì™ì™ð™ô™û™ššš"š'š'š'š+šDšMšMšsšxšxš€š”šš·šÄšÏšÚšåš÷š› ››››"›?›J›T›_›d›o›w›|›|›‡››˜›£›³›Ë›ã›÷›ü›ü›œœ$œ/œPœ\œmœrœƒœ‡œŒœŒœœœ§œ¯œ´œ¿œÏœÞœûœ%05@HMXhw”©¾¾¾¾ÃÈÈÔåå ž ž)ž)ž3žGžQžSž_žgž„ž•žŸžªžÍžÞžïžŸ Ÿ#Ÿ3Ÿ8Ÿ8ŸCŸHŸHŸPŸ[Ÿ`Ÿ`ŸhŸsŸxŸxŸ€Ÿ¡ŸŠŸˆŸ¹Ÿ¾Ÿ¾ŸÆŸçŸПΟÿŸ   0 5 5 B G G O T T f x } } ‘ } © ® ® ¶ » » ΠÓ Ó æ ë ë ¡¡¡¡4¡D¡I¡I¡c¡s¡x¡x¡’¡¢¡§¡¾¡§¡Ö¡Û¡Û¡æ¡ë¡'¢¢¢ë¡?¢D¢€¢n¢\¢D¢˜¢¢¢¬¢¼¢Á¢Á¢Тà¢å¢å¢ô¢££/£££G£L£t£b£L£Œ£‘£¹£§£‘£Ñ£Ö£Ö£ó£Ý£¤-¤2¤2¤M¤9¤w¤‡¤Œ¤Œ¤˜¤¤¤©¤®¤®¤Á¤ѤÖ¤Ö¤é¤ù¤þ¤þ¤¥!¥&¥&¥9¥I¥N¥N¥V¥[¥[¥c¥h¥h¥p¥u¥u¥}¥‚¥‚¥•¥š¥š¥­¥²¥¦î¥Ü¥Ê¥²¥ ¦¦`¦N¦<¦*¦¦m¦r¦r¦¦œ¦¡¦¡¦²¦ͦÒ¦Ò¦ã¦ñ¦ö¦ö¦þ¦§§ §§§§§§U§C§1§$§t§§”§”§̧º§¨§›§ë§¨ ¨@¨.¨#¨ ¨X¨]¨’¨€¨u¨]¨ª¨¯¨ɨ³¨¯¨á¨æ¨©í¨æ¨© © ©,©E©U©f©f©‹©©£©©©©©Æ©Ó©ª5ª#ªXª`ª`ª`ªlªqªqª„ªª™ªžª©ª³ª¸ª¸ªÒªתתߪäªøªäª«««+««:«E«J«J«U«f«k«k«v««†«†«—«œ«œ«¶«Á«Æ«Ñ«Æ«à«å«ù«å«¬ ¬¬ ¬'¬,¬@¬,¬O¬T¬T¬h¬T¬w¬w¬w¬|¬ˆ¬|¬›¬ ¬ ¬¬¬ ¬¿¬ĬĬЬĬã¬è¬è¬ô¬è¬­ ­ ­ ­/­;­F­Q­V­j­V­y­…­­›­ ­´­ ­Ë­íÔ­Ù­Ù­á­æ­æ­ï­ô­ô­ý­®® ®®®® ® ®+®0®0®;®@®@®K®P®P®[®`®`®k®p®p®{®€®”®€®£®®®¹®Ä®É®É®Ó®Ø®Ø®â®ç®ç®ñ®ö®ö®¯¯¯ ¯¯¯¯$¯$¯1¯6¯6¯6¯6¯6¯>¯C¯C¯K¯P¯P¯X¯]¯]¯e¯j¯j¯r¯w¯‹¯w¯š¯«¯°¯°¯·¯¯â¯ç¯ý¯°!° °0°;°F°K°K°R°]°}°‚°˜°£°¼°¨°˰Ö°á°æ°æ°í°ø°±±3±>±W±C±f±q±|±±±œ±ˆ±«±˱бæ±ñ± ²ö±-²²<²G²L²L²g²S²v²–²›²±²¼²Õ²Á²ø²ä²³³³³2³³A³a³f³|³‡³ ³Œ³ó¯³Ò³ݳâ³â³ñ³ö³ö³´ ´ ´ -´´´´´´!´!´+´2´U´W´W´a´a´a´a´a´c´c´z´´Œ´Œ´—´´¤´¯´º´Å´¿´à´ý´ò´µµ#µµIµ>µaµaµaµjµqµ„µ‰µ—µªµªµɵÔµëµ ¶ ¶ ¶,¶<¶Q¶c¶s¶s¶˜¶Ÿ¶®¶À¶À¶Ķɶжà¶ÿ¶ÿ¶··!·&·&·*·5·A·O·|·…·–·¤·×·ã·è·þ·¸"¸3¸8¸I¸h¸–¸¿¸¸Ò¸Ô¸Ô¸ظ÷¸¹¹¹¹G¹j¹j¹m¹’»X, ØØØØØ'Ø0Ø6ØY`EYg‡g‡}‡‹‡’‡–‡¥‡¾‡‡ȇÞ‡û‡ý‡ý‡.ˆˆý‡MˆWˆZ8 -?Z?Z`ZMZoZzZ…ZZ›Z§Z­Z[\’¨¡¨¡¶¡¸¡Ã¡Ë¡Ö¡á¡ì¡î¡¢¢¢"¢+¢.¢]¢\Ô@þæþæçççBçBç_çrç…ç˜ççç»çÉçÜçïç÷ç÷çùçùçùç èèèèè(è;è;è;èNèYèlè‚è‡è‹è’è§èºèÁèÁèÄèéè]l½”?ï?ïdïiïvï¢ï¢ï­ïºïØïàï ðð;ð[ðwð}ðð¤ðÊðÏðøðñ;ñRñXñ\ñuñ}ñ‚ñ“ñ›ñºñÀñÄñÝñåñò òò"òAòFòNòTòXò\ònòvò{ò™òžò«ò°ò°ò½òÕòäòñòóó(ó-ó-óDóFóFóZó\ó\ósóuóuóŒóŽóŽó¥ó¥ó·ó¼ó¼óËóËóôôô0ô5ô5ô5ô5ôXôtôôôô˜ôôôô¥ôªôªô²ô²ô´ôÞôàôõ õ õ õ õ õ:õ=õRõYõ[õdõwõyõ…õ…õõŸõŸõ«õ¾õÕõßõöö5öUövöŽö­öÓöâö÷%÷=÷L÷c÷÷„÷„÷¸÷½÷½÷Ð÷Ð÷Ü÷î÷ó÷ó÷ ø*øPø_ø}ø¢øÂøÑøÿøùù>ù@ù@ù@ùLùLùLùjùšùœùœù«ù«ù°ù°ù°ù°ù°ùÇùÌùßùú^\ -OO¡O·OÓOàO÷O PP,PP;PCPNPdPZP|P‚P_àÏ:Ï:í:ð:÷:þ:; ; ;;;;!;4;\;w;d;;”;¸;¸;Ä;Ì;Û;<<G<O<T<]<i<q<x<š< <Â<Ä<æ<=ò<==!=!='=*=.=?=?=b=t=`$gágává‘á‘á—áa|k†oìoì‰ìµìµìÔìäìæìæìæìæìíìõìí)í+í+í+í3íNíPíPíZíZíríbô¦ß¿7¿7è7õ7ø788858L8W88­8²8·8Â8Ü8î8û89#9:9?9Q9V9Y9y9™9¡9©9®9Î9î9ö9þ9: :(:-:2:=:=:H:H:T:T:f:¦:¿:¿:Ï:cd¤¹ §³¹ÁÏâîŽŽŽŽ&Ž6ŽPŽTŽ\Žd(¸þr*r*ˆ**¡*Ð*à*ç*÷*+ -++8+b+s+++ˆ+˜+¤+´+½+Ô+Ô+ê+ê+,,,,,,,,B,B,X,X,n,n,„,„,›,›,²,²,É,É,à,à,÷,÷,--%-%-<-D-O-`-k-|---˜-Ÿ-æ.e(ÈΗ—¾«Íßçf8-7*0*0>0B0G0R0]0`0d0l0gˆZøWˆWˆqˆŒˆ’ˆ™ˆ™ˆ ˆňʈÕˆóˆ݈‰‰'‰0‰8‰B‰`‰r‰{‰ƒ‰‰¨‰’‰·‰ɉÓ‰Û‰ó‰݉ŠŠ'Š9ŠCŠKŠKŠTŠ\ŠrŠ‹ŠŠ¬Š°Š°Š·Š¼ŠÚŠÜŠáŠìŠ‹‹‹‹‹3‹=‹G‹P‹q‹{‹…‹‡‹‡‹¤‹²‹À‹ËÜ‹à‹û‹ÿ‹Œ"Œ=ŒAŒAŒAŒGŒUŒ_ŒxŒ~Œ‰Œ•Œ—ŒŸŒ¥Œ¾ŒÉŒ׌áŒúŒýŒ79EGOUn†’§¬ÁÑêûûŽŽ)Ž5ŽJŽOŽdŽtŽŽžŽžŽ¤Ž¯Ž·ŽÅŽÌŽÞŽh¤÷îî   ) - 8 J J e h j v ‡ ‡ “ š ¡ ¡ ¯ · º ¼ ¿ Ä Ç Ë Ó å ø ø C!ieãáá á)áIáIáOáWá_ágáoáuá‚á‚áá•á•á›á á á¦á«á«á±á¶á¶áÎáááçáìáìáõáââââââ%â'â'â-â-â4â6â6â<â<âCâEâEâKâKâRâRâZâ`âfânânânânâzâ‚âŠâ’âšâ¢âªâ°âÈâ×âáâäâäâîâôâúâúâþâã ããã!ã'ã/ã6ã>ãFãJãPã[ãaãnãzã€ãˆãŒã“ã›ã£ã§ã­ãµã¼ãÄãÌãÐãÖãáãæãüã äääºäj`b!b!k!r!†!š!Ÿ!½!Â!à!â!"""-"6"8"L"\""kxËåee-e?eEeQeheheze€e‹e›e§e°e¶e¼eÇeÕeâeîeüe f f;fl2Òȕȕޕ–"–3–F–N–\–z–…–‹–˜–­–­–À–Ñ–×–ì–————#—)—>—F—J—R—`—f—k—k—€—•—œ—¤—¬—²—Õ—è—ô—ø—˜˜!˜#˜0˜2˜D˜D˜K˜S˜e˜e˜–˜¤˜·˜»˜Å˜É˜Õ˜Ù˜å˜é˜õ˜ù˜ù˜™"™(™,™6™:™I™M™\™`™s™w™w™w™w™Ž™œ™©™±™È™Ø™æ™ñ™šš#š+š8šSšcšsšxšxšxšxš…š”šœš¢š·šÆšÛšìšüš›››››&›,›9›T›d›p›v›ƒ›•›£›Å›RmTP¦ô¦ôÄôÊôÍôÖôàôøôõõõõõ õ8õHõUõ[õ_õeõgõjõnõnõ‘õ•õ›õ›õ¢õÉõÞõñõö -ööö&ö*ö-ö4ö:ö>öDöUö[ö`öeörötö†öˆööœöžö°ö°ö°ö°ö°öÔößöëö÷÷÷#÷@÷d÷~÷ƒ÷š÷Ÿ÷­÷Ä÷É÷Ï÷à÷õ÷û÷ øø,ø3ø?øWøcøcøcøiøløoøˆøŽø¢ø¨ø­ø¸ø¸ø½øÊø×ø×øÝøëøùù ùùùù%ù%ù*ù7ùDùDùJùXùoùuùxù{ù‚ù‚ù“ùšù§ù´ù´ù»ùÅùÌùÒùÙùäùøùøùúúú&ú-ú=úAúJúbúgúnúú›ú¡ú©úÂúÖúÖúñúñú ûû û'ûIû\û€û‚ûŒû®û®û®ûÇûÓûäûüüÜünÔÃôÀnÀnÒnãnînùno$oi>iaininiƒi¥iºiÜiåiòiòijjjRj…j‹j‹j‹jj|t¶Z3Z3n33¡3µ3¼3È3â3ë3ñ34 4 4!4!4$4'4<4B4D4D4L4}ÈQ¿ÞüÞüüüýý8ý8ý:ýGýRýXýiýxý‡ý”ý”ýšýŸý¤ýºýÍýØýÜýîýûýþþ -þ%þ3þ3þ3þ>þYþDþaþtþvþ’þ~þšþ¨þ¨þªþÆþÆþÍþÓþÜþãþæþÿÿÿ$ÿ*ÿ3ÿ3ÿ3ÿFÿKÿKÿSÿSÿ^ÿsÿ|ÿ|ÿ|ÿ|ÿ˜ÿ¯ÿµÿºÿºÿÏÿÕÿÚÿÚÿæÿ#(--9Vet|‡ŒŒ“š½ÚÜäù!**H^in{†—§¾¾ÎÎàæ ',,9DJSSfs…ž§¬Ößêïöþ&+2?FXmtzƒƒŒ¦­²ÀÐÞÞäëôô-5=Ifmz|ƒ—¦¦¦ÐÐÐÝÝòý'5@OVVo‚„“¨ª¸ÍÍÓÜÜéï.5@EMT_dy{•ªªª¬³¹ÊØêêð÷)228AA``mpy‚Š•§­¸¸ÅÈÑÚâíÿ )24Vi~„¡§¯¯¯¯º3 ~ø˜ÒÆ%Æ%è%ð%ö%& +´´´´´´!´!´+´2´U´W´W´a´a´a´a´a´c´c´z´´Œ´Œ´—´´¤´¯´º´Å´¿´à´ý´ò´µµ#µµIµ>µaµaµaµjµqµ„µ‰µ—µªµªµɵÔµëµ ¶ ¶ ¶,¶<¶Q¶c¶s¶s¶˜¶Ÿ¶®¶À¶À¶Ķɶжà¶ÿ¶ÿ¶··!·&·&·*·5·A·O·|·…·–·¤·×·ã·è·þ·¸"¸3¸8¸I¸h¸–¸¿¸¸Ò¸Ô¸Ô¸ظ÷¸¹¹¹¹G¹j¹j¹m¹’»V, ØØØØØ'Ø0Ø6ØW`EYg‡g‡}‡‹‡’‡–‡¥‡¾‡‡ȇÞ‡û‡ý‡ý‡.ˆˆý‡MˆWˆX8 +?Z?Z`ZMZoZzZ…ZZ›Z§Z­ZY\’¨¡¨¡¶¡¸¡Ã¡Ë¡Ö¡á¡ì¡î¡¢¢¢"¢+¢.¢]¢ZÔ@þæþæçççBçBç_çrç…ç˜ççç»çÉçÜçïç÷ç÷çùçùçùç èèèèè(è;è;è;èNèYèlè‚è‡è‹è’è§èºèÁèÁèÄèéè[l½”?ï?ïdïiïvï¢ï¢ï­ïºïØïàï ðð;ð[ðwð}ðð¤ðÊðÏðøðñ;ñRñXñ\ñuñ}ñ‚ñ“ñ›ñºñÀñÄñÝñåñò òò"òAòFòNòTòXò\ònòvò{ò™òžò«ò°ò°ò½òÕòäòñòóó(ó-ó-óDóFóFóZó\ó\ósóuóuóŒóŽóŽó¥ó¥ó·ó¼ó¼óËóËóôôô0ô5ô5ô5ô5ôXôtôôôô˜ôôôô¥ôªôªô²ô²ô´ôÞôàôõ õ õ õ õ õ:õ=õRõYõ[õdõwõyõ…õ…õõŸõŸõ«õ¾õÕõßõöö5öUövöŽö­öÓöâö÷%÷=÷L÷c÷÷„÷„÷¸÷½÷½÷Ð÷Ð÷Ü÷î÷ó÷ó÷ ø*øPø_ø}ø¢øÂøÑøÿøùù>ù@ù@ù@ùLùLùLùjùšùœùœù«ù«ù°ù°ù°ù°ù°ùÇùÌùßùú\\ +OO¡O·OÓOàO÷O PP,PP;PCPNPdPZP|P‚P]àÏ:Ï:í:ð:÷:þ:; ; ;;;;!;4;\;w;d;;”;¸;¸;Ä;Ì;Û;<<G<O<T<]<i<q<x<š< <Â<Ä<æ<=ò<==!=!='=*=.=?=?=b=t=^$gágává‘á‘á—á_|k†oìoì‰ìµìµìÔìäìæìæìæìæìíìõìí)í+í+í+í3íNíPíPíZíZírí`ô¦ß¿7¿7è7õ7ø788858L8W88­8²8·8Â8Ü8î8û89#9:9?9Q9V9Y9y9™9¡9©9®9Î9î9ö9þ9: :(:-:2:=:=:H:H:T:T:f:¦:¿:¿:Ï:ad¤¹ §³¹ÁÏâîŽŽŽŽ&Ž6ŽPŽTŽ\Žb(¸þr*r*ˆ**¡*Ð*à*ç*÷*+ +++8+b+s+++ˆ+˜+¤+´+½+Ô+Ô+ê+ê+,,,,,,,,B,B,X,X,n,n,„,„,›,›,²,²,É,É,à,à,÷,÷,--%-%-<-D-O-`-k-|---˜-Ÿ-æ.c(ÈΗ—¾«Íßçd8-7*0*0>0B0G0R0]0`0d0l0eˆZøWˆWˆqˆŒˆ’ˆ™ˆ™ˆ ˆňʈÕˆóˆ݈‰‰'‰0‰8‰B‰`‰r‰{‰ƒ‰‰¨‰’‰·‰ɉÓ‰Û‰ó‰݉ŠŠ'Š9ŠCŠKŠKŠTŠ\ŠrŠ‹ŠŠ¬Š°Š°Š·Š¼ŠÚŠÜŠáŠìŠ‹‹‹‹‹3‹=‹G‹P‹q‹{‹…‹‡‹‡‹¤‹²‹À‹ËÜ‹à‹û‹ÿ‹Œ"Œ=ŒAŒAŒAŒGŒUŒ_ŒxŒ~Œ‰Œ•Œ—ŒŸŒ¥Œ¾ŒÉŒ׌áŒúŒýŒ79EGOUn†’§¬ÁÑêûûŽŽ)Ž5ŽJŽOŽdŽtŽŽžŽžŽ¤Ž¯Ž·ŽÅŽÌŽÞŽf¤÷îî   ) - 8 J J e h j v ‡ ‡ “ š ¡ ¡ ¯ · º ¼ ¿ Ä Ç Ë Ó å ø ø C!geãáá á)áIáIáOáWá_ágáoáuá‚á‚áá•á•á›á á á¦á«á«á±á¶á¶áÎáááçáìáìáõáââââââ%â'â'â-â-â4â6â6â<â<âCâEâEâKâKâRâRâZâ`âfânânânânâzâ‚âŠâ’âšâ¢âªâ°âÈâ×âáâäâäâîâôâúâúâþâã ããã!ã'ã/ã6ã>ãFãJãPã[ãaãnãzã€ãˆãŒã“ã›ã£ã§ã­ãµã¼ãÄãÌãÐãÖãáãæãüã äääºäh`b!b!k!r!†!š!Ÿ!½!Â!à!â!"""-"6"8"L"\""ixËåee-e?eEeQeheheze€e‹e›e§e°e¶e¼eÇeÕeâeîeüe f f;fj2Òȕȕޕ–"–3–F–N–\–z–…–‹–˜–­–­–À–Ñ–×–ì–————#—)—>—F—J—R—`—f—k—k—€—•—œ—¤—¬—²—Õ—è—ô—ø—˜˜!˜#˜0˜2˜D˜D˜K˜S˜e˜e˜–˜¤˜·˜»˜Å˜É˜Õ˜Ù˜å˜é˜õ˜ù˜ù˜™"™(™,™6™:™I™M™\™`™s™w™w™w™w™Ž™œ™©™±™È™Ø™æ™ñ™šš#š+š8šSšcšsšxšxšxšxš…š”šœš¢š·šÆšÛšìšüš›››››&›,›9›T›d›p›v›ƒ›•›£›Å›RkTP¦ô¦ôÄôÊôÍôÖôàôøôõõõõõ õ8õHõUõ[õ_õeõgõjõnõnõ‘õ•õ›õ›õ¢õÉõÞõñõö +ööö&ö*ö-ö4ö:ö>öDöUö[ö`öeörötö†öˆööœöžö°ö°ö°ö°ö°öÔößöëö÷÷÷#÷@÷d÷~÷ƒ÷š÷Ÿ÷­÷Ä÷É÷Ï÷à÷õ÷û÷ øø,ø3ø?øWøcøcøcøiøløoøˆøŽø¢ø¨ø­ø¸ø¸ø½øÊø×ø×øÝøëøùù ùùùù%ù%ù*ù7ùDùDùJùXùoùuùxù{ù‚ù‚ù“ùšù§ù´ù´ù»ùÅùÌùÒùÙùäùøùøùúúú&ú-ú=úAúJúbúgúnúú›ú¡ú©úÂúÖúÖúñúñú ûû û'ûIû\û€û‚ûŒû®û®û®ûÇûÓûäûüüÜülÔÃôÀnÀnÒnãnînùno$oLoþoþ‰þ“þ—þ›þ þ¢þºþÒþÒþÜþv°0XŸ[Ÿ[·[¿[Ê[.\\ \ï[Ø[4\F\6\f\f\}\q\¯\´\À\Õ\Â\ä\ê\ñ\]]ø\,].]J]J]Q]{]{]{]‡]wd$àCàCD DDDD,D.D;D=DHD\DdDtDyDD‡DŠDœDxt·ÐR4R4d4m4p4y4‚4”4”4À4Ä4É4Ì4Õ4ä4ê4í4õ4ø4ý45y`2‡P‡P¯P›P¾PãPÏPòP÷PþPQ QQ Q+QAQ6QYQaQzÀ-HhHhfhvh€h€hŠhŠh”h¦h³h¶h¸hÁhÎhÎhÜhðhðhi!i!i1i>i>iaininiƒi¥iºiÜiåiòiòijjjRj…j‹j‹j‹jj{t¶Z3Z3n33¡3µ3¼3È3â3ë3ñ34 4 4!4!4$4'4<4B4D4D4L4|ÈQ¿ÞüÞüüüýý8ý8ý:ýGýRýXýiýxý‡ý”ý”ýšýŸý¤ýºýÍýØýÜýîýûýþþ +þ%þ3þ3þ3þ>þYþDþaþtþvþ’þ~þšþ¨þ¨þªþÆþÆþÍþÓþÜþãþæþÿÿÿ$ÿ*ÿ3ÿ3ÿ3ÿFÿKÿKÿSÿSÿ^ÿsÿ|ÿ|ÿ|ÿ|ÿ˜ÿ¯ÿµÿºÿºÿÏÿÕÿÚÿÚÿæÿ#(--9Vet|‡ŒŒ“š½ÚÜäù!**H^in{†—§¾¾ÎÎàæ ',,9DJSSfs…ž§¬Ößêïöþ&+2?FXmtzƒƒŒ¦­²ÀÐÞÞäëôô-5=Ifmz|ƒ—¦¦¦ÐÐÐÝÝòý'5@OVVo‚„“¨ª¸ÍÍÓÜÜéï.5@EMT_dy{•ªªª¬³¹ÊØêêð÷)228AA``mpy‚Š•§­¸¸ÅÈÑÚâíÿ )24Vi~„¡§¯¯¯¯º3 }ø˜ÒÆ%Æ%è%ð%ö%& &&&,&,&7&A&A&N&W&f&q&w&&‡&˜&˜&£&­&­&¿&Å&Õ&Û&à&ç&ç&'' '3'9'<'B'B'D'J'P'R'R'R'c'm'r'r'‡'‘'‘'¥'®'´'º'Ð'Õ'Ý'ó'÷'÷'ÿ'( (((#(,(>(>(c(g(m(s(…(˜(ž(¢(¨(®(´(´(¶(º(À(Æ(Ì(Ñ(Ñ(Ñ(Ñ(ü( ) )$)1)5)=)O)o)o)u)x)|)‚)‚)”)¥)º)Î)Ö)ç)ë)ñ)þ)* ***0*;*^*i*o*u*{*„*Š*œ*­*µ*¹*¿*Ì*Î*Ú*ø*þ*+ -+++6+)+P+Y+_+_+t+y+y+€+Š+Ÿ+¤+¤+¤+Á+Ã+à+â+ÿ+, ,,,;,A,G,S,j,q,w,‚,‡,‡,Ž,’,œ,ª,¬,´,¹,Á,Ì,Ò,á,æ,ì,ñ,ù,þ, -$-4-A-L-h-j-†-†--¢-§-°-½-Â-È-Í-Í-Ô-Ø-â-ð-ò-ú-þ-. ...!.-.4.8.@.H.P.b.p.u...‰.‰.¬.¬.º.À.Å.É.Î.Î.Î.Î.Ô.Ö.Ö.ù.ÿ./ /"/$/$/$///////4/]0¸ºä`Ž`ŽxŽzŽ†ŽŠŽ—ŽšŽ´Ž´Ž´ŽºŽ¾ŽÆŽÑŽåŽñŽóŽóŽüŽþŽþŽ &,/9JP\\Ä€œ&‡)‡)¥)¶)Î)Õ)ñ)æ) *)**8*I*N*o*[*‡*¤*«*Ç*¼*ß*ÿ*ë*++5+!+M+Z+Z+r+r+|+x± À±À±Ö±Ý±ä±²²!²0²?²N²X²X²]²d²w²†²‹²¦²À²À²Ö²è²ì²ú²³³³ ³³(³*³8³J³J³J³\³g³y³„³‘³–³¦³«³»³Ç³Ì³Ù³Þ³î³ó³´´´´'´)´:´C´C´E´U´\´l´l´‡´™´«´½´Í´Í´Í´Ð´ã´‚\åøÈÈãêïý#146@RRYƒ`/g…g…}……–… …¯…È…Ì…Ò…è…†††8†&††W†a†„L[j222¯2µ2½2Ï2Õ2Þ2ð2ö2ù253…=gRgRŠRŸR¤R¬R´R¼RÉRÏRØRÞRãRSS S&S(S*S7S7S‹·T·TÙTäTéTñT UUUU0U6U8UCUJUJUNU]UfUnUwUU†UU‘U˜U U¦U«U³UÊUÎUäU÷UýUVV#V#V7VBVIVRV`ViVŒV’V–V›V V£V­V²V¾VÇVÛVâVôVWWWWWkW‹\k~7373E3W3]3e3w3}3†3˜3ž3§3¹3¿3Â34Œ, ®×®×¼×Ã×Ë×Ð×Öׄ$OOm†œ¡ÃÃÈêÿìAAAPlb„ŽŽ8øç(ç()),)M):)e)})})‡)`j~ð ð ¡¡¡*¡4¡?¡G¡V¡`¡c¡ˆ¡Š¡š¡š¡¨¡_oÛoÛ‘Û˜ÛŸÛ¤Û»ÛÍÛ×ÛÝÛïÛôÛÜÜ Ü ÜÜ!Ü!Ü%Ü-Ü5Ü=ÜGÜPÜXÜ[ÜdÜÜܗܚܟܮܴܼܼÜÃÜÆÜËÜÚÜàÜèÜèÜöÜùÜþÜ ÝÝ Ý Ý+Ý?ÝFÝMÝdÝ‘83=ŽØŽØ—ؗإةطغؿؒ8>HÆØÆØÏØÏØÝØáØèØëØðØ“DDQ—1—1±1Ä1Î1Õ1á1ù12222=2”Ä{¨ADKPVX]ccu|’¥´º¼ÃÉÓÓçéðö)0?AWjj|•0RZ?2?2H2n22…2…22–  -Ž0Ž0—0´0¹0—”"O6O6q6{6‡6Œ6œ6¢6·6Ë6Û6é6÷677 7/777D7L7O7O7O7Q7`7j7s7{7~77˜„=Z/K/K_KeKnKzK‚K‰KK–K–K›K¢KºKäKéK LLL/LGLkLŠLœL™lò ??Wipw™›½Ò¿ôá>>Fš y}ŒŒ!Œ-Œ2Œ›„a~NóNó`óuóóˆóŠó‘ó¡ó¬ó®ó¸ó¸óÁóÒóÕóÕóùóôôô&ô*ô9ôLôŸôœH%Š/Š/˜/Ÿ/ª/·/Â/Ê/Ê/â/ì/ò/ø/0 OO>O+OMOiO_OO‰OžLè÷×'×'ñ'((=(*(U(Z(…(¦(“(¾(Ö(Ö(à(Ÿð[“ŸLŸLÔLÝLéLñLüLMM%M'MBM*MQMQM_MiMpMM’M¬M³M³MÏMÏMöMûMN3NPNSN[NbN‚N„NžN¥N¥NÁNÁNÞNÞNOO T]nžž´ÁÇÍÞìú $'1¡0 ++++6+)+P+Y+_+_+t+y+y+€+Š+Ÿ+¤+¤+¤+Á+Ã+à+â+ÿ+, ,,,;,A,G,S,j,q,w,‚,‡,‡,Ž,’,œ,ª,¬,´,¹,Á,Ì,Ò,á,æ,ì,ñ,ù,þ, -$-4-A-L-h-j-†-†--¢-§-°-½-Â-È-Í-Í-Ô-Ø-â-ð-ò-ú-þ-. ...!.-.4.8.@.H.P.b.p.u...‰.‰.¬.¬.º.À.Å.É.Î.Î.Î.Î.Ô.Ö.Ö.ù.ÿ./ /"/$/$/$///////4/]0~¸ºä`Ž`ŽxŽzŽ†ŽŠŽ—ŽšŽ´Ž´Ž´ŽºŽ¾ŽÆŽÑŽåŽñŽóŽóŽüŽþŽþŽ &,/9JP\\Äœ&‡)‡)¥)¶)Î)Õ)ñ)æ) *)**8*I*N*o*[*‡*¤*«*Ç*¼*ß*ÿ*ë*++5+!+M+Z+Z+r+r+|+€x± À±À±Ö±Ý±ä±²²!²0²?²N²X²X²]²d²w²†²‹²¦²À²À²Ö²è²ì²ú²³³³ ³³(³*³8³J³J³J³\³g³y³„³‘³–³¦³«³»³Ç³Ì³Ù³Þ³î³ó³´´´´'´)´:´C´C´E´U´\´l´l´‡´™´«´½´Í´Í´Í´Ð´ã´\åøÈÈãêïý#146@RRY‚`/g…g…}……–… …¯…È…Ì…Ò…è…†††8†&††W†a†ƒL[j222¯2µ2½2Ï2Õ2Þ2ð2ö2ù253„=gRgRŠRŸR¤R¬R´R¼RÉRÏRØRÞRãRSS S&S(S*S7S7S‹·T·TÙTäTéTñT UUUU0U6U8UCUJUJUNU]UfUnUwUU†UU‘U˜U U¦U«U³UÊUÎUäU÷UýUVV#V#V7VBVIVRV`ViVŒV’V–V›V V£V­V²V¾VÇVÛVâVôVWWWWWkWŠ\k~7373E3W3]3e3w3}3†3˜3ž3§3¹3¿3Â34‹, ®×®×¼×Ã×Ë×Ð×Ö׌„$OOm†œ¡ÃÃÈêÿìAAAPlb„Ž8øç(ç()),)M):)e)})})‡)Ž`j~ð ð ¡¡¡*¡4¡?¡G¡V¡`¡c¡ˆ¡Š¡š¡š¡¨¡_oÛoÛ‘Û˜ÛŸÛ¤Û»ÛÍÛ×ÛÝÛïÛôÛÜÜ Ü ÜÜ!Ü!Ü%Ü-Ü5Ü=ÜGÜPÜXÜ[ÜdÜÜܗܚܟܮܴܼܼÜÃÜÆÜËÜÚÜàÜèÜèÜöÜùÜþÜ ÝÝ Ý Ý+Ý?ÝFÝMÝdÝ83=ŽØŽØ—ؗإةطغؿؑ8>HÆØÆØÏØÏØÝØáØèØëØðØ’DDQ—1—1±1Ä1Î1Õ1á1ù12222=2“Ä{¨ADKPVX]ccu|’¥´º¼ÃÉÓÓçéðö)0?AWjj|”0RZ?2?2H2n22…2…22•  +Ž0Ž0—0´0¹0–”"O6O6q6{6‡6Œ6œ6¢6·6Ë6Û6é6÷677 7/777D7L7O7O7O7Q7`7j7s7{7~77—„=Z/K/K_KeKnKzK‚K‰KK–K–K›K¢KºKäKéK LLL/LGLkLŠLœL˜lò ??Wipw™›½Ò¿ôá>>F™ y}ŒŒ!Œ-Œ2Œš„a~NóNó`óuóóˆóŠó‘ó¡ó¬ó®ó¸ó¸óÁóÒóÕóÕóùóôôô&ô*ô9ôLôŸô›H%Š/Š/˜/Ÿ/ª/·/Â/Ê/Ê/â/ì/ò/ø/œ0 OO>O+OMOiO_OO‰OLè÷×'×'ñ'((=(*(U(Z(…(¦(“(¾(Ö(Ö(à(žð[“ŸLŸLÔLÝLéLñLüLMM%M'MBM*MQMQM_MiMpMM’M¬M³M³MÏMÏMöMûMN3NPNSN[NbN‚N„NžN¥N¥NÁNÁNÞNÞNOOŸT]nžž´ÁÇÍÞìú $'1 0 RGGvk—ƒº¦ÉÕÚæöý -!,49EJ^eity„¦²·ËÒÖÖÛôù'9>IQQQSlŒ–¡£®¶¶Æ»Þþ¢àZŽ0f0fJfXf]fjfxffœfªfÏfØfèfggg g"g,g8gYIYVYbYuY‚YY¦Y»YÅYÇYÞYîYóYþYZ(Z(Z(Z:Z®<ÑÜ +!,49EJ^eity„¦²·ËÒÖÖÛôù'9>IQQQSlŒ–¡£®¶¶Æ»Þþ¡àZŽ0f0fJfXf]fjfxffœfªfÏfØfèfggg g"g,g8gYIYVYbYuY‚YY¦Y»YÅYÇYÞYîYóYþYZ(Z(Z(Z:Z­<ÑÜ 5 -555$5,545<5C5S5S5X5¯´*¨£¨£Ë£Ø£Ý£á£ê£ù£¤¤¤#¤.¤6¤9¤E¤M¤g¤¤‡¤¤¦¤Û¤Ç¤ë¤ë¤¥¥*¥1¥U¥\¥Ž¥Ž¥Ž¥Ž¥ï¥°<ùDµÁÌÖÜæìö‘‘ ‘*‘0‘:‘@‘J‘Q‘]‘c‘l‘—‘¦‘©‘«‘µ‘Ǒёã‘í‘’’’’$’)’9’D’I’]’_’p’“’“’’²’À’É’Ñ’ß’ð’““““+“+“3“A“ˆ“±$› ÷P÷P QQQ$Q²l£:OGOGhG€GG°GÂGÚGõGõGH'H+H.H2H7HAHDHKHQHXH^HbHgHqH‚H‰HH’H–HŸH©H¬H·HÃHÆH×HâHèHïHøHI"I+I4IÅGÅGÅGÅYÅdÅjŀŇÅťŬŬŬźÅáÅêÅòÅÆ ÆÆ Æ&Æ<ÆCÆKÆRÆgÆxÆxÆÆÆÆÆ´ÆÁÆÊÆÒÆäÆìÆõÆõÆÇÇÇÇ%Ç=ÇEÇKÇZÇcÇgÇoÇxÇxdžǎǔDZǺÇÂÇÈÇÎÇÎÇÎÇÕÇÜÇëÇóÇùÇÿÇÿÇÈ È¶xWÚWÚeÚzÚڌڢÚÌÚèÚïÚÛ ÛÛ%Û-Û5Û7Û=ÛCÛRÛZÛ`ÛbÛhÛ·¼Ôcc²cºcÊcÒcöc ddd!d'd0d!W!j!n!n!n!‚!†!!“!˜!ž!»!»!É!à!å!þ!""%"%"%"*"9";"]"]""Š""¦"·"¼"Ç"Û"ß"è"ì"î"ô" # ##2#4#M#^#b#b#i#|#€#’#—#«#³#¼#À#Å#Ì#â#ò# $$'$:$>$P$P$P$P$b$U$w$†$ˆ$ª$µ$»$Ñ$â$â$â$é$ü$%%%$%$%7%N%Y%j%o%u%%%%%”%Ÿ%´%¶%Á%Ö%â%ä%ï%û% &&&#&+&/&3&5&:&B&F&X&Z&_&g&k&m&m&v&ƒ&™&¹&Ó&á&í&ô&ô&' ' ' '''1'?'K'R'R'l'n's''›'§'®'®'»'Å'Å'×'ºÜ ¹¬(J(JEJTJTJTJqJqJ‚J‚JˆJŠJŠJJ’J’J˜JšJšJ¡J¥JªJªJªJªJªJªJ²JÊJÊJßJêJôJKKK:KL,LDLSLXL_LhL{LƒL‹LLLL™L²L¸L¸LÑLßLüLMMM%M-M2M2M8M8MAMRMTMiMkMsMyMM†M†M†M†M”M«M­MÁMÁMÉMÏM×MÜMåMíMöMüMNNNN N NN1N5N7NCNEN`NfNnNsN|N‡N‹N‘N•NžN¡N¡N¯NÀNÂNêNO OOO#O(O(O-O/O7O7OROdOiOuO{O~O•O—OšOªO®OµO¾OÍOÛOáOéOîOöOûOûOPPP4P9PCPkPvPPŒP—P¢P­P¸PÃPÎPÎPÎPÖPåPþP Q)QBQDQJQLQPQ[Q]Q]QcQiQiQqQzQ€QŒQŒQ“Q–QµQÀQÈQÐQÕQÕQÜQàQåQ÷QüQRRRRDRDRMR[RlRxRRRœR²R¸R½R½RÂRØRäRìRüRSSS$S&S/S2S2SV>VLVRVXVbVlVzVV’V”VžVžV V¨V­V²V·V·V½VÅVÊVÊVÏVÚVßVäVïVôVWW!W&W+W0W5W:W?W?WDWIWeWoWƒW—WW¥W¥W³W¹W¿WÉWÓWáWöWùWûWXXXXX!X&X/X/X4X4X:XBXGXGXLXWX\XaXfXuXuX†XŒXŒXšX X¦X°XºXÈXÝXàXâXìXûXYYYY YYYY!Y)Y.Y.Y3Y>YCYHYMY\Y\YmYsYsYY‡YY—Y¡Y¯YÄYÇYÉYÓYâYçYçYçYïYôYýYZZZZZZ"Z(Z(Z6ZÅGÅGÅGÅYÅdÅjŀŇÅťŬŬŬźÅáÅêÅòÅÆ ÆÆ Æ&Æ<ÆCÆKÆRÆgÆxÆxÆÆÆÆÆ´ÆÁÆÊÆÒÆäÆìÆõÆõÆÇÇÇÇ%Ç=ÇEÇKÇZÇcÇgÇoÇxÇxdžǎǔDZǺÇÂÇÈÇÎÇÎÇÎÇÕÇÜÇëÇóÇùÇÿÇÿÇÈ È´xWÚWÚeÚzÚڌڢÚÌÚèÚïÚÛ ÛÛ%Û-Û5Û7Û=ÛCÛRÛZÛ`ÛbÛhÛµàt¨×A×AìA +B÷A?B%BBNB]BeBpBrB}BˆBˆBBÂBÇBüBCC6C#CJCECfCuC}CˆCŠC•C C C¥CÆCÈCéCéCðCõCDD;D;D;DCD¶œfÉGSGSiSsS›SªSµSÎSÓS×SßSèS÷SþST T!T2TQTYT[TzT‚T‘T˜T¤T©T°T¸T¾TÀTÑTÖTìTØTûTUU UU!U@UGUIUhUoUoUoU†UU›UŸU­UÃU¸UÛUàUñUöU VøUV!V(V0V6V8VIVNVdVPVsVyVyVVŠVŠV”V”V¬VÜVåVñVõVWWW1W1WCW·$âç=PW^eikry}}…ž¨¨¼ÇÕæêï      < < J a f   ” ” ” ™ ¤ ® µ È Ì Ñ å í ö ú ü !!%!!W!j!n!n!n!‚!†!!“!˜!ž!»!»!É!à!å!þ!""%"%"%"*"9";"]"]""Š""¦"·"¼"Ç"Û"ß"è"ì"î"ô" # ##2#4#M#^#b#b#i#|#€#’#—#«#³#¼#À#Å#Ì#â#ò# $$'$:$>$P$P$P$P$b$U$w$†$ˆ$ª$µ$»$Ñ$â$â$â$é$ü$%%%$%$%7%N%Y%j%o%u%%%%%”%Ÿ%´%¶%Á%Ö%â%ä%ï%û% &&&#&+&/&3&5&:&B&F&X&Z&_&g&k&m&m&v&ƒ&™&¹&Ó&á&í&ô&ô&' ' ' '''1'?'K'R'R'l'n's''›'§'®'®'»'Å'Å'×'¸Ü ¹¬(J(JEJTJTJTJqJqJ‚J‚JˆJŠJŠJJ’J’J˜JšJšJ¡J¥JªJªJªJªJªJªJ²JÊJÊJßJêJôJKKK:KL,LDLSLXL_LhL{LƒL‹LLLL™L²L¸L¸LÑLßLüLMMM%M-M2M2M8M8MAMRMTMiMkMsMyMM†M†M†M†M”M«M­MÁMÁMÉMÏM×MÜMåMíMöMüMNNNN N NN1N5N7NCNEN`NfNnNsN|N‡N‹N‘N•NžN¡N¡N¯NÀNÂNêNO OOO#O(O(O-O/O7O7OROdOiOuO{O~O•O—OšOªO®OµO¾OÍOÛOáOéOîOöOûOûOPPP4P9PCPkPvPPŒP—P¢P­P¸PÃPÎPÎPÎPÖPåPþP Q)QBQDQJQLQPQ[Q]Q]QcQiQiQqQzQ€QŒQŒQ“Q–QµQÀQÈQÐQÕQÕQÜQàQåQ÷QüQRRRRDRDRMR[RlRxRRRœR²R¸R½R½RÂRØRäRìRüRSSS$S&S/S2S2SV>VLVRVXVbVlVzVV’V”VžVžV V¨V­V²V·V·V½VÅVÊVÊVÏVÚVßVäVïVôVWW!W&W+W0W5W:W?W?WDWIWeWoWƒW—WW¥W¥W³W¹W¿WÉWÓWáWöWùWûWXXXXX!X&X/X/X4X4X:XBXGXGXLXWX\XaXfXuXuX†XŒXŒXšX X¦X°XºXÈXÝXàXâXìXûXYYYY YYYY!Y)Y.Y.Y3Y>YCYHYMY\Y\YmYsYsYY‡YY—Y¡Y¯YÄYÇYÉYÓYâYçYçYçYïYôYýYZZZZZZ"Z(Z(Z6Z<I<|<–<–<®<½<Å<Ô<Ý<å<÷<=!=)=4=6=F=^=v=Ž=¦=¸=Ï=Ø=á=ó=>> >ÅLWf"1"161:1?1J1J1T1Z1Z1^1f1Æ\CVº0º0Ð0Ð0Ô0Ù0ì0ï0ô0ô0þ011111Ç  ‰‰‰@‰F‰È`B×i×iôiüij(j6j8jFjSjYjdj{jŠj•j™j¤j°j·jÃjÚjñjkk%k3kEkGkUkgkgkpkk‡k—k—k¯k¯kÔkÔkÙkÙkâkîkûkll3lBlMl_lkl‚lšl»l»lÄlÉlÉlÉlÉlÙlâlêlïlýl mm m m.m.m3m3m=mHmZm`mlm|m‡m‘m•mžm·mºmÊmÑmïmømømnn'n.n4n@nHnSnZn^nqnwn„nn•n¥nµnµnâno ooo&o1oAoQoQoaofofopo{oo“o¡o®o»oÅoÉoÒoëoîoþop +^^^^$^:^:^C^C^C^L^Q^Q^Y^^^^^{^‰^•^š^ ^ª^²^·^·^·^Ë^Ô^Ú^ì^ö^ö^þ^þ^___!_+_4_6_6_6_<_@_B_B_B_B_G_M_S_W_Êb¹ ˆÇxx-x0x6xJxRxcxpxvx{x{xˆx‘x—x§xµx·xÖxêxñxýx y yy.y9y=yNyNyNySySy_ynyy‡yŒy y¦y®yÀyÆyÈy×yäyêyðyõyûyzzzzz"z*z,z1z=z?zDzLzNzSz[z]zbzjzlzqzyzyzyz‰z‰z‰z z¦z¬z·z¼zÕzÛzæzîzøzüz{{&{1{7{D{I{N{N{c{k{u{}{…{¦{±{¼{È{Â{Ñ{Ú{ß{ä{ù{| |||'|+|0|5|@|K|V|X|^|k|p|u|Ž|™|¤|¤|ª|·|¹|¾|Ç|à|ë|ö|ü| } } }}}#}%}%}8}:}:}M}O}O}b}d}d}w}y}y}‹}‹}‘}–}–}­}Á}¶}Î}Ö}Ý}ã}ë}þ} ~~~~~3~6~8~G~Y~i~u~Œ~¦~«~¿~Ï~â~ç~ç~ð~!)15CINNThx}}ƒ‰ŽŽŽ”£¶ÃÇÌÌÐÕÕÚåñ €!€-€-€3€@€B€O€[€j€}€}€Š€–€–€–€–€š€Ÿ€°€€Í€Õ€Ý€߀ñ€ö€&&=MMamox„››¡®°ÂÂÍÍÍÍÍI„ºÌ€¯ŸjŸjÁjÌjâjþj k"k7kBkXkDkgkokok~k~k†k’k¨k½kÌk×kêkðkðkðkõkúk ll.l0l5lDlOl\lflfltl»¼Ôcc²cºcÊcÒcöc ddd!d'd0dHTH`HuH™H£H©H¹HáHÐHðHòHII,I"IAIGIVI~ImIII¡I«I¿IÉIÒIéIóIõI JJJ2J8J8J8JAJaJ‰JxJ˜JJ¯J·JâJØJ÷J÷J÷JKK/KÐÄ8¥—2—2Î2Õ2Ý2æ2ñ2ø23333$323<3A3i3n3{3§3¬3¹3Ù3Þ3í34!4&4;4g4o4t4t4‡4š4­4±4Ó4ã4è4è455555(5@5E5H5K5K5x5}5}5Š5Ž5©5Ä5Ò5Ý5ù5ù5ù566666,6C6E6E6R6i6i6y6~6¡6Ä6Ì6Ñ6í6 77)737575757Q7Y7[7[7ƒ7¹7Ѥ8]—ê—ê±êÝêÝêüê ëëë ë2ëLëTë[ë`ë{ëƒëƒëƒë…ë…ë…ë…ë¡ë¡ë¡ë¡ë¸ëºëºëºëºëÕëàëìÒ\æù?f?fUfgfmfxf†f’f©f©f»fÁfÌfÜfçfõfg.gÓÐêÿ‚ÿ‚ƒ!ƒ&ƒ&ƒ2ƒ7ƒ<ƒGƒLƒLƒLƒƒnƒƒ·ƒ·ƒЃéƒ„„ „ „9„R„k„„„‰„‰„¢„»„Ô„í„ï„ï„…!…:…S…S…S…e…Ô H‰H‰Q‰p‰u‰Õ0”œÏíÏíÝíãíçíî'î'î-îÖ<:E"9"9+969D9P9\9e9n9w9}9‚9×luŒª&ª&¸&Â&É&à&à&å&ç&ó&ý& '('*':':'?'A'H'z'ØÐŸÏÏsÏsãs ttîs-t_tEt8tŠttšt¨t·tÆtÎtëtDu7u,uuJuUuu†uŽu­uµuÚuÏu»uíuvòu)vv@vGvsvsvsvsv{vÙLix'/'/E/W/^/€/€/’/Ÿ/¯/¥/Ç/Ñ/Ú$qv?O?OSO[OfOlOÛÈg•j1j1Ž1’1±1Ó1ß1æ1ñ1ÿ1 2222$2<2G2W2c2j2u2†2ˆ2™2›2222¥2¥2¯2¯2·2¿2Ç2Ï2Ó2Þ2*3ÜLx‡nÍnÍ€Í•Í¦Í·Í¾ÍÆÍÖÍáÍòÍøÍ*ÎÝ`FZ‚9‚9’9™9›9 9¯9µ9Ê9Ê9Ø9Ø9ä9í9ð9þ9: ::Þ<ùߎߎèŽóŽþŽ <GWß,29111.1G1[1^1d1àÄMzßþßþ ÿÿÿ ÿ%ÿ7ÿ9ÿ=ÿAÿDÿWÿpÿ–ÿŸÿªÿ±ÿÊÿðÿõÿ49@YšÀÀÀØòá4x‰x‰†‰‰™‰ ‰§‰±‰±‰·‰â<%0 D DÁDÇDÐDâDûDEE)Eã„9ú7ú78%8,808F8s8‰8š8£8±8Ã8Ü8Ü8î89999ä 5ohoh‡h™hŸh«h¶hÄhÐhçhòhiii i&i9i?iHiNi`ifiqiyi‡i”iÑiå ŒÐoWoWW›W²W·WÜWâWçWíWûWXXX"X4X4XRX]XpXwX‘X®XºXÕXíX YY!Y)Y6Y?YDYTYbY‚Y‡YY¨YºYÊYÐYÛYäYêY0ZZ Z@Z{ZeZVZ‹ZŽZ³ZB[æX{Í..Ycv“¡§¸¿ÇÝåø ')9IRX]djpvŒ–°¸Òçô÷ÿ$+3Nkox‘™ ¤­¯ÁØæìðòÿÿÿ0礢Çÿÿ€!€3€8€>€A€E€E€h€m€š€†€©€€®€Ñ€ç€Ó€ö€þ€  +:::U„è˜Ìîââëææúõ ""11@@OO^^m|‹‹š©¸#é ¸ˆ¸ˆÆˆÝˆãˆêd§¼îîƒî–î–î°î·îÃîÃîÚîÚîñîñîïïïï6ï8ï8ï<ïëÌÂñ±¸ÃÙÙëö -1=RTm|€€€“¨¨´ºÄÏÝäóõ((:ìP1A0E0EFEREZE^EoE}EƒEE—E¢E¨E«EµEí ®-Ç>Ç>á>ì>ð>ù>???.???Q?c?r??’?¡?¡?¨?¬?µ?Â?É?Ò?Ù?Ý?ý?ý?ý?ý?ý? @ @@@&@.@;@C@K@\@g@l@l@y@@Ž@¥@§@²@¿@Ê@Í@Ó@Ï@ç@þ@AAAA!A!A)A)A;ABAXAXAXA]A]AuAƒAŽA“A“A–A›A›AºAÈAÕA×A×AÛAÝAÝAüA -BBBBBBB*B,B,B/B/B/B/B/B8B>BBBNBnB{B‰BBXCî(rxè‹è‹ö‹ý‹ ŒŒŒï(ntZ&Z&c&m&~&‰&‰&§&ð  +ppp#p'p7p@pRpXpZpZphpnpwpˆp‘pp­p­p­p²pÊpÊpÙpÜpðpqqBqTq_qqquqzqq“q£q¾qÅqÉqÏq×qâqñrÇ8(2^Ø^ØgØgØuØy؀؃؈ØÈ¨Y‡]‡]Ÿ]§]²]Å]¹]÷][^A^6^^^a^v^f^–^›^¸^½^Ò^¿^á^ç^ç^î^_C_&_Z_x_x_x_„_ÉlQh¿-¿-Ù-.ä-.1.M.C.e.}.j.Œ.¥.Å.×.ð.ð.÷.//#/Ê4¦/î/îCîHîNîRîVîuî}îËxÏéçç‚ÿ!‚+‚2‚H‚M‚R‚V‚X‚^‚d‚z‚g‚‰‚¢‚ª‚¼‚߂Ղî‚ú‚Ì€ø2626P6T6X6`6n6q6t6Š66’6¤6¨6¬6´6¼6È6Ý6î6õ6ü6ü6 77ͺ<ÿDÿD/E:E_EAEyE¯E´E´E·EÁEÙEèEêEòEF5FGFTFoFF„FžF¨FªF¯FÆFíFÿF G'GCG9G]GcGcGlGŒG˜G›GG¸G¢GÇGÇGÙGÙGçGñGHH6H6H;H>HTH`HuH™H£H©H¹HáHÐHðHòHII,I"IAIGIVI~ImIII¡I«I¿IÉIÒIéIóIõI JJJ2J8J8J8JAJaJ‰JxJ˜JJ¯J·JâJØJ÷J÷J÷JKK/KÎÄ8¥—2—2Î2Õ2Ý2æ2ñ2ø23333$323<3A3i3n3{3§3¬3¹3Ù3Þ3í34!4&4;4g4o4t4t4‡4š4­4±4Ó4ã4è4è455555(5@5E5H5K5K5x5}5}5Š5Ž5©5Ä5Ò5Ý5ù5ù5ù566666,6C6E6E6R6i6i6y6~6¡6Ä6Ì6Ñ6í6 77)737575757Q7Y7[7[7ƒ7¹7Ϥ8]—ê—ê±êÝêÝêüê ëëë ë2ëLëTë[ë`ë{ëƒëƒëƒë…ë…ë…ë…ë¡ë¡ë¡ë¡ë¸ëºëºëºëºëÕëàëìÐ\æù?f?fUfgfmfxf†f’f©f©f»fÁfÌfÜfçfõfg.gÑÐêÿ‚ÿ‚ƒ!ƒ&ƒ&ƒ2ƒ7ƒ<ƒGƒLƒLƒLƒƒnƒƒ·ƒ·ƒЃéƒ„„ „ „9„R„k„„„‰„‰„¢„»„Ô„í„ï„ï„…!…:…S…S…S…e…Ò H‰H‰Q‰p‰u‰Ó0”œÏíÏíÝíãíçíî'î'î-îÔluŒª&ª&¸&Â&É&à&à&å&ç&ó&ý& '('*':':'?'A'H'z'ÕПÏÏsÏsãs ttîs-t_tEt8tŠttšt¨t·tÆtÎtëtDu7u,uuJuUuu†uŽu­uµuÚuÏu»uíuvòu)vv@vGvsvsvsvsv{vÖ<:E"9"9+969D9P9\9e9n9w9}9‚9×Lix'/'/E/W/^/€/€/’/Ÿ/¯/¥/Ç/Ñ/Ø$qv?O?OSO[OfOlOÙÈg•j1j1Ž1’1±1Ó1ß1æ1ñ1ÿ1 2222$2<2G2W2c2j2u2†2ˆ2™2›2222¥2¥2¯2¯2·2¿2Ç2Ï2Ó2Þ2*3ÚLx‡nÍnÍ€Í•Í¦Í·Í¾ÍÆÍÖÍáÍòÍøÍ*ÎÛ<ùߎߎèŽóŽþŽ <GWÜ`FZ‚9‚9’9™9›9 9¯9µ9Ê9Ê9Ø9Ø9ä9í9ð9þ9: ::Ý,29111.1G1[1^1d1ÞÄMzßþßþ ÿÿÿ ÿ%ÿ7ÿ9ÿ=ÿAÿDÿWÿpÿ–ÿŸÿªÿ±ÿÊÿðÿõÿ49@YšÀÀÀØòß4x‰x‰†‰‰™‰ ‰§‰±‰±‰·‰àô#œ—7—7Ÿ7®7²7¿7Ì7à7ï7 88+8M8u8ƒ8Ÿ8±8É8à8ë8 9*999T9_9z9“9“9®9×9ñ9 ::-:<:<:G:Z:k:~:Ž:›:§:¶:Ó:Ó:Û:Û:Û:ì:ù:;;(;9;=;E;P;h;€;‰;™;¡;¦;Ê;Ú;ê;õ; <<<<<><I<|<–<–<®<½<Å<Ô<Ý<å<÷<=!=)=4=6=F=^=v=Ž=¦=¸=Ï=Ø=á=ó=>> >á<%0 D DÁDÇDÐDâDûDEE)Eâ„9ú7ú78%8,808F8s8‰8š8£8±8Ã8Ü8Ü8î89999ã 5ohoh‡h™hŸh«h¶hÄhÐhçhòhiii i&i9i?iHiNi`ifiqiyi‡i”iÑiä ŒÐoWoWW›W²W·WÜWâWçWíWûWXXX"X4X4XRX]XpXwX‘X®XºXÕXíX YY!Y)Y6Y?YDYTYbY‚Y‡YY¨YºYÊYÐYÛYäYêY0ZZ Z@Z{ZeZVZ‹ZŽZ³ZB[åP­>>8>:>H>N>i>x>‡>–>¤>¯>²>Â>æX{Í..Ycv“¡§¸¿ÇÝåø ')9IRX]djpvŒ–°¸Òçô÷ÿ$+3Nkox‘™ ¤­¯ÁØæìðòÿÿÿ0礢Çÿÿ€!€3€8€>€A€E€E€h€m€š€†€©€€®€Ñ€ç€Ó€ö€þ€  +:::U„è ¸ˆ¸ˆÆˆÝˆãˆéd§¼îîƒî–î–î°î·îÃîÃîÚîÚîñîñîïïïï6ï8ï8ï<ïêÌÂñ±¸ÃÙÙëö +1=RTm|€€€“¨¨´ºÄÏÝäóõ((:ëP1A0E0EFEREZE^EoE}EƒEE—E¢E¨E«EµEì(rxè‹è‹ö‹ý‹ ŒŒŒí(ntZ&Z&c&m&~&‰&‰&§&î  èˆèˆñˆ‰ -‰ñÀ€¬‡_‡_Ÿ_£_¨_·_Â_Î_ï_Ð_þ_``(`Y`<`/`|``ª`¯`»`Ü`½`ë`ð` aa3aIaIaoaoa{aò ^0^0m0†0Œ0ó4‘šPP—PºPÇPÍPÓPÖPôPôltF!F!h!s!v!~!!!‘!œ!œ!Ÿ!¦!­!³!¹!¿!Æ!Ì!Ý!Ý!ß!è!ô!ú!"#"&"."6";";"B"K"\"b"k"v"‡"‡""•"Ÿ"¦"­"µ"»"½"Ë"â"å"ô"######&#/#@#a#r#€#‰##œ#¬#·#·#·#Ë#ß#ï#ò#­$õ8 ê.ê.ø.ÿ. +‰ï˜Ìîââëææúõ ""11@@OO^^m|‹‹š©¸#ðÀ€¬‡_‡_Ÿ_£_¨_·_Â_Î_ï_Ð_þ_``(`Y`<`/`|``ª`¯`»`Ü`½`ë`ð` aa3aIaIaoaoa{añ ^0^0m0†0Œ0ò ®-Ç>Ç>á>ì>ð>ù>???.???Q?c?r??’?¡?¡?¨?¬?µ?Â?É?Ò?Ù?Ý?ý?ý?ý?ý?ý? @ @@@&@.@;@C@K@\@g@l@l@y@@Ž@¥@§@²@¿@Ê@Í@Ó@Ï@ç@þ@AAAA!A!A)A)A;ABAXAXAXA]A]AuAƒAŽA“A“A–A›A›AºAÈAÕA×A×AÛAÝAÝAüA +BBBBBBB*B,B,B/B/B/B/B/B8B>BBBNBnB{B‰BBXCó4‘šPP—PºPÇPÍPÓPÖPôPôltF!F!h!s!v!~!!!‘!œ!œ!Ÿ!¦!­!³!¹!¿!Æ!Ì!Ý!Ý!ß!è!ô!ú!"#"&"."6";";"B"K"\"b"k"v"‡"‡""•"Ÿ"¦"­"µ"»"½"Ë"â"å"ô"######&#/#@#a#r#€#‰##œ#¬#·#·#·#Ë#ß#ï#ò#­$õ8 ê.ê.ø.ÿ. ////%/%/+/ö :>g1g1q1y1~1÷ÐSvvv­v¸vÎvëvúvwLwRwXw`wbwjww‚ww™w¯wÌwÛwÿw-x3x9xAxFxNxcxfxqx}x‚xˆxŽx–xžx¦x¶xÎxÜx yyyy-y/ySyy‡yŒyŒyy¨y³yÐyèyôyüy z zz"z9z;zXzpz|z„z’z’z—zªz·zÁzØzñz {{){K{b{{{‰{‹{¢{¸{¸{Á{Í{ã{ü{||-|1|1|1|8|=|P|[|u|w||||š|§|±|±|Ã|øÜtVVxƒŽ—§¹¿ÅËáÐõ %*M`dj‡—©·¼Êãñú -  ?MYs’™£²¸¾ÄÊà!8CR`o|Œš±½ÂÐìþ$/4:Q\ipp~¬¾¾Æéô(ù€k˜:˜:®:º:º:Ð:Û:Ý:ý:ý:ý:;;;;;;";&;<;<;r;~;; ;·;¼;¿;Ä;Ä;Ä;à;ç;ô;û;<<<$<0<8<=<=<Y<e<n<v<~<Š< <«<Î<Ò<à<è<í<í< =#=-=9=A=F=F=e=q=ƒ=ˆ=¤=°=¿=Ä=Ó=à=å=å=å=å=è=í=í=í= >>*>,>/>4>4>4>>>F>M>U>^>i>o>|>Š>Š>”>>¥>Ú>à>ç>ö>???(?0?0?2?2?7?7?>?D?H?O?S?S?S?S?b?b?‡???”?¯Cú(°C°C¾CÇCÕCÛCû°Ðwlwl•ll©l¿lÔlâlílülmmmm mm%m>m@mEmSm^mkmrm€mü\=PŸ,Ÿ,¹,Þ,À,í, -ÿ,!-6-#-E-^-p-‰-‰--²-²-¼-ý8fpÇNÇNßNîNOOOO O>Oþ0—àŒàŒôŒ),4ÿ0S[&Ù&Ù:ÙBÙOÙYÙlÙT¡²'Q'QAQTQWQaQnQƒQ…Q—Q¡QµQµQ»Q¾QR<˜£88LS_k{€ƒ‡ 26ÞæÞæìæøæH!//[/[C[O[e[Q[t[v[}[ˆ[”[œ[\ˆ[.Î.ÎHÎOÎ\ÎgÎlÎrÎ„ÎŠÎ¢Î¨ÎÆÎÜÎçÎíÎÏÏÏ4Ï6Ï9ÏEÏMÏUÏ]ÏkÏqÏzφφψϚϠϥϥϼϼÏÚÏÚÏíÏúÏÿÏÿÏÐÐ.ÐDÐOÐ]ÐhÐxЅЗÐЧгÐÀÐÂÐÂÐÊÐÏÐÏÐ×ÐÜÐÜÐäÐéÐéÐñÐöÐöÐüÐÑÑÑ Ñ ÑÑÑÑ$Ñ)Ñ)Ñ4Ñ9Ñ9ÑDÑIÑIÑTÑTÑoÑvÑ|ÑÑŠÑѡѮѽÑÄÑÇÑÙÑÛÑáÑõÑÒÒÒÒÒÒ5ÒJÒ\ÒmÒvÒ‡ÒÒ’ÒÒ¯ÒÀÒÏÒÕÒæÒñÒûÒ ÓÓ Ó+Ó1ÓFÓLÓ]ÓhÓnÓ~Ó~ÓŽÓ¡Ó­ÓµÓÅÓÌÓÒÓãÓîÓóÓÔ%Ô3ÔCÔOÔaÔlÔ{Ô}ÔԗԜԣԧԵԿÔÅÔÏÔÕÔàÔæÔèÔõÔÕ Õ%Õ3Õ3Õ9Õ@Õ„×D#°­­¯­Ñ­Ù­Ù­ç­ú­®® ®<®<®<®D®F®F®N®P®P®X®Z®Z®b®b®k®q®v®v®®Ž®’®—®®¢®¢®¢®¢®ª®³®¹®¾®¾®Ã®Ð®é®¯ ¯!¯@¯@¯@¯H¯J¯J¯J¯R¯T¯T¯T¯\¯^¯^¯^¯f¯h¯h¯s¯s¯y¯~¯~¯~¯~¯…¯¯¢¯°¯¾¯È¯È¯È¯Ø¯Ø¯ß¯ã¯é¯°°"°/°X°[°d°k°°‡°°›°›°¦°¬°±°±°±°¸°¾°Ó°Û°á°ì°±±&±,±1±1±8±C±C±H±Z±`±`±`±`±¼±läû¾ä¾äÒäèäöäåå ååå(å*å*å>å@åIåOåOåOåOåWå”"`¬`¬n¬€¬„¬Œ¬”¬Ÿ¬ª¬²¬½¬È¬Í¬ã¬ê¬ñ¬ü¬­ ­­­!­-­8­C­L­T­T­X­­´EnÀEÀEæE÷EüEF F FF(F,F1FFFHFKFOFVFjFnFvF‚F‰FF•F—FŸF­FµF·FºFÓFÛFãFñFõFG B j jºj½jÄjÏjÞjàjëjújújkkkkkk$k-k8k>kGkZk_ktkk‰k‰kŸkŸkÌkÖkàk÷kýkl lllll!l'l,l,l?lMl[lelklplzl„lŽl•l•l¤l²lÍlÓlØlØlmmm3mZm_m_m_mbmimomvm{m{mm‡mŒmŒm£m­m·m½mËmàmæmömnnnnn)n3n9n@n@nBnBnBnGnMnRnVnXn[nfnunxnzn~n~nƒnƒn‘n»n +  ?MYs’™£²¸¾ÄÊà!8CR`o|Œš±½ÂÐìþ$/4:Q\ipp~¬¾¾Æéô(ù€k˜:˜:®:º:º:Ð:Û:Ý:ý:ý:ý:;;;;;;";&;<;<;r;~;; ;·;¼;¿;Ä;Ä;Ä;à;ç;ô;û;<<<$<0<8<=<=<Y<e<n<v<~<Š< <«<Î<Ò<à<è<í<í< =#=-=9=A=F=F=e=q=ƒ=ˆ=¤=°=¿=Ä=Ó=à=å=å=å=å=è=í=í=í= >>*>,>/>4>4>4>>>F>M>U>^>i>o>|>Š>Š>”>>¥>Ú>à>ç>ö>???(?0?0?2?2?7?7?>?D?H?O?S?S?S?S?b?b?‡???”?¯Cú(°C°C¾CÇCÕCÛCû°Ðwlwl•ll©l¿lÔlâlílülmmmm mm%m>m@mEmSm^mkmrm€mü\=PŸ,Ÿ,¹,Þ,À,í, -ÿ,!-6-#-E-^-p-‰-‰--²-²-¼-ý8fpÇNÇNßNîNOOOO O>Oþ0—àŒàŒôŒ),4ÿT¡²'Q'QAQTQWQaQnQƒQ…Q—Q¡QµQµQ»Q¾QR<˜£88LS_k{€ƒ‡0S[&Ù&Ù:ÙBÙOÙYÙlÙ 26ÞæÞæìæøæH!//[/[C[O[e[Q[t[v[}[ˆ[”[œ[\ˆ[.Î.ÎHÎOÎ\ÎgÎlÎrÎ„ÎŠÎ¢Î¨ÎÆÎÜÎçÎíÎÏÏÏ4Ï6Ï9ÏEÏMÏUÏ]ÏkÏqÏzφφψϚϠϥϥϼϼÏÚÏÚÏíÏúÏÿÏÿÏÐÐ.ÐDÐOÐ]ÐhÐxЅЗÐЧгÐÀÐÂÐÂÐÊÐÏÐÏÐ×ÐÜÐÜÐäÐéÐéÐñÐöÐöÐüÐÑÑÑ Ñ ÑÑÑÑ$Ñ)Ñ)Ñ4Ñ9Ñ9ÑDÑIÑIÑTÑTÑoÑvÑ|ÑÑŠÑѡѮѽÑÄÑÇÑÙÑÛÑáÑõÑÒÒÒÒÒÒ5ÒJÒ\ÒmÒvÒ‡ÒÒ’ÒÒ¯ÒÀÒÏÒÕÒæÒñÒûÒ ÓÓ Ó+Ó1ÓFÓLÓ]ÓhÓnÓ~Ó~ÓŽÓ¡Ó­ÓµÓÅÓÌÓÒÓãÓîÓóÓÔ%Ô3ÔCÔOÔaÔlÔ{Ô}ÔԗԜԣԧԵԿÔÅÔÏÔÕÔàÔæÔèÔõÔÕ Õ%Õ3Õ3Õ9Õ@Õ„×D#°­­¯­Ñ­Ù­Ù­ç­ú­®® ®<®<®<®D®F®F®N®P®P®X®Z®Z®b®b®k®q®v®v®®Ž®’®—®®¢®¢®¢®¢®ª®³®¹®¾®¾®Ã®Ð®é®¯ ¯!¯@¯@¯@¯H¯J¯J¯J¯R¯T¯T¯T¯\¯^¯^¯^¯f¯h¯h¯s¯s¯y¯~¯~¯~¯~¯…¯¯¢¯°¯¾¯È¯È¯È¯Ø¯Ø¯ß¯ã¯é¯°°"°/°X°[°d°k°°‡°°›°›°¦°¬°±°±°±°¸°¾°Ó°Û°á°ì°±±&±,±1±1±8±C±C±H±Z±`±`±`±`±¼±läû¾ä¾äÒäèäöäåå ååå(å*å*å>å@åIåOåOåOåOåWå”"`¬`¬n¬€¬„¬Œ¬”¬Ÿ¬ª¬²¬½¬È¬Í¬ã¬ê¬ñ¬ü¬­ ­­­!­-­8­C­L­T­T­X­­´EnÀEÀEæE÷EüEF F FF(F,F1FFFHFKFOFVFjFnFvF‚F‰FF•F—FŸF­FµF·FºFÓFÛFãFñFõFG B j jºj½jÄjÏjÞjàjëjújújkkkkkk$k-k8k>kGkZk_ktkk‰k‰kŸkŸkÌkÖkàk÷kýkl lllll!l'l,l,l?lMl[lelklplzl„lŽl•l•l¤l²lÍlÓlØlØlmmm3mZm_m_m_mbmimomvm{m{mm‡mŒmŒm£m­m·m½mËmàmæmömnnnnn)n3n9n@n@nBnBnBnGnMnRnVnXn[nfnunxnzn~n~nƒnƒn‘n»n hú/g/gEgPg[gigtg}gŽg—g¨g®gºgÑgÑgãgôgh hh!hoh  %IssŸs«s·sÇsßsåsóst tt,tYtst€ttt£t¥t¶tØtßtåtótûtuu"u(uKu $bw=w==–=©=Ñ=Ü=é=÷=ë= > >,>4>C>}>>¬>´>´>é>?î>"??1?7?F?[?]?h?p?p?‘?–?Ÿ?«?³?Ñ?¾?@ì?à?@2@@R@j@W@Œ@y@­@›@¼@Î@Ä@å@å@å@ì@AAA Ð1ˆ“ˆ“œ“œ“Â“Â“â“æ“ë“ë“ë“÷“ü“ ””””””/”6”E”S”\”l”u”w”w”w”w”~”…”Œ”“”𔡔¨”¯”¯”±”±”·”¼”Õ \ No newline at end of file diff --git a/src/Compiler/Compiler.PRJ b/src/Compiler/Compiler.PRJ index dffac601..3b2af16e 100755 --- a/src/Compiler/Compiler.PRJ +++ b/src/Compiler/Compiler.PRJ @@ -13,7 +13,7 @@ #exe {Option(OPTf_KEEP_PRIVATE,OFF);}; #include "Templates" #include "CExts" -CCmpGlbls cmp; +CCompGlbls cmp; #include "CInit" #include "CExcept" #include "LexLib" diff --git a/src/Compiler/CompilerB.HH b/src/Compiler/CompilerB.HH index 44eded0c..93cf0cad 100755 --- a/src/Compiler/CompilerB.HH +++ b/src/Compiler/CompilerB.HH @@ -10,7 +10,7 @@ public extern I64 ExePutS2(U8 *buf,U8 *filename=NULL,I64 ccf_flags=0); public _extern _LAST_FUN I64 LastFun(I64 argc,I64 *argv); public extern I64 RunFile(U8 *name,I64 ccf_flags=0,...); public extern I64 RunFile2(U8 *name,I64 ccf_flags=0,...); -public extern CCmpGlbls cmp; +public extern CCompGlbls cmp; #help_index "Compiler/Directive" #help_file "::/Doc/Directives" @@ -25,34 +25,34 @@ public extern Bool Trace(Bool val=ON); #help_index "Compiler/Lex" #help_file "::/Doc/Lex" extern U0 ClassMemberLstDel(CHashClass *c); -public extern U0 CmpCtrlDel(CCmpCtrl *cc); -public extern CCmpCtrl *CmpCtrlNew(U8 *buf=NULL,I64 flags=0,U8 *filename=NULL); -public extern I64 CmpCtrlSize(CCmpCtrl *cc); +public extern U0 CompCtrlDel(CCompCtrl *cc); +public extern CCompCtrl *CompCtrlNew(U8 *buf=NULL,I64 flags=0,U8 *filename=NULL); +public extern I64 CompCtrlSize(CCompCtrl *cc); public extern I64 IsLexExpression2Bin( - CCmpCtrl *cc,U8 **machine_code); //FALSE=no err -public extern I64 Lex(CCmpCtrl *cc); -public extern U0 LexAttachDoc(CCmpCtrl *cc,CLexFile *tmpf=NULL, + CCompCtrl *cc,U8 **machine_code); //FALSE=no err +public extern I64 Lex(CCompCtrl *cc); +public extern U0 LexAttachDoc(CCompCtrl *cc,CLexFile *tmpf=NULL, CDoc *doc=NULL,U8 *abs_filename=NULL,CDocEntry *doc_e=NULL,I64 col=0); -public extern CD2I32 *LexD2I32(CCmpCtrl *cc,CD2I32 *p); -public extern CD3I32 *LexD3I32(CCmpCtrl *cc,CD3I32 *p); -public extern U0 LexExcept(CCmpCtrl *cc,U8 *str=NULL); -public extern I64 LexExpression(CCmpCtrl *cc); -public extern U8 *LexExpression2Bin(CCmpCtrl *cc,I64 *_type=NULL); -public extern F64 LexExpressionF64(CCmpCtrl *cc); -public extern I64 LexExpressionI64(CCmpCtrl *cc); -public extern U8 *LexExtStr(CCmpCtrl *cc,I64 *_size=NULL,Bool lex_next=TRUE); -public extern U8 *LexFirstRemove(CCmpCtrl *cc,U8 *marker,I64 _len=NULL); -public extern I64 LexGetChar(CCmpCtrl *cc); -public extern U0 LexPopNoRestore(CCmpCtrl *cc); -public extern U0 LexPopRestore(CCmpCtrl *cc); -public extern U0 LexPush(CCmpCtrl *cc); -public extern U0 LexPutLine(CCmpCtrl *cc,U8 *start); -public extern U0 LexPutPos(CCmpCtrl *cc); -public extern U0 LexPutToken(CCmpCtrl *cc); -public extern U0 LexSkipEol(CCmpCtrl *cc); +public extern CD2I32 *LexD2I32(CCompCtrl *cc,CD2I32 *p); +public extern CD3I32 *LexD3I32(CCompCtrl *cc,CD3I32 *p); +public extern U0 LexExcept(CCompCtrl *cc,U8 *str=NULL); +public extern I64 LexExpression(CCompCtrl *cc); +public extern U8 *LexExpression2Bin(CCompCtrl *cc,I64 *_type=NULL); +public extern F64 LexExpressionF64(CCompCtrl *cc); +public extern I64 LexExpressionI64(CCompCtrl *cc); +public extern U8 *LexExtStr(CCompCtrl *cc,I64 *_size=NULL,Bool lex_next=TRUE); +public extern U8 *LexFirstRemove(CCompCtrl *cc,U8 *marker,I64 _len=NULL); +public extern I64 LexGetChar(CCompCtrl *cc); +public extern U0 LexPopNoRestore(CCompCtrl *cc); +public extern U0 LexPopRestore(CCompCtrl *cc); +public extern U0 LexPush(CCompCtrl *cc); +public extern U0 LexPutLine(CCompCtrl *cc,U8 *start); +public extern U0 LexPutPos(CCompCtrl *cc); +public extern U0 LexPutToken(CCompCtrl *cc); +public extern U0 LexSkipEol(CCompCtrl *cc); public extern U8 *LexStatement2Bin( - CCmpCtrl *cc,I64 *_type,I64 cmp_flags=CMPF_PRS_SEMICOLON); -public extern U0 LexWarn(CCmpCtrl *cc,U8 *str=NULL); + CCompCtrl *cc,I64 *_type,I64 cmp_flags=CMPF_PRS_SEMICOLON); +public extern U0 LexWarn(CCompCtrl *cc,U8 *str=NULL); extern CMemberLst *MemberClassBaseFind( CHashClass *needle_class,CHashClass *haystack_class); public extern CMemberLst *MemberFind(U8 *needle_str,CHashClass *haystack_class); @@ -60,10 +60,10 @@ extern U0 MemberLstDel(CMemberLst *tmpm); public extern I64 MemberMetaData(U8 *st,CMemberLst *ml); public extern CMemberLstMeta *MemberMetaFind(U8 *st,CMemberLst *ml); public extern CHashClass *OptClassFwd(CHashClass *tmpc); -public extern I64 ParseKeyWord(CCmpCtrl *cc); +public extern I64 ParseKeyWord(CCompCtrl *cc); #help_index "Compiler;Cmd Line (Typically)" -extern I64 Cmp(U8 *filename, +extern I64 Comp(U8 *filename, U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv_let=0); #help_index "Debugging/Unassemble" diff --git a/src/Compiler/Lex.HC b/src/Compiler/Lex.HC index 7fa4edce..c9138e87 100755 --- a/src/Compiler/Lex.HC +++ b/src/Compiler/Lex.HC @@ -1,4 +1,4 @@ -CLexFile *LexFilePush(CCmpCtrl *cc) +CLexFile *LexFilePush(CCompCtrl *cc) {//#include file push. CLexFile *res=CAlloc(sizeof(CLexFile)); if (res->next=cc->lex_include_stk) @@ -8,7 +8,7 @@ CLexFile *LexFilePush(CCmpCtrl *cc) return cc->lex_include_stk=res; } -CLexFile *LexFilePop(CCmpCtrl *cc) +CLexFile *LexFilePop(CCompCtrl *cc) {//#include file pop. CLexFile *tmpf; if (tmpf=cc->lex_include_stk) { @@ -25,12 +25,12 @@ CLexFile *LexFilePop(CCmpCtrl *cc) return cc->lex_include_stk; } -CCmpCtrl *CmpCtrlNew(U8 *buf=NULL,I64 flags=0,U8 *filename=NULL) -{//MAlloc and Init CCmpCtrl. -//Frees buf in $LK,"CmpCtrlDel",A="MN:CmpCtrlDel"$ unless $LK,"CCF_DONT_FREE_BUF",A="MN:CCF_DONT_FREE_BUF"$ flag is set. +CCompCtrl *CompCtrlNew(U8 *buf=NULL,I64 flags=0,U8 *filename=NULL) +{//MAlloc and Init CCompCtrl. +//Frees buf in $LK,"CompCtrlDel",A="MN:CompCtrlDel"$ unless $LK,"CCF_DONT_FREE_BUF",A="MN:CCF_DONT_FREE_BUF"$ flag is set. //FileName is for error reporting. If files are #included, - //new names are used. See $LK,"Psalmody CmpCtrlNew",A="FF:::/Apps/Psalmody/PsalmodyFile.HC,CmpCtrlNew"$. - CCmpCtrl *cc=CAlloc(sizeof(CCmpCtrl)); + //new names are used. See $LK,"Psalmody CompCtrlNew",A="FF:::/Apps/Psalmody/PsalmodyFile.HC,CompCtrlNew"$. + CCompCtrl *cc=CAlloc(sizeof(CCompCtrl)); CLexFile *tmpf; QueueInit(cc); cc->flags=flags; @@ -55,8 +55,8 @@ CCmpCtrl *CmpCtrlNew(U8 *buf=NULL,I64 flags=0,U8 *filename=NULL) return cc; } -U0 CmpCtrlDel(CCmpCtrl *cc) -{//Free CCmpCtrl. +U0 CompCtrlDel(CCompCtrl *cc) +{//Free CCompCtrl. while (LexFilePop(cc)); LinkedLstDel(cc->lex_prs_stk); LinkedLstDel(cc->htc.next); @@ -67,8 +67,8 @@ U0 CmpCtrlDel(CCmpCtrl *cc) Free(cc); } -I64 CmpCtrlSize(CCmpCtrl *cc) -{//Mem size of CCmpCtrl and its members. +I64 CompCtrlSize(CCompCtrl *cc) +{//Mem size of CCompCtrl and its members. CLexFile *tmpf=cc->lex_include_stk; I64 res=0; while (tmpf) { @@ -90,7 +90,7 @@ I64 CmpCtrlSize(CCmpCtrl *cc) U32 lex_zeros=0; -Bool LexDollar(CCmpCtrl *cc,CDoc *doc,CDocEntry *doc_e) +Bool LexDollar(CCompCtrl *cc,CDoc *doc,CDocEntry *doc_e) { U8 *st; if (cc->flags&CCF_IN_QUOTES) { @@ -104,7 +104,7 @@ Bool LexDollar(CCmpCtrl *cc,CDoc *doc,CDocEntry *doc_e) return FALSE; } -I64 LexGetChar(CCmpCtrl *cc) +I64 LexGetChar(CCompCtrl *cc) {//Get one char from stream. Allow put-back one. U8 *ptr,*src; CLexFile *tmpf; @@ -261,14 +261,14 @@ lgc_done: return cc->last_U16; } -U0 LexSkipEol(CCmpCtrl *cc) +U0 LexSkipEol(CCompCtrl *cc) {//$LK,"LexGetChar",A="MN:LexGetChar"$ to NULL until end-of-line. I64 ch; do ch=$WW,0$LexGetChar(cc); while (Bt(char_bmp_non_eol,ch)); } -U8 *LexFirstRemove(CCmpCtrl *cc,U8 *marker,I64 _len=NULL) +U8 *LexFirstRemove(CCompCtrl *cc,U8 *marker,I64 _len=NULL) {//$LK,"LexGetChar",A="MN:LexGetChar"$() chars making str until marker. U8 *res,*ptr; CQueueVectU8 *tmpv=QueueVectU8New; @@ -290,7 +290,7 @@ U8 *LexFirstRemove(CCmpCtrl *cc,U8 *marker,I64 _len=NULL) return res; } -U0 LexIncludeStr(CCmpCtrl *cc,U8 *abs_filename,U8 *src,Bool actual_file) +U0 LexIncludeStr(CCompCtrl *cc,U8 *abs_filename,U8 *src,Bool actual_file) { LexBackupLastChar(cc); CLexFile *tmpf=LexFilePush(cc); @@ -322,7 +322,7 @@ CDoc *LexDocRead(U8 *abs_filename,I64 flags) I64 cmp_type_flags_src_code[(DOCT_TYPES_NUM+63)/64]={ 1<last_U16=0; } -I64 LexInStr(CCmpCtrl *cc,U8 *buf,I64 size,Bool *done) +I64 LexInStr(CCompCtrl *cc,U8 *buf,I64 size,Bool *done) { I64 i=0,j,k,ch; *done=TRUE; @@ -438,7 +438,7 @@ I64 LexInStr(CCmpCtrl *cc,U8 *buf,I64 size,Bool *done) return i; } -I64 Lex(CCmpCtrl *cc) +I64 Lex(CCompCtrl *cc) {//Fetch next token. I64 i,j,k,l,ch; CHash *tmph; diff --git a/src/Compiler/LexLib.HC b/src/Compiler/LexLib.HC index d9975dcd..ec61350f 100755 --- a/src/Compiler/LexLib.HC +++ b/src/Compiler/LexLib.HC @@ -1,4 +1,4 @@ -U0 LexBackupLastChar(CCmpCtrl *cc) +U0 LexBackupLastChar(CCompCtrl *cc) { CLexFile *tmpf=cc->lex_include_stk; tmpf->buf_ptr=cc->cur_buf_ptr; @@ -9,7 +9,7 @@ U0 LexBackupLastChar(CCmpCtrl *cc) tmpf->last_U16=0; } -U0 LexPush(CCmpCtrl *cc) +U0 LexPush(CCompCtrl *cc) {//Create token-stream save point. CLexFile *tmpf; LexBackupLastChar(cc); @@ -20,7 +20,7 @@ U0 LexPush(CCmpCtrl *cc) cc->lex_prs_stk=tmpf; } -U0 LexPopRestore(CCmpCtrl *cc) +U0 LexPopRestore(CCompCtrl *cc) {//Restore token-stream saved-point. //Bad things can happen if you cross an #include file boundary. CLexFile *tmpf=cc->lex_prs_stk; @@ -35,7 +35,7 @@ U0 LexPopRestore(CCmpCtrl *cc) Free(tmpf); } -U0 LexPopNoRestore(CCmpCtrl *cc) +U0 LexPopNoRestore(CCompCtrl *cc) {//Don't restore token-stream saved-point. CLexFile *tmpf=cc->lex_prs_stk; cc->lex_prs_stk=tmpf->next; @@ -100,7 +100,7 @@ CMemberLst *MemberClassBaseFind(CHashClass *needle_class, return NULL; } -U0 MemberAdd(CCmpCtrl *cc,CMemberLst *tmpm,CHashClass *tmpc,I64 mode) +U0 MemberAdd(CCompCtrl *cc,CMemberLst *tmpm,CHashClass *tmpc,I64 mode) { U8 *st=tmpm->str; CMemberLst **tmpm1,*tmpm2; @@ -245,7 +245,7 @@ I64 MemberLstSize(CHashClass *tmpc) return res; } -U8 *LexExtStr(CCmpCtrl *cc,I64 *_size=NULL,Bool lex_next=TRUE) +U8 *LexExtStr(CCompCtrl *cc,I64 *_size=NULL,Bool lex_next=TRUE) {//Lex $LK,"TK_STR",A="MN:TK_STR"$'s to one combined str. _size includes terminator. I64 len=cc->cur_str_len,len1,len2; U8 *st=cc->cur_str,*st1,*st2; diff --git a/src/Compiler/OptLib.HC b/src/Compiler/OptLib.HC index b3fca952..b508b63f 100755 --- a/src/Compiler/OptLib.HC +++ b/src/Compiler/OptLib.HC @@ -80,7 +80,7 @@ CIntermediateCode *OptLead1(CIntermediateCode *tmpi) return tmpi; } -I64 CmpOffset2Reg(I64 offset,COptReg *reg_offsets) +I64 CompOffset2Reg(I64 offset,COptReg *reg_offsets) { I64 i; for (i=0;iptr_stars_cnt) @@ -525,21 +525,21 @@ I64 CmpRawTypePointed(CHashClass *tmpc) return 0; } -U0 CmpMinTypePointed(CIntermediateCode *tmpi,I64 pt1) +U0 CompMinTypePointed(CIntermediateCode *tmpi,I64 pt1) { I64 pt; if ((pt=tmpi->arg1_type_pointed_to) && pt!=RT_F64 && 0arg1_type_pointed_to=pt; } -U0 CmpF1PushPop(CIntermediateCode *tmpi,CIntermediateCode *tmpi2) +U0 CompF1PushPop(CIntermediateCode *tmpi,CIntermediateCode *tmpi2) { if (intermediate_code_table[tmpi2->ic_code].fpop|| tmpi2->ic_flags&ICF_RES_TO_F64) Bts(&tmpi->ic_flags,ICf_DONT_PUSH_FLOAT0); } -U0 CmpF2PushPop(CIntermediateCode *tmpi, +U0 CompF2PushPop(CIntermediateCode *tmpi, CIntermediateCode *tmpi1,CIntermediateCode *tmpi2) { if ((tmpi2->ic_code==IC_MOV || tmpi2->ic_code==IC_IMM_F64) && diff --git a/src/Compiler/OptPass012.HC b/src/Compiler/OptPass012.HC index c08f7b95..2e2accee 100755 --- a/src/Compiler/OptPass012.HC +++ b/src/Compiler/OptPass012.HC @@ -20,7 +20,7 @@ logic. 3-Arg comparisons are established. */ -CIntermediateCode *OptPass012(CCmpCtrl *cc) +CIntermediateCode *OptPass012(CCompCtrl *cc) {/*Simplify CONST arithmetic. Sets the class throughout Expression trees. Returns the type of an Expression for use diff --git a/src/Compiler/OptPass3.HC b/src/Compiler/OptPass3.HC index a341370a..41c8ed15 100755 --- a/src/Compiler/OptPass3.HC +++ b/src/Compiler/OptPass3.HC @@ -1,4 +1,4 @@ -U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) +U0 OptPass3(CCompCtrl *cc,COptReg *reg_offsets) { CHashClass *tmpc,*tmpc1,*tmpc2; CCodeMisc *lb; @@ -73,7 +73,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) tmpc2=cmp.internal_types[RT_I64]; else tmpc2=tmpi->t.arg2_class; - tmpi->arg2.type=MDF_STK+CmpRawType(tmpc2); + tmpi->arg2.type=MDF_STK+CompRawType(tmpc2); tmpi->ic_flags|=ICF_ARG2_WAS_STK; case IS_1_ARG: tmpi1=ParsePop(ps); @@ -83,15 +83,15 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) tmpc1=cmp.internal_types[RT_I64]; else tmpc1=tmpi->t.arg1_class; - tmpi->arg1.type=MDF_STK+CmpRawType(tmpc1); - tmpi->arg1_type_pointed_to=CmpRawTypePointed(tmpc1); + tmpi->arg1.type=MDF_STK+CompRawType(tmpc1); + tmpi->arg1_type_pointed_to=CompRawTypePointed(tmpc1); tmpi->ic_flags|=ICF_ARG1_WAS_STK; break; case IS_0_ARG: //nobound switch break; } if (intermediate_code_table[code].res_cnt) { - tmpi->res.type=MDF_STK+CmpRawType(tmpc); + tmpi->res.type=MDF_STK+CompRawType(tmpc); tmpi->ic_flags|=ICF_RES_WAS_STK; ParsePush(ps,tmpi); } @@ -123,7 +123,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) tmpi->arg1.reg=tmpi1->arg1.reg; tmpi->arg1.disp=tmpi1->arg1.disp; tmpi->arg1.type=MDF_DISP+tmpi->res.type.raw_type; - tmpi->arg1_type_pointed_to=CmpRawTypePointed(tmpc); + tmpi->arg1_type_pointed_to=CompRawTypePointed(tmpc); tmpi->ic_code=IC_MOV; OptFree(tmpi1); if (tmpi->arg1.reg==REG_RBP) @@ -139,7 +139,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) tmpi->arg1.reg=tmpil2->arg1.reg; tmpi->arg1.disp=tmpi->ic_data; tmpi->arg1.type=MDF_DISP+tmpi->res.type.raw_type; - tmpi->arg1_type_pointed_to=CmpRawTypePointed(tmpc); + tmpi->arg1_type_pointed_to=CompRawTypePointed(tmpc); tmpi->ic_code=IC_MOV; OptFree(tmpil2); OptFree(tmpil1); @@ -150,7 +150,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) case IC__MM: case IC_PP_: case IC_MM_: - CmpMinTypePointed(tmpi,CmpRawTypePointed(tmpi->t.arg1_class)); + CompMinTypePointed(tmpi,CompRawTypePointed(tmpi->t.arg1_class)); case IC_DEREF_PP: case IC_DEREF_MM: if (tmpi1->ic_code==IC_LEA && tmpi1->arg1.type&MDF_DISP && @@ -166,13 +166,13 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) case IC_MUL: case IC_DIV: if (tmpc->raw_type==RT_F64) { - CmpF2PushPop(tmpi,tmpi1,tmpi2); + CompF2PushPop(tmpi,tmpi1,tmpi2); break; } break; case IC_ADD: if (tmpc->raw_type==RT_F64) { - CmpF2PushPop(tmpi,tmpi1,tmpi2); + CompF2PushPop(tmpi,tmpi1,tmpi2); break; } if (OptFixupBinaryOp2(&tmpi1,&tmpi2)) { @@ -202,7 +202,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) break; case IC_SUB: if (tmpc->raw_type==RT_F64) { - CmpF2PushPop(tmpi,tmpi1,tmpi2); + CompF2PushPop(tmpi,tmpi1,tmpi2); break; } if (tmpi2->ic_code==IC_IMM_I64) { @@ -218,14 +218,14 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) case IC_GREATER: case IC_LESS_EQU: if (tmpi->ic_flags&ICF_USE_F64) - CmpF2PushPop(tmpi,tmpi1,tmpi2); + CompF2PushPop(tmpi,tmpi1,tmpi2); break; case IC_MUL_EQU: case IC_DIV_EQU: case IC_ADD_EQU: case IC_SUB_EQU: if (tmpc->raw_type==RT_F64) - CmpF1PushPop(tmpi,tmpi2); + CompF1PushPop(tmpi,tmpi2); case IC_ASSIGN_PP: case IC_ASSIGN_MM: case IC_ASSIGN: @@ -244,7 +244,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) break; } tmpi->arg1_type_pointed_to=tmpi->res.type.raw_type; - CmpMinTypePointed(tmpi,CmpRawTypePointed(tmpi->t.arg1_class)); + CompMinTypePointed(tmpi,CompRawTypePointed(tmpi->t.arg1_class)); break; case IC_RETURN_VAL: case IC_RETURN_VAL2: @@ -264,7 +264,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) case IC_TAN: case IC_ATAN: if (tmpc->raw_type==RT_F64) - CmpF1PushPop(tmpi,tmpi1); + CompF1PushPop(tmpi,tmpi1); break; case IC_NOBOUND_SWITCH: case IC_SWITCH: @@ -367,14 +367,14 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets) mv[i].score++; break; } - tmpi->arg1_type_pointed_to=CmpRawType(tmpc); + tmpi->arg1_type_pointed_to=CompRawType(tmpc); goto here1; case IC_BR_LESS: case IC_BR_GREATER_EQU: case IC_BR_GREATER: case IC_BR_LESS_EQU: if (tmpi->ic_flags&ICF_USE_F64) - CmpF2PushPop(tmpi,tmpi1,tmpi2); + CompF2PushPop(tmpi,tmpi1,tmpi2); case IC_BR_EQU_EQU2...IC_BR_LESS_EQU2: case IC_BR_CARRY: case IC_BR_NOT_CARRY: diff --git a/src/Compiler/OptPass4.HC b/src/Compiler/OptPass4.HC index 9b75eb55..340800c3 100755 --- a/src/Compiler/OptPass4.HC +++ b/src/Compiler/OptPass4.HC @@ -84,7 +84,7 @@ Bool OptIC4(CIntermediateCode *tmpi) tmpil1->arg1.type=tmpil2->arg1.type&MDG_MASK+ MinI64(tmpil1->arg1.type.raw_type, MinI64(tmpil2->res.type.raw_type,tmpil2->arg1.type.raw_type)); - CmpMinTypePointed(tmpil1,tmpil2->arg1_type_pointed_to); + CompMinTypePointed(tmpil1,tmpil2->arg1_type_pointed_to); tmpil1->arg1.reg=tmpil2->arg1.reg; tmpil1->arg1.disp=tmpil2->arg1.disp; tmpil1->ic_flags|=tmpil2->ic_flags&ICG_NO_CVT_MASK; @@ -130,7 +130,7 @@ Bool OptIC4(CIntermediateCode *tmpi) return FALSE; } -U0 OptPass4(CCmpCtrl *cc,COptReg *reg_offsets,I64 *_type) +U0 OptPass4(CCompCtrl *cc,COptReg *reg_offsets,I64 *_type) { CHashClass *tmpc,*tmpc1,*tmpc2; CIntermediateCode *tmpi,*tmpi1,*tmpi2,*tmpil1,*tmpil2,*tmpil3, @@ -195,7 +195,7 @@ U0 OptPass4(CCmpCtrl *cc,COptReg *reg_offsets,I64 *_type) break; case IC_MOV: if (tmpi->arg1.type&MDF_DISP && tmpi->arg1.reg==REG_RBP) { - i=CmpOffset2Reg(tmpi->arg1.disp,reg_offsets); + i=CompOffset2Reg(tmpi->arg1.disp,reg_offsets); if (i>=0) { tmpi->arg1.type=MDF_REG+tmpi->arg1.type.raw_type; tmpi->arg1.reg=i; @@ -206,7 +206,7 @@ U0 OptPass4(CCmpCtrl *cc,COptReg *reg_offsets,I64 *_type) case IC_DEREF: if (tmpi1->ic_code==IC_LEA) { if (tmpi1->arg1.type&MDF_DISP && tmpi1->arg1.reg==REG_RBP) { - i=CmpOffset2Reg(tmpi1->arg1.disp,reg_offsets); + i=CompOffset2Reg(tmpi1->arg1.disp,reg_offsets); if (i>=0) { tmpi->ic_flags|=tmpi1->ic_flags; tmpi->ic_code=IC_REG; @@ -242,7 +242,7 @@ U0 OptPass4(CCmpCtrl *cc,COptReg *reg_offsets,I64 *_type) case IC_MM_: if (tmpi1->ic_code==IC_LEA) { if (tmpi1->arg1.type&MDF_DISP && tmpi1->arg1.reg==REG_RBP) { - i=CmpOffset2Reg(tmpi1->arg1.disp,reg_offsets); + i=CompOffset2Reg(tmpi1->arg1.disp,reg_offsets); if (i>=0) { tmpi->ic_flags|=tmpi1->ic_flags; tmpi->arg1.type=MDF_REG+tmpi->arg1.type.raw_type; @@ -316,7 +316,7 @@ p4_sib: } else if (tmpi1->ic_code==IC_LEA && tmpi1->arg1.type&MDF_DISP) { if (tmpi1->arg1.reg==REG_RBP && - CmpOffset2Reg(tmpi1->arg1.disp,reg_offsets)>=0) + CompOffset2Reg(tmpi1->arg1.disp,reg_offsets)>=0) break; if (tmpi2->ic_code==IC_MOV && tmpi2->arg1.type==MDF_REG+RT_I64 || tmpi2->ic_code==IC_REG) { @@ -364,7 +364,7 @@ p4_sib: if (tmpi1->arg1.type&(MDF_DISP|MDF_SIB)) { tmpi2=tmpi->next; if (tmpi1->arg1.type&MDF_DISP && tmpi1->arg1.reg==REG_RBP) { - i=CmpOffset2Reg(tmpi1->arg1.disp,reg_offsets); + i=CompOffset2Reg(tmpi1->arg1.disp,reg_offsets); if (i>=0) { tmpi->ic_flags|=tmpi1->ic_flags; tmpi->arg1.type=MDF_REG+tmpi->arg1.type.raw_type; @@ -394,7 +394,7 @@ p4_sib: tmpi2->arg2.type=tmpi->arg1.type; tmpi2->arg2.reg=tmpi->arg1.reg; tmpi2->arg2.disp=tmpi->arg1.disp; - CmpMinTypePointed(tmpi2,tmpi->arg1_type_pointed_to); + CompMinTypePointed(tmpi2,tmpi->arg1_type_pointed_to); } tmpi->ic_flags|=ICF_BY_VAL; } diff --git a/src/Compiler/OptPass5.HC b/src/Compiler/OptPass5.HC index 56b485d3..bc0d7cdf 100755 --- a/src/Compiler/OptPass5.HC +++ b/src/Compiler/OptPass5.HC @@ -1,4 +1,4 @@ -U0 OptPass5(CCmpCtrl *cc) +U0 OptPass5(CCompCtrl *cc) { CIntermediateCode *tmpi,*tmpi1; I64 code,i; @@ -70,7 +70,7 @@ U0 OptPass5(CCmpCtrl *cc) tmpi->arg1.type=tmpi1->arg1.type&MDG_MASK+ MinI64(tmpi->arg1.type.raw_type, MinI64(tmpi1->res.type.raw_type,tmpi1->arg1.type.raw_type)); - CmpMinTypePointed(tmpi,tmpi1->arg1_type_pointed_to); + CompMinTypePointed(tmpi,tmpi1->arg1_type_pointed_to); tmpi->arg1.reg=tmpi1->arg1.reg; tmpi->arg1.disp=tmpi1->arg1.disp; tmpi->ic_flags|=tmpi1->ic_flags&ICG_NO_CVT_MASK; diff --git a/src/Compiler/OptPass6.HC b/src/Compiler/OptPass6.HC index a8443c2e..4b470caf 100755 --- a/src/Compiler/OptPass6.HC +++ b/src/Compiler/OptPass6.HC @@ -25,7 +25,7 @@ Bool OptIC6(CIntermediateCode *tmpi) return FALSE; } -U0 OptPass6Lag(CCmpCtrl *cc,CPrsStk *ps,CIntermediateCode *tmpi, +U0 OptPass6Lag(CCompCtrl *cc,CPrsStk *ps,CIntermediateCode *tmpi, I64 *_stk_ptr,I64 reg_stk_size,I64 *_clobbered_reg_mask) { I64 stk_ptr=*_stk_ptr,code, @@ -93,7 +93,7 @@ U0 OptPass6Lag(CCmpCtrl *cc,CPrsStk *ps,CIntermediateCode *tmpi, *_clobbered_reg_mask=clobbered_reg_mask; } -U0 OptPass6(CCmpCtrl *cc) +U0 OptPass6(CCompCtrl *cc) { CIntermediateCode *tmpi,*tmpi_next,*tmpil1,*tmpil2,*old_tmpil2; I64 stk_ptr=0,reg_stk_size,clobbered_reg_mask=REGG_CLOBBERED; diff --git a/src/Compiler/OptPass789A.HC b/src/Compiler/OptPass789A.HC index 690111ab..d5e98d43 100755 --- a/src/Compiler/OptPass789A.HC +++ b/src/Compiler/OptPass789A.HC @@ -1,4 +1,4 @@ -I64 OptPass789A(CCmpCtrl *cc,COptReg *reg_offsets,U8 *buf,CDebugInfo **_dbg) +I64 OptPass789A(CCompCtrl *cc,COptReg *reg_offsets,U8 *buf,CDebugInfo **_dbg) {/*cc->pass==7 is first time cc->pass==8 is second time cc->pass==9 is third time @@ -170,63 +170,63 @@ cc->pass==10 is final pass, code is placed into buf. ICFlagBranch(tmpi,rip,0x75850F,buf); break; case IC_BR_EQU_EQU: - ICCmpAndBranch(tmpi,FALSE,rip,0x74840F,0x74840F, + ICCompAndBranch(tmpi,FALSE,rip,0x74840F,0x74840F, 0x74840F,0x74840F,buf,rip2); break; case IC_BR_EQU_EQU2: - ICCmpAndBranch(tmpi,TRUE,rip,0x74840F,0x74840F, + ICCompAndBranch(tmpi,TRUE,rip,0x74840F,0x74840F, 0x74840F,0x74840F,buf,rip2); break; case IC_BR_NOT_EQU: - ICCmpAndBranch(tmpi,FALSE,rip,0x75850F,0x75850F, + ICCompAndBranch(tmpi,FALSE,rip,0x75850F,0x75850F, 0x75850F,0x75850F,buf,rip2); break; case IC_BR_NOT_EQU2: - ICCmpAndBranch(tmpi,TRUE,rip,0x75850F,0x75850F, + ICCompAndBranch(tmpi,TRUE,rip,0x75850F,0x75850F, 0x75850F,0x75850F,buf,rip2); break; case IC_BR_LESS: if (tmpi->ic_flags&ICF_USE_F64) ICFCmpAndBranch(cc,tmpi, rip,0x72820F,0x77870F,buf,rip2); else - ICCmpAndBranch(tmpi,FALSE,rip,0x72820F,0x7C8C0F, + ICCompAndBranch(tmpi,FALSE,rip,0x72820F,0x7C8C0F, 0x77870F,0x7F8F0F,buf,rip2); break; case IC_BR_LESS2: - ICCmpAndBranch(tmpi,TRUE,rip,0x72820F,0x7C8C0F, + ICCompAndBranch(tmpi,TRUE,rip,0x72820F,0x7C8C0F, 0x77870F,0x7F8F0F,buf,rip2); break; case IC_BR_GREATER_EQU: if (tmpi->ic_flags&ICF_USE_F64) ICFCmpAndBranch(cc,tmpi, rip,0x73830F,0x76860F,buf,rip2); else - ICCmpAndBranch(tmpi,FALSE,rip,0x73830F,0x7D8D0F, + ICCompAndBranch(tmpi,FALSE,rip,0x73830F,0x7D8D0F, 0x76860F,0x7E8E0F,buf,rip2); break; case IC_BR_GREATER_EQU2: - ICCmpAndBranch(tmpi,TRUE,rip,0x73830F,0x7D8D0F, + ICCompAndBranch(tmpi,TRUE,rip,0x73830F,0x7D8D0F, 0x76860F,0x7E8E0F,buf,rip2); break; case IC_BR_GREATER: if (tmpi->ic_flags&ICF_USE_F64) ICFCmpAndBranch(cc,tmpi, rip,0x77870F,0x72820F,buf,rip2); else - ICCmpAndBranch(tmpi,FALSE,rip,0x77870F,0x7F8F0F, + ICCompAndBranch(tmpi,FALSE,rip,0x77870F,0x7F8F0F, 0x72820F,0x7C8C0F,buf,rip2); break; case IC_BR_GREATER2: - ICCmpAndBranch(tmpi,TRUE,rip,0x77870F,0x7F8F0F, + ICCompAndBranch(tmpi,TRUE,rip,0x77870F,0x7F8F0F, 0x72820F,0x7C8C0F,buf,rip2); break; case IC_BR_LESS_EQU: if (tmpi->ic_flags&ICF_USE_F64) ICFCmpAndBranch(cc,tmpi, rip,0x76860F,0x73830F,buf,rip2); else - ICCmpAndBranch(tmpi,FALSE,rip,0x76860F,0x7E8E0F, + ICCompAndBranch(tmpi,FALSE,rip,0x76860F,0x7E8E0F, 0x73830F,0x7D8D0F,buf,rip2); break; case IC_BR_LESS_EQU2: - ICCmpAndBranch(tmpi,TRUE,rip,0x76860F,0x7E8E0F, + ICCompAndBranch(tmpi,TRUE,rip,0x76860F,0x7E8E0F, 0x73830F,0x7D8D0F,buf,rip2); break; case IC_BR_BT: @@ -313,9 +313,9 @@ cc->pass==10 is final pass, code is placed into buf. tmpaot->rip=rip; tmpaot->rip2=rip2; if (cc->flags&CCF_AOT_COMPILE) - CmpFixUpAOTAsm(cc,tmpaot); + CompFixUpAOTAsm(cc,tmpaot); else - CmpFixUpJITAsm(cc,tmpaot); + CompFixUpJITAsm(cc,tmpaot); cnt=tmpi->ic_cnt; goto op789A_skip_copy; } @@ -431,7 +431,7 @@ cc->pass==10 is final pass, code is placed into buf. ICU8(tmpi,0x64); //It's ugly to use ic_class here ICMov(tmpi,tmpi->res.type,tmpi->res.reg,tmpi->res.disp, - MDF_DISP+CmpRawType(tmpi->ic_class),REG_RAX,tmpi->ic_data, + MDF_DISP+CompRawType(tmpi->ic_class),REG_RAX,tmpi->ic_data, rip2); break; case IC_MOV_GS: @@ -439,7 +439,7 @@ cc->pass==10 is final pass, code is placed into buf. ICU8(tmpi,0x65); //It's ugly to use ic_class here ICMov(tmpi,tmpi->res.type,tmpi->res.reg,tmpi->res.disp, - MDF_DISP+CmpRawType(tmpi->ic_class),REG_RAX,tmpi->ic_data, + MDF_DISP+CompRawType(tmpi->ic_class),REG_RAX,tmpi->ic_data, rip2); break; case IC_HOLYC_TYPECAST: @@ -565,32 +565,32 @@ cc->pass==10 is final pass, code is placed into buf. ICFSub(cc,tmpi,buf,rip2); break; case IC_EQU_EQU: - ICCmp(tmpi,0x75,0x75,rip2); + ICComp(tmpi,0x75,0x75,rip2); break; case IC_NOT_EQU: - ICCmp(tmpi,0x74,0x74,rip2); + ICComp(tmpi,0x74,0x74,rip2); break; case IC_LESS: if (tmpi->ic_flags&ICF_USE_INT) - ICCmp(tmpi,0x73,0x7D,rip2); + ICComp(tmpi,0x73,0x7D,rip2); else ICFCmp(cc,tmpi,CMP_TEMPLATE_LESS,rip2); break; case IC_GREATER_EQU: if (tmpi->ic_flags&ICF_USE_INT) - ICCmp(tmpi,0x72,0x7C,rip2); + ICComp(tmpi,0x72,0x7C,rip2); else ICFCmp(cc,tmpi,CMP_TEMPLATE_GREATER_EQU,rip2); break; case IC_GREATER: if (tmpi->ic_flags&ICF_USE_INT) - ICCmp(tmpi,0x76,0x7E,rip2); + ICComp(tmpi,0x76,0x7E,rip2); else ICFCmp(cc,tmpi,CMP_TEMPLATE_GREATER,rip2); break; case IC_LESS_EQU: if (tmpi->ic_flags&ICF_USE_INT) - ICCmp(tmpi,0x77,0x7F,rip2); + ICComp(tmpi,0x77,0x7F,rip2); else ICFCmp(cc,tmpi,CMP_TEMPLATE_LESS_EQU,rip2); break; diff --git a/src/Compiler/ParseExp.HC b/src/Compiler/ParseExp.HC index 0b79a689..b3f95b38 100755 --- a/src/Compiler/ParseExp.HC +++ b/src/Compiler/ParseExp.HC @@ -12,7 +12,7 @@ #define PE_POP_ALL1 11 #define PE_POP_ALL2 12 -CIntermediateCode *ParseAddOp(CCmpCtrl *cc,I64 stk_op,CHashClass *tmpc) +CIntermediateCode *ParseAddOp(CCompCtrl *cc,I64 stk_op,CHashClass *tmpc) { CIntermediateCode *tmpi=cc->coc.coc_head.last; Bool div_sizeof=FALSE; @@ -62,7 +62,7 @@ CIntermediateCode *ParseAddOp(CCmpCtrl *cc,I64 stk_op,CHashClass *tmpc) return tmpi; } -U0 ParseExpression2(CCmpCtrl *cc,I64 *_max_prec,CPrsStk *ps) +U0 ParseExpression2(CCompCtrl *cc,I64 *_max_prec,CPrsStk *ps) { I64 i,cur_op,stk_op,state,max_prec=PREC_NULL,unary_pre_prec,paren_prec, unary_post_prec,left_prec=PREC_MAX; @@ -261,7 +261,7 @@ pe_done: *_max_prec=max_prec; } -Bool ParseExpression(CCmpCtrl *cc,I64 *_max_prec,Bool end_exp,CPrsStk *_ps=NULL) +Bool ParseExpression(CCompCtrl *cc,I64 *_max_prec,Bool end_exp,CPrsStk *_ps=NULL) { Bool res=TRUE; I64 old_flags=cc->flags; @@ -300,7 +300,7 @@ Bool ParseExpression(CCmpCtrl *cc,I64 *_max_prec,Bool end_exp,CPrsStk *_ps=NULL) return res; } -U0 ParseSizeOf(CCmpCtrl *cc) +U0 ParseSizeOf(CCompCtrl *cc) { CHashClass *tmpc; CMemberLst *tmpm; @@ -350,7 +350,7 @@ pu_sizeof_member: ICAdd(cc,IC_IMM_I64,i,cmp.internal_types[RT_I64]); } -U0 ParseOffsetOf(CCmpCtrl *cc) +U0 ParseOffsetOf(CCompCtrl *cc) { CHashClass *tmpc; CMemberLst *tmpm; @@ -380,7 +380,7 @@ U0 ParseOffsetOf(CCmpCtrl *cc) ICAdd(cc,IC_IMM_I64,i,cmp.internal_types[RT_I64]); } -I64 ParseFunCall(CCmpCtrl *cc,CPrsStk *ps,Bool indirect,CHashFun *tmpf) +I64 ParseFunCall(CCompCtrl *cc,CPrsStk *ps,Bool indirect,CHashFun *tmpf) { I64 i,argc_cnt,dft_val; Bool is_first_arg=TRUE,needs_right_paren,is_print,is_putchars, @@ -590,7 +590,7 @@ I64 ParseFunCall(CCmpCtrl *cc,CPrsStk *ps,Bool indirect,CHashFun *tmpf) return PE_UNARY_MODIFIERS; } -I64 ParseUnaryTerm(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var, +I64 ParseUnaryTerm(CCompCtrl *cc,CPrsStk *ps,CMemberLst **_local_var, CArrayDim **_tmpad,I64 *max_prec,I64 *unary_pre_prec,I64 *paren_prec) { I64 i,j; @@ -957,7 +957,7 @@ pu_export_sys_sym: LexExcept(cc,"Missing expression at "); } -I64 ParseUnaryModifier(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var, +I64 ParseUnaryModifier(CCompCtrl *cc,CPrsStk *ps,CMemberLst **_local_var, CArrayDim **_tmpad,I64 *unary_post_prec) { CHashClass *tmpc,*tmpc1; @@ -1114,7 +1114,7 @@ I64 ParseUnaryModifier(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var, return PE_DEREFERENCE; } -U8 *LexExpression2Bin(CCmpCtrl *cc,I64 *_type=NULL) +U8 *LexExpression2Bin(CCompCtrl *cc,I64 *_type=NULL) {//Compile cc expression. You call the code. U8 *res; I64 size; @@ -1132,12 +1132,12 @@ U8 *LexExpression2Bin(CCmpCtrl *cc,I64 *_type=NULL) return res; } -Bool IsLexExpression2Bin(CCmpCtrl *cc,U8 **_machine_code) +Bool IsLexExpression2Bin(CCompCtrl *cc,U8 **_machine_code) {//Compile cc expression to bin. Return err status. return ToBool(*_machine_code=LexExpression2Bin(cc)); } -I64 LexExpressionI64(CCmpCtrl *cc) +I64 LexExpressionI64(CCompCtrl *cc) {//Compile cc expression, forcing to I64 and eval. U8 *machine_code; I64 res,type; @@ -1151,7 +1151,7 @@ I64 LexExpressionI64(CCmpCtrl *cc) return res; } -F64 LexExpressionF64(CCmpCtrl *cc) +F64 LexExpressionF64(CCompCtrl *cc) {//Compile cc expression, forcing to F64 and eval. U8 *machine_code; I64 res,type; @@ -1165,7 +1165,7 @@ F64 LexExpressionF64(CCmpCtrl *cc) return res(F64); } -I64 LexExpression(CCmpCtrl *cc) +I64 LexExpression(CCompCtrl *cc) {//Compile cc expression and eval. Might be I64 or F64. U8 *machine_code; I64 res; diff --git a/src/Compiler/ParseLib.HC b/src/Compiler/ParseLib.HC index 2dace908..7e2e4371 100755 --- a/src/Compiler/ParseLib.HC +++ b/src/Compiler/ParseLib.HC @@ -28,7 +28,7 @@ U0 ParsePopDeref(CPrsStk *ps) } } -I64 ParseKeyWord(CCmpCtrl *cc) +I64 ParseKeyWord(CCompCtrl *cc) {//Cvt cur token to $LK,"KEYWORD",A="FF:::/Compiler/OpCodes.DD,KEYWORD"$ or -1. CHashGeneric *tmph; if (cc->token==TK_IDENT &&(tmph=cc->hash_entry) && tmph->type&HTT_KEYWORD) @@ -76,7 +76,7 @@ CHashFun *ParseFunNew() return res; } -CIntermediateCode *ICAdd(CCmpCtrl *cc, +CIntermediateCode *ICAdd(CCompCtrl *cc, I64 opcode_and_precedence,I64 arg, CHashClass *c,I64 flags=0) { CIntermediateCode *tmpi=MAlloc(sizeof(CIntermediateCode)); @@ -96,7 +96,7 @@ CIntermediateCode *ICAdd(CCmpCtrl *cc, return tmpi; } -U0 COCInit(CCmpCtrl *cc) +U0 COCInit(CCompCtrl *cc) { CCodeCtrl *tmpcbh=&cc->coc; QueueInit(&tmpcbh->coc_head.next); @@ -104,26 +104,26 @@ U0 COCInit(CCmpCtrl *cc) tmpcbh->coc_head.ic_code=IC_END; } -U0 COCPush(CCmpCtrl *cc) +U0 COCPush(CCompCtrl *cc) { CCodeCtrl *tmpcbh=MAlloc(sizeof(CCodeCtrl)); MemCpy(tmpcbh,&cc->coc,sizeof(CCodeCtrl)); cc->coc.coc_next=tmpcbh; } -CCmpCtrl *COCPopNoFree(CCmpCtrl *cc) +CCompCtrl *COCPopNoFree(CCompCtrl *cc) { CCodeCtrl *tmpcbh=cc->coc.coc_next; MemCpy(&cc->coc,tmpcbh,sizeof(CCodeCtrl)); return tmpcbh; } -U0 COCPop(CCmpCtrl *cc) +U0 COCPop(CCompCtrl *cc) { Free(COCPopNoFree(cc)); } -U0 COCAppend(CCmpCtrl *cc, CCodeCtrl *tmpcbh) +U0 COCAppend(CCompCtrl *cc, CCodeCtrl *tmpcbh) { if (tmpcbh->coc_head.next!=&cc->coc.coc_head.next) { cc->coc.coc_head.last->next=tmpcbh->coc_head.next; @@ -140,7 +140,7 @@ U0 COCAppend(CCmpCtrl *cc, CCodeCtrl *tmpcbh) Free(tmpcbh); } -CCodeMisc *COCMiscNew(CCmpCtrl *cc,I64 ty) +CCodeMisc *COCMiscNew(CCompCtrl *cc,I64 ty) { CCodeMisc *res=CAlloc(sizeof(CCodeMisc)); res->addr=INVALID_PTR; @@ -149,7 +149,7 @@ CCodeMisc *COCMiscNew(CCmpCtrl *cc,I64 ty) return res; } -CCodeMisc *COCGoToLabelFind(CCmpCtrl *cc,U8 *name) +CCodeMisc *COCGoToLabelFind(CCompCtrl *cc,U8 *name) { CCodeMisc *cm=cc->coc.coc_next_misc; while (cm!=&cc->coc.coc_next_misc) { @@ -161,7 +161,7 @@ CCodeMisc *COCGoToLabelFind(CCmpCtrl *cc,U8 *name) return NULL; } -I64 COCFloatConstFind(CCmpCtrl *cc,F64 d) +I64 COCFloatConstFind(CCompCtrl *cc,F64 d) { I64 i; CCodeMisc *cm=cc->coc.coc_next_misc; @@ -183,7 +183,7 @@ I64 COCFloatConstFind(CCmpCtrl *cc,F64 d) return cm->addr; } -U0 COCDel(CCmpCtrl *cc,CCodeCtrl *coc) +U0 COCDel(CCompCtrl *cc,CCodeCtrl *coc) { CCodeMisc *cm,*cm1; U8 *undef=NULL; @@ -226,7 +226,7 @@ U0 COCDel(CCmpCtrl *cc,CCodeCtrl *coc) } } -U0 COCHeaderPut(CCmpCtrl *cc,I64 pass,Bool put) +U0 COCHeaderPut(CCompCtrl *cc,I64 pass,Bool put) { CIntermediateCode *tmpi; if (Bt(&cc->flags,CCf_PASS_TRACE_PRESENT)) { @@ -246,7 +246,7 @@ U0 COCHeaderPut(CCmpCtrl *cc,I64 pass,Bool put) cc->pass=pass; } -U8 *COCCompile(CCmpCtrl *cc,I64 *_code_size,CDebugInfo **_dbg,I64 *_type) +U8 *COCCompile(CCompCtrl *cc,I64 *_code_size,CDebugInfo **_dbg,I64 *_type) { U8 *res; CCodeMisc *lb; diff --git a/src/Compiler/ParseStatement.HC b/src/Compiler/ParseStatement.HC index 5c387889..e99deaec 100755 --- a/src/Compiler/ParseStatement.HC +++ b/src/Compiler/ParseStatement.HC @@ -1,4 +1,4 @@ -CHashClass *ParseClass(CCmpCtrl *cc,I64 keyword,I64 fsp_flags,Bool is_extern) +CHashClass *ParseClass(CCompCtrl *cc,I64 keyword,I64 fsp_flags,Bool is_extern) { CHashClass *tmpc,*base_class; if (cc->token!=TK_IDENT) @@ -59,7 +59,7 @@ CHashClass *ParseClass(CCmpCtrl *cc,I64 keyword,I64 fsp_flags,Bool is_extern) return tmpc; } -CHashFun *ParseFunJoin(CCmpCtrl *cc,CHashClass *tmp_return, +CHashFun *ParseFunJoin(CCompCtrl *cc,CHashClass *tmp_return, U8 *name,I64 fsp_flags) { CMemberLst *tmpm,*header_lst; @@ -137,7 +137,7 @@ CHashFun *ParseFunJoin(CCmpCtrl *cc,CHashClass *tmp_return, return tmpf; } -U0 ParseFun(CCmpCtrl *cc,CHashClass *tmp_return,U8 *name,I64 fsp_flags) +U0 ParseFun(CCompCtrl *cc,CHashClass *tmp_return,U8 *name,I64 fsp_flags) { CMemberLst *tmpm; CCodeMisc *saved_leave_label; @@ -206,7 +206,7 @@ U0 ParseFun(CCmpCtrl *cc,CHashClass *tmp_return,U8 *name,I64 fsp_flags) cc->htc.local_var_lst=cc->htc.fun=cc->fun_lex_file=NULL; } -U0 ParseGlblVarLst(CCmpCtrl *cc,I64 saved_mode,CHashClass *saved_tmpc, +U0 ParseGlblVarLst(CCompCtrl *cc,I64 saved_mode,CHashClass *saved_tmpc, I64 saved_val,I64 fsp_flags) { I64 i,j,mode,k,val; @@ -456,7 +456,7 @@ U0 ParseGlblVarLst(CCmpCtrl *cc,I64 saved_mode,CHashClass *saved_tmpc, } } -U0 ParseIf(CCmpCtrl *cc,I64 try_cnt,CCodeMisc *lb_break) +U0 ParseIf(CCompCtrl *cc,I64 try_cnt,CCodeMisc *lb_break) { CCodeMisc *lb,*lb1; I64 k; @@ -483,7 +483,7 @@ U0 ParseIf(CCmpCtrl *cc,I64 try_cnt,CCodeMisc *lb_break) ICAdd(cc,IC_LABEL,lb,0); } -U0 ParseWhile(CCmpCtrl *cc,I64 try_cnt) +U0 ParseWhile(CCompCtrl *cc,I64 try_cnt) { CCodeMisc *lb,*lb_done; if (cc->token!='(') @@ -503,7 +503,7 @@ U0 ParseWhile(CCmpCtrl *cc,I64 try_cnt) ICAdd(cc,IC_LABEL,lb_done,0); } -U0 ParseDoWhile(CCmpCtrl *cc,I64 try_cnt) +U0 ParseDoWhile(CCompCtrl *cc,I64 try_cnt) { CCodeMisc *lb,*lb_done; lb=COCMiscNew(cc,CMT_LABEL); @@ -526,7 +526,7 @@ U0 ParseDoWhile(CCmpCtrl *cc,I64 try_cnt) Lex(cc); } -U0 ParseFor(CCmpCtrl *cc,I64 try_cnt) +U0 ParseFor(CCompCtrl *cc,I64 try_cnt) { CCodeCtrl *tmpcbh; CCodeMisc *lb,*lb_done; @@ -575,7 +575,7 @@ class CSwitchCase { CSubSwitch *ss; }; -U0 ParseSwitch(CCmpCtrl *cc,I64 try_cnt) +U0 ParseSwitch(CCompCtrl *cc,I64 try_cnt) { CSwitchCase *header=NULL,*tmps,*tmps1; //Leaks on except CSubSwitch head,*tmpss; //Leaks on except @@ -788,7 +788,7 @@ sw_sub_end: mc_jt->range=range; } -U0 ParseNoWarn(CCmpCtrl *cc) +U0 ParseNoWarn(CCompCtrl *cc) { CMemberLst *tmpm; while (cc->token==TK_IDENT) { @@ -802,7 +802,7 @@ U0 ParseNoWarn(CCmpCtrl *cc) } } -U0 ParseStreamBlk(CCmpCtrl *cc) +U0 ParseStreamBlk(CCompCtrl *cc) { CLexHashTableContext *htc=MAlloc(sizeof(CLexHashTableContext)); CStreamBlk *tmpe=MAlloc(sizeof(CStreamBlk)); @@ -839,7 +839,7 @@ U0 ParseStreamBlk(CCmpCtrl *cc) Lex(cc); //Skip '}' } -U0 ParseTryBlk(CCmpCtrl *cc,I64 try_cnt) +U0 ParseTryBlk(CCompCtrl *cc,I64 try_cnt) { CCodeMisc *lb_catch,*lb_done,*lb_untry; CHashClass *tmpc=cmp.internal_types[RT_PTR]; @@ -901,7 +901,7 @@ U0 ParseTryBlk(CCmpCtrl *cc,I64 try_cnt) ICAdd(cc,IC_LABEL,lb_done,0); } -Bool ParseStatement(CCmpCtrl *cc,I64 try_cnt=0, +Bool ParseStatement(CCompCtrl *cc,I64 try_cnt=0, CCodeMisc *lb_break=NULL,I64 cmp_flags=CMPF_PRS_SEMICOLON) { I64 i,fsp_flags=0; @@ -913,8 +913,8 @@ Bool ParseStatement(CCmpCtrl *cc,I64 try_cnt=0, if (cmp_flags&CMPF_ONE_ASM_INS) { if (cc->flags&CCF_AOT_COMPILE || cc->aot_depth) ParseAsmBlk(cc,CMPF_ONE_ASM_INS); - else if (tmpaot=CmpJoin(cc,CMPF_ASM_BLK|CMPF_ONE_ASM_INS)) - CmpFixUpJITAsm(cc,tmpaot); + else if (tmpaot=CompJoin(cc,CMPF_ASM_BLK|CMPF_ONE_ASM_INS)) + CompFixUpJITAsm(cc,tmpaot); fsp_flags=FSF_ASM; } else while (TRUE) { @@ -943,7 +943,7 @@ Bool ParseStatement(CCmpCtrl *cc,I64 try_cnt=0, start: case KW_ASM: if (cc->htc.fun) { - if (tmpaot=CmpJoin(cc,CMPF_ASM_BLK)) + if (tmpaot=CompJoin(cc,CMPF_ASM_BLK)) ICAdd(cc,IC_ASM,tmpaot,0); Lex(cc); //Skip '}' of asm{} } else { @@ -953,8 +953,8 @@ Bool ParseStatement(CCmpCtrl *cc,I64 try_cnt=0, if (cc->flags&CCF_AOT_COMPILE && cc->aot_depth==1) Lex(cc); //Skip '}' of asm{} } else { - if (tmpaot=CmpJoin(cc,CMPF_ASM_BLK)) - CmpFixUpJITAsm(cc,tmpaot); + if (tmpaot=CompJoin(cc,CMPF_ASM_BLK)) + CompFixUpJITAsm(cc,tmpaot); Lex(cc); //Skip '}' of asm{} } fsp_flags=FSF_ASM; @@ -1169,7 +1169,7 @@ sm_not_keyword_afterall: } else { if (tmpex->type & (HTT_OPCODE|HTT_ASM_KEYWORD)) { if (cc->htc.fun) { - if (tmpaot=CmpJoin(cc,CMPF_ASM_BLK|CMPF_ONE_ASM_INS)) + if (tmpaot=CompJoin(cc,CMPF_ASM_BLK|CMPF_ONE_ASM_INS)) ICAdd(cc,IC_ASM,tmpaot,0); } else LexExcept(cc,"Use Asm Blk at "); diff --git a/src/Compiler/ParseVar.HC b/src/Compiler/ParseVar.HC index ae4a21e0..44fcae4f 100755 --- a/src/Compiler/ParseVar.HC +++ b/src/Compiler/ParseVar.HC @@ -1,4 +1,4 @@ -U0 ParseVarInit(CCmpCtrl *cc,U8 **_dst,CHashClass *tmpc,CArrayDim *tmpad, +U0 ParseVarInit(CCompCtrl *cc,U8 **_dst,CHashClass *tmpc,CArrayDim *tmpad, U8 *data_addr_rip,U8 **_base,Bool data_heap,I64 pass) { U8 *dst=*_dst,*machine_code; @@ -120,7 +120,7 @@ class CVI2 U0 base; }; -U0 ParseVarInit2(CCmpCtrl *cc,U8 **_dst,CHashClass *tmpc, +U0 ParseVarInit2(CCompCtrl *cc,U8 **_dst,CHashClass *tmpc, CArrayDim *tmpad,U8 *data_addr_rip,U8 **_base,Bool data_heap,I64 pass) { I64 i,j,cnt; @@ -203,7 +203,7 @@ U0 ParseVarInit2(CCmpCtrl *cc,U8 **_dst,CHashClass *tmpc, } } -U0 ParseGlblInit(CCmpCtrl *cc,CHashGlblVar *tmpg,I64 pass) +U0 ParseGlblInit(CCompCtrl *cc,CHashGlblVar *tmpg,I64 pass) { U8 *dst=tmpg->data_addr; ParseVarInit2(cc,&dst,tmpg->var_class,&tmpg->dim, @@ -212,7 +212,7 @@ U0 ParseGlblInit(CCmpCtrl *cc,CHashGlblVar *tmpg,I64 pass) Bt(&cc->flags,CCf_AOT_COMPILE),pass); } -U0 ParseStaticInit(CCmpCtrl *cc,CMemberLst *tmpm,I64 pass) +U0 ParseStaticInit(CCompCtrl *cc,CMemberLst *tmpm,I64 pass) { U8 *machine_code,*dst=tmpm->static_data; CHashClass *tmpc=tmpm->member_class; @@ -244,7 +244,7 @@ U0 ParseStaticInit(CCmpCtrl *cc,CMemberLst *tmpm,I64 pass) } } -U0 ParseArrayDims(CCmpCtrl *cc,I64 mode,CArrayDim *dim) +U0 ParseArrayDims(CCompCtrl *cc,I64 mode,CArrayDim *dim) {//dim->next!=0 for array CArrayDim *tmpad,*tmpad1; I64 j; @@ -282,7 +282,7 @@ U0 ParseArrayDims(CCmpCtrl *cc,I64 mode,CArrayDim *dim) } } -CHashClass *ParseType(CCmpCtrl *cc,CHashClass **_tmpc1, +CHashClass *ParseType(CCompCtrl *cc,CHashClass **_tmpc1, I64 *_mode,CMemberLst *tmpm,U8 **_ident,CHashFun **_fun_ptr, CHashExport **_tmpex,CArrayDim *tmpad,I64 fsp_flags) { @@ -370,7 +370,7 @@ CHashClass *ParseType(CCmpCtrl *cc,CHashClass **_tmpc1, return tmpc1; } -U0 ParseDotDotDot(CCmpCtrl *cc,CHashFun *tmpf,I64 _reg) +U0 ParseDotDotDot(CCompCtrl *cc,CHashFun *tmpf,I64 _reg) { CMemberLst *tmpm; CArrayDim *tmpad; @@ -405,7 +405,7 @@ U0 ParseDotDotDot(CCmpCtrl *cc,CHashFun *tmpf,I64 _reg) Lex(cc); } -U0 ParseVarLst(CCmpCtrl *cc,CHashClass *tmpc,I64 mode,I64 union_base=0) +U0 ParseVarLst(CCompCtrl *cc,CHashClass *tmpc,I64 mode,I64 union_base=0) { I64 i,k,old_flags=cc->flags,old_flags2,type,_reg; CHashClass *tmpc1,*tmpc2; diff --git a/src/Demo/AcctExample/PersonalNotes.DD b/src/Demo/AcctExample/PersonalNotes.DD index e2547efd..b9a0d144 100755 --- a/src/Demo/AcctExample/PersonalNotes.DD +++ b/src/Demo/AcctExample/PersonalNotes.DD @@ -93,7 +93,7 @@ $WW,1$$FG,5$$TX+CX,"TODO"$$FG$ * Use thick and pen_height when clipping with thick>1. -* Asm LIST NOLIST bugs. +* Asm LIST NOLIST bugs. * Review writing to same cache-line from multicore. Do $LK,"CTask",A="MN:CTask"$->task_flags and others need to be in separate cache lines? @@ -126,7 +126,7 @@ $FG,5$$TX+CX,"TODO? Meh"$$FG$ * Clean-up ASCII #127 delete char? (No. Maybe, we want a new usage for 127 in future centuries.) -* Compiler: Exceptions don't free $LK,"CCmpCtrl",A="MN:CCmpCtrl"$ stuff. +* Compiler: Exceptions don't free $LK,"CCompCtrl",A="MN:CCompCtrl"$ stuff. * $LK,"::/Zenith/DolDoc/DocHighlight.HC"$ for code comments at top of documents. @@ -295,7 +295,7 @@ $FG,5$$TX+CX,"Committee Needed"$$FG$ * Compiler: Local var array/struct initialization. -* Compiler Optimization: Bools use r,rm in $LK,"ICCmp",A="MN:ICCmp"$() like in $LK,"ICCmpAndBranch",A="MN:ICCmpAndBranch"$()? +* Compiler Optimization: Bools use r,rm in $LK,"ICComp",A="MN:ICComp"$() like in $LK,"ICCompAndBranch",A="MN:ICCompAndBranch"$()? * Compiler: !F64 ~F64 @@ -358,7 +358,7 @@ $FG,5$$TX+CX,"Inspirational Ideas"$$FG$ * Compiler: More use of more floating-point stk? -* Compiler: More aggressive in $LK,"CmpF2PushPop",A="MN:CmpF2PushPop"$() with types besides MOV and F64. +* Compiler: More aggressive in $LK,"CompF2PushPop",A="MN:CompF2PushPop"$() with types besides MOV and F64. * Playing with $LK,"::/Demo/Lectures/NegDisp.HC"$ on $LK,"CTask",A="MN:CTask"$? $ID,5$$$=-CTASK_NEG_OFFSET diff --git a/src/Demo/CompileDemo.HC b/src/Demo/CompileDemo.HC index f947c747..88f48fe8 100755 --- a/src/Demo/CompileDemo.HC +++ b/src/Demo/CompileDemo.HC @@ -4,7 +4,7 @@ F64 CompileDemo(U8 *st) { I64 type; U8 *machine_code; - CCmpCtrl *cc=CmpCtrlNew(st,CCF_DONT_FREE_BUF); + CCompCtrl *cc=CompCtrlNew(st,CCF_DONT_FREE_BUF); F64 res=0; Lex(cc); //Gotta get it started "Compile \"%s\"\n",st; @@ -20,7 +20,7 @@ F64 CompileDemo(U8 *st) if (cc->token==';') Lex(cc); } while (cc->token!=TK_EOF); //end of file? - CmpCtrlDel(cc); + CompCtrlDel(cc); return res; } diff --git a/src/Demo/MultiCore/LoadTest.HC b/src/Demo/MultiCore/LoadTest.HC index 0727ab58..050518dc 100755 --- a/src/Demo/MultiCore/LoadTest.HC +++ b/src/Demo/MultiCore/LoadTest.HC @@ -6,7 +6,7 @@ U0 Job1(I64) Silent; while (!app_done) { Cd("::/Compiler"); - Cmp("Compiler"); + Comp("Compiler"); } lock {app_done_ack--;} } diff --git a/src/Demo/SortFileDemo/F64FileSort.HC b/src/Demo/SortFileDemo/F64FileSort.HC index af02a1e9..8442e37a 100755 --- a/src/Demo/SortFileDemo/F64FileSort.HC +++ b/src/Demo/SortFileDemo/F64FileSort.HC @@ -9,28 +9,28 @@ I64 Compare(F64 e1,F64 e2) U0 F64FileSortTXT(U8 *in_name,U8 *out_name) { - CCmpCtrl *cc; + CCompCtrl *cc; I64 i,n; F64 *a; CDoc *doc; //Pass1: Count the number of F64s. n=0; - cc=CmpCtrlNew(MStrPrint("#include \"%s\"",in_name)); + cc=CompCtrlNew(MStrPrint("#include \"%s\"",in_name)); while (Lex(cc)) if (cc->token==TK_F64) n++; - CmpCtrlDel(cc); + CompCtrlDel(cc); a=MAlloc(n*sizeof(F64)); //Pass2: Read F64s. i=0; - cc=CmpCtrlNew(MStrPrint("#include \"%s\"",in_name)); + cc=CompCtrlNew(MStrPrint("#include \"%s\"",in_name)); while (Lex(cc)) if (cc->token==TK_F64) a[i++]=cc->cur_f64; - CmpCtrlDel(cc); + CompCtrlDel(cc); QSortI64(a,n,&Compare); //Sort 64-bit sized values diff --git a/src/Demo/Templates/Lex1.HC b/src/Demo/Templates/Lex1.HC index 12987d8a..43f006fa 100755 --- a/src/Demo/Templates/Lex1.HC +++ b/src/Demo/Templates/Lex1.HC @@ -1,6 +1,6 @@ U0 MyRead(U8 *filename) { - CCmpCtrl *cc=CmpCtrlNew(MStrPrint("#include \"%s\"",filename)); + CCompCtrl *cc=CompCtrlNew(MStrPrint("#include \"%s\"",filename)); while (Lex(cc)) { "%03d:",cc->token; switch (cc->token) { @@ -12,5 +12,5 @@ U0 MyRead(U8 *filename) } '\n'; } - CmpCtrlDel(cc); + CompCtrlDel(cc); } diff --git a/src/Doc/Glossary.DD b/src/Doc/Glossary.DD index 847b4afa..081a8a0e 100755 --- a/src/Doc/Glossary.DD +++ b/src/Doc/Glossary.DD @@ -28,7 +28,7 @@ $FG,2$Check$FG$ Check $FG,2$Clip$FG$ Clipboard $FG,2$Clus$FG$ Cluster $FG,2$Cmd$FG$ Command -$FG,2$Cmp$FG$ Compiler +$FG,2$Comp$FG$ Compiler $FG,2$Cnt$FG$ Count $FG,2$Const$FG$ Consant $FG,2$Cont$FG$ Continue @@ -176,7 +176,7 @@ $ID,2$$FG,2$Ahead-of-Time$FG$ compiling is conventional compilation mode. Do no In $FG,2$AOT$FG$ mode, $FG,2$.PRJ$FG$ files are compiled to $FG,2$.BIN$FG$ files, skipping $FG,2$.OBJ$FG$ files. After compiling, $FG,2$.BIN$FG$ files are $LK,"Load",A="MN:Load"$()ed. -There is no $FG,2$main()$FG$ routine. Instead, stmts outside functions are automatically executed upon loading. There is no way to unload except by killing the task. To invoke $FG,2$AOT Compiled Mode$FG$, $LK,"Cmp",A="MN:Cmp"$() is used. The $FG,2$Kernel$FG$ module and compiler are made in $FG,2$AOT$FG$ compiled mode. See $LK,"BootHDIns",A="MN:BootHDIns"$() which calls $LK,"MakeAll",A="MN:MakeAll"$() where $LK,"::/Kernel.BIN.C",A="FI:::/Kernel/Kernel.PRJ"$ and $LK,"::/Compiler/Compiler.BIN",A="FI:::/Compiler/Compiler.PRJ"$ are created. +There is no $FG,2$main()$FG$ routine. Instead, stmts outside functions are automatically executed upon loading. There is no way to unload except by killing the task. To invoke $FG,2$AOT Compiled Mode$FG$, $LK,"Comp",A="MN:Comp"$() is used. The $FG,2$Kernel$FG$ module and compiler are made in $FG,2$AOT$FG$ compiled mode. See $LK,"BootHDIns",A="MN:BootHDIns"$() which calls $LK,"MakeAll",A="MN:MakeAll"$() where $LK,"::/Kernel.BIN.C",A="FI:::/Kernel/Kernel.PRJ"$ and $LK,"::/Compiler/Compiler.BIN",A="FI:::/Compiler/Compiler.PRJ"$ are created. $ID,-2$$TR,"JIT Compile Mode"$ $ID,2$In $FG,2$just-in-time$FG$ mode, the compiler places code and data in memory alloced from the heap, incrementally, making them immediately ready for in-place execution. This mode is used during cmd line operations. When you $FG,2$#include$FG$ a file, it is compiled function by function and code ends-up all over in the memory, at least in the first 2Gig of memory. The $LK,"ExeFile",A="MN:ExeFile"$() routine is the same as $FG,2$#include$FG$ but can be used in programs. $LK,"ExePrint",A="MN:ExePrint"$() routine will compile and run a string. $ID,-2$$TR,"Compiler Intermediate Code"$ @@ -231,7 +231,7 @@ $FG,5$*.HH.Z;*.HH$FG$ $FG,5$*.MAP;*.MAP$FG$ Compiler "map" files $FG,5$*.BIN;*.BIN.C;*.BIN$FG$ - Binary executable files, created by $LK,"Cmp",A="MN:Cmp"$() and read by $LK,"Load",A="MN:Load"$(). + Binary executable files, created by $LK,"Comp",A="MN:Comp"$() and read by $LK,"Load",A="MN:Load"$(). $FG,5$*.DATA.Z;*.DATA$FG$ Data files $FG,5$*.ISO$FG$ diff --git a/src/Doc/Lex.DD b/src/Doc/Lex.DD index a8e6531a..24623dd7 100755 --- a/src/Doc/Lex.DD +++ b/src/Doc/Lex.DD @@ -1,3 +1,3 @@ -$WW,1$The compiler's lexical analyzer can be used in your programs to simplify parsing. See $LK,"Doc Parsing",A="FF:::/Zenith/DolDoc/DocPlain.HC,CmpCtrlNew"$ or $LK,"Parse Opcode File",A="FF:::/Compiler/AsmInit.HC,Opcodes.DD"$. +$WW,1$The compiler's lexical analyzer can be used in your programs to simplify parsing. See $LK,"Doc Parsing",A="FF:::/Zenith/DolDoc/DocPlain.HC,CompCtrlNew"$ or $LK,"Parse Opcode File",A="FF:::/Compiler/AsmInit.HC,Opcodes.DD"$. See $LK,"Tokens",A="MN:TK_IDENT"$. diff --git a/src/Kernel.BIN.C b/src/Kernel.BIN.C index 44acb98fe4c858bec59e450854135753cf8e856b..d56189cf1f3bf452b5f78128173ea1d4e0e3df70 100755 GIT binary patch delta 716 zcmXw$T}V_x6vywGxq26OTg7&D%Sv}cDN{-mvoFcE4=dcV=%EJ-(*;u_anqKlG}hMD z$i!*9B?a1tB4LK3Odm#q4;g7B;znWYOGIkX!HMtFw?Zj=iZa!MK+K zN!hZ39j=K%a;6r&Z!i&$cZ?*|nMq0QRwSgVIx88f-5~GN@>*c=rQ(D~DslL7o#d;>$mXVdvFPdgS%`s>$Y3Vwp=3U|QbFNO19^iP z#1)L!q?X`Gk)IDbwBW#uR>taQ^a#pX^Q=8Y*6vfUJO{J7*#%Kd_xJU3#g>${!5^|FX^-2v_jIXKGn4)Sgs=^f delta 720 zcmXw$Z%9*77{>2=&ehGfHnB~Y`KK8|nIcR3hY{&iR?*0!4+$%D8(3P2OA@&^Ep09% zlTNx41Ff|DAbmL02}v>xGE&LJWn$O|!E}Yn%%B3hciQ26IM4IG=bRt!(>SDRlyO+H$)VN3a1TNo6^6L&G$*a0o{gcpqK0OcnFiazT&b}Go`n96@<|jEldFdEq%}#ih2cV z=z6+^zdN}0+SH(jZoiWCf_{!^yL1SfrX+ z7wAObIPQey#`mzj@5T^**QN_@vgw-j(daq#fI--VK6@O-$)9vwr?36RAy%2A%g%5I9t qSCn$D)O@k5B->fSDLYRAXI|A-=Os>=au0Di70%olex_include_stk; I64 line_num=tmpf->line_num+line_num_offset; diff --git a/src/Kernel/KTask.HC b/src/Kernel/KTask.HC index ade7cd93..be301cfe 100755 --- a/src/Kernel/KTask.HC +++ b/src/Kernel/KTask.HC @@ -299,8 +299,8 @@ U0 TaskDerivedValsUpdate(CTask *task=NULL,Bool update_z_buf=TRUE) POPFD } -I64 ExeCmdLine(CCmpCtrl *cc) -{//Terminal JIT-compile-and-execute loop for CCmpCtrl. +I64 ExeCmdLine(CCompCtrl *cc) +{//Terminal JIT-compile-and-execute loop for CCompCtrl. I64 res=0,type,old_title_src=Fs->title_src; U8 *ptr,*ptr2,*ptr3,*machine_code,*old_task_title=StrNew(Fs->task_title); F64 t0; @@ -383,18 +383,18 @@ U0 SrvTaskCont() U0 UserTaskCont() {//Terminal key-input-execute loop. - CCmpCtrl *cc; + CCompCtrl *cc; CDoc *doc; Bool cont=TRUE; do { - cc=CmpCtrlNew(,CCF_CMD_LINE|CCF_PMT|CCF_QUESTION_HELP); + cc=CompCtrlNew(,CCF_CMD_LINE|CCF_PMT|CCF_QUESTION_HELP); QueueInsert(cc,Fs->last_cc); try { Lex(cc); ExeCmdLine(cc); cont=Bt(&cc->flags,CCf_PMT); QueueRemove(cc); - CmpCtrlDel(cc); + CompCtrlDel(cc); } catch { if ((doc=Fs->put_doc) && doc->doc_signature==DOC_SIGNATURE_VAL) DocUnlock(doc); diff --git a/src/Kernel/Kernel.MAP b/src/Kernel/Kernel.MAP index 8066361b..c9cdd313 100755 --- a/src/Kernel/Kernel.MAP +++ b/src/Kernel/Kernel.MAP @@ -69,7 +69,6 @@ $LK,"LstMatch",A="FL:::/Kernel/StrA.HC,416",BI=10$ $LK,"IET_REL_I32",A="FL:::/Kernel/KernelA.HH,413"$ $LK,"IET_REL_I16",A="FL:::/Kernel/KernelA.HH,411"$ $LK,"CPrsStk",A="FL:::/Kernel/KernelA.HH,1689"$ -$LK,"CCmpCtrl",A="FL:::/Kernel/KernelA.HH,2179"$ $LK,"ATAWBlks",A="FL:::/Kernel/BlkDev/DiskATA.HC,582",BI=11$ $LK,"CCPU",A="FL:::/Kernel/KernelA.HH,3391"$ $LK,"ATABlkSel",A="FL:::/Kernel/BlkDev/DiskATA.HC,1",BI=12$ @@ -304,7 +303,7 @@ $LK,"CtrlAltD",A="FL:::/Kernel/KeyDev.HC,138",BI=65$ $LK,"RandI64",A="FL:::/Kernel/KMathB.HC,117",BI=66$ $LK,"CH_CTRLT",A="FL:::/Kernel/KernelA.HH,3445"$ $LK,"MBS_UNUSED_SIGNATURE_VAL",A="FL:::/Kernel/KernelA.HH,2813"$ -$LK,"CCmpGlbls",A="FL:::/Kernel/KernelA.HH,2226"$ +$LK,"CCompGlbls",A="FL:::/Kernel/KernelA.HH,2226"$ $LK,"RT_U32",A="FL:::/Kernel/KernelA.HH,1571"$ $LK,"RT_U16",A="FL:::/Kernel/KernelA.HH,1569"$ $LK,"CExternUsage",A="FL:::/Kernel/KernelA.HH,822"$ @@ -1531,6 +1530,7 @@ $LK,"DOC_COLOR_DEFINE_STR",A="FL:::/Kernel/KernelA.HH,1151"$ $LK,"DriveFATBlkAlloc",A="FL:::/Kernel/BlkDev/DiskDrive.HC,89",BI=335$ $LK,"VM_VIRTUALBOX",A="FL:::/Kernel/KernelA.HH,3893"$ $LK,"SCF_NEW_KEY",A="FL:::/Kernel/KernelA.HH,3486"$ +$LK,"CCompCtrl",A="FL:::/Kernel/KernelA.HH,2179"$ $LK,"TASK_CONTEXT_SAVE",A="FL:::/Kernel/Sched.HC,56"$ $LK,"SCf_NEW_KEY",A="FL:::/Kernel/KernelA.HH,3471"$ $LK,"CDirContext",A="FL:::/Kernel/KernelA.HH,2747"$ diff --git a/src/Kernel/Kernel.PRJ b/src/Kernel/Kernel.PRJ index e782b743..9f7df96c 100755 --- a/src/Kernel/Kernel.PRJ +++ b/src/Kernel/Kernel.PRJ @@ -1,5 +1,5 @@ //Compile this by calling $LK,"BootHDIns",A="MN:BootHDIns"$(). -//Don't do it directly.See $LK,"Cmp(\"/Kernel/Kernel\")",A="FF:::/Zenith/Boot/BootHDIns.HC,Cmp(\"/Kernel/Kernel\""$. +//Don't do it directly.See $LK,"Comp(\"/Kernel/Kernel\")",A="FF:::/Zenith/Boot/BootHDIns.HC,Comp(\"/Kernel/Kernel\""$. #exe { Cd(__DIR__);; diff --git a/src/Kernel/KernelA.HH b/src/Kernel/KernelA.HH index 891830f3..5a6f3265 100755 --- a/src/Kernel/KernelA.HH +++ b/src/Kernel/KernelA.HH @@ -2133,7 +2133,7 @@ class CLexHashTableContext *glbl_hash_table; }; -//CmpCtrl flags +//CompCtrl flags #define CCF_CMD_LINE 0x001 #define CCF_PMT 0x002 #define CCf_PMT 1 @@ -2176,9 +2176,9 @@ class CLexHashTableContext #define CCF_CLASS_DOL_OFFSET 0x4000000000 #define CCF_DONT_MAKE_RES 0x8000000000 -public class CCmpCtrl +public class CCompCtrl { - CCmpCtrl *next,*last; + CCompCtrl *next,*last; I64 token, flags, cur_i64; @@ -2223,7 +2223,7 @@ public class CCmpCtrl }; #help_index "Compiler" -public class CCmpGlbls +public class CCompGlbls { CHashTable *asm_hash; CHashClass *internal_types[RT_RTS_NUM]; @@ -3336,7 +3336,7 @@ public class CTask //The Fs segment reg points to current CTask. CHashTable *hash_table; CJobCtrl srv_ctrl; - CCmpCtrl *next_cc,*last_cc; + CCompCtrl *next_cc,*last_cc; CHashFun *last_fun; U0 (*task_end_cb)(); diff --git a/src/Kernel/KernelC.HH b/src/Kernel/KernelC.HH index 4b62401f..a46a1840 100755 --- a/src/Kernel/KernelC.HH +++ b/src/Kernel/KernelC.HH @@ -109,7 +109,7 @@ extern U8 *StrPrintHex(U8 *dst,I64 num;I64 width); public extern CTextGlbls text; #help_index "Compiler/Lex" -public extern U0 HashSrcFileSet(CCmpCtrl *cc, +public extern U0 HashSrcFileSet(CCompCtrl *cc, CHashSrcSym *h,I64 line_num_offset=0); #help_index "Compiler;Cmd Line (Typically)" @@ -459,7 +459,7 @@ public extern I64 Scale2Mem(I64 min,I64 max,I64 limit=2*1024*1024*1024); #help_index "Job/Exe;Task/Job/Exe" public extern U0 ZenithErr(U8 *fmt,...); public extern U0 ZenithLog(U8 *fmt,...); -public extern I64 ExeCmdLine(CCmpCtrl *cc); +public extern I64 ExeCmdLine(CCompCtrl *cc); public extern U0 JobDel(CJob *tmpc); public extern I64 JobsHandler(I64 run_flags,CTask *task=NULL); extern U0 SrvCmdLine(); diff --git a/src/Tmp/MyDistro.iso b/src/Tmp/MyDistro.iso index bc8e84b96db8fba41acfbe262302e6d3beb21c08..3d253f85890b0c809b8a36d734c400d5a67ce72c 100755 GIT binary patch delta 21997 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 gvcCO4zSXY(zkaK|^!~~-P)0Atx>5dZ)H delta 21607 zcmaic34Bb~`~I9elRak3%$+Pk5tOQYGr?C^;i)w?Gn$}v& zQ9|shR4t{o6x~g0?P^K+zwe!ySiXM!&*$?#&%Nh8_dV~~&pr3vnL71^b}GvDu_judBaA!96%6EGIc(V`N%5#2bQyP zd;fvTnxpEPqm(b5T1(AQWzA7_%~8s^ns_xwl{H7zHAgAumN1$m<6 z6Qo>l7~z%+^2#Cq6Bw_kOn5D@%u=A>mI9Yb>uU;b@pY}tek~9zrLOkO^2$=zSiw6f z)Lua0QS&&je#AP3pXfy$dG2~5d1W*0lyLKwpzg_G;kZFskmI; zQfS0kqFX}8*AnEGnQoO`{wMIVTV?A11d8sJKCcCqS;F19CETO(!`BpGx!~c<$OR9J z+@Zeg476PKs671IHQch&v(oE-0zdGq+$IIq45VP`?iK4j^)LIVM`IIIcK0grelXr% zSiiOYXBVXOz&I;Kdq~v0rn|v{A6 zHyOjcZ3cT-{m=b2LuD`YRqJ67DUNRUDOC4DFRmroLtL}&OJ4LQU(@Yjb}xG4bu!0v zVZW}oSA_1lyFCsY@sh=qK3)-GtRoFmZM&u$T$3#K@e0?aJ9NsFms7y2bb}q5M+@v4 zseG$RV|8e>jvU%czAtJ{J2d0kzI2U+G!Gn_WY3p0m8ALGp*ifRHG4Xw5gc)=Ccorc zNm@@e1JF>aLlag?!@f)=HBt*|#A=7;y4-#ZHO-o_CTzt(FJCs5 z`wjHc%wfxTqhGul%3V69b?av2y?*tY@8J?uLc_4Kjkke6|HG@av!GkbC!~8XN|rCh z!Cc))(DR_l-b)Sg#NI)C&vNf@gJSU_)R_F3o|IAxAMKKmNP~J+=@w7IzMhwH5^`kAdrc87xe1_vWlozOdprKJ& zFJjM6G8*4A%>~^j6y;_WnhQ#DhsxA%+k?C2jDIPZw>2tLnYMGaG$nK@EXi%1SC~`M zxd>*3D>L9`xYDEvuOr#R`5~`+&fvV<9&oluhAqBV~Pf)<`*^_P|%n%hXjm zLDnw4b?2gt;;~Q~p}gtQrW=KzXV4>3*~e4WTuQU$*kQ0aQhAt$srz9~wnk_SJt z8*6RK8arl0R$-A$9si9?*14#p_2}GOnc71E+ar~J@OzB%gj?q}k{#F+t85muXow?? zw1S~6N9Pm_86i`Dokn4;%;U%tuQ+8pFvlrP+U#`cy4L2>9z|)LyQhuGhm~>4*1q{g zt)pv_g#;;5dn`o$JWe^BDMN4=aLk@Ko5IipWe_Y+P`0c${e_~N`7QMF=0ZxhW8sjT zyq-Cu+ZC8g;Aw&~5z-QszR)*O*$O^RR3>P@$MFsgb}Y;p+A4RLxd6-eR-!Ufd(vJ$ zl7H>nN&YoTQpQ3_lCmCbPEy{`G`J#N*?HKoF}WqtU2})S>||vG|14RV=vS`R?dh)c z8Oe1Al_%x=`e9{;HxD_h9PiFoUskqL@gILu&W_^wqN$d*B`EW*NYz=ty(Lu_$x0{2wAHB zL{V{cLzb`rZt2`l2K8-XcdNCj#;rjwyTu=mSDo!HU{gGtr4Ho3oKeO2z^xK>7@Rw< z@_>%FR3l$KZ39tiod+a-r>gDloZaE@EmcDpa9ich=YOZN8OYpycXbF~{aBUiTdsBq z3fm}^rR?k`iK%oBz2rs|f2>ifTfzJ!jXyN;Pec<#n86sX5CI&TPtMe1r&>-f}SwTm1c zjK`R3O4R8b)eV@Wf~;w36Fjh}Yx5D~)Mbn!#n@vem#TjtLp}JI3F_VgWX)8E!`~Ct zyIx$#@xs#rMGt_$ch$q8`Be2gbd6N3F5osz9c%XhlX)(1G||t^?p*vxZwV(+5`nQyd-tMDj520QYXSWPqqJw^{V!uzN7MngB#S%`JxZhT|LUxnz;UX zOQn`R-Of}enwRSGb}*jc4;!y@)N|BKL%_^EuJI`WDo3k5_{?qUiJp7*sWWP=*rzUq zqU|bAcyLPX4?!QOUHR>k>OTa@ZLT=2zVMDjLD(l!oR z5O^QUS*jmwg^?WYtLwZL+X!C2tLxdD1=TCZdVL}lMniDc^Lwy(Ef!ej=jtF(pH}%n z&?EIQSi3>x3Xy-SBB8@mbzQhWSEYgnf2-=k_CDy{+Vv`r6{l2DD`ueX+!~b&|MVaA z>Nho@`mp^m7KO7FNgYDNy`HGgvT}7@zlc5M)Do}-6f{B(bB>rj_>-sV@@5>n^UsPY z(o8Ay3<~NpHkZbJS%V?@MKbe{>;jz5nqv4%rx-dUFK5gcnG}Z8_2`0}yzCO3y~oJ9 zcF%4XAN!^&3Ww(6{F2?NbC!wH!7;OK&X^H2kKn0qP>)vvCV6_MOKw2U1O55L_v+eP zb4ZZH)S6u=FOG5hwqxywt+``vY1Y`1?uDar3ur9Xw$R*Q{9&5rSH`cWYeWHVP85Bi zqK(Fr>sxDznRL$ST!8yAdVjciQ0oS#+i807dhInwT&QA0xO8lBW@A_%#LQ+4CFC7Iz-%UPVFsYx$K-xNr zc6dr|pEl+ba&l32PRhq-DymGB3#EUWb_G3*l%$+EP@|4Y*!E%rMB3fCH zPdNGd^26IS?YzOOQZo|9Rcb=vol4Cx5DsW|L;kOr>FxJ43LN}jS`ko<;EdSI+Zk+M z$dEyrC;=zR0KVvR%|=fie@W9y;1j>r%=L!8HcbYswP||rbw6s(vx?`o_Ch_r;%CiK zp+IZ+ywVDWfTnq~dZA^J^Tx`EvPs__I91=DL*KdWxsBmKyT32~Ujd={R zA5(0j=R~_RXalm{v}bDBb+r1U8c2562J+tS+LMe2d1`|gPxI3Ls)C3B?GAn;KEf(L|a52lu@{d8^LwXXx(zgN@Ba2@ctodFahwLaiG zQhS%Xj?(HGubrp;lJPtF+6%6{sziH6$>-0|ZWbzLdSnW*6;+5y6&0SDLPsX6y3@bC zfS0h@+VQS@!b0sQYN<~`rwXk!?1n)7t=cs_YOVG{Eqiap^R;R?aZo!ET2^T{!~H6) z6;>V6p24+{eX$G=12whz+{4<=igFxluVl7qxaWlSEo^X~X=lw-(X@!G_beRaVyI}S zH}l5beSUD~+5tYT81x$GV}dyYeNOT&**+i0`QL+m8VL}R>%*b=S09n3!^T3NFz!Fh zXEB3yqkLju?a^@buB*-!ws0SBSTNitkQ52lqz9-DE_*785Af7(S=LcWta!*tEe>V43#c6B8u(Q)|$+6|qs$l(v znsHQ(!C|iUaUn>?pMXz@7p1A^(eL}Xxk%#|$MNeA7v5>BPg4fXkN8A#zRl;lTsj0i zY{sAM^qJ*O=iz*7rOzT4j)y1Zb~^zld=3WS;2F32sJ(q8AAiw4D0Rmu9)!pAdr|mt z)TUM6`{cND^ymtMx^aFUEBd-BpvN7bi96gh%zw`zr>z1%yf*CY73uu82}iWMR5ds> z-f-hn9{Xf?NsDhS-0Bco7new|c)KwaSK?`~y>3@yIj+bY0UDSZ@8O>G|GQU^e3i*? zwsW?Xgv6vYM{`N$nXWqS1A}Vo>Oehz-2j;8ubW^$^$W0{1_B;+fSUojsib&|q6EUD z+PVw&cq8lRbntJWuCrZ%r)TYoUUhZZ_Aors!R@-b{dUEXAl)EI!CM6D`gp+VaGeqE z%+&|*o8h_#xJMnY`;{P*yC>@I*MdhGx~34@8r@maTDJ-!+UVB6sW!S*d`Mf}_!RIk zEBwF`;2xO$9`9|T%c2n zyxse{HgaCRQTK@pASQClX5C|fCPxEbuuYd>kfunEQ{=#gHM6A&J{_o0^X2z+?i&8y zbKNOMQ~L+JmY|PkfN0`l<$5=~7CPYBcf9w%|6s7rD$P?u(^1u^&Oz6TA$3z)%qd< z1RwoTe!@qu#2Z|lK1$%O27Q5?kM-B%%Bg#8{VZJgD1#nF+AHN)V~J_948mME`)(FI zuBQ*8MNBO36slk5N-LBQ?$StabLV)t-kmQ=(SPkPtz-DqUiwmj4g8n48 z`%iez@jS_)TB+2l`RIZAcjX*aC3-$HDKKjZ7K|osG=#)C|X> ztenwfaveJ&RFb&3YQU2|(l_#^!vcPBkN%!3KXO3t&H(4K+WeP;`c85le?*@ym)2># z{J4IDJ5M-^!4%-n*PhoW1>uMotes^q)myV`N>%d0F(O9cc>GX5WI7*MB3@*UeR|x+ zAvX?<69c?n%liTs9*q-QOP9dFw?tPMG+y+kiF^*=@6Nw*dL~piXryMMH59gI94iZ0J}#3^co|o;Xz<01-MKQeJDy@NOT+pfE2l4g6IJ_ znKy=w6U6#}3x`m6FhLBiN!-J`Qz34aloXDZ+9hR!e3Gn5M{cgTiRR29sodbeTWAy) z@p`!a7AEPu#trIB6g_KBU7>x=Df;3^E7$HEb99Em=1F2}{>LQIPw>W8>-+C@k^13E zcsxyVSyirac2U+VxQHljO zri<<#aSmlVY+E44d&JkA<}MWDSpxim7FZ(GpCLB)N^&YYr$d*w#XuOeKy>p+N|F*Y zMZxMBV!B{5!HpSWfnbV;%$Z^=i-GAg#Y7eh`-$S<&zWKpi-*Ru#2hrgc$OG1PYm^h z@)KG;+?XYXvLukdEhY=mQIPt!*j$J7~vSM`L=Q%oCdmu~E=yz8EXSnjmMsI8um>hA-xe?_(;( z3$O%Z;gJmY{NGw1@Qx=I|)ryO9)=;PHG&sKj*ZkNX zykP2LjAMfPi^W)Fv@=S65$;Vx&`G?Vj9P`wa85aPlSbuYBz#ql7k-FG?#|W$*{iV& z1g#Lgy-cR~M5&nL;z74WjB!tJ7=#ubR66+T0Je*%OT-j(?Z6Uo1iIE>DdsUg3Wh8d zI;2{$ z!`<8=x_FwR?9Dtr0d6cqONpRgj+Z1s+vQ@MkPrn^mWwTf1QQ%yjwKZhe=iqPJz|{M z2X<5p$6^fr6f>K701Ke|3b8*XxMKyzj)$LDU}2*gkP@Lkh>g+mJP;Fv#3(ohVk;rh z1fDC!c+W&#Rn9 zlcJ!}oOA+v#t+^iG9PJOj;V%@q|=0YJn%qI*rjwM)+&3*}Ok ze~FpNMjd8m#5>s9;$h7@=t}~ee@CpqWQ*5`Y4~u}IVxn010^Swxp(CE}N%fTWo|uY_aoT%gQ?z{GJ*gj0tHP%3RUvie{0gb8HdSEzOoE>) z#6$r{g`l-!OBxl1t`+mp*!i{SQ4F}O!-9x~mg}$};^3`y;u>_*upZA6pfgb-oL(;$ zp`DcX#UvUH#=np0nqcSql9`|nFp(G-_yKmKSUCRyx)ukT4QMnTI&Hw_o&X0nV9Z1a z-zXNNnKc{56zbGhH)3W?p!pE{do;B95HE~@vJcUAEF2|@gXbTL=~P#n#O7#b`X;d@ znmN7+uSKEiP?0Um#Zb)5*= zA4_Ide2o1)E(*?kj2@f7W3yx?70Jt4s|GTQ;L#ad2m| zXhriYw&0}+aE2%mgsqrZ5;Wb4WsY5L%2o_D!S1b6gSt;=F;IV-n4)y{H=GnQ3x`5f zxmX)Ie=NGd;%%bmOS8h&ZDLbczYSY|0(5y7yPk2ol#fN*#o?IHKie@O>}ps5*fMvB z4KTIwJ8(pehP^waR&##`Rz@rg{6rj&PG9~+Z0hCg&0WV9z>X6*b*JtWJzk6>*uxD_ zI8*fSiZwarmV`uTw^Pd5^qts8um>LADdtcQ4BaKhc{)2F4iD#ciJ|u1ac8&aiMj2& z3*Cr?6T8Ibp3dQ{V=nACiVkl-jFWRX#fyiy-C_pjapG=lSBdb?Zmjeqp1em4X4EwY zaI9e5Hrk8*$OOwd`hp#lOHEnWi)XRWbT2lZblAQZ1LL4@FOEIM`L$9xKE760~7qQ z5Bpa%G~SPGCI&|Bmom1VC=RadMh^T4u%~>2jk(ZgJLsJ=UmZs?21E}lvFOws<8YMp>35^zc`+3 z@{D%6l@7&+u<4ng(IK2ea0#&X5E_etuMc51V?lQqD=Q9W9~P5dTDjCZf-{#hC3sK^ zw<*Iu7lRe1kWkNxL2>CqFbq5*_Q5pw9uZR^@~F5A>+SGytlDU}dQ?nwcV-N_gy1G= zc#dTteb^xO3Krk6IgsP32^$D)S5hwR%G)F%|5%BrauY$heGyt_CJu#+X{Z<+7*}m=8bjjrfBPzJj*y zj#!4To*D0o?=TUL-xVh^15djrE*0 zksID&Q7~44g=B&Q3PWcW&1<CDq23=>^h795B+EM;AIml%Uw z!MgGu2?m3}xtB4-|Jc6tceX zU1uz=eqhWpjAH#^d6wY^Hh@p)Vwfn$cM<>Uj-lB+r-wns*dQqGiDq+PLr=pzHkg}w z8RU!&fwbNU)UU?bphf5T2@=354kpCjSRdszm! zo^9yOMnT*lEWSK`V346gVEKH&5W^5TD}ckp(3L{iFdWk?f-A!@QZeL=K&zv{N;C!@ zj=;820wy!&WGr82#v*0o;IENbY2(2!&rrom;YuEQHvuy94KvtVa6TWSPK2}q!0*74truXHGRN64)I0b~^eumj})u$L2xtOtdf`zMYBXzX1GZ zVGS;XEweByi{P(WXm&BrecRB8v2rLc!_Xygg=i@R&qf2wVC-zeMYbH;%|WXxV9p$D zZ2-@|$C5lZ$1tC*gaLEW$PJJ~k) zX_et9+s>`4@r><&zuv(b{)7)mHcS-QPB5;)(%%IS*I?*wUjJP~BZ2LKE)`e{oG;jG zI4!WfaHRsB`;?DeZ-`N_ecZay@S7Lg&zFB<2ykJQu!9?}u>-u%euEEV2O+=G@II^J zlMdoV>=0-UUFIn6v|XvI#zsY6(C zCn4@I7U*X@_pqT*&Q8IlV^}$#L*Q}jn5W^=akO>@x}3lPuKx^7hu2{GM8`D!(zDxUCtT4X4k=Z9s|FH^XIYg+<;lB}}0s4PySj%ki#SMc2?p!tavR}dF z8dm*pFyR^&<{jv99n0x1|M!L=Kw$S^_jPRQ_u($l1E~KkT6zfoevAF;cQVq1`+jHG zi!ADal>h;!4Edkit+i(y4L0N=>%FLYfMv#_`Ubq^Ts$4afU`&Nmw+O*Lu! z9dByB>;R+)sEK@&#zLA=Z_-qfW~NgkyvQe1lV;AFG%0e_JaW8)FMIhK3u&G^H7}JK zRFXy=V7LFuHPxhve3K?c;TwUolUd=L%6fqnN$l^~%e?AHb+6B{2|b&^Glg$BPD4f) zjF}B)qCsFK8Voj~Az*Yx$^|pgaIg}M1RGHv7~PNxz)WNTE74T25lsi9JJJj=6U_uG z(JZhLm4VR%X%3i)7J!v#A=rrUt$9zRWnd-(uoA5T8__#p^g?{+jk0kV>`r`fM5Dj!cngFMy2$PSiZ?u?LlYZExlwxOVh43#0k%)^iB19 zjA-(yJ2l4Z z<#ayO)xWKOa(;AJffBV7#7t28~c#+Rro^MU8Nx>%8@Ce+x&5cf0M*F4g~*EGn4%zSSna2`_m1i zji@acry${rkwhKAO4I{vL_NVc6{!z5PxY^A`o^*4Khmniv<8B;5-ntdjc70!4j|M041K!olC=WzP+z*LDE<_@-&0jYR%VoXPB z0A?cWe?-T@Msy#Ht&s2~XCwii-hI?6pgG=H*(lT#j2TFcz)Z9ptVADxjp%DIwnq9E z%tSwemFQQn5j_NB8zfAS=qOl;3c*H%_fc(;uqP0iz)BPkHlhqLwnHigGtmRE5jvvgi;wlm80oaKC0OJ`X%sY`cSc&|~Y-b`-8gtv3CaI&|xOn)Fs!5EBV70-T7$v># zPt*{MNl0N}Cc;uAY6Lc-2yRS{dS361>yZCQWFRKe1grzmLLAtL62O>^lmcd=R$wJ+ z4K||oU>tY!Adj`Y(!X9IY>Cw6OG{3oTw?KZ(RKRhdWo%9UR`SMy2Ws97`aZ zV?6o#{UR$=Q-mTMxiE>*IC3G4!;uRKM?<1XV7!hrjhnAWi3&dTR@5kAilZww{%(f! zwjp`Eakcs%7DTi#7px*$SPC{G?2-ng zHDzXl2_+gO1|^o84RKZ1-?--e5Bq<{MbOyvXI!fI)UhV+?^ykp_Ke+H^RdhAJ%7g? zR6x~}xE%UqEe{qxjq6NDL!o7LoPqbPj&oP=@9Q?{$ttQ&wiW!#)!q%Z+utaW-QHL8 z(4TCF9s5yQxZJjXT?13(zQ#AM$p6D{AwB|c!K^}js)xd{F5d>lizs6JYLEiB#n3sKRN3Q@30c+jV7|81q z6}m?mA11!>M&Umk4n>DGU=78TbzmbB!B`*3z|HmJs}kRMd+{Ik2BN*jI2fUYHaHj| zwJ$Sf$D<^mB%&mtB%?G%NkM7GjoHnE2E3Btiah9q?{>ab*?csEy9b&-gljhT?OM%q#Ix+x&v0ChhQW6 z9gMk1Pr*!74OXIm!A2y2aTt;u%tQ*X61jklND0Q_NE$E`1%Z_a?=y&^z&HZQ1ZJXs zxO<0$6EG33F3m{Oz)Um)tVDCbMl=_UBas$?nP@Rsk#tLg?By~i+0JI=z`amC5(@z5 z)=?Pm6EG7U0xQu4uo2-hE)VG&FcVz|D-kZ^h;TuYkA&GGas?}q5^O|1U@Sl~fEh{W zA8b$4LmK8~vcp~shgrz_f4aOp*7%&sz-4;;-*obh6 zQjCOiA`#w65VZpvQ3o)NM(PM=qV8ZN>H{{S0bm@1gtx{-IbbC!1{=|6FqR;dfSG74 zScz~JBPs>sSfq(yCbEE)2$wcQQ@}V5X)2hB@D`T{Z)1rzfN?z1Mlcgu!AkTI*oZy` zV=2;RFcWP7E72*i5q$y12}pOqO!N;}iK@Yd1kF#$-OHlhO65^+wK)F?7b4RF>);sj z;`S|~LmKyfCFDV`G+QnF8VIf&Xxy-(xNRGu9d9=*t^Ea9me_K9?I3eWV|zsru60ya zXuDPs(V_5UN6P>xIp3n{?c|nwlGDS^z4=cDUi2-`RuMWyh{N71_a3NWrQGJ(3WujR z#gIm#n!hk`Sg^0xz41~PoaFG*RIm}X0AnqrG;Xfds_M@F@dpQvO)RiH!RxWwp5PU@ zqk$w&bGUfOu{%Q_WY)|?oAy+<(tGJbyLXKU>6?q6PK@Z>4WE=zkwByI{*4q#_=AHJ z{L>+Kynh||b%MVER*v@%w;z2y-oLK>$g|X`ZC2_GD=zg9g5M_ii?E^8KNvbpRQSN; z3I36qsHUFu=4t+z;n~CTa)ys-2A50yqsUN_3niEYwI=wFbT=h5j)}v#kTKD}LsLA7 zN{mfx>M1$f&75D9hi|s!IlPSyHATn7p%Oihj1GO3b}&EIAo02V20z-p=5;mdwZ4Pw z;iWpM9+swFO|t)2#EXh{&#-S1LM0v1|3^Tz^N6Q-WW*}GM>?kaI*T`d$St)pN(Aq7 zarTO(@0EGADr1-6?Kjfi@743yT~qH9yx)b3~sDamDS$!b%X|5{*~w%l^C zU1b1Iy4o(r6NYqe`5RA)Y~?AXqOr`tMq zb@8#U4m>Bm^ql~#%gogAgZDb#lk+XVchn5#RoyfF6TI< zeLbs6$qI&rlRA6zD;+yEGvP!16}LLq<0+FnMLdT(T`~=j_)aJ9vICPkqh#>|le(lQ z!!zDxC{*n2qKDGGT^evax~RasFQ-5)S0@)`4W459?~r8`Owl%6QPP}N3_%%+l8Z77WjM+R6f??5lu;;oDETM_D1|6RD8(qFQO2N@ zpo~QshcX_e6lDU+TPPDzEGUyuCZkM2nTj$EWje|Xl$j{AP~JunDCM)7c%QBQ)7#>B z4)8%6gRdQ9eM~fU*(gLzGP@ zR+NuWK1SJ$vIS);$~KhkC_7L-LD`A23uQOT9u$tU7v)oweJJ};Dp3xg97L%?IfQZ; zD8HcGMzNv%it-!E9hAE$_fYPmJV1Gf z@;k~OD1V~-h4MGbKPZn-9-}-#d5Thv@-NCWl;`s-XW1eY0)aqIpdfG|a3ydfa3}B} z@Fege@Fu85pd?Tcs0lO#S^^&e9f6)eBrp*868I7L69f>{CI}>`Lr|9>h#;6CgrFWl zC_#OK1_TWW!U&86;RKBcA_yW08WS`jh$1i%L=(gi#1h02#1kYCBoZVMBoj0xNFiuO z(3}8Q^p>+N2+{~z5~LHfBFG?UO@NQZEoa*jv?FLw(1D;MK_)>bg3bh41YHQa5_BWz zPSAs(CqXZQ-UNLJ`V#ab=ua?!U?4#@!61Shg24ns2!;~m5)304PB4PNOfZsQ6hR(A zK0yINAwdyAF~MkpF$5(9V+qC)j3+21m_YCr!9)TJ!6bso1XBp65=^u$f>B!B&E81ltLA5PU+glVBIYZh}1o zoM11(rv&>5_7hYR93VJIP(^Tv;4r}vf};e-2#yn+AUH|z8Nn%n&k0TwoFVvv;4HzH z1m_6O6I>v;NbnWGC4$QYUlV*oaE0J1!8L;G1m6tfzf}aU~ zA-GLoBlwlzH-b9^cM0wh+$VTI@Q~nlf0QqZ-Rda9uYhyctY@$pqk)cf@cKJ z84iB}9xwudKu(|_a3OFda3gRh@F4Ic@FMUgs70V8P!XsJGz3}#9|9eLo`6p9ziHUeS!uA4GF>sj0E8XjR+zLA_*E3G$Dv0FcCx( z#1O<1#1X_3BoHJLBoQPNG$lwOXhzVSAXTWs;ZMLnf|3>yDKyv9QHAAd3!%hY=J?y3 zrX2@tt*DlQG>*;1yQ=8zRhDZlgjik0j{7Zyl&X7({>)7#%gT&cg5TX2x%yQ!c-TVF zc2A@LTyZ)#ncEiT=hC8m#B1R)NBG`;ky3o;Ct~VO_UmPH?fa2IUz?Ux%tzC$YOi#d za7HbCDQeXnjMCIY#BY)^b4KOjx4&WdO)swX&BKDi((PVXkk>7$u0L%d^jB1kKAk1J z%PJ1y{wIEb=^b48g?+^zw8y#PFOc>>Jsn@xc~w1OX+rZ>ua#bvrFEK6nfY31g=JZq z@TYgbW|VcAjQ)zK%CbC7!27mUj>n1gA50b1K+&=s`*9RhRlO2}nD;8j_iwaBtEyg| zCj6CO^}BmZ;TLtqR{xel*NODrFLS*ruxAvG&4eA+P#n`lY?_g&_Sezz$xdY!k`olkPAO&bx{g0nOV8 z>O~Fjv=^!x-svD{D*q?#P53_v*k~OELi-3+l^=B!manPm+9p%jBzN3b_b*AVA7zT_ z-M=6tBE3r0AyZiB{UZC?Qu{Zt_++Xefy#OPk5zy4$`o+#;MK9H%Cam|&_1hLw4{^p zrQ(&0NW0(n=-(53D>kp`B-E~2w6c@%yI0lJlnfz|y-3XO!jYPLUnw!?XN&oZo^0qO PAaoY0p5Px0xnBK$t~jdQ diff --git a/src/Zenith/Boot/BootDVDIns.HC b/src/Zenith/Boot/BootDVDIns.HC index ba77af88..9fc2ce95 100755 --- a/src/Zenith/Boot/BootDVDIns.HC +++ b/src/Zenith/Boot/BootDVDIns.HC @@ -12,9 +12,9 @@ U0 MakeAll() { - if (Cmp("/Compiler/Compiler","Compiler",,':')) + if (Comp("/Compiler/Compiler","Compiler",,':')) throw; - if (Cmp("/Kernel/Kernel","Kernel",,':')) + if (Comp("/Kernel/Kernel","Kernel",,':')) throw; } diff --git a/src/Zenith/Boot/BootHDIns.HC b/src/Zenith/Boot/BootHDIns.HC index 32a5c30c..e5d438f5 100755 --- a/src/Zenith/Boot/BootHDIns.HC +++ b/src/Zenith/Boot/BootHDIns.HC @@ -7,11 +7,17 @@ #define KERNEL_BIN_C "Kernel.BIN.C" + +U0 CompComp() +{ + if (Comp("/Compiler/Compiler","Compiler",,':')) + throw; +} + U0 MakeAll() { - if (Cmp("/Compiler/Compiler","Compiler",,':')) - throw; - if (Cmp("/Kernel/Kernel","Kernel",,':')) + CompComp; + if (Comp("/Kernel/Kernel","Kernel",,':')) throw; } diff --git a/src/Zenith/DolDoc/DocCodeTools.HC b/src/Zenith/DolDoc/DocCodeTools.HC index a3878f70..5bb3c6d5 100755 --- a/src/Zenith/DolDoc/DocCodeTools.HC +++ b/src/Zenith/DolDoc/DocCodeTools.HC @@ -56,7 +56,7 @@ I64 PopUpEdFmt() class CRILex { - CCmpCtrl *cc1,*cc2; + CCompCtrl *cc1,*cc2; CQueueVectU8 *indent; I64 depth,exp_depth,one_shot; Bool was_new_line,is_not_cont; @@ -246,12 +246,12 @@ CQueueVectU8 *EdRICode(CDoc *doc) CQueueVectU8 *res; CRILex *rx=CAlloc(sizeof(CRILex)); - rx->cc1=CmpCtrlNew(,CCF_KEEP_NEW_LINES|CCF_DONT_FREE_BUF,doc->filename.name); + rx->cc1=CompCtrlNew(,CCF_KEEP_NEW_LINES|CCF_DONT_FREE_BUF,doc->filename.name); Free(rx->cc1->lex_include_stk->full_name); LexAttachDoc(rx->cc1,rx->cc1->lex_include_stk,doc,, doc->cur_entry,doc->cur_col); - rx->cc2=CmpCtrlNew(,CCF_KEEP_NEW_LINES|CCF_DONT_FREE_BUF,doc->filename.name); + rx->cc2=CompCtrlNew(,CCF_KEEP_NEW_LINES|CCF_DONT_FREE_BUF,doc->filename.name); Free(rx->cc2->lex_include_stk->full_name); LexAttachDoc(rx->cc2,rx->cc2->lex_include_stk,doc,, doc->cur_entry,doc->cur_col); @@ -261,8 +261,8 @@ CQueueVectU8 *EdRICode(CDoc *doc) Lex(rx->cc1); EdRIStatement(rx,FALSE); - CmpCtrlDel(rx->cc1); - CmpCtrlDel(rx->cc2); + CompCtrlDel(rx->cc1); + CompCtrlDel(rx->cc2); res=rx->indent; Free(rx); return res; @@ -458,7 +458,7 @@ U0 EdCodeTools2(CDoc *doc,I64 tool_action,Bool beep=TRUE) tmpc=TaskExe(task,Fs,st,1<htc.hash_table_lst=NULL; @@ -40,7 +40,7 @@ U0 DocInit() if (cc->token==';') Lex(cc); } - CmpCtrlDel(cc); + CompCtrlDel(cc); for (i=0;ihtc.hash_table_lst; try { cc->htc.hash_table_lst=NULL; @@ -476,7 +476,7 @@ pd_err: DocDataScan(doc,doc_e); DocDataFmt(doc,doc_e); } - CmpCtrlDel(cc); + CompCtrlDel(cc); } catch { Fs->catch_except=TRUE; if (!doc_e) diff --git a/src/Zenith/DolDoc/DocTree.HC b/src/Zenith/DolDoc/DocTree.HC index b820c02f..857b4da8 100755 --- a/src/Zenith/DolDoc/DocTree.HC +++ b/src/Zenith/DolDoc/DocTree.HC @@ -193,7 +193,7 @@ public I64 ExeDoc(CDoc *doc,I64 ccf_flags=0) {//JIT Compile and execute a document. I64 res; Bool okay=TRUE,unlock_doc=DocLock(doc); - CCmpCtrl *cc=CmpCtrlNew(,ccf_flags|CCF_DONT_FREE_BUF); + CCompCtrl *cc=CompCtrlNew(,ccf_flags|CCF_DONT_FREE_BUF); if (Fs->last_cc!=&Fs->next_cc) cc->opts=Fs->last_cc->opts; QueueInsert(cc,Fs->last_cc); @@ -210,7 +210,7 @@ public I64 ExeDoc(CDoc *doc,I64 ccf_flags=0) } QueueRemove(cc); if (okay) - CmpCtrlDel(cc); //TODO: can crash + CompCtrlDel(cc); //TODO: can crash if (unlock_doc) DocUnlock(doc); return res; diff --git a/src/Zenith/Gr/SpriteCode.HC b/src/Zenith/Gr/SpriteCode.HC index 7cf302c5..46ab3def 100755 --- a/src/Zenith/Gr/SpriteCode.HC +++ b/src/Zenith/Gr/SpriteCode.HC @@ -199,7 +199,7 @@ public U0 Sprite2Code(CDoc *doc=NULL,U8 *elems) } } -CSprite *Code2SpriteElem(CCmpCtrl *cc,I64 type) +CSprite *Code2SpriteElem(CCompCtrl *cc,I64 type) { I64 i,num1,num2,size; CSprite *res,g; @@ -565,7 +565,7 @@ public U8 *Code2Sprite(CDoc *doc,I64 *_size=NULL) CSprite head; U8 *res; Bool okay=TRUE,unlock_doc=DocLock(doc); - CCmpCtrl *cc=CmpCtrlNew(,CCF_DONT_FREE_BUF); + CCompCtrl *cc=CompCtrlNew(,CCF_DONT_FREE_BUF); CHashTable *old_hash_table_lst=cc->htc.hash_table_lst; CHashGeneric *tmph; I64 i,size=0; @@ -591,7 +591,7 @@ public U8 *Code2Sprite(CDoc *doc,I64 *_size=NULL) if (unlock_doc) DocUnlock(doc); if (okay) { - CmpCtrlDel(cc); //TODO: can crash + CompCtrlDel(cc); //TODO: can crash res=SpriteQueue2Sprite(&head,&size); } else { res=NULL; diff --git a/src/Zenith/Menu.HC b/src/Zenith/Menu.HC index b790d5b9..efec0b90 100755 --- a/src/Zenith/Menu.HC +++ b/src/Zenith/Menu.HC @@ -41,7 +41,7 @@ public CMenuEntry *MenuEntryFind(CMenu *haystack_menu,U8 *needle_full_name) return tmpse; } -CMenuEntry *MenuNewSub(CCmpCtrl *cc,CTask *task) +CMenuEntry *MenuNewSub(CCompCtrl *cc,CTask *task) { CMenuEntry *tmpme=NULL,*tmpse; if (cc->token==TK_IDENT) { @@ -86,7 +86,7 @@ public CMenu *MenuNew(U8 *st,I64 flags=0,CTask *task=NULL) {//Parse a menu. You probably don't need this. CMenu *m; CMenuEntry *tmpse; - CCmpCtrl *cc=CmpCtrlNew(st,CCF_DONT_FREE_BUF); + CCompCtrl *cc=CompCtrlNew(st,CCF_DONT_FREE_BUF); if (!task) task=Fs; Lex(cc); m=CAlloc(sizeof(CMenu),task); @@ -96,7 +96,7 @@ public CMenu *MenuNew(U8 *st,I64 flags=0,CTask *task=NULL) tmpse=&m->sub; while (tmpse) tmpse=tmpse->next=MenuNewSub(cc,task); - CmpCtrlDel(cc); + CompCtrlDel(cc); return m; } diff --git a/src/Zenith/Utils/MemRep.HC b/src/Zenith/Utils/MemRep.HC index 250c3cdf..d66ea710 100755 --- a/src/Zenith/Utils/MemRep.HC +++ b/src/Zenith/Utils/MemRep.HC @@ -90,7 +90,7 @@ Bool MemRepTask(CTask *task,Bool override_validate=FALSE) { I64 i,j,k,m,n; CDoc *pdoc,*ddoc,*bdoc; - CCmpCtrl *cc; + CCompCtrl *cc; CMathODE *o; CCPU *c; CTask *task1; @@ -123,7 +123,7 @@ Bool MemRepTask(CTask *task,Bool override_validate=FALSE) cc=task->next_cc; while (cc!=&task->next_cc) { - "CmpCtrl\t:%010X\n",CmpCtrlSize(cc); + "CompCtrl\t:%010X\n",CompCtrlSize(cc); cc=cc->next; }