ElementsProject / libwally-core

Useful primitives for wallets
Other
280 stars 134 forks source link

Wrong sighash for reissuance transactions? #220

Closed altafan closed 3 years ago

altafan commented 3 years ago

I'm trying to use wally to sing a confidential transaction that includes a reissuance of an asset (regtest network), so my transaction is composed of 2 inputs locked by the same script (for simplicity):

  1. LBTC input for paying fees
  2. Reissuance token input including the (re)issuance and 4 outputs:
  3. Asset output being reissued
  4. Reissuance token output
  5. LBTC change output
  6. Fee output
This is the confidential unsigned transaction ``` 0200000001021c275502593956a16d536a9a0dc8d5ecc2d23603ee2a7c377cc84f3b4928d1320200000000ffffffff1c275502593956a16d536a9a0dc8d5ecc2d23603ee2a7c377cc84f3b4928d1320100008000ffffffff1ccb44ae73382bd23468fb1425486470e7f77265376c3f223b1652088feddd40087164cc3972bbbaea2a941ac12e2c46f793e3f25a5eed26eb47f2f7cbc55ce209000dc2166e0c79ff0046480394c1d7aa9f8aae55a04395ff7bd48b32157da90000040b0957a85ee0d5f349f2d317eca7a3671b1cf793db192b6bf8d5ec6856d608420c0999d81879620a8db5a21cc69133822484e4e600c4951262471ac39606d29a54ef03827e67a7b2c13c51949371804ce24437f98af524833ac4bbd5c41b47a9ec66f116001478c8b9793eeae4f8aafd89e3c54574c25ad8065f0b14d35d53a59c910fa013b8cc301cd954a3b787259b543937618609622bac923009b345b5b97067c8f0f65d517ba1f986ee7c4da4fe7b61d4773072ebfe01f9afe3021052f77cf51743b4f8d5a166fb9cfcfff9e6786e2293c03028995890cd431b9416001478c8b9793eeae4f8aafd89e3c54574c25ad8065f0a611cdb16a6bbe789d6767a3eb2106ca7e8b833c40440e7d90a632f1983e5ab5a08d6f9481dad4ee04b314be2206f7c49810d75f0ce5335a1c7b2e22b204e86d22102bc6b49ac69ea5f7ee43bdbdfa834618f0a43ba7351aa988374a40eaf282edd0716001478c8b9793eeae4f8aafd89e3c54574c25ad8065f0125b251070e29ca19043cf33ccd7324e2ddab03ecc4ae0b5e77c4fc0e5cf6c95a01000000000000138800000000000000000000fd4e1060330000000000000001bd6341014ee6dfeb274786f10093d78994671ad867dcf8f13cff4ca4b49daa09acd27b3fe4fb69481c7412b917b4cb1ad9bdc0b32bfe3b76496be28806c3ea9e6e06ffd15db45e94dc3a9ec65b76116758f504a148a3e8bd4dc16f08a5b90e9b70e892de4aca9d85a21e8ed9565ac4a2cb3eadabee6c581832968c4ea52cc46b26b200697d84d27b288b2702c4af806ff19815375fa614a78cc014fd173f262fbddcca12b0b68bf92f399f6c6d5cbe4507222c97dee980ac8942581eb2d9c5520fbdf180c85c49d4917cee92c2151207cf69b0519fa6d547d0ae32a163cf55d40d7e0a5a7d20b8ec834fca440b3de6bc6ad6d371dcfb862b623060106e79f0f32f740e6fdc22127e0fe6644a7315868771e0ad3feb19f698dfa808f4f74105949979bea7ff9e8ae4d6e8d6ecec9e63104621f6148c4dd5c8f3722ecc7dbce7eddf4dbee0acee6f075dad44914584110e1fdc12de27ebdac9b29aff88866ba8d9e00c08191ab1f00487d929466ebf8c16f2a143e63b6a08d747f158d26bda9e5a0dd35d120aef135ebfaf0aaf00a52108ecb2f6c72bbf223a2e987655015e472959621ff61131f99413102acca7eb8b2ad6c7782564fb731a0c5604f1c53acba8988655d3573de3a17983e1c3b44015aa6b59330dc0c51c9612c8864d56555d6708a074f0ac342820c88f39de1c51dbe3a5c6aef5a462945415be73cc2bc0bcb1a4b08a77bac4e1bc3e46748158c7c2ba4714fcf1cb4372918c15bb0e44ef1aa1906cc4ef24ecef0f4758cf0f516954eed28efa4c6037b993290c66b027d088be228ec59cf135520d326225702e0f1ef68815162c847b10444acac7628eac035d02f0e19a716ccff2527ee8d74130e023dd1dcbefd8d418ce210b4e15eaf93a7d86f4e9b66ff8514e00bbd860d576f2c23421e1476e15a9255a1c58d0c51e35ac67a3d637c1ce6c381e64620cdc6c2b57906a92203e4418bbee2cdc81df9d89c4799d0a630aa28c44fdcbf649c6bc8e9b7f9b94c1ae4927023c1a036573f58deb4ac8b9e0c973f437acbbd552281afa31c4b425952719afbd24c4f1a4f1dd64271852f35e84cc5488e9c4f303f1e7da3c2572b1713f0d1b5f581ff064be8db30a040f5d3af10aba78966dfb1ecbeaa1a57c1495aa51b654a30febe9b34e5267dbfe25b1846dbc064626e469e5e38098485f622f879d92ab961c8e22c9ec7d1d08865c59e360d898a95e0ec19277b41f0069acc02132a18acba26cf80dd2ae302bb47df4cceffa895db5a14b899de99afc90070e5ac874f49f11af5e40e6736cba30a48dcec65ae0d773157708cdff7b6c4217278edc51209ae8f84b7469dd3eeca326a0980f4edafd8e15d5318487ee6d7a1d8ec21b22c2dee5fde10d4ba70e29e53cd6953fbc61d2d77c9eb2d6b5f039f1073b91ccb8d1687f27b0c466a197fede036fdb0bc7a5e345f0a5d3348b47d22d0c8587725eaa482645e79729a478ea0f13e3969a70bfd80478c824684817ce2d430d165f413eab59c309f15c5732ecbbe1da8473beffe638bfe48c4edc6e135953f8fde2c7baba92278c67748a759a9371c6d8bba233b02ae7b8549e226d99a51829083c64a33d5bdfc5d113c6795bc80e8c6e018834ac42a6855ee70ba59b2fa2f9633ff03238dbf85f7d49e8618edd15788bb482ddd37a78ae7b08e95a66759f5b4690c0e3dbf99d8744dd53405e51166a97d629aeb1c7625b92f813669c1bdd66f87191a56a04bced49b4772b9fbcba4ee1c1cd6ac631dbf22d1125015467c14cac8659ecfa3042c349e9d702f9715e8e5ba4aba0e95249b83590bd6584aa1d234f9e9db765b03a7597dd7e4019c5d483f1a4a0ab26ada692840d227d5ef08b8c75dea707a93831835280bad6f5434a542f96aedcab830d163041b248f82f06d269cf69c8ed2f56604c22dda117211bd8c36d1930fb1271d3403907014e16746cf84f6494333fc19a5dc1fc8d9dcfee33511c334b9bb77948b5b44e05e1d49071a0368f36835cbc04e984e9a7c9237125cfc46cb635b62b2bf544bd7e07d9bb1cb99983e128125ece9a8dd33f869d4da9890e5fd1cbdd52d3e519936a91c45c6404d90e8ac9b50a0fbfda813d3c73d94b1d9b98be525451a0dd6acb53165462632827ad0a4cc4a0b589573dfc6e5fb3b5abc40869466e1bb294594c4190e4ac08ce9ab0ad77cadbbe0eebe7cbcdbee61514542c260134398ef6c810c1a866e76fd9aeefe5ba98d9623d8ae703e4bf59ffb0ab7a601f6b7626e747454c94c66c205ae2639c001dd33e71b0c7610948a826fee6fcf17b92a27758d6996f29ad788e2b6b4479a782555f22a30224d98f7d4b6fd0adcc9c77351a63f4b7da8d144d18718de2eb1c07659b93be4ed086f0a205fb65c8385ea085fbb984075db89edbd7339b94ce14972a0353cd1c4cfeef4106163dd485b21589ed248e101b3566d994be6dffe86f301fa2f67f8f7f0be2fa2397b4ff200eeb2176ae8171f9bce71fa9d610c9c0dfa7793211ee3cd5de50d81afcde034965dc9bc7cc28bd005b7b9825881ddf61a324bfce268b59a9d6360f97d6280fe2d4e208853acb6c60b72f513bf6a1b6f56fdac7ad4da300bb37311ba7ff2357a535e73ccf004d9b92285e9140bbb4bfbffc603ba997e163059e1c37cb8a08b9d79f3d20a595e70055d3c9510a4d8697545798e606d77d3dad0c8c0fe37316c952a1fbedf07ddb9a8a4f33798c71b732630d9108fd4c269bb664fc492bfd73f365023576706a299f0676c10f09b7be46a5ee251818782cf3dee94842422ef0b6b6511ce1c3f3ea35e8b8ee0e4c69c4015aba906e4a963696f972e50de47f858f74ddb7844f76f35ba3e8404a75a7c412c32efa41b2051690215a5719a4dbd114b4c2c5add0cdccf9df180caaa9d74bcc9fb75715a9f3b42db6f5a26a6a59599e591392116db0ce66802865741d5f6a10155f4a927f20f5fad0b30f7835683661d138077f0d6ce8ef45299e7a6776ca0f3215a6162b9d7162a8e83cf3e677f2e4dafbcc3c4421df3b77332e64f911ed6e544e93e660ec3f9a420f82682cc9c6124d6d516065dfd758dc68d0a00f9222780285fc3bc265ff46e2dc43cd2cf2b92ae8309dd10b247243e4fd91b184c7c59afe760eac974260a412f4f7ca3e93f3485365a822006f260dfc50b1e0797eca9c0ff457ada779af621db11f0da16c7cf19b89efb100c2e05b8df2637822822739aade67da859d4802f044d5f3eb5018227efee60f1da7710283a201bd713d5585cc579f39f4a76cf09d6c7f3774b719f9d1914956275314e83d45d00fa6222e8a769efe190eecac19d50c1292598ac0d07d1bf165566c5ac4fd87bc13d802683c7712cf9e4d53ccfbe9e7f73f4f217d7b8a11fe6f2c996b0b9b216813759de9bc7b50788350af89ef21bc4798955d0de4170250dcb0fcd8ca6d4b583d3cb475162e6861c2f02519d4ebdaebdcbd84c706533a4a623fd6fdb1437e4895422fbd730585e535fe955fc737c442cfcfd301b9db24821506962b2954e6ea22f46a5647b2a1f810a15b609731fac18f6f5f9104458dfb440b4d12a1a1774f102b1763501cd8749e0b1a9ebe5e41a963444cbb127c0a6a71a684e10a033189a023419fea3ddf1bd1c17fda85baff824ce56d558dab404f66974e1c768cad2118adc440602c0ce64a3cf762f877cbccebb40b9d6ca6054512a69c3f08e6f6f73fc0369a78910f65f3fb46cad7df955780fa049e071e248cd277b7523a06ca2e539c03a1af6f3a3711da820ce280aac286919d97f19be4a7640cf39322748006e59789ca29602c4d88fc998aecd7e30f525d9215dd1925c7c9964404347dc555c9ef1f0198a9bc7dcdc0999349efb9a0d7134b8bda9ebcf6430ead41b8e2c4ff2916ce66c39ded13521eecf0cde7f758fb995b26f754f6910df680da0830cb3fa427ea555acaae8c03059fd3d305d6fb3b225251ad6b384339df9cf354a73a884d30078d44164c52763e98f82102881e58d45f767147d2e802f2f914ee9f2ff22ba3e8bcaa40cef63b2c0f481f428b6480cae891ca787ffec93e691ae65b60062184f7e030fa0bf311be5ca6afdd7805744f22f6033b4d849d96e9409cc5eee7422f5138dd897111dabb021b3d8c79574590a1db10ca84849cbb6d2e622e403fa363307b7471269d6f0fec1d1ccda3a3d68f622e1851e0e1338424ce1d912da24757d0a74070325dd0279c905c84a31a135b9e68499cee39bc27ed4472c4d83d6d302bcf72c1892abb445ca900fea6e1e51b754e0cb9efc0cd82e5cd8dac7a5a7f0887dc6d236f4fa97eae2206a5468738ecbae04210d71ad35ab1c9eb45d1471cba2ba8658e306bcbecae49d8ab7964ed39a6367560751ac605d439efb3acbe71aaf059aab6675a8c82389bc3cc02fb72f0dc9fd3f60e1371297af008d74ca2702057328a936a2bed3b61b1aa01cd27dcdbfddd0e65bf2c657bc84a892e659a2637de902e1cccd170a8655d66d4ae165ace88dab77244b70a40f1d50ec4e0126c3ca116e36263c588008d7c12b56571e0b18f3a1e93656fda27f8b627b017eecb19df3ab02fc4900c22a0744aca794df69339e32511f9a8c8ef7017b2a3b061014b8b1091f0ff7419e1c879972d7cf2d67a902656d71f4a2f6d703bb9aba5d47b83b470e6a9b4435cbbcc1782c4d7c2d6ec2f0f32cdbd855a44bcc9fe308c4f3e04cff396a09a8e7896dba46af9317a6b4aeb562cf87151f4f5f5e04ffb6fcf06cd0bce5a8a683179f37fa9ef7765b47ccef4b192e25af12333547f4d859cb7f49bcf20a1bb344420cd61a4bfca434c62955135d46dd3dd0e433539ad13042bece9b921bfe0e4272094fb7129ed14faa26dad3e6745dc93231a5efc848c95c67b0e84343b604728b0eececd48f1a254ab53e88dd2a1c775dfa3e936796a945ec3d30e31c912a4ebb7e7f49df95d469241f9670458975c823bbbb323e00b9f6d7c8473b0b43311e8fad0f32053aa0b513df18e828d2b35eae68ef3013fa908a7765f01e78fc063b9d931010e58f8622df3f361f37f1c48e7ead2509f935ca0f95c41fbd36b01b67502f4077ac0542c2906aaaa1ea80c6e38bc06a0bd22081d5363df49651970fd5317449aedcd75d023a9606b59ad9e3bd6f04aabfa4f0a38ea84d34517929ca2cd4028d00091d845b880f993585a77462bf865c8a7c095879b85a46466152ab081bac21dac90244c803315bdee726ddf3226ce99cca3d77397649deb4f5823c9b5e6de8da626aff1e7eb4f6040fffaeb8c356f8a5112e4daa25379a99418ec42f579f16e8e79a2d48f3312601622b0facfe776778c7b520c27bfa45285cc6bc0bb7d43881c30f01012f10e4a1c565d402a40c62e1ff2e23d588668cef757c163e786ae15638636198281345b76bd281c20412b61a5632201f8e35b33ed3aa9ebcd91f92523f0f6169acd1f2bbbf9b4d29513589aa3242744084b6fd5f0bc9b33e11008ea739508091d457bc732d6838b2efe2a631cb0ba279ba802f8d70bfe2d863b61baaf07dad9d6f5c29b9786afa979079ef3c3e7093dba6a458b27e6972f73fe3c837e37eeda593611c4a6ae8555a41671965b14c6ec78121c3c308dbbfbda4dac7c667a5efead4622702bee37cbd5fc29987395efff9f03aa7e594a20d6c45a67aebc01460ab03da48a6ee0202129ef964ad5f0283ac5f1435f97480f4c086fd0f7c6910d38228dc347bf52e88aec5a9937d008e39492f86548994076cc777a10d9983698bb0e74e1c2d2f603273358a9301bbd9e401b87b45780ae10bca57a953a20362c1053aa06bf9489b847863d28eab91b3bae3edf4c5caf59a74156ad7d09b77bebe9d971396f00000083030007acc5ddc55a59dd9713f8d4fd9223034bc436390c756ff944ac11b9973a9b0a5823a4c72cf134599f950d1f277de541424eaf84b87a4786d317cdd4e88c17149de3c0ae73d84f941e46d30fa9f5d923e38dcaa55b6f06f1dba93eed746c5870fee8d0560ce8e44aa51b7d42495267720de3f3a3a3baa68d081a848c8ae987f388fd4e1060330000000000000001c6bb4f006b9cb07906fa889b3a594b8f7cfc627ff1a902a367804cefff3ad6492eee112fe01c2e9ae1caee9d3b6924b9f6ba45caeba686a9f6c6295d2574665ed18ded46f57831de680eeb3a56aae363e239c4e077f15a0831f9babe8da321e13577f26a84601076cab158b3bd212663a835c4a7a3dc8d57c735539dc299196ba3f4999807a0ab9fe140b8900fbc286a485455113ca6aac1ed39e245294a6e6240c6448e075956c04230263947b92604a1604a7664804d6c489c08d67d3a43689781be823ac9e9d460a43fd44be0dcb57c2bee1d2ee48a11cd3042081d4616f70623b57b147bcab60b39ca432f6d80506410b6fb1926a1852f2a81f546b344184d000cd32f7cde8757fec9b065baf6e06778d7fae8f39c9417159335af9a716de27b253e3cc55ffea265bd5b90b34276e992c0c06587b1b977ed6ad6ac1b2ae59730b032ac4f8afd27fc62fbc4151960ed31343617effabe8269782502249feb907aaabfa0d1e0c5997e82e677b6f8521d0b63bc193f00275b904c0181d1a23da0d41456ffd3162c38b04fe216163e21ab1e4162d747b0784405dda136b99b77c3f26a202a34744dae110db59abc074d241a12f148721d83ecece7b38b27bf8cb4382dc2e7da9a2614aa4fb5590de30660252511f89fe311d843593649b0a323f2871afc0aaa6d6d87a037e610024090acb2a816f34171a8a8f8fbcd63f9eaabfd9597f4027f8b6f4e6a6e5f0295c95a0921a3a339c2686b4344ca2cc0f11954dbe3a1a5009b4e0d3c46341e361adb17272962f396a38fbb5a83fd9eb99218287ce2ea48407ab7826462db6c222a78b748e38422b323062c2a1728ee2f027629700115c95fc7b8fc29f2e51aa31f5632faff362d8eea29594c930bf487712fd52524cca82595d18a4e295682a442692d814603c926dac45811ce9d35180b6cc649232c46ef85f1c7a2455538eb3e53192c6c4e3a9ee6a2cd17fd749f9d7b33a569b1653cc0a10fd434d8ed8e1a01386f19f4660fb73ba8348a70a5b1544878e4761f86c319e276a49e10d9e0db253389f4d06860dbff508bb9f8c88b8da6f1a8912a7df7f2b085921a5bbc9336e508bba3be1f4b5f9a02edced376c7e37834168e63b6d6808c46596aefec78b9e68b5cead1bbfbad5d51e9dd9772683612ce0f7e28fdd98ce400b2bc0c70ead916af81b775f7b87d4a5d14c7582e3463dfe2ebe16877c3816e79952624d3610cb932283de434176ea4cacacfe0953b885a0314349386b5b83cc6d846f9d8e4299a143149119c93d3e8ce80067380eb87beb3c8a7a27ce14d76e6bcf9b55d6f37016fe60311bfa97cb86e84295fc6b14f9dd669b38a16cc1ca2e80d237914cea861506f8b7dbd8f94a41a28457f84b70274f9a79cbf2e688c68545e00be836135938516cd785b694aaa3536bb99f00507eeee0144cc949170d27dd59ec748ed51fb8a59151c412b317c4510c2f5b32af1c5b2ee1a50592871c63c051936f38bcb6fee75df8a155a5afe2e560fc65db98df2e6e6b2ba6dd7336f4d7410b029a5a5748f3de60918fe8ee4be796932c2944434f02af6edf53406daf49afabe19b19302e6c457c0cc56b569d1e80446b06e549be21b2a7db74660f64e4abf5dfd1b97e30de0aecd781408cbdd3cc8ab442eff295432ae684bf0c9322f0d4d849508eac85e13890bbba4f583b06ea5fbba8ec7958fac04050298f33678c7f65124b09781d5b3328d4ad9ec00b6f3058a437c827a55ca5add861d2db6833e55833110291ddad193f135d9533d2ecc12dd83eaadc8322baea5e4aea400bde417e393cc99b7010d1579c1c75398dfd6169b2ee273ac16eac008c9ca6bcf394e44677ba55928511065a89cbb476dfec21cb6ed19a1e133f54e0ba55eed4cade4e66844e257df4897b009e665df70eaf2563090938148dceede486a9ba4e04fbb4675d8eae0b328e67b812a955d6c57fb24cf1bd1e020d46acbda576bb1fdb98804cfaeb75108b32a2288591f229b5b0c9f9225d44b22f2355007471fbdd05d5f636e462b87a6df4bf645ee5cd2d9f919b78c9a1ac88b4b13a09ffc8ee5b8bb94d7dc3ccfc010061133b1d235c8c7147398c8b08380232bfb6795d371d4b9a4179b735573926c026be82baf4a4246d325c4353eb8e0a995db2443fd7097ed5485fbe7975ae15f8175c0bc30d5ec505304d3d67683345c87183850b94bb79a90c9c8e014d6f1ea5221777018d377666f018b3910ed3b1abce94284b9f20c88ba6202e7cd4c2806f178c353f2b2c7dfc6940f6f07e6e62e3837c78a71cc8200a2e92e4b046a32620c0c08d050556c14d2e272a53a372803937d13ff27b981983fca6c26024413a4bfa12a9d225db5706e948768f99c1d66d72dabfbb27674d8a28edb40cf8e204329e89424d92bc276021d7faee735a9ab7b3a9946da4344083ed02406f888657a9064bb5b4fec1b986902c76714546447c2353b93677fe07becaf9c9a673b0221c7a0ac31dfbe35de56eb7bd830081a60bd9b134d46d780fffc721302550a15a16e735a02ca729ceb9dd945b9d1f815f7f714678854ccb57a2ccd1a80b5e97c62e6a657959a78e145c63f15bb5f8eebb18e5aa6daf82206ba273b157267201337c91a5fb5db2edcfa29b888502d5d843be7217521a100de0f1f3f7c2e3b3c18540875581227f67d610b1507822c4d206da6b5cd47329b9fb1f324742cd9771c23b19d2916bf703265597285c61c3e310f77c68424b61606ba2b1c925be06262acddb05d5ca0b70fc42befee7fcc99e47a6affae9a54f6d21b2131d2a6844770b165a9a3f61975974bc86e47f8c8a2dabac7e9249c13f0b164fa57a132a5283385524623a3d45add3407c8175c5605ebd19e1effba4ce4102e45cc29bb844a37a96a89a47546dc13eaf63ac6c98aa2834dc053e5dc1a2fea3e547290e5b0e01f1718cfe9cf8fcf775dd812149e97d2bc0100a97fb56689967afb1824c5dca43fe8b2b57930a159be28355c823e65ad47ff909fd4b544e7809ba23cde9e75da723a8ace14e7835598dc46460ae5cc206e5702e791f8eea23c516ad7776de6202a9f0277a2221de58b68f17da6e0747d0d9919b67a96c713847cc44eb2cb3d147a6a060375184d99b0f7d7c4d14beda008d63aed84c0e645f25dc31f067831a49f45ce9142fc475889faaf90854ee8e82827a6ae474cdd73b3a77c8ec38fdfd9ba13bea2a17bf2c8d8e7cbd86e70b1b9e467c46f6f6123ee8108da1d410659a882f02b9257c9959ab557574b169aab919110ea004c067864e3748a1c7ed3a01cac36b35347710182da89c01f1c2558efe67b639cf27927f0b7ea7b3616d591fd7f065ae00b612d8efc47234073c14fe2079f5ec2eef6c2137b0d3d1d3574c965fe816542515b59ad57c8a7f97ed3fe216028a1f6ceb9c1e95b39dcddc9b42a0f6fbe9694d8852133ca15ac70b3043e1c822c29849c4495c3143c29f3e1b9fc89dfe9d89960d8ef1eadd7928e873b2a751b4526d0c1d175f638bda46ead8c2bd8d8f052ba7e2208cce1c7bbacc10bd5d1641abfdf784c61ff8db9a59cb4d6b97030b7e00915b448dd5fd29a27154f8d84d4fd01c26d608231b0818cf634d731198e720755dc69ff13929211df1a43386740faaae7e7c980ca5f0c8f5a9a0291e6779cd6902944087c190394d807c3f97e9ba1905a9cb9a572d086fbd7bd00f23fa8a1dd3456c2bd30a06c5217630f13261db299877137949b02d6be99ccf593b2e91fead1dc6762190575036ab0dd9b1e8564e0e785760e7e6f398c9ac2fdc34ef6ca57718ffa3842099cd9c538a0669601593534b019699bc4163988e2478d97368c252cc2082957a4737e0d9acd34b56e1409d06fc95451c146fd5e1e196e2707e52ed14ad20f0b58db2520bd91f50f077a8c41cdbf318dd5c79b74668755ca176c9c6fdea95df736f895fd636ee6acbe909e65926fc1aa50fb68fe09ceb57e7052567ab45690d1fd62435e0cbf3d1c35962b774d3ef54d3a7b82eb0c5599e7bcfaf5d8f5311b9b5b68dc03aeef994abe79c0e94aead609b5bde31b373b192af3a8a30b1d6fa3033716932d098cc7e1ab10c3830e3b3ef0a29a0e0acc5d175a2343b55c917940158e7d09a605de557ccc350af4671325e2a8afee0b3ecc5b4f45af4acabede8c16b2dd6a31e3439bbef3539d04689e6a26bad101a1f6594cf3f4d2f05f3c8bb35b2969643a75aff15a35f2aec1f0303255313164bac289f91dfe4238b165503ad78b5f2c5485c16078a3c4df8b6e742bbd9700d4d9092a53b4eed2530d2cede02896809bf90ed26fcb4a3c00ea9896a49540e7639ceb6e34b2987aec6fb2371c8b81df770bd6c0b005ca1c300ec315e8ad69b61c716fa5e6e995a3a5dd30c90fbda8de6a8e771a294fb03dbde5062c4bd36452f52b2af55b4820471775834e10cd4fbe0473136cdb4f4aca89875cc9a53cfe0313d6cf50bdc747cb559a685514077111e9a7d7a2453562201ee0fcd5e135a0c2967574399f1b95c71b1cdacfdcdcdf75d0cb5c7f8b5d6aba18dff83f2fc0a509597f5014dceb5c877c7a6949761a326d07800a2228d36c514c32bd685f7ae10876b8c9514c185105424d1f09b664f4f41aeaf729f177ef86f91855ff4d955d6be95831981c8074a63f38edebb3d0a04f5ef326b6d77ed93fbef392fa2280f64a7c9f4153f4f1d7d5d90e97b4f0dd98fba0a2d6f80b35d5112865d2a501638e5fd078386621df9e82a6a4428c0fddcf79a58b009c0991c1dca9fd229bb863f25ca6cf8c65ec1f315a48eef37a062d9078c4264b31f4464d1c495fdd6b6440008c791b54878545ad6b58bd85a913e8a1187d06457c120089666c146614aed72491cba0744ccb713b66f0a75b91aefcf87ce5c4bbf92c82b90dd748a2a239092c7f3066bd21c802d224ec3db22ac20bd6bb409f8c322d694031ed86cd9a917bcd1875cdf55ed288b4e92adc81d82fa7a8b43de59c50bb6d8a3515e3d761fad58b76ec36e14ec9d859884c412972637db5178c93cbf893c4e302fc16c196845b9ccfcb0bc24f7e6cd1596f334b1a509213f9f6f064e4bf554adf141d9c35eedd16bc05d0bc76cbf87e9490549ac2fff61b163cd3f75e86fdc58a846b5f30898f5099caf916c3e8c48c28b57b5f84f92ca71339ad05fcfcf317fb67e6bd32a77b41eb3cb1c4cca4ad5037d87419fedfdc46f52f2270142c5254932174d4eceaa434965a1699edba3470c07f0a21c1070e50d83d9c7eafd49201bc9973f6ced7810f564d886020cc454a4ed5815f0f2103bd15073167e4be085f7ca97c6b61e186c2e0d5e1e41229eabad8198fe2d89f455bb80720069363306bda500b1caa75e63b2069574a6381e224f4eee607a47186463025a4add8e906fb1c93f71a560de55ed1298763a84d617b6189fffda4c671d04f4b1de6f021265ed68e4e63484a1d515f715afc246fe6ef259286e1e4b9a11a391c0c073050269d903bd059535574bf7421ae50288d3f816fec4ba4abfdd0ce019ac586efa15f403e51454a001d64f3617b4d86835154af07dd673d0f17c940cbc0575628516813c9d8ce018c7c54df7a2ed812311375c14a94d39f04d50db0d7f08caa11e332dac41e9f77b9f5e65e43d2018cf0d49498bbc4122ab55e9e7960808f19d22a083b8b68fdb81be9f339fa638bd8ea4cd9ec6e4a36b4bd654fa733c3da30bdd9c560a75b6e4f1edc8a49d39d7955056ee74641b0ef696e5d5f7ba7d61324ff8d431ab867bb8eac29d11a2ef765344d4cfc192a3ed2b43d3dca743784bb72da611e19c9e4866a0d5e4d736b1fdd32d4f43a9df16e098ea0af8e3117f65e351429e12e93a70004785385830300074c6ac27f3ef68a3ccf5f78b4585f2e556b88ed88c924d29d5d3f6530f69e6932fb8ee66bea8feec88ffe03fb52cd6ff00894ec3f4c20cc5b725223c27b9affca17da17b9b01e21300df268234542916c3ae45d3eab651fee75599328a1fbce58adf99e0959ceb1024299c5a216e62331c8d2a9aee52bf8092c97e34c5821c1c6fd4e1060330000000000000001d5a04301f0ab92279410c63ecb2cf5bef599c81ee998a14e9a6563739e4e9581d29e5ce6282a06f3877b986154630eb42c9ce96e147834ff38779e5d1f5366c4ba05c8653672fb57c005d72266724aebf72c40ab3dcdefa78cd0ac5af8e44677ae8721fdad46d0971c9b42e70b45020f603a226ebe3d79ce8279056b7cceed05abd4cc929cf217cc7e18d0523162a55e4dcb78e95068d94c5285b9f8e61effbf3638c7d0e6c4754cbad9584d7bc13d54c5edee3108f93b915dc78bb0cf10b3ff39f7f585db0095fd6b292e0e729909e019c83455010d5dba0142ec8637f6e6e9de0bc55f3018fc6c6991dba075a1ce479249d94048ff8ff1b8df431e1e3b337288e10a4f8c1ed58b57706650e4614cf47f60036f1a6e16eb7947f11060bd5a75fd0d02b88089840bff0c2f6773a299b2a30c063bbe7fd113360e45cfd9ab575ee3f04e9eb5beaac72c449a2b48f5aa533368da17fee3424f18b4d51e692c8703ba8910dfc02e831dc0d0241dc068380949b92605018917aa4e67238f6ecca2d5bffd7cdd2239c1cf7ada7b102ee03189ce1f059887dc3a94b8bbc3db20049f11affaf82da3c10421a00f6ac46934b55fc2fd8368311f9c142ec41ac953f80ac5db7e475ee53a9ef32e023566c566c0de737b8386c0e360cbb4daf1c36f03378d7916a4a85ec8618d4c77e0ab15f8eaf790bc33d57e75030178d997f627421f454da49154df8759f1a3e16a991cfedc0acb8d4d6afe83e0ed315a9f48277cf74a83ab54c00b207be38649381f7c9851ddd2a9c326bb60a1a8a37955ea5103acdd54403ce40cc51e24ff5855485967d9a3a85d98106b0c62aa53f23acef9295ccfcf1fc50efe3bee8a4aab45e55f76fc0a28a762061d37cf3fcc0ec13f6753c3f474e7d3a46830609b863573d57052dad8994feea31ab845e27e473180bc5da67cf760b9b7f505252183d0f0164035b07bb79ee3512f21b46e9eecc58b64c0eb7e6d8620655d8caa79c5748427407a72e1c55e96291f40d266da45acaefb128a7e71b6f47648dca3c7ec839bc17af4cecdcfdc42280a125c8dd65fc7259d37f25d132c3acb34353e4e1a6e9fafad5b0e6dc7704103d6b855f1718d1687934165e0db091bd5214c6ca922fa4d5596eda62a5445dbeff6d67fa7752cab19a58b0fcffc4db110042e933cd574e94c0f0d8e8fbb690bbe9dd26251f7cf235c192b795e3c40dac08f2235243406e78517f5948e5505816f97bb85b96532763f35917174cce7c32bf22200d73f3b7b148637afd50764c1bf2ea7dccd98f0e8d230f590cbbd5ac8971cec713bdb7c5a825102f78588b7515893263f61349e8c1393ac16b445b085a79f712f150ebdd9b899b2e8ae7fb05f9614f648d94c6e8bcc48a62628d9da6fb70d9349749053038ab62ab6d80f0d07a5260e493d8786b331e6033200ca85c3e02b5f6000412c1b44168751c5469b9cced57d4472a93265631ab889c13b023d8983958fedbc8a7b3f2348759face0fb4573a72ee48b109091be1cecb668313c1c046baeaecdfd3755344c01258b88d89465c3da183f108eea0770afd7f426adf4f43c6e63798647aa399629f93335431c91bebd2c5ae97ee6b83cfa04fb1e7273ba3e9228244d387b58108fd50cd498162d92e5699faa8c89b46dc9bad98233297bca2fdcc322737a669666247ddc2ff869360a70c558f7724b11dca6f4d460d3c2d4ae4c77669a4855e28e20e8d6724fecc90a9c76cac2033b52f66a79ae1ebc00301cba38292c3a777a632dec3e9824e67daf7d23d237f62c9015b827209655fd0268621dd058c49163bdd42dc1f0b41af94307a5146f84d924d948422796a9a5143e4735056e3570bb081dfb8bf1155260355face1164bb9dcaa6d429c58c41df5b8025cfcac754cfcb06b704c217bf9122981919610b5a0c44ac0ae2a52ef1dea44328d9b69bc9d2dca01682e448b4f7a8f49bef6267b614aa99901de2234cec06d65e9e899d0ed0454fefbddfb550ec18315e58d6dd538ec29c2f422030bb8a93c579e791c083cdd3c9e76103c0317cf8a3520e5e81e60bd205a01765a87d9eeca81f4d73b012d1cc2a97f9de4ddc127a723f2c06ef295dacea4a59439f4c7b586f05f0d193a3ad89d66538784b020045cbf79df306d4dc66f847c9910a4bdc47d5979a7684b70e4c0fa4b8f6b16896d6f45c2882f56823b27a4a2c949c6a5c0756e89823adce34a8fe23ba5e7512ca4707720c625bf287842eab6475ee354621853b07b354feeebee1e1e7a09d47b59ce798ca0780b5b2e781de254aed7ffd1a62b51333462a16b89d064047da9d1735cf56d8d781e943f9a07c5069c56e96721cb0f8d7208a41cfcde2dd128d7a8269c8554e079f9ce0eef15fc22152a0f2552815d7c5fc8303a29f40d83e0528d5b960f4fec6e43d0c804042bd6d9ffcc321a587132163be0820eae7e522845e132e251904ed7dbc26426556d3e0cc8c1a40ba1f783711183713aaf4f71db5a560cebf32a18c2238cc8e1bdfbbb1fd059e55574b6707e510f97ae4eea1a1f7174edbf0bc3d4bcfb69221193118e4eaef6467fd5d69643307e987fabc2709f0e0a0b247de162546df2144df8fc0423d0b37926518691413d5bca14f901135597efeb6f8f984016834bb53dbac7591ab5f0d10f349304a9b2319ef255849424bbeca11ab656e5957e0826f52e3c69be60699c8f6a976f06410df7219aa01c8b3757f6e83f7e508759dbfc5b4c2796f79090eb90d967c14f879855d23c7a09d9dec8cdb7839ce0111120305c3d39e3946cc49790bc8f4d25a1c3fe724e3280962b63aadc8bb3c2e68df61382bc2bba165e015c792c0f653ffb057389e2fa736e96a0a7bbc552a3424207b83c617c4b4ce91e43b5f97caffe4a39f16c063f9301be44129363c555eb4596adc34526a9c1e9a313bdcf25cd72b78bc0f076aa0937343d292e4ca590fda031744229b159c22323e6b8064ab6fb23f1aec4e46bf940fdb256ac29a17270ffc484b9684f95530b55a83f98c90d1b5bf520dd537595ddf57c44ed53c5065d5257b7d77a5a8002898b1908435a5db9bcd6212cc919bbe7ddd07cbb283a9e18ede0951c33af5dfc20c88bcda8a4ccf4220c65b303f8f4c404326082dafcc4a350806697c7bcdd83f0e81aa62e17adb1747e3dea9a3536edcb5a4ecb7a59b79396c7d68611349839b914aac842e7dc76181546504b5b687eb8d3df3ee0fb57d2a638fb81e4718de4a6760709cbc6631b00fbcf37747500a9fdf5ea6dd602104c43a919532f5e5f01c147753d94300b793449545bf3b69a5047bada98540c3cf572d2cf278bea2291eb4157109dc2473495464407b2dea35fb16aa9a50c895db8b38a8526ee01f5d0b276d14ee5ad123fa95d65e4eae07286a990a504822f5063c3ec7a2c493efd645f747a270d152717ab9a7f94597d7ca1b2f43e7446ffb77a21226c0ccbe937b35c7fa4d45760b21ef1014509ecacbca971d1d6acb3aec10384fc4c28e01651396f9ce7cde9bea605d4f5104a85bca817a4f2f6bdf3e97a78b3467ec33d304edadc2074e4d62d56a2f0d8814a5e7829b03a2b54ba6808a115e9ad9ce53ea838d4790e32a8e9b47c047b4bef898164efed3a4e4b9ae384433a89efd0fd9b9b54ac7591b1fb964f3d05bc3eb4e429c4918149e0fd826b9d9d0e26bdd7ea042429fe86fb0b9d5eee32b86caff1d54b3106af9aadfc34de80cbc8bccce3c1f44ffa9dd1049a5f9d418309675e1316b530b5d63bf457ed13cc337367971b4c1f9ca35eac9110f3dc2843ca3e36de9c97cc4e3632847b9745c85a9d3735dd3a1afae00a4e2e40d7e8d0439a591b41bdad9a265672f775efe9d11f26eb773558e946ed5162edfbc5f94416af67b286089c386a25edf845316f81c6258754bd1b32d34efe67fc12916bd078d88ddea6195db3ee97fbd0cacb741f1e85904ace3b61775bb94c32644c2fe77ddb281fce942a285d674582fca3603dba153a288a3d851d8680c62339872ab6cfe923199b103dd1c16e1be8483d87ed144253f7555f1330cd510666b052fc0178187057deabb6b9a2af2f03293103907d7e735892b1f4c60e5ec86aeb29b308fe75d3ada47fadaeab017c6f014538b86bfe4e775462837d5e6f8cd6216376865db3d18c6620fa7132d3f43c254e457776afa4aceed8a749d26d1ddc4c00d265351c0e99f00c9550c8e1aa8e331e9e495b934baf394cbfe47ee0369481970d924678d6c53d07b9874ba55f89148157ed1adaec2f3fdda7b05a0be809053b4a525aae8a6e8c418d3080293d63f9789b7f7ba53baad1aae8a44572958be1e18e5660705c19741062ff59ba361425c4295f3e6d9295355c4810ac72730dfa29e4bffde8585e941e8929388f5abfc178a634cce40a5970628dc4fe21de3843bd9a916b0a974f0bf19c5874778327d86ab5e3763d54ffc735ba43d3afda53594ecd5309bab8b293e430d82cd63a65b3a2b3baec1386b27ce565d2a2e3b847efe6f25028ffda565357c76f13b698fb3f62c8f33d04d19b24ca28af22f3904392a50f41635d8e3fbb5df3d43fc14dc2f1af7ec940af7e1f9e62c180f09fa0d4734cf713453bdf49f45c4c069e5ea08de68d303004c2d6b668efb3ecca2a3682c0235165b3746a22f09319820af26066f7a96c7cfa756770d824bc6c4cc1277a09ca63478efbb7b43e156bba385a46459de8fc09bcadb268b7d975b76180fabe552b0c7aa936e9f33201dbce337706e1e4c4226c89ad8dd642fcb60cceda6a03639902127f4b70b9f966524807f40f54c5d1fa5f25a3a73bfe6c296b6f33a664ab34f1e8176d56872f3aea3a0ccfe882320f28bc2fb5bee23862e555ddb92afd846139498ce78fcce3ba75c42316585d2afd0ee00f484e1c627ff5b9d2243169b3069ef626ef62bef89342b63823c632699d19b7ec525f168f834f889b7a0afed71de07c9f5074807ada1a44a1b1f97bf98a8c04a11dd2c02159e4bde35f37352c936158ffa9547ad140c69ceceb241a89c9c1e60eeb861a2d076e14144449f271efc57ad330ec1161d5b8dd3ad38348b05df91c4e1c0dde481dbb6bfeeefb9cac6a8142bab1be278a9adb1409f67dc1d4d56da0e4c459605337193374ee2e6c019b1a77a33b4ddb4548657ee8da81b8c93d752097bf45e6fad278e10e48ca5f9f73568454b35b134a52a1f43536a62b8ba4ec3188ee9bcd18e1339b832a58593b01999e78393125c4b01a3888def7f3e2231eb1efbce8406359a222ffe25a86f3e3d05a4c1f80bea9a762653990e1a9482719b100d13d1edb717e45879461db927bcf02217cad81975d1211a470b9abffdf62ae523cced19131ab822c4cb03eeebda6eb1343d85912195abe277ceda4c21f0ad5a02cb57abf732c979679b3ac14a71004e04bdb16f4caa70dcf0f173b23867ed674b88aad415ae041eb6c5462ffc950e850bf78e886b64883be6241c9a22be0cb72e25a17f22e451804385cd613b4935b3d01fccf78dba3bac18980f4ccff6c6c47a0a53f2ceec37ced4ad40170c0c599f67e4e4388fbdabe99c059f5668d25bcf8be3f4e908f757d79bf50a9ceac7d6d00decf73dc45ebaba46de5ea55f699128028b9bdc3be2c772ec6f99e3425a96283ff93e452e185f7e1f10298d9ecc744a534af87707c65b3912ea4edbeb782bc12c18a35138f393284e1ecb87554d4b8880a8a4d9354d7841dd641766d370b6c6e432a6c5911a229dafa1cb914ea34b6beb10b4f949a8074e7a3342199e8e9e52b9e57197cb573b1f75cc61823277750eb09e1519379aa48f38a4c725213eccf220ad19f88613eb7b408f270ccd561f84ba46caa35a1b651855d3183030007f87c788bbacfd6a57ad891afc186ea779ae77d1cef382ce505bd9c5c4229fa83d68eedd78fd12ee708d8fb59f9a0b0f3437b446be12445f87b0dc150b487bc1f3a27e71ccc9e0efda0680f6d4d28ddb941f77d8012fe0c4adf1f6ade5df2b640f05a8345a0c1da9b8019a2be2305657b92da785b678c493533de6181e357e4c0fd4e10603300000000000000018162f201a318ba3aeefa7285f4d7381ac05221e0be6427153cccffde61152249803207661d312734d191ae403dc659fd083833c28b1ae68151215bdf98712315fad15e79ff7101fd955b1c22f69c046f1c7fd57e228253756fb371d0feaf25871215295a88a1484de81ac981a38307486a351340bc795a53cf0a913b7698bba661ca9912b6257dbfefe63a7de95808393a54eafa1af20aeb1ef590a526afcf50320e30e6d4f379a0c179e931a1e0b49d39e3f6e9b89e9a81221bcad4a452d08183af085653489a212dcb5c192f70c20c2801d7eaced7ffb881bd0e157d828b0918699198e838b239960f809abcf91e87d81b671c820560d7ddd213117f22e4e4f63eab38f2d1801a23fc3be7842afd33a8c8d2f591176db15b354b7f10e5f7c21beeeaa6dd88a6710f89c7a630ce0575a783ee28406e7c86de9836308bd225accc8aec2f7c64c53e605dc364ca81ad25409ddc26df044085a34b34c8b7a5abf30ebc00622a73c8521a5b6b3dc01d68bb8252d3251b0a22e0728a874ab3ab6ffd6ab66307ef5412a69d806b0c0cabc8a53dd8a4a81c26d066f9fe1c9f8cb29b9077b0a0f6a43bd70fbf1af370323274ff5ee69835e349d838e7e494ba9c696db578245ab001b70f0710c3135a8de62c10d4ca233b1c2b75a425257042fae97ae24026b1e139071d4c039682227fc474fcd5eb012b69a2318bb50a6fa58ddd987a78297b46d049339c6947240d9919398acfd128ddcdfba183438c158bc92d6b11c697d9a6c1944c5e2cf68613460e332d5cb2197889afce1bcf121c0300b7733b17d9dcfeb8581e9d9506edd1bb1be2b97447b4735a5fa6e10ab521411e4d5c58aafa5ad5dc52af76d9b37800f3ab455157bf0807d4032e890f356a539cceb588b99a44c6fb5e138c41e89e1ece83721900b38e103dd0cfb264ae5cda221dfa0d18a44b74ba1aeea203dc72287f093f649c2d51be2942ffa753d8176045e3df6ba62ae21699fb6ac1f37425d0be804bada0ea840f34cf35c74abf0d627bce6b0e0b2e129f0f2b068b1d2d5f7768374adc56e50f8e088574b15578d0390cffa118028c8aa486dec6aeb6b918a1b226d5fd43aa2d65f4562e4c4c4b50095793d3ea9aedb8d32fef454260756999c91627605dfc4cf96d52954917e347810419f4fd0daecec2e8de94b091c77e21e9fee47f3efd05dedfbefe69b45213889d8795543b479ae62ea792502c442b38b17de69954eae5c4c14250b1211c429138c31ee75d979654b3179c9f39e3fd411ae7498f9bcd5feea396d63fab4e8bb857143f1672817ec75b0d334c865ec0f97a0772c1a2a18625c89d6fc23bbfe237b030065f1ac294866533a792933418bac8162671075b5e7d7299a142d50ef675ef822d0772f234ac5ecb953d8841430627e4b8b286cc401e0e65fef896f8d54d89466edbfed784ae6a75c8658b25fcf283812c860568c345c929c3e0d3d2dd049d332a2722e1ddc79148cffd415846723b14e8bea23dc61113aefd0ae089c88a0124e52c8ee28f1bf8ca041e54e19d6cf734e8c2eb4797855f76f24b38959bea168556598dedd9b5f3d164e7e6f2f505653efde8186b7a2d79be3eab05491b5b559c338bedf20f9d6cd457ce5babd32da908924c9df6ba0f5bdaf129ea4993555dbbf1afd1537654a527f1e3039db5840cb7c2f110123d7face858d0384e8f1b90045caba94a622c4d00817e3a454cf9710cb3a94f00144e91cc24fb80b517979787672f7605cbd3ed37bd0f24b717c9589ce8f71a0014454488e5a0607513770dc46e49d4a1d7e4d97b6774211ae0cdc2d8c442340b155032947d213bcc87776206e1f6c3c5f179da43fcdf521e801c5354de491caf8160d7bdc2d9f01cfaccfda0c047ff1093b80f269553051946303079ccafb943b6a38d463c3a1166fbf0990d579d8c078a4caf48f7becb010d3b10eef137d2948823569ceb91908144d996a32788fc83b10e0a9f3b3ff988368410665635d277d694b1e324695a5ac582869ed17c71d4cb9de217d8acfda6a8da79bdbcc2ad235b1ef6bae7f72d20163e8d3081fba4ab2efcfe72612c241a140182fc60934093b3ab1200f36ca39d4b7d1555dff338307cc6d4a126ef7f5ea29cc3537c801e09e4dd654d12749aecac44f8ab48f352ff424cda4a75a4048b74c275f2d2b0b43078acde238cc51bad3a656d9d8423a86b11a3829dbf9643112a09986cdb0d0ae97ab2d6d137006763e36b0b0dc8f31b2a31cd563e621f688d97ccbfbf3662ca4d66d1e7b9bc96e32585c4289f81f5e284ab4c94528f801ecbac779cdc01a32596962884f2821986d6195c4113846f6a849f112c696156319a2353e9fbcaf435c7fab0a4eb11d3c9732907755b18b1dc246c754bdbbcfd36bab8b90faff2f0cbc561efe6db5d3e503b65a9ea563c32dcf1c6321a184578b2fc416bd6e46c4b3610976068b130dace8da6b349655dabb5e12d2fb220df38073d1a6104b0747bbc80d7c6c4ebb09065223051ad2cbd21e2874a387cfe9c955efcb614cb443130b34a63b407c809f55c6bd1c4345f1d1f0e607d9d4d1e7814ecc376fe11d6c562ea758e7fdcdda0bad4d0ed4cc933bac743d407ac266a3565517917a49a1a93aec20c5db332d1f016c928c0834412cfcddf24693d2e4f6f27c7a7b6f98d5cfa7ddadeb249e2b58d9a97f5319596356c394d655d7b4734ec331bb784e8083e09a0498e4e371f4461112045d16d70c52805e6a59cbe45d0b7436b1321faa1223c88b79586992d34f714345e79fdb770cc18845c16ffa9eb4bb5d9623140f1e8a83305d29f26188fad9f79ab2b9febc93a88c3f388778fa16a610167050bbcee88b68206c0f865e2554f8ab49da6d8a8106eede8b2d6cd6ce70abd3710ea030551ae44f96e24ba1714d8a79851e4bb474ec5a7094fbbb0717d6805f603e4670914cc36f1d1342a35f50da6ca51f2c28d74a3f078e27ac05040c4dbd1d1c751fb4b0f5043448cc62f88871acda09836d459515b71d6e5eca0561837fc3876f1cdc448fd9e241d755fc94a114c981d9f5ffa734cf540b8bbcacfa33d369a2ca5736a84f2a759273aeea6c17847f8686087f0d07402d0cb5223b7016f44da1188a3e5ea4e638ad38e1fc24aa4e4e5e0fbcc8c241f220ac0a9a8ecd759fb219168deb15c5f3d29d5bd1784383ca2cc5cf455d086da18432784b018f28c7667295e48d3040965796409c915fa0307a1d0c43d0ec75ac2b4d68a5b04d89df897ddeead4f6added561fa22c8e9ff592f06db07d7a0e739d2e41148f957e81a8cb0c05acb5ff7a17400511c9c6d9b7f209e2fd37d275b3ec2aedeef4834820f01db7f292e8e077ad39c38412e1d3bafa4db2a3ff2e2a598648dd70bfdb67fb5580f0b8bdea9d6755b28004ffb96621b119a49df91c3b455db2bd1282825cedd206265bfd342d156774c59403971719485b92dafb673d194c25d70713c0f89c7785ce23cbdfe86dee7e202be41191f32ef9ac2d2d93c454c277d213ea914185c8f53ddc80c2b36d550ca28330eccdb828343678918595758176f8e0c7196433ea166a308057681f9f5a35c5e1c07d709b4fd9777828c482efa26f079acca220efe61668e9fa240a2b0289faafaf67bea3ffdfd42e14c9febafe3790b043db209d66608b83af2c7630aee09a675404c46db5e128c17ad581aac5541f41ad3b817eddcba7692aecf142b2f49128db848d7cefdf9d884522332a255a86adc52977ea99b71aaf671248d5bab6410f109881b5b85d739416f8262b216fd04b7caf592d7af186cba7bb94d3236b4747a4acbf3e64e3ca0f3a8de6bc7b81560091e1c771e9ded392367f5b2e4583e6139430dbfa187120055b0b7cd71418b588125134f69535ef9df7b91eaa1eaa26b6b21352a0fbe5d844a2474d70e7a1baf3febbb42645a4d4458b844b5425195ea74b00d074138bdcc916604271715d4a82333721bb34be8ff6a219447d6763729a273d0d8a4b99b6632c3c33bc4b2742be24fbdd8bd8a857b4c4e6b5156e4ac780b2ea135a661a67d0b35063b86fae4fec4061b59d349c588df0af23fa41029e6148f766596227a1775cf54fe0a6ad814e8b580d087f6d016820bd6d46b79c7fee4c40542b48d6b8f3eab361adb42eb3d0beb9b87846d87a8d6e794c082a39805230ca71fcee383bd67b96373aafb92b269de8b7d0eeee532e87cb4603f81efc94590674c404903b00daefaad9423f7932bdc4e4410202ca6cdc44a8801bc3fa217571282d6f816bc3bc924710542f25e97debb91ce811a7bddb13a4f46f1f1f1c1c2e5ac0b4aaf0c05fe922c8c881f6b7f77ab3b32e4e75691d71e1fadd2a8c1637b77feecec9375b5328feae0fbc854f3bc5a6a42bb7a1893ae22276dfd0daacad622b0cde5e0559aead4532fa154a113334376ff8afe6c2174ca04e582a4480e5882200c78e9548cbbc11b05f0edb4c5880d2986a5abc1690689995785ea6efa2fdf25d4dcb7cc9a835297312cee37421ceeb6f1be4108ec9d72947fc446baa7da9b2c82e0a337ac3a9516813121bcd162db69ee888b3b527ec78079e4d1256546b4bf311ebe7cfcfd0a5f3ec86f9ea79caa9a77d0367a4bb8cb043d073e67be66bdf5ad2b0121b45f7dd4947a21b1de21057c9dcb08ad27335d6cfc9fac64e1f5b2211490afff6ead2f5e2e7a23f9fab33d024bb064a3dae75ba8c8257b0dfc4dcebea7a3732f7832ea98665803f4f0fa0a6adbc58be688abf84b49312e5418fe34b571c896033d9d982ea0ae21cb3af1283bd66b234ae39b06e16a01e37f65cf7550979c58fc4446b40b16ad678156bcd8cd06759a9bebca593054d438aa4e72746150171747c34eb2fc857cb189b9bcd745a460b4803ddf3d2469bfba1902d6be68e60e8e08df56773caa47912c91168e4402e04218d049cef0142706b433440e7ede9ed9fc5892f370fa350492da68e1464cb12512d3efac338a4afacadaf5ff7802c47cb673e4ffaeb05145596745e4230494c39e6613bee2d673a546ba2fec22b2ae498820590d6a9d4c494ac8ecf3ef70b09ba9f76090f9846394548fc770b9bfb14f92b1d9c8a3936bbe264834c502c3a1b8c4dffa32466b0e15104caa355003835e828adf6a9e3f1b9eb7dacc97520d55e26eec7f0e80fdb11acc4105f659fa2bb0060d5d267261a441ad994db772fbdbe8684175d7c81b8200101424f368927fd28cddbbdae65f64b4387764625fedeecf71c58021c97b31ba53028e6ddda8438d80ecaaf9ac40e7eb00e847d08f49226ad00771a5d03727ab26d758d0b6b0d4fd247ef1ff1efccbd5d36e4c79333dd6d4a2b087c589df72b097368c3af0246889d20df6982e2e19017c394aeb123e50c1e24d8a7167a6b0e86018a17abc2ec369905becb2f393da7b000812c988329b260a2b6c65beca27c3c22b1dde0bef98951c5bfc281c60b3f1a3f926b7e319e63547e428940d0ecac07e9420176efdb333faa1314e8defa6e8ddbd95b66f076a9140940e5492af8380c72d364e37fa17ec89e168061832e7c0eb00e6ced3d95e1d6b2a1d4fea5535ddd44c495c34f4c4abb2db258d61adb4fd263314c5ecfe538e513e278a0906b489f7518c795ed434d9dfb193b1566342e0dc807c03ea2485b749f4dc627af25a3fb1ba30d711be800e20620214327f279ffaa59fce26714e887908737baeab47cf873cedaaa517da1967bf326f5d8fe0f4b4d0bbd232b018f45bf40c0afb8e6d5c127018e050b72047db3b368c80f18dfa849b6e49d32c6925c182145a525935fa13dece42fece60c9102b0fd88048b94d56c19ed3bfa79e82e583bb6e32c759724b67b0561f383984a14df707e81cec20000 ```

