Adding 009a blobs. Thanks @mjenny !

This commit is contained in:
Viktor Dragomiretskyy 2020-06-22 20:53:18 +12:00
parent 63936a0207
commit 2eb301576f
2 changed files with 850 additions and 0 deletions

View file

@ -18,6 +18,9 @@ def __load_blob(blob):
from . import blobs_90 as blobs
elif usb.usb_dev().idProduct == 0x0097:
from . import blobs_97 as blobs
elif usb.usb_dev().idVendor == 0x06cb:
if usb.usb_dev().idProduct == 0x009a:
from . import blobs_9a as blobs
globals()[blob] = getattr(blobs, blob)
return globals()[blob]

847
proto9x/blobs_9a.py Normal file
View file

@ -0,0 +1,847 @@
from .util import unhex
init_hardcoded=unhex('''
06020000014a231406e5542fc6dc3b1aedebe68f55596ad3ca13f6e019994c6f71672fff756fbde0511d09d45978b12ba415b3694a0e763
48c8cfe9dbb9abf86813fc0c67c1005519a6f87360c2fb3e12bd0a9e012b06d9f5c9b44ccc6645b0fbd47afe45c8c874fcb88fbfd18fb7a
9b3241351f256acce689f9586a52b01f8fdcb66cdf3b340b1f9f386d58ca24fdfcdfbcebefb5f3a3c2a08357721040235a20ce1ee2f4f78
56e0d9c27b92cd9b975c86f2c8cab1179868f795da674004b93c15e6ac8aa825a1907f2003cb9e6df096423167b2cabae98c0cd3fd200d1
1c7e0ee1ba5a725f7f2022886f3caa5f68b688ba61bc5cb0190db569efa0a57aa9d76ecdc7440c8920ea02768734221260d083bebb39c17
6d129c01d1a0f1388497171402ba041afd925d71e76ce4905e44fa5fd528759a2c9f12895864b5aa394dc71a4a17161dd82197a10742fa5
f3135c5e78820e36653fa3db535f57c71897242939d7da50f81070ce9ab81c61af6ac29a6c6c4a5df73ffd08542fb540e417939ed117298
051d27736c2faf1c5577a2133b6f60ea7484c692faae2a49c51c8e6f69af77774bad51a9adeea3109d3611d6a437cdc0c356e46a8f9a6d3
054c5519c17c986e54f61f8329006ce184c275984799dbdf5512188fa8ff10aa2ddc25eb697ebdcb156509309ade5d7909a734bf35ec69e
062cb941c2ea4af0958110da93bd2b5f17fc9b1ebdbd8020a3c36f22a68f707226cec716126d6a830219521669bd59fa0e4bd35db6ef0aa
2999d1c0e7acf67e598696cd58cc4bdb1b7c037ee9a085f784c4
''')
init_hardcoded_clean_slate=unhex('''
06020000012c40c9d271378bc0912ef5dced69bd81b7fc16972c7b46e621af54a00e2cc6baca6eb83ea30222dfc6c925262006ae93412ea
cf482f2034ee7b13297474b7e1e91f279cac2ccb7195443e4dd3328cfd292ade073fcc2eaa8f07b77231130ba997f921b9be7b4fb6cc691
0d2976b3e050913b27dbe73afd6e964260b9435ebab5117e71f7cb68464d4b6f8afc7e1a421f671f5854a1d0c8ab93ed3b88b2bc1a42875
e40b15f0e78496ac40e4a4a7fd39a97534ce1866479e0384f0789bbfc2fea0ce982bf7a9df97d60b237edbe1b26c9791043a96b81e435d6
de5971c758d374905df95b0cddabfbf531749ba191f07a6f5e2722852f137a53513a9ec6ab30c3f09aa6ce21b391e55cf81dcda6422011b
f163317a9a4382546141d45f2274bd660103bd3af705f3ed12e493bc4f834d5d7f162e2c3405cf857b00129789a3353bf7fab7796e267e3
062d55660dbbb857911ac8e871c460dd31c56a86a5631475f0f2ee5e9ce2af0faec0931a640ba2394025f29ffeca3a7e99c15a78ce1f1f7
808cedd7601b9b6382d72ca873257d4f6af70e29e22afea15e36e0282b8f0bfc68ffa3417d212b8bbe11bb73b363a19872e6e947d45de30
fbc493ca083a0a4650615d8628606362081ca6df5d67527971d1776ad76a7a28c932f0317b59cb4a82a14b2bcb7b01fb662be1496d24d91
9140ec80068b21a818daa2fb8e05f63edbd4bd5797c74a28b3e7cf81c9045248584977711341fca3f08ba91ff853b62dc24ce4bba4ed57f
47bd458545d805b6bb14fe0cde01440b60bf7be937f6444a8e2a10ed8fa9ddb8604bb95fe411b97112e78dbf5a4a0f004669c93765a9f38
665cb55f5658895c1c06a7aedf694bfb3afa9b8b1dea5ab85c821ac20b0663b95023642fda36ad78e3e00140b966f404f7e55f0b416ea43
b4c74c39900830abc6906a1004bef1b5b7dbbbeb5ec1b22604ac86429b9f56511b746a7124c449b8c9498f49144abc2d64f6a114f1d7f91
aa41249faeef4d838e280cb5d6fc19cfe86c75f
''')
reset_blob=unhex('''
06020000018772bd56dd58d64023e1745f7c253a49b32dd6a02bc32347195b6763bfcc23c9e0beb0c5809e06a5628629f28c4048530a5cd
df6f48391ea0c2cb5a7ffe93ef04c8b4dad584117e65aac085c25062a0f12a8ee432c7ecbb6613c28b743e4a75e382afc6b8037e342d466
7b66a73691edc6b25698c15e78d9d67f7cc56274e99e6b7bb5fba32dd42d74dfa672f414c4a29302b30a202d00a2571d2a884169e82106c
3dce195eb81b62aa7d29481d5d4d5318d8dd2901594752092cdbcd3b5f9f73eac99efb57012305e8aa06e0fced2b0a92150b261c3cb86b4
32db0b6aa7ee398c2cb094de1393e063094dae769acb692cda9c6a6393db82db00b6d8b5b58787529a8e1667e1641498f63621b81f583a7
614edbb40cf5f2ecd2514799dc6a267109a1773dfaf6e75ddeccd6dcc600b9b8697683ab391a5ae00f498b2742cc124d56dd06fab1d3609
3733730e57436a742ab022bc1079cd5a182c665ce7fb84bd33531ff22387da107af7cb0a8eae6340b5b0a9902aa4bb5c67af09d45cf79bf
9fd210be476b3540c8c98de9e9c9c0aa57bf3286806e7cfeef2d2768a60ce06abe57105f054814af2c58d707216cb0a3d57265833103a0c
5476fbfac1e6232854049353f6212a2dd4a86a5afb4d9cceb4d497cc1e1a60b7a29114cd3173d0e53ddb7ff75d6307f3472d0979f275704
43114624902608334c95711d1b98f9f9e1f5100e9633c7edb1821930455c8af061e826d218320bd2fad3452e1fc99d04fbcb4ef0af13cd9
31f507db95608979d44345b34e5d18d1306e6eb4a8e5a6e1d8f5b729ee01ed9fb7b9f8a13fee9098c2302807c7069f7dab0607ad34e7df8
f329dff61d6b0b6579c05d8306b604e1a99d1d4cdb2acc39d46960fdee90a47e77b01f057d60979aac5d5497785acfce5a3f1e6a96f06ad
099f57a729a7e2e7820f657a823f1b7688bb104f9b5297a543ee2d326a13bc8243df4ffeee7156005d648b189169875b8e4197eef5fd832
a20755a03c12a936565896f457dc4a1c90e333e383b233d9a8f8cf0f70c12d779a6095ea92fc6ba9040a6a68edfe9aaa76436a5a3c55bab
afa391934fc4847b0ba17b94dac8f8bcf0587e1a74dd654a78f60fcd5bfc151ca10fdbfc1c7ca26c954380a9406fbd3aececb69b6ed5905
aba3436bd331da878aef62963fe9d3fa481f79719886b201581ebf2cb05742779f18f6375401fd9a24d018f5f7692e78c9066ff26a9dec1
395ae3f7b4359eccf34ff3d91ad7014560e40365815e4846599ea50d15bf3fde561907f1dfc58505f1eafbb86d6a1f1eb354b3857c50ab1
8dcacffea97e5421a5504c05a48dbbe5933aefdf525529bb0a74677778cc6c9eabe0847daa1151902280a6d0ebf266ffcf24294c03f72af
4409541f6ab76f59e9083b3c87064c0ee59279542bc04b210c3d7f484b8fe32403c8bcb7306777d1a79461068d96662d76babe39bc1059c
ae30152d8c65765b96dac42006b0443722b700009941942738e1092559400b9aad99dabb58dde270e7117bc0962fe0c4bdc4948dc2c54cc
e4d0160332120e7edc5f03862aa271bb249200a38ff5afd4cc10e146e8127eea60a21dec67276c29eb51b20ac316378c2d8318cc118d5f2
7853292c65ee1f344447e327651b336a434a62eea2c69929ec0b78411cc1a26934128875155cfd8478ef11fcc987d6323a5574905f14452
107c2ade173c166e981de0aa3f7ed0ce55fdf0bcafa48381b216244225b4f45200cd107e923545cbff5a608bc78f77c9cb56af94ea69294
40237583d5567c3ea45cf788d248c64726db1b0e6278c4aac4d5b4972196b149379834b4fb7d5635b93102ed8bf7a1715c8a5fb1b9b1e06
128c9224157cb99ee1caa6183dc85e4eb12df7a021db9b47607e3bdccdc04c7276fee38c90569d2e429ee3434e950dba0f95c48131eaddb
b578659fdff548c5e87a63cbc1bd7d3804f6ec9d23eea0c4bd6339c7d8e02f87a4cd0666ddeb45735d28c196b056eb43e6a21b4caede9e6
bd05ef701d843a1302ef666b6051f7c995cb145f93a98a14af719ca9c2a47ad0ad04bad312b7fa09fccfaec2806f0be71783cf2f2c8a609
daa40a00a03b8c826d178631084df666f599080e401461676003e9ccbdfcc461074bb7f18c2638715641606bb670d99a95862522317b4e7
bc29dae5af1686fb927a02589bd7376f6c03bbc5d865eaf7bf2eeb89cdd91e3f36ebd4200ead2f2676dcf13917fc6b0b4b7716efcb8936c
a66fc1e971316f20f8dff4f9de2fd5f0e582049e20db3eb041aac0278a5a2d011a7626079338aa2c29ba36cbe75c663c805407e80c334b1
c13ff0a23287738974a9ebe2ae57d3279009bd562949e8975bd24c441839758a18b57c8d3cad25d7d97445ee3d5353717a881e095565a85
a4c54bd38db42403602377b64ad1383fdc55b5782142b79eefde654a7d1a265a046a6eccdd423305cd8b9b31dcac2286228f5df16193317
6af14836938ce0f060b2d994c40ac956f4cb69f0e0f2b30b92bc4ec1e57361b07179561cbdc9d6170d08efc70acd36330d2df87a6c4f85e
2157fd0d9a5fa7b075d13833784d02089abae613ae301b9881dd32ee7fb55477591fa05b1abcae5bc12c445ea1b4bac596d28234879c13f
9dde60b3e6e07abc117dc517b1ef1bf89b33d2d37d37e0381f47f7062ef3d64ef1e0c24ba931f0d00059a144e09e90b15ea6dc90eaf63fe
d5881afcfc950c18ee33d55d863b56b1ac015a81372183e63e797a27c0c3368034120834987391db4706cf3df4b4294ccadb8f89beef332
a0a5c69887a141e0e84f286e96a942e0a97e3c99fa869879af94cc0efe1daceeecd3ef68a32c648f5605b0edb68c4ad926e556ef0620b09
6d0871214eabac748e1496f63c55c565ff5892b83211ec21f03062613760768f15d4f1b18cf871f7bfff34be4c037c055fd2b4cb1eebbf6
2bba0c3cc2756edbb705e809f1ec3376a69e92b87402029c146ca0728b0e9e964b7557831210d1a0eb7ac238ea5e450753b347b8eac961c
ffd7f53a37d1bf2787750a8dd744cd33e66116f5c3ab5ad715306d7fbbc967463a4c85092fe07460c26b434112f3535064d7406ebdbba49
19149eec2eb6628c59c1432b325b79cd8c8b227bdd1a9d364b6e2195a772d0231efd85029a893278a8ee140706e03508fe60ac2b84935c7
753a72dcfb19968c8a597e086f43666945132e0128ff50ecd80e17528975a3b5cd3f401d14645a3b96cf78266d77e686a78578eed858d5e
a71e0db79978815804065ab1b02afd025ff0a0050618b79952be1f72bd404ab46be600f5da3a9e7f21e8960b833686762913979c26c3ddb
47e5aa32a182681b94612f03dc5842937cc2c417d5b9a5d663255fac6e5a8fc4a7daeaf65f8f5a2cb58b8b72df04772add3ece18d65f193
baf8e7d63cf938df5b7bbff273c5fb77bea7a09bc93f908bf774b15ec6647089821a05e4b0784fef1c07fd8eafbc10467298521b7429e14
aefa16fb6cf9385d63d919da2cb4fbe91c369f1e64eeb64857e0412354c8bb62de804d842fa0264c2dee3dda5d6ee26742ea0a7cda41b55
ae19c95d633259fd3e758c7c8a45c370852d7cb8d0513abe1a1887e9dde40562817f46f55186bad6664679c71bf09ad55295dbe2fd72d0e
2f4f48f719077ac06f52ac37765e63ece56a298116c4dbb315dcc04dfdb0e92f183bea0ecc7256818d8cf4939e6bd64816d8062404825cc
0df90210f00f2a8fc19e9ef9f032eb20df619c6c8363d803869bd747b4ff41361392bed560e32872851b7df36cd4cb2658bfa1883947f83
6d347333f5b77b394b1290b13b76cea0cc337f9d5ab21ec91eeac1dea65216b90442bf88158ab40c8b488c5e8342fce21489ef36c5b3928
30f95b8fe6fb0ee3a095abfe8f31a159b0ab8c3b48cc163c996dd75002b3b742289e28afb0854212bd84dc5509a40a2766c10027192f6db
7053b2f460b609b857db7710e3457906496203e53c4bc3b39407e39bfe06015d6d460873a2f1e05c46d2f673086edf2e7b4f5c4982334e0
eae3eaf78f80d5967a5266a7c5d2ebb9c04baffd56ef426f7bd4dc91b6f1e1c273e00f2d261e86ca919ca1f48b86a7a84e9612096a2457a
6ab1206245729e76676d99d7facd57b9277dcd4b70f0e6826dcbb8747b63f5d5c04158433a70a441875328719123e27da511521056fd7a8
90a9947f177bb13edce7ed55376f2bf13fa8cf09b27a43ccbe071dcc97c385db7e44a4b15de14ca0012e6c3a8e41306a4b6fb58adec7089
9cc19138d7fdcf8db684459f6f5a24f7415872da5b8f01c80a75a8b1708ccafc2efc224250b462647849caae820c37ef69fadb4134c002a
a9365a4df9bab1ee34b2fae1ef4fa6ed1562ec0a7784cfbc3ff129c7ab02fd316f2268a5caac67ed371aa2d9f8f63185e87f9db5ee427b5
6078b27eed7a36f48351729f7008a13f29e9ebf5bcaf815563ce76add94a547d96e638621afc743465b49c0091750b2e518ca398b77bc6b
b44d6d0b95019fef04fb2b0c61f9b85a353a15e54452d9307513e40cad6d22295a32dac6a44fd3e5149fc791c50a6403aa5d7f649ae8577
057cef9eed7cd2889cbcfca443c740575bfe39ad245e61214c67dbf6f3af05ef65aba392955f613702d6eacd7421797a5f87af8812b55bd
7305ff01075ac14d9ffc9ceafd445a875685642470113307c93446dbfee27db08dcc7f822d32bdbe46949eba44b900ac6b72f7dc961d2af
fca0c6b73bdc099183a7124652227fa06629f35dda82f6e6c248f554c3abb4822f5c55c9aa492c527de24783e26a14416b4120dd27aface
9cb3c516a1fc2c0c48006c789129e6459e276a7f54df3a4812b788b275e541d946f48ccf04ae7190b0f10bc403ae6a3c58b1ec4da885d5a
4e6af7df1d0020814bd095b499bf34acae57a2882bc1ea932730d93c82545e0708ec67e46544034171420ebdd36c44db41b96dcfe5f13e2
52fdb347b6c1257c7af8b2416ba25ab09bfe6f606a1cb4e8a7c5179e9b11c10595e16e378bfaa8647cb29c76d9947c4f38db6f8d28d5e98
189219724430256233350cf66972f4ee96b79f9e76f7f892f552e87a747f8df4bbbfd76498e23dba7ac2bd122130d9fb0642327c0feed93
b3dad9f9f6c6175ab6bfd80936906c061899b8e7f6cdcfec0d6f6ad5d8e9dc0c325b471d5714bbb21600f38642076aeac17ff86e29349ff
7e653ee4abf8a2b314d7799ae6f7773f6e0566c7f9f600f9ac173641862c16815e8175c4f46182706b4a72ee3f68fba749f4ba84397dcfc
36221e6cf77e5e381897b2a5723d10d603d24bcc734ba7725d4425bd09066a7e18e41e53375abd8e0f6fa5335ffeb93cf805c1cda2daa9b
e119f64800f310ad1f2bebe1f6e5e3730417fb3804218a4535b7add147a3deded57036251b2b03d83c297fb0c3341d48e512616c61b5bd3
a63faa55a624acec36ef1e377bef570663e69b7d908df6450a1506e8033d9d8033fca549213c2935acacffdbf16af79a829d5d0b28ef473
96515eb7b0fcf574e63d89c021f24040713f78a38b38b4e8f3491b517a6fa0a4068c185dbbe7d1e9c52c0e8f0bb7ecbc912ea3cebcdb080
02460c402fcfcb4ccb0ed77f7ccbac010467b885f04a0e9646388b9b8a0961416b096af9644edb9aa120dad144cec504c139d6063e0ab40
95c3008a3d46bc4a89bed935920e6091380d1e24821629534d46a3a834481107d6565729531955dd13cb299a7f83d43cb79340a772a7428
09abe7b2ee4ded9ed9c6c316932f0c7af782416f6ff5034d52cb9d5b9e30ac80cf88ea4b2edbfbea4d717594633acefa19be4fd84ae9c64
1c0c404458144b88b76c2480bcd47da397a7acd60121ea30793f56a2dde1b76b50fb3b2bd7cd917b41fcdf75a3886c5c5f1f9fc5abb51a6
dfa95091b4c8b30a0e7a09e5f6f64330b3e2cac2e5cdfd89376a1e46c2dc6a14ff726f76d610a8c42b714ab1ee7e5323b0632f4389e3ddb
1ea48a203aff0aee98388c7313fdd84ec448d1480ef9538fbcdbf407ae7bbc4078ba490015bd804f8feef8e417be8d61e239a79f237a448
a2bb70c1e70e8682c9d031cea28d16b12a190a88624148a9356ac5f5b85db0c709606eb5e65e334f5c320a667bc2fc5b134096ca1a74c71
e5ecb1b3a94238d7fa4154af8f467f91c5fa79c97944c85b6cd5956e0f346d08d443cbc4497290c40275a4a90707615e75ae90fad773d6e
5a6b1fd2827614155a8538871936647a5ddddaec8c720f27d7355128ef46d2712f019af6e19b4859441bc8b11a729559b9a13afebd93435
777d18fb01fd98923d4e433c0966e13c72c90a0becf585b6a1ac00f6b8984baf86cf3395425d3c3dd302067945789160d94009e5e9a1367
b75e9cd719d3bfa0474f1179e0ca6f4b5df714520bc4528fab43aaca37862e83bcca4a91ce51958e6b75edb3221a879f382c06ac195e694
c867c2b91c6b680598ce9d284522dab5e24d530859993230aba0c7f7509f6bb5ba8033d04bb808cbdae641a974d6d6e4756ce822b8115a7
c0cbbd394412a143c4886237ebba6399d5445954d99c27f3b956b31b0e5da3366cefeed07200287e083feb46980868b93c951e182378c66
0987bb3fc4857dcbaf20129ad7cb50459647464af9403bda41033a0fffc48240542d966897231c2483247c928644ccc7f5b3b83f5812b90
9a61d07abbef1cfcafde5e778cceb5181b65a94d4e8a47a2e7f64002c02edbeb6b9b2c2c764121b755d5b28a33a465fbf99339632ef29b5
124147d9577d354b468926174edfabbc9ae2c994582f63ea179ca92ec49a88a02678846ee1e929993fe24c2c182dd8478726b9a0333074f
5f969cc0786f9d08658cdd1c86c165c4caa7d71abc35a7518d022a06a8593fc70728ad3ce86b3791c7b6f708ef67801f65acbdcddfe4097
c3bc556ac769eba132ed39b7ff1d1b8973dba0aa07d38d613eea23583251d8dd643040d1e23e85d80a7881777229a8b667c9b885ccb36b2
107e1bea2527852a5c6c8e9b0ec08e6418e204b135ee499430030d7dc292416e8a4db0051ffd4abc2afb3407da84853cd3b6c03e9e6e8fe
cafc8b6cf086852ac0325cd30bbcc0a1e6ed76ba11678ecfead8b328e8e7a4b6ab11ea9849c4a797c1505e0d6927f0d490e2a6f23ad8ca7
c39bc70c47bd69520fbc0f4cafe6ce2841ff145ca372582b3d4b5b65022d268b50b22331acc749322b6d95a341d0de2a19d45029114ed82
999d71db0af22730ef4088b3ee49105a72d826276fabcf54a6f22c2e2f8d7e64a1a6f472eb00926503b456f20e503904cb17bfb2a5333eb
b94068dcc9a43717ae994d19c9159a3c913565d0570ce6a4f06aba86cd7a73658da93ba16181a4c3723bd9f013e7f87b7b939ab144a7832
91669b2264b5cdfe9aa350f37539f63a43a88620c40d6855c6868c5574072d99f05bdcdb77c5ec08894da6fd2d97ebecebaaacd67ecd426
c262320ae2d6ab5bfe16f419fcd9fc4cace7cf2d6d929eacf96532b47cdc9c033085d820f051fe4bda9617afd2f7de60c6ead253815d50e
e3d990f84676ed77e35e1afeebd575bb265c4425bae8338b5d8b487a546e2931706f17872a452d41bbe27488cc8cc9bbf0ec9b925398128
732f1e0ebd23478990bdb318a4aa4cfcb48e2bc8b80ea9d1f2e66b50beb048b4df661e75348d348229798426b2ab9a74e5e748e1e6b1e15
ce3d9a94cb9672e00b3221d2009a096b4aef8e665b239486a5e6129a679b274ffc15de7def66417265356c69e258874698356c7f623a8cd
c3fb390b75cd06dcaf085198020d7c1fb10be60fadb58268a6be902069dea0a0508434f5b6a8b4ea39dabb51957095af0e12e9a354d4448
c1000408f74ec7fd2e62cb00e2f5869ddc5cc9bc8a7ab717eb28ea1784692fede6ca9387497632c27bea3317623d17447d8632503014460
4754e471643d39c649a33933286d970efdc4fab1706498e675ac2e9d8656fed087151d9b9169bc1a90b7c95d7c736dd6f497ed15bacbfe0
9ea3680060a9ce4c6ddf834c9dab4896c371624390b8d7f08be51052eecb66dc1dab15fc6755f6e05d3ffef0d5adb01679cd7d9b0e22b1a
af62191ac6e569520325f8dbef37739ebc8150e5246ad7e38774731ce1f0f2e64c00b7a2b7a331a4576e364f6db0596bc1b31e6c4a061c4
8e85f18b00e256cbbe136637eaf5d56b523212875cb3d74f74ea54a213a5e10098a1973adbdd34d66003b31d685d0d0218e648ae33b8c76
c8ee454adc9d9589d4ef6ebe551fc3fb266225d9ca33dd11fabc977a43f0f9900f5ba841fcd4370f64f11ef5c42c041c9a4cd7d6153172b
3b9b3939057d115a577bb686278df0f5dc95df07aafd7da89789606534df4a7a37271b901309ee5e4fe79d2f87627fc73ce9e1965a13d27
579e8c6bd91f7e8019cfcbe40a2e7797453734442010a9afbaef3a3545641b6fba07385faf45b84402d166f7dd36f2be06473ff2eaeb873
c4e96ca9dec80ef2398970c643ab70d1f4e89db432128bce7547ea3b3a6c4d26c2e11e460c1d44880f799630e3b9db9e7ffae65deec50c2
8f7e2d9d8b2b810e3c4d8673c4f21db9af66cd69833b697e907b6c885ee9bace76ffb265694f3ff011ee3b8f60e19727e33ff30177367df
880c6ae2b5c35d4fc60eaa93864e2003c018cfbda08189e42f7831774c00a192abeb81fe921d66be0ac3db3814fb44770d6b10e475758b7
730a50c8f1b34b359c3828e0ac4adc39d6a2a21912b3e96f0e43e16bae7cd553d8a2ffc95e9421aeb75a274250b5856304179dda05de11e
9825e1bc54942b312269a7f944e3384bbc09657241c0c785358c145b5da2c249c9f51fa5e7f0eeb148bd567ad514675b64f73199627af2f
1bf7ecf45129987442b71f818ea760530553102dafede00f4b5218c83b7d4ac0f535b98bd76b084f271aefd510f093bc5b1fa49dab3b747
3d2d1aaa5a87dc1de18b9f04f8efc8e825b02e0b02870b5e957889e91f65d8d17a40c85ed30f4e256b248cda865b687d3886a5ac7f3c7f4
05bad5366a6f7ae635614df3cb20d1941574aa7033a8313cdaa4029112d670e71377092e70acc38e368f1616596c0220ca96c402f0b0c0d
ccd5b01dbe26e9ea41aad811b0d28e3aa02b45d72e7fa43e690708ba9503a1af4e1b6bf29951571f384f922737d7b9dadcd3da40550ac5c
ad2424da37382b7cef2529dde9340ae9fa26d5c9ed2c4c43c0f44d20b481f40515a9f8afacb83041528564a105024b49708ed701f23c900
8e444362bd2707f16c60096ab912a440658446b19f391a1a700bc1d2fa04716ab2db2e80e9cd41b604cd686f56ddb820236cfc08db0755b
4f123693bf0912d0bd79c399b2d303d75ab5de2d776ab363442554658ff105245dfae18677379f28d6053aa166f3785a47f386299f57ff9
4017e5136d6fd711ff5db82d20def1835798b1a533a43c21451e15ce063b0baeb29e2e7279d818ff6e8c339cd7daa24537b5aba6b764c4a
0dc826681d370cba556b9c0436d5bd8f4d5815cb4c29ac91391e1c35dc138445eb75072704ccc0bd5653dd4f02077e7f8743385d8f3cb68
989813943946c1a8d3745931473edb9bf06c45985de74fc33120d7eb641b6ad7171e4e92a66f996a52eff9cf7a76ef7f799cc30123372d4
3dbf46fdd64b3f69e402a210e4be1369f5fcccf8a207e50a47713995864d47a710d050d3bd664c2a8966ebe311eb604727f79380127d883
69ef5610867f586f5061f481f3743d6a2c9cad173ad8c1013fc136f24b36604df60aa264d7bebe5c798c1c1628f597fa2c9dcb6b37d816e
c3f543aa910ffcf20460f927ede990e0964f9d81bb13ca8bc4bc092aa24bb0458a34dcdacb625fbf4d03ecea9fac1e3f61be208d540726b
1794ab2e689fe99530e18e61359d87e1ef25534585088b5b05d7d6a776c2b3d1a5853e22c8c118489a72dbea10f24b7cc70ee7476f80aec
62f2760b99c9d83186cd863007c0b4c52a93dea6aaf76bfea9f8994890dd1e45b26bc3826fd069d2747f7adbfdb7b666cd940c917c8e52a
bd5a793e625ad28340323fa8ab8a7437797e947a77d7dcf5ee5a7cfb939de9b3b867ebd162ba16aa2dabba95ae7ee4c2f9570e558fd7796
297ccff9896145fba3fc83e68b75fa56dcc5d793e1e3400487fba3617a591bce456e11b9e9435a2c321ff93ebbf889eccc02a415f78335e
462a4e91b7d8a2319a0e3dc3fa2e513ef7694844bb26bf576db382d98109fcc233a806aa080fc660f90523c3924b6cd5a35133d3925aaa0
97fd2c06a5cb1a3309e81bae2dd52cb14d6a2d14af77cceeba07cc31a839b0c5d821f8ed1fb8cb3b308b86cffc72632d126c66ba473831a
2cbc6cfca70c111e3f4651a74eb9902e153de26a3aa426963ab630e47350f1c307a56da061ffec19e2b77a4b4338b11d9d6381c69c70682
091bf075897d812ad71e30f1b6512ff48113ab54be22e3466c68740df7c6cfdd1b2115d416d55a379d9b665086203e84701fcb428ce41b9
5b15caa4ff3d847c0ac4ee2f279bf7182d4943eb19e9d395d9b5e4d169b862b4fba45a82e3336a3c7af85feecde8fbda1ed5c829112207a
d7d77b451629ad188167ad09a1d9c4241002a451ac2804bffa6b833a19e62a3cec35b9f03bb4f850697ee86e75f9b5692da99503415820a
3297272189d4665df347bd3795a86c27739c6b03ac2de394e246a5f34cfe736b36457d14dcfd86f7a11c8b6739b6fb4e0f50c1a560ce621
9b073e2adbe80e47e20e54e52b72e2c2be7121285ccdb3426e1c092ca855035904d8ab66de6b3360ecac584ad910ef660d8d653ada772e6
2eb44d21868b3fe389868ce479044148aa3f81fd8f9c1d71ecedffcb6bb346ffcafcbe716af8928890b6832d29fe264353d7e8f53cf89ac
8a2c4dd9413ac460cf7500484edd1f939fadc85a59429a76f937e783e80696927bda906d00aa2ffef68799aac2b7164dc2e3c96ad2fe20a
d404255e4effd5e59ed9011b231e6f744b5c4e63d878356fc087e306ab5cc6772a582fe24e1b927b00b6f416187cc1b126286a3bbc4f5a4
33fca109725b2a9aa7f9b285dcb3ebc64e8dda311547c67eb029de40cf5168beabd1d17593056622a1e2c918add4987bc889debb5d1aa5c
91b5710511171de5d2de00658cc19605ed201a31c753d80b99b79c9a9f63bcabd9cd5e55ef5dcea3b733d696b24e3fa0bf0384b9d4a383b
7e39cb90bb9454595a31ea3958f0a43300d962e46796714bfe87ad58ff5de5b892e04ec0a8f32a739a8dc78f0b36dc17fc5fc7ee965c269
427292ffaff8e866094ebc62af4c37655467a1fee3b69b440817fee17f43af0b240b1d9d9539a5f529a571b6ec7043f408c7c752ea77014
bbbd95ff72c837d03761ab85239a48e39a8b1a4cd28a46c147fbc99cd5bfe105e8e5da35c2059930fe805d24845fbf21e2ac1fe3d5ecaf3
5b77a77d88bdbd2ec5e782d17228dc396a4a123cb0f6db56ba62618f8df73781f65e356031f91f31a5b94095394635b03dd3dc56b07e643
5c4ca2ed4b586a24a340ebb362071198cccbf4b902292db7708655578d3d1c5354a8610215d88480db926537ae1687d6156280b47c332b7
8c0f6d68008d48cfa2dbf8914914b01d69e3b6ffd5a6b22a2cdcaab2ae214dc58a39f15c857d53510c1889e4fe6ddb7d0fd30a7518dc6d6
c3ba2dd28864f405ba135571ea57e822ca5a2557c225e787b7033d41035dd6da69342e250c607c2bd0d4c7766a2f20bc71a8ab11e0897d9
99a8333e61cc86920a449ecfd50102c07d61eddd82fcdb5c57195c3e27f7fbd33fd901ca86e26f94ffc8bc8375449c3f3ecfba05f2041b8
a8f15ce898c4a66411a2a1e3ff7b5030f2a1214799d28b8dc9847da701d025766cbae248a355b60992d6961ab01fa2154b72763b24303df
a21d5f12b985c9211b0ef563f24789e497cd63ae77529bd62516b8fbfd263594ab16c7b8f7facc9f53c96afdb9637e9bd0eba01ea810e7d
2ec5e71f2911e5b25a85ec897bb249b4228dafe2246b459bb3b1ba82d4cd05deed5bb63b2cde0dd8132857da4048e53b8556bb91c6ed154
15894d02ee47b20d0fdc678b8864f00e692061003e7ff75120d9356c8f7ead19c664c353df64ef3be5d93e06f2dc12708163e153daac384
f4f917b6250352bff8533ef043e1d73c0ffaf4883f92795233f23cdab41ecb3f33a8a9433e464b084e17764d91dd4bc83bce1ffff994122
86bcbd43e50082c913bd2911f455214ca86e18ea8694ba7936ee3d52713493f730c3af7581db3df5635fbab0edb0b349e4577e8ba39fea3
82314ebbb02ac17c9b1633f6660e2c421193a46ba8c5df9726634be7072896fe35e8d17c8dffd892b6173725fcd4f87e63b9efa571f5c67
f4b8c46bd8b310fa8a4341d67b6aadca391c9dfff5c8ca69e539149da6feb232cc75d7b74d6fec0c584e7308f6d1674f83b3b1460d3eb60
89adb3d7e2644ebbd8c04b8b6b8a8e511b707c6e0bc0ccdffff3039fede5309eef44b1be5d5729a1f39d250e6969e9e5f53811996b77cdd
e372ec31cb86046195a704bc50c8293d778d20d783dd18e4354c2d196f3ac5cd4286e09f67e47a4e8f6027d558784267692fd8912c51593
af17397cc41a203177611e4994d1c20a4fa5d4918ee47f88c700d52862c246dfef25bb728ca52d20256c16ae30cb48da14a584aa5a68f4f
fcad4e9b30f306698bb1e39c1a1cd04639a25d81f6e2f9cc42dae50e2dc56e2963a12e3e9de0fb15371e689767f83561b5310d732fee963
4234575a14be0a1cd246a7bb311b129050a9f7159518571e5d718f4559fab261f5bff901ae5f26cea861dbe237de9a4f4a2b77d0b9939d1
24a5fbe1b0ac293644fd52d546d93e7d48d493688c798d829d03bd27104a05733449a426b779e2a69c5d7d352bb71f53f7f01c149ee006f
54e9d5f83bba2469d32da710b4557a20622e9196958b8e4d05a86a23c9899544ae63a51b51853bfb1bba2ef68cdea75c26a5cb0fd960851
c5e98fee2004db3a16d72ce9162b980d73b716097d7bdf31a84cd95530fa32dae0575325c32d8debfccfe15a8b6b4e20699e8eea861b9e0
304da2a5adbe11e7dcdbc14d85254859a61008c0a5bd30e4947376c1f785256186362885b06341f88c449b9d01ed813e8d14e6eec21a6af
c7e184980cddd38e1de762cf926edb8c9a7303b138094ecfda7c69a32c2f545c13c71a153a75d1cd910d28c85ba3f55cb8ed5f18325f40a
fdacc38046a0f5fc2d6a2148c3c8e745931903799f8c8cd6d0bbecd0532de6a7ee02ed33cbd62f454d323def4fcda5fa26e40ffb475f648
a82d404e713a595f76305dde2f767dd523880c2eb262bb3bbaaf246c867f9be3254f1a551badc2614a798680de0194c80778412db8b23f1
ec5311c448964e3de8e73b4394484fcb947b6bea3e7bf450503693eb4ebf3ec9a98fb2e6b75eeeb31aac5aa3d76d673f118f0027fdb7f32
a5b443ddca9f9b51734975e76754f6920688e0fbc57053c35a422ba6dc1c4957381fd7a869cb1e4530f8ce2b3bfd03683f7c4203f62e87f
60b42640d292f0525bd7ba6855a05a601b9c035a0411e6ce4bc151a69649fb205445cec3ab72baafe8cc7e352171f3b09ad39d2e9d01fdf
165a820b9bc855d6ed662760be3cefd10e4f759159c6585620009392760b52fe338df1ee124b841be30807513a86e43eccf43e6093e2377
2d7ffba037de8137ecb787ccdb4ef5cd77982ba2068d106078625450e6699dc816b787a4a2d928001d45971fd541fcdae5d5b149003bc14
c765fc0af7610e4546a2fb2448cabfcdedffaade35f37555d2e81ddeedd1aeffaf6406b4210afb99262a7013a3e906ce1fa108ab9c1112c
29767c04c7f75b085d5557954012076911f26a9d534a81fbdb42d8f91aa4eff22d650b0c7ec622c7d747656a71abf7a2b344ecb455a6295
8f2d81065b624785bd53b35d4bf5968110149ecf44badcc730c803cec835c27879ab7d4d2e7857bb48f81411eeed56414d37e957c1fe7a9
697837d7f68338dd4e7eb89c4cfe2e68043707a9b8fc9684ba11022f4d25589cccc8e0a57405a05677ec19197a57fee305351f32b3430b9
a6c3456c4ee3e20d71e212a67d2a8c8c90b545e02659882bf76f3afd2b7a06bc6f704bb6c13ab51a1a15cc10c7803f659cd793e14fff373
6183f441c8d572cc507d3a4aa4a484d3adf6d0e6321f67b1210441beb5402a711976a84d99244d03014fcc78e738b7fb2a25168dc88c3be
8cd809778b5ea8cf583e30868d54de93a5c4f7d77ce1c74152bb026038b6731f51ae7336e96acf73667c948c6cee32894821936bd329f0d
82c2b529e816e3cfd3dae745a69afdeaf24b1c3ee79cfc119c896472b6caf6582ba68db0062ffe0b01820b88856174242c44101b23f906f
c03be1c3db3b3cde1bf6eaaad8b02fac4cb477e93012d73d4cb318a77681a066d9dabc4aaf1d68c9aa96f613f9b1b8963880c7af3724df0
8ffcdb717d7fbede993e73b90b0684b05f82c8d79b6bbece07439c75ca3bc5cb523e93522950285c53087e5045294c89358de4b2b9de18e
b21486ad4acc5a1d1e5908175a1308ffc9e020c03b589a95ed6a66b7b3910ceaf367e368cb25c293112f45d04f489f5687f3a9876cc8063
1bda2c902f94fea1c465043e699ab7a99b8d03dbf23bd5eb8f6132c74465ff34ff070cf10b99e72909d8a0367bdeabf9867562ddf4392ae
a4fe1971b6bca3e1631d27b8b1ee3f50dd9f6f7722f34e1f1abb9574746b138826f100523b68c151e4037754317e63d93cf061de2d314fb
abe5aa19b5dc1347a8e2415099f0e7e3e242abe53c020ab02fab99e3ba821dc13edf9f3aece0a024a46d9157c2884e51884b9eef2fdd612
22f35f5c8d7ce3ea06dec31b9353826c0c6fce497670f644439072dfb59de45889ac5f410a385c0ce193b376d61777ba85f56cc0df5e088
898a2811ea2f52046f4e971f472511c8510b5340d9fe76e5d14fc897b9cd9e67d7063e400688c26758deeba47fd9bdf844839527ede9c36
3ba1b47e98506475833e6bedb5f6b7a5eaef6b815452d605e7f1b7d0b9c06d0285d86ea00e95609d11f4aebe41ed5fd19cbd555bcf43a8c
24a9cd747d532c409ed611415885f743c0b70e737e25d44c1f0ecbde8b346c21e4c4872bf4bf73ab6da3523958c0c611f4a0eace22e5243
1ac0977ce345aedfa88cc2ae1a403f77b4256aaefc650eb4f749e37777d81897c7dd01bf405018d7b706b88764d2ef6f99964e9bfab029c
0cee623b94fe06eefdceaf927f22e532e004cf1c2b82d9b66d50fb123931d1e01b9412d8599f4b8b9d91f371accc4c2374afc9b8a2dbe81
3473be99905565bb52784e79dc13ed78edaeb8bd4d8e27a824327c4a07d93967d18be2066e045abcc581948807e78a6ed447e7b1aeb79eb
1cbaf15c82469bd10c876cc19e74b29dd1922fba4d74f2fef987c5cea3c016fbb6e5ef289a4d7bd146476af6f88d8c9220b2212f4481d53
f3df0f40596ab6550ecad9ec7be3481613ae385d078d074d432da1a440b62f3fe60c46aa3947b22344bf648db6a545110352bf255cdd7fe
d7ee0b70b01630792e6fa50fe146152a5bb4502f08c8f3bbbf16d5ecece1d66c04f553b84700839138304f42eed49e2cb3179bbc4542a43
9d3079a917d93103eb74479463e6741d8ac184da156821dd81ae5819950feda921b5a018898fa6574fa4f59e825062f68d6c0989ddc4119
6ebbdaea7908cdac7aa12881951f1c945e9f5dddfbf6c7223b494272836f4089250fdbe42cfe216c7d70188c3db8a7351ef579167123a3a
461f9bad886e6dc7694b64a754dd091cc8777a74442f282ad59c1690f24ae20880ab2cebe1bdca36fd24a02b04052b32c94f056cf819555
36b1e6b6422ddfeac48ac4464c1220186093be0dfc6d29faf6154b25e72fad0dad90a29a5148ad0b59ef546a0540312d17346cce86d18a1
f41f78ac9e0b9197d6819b02632a1718c23b34fdb06c2e5e0f287006093ad77471782eb7fd43f60008ba604023719626e4a8eb60b73b0fc
ca105fa6fcff6f3ace245e6730c089891c40f4c02cb691fedff32a8f18636ef1354781f4a44ff38ec2767436356f5d626c8365516dd25b8
9c51345b9b55a0e80fd167f23ec21d3b415729003a979c316d02e3b0f039574fa3505c24bca5e7884a267315ffae85a78a4e55f801ba495
c2291dffb2feaa0b70ceaec801bba18fb38f7bebdb5daca99a808c80824027e6b9647a1cd02a162f3129db3c38b6ff02c88ca94c55a0c49
856102182a3cb26eff54fef90fa0f53fbb350a723bd2d72297770b67c75d3e01ecfd1f4612027e5a8d42de782b9b04663a495949918831f
7b200905028cb4e5322722cf56b1531269e5bf518a1d5cde1cf1a91072f537aad0f58b3ae4734a2e0504d2ba14084addfe06fdc6ca33e7f
9be0564be136fbc616f134982000047f585e3bbdee15c34f02619a04f1eb0d320fcb93890475711a4761cb1e67198b852b7b605037340ae
ca68ad6c1b6d81ee24b622e922ff6c16faf88ff75728ae344d1a50bd51f26c9cad3b5608b33c858e57feaf3ff882f4a40c7fe51a14dabe8
9f0f40253ecb7bd1d4d5291ed3c1b88b1da932a487d22b14181ffb770911bbebcfbf19a9843bffe3209785b02b23fe3a6176bf208f2ee25
f20332657d2ca6728b9865a6bfdc9a9055a6ab86cb782307c2c0255525884bf8060f8aed7ec034f3ea0489f0f1d61cdcbea1ff69835df7c
41b6a448c2e8274c99e9caa0339c052fbcbf6648c2780f119607c6355b8c37e83a11858b3f296815f2c60da62c68358653db2fbc738d4a9
20f8bb8d94784228934870046f60ac937af4957c9414bcc33895fcc183062be4e4bff56f9c89838ead8e433dc604536938
''')
db_write_enable=unhex('''
0602000001f48001074892b6c57deb7889b5ebf86bc3040f6d91ff1f68765f046591184be08cf36c154b7ec5368139d0f9532382214379a
ff3ffbfe4659e2f274e864bd0ad660f99e21da2bab677dbfa907a66ce110c180d2ddc5dfe40b8ed975cbedffc11631f12f8bd646a0ee82d
44d2a6c1ec9cfbd40f485cb3d9124376b97b4a3349b0a730adda626d8ac28ec20e886aab1b8851deee3431c4d89c8bb3e787eaa9c0323df
e583d5424d36436e4435043e04fd4ea46b1fb2507ca6f0eb03baf27c84b819cbc96cec31a78045eb648339e2aa4789e7672d933936005f4
720c8ffdc1ea23a4f30a1cdc8f6e87775c241b9ab1566f7771857cc4703d571f1106c526f95232925a6a93ec8e919022fbe303a515f9aaa
8ca215072069311dd3f97d9a4f56259bab3a1b7a8582d6dc2f92d49f023d6f25a05837e1536a633e252ef645225f4293955041a0d54dcb1
d1dd7e097b7839de5fde2a6ce999966d712b4cb2fd9d7830031da55d9faa99f866fbb7e520566efba43c2509286bf28e1a20c6a836db8a1
fa4cb9b8d193780aab592d41653839670129066ac56f1268e6f761337f768555e13c5d68137c60f83dba8dc3863e00e73fd3af21e23a566
daa67f3f14dd934e323651167021ca6b82a6103cb30be849446e2f54dde64a05377052b57332e9bf08a18cf52da2a13ebbd55e60333f8bc
319e1457f38ec5d4839ec0ecd034825bdeaf64926858c6e8c2df418717b5f67135abc038835d3e4e1aa809546fd0d7f01066a71537f96bd
1ecec3687583e1b511bf48c2776f4670158e56164c62da20f671764c785c352fc3cce22cefa20760acff8f45efb54a934f9834d54f9701d
edacd4d383ac01f8cca92562eec774a58da6f55da252c491ee2ab58ff769f89a9649d3956682ca7d06bbf33f9a935b781dfc21b123b1669
4424e72d6a3e6781dcf195effd36470a4eab0fdc74e87102879ec81fea6549920cce454ac7813997b82d51e7b8c1ee24fad389904478f84
7654ec3a63bc595b9a7dde798db5c0b6f244901f239e7674c98eebb42b66e8956a733c3796586280a19a1df8a69224acd2556f7ec2e27ca
e37c69b332b2c0ec85991ae48722f988935f658b9cf32f46dfc6d96a5a36f18b6bf9f657b59b3da42414e4d56c0a24485aa298d2d0d1b17
7e7d0dafe602a4fb4f423def4bdb010fdc626c947587e19e7e4b0e6f9f2da41c29a8f1903d0d2803365fe0a113abba19220141d1ac7cec6
83962030d3f6591f98ea3dd09162715e5c12f40332b47c53164532827e5596fb2cc0aa8f31683cc63ec14c034c6f3d2c70b8c47611b4c5c
b5348a2559fb162a780a2b403b0120a6846e27d6057a3ab9e1b18915ae2039e81cc6c50d2a14d5913617bacae78fe9b91e9e49d2e82def4
7565c12ff938b182f8ce941d2781b773479538c76ed9f7d4469f6fe5ba7f6e3ad98871b2866f0ef4f36277daa76c1042c83f77df0ff2e26
39540bb355ea84273411c453081bd1e1035c402c53190d0bd905e8d01fc3787c65b69172cca5b234e92e358463bbb8d23e38c74a3a8e273
5542b996ba5ec22c5095a777b6775a728df59c3560c7f36b83d55f819f196573f8fd356379fe9a5e7cecb376395e01309e2005b29e3b160
cb74c6a5856093480dd06aea5fb3fbe23e004f8d7a38fd07866cdf24161391cc756f6ff71ff072e308b35e259435111bee09ddf2b8df99d
0f2c2e8edaa4ecaabc6975a58f23bb6bfc94ebcbbba0d581f16be9d043c4e410b321c6df424ecaeea94edbe5801eb786199124222b091e5
b33bad6761445a8a6606d0e781c07a6f91cd5fe188ddb9f9e17f5e07b0cba319c52e5fb03f53df570f82ddb603d305b72a2406bc7c1a37f
920405f8f14d3ddf5d836ba68d83c1a8d7f1a41d148cc34b1ef996ddfb43ef19d2fbf0adcad301a473497739eaa10bbce85e15c32f1d90c
8ab8605d0ae941eb914086592d087a521fde33a676cdfb94a4247f60f51edd37294511e92ec71a9a54bab68a0edaabdcb2c1a3adea778f4
16e39200af4c517dd7152bb72476c5d1413f04704615d795300f3a091214f4e4ac2ef41969c81f8fc08610864907b2e6edfa5fdb0926b6f
064b2a1c3b8c7b631cc75663cedad5e71868abc9bac678e430144613cb0e51982b9e019099026b069bb7a4dc376cdd6a3c5956631797621
3672754fac87df85953cdc0de276fb8742f48ba218d4202fe6f865834152979d6da9b473e5d476c0aaa68491f545091b879c01986078d64
fa5f49f60e615cb865f154f48b45173a1dc85f2eb1128652290bd383cdedcd8f280117e60be034ce224f92673934ed9e0077d5f7899f4e0
eee097933a35e40f205d84a10733f492da619802ff70d9b949ca0c2bcb9ba68c290f2ef9a20a3bf496834c66956a8ec4179266999d9f87b
dfc14aea865f0487e2be10a64becba69547d01658935e63703986a56d6ce38fe66dbf61d754ba9a1a278353913422e4f2e4100c5962999a
3eaa3e1672bc73edcfcc7525a2d3dbe95683b4bf38f7444ac0f470f0e98079916e4e1fba3fcd5b082fc2772e63b5e0663f87638a163858f
590845240a8c22dacf6f7999c431a2ab5204a7da7839c9a932608c7f83a87d1d73d7d8b2fec65abb95221fada44365fe21061dbcde52cb8
4cbfe9f061c4dab3be86002e7683eed16c23c687ce61c5d923ffbab40bee6ae93ed7f857f304e5eb16ec6d088563524e90d916e41a3a8c7
777e29731f0f45c125082c423a5c02704c07c6fc19b1c4838ee3eabe12562829e67581d312c720b792a41744dec1e157426ab75136d31ee
2f208147039091453c0b0e3970c5624d7a53df8076e9d1625d2c8e693e0e9a81e23862dca78921b66ca4c3c5ed35b0b5ed2e24622eb216b
a0ba6e0c0eaf97c754eeb3db4a506d5854a3edc92d0111af3d2135a998729123f03d0f9366bb0d2c681cfc62c59bcd75c6b410d8e6997cc
a55c989f010393d6c242f7ce1ea71c6f262e498855584347b04ce26cce2e822b8c6b7b4937148a45c947073b300f7c72b6e78c4231078d8
0531b7f9317c1bb4d6070f299e9a97731b1befeeec2dae0a1a0364568acbebab069a4b90147776ff7e7f79c1cc98b2fe6214792501554f4
195783b0f9188ccfe96ad8cd29f5463409c2054e4a2496ee65eaa1fcda3d7764cd3e8431e44a2b05e64aa2f9fb0d13456bfea9c91ec2d90
d0099e7e395dce818650dcaf8bdfe23b4c6443f5c690b18ead221a6c2bcd34572ffb83b3332eafde6e25b37ff3ac6da0c3cc697b996265c
aa5a53ce44570303d7d111f44c635119595c247e86a32083f2865501752f93e3024b2e2b6d82d0c03b745bfd809af7e8e1349d1a79bed51
bba415064701a2a7890e8f39937c6d2f563b0747bd94f1b698624b4fd17dfdf68ffdc0450c26d771f8ff4fb01a26ff8f64eb5b6d9153f5c
e29d9dfcf84ca230a4c212401b437d1137f83a44f7a98a9fd1bc3d883e6227ce369ed32a960550aa863f3d014de7494dead34fced1d7b4e
ab651d499033589446fb5a1564557d63e724941e77ae3f46b79703d06277d87356999b51f61893d31c7231b0c635f1d83ab38a0dce544f5
f6803861d6e3d7e70d617ecc593920b1ab9006bdc7bff34a8b36a7601eb170a040156b4567ab37f55fdf2d466fca9374277322f21811d02
c7bc599c9ed5c2b1fe7b6baa19b1b0a30f79f8641b97bf66491dca0b4c0341367aa5acec1398bb37c037d81ac2368db49c5d5720bbfb746
6ba616c70c7d834286303047357da0e9a34fc14b00c17a0a02f6a62a5b52976b00ed67bb2d0aa1b4a8a93100b799e1839695bdae9b98e75
c8df5d8340d158be60379a6f626af052ad55c5cea01f806048e937f87e01e725e67620364e511afd288b25953e9ade343b596068608190f
a5c4df114c93d3c8deca929c066d8bae5ac2d607e3f94d68a5d3554827a64735a43c462bc3682cc1664411f592c9456f53da1026f51459a
0cf20cc171b9b6bede47ce57d845dffe1025c6eb240615da151106a5601b75c24c673d6ea818d60c31f414aeaa55597b40cc4f2ed2b3850
d366084a52513420b013695e2bfcb0dbfad0014975c67471a3807528d15730802a4428842c6368c72650b3161265d6b86007264cf093a31
7fee4ee388e7721a02434c514324cbf85cb57f709b53fdf69624adc29b85518f1a051f2473ad9384d7ac57c2a780ab72506ba925fa39992
dd2d0b00ffd8c38645d55c2ca2ae94cf4ffa372284a28a13797e25eb0d950c08371656a889e6189f83b9c0c8e06952b34fe13ccb5c3b2c8
2f2d988f6d9a233f1a9e64de97218be12ee7a8e8463d82131624ce167e744a3ca3915c78e6e76362d06090e2a7ed60ea7437c84838d8aa7
5f096c9a928e403e2428550c98de8c43bd25e24520aef6ee534ee1d4702175e6b25d030b87941845cefc1dc289cee33c72139f29839af81
cb6a097d114311a01736f479bdae32a59398fc4a7494d034fc8dc5f2ba8af93fc4c576b703967ae593780413b44b98f4baba9d3fd7b5571
5ad5e5c41f9361a42a757d9a6d7220a9467e19f739877076164c142d40bbae9501312c394dc0233dc5868814162bfc1f10bd4663b285dd2
d005f3bc3dad2ff023f7e81b799b1b323b37e82fc99dc81291cf93cc04a0e05aa674bcfd3bc0d930a10d0957ec7712b8cc78375dd904eb5
a468296015dab1babb076786f305c8ad90ca3947b150da79cb94037e970e9180437ea34c72771d673000826741fe759fcdc2b03558331fd
f5b89d6e3f25a05241f32f139e898126aec8b1715cac0208831fb1205f9efb75538755b2d83931c7ad9e252c88c8af3c5df62fb99653aff
99e6c6c051a9a1241381cd5ce1307261f866575caea0a3e847286ecc67d7d9aa18f48ef2a5e5f183286127f8b9aa2caa0869ec5e474a70e
5427dc2f0488b134d201241dae68ed3996869453247bb50d8bc3d3c909951e5a47b1e899610347ea8d7193346bfe754c289ad1ca454b9c9
2a07527b95a1fe508d0b7c8da5b9047d277508ff615c9dc9ab11596aa88d0c9734a45d81f0393219bead587d3a6f9d07c470f2abf8d7c69
92228bf0ab6ef79e46599bb0a60
''')
# FIXME this must be very specific to a particular device and constructed on the fly from multiple hardcoded tables:
identify_prg=unhex('''
027800000023000000200008000020008000000100320074000000008020200400242000005020773628200100302001003c20800008213
8000c210000482107004c210000582000005c20000060200000682005006c20014970200141742001887820018084202000942001809c20
0902a0200b19b4200300b8203b04bc201400c0200200c4200100c82002003300100000000080cc200000f503d0200000a10132004400000
00080dc20e803e0206401e420d002e8200001f0200500f8200500fc200000b8203a00000804001408000008080000080800001408300008
080000140831001c081a0032000c0000000080501101004c111e0034007801e8f4f6f4f2f4f6f7f4f1eeeceef2f5f5f8f9faf9f7f7f9fc0
0040d10121111121415131112151a1e1c1a1a1a1c1b1b18140f1012141616151615120c04030202fffdfbfbfbfaf9f4efedeeeeedf1f2f1
efeeefecece9eae9e9eaedf1f4f6f6f4f3f4f6f9fbfdfdfefdfefe000000000110232e10232e10232c10232c10232c01065010250101000
007c8078c06ff0000000000004f8b006d0300280307030990098db00b90880991858e08c1810b9190910ac1b8928a0993878a890b938889
8908c88191890ac8889289099a818a890b9a88898908d08191890ad08892890802818a095a810a0288890b5a8808d98189890ad99089890
95e8289890b5e88898908e18189890ae190898909648289890b648889096e8108e981890b6e880ae99091b9096f828a8f0b6f88918908f0
818a890af090898909768289910b76b8918a08f88792910af8888a92097c81898a0b7c09018089890b01888991097f8189920b7f0908808
9920b088889920c07030307200402000000002f0004007000000029000400700000003500040080000000170000004e002800fbb20f0000
000f00300000008700020067000a00018000000a0200000b1900008813b80b010910002e001c000200180002000000700070004d010000a
0008c003c32321e3c0a020244000400010000003000f4311e000000ff0000008d002007ff00000095003007ffffffff00000085ffffffff
04000085ffffffff08000085ffffffff0c000085ffffffff10000085ffffffff14000085ffffffff18000085ffffffff1c000085fffffff
f20000085ffffffff24000085ffffffff28000085ffffffff2c000085ffffffff30000085ffffffff34000085ffffffff38000085ffffff
ff3c000085ffffffff40000085ffffffff44000085ffffffff48000085ffffffff4c000085ffffffff50000085ffffffff54000085fffff
fff58000085ffffffff5c000085ffffffff60000085ffffffff64000085ffffffff68000085ffffffff6c0000856f33110b120e0f101010
0f11140d0c0c08080c0e0e0b0f101a100f11120f13160d0e0e100f09080a0d0a0d0d0c06090c10070c10030c0f140407090bfdff0003ff0
6060500020405fbff0003f9030504fb040604fa010505f6fe00fef3fcfefdf0f9fbfdf0f9fafaf400fffeeaf6f8f7effafefef4f7fcfff3
f6f9fd130e00fcf6fbfdfdedf5f6f7edf1f3f4f1f5f5f6ebf4f6f7edf6f6f5f2f6f7f6f1f4f8faf1f1f2f3f8f1f2f3f4f5f2f3eaf3f4f3f
3f4f5f6ebf1f0f1eff5f4f4e9f2f3f3e7f2f2f1f7fffefbf600fefbe7f4f6f5e8f6f5f2f2f4f3f3f5f5f4f4ebf4f4f1e8f4f6f4e2f1f4f2
e0f3f7f7e1f5fbfbe3f0f1f2ecf2f5f5e1f1f5f3e8eef2f6f6060403e1f3f5f3e7f3f5f8e1f0f1f1e1f3f7f9e5f2f6f6e8f5f7f8ecfbfcf
bf3ff0100eefe00fdf0fffffc131201faedfcfdfbe8f9faf7e0f0f3f1e0edf1f1eaf3f6f6dadfe1e1e6edeeeff2f4f5f4e8f2f4f1eaf7fb
faf2f6f9fbe7eff5f9eef6fafdf0f3f4f5f2f4f7f9f1f9fdfdf4fffffef300010205110905090a0a06ff010405fc060807fc090d0dfe070
808fe0b0c0d000a0c0c0305090a020608060e0909090e07080605050706090303030afefdff070000020a0302056f2909070f161e21100f
10120f0e0e140a0e12180e1011131111121414181a1a19191715111314130d1214170e0f0d0e0b080709110e090713100c0b0a090705070
909080506080a040404070605050503010002020000ff03000000fbf7f6f8fdfbf9f9fffffdfbfafaf9f9fcfaf5f4f7f4f3f2fdf9f3f202
02fffcfffffefefbf9f8f8fefdfdfcfcfefffef7f9f9f8f8fbfcfaf7f5f5f7f3f2f2f3f6f5f3f3faf8f7f8f1f0f0f4f3f1efecf4f4f2f0f
5f5f5f5f5f7f8f9f3f6fafbf3f2f2f3f3f1f2f3f2f1f1f2f7f3efeff8f2f0ecf5f4f3f1f0edeaebf4f3f1f0f8fbfcfcf0f0f2f4f2f4f6f7
f2f5f7f5f5f5f5f4f7f4f5f4f0f2f4f6f1f1f1f2f2efefeff4f3f1f000fcf8f6f0efefecf7f7f5f4f0f0f2f2f8f6f5f4f8f9f6f5f6f3f2f
1f8f9f8f700fffffcfbfaf8f8f8f9f8f8f9f9faf8f9fafbfbf6f8f8f9f1f4f8f8eff1f3f6f7f7f8f9e4e7eaebeef0f2f3f3f5f7f8f0f2f8
faf5f4f8fafafafcfbfbfdfdfbfdfe0001f9fbfcfcfdfdfffefefffffefefffefd04050402010000000505050407050706040301010b090
605090704010c0a07050e0e0c0b0c0e100f07090908080b0c0a090e111106050506050607070204070804030302060402020503ff032222
201e191b1a19191b19181d2120201618191a141516171a1a1b1c16191b1b13100f0e151312100d0b0c0e0908080a07070b0e0b0c0d0f040
4060908090b0d0b0c0d0a070704030507060503030404ff00010300030506fbfdfffffbfdfefefbfbfdfef7f7f7f7f4f5f7f7f4f8fcfcf3
f9fe02f9fafcfdfefefffef8f9faf9f9fafbfdfbfbfaf9f6f8f8f9f5f4f4f7f6f7f5f7f3f6f5f4f5f7f6f6fafaf7f5f6f6f3f3eceff2f4e
eeff1f2f6f6f6f5f8f7f5f5fafaf7f5f3f5f4f4f2f3f5f5f2f1f0f1eff2f4f5edf0f3f7eeeeeff1eef2f4f3f1f2f3f3faf9f8f8f2f1eef0
f4f1eeecf3f1f0eff0edebecf2efeeeef7f4f1f0f4f4f3f1eff0f0f0eeebedeef7f8f9f8ececefeef4f3f3f3f0ecebeff1eeeceff5f3f2f
1f2f2f2f0f5f3f2f1faf7f8f7f8f9f7f6f5f2f1eff7f4f2f0fcfbf9f7fafaf7f6f6f3f1f0f8f4f2f1f9f9f7f5ebebeae9f6f7f6f3f7f7f6
f8faf6f3f3fdfbfaf6fcf8f7f5fbf9f7f60201fffdfcfbf9f7fcfcfbf9fcfaf8f6fbfaf8f80101fffd01020200040404040604030300010
102030203040103030204050203070505040e0a09070808060509090806111112100809090a08090a0d090c0e100505090d05070a0f0709
10131d1b1c1c1b1c1e1e1616181b1c17141318151111161514141b1717161a1a1b1b11151818111115151011110f0e0e0e0e100e0a09111
213110f1110100e0d0d0e0a0a0a0904080a09030406060505060704050507050303020100fefd00000000fefe0000f6f6f8fcf5f5f9fdfc
fbf9f80302fffd00020201fffffffdf8fafafafbfcfdfef7f5f3f4f7f6f3f3f7f7f8f8f6f5f5f4f3f4f4f2f6f7f6f4f7f8f7f3f2f5f6f5f
5f6f6f7f0f3f3f3f3f4f4f5f5f6f5f7f1efeef0f1f1f2f1f2f1f1f2f1f0eeeef5f3f1f2f7f7f5f3f1f0eeeff2f1f1eff3f1f1f1f7f7f7f8
f1f5f7f8eef2f5f5efededefeff0f1f3f1f4f4f4f1f2f2f1f1f1f2f3f1f1f1f2eeedecebfafafaf5efeff0edf2f0eff0f0f0efeff1f2f7f
9efeeeff1ece9eceef3f3f5f5f6f4f4f5f4f4f4f7f1f5f8fbefefeff1f5f5f6f8f6fafafcf0f1f2f1f0f1f0eff6f9fafae8e7e9e9f2f2f3
f5f8fbfcfaf4f5f2f3f7f5f5f4f5f3f4f3f4f3f0effafaf9f8f7fafaf8f9fafaf8f6f7f7f9f9fafbf9fbfafcfeff0000000508090803040
40503050505050608080000000402030405060708090504040205030203070708090f0e0d0d0a0707090e0f0e0d100e0908100f0e0c1314
1413191617182223251f1d1a17121c1a150f12121110100f0d0b13100f0e151211101714101017161412151211100d0f0d090e0d0703090
a09070c09090a0e0a08050d0a090806040304070504040300000002fffcfe0605010001010101fdfeff0000fdfdfd00fefdfffbf9f5f6fc
f9f6f4f7f7f7f7fbfafcfdfefcfcfdfbf9fafef9fbf9f8fefefdfdf7fbfcfbf3f5f6f7f7f7f8f9f5f7f8f8f1f0f1f4f3f3f1f2f2f0f2f3f
2efeceff5f4f3f4f3f5f5f7f5f6f8fcf8f7f7f9f1f4f6f8efedeff5f1eff1f4edeff1f5f3f6fcfef3f5f6f9f4f4f7f9f1f0f0f5f2f1f1f4
f7f9fafff7f7f9fbf8f9faf9f2f7fafbf4f6f7f9f5f4f6faf0f0f3f7f1f0f0f4f0eeedeeebedeef0f5f4f8fbeaebeef4f1f4f6f9f1f1f4f
7f9f7f8faf6f8fbfdf1f1f5f8f2f0f1f5f6f8fbfef9fafbfdfafafafef4f7fb00f8fbfd00fafbfcfef3f6fcfef0f6f9fffbfbfe00ebecee
f0f5f4f6fafbfd0102f5fafefff3f6fd00f5f8fcfbf1f5f9fbf9fbfefff7f8fafaf9fcfefefbfbfcfcfafbfcfbfffefeffff000101070a0
c08070b0c08060708060a09090708060506080809090a0b0c0706090e0b04070808090808070d0d0e0c070705050c0b0a06070907030a07
06050e090300150afff81a16130e0f0b080508060809100d0d0c090a0d0b090606070e0a0807100d0c090f0d0c0a0f0d0b0a0607070800f
dfe000602fffd090704030604040206030303040403020100fdfd0000fffc00fefcfcfffefdfe00fffcfa00fcf9f8fcf9f7f800fffdfcf8
f9fcfef5f5f9fcf7f7fafcff000101fefdfcfefdfdfefef9fbfefffbf9fafcfaf9fafcf7f8fafbfafbfcfcf8f9fbfdf8faf9f9f4f4f6f8f
7fbfefff3f7fcfef7fafdfffafbfe00ff000103fbfc0002fbff0001faff0001f9fc0001f7faff0000010104fbfe0002fd000002fafdff00
f7f9fd0003050506fdfdff01f7f7f9fcfbfdfefefcff01fffe000003fd000101f9fd0000f3f9fd01f2f7fbffff040509f7f9f9fafafe000
1f9fafbfbf9fafafdfefdfcfdfafcfdfcf8fcfe01000204050104070800010103040302000406030200ff000200000000020200fe030200
00f3f4f4f3fbfbf9f900fbf9fafffefcfb030200fdfafafafafbfaf7f5fffefefaf9f8f8f6fdfefefbfd00fffffbfbfaf900ffff00fffef
dfc02fefdfc030000ff030200ff030102040705040308090806050405040603fffe06040101040201010e0a0602050401000402010300ff
010302000002fefe0204f6f7fcff080400fb040200fe0502ffff090400fe0a070301070401000602fefd07030100070604010601fefb040
1fffe00fffefefcfcfafa010201010201fefc02fffaf60200fefbfdfdfcfaf9f7f6f7fcfcfbfb000100fffbfcfdfff8f9fcfdf9fdfefffe
fe0000ff000001ff000000fdfbfafc020101020002020202020101fefcfbfdfefdfdfffbf9f6f9faf8f9fafcfdff01fefeff00fcff0003f
bffff0100010104ffff01040105060304030202030404070100000401010204000102070305070c01020306040606070406070603050609
03060a0c04090d0e080c090c0307080a00040d1000040b0f00040c11050b141803070e130508101104090f12000104060c12181bfd02070
90304090dfd00070f02060a0cfe000407fcfe04080304070806080b0e090a0d100506080b0103060902050b1204081014ffff0308feff02
0500020505f2f0eef1f8f8fcfffefefbfafbfaf9f8fbfbfcfbf9f9f7f6f4f6f9f8fafbfdfdf7f7fafcf7f6f7f9fdfbfbfcf8f9fafbfefdf
dfdfbf9fafbfbfbf9fafdfaf8f7fdfbf9f90201fffc020100fe05060806030302ffff0100fe020300fd010101fd000000fd00fefefc0200
fefc01fbf6f401fefbfa0500fbf600fcf6f1f5f4f4f6fbfaf8f700fdf9f5fdfbfbf900fef9f4fcf8f4f3fbfaf8f700fbf9f7fdf9f5f2faf
8f6f2fbf9f9f6fcf8f2eef6f5f4f3fef9f6f4f7f4f0eff6f6f6f4fafbfcfbf9f8f8f8f9fafafafcfcfaf9fdfcfcfafefefdfdfdfbfbfcfc
fcfcfe01030404000101020100fefdff0103020507060404080909040a0e0d01040304fefeff02fcff0001fcfe010101010102000202040
70a0a070204060603070a0d0607080b010204090407080d080e0f11070d0e0c090e0e0e0a0f100f0f101213080d0f120c12131106080b10
0d1215190f1114150d0e10120c1114150d11121412111112121317181414141617141316161817181512121213141314080a0d0f1b1c202
30b0a0e1513171a1d131418190f1014190c0f171b0d1015150a0d12150f12191c121211130e1012130f11131415121213161514140d0f0e
0d060809090504080df4f6fa0000000508ff030909fd010504fdff0000f6f8f9fbf8f9fcfdffff0000fdfcfcfcfcfdff00fcfdfdf9fcfbf
bfcff000100faf9f9f9fafbf9f8f8f7f4f3f8f7f4f2f8f7f7f8fbf9f6f601fdfafafbf8f5f6f9f7f6f7f9f5f4f4f9f4f3f4faf9f8f7faf7
f3effaf5f0ecf5f2ede9f8f5eeeaf3eeeae8e7e0dadafafefffaf7f8f9f8f5f4f5f4f9f8f7f5f3f2f2f0f4f4f3f0f8f8f5f2f5f4f2f1f1e
fece8f1f0efeef1edebeceeece9e8f1edecebf2f1f2f4eef0f2f4f5f5f7f7faf8f8f7f7f6f6f7f9f7f8f7f8f8f6f7f9f8f9fcfbfaf9fafb
f9f8f8fefaf7f801fefbfe00fdfbfafcf9fafcfffafbff020000ff080704020905070904050707050709090506080a000105090307090b0
6090a090505070c07090f120d0e14170c0b0d0f0a0d0b101014181b11151c1d0c0d1418101216170c0f131715181c1e14171b1c13171c1e
1314181b1a1a1918181818191516171917171a1b151717151415131117171a1e16181719191d1f221718191914181717161b1e1d1218181
925282a2c1c1d1a172023201c1c1c1b171d20211e2021211d16171819171615171c1c1b1c1313111212100f1111100f11110e0a0d14120f
0b0c0a0a0607030203100e0d0b040301ff070606060908080803030405feff0003f9fcfc00fcf9f8fa0101fffefbfcf8f9fdf9f5f6f6f4f
3f4fcfcfbfbfefafbfdf9f7f6f7f8f8f7f5f1f1efedf0eeedecf6f4f3f3f4f3edecf7f2edeaf6f5f1eef8f9f7f4f5f4f2eff3f2efeef5f3
f0ededeceae8ecececece9eae9e8e9e8e7e8eaebeceddbdee3e9f5efece9f4efeeeef3eff1f2f3f1f0f0efefefefedececebf0efeeeeede
9e9eae4e4e5e8eceae7e7ecedeeeeeae9e9eaebece9e7f5f3f4f5f4f2f0f0f5f2f0eef8f7f7f6f7f5f6f7f7f7f6f5f8f7f6f6fefefffcfa
f9f8f6f8fafbfcfd0000fe00fffaf7fafafbfaff00000300fefbfbfffefdfe010201000a0802fe05030100070503020a0702010a0807070
a090807070401ff0e0d07041311100f16141315101113151315110e1e1b17111e1d1d1d1a1718181a191714191a1c1c1e21211f1e1c1916
1f1917181e18131217191a1b1d1c1d201b1d1e1c1d1c1c1914171b2012151a1e1f2123241e252a2e262d32321a1b1d1e1716181c1f23272
6191c201e2f383c3f1c2228281a1d2021171c21251d2228291c202121191b1b1b1c1f1e1d1c1c1919171d202013181b1c111515150f1215
160c1014170405080904060a0e0b0d1111000000fe07060706090a0908050506050506060803060503fd020300fbfe0005f8f9f9fbf4f5f
3f2f5f6f5f6fcfbf9f8fdfdfaf7f6f7f8f8f2f1f2f2e9e9e7e6edeeeeecf3f6f6f5edf1f1eeeaebeeedeceae9e7ece6e4e5eae8e6e6ecea
e8e5ecebe7e6e8e6e6e8e9e9e8eae8e9e7e6e8e9e9eaeff0f0efeceae7e5e8e6e6e6eeedebe8f4f2eeebf1efedecefefefefeaeaeae9ece
be9e9ecefefebe9e9e7e6e8e8e6e5efeeebe9ebecebeae8e9eae9f5f4f4f3f0f1f3f2f0f2f5f7f4f6f9fcf6f5f7fcf4f2f6faf7f7f9fbff
fbf9f8f6f6f9fefbfcfbfefafafc00f5f8fe03fbfc000102fffcfcfaf9f9fbfffefdfefffefefcfcfdfefc0001010105040402000000010
705030306040303feff02050607090a0c09080915151210171614100b0d1212101112111b1919191718151213141412191716141d191716
161616141d211e1b191d1e1a191b1b1b222524221a1b1c1e1a1c201f1e1b1a191c1a1a1a232123242f2c2a27302f2c2c212526252124242
427282b2f1d1e22273e3d404626272b2e20201d1e2724211e28282726222324261e201f1e1b1e1f23191e1f1f1f1d1c1e1b1d1d1c131212
1619171a1a1c1e211e0f1113101215161414181716feff000106090c0e08090a100606090b080a0d1002020206fefd020306070809fbfdf
dfff2f3fafdf9fafcfdf9faf9f7f5f6f7f7f5f2f0f0f2edeae8e6e4e3e2edebedebf4f3f1eee9e8e9e9edeceeebe7e7e8e7e5e4e3e4e7e5
e4e5e6e6e5e3e7e8e9e7ebe9e8e4ebebe9e7e5e4e5e5ebece9e6edebe9e6e0dedddee5e3e4e6e5e5e8ebecebeaebeceae9eaebeaeaeceae
cedeceaedeeeceaebeeede6e9e9e9e6e8e8e7e8e7e8eae6e5e6e9e8e7e9ebf4f4f5f4f3f2f2f2f8f9f9f8fcfcfcfc0000fffdfdfffefefd
fefefdfcff00fd00fffefefeff0000000101040505030703010203fcff0102fbfe0004ff03070bfbfe0309f9fa000500ff0001050404010
20305060404030304040405060506080b0804030601fefd0a0503040c0704020d0601000b0806061815120d110f0d08120f0c0a110f0b0a
1613110d171615121717161717161411191815151e1916131d1d19151c1a1918191a17181c1b1b1826262827282829292928292a221e1c1
d2424221e2e2d2928292826224745403d2c28231f1f2223221f212220252523222320212220222123211e1d1e1e1d1d1c1e1f1f221c1c1e
21191f22251c1d1f1e1e1c1d1c11100f10110f0f1215141310020204060c0c0c0f12121113111315151211110e080a08070606060509090
8070000fefd00fffdfcfefaf5f5f8f9f8f8f8f6f8fbf2f6f6f7eaececeae5e8e9e8eaebebebedefefefe8e7e8e8eae9eae9e5e6e6e5e3e5
e4e5e5e4e5e7e2e1dfe1e6e7e9eae5e8e9ece9eef0f0e8ebedede9edf1f2e6eaf0f5dee2e7ece5e6e5e4e9e6e1e3eae8e6eaeaeeeff0eef
3f6f7eaeff1f4ebeff1f1e9eceef0e7eaeceee6ebedf1ecf0f1f3ebeef1f2edeeedeef2efeef1efededeff4f5f4f1fafbfaf8fcfaf8f8fc
fcf8f8fbfbfaf9fafafbfdfdfdfdfffefdfbfb02000000070703010405050505070a09080a09080e0d0d0b0a0907070809080b020507080
10104060504020300ff0003040405080b08060305070400fcfefefc0305030200000102fdfcfcfd06060505090806050405060508070404
080807030908080a110f100e171514121214141416171715151512121310100c1715151318191613140f1012231f1a1a25211d1c2928242
21f1b18161e1d1c1a2a2c2c29211f1f1b3d3b3a39222325242424241d201e1e2022242727211e1e1f23221e1d222223252122211e272524
2224222121251e1c1d1f1b1c1d1e1d1f231317171817151514101117190a0b0d0c10100e0e14141211151412100a0b0d0f0406070903060
60706060503fafdfe00f9f9f8f9f6f9fbfcf7fafafcfcfcfbfdf7f9f8f8e7eceff1e5e6e9ebeaebedeeedeff0f2e7e8eaece8eaeff1e8eb
f0f1e5e9ecedeaeeecebe3e8eaeaebeeeceaebebe9e9ebe9e9ecebece9eaf0f0eeeef4f4f1f0edececeee3e3e5eae6eaeceeedefeae6eee
deef0f7f5fbfcf2f2f1eff0f0f2f3efefeceaebe8e7e7eeedecedefeff1f4f0edecf0ececeeeef2f5f6f9eff0f3f6eeeff4f8f4f7fbfef6
f7f7f9f8fbfbfbfcfe0000fe000101ff020505fd00020301030607040609090607070209070703070808060e0e0d0e080909070b0a07060
80601fc0300fbff0002050806090c0805fdf8f700000102fefaf5f4f8f7fc01fdfbfdfe00fefafbfcfc000201fefbfd0100feff01fefbfb
00fef9f90003080d0702fdfe0a05000211111213141512131211111312151716080910151213161a0f0f1117141616151c1a1a19201f1e1
8221f1c18181817171c1d1c1a26201d1c191514103a36291a26211d1c1b1a1d1d24221e1b27211d1d232626202225251e241f1c1d1e1b18
152121202026282a2825272924252929252b2c2e271c1c1e191f2c302b1c1b1e1d0e1721290f141915121212110f11110e0f100f0d0c0f0
c0a090d0e0f05080c0efffe0003fafafbfdfdfe00fffcfcfefffffffdfbf8f9fcfbf2f2f5f8ededeff0efefefeff2f2f1f1f0f5f6f5f3f1
f2f2efeeeff1ecebebebe9e8e5e6e8e6e7e6e8e8ebe9e9e9eae9ebebebede9eaebeaecedf0efedecededeeeef0f1ebeae9e9edeceeefe7e
df4f7f1f1efeefaf3f0f0eeeff2f3f3f2f0f0eaf0f1f2ebf0f4f5f1f3f4f3f6f3f2f2f2f5f6f7eeeff1f2f8f8f8faf7f6f7f9fafaf9f9fd
fafafcfdfefffefcfdff01ffff00010000030404030303020202ff0808090a09090c0f00fe020601000406050502020e0a0805080906040
4060504fbfd00ff040908060402000002ffff00fafdfe00fefcfcfef4fafcfe0100fe00fefe0003fafcfd000300fefe01070a0c02090c0d
0005090cfc0003070703050903080d11060a0f12121311101312111012100e0f14100f0f1614111019140f0d1714100d1615120c1a1b181
21715120d1a181513191a150f1716120a1c1a17150f0d0a080e0604031d1a15101c19140f1c18150d1f1f1e191a15110f161311101d1c1c
1b17181614201f1b1726231f1a2322221f1f1d1d1d27221f1c1a19191a1f1815151c1a181927252220110c0d0d131212110c0e10110d0e0
d0a090e0c070f100d090f0e0a090505030100020203fefcff00fffffefff9fbfe03fbfbfe00f9faf8f9f2f6f7f7eceff0f3f3f7fafdf4f6
f7f9f5f7f7f8f3f5f7f8f1f7f8f9e7eceef2e8ebedf2ebeaeff3eaeaebefecedeeefe9ebecefedebedefedeef2f6f2f0eff1ebe7e6e4f0e
feeeef8f8f7f7f1f4f3f3f1f3f5f6f3f4f4f6f1f1f0f1f1f0ededf2f1eff0f3f2f1f0f4f6f7f7f5f5f3f6f3f4f4f4fafafcfdfcfaf9f7fb
fbfdfdffff0000fffdfdfd02010000030203030505070604040607000002020804fffe0e08030009090705090a0a0601040504050505060
204040402010204000203030709090802020302000001010104070a000407070003090e030a0d100a121617080e11150105080913161814
10131714111314120d1014130f10121413121211131112100f1111111414130e12141410100f0e0a0f0e090411110d050e0d07020503020
20b080705050202050f0d0806060201020300feff0f06020203ffff0000fefbfa0a0806060b0b0b0a09050401120a07060d0c0703100d0a
071813100f110f0b08141311101513110f19150f0917120e0e16140f0d1818161413131313181614131b1716150b060504100c07050f0a0
60506040407020103050703030708090a0f0101040a0102010501010104fe00020604060a100305080df8fe0105f7fafe00f6fafe00feff
fffffafbfbfdf9fc0000f9f8f9fcf9fafbfef4f6f8f8f7fbf8f8f6faf9f9f4f7f9f9f1f5f7f7f1f4f2f0f1f3f4f7f8f7f6f6f4f4f1efe5e
9edf1eff1f3f5f5f6f6f9f3f4f6f6f9fcfdfcf7f8fafcf2f3f5f4eff2f3f2f0f1f1f3f1f3f4f8f8fafbfdf8fafafaf3f4f5f6fe00fffef8
f8fd00fdfe020400010404fefefe0000fcfaf90200fefc0603020005020000000000fffefeff00fdfdfeff0200ff00010000010101ff010
60807060303020305050304020100ff0604040400feff02020405070c0b0a090909070313130f0a1213120f14141211171a16150a09090b
121313141413141612100e0d13110f0e14100c09100d09080e09070612110f0a0b0808070e0904010a0a06010200fffe01ff01000100fef
cfffdfbfb01000000050302000200fffe00fdfbfc000202000305050601010000fcfe00ff0506080605030204fefefefc05040303000205
05050404000b080701070605030f0d0b090c0d0d0e07040301100d08010c090605120f0a0812100a06100c0c0e1612111005030000080a0
a0a070809070805040405050504090a0806131412101013131107090a0b07090b0a08090a0c100f0c0d10141413070c0e0f010305080102
0303000207090001020301030607fe000103fefffe00f9fafcfdf7f9f9fbf7fafbfdfbf9fbfbf8f8fbfdf1f4f7f9f7f9f9f8f7f9f8f8eef
1eff0f5f9fcfef9fd0104fdff0102f9fbfdfefbfe0000fdff0000f5f7fcfef3f6fc00f9fe0001fe00ff00fdff0003fd000203f7fafd00fb
fbfd0101010205030000050202050902020104f9fbfd01fbfbfbfe0201000300000000ff00000002060808000104050000ff00020303010
30302ff050404030204050504050504fefeff000405090b040504050808080a0c0e0e0e05070708080708080a090a0a0f0e0d0c130e0d0c
0e0d0a0515140f0b14120b070e0d0b070c0c080408070604080805010502fffb0602fffc0301fefafefdfaf7fdf7f6f4fffcf9f300fbf7f
5faf4f1f0fbfaf9f400fdf9f400fcfbf7fcfafbf9fcf9f6f3fcf7f5f60200fdfa0001fffcfdfcf9f7050300fd00fcfafaf9f8f7f6020101
fe02fffbf9fffcfbf9fffdfcfa01fefaf80500fcf90d08040000fefcfcfefcfdfb0200fdfe0502fdfb020200000f0d080410111113ff000
3050a0c0a05060506030305060704060708060707060f0c0a09100d0a070b0c0b0a0a0606060d0d0c0a0e0f0f0e0f0e0e10100d0c0d0905
030303020203080b0a0a05080706040605060202010500040508fe0003070004060700010408fbfe020600020306fcff0003f9fb0209f9f
d050af2f80107fefdfeff0301010103010000fefdff02000003050000020501000204010306080205070702050707040607080405050704
04040507090a0b06060503090c09060c0c0a0a0402020204040405010102030402000200010002000101020501020406070908010507090
1030403fd000103040507080504040600010406010100000a090909060504030b0c0d0e0e0d0c0e080e0c0a09090907070401000b0a0906
0a08070702000203090608080708090805040404030402ff02020100fffefffefdfdfefdfbfcfc00f8f8f6f6f4f3f2f1f2edededf2efede
cf5f4f3f3f2f4f4f2efedeeeef3f3f3f2f5f0f1f2f4eeeff1f4f6f5f1f8f9f8f6f9f9f8f6fafaf7f4f3f0eceaf8f6f3f0faf9f9f6f3f3f4
f5f7f3f5f7f7f7f6f4f6f2f0eef6f4f3f2f6f6f4f4f9f9faf7fefaf7f2f9f6f3eff9f8f9f9fdfaf8f7fcfaf9f8fffdfbf903fefefe110f0
d0a03020001fffdfbfe00fefefe070606060503020203020000090908080500fffd0804020007070708090606071111100f1113120f0c0d
0c09070a0c0b07090c0e080c0d0f0506090d0a0e1111080f11120b1013120b0f1415080d10140c0f12140a0e1213090d0e0f080c0f12101
314140d0c0e0f0c0a0704000002040504050404070b0d0204070b07070808060505060405070a090808080708090a0808090a0a0d0e0c09
0c0c0c050505040d0d0c0903040303050606070c0b0a0905070909040405090402030403050405030303020202020106030203080405050
8060201030100ff040201000806050006070603050201000100fffd0a0a090a030202030c0603010f0d0708080504060401010000fefeff
020101030601fffd02fefbf90500fbf806fffbf801fffdfdfcfaf9fafbf8f8f9fbf7f6f9fdfaf8f50000faf5f5f5f3f2f2f1f2f4f0f0f1f
0ededeef0f3f1f2f3f1edeeededf1f2f1f2f4f4f1f2f3f2f0eff1f2f2efeff0eff2f2f2f4f3f3f6f6f1f1f2f2ebe9e5e6f1f2eeeef6f5f0
eff3f4f2f1f8fafaf8f3f4f7f6f1f2f2eff2f2f1f0f3f5f5f5f6f7f5f1eef0f1efebe9e9eaf7f6f4f0f8f8f4eff7f6f6f5fbfdfef902040
2ff0a0a07050100fcf9fe020403fcfe00000508070603030301ff00020007070705ff00020101040708090a0a08080607070e0f0e0d0b0a
0a0a0507091009090c0f0e0e0c0c0f1010110f0e0b091112121112141313121213151412101015151415161616161413151310121314131
41212151412100f1113130304090f07080806060608080e0f12130d0c0d0d08090a0d080a100f0a0907080809090a0a0d100f0a09080d08
07080f0b0d0e10060a0d0e090c0e1004090c0c080b0e0e090a0b0d0d0e100f0d0e0d0d03050508050607090406070602020301040404040
60505040100fefeff00000200000000fefd00030201030301ffff00fcf9f9fc0a0a070606050604010000000c0d09060706040101010101
0203000005040200fefefffcfdfefcf9faf8f8f8f7f8f9fbfdfdfefdfcfdfdfdfafaf9f9fcfcfbf7f5f3f0eff3f2f0eef5f3f1eff5f7f5f
4f1efeff0f2f2f0eff6f1efefeeebebecefeeefeceeecece9eeeae9e7f0eeeceaeceaeaebf1edececf7f4f2eef1efeeede4e4e2e1f1f2f2
f0eff3f5f4edeaebedf6f5f5f5f6f4f5f2eeeff1f1eff0f2f4f1f0efecedece8e5edeeeeece7e7e5e6e8e6e7ebe9e8e9e9f1f0efeff4f2e
feffdfcf8f302020000f5f4f4f50000ff00ffffff0000fefdff00fefbfafefbf8f601fdfcfdfdfbf9f8050200fe05020000070605020d0c
0704090605070f0f0d0b100d0c090c0b0d0c1012120f080c0e0d0f0e100f1315141418191813101413121619181617171817100f0f12141
415151212111011111313151416141312181d05040304090b090813110c090e0f11110d0f10100f0e0e0f0c0f10100c0f11120e0f0f0d10
110e0c1113120f1211100e0f0f0f11131615150c0c0d0d0e0f0e0d0c1011110b08090809070a0a090a090c0704020504030303ff0003030
20101010405050300060605030302ffff0002020406080906090b0904070a0a00040502070501000300fffd0101000003020200fffffdfd
000000fffffffcfd00020200fcff0201f7f8f8f8f9fafaf9fdfefbfafbfaf9fbfcfbf8f7f9fcfbfcf6f6f6f7eeedeef0eceef1f6eef0f2f
4f6f9fbf8f4f8f7f7f0f4f7f7f3f6f7f6eef2f5f3ece9eae9e8e8eaeae7eaedeceae9eaeaeae9eae9ebeaecedeae7e7e9ecebebece1e4e6
e7eeeaeaebf3efefefefeeedeef3eeececf1edebebefeeeceaefecebeceaeaedf0e5e9eff3e9ebedeee8e8e8e8ececeeefe8e5e4e5edebe
aebeeefedecf0f1f1f3fefbf9fbf6f4f4f3fffcf8f7fdf9f8f900fffdfbf8f8f7f5f7f8faf7fdfdfcfcf8f5f5f5fcfdfdfe0101010001ff
fdfd03050807080708070a0a0a0c090909090d0e0f0e0c0a0c0e090a10120f0f111312110f0f1110100f1012120f12110f0e16141210111
20f0d141311101212131314131212110d0b0d221e1c1a060c10100607070609090a0a100d0a07100d0c080d0d0e1011100f0d100e0c0b0a
070507090706050c0806020f0d0d0a12120d0812100d090a0706060b0805030b060100050200ff080300ff0804fffd07070605020100030
0fdfcfe000001010201010202ff0000fbf9fbff00fcfdfe060401010502020406010000fefcf9f8fffffcfafbfaf7f6fffcf9f8fffdfafc
fbf8f7f7fefbfaf8fcfcfbf8fffcfcf900fcf8f7f5f5f5f7f5f3f3f4f7f6f6f6fafafbfbf6f5f6f9faf8f9f9f7f8f7f8f3f2f2f0f7f8f7f
7f3f2f4f8f6f3f4f5f4f1f0f0f3f0f2f5f3f3f6f7f1efeff1e9eaedf1eaeaeef3eceaeaebececf0f1edededeeeeeff1f3eef1f4f6eef0f2
f2e7e5e4e4eff1f1f1f2f4f5f3f0f0eeebeff2f1f1f0f2f3f3ebebedeeedf0f1f1f3f3f4f2f5f3f4f3ededf0f2e9e8eaecf1f1f3f3e9ede
fefececedf0eceef1f0f4f5f6fafefffffff7f8f7f8fafe0100fafafaf8fbfbfaf9f7fafdfef7f7fafdfeffff00f8fc0000fe0002020103
0402ff03050707060809080a080a0f1012110a0c0f0f09090b0c0f0f0f11100d0a0b120f0c090d0e0d0e1111120f0c0d0d0a0f111312121
2110e0d0d0c091012121012100d0d100f0c0c0c0d0d10140f0a0d1114151205090b0b0b0e110f0a0d101006060b100f0f11120e0f0f0e0b
0c0d0a090c0e0a0708080700ff01020702010303000000060200020403040602020304000001050002030300000000fbfbfdff040202010
1010202fdfbf9fbfffdfbfb0200fffefffefbfb01fffffefffffdfefefcfc00030101000000fffff4f1f2f5fbfe0000f8f9fafaf7f6f6f7
fefefefefafbfbfbf6f7f7f9f6f5f6f7f7f3f4f7f5f3f4f6f6f7f6f5f6f5f6f5f5f4f6f8fdfcfbfbfafbfaf9f8f9fbfbf7f8fafdf1f3f6f
8f7f5f6f8fafcfaf9f7f7f9f9f3f5f6f8f6f6f6f7f9fbfcfaf1f3f4f0f4f6f6f4f5f3f1f0edededeef1f0eeeeeff1f4f5f4f4f4f6f7f6f4
f3f4f4f0ede3e0dedeeeedecedf4f3f3f1eae8eaeaf1f0f0eef3f4f2f0ededededeeedeaeaf0f0eeecefeae8eaf2f3f1eeededeae8f1ede
9e7edecebe9f0f0eeeeeeebeceefbfbf7f4ff00fffff7f6f4f30000fffdf8f9f9faf7f7f9fefcfdff00fefffefc020200ff020200fd0303
00fe00fefefd060602000806030008060505100e0e0d0f100d0a0a0807081212110e0a0b0a06090a0c0c0e0f0e0c0f0f0e0c0a090908111
00f0c0e0e100f080a0d0f0f0f10110d1011120c0f121514181a19141a1e230a08090e080808090e0a09070e0a070513130f0a13110f0e0e
0e0e0e090809070905040305040404040605060303010204060603070a0a05060200fe050300ff050402010201010003030301020204040
100000101fffe00fdfcfafafdfdfcfbfefcfefdff00fffd00fffcf8fdfefdfc0104030300010301fe000100fafdfffd00fefcfcfbfcfbfa
fafbfcfefefdfbfbfbf9f7f7f9f9f7f9f7f5f5f7faf9f8f8fafcfcfef7fafbfaf7fafcfdf9fafcfcfbfbf9f7f7f4f4f4fbf9f8f7fcf8f5f
6f7f5f0eff8f8f5f2f9f9f6f2fafcfe00fafefdfaf5f7f7f6f7f8f9fbedeff5f8f3f4f6f9f3f8fcfff0f5f9fcf0f0f2f3f6f3f3f3f8f9fa
faf3f4f7f9edf2f6f7e3e7ebeaedeeeff1f2f3f4f5edeff0efefeef0f2f0efeff1edeff0edeaeaeaeae9e9ebedeaebeef1eae9eaf0e5e5e
6e6e9ecefede6e6e5e8edececeeefefefeef4f3f4f4fe000000f3f6f7f7fcfcfbfdfafbfd0000000000fdfdfc00fcfefffffdff0002f9f8
fafefbfcfd00fefe0000fefdfe0100010305060606060b0706060607070a090a0a0a0c0d0c0b040405070a0b0b0b0807070907070709080
809090806070a0c0a0c0e0d0e10111010101110111214171818191a19171428231c150e0d0a05080703ff0708060404050505060302010a
0805030a09060208050301030301010504020305060706030505050201010103020203ffffff00fffefefd020100ff000000ff00fefffe0
301ffff0103020202050303fafcfd00fd000304fe000407fbfdfd00f9fbfe00fbfbfbfd02010001fffcfd00fdf8f9fcfaf7f6f7fbfcff00
fafbfe00fffdfefffbfc0001f9fbfefef9fafafbfbfcfcfafafbfcfbfbfbfbfbf9f9f8f9fcfcfcfcfcfbf9f7f7f9fcfdf4f5f7f9f8f7f9f
af6f7f8f8f1f1f2f2f3f4f3f1f2f5f7f5fdfcf6f2f5f2f1eff5f6f8f7fafaf9f9f8f6f5f5fbfdfdfeffffff03fbf7f7faf3f3f3f6f4f5f6
f8faf9f7f9fbfbfaf9f7f7f7f8eae8e7e7f3f5f4f3f7f8f9faf0eff0f2f3f5f6f8f2f3f2f5eaeaedefeaedeff3eeefeff2f2f3f1f0f5f6f
3efe9ebebebededededeaededeef1f2f0f0eeececeff6f7f8fafffe0001f6f7f9f9000101010101010000fffeff01000000fdfeff010504
0301000201fd0001020401010506040607080507090e07070705090a0d0a0a0806050906040009080606060706060a0907070a090808090
8070807060606090705070c0909090e0704061010101115171716191b1a18141516161719191cfef7f5f6fbf7f4f300fefbf802fffcfb00
ffff0001fffffe0100ffff00fffefc0000fffc030301fe050503010303020102020201020102020000fefdfcfcfdfdff0000fffefdfdfcf
ffffefe000000ff010203020203040400fffffe02ff0001080808070005050501010303000305040406050502040304ff010101fafcfbf8
0203020002040402ff00fefd0300ff01fffdfcfefaf9fcfdfbfcfdfefd000202fd000103fafafdfffcfcfdfdf7fbff02fdfe0000fd00010
1fcfcff01f9fafdfff5f8fbfbf1f5f8f9f2f3f8fcf1f3f7faf0f0f2f4f5f3f4f5fbfdfdfef6f8fbfdfdfefe0004030100fcfaf9fbf6f8f9
f8fafcfcfbfafcfbfcfbfcfdfdf6f4f5f6e4e3e3e7f3f3f3f1fcfefdfbf6f7f8f6f9faf9faf8f9f8f7efefeff1f4f5f5f4f4f6f7f8eff1f
3f6ebecf0f3ebebeceef0f1f2f2f1f4f4f3f2f6f9f9f1f2f5f7fbfafcfd04050607f9f8f8fb01ff0000fffefdfefefffdff0100feff0204
040303040405fcfcff000502000106060609090a08090f0e0908040404060703010204010000fffdfbfb060401fe0404020106060606090
706060807060906070809070708070907080a0808090a100d0c0d110f0e0e15141214171513131d231b16fafcf9f8f1f1efeff6f2f1f1fa
f8f6f7fffdfbf900fdf8f6fefaf6f6f9f7f7f8f9f6f5f6faf8f6f7fdfdfcfbfdfbfafbfefcfbf9020201fffcfbfcfefcfdfeffff000101f
e000001feff0000fefefe000000000004030301ff00000003030202080909060303050401ff010402000204050808070608090600000102
f8f8fc00fefeff01fffdfcfdfd00ffff0306040400040403ff000104feff00020405060504070605fe00ff00fefdfeff00fefbfc0000000
3000102030202030302020303fbfcfe00fafcff00fdff0102fd000100f7fafcfcf8fafafafefefefefffffdfc00000001fefdfefffcfafc
faf8f8f7f9faf9f8f8fdfdfcfafcfbfafbf7f8f9f9e9ebe8e9eff0f3f4f8f9fafaf7f7f9f8fd0000fef7f9fdfef5f7f8f6f3f5f9fbf8f8f
afcf9fafcfdf6f8fafbf1f1f2f3f3f7f8faf3f4f5f4f9f7f8f7f8f9f7f6fdfdfefe08090707fe00fffd0000020500010203000204040001
020403050304080a0d0b01040709060a0d0e0a0f11120d1016130a0d110f080908080504060600fefcfbfcfcfbfafcfbfafc02fffdfb060
2fffe070402030907030509060706080707090c090709090805040c0c0a0a0c08060812100905120d07060d0a06064300cc000f0000009b
9a999796959392918f8e8d8b8a898786858382817f7e7d7b7a797776757372716f6e6d6b6a696766656362615f5e5d5b5a5957565552515
04e4d4c4a49484645444241403e3d3c3a39383635343231302e2d2c2a29282625242221201e1d1c1a19181615141211100e0d0c0a090806
0d7200000ca3100b12208ea21c83d44cd3235915656118a66dd95469d45551d72549d19265d0756d9de6791d3569d9e67999d451228871d
ec66dd7b6695cb769d5453918f65094f45496c631cc645dd7d43845911800a130
''')
# The following blob has only 1 byte difference from the above
enroll_prg=unhex('''
027800000023000000200008000020008000000100320074000000008020200400242000005020773628200100302001003c20800008213
8000c210000482107004c210000582000005c20000060200000682005006c20014970200141742001887820018084202000942001809c20
0902a0200b19b4200300b8203b04bc201400c0200200c4200100c82002003300100000000080cc200000f503d0200000a10132004400000
00080dc20e803e0206401e420d002e8200001f0200500f8200500fc200000b8203a00000804001408000008080000080800001408300008
080000140831001c081a0032000c0000000080501101004c111e0034007801e8f4f6f4f2f4f6f7f4f1eeeceef2f5f5f8f9faf9f7f7f9fc0
0040d10121111121415131112151a1e1c1a1a1a1c1b1b18140f1012141616151615120c04030202fffdfbfbfbfaf9f4efedeeeeedf1f2f1
efeeefecece9eae9e9eaedf1f4f6f6f4f3f4f6f9fbfdfdfefdfefe000000000110232e10232e10232c10232c10232c01065010250101000
007c8078c06ff0000000000004f8b006d0300280307030990098db00b90880991858e08c1810b9190910ac1b8928a0993878a890b938889
8908c88191890ac8889289099a818a890b9a88898908d08191890ad08892890802818a095a810a0288890b5a8808d98189890ad99089890
95e8289890b5e88898908e18189890ae190898909648289890b648889096e8108e981890b6e880ae99091b9096f828a8f0b6f88918908f0
818a890af090898909768289910b76b8918a08f88792910af8888a92097c81898a0b7c09018089890b01888991097f8189920b7f0908808
9920b088889920c07030307200402000000002f00040070000000290004007000000035000400800000001700000026002800fbb20f0000
000f00300000008700020067000a00018000000a0200000b19000050c360ea010910002e001c000200180023000000700070004d010000a
0008c003c32321e3c0a020244000400010000003000f4311e000000ff0000008d002007ff00000095003007ffffffff00000085ffffffff
04000085ffffffff08000085ffffffff0c000085ffffffff10000085ffffffff14000085ffffffff18000085ffffffff1c000085fffffff
f20000085ffffffff24000085ffffffff28000085ffffffff2c000085ffffffff30000085ffffffff34000085ffffffff38000085ffffff
ff3c000085ffffffff40000085ffffffff44000085ffffffff48000085ffffffff4c000085ffffffff50000085ffffffff54000085fffff
fff58000085ffffffff5c000085ffffffff60000085ffffffff64000085ffffffff68000085ffffffff6c0000856f33110b120e0f101010
0f11140d0c0c08080c0e0e0b0f101a100f11120f13160d0e0e100f09080a0d0a0d0d0c06090c10070c10030c0f140407090bfdff0003ff0
6060500020405fbff0003f9030504fb040604fa010505f6fe00fef3fcfefdf0f9fbfdf0f9fafaf400fffeeaf6f8f7effafefef4f7fcfff3
f6f9fd130e00fcf6fbfdfdedf5f6f7edf1f3f4f1f5f5f6ebf4f6f7edf6f6f5f2f6f7f6f1f4f8faf1f1f2f3f8f1f2f3f4f5f2f3eaf3f4f3f
3f4f5f6ebf1f0f1eff5f4f4e9f2f3f3e7f2f2f1f7fffefbf600fefbe7f4f6f5e8f6f5f2f2f4f3f3f5f5f4f4ebf4f4f1e8f4f6f4e2f1f4f2
e0f3f7f7e1f5fbfbe3f0f1f2ecf2f5f5e1f1f5f3e8eef2f6f6060403e1f3f5f3e7f3f5f8e1f0f1f1e1f3f7f9e5f2f6f6e8f5f7f8ecfbfcf
bf3ff0100eefe00fdf0fffffc131201faedfcfdfbe8f9faf7e0f0f3f1e0edf1f1eaf3f6f6dadfe1e1e6edeeeff2f4f5f4e8f2f4f1eaf7fb
faf2f6f9fbe7eff5f9eef6fafdf0f3f4f5f2f4f7f9f1f9fdfdf4fffffef300010205110905090a0a06ff010405fc060807fc090d0dfe070
808fe0b0c0d000a0c0c0305090a020608060e0909090e07080605050706090303030afefdff070000020a0302056f2909070f161e21100f
10120f0e0e140a0e12180e1011131111121414181a1a19191715111314130d1214170e0f0d0e0b080709110e090713100c0b0a090705070
909080506080a040404070605050503010002020000ff03000000fbf7f6f8fdfbf9f9fffffdfbfafaf9f9fcfaf5f4f7f4f3f2fdf9f3f202
02fffcfffffefefbf9f8f8fefdfdfcfcfefffef7f9f9f8f8fbfcfaf7f5f5f7f3f2f2f3f6f5f3f3faf8f7f8f1f0f0f4f3f1efecf4f4f2f0f
5f5f5f5f5f7f8f9f3f6fafbf3f2f2f3f3f1f2f3f2f1f1f2f7f3efeff8f2f0ecf5f4f3f1f0edeaebf4f3f1f0f8fbfcfcf0f0f2f4f2f4f6f7
f2f5f7f5f5f5f5f4f7f4f5f4f0f2f4f6f1f1f1f2f2efefeff4f3f1f000fcf8f6f0efefecf7f7f5f4f0f0f2f2f8f6f5f4f8f9f6f5f6f3f2f
1f8f9f8f700fffffcfbfaf8f8f8f9f8f8f9f9faf8f9fafbfbf6f8f8f9f1f4f8f8eff1f3f6f7f7f8f9e4e7eaebeef0f2f3f3f5f7f8f0f2f8
faf5f4f8fafafafcfbfbfdfdfbfdfe0001f9fbfcfcfdfdfffefefffffefefffefd04050402010000000505050407050706040301010b090
605090704010c0a07050e0e0c0b0c0e100f07090908080b0c0a090e111106050506050607070204070804030302060402020503ff032222
201e191b1a19191b19181d2120201618191a141516171a1a1b1c16191b1b13100f0e151312100d0b0c0e0908080a07070b0e0b0c0d0f040
4060908090b0d0b0c0d0a070704030507060503030404ff00010300030506fbfdfffffbfdfefefbfbfdfef7f7f7f7f4f5f7f7f4f8fcfcf3
f9fe02f9fafcfdfefefffef8f9faf9f9fafbfdfbfbfaf9f6f8f8f9f5f4f4f7f6f7f5f7f3f6f5f4f5f7f6f6fafaf7f5f6f6f3f3eceff2f4e
eeff1f2f6f6f6f5f8f7f5f5fafaf7f5f3f5f4f4f2f3f5f5f2f1f0f1eff2f4f5edf0f3f7eeeeeff1eef2f4f3f1f2f3f3faf9f8f8f2f1eef0
f4f1eeecf3f1f0eff0edebecf2efeeeef7f4f1f0f4f4f3f1eff0f0f0eeebedeef7f8f9f8ececefeef4f3f3f3f0ecebeff1eeeceff5f3f2f
1f2f2f2f0f5f3f2f1faf7f8f7f8f9f7f6f5f2f1eff7f4f2f0fcfbf9f7fafaf7f6f6f3f1f0f8f4f2f1f9f9f7f5ebebeae9f6f7f6f3f7f7f6
f8faf6f3f3fdfbfaf6fcf8f7f5fbf9f7f60201fffdfcfbf9f7fcfcfbf9fcfaf8f6fbfaf8f80101fffd01020200040404040604030300010
102030203040103030204050203070505040e0a09070808060509090806111112100809090a08090a0d090c0e100505090d05070a0f0709
10131d1b1c1c1b1c1e1e1616181b1c17141318151111161514141b1717161a1a1b1b11151818111115151011110f0e0e0e0e100e0a09111
213110f1110100e0d0d0e0a0a0a0904080a09030406060505060704050507050303020100fefd00000000fefe0000f6f6f8fcf5f5f9fdfc
fbf9f80302fffd00020201fffffffdf8fafafafbfcfdfef7f5f3f4f7f6f3f3f7f7f8f8f6f5f5f4f3f4f4f2f6f7f6f4f7f8f7f3f2f5f6f5f
5f6f6f7f0f3f3f3f3f4f4f5f5f6f5f7f1efeef0f1f1f2f1f2f1f1f2f1f0eeeef5f3f1f2f7f7f5f3f1f0eeeff2f1f1eff3f1f1f1f7f7f7f8
f1f5f7f8eef2f5f5efededefeff0f1f3f1f4f4f4f1f2f2f1f1f1f2f3f1f1f1f2eeedecebfafafaf5efeff0edf2f0eff0f0f0efeff1f2f7f
9efeeeff1ece9eceef3f3f5f5f6f4f4f5f4f4f4f7f1f5f8fbefefeff1f5f5f6f8f6fafafcf0f1f2f1f0f1f0eff6f9fafae8e7e9e9f2f2f3
f5f8fbfcfaf4f5f2f3f7f5f5f4f5f3f4f3f4f3f0effafaf9f8f7fafaf8f9fafaf8f6f7f7f9f9fafbf9fbfafcfeff0000000508090803040
40503050505050608080000000402030405060708090504040205030203070708090f0e0d0d0a0707090e0f0e0d100e0908100f0e0c1314
1413191617182223251f1d1a17121c1a150f12121110100f0d0b13100f0e151211101714101017161412151211100d0f0d090e0d0703090
a09070c09090a0e0a08050d0a090806040304070504040300000002fffcfe0605010001010101fdfeff0000fdfdfd00fefdfffbf9f5f6fc
f9f6f4f7f7f7f7fbfafcfdfefcfcfdfbf9fafef9fbf9f8fefefdfdf7fbfcfbf3f5f6f7f7f7f8f9f5f7f8f8f1f0f1f4f3f3f1f2f2f0f2f3f
2efeceff5f4f3f4f3f5f5f7f5f6f8fcf8f7f7f9f1f4f6f8efedeff5f1eff1f4edeff1f5f3f6fcfef3f5f6f9f4f4f7f9f1f0f0f5f2f1f1f4
f7f9fafff7f7f9fbf8f9faf9f2f7fafbf4f6f7f9f5f4f6faf0f0f3f7f1f0f0f4f0eeedeeebedeef0f5f4f8fbeaebeef4f1f4f6f9f1f1f4f
7f9f7f8faf6f8fbfdf1f1f5f8f2f0f1f5f6f8fbfef9fafbfdfafafafef4f7fb00f8fbfd00fafbfcfef3f6fcfef0f6f9fffbfbfe00ebecee
f0f5f4f6fafbfd0102f5fafefff3f6fd00f5f8fcfbf1f5f9fbf9fbfefff7f8fafaf9fcfefefbfbfcfcfafbfcfbfffefeffff000101070a0
c08070b0c08060708060a09090708060506080809090a0b0c0706090e0b04070808090808070d0d0e0c070705050c0b0a06070907030a07
06050e090300150afff81a16130e0f0b080508060809100d0d0c090a0d0b090606070e0a0807100d0c090f0d0c0a0f0d0b0a0607070800f
dfe000602fffd090704030604040206030303040403020100fdfd0000fffc00fefcfcfffefdfe00fffcfa00fcf9f8fcf9f7f800fffdfcf8
f9fcfef5f5f9fcf7f7fafcff000101fefdfcfefdfdfefef9fbfefffbf9fafcfaf9fafcf7f8fafbfafbfcfcf8f9fbfdf8faf9f9f4f4f6f8f
7fbfefff3f7fcfef7fafdfffafbfe00ff000103fbfc0002fbff0001faff0001f9fc0001f7faff0000010104fbfe0002fd000002fafdff00
f7f9fd0003050506fdfdff01f7f7f9fcfbfdfefefcff01fffe000003fd000101f9fd0000f3f9fd01f2f7fbffff040509f7f9f9fafafe000
1f9fafbfbf9fafafdfefdfcfdfafcfdfcf8fcfe01000204050104070800010103040302000406030200ff000200000000020200fe030200
00f3f4f4f3fbfbf9f900fbf9fafffefcfb030200fdfafafafafbfaf7f5fffefefaf9f8f8f6fdfefefbfd00fffffbfbfaf900ffff00fffef
dfc02fefdfc030000ff030200ff030102040705040308090806050405040603fffe06040101040201010e0a0602050401000402010300ff
010302000002fefe0204f6f7fcff080400fb040200fe0502ffff090400fe0a070301070401000602fefd07030100070604010601fefb040
1fffe00fffefefcfcfafa010201010201fefc02fffaf60200fefbfdfdfcfaf9f7f6f7fcfcfbfb000100fffbfcfdfff8f9fcfdf9fdfefffe
fe0000ff000001ff000000fdfbfafc020101020002020202020101fefcfbfdfefdfdfffbf9f6f9faf8f9fafcfdff01fefeff00fcff0003f
bffff0100010104ffff01040105060304030202030404070100000401010204000102070305070c01020306040606070406070603050609
03060a0c04090d0e080c090c0307080a00040d1000040b0f00040c11050b141803070e130508101104090f12000104060c12181bfd02070
90304090dfd00070f02060a0cfe000407fcfe04080304070806080b0e090a0d100506080b0103060902050b1204081014ffff0308feff02
0500020505f2f0eef1f8f8fcfffefefbfafbfaf9f8fbfbfcfbf9f9f7f6f4f6f9f8fafbfdfdf7f7fafcf7f6f7f9fdfbfbfcf8f9fafbfefdf
dfdfbf9fafbfbfbf9fafdfaf8f7fdfbf9f90201fffc020100fe05060806030302ffff0100fe020300fd010101fd000000fd00fefefc0200
fefc01fbf6f401fefbfa0500fbf600fcf6f1f5f4f4f6fbfaf8f700fdf9f5fdfbfbf900fef9f4fcf8f4f3fbfaf8f700fbf9f7fdf9f5f2faf
8f6f2fbf9f9f6fcf8f2eef6f5f4f3fef9f6f4f7f4f0eff6f6f6f4fafbfcfbf9f8f8f8f9fafafafcfcfaf9fdfcfcfafefefdfdfdfbfbfcfc
fcfcfe01030404000101020100fefdff0103020507060404080909040a0e0d01040304fefeff02fcff0001fcfe010101010102000202040
70a0a070204060603070a0d0607080b010204090407080d080e0f11070d0e0c090e0e0e0a0f100f0f101213080d0f120c12131106080b10
0d1215190f1114150d0e10120c1114150d11121412111112121317181414141617141316161817181512121213141314080a0d0f1b1c202
30b0a0e1513171a1d131418190f1014190c0f171b0d1015150a0d12150f12191c121211130e1012130f11131415121213161514140d0f0e
0d060809090504080df4f6fa0000000508ff030909fd010504fdff0000f6f8f9fbf8f9fcfdffff0000fdfcfcfcfcfdff00fcfdfdf9fcfbf
bfcff000100faf9f9f9fafbf9f8f8f7f4f3f8f7f4f2f8f7f7f8fbf9f6f601fdfafafbf8f5f6f9f7f6f7f9f5f4f4f9f4f3f4faf9f8f7faf7
f3effaf5f0ecf5f2ede9f8f5eeeaf3eeeae8e7e0dadafafefffaf7f8f9f8f5f4f5f4f9f8f7f5f3f2f2f0f4f4f3f0f8f8f5f2f5f4f2f1f1e
fece8f1f0efeef1edebeceeece9e8f1edecebf2f1f2f4eef0f2f4f5f5f7f7faf8f8f7f7f6f6f7f9f7f8f7f8f8f6f7f9f8f9fcfbfaf9fafb
f9f8f8fefaf7f801fefbfe00fdfbfafcf9fafcfffafbff020000ff080704020905070904050707050709090506080a000105090307090b0
6090a090505070c07090f120d0e14170c0b0d0f0a0d0b101014181b11151c1d0c0d1418101216170c0f131715181c1e14171b1c13171c1e
1314181b1a1a1918181818191516171917171a1b151717151415131117171a1e16181719191d1f221718191914181717161b1e1d1218181
925282a2c1c1d1a172023201c1c1c1b171d20211e2021211d16171819171615171c1c1b1c1313111212100f1111100f11110e0a0d14120f
0b0c0a0a0607030203100e0d0b040301ff070606060908080803030405feff0003f9fcfc00fcf9f8fa0101fffefbfcf8f9fdf9f5f6f6f4f
3f4fcfcfbfbfefafbfdf9f7f6f7f8f8f7f5f1f1efedf0eeedecf6f4f3f3f4f3edecf7f2edeaf6f5f1eef8f9f7f4f5f4f2eff3f2efeef5f3
f0ededeceae8ecececece9eae9e8e9e8e7e8eaebeceddbdee3e9f5efece9f4efeeeef3eff1f2f3f1f0f0efefefefedececebf0efeeeeede
9e9eae4e4e5e8eceae7e7ecedeeeeeae9e9eaebece9e7f5f3f4f5f4f2f0f0f5f2f0eef8f7f7f6f7f5f6f7f7f7f6f5f8f7f6f6fefefffcfa
f9f8f6f8fafbfcfd0000fe00fffaf7fafafbfaff00000300fefbfbfffefdfe010201000a0802fe05030100070503020a0702010a0807070
a090807070401ff0e0d07041311100f16141315101113151315110e1e1b17111e1d1d1d1a1718181a191714191a1c1c1e21211f1e1c1916
1f1917181e18131217191a1b1d1c1d201b1d1e1c1d1c1c1914171b2012151a1e1f2123241e252a2e262d32321a1b1d1e1716181c1f23272
6191c201e2f383c3f1c2228281a1d2021171c21251d2228291c202121191b1b1b1c1f1e1d1c1c1919171d202013181b1c111515150f1215
160c1014170405080904060a0e0b0d1111000000fe07060706090a0908050506050506060803060503fd020300fbfe0005f8f9f9fbf4f5f
3f2f5f6f5f6fcfbf9f8fdfdfaf7f6f7f8f8f2f1f2f2e9e9e7e6edeeeeecf3f6f6f5edf1f1eeeaebeeedeceae9e7ece6e4e5eae8e6e6ecea
e8e5ecebe7e6e8e6e6e8e9e9e8eae8e9e7e6e8e9e9eaeff0f0efeceae7e5e8e6e6e6eeedebe8f4f2eeebf1efedecefefefefeaeaeae9ece
be9e9ecefefebe9e9e7e6e8e8e6e5efeeebe9ebecebeae8e9eae9f5f4f4f3f0f1f3f2f0f2f5f7f4f6f9fcf6f5f7fcf4f2f6faf7f7f9fbff
fbf9f8f6f6f9fefbfcfbfefafafc00f5f8fe03fbfc000102fffcfcfaf9f9fbfffefdfefffefefcfcfdfefc0001010105040402000000010
705030306040303feff02050607090a0c09080915151210171614100b0d1212101112111b1919191718151213141412191716141d191716
161616141d211e1b191d1e1a191b1b1b222524221a1b1c1e1a1c201f1e1b1a191c1a1a1a232123242f2c2a27302f2c2c212526252124242
427282b2f1d1e22273e3d404626272b2e20201d1e2724211e28282726222324261e201f1e1b1e1f23191e1f1f1f1d1c1e1b1d1d1c131212
1619171a1a1c1e211e0f1113101215161414181716feff000106090c0e08090a100606090b080a0d1002020206fefd020306070809fbfdf
dfff2f3fafdf9fafcfdf9faf9f7f5f6f7f7f5f2f0f0f2edeae8e6e4e3e2edebedebf4f3f1eee9e8e9e9edeceeebe7e7e8e7e5e4e3e4e7e5
e4e5e6e6e5e3e7e8e9e7ebe9e8e4ebebe9e7e5e4e5e5ebece9e6edebe9e6e0dedddee5e3e4e6e5e5e8ebecebeaebeceae9eaebeaeaeceae
cedeceaedeeeceaebeeede6e9e9e9e6e8e8e7e8e7e8eae6e5e6e9e8e7e9ebf4f4f5f4f3f2f2f2f8f9f9f8fcfcfcfc0000fffdfdfffefefd
fefefdfcff00fd00fffefefeff0000000101040505030703010203fcff0102fbfe0004ff03070bfbfe0309f9fa000500ff0001050404010
20305060404030304040405060506080b0804030601fefd0a0503040c0704020d0601000b0806061815120d110f0d08120f0c0a110f0b0a
1613110d171615121717161717161411191815151e1916131d1d19151c1a1918191a17181c1b1b1826262827282829292928292a221e1c1
d2424221e2e2d2928292826224745403d2c28231f1f2223221f212220252523222320212220222123211e1d1e1e1d1d1c1e1f1f221c1c1e
21191f22251c1d1f1e1e1c1d1c11100f10110f0f1215141310020204060c0c0c0f12121113111315151211110e080a08070606060509090
8070000fefd00fffdfcfefaf5f5f8f9f8f8f8f6f8fbf2f6f6f7eaececeae5e8e9e8eaebebebedefefefe8e7e8e8eae9eae9e5e6e6e5e3e5
e4e5e5e4e5e7e2e1dfe1e6e7e9eae5e8e9ece9eef0f0e8ebedede9edf1f2e6eaf0f5dee2e7ece5e6e5e4e9e6e1e3eae8e6eaeaeeeff0eef
3f6f7eaeff1f4ebeff1f1e9eceef0e7eaeceee6ebedf1ecf0f1f3ebeef1f2edeeedeef2efeef1efededeff4f5f4f1fafbfaf8fcfaf8f8fc
fcf8f8fbfbfaf9fafafbfdfdfdfdfffefdfbfb02000000070703010405050505070a09080a09080e0d0d0b0a0907070809080b020507080
10104060504020300ff0003040405080b08060305070400fcfefefc0305030200000102fdfcfcfd06060505090806050405060508070404
080807030908080a110f100e171514121214141416171715151512121310100c1715151318191613140f1012231f1a1a25211d1c2928242
21f1b18161e1d1c1a2a2c2c29211f1f1b3d3b3a39222325242424241d201e1e2022242727211e1e1f23221e1d222223252122211e272524
2224222121251e1c1d1f1b1c1d1e1d1f231317171817151514101117190a0b0d0c10100e0e14141211151412100a0b0d0f0406070903060
60706060503fafdfe00f9f9f8f9f6f9fbfcf7fafafcfcfcfbfdf7f9f8f8e7eceff1e5e6e9ebeaebedeeedeff0f2e7e8eaece8eaeff1e8eb
f0f1e5e9ecedeaeeecebe3e8eaeaebeeeceaebebe9e9ebe9e9ecebece9eaf0f0eeeef4f4f1f0edececeee3e3e5eae6eaeceeedefeae6eee
deef0f7f5fbfcf2f2f1eff0f0f2f3efefeceaebe8e7e7eeedecedefeff1f4f0edecf0ececeeeef2f5f6f9eff0f3f6eeeff4f8f4f7fbfef6
f7f7f9f8fbfbfbfcfe0000fe000101ff020505fd00020301030607040609090607070209070703070808060e0e0d0e080909070b0a07060
80601fc0300fbff0002050806090c0805fdf8f700000102fefaf5f4f8f7fc01fdfbfdfe00fefafbfcfc000201fefbfd0100feff01fefbfb
00fef9f90003080d0702fdfe0a05000211111213141512131211111312151716080910151213161a0f0f1117141616151c1a1a19201f1e1
8221f1c18181817171c1d1c1a26201d1c191514103a36291a26211d1c1b1a1d1d24221e1b27211d1d232626202225251e241f1c1d1e1b18
152121202026282a2825272924252929252b2c2e271c1c1e191f2c302b1c1b1e1d0e1721290f141915121212110f11110e0f100f0d0c0f0
c0a090d0e0f05080c0efffe0003fafafbfdfdfe00fffcfcfefffffffdfbf8f9fcfbf2f2f5f8ededeff0efefefeff2f2f1f1f0f5f6f5f3f1
f2f2efeeeff1ecebebebe9e8e5e6e8e6e7e6e8e8ebe9e9e9eae9ebebebede9eaebeaecedf0efedecededeeeef0f1ebeae9e9edeceeefe7e
df4f7f1f1efeefaf3f0f0eeeff2f3f3f2f0f0eaf0f1f2ebf0f4f5f1f3f4f3f6f3f2f2f2f5f6f7eeeff1f2f8f8f8faf7f6f7f9fafaf9f9fd
fafafcfdfefffefcfdff01ffff00010000030404030303020202ff0808090a09090c0f00fe020601000406050502020e0a0805080906040
4060504fbfd00ff040908060402000002ffff00fafdfe00fefcfcfef4fafcfe0100fe00fefe0003fafcfd000300fefe01070a0c02090c0d
0005090cfc0003070703050903080d11060a0f12121311101312111012100e0f14100f0f1614111019140f0d1714100d1615120c1a1b181
21715120d1a181513191a150f1716120a1c1a17150f0d0a080e0604031d1a15101c19140f1c18150d1f1f1e191a15110f161311101d1c1c
1b17181614201f1b1726231f1a2322221f1f1d1d1d27221f1c1a19191a1f1815151c1a181927252220110c0d0d131212110c0e10110d0e0
d0a090e0c070f100d090f0e0a090505030100020203fefcff00fffffefff9fbfe03fbfbfe00f9faf8f9f2f6f7f7eceff0f3f3f7fafdf4f6
f7f9f5f7f7f8f3f5f7f8f1f7f8f9e7eceef2e8ebedf2ebeaeff3eaeaebefecedeeefe9ebecefedebedefedeef2f6f2f0eff1ebe7e6e4f0e
feeeef8f8f7f7f1f4f3f3f1f3f5f6f3f4f4f6f1f1f0f1f1f0ededf2f1eff0f3f2f1f0f4f6f7f7f5f5f3f6f3f4f4f4fafafcfdfcfaf9f7fb
fbfdfdffff0000fffdfdfd02010000030203030505070604040607000002020804fffe0e08030009090705090a0a0601040504050505060
204040402010204000203030709090802020302000001010104070a000407070003090e030a0d100a121617080e11150105080913161814
10131714111314120d1014130f10121413121211131112100f1111111414130e12141410100f0e0a0f0e090411110d050e0d07020503020
20b080705050202050f0d0806060201020300feff0f06020203ffff0000fefbfa0a0806060b0b0b0a09050401120a07060d0c0703100d0a
071813100f110f0b08141311101513110f19150f0917120e0e16140f0d1818161413131313181614131b1716150b060504100c07050f0a0
60506040407020103050703030708090a0f0101040a0102010501010104fe00020604060a100305080df8fe0105f7fafe00f6fafe00feff
fffffafbfbfdf9fc0000f9f8f9fcf9fafbfef4f6f8f8f7fbf8f8f6faf9f9f4f7f9f9f1f5f7f7f1f4f2f0f1f3f4f7f8f7f6f6f4f4f1efe5e
9edf1eff1f3f5f5f6f6f9f3f4f6f6f9fcfdfcf7f8fafcf2f3f5f4eff2f3f2f0f1f1f3f1f3f4f8f8fafbfdf8fafafaf3f4f5f6fe00fffef8
f8fd00fdfe020400010404fefefe0000fcfaf90200fefc0603020005020000000000fffefeff00fdfdfeff0200ff00010000010101ff010
60807060303020305050304020100ff0604040400feff02020405070c0b0a090909070313130f0a1213120f14141211171a16150a09090b
121313141413141612100e0d13110f0e14100c09100d09080e09070612110f0a0b0808070e0904010a0a06010200fffe01ff01000100fef
cfffdfbfb01000000050302000200fffe00fdfbfc000202000305050601010000fcfe00ff0506080605030204fefefefc05040303000205
05050404000b080701070605030f0d0b090c0d0d0e07040301100d08010c090605120f0a0812100a06100c0c0e1612111005030000080a0
a0a070809070805040405050504090a0806131412101013131107090a0b07090b0a08090a0c100f0c0d10141413070c0e0f010305080102
0303000207090001020301030607fe000103fefffe00f9fafcfdf7f9f9fbf7fafbfdfbf9fbfbf8f8fbfdf1f4f7f9f7f9f9f8f7f9f8f8eef
1eff0f5f9fcfef9fd0104fdff0102f9fbfdfefbfe0000fdff0000f5f7fcfef3f6fc00f9fe0001fe00ff00fdff0003fd000203f7fafd00fb
fbfd0101010205030000050202050902020104f9fbfd01fbfbfbfe0201000300000000ff00000002060808000104050000ff00020303010
30302ff050404030204050504050504fefeff000405090b040504050808080a0c0e0e0e05070708080708080a090a0a0f0e0d0c130e0d0c
0e0d0a0515140f0b14120b070e0d0b070c0c080408070604080805010502fffb0602fffc0301fefafefdfaf7fdf7f6f4fffcf9f300fbf7f
5faf4f1f0fbfaf9f400fdf9f400fcfbf7fcfafbf9fcf9f6f3fcf7f5f60200fdfa0001fffcfdfcf9f7050300fd00fcfafaf9f8f7f6020101
fe02fffbf9fffcfbf9fffdfcfa01fefaf80500fcf90d08040000fefcfcfefcfdfb0200fdfe0502fdfb020200000f0d080410111113ff000
3050a0c0a05060506030305060704060708060707060f0c0a09100d0a070b0c0b0a0a0606060d0d0c0a0e0f0f0e0f0e0e10100d0c0d0905
030303020203080b0a0a05080706040605060202010500040508fe0003070004060700010408fbfe020600020306fcff0003f9fb0209f9f
d050af2f80107fefdfeff0301010103010000fefdff02000003050000020501000204010306080205070702050707040607080405050704
04040507090a0b06060503090c09060c0c0a0a0402020204040405010102030402000200010002000101020501020406070908010507090
1030403fd000103040507080504040600010406010100000a090909060504030b0c0d0e0e0d0c0e080e0c0a09090907070401000b0a0906
0a08070702000203090608080708090805040404030402ff02020100fffefffefdfdfefdfbfcfc00f8f8f6f6f4f3f2f1f2edededf2efede
cf5f4f3f3f2f4f4f2efedeeeef3f3f3f2f5f0f1f2f4eeeff1f4f6f5f1f8f9f8f6f9f9f8f6fafaf7f4f3f0eceaf8f6f3f0faf9f9f6f3f3f4
f5f7f3f5f7f7f7f6f4f6f2f0eef6f4f3f2f6f6f4f4f9f9faf7fefaf7f2f9f6f3eff9f8f9f9fdfaf8f7fcfaf9f8fffdfbf903fefefe110f0
d0a03020001fffdfbfe00fefefe070606060503020203020000090908080500fffd0804020007070708090606071111100f1113120f0c0d
0c09070a0c0b07090c0e080c0d0f0506090d0a0e1111080f11120b1013120b0f1415080d10140c0f12140a0e1213090d0e0f080c0f12101
314140d0c0e0f0c0a0704000002040504050404070b0d0204070b07070808060505060405070a090808080708090a0808090a0a0d0e0c09
0c0c0c050505040d0d0c0903040303050606070c0b0a0905070909040405090402030403050405030303020202020106030203080405050
8060201030100ff040201000806050006070603050201000100fffd0a0a090a030202030c0603010f0d0708080504060401010000fefeff
020101030601fffd02fefbf90500fbf806fffbf801fffdfdfcfaf9fafbf8f8f9fbf7f6f9fdfaf8f50000faf5f5f5f3f2f2f1f2f4f0f0f1f
0ededeef0f3f1f2f3f1edeeededf1f2f1f2f4f4f1f2f3f2f0eff1f2f2efeff0eff2f2f2f4f3f3f6f6f1f1f2f2ebe9e5e6f1f2eeeef6f5f0
eff3f4f2f1f8fafaf8f3f4f7f6f1f2f2eff2f2f1f0f3f5f5f5f6f7f5f1eef0f1efebe9e9eaf7f6f4f0f8f8f4eff7f6f6f5fbfdfef902040
2ff0a0a07050100fcf9fe020403fcfe00000508070603030301ff00020007070705ff00020101040708090a0a08080607070e0f0e0d0b0a
0a0a0507091009090c0f0e0e0c0c0f1010110f0e0b091112121112141313121213151412101015151415161616161413151310121314131
41212151412100f1113130304090f07080806060608080e0f12130d0c0d0d08090a0d080a100f0a0907080809090a0a0d100f0a09080d08
07080f0b0d0e10060a0d0e090c0e1004090c0c080b0e0e090a0b0d0d0e100f0d0e0d0d03050508050607090406070602020301040404040
60505040100fefeff00000200000000fefd00030201030301ffff00fcf9f9fc0a0a070606050604010000000c0d09060706040101010101
0203000005040200fefefffcfdfefcf9faf8f8f8f7f8f9fbfdfdfefdfcfdfdfdfafaf9f9fcfcfbf7f5f3f0eff3f2f0eef5f3f1eff5f7f5f
4f1efeff0f2f2f0eff6f1efefeeebebecefeeefeceeecece9eeeae9e7f0eeeceaeceaeaebf1edececf7f4f2eef1efeeede4e4e2e1f1f2f2
f0eff3f5f4edeaebedf6f5f5f5f6f4f5f2eeeff1f1eff0f2f4f1f0efecedece8e5edeeeeece7e7e5e6e8e6e7ebe9e8e9e9f1f0efeff4f2e
feffdfcf8f302020000f5f4f4f50000ff00ffffff0000fefdff00fefbfafefbf8f601fdfcfdfdfbf9f8050200fe05020000070605020d0c
0704090605070f0f0d0b100d0c090c0b0d0c1012120f080c0e0d0f0e100f1315141418191813101413121619181617171817100f0f12141
415151212111011111313151416141312181d05040304090b090813110c090e0f11110d0f10100f0e0e0f0c0f10100c0f11120e0f0f0d10
110e0c1113120f1211100e0f0f0f11131615150c0c0d0d0e0f0e0d0c1011110b08090809070a0a090a090c0704020504030303ff0003030
20101010405050300060605030302ffff0002020406080906090b0904070a0a00040502070501000300fffd0101000003020200fffffdfd
000000fffffffcfd00020200fcff0201f7f8f8f8f9fafaf9fdfefbfafbfaf9fbfcfbf8f7f9fcfbfcf6f6f6f7eeedeef0eceef1f6eef0f2f
4f6f9fbf8f4f8f7f7f0f4f7f7f3f6f7f6eef2f5f3ece9eae9e8e8eaeae7eaedeceae9eaeaeae9eae9ebeaecedeae7e7e9ecebebece1e4e6
e7eeeaeaebf3efefefefeeedeef3eeececf1edebebefeeeceaefecebeceaeaedf0e5e9eff3e9ebedeee8e8e8e8ececeeefe8e5e4e5edebe
aebeeefedecf0f1f1f3fefbf9fbf6f4f4f3fffcf8f7fdf9f8f900fffdfbf8f8f7f5f7f8faf7fdfdfcfcf8f5f5f5fcfdfdfe0101010001ff
fdfd03050807080708070a0a0a0c090909090d0e0f0e0c0a0c0e090a10120f0f111312110f0f1110100f1012120f12110f0e16141210111
20f0d141311101212131314131212110d0b0d221e1c1a060c10100607070609090a0a100d0a07100d0c080d0d0e1011100f0d100e0c0b0a
070507090706050c0806020f0d0d0a12120d0812100d090a0706060b0805030b060100050200ff080300ff0804fffd07070605020100030
0fdfcfe000001010201010202ff0000fbf9fbff00fcfdfe060401010502020406010000fefcf9f8fffffcfafbfaf7f6fffcf9f8fffdfafc
fbf8f7f7fefbfaf8fcfcfbf8fffcfcf900fcf8f7f5f5f5f7f5f3f3f4f7f6f6f6fafafbfbf6f5f6f9faf8f9f9f7f8f7f8f3f2f2f0f7f8f7f
7f3f2f4f8f6f3f4f5f4f1f0f0f3f0f2f5f3f3f6f7f1efeff1e9eaedf1eaeaeef3eceaeaebececf0f1edededeeeeeff1f3eef1f4f6eef0f2
f2e7e5e4e4eff1f1f1f2f4f5f3f0f0eeebeff2f1f1f0f2f3f3ebebedeeedf0f1f1f3f3f4f2f5f3f4f3ededf0f2e9e8eaecf1f1f3f3e9ede
fefececedf0eceef1f0f4f5f6fafefffffff7f8f7f8fafe0100fafafaf8fbfbfaf9f7fafdfef7f7fafdfeffff00f8fc0000fe0002020103
0402ff03050707060809080a080a0f1012110a0c0f0f09090b0c0f0f0f11100d0a0b120f0c090d0e0d0e1111120f0c0d0d0a0f111312121
2110e0d0d0c091012121012100d0d100f0c0c0c0d0d10140f0a0d1114151205090b0b0b0e110f0a0d101006060b100f0f11120e0f0f0e0b
0c0d0a090c0e0a0708080700ff01020702010303000000060200020403040602020304000001050002030300000000fbfbfdff040202010
1010202fdfbf9fbfffdfbfb0200fffefffefbfb01fffffefffffdfefefcfc00030101000000fffff4f1f2f5fbfe0000f8f9fafaf7f6f6f7
fefefefefafbfbfbf6f7f7f9f6f5f6f7f7f3f4f7f5f3f4f6f6f7f6f5f6f5f6f5f5f4f6f8fdfcfbfbfafbfaf9f8f9fbfbf7f8fafdf1f3f6f
8f7f5f6f8fafcfaf9f7f7f9f9f3f5f6f8f6f6f6f7f9fbfcfaf1f3f4f0f4f6f6f4f5f3f1f0edededeef1f0eeeeeff1f4f5f4f4f4f6f7f6f4
f3f4f4f0ede3e0dedeeeedecedf4f3f3f1eae8eaeaf1f0f0eef3f4f2f0ededededeeedeaeaf0f0eeecefeae8eaf2f3f1eeededeae8f1ede
9e7edecebe9f0f0eeeeeeebeceefbfbf7f4ff00fffff7f6f4f30000fffdf8f9f9faf7f7f9fefcfdff00fefffefc020200ff020200fd0303
00fe00fefefd060602000806030008060505100e0e0d0f100d0a0a0807081212110e0a0b0a06090a0c0c0e0f0e0c0f0f0e0c0a090908111
00f0c0e0e100f080a0d0f0f0f10110d1011120c0f121514181a19141a1e230a08090e080808090e0a09070e0a070513130f0a13110f0e0e
0e0e0e090809070905040305040404040605060303010204060603070a0a05060200fe050300ff050402010201010003030301020204040
100000101fffe00fdfcfafafdfdfcfbfefcfefdff00fffd00fffcf8fdfefdfc0104030300010301fe000100fafdfffd00fefcfcfbfcfbfa
fafbfcfefefdfbfbfbf9f7f7f9f9f7f9f7f5f5f7faf9f8f8fafcfcfef7fafbfaf7fafcfdf9fafcfcfbfbf9f7f7f4f4f4fbf9f8f7fcf8f5f
6f7f5f0eff8f8f5f2f9f9f6f2fafcfe00fafefdfaf5f7f7f6f7f8f9fbedeff5f8f3f4f6f9f3f8fcfff0f5f9fcf0f0f2f3f6f3f3f3f8f9fa
faf3f4f7f9edf2f6f7e3e7ebeaedeeeff1f2f3f4f5edeff0efefeef0f2f0efeff1edeff0edeaeaeaeae9e9ebedeaebeef1eae9eaf0e5e5e
6e6e9ecefede6e6e5e8edececeeefefefeef4f3f4f4fe000000f3f6f7f7fcfcfbfdfafbfd0000000000fdfdfc00fcfefffffdff0002f9f8
fafefbfcfd00fefe0000fefdfe0100010305060606060b0706060607070a090a0a0a0c0d0c0b040405070a0b0b0b0807070907070709080
809090806070a0c0a0c0e0d0e10111010101110111214171818191a19171428231c150e0d0a05080703ff0708060404050505060302010a
0805030a09060208050301030301010504020305060706030505050201010103020203ffffff00fffefefd020100ff000000ff00fefffe0
301ffff0103020202050303fafcfd00fd000304fe000407fbfdfd00f9fbfe00fbfbfbfd02010001fffcfd00fdf8f9fcfaf7f6f7fbfcff00
fafbfe00fffdfefffbfc0001f9fbfefef9fafafbfbfcfcfafafbfcfbfbfbfbfbf9f9f8f9fcfcfcfcfcfbf9f7f7f9fcfdf4f5f7f9f8f7f9f
af6f7f8f8f1f1f2f2f3f4f3f1f2f5f7f5fdfcf6f2f5f2f1eff5f6f8f7fafaf9f9f8f6f5f5fbfdfdfeffffff03fbf7f7faf3f3f3f6f4f5f6
f8faf9f7f9fbfbfaf9f7f7f7f8eae8e7e7f3f5f4f3f7f8f9faf0eff0f2f3f5f6f8f2f3f2f5eaeaedefeaedeff3eeefeff2f2f3f1f0f5f6f
3efe9ebebebededededeaededeef1f2f0f0eeececeff6f7f8fafffe0001f6f7f9f9000101010101010000fffeff01000000fdfeff010504
0301000201fd0001020401010506040607080507090e07070705090a0d0a0a0806050906040009080606060706060a0907070a090808090
8070807060606090705070c0909090e0704061010101115171716191b1a18141516161719191cfef7f5f6fbf7f4f300fefbf802fffcfb00
ffff0001fffffe0100ffff00fffefc0000fffc030301fe050503010303020102020201020102020000fefdfcfcfdfdff0000fffefdfdfcf
ffffefe000000ff010203020203040400fffffe02ff0001080808070005050501010303000305040406050502040304ff010101fafcfbf8
0203020002040402ff00fefd0300ff01fffdfcfefaf9fcfdfbfcfdfefd000202fd000103fafafdfffcfcfdfdf7fbff02fdfe0000fd00010
1fcfcff01f9fafdfff5f8fbfbf1f5f8f9f2f3f8fcf1f3f7faf0f0f2f4f5f3f4f5fbfdfdfef6f8fbfdfdfefe0004030100fcfaf9fbf6f8f9
f8fafcfcfbfafcfbfcfbfcfdfdf6f4f5f6e4e3e3e7f3f3f3f1fcfefdfbf6f7f8f6f9faf9faf8f9f8f7efefeff1f4f5f5f4f4f6f7f8eff1f
3f6ebecf0f3ebebeceef0f1f2f2f1f4f4f3f2f6f9f9f1f2f5f7fbfafcfd04050607f9f8f8fb01ff0000fffefdfefefffdff0100feff0204
040303040405fcfcff000502000106060609090a08090f0e0908040404060703010204010000fffdfbfb060401fe0404020106060606090
706060807060906070809070708070907080a0808090a100d0c0d110f0e0e15141214171513131d231b16fafcf9f8f1f1efeff6f2f1f1fa
f8f6f7fffdfbf900fdf8f6fefaf6f6f9f7f7f8f9f6f5f6faf8f6f7fdfdfcfbfdfbfafbfefcfbf9020201fffcfbfcfefcfdfeffff000101f
e000001feff0000fefefe000000000004030301ff00000003030202080909060303050401ff010402000204050808070608090600000102
f8f8fc00fefeff01fffdfcfdfd00ffff0306040400040403ff000104feff00020405060504070605fe00ff00fefdfeff00fefbfc0000000
3000102030202030302020303fbfcfe00fafcff00fdff0102fd000100f7fafcfcf8fafafafefefefefffffdfc00000001fefdfefffcfafc
faf8f8f7f9faf9f8f8fdfdfcfafcfbfafbf7f8f9f9e9ebe8e9eff0f3f4f8f9fafaf7f7f9f8fd0000fef7f9fdfef5f7f8f6f3f5f9fbf8f8f
afcf9fafcfdf6f8fafbf1f1f2f3f3f7f8faf3f4f5f4f9f7f8f7f8f9f7f6fdfdfefe08090707fe00fffd0000020500010203000204040001
020403050304080a0d0b01040709060a0d0e0a0f11120d1016130a0d110f080908080504060600fefcfbfcfcfbfafcfbfafc02fffdfb060
2fffe070402030907030509060706080707090c090709090805040c0c0a0a0c08060812100905120d07060d0a06064300cc000f0000009b
9a999796959392918f8e8d8b8a898786858382817f7e7d7b7a797776757372716f6e6d6b6a696766656362615f5e5d5b5a5957565552515
04e4d4c4a49484645444241403e3d3c3a39383635343231302e2d2c2a29282625242221201e1d1c1a19181615141211100e0d0c0a090806
0d7200000ca3100b12208ea21c83d44cd3235915656118a66dd95469d45551d72549d19265d0756d9de6791d3569d9e67999d451228871d
ec66dd7b6695cb769d5453918f65094f45496c631cc645dd7d43845911800a130
''')
calibrate_prg=unhex('''
027800a10223000000200008000020008000000100320074000000008020200400242000005020773628200100302001003c20800008213
8000c210000482107004c210000582000005c20000060200000682005006c20014970200141742001887820018084202000942001809c20
0902a0200b19b4200300b8203b04bc201400c0200200c4200100c82002003300100000000080cc200000f503d0200000a10132004400000
00080dc20e803e0206401e420d002e8200001f0200500f8200500fc200000b8203a00000804001408000008080000080800001408300008
080000140831001c081a0032000c0000000080501101004c111e00340078010000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000010232e10232e10232c10232c10232c01065010250101000
007c8078c06ff0000000000004f80006d0300280307030990098db00b90880991858e08c1810b9190910ac1b8928a0993878a890b938889
8908c88191890ac8889289099a818a890b9a88898908d08191890ad08892890802818a095a810a0288890b5a8808d98189890ad99089890
95e8289890b5e88898908e18189890ae190898909648289890b648889096e8108e981890b6e880ae99091b9096f828a8f0b6f88918908f0
818a890af090898909768289910b76b8918a08f88792910af8888a92097c81898a0b7c09018089890b01888991097f8189920b7f0908808
9920b088889920c07030307200402000000002f000400700000002900040070000000350004008000000017000000440004000100000030
00140002000000ff0000008d002007ff000000950030074300cc000f0000009b9a999796959392918f8e8d8b8a898786858382817f7e7d7
b7a797776757372716f6e6d6b6a696766656362615f5e5d5b5a595756555251504e4d4c4a49484645444241403e3d3c3a39383635343231
302e2d2c2a29282625242221201e1d1c1a19181615141211100e0d0c0a0908060d7200000ca3100b12208ea21c83d44cd3235915656118a
66dd95469d45551d72549d19265d0756d9de6791d3569d9e67999d451228871dec66dd7b6695cb769d5453918f65094f45496c631cc645d
d7d43845911800a130
''')