/Designs/MRAKOMER4/SW/2zone/irmrak4.PJT
34,12 → 34,12
[Opened Files]
1=irmrak4.c
2=irmrak4.h
3=..\..\..\..\..\..\Program Files\PICC\devices\16F88.h
4=..\..\..\..\..\..\Program Files\PICC\drivers\string.h
5=..\..\..\..\..\..\Program Files\PICC\drivers\stddef.h
6=..\..\..\..\..\..\Program Files\PICC\drivers\ctype.h
7=smb.c
8=dbloader.c
3=..\..\..\..\..\..\..\..\Program Files\PICC\devices\16F88.h
4=..\..\..\..\..\..\..\..\Program Files\PICC\drivers\TOUCH.C
5=..\..\..\..\..\..\..\..\Program Files\PICC\drivers\string.h
6=..\..\..\..\..\..\..\..\Program Files\PICC\drivers\stddef.h
7=..\..\..\..\..\..\..\..\Program Files\PICC\drivers\ctype.h
8=smb.c
9=
[Units]
Count=1
/Designs/MRAKOMER4/SW/2zone/irmrak4.c
3,6 → 3,7
#define ID "$Id$"
 
#include "irmrak4.h"
#include <TOUCH.C>
 
#bit CREN = 0x18.4 // USART registers
#bit SPEN = 0x18.7
19,6 → 20,7
#define RESPONSE_DELAY 100 // Reaction time after receiving a command
#define SAFETY_COUNT 90 // Time of one emergency cycle
#define SEND_DELAY 50 // Time between two characters on RS232
#define ERROR -32000 // Error flag
 
#define DOME PIN_B4 // Dome controll port
#define HEATING PIN_B3 // Heating for defrosting
62,8 → 64,8
printf("# s - Single measure.\n\r");
printf("# u - Update firmware. Go to the Boot Loader.\n\r");
printf("#\n\r");
printf("# <sequence> <ambient[1/100 C]> <ambient[1/100 C]> <sky[1/100 C]> ");
printf("<heating[s]> <dome[s]> <check>\n\r\n\r");
printf("# <ver> <sequence> <inside[1/100 C]> <sky[1/100 C]> <sky[1/100 C]> ");
printf("<ambient[1/100 C]> <heating[s]> <dome[s]> <check>\n\r\n\r");
//---WDT
restart_wdt();
}
103,12 → 105,45
return temp;
}
 
// compute CRC
// *sn - pointer to the byte array
// num - length of array
inline int8 TM_check_CRC(unsigned int8 *sn, unsigned int8 num)
{
// CRC table
const int8 TouchCRC[256]= {
0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65,
157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220,
35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98,
190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255,
70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7,
219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154,
101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36,
248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185,
140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205,
17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80,
175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238,
50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115,
202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139,
87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22,
233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168,
116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53};
 
int8 CRC;
int8 i;
 
CRC=0;
for(i=0;i<num;i++) CRC=TouchCRC[CRC ^ *(sn+i)];
return(CRC);
}
 
 
/*-------------------------------- MAIN --------------------------------------*/
void main()
{
unsigned int16 seq, temp, tempa;
signed int16 ta, to1, to2;
signed int16 ta, to1, to2, tTouch;
int8 tLSB,tMSB; // Temperatures from TouchMemory
int8 safety_counter;
int1 repeat;
 
127,6 → 162,9
 
tempa=ReadTemp(SA, RAM_Tamb); // Dummy read
temp=ReadTemp(SA, RAM_Tobj1);
touch_present(); //Issues a reset of Touch Memory device
touch_write_byte(0xCC);
touch_write_byte(0x44);
 
delay_ms(1000);
//---WDT
213,6 → 251,39
temp=ReadTemp(SA, RAM_Tobj2);
to2=temp*2-27315;
 
touch_present(); //Issues a reset of Touch Memory device
touch_write_byte(0xCC);
touch_write_byte(0x44);
//---WDT
restart_wdt();
delay(MEASURE_DELAY); // Delay to a next measurement
 
{
int8 SN[10];
int8 n;
 
touch_present(); //Issues a reset and returns true if the touch device is there.
touch_write_byte(0xCC);
touch_write_byte(0xBE);
for(n=0;n<9;n++) SN[n]=touch_read_byte();
tLSB=SN[0];
tMSB=SN[1];
if ((SN[8]==TM_check_CRC(SN,8))&&(SN[7]==0x10)) // Check CRC and family code to prevent O's error
{
tTouch=make16(tMSB,tLSB);
}
else
{
tTouch=ERROR;
}
 
for(n=0;n<9;n++) printf("%X ",SN[n]);
//!!! printf("CRC %u %u ",SN[8],TM_check_CRC(SN,8));
//!!! printf("%.4f ",tTouch*6.25);
}
{ // printf
char output[8]; // Output buffer
int8 j; // String pointer
221,32 → 292,39
delay(SEND_DELAY);
putc('$');
delay(SEND_DELAY);
sprintf(output,"M%s ",VER);
sprintf(output,"M%s \0",VER);
j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j]); check^=output[j++]; }
sprintf(output,"%Lu ", seq);
sprintf(output,"%Lu \0", seq);
j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j]); check^=output[j++]; }
sprintf(output,"%Ld ", ta);
sprintf(output,"%Ld \0", ta);
j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j]); check^=output[j++]; }
sprintf(output,"%Ld ", to1);
sprintf(output,"%Ld \0", to1);
j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j]); check^=output[j++]; }
sprintf(output,"%Ld ", to2);
sprintf(output,"%Ld \0", to2);
j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j]); check^=output[j++]; }
sprintf(output,"%u ", heat);
if(tTouch==ERROR)
{
sprintf(output,"-27315 \0"); // Error condition
}
else
{
sprintf(output,"%Ld \0",tTouch*6+(tTouch/4)); // 1bit = 0,0625gradC
}
j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j]); check^=output[j++]; }
sprintf(output,"%u ", open);
sprintf(output,"%u \0", heat);
j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j]); check^=output[j++]; }
sprintf(output,"*%X\n\r\0", check);
sprintf(output,"%u \0", open);
j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j]); check^=output[j++]; }
sprintf(output,"*%X\r\n\0", check);
j=0; while(output[j]!=0) { delay(SEND_DELAY); putc(output[j++]); }
delay(SEND_DELAY);
}
 