Here you can see how I'm using wally to produce the signatures using the privkey 353fa5a145d222b27900be2c9b3ac5f9307471a34d93a5617439d4a68edc0d3c (WIF cPND8hUaUDnKUYXxhXkE5ntWtnRZw2JPMW11vYtn3zUsfvLTRSRs).

This is my signed reissuance tx ``` 0200000001021c275502593956a16d536a9a0dc8d5ecc2d23603ee2a7c377cc84f3b4928d1320200000000ffffffff1c275502593956a16d536a9a0dc8d5ecc2d23603ee2a7c377cc84f3b4928d1320100008000ffffffff1ccb44ae73382bd23468fb1425486470e7f77265376c3f223b1652088feddd40087164cc3972bbbaea2a941ac12e2c46f793e3f25a5eed26eb47f2f7cbc55ce209000dc2166e0c79ff0046480394c1d7aa9f8aae55a04395ff7bd48b32157da90000040b0957a85ee0d5f349f2d317eca7a3671b1cf793db192b6bf8d5ec6856d608420c0999d81879620a8db5a21cc69133822484e4e600c4951262471ac39606d29a54ef03827e67a7b2c13c51949371804ce24437f98af524833ac4bbd5c41b47a9ec66f116001478c8b9793eeae4f8aafd89e3c54574c25ad8065f0b14d35d53a59c910fa013b8cc301cd954a3b787259b543937618609622bac923009b345b5b97067c8f0f65d517ba1f986ee7c4da4fe7b61d4773072ebfe01f9afe3021052f77cf51743b4f8d5a166fb9cfcfff9e6786e2293c03028995890cd431b9416001478c8b9793eeae4f8aafd89e3c54574c25ad8065f0a611cdb16a6bbe789d6767a3eb2106ca7e8b833c40440e7d90a632f1983e5ab5a08d6f9481dad4ee04b314be2206f7c49810d75f0ce5335a1c7b2e22b204e86d22102bc6b49ac69ea5f7ee43bdbdfa834618f0a43ba7351aa988374a40eaf282edd0716001478c8b9793eeae4f8aafd89e3c54574c25ad8065f0125b251070e29ca19043cf33ccd7324e2ddab03ecc4ae0b5e77c4fc0e5cf6c95a010000000000001388000000000000000002483045022100bb2f28191624bbfd074b0223de4769837a111e37dcbc179845f5e7fd4ca691b602202171731e96a488724117aec359043a099be49ca19cbdbaf2fc3c08b772f389bb012103526448aa2e6a78491ce8ded920381a9d76861bf4f3e673603694f6d051171f5d00fd4e1060330000000000000001bd6341014ee6dfeb274786f10093d78994671ad867dcf8f13cff4ca4b49daa09acd27b3fe4fb69481c7412b917b4cb1ad9bdc0b32bfe3b76496be28806c3ea9e6e06ffd15db45e94dc3a9ec65b76116758f504a148a3e8bd4dc16f08a5b90e9b70e892de4aca9d85a21e8ed9565ac4a2cb3eadabee6c581832968c4ea52cc46b26b200697d84d27b288b2702c4af806ff19815375fa614a78cc014fd173f262fbddcca12b0b68bf92f399f6c6d5cbe4507222c97dee980ac8942581eb2d9c5520fbdf180c85c49d4917cee92c2151207cf69b0519fa6d547d0ae32a163cf55d40d7e0a5a7d20b8ec834fca440b3de6bc6ad6d371dcfb862b623060106e79f0f32f740e6fdc22127e0fe6644a7315868771e0ad3feb19f698dfa808f4f74105949979bea7ff9e8ae4d6e8d6ecec9e63104621f6148c4dd5c8f3722ecc7dbce7eddf4dbee0acee6f075dad44914584110e1fdc12de27ebdac9b29aff88866ba8d9e00c08191ab1f00487d929466ebf8c16f2a143e63b6a08d747f158d26bda9e5a0dd35d120aef135ebfaf0aaf00a52108ecb2f6c72bbf223a2e987655015e472959621ff61131f99413102acca7eb8b2ad6c7782564fb731a0c5604f1c53acba8988655d3573de3a17983e1c3b44015aa6b59330dc0c51c9612c8864d56555d6708a074f0ac342820c88f39de1c51dbe3a5c6aef5a462945415be73cc2bc0bcb1a4b08a77bac4e1bc3e46748158c7c2ba4714fcf1cb4372918c15bb0e44ef1aa1906cc4ef24ecef0f4758cf0f516954eed28efa4c6037b993290c66b027d088be228ec59cf135520d326225702e0f1ef68815162c847b10444acac7628eac035d02f0e19a716ccff2527ee8d74130e023dd1dcbefd8d418ce210b4e15eaf93a7d86f4e9b66ff8514e00bbd860d576f2c23421e1476e15a9255a1c58d0c51e35ac67a3d637c1ce6c381e64620cdc6c2b57906a92203e4418bbee2cdc81df9d89c4799d0a630aa28c44fdcbf649c6bc8e9b7f9b94c1ae4927023c1a036573f58deb4ac8b9e0c973f437acbbd552281afa31c4b425952719afbd24c4f1a4f1dd64271852f35e84cc5488e9c4f303f1e7da3c2572b1713f0d1b5f581ff064be8db30a040f5d3af10aba78966dfb1ecbeaa1a57c1495aa51b654a30febe9b34e5267dbfe25b1846dbc064626e469e5e38098485f622f879d92ab961c8e22c9ec7d1d08865c59e360d898a95e0ec19277b41f0069acc02132a18acba26cf80dd2ae302bb47df4cceffa895db5a14b899de99afc90070e5ac874f49f11af5e40e6736cba30a48dcec65ae0d773157708cdff7b6c4217278edc51209ae8f84b7469dd3eeca326a0980f4edafd8e15d5318487ee6d7a1d8ec21b22c2dee5fde10d4ba70e29e53cd6953fbc61d2d77c9eb2d6b5f039f1073b91ccb8d1687f27b0c466a197fede036fdb0bc7a5e345f0a5d3348b47d22d0c8587725eaa482645e79729a478ea0f13e3969a70bfd80478c824684817ce2d430d165f413eab59c309f15c5732ecbbe1da8473beffe638bfe48c4edc6e135953f8fde2c7baba92278c67748a759a9371c6d8bba233b02ae7b8549e226d99a51829083c64a33d5bdfc5d113c6795bc80e8c6e018834ac42a6855ee70ba59b2fa2f9633ff03238dbf85f7d49e8618edd15788bb482ddd37a78ae7b08e95a66759f5b4690c0e3dbf99d8744dd53405e51166a97d629aeb1c7625b92f813669c1bdd66f87191a56a04bced49b4772b9fbcba4ee1c1cd6ac631dbf22d1125015467c14cac8659ecfa3042c349e9d702f9715e8e5ba4aba0e95249b83590bd6584aa1d234f9e9db765b03a7597dd7e4019c5d483f1a4a0ab26ada692840d227d5ef08b8c75dea707a93831835280bad6f5434a542f96aedcab830d163041b248f82f06d269cf69c8ed2f56604c22dda117211bd8c36d1930fb1271d3403907014e16746cf84f6494333fc19a5dc1fc8d9dcfee33511c334b9bb77948b5b44e05e1d49071a0368f36835cbc04e984e9a7c9237125cfc46cb635b62b2bf544bd7e07d9bb1cb99983e128125ece9a8dd33f869d4da9890e5fd1cbdd52d3e519936a91c45c6404d90e8ac9b50a0fbfda813d3c73d94b1d9b98be525451a0dd6acb53165462632827ad0a4cc4a0b589573dfc6e5fb3b5abc40869466e1bb294594c4190e4ac08ce9ab0ad77cadbbe0eebe7cbcdbee61514542c260134398ef6c810c1a866e76fd9aeefe5ba98d9623d8ae703e4bf59ffb0ab7a601f6b7626e747454c94c66c205ae2639c001dd33e71b0c7610948a826fee6fcf17b92a27758d6996f29ad788e2b6b4479a782555f22a30224d98f7d4b6fd0adcc9c77351a63f4b7da8d144d18718de2eb1c07659b93be4ed086f0a205fb65c8385ea085fbb984075db89edbd7339b94ce14972a0353cd1c4cfeef4106163dd485b21589ed248e101b3566d994be6dffe86f301fa2f67f8f7f0be2fa2397b4ff200eeb2176ae8171f9bce71fa9d610c9c0dfa7793211ee3cd5de50d81afcde034965dc9bc7cc28bd005b7b9825881ddf61a324bfce268b59a9d6360f97d6280fe2d4e208853acb6c60b72f513bf6a1b6f56fdac7ad4da300bb37311ba7ff2357a535e73ccf004d9b92285e9140bbb4bfbffc603ba997e163059e1c37cb8a08b9d79f3d20a595e70055d3c9510a4d8697545798e606d77d3dad0c8c0fe37316c952a1fbedf07ddb9a8a4f33798c71b732630d9108fd4c269bb664fc492bfd73f365023576706a299f0676c10f09b7be46a5ee251818782cf3dee94842422ef0b6b6511ce1c3f3ea35e8b8ee0e4c69c4015aba906e4a963696f972e50de47f858f74ddb7844f76f35ba3e8404a75a7c412c32efa41b2051690215a5719a4dbd114b4c2c5add0cdccf9df180caaa9d74bcc9fb75715a9f3b42db6f5a26a6a59599e591392116db0ce66802865741d5f6a10155f4a927f20f5fad0b30f7835683661d138077f0d6ce8ef45299e7a6776ca0f3215a6162b9d7162a8e83cf3e677f2e4dafbcc3c4421df3b77332e64f911ed6e544e93e660ec3f9a420f82682cc9c6124d6d516065dfd758dc68d0a00f9222780285fc3bc265ff46e2dc43cd2cf2b92ae8309dd10b247243e4fd91b184c7c59afe760eac974260a412f4f7ca3e93f3485365a822006f260dfc50b1e0797eca9c0ff457ada779af621db11f0da16c7cf19b89efb100c2e05b8df2637822822739aade67da859d4802f044d5f3eb5018227efee60f1da7710283a201bd713d5585cc579f39f4a76cf09d6c7f3774b719f9d1914956275314e83d45d00fa6222e8a769efe190eecac19d50c1292598ac0d07d1bf165566c5ac4fd87bc13d802683c7712cf9e4d53ccfbe9e7f73f4f217d7b8a11fe6f2c996b0b9b216813759de9bc7b50788350af89ef21bc4798955d0de4170250dcb0fcd8ca6d4b583d3cb475162e6861c2f02519d4ebdaebdcbd84c706533a4a623fd6fdb1437e4895422fbd730585e535fe955fc737c442cfcfd301b9db24821506962b2954e6ea22f46a5647b2a1f810a15b609731fac18f6f5f9104458dfb440b4d12a1a1774f102b1763501cd8749e0b1a9ebe5e41a963444cbb127c0a6a71a684e10a033189a023419fea3ddf1bd1c17fda85baff824ce56d558dab404f66974e1c768cad2118adc440602c0ce64a3cf762f877cbccebb40b9d6ca6054512a69c3f08e6f6f73fc0369a78910f65f3fb46cad7df955780fa049e071e248cd277b7523a06ca2e539c03a1af6f3a3711da820ce280aac286919d97f19be4a7640cf39322748006e59789ca29602c4d88fc998aecd7e30f525d9215dd1925c7c9964404347dc555c9ef1f0198a9bc7dcdc0999349efb9a0d7134b8bda9ebcf6430ead41b8e2c4ff2916ce66c39ded13521eecf0cde7f758fb995b26f754f6910df680da0830cb3fa427ea555acaae8c03059fd3d305d6fb3b225251ad6b384339df9cf354a73a884d30078d44164c52763e98f82102881e58d45f767147d2e802f2f914ee9f2ff22ba3e8bcaa40cef63b2c0f481f428b6480cae891ca787ffec93e691ae65b60062184f7e030fa0bf311be5ca6afdd7805744f22f6033b4d849d96e9409cc5eee7422f5138dd897111dabb021b3d8c79574590a1db10ca84849cbb6d2e622e403fa363307b7471269d6f0fec1d1ccda3a3d68f622e1851e0e1338424ce1d912da24757d0a74070325dd0279c905c84a31a135b9e68499cee39bc27ed4472c4d83d6d302bcf72c1892abb445ca900fea6e1e51b754e0cb9efc0cd82e5cd8dac7a5a7f0887dc6d236f4fa97eae2206a5468738ecbae04210d71ad35ab1c9eb45d1471cba2ba8658e306bcbecae49d8ab7964ed39a6367560751ac605d439efb3acbe71aaf059aab6675a8c82389bc3cc02fb72f0dc9fd3f60e1371297af008d74ca2702057328a936a2bed3b61b1aa01cd27dcdbfddd0e65bf2c657bc84a892e659a2637de902e1cccd170a8655d66d4ae165ace88dab77244b70a40f1d50ec4e0126c3ca116e36263c588008d7c12b56571e0b18f3a1e93656fda27f8b627b017eecb19df3ab02fc4900c22a0744aca794df69339e32511f9a8c8ef7017b2a3b061014b8b1091f0ff7419e1c879972d7cf2d67a902656d71f4a2f6d703bb9aba5d47b83b470e6a9b4435cbbcc1782c4d7c2d6ec2f0f32cdbd855a44bcc9fe308c4f3e04cff396a09a8e7896dba46af9317a6b4aeb562cf87151f4f5f5e04ffb6fcf06cd0bce5a8a683179f37fa9ef7765b47ccef4b192e25af12333547f4d859cb7f49bcf20a1bb344420cd61a4bfca434c62955135d46dd3dd0e433539ad13042bece9b921bfe0e4272094fb7129ed14faa26dad3e6745dc93231a5efc848c95c67b0e84343b604728b0eececd48f1a254ab53e88dd2a1c775dfa3e936796a945ec3d30e31c912a4ebb7e7f49df95d469241f9670458975c823bbbb323e00b9f6d7c8473b0b43311e8fad0f32053aa0b513df18e828d2b35eae68ef3013fa908a7765f01e78fc063b9d931010e58f8622df3f361f37f1c48e7ead2509f935ca0f95c41fbd36b01b67502f4077ac0542c2906aaaa1ea80c6e38bc06a0bd22081d5363df49651970fd5317449aedcd75d023a9606b59ad9e3bd6f04aabfa4f0a38ea84d34517929ca2cd4028d00091d845b880f993585a77462bf865c8a7c095879b85a46466152ab081bac21dac90244c803315bdee726ddf3226ce99cca3d77397649deb4f5823c9b5e6de8da626aff1e7eb4f6040fffaeb8c356f8a5112e4daa25379a99418ec42f579f16e8e79a2d48f3312601622b0facfe776778c7b520c27bfa45285cc6bc0bb7d43881c30f01012f10e4a1c565d402a40c62e1ff2e23d588668cef757c163e786ae15638636198281345b76bd281c20412b61a5632201f8e35b33ed3aa9ebcd91f92523f0f6169acd1f2bbbf9b4d29513589aa3242744084b6fd5f0bc9b33e11008ea739508091d457bc732d6838b2efe2a631cb0ba279ba802f8d70bfe2d863b61baaf07dad9d6f5c29b9786afa979079ef3c3e7093dba6a458b27e6972f73fe3c837e37eeda593611c4a6ae8555a41671965b14c6ec78121c3c308dbbfbda4dac7c667a5efead4622702bee37cbd5fc29987395efff9f03aa7e594a20d6c45a67aebc01460ab03da48a6ee0202129ef964ad5f0283ac5f1435f97480f4c086fd0f7c6910d38228dc347bf52e88aec5a9937d008e39492f86548994076cc777a10d9983698bb0e74e1c2d2f603273358a9301bbd9e401b87b45780ae10bca57a953a20362c1053aa06bf9489b847863d28eab91b3bae3edf4c5caf59a74156ad7d09b77bebe9d971396f00024730440220790f0b5c967a3627b85e62d929e89cf047b297064f379aaffd7132c02cc7220e0220348a22dc84921a1c31a4e7976732e68484d6652c8e1d1341a1af8e7becd57edd012103526448aa2e6a78491ce8ded920381a9d76861bf4f3e673603694f6d051171f5d0083030007acc5ddc55a59dd9713f8d4fd9223034bc436390c756ff944ac11b9973a9b0a5823a4c72cf134599f950d1f277de541424eaf84b87a4786d317cdd4e88c17149de3c0ae73d84f941e46d30fa9f5d923e38dcaa55b6f06f1dba93eed746c5870fee8d0560ce8e44aa51b7d42495267720de3f3a3a3baa68d081a848c8ae987f388fd4e1060330000000000000001c6bb4f006b9cb07906fa889b3a594b8f7cfc627ff1a902a367804cefff3ad6492eee112fe01c2e9ae1caee9d3b6924b9f6ba45caeba686a9f6c6295d2574665ed18ded46f57831de680eeb3a56aae363e239c4e077f15a0831f9babe8da321e13577f26a84601076cab158b3bd212663a835c4a7a3dc8d57c735539dc299196ba3f4999807a0ab9fe140b8900fbc286a485455113ca6aac1ed39e245294a6e6240c6448e075956c04230263947b92604a1604a7664804d6c489c08d67d3a43689781be823ac9e9d460a43fd44be0dcb57c2bee1d2ee48a11cd3042081d4616f70623b57b147bcab60b39ca432f6d80506410b6fb1926a1852f2a81f546b344184d000cd32f7cde8757fec9b065baf6e06778d7fae8f39c9417159335af9a716de27b253e3cc55ffea265bd5b90b34276e992c0c06587b1b977ed6ad6ac1b2ae59730b032ac4f8afd27fc62fbc4151960ed31343617effabe8269782502249feb907aaabfa0d1e0c5997e82e677b6f8521d0b63bc193f00275b904c0181d1a23da0d41456ffd3162c38b04fe216163e21ab1e4162d747b0784405dda136b99b77c3f26a202a34744dae110db59abc074d241a12f148721d83ecece7b38b27bf8cb4382dc2e7da9a2614aa4fb5590de30660252511f89fe311d843593649b0a323f2871afc0aaa6d6d87a037e610024090acb2a816f34171a8a8f8fbcd63f9eaabfd9597f4027f8b6f4e6a6e5f0295c95a0921a3a339c2686b4344ca2cc0f11954dbe3a1a5009b4e0d3c46341e361adb17272962f396a38fbb5a83fd9eb99218287ce2ea48407ab7826462db6c222a78b748e38422b323062c2a1728ee2f027629700115c95fc7b8fc29f2e51aa31f5632faff362d8eea29594c930bf487712fd52524cca82595d18a4e295682a442692d814603c926dac45811ce9d35180b6cc649232c46ef85f1c7a2455538eb3e53192c6c4e3a9ee6a2cd17fd749f9d7b33a569b1653cc0a10fd434d8ed8e1a01386f19f4660fb73ba8348a70a5b1544878e4761f86c319e276a49e10d9e0db253389f4d06860dbff508bb9f8c88b8da6f1a8912a7df7f2b085921a5bbc9336e508bba3be1f4b5f9a02edced376c7e37834168e63b6d6808c46596aefec78b9e68b5cead1bbfbad5d51e9dd9772683612ce0f7e28fdd98ce400b2bc0c70ead916af81b775f7b87d4a5d14c7582e3463dfe2ebe16877c3816e79952624d3610cb932283de434176ea4cacacfe0953b885a0314349386b5b83cc6d846f9d8e4299a143149119c93d3e8ce80067380eb87beb3c8a7a27ce14d76e6bcf9b55d6f37016fe60311bfa97cb86e84295fc6b14f9dd669b38a16cc1ca2e80d237914cea861506f8b7dbd8f94a41a28457f84b70274f9a79cbf2e688c68545e00be836135938516cd785b694aaa3536bb99f00507eeee0144cc949170d27dd59ec748ed51fb8a59151c412b317c4510c2f5b32af1c5b2ee1a50592871c63c051936f38bcb6fee75df8a155a5afe2e560fc65db98df2e6e6b2ba6dd7336f4d7410b029a5a5748f3de60918fe8ee4be796932c2944434f02af6edf53406daf49afabe19b19302e6c457c0cc56b569d1e80446b06e549be21b2a7db74660f64e4abf5dfd1b97e30de0aecd781408cbdd3cc8ab442eff295432ae684bf0c9322f0d4d849508eac85e13890bbba4f583b06ea5fbba8ec7958fac04050298f33678c7f65124b09781d5b3328d4ad9ec00b6f3058a437c827a55ca5add861d2db6833e55833110291ddad193f135d9533d2ecc12dd83eaadc8322baea5e4aea400bde417e393cc99b7010d1579c1c75398dfd6169b2ee273ac16eac008c9ca6bcf394e44677ba55928511065a89cbb476dfec21cb6ed19a1e133f54e0ba55eed4cade4e66844e257df4897b009e665df70eaf2563090938148dceede486a9ba4e04fbb4675d8eae0b328e67b812a955d6c57fb24cf1bd1e020d46acbda576bb1fdb98804cfaeb75108b32a2288591f229b5b0c9f9225d44b22f2355007471fbdd05d5f636e462b87a6df4bf645ee5cd2d9f919b78c9a1ac88b4b13a09ffc8ee5b8bb94d7dc3ccfc010061133b1d235c8c7147398c8b08380232bfb6795d371d4b9a4179b735573926c026be82baf4a4246d325c4353eb8e0a995db2443fd7097ed5485fbe7975ae15f8175c0bc30d5ec505304d3d67683345c87183850b94bb79a90c9c8e014d6f1ea5221777018d377666f018b3910ed3b1abce94284b9f20c88ba6202e7cd4c2806f178c353f2b2c7dfc6940f6f07e6e62e3837c78a71cc8200a2e92e4b046a32620c0c08d050556c14d2e272a53a372803937d13ff27b981983fca6c26024413a4bfa12a9d225db5706e948768f99c1d66d72dabfbb27674d8a28edb40cf8e204329e89424d92bc276021d7faee735a9ab7b3a9946da4344083ed02406f888657a9064bb5b4fec1b986902c76714546447c2353b93677fe07becaf9c9a673b0221c7a0ac31dfbe35de56eb7bd830081a60bd9b134d46d780fffc721302550a15a16e735a02ca729ceb9dd945b9d1f815f7f714678854ccb57a2ccd1a80b5e97c62e6a657959a78e145c63f15bb5f8eebb18e5aa6daf82206ba273b157267201337c91a5fb5db2edcfa29b888502d5d843be7217521a100de0f1f3f7c2e3b3c18540875581227f67d610b1507822c4d206da6b5cd47329b9fb1f324742cd9771c23b19d2916bf703265597285c61c3e310f77c68424b61606ba2b1c925be06262acddb05d5ca0b70fc42befee7fcc99e47a6affae9a54f6d21b2131d2a6844770b165a9a3f61975974bc86e47f8c8a2dabac7e9249c13f0b164fa57a132a5283385524623a3d45add3407c8175c5605ebd19e1effba4ce4102e45cc29bb844a37a96a89a47546dc13eaf63ac6c98aa2834dc053e5dc1a2fea3e547290e5b0e01f1718cfe9cf8fcf775dd812149e97d2bc0100a97fb56689967afb1824c5dca43fe8b2b57930a159be28355c823e65ad47ff909fd4b544e7809ba23cde9e75da723a8ace14e7835598dc46460ae5cc206e5702e791f8eea23c516ad7776de6202a9f0277a2221de58b68f17da6e0747d0d9919b67a96c713847cc44eb2cb3d147a6a060375184d99b0f7d7c4d14beda008d63aed84c0e645f25dc31f067831a49f45ce9142fc475889faaf90854ee8e82827a6ae474cdd73b3a77c8ec38fdfd9ba13bea2a17bf2c8d8e7cbd86e70b1b9e467c46f6f6123ee8108da1d410659a882f02b9257c9959ab557574b169aab919110ea004c067864e3748a1c7ed3a01cac36b35347710182da89c01f1c2558efe67b639cf27927f0b7ea7b3616d591fd7f065ae00b612d8efc47234073c14fe2079f5ec2eef6c2137b0d3d1d3574c965fe816542515b59ad57c8a7f97ed3fe216028a1f6ceb9c1e95b39dcddc9b42a0f6fbe9694d8852133ca15ac70b3043e1c822c29849c4495c3143c29f3e1b9fc89dfe9d89960d8ef1eadd7928e873b2a751b4526d0c1d175f638bda46ead8c2bd8d8f052ba7e2208cce1c7bbacc10bd5d1641abfdf784c61ff8db9a59cb4d6b97030b7e00915b448dd5fd29a27154f8d84d4fd01c26d608231b0818cf634d731198e720755dc69ff13929211df1a43386740faaae7e7c980ca5f0c8f5a9a0291e6779cd6902944087c190394d807c3f97e9ba1905a9cb9a572d086fbd7bd00f23fa8a1dd3456c2bd30a06c5217630f13261db299877137949b02d6be99ccf593b2e91fead1dc6762190575036ab0dd9b1e8564e0e785760e7e6f398c9ac2fdc34ef6ca57718ffa3842099cd9c538a0669601593534b019699bc4163988e2478d97368c252cc2082957a4737e0d9acd34b56e1409d06fc95451c146fd5e1e196e2707e52ed14ad20f0b58db2520bd91f50f077a8c41cdbf318dd5c79b74668755ca176c9c6fdea95df736f895fd636ee6acbe909e65926fc1aa50fb68fe09ceb57e7052567ab45690d1fd62435e0cbf3d1c35962b774d3ef54d3a7b82eb0c5599e7bcfaf5d8f5311b9b5b68dc03aeef994abe79c0e94aead609b5bde31b373b192af3a8a30b1d6fa3033716932d098cc7e1ab10c3830e3b3ef0a29a0e0acc5d175a2343b55c917940158e7d09a605de557ccc350af4671325e2a8afee0b3ecc5b4f45af4acabede8c16b2dd6a31e3439bbef3539d04689e6a26bad101a1f6594cf3f4d2f05f3c8bb35b2969643a75aff15a35f2aec1f0303255313164bac289f91dfe4238b165503ad78b5f2c5485c16078a3c4df8b6e742bbd9700d4d9092a53b4eed2530d2cede02896809bf90ed26fcb4a3c00ea9896a49540e7639ceb6e34b2987aec6fb2371c8b81df770bd6c0b005ca1c300ec315e8ad69b61c716fa5e6e995a3a5dd30c90fbda8de6a8e771a294fb03dbde5062c4bd36452f52b2af55b4820471775834e10cd4fbe0473136cdb4f4aca89875cc9a53cfe0313d6cf50bdc747cb559a685514077111e9a7d7a2453562201ee0fcd5e135a0c2967574399f1b95c71b1cdacfdcdcdf75d0cb5c7f8b5d6aba18dff83f2fc0a509597f5014dceb5c877c7a6949761a326d07800a2228d36c514c32bd685f7ae10876b8c9514c185105424d1f09b664f4f41aeaf729f177ef86f91855ff4d955d6be95831981c8074a63f38edebb3d0a04f5ef326b6d77ed93fbef392fa2280f64a7c9f4153f4f1d7d5d90e97b4f0dd98fba0a2d6f80b35d5112865d2a501638e5fd078386621df9e82a6a4428c0fddcf79a58b009c0991c1dca9fd229bb863f25ca6cf8c65ec1f315a48eef37a062d9078c4264b31f4464d1c495fdd6b6440008c791b54878545ad6b58bd85a913e8a1187d06457c120089666c146614aed72491cba0744ccb713b66f0a75b91aefcf87ce5c4bbf92c82b90dd748a2a239092c7f3066bd21c802d224ec3db22ac20bd6bb409f8c322d694031ed86cd9a917bcd1875cdf55ed288b4e92adc81d82fa7a8b43de59c50bb6d8a3515e3d761fad58b76ec36e14ec9d859884c412972637db5178c93cbf893c4e302fc16c196845b9ccfcb0bc24f7e6cd1596f334b1a509213f9f6f064e4bf554adf141d9c35eedd16bc05d0bc76cbf87e9490549ac2fff61b163cd3f75e86fdc58a846b5f30898f5099caf916c3e8c48c28b57b5f84f92ca71339ad05fcfcf317fb67e6bd32a77b41eb3cb1c4cca4ad5037d87419fedfdc46f52f2270142c5254932174d4eceaa434965a1699edba3470c07f0a21c1070e50d83d9c7eafd49201bc9973f6ced7810f564d886020cc454a4ed5815f0f2103bd15073167e4be085f7ca97c6b61e186c2e0d5e1e41229eabad8198fe2d89f455bb80720069363306bda500b1caa75e63b2069574a6381e224f4eee607a47186463025a4add8e906fb1c93f71a560de55ed1298763a84d617b6189fffda4c671d04f4b1de6f021265ed68e4e63484a1d515f715afc246fe6ef259286e1e4b9a11a391c0c073050269d903bd059535574bf7421ae50288d3f816fec4ba4abfdd0ce019ac586efa15f403e51454a001d64f3617b4d86835154af07dd673d0f17c940cbc0575628516813c9d8ce018c7c54df7a2ed812311375c14a94d39f04d50db0d7f08caa11e332dac41e9f77b9f5e65e43d2018cf0d49498bbc4122ab55e9e7960808f19d22a083b8b68fdb81be9f339fa638bd8ea4cd9ec6e4a36b4bd654fa733c3da30bdd9c560a75b6e4f1edc8a49d39d7955056ee74641b0ef696e5d5f7ba7d61324ff8d431ab867bb8eac29d11a2ef765344d4cfc192a3ed2b43d3dca743784bb72da611e19c9e4866a0d5e4d736b1fdd32d4f43a9df16e098ea0af8e3117f65e351429e12e93a70004785385830300074c6ac27f3ef68a3ccf5f78b4585f2e556b88ed88c924d29d5d3f6530f69e6932fb8ee66bea8feec88ffe03fb52cd6ff00894ec3f4c20cc5b725223c27b9affca17da17b9b01e21300df268234542916c3ae45d3eab651fee75599328a1fbce58adf99e0959ceb1024299c5a216e62331c8d2a9aee52bf8092c97e34c5821c1c6fd4e1060330000000000000001d5a04301f0ab92279410c63ecb2cf5bef599c81ee998a14e9a6563739e4e9581d29e5ce6282a06f3877b986154630eb42c9ce96e147834ff38779e5d1f5366c4ba05c8653672fb57c005d72266724aebf72c40ab3dcdefa78cd0ac5af8e44677ae8721fdad46d0971c9b42e70b45020f603a226ebe3d79ce8279056b7cceed05abd4cc929cf217cc7e18d0523162a55e4dcb78e95068d94c5285b9f8e61effbf3638c7d0e6c4754cbad9584d7bc13d54c5edee3108f93b915dc78bb0cf10b3ff39f7f585db0095fd6b292e0e729909e019c83455010d5dba0142ec8637f6e6e9de0bc55f3018fc6c6991dba075a1ce479249d94048ff8ff1b8df431e1e3b337288e10a4f8c1ed58b57706650e4614cf47f60036f1a6e16eb7947f11060bd5a75fd0d02b88089840bff0c2f6773a299b2a30c063bbe7fd113360e45cfd9ab575ee3f04e9eb5beaac72c449a2b48f5aa533368da17fee3424f18b4d51e692c8703ba8910dfc02e831dc0d0241dc068380949b92605018917aa4e67238f6ecca2d5bffd7cdd2239c1cf7ada7b102ee03189ce1f059887dc3a94b8bbc3db20049f11affaf82da3c10421a00f6ac46934b55fc2fd8368311f9c142ec41ac953f80ac5db7e475ee53a9ef32e023566c566c0de737b8386c0e360cbb4daf1c36f03378d7916a4a85ec8618d4c77e0ab15f8eaf790bc33d57e75030178d997f627421f454da49154df8759f1a3e16a991cfedc0acb8d4d6afe83e0ed315a9f48277cf74a83ab54c00b207be38649381f7c9851ddd2a9c326bb60a1a8a37955ea5103acdd54403ce40cc51e24ff5855485967d9a3a85d98106b0c62aa53f23acef9295ccfcf1fc50efe3bee8a4aab45e55f76fc0a28a762061d37cf3fcc0ec13f6753c3f474e7d3a46830609b863573d57052dad8994feea31ab845e27e473180bc5da67cf760b9b7f505252183d0f0164035b07bb79ee3512f21b46e9eecc58b64c0eb7e6d8620655d8caa79c5748427407a72e1c55e96291f40d266da45acaefb128a7e71b6f47648dca3c7ec839bc17af4cecdcfdc42280a125c8dd65fc7259d37f25d132c3acb34353e4e1a6e9fafad5b0e6dc7704103d6b855f1718d1687934165e0db091bd5214c6ca922fa4d5596eda62a5445dbeff6d67fa7752cab19a58b0fcffc4db110042e933cd574e94c0f0d8e8fbb690bbe9dd26251f7cf235c192b795e3c40dac08f2235243406e78517f5948e5505816f97bb85b96532763f35917174cce7c32bf22200d73f3b7b148637afd50764c1bf2ea7dccd98f0e8d230f590cbbd5ac8971cec713bdb7c5a825102f78588b7515893263f61349e8c1393ac16b445b085a79f712f150ebdd9b899b2e8ae7fb05f9614f648d94c6e8bcc48a62628d9da6fb70d9349749053038ab62ab6d80f0d07a5260e493d8786b331e6033200ca85c3e02b5f6000412c1b44168751c5469b9cced57d4472a93265631ab889c13b023d8983958fedbc8a7b3f2348759face0fb4573a72ee48b109091be1cecb668313c1c046baeaecdfd3755344c01258b88d89465c3da183f108eea0770afd7f426adf4f43c6e63798647aa399629f93335431c91bebd2c5ae97ee6b83cfa04fb1e7273ba3e9228244d387b58108fd50cd498162d92e5699faa8c89b46dc9bad98233297bca2fdcc322737a669666247ddc2ff869360a70c558f7724b11dca6f4d460d3c2d4ae4c77669a4855e28e20e8d6724fecc90a9c76cac2033b52f66a79ae1ebc00301cba38292c3a777a632dec3e9824e67daf7d23d237f62c9015b827209655fd0268621dd058c49163bdd42dc1f0b41af94307a5146f84d924d948422796a9a5143e4735056e3570bb081dfb8bf1155260355face1164bb9dcaa6d429c58c41df5b8025cfcac754cfcb06b704c217bf9122981919610b5a0c44ac0ae2a52ef1dea44328d9b69bc9d2dca01682e448b4f7a8f49bef6267b614aa99901de2234cec06d65e9e899d0ed0454fefbddfb550ec18315e58d6dd538ec29c2f422030bb8a93c579e791c083cdd3c9e76103c0317cf8a3520e5e81e60bd205a01765a87d9eeca81f4d73b012d1cc2a97f9de4ddc127a723f2c06ef295dacea4a59439f4c7b586f05f0d193a3ad89d66538784b020045cbf79df306d4dc66f847c9910a4bdc47d5979a7684b70e4c0fa4b8f6b16896d6f45c2882f56823b27a4a2c949c6a5c0756e89823adce34a8fe23ba5e7512ca4707720c625bf287842eab6475ee354621853b07b354feeebee1e1e7a09d47b59ce798ca0780b5b2e781de254aed7ffd1a62b51333462a16b89d064047da9d1735cf56d8d781e943f9a07c5069c56e96721cb0f8d7208a41cfcde2dd128d7a8269c8554e079f9ce0eef15fc22152a0f2552815d7c5fc8303a29f40d83e0528d5b960f4fec6e43d0c804042bd6d9ffcc321a587132163be0820eae7e522845e132e251904ed7dbc26426556d3e0cc8c1a40ba1f783711183713aaf4f71db5a560cebf32a18c2238cc8e1bdfbbb1fd059e55574b6707e510f97ae4eea1a1f7174edbf0bc3d4bcfb69221193118e4eaef6467fd5d69643307e987fabc2709f0e0a0b247de162546df2144df8fc0423d0b37926518691413d5bca14f901135597efeb6f8f984016834bb53dbac7591ab5f0d10f349304a9b2319ef255849424bbeca11ab656e5957e0826f52e3c69be60699c8f6a976f06410df7219aa01c8b3757f6e83f7e508759dbfc5b4c2796f79090eb90d967c14f879855d23c7a09d9dec8cdb7839ce0111120305c3d39e3946cc49790bc8f4d25a1c3fe724e3280962b63aadc8bb3c2e68df61382bc2bba165e015c792c0f653ffb057389e2fa736e96a0a7bbc552a3424207b83c617c4b4ce91e43b5f97caffe4a39f16c063f9301be44129363c555eb4596adc34526a9c1e9a313bdcf25cd72b78bc0f076aa0937343d292e4ca590fda031744229b159c22323e6b8064ab6fb23f1aec4e46bf940fdb256ac29a17270ffc484b9684f95530b55a83f98c90d1b5bf520dd537595ddf57c44ed53c5065d5257b7d77a5a8002898b1908435a5db9bcd6212cc919bbe7ddd07cbb283a9e18ede0951c33af5dfc20c88bcda8a4ccf4220c65b303f8f4c404326082dafcc4a350806697c7bcdd83f0e81aa62e17adb1747e3dea9a3536edcb5a4ecb7a59b79396c7d68611349839b914aac842e7dc76181546504b5b687eb8d3df3ee0fb57d2a638fb81e4718de4a6760709cbc6631b00fbcf37747500a9fdf5ea6dd602104c43a919532f5e5f01c147753d94300b793449545bf3b69a5047bada98540c3cf572d2cf278bea2291eb4157109dc2473495464407b2dea35fb16aa9a50c895db8b38a8526ee01f5d0b276d14ee5ad123fa95d65e4eae07286a990a504822f5063c3ec7a2c493efd645f747a270d152717ab9a7f94597d7ca1b2f43e7446ffb77a21226c0ccbe937b35c7fa4d45760b21ef1014509ecacbca971d1d6acb3aec10384fc4c28e01651396f9ce7cde9bea605d4f5104a85bca817a4f2f6bdf3e97a78b3467ec33d304edadc2074e4d62d56a2f0d8814a5e7829b03a2b54ba6808a115e9ad9ce53ea838d4790e32a8e9b47c047b4bef898164efed3a4e4b9ae384433a89efd0fd9b9b54ac7591b1fb964f3d05bc3eb4e429c4918149e0fd826b9d9d0e26bdd7ea042429fe86fb0b9d5eee32b86caff1d54b3106af9aadfc34de80cbc8bccce3c1f44ffa9dd1049a5f9d418309675e1316b530b5d63bf457ed13cc337367971b4c1f9ca35eac9110f3dc2843ca3e36de9c97cc4e3632847b9745c85a9d3735dd3a1afae00a4e2e40d7e8d0439a591b41bdad9a265672f775efe9d11f26eb773558e946ed5162edfbc5f94416af67b286089c386a25edf845316f81c6258754bd1b32d34efe67fc12916bd078d88ddea6195db3ee97fbd0cacb741f1e85904ace3b61775bb94c32644c2fe77ddb281fce942a285d674582fca3603dba153a288a3d851d8680c62339872ab6cfe923199b103dd1c16e1be8483d87ed144253f7555f1330cd510666b052fc0178187057deabb6b9a2af2f03293103907d7e735892b1f4c60e5ec86aeb29b308fe75d3ada47fadaeab017c6f014538b86bfe4e775462837d5e6f8cd6216376865db3d18c6620fa7132d3f43c254e457776afa4aceed8a749d26d1ddc4c00d265351c0e99f00c9550c8e1aa8e331e9e495b934baf394cbfe47ee0369481970d924678d6c53d07b9874ba55f89148157ed1adaec2f3fdda7b05a0be809053b4a525aae8a6e8c418d3080293d63f9789b7f7ba53baad1aae8a44572958be1e18e5660705c19741062ff59ba361425c4295f3e6d9295355c4810ac72730dfa29e4bffde8585e941e8929388f5abfc178a634cce40a5970628dc4fe21de3843bd9a916b0a974f0bf19c5874778327d86ab5e3763d54ffc735ba43d3afda53594ecd5309bab8b293e430d82cd63a65b3a2b3baec1386b27ce565d2a2e3b847efe6f25028ffda565357c76f13b698fb3f62c8f33d04d19b24ca28af22f3904392a50f41635d8e3fbb5df3d43fc14dc2f1af7ec940af7e1f9e62c180f09fa0d4734cf713453bdf49f45c4c069e5ea08de68d303004c2d6b668efb3ecca2a3682c0235165b3746a22f09319820af26066f7a96c7cfa756770d824bc6c4cc1277a09ca63478efbb7b43e156bba385a46459de8fc09bcadb268b7d975b76180fabe552b0c7aa936e9f33201dbce337706e1e4c4226c89ad8dd642fcb60cceda6a03639902127f4b70b9f966524807f40f54c5d1fa5f25a3a73bfe6c296b6f33a664ab34f1e8176d56872f3aea3a0ccfe882320f28bc2fb5bee23862e555ddb92afd846139498ce78fcce3ba75c42316585d2afd0ee00f484e1c627ff5b9d2243169b3069ef626ef62bef89342b63823c632699d19b7ec525f168f834f889b7a0afed71de07c9f5074807ada1a44a1b1f97bf98a8c04a11dd2c02159e4bde35f37352c936158ffa9547ad140c69ceceb241a89c9c1e60eeb861a2d076e14144449f271efc57ad330ec1161d5b8dd3ad38348b05df91c4e1c0dde481dbb6bfeeefb9cac6a8142bab1be278a9adb1409f67dc1d4d56da0e4c459605337193374ee2e6c019b1a77a33b4ddb4548657ee8da81b8c93d752097bf45e6fad278e10e48ca5f9f73568454b35b134a52a1f43536a62b8ba4ec3188ee9bcd18e1339b832a58593b01999e78393125c4b01a3888def7f3e2231eb1efbce8406359a222ffe25a86f3e3d05a4c1f80bea9a762653990e1a9482719b100d13d1edb717e45879461db927bcf02217cad81975d1211a470b9abffdf62ae523cced19131ab822c4cb03eeebda6eb1343d85912195abe277ceda4c21f0ad5a02cb57abf732c979679b3ac14a71004e04bdb16f4caa70dcf0f173b23867ed674b88aad415ae041eb6c5462ffc950e850bf78e886b64883be6241c9a22be0cb72e25a17f22e451804385cd613b4935b3d01fccf78dba3bac18980f4ccff6c6c47a0a53f2ceec37ced4ad40170c0c599f67e4e4388fbdabe99c059f5668d25bcf8be3f4e908f757d79bf50a9ceac7d6d00decf73dc45ebaba46de5ea55f699128028b9bdc3be2c772ec6f99e3425a96283ff93e452e185f7e1f10298d9ecc744a534af87707c65b3912ea4edbeb782bc12c18a35138f393284e1ecb87554d4b8880a8a4d9354d7841dd641766d370b6c6e432a6c5911a229dafa1cb914ea34b6beb10b4f949a8074e7a3342199e8e9e52b9e57197cb573b1f75cc61823277750eb09e1519379aa48f38a4c725213eccf220ad19f88613eb7b408f270ccd561f84ba46caa35a1b651855d3183030007f87c788bbacfd6a57ad891afc186ea779ae77d1cef382ce505bd9c5c4229fa83d68eedd78fd12ee708d8fb59f9a0b0f3437b446be12445f87b0dc150b487bc1f3a27e71ccc9e0efda0680f6d4d28ddb941f77d8012fe0c4adf1f6ade5df2b640f05a8345a0c1da9b8019a2be2305657b92da785b678c493533de6181e357e4c0fd4e10603300000000000000018162f201a318ba3aeefa7285f4d7381ac05221e0be6427153cccffde61152249803207661d312734d191ae403dc659fd083833c28b1ae68151215bdf98712315fad15e79ff7101fd955b1c22f69c046f1c7fd57e228253756fb371d0feaf25871215295a88a1484de81ac981a38307486a351340bc795a53cf0a913b7698bba661ca9912b6257dbfefe63a7de95808393a54eafa1af20aeb1ef590a526afcf50320e30e6d4f379a0c179e931a1e0b49d39e3f6e9b89e9a81221bcad4a452d08183af085653489a212dcb5c192f70c20c2801d7eaced7ffb881bd0e157d828b0918699198e838b239960f809abcf91e87d81b671c820560d7ddd213117f22e4e4f63eab38f2d1801a23fc3be7842afd33a8c8d2f591176db15b354b7f10e5f7c21beeeaa6dd88a6710f89c7a630ce0575a783ee28406e7c86de9836308bd225accc8aec2f7c64c53e605dc364ca81ad25409ddc26df044085a34b34c8b7a5abf30ebc00622a73c8521a5b6b3dc01d68bb8252d3251b0a22e0728a874ab3ab6ffd6ab66307ef5412a69d806b0c0cabc8a53dd8a4a81c26d066f9fe1c9f8cb29b9077b0a0f6a43bd70fbf1af370323274ff5ee69835e349d838e7e494ba9c696db578245ab001b70f0710c3135a8de62c10d4ca233b1c2b75a425257042fae97ae24026b1e139071d4c039682227fc474fcd5eb012b69a2318bb50a6fa58ddd987a78297b46d049339c6947240d9919398acfd128ddcdfba183438c158bc92d6b11c697d9a6c1944c5e2cf68613460e332d5cb2197889afce1bcf121c0300b7733b17d9dcfeb8581e9d9506edd1bb1be2b97447b4735a5fa6e10ab521411e4d5c58aafa5ad5dc52af76d9b37800f3ab455157bf0807d4032e890f356a539cceb588b99a44c6fb5e138c41e89e1ece83721900b38e103dd0cfb264ae5cda221dfa0d18a44b74ba1aeea203dc72287f093f649c2d51be2942ffa753d8176045e3df6ba62ae21699fb6ac1f37425d0be804bada0ea840f34cf35c74abf0d627bce6b0e0b2e129f0f2b068b1d2d5f7768374adc56e50f8e088574b15578d0390cffa118028c8aa486dec6aeb6b918a1b226d5fd43aa2d65f4562e4c4c4b50095793d3ea9aedb8d32fef454260756999c91627605dfc4cf96d52954917e347810419f4fd0daecec2e8de94b091c77e21e9fee47f3efd05dedfbefe69b45213889d8795543b479ae62ea792502c442b38b17de69954eae5c4c14250b1211c429138c31ee75d979654b3179c9f39e3fd411ae7498f9bcd5feea396d63fab4e8bb857143f1672817ec75b0d334c865ec0f97a0772c1a2a18625c89d6fc23bbfe237b030065f1ac294866533a792933418bac8162671075b5e7d7299a142d50ef675ef822d0772f234ac5ecb953d8841430627e4b8b286cc401e0e65fef896f8d54d89466edbfed784ae6a75c8658b25fcf283812c860568c345c929c3e0d3d2dd049d332a2722e1ddc79148cffd415846723b14e8bea23dc61113aefd0ae089c88a0124e52c8ee28f1bf8ca041e54e19d6cf734e8c2eb4797855f76f24b38959bea168556598dedd9b5f3d164e7e6f2f505653efde8186b7a2d79be3eab05491b5b559c338bedf20f9d6cd457ce5babd32da908924c9df6ba0f5bdaf129ea4993555dbbf1afd1537654a527f1e3039db5840cb7c2f110123d7face858d0384e8f1b90045caba94a622c4d00817e3a454cf9710cb3a94f00144e91cc24fb80b517979787672f7605cbd3ed37bd0f24b717c9589ce8f71a0014454488e5a0607513770dc46e49d4a1d7e4d97b6774211ae0cdc2d8c442340b155032947d213bcc87776206e1f6c3c5f179da43fcdf521e801c5354de491caf8160d7bdc2d9f01cfaccfda0c047ff1093b80f269553051946303079ccafb943b6a38d463c3a1166fbf0990d579d8c078a4caf48f7becb010d3b10eef137d2948823569ceb91908144d996a32788fc83b10e0a9f3b3ff988368410665635d277d694b1e324695a5ac582869ed17c71d4cb9de217d8acfda6a8da79bdbcc2ad235b1ef6bae7f72d20163e8d3081fba4ab2efcfe72612c241a140182fc60934093b3ab1200f36ca39d4b7d1555dff338307cc6d4a126ef7f5ea29cc3537c801e09e4dd654d12749aecac44f8ab48f352ff424cda4a75a4048b74c275f2d2b0b43078acde238cc51bad3a656d9d8423a86b11a3829dbf9643112a09986cdb0d0ae97ab2d6d137006763e36b0b0dc8f31b2a31cd563e621f688d97ccbfbf3662ca4d66d1e7b9bc96e32585c4289f81f5e284ab4c94528f801ecbac779cdc01a32596962884f2821986d6195c4113846f6a849f112c696156319a2353e9fbcaf435c7fab0a4eb11d3c9732907755b18b1dc246c754bdbbcfd36bab8b90faff2f0cbc561efe6db5d3e503b65a9ea563c32dcf1c6321a184578b2fc416bd6e46c4b3610976068b130dace8da6b349655dabb5e12d2fb220df38073d1a6104b0747bbc80d7c6c4ebb09065223051ad2cbd21e2874a387cfe9c955efcb614cb443130b34a63b407c809f55c6bd1c4345f1d1f0e607d9d4d1e7814ecc376fe11d6c562ea758e7fdcdda0bad4d0ed4cc933bac743d407ac266a3565517917a49a1a93aec20c5db332d1f016c928c0834412cfcddf24693d2e4f6f27c7a7b6f98d5cfa7ddadeb249e2b58d9a97f5319596356c394d655d7b4734ec331bb784e8083e09a0498e4e371f4461112045d16d70c52805e6a59cbe45d0b7436b1321faa1223c88b79586992d34f714345e79fdb770cc18845c16ffa9eb4bb5d9623140f1e8a83305d29f26188fad9f79ab2b9febc93a88c3f388778fa16a610167050bbcee88b68206c0f865e2554f8ab49da6d8a8106eede8b2d6cd6ce70abd3710ea030551ae44f96e24ba1714d8a79851e4bb474ec5a7094fbbb0717d6805f603e4670914cc36f1d1342a35f50da6ca51f2c28d74a3f078e27ac05040c4dbd1d1c751fb4b0f5043448cc62f88871acda09836d459515b71d6e5eca0561837fc3876f1cdc448fd9e241d755fc94a114c981d9f5ffa734cf540b8bbcacfa33d369a2ca5736a84f2a759273aeea6c17847f8686087f0d07402d0cb5223b7016f44da1188a3e5ea4e638ad38e1fc24aa4e4e5e0fbcc8c241f220ac0a9a8ecd759fb219168deb15c5f3d29d5bd1784383ca2cc5cf455d086da18432784b018f28c7667295e48d3040965796409c915fa0307a1d0c43d0ec75ac2b4d68a5b04d89df897ddeead4f6added561fa22c8e9ff592f06db07d7a0e739d2e41148f957e81a8cb0c05acb5ff7a17400511c9c6d9b7f209e2fd37d275b3ec2aedeef4834820f01db7f292e8e077ad39c38412e1d3bafa4db2a3ff2e2a598648dd70bfdb67fb5580f0b8bdea9d6755b28004ffb96621b119a49df91c3b455db2bd1282825cedd206265bfd342d156774c59403971719485b92dafb673d194c25d70713c0f89c7785ce23cbdfe86dee7e202be41191f32ef9ac2d2d93c454c277d213ea914185c8f53ddc80c2b36d550ca28330eccdb828343678918595758176f8e0c7196433ea166a308057681f9f5a35c5e1c07d709b4fd9777828c482efa26f079acca220efe61668e9fa240a2b0289faafaf67bea3ffdfd42e14c9febafe3790b043db209d66608b83af2c7630aee09a675404c46db5e128c17ad581aac5541f41ad3b817eddcba7692aecf142b2f49128db848d7cefdf9d884522332a255a86adc52977ea99b71aaf671248d5bab6410f109881b5b85d739416f8262b216fd04b7caf592d7af186cba7bb94d3236b4747a4acbf3e64e3ca0f3a8de6bc7b81560091e1c771e9ded392367f5b2e4583e6139430dbfa187120055b0b7cd71418b588125134f69535ef9df7b91eaa1eaa26b6b21352a0fbe5d844a2474d70e7a1baf3febbb42645a4d4458b844b5425195ea74b00d074138bdcc916604271715d4a82333721bb34be8ff6a219447d6763729a273d0d8a4b99b6632c3c33bc4b2742be24fbdd8bd8a857b4c4e6b5156e4ac780b2ea135a661a67d0b35063b86fae4fec4061b59d349c588df0af23fa41029e6148f766596227a1775cf54fe0a6ad814e8b580d087f6d016820bd6d46b79c7fee4c40542b48d6b8f3eab361adb42eb3d0beb9b87846d87a8d6e794c082a39805230ca71fcee383bd67b96373aafb92b269de8b7d0eeee532e87cb4603f81efc94590674c404903b00daefaad9423f7932bdc4e4410202ca6cdc44a8801bc3fa217571282d6f816bc3bc924710542f25e97debb91ce811a7bddb13a4f46f1f1f1c1c2e5ac0b4aaf0c05fe922c8c881f6b7f77ab3b32e4e75691d71e1fadd2a8c1637b77feecec9375b5328feae0fbc854f3bc5a6a42bb7a1893ae22276dfd0daacad622b0cde5e0559aead4532fa154a113334376ff8afe6c2174ca04e582a4480e5882200c78e9548cbbc11b05f0edb4c5880d2986a5abc1690689995785ea6efa2fdf25d4dcb7cc9a835297312cee37421ceeb6f1be4108ec9d72947fc446baa7da9b2c82e0a337ac3a9516813121bcd162db69ee888b3b527ec78079e4d1256546b4bf311ebe7cfcfd0a5f3ec86f9ea79caa9a77d0367a4bb8cb043d073e67be66bdf5ad2b0121b45f7dd4947a21b1de21057c9dcb08ad27335d6cfc9fac64e1f5b2211490afff6ead2f5e2e7a23f9fab33d024bb064a3dae75ba8c8257b0dfc4dcebea7a3732f7832ea98665803f4f0fa0a6adbc58be688abf84b49312e5418fe34b571c896033d9d982ea0ae21cb3af1283bd66b234ae39b06e16a01e37f65cf7550979c58fc4446b40b16ad678156bcd8cd06759a9bebca593054d438aa4e72746150171747c34eb2fc857cb189b9bcd745a460b4803ddf3d2469bfba1902d6be68e60e8e08df56773caa47912c91168e4402e04218d049cef0142706b433440e7ede9ed9fc5892f370fa350492da68e1464cb12512d3efac338a4afacadaf5ff7802c47cb673e4ffaeb05145596745e4230494c39e6613bee2d673a546ba2fec22b2ae498820590d6a9d4c494ac8ecf3ef70b09ba9f76090f9846394548fc770b9bfb14f92b1d9c8a3936bbe264834c502c3a1b8c4dffa32466b0e15104caa355003835e828adf6a9e3f1b9eb7dacc97520d55e26eec7f0e80fdb11acc4105f659fa2bb0060d5d267261a441ad994db772fbdbe8684175d7c81b8200101424f368927fd28cddbbdae65f64b4387764625fedeecf71c58021c97b31ba53028e6ddda8438d80ecaaf9ac40e7eb00e847d08f49226ad00771a5d03727ab26d758d0b6b0d4fd247ef1ff1efccbd5d36e4c79333dd6d4a2b087c589df72b097368c3af0246889d20df6982e2e19017c394aeb123e50c1e24d8a7167a6b0e86018a17abc2ec369905becb2f393da7b000812c988329b260a2b6c65beca27c3c22b1dde0bef98951c5bfc281c60b3f1a3f926b7e319e63547e428940d0ecac07e9420176efdb333faa1314e8defa6e8ddbd95b66f076a9140940e5492af8380c72d364e37fa17ec89e168061832e7c0eb00e6ced3d95e1d6b2a1d4fea5535ddd44c495c34f4c4abb2db258d61adb4fd263314c5ecfe538e513e278a0906b489f7518c795ed434d9dfb193b1566342e0dc807c03ea2485b749f4dc627af25a3fb1ba30d711be800e20620214327f279ffaa59fce26714e887908737baeab47cf873cedaaa517da1967bf326f5d8fe0f4b4d0bbd232b018f45bf40c0afb8e6d5c127018e050b72047db3b368c80f18dfa849b6e49d32c6925c182145a525935fa13dece42fece60c9102b0fd88048b94d56c19ed3bfa79e82e583bb6e32c759724b67b0561f383984a14df707e81cec20000 ```

