TempleOSCDV4.06.ISO

This commit is contained in:
Terry A. Davis authored and minexew committed 2018-09-08 21:47:19 +02:00
1 parent 6fe38d2d9d
commit b632ab9a4f
261 files changed
+6282 -5801

No files matched your search

+54 -49
View File
@@ -37,16 +37,16 @@ U0 PrsAsmArg(CCmpCtrl *cc,CAsmArg *arg,Bool rel)
CHashGeneric *temph,*temph1;
CHashReg *tempr;
MemSet(arg,0,sizeof(CAsmArg));
arg->seg=REG_NONE;
arg->seg =REG_NONE;
arg->reg1=REG_NONE;
arg->reg2=REG_NONE;
arg->fstk=REG_NONE;
arg->scale=1;
while (TRUE) {
if (cc->token==TK_IDENT) {
if (temph=cc->hash_entry) {
if (temph->type&HTG_TYPE_MASK==HTT_REG) {
tempr=temph;
arg->reg1_type=tempr->reg_type;
switch (tempr->reg_type) {
sub_switch_start:
case REGT_R8:
@@ -74,8 +74,10 @@ U0 PrsAsmArg(CCmpCtrl *cc,CAsmArg *arg,Bool rel)
Lex(cc); //skip ":"
break;
case REGT_FSTK:
case REGT_MM:
case REGT_XMM:
arg->size=8;
arg->fstk=tempr->reg_num;
arg->reg1=tempr->reg_num;
Lex(cc);
return;
}
@@ -131,6 +133,7 @@ pa_asm_direct_imm:
if (temph->type&HTG_TYPE_MASK==HTT_REG &&
REGT_R16<=temph(CHashReg *)->reg_type<=REGT_R64) {
tempr=temph;
arg->reg2_type=tempr->reg_type;
if (arg->reg1==REG_NONE) {
if (tempr->reg_num&7==REG_RSP) {
arg->reg1=4;
@@ -146,12 +149,14 @@ pa_asm_direct_imm:
goto pa_asm_indirect_imm;
} else if (cc->token=='*') {
Lex(cc);
if (cc->token!=TK_INT)
if (cc->token!=TK_I64)
LexExcept(cc,"Expecting scale factor at ");
arg->scale=cc->cur_i64;
Lex(cc); //skip scale
if (arg->reg2!=REG_NONE)
if (arg->reg2!=REG_NONE) {
SwapI64(&arg->reg1,&arg->reg2);
SwapI64(&arg->reg1_type,&arg->reg2_type);
}
} else if (cc->token=='+') {
Lex(cc); //skip '+'
} else {
@@ -172,92 +177,92 @@ pa_asm_indirect_imm:
I64 AsmMakeArgMask(CCmpCtrl *cc,CAsmArg *arg)
{
CAOTCtrl *aotc=cc->aotc;
I64 result;
I64 res;
if (arg->just_seg) {
switch (arg->seg) {
case 0: result=1<<ARGT_ES|1<<ARGT_SREG; break;
case 1: result=1<<ARGT_CS|1<<ARGT_SREG; break;
case 2: result=1<<ARGT_SS|1<<ARGT_SREG; break;
case 3: result=1<<ARGT_DS|1<<ARGT_SREG; break;
case 4: result=1<<ARGT_FS|1<<ARGT_SREG; break;
case 5: result=1<<ARGT_GS|1<<ARGT_SREG; break;
case 0: res=1<<ARGT_ES|1<<ARGT_SREG; break;
case 1: res=1<<ARGT_CS|1<<ARGT_SREG; break;
case 2: res=1<<ARGT_SS|1<<ARGT_SREG; break;
case 3: res=1<<ARGT_DS|1<<ARGT_SREG; break;
case 4: res=1<<ARGT_FS|1<<ARGT_SREG; break;
case 5: res=1<<ARGT_GS|1<<ARGT_SREG; break;
}
goto mm_done;
}
if (arg->fstk!=REG_NONE) {
if (arg->fstk)
result=1<<ARGT_STI;
if (arg->reg1_type==REGT_FSTK) {
if (arg->reg1)
res=1<<ARGT_STI;
else
result=1<<ARGT_ST0|1<<ARGT_STI;
res=1<<ARGT_ST0|1<<ARGT_STI;
goto mm_done;
}
result=cmp.size_arg_mask[arg->size];
res=cmp.size_arg_mask[arg->size];
if (aotc->seg_size==64)
result&=0xFF0FFFFFFF;
res&=0xFF0FFFFFFF;
if (arg->reg1!=REG_NONE && arg->imm_or_off_present && !arg->num.i &&
!arg->num.glbl_asm_undef_hash && !arg->num.local_asm_undef_hash)
arg->imm_or_off_present=FALSE; //Zero displacement
if (arg->reg2!=REG_NONE || arg->scale!=1) {
result&=0x0000FF0000;
res&=0x0000FF0000;
goto mm_done;
}
if (arg->indirect) {
if (arg->imm_or_off_present)
result&=0x00FFFF0000;
res&=0x00FFFF0000;
else
result&=0x000FFF0000;
res&=0x000FFF0000;
} else {
if (arg->imm_or_off_present)
result&=0x000F000FFE;
res&=0x000F000FFE;
else
result&=0x3F0FFFF000;
res&=0x3F0FFFF000;
}
if (arg->seg!=REG_NONE)
result&=0x00FFFF0000;
res&=0x00FFFF0000;
if (arg->reg1==REG_NONE) {
if (arg->indirect)
result&=0x00FFFF0000;
res&=0x00FFFF0000;
else if (arg->num.i<0) {
if (arg->num.i>=MIN_I8)
result&=0x8FE;
res&=0x8FE;
else if (arg->num.i>=MIN_I16)
result&=0x8EE;
res&=0x8EE;
else if (arg->num.i>=MIN_I32)
result&=0x8CE;
res&=0x8CE;
else
result&=0x88E;
res&=0x88E;
} else {
if (arg->num.i<=MAX_I8)
result&=0xFFE;
res&=0xFFE;
else if (arg->num.i<=MAX_U8)
result&=0xFEE;
res&=0xFEE;
else if (arg->num.i<=MAX_I16)
result&=0xEEE;
res&=0xEEE;
else if (arg->num.i<=MAX_U16)
result&=0xECE;
res&=0xECE;
else if (arg->num.i<=MAX_I32)
result&=0xCCE;
res&=0xCCE;
else if (arg->num.i<=MAX_U32)
result&=0xC8E;
res&=0xC8E;
else
result&=0x88E;
res&=0x88E;
}
} else {
result&= 0x3F00FFF000;
res&= 0x3F00FFF000;
if (!arg->indirect) //M8-M64
result&=0xFFFF0FFFFF;
res&=0xFFFF0FFFFF;
}
switch (arg->reg1) {
case REG_RAX: result&=~0x3000000000; break;
case REG_RCX: result&=~0x2F00000000; break;
case REG_RDX: result&=~0x1F00000000; break;
default: result&=~0x3F00000000;
case REG_RAX: res&=~0x3000000000; break;
case REG_RCX: res&=~0x2F00000000; break;
case REG_RDX: res&=~0x1F00000000; break;
default: res&=~0x3F00000000;
}
mm_done:
return result;
return res;
}
Bool AsmStoreNum(CCmpCtrl *cc,CAsmNum2 *num2,I64 cnt,Bool U8_avail)
@@ -471,8 +476,8 @@ Bool PrsAsmInst(CCmpCtrl *cc,CHashOpcode *tempo,I64 argcnt)
if (tempa1->reg1>=20) //RBPu8,RSPu8,RSIu8,RDIu8?
cur.has_REX=TRUE;
} else {//SV_I_REG
if (tempa1->fstk!=REG_NONE)
cur.last_opcode_U8+=tempa1->fstk;
if (tempa1->reg1_type==REGT_FSTK)
cur.last_opcode_U8+=tempa1->reg1;
}
}
if (a1==ARGT_R64 || a1==ARGT_RM64 || a1==ARGT_M64)
@@ -589,10 +594,10 @@ Bool PrsAsmInst(CCmpCtrl *cc,CHashOpcode *tempo,I64 argcnt)
cur.has_REX=TRUE;
}
} else {//SV_I_REG
if (tempa1->fstk!=REG_NONE)
cur.last_opcode_U8|=tempa1->fstk;
if (tempa2->fstk!=REG_NONE)
cur.last_opcode_U8|=tempa2->fstk;
if (tempa1->reg1_type==REGT_FSTK)
cur.last_opcode_U8|=tempa1->reg1;
if (tempa2->reg1_type==REGT_FSTK)
cur.last_opcode_U8|=tempa2->reg1;
}
}
if (a1==ARGT_RM64 || a2==ARGT_RM64 || a1==ARGT_M64 || a2==ARGT_M64 ||
+9 -9
View File
@@ -9,7 +9,7 @@ U0 AsmPrsInsFlags(CCmpCtrl *cc,CInst *tempi)
break;
} else
return;
case TK_INT:
case TK_I64:
if (cc->cur_i64==16)
tempi->flags|=IEF_OP_SIZE16;
else if (cc->cur_i64==32)
@@ -20,7 +20,7 @@ U0 AsmPrsInsFlags(CCmpCtrl *cc,CInst *tempi)
case '+':
tempi->flags|=IEF_PLUS_OPCODE;
case '/':
if (Lex(cc)==TK_INT && cc->cur_i64<8)
if (Lex(cc)==TK_I64 && cc->cur_i64<8)
tempi->slash_val=cc->cur_i64;
else if (cc->token==TK_IDENT) {
if (!StrCmp(cc->cur_str,"R"))
@@ -74,9 +74,9 @@ U0 AsmHashLoad()
while (cc->token) {
if (cc->token!=TK_IDENT)
LexExcept(cc,"Expecting identifier at ");
i=LstMatch(cc->cur_str,"R8\0R16\0R32\0R64\0SEG\0FSTK\0"
i=LstMatch(cc->cur_str,"NONE\0R8\0R16\0R32\0R64\0SEG\0FSTK\0"
"MM\0XMM\0OPCODE\0KEYWORD\0ASM_KEYWORD\0");
if (i<0)
if (i<=0)
LexExcept(cc,"Unknown Stmt");
Lex(cc); //skip keyword
if (cc->token!=TK_IDENT)
@@ -87,7 +87,7 @@ U0 AsmHashLoad()
tempr->str=cc->cur_str;
cc->cur_str=NULL;
Lex(cc); //skip keyword name
if (cc->token!=TK_INT)
if (cc->token!=TK_I64)
LexExcept(cc,"Expecting int at ");
tempr->type=HTT_REG;
tempr->reg_type=i;
@@ -108,7 +108,7 @@ U0 AsmHashLoad()
tempi=&tempo_max->ins[tempo_max->inst_entry_cnt];
tempi->ins_entry_num=tempo_max->inst_entry_cnt++;
tempi->slash_val=SV_NONE; //Not zero!!
while (cc->token==TK_INT) {
while (cc->token==TK_I64) {
tempi->opcode[tempi->opcode_cnt++]=cc->cur_i64;
Lex(cc);
}
@@ -161,7 +161,7 @@ U0 AsmHashLoad()
//Parse aliases.
if (cc->token==':') {
while (Lex(cc)==TK_IDENT) {
tempo2=MAllocIdentical(tempo);
tempo2=MAllocIdent(tempo);
tempo2->str=cc->cur_str;
cc->cur_str=0;
tempo2->oc_flags|=OCF_ALIAS;
@@ -177,10 +177,10 @@ U0 AsmHashLoad()
temph->str=cc->cur_str;
cc->cur_str=NULL;
Lex(cc); //skip keyword name
if (cc->token!=TK_INT)
if (cc->token!=TK_I64)
LexExcept(cc,"Expecting int at ");
temph->user_data0=cc->cur_i64;
if (i==9)
if (i==10)
temph->type=HTT_KEYWORD;
else
temph->type=HTT_ASM_KEYWORD;
+3 -3
View File
@@ -127,7 +127,7 @@ U0 AOTStoreCodeU8At(CCmpCtrl *cc,I64 ip,...)
I64 AsmLexExpression(CCmpCtrl *cc)
{
U8 *machine_code;
I64 result=0;
I64 res=0;
cc->asm_undef_hash=NULL;
cc->flags&=~(CCF_UNRESOLVED+CCF_LOCAL);
cc->abs_cnts=0;
@@ -138,10 +138,10 @@ I64 AsmLexExpression(CCmpCtrl *cc)
LexExcept(cc,"Extern Not Allowed at ");
if (cc->flags & CCF_UNRESOLVED)
LexExcept(cc,"Undefined sym at ");
result=Call(machine_code);
res=Call(machine_code);
Free(machine_code);
}
return result;
return res;
}
U0 AsmLineLst(CCmpCtrl *cc)
+59 -59
View File
@@ -1,19 +1,19 @@
U0 ICAddEct(CIntermediateCode *tempi,CICType t1,I64 r1,I64 d1,
CICType t2,I64 r2,I64 d2,CICType t3,I64 r3,I64 d3,I64 op,I64 ip)
{
I64 i,temp,result_reg=REG_RAX;
I64 i,temp,res_reg=REG_RAX;
Bool swap=FALSE;
if (r3!=result_reg) {
if (r3!=res_reg) {
swap^=TRUE;
SwapI64(&t2,&t3);
SwapI64(&r2,&r3);
SwapI64(&d2,&d3);
}
if (t2.raw_type>=RT_I64 && r2!=result_reg && t2&MDG_REG_DISP_SIB_RIP) {
if (t2.raw_type>=RT_I64 && r2!=res_reg && t2&MDG_REG_DISP_SIB_RIP) {
if (t1&MDF_REG && !(r2==r1 && t2&MDG_REG_DISP_SIB))
result_reg=r1;
ICMov(tempi,MDF_REG+RT_I64,result_reg,0,t3,r3,d3,ip);
i=ICModr1(result_reg,t2,r2,d2);
res_reg=r1;
ICMov(tempi,MDF_REG+RT_I64,res_reg,0,t3,r3,d3,ip);
i=ICModr1(res_reg,t2,r2,d2);
if (tempi->ic_flags&ICF_LOCK)
ICU8(tempi,OC_LOCK_PREFIX);
ICRex(tempi,i.u8[1]);
@@ -26,31 +26,31 @@ U0 ICAddEct(CIntermediateCode *tempi,CICType t1,I64 r1,I64 d1,
temp=REG_RCX;
if (t1&MDF_REG)
result_reg=r1;
res_reg=r1;
if (temp==result_reg)
result_reg=REG_RDX;
if (temp==res_reg)
res_reg=REG_RDX;
if (swap) {
if (r3==temp && t3&MDG_REG_DISP_SIB)
temp=REG_RCX;
ICMov(tempi,MDF_REG+RT_I64,temp,0,t2,r2,d2,ip);
ICMov(tempi,MDF_REG+RT_I64,result_reg,0,t3,r3,d3,ip);
ICMov(tempi,MDF_REG+RT_I64,res_reg,0,t3,r3,d3,ip);
} else {
if (r2==result_reg && t2&MDG_REG_DISP_SIB)
result_reg=REG_RDX;
ICMov(tempi,MDF_REG+RT_I64,result_reg,0,t3,r3,d3,ip);
if (r2==res_reg && t2&MDG_REG_DISP_SIB)
res_reg=REG_RDX;
ICMov(tempi,MDF_REG+RT_I64,res_reg,0,t3,r3,d3,ip);
ICMov(tempi,MDF_REG+RT_I64,temp,0,t2,r2,d2,ip);
}
i=0x48;
if (result_reg>7)
if (res_reg>7)
i+=4;
if (temp>7)
i++;
if (tempi->ic_flags&ICF_LOCK)
ICU8(tempi,OC_LOCK_PREFIX);
ICU24(tempi,0xC00000+i+(temp&7)<<16+(result_reg&7)<<19+op<<8);
ICU24(tempi,0xC00000+i+(temp&7)<<16+(res_reg&7)<<19+op<<8);
}
ICMov(tempi,t1,r1,d1,MDF_REG+RT_I64,result_reg,0,ip);
ICMov(tempi,t1,r1,d1,MDF_REG+RT_I64,res_reg,0,ip);
}
U0 ICAddSubEctImm(CIntermediateCode *tempi,CICType t1,I64 r1,I64 d1,
@@ -480,7 +480,7 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,U8 type_pointed_to,
CICType t3,I64 r3,I64 d3,I64 op,I64 ip)
{
Bool done;
I64 result_reg,temp,i;
I64 res_reg,temp,i;
if (tempi->ic_flags & ICF_BY_VAL) {
if (t3&MDF_IMM) {
ICAddSubEctImm(tempi,t2&MDG_MASK+type_pointed_to,r2,d2,t2&MDG_MASK+
@@ -508,47 +508,47 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,U8 type_pointed_to,
}
if (t3.raw_type>=RT_I64 && t3&MDG_REG_DISP_SIB_RIP) {
if (t2&MDF_REG)
result_reg=r2;
res_reg=r2;
else {
result_reg=REG_RCX;
res_reg=REG_RCX;
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,t2,r2,d2,ip);
}
i=ICModr1(result_reg,t3&MDG_MASK+type_pointed_to,r3,d3);
i=ICModr1(res_reg,t3&MDG_MASK+type_pointed_to,r3,d3);
if (tempi->ic_flags&ICF_LOCK)
ICU8(tempi,OC_LOCK_PREFIX);
ICRex(tempi,i.u8[1]);
ICU16(tempi,i.u8[2]<<8+op.u8[0]);
ICModr2(tempi,i,d3,ip+4);
ICMov(tempi,t2&MDG_MASK+type_pointed_to,r2,d2,
MDF_REG+RT_I64,result_reg,0,ip);
MDF_REG+RT_I64,res_reg,0,ip);
done=TRUE;
}
}
if (!done) {
ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,t3,r3,d3,ip);
if (t2&MDF_REG && r2!=REG_RAX)
result_reg=r2;
res_reg=r2;
else {
result_reg=REG_RCX;
res_reg=REG_RCX;
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,
t2&MDG_MASK+type_pointed_to,r2,d2,ip);
}
if (tempi->ic_flags&ICF_LOCK)
ICU8(tempi,OC_LOCK_PREFIX);
if (result_reg>7)
if (res_reg>7)
ICU8(tempi,0x4C);
else
ICU8(tempi,0x48);
ICU16(tempi,0xC000+op.u8[0]+(result_reg&7)<<11);
ICU16(tempi,0xC000+op.u8[0]+(res_reg&7)<<11);
ICMov(tempi,t2&MDG_MASK+type_pointed_to,r2,d2,
MDF_REG+RT_I64,result_reg,0,ip);
MDF_REG+RT_I64,res_reg,0,ip);
}
}
} else {
done=FALSE;
if (t3&MDF_IMM && op.u8[2]) {
if (!d3.u32[1]) {
if (tempi->ic_flags&ICF_NO_DEPEND_RESULT &&
if (tempi->ic_flags&ICF_RES_NOT_USED &&
t2&MDF_REG && d3(U64)<=MAX_I8) {
ICSlashOp(tempi,MDF_DISP+type_pointed_to,r2,0,0x838000+op.u8[4],ip);
ICU8(tempi,d3);
@@ -557,19 +557,19 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,U8 type_pointed_to,
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,t2,r2,d2,ip);
ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,
MDF_DISP+type_pointed_to,REG_RCX,0,ip);
result_reg=REG_RAX;
res_reg=REG_RAX;
if (tempi->ic_flags&ICF_LOCK)
ICU8(tempi,OC_LOCK_PREFIX);
ICU16(tempi,op.u8[3]<<8+0x40);
ICU32(tempi,d3);
ICMov(tempi,MDF_DISP+type_pointed_to,REG_RCX,0,
MDF_REG+RT_I64,result_reg,0,ip);
MDF_REG+RT_I64,res_reg,0,ip);
done=TRUE;
} else if (type_pointed_to<RT_I64) {//OR/XOR
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,t2,r2,d2,ip);
ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,
MDF_DISP+type_pointed_to,REG_RCX,0,ip);
result_reg=REG_RAX;
res_reg=REG_RAX;
if (tempi->ic_flags&ICF_LOCK)
ICU8(tempi,OC_LOCK_PREFIX);
if (d3.u16[1]) {
@@ -583,7 +583,7 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,U8 type_pointed_to,
ICU8(tempi,d3);
}
ICMov(tempi,MDF_DISP+type_pointed_to,REG_RCX,0,
MDF_REG+RT_I64,result_reg,0,ip);
MDF_REG+RT_I64,res_reg,0,ip);
done=TRUE;
}
}
@@ -593,47 +593,47 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,U8 type_pointed_to,
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,t2,r2,d2,ip);
ICMov(tempi,MDF_REG+RT_I64,REG_RBX,0,
MDF_DISP+type_pointed_to,REG_RCX,0,ip);
result_reg=REG_RBX;
res_reg=REG_RBX;
if (tempi->ic_flags&ICF_LOCK)
ICU8(tempi,OC_LOCK_PREFIX);
ICU8(tempi,0x48);
ICU16(tempi,0xC000+op.u8[0]+(result_reg&7)<<11);
ICU16(tempi,0xC000+op.u8[0]+(res_reg&7)<<11);
ICMov(tempi,MDF_DISP+type_pointed_to,REG_RCX,0,
MDF_REG+RT_I64,result_reg,0,ip);
MDF_REG+RT_I64,res_reg,0,ip);
}
}
if (t1.mode)
ICMov(tempi,t1,r1,d1,MDF_REG+RT_I64,result_reg,0,ip);
ICMov(tempi,t1,r1,d1,MDF_REG+RT_I64,res_reg,0,ip);
}
U0 ICShift(CIntermediateCode *tempi,CICType t1,I64 r1,I64 d1,
CICType t2,I64 r2,I64 d2,CICType t3,I64 r3,I64 d3,
I64 us,I64 is,I64 ip)
{
I64 i=0x48,result_reg;
I64 i=0x48,res_reg;
if (tempi->ic_class->raw_type&RTF_UNSIGNED ||
tempi->ic_flags & ICF_USE_UNSIGNED)
is=us;
if (t1&MDF_REG) {
result_reg=r1;
if (result_reg>7)
res_reg=r1;
if (res_reg>7)
i++;
} else
result_reg=REG_RAX;
res_reg=REG_RAX;
if (t3&MDF_IMM) {
ICMov(tempi,MDF_REG+RT_I64,result_reg,0,t2,r2,d2,ip);
ICMov(tempi,MDF_REG+RT_I64,res_reg,0,t2,r2,d2,ip);
if (d3==1)
ICU24(tempi,i+is.u16[2]<<8+(result_reg&7)<<16);
ICU24(tempi,i+is.u16[2]<<8+(res_reg&7)<<16);
else {
ICU24(tempi,i+is.u16[0]<<8+(result_reg&7)<<16);
ICU24(tempi,i+is.u16[0]<<8+(res_reg&7)<<16);
ICU8(tempi,d3);
}
} else {
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,t3,r3,d3,ip);
ICMov(tempi,MDF_REG+RT_I64,result_reg,0,t2,r2,d2,ip);
ICU24(tempi,i+is.u16[1]<<8+(result_reg&7)<<16);
ICMov(tempi,MDF_REG+RT_I64,res_reg,0,t2,r2,d2,ip);
ICU24(tempi,i+is.u16[1]<<8+(res_reg&7)<<16);
}
ICMov(tempi,t1,r1,d1,MDF_REG+RT_I64,result_reg,0,ip);
ICMov(tempi,t1,r1,d1,MDF_REG+RT_I64,res_reg,0,ip);
}
U0 ICShiftEqu(CIntermediateCode *tempi,U8 type_pointed_to,
@@ -641,7 +641,7 @@ U0 ICShiftEqu(CIntermediateCode *tempi,U8 type_pointed_to,
CICType t2,I64 r2,I64 d2,
CICType t3,I64 r3,I64 d3,I64 us,I64 is,I64 ip)
{
I64 result_reg;
I64 res_reg;
if (tempi->ic_class->raw_type&RTF_UNSIGNED ||
tempi->ic_flags & ICF_USE_UNSIGNED)
is=us;
@@ -649,46 +649,46 @@ U0 ICShiftEqu(CIntermediateCode *tempi,U8 type_pointed_to,
if (!(t3&MDF_IMM))
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,t3,r3,d3,ip);
if (t2&MDF_REG)
result_reg=r2;
res_reg=r2;
else {
result_reg=REG_RAX;
res_reg=REG_RAX;
ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,
t2&MDG_MASK+type_pointed_to,r2,d2,ip);
}
if (result_reg>7)
if (res_reg>7)
ICU8(tempi,0x49);
else
ICU8(tempi,0x48);
if (t3&MDF_IMM) {
if (d3==1)
ICU16(tempi,is.u16[2]+(result_reg&7)<<8);
ICU16(tempi,is.u16[2]+(res_reg&7)<<8);
else {
ICU16(tempi,is.u16[0]+(result_reg&7)<<8);
ICU16(tempi,is.u16[0]+(res_reg&7)<<8);
ICU8(tempi,d3);
}
} else
ICU16(tempi,is.u16[1]+(result_reg&7)<<8);
ICU16(tempi,is.u16[1]+(res_reg&7)<<8);
ICMov(tempi,t2&MDG_MASK+type_pointed_to,r2,d2,
MDF_REG+RT_I64,result_reg,0,ip);
MDF_REG+RT_I64,res_reg,0,ip);
} else {
if (!(t3&MDF_IMM))
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,t3,r3,d3,ip);
ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,t2,r2,d2,ip);
ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,MDF_DISP+type_pointed_to,REG_RDX,0,ip);
result_reg=REG_RAX;
res_reg=REG_RAX;
ICU8(tempi,0x48);
if (t3&MDF_IMM) {
if (d3==1)
ICU16(tempi,is.u16[2]+(result_reg&7)<<8);
ICU16(tempi,is.u16[2]+(res_reg&7)<<8);
else {
ICU16(tempi,is.u16[0]+(result_reg&7)<<8);
ICU16(tempi,is.u16[0]+(res_reg&7)<<8);
ICU8(tempi,d3);
}
} else
ICU16(tempi,is.u16[1]+(result_reg&7)<<8);
ICU16(tempi,is.u16[1]+(res_reg&7)<<8);
ICMov(tempi,
MDF_DISP+type_pointed_to,REG_RDX,0,MDF_REG+RT_I64,result_reg,0,ip);
MDF_DISP+type_pointed_to,REG_RDX,0,MDF_REG+RT_I64,res_reg,0,ip);
}
if (t1.mode)
ICMov(tempi,t1,r1,d1,MDF_REG+RT_I64,result_reg,0,ip);
ICMov(tempi,t1,r1,d1,MDF_REG+RT_I64,res_reg,0,ip);
}
+22 -21
View File
@@ -202,20 +202,20 @@ U0 ICCmp(CIntermediateCode *tempi,I64 us,I64 is,I64 ip)
U0 ICBitOps(CIntermediateCode *tempi,CICArg *a1,CICArg *a2,
CIntermediateCode *tempi2,I64 op,I64 op_imm,I64 ip)
{//TODO:not fully utilizing Modr
Bool no_depend=ToBool(tempi2->ic_flags&ICF_NO_DEPEND_RESULT);
Bool res_not_used=ToBool(tempi2->ic_flags&ICF_RES_NOT_USED);
I64 r1,t2,r2,d2,i=0x48;
if (tempi->ic_flags & ICF_BY_VAL) {
t2=a2->type&MDG_MASK+RT_I64; //TODO: check overflow
r2=a2->reg;
d2=a2->disp;
if (!(t2&MDG_REG_DISP_SIB_RIP) || !(r2.u8[0]!=REG_RAX&&(!(t2&MDF_SIB) ||
r2.u8[1]&15!=REG_RAX) || no_depend)) {
r2.u8[1]&15!=REG_RAX) || res_not_used)) {
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,t2,r2,d2,ip);
t2=MDF_REG+RT_I64;
r2=REG_RCX;
d2=0;
}
if (a1->type&MDF_REG && (a1->reg!=REG_RAX||no_depend))
if (a1->type&MDF_REG && (a1->reg!=REG_RAX||res_not_used))
r1=a1->reg;
else if (!(a1->type&MDF_IMM) || a1->disp>63) {
ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,a1->type,a1->reg,a1->disp,ip);
@@ -225,13 +225,13 @@ U0 ICBitOps(CIntermediateCode *tempi,CICArg *a1,CICArg *a2,
} else {
t2=MDF_DISP+RT_I64;
d2=0;
if (a2->type&MDF_REG && (a2->reg!=REG_RAX||no_depend))
if (a2->type&MDF_REG && (a2->reg!=REG_RAX||res_not_used))
r2=a2->reg;
else {
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,a2->type,a2->reg,a2->disp,ip);
r2=REG_RCX;
}
if (a1->type&MDF_REG && (a1->reg!=REG_RAX||no_depend))
if (a1->type&MDF_REG && (a1->reg!=REG_RAX||res_not_used))
r1=a1->reg;
else if (!(a1->type&MDF_IMM) || a1->disp>63) {
ICMov(tempi,MDF_REG+RT_I64,REG_RDX,0,a1->type,a1->reg,a1->disp,ip);
@@ -239,7 +239,7 @@ U0 ICBitOps(CIntermediateCode *tempi,CICArg *a1,CICArg *a2,
} else
r1=0;
}
if (!no_depend)
if (!res_not_used)
ICZero(tempi,REG_RAX);
if (tempi->ic_flags&ICF_LOCK && op!=0xA30F)
ICU8(tempi,OC_LOCK_PREFIX);
@@ -255,8 +255,9 @@ U0 ICBitOps(CIntermediateCode *tempi,CICArg *a1,CICArg *a2,
ICU24(tempi,i.u8[2]<<16+op);
ICModr2(tempi,i,d2,ip+4);
}
if (!no_depend) {
ICU32(tempi,0xD08348);
if (!res_not_used) {
ICU24(tempi,0xC0920F); //SETC AL
progress3++;
if (tempi->r.type.mode)
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
MDF_REG+RT_I64,REG_RAX,0,ip);
@@ -465,10 +466,10 @@ U0 ICAssignPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
}
}
U0 ICCmpAndBranch(CIntermediateCode *tempi,Bool has_result,I64 ip,
U0 ICCmpAndBranch(CIntermediateCode *tempi,Bool has_res,I64 ip,
I64 us,I64 is,I64 not_us,I64 not_is,U8 *buf,I64 ip2)
{
I64 r1,r2,i=0x48,j,result_reg;
I64 r1,r2,i=0x48,j,res_reg;
CICType t1,t2;
Bool short_jmp,swap,done;
CCodeMisc *lb;
@@ -488,7 +489,7 @@ U0 ICCmpAndBranch(CIntermediateCode *tempi,Bool has_result,I64 ip,
j=a2->disp;
if (a2->type&MDF_IMM && MIN_I32<=j<=MAX_I32) {
if (!has_result && a1->type&MDG_REG_DISP_SIB_RIP)
if (!has_res && a1->type&MDG_REG_DISP_SIB_RIP)
ICAddSubEctImm(tempi,a1->type,a1->reg,a1->disp,
a1->type,a1->reg,a1->disp,j,0x073B,ip2);
else {
@@ -525,12 +526,12 @@ U0 ICCmpAndBranch(CIntermediateCode *tempi,Bool has_result,I64 ip,
}
}
}
if (has_result) {
if (has_res) {
if (!swap) {
ICMov(tempi,MDF_REG+RT_I64,REG_RCX,0,MDF_IMM+RT_I64,0,j,ip2);
result_reg=REG_RCX;
res_reg=REG_RCX;
} else
result_reg=r1;
res_reg=r1;
}
} else {
done=FALSE;
@@ -538,7 +539,7 @@ U0 ICCmpAndBranch(CIntermediateCode *tempi,Bool has_result,I64 ip,
r1=a1->reg;
r2=a2->reg;
t2=a2->type;
if (t2.raw_type>=RT_I64 && !has_result && t2&MDG_DISP_SIB_RIP) {
if (t2.raw_type>=RT_I64 && !has_res && t2&MDG_DISP_SIB_RIP) {
if (!(t1&MDF_REG) || t1.raw_type<RT_I64) {
ICMov(tempi,MDF_REG+RT_I64,REG_RAX,0,a1->type,a1->reg,a1->disp,ip2);
r1=REG_RAX;
@@ -562,8 +563,8 @@ U0 ICCmpAndBranch(CIntermediateCode *tempi,Bool has_result,I64 ip,
ICRex(tempi,i.u8[1]);
ICU16(tempi,i.u8[2]<<8+0x39);
ICModr2(tempi,i,a1->disp,ip2+4);
if (has_result)
result_reg=r2;
if (has_res)
res_reg=r2;
done=TRUE;
}
if (!done) {
@@ -584,8 +585,8 @@ U0 ICCmpAndBranch(CIntermediateCode *tempi,Bool has_result,I64 ip,
if (r1>7)
i+=4;
ICU24(tempi,0xC03B00+i+(r2&7)<<16+(r1&7)<<19);
if (has_result)
result_reg=r2;
if (has_res)
res_reg=r2;
}
}
@@ -626,9 +627,9 @@ U0 ICCmpAndBranch(CIntermediateCode *tempi,Bool has_result,I64 ip,
ICU16(tempi,is.u16[0]);
ICU32(tempi,i);
}
if (has_result)
if (has_res)
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
MDF_REG+RT_I64,result_reg,0,ip2);
MDF_REG+RT_I64,res_reg,0,ip2);
}
U0 ICTestAndBranch(CIntermediateCode *tempi,I64 ip,I64 is,U8 *buf,I64 ip2)
+3 -3
View File
@@ -541,7 +541,7 @@ U0 ICAndEqu(CIntermediateCode *tempi,I64 ip2)
{
I64 i,bit;
if (tempi->a2.type&MDF_IMM && !(tempi->a1.type&MDF_STK) &&
tempi->ic_flags&ICF_NO_DEPEND_RESULT) {
tempi->ic_flags&ICF_RES_NOT_USED) {
i=~tempi->a2.disp;
bit=Bsf(i);
if (0<=bit==Bsr(i)) {
@@ -562,7 +562,7 @@ U0 ICOrEqu(CIntermediateCode *tempi,I64 ip2)
{
I64 i,bit;
if (tempi->a2.type&MDF_IMM && !(tempi->a1.type&MDF_STK) &&
tempi->ic_flags&ICF_NO_DEPEND_RESULT) {
tempi->ic_flags&ICF_RES_NOT_USED) {
i=tempi->a2.disp;
bit=Bsf(i);
if (0<=bit==Bsr(i) && i>MAX_I8) {
@@ -583,7 +583,7 @@ U0 ICXorEqu(CIntermediateCode *tempi,I64 ip2)
{
I64 i,bit;
if (tempi->a2.type&MDF_IMM && !(tempi->a1.type&MDF_STK) &&
tempi->ic_flags&ICF_NO_DEPEND_RESULT) {
tempi->ic_flags&ICF_RES_NOT_USED) {
i=tempi->a2.disp;
bit=Bsf(i);
if (0<=bit==Bsr(i)) {
+45 -45
View File
@@ -4,7 +4,7 @@ RAX,RBX,RCX and RDX can be clobbered by
each intermediate code's output code.
However, intermediate codes must be
coupled together based on the arg and
result type specifications in the
res type specifications in the
$LK,"CICArg",A="MN:CICArg"$. RAX is the most common reg
for coupling intermediate codes.
@@ -94,9 +94,9 @@ U0 ICAddRSP(CIntermediateCode *tempi,I64 i,Bool optimize=TRUE)
if (tempi==tempil1) {
tempi->ic_cnt=tempi->ic_last_cnt;
i+=j;
} else if (!(tempi->ic_flags&ICF_PREVIOUS_DELETED)) {
tempil1->ic_flags|=ICF_DEL_PREVIOUS_INS;
tempi->ic_flags=tempi->ic_flags&~ICF_CODE_FINAL|ICF_PREVIOUS_DELETED;
} else if (!(tempi->ic_flags&ICF_PREV_DELETED)) {
tempil1->ic_flags|=ICF_DEL_PREV_INS;
tempi->ic_flags=tempi->ic_flags&~ICF_CODE_FINAL|ICF_PREV_DELETED;
i+=j;
}
}
@@ -137,81 +137,81 @@ extern U0 ICMov(CIntermediateCode *tempi,
#define MODR_RIP_REL 7
I64 ICModr1(I64 r,CICType t2,I64 r2,I64 d2)
{//result.u8[0] is type
//result.u8[1] is REX
//result.u8[2] is ModR
//result.u8[3] is SIB
I64 result=0;
{//res.u8[0] is type
//res.u8[1] is REX
//res.u8[2] is ModR
//res.u8[3] is SIB
I64 res=0;
if (t2.raw_type<RT_I64)
result.u8[1]=0x40;
res.u8[1]=0x40;
else
result.u8[1]=0x48;
res.u8[1]=0x48;
if (r>7) {
result.u8[1]+=4;
res.u8[1]+=4;
r&=7;
}
switch (Bsr(t2)) {
case MDf_REG:
if (r2>7) {
result.u8[1]++;
res.u8[1]++;
r2&=7;
}
result.u8[2]=0xC0+r<<3+r2;
result.u8[0]=MODR_REG;
if (result.u8[1]==0x40 && (t2.raw_type>=RT_I16 || r<4 && r2<4))
result.u8[1]=0;
res.u8[2]=0xC0+r<<3+r2;
res.u8[0]=MODR_REG;
if (res.u8[1]==0x40 && (t2.raw_type>=RT_I16 || r<4 && r2<4))
res.u8[1]=0;
break;
case MDf_DISP:
if (r2>7) {
result.u8[1]++;
res.u8[1]++;
r2&=7;
}
if (!d2 && r2!=REG_RBP) {
result.u8[2]=r<<3+r2;
result.u8[0]=MODR_INDIRECT_REG;
res.u8[2]=r<<3+r2;
res.u8[0]=MODR_INDIRECT_REG;
} else if (MIN_I8<=d2<=MAX_I8) {
result.u8[2]=0x40+r<<3+r2;
result.u8[0]=MODR_D8_INDIRECT_REG;
res.u8[2]=0x40+r<<3+r2;
res.u8[0]=MODR_D8_INDIRECT_REG;
} else {
result.u8[2]=0x80+r<<3+r2;
result.u8[0]=MODR_D32_INDIRECT_REG;
res.u8[2]=0x80+r<<3+r2;
res.u8[0]=MODR_D32_INDIRECT_REG;
}
if (result.u8[1]==0x40 && (t2.raw_type>=RT_I16 || r<4))
result.u8[1]=0;
if (res.u8[1]==0x40 && (t2.raw_type>=RT_I16 || r<4))
res.u8[1]=0;
break;
case MDf_SIB:
if (7<r2.u8[0]<REG_NONE)
result.u8[1]++;
res.u8[1]++;
if (r2.u8[1]&15>7)
result.u8[1]+=2;
res.u8[1]+=2;
if (r2.u8[0]==REG_NONE) {
result.u8[3]=5+(r2.u8[1]&7)<<3+r2.u8[1]&0xC0;
result.u8[2]=4+r<<3;
result.u8[0]=MODR_SIB_D32_INDIRECT_REG;
res.u8[3]=5+(r2.u8[1]&7)<<3+r2.u8[1]&0xC0;
res.u8[2]=4+r<<3;
res.u8[0]=MODR_SIB_D32_INDIRECT_REG;
} else {
result.u8[3]=r2.u8[0]&7+(r2.u8[1]&7)<<3+r2.u8[1]&0xC0;
res.u8[3]=r2.u8[0]&7+(r2.u8[1]&7)<<3+r2.u8[1]&0xC0;
if (!d2 && r2.u8[0]&7!=REG_RBP) {
result.u8[2]=4+r<<3;
result.u8[0]=MODR_SIB_INDIRECT_REG;
res.u8[2]=4+r<<3;
res.u8[0]=MODR_SIB_INDIRECT_REG;
} else if (MIN_I8<=d2<=MAX_I8) {
result.u8[2]=0x44+r<<3;
result.u8[0]=MODR_SIB_D8_INDIRECT_REG;
res.u8[2]=0x44+r<<3;
res.u8[0]=MODR_SIB_D8_INDIRECT_REG;
} else {
result.u8[2]=0x84+r<<3;
result.u8[0]=MODR_SIB_D32_INDIRECT_REG;
res.u8[2]=0x84+r<<3;
res.u8[0]=MODR_SIB_D32_INDIRECT_REG;
}
}
if (result.u8[1]==0x40 && (t2.raw_type>=RT_I16 || r<4))
result.u8[1]=0;
if (res.u8[1]==0x40 && (t2.raw_type>=RT_I16 || r<4))
res.u8[1]=0;
break;
case MDf_RIP_DISP32:
result.u8[2]=0x05+r<<3;
result.u8[0]=MODR_RIP_REL;
if (result.u8[1]==0x40 && (t2.raw_type>=RT_I16 || r<4))
result.u8[1]=0;
res.u8[2]=0x05+r<<3;
res.u8[0]=MODR_RIP_REL;
if (res.u8[1]==0x40 && (t2.raw_type>=RT_I16 || r<4))
res.u8[1]=0;
break;
}
return result;
return res;
}
U0 ICModr2(CIntermediateCode *tempi,I64 i,I64 d,I64 ip=0)
+6 -8
View File
@@ -3,7 +3,7 @@ U0 LexPutToken(CCmpCtrl *cc)
'"';
if (cc->token==TK_IDENT || cc->token==TK_STR)
"%s",cc->cur_str;
else if (cc->token==TK_INT)
else if (cc->token==TK_I64)
"INT:%X",cc->cur_i64;
else if (cc->token==TK_CHAR_CONST)
"U8:%X",cc->cur_i64;
@@ -219,21 +219,19 @@ U0 ICPut(CCmpCtrl *cc,CIntermediateCode *tempi)
"[unsigned] ";
if (tempi->ic_flags & ICF_USE_INT)
"[int] ";
if (tempi->ic_flags & ICF_NO_DEPEND_RESULT)
"-DEP ";
if (tempi->ic_flags & ICF_DEPEND_RESULT)
"+DEP ";
if (tempi->ic_flags & ICF_RES_NOT_USED)
"NO_RES ";
if (tempi->ic_flags & ICF_BY_VAL)
"BY_VAL ";
if (tempi->ic_flags & ICF_PUSH_RESULT)
if (tempi->ic_flags & ICF_PUSH_RES)
"PUSH ";
if (tempi->ic_flags & ICF_PUSH_CMP)
"PUSH_CMP ";
if (tempi->ic_flags & ICF_POP_CMP)
"POP_CMP ";
if (tempi->ic_flags & ICF_DEL_PREVIOUS_INS)
if (tempi->ic_flags & ICF_DEL_PREV_INS)
"DEL_PREV ";
if (tempi->ic_flags & ICF_PREVIOUS_DELETED)
if (tempi->ic_flags & ICF_PREV_DELETED)
"PREV_DEL ";
for (i=0;i<3;i++) {
if (Bt(&tempi->ic_flags,ICf_DONT_PUSH_FLOAT0+i))
+22 -22
View File
@@ -33,58 +33,58 @@ I64 HashEntrySize(CHashSrcSym *temph)
I64 HashEntrySize2(CHashSrcSym *temph)
{//Memory size of a std system hash entry.
CDbgInfo *dbg_info;
I64 result=MSize2(temph);
I64 res=MSize2(temph);
if (!(temph->type&HTT_DICT_WORD))
result+=MSize2(temph->str);
res+=MSize2(temph->str);
if (temph->type & HTG_SRC_SYM) {
result+=MSize2(temph->src_link);
result+=MSize2(temph->index);
result+=MSize2(temph->import_name);
result+=LinkedLstSize(temph->ie_lst);
res+=MSize2(temph->src_link);
res+=MSize2(temph->idx);
res+=MSize2(temph->import_name);
res+=LinkedLstSize(temph->ie_lst);
if (temph->type & (HTT_FUN | HTT_EXPORT_SYS_SYM))
result+=MSize2(temph->dbg_info);
res+=MSize2(temph->dbg_info);
if (temph->type & HTT_CLASS)
result+=MemberLstSize(temph);
res+=MemberLstSize(temph);
else if (temph->type & HTT_FUN) {
result+=MemberLstSize(temph);
res+=MemberLstSize(temph);
if (dbg_info=temph->dbg_info)
//This should be $LK,"MSize",A="MN:MSize"$() but it would crash on AOT .BIN.Z file funs.
result+=dbg_info->body[dbg_info->max_line+1-dbg_info->min_line]
res+=dbg_info->body[dbg_info->max_line+1-dbg_info->min_line]
-dbg_info->body[0];
} else if (temph->type&HTT_DEFINE_STR)
result+=MSize2(temph(CHashDefineStr *)->data);
res+=MSize2(temph(CHashDefineStr *)->data);
else if (temph->type & HTT_GLBL_VAR) {
result+=LinkedLstSize(temph(CHashGlblVar *)->dim.next);
res+=LinkedLstSize(temph(CHashGlblVar *)->dim.next);
if (!(temph(CHashGlblVar *)->flags&GVF_ALIAS))
result+=MSize2(temph(CHashGlblVar *)->data_addr);
res+=MSize2(temph(CHashGlblVar *)->data_addr);
if (temph(CHashGlblVar *)->fun_ptr)
result+=HashEntrySize2(temph(CHashGlblVar *)->fun_ptr
res+=HashEntrySize2(temph(CHashGlblVar *)->fun_ptr
-temph(CHashGlblVar *)->fun_ptr->ptr_stars_cnt);
}
} else if (temph->type & HTT_FILE)
result+=MSize2(temph(CHashGeneric *)->user_data0);
res+=MSize2(temph(CHashGeneric *)->user_data0);
else if (temph->type & HTT_MODULE &&
StrCmp(temph->str,KERNEL_MODULE_NAME))
result+=MSize2(temph(CHashGeneric *)->user_data0);
return result;
res+=MSize2(temph(CHashGeneric *)->user_data0);
return res;
}
I64 HashTableSize2(CHashTable *table)
{//Memory size of std system hash table and all entries.
I64 i,result=0;
I64 i,res=0;
CHashSrcSym *temph;
if (!table)
return 0;
for (i=0;i<=table->mask;i++) {
temph=table->body[i];
while (temph) {
result+=HashEntrySize2(temph);
res+=HashEntrySize2(temph);
temph=temph->next;
}
}
result+=MSize2(table->body);
result+=MSize2(table);
return result;
res+=MSize2(table->body);
res+=MSize2(table);
return res;
}
U0 MapFileWrite(CHashTable *h,U8 *map_name,U8 drv_let)
+1 -1
View File
@@ -225,7 +225,7 @@ U0 CmpLoadDefines()
DefineLstLoad("ST_MM_REGS","MM0\0MM1\0MM2\0MM3\0MM4\0MM5\0MM6\0MM7\0");
DefineLstLoad("ST_XMM_REGS",
"XMM0\0XMM1\0XMM2\0XMM3\0XMM4\0XMM5\0XMM6\0XMM7\0");
DefineLstLoad("ST_ARG_TYPES","NO\0REL8\0REL16\0REL32\0"
DefineLstLoad("ST_ARG_TYPES","NONE\0REL8\0REL16\0REL32\0"
"IMM8\0IMM16\0IMM32\0IMM64\0UIMM8\0UIMM16\0UIMM32\0UIMM64\0"
"R8\0R16\0R32\0R64\0RM8\0RM16\0RM32\0RM64\0"
"M8\0M16\0M32\0M64\0M1632\0M16N32\0M16N16\0M32N32\0"
+55 -55
View File
@@ -1,6 +1,6 @@
U8 *LexStmt2Bin(CCmpCtrl *cc,I64 *_type,I64 cmp_flags=0)
{//Compile one cc stmt to bin code.
I64 size,i,j,k,*result=INVALID_PTR;
I64 size,i,j,k,*res=INVALID_PTR;
CCodeCtrl *tempcbh;
if (_type) *_type=RT_I64;
Btr(&cc->flags,CCf_PASS_TRACE_PRESENT);
@@ -9,17 +9,17 @@ U8 *LexStmt2Bin(CCmpCtrl *cc,I64 *_type,I64 cmp_flags=0)
COCInit(cc);
if (!PrsStmt(cc,,,cmp_flags)) {
if (cc->coc.coc_root.next!=&cc->coc.coc_root) {
cc->coc.coc_root.last->ic_flags&=~ICF_NO_DEPEND_RESULT;
cc->coc.coc_root.last->ic_flags&=~ICF_RES_NOT_USED;
ICAdd(cc,IC_RETURN_VAL2,0,0);
ICAdd(cc,IC_RET,0,0);
if (result=COCCompile(cc,&size,NULL,_type)) {
if (res=COCCompile(cc,&size,NULL,_type)) {
if (cc->flags&CCF_AOT_COMPILE) {
j=cc->aotc->ip;
k=(size+7)>>3;
for (i=0;i<k;i++)
AOTStoreCodeU64(cc,result[i]);
Free(result);
result=j;
AOTStoreCodeU64(cc,res[i]);
Free(res);
res=j;
}
}
} //TODO: else del misc?
@@ -29,7 +29,7 @@ U8 *LexStmt2Bin(CCmpCtrl *cc,I64 *_type,I64 cmp_flags=0)
tempcbh=COCPopNoFree(cc);
COCAppend(cc,tempcbh);
}
return result;
return res;
}
CAOT *CmpJoin(CCmpCtrl *cc,I64 cmp_flags,U8 *map_name=NULL,U8 mapfile_drv_let=0)
@@ -41,15 +41,15 @@ CAOT *CmpJoin(CCmpCtrl *cc,I64 cmp_flags,U8 *map_name=NULL,U8 mapfile_drv_let=0)
CAOTImportExport *tempie;
Bool okay=TRUE;
CLexHashTableContext *htc=MAlloc(sizeof(CLexHashTableContext));
CAOT *result=CAlloc(sizeof(CAOT)),*parent;
CAOT *res=CAlloc(sizeof(CAOT)),*parent;
if (parent=cc->aot) {
result->parent_aot=parent;
QueIns(result,parent->last);
res->parent_aot=parent;
QueIns(res,parent->last);
} else
QueInit(result);
cc->aot=result;
QueInit(res);
cc->aot=res;
result->next_ie=result->last_ie=&result->next_ie;
res->next_ie=res->last_ie=&res->next_ie;
cc->aotc=aotc=CAlloc(sizeof(CAOTCtrl));
cc->aot_depth++;
@@ -86,14 +86,14 @@ CAOT *CmpJoin(CCmpCtrl *cc,I64 cmp_flags,U8 *map_name=NULL,U8 mapfile_drv_let=0)
tempie=CAlloc(sizeof(CAOTImportExport));
tempie->type=IET_MAIN;
tempie->ip=buf;
QueIns(tempie,result->last_ie);
QueIns(tempie,res->last_ie);
}
if (cmp_flags&CMPF_ASM_BLK)
break;
}
} else
PrsStmt(cc,,,cmp_flags);
AOTGlblsResolve(cc,result);
AOTGlblsResolve(cc,res);
} catch {
if (Fs->except_ch=='Compiler' && !(cmp_flags&CMPF_ASM_BLK)) {
LexPutPos(cc);
@@ -104,10 +104,10 @@ CAOT *CmpJoin(CCmpCtrl *cc,I64 cmp_flags,U8 *map_name=NULL,U8 mapfile_drv_let=0)
if (!okay) {
if (cc->error_cnt<1)
cc->error_cnt=1;
cc->aot=result->parent_aot;
Free(result);
cc->aot=res->parent_aot;
Free(res);
LinkedLstDel(aotc->bin);
result=NULL;
res=NULL;
} else {
if (map_name)
MapFileWrite(cc->htc.glbl_hash_table,map_name,mapfile_drv_let);
@@ -115,17 +115,17 @@ CAOT *CmpJoin(CCmpCtrl *cc,I64 cmp_flags,U8 *map_name=NULL,U8 mapfile_drv_let=0)
HashTableDel(cc->htc.glbl_hash_table);
if (!aotc->num_bin_U8s)
result->buf=NULL;
res->buf=NULL;
else {
if (cc->flags&CCF_AOT_COMPILE)
result->buf=MAlloc(aotc->num_bin_U8s);
res->buf=MAlloc(aotc->num_bin_U8s);
else {
if (aotc->module_org==INVALID_PTR)
result->buf=MAlloc(aotc->num_bin_U8s,Fs->code_heap);
res->buf=MAlloc(aotc->num_bin_U8s,Fs->code_heap);
else
result->buf=aotc->module_org;
res->buf=aotc->module_org;
}
result->aot_U8s=aotc->num_bin_U8s;
res->aot_U8s=aotc->num_bin_U8s;
tempbin=aotc->bin;
j=0;
l=aotc->num_bin_U8s;
@@ -133,17 +133,17 @@ CAOT *CmpJoin(CCmpCtrl *cc,I64 cmp_flags,U8 *map_name=NULL,U8 mapfile_drv_let=0)
i=l;
if (i>AOT_BIN_BLK_SIZE)
i=AOT_BIN_BLK_SIZE;
MemCpy(result->buf+j,tempbin->body,i);
MemCpy(res->buf+j,tempbin->body,i);
j+=i;
l-=i;
tempbin=tempbin->next;
}
}
LinkedLstDel(aotc->bin);
result->abss=aotc->abss;
result->heap_glbls=aotc->heap_glbls;
result->max_align_bits=aotc->max_align_bits;
result->module_org=aotc->module_org;
res->abss=aotc->abss;
res->heap_glbls=aotc->heap_glbls;
res->max_align_bits=aotc->max_align_bits;
res->module_org=aotc->module_org;
}
cc->aot=parent;
MemCpy(&cc->htc,htc,sizeof(CLexHashTableContext));
@@ -151,24 +151,24 @@ CAOT *CmpJoin(CCmpCtrl *cc,I64 cmp_flags,U8 *map_name=NULL,U8 mapfile_drv_let=0)
Free(aotc);
cc->aotc=old_aot;
cc->aot_depth--;
return result;
return res;
}
CAOT *CmpBuf(U8 *buf,U8 *map_name=NULL,
I64 *error_cnt=NULL, I64 *warning_cnt=NULL,U8 mapfile_drv_let=0)
{
CCmpCtrl *cc;
CAOT *result=NULL;
CAOT *res=NULL;
cc=CmpCtrlNew(buf,CCF_DONT_FREE_BUF);
cc->flags|=CCF_AOT_COMPILE;
QueIns(cc,Fs->last_lex);
result=CmpJoin(cc,CMPF_LEX_FIRST,map_name,mapfile_drv_let);
res=CmpJoin(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;
QueRem(cc);
if (result)
if (res)
CmpCtrlDel(cc);
return result;
return res;
}
U0 CmpFixUpJITAsm(CCmpCtrl *cc,CAOT *tempaot)
@@ -571,7 +571,7 @@ I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv_let=0)
I64 ExePutS(U8 *buf,U8 *filename=NULL,
Bool just_load=FALSE,CLexHashTableContext *htc=NULL)
{//JIT Compile and execute text from a puts("").
I64 result;
I64 res;
Bool okay=TRUE;
CCmpCtrl *cc;
if (!filename)
@@ -590,43 +590,43 @@ I64 ExePutS(U8 *buf,U8 *filename=NULL,
QueIns(cc,Fs->last_lex);
try {
Lex(cc);
result=ExeCmdLine(cc);
res=ExeCmdLine(cc);
} catch {
if (Fs->except_ch=='Compiler' || Fs->except_ch=='Break') {
Fs->catch_except=TRUE;
okay=FALSE;
result=0;
res=0;
}
}
QueRem(cc);
if (okay)
CmpCtrlDel(cc); //TODO: can crash
return result;
return res;
}
I64 ExePrint(U8 *fmt,...)
{//JIT Compile and execute text from a printf().
I64 result;
I64 res;
U8 *buf=StrPrintJoin(NULL,fmt,argc,argv);
result=ExePutS(buf);
res=ExePutS(buf);
Free(buf);
return result;
return res;
}
I64 ExeFile(U8 *name,Bool just_load=FALSE)
{//JIT Compile and execute a file.
I64 result;
I64 res;
U8 *name2=DftExt(name,"CPP.Z"),
*st=MStrPrint("#include \"%s\";",name2);
result=ExePutS(st,name,just_load);
res=ExePutS(st,name,just_load);
Free(st);
Free(name2);
return result;
return res;
}
I64 ExePutS2(U8 *buf,U8 *filename=NULL,Bool just_load=FALSE)
{//throws exceptions
I64 result;
I64 res;
CCmpCtrl *cc;
if (!filename)
filename=blkdev.temp_filename;
@@ -637,35 +637,35 @@ I64 ExePutS2(U8 *buf,U8 *filename=NULL,Bool just_load=FALSE)
cc->opts=Fs->last_lex->opts;
QueIns(cc,Fs->last_lex);
Lex(cc);
result=ExeCmdLine(cc);
res=ExeCmdLine(cc);
QueRem(cc);
CmpCtrlDel(cc);
return result;
return res;
}
I64 ExePrint2(U8 *fmt,...)
{//throws exceptions
I64 result;
I64 res;
U8 *buf=StrPrintJoin(NULL,fmt,argc,argv);
result=ExePutS2(buf);
res=ExePutS2(buf);
Free(buf);
return result;
return res;
}
I64 ExeFile2(U8 *name,Bool just_load=FALSE)
{//throws exceptions
I64 result;
I64 res;
U8 *name2=DftExt(name,"CPP.Z"),*st=MStrPrint("#include \"%s\";",name2);
result=ExePutS2(st,name,just_load);
res=ExePutS2(st,name,just_load);
Free(st);
Free(name2);
return result;
return res;
}
I64 StreamExePrint(U8 *fmt,...)
{//Causes value from stream to be used in an #exe{} block.
U8 *buf=StrPrintJoin(NULL,fmt,argc,argv);
I64 result=0;
I64 res=0;
CLexHashTableContext *htc;
CCmpCtrl *cc=Fs->last_lex;
if (cc==&Fs->next_lex)
@@ -674,10 +674,10 @@ I64 StreamExePrint(U8 *fmt,...)
if (!(cc->flags&CCF_EXE_BLK))
LexExcept(cc,"StreamExePrint only allowed in AOT compiled #exe{} mode.");
if (htc=cc->htc.next)
result=ExePutS(buf,,,htc);
res=ExePutS(buf,,,htc);
}
Free(buf);
return result;
return res;
}
U0 CInit()
+9 -9
View File
@@ -88,7 +88,7 @@ CD3I32 *LexD3I32(CCmpCtrl *cc,CD3I32 *p)
U8 *CmdLinePmt()
{
I64 i;
U8 *result,*st;
U8 *res,*st;
if (Fs->new_answer) {
if (Fs->answer_type==RT_F64)
"%8.6fs ansf=%15.7g\n",Fs->answer_time,Fs->answer;
@@ -106,17 +106,17 @@ U8 *CmdLinePmt()
st=GetStr(,,GSF_SHIFT_ESC_EXIT);
i=StrLen(st);
result=MAlloc(i+1+2);
MemCpy(result,st,i+1);
res=MAlloc(i+1+2);
MemCpy(res,st,i+1);
i--;
while (i>=0 && Bt(chars_bmp_white_space,result[i]))
while (i>=0 && Bt(chars_bmp_white_space,res[i]))
i--;
i++;
if (i>0 && result[i-1]==';')
result[i++]=';'; //The Lex goes one beyond
result[i++]='\n';//#define goes to '\n'
result[i]=0;
if (i>0 && res[i-1]==';')
res[i++]=';'; //The Lex goes one beyond
res[i++]='\n';//#define goes to '\n'
res[i]=0;
Free(st);
return result;
return res;
}
Binary file not shown.
+93 -131
View File
@@ -1,5 +1,5 @@
$LK,"LexPutPos",A="FL:::/Compiler/CExcept.CPP.Z,50",BI=1$
$LK,"ICAssignPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,429",BI=2$
$LK,"ICAssignPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,430",BI=2$
$LK,"CmpSetFloatOpPushPop",A="FL:::/Compiler/BackFA.CPP.Z,62",BI=3$
$LK,"ICFCvt2",A="FL:::/Compiler/BackFA.CPP.Z,169",BI=4$
$LK,"CmpRawTypePointed",A="FL:::/Compiler/OptLib.CPP.Z,517",BI=5$
@@ -17,7 +17,7 @@ $LK,"AsmLineLst",A="FL:::/Compiler/AsmLib.CPP.Z,147",BI=15$
$LK,"ICOpSizeRex",A="FL:::/Compiler/BackLib.CPP.Z,28",BI=16$
$LK,"CVI2",A="FL:::/Compiler/PrsVar.CPP.Z,117"$
$LK,"ICU8",A="FL:::/Compiler/BackLib.CPP.Z,17",BI=17$
$LK,"AsmStoreNum",A="FL:::/Compiler/Asm.CPP.Z,263",BI=18$
$LK,"AsmStoreNum",A="FL:::/Compiler/Asm.CPP.Z,268",BI=18$
$LK,"OptPass012",A="FL:::/Compiler/OptPass012.CPP.Z,23",BI=19$
$LK,"MemberLstSize",A="FL:::/Compiler/LexLib.CPP.Z,191",BI=20$
$LK,"ICQueIns",A="FL:::/Compiler/BackC.CPP.Z,355",BI=21$
@@ -49,7 +49,7 @@ $LK,"LexPopNoRestore",A="FL:::/Compiler/LexLib.CPP.Z,38",BI=39$
$LK,"ExePrint",A="FL:::/Compiler/CMain.CPP.Z,607",BI=40$
$LK,"SLASH_OP_NEG",A="FL:::/Compiler/BackLib.CPP.Z,251"$
$LK,"PrsVarLst",A="FL:::/Compiler/PrsVar.CPP.Z,416",BI=41$
$LK,"PrsAsmDefine",A="FL:::/Compiler/Asm.CPP.Z,809",BI=42$
$LK,"PrsAsmDefine",A="FL:::/Compiler/Asm.CPP.Z,814",BI=42$
$LK,"PrsAddOp",A="FL:::/Compiler/PrsExp.CPP.Z,15",BI=43$
$LK,"LexWarn",A="FL:::/Compiler/CExcept.CPP.Z,65",BI=44$
$LK,"PE_POP_ALL1",A="FL:::/Compiler/PrsExp.CPP.Z,12"$
@@ -96,8 +96,8 @@ $LK,"ICLea",A="FL:::/Compiler/BackLib.CPP.Z,613",BI=73$
$LK,"CmpBuf",A="FL:::/Compiler/CMain.CPP.Z,157",BI=74$
$LK,"CMP_TEMPLATES_DONT_PUSH_POP",A="FL:::/Compiler/Templates.CPP.Z,394"$
$LK,"ICAddEct",A="FL:::/Compiler/BackA.CPP.Z,1",BI=75$
$LK,"ICToF64",A="FL:::/Compiler/BackB.CPP.Z,283",BI=76$
$LK,"PrsBinFile",A="FL:::/Compiler/Asm.CPP.Z,883",BI=77$
$LK,"ICToF64",A="FL:::/Compiler/BackB.CPP.Z,284",BI=76$
$LK,"PrsBinFile",A="FL:::/Compiler/Asm.CPP.Z,888",BI=77$
$LK,"HashTableSize2",A="FL:::/Compiler/CHash.CPP.Z,72",BI=78$
$LK,"HashEntrySize2",A="FL:::/Compiler/CHash.CPP.Z,33",BI=79$
$LK,"Ui",A="FL:::/Compiler/UAsm.CPP.Z,238",BI=80$
@@ -105,14 +105,14 @@ $LK,"ICSlashOp",A="FL:::/Compiler/BackLib.CPP.Z,269",BI=81$
$LK,"OptBrZero",A="FL:::/Compiler/OptLib.CPP.Z,230",BI=82$
$LK,"Un",A="FL:::/Compiler/UAsm.CPP.Z,660",BI=83$
$LK,"PrsSizeOf",A="FL:::/Compiler/PrsExp.CPP.Z,298",BI=84$
$LK,"ICToI64",A="FL:::/Compiler/BackB.CPP.Z,277",BI=85$
$LK,"ICToI64",A="FL:::/Compiler/BackB.CPP.Z,278",BI=85$
$LK,"ICMod",A="FL:::/Compiler/BackA.CPP.Z,461",BI=86$
$LK,"OptSetNOP1",A="FL:::/Compiler/OptLib.CPP.Z,17",BI=87$
$LK,"OptPass789A",A="FL:::/Compiler/OptPass789A.CPP.Z,1",BI=88$
$LK,"OptSetNOP2",A="FL:::/Compiler/OptLib.CPP.Z,25",BI=89$
$LK,"FBO1_F64",A="FL:::/Compiler/OptLib.CPP.Z,94"$
$LK,"ICXorEqu",A="FL:::/Compiler/BackC.CPP.Z,582",BI=90$
$LK,"ICToUpper",A="FL:::/Compiler/BackB.CPP.Z,266",BI=91$
$LK,"ICToUpper",A="FL:::/Compiler/BackB.CPP.Z,267",BI=91$
$LK,"AsmLexExpression",A="FL:::/Compiler/AsmLib.CPP.Z,127",BI=92$
$LK,"ICMov",A="FL:::/Compiler/BackLib.CPP.Z,430",BI=93$
$LK,"ICNot",A="FL:::/Compiler/BackB.CPP.Z,10",BI=94$
@@ -151,7 +151,7 @@ $LK,"ICOrEqu",A="FL:::/Compiler/BackC.CPP.Z,561",BI=118$
$LK,"ICModr1",A="FL:::/Compiler/BackLib.CPP.Z,139",BI=119$
$LK,"ICModr2",A="FL:::/Compiler/BackLib.CPP.Z,217",BI=120$
$LK,"SLASH_OP_FMUL",A="FL:::/Compiler/BackLib.CPP.Z,261"$
$LK,"ICPreIncDec",A="FL:::/Compiler/BackB.CPP.Z,304",BI=121$
$LK,"ICPreIncDec",A="FL:::/Compiler/BackB.CPP.Z,305",BI=121$
$LK,"PrsUnaryTerm",A="FL:::/Compiler/PrsExp.CPP.Z,588",BI=122$
$LK,"MemberLstDel",A="FL:::/Compiler/LexLib.CPP.Z,157",BI=123$
$LK,"SLASH_OP_FSUB",A="FL:::/Compiler/BackLib.CPP.Z,259"$
@@ -164,7 +164,7 @@ $LK,"PE_UNARY_TERM1",A="FL:::/Compiler/PrsExp.CPP.Z,1"$
$LK,"ICFAdd",A="FL:::/Compiler/BackFB.CPP.Z,502",BI=127$
$LK,"PE_UNARY_TERM2",A="FL:::/Compiler/PrsExp.CPP.Z,2"$
$LK,"CmdLinePmt",A="FL:::/Compiler/CMisc.CPP.Z,88",BI=128$
$LK,"AsmMakeArgMask",A="FL:::/Compiler/Asm.CPP.Z,172",BI=129$
$LK,"AsmMakeArgMask",A="FL:::/Compiler/Asm.CPP.Z,177",BI=129$
$LK,"COCHeaderPut",A="FL:::/Compiler/PrsLib.CPP.Z,229",BI=130$
$LK,"PrsGlblInit",A="FL:::/Compiler/PrsVar.CPP.Z,206",BI=131$
$LK,"ICAndEqu",A="FL:::/Compiler/BackC.CPP.Z,540",BI=132$
@@ -212,7 +212,7 @@ $LK,"ICBitOps",A="FL:::/Compiler/BackB.CPP.Z,202",BI=168$
$LK,"lex_zeros",A="FL:::/Compiler/Lex.CPP.Z,91"$
$LK,"CSwitchCase",A="FL:::/Compiler/PrsStmt.CPP.Z,567"$
$LK,"AsmResolve",A="FL:::/Compiler/AsmResolve.CPP.Z,1",BI=169$
$LK,"PrsAsmInst",A="FL:::/Compiler/Asm.CPP.Z,390",BI=170$
$LK,"PrsAsmInst",A="FL:::/Compiler/Asm.CPP.Z,395",BI=170$
$LK,"COCCompile",A="FL:::/Compiler/PrsLib.CPP.Z,249",BI=171$
$LK,"Cmp",A="FL:::/Compiler/CMain.CPP.Z,419",BI=172$
$LK,"PrsPush2",A="FL:::/Compiler/PrsLib.CPP.Z,11",BI=173$
@@ -220,12 +220,12 @@ $LK,"ICArgPut",A="FL:::/Compiler/CExcept.CPP.Z,141",BI=174$
$LK,"UndefinedExtern",A="FL:::/Compiler/CExcept.CPP.Z,98",BI=175$
$LK,"OptIC4",A="FL:::/Compiler/OptPass4.CPP.Z,1",BI=176$
$LK,"OptIC6",A="FL:::/Compiler/OptPass6.CPP.Z,1",BI=177$
$LK,"ICCmpAndBranch",A="FL:::/Compiler/BackB.CPP.Z,468",BI=178$
$LK,"ICCmpAndBranch",A="FL:::/Compiler/BackB.CPP.Z,469",BI=178$
$LK,"ICDivEqu",A="FL:::/Compiler/BackA.CPP.Z,408",BI=179$
$LK,"PrsWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,482",BI=180$
$LK,"ICFCmpAndBranch",A="FL:::/Compiler/BackFB.CPP.Z,217",BI=181$
$LK,"Lex",A="FL:::/Compiler/Lex.CPP.Z,443",BI=182$
$LK,"ICTestAndBranch",A="FL:::/Compiler/BackB.CPP.Z,634",BI=183$
$LK,"ICTestAndBranch",A="FL:::/Compiler/BackB.CPP.Z,635",BI=183$
$LK,"uasm",A="FL:::/Compiler/Compiler.PRJ.Z,21"$
$LK,"MODR_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,131"$
$LK,"PE_MAYBE_MODIFIERS",A="FL:::/Compiler/PrsExp.CPP.Z,3"$
@@ -242,14 +242,14 @@ $LK,"CmpJoin",A="FL:::/Compiler/CMain.CPP.Z,35",BI=190$
$LK,"PrsPop2",A="FL:::/Compiler/PrsLib.CPP.Z,16",BI=191$
$LK,"CMP_TEMPLATES",A="FL:::/Compiler/Templates.CPP.Z,4"$
$LK,"MODR_D8_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,132"$
$LK,"PrsAsmBlk",A="FL:::/Compiler/Asm.CPP.Z,899",BI=192$
$LK,"PrsAsmBlk",A="FL:::/Compiler/Asm.CPP.Z,904",BI=192$
$LK,"PrsAsmArg",A="FL:::/Compiler/Asm.CPP.Z,35",BI=193$
$LK,"LexFirstRem",A="FL:::/Compiler/Lex.CPP.Z,277",BI=194$
$LK,"MemberClassBaseFind",A="FL:::/Compiler/LexLib.CPP.Z,87",BI=195$
$LK,"MemberFind",A="FL:::/Compiler/LexLib.CPP.Z,67",BI=196$
$LK,"cmp",A="FL:::/Compiler/Compiler.PRJ.Z,16"$
$LK,"OptLag",A="FL:::/Compiler/OptLib.CPP.Z,40",BI=197$
$LK,"ICPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,345",BI=198$
$LK,"ICPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,346",BI=198$
$LK,"ICFPostIncDec",A="FL:::/Compiler/BackFB.CPP.Z,580",BI=199$
$LK,"ICTest",A="FL:::/Compiler/BackLib.CPP.Z,398",BI=200$
$LK,"ICModU64",A="FL:::/Compiler/BackC.CPP.Z,464",BI=201$
@@ -286,7 +286,7 @@ $LK,"MODR_SIB_D8_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,135"$
$LK,"cmp_type_flags_src_code",A="FL:::/Compiler/Lex.CPP.Z,328"$
$LK,"PrsVarInit2",A="FL:::/Compiler/PrsVar.CPP.Z,123",BI=227$
$LK,"PrsPop",A="FL:::/Compiler/PrsLib.CPP.Z,6",BI=228$
$LK,"asm_seg_prefixes",A="FL:::/Compiler/Asm.CPP.Z,388"$
$LK,"asm_seg_prefixes",A="FL:::/Compiler/Asm.CPP.Z,393"$
$LK,"ICMinMax",A="FL:::/Compiler/BackC.CPP.Z,419",BI=229$
$LK,"CmpLoadDefines",A="FL:::/Compiler/CInit.CPP.Z,205",BI=230$
$LK,"PrsIf",A="FL:::/Compiler/PrsStmt.CPP.Z,455",BI=231$
@@ -297,7 +297,7 @@ $LK,"CmpFixUpJITAsm",A="FL:::/Compiler/CMain.CPP.Z,174",BI=235$
$LK,"COCPopNoFree",A="FL:::/Compiler/PrsLib.CPP.Z,114",BI=236$
$LK,"ParenWarning",A="FL:::/Compiler/CExcept.CPP.Z,110",BI=237$
$LK,"PrsFunCall",A="FL:::/Compiler/PrsExp.CPP.Z,378",BI=238$
$LK,"ICDerefPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,384",BI=239$
$LK,"ICDerefPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,385",BI=239$
$LK,"Option",A="FL:::/Compiler/CMisc.CPP.Z,1",BI=240$
$LK,"ExeFile2",A="FL:::/Compiler/CMain.CPP.Z,655",BI=241$
$LK,"COptMemberVar",A="FL:::/Compiler/OptLib.CPP.Z,549"$
@@ -309,7 +309,7 @@ $LK,"ICBrBitOps",A="FL:::/Compiler/BackC.CPP.Z,210",BI=244$
$LK,"MODR_D32_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,133"$
$LK,"LexGetChar",A="FL:::/Compiler/Lex.CPP.Z,107",BI=245$
$LK,"LexSkipEol",A="FL:::/Compiler/Lex.CPP.Z,270",BI=246$
$LK,"ICFlagBranch",A="FL:::/Compiler/BackB.CPP.Z,682",BI=247$
$LK,"ICFlagBranch",A="FL:::/Compiler/BackB.CPP.Z,683",BI=247$
$LK,"SLASH_OP_FSUBR",A="FL:::/Compiler/BackLib.CPP.Z,260"$
$LK,"ICFPreIncDec",A="FL:::/Compiler/BackFB.CPP.Z,560",BI=248$
$LK,"MODR_SIB_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,134"$
@@ -321,7 +321,7 @@ $LK,"PrsFunNew",A="FL:::/Compiler/PrsLib.CPP.Z,62",BI=252$
$LK,"StreamExePrint",A="FL:::/Compiler/CMain.CPP.Z,665",BI=253$
$LK,"COCGoToLabelFind",A="FL:::/Compiler/PrsLib.CPP.Z,152",BI=254$
$LK,"OptMVCompare",A="FL:::/Compiler/OptLib.CPP.Z,555",BI=255$
$LK,"ICToBool",A="FL:::/Compiler/BackB.CPP.Z,289",BI=256$
$LK,"ICToBool",A="FL:::/Compiler/BackB.CPP.Z,290",BI=256$
$LK,"PrsFunJoin",A="FL:::/Compiler/PrsStmt.CPP.Z,68",BI=257$
$LK,"PrsNoUnusedWarn",A="FL:::/Compiler/PrsStmt.CPP.Z,787",BI=258$
$LK,"OptFixSizeOf",A="FL:::/Compiler/OptLib.CPP.Z,484",BI=259$
@@ -334,127 +334,89 @@ $LK,"InstEntryFind",A="FL:::/Compiler/UAsm.CPP.Z,66",BI=262$
$LK,"PrsDotDotDot",A="FL:::/Compiler/PrsVar.CPP.Z,381",BI=263$
$LK,"ICMulEqu",A="FL:::/Compiler/BackA.CPP.Z,322",BI=264$
$LK,"AsmPrsInsFlags",A="FL:::/Compiler/AsmInit.CPP.Z,1",BI=265$
H2@_#_#h#n#‰#�#¹#»#î#Ø#ş#$$)$¨­Ó¾\¾\Ô\Ü\ç\ó\]õ\"](](]R]Y]„]’]’]¿]á]ù]æ]^4^!^K^R^}^}^„^¨^¾^¾^¾^È^H>L6ø6øPøZø^øbøgøiø‚ø›ø›ø¥øp©ÁFüFüpürüyüü…ü‡ü�ü“ü©ü¼üËüĞüÒü×üáüöü ı ı/ıAı8ãããã'ã0ã7ã9ã>ãd`µVÖVÖtÖxÖ…Ö‡Ö”Ö–Ö¢Ö¢Ö¯Ö±Ö¾ÖÀÖÌÖÌÖâÖëÖëÖöÖıÖ ×××"×$×0×7×F×Q×W×\×^×jך×À×Ğ×à×ğ×òרØ"Ø"Ø'ØAØHØOØOØOØOØVØlØxØ~؄؊Ø�Ø�Ø�Ø»ØÂØØØäØêØğØöØøØøØÙDÃÙÙÙ Ù"Ù/Ù5ÙBÙEÙHÙNÙPÙZÙ,cjЈЈވèˆóˆşˆ‰
‰ hl&&4IO
P ï5ï5ı5 6$6*6<6<6G6P6V6]6c6 œ;^®I®I¶IºIÓIæIùIJ7J@JQJuJŒJŒJ«JºJÃJĞJ×J KKK&K&K9KIKMKQK Œ×ö––¾ÂĞÖÜÜ  3AX^jo}™¢²´»»ÁÁÑ␍|1¿"¿"Õ"Ş"é"#####$#&#,#5#7#=#G#N#Q#Q#[#0 '‡‡&‡F‡L‡R‡R‡X‡„“°pŸpŸ„Ÿ‹Ÿ’Ÿ–ŸºŸÍŸÔŸåŸ
    " - R ] h j q z | ‡ � ¸ ("�Ş�Ş­ŞÄŞߪߪåŞ >Ş>ŞMŞcŞiރббõ±ü±² ²*²<²M²>²<²m²ˆ²”²›²¡²­²·²¾²Å²É²Ë²Ñ²İ²ç²î²õ²ù²ù²³³³%³6³'³%³V³w³ƒ³Š³�³œ³¦³­³´³¸³º³À³Ì³Ö³İ³ä³è³è³õ³´´%´6´'´%´V´w´ƒ´Š´�´œ´¦´­´´´¸´º´À´Ì´Ö´İ´ä´è´è´ò´µµ%µµµEµLµRµ^µhµoµvµzµ|µ‚µ�µ˜µŸµ¦µªµªµ´µÂµËµäµğµôµôµ÷µv¶Ôîî €T¦€%€A€L€^€e€v€~€†€‰€—€ÀÀØ€Ú€Ú€æ€î€õ€�����*�*�*�F�Q�b�b�g����“�™�¤�©�©�®�Æ�Õ�Ú�à�ë�ğ�ğ�ş�‚‚‚#‚+‚.‚4‚9‚B‚T‚]‚n‚~‚~‚ƒ‚‹‚“‚–‚œ‚œ‚¡‚¡‚¡‚§‚ª‚±‚¼‚Ñ‚ö‚␍ƒƒ"ƒ*ƒ6ƒBƒHƒOƒXƒ\ƒ_ƒkƒqƒxƒ}ƒ}ƒ‹ƒ›ƒ›ƒ¨ƒ¨ƒ°ƒ¸ƒÁƒЃÕƒÕƒ܃çƒíƒõƒûƒ„ „ „„%„7„=„E„K„P„[„m„s„{„�„†„†„š„ „«„±„³„ÄɄɄ…….…4…J…[…a…f…………•…�…¥…«…°…°…Ä…Ê…à…ñ…÷…ü…††+†3†;†A†F†F†\†b†x†‰†�†”†£†©†º††ʆІ׆܆܆ò†ø†‡ ‡%‡'‡6‡<‡F‡N‡V‡\‡c‡c‡c‡u‡~‡�‡Ÿ‡Ÿ‡¤‡¤‡²‡º‡ˇއå‡ë‡ó‡ù‡ ˆˆˆˆˆˆ"ˆ"ˆ"ˆ"ˆ"ˆAˆMˆRˆRˆhˆqˆ|ˆ…ˆ�ˆ›ˆ ˆ ˆ¶ˆ¼ˆÒˆãˆéˆîˆ‰‰ ‰$‰B‰B‰G‰G‰S‰[‰^‰d‰j‰o‰o‰“‰›‰£‰³‰¹‰¿‰¿‰Љî‰î‰ó‰ó‰ÿ‰Š
H2@g#g#p#v#‘#–#Á#Ã#ö#à#$␍$$1$¨®Ô¾\¾\Ô\Ü\ç\ó\]õ\"](](]R]Y]„]’]’]¿]á]ù]æ]^4^!^K^R^}^}^„^¨^¾^¾^¾^È^H>L&ø&ø@øJøNøRøWøYøqø‰ø‰ø“øp©Á6ü6ü`übüiüoüuüwü}üƒü™ü¬ü»üÀüÂüÇüÑüæüüüı ı1ı8ãã'ã,ã7ã@ãGãIãNãd`µfÖfÖ„ÖˆÖ•Ö—Ö¤Ö¦Ö²Ö²Ö¿ÖÁÖÎÖĞÖÜÖÜÖòÖûÖûÖ×␍××'×-×2×4×@×G×V×a×g×l×n×zת×Ğ×à×ğרØØ"Ø2Ø2Ø7ØQØXØ_Ø_Ø_Ø_ØfØ|؈Ø�ؚؔØ�Ø�Ø�ØËØÒØèØôØúØÙÙÙÙÙDÃÙÙ,Ù/Ù2Ù?ÙEÙRÙUÙXÙ^Ù`ÙjÙ,cj°ˆ°ˆ¾ˆÈˆÓˆŞˆäˆêˆ hl..<QW
P ×5×5å5ô5 66$6$6/686>6E6K6 œ;^¶I¶I¾IÂIÛIîIJJ?JHJYJ}J”J”J³JÂJËJØJßJK"K&K.K.KAKQKUKYK Œ×ö��¾ÆÊØŞää&:H_eqv„ ©¹»ÂÂÈÈØ␍|1Ç"Ç"İ"æ"ñ" # #####,#.#4#=#?#E#O#V#Y#Y#c#0 'ø†ø†‡&‡,‡2‡2‡8‡„“°XŸXŸlŸsŸzŸ~Ÿ¢ŸµŸ¼ŸÍŸòŸıŸ 
  : E P R Y b d o v   ("�Ş�Ş�Ş´ŞÏŞÏŞÕŞ .Ş.Ş=ŞSŞYŞ ˆà±à±² ²#²/²:²L²]²N²L²}²˜²¤²«²±²½²Ç²Î²Õ²Ù²Û²á²í²÷²ş²³ ³ ³³³#³5³F³7³5³f³‡³“³š³ ³¬³¶³½³Ä³È³Ê³Ğ³Ü³æ³í³ô³ø³ø³´´#´5´F´7´5´f´‡´“´š´ ´¬´¶´½´Ä´È´Ê´Ğ´Ü´æ´í´ô´ø´ø´µµ$µ5µ&µ$µUµ\µbµnµxµµ†µŠµŒµ’µ�µ¨µ¯µ¶µºµºµÄµÒµÛµôµ†¶Ôîî €T¦€%€A€L€^€e€v€~€†€‰€—€ÀÀØ€Ú€Ú€æ€î€õ€�����*�*�*�F�Q�b�b�g����“�™�¤�©�©�®�Æ�Õ�Ú�à�ë�ğ�ğ�ş�‚‚‚#‚+‚.‚4‚9‚B‚T‚]‚n‚~‚~‚ƒ‚‹‚“‚–‚œ‚œ‚¡‚¡‚¡‚§‚ª‚±‚¼‚Ñ‚ö‚␍ƒƒ"ƒ*ƒ6ƒBƒHƒOƒXƒ\ƒ_ƒkƒqƒxƒ}ƒ}ƒ‹ƒ›ƒ›ƒ¨ƒ¨ƒ°ƒ¸ƒÁƒЃÕƒÕƒ܃çƒíƒõƒûƒ„ „ „„%„7„=„E„K„P„[„m„s„{„�„†„†„š„ „«„±„³„ÄɄɄ…….…4…J…[…a…f…………•…�…¥…«…°…°…Ä…Ê…à…ñ…÷…ü…††+†3†;†A†F†F†\†b†x†‰†�†”†£†©†º††ʆІ׆܆܆ò†ø†‡ ‡%‡'‡6‡<‡F‡N‡V‡\‡c‡c‡c‡u‡~‡�‡Ÿ‡Ÿ‡¤‡¤‡²‡º‡ˇއå‡ë‡ó‡ù‡ ˆˆˆˆˆˆ"ˆ"ˆ"ˆ"ˆ"ˆAˆMˆRˆRˆhˆqˆ|ˆ…ˆ�ˆ›ˆ ˆ ˆ¶ˆ¼ˆÒˆãˆéˆîˆ‰‰ ‰$‰B‰B‰G‰G‰S‰[‰^‰d‰j‰o‰o‰“‰›‰£‰³‰¹‰¿‰¿‰Љî‰î‰ó‰ó‰ÿ‰Š
ŠŠŠŠŠ<ŠDŠTŠZŠaŠŠ‘Š™Š´Š¼Š¿ŠÆŠÌŠçŠïŠ
‹‹‹‹"‹"‹"‹A‹Q‹]‹e‹h‹o‹u‹…‹—‹£‹Á‹É‹Ì‹Ó‹Ù‹ô‹ŒŒ&Œ)Œ0Œ6Œ6Œ6Œ6Œ;Œ;ŒDŒTŒjŒpŒˆŒ›Œ¡Œ¦Œ¸Œ¾ŒÃŒߌåŒñŒùŒüŒ� �2�:�J�P�W�W�W�\�\�e�}�“�™�±�Ä�Ê�Ï�ú���J�\�y���‡�Œ�Œ�¦�²�¾�É�É�Î�Î�è�ô�� � ���*�6�B�M�M�R�R�h�n�z�€�…�—���¢�±�½�É�Ï�Õ�Ü�ï�ú����� �&�+�?�Q�Y�t�|��…�‹�¦�®�Ñ�î�ö�ù�ÿ�‘‘‘ ‘+‘3‘6‘=‘C‘H‘Z‘l‘t‘�‘—‘š‘¡‘§‘‘Ê‘ì‘ ’’’’!’!’1’:’F’N’Q’W’]’b’v’ˆ’�’­’µ’¸’¾’Ä’ß’ç’ “+“3“6“<“B“B“S“\“h“p“s“z“€“…“—“©“±“Ï“דÚ“á“ç“”
”/”O”W”Z”a”g”g”g”g”g”l”l”‚”ˆ”””š”Ÿ”±”·”¼”ʔ֔ߔë”ó”ö”ı”•••,•4•O•W•Z•a•g•‚•Š•¬•ɕѕԕەá•á•á•ò•û•–––– –6–H–T–r–z–}–„–Š–¥–±–Ö–ö–ş–—————————&—A—G—R—W—W—j—€—†—‘—“—“—¦—É—Ï—Ú—Ú—ì—õ—˜ ˜˜-˜-˜2˜2˜E˜[˜a˜o˜~˜ƒ˜ƒ˜–˜¬˜²˜À˜ϘÔ˜Ô˜ê˜ğ˜␍™%™%™O™U™Z™f™o™~™~™ƒ™ƒ™™™Ÿ™¼™Ô™Ô™ş™š ššš-š-š2š2šHšNškšƒšƒš­š³š¸šÄšÍšÜšÜšášáš÷šıš›2›2›\›b›d›p›y›„›„›„›„›‰›—› ›±›³›Å›Ò›Ò›Ò›â›ò›÷›œ'œ(œ-œBœ_œoœ“œ£œ©œ©œ©œ®œ³œÈœÛœ�)�/�1�6�G�V�ˆ���–�˜���¤�¤�­�¿�Ò�Û�ê�ê�ï�ô�� ���"�-�-�N�U�[�c�n�t�„�Š�’���£�£�¨�­�´�»�Â�É�Ò�á�á�á�æ�æ�æ�ø�ı�ı�ŸŸ"Ÿ*Ÿ0Ÿ0Ÿ0Ÿ5Ÿ5Ÿ@ŸQŸTŸ`ŸiŸuŸ|Ÿ‚Ÿ‡Ÿ‡Ÿ’Ÿ£Ÿ¦Ÿ²Ÿ»ŸÇŸΟԟٟٟٟٟޟãŸãŸîŸòŸòŸşŸ 
 
   - 4 : I T _ e q u u � Š � � ˜ š ° · ½ Å Ğ Û á ë î ò ò ú ¡¡¡¡¡¡!¡!¡,¡.¡L¡S¡^¡i¡l¡r¡w¡w¡‚¡†¡†¡’¡›¡�¡�¡©¡«¡Á¡È¡Ρİ¡è¡ó¡ù¡¢ ¢ ¢¢¢!¢!¢,¢.¢D¢K¢Q¢Y¢d¢o¢u¢¢‚¢†¢†¢�¢•¢˜¢š¢¥¢©¢²¢µ¢µ¢À¢¢à¢ç¢ò¢ı¢££ £ ££!£!£-£6£9£9£D£F£\£c£i£{£†£‘£—£œ£œ£§£¬£¬£·£¼£¼£Ç£Ê£ΣÕ£Ú£ߣä£ä£ø£ı£ı£
¤¤ ¤'¤+¤?¤F¤J¤J¤W¤c¤k¤q¤�¤…¤–¤¨¤³¤·¤·¤Ĥ̤Ô¤Ú¤Ú¤Ú¤Ú¤Ú¤ܤܤê¤ñ¤ş¤
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥1¥9¥E¥E¥f¥u¥�¥�¥›¥¨¥¨¥Ë¥Ø¥ã¥ì¥õ¥¦¦¦¦¦¦&¦D¦P¦P¦¨x¿ÙÏ3Ï3á3ã3ç3ğ3ü3444L4P4U4a4t4~4�4Œ4�4—4¡4lcz¶x¶xÌxÛxàxõxâxyyyy)yy8y>yWypy‰y¢y»yÅy„�ÎhÎhìhôhúhii
i␍iiii,i0i6i6iKiUiUi]ivi™iºi¿iàiåiñiüijjj(j.j3j9j;jAjDjJjOjRjZjcjsj–j¤j¼jÁjÅjêjıjkk(k-k1kVkfk‰kœk¡k§k¬k¯k±k·k½kÃkÈkÎkÖkÖkàkék÷klll=lMlplƒlˆl˜l»lÉlálælêlm"m"m=m=m=mKmcmemememsm‹m�m�m›m³m³mÅmÅmÎmÛmñmn+n3n>nQnUnUnUn\nbn|n„n�nªn¬n²nÌnÔnßnínønønoH…“h„h„„•„¥„¬„Äބğ„ô„7…L“¢ÖzÖzêz÷z␍{ùz{{7{P{[{f{n{4IRŞÕŞÕçÕçÕêÕøÕÖ ÖÖì=öö>öAö_övö‡ö‡ö¢ö¨ö­ö­öÈöÎöÓöÓöÜöêö÷ ÷$÷+÷1÷3÷P÷`÷e÷l÷r÷t÷t÷‡÷�÷�÷�÷�÷’÷®÷¾÷Ğ÷Õ÷Õ÷Õ÷Ü÷ã÷ê÷ÿ÷ø"ø"ø4øÌL»0¤0¤J¤U¤`¤i¤q¤t¤{¤¤ˆ¤›¤Ÿ¤¥¤³¤Ğ¤İ¤ì¤ñ¤ı¤¥ ¥¥¥¥'¥ ¥7¥@¥Q¥O¥G¥_¥h¥n¥n¥|¥¥“¥œ¥¥¥¬¥°¥µ¥Ì¥ä¥í¥û¥¦#¦#¦;¦L¦L¦S¦l¦x¦€¦“¦š¦®¦·¦¾¦Â¦Í¦Ò¦Ù¦ö¦#§*§.§0§;§G§K§`§b§s§}§ˆ§’§¡§°§É§É§Ì§Ô§Ù§[¨Xs…&L&LCLTLaLkL‚LŸLºLÀLÉL×LİLàLìLŒ ````p`”`”`¢`¢`¢`¢`«`«`²`Í`â`ê`ê`õ`õ`aaa!a'a'a?a?aEaka(kq‰‰‰*‰:‰A‰G‰ @O[¶è¶èÄèÌèÓèòèÿèÿèéé
é $/4FßFßSßhßmßsß!$).ßß#ß8ß=ßCß"$#(æŞæŞõŞ ßßß#€ğLWWaq‡�™´¹Éßçñ  ' 1 ; E O Y c m w � ‹ • Ÿ © ¿ É Ó İ ç ñ û  % / 9 O Y c m w � ‹ • Ÿ © ³ ½ Ç Ñ Û å ï ù !␍!!!!+!5!?!I!S!]!g!q!{!‰!$¤Cp›p›†›�›¢›³›Å›Ç›Î›Ô›ä›ï›ù›œœœ œ2œ8œHœRœ\œcœnœƒœ‹œ‹œ¡œ¡œ¡œµœ%$5:vßv߄ߙß�ߤß&¤Di¸œ¸œÎœÕœêœûœ␍����,�7�A�L�c�f�h�z���‘�›�¥�¬�·�Ë�Ó�Ó�é�é�é�ş�'(&,w/w/…/Œ/–/œ/¢/(0_gVKVKlKK�K”K—KŸK)  ßö"ö"# #&#3#:#V#\#\#\#i#k#v#€#‡#–#¡#§#±#»#Ì#Ì#×#á#á#ó#ù# $$$$$<$B$T$g$m$p$v$v$x$~$„$†$†$†$—$¡$¦$¦$»$Å$Å$Ù$â$è$î$% %%'%+%+%3%9%?%I%P%W%`%r%r%—%›%¡%§%¹%Ì%Ò%Ö%Ü%â%è%è%ê%î%ô%ú%&&&&&0&A&A&X&e&i&q&ƒ&£&£&©&¬&°&&&È&Ù&î&'
'' '0'4':'S'U'['h'j'v'”'š'¥'È'Ó'Ù'ß'å'î'ô'(( (#(4(8(>(W(Y(_(l(n(z(˜(�(¤(ª(³(¹(Ö(É(ğ(ù(ÿ(ÿ())) )*)?)D)D)D)a)c)€)‚)Ÿ)¥)­)±)¸)Û)á)ç)ó)
***"*'*'*.*2*<*J*L*T*Y*a*l*r*�*†*Œ*‘*™*�*­*È*Ø*å*ô*++.+.+5+J+O+X+e+j+p+u+u+|+€+Š+˜+š+¢+¦+ª+´+À+Ç+Ë+Ó+Û+ã+õ+,,,,,,?,?,M,S,X,\,a,a,a,a,g,i,i,Œ,’,˜,Ÿ,µ,·,·,·,Â,Â,Â,Ç,ğ-*4)r¶Ç¶ÇĞÇÔÇìÇôÇüÇÈ
ÈÈÈ+È3È8È;ÈFÈQÈYÈdÈoÈqȇÈ�ȕȠȫȭȸÈÃÈÅÈÑÈÚÈÚÈğÈûÈÉÉ"É3É9ÉBÉTÉZÉZÉbÉfÉqÉvɈɓɗɥɧɫɺɺɺÉËÉËÉĞÉâÉèÉVÊ+Ô@>ä>äTä[ä^ä‚ä‚äŸä²äÅäØäİäİäûä åå/å7å7å9å9å9åLåNåNåNåUåhå{å{å{å�å™å¬åÂåÇåËåÒåçåúåæææ)æ,LAP/$/$=$N$Z$u$z$š$œ$·$Ò$Ò$Ú$á$%-P~�˜‰˜‰¦‰³‰Á‰Ó‰Ş‰ì‰ù‰ŠŠ$Š2Š8Š>Š.4
—5—5¥5±5Â5Ô5İ5ç5í5/|ºU. . P W f q — —   ¢ ¢ © Ğ × × æ õ 


(
0
A
J
h
s
u
�
”
Ÿ
¯
Á
Ê
Õ
Ú
à
ç
  " + + 2 A X X g p „ ‹ ’ — ¢ ¨ ° Ö ß æ ë ö   % * 2 > P P g n v † ˜ � § §  ¼ Ğ Ù é ø 
␍␍#␍6␍>␍R␍p␍‡␍‹␍—␍®␍Ê␍Ü␍â␍í␍ù␍ ''9=I`|�”Ÿ«»Ëİããèêêïïş

‡0ŒÄã^Ù^ÙzنيÙ�ٕٜ٫ٶټÙÁÙÃÙÏÙÖÙŞÙäÙêÙîÙîÙıÙÚ ÚÚÚÚÚ&Ú18 ¯.¯.½.Ã.Ï.Ú.ë.õ.ü./2@x„êê$ê/ê6êUêbêbêeêgêmê3ÌSÜïöı
 //AL`hqy~„šª¿Äİõùùş%-6>CJ\l�ƒœ´¸¸ÌÔİåêğ+0Iaexxx}ŸÁÌÒê&.7?AGYi~€™±µµÉÑÚâçî).G_cvvv{�¿ÊĞè '9I`w�¥¥¸ÓÓÓô    % 2 L Z a t v • ¤ � ¼ Ì æ æ ÿ 4D{ˆ®®¾ÒÛáóó÷ú5\Ob(ˆ(ˆHˆWˆ`ˆiˆmˆqˆ}ˆ‚ˆ‡ˆ‡ˆ˜ˆœˆ¤ˆ¼ˆ¿ˆËˆ60üæâæâïâôâıâãã ã7lØvv˜Ÿ¦±ÇÇÙòòı 9H_p„ˆ�¢º¿ÇËöĞü*rL�Ÿª°ÄÜáõı,<RTm…‰‰�»ÃÇïÉõ ␍/5?FYtt� ®®ÂĞŞó *92Qahy›�Åóóóş<ALR]™†¨¿Ğëÿ;p]�¨®ÂÚßóû *:PRkƒ‡‡©ÂÖÚéééü &AAA]m{{��«ÉÜá'7Hffˆˆ�²²²Ò8DmzVVfzƒ‰››Ÿ¢ª9l{’ÆyÆyÜyëyğyzòyzzz$z9z&zHzNzgz€z™z²zËzÕz:<‰”'06:E;”)îìîìöìúìííí)í4íFíQí\íkí|íƒíœí í±í±í»íÂíÕíŞíìíîî!î>î<d(=X‡X‡d‡x‡{‡�‡—‡›‡¥‡¯‡·‡º‡À‡=$uºHEHElEoEsE€E‰E”E¤E¬EEŞEŞEîEóEóEFFFFFF-F2F2FBFGFGFWF\F\FlFqFqF�F†F†F†F‰F‰F¢F°FÇFÚFÚFÜFÜFëFñFöFöFüF G GG'G4GLGTGZGZGnGnGwGzG8H>Ğ q†¨†¨£¨«¨®¨¼¨ʨߨ訩©.©9©J©N©`©c©n©w©ƒ©–©Ç©¼©¢©שªª=ªRªvªŠªŒª­ª“ªȪ˪ЪÓªÓªÚªñªøª«
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥1¥9¥E¥E¥f¥u¥�¥�¥›¥¨¥¨¥Ë¥Ø¥ã¥ì¥õ¥¦¦¦¦¦¦&¦D¦P¦P¦¨x¿Ù·3·3É3Ë3Ï3Ø3ä3ğ3444484=4I4\4f4i4t4w44‰4lcz¶x¶xÌxÛxàxõxâxyyyy)yy8y>yWypy‰y¢y»yÅy„�ÎhÎhìhôhúhii
i␍iiii,i0i6i6iKiUiUi]ivi™iºi¿iàiåiñiüijjj(j.j3j9j;jAjDjJjOjRjZjcjsj–j¤j¼jÁjÅjêjıjkk(k-k1kVkfk‰kœk¡k§k¬k¯k±k·k½kÃkÈkÎkÖkÖkàkék÷klll=lMlplƒlˆl˜l»lÉlálælêlm"m"m=m=m=mKmcmemememsm‹m�m�m›m³m³mÅmÅmÎmÛmñmn+n3n>nQnUnUnUn\nbn|n„n�nªn¬n²nÌnÔnßnínønønoH…“H„H„_„u„…„Œ„£„¾„ЄԄ…L“¢ÖzÖzêz÷z␍{ùz{{7{P{[{f{n{4IRîÕîÕ÷Õ÷ÕúÕÖÖÖÖì=öö.ö1öOöföwöwö’ö˜ö�ö�ö¸ö¾öÃöÃöÌöÚö÷ö÷÷÷!÷#÷@÷P÷U÷\÷b÷d÷d÷w÷}÷}÷}÷�÷‚÷�÷®÷À÷Å÷Å÷Å÷Ì÷Ó÷Ú÷ï÷ö÷øø$øÌL»¤¤2¤=¤H¤Q¤Y¤\¤c¤g¤p¤ƒ¤‡¤�¤›¤¸¤Å¤Ô¤Ù¤å¤ê¤ñ¤ı¤¥¥¥¥ ¥(¥9¥7¥/¥G¥P¥V¥V¥d¥g¥{¥„¥�¥”¥˜¥�¥´¥Ì¥Õ¥ã¥ÿ¥ ¦ ¦#¦4¦4¦;¦T¦`¦h¦{¦‚¦–¦Ÿ¦¦¦ª¦µ¦º¦Á¦Ş¦ §§§§#§/§3§H§J§[§e§p§z§‰§˜§±§±§´§¼§Á§C¨Xs….L.LKL\LiLsLŠL§LÂLÈLÑLßLåLèLôLŒ H`H`X`|`|`Š`Š`Š`Š`“`“`š`µ`Ê`Ò`Ò`İ`İ`ë`û`û` aaa'a'a-aSa(kqğˆğˆşˆ
‰‰!‰'‰ @O[¦è¦è´è¼èÃèâèïèïèòèôèúè $/46ß6ßCßXß]ßcß!$).ßßß(ß-ß3ß"$#(ÖŞÖŞåŞûŞßß#€ğL__iy�—¡¼ÁÑçïù  / 9 C M W a k u  ‰ “ � § ± Ç Ñ Û å ï ù  ␍  - 7 A W a k u  ‰ “ � § ± » Å Ï Ù ã í ÷ ! !! !)!3!=!G!Q![!e!o!y!ƒ!‘!$¤CX›X›n›u›Š›››­›¯››¼›Ì›×›á›ì›œœœœ œ0œ:œDœKœVœkœsœsœ‰œ‰œ‰œ�œ%$5:fßfßt߉ß�ß”ß&¤Di œ œœ½œÒœãœõœ÷œşœ�� �)�4�K�N�P�b�i�y�ƒ���”�Ÿ�³�»�»�Ñ�Ñ�Ñ�æ�'(&,_/_/m/t/~/„/Š/(0_g^K^KtK‡K–KœKŸK§K)  ßş"ş" #(#.#;#B#^#d#d#d#q#s#~#ˆ#�#�#©#¯#¹#Ã#Ô#Ô#ß#é#é#û#$$$$#$#$D$J$\$o$u$x$~$~$€$†$Œ$�$�$�$Ÿ$©$®$®$Ã$Í$Í$á$ê$ğ$ö$ %%%/%3%3%;%A%G%Q%X%_%h%z%z%Ÿ%£%©%¯%Á%Ô%Ú%Ş%ä%ê%ğ%ğ%ò%ö%ü%&&␍&␍&␍&␍&8&I&I&`&m&q&y&‹&«&«&±&´&¸&¾&¾&Ğ&á&ö&
''#'''8'<'B'[']'c'p'r'~'œ'¢'­'Ğ'Û'á'ç'í'ö'ü'( ('(+(<(@(F(_(a(g(t(v(‚( (¦(¬(²(»(Á(Ş(Ñ(ø())))!)!)()2)G)L)L)L)i)k)ˆ)Š)§)­)µ)¹)À)ã)é)ï)û)** ***/*/*6*:*D*R*T*\*a*i*t*z*‰*�*”*™*¡*¦*µ*Ğ*à*í*ü*++6+6+=+R+W+`+m+r+x+}+}+„+ˆ+’+ +¢+ª+®+²+¼+È+Ï+Ó+Û+ã+ë+ı+ ,,,,$,$,G,G,U,[,`,d,i,i,i,i,o,q,q,”,š, ,§,½,¿,¿,¿,Ê,Ê,Ê,Ï,ø-*4.wÆÇÆÇàÇäÇüÇÈ ÈÈÈ!È'È;ÈCÈHÈKÈVÈaÈiÈtÈÈ�È—È�ȥȰȻȽÈÈÈÓÈÕÈáÈêÈêÈÉ É#É)É2ÉCÉIÉRÉdÉjÉjÉrÉvÉ�ɆɘɣɧɵɷɻÉÊÉÊÉÊÉÛÉÛÉàÉòÉøÉfÊ+Ô@NäNädäkänä’ä’ä¯äÂäÕäèäíäíä åå,å?åGåGåIåIåIå\å^å^å^åeåxå‹å‹å‹å�å©å¼åÒå×åÛåâå÷å
ææææ9æ,LAP7$7$E$V$b$}$‚$¢$¤$¿$Ú$Ú$â$é$%-P~�x‰x‰†‰“‰¡‰³‰¾‰Ì‰Ù‰ç‰ù‰ŠŠŠŠ.4
55�5™5ª5¼5Å5Ï5Õ5/|ºU> > ` g u € ¦ ¦ ¯ ± ± ¸ ß æ æ õ 

+
+
7
?
P
Y
w
‚
„
�
£
®
¾
Ğ
Ù
ä
é
ï
ö
 # 1 : : A P g g v  “ š ¡ ¦ ± · ¿ å î õ ú    4 9 A M _ _ v } … • § ­   Å Ë ß è ø ␍␍"␍2␍E␍M␍a␍␍–␍š␍¦␍½␍Ù␍ë␍ñ␍ü␍(-66HLXo‹�£®ºÊÚìòò÷ùùşş␍–0ŒÄãnÙnيٖٚÙ�Ù¥Ù¬Ù»ÙÆÙÌÙÑÙÓÙßÙæÙîÙôÙúÙşÙşÙ␍ÚÚÚ"Ú(Ú*Ú*Ú6Ú18 —.—.¥.«.·.Â.Ó.İ.ä.ê.2@x„êêê ê&êEêRêRêUêWê]ê3ÌS¦¦Ìßæíôúü
␍␍  1<PXaintŠš¯´Íåééî÷&.3:L\qsŒ¤¨¨¼ÄÍÕÚàö 9QUhhhm�±¼ÂÚò÷'/17IYnp‰¡¥¥¹ÁÊÒתô7OSfffk�¯ºÀØğğğü )9Pg~••¨ÃÃÃäô    " < J Q d f … ” � ¬ ¼ Ö Ö ï 4D{ˆÆÚãéûûÿ
5\Obˆˆ(ˆ7ˆ@ˆIˆMˆQˆ]ˆbˆgˆgˆxˆ|ˆ„ˆœˆŸˆ«ˆ60üöâöâÿâã␍ãããã7lØffˆ�–¡··Éââíñü)8O`tx}’ª¯·»æÀì b<q�š ´ÌÑåíöş
,BD]uyy�¦«³·ß¹åùı     %/6Idd€���²ÀÎãöû)"AQXi‹€µãããî,1<BMo‰v˜¯ÀÛïóø +`Mo�˜�²ÊÏãëôü*@B[sww™²ÆÊÙÙÙìòü111M]kk�›¹ÌÑğÿø'8VVxx¢¢¢Â8Dmz^^n‚‹‘££§ª²9l{’ÆyÆyÜyëyğyzòyzzz$z9z&zHzNzgz€z™z²zËzÕz:<‰”/8>BM;”)şìşìí
íí'í)í9íDíVíaílí{íŒí“í¬í°íÁíÁíËíÒíåíîíüíî,î1îNî<d(=8‡8‡D‡X‡[‡o‡w‡{‡…‡�‡—‡š‡ ‡=$uº0E0ETEWE[EhEqE|EŒE”E�EÆEÆEÖEÛEÛEëEğEğEFFFFFF*F/F/F?FDFDFTFYFYFiFnFnFnFqFqFŠF˜F¯FÂFÂFÄFÄFÓFÙFŞFŞFäFôFôFÿFGG4G<GBGBGVGVG_GbG H>Ğ q†¨†¨£¨«¨®¨¼¨ʨߨ訩©.©9©J©N©`©c©n©w©ƒ©–©Ç©¼©¢©שªª=ªRªvªŠªŒª­ª“ªȪ˪ЪÓªÓªÚªñªøª«
««&«9«9«M«Q«~«~«–«›«›«««³«Ä«Ϋß«é«ü«¬␍¬␍¬¬%¬6¬@¬Q¬[¬n¬z¬¬¬¬¡¬²¬¼¬Á¬άã¬ã¬è¬ò¬­­ ­­­­ ­/­4­:­?­?­E­K­P­P­X­k­w­„­�­Ÿ­§­­­¶­Í­á­ò­ÿ­®®/®F®S®[®j®r®x®�®Š®Š®�®�®�®�®�®›®›®›®³®É®Ñ®ì®ı®
¯ ¯¯¯¯¯)¯7¯<¯<¯C¯Q¯V¯n¯z¯�¯›¯¡¯©¯¯¯¸¯ޯê¯ğ¯ö¯°␍°°B°S°`°b°p°p°u°u°|°а�°¢°®°º°À°ưϰÔ°Ô°Ô°Ô°Ô°ì°ñ°ñ°ñ°ñ°ñ°±±±±±±±±±±±0±8±S±d±q±s±€±Œ±‘±‘±‘±š±´±À±űç±ó±ó±ø±ø±ø±ø±ø±ø±ø±ø±␍²²²²#².²3²3²>²P²h²}²�²¿²ʲÛ²à²à²à²é² ³³%³+³C³S³[³c³n³˜³¡³§³¿³ϳϳϳϳϳñ³*´3´9´?´D´M´V´[´[´[´[´j´~´œ´¬´²´·´·´Ê´Ş´µµµµ"µ"µ1µEµcµsµyµ~µ~µ‘µ¥µ˵޵äµäµéµéµéµ:¶K¶X¶Z¶i¶k¶k¶k¶k¶k¶��¨¶ª¶ª¶³¶µ¶µ¶ɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶɶ˶˶â¶ê¶ö¶ö¶ú¶ÿ¶·+·C·R·^·t·�·‘·›·§·Í·í·␍¸1¸3¸F¸t¸L¸�¸�¸’¸¢¸ª¸ŸÖ¸Ù¸ó¸¹␍¹%¹%¹P¹S¹b¹v¹—¹«¹ǹ³¹ã¹ø¹ºKºIº>º3º$ºYºYºYº\ºaºdº~ºŒºººܺܺ»
»»-»N»b»~»j»š»š»¸»í»ë»à»Õ»Æ»û»û»û»ş»¼¼
¼¼;¼G¼ ¿?”£Ä¶Ä¶ÄÌÄĞÄÛÄâÄíÄÅÅ ÅÅ$Å1Å=ÅJÅRÅcÅcÅlÅqÅyʼnŗŦűÅÄÅÄÅ×Å×ÅíÅÆÆ-Æ/Æ/Æ9ÆAÆAÆKÆSÆSÆSÆdÆdÆdÆjÆrÆxÆ}Æ}ƃƋÆ�ƕƚƚưÆÀÆÊÆÙÆŞÆæÆæÆëÆëÆòÆÇÇ"Ç*Ç0Ç?ÇDÇLÇRÇRÇ^ÇiÇ�ǬǶǾÇÄÇÙÇßÇäÇäÇäÇäÇäÇäÇäÇäÇäÇïÇıÇ␍ÈÈÈ*È/È<ÈDÈIÈIÈIÈQÈZÈcÈpÈxÈ„È�ÈÃÈËÈÚÈäÈşÈÉ É ÉÉ#É+É@ÉHÉPÉeÉgÉrÉzÉ�É�ɗɨɰɷɽÉÃÉÇÉĞÉÕÉùÉÊ␍Ê"Ê.Ê3Ê?ÊJÊOÊOÊOÊeʂʇÊ�ʠʨʰÊÅÊÊÊÕÊİÊòÊ÷Ê÷ÊË'Ë/ËDËPËUËaËlËqËqËqËqËqËqË|Ë|Ë|Ë|Ë|Ë|Ë|Ë|Ë|Ë|Ë|Ë|ˇ˖ˤ˴˺ËÂËÑËÖËŞËæËèËğËÿËÌ␍ÌÌÌ4Ì<ÌEÌMÌUÌZÌ_ÌqÌ¥Ì­Ì¼ÌÆÌàÌèÌíÌíÌíÌöÌÿÌÍ ÍÍ,Í.Í@ÍRÍRÍRÍ]ÍbÍ̈́̈́Í�Í’Í’Í’Í’Í’Í’Í’Í’Í’Í’Í’Í’Í’Í’Í’Í’Í�Í©ÍÁÍÔÍÜÍëÍğÍøÍÿÍ ÎÎÎ&Î-Î2Î2Î:ÎBÎ`ÎhÎkÎmÎ}···ΉÎ�ίβενÎÂÎÂÎËÎĞÎØÎßÎìÎÏÏÏ%ÏBÏ[ÏpυόόϑϑϑϑϑϑϑϙϤϰϿÏÄÏÄÏÌÏÔÏáÏæÏæÏæÏêÏïÏïÏÿÏĞĞĞĞĞĞ'Ğ,ĞCĞRĞZĞkĞsЖМУХЫвввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввввддĞÏĞÙĞçĞçĞìĞ÷ĞşĞÑ'Ñ'Ñ'Ñ+Ñ6ÑTÑbÑZÓ@ôz^Ó^ÓtÓӆӑӜӳӾÓÅÓÕÓèÓòÓòÓÔ(Ô/Ô8Ô?ÔBÔNÔWÔ^ÔaÔfÔqÔ{Ô�Ô“Ô©Ô°Ô¸ÔÎÔÕÔÕÔÕÔÚÔßÔéÔìÔñÔûÔşÔÕÕ Õ0Õ3Õ8ÕHÕKÕOÕXÕ`ÕrÕzÕzÕzÕ…Õ�Õ¡Õ§Õ½ÕÄÕÌÕÓÕèÕùÕùÕÖÖÖÖ
ÖÖÖÖ&Ö)ÖAÖFÖKÖ[Ö^ÖcÖsÖvÖzÖƒÖ‹Ö�Ö¥Ö¥Ö¥Ö³Ö»Ö»Ö¾ÖÉÖçÖõÖ>×A|`»NÚNÚfÚvÚ}Ú„Ú�Ú¢Ú¥Ú­Ú´Ú·ÚÇÚÕÚàÚëÚîÚùÚÛÛ%Û0Û;ÛFÛ]ÛiÛ†Û�Û—ÛŸÛ¬ÛÊÛÍÛÓÛØÛçÛíÛõÛÜ
ÜÜÜÜ,Ü;ÜCÜRÜZÜ}܃܉܋ܑܗܗܗܼÜÁÜŞÜáÜáÜèÜõÜùÜİİ*İ:İMİiİ~݆İ�ݯİÃİÃİ7ŞB Æ.Æ.Ğ.Ø.İ.CÉÆ&W&WCWNWaWNW{W‰W‰W™W¢W©W­W¶W¶W¾WÂWâWğWüWX␍X1X1XDXOXUX\XaXaXtXXŠX‘X›X¨X¨XºX¿X¿XÏXÔXÔXÔXçXìXÿXYY#Y7Y7Y<Y<YLYQYQYVY]YeYlYnYvY}Y}YŒY’YŸY¦Y©YÍYÍYÕYäYïYöYøY ZZ Z%Z%Z%Z8Z=ZLZSZ\ZqZ…Z…ZŠZŠZ’Z¨Z­ZÁZÈZÍZÍZÙZèZúZ [[ [/[=[K[Z[y[„[‰[˜[¬[³[º[Í[Ï[İ[ğ[ò[\\\%\<\C\O\`\w\y\…\�\’\’\�\±\¾\Æ\È\Ü\î\õ\]]6]=]I]g]g]g]o]z]~]†]Š]’]™]©]´]Ò]×]à]ë]ô]ü]^^^^+^6^A^O^U^[^a^j^p^^Œ^”^ ^®^Å^Ç^Ğ^Û^İ^é^_␍___"_3_Z_b_l_z_’_™_¥_´_É_É_Ö_Û_í_ó_ó_ó_ó_µ`DDUb6x6xJxWxmxYx|x~x–x®x¶xEœfɆN†N¨N²NÚNéNôN␍OOOO'O6O=OFOKO`OqO�O˜OšO¹OÁOĞO×OãOèOïO÷OıOÿOPP+PP:P@P@PHPQP`PP†PˆP§P®P®P®PÅPÎPÚPŞPìPQ÷PQ Q0Q5QKQ7QZQ`QgQoQuQwQˆQ�Q£Q�Q²Q¸Q¸QÀQÉQÉQÓQÓQëQR$R0R4RBRXRMRpRpR‚RFôE~æßæßà!à&àGàeàtà’à¦à¾àÅàëà áá5áFá]áaáaáeájáoáyá|á†á‹á©á¬á¬á¬á±á·áÓáááíáöá
âââ7âBâNâWâkâkâzâââ�âGP‡—V<V<w<d<™<†<¨<·<¿<Ê<Ì<×<â<â<=
=HP…•fõfõzõõ�õ�õ•õÂõØõÄõõõçõ␍ööIŒe„ŞóŞóô=ô=ôPôTôvôŠô�ô�ô–ô�ô¦ô»ôÇôØôİôîôõõ õ õ õ%õCõCõ`õJP�­Ö:Ö:ÿ:;;;0;?;N;];k;v;y;‰;Kè7f)f)‘)”)—)�)¢)¹)Ğ)ç) *'***I*c*u*‚*˜*«*°*»*Ã*Ã*Í*Í*Ø*İ*ò*ø*+6+8+M+S+r+‘+™+¤+¤+®+®+À+ş+,(,L$ .V.VYVBVcVkVMLs‚VÊVÊhÊ}Ê�ʟʦʮʾÊÉÊÚÊàÊËNTHYcc*c,c5c>cLcQcZc]cbcpczc}c‡cO¨!Gpapa€a‰aœa©aµaÁaÍaÙağağaÿa
bbb#b:bQbVbhbwbƒb•b•b�bÁbÁbÃbÖbØbòbşbccPhî„nn)n4nDn�n”n¨n¯n·n¿nÈnĞnØnÚnânênñnøno/o8o8omo—o oÂoÜoùo#p/pQpSpZpapap„p pÇpãp
q&qMqiq�q¬qÓqïqrr%r2r7r7rFrSrXrXr_rjr|r•r®rÇrÉrÉrÉrĞrĞrİrârârârórss)seslslslsts‘sŸs½sÆsÏsÜsêst t t t3tAt]t{t{t{t†t‰t¸tºtÑt×tètñtótuuuuuuBuDuKu\ueuguuuwu…u‡u•u•uµuµuµuµuÕu v/v7v;vCvGvUvcvevmvqvuv}v‹v™v™v³v¾vÔvèvw!w,w6w=wVwbwiw‚w‚w”w™w›w¡w²wÃwÒwÙwêwówõwxxxx#x#x#xGxGxfxmxtxwxƒx†x”x˜x¦xªx¸x¼x¼xÕxÜxáxïxy y$yDyWyfyhywyyyˆy’y’y y©y¿yÆyëyğyzIzNz\z^zlzuz�z‘z“zšz«z´z¶zÄzÆzÔzÖzäzäz{{{{{#{#{#{.{J{o{ˆ{�{�{�{¯{´{´{´{Ô{Ù{Ù{Ù{ø{ı{ı{||||||||| |>|T|y|•|©|®|®|É|Ö|Ø|ç|ğ|
} } }} }2}4}4}<}7}w}w}w}–}–}–}·}¼}¼}¼}Ş}ã}ã}ã}~~~~'~,~,~G~U~W~f~o~‰~‹~‹~�~‹~±~³~³~»~¶~ö~ö~ö~++Um…�¦ºÓë€!€#€4€Q€h€o€g„Q|␍(îåîå ææ0æJæbæmæ‰æ‰æ‰æ–æ±æ³æ³æ³æÀæÛæİæİæëæøæçç#ç5çRæd&Ú&Ú@ÚIÚiÚiÚoÚwÚÚ‡Ú•Ú›Ú¨Ú¨ÚÂÚÇÚÇÚÍÚÒÚÒÚØÚİÚİÚãÚèÚèÚÛÛÛÛÛ'ÛGÛGÛGÛNÛPÛPÛWÛYÛYÛ_Û_ÛfÛhÛhÛnÛnÛuÛwÛwÛ}Û}ۄۄیےۘ۠۠۠۠۬۴ۼÛÄÛÌÛÚÛèÛîÛÜÜ Ü"Ü"Ü,Ü5Ü;Ü;Ü?ÜGÜQÜUÜcÜkÜqÜy܃ܑܙÜ�ܣܮܴÜÅÜÑÜ×ÜßÜãÜíÜûÜİİ␍İİ İ-İ5İ9İ?İJİOİh݂݇݊İ0ŞSL”£8…8…Q…S…Z…p…€…†…�…¶…¹…Ë…†TÔ*[>î>îRîgîvîzîˆî‘î î î¯îºîÅîĞî×îçîşîïï ï$ï7ï7ïMïOïYï}ïˆïŠï£ï§ïµïºïºïÁïĞïØïëïUğU$îUîUVV#V+VVPÍİ~?~?Ÿ?Œ?Á?®?Ğ?ß?ç?ò?ô?ÿ?
@
@,@2@W,¾Ô¾ÔÇÔÍÔÕÔŞÔçÔìÔX …ÆŠÆŠçŠüŠ‹‹2‹<‹K‹e‹r‹r‹|‹|‹ƒ‹–‹”‹¤‹¤‹¯‹¹‹¿‹Å‹È‹Ö‹İ‹õ‹ü‹ÿ‹ŒŒ!Œ,ŒFŒaŒuŒ{Œ�ŒˆŒ¦Œ�Œ¯ŒµŒ»ŒÃŒãŒËŒìŒòŒøŒ���%�␍�.�4�:�B�b�J�k�q�w���•�•�•�•� �ª�³�Ó�ß�í�ò�����$�,�4�=�I�]�j�y�ˆ�¢�§�§�²�º�Ç�Ò�ß�ë���)�4�9�9�D�Z�o�{�‰���œ�°�°�»�°�Ó�Ø�Ø�ç�ì�ì�û������'�,�,�?�N�S�S�f�u�z�ˆ�z�œ�¡�¯�¡�Ã�È�Ö�È�ê�ï�ı�ï�‘‘‘3‘8‘Z‘_‘m‘_‘�‘†‘†‘£‘¨‘ʑϑݑϑñ‘ö‘ö‘’’:’?’M’?’a’f’f’ƒ’ˆ’ª’¯’½’¯’Ñ’Ö’Ö’ñ’ö’ö’“““1“6“6“Q“V“V“q“v“v“‘“–“–“±“¶“¶“ѓ֓֓ç“ì“ì“ı“””””.”3”3”?”X”]”ƒ”Š”””™”ª”´”ɔԔٔê”õ”ı”•••
•••%•%•8•=•=•=•A•W•`•`•†•‹•‹•“•§•°•Ê•וâ•í•ø•
–– –$–$–$–5–R–]–g–r–w–‚–Š–�–�–š–¢–«–¶–Æ–Ş–ö–
————-—7—B—c—o—}—‚—�—”—™—™—©—´—¼—Á—Ì—Ù—å—ÿ—˜#˜.˜3˜>˜F˜K˜V˜c˜o˜‰˜›˜­˜­˜­˜­˜²˜·˜·˜ØÔ˜Ô˜ù˜û˜™™"™6™@™B™N™V™s™„™�™™™¼™Í™Ş™ï™ú™š"š'š'š2š7š7š?šJšOšOšWšbšgšgšoš�šyšwš¨š­š­šµšÖš¿š½šîšóš›óš ›$›$›1›6›6›>›C›C›U›g›l›l›€›l›˜›�›�›¥›ª›ª›½›››Õ›Ú›Ú›ô›œ œ œ#œ3œ8œ8œRœbœgœgœ�œ‘œ–œ­œ–œÅœÊœÊœÕœÚœ��òœÚœ.�3�o�]�K�3�‡�Œ�Œ�›�«�°�°�¿�Ï�Ô�Ô�ã�ñ�ö�� �ö�6�;�c�Q�;�{�€�¨�–�€�À�Å�Å�â�Ì� ŸŸ!Ÿ!Ÿ<Ÿ(ŸfŸvŸ{Ÿ{Ÿ‡ŸŒŸŒŸ˜Ÿ�Ÿ�Ÿ°ŸÀŸÅŸÅŸØŸèŸíŸíŸ    ( 8 = = E J J R W W _ d d l q q „ ‰ ‰ œ ¡ ï İ Ë ¹ ¡ ü ¡O¡=¡+¡¡¡\¡a¡a¡p¡‹¡�¡�¡¡¡¼¡Á¡Á¡Ò¡à¡å¡å¡í¡ò¡ò¡ú¡ÿ¡ÿ¡¢ ¢ ¢D¢2¢ ¢¢c¢~¢ƒ¢ƒ¢»¢©¢—¢Š¢Ú¢õ¢ú¢/£££ú¢G£L£�£o£d£L£™£�£¸£¢£�£Ğ£Õ£ò£Ü£Õ£
¤¤¤¤4¤D¤U¤U¤z¤|¤’¤˜¤˜¤µ¤¤ó¤$¥¥G¥O¥O¥O¥[¥`¥`¥s¥~¥ˆ¥�¥˜¥¢¥§¥§¥Á¥Æ¥Æ¥Î¥Ó¥ç¥Ó¥ö¥¦¦¦¦)¦4¦9¦9¦D¦U¦Z¦Z¦e¦p¦u¦u¦†¦‹¦‹¦œ¦¡¦¡¦»¦Ʀ˦Ö¦˦å¦ê¦ş¦ê¦␍§§§§,§1§E§1§T§Y§Y§m§Y§|§|§|§�§�§�§ §¥§¥§±§¥§ħɧɧÕ§ɧè§í§í§ù§í§ ¨¨%¨¨4¨@¨K¨V¨[¨o¨[¨~¨Ѝ•¨ ¨¥¨¹¨¥¨ШȨÙ¨ިިæ¨ë¨ë¨ô¨ù¨ù¨©©©©©© ©%©%©0©5©5©@©E©E©P©U©U©`©e©e©p©u©u©€©…©™©…©¨©³©¾©É©ΩΩØ©İ©İ©ç©ì©ì©ö©û©û©ª
ª
ªªªª$ª)ª)ª6ª;ª;ª;ª;ª;ªCªHªHªPªUªUª]ªbªbªjªoªoªwª|ª�ª|ªŸª°ªµªµª¼ªǪçªìª«␍«&««5«@«K«P«P«W«b«‚«‡«�«¨«Á«­«Ğ«Û«æ«ë«ë«ò«ı«¬"¬8¬C¬\¬H¬k¬v¬�¬†¬†¬¡¬�¬°¬ЬÕ¬ë¬ö¬­û¬2­­A­L­Q­Q­l­X­{­›­ ­¶­Á­Ú­Æ­ı­é­ ®®®®7®#®F®f®k®�®Œ®¥®‘®È®´®×®â®ç®ç®ö®û®û®
¯¯¯¯¯¯¯¯$¯&¯&¯0¯7¯Z¯\¯\¯f¯f¯f¯f¯f¯h¯h¯¯†¯‘¯‘¯œ¯¢¯©¯´¯¿¯ʯį寰÷¯°°(°"°N°C°f°f°f°o°v°‰°�°œ°¯°¯°˰Ö°ê°±±±(±8±M±_±o±o±—±�±­±¿±¿±ñȱϱß±ş±ş±²² ²%²%²)²4²@²N²{²„²•²£²Ö²â²ç²ı²³³+³0³>³Z³…³®³±³Á³óódzæ³ñ³ñ³ô³´-´M´M´M´P´y¶Y, îÔîÔüÔÕÕÕÕÕZ`FZÖ‚Ö‚ì‚ú‚ƒƒƒ-ƒ1ƒ7ƒMƒjƒlƒlƒ�ƒ‹ƒlƒ¼ƒƃ[8
~U~UŸUŒU®U¹UÄUÏUÚUæUìU\\’¸�¸�Æ�È�Ó�Û�æ�ñ�ü�ş�ŸŸ&Ÿ2Ÿ;Ÿ>ŸmŸ]è®dŞëŞë ìì ìKìKìVìcì�ì‰ì¶ì»ìäìí í&í*íMísíxí¡í¾íäíûíîîî&î+î<îDîcîiîmî†î�î­î²îÃîËîêîïî÷îıîïïï ï$ï=ïBïNïSï^ïdïvïï“ï�ïÃïôïğ"ğ"ğ"ğ8ğGğTğtğtğ‹ğ�ğ�ğ§ğ©ğ©ğ½ğ¿ğ¿ğÖğØğØğïğñğñğñññññ-ñ-ñañuñuñˆñ�ñ�ñ�ñ�ñ¼ñÒñîñîñîñûñòòòò!ò8ò:ò:òGò^ò^òsòuò�òªòªòªò®ò°ò°ò°òµò·ò·ò¼ò¼òÆòËòËòçòçòçòïòñòñòñòùòûòûòóóó&ó(óCó^ó^ó^ó^ó^óqóˆó�ó�óÜó^\
ÎJÎJàJöJK K6KIKTKiKVKxK€K‹K¡K—K¹K¿K_øA66$6'6.656<6@6B6I6P6T6X6k6“6®6›6Æ6Ë6ï6ï6û677L7Q7~7†7‹7”7 7¨7¯7Ñ7×7ù7û78)8K8Q8X8X8^8a8e8v8™8«8`$nŞnŞ}ޘޘŞ�Şa|\wéé(éTéTéséƒé…é…é…é…éŒé”é¯éÈéÊéÊéÊéÒéíéïéïéùéùéêb”"33@3J3V3[3k3q3†3š3ª3¸3Æ3İ3å3ï3ş3444444 4/494B4J4M4_4côÍî2î23$3'30363M3d3{3†3¼3Ü3á3æ3ñ3 44*4@4V4m4r4„4‰4Œ4¬4Ì4Ô4Ü4á45!5)51535S5[5`5e5p5p5{5{5‡5‡5™5Ù5ò5ò56dd¤¹ğŠğŠ‹‹‹‹!‹/‹B‹N‹h‹u‹u‹x‹†‹–‹°‹´‹¼‹e¸ù—*—*­*²*Æ*õ*+++"+"+3+:+K+R+[+r+r+ˆ+ˆ+�+�+´+´+Ê+Ê+à+à+ö+ö+ , ,",",9,9,P,P,g,g,~,~,•,•,¬,¬,Ã,Ã,Ú,Ú,ò,ú,--!-2-5-7-N-U-a.f¬÷ÖÖğöı␍--DKNP\mmpx�‘Ÿ¢¥¬°¸ÆØëî=g(ÉÏ}}-}}<}N}V}hCöNöNO.O3O;OCOKOXO^OgOmOrOzO–OœO�O O­O­OºO¯OËOÑOÓOÕOâOâOâOçOğOøOP P PPP#P0P6PAPHPXPcPrP“PšP¥P®P¿PÃPËPËPßPïP÷PúP`Qi8-7§/§/»/¿/Ä/Ï/Ú/İ/á/é/jˆ[ùƃƃàƒûƒ„„„„4„9„D„b„L„q„„„–„Ÿ„§„±„Ï„á„ê„ò„ü„……&…8…B…J…b…L…‡…q…–…¨…²…º…º…Ã…Ë…á…ú… †† † †&†+†I†K†P†[†q†q†q†u†�†¢†¬†¶†¿†à†ê†ô†ö†ö†‡!‡/‡2‡K‡O‡j‡n‡�‡‘‡¬‡°‡°‡°‡¶‡ć·ç‡í‡ø‡ˆˆˆˆ-ˆ8ˆFˆPˆiˆlˆtˆ€ˆ‚ˆŠˆ�ˆ¦ˆ¨ˆ´ˆ¶ˆ¾ˆĈ݈õˆ‰‰‰0‰@‰Y‰j‰j‰u‰€‰˜‰¤‰¹‰¾‰Ó‰ã‰ü‰␍Š␍ŠŠŠ&Š4Š;ŠMŠkeã6Ş6ŞPŞYŞyŞyŞއŞ�Ş—Ş¥Ş«Ş¸Ş¸ŞÆŞËŞËŞÑŞÖŞÖŞÜŞáŞáŞçŞìŞìŞßßß"ß"ß+ßKßKßKßRßTßTß[ß]ß]ßcßcßjßlßlßrßrßyß{ß{ß�ß�߈߈ß�ߖߜߤߤߤߤ߰߸ßÀßÈßĞߪßìßòß
àà#à&à&à0à9à?à?àCàKàUàcàkàoàuà}à‡à•à�à¡à§à²à¸àÉàÕàÛàãàçàñàÿàá ááá#á1á9á=áCáNáSálá†á‹á�á4âl`�!�!˜!Ÿ!³!Ç!Ì!ê!ï!␍""-"/"F"Z"c"e"y"‰"º"m�2Ò“““/“@“Q“b“s“†“�“œ“º“œ˓ؓí“í“”””,”G”G”S”[”c”i”~”†”Š”’” ”¦”«”«”À”Քܔä”ì”ò”•(•4•8•B•[•a•c•p•r•„•„•‹•“•¥•¥•´••Օٕã•ç•ó•÷•–––––-–@–F–J–T–X–g–k–z–~–‘–•–•–•–•–¬–º–Ç–Ï–æ–ö–——%—2—A—I—V—q—�—‘—–—–—–—–—£—²—º—À—Õ—ä—ù—
˜˜ ˜ ˜ ˜2˜8˜D˜J˜W˜r˜‚˜�˜”˜¡˜³˜Á˜ã˜hšnÔ¼í l l2lClNlYlol�l™l�l­l´lÁlÈlÖlİlßlâlçlélïl m#m9mQmVmemlmym�m®mµm·mºm¿mâmn no$hm?&?&M&a&h&‚&pxKe–M–M¾MªMÍMèMÔM÷MüMN NNN(N0N8NCNNNdNYN|N„NqFƒşpşpq!q9qQq[qfqfqkqvq‚q�q›q«q»qÂqÈqİqòqòqrrr+r:rGrXrirwr…rŒr’r§r¼r¼rĞrİrîrşrssss,s=sJsZs¼sr8«µ¦N¦NªN¯N´NÅNÓNÜNáNæNèNs88Bï/ï/00 00!0$0(000t0†�îLîLMM$M*M-M5MuÜtFFhs~‡—©¯µ»ÑÀåòõı=PTZqw‡�™§¬ºÓáêúü/=Ic‚‰“¢¨®´ºĞñ(3BP_l|Š¡­²ÀÜî $*ALY``n}�œ®®Ùäv`1EÖ�Ö�ì�ş�‚ ‚‚7‚;‚A‚W‚t‚v‚v‚§‚•‚v‚ƂЂwD‹Ø�â�â â¨â³â¹â¿âÃâÇâóâóâúâıâããã?ãCãHãHãOãRãWãcãtãxã‰ã›ãŸã¡ã³ã·ãÓã×ãÜãÜãğãóãä ää8äCäGäLä‚ä›ä¦äªä»äÆäÊäÌä×äÛäÛäïäóäõäõäåååååå åBåxˆÙ÷FåFåZåpåpåpåråråyå{å{å‚å„å„å‘å“å“å å§å©å©å¶å½å¿å¿å×åÜåÜåìåy°0XŞVŞVöVşV WmWSWHW.WWsW…WuW¥W¥W¼W°WîWóWÿWXX#X)X0XTXCX7XkXmX‰X‰X�XºXºXºXÆXzÄL¹ŞùŞùüùúú8ú8ú:úGúRúXúiúxú‡ú”ú”úšúŸú¤úºúÍúØúÜúîúûúûû
û%û3û3û3û>ûYûDûaûtûvû’û~ûšû¨û¨ûªûÆûÆûÍûÓûÜûãûæûüüü$ü*ü3ü3ü3üFüKüKüSüSü^üsü|ü|ü|ü|ü˜ü¯üµüºüºüÏüÕüÚüÚüæüı#ı(ı-ı-ı9ıVıeıtı|ı�ı‡ıŒıŒı“ıšı½ıÚıÜıùışşşş!ş*ş*şHş^şişnş{ş†ş�ş—ş§ş¾ş¾şÎşÎşàşæşÿÿÿÿ!ÿ&ÿ&ÿ3ÿ>ÿDÿMÿMÿ`ÿmÿÿŠÿ˜ÿ¡ÿ¦ÿĞÿÙÿäÿéÿğÿøÿ  %,9@Rgnt}}† §¬ºÊØØŞåîî'/7C`gtv}‘   ÊÊÊ××ì÷ !/:IPPi|~�¢¤²ÇÇÍÖÖãéûû (/:?GNY^su�¤¤¤¦­³ÄÒääêñúÿ#,,2;;ZZgjs|„�¡§²²¿ÂËÔÜçùÿ

#,.Pcx~‰›¡©©©©´- {”�¾×2×2ë2ï2ø2û23␍3 3 3K3O3T3W3`3p3w3z3‚3…3’3š3¢3ª3±3Á3Á3Í3|`2ÆKÆKîKÚKıK"LL1L6L=LELLLWL_LjL€LuL˜L L}À- e e¾eÎeØeØeâeâeìeşe ffff&f&f4fHfHflfyfyf‰f–f–f¹fÆfÆfÜfÿfg8gAgNgNgqg{g{g®gágçgçgçgùg~¸ºäÀ‹À‹Ø‹Ú‹æ‹ê‹÷‹ú‹ŒŒŒŒŒ&Œ1ŒEŒQŒSŒSŒ\Œ^Œ^ŒgŒiŒiŒrŒtŒtŒ}Œ}Œ†ŒŒŒ�Œ™ŒªŒ°Œ¼Œ¼Œ$�œö##4#E#]#d#€#u#˜#¸#¤#Ç#Ø#İ#ş#ê#$3$:$V$K$n$�$z$�$®$Ä$°$Ü$é$é$%% %€œX{^1^1j1z1…1¯1ß1ğ1222!252<2J2b2q2~2�2š2�2¢2¹2É2Ù2İ2ä23�x¬¨®¨®¾®Å®Ì®ë®ú® ¯¯'¯6¯@¯@¯E¯L¯_¯n¯s¯�¯¨¯¨¯¾¯Ğ¯Ô¯â¯é¯î¯î¯õ¯°°° °2°2°2°D°O°a°l°y°~°�°“°£°¯°´°Á°Æ°Ö°Û°ë°í°ı°ÿ°±±"±+±+±-±=±D±T±T±o±�±“±¥±µ±µ±µ±¸±Ë±‚\åø(�(�C�J�O�]�r�y�ƒ�‘�”�–� �²�²�¹�ï�ƒ0ÎÖ6xl@>Œ”„`0Ö€Ö€ì€ş€���7�;�A�W�t�v�v�§�•�v�Æ�Ğ�…L4CÖ/Ö/ä/ö/ü/000%070=0@0|0†(–œ§2§2µ2Ä2È2Ë2Ñ2‡\DW~0~0Œ0�0¤0¬0¾0Ä0Í0ß0å0î011 1W1ˆ, –Ô–Ô¤Ô«Ô³Ô¸Ô¾Ô‰„ 

$
6
=
D
S
X
z
z

¡

£
Å
Ô
Ö
ø
ø
ø
 #  ; E Š`>~e~e›e£eªeÏeİeßeíeúef f"f1f<f@fKfWfbfnf…fœf¯fÆfĞfŞfğfòfgggg,g2gBgBgZgZggg„g„g�g™g¦g²gÇgŞgígøg
ÖÖÖÖ&Ö)ÖAÖFÖKÖ[Ö^ÖcÖsÖvÖzÖƒÖ‹Ö�Ö¥Ö¥Ö¥Ö³Ö»Ö»Ö¾ÖÉÖçÖõÖ>×Ax`ºNÚNÚfÚvÚ}Ú„Ú�Ú¢Ú¥Ú­Ú´Ú·ÚÇÚÕÚàÚëÚîÚùÚÛÛ%Û0Û;ÛFÛ]ÛiÛ†Û�Û—ÛŸÛ¿ÛÂÛÈÛÍÛÜÛâÛêÛùÛÿÛÜÜÜ!Ü0Ü8ÜGÜOÜrÜxÜ~܀܆܌܌܌ܱܶÜÓÜÖÜÖÜİÜêÜîÜùÜİ İ/İBİ^İsİ{݅ݤݸݸİ,ŞB Î.Î.Ø.à.å.CÉÆ&W&WCWNWaWNW{W‰W‰W™W¢W©W­W¶W¶W¾WÂWâWğWüWX␍X1X1XDXOXUX\XaXaXtXXŠX‘X›X¨X¨XºX¿X¿XÏXÔXÔXÔXçXìXÿXYY#Y7Y7Y<Y<YLYQYQYVY]YeYlYnYvY}Y}YŒY’YŸY¦Y©YÍYÍYÕYäYïYöYøY ZZ Z%Z%Z%Z8Z=ZLZSZ\ZqZ…Z…ZŠZŠZ’Z¨Z­ZÁZÈZÍZÍZÙZèZúZ [[ [/[=[K[Z[y[„[‰[˜[¬[³[º[Í[Ï[İ[ğ[ò[\\\%\<\C\O\`\w\y\…\�\’\’\�\±\¾\Æ\È\Ü\î\õ\]]6]=]I]g]g]g]o]z]~]†]Š]’]™]©]´]Ò]×]à]ë]ô]ü]^^^^+^6^A^O^U^[^a^j^p^^Œ^”^ ^®^Å^Ç^Ğ^Û^İ^é^_␍___"_3_Z_b_l_z_’_™_¥_´_É_É_Ö_Û_í_ó_ó_ó_ó_µ`DDUb6x6xJxWxmxYx|x~x–x®x¶xEœfÉvNvN˜N¢NÊNÙNäNıNOOOO&O-O6O;OPOaO€OˆOŠO©O±OÀOÇOÓOØOßOçOíOïOPPPP*P0P0P8PAPPPoPvPxP—P�P�P�PµP¾PÊPÎPÜPòPçP
QQ Q%Q;Q'QJQPQWQ_QeQgQxQ}Q“QQ¢Q¨Q¨Q°Q¹Q¹QÃQÃQÛQ RR R$R2RHR=R`R`RrRFôE~ÖßÖßõßàà7àUàdà‚à–à®àµàÛàùàá%á6áMáQáQáUáZá_áiálává{á”á—á—á—áœá¢á¾áÌáØáááõáıáâ"â-â9âBâVâVâeâjâjâxâGP‡—F<F<g<T<‰<v<˜<§<¯<º<¼<Ç<Ò<Ò<ô<ú<HP…•VõVõjõoõ~õ~õ…õ²õÈõ´õåõ×õıõöIŒe„ÎóÎóô-ô-ô@ôDôfôzôôô†ô�ô–ô«ô·ôÈôÍôŞôòô÷ôùôùôùôõ3õ3õPõJP�­Ş:Ş:; ;;;8;G;V;e;s;~;�;‘;Kè7V)V)�)„)‡)�)’)©)À)×)û)**9*S*e*r*ˆ*›* *«*³*³*½*½*È*Í*â*è*+&+(+=+C+b+�+‰+”+”+�+�+°+î+,,L$!.V.VYVBVcVkVMLx‡fÊfÊxÊ�Ê�ʯʶʾÊÎÊÙÊêÊğÊ"ËNTHYccccc&c4c9cBcEcJcXcbcecocO¨!GXaXahaqa„a‘a�a©aµaÁaØaØaçaòaûab b"b9b>bPb_bkb}b}b†b©b©b«b¾bÀbÚbæbébcPhî„ğmğm nn$nmntnˆn�n—nŸn¨n°n¸nºnÂnÊnÑnØn÷noooMowo€o¢o¼oÙopp1p3p:pApApdp€p§pÃpêpq-qIqpqŒq³qÏqöqöqrrrr&r3r8r8r?rJr\rtrŒr¤r¦r¦r¦r­r­rºr¿r¿r¿rĞrŞrñrsBsIsIsIsQsns|sšs£s¬s¹sÇsásısısıstt:tXtXtXtctft•t—t®t´tÅtÎtĞtİtßtìtîtûtût u!u(u9uBuDuRuTubudururu’u’u’u’u²uæu vvv v$v2v@vBvJvNvRvZvhvvvvv�v›v±vÅvåvşv www3w?wFw_w_wqwvwxw~w�w w¯w¶wÇwĞwÒwàwâwğwòwxxx$x$xCxJxQxTx`xcxqxuxƒx‡x•x™x™x²x¹x¾xÌxßxæxy!y4yCyEyTyVyeyoyoy}y†yœy£yÈyÍyöy&z+z9z;zIzRzlznzpzwzˆz‘z“z¡z£z±z³zÁzÁzázázázázáz{{{ {'{L{e{j{j{j{Œ{‘{‘{‘{±{¶{¶{¶{Õ{Ú{Ú{á{ã{ã{ë{í{í{ô{ô{÷{ü{|1|V|r|†|‹|‹|¦|³|µ|Ä|Í|ç|é|é|î|é|}}}}}T}T}T}s}s}s}”}™}™}™}»}À}À}À}à}å}å}å}~ ~ ~$~2~4~C~L~f~h~h~m~h~�~�~�~˜~“~Ó~Ó~Ó~Ş~Ş~2Jbmƒ—°Èàş€€.€E€L€D„Q|␍(ŞåŞåüå
æ æ:æRæ]æyæyæyæ†æ¡æ£æ£æ£æ°æËæÍæÍæÛæèæççç%çRæd6Ú6ÚPÚYÚyÚyÚÚ‡Ú�Ú—Ú¥Ú«Ú¸Ú¸ÚÒÚ×Ú×ÚÝÚâÚâÚèÚíÚíÚóÚøÚøÚÛ#Û)Û.Û.Û7ÛWÛWÛWÛ^Û`Û`ÛgÛiÛiÛoÛoÛvÛxÛxÛ~Û~Û…Û‡Û‡Û�Û�۔۔ۜۢۨ۰۰۰۰ۼÛÄÛÌÛÔÛÜÛêÛøÛþÛÜ%Ü/Ü2Ü2Ü<ÜEÜKÜKÜOÜWÜaÜeÜsÜ{Ü�܉ܓܡܩܭܾܳÜÄÜÕÜáÜçÜïÜóÜýÜ ÝÝÝÝ%Ý/Ý=ÝEÝIÝOÝZÝ_ÝxÝ’Ý—ÝšÝ@ÞSL”£……1…3…:…P…`…f…~…–…™…«…ó…TÔ*[NîNîbîwî†îŠî˜î¡î°î°î¿îÊîÕîàîçî÷îï%ï+ï0ï4ïGïGï]ï_ïiï�ï˜ïšï³ï·ïÅïÊïÊïÑïàïèïûïeðU$îUîUVV#V+VVPÍÝn?n?�?|?±?ž?À?Ï?×?â?ä?ï?ú?ú?@"@W,ÎÔÎÔ×ÔÝÔåÔîÔ÷ÔüÔX …ÆŠÆŠçŠüŠ‹‹2‹<‹K‹e‹r‹r‹|‹|‹ƒ‹–‹”‹¤‹¤‹¯‹¹‹¿‹Å‹È‹Ö‹Ý‹õ‹ü‹ÿ‹ŒŒ!Œ,ŒFŒ`ŒtŒzŒ€Œ‡Œ¥Œ�Œ®Œ´ŒºŒÂŒâŒÊŒëŒñŒ÷ŒÿŒÿŒ�$� �-�3�9�A�a�I�j�p�v�~�~�”�”�”�”�Ÿ�©�²�Ò�Þ�ì�ñ�ÿ�ŽŽŽ#Ž+Ž3Ž<ŽHŽ\ŽiŽxއޡަަޱ޹ޯŽÑŽÞŽêŽ��(�3�8�8�C�Y�n�z�ˆ���›�¯�¯�º�¯�Ò�×�×�æ�ë�ë�ú�ÿ�ÿ����&�+�+�>�M�R�R�e�t�y�‡�y�›� �®� �Â�Ç�Õ�Ç�é�î�ü�î�‘‘‘2‘7‘Y‘^‘l‘^‘€‘…‘…‘¢‘§‘É‘ΑÜ‘Αð‘õ‘õ‘’’9’>’L’>’`’e’e’‚’‡’©’®’¼’®’Ð’Õ’Õ’ð’õ’õ’“““0“5“5“P“U“U“p“u“u“�“•“•“°“µ“µ“ГÕ“Õ“æ“ë“ë“ü“”” ””-”2”2”>”W”\”‚”‰”“”˜”©”³”ȔӔؔé”ô”ü”••• •••$•$•7•<•<•<•@•V•_•_•…•ЕЕ’•¦•¯•ɕ֕á•ì•÷• –––#–#–#–4–Q–\–f–q–v–�–‰–Ž–Ž–™–¡–ª–µ–Å–Ý–õ– ————,—6—A—b—n—|—�—�—“—˜—˜—¨—³—»—À—Ë—Ø—ä—þ—˜"˜-˜2˜=˜E˜J˜U˜b˜n˜ˆ˜š˜¬˜¬˜¬˜¬˜±˜¶˜¶˜˜Ó˜Ó˜ø˜ú˜™™!™5™?™A™M™U™r™ƒ™�™˜™»™Ì™Ý™î™ù™š!š&š&š1š6š6š>šIšNšNšVšašfšfšnš�šxšvš§š¬š¬š´šÕš¾š¼šíšòš›òš›#›#›0›5›5›=›B›B›T›f›k›k››k›—›œ›œ›¤›©›©›¼›Á›Á›Ô›Ù›Ù›ó›œœœ"œ2œ7œ7œQœaœfœfœ€œ�œ•œ¬œ•œÄœÉœÉœÔœÙœ��ñœÙœ-�2�n�\�J�2�†�‹�‹�š�ª�¯�¯�¾�Î�Ó�Ó�â�ð�õ�ž žõ�5ž:žbžPž:žzžž§ž•žž¿žÄžÄžážËž ŸŸ Ÿ Ÿ;Ÿ'ŸeŸuŸzŸzŸ†Ÿ‹Ÿ‹Ÿ—ŸœŸœŸ¯Ÿ¿ŸÄŸÄŸןçŸìŸìŸÿŸ   ' 7 < < D I I Q V V ^ c c k p p ƒ ˆ ˆ ›   î Ü Ê ¸   û ¡N¡<¡*¡¡¡[¡`¡`¡o¡Š¡�¡�¡ ¡»¡À¡À¡Ñ¡ß¡ä¡ä¡ì¡ñ¡ñ¡ù¡þ¡þ¡¢ ¢ ¢C¢1¢ ¢¢b¢}¢‚¢‚¢º¢¨¢–¢‰¢Ù¢ô¢ù¢.£££ù¢F£K£€£n£c£K£˜£�£·£¡£�£Ï£Ô£ñ£Û£Ô£ ¤¤¤¤3¤C¤T¤T¤y¤{¤‘¤—¤—¤´¤Á¤ò¤#¥¥F¥N¥N¥N¥Z¥_¥_¥r¥}¥‡¥Œ¥—¥¡¥¦¥¦¥À¥Å¥Å¥Í¥Ò¥æ¥Ò¥õ¥¦¦¦¦(¦3¦8¦8¦C¦T¦Y¦Y¦d¦o¦t¦t¦…¦ЦЦ›¦ ¦ ¦º¦ŦʦÕ¦ʦä¦é¦ý¦é¦ §§§§+§0§D§0§S§X§X§l§X§{§{§{§€§Œ§€§Ÿ§¤§¤§°§¤§çȧȧÔ§ȧç§ì§ì§ø§ì§ ¨¨$¨¨3¨?¨J¨U¨Z¨n¨Z¨}¨‰¨”¨Ÿ¨¤¨¸¨¤¨ϨǨبݨݨå¨ê¨ê¨ó¨ø¨ø¨©©©©©© ©$©$©/©4©4©?©D©D©O©T©T©_©d©d©o©t©t©©„©˜©„©§©²©½©È©Í©Í©שܩܩæ©ë©ë©õ©ú©ú©ª ª ªªªª#ª(ª(ª5ª:ª:ª:ª:ª:ªBªGªGªOªTªTª\ªaªaªiªnªnªvª{ª�ª{ªžª¯ª´ª´ª»ªƪæªëª« «%««4«?«J«O«O«V«a«�«†«œ«§«À«¬«Ï«Ú«å«ê«ê«ñ«ü«¬!¬7¬BLine truncated
¾J¾JÐJæJKK&K9KDKYKFKhKpK{K‘K‡K©K¯K_øAö5ö5666%6,6062696@6D6H6[6ƒ6ž6‹6¶6»6ß6ß6ë6ó67<7A7n7v7{7„7�7˜7Ÿ7Á7Ç7é7ë7 88;8A8H8H8N8Q8U8f8‰8›8`$^Þ^ÞmÞˆÞˆÞŽÞa|\wþèþèéDéDécéséuéuéuéué|é„éŸé¸éºéºéºéÂéÝéßéßéééééêb”"&3&3H3R3^3c3s3y3Ž3¢3²3À3Î3å3í3÷3444#4&4&4&4(474A4J4R4U4g4côÍÞ2Þ2333 3&3=3T3k3v3¬3Ì3Ñ3Ö3á3û3 4404F4]4b4t4y4|4œ4¼4Ä4Ì4Ñ4ñ455!5#5C5K5P5U5`5`5k5k5w5w5‰5É5â5â5ò5dd¤¹ÐŠÐŠàŠçŠóŠùŠ‹‹"‹.‹H‹U‹U‹X‹f‹v‹�‹”‹œ‹e ¸÷Ÿ*Ÿ*µ*º*Î*ý* +++*+*+;+B+S+Z+c+z+z+�+�+¦+¦+¼+¼+Ò+Ò+è+è+þ+þ+,,*,*,A,A,X,X,o,o,†,†,�,�,´,´,Ë,Ë,â,ê,õ,--"-%-'->-E-M.f¬÷ÞÞøþ #55LSVXduux€–™§ª­´¸ÀÎàóöEg(ÉÏ}}-}}<}N}V}hCþNþN!O6O;OCOKOSO`OfOoOuOzO‚OžO¤O¦O¨OµOµOÂO·OÓOÙOÛOÝOêOêOêOïOøOP PPPP#P+P8P>PIPPP`PkPzP›P¢P­P¶PÇPËPÓPÓPçP÷PÿPQhQi8-7�/�/£/§/¬/·/Â/Å/É/Ñ/jˆ[ùƃƃàƒûƒ„„„„4„9„D„b„L„q„„„–„Ÿ„§„±„Ï„á„ê„ò„ü„……&…8…B…J…b…L…‡…q…–…¨…²…º…º…Ã…Ë…á…ú… †† † †&†+†I†K†P†[†q†q†q†u†�†¢†¬†¶†¿†à†ê†ô†ö†ö†‡!‡/‡2‡K‡O‡j‡n‡�‡‘‡¬‡°‡°‡°‡¶‡ć·ç‡í‡ø‡ˆˆˆˆ-ˆ8ˆFˆPˆiˆlˆtˆ€ˆ‚ˆŠˆ�ˆ¦ˆ¨ˆ´ˆ¶ˆ¾ˆĈ݈õˆ‰‰‰0‰@‰Y‰j‰j‰u‰€‰˜‰¤‰¹‰¾‰Ó‰ã‰ü‰ Š ŠŠŠ&Š4Š;ŠMŠkeãFÞFÞ`ÞiÞ‰Þ‰Þ�Þ—ÞŸÞ§ÞµÞ»ÞÈÞÈÞÖÞÛÞÛÞáÞæÞæÞìÞñÞñÞ÷ÞüÞüÞß'ß-ß2ß2ß;ß[ß[ß[ßbßdßdßkßmßmßsßsßzß|ß|߂߂߉ߋߋߑߑߘߘߠߦ߬ߴߴߴߴßÀßÈßÐߨßàßîßüßàà)à3à6à6à@àIàOàOàSà[àeàsà{àà…à�à—à¥à­à±à·àÂàÈàÙàåàëàóà÷àáááá!á)á3áAáIáMáSá^ácá|á–á›ážáDâl`—!—! !§!»!Ï!Ô!ò!÷!""5"7"N"b"k"m"�"‘"Â"m�2Òè’è’þ’“ “1“B“S“f“n“|“𓥓«“¸“͓͓à“ñ“÷“ ”'”'”3”;”C”I”^”f”j”r”€”†”‹”‹” ”µ”¼”Ĕ̔Ҕõ”•••"•;•A•C•P•R•d•d•k•s•…•…•”•¢•µ•¹•ÕǕӕוã•ç•ó•÷•÷• – –&–*–4–8–G–K–Z–^–q–u–u–u–u–Œ–š–§–¯–Æ–Ö–ä–ï–——!—)—6—Q—a—q—v—v—v—v—ƒ—’—š— —µ—Ä—Ù—ê—ú—˜˜˜˜˜$˜*˜7˜R˜b˜n˜t˜�˜“˜¡˜Ã˜OšnÔ¼ílll#l.l9lOlalyl~l�l”l¡l¨l¶l½l¿lÂlÇlÉlÏlélmm1m6mEmLmYmpmŽm•m—mšmŸmÂmàmìmo$hmG&G&U&i&p&Š&pxKe†M†M®MšM½MØMÄMçMìMóMûMN NN N(N3N>NTNINlNtNqFƒþpþpq!q9qQq[qfqfqkqvq‚q�q›q«q»qÂqÈqÝqòqòqrrr+r:rGrXrirwr…rŒr’r§r¼r¼rÐrÝrîrþrssss,s=sJsZs¼sr8«µ®N®N²N·N¼NÍNÛNäNéNîNðNs88B×/×/ë/ï/ô/ÿ/ 0 000t0†ŽöLöL M M,M2M5M=MuÜtNNp{†�Ÿ±·½ÃÙÈíúýLine truncated
3<<BKKjjwzƒŒ”Ÿ±·ÂÂÏÒÛäì÷ '*3<>`sˆ�™«±¹¹¹¹Ä= {”�¾¿2¿2Ó2×2à2ã2ì2õ2333373<3?3H3X3_3b3j3m3z3‚3Š3’3™3©3©3µ3|`2¶K¶KŞKÊKíKLşK!L&L-L5L<LGLOLZLpLeLˆL�L}À-ˆeˆe¦e¶eÀeÀeÊeÊeÔeæeóeöeøeffff0f0fTfafafqf~f~f¡f®f®fÃfåfúfg%g2g2gUg_g_g’gÅgËgËgËgİg~¸ºä ‹ ‹¸‹º‹Æ‹Ê‹×‹Ú‹ô‹ô‹ô‹ú‹ş‹ŒŒ%Œ1Œ3Œ3Œ<Œ>Œ>ŒGŒIŒIŒRŒTŒTŒ]Œ]ŒfŒlŒoŒyŒŠŒ�ŒœŒœŒ�œö##$#5#M#T#p#e#ˆ#¨#”#·#È#Í#î#Ú#$#$*$F$;$^$~$j$�$�$´$ $Ì$Ù$Ù$ñ$ñ$û$€œX{f1f1r1‚1�1·1ç1ø1 22"2)2=2D2R2j2y2†2‰2¢2¥2ª2Á2Ñ2á2å2ì2"3�x± ¸®¸®Î®Õ®Ü®û®
¯¯(¯7¯F¯P¯P¯U¯\¯o¯~¯ƒ¯�¯¸¯¸¯Î¯à¯ä¯ò¯ù¯ş¯ş¯°° °"°0°B°B°B°T°_°q°|°‰°�°�°£°³°¿°Ä°Ñ°Ö°æ°ë°û°ı°␍±± ±!±2±;±;±=±M±T±d±d±±‘±£±µ±Å±Å±Å±È±Û±‚\åø��#�*�/�=�R�Y�c�q�t�v�€�’�’�™�Ï�ƒ0ÎÖ&&>~rHF’š„`0Ö€Ö€ì€ş€���7�;�A�W�t�v�v�§�•�v�Æ�Ğ�…L4CŞ/Ş/ì/ş/0 00$0-0?0E0H0„0†(–œ�2�2�2¬2°2³2¹2‡\DW†0†0”0¦0¬0´0Æ0Ì0Õ0ç0í0ö0111_1ˆ, ¦Ô¦Ô´Ô»ÔÃÔÈÔÎÔ‰„ ö ö 
&
-
4
C
H
j
j
o
‘
¦
“
µ
Ä
Æ
è
è
è
÷
  + 5 Š`>~e~e›e£eªeÏeİeßeíeúef f"f1f<f@fKfWfbfnf…fœf¯fÆfĞfŞfğfòfgggg,g2gBgBgZgZggg„g„g�g™g¦g²gÇgŞgígøg
hh-hEhfhfhohthththth„h�h•hšh¨h¶hÆhËhËhÙhÙhŞhŞhèhóhi ii'i2i<i@iIibieiui|iši£i£i²iÂiÒiÙißiëióişij jj"j/j:j@jPj`j`j�j«j·j¿jÊjÑjÜjìjüjüj kkkk&k8k>kLkYkfkpktk}k–k™k©k°kµkµkÉkÉkÎkÒkâkëkıklllll"l3l<lHlXlXlXl]lulul„l‡l›l¹lÄlílÿl
mm m%m,m>mNmimpmtmzm‚m�m§n‹8ëõ~"~"˜"Ÿ""×"Ä"ï"###Œ`j~�� �'�/�:�D�O�W�f�p�s�˜�š�ª�ª�¸��_VØVØxØØ†Ø‹Ø¢Ø´Ø¾ØÄØÖØÛØçØïØòØôØşØÙÙ ÙÙÙ$Ù.Ù7Ù?ÙBÙKÙfÙwÙ~Ù�نٕٛ٣٣٪٭ٲÙÁÙÇÙÏÙÏÙİÙàÙåÙôÙÿÙÚÚÚ&Ú-Ú4ÚKÚ�83=vÕvÕÕÕ�Õ‘ÕŸÕ¢Õ§Õ�8>H®Õ®Õ·Õ·ÕÅÕÉÕĞÕÓÕØÕ�D*Ş.Ş.ø. ///(/@/I/M/_/e/„/‘Ä{¨ŞúŞúû ûûûû û$û*û*û<ûCûYûlû{û�ûƒûŠû�ûšûšû®û°û·û½ûÇûÇûÇûŞûğû÷ûüüü1ü1üCü’0+3†/†/�/µ/Æ/Ì/Ì/Ô/“„\yVğVğhğ}ğ‡ğ�ğ’ğ™ğ©ğ´ğğÀğÀğÉğÚğİğİğñ ññ'ñ.ñ2ñAñTñ§ñ” 
&.&./.M.R.•hö ÖbÖbìb÷bccc$c5c>cOcUcacxcxcŠc›c¨c±cÂcÈcd–„a~nFnF�F¤F­F¹FÁFÈFÌFÕFÕFÚFáFùF#G(GLGTGVGnG†GªGÉGÛG—lò öşöşÿ ÿ'ÿ.ÿPÿRÿtÿ‰ÿvÿ«ÿ˜ÿºÿºÿÌÿÓÿõÿõÿıÿ˜ y}x‰x‰�‰�‰’‰™(A.æ.æPæXæ^æfæhæhæyæyæyæ�æ‰æ›æªæ›æ¿æÁæÁæÛæİæİæèæíæç ç ç ç!ç#ç0ç2ç?çAçNçVç^çeçtç�çƒç”ç¡ç¡ç¡çªç¼çÏçÕçİçßçìçìçèèè èè.è3è3è3èAèGèLèTè_èqè|è�è�èˆèŒèšè�è§è®èÌèÙèàèéèé
é
é
é
ééé+é+éKéKéKéRé`éoé‚é•é—é—é—éªéªé±é¸é½éÃéÕéßéûé%ê+ê+ê?êDêhêoê{ê™ê¬ê·ê¾êÂêÂêÂêÂêÍê×êåêëë/ë9ë9ëGëeë•ë¨ë¹ëĞëãëèëèëèëğëûë␍ììììì/ìYì_ì_ì_ìjìtì€ì‹ì�ì�ì�ì’ì�ì�ìèìšH%////'/5/@/H/H/`/j/p/v/›0 VJVJ}JjJŒJ¨J�JÀJÈJœLÛê�!�!¨!¯!Æ!ç!Ô!ÿ!" "@"-"X"p"p"z"�ğ·ŞGŞGHH(H0H;HZHZHdHfH�HiH�H�H�H¨H¯HÏHÑHëHòHòHII5I:IYIrI�I’IšI¡IÁIÃIİIäIäIJJJJDJVJ�TVg��¤²¸¾Ïİëı"Ÿ0
Rşÿşÿ-"N:q]€Œ‘�­´ÁÌØãëğü +0;T]in‚‰��’«°ÉŞğõ
#8CMXZemm}r•µ àZ�ˆcˆc¢c°cµcÂcĞcÙcôcd'd0d@d[dfdvdxdzd„d�d”d¡d­d¿dÇdßdãdãdãdãdède e e'e*e2e>eGe�e¡d/%%,%D%U%\%x%m%�%°%œ%¿%Ğ%æ%Ò%ş% & &#&#&-&¢ü!\F F ^ p { ¨ � ‚ · Ø í Ú "  ü 1 N N N ` } } ² É ½ û ␍␍␍;␍)␍J␍k␍ƒ␍p␍�␍’␍Æ␍´␍Õ␍ò␍ò␍ò␍!!BIkks£(>ã>ãLãoãuãzãzã€ã¤(!'ÕÕ'Õ5Õ;Õ=ÕBÕ¥D]j„8„8�8¥8®8º8Ï8×8İ8ã8å8å8ô8¦„¼Ù`¨`¨“¨Ÿ¨£¨«¨³¨·¨Â¨Æ¨Ê¨Î¨Ö¨Û¨ß¨ğ¨©©©©)©8©K©S©^©^©^©p©§€hšhš�šˆš�š–šœš¬š·šÁšÌšãšæšèš›␍›››)›;›C›C›Y›Y›k›¨ Ê †R†R¬RÉRÑRÜRìRõRùRS*SCSISQSTSiSnS€S¢S¨S°SµS»S¾SÔSİSßST TT#T2TTTZT_T_T_TlT}TˆT•T¡T´TÁTÎTåTùTUUU0U5U@UGUjUjUjU|U©°)¸ ¸ Û è í ñ ú  ¡¡ ¡+¡3¡>¡F¡I¡U¡]¡w¡�¡—¡­¡¶¡ë¡×¡û¡û¡¢¢:¢A¢e¢�¢�¢�¢�¢ÿ¢ª˜†(~¶~¶›¶¢¶ª¶µ¶Ì¶Ö¶Ö¶í¶÷¶·(·6·:·Z·n·‚·‰·�·¦·°·Á·Î·Î·Õ·Ü·á·æ·ë·ò·ù·¸¸*¸.¸.¸8¸N¸R¸R¸c¸v¸‰¸‰¸�¸š¸¡¸©¸´¸»¸Ã¸Î¸Õ¸Õ¸à¸ş¸¹¹ ¹5¹5¹;¹B¹Q¹[¹i¹p¹t¹v¹ˆ¹ˆ¹ˆ¹š¹¢¹È¹Ö¹Ö¹Ú¹ï¹÷¹ºº'º,º:ºIºSºaºlºpºuº}º�º�º’º¡º£º²º´ºÃºÊºÎºâºìºúº»»» »%»C»M»[»b»f»p»~»…»‰»“»§»¯»º»¾»¾»¾»É»Ô»ä»ğ»¼¼¼(¼0¼;¼@¼H¼S¼_¼c¼n¼s¼‡¼�¼š¼š¼š¼š¼·¼Ô¼à¼è¼ø¼½&½*½Y½N½?½i½i½s½z½‰½˜½¢½°½·½»½½½Ì½Ö½ä½ë½ï½ï½ñ½¾¾¾¾¾'¾9¾A¾Y¾…¾“¾—¾µ¾¼¾Ã¾Î¾ä¾é¾ğ¾¿␍¿¿"¿&¿(¿;¿E¿S¿Z¿^¿^¿^¿^¿l¿w¿†¿�¿�¿©¿­¿­¿²¿º¿¾¿Í¿Ï¿Ş¿à¿ï¿ñ¿ÀÀ À À)À7À>ÀBÀRÀ]ÀbÀ€ÀŠÀ˜ÀŸÀ£À­À»ÀÂÀÆÀĞÀäÀìÀ÷ÀûÀûÀûÀÁ␍ÁÁ5ÁEÁPÁeÁjÁuÁ…Á‘Á§Á¯ÁºÁÉÁÑÁÜÁáÁéÁôÁÂÂÂÂ(Â0Â;Â;Â;Â;ÂOÂ_ÂtÂ�…™ª¿ÂÌÂĞÂŞÂóÂÃÃ3ÃLÃNÃYÃaÃaÃjÇØïÃÈÃÖÃáÃíÃõÃ÷ÃÄ
Ä
Ä
Ä'Ä5ÄCÄZÄqÄ€Ä�Ä­Ä´Ä´ÄÄÄØÄòÄòÄöÄ ÅÅ6ÅAÅXÅ`Å`ŅŅŘųżÅÓÅíÅüÅ Æ)Æ7ÆMÆiÆyƑƑƩƩƵÆĞÆèÆñÆñÆñÆıÆÇ&Ç/Ç/Ç6Ç?ÇEÇQǰǫ0ùAğ�ğ��!�,�6�<�F�L�V�d�n�€�Š���š� �ª�±�½�Ã�Ì�÷�� � ��'�1�C�M�b�b�e�o�„�‰�™�¤�©�½�Ğ�Ú�ï�ı����-�=�N�[�[�h�h�p�~�Å�¬l£:DD/DGDWDwD‰D¡D¼D¼DæDîDòDõDùDşDE EEE E%E)E.E8EIEPEWEYE]EfEpEsE~EŠE�E�E©E¯E¶E¿EØEéEòEûEFFF%F6FGFSFaFcFjFqFvFzF‡F�F±F¿FÉFÓFÜFõFGGG G)G/G3G8G<GIGPG^GhG}G‡G�G©GºGÃGÌGÔGİGãGçGìGòGüGH%H3H9H>HFHNHVHcHkHŠH}HŸH¨HÃH×HêHñHúHI
III%I>I.INIRI¬I­  p†p†~† †¦†®¸�·§'§'°'Ñ'·'ø'ú'/(Z(Z(j(o(o(ƒ(ˆ(ˆ(¤(©(©(É(Î(Î(â(ç(ç()))6)\)|)�) )²)Â)Â)Â)Â)Â)—*¯$bg÷%÷%û%&%&?&°”¢¦¿¦¿À¿Ï¿Ï¿Ò¿Û¿ç¿ç¿ı¿À%À,À0À@À`ÀrÀxÀ‡À�À”ÀšÀ£À¹À½ÀÚÀøÀ
ÁÁ Á1Á=Á?ÁKÁSÁWÁ]ÁfÁfÁfÁxÁƒÁ‰ÁŸÁ¦Á®ÁÄÁËÁËÁËÁĞÁÕÁßÁâÁçÁñÁôÁ ÂÂÂ&Â)Â.Â>ÂAÂEÂNÂVÂhÂpÂy„Š §¯¶ÂËÂÜÂÜÂãÂãÂãÂèÂíÂ÷ÂúÂÿ à Ã$Ã)Ã.Ã>ÃAÃFÃVÃYÃ]ÃfÃnÀÈÑÑÜãñõÃÁÃÙÃáÃçÃöÃÿÃÄ ÄÄÄ"Ä*Ä0ÄMÄVÄ^ÄdÄjÄjÄjÄqÄxćÄ�ĕěěÄ�įıx>×>×L×a×h×s׉׳×Ï×Ö×î×ôר ØØØØ$Ø*Ø9ØAØGØIØOز¤ÔyÎ^Î^ñ^ù^ __5_L_P_X_`_f_o_{_ƒ_ƒ_‹_»_ú_Õ_`"`*`:`<`j`p`y`€`ˆ`�`œ`¤`¬`¿`Ç`Ì`Ö`ö`ı`ÿ` aa8a?aAaaahahahaqaxa‘a—aŸaŸa¤a¨a´a½aÆaÒaõab1b4bPb]bqb‹b�b®b¼bÈböbübşb,c/c/cKcXclc†c�c’c�c¥cµc·cåcècğcdd0d6d6d@d@dKd|d„d„d„d„d�d™d¯dÈdÛdâdîdõdõde e e eee+e2e>eEeEe_eaefeye€eŒe“e“e eªeªe¯eÒeÒeäe³à˜Ì==#=A=.=v=\=P=…=”=œ=§=©=´=¿=¿=Ä=ù=ş=3>K>8>m>Z>�>|>�>¬>´>¿>Á>Ì>×>×>Ü>ı>ÿ> ? ?'?,?N?P?r?r?r?z?´\âõæaæaüabb b-b9bPbPbbbhbsbƒb�bœb©bÕbµÙÚÖÖô ")044<U__s~Œ�¡¦º¾ÇËĞÖóó6GKKKP[elƒˆœ¤­±³ºÌÜóõ!%%%9=FJOUrr€—œµÆÊÜÜÜáğ6AG]ns~’–Ÿ£¥«ÄÄÒéë 37INbjsw|ƒ™©ÀÅŞñõ .=alrˆ™™™ ³ÌÌÌÛÛî  ! & , 6 8 D D K V k m x � ™ › ¦ ²  É Ğ Ú â æ ê ì ñ ù ı     " $ $ - : P p Š ˜ ¤ « « ¾    É Î è ö ! ! !#!%!*!D!R!^!e!e!r!|!|!�!˜ »�8H8HUHdHdHdH�H�H�H�H–H˜H˜H�H H H¦H¨H¨H¯H³H¸H¸H¸H¸H¸H¸HÀHØHØHíHøHII'I)IHIJIiInI�I’I˜I˜I±I´IÛIèIJ J J)J.JLJ:JRJaJfJmJvJ‰J‘J™J�J�J�J§JÀJÆJÆJßJíJ
K#K%K-K3K;K@K@KFKFKOK`KbKwKyK�K‡K�K”K”K”K”K¢K¹K»KÏKÏK×KİKåKêKóKûKL
LLLLLLL(L?LCLELQLSLnLtL|L�LŠL•L˜L�L¤L­L°L°L¾LÏLÑL÷LMM"M'M0M5M5M:M<MDMDM_MqMvM‚MˆM‹M¢M¤M§M·M»MÂMËMÚMèMîMöMûMNNNNN5N:NDNlNwN‚N�N˜N£N®N¹NÄNÄNÄNÌNÌNåNóNO)O)O+O+O4O:O<O<OBOHOHOPOYO_OkOkOrOuO”OŸO§O¯O´O´O»O¿OÄOÖOÛOåOïOïOüO#P#P,P:PKPWP^PlP{P‘P—PœPœP¡P·PÃPËPÛPåPîPüPQQQQQ&Q2QIQ_QvQ|Q~Q•QšQšQºQºQÌQÒQÛQáQêQøQıQıQRRR'R9RORORcRsR…RŠR–RœRŸR¶R¸R»RËRÕRØRØRçRşRSS!S'S*SASCSFSVSZSbSpSuSzSzS€SˆS�S�S“S“S¡S§S­S·SÁSÏSäSçSéSóSóSõSıSTT T TTT T T$T/T4T9TDTIToTqTvT{T€T…TŠT�T”T”T™T�TºTÄTØTìTòTúTúTUUUU(U6UKUNUPUZUiUnUnUnUvU{U„U„U‰U‰U�U—UœUœU¡U¬U±U¶U»UÊUÊUÛUáUáUïUõUûUVVV2V5V7VAVPVUVUVUV]VbVkVpVpVvV~VƒVƒVˆV“V˜V�V¢V±V±VÂVÈVÈVÖVÜVâVìVöVWWWW(W7W<W<W<WDWIWRWWWWW]WeWjWjWwW}W}W‹W‘W—W¡W«W¹WÎWÑWÓWİWìWñWñWñWùWşWX X XXX X X,X2X2X@XFXLXVX`XnXƒX†XˆX’X¡X¦X¦X¦X®X³X¼XÁXÁXËXÓXØXØXØXŞXèXîXYYY␍YYY"Y"Y+Y9YBYPYUYUY^YlYxY‰Y–Y�Y¥Y¯Y½Y½YÂYÂYÍYÍYÍYÑYÖYÖYÜYàYåYíYóYõYşY␍ZZZ Z Z(Z1Z?ZJZOZUZ]ZbZbZbZbZbZbZbZbZbZbZ{Z�ZŠZ�Z˜Z�Z¢Z«Z¶Z¿ZÇZÌZÌZÌZÒZÚZßZßZãZèZèZñZÿZ [[[['[;[;[A[J[^[^[g[i[o[x[Œ[Œ[•[•[•[š[Ÿ[Ÿ[§[¬[¬[É[×[ã[ì[ò[ü[\ \ \ \\&\,\>\H\H\P\P\X\Z\Z\s\}\†\ˆ\ˆ\ˆ\�\’\”\”\”\”\™\Ÿ\¥\©\"`·Ìz©æeæeff)fEfRfif|f‡f�f‰f¬f´f´fÃfÃfËf×fífggg/g5g5g5g:g?gNgYgsgugzg‰g”g¡g«g«g¹g¸”*K£££ £&£)£2£5£8£<£A£c£P£s£{£ƒ£†£ˆ£˜£¡£ª£°£³£Ä£Û£ì£÷£)¤¹à.¢&@&@D@O@`@c@g@p@w@…@”@ª@»@Ì@Ş@ğ@ÿ@A A.A.A<A@ADAIAMAZAaAoAƒAŒA’A A¹A»A¿AÉAÉAÎAÎAÎAÓAÓAâAëAóA B B BBB&B2B=BBBBBEBJBJBiBuB‚B„B„BˆBŠBŠB©BµBÁBÃBÃBÆBÈBÈBÕB×B×BÚBÚBãBéBîB
C
C
C
C
C
C
C
C
C
C
C
C CC/C>CMCMCQCQCYCrCvC{CDº,nÔnÔ|ÔƒÔ‹Ô�Ô–Ô»l3J¦L¦L¼LÖLÂLåL
MöLMM%M%M+M.M2M:MRM]MsMhM‹M•M¼PQa%%%+%2%B%S%X%u%{%‚%‰%—%£%µ%ñ%½D$†ã†ãšã¨ã®ãÑã×ãÝãääääää¾ô#œf4f4n4}4�4Ž4›4¯4¾4Û4è4ú45<5J5f5x5�5§5²5Ó5ñ566&6A6Z6Z6u6ž6¸6Ó6å6ô6777!727E7U7b7n7}7š7š7¢7¢7¢7³7À7Ç7æ7ï788 88/8G8P8`8h8m8‘8¡8±8¼8Ð8Õ8Ý8999C9]9]9u9„9Œ9›9¤9¬9¾9à9è9ð9û9ý9 :%:=:U:m::–:Ÿ:¨:º:È:Ì:Ð:¿ ¨†¨†±†Ð†Õ†À\ƒVËË0Ë7ËDËOËTËZËlËrËŠË�Ë®ËÄËÏËÕË÷Ë÷ËÌÌÌ!Ì-Ì5Ì=ÌEÌSÌYÌbÌnÌnÌp̂̈Ì�Ì�̤̤ÌÂÌÂÌÕÌâÌçÌçÌþÌÍÍ,Í7ÍEÍPÍ`ÍmÍÍ…Í�͛ͨͪͪͲͷͷͿÍÄÍÄÍÌÍÑÍÑÍÙÍÞÍÞÍäÍéÍéÍðÍõÍõÍüÍÎÎ ÎÎÎÎ!Î!Î,Î1Î1Î<Î<ÎWÎ^ÎdÎgÎrÎuΉΖΥάίÎÁÎÃÎÉÎÝÎêÎùÎùÎùÎùÎÏÏ2ÏDÏUÏ^ÏoÏuÏzυϗϨϷϽÏÎÏÙÏãÏóÏÐÐÐÐ.Ð4ÐEÐPÐVÐfÐfÐvЉЕÐ�ЭдкÐËÐÖÐÛÐøÐ ÑÑ+Ñ7ÑIÑTÑcÑeÑwÑфыÑ�Ñ�ѧѭѷѽÑÈÑÎÑÐÑÝÑêÑôÑ ÒÒÒ!Ò(ÒlÔÁ0#« ª ª¿ªéªñªñªÿª«,«/«K«K«K«S«U«U«]«_«_«g«i«i«q«q«z«€«…«…«Ž«�«¡«¦«¬«±«±«¹«Â«È«Í«Í«Ò«ß«ø«¬¬0¬O¬O¬O¬W¬Y¬Y¬Y¬a¬c¬c¬c¬k¬m¬m¬m¬u¬w¬w¬‚¬‚¬ˆ¬�¬�¬�¬�¬”¬Ÿ¬±¬¿¬Í¬×¬×¬×¬ç¬ç¬î¬ò¬ø¬­­1­>­g­j­q­…­�­–­¡­¡­¬­²­·­·­·­¾­Ä­Ù­á­ç­ ®®® ® ®'®2®2®7®I®O®O®O®O®¨®Âd*,B,BNBXB[B[BeBxBzB‡B‰B”B¨B°BÀBÅBËBÓBÖBèBÃLWfŸ0Ÿ0³0·0¼0Ç0Ç0Ñ0×0×0Û0ã0Ä\CV7070M0M0Q0V0i0l0q0q0{0�0�0�0‘0›0Å8(2FÕFÕOÕOÕ]ÕaÕhÕkÕpÕÆ¨YÆXÆXÞXæXñXYøX6YšY€YuY[YDY YµY¥YÕYÚY÷YüYZþY Z&Z&Z-ZWZ‚ZeZ™Z·Z·Z·ZÃZÇlD[N'N'h'‘'s' 'À'Ü'Ò'ô' (ù'(4(T(f(((†(¨(¨(²(È4Ž—ÎêÎêâêçêíêñêõêëëÉxÐêV}V}�}n}�}š}¡}·}¼}Á}Å}Ç}Í}Ó}é}Ö}ø}~~+~N~D~]~i~Ê4;D¦ß¦ß¯ß»ßÚßßßáßáßæßË”"p©p©~©�©”©œ©¤©¯©º©Â©Í©Ø©Ý©ó©ú©ª ªªª$ª/ª1ª=ªHªSª\ªdªdªhªŸªÌ€Úö§4§4Å4É4Í4Õ4ã4æ4é4ÿ45555!5)515=5R5c5j5q5q5~5“5ÍÞ`6@6@f@q@–@x@°@æ@ë@ë@î@ø@A A!A)AKAlA~A‹A¦AºA¿AÙAãAåAêAB(B:BGBbB‚BxBœB¢B¢B«BËB×BÚBÜB÷BáBCCCC&C0C[CQCuCuCzC}C“CŸC´CØCâCèCøC DD/D1DCDWDkDaD€D†D•D½D¬DÌDÎDàDêDþDEE(E2E4EHEREREqEwEwEwE€E EÈE·E×EÜEîEöE!FF6F6F6F\F\FnFÎ`8Ì.,.,e,l,t,},ˆ,�,§,¬,¯,²,»,É,Ó,Ø,--->-C-P-p-u-„-°-¸-½-Ò-þ-. . ..1.E.I.k.|.�.�.­.­.­.­.­.Á.Ù.Þ.á.ä.ä.// /,/4/O/f/t//›/›/›/¨/¿/Á/Á/Á/Î/å/ç/ç/ô/ 0 00 0G0^0p0Œ0Œ0Œ0™0°0²0²0²0¿0Ö0Ø0Ø0å0ü0ü0 11191P1b1~1~1~1‹1¢1¤1¤1±1È1È1Ü1Þ1ì12,212?2M2W2Y2Y2Y2v2~2€2€2¨2î2Ϥ)N6ç6çPç|ç|ç›ç«ç°ç°ç¿çÑçëçóçúçÿçè"è"è"è$è$è$è$è@è@è@è@èWèYèYèYèYètèè´èÐÐën~n~„~�~•~•~¡~¦~«~¶~»~»~»~Line truncated
v vvvv v(v(v(v8v8v8vOvUv[vfvkvsvŒv’v�v¡v§v²vËvÖvávçvôvùvşvşvww#wDwOwZwfw`wowxw}w‚w—w�w§w³w¹wÅwÉwÎwÓwŞwéwôwöwüw xxx,x7xBxBxHxUxWx\xex~x‰x”xšx§x§x«x°x°xÁxÃxÃxÖxØxØxëxíxíxyyyyyy)y)y/y4y4yKy_yTylyty{y�y‰yœy§y�y·y·y¹yÑyÔyÖyåy÷yzz*zDzIz]zmz€z…z…z�z¢z´z¿zÇzÏzÓzázçzìzìzòz{{{{!{'{,{,{,{2{A{T{a{e{j{j{n{s{s{x{ƒ{�{©{¿{Ë{Ë{Ñ{Ş{à{í{ù{|||(|4|4|4|4|8|=|N|`|k|s|{|}|�|”|¢|±|·|Ä|Ä|Û|ë|ë|ÿ| }␍}}"}9}9}?}L}N}`}`}k}k}k}k}k}çß „ÈVSVStS‚S•SšS¸S¾SÃSÉS×SŞSíSòSşSTT.T9TLTSTmTŠT–T±TÉTåTîTıTUUU U1U?U_UdUlU…U—U§U­U¸UÁUÇU␍V÷UèUVXVBV3VhVkV‹V Wà<+6ìBìB␍CCC.CGCOCeCqCá„ |>>`krz}}�˜˜›¢©¯µ»ÂÈÙÙÛäğö  " 2 : ? ? F O ` f o z ‹ ‹ ” ™ £ ª ± ¹ ¿ Á Ï æ é ø       * 3 D e v � • Ÿ § ® ® · ¾ Ê Ú å å å ù ␍!! !Û!â„9g6g6ƒ6’6™6³6Ù6ï67 77)7B7B7T7j7r7u7�7ãX{ÍISfqƒ‘—¨¯·ÍÕèı␍)9BHMTZ`fq|† ¨Â×äçïó '>W[dk}…Œ�™›­ÄÒØÜŞëëëí

ä 
H†H†Q†e†j†å¤£Èn{n{Š{�{¢{§{­{°{´{´{×{Ü{ |õ{|1||@|V|B|e|m|r|x|{||�|š|†|©|©|©|Ä|ó|ÿ|æ˜Íï /*>9HWWffuu„„““¢±ÀÀÏŞíVçxÇá¶`¶`Ô`æ`ì`ø`aa!a'a2aBaNaWa]acana|a‰a•a£a²a²aâaèd˜­ëë"ë5ë5ëOëVëbëbëyëyë�ë�ë§ë§ë¾ë¾ëÕë×ë×ëÛëéÌÂñFıFıhıoızı�ı�ı¢ı­ıÁıÅıÊıÎıĞıÖıèıôı ş ş$ş3ş7ş7ş7şJş_ş_şkşqş{ş†ş”ş›şªş¬şÅşßşßşñşêP7GtCtCŠC–C�C¢C³CÁCÇCÓCÛCæCìCïCùCë ®-�;�;¨;³;·;À;Ç;Î;ä;õ;<<*<9<H<Y<h<h<o<s<|<‰<�<™< <¤<Ä<Ä<Ä<Ä<Ä<Ğ<Ô<×<ß<í<õ<=
==#=.=3=3=@=F=U=l=n=y=†=•=˜=�=š=²=É=Ë=Ù=Û=æ=ì=ì=ô=ô=>␍>#>#>#>(>(>@>N>Y>^>^>a>f>f>…>“> >¢>¢>¦>¨>¨>Ç>Õ>á>ã>ã>æ>è>è>õ>÷>÷>ú>ú>ú>ú>ú>? ?␍??9?F?T?[?#@ì(rxH‰H‰V‰]‰m‰p‰v‰í(nt‡&‡&�&š&«&¶&¶&Ô&îTzK®ñ®ñÌñÒñÕñŞñèñòòò ò"ò&ò(ò@òPò]òcògòmòoòròvòvò™ò�ò£ò£òªòÌòáòôòó␍óó ó)ó-ó0ó7ó=óAóGóXó^ócóhóuówó‰ó‹ó’óŸó¡ó³ó³ó³ó³ó³ó×óâóîóôôô&ôCôgô�ô†ô�ô¢ô°ôÇôÌôÒôãôøôşôõõ3õ:õFõ^õjõjõjõpõsõvõ�õ•õ©õ¯õ´õ¿õ¿õÄõÑõŞõŞõäõòõ ööööö%ö,ö,ö1ö>öKöKöQö_övö|öö‚ö‰ö‰öšö¡ö®ö»ö»öÂöÌöÓöÙöàöëöÿöÿö÷÷%÷-÷4÷D÷H÷Q÷i÷n÷u÷—÷¢÷¨÷°÷É÷İ÷İ÷ø÷ø÷ø ø'ø.øPøcø‡ø‰ø“øµøµøµøÎøÚøëøùùİùïÀ€¬ÆZÆZŞZâZçZöZ[␍[.[[=[B[B[g[˜[{[n[»[À[é[î[ú[\ü[*\/\H\O\r\ˆ\ˆ\®\®\º\ğ ö-ö-..$.ñ4�˜6M6MOMrMM…M‹M�M¯Mò8 g.g.u.|.‡.�.–.œ.¢.¢.¨.ó ®.®.¸.À.Å.ôÒTîqîq rr'r=rZrir�r»rÁrÇrÏrÑrÙrîrñrürss;sJsnsœs¢s¨s°sµs½sÒsÕsàsìsñs÷sıst␍tt%t=tKtytt„tŒtœtÂtğtötûtût uu"u?uWucukuyuyu~u‘u¨uªuÇußuëuóuvvvv&v0vGv^vwv‰v–v¸vÏvævôvöv␍w$w$w-w9wOwhw{w†w™w�w�w�w¤w©w¼wÇwáwãwèwûwxxxx/xõ˜k␍ô8ô8
999,97999X9X9X9_9i9m9q9t9t9}9�9—9—9Í9Ù9ä9ô9: : ::::&:-:::A:I:N:N:c:o:w:|:|:‘:�:¦:«:«:À:Ì:Õ:İ:å:ñ:;;5;9;G;O;T;T;i;ƒ;�;™;¡;¦;¦;Å;Ñ;Ü;á;ö;<<<%<2<7<7<7<7<:<?<?<?<^<j<u<w<z<<<<‰<‘<˜< <©<´<º<È<Ö<Ö<à<é<ñ<&=,=3=B=X=]=]=p=x=x=z=z=z===†=Œ=�=—=›=›=›=›=ª=ª=Ï=Ø=Ø=Ü=÷Aö(üAüA
BB!B'B÷�ªÊ¾g¾gÜgägğghh)h4hChIhIhIhNhShahlh…h‡hŒhšh¥h²h¹hÇhø\0C.&.&H&m&O&|&˜&�&°&Å&²&Ô&í&ÿ&'' 'A'A'K'ù8hr¦K¦K¿KÎKâKñK÷KıKL!Lú0�—@Š@ŠTŠ`ŠnŠqŠ‰ŠŒŠ”Šû0S[ÖÖ"Ö*Ö7ÖAÖTÖüP>NÀ‡À‡Ì‡à‡ã‡÷‡ÿ‡ˆ␍ˆˆ ˆ"ˆ(ˆıT™ª¶M¶MĞMãMæMğMıMNN&N0NDNDNJNMN¡Nş<˜£˜Š˜Š¬Š³Š¿ŠËŠÛŠàŠãŠçŠïŠÿ +/ää,ä8äH!/nVnV‚V�V¤V�V³VµV¼VÇVÓVÛV DƒfQfQŠQ‘Q–Q�Q¸QÁQÃQĞQĞQÒQìQòQôQöQRRRRRR R'R0R8R?RERGRcRgRyRŒR’R¦R«R¸R¸RÌRÓRÚRãRñRúRS#S'S,S1S4S>SASQSD ®n®n¼nÆnĞnànånînúnünooo@oläû6â6âJâgâxâ†âŠâ‘â•â�â°â²â²âÉâËâ×âİâİâİâİâåâ´KtDD.D?DDDKDUDUD]DpDtDyD�D�D“D—D�D²D¶D¾DÊDÑDÕDİDßDçDõDıDÿDEE E'E5E9EGE !EFoFoVobono~o–oœoªo»oÃoÊoàop p-p:pJpPpRpcp…pŒp’p p¨p¾pÉpÏpÕpøpôB»hhhh$h/h>h@hKhZhZhghuhxhzhzhh„h�h˜h�h§hºh¿hÔhßhéhéhÿhÿh,i@iWi]ibiiioivi{i{i�i‡iŒiŒiŸi­iÅiËiĞiäiîiõiõij-j3j8j8jcjhjhj“jºj¿j¿j¿jÂjÉjÏjÖjÛjÛjájçjìjìjkkk@kFkVkbkhkvk}kk“k™k k k¢k¢k¢k§k­k²k¶k¸k»kÆkÕkØkÚkŞkŞkãkãkñkl˜}ŸŞ!Ş!ú!ÿ!"""!"1"9"A"F"Q"["a"l"|"„"”"›"£"«"³"»"À"Ë"Ù"Ù"ï" B†®8®8Æ8Í8à899 9.9"9W9W9c9k9z9´9¶9ã9ë9ë9 :8:%:Y:G:h:n:}:’:”:Ÿ:§:§:È:Í:Ö:â:ê:;õ:=;#;;L;i;T;‰;¡;�;Ã;°;ä;Ò;ó;<û;<<<E<E<Q< Ğ1È�È�Ü�Ü�‘‘"‘&‘+‘+‘+‘7‘<‘L‘Q‘Q‘Q‘V‘V‘o‘v‘…‘“‘œ‘¬‘µ‘·‘·‘·‘·‘¾‘ő̑ӑڑá‘è‘ï‘ï‘ñ‘ñ‘÷‘ü‘“
mm m%m,m>mNmimpmtmzm‚m�m§n‹8ëõn"n"ˆ"�"¦"Ç"´"ß"÷"÷"#Œ`j~è�è����"�,�7�?�N�X�[�€�‚�’�’� ��_VØVØxØØ†Ø‹Ø¢Ø´Ø¾ØÄØÖØÛØçØïØòØôØşØÙÙ ÙÙÙ$Ù.Ù7Ù?ÙBÙKÙfÙwÙ~Ù�نٕٛ٣٣٪٭ٲÙÁÙÇÙÏÙÏÙİÙàÙåÙôÙÿÙÚÚÚ&Ú-Ú4ÚKÚ�83=†Õ†Õ�Õ�Õ�Õ¡Õ¯Õ²Õ·Õ�8>H¾Õ¾ÕÇÕÇÕÕÕÙÕàÕãÕèÕ�D*æ.æ.///$/0/H/Q/U/g/m/Œ/‘Ä{¨ÎúÎúøúûúûû␍ûûûûû,û3ûIû\ûkûqûsûzû€ûŠûŠû�û û§û­û·û·û·ûÎûàûçûöûøûü!ü!ü3ü’0+3�/�/—/½/Î/Ô/Ô/Ü/“„\yfğfğxğ�ğ—ğ ğ¢ğ©ğ¹ğÄğÆğĞğĞğÙğêğíğíğñññ7ñ>ñBñQñdñ·ñ” 
....7.T.Y.•hö ÖbÖbìb÷bccc$c5c>cOcUcacxcxcŠc›c¨c±cÂcÈcd–„a~^F^F�F”F�F©F±F¸F¼FÅFÅFÊFÑFéFGG<GDGFG^GvGšG¹GËG—lò æşæşşşÿÿÿ@ÿBÿdÿyÿfÿ›ÿˆÿªÿªÿ¼ÿÃÿåÿåÿíÿ˜ y}X‰X‰a‰m‰r‰™(A>æ>æ`æhænævæxæxæ‰æ‰æ‰æ‘æ™æ«æºæ«æÏæÑæÑæëæíæíæøæıæçççç1ç3ç@çBçOçQç^çfçnçuç„ç‘ç“ç¤ç±ç±ç±çºçÌçßçåçíçïçüçüçèèèè&è>èCèCèCèQèWè\èdèoè�èŒè‘è‘è˜èœèªè®è·è¾èÜèéèğèùèééééé"é-é;é;é[é[é[ébépéé’é¥é§é§é§éºéºéÁéÈéÍéÓéåéïé ê5ê;ê;êOêTêxêê‹ê©ê¼êÇêÎêÒêÒêÒêÒêİêçêõêë"ë?ëIëIëWëuë¥ë¸ëÉëàëóëøëøëøëì ìì(ì-ì-ì-ì?ìiìoìoìoìzì„ì�ì›ì�ì�ì�ì¢ì®ì®ìøìšH%ï.ï.ı.///(/0/0/H/R/X/^/›0 FJFJmJZJ|J˜J�J°J¸JœLÛê~!~!˜!Ÿ!¶!×!Ä!ï!ñ!"0""H"`"`"j"�ğ·ÎGÎGH HH H+HJHJHTHVHqHYH€H€H�H˜HŸH¿HÁHÛHâHâHşHşH%I*IIIbII‚IŠI‘I±I³IÍIÔIÔIğIğI␍J␍J4JFJ�TVg––¬¹¿ÅÖäò )Ÿ0
Rîÿîÿ>*aMp|���¤±¼ÈÓÛàìñ  +DMY^ry}}‚› ¹Îàåğøøøú(3=HJU]]mb…¥ àZ�pcpcŠc˜c�cªc¸cÁcÜcêcdd(dCdNd^d`dbdldxd|d‰d•d§d¯dÇdËdËdËdËdĞdîdeeeee&e/e…e¡d/ş$ş$%4%E%L%h%]%€% %Œ%¯%À%Ö%Â%î%û%û%&&&¢ü!\6 6 N ` k ˜ ~ r § È İ Ê  ø ì ! > > > P m m ¢ ¹ ­ ë ğ ␍÷ +␍␍:␍[␍s␍`␍�␍‚␍¶␍¤␍Å␍â␍â␍â␍ô␍29[[c£(NãNã\ãã…ãŠãŠã�ã¤(!'.Õ.Õ7ÕEÕKÕMÕRÕ¥D]jl8l8†8�8–8¢8·8¿8Å8Ë8Í8Í8Ü8¦„¼ÙH¨H¨{¨‡¨‹¨“¨›¨Ÿ¨ª¨®¨²¨¶¨¾¨Ã¨Ç¨Ø¨é¨ë¨ï¨©© ©3©;©F©F©F©X©§€PšPšišpšwš~š„š”šŸš©š´šËšÎšĞšëšõšÿš››#›+›+›A›A›S›¨Ê
vRvRœR¹RÁRÌRÜRåRéRSS3S9SASDSYS^SpS’S˜S S¥S«S®SÄSÍSÏSñSùSTT"TDTJTOTOTOT\TmTxT…T‘T¤T±T¾TÕTéTóTõT U U%U8U;UBUeUeUeUwU©°)    Ã Ğ Õ Ù â ñ ı ¡¡¡&¡.¡1¡=¡E¡_¡…¡¡•¡�¡Ó¡¿¡ã¡ã¡û¡¢"¢)¢M¢†¢†¢†¢†¢ç¢ª˜‹-��«¶²¶º¶Å¶Ü¶æ¶æ¶ı¶·"·8·F·J·j·~·’·™·�·¶·À·Ñ·Ş·Ş·å·ì·ñ·ö·û·¸ ¸#¸*¸:¸>¸>¸H¸^¸b¸b¸s¸†¸™¸™¸Ÿ¸ª¸±¸¹¸Ä¸Ë¸Ó¸Ş¸å¸å¸ğ¸¹¹*¹¹E¹E¹K¹R¹a¹k¹y¹€¹„¹†¹˜¹˜¹˜¹ª¹²¹Ø¹æ¹æ¹ê¹ÿ¹ºº"º7º<ºJºYºcºqº|º€º…º�º‘º º¢º±º³ºÂºÄºÓºÚºŞºòºüº
»»»%»0»5»S»]»k»r»v»€»�»•»™»£»·»¿»Ê»Î»Î»Î»Ù»ä»ô»¼¼¼)¼8¼@¼K¼P¼X¼c¼o¼s¼~¼ƒ¼—¼Ÿ¼ª¼ª¼ª¼ª¼Ç¼ä¼ğ¼ø¼½½6½:½i½^½O½y½y½ƒ½Š½™½¨½²½À½Ç½Ë½Í½Ü½æ½ô½û½ÿ½ÿ½¾¾¾%¾%¾%¾7¾I¾Q¾i¾•¾£¾§¾Å¾Ì¾Ó¾Ş¾ô¾ù¾¿¿¿+¿2¿6¿8¿K¿U¿c¿j¿n¿n¿n¿n¿|¿‡¿–¿ ¿®¿¹¿½¿½¿Â¿Ê¿Î¿İ¿ß¿î¿ğ¿ÿ¿ÀÀÀÀ/À9ÀGÀNÀRÀbÀmÀrÀ�ÀšÀ¨À¯À³À½ÀËÀÒÀÖÀàÀôÀüÀÁ Á Á ÁÁÁ+ÁEÁUÁ`ÁuÁzÁ…Á•Á¡Á·Á¿ÁÊÁÙÁáÁìÁñÁùÁ Â$Â8Â@ÂKÂKÂKÂKÂ_Âo„‘•©ºÂÏÂÜÂàÂîÂÃÃ*ÃCÃ\Ã^ÃiÃqÃqÃzÃ—Ã¨Ã¿ÃØÃæÃñÃıÃÄÄÄÄÄÄ7ÄEÄSÄjÄ�Ä�Ä�ĽÄÄÄÄÄÔÄèÄÅÅÅÅ+ÅFÅQÅhÅpÅpŕŕŨÅÃÅÌÅãÅıÅ ÆÆ9ÆGÆ]ÆyƉơơƹƹÆÅÆàÆøÆÇÇÇ␍ÇÇ6Ç?Ç?ÇFÇOÇUÇaÇÀÇ«0ùAĞ�Ğ�õ�� ���&�,�6�D�N�`�j�p�z�€�Š�‘���£�¬�×�æ�é�ë�õ���#�-�B�B�E�O�d�i�y�„�‰���°�º�Ï�İ�æ�î�ü�␍��.�;�;�H�H�P�^�¥�¬l£:DD7DOD_DD‘D©DÄDÄDîDöDúDıDEEEEE E'E-E1E6E@EQEXE_EaEeEnExE{E†E’E•E¦E±E·E¾EÇEàEñEúEF FF!F-F>FOF[FiFkFrFyF~F‚F�F–F¹FÇFÑFÛFäFıFGG G(G1G7G;G@GDGQGXGfGpG…G�G˜G±GÂGËGÔGÜGåGëGïGôGúGHH-H;HAHFHNHVH^HkHsH’H…H§H°HËHßHòHùHI III$I-IFI6IVIZI´I­  P†P†^†€†††®¸�·¯'¯'¸'Ù'¿'((7(b(b(r(w(w(‹(�(�(¬(±(±(Ñ(Ö(Ö(ê(ï(ï( ) ))>)d)„)–)¨)º)Ê)Ê)Ê)Ê)Ê)Ÿ*¯$bgÿ%ÿ%&&-&G&°”¢¦¿¦¿À¿Ï¿Ï¿Ò¿Û¿ç¿ç¿ı¿À%À,À0À@À`ÀrÀxÀ‡À�À”ÀšÀ£À¹À½ÀÚÀøÀ
ÁÁ Á1Á=Á?ÁKÁSÁWÁ]ÁfÁfÁfÁxÁƒÁ‰ÁŸÁ¦Á®ÁÄÁËÁËÁËÁĞÁÕÁßÁâÁçÁñÁôÁ ÂÂÂ&Â)Â.Â>ÂAÂEÂNÂVÂhÂpÂy„Š §¯¶ÂËÂÜÂÜÂãÂãÂãÂèÂíÂ÷ÂúÂÿ à Ã$Ã)Ã.Ã>ÃAÃFÃVÃYÃ]ÃfÃnÀÈÑÑÜãñõÃÁÃÙÃáÃçÃöÃÿÃÄ ÄÄÄ"Ä*Ä0ÄMÄVÄ^ÄdÄjÄjÄjÄqÄxćÄ�ĕěěÄ�įıx>×>×L×a×h×s׉׳×Ï×Ö×î×ôר ØØØØ$Ø*Ø9ØAØGØIØOز¤ÕzÎ^Î^ñ^ù^ __5_L_P_X_`_f_o_{_ƒ_ƒ_‹_»_ú_Õ_`"`*`:`<`j`p`y`€`ˆ`�`œ`¤`¬`¿`Ç`Ì`Ö`ö`ı`ÿ` aa8a?aAaaahahahaqaxa‘a—aŸaŸa¤a¨a´a½aÆaÒaõab1b4bPb]bqb‹b�b®b¼bÈböbübşb,c/c/cKcXclc†c�c’c�c¥cµc·cåcècğcdd0d6d6d@d@dKd|d„d„d„d„d�d™d¯dÈdÛdâdîdõdõde e e eee+e2e>eEeEe_eaefeye€eŒe“e“e eªeªe¯eÒeÒeäe³à˜Ìş<ş<=1==f=L=@=u=„=Œ=—=™=¤=¯=¯=´=é=î=#>;>(>]>J>q>l>�>œ>¤>¯>±>¼>Ç>Ç>Ì>í>ï>????>?@?b?b?b?j?´\âõæaæaüabb b-b9bPbPbbbhbsbƒb�bœb©bÕbµÙÚÆÆä÷ş  $$,EOOcn|�‘–ª®·»ÀÆããñ␍&7;;;@KU\osxŒ”�¡£ª¼Ìãåş)-6:?Ebbp‡Œ¥ºÌÌÌÑà&17M^cn‚†�“•›´´ÂÙÛô  #'9>RZcgls‰™°µÎáå÷÷÷÷ü-Q\bx‰‰‰�£¼¼¼ËËŞõ    & ( 4 4 ; F [ ] h } ‰ ‹ – ¢ ² ¹ À Ê Ò Ö Ú Ü á é í ÿ        * @ ` z ˆ ” › › ® ² ² ² ¹ ¾ Ø æ ò ù ù !!!4!B!N!U!U!b!l!l!~!˜ »� H H=HLHLHLHiHiHxHxH~H€H€H†HˆHˆH�H�H�H—H›H H H H H H H¨HÀHÀHÕHàHêH÷HII0I2IQIVIuIzI€I€I™IœIÃIĞIèIJJJJ4J"J:JIJNJUJ^JqJyJ�J†J†J†J�J¨J®J®JÇJÕJòJ K␍KKK#K(K(K.K.K7KHKJK_KaKiKoKwK|K|K|K|KŠK¡K£K·K·K¿KÅKÍKÒKÛKãKìKòKøKúKúKúKLLL'L+L-L9L;LVL\LdLiLrL}L€L†LŒL•L˜L˜L¦L·L¹LßLüLM
MMMMM"M$M,M,MGMYM^MjMpMsMŠMŒM�MŸM£MªM³MÂMĞMÖMŞMãMëMğMğMøMNN"N,NTN_NjNuN€N‹N–N¡N¬N¬N¬N´N´NÍNÛNøNOOOOO"O$O$O*O0O0O8OAOGOSOSOZO]O|O‡O�O—OœOœO£O§O¬O¾OÃOÍO×O×OäO P PP"P3P?PFPTPcPyPP„P„P‰PŸP«P³PÃPÍPÖPäPëPíPöPöPQQQ1QGQ^QdQfQ}Q‚Q‚Q¢Q¢Q´QºQÃQÉQÒQàQåQåQüQRRR!R7R7RKR[RmRrR~R„R‡R�R R£R³R½RÀRÀRÏRæRøRıR SSS)S+S.S>SBSJSXS]SbSbShSpSuSuS{S{S‰S�S•SŸS©S·SÌSÏSÑSÛSÛSİSåSêSïSôSôSúSTTT TTT!T,T1TWTYT^TcThTmTrTwT|T|T�T†T¢T¬TÀTÔTÚTâTâTğTöTüTUUU3U6U8UBUQUVUVUVU^UcUlUlUqUqUwUU„U„U‰U”U™U�U£U²U²UÃUÉUÉU×UİUãUíU÷UVVV V)V8V=V=V=VEVJVSVXVXV^VfVkVkVpV{V€V…VŠV™V™VªV°V°V¾VÄVÊVÔVŞVìVWWWW W$W$W$W,W1W:W?W?WEWMWRWRW_WeWeWsWyWW‰W“W¡W¶W¹W»WÅWÔWÙWÙWÙWáWæWïWôWôWúWXXXXXX(X.X4X>XHXVXkXnXpXzX‰X�X�X�X–X›X¤X©X©X³X»XÀXÀXÀXÆXĞXÖXêXïXïXõXÿXY
Y
YY!Y*Y8Y=Y=YFYTY`YqY~Y…Y�Y—Y¥Y¥YªYªYµYµYµY¹Y¾Y¾YÄYÈYÍYÕYÛYİYæYõYıYZZZZZ'Z2Z7Z=ZEZJZJZJZJZJZJZJZJZJZJZcZiZrZxZ€Z…ZŠZ“Z�Z§Z¯Z´Z´Z´ZºZÂZÇZÇZËZĞZĞZÙZçZóZ[[[[#[#[)[2[F[F[O[Q[W[`[t[t[}[}[}[‚[‡[‡[�[”[”[±[¿[Ë[Ô[Ú[ä[ì[ñ[ñ[ñ[\\\&\0\0\8\8\@\B\B\[\e\n\p\p\p\v\z\|\|\|\|\�\‡\�\‘\
`·Ì{ªæeæeff)fEfRfif|f‡f�f‰f¬f´f´fÃfÃfËf×fífggg/g5g5g5g:g?gNgYgsgugzg‰g”g¡g«g«g¹g¸”*Kè¢è¢££££££ £$£)£K£8£[£c£k£n£p£€£‰£’£˜£›£¬£Ã£Ô£ß£¤¹à.¢.@.@L@W@h@k@o@x@@�@œ@²@Ã@Ô@æ@ø@AA'A6A6ADAHALAQAUAbAiAwA‹A”AšA¨AÁAÃAÇAÑAÑAÖAÖAÖAÛAÛAêAóAûABBBBB.B:BEBJBJBMBRBRBqB}BŠBŒBŒB�B’B’B±B½BÉBËBËBÎBÐBÐBÝBßBßBâBâBëBñBöBCCCCCCCCCCCCC%C7CFCUCUCYCYCaCzC~CƒCDº,~Ô~ԌԓԛԠԦԻl3J–L–L¬LÆL²LÕLúLæL MMMMMM"M*MBMMMcMXM{M…M¼PQa%%%%3%:%J%[%`%}%ƒ%Š%‘%Ÿ%«%½%ù%½D$–ã–ãªã¸ã¾ãáãçãíãäää$ä$ä,ä¾ô#œn4n4v4…4‰4–4£4·4Æ4ã4ð45$5D5R5n5€5˜5¯5º5Û5ù56#6.6I6b6b6}6¦6À6Û6í6ü6 7 77)7:7M7]7j7v7…7¢7¢7ª7ª7ª7»7È7Ï7î7÷78 88 878O8X8h8p8u8™8©8¹8Ä8Ø8Ý8å8 9 99K9e9e9}9Œ9”9£9¬9´9Æ9è9ð9ø9:::-:E:]:u:‡:ž:§:°:Â:Ð:Ô:Ø:¿ ˆ†ˆ†‘†°†µ†À\ˆ[&Ë&Ë@ËGËTË_ËdËjË|˂˚ˠ˾ËÔËßËåËÌÌÌ,Ì.Ì1Ì=ÌEÌMÌUÌcÌiÌrÌ~Ì~̘̀̒Ì�Ì�Ì´Ì´ÌÒÌÒÌåÌòÌ÷Ì÷ÌÍÍ&Í<ÍGÍUÍ`ÍpÍ}Í�͕ͫ͟͸ͺͺÍÂÍÇÍÇÍÏÍÔÍÔÍÜÍáÍáÍéÍîÍîÍôÍùÍùÍÎÎÎ ÎÎÎÎ!Î!Î,Î1Î1Î<ÎAÎAÎLÎLÎgÎnÎtÎw΂΅ΙΦεμοÎÑÎÓÎÙÎíÎúÎ Ï Ï Ï ÏÏ-ÏBÏTÏeÏnÏυϊϕϧϸÏÇÏÍÏÞÏéÏóÏÐÐÐ#Ð)Ð>ÐDÐUÐ`ÐfÐvÐvІЙХЭнÐÄÐÊÐÛÐæÐëÐÑÑ+Ñ;ÑGÑYÑdÑsÑuчÑ�єћџѭѷѽÑÇÑÍÑØÑÞÑàÑíÑúÑÒÒ+Ò+Ò1Ò8Ò|ÔÁD#°ˆªˆª§ªÉªÑªÑªßªòª «««4«4«4«<«>«>«F«H«H«P«R«R«Z«Z«c«i«n«n«w«†«Š«�«•«š«š«š«š«¢«««±«¶«¶«»«È«á«¬¬¬8¬8¬8¬@¬B¬B¬B¬J¬L¬L¬L¬T¬V¬V¬V¬^¬`¬`¬k¬k¬q¬v¬v¬v¬v¬}¬ˆ¬š¬¨¬¶¬À¬À¬À¬Ð¬Ð¬×¬Û¬á¬ù¬­­'­P­S­\­c­w­­ˆ­“­“­ž­¤­©­©­©­°­¶­Ë­Ó­Ù­ä­û­®®$®)®)®0®;®;®@®R®X®X®X®X®´®Âd*BB6B@BCBCBMB`BbBoBqB|B�B˜B¨B­B³B»B¾BÐBÃLWf‡0‡0›0Ÿ0¤0¯0¯0¹0¿0¿0Ã0Ë0Ä\CV 0 0505090>0Q0T0Y0Y0c0i0i0w0y0ƒ0Å8(2VÕVÕ_Õ_ÕmÕqÕxÕ{Õ€ÕÆ¨Z€ÆXÆXÞXæXñXYøX6YšY€YuY[YDY YµY¥YÕYÚY÷YüYZþY Z&Z&Z-ZWZ‚ZeZ™Z·Z·Z·ZÃZÇlD[>'>'X'�'c'�'°'Ì'Â'ä'ü'é' ($(D(V(o(o(v(˜(˜(¢(È4Ž—¾ê¾êÒê×êÝêáêåêë ëÉxÐêV}V}�}n}�}š}¡}·}¼}Á}Å}Ç}Í}Ó}é}Ö}ø}~~+~N~D~]~i~Ê4;D–ߖߟ߫ßÊßÏßÑßÑßÖßË”"X©X©f©x©|©„©Œ©—©¢©ª©µ©À©Å©Û©â©é©ô©ÿ©ª ªªª%ª0ª;ªDªLªLªPª‡ªÌ€Úö�4�4­4±4µ4½4Ë4Î4Ñ4ç4í4ï455 555%5:5K5R5Y5Y5f5{5ÍÞ`&@&@V@a@†@h@ @Ö@Û@Û@Þ@è@AAAA;A\AnA{A–AªA¯AÉAÓAÕAÚAñAB*B7BRBrBhBŒB’B’B›B»BÇBÊBÌBçBÑBöBöBCCC CKCACeCeCjCmCƒC�C¤CÈCÒCØCèCDÿC D!D3DGD[DQDpDvD…D­DœD¼D¾DÐDÚDîDøDEE"E$ELine truncated
èèèèèèèè0è0è0è0èGèIèIèIèIèdèoè¤èĞĞën~n~„~�~•~•~¡~¦~«~¶~»~»~»~ğ~İ~ÿ~&&?XqŠ��¨ÁÚóøø€*€C€\€^€^€w€�€©€€€€Ô€Ñ0…�^ê^êlêrêvê•ê¶ê¶ê¼êÒ<:Eo7o7x7ƒ7‘7�7©7²7»7Ä7Ê7Ï7ÓluŒß&ß&í&÷&ş&''''('2'@']'_'o'o't'v'}'¯'ÔØŸÑoo*oToIo5otoo“o†oÅoÊoöoöoûopp#p:pWp°p˜p„p¶pÁpípòpúpq!qFq;q'qYqrq^q•q�q¬q³qßqßqßqßqçqÕL\k¦(¦(Ä(Ö(İ(ÿ(ÿ()).)$)F)P)ÖÈg•Ï0Ï0ó0÷0181D1K1V1d1q1z1z11‰1¡1¬1¼1È1Ï1Ú1ë1í1ş12222
2
2222$2,24282B2�2× ø…ø…††#†Ø`FZÏ7Ï7ß7æ7è7í7ü7888%8%818:8=8K8U8X8`8Ù<úNŠNŠWŠbŠmŠxŠƒŠ�ЫжЯŠÚ ␍1dd.d@dFdRd]dkdwd�d™d©d»dÁdÇdÍdàdædïdõde␍ee e.e;exeÛ, ^.^.l.}.–.ª.­.³.Ü4¸†¸†Æ†Ğ†Ù†à†ç†ñ†ñ†÷†İÄMz–ø–øÂøÅøÊø×øÜøîøğøôøøøûøù'ùMùVùaùhù�ù§ù¬ùÅùëùğù÷ùú6ú8úQúwúwúwú�ú©ú¸úÊúބ¾s¾sÜsßsåsùstt t%t*t*t7t@tFtVtdtft…t™t t¬t¼t¼tÊtİtètìtıtıtıtuuuu0u6u;uOuUu]uouuuwu†u“u™uŸu¤uªu°u·uÃuÊuÌuÑuÙuÛuàuìuîuóuûuıuv
v vvvv v(v(v(v8v8v8vOvUv[vfvkvsvŒv’v�v¡v§v²vËvÖvávçvôvùvşvşvww#wDwOwZwfw`wowxw}w‚w—w�w§w³w¹wÅwÉwÎwÓwŞwéwôwöwüw xxx,x7xBxBxHxUxWx\xex~x‰x”xšx§x§x«x°x°xÁxÃxÃxÖxØxØxëxíxíxyyyyyy)y)y/y4y4yKy_yTylyty{y�y‰yœy§y�y·y·y¹yÑyÔyÖyåy÷yzz*zDzIz]zmz€z…z…z�z¢z´z¿zÇzÏzÓzázçzìzìzòz{{{{!{'{,{,{,{2{A{T{a{e{j{j{n{s{s{x{ƒ{�{©{¿{Ë{Ë{Ñ{Ş{à{í{ù{|||(|4|4|4|4|8|=|N|`|k|s|{|}|�|”|¢|±|·|Ä|Ä|Û|ë|ë|ÿ| }␍}}"}9}9}?}L}N}`}`}k}k}k}k}k}çß „È^S^S|SŠS�S¢SÀSÆSËSÑSßSæSõSúSTTT6TATTT[TuT’T�T¹TÑTíTöTU␍UU#U(U8UFUfUkUsUŒU�U®U´U¿UÈUÎUVşUïU$V_VIV:VoVrV’V&Wà<+6ÔBÔBõBûBCC/C7CMCYCá„ |FFhsz‚……•  £ª±·½ÃÊĞááãìøş# ' * : B G G N W h n w ‚ “ “ œ ¡ « ² ¹ Á Ç É × î ñ  ␍      2 ; L m ~ – � § ¯ ¿ Æ Ò â í í í !!%!(!ã!â„9O6O6k6z6�6›6Á6×6è6ñ6ÿ67*7*7<7R7Z7]7i7ãX{Í&&Q[ny‹™Ÿ°·¿Õİğ !1AJPU\bhny„‡�¨°Êßìï÷û␍'/F_cls…�”˜¡£µÌÚàäæóóóõ $ä 
(†(†1†E†J†å¤£Èn{n{Š{�{¢{§{­{°{´{´{×{Ü{ |õ{|1||@|V|B|e|m|r|x|{||�|š|†|©|©|©|Ä|ó|ÿ|æ˜Íï /*>9HWWffuu„„““¢±ÀÀÏŞíXçxÇá¶`¶`Ô`æ`ì`ø`aa!a'a2aBaNaWa]acana|a‰a•a£a²a²aâaèd˜­ëëë%ë%ë?ëFëRëRëiëië€ë€ë—ë—ë®ë®ëÅëÇëÇëËëéÌÂñ6ı6ıXı_ıjı€ı€ı’ı�ı±ıµıºı¾ıÀıÆıØıäıùıûış#ş'ş'ş'ş:şOşOş[şaşkşvş„ş‹şšşœşµşÏşÏşáşêP7G\C\CrC~C†CŠC›C©C¯C»CÃCÎCÔC×CáCë ®-–;–;°;»;¿;È;Ï;Ö;ì;ı;< <2<A<P<a<p<p<w<{<„<‘<˜<¡<¨<¬<Ì<Ì<Ì<Ì<Ì<Ø<Ü<ß<ç<õ<ı<
===+=6=;=;=H=N=]=t=v=�=Ž=�= =¦=¢=º=Ñ=Ó=á=ã=î=ô=ô=ü=ü=>>+>+>+>0>0>H>V>a>f>f>i>n>n>�>›>¨>ª>ª>®>°>°>Ï>Ý>é>ë>ë>î>ð>ð>ý>ÿ>ÿ>????? ???!?A?N?\?c?+@ì(rx(‰(‰6‰=‰M‰P‰V‰í(nt�&�&˜&¢&³&¾&¾&Ü&îTzK¾ñ¾ñÜñâñåñîñøñò ò)ò/ò2ò6ò8òPò`òmòsòwò}òò‚ò†ò†ò©ò­ò³ò³òºòÜòñòóóó$ó/ó9ó=ó@óGóMóQóWóhónósóxó…ó‡ó™ó›ó¢ó¯ó±óÃóÃóÃóÃóÃóçóòóþóôô*ô6ôSôwô‘ô–ô­ô²ôÀô×ôÜôâôóôõõõ+õCõJõVõnõzõzõzõ€õƒõ†õŸõ¥õ¹õ¿õÄõÏõÏõÔõáõîõîõôõöö ö"ö%ö,ö5ö<ö<öAöNö[ö[öaöoö†öŒö�ö’ö™ö™öªö±ö¾öËöËöÒöÜöãöéöðöûö÷÷)÷.÷5÷=÷D÷T÷X÷a÷y÷~÷…÷§÷²÷¸÷À÷Ù÷í÷í÷øø"ø0ø7ø>ø`øsø—ø™ø£øÅøÅøÅøÞøêøûøùùíùïÀ�­ÆZÆZÞZâZçZöZ[ [.[[=[B[B[g[˜[{[n[»[À[é[î[ú[\ü[*\/\H\O\r\ˆ\ˆ\®\®\º\ð þ-þ- .&.,.ñ4�˜>M>MWMzM‡M�M“M–M·Mò8 O.O.].d.o.w.~.„.Š.Š.�.ó ¶.¶.À.È.Í.ôÒTîqîq rr'r=rZrir�r»rÁrÇrÏrÑrÙrîrñrürss;sJsnsœs¢s¨s°sµs½sÒsÕsàsìsñs÷sýst tt%t=tKtytt„tŒtœtÂtðtötûtût uu"u?uWucukuyuyu~u‘u¨uªuÇußuëuóuvvvv&v0vGv^vwv‰v–v¸vÏvævôvöv w$w$w-w9wOwhw{w†w™w�w�w�w¤w©w¼wÇwáwãwèwûwxxxx/xõ˜k Ü8Ü8ò8þ8þ89 9!9@9@9@9G9Q9U9Y9\9\9e9i999µ9Á9Ì9Ü9ì9ñ9ô9ù9ù9ù9::":):1:6:6:K:W:_:d:d:y:†:Ž:“:“:¨:´:½:Å:Í:Ù:ï:ú:;!;/;7;<;<;Q;k;u;�;‰;Ž;Ž;­;¹;Ä;É;Þ;ê;ù;þ; << < < < <"<'<'<'<F<R<]<_<b<g<g<g<q<y<€<ˆ<‘<œ<¢<°<¾<¾<È<Ñ<Ù<===*=@=E=E=X=`=`=b=b=b=g=g=n=t=x==ƒ=ƒ=ƒ=ƒ=’=’=·=À=À=Ä=ßAö(äAäAòAûA BB÷�«Ë¾g¾gÜgägðghh)h4hChIhIhIhNhShahlh…h‡hŒhšh¥h²h¹hÇhø\0C&&8&]&?&l&ˆ&~& &µ&¢&Ä&Ý&ï&'''1'1';'ù8hr®K®KÇKÖKêKùKÿKLL)Lú0�— Š Š4Š@ŠNŠQŠiŠlŠtŠû0S[ÖÖ2Ö:ÖGÖQÖdÖüP>N ‡ ‡¬‡À‡Ã‡×‡ß‡ã‡í‡÷‡ÿ‡ˆˆýT™ª¾M¾MØMëMîMøMNNN.N8NLNLNRNUN©Nþ<˜£xŠxŠŒŠ“ŠŸŠ«Š»ŠÀŠÃŠÇŠÏŠÿ +/.ä.ä<äHäH"0nVnV‚VŽV¤V�V³VµV¼VÇVÓVÛV DƒnQnQ’Q™QžQ¦QÀQÉQËQØQØQÚQôQúQüQþQ R R R RRR'R/R8R@RGRMRORkRoR�R”RšR®R³RÀRÀRÔRÛRâRëRùRS%S+S/S4S9S<SFSISYSD ®n®n¼nÆnÐnànånînúnünooo@oläûFâFâZâwâˆâ–âšâ¡â¥â®âÀâÂâÂâÙâÛâçâíâíâíâíâõâ´KtðCðCD'D,D3D=D=DEDXD\DaDvDxD{DD†DšDžD¦D²D¹D½DÅDÇDÏDÝDåDçDêDÿDEEE!E/E !EFoFoVobono~o–oœoªo»oÃoÊoàop p-p:pJpPpRpcp…pŒp’p p¨p¾pÉpÏpÕpøpôB»àgàgúgýghhh h+h:h:hGhUhXhZhZh_hdhmhxh~h‡hšhŸh´h¿hÉhÉhßhßh i i7i=iBiIiOiVi[i[iaigiLine truncated
+1 -1
View File
@@ -12,7 +12,7 @@
class CIntermediateStruct
{
U8 arg_cnt,result_cnt,type;
U8 arg_cnt,res_cnt,type;
Bool fpop,not_const,pad[3];
U8 *name;
};
+22 -22
View File
@@ -1,11 +1,11 @@
CLexFile *LexFilePush(CCmpCtrl *cc)
{//#include file push.
CLexFile *result=CAlloc(sizeof(CLexFile));
if (result->next=cc->lex_include_stk)
result->depth=result->next->depth+1;
CLexFile *res=CAlloc(sizeof(CLexFile));
if (res->next=cc->lex_include_stk)
res->depth=res->next->depth+1;
else
result->depth=-1; //Include depth starts with -1.
return cc->lex_include_stk=result;
res->depth=-1; //Include depth starts with -1.
return cc->lex_include_stk=res;
}
CLexFile *LexFilePop(CCmpCtrl *cc)
@@ -62,7 +62,7 @@ U0 CmpCtrlDel(CCmpCtrl *cc)
LinkedLstDel(cc->htc.next);
Free(cc->ps);
Free(cc->cur_str);
Free(cc->cur_help_index);
Free(cc->cur_help_idx);
Free(cc->dollar_buf);
Free(cc);
}
@@ -70,22 +70,22 @@ U0 CmpCtrlDel(CCmpCtrl *cc)
I64 CmpCtrlSize(CCmpCtrl *cc)
{//Mem size of CCmpCtrl and its members.
CLexFile *tempf=cc->lex_include_stk;
I64 result=0;
I64 res=0;
while (tempf) {
if (tempf->next || !(cc->flags & CCF_DONT_FREE_BUF)) {
if (tempf->flags & LFSF_DOC) {
if (tempf->doc)
result+=DocSize(tempf->doc);
res+=DocSize(tempf->doc);
} else
result+=MSize2(tempf->buf);
res+=MSize2(tempf->buf);
}
result+=MSize2(tempf->full_name);
result+=MSize2(tempf);
res+=MSize2(tempf->full_name);
res+=MSize2(tempf);
tempf=tempf->next;
}
result+=MSize2(cc->cur_str);
result+=MSize2(cc);
return result;
res+=MSize2(cc->cur_str);
res+=MSize2(cc);
return res;
}
U32 lex_zeros=0;
@@ -276,7 +276,7 @@ U0 LexSkipEol(CCmpCtrl *cc)
U8 *LexFirstRem(CCmpCtrl *cc,U8 *marker,I64 _len=NULL)
{//$LK,"LexGetChar",A="MN:LexGetChar"$() chars making str until marker.
U8 *result,*ptr;
U8 *res,*ptr;
CQueVectU8 *tempv=QueVectU8New;
I64 i,len=0;
while (TRUE) {
@@ -287,13 +287,13 @@ U8 *LexFirstRem(CCmpCtrl *cc,U8 *marker,I64 _len=NULL)
}
if (i)
Bts(&cc->flags,CCf_USE_LAST_U16);
result=ptr=MAlloc(len+1);
res=ptr=MAlloc(len+1);
for (i=0;i<len;i++)
*ptr++=QueVectU8Get(tempv,i);
*ptr=0;
QueVectU8Del(tempv);
if (_len) *_len=len;
return result;
return res;
}
U0 LexIncludeStr(CCmpCtrl *cc,U8 *abs_filename,U8 *src,Bool actual_file)
@@ -530,7 +530,7 @@ lex_ident:
} else {
cc->cur_i64=i;
cc->flags|=CCF_USE_LAST_U16;
cc->token=TK_INT;
cc->token=TK_I64;
goto lex_end;
}
}
@@ -544,7 +544,7 @@ lex_ident:
else {
cc->cur_i64=i;
cc->flags|=CCF_USE_LAST_U16;
cc->token=TK_INT;
cc->token=TK_I64;
goto lex_end;
}
}
@@ -557,7 +557,7 @@ lex_ident:
lex_is_int:
cc->cur_i64=i;
cc->flags|=CCF_USE_LAST_U16;
cc->token=TK_INT;
cc->token=TK_I64;
goto lex_end;
}
ch=LexGetChar(cc);
@@ -1020,8 +1020,8 @@ lex_ifjit:
case KW_HELP_INDEX:
if (Lex(cc)!=TK_STR)
goto lex_end;
Free(cc->cur_help_index);
cc->cur_help_index=LexExtStr(cc,,FALSE);
Free(cc->cur_help_idx);
cc->cur_help_idx=LexExtStr(cc,,FALSE);
break;
case KW_HELP_FILE:
if (Lex(cc)!=TK_STR)
+14 -14
View File
@@ -15,7 +15,7 @@ U0 LexPush(CCmpCtrl *cc)
LexBackupLastChar(cc);
if (cc->lex_include_stk->last_U16)
cc->flags|=CCF_USE_LAST_U16;
tempf=MAllocIdentical(cc->lex_include_stk);
tempf=MAllocIdent(cc->lex_include_stk);
tempf->next=cc->lex_prs_stk;
cc->lex_prs_stk=tempf;
}
@@ -149,9 +149,9 @@ U0 MemberAdd(CCmpCtrl *cc,CMemberLst *tempm,CHashClass *tempc,I64 mode)
CMemberLst *MemberLstNew(I64 _reg)
{
CMemberLst *result=CAlloc(sizeof(CMemberLst));
result->reg=_reg;
return result;
CMemberLst *res=CAlloc(sizeof(CMemberLst));
res->reg=_reg;
return res;
}
U0 MemberLstDel(CHashClass *tempc)
@@ -192,27 +192,27 @@ I64 MemberLstSize(CHashClass *tempc)
{
CMemberLst *tempm;
CMemberLstMeta *temp_meta;
I64 result=0;
I64 res=0;
tempm=tempc->member_lst_and_root;
while (tempm) {
result+=MSize2(tempm->str);
result+=LinkedLstSize(tempm->dim.next);
res+=MSize2(tempm->str);
res+=LinkedLstSize(tempm->dim.next);
if (tempm->flags & MLF_STR_DFT_AVAILABLE)
result+=MSize2(tempm->dft_val);
res+=MSize2(tempm->dft_val);
if (tempm->flags & MLF_FUN)
result+=HashEntrySize2(tempm->fun_ptr-tempm->fun_ptr->ptr_stars_cnt);
res+=HashEntrySize2(tempm->fun_ptr-tempm->fun_ptr->ptr_stars_cnt);
temp_meta=tempm->meta;
while (temp_meta) {
result+=MSize2(temp_meta->str);
res+=MSize2(temp_meta->str);
if (temp_meta->flags&MLMF_IS_STR)
result+=MSize2(temp_meta->user_data);
result+=MSize2(temp_meta);
res+=MSize2(temp_meta->user_data);
res+=MSize2(temp_meta);
temp_meta=temp_meta->next;
}
result+=MSize2(tempm);
res+=MSize2(tempm);
tempm=tempm->next;
}
return result;
return res;
}
U8 *LexExtStr(CCmpCtrl *cc,I64 *_size=NULL,Bool lex_next=TRUE)
+6 -6
View File
@@ -991,7 +991,7 @@ args.
tempi2=tempi2->next;
tempi1->ic_flags=tempi->ic_flags|tempi1->ic_flags&
~(ICF_R_TO_F64|ICF_PUSH_RESULT)|tempi2->ic_flags;
~(ICF_R_TO_F64|ICF_PUSH_RES)|tempi2->ic_flags;
OptSetNOP1(tempi2);
tempi1->ic_class=cmp.internal_types[RT_I64];
@@ -1056,7 +1056,7 @@ args.
tempi2=tempi2->next;
tempi1->ic_flags=tempi->ic_flags|tempi1->ic_flags&
~(ICF_R_TO_INT|ICF_PUSH_RESULT)|tempi2->ic_flags;
~(ICF_R_TO_INT|ICF_PUSH_RES)|tempi2->ic_flags;
OptSetNOP1(tempi2);
tempi1->ic_class=cmp.internal_types[RT_F64];
@@ -1093,12 +1093,12 @@ args.
tempi_push=OptBrNotZero(cc,tempi);
break;
case IC_NOP1:
if (tempi->ic_flags&ICF_PUSH_RESULT) {
if (tempi->ic_flags&ICF_PUSH_RES) {
tempi1=tempi;
do tempi1=tempi1->last;
while (tempi1->ic_code==IC_NOP1);
tempi1->ic_flags|=ICF_PUSH_RESULT;
tempi->ic_flags&=~ICF_PUSH_RESULT;
tempi1->ic_flags|=ICF_PUSH_RES;
tempi->ic_flags&=~ICF_PUSH_RES;
}
break;
case IC_NOP2:
@@ -1264,7 +1264,7 @@ args.
OptFixSizeOf(tempi2,tempi_push,tempi1->ic_class);
}
}
if (intermediate_code_table[tempi_push->ic_code].result_cnt) {
if (intermediate_code_table[tempi_push->ic_code].res_cnt) {
PrsPush(ps,tempi->ic_class2);
PrsPush(ps,tempi_push);
}
+4 -4
View File
@@ -91,7 +91,7 @@ U0 OptPass3(CCmpCtrl *cc,COptReg *reg_offsets)
case IS_0_ARG: //nobound switch
break;
}
if (intermediate_code_table[code].result_cnt) {
if (intermediate_code_table[code].res_cnt) {
tempi->r.type=MDF_STK+CmpRawType(tempc);
tempi->r.type_pointed_to=CmpRawTypePointed(tempc);
tempi->ic_flags|=ICF_R_WAS_STK;
@@ -524,9 +524,9 @@ the times the offset is dereferenced. If the address was calculated more times
than the offset was dereferenced, the variable's address was passed or assigned
and we cannot use a register because you can't take address of a reg var.
RAX,RBX,RCX,RDX are free to be clobbered by each intermediate code. RAX links
intermediate codes together. R8 and R9 are used for stack machine temporaries.
RBP is used as stack frame.
RAX,RBX,RCX,RDX, R8 are free to be clobbered by each intermediate code.
RAX and R8 links intermediate codes together. R9 is used for stack machine
temporaries. RBP is used as stack frame.
RSI,RDI,R10,R11,R12,R13,R14,R15 are used for reg vars. R12 and R13, however,
have a unusual ModR addressing mode in the x86_64 architecture, so I only use
+5 -5
View File
@@ -9,7 +9,7 @@ Bool OptIC4(CIntermediateCode *tempi)
if (!(tempil2=OptLag1(tempil1)))
return FALSE;
if (tempil2->r.type&MDF_STK && !(tempil2->ic_flags&ICF_PUSH_RESULT)) {
if (tempil2->r.type&MDF_STK && !(tempil2->ic_flags&ICF_PUSH_RES)) {
if (tempil1->ic_code==IC_ADD_CONST && tempil1->a1.type&MDF_STK) {
if ((tempil2->ic_code==IC_REG || tempil2->ic_code==IC_MOV) &&
tempil2->a1.type&MDF_REG) {
@@ -556,9 +556,9 @@ p4_sib:
break;
case IC_CALL_END:
case IC_END_EXP:
if (!(tempil1->ic_flags&ICF_PUSH_RESULT)) {
if (tempi->ic_flags&ICF_NO_DEPEND_RESULT) {
tempil1->ic_flags|=ICF_NO_DEPEND_RESULT;
if (!(tempil1->ic_flags&ICF_PUSH_RES)) {
if (tempi->ic_flags&ICF_RES_NOT_USED) {
tempil1->ic_flags|=ICF_RES_NOT_USED;
tempil1->r.type=MDF_NULL+tempil1->r.type.raw_type;
} else if (tempi->a1.type&MDF_STK &&
tempil1->r.type&MDF_STK) {
@@ -694,7 +694,7 @@ p4_sib:
if (tempi) {
while (OptIC4(tempi));
code=tempi->ic_code;
if (intermediate_code_table[code].result_cnt)
if (intermediate_code_table[code].res_cnt)
PrsPush(ps,tempi);
}
}
+1 -1
View File
@@ -109,7 +109,7 @@ U0 OptPass5(CCmpCtrl *cc)
}
}
if (tempi->r.type&MDF_STK &&
!(tempi->ic_flags&ICF_NO_DEPEND_RESULT))
!(tempi->ic_flags&ICF_RES_NOT_USED))
PrsPush(ps,tempi);
}
tempi=tempi->next;
+7 -8
View File
@@ -77,7 +77,7 @@ U0 OptPass6Lag(CCmpCtrl *cc,CPrsStk *ps,CIntermediateCode *tempi,
tempi->a1.disp=0;
}
}
if (tempi->r.type&MDF_STK && !(tempi->ic_flags & ICF_PUSH_RESULT)) {
if (tempi->r.type&MDF_STK && !(tempi->ic_flags & ICF_PUSH_RES)) {
stk_ptr++;
if (stk_ptr<=reg_stk_size) {
tempi->r.type=MDF_REG+tempi->r.type.raw_type;
@@ -115,9 +115,9 @@ U0 OptPass6(CCmpCtrl *cc)
tempil1=tempi;
if (tempi->a2.type&MDF_STK) {
if (tempil2->r.type&MDF_STK &&
!(tempil2->ic_flags&ICF_PUSH_RESULT)) {
!(tempil2->ic_flags&ICF_PUSH_RES)) {
if (tempi->ic_code==IC_ASSIGN && tempi->ic_flags&ICF_BY_VAL &&
tempi->ic_flags&ICF_NO_DEPEND_RESULT &&
tempi->ic_flags&ICF_RES_NOT_USED &&
tempil2->ic_code!=IC_CALL_END &&
tempil2->ic_code!=IC_CALL_END2 &&
tempil2->ic_code!=IC_SET_RAX &&
@@ -128,9 +128,8 @@ U0 OptPass6(CCmpCtrl *cc)
tempil2->r.reg =tempi->a1.reg;
tempil2->r.disp =tempi->a1.disp;
tempil2->ic_flags=tempil2->ic_flags
&~(ICF_NO_DEPEND_RESULT|ICF_R_WAS_STK)
|tempi->ic_flags&~(ICF_BY_VAL|ICF_A1_WAS_STK|ICF_A2_WAS_STK)
|ICF_DEPEND_RESULT;
&~(ICF_RES_NOT_USED|ICF_R_WAS_STK)
|tempi->ic_flags&~(ICF_BY_VAL|ICF_A1_WAS_STK|ICF_A2_WAS_STK);
old_tempil2=NULL;
OptSetNOP1(tempi);
} else {
@@ -143,7 +142,7 @@ U0 OptPass6(CCmpCtrl *cc)
}
}
} else if (tempi->a1.type&MDF_STK && tempil2->r.type&MDF_STK &&
!(tempil2->ic_flags&ICF_PUSH_RESULT)) {
!(tempil2->ic_flags&ICF_PUSH_RES)) {
tempi->a1.type=MDF_REG+tempi->a1.type.raw_type;
tempi->a1.disp=0;
tempil2->r.type=MDF_REG+tempil2->r.type.raw_type;
@@ -156,7 +155,7 @@ U0 OptPass6(CCmpCtrl *cc)
tempil2->r.reg=REG_RAX;
}
}
if (tempi->ic_flags & ICF_PUSH_RESULT)
if (tempi->ic_flags & ICF_PUSH_RES)
tempi->r.type==MDF_STK+tempi->r.type.raw_type;
if (old_tempil2!=tempil2) {
if (tempil2->ic_code>IC_NOP2)
+3 -3
View File
@@ -57,7 +57,7 @@ cc->pass==10 is final pass, code is placed into buf.
cc->cur_ic_float_op_num=0;
if (!(tempi->ic_flags &ICF_CODE_FINAL)) {
tempi->ic_flags=tempi->ic_flags&
~(ICF_PREVIOUS_DELETED|ICF_DONT_RESTORE)|ICF_CODE_FINAL;
~(ICF_PREV_DELETED|ICF_DONT_RESTORE)|ICF_CODE_FINAL;
if (cc->pass==7)
cc->dont_push_float=Btr(&tempi->ic_flags,ICf_DONT_PUSH_FLOAT0);
MemCpy(saved_p123,&tempi->a1,3*sizeof(CICArg));
@@ -1067,10 +1067,10 @@ cc->pass==10 is final pass, code is placed into buf.
}
}
cnt=tempi->ic_cnt;
if (tempi->ic_flags&ICF_DEL_PREVIOUS_INS) {
if (tempi->ic_flags&ICF_DEL_PREV_INS) {
if (cc->pass>8)
cnt=tempi->ic_last_cnt;
tempi->ic_flags&=~ICF_DEL_PREVIOUS_INS;
tempi->ic_flags&=~ICF_DEL_PREV_INS;
}
if (cnt && buf)
MemCpy(buf+ip,tempi->ic_body,cnt);
+26 -26
View File
@@ -263,7 +263,7 @@ pe_done:
Bool PrsExpression(CCmpCtrl *cc,I64 *_max_prec,Bool end_exp,CPrsStk *_ps=NULL)
{
Bool result=TRUE;
Bool res=TRUE;
I64 old_flags=cc->flags;
CPrsStk *ps;
if (_ps)
@@ -280,7 +280,7 @@ Bool PrsExpression(CCmpCtrl *cc,I64 *_max_prec,Bool end_exp,CPrsStk *_ps=NULL)
PrsExpression2(cc,_max_prec,ps);
catch {
if (Fs->except_ch=='Compiler') {
result=FALSE;
res=FALSE;
Fs->catch_except=TRUE;
}
}
@@ -289,10 +289,10 @@ Bool PrsExpression(CCmpCtrl *cc,I64 *_max_prec,Bool end_exp,CPrsStk *_ps=NULL)
LexExcept(cc,"Compiler Parse Error at ");
Free(ps);
}
if (end_exp && result)
ICAdd(cc,IC_END_EXP,0,0,ICF_NO_DEPEND_RESULT);
if (end_exp && res)
ICAdd(cc,IC_END_EXP,0,0,ICF_RES_NOT_USED);
cc->flags|=old_flags&(CCF_PREINC|CCF_PREDEC);
return result;
return res;
}
U0 PrsSizeOf(CCmpCtrl *cc)
@@ -544,7 +544,7 @@ I64 PrsFunCall(CCmpCtrl *cc,CPrsStk *ps,Bool indirect,CHashFun *tempf)
tempcbh1=tempcbh->coc_next;
COCAppend(cc,tempcbh);
if (!Bt(&tempf->flags,Ff_INTERNAL))
cc->coc.coc_root.last->ic_flags|=ICF_PUSH_RESULT;
cc->coc.coc_root.last->ic_flags|=ICF_PUSH_RES;
tempcbh=tempcbh1;
}
if (Bt(&tempf->flags,Ff_INTERNAL))
@@ -580,7 +580,7 @@ I64 PrsFunCall(CCmpCtrl *cc,CPrsStk *ps,Bool indirect,CHashFun *tempf)
if (!is_template_fun)
ICAdd(cc,IC_CALL_END,tempf,tempf->return_class);
if (is_print||is_putchars)
ICAdd(cc,IC_END_EXP,0,0,ICF_NO_DEPEND_RESULT);
ICAdd(cc,IC_END_EXP,0,0,ICF_RES_NOT_USED);
cc->flags=(cc->flags|CCF_RAX) & ~(CCF_ARRAY|CCF_FUN_EXP);
return PE_UNARY_MODIFIERS;
}
@@ -671,7 +671,7 @@ I64 PrsUnaryTerm(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var,
return PE_UNARY_TERM2;
sub_switch_start:
case TK_INT:
case TK_I64:
case TK_CHAR_CONST:
case TK_INS_BIN_SIZE:
if (cc->cur_i64<0)
@@ -1109,7 +1109,7 @@ I64 PrsUnaryModifier(CCmpCtrl *cc,CPrsStk *ps,CMemberLst **_local_var,
U8 *LexExpression2Bin(CCmpCtrl *cc,I64 *_type=NULL)
{//Compile cc expression. You call the code.
U8 *result;
U8 *res;
I64 size;
Bool old_trace=Btr(&cc->flags,CCf_PASS_TRACE_PRESENT);
COCPush(cc);
@@ -1117,12 +1117,12 @@ U8 *LexExpression2Bin(CCmpCtrl *cc,I64 *_type=NULL)
if (PrsExpression(cc,NULL,FALSE)) {
ICAdd(cc,IC_RETURN_VAL,0,0);
ICAdd(cc,IC_RET,0,0);
result=COCCompile(cc,&size,NULL,_type);
res=COCCompile(cc,&size,NULL,_type);
} else
result=NULL;
res=NULL;
COCPop(cc);
BEqu(&cc->flags,CCf_PASS_TRACE_PRESENT,old_trace);
return result;
return res;
}
Bool IsLexExpression2Bin(CCmpCtrl *cc,U8 **_machine_code)
@@ -1133,39 +1133,39 @@ Bool IsLexExpression2Bin(CCmpCtrl *cc,U8 **_machine_code)
I64 LexExpressionI64(CCmpCtrl *cc)
{//Compile cc expression, forcing to I64 and eval.
U8 *machine_code;
I64 result,type;
I64 res,type;
if (machine_code=LexExpression2Bin(cc,&type)) {
result=Call(machine_code);
res=Call(machine_code);
Free(machine_code);
if (type==RT_F64)
result=ToI64(result(F64));
res=ToI64(res(F64));
} else
result=0;
return result;
res=0;
return res;
}
F64 LexExpressionF64(CCmpCtrl *cc)
{//Compile cc expression, forcing to F64 and eval.
U8 *machine_code;
I64 result,type;
I64 res,type;
if (machine_code=LexExpression2Bin(cc,&type)) {
result=Call(machine_code);
res=Call(machine_code);
Free(machine_code);
if (type!=RT_F64)
result(F64)=ToF64(result);
res(F64)=ToF64(res);
} else
result=0;
return result(F64);
res=0;
return res(F64);
}
I64 LexExpression(CCmpCtrl *cc)
{//Compile cc expression and eval. Might be I64 or F64.
U8 *machine_code;
I64 result;
I64 res;
if (machine_code=LexExpression2Bin(cc)) {
result=Call(machine_code);
res=Call(machine_code);
Free(machine_code);
} else
result=0;
return result;
res=0;
return res;
}
+24 -24
View File
@@ -45,8 +45,8 @@ to a class by advancing 1 struct fwd
for one * and two fwd for two **.
*/
I64 i;
CHashClass *result=CAlloc(sizeof(CHashClass)*(MAX_PTR_STARS+1),Fs->code_heap),
*tempc=result;
CHashClass *res=CAlloc(sizeof(CHashClass)*(MAX_PTR_STARS+1),Fs->code_heap),
*tempc=res;
for (i=0;i<=MAX_PTR_STARS;i++) {
tempc->type=HTT_CLASS;
tempc->raw_type=RT_PTR;
@@ -54,16 +54,16 @@ for one * and two fwd for two **.
tempc->ptr_stars_cnt=i;
tempc++;
}
result->last_in_member_lst=&result->member_lst_and_root;
result->size=0;
return result;
res->last_in_member_lst=&res->member_lst_and_root;
res->size=0;
return res;
}
CHashFun *PrsFunNew()
{
I64 i;
CHashFun *result=CAlloc(sizeof(CHashFun)*(MAX_PTR_STARS+1),Fs->code_heap),
*tempf=result;
CHashFun *res=CAlloc(sizeof(CHashFun)*(MAX_PTR_STARS+1),Fs->code_heap),
*tempf=res;
for (i=0;i<=MAX_PTR_STARS;i++) {
tempf->type=HTT_FUN;
tempf->raw_type=RT_PTR;
@@ -71,9 +71,9 @@ CHashFun *PrsFunNew()
tempf->ptr_stars_cnt=i;
tempf++;
}
result->last_in_member_lst=&result->member_lst_and_root;
result->size=0;
return result;
res->last_in_member_lst=&res->member_lst_and_root;
res->size=0;
return res;
}
CIntermediateCode *ICAdd(CCmpCtrl *cc,
@@ -142,11 +142,11 @@ U0 COCAppend(CCmpCtrl *cc, CCodeCtrl *tempcbh)
CCodeMisc *COCMiscNew(CCmpCtrl *cc,I64 ty)
{
CCodeMisc *result=CAlloc(sizeof(CCodeMisc));
result->addr=INVALID_PTR;
result->type=ty;
QueIns(result,cc->coc.coc_last_misc);
return result;
CCodeMisc *res=CAlloc(sizeof(CCodeMisc));
res->addr=INVALID_PTR;
res->type=ty;
QueIns(res,cc->coc.coc_last_misc);
return res;
}
CCodeMisc *COCGoToLabelFind(CCmpCtrl *cc,U8 *name)
@@ -248,7 +248,7 @@ U0 COCHeaderPut(CCmpCtrl *cc,I64 pass,Bool put)
U8 *COCCompile(CCmpCtrl *cc,I64 *_code_size,CDbgInfo **_dbg,I64 *_type)
{
U8 *result;
U8 *res;
CCodeMisc *lb;
I64 i,code_size,last_code_size;
@@ -296,25 +296,25 @@ U8 *COCCompile(CCmpCtrl *cc,I64 *_code_size,CDbgInfo **_dbg,I64 *_type)
} while (code_size<last_code_size);
if (cc->flags&CCF_AOT_COMPILE)
result=MAlloc(code_size);
res=MAlloc(code_size);
else
result=MAlloc(code_size,Fs->code_heap);
res=MAlloc(code_size,Fs->code_heap);
COCHeaderPut(cc,10,FALSE);
code_size=OptPass789A(cc,reg_offsets,result,_dbg);
code_size=OptPass789A(cc,reg_offsets,res,_dbg);
COCDel(cc,&cc->coc);
if (Bt(&cc->opts,OPTf_TRACE)) {
if (cc->flags&CCF_AOT_COMPILE) {
if (cc->aotc->seg_size==16)
Un(result,code_size,16);
Un(res,code_size,16);
else if (cc->aotc->seg_size==64)
Un(result,code_size,64);
Un(res,code_size,64);
else
Un(result,code_size,32);
Un(res,code_size,32);
} else
Un(result,code_size,64);
Un(res,code_size,64);
}
if (_code_size) *_code_size=code_size;
cc->saved_pass_trace=cc->pass_trace;
return result;
return res;
}
+8 -8
View File
@@ -31,8 +31,8 @@ CHashClass *PrsClass(CCmpCtrl *cc,I64 keyword,I64 fsp_flags,Bool is_extern)
if (tempc) {
Free(tempc->src_link);
tempc->src_link=NULL;
Free(tempc->index);
tempc->index=NULL;
Free(tempc->idx);
tempc->idx=NULL;
} else {
tempc=PrsClassNew;
tempc->str=cc->cur_str;
@@ -94,8 +94,8 @@ CHashFun *PrsFunJoin(CCmpCtrl *cc,
tempf->used_reg_mask=REGG_CLOBBERED+REGG_SAVED+REGG_STK_TEMP;
Free(tempf->src_link);
tempf->src_link=NULL;
Free(tempf->index);
tempf->index=NULL;
Free(tempf->idx);
tempf->idx=NULL;
Free(name);
MemberLstDel(tempf);
} else {
@@ -852,8 +852,8 @@ U0 PrsTryBlk(CCmpCtrl *cc,I64 try_cnt)
lb_untry=COCMiscNew(cc,CMT_LABEL);
ICAdd(cc,IC_CALL_START,0,0);
ICAdd(cc,IC_GET_LABEL,lb_untry,tempc,ICF_PUSH_RESULT);
ICAdd(cc,IC_GET_LABEL,lb_catch,tempc,ICF_PUSH_RESULT);
ICAdd(cc,IC_GET_LABEL,lb_untry,tempc,ICF_PUSH_RES);
ICAdd(cc,IC_GET_LABEL,lb_catch,tempc,ICF_PUSH_RES);
if (Bt(&temp_try->flags,Cf_EXTERN)) {
cc->abs_cnts.externs++;
if (cc->flags&CCF_AOT_COMPILE)
@@ -868,7 +868,7 @@ U0 PrsTryBlk(CCmpCtrl *cc,I64 try_cnt)
else
ICAdd(cc,IC_ADD_RSP,16,tempc);
ICAdd(cc,IC_CALL_END,0,tempc);
ICAdd(cc,IC_END_EXP,0,0,ICF_NO_DEPEND_RESULT);
ICAdd(cc,IC_END_EXP,0,0,ICF_RES_NOT_USED);
PrsStmt(cc,try_cnt+1);
@@ -883,7 +883,7 @@ U0 PrsTryBlk(CCmpCtrl *cc,I64 try_cnt)
} else
ICAdd(cc,IC_CALL,temp_untry->executable_addr,tempc);
ICAdd(cc,IC_CALL_END,0,tempc);
ICAdd(cc,IC_END_EXP,0,0,ICF_NO_DEPEND_RESULT);
ICAdd(cc,IC_END_EXP,0,0,ICF_RES_NOT_USED);
ICAdd(cc,IC_JMP,lb_done,0);
+15 -15
View File
@@ -76,7 +76,7 @@ U0 PrsVarInit(CCmpCtrl *cc,U8 **_dst,CHashClass *tempc,CArrayDim *tempad,
tempi->ic_flags=0;
}
ICAdd(cc,IC_ASSIGN,0,tempc);
ICAdd(cc,IC_END_EXP,0,tempc,ICF_NO_DEPEND_RESULT);
ICAdd(cc,IC_END_EXP,0,tempc,ICF_RES_NOT_USED);
ICAdd(cc,IC_RET,0,0);
if (machine_code=COCCompile(cc,&size,NULL,NULL)) {
tempie=CAlloc(sizeof(CAOTImportExport));
@@ -249,7 +249,7 @@ Bool PrsArrayDims(CCmpCtrl *cc,I64 mode,CArrayDim *dim)
//dim->next!=0 for array
CArrayDim *tempad,*tempad1;
I64 j;
Bool result=TRUE;
Bool res=TRUE;
dim->next=NULL;
dim->cnt=0;
dim->total_cnt=1;
@@ -260,7 +260,7 @@ Bool PrsArrayDims(CCmpCtrl *cc,I64 mode,CArrayDim *dim)
do {
if (Lex(cc)==']' && !dim->next) {
j=-1;
result=FALSE;
res=FALSE;
} else {
if ((j=LexExpressionI64(cc))<0)
LexExcept(cc,"Invalid array size at ");
@@ -281,7 +281,7 @@ Bool PrsArrayDims(CCmpCtrl *cc,I64 mode,CArrayDim *dim)
LexExcept(cc,"Missing ']' at ");
} while (Lex(cc)=='[');
}
return result;
return res;
}
CHashClass *PrsType(CCmpCtrl *cc,CHashClass **_tempc1,
@@ -422,7 +422,7 @@ U0 PrsVarLst(CCmpCtrl *cc,CHashClass *tempc,I64 mode,I64 union_base=0)
CMemberLstMeta *temp_meta;
U8 *machine_code;
Bool undef_array_size,first;
cc->flags|=CCF_DONT_MAKE_RESULT;
cc->flags|=CCF_DONT_MAKE_RES;
if (mode.u8[1]==PRS1B_CLASS)
cc->flags|=CCF_CLASS_IP;
if ((mode.u8[1]!=PRS1B_LOCAL_VAR && mode.u8[1]!=PRS1B_STATIC_LOCAL_VAR ||
@@ -568,7 +568,7 @@ pvl_restart3:
LexPopNoRestore(cc);
if (cc->token=='=') {
cc->flags=cc->flags&
~CCF_DONT_MAKE_RESULT|old_flags&CCF_DONT_MAKE_RESULT;
~CCF_DONT_MAKE_RES|old_flags&CCF_DONT_MAKE_RES;
if (undef_array_size) {
LexPush(cc);
LexPush(cc);
@@ -600,7 +600,7 @@ pvl_restart3:
AOTStoreCodeU8At(cc,tempm->static_data_ip+k,
tempm->static_data[k]);
tempm->use_cnt=0;
cc->flags|=CCF_DONT_MAKE_RESULT;
cc->flags|=CCF_DONT_MAKE_RES;
}
if (cc->flags&CCF_AOT_COMPILE)
Free(tempm->static_data);
@@ -623,14 +623,14 @@ pvl_restart3:
tempm->offset=tempc->size;
tempm->size=i;
if (cc->token=='=') {
cc->flags=cc->flags&~CCF_DONT_MAKE_RESULT|
old_flags&CCF_DONT_MAKE_RESULT;
cc->flags=cc->flags&~CCF_DONT_MAKE_RES|
old_flags&CCF_DONT_MAKE_RES;
LexPopRestore(cc);
Lex(cc);
if (!PrsExpression(cc,NULL,TRUE))
throw('Compiler');
tempm->use_cnt=0;
cc->flags|=CCF_DONT_MAKE_RESULT;
cc->flags|=CCF_DONT_MAKE_RES;
} else
LexPopNoRestore(cc);
break;
@@ -715,10 +715,10 @@ pvl_restart3:
Lex(cc);
goto pvl_done;
case ';':
cc->flags=cc->flags&~CCF_DONT_MAKE_RESULT|
old_flags&CCF_DONT_MAKE_RESULT;
cc->flags=cc->flags&~CCF_DONT_MAKE_RES|
old_flags&CCF_DONT_MAKE_RES;
Lex(cc);
cc->flags|=CCF_DONT_MAKE_RESULT;
cc->flags|=CCF_DONT_MAKE_RES;
if ((mode.u8[1]==PRS1B_LOCAL_VAR||mode.u8[1]==
PRS1B_STATIC_LOCAL_VAR) && !(mode&PRSF_UNION))
goto pvl_done;
@@ -729,6 +729,6 @@ pvl_restart3:
}
}
pvl_done:
cc->flags=cc->flags&~(CCF_CLASS_IP|CCF_DONT_MAKE_RESULT)|
old_flags& (CCF_CLASS_IP|CCF_DONT_MAKE_RESULT);
cc->flags=cc->flags&~(CCF_CLASS_IP|CCF_DONT_MAKE_RES)|
old_flags& (CCF_CLASS_IP|CCF_DONT_MAKE_RES);
}
+16 -16
View File
@@ -1,40 +1,40 @@
I64 InstEntriesCompare(CInst *tempi1,CInst *tempi2)
{
I64 i1,i2,j=0,result=0,oc_cnt1=tempi1->opcode_cnt,oc_cnt2=tempi2->opcode_cnt;
I64 i1,i2,j=0,res=0,oc_cnt1=tempi1->opcode_cnt,oc_cnt2=tempi2->opcode_cnt;
if (tempi1->flags&IEF_STI_LIKE)
oc_cnt1--;
if (tempi2->flags&IEF_STI_LIKE)
oc_cnt2--;
while (TRUE) {
if (j<oc_cnt1 && j<oc_cnt2) {
if (result=tempi1->opcode[j]-tempi2->opcode[j])
return result;
if (res=tempi1->opcode[j]-tempi2->opcode[j])
return res;
j++;
} else {
if (result=oc_cnt1-oc_cnt2)
return result;
if (res=oc_cnt1-oc_cnt2)
return res;
if (tempi1->flags&IEF_STI_LIKE && tempi2->flags&IEF_STI_LIKE)
return tempi1->opcode[j]-tempi2->opcode[j];
if (result=tempi1->flags&IEF_STI_LIKE - tempi2->flags&IEF_STI_LIKE)
return result;
if (res=tempi1->flags&IEF_STI_LIKE - tempi2->flags&IEF_STI_LIKE)
return res;
if (result=tempi1->slash_val-tempi2->slash_val)
return result;
if (res=tempi1->slash_val-tempi2->slash_val)
return res;
if (result=tempi1->flags&IEF_OP_SIZE32 - tempi2->flags&IEF_OP_SIZE32)
return result;
if (res=tempi1->flags&IEF_OP_SIZE32 - tempi2->flags&IEF_OP_SIZE32)
return res;
i1=Bt(&uasm.ins64_arg_mask,tempi1->arg1) ||
Bt(&uasm.ins64_arg_mask,tempi1->arg2);
i2=Bt(&uasm.ins64_arg_mask,tempi2->arg1) ||
Bt(&uasm.ins64_arg_mask,tempi2->arg2);
if (result=i1-i2)
return result;
if (res=i1-i2)
return res;
if (result=tempi1->flags&IEF_48_REX - tempi2->flags&IEF_48_REX)
return result;
if (res=tempi1->flags&IEF_48_REX - tempi2->flags&IEF_48_REX)
return res;
i1=tempi1->arg2==ARGT_IMM64 || tempi1->arg2==ARGT_UIMM64;
i2=tempi2->arg2==ARGT_IMM64 || tempi2->arg2==ARGT_UIMM64;
@@ -150,7 +150,7 @@ CInst *InstEntryFind(U8 *ip,I64 opsize,I64 seg_size)
}
if (opsize==64 || a1==ARGT_M64 || a2==ARGT_M64) {
if (!Bt(&uasm.ins64_arg_mask,a1) &&!Bt(&uasm.ins64_arg_mask,a2) &&
!(tempi->flags&IEF_48_REX)&& !(a2==ARGT_NO &&
!(tempi->flags&IEF_48_REX)&& !(a2==ARGT_NONE &&
(ARGT_UIMM8<=a1<=ARGT_UIMM64 || ARGT_IMM8<=a1<=ARGT_IMM64)))
m=1;
else if (tempi->arg2==ARGT_IMM64 || tempi->arg2==ARGT_UIMM64) {