//---WDT
restart_wdt();
delay(MEASURE_DELAY); // Delay to a next measurement
//---WDT
restart_wdt();
}
}
 
 
#include "dbloader.c" // Space reservation for the BootLoader
//#include "dbloader.c" // Space reservation for the BootLoader
/Designs/MRAKOMER4/SW/2zone/irmrak4.h
1,19 → 1,21
#include <16F88.h>
#device adc=8
 
#FUSES WDT //Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES PUT //Power Up Timer
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOFCMEN //Fail-safe clock monitor disabled
#FUSES NOIESO //Internal External Switch Over mode disabled
#FUSES WDT //Watch Dog Timer
#FUSES INTRC_IO //Internal RC Osc, no CLKOUT
#FUSES PUT //Power Up Timer
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOFCMEN //Fail-safe clock monitor disabled
#FUSES NOIESO //Internal External Switch Over mode disabled
 
#use delay(clock=8000000)
#use rs232(baud=2400,parity=N,xmit=PIN_B5,rcv=PIN_B2,bits=8)
 
#define TOUCH_PIN PIN_B7
 
/Designs/MRAKOMER4/SW/2zone/irmrak4.hex
1,287 → 1,413
:0C00000008308A000028000020280800BA
:100040008A068A0623104D39E135EF366539A0124C
:100050007310A82129103218B01BA025C1254C050A
:100060000D00231068102D10D33B693A6334A0278C
:100070006E10C832613A69376710E637721032186D
:1000800073178A060000231063102D10CE326532DC
:10009000A0216F36E4327217A029F734F4316810CA
:1000A0004F336610C832613A693767178A06000114
:1000B00023106F102D104F386537203AE832202278
:1000C000EF366510E6377210321873178A06000192
:1000D00023106C102D10CC37E335203AE832202263
:1000E000EF3665178A060001231078102D104F385F
:1000F0006537203AE8322022EF3665106137641008
:10010000F33B693A6334A0276E10C832613A69370D
:1001100067178A060001231069102D1050396937BE
:1001200074107434E939A0246E336F39ED30F4342F
:100130006F372E050D00231072102D10D232F032C1
:10014000613AA036E530F33AF232A032F632F23CB0
:10015000A039E5316F3764178A0600012310731048
:100160002D10D334EE33EC32A036E530F33AF232D0
:100170002E050D00231075102D105538E430F43283
:1001800020336939ED3B61396517A0236F10F437CF
:10019000203AE8322021EF377410CC3761326539CC
:1001A0002E050D002310BC39E538F532EE31651F00
:1001B000201EE136E2346537F42DB11731183010C6
:1001C000C32E3E10BC306D31E9326E3ADB18AF18E9
:1001D0003018A0215D1F201EF335F92DB1173118FD
:1001E0003010C32E3E1000013C34E530F434EE33C1
:1001F000DB395D1F201EE437ED32DB395D1F201E29
:100200006334E5316B1F8A068A060000443084009F
:1002100083130008031919290230F800F701F70BBE
:100220000F29F80B0E299730F700F70B1529800BD3
:100230000C2908007608FC007508FB007C08FA0011
:100240007B08840083137A188317800803192C29EC
:10025000FB0A0319FC0A1E2975087B02F7007C08BB
:10026000FA007608031C760FFA027708F8000800F7
:10027000831603178C170C140000000003185A296A
:1002800083120C087F39FB000D08FC000F08FD00ED
:100290007B0803130C1E4A2999007C0803178D0064
:1002A0007D088F0083168C170C1400000000F50BDE
:1002B0005A29772983120C0D0E0D7F39FB000D088A
:1002C000FC000F08FD007B0803130C1E6529990034
:1002D0007C0803178D007D088F008D0A03198F0A93
:1002E0000310F50B7429762903133829831683121A
:1002F00003130800800803199029F6010408F5008B
:100300007610831B761400080C1E8429990075084A
:100310008400831376188317840A0319850A7A29BF
:100320000800831603178C170C14000000008312BA
:100330000C087F390319CB29FB000D08FC000F08BE
:10034000FD007B0803130C1EA32999007C080317EA
:100350008D007D088F0083168C170C1400000000A0
:1003600083120C0D0E0D7F390319CB29FB000D08EC
:10037000FC000F08FD007B0803130C1EBD2999002B
:100380007C0803178D007D088F008D0A03198F0AE2
:10039000031391290317031308002430C3004930C5
:1003A000C4006430C5003A30C6002030C700693050
:1003B000C8007230C9006D30CA007230CB006130A5
:1003C000CC006B30CD003430CE002E30CF00633007
:1003D000D0002030D1003130D2003530D300393058
:1003E000D4003730D5002030D6003230D70030303E
:1003F000D8003130D9003030DA002D30DB00303019
:10040000DC003830DD002D30DE003230DF003530EA
:10041000E0002030E1003130E2003930E3003A30D2
:10042000E4003430E5003730E6003A30E70035309C
:10043000E8003830E9005A30EA002030EB006B3039
:10044000EC006130ED006B30EE006C30EF002030DE
:10045000F0002430F100F201F6014330F5001A21DA
:1004600001307802433E840083130008243C031DBE
:10047000432AF6014330F5001A2101307802433E49
:10048000840083138001203003178D0000308F001B
:1004900003100F30F500031338212230840083133A
:1004A0007A21283003178D0000308F00031410309C
:1004B000F5000313382123300C1E5C2A99004730C5
:1004C000840083137A210A300C1E642A99000D30AF
:1004D0000C1E682A990023300C1E6C2A99000A30E1
:1004E0000C1E702A99000D300C1E742A99003130B0
:1004F00003178D0000308F00031391214330031741
:100500008D0000308F0003139121583003178D00A8
:1005100000308F0003139121683003178D000030E5
:100520008F0003139121743003178D0000308F006A
:10053000031391218B3003178D0000308F000313BC
:1005400091219B3003178D0000308F000313912100
:10055000AE3003178D0000308F0003139121BA30A5
:1005600003178D0000308F000313912123300C1EE0
:10057000B72A99000A300C1EBB2A99000D300C1EB8
:10058000BF2A9900D23003178D0000308F0003136B
:100590009121F43003178D0000308F000313912157
:1005A00064000800831686140610831206100D30AE
:1005B000F700F70BD92A83168610831286100D30A8
:1005C000F700F70BE12A831606140D30F700F70B3E
:1005D000E72A861483120800831686140D30F7006C
:1005E000F70BF02A06140D30F700F70BF52A8610EA
:1005F000831286100D30F700F70BFC2A83160610C5
:10060000831206100D30F700F70B042B0800D308F7
:10061000031D0F2B8316861083128610122B831650
:1006200086148312132B142B152B831606141A30E1
:10063000F700F70B192B0000061083120610A7080D
:100640000319282B831606121030831286062C2BD2
:1006500083160612831206164230F700F70B2E2B74
:100660000000A70803193A2B8316061210308312D4
:1006700086063E2B83160612831206160800831682
:10068000861406141A30F700F70B442B000086146A
:100690008312861C4E2B0130D3004F2BD3018316BF
:1006A000061083120610A70803195C2B8316061286
:1006B000103083128606602B8316061283120616EC
:1006C0004230F700F70B622B0000A70803196E2BCE
:1006D00083160612103083128606722B83160612BA
:1006E000831206165308F80008000830D000D0081E
:1006F0000319872BCF1F7F2B0130D200802BD20113
:100700005208D30007230310CF0DD003772B3F23CC
:100710007808D1005108F80008000830D000D0084F
:1007200003199F2B3F23F80803199A2B0310CF0DB1
:100730004F149D2B0310CF0D4F10D0038F2B4E085D
:10074000D30007234F08F80008000310C30DD2227E
:10075000EC224308CF0075234408CE00CF00752358
:10076000EC224308CF007523CE018D237808C70003
:10077000CE018D237808C6004608CD004708CC007E
:100780000130CE008D237808CB00D2224308CA0066
:100790004408C9004308C800C501CF014530CE0058
:1007A0002F30D600D501D401D301D2010130D100C0
:1007B0000730D0002F30D600D7010530D800D9013E
:1007C00058084E07840083134F1883170008DB0076
:1007D0008030F7005908F8000319F22B0310F70CCA
:1007E000F80BEE2B77085B05031D102CD8080319B6
:1007F000102CD6035908063C031C002CD90A022CE5
:10080000D901D803A70803190B2C83160612103040
:10081000831286060F2C8316061283120616E02B0F
:1008200008305602D700D7080319482C0530D800E5
:10083000580F1B2C392C01305802503E8400831372
:10084000801F282CD8080319282C0130DA00292C05
:10085000DA0150305807840083130310000D800024
:1008600050305807840083135A0800078000D803CB
:10087000182CD703A7080319432C8316061210302F
:1008800083128606472C8316061283120616132C33
:10089000D8015808053C031C6B2C58084E07F8007B
:1008A0004F08FA000318FA0A7808840083137A18AC
:1008B00083170008DD0050305807840083130008B8
:1008C0005D06DD007808840083137A1883175D08BD
:1008D0008000D80A492C5608083C031CD22B4E082D
:1008E000840083134F1883170008F80078084B0220
:1008F00003197C2CCD01CC014C08F8004D08F900FF
:100900000800C601C50146084402031CA32C031DB0
:100910008D2C430845020318A32CA7080319962C15
:10092000831606121030831286069A2C831606123E
:10093000831206164230F700F70B9C2C0000C50A04
:100940000319C60A832C0800280884008313291879
:1009500083174C088000840A8001A80A0319A90A99
:10096000080080080319C62CC4010408C300441001
:10097000831B44140008CC00A42443088400831380
:1009800044188317840A0319850AB12C8A1525296E
:10099000CB010408CA004B10831B4B14440EF038E3
:1009A000C600C607E23EC700323EC90044080F3900
:1009B000C707C707C907E93EC800C807C807430EED
:1009C0000F39C807C907C80DC90DC909C90D4308A2
:1009D0000F39C907C60D0730C5000A30C907C8035B
:1009E000031CEE2CC807C703031CF22CC707C60361
:1009F000031CF62CC607C503031CFA2C45308400E3
:100A0000831307304A054A13840749300402031947
:100A10004A170008F700031D152D4A1B152D4A1A09
:100A2000272DCA19152D2030182DCA154A1230301D
:100A3000F707C4010408C3004410831B441477085B
:100A4000CC00A42443088400831344188317840A29
:100A50004A1F052D8A155629CB010408CA004B10E0
:100A6000831B4B14C41F3C2DCA174A1ECA0AC30954
:100A7000C409C30A0319C40A440EF038C600C607E5
:100A8000E23EC700323EC90044080F39C707C70716
:100A9000C907E93EC800C807C807430E0F39C80791
:100AA000C907C80DC90DC909C90D43080F39C907C0
:100AB000C60D0730C5000A30C907C803031C5C2DEA
:100AC000C807C703031C602DC707C603031C642D9A
:100AD000C607C503031C682D453084008313073007
:100AE0004A054A1384034A05031D7D2D4A1A840AC8
:100AF0004A1A7D2D2030F7009A2D840749300402D0
:100B000003194A170008F700031D8E2D4A1B8E2D6E
:100B10004A1AA82DCA198E2D2030992DCA1F962D3C
:100B20002D30F70084034A13CA139A2DCA154A12AE
:100B30003030F707C4010408C3004410831B441479
:100B40007708CC00A4244308840083134418831737
:100B5000840A4A1F7E2D08004608F8014502031842
:100B6000B42D4508F700C02DF7010830C700C50DAA
:100B7000F70D460877020318F700F80DC70BB72DDD
:100B8000080078084308C5006430C600AC25770823
:100B9000C30078083030031DD42DC41CDB2DC419CC
:100BA000DB2D441A2030D72DC41144124414F80709
:100BB0007808CC00A4244308C5000A30C600AC2540
:100BC0007708C30078083030031DEC2DC419F02DD0
:100BD000441CF02D441A2030F8077808CC00A424D7
:100BE0003030C3074308CC00A4240800C41B082EDF
:100BF0000F30F700430EF7050A3077020318032E73
:100C00003030F707052E4408F7077708CC00A424F6
:100C10000F30C3050A3043020318102E3030122E55
:100C2000C4134408C3074308CC00A4248A157B2AB4
:10100000840183131F308305723083168F000F080D
:1010100033309900A23098009030831298008316E4
:101020001F129F121B0880399B0007309C008312FF
:10103000A001A1013430A2002E30A3003130A40061
:10104000A501A801A90183160612831206168316AC
:101050008611831286110430C300FA30C4008A114D
:1010600006218A15C30B2D286400AB01AA01A60135
:10107000A70137148A11CD218A15C3010630C40097
:101080008A11A5238A157908AF007808AE00C3013C
:101090000730C4008A11A5238A157908AD007808A5
:1010A000AC000430C300FA30C4008A1106218A154E
:1010B000C30B532864005A30B6003608593C031855
:1010C000B60AC4016430C3008A1181248A15360827
:1010D000593C03187F28A608031DA603A708031D73
:1010E000A703A6080319792883168611831286158B
:1010F0007D288316861183128611B60164008C1A2E
:101100008328371C5D2864006B30B8008C1E8C2847
:101110008C1E88281A08B80063303802EA3E03188B
:10112000AE28163EB12A1430A600AE28A601AE287D
:101130001430A700AE281430A700A600AE28A701DF
:10114000AE28A708031DA7288A11CD218A15AE282D
:101150003714AE283710AE288A0100281812181646
:10116000AA0A0319AB0AC3010630C4008A11A523D9
:101170008A157908AF007808AE0003102E0DC30061
:101180002F0DC400B3304302F7004408FA006A3060
:10119000031C6B30FA027708B0007A08B100C30173
:1011A0000730C4008A11A5238A157908AD00780894
:1011B000AC0003102C0DC3002D0DC400B33043024E
:1011C000F7004408FA006A30031C6B30FA02770813
:1011D000B2007A08B300C3010830C4008A11A52305
:1011E0008A157908AD007808AC0003102C0DC300F7
:1011F0002D0DC400B3304302F7004408FA006A30F2
:10120000031C6B30FA027708B4007A08B500C201FB
:10121000C4013230C3008A1181248A1524300C1E87
:101220000F299900C4013230C3008A1181248A1524
:10123000A9013930A8004D30CC008A11A4248A15A8
:101240002230840083138A11B12C8A152030CC00FF
:101250008A11A4248A15C1013930410784008313FF
:10126000800803194B29C4013230C3008A1181243C
:101270008A1539304107840083130008C3004308EE
:101280000C1E402999004108C10A393E840083138D
:101290000008C2062C29A9013930A80010308400AA
:1012A0002B08C4002A08C3008A11C82C8A152030D4
:1012B000CC008A11A4248A15C10139304107840069
:1012C0008313800803197C29C4013230C3008A11BA
:1012D00081248A1539304107840083130008C30034
:1012E00043080C1E712999004108C10A393E840047
:1012F00083130008C2065D29A9013930A800103007
:1013000084003108C4003008C3008A112C258A15D6
:101310002030CC008A11A4248A15C101393041073C
:101320008400831380080319AD29C4013230C3003F
:101330008A1181248A1539304107840083130008FB
:10134000C30043080C1EA22999004108C10A393E76
:10135000840083130008C2068E29A9013930A80031
:10136000103084003308C4003208C3008A112C25D1
:101370008A152030CC008A11A4248A15C101393085
:1013800041078400831380080319DE29C401323029
:10139000C3008A1181248A153930410784008313E0
:1013A0000008C30043080C1ED32999004108C10A54
:1013B000393E840083130008C206BF29A9013930D1
:1013C000A800103084003508C4003408C3008A1116
:1013D0002C258A152030CC008A11A4248A15C1013D
:1013E0003930410784008313800803190F2AC40190
:1013F0003230C3008A1181248A15393041078400B4
:1014000083130008C30043080C1E042A99004108F6
:10141000C10A393E840083130008C206F029A901DD
:101420003930A8002608C3001B30C4008A11C1252A
:101430008A152030CC008A11A4248A15C1013930C4
:10144000410784008313800803193E2AC401323007
:10145000C3008A1181248A1539304107840083131F
:101460000008C30043080C1E332A99004108C10A32
:10147000393E840083130008C2061F2AA9013930AF
:10148000A8002708C3001B30C4008A11C1258A1593
:101490002030CC008A11A4248A15C10139304107BB
:1014A00084008313800803196D2AC4013230C300FD
:1014B0008A1181248A15393041078400831300087A
:1014C000C30043080C1E622A99004108C10A393E34
:1014D000840083130008C2064E2AA9013930A800EF
:1014E0002A30CC008A11A4248A154208C300373060
:1014F000C4008A11F62D8A150A30CC008A11A42462
:101500008A150D30CC008A11A4248A15C101393006
:1015100041078400831380080319A02AC4013230D4
:10152000C3008A1181248A154108C10A393E84000A
:1015300083130008C30043080C1E9C2A9900872AC5
:10154000C4013230C3008A1181248A156400173027
:10155000C4007030C3008A1181248A1564005B289E
:1015600063000A108A140A1182079628AE28AE2852
:10157000AE28AE289328A128AE28AE289F28AE28F2
:10158000AE289828AE28AE28A828AA28AE28AC28CD
:06159000AE28AE289B28E6
:061980008A0100280800A6
:1000000009308A001E2900000A108A100A110B3ECE
:1000100003188A0A820000345E34BC34E23461344E
:100020003F34DD348334C2349C347E342034A334F2
:10003000FD341F3441349D34C33421347F34FC34C7
:10004000A23440341E345F340134E334BD343E34D2
:1000500060348234DC3423347D349F34C134423400
:100060001C34FE34A034E134BF345D3403348034B6
:10007000DE343C346234BE34E03402345C34DF3489
:10008000813463343D347C342234C0349E341D3496
:100090004334A134FF3446341834FA34A4342734BA
:1000A00079349B34C5348434DA3438346634E534F6
:1000B000BB3459340734DB34853467343934BA34CB
:1000C000E4340634583419344734A534FB347834D6
:1000D0002634C4349A3465343B34D93487340434F8
:1000E0005A34B834E634A734F9341B344534C634B2
:1000F00098347A342434F834A63444341A34993495
:10010000C73425347B343A3464348634D8345B3491
:100110000534E734B9348C34D23430346E34ED34B1
:10012000B33451340F344E341034F234AC342F34F1
:1001300071349334CD3411344F34AD34F3347034DE
:100140002E34CC349234D3348D346F343134B234D1
:10015000EC340E345034AF34F13413344D34CE34E7
:10016000903472342C346D343334D1348F340C34B5
:100170005234B034EE3432346C348E34D0345334A0
:100180000D34EF34B134F034AE344C341234913495
:10019000CF342D347334CA34943476342834AB34A9
:1001A000F5341734493408345634B434EA346934F5
:1001B0003734D5348B3457340934EB34B5343634D2
:1001C00068348A34D4349534CB3429347734F434D5
:1001D000AA3448341634E934B73455340B348834EF
:1001E000D63434346A342B3475349734C9344A34B1
:1001F0001434F634A83474342A34C834963415349C
:100200004B34A934F734B634E8340A345434D73490
:1002100089346B3435348A068A0623104D39E1352A
:10022000EF366539A0127310A82129103218B01BBF
:10023000A025C1254C050D00231068102D10D33BBF
:10024000693A6334A0276E10C832613A6937671083
:10025000E6377210321873178A06000023106310F5
:100260002D10CE326532A0216F36E4327217A029EC
:10027000F734F43168104F336610C832613A693789
:1002800067178A06000123106F102D104F3865374D
:10029000203AE8322022EF366510E6377210321825
:1002A00073178A06000123106C102D10CC37E3352C
:1002B000203AE8322022EF3665178A060001231023
:1002C00078102D104F386537203AE8322022EF366B
:1002D000651061376410F33B693A6334A0276E10F0
:1002E000C832613A693767178A060001231069101E
:1002F0002D105039693774107434E939A0246E33E5
:100300006F39ED30F4346F372E050D002310721065
:100310002D10D232F032613AA036E530F33AF232A3
:10032000A032F632F23CA039E5316F3764178A0605
:100330000001231073102D10D334EE33EC32A036AD
:10034000E530F33AF2322E050D00231075102D1012
:100350005538E430F43220336939ED3B61396517A3
:10036000A0236F10F437203AE8322021EF377410C1
:10037000CC37613265392E050D0023103C3B6539C1
:100380003E10BC39E538F532EE31651F201E693765
:10039000F334E432DB18AF183018A0215D1F201EA3
:1003A000F335F92DB11731183010C32E3E10BC397A
:1003B000EB3CDB18AF183018A0215D1F2000BC30CB
:1003C0006D31E9326E3ADB18AF183018A0215D1F8D
:1003D000201EE832613A6937E72DF32E3E103C3299
:1003E000EF36E52DF32E3E10BC31E832E3353E0505
:1003F0000D050D002D19B719B11A2000000053305A
:100400008400831300080319122A0230F800F70150
:10041000F70B082AF80B072A9730F700F70B0E2A7C
:10042000800B052A080083165308D5005208D40013
:100430005508FA005408840083137A18831780083B
:100440000319262AD40A0319D50A182A5208540275
:10045000F7005508FA005308031C530FFA027708F7
:10046000F80083120800831603178C170C14000081
:10047000000003186A2A83120C087F3983160313BD
:10048000D300831203170D0883160313D4008312BD
:1004900003170F0883160313D500530883120C1E8D
:1004A0004F2A990083165408831203178D00831670
:1004B00003135508831203178F0083168C170C142F
:1004C000000000000313D20B662A682A03176A2A69
:1004D000952A031783120C0D0E0D7F398316031313
:1004E000D300831203170D0883160313D40083125D
:1004F00003170F0883160313D500530883120C1E2D
:100500007F2A990083165408831203178D008316DF
:1005100003135508831203178F008D0A03198F0ADE
:10052000031083160313D20B342A831208008008A9
:100530000319B42A8316D3010408D2005310831B75
:100540005314000883120C1EA32A99008316520824
:100550008400831353188317840A031DB22A83125D
:10056000850A83168312972A0800831603178C17AF
:100570000C140000000083120C087F3903190F2BA4
:1005800083160313D200831203170D088316031377
:10059000D300831203170F0883160313D4005208E5
:1005A00083120C1ED12A9900831653088312031755
:1005B0008D00831603135408831203178F008316CC
:1005C0008C170C140000000083120C0D0E0D7F39E7
:1005D00003190F2B83160313D200831203170D0880
:1005E00083160313D300831203170F088316031314
:1005F000D400520883120C1EFB2A9900831653085C
:10060000831203178D0083160313540883120317F4
:100610008F008D0A03198F0A0313B52A03170313DA
:10062000080024308316A0004930A1006430A200E5
:100630003A30A3002030A4006930A5007230A60033
:100640006D30A7007230A8006130A9006B30AA009D
:100650003430AB002E30AC006330AD002030AE0043
:100660003130AF003530B0003930B1003730B20032
:100670002030B3003230B4003030B5003130B60035
:100680003030B7002D30B8003030B9003830BA0003
:100690002D30BB003230BC003530BD002030BE00F4
:1006A0003130BF003930C0003A30C1003430C200B0
:1006B0003730C3003A30C4003530C5003830C6008A
:1006C0005A30C7002030C8006B30C9006130CA0002
:1006D0006B30CB006C30CC002030CD002430CE000D
:1006E000CF01D301A030D20083121322013078024F
:1006F000A03E840083130008243C031D8B2B83162B
:10070000D301A030D2008312132201307802A03E20
:100710008400831380010B3003178D0001308F009C
:1007200003100F3083160313D200831233222230BA
:10073000840083139722133003178D0001308F003C
:100740000314103083160313D20083123322233094
:100750000C1EA82B9900A4308400831397220A3022
:100760000C1EB02B99000D300C1EB42B99002330B9
:100770000C1EB82B99000A300C1EBC2B99000D30B2
:100780000C1EC02B99001C3003178D0001308F0008
:100790000313B5222E3003178D0001308F00031391
:1007A000B522433003178D0001308F000313B522AB
:1007B000533003178D0001308F000313B5225F30D3
:1007C00003178D0001308F000313B5227630031715
:1007D0008D0001308F000313B522863003178D0082
:1007E00001308F000313B522993003178D000130BB
:1007F0008F000313B522A53003178D0001308F0041
:100800000313B52223300C1E032C99000A300C1E52
:10081000072C99000D300C1E0B2C9900BD300317CE
:100820008D0001308F000313B522DF3003178D00D8
:1008300001308F000313B52264000800831686146C
:100840000610831206100D30F700F70B252C8316C7
:100850008610831286100D30F700F70B2D2C8316AF
:1008600006140D30F700F70B332C861483120800A2
:10087000831686140D30F700F70B3C2C06140D3050
:10088000F700F70B412C8610831286100D30F7000D
:10089000F70B482C83160610831206100D30F70054
:1008A000F70B502C0800E208031D5B2C8316861002
:1008B000831286105E2C8316861483125F2C602CA4
:1008C000612C831606141A30F700F70B652C000014
:1008D000061083120610A7080319742C831606123B
:1008E000103083128606782C8316061283120616A1
:1008F0004230F700F70B7A2C0000A7080319862C6A
:10090000831606121030831286068A2C831606126E
:100910008312061608008316861406141A30F70090
:10092000F70B902C000086148312861C9A2C013041
:10093000E2009B2CE2018316061083120610A70822
:100940000319A82C83160612103083128606AC2CCD
:1009500083160612831206164230F700F70BAE2CF0
:100960000000A7080319BA2C831606121030831250
:100970008606BE2C83160612831206166208F8003D
:1009800008000830DF00DF080319D32CDE1FCB2C52
:100990000130E100CC2CE1016108E2005324031096
:1009A000DE0DDF03C32C8B247808E0006008F8001C
:1009B00008000830DF00DF080319EB2C8B24F8084F
:1009C0000319E62C0310DE0D5E14E92C0310DE0D76
:1009D0005E10DF03DB2C5D08E20053245E08F800A4
:1009E00008000310D20D1E2438245208DE00C12452
:1009F0005308DD00DE00C12438245208DE00C12483
:100A0000DD01D9247808D600DD01D9247808D50085
:100A10005508DC005608DB000130DD00D9247808D9
:100A2000DA001E245208D9005308D8005208D70013
:100A3000D401DE015430DD002F30E500E401E30194
:100A4000E201E1010130E0000730DF002F30E50076
:100A5000E6010530E700E80167085D0784008313BD
:100A60005E1883170008EA008030F7006808F80075
:100A700003193E2D0310F70CF80B3A2D77086A0581
:100A8000031D5C2DE70803195C2DE5036808063C8F
:100A9000031C4C2DE80A4E2DE801E703A7080319B3
:100AA000572D831606121030831286065B2D83168F
:100AB0000612831206162C2D08306502E600E608A1
:100AC0000319942D0530E700670F672D852D013040
:100AD00067025F3E84008313801F742DE7080319AB
:100AE000742D0130E900752DE9015F30670784003E
:100AF00083130310000D80005F30670784008313A9
:100B0000690800078000E703642DE603A7080319BE
:100B10008F2D83160612103083128606932D8316AE
:100B20000612831206165F2DE7016708053C031CB9
:100B3000B72D67085D07F8005E08FA000318FA0A87
:100B40007808840083137A1883170008EC005F305C
:100B500067078400831300086C06EC0078088400A3
:100B600083137A1883176C088000E70A952D6508AF
:100B7000083C031C1E2D5D08840083135E18831738
:100B80000008F80078085A020319C82DDC01DB01BF
:100B90005B08F8005C08F9000800831686138613CA
:100BA000831286130230D300F830D4000830D40208
:100BB000031CE62D5430840083130310800C0008BE
:100BC0000319E62DE42D0000800BE32DD30BD42D6B
:100BD000831686170330F700F70BEC2D8312861B64
:100BE000F42D0030F800042E2B30F700F70BF62D13
:100BF0005210861F52149F30F700F70BFD2D002E68
:100C0000003052180130F80008000130D3005308BA
:100C1000083C031C562E0310D20C00300318013080
:100C2000D4005408D50083168613861383128613C6
:100C30000630F700F70B1A2E0000D5080319302EE6
:100C4000831686138613831286170630F700F70B78
:100C5000272E0000861B2F2E0030F8004E2E3F2E30
:100C6000831686138613831286130630F700F70B5C
:100C7000372E0000861F3F2E0030F8004E2E213008
:100C8000F700F70B412E83168613861383128617FF
:100C90002130F700F70B4A2E0130F800F808031D49
:100CA000542E0030F800582ED30A072E0130F800D9
:100CB0000800D501D40155085302031C7B2E031DE7
:100CC000652E5208540203187B2EA70803196E2EB6
:100CD00083160612103083128606722E83160612B1
:100CE000831206164230F700F70B742E0000D40A68
:100CF0000319D50A5B2E08000130D4005408083CC3
:100D0000031CA72E831686138613831286130930BD
:100D1000F700F70B892E831686170330F700F70BC1
:100D20008F2E83125610861B56144230F700F70B95
:100D3000972E0000003056180130F800F808031D07
:100D4000A32E0310A42E0314D50CD40A7E2E55080E
:100D5000F8008A15652AD41BBE2E0F30F700530EFB
:100D6000F7050A3077020318B82E3030F707BA2E8D
:100D70005408F70777080C1EBB2E99000F30D305D7
:100D80000A3053020318C62E3030C82ED41354082C
:100D9000D30753080C1ECA2E99008A15B52A2808B5
:100DA00084008313291883175D088000840A80015A
:100DB000A80A0319A90A080080080319F12ED30113
:100DC0000408D2005310831B53140008DD00CF2603
:100DD00052088400831353188317840A0319850A61
:100DE000DC2E8A15DA2ADA010408D9005A10831B8E
:100DF0005A14530EF038D500D507E23ED600323EE5
:100E0000D80053080F39D607D607D807E93ED700D0
:100E1000D707D707520E0F39D707D807D70DD80DE8
:100E2000D809D80D52080F39D807D50D0730D4008E
:100E30000A30D807D703031C192FD707D603031C82
:100E40001D2FD607D503031C212FD507D403031C60
:100E5000252F543084008313073059055913840714
:100E600058300402031959170008F700031D402FDA
:100E7000591B402F591A522FD919402F2030432F78
:100E8000D91559123030F707D3010408D200531096
:100E9000831B53147708DD00CF2652088400831388
:100EA00053188317840A591F302F8A150B2BDC0126
:100EB0000408DB005C10831B5C14D51F672FDB1755
:100EC0005B1EDB0AD409D509D40A0319D50A550ECD
:100ED000F038D700D707E23ED800323EDA00550896
:100EE0000F39D807D807DA07E93ED900D907D9075B
:100EF000540E0F39D907DA07D90DDA0DDA09DA0DF0
:100F000054080F39DA07D70D0730D6000A30DA0750
:100F1000D903031C872FD907D803031C8B2FD807AD
:100F2000D703031C8F2FD707D603031C932F5630EC
:100F30008400831307305B055B1384035B05031D8B
:100F4000A82F5B1A840A5B1AA82F2030F700C52F40
:100F500084075A30040203195B170008F700031DC9
:100F6000B92F5B1BB92F5B1AD32FDB19B92F203098
:100F7000C42FDB1FC12F2D30F70084035B13DB135D
:100F8000C52FDB155B123030F707D5010408D400FC
:100F90005510831B55147708DD00CF2654088400B4
:100FA000831355188317840A5B1FA92F080055085F
:100FB000F80154020318DF2F5408F700EB2FF70154
:100FC0000830D600D40DF70D550877020318F70046
:080FD000F80DD60BE22F08001A
:10100000831603178C170C140000000083120C08C1
:101010007F39031948280313D20003170D0803135F
:10102000D30003170F080313D4005208DD008A1100
:10103000CF268A15530803178D000313540803178E
:101040008F0083168C170C140000000083120C0D07
:101050000E0D7F39031948280313D20003170D081A
:101060000313D30003170F080313D4005208DD0045
:101070008A11CF268A15530803178D0003135408CD
:1010800003178F008D0A03198F0A03130028031713
:1010900003138A15D52B530855068039D700D31F63
:1010A0005628D209D309D20A0319D30AD51F5D28BD
:1010B000D409D509D40A0319D50A1030D600F7018E
:1010C000FA01D30CD20C031C6B285408F707031841
:1010D000FA0A5508FA07FA0CF70CF90CF80CD60BBB
:1010E0006128D71F7828F809F909F80A0319F90ABD
:1010F0008A15DE2B550857068039D900D51F85285B
:10110000D409D509D40A0319D50AD71F8C28D609C2
:10111000D709D60A0319D70AF801F901F701FA012C
:101120005708031D962856080319B0281030D80018
:101130000310D40DD50DF70DFA0D57087A02031DD3
:10114000A32856087702031CAC285608F702031C94
:10115000FA035708FA020314F80DF90DD80B982872
:10116000D91FB728F809F909F80A0319F90A8A15E5
:10117000EA2B78085208D4006430D5008A11D727AA
:101180008A157708D20078083030031DCE28D31C8A
:10119000D728D319D728531A2030D128D311531266
:1011A0005314F8077808DD008A11CF268A155208F3
:1011B000D4000A30D5008A11D7278A157708D200C3
:1011C00078083030031DEA28D319F028531CF02882
:1011D000531A2030F8077808DD008A11CF268A15C7
:1011E0003030D2075208DD008A11CF268A15080058
:1011F000D31B0C290F30F700520EF7050A30770287
:10120000031805293030F70707295308F70777082F
:10121000DD008A11CF268A150F30D2050A3052021E
:101220000318142930301629D3135308D207520853
:10123000DD008A11CF268A158A158A2C8401831332
:101240001F308305723083168F000F0833309900EA
:10125000A230980090308312980083161F129F12BC
:101260001B0880399B0007309C008312A001A1015C
:101270003430A2002E30A3003130A400A501A80113
:10128000A90183160612831206168316861183128D
:1012900086110430D200FA30D3008A11FF218A155A
:1012A000D20B4B296400AB01AA01A601A7013B1494
:1012B0008A1111238A15D2010630D3008A11F12434
:1012C0008A157908AF007808AE00D2010730D30044
:1012D0008A11F1248A157908AD007808AC008A11CA
:1012E000CD258A15CC30D2008A1105268A154430C6
:1012F000D2008A1105268A150430D200FA30D300B4
:101300008A11FF218A15D20B7E2964005A30BA0057
:101310003A08593C0318BA0AD3016430D2008A1142
:1013200059268A153A08593C0318AA29A608031D0C
:10133000A603A708031DA703A6080319A42983165B
:10134000861183128615A8298316861183128611A9
:10135000BA0164008C1AAE293B1C882964006B30EA
:10136000BC008C1EB7298C1EB3291A08BC00633040
:101370003C02EA3E0318D929163EB72C1430A600C9
:10138000D929A601D9291430A700D9291430A700DA
:10139000A600D929A701D929A708031DD2298A1196
:1013A00011238A15D9293B14D9293B10D9298A013F
:1013B000002818121816AA0A0319AB0AD20106301F
:1013C000D3008A11F1248A157908AF007808AE009D
:1013D00003102E0DD2002F0DD300B3305202F700B0
:1013E0005308FA006A30031C6B30FA027708B00029
:1013F0007A08B100D2010730D3008A11F1248A158E
:101400007908AD007808AC0003102C0DD2002D0D2A
:10141000D300B3305202F7005308FA006A30031CBD
:101420006B30FA027708B2007A08B300D2010830B4
:10143000D3008A11F1248A157908AD007808AC0030
:1014400003102C0DD2002D0DD300B3305202F70043
:101450005308FA006A30031C6B30FA027708B400B4
:101460007A08B5008A11CD258A15CC30D2008A11B0
:1014700005268A154430D2008A1105268A15640093
:101480001730D3007030D2008A1159268A158A117C
:10149000CD258A15CC30D2008A1105268A15BE309A
:1014A000D2008A1105268A15C7014708083C031C8B
:1014B0006F2A3D304707F800FA010318FA0A780846
:1014C000D2007A08D3008A117C2E8A155208840033
:1014D00083135318831778088000C70A552A3D08DC
:1014E000B8003E08B900D3013D30D2000830D40026
:1014F000D501D601540856020318932A56085207FC
:10150000F8005308FA000318FA0A780884008313D5
:101510007A188317000855068A1104208A15F800E6
:10152000D500D60A7A2A5508F80078084502031D26
:10153000A22A4408103C031DA22A3908B700380823
:10154000B600A52A8330B700B601C7014708083C9A
:10155000031CBC2A3D304707840083130008D200D7
:10156000D3003730D4008A11AB2E8A1520300C1EE0
:10157000B72A9900C70AA62AD101D3013230D20076
:101580008A1159268A1524300C1EC42A9900D301C9
:101590003230D2008A1159268A15A9014830A80094
:1015A0004D30DD008A11CF268A1522308400831346
:1015B0008A11DC2E8A152030DD008A11CF268A158B
:1015C000D001483050078400831380080319002B92
:1015D000D3013230D2008A1159268A15483050077B
:1015E000840083130008D20052080C1EF52A9900CB
:1015F0005008D00A483E840083130008D106E12A2F
:10160000A9014830A800103084002B08D3002A0814
:10161000D2008A11F32E8A152030DD008A11CF26E0
:101620008A15D001483050078400831380080319BD
:10163000312BD3013230D2008A1159268A15483015
:101640005007840083130008D20052080C1E262B7A
:1016500099005008D00A483E840083130008D10640
:10166000122BA9014830A800103084003108D500A1
:101670003008D4008A1157278A152030DD008A11DE
:10168000CF268A15D0014830500784008313800884
:101690000319622BD3013230D2008A1159268A15E0
:1016A00048305007840083130008D20052080C1EF3
:1016B000572B99005008D00A483E84008313000835
:1016C000D106432BA9014830A8001030840033080C
:1016D000D5003208D4008A1157278A152030DD0042
:1016E0008A11CF268A15D001483050078400831311
:1016F00080080319932BD3013230D2008A11592666
:101700008A1548305007840083130008D20052081D
:101710000C1E882B99005008D00A483E8400831381
:101720000008D106742BA9014830A80010308400AD
:101730003508D5003408D4008A1157278A1520307F
:10174000DD008A11CF268A15D00148305007840069
:10175000831380080319C42BD3013230D2008A11BD
:1017600059268A1548305007840083130008D20098
:1017700052080C1EB92B99005008D00A483E84002C
:1017800083130008D106A52BB608031DD62B3708F6
:10179000833C031DD62BA9014830A800FA3003175B
:1017A0008D0001308F0003130028032C3708D3006D
:1017B0003608D200D5010630D4004B287908D30072
:1017C0007808D2003708D5003608D400D701043095
:1017D000D6007A287908FA007808D2077908031821
:1017E000790FD307A9014830A800103084005308AE
:1017F000D5005208D4008A1157278A152030DD0001
:101800008A11CF268A15D0014830500784008313EF
:1018100080080319232CD3013230D2008A115926B3
:101820008A1548305007840083130008D2005208FC
:101830000C1E182C99005008D00A483E84008313CF
:101840000008D106042CA9014830A8002608D200BF
:101850001B30D300B9202030DD008A11CF268A1535
:10186000D001483050078400831380080319502C9E
:10187000D3013230D2008A1159268A1548305007D8
:10188000840083130008D20052080C1E452C9900D6
:101890005008D00A483E840083130008D106312C3A
:1018A000A9014830A8002708D2001B30D300B92076
:1018B0002030DD008A11CF268A15D001483050072C
:1018C00084008313800803197D2CD3013230D200A9
:1018D0008A1159268A15483050078400831300085E
:1018E000D20052080C1E722C99005008D00A483EB3
:1018F000840083130008D1065E2CA9014830A8009B
:101900002A30DD008A11CF268A155108D2003730DF
:10191000D300F8280D30DD008A11CF268A150A3051
:10192000DD008A11CF268A15D00148305007840087
:10193000831380080319AE2CD3013230D2008A11F0
:1019400059268A155008D00A483E8400831300089F
:10195000D20052080C1EAA2C9900952CD3013230CB
:10196000D2008A1159268A156400862963000A105C
:101970008A100A158207C129D929D929D929D92933
:10198000BE29CC29D929D929CA29D929D929C32994
:10199000D929D929D329D529D929D729D929D92943
:0219A000C62956
:04400E00143FFC3F20
:00000001FF
;PIC16F88
;CRC=1109 CREATED="25-VIII-10 21:48"
;CRC=98D6 CREATED="05-12-10 13:41"