Following there are sighashes and signatures I obtained: input 0:

input 1:

The resulting transaction fails to be broadcasted with error non-mandatory-script-verify-flag (Signature must be zero for failed CHECK(MULTI)SIG operation) (code 64)

For comparison, I tried to sign the same transaction with the elements-cli with the help of the command signrawtransactionwithkey:

Elements-CLI signed reissuance tx ``` 0200000001021c275502593956a16d536a9a0dc8d5ecc2d23603ee2a7c377cc84f3b4928d1320200000000ffffffff1c275502593956a16d536a9a0dc8d5ecc2d23603ee2a7c377cc84f3b4928d1320100008000ffffffff1ccb44ae73382bd23468fb1425486470e7f77265376c3f223b1652088feddd40087164cc3972bbbaea2a941ac12e2c46f793e3f25a5eed26eb47f2f7cbc55ce209000dc2166e0c79ff0046480394c1d7aa9f8aae55a04395ff7bd48b32157da90000040b0957a85ee0d5f349f2d317eca7a3671b1cf793db192b6bf8d5ec6856d608420c0999d81879620a8db5a21cc69133822484e4e600c4951262471ac39606d29a54ef03827e67a7b2c13c51949371804ce24437f98af524833ac4bbd5c41b47a9ec66f116001478c8b9793eeae4f8aafd89e3c54574c25ad8065f0b14d35d53a59c910fa013b8cc301cd954a3b787259b543937618609622bac923009b345b5b97067c8f0f65d517ba1f986ee7c4da4fe7b61d4773072ebfe01f9afe3021052f77cf51743b4f8d5a166fb9cfcfff9e6786e2293c03028995890cd431b9416001478c8b9793eeae4f8aafd89e3c54574c25ad8065f0a611cdb16a6bbe789d6767a3eb2106ca7e8b833c40440e7d90a632f1983e5ab5a08d6f9481dad4ee04b314be2206f7c49810d75f0ce5335a1c7b2e22b204e86d22102bc6b49ac69ea5f7ee43bdbdfa834618f0a43ba7351aa988374a40eaf282edd0716001478c8b9793eeae4f8aafd89e3c54574c25ad8065f0125b251070e29ca19043cf33ccd7324e2ddab03ecc4ae0b5e77c4fc0e5cf6c95a010000000000001388000000000000000002473044022007826b6ac82c27e400b05caeb61dfdd0d727d3f888ee36683b8291fa0189467802201dfefed22899102ab3565b696d16a6954f78439efa937b330577464ae74f4667012103526448aa2e6a78491ce8ded920381a9d76861bf4f3e673603694f6d051171f5d00fd4e1060330000000000000001bd6341014ee6dfeb274786f10093d78994671ad867dcf8f13cff4ca4b49daa09acd27b3fe4fb69481c7412b917b4cb1ad9bdc0b32bfe3b76496be28806c3ea9e6e06ffd15db45e94dc3a9ec65b76116758f504a148a3e8bd4dc16f08a5b90e9b70e892de4aca9d85a21e8ed9565ac4a2cb3eadabee6c581832968c4ea52cc46b26b200697d84d27b288b2702c4af806ff19815375fa614a78cc014fd173f262fbddcca12b0b68bf92f399f6c6d5cbe4507222c97dee980ac8942581eb2d9c5520fbdf180c85c49d4917cee92c2151207cf69b0519fa6d547d0ae32a163cf55d40d7e0a5a7d20b8ec834fca440b3de6bc6ad6d371dcfb862b623060106e79f0f32f740e6fdc22127e0fe6644a7315868771e0ad3feb19f698dfa808f4f74105949979bea7ff9e8ae4d6e8d6ecec9e63104621f6148c4dd5c8f3722ecc7dbce7eddf4dbee0acee6f075dad44914584110e1fdc12de27ebdac9b29aff88866ba8d9e00c08191ab1f00487d929466ebf8c16f2a143e63b6a08d747f158d26bda9e5a0dd35d120aef135ebfaf0aaf00a52108ecb2f6c72bbf223a2e987655015e472959621ff61131f99413102acca7eb8b2ad6c7782564fb731a0c5604f1c53acba8988655d3573de3a17983e1c3b44015aa6b59330dc0c51c9612c8864d56555d6708a074f0ac342820c88f39de1c51dbe3a5c6aef5a462945415be73cc2bc0bcb1a4b08a77bac4e1bc3e46748158c7c2ba4714fcf1cb4372918c15bb0e44ef1aa1906cc4ef24ecef0f4758cf0f516954eed28efa4c6037b993290c66b027d088be228ec59cf135520d326225702e0f1ef68815162c847b10444acac7628eac035d02f0e19a716ccff2527ee8d74130e023dd1dcbefd8d418ce210b4e15eaf93a7d86f4e9b66ff8514e00bbd860d576f2c23421e1476e15a9255a1c58d0c51e35ac67a3d637c1ce6c381e64620cdc6c2b57906a92203e4418bbee2cdc81df9d89c4799d0a630aa28c44fdcbf649c6bc8e9b7f9b94c1ae4927023c1a036573f58deb4ac8b9e0c973f437acbbd552281afa31c4b425952719afbd24c4f1a4f1dd64271852f35e84cc5488e9c4f303f1e7da3c2572b1713f0d1b5f581ff064be8db30a040f5d3af10aba78966dfb1ecbeaa1a57c1495aa51b654a30febe9b34e5267dbfe25b1846dbc064626e469e5e38098485f622f879d92ab961c8e22c9ec7d1d08865c59e360d898a95e0ec19277b41f0069acc02132a18acba26cf80dd2ae302bb47df4cceffa895db5a14b899de99afc90070e5ac874f49f11af5e40e6736cba30a48dcec65ae0d773157708cdff7b6c4217278edc51209ae8f84b7469dd3eeca326a0980f4edafd8e15d5318487ee6d7a1d8ec21b22c2dee5fde10d4ba70e29e53cd6953fbc61d2d77c9eb2d6b5f039f1073b91ccb8d1687f27b0c466a197fede036fdb0bc7a5e345f0a5d3348b47d22d0c8587725eaa482645e79729a478ea0f13e3969a70bfd80478c824684817ce2d430d165f413eab59c309f15c5732ecbbe1da8473beffe638bfe48c4edc6e135953f8fde2c7baba92278c67748a759a9371c6d8bba233b02ae7b8549e226d99a51829083c64a33d5bdfc5d113c6795bc80e8c6e018834ac42a6855ee70ba59b2fa2f9633ff03238dbf85f7d49e8618edd15788bb482ddd37a78ae7b08e95a66759f5b4690c0e3dbf99d8744dd53405e51166a97d629aeb1c7625b92f813669c1bdd66f87191a56a04bced49b4772b9fbcba4ee1c1cd6ac631dbf22d1125015467c14cac8659ecfa3042c349e9d702f9715e8e5ba4aba0e95249b83590bd6584aa1d234f9e9db765b03a7597dd7e4019c5d483f1a4a0ab26ada692840d227d5ef08b8c75dea707a93831835280bad6f5434a542f96aedcab830d163041b248f82f06d269cf69c8ed2f56604c22dda117211bd8c36d1930fb1271d3403907014e16746cf84f6494333fc19a5dc1fc8d9dcfee33511c334b9bb77948b5b44e05e1d49071a0368f36835cbc04e984e9a7c9237125cfc46cb635b62b2bf544bd7e07d9bb1cb99983e128125ece9a8dd33f869d4da9890e5fd1cbdd52d3e519936a91c45c6404d90e8ac9b50a0fbfda813d3c73d94b1d9b98be525451a0dd6acb53165462632827ad0a4cc4a0b589573dfc6e5fb3b5abc40869466e1bb294594c4190e4ac08ce9ab0ad77cadbbe0eebe7cbcdbee61514542c260134398ef6c810c1a866e76fd9aeefe5ba98d9623d8ae703e4bf59ffb0ab7a601f6b7626e747454c94c66c205ae2639c001dd33e71b0c7610948a826fee6fcf17b92a27758d6996f29ad788e2b6b4479a782555f22a30224d98f7d4b6fd0adcc9c77351a63f4b7da8d144d18718de2eb1c07659b93be4ed086f0a205fb65c8385ea085fbb984075db89edbd7339b94ce14972a0353cd1c4cfeef4106163dd485b21589ed248e101b3566d994be6dffe86f301fa2f67f8f7f0be2fa2397b4ff200eeb2176ae8171f9bce71fa9d610c9c0dfa7793211ee3cd5de50d81afcde034965dc9bc7cc28bd005b7b9825881ddf61a324bfce268b59a9d6360f97d6280fe2d4e208853acb6c60b72f513bf6a1b6f56fdac7ad4da300bb37311ba7ff2357a535e73ccf004d9b92285e9140bbb4bfbffc603ba997e163059e1c37cb8a08b9d79f3d20a595e70055d3c9510a4d8697545798e606d77d3dad0c8c0fe37316c952a1fbedf07ddb9a8a4f33798c71b732630d9108fd4c269bb664fc492bfd73f365023576706a299f0676c10f09b7be46a5ee251818782cf3dee94842422ef0b6b6511ce1c3f3ea35e8b8ee0e4c69c4015aba906e4a963696f972e50de47f858f74ddb7844f76f35ba3e8404a75a7c412c32efa41b2051690215a5719a4dbd114b4c2c5add0cdccf9df180caaa9d74bcc9fb75715a9f3b42db6f5a26a6a59599e591392116db0ce66802865741d5f6a10155f4a927f20f5fad0b30f7835683661d138077f0d6ce8ef45299e7a6776ca0f3215a6162b9d7162a8e83cf3e677f2e4dafbcc3c4421df3b77332e64f911ed6e544e93e660ec3f9a420f82682cc9c6124d6d516065dfd758dc68d0a00f9222780285fc3bc265ff46e2dc43cd2cf2b92ae8309dd10b247243e4fd91b184c7c59afe760eac974260a412f4f7ca3e93f3485365a822006f260dfc50b1e0797eca9c0ff457ada779af621db11f0da16c7cf19b89efb100c2e05b8df2637822822739aade67da859d4802f044d5f3eb5018227efee60f1da7710283a201bd713d5585cc579f39f4a76cf09d6c7f3774b719f9d1914956275314e83d45d00fa6222e8a769efe190eecac19d50c1292598ac0d07d1bf165566c5ac4fd87bc13d802683c7712cf9e4d53ccfbe9e7f73f4f217d7b8a11fe6f2c996b0b9b216813759de9bc7b50788350af89ef21bc4798955d0de4170250dcb0fcd8ca6d4b583d3cb475162e6861c2f02519d4ebdaebdcbd84c706533a4a623fd6fdb1437e4895422fbd730585e535fe955fc737c442cfcfd301b9db24821506962b2954e6ea22f46a5647b2a1f810a15b609731fac18f6f5f9104458dfb440b4d12a1a1774f102b1763501cd8749e0b1a9ebe5e41a963444cbb127c0a6a71a684e10a033189a023419fea3ddf1bd1c17fda85baff824ce56d558dab404f66974e1c768cad2118adc440602c0ce64a3cf762f877cbccebb40b9d6ca6054512a69c3f08e6f6f73fc0369a78910f65f3fb46cad7df955780fa049e071e248cd277b7523a06ca2e539c03a1af6f3a3711da820ce280aac286919d97f19be4a7640cf39322748006e59789ca29602c4d88fc998aecd7e30f525d9215dd1925c7c9964404347dc555c9ef1f0198a9bc7dcdc0999349efb9a0d7134b8bda9ebcf6430ead41b8e2c4ff2916ce66c39ded13521eecf0cde7f758fb995b26f754f6910df680da0830cb3fa427ea555acaae8c03059fd3d305d6fb3b225251ad6b384339df9cf354a73a884d30078d44164c52763e98f82102881e58d45f767147d2e802f2f914ee9f2ff22ba3e8bcaa40cef63b2c0f481f428b6480cae891ca787ffec93e691ae65b60062184f7e030fa0bf311be5ca6afdd7805744f22f6033b4d849d96e9409cc5eee7422f5138dd897111dabb021b3d8c79574590a1db10ca84849cbb6d2e622e403fa363307b7471269d6f0fec1d1ccda3a3d68f622e1851e0e1338424ce1d912da24757d0a74070325dd0279c905c84a31a135b9e68499cee39bc27ed4472c4d83d6d302bcf72c1892abb445ca900fea6e1e51b754e0cb9efc0cd82e5cd8dac7a5a7f0887dc6d236f4fa97eae2206a5468738ecbae04210d71ad35ab1c9eb45d1471cba2ba8658e306bcbecae49d8ab7964ed39a6367560751ac605d439efb3acbe71aaf059aab6675a8c82389bc3cc02fb72f0dc9fd3f60e1371297af008d74ca2702057328a936a2bed3b61b1aa01cd27dcdbfddd0e65bf2c657bc84a892e659a2637de902e1cccd170a8655d66d4ae165ace88dab77244b70a40f1d50ec4e0126c3ca116e36263c588008d7c12b56571e0b18f3a1e93656fda27f8b627b017eecb19df3ab02fc4900c22a0744aca794df69339e32511f9a8c8ef7017b2a3b061014b8b1091f0ff7419e1c879972d7cf2d67a902656d71f4a2f6d703bb9aba5d47b83b470e6a9b4435cbbcc1782c4d7c2d6ec2f0f32cdbd855a44bcc9fe308c4f3e04cff396a09a8e7896dba46af9317a6b4aeb562cf87151f4f5f5e04ffb6fcf06cd0bce5a8a683179f37fa9ef7765b47ccef4b192e25af12333547f4d859cb7f49bcf20a1bb344420cd61a4bfca434c62955135d46dd3dd0e433539ad13042bece9b921bfe0e4272094fb7129ed14faa26dad3e6745dc93231a5efc848c95c67b0e84343b604728b0eececd48f1a254ab53e88dd2a1c775dfa3e936796a945ec3d30e31c912a4ebb7e7f49df95d469241f9670458975c823bbbb323e00b9f6d7c8473b0b43311e8fad0f32053aa0b513df18e828d2b35eae68ef3013fa908a7765f01e78fc063b9d931010e58f8622df3f361f37f1c48e7ead2509f935ca0f95c41fbd36b01b67502f4077ac0542c2906aaaa1ea80c6e38bc06a0bd22081d5363df49651970fd5317449aedcd75d023a9606b59ad9e3bd6f04aabfa4f0a38ea84d34517929ca2cd4028d00091d845b880f993585a77462bf865c8a7c095879b85a46466152ab081bac21dac90244c803315bdee726ddf3226ce99cca3d77397649deb4f5823c9b5e6de8da626aff1e7eb4f6040fffaeb8c356f8a5112e4daa25379a99418ec42f579f16e8e79a2d48f3312601622b0facfe776778c7b520c27bfa45285cc6bc0bb7d43881c30f01012f10e4a1c565d402a40c62e1ff2e23d588668cef757c163e786ae15638636198281345b76bd281c20412b61a5632201f8e35b33ed3aa9ebcd91f92523f0f6169acd1f2bbbf9b4d29513589aa3242744084b6fd5f0bc9b33e11008ea739508091d457bc732d6838b2efe2a631cb0ba279ba802f8d70bfe2d863b61baaf07dad9d6f5c29b9786afa979079ef3c3e7093dba6a458b27e6972f73fe3c837e37eeda593611c4a6ae8555a41671965b14c6ec78121c3c308dbbfbda4dac7c667a5efead4622702bee37cbd5fc29987395efff9f03aa7e594a20d6c45a67aebc01460ab03da48a6ee0202129ef964ad5f0283ac5f1435f97480f4c086fd0f7c6910d38228dc347bf52e88aec5a9937d008e39492f86548994076cc777a10d9983698bb0e74e1c2d2f603273358a9301bbd9e401b87b45780ae10bca57a953a20362c1053aa06bf9489b847863d28eab91b3bae3edf4c5caf59a74156ad7d09b77bebe9d971396f000247304402201ee1bb0ab2e928e0d95049741374d032770f3db268731bf65139f00b83473f93022073cd591ac4a09cadfd4c6e25c42c48b58bd530fb52b8fc88104c7ee94b8bb240012103526448aa2e6a78491ce8ded920381a9d76861bf4f3e673603694f6d051171f5d0083030007acc5ddc55a59dd9713f8d4fd9223034bc436390c756ff944ac11b9973a9b0a5823a4c72cf134599f950d1f277de541424eaf84b87a4786d317cdd4e88c17149de3c0ae73d84f941e46d30fa9f5d923e38dcaa55b6f06f1dba93eed746c5870fee8d0560ce8e44aa51b7d42495267720de3f3a3a3baa68d081a848c8ae987f388fd4e1060330000000000000001c6bb4f006b9cb07906fa889b3a594b8f7cfc627ff1a902a367804cefff3ad6492eee112fe01c2e9ae1caee9d3b6924b9f6ba45caeba686a9f6c6295d2574665ed18ded46f57831de680eeb3a56aae363e239c4e077f15a0831f9babe8da321e13577f26a84601076cab158b3bd212663a835c4a7a3dc8d57c735539dc299196ba3f4999807a0ab9fe140b8900fbc286a485455113ca6aac1ed39e245294a6e6240c6448e075956c04230263947b92604a1604a7664804d6c489c08d67d3a43689781be823ac9e9d460a43fd44be0dcb57c2bee1d2ee48a11cd3042081d4616f70623b57b147bcab60b39ca432f6d80506410b6fb1926a1852f2a81f546b344184d000cd32f7cde8757fec9b065baf6e06778d7fae8f39c9417159335af9a716de27b253e3cc55ffea265bd5b90b34276e992c0c06587b1b977ed6ad6ac1b2ae59730b032ac4f8afd27fc62fbc4151960ed31343617effabe8269782502249feb907aaabfa0d1e0c5997e82e677b6f8521d0b63bc193f00275b904c0181d1a23da0d41456ffd3162c38b04fe216163e21ab1e4162d747b0784405dda136b99b77c3f26a202a34744dae110db59abc074d241a12f148721d83ecece7b38b27bf8cb4382dc2e7da9a2614aa4fb5590de30660252511f89fe311d843593649b0a323f2871afc0aaa6d6d87a037e610024090acb2a816f34171a8a8f8fbcd63f9eaabfd9597f4027f8b6f4e6a6e5f0295c95a0921a3a339c2686b4344ca2cc0f11954dbe3a1a5009b4e0d3c46341e361adb17272962f396a38fbb5a83fd9eb99218287ce2ea48407ab7826462db6c222a78b748e38422b323062c2a1728ee2f027629700115c95fc7b8fc29f2e51aa31f5632faff362d8eea29594c930bf487712fd52524cca82595d18a4e295682a442692d814603c926dac45811ce9d35180b6cc649232c46ef85f1c7a2455538eb3e53192c6c4e3a9ee6a2cd17fd749f9d7b33a569b1653cc0a10fd434d8ed8e1a01386f19f4660fb73ba8348a70a5b1544878e4761f86c319e276a49e10d9e0db253389f4d06860dbff508bb9f8c88b8da6f1a8912a7df7f2b085921a5bbc9336e508bba3be1f4b5f9a02edced376c7e37834168e63b6d6808c46596aefec78b9e68b5cead1bbfbad5d51e9dd9772683612ce0f7e28fdd98ce400b2bc0c70ead916af81b775f7b87d4a5d14c7582e3463dfe2ebe16877c3816e79952624d3610cb932283de434176ea4cacacfe0953b885a0314349386b5b83cc6d846f9d8e4299a143149119c93d3e8ce80067380eb87beb3c8a7a27ce14d76e6bcf9b55d6f37016fe60311bfa97cb86e84295fc6b14f9dd669b38a16cc1ca2e80d237914cea861506f8b7dbd8f94a41a28457f84b70274f9a79cbf2e688c68545e00be836135938516cd785b694aaa3536bb99f00507eeee0144cc949170d27dd59ec748ed51fb8a59151c412b317c4510c2f5b32af1c5b2ee1a50592871c63c051936f38bcb6fee75df8a155a5afe2e560fc65db98df2e6e6b2ba6dd7336f4d7410b029a5a5748f3de60918fe8ee4be796932c2944434f02af6edf53406daf49afabe19b19302e6c457c0cc56b569d1e80446b06e549be21b2a7db74660f64e4abf5dfd1b97e30de0aecd781408cbdd3cc8ab442eff295432ae684bf0c9322f0d4d849508eac85e13890bbba4f583b06ea5fbba8ec7958fac04050298f33678c7f65124b09781d5b3328d4ad9ec00b6f3058a437c827a55ca5add861d2db6833e55833110291ddad193f135d9533d2ecc12dd83eaadc8322baea5e4aea400bde417e393cc99b7010d1579c1c75398dfd6169b2ee273ac16eac008c9ca6bcf394e44677ba55928511065a89cbb476dfec21cb6ed19a1e133f54e0ba55eed4cade4e66844e257df4897b009e665df70eaf2563090938148dceede486a9ba4e04fbb4675d8eae0b328e67b812a955d6c57fb24cf1bd1e020d46acbda576bb1fdb98804cfaeb75108b32a2288591f229b5b0c9f9225d44b22f2355007471fbdd05d5f636e462b87a6df4bf645ee5cd2d9f919b78c9a1ac88b4b13a09ffc8ee5b8bb94d7dc3ccfc010061133b1d235c8c7147398c8b08380232bfb6795d371d4b9a4179b735573926c026be82baf4a4246d325c4353eb8e0a995db2443fd7097ed5485fbe7975ae15f8175c0bc30d5ec505304d3d67683345c87183850b94bb79a90c9c8e014d6f1ea5221777018d377666f018b3910ed3b1abce94284b9f20c88ba6202e7cd4c2806f178c353f2b2c7dfc6940f6f07e6e62e3837c78a71cc8200a2e92e4b046a32620c0c08d050556c14d2e272a53a372803937d13ff27b981983fca6c26024413a4bfa12a9d225db5706e948768f99c1d66d72dabfbb27674d8a28edb40cf8e204329e89424d92bc276021d7faee735a9ab7b3a9946da4344083ed02406f888657a9064bb5b4fec1b986902c76714546447c2353b93677fe07becaf9c9a673b0221c7a0ac31dfbe35de56eb7bd830081a60bd9b134d46d780fffc721302550a15a16e735a02ca729ceb9dd945b9d1f815f7f714678854ccb57a2ccd1a80b5e97c62e6a657959a78e145c63f15bb5f8eebb18e5aa6daf82206ba273b157267201337c91a5fb5db2edcfa29b888502d5d843be7217521a100de0f1f3f7c2e3b3c18540875581227f67d610b1507822c4d206da6b5cd47329b9fb1f324742cd9771c23b19d2916bf703265597285c61c3e310f77c68424b61606ba2b1c925be06262acddb05d5ca0b70fc42befee7fcc99e47a6affae9a54f6d21b2131d2a6844770b165a9a3f61975974bc86e47f8c8a2dabac7e9249c13f0b164fa57a132a5283385524623a3d45add3407c8175c5605ebd19e1effba4ce4102e45cc29bb844a37a96a89a47546dc13eaf63ac6c98aa2834dc053e5dc1a2fea3e547290e5b0e01f1718cfe9cf8fcf775dd812149e97d2bc0100a97fb56689967afb1824c5dca43fe8b2b57930a159be28355c823e65ad47ff909fd4b544e7809ba23cde9e75da723a8ace14e7835598dc46460ae5cc206e5702e791f8eea23c516ad7776de6202a9f0277a2221de58b68f17da6e0747d0d9919b67a96c713847cc44eb2cb3d147a6a060375184d99b0f7d7c4d14beda008d63aed84c0e645f25dc31f067831a49f45ce9142fc475889faaf90854ee8e82827a6ae474cdd73b3a77c8ec38fdfd9ba13bea2a17bf2c8d8e7cbd86e70b1b9e467c46f6f6123ee8108da1d410659a882f02b9257c9959ab557574b169aab919110ea004c067864e3748a1c7ed3a01cac36b35347710182da89c01f1c2558efe67b639cf27927f0b7ea7b3616d591fd7f065ae00b612d8efc47234073c14fe2079f5ec2eef6c2137b0d3d1d3574c965fe816542515b59ad57c8a7f97ed3fe216028a1f6ceb9c1e95b39dcddc9b42a0f6fbe9694d8852133ca15ac70b3043e1c822c29849c4495c3143c29f3e1b9fc89dfe9d89960d8ef1eadd7928e873b2a751b4526d0c1d175f638bda46ead8c2bd8d8f052ba7e2208cce1c7bbacc10bd5d1641abfdf784c61ff8db9a59cb4d6b97030b7e00915b448dd5fd29a27154f8d84d4fd01c26d608231b0818cf634d731198e720755dc69ff13929211df1a43386740faaae7e7c980ca5f0c8f5a9a0291e6779cd6902944087c190394d807c3f97e9ba1905a9cb9a572d086fbd7bd00f23fa8a1dd3456c2bd30a06c5217630f13261db299877137949b02d6be99ccf593b2e91fead1dc6762190575036ab0dd9b1e8564e0e785760e7e6f398c9ac2fdc34ef6ca57718ffa3842099cd9c538a0669601593534b019699bc4163988e2478d97368c252cc2082957a4737e0d9acd34b56e1409d06fc95451c146fd5e1e196e2707e52ed14ad20f0b58db2520bd91f50f077a8c41cdbf318dd5c79b74668755ca176c9c6fdea95df736f895fd636ee6acbe909e65926fc1aa50fb68fe09ceb57e7052567ab45690d1fd62435e0cbf3d1c35962b774d3ef54d3a7b82eb0c5599e7bcfaf5d8f5311b9b5b68dc03aeef994abe79c0e94aead609b5bde31b373b192af3a8a30b1d6fa3033716932d098cc7e1ab10c3830e3b3ef0a29a0e0acc5d175a2343b55c917940158e7d09a605de557ccc350af4671325e2a8afee0b3ecc5b4f45af4acabede8c16b2dd6a31e3439bbef3539d04689e6a26bad101a1f6594cf3f4d2f05f3c8bb35b2969643a75aff15a35f2aec1f0303255313164bac289f91dfe4238b165503ad78b5f2c5485c16078a3c4df8b6e742bbd9700d4d9092a53b4eed2530d2cede02896809bf90ed26fcb4a3c00ea9896a49540e7639ceb6e34b2987aec6fb2371c8b81df770bd6c0b005ca1c300ec315e8ad69b61c716fa5e6e995a3a5dd30c90fbda8de6a8e771a294fb03dbde5062c4bd36452f52b2af55b4820471775834e10cd4fbe0473136cdb4f4aca89875cc9a53cfe0313d6cf50bdc747cb559a685514077111e9a7d7a2453562201ee0fcd5e135a0c2967574399f1b95c71b1cdacfdcdcdf75d0cb5c7f8b5d6aba18dff83f2fc0a509597f5014dceb5c877c7a6949761a326d07800a2228d36c514c32bd685f7ae10876b8c9514c185105424d1f09b664f4f41aeaf729f177ef86f91855ff4d955d6be95831981c8074a63f38edebb3d0a04f5ef326b6d77ed93fbef392fa2280f64a7c9f4153f4f1d7d5d90e97b4f0dd98fba0a2d6f80b35d5112865d2a501638e5fd078386621df9e82a6a4428c0fddcf79a58b009c0991c1dca9fd229bb863f25ca6cf8c65ec1f315a48eef37a062d9078c4264b31f4464d1c495fdd6b6440008c791b54878545ad6b58bd85a913e8a1187d06457c120089666c146614aed72491cba0744ccb713b66f0a75b91aefcf87ce5c4bbf92c82b90dd748a2a239092c7f3066bd21c802d224ec3db22ac20bd6bb409f8c322d694031ed86cd9a917bcd1875cdf55ed288b4e92adc81d82fa7a8b43de59c50bb6d8a3515e3d761fad58b76ec36e14ec9d859884c412972637db5178c93cbf893c4e302fc16c196845b9ccfcb0bc24f7e6cd1596f334b1a509213f9f6f064e4bf554adf141d9c35eedd16bc05d0bc76cbf87e9490549ac2fff61b163cd3f75e86fdc58a846b5f30898f5099caf916c3e8c48c28b57b5f84f92ca71339ad05fcfcf317fb67e6bd32a77b41eb3cb1c4cca4ad5037d87419fedfdc46f52f2270142c5254932174d4eceaa434965a1699edba3470c07f0a21c1070e50d83d9c7eafd49201bc9973f6ced7810f564d886020cc454a4ed5815f0f2103bd15073167e4be085f7ca97c6b61e186c2e0d5e1e41229eabad8198fe2d89f455bb80720069363306bda500b1caa75e63b2069574a6381e224f4eee607a47186463025a4add8e906fb1c93f71a560de55ed1298763a84d617b6189fffda4c671d04f4b1de6f021265ed68e4e63484a1d515f715afc246fe6ef259286e1e4b9a11a391c0c073050269d903bd059535574bf7421ae50288d3f816fec4ba4abfdd0ce019ac586efa15f403e51454a001d64f3617b4d86835154af07dd673d0f17c940cbc0575628516813c9d8ce018c7c54df7a2ed812311375c14a94d39f04d50db0d7f08caa11e332dac41e9f77b9f5e65e43d2018cf0d49498bbc4122ab55e9e7960808f19d22a083b8b68fdb81be9f339fa638bd8ea4cd9ec6e4a36b4bd654fa733c3da30bdd9c560a75b6e4f1edc8a49d39d7955056ee74641b0ef696e5d5f7ba7d61324ff8d431ab867bb8eac29d11a2ef765344d4cfc192a3ed2b43d3dca743784bb72da611e19c9e4866a0d5e4d736b1fdd32d4f43a9df16e098ea0af8e3117f65e351429e12e93a70004785385830300074c6ac27f3ef68a3ccf5f78b4585f2e556b88ed88c924d29d5d3f6530f69e6932fb8ee66bea8feec88ffe03fb52cd6ff00894ec3f4c20cc5b725223c27b9affca17da17b9b01e21300df268234542916c3ae45d3eab651fee75599328a1fbce58adf99e0959ceb1024299c5a216e62331c8d2a9aee52bf8092c97e34c5821c1c6fd4e1060330000000000000001d5a04301f0ab92279410c63ecb2cf5bef599c81ee998a14e9a6563739e4e9581d29e5ce6282a06f3877b986154630eb42c9ce96e147834ff38779e5d1f5366c4ba05c8653672fb57c005d72266724aebf72c40ab3dcdefa78cd0ac5af8e44677ae8721fdad46d0971c9b42e70b45020f603a226ebe3d79ce8279056b7cceed05abd4cc929cf217cc7e18d0523162a55e4dcb78e95068d94c5285b9f8e61effbf3638c7d0e6c4754cbad9584d7bc13d54c5edee3108f93b915dc78bb0cf10b3ff39f7f585db0095fd6b292e0e729909e019c83455010d5dba0142ec8637f6e6e9de0bc55f3018fc6c6991dba075a1ce479249d94048ff8ff1b8df431e1e3b337288e10a4f8c1ed58b57706650e4614cf47f60036f1a6e16eb7947f11060bd5a75fd0d02b88089840bff0c2f6773a299b2a30c063bbe7fd113360e45cfd9ab575ee3f04e9eb5beaac72c449a2b48f5aa533368da17fee3424f18b4d51e692c8703ba8910dfc02e831dc0d0241dc068380949b92605018917aa4e67238f6ecca2d5bffd7cdd2239c1cf7ada7b102ee03189ce1f059887dc3a94b8bbc3db20049f11affaf82da3c10421a00f6ac46934b55fc2fd8368311f9c142ec41ac953f80ac5db7e475ee53a9ef32e023566c566c0de737b8386c0e360cbb4daf1c36f03378d7916a4a85ec8618d4c77e0ab15f8eaf790bc33d57e75030178d997f627421f454da49154df8759f1a3e16a991cfedc0acb8d4d6afe83e0ed315a9f48277cf74a83ab54c00b207be38649381f7c9851ddd2a9c326bb60a1a8a37955ea5103acdd54403ce40cc51e24ff5855485967d9a3a85d98106b0c62aa53f23acef9295ccfcf1fc50efe3bee8a4aab45e55f76fc0a28a762061d37cf3fcc0ec13f6753c3f474e7d3a46830609b863573d57052dad8994feea31ab845e27e473180bc5da67cf760b9b7f505252183d0f0164035b07bb79ee3512f21b46e9eecc58b64c0eb7e6d8620655d8caa79c5748427407a72e1c55e96291f40d266da45acaefb128a7e71b6f47648dca3c7ec839bc17af4cecdcfdc42280a125c8dd65fc7259d37f25d132c3acb34353e4e1a6e9fafad5b0e6dc7704103d6b855f1718d1687934165e0db091bd5214c6ca922fa4d5596eda62a5445dbeff6d67fa7752cab19a58b0fcffc4db110042e933cd574e94c0f0d8e8fbb690bbe9dd26251f7cf235c192b795e3c40dac08f2235243406e78517f5948e5505816f97bb85b96532763f35917174cce7c32bf22200d73f3b7b148637afd50764c1bf2ea7dccd98f0e8d230f590cbbd5ac8971cec713bdb7c5a825102f78588b7515893263f61349e8c1393ac16b445b085a79f712f150ebdd9b899b2e8ae7fb05f9614f648d94c6e8bcc48a62628d9da6fb70d9349749053038ab62ab6d80f0d07a5260e493d8786b331e6033200ca85c3e02b5f6000412c1b44168751c5469b9cced57d4472a93265631ab889c13b023d8983958fedbc8a7b3f2348759face0fb4573a72ee48b109091be1cecb668313c1c046baeaecdfd3755344c01258b88d89465c3da183f108eea0770afd7f426adf4f43c6e63798647aa399629f93335431c91bebd2c5ae97ee6b83cfa04fb1e7273ba3e9228244d387b58108fd50cd498162d92e5699faa8c89b46dc9bad98233297bca2fdcc322737a669666247ddc2ff869360a70c558f7724b11dca6f4d460d3c2d4ae4c77669a4855e28e20e8d6724fecc90a9c76cac2033b52f66a79ae1ebc00301cba38292c3a777a632dec3e9824e67daf7d23d237f62c9015b827209655fd0268621dd058c49163bdd42dc1f0b41af94307a5146f84d924d948422796a9a5143e4735056e3570bb081dfb8bf1155260355face1164bb9dcaa6d429c58c41df5b8025cfcac754cfcb06b704c217bf9122981919610b5a0c44ac0ae2a52ef1dea44328d9b69bc9d2dca01682e448b4f7a8f49bef6267b614aa99901de2234cec06d65e9e899d0ed0454fefbddfb550ec18315e58d6dd538ec29c2f422030bb8a93c579e791c083cdd3c9e76103c0317cf8a3520e5e81e60bd205a01765a87d9eeca81f4d73b012d1cc2a97f9de4ddc127a723f2c06ef295dacea4a59439f4c7b586f05f0d193a3ad89d66538784b020045cbf79df306d4dc66f847c9910a4bdc47d5979a7684b70e4c0fa4b8f6b16896d6f45c2882f56823b27a4a2c949c6a5c0756e89823adce34a8fe23ba5e7512ca4707720c625bf287842eab6475ee354621853b07b354feeebee1e1e7a09d47b59ce798ca0780b5b2e781de254aed7ffd1a62b51333462a16b89d064047da9d1735cf56d8d781e943f9a07c5069c56e96721cb0f8d7208a41cfcde2dd128d7a8269c8554e079f9ce0eef15fc22152a0f2552815d7c5fc8303a29f40d83e0528d5b960f4fec6e43d0c804042bd6d9ffcc321a587132163be0820eae7e522845e132e251904ed7dbc26426556d3e0cc8c1a40ba1f783711183713aaf4f71db5a560cebf32a18c2238cc8e1bdfbbb1fd059e55574b6707e510f97ae4eea1a1f7174edbf0bc3d4bcfb69221193118e4eaef6467fd5d69643307e987fabc2709f0e0a0b247de162546df2144df8fc0423d0b37926518691413d5bca14f901135597efeb6f8f984016834bb53dbac7591ab5f0d10f349304a9b2319ef255849424bbeca11ab656e5957e0826f52e3c69be60699c8f6a976f06410df7219aa01c8b3757f6e83f7e508759dbfc5b4c2796f79090eb90d967c14f879855d23c7a09d9dec8cdb7839ce0111120305c3d39e3946cc49790bc8f4d25a1c3fe724e3280962b63aadc8bb3c2e68df61382bc2bba165e015c792c0f653ffb057389e2fa736e96a0a7bbc552a3424207b83c617c4b4ce91e43b5f97caffe4a39f16c063f9301be44129363c555eb4596adc34526a9c1e9a313bdcf25cd72b78bc0f076aa0937343d292e4ca590fda031744229b159c22323e6b8064ab6fb23f1aec4e46bf940fdb256ac29a17270ffc484b9684f95530b55a83f98c90d1b5bf520dd537595ddf57c44ed53c5065d5257b7d77a5a8002898b1908435a5db9bcd6212cc919bbe7ddd07cbb283a9e18ede0951c33af5dfc20c88bcda8a4ccf4220c65b303f8f4c404326082dafcc4a350806697c7bcdd83f0e81aa62e17adb1747e3dea9a3536edcb5a4ecb7a59b79396c7d68611349839b914aac842e7dc76181546504b5b687eb8d3df3ee0fb57d2a638fb81e4718de4a6760709cbc6631b00fbcf37747500a9fdf5ea6dd602104c43a919532f5e5f01c147753d94300b793449545bf3b69a5047bada98540c3cf572d2cf278bea2291eb4157109dc2473495464407b2dea35fb16aa9a50c895db8b38a8526ee01f5d0b276d14ee5ad123fa95d65e4eae07286a990a504822f5063c3ec7a2c493efd645f747a270d152717ab9a7f94597d7ca1b2f43e7446ffb77a21226c0ccbe937b35c7fa4d45760b21ef1014509ecacbca971d1d6acb3aec10384fc4c28e01651396f9ce7cde9bea605d4f5104a85bca817a4f2f6bdf3e97a78b3467ec33d304edadc2074e4d62d56a2f0d8814a5e7829b03a2b54ba6808a115e9ad9ce53ea838d4790e32a8e9b47c047b4bef898164efed3a4e4b9ae384433a89efd0fd9b9b54ac7591b1fb964f3d05bc3eb4e429c4918149e0fd826b9d9d0e26bdd7ea042429fe86fb0b9d5eee32b86caff1d54b3106af9aadfc34de80cbc8bccce3c1f44ffa9dd1049a5f9d418309675e1316b530b5d63bf457ed13cc337367971b4c1f9ca35eac9110f3dc2843ca3e36de9c97cc4e3632847b9745c85a9d3735dd3a1afae00a4e2e40d7e8d0439a591b41bdad9a265672f775efe9d11f26eb773558e946ed5162edfbc5f94416af67b286089c386a25edf845316f81c6258754bd1b32d34efe67fc12916bd078d88ddea6195db3ee97fbd0cacb741f1e85904ace3b61775bb94c32644c2fe77ddb281fce942a285d674582fca3603dba153a288a3d851d8680c62339872ab6cfe923199b103dd1c16e1be8483d87ed144253f7555f1330cd510666b052fc0178187057deabb6b9a2af2f03293103907d7e735892b1f4c60e5ec86aeb29b308fe75d3ada47fadaeab017c6f014538b86bfe4e775462837d5e6f8cd6216376865db3d18c6620fa7132d3f43c254e457776afa4aceed8a749d26d1ddc4c00d265351c0e99f00c9550c8e1aa8e331e9e495b934baf394cbfe47ee0369481970d924678d6c53d07b9874ba55f89148157ed1adaec2f3fdda7b05a0be809053b4a525aae8a6e8c418d3080293d63f9789b7f7ba53baad1aae8a44572958be1e18e5660705c19741062ff59ba361425c4295f3e6d9295355c4810ac72730dfa29e4bffde8585e941e8929388f5abfc178a634cce40a5970628dc4fe21de3843bd9a916b0a974f0bf19c5874778327d86ab5e3763d54ffc735ba43d3afda53594ecd5309bab8b293e430d82cd63a65b3a2b3baec1386b27ce565d2a2e3b847efe6f25028ffda565357c76f13b698fb3f62c8f33d04d19b24ca28af22f3904392a50f41635d8e3fbb5df3d43fc14dc2f1af7ec940af7e1f9e62c180f09fa0d4734cf713453bdf49f45c4c069e5ea08de68d303004c2d6b668efb3ecca2a3682c0235165b3746a22f09319820af26066f7a96c7cfa756770d824bc6c4cc1277a09ca63478efbb7b43e156bba385a46459de8fc09bcadb268b7d975b76180fabe552b0c7aa936e9f33201dbce337706e1e4c4226c89ad8dd642fcb60cceda6a03639902127f4b70b9f966524807f40f54c5d1fa5f25a3a73bfe6c296b6f33a664ab34f1e8176d56872f3aea3a0ccfe882320f28bc2fb5bee23862e555ddb92afd846139498ce78fcce3ba75c42316585d2afd0ee00f484e1c627ff5b9d2243169b3069ef626ef62bef89342b63823c632699d19b7ec525f168f834f889b7a0afed71de07c9f5074807ada1a44a1b1f97bf98a8c04a11dd2c02159e4bde35f37352c936158ffa9547ad140c69ceceb241a89c9c1e60eeb861a2d076e14144449f271efc57ad330ec1161d5b8dd3ad38348b05df91c4e1c0dde481dbb6bfeeefb9cac6a8142bab1be278a9adb1409f67dc1d4d56da0e4c459605337193374ee2e6c019b1a77a33b4ddb4548657ee8da81b8c93d752097bf45e6fad278e10e48ca5f9f73568454b35b134a52a1f43536a62b8ba4ec3188ee9bcd18e1339b832a58593b01999e78393125c4b01a3888def7f3e2231eb1efbce8406359a222ffe25a86f3e3d05a4c1f80bea9a762653990e1a9482719b100d13d1edb717e45879461db927bcf02217cad81975d1211a470b9abffdf62ae523cced19131ab822c4cb03eeebda6eb1343d85912195abe277ceda4c21f0ad5a02cb57abf732c979679b3ac14a71004e04bdb16f4caa70dcf0f173b23867ed674b88aad415ae041eb6c5462ffc950e850bf78e886b64883be6241c9a22be0cb72e25a17f22e451804385cd613b4935b3d01fccf78dba3bac18980f4ccff6c6c47a0a53f2ceec37ced4ad40170c0c599f67e4e4388fbdabe99c059f5668d25bcf8be3f4e908f757d79bf50a9ceac7d6d00decf73dc45ebaba46de5ea55f699128028b9bdc3be2c772ec6f99e3425a96283ff93e452e185f7e1f10298d9ecc744a534af87707c65b3912ea4edbeb782bc12c18a35138f393284e1ecb87554d4b8880a8a4d9354d7841dd641766d370b6c6e432a6c5911a229dafa1cb914ea34b6beb10b4f949a8074e7a3342199e8e9e52b9e57197cb573b1f75cc61823277750eb09e1519379aa48f38a4c725213eccf220ad19f88613eb7b408f270ccd561f84ba46caa35a1b651855d3183030007f87c788bbacfd6a57ad891afc186ea779ae77d1cef382ce505bd9c5c4229fa83d68eedd78fd12ee708d8fb59f9a0b0f3437b446be12445f87b0dc150b487bc1f3a27e71ccc9e0efda0680f6d4d28ddb941f77d8012fe0c4adf1f6ade5df2b640f05a8345a0c1da9b8019a2be2305657b92da785b678c493533de6181e357e4c0fd4e10603300000000000000018162f201a318ba3aeefa7285f4d7381ac05221e0be6427153cccffde61152249803207661d312734d191ae403dc659fd083833c28b1ae68151215bdf98712315fad15e79ff7101fd955b1c22f69c046f1c7fd57e228253756fb371d0feaf25871215295a88a1484de81ac981a38307486a351340bc795a53cf0a913b7698bba661ca9912b6257dbfefe63a7de95808393a54eafa1af20aeb1ef590a526afcf50320e30e6d4f379a0c179e931a1e0b49d39e3f6e9b89e9a81221bcad4a452d08183af085653489a212dcb5c192f70c20c2801d7eaced7ffb881bd0e157d828b0918699198e838b239960f809abcf91e87d81b671c820560d7ddd213117f22e4e4f63eab38f2d1801a23fc3be7842afd33a8c8d2f591176db15b354b7f10e5f7c21beeeaa6dd88a6710f89c7a630ce0575a783ee28406e7c86de9836308bd225accc8aec2f7c64c53e605dc364ca81ad25409ddc26df044085a34b34c8b7a5abf30ebc00622a73c8521a5b6b3dc01d68bb8252d3251b0a22e0728a874ab3ab6ffd6ab66307ef5412a69d806b0c0cabc8a53dd8a4a81c26d066f9fe1c9f8cb29b9077b0a0f6a43bd70fbf1af370323274ff5ee69835e349d838e7e494ba9c696db578245ab001b70f0710c3135a8de62c10d4ca233b1c2b75a425257042fae97ae24026b1e139071d4c039682227fc474fcd5eb012b69a2318bb50a6fa58ddd987a78297b46d049339c6947240d9919398acfd128ddcdfba183438c158bc92d6b11c697d9a6c1944c5e2cf68613460e332d5cb2197889afce1bcf121c0300b7733b17d9dcfeb8581e9d9506edd1bb1be2b97447b4735a5fa6e10ab521411e4d5c58aafa5ad5dc52af76d9b37800f3ab455157bf0807d4032e890f356a539cceb588b99a44c6fb5e138c41e89e1ece83721900b38e103dd0cfb264ae5cda221dfa0d18a44b74ba1aeea203dc72287f093f649c2d51be2942ffa753d8176045e3df6ba62ae21699fb6ac1f37425d0be804bada0ea840f34cf35c74abf0d627bce6b0e0b2e129f0f2b068b1d2d5f7768374adc56e50f8e088574b15578d0390cffa118028c8aa486dec6aeb6b918a1b226d5fd43aa2d65f4562e4c4c4b50095793d3ea9aedb8d32fef454260756999c91627605dfc4cf96d52954917e347810419f4fd0daecec2e8de94b091c77e21e9fee47f3efd05dedfbefe69b45213889d8795543b479ae62ea792502c442b38b17de69954eae5c4c14250b1211c429138c31ee75d979654b3179c9f39e3fd411ae7498f9bcd5feea396d63fab4e8bb857143f1672817ec75b0d334c865ec0f97a0772c1a2a18625c89d6fc23bbfe237b030065f1ac294866533a792933418bac8162671075b5e7d7299a142d50ef675ef822d0772f234ac5ecb953d8841430627e4b8b286cc401e0e65fef896f8d54d89466edbfed784ae6a75c8658b25fcf283812c860568c345c929c3e0d3d2dd049d332a2722e1ddc79148cffd415846723b14e8bea23dc61113aefd0ae089c88a0124e52c8ee28f1bf8ca041e54e19d6cf734e8c2eb4797855f76f24b38959bea168556598dedd9b5f3d164e7e6f2f505653efde8186b7a2d79be3eab05491b5b559c338bedf20f9d6cd457ce5babd32da908924c9df6ba0f5bdaf129ea4993555dbbf1afd1537654a527f1e3039db5840cb7c2f110123d7face858d0384e8f1b90045caba94a622c4d00817e3a454cf9710cb3a94f00144e91cc24fb80b517979787672f7605cbd3ed37bd0f24b717c9589ce8f71a0014454488e5a0607513770dc46e49d4a1d7e4d97b6774211ae0cdc2d8c442340b155032947d213bcc87776206e1f6c3c5f179da43fcdf521e801c5354de491caf8160d7bdc2d9f01cfaccfda0c047ff1093b80f269553051946303079ccafb943b6a38d463c3a1166fbf0990d579d8c078a4caf48f7becb010d3b10eef137d2948823569ceb91908144d996a32788fc83b10e0a9f3b3ff988368410665635d277d694b1e324695a5ac582869ed17c71d4cb9de217d8acfda6a8da79bdbcc2ad235b1ef6bae7f72d20163e8d3081fba4ab2efcfe72612c241a140182fc60934093b3ab1200f36ca39d4b7d1555dff338307cc6d4a126ef7f5ea29cc3537c801e09e4dd654d12749aecac44f8ab48f352ff424cda4a75a4048b74c275f2d2b0b43078acde238cc51bad3a656d9d8423a86b11a3829dbf9643112a09986cdb0d0ae97ab2d6d137006763e36b0b0dc8f31b2a31cd563e621f688d97ccbfbf3662ca4d66d1e7b9bc96e32585c4289f81f5e284ab4c94528f801ecbac779cdc01a32596962884f2821986d6195c4113846f6a849f112c696156319a2353e9fbcaf435c7fab0a4eb11d3c9732907755b18b1dc246c754bdbbcfd36bab8b90faff2f0cbc561efe6db5d3e503b65a9ea563c32dcf1c6321a184578b2fc416bd6e46c4b3610976068b130dace8da6b349655dabb5e12d2fb220df38073d1a6104b0747bbc80d7c6c4ebb09065223051ad2cbd21e2874a387cfe9c955efcb614cb443130b34a63b407c809f55c6bd1c4345f1d1f0e607d9d4d1e7814ecc376fe11d6c562ea758e7fdcdda0bad4d0ed4cc933bac743d407ac266a3565517917a49a1a93aec20c5db332d1f016c928c0834412cfcddf24693d2e4f6f27c7a7b6f98d5cfa7ddadeb249e2b58d9a97f5319596356c394d655d7b4734ec331bb784e8083e09a0498e4e371f4461112045d16d70c52805e6a59cbe45d0b7436b1321faa1223c88b79586992d34f714345e79fdb770cc18845c16ffa9eb4bb5d9623140f1e8a83305d29f26188fad9f79ab2b9febc93a88c3f388778fa16a610167050bbcee88b68206c0f865e2554f8ab49da6d8a8106eede8b2d6cd6ce70abd3710ea030551ae44f96e24ba1714d8a79851e4bb474ec5a7094fbbb0717d6805f603e4670914cc36f1d1342a35f50da6ca51f2c28d74a3f078e27ac05040c4dbd1d1c751fb4b0f5043448cc62f88871acda09836d459515b71d6e5eca0561837fc3876f1cdc448fd9e241d755fc94a114c981d9f5ffa734cf540b8bbcacfa33d369a2ca5736a84f2a759273aeea6c17847f8686087f0d07402d0cb5223b7016f44da1188a3e5ea4e638ad38e1fc24aa4e4e5e0fbcc8c241f220ac0a9a8ecd759fb219168deb15c5f3d29d5bd1784383ca2cc5cf455d086da18432784b018f28c7667295e48d3040965796409c915fa0307a1d0c43d0ec75ac2b4d68a5b04d89df897ddeead4f6added561fa22c8e9ff592f06db07d7a0e739d2e41148f957e81a8cb0c05acb5ff7a17400511c9c6d9b7f209e2fd37d275b3ec2aedeef4834820f01db7f292e8e077ad39c38412e1d3bafa4db2a3ff2e2a598648dd70bfdb67fb5580f0b8bdea9d6755b28004ffb96621b119a49df91c3b455db2bd1282825cedd206265bfd342d156774c59403971719485b92dafb673d194c25d70713c0f89c7785ce23cbdfe86dee7e202be41191f32ef9ac2d2d93c454c277d213ea914185c8f53ddc80c2b36d550ca28330eccdb828343678918595758176f8e0c7196433ea166a308057681f9f5a35c5e1c07d709b4fd9777828c482efa26f079acca220efe61668e9fa240a2b0289faafaf67bea3ffdfd42e14c9febafe3790b043db209d66608b83af2c7630aee09a675404c46db5e128c17ad581aac5541f41ad3b817eddcba7692aecf142b2f49128db848d7cefdf9d884522332a255a86adc52977ea99b71aaf671248d5bab6410f109881b5b85d739416f8262b216fd04b7caf592d7af186cba7bb94d3236b4747a4acbf3e64e3ca0f3a8de6bc7b81560091e1c771e9ded392367f5b2e4583e6139430dbfa187120055b0b7cd71418b588125134f69535ef9df7b91eaa1eaa26b6b21352a0fbe5d844a2474d70e7a1baf3febbb42645a4d4458b844b5425195ea74b00d074138bdcc916604271715d4a82333721bb34be8ff6a219447d6763729a273d0d8a4b99b6632c3c33bc4b2742be24fbdd8bd8a857b4c4e6b5156e4ac780b2ea135a661a67d0b35063b86fae4fec4061b59d349c588df0af23fa41029e6148f766596227a1775cf54fe0a6ad814e8b580d087f6d016820bd6d46b79c7fee4c40542b48d6b8f3eab361adb42eb3d0beb9b87846d87a8d6e794c082a39805230ca71fcee383bd67b96373aafb92b269de8b7d0eeee532e87cb4603f81efc94590674c404903b00daefaad9423f7932bdc4e4410202ca6cdc44a8801bc3fa217571282d6f816bc3bc924710542f25e97debb91ce811a7bddb13a4f46f1f1f1c1c2e5ac0b4aaf0c05fe922c8c881f6b7f77ab3b32e4e75691d71e1fadd2a8c1637b77feecec9375b5328feae0fbc854f3bc5a6a42bb7a1893ae22276dfd0daacad622b0cde5e0559aead4532fa154a113334376ff8afe6c2174ca04e582a4480e5882200c78e9548cbbc11b05f0edb4c5880d2986a5abc1690689995785ea6efa2fdf25d4dcb7cc9a835297312cee37421ceeb6f1be4108ec9d72947fc446baa7da9b2c82e0a337ac3a9516813121bcd162db69ee888b3b527ec78079e4d1256546b4bf311ebe7cfcfd0a5f3ec86f9ea79caa9a77d0367a4bb8cb043d073e67be66bdf5ad2b0121b45f7dd4947a21b1de21057c9dcb08ad27335d6cfc9fac64e1f5b2211490afff6ead2f5e2e7a23f9fab33d024bb064a3dae75ba8c8257b0dfc4dcebea7a3732f7832ea98665803f4f0fa0a6adbc58be688abf84b49312e5418fe34b571c896033d9d982ea0ae21cb3af1283bd66b234ae39b06e16a01e37f65cf7550979c58fc4446b40b16ad678156bcd8cd06759a9bebca593054d438aa4e72746150171747c34eb2fc857cb189b9bcd745a460b4803ddf3d2469bfba1902d6be68e60e8e08df56773caa47912c91168e4402e04218d049cef0142706b433440e7ede9ed9fc5892f370fa350492da68e1464cb12512d3efac338a4afacadaf5ff7802c47cb673e4ffaeb05145596745e4230494c39e6613bee2d673a546ba2fec22b2ae498820590d6a9d4c494ac8ecf3ef70b09ba9f76090f9846394548fc770b9bfb14f92b1d9c8a3936bbe264834c502c3a1b8c4dffa32466b0e15104caa355003835e828adf6a9e3f1b9eb7dacc97520d55e26eec7f0e80fdb11acc4105f659fa2bb0060d5d267261a441ad994db772fbdbe8684175d7c81b8200101424f368927fd28cddbbdae65f64b4387764625fedeecf71c58021c97b31ba53028e6ddda8438d80ecaaf9ac40e7eb00e847d08f49226ad00771a5d03727ab26d758d0b6b0d4fd247ef1ff1efccbd5d36e4c79333dd6d4a2b087c589df72b097368c3af0246889d20df6982e2e19017c394aeb123e50c1e24d8a7167a6b0e86018a17abc2ec369905becb2f393da7b000812c988329b260a2b6c65beca27c3c22b1dde0bef98951c5bfc281c60b3f1a3f926b7e319e63547e428940d0ecac07e9420176efdb333faa1314e8defa6e8ddbd95b66f076a9140940e5492af8380c72d364e37fa17ec89e168061832e7c0eb00e6ced3d95e1d6b2a1d4fea5535ddd44c495c34f4c4abb2db258d61adb4fd263314c5ecfe538e513e278a0906b489f7518c795ed434d9dfb193b1566342e0dc807c03ea2485b749f4dc627af25a3fb1ba30d711be800e20620214327f279ffaa59fce26714e887908737baeab47cf873cedaaa517da1967bf326f5d8fe0f4b4d0bbd232b018f45bf40c0afb8e6d5c127018e050b72047db3b368c80f18dfa849b6e49d32c6925c182145a525935fa13dece42fece60c9102b0fd88048b94d56c19ed3bfa79e82e583bb6e32c759724b67b0561f383984a14df707e81cec20000 ```

