diff --git a/src/types/StoredValue.test.ts b/src/types/StoredValue.test.ts new file mode 100644 index 00000000..a3347b83 --- /dev/null +++ b/src/types/StoredValue.test.ts @@ -0,0 +1,38 @@ +import { TypedJSON } from 'typedjson'; +import { StoredValue } from './StoredValue'; +import { expect } from "chai"; + +describe('Test StoredValue', () => { + it('should parse json to StoredValue', async () => { + const json = { + jsonrpc: '2.0', + id: '1', + result: { + api_version: '1.5.8', + stored_value: { + CLValue: { + cl_type: { + Map: { + key: 'String', + value: { + List: { + Tuple2: ['String', 'Any'] + } + } + } + }, + bytes: + '080000000a0000004665654368616e6765640100000003000000666565081000000046656557616c6c65744368616e676564010000000a0000006665655f77616c6c65740b0d0000004f666665724163636570746564040000000a000000636f6c6c656374696f6e0b08000000746f6b656e5f69640a070000006f6666657265720b050000006f776e65720b0d0000004f6666657243616e63656c6564030000000a000000636f6c6c656374696f6e0b08000000746f6b656e5f69640a070000006f6666657265720b0d000000546f6b656e44656c6973746564020000000a000000636f6c6c656374696f6e0b08000000746f6b656e5f69640a0b000000546f6b656e4c6973746564040000000a000000636f6c6c656374696f6e0b08000000746f6b656e5f69640a050000006f776e65720b050000007072696365080c000000546f6b656e4f666665726564050000000a000000636f6c6c656374696f6e0b08000000746f6b656e5f69640a070000006f6666657265720b05000000707269636508140000006164646974696f6e616c5f726563697069656e740d0b09000000546f6b656e536f6c64040000000a000000636f6c6c656374696f6e0b08000000746f6b656e5f69640a0500000062757965720b140000006164646974696f6e616c5f726563697069656e740d0b', + parsed: null + } + }, + merkle_proof: + '0200000001a7b2de3119f20c32ec19a103359e7b2942159a3198bde29687b497c22a9d27bc03154ff59b5f9feec42d3a418058d66badcb2121dc3ffb2e3cf92596bf5aafbc88d5809bc05c0ba4b9f529e80e9b0ffef22c275e678592dd0218bc7c1f790cf9c60f000000080000005f5f6576656e74730206d6dd9acb04443784941a613b2ac5deb1df498a1d0263bf4b6dcb43b44362b707140000005f5f6576656e74735f6365735f76657273696f6e02d27c0c93a49491abe21d6a8b9ccae7a13edd3c23a3efb41bb8f0ac33fe704433070f0000005f5f6576656e74735f6c656e67746802db0833cb57063c081a5d6a899e3125ee9dd647dea372f584e36de67aad4a414c070f0000005f5f6576656e74735f736368656d6102872e8c4e639cef59028049f64184b42d76fc48265420a64dc5370d82261071f6070600000061646d696e73028a13bcec5b48f543c2ffa0e8ce14cce5e83cd3fd779b8d29564e88102ca3d974070800000064656c697374657202fafb0ec2e009846ad6ea6d42dea09a3704ab043cf912d0a148fc39e55f463c43070d0000006465706f7369745f7075727365022a9543b8cab58245487a5da8c08418b2cfd35db69aab2ac4be9434c3e9e6ad42070300000066656502b3c30c2663774c03ec3b810abeb7ab8046522b50ad35faab30bc7be0850873a2070a0000006665655f77616c6c6574022bbf7279dc81632527d92ff7111c4ca572df5beb8e138c912d03a2332e4e0835070d0000006c69737465645f746f6b656e7302b8dcf514f6dd7e22b171534bb4586522ba5c9b4aa15b285c15c5d1992e1ff45a070e0000006f6666657265645f746f6b656e73020097f30022f1ea817ca1e55660b2bd39266c5bb5f8ba718391d689fca13c10f5070e00000070726f78795f636f6e7472616374026026fb7d6903871782c7de8959c89d5e8ec29225d02e48ed9e00e9d715033917070d00000070757273655f62616c616e63650298183579d9a37ca83047b67b5afa370833cf29e8132c29bcab950b223d00899907100000007265656e7472616e63795f677561726402e92ff1514e26e282ebc8727aa9c10f14db1f03a26c943cc71d98a249e79f2f750716000000726567697374657265645f636f6c6c656374696f6e7302ae0b98c6ab18853dcd93fe64e438d353be53df9aad5032c1f44e036bcf86186707110000000c0000006163636570745f6f666665720c0000006163636570745f6f66666572050000000a000000636f6c6c656374696f6e0b070000006f6666657265720b08000000746f6b656e5f69640a0700000076657273696f6e040b0000006c6f6f6b75705f6d6f646503090101090000006275795f746f6b656e090000006275795f746f6b656e060000000a000000636f6c6c656374696f6e0b08000000746f6b656e5f69640a140000006164646974696f6e616c5f726563697069656e740d0b06000000616d6f756e74080700000076657273696f6e040b0000006c6f6f6b75705f6d6f6465030901010c00000063616e63656c5f6f666665720c00000063616e63656c5f6f66666572020000000a000000636f6c6c656374696f6e0b06000000746f6b656e730e0a0901010b000000636f6e7374727563746f720b000000636f6e7374727563746f72010000000a0000006665655f77616c6c65740b0902010000000b000000636f6e7374727563746f72010c00000064656c6973745f746f6b656e0c00000064656c6973745f746f6b656e020000000a000000636f6c6c656374696f6e0b06000000746f6b656e730e0a090101110000006765745f6465706f7369745f7075727365110000006765745f6465706f7369745f7075727365000000000c01010a0000006c6973745f746f6b656e0a0000006c6973745f746f6b656e050000000a000000636f6c6c656374696f6e0b06000000746f6b656e73110a080700000076657273696f6e040a000000746f6b656e5f74797065030d000000746f6b656e5f69645f74797065030901010a0000006d616b655f6f666665720a0000006d616b655f6f66666572070000000a000000636f6c6c656374696f6e0b06000000746f6b656e73110a08140000006164646974696f6e616c5f726563697069656e740d0b06000000616d6f756e74080a000000746f6b656e5f74797065030d000000746f6b656e5f69645f74797065030b0000006c6f6f6b75705f6d6f6465030901010e00000070726f78795f636f6e74726163740e00000070726f78795f636f6e7472616374000000000d0b01010e00000072656769737465725f61646d696e0e00000072656769737465725f61646d696e010000000500000061646d696e0b0901011100000072656769737465725f64656c69737465721100000072656769737465725f64656c6973746572010000000800000064656c69737465720b0901011700000072656769737465725f70726f78795f636f6e74726163741700000072656769737465725f70726f78795f636f6e7472616374010000000e00000070726f78795f636f6e74726163740b0901010f00000072656d6f76655f64656c69737465720f00000072656d6f76655f64656c697374657200000000090101070000007365745f666565070000007365745f6665650100000003000000666565080901010e0000007365745f6665655f77616c6c65740e0000007365745f6665655f77616c6c6574010000000a0000006665655f77616c6c65740b09010110000000756e72656769737465725f61646d696e10000000756e72656769737465725f61646d696e010000000500000061646d696e0b09010119000000756e72656769737465725f70726f78795f636f6e747261637419000000756e72656769737465725f70726f78795f636f6e74726163740000000009010101000000040000000f0000000300000000b2810000000000a4e5975ae9fc2f2fde26ed883d6407d5bf18977ee1dd9716546a7037fb6311710200e7da9f7f78c2843e4f0c9349520674efe0f28e595bbe0cabc42cbb0d01e5692806007f1a328112f5e7425ff289f3ba7300825fa0478c65d5f6bbc40dbede7398435f0a00e52cb90f6eee4036bf917f0ff3aaf5e96162403adf07e2da870397342c4003900b01725149b2279c314c0100e1a3e81a92e40406a15da027408cf790950dab5789f2100161df7647310c7771667b16c537b347fcc70b0e7e111d2505a31b45b9dc47c095110017301492eca2168acd41673f6298c6ad31a01813fc8f6b188b843bc87f9da6a31300d35d83552eb8a2f4fb2fc6878e8653ae9106257e4822fce0acc7ddf03ee52ba015001ffc7361c528dec4fe52a9050df56b7ae9342c18b82df645d3cf29b7f3d81f3316019f2241c98d44d33cab10c1900fbe157c94014a26fe9fb1e267d2a9f3361536c6190069c6c5899ab14e54b80302a2c5a56de5f80152979230408fb55686d207ccfdbf1a008726c615bb8ee5eae2ee9ffcc118f52f335102b8050ba2f7c7bb6ee8a6efccc31b013c3d38ed653b6ad79f484cc966dd069169fa9cf1254891e6c77bf547d056f48a1c0082e72b2d5ff01f546c9e21ce42a035953a075e53c053b3e0df2b563dbf12478b1e006fee7e93de3a5adba174f585025bd66568dfb2e011b955d39c8eb9a1d07bf6241f00cd25a3c9bb130574a017974d1c8c8f290f3ac2e4396171edc0552914e225d6752001ec7dfe27c913a10f840bb071d587dbc1070efc8a5dbabdd5112aed1819dea1ca2101dd806fea1fb3249cf7e67a1fd388ebae66693421c89d70be41f9f266d56f7040220050bc36692dcc83ae6d3e15912c49ac9fd032de165ce183cb3fd9b58bb4f6ddef23000bd67e56487f5a78421a409fba6910f2d4633b9f46bdff7e772f18ada708977426014fd2e31a42bd278666f6bf01b32154c29e6b9fb5465919d2affe7ebf0f5924622c01ffacedc0e967ab29ea4b481c4470bcd4068e15244abc492b25292734444097572d00f6f74448fa48e027adf7206d1323a66955f3dc156a5a1d026b425c775b06329132009e96f9154c519117aa559cf4c0dc4b672dd6396e86e3c3058e1bfbe2959ecbce33004db23a2083659e412d06979ab13849f140091b41f91934f4c86cad138462de3c34009b731f12c1316bd8695b5e3776e82ee1a534b3895f59c3520886b54960214e62370014a70a3cf06fe0d90b8790bdd320a269ead675739e818e0c6368fa2808f22b593f01f5ebc3164c6910938e8f7868c2bf54011c8f279761efdb5ef2614dff43ae7cad4100d1eb7f42093f19fddc41cd55035f53c5ba5177fcdcf049ec785dde26cb0fe4044201364636f59b1a27f24dcb580a232989325469177fc6c39b203fcf042ac1f9f7c64400a4bac67543562fca699052b5e9cf4ac7c3ebf7a46c1fa7e43e958a0fe6a99676450090e6601f61e8074a6f2a2fa31565aef89821eb9a6bc108a26f1e8183196b390c4601df8fd103b7c215843666270eea5ad94d2c20cac7678c9eebb35dc8619d67132c4700b2b741351fe4511e77bf9cc1cdc94a76e8c3327dc0714102781e8f48ce5dadaf4800a1e7230375cf9d19135af5aec7bb88c7db5ea97b7ec656d76a9f22ef333e706f4b000fb5212d80b69c92b8935e2921c01c618e0850a7eaf810fbf210189544e24e9b4d00735bd22594338a7330fc4cb3a2719c54bc65257d5d77898c3fde950913cd4b6a4e0086dbcdeb8facec83f745c2f5fd5b9d5786d7b93c0b5be6cfe9179e94ac31a5585100f52d16cc1480b47e9fbe9bf3d3811fa9d5b6c9574dd7b07bd1d157275ca66ea35400f5831c1f0df9c027555f741d27972dc8ba0c97ddd1d12f6983b3525d38fd22e65a0009cb2f51f694d43d4da90b691481eec8cd5c27a423a0156618d38eebd2a3a5a65e004136981cc320df8480b3716689e377b505f2c7643bcd688fe26a90e752899baf5f00087aa345aece2bead9b30b81248cf92ce2d8b2cbd23c92ecd995b6cb553f7b8060003a2503d1a480076eed1e2c2aed56b800838497efe2b537c76992eaa9d06c328c6101d5eac258ff87f3147b83717c338b1e6501c72099181a48057089d4ae0ec46862620059b337b1a9466f665282440a35d68ca7776a5e41b61ec45b61a897538a1fb5ea64009fea16eec1cbba66759a1b23eb1589d840a60bbeb5ce815ba6d9afad4835f63a65008525fdbda6bfc3ba42a2b581f86febbbcf8445e03bc73a7007879e15e04a89a06701231830ab58df1f9bac119e686190e3e70be429ddc04e19c6d887952ceda988636b00d4b87604f7d9b2d28e3a9742a60ff8ea909fbe65275dc41623cfe28db2f449087100172534ad0ba1b04847c289df40660246fb8a9b48bdab3531d74f2e9b12d0404472012924853555130b5043144d230818951030b380bd1d8fd4ffa2dfb2e6dc75874e73002b37f11367e7bc76012bef9c1762aa8c2e3315cb084fcc9342e8c8547381b1f4750172899d6c28fb01f8efb6eb167599561061aa6ac01fe955326f74c287e9449ed9760196f723d9fb64c4b12d04230793042b227ead5a730db29af24514d979a62caac77701c2442d1cc74cbba5805f03ce2b2ed439d65e5b21966913ec1f1ef1282c66b41b7800537cd412071fa073f7895490c0ee4319af545430afb8603260933a74ec77bf527a009443bea6c5a76f8da2cde4e6b1e96dfb6865a777ad5035dcc0cef7c391d539cd7d00301fb8b9bfa832a480ac1360cccb42253bbbe5f7c3181875454e5ddc53e225397e01c9958fd910bddbff4b2a80a59214dda73d834dcaa58180d30fe0b531d4f2b8b980004ed88e376c2675b5d6e4687b398578a83f3f6dd9b283adf02d6cbd528e345c668100d0020526b485611f76300c1500b7d473b10894b05d79f38a2815da8a1a2d099d8400739adfc5c7d00dc8de11101c5270b9b848548afee4fca547135c2fd8bdc12f3b8500a0c730f8df13f4d99a6a66c5e4a5b8e0a1fa9e78823365c88a0e6c19f96b87628700b99cfecc8ee84e0475f981ea4551d7d7d0d3b261264829e2db8677abc329d00b8800d1b25a9c7a58e26da55d26413fe227204877c5c30dba029a8826d0fb4ddde2498a006394c08cd86ec979e669ae6607baaf175b08bcdf8cb03a46708b04cce017d51d8e00a864879e72e7589cea7b86525d6a89b91462bdcb7c6a6411137f6884e687f6239101a872935e8798812b7db51713a3e77f2d13c0de2fdd2ca0dbe93ef0e93c0373aa9400862506ca589b6a4999729c20f3f6a927541110cc651a8a2ad0cbd8ea8fd7db059500431114f4dc9e39c55610c32d9a11a0ae56deec9a545b6d9f839e1a87fab8379e98008df08c81efe472f1c900bfa232ecc0c012fa75d8f335baf75d5ec44938000d919901abd2110b1f3f94ae0537e1b5bb97e5465eeb98025a70ead7658f65a0a2d664fc9a00a3bc815d6fd9ba6c0f4ab4842aad1e3a756c79d9c44495d4aa4c2be22af0bece9c00f6ee2ff0079bcd2a1f2941d2edb83916634107223288ce7fde8e0da06ebf7ef49d0036464cf3c4599746f7e5d2fa17bbfc448d7265f8fced801af0f02ae101deb14c9f01ad344d1d319ed18eb7ccaf0b78eb6ed2fb5c1ca0481347a75579c9759afd2a7da0015abdb4caa66239d658514f90e9028c3b7c69d205a9318afd667b71eeb56d5094a100e694d023ad30ab551f115305ebd21138519ee7d74bb216dcb59b4bc88bb69304a401bf07bc8feea17ec6b61d3e4f5cdcc0c95f9083630ca8346e4b5a793269937f91a8019309a27cb5f26fb58f4fc3658a4c6a91636b7b4f5eb284c9fab96e37a0cf4ddcaa009197bfeac9f81d9f884557c2fdfea66fb2d8d310c30d87ad0993efe64bab00dfb00155c7ad11063c1937062c7a1f8a0f30ef4533d53423f86afd3c766f27762072adb30004e421602e0e0df92234df1dd62b16d8a44601a5a5db54fbbb69b7830862cf1cb6019b77b64a752a29a12190d9a31369f9a716000c3ceb87544f0458db267eabe997b700cb12513745fbe797b2cbf16c9da1d233302a59317bc9ac20ae6d10c17266e4b9b801f7a1504b78e33ce71de108eb3c1699284494df1a8690549ba6e98c34bc74a867ba00007a047a80ee0938e560514131c75e8640c1fca55e8c2c9c2deb25232cb71b63bc00b5beef8112c52f51a01819279e7157784322fe8d82ea5ac1debcc6669de373d1be007bb8425f89f7e76ced9b849378023c320d80c0b2a6930e15ac0dfca9289b612dbf00b62c4e7760ee2afc125efde084930b37ce5c01b1d2ce2b151f0c23eb7761ac1dc000bb2eb5b38d731d447c52a82bcbc25ff54063f8ec7140aec59a49a7194fb767d8c20027507a70f080ee7db9ef1abf67b0a39d9ff0e0d4a02c010285d21e508ab43c69c30073a3b7905c50ff9d87b0b5d01b6fe89d24bf4321f41d97e8a420f3d324f8072dc400f0e6a1abf83babfa2585897bd67f72326c3693c4b8fbedbd549e25dcb6c94db8c500e902606a7d5c073a435365337afa41782711765087cf2e0384ece681dd49cdd4c6002fc0bd878637d107275653067c36f49a6bd6cfa1487165d0be7ed730cf76c220c800be3586df24cadbecd3d2dd34a8fd3408f7c7bf4bc778e574c8a3e73492b00425ca001f03d8c9f6dcf5a3695835e96bfee28595fe9d2c58a7513c9e3dc69c63f8ec5bce01cebb244d1f1f1c2588c145cc8f849c81d67e34254b8be795e145371a2081baeecf01821bdd69dfa5cf22ca62edda97e66d899f9dc4046a3afccdea2a7525e469736bd1001810cfd06e97b65a90467035305105659816204aa87b1e185b9c41d37ea8821cd2008265c3ac6da3df0435a9275f8a0ab494aed5c28ddcdc04f5cb2cac68a2d183e4d301d4fcf5fe9c1a2fbb57fc73d3d2180b9640b747eaab910290991f98090caa03b9d400d7856e93be403940bfbca4afacbf2a8a3d213ec7c48a7e1c6b6dff57a010a072d800923ff806c6731c6369f8a8969f4f0f2c7d679a6342859e8f03079f62a0f5b0b3d9007c800b6324db9271758649a21320f2f32dc1782e73e533aad616575374d85b40da01ca26538ebec03434fb1dfcebff2c7def8213d34ab8d2a2372211b3eb3b3ee9b1dd00e5c10db435b4e77cbdce9f957f01ed55af3fc5feafda60a4a944bba409499290de016cc2bde957fde66d7a447d0f09a45e9aa2e8bca284f2c11689b679b23c7a03c0df006b243e7425d3852d30a12441ec5bcc707749f89dd91ffa0e86db703f7b47de1ce100228f4a96c5aece5459fa0fe370389e00efe71d61f2ab5b2c5d3feb0a83006f4ae200ae59a6f46dfb214af4ff4dcb395e921374d605c454fb6fb3e2e1eb7ab8bfe4ffe30192161827e16287c2163aadff01cad6200fbf1dc20994cc2e02659bcad42a4cd4e400c2ce7c36a5ae1035509ddecc756018f79c889a0d662160a7b0069f93bc5d172ce600b083a90639b4ca3d3e6b3b3365f0db90baa97b06303dde4fa9f58c28246e0226e801a63ff07dcd170d3d57fe78e41cc093702ea3f4247d69841999b27ee624f4b7ceeb001df9a18330aea19b7b3f09138b05c237fe2dd89dd77161d97010c2ae27ec284ced008a70f1cce0b07ff0bbc3b824a8e35277d722d0a61ccbf3553a34ca9a9a2a1016ef0144183d4ae2b8018b85a0065b7096c8083137214536a08c2eb3cdb7ac4002e959f001a3fa5661e40fc0e32cab2a19d1857ff4fb7741866642a9f0ad2919faa2289c33f100f3a9e1494192c8c742e5151edb539eeed01e3a8dc8f717e6c8a2c1f3b7ac0ff5f301ea95909264d3e694ffd207ce79f7952ad4f478ea69327d817716c5550351cc55f500f4892e25847aebdbcd0148e54b4a9f686ddef6fbc2b94406dde6fd6a1fef9cc9f600f430e33910718e73a211f86049d8c8286ec8d11d389c5f0e57747562d69905c7f8012d997e09318287916500d004e8bb3d4f54f3aad13cae8329d17d728eb87c2202fa003b217d4ab28c61e4aabacab2880c937565b6e5e04447d256fc047b59bc43599bfd00153ab6e0fcfc6eef154e46eeb47e4984d369bb28c7c0f3ea5bb4f7b160861ff5fe014ca22f6ffe3f5a3e72d1e8ba4a314e8310df3dc5ea0e209d535be87a97b6384900a7ff0000000001cfe3da7bb02b58109e357b09a8c55367de34a37a60c9b940a6505c0e8587014a0101e84083e6824c8c673f67a99701a4b66dc3254682500a1bbb2d0a94bcc695a34d0201c47b3b999e7874a2208923f423541ae795ddd9ce56d832546e76b3a1b4cab4bc03018d40c6df10eb44b7e7005fc2504e9de898db225aec8eae8a0504404593191827040104073d1abb3b9a0aa0f2f16c51c062763eecf0bf13bb16f20d9ff231c939a72705018a75a5a029babed646b1bfa6954df482d5ee0557d737dd379f5642375f1936570601b66067acba64e02f5ababf39765bb33f6ec9697c68a2508f01a333487bbb17ff07017db2a699b1447eea48b5ae81a9372894081f806d2f86eb9c3c7e66b58184ddb2080189ad0e0b3ea6c11243f8c77afa8bd773c84829076e11afe327ac933caff99d120901af435a3f22a9a1a284d5353786e3686c792f696523fbe04dcabaf949777b759b0a01f9aebb17fb8e34392bc783e40e26e8a2d696b0a70a33265fa9e6ef386fbcde810b01e9d67b904231166a929eb09905a40ddea9a3a6ec26fb3f14e0e397201fb7f2e20c01fee9cc0090a277339249a54e3bbcac6726feb3a9d9533b76449996fb4093bce60d0132e6e108ec88cd68a31268bad78431de94dcbbdcd29e6689c14dc643b030226b0e017384a252ec395cb738904c65c2ab85029baa8524772b5d65b08a300f9233d5640f0157ee077f6adf998ef8b6826a2fbac781e14412b01bf9bf4d97bd6f78287e0d751001436bf4857acce505cedf7339a3b182921848e58f21e02ee315ab7444d7061b8011017920219c642406539c682616d81555a08c69d04190a6a51f89756600ecec40c11201d76659b056786d3d8558726f00a1e02d39230467a834603d81f65221471c53ec13017f5b038211bab36ef04f7ac61b0017b60eb8c6b27872fce42d8ca630540fa9251401c2d9610507652e01b6d4448fe8b69768464c8f794d08e6729f4e7f9dfcac534215011d349e10ec6fd9f37bcd1c783a7c254d2e2c08bf29b6a975ac6f82ab4e27cc491601b5b3d8da3f7d6fcb447c11bc9ac036b8bb5be28239da700c1798ef1acb74b43317015956ec84f9ac4e981c70666380305b15b0352f4c5310ee4b5b234b567194bce7180170da7eff7896111fac96e46c2241da36f9dae12d56c35edaba92db07d84a37ba1901c6c77d57c959472781b3f4997fcd7a26fefc82fede00e13f310c05cd4a07d0fa1a01ae5454659f9da2bae3d922f23b6b4deb08f5a35634695a685be6a4344d2fab071b0131bec1fe36e667c46a241e73ed0dcd2b4573a25c89e1e16d67aa18c16755ca571c016602183c56d1db444dccac77b5451932cb970d5338852ace93fad868a144ce271d015e0924685d33fd093b5f3b0c36ae55908ca0b2d519ad744b59248fce08d1934a1e01165752049d971d7a9e8aeee153dbe62a0979698d135a7b770d9d9e22ea690ba31f01bb11842dbe65220df8ce915b96e39a8d7f9708e6c27c455a10965f22e553ae48200130063be5a831b412d76d2310f232552a295b882f51d1564126a5db7a59e8096e210178f328c318b146ee8cadf6c8c0a187bf6fc6bc956651d076c06c88067a3d986922011238727106f6c796eaf5296999fb87ef1010d87e3aff846be835ee156e3320442301eaaa84896b7c26b1f1db6089276887966febfd6d8dfefd01e822ec992558a40824019dcdf86b7a78fd0ce185d693411df2c443058d60b832a758ff91e2bb1a30759a2501e324db5dd60c86b5c6a3823415a9524f50396af75afd42ac2e985c0f5eeec73226014061a8a0198ef858abcd94118e9d7b599ddd497955bcf19e27c1ed40cd45fe2c2701aa7e8f11ede43cb69495b83d8d36bbdb8edce8ccd91a894beecd071a24b0ad742801986c27dd1abd39dcaeb1f4425342e52281a343a0f8e0fe1eb8fcd9ec701691512901f76cfbb615f9df181b6a8cbbf08f13256a549488e9f5cfcd4d5507e866e321352a015d5231d9916b8abd2b5342b06d0e50d978ec124ce0f0d77498a1e23c92e7bb762b01bf8d3e9ae6232821ad27935eb65c15f7bbf60d4e85b7fe4dce5b8f8607ba24592c01c2adbfc1fee8f2cac3c1653b5eac41fcef01ec8a4bde109d33dfc36dd139db882d01f4ef7b6f53ac534421e6da784239d951e92e7d334e786c6dee66d5b7d89b213a2e0186298373b63abe2100e829309e76b8631b88ea0bc0df3a178e00450f8260726c2f01bf59a760fd0863da367a37881c7dd2b80baef6142cdca99dff0fbd977a05eaa03001088848a975971b308c77345b3f34f33af6d2538d3b445dd6a2689038c4dfac8c310190f9da7a985269f0c93de0e812c809a7c0f41c7181e4f31936c12e14ca2c4353320182f1dc7c27fc00d6ac7edbebc0e8365e6e819ba95d34f45598df9b50a1a8fda733013f93155a00b679fdb54ec31904e65e7839a54ea7a757c2c36f06400cabb5d17e34015f74bbb155c143c750aad6701f69bdaace1a241ed051080e6a6548108f84426435014341c96999e996077e6cd9bfc4d086696b1041002e05545f88c6a045b087060436019fdde2fddba23c336bcc1141e848e5dcac3400df233b4a59b22674f077a96fae37010e78ead2605bd512b73b2efe2116d20944e48de8655156f9dd28e4407fae40573801f1d70f3cc0698d2a31a06b98b477b1d6c9474a691e2b79ca4135220b9082aa233901674bf7c10980be6e5242ca9b99f6329cea03b5b69503ee658af0de09037912263a0163e21006d23060af27ef0e0bdd8771e913d897e3c435e395197944e65b175f2f3b0171cb4d3cc1c1d14e0f0cd1f0a6a6d628ff976c4aa391262c671b16e6e3ed327f3c01da07e3e69df8a981745a47c74baa3129770d42604ac68662a6018b11df7c17f43d01d4042b89ce89f8e26852e01932217c88a666adc129120fe554f7c471a159e8b23e012fac3d060cfae7b8a9bf7832518723b7776c65db42e69ac5d3bd465580cee7d23f019986c1ac90552ed2fba4da8d120b3d44cb902f697db618d0e3a24389b6a8ddcb4001ba1cf15dcc0e8f57e9ecb9f1ed7b62b3db4476c573ad58c16bcc34e380cfa5184101163df5713df7754179b7681b1fade9f794552b00152157b8e0048afcb12c864042018ae878219bbfd3cde53e82d8ab8eddca94b0e7d8bbb90fb2fd6314ace9961ac9430124083536431d30207d5dd1fd6139b033bc41ad522d3ee1b7351533325d3e07dc4401e5d91f0a6e4a0b5269b8e7b93cd0c2cd47d3b7fd3f4d960b64c315c2ce06152d4501a924e2a37ac1e36edc1889c5b7e4f07dc6d0e7247b5e59af7fb87c00dc67a9c346019fa27e7a8dd89415b6223f7b0887a211e804b042be83847fece493af65626d1747012da3ca46ce6cbe003fdeafc7cc2936c77db9c05bc4989ce5897c1c5983d4e02448012bb40e590ffca6efe024cbc2e8448b234db7b68ea4d77ecd07c9775bb9b99c554901a7c174c32d8f96f9f109774c9d1e069a0288cad0f3c267de60a6dc601d9261ea4a01d75d9fcf8fe7febfc42eed065d0c5901bdb4a8349b67b6821724b67c28f6e98a4b01f2f7cc6584cf57b76299ce35fdb029207bee9a52f06e5c29f0b934e8f205814d4c0144fa7be0b15f9c9961b404ac0834fd8ffc705d497d70328e96a4d6ccd5e711764d0132feee418b5748adf70905698b23204d47c04648f78d6774f3588b02427a2ed94e0171045a0ae9a4a0576a97f0327bd6a8642b023d8301f764a17d789a54e1d2123d4f012ffc77cec816292d3f6a32bbbca9b88cebfce48ebbffe6e25cb88855756c889250018eee6f0e8908bdec5dd2bd00abecd70c1774298cee330214df254c1359a75aca5101a056ec2be1bc715177a2a09e2594de55b230b89be77cf23f27cab8fe959e53b452014b1cea3506ce0068a65c94fd9a2f1ebbdeb9c932fc613fde655a49ad9e1f06575301d9bb22aaae42336791fef518d24062a3a6ab1827eabe004dfdf5a7b468c3bc4754010fef541c8e61699d8d2b0f057a9c3b44e820997a5ba40ebd10fcebfcb696f4bf55017f4ca8495a34a3f936f961c01cd8a88df165995f399fad0ad075a4558c70c7e7560103b504f8abe519e65ad53fde58d9e255375d895d664edca0cf9a03c841e3b384570145ee9a42477a953053ebbffcbc2edfdb1598bf95ca64e719c942fd1f0ffd6e3f5801f0538a5658cdfb53efc020a16aa500c6272c337ed25c5ea6d0f0f4d7d35520055901483cce2a4dd7f2fc4a4b3ef3222d0e4affcc5ee97b3f2567751e92b7ac64b2125a0176510416657f76c39ffd48f0140c8e3729efe338c632cad083344f2ff8f8b5815b01a1ac42e501d405192feb0e0c8c505c7e12ce41e2f7b649e8a77210b00657917b5c013b15a5abaa3a13aad4c68495122f07aabc9a1b4f0a37091e7acbfed95a7b6e4d5d01eebc229048870366663778a6feccfd1b808bf4e5e9eb054baf7bda9b614ec9a15e01b69ef2e9651fc59e2ef1836387537658c0605fd6273345f222cb0ce806a30c075f01acd562f4d5bb51d1835399768d18b153f822b158435aee40ad528e0e84cc05576001e8a72ac441b5fe0873e98854ef3718cc1bc65d7b29d5c205d9af8d8fe54972fc610193b7c80c948896fba63880c04b1c010c7e4d7e21f7904cb4ec6102a66ed6b8306201ca825971d5da78476037d0c7636edd2f8451bdfa5108ffce4f21b3b7d67f50856301085b42db5b99d570eca71ad42c886cb689837e6a1c8eb2bbfe2a96f8206ec7dc640173f0783d1e7945a52c00aaeb97ae99da750e8410973d05811eadaf127bb6d32c65015de4df05e837740755a1894d0e12eaf8cea7b186917cf130d8992000d1324a6166014eed4d5cb840c1dbe870751d66addd8d2ffcddba28ac68d266cdc4a6094975286701edefc5e1d79ce740dae56b721606cf89c63fdacb4b1adff360c5b74b127c6c416801dd91f1174e2256bacb3c24ab7fdcfa888ff0205f3b9271d20eb175496fb8eabb69013c0876fdf86f849ee005bf036a18bf71cc643905a4c5061ee9b01a21d464c4446a019e14b41eec38d202aa1608c4efc8742d7f523b032df50736b5a2eee665cebfd46b0103b38e9da154bd1dffa36f27e6ee64539aa80a3cb124b65a22e840d9a24b48d86c0150d273654489594799302fb56788801dcf1f98b7bfc0ee30c0517c8b45ba1e7a6d014c32a96a6e2847c089bddd19c866c270972665e34f0bb09d282aae6ba83724926e014c9d5c0595ede20e07ee2d83ae055f9e4611e1f208015bc1ff36b6fa1dd6bd2f6f015102c99b60c74c936ea9c161c066ffe37119de52a0631b05d9f84cd528ff2b967001eb39e43b53f9da0e954280099ceca39a62226be13b9345f69be2ba20f9d4e4b771016caa7170ec43991590c08d929e95f5e14922ba3a8c84c7e60d179e24aa22788b7201f2bd39fb879582445422ab9aeded21a0b8336e810331160aa80cac9bf451ead57301078ff4dc5cb9bbd2ee8f7b496412a601cbd8d778a3e970a68d01a7609d53bc5274014ba844cdff1ac66b031708c279767215aba19d8f27525d13c8f792af557013fa7501b8645606450f888208602ac670aa29b196e5ec8eaadd5254c4dd509a8fb4d72176012cf423890ad0b729326afdb5699e0e49fd7965f8f1bd774144a5024c4d3c71d777018c734d1e3018d356cab02525f613afef84e4f7e7a9ce59ba503eeeeae75b1c947801f773b84389c1663e52573e942a159531950d0bfc339d8fdd83bb118304bbc45179013cf60a77f2a1cbe50232e9610b75c2030f05b19607c20511f51468cd3ff30c827a01a9a24496d9c5f32a0082ae9de08cb7ea9afee565ff9f04c8bea1c76dc24c81d97b01282f6eef0825f3f4a061b8c515a5b385124ba9d56c0e6391477baa5334b227df7c0119a0d4159341148d3b1240c2e3eec1d0eede715796118518b0e4c18722389bbb7d019d80d95e406de4275df7433ba12d9ce411ac9536394b015e1cc125512db2e9e87e01d7935faf97269ac6bf7dc44d9a47160c78d838381802e55513cbebd4c65290b77f0155188389c05029f04ce56955b5fc88c864b944bd1cc100713255c1496b97a9b580016e6935f3b204c348f50c917d996a9ab69dd66197192733565a341444a7361a158101b13ea58da74f0dd0d02feb907a4a94fb6d34a5c6fb7c5211b1d895c9a98d0ac782011574fc77df745cdad2375ec7e4020710a19fb7e1ce4e5da12e1d1f9675cc0c5783010eb973ed5c3fea95c8fc7d2065b4b98d97cc360ed59737705c7bfb4312a767bd8401a5ab34b7bdeacb0ec3e3ac6ac5404946ca5ac11ba82d555f3f2ddd0d7078c38b850147d6d887f32a2d365cdc831400c28fda4c7bbcb2a58acbc0ab4caff8a8c2d5a98601a1c6f9a2ca1990daa77bedbaad7d8438b62bfd1f22178029d659bd1549cb842a87015926d8483602bb7fee8d080f356a4bd7df8d7d52bddebc2475e251bdefb3a5208801c686025eb559ba5d76cd949f5467153a1c9e9966a4bc90212dfea94d51fa883b8901e0fdb84dac32593f40acdb490aaa7067791f86fe0d21fad37456715a4a50e2c38a0104e6db9c08c2f478cc68bbaf0311dcb2b82d2b01076718d0d6c6e1dfcc42dc7b8b0173a852960a08873b7a0861d9f422a07ae0499d799d257d419ded216ca40388498c01123eebbe910a6d84376f67ed017f44250364cb1c08f004e94a396217337fabc98d0193106533953dfe8ba172ac80e37daa2a5ac8b6fffe9be272c1693cc1f5f42d318e01878ff214139eec70ae56cf8678473e485fdb4f5329d25d16db36c30e052d96578f01fa91c3a836feeb11741ea14b6ef59dfe3c59966e165f677b1dfbba2f66bf8a7f90013ec7360bf3a96fa20cb4d13e951796fdf49569570ab014256845ca2b32ee5a6191017029e768ed12fc936a36c4b94d5f8a3388531f1cf1976fd8d38126afa3ba262f9201532c168e58cbcba1ba4fdf39a0a3472e1587f8a2adfae3a65b6e717e3f24f00d9301a42361663dbf1be262babf0a8727221ed45b036775eff4ddac35dab850722c8b9401ede31859beb1c58af1f79c229ca53d3f6db056c8f35378c6287fc2ac6158045795019878c06728b6dd5937deeff2518e7476b2ce228a9596fef3aa0f33fcd50e57679601f0e4c350ff24c878bf906a863eea52a419daaa5e1169b8199f5d3955b7242e819701aa93ed2868ed7b92e215de442c766ec756aa494c4fe2e68f390042f5ed06148a9801e19844cc314156f236e8921e6bfef1797ec2cbf5207d88ecab5d9d6e6a09b4a4990134cc82662516a952b2fd1d0191219357c5aabbc370e3599ed4ed9538ef7e48e39a01efe1b17c5b34d787703c700ef88fc89661642d5af7274366f52be1582650372b9b01ef3e7c6499e87e9e065e7b69f06f41d2693932acdadb9f8ae2fc4c410acb19fd9c010af00b6bc109c8e2d3ec148ab7427c5e46ef9f44462ac4d02e510679773c394d9d013a2e74a54f6d0eeacce3f7aadcc25a20e3e2dde0d04cf37ddfc575d09e5dfcc99e0130b997ab79c31dd1efbb5ceca03f47306ba217c2cd52f29db90ee7a2df4d09849f015390330f5bcab06d8cd699dbc84f6e0f85492359983a0dd9c7bfe564539128b8a001d57cabd45cd707e60680e49b7dd2aea168a0f2d1571692637a049e15c3a46c4ca10145b7f9dc6373c760f4ba21f64444c667f6b5e944110f3e9602a550f7795f1971a20108e62876800fbb5fe5f24372c16b5a4db7b073bc584f682586f825a4e0d27a23a30149a2f29e51816b9c473adfe9921eff79168bba9b81d9b31cebf826bdd7b14057a4014eb6446616ae7be0e6b61d0ad52df73da44b925c0a3acfa8bebabb68ec7b1f40a5015e3e7f57ac3dff61cd723d6792a30b002207c7af3d79b53fc2a5cba371f5bcd8a601a19edc0d76ca0e84734e1d9eb0214754a68234c32abb729c4f6525c72194e942a801b85d78339d901ee3e9ab7331ca44e19f62db6d7e81e092d86fc60e0081d8ce3ba90159d1cbb5b653ae4e4a5f63e7520ee7302902a6716d0151a9ba3164462fe1f4cdaa014ed605d49abc7d040a3b954b271d7e26d3b864a741c57329fc50e5489b22cc98ab0103aa0cbd8343161cf5a1e56a91b9137c7ef138478b9aa4aba76f53d6e1d13c46ac01746bf05de6f491ed24a53a750d0a261eb09bfb96508313d2fd0fc9613426f70cad017040dd5d947d3e0d0cb0378217bfff09faca094fc9613464db57cfb8de93d28aae01c15279e45b35c8dc6fa7ab8256f107d508ef358f7945fd739567e20592f7b34daf01f11a78fc86ea6ff41512c888ccab8d9d846912a8b54b4519be8c9429850183b9b001adac3e86f7a2b6af1f02e19d0dd9341e670c234ee23e4fad4ebeeca6a958ed6ab1013e4b04abf23e9547d5173eea2779518bde9767d541811329155a014c67075c11b201757e90d83f3c0fb1d802e8d26c1bdabc430805353fed7d2683e48591beba60b1b3015d547b60b186b77f83853746f77e35086519eeb31e5067f54e832f4362c4c387b401a9ff62e62529709bdcb2c0ff97ef4c67baf1d0f43d8421e644513c572c2c9852b5014d9a7f105a5194fe0c3ea8c60066d7c04728a5b106126b595f5274d49824a8d5b601ecf6a83f3f034d33dff7d7d2651e7da1d0397b1182ee2daf4633113de13db3fdb701c40abf6f7cc7e7bf42ecffcc20d2415f361e7ae9f77910c7e83f20095e24c58fb8015e4774686da053a2a466bbd93c759b781ad59f69faaccb5209f149ad81132ebeb90110472b47f89a4b56ab4b730aba46edaeca3c6d47652349893ab775bf50da6de1ba01209392f4a8982823a474ae5f04fe989c1c8eb640e8af1c37e1333f7ffe2702e4bb01a5cc935ac6048080c214cb3e45fe39acef37d660a836921df17998a4e52a7ccabc01299970bb660e8f369ab618e7a708cea8de2e0dd4a7c9f3dd5a52fc946ad41d08bd0109adf686de2a528266cdb519aac02af046fcda0e2a69f7df781f9f3e3d930c40be01119803b2348d003c235fd0ec792fb1ab48f3ed3306def01e0cb207883b2ce8b3bf0102b9d7f8f97211629313edaa31034ccfe563a82897cf4d5616139f6abbe21ed3c00193bc46fdc13f291e679260439f9af638702d416d0b3a72df57e5459a98d1e6eec101543b0fdeef16b4d0f854592fc5670d21104182c331a230ec7f7669d4b239c852c2016c6e42bfdc4095042ce4768f50cba5cc0f4967dda916004ffffbf2033018ec9ec301c996ccdbd2e1e607869d51c5328f4a3318d5d2885f384c40f8dda65d4287d047c401fd766ea856f369853b88647ee80b463f0609ce039dfa626af09265c539bcc2bac5010e420e130b559c7f736f312202eaa9a33ed15af937bcbaf22d3bb012fd9e5c8ec601391f02c084158d96dc72ca0114bcd48113118dbfb78b90c8916df73ba519fe3ac7013f1039a0c377e6d60f3e94980a4a020fd801feebd09c56ecf7add056f02623d2c80104a049beb725bdc8dcfacf81bc2ff3ab72120041355a01326f8cff0170f6f01ec901f06bb868a5620d3ef492438370bb1fc4ba3f2f7aebba3aadc8e4908896b3d03bca01052d932f4194ff8fe81a42598d5e907b6ab99aeccf197563b734c2ee13e747d3cb016ac91dea1a7d8eef3fb28b30099f237e38befa0e7e8d7a250a98574caff0d50fcc01ca48a4ebab8bc7a701fb0b446747d23520079ffcfef227a0ea95b5a11995f73dcd0181350a934538cf57d5055f8d2c3f13fa72953269a73dc4ffaac7e192a2c29390ce0105839dd48776561eb3abf172b0acdd3025ce46a8fcae5c2dd85ae9b62f4f0e95cf012b40a45ead55e931fe7396cd72de807e602ec4a95f5833b2fc7a0b663c0ae0f1d0018027aac7870d7e060fc36c1d5fa63fe37cc23f3076bc2b972a86daadb259f1ead10186260b7a60f57f5a5aaafb8aca4101ae7101e55b8eb9872257c0dba3b5295a01d201dbc90f27807b873d7d9717fd4cd100bbf428266f0b7449bdd469e21f4cea2d35d3018b228f0fb3606887806646c647d6ae89ac755e33fb0da6f78e59d077e549c881d40140612bc692554bfb5be20374f5cbd0d9a3a30660f725e1eaad46299549aa7a55d50172b1339590bb023bfec16eef2dd5e2f048b91cf5dc462213ae5f5e705f17ad42d601a16ddd801a0bafd0d2e3d9f268746fb7df15208e6efee2f86999f99c0ecb44a4d701954ac62e593cf9f9abaa6aa2ed50875c4e64f7c37055759feb728179940a75ead8018233e9a4030981f9405aebd65bf52cae6baca901480db3d0359790050eff75d7d901938561d110475649ea3e53d2959e99a3bde48ed624f84a99a9875dd2a69336fdda01e5f3aa021ac61be1538343a55e11287f86251134e2d4b4593d29649f5df01f32db0162a077fbcf971c00fda7b8fe5be13234632e337d4ab14a904ea9395d37e771aedc01b56acb622c67b614f0d3e4b317e35b741cbad5ee3f85010cc610b291ec56f6fedd017baff17db24c318bd032a52bdc07c2da8fb06c7e5682327aedc583b649dfa9cede014c974551efbf33066999f39f5b1f6f8fffbb3dfdbe32f8421403e61b8b2033e1df0183e9ccf066bcecaeec63e3235dff838d2b3e81e42ca9eaf35e1805efcf55a332e00185fb7e942c506e6cfabc2d9dadd5cdf97b32c051c4fdcc51b8ec52092ad20318e1016baa77d0bcddb708acde95611514b73bfc7a9940508596dc5177070559b6665fe201a5a7aac7e4d8a80cc5507a8786988e4a3643e77dba1d956470752c8860a17740e301d97b1a4f06d4a2ee91f5f651b2ac4f98138d96f656689e2ca387d5d05924f3e1e40109e9ee62f33294067a6d02a328764b85488750bde8602be27241e06b6dae9717e501d225b6321bf0a315b1c090d0337033e28690750ce4497a06415f6aa1d27b532ee60149bc2c45a5b5d72b3fdf3d5bbc15a750c08c51efb9217f4c84ed94c1412acc41e701062cb65f1e93e93d80c788c2f04d767b3ab2cd83189e97215ea958dabf474feae801e9378df1dfa3b07100bfc9c2505e9aa254dfe5696917435b7bfe4c13c00e022ae9019cd2433540c6da6ba6f66ed5a914223ecc58526fb49c067605e0ff8a213dd1bdea015149bd1949833fedb7d6daa254232140cafdee4c41d7439b76aef109260202f1eb018942959ce9f1582345d520df8022573c8f4252821ba3e6034fbc461cb1cca4abec01b99775a1f8fc7de19440cb3c3142656337f581b669c0006b3aefd35e5a729041ed0110e99baedc392e783bee2dfe97c32e803ba80f438071a2a3c3d65adcca2ec23dee012c54f74347bc85b3f74342945eec3c9b7b4373e74600c627e4896ea73d232cceef01e7800bf9ee13676eb1846e7dbc5f970901bf3e6fbf72b247d107e727273cd7caf0019f2ec80ccccf3b8df8ebf3c308526426b63aad4143b83ab3135179974b1eabc1f10184a01c59b2b3be25a6e32d7a857112b458d18b0322ec420e8d4123f691fa1119f201c68f8659cc4ee11edc7513c7e75fb75d52a4d8fde1949c1b3d22567157053916f301e698e99acd0f28d7e7b42345713b678a4654371a92d6ce72dd3717501a6b4c8cf4017c9dc719dc6dcf56a3e1366a69ca61fbd0d05a05e37718b8fed5b3ba238096baf5016079b988baee865777436b2fea7fe165edaf4b25a6f57d40f6c5d35d8e254a89f60147623a51e5e9cf160366f71c7da8d13c5f08f3bbec2bd7aa100bb9464eada348f701302da43e0a867a0117cf565965af5fdda15bb8cc491529b082e51c4280c7d962f801348ed1eef2fbe33a4d3c4e5e460fe02de1c74184aa5890b385cc67f590bcb398f9014e4d385bddb6b93904f9ba02c76d5f6bc4943e843901370c59200fbb05acdbddfa01bbd033aa7660950b78182f6f077321ad825e80509adc48a11b16e7d71308e6dffb0170cdbe9f32bb46da3089995165247a47cae349920e067090766c919746dfba78fc010cd25084ac4026d13f190ed62e6def1f91109b6c7adc6e565e1090ec913eb2e6fd01c762c2c297dbf2e21e9de251ca84dd550f239e92e88c88e3af15f1f9634c00e2fe013afb5f5903c2bb2677d73dc33276bf41113b946310bb40f96258205254251b04ff0163249d665b0c5617b719a340197733d10504356a23def02f295d93a1d9484a3400010d0000000001e9dc32f91a2bb9bcaab74996b0752ccd0e9ea196c056e72e53d5047af92f12d30201e96acbddd859bc0ce482db7b458ba6dee7f352e9f60af77a919da8226e78b8670301d0d9ab29428fef541706644571d88be1f0acd4740e916760097b3f58d506606904010c580840638c41241c8101eedd758e85284894c2f788c719c23034e861cf2e8c0601546158553c0b5ffaa34056ddc1fbc5d0be90b6416cef83fab7c43e70e669f20607015b169c534bb9fb718bac78596321804224bc84b081436c392a1502bed1b22169080120e3d1655ee864bb68e341b17b1aac99d534e879ba32ea74eab82dcd170c216d090116aea13192551aebb29e5921c5a8eff56bfd5bd159fc8afdedb8843a537be8190a00d462592b93c79b5455bdbb6a24e16a4077452b68525dddccb671bacdade59b640b0000eac1ea6251a37eea6ce3d8b7f311f21245c64985f5cbc334abc6760d61a4070c01907500e49254680789a0e49fc0c90c8e17491139fb48a3c4cc3fca0713d26ff20d0084e404ad533d5c70d1ffde1e045507416e6b22d471204b11dfa860d7fefb856a0e0043d39741a6e7b395eace3b1fbbbd5bbf288f7a788e80745a2e2bb0f2173a8b4f02872e8c4e639cef59028049f64184b42d76fc48265420a64dc5370d82261071f60000ee010000080000000a0000004665654368616e6765640100000003000000666565081000000046656557616c6c65744368616e676564010000000a0000006665655f77616c6c65740b0d0000004f666665724163636570746564040000000a000000636f6c6c656374696f6e0b08000000746f6b656e5f69640a070000006f6666657265720b050000006f776e65720b0d0000004f6666657243616e63656c6564030000000a000000636f6c6c656374696f6e0b08000000746f6b656e5f69640a070000006f6666657265720b0d000000546f6b656e44656c6973746564020000000a000000636f6c6c656374696f6e0b08000000746f6b656e5f69640a0b000000546f6b656e4c6973746564040000000a000000636f6c6c656374696f6e0b08000000746f6b656e5f69640a050000006f776e65720b050000007072696365080c000000546f6b656e4f666665726564050000000a000000636f6c6c656374696f6e0b08000000746f6b656e5f69640a070000006f6666657265720b05000000707269636508140000006164646974696f6e616c5f726563697069656e740d0b09000000546f6b656e536f6c64040000000a000000636f6c6c656374696f6e0b08000000746f6b656e5f69640a0500000062757965720b140000006164646974696f6e616c5f726563697069656e740d0b110a0e130a1504000000008c100000001f00a7d55d4ffad16c93474bb9245e085fe5f3594b7aa92414c0534e2259b7acfac53d00d6060ec8c313b4eca2788414fa6d2ee31f4dcecdd46e32794a2da30f8f3d50bd5500d33055b7b2ae504392930e8d50cdeb15fbae790d55854f07d8dbe3078e7d2caa8700db5941af4185a92cd31218d993592e06a17526327becc4d6fc09c8e8a4f1e2909900c9cfcf3c5d255a7813080beafa6155832d74f7bdf077bbabf3d9bcc77b2edd73aa00490a31fbb1cb5d19ee446005157db2c90785f6572213d3fb84daa7f8d3f3f08bc100070ca78e9b7267d8234044e2639f9310f3b05695bb4e254e1cb1a1d9cf3879f5c900553a79043250f185dbaecb8d7c921316df9798a54aeb378f2d8444300e9ca795d100bb0c1d303112760d00026fdd84308a76cf1369d8e5276611677639996ee25f31e0002f067aa753cf218d737a91d66fb86e485f4903cdace8954f8f08f08770d23b4ce600f5d4f1010d90ac887e2ee45d8e4ca686fa1cc80a9eb992b77936c9251b5f733bea00c56831efde970f71c6007105d9a5d2829212fd7d53bb32126ce827cfe52ef94ef301b736abaa79b14e40310bd7b955ef0c352c5a023c20e9122c2473d9c7e6910082f400be7461019e1700b85e460f0deedb8ff78046e46052a587dfba71bd3ad2a9f102f800fdea8e62a143fbc056ca1decde2e8f1f4a5884bf026d5e5fb678735af13686c7fe0049fe10f0510c70e4f28365e23ae2a10b83cbfe79f4fe2bd9a9fdfe2235564806002eff0000000001a30fa6d825d0c0bc1ec1dec72af2342fb90e4154c468da4648eb5c21e5e7b60a010180bd49d2768c456cd331ca18fd41f3e8f496d65e2393cdfd826aad9b1fe21fd40201a42d7a443aff520f446577312c15e5d8acecc7e6c0c1eac599e806aa649dcc5c03016cbf565d821270c800ddf04e55c677cb87fafba82ec11e2cd07bfc095e5a6fb204013e3281a41f90160c285a41bef2761015b3160d5e235377f438b0369e84537aac0501903c598ed38ffd44b91ce32904266bb3c7fab282d27fe904b5464bd32bf72353060114e41ac27aa4c26e45bfa3123525332e5ad5b3cff7e90e4212c69923c180127c07014e39610f4054e2d6c7811df99933e236931d9deb3f7fb43996379b958d4cbf150801980ca952b9b6827f660c58f2754433875132edb845bab66d5d8f75a63f5bbb100901f6acf6eb56508c6b96e1c93fef6d10768ca7bf01f91e02919d5f60188e7854f00a019088fdd1391c3f71106c9aa6e0d645f421596ba05195c7108909038b9c108b600b014320dfb41b3eac259f1b6a79ad30314664cd8503166e67d6de4f58dcd0590fe60c01906dbd042301c7fd439eeb8c7683125eb7e7b226ee80a1c9b411a9df6c7b80250d01fb45893f567ac1edc8ad1b4937ccef39c99e16816d1fe38bb51e949d597acbfc0e01ad09bca7a61391e11eae32ac254a57d78c25b5f9b71512f343eff5e62b4fd7f90f01178ec8dd50ee5fcff6e70b9e1e7d032cf5efb68e5c61c944080a386ed07ebf611001f7fcaf4df3dd878cc311a557cbd50ecb8dc0ab56a02c1f8c5016b537d090a8ab11016a40b7c4ece2ba491e3ea14bea70ea0e4b2e570a5d4ea0391ec87de827006bcb120184e1c6ecfd856017c2bdf0c7b2f9fd30b626203a4fa6c07c6c8ada36080f4e7b130175d465ab43d913c01639a63222470aada0a7f111b99211ce0558dba63bf5ddfc1401e3081841107c162e4c461cdab354aaf1d3e24a102c961e92d2152ba96b2ce8d315016d61646f968c9c0aea3fbb56d056c548056a3109219a63fb6679c7e6e963582f16014d44fb2cf7000c0b2b42d77c43cf56779308cbffd10c1d2b73b235abe8bd525e17013ebbe779819cf6443c2d189d6bbbbd4820770e00dcf459cf512a1470ae4431d31801ddda21fd79f10aa07a084803f52e6384562b16ef900e2cb4a479f4c80dcd025b19013b7b6b9ced7ec3d2ee7e02f84aad0227ae0ca6000edeea040387bdc0d99fc8cd1a01a83e0d90453f8c9999fcd7cbc4d183071fdf7531b89d6c42f6c21a3fb6477bda1b01d348358f2f9fc626c1ce6a557d08eea3c2d3075d13f5986c5bf21f0efd94df531c016eeb4d2ae03945d42803724bfa011cb6961a8a9d4c88e5e8289bf153e6889fa91d01173e0ecb62d6d7da867daa8f713ca3fbfe4bb4696991a9308d785add0ed5c6ab1e01fb7e7078f73a2150ef2cdfdf507450982fb54b9c6aee5259747def39d746a1ec1f01756781bab06ab67596fbc12ef5fe0fca47eb538dc39348bf924b49673e7740b72001c08d9fd2647c9c69c7f46049d5cf36e87b89fd07f6ffa2430db8fd688f55942d21010a44d41dda7976a2889b3ccbd77dfef50c75373ef79e8d7f89f88315a2b1377b220101eae0e23024aa3afea5c38122ea0e436e5ba75870cd3d2d1d3c562b1a4b15c523016a1c78a02b745a93683e5fccd7c6557986c91ca7e5afa12381652a53b6d5e73724010db18a985b15283ebc4ef04ae635bbfd900ac562e0530e4369ff7e46bb64e9f725012a7bac7a899e9d44240375c56fb59cfe5f6166de4edaae45f26feecaf3d6a3782601a085fc64af7faad80f9f0be8d845878d9cb0bf9876435ce655c02c840bd0fdd5270136d948152999a86ea652550d845c2a5867f7ee185598c959970d3d9f6d9e5ff428011a9c6fb43fff985ebec2324677eae10faaa804aed4a0f85cefeb895ded1416ac2901b6ed574082371ccf0006ea6010afc0cbbd559cc5816044cdf5af322062c82d132a01955ff43775bd4488bc37ca46adb7501edeb7f75e50743a553294c6b86f7752752b0143a6b709b323f3e5ec83d90f38feabdd5dd00b71817c13b272af6c21c03126fb2c01199db89bcef603840674b8d649ae3ffa0facab7f7fe2da9c358552138e32e7b22d01ec2a74259fa4c8bb02ce8e86fa55bf3830ef4b8a88f0bfc4d95c62f81d0a5bfa2f0117bb734fb70b7993368b4a2d028b5e25bcc7be95560ce13c1a7f937155cf2fa330015d2b0795dca9f48b1d585b60d6466251a09caf25662a591920c9d6fe938ef07f310156e2e891b0aa6916395862ef56ffb83a0ffdd464fbbde5a7d4aad2e2ee1990923201b1351677b5f45e6a8f65686e1a3d023ae759702db4ca3768b87841b54d01805133013e9f65e1807f579e19ea882b4766cbc9318db2c091e801bb9960b9ee7dc0b67a34014293adc5af05c99ce41d057a4b76b02e87e87502c56053d82c8fd26b5ab964d73501e97cb0116b15cec66e7db24f223abb03a35bd89b4319ff5f905cfa2b5c8b5270360161831e21a18aabed156b4fe0fe85b5d12507d3b04c34acbf463c1974817dba133701aeb84bb6fdc955a16b20619c629ebe489f3d9912d1e93424383749168cf4b79b3801e9ef80f4ae8183cd5a0fddc0e7809d0f1156f1b6127f8ea8b25749d243419ef8390110a346365790b7f1dd88ba42cb9027836f796b962e79c2b438d0a1aa7dc6c1293a0151d62b58f3f61e165dd50afdf44e18dda00ceb3beba94d1415079d88909cfefd3b01268772b04b67cc226fef15037d2403415e9d8728066603d90b85851acc0bf7a83c013b32181258e1259fe4ba85c85e71e1888f737d806e7c6437348dd5551b3a75103d01038bdebc2d53aa92d12cf26efa5d2c3012efb6dd99b2e3cf2e01c5f12aae1f0b3e01a138d93f3fd328af289410958b22cba7d1924b6722b7b15652aa477c4c0ba1ba3f013b37650ddca33f0faee06110d8626290d2f94b623289f80c24fe5bc77a9399604001907bd09cde02af0b7a1e406473e52c748164cfd820aeeae40ae405b4e2c616a04101b0368d37c74137b161cff383e5e6a299bb18b4b8e4f49ebabb9bfc4731f5eb4c4201de11f797fee80c599941561080026ffb79600c84e2d3c837dec848e390c1e99d43010aafe4f479065d348af40cc00e4bba70a87fb6e2f876170dd4f616fd9d3266694401475213965a12e3de377b2a7e59893c75654ad1abb6a3186bd2d1f973a34df24645016bc99ada0904e1e975502089d7f1f48ec2729d5d7bdcb1d4a7ea9ae29e66991646012a7e2dc28d49557d34fc8b878f02ed19a210ed73947dba562f2a41325f86e73f47013afee987772e42f7f1c59f47a6e29cae396285b89ce175ef58b08727047c33cf48013dc30caf24b36ea3cc9b41cab83937d3239723af90f21b324ae55efa50e8fe7249014b7fe168a5aa19a252e75ef737a2b051ebd12c97a81608705c8cdca31c70a0b84a017ea260f60a19de675521be91a303bd7a660edc685d3618988c0677e907131dff4b010115474f33351f3f351e102cf0f069b848ca328ef29c1bf4f6db574f44cacd904c01505919be6dbd89d48b435f71d0f62c5e447f404dec9bb1fa4693989814e247474d0116fd26fa9c17060130fe6569162303f633636660726a8bbc7dc0f0d00356be2b4e012cb2d43812e287c1dceebc37c9ea2ce97641edaebfaaf25b3381e4cab8626db54f0171929fe97e69f74d9b891ce85be0039e06b4875acd7b6f4f84806d0d755780da500118d6f44198e04d7fdacd7806cddd8e85445abf5f19b980fca95c635be118a92051013860a46d8bbf5e2cf308cffd669be609705851ece2424027c550c9d659e3013452013a8fe0a2db61ca274507ddc74c8fda570e8772807267fdd502bb9816799fb82d530149dd6151420cfec5d3affed5b5e3cc314e03658bc8aa4d0e141f99d477fe83d05401f12754977afdb7a8715e9e8cc5b18320ab5e19ef7a2c662009b6fc97f510a86d550128aa468dd99bb23a61c57a14e9f73f9efd9ffea010d5c77b789222b53b5a683d5601e9e25226e516d58c4ffec966f3f0ca44e9a2e07760b21a9271a2aa6f8325b5625701c2f95cbfd2427987aff4ce15ee27c8570dfecde09ba076a5243c04ffbafb296758015e6ede8afa7ec5fabbcc5c43ca878f6f23e82ff05dc1eea1c87508778d3c20795901b9100e6a788060eaef2f02bf625d5841563df069919dad80ec0f56c847a0b6b05a016b21a70cc5d955c7b8343a9a387dccab5f71c60aae6c656e40b906164693ef1c5b0127a92f8a299e8815624231213bf37401d150a3d7ba65c8287b293c28acb70c445c01af0cb7ca377009b1150bcb6911894d7504fcdbbce2031f09a24cc4cc33ddeeff5d0157e578c4e26390ec76f169deffe07195c90bec1db081cdfa4c4770293d820fb75e0197b704a37fe1e03f394d7b74ecb767d5c12d19ade40a9507f5a09e2706c01dae5f018423ae5196c6b9fea2ca0279bb36eed173d9becfee3d381679086d069716adb260010a1130318a9d45cfe86bdf15210c8ce9a2e6cb41e45e578fad4a1ff8c27100996101818db19711fcec566d460b12007c94f5be2ade8d90155324d2b3b73a84fe7e49620132cb0de3b6fda7b32a3d6025c03588aa71b6108fce8759c74b88d54aef6fc6e9630185e522206b0cea8cb3eb2ba80d8703119179ba9fbefb26f4ec2b1315831100c86401f617d756d96c0faf0ec4568ad3d856da382a1bbbd00e0950326066bcee78792d6501d12c122196042b7c3fb71fc03eebc417116533e2b51bb331282f4686dafff8016601b81a9b244d1f894d43ee4f868a0cd63194caad907e888baf809695a6973e132267014504fe0b65cc75c58a348b2652f93bc0279f44b9197c1c29423baaa37153858668017c977bdc52e3dccc1ca2e040eaece09ca5f0c45c98391295ad650b4a411d5583690125ecd1944882fc315709f7f89a3ff17b268211f0fe193dbba775016db557246f6a018c1031b6588912d70f8e4c239f181e80af01a6a191f3575c4834962ddbc22b006b01a6598ab01f0a5500ccd2dffd5a6115f76941ff500b06f596d8d3e56cfd579c566c012a4f0db2fcd0eedb74b50caf59cf8f9eaf15b037511eba185a807031c70f2e816d018bd5dc5f6bd3900ebeac6657e9d34d7fd880b629ef4f3eecf31321c26f7b50d56e0150a687a3701efae3a886432b5308050bfd6b4cb28f4ed28dbd7d982440d31e826f016c6b89acc1a477253d2ee9488185fb917eb480c44b93e64ee5c624f50e754cb270014c3fdef055f1a5e377d2db22e80b049d9811972c94f9cdede64c5cbab339ed20710134c0a3b82637427521a43553fe32e095c8710df65904d75d1d6b3d9491e9228e7201b7088e13c7b67785d63e6442c3845e2ab3379a7b5077fa1a3122fd34a5b8bc67730135de0f539253ef4615e70cdf38cb65372805edb9bdc5df44206a8935a5de154574013a7314406577962f2c6c5109bb1d47df24d023511a71f6b6ad9f1244eb4f6b08750103d10c176e00cce9a37887f9381f9a2dd6d8c7954d32f7b8a9660d8ac888e0f376011ddfab718216be99cb1f0ead23fdc5655e66e537f15e9be80979a195cc4c23e677015154bc86964bce284a9a2259023c16d54ee17ca743330fefe2655794c0afae7c78013719d5b701aa228b4198e7e74c2bf2272fadc49cffcf57def2594dbe75bbbab279012d03cb69872a44431e3f9b03d3f5576018271838d26f3c4e384899c75f1a9a987a01864cb229115dab1538e27052b1bec88c90b86a8f77a7793b0222ba00b75e22f67b011d013c77145d73a7c482d16cbbdc6fba2cc0028faa96eb592c079dc25a7ae1b97c01301fd25024c2adcc214ec229ec76542d3006125a80a43744ffa0fcefdb80b2397d01d44497b80800300e10d396d314633688eb3d6c11469cdc7a8f1169ef07a6f2237e0109a1c656d4ad7665af6f558a4f58f5618f4a9640dbedadbf2a5c0a70dce2189d7f017f962d280ab7021f358816f6a34df1f345a7b83fa372d0ea5c3b6c289fcbf8398001f20e661cbb19ea6696c26066aa86893aa35e51f1c245cf5977604dbfcbf563f18101169aa3bd3583f2a3942f9541aa33677324b56ce3cd420e5f4e4be6fe07c295268201fa1502e41c77b77015c4d1843caf814c12f14bf98625c0a0fa259c9391f3b09e8301d30fabbfcfe676ca8cfb1f1feffee65ead4b28a8e92e5a3f5b309aff31de5406840134268d4acbeb40a4f8ef7fc82f2a5270123a302f9be8247bda87433c3ab1df158501026718623123225839111004704caf9f9c655a6c2ada77d40c7939bfc7dc337086017202c67f1b4777084ac2bc73cfa56a7ccccb03884696ce4ad3c7c6f3a2b0303f870143fcb4f13d168f00b213a13bea7be5fe61c06aadffb673a73cb15ba00723828b88017ed675a7d36821d154eac7b27e1d623890da716680c69377461a11b8cb2fb1b38901cc4904bcb94dce10974b774042583b3aa3a71255679e0fb8ef31795a38cd63028a019643c36e648e4557b16021e98770f7ba9b4325946290c93c63ae8e8ab790de4f8b010211a0d11e6ebafb5a586b868385ba227943d7468877ec2d7eaba30bf73fc5958c0123f165cddd6854a380db061311eb9206254db218fa861e91ee708ad7c515e4d08d01229b4525d9356348b1103d0b90ddfd8cfb7c2a67840d5e62af4e6c152cde5e3e8e01907604f956018365d4977203b26403afbd51ce1fafe8a5272590c4e0a643443b8f01d50fd3aec2e4ce1376719044c2ac19970dfa08fca109db0a7febc1077e81230e9001682ac832f47ec9bccb01432b83b50b2015b8cc760dae93ea2202a875a9ed6adb91011010104c6f419342cd01f8e9accc74158913d661c241c9512144e531118d593b92011ef2a7333aa753347f250ffae2a07533355ced35e2bd06e346cc42a6e8ed3570930177001f4bd9851f37db129ce6fa0f11a4b6c66a22689c7b9f6c72eb1142025fc0940166eed34061662ebd0cd580c12145707b019d11b2839e1e624634b0f93281167e95014f577f7321e628ab0c5238be0a496f94a29747ad69c230ebe51749bf21dcb83696013d7c95d93e9a0931de57ee01b8fb9362ff5fd00193fc1a47d4b1219c909caf8697017de439bcaefbdd6982baf43f18366a6bf6717745a3a7fe999a1feb299b390e899801042f9201b4965a72c09bda2e6c49402239ef67271af15a02b9045061124a4ded99010719953bb1e9b8a1497146f344903952644a310d54c92efe0dff28627f18d97b9a018c9b07cb5bd449a6a3d061c71137e8fe4b7a6260b1859db1b895a744d925e7839b018922768ad14c45ade3905dc108ac6710a66dd69619256f439d42ce06f311feb09c0157bf78d2e2e3bf22d29bf400959753c664d8ddc4b128d6552ffc4778fc2c1e5e9d015d7c6672c903fbf39f012af763c602645d21623eb1f586d4d4b3a4940bd644fc9e01c8ad7f20319772311cb41682596a70603f0d38e3603314d77d0adef12d2df14c9f0102c1a55e46576cc2f600a2324e5e70a221488363e8c53b3bcacdb77996690747a00127eb73aaee554fda5db1406679a738d2e75f5340724fcbfcd5d307b65fe7ad7ea10135d6f6396adf03576cda03388ea017cc0c03a2416089b2d54d43413a0a7832a2a2011dbd6b3e41e45088cf60fb6fbcdeff31fc7680deecfad4928147b5cc115a30f9a301e67c6256fc7ec41cc971dc7f64e4b855c1309cb131661368aedf0032a05e8c16a401183ca76e36e91b27b3e82d6bcb6bc971c9b45726bbeef60d628c4945b1cd09daa501a995ed68d5722808eb2e621ecca83568ea21aa2a83d1ba82c12424cacce21b49a601460b343125a2817d47ffef16ae169b5f17659d03aa3b8dc2d58553ec18a88f64a701da218f5f0bec436d022cfb54a273e64869a47dace5f1476ff5a06e9142f4ccfba80154f037f2df89a5952a6cb3968c23307f79957dacb841f9b0c6f90744c205025aa9010265edd55c467fc9b1f853b5528cf03dccfc1b5032665c21fbe4886ebbb565aeaa010d7580c7c1c15b6ef4eaa041d51014970949ce85d872871b50f7d16006913a2fab01d6fbcae5cd0b824d0302795a982060397f580118be00f9c7ec738fe45e1d9c88ac0164597479b56d20f4b027d0a879955ae45e67ae125d36479ce912ad2b6f3e76c1ad01e61303e5d0ee42904653d579454d780f2b3409764fc72220f03edff5a39aca7aae01900a432bb728f8b13a06aa35cad00618c9d21e0abec8925d2be93d354987fd1daf01a6e2607ffb4d2da832662e6575fc018c1e6a075d850d5fb6979cd9039b6f7339b001998fda1aad0e391ca2debd7839373292e8512c546d89daed02c533d42bf64760b1016a5a47836bdd5feeda62804f490d20ae17fd88eda2e8816e371a10a381a4fd71b201c0e61ea8dd5b0fbf3716521f06d66df4eb689ae2ae42fcef249ea98137646943b301a7da7212462c2680b73a2a1f38e1acddc815d533c217fe0bc72bc2a9ea76b238b401c17c7080d5069b428a6cbefa6bb03e1a01d7bf3f3f0fe9ee42c850bce2176478b5017bddbbeabd1a83b4b02b9c742958bbbfdb430f6fb3662ed97e4331ce8662127bb601392f7ad9baa1a2c6a6d4003832be09a802d2fbd6fdb131903493805dd3e28ef5b70102ad5f31c28bf5238118df72f41b9c8659ba3da4f48f5410af166e4f58c6fe26b80103abab3607cb6595fbfd37b8161ea9386e1722e444f76017b73bf9f39e0b043cb901a5745c1dfa6277e2bc11acc6473c184b42e7ad1e14749d4d8809e14c9283edfeba014edaa02c149c70122770592321c2276cfceb7a9085a3da056f4b4a97b4417b98bb01f612b23579dc8bf4408e71e364a40130b5f16a5ba8d57e0615c3aa7f68e34a14bc01b97886c888776e14accc248eb39ff820d3f671b0aed4fcedd50324850b06f390bd019f383fe1d13fbb94e9331f8618665b41df90012b02b32ab36aedecef4bb9085bbe016f30e4017279e01c529b4074b09bdda5a0e93904e1991b2f2d106081f8ed03f1bf012844ab867cf4b984b20b13e1ac65f7ab6ef2d46a05fc410ddf3b90878428b09fc0015afedfa0d30ccbd0d4a3986f4c39a90fe02d7c915571326b0148ac60dbc8dc45c101e8be9f3b6d7a92c189bd41879da24b6679a0bf8df6b5275e3c6db0ef66400135c20152c3bc639749526263edc4c34e9378ce007b54fc90a00f6e7ed6d195685b62f9c3017c9db112f428798cf8b76d22c51e80baff49f560c1fca4270bbe5d4b094b2ca7c401efc027dac4901d111051706dfafa28a8e138c1556c13c4ddeeaad57a6d87fc5fc5019c4469ef4dead8b35a796990579c254a9d7890c0b949e52a6e7fb002c6dc9ffec6012113ef1fe0ec888033e90844ef2e715ebfb20deb15b58ffeb533466d838edf9cc7014fc9fd37e23e0560d690b6891ca29f9f4e8126f9a504395c0516f218415bfe77c8012e980c7d47fb557e51b11b1cc92d0fee235ff2d81e6f94228500a1a0bda1873cc901a37d705547f65dac36404d239c1e404ffce0b41d4c8e3a52e14f3726cbe02499ca013164a67351f9e0923c262e4929d2858775539b849f97763e4cd7924fccfea201cb01c2b7a436dc87615589250685b5e1717cd4c6a040d6b490debe3dbece965293fdcc0157942a6c58c248f677a1633d6226e3317b8b58c44f7cd6a0c328345aa3412c18cd01d009a444e5f2ee9fdf7ad893a44ac052641c0c96a519a957cb2e0a025c0f5315ce01ec0ca8a013465d25d5389d96d5e9931c2e1404c3df67b887a0ecfe7c64222246cf0134568ae853b87ddf20d90b5232e1d1ea1c0887279a85474ef70578d5693b9e8ad0010b23a037c7dd236e19a4ed1e4a83f70e18dab1439d9c64d7c309fcd94dc6e109d101763a0e926a47f42644a3f79924d36d8bc5c264ee11819a83e9d601a6e07d892bd20121335b0795728be31198332c29e4aceb6afe7c561866d6bd15b3f5e347ccb6a2d301ca0ac7e981f58aab2e654a94533bf57b7b995f9c52a12c62e02d0f3c39197075d4015721bdf317eea8980e1d213ea87bea225b8c85350d0ad444769b2ea57423f11ed501c454e379a8801688946334d9e21caf5207a1af6c8d8aff69d0a16c7298784a3fd6010dde723416f7a7ba3e43dc2c2612c0598df77979b533078838776f273034fe85d7013758c710e43453a61da6ef2b247ee0511f70d0d954b12a3343a4ffa5cf86627dd80162ec8efd376b22742c2539572034b5b8bb4f9368edc8709c6bcf1e9033c0bbd9d901acbce2bfa280691d6360f92951af73152a00a270a5a214f90f26b00b49ba63d0da013bcb4df1ba6bf6463a84f2dc990c8b479e0aa1c77e2ef0f5b5dc6dfbe712d2e8db01cdebf9cc1ab4f66adbe307278a6bedcbc03799bacd8c76b56484f4b58580759bdc0198487456d4d021895f9f99be065db71d19d9b0ac8507be203a37e3328a584f33dd01648224501c24de528c66b51ac7481f25e3f45a50ad371b9a4d4dc74fead82af0de0131242066e950ef88183652ee11c9ba2842c696587f369a92bf18498efa4fbea3df01e24bc738462eae9be6a8d840003693e9297c6699af41b04ba6ca70d6d212db79e001ab7592c995950848154b8787b848e2befd7d4130aa419a26cbd31d28e8610b5ae1017c0ef1efdb25755f1f52e518ce64a4c2d2d5cbcc7c26f41b42afa25c2f42c2a8e2011b928c3f42a382934bbb67e8dc68e0070bab9becd5b703464308138b5d1d4b75e3011c62f0a5d8e7132e106969d5709b57827670ffb7408cb3ac362009d5874da43fe40136d93f2c428b7b11f9fb2885ba9027c44223a05394aab1e2a39bdcaba6faef39e501605772b29bb2e74d4f20f7b1ae5abf8146a16ed985d6bea57ee271a10a2f073ae6012d46bb0b148429fd7773ddee7faf4c01fb696a10e80555840b1e538d45378309e701e3785213ed9079a981c0abec4a4388f7fcc6f4cec8921205876d7f2a44d020e7e801e3a127c4fa62193acc7d4b258bb85647cc2c5df2964535e3f29dbc9832d5459ae901865c26bc97c1808c50b3b9602b15ee3908a46c78788f2c1e293f077381bd5a9bea014509a7d37ba42c4ab67262d1a600589d466199e55f8e72f21751356ed61bba20eb010112ec9e739ed8b1e6272cbe59a21abeb84e1965337a2debadb157faa08b32b0ec011c7d1662bfe3c454ac8376a2d406e68376d2ab79969fb73585ffcac130b969cced01cad266c5ab6349e968960129a5f1344d0172fbc0f7729be6fe2fa823d032e43bee0155f62960427e443c87ab0d418b1f30c710ae27b30cfcf70da57aa4d4a3461b12ef01f3633028170e9720a3ed40b586125dfaeb772a164988243cbd4a553190442053f0012d73bef7ec0ea45f01740db8d4f96f69d7d59f6db951fd49fd10287915adac38f10153586f4969de5a68c8aae7a285c1f60b323b542bd941fe938649d82843046459f201c87156f9a3c1f3435e0a9a6229db9a7cf7d8667db7ec7304abf031bead39fca2f301fa6741222e06e4e98b61e880a02b5ce3df5a23b83804be06fdf2fe719caaef0ef4010109ff8d1963cb0b29d3286415081926cbb86289e8edc033f7fbe15118eaf8b1f501425e4ab94ad5a03c52a0cb31bf60396f5e65e6a0dbf7aebf75fed4be20c7811ef6018022313a2aae4220d3c2bdcf3498da8e0c371409d7ec014753bd4c4e86570706f701c1539f99142733cfbc6e04be7326b36426f904d54e43f69212b63e0fdb10cf51f801b61e31f304d7e2c3c9f976bcb800ce6d4490e4d31bf61888f4ffe0283c7dba41f9019dcce67a2eac6984ba268b4f39b0f0887a6bdf7eb4f56ac418cf827688a97523fa01fc00453f19cee292c44560a8065f0d0c5b7095008931421ed6ffe0671e87cbb4fb01e9be2be56ab5d136359eaf75ac7ab67f6d1c928dc997081215c2cb38957644c5fc01b1f2686f5411d5e7a227c537f9429e27a231d12cad151d64c86f38bae8a234fcfd01d5b89d263d928466bda76884d6871cb754ee4b732e3078320f5eb21e1c5dd0a9fe0117fb53e8aaac2f979220afe29c45e45f5839b69fbcc8552f011bfadcbff9199cff010aa24d03ff32a42f92bdc7d3a424601b521a9058a3739ce3b9e083a41bd1087e0087ff00000000012157599363af937531a1440bf3ad429c4b50225c025d2aa1f36867fff69ad5b30101d6b7578797e6ee422f4b510737ec23001a9fe3487e393a83c03b4763583d64e90201e27d24bb47c3922409a5e24dc63ee51ebd903d5622a75091120f59231cd7ae9f0301d4404732e4c0053695f217c4f458ca153a150c7fd180cd27ae879cf8a937f296040158319537aa58d100a22e2e91b9f744b937ac5877be22d6c4daca5f60fbd124f10501e0eb33d481670779a8bcd9616a3ebb382b71ce7a06379fddeeac66e8854b9feb060177061a06eb444ad0cb7da17c37a6831f7a599c78ce1e2097888751661f4f71d20701e60b94fbcffaf8b928fbe6a27720100c595d5f50ea715ca8ec53ae6393332cdf0801582c62d88d10ef31b1ee16a9f99491da42e3ad0053be54b292ac9ac8a5f9ef4b0901d84577733f54b1425f8c12de3b4c59dad8834a7c61072944ceab9b9089f9b9670a01e776eb80d617957447ccc9e144a7899dccf64197039f56ae7fdb4fb4b4f7ffe40b0142fbb7b3baff7dbeef758b59f0eb40388344f9669f60caf36ce0083faa88cef50c014a2039cf060da1d3815e23ae7ae9f1d287a43ead986a743d4e8d157da16a1c920d014143031b621d844cc8370b0c08f7eca5fb692a9764fe886d0bbda8af949532d50e01662f86fdc4cb466e339448a07fc377406b8ddc7a9e01aa55c94966694d44c1910f0142e8d40fa614f53ef14934216c8b3e3fc6be722e0012dceba1ed001f889e9f261001092e8dfb299401ff8aed9f881e3dcdc2b9ba06f796d89dbd8427ab6342baee75110190d4eaf70f93afb7b898177f8463b5428b94ce0c45642b5bb221ea5aec118d2f1201eff1cda0d15590696b9a49b128a5264c4f6da72cf15ddfd38f9a907f788280781301e759c8abc4a7fc0da6bb3f38b0ab503042ea4011ca7c515c3dd34bbc6241cfd5140120d5a2b240faced656021ca63cf3dbd91167297ce384af457d3bda471bb4a4b315013f006096d10b225a1b87c5fa70098b84366beaddd93f384b9994602d089bacd816017ff4e16d3bfbda14e40ff5a30367043f79d35d49bfab51faf9d26d18b85d7d6e170118c83ead55e7550cac75bac32b88cba3172a77bc8e792f7afb464bbc52fe4482180191fb352a8cb1db7b25f2224fe57387ec51cef2becf823f6cdf2afad6b6f111e11901de89100dda6c5e8d1252c9a2afe3ef6fcd9b964e259621582c54b954a4bef8da1a019ae7cf4deb4433264f8e89de861fab5811220537c2ee4473a0f2d6f22c5543371b01809cfecf45911766c761836880cf46fba15d3a5d9e1b0785185ed6bafa9615861c01369b6816b97f3f1727fe660d35d314b036b6293672ba16feb8633136919475771d01e079c750a4ced0cc72203870f3e6352006d7794e47c7a523a884824729d9a4441e0168602eb222b683bb3d86ec750ffb651165037d1e3ffed04f6f1f741b6580a1211f01219b3076be41951bb28fb11c69dc82e9f0b4b305435416050daa58c6f05ce9a52001622749ce324c62976f06009c55e798871cd9ad9d82e614a63082741ef3678fe2210131ec64ccaa8578799299d17ea1549f41a91afc21d2670cd279d4f95687d3f06722017938f37f0f82e1236b22313a6644361567fd66287c6867bb469ecea417b65d762301ca22f920f8a07b2a37ae3093297f070ca665f1552cdfdcea414dbf5eb5a1c7af240122d5a86886b68a1a67d4ce6082e1389031fe44a51a5dd62ef6ff05195661c2702501667701e15e9e052afb8bb7a8d2ce3b6520320505f0b030207cf30ed25c5dc5ef260181ebf40c145f48c69e36c1e98f898b3bea0d31c8d8334774006f55ccf318afc22701cfa230464f65c95fe35916e89f9f7d7e6acedbd7f18989443d7c4b174c2047fb28015f99b7eea57ec2da64535038bcd8d7099b4db020f16a94d7d48d4353f35bd5f12901e3732fd0ffde17adf2dce856fa7be2a07f28d1ab9fdf78415bc7613cf45396a12a012584a13e57fdfc93cb7233bedc71b9e294513b25bb8430982c4df6eb390af2312b01a53ff43631d1a1f4b9e4e4ea1061d08ec06b94d3dc85b5cd980791c7484621242c01448e43fbd01304933210bf5c8afbc680e86001ffd7220069d424cc22d8115af52d01d738a2ac479970f432f61b2ed5e3c321f2ea295b716ac2ccb538c65c3afc316c2e01c92c3fc802dcf796af47bd8beaef5313e620681ebc949015cf0f8501f54e695a2f01f28192f299c32483e9e98639dbd7bb31114f8ec2cb7583a6c04ff61926754a463001345ac0bc596fe2e0f1efc34c3b7b0f174a4a4c17d2df72a17eca2cc97fdc856f310183e7b43474e16e2893555e60ca534ef12f894745bfe7514e2fc436f7f92470e632016dd7a42d64e6ed29bfa785f36c702b9a9179e3aa1500ff34a426dfba53b38f4f3301a362f1452eb89b746e6822ef56614870a9b5999f2357d0dff518a3f187d9855734010c527718bd8bb7615bf098c187def3e2b1531c053c23de8d7ec18be6359a45bd3501bbaf74d33c5c1b42cba7a7728cb5a322a74e90b3557f4eb7cc500604464d58183601ec104614485bd7f775c11123418d59e259c143a749628d0e9d186a0c3efd1b2c370173793766f84aaf7a369808467922a6102ba53b6dc5e972db59263e55f810dc50380132d8bcf1374468603c6a6da8e4662cfdafb1e97ca775b17cf6b410c88c5a54ea390197069ffa0200cb0fbced3c7dc00261379aba6ec55dd5ef8baf55979717b9869f3a01cb2467d5fbc4f412e15ddd3be90712acecb85af8410415a974cfea3cb40bcae23b01ff79fb94f16eff55a5db460b6826f6572e3cc3a20c2a9e26a8ee8ebac695fbcb3c012a1870186f7dcecffb8f2610cec0862e4cf84a6a461dc60d4e2ad17d4393c4e63d01c0cedd5ca23a98a69af25e8b7d6dd347404c0e2cf336afe7c041275c4e6eb19d3e012bfaea864d0172a7a0def7efde8a3969662d1b7e80a63dcd9800214050f8c3913f01fffc689336eebf96b049c66d116c1bbc95d6b3ace20aab2332f25a814f370e8640019b413cd2c3cf2791b7d4bd948c7714e938639566db6c4dcbabf7776567aafbf641016d1f28a10bea7580d7a01aa80d119988833fdfccf78b526ee885b790017d7e4342017ab3a93ca0d3c5b6ae7b4d326f3db624e8782996ca6c7ff19828b4a81f5292b94301ff03af21121b9e22e2b26d0bce19c03f9e98a25e99ee94f2e55f4d9d2beb452c44013e09c1745451778f5c061032c1045dbaa4f221ff2c979bd9f3009a3f273afa774501225f244c8986592530f5467e533e80be2c5407e4df3015a8c0371729b21d01894601d8c5e038bb1b17c135e7cfd11f744c36d81a1366b987a09bb67f494769e325384701e98f0303601e0495aa941ca5619dcbbbee8a71a123abc88c4f993ab52eea8bb04801f686f5432a1b98f184a18b0c87322bdae36b16f31f6b1df94c15c86625d5810a490144c2915fd2b2a2db929da99af6cd0651c22bbab14f076c2ab8976226759c73f74a01a81755ec2e97a1990ff1c0977fc21b9f94ee9c470ebe7c6e889c2d007bbef52b4b0189cf86df850ec9189033f8d7321d80af51d84774c54cf00bb8541112e4b5ec234c01d8eb8f933616e0ab248430dba988aaf3cd3d7401e64aee9d0999c54d64ff03e84d0176bedc118b21a8e7d38cecbf32324e46942965da50d2eb17cc6c873140eed15b4e01ad66663d11ee998d8d3ae40e7366af095c39fa5cde1c451a04524e2779befb484f013c763364385ea23400af7060906c715e9d195335af651d1859449976cf74762450015f4f49fda25d7ee4b0c0052e0466eec4bf23efd3165373b5ab56cb7f253298bc510125ccfc8756cc75a17f58939482c4c3b4fee6df3ea96e46fc44a8a5f485073cb052013d63188d7395c7dc69903864c94f2f2ef4d85544efe9cb399851dd270b6966ca530153801e88128b88c7e7784720e4b9eed246f8b3b2ce6ea9d3eb984aa713bed37d5401bbe6a93d6503102fc53ea0968f735c9c0c0183550426b5d4bc14f0c1806d3dd25501d7f3338998f456a17300b162989959c03a561f889fe78b87c0626df23f12394656010f53ed23ae7869b27ab255bc3f749c5a4280fd6977ccf2cda23d16fec99be49557014d7d308b09a84e481f1c86ffa833e3eaf66fefd017d4023951d935f6b8d4fba15801fbc3ad5540873026c5792154f4c5e44a93f95825907a4b507864665004e2543959019580b2a5082556276a565d9acb861211e479ad6a4ec47ec1d5ca2a4b04f778505a01e3080e2d969cefd04777ff5c959ab3a89054ddda2be6e7a0e440f9b6dbc5b3d85b01f18d785181fc1cf8c49cd8ffe8e14b927767f86b0e90a5550df9a0c54713738f5c0132ae85d2a16c8e1f02d6fd0b54adba568a2f47847b47b2d5ec8361b59f6ec3e95d0172277e11b7c155a65bc4c2cbf9b4c367da5acf5f9a9d86286718a47d937c2f0c5e016594ac46de3e8e6b82b6bc9b16d67c24565eb7447d5d9b1e410e48c33ea7eb405f01e1e402ac6d1d081299950cbdb3aa47b0122c69245c043be4e18fe47d5405826e600168da25a1b070c018832e2f195ec305230bb9735b1b7b3ebc348e808d5485f57e6101c59d2b1d0278e12d65b55859a1a7762dc48a74e78ad3cdc16d9ae6ddaa9ae2be6201ac5595c560c454daf2f053cfd0179d23ec6e3d070f22c579e4dddc086bdec8e46301b953254dfad70c9846fe32ab9ff9582b855f0ae666e6c59bac3047e95548b9ed6401da13a0cb2899f164db88c746d726adb03aa24bb7720c4de4c3d3f0d6b77720e46501bbd9d164807145147b2377d395c17ff3ae3a151fff5364ecb9aa5a874b808e626601424546e2e2af2f16ef01149533456814943a59f64b896c7139060fc58c4347e36701dee3f7642aebc89dda5f005850ba92836e668846278d25e15846749fa3d14c196801d23062ea9512fdda5aa2b9ae91b8295944546e557c67aa777fa4a087dc455692690147842c44339055723a39e02a4e08f7b7a32dd10607e2656cd0a6648f158e0bba6a012a82b801144fea4665adfa2c4e0f5b4a8de54e7e4052be0f46e3391611d2095d6b01053f032c42e3183b50e43de3f3cdfefd66f204df537a2ed8ad606f6e411b6c2f6c01f1566eacb01c540a5e239397f31b91479f9d29ee8dbeef1888dc849696aaeefe6d01a0ebf49c43150c44c5ecd77270a02c2616fb7205aa0a136cb5f4ae0097f6c8a56e015ff6f550fbb7a5f5c7d5bc1c5a82c79dfadc9621b477c110935ae70458e874ca6f01dced63c64456c0617fe5e695c63ff97e5e856017aa6d34109ba82218799c673270015850852520620800771b8076431f61969ec1f7995c08de2a92bbba16b9c9668a71016880be571f6ebb6e8907221d6391ecabfb46cea18dd0ec61492bb6961224cbf372019b542d5558dfb1e53dbbf564fe8b27476d575e14a3d90abc865feaeed7dbad577301a5358224ce4282db1c2409d681a1ceb9a46b46cfbf60cddc0e75c4a761243c6c740109e75201696df0798f90a6712bcc99a9ff349ae1e1e1a7f8354fd8a6b2c9dd7b7501da2a174ed2f36598831a085804b182102b29538b995932becd43601f68c8846e7601f657abead3b304040762549e43e940b580de673bc7a301d8dbfe8c6bad54ad7477013f2f5dc6cf808b6981227f9ac93a4f02f7d182745a3f5fc513b5d8fb972615fb780114fff53cd8aded97ea47bbb3077771e41a4fc2b238c2083fba9e80984bdfeeab790103d2b387b6ac52c290563b53ba254fa47dd4fbe8e0ede0bed2a04003bcf5c5a17a01906aa9548c26ed6fa0a3cbdcbb555316c2fc78ffef27639f57babb244e978acf7b014c77cf8ceaa77f3c8bda88e0981a38e4eb6304e4fc0bfcd6a92ab07f4ae79d8f7c019ca2c94676982e595b9765969845675537ead24be349b5a8669b799e7c2032f97d0150d11323b38eec0300df7a3b0610a866a57e82153dd9d65ed40bbd147f6d1bbc7e0183006a051db6f2188afb354ec8b5bf0e6a001ead58fd31d9499da10a884a21987f01f3d3de5b213056652df4b30efda2aeae44fc9c8341f966241f6ce6cf8f981e8280018dcb4575c6c46c23fde009e90d817cb3a6a7bfadd08cfeac4e96432075b4d38d8101e3124b390ce8133b2fa4fc2fef52e6dd041586b2a34796cc8ea94f158867f1e28201b62271b9398bd49c8f6933d37c46d3545011acb32fdfe6bb5ded3a8afc15a59a8301d65618acfee474fcf36488364e96757f22b3fbe56fba09df8203d47a8c8f707384012405c3fa4e474e928aef172f84a15d86919063c70191f46e1f90c713ea78096f8501c04a59677df521a508829ff374cb7bc9adba1a0335ecc61ef12616b3d03864558601d41be04821f60c1765279f42e16e1a82c55a31dc2ac6f5c5c441a97f45482a57880129154711dcb61d2dbb5f81b089c6a3edcf2f5fe6612ef8ea7a9b48411f486d2189013d68d35a3325b16001d94c35fc9cb2ef9a5fa336fae257b0ad4eaa3a69291a3b8a019afd5215fa9c13eed9e5815449fc16fc3804f6c498e805e6b10f9819ade006148b01c062a52ab799eb0d9bbf37d57d27f309a3076133296bd3ae368e8131f8fc7e3c8c01fad17ef97db37c11f9015b8e57551ae76917e1d62e957c6e4716cde44afdc0748d017b854444848c0c266a4d16a8fa6686c7281eea10c2f6d1655268a36b956d03178e01bc31f5658570c022c2e0d31022ca32ddd43f0ebb28fe6644d53ce4295c760e668f01b27441034c66f06e56ffa24df527e2a3198a076698c8eb7e9ab47b198ae099609001988ba6c78ba30c0597736dfb262c8ddf53e3893c8cba339313a611e3deacb35691015f69b4afe916921386267722bad1360defcb2be1aaffeb4b2bfb2d77857478df92014804e97789a961e898c69632f47ac8aab0f7b38adf0e8dbd79982abe71507f0693013b04ffcd72197ee5e10ac5eb0f6c69eede31b7a1fb9cf773383e2eb1f60abfec940167762891bd6aa497fb34e657690b55142d8f542c9751d46f1df529d23562240c9501bcbcdd2154489073b761213f374f09f50ea5c83cbd5986209ddc81d1e902cc58960134ace22203e32697abc08c598a6253ed03e614fcd256c4071751fdaf1b8d8f9697016deff5f7f58cce26a26c1375af613c5e5a5a59c5ad35e29c65158f9108572bb19801651540baca137ebfc6a22b3f17567718d63c2e47b85641cd239998954aa3f080990115327c47323c21b457487f39b8b744e6004a08d84f4fa93c3ececb72172e07369a0158b4e3cfbface67b1e6cbd5d1bdd82c6f2e0aaa4d02f6f7534fdab2a2f91dce59b01eca4e9e6c41aedb79e8f54f577db42ca4e51ffa614a6c14d094ad5ac7e6843959c01af31e73edfda4c94a6f296d32f0d3f077cf1e3fa309cfce80c1223dd6adf96c99d01c280c740a7f16be7d7113876d5c2f51800b570e4f4f7e7dfae9fc8f5688fa7b99e0180915ec0e674c746dc07562c92b594560aa9432d68a80b9e797b65dd0d651c419f01e6f0599e470b168e26e28b895949d47996a6bb87b798b8083c547b72d5f07c3ca001702d03c9149b9716f18341022a99e709950a739047886f4294a8adc1183e9d90a10127564397a14dc73d89b2f4946ae9a552f47dcbf41f69d1bd2912b85dac90f126a20158b959339e5ddd41e31a91d4e12e7549da89a271ea0f08851390087b6ea64f4fa3011e957313d71f6a87f820d0d4c7f8c87136bf6330312391cc7a6eb3a279657b4ea40183b167c1ce106914c3d6e154f637828993d0b35ce23f2a47be56cbcc92597a46a5019ba81b845cfcb4fc5f5075fe9c91ed3e60f0e96fbfa04203933d1df5b85cfd29a601e1389963f16510d044ff958d60723a1f9441fa109a69adbf310982cdec09e341a70168007cbe423c4332e66011ffdb5afe0ab52eac7d00ff4516eb6c218e655ecdaca8012fc9a163e338622adcddc86be17ff64b7fa597e0cc5532b56112f69f38b919aea901f27a95dc2ef27bb87684cc860908c28f8dc58b8cc60e511f7cf4d9f367a102c0aa011ce09ac3184a131ade16d8f168354150a1d961416ab68b9cec6c12058cbff9d1ab01ac2f88d79d84a432b1f0989efb8b6d380d4071842fd809af4900e3d68ef1fc61ac0109e954909013d8a70e3132e964448b835dbecc686221359351ecb848de756958ad0113c2195db171e6961b4932a774ce9c7e29c5a3f5b9fc414f6ec413145fb25692ae01cfc519bf3326020c5d66fce849da6fec332f89550b681eab5e48479a86fd559daf01f8ca959e32b212d64a5ae9f6c5f01b22962199287f0c295d2041da8e2a52d24eb00173118f220cf8b9226877e76166ae5f8ca3f7c7075bf4bb02387ba8d53aff20bdb101f87631ed6044beb15299a2c21cd2f10cc63a2a83a0940f9c5931bdb0234deba2b201bda5941c0626906dbda550df90539be48b09ac52828e572442cd0fa88da1b588b3017203d2563cd23078f0efc70e6f55b16ca332bbe4043c7adfe90dc6352f707593b401cebb08e9096351fa57c5789c9311ffb5fe972edb2de888aa7e7405fa32f26d52b5015889c292c8fe1bec985313a2ec269e46bd2ffd2c126bba3243ec40189be40c5eb601578bebc3324efafaf6e4775f12f9ca1a059541f09426f1d6261b2d3dcbc25023b70179f98dd5d107c5522fc6d9018c0d4be4ad665223bda611146848b753730aac5ab8016f2fb8ff6537fdc6d067f289c02dee0e341d14b305d5895857439eae4c4d9414b901af0904895eb719890db01cf62d64218e7b90e3f15710d6ac699999c695cede2fba012f29e34ce205bfb6d5f5b611cf7d88220e3ae379532b03ed928d3be1f85ba53fbb01ea805583648b59b63b3eec64864e3af0ca192ca9ea5eafa2b611e7d12a7dfe61bc01c40092d813d68f46015c0b69d4475b4b437155db0499518c0db366749243d1f9bd017e42c9bbafb70766896e0e9671cfe4417e15c88fbc5294ab78d95e5fe3ab032dbe018908386ce1bed140dcf7ca0a6da0374071673049e0dcb329579ff0acbdd324bbbf01fece3aed498d692abeb7ad36e9ba87d83a472f0cd4369e9e0b29f369d6566a9ac00147e446f7a8d913e50aa711b2fdc28ea51e7c1426419db7f073602167dfd1b89bc101728909995253b8cb83ff5bd02f18b6d7f758bd54c9187a427017a9cc62e02fa1c201c07d9e5a0e6105c1dfa767fc49f3413a196074396ab5518fab43f03366320140c3010abaa46b747f4d8fce830c6026a2674d76904ffb739c90e4f482068f08c49ac7c401acb1d1edc6296e535dbf95678931442530454ce5dd1b1fe36d7ac867351bb5bac501043a3fb057547e72ca0996b16753a4eadc1a899c19b781162452a8b15964bbc4c6010aec06a5fa1819d50a595900cc6ec928e3c80de376ed150cccd938295c83b25dc701a44e1443f7417f77418137c47c66c6997e02afa42ccda1951b04319c1f64dd22c801c923948395426c0a2b6e445d6aa4ff1e10d32924327c56f808321c1e3f4d2452c90198db1f726daaffb39a6b3d967579c1d377146a564e22420a56f6b7cdc1a34c0fca0197fdba72213b88d16bc5e216a8150252677ebcc9d0edcfffa9196477a4525e94cb014a02e0e5cc945e18d7481ed25f1c19755d23598a670082c2fc8d0a0904519214cc01538e917c625eaf0f2457527ce27de7f75110fac0cb6a49c419cf27248940675dcd0182547236a967a21446bfa6843284d2cbb9efb690bad208e1683fc1b1aa2272cace01d1113030b001732064f595d911b8a14e830efbf3bbd7a3a857939f08363daa24cf01e183077fefcbd65baf2f50be129050100bfa4120b7f26110223009bf438f27b4d00197b08e6f491a20fcc8e635993778f7e1d1523b84cae04336a0f56fb3c80bed84d101c6553a54044aa2b896e23eb1492f245e363c4f54ba6368622d8cbe618d7471e8d2012bc9f3fbb88768ff2c33c65458b0a69fb195be2b492d94cc67fa9d50c0f88612d30123c4551f3e2d1fe98484cd0085687449dbe54fe801edf11b2dca77939f7d72edd401f9d08b609c69c824e773c29d88c45062d70edd5da8be4bb1b83d2f69273e62bdd5014e6758ade0307bfd9e6f0a7841f31b7437419b646ff90d276b8af5811a185499d601c071a9c0643a087afb78aa527557b1c2b8943bfa4799a3d676fce2cefa85e7fed7013ef0b8b1cec6cc14b876c924b3d100f08127511fb328367bb02ddda56be07bebd801afe09f11f5929559e7424c586bbb680d9947df85bc22a50d4d0870dfa1434128d901385a42d14784c1282ecd898ec5b02e0fc46af6d89d84cb70212b34bd64709c51da012517d7d0f1d905d519d6462a7728ee8e36f53e308cc0146f588dec8111dce7b6db01339a44295e5b22c88b0ca36b74c67940205dfc784ee4c7d05f6a9350dbbf3190dc01cb7311d37b6f2d6e877b84f62b548d71a8092155bd11521f23117d3ca3f5d6cddd01632982b556bfae87fd79caa3bcf5ed7b4cf25e5011e90fb267f0cce65ece2e13de0157ecf4a0c647eab7a0a8355275f01586ff4a5722c915a858b274e14ea10638fadf018a77f3837da051b3608c9a1ee945e869a9e55a1bea78f13bb520f8cd1349a03be0018f8eb99a9bf80e075b263d150bc40c71e7ed9a1ff4506ac53b34ca92f38d620ee101ad6e2c279009681f5165b8480cefb514365a01ca2d6429ddec3857bffa6bea1be201369ad72846bce8658d11c17d684b316fa231dce1a06d8a3b5a2439f6e6a57a57e3016c6adf954e023e231605136950803cf2c52b311f5ee632e6aee0bf53102a2c19e401bbd2ad2ba10e45c1e6f847df9c314711dd08709a6fc522c921d7709e9d5d4013e501de8488a438172c15c232856863a44c70c73de532f003c0296376081b4b69f361e601107e17b12ea538b800445bd0a9e28149b0b5aa0e5caa4b3e75cbbb0f7a8e7b1ee701ab02319db6bed4b67f190581bb8a86fe407299b3a5d6e75f80c2ddbf3706e305e8015bc6a4bd23b3a4f73e3516068ef72819130c92587ff5e916cd6aba97a1ea1b4ee901ea543b0d59c56e9cea7b61aed32f7fd9edad7f8ef2095242db7776e58a69ee87ea01a508c90066e96af8ec423186d31d707850a9dcbaaf9876bd1a206f9ad74f9059eb01c5816e660a833309da84cca12abd44a92e5a40304f10cdfe476fcb6cf3b269acec017138aebb5edbc24e9f8294516a80e3eecd32b750798007daf615edc14119fcc5ed01adcdecd7b308784ba991f10116fdad560fc1e19851775b5bcbe6adf70150db1cee01b5c98113692eb8f5473cf97f852d9fe9891b5f319ce3b8f7d23d1aed7fef83f0ef018bcf96316bf6f570197ee1410b89587177c629f49762af646b6d39ee97f97810f0016832114b52fb463d04df96cfcf55b85dd5192a3f87473ce51d23eb026e9bc449f101e9e9c7d1138153d152e40442dc2aa649b945dfd19ba0b8fd8e3eb3991290bbc3f201c738d311bc9c5d4a0e2c58eab5d24da25d78657def88ca62b72073a19220c7f5f301d17bdec535883c55ab78ef3817702724b5f81e2eecf9e641362b30fef49cad3af401bb8323f58ec9095dba465c96791e552bcb3fecb5681afda5c366fc3ba892119ef501d6dbe321de3798c635d71d0f15aba6c6160990d9f44e2b35edeb093b35facee5f601c84d7886aa9126450e7101eb81e44bdf72018251708eadc069718b17b5dec920f701cd1074ddd9da730a44193a09dacaccb7bfff9d800f7d9ad985ec9512eede8d7cf8011624ebf0e65f323e56847afed18ee2cfc5c47cf00107395b54c1778ac49045a6f9011f9dabe016941e746425f95615c6e1277c5acd15643b38fb736d8be6854a16c2fa0183d30482e29cd8aec7ae9683383630f727afd4d68b0c975ba85749c800262cf2fb01b69c4a235576f4329b3bc5318c4165f62d3e3961ec18a1df041c6a9aae5be1b5fc01ad77c91640e75c0c1ef4bcd5d07d4c77f86aab6e4ea8fe9a178c169d260a687bfd010440f44eb43c8cccbcc7a75012a30a8e8f05494eb7e0ef785ecc8ba48bffbc49fe014608efdf85c08e9b6bd9c9d120ff1c0c68df402b15668234fc24347e276335ceff010a3cb807011411c57604c3dd7f23e12d0a405843dbf402a7e07d5a035694610200020d0000000001e9dc32f91a2bb9bcaab74996b0752ccd0e9ea196c056e72e53d5047af92f12d30101b1df9429a8a11078da204ce1e00ad1a0c75c965221de21073eb31c0882c976b10301d0d9ab29428fef541706644571d88be1f0acd4740e916760097b3f58d506606904010c580840638c41241c8101eedd758e85284894c2f788c719c23034e861cf2e8c0601546158553c0b5ffaa34056ddc1fbc5d0be90b6416cef83fab7c43e70e669f20607015b169c534bb9fb718bac78596321804224bc84b081436c392a1502bed1b22169080120e3d1655ee864bb68e341b17b1aac99d534e879ba32ea74eab82dcd170c216d090116aea13192551aebb29e5921c5a8eff56bfd5bd159fc8afdedb8843a537be8190a00d462592b93c79b5455bdbb6a24e16a4077452b68525dddccb671bacdade59b640b0000eac1ea6251a37eea6ce3d8b7f311f21245c64985f5cbc334abc6760d61a4070c01907500e49254680789a0e49fc0c90c8e17491139fb48a3c4cc3fca0713d26ff20d0084e404ad533d5c70d1ffde1e045507416e6b22d471204b11dfa860d7fefb856a0e0043d39741a6e7b395eace3b1fbbbd5bbf288f7a788e80745a2e2bb0f2173a8b4f' + } + }; + + const serializer = new TypedJSON(StoredValue); + const parsed = serializer.parse(json.result.stored_value); + expect(parsed).to.be.instanceOf(StoredValue); + }); +}); diff --git a/src/types/clvalue/List.ts b/src/types/clvalue/List.ts index 0f86b516..4b637dbb 100644 --- a/src/types/clvalue/List.ts +++ b/src/types/clvalue/List.ts @@ -130,7 +130,10 @@ export class CLValueList { * @param elements - Optional array of CLValues to initialize the list with. * @returns A new CLValue instance containing CLTypeList and a CLValueList. */ - public static newCLList(elementType: CLType, elements: CLValue[] = []): CLValue { + public static newCLList( + elementType: CLType, + elements: CLValue[] = [] + ): CLValue { const listType = new CLTypeList(elementType); const clValue = new CLValue(listType); clValue.list = new CLValueList(listType, elements); @@ -154,13 +157,15 @@ export class CLValueList { const elements: CLValue[] = []; for (let i = 0; i < size; i++) { - const { - result: inner, - bytes: innerBytes - } = CLValueParser.fromBytesByType(remainder, clType.elementsType); - - elements.push(inner); - remainder = innerBytes; + if (remainder.length) { + const { + result: inner, + bytes: innerBytes + } = CLValueParser.fromBytesByType(remainder, clType.elementsType); + + elements.push(inner); + remainder = innerBytes; + } } if (elements.length === 0) { diff --git a/src/types/clvalue/Map.ts b/src/types/clvalue/Map.ts index f86e2113..61e307d5 100644 --- a/src/types/clvalue/Map.ts +++ b/src/types/clvalue/Map.ts @@ -183,14 +183,17 @@ export class CLValueMap { } for (let i = 0; i < size; i++) { - const keyVal = CLValueParser.fromBytesByType(remainder, mapType.key); - remainder = keyVal?.bytes; + if (remainder.length) { + const keyVal = CLValueParser.fromBytesByType(remainder, mapType.key); - const valVal = CLValueParser.fromBytesByType(u32.bytes(), mapType.val); + remainder = keyVal?.bytes; - remainder = valVal.bytes; + const valVal = CLValueParser.fromBytesByType(u32.bytes(), mapType.val); - mapResult.append(keyVal?.result, valVal?.result); + remainder = valVal.bytes; + + mapResult.append(keyVal?.result, valVal?.result); + } } return { result: mapResult, bytes: remainder };