diff options
author | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2016-07-02 02:56:24 +0300 |
---|---|---|
committer | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2016-07-02 02:56:24 +0300 |
commit | 61bf4375a94f6aed98e33d0effc1ec22a26c32f5 (patch) | |
tree | d0823b6c8b216ea51465d680916bdf1312bf78b6 | |
parent | 604e5b24aeeabde606c87b53688bb97b60fd7e43 (diff) |
Support for 9-pin Dendy controllers
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | defines.h | 1 | ||||
-rw-r--r-- | gamepad.c | 143 | ||||
-rw-r--r-- | nessmd2usb.hex | 725 |
4 files changed, 501 insertions, 370 deletions
@@ -35,7 +35,7 @@ ## Как использовать Устройство работает без дополнительных драйверов. Под Windows оно видится как четыре игровых контроллера. Под *nix и MacOS скорее всего понадобятся танцы с бубном. -Контроллеры от Денди поддерживаются только с широким (15-пиновым) разъёмом. Не пытайтесь включать Денди-контроллеры с узким (9-пиновым) разъёмом в гнёзда для Сеги. Они туда влезут, но работать не будут. +Контроллеры от Денди поддерживаются как с широким (15-пиновым) разъёмом, так и с узким (9-пиновым) разъёмом. Последние можно включать в гнёзда для Сеги. ## Корпус @@ -16,6 +16,7 @@ #define SMD_DATA3_PIN2 3 #define SMD_DATA4_PIN2 4 #define SMD_DATA5_PIN2 5 +#define SMD_USE_DENDY9_PIN #define NES_ENABLED #define NES_SECOND_ENABLED @@ -5,7 +5,6 @@ #include "bits.h" #ifdef NES_ENABLED - void init_nes_gamepad() { NES_PORT_DDR |= 1<<NES_LATCH_PIN; // Latch, output @@ -22,6 +21,7 @@ uint16_t get_nes_gamepad() { uint16_t gamepad_data = 0; NES_PORT_PORT &= ~(1<<NES_LATCH_PIN); // Latch + _delay_us(10); int b; for (b = 0; b < 8; b++) { @@ -162,7 +162,7 @@ uint32_t get_smd_gamepad() | (((SMD_DATA_PORT_PIN>>SMD_DATA3_PIN)&1)<<3) | (((SMD_DATA_PORT_PIN>>SMD_DATA4_PIN)&1)<<4) | (((SMD_DATA_PORT_PIN>>SMD_DATA5_PIN)&1)<<5); -#ifdef SMD_SECOND_ENABLED +#ifdef SMD_SECOND_ENABLED gamepad_data_high2 = ((SMD_DATA_PORT_PIN2>>SMD_DATA0_PIN2)&1) | (((SMD_DATA_PORT_PIN2>>SMD_DATA1_PIN2)&1)<<1) | (((SMD_DATA_PORT_PIN2>>SMD_DATA2_PIN2)&1)<<2) @@ -174,14 +174,79 @@ uint32_t get_smd_gamepad() } #endif +#ifdef SMD_USE_DENDY9_PIN +void init_dendy_9pin(uint8_t n) +{ // 3, 4, 6 + if (!n) + { + SMD_DATA_PORT_DDR &= ~(1<<SMD_DATA1_PIN); // Data 1 aka data, input + SMD_DATA_PORT_DDR |= 1<<SMD_DATA2_PIN; // Data 2 aka latch, output + SMD_DATA_PORT_DDR |= 1<<SMD_DATA3_PIN; // Data 3 aka clock, output + SMD_DATA_PORT_DDR |= 1<<SMD_DATA4_PIN; // Data 4 aka VCC, output + SMD_DATA_PORT_PORT |= 1<<SMD_DATA1_PIN; // Data 1 aka data, pull-up + SMD_DATA_PORT_PORT |= 1<<SMD_DATA2_PIN; // Data 2 aka latch, hi + SMD_DATA_PORT_PORT |= 1<<SMD_DATA3_PIN; // Data 3 aka clock, hi + SMD_DATA_PORT_PORT |= 1<<SMD_DATA4_PIN; // Data 4 aka VCC, hi + } else { +#ifdef SMD_SECOND_ENABLED + SMD_DATA_PORT_DDR2 &= ~(1<<SMD_DATA1_PIN2); // Data 1 aka data, input + SMD_DATA_PORT_DDR2 |= 1<<SMD_DATA2_PIN2; // Data 2 aka latch, output + SMD_DATA_PORT_DDR2 |= 1<<SMD_DATA3_PIN2; // Data 3 aka clock, output + SMD_DATA_PORT_DDR2 |= 1<<SMD_DATA4_PIN2; // Data 4 aka VCC, output + SMD_DATA_PORT_PORT2 |= 1<<SMD_DATA1_PIN2; // Data 1 aka data, pull-up + SMD_DATA_PORT_PORT2 |= 1<<SMD_DATA2_PIN2; // Data 2 aka latch, hi + SMD_DATA_PORT_PORT2 |= 1<<SMD_DATA3_PIN2; // Data 3 aka clock, hi + SMD_DATA_PORT_PORT2 |= 1<<SMD_DATA4_PIN2; // Data 4 aka VCC, hi +#endif + } +} + +uint8_t get_dendy_9pin(uint8_t n) +{ + uint8_t gamepad_data = 0; + if (!n) + { + SMD_DATA_PORT_PORT &= ~(1<<SMD_DATA2_PIN); // Data 2 aka latch, low + _delay_us(10); + int b; + for (b = 0; b < 8; b++) + { + SMD_DATA_PORT_PORT &= ~(1<<SMD_DATA3_PIN); // Data 3 aka clock, low + _delay_us(10); + gamepad_data |= (((SMD_DATA_PORT_PIN>>SMD_DATA1_PIN)&1)<<b); + SMD_DATA_PORT_PORT |= 1<<SMD_DATA3_PIN; // Data 3 aka clock, hi + _delay_us(10); + } + SMD_DATA_PORT_PORT |= 1<<SMD_DATA2_PIN; // Data 2 aka latch, hi + } else { +#ifdef SMD_SECOND_ENABLED + SMD_DATA_PORT_PORT2 &= ~(1<<SMD_DATA2_PIN2); // Data 2 aka latch, low + _delay_us(10); + int b; + for (b = 0; b < 8; b++) + { + SMD_DATA_PORT_PORT2 &= ~(1<<SMD_DATA3_PIN2); // Data 3 aka clock, low + _delay_us(10); + gamepad_data |= (((SMD_DATA_PORT_PIN2>>SMD_DATA1_PIN2)&1)<<b); + SMD_DATA_PORT_PORT2 |= 1<<SMD_DATA3_PIN2; // Data 3 aka clock, hi + _delay_us(10); + } + SMD_DATA_PORT_PORT2 |= 1<<SMD_DATA2_PIN2; // Data 2 aka latch, hi +#endif + } + return gamepad_data; +} +#endif + uint32_t get_smd_gamepad_decoded(void) { uint32_t result = 0; + uint8_t smd_detected[2] = {0, 0}; uint8_t b, c, d; for (c = 0; c < 4; c++) { uint32_t smd_gamepad_data = get_smd_gamepad(); - for (d = 0; d < 2; d++) + for (d = 0; d < 2; d++) // for each controller { if ((smd_gamepad_data & 0b00001111) || (c < 2)) // 3-button mode { @@ -197,6 +262,10 @@ uint32_t get_smd_gamepad_decoded(void) case 1: // Down set_bit(result, 9 + d*16); break; + case 2: // always low + case 3: + smd_detected[d] = 1; + break; case 4: // A set_bit(result, 0 + d*16); break; @@ -250,6 +319,25 @@ uint32_t get_smd_gamepad_decoded(void) smd_gamepad_data >>= 16; } } + if (!smd_detected[0] || !smd_detected[1]) // SMD gamepad is not connected? + { +#ifdef SMD_USE_DENDY9_PIN + // so maybe it's 9-pin dendy gamepad? + for (d = 0; d < 2; d++) + { + if (!smd_detected[d]) + { + init_dendy_9pin(d); + _delay_us(50); + uint32_t dendy_data = ~get_dendy_9pin(d); + result &= ~(0xFFFFUL << (d*16)); + result |= ((dendy_data & 0x0F) | ((dendy_data & 0xF0) << 4)) << (16*d); + } + } + init_smd_gamepad(); // back to SMD mode +#endif + } + return result; } @@ -260,19 +348,26 @@ void init_dualshock_gamepad() DUALSHOCK_PORT_PORT |= (1<<DUALSHOCK_COMMAND_PIN); // Command pin - login high DUALSHOCK_PORT_DDR &= ~(1<<DUALSHOCK_DATA_PIN); // Data pin - input DUALSHOCK_PORT_PORT |= (1<<DUALSHOCK_DATA_PIN); // Data pin - pull-up - DUALSHOCK_PORT_DDR |= (1<<DUALSHOCK_ATTENTION_PIN); // Attention - output - DUALSHOCK_PORT_PORT |= (1<<DUALSHOCK_ATTENTION_PIN); // Attention - logic high DUALSHOCK_PORT_DDR |= (1<<DUALSHOCK_CLOCK_PIN); // Clock - output DUALSHOCK_PORT_PORT |= (1<<DUALSHOCK_CLOCK_PIN); // Clock - logic high + DUALSHOCK_ATTENTION_DDR |= (1<<DUALSHOCK_ATTENTION_PIN); // Attention - output + DUALSHOCK_ATTENTION_PORT |= (1<<DUALSHOCK_ATTENTION_PIN); // Attention - logic high +#ifdef DUALSHOCK_SECOND_ENABLED + DUALSHOCK_ATTENTION_DDR |= (1<<DUALSHOCK_ATTENTION_PIN2); // Attention 2 - output + DUALSHOCK_ATTENTION_PORT |= (1<<DUALSHOCK_ATTENTION_PIN2); // Attention 2 - logic high +#endif /* DUALSHOCK_PORT_DDR &= ~(1<<DUALSHOCK_ACK_PIN); // Ack pin - input DUALSHOCK_PORT_PORT |= (1<<DUALSHOCK_ACK_PIN); // Ack pin - pull-up */ } -int dualshock_command(uint8_t* command, uint8_t* data, int length) +int dualshock_command(uint8_t* command, uint8_t* data, int length, uint8_t controller_number) { - DUALSHOCK_PORT_PORT &= ~(1<<DUALSHOCK_ATTENTION_PIN); // Attention! + if (!controller_number) + DUALSHOCK_ATTENTION_PORT &= ~(1<<DUALSHOCK_ATTENTION_PIN); // Attention! + else + DUALSHOCK_ATTENTION_PORT &= ~(1<<DUALSHOCK_ATTENTION_PIN2); // Attention! _delay_us(20); int b, bit; for (b = 0; b < length; b++) // Each byte... @@ -292,7 +387,10 @@ int dualshock_command(uint8_t* command, uint8_t* data, int length) } if (b == 1 && data[1] == 0xFF) // Alternative device detection { - DUALSHOCK_PORT_PORT |= (1<<DUALSHOCK_ATTENTION_PIN); // No attention... + if (!controller_number) + DUALSHOCK_ATTENTION_PORT |= (1<<DUALSHOCK_ATTENTION_PIN); // No attention... + else + DUALSHOCK_ATTENTION_PORT |= (1<<DUALSHOCK_ATTENTION_PIN2); // No attention... return 0; } /* @@ -312,35 +410,38 @@ int dualshock_command(uint8_t* command, uint8_t* data, int length) } */ } - DUALSHOCK_PORT_PORT |= (1<<DUALSHOCK_ATTENTION_PIN); // No attention... + if (!controller_number) + DUALSHOCK_ATTENTION_PORT |= (1<<DUALSHOCK_ATTENTION_PIN); // No attention... + else + DUALSHOCK_ATTENTION_PORT |= (1<<DUALSHOCK_ATTENTION_PIN2); // No attention... _delay_us(20); return 1; } -int get_dualshock_gamepad(uint8_t* data, int size, uint8_t motor_small, uint8_t motor_large) // pointer to uint8_t[21], number of bytes to request, vibration... +int get_dualshock_gamepad(uint8_t* data, int size, uint8_t motor_small, uint8_t motor_large, uint8_t controller_number) // pointer to uint8_t[21], number of bytes to request, vibration... { - static char dualshock_configered = 0; + static uint8_t dualshock_configered[2] = {0, 0}; uint8_t command_query[21] = {0x01, 0x42, 0, motor_small, motor_large, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - if (!dualshock_command(command_query, data, size)) + if (!dualshock_command(command_query, data, size, controller_number)) { - dualshock_configered = 0; + dualshock_configered[controller_number] = 0; return 0; } - if (!dualshock_configered) // Need to reconfigure dualshock + if (!dualshock_configered[controller_number]) // Need to reconfigure dualshock { uint8_t command_config_mode[5] = {0x01, 0x43, 0x00, 0x01, 0x00}; - if (!dualshock_command(command_config_mode, data, sizeof(command_config_mode))) return 0; + if (!dualshock_command(command_config_mode, data, sizeof(command_config_mode), controller_number)) return 0; uint8_t command_analog_mode[9] = {0x01, 0x44, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00}; - if (!dualshock_command(command_analog_mode, data, sizeof(command_analog_mode))) return 0; + if (!dualshock_command(command_analog_mode, data, sizeof(command_analog_mode), controller_number)) return 0; uint8_t command_config_motors[9] = {0x01, 0x4D, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF}; - if (!dualshock_command(command_config_motors, data, sizeof(command_config_motors))) return 0; + if (!dualshock_command(command_config_motors, data, sizeof(command_config_motors), controller_number)) return 0; uint8_t command_config_pressure[9] = {0x01, 0x4F, 0x00, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00}; - if (!dualshock_command(command_config_pressure, data, sizeof(command_config_pressure))) return 0; + if (!dualshock_command(command_config_pressure, data, sizeof(command_config_pressure), controller_number)) return 0; uint8_t command_config_mode_exit[8] = {0x01, 0x43, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF}; - if (!dualshock_command(command_config_mode_exit, data, sizeof(command_config_mode_exit))) return 0; - dualshock_configered = 1; - if (!dualshock_command(command_query, data, size)) return 0; + if (!dualshock_command(command_config_mode_exit, data, sizeof(command_config_mode_exit), controller_number)) return 0; + dualshock_configered[controller_number] = 1; + if (!dualshock_command(command_query, data, size, controller_number)) return 0; } return 1; } diff --git a/nessmd2usb.hex b/nessmd2usb.hex index 706aba3..8eb5dee 100644 --- a/nessmd2usb.hex +++ b/nessmd2usb.hex @@ -1,6 +1,6 @@ :10000000EAC0000004C1000002C1000000C10000FD :10001000FEC00000FCC00000FAC00000F8C00000F4 -:10002000F6C00000F4C00000F2C000000C947F088D +:10002000F6C00000F4C00000F2C000000C946109AA :10003000EEC00000ECC00000EAC00000E8C0000014 :10004000E6C00000E4C00000E2C00000E0C0000024 :10005000DEC00000DCC00000DAC00000D8C0000034 @@ -28,9 +28,9 @@ :1001B0002F00440065006E00640079002000630099 :1001C0006F006E00740072006F006C006C006500C0 :1001D00072007300000011241FBECFEFD2E0DEBF1B -:1001E000CDBF11E0A0E0B1E0E8EFF9E102C0059079 +:1001E000CDBF11E0A0E0B1E0E4ECFBE102C005907E :1001F0000D92A031B107D9F711E0A0E1B1E001C043 -:100200001D92A533B107E1F776D00C94FA0CF8CE25 +:100200001D92A533B107E1F776D00C94E00DF8CE3E :1002100008952E98089580910E0190910F010097F6 :1002200029F0019790930F0180930E0108950F9389 :100230001F93D9018091100190E001968370907016 @@ -40,16 +40,16 @@ :1002700080911001ECE1F1E0E80FF11D9081129600 :100280008C911297892B12968C93809110018F5F1D :10029000FB01808383E090E0F8019183808381E01B -:1002A0001F910F910895089580E091E00C94930BB5 -:1002B00080E091E00E94720BE2EEF0E080818460C9 +:1002A0001F910F910895089580E091E00C94790CCE +:1002B00080E091E00E94580CE2EEF0E080818460E2 :1002C00080832E9A089584B7877F84BF88E10FB614 :1002D000F89480936000109260000FBE80E090E080 :1002E00020E80FB6F89420936100809361000FBE60 -:1002F000F7D637D1F4C08F929F92AF92BF92CF9230 +:1002F000D9D73AD1F4C08F929F92AF92BF92CF924A :10030000DF92EF92FF920F931F93CF93DF9384B10D :10031000806C84B92E982F98D6DF7894B4E68B2E13 -:10032000912CACE9AA2EAFEFBA2EF5E0CF2EA2D2D7 -:100330007B018C0110D1AC01E0921C01C801AA27FD +:10032000912CACE9AA2EAFEFBA2EF5E0CF2E02D376 +:100330007B018C0113D1AC01E0921C01C801AA27FA :10034000BB2780931D01842F8F7080931E01852F02 :100350008F7080931F01BB27A12F902F8F2D6FE0EF :10036000D62ED822812F9927AA27BB27782F7F70D6 @@ -66,7 +66,7 @@ :1004100004C0EC5EFE4F118210822F5F3F4F2430EC :10042000310509F0B1CFE114F1040105110511F412 :10043000452B11F02F9A01C02F98C0E0D0E08C2DF1 -:100440008A95F1F780E091E00E94A30A0E948E0A4B +:100440008A95F1F780E091E00E94890B0E94740B7D :10045000219683E0C83ED80709F469CFF0CFDA01CE :100460009330B1F0943028F4913041F0923079F526 :100470000AC0913211F1923251F524C0ECE5F1E05D @@ -76,343 +76,372 @@ :1004B00012C0E6EAF1E08491F9CFE0E8F1E029E04A :1004C00030E009C0E4E7F0E028EE30E004C0E0E00E :1004D000F0E020E030E0ED93FC93C90108953C9AF0 -:1004E0003D9A3E98469A3F98479A0895449860E00E -:1004F00070E040E050E0E5E345988E2F8A95F1F7F3 -:1005000026B186B1229526952695237030E021707C -:100510003070042E02C0220F331F0A94E2F7881FA6 -:100520008827881F90E0042E02C0880F991F0A9424 -:10053000E2F7982F8827282B392B622B732B459AAB -:100540008E2F8A95F1F74F5F5F4F48305105A1F626 -:10055000449ACB010895CADF9C0120953095C901CA -:100560000895569A5098519852985398549855987F -:10057000589A599A5A9A5B9A5C9A5D9A209821984F -:100580002298239824982598289A299A2A9A2B9A6F -:100590002C9A2D9A08952F923F924F925F926F92CC -:1005A0007F928F929F92AF92BF92CF92DF92EF9203 -:1005B000FF920F931F93DF93CF93CDB7DEB72797AB -:1005C0000FB6F894DEBF0FBECDBF5E9888EC90E00A -:1005D000FC013197F1F7F9B009B149B029B029B15F -:1005E0002F8369B16E8313B1A3B1C3B0A3B083B03D -:1005F00063B05E9A0197F1F789B18D83E9B0E9B1F3 -:10060000EC83F9B1FB8329B12A8369B1698353B1C2 -:1006100083B123B143B163B1E3B1869590E08170BA -:100620009070880F991F2695269530E021703070C4 -:10063000220F331F220F331F822B5170852B4695BB -:100640004695469550E041705070B3E0440F551FF9 -:10065000BA95E1F7842B62956F7070E061707070ED -:10066000F4E0660F771FFA95E1F7862BE295E695A1 -:10067000E770F0E0E170F07075E0EE0FFF1F7A9523 -:10068000E1F78E2B282F30E040E050E0522F442736 -:1006900033272227A695B0E0A170B070AA0FBB1F28 -:1006A000C694C694DD2481E0C822DD24CC0CDD1C78 -:1006B000CC0CDD1CAC291170A12BA694A694A69499 -:1006C000BB24E1E0AE22BB2413E0AA0CBB1C1A95AC -:1006D000E1F7AA298294BFE08B229924F1E08F22CE -:1006E0009924F4E0880C991CFA95E1F7A829629402 -:1006F0006694E7E06E22772461E06622772475E055 -:10070000660C771C7A95E1F7A6298A2F90E0A0E085 -:10071000B0E0DC0199278827282B392B4A2B5B2B4B -:10072000069510E001701070000F111F469446945A -:10073000552481E048225524440C551C440C551C7A -:100740000429E1E0FE220F292694269426943324DE -:10075000F1E02F22332413E0220C331C1A95E1F729 -:1007600002296F8162956F70862F90E08170907082 -:10077000B4E0880F991FBA95E1F7082B8E81829516 -:10078000869587708E8390E081709070A5E0880FC9 -:10079000991FAA95E1F7082B802F90E0A0E0B0E028 -:1007A000282B392B4A2B5B2BE694FF24E1E0EE2229 -:1007B000FF24EE0CFF1CFC81F695F6958F2F90E040 -:1007C00081709070880F991F880F991FE82A6D819A -:1007D0006170E62A8B818695869586958B8390E05D -:1007E0008170907073E0880F991F7A95E1F7E82A7D -:1007F000EA81E295EF708E2F90E08170907064E056 -:10080000880F991F6A95E1F7E82AF981F295F69524 -:10081000F7708F2F90E08170907005E0880F991F1E -:100820000A95E1F7E82A8E2D90E0A0E0B0E0BA2F1B -:10083000A92F982F8827282B392B4A2B5B2BB901FE -:10084000CA0127960FB6F894DEBF0FBECDBFCF9179 -:10085000DF911F910F91FF90EF90DF90CF90BF90AD -:10086000AF909F908F907F906F905F904F903F9050 -:100870002F9008952F923F924F925F926F927F92A6 -:100880008F929F92AF92BF92CF92DF92EF92FF92A0 -:100890000F931F93DF93CF93CDB7DEB7E1970FB6DA -:1008A000F894DEBF0FBECDBFEE24FF24870119866A -:1008B00051E0A52EB12CC12CD12C6DDE3B014C0199 -:1008C00020E030E066E070E0D401C3018F709070EA -:1008D000A070B0700097A105B10509F47FC0285F32 -:1008E0003F4FD601C501022E04C0880F991FAA1FD1 -:1008F000BB1F0A94D2F78EA79FA7A8ABB9AB2F5FF7 -:100900003F4FD601C501022E04C0880F991FAA1FB0 -:10091000BB1F0A94D2F78AA79BA7ACA7BDA72950F3 -:100920003040D601C501022E04C0880F991FAA1FAE -:10093000BB1F0A94D2F78D839E83AF83B887D601FD -:10094000C501062E04C0880F991FAA1FBB1F0A9459 -:10095000D2F789839A83AB83BC83265F3F4FD6014E -:10096000C501022E04C0880F991FAA1FBB1F0A943D -:10097000D2F78E8F9F8FA8A3B9A32F5F3F4FD601C9 -:10098000C501022E04C0880F991FAA1FBB1F0A941D -:10099000D2F78A8F9B8FAC8FBD8F2A503040D60103 -:1009A000C501022E04C0880F991FAA1FBB1F0A94FD -:1009B000D2F78E8B9F8BA88FB98F2F5F3F4F15017A -:1009C0002601022E04C0220C331C441C551C0A9420 -:1009D000D2F722503040E0E0F0E005C09985923037 -:1009E00008F058C07CCFD401C3010E2E04C0B695C8 -:1009F000A795979587950A94D2F781709070892B67 -:100A000009F042C0E53041F1E63038F4E130B1F0B0 -:100A1000E13078F0E430C1F51AC0EB3039F1EC3058 -:100A200018F4EA3089F51DC0EC3029F1ED3061F59C -:100A300027C08EA59FA5A8A9B9A904C08AA59BA572 -:100A4000ACA5BDA5E82AF92A0A2B1B2B1DC08D8158 -:100A50009E81AF81B885F6CF89819A81AB81BC81B7 -:100A6000F1CF8E8D9F8DA8A1B9A1ECCF8A8D9B8DE2 -:100A7000AC8DBD8DE7CF8E899F89A88DB98DE2CFD2 -:100A8000E228F328042915293196EE30F10509F002 -:100A9000AACFA0C0D601C501022E04C0880F991F9D -:100AA000AA1FBB1F0A94D2F78EA39FA3A8A7B9A71A -:100AB000D601C501062E04C0880F991FAA1FBB1FAF -:100AC0000A94D2F78AA39BA3ACA3BDA32B5F3F4F8D -:100AD000D601C501022E04C0880F991FAA1FBB1F93 -:100AE0000A94D2F78A8B9B8BAC8BBD8B2150304004 -:100AF000D601C501022E04C0880F991FAA1FBB1F73 -:100B00000A94D2F78E879F87A88BB98B21503040EB -:100B1000D601C501022E04C0880F991FAA1FBB1F52 -:100B20000A94D2F78A879B87AC87BD872C5F3F4F9B -:100B300015012601022E04C0220C331C441C551C36 -:100B40000A94D2F727503040E4E0F0E0D401C3012A -:100B50000E2E04C0B695A795979587950A94D2F75F -:100B600081709070892B89F5E830E1F0E93028F444 -:100B7000E43051F0E53049F50CC0EA30E9F0EA30F4 -:100B8000B0F0EB3011F51DC08EA19FA1A8A5B9A5AD -:100B900004C08AA19BA1ACA1BDA1E82AF92A0A2B15 -:100BA0001B2B13C08A899B89AC89BD89F6CF8E85A2 -:100BB0009F85A889B989F1CF8A859B85AC85BD853C -:100BC000ECCFE228F328042915293196EC30F10501 -:100BD00009F0BCCF205F3F4F605F7F4F203231056F -:100BE00021F03401882499246FCE99859F5F9987DD -:100BF000943009F062CEB701C801E1960FB6F894BF -:100C0000DEBF0FBECDBFCF91DF911F910F91FF903F -:100C1000EF90DF90CF90BF90AF909F908F907F909C -:100C20006F905F904F903F902F9008959C0140915E -:100C30003301509134014617570718F4F90190E039 -:100C40003DC06115710511F0AB01F8CF8091E8004E -:100C50008E778093E80040E050E0F0CF80912C0147 -:100C6000882309F441C0853009F440C08091E80030 -:100C700083FD3EC08091E80082FD30C08091E80095 -:100C800080FF1CC08091F200282F30E007C08191C6 -:100C90008093F100415050402F5F3F4F4115510567 -:100CA00019F02830310598F390E02830310509F427 -:100CB00091E08091E8008E778093E800411551051E -:100CC00069F6992359F60AC080912C01882361F0B6 -:100CD000853061F08091E80083FD0AC08091E800D2 -:100CE00082FFF2CF80E0089582E0089583E00895C6 -:100CF00081E008959C016115710529F48091E80057 -:100D00008B778093E800F90120C080912C01882323 -:100D100061F1853061F18091E80083FF02C081E0DC -:100D200008958091E80082FFF0CF06C08091F10025 -:100D300081936150704021F08091F2008823B1F7D7 -:100D40008091E8008B778093E80061157105E9F6E2 -:100D500006C080912C01882341F0853041F08091BC -:100D6000E80080FFF6CF80E0089582E0089583E0F8 -:100D700008959C0140913301509134014617570763 -:100D800018F4F90190E03EC06115710511F0AB0156 -:100D9000F8CF8091E8008E778093E80040E050E043 -:100DA000F0CF80912C01882309F442C0853009F4EA -:100DB00041C08091E80083FD3FC08091E80082FD42 -:100DC00031C08091E80080FF1DC08091F200282F83 -:100DD00030E008C084918093F1003196415050403A -:100DE0002F5F3F4F4115510519F02830310590F321 -:100DF00090E02830310509F491E08091E8008E7789 -:100E00008093E8004115510561F6992351F60AC017 -:100E100080912C01882361F0853061F08091E80099 -:100E200083FD0AC08091E80082FFF2CF80E0089540 -:100E300082E0089583E0089581E00895BF92CF9203 -:100E4000DF92EF92FF920F931F93CF93DF93182FB0 -:100E5000092F7B016A01D9D0B82E8823B1F5812FE3 -:100E6000902F9C01E901C114D10439F0F601808171 -:100E70009181E81AF90AC80FD91F00E010E022C0DA -:100E80008091E80085FD16C08091E8008E77809300 -:100E9000E80044D3C114D10449F0F6018081918166 -:100EA000800F911F9183808385E010C0AED088238E -:100EB00049F00CC089918093F1000894E108F10891 -:100EC0000F5F1F4FE114F104D9F68B2DDF91CF9105 -:100ED0001F910F91FF90EF90DF90CF90BF900895FA -:100EE000382F282F2EC0822F8F708093E900231770 -:100EF00021F4762F942F50E006C07091EC00909171 -:100F0000ED005091F00091FF1BC08091EB008E7FAF -:100F10008093EB008091ED008D7F8093ED008091B8 -:100F2000EB0081608093EB007093EC009093ED00F8 -:100F30005093F0008091EE0087FD02C080E008959C -:100F40002F5F253080F23F703093E90081E00895F3 -:100F50000F931F93CF93DF93062FEC0110E02AC06D -:100F60009881992329F16B81E981FA812C81892F5C -:100F70008F70853018F5223010F452E001C056E031 -:100F800040E028E030E003C04F5F220F331F2E17F0 -:100F90003F07D0F36295660F660F607C991F992713 -:100FA000991F692B4295407F452B9ADF882331F0AA -:100FB0001F5F25961017A0F281E001C080E0DF914D -:100FC000CF911F910F91089580912D0188239CF45A -:100FD00004C080912C018823B9F08091E80082FF41 -:100FE000F8CF8091E8008B778093E8000895809196 -:100FF0002C01882349F08091E80080FFF8CF809190 -:10100000E8008E778093E80008954091E4005091C5 -:10101000E50024E68091EC0080FF24C08091E80088 -:1010200080FD1EC080912C01882311F482E0089578 -:10103000853011F483E008958091EB0085FF02C0B4 -:1010400081E008958091E4009091E5008417950770 -:1010500009F3222311F484E008952150AC01DACF82 -:1010600080E008958091E80082FFDCCFF9CF41D085 -:1010700043D08091D8008F778093D8008091D8009A -:1010800080688093D8008091D8008F7D8093D800AD -:1010900084E089BD86E089BD09B400FEFDCF1092D1 -:1010A0002C011092280110922A011092290180E04F -:1010B00060E042E015DF8091E1008E7F8093E100E7 -:1010C0008091E20081608093E2008091E20088607C -:1010D0008093E2008091E0008E7F8093E00008958D -:1010E000E3E6F0E080818E7F808381E080932B01B6 -:1010F000BECF1092E20008951092E10008951F9271 -:101100000F920FB60F9211242F933F934F935F933B -:101110006F937F938F939F93AF93BF93EF93FF93BF -:101120008091E10082FF0AC08091E20082FF06C048 -:101130008091E1008B7F8093E1006DD88091E10088 -:1011400080FF17C08091E20080FF13C08091E20011 -:101150008E7F8093E2008091E20080618093E200C4 -:101160008091D80080628093D80019BC10922C0125 -:1011700050D88091E10084FF2FC08091E20084FF6D -:101180002BC084E089BD86E089BD09B400FEFDCF97 -:101190008091D8008F7D8093D8008091E1008F7E70 -:1011A0008093E1008091E2008F7E8093E200809145 -:1011B000E20081608093E20080912801882311F091 -:1011C00084E007C08091E30087FD02C081E001C098 -:1011D00083E080932C011CD88091E10083FF22C022 -:1011E0008091E20083FF1EC08091E100877F8093A1 -:1011F000E10082E080932C01109228018091E100AF -:101200008E7F8093E1008091E2008E7F8093E200E8 -:101210008091E20080618093E20080E060E042E043 -:101220005FDE7BD1FF91EF91BF91AF919F918F9145 -:101230007F916F915F914F913F912F910F900FBED2 -:101240000F901F9018951F93DF93CF93CDB7DEB704 -:10125000AC970FB6F894DEBF0FBECDBFEDE2F1E064 -:101260008091F100819321E0E533F207C9F71CD8A2 -:101270008091E80083FF39C180912D0130912E01CA -:10128000353009F487C0363040F43130C9F131309F -:1012900070F0333009F029C133C0383009F4F6C09A -:1012A000393009F405C1363009F01FC196C08038C5 -:1012B00021F0823809F019C108C09091290180916C -:1012C0002A01882399F0926011C0809131018F70BA -:1012D0008093E9008091EB0090E025E0969587955A -:1012E0002A95E1F7982F91701092E9008091E8001B -:1012F000877F8093E8009093F1001092F100D1C0B5 -:10130000882319F0823009F0F0C090E08F7190705E -:10131000009721F0029709F0E8C00CC080912F01DE -:10132000813009F0E2C010922A01333069F58093D0 -:101330002A012AC080912F01882331F520913101A3 -:101340002F7009F4D2C02093E9008091EB0080FF58 -:101350001BC0333021F48091EB00806213C0809178 -:10136000EB0080618093EB0081E090E002C0880F89 -:10137000991F2A95E2F78093EA001092EA00809183 -:10138000EB0088608093EB001092E9008091E80008 -:10139000877F8AC0882309F0A8C010912F011F778A -:1013A0008091E3008078812B8093E3008091E800B6 -:1013B000877F8093E80008DE8091E80080FFFCCF03 -:1013C0008091E30080688093E300112311F482E0B0 -:1013D00001C083E080932C0188C08058823008F0DF -:1013E00084C080912F019091300123E08C3D9207C1 -:1013F00009F033C083E08C838AE28B837FB7F89453 -:10140000DE0115966EE040E050E011E2E62FF0E0DC -:1014100010935700849140FF03C082958F706F5FD7 -:101420008F70282F30E08A3018F0C901C79602C0AB -:10143000C901C0968D939D934F5F5F4F4431510515 -:1014400029F77FBF8091E800877F8093E800CE0175 -:1014500003966AE270E0EADB13C060913101AE01ED -:101460004F5F5F4F0E942F02BC01009709F43DC0FF -:101470008091E800877F8093E80089819A8179DCF8 -:101480008091E8008B778093E8002FC0803869F561 -:101490008091E800877F8093E80080912801809305 -:1014A000F1008091E8008E778093E8008DDD1DC00B -:1014B0008823D9F490912F019230B8F48091E800FC -:1014C000877F8093E800909328017EDD809128013A -:1014D000882331F48091E30087FD02C081E001C0E0 -:1014E00084E080932C010E9458018091E80083FFE2 -:1014F0000AC08091E800877F8093E8008091EB002C -:1015000080628093EB00AC960FB6F894DEBF0FBEFE -:10151000CDBFCF91DF911F91089508951F938091C2 -:101520002C01882371F01091E9008091EC00109259 -:10153000E9008091E80083FF01C085DE1F701093F1 -:10154000E9001F9108954F925F926F927F928F9260 -:101550009F92AF92BF92CF92DF92EF92FF920F9342 -:101560001F93DF93CF9300D00F92CDB7DEB77C01EE -:101570006DB67EB680912C01843009F09AC020911E -:10158000E4003091E500F701828593858217930787 -:1015900009F48FC081818F708093E9008091E80009 -:1015A00085FF87C05DB64EB6408550E08DB79EB7CB -:1015B000841B950B0FB6F8949EBF0FBE8DBF0DB761 -:1015C0001EB70F5F1F4F19821B821A82C02E912EE9 -:1015D000C80160E070E050E006D2C701BE016F5F55 -:1015E0007F4F40E098018E010E5F1F4F0E94170150 -:1015F000882EF70184859585892B19F4AA24BB24AC -:101600000BC020E0F70186859785892B09F021E042 -:1016100081E02827A22EBB24F7010681178101153E -:10162000110511F4DD2412C04A815B818C2D992DA6 -:10163000B801C3D1DD24009711F0DD24D394F70164 -:101640004085C8016C2D792D50E0C4D18A819B81E1 -:10165000892B01F1882021F4DD2011F4AB28D1F091 -:10166000F701848595859787868781818F70809320 -:10167000E9008981882311F08093F1006A817B81E0 -:101680008C2D992D40E050E0D9DB8091E8008E77D9 -:101690008093E8008091E4009091E500F701938742 -:1016A0008287252D342DC9010FB6F8949EBF0FBE39 -:1016B0008DBF0FB6F8947EBE0FBE6DBE0F900F901B -:1016C0000F90CF91DF911F910F91FF90EF90DF90DE -:1016D000CF90BF90AF909F908F907F906F905F90D2 -:1016E0004F900895CF93DF93DC010996FC0187E0CA -:1016F000EF0119928A95E9F781E019968C93199771 -:1017000084EF91E01D969C938E931C9783E0149632 -:101710008C931497CD01019661E01ADC811181E070 -:10172000DF91CF9108956F927F928F929F92AF92A7 -:10173000BF92CF92DF92EF92FF920F931F93DF93AE -:10174000CF9300D00F92CDB7DEB76C016DB67EB6E9 -:101750008091E80083FF1AC1F601808190E020911A -:101760003101309132012817390709F00FC18091FA -:101770002E01833009F4B2C0843030F4813071F02E -:10178000823009F003C1E6C08A3009F4CBC08B3047 -:1017900009F4B5C0893009F0F9C05CC080912D0111 -:1017A000813A09F0F3C09DB68EB61B821A828091F1 -:1017B0002F01109130018983F601408550E08DB7EB -:1017C0009EB7841B950B0FB6F8949EBF0FBE8DBFBE -:1017D000EDB6FEB60894E11CF11CBE2CAF2CC7017F -:1017E00060E070E050E0FFD01150C601BE016F5FB5 -:1017F0007F4F412F97018E010E5F1F4F0E941701EF -:10180000F601268137812115310529F04085C9016E -:10181000B70150E0DFD01092E9008091E800877FA7 -:101820008093E8008981882311F08093F1006A8118 -:101830007B818B2D9A2DFAD98091E8008B7780934C -:10184000E800292D382DC9010FB6F8949EBF0FBEB0 -:101850008DBF9CC080912D01813209F097C09DB64B -:101860008EB60091330110913401A0902F01B090F9 -:1018700030018DB79EB7801B910B0FB6F8949EBFB9 -:101880000FBE8DBFEDB6FEB60894E11CF11C809131 -:10189000E800877F8093E800C701B8012BDA8091C8 -:1018A000E8008E778093E80080E090E0AA2011F0B5 -:1018B00081E090E0BA94E80EF91E081B190BC601EE -:1018C0006A2D4B2D97010E945301892D982D9C0163 -:1018D0000FB6F8943EBF0FBE2DBF58C080912D01AA -:1018E000813A09F053C08091E800877F8093E80037 -:1018F0008091E80080FFFCCFF60181853FC0809198 -:101900002D01813209F042C08091E800877F8093E9 -:10191000E8005ADB90E080912F01811191E0F601FF -:10192000918734C080912D01813281F58091E8004A -:10193000877F8093E80048DB80912F0190913001F0 -:10194000807036E0969587953A95E1F7F601958790 -:1019500084871CC080912D01813AC1F48091E800F8 -:10196000877F8093E8008091E80080FFFCCFF6013C -:101970008485958596958795969587958093F100B2 -:101980008091E8008E778093E8001EDB0FB6F89414 -:101990007EBE0FBE6DBE0F900F900F90CF91DF9166 -:1019A0001F910F91FF90EF90DF90CF90BF90AF907D -:1019B0009F908F907F906F900895FB01DC0104C091 -:1019C0008D910190801921F441505040C8F7881B37 -:1019D000990B0895FB01DC0102C001900D9241506A -:1019E0005040D8F70895DC0101C06D93415050403C -:0819F000E0F70895F894FFCF21 -:1019F8000081080000011101030000000000000040 +:1004E0003D9A3E98469A3F98479A0895449885E3E6 +:1004F0008A95F1F760E070E040E050E0E5E3459870 +:100500008E2F8A95F1F726B186B1229526952695EC +:10051000237030E021703070042E02C0220F331F90 +:100520000A94E2F7881F8827881F90E0042E02C0F3 +:10053000880F991F0A94E2F7982F8827282B392BC8 +:10054000622B732B459A8E2F8A95F1F74F5F5F4F81 +:1005500048305105A1F6449ACB010895C7DF9C01AC +:1005600020953095C9010895569A509851985298FF +:10057000539854985598589A599A5A9A5B9A5C9AF3 +:100580005D9A209821982298239824982598289A53 +:10059000299A2A9A2B9A2C9A2D9A08952F923F9253 +:1005A0004F925F926F927F928F929F92AF92BF9283 +:1005B000CF92DF92EF92FF920F931F93DF93CF932F +:1005C000CDB7DEB727970FB6F894DEBF0FBECDBF0D +:1005D0005E9888EC90E0FC013197F1F7F9B009B131 +:1005E00049B029B029B12F8369B16E8313B1A3B18A +:1005F000C3B0A3B083B063B05E9A0197F1F789B13D +:100600008D83E9B0E9B1EC83F9B1FB8329B12A8389 +:1006100069B1698353B183B123B143B163B1E3B12C +:10062000869590E081709070880F991F2695269589 +:1006300030E021703070220F331F220F331F822BC6 +:100640005170852B46954695469550E04170507007 +:10065000B3E0440F551FBA95E1F7842B62956F7094 +:1006600070E061707070F4E0660F771FFA95E1F743 +:10067000862BE295E695E770F0E0E170F07075E0AA +:10068000EE0FFF1F7A95E1F78E2B282F30E040E028 +:1006900050E0522F442733272227A695B0E0A170BF +:1006A000B070AA0FBB1FC694C694DD2481E0C82297 +:1006B000DD24CC0CDD1CCC0CDD1CAC291170A12B75 +:1006C000A694A694A694BB24E1E0AE22BB2413E03A +:1006D000AA0CBB1C1A95E1F7AA298294BFE08B22D1 +:1006E0009924F1E08F229924F4E0880C991CFA9562 +:1006F000E1F7A82962946694E7E06E22772461E02E +:100700006622772475E0660C771C7A95E1F7A629B6 +:100710008A2F90E0A0E0B0E0DC0199278827282B01 +:10072000392B4A2B5B2B069510E001701070000FDF +:10073000111F46944694552481E048225524440CC8 +:10074000551C440C551C0429E1E0FE220F29269477 +:10075000269426943324F1E02F22332413E0220C34 +:10076000331C1A95E1F702296F8162956F70862F0D +:1007700090E081709070B4E0880F991FBA95E1F70E +:10078000082B8E818295869587708E8390E081708C +:100790009070A5E0880F991FAA95E1F7082B802F8C +:1007A00090E0A0E0B0E0282B392B4A2B5B2BE6949D +:1007B000FF24E1E0EE22FF24EE0CFF1CFC81F69505 +:1007C000F6958F2F90E081709070880F991F880F99 +:1007D000991FE82A6D816170E62A8B81869586953E +:1007E00086958B8390E08170907073E0880F991FDD +:1007F0007A95E1F7E82AEA81E295EF708E2F90E092 +:100800008170907064E0880F991F6A95E1F7E82A7B +:10081000F981F295F695F7708F2F90E081709070C6 +:1008200005E0880F991F0A95E1F7E82A8E2D90E0E0 +:10083000A0E0B0E0BA2FA92F982F8827282B392BBA +:100840004A2B5B2BB901CA0127960FB6F894DEBF7D +:100850000FBECDBFCF91DF911F910F91FF90EF9011 +:10086000DF90CF90BF90AF909F908F907F906F90D0 +:100870005F904F903F902F900895882349F45198AE +:10088000529A539A549A599A5A9A5B9A5C9A089532 +:100890002198229A239A249A299A2A9A2B9A2C9A56 +:1008A0000895882319F55A9885E38A95F1F740E071 +:1008B00020E030E055E35B98852F8A95F1F789B108 +:1008C000869590E081709070022E02C0880F991F6B +:1008D0000A94E2F7482B5B9A852F8A95F1F72F5FF0 +:1008E0003F4F2830310539F75A9A22C02A9885E3BC +:1008F0008A95F1F740E020E030E055E32B98852F12 +:100900008A95F1F783B1869590E081709070022E00 +:1009100002C0880F991F0A94E2F7482B2B9A852F63 +:100920008A95F1F72F5F3F4F2830310539F72A9A22 +:10093000842F08952F923F924F925F926F927F92F1 +:100940008F929F92AF92BF92CF92DF92EF92FF92DF +:100950000F931F93DF93CF93CDB7DEB7E7970FB613 +:10096000F894DEBF0FBECDBF19821A82EE24FF2499 +:1009700087011D86CE0101969FAB8EABB1E0AB2EF9 +:10098000B12CC12CD12C0ADE3B014C01DE011196A9 +:10099000BC83AB8320E030E066E070E0D401C301AB +:1009A0008F709070A070B0700097A105B10509F428 +:1009B0007FC0285F3F4FD601C501022E04C0880FBB +:1009C000991FAA1FBB1F0A94D2F78AAB9BABACAB93 +:1009D000BDAB2F5F3F4FD601C501022E04C0880F6B +:1009E000991FAA1FBB1F0A94D2F78EA79FA7A8AB77 +:1009F000B9AB29503040D601C501022E04C0880F82 +:100A0000991FAA1FBB1F0A94D2F789879A87AB87C1 +:100A1000BC87D601C501062E04C0880F991FAA1FE6 +:100A2000BB1F0A94D2F78D839E83AF83B887265F5E +:100A30003F4FD601C501022E04C0880F991FAA1F7F +:100A4000BB1F0A94D2F78AA39BA3ACA3BDA32F5FBD +:100A50003F4FD601C501022E04C0880F991FAA1F5F +:100A6000BB1F0A94D2F78E8F9F8FA8A3B9A32A50D9 +:100A70003040D601C501022E04C0880F991FAA1F5D +:100A8000BB1F0A94D2F78A8F9B8FAC8FBD8F2F5FCD +:100A90003F4F15012601022E04C0220C331C441CBA +:100AA000551C0A94D2F722503040E0E0F0E005C037 +:100AB0009D85923008F05DC07CCFD401C3010E2E1D +:100AC00004C0B695A795979587950A94D2F781703B +:100AD0009070892B09F047C0E43041F1E53028F4EB +:100AE000E130B1F0E230E8F40EC0EB3071F1EC30FF +:100AF00028F4E53001F1EA30B1F522C0EC3051F1D3 +:100B0000ED3089F52CC08AA99BA9ACA9BDA904C068 +:100B10008EA59FA5A8A9B9A9E82AF92A0A2B1B2BFB +:100B200022C081E0AB81BC818C931DC089859A85F0 +:100B3000AB85BC85F1CF8D819E81AF81B885ECCF2F +:100B40008AA19BA1ACA1BDA1E7CF8E8D9F8DA8A14D +:100B5000B9A1E2CF8A8D9B8DAC8DBD8DDDCFE22812 +:100B6000F328042915293196EE30F10509F0A5CFB7 +:100B7000A0C0D601C501022E04C0880F991FAA1F6C +:100B8000BB1F0A94D2F78AA79BA7ACA7BDA7D60123 +:100B9000C501062E04C0880F991FAA1FBB1F0A9407 +:100BA000D2F78EA39FA3A8A7B9A72B5F3F4FD6016B +:100BB000C501022E04C0880F991FAA1FBB1F0A94EB +:100BC000D2F78E8B9F8BA88FB98F21503040D601E2 +:100BD000C501022E04C0880F991FAA1FBB1F0A94CB +:100BE000D2F78A8B9B8BAC8BBD8B21503040D601CA +:100BF000C501022E04C0880F991FAA1FBB1F0A94AB +:100C0000D2F78E879F87A88BB98B2C5F3F4F15013A +:100C10002601022E04C0220C331C441C551C0A94CD +:100C2000D2F727503040E4E0F0E0D401C3010E2EAB +:100C300004C0B695A795979587950A94D2F78170C9 +:100C40009070892B89F5E830E1F0E93028F4E43040 +:100C500051F0E53049F50CC0EA30E9F0EA30B0F087 +:100C6000EB3011F51DC08AA59BA5ACA5BDA504C0A0 +:100C70008EA19FA1A8A5B9A5E82AF92A0A2B1B2BAA +:100C800013C08E899F89A88DB98DF6CF8A899B89DB +:100C9000AC89BD89F1CF8E859F85A889B989ECCFB4 +:100CA000E228F328042915293196EC30F10509F0E2 +:100CB000BCCF205F3F4F605F7F4FAB81BC811196FF +:100CC000BC83AB832032310521F034018824992480 +:100CD00065CEBD85BF5FBD87B43009F054CE898134 +:100CE000882321F08A81882309F067C06E01089467 +:100CF000C11CD11CAA24BB24FFEF4F2EFFEF5F2E97 +:100D0000612C712CE3E02E2E312C2C0E3D1E9C2CE0 +:100D1000EEA99E1AD6018C91882309F042C0892D34 +:100D2000ACDD88EC90E00197F1F7892DBADD90E019 +:100D300080959095AA2797FDA095BA2FA3019201BF +:100D40000A2C04C0220F331F441F551F0A94D2F7E8 +:100D50002095309540955095E222F32204231523E7 +:100D60009C01AD01207F30704070507074E0220F04 +:100D7000331F441F551F7A95D1F78F709070A07064 +:100D8000B070282B392B4A2B5B2B0A2C04C0220F66 +:100D9000331F441F551F0A94D2F7E22AF32A042B6B +:100DA000152B0894C11CD11CE0E1F0E0AE0EBF1E73 +:100DB000C214D30409F0ABCFD7DBB701C801E79663 +:100DC0000FB6F894DEBF0FBECDBFCF91DF911F915C +:100DD0000F91FF90EF90DF90CF90BF90AF909F90DA +:100DE0008F907F906F905F904F903F902F900895DD +:100DF0009C0140913301509134014617570718F474 +:100E0000F90190E03DC06115710511F0AB01F8CF1B +:100E10008091E8008E778093E80040E050E0F0CFCA +:100E200080912C01882309F441C0853009F440C029 +:100E30008091E80083FD3EC08091E80082FD30C0D3 +:100E40008091E80080FF1CC08091F200282F30E0E4 +:100E500007C081918093F100415050402F5F3F4F78 +:100E60004115510519F02830310598F390E02830EC +:100E7000310509F491E08091E8008E778093E800D5 +:100E80004115510569F6992359F60AC080912C0144 +:100E9000882361F0853061F08091E80083FD0AC00D +:100EA0008091E80082FFF2CF80E0089582E008950B +:100EB00083E0089581E008959C016115710529F48E +:100EC0008091E8008B778093E800F90120C0809141 +:100ED0002C01882361F1853061F18091E80083FF66 +:100EE00002C081E008958091E80082FFF0CF06C043 +:100EF0008091F10081936150704021F08091F20067 +:100F00008823B1F78091E8008B778093E800611522 +:100F10007105E9F606C080912C01882341F08530E7 +:100F200041F08091E80080FFF6CF80E0089582E0F4 +:100F3000089583E008959C0140913301509134015C +:100F40004617570718F4F90190E03EC06115710586 +:100F500011F0AB01F8CF8091E8008E778093E80024 +:100F600040E050E0F0CF80912C01882309F442C08A +:100F7000853009F441C08091E80083FD3FC0809135 +:100F8000E80082FD31C08091E80080FF1DC08091A3 +:100F9000F200282F30E008C084918093F100319650 +:100FA000415050402F5F3F4F4115510519F02830F7 +:100FB000310590F390E02830310509F491E08091FB +:100FC000E8008E778093E8004115510561F699237A +:100FD00051F60AC080912C01882361F0853061F0C0 +:100FE0008091E80083FD0AC08091E80082FFF2CF83 +:100FF00080E0089582E0089583E0089581E00895F7 +:10100000BF92CF92DF92EF92FF920F931F93CF93F5 +:10101000DF93182F092F7B016A01D9D0B82E8823BE +:10102000B1F5812F902F9C01E901C114D10439F051 +:10103000F60180819181E81AF90AC80FD91F00E0F2 +:1010400010E022C08091E80085FD16C08091E80084 +:101050008E778093E80048D3C114D10449F0F6019B +:1010600080819181800F911F9183808385E010C0E2 +:10107000AED0882349F00CC089918093F100089488 +:10108000E108F1080F5F1F4FE114F104D9F68B2D31 +:10109000DF91CF911F910F91FF90EF90DF90CF9054 +:1010A000BF900895382F282F2EC0822F8F708093E5 +:1010B000E900231721F4762F942F50E006C0709199 +:1010C000EC009091ED005091F00091FF1BC08091D9 +:1010D000EB008E7F8093EB008091ED008D7F8093FD +:1010E000ED008091EB0081608093EB007093EC0049 +:1010F0009093ED005093F0008091EE0087FD02C0C8 +:1011000080E008952F5F253080F23F703093E90032 +:1011100081E008950F931F93CF93DF93062FEC0187 +:1011200010E02AC09881992329F16B81E981FA8125 +:101130002C81892F8F70853018F5223010F452E001 +:1011400001C056E040E028E030E003C04F5F220FCE +:10115000331F2E173F07D0F36295660F660F607C32 +:10116000991F9927991F692B4295407F452B9ADF3C +:10117000882331F01F5F25961017A0F281E001C08F +:1011800080E0DF91CF911F910F91089580912D0103 +:1011900088239CF404C080912C018823B9F08091AD +:1011A000E80082FFF8CF8091E8008B778093E80019 +:1011B000089580912C01882349F08091E80080FFF8 +:1011C000F8CF8091E8008E778093E80008954091F1 +:1011D000E4005091E50024E68091EC0080FF24C0FB +:1011E0008091E80080FD1EC080912C01882311F4BD +:1011F00082E00895853011F483E008958091EB003A +:1012000085FF02C081E008958091E4009091E5009F +:101210008417950709F3222311F484E008952150DF +:10122000AC01DACF80E008958091E80082FFDCCF46 +:10123000F9CF41D043D08091D8008F778093D800E8 +:101240008091D80080688093D8008091D8008F7DED +:101250008093D80084E089BD86E089BD09B400FE92 +:10126000FDCF10922C011092280110922A011092A9 +:10127000290180E060E042E015DF8091E1008E7F8F +:101280008093E1008091E20081608093E200809190 +:10129000E20088608093E2008091E0008E7F80937E +:1012A000E0000895E3E6F0E080818E7F808381E0B6 +:1012B00080932B01BECF1092E20008951092E100BE +:1012C00008951F920F920FB60F9211242F933F9300 +:1012D0004F935F936F937F938F939F93AF93BF933E +:1012E000EF93FF938091E10082FF0BC08091E200B9 +:1012F00082FF07C08091E1008B7F8093E1000E9414 +:101300000B018091E10080FF18C08091E20080FF16 +:1013100014C08091E2008E7F8093E2008091E20011 +:1013200080618093E2008091D80080628093D80031 +:1013300019BC10922C010E9409018091E10084FFE8 +:1013400030C08091E20084FF2CC084E089BD86E03B +:1013500089BD09B400FEFDCF8091D8008F7D8093B8 +:10136000D8008091E1008F7E8093E1008091E200BF +:101370008F7E8093E2008091E20081608093E200A2 +:1013800080912801882311F084E007C08091E30058 +:1013900087FD02C081E001C083E080932C010E94A0 +:1013A00008018091E10083FF22C08091E20083FF69 +:1013B0001EC08091E100877F8093E10082E08093EE +:1013C0002C01109228018091E1008E7F8093E10032 +:1013D0008091E2008E7F8093E2008091E200806144 +:1013E0008093E20080E060E042E05CDE7CD1FF912F +:1013F000EF91BF91AF919F918F917F916F915F918D +:101400004F913F912F910F900FBE0F901F90189505 +:101410001F93DF93CF93CDB7DEB7AC970FB6F89499 +:10142000DEBF0FBECDBFEDE2F1E08091F100819310 +:1014300021E0E533F207C9F70E9454018091E800EA +:1014400083FF39C180912D0130912E01353009F48F +:1014500087C0363040F43130C9F1313070F033306C +:1014600009F029C133C0383009F4F6C0393009F425 +:1014700005C1363009F01FC196C0803821F082388E +:1014800009F019C108C09091290180912A0188238F +:1014900099F0926011C0809131018F708093E900C2 +:1014A0008091EB0090E025E0969587952A95E1F7ED +:1014B000982F91701092E9008091E800877F8093C7 +:1014C000E8009093F1001092F100D1C0882319F048 +:1014D000823009F0F0C090E08F719070009721F099 +:1014E000029709F0E8C00CC080912F01813009F00B +:1014F000E2C010922A01333069F580932A012AC094 +:1015000080912F01882331F5209131012F7009F44A +:10151000D2C02093E9008091EB0080FF1BC03330E4 +:1015200021F48091EB00806213C08091EB00806118 +:101530008093EB0081E090E002C0880F991F2A950C +:10154000E2F78093EA001092EA008091EB00886055 +:101550008093EB001092E9008091E800877F8AC0B9 +:10156000882309F0A8C010912F011F778091E30014 +:101570008078812B8093E3008091E800877F8093BF +:10158000E80004DE8091E80080FFFCCF8091E3005A +:1015900080688093E300112311F482E001C083E0AE +:1015A00080932C0188C08058823008F084C08091DC +:1015B0002F019091300123E08C3D920709F033C058 +:1015C00083E08C838AE28B837FB7F894DE011596E3 +:1015D0006EE040E050E011E2E62FF0E0109357009B +:1015E000849140FF03C082958F706F5F8F70282FAA +:1015F00030E08A3018F0C901C79602C0C901C09610 +:101600008D939D934F5F5F4F4431510529F77FBF05 +:101610008091E800877F8093E800CE0103966AE21C +:1016200070E0E6DB13C060913101AE014F5F5F4FA8 +:101630000E942F02BC01009709F43DC08091E80090 +:10164000877F8093E80089819A8175DC8091E8002A +:101650008B778093E8002FC0803869F58091E8008F +:10166000877F8093E800809128018093F10080912A +:10167000E8008E778093E80089DD1DC08823D9F4C7 +:1016800090912F019230B8F48091E800877F809389 +:10169000E800909328017ADD80912801882331F4B5 +:1016A0008091E30087FD02C081E001C084E0809367 +:1016B0002C010E9458018091E80083FF0AC08091AC +:1016C000E800877F8093E8008091EB008062809340 +:1016D000EB00AC960FB6F894DEBF0FBECDBFCF9136 +:1016E000DF911F91089508951F9380912C01882305 +:1016F00071F01091E9008091EC001092E900809166 +:10170000E80083FF01C084DE1F701093E9001F9181 +:1017100008954F925F926F927F928F929F92AF92B5 +:10172000BF92CF92DF92EF92FF920F931F93DF93BE +:10173000CF9300D00F92CDB7DEB77C016DB67EB6E9 +:1017400080912C01843009F09AC02091E4003091FE +:10175000E500F701828593858217930709F48FC00E +:1017600081818F708093E9008091E80085FF87C0B8 +:101770005DB64EB6408550E08DB79EB7841B950B85 +:101780000FB6F8949EBF0FBE8DBF0DB71EB70F5F8B +:101790001F4F19821B821A82C02E912EC80160E051 +:1017A00070E050E006D2C701BE016F5F7F4F40E09E +:1017B00098018E010E5F1F4F0E941701882EF701BE +:1017C00084859585892B19F4AA24BB240BC020E0BD +:1017D000F70186859785892B09F021E081E028278C +:1017E000A22EBB24F701068117810115110511F402 +:1017F000DD2412C04A815B818C2D992DB801C3D1A3 +:10180000DD24009711F0DD24D394F7014085C80151 +:101810006C2D792D50E0C4D18A819B81892B01F1F7 +:10182000882021F4DD2011F4AB28D1F0F701848564 +:1018300095859787868781818F708093E90089815C +:10184000882311F08093F1006A817B818C2D992D82 +:1018500040E050E0D5DB8091E8008E778093E8008F +:101860008091E4009091E500F70193878287252D10 +:10187000342DC9010FB6F8949EBF0FBE8DBF0FB6B1 +:10188000F8947EBE0FBE6DBE0F900F900F90CF915B +:10189000DF911F910F91FF90EF90DF90CF90BF905D +:1018A000AF909F908F907F906F905F904F90089532 +:1018B000CF93DF93DC010996FC0187E0EF011992D9 +:1018C0008A95E9F781E019968C93199784EF91E056 +:1018D0001D969C938E931C9783E014968C9314977B +:1018E000CD01019661E016DC811181E0DF91CF919D +:1018F00008956F927F928F929F92AF92BF92CF92F4 +:10190000DF92EF92FF920F931F93DF93CF9300D05C +:101910000F92CDB7DEB76C016DB67EB68091E80050 +:1019200083FF1AC1F601808190E02091310130914E +:1019300032012817390709F00FC180912E01833039 +:1019400009F4B2C0843030F4813071F0823009F093 +:1019500003C1E6C08A3009F4CBC08B3009F4B5C0AE +:10196000893009F0F9C05CC080912D01813A09F0FD +:10197000F3C09DB68EB61B821A8280912F01109102 +:1019800030018983F601408550E08DB79EB7841BF6 +:10199000950B0FB6F8949EBF0FBE8DBFEDB6FEB689 +:1019A0000894E11CF11CBE2CAF2CC70160E070E074 +:1019B00050E0FFD01150C601BE016F5F7F4F412F35 +:1019C00097018E010E5F1F4F0E941701F6012681BD +:1019D00037812115310529F04085C901B70150E053 +:1019E000DFD01092E9008091E800877F8093E800C3 +:1019F0008981882311F08093F1006A817B818B2D8E +:101A00009A2DF6D98091E8008B778093E800292DF4 +:101A1000382DC9010FB6F8949EBF0FBE8DBF9CC074 +:101A200080912D01813209F097C09DB68EB600914C +:101A3000330110913401A0902F01B09030018DB787 +:101A40009EB7801B910B0FB6F8949EBF0FBE8DBF43 +:101A5000EDB6FEB60894E11CF11C8091E800877F8A +:101A60008093E800C701B80127DA8091E8008E77FB +:101A70008093E80080E090E0AA2011F081E090E0FF +:101A8000BA94E80EF91E081B190BC6016A2D4B2DDE +:101A900097010E945301892D982D9C010FB6F8944F +:101AA0003EBF0FBE2DBF58C080912D01813A09F075 +:101AB00053C08091E800877F8093E8008091E80020 +:101AC00080FFFCCFF60181853FC080912D018132DE +:101AD00009F042C08091E800877F8093E80056DBE0 +:101AE00090E080912F01811191E0F601918734C03F +:101AF00080912D01813281F58091E800877F80936C +:101B0000E80044DB80912F0190913001807036E035 +:101B1000969587953A95E1F7F601958784871CC0DD +:101B200080912D01813AC1F48091E800877F8093F4 +:101B3000E8008091E80080FFFCCFF6018485958560 +:101B400096958795969587958093F1008091E8000A +:101B50008E778093E8001ADB0FB6F8947EBE0FBE36 +:101B60006DBE0F900F900F90CF91DF911F910F914D +:101B7000FF90EF90DF90CF90BF90AF909F908F90AD +:101B80007F906F900895FB01DC0104C08D9101905E +:101B9000801921F441505040C8F7881B990B0895D3 +:101BA000FB01DC0102C001900D9241505040D8F77A +:101BB0000895DC0101C06D9341505040E0F7089555 +:041BC000F894FFCFC7 +:101BC4000081080000011101030000000000000072 :00000001FF |