The signatures of this transaction are not the same as those produced with libwally:

This transaction instead gets broadcasted correctly, so the transaction is ok.

Am I doing something wrong or missing something with libwally?

EDIT: I had to make a new test for his since, as you noticed, I copied a bad hex for the CLI's signed transaction, so I updated all the data (keys, tx hexes, etc.). My bad.

LeoComandini commented 3 years ago

Hi @altafan,

Thanks for the detailed report.

Is the script you are spending a P2PKH? If it is, you should replace wally.WALLY_TX_FLAG_USE_WITNESS with 0 and wally.tx_confidential_value_from_satoshi(*) with None, as per the documentation. If it is not, you may need to use a different "script" depending on the output type.

Unfortunately "Elements-CLI signed reissuance tx" seems to be missing the first part, so I could not infer the script type being spent. Could you replace it with the complete one?

Also, a couple of notes: you can use wally.scriptpubkey_p2pkh_from_bytes(pubkey, wally.WALLY_SCRIPT_HASH160) instead of manually constructing the scriptpubkey, and you can use wally.EC_FLAG_ECDSA | wally.EC_FLAG_GRIND_R to grind the signature as Core does (otherwise you might get a valid yet different signature).

Meanwhile I'll replicate on my side to figure out if including a reissuance is causing this to fail.

