In der Regel enthalten die einzelnen frames Checksummen oder CRC-Werte. Einige Radiosonden senden frames mit Codewoertern, die eine Fehlerkorrektur ermoeglichen. Graw ==== Hammingcode (N, N-R) = (2^m - 1, N-m), d.h. R=mt mit t=1, korrigiert t=1 Fehler pro Codewort der Laenge N, die Codewoerter haben den (min.) Abstand d=3 (bei 2 Fehlern wird zum Nachbarcodewort falsch dekodiert). Fuer die Sonden DFM-06/09 ist m=3, d.h. Hamming(7,4), jedoch mit einem Paritaetsbit zu (8,4) erweitert. Der erweiterte Hammingcode (8,4) kann zudem 2 Fehler als nicht-korrigierbar erkennen (wird nicht falsch decodiert). Zu einem Wort mit 2 Fehlern gibt es 4 Codewoerter mit Abstand 2. Von diesen kann das Codewort, das am besten passt, ausgewaehlt werden (soft decision). Allerdings steigt die Wahrscheinlichkeit, dass neben 2 Fehlern auch Woerter mit 3 Fehlern vorkommen, wobei diese dann falsch decodiert werden. Meisei ====== BCH(63,51)-Code (m=6, t=2) mit Generatorpolynom (x^6+x+1)(x^6+x^4+x^2+x+1)=x^12+x^10+x^8+x^5+x^4+x^3+1. gekuerzt auf (46,34), die letzten 12 bit sind die BCH-Kontrollbits. Das Generatorpolynom kann man finden, wenn man geeignete Codewoerter addiert (linearer Code), um das kleinste Codewort ungleich 0 zu finden, z.B.: 0000000000000000 1 0000000000000000 1 000010111011 + 0000000000000000 1 0000000000000010 0 010001011111 = 0000000000000000 0 0000000000000010 1 010011100100 -> 101010011100100 = (x^12+x^10+x^8+x^5+x^4+x^3+1)x^2 Die 34 Nachrichtenbit sind aufgeteilt in 16+1+16+1, d.h. nach einem 16 bit Block kommt ein Paritaetsbit, dass 1 ist, wenn die Anzahl 1en in den 16 bit davor gerade ist und sonst 0. Pro Codewort koennen t=2 Fehler korrigiert werden. Ist die Anzahl Fehler #E groesser t, dann ist fuer t < #E <= 2t die Wahrscheinlichkeit, dass Fehler falsch erkannt/decodiert werden, etwa 1/t!, somit fuer t=2 garnicht gering. Da hier gekuerzte Codewoerter und 2 zusaetzliche Paritaetsbits verwendet werden, sollte man bei decodierten Codewoertern pruefen, ob die Paritaetsbits stimmen und ob bei der Decodierung Werte im Null-padding veraendert wurden. Um nur die BCH-Codewoerter zu pruefen, kann man Polynomdivision durchfuehren (CRC): 1) 0000000000000000 1 0000000000000000 1 000010111011 : 0000 0000 0BB -> 0000000000000000100000000000000001000010111011 ./crc_polymod --bch 0000000000000000100000000000000001000010111011 100000000000000001000010111011 1010100111001 1010011100100001000010111011 1010100111001 111011101001000010111011 1010100111001 10001110101100010111011 1010100111001 100111011110010111011 1010100111001 1101000010110111011 1010100111001 111100101111111011 1010100111001 10110110011011011 1010100111001 11111101001011 1010100111001 1010100111001 1010100111001 0 2) 0000000000000000 1 1010111100100010 1 000110000001 : 0000 AF22 181 -> 0000000000000000110101111001000101000110000001 ./crc_polymod --bch 0000000000000000110101111001000101000110000001 110101111001000101000110000001 1010100111001 11111100101100101000110000001 1010100111001 1010101011110101000110000001 1010100111001 1100111101000110000001 1010100111001 110011010001110000001 1010100111001 11001001101010000001 1010100111001 1100000011000000001 1010100111001 110100100001000001 1010100111001 11110111101100001 1010100111001 1011110011110001 1010100111001 1010100111001 1010100111001 0 Decoder: bch_ecc.c Vaisala ======= http://www.vaisala.com/Vaisala%20Documents/Vaisala%20News%20Articles/VN164/VN164_State-of-the-Art_Radiosonde_Telemetry.pdf CRC16: (poly=0x(1)1021, init=0xFFFF) Reed-Solomon: RS(255,231) GF(2^8)=GF(2)[x]/(f): f=x^8+x^4+x^3+x^2+1 = 0x11D Generator von GF(2^8)*: alpha=0x02 (primitive Einheitswurzel) Generatorpolynom fuer RS-Code: (X-alpha^0)...(X-alpha^23) = X^24 + 0x7A X^23 + 0x76 X^22 + 0xA9 X^21 + 0x46 X^20 + 0xB2 X^19 + 0xED X^18 + 0xD8 X^17 + 0x66 X^16 + 0x73 X^15 + 0x96 X^14 + 0xe5 X^13 + 0x49 X^12 + 0x82 X^11 + 0x48 X^10 + 0x3D X^9 + 0x2B X^8 + 0xCE X^7 + 0x01 X^6 + 0xED X^5 + 0xF7 X^4 + 0x7F X^3 + 0xD9 X^2 + 0x90 X + 0x75 Es koennen t=12 Fehler pro Codewort korrigiert werden. Fehler der Anzahl t < #E <= 2t werden zuverlaessig erkannt. Decoder: bch_ecc.c http://www.ka9q.net/code/fec/ https://en.wikiversity.org/wiki/Reed%E2%80%93Solomon_codes_for_coders RS92 ---- HEADER 6 DATA 210 RS-PARITY 24 2a2a2a2a2a10 (header) 6510 (L=2*0x10=32) e81820204b34393533393334006100083d3d07b342bb3e9809d3bc3f754c963b ebfb 690c (L=2*0x0c=24) ca2b0fd9670f00670f8c0f11a458111e8810da410d30430d dc84 673d (L=2*0x3d=122) b01c852167ab07298b3cb05a536e0fffcf4faf7f4f3fff8fcfffffffff7fe5918aef20e8110175879900d0e0e900061f8c048aa393009edea1fe2557dc0019549f04b5160d00ae998b00e12a4200370b8608cacc1900b3e08905bd60040126da9303e1d4b4006d04a00573469700d6a98b00699f120195828f04 6ed7 6805 (L=2*0x05=10) 03030000000000000000 b27d ff02 (L=2*0x02=4) 02000200 f0be2a40a7cd69b9ed0668ec12182e8560ea6dd0733612a1 (Reed-Solomon parity) ecc-rs_vaisala.c: 1) ./ecc-rs_vaisala 2a2a2a2a2a106510e81820204b34393533393334006100083d3d07b342bb3e9809d3bc3f754c963bebfb690cca2b0fd9670f00670f8c0f11a458111e8810da410d30430ddc84673db01c852167ab07298b3cb05a536e0fffcf4faf7f4f3fff8fcfffffffff7fe5918aef20e8110175879900d0e0e900061f8c048aa393009edea1fe2557dc0019549f04b5160d00ae998b00e12a4200370b8608cacc1900b3e08905bd60040126da9303e1d4b4006d04a00573469700d6a98b00699f120195828f046ed7680503030000000000000000b27dff0202000200f0be2a40a7cd69b9ed0668ec12182e8560ea6dd0733612a1 RS92 codeword errors: 0 0000000000000000000000000000000000000000000002000202FF7DB2000000000000000003030568D76E048F829501129F69008BA9D60097467305A0046D00B4D4E10393DA26010460BD0589E0B30019CCCA08860B3700422AE1008B99AE000D16B5049F541900DC5725FEA1DE9E0093A38A048C1F0600E9E0D0009987750111E820EF8A91E57FFFFFFFFFCF8FFF3F4F7FAF4FCFFF0F6E535AB03C8B2907AB6721851CB03D6784DC0D43300D41DA10881E1158A4110F8C0F67000F67D90F2BCA0C69FBEB3B964C753FBCD309983EBB42B3073D3D08006100343339333539344B202018E81065A1123673D06DEA60852E1812EC6806EDB969CDA7402ABEF0 frame: 2a2a2a2a2a106510e81820204b34393533393334006100083d3d07b342bb3e9809d3bc3f754c963bebfb690cca2b0fd9670f00670f8c0f11a458111e8810da410d30430ddc84673db01c852167ab07298b3cb05a536e0fffcf4faf7f4f3fff8fcfffffffff7fe5918aef20e8110175879900d0e0e900061f8c048aa393009edea1fe2557dc0019549f04b5160d00ae998b00e12a4200370b8608cacc1900b3e08905bd60040126da9303e1d4b4006d04a00573469700d6a98b00699f120195828f046ed7680503030000000000000000b27dff0202000200f0be2a40a7cd69b9ed0668ec12182e8560ea6dd0733612a1 2a) ./rs92gps -r rs92.wav > rs92raw.txt cat rs92raw.txt | ./ecc-rs_vaisala > rs92raw_ecc.txt ./rs92gps --rawin1 -a almanac.txt rs92raw_ecc.txt 2b) cat rs92raw.txt | ./ecc-rs_vaisala | ./rs92gps --rawin1 -a almanac.txt 2c) ./rs92gps -r rs92.wav | ./ecc-rs_vaisala | ./rs92gps --rawin1 -a almanac.txt 3) ./rs92ecc -b --ecc -e rinex.txt rs92.wav ./rs92ecc -b --ecc --crc -e rinex.txt rs92.wav ./rs92ecc -b --ecc -r rs92.wav RS41 ---- HEADER 8 RS-PARITY 48 = 2*24 DATA 264-462 (max 2*231=462) "interleaved" Die 2 Codewoerter setzen sich zusammen aus den DATA-Bytes an den geraden bzw. ungeraden Positionen und ersten bzw. zweiten RS-PARITY-Teil. RS(255,231) RS(255,231) L=40 CRC L=42 CRC L=30 CRC L=89 CRC L=21 CRC L=17 CRC 8635f44093df1a60 2c87e0fa0521e8943d9cef4c7a67393f6d39fb546461f2111b6447ab79a746c80350cda5344157f8c0c12234f4690222 0f 7928 16174b313933303239331a00000300000a00002f0007322ce53e31991abf12dada3eb68468c16755 d51c 7a2a 15310216060245f302000d08a31607821e08bb210219060243f302000000000000000000000000000000 220d 7c1e 0807d03cdc071fd81ddb19d70a8d0eb602b60cb518d40692ff00ff00ff00 1c27 7d59 b8d83301ff0f881f0f38f4fe18b283038735ff000000003eb8ff4947201e6e3aff55415f13fc6e005440440cf100009e9f7406f85800832b631719d70010bebc172a8b00000000000000000000000000000000000000000000 a48b 7b15 366181193ef05d07e1245b1be0f721f801f6080410 7b0b 7611 0000000000000000000000000000000000 ecc7 1) 8635f44093df1a60 (HDR) 2c87e0fa0521e8943d9cef4c7a67393f6d39fb546461f2111b6447ab79a746c80350cda5344157f8c0c12234f4690222 (2xRS) 0f 7928 (L=0x28=40) 16174b313933303239331a00000300000a00002f0007322ce53e31991abf12dada3eb68468c16755 d51c (CRC-OK) 7a2a (L=0x2a=42) 15310216060245f302000d08a31607821e08bb210219060243f302000000000000000000000000000000 220d (CRC-OK) 7c1e (L=0x1e=30) 0807d03cdc071fd81ddb19d70a8d0eb602b60cb518d40692ff00ff00ff00 1c27 (CRC-OK) 7d59 (L=0x59=89) b8d83301ff0f881f0f38f4fe18b283038735ff000000003eb8ff4947201e6e3aff55415f13fc6e005440440cf100009e9f7406f85800832b631719d70010bebc172a8b00000000000000000000000000000000000000000000 a48b (CRC-OK) 7b15 (L=0x15=21) 366181193ef05d07e1245b1be0f721f801f6080410 7b0b (CRC-OK) 7611 (L=0x11=17) 0000000000000000000000000000000000 ecc7 (CRC-OK) ./ecc-rs_vaisala 8635f44093df1a602c87e0fa0521e8943d9cef4c7a67393f6d39fb546461f2111b6447ab79a746c80350cda5344157f8c0c12234f46902220f792816174b313933303239331a00000300000a00002f0007322ce53e31991abf12dada3eb68468c16755d51c7a2a15310216060245f302000d08a31607821e08bb210219060243f302000000000000000000000000000000220d7c1e0807d03cdc071fd81ddb19d70a8d0eb602b60cb518d40692ff00ff00ff001c277d59b8d83301ff0f881f0f38f4fe18b283038735ff000000003eb8ff4947201e6e3aff55415f13fc6e005440440cf100009e9f7406f85800832b631719d70010bebc172a8b00000000000000000000000000000000000000000000a48b7b15366181193ef05d07e1245b1be0f721f801f60804107b0b76110000000000000000000000000000000000ecc7 RS41 codeword1 errors: 0 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EC0000000000000000110B10080121E05BE15D3E81367BA400000000000000000000002ABC10D7172B00F8749E000C4000FC5F553A1E47FF3E00003503B2FE381F0F01D8592700000092D4B5B6B68DD7DBD8073C071E0D0000000000000000F30219210882160800F30216312A1C55C1843EDABF993E2C072F000003003332333117280F11F2616454FB396D3F39677A4CEF9C3D94E82105FAE0872C codeword2 errors: 0 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C7000000000000000000767B04F6F8F71B2407F01961158B00000000000000000000008B17BE0019638358069F00F144546E1341FF6E2049B80000FF878318F40F88FF33B87D1CFFFFFF06180C020E0A191D1FDCD0087C220000000000000002430602BB1E07A30D02450602157AD56768B6DA121A31E53200000A00001A3930394B1679220269F43422C1C0F8574134A5CD5003C846A779AB47641B frame: 8635f44093df1a602c87e0fa0521e8943d9cef4c7a67393f6d39fb546461f2111b6447ab79a746c80350cda5344157f8c0c12234f46902220f792816174b313933303239331a00000300000a00002f0007322ce53e31991abf12dada3eb68468c16755d51c7a2a15310216060245f302000d08a31607821e08bb210219060243f302000000000000000000000000000000220d7c1e0807d03cdc071fd81ddb19d70a8d0eb602b60cb518d40692ff00ff00ff001c277d59b8d83301ff0f881f0f38f4fe18b283038735ff000000003eb8ff4947201e6e3aff55415f13fc6e005440440cf100009e9f7406f85800832b631719d70010bebc172a8b00000000000000000000000000000000000000000000a48b7b15366181193ef05d07e1245b1be0f721f801f60804107b0b76110000000000000000000000000000000000ecc7 2) ./ecc-rs_vaisala 8635f44093df1a60421080e56396389c102cf6db9276308a11f9f8792cb620beae0662688bba0eb2c0bdfa3bd10f0368c07ad0ac33c77046f0792888134b343032303234341c00000100000d00007a000732013230323434254e00002c011205b43ca475537a2a95050229fd015be502d931084d2a075b3308ed060228fd015de50200000000000000000000000000000061d67c1e4d07a0ba92170e9003fa01f813b40c921ed811fa0bf504d20af920fa17f765137d59950b3501ffc43086200a1101420000000521008f527605b1b600faa7e10e3b1301acce8e1c78c5ff0de3c41479b6ff48781a09dcfdffa2f1c30d51190151e0e4113d1701e27da60504a4ffdb2511085bd1003f05bd0c8346ffda787b156d2f421735a22f00f88b0b1ea7fe220b23030902112a417ea5d0343030333030303120313036313320202033312e362030363733203033353220303730302031323235312033383030203133343036203535333920313430353820353239332037383030203830323120373334203931392039353533383738203937323839373820343238383338353332362032393032313631203539313039203335303539203637303020333738352034363838203636393920363839392038303030c8e4762e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bf08 RS41 codeword1 errors: 1 pos: 136 BF000000000000000000000000000000000000000000000076C830383938203936383620383330372035352030392036323920323533383438393239383835393939343731302030373332203534203335363431303820353220303032332037303631202031302030303034A54111092322A70BF82F35426D7BDA460C05005B11DBA4057D013DE450190DF1FFDC1A48B614E3FF788EAC130EA700B1768F210000010A86C4010B5913F7FAF9D2F5FAD892B4F8FA9017BA071ED60000000000000000E5012806085B2A08D9E50129052A53A4B4122C0025343001077A00000100343232341328F0BE20B62C79F8F9118A307692DBF62C109C389663E5801042 codeword2 errors: 2 pos: 106 176 0800000000000000000000000000000000000000000000002EE43030203936393620383435372030363930333931353131303236333838322037383720373335203120332032383038203935383031393520303320303331323130372035303336202E332033363131303130D07E2A02030BFE1E8B00A2172F1578FF83BD3FD10825FF04A6E21711E00151C3A2FD0978FF79C40DC51CCE013BE1FAB6055200050042112030FF35957D6517200A040B111F0C1301030E92A04D7C6100000000000000025DFD02ED33074D31025BFD02957A753C0501004E3432323200000D00001C3430304B88794670C733ACD07AC068030FD13BFABDC0B20EBA8B686206AE frame: 8635f44093df1a60421080e56396389c102cf6db9276308a11f9f8792cb620beae0662688bba0eb2c0bdfa3bd10f0368c07ad0ac33c77046f0792888134b343032303234341c00000100000d00007a000732013230323434254e00002c011205b43ca475537a2a95050229fd015be502d931084d2a075b3308ed060228fd015de50200000000000000000000000000000061d67c1e4d07a0ba92170e9003fa01f813b40c921fd811fa0bf504d20af920fa17f765137d59950b3501ffc43086200a1101420000000521008f527605b1b600faa7e10e3b1301acce8e1c78c5ff0de3c41479b6ff48781a09dcfdffa2f1c30d51190150e0e4113d1701e27da60504a4ffdb2511085bd1003f05bd0c8346ffda787b156d2f421735a22f00f88b0b1ea7fe220b23030902112a417ea5d0343030313030303120313036313320202033312e362030363733203033353220303730302031323235312033383030203133343036203535333920313430353820353239332037383030203830323120373334203931392039353533383738203937323839373820343238383338353332362032393032313631203539313039203335303539203637303020333738352034363838203636393920363839392038303030c8e4762e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bf08 3) ./rs41ecc -b --ecc rs41.wav ./rs41ecc -b --ecc --crc rs41.wav ./rs41ecc -b --ecc -r rs41.wav CRC16 ----- ./crc_polymod --crc 0000000000000000000000000000000000 ecc7 C7EC 11111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 1110111111011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 110011111001111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 10001111000111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 111000011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 11010011110000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 1011011110100011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 11111110110011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 1110110110111101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 110010110101101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 10000110100101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 1110100001111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 110000001101000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 10010001100000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 11001100100111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 1000100100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 100001001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 11001101000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 1000101000110001000000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 1000100001100000000000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 1110000100000000000000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 110100100010000100000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 10110100011000110000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 111100011100111000000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 11110011101111010000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 1111011101011011000000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 111111101001011100000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 11101101000011110000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 1100101000111111000000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 100001000101111100000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 11000100111110000000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 1001100111010001000000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 1000111000001100000000000000000000000000000000000000000000000000001100011111101100 10001000000100001 11000011100100000000000000000000000000000000000000000000000001100011111101100 10001000000100001 1001011100000001000000000000000000000000000000000000000000001100011111101100 10001000000100001 1111100010001100000000000000000000000000000000000000000001100011111101100 10001000000100001 111000010011100100000000000000000000000000000000000000001100011111101100 10001000000100001 11010010010100110000000000000000000000000000000000000001100011111101100 10001000000100001 1011010010000111000000000000000000000000000000000000001100011111101100 10001000000100001 11110010010111100000000000000000000000000000000000001100011111101100 10001000000100001 1111010010011101000000000000000000000000000000000001100011111101100 10001000000100001 111110010001101100000000000000000000000000000000001100011111101100 10001000000100001 11100010000101110000000000000000000000000000000001100011111101100 10001000000100001 1101010000001111000000000000000000000000000000001100011111101100 10001000000100001 101110000011111100000000000000000000000000000001100011111101100 10001000000100001 1100000010111110000000000000000000000000000001100011111101100 10001000000100001 100100010101110100000000000000000000000000001100011111101100 10001000000100001 110010100110110000000000000000000000000001100011111101100 10001000000100001 10000100111110010000000000000000000000001100011111101100 10001000000100001 1100111010011000000000000000000000001100011111101100 10001000000100001 100011010001000100000000000000000001100011111101100 10001000000100001 1010000000110000000000000000001100011111101100 10001000000100001 10100000100000100000000000001100011111101100 10001000000100001 101000100100101000000000001100011111101100 10001000000100001 1010100101101010000000001100011111101100 10001000000100001 10000101111010100000001100011111101100 10001000000100001 1101111110101000001100011111101100 10001000000100001 101011110111000101100011111101100 10001000000100001 1001110110000111100011111101100 10001000000100001 1010110010111000011111101100 10001000000100001 10010010101000111111101100 10001000000100001 11010101100110111101100 10001000000100001 1011101100010110101100 10001000000100001 11001100000110001100 10001000000100001 1000100000010000100 10001000000100001 0 ./crc_polymod --crc 0000000000000000000000000000000000 C7EC 11111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 1110111111011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 110011111001111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 10001111000111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 111000011111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 11010011110000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 1011011110100011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 11111110110011100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 1110110110111101000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 110010110101101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 10000110100101110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 1110100001111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 110000001101000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 10010001100000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 11001100100111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 1000100100011001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 100001001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 11001101000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 1000101000110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 1000100001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 1110000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 110100100010000100000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 10110100011000110000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 111100011100111000000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 11110011101111010000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 1111011101011011000000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 111111101001011100000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 11101101000011110000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 1100101000111111000000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 100001000101111100000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 11000100111110000000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 1001100111010001000000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 1000111000001100000000000000000000000000000000000000000000000000000000000000000000 10001000000100001 11000011100100000000000000000000000000000000000000000000000000000000000000000 10001000000100001 1001011100000001000000000000000000000000000000000000000000000000000000000000 10001000000100001 1111100010001100000000000000000000000000000000000000000000000000000000000 10001000000100001 111000010011100100000000000000000000000000000000000000000000000000000000 10001000000100001 11010010010100110000000000000000000000000000000000000000000000000000000 10001000000100001 1011010010000111000000000000000000000000000000000000000000000000000000 10001000000100001 11110010010111100000000000000000000000000000000000000000000000000000 10001000000100001 1111010010011101000000000000000000000000000000000000000000000000000 10001000000100001 111110010001101100000000000000000000000000000000000000000000000000 10001000000100001 11100010000101110000000000000000000000000000000000000000000000000 10001000000100001 1101010000001111000000000000000000000000000000000000000000000000 10001000000100001 101110000011111100000000000000000000000000000000000000000000000 10001000000100001 1100000010111110000000000000000000000000000000000000000000000 10001000000100001 100100010101110100000000000000000000000000000000000000000000 10001000000100001 110010100110110000000000000000000000000000000000000000000 10001000000100001 10000100111110010000000000000000000000000000000000000000 10001000000100001 1100111010011000000000000000000000000000000000000000 10001000000100001 100011010001000100000000000000000000000000000000000 10001000000100001 1010000000110000000000000000000000000000000000 10001000000100001 10100000100000100000000000000000000000000000 10001000000100001 101000100100101000000000000000000000000000 10001000000100001 1010100101101010000000000000000000000000 10001000000100001 10000101111010100000000000000000000000 10001000000100001 1101111110101000000000000000000000 10001000000100001 101011110111000100000000000000000 10001000000100001 1001110110000110000000000000000 10001000000100001 1010110010110100000000000000 10001000000100001 10010010100100100000000000 10001000000100001 11010100000101000000000 10001000000100001 1011100000001001000000 10001000000100001 11000000011001100000 10001000000100001 1001000011101101000 10001000000100001 1100011111101100 10001000000100001 1100011111101100 Rest: 1100011111101100 = 0xC7EC