diff --git a/0000BOOT/BOOT.BIC b/0000BOOT/BOOT.BIC index aec64fc..067e17a 100644 Binary files a/0000BOOT/BOOT.BIC and b/0000BOOT/BOOT.BIC differ diff --git a/LT/ADAM/ADAMASM.BIZ b/LT/ADAM/ADAMASM.BIZ index f7bbacc..dd7d74a 100644 Binary files a/LT/ADAM/ADAMASM.BIZ and b/LT/ADAM/ADAMASM.BIZ differ diff --git a/LT/ADAM/COMM.CPZ b/LT/ADAM/COMM.CPZ index b68b37b..7e643eb 100644 --- a/LT/ADAM/COMM.CPZ +++ b/LT/ADAM/COMM.CPZ @@ -35,7 +35,7 @@ #define RMT_RQST_EXE_LOCAL 0x06 #define RMT_RQST_PUTS_CNT 0x07 -#define RMT_RQST_MAX 0x07 +#define RMT_RQST_MAX 0x08 U8 comm_base[5]={0,0x3F8,0x2F8,0x3E8,0x2E8}; U1Fifo *comm_Rx_fifos[5]={NULL,NULL,NULL,NULL,NULL}; @@ -454,7 +454,7 @@ rr_start: RmtRxPktU1(chnl,&b1,JIFFY_FREQ/50,&esc); rr_cont: if (b==RMT_PKT_REQUEST) { - if (b1>RMT_RQST_MAX) { + if (b1>=RMT_RQST_MAX) { if (b1==RMT_PKT_REQUEST && !esc) goto rr_cont; else @@ -563,6 +563,8 @@ public U8 RmtGetMsg(LTChnl *chnl,I8 *p1,I8 *p2) *p2=b[16]><(U8); if (!cmd) chnl->null_msg_jiffy=jiffies+JIFFY_FREQ/50; + else + chnl->null_msg_jiffy=0; } return cmd; } @@ -576,8 +578,10 @@ public void RmtSendMsg(LTChnl *chnl,U8 cmd,I8 p1,I8 p2) b[8]><(U8)=p1; b[16]><(U8)=p2; RmtTxPkt(chnl,b,sizeof(U8)*3); - } else + } else { RmtTxPkt(chnl,b,1); + chnl->null_msg_cnt++; + } } public void RmtPutCharSC(LTChnl *chnl,I8 ch,U8 sc) @@ -614,11 +618,15 @@ public void RmtTxFile(LTChnl *chnl,I1 *filename, { U8 size; U1 *buf; + LTDirEntry de; if (!chnl || !chnl->type) return; - buf=ReadFile(filename,&size,NULL,raw); - if (buf) { - RmtTxBuf(chnl,buf,size); - Free(buf); + if (FindFile(filename,&de)) { + buf=ReadFile(filename,&size,NULL,raw); + if (buf) { + RmtTxBuf(chnl,&de.start,LT_DIR_ENTRY_SIZE); + RmtTxBuf(chnl,buf,size); + Free(buf); + } } } @@ -626,12 +634,16 @@ public U8 RmtRxFile(LTChnl *chnl,I1 *filename, BoolU4 raw=TRUE) { U8 size; - U1 *buf; + U1 *buf,*buf1; + LTDirEntry *de; if (!chnl || !chnl->type) return 0; + buf1=RmtRxBuf(chnl); + de=buf1-offset(LTDirEntry.start); if (buf=RmtRxBuf(chnl,&size)) { - WriteFile(filename,buf,size,0,0,raw); + WriteFile(filename,buf,size,de->datetime,de->attr,raw); Free(buf); } + Free(buf1); return size; } @@ -676,23 +688,23 @@ public I1 *RmtRxPutS(LTChnl *chnl,U8 *rqst=NULL) return buf; } -/*************** -public U1 *RmtRqstTxBuf(U8 *size=NULL) +public U1 *RmtRqstTxBuf() { +//Remote must fill-in remote's chnl->tx_buf +//and remote's chnl->tx_size before calling. LTChnl *chnl=Fs->rmt_chnl; if (!chnl || !chnl->type) return NULL; RmtTxPkt(chnl,NULL,0,RMT_RQST_TX_BUF); - return RmtRxBuf(chnl,size); + return RmtRxBuf(chnl); } -public void RmtRqstRxBuf(U1 *buf,U8 size) -{ +public void RmtRqstRxBuf(U1 *src_local_buf,U8 size) +{ //Dst buf address is placed in remote's chnl->rx_buf LTChnl *chnl=Fs->rmt_chnl; if (!chnl || !chnl->type) return; RmtTxPkt(chnl,NULL,0,RMT_RQST_RX_BUF); - RmtTxBuf(chnl,buf,size); + RmtTxBuf(chnl,src_local_buf,size); } -*************/ public void RmtRqstTxFile(I1 *dst_local_filename,I1 *src_remote_filename) { @@ -736,7 +748,8 @@ void TelnetGuestOpen(LTChnl *chnl) U8 i,cmd,p1,p2,rqst; U1 *st,*st2; if (!chnl || !chnl->type) return; - coutln "CTRL-ALT-C to exit"; + Fs->local_chnl=chnl; + coutln "CTRL-ALT-B to break"; try while (TRUE) { if (st2=RmtRxPutS(chnl,&rqst)) { @@ -749,6 +762,12 @@ void TelnetGuestOpen(LTChnl *chnl) 1<tx_buf,chnl->tx_size); break; case RMT_RQST_RX_BUF: - RmtRxBuf(chnl); + chnl->rx_buf=RmtRxBuf(chnl); break; -************/ case RMT_RQST_EXE_LOCAL: st=RmtRxBuf(chnl); ExecuteString(st); @@ -786,11 +804,15 @@ void TelnetGuestOpen(LTChnl *chnl) } catch Fs->catch_except=TRUE; +tel_exit: +/****** for (i=0;i<5;i++) { chnl->PutChar(chnl,RMT_PKT_CLOSE); chnl->PutChar(chnl,RMT_PKT_CLOSE); Sleep(50); } +******/ + Fs->local_chnl=NULL; } ext[EXT_RMT_PUTCHAR]=&RmtTxPutChar; diff --git a/LT/ADAM/DISK10.CPZ b/LT/ADAM/DISK10.CPZ index fb981b6..e842638 100644 --- a/LT/ADAM/DISK10.CPZ +++ b/LT/ADAM/DISK10.CPZ @@ -756,7 +756,7 @@ U8 SizeFlattenLTDirTree(LTDirEntry *tempm) { U8 result=0; while (tempm) { - result+=sizeof(LTDirEntry)-offset(LTDirEntry.start)+1; + result+=LT_DIR_ENTRY_SIZE+1; if (tempm->attr & LT_ATTR_DIR) result+=SizeFlattenLTDirTree(tempm->sub); tempm=tempm->next; @@ -770,7 +770,7 @@ U8 FillFlattenLTDirTree(LTDirEntry *tempm,U1 *dst) while (tempm) { *dst++=1; result++; - i=sizeof(LTDirEntry)-offset(LTDirEntry.start); + i=LT_DIR_ENTRY_SIZE; MemCpy(dst,&tempm->start,i); dst+=i; result+=i; @@ -790,7 +790,7 @@ public U1 *FlattenLTDirTree(LTDirEntry *tempm,U8 *size=NULL) U8 i=SizeFlattenLTDirTree(tempm); U1 *buf=MAlloc(i); FillFlattenLTDirTree(tempm,buf); - if (*size) *size=i; + if (size) *size=i; return buf; } @@ -801,7 +801,7 @@ U1 *DoUnflattenLTDirTree(U1 *src,LTDirEntry **tempm) if (*src++) { tempm1=MAllocZ(sizeof(LTDirEntry)); *tempm=tempm1; - i=sizeof(LTDirEntry)-offset(LTDirEntry.start); + i=LT_DIR_ENTRY_SIZE; MemCpy(&tempm1->start,src,i); src+=i; if (tempm1->attr & LT_ATTR_DIR) @@ -818,4 +818,3 @@ public LTDirEntry *UnflattenLTDirTree(U1 *src) DoUnflattenLTDirTree(src,&tempm); return tempm; } - \ No newline at end of file diff --git a/LT/ADAM/WINDOW.CPZ b/LT/ADAM/WINDOW.CPZ index a93a8f0..04682a8 100644 --- a/LT/ADAM/WINDOW.CPZ +++ b/LT/ADAM/WINDOW.CPZ @@ -413,8 +413,8 @@ void InputFilterTask() I1 *st; TssCmdStruct *tempc,*tempc1; BoolU4 old_filter; - InitUserTask; Preempt(OFF); + InitUserTask; Bts(&Fs->task_flags,TSSf_INPUT_FILTER_TASK); old_filter=Bts(&Fs->parent_tss->task_flags,TSSf_FILTER_INPUT); while (TRUE) { @@ -1040,4 +1040,3 @@ public void PressAKey() PutSysText("ST_PRESS_A_KEY"); GetKey; } - \ No newline at end of file diff --git a/LT/COMPILE/CMP.BIZ b/LT/COMPILE/CMP.BIZ index f0cb138..b90c5fe 100644 Binary files a/LT/COMPILE/CMP.BIZ and b/LT/COMPILE/CMP.BIZ differ diff --git a/LT/DOC/News.TXZ b/LT/DOC/News.TXZ index 9a0c624..699bbc9 100644 --- a/LT/DOC/News.TXZ +++ b/LT/DOC/News.TXZ @@ -1,5 +1,8 @@ $WW,1$ +$IV,1$----07/19/06 21:44:00----$IV,0$ +* Worked on serial port null modem support. You can network two computers and do a telnet type thing. There is now a $LK,"RmtMergeChk","MN:RmtMergeChk"$() routine which will sync two computers. One has to have a window running $LK,"TelnetHostOpen","MN:TelnetHostOpen"$() which you pass a channel from $LK,"CommOpen8N1","MN:CommOpen8N1"$(). + $IV,1$----07/18/06 10:25:00----$IV,0$ * Unmask IRQ's during mouse polling. Might have side-effects. diff --git a/LT/OSMain/ADAMK.HPZ b/LT/OSMain/ADAMK.HPZ index 11ceae3..8e042d1 100644 --- a/LT/OSMain/ADAMK.HPZ +++ b/LT/OSMain/ADAMK.HPZ @@ -1462,6 +1462,10 @@ class LTChnl U8 port; U8 baud; U8 null_msg_jiffy; + U8 null_msg_cnt; + U8 tx_size; + U1 *tx_buf; + U1 *rx_buf; void PutChar(LTChnl *chnl,U1 b); U1 GetChar(LTChnl *chnl); BoolU4 ScanChar(LTChnl *chnl,U1 *ch); @@ -1609,6 +1613,7 @@ public class TssStruct U4 answers_displayed; TssStruct *dbg_tss; TssStruct *popup_tss; + LTChnl *local_chnl; LTChnl *rmt_chnl; U4 user_aux0; U4 user_aux1; @@ -1685,10 +1690,12 @@ public class MachineRegsStruct #define CH_LINE_FEED 0x0A #define CH_FORM_FEED 0x0C #define CH_CR 0x0D -#define CH_ESC 27 +#define CH_ESC 0x1B +#define CH_CTRLB 0x02 +#define CH_CTRLE 0x05 #define CH_CTRLQ 0x11 -#define CH_SHIFT_SPACE 31 -#define CH_SPACE 32 +#define CH_SHIFT_SPACE 0x1F +#define CH_SPACE 0x20 #define SC_CR 0x1C #define SC_SHIFT 0x2A @@ -2328,6 +2335,7 @@ class PasswordStruct #define FUf_PUBLIC 8 #define FUf_MAP 9 #define FUf_JUST_DIRS 10 +#define FUf_JUST_TEXT_FILES 11 class FlagsStruct { diff --git a/LT/OSMain/CMD.CPZ b/LT/OSMain/CMD.CPZ index c9671ad..8f36617 100644 --- a/LT/OSMain/CMD.CPZ +++ b/LT/OSMain/CMD.CPZ @@ -544,4 +544,3 @@ U8 EndTask() *free_gdt_list=my_fs; return tempt->fs; } - \ No newline at end of file diff --git a/LT/OSMain/DISK3.CPZ b/LT/OSMain/DISK3.CPZ index bead55f..1c876c6 100644 --- a/LT/OSMain/DISK3.CPZ +++ b/LT/OSMain/DISK3.CPZ @@ -1499,7 +1499,7 @@ BoolU4 NewLTDirEntry2(LTPartition *p,I1 *cur_dir,LTDirEntry *de,BoolU4 free_old_ ch=ptr->name[0]; if (!ch) { if (written) break; - MemCpy(&ptr->attr,&de->attr,LT_DIR_ENTRY_SIZE); + MemCpy(&ptr->start,&de->start,LT_DIR_ENTRY_SIZE); if ((i+1)*LT_DIR_ENTRY_SIZE+j*BLK_SIZEdata+cur_dir_cluster*p->spc+j,1,FALSE); @@ -1545,7 +1545,7 @@ BoolU4 NewLTDirEntry2(LTPartition *p,I1 *cur_dir,LTDirEntry *de,BoolU4 free_old_ break; } else if (ptr->attr & LT_ATTR_DELETED) { if (!written) { - MemCpy(&ptr->attr,&de->attr,LT_DIR_ENTRY_SIZE); + MemCpy(&ptr->start,&de->start,LT_DIR_ENTRY_SIZE); WBlks(p,buf+j*BLK_SIZE, p->data+cur_dir_cluster*p->spc+j,1,FALSE); written=TRUE; @@ -1556,7 +1556,7 @@ BoolU4 NewLTDirEntry2(LTPartition *p,I1 *cur_dir,LTDirEntry *de,BoolU4 free_old_ FreeLTClusters(p,ptr->cluster, (ptr->size+p->spc*BLK_SIZE-1)/(p->spc*BLK_SIZE),FALSE); if (!written) { - MemCpy(&ptr->attr,&de->attr,LT_DIR_ENTRY_SIZE); + MemCpy(&ptr->start,&de->start,LT_DIR_ENTRY_SIZE); WBlks(p,buf+j*BLK_SIZE, p->data+cur_dir_cluster*p->spc+j,1,FALSE); break; @@ -1742,7 +1742,7 @@ LTDirEntry *FindLTFiles(I1 *wild,U8 *fuf_flags) break; else if (!(ptr->attr & LT_ATTR_DELETED)) { tempm=MAllocZ(sizeof(LTDirEntry)); - MemCpy(&tempm->attr,&ptr->attr,LT_DIR_ENTRY_SIZE); + MemCpy(&tempm->start,&ptr->start,LT_DIR_ENTRY_SIZE); if (Bt(fuf_flags,FUf_RECURSE) && tempm->attr & LT_ATTR_DIR && tempm->name[0]!='.') { tempm->next=result; result=tempm; @@ -1981,4 +1981,3 @@ void DirLT(I1 *wild,BoolU4 full) } } - \ No newline at end of file diff --git a/LT/OSMain/DISK4.CPZ b/LT/OSMain/DISK4.CPZ index 6405864..4eaa0d7 100644 --- a/LT/OSMain/DISK4.CPZ +++ b/LT/OSMain/DISK4.CPZ @@ -1012,3 +1012,4 @@ void WriteCDImage(I1 drive,I1 *in_name) Free(in_name3); } + \ No newline at end of file diff --git a/LT/OSMain/OS.MPZ b/LT/OSMain/OS.MPZ index 503d756..815b638 100644 --- a/LT/OSMain/OS.MPZ +++ b/LT/OSMain/OS.MPZ @@ -1,26 +1,26 @@ $LK "ACSF_IN_STRUCT ","FL:::/LT/OSMain/ADAMK.HPZ,1095"$1 0000 StrConst -$LK "ACS_COMPRESS ","FL:::/LT/OSMain/OSINC.ASZ,283"$0000005C 0002 SysSym Lit -$LK "ACS_CUR_BITS_IN_USE ","FL:::/LT/OSMain/OSINC.ASZ,273"$00000034 0001 SysSym Lit -$LK "ACS_CUR_ENTRY ","FL:::/LT/OSMain/OSINC.ASZ,272"$00000030 0001 SysSym Lit -$LK "ACS_DST_BUF ","FL:::/LT/OSMain/OSINC.ASZ,269"$00000024 0000 SysSym Lit -$LK "ACS_DST_POS ","FL:::/LT/OSMain/OSINC.ASZ,268"$0000001C 0000 SysSym Lit -$LK "ACS_DST_SIZE ","FL:::/LT/OSMain/OSINC.ASZ,267"$00000014 0000 SysSym Lit -$LK "ACS_ENTRY_USED ","FL:::/LT/OSMain/OSINC.ASZ,281"$00000054 0001 SysSym Lit -$LK "ACS_FREE_INDEX ","FL:::/LT/OSMain/OSINC.ASZ,278"$00000048 0002 SysSym Lit -$LK "ACS_FREE_LIMIT ","FL:::/LT/OSMain/OSINC.ASZ,279"$0000004C 0003 SysSym Lit -$LK "ACS_HASH ","FL:::/LT/OSMain/OSINC.ASZ,284"$0000805C 0002 SysSym Lit -$LK "ACS_LAST_CH ","FL:::/LT/OSMain/OSINC.ASZ,282"$00000058 0000 SysSym Lit -$LK "ACS_MIN_BITS ","FL:::/LT/OSMain/OSINC.ASZ,270"$00000028 0000 SysSym Lit -$LK "ACS_MIN_TABLE_ENTRY ","FL:::/LT/OSMain/OSINC.ASZ,271"$0000002C 0001 SysSym Lit -$LK "ACS_NEXT_BITS_IN_USE ","FL:::/LT/OSMain/OSINC.ASZ,275"$0000003C 0002 SysSym Lit -$LK "ACS_NEXT_ENTRY ","FL:::/LT/OSMain/OSINC.ASZ,274"$00000038 0003 SysSym Lit -$LK "ACS_SAVED_BASECODE ","FL:::/LT/OSMain/OSINC.ASZ,280"$00000050 0000 SysSym Lit -$LK "ACS_SRC_BUF ","FL:::/LT/OSMain/OSINC.ASZ,266"$00000010 0000 SysSym Lit -$LK "ACS_SRC_POS ","FL:::/LT/OSMain/OSINC.ASZ,265"$00000008 0000 SysSym Lit -$LK "ACS_SRC_SIZE ","FL:::/LT/OSMain/OSINC.ASZ,264"$00000000 0000 SysSym Lit -$LK "ACS_STACK_BASE ","FL:::/LT/OSMain/OSINC.ASZ,277"$00000044 0000 SysSym Lit -$LK "ACS_STACK_PTR ","FL:::/LT/OSMain/OSINC.ASZ,276"$00000040 0000 SysSym Lit -$LK "ACS_STRUCT_SIZE ","FL:::/LT/OSMain/OSINC.ASZ,285"$0000C05C 0000 SysSym Lit +$LK "ACS_COMPRESS ","FL:::/LT/OSMain/OSINC.ASZ,284"$0000005C 0002 SysSym Lit +$LK "ACS_CUR_BITS_IN_USE ","FL:::/LT/OSMain/OSINC.ASZ,274"$00000034 0001 SysSym Lit +$LK "ACS_CUR_ENTRY ","FL:::/LT/OSMain/OSINC.ASZ,273"$00000030 0001 SysSym Lit +$LK "ACS_DST_BUF ","FL:::/LT/OSMain/OSINC.ASZ,270"$00000024 0000 SysSym Lit +$LK "ACS_DST_POS ","FL:::/LT/OSMain/OSINC.ASZ,269"$0000001C 0000 SysSym Lit +$LK "ACS_DST_SIZE ","FL:::/LT/OSMain/OSINC.ASZ,268"$00000014 0000 SysSym Lit +$LK "ACS_ENTRY_USED ","FL:::/LT/OSMain/OSINC.ASZ,282"$00000054 0001 SysSym Lit +$LK "ACS_FREE_INDEX ","FL:::/LT/OSMain/OSINC.ASZ,279"$00000048 0002 SysSym Lit +$LK "ACS_FREE_LIMIT ","FL:::/LT/OSMain/OSINC.ASZ,280"$0000004C 0003 SysSym Lit +$LK "ACS_HASH ","FL:::/LT/OSMain/OSINC.ASZ,285"$0000805C 0002 SysSym Lit +$LK "ACS_LAST_CH ","FL:::/LT/OSMain/OSINC.ASZ,283"$00000058 0000 SysSym Lit +$LK "ACS_MIN_BITS ","FL:::/LT/OSMain/OSINC.ASZ,271"$00000028 0000 SysSym Lit +$LK "ACS_MIN_TABLE_ENTRY ","FL:::/LT/OSMain/OSINC.ASZ,272"$0000002C 0001 SysSym Lit +$LK "ACS_NEXT_BITS_IN_USE ","FL:::/LT/OSMain/OSINC.ASZ,276"$0000003C 0002 SysSym Lit +$LK "ACS_NEXT_ENTRY ","FL:::/LT/OSMain/OSINC.ASZ,275"$00000038 0003 SysSym Lit +$LK "ACS_SAVED_BASECODE ","FL:::/LT/OSMain/OSINC.ASZ,281"$00000050 0000 SysSym Lit +$LK "ACS_SRC_BUF ","FL:::/LT/OSMain/OSINC.ASZ,267"$00000010 0000 SysSym Lit +$LK "ACS_SRC_POS ","FL:::/LT/OSMain/OSINC.ASZ,266"$00000008 0000 SysSym Lit +$LK "ACS_SRC_SIZE ","FL:::/LT/OSMain/OSINC.ASZ,265"$00000000 0000 SysSym Lit +$LK "ACS_STACK_BASE ","FL:::/LT/OSMain/OSINC.ASZ,278"$00000044 0000 SysSym Lit +$LK "ACS_STACK_PTR ","FL:::/LT/OSMain/OSINC.ASZ,277"$00000040 0000 SysSym Lit +$LK "ACS_STRUCT_SIZE ","FL:::/LT/OSMain/OSINC.ASZ,286"$0000C05C 0000 SysSym Lit $LK "ACTIVATE_NEXT_USER ","FL:::/LT/OSMain/SCHED.ASZ,157"$000044A8 0002 SysSym $LK "ADAM_TSS ","FL:::/LT/OSMain/OSMAIN.ASZ,15"$0000101C 0002 SysSym Export $LK +BI,"AFree ","FL:::/LT/OSMain/MEM.CPZ,7",1$00004B24 001B Funct Export @@ -53,8 +53,8 @@ $LK +BI,"AMAlloc ","FL:::/LT/OSMain/MEM.CPZ,1",2$00004ADD 0009 Funct $LK +BI,"AMAllocIdentical ","FL:::/LT/OSMain/MEM.CPZ,12",3$00004B5A 0004 Funct Export $LK +BI,"AMAllocZ ","FL:::/LT/OSMain/MEM.CPZ,40",4$00004D8E 0008 Funct Export $LK +BI,"ANewString ","FL:::/LT/OSMain/MEM.CPZ,26",5$00004C6C 0007 Funct Export -$LK "ARC_MAX_BITS ","FL:::/LT/OSMain/ADAMK.HPZ,1869"$12 0006 StrConst -$LK "ARC_MAX_TABLE_ENTRY ","FL:::/LT/OSMain/ADAMK.HPZ,1870"$((1<ans 0000 StrConst -$LK "ans0 ","FL:::/LT/OSMain/ADAMK.HPZ,1621"$(Fs->ans 0000 StrConst -$LK "ans1 ","FL:::/LT/OSMain/ADAMK.HPZ,1622"$(Fs->ans 0000 StrConst -$LK "ans2 ","FL:::/LT/OSMain/ADAMK.HPZ,1623"$(Fs->ans 0000 StrConst -$LK "ans3 ","FL:::/LT/OSMain/ADAMK.HPZ,1624"$(Fs->ans 0000 StrConst -$LK "ans4 ","FL:::/LT/OSMain/ADAMK.HPZ,1625"$(Fs->ans 0000 StrConst -$LK "ans5 ","FL:::/LT/OSMain/ADAMK.HPZ,1626"$(Fs->ans 0000 StrConst -$LK "ans6 ","FL:::/LT/OSMain/ADAMK.HPZ,1627"$(Fs->ans 0000 StrConst -$LK "ans7 ","FL:::/LT/OSMain/ADAMK.HPZ,1628"$(Fs->ans 0000 StrConst -$LK "ansd ","FL:::/LT/OSMain/ADAMK.HPZ,1630"$(Fs->dou 0000 StrConst -$LK "ansd0 ","FL:::/LT/OSMain/ADAMK.HPZ,1631"$(Fs->dou 0000 StrConst -$LK "ansd1 ","FL:::/LT/OSMain/ADAMK.HPZ,1632"$(Fs->dou 0000 StrConst -$LK "ansd2 ","FL:::/LT/OSMain/ADAMK.HPZ,1633"$(Fs->dou 0000 StrConst -$LK "ansd3 ","FL:::/LT/OSMain/ADAMK.HPZ,1634"$(Fs->dou 0000 StrConst -$LK "ansd4 ","FL:::/LT/OSMain/ADAMK.HPZ,1635"$(Fs->dou 0000 StrConst -$LK "ansd5 ","FL:::/LT/OSMain/ADAMK.HPZ,1636"$(Fs->dou 0000 StrConst -$LK "ansd6 ","FL:::/LT/OSMain/ADAMK.HPZ,1637"$(Fs->dou 0000 StrConst -$LK "ansd7 ","FL:::/LT/OSMain/ADAMK.HPZ,1638"$(Fs->dou 0000 StrConst +$LK "ans ","FL:::/LT/OSMain/ADAMK.HPZ,1625"$(Fs->ans 0000 StrConst +$LK "ans0 ","FL:::/LT/OSMain/ADAMK.HPZ,1626"$(Fs->ans 0000 StrConst +$LK "ans1 ","FL:::/LT/OSMain/ADAMK.HPZ,1627"$(Fs->ans 0000 StrConst +$LK "ans2 ","FL:::/LT/OSMain/ADAMK.HPZ,1628"$(Fs->ans 0000 StrConst +$LK "ans3 ","FL:::/LT/OSMain/ADAMK.HPZ,1629"$(Fs->ans 0000 StrConst +$LK "ans4 ","FL:::/LT/OSMain/ADAMK.HPZ,1630"$(Fs->ans 0000 StrConst +$LK "ans5 ","FL:::/LT/OSMain/ADAMK.HPZ,1631"$(Fs->ans 0000 StrConst +$LK "ans6 ","FL:::/LT/OSMain/ADAMK.HPZ,1632"$(Fs->ans 0000 StrConst +$LK "ans7 ","FL:::/LT/OSMain/ADAMK.HPZ,1633"$(Fs->ans 0000 StrConst +$LK "ansd ","FL:::/LT/OSMain/ADAMK.HPZ,1635"$(Fs->dou 0000 StrConst +$LK "ansd0 ","FL:::/LT/OSMain/ADAMK.HPZ,1636"$(Fs->dou 0000 StrConst +$LK "ansd1 ","FL:::/LT/OSMain/ADAMK.HPZ,1637"$(Fs->dou 0000 StrConst +$LK "ansd2 ","FL:::/LT/OSMain/ADAMK.HPZ,1638"$(Fs->dou 0000 StrConst +$LK "ansd3 ","FL:::/LT/OSMain/ADAMK.HPZ,1639"$(Fs->dou 0000 StrConst +$LK "ansd4 ","FL:::/LT/OSMain/ADAMK.HPZ,1640"$(Fs->dou 0000 StrConst +$LK "ansd5 ","FL:::/LT/OSMain/ADAMK.HPZ,1641"$(Fs->dou 0000 StrConst +$LK "ansd6 ","FL:::/LT/OSMain/ADAMK.HPZ,1642"$(Fs->dou 0000 StrConst +$LK "ansd7 ","FL:::/LT/OSMain/ADAMK.HPZ,1643"$(Fs->dou 0000 StrConst $LK "boot_blkdev ","FL:::/LT/OSMain/START.CPZ,67"$00004A30 0004 GlbVar Export $LK "compiled_lines ","FL:::/LT/OSMain/START.CPZ,66"$00004A24 0001 GlbVar Export $LK "dc_col ","FL:::/LT/OSMain/START.CPZ,62"$000049F8 0009 GlbVar Export @@ -2312,58 +2316,52 @@ $LK "textbase ","FL:::/LT/OSMain/ADAMK2.HPZ,52"$00001CF0 0004 GlbVar E $LK +BI,"throw ","FL:::/LT/OSMain/MISC.CPZ,113",326$00006493 001C Funct Export $LK "vga_image ","FL:::/LT/OSMain/START.CPZ,76"$00004AD5 0001 GlbVar Export $LK "wordstat_mask ","FL:::/LT/OSMain/START.CPZ,73"$00004AC9 0001 GlbVar Export - $K4KMK ÝJíJ KK$ ZKqKŽK¬KØK$)/ŽMžM¼MçMóM$!lLƒL¨LÆLòLHìûµLÅLÛLõLM(äë0L@LmLƒL›L¨LH%4z`Š`š`Ç`à`aa*a>aQadawaŠa—a `Ñæ"Y9YWY|Y¯YÖYçYôYZ]Z„Z¾ZüZ0[B[y[å[ø[ -œ¬ÐV.VYVtV|VŠV—V¤V´VáVúVW0WDWcWxW—W¬W¿WÔWóWüWTXtX¥XÁXÕXçXYY H%#N3NCNpN‰N«N¿NÓNñNOO,O?OLO H&5YOiO–OªO¾OÑOÖOîOPP,P?PLP H$Q_a_q_ž_·_Ù_í_``'`:`M```m`hg~�RŸR³RÀRÈRÑRÞRS*S…S–S§S¬S¹SÔSæSùSTØ5h¤a»aÐaæaÿa!bNbgb{bšb¯bÎbãböbcc(cUcnc�c¤c¸c×cìc d d3d`dud›dªdÕdäd3eSe„e�e¬eÀeÒe(üM.MMMVM“M¯M4¡«RUiU„U‘U®UÂUÜUúU V� +TBTSTyTˆT¢TÇTãT÷TU&UDUtÃÝøJKK2KLKnK’K×Khýˆ]Ÿ]º]Ç]ä]ø] ^/^>^i^x^’^·^Ó^ç^__4_C_$)o’æ©æ°æÒæÝæÿæç!ç2çMçcçzç´çÃçåçÿçè/èMèfèyè’èžè¿èéé=éOé`é}é…éŸé¿éÛéâéüéê2êRêeêwê©êÂêÖêîêóê ë#ë6ëNëwë‹ëŸë³ëÇëÚëîëûë€p�#ì:ì?ì\ìmìƒì“ìÁìÇìÒìúìíIíií„í˜íÝíðíî=îOîbîvîŠî—îHBQRi�¬µºã÷ -@^kÓê<Pt†™¬8R]&=`t˜ª½LÚêùàáSápá áÕáâ$â7â<âAâdâqâ܌Ŕܔ•/•U•|•••§•¹•˕ە÷•P––Å–á–æ–,—H—M—\—|—¤—¸—Ì—à—ó—ø— ˜ ˜4˜G˜L˜]˜q˜‡˜•˜¸˜Θû˜A™g™Ž™§™¹™Ë™Ý™í™ššfš§šæšôš››<›V›y›•›°›è› -œ"œFœSœŠœ™œµœöœ�d�n�€�”�¨�½�Ð�Õ�ü�ž1žEžYžmž€ž…ž­žt�çÛžëžðžùž ŸŸAŸFŸ�Ÿ Ÿ»ŸÀŸéŸ  . ? T e Æ × ê  -¡¡6¡;¡L¡g¡l¡{¢®¢Ç¢Ü¢£2£H£U£u£Œ£ £¶£Ï£4¤c¤v¤™¤«¤Ф줥¥)¥E¥Y¥m¥¥›¥¯¥Ã¥Õ¥ð¥¦¦<¦Q¦^¦s¦‰¦Ò¦@)6!^8^L^`^q^†^—^¸^Ñ^â^ð^˜7Zþ^_0_I_V_†_–_œ_´_Ä_ß_ø_ ``/`R`c`„`¨`º`É`ã`ÿ`a/a4a @kx ™7™K™L™`™t™‹™ž™²™Å™Ï™ @]jf˜}˜‘˜¢˜£˜·˜Î˜á˜õ˜™™!4¹ÃìÚüÚÛ ÛÛ+Û9ÛhÛ"¬�¸Ž×—׍׾ׯ×Ù×ØØØ4ØNØlØÊØÛØúØÙÙ*ÙIÙyÙŸÙãÙýÙ*ÚLÚrÚwÚ…Ú“Ú˜Ú°ÚÓÚäÚ#<%1j-j:jHjVjkj—jÃj×jk$Ä3ï'HV�›¥òÿ4X\tž£¬Êäöü%Qcrˆ�¢Å%ð<uLcyš£Îó:V[ƒ¦ºÇÜöÿL Q y “ ¿ Ù ñ  ' b ™ º Ï á ò  !%!Q!d!t!�!µ!Ú!÷!"3"&(4;Óã%?'( h`x`€`¨`Ñ`(Èîh}}�}¸} ~x~†~£~§~¹~Õ~ý~+e¦ìø€(€G€X€w€�€‹€©€ã€(�v�Å�Ï�Ô�‚b‚l‚Œ‚Ê‚)8v�› ² Ö ò  -( -; -*0¯¸q ˆ   º Í +$¨®ó  - - P c ,4oy¢»«»¿»ì»2¼`¼ˆ¼-0@Ḯքæ„þ„… …8…L….„çm�v�£�Ñ�è� Ž-ŽRŽrނދލ޻ŽÏŽÔŽñŽ��&�+�>�R�j�/ÒÖp{y{�{0$�� �$�1�1œa…o&o:o¢oÊoØoåoýop5pQpep‘p·pûpqq2qKqhq…q¨qÉqÓqëqrr2$$؂Ⴀƒƒ*ƒ3Y]H†Q†x†4$Š�Òˆâˆèˆ÷ˆ‰5(‘˜‰ ‰&‰+‰:‰J‰6<)u© À Ò æ  9 L z  † š È Ó ð  6 B G d « à Û ñ *1Kj…Œ¦ÅÚù -@r‹Ÿ¤¸ßö"<h~¥¼ç&@Rn™¬ÀÓâ7DBP_ÑoчѢѧÑÞÑìÑ9ÒFÒ8D3AKÐ[ÐuÐ�ЕÐÌÐÚÐ'Ñ4Ñ90Úã��'�Y�€���­�:<Žš«îÂîôî9ïKï\ï|ï’ï¥ï¹ïÆï;<¶Âêñòòò4òPòhò°òÞòåò -óó<,-ä=ä[äÆäääå2å= ëðâ�âã6ã>H2A kkek’k®kl-lvl£l¿l&m>m?`{�ÙWéW X9X‰XçX Y7YŽYóYZNZ‡Z·ZÊZÐZóZ [@ –›Ü­ì­ù­#®Ad!7Dþ[þƒþ¡þºþØþñþÿ.ÿ3ÿPÿmÿŒÿ«ÿÑÿçÿBˆ•´ø#$H$_$u$†$±$Ý$ô$%%,%Q%i%–%Ë%á%æ% &;&M&o&‡&�&±&¾&Ë&C0ˆ‘¿©È©Ñ©î©ó©ªªªDôÒ µDÌDE E7EKE]EmE•E·EÌEïEF Fë\ëwë}ë†ëîë8ì[ì`ì¡ìÀì@íÈíÝíîî)îBîVîyî†î[(7>tN‹N’N›N®N³N\LÙé�˜œ¹Ôíô )]´’¼ßö -$;GNSw•ºØë÷ -Lož£×êý"/5?P^€‚Ÿêtótuu-uLubuvu•u´uÌuùuvCvVv‰v·vÏvìvÿvSw_To�NsWsƒs°sÌsús t@tnt†t£t¶tÞt`5Eaˆ6ÆNÝNôNOO+OLOcOpO‡O§O´OüO P$P.PoP†P‹PÓPyQ©QÒQæQüQ)RbŒ(X o € œ ¤ µ à Ú ì  - - -$ -1 -? -Q -r -� -Å -à -÷ -& ` y Œ c, •å¥å¶åÈåÙåìåd(?åVågåmåzå‡åe<ù‰ã™ãžã«ã¼ãÒãää äfeiü†‡,‡gâ! ®"®-®J®g®ƒ®•®–®´®Ç®Ú®à®¯¯)¯>¯G¯Z¯u¯‰¯�¯º¯Ã¯Ö¯é¯÷¯° + $K4KMK ÝJíJ KK$ ZKqKŽK¬KØK$)/ŽMžM¼MçMóM$!lLƒL¨LÆLòLHìû·LÇLÝL÷LM(äë2LBLoL…L�LªLH%4|`Œ`œ`É`â`aa,a@aSafayaŒa™a `Ñæ$Y;YYY~Y±YØYéYöYZ_Z†ZÀZþZ2[D[{[ç[ú[ +œ¬ÐV0V[VvV~VŒV™V¦V¶VãVüVW2WFWeWzW™W®WÁWÖWõWþWVXvX§XÃX×XéXYY H%%N5NENrN‹N­NÁNÕNóNOO.OAONO H&5[OkO˜O¬OÀOÓOØOðOPP.PAPNP H$S_c_s_ _¹_Û_ï_``)`<`O`b`o`hg~‘R¡RµRÂRÊRÓRàRS,S‡S˜S©S®S»SÖSèSûS TØ5h¦a½aÒaèab#bPbib}bœb±bÐbåbøbcc*cWcpc’c¦cºcÙcîc d"d5dbdwd�d¬d×dæd5eUe†e’e®eÂeÔe(ü M0MOMXM•M±M4¡«TUkU†U“U°UÄUÞUüU V� -TDTUT{TŠT¤TÉTåTùTU(UFUtÃÝúJ +KK4KNKpK”KÙKhýŠ]¡]¼]É]æ]ú] ^1^@^k^z^”^¹^Õ^é^__6_E_$)o’æ©æ°æÒæÝæÿæç!ç2çMçcçzç´çÃçåçÿçè/èMèfèyè’èžè¿èéé=éOé`é}é…éŸé¿éÛéâéüéê2êRêeêwê©êÂêÖêîêóê ë#ë6ëNëwë‹ëŸë³ëÇëÚëîëûë€p�#ì:ì?ì\ìmìƒì“ìÁìÇìÒìúìíIíií„í˜íÝíðíî=îOîbîvîŠî—îHBQTk�®·¼åù @^kÕì>Rvˆ›®8R](?bvš¬¿LÚêùàáSápá áÕáâ$â7â<âAâdâqâ܌ǔޔ𔕕1•W•~•—•©•»•͕ݕù•R–�–Ç–ã–è–.—J—O—^—~—¦—º—Ηâ—õ—ú—˜"˜6˜I˜N˜_˜s˜‰˜—˜º˜Иý˜C™i™�™©™»™Í™ß™ï™ššhš©šèšöš››>›X›{›—›²›ê› œ$œHœUœŒœ›œ·œøœ�f�p�‚�–�ª�¿�Ò�×�þ�ž3žGž[žož‚ž‡ž¯žt�çÝžížòžûž ŸŸCŸHŸ‘Ÿ¢Ÿ½ŸŸëŸ  0 A V g È Ù ì  ¡¡8¡=¡N¡i¡n¡}¢°¢É¢Þ¢£4£J£W£w£Ž£¢£¸£Ñ£6¤e¤x¤›¤­¤Ò¤î¤¥¥+¥G¥[¥o¥�¥�¥±¥Å¥×¥ò¥¦¦>¦S¦`¦u¦‹¦Ô¦@)6#^:^N^b^s^ˆ^™^º^Ó^ä^ò^˜7Z__2_K_X_ˆ_˜_ž_¶_Æ_á_ú_` `1`T`e`†`ª`¼`Ë`å`aa1a6a @kx ™7™K™L™`™t™‹™ž™²™Å™Ï™ @]jf˜}˜‘˜¢˜£˜·˜Î˜á˜õ˜™™!4¹ÃîÚþÚÛ Û Û-Û;ÛjÛ"¬�¸�ית×À×È×Û×ØØØ6ØPØnØÌØÝØüØÙÙ,ÙKÙ{Ù¡ÙåÙÿÙ,ÚNÚtÚyÚ‡Ú•ÚšÚ²ÚÕÚæÚ#<%1 j/j�R�j�/ÒÖp{y{�{0$�� �$�1�1œa… o(oj€§¾é(BTp›®ÂÕä7DBPaÑqщѤѩÑàÑîÑ;ÒHÒ8D3AMÐ]ÐwВЗÐÎÐÜÐ)Ñ6Ñ90Úã��)�[�‚�’�¯�:<Žš«îÂîôî9ïKï\ï|ï’ï¥ï¹ïÆï;<¶Âêñòòò4òPòhò°òÞòåò +óó<,-ä=ä[äÆäääå2å= ëðâ�âã6ã>H2Ak kgk”k°kl/lxl¥lÁl(m@m?`{�ÙWéW X9X‰XçX Y7YŽYóYZNZ‡Z·ZÊZÐZóZ [@ –›Þ­î­û­%®Ad!7Fþ]þ…þ£þ¼þÚþóþÿ0ÿ5ÿRÿoÿŽÿ­ÿÓÿéÿ Bˆ•´ú#$J$a$w$ˆ$³$ß$ö$%%.%S%k%˜%Í%ã%è%&=&O&q&‰&Ÿ&³&À&Í&C0ˆ‘¿©È©Ñ©î©ó©ªªªDôÒ ·DÎDE"E9EME_EoE—E¹EÎEñEF!F>FuFŠF¯FÕFáF/GGGXGoG†G«G°GÈGàGH-HOHlH–HªHÔHîH IICIaI‡I»IÈIÕIéIøIJJ1JEJSJEX¾ÑàB÷BýBC>CaC‡C“CàCD.D=DSDiDwDFPK\M—d—x—y—“—¬——ɗۗí—ô—˜<˜F˜X˜G, (ùå æ6æOæaæyæ…æH(sz|W…WŠW©WÈWÍWI8[fFVVVwV€VŠV½VÔVJ8gráVñVWW%WXWoWKHKZ\SeS‰SµSTcT‡T³T +UoU€U£UÙU:VLtø*AFW\šËIŠ·ÕE °½×ô#Mƒ´Œ´¨´N8½Èv‹†‹—‹˜‹±‹Ì‹å‹ì‹û‹O8ÉÔŒ Œ0Œ1ŒJŒdŒ}Œ„Œ“ŒP<Õᜌ¬Œ½Œ¾Œ×ŒíŒ� ��Q8±¼ŊΊߊàŠùŠ:‹S‹Z‹f‹R8¥°ŠŠ(Š)ŠBŠƒŠœŠ£Š¯ŠS8™¤S‰c‰t‰u‰Ž‰Ì‰å‰ì‰û‰T4›¥Øïïï4ðFð[ðqð„ð‘ðU0êó;Rmt‹¿ÌV$�“¶#Æ#Ú#í#W( §Yóiópó„ó—óX8¨³¤ó»óÂóÊóÎóáóîóóóøóYXv‰ +!2C[c}‘–´Ëú"5ZÌ9i ééOéwéŸé­éåéê(êTê¶êÊêáêë&ë@ë^ëyëëˆëðë:ì]ìbì£ìÂìBíÊíßíîî+îDîXî{îˆî[(7>tN‹N’N›N®N³N\LÙ郚ž»Öïö +]´’¼áø &=IPUy—¼Úíù Nq ¥Ùìÿ $17AR^€‚Ÿêtótuu-uLubuvu•u´uÌuùuvCvVv‰v·vÏvìvÿvSw_To�NsWsƒs°sÌsús t@tnt†t£t¶tÞt`7Gaˆ6ÆNÝNôNOO+OLOcOpO‡O§O´OüO P$P.PoP†P‹PÓPyQ©QÒQæQüQ)RbŒ(Z q ‚ ž ¦ · Å Ü î  + + + +& +3 +A +S +t +� +Ç +â +ù +( b { Ž c, •å¥å¶åÈåÙåìåd(?åVågåmåzå‡åe<ù‰ã™ãžã«ã¼ãÒãää äfeiü†‡,‡gâ! ®"®-®J®g®ƒ®•®–®´®Ç®Ú®à®¯¯)¯>¯G¯Z¯u¯‰¯�¯º¯Ã¯Ö¯é¯÷¯° °,°5°H°[°i°v°|°Š°ž°µ°É°Ò°æ°ý°±%±*±B±T±x±“±­±h<4@¥b¼bÐbábêbccc0ci$a -a'a,a5a:ajtµÏÙ&ð&ö& '?'h'~'­'²'Ç'ä'û' (#(4(H(U(b(k(ˆ(kIMX…a…ˆ…l@Ž›_'v'|'­' (6(\(d(�(�(²(mhí?.V.b.o.Œ.².¾.Ò.ñ./+/T/a/z/ˆ/ /­/n`9Nå5õ5616J6i6‚6•6Ò6Ü6á6ó6757Q7omq}8�8«8ph‰ Ù9é9ö9::@:Q:m:…:‘:§:´:Ì:Ý:ñ:;; ;3;@;q¸Ûö? @ @.@;@S@n@@¢@¯@á@ö@AA A$A5AMAZAwA�AèAB:BvB‹BïBCCYCsC�C­CÜCðCrÈ«ÚÖ;æ;</<<<o<Œ<œ<¬<¾<Î<à<=7=Y=k==›=«=»=Ì=è=ý=>#>6>P>a>u>‚>š>Ê>.?;?@?O?]?¤?³?À?s0¡ªM;];j;z;Š;ž;¼;É;t(el8!828N8c8p8u _dÍ7Ý7ê78vÄ8¦XHoH�H�H�HµHÍHÚH÷HIhI’IºIìIJJ8JUJ„J˜JwHO^^7n77€7¢7§7³7À7xÌ7þCD=DXD‹D¨DâDòDEE$E6E^E�E¯EÁEÕEñEFF%FAFVFkF€F“F­F¾FÒFßFýF'G‹G˜G�G¬G»GHH Hy®ìŽ)¥)³)Ò)å)ö)**.*F*Y*t*„*˜*¶*Ä*Ø*ù*+4+h+ƒ+¯+Ê+÷+ ,,T,a,y,�,£,É,Ö,ú,--0-L-c-h-•-«-°-ò-ÿ- ..'.5.zÜHâ0ù0 -1H1ƒ1’1±1Ô1ê1232P2—2´2¹2á2ö2 3%3-3c3�3ž3Ï3I4¢4¼4Ù4ö45C55™5¶5Ó5é56V6p6�6¢6¼6Ë6{D»/Ë/è/0'0G0\0‡0Œ0È0Ù0|(œ£¼(Ì(Ï(ì(þ(}0¤­))/)V)k)…)~lI¡Õ6ì6ò6'7a7p7�7²7È7Ü7î7 8?8\8¢8¿8Ä8Õ899,9J9^9†9›9°9Ê9Û9ó9 :<:s:€:Á:Æ:à:; ;A;»;<)<N<k<ˆ<™<±<Þ<ì<)=E=h=¥=¹=Þ=û=>)>A>n>|>¹>Ï>ð>-?A?f?ƒ?ª?Ý?@7@L@f@u@,Øàš­ª­¯­À­Ó­ã­€H¦µ¡ð¸ðÎðôðññ\ñhñŽñ®ñÊñÜñ�8^4u4{4ˆ4Œ4¤4É4á4ð4ÿ4‚\2 5$5*575;5S5x5�5Ÿ5®5ƒdÞôL´c´Š´­´´×´ú´ µ)µHµfµžµ˵êµþµ¶*¶„�>_ˆ Ÿ ° Ì Ø !!)!f!€!�!Ì!Ú!"-"X"o"~"»"Õ"ä"!#&#3#=#q#€#…<½Éê&@NUu‚�†ð4m» »0»>»S»n»s»›»©»á»¼i¼Ô¼½O½c½h½y½޽½½νæ½ó½ÿ½¾¾4¾B¾`¾�¾’¾ä¾<¿K¿a¿¿˜¿�¿±¿¶¿οñ¿ò¿ÿ¿‡Üì  ù$ù8ùcùtù¬ùÙù2ú�úÚú -ûû#û)û>ûmû…û‘û•ûªû¯ûÃûëûOü^ünüŠü üÂüÚüÿücý„ý“ý£ý¿ýÑýãýþ þ%þ3þˆüö28¶A¶R¶c¶‹¶™¶°¶˶å¶ú¶ÿ¶'·5·m·™·°·Ü·>¸R¸i¸—¸®¸ȸ渹¹¹<¹l¹‡¹¯¹ʹṺYºkºpº…ºŠºžº£º»ºÞºߺ캉è´ëôô/ô\ômô{ô³ôßôëôõgõ{õ‡õ¬õ¾õÓõÙõö ö*ö<öBöKönö‚ö³ö÷&÷6÷R÷f÷|÷ž÷¶÷Ä÷é÷Mønø}ø�ø©ø»øÁøÚøîøüøŠâæ)�9�`�‹Œ$D¡�¸�É�Ò�é�õ�"‘C‘O‘g‘w‘”‘®‘בï‘’ ’/’4’9’V’r’€’Œ4:Df¸o¸ƒ¸š¸±¸É¸è¸þ¸�8U`ºº/ºFº]ºuº�º¬ºÂºŽ\L`ÂNÒNäNíN OOO$O5O>OWOgO~OœO¬O�4ö@_{h{Š{¦{Î{Ü{ï{|"|:|Z|w|—|´|Ô|ñ|}.}N}k}„} }Ä}ò}9~S~j~ƒ~ˆ~¨~Ì~ù~)=bœÌ€€5€L€p€¢€Æ€à€õ€ �'�A�e��Ü�ð�‚'‚<‚M‚�Àb�ÍÓÖÓçÓõÓ Ô Ô;Ô@ÔhÔvÔƒÔ›ÔµÔöÔ0ÕRÕdÕšÕ¼ÕÙÕëÕÿÕÖ+ÖHÖeÖˆÖ¦Ö¼ÖðÖ -××7×<×T×w×xבXM` nn´“$Ÿ¥¿%¿4¿H¿”œzž”¼«¼¿¼Ä¼ë¼ì¼ü¼½-½F½V½o½½˜½¨½Á½Ñ½ê½ú½¾#¾<¾F¾V¾x¾¢¾ß¾÷¾¿•%)û2–˜Áä\s¥¸ÓîþVd…‰™Ÿ[y�½Éí"(äFR|�—@Öí*SXr�˜d5K‹¥¢¥¶¥·¥Ô¥Ý¥ô¥)¦6¦9¦S¦a¦n¦x¦‡¦Œ¦›¦©¦™ EjŽ’¥’¹’ø’“*“?“R“{“¯“Ô“ë“ ” ”$”2”G”^”n”s”Š”ž”³”ÔȔ攕$•H•šˆï�lŸl³lÆlÛlmm*m?mPmem�m¶mßmäm -n,n1nEnWnvn�nªnÇnÓn›(CJS"S%S=SOSœ87B7RGRqR°RµRôRùR�ÐV‡j§�§•§–§³§¼§Ó§æ§¨¨¨?¨O¨e¨f¨‚¨Œ¨ž¨µ¨Ñ¨ã¨ü¨©©©*©7©<©A©W©e©r©w©|©Š©—©œ©¢©±©ž<’ž&ª=ªTª]ªsªvªŽª©ªÉªÖªŸÌ6fYPiP€P›P¨P±PÏPÜP÷P$Q5QBQaQ{Q¨Q¼QÉQäQøQR -RR.RLRQRsR‚R `çü\\,\9\Q\i\v\“\Ÿ\Ë\ò\ ])]F]u]z]¡pi‚àe÷eff8fNf[fhf€f˜f¥fÂfÎf8g_gyg–g³gâgýg -h¢P¼MÌMêMóMN£ ÞãäKôKLL#L¤4³½WÀgÀ€À™À¼ÀÝÀöÀÁ(ÁAÁ¥4ùƒ\¨l¨‚¨•¨³¨ƨڨ©\©r©‘©°©Ï©í©ª`ªL¬Q¬¦ A�U‚l‚‚«‚Ƃقô‚ƒNƒbƒyƒ~ƒŒƒȃåƒ÷ƒ „„3„8„L„^„s„ˆ„™„ž„²„Æ„Û„ð„……#…P…T…l…�…†…±…µ…Í…†,†@†E†W†p†�†¢†±†À†§@‘ž[![>[][|[Ë[\h\…\¢\ð\õ\¨”1ìnõn o"o8oeo{o‘o–o¬oÂoÇoúopZpwp©pÆpøpq[q«q¿qÄqÖqèq2r©ˆš¹tt0tRtztˆtŸt¶tÐtÞt'u7uFu]u}u•u³uÌuïu1vEvJvbv…v†vªTÜî·kÀkÐkâkçk÷k lll0l5lElWl\lll~lƒl«$ÕÛèjñjkk&k¬X†™r$rLrZrsr‡r»ràr;scs‹s³sÅsÊsâstt­<©µr«{«€«�«¢«Á«à«ý«¬¬)¬®¤(V\_\u\‹\¤\»\Î\ä\] ]5]Q]d]w]Š]ë]¯0Ÿ¨ùª«« «+«J«a«f«°$ÕÛikrk‚k—k«k±ìz²Ý™ô™š0šBšTšfšyšŒšŸš²šÆš×šìšþš›$›.›A›T›^›q›„›Ž›¡›´›¾›Ñ›ä›î›œœœ1œDœ^œoœ“œªœ½œÒœâœòœ��$�6�H�Z�Œ�¡�¯�²$¶¼:¬C¬`¬e¬³\ÅÙ‡���ª�¸�à�î�ŽŽ/ŽDŽbކޡ޹޾ŽÖŽùŽúŽ´ 38¼5Å5Ù5µ¹½¦J¯JÃJ¶¾ÂÏJØJìJ·DÊØžµÆãü0=P_n¸…‰¥ˆ®ˆÊˆ¹y}ˆ"ˆ>ˆº8¨³h#hNhkhwh‹h•h­h»8œ§gˆg«gÄgÜgægh¼8�›ÍfÖfífg gAg\gsg½¨n2mBmkm‡m›m´mÎm×mn*nBn[n…nžn£nÍnænýnoo7oRoWonoŠo�o¨oÃoÈoßoûopp4p9pFpUpnpŠpšpŸp¬p»pØpôpq qq%qBq^qnqsq­qÄqØqÝqôqr r$r8r=rTrhrmr„r˜r�r¹rÞrss-sAs¾XÁÔ¢i«iÀiÒiïij*j>jPj_jzj¦j¼jÆjÜj¿<´À¹hÂhÖhçhi;idieixiŒi–iÀMQ”…�…Ä…ÁFaVakaÂd_u„.›.¶.Ä.Ó.á.ÿ.//)/6/d/t/—/¤/»/Ï/Ã\J^c-z-•-§-µ-Ä-Ò-Ø-î-2.A.N.T.h.v.Ä %*V+_+„+³+Å”$¤(´(Ï(ã(÷()!)4)C)L)k)�)—)Ì)ü)%*D*T*d*x*®*Ù*++"+I+ÆP8Ie,|,—,¥,´,¾,Ý,ï,--!-1-F-U-Çhv�Ý/ô/00)080F0`0q0ˆ0•0¦0º0Ê0Ú0ù0ÿ01!1È<+7¿+Ï+ê+ø+,,,3,I,X,É<¦²T¿d¿{¿œ¿¹¿Ö¿ó¿À-ÀJÀÊ]a„†�†´†ËHET -¹¹'¹>¹U¹i¹Š¹¡¹³¹Ë¹ê¹ºÌ@anκ׺뺻»1»I»[»z»–»Íð[ÔPagaxaœaÊaÖaýab2bFbgbˆb¥bòbc)c=cYc†c–cœc´cÄcßcøcd=dTdjdŒd¼dÜdùde*eRee’e¢eÀeÈeîeòe-f2fRfrf’f¸fÉfÜfýf-gVgggzgœgÍgÒgågh8hEhph‚h®hÀhêh -ii'i,iDiti„iŠiªi½iÕiöi#j3j9jQjaj|j‘j«jÇjâjþjk+k9kÎ`œ±ëÉÊÊ:ÊNÊ`ÊoʃʤʪʵÊÁÊÙÊËLËaËnËÏ@Ž›ÉÉ4ÉHÉYÉgÉ{ɜɽÉÐÉÝÉÐhY>óGóaó{ó•ó¯óÉóãóýóô1ôKôeôô™ô³ôÍôçôõõ5õOõiõƒõ�õ·õÑõëõö ö9öSömö‡ö¡ö»öÕöïö ÷#÷=÷W÷q÷Ñ<6hMhSh`hyh‹h”h¥h¼hÑhÒ$æKýKL2L^LÓ$06NN.NYNfNÔ08AÔë$7DÕ@O\wَ٤ٹÙÒÙìÙÿÙÚÚ-Ú:ÚÖ ïÿ5 O ×ô"\.ÃEÃoÀâåÿÃÏÃçÃüÃÄÄ$ÄuÄ�Ä…ÄÃÄÏÄÓÄ ÅÅ(Å+ÅAÅYÅkÅpňŋšŦÅÀÅÅÅØÅôÅùÅ&ÆLÆSÆ[ÆdÆwƞƺÆÌÆØ �†{È’ÈÆÈÙÜ A—J®J¿JãJõJKK+K@KEKJKgK”K·KâKLLOLdLyL‘L©LÁLÖLÜLñLMM0MHM\MpM…M¯MÃM×MéMöMNÚ€³Ðûxyy,y>y]ysy‡y¦yÅyÝy -z&zTzgzšzÈzàzýz{d{ÛT ²_whw”wÁwÝw xxQxx—x´xÇxïxÜdrˆ¸8È8Ö8à8í8û8"939Y9r9‰9¡9µ9Â9Ç9Ì9Ý0LU³¦¼¦Ý¦!§^§Þ˜n‘À#À5ÀwÀ…À­À»ÀÚÀ÷ÀÁ%Á<ÁKÁ†Á Á¯ÁêÁ Â.Âw‹Â�¨ÂËÂàÂôÂÃߤ’¸&Ã/ÃAÃÑùÃÇÃæÃÄ"Ä:ÄWÄhÄÄŽÄÉÄãÄòÄ-ÅCÅcÅqźÅÎÅÓÅëÅÆ#Æ7ÆGÆàdvŒA"Q"h"q"“"¤"©"¿"Ö"##*#V#j#|#‰#›#§#á¼JÚ–ñ–—2—?—â$17�è¦è´èëèùèã¼Ä0uÛ~Û¼ÛÐÛþÛ&ÜEÜS܋ܺÜÑÜýÜb݄ݵÝÒÝæÝÞ%Þ7ÞHÞƒÞÆÞÒÞUßZߥßÖß'à\à¼àÐàáàøàá8áUá¯á×áùá(âEâtâˆâ¥âªâÎâòâã>ã—ãµãÖã÷ã"ä6äMädäiä•ä¦äáädåyå~å§å¬åµå=æNæ‰æ ççç5ç¸çÍçòçèè2è7èOèrèèäÔмCZl€—§ËÝ %U[uŠ ´Ââ2f‡�¨½× 9Mq€”¨±¾ÄÑå$"(MM]\]z]”]�]¢]¨]¼]Á]Þ]^^ ^,^s^~^–^Á^ó0ˆ‘H_pž±ôdq‡ÇÞïþ GLkpx|«°Ïâõ 27¤­ÇöX¾ÑÏ^æ^÷^_'_<_O_Y_z_�_³_½_Õ_á_ ``7`÷ ˆ�ÐÈàÈ÷Èølmá„£Æ×èúY}¯Ü 5btŒÈù|4e£|£Š£ž£¯£Ä£Ü£ô£ ¤¤1¤B¤Œ¤¦¤Ì¤Í¤â¤¥¥2¥H¥a¥f¥p¥}¥ú\Ýñ - ! 5 F T e w ‰ ¡ » ¼ à ö ¡¡¡+¡û˜ó9¡P¡d¡¡‘¡Ÿ¡°¡Â¡Ú¡õ¡¢1¢>¢C¢t¢�¢£¢¤¢È¢Þ¢÷¢ü¢£ £££-£:£ü( 33393F3 3¯3ý( -½3Ô3Ú3ç3A4P4þŒ‚¢ô†ý†‡)‡7‡_‡m‡�‡ˆ:ˆ^ˆyˆ ˆ±ˆňâˆúˆ=‰^‰r‰†‰˜‰³‰Û‰à‰ø‰Š)Šÿpާ/1F1a1o1~1Œ1�1¸1Ä1õ122.282N22‹2ß2ð2ú2xœ·0®9®G®c®‹®™®ó®b¯¯„¯Ô¯3°`°�°¥°ª°ŰÒ°å°ê°±%±6±$×Ý©{²{Ç{W|k|(Þåw|€|”|§|À|Ð|,}…FˆOˆXˆjˆ|ˆ�ˆœa…ØOïOPP3PWP�P•P¦P²PÐPõPLQ]QlQ‹Q¨QµQÒQæQúQ(RPR–R¬RÀRÒRõRS/SBSUSiSô6Øï(9=To¿ëý#'Sns™Çäè!-D”®þ9Pj¾Ø(1~‹�ª®É  ) = N _ z � Á Ó â ö  -  ôºôiÆrƃƮÆÖÆäÆèÆÿÆÇÇÇ2ÇGÇbÇgÇ�Ç�ÇÙÇÝÇÈHÈȟȽÈûÈÉaÉrÉvɩɭÉÏÉ×ÉçÉÊÊ"Ê6Ê;ÊcÊgÊŠÊŽÊÁÊÕÊøÊùÊËüö2 Ë)Ë:ËeË�˛˟˶˺ËÎËÒËéËÌÌ ÌHÌV̖̹̒ÌÍ8ÍXÍvÍ´ÍÎÍæÍ&Î@ÎŒÎ�ΡÎÔÎØÎúÎÏÏ-Ï2ÏMÏaÏfώϒϵϹÏìÏÐ#Ð$Ð0Ð<'3Öaßaóaôab"bJbb‰b™b  7<; R z  +a'a,a5a:ajtµÏÛ&ò&ø&!'A'j'€'¯'´'É'æ'ý' (%(6(J(W(d(m(Š(kIMX…a…ˆ…l@Ž›a'x'~'¯' (8(^(f(‘(Ÿ(´(mhíA.X.d.q.Ž.´.À.Ô.ó./-/V/c/|/Š/¢/¯/n`9Nç5÷5 636L6k6„6—6Ô6Þ6ã6õ6777S7omq8�8­8ph‰ Û9ë9ø9: :B:S:o:‡:“:©:¶:Î:ß:ó:;;";5;B;q¸Ûø?@!@0@=@U@p@�@¤@±@ã@ø@AA!A&A7AOA\AyA‘AêAB<q<Ž<ž<®<À<Ð<â< +=9=[=m=�=�=­=½=Î=ê=ÿ=>%>8>R>c>w>„>œ>Ì>0?=?B?Q?_?¦?µ?Â?s0¡ªO;_;l;|;Œ; ;¾;Ë;t(el8#848P8e8r8u _dÏ7ß7ì78vÄ8¦ZHqHƒH’HŸH·HÏHÜHùHIjI”I¼IîIJJ:JWJ†JšJwHO^`7p7�7‚7¤7©7µ7Â7xÌ7DD?DZD�DªDäDôDEE&E8E`E�E±EÃE×EóEFF'FCFXFmF‚F•F¯FÀFÔFáFÿF)G�GšGŸG®G½GHH!Hy®ì�)§)µ)Ô)ç)ø) **0*H*[*v*†*š*¸*Æ*Ú*û*+6+j+…+±+Ì+ù+,,V,c,{,‘,¥,Ë,Ø,ü, +--2-N-e-j-—-­-²-ô-...).7.zÜHä0û0 1J1…1”1³1Ö1ì1252R2™2¶2»2ã2ø2 3'3/3e3�3 3Ñ3K4¤4¾4Û4ø45E5�5›5¸5Õ5ë56X6r6�6¤6¾6Í6{D½/Í/ê/0)0I0^0‰0Ž0Ê0Û0|(œ£¾(Î(Ñ(î()}0¤­ ))1)X)m)‡)~lI¡×6î6ô6)7c7r7‘7´7Ê7Þ7ð7 8A8^8¤8Á8Æ8×899.9L9`9ˆ9�9²9Ì9Ý9õ9":>:u:‚:Ã:È:â:;";C;½;<+<P<m<Š<›<³<à<î<+=G=j=§=»=à=ý=>+>C>p>~>»>Ñ>ò>/?C?h?…?¬?ß?@9@N@h@w@,Øàš­ª­¯­À­Ó­ã­€H¦µ¡ð¸ðÎðôðññ\ñhñŽñ®ñÊñÜñ�8`4w4}4Š4Ž4¦4Ë4ã4ò45‚\25&5,595=5U5z5’5¡5°5ƒdÞôN´e´Œ´¯´Ä´Ù´ü´µ+µJµhµ µ͵ìµ¶¶,¶„�>_Š ¡ ² Î Ú !!+!h!‚!‘!Î!Ü!"/"Z"q"€"½"×"æ"##(#5#?#s#‚#…<½Éì(BPWw„’†ð4m»!»2»@»U»p»u»�»«»ã»¼k¼Ö¼½Q½e½j½{½�½¿½нè½õ½¾¾¾6¾D¾b¾�¾”¾æ¾>¿M¿c¿�¿š¿Ÿ¿³¿¸¿пó¿ô¿À‡Üì ù&ù:ùeùvù®ùÛù4úŸúÜú û û%û+û@ûoû‡û“û—û¬û±ûÅûíûQü`üpüŒü¢üÄüÜüýeý†ý•ý¥ýÁýÓýåýþþ'þ5þˆüö2:¶C¶T¶e¶�¶›¶²¶Ͷç¶ü¶·)·7·o·›·²·Þ·@¸T¸k¸™¸°¸ʸ踹 ¹¹>¹n¹‰¹±¹̹ã¹ º[ºmºrº‡ºŒº º¥º½ºàºáºîº‰è´ëôô1ô^ôoô}ôµôáôíôõiõ}õ‰õ®õÀõÕõÛõöö,ö>öDöMöpö„öµö÷(÷8÷T÷h÷~÷ ÷¸÷Æ÷ë÷Oøpøø�ø«ø½øÃøÜøðøþøŠâæ)�9�`�‹Œ$D¡�¸�É�Ò�é�õ�"‘C‘O‘g‘w‘”‘®‘בï‘’ ’/’4’9’V’r’€’Œ4:Df¸o¸ƒ¸š¸±¸É¸è¸þ¸�8U`ºº/ºFº]ºuº�º¬ºÂºŽ\L`ÄNÔNæNïN OO O&O7O@OYOiO€OžO®O�4ö@a{j{Œ{¨{Ð{Þ{ñ{ +|$|<|\|y|™|¶|Ö|ó|}0}P}m}†}¢}Æ}ô};~U~l~…~Š~ª~Î~û~+?džÎ€€7€N€r€¤€È€â€÷€�)�C�g���Þ�ò�‚)‚>‚O‚�Àb�ÏÓØÓéÓ÷Ó Ô"Ô=ÔBÔjÔxÔ…Ô�Ô·ÔøÔ2ÕTÕf՜վÕÛÕíÕÖÖ-ÖJÖgÖŠÖ¨Ö¾ÖòÖ × ×9×>×V×y×zבXM` nn>nLnjn„n˜n¦n·n¼nÒn×nïnoo’|ÁÝÕ±ì±þ±*²C²€²�²Û²ë²ý²³!³5³e³i³x³‡³¬³¹³ϳþ³´)´@´“$Ÿ¥¿%¿4¿H¿”œzž”¼«¼¿¼Ä¼ë¼ì¼ü¼½-½F½V½o½½˜½¨½Á½Ñ½ê½ú½¾#¾<¾F¾V¾x¾¢¾ß¾÷¾¿•%)ý4–˜Áä^u§ºÕðXf‡‹›¡]{�¿Ëï$*æHT~ƒ—@Øï ,UZt’˜d5K‹¥¢¥¶¥·¥Ô¥Ý¥ô¥)¦6¦9¦S¦a¦n¦x¦‡¦Œ¦›¦©¦™ EjŽ’¥’¹’ø’“*“?“R“{“¯“Ô“ë“ ” ”$”2”G”^”n”s”Š”ž”³”ÔȔ攕$•H•šˆï‘l¡lµlÈlÝlmm,mAmRmgm’m¸mámæm n.n3nGnYnxn�n¬nÉnÕn›(CJS"S%S=SOSœ87B7RGRqR°RµRôRùR�ÐV‡j§�§•§–§³§¼§Ó§æ§¨¨¨?¨O¨e¨f¨‚¨Œ¨ž¨µ¨Ñ¨ã¨ü¨©©©*©7©<©A©W©e©r©w©|©Š©—©œ©¢©±©ž<’ž&ª=ªTª]ªsªvªŽª©ªÉªÖªŸÌ6f[PkP‚P�PªP³PÑPÞPùP&Q7QDQcQ}QªQ¾QËQæQúQR RR0RNRSRuR„R `çü\ \.\;\S\k\x\•\¡\Í\ô\]+]H]w]|]¡pi‚âeùeff:fPf]fjf‚fšf§fÄfÐf:gag{g˜gµgägÿg h¢P¾MÎMìMõMN£ ÞãæKöKL L%L¤4³½WÀgÀ€À™À¼ÀÝÀöÀÁ(ÁAÁ¥4ùƒ^¨n¨„¨—¨µ¨Ȩܨ𨩩^©t©“©²©Ñ©ï©ªbªN¬S¬¦ A�W‚n‚�‚­‚Ȃۂö‚ƒPƒdƒ{ƒ€ƒŽƒʃçƒùƒ „ „5„:„N„`„u„Š„›„ „´„Ȅ݄ò„……%…R…V…n…ƒ…ˆ…³…·…Ï…†.†B†G†Y†r†’†¤†³††§@‘ž[![>[][|[Ë[\h\…\¢\ð\õ\¨”1în÷n o$o:ogo}o“o˜o®oÄoÉoüop\pyp«pÈpúpq]q­qÁqÆqØqêq4r©ˆš¹tt2tTt|tŠt¡t¸tÒtàt)u9uHu_uu—uµuÎuñu3vGvLvdv‡vˆvªTÜî¹kÂkÒkäkékùk ll l2l7lGlYl^lnl€l…l«$ÕÛèjñjkk&k¬X†™r&rNr\rur‰r½râr=ses�sµsÇsÌsästt­<©µr«{«€«�«¢«Á«à«ý«¬¬)¬®¤(X\a\w\�\¦\½\Ð\æ\]!]7]S]f]y]Œ]í]¯0Ÿ¨ùª«« «+«J«a«f«°$ÕÛkktk„k™k­k±ìz²Ý™ô™š0šBšTšfšyšŒšŸš²šÆš×šìšþš›$›.›A›T›^›q›„›Ž›¡›´›¾›Ñ›ä›î›œœœ1œDœ^œoœ“œªœ½œÒœâœòœ��$�6�H�Z�Œ�¡�¯�²$¶¼:¬C¬`¬e¬³\ÅÙ‰�’�¬�º�â�ð�Ž Ž1ŽFŽdŽˆŽ£Ž»ŽÀŽØŽûŽüŽ´ 38¾5Ç5Û5µ¹½¨J±JÅJ¶¾ÂÑJÚJîJ·DÊØ ·Èåþ 2?Rap¸…‰¥ˆ®ˆÊˆ¹y}ˆ"ˆ>ˆº8¨³h#hNhkhwh‹h•h­h»8œ§gˆg«gÄgÜgægh¼8�›ÍfÖfífg gAg\gsg½¨n2mBmkm‡m›m´mÎm×mn*nBn[n…nžn£nÍnænýnoo7oRoWonoŠo�o¨oÃoÈoßoûopp4p9pFpUpnpŠpšpŸp¬p»pØpôpq qq%qBq^qnqsq­qÄqØqÝqôqr r$r8r=rTrhrmr„r˜r�r¹rÞrss-sAs¾XÁÔ¢i«iÀiÒiïij*j>jPj_jzj¦j¼jÆjÜj¿<´À¹hÂhÖhçhi;idieixiŒi–iÀMQ”…�…Ä…ÁFaVakaÂd_u†.�.¸.Æ.Õ.ã.///+/8/f/v/™/¦/½/Ñ/Ã\J^e-|-—-©-·-Æ-Ô-Ú-ð-4.C.P.V.j.x.Ä %*X+a+†+µ+Å”$¦(¶(Ñ(å(ù()#)6)E)N)m)ƒ)™)Î)þ)'*F*V*f*z*°*Û*++$+K+ÆP8Ig,~,™,§,¶,À,ß,ñ,--#-3-H-W-Çhv�ß/ö/00+0:0H0b0s0Š0—0¨0¼0Ì0Ü0û011#1È<+7Á+Ñ+ì+ú+ ,, ,5,K,Z,É<¦²T¿d¿{¿œ¿¹¿Ö¿ó¿À-ÀJÀÊ]a„†�†´†ËHET +¹¹'¹>¹U¹i¹Š¹¡¹³¹Ë¹ê¹ºÌ@anκ׺뺻»1»I»[»z»–»Íð[ÔRaiazažaÌaØaÿab4bHbibŠb§bôbc+c?c[cˆc˜cžc¶cÆcácúcd?dVdldŽd¾dÞdûde,eTe�e”e¤eÂeÊeðeôe/f4fTftf”fºfËfÞfÿf/gXgig|gžgÏgÔgçg h:hGhrh„h°hÂhìh ii)i.iFivi†iŒi¬i¿i×iøi%j5j;jSjcj~j“j­jÉjäjkk-k;kÎ`œ±ëÉÊÊ:ÊNÊ`ÊoʃʤʪʵÊÁÊÙÊËLËaËnËÏ@Ž›ÉÉ4ÉHÉYÉgÉ{ɜɽÉÐÉÝÉÐhY>óGóaó{ó•ó¯óÉóãóýóô1ôKôeôô™ô³ôÍôçôõõ5õOõiõƒõ�õ·õÑõëõö ö9öSömö‡ö¡ö»öÕöïö ÷#÷=÷W÷q÷Ñ<8hOhUhbh{h�h–h§h¾hÓhÒ$æKýKL2L^LÓ$06NN.NYNfNÔ08AÖí&9FÕ@O\wَ٤ٹÙÒÙìÙÿÙÚÚ-Ú:ÚÖ ñ 7 Q ×ô"\.ÃEÃoÀâåÿÃÏÃçÃüÃÄÄ$ÄuÄ�Ä…ÄÃÄÏÄÓÄ ÅÅ(Å+ÅAÅYÅkÅpňŋšŦÅÀÅÅÅØÅôÅùÅ&ÆLÆSÆ[ÆdÆwƞƺÆÌÆØ �†{È’ÈÆÈÙÜ A™J°JÁJåJ÷JK K-KBKGKLKiK–K¹KäK LLQLfL{L“L«LÃLØLÞLóLMM2MJM^MrM‡M±MÅMÙMëMøMNÚ€³Ðûxyy,y>y]ysy‡y¦yÅyÝy +z&zTzgzšzÈzàzýz{d{ÛT ²_whw”wÁwÝw xxQxx—x´xÇxïxÜdrˆº8Ê8Ø8â8ï8ý8$959[9t9‹9£9·9Ä9É9Î9Ý0LU³¦¼¦Ý¦!§^§Þ˜n‘À%À7ÀyÀ‡À¯À½ÀÜÀùÀÁ'Á>ÁMÁˆÁ¢Á±ÁìÁÂ"Â0ÂyÂ�’ªÂÍÂâÂöÂÃߤ’¸(Ã1ÃCÅÓûÃÉÃèÃÄ$Ä<ÄYÄjÄ�Ä�ÄËÄåÄôÄ/ÅEÅeÅsżÅÐÅÕÅíÅÆ%Æ9ÆIÆàdvŒC"S"j"s"•"¦"«"Á"Ø"##,#X#l#~#‹#�#©#á¼JÚ–ñ–—2—?—â$17‘è¨è¶èíèûèã¼Ä0wÛ€Û¾ÛÒÛÜ(ÜGÜUÜ�ܼÜÓÜÿÜd݆ݷÝÔÝèÝ Þ'Þ9ÞJÞ…ÞÈÞÔÞWß\ߧߨß)à^à¾àÒàãàúàá:áWá±áÙáûá*âGâvâŠâ§â¬âÐâôâã@ã™ã·ãØãùã$ä8äOäfäkä—ä¨äãäfå{å€å©å®å·å?æPæ‹æççç7çºçÏçôçèè4è9èQètè�èäÔмE\n‚™©Íß 'W]wŒ¢¶Ää4h‰‘ª¿Ù ";Os‚–ª³ÀÆÓå$"(MMUx…˜ò| ¼]]>]\]z]”]�]¢]¨]¼]Á]Þ]^^ ^,^s^~^–^Á^ó0ˆ‘Jar� ³ôdq‡ÉàñINmrz~­²Ñäõ 27¦¯ÉöX¾ÑÏ^æ^÷^_'_<_O_Y_z_�_³_½_Õ_á_ ``7`÷ ˆ�ÐÈàÈ÷ÈøloㆥÈÙêü +[±Þ 7dvŽÊù|4e£|£Š£ž£¯£Ä£Ü£ô£ ¤¤1¤B¤Œ¤¦¤Ì¤Í¤â¤¥¥2¥H¥a¥f¥p¥}¥ú\Ýñ + ! 5 F T e w ‰ ¡ » ¼ à ö ¡¡¡+¡û˜ó9¡P¡d¡¡‘¡Ÿ¡°¡Â¡Ú¡õ¡¢1¢>¢C¢t¢�¢£¢¤¢È¢Þ¢÷¢ü¢£ £££-£:£ü( 353;3H3¢3±3ý( +¿3Ö3Ü3é3C4R4þŒ‚¢ö†ÿ†‡+‡9‡a‡o‡ƒ‡ˆ<ˆ`ˆ{ˆ¢ˆ³ˆLjäˆüˆ?‰`‰t‰ˆ‰š‰µ‰݉â‰ú‰Š+Šÿpާ11H1c1q1€1Ž1Ÿ1º1Æ1÷12202:2P2�2�2á2ò2ü2xœ·2®;®I®e®�®›®õ®d¯�¯†¯Ö¯5°b°’°§°¬°ǰÔ°ç°ì°±'±8±$×Ý©{²{Ç{W|k|(Þåw|€|”|§|À|Ð|,}…FˆOˆXˆjˆ|ˆ�ˆœa…ÚOñOPP5PYPƒP—P¨P´PÒP÷PNQ_QnQ�QªQ·QÔQèQüQ*RRR˜R®RÂRÔR÷RS1SDSWSkSô6Úñ*;?VqÁíÿ%)Upu›Éæê#/F–°;RlÀÚ*3€�‘¬°Ë  + ? P a | ‘ à Õ ä ø   ôºôkÆtÆ…Æ°ÆØÆæÆêÆÇÇÇÇ4ÇIÇdÇiǑǟÇÛÇßÇÈJÈ�ȡȿÈýÈÉcÉtÉxɫɯÉÑÉÙÉéÉÊ Ê$Ê8Ê=ÊeÊiÊŒÊ�ÊÃÊ×ÊúÊûÊËüö2"Ë+Ë<ËgË�Ë�ˡ˸˼ËÐËÔËëËÌÌ"ÌJÌX̘̻̔ÌÍ:ÍZÍxͶÍÐÍèÍ(ÎBΎΟΣÎÖÎÚÎüÎÏÏ/Ï4ÏOÏcÏhÏ�ϔϷϻÏîÏÐ%Ð&Ð2Ð<'3Öaßaóaôab"bJbb‰b™b  7<= T |  @ -í“ý“*”P”i”z”Ž” ”¸” P]nHÚ_ÚoÚÚ¸ÚÓÚçÚìÚÛÛ&Û Lo4ÛKÛiÛ§ÛµÛÕÛêÛùÛþÛÜ Ü.Ü !¶ÍíTå÷�¦µÅò)M’³Éõ<Ûò /bg�Ÿ­œ€¤<ÜSÜcÜ…Ü–Ü©ÜÂÜÜÜÝÝ<Ý@ÝGÝ]ÝhÝmÝ„Ý�ݴݸݿÝÕÝàÝîÝûÝx¢½ƒ@“@ž@°@Ä@â@ó@ø@aAA„A‰A¨A¼AêAB)BGBvB‚BX”§ˆ Ÿ à ×  -  ( H M u Š ¦ ³ Æ Ø $ÐÖ^­g­l­}­‚­´Ëõ¦w¶wÇwäw x x6xDxgx}xªxìxýx7yYy^y�y¾yáyïyz&z3zjzyz•zÖzîzD{N{4BLKm[m‚mœm°mÈmþmLèøV§f§§š§±§Ö§ê§þ§¨¨)¨=¨O¨mqt‡}‡§‡,&xa�a•a–a«aÀaÊa0%.6ƒ?ƒSƒ�ƒžƒ£ƒÁƒËƒœ8\0DXekr…аÄÊÑ-@P†¥Ñ*07;OTYL/?׃àƒôƒ„„%„L„M„`„t„�„ „ª„Á„´ºäýËÌÌBÌRÌbÌvÌ�̢̮ÌÌÌÚÌøÌýÌÍÍ;ÍOÍTÍ}ͯ͢ÍÊÍÏÍàÍ Î5ÎIÎz΋ΞμÎÑÎãΜ·Û½�Ô�è�ù� ž!ž2ž=žPžcžyž•žÃžåžòžŸ,ŸPŸhŸiŸ›Ÿ®Ÿ»ŸÏŸÙŸæŸ(N+ÒBÒHÒ[ÒÐÒÞÒéÒ -Ó�Ó�Ó¹ÓÊÓuÔ~Ô—ÔœÔÛÔùÔ Õ+Õ1Õ7ÕGÕeÕ‹Õ©Õ¼ÕÊÕÞÕóÕºÖÔÖìÖ××;×W×v×�×É×ìר'Ø>ØzØ�Ø»ØÚØñØÙ%ÙCÙ[ÙiÙ $kqOdXdldzd‹d (ÈÏ­­­,­=­B­!uyç‡ð‡ˆ"0BK'N>NZNaNxN§N´N#im8‡A‡h‡$X]pg~’£·ÅÓê.X]nŽœ%,em@ÇWÇmÇpǃǕÇ&,nv£ÇºÇÐÇÓÇøÇ -È',wÈ/ÈEÈHÈ[ÈmÈ(8_jyc‚c“c²cÈcÞcþcd&dCd)P‚“U -l -� -¤ -× -ì -õ -ÿ -' < I \ n *�åñÎÏKÏcωϣÏÏÏÐ#ÐEÐfИЫÐÙÐÞÐÑÑ3ÑUÑvѨѻÑÔÑÙÑìÑÒÒ+=�M�b�, #o��”�-D ß²ï² -³)³E³†³Â³í³e´v´.|9´´Ä´ß´ú´-µHµ\µ”µ¥µýµ¶I¶N¶_¶·¶Î¶··.·\·›·Ù·¸9¸Y¸/,¸ÀB±Y±…±’±¤±¶±ű0(æíÜ|å|!}G}\}1(]dÚÆêÆüÆ ÇÇ2`$ßhöhüh(i5iRi[iriwi™iªi¶iÍißiñijj34v��€�‰���©�Ø�ç�ì�40¾Çq¬�¬†¬«¬¼¬Ï¬ß¬5�£Ä1Š:ŠTŠbŠŠŠ˜Š¬ŠÇŠñŠ‹¬‹Ê‹î‹ÿ‹Œ0ŒPŒ“Œ´ŒÈŒÜŒîŒ �1�6�N�q��6LQavÒÒ�Ò’ÒºÒÈÒíÒ\ÓpÓuÓ�Ó°ÓÁÓ7LºÊ’v©vÀvÑvévøvwAw^w{w€w˜w8x¥À Þ Þ.ÞJÞQÞcÞwÞ|Þ”Þ¦Þ«ÞÆÞÞÞñÞß#ß5ß:ßLßfß~߃ß9lÁÙ‘ߨ߹ßÏß÷ßà à0àHàaàràwà|à�à¥à¯àÇàÚàéà:(­ôúUV%VIVdVxV”V£VÍVÕVèVòV.W ˆ�''Q'?0luåü < [ n � @(¹Àâ ù ;NA$ʱӱ걂²Ó²BHfÁoÁ�Á›ÁºÁÑÁïÁüÁÂ6ÂBÂGÂC, +ï“ÿ“,”R”k”|”�”¢”º” P]nHÚ_ÚoÚÚ¸ÚÓÚçÚìÚÛÛ&Û Lo4ÛKÛiÛ§ÛµÛÕÛêÛùÛþÛÜ Ü.Ü !¸ÏïTå÷‘¨·Çô+O”µË÷<Ýô1diƒ¡¯œ€¤<ÜSÜcÜ…Ü–Ü©ÜÂÜÜÜÝÝ<Ý@ÝGÝ]ÝhÝmÝ„Ý�ݴݸݿÝÕÝàÝîÝûÝx¢½…@•@ @²@Æ@ä@õ@ú@cA�A†A‹AªA¾AìAB+BIBxB„BX”§Š ¡ Å Ù  ! * J O w Œ ¨ µ È Ú $ÐÖ^­g­l­}­‚­´Ëõ¨w¸wÉwæwx"x8xFxixx¬xîxÿx9y[y`yƒyÀyãyñyz(z5zlz{z—zØzðzF{P{4BLMm]m„mžm²mÊmnLèøX§h§�§œ§³§ا짨¨¨+¨?¨Q¨mqt‡}‡§‡,&xa�a•a–a«aÀaÊa0%.6ƒ?ƒSƒ�ƒžƒ£ƒÁƒËƒœ8\2FZgmt‡Œ²ÆÌÓ/BRˆ§Ó +,29=QV[L/?׃àƒôƒ„„%„L„M„`„t„�„ „ª„Á„´ºäýËÌÌBÌRÌbÌvÌ�̢̮ÌÌÌÚÌøÌýÌÍÍ;ÍOÍTÍ}ͯ͢ÍÊÍÏÍàÍ Î5ÎIÎz΋ΞμÎÑÎãΜ·Û½�Ô�è�ù� ž!ž2ž=žPžcžyž•žÃžåžòžŸ,ŸPŸhŸiŸ›Ÿ®Ÿ»ŸÏŸÙŸæŸ(N+ÒBÒHÒ[ÒÐÒÞÒéÒ +Ó�Ó�Ó¹ÓÊÓuÔ~Ô—ÔœÔÛÔùÔ Õ+Õ1Õ7ÕGÕeÕ‹Õ©Õ¼ÕÊÕÞÕóÕºÖÔÖìÖ××;×W×v×�×É×ìר'Ø>ØzØ�Ø»ØÚØñØÙ%ÙCÙ[ÙiÙ $kqOdXdldzd‹d (ÈÏ­­­,­=­B­!uyç‡ð‡ˆ"0BK)N@N\NcNzN©N¶N#im8‡A‡h‡$X]pi€”¥¹ÇÕì0Z_p��ž%,em@ÇWÇmÇpǃǕÇ&,nv£ÇºÇÐÇÓÇøÇ +È',wÈ/ÈEÈHÈ[ÈmÈ(8_jyc‚c“c²cÈcÞcþcd&dCd)P‚“W +n +’ +¦ +Ù +î +÷ + ) > K ^ p *�åñÎÏKÏcωϣÏÏÏÐ#ÐEÐfИЫÐÙÐÞÐÑÑ3ÑUÑvѨѻÑÔÑÙÑìÑÒÒ+=�M�b�, #o��”�-D ß²ï² +³)³E³†³Â³í³e´v´.|9´´Ä´ß´ú´-µHµ\µ”µ¥µýµ¶I¶N¶_¶·¶Î¶··.·\·›·Ù·¸9¸Y¸/,¸ÀD±[±‡±”±¦±¸±DZ0(æíÜ|å|!}G}\}1(]dÚÆêÆüÆ ÇÇ2`$áhøhþh*i7iTi]itiyi›i¬i¸iÏiáióijj34v��€�‰���©�Ø�ç�ì�40¾Çq¬�¬†¬«¬¼¬Ï¬ß¬5�£Ä3Š<ŠVŠdŠŒŠšŠ®ŠÉŠóŠ‹®‹Ì‹ð‹ŒŒ2ŒRŒ•Œ¶ŒÊŒÞŒðŒ �3�8�P�s���6LQaxÒ�Ò�Ò”Ò¼ÒÊÒïÒ^ÓrÓwÓ�Ó²ÓÃÓ7LºÊ”v«vÂvÓvëvúvwCw`w}w‚wšw8x¥À Þ Þ.ÞJÞQÞcÞwÞ|Þ”Þ¦Þ«ÞÆÞÞÞñÞß#ß5ß:ßLßfß~߃ß9lÁÙ‘ߨ߹ßÏß÷ßà à0àHàaàràwà|à�à¥à¯àÇàÚàéà:(­ôüUV'VKVfVzV–V¥VÏV×VêVôV0W>WJWhW~W�W´WÍWòWXX3XUXmXˆXÂXÙXèXøXYY2Y?YLY]YlY‹Y¨YµYÒYZ$Z1ZlZœZùZ["[?[\[n[{[�[¡[¸[Ö[ì[\\'\;€�¬S–S SÌSïST6TGTVTuT’T¨TÎTU$U1UYUmUŠU�UºU×UéU<¤a‡•#¬#À#Ü#í#$$+$:$Ž$Å$Ô$ %;%P%U%f%w%Ì%Ú%õ% &&+&F&[&�&Ÿ&®&Â&Ï&ã&õ&=ØlŸžîµîÉîÝîÿîï,ïUïmïuïŽïœï·ï×ïìïñïðCð_ðqð�ðÂðâðúð +ñ(ñ`ñžñ¦ñàñûñò5òSòyò�ò°òÊòìòðòóó-ó> ˆ�''S'?0luçþ" > ] p ƒ @(¹Àä û  =PA$ʱӱ걂²Ó²BHfÁoÁ�Á›ÁºÁÑÁïÁüÁÂ6ÂBÂGÂC, p•‡•Ÿ••ՕD, ã•ú•–F–Y–E0g–~–––¹–Ì–Fxr�“dœd°däd eDete‘e®eÊeæef fff&f4fHf\fsfxf�f†f \ No newline at end of file diff --git a/LT/OSMain/OSINC.ASZ b/LT/OSMain/OSINC.ASZ index 89a3e7e..1d9d7af 100644 --- a/LT/OSMain/OSINC.ASZ +++ b/LT/OSMain/OSINC.ASZ @@ -181,6 +181,7 @@ TSS_ANSWERS_TYPES: DU4 8 DUP(?); TSS_ANSWERS_DISPLAYED: DU4 ?; TSS_DBG: DU4 ?; TSS_POPUP: DU4 ?; +TSS_LOCALCHNL: DU4 ?; TSS_RMTCHNL: DU4 ?; TSS_USER_AUX0: DU4 ?; TSS_USER_AUX1: DU4 ?; diff --git a/LT/OSMain/SYSTEXT.CPZ b/LT/OSMain/SYSTEXT.CPZ index 8b23a8f..71e1f0b 100644 Binary files a/LT/OSMain/SYSTEXT.CPZ and b/LT/OSMain/SYSTEXT.CPZ differ diff --git a/LT/UTILS/GREP.CPZ b/LT/UTILS/GREP.CPZ index 15f0a0e..cbdb74f 100644 --- a/LT/UTILS/GREP.CPZ +++ b/LT/UTILS/GREP.CPZ @@ -173,7 +173,9 @@ public U8 FileOccurrences(I1 *pattern,I1 *wild=TEXT_FILE_MASK,I1 *flags="+r+i+l" LTDirEntry MCFindMatch(LTDirEntry *pattern,LTDirEntry *list) { while (list) { - if (!StrCmp(pattern->name,list->name) && pattern->attr==list->attr) + if (!StrCmp(pattern->name,list->name) && + (pattern->attr&~LT_ATTR_RESIDENT)== + list->attr&~LT_ATTR_RESIDENT) return list; list=list->next; } @@ -185,19 +187,23 @@ void MergeChkList(LTDirEntry *m1,LTDirEntry *m2,U8 *fuf_flags,U8 *df_flags) I8 i; LTDirEntry *tempm2; while (m1 && !(*df_flags & DF_ABORT_ALL_FILES)) { - tempm2=MCFindMatch(m1,m2); - if (!tempm2) - coutln "Does Not Exist:",m1->full_name; - else { - if (m1->attr & LT_ATTR_DIR) - MergeChkList(m1->sub,tempm2->sub,fuf_flags,df_flags); + if (!Bt(fuf_flags,FUf_JUST_TEXT_FILES) || + IsTextFile(m1->name) || + m1->attr & LT_ATTR_DIR) { + tempm2=MCFindMatch(m1,m2); + if (!tempm2) + coutln "Does Not Exist:",m1->full_name; else { - i=m1->datetime-tempm2->datetime; - if (AbsI8(i)>LTDATE_FREQ*2) { //Filedates can shift due to conversion - coutln m1->full_name; - if (Bt(fuf_flags,FUf_DIFF)) { - if (IsTextFile(m1->full_name)) - *df_flags=Diff(tempm2->full_name,m1->full_name,*df_flags); + if (m1->attr & LT_ATTR_DIR) + MergeChkList(m1->sub,tempm2->sub,fuf_flags,df_flags); + else { + i=m1->datetime-tempm2->datetime; + if (AbsI8(i)>LTDATE_FREQ*2) { //Filedates can shift due to conversion + coutln m1->full_name; + if (Bt(fuf_flags,FUf_DIFF)) { + if (IsTextFile(m1->full_name)) + *df_flags=Diff(tempm2->full_name,m1->full_name,*df_flags); + } } } } @@ -206,9 +212,13 @@ void MergeChkList(LTDirEntry *m1,LTDirEntry *m2,U8 *fuf_flags,U8 *df_flags) } } -public void MergeChk(I1 *dst_mask,I1 *src_mask,I1 *flags="+r") -//r=recurse -//d=diff +public void MergeChk( + I1 *dst_mask="/LT/*", + I1 *src_mask="/LT/*", + I1 *flags="+r") +//+r=recurse +//+d=diff +//+t=just text files { U8 df_flags=0; LTDirEntry *tempm1=NULL,*tempm2=NULL; @@ -223,48 +233,164 @@ public void MergeChk(I1 *dst_mask,I1 *src_mask,I1 *flags="+r") } +I1 *red_st="$$FG RED$$",*green_st="$$FG GREEN$$"; -void CommMergeChkList(U8 port,LTDirEntry *m1,LTDirEntry *m2,U8 *fuf_flags,U8 *df_flags) +void RmtMergeChkList(TssStruct *tss,LTChnl *chnl,LTDirEntry *m1,LTDirEntry *m2,U8 *fuf_flags,U8 *df_flags,I1 *cur_dir) { I8 i; LTDirEntry *tempm2; + I1 *full_name,*c1,*c2; while (m1 && !(*df_flags & DF_ABORT_ALL_FILES)) { - tempm2=MCFindMatch(m1,m2); - if (!tempm2) - coutln "Does Not Exist:",m1->name; - else { - if (m1->attr & LT_ATTR_DIR) - CommMergeChkList(port,m1->sub,tempm2->sub,fuf_flags,df_flags); - else { - i=m1->datetime-tempm2->datetime; - if (AbsI8(i)>LTDATE_FREQ*2) { //Filedates can shift due to conversion - coutln m1->name; - if (Bt(fuf_flags,FUf_DIFF)) { - if (IsTextFile(m1->name)) - *df_flags=Diff(tempm2->name,m1->name,*df_flags); + if (!Bt(fuf_flags,FUf_JUST_TEXT_FILES) || + IsTextFile(m1->name) || + m1->attr & LT_ATTR_DIR) { + tempm2=MCFindMatch(m1,m2); + if (!tempm2) { + coutln "Does Not Exist on Remote:",m1->name; + full_name=MAlloc(StrLen(cur_dir)+1+StrLen(m1->name)+1+1); + StrCpy(full_name,cur_dir); + StrCat(full_name,m1->name); + } else { + full_name=MAlloc(StrLen(cur_dir)+1+StrLen(tempm2->name)+1+1); + StrCpy(full_name,cur_dir); + StrCat(full_name,tempm2->name); + } + if (m1->attr & LT_ATTR_DIR) { + if (!tempm2) { + if (PopUpNoYes("MkDir on Remote?")) { + XTalk(tss,"MkDir(\"%s\");\r",full_name); + chnl->null_msg_cnt=0; + while (chnl->null_msg_cnt<2) + SwapInNext; + } + } + StrCat(full_name,"/"); + RmtMergeChkList(tss,chnl,m1->sub,tempm2->sub,fuf_flags,df_flags,full_name); + } else { + if (tempm2) { + i=m1->datetime-tempm2->datetime; + if (AbsI8(i)>LTDATE_FREQ*2) { //Filedates can shift due to conversion + if (i<0) { + c1=red_st; + c2=green_st; + } else { + c1=green_st; + c2=red_st; + } + PrintF("%s%h2D %h4T$$FG$$ %s%h2D %h4T$$FG$$\r\n %s\r\n\r\n", + c1,m1->datetime.date,m1->datetime.time, + c2,tempm2->datetime.date,tempm2->datetime.time, + m1->full_name); + if (PopUpNoYes("Sync?")) { + if (i<0) + XTalk(tss,"RmtRqstRxFile(\"%s\",\"%s\");\r", + full_name,m1->full_name); + else + XTalk(tss,"RmtRqstTxFile(\"%s\",\"%s\");\r", + full_name,m1->full_name); + chnl->null_msg_cnt=0; + while (chnl->null_msg_cnt<2) + SwapInNext; + } + } + } else { + if (PopUpNoYes("Sync?")) { + XTalk(tss,"RmtRqstTxFile(\"%s\",\"%s\");\r", + full_name,m1->full_name); + chnl->null_msg_cnt=0; + while (chnl->null_msg_cnt<2) + SwapInNext; } } } + Free(full_name); } m1=m1->next; } } +public void RmtMergeChkHost(I1 *dst_mask="/LT/*",I1 *flags="+r") +{ + LTDirEntry *tempm; + U8 size; + U1 *buf; + FlagsStruct f; + GetFFlags(&f,"ST_FILE_UTIL_FLAGS",flags); + tempm=FindFiles(dst_mask,&f.on); + buf=FlattenLTDirTree(tempm,&size); + RmtRqstRxBuf(buf,size); + Free(buf); + DelLTDirList(tempm); +} -//$BK,1$Not Done$BK,0$ -public void CommMergeChk(U8 port,I1 *dst_mask,I1 *src_mask,I1 *flags="+r") -//r=recurse -//d=diff +I1 *Progress1CB(Ltf *l,Ltf *user_data,LtfEntry *ll,TssStruct *mem_tss) +{ + I1 *st=MAlloc(16,mem_tss); + SPrintF(st,"%08X",progress1); + return st; +} + +public void RmtMergeChk(LTChnl *chnl, + I1 *dst_mask="/LT/*", + I1 *src_mask="/LT/*", + I1 *flags="+r+t") +//+r=recurse +//+d=diff +//+t=Just text files { U8 df_flags=0; LTDirEntry *tempm1=NULL,*tempm2=NULL; FlagsStruct f; + TssStruct *tss; + I1 *st,*st2; + Ltf *aux; + LtfEntry *ll; + + if (!chnl || !chnl->type) return; GetFFlags(&f,"ST_FILE_UTIL_FLAGS",flags); coutln "WARNING:This is based strictly on file dates."; - tempm1=FindFiles(src_mask,&f.on); - tempm2=FindFiles(dst_mask,&f.on); - CommMergeChkList(port,tempm1,tempm2,&f.on,&df_flags); - DelLTDirList(tempm1); - DelLTDirList(tempm2); + if (tempm1=FindFiles(src_mask,&f.on)) { + tss=Spawn(&UserCmdLine); + while (!Bt(&tss->task_flags,TSSf_IDLE)) + SwapInNext; + tss->window_top=Fs->window_top; + tss->window_bottom=(Fs->window_top+Fs->window_bottom)>>1-1; + Fs-> window_top=tss->window_bottom+3; + tss->window_right=Fs->window_right; + tss->window_left=Fs->window_left; + WindowToTop(Fs); + XTalk(tss,"TelnetGuestOpen(0x%08X);\r",chnl); + + aux=tss->aux_ltf; + LtfPutS(aux,"$$CM+BY,0,0$$"); + ll=LtfPutS(aux,"$$TX+DC+RD+LX+IV,\"00000000\"$$"); + ll->display_cb=&Progress1CB; + + XTalk(tss,"RmtMergeChkHost(\"%s\",\"%s\");\r",dst_mask,flags); + chnl->null_msg_cnt=0; + while (chnl->null_msg_cnt<2) + SwapInNext; + tempm2=UnflattenLTDirTree(chnl->rx_buf); + st =MAlloc(StrLen(dst_mask)+3); + st2=MAlloc(StrLen(dst_mask)+3); + StrCpy(st,dst_mask); + RemoveLastSeg(st,"/",st2); + if (!*st) { + Free(st); + st=NewString("./"); + } else + StrCat(st,"/"); + + RmtMergeChkList(tss,chnl,tempm1,tempm2,&f.on,&df_flags,st); + Free(st); + Free(st2); + DelLTDirList(tempm1); + DelLTDirList(tempm2); + XTalkString(tss,"Msg(MSG_KEY_DOWN,CH_CTRLB,SCF_CTRL+SCF_ALT);"); + Fs->window_top=tss->window_top; + Sleep(250); //allow shutdown of Guest channel + Kill(tss); + } } + \ No newline at end of file