altafan commented 3 years ago

Hi @LeoComandini,

Just updated the description with some new values, you should be able to decode all 3 transactions now.

Is the script you are spending a P2PKH?

Inputs and outputs are all P2WPKH so I'm using the legacy P2PKH script when signing as stated in BIP143.

Thanks for the notes, tried the wally.EC_FLAG_ECDSA | wally.EC_FLAG_GRIND_R flag and got compressed signatures but still different from those of the CLI and thus not valid.

LeoComandini commented 3 years ago

Wally computes the same signature hash for the 3 provided transactions (unsigned, signed with wally, signed with elements).

If the inputs are blinded wally works correctly. Here I have computed the signature hash for a mainnet transaction (spending a p2wpkh output and doing a blinded reissuance), and verified its signature.

If the inputs are unblinded, things are a bit more complicated. If the reissuance token input is unblinded I get "Unable to blind the transaction properly. This should not happen." using "elements-cli reissueasset". If the l-btc input in unblinded but the reissuance token is blinded, I can broadcast the reissuance and correctly verify the signature with wally.

Now, before proceeding with further tests, I have few questions:

ATM my guess is that either wally does not compute the signature hash correctly if the reissuance token being spent is unblinded, or the amounts given to wally are not correct (blinded/unblinded or incorrect value).

altafan commented 3 years ago

@LeoComandini sorry for the late reply but I've been busy with other projects for the last few months and didn't work on this until the last week.

To answer your questions, I'm part of the team that is creating the go-elements library. So, I'm adding the support for re-issuance txs, at the moment, trying to broadcast one that has blinded inputs and blinded outputs, including also a blinded re-issuance.

The token output used as input in this kind of tx cannot be unblinded because it's necessary to reveal its value blinding factor that must to be used as the blinding nonce of the re-issuance. This is why you get the "Unable to blind the transaction properly. This should not happen." error I think.

However, I finally figured this out. There's already an open PR in the elements lib for golang. Check the link if you want to take a look. I suspect, anyway, that there was some mistake in the signing process of my tests, like some incorrect value passed to the component generating the signature. I was able to address my issues by just rewriting the tests.

Thank you so much for the support. The issue can be closed.

LeoComandini commented 3 years ago

Nice, thanks!