motor_ctrl: break when going to fast
authorErik Andresen <erik@vontaene.de>
Tue, 6 Sep 2016 19:46:02 +0000 (21:46 +0200)
committerErik Andresen <erik@vontaene.de>
Tue, 6 Sep 2016 19:46:02 +0000 (21:46 +0200)
avr/motor_ctrl/main.c
avr/motor_ctrl/main.hex
config/razor.yaml
scripts/pid_manual.py
scripts/wt_node.py

index 6d9f620..abbf538 100644 (file)
 #define STEP_PER_M_LEFT (STEP_PER_M_AVG)
 #define STEP_PER_M_RIGHT (STEP_PER_M_AVG)
 #define WHEEL_DIST 0.36923 // Real: 0.252
+#define PWM_BREAK INT16_MIN
 
 enum mode {
        MOTOR_MANUAL,
@@ -698,6 +699,8 @@ static void update_motor(void) {
                if (motor1 == 0) {
                        // stop
                        PORTC &= ~(1 << 3) & ~(1 << 2);
+               } else if (motor1 == PWM_BREAK) {
+                       PORTC |= (1 << 3) | (1 << 2);
                } else if ((!motor1_switch && motor1 > 0) || (motor1_switch && motor1 < 0)) {
                        // forward
                        uint8_t tmp=PORTC;
@@ -720,6 +723,8 @@ static void update_motor(void) {
                if (motor2 == 0) {
                        // stop
                        PORTC &= ~(1 << 5) & ~(1 << 4);
+               } else if (motor2 == PWM_BREAK) {
+                       PORTC |= (1 << 5) | (1 << 4);
                } else if ((!motor2_switch && motor2 > 0) || (motor2_switch && motor2 < 0)) {
                        // forward
                        uint8_t tmp=PORTC;
@@ -742,6 +747,8 @@ static void update_motor(void) {
                if (motor3 == 0) {
                        // stop
                        PORTC &= ~(1 << 7) & ~(1 << 6);
+               } else if (motor3 == PWM_BREAK) {
+                       PORTC |= (1 << 7) | (1 << 6);
                } else if ((!motor3_switch && motor3 > 0) || (motor3_switch && motor3 < 0)) {
                        // forward
                        uint8_t tmp=PORTC;
@@ -764,6 +771,8 @@ static void update_motor(void) {
                if (motor4 == 0) {
                        // stop
                        PORTD &= ~(1 << 3) & ~(1 << 2);
+               } else if (motor4 == PWM_BREAK) {
+                       PORTD |= (1 << 3) | (1 << 2);
                } else if ((!motor4_switch && motor4 > 0) || (motor4_switch && motor4 < 0)) {
                        // forward
                        uint8_t tmp=PORTD;
@@ -863,26 +872,26 @@ static void update_pid(void) {
        static int32_t esum4=0;
 
        // protect motors from damage if stalling
-       if (labs(esum1) > 120000 && speed1 == 0) {
+       if (labs(esum1) > 140000 && speed1 == 0) {
                motor1 = 0;
                motor1_mode = MOTOR_MANUAL;
                error_state |= (1<<4);
                esum1 = 0;
        }       
-       if (labs(esum2) > 120000 && speed2 == 0) {
+       if (labs(esum2) > 140000 && speed2 == 0) {
                motor2 = 0;
                motor2_mode = MOTOR_MANUAL;
                error_state |= (1<<5);
                esum2 = 0;
        }       
-       if (labs(esum3) > 120000 && speed3 == 0) {
+       if (labs(esum3) > 140000 && speed3 == 0) {
                motor3 = 0;
                motor3_mode = MOTOR_MANUAL;
                error_state |= (1<<6);
                esum3 = 0;
        }       
        // protect motors from damage if stalling
-       if (labs(esum4) > 120000 && speed4 == 0) {
+       if (labs(esum4) > 140000 && speed4 == 0) {
                motor4 = 0;
                motor4_mode = MOTOR_MANUAL;
                error_state |= (1<<7);
@@ -891,7 +900,7 @@ static void update_pid(void) {
 
        if (motor1_mode == MOTOR_PID) {
                if (speed1_wish != speed1_wish_old) {
-                       esum1 = 0;
+                       if (abs(speed1_wish - speed1_wish_old) > 500) esum1 = 0;
                        speed1_wish_old = speed1_wish;
                }
 
@@ -905,15 +914,15 @@ static void update_pid(void) {
                        motor1 = KP*e + KI*PID_T*esum1 + KD/PID_T*(e - eold1);
                        eold1 = e;
 
-                       if (motor1 > 0 && speed1_wish < 0) motor1=0;
-                       else if (motor1 < 0 && speed1_wish > 0) motor1=0;
+                       if (motor1 > 0 && speed1_wish < 0) motor1=PWM_BREAK;
+                       else if (motor1 < 0 && speed1_wish > 0) motor1=PWM_BREAK;
                        else if (motor1 > 255) motor1 = 255;
                        else if (motor1 < -255) motor1 = -255;
                }
        }
        if (motor2_mode == MOTOR_PID) {
                if (speed2_wish != speed2_wish_old) {
-                       esum2 = 0;
+                       if (abs(speed2_wish - speed2_wish_old) > 500) esum2 = 0;
                        speed2_wish_old = speed2_wish;
                }
 
@@ -927,15 +936,15 @@ static void update_pid(void) {
                        motor2 = KP*e + KI*PID_T*esum2 + KD/PID_T*(e - eold2);
                        eold2 = e;
 
-                       if (motor2 > 0 && speed2_wish < 0) motor2=0;
-                       else if (motor2 < 0 && speed2_wish > 0) motor2=0;
+                       if (motor2 > 0 && speed2_wish < 0) motor2=PWM_BREAK;
+                       else if (motor2 < 0 && speed2_wish > 0) motor2=PWM_BREAK;
                        else if (motor2 > 255) motor2 = 255;
                        else if (motor2 < -255) motor2 = -255;
                }
        }
        if (motor3_mode == MOTOR_PID) {
                if (speed3_wish != speed3_wish_old) {
-                       esum3 = 0;
+                       if (abs(speed3_wish - speed3_wish_old) > 500) esum3 = 0;
                        speed3_wish_old = speed3_wish;
                }
 
@@ -949,15 +958,15 @@ static void update_pid(void) {
                        motor3 = KP*e + KI*PID_T*esum3 + KD/PID_T*(e - eold3);
                        eold3 = e;
 
-                       if (motor3 > 0 && speed3_wish < 0) motor3=0;
-                       else if (motor3 < 0 && speed3_wish > 0) motor3=0;
+                       if (motor3 > 0 && speed3_wish < 0) motor3=PWM_BREAK;
+                       else if (motor3 < 0 && speed3_wish > 0) motor3=PWM_BREAK;
                        else if (motor3 > 255) motor3 = 255;
                        else if (motor3 < -255) motor3 = -255;
                }
        }
        if (motor4_mode == MOTOR_PID) {
                if (speed4_wish != speed4_wish_old) {
-                       esum4 = 0;
+                       if (abs(speed4_wish - speed4_wish_old) > 500) esum4 = 0;
                        speed4_wish_old = speed4_wish;
                }
 
@@ -971,8 +980,8 @@ static void update_pid(void) {
                        motor4 = KP*e + KI*PID_T*esum4 + KD/PID_T*(e - eold4);
                        eold4 = e;
 
-                       if (motor4 > 0 && speed4_wish < 0) motor4=0;
-                       else if (motor4 < 0 && speed4_wish > 0) motor4=0;
+                       if (motor4 > 0 && speed4_wish < 0) motor4=PWM_BREAK;
+                       else if (motor4 < 0 && speed4_wish > 0) motor4=PWM_BREAK;
                        else if (motor4 > 255) motor4 = 255;
                        else if (motor4 < -255) motor4 = -255;
                }
index 3a80dc0..c405f68 100644 (file)
 :1001A000A9020C50B9918688083CA6AAAA2ABE00CA\r
 :1001B0000000803F45464765666700202B2D2E30A6\r
 :1001C00031323334353637383968000011241FBED8\r
-:1001D000CFE5D8E0DEBFCDBF10E0A0E6B0E0E0E5BF\r
-:1001E000F9E202C005900D92AA37B107D9F721E0D4\r
+:1001D000CFE5D8E0DEBFCDBF10E0A0E6B0E0E8E4B8\r
+:1001E000FAE202C005900D92AA37B107D9F721E0D3\r
 :1001F000AAE7B0E001C01D92A037B207E1F70E9464\r
-:1002000020060C94A6140C9400001F920F920FB6B7\r
+:1002000020060C9422150C9400001F920F920FB63A\r
 :100210000F9211242F933F934F935F936F937F938C\r
 :100220008F939F93AF93BF93EF93FF9381B1887F99\r
 :10023000803881F040F4803609F01CC385EC86BF1D\r
@@ -74,7 +74,7 @@
 :100490008091A4009091A500A091A600B091A70022\r
 :1004A0006627782F892F9A2F622B6093A400709370\r
 :1004B000A5008093A6009093A7002DEC30E344EBB9\r
-:1004C00055E40E9455110E9435107093D900609335\r
+:1004C00055E40E94D1110E94B1107093D90060933D\r
 :1004D000D8007093D7006093D60081E08093DF004E\r
 :1004E0008093DE00B7C183B190E0A0E0B0E00EC021\r
 :1004F00023B18091A4009091A500A091A600B09195\r
@@ -91,7 +91,7 @@
 :1005A000DB0058C183B18093AB0003C083B180935B\r
 :1005B000AA0081E08093FA004DC18091F10090E0A3\r
 :1005C000FC013297E13AF10508F04BC1E65DFF4FBF\r
-:1005D0000C9421128AB59BB53CC188B599B539C137\r
+:1005D0000C949D128AB59BB53CC188B599B539C1BB\r
 :1005E00083B537C18CB735C113B834C18091E600EB\r
 :1005F0009091E7000EC08091E4009091E50009C061\r
 :100600008091E2009091E30004C08091E00090911D\r
 :100AA0000F900FBE0F901F9018959C018AB188611E\r
 :100AB0008AB9579A80B5866080BD40E050E084E0F6\r
 :100AC000220F331F441F551F8A95D1F760E079E04C\r
-:100AD0008DE390E00E940212DA01C9010197A10999\r
+:100AD0008DE390E00E947E12DA01C9010197A1091D\r
 :100AE000B109892F9A2FAB2FBB27A7FDBA9580BDDF\r
 :100AF000215029B98FEF90E09093FC008093FB0088\r
 :100B00009093FE008093FD0008955D9BFECFFC0155\r
 :100B3000DF91CF910895CF93DF93EC01CE01219601\r
 :100B4000FC012081222319F00E948505F7CFDF9157\r
 :100B5000CF9108955F9BFECF8CB190E008950C94E7\r
-:100B6000AA056FEA75E08BE895E00C945412CF93D8\r
+:100B6000AA056FEA75E08BE895E00C94D012CF935C\r
 :100B7000DF93FC01E253FF4FA081B181EC01C4532C\r
 :100B8000DF4F28813981A217B307A1F05D9B12C006\r
 :100B90002C912CB920813181AC0145535F4F241732\r
 :100C70000E9455050E94B10580E582B986B78B7E3A\r
 :100C800086BF85EC86BF81EA8FBD89E08EBD1BBC27\r
 :100C90001ABC19BC18BC89E685BD13BC83BF1CBE39\r
-:100CA00080E790E00E94D11285B78F7885BF84E0FD\r
-:100CB00089BF78942224239433243A940FEF10E0D0\r
-:100CC0008091F1008F3F41F48091F000853A21F44A\r
-:100CD000F894E0E0F8E109958091FA00882309F49E\r
-:100CE000E4C0F8948090F2009090F300A090F4009B\r
-:100CF000B090F5006091F6007091F7008091F800D7\r
-:100D00009091F9001092FA00789427EB3BE04DEBBC\r
-:100D10005EE30E94551120E030E040E05FE30E9476\r
-:100D20005511A50194010E94620F6B017C01A50180\r
-:100D30009401C501B4010E94620FA70196010E94AF\r
-:100D4000610F2DEC30E344EB55E40E9455114B014B\r
-:100D50005C012DEC30E344EB55E4C701B6010E9481\r
-:100D600055116B017C018091AA008823C9F1809103\r
-:100D7000AA0024E630E0281B3109B901882777FD55\r
-:100D80008095982F0E9468109B01AC01C501B401A9\r
-:100D90000E94551120E030E048EC52E40E94CD0F53\r
-:100DA0000E9435107093D9006093D8008091AA00FA\r
-:100DB00044E650E0481B5109BA01882777FD809529\r
-:100DC000982F0E9468109B01AC01C701B6010E94D8\r
-:100DD000551120E030E048EC52E40E94CD0F0AC0EB\r
-:100DE000C501B4010E9435107093D9006093D800FA\r
-:100DF000C701B6010E9435107093D5006093D400EE\r
-:100E00008091AB008823C1F18091AB00E4E6F0E073\r
-:100E1000E81BF109BF01882777FD8095982F0E9474\r
-:100E200068109B01AC01C501B4010E94551120E07E\r
-:100E300030E048EC52E40E94CD0F0E9435107093D0\r
-:100E4000D7006093D6008091AB0064E670E0681B29\r
-:100E50007109882777FD8095982F0E9468109B0163\r
-:100E6000AC01C701B6010E94551120E030E048EC0A\r
-:100E700052E40E94CD0F0AC0C501B4010E94351092\r
-:100E80007093D7006093D600C701B6010E94351059\r
-:100E90007093D3006093D200F1E0F093DF00F09301\r
-:100EA000DE00F093DD00F093DC008091C9008C3906\r
-:100EB00008F4B2C61092C900F8942091E60030916F\r
-:100EC000E7003A8329834091E4005091E5005C8378\r
-:100ED0004B838091E2009091E3009E838D83E091AB\r
-:100EE000E000F091E100F887EF837894809198001A\r
-:100EF000909199007901E81AF90A809196009091F1\r
-:100F000097006A01C81AD90A8091940090919500BF\r
-:100F10006D807E80681A790A80919200909193008A\r
-:100F20002F01481A590AB701882777FD8095982F15\r
-:100F30000E9468102AE037ED43E25CE30E94CD0F87\r
-:100F40000E9435106D877E878F87988BB601882722\r
-:100F500077FD8095982F0E9468102AE037ED43E2D4\r
-:100F60005CE30E94CD0F0E943510698B7A8B8B8BCE\r
-:100F70009C8BB301882777FD8095982F0E9468107D\r
-:100F80002AE037ED43E25CE30E94CD0F0E9435106A\r
-:100F90006D8B7E8B8F8B988FB201882777FD809524\r
-:100FA000982F0E9468102AE037ED43E25CE30E942C\r
-:100FB000CD0F0E943510698F7A8F8B8F9C8FB70170\r
-:100FC0006C0D7D1D882777FD8095982F0E946810F5\r
-:100FD0002DEC30E344E356E40E94CD0F4B015C015D\r
-:100FE000B301640D751D882777FD8095982F0E94A9\r
-:100FF00068102DEC30E344E356E40E94CD0F2B0142\r
-:101000003C01A50194010E94610F27EB3BE04DEBF1\r
-:101010005EE30E94CD0F69877A878B879C876091FA\r
-:10102000B5007091B6008091B7009091B800298505\r
-:101030003A854B855C850E94620F6B017C012BED2C\r
-:101040003FE049EC50E40E94511118164CF42BED8E\r
-:101050003FE049EC50E4C701B6010E94610F12C0A5\r
-:101060002BED3FE049EC50ECC701B6010E94C60FE2\r
-:1010700087FF0AC02BED3FE049EC50E4C701B60101\r
-:101080000E94620F6B017C01A3019201C501B401B2\r
-:101090000E94620F20E030E040E05FE30E945511C3\r
-:1010A0004B015C014090BD005090BE006090BF00BD\r
-:1010B0007090C000C701B6010E94CA0FA50194013B\r
-:1010C0000E9455119B01AC01C301B2010E94620F45\r
-:1010D0006D8F7E8F8F8F98A34090B9005090BA008B\r
-:1010E0006090BB007090BC00C701B6010E94B811AF\r
-:1010F000A50194010E9455119B01AC01C301B201ED\r
-:101100000E94620F2B013C012AE037ED43E25CE3D1\r
-:10111000C501B4010E94CD0F4B015C012AE037EDFF\r
-:1011200043E25CE369857A858B859C850E94CD0FBF\r
-:10113000F894C092B500D092B600E092B700F09259\r
-:10114000B8002D8D3E8D4F8D58A12093BD0030935A\r
-:10115000BE004093BF005093C0004092B90050922F\r
-:10116000BA006092BB007092BC004D855E855093C2\r
-:10117000C8004093C700E989FA89F093C600E0935C\r
-:10118000C5002D893E893093C4002093C300498D4A\r
-:101190005A8D5093C2004093C1008092B10090924A\r
-:1011A000B200A092B300B092B4006093AD0070930F\r
-:1011B000AE008093AF009093B000789489819A81BB\r
-:1011C0009093990080939800EB81FC81F0939700B5\r
-:1011D000E09396002D813E813093950020939400FA\r
-:1011E0004F815885509393004093920080918E00D8\r
-:1011F00090918F00A0919000B0919100B7FF07C02F\r
-:10120000B095A095909581959F4FAF4FBF4F813C72\r
-:10121000944DA140B105CCF08091C7009091C800D9\r
-:10122000892B99F41092EF001092EE001092DF00DB\r
-:101230008091A90080618093A90010928E00109285\r
-:101240008F00109290001092910080918A009091EE\r
-:101250008B00A0918C00B0918D00B7FF07C0B095B6\r
-:10126000A095909581959F4FAF4FBF4F813C944D76\r
-:10127000A140B105CCF08091C5009091C600892BAA\r
-:1012800099F41092ED001092EC001092DE00809123\r
-:10129000A90080628093A90010928A0010928B00AE\r
-:1012A00010928C0010928D008091860090918700A2\r
-:1012B000A0918800B0918900B7FF07C0B095A095B4\r
-:1012C000909581959F4FAF4FBF4F813C944DA1406A\r
-:1012D000B105CCF08091C3009091C400892B99F4A2\r
-:1012E0001092EB001092EA001092DD008091A900AC\r
-:1012F00080648093A900109286001092870010925B\r
-:101300008800109289008091820090918300A091C2\r
-:101310008400B0918500B7FF07C0B095A095909567\r
-:1013200081959F4FAF4FBF4F813C944DA140B10578\r
-:10133000CCF08091C1009091C200892B99F4109259\r
-:10134000E9001092E8001092DC008091A90080680A\r
-:101350008093A90010928200109283001092840062\r
-:10136000109285008091DF00813009F0C7C0209184\r
-:10137000D8003091D9008091D0009091D1002817E9\r
-:10138000390781F010928E0010928F001092900019\r
-:10139000109291008091D8009091D9009093D10043\r
-:1013A0008093D0008091D8009091D900892B71F45E\r
-:1013B0001092EF001092EE001092810010928000C7\r
-:1013C0008091A9008F7E8093A90098C0A090D8003A\r
-:1013D000B090D9008091C7009091C800A81AB90AAE\r
-:1013E000B501882777FD8095982FC0908E00D0900A\r
-:1013F0008F00E0909000F0909100C60ED71EE81E7E\r
-:10140000F91EC0928E00D0928F00E0929000F09270\r
-:1014100091000E9468102FE832EC45E75DE30E94DE\r
-:1014200055112B013C01C701B6010E9468102FE63F\r
-:1014300032E143E85AE30E9455119B01AC01C3011C\r
-:10144000B2010E94620F6B017C018091800090913B\r
-:101450008100B501681B790B882777FD8095982F4F\r
-:101460000E94681020E030E0A9010E9455119B0104\r
-:10147000AC01C701B6010E94620F0E943510709343\r
-:10148000EF006093EE00B0928100A0928000809106\r
-:10149000EE009091EF001816190634F48091D800F0\r
-:1014A0009091D90097FD0DC08091EE009091EF00D2\r
-:1014B00097FF0CC08091D8009091D900181619069A\r
-:1014C0002CF41092EF001092EE0018C08091EE0004\r
-:1014D0009091EF008F3F910531F02CF01093EF00C9\r
-:1014E0000093EE000BC08091EE009091EF008130F0\r
-:1014F0009F4F24F43092EF002092EE008091DE00A6\r
-:10150000813009F0C7C02091D6003091D70080917A\r
-:10151000CE009091CF002817390781F010928A00F1\r
-:1015200010928B0010928C0010928D008091D6004A\r
-:101530009091D7009093CF008093CE008091D600F9\r
-:101540009091D700892B71F41092ED001092EC006D\r
-:1015500010927F0010927E008091A9008F7D809371\r
-:10156000A90098C0A090D600B090D7008091C50087\r
-:101570009091C600A81AB90AB501882777FD809511\r
-:10158000982FC0908A00D0908B00E0908C00F09053\r
-:101590008D00C60ED71EE81EF91EC0928A00D0929A\r
-:1015A0008B00E0928C00F0928D000E9468102FE872\r
-:1015B00032EC45E75DE30E9455112B013C01C70168\r
-:1015C000B6010E9468102FE632E143E85AE30E9418\r
-:1015D00055119B01AC01C301B2010E94620F6B0166\r
-:1015E0007C0180917E0090917F00B501681B790B92\r
-:1015F000882777FD8095982F0E94681020E030E0C2\r
-:10160000A9010E9455119B01AC01C701B6010E94BE\r
-:10161000620F0E9435107093ED006093EC00B09261\r
-:101620007F00A0927E008091EC009091ED00181652\r
-:10163000190634F48091D6009091D70097FD0DC023\r
-:101640008091EC009091ED0097FF0CC08091D60046\r
-:101650009091D700181619062CF41092ED001092F4\r
-:10166000EC0018C08091EC009091ED008F3F910547\r
-:1016700031F02CF01093ED000093EC000BC0809142\r
-:10168000EC009091ED0081309F4F24F43092ED00FA\r
-:101690002092EC008091DD00813009F0C7C02091DC\r
-:1016A000D4003091D5008091CC009091CD002817C6\r
-:1016B000390781F0109286001092870010928800FE\r
-:1016C000109289008091D4009091D5009093CD0024\r
-:1016D0008093CC008091D4009091D500892B71F437\r
-:1016E0001092EB001092EA0010927D0010927C00A4\r
-:1016F0008091A9008F7B8093A90098C0A090D4000E\r
-:10170000B090D5008091C3009091C400A81AB90A86\r
-:10171000B501882777FD8095982FC0908600D090DE\r
-:101720008700E0908800F0908900C60ED71EE81E62\r
-:10173000F91EC0928600D0928700E0928800F09255\r
-:1017400089000E9468102FE832EC45E75DE30E94B3\r
-:1017500055112B013C01C701B6010E9468102FE60C\r
-:1017600032E143E85AE30E9455119B01AC01C301E9\r
-:10177000B2010E94620F6B017C0180917C0090910C\r
-:101780007D00B501681B790B882777FD8095982F20\r
-:101790000E94681020E030E0A9010E9455119B01D1\r
-:1017A000AC01C701B6010E94620F0E943510709310\r
-:1017B000EB006093EA00B0927D00A0927C008091E3\r
-:1017C000EA009091EB001816190634F48091D400C9\r
-:1017D0009091D50097FD0DC08091EA009091EB00AB\r
-:1017E00097FF0CC08091D4009091D500181619066F\r
-:1017F0002CF41092EB001092EA0018C08091EA00DD\r
-:101800009091EB008F3F910531F02CF01093EB009D\r
-:101810000093EA000BC08091EA009091EB008130C8\r
-:101820009F4F24F43092EB002092EA008091DC007C\r
-:10183000813009F0C7C02091D2003091D30080914F\r
-:10184000CA009091CB002817390781F010928200CE\r
-:101850001092830010928400109285008091D20033\r
-:101860009091D3009093CB008093CA008091D200D6\r
-:101870009091D300892B71F41092E9001092E80046\r
-:1018800010927B0010927A008091A9008F7780934C\r
-:10189000A90098C0A090D200B090D3008091C10060\r
-:1018A0009091C200A81AB90AB501882777FD8095E2\r
-:1018B000982FC0908200D0908300E0908400F09038\r
-:1018C0008500C60ED71EE81EF91EC0928200D09277\r
-:1018D0008300E0928400F09285000E9468102FE857\r
-:1018E00032EC45E75DE30E9455112B013C01C70135\r
-:1018F000B6010E9468102FE632E143E85AE30E94E5\r
-:1019000055119B01AC01C301B2010E94620F6B0132\r
-:101910007C0180917A0090917B00B501681B790B66\r
-:10192000882777FD8095982F0E94681020E030E08E\r
-:10193000A9010E9455119B01AC01C701B6010E948B\r
-:10194000620F0E9435107093E9006093E800B09236\r
-:101950007B00A0927A008091E8009091E90018162F\r
-:10196000190634F48091D2009091D30097FD0DC0F8\r
-:101970008091E8009091E90097FF0CC08091D2001F\r
-:101980009091D300181619062CF41092E9001092C9\r
-:10199000E80018C08091E8009091E9008F3F910520\r
-:1019A00031F02CF01093E9000093E8000BC0809117\r
-:1019B000E8009091E90081309F4F24F43092E900D3\r
-:1019C0002092E8008091A900807F8093A900309147\r
-:1019D000A90080B326B3807490E0A3E09595879525\r
-:1019E000AA95E1F72770282B20952F70232B2093A1\r
-:1019F000A9008091EE009091EF0020916600309157\r
-:101A0000670028173907C9F18091EE009091EF0027\r
-:101A1000892B19F485B3837F1CC0809169008111E3\r
-:101A200007C08091EE009091EF001816190654F04F\r
-:101A300080916900882351F08091EE009091EF0031\r
-:101A400097FF04C085B3877F846003C085B38B7F15\r
-:101A5000886085BB8091EE009091EF0090936700C5\r
-:101A6000809366008091EE009091EF0097FF03C095\r
-:101A70009195819591099BBD8ABD8091EC009091D3\r
-:101A8000ED00209164003091650028173907C9F1F5\r
-:101A90008091EC009091ED00892B19F485B38F7C37\r
-:101AA0001CC080916800811107C08091EC0090916A\r
-:101AB000ED001816190654F080916800882351F043\r
-:101AC0008091EC009091ED0097FF04C085B38F7D6D\r
-:101AD000806103C085B38F7E806285BB8091EC00FE\r
-:101AE0009091ED0090936500809364008091EC00EC\r
-:101AF0009091ED0097FF03C091958195910999BD53\r
-:101B000088BD8091EA009091EB00209162003091B5\r
-:101B1000630028173907C1F18091EA009091EB002A\r
-:101B2000892B19F485B38F731CC08091DB00811160\r
-:101B300007C08091EA009091EB001816190654F046\r
-:101B40008091DB00882351F08091EA009091EB00B6\r
-:101B500097FF04C085B38F77806403C085B38F7B04\r
-:101B6000806885BB8091EA009091EB0090936300C0\r
-:101B7000809362008091EA009091EB0097FF03C090\r
-:101B800091958195910983BD8091E8009091E9003C\r
-:101B9000209160003091610028173907C1F18091D0\r
-:101BA000E8009091E900892B19F482B3837F1CC06F\r
-:101BB0008091DA00811107C08091E8009091E900DE\r
-:101BC0001816190654F08091DA00882351F080919C\r
-:101BD000E8009091E90097FF04C082B3877F84609A\r
-:101BE00003C082B38B7F886082BB8091E8009091B4\r
-:101BF000E90090936100809360008091E8009091EB\r
-:101C0000E90097FF03C09195819591098CBF809160\r
-:101C1000AC008F5F8093AC0085B7806885BF8895E6\r
-:101C200085B78F7785BF4CC86F927F929F92AF9296\r
-:101C3000BF92CF92DF92EF92FF920F931F93CF93B9\r
-:101C4000DF93CDB7DEB72C970FB6F894DEBF0FBE8B\r
-:101C5000CDBF8C017B013A01FC0117821682838182\r
-:101C600081FF19C1CE0101965C01F801D380F70113\r
-:101C7000D3FC2591D3FE21917F01222309F407C1D2\r
-:101C8000253249F4D3FC2591D3FE21917F012532E1\r
-:101C900011F0912C1BC0B801822F90E00E949F127E\r
-:101CA00063013601E2CF222309F4F1C0622F70E014\r
-:101CB0008BEB91E02C870E9449122C85892B49F0EF\r
-:101CC000F701D3FC2591D3FE21917F0197FEEBCF45\r
-:101CD0000CC0233221F4F92DF0619F2EF1CF2C3668\r
-:101CE00039F4292D2068922EEBCF222309F4CFC09E\r
-:101CF000622F70E084EB91E02C870E9449122C85C2\r
-:101D0000892B41F06301F4E0CF0ED11CB8018FE3C1\r
-:101D100090E012C0233641F0233789F0233521F5B6\r
-:101D2000F92DF1609F2E0BC0630122E0C20ED11C81\r
-:101D3000B801F301808191810E949F12B2CF6301AB\r
-:101D400022E0C20ED11CF30160807180F30190FC8F\r
-:101D5000859190FE81913F01882309F4A2CFB801BB\r
-:101D600090E00E949F12F2CF243611F0293639F507\r
-:101D7000630197FE09C0F4E0CF0ED11CF30160812E\r
-:101D80007181828193810AC0F2E0CF0ED11CF301F0\r
-:101D900060817181882777FD8095982FF92DFF7ECE\r
-:101DA0009F2E97FF09C090958095709561957F4F04\r
-:101DB0008F4F9F4FF0649F2E2AE030E038C02037CD\r
-:101DC000A1F040F42835D1F02F3609F060C028E0AA\r
-:101DD00030E019C0253719F0283751F058C0292DA7\r
-:101DE0002F7E922E2AE030E00EC0892D8061982E41\r
-:101DF000992D9462992E20E130E005C0E92DE46030\r
-:101E00009E2E20E132E0630197FE09C0F4E0CF0E80\r
-:101E1000D11CF301608171818281938108C0F2E05D\r
-:101E2000CF0ED11CF3016081718180E090E0A501AB\r
-:101E30000E94FE12782E7A1896FE05C0B8018DE237\r
-:101E400090E00E949F1294FE16C0FE01E70DF11D66\r
-:101E50008081803381F0B80180E390E00E949F127E\r
-:101E600092FE09C0292D2072822F90E0B801885A75\r
-:101E70009F4F0E949F127A94F501E70DF11D80811A\r
-:101E8000B80190E00E949F127110F5CF0ACFF801BF\r
-:101E90008681978102C08FEF9FEF2C960FB6F89442\r
-:101EA000DEBF0FBECDBFDF91CF911F910F91FF908D\r
-:101EB000EF90DF90CF90BF90AF909F907F906F900A\r
-:101EC00008955058BB27AA270ED0A0C169D130F081\r
-:101ED0006ED120F031F49F3F11F41EF45EC10EF478\r
-:101EE000E095E7FB54C1E92FB3D180F3BA1762073D\r
-:101EF00073078407950718F071F49EF5CBC10EF4B3\r
-:101F0000E0950B2EBA2FA02D0B01B90190010C0109\r
-:101F1000CA01A0011124FF27591B99F0593F50F421\r
-:101F2000503E68F11A16F040A22F232F342F442779\r
-:101F3000585FF3CF469537952795A795F040539571\r
-:101F4000C9F77EF41F16BA0B620B730B840BBAF041\r
-:101F50009150A1F0FF0FBB1F661F771F881FC2F7AC\r
-:101F60000EC0BA0F621F731F841F48F487957795C0\r
-:101F70006795B795F7959E3F08F0B3CF9395880F77\r
-:101F800008F09927EE0F979587950895DCD008F40F\r
-:101F900081E0089514D1E3954AC10CD037C107D12F\r
-:101FA00040F0FED030F021F45F3F19F0F0C0511145\r
-:101FB00072C1F3C04DD198F39923C9F35523B1F3FE\r
-:101FC000951B550BBB27AA2762177307840738F0A8\r
-:101FD0009F5F5F4F220F331F441FAA1FA9F333D007\r
-:101FE0000E2E3AF0E0E830D091505040E695001CBB\r
-:101FF000CAF729D0FE2F27D0660F771F881FBB1F77\r
-:10200000261737074807AB07B0E809F0BB0B802D50\r
-:10201000BF01FF2793585F4F2AF09E3F510568F09C\r
-:10202000B6C039C15F3FECF3983EDCF386957795F7\r
-:102030006795B795F7959F5FC9F7880F911D96959E\r
-:10204000879597F90895E1E0660F771F881FBB1FFA\r
-:10205000621773078407BA0720F0621B730B840BA7\r
-:10206000BA0BEE1F88F7E095089504D06894B1117B\r
-:1020700012C10895F5D088F09F5790F0B92F992795\r
-:10208000B751A0F0D1F0660F771F881F991F1AF083\r
-:10209000BA95C9F712C0B13081F0FCD0B1E0089513\r
-:1020A000F9C0672F782F8827B85F39F0B93FCCF394\r
-:1020B000869577956795B395D9F73EF49095809579\r
-:1020C000709561957F4F8F4F9F4F0895E89409C099\r
-:1020D00097FB3EF490958095709561957F4F8F4F5B\r
-:1020E0009F4F9923A9F0F92F96E9BB279395F69571\r
-:1020F000879577956795B795F111F8CFFAF4BB0FEF\r
-:1021000011F460FF1BC06F5F7F4F8F4F9F4F16C052\r
-:10211000882311F096E911C0772321F09EE8872FDC\r
-:10212000762F05C0662371F096E8862F70E060E098\r
-:102130002AF09A95660F771F881FDAF7880F969511\r
-:10214000879597F90895990F0008550FAA0BE0E8B5\r
-:10215000FEEF16161706E807F907C0F01216130669\r
-:10216000E407F50798F0621B730B840B950B39F4A9\r
-:102170000A2661F0232B242B252B21F408950A260F\r
-:1021800009F4A140A6958FEF811D811D089597F94F\r
-:102190009F6780E870E060E008959FEF80EC08950D\r
-:1021A00000240A9416161706180609060895002436\r
-:1021B0000A9412161306140605060895EECF50D0A1\r
-:1021C000E8F3E894E0E0BB279F57F0F02AED3FE00A\r
-:1021D00049EC06C0EE0FBB0F661F771F881F28F063\r
-:1021E000B23A62077307840728F0B25A620B730B86\r
-:1021F000840BE3959A9572F7803830F49A95BB0F6B\r
-:10220000661F771F881FD2F79048BAC0092E039423\r
-:10221000000C11F4882352F0BB0F40F4BF2B11F4D3\r
-:1022200060FF04C06F5F7F4F8F4F9F4F0895EF9304\r
-:10223000E0FF06C0A2EA2AED3FE049EC5FEB53DE87\r
-:10224000E5DF0F90039401FC9058E6E9F1E0A4C0AB\r
-:1022500057FD9058440F551F59F05F3F71F0479557\r
-:10226000880F97FB991F61F09F3F79F0879508953C\r
-:10227000121613061406551FF2CF4695F1DF08C05B\r
-:10228000161617061806991FF1CF86957105610578\r
-:1022900008940895E894BB2766277727CB0197F920\r
-:1022A000089551DF08F48FEF08950BD0AFCF78DF9A\r
-:1022B00028F07DDF18F0952309F069CF6ECF112447\r
-:1022C000EACFC6DFA0F3959FD1F3950F50E0551FDD\r
-:1022D000629FF001729FBB27F00DB11D639FAA277B\r
-:1022E000F00DB11DAA1F649F6627B00DA11D661FCA\r
-:1022F000829F2227B00DA11D621F739FB00DA11DEB\r
-:10230000621F839FA00D611D221F749F3327A00DA4\r
-:10231000611D231F849F600D211D822F762F6A2F40\r
-:1023200011249F5750408AF0E1F088234AF0EE0FC5\r
-:10233000FF1FBB1F661F771F881F91505040A9F7D2\r
-:102340009E3F510570F023CFA6CF5F3FECF3983E40\r
-:10235000DCF3869577956795B795F795E7959F5F39\r
-:10236000C1F7FE2B880F911D9695879597F90895D3\r
-:102370009F9325DF0F9007FCEE5F59CF9F3F31F011\r
-:10238000915020F4879577956795B795880F911DA3\r
-:102390009695879597F908959F938F937F936F9361\r
-:1023A000FF93EF939B01AC0180DFEF91FF9105D08C\r
-:1023B0002F913F914F915F9178CFDF93CF931F93F0\r
-:1023C0000F93FF92EF92DF927B018C01689405C01E\r
-:1023D000DA2EEF0176DFFE01E894A5912591359183\r
-:1023E00045915591AEF3EF017EDDFE019701A80105\r
-:1023F000DA9479F7DF90EF90FF900F911F91CF91D2\r
-:10240000DF910895052E97FB1EF400940E94191287\r
-:1024100057FD07D00E94271207FC03D04EF40C94FE\r
-:10242000191250954095309521953F4F4F4F5F4F72\r
-:10243000089590958095709561957F4F8F4F9F4F30\r
-:102440000895EE0FFF1F0590F491E02D0994A1E28D\r
-:102450001A2EAA1BBB1BFD010DC0AA1FBB1FEE1F1E\r
-:10246000FF1FA217B307E407F50720F0A21BB30B69\r
-:10247000E40BF50B661F771F881F991F1A9469F7E5\r
-:1024800060957095809590959B01AC01BD01CF0141\r
-:102490000895FC010590061621F00020D9F7C0012F\r
-:1024A00008953197CF0108950F931F93CF93DF9332\r
-:1024B000EC018B01009731F46115710519F480E08E\r
-:1024C00090E038C06EE070E081E090E00E945C1324\r
-:1024D000FC010097A1F380E883830115110571F0D9\r
-:1024E0001387028781E88383809166019091670159\r
-:1024F000892B21F4F0936701E09366012097C9F0DE\r
-:10250000D187C087838182608383809168019091A5\r
-:102510006901892B71F4F0936901E093680180915E\r
-:102520006A0190916B01892B21F4F0936B01E09388\r
-:102530006A01CF01DF91CF911F910F9108950F9301\r
-:102540001F93CF93DF93182F092FEB018B8181FD10\r
-:1025500003C08FEF9FEF20C082FF10C04E815F81CC\r
-:102560002C813D81421753077CF4E881F9819F015A\r
-:102570002F5F3F4F39832883108306C0E885F98594\r
-:10258000812F0995892B29F72E813F812F5F3F4F9E\r
-:102590003F832E83812F902FDF91CF911F910F9139\r
-:1025A00008950F931F93CF93DF93E0916801F0910B\r
-:1025B0006901238121FF1BC0EC0100E010E089913B\r
-:1025C0006091680170916901DB011896ED91FC91B1\r
-:1025D0001997882331F00995892B89F30FEF1FEFA5\r
-:1025E000EECF8AE00995892B11F4C80102C08FEF64\r
-:1025F0009FEFDF91CF911F910F910895FA01AA27C4\r
-:10260000283051F1203181F1E8946F936E7F6E5F35\r
-:102610007F4F8F4F9F4FAF4FB1E03ED0B4E03CD0E3\r
-:10262000670F781F891F9A1FA11D680F791F8A1FC6\r
-:10263000911DA11D6A0F711D811D911DA11D20D02D\r
-:1026400009F468943F912AE0269F11243019305DE7\r
-:102650003193DEF6CF010895462F4770405D4193D8\r
-:10266000B3E00FD0C9F7F6CF462F4F70405D4A3325\r
-:1026700018F0495D31FD4052419302D0A9F7EACFED\r
-:10268000B4E0A6959795879577956795BA95C9F71C\r
-:1026900000976105710508959B01AC010A2E06940F\r
-:1026A0005795479537952795BA95C9F7620F731FC8\r
-:1026B000841F951FA01D08950F931F93CF93DF9341\r
-:1026C000869F8001879F100D969F100D1124C801D1\r
-:1026D0000E947813EC01009729F0A80160E070E0F7\r
-:1026E0000E949F14CE01DF91CF911F910F91089509\r
-:1026F000CF93DF938230910510F482E090E0E09177\r
-:102700006E01F0916F0120E030E0A0E0B0E0309782\r
-:1027100039F14081518148175907B8F048175907D6\r
-:1027200071F482819381109729F013969C938E9374\r
-:1027300012972CC090936F0180936E0127C02115D2\r
-:10274000310531F04217530718F0A901DB0101C030\r
-:10275000EF019A01BD01DF010280F381E02DD7CFA7\r
-:1027600021153105F9F0281B390B2430310580F48F\r
-:102770008A819B816115710521F0FB01938382831E\r
-:1027800004C090936F0180936E01FE01329644C0A5\r
-:10279000FE01E20FF31F8193919322503109398397\r
-:1027A00028833AC020916C0130916D01232B41F4B4\r
-:1027B00020916C0030916D0030936D0120936C017D\r
-:1027C00020916A0030916B002115310541F42DB73D\r
-:1027D0003EB740916E0050916F00241B350BE09185\r
-:1027E0006C01F0916D01E217F307A0F42E1B3F0B73\r
-:1027F0002817390778F0AC014E5F5F4F2417350773\r
-:1028000048F04E0F5F1F50936D0140936C01819310\r
-:10281000919302C0E0E0F0E0CF01DF91CF91089505\r
-:10282000CF93DF93009709F487C0FC01329713829E\r
-:102830001282C0916E01D0916F01209781F42081A6\r
-:102840003181280F391F80916C0190916D018217A1\r
-:10285000930779F5F0936D01E0936C016DC0DE0193\r
-:1028600020E030E0AE17BF0750F412964D915C9116\r
-:1028700013979D014115510509F1DA01F3CFB38397\r
-:10288000A28340815181840F951F8A179B0771F4A1\r
-:102890008D919C911197840F951F0296918380834F\r
-:1028A00012968D919C911397938382832115310504\r
-:1028B00029F4F0936F01E0936E013EC0D9011396A5\r
-:1028C000FC93EE9312974D915D91A40FB51FEA17FB\r
-:1028D000FB0779F480819181840F951F0296D901BD\r
-:1028E00011969C938E938281938113969C938E93E1\r
-:1028F0001297E0E0F0E08A819B81009719F0FE01D9\r
-:10290000EC01F9CFCE01029628813981820F931F05\r
-:1029100020916C0130916D012817390769F43097C7\r
-:1029200029F410926F0110926E0102C0138212827C\r
-:10293000D0936D01C0936C01DF91CF910895DC01BC\r
-:1029400001C06D9341505040E0F70895F894FFCFD7\r
-:1029500000800080008000800101000070012000E4\r
-:0A2960000D0A53746172740D00003B\r
+:100CA00080E790E00E944D1385B78F7885BF84E080\r
+:100CB00089BF789422242A94312C00E010E8809196\r
+:100CC000F1008F3F41F48091F000853A21F4F894CF\r
+:100CD000E0E0F8E109958091FA00882309F4E4C086\r
+:100CE000F8948090F2009090F300A090F400B090FF\r
+:100CF000F5006091F6007091F7008091F8009091F6\r
+:100D0000F9001092FA00789427EB3BE04DEB5EE39C\r
+:100D10000E94D11120E030E040E05FE30E94D11159\r
+:100D2000A50194010E94DE0F6B017C01A5019401D5\r
+:100D3000C501B4010E94DE0FA70196010E94DD0FDC\r
+:100D40002DEC30E344EB55E40E94D1114B015C01E2\r
+:100D50002DEC30E344EB55E4C701B6010E94D111FC\r
+:100D60006B017C018091AA008823C9F18091AA00BF\r
+:100D700024E630E0281B3109B901882777FD8095EA\r
+:100D8000982F0E94E4109B01AC01C501B4010E94A0\r
+:100D9000D11120E030E048EC52E40E9449100E945A\r
+:100DA000B1107093D9006093D8008091AA0044E6F6\r
+:100DB00050E0481B5109BA01882777FD8095982F8C\r
+:100DC0000E94E4109B01AC01C701B6010E94D11141\r
+:100DD00020E030E048EC52E40E9449100AC0C5010E\r
+:100DE000B4010E94B1107093D9006093D800C7017C\r
+:100DF000B6010E94B1107093D5006093D400809129\r
+:100E0000AB008823C1F18091AB00E4E6F0E0E81B81\r
+:100E1000F109BF01882777FD8095982F0E94E41083\r
+:100E20009B01AC01C501B4010E94D11120E030E06A\r
+:100E300048EC52E40E9449100E94B1107093D70010\r
+:100E40006093D6008091AB0064E670E0681B710986\r
+:100E5000882777FD8095982F0E94E4109B01AC01B4\r
+:100E6000C701B6010E94D11120E030E048EC52E405\r
+:100E70000E9449100AC0C501B4010E94B1107093CC\r
+:100E8000D7006093D600C701B6010E94B1107093DD\r
+:100E9000D3006093D200F1E0F093DF00F093DE0026\r
+:100EA000F093DD00F093DC008091C9008C3908F4E8\r
+:100EB0002EC71092C900F8942091E6003091E70007\r
+:100EC0003A8329834091E4005091E5005C834B8391\r
+:100ED0008091E2009091E3009E838D83E091E00099\r
+:100EE000F091E100F887EF837894809198009091D9\r
+:100EF00099007901E81AF90A80919600909197007B\r
+:100F00006A01C81AD90A80919400909195006D8069\r
+:100F10007E80681A790A80919200909193002F0147\r
+:100F2000481A590AB701882777FD8095982F0E94A3\r
+:100F3000E4102AE037ED43E25CE30E9449100E948E\r
+:100F4000B1106D877E878F87988BB601882777FDD4\r
+:100F50008095982F0E94E4102AE037ED43E25CE38D\r
+:100F60000E9449100E94B110698B7A8B8B8B9C8BED\r
+:100F7000B301882777FD8095982F0E94E4102AE01E\r
+:100F800037ED43E25CE30E9449100E94B1106D8B83\r
+:100F90007E8B8F8B988FB201882777FD8095982F55\r
+:100FA0000E94E4102AE037ED43E25CE30E9449101E\r
+:100FB0000E94B110698F7A8F8B8F9C8FB7016C0D57\r
+:100FC0007D1D882777FD8095982F0E94E4102DECD9\r
+:100FD00030E344E356E40E9449104B015C01B30145\r
+:100FE000640D751D882777FD8095982F0E94E41069\r
+:100FF0002DEC30E344E356E40E9449102B013C0100\r
+:10100000A50194010E94DD0F27EB3BE04DEB5EE371\r
+:101010000E94491069877A878B879C876091B50009\r
+:101020007091B6008091B7009091B80029853A85FB\r
+:101030004B855C850E94DE0F6B017C012BED3FE050\r
+:1010400049EC50E40E94CD1118164CF42BED3FE012\r
+:1010500049EC50E4C701B6010E94DD0F12C02BED30\r
+:101060003FE049EC50ECC701B6010E94421087FFF7\r
+:101070000AC02BED3FE049EC50E4C701B6010E94E5\r
+:10108000DE0F6B017C01A3019201C501B4010E9436\r
+:10109000DE0F20E030E040E05FE30E94D1114B0121\r
+:1010A0005C014090BD005090BE006090BF00709009\r
+:1010B000C000C701B6010E944610A50194010E941C\r
+:1010C000D1119B01AC01C301B2010E94DE0F6D8FF3\r
+:1010D0007E8F8F8F98A34090B9005090BA00609097\r
+:1010E000BB007090BC00C701B6010E943412A5017C\r
+:1010F00094010E94D1119B01AC01C301B2010E9475\r
+:10110000DE0F2B013C012AE037ED43E25CE3C50131\r
+:10111000B4010E9449104B015C012AE037ED43E223\r
+:101120005CE369857A858B859C850E944910F894DB\r
+:10113000C092B500D092B600E092B700F092B8002D\r
+:101140002D8D3E8D4F8D58A12093BD003093BE0054\r
+:101150004093BF005093C0004092B9005092BA0033\r
+:101160006092BB007092BC004D855E855093C800B4\r
+:101170004093C700E989FA89F093C600E093C5005F\r
+:101180002D893E893093C4002093C300498D5A8D28\r
+:101190005093C2004093C1008092B1009092B2007F\r
+:1011A000A092B300B092B4006093AD007093AE0013\r
+:1011B0008093AF009093B000789489819A81909346\r
+:1011C000990080939800EB81FC81F0939700E09365\r
+:1011D00096002D813E8130939500209394004F819D\r
+:1011E0005885509393004093920080918E00909187\r
+:1011F0008F00A0919000B0919100B7FF07C0B0950B\r
+:10120000A095909581959F4FAF4FBF4F813E9242E1\r
+:10121000A240B105CCF08091C7009091C800892B05\r
+:1012200099F41092EF001092EE001092DF0080917E\r
+:10123000A90080618093A90010928E0010928F0007\r
+:10124000109290001092910080918A0090918B00F2\r
+:10125000A0918C00B0918D00B7FF07C0B095A0950C\r
+:10126000909581959F4FAF4FBF4F813E9242A240D4\r
+:10127000B105CCF08091C5009091C600892B99F4FE\r
+:101280001092ED001092EC001092DE008091A90007\r
+:1012900080628093A90010928A0010928B001092B5\r
+:1012A0008C0010928D008091860090918700A09113\r
+:1012B0008800B0918900B7FF07C0B095A0959095C0\r
+:1012C00081959F4FAF4FBF4F813E9242A240B105E3\r
+:1012D000CCF08091C3009091C400892B99F41092B6\r
+:1012E000EB001092EA001092DD008091A90080646A\r
+:1012F0008093A900109286001092870010928800B7\r
+:10130000109289008091820090918300A0918400C6\r
+:10131000B0918500B7FF07C0B095A09590958195D5\r
+:101320009F4FAF4FBF4F813E9242A240B105CCF0DC\r
+:101330008091C1009091C200892B99F41092E9002C\r
+:101340001092E8001092DC008091A90080688093E0\r
+:10135000A9001092820010928300109284001092D3\r
+:1013600085008091DF00813009F0DBC02091D8003A\r
+:101370003091D9008091D0009091D1002817390781\r
+:1013800011F18091D8009091D9002091D000309136\r
+:10139000D100821B930B97FF03C091958195910912\r
+:1013A000853F914044F010928E0010928F00109271\r
+:1013B0009000109291008091D8009091D900909364\r
+:1013C000D1008093D0008091D8009091D900892BD2\r
+:1013D00071F41092EF001092EE00109281001092C2\r
+:1013E00080008091A9008F7E8093A9009AC0A09070\r
+:1013F000D800B090D9008091C7009091C800A81A79\r
+:10140000B90AB501882777FD8095982FC0908E0086\r
+:10141000D0908F00E0909000F0909100C60ED71E03\r
+:10142000E81EF91EC0928E00D0928F00E0929000CC\r
+:10143000F09291000E94E4102FE832EC45E75DE362\r
+:101440000E94D1112B013C01C701B6010E94E4109A\r
+:101450002FE632E143E85AE30E94D1119B01AC012F\r
+:10146000C301B2010E94DE0F6B017C0180918000FC\r
+:1014700090918100B501681B790B882777FD8095D5\r
+:10148000982F0E94E41020E030E0A9010E94D111C1\r
+:101490009B01AC01C701B6010E94DE0F0E94B11092\r
+:1014A0007093EF006093EE00B0928100A0928000F4\r
+:1014B0008091EE009091EF001816190634F4809197\r
+:1014C000D8009091D90097FD0DC08091EE009091C9\r
+:1014D000EF0097FF0CC08091D8009091D9001816AA\r
+:1014E00019062CF41093EF000093EE001AC08091BF\r
+:1014F000EE009091EF008F3F910531F02CF030928B\r
+:10150000EF002092EE000DC08091EE009091EF0070\r
+:1015100081309F4F34F481E09FEF9093EF008093F0\r
+:10152000EE008091DE00813009F0DBC02091D60012\r
+:101530003091D7008091CE009091CF0028173907C5\r
+:1015400011F18091D6009091D7002091CE0030917A\r
+:10155000CF00821B930B97FF03C091958195910952\r
+:10156000853F914044F010928A0010928B001092B7\r
+:101570008C0010928D008091D6009091D7009093AE\r
+:10158000CF008093CE008091D6009091D700892B18\r
+:1015900071F41092ED001092EC0010927F00109206\r
+:1015A0007E008091A9008F7D8093A9009AC0A090B1\r
+:1015B000D600B090D7008091C5009091C600A81ABF\r
+:1015C000B90AB501882777FD8095982FC0908A00C9\r
+:1015D000D0908B00E0908C00F0908D00C60ED71E4E\r
+:1015E000E81EF91EC0928A00D0928B00E0928C0017\r
+:1015F000F0928D000E94E4102FE832EC45E75DE3A5\r
+:101600000E94D1112B013C01C701B6010E94E410D8\r
+:101610002FE632E143E85AE30E94D1119B01AC016D\r
+:10162000C301B2010E94DE0F6B017C0180917E003C\r
+:1016300090917F00B501681B790B882777FD809515\r
+:10164000982F0E94E41020E030E0A9010E94D111FF\r
+:101650009B01AC01C701B6010E94DE0F0E94B110D0\r
+:101660007093ED006093EC00B0927F00A0927E003A\r
+:101670008091EC009091ED001816190634F48091D9\r
+:10168000D6009091D70097FD0DC08091EC0090910D\r
+:10169000ED0097FF0CC08091D6009091D7001816EE\r
+:1016A00019062CF41093ED000093EC001AC0809101\r
+:1016B000EC009091ED008F3F910531F02CF03092CD\r
+:1016C000ED002092EC000DC08091EC009091ED00B7\r
+:1016D00081309F4F34F421E03FEF3093ED002093B1\r
+:1016E000EC008091DD00813009F0DBC02091D40056\r
+:1016F0003091D5008091CC009091CD00281739070A\r
+:1017000011F18091D4009091D5002091CC003091BE\r
+:10171000CD00821B930B97FF03C091958195910992\r
+:10172000853F914044F010928600109287001092FD\r
+:101730008800109289008091D4009091D5009093F8\r
+:10174000CD008093CC008091D4009091D500892B5E\r
+:1017500071F41092EB001092EA0010927D0010924A\r
+:101760007C008091A9008F7B8093A9009AC0A090F3\r
+:10177000D400B090D5008091C3009091C400A81A05\r
+:10178000B90AB501882777FD8095982FC09086000B\r
+:10179000D0908700E0908800F0908900C60ED71E98\r
+:1017A000E81EF91EC0928600D0928700E092880061\r
+:1017B000F09289000E94E4102FE832EC45E75DE3E7\r
+:1017C0000E94D1112B013C01C701B6010E94E41017\r
+:1017D0002FE632E143E85AE30E94D1119B01AC01AC\r
+:1017E000C301B2010E94DE0F6B017C0180917C007D\r
+:1017F00090917D00B501681B790B882777FD809556\r
+:10180000982F0E94E41020E030E0A9010E94D1113D\r
+:101810009B01AC01C701B6010E94DE0F0E94B1100E\r
+:101820007093EB006093EA00B0927D00A0927C0080\r
+:101830008091EA009091EB001816190634F480911B\r
+:10184000D4009091D50097FD0DC08091EA00909151\r
+:10185000EB0097FF0CC08091D4009091D500181632\r
+:1018600019062CF41093EB000093EA001AC0809143\r
+:10187000EA009091EB008F3F910531F02CF030920F\r
+:10188000EB002092EA000DC08091EA009091EB00FD\r
+:1018900081309F4F34F481E09FEF9093EB00809371\r
+:1018A000EA008091DC00813009F0DBC02091D20099\r
+:1018B0003091D3008091CA009091CB00281739074E\r
+:1018C00011F18091D2009091D3002091CA00309103\r
+:1018D000CB00821B930B97FF03C0919581959109D3\r
+:1018E000853F914044F01092820010928300109244\r
+:1018F0008400109285008091D2009091D300909343\r
+:10190000CB008093CA008091D2009091D300892BA4\r
+:1019100071F41092E9001092E80010927B0010928E\r
+:101920007A008091A9008F778093A9009AC0A09037\r
+:10193000D200B090D3008091C1009091C200A81A4B\r
+:10194000B90AB501882777FD8095982FC09082004D\r
+:10195000D0908300E0908400F0908500C60ED71EE2\r
+:10196000E81EF91EC0928200D0928300E0928400AB\r
+:10197000F09285000E94E4102FE832EC45E75DE329\r
+:101980000E94D1112B013C01C701B6010E94E41055\r
+:101990002FE632E143E85AE30E94D1119B01AC01EA\r
+:1019A000C301B2010E94DE0F6B017C0180917A00BD\r
+:1019B00090917B00B501681B790B882777FD809596\r
+:1019C000982F0E94E41020E030E0A9010E94D1117C\r
+:1019D0009B01AC01C701B6010E94DE0F0E94B1104D\r
+:1019E0007093E9006093E800B0927B00A0927A00C7\r
+:1019F0008091E8009091E9001816190634F480915E\r
+:101A0000D2009091D30097FD0DC08091E800909195\r
+:101A1000E90097FF0CC08091D2009091D300181676\r
+:101A200019062CF41093E9000093E8001AC0809185\r
+:101A3000E8009091E9008F3F910531F02CF0309251\r
+:101A4000E9002092E8000DC08091E8009091E90043\r
+:101A500081309F4F34F421E03FEF3093E900209331\r
+:101A6000E8008091A900807F8093A9003091A900AF\r
+:101A700080B326B3807490E0A3E095958795AA95EE\r
+:101A8000E1F72770282B20952F70232B2093A90096\r
+:101A90008091EE009091EF002091660030916700F8\r
+:101AA0002817390709F443C08091EE009091EF00A8\r
+:101AB000892B19F485B3837F26C08091EE00909125\r
+:101AC000EF008115904819F485B38C601CC080919B\r
+:101AD0006900811107C08091EE009091EF00181607\r
+:101AE000190654F080916900882351F08091EE002E\r
+:101AF0009091EF0097FF04C085B3877F846003C097\r
+:101B000085B38B7F886085BB8091EE009091EF005C\r
+:101B100090936700809366008091EE009091EF00B3\r
+:101B200097FF03C09195819591099BBD8ABD8091D6\r
+:101B3000EC009091ED002091640030916500281731\r
+:101B4000390709F443C08091EC009091ED00892B96\r
+:101B500019F485B38F7C26C08091EC009091ED0044\r
+:101B60008115904819F485B380631CC0809168008A\r
+:101B7000811107C08091EC009091ED0018161906B4\r
+:101B800054F080916800882351F08091EC0090918E\r
+:101B9000ED0097FF04C085B38F7D806103C085B3DE\r
+:101BA0008F7E806285BB8091EC009091ED009093D8\r
+:101BB0006500809364008091EC009091ED0097FFA8\r
+:101BC00003C091958195910999BD88BD8091EA00E6\r
+:101BD0009091EB0020916200309163002817390743\r
+:101BE00009F442C08091EA009091EB00892B19F42E\r
+:101BF00085B38F7326C08091EA009091EB00811528\r
+:101C0000904819F485B3806C1CC08091DB00811171\r
+:101C100007C08091EA009091EB001816190654F065\r
+:101C20008091DB00882351F08091EA009091EB00D5\r
+:101C300097FF04C085B38F77806403C085B38F7B23\r
+:101C4000806885BB8091EA009091EB0090936300DF\r
+:101C5000809362008091EA009091EB0097FF03C0AF\r
+:101C600091958195910983BD8091E8009091E9005B\r
+:101C700020916000309161002817390709F442C0B3\r
+:101C80008091E8009091E900892B19F482B3837F59\r
+:101C900026C08091E8009091E9008115904819F4E0\r
+:101CA00082B38C601CC08091DA00811107C08091E2\r
+:101CB000E8009091E9001816190654F08091DA00B6\r
+:101CC000882351F08091E8009091E90097FF04C0CB\r
+:101CD00082B3877F846003C082B38B7F886082BBBE\r
+:101CE0008091E8009091E9009093610080936000FA\r
+:101CF0008091E8009091E90097FF03C0919581954C\r
+:101D000091098CBF8091AC008F5F8093AC0085B748\r
+:101D1000806885BF889585B78F7785BF0C945F06EF\r
+:101D20006F927F929F92AF92BF92CF92DF92EF928B\r
+:101D3000FF920F931F93CF93DF93CDB7DEB72C970E\r
+:101D40000FB6F894DEBF0FBECDBF8C017B013A0108\r
+:101D5000FC0117821682838181FF19C1CE01019691\r
+:101D60005C01F801D380F701D3FC2591D3FE2191CA\r
+:101D70007F01222309F407C1253249F4D3FC2591C0\r
+:101D8000D3FE21917F01253211F0912C1BC0B801A7\r
+:101D9000822F90E00E941B1363013601E2CF2223C1\r
+:101DA00009F4F1C0622F70E08BEB91E02C870E9468\r
+:101DB000C5122C85892B49F0F701D3FC2591D3FE60\r
+:101DC00021917F0197FEEBCF0CC0233221F4F92D36\r
+:101DD000F0619F2EF1CF2C3639F4292D2068922EF8\r
+:101DE000EBCF222309F4CFC0622F70E084EB91E0A7\r
+:101DF0002C870E94C5122C85892B41F06301F4E0E9\r
+:101E0000CF0ED11CB8018FE390E012C0233641F011\r
+:101E1000233789F0233521F5F92DF1609F2E0BC072\r
+:101E2000630122E0C20ED11CB801F30180819181CF\r
+:101E30000E941B13B2CF630122E0C20ED11CF3013A\r
+:101E400060807180F30190FC859190FE81913F014B\r
+:101E5000882309F4A2CFB80190E00E941B13F2CFAF\r
+:101E6000243611F0293639F5630197FE09C0F4E0F4\r
+:101E7000CF0ED11CF30160817181828193810AC0F0\r
+:101E8000F2E0CF0ED11CF30160817181882777FDCC\r
+:101E90008095982FF92DFF7E9F2E97FF09C0909572\r
+:101EA0008095709561957F4F8F4F9F4FF0649F2E67\r
+:101EB0002AE030E038C02037A1F040F42835D1F0D6\r
+:101EC0002F3609F060C028E030E019C0253719F03E\r
+:101ED000283751F058C0292D2F7E922E2AE030E06D\r
+:101EE0000EC0892D8061982E992D9462992E20E143\r
+:101EF00030E005C0E92DE4609E2E20E132E0630170\r
+:101F000097FE09C0F4E0CF0ED11CF301608171810E\r
+:101F10008281938108C0F2E0CF0ED11CF301608171\r
+:101F2000718180E090E0A5010E947A13782E7A18E2\r
+:101F300096FE05C0B8018DE290E00E941B1394FE4E\r
+:101F400016C0FE01E70DF11D8081803381F0B801DC\r
+:101F500080E390E00E941B1392FE09C0292D20729D\r
+:101F6000822F90E0B801885A9F4F0E941B137A94E9\r
+:101F7000F501E70DF11D8081B80190E00E941B136F\r
+:101F80007110F5CF0ACFF8018681978102C08FEFDB\r
+:101F90009FEF2C960FB6F894DEBF0FBECDBFDF913A\r
+:101FA000CF911F910F91FF90EF90DF90CF90BF9056\r
+:101FB000AF909F907F906F9008955058BB27AA27AD\r
+:101FC0000ED0A0C169D130F06ED120F031F49F3F26\r
+:101FD00011F41EF45EC10EF4E095E7FB54C1E92F45\r
+:101FE000B3D180F3BA17620773078407950718F017\r
+:101FF00071F49EF5CBC10EF4E0950B2EBA2FA02DF7\r
+:102000000B01B90190010C01CA01A0011124FF27A5\r
+:10201000591B99F0593F50F4503E68F11A16F040A0\r
+:10202000A22F232F342F4427585FF3CF469537959F\r
+:102030002795A795F0405395C9F77EF41F16BA0B64\r
+:10204000620B730B840BBAF09150A1F0FF0FBB1F12\r
+:10205000661F771F881FC2F70EC0BA0F621F731F5B\r
+:10206000841F48F4879577956795B795F7959E3FB8\r
+:1020700008F0B3CF9395880F08F09927EE0F979546\r
+:1020800087950895DCD008F481E0089514D1E39594\r
+:102090004AC10CD037C107D140F0FED030F021F456\r
+:1020A0005F3F19F0F0C0511172C1F3C04DD198F3E8\r
+:1020B0009923C9F35523B1F3951B550BBB27AA27C9\r
+:1020C00062177307840738F09F5F5F4F220F331F3B\r
+:1020D000441FAA1FA9F333D00E2E3AF0E0E830D007\r
+:1020E00091505040E695001CCAF729D0FE2F27D00A\r
+:1020F000660F771F881FBB1F261737074807AB07D8\r
+:10210000B0E809F0BB0B802DBF01FF2793585F4F4C\r
+:102110002AF09E3F510568F0B6C039C15F3FECF32D\r
+:10212000983EDCF3869577956795B795F7959F5F11\r
+:10213000C9F7880F911D9695879597F90895E1E065\r
+:10214000660F771F881FBB1F621773078407BA07C4\r
+:1021500020F0621B730B840BBA0BEE1F88F7E0951F\r
+:10216000089504D06894B11112C10895F5D088F093\r
+:102170009F5790F0B92F9927B751A0F0D1F0660F73\r
+:10218000771F881F991F1AF0BA95C9F712C0B1308E\r
+:1021900081F0FCD0B1E00895F9C0672F782F88272F\r
+:1021A000B85F39F0B93FCCF3869577956795B395CD\r
+:1021B000D9F73EF490958095709561957F4F8F4F3C\r
+:1021C0009F4F0895E89409C097FB3EF49095809541\r
+:1021D000709561957F4F8F4F9F4F9923A9F0F92FED\r
+:1021E00096E9BB279395F695879577956795B7956B\r
+:1021F000F111F8CFFAF4BB0F11F460FF1BC06F5F51\r
+:102200007F4F8F4F9F4F16C0882311F096E911C062\r
+:10221000772321F09EE8872F762F05C0662371F083\r
+:1022200096E8862F70E060E02AF09A95660F771F97\r
+:10223000881FDAF7880F9695879597F90895990F73\r
+:102240000008550FAA0BE0E8FEEF16161706E80780\r
+:10225000F907C0F012161306E407F50798F0621BA1\r
+:10226000730B840B950B39F40A2661F0232B242B76\r
+:10227000252B21F408950A2609F4A140A6958FEF95\r
+:10228000811D811D089597F99F6780E870E060E0E7\r
+:1022900008959FEF80EC089500240A9416161706FF\r
+:1022A00018060906089500240A9412161306140647\r
+:1022B00005060895EECF50D0E8F3E894E0E0BB27A0\r
+:1022C0009F57F0F02AED3FE049EC06C0EE0FBB0F40\r
+:1022D000661F771F881F28F0B23A620773078407CA\r
+:1022E00028F0B25A620B730B840BE3959A9572F740\r
+:1022F000803830F49A95BB0F661F771F881FD2F77E\r
+:102300009048BAC0092E0394000C11F4882352F0AF\r
+:10231000BB0F40F4BF2B11F460FF04C06F5F7F4F11\r
+:102320008F4F9F4F0895EF93E0FF06C0A2EA2AED7A\r
+:102330003FE049EC5FEB53DEE5DF0F90039401FCD7\r
+:102340009058E6E9F1E0A4C057FD9058440F551F9E\r
+:1023500059F05F3F71F04795880F97FB991F61F027\r
+:102360009F3F79F087950895121613061406551F9E\r
+:10237000F2CF4695F1DF08C0161617061806991F0A\r
+:10238000F1CF86957105610508940895E894BB27FF\r
+:1023900066277727CB0197F9089551DF08F48FEF6F\r
+:1023A00008950BD0AFCF78DF28F07DDF18F09523AC\r
+:1023B00009F069CF6ECF1124EACFC6DFA0F3959F55\r
+:1023C000D1F3950F50E0551F629FF001729FBB271C\r
+:1023D000F00DB11D639FAA27F00DB11DAA1F649FC8\r
+:1023E0006627B00DA11D661F829F2227B00DA11D7B\r
+:1023F000621F739FB00DA11D621F839FA00D611D01\r
+:10240000221F749F3327A00D611D231F849F600D21\r
+:10241000211D822F762F6A2F11249F5750408AF05A\r
+:10242000E1F088234AF0EE0FFF1FBB1F661F771FE6\r
+:10243000881F91505040A9F79E3F510570F023CF5F\r
+:10244000A6CF5F3FECF3983EDCF3869577956795D2\r
+:10245000B795F795E7959F5FC1F7FE2B880F911D04\r
+:102460009695879597F908959F9325DF0F9007FC20\r
+:10247000EE5F59CF9F3F31F0915020F487957795CB\r
+:102480006795B795880F911D9695879597F908954B\r
+:102490009F938F937F936F93FF93EF939B01AC0177\r
+:1024A00080DFEF91FF9105D02F913F914F915F9188\r
+:1024B00078CFDF93CF931F930F93FF92EF92DF922A\r
+:1024C0007B018C01689405C0DA2EEF0176DFFE01F6\r
+:1024D000E894A5912591359145915591AEF3EF0181\r
+:1024E0007EDDFE019701A801DA9479F7DF90EF9085\r
+:1024F000FF900F911F91CF91DF910895052E97FBCB\r
+:102500001EF400940E94951257FD07D00E94A3125A\r
+:1025100007FC03D04EF40C949512509540953095DD\r
+:1025200021953F4F4F4F5F4F08959095809570953F\r
+:1025300061957F4F8F4F9F4F0895EE0FFF1F0590BE\r
+:10254000F491E02D0994A1E21A2EAA1BBB1BFD01F8\r
+:102550000DC0AA1FBB1FEE1FFF1FA217B307E40782\r
+:10256000F50720F0A21BB30BE40BF50B661F771FDA\r
+:10257000881F991F1A9469F76095709580959095BA\r
+:102580009B01AC01BD01CF010895FC010590061629\r
+:1025900021F00020D9F7C00108953197CF010895A7\r
+:1025A0000F931F93CF93DF93EC018B01009731F4CE\r
+:1025B0006115710519F480E090E038C06EE070E0BC\r
+:1025C00081E090E00E94D813FC010097A1F380E81D\r
+:1025D00083830115110571F01387028781E88383D6\r
+:1025E0008091660190916701892B21F4F093670136\r
+:1025F000E09366012097C9F0D187C087838182600C\r
+:1026000083838091680190916901892B71F4F09323\r
+:102610006901E093680180916A0190916B01892BB7\r
+:1026200021F4F0936B01E0936A01CF01DF91CF9128\r
+:102630001F910F9108950F931F93CF93DF93182F3E\r
+:10264000092FEB018B8181FD03C08FEF9FEF20C02D\r
+:1026500082FF10C04E815F812C813D81421753075C\r
+:102660007CF4E881F9819F012F5F3F4F39832883F4\r
+:10267000108306C0E885F985812F0995892B29F7F4\r
+:102680002E813F812F5F3F4F3F832E83812F902FDD\r
+:10269000DF91CF911F910F9108950F931F93CF93C7\r
+:1026A000DF93E0916801F0916901238121FF1BC054\r
+:1026B000EC0100E010E0899160916801709169017E\r
+:1026C000DB011896ED91FC911997882331F009955B\r
+:1026D000892B89F30FEF1FEFEECF8AE00995892B45\r
+:1026E00011F4C80102C08FEF9FEFDF91CF911F91CE\r
+:1026F0000F910895FA01AA27283051F1203181F174\r
+:10270000E8946F936E7F6E5F7F4F8F4F9F4FAF4FF9\r
+:10271000B1E03ED0B4E03CD0670F781F891F9A1F0C\r
+:10272000A11D680F791F8A1F911DA11D6A0F711DC0\r
+:10273000811D911DA11D20D009F468943F912AE0CC\r
+:10274000269F11243019305D3193DEF6CF010895B4\r
+:10275000462F4770405D4193B3E00FD0C9F7F6CFE5\r
+:10276000462F4F70405D4A3318F0495D31FD4052AD\r
+:10277000419302D0A9F7EACFB4E0A6959795879543\r
+:1027800077956795BA95C9F7009761057105089522\r
+:102790009B01AC010A2E06945795479537952795CE\r
+:1027A000BA95C9F7620F731F841F951FA01D089566\r
+:1027B0000F931F93CF93DF93869F8001879F100D08\r
+:1027C000969F100D1124C8010E94F413EC0100978C\r
+:1027D00029F0A80160E070E00E941B15CE01DF9196\r
+:1027E000CF911F910F910895CF93DF938230910580\r
+:1027F00010F482E090E0E0916E01F0916F0120E032\r
+:1028000030E0A0E0B0E0309739F1408151814817C5\r
+:102810005907B8F04817590771F4828193811097CE\r
+:1028200029F013969C938E9312972CC090936F016E\r
+:1028300080936E0127C02115310531F042175307EF\r
+:1028400018F0A901DB0101C0EF019A01BD01DF0110\r
+:102850000280F381E02DD7CF21153105F9F0281B37\r
+:10286000390B2430310580F48A819B816115710513\r
+:1028700021F0FB019383828304C090936F018093C6\r
+:102880006E01FE01329644C0FE01E20FF31F8193F8\r
+:10289000919322503109398328833AC020916C01E9\r
+:1028A00030916D01232B41F420916C0030916D002B\r
+:1028B00030936D0120936C0120916A0030916B0080\r
+:1028C0002115310541F42DB73EB740916E0050916E\r
+:1028D0006F00241B350BE0916C01F0916D01E21744\r
+:1028E000F307A0F42E1B3F0B2817390778F0AC0133\r
+:1028F0004E5F5F4F2417350748F04E0F5F1F509310\r
+:102900006D0140936C018193919302C0E0E0F0E08F\r
+:10291000CF01DF91CF910895CF93DF93009709F412\r
+:1029200087C0FC01329713821282C0916E01D09150\r
+:102930006F01209781F420813181280F391F809108\r
+:102940006C0190916D018217930779F5F0936D01F9\r
+:10295000E0936C016DC0DE0120E030E0AE17BF07F0\r
+:1029600050F412964D915C9113979D0141155105BC\r
+:1029700009F1DA01F3CFB383A28340815181840F3F\r
+:10298000951F8A179B0771F48D919C911197840F65\r
+:10299000951F02969183808312968D919C91139737\r
+:1029A000938382832115310529F4F0936F01E0931D\r
+:1029B0006E013EC0D9011396FC93EE9312974D9190\r
+:1029C0005D91A40FB51FEA17FB0779F4808191810F\r
+:1029D000840F951F0296D90111969C938E93828144\r
+:1029E000938113969C938E931297E0E0F0E08A8196\r
+:1029F0009B81009719F0FE01EC01F9CFCE01029600\r
+:102A000028813981820F931F20916C0130916D01D3\r
+:102A10002817390769F4309729F410926F01109242\r
+:102A20006E0102C013821282D0936D01C0936C01BB\r
+:102A3000DF91CF910895DC0101C06D93415050406A\r
+:082A4000E0F70895F894FFCFC0\r
+:102A480000800080008000800101000070012000EB\r
+:0A2A58000D0A53746172740D000042\r
 :00000001FF\r
index d6413ad..e4a3c12 100644 (file)
@@ -23,8 +23,8 @@ magn_z_max: 596
 
 # extended calibration
 calibration_magn_use_extended: true
-magn_ellipsoid_center: [344.256, 18.1668, -330.980]
-magn_ellipsoid_transform: [[0.838154, 0.00504547, 0.0313606], [0.00504547, 0.989158, 0.0278265], [0.0313606, 0.0278265, 0.916270]]
+magn_ellipsoid_center: [302.374, 39.5765, -397.215]
+magn_ellipsoid_transform: [[0.924637, -0.0539937, 0.0408358], [-0.0539937, 0.958933, 0.0208039], [0.0408358, 0.0208039, 0.947891]]
 
 # AHRS to robot calibration
 imu_yaw_calibration: 0.0
index 9b6b60a..6806f62 100755 (executable)
@@ -6,8 +6,8 @@ import struct
 from time import sleep
 from i2c import i2c_write_reg, i2c_read_reg
 
-KP=0.05
-KI=0.0
+KP=0.06
+KI=0.10
 KD=0.0
 PID_T=0.01
 STEP_PER_M_AVG=5766.1
@@ -19,6 +19,7 @@ esum1 = 0.0
 esum2 = 0.0
 esum3 = 0.0
 esum4 = 0.0
+PWM_BREAK = -32768
 speed1_wish=float(sys.argv[1])*STEP_PER_M_AVG
 speed2_wish=float(sys.argv[1])*STEP_PER_M_AVG
 speed3_wish=float(sys.argv[2])*STEP_PER_M_AVG
@@ -45,11 +46,13 @@ if __name__ == "__main__":
                        motor1 = KP*e + KI*PID_T*esum1 + KD/PID_T*(e - eold1)
                        eold1 = e
 
-                       if (motor1 < 0 and speed1_wish > 0): motor1 = 0 
-                       elif (motor1 > 0 and speed1_wish < 0): motor1 = 0       
+                       if (motor1 < 0 and speed1_wish > 0): motor1 = PWM_BREAK 
+                       elif (motor1 > 0 and speed1_wish < 0): motor1 = PWM_BREAK
                        elif (motor1 > 255): motor1 = 255
                        elif (motor1 < -255): motor1 = -255
 
+                       print "Wish=", speed1_wish, "Speed=", speed1, "e=", e, "esum=", esum1, "pwm=", motor1, "error=", error
+
                if speed2_wish == 0: 
                        motor2 = 0.0
                        eold2 = 0.0
@@ -60,8 +63,8 @@ if __name__ == "__main__":
                        motor2 = KP*e + KI*PID_T*esum2 + KD/PID_T*(e - eold2)
                        eold2 = e
 
-                       if (motor2 < 0 and speed2_wish > 0): motor2 = 
-                       elif (motor2 > 0 and speed2_wish < 0): motor2 = 0       
+                       if (motor2 < 0 and speed2_wish > 0): motor2 = PWM_BREAK
+                       elif (motor2 > 0 and speed2_wish < 0): motor2 = PWM_BREAK
                        elif (motor2 > 255): motor2 = 255
                        elif (motor2 < -255): motor2 = -255
 
@@ -75,8 +78,8 @@ if __name__ == "__main__":
                        motor3 = KP*e + KI*PID_T*esum3 + KD/PID_T*(e - eold3)
                        eold3 = e
 
-                       if (motor3 < 0 and speed3_wish > 0): motor3 = 
-                       elif (motor3 > 0 and speed3_wish < 0): motor3 = 0       
+                       if (motor3 < 0 and speed3_wish > 0): motor3 = PWM_BREAK
+                       elif (motor3 > 0 and speed3_wish < 0): motor3 = PWM_BREAK
                        elif (motor3 > 255): motor3 = 255
                        elif (motor3 < -255): motor3 = -255
 
@@ -90,12 +93,12 @@ if __name__ == "__main__":
                        motor4 = KP*e + KI*PID_T*esum4 + KD/PID_T*(e - eold4)
                        eold4 = e
 
-                       if (motor4 < 0 and speed4_wish > 0): motor4 = 
-                       elif (motor4 > 0 and speed4_wish < 0): motor4 = 0       
+                       if (motor4 < 0 and speed4_wish > 0): motor4 = PWM_BREAK
+                       elif (motor4 > 0 and speed4_wish < 0): motor4 = PWM_BREAK
                        elif (motor4 > 255): motor4 = 255
                        elif (motor4 < -255): motor4 = -255
 
-                       print "Wish=", speed4_wish, "Speed=", speed4, "e=", e, "esum=", esum4, "pwm=", motor4, "error=", error
+                       #print "Wish=", speed4_wish, "Speed=", speed4, "e=", e, "esum=", esum4, "pwm=", motor4, "error=", error
 
                set_pwm(motor1, motor2, motor3, motor4)
 
index 3d1c972..2de2f59 100755 (executable)
@@ -79,6 +79,7 @@ class MoveBase:
                rospy.loginfo("Reset Status: 0x%x" % reset_val)
                i = 0
                while not rospy.is_shutdown():
+                       rospy.logdebug("Loop alive")
                        #print struct.unpack(">B", i2c_read_reg(0x50, 0xA2, 1))[0] # count test
                        self.get_motor_err()
                        self.get_odom()
@@ -230,7 +231,9 @@ class MoveBase:
                i2c_write_reg(0x50, 0x50, struct.pack(">ff", trans, rot))
 
        def cmdVelReceived(self, msg):
+               rospy.logdebug("Set new cmd_vel:", msg.linear.x, msg.angular.z)
                self.cmd_vel = (msg.linear.x, msg.angular.z) # commit speed on next update cycle
+               rospy.logdebug("Set new cmd_vel done")
 
        # http://rn-wissen.de/wiki/index.php/Sensorarten#Sharp_GP2D12
        def get_dist_ir(self, num):