tx · Ahiifak17eHZNPrxENYCsjvxWKj4mkLoXwASn73AzdLC 3MxzA92q8vdD49cEPiLBGWwGYmBn7mgEdgf: -0.01000000 Waves 2020.09.22 19:28 [1188749] smart account 3MxzA92q8vdD49cEPiLBGWwGYmBn7mgEdgf > SELF 0.00000000 Waves
{ "type": 13, "id": "Ahiifak17eHZNPrxENYCsjvxWKj4mkLoXwASn73AzdLC", "fee": 1000000, "feeAssetId": null, "timestamp": 1600792197686, "version": 1, "sender": "3MxzA92q8vdD49cEPiLBGWwGYmBn7mgEdgf", "senderPublicKey": "DSm8P842LhGTg1zWhuXcXTcTqz6UH1kVdVsDxDCGayNW", "proofs": [ "2ZTWvVvPxASs9SRvEpZAR1bUjHRALpT1MR7qosxeBmW88coZng1SCoNJxJPiDvoZKRmDuvfPBFu4yKk7iVYECLeC" ], "script": "base64:AAIEAAAAAAAAADEIAhIGCgQIAQgBEhAKDggIAQgBCAEBAQEBAQEBEgMKAQgSAwoBCBIECgIIARIDCgEIAAAAUwEAAAAWY29udmVydEpzb25BcnJheVRvTGlzdAAAAAIAAAAJanNvbkFycmF5AAAAC3NwbGl0U3ltYm9sCQAEtQAAAAIFAAAACWpzb25BcnJheQUAAAALc3BsaXRTeW1ib2wBAAAAGGdldFN0cmluZ0J5QWRkcmVzc0FuZEtleQAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5AgAAAAABAAAADGdldEJvb2xCeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQcAAAAADGtleUFzc2V0Q29kZQAAAAAAAAAAAQAAAAAKa2V5QXNzZXRJZAAAAAAAAAAAAgAAAAAOa2V5QXNzZXRTdGF0dXMAAAAAAAAAAAMAAAAAFWtleUFzc2V0UHJpY2VEZWNpbWFscwAAAAAAAAAABAAAAAATa2V5QXNzZXRCYWtpbmdBc3NldAAAAAAAAAAABQAAAAAba2V5T3ZlcmNvbGxhdGVyYWxQZXJjZW50YWdlAAAAAAAAAAAGAAAAAAprZXlNaW5Qb29sAAAAAAAAAAAHAAAAABVrZXlQcmljZU9yYWNsZUFkZHJlc3MAAAAAAAAAAAgAAAAAEGtleU1pbkJ1eVBheW1lbnQAAAAAAAAAAAkAAAAAEWtleU1pblNlbGxQYXltZW50AAAAAAAAAAAKAAAAABJrZXlCdXlMb2NrSW50ZXJ2YWwAAAAAAAAAAAsAAAAAE2tleVNlbGxMb2NrSW50ZXJ2YWwAAAAAAAAAAAwAAAAACWtleUJ1eUZlZQAAAAAAAAAADQAAAAAKa2V5U2VsbEZlZQAAAAAAAAAADgAAAAAYa2V5UG9vbFJlZGVtcHRpb25UaW1lb3V0AAAAAAAAAAAPAAAAAAlTRVBBUkFUT1ICAAAAAl9fAAAAAAxDT01NT05DT05GSUcCAAAADGNvbW1vbkNvbmZpZwAAAAAOYWRtaW5QdWJsaWNLZXkCAAAALDQ2WmdYR2lHUUJQMUtDdXQ1UmRvd3JjckNYaVpLV2RmWHY5NlVlRER2ZHV1AAAAABpuZXV0cmlub0NvbnRyYWN0QWRkcmVzc0tleQIAAAArJXMlc19fY29tbW9uQ29uZmlnX19uZXV0cmlub0NvbnRyYWN0QWRkcmVzcwAAAAAbbWluaW11blBvb2xGdW5kaW5nQW1vdW50S2V5AgAAACwlcyVzX19jb21tb25Db25maWdfX21pbmltdW1Qb29sRnVuZGluZ0Ftb3VudAAAAAAQaXNJbml0aWFsaXplZEtleQIAAAAfJXMlc19fY29tbW9uQ29uZmlnX19pbml0aWFsaXplZAAAAAAUY3VycmVudEFzc2V0SW5kZXhLZXkCAAAALyVzJXNfX2NvbW1vbkNvbmZpZ19fcHJlZGVmaW5lZEFzc2V0c0FjdGl2ZUluZGV4AAAAABRhc3NldHNBZGRyZXNzTGlzdEtleQIAAAAoJXMlc19fY29tbW9uQ29uZmlnX19wcmVkZWZpbmVkQXNzZXRzTGlzdAAAAAAOZGVidFRva2VuSWRLZXkCAAAAHyVzJXNfX2NvbW1vbkNvbmZpZ19fZGVidEFzc2V0SWQAAAAAEm5ldXRyaW5vQXNzZXRJZEtleQIAAAARbmV1dHJpbm9fYXNzZXRfaWQAAAAADm5zYnRBc3NldElkS2V5AgAAAA1ib25kX2Fzc2V0X2lkAAAAAA5kZWZvQXNzZXRJZEtleQIAAAAPJXNfX2RlZm9Bc3NldElkAAAAAA1hc3NldFByaWNlS2V5AgAAAAphc3NldFByaWNlAAAAABVzZXRBc3NldFNjcmlwdFR4SWRLZXkCAAAAEyVzX19hc3NldFNjcmlwdFR4SWQBAAAAEWdldEFzc2V0Q29uZmlnS2V5AAAAAQAAAAxhc3NldEFkZHJlc3MJAAEsAAAAAgkAASwAAAACAgAAABMlcyVzJXNfX2RlZm9Bc3NldF9fBQAAAAxhc3NldEFkZHJlc3MCAAAACF9fY29uZmlnAQAAABVnZXRBc3NldEluaXRIZWlnaHRLZXkAAAABAAAADGFzc2V0QWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAAEyVzJXMlc19fZGVmb0Fzc2V0X18FAAAADGFzc2V0QWRkcmVzcwIAAAAMX19pbml0SGVpZ2h0AQAAABlnZXRBc3NldEFjdGl2YXRlSGVpZ2h0S2V5AAAAAQAAAAxhc3NldEFkZHJlc3MJAAEsAAAAAgkAASwAAAACAgAAABMlcyVzJXNfX2RlZm9Bc3NldF9fBQAAAAxhc3NldEFkZHJlc3MCAAAAEF9fYWN0aXZhdGVIZWlnaHQBAAAAHWdldEFzc2V0Q3VycnJlbnRQb29sQW1vdW50S2V5AAAAAQAAAAxhc3NldEFkZHJlc3MJAAEsAAAAAgkAASwAAAACAgAAABMlcyVzJXNfX2RlZm9Bc3NldF9fBQAAAAxhc3NldEFkZHJlc3MCAAAADV9fY3VycmVudFBvb2wBAAAAGGdldEFzc2V0TWF4UG9vbEFtb3VudEtleQAAAAEAAAAMYXNzZXRBZGRyZXNzCQABLAAAAAIJAAEsAAAAAgIAAAATJXMlcyVzX19kZWZvQXNzZXRfXwUAAAAMYXNzZXRBZGRyZXNzAgAAAAlfX21heFBvb2wBAAAAD2dldEFzc2V0TWV0YUtleQAAAAEAAAAMYXNzZXRBZGRyZXNzCQABLAAAAAIJAAEsAAAAAgIAAAATJXMlcyVzX19kZWZvQXNzZXRfXwUAAAAMYXNzZXRBZGRyZXNzAgAAAAZfX21ldGEBAAAAGGdldEFzc2V0QWRkcmVzc0J5Q29kZUtleQAAAAEAAAAJYXNzZXRDb2RlCQABLAAAAAIJAAEsAAAAAgIAAAATJXMlcyVzX19kZWZvQXNzZXRfXwUAAAAJYXNzZXRDb2RlAgAAABRfX2FkZHJlc3NCeUFzc2V0Q29kZQEAAAAbZ2V0QXNzZXRBZGRyZXNzQnlBc3NldElkS2V5AAAAAQAAAAdhc3NldElkCQABLAAAAAIJAAEsAAAAAgIAAAATJXMlcyVzX19kZWZvQXNzZXRfXwUAAAAHYXNzZXRJZAIAAAASX19hZGRyZXNzQnlBc3NldElkAQAAACJnZXRQb29sTWFrZXJQYXJ0aWNpcGF0aW9uQW1vdW50S2V5AAAAAgAAAAxhc3NldEFkZHJlc3MAAAAQcG9vbE1ha2VyQWRkcmVzcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACCVzJXMlcyVzBQAAAAlTRVBBUkFUT1ICAAAABHBvb2wFAAAACVNFUEFSQVRPUgUAAAAMYXNzZXRBZGRyZXNzBQAAAAlTRVBBUkFUT1IFAAAAEHBvb2xNYWtlckFkZHJlc3MFAAAACVNFUEFSQVRPUgIAAAAGYW1vdW50AQAAACVnZXRQb29sTWFrZXJQYXJ0aWNpcGF0aW9uTWF4QW1vdW50S2V5AAAAAgAAAAxhc3NldEFkZHJlc3MAAAAQcG9vbE1ha2VyQWRkcmVzcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACCVzJXMlcyVzBQAAAAlTRVBBUkFUT1ICAAAABHBvb2wFAAAACVNFUEFSQVRPUgUAAAAMYXNzZXRBZGRyZXNzBQAAAAlTRVBBUkFUT1IFAAAAEHBvb2xNYWtlckFkZHJlc3MFAAAACVNFUEFSQVRPUgIAAAAJbWF4QW1vdW50AQAAABtnZXRQb29sTWFrZXJMb2NrZWRBbW91bnRLZXkAAAACAAAADGFzc2V0QWRkcmVzcwAAABBwb29sTWFrZXJBZGRyZXNzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIJXMlcyVzJXMFAAAACVNFUEFSQVRPUgIAAAAEcG9vbAUAAAAJU0VQQVJBVE9SBQAAAAxhc3NldEFkZHJlc3MFAAAACVNFUEFSQVRPUgUAAAAQcG9vbE1ha2VyQWRkcmVzcwUAAAAJU0VQQVJBVE9SAgAAAAxsb2NrZWRBbW91bnQBAAAAG2dldFBvb2xNYWtlclVubG9ja0hlaWdodEtleQAAAAIAAAAMYXNzZXRBZGRyZXNzAAAAEHBvb2xNYWtlckFkZHJlc3MJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAglcyVzJXMlcwUAAAAJU0VQQVJBVE9SAgAAAARwb29sBQAAAAlTRVBBUkFUT1IFAAAADGFzc2V0QWRkcmVzcwUAAAAJU0VQQVJBVE9SBQAAABBwb29sTWFrZXJBZGRyZXNzBQAAAAlTRVBBUkFUT1ICAAAADHVubG9ja0hlaWdodAEAAAATZ2V0QXNzZXRDb25maWdBcnJheQAAAAEAAAAMYXNzZXRBZGRyZXNzCQEAAAAWY29udmVydEpzb25BcnJheVRvTGlzdAAAAAIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkBAAAAGGdldFN0cmluZ0J5QWRkcmVzc0FuZEtleQAAAAIFAAAABHRoaXMJAQAAABFnZXRBc3NldENvbmZpZ0tleQAAAAEFAAAADGFzc2V0QWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAADk5vIERFRk8gQXNzZXQgBQAAAAxhc3NldEFkZHJlc3MCAAAADmNvbmZpZyBwcmVzZW50BQAAAAlTRVBBUkFUT1IAAAAAEG5ldXRyaW5vQ29udHJhY3QJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAABpuZXV0cmlub0NvbnRyYWN0QWRkcmVzc0tleQIAAAAfTm8gbmV1dHJpbm8gY29udHJhY3Qgc3BlY2lmaWVkLgAAAAAPbmV1dHJpbm9Bc3NldElkCQACWQAAAAECAAAALDlFcWJiTTg4dTQyTGJyNVFCZXM5dndCSzMzQnpqWWg1b1RxMXU5c0xqQ3UxAAAAAAtuc2J0QXNzZXRJZAkAAlkAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAQbmV1dHJpbm9Db250cmFjdAUAAAAObnNidEFzc2V0SWRLZXkCAAAAFk5vIE5TQlQgYXNzZXQgaWQgZm91bmQAAAAAEm1pbmltdW1Qb29sRnVuZGluZwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAG21pbmltdW5Qb29sRnVuZGluZ0Ftb3VudEtleQIAAAAtTWluaW11bSBwb29sIGZ1bmRpbmcgYW1vdW50IGlzIG5vdCBzcGVjaWZpZWQuAAAAAAthc3NldFN0YXR1cwkABRUAAAADAgAAAAhQUk9QT1NFRAIAAAAFUkVBRFkCAAAABklTU1VFRAAAAAAYcHJlZGVmaW5lZEFzc2V0Q29udHJhY3RzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAUYXNzZXRzQWRkcmVzc0xpc3RLZXkCAAAALU5vIHBvb2wgb2YgcHJlZGVwbG95ZWQgYXNzZXQgY29udHJhY3RzIGZvdW5kLgAAAAAUcHJlZGVmaW5lZEFzc2V0c0xpc3QJAQAAABZjb252ZXJ0SnNvbkFycmF5VG9MaXN0AAAAAgUAAAAYcHJlZGVmaW5lZEFzc2V0Q29udHJhY3RzAgAAAAEsAAAAABFjdXJyZW50QXNzZXRJbmRleAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAABRjdXJyZW50QXNzZXRJbmRleEtleQAAAAAAAAAAAAAAAAAJZGVidFRva2VuCQACWQAAAAEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAA5kZWJ0VG9rZW5JZEtleQIAAAATTm8gZGVidCB0b2tlbiBmb3VuZAAAAAANbXVsdGlwbGljYXRvcgAAAAAAAA9CQAAAAAAWZGVidFRva2VuUmVpc3N1ZUFtb3VudAkAAGgAAAACAAAAAAAAmJaABQAAAA1tdWx0aXBsaWNhdG9yAQAAABVnZXRBc3NldEFkZHJlc3NCeUNvZGUAAAABAAAAC2Fzc2V0U3ltYm9sCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMJAQAAABhnZXRBc3NldEFkZHJlc3NCeUNvZGVLZXkAAAABBQAAAAthc3NldFN5bWJvbAIAAAAAAQAAAAxnZXRBc3NldENvZGUAAAABAAAAC2Fzc2V0Q29uZmlnCQABkQAAAAIFAAAAC2Fzc2V0Q29uZmlnBQAAAAxrZXlBc3NldENvZGUBAAAACmdldEFzc2V0SUQAAAABAAAAC2Fzc2V0Q29uZmlnCQABkQAAAAIFAAAAC2Fzc2V0Q29uZmlnBQAAAAprZXlBc3NldElkAQAAAA5nZXRBc3NldFN0YXR1cwAAAAEAAAALYXNzZXRDb25maWcJAAGRAAAAAgUAAAALYXNzZXRDb25maWcFAAAADmtleUFzc2V0U3RhdHVzAQAAABVnZXRBc3NldFByaWNlRGVjaW1hbHMAAAABAAAAC2Fzc2V0Q29uZmlnCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAALYXNzZXRDb25maWcFAAAAFWtleUFzc2V0UHJpY2VEZWNpbWFscwEAAAAVZ2V0QXNzZXRCYWtpbmdBc3NldElkAAAAAQAAAAthc3NldENvbmZpZwkAAZEAAAACBQAAAAthc3NldENvbmZpZwUAAAATa2V5QXNzZXRCYWtpbmdBc3NldAEAAAAdZ2V0QXNzZXRPdmVyQ29sbGF0ZXJhbFBlcmNlbnQAAAABAAAAC2Fzc2V0Q29uZmlnCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAALYXNzZXRDb25maWcFAAAAG2tleU92ZXJjb2xsYXRlcmFsUGVyY2VudGFnZQEAAAAdZ2V0QXNzZXRNaW5SZXF1aXJlZFBvb2xBbW91bnQAAAABAAAAC2Fzc2V0Q29uZmlnCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAALYXNzZXRDb25maWcFAAAACmtleU1pblBvb2wBAAAAGmdldEFzc2V0UHJpY2VPcmFjbGVBZGRyZXNzAAAAAQAAAAthc3NldENvbmZpZwkAAZEAAAACBQAAAAthc3NldENvbmZpZwUAAAAVa2V5UHJpY2VPcmFjbGVBZGRyZXNzAQAAABhnZXRNaW5CdXlQYXltZW50UGVyQXNzZXQAAAABAAAAC2Fzc2V0Q29uZmlnCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAALYXNzZXRDb25maWcFAAAAEGtleU1pbkJ1eVBheW1lbnQBAAAAGWdldE1pblNlbGxQYXltZW50UGVyQXNzZXQAAAABAAAAC2Fzc2V0Q29uZmlnCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAALYXNzZXRDb25maWcFAAAAEWtleU1pblNlbGxQYXltZW50AQAAABpnZXRCdXlMb2NrSW50ZXJ2YWxQZXJBc3NldAAAAAEAAAALYXNzZXRDb25maWcJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAthc3NldENvbmZpZwUAAAASa2V5QnV5TG9ja0ludGVydmFsAQAAABtnZXRTZWxsTG9ja0ludGVydmFsUGVyQXNzZXQAAAABAAAAC2Fzc2V0Q29uZmlnCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAALYXNzZXRDb25maWcFAAAAE2tleVNlbGxMb2NrSW50ZXJ2YWwBAAAAEWdldEJ1eUZlZVBlckFzc2V0AAAAAQAAAAthc3NldENvbmZpZwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAC2Fzc2V0Q29uZmlnBQAAAAlrZXlCdXlGZWUBAAAAEmdldFNlbGxGZWVQZXJBc3NldAAAAAEAAAALYXNzZXRDb25maWcJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAthc3NldENvbmZpZwUAAAAKa2V5U2VsbEZlZQEAAAAaZ2V0UmVkZW1wdGlvblRpbWVvdXRCbG9ja3MAAAABAAAAC2Fzc2V0Q29uZmlnCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAALYXNzZXRDb25maWcFAAAAGGtleVBvb2xSZWRlbXB0aW9uVGltZW91dAEAAAASZ2V0QXNzZXRJbml0SGVpZ2h0AAAAAQAAAAxhc3NldEFkZHJlc3MJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAFWdldEFzc2V0SW5pdEhlaWdodEtleQAAAAEFAAAADGFzc2V0QWRkcmVzcwAAAAAAAAAAAAEAAAAWZ2V0QXNzZXRBY3RpdmF0ZUhlaWdodAAAAAEAAAAMYXNzZXRBZGRyZXNzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAABlnZXRBc3NldEFjdGl2YXRlSGVpZ2h0S2V5AAAAAQUAAAAMYXNzZXRBZGRyZXNzAAAAAAAAAAAAAQAAABlnZXRBc3NldEN1cnJlbnRQb29sQW1vdW50AAAAAQAAAAxhc3NldEFkZHJlc3MJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAHWdldEFzc2V0Q3VycnJlbnRQb29sQW1vdW50S2V5AAAAAQUAAAAMYXNzZXRBZGRyZXNzAAAAAAAAAAAAAQAAABVnZXRBc3NldE1heFBvb2xBbW91bnQAAAABAAAADGFzc2V0QWRkcmVzcwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAYZ2V0QXNzZXRNYXhQb29sQW1vdW50S2V5AAAAAQUAAAAMYXNzZXRBZGRyZXNzAAAAAAAAAAAAAQAAAAxnZXRBc3NldE1ldGEAAAABAAAADGFzc2V0QWRkcmVzcwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzCQEAAAAPZ2V0QXNzZXRNZXRhS2V5AAAAAQUAAAAMYXNzZXRBZGRyZXNzAgAAAAABAAAAH2dldFBvb2xNYWtlclBhcnRpY2lwYXRpb25BbW91bnQAAAACAAAADGFzc2V0QWRkcmVzcwAAABBwb29sTWFrZXJBZGRyZXNzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAACJnZXRQb29sTWFrZXJQYXJ0aWNpcGF0aW9uQW1vdW50S2V5AAAAAgUAAAAMYXNzZXRBZGRyZXNzBQAAABBwb29sTWFrZXJBZGRyZXNzAAAAAAAAAAAAAQAAACJnZXRQb29sTWFrZXJQYXJ0aWNpcGF0aW9uTWF4QW1vdW50AAAAAgAAAAxhc3NldEFkZHJlc3MAAAAQcG9vbE1ha2VyQWRkcmVzcwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAlZ2V0UG9vbE1ha2VyUGFydGljaXBhdGlvbk1heEFtb3VudEtleQAAAAIFAAAADGFzc2V0QWRkcmVzcwUAAAAQcG9vbE1ha2VyQWRkcmVzcwAAAAAAAAAAAAEAAAAYZ2V0UG9vbE1ha2VyTG9ja2VkQW1vdW50AAAAAgAAAAxhc3NldEFkZHJlc3MAAAAQcG9vbE1ha2VyQWRkcmVzcwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAbZ2V0UG9vbE1ha2VyTG9ja2VkQW1vdW50S2V5AAAAAgUAAAAMYXNzZXRBZGRyZXNzBQAAABBwb29sTWFrZXJBZGRyZXNzAAAAAAAAAAAAAQAAABhnZXRQb29sTWFrZXJVbmxvY2tIZWlnaHQAAAACAAAADGFzc2V0QWRkcmVzcwAAABBwb29sTWFrZXJBZGRyZXNzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAABtnZXRQb29sTWFrZXJVbmxvY2tIZWlnaHRLZXkAAAACBQAAAAxhc3NldEFkZHJlc3MFAAAAEHBvb2xNYWtlckFkZHJlc3MAAAAAAAAAAAABAAAADWdldEFzc2V0UHJpY2UAAAABAAAAEnByaWNlT3JhY2xlQWRkcmVzcwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAAEnByaWNlT3JhY2xlQWRkcmVzcwUAAAANYXNzZXRQcmljZUtleQIAAAAUTm8gQXNzZXQgcHJpY2UgZm91bmQBAAAAH2NvbXBvc2VBc3NldENvbmZpZ3VyYXRpb25TdHJpbmcAAAAPAAAACWFzc2V0Q29kZQAAAAdhc3NldElkAAAAC2Fzc2V0U3RhdHVzAAAADXByaWNlRGVjaW1hbHMAAAAOYmFja2luZ0Fzc2V0SWQAAAAVb3ZlckNvbGxhdGVyYWxQZXJjZW50AAAAB21pblBvb2wAAAAScHJpY2VPcmFjbGVBZGRyZXNzAAAADW1pbkJ1eVBheW1lbnQAAAAObWluU2VsbFBheW1lbnQAAAAPYnV5TG9ja0ludGVydmFsAAAAEHNlbGxMb2NrSW50ZXJ2YWwAAAAGYnV5RmVlAAAAB3NlbGxGZWUAAAAVcG9vbFJlZGVtcHRpb25UaW1lb3V0CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAB4lcyVzJXMlZCVzJWQlZCVzJWQlZCVkJWQlZCVkJWQFAAAACVNFUEFSQVRPUgUAAAAJYXNzZXRDb2RlBQAAAAlTRVBBUkFUT1IFAAAAB2Fzc2V0SWQFAAAACVNFUEFSQVRPUgUAAAALYXNzZXRTdGF0dXMFAAAACVNFUEFSQVRPUgkAAaQAAAABBQAAAA1wcmljZURlY2ltYWxzBQAAAAlTRVBBUkFUT1IFAAAADmJhY2tpbmdBc3NldElkBQAAAAlTRVBBUkFUT1IJAAGkAAAAAQUAAAAVb3ZlckNvbGxhdGVyYWxQZXJjZW50BQAAAAlTRVBBUkFUT1IJAAGkAAAAAQUAAAAHbWluUG9vbAUAAAAJU0VQQVJBVE9SBQAAABJwcmljZU9yYWNsZUFkZHJlc3MFAAAACVNFUEFSQVRPUgkAAaQAAAABBQAAAA1taW5CdXlQYXltZW50BQAAAAlTRVBBUkFUT1IJAAGkAAAAAQUAAAAObWluU2VsbFBheW1lbnQFAAAACVNFUEFSQVRPUgkAAaQAAAABBQAAAA9idXlMb2NrSW50ZXJ2YWwFAAAACVNFUEFSQVRPUgkAAaQAAAABBQAAABBzZWxsTG9ja0ludGVydmFsBQAAAAlTRVBBUkFUT1IJAAGkAAAAAQUAAAAGYnV5RmVlBQAAAAlTRVBBUkFUT1IJAAGkAAAAAQUAAAAHc2VsbEZlZQUAAAAJU0VQQVJBVE9SCQABpAAAAAEFAAAAFXBvb2xSZWRlbXB0aW9uVGltZW91dAAAAAYAAAABaQEAAAAEaW5pdAAAAAQAAAAXbmV1dHJpbm9Db250cmFjdEFkZHJlc3MAAAAYbWluaW11blBvb2xGdW5kaW5nQW1vdW50AAAAE3ByZWRlZmluZWRBc3NldExpc3QAAAARY3VycmVudEFzc2V0SW5kZXgDCQEAAAACIT0AAAACCQACWAAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAAOYWRtaW5QdWJsaWNLZXkJAAACAAAAAQIAAAAqT25seSBBZG1pbiBjYW4gcGVyZm9ybSBjb250cmFjdCBvcGVyYXRpb24uAwkAAAAAAAACCQEAAAAMZ2V0Qm9vbEJ5S2V5AAAAAQUAAAAQaXNJbml0aWFsaXplZEtleQYJAAACAAAAAQIAAAAhQ29udHJhY3Qgd2FzIGFscmVhZHkgaW5pdGlhbGl6ZWQuBAAAAAlpc3N1ZURlYnQJAARCAAAABQIAAAAJREVGT19ERUJUAgAAABBERUZPIERlYnQgVG9rZW4uAAAAAAAAAAABAAAAAAAAAAAGBgQAAAALZGVidFRva2VuSWQJAAQ4AAAAAQUAAAAJaXNzdWVEZWJ0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAGm5ldXRyaW5vQ29udHJhY3RBZGRyZXNzS2V5BQAAABduZXV0cmlub0NvbnRyYWN0QWRkcmVzcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAbbWluaW11blBvb2xGdW5kaW5nQW1vdW50S2V5BQAAABhtaW5pbXVuUG9vbEZ1bmRpbmdBbW91bnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAUYXNzZXRzQWRkcmVzc0xpc3RLZXkFAAAAE3ByZWRlZmluZWRBc3NldExpc3QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAFGN1cnJlbnRBc3NldEluZGV4S2V5BQAAABFjdXJyZW50QXNzZXRJbmRleAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA5kZWJ0VG9rZW5JZEtleQkAAlgAAAABBQAAAAtkZWJ0VG9rZW5JZAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAQaXNJbml0aWFsaXplZEtleQYJAARMAAAAAgUAAAAJaXNzdWVEZWJ0CQAETAAAAAIJAQAAAARCdXJuAAAAAgUAAAALZGVidFRva2VuSWQAAAAAAAAAAAEFAAAAA25pbAAAAAFpAQAAAAxwcm9wb3NlQXNzZXQAAAAOAAAACWFzc2V0Q29kZQAAAARtZXRhAAAAB21pblBvb2wAAAAScHJpY2VPcmFjbGVBZGRyZXNzAAAAFW92ZXJDb2xsYXRlcmFsUGVyY2VudAAAAA5iYWNraW5nQXNzZXRJZAAAAA1wcmljZURlY2ltYWxzAAAADW1pbkJ1eVBheW1lbnQAAAAObWluU2VsbFBheW1lbnQAAAAPYnV5TG9ja0ludGVydmFsAAAAEHNlbGxMb2NrSW50ZXJ2YWwAAAAGYnV5RmVlAAAAB3NlbGxGZWUAAAAVcG9vbFJlZGVtcHRpb25UaW1lb3V0AwkBAAAAAiE9AAAAAgkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAADmFkbWluUHVibGljS2V5CQAAAgAAAAECAAAAKk9ubHkgQWRtaW4gY2FuIHBlcmZvcm0gY29udHJhY3Qgb3BlcmF0aW9uLgMJAAAAAAAAAgkBAAAADGdldEJvb2xCeUtleQAAAAEFAAAAEGlzSW5pdGlhbGl6ZWRLZXkHCQAAAgAAAAECAAAAGkNvbnRyYWN0IGlzIG5vdCB5ZXQgcmVhZHkuAwkBAAAAAiE9AAAAAgkAAlkAAAABBQAAAA5iYWNraW5nQXNzZXRJZAUAAAAPbmV1dHJpbm9Bc3NldElkCQAAAgAAAAECAAAAI0Jha2luZyBhc3NldCBpZCBjb3VsZCBiZSBVU0ROIG9ubHkuAwkBAAAAAiE9AAAAAgkBAAAAFWdldEFzc2V0QWRkcmVzc0J5Q29kZQAAAAEFAAAACWFzc2V0Q29kZQIAAAAACQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABdBc3NldCB3aXRoIHBhc3NlZCBjb2RlIAUAAAAJYXNzZXRDb2RlAgAAABsgaGFzIGFscmVhZHkgYmVlbiBwcm9wb3NlZC4DCQAAZgAAAAIFAAAAEm1pbmltdW1Qb29sRnVuZGluZwUAAAAHbWluUG9vbAkAAAIAAAABCQABLAAAAAICAAAAM01pbmltdW0gcG9vbCBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgb3IgZXF1YWxzIHRvIAkAAaQAAAABBQAAABJtaW5pbXVtUG9vbEZ1bmRpbmcDAwMDAwMDAwkAAGYAAAACAAAAAAAAAAAABQAAABVvdmVyQ29sbGF0ZXJhbFBlcmNlbnQGCQEAAAACIT0AAAACBQAAAA1wcmljZURlY2ltYWxzAAAAAAAAD0JABgkAAGYAAAACAAAAAAAAAAAABQAAAA1taW5CdXlQYXltZW50BgkAAGYAAAACAAAAAAAAAAAABQAAAA5taW5TZWxsUGF5bWVudAYJAABmAAAAAgAAAAAAAAAAAAUAAAAPYnV5TG9ja0ludGVydmFsBgkAAGYAAAACAAAAAAAAAAAABQAAABBzZWxsTG9ja0ludGVydmFsBgkAAGYAAAACAAAAAAAAAAAABQAAAAZidXlGZWUGCQAAZgAAAAIAAAAAAAAAAAAFAAAAB3NlbGxGZWUJAAACAAAAAQIAAAAoT25lIG9mIHRoZSBwYXNzZWQgcGFyYW1ldGVycyBpcyBpbnZhbGlkLgQAAAAXcHJpY2VPcmFjbGVBZGRyZXNzVmFsaWQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAScHJpY2VPcmFjbGVBZGRyZXNzAgAAAClQYXNzZWQgUHJpY2UgT3JhY2xlIEFkZHJlc3MgaXMgbm90IHZhbGlkLgQAAAAMYXNzZXRBZGRyZXNzCQABkQAAAAIFAAAAFHByZWRlZmluZWRBc3NldHNMaXN0BQAAABFjdXJyZW50QXNzZXRJbmRleAQAAAALZGVmb0Fzc2V0SWQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQUAAAAMYXNzZXRBZGRyZXNzAgAAAAAFAAAADmRlZm9Bc3NldElkS2V5AgAAABdObyBkZWZvIGFzc2V0IElEIGZvdW5kLgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAARZ2V0QXNzZXRDb25maWdLZXkAAAABBQAAAAxhc3NldEFkZHJlc3MJAQAAAB9jb21wb3NlQXNzZXRDb25maWd1cmF0aW9uU3RyaW5nAAAADwUAAAAJYXNzZXRDb2RlBQAAAAtkZWZvQXNzZXRJZAgFAAAAC2Fzc2V0U3RhdHVzAAAAAl8xBQAAAA1wcmljZURlY2ltYWxzBQAAAA5iYWNraW5nQXNzZXRJZAUAAAAVb3ZlckNvbGxhdGVyYWxQZXJjZW50BQAAAAdtaW5Qb29sBQAAABJwcmljZU9yYWNsZUFkZHJlc3MFAAAADW1pbkJ1eVBheW1lbnQFAAAADm1pblNlbGxQYXltZW50BQAAAA9idXlMb2NrSW50ZXJ2YWwFAAAAEHNlbGxMb2NrSW50ZXJ2YWwFAAAABmJ1eUZlZQUAAAAHc2VsbEZlZQUAAAAVcG9vbFJlZGVtcHRpb25UaW1lb3V0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABhnZXRBc3NldEFkZHJlc3NCeUNvZGVLZXkAAAABBQAAAAlhc3NldENvZGUFAAAADGFzc2V0QWRkcmVzcwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPZ2V0QXNzZXRNZXRhS2V5AAAAAQUAAAAMYXNzZXRBZGRyZXNzBQAAAARtZXRhCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAVZ2V0QXNzZXRJbml0SGVpZ2h0S2V5AAAAAQUAAAAMYXNzZXRBZGRyZXNzBQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAFGN1cnJlbnRBc3NldEluZGV4S2V5CQAAZAAAAAIFAAAAEWN1cnJlbnRBc3NldEluZGV4AAAAAAAAAAABCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABtnZXRBc3NldEFkZHJlc3NCeUFzc2V0SWRLZXkAAAABBQAAAAtkZWZvQXNzZXRJZAUAAAAMYXNzZXRBZGRyZXNzBQAAAANuaWwAAAABaQEAAAARZnVuZExpcXVpZGl0eVBvb2wAAAABAAAACWFzc2V0Q29kZQQAAAAMYXNzZXRBZGRyZXNzCQEAAAAVZ2V0QXNzZXRBZGRyZXNzQnlDb2RlAAAAAQUAAAAJYXNzZXRDb2RlBAAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0CQEAAAATZ2V0QXNzZXRDb25maWdBcnJheQAAAAEFAAAADGFzc2V0QWRkcmVzcwQAAAAPYXR0YWNoZWRQYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAwkBAAAAAiE9AAAAAgkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAADmFkbWluUHVibGljS2V5CQAAAgAAAAECAAAAKk9ubHkgQWRtaW4gY2FuIHBlcmZvcm0gY29udHJhY3Qgb3BlcmF0aW9uLgMJAAAAAAAAAgkBAAAADGdldEJvb2xCeUtleQAAAAEFAAAAEGlzSW5pdGlhbGl6ZWRLZXkHCQAAAgAAAAECAAAAGkNvbnRyYWN0IGlzIG5vdCB5ZXQgcmVhZHkuAwkBAAAAAiE9AAAAAggFAAAAD2F0dGFjaGVkUGF5bWVudAAAAAdhc3NldElkBQAAAA9uZXV0cmlub0Fzc2V0SWQJAAACAAAAAQIAAAAuTGlxdWlkaXR5IHBvb2wgY291bGQgYmUgZnVuZGVkIHdpdGggVVNETiBvbmx5LgMJAAAAAAAAAggFAAAAD2F0dGFjaGVkUGF5bWVudAAAAAZhbW91bnQAAAAAAAAAAAAJAAACAAAAAQIAAAAiSW5jb3JyZWN0IGF0dGFjaGVkIHBheW1lbnQgYW1vdW50LgMJAAAAAAAAAgUAAAAMYXNzZXRBZGRyZXNzAgAAAAAJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAJUNhbm5vdCBmaW5kIGxpcXVpZGl0eSBwb29sIGZvciBhc3NldCAFAAAACWFzc2V0Q29kZQIAAAABLgQAAAAPZmluYWxQb29sQW1vdW50CQAAZAAAAAIIBQAAAA9hdHRhY2hlZFBheW1lbnQAAAAGYW1vdW50CQEAAAAZZ2V0QXNzZXRDdXJyZW50UG9vbEFtb3VudAAAAAEFAAAADGFzc2V0QWRkcmVzcwQAAAANbWF4UG9vbEFtb3VudAkBAAAAFWdldEFzc2V0TWF4UG9vbEFtb3VudAAAAAEFAAAADGFzc2V0QWRkcmVzcwQAAAAXY3VycmVudFBvb2xNYWtlckJhbGFuY2UJAQAAAB9nZXRQb29sTWFrZXJQYXJ0aWNpcGF0aW9uQW1vdW50AAAAAgUAAAAMYXNzZXRBZGRyZXNzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAATbWF4UG9vbE1ha2VyQmFsYW5jZQkBAAAAImdldFBvb2xNYWtlclBhcnRpY2lwYXRpb25NYXhBbW91bnQAAAACBQAAAAxhc3NldEFkZHJlc3MJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAABFjdXJyZW50UG9vbFN0YXR1cwkBAAAADmdldEFzc2V0U3RhdHVzAAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAAPZmluYWxQb29sU3RhdHVzAwMJAABnAAAAAgUAAAAPZmluYWxQb29sQW1vdW50CQEAAAAdZ2V0QXNzZXRNaW5SZXF1aXJlZFBvb2xBbW91bnQAAAABBQAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0CQAAAAAAAAIFAAAAEWN1cnJlbnRQb29sU3RhdHVzCAUAAAALYXNzZXRTdGF0dXMAAAACXzEHCAUAAAALYXNzZXRTdGF0dXMAAAACXzIFAAAAEWN1cnJlbnRQb29sU3RhdHVzBAAAAAVhQ29kZQkBAAAADGdldEFzc2V0Q29kZQAAAAEFAAAAFmFzc2V0Q29uZmlndXJhdGlvbkxpc3QEAAAAA2FJRAkBAAAACmdldEFzc2V0SUQAAAABBQAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0BAAAAA5hUHJpY2VEZWNpbWFscwkBAAAAFWdldEFzc2V0UHJpY2VEZWNpbWFscwAAAAEFAAAAFmFzc2V0Q29uZmlndXJhdGlvbkxpc3QEAAAADmFCYWtpbmdBc3NldElkCQEAAAAVZ2V0QXNzZXRCYWtpbmdBc3NldElkAAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAAWYU92ZXJDb2xsYXRlcmFsUGVyY2VudAkBAAAAHWdldEFzc2V0T3ZlckNvbGxhdGVyYWxQZXJjZW50AAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAAQYU1pblJlcXVpcmVkUG9vbAkBAAAAHWdldEFzc2V0TWluUmVxdWlyZWRQb29sQW1vdW50AAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAATYVByaWNlT3JhY2xlQWRkcmVzcwkBAAAAGmdldEFzc2V0UHJpY2VPcmFjbGVBZGRyZXNzAAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAAOYU1pbkJ1eVBheW1lbnQJAQAAABhnZXRNaW5CdXlQYXltZW50UGVyQXNzZXQAAAABBQAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0BAAAAA9hTWluU2VsbFBheW1lbnQJAQAAABlnZXRNaW5TZWxsUGF5bWVudFBlckFzc2V0AAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAAQYUJ1eUxvY2tJbnRlcnZhbAkBAAAAGmdldEJ1eUxvY2tJbnRlcnZhbFBlckFzc2V0AAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAARYVNlbGxMb2NrSW50ZXJ2YWwJAQAAABtnZXRTZWxsTG9ja0ludGVydmFsUGVyQXNzZXQAAAABBQAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0BAAAAAdhQnV5RmVlCQEAAAARZ2V0QnV5RmVlUGVyQXNzZXQAAAABBQAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0BAAAAAhhU2VsbEZlZQkBAAAAEmdldFNlbGxGZWVQZXJBc3NldAAAAAEFAAAAFmFzc2V0Q29uZmlndXJhdGlvbkxpc3QEAAAAGGFSZWRlbXB0aW9uVGltZW91dEJsb2NrcwkBAAAAGmdldFJlZGVtcHRpb25UaW1lb3V0QmxvY2tzAAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAATbmV3UG9vbE1ha2VyQmFsYW5jZQkAAGQAAAACBQAAABdjdXJyZW50UG9vbE1ha2VyQmFsYW5jZQgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50BAAAAAZyZXN1bHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAACJnZXRQb29sTWFrZXJQYXJ0aWNpcGF0aW9uQW1vdW50S2V5AAAAAgUAAAAMYXNzZXRBZGRyZXNzCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAATbmV3UG9vbE1ha2VyQmFsYW5jZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAJWdldFBvb2xNYWtlclBhcnRpY2lwYXRpb25NYXhBbW91bnRLZXkAAAACBQAAAAxhc3NldEFkZHJlc3MJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyAwkAAGYAAAACBQAAABNuZXdQb29sTWFrZXJCYWxhbmNlBQAAABNtYXhQb29sTWFrZXJCYWxhbmNlBQAAABNuZXdQb29sTWFrZXJCYWxhbmNlBQAAABNtYXhQb29sTWFrZXJCYWxhbmNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAdZ2V0QXNzZXRDdXJycmVudFBvb2xBbW91bnRLZXkAAAABBQAAAAxhc3NldEFkZHJlc3MFAAAAD2ZpbmFsUG9vbEFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAGGdldEFzc2V0TWF4UG9vbEFtb3VudEtleQAAAAEFAAAADGFzc2V0QWRkcmVzcwMJAABmAAAAAgUAAAAPZmluYWxQb29sQW1vdW50BQAAAA1tYXhQb29sQW1vdW50BQAAAA9maW5hbFBvb2xBbW91bnQFAAAADW1heFBvb2xBbW91bnQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAEWdldEFzc2V0Q29uZmlnS2V5AAAAAQUAAAAMYXNzZXRBZGRyZXNzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABFnZXRBc3NldENvbmZpZ0tleQAAAAEFAAAADGFzc2V0QWRkcmVzcwkBAAAAH2NvbXBvc2VBc3NldENvbmZpZ3VyYXRpb25TdHJpbmcAAAAPBQAAAAVhQ29kZQUAAAADYUlEBQAAAA9maW5hbFBvb2xTdGF0dXMFAAAADmFQcmljZURlY2ltYWxzBQAAAA5hQmFraW5nQXNzZXRJZAUAAAAWYU92ZXJDb2xsYXRlcmFsUGVyY2VudAUAAAAQYU1pblJlcXVpcmVkUG9vbAUAAAATYVByaWNlT3JhY2xlQWRkcmVzcwUAAAAOYU1pbkJ1eVBheW1lbnQFAAAAD2FNaW5TZWxsUGF5bWVudAUAAAAQYUJ1eUxvY2tJbnRlcnZhbAUAAAARYVNlbGxMb2NrSW50ZXJ2YWwFAAAAB2FCdXlGZWUFAAAACGFTZWxsRmVlBQAAABhhUmVkZW1wdGlvblRpbWVvdXRCbG9ja3MFAAAAA25pbAMJAAAAAAAAAgUAAAARY3VycmVudFBvb2xTdGF0dXMIBQAAAAthc3NldFN0YXR1cwAAAAJfMwkABE0AAAACBQAAAAZyZXN1bHQJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAADGFzc2V0QWRkcmVzcwgFAAAAD2F0dGFjaGVkUGF5bWVudAAAAAZhbW91bnQFAAAAD25ldXRyaW5vQXNzZXRJZAUAAAAGcmVzdWx0AAAAAWkBAAAADWFjdGl2YXRlQXNzZXQAAAABAAAACWFzc2V0Q29kZQQAAAAMYXNzZXRBZGRyZXNzCQEAAAAVZ2V0QXNzZXRBZGRyZXNzQnlDb2RlAAAAAQUAAAAJYXNzZXRDb2RlBAAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0CQEAAAATZ2V0QXNzZXRDb25maWdBcnJheQAAAAEFAAAADGFzc2V0QWRkcmVzcwQAAAAWY3VycmVudEFzc2V0UG9vbEFtb3VudAkBAAAAGWdldEFzc2V0Q3VycmVudFBvb2xBbW91bnQAAAABBQAAAAxhc3NldEFkZHJlc3MEAAAABWFDb2RlCQEAAAAMZ2V0QXNzZXRDb2RlAAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAAOYUN1cnJlbnRTdGF0dXMJAQAAAA5nZXRBc3NldFN0YXR1cwAAAAEFAAAAFmFzc2V0Q29uZmlndXJhdGlvbkxpc3QEAAAAA2FJRAkBAAAACmdldEFzc2V0SUQAAAABBQAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0BAAAAA5hUHJpY2VEZWNpbWFscwkBAAAAFWdldEFzc2V0UHJpY2VEZWNpbWFscwAAAAEFAAAAFmFzc2V0Q29uZmlndXJhdGlvbkxpc3QEAAAADmFCYWtpbmdBc3NldElkCQEAAAAVZ2V0QXNzZXRCYWtpbmdBc3NldElkAAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAAWYU92ZXJDb2xsYXRlcmFsUGVyY2VudAkBAAAAHWdldEFzc2V0T3ZlckNvbGxhdGVyYWxQZXJjZW50AAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAAQYU1pblJlcXVpcmVkUG9vbAkBAAAAHWdldEFzc2V0TWluUmVxdWlyZWRQb29sQW1vdW50AAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAATYVByaWNlT3JhY2xlQWRkcmVzcwkBAAAAGmdldEFzc2V0UHJpY2VPcmFjbGVBZGRyZXNzAAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAAOYU1pbkJ1eVBheW1lbnQJAQAAABhnZXRNaW5CdXlQYXltZW50UGVyQXNzZXQAAAABBQAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0BAAAAA9hTWluU2VsbFBheW1lbnQJAQAAABlnZXRNaW5TZWxsUGF5bWVudFBlckFzc2V0AAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAAQYUJ1eUxvY2tJbnRlcnZhbAkBAAAAGmdldEJ1eUxvY2tJbnRlcnZhbFBlckFzc2V0AAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAQAAAARYVNlbGxMb2NrSW50ZXJ2YWwJAQAAABtnZXRTZWxsTG9ja0ludGVydmFsUGVyQXNzZXQAAAABBQAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0BAAAAAdhQnV5RmVlCQEAAAARZ2V0QnV5RmVlUGVyQXNzZXQAAAABBQAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0BAAAAAhhU2VsbEZlZQkBAAAAEmdldFNlbGxGZWVQZXJBc3NldAAAAAEFAAAAFmFzc2V0Q29uZmlndXJhdGlvbkxpc3QEAAAAGGFSZWRlbXB0aW9uVGltZW91dEJsb2NrcwkBAAAAGmdldFJlZGVtcHRpb25UaW1lb3V0QmxvY2tzAAAAAQUAAAAWYXNzZXRDb25maWd1cmF0aW9uTGlzdAMJAQAAAAIhPQAAAAIJAAJYAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BQAAAA5hZG1pblB1YmxpY0tleQkAAAIAAAABAgAAACpPbmx5IEFkbWluIGNhbiBwZXJmb3JtIGNvbnRyYWN0IG9wZXJhdGlvbi4DCQAAAAAAAAIJAQAAAAxnZXRCb29sQnlLZXkAAAABBQAAABBpc0luaXRpYWxpemVkS2V5BwkAAAIAAAABAgAAABpDb250cmFjdCBpcyBub3QgeWV0IHJlYWR5LgMJAQAAAAIhPQAAAAIFAAAADmFDdXJyZW50U3RhdHVzCAUAAAALYXNzZXRTdGF0dXMAAAACXzIJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAMEFzc2V0IGlzIG5vdCBpbiBSRUFEWSBzdGF0dXMuIEN1cnJlbnQgc3RhdHVzIGlzIAUAAAAOYUN1cnJlbnRTdGF0dXMCAAAAAS4DCQAAAAAAAAIFAAAADGFzc2V0QWRkcmVzcwIAAAAACQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABJDYW5ub3QgZmluZCBhc3NldCAFAAAACWFzc2V0Q29kZQIAAAABLgMJAABmAAAAAgUAAAASbWluaW11bVBvb2xGdW5kaW5nBQAAABZjdXJyZW50QXNzZXRQb29sQW1vdW50CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAtQ2Fubm90IGlzc3VlIGFzc2V0IGFzIGxpcXVpZGl0eSBwb29sIGFtb3VudCAoCQABpAAAAAEFAAAAFmN1cnJlbnRBc3NldFBvb2xBbW91bnQCAAAAGSkgaXMgbGVzcyB0aGFuIHJlcXVpcmVkICgJAAGkAAAAAQUAAAASbWluaW11bVBvb2xGdW5kaW5nAgAAAAEpBAAAAAlpc3N1ZURlYnQJAQAAAAdSZWlzc3VlAAAAAwUAAAAJZGVidFRva2VuBQAAABZkZWJ0VG9rZW5SZWlzc3VlQW1vdW50BgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAGWdldEFzc2V0QWN0aXZhdGVIZWlnaHRLZXkAAAABBQAAAAxhc3NldEFkZHJlc3MFAAAABmhlaWdodAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAARZ2V0QXNzZXRDb25maWdLZXkAAAABBQAAAAxhc3NldEFkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEWdldEFzc2V0Q29uZmlnS2V5AAAAAQUAAAAMYXNzZXRBZGRyZXNzCQEAAAAfY29tcG9zZUFzc2V0Q29uZmlndXJhdGlvblN0cmluZwAAAA8FAAAABWFDb2RlBQAAAANhSUQIBQAAAAthc3NldFN0YXR1cwAAAAJfMwUAAAAOYVByaWNlRGVjaW1hbHMFAAAADmFCYWtpbmdBc3NldElkBQAAABZhT3ZlckNvbGxhdGVyYWxQZXJjZW50BQAAABBhTWluUmVxdWlyZWRQb29sBQAAABNhUHJpY2VPcmFjbGVBZGRyZXNzBQAAAA5hTWluQnV5UGF5bWVudAUAAAAPYU1pblNlbGxQYXltZW50BQAAABBhQnV5TG9ja0ludGVydmFsBQAAABFhU2VsbExvY2tJbnRlcnZhbAUAAAAHYUJ1eUZlZQUAAAAIYVNlbGxGZWUFAAAAGGFSZWRlbXB0aW9uVGltZW91dEJsb2NrcwkABEwAAAACBQAAAAlpc3N1ZURlYnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAMYXNzZXRBZGRyZXNzBQAAABZjdXJyZW50QXNzZXRQb29sQW1vdW50BQAAAA9uZXV0cmlub0Fzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAMYXNzZXRBZGRyZXNzBQAAABZkZWJ0VG9rZW5SZWlzc3VlQW1vdW50BQAAAAlkZWJ0VG9rZW4FAAAAA25pbAAAAAFpAQAAAA5yZWRlZW1Gcm9tUG9vbAAAAAIAAAAJYXNzZXRDb2RlAAAABmFtb3VudAQAAAAMYXNzZXRBZGRyZXNzCQEAAAAVZ2V0QXNzZXRBZGRyZXNzQnlDb2RlAAAAAQUAAAAJYXNzZXRDb2RlBAAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0CQEAAAATZ2V0QXNzZXRDb25maWdBcnJheQAAAAEFAAAADGFzc2V0QWRkcmVzcwQAAAANY2FsbGVyQWRkcmVzcwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAGXRvdGFsQW1vdW50SW5Qb29sQnlDYWxsZXIJAQAAAB9nZXRQb29sTWFrZXJQYXJ0aWNpcGF0aW9uQW1vdW50AAAAAgUAAAAMYXNzZXRBZGRyZXNzBQAAAA1jYWxsZXJBZGRyZXNzBAAAABdsb2NrZWRBbW91bnRCeVBvb2xNYWtlcgkBAAAAGGdldFBvb2xNYWtlckxvY2tlZEFtb3VudAAAAAIFAAAADGFzc2V0QWRkcmVzcwUAAAANY2FsbGVyQWRkcmVzcwMJAQAAAAIhPQAAAAIJAAJYAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BQAAAA5hZG1pblB1YmxpY0tleQkAAAIAAAABAgAAACpPbmx5IEFkbWluIGNhbiBwZXJmb3JtIGNvbnRyYWN0IG9wZXJhdGlvbi4DCQAAAAAAAAIJAQAAAAxnZXRCb29sQnlLZXkAAAABBQAAABBpc0luaXRpYWxpemVkS2V5BwkAAAIAAAABAgAAABpDb250cmFjdCBpcyBub3QgeWV0IHJlYWR5LgMJAAAAAAAAAgUAAAAMYXNzZXRBZGRyZXNzAgAAAAAJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAEkNhbm5vdCBmaW5kIGFzc2V0IAUAAAAJYXNzZXRDb2RlAgAAAAEuAwMDCQAAZgAAAAIAAAAAAAAAAAAFAAAABmFtb3VudAYJAAAAAAAAAgUAAAAZdG90YWxBbW91bnRJblBvb2xCeUNhbGxlcgAAAAAAAAAAAAYJAABmAAAAAgUAAAAGYW1vdW50BQAAABl0b3RhbEFtb3VudEluUG9vbEJ5Q2FsbGVyCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAACJDYW5ub3QgZmluZCBwb29sIG1ha2VyIGJ5IGFkZHJlc3MgBQAAAA1jYWxsZXJBZGRyZXNzAgAAACEgb3IgYW1vdW50IHBhc3NlZCBpcyBub3QgY29ycmVjdC4DCQAAZgAAAAIFAAAAF2xvY2tlZEFtb3VudEJ5UG9vbE1ha2VyAAAAAAAAAAAACQAAAgAAAAECAAAARlBvb2wgbWFrZXIgYWxyZWFkeSBoYXMgaW5pdGlhdGVkIHJlZGVtcHRpb24gdGhhdCBpcyBub3Qgd2l0aGRyYXduIHlldC4JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABtnZXRQb29sTWFrZXJMb2NrZWRBbW91bnRLZXkAAAACBQAAAAxhc3NldEFkZHJlc3MFAAAADWNhbGxlckFkZHJlc3MFAAAABmFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAG2dldFBvb2xNYWtlclVubG9ja0hlaWdodEtleQAAAAIFAAAADGFzc2V0QWRkcmVzcwUAAAANY2FsbGVyQWRkcmVzcwkAAGQAAAACBQAAAAZoZWlnaHQJAQAAABpnZXRSZWRlbXB0aW9uVGltZW91dEJsb2NrcwAAAAEFAAAAFmFzc2V0Q29uZmlndXJhdGlvbkxpc3QFAAAAA25pbAAAAAFpAQAAAAh3aXRoZHJhdwAAAAEAAAAJYXNzZXRDb2RlBAAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0CQEAAAATZ2V0QXNzZXRDb25maWdBcnJheQAAAAEFAAAACWFzc2V0Q29kZQQAAAAMYXNzZXRBZGRyZXNzCQEAAAAVZ2V0QXNzZXRBZGRyZXNzQnlDb2RlAAAAAQUAAAAJYXNzZXRDb2RlBAAAABJwcmljZU9yYWNsZUFkZHJlc3MJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAABpnZXRBc3NldFByaWNlT3JhY2xlQWRkcmVzcwAAAAEFAAAAFmFzc2V0Q29uZmlndXJhdGlvbkxpc3QEAAAADWNhbGxlckFkZHJlc3MJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAABJzeW50aGV0aWNBc3NldEluZm8JAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+wAAAABCQACWQAAAAEFAAAADGFzc2V0QWRkcmVzcwkAASwAAAACAgAAABhDYW5ub3QgZmluZCBhc3NldCBieSBpZCAFAAAADGFzc2V0QWRkcmVzcwQAAAAadG90YWxVU0ROQmFsYW5jZU9uQ29udHJhY3QJAAPwAAAAAgUAAAAEdGhpcwUAAAAPbmV1dHJpbm9Bc3NldElkBAAAABx0b3RhbEFtb3VudEluUG9vbEJ5UG9vbE1ha2VyCQEAAAAfZ2V0UG9vbE1ha2VyUGFydGljaXBhdGlvbkFtb3VudAAAAAIFAAAADGFzc2V0QWRkcmVzcwUAAAANY2FsbGVyQWRkcmVzcwQAAAAXbG9ja2VkQW1vdW50QnlQb29sTWFrZXIJAQAAABhnZXRQb29sTWFrZXJMb2NrZWRBbW91bnQAAAACBQAAAAxhc3NldEFkZHJlc3MFAAAADWNhbGxlckFkZHJlc3MEAAAAEW1pbldpdGhkcmF3SGVpZ2h0CQEAAAAYZ2V0UG9vbE1ha2VyVW5sb2NrSGVpZ2h0AAAAAgUAAAAMYXNzZXRBZGRyZXNzBQAAAA1jYWxsZXJBZGRyZXNzBAAAABNwb29sTWFrZXRQcm9wb3J0aW9uCQAAaQAAAAIJAQAAABVnZXRBc3NldE1heFBvb2xBbW91bnQAAAABBQAAAAxhc3NldEFkZHJlc3MJAQAAACJnZXRQb29sTWFrZXJQYXJ0aWNpcGF0aW9uTWF4QW1vdW50AAAAAgUAAAAMYXNzZXRBZGRyZXNzBQAAAA1jYWxsZXJBZGRyZXNzAwkBAAAAAiE9AAAAAgkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAADmFkbWluUHVibGljS2V5CQAAAgAAAAECAAAAKk9ubHkgQWRtaW4gY2FuIHBlcmZvcm0gY29udHJhY3Qgb3BlcmF0aW9uLgMJAAAAAAAAAgkBAAAADGdldEJvb2xCeUtleQAAAAEFAAAAEGlzSW5pdGlhbGl6ZWRLZXkHCQAAAgAAAAECAAAAGkNvbnRyYWN0IGlzIG5vdCB5ZXQgcmVhZHkuAwkAAAAAAAACCQEAAAAMZ2V0Qm9vbEJ5S2V5AAAAAQUAAAAQaXNJbml0aWFsaXplZEtleQcJAAACAAAAAQIAAAAaQ29udHJhY3QgaXMgbm90IHlldCByZWFkeS4DCQAAAAAAAAIFAAAADGFzc2V0QWRkcmVzcwIAAAAACQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABJDYW5ub3QgZmluZCBhc3NldCAFAAAACWFzc2V0Q29kZQIAAAABLgMJAAAAAAAAAgUAAAAcdG90YWxBbW91bnRJblBvb2xCeVBvb2xNYWtlcgAAAAAAAAAAAAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAiQ2Fubm90IGZpbmQgcG9vbCBtYWtlciBieSBhZGRyZXNzIAUAAAANY2FsbGVyQWRkcmVzcwIAAAAVIG9yIG5vIGxvY2tlZCBhbW91bnQuAwkAAGYAAAACBQAAAAZoZWlnaHQFAAAAEW1pbldpdGhkcmF3SGVpZ2h0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAxQbGVhc2Ugd2FpdCAJAAGkAAAAAQUAAAARbWluV2l0aGRyYXdIZWlnaHQCAAAAESBiZWZvcmUgd2l0aGRyYXcuBAAAAA1hc3NldEVtaXNzaW9uCAUAAAASc3ludGhldGljQXNzZXRJbmZvAAAACHF1YW50aXR5BAAAAAxjdXJyZW50UHJpY2UJAQAAAA1nZXRBc3NldFByaWNlAAAAAQUAAAAScHJpY2VPcmFjbGVBZGRyZXNzBAAAABVwb29sTWFrZXJMb2NrZWRBbW91bnQJAQAAABhnZXRQb29sTWFrZXJMb2NrZWRBbW91bnQAAAACBQAAAAxhc3NldEFkZHJlc3MFAAAADWNhbGxlckFkZHJlc3MEAAAAG3ByaWNlV2l0aE92ZXJjb2xsYXRlcmFsUmF0ZQkAAGgAAAACCQEAAAAdZ2V0QXNzZXRPdmVyQ29sbGF0ZXJhbFBlcmNlbnQAAAABBQAAABZhc3NldENvbmZpZ3VyYXRpb25MaXN0BQAAAAxjdXJyZW50UHJpY2UEAAAAGXVzZG5OZWVkZWRUb0NvdmVyRW1pc3Npb24JAABoAAAAAgUAAAAbcHJpY2VXaXRoT3ZlcmNvbGxhdGVyYWxSYXRlBQAAAA1hc3NldEVtaXNzaW9uAwkAAGYAAAACBQAAABp0b3RhbFVTRE5CYWxhbmNlT25Db250cmFjdAUAAAAZdXNkbk5lZWRlZFRvQ292ZXJFbWlzc2lvbgQAAAAcYW1vdXRBdmFpbGFibGVUb0V4aXRGcm9tUG9vbAkAAGUAAAACBQAAABp0b3RhbFVTRE5CYWxhbmNlT25Db250cmFjdAUAAAAZdXNkbk5lZWRlZFRvQ292ZXJFbWlzc2lvbgQAAAARYW1vdW50Rm9yV2l0aGRyYXcJAABoAAAAAgUAAAATcG9vbE1ha2V0UHJvcG9ydGlvbgUAAAAcYW1vdXRBdmFpbGFibGVUb0V4aXRGcm9tUG9vbAQAAAARZmluYWxMb2NrZWRBbW91bnQJAABlAAAAAgkBAAAAGGdldFBvb2xNYWtlckxvY2tlZEFtb3VudAAAAAIFAAAADGFzc2V0QWRkcmVzcwUAAAANY2FsbGVyQWRkcmVzcwUAAAARYW1vdW50Rm9yV2l0aGRyYXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAB1nZXRBc3NldEN1cnJyZW50UG9vbEFtb3VudEtleQAAAAEFAAAADGFzc2V0QWRkcmVzcwkAAGUAAAACCQEAAAAZZ2V0QXNzZXRDdXJyZW50UG9vbEFtb3VudAAAAAEFAAAADGFzc2V0QWRkcmVzcwUAAAARYW1vdW50Rm9yV2l0aGRyYXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAACJnZXRQb29sTWFrZXJQYXJ0aWNpcGF0aW9uQW1vdW50S2V5AAAAAgUAAAAMYXNzZXRBZGRyZXNzBQAAAA1jYWxsZXJBZGRyZXNzCQAAZQAAAAIJAQAAAB9nZXRQb29sTWFrZXJQYXJ0aWNpcGF0aW9uQW1vdW50AAAAAgUAAAAMYXNzZXRBZGRyZXNzBQAAAA1jYWxsZXJBZGRyZXNzBQAAABFhbW91bnRGb3JXaXRoZHJhdwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAG2dldFBvb2xNYWtlckxvY2tlZEFtb3VudEtleQAAAAIFAAAADGFzc2V0QWRkcmVzcwUAAAANY2FsbGVyQWRkcmVzcwUAAAARZmluYWxMb2NrZWRBbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAANY2FsbGVyQWRkcmVzcwUAAAARYW1vdW50Rm9yV2l0aGRyYXcFAAAAD25ldXRyaW5vQXNzZXRJZAUAAAADbmlsBQAAAANuaWwAAAAAZRTZUw==", "chainId": 84, "height": 1188749, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 4 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | func a (b,c) = split(b, c) | |
5 | + | ||
6 | + | ||
7 | + | func d (e,f) = valueOrElse(getString(e, f), "") | |
8 | + | ||
9 | + | ||
10 | + | func g (f) = valueOrElse(getBoolean(this, f), false) | |
11 | + | ||
12 | + | ||
13 | + | let h = 1 | |
14 | + | ||
15 | + | let i = 2 | |
16 | + | ||
17 | + | let j = 3 | |
18 | + | ||
19 | + | let k = 4 | |
20 | + | ||
21 | + | let l = 5 | |
22 | + | ||
23 | + | let m = 6 | |
24 | + | ||
25 | + | let n = 7 | |
26 | + | ||
27 | + | let o = 8 | |
28 | + | ||
29 | + | let p = 9 | |
30 | + | ||
31 | + | let q = 10 | |
32 | + | ||
33 | + | let r = 11 | |
34 | + | ||
35 | + | let s = 12 | |
36 | + | ||
37 | + | let t = 13 | |
38 | + | ||
39 | + | let u = 14 | |
40 | + | ||
41 | + | let v = 15 | |
42 | + | ||
43 | + | let w = "__" | |
44 | + | ||
45 | + | let x = "commonConfig" | |
46 | + | ||
47 | + | let y = "46ZgXGiGQBP1KCut5RdowrcrCXiZKWdfXv96UeDDvduu" | |
48 | + | ||
49 | + | let z = "%s%s__commonConfig__neutrinoContractAddress" | |
50 | + | ||
51 | + | let A = "%s%s__commonConfig__minimumPoolFundingAmount" | |
52 | + | ||
53 | + | let B = "%s%s__commonConfig__initialized" | |
54 | + | ||
55 | + | let C = "%s%s__commonConfig__predefinedAssetsActiveIndex" | |
56 | + | ||
57 | + | let D = "%s%s__commonConfig__predefinedAssetsList" | |
58 | + | ||
59 | + | let E = "%s%s__commonConfig__debtAssetId" | |
60 | + | ||
61 | + | let F = "neutrino_asset_id" | |
62 | + | ||
63 | + | let G = "bond_asset_id" | |
64 | + | ||
65 | + | let H = "%s__defoAssetId" | |
66 | + | ||
67 | + | let I = "assetPrice" | |
68 | + | ||
69 | + | let J = "%s__assetScriptTxId" | |
70 | + | ||
71 | + | func K (L) = (("%s%s%s__defoAsset__" + L) + "__config") | |
72 | + | ||
73 | + | ||
74 | + | func M (L) = (("%s%s%s__defoAsset__" + L) + "__initHeight") | |
75 | + | ||
76 | + | ||
77 | + | func N (L) = (("%s%s%s__defoAsset__" + L) + "__activateHeight") | |
78 | + | ||
79 | + | ||
80 | + | func O (L) = (("%s%s%s__defoAsset__" + L) + "__currentPool") | |
81 | + | ||
82 | + | ||
83 | + | func P (L) = (("%s%s%s__defoAsset__" + L) + "__maxPool") | |
84 | + | ||
85 | + | ||
86 | + | func Q (L) = (("%s%s%s__defoAsset__" + L) + "__meta") | |
87 | + | ||
88 | + | ||
89 | + | func R (S) = (("%s%s%s__defoAsset__" + S) + "__addressByAssetCode") | |
90 | + | ||
91 | + | ||
92 | + | func T (U) = (("%s%s%s__defoAsset__" + U) + "__addressByAssetId") | |
93 | + | ||
94 | + | ||
95 | + | func V (L,W) = (((((((("%s%s%s%s" + w) + "pool") + w) + L) + w) + W) + w) + "amount") | |
96 | + | ||
97 | + | ||
98 | + | func X (L,W) = (((((((("%s%s%s%s" + w) + "pool") + w) + L) + w) + W) + w) + "maxAmount") | |
99 | + | ||
100 | + | ||
101 | + | func Y (L,W) = (((((((("%s%s%s%s" + w) + "pool") + w) + L) + w) + W) + w) + "lockedAmount") | |
102 | + | ||
103 | + | ||
104 | + | func Z (L,W) = (((((((("%s%s%s%s" + w) + "pool") + w) + L) + w) + W) + w) + "unlockHeight") | |
105 | + | ||
106 | + | ||
107 | + | func aa (L) = a(valueOrErrorMessage(d(this, K(L)), (("No DEFO Asset " + L) + "config present")), w) | |
108 | + | ||
109 | + | ||
110 | + | let ab = addressFromStringValue(valueOrErrorMessage(getString(this, z), "No neutrino contract specified.")) | |
111 | + | ||
112 | + | let ac = fromBase58String("9EqbbM88u42Lbr5QBes9vwBK33BzjYh5oTq1u9sLjCu1") | |
113 | + | ||
114 | + | let ad = fromBase58String(valueOrErrorMessage(getString(ab, G), "No NSBT asset id found")) | |
115 | + | ||
116 | + | let ae = valueOrErrorMessage(getInteger(this, A), "Minimum pool funding amount is not specified.") | |
117 | + | ||
118 | + | let af = $Tuple3("PROPOSED", "READY", "ISSUED") | |
119 | + | ||
120 | + | let ag = valueOrErrorMessage(getString(this, D), "No pool of predeployed asset contracts found.") | |
121 | + | ||
122 | + | let ah = a(ag, ",") | |
123 | + | ||
124 | + | let ai = valueOrElse(getInteger(this, C), 0) | |
125 | + | ||
126 | + | let aj = fromBase58String(valueOrErrorMessage(getString(this, E), "No debt token found")) | |
127 | + | ||
128 | + | let ak = 1000000 | |
129 | + | ||
130 | + | let al = (10000000 * ak) | |
131 | + | ||
132 | + | func am (an) = valueOrElse(getString(this, R(an)), "") | |
133 | + | ||
134 | + | ||
135 | + | func ao (ap) = ap[h] | |
136 | + | ||
137 | + | ||
138 | + | func aq (ap) = ap[i] | |
139 | + | ||
140 | + | ||
141 | + | func ar (ap) = ap[j] | |
142 | + | ||
143 | + | ||
144 | + | func as (ap) = parseIntValue(ap[k]) | |
145 | + | ||
146 | + | ||
147 | + | func at (ap) = ap[l] | |
148 | + | ||
149 | + | ||
150 | + | func au (ap) = parseIntValue(ap[m]) | |
151 | + | ||
152 | + | ||
153 | + | func av (ap) = parseIntValue(ap[n]) | |
154 | + | ||
155 | + | ||
156 | + | func aw (ap) = ap[o] | |
157 | + | ||
158 | + | ||
159 | + | func ax (ap) = parseIntValue(ap[p]) | |
160 | + | ||
161 | + | ||
162 | + | func ay (ap) = parseIntValue(ap[q]) | |
163 | + | ||
164 | + | ||
165 | + | func az (ap) = parseIntValue(ap[r]) | |
166 | + | ||
167 | + | ||
168 | + | func aA (ap) = parseIntValue(ap[s]) | |
169 | + | ||
170 | + | ||
171 | + | func aB (ap) = parseIntValue(ap[t]) | |
172 | + | ||
173 | + | ||
174 | + | func aC (ap) = parseIntValue(ap[u]) | |
175 | + | ||
176 | + | ||
177 | + | func aD (ap) = parseIntValue(ap[v]) | |
178 | + | ||
179 | + | ||
180 | + | func aE (L) = valueOrElse(getInteger(this, M(L)), 0) | |
181 | + | ||
182 | + | ||
183 | + | func aF (L) = valueOrElse(getInteger(this, N(L)), 0) | |
184 | + | ||
185 | + | ||
186 | + | func aG (L) = valueOrElse(getInteger(this, O(L)), 0) | |
187 | + | ||
188 | + | ||
189 | + | func aH (L) = valueOrElse(getInteger(this, P(L)), 0) | |
190 | + | ||
191 | + | ||
192 | + | func aI (L) = valueOrElse(getString(this, Q(L)), "") | |
193 | + | ||
194 | + | ||
195 | + | func aJ (L,W) = valueOrElse(getInteger(this, V(L, W)), 0) | |
196 | + | ||
197 | + | ||
198 | + | func aK (L,W) = valueOrElse(getInteger(this, X(L, W)), 0) | |
199 | + | ||
200 | + | ||
201 | + | func aL (L,W) = valueOrElse(getInteger(this, Y(L, W)), 0) | |
202 | + | ||
203 | + | ||
204 | + | func aM (L,W) = valueOrElse(getInteger(this, Z(L, W)), 0) | |
205 | + | ||
206 | + | ||
207 | + | func aN (aO) = valueOrErrorMessage(getInteger(aO, I), "No Asset price found") | |
208 | + | ||
209 | + | ||
210 | + | func aP (S,U,af,aQ,aR,aS,aT,aO,aU,aV,aW,aX,aY,aZ,ba) = (((((((((((((((((((((((((((((("%s%s%s%d%s%d%d%s%d%d%d%d%d%d%d" + w) + S) + w) + U) + w) + af) + w) + toString(aQ)) + w) + aR) + w) + toString(aS)) + w) + toString(aT)) + w) + aO) + w) + toString(aU)) + w) + toString(aV)) + w) + toString(aW)) + w) + toString(aX)) + w) + toString(aY)) + w) + toString(aZ)) + w) + toString(ba)) | |
211 | + | ||
212 | + | ||
213 | + | @Callable(bb) | |
214 | + | func init (bc,bd,be,ai) = if ((toBase58String(bb.callerPublicKey) != y)) | |
215 | + | then throw("Only Admin can perform contract operation.") | |
216 | + | else if ((g(B) == true)) | |
217 | + | then throw("Contract was already initialized.") | |
218 | + | else { | |
219 | + | let bf = Issue("DEFO_DEBT", "DEFO Debt Token.", 1, 6, true) | |
220 | + | let bg = calculateAssetId(bf) | |
221 | + | [StringEntry(z, bc), IntegerEntry(A, bd), StringEntry(D, be), IntegerEntry(C, ai), StringEntry(E, toBase58String(bg)), BooleanEntry(B, true), bf, Burn(bg, 1)] | |
222 | + | } | |
223 | + | ||
224 | + | ||
225 | + | ||
226 | + | @Callable(bb) | |
227 | + | func proposeAsset (S,bh,aT,aO,aS,aR,aQ,aU,aV,aW,aX,aY,aZ,ba) = if ((toBase58String(bb.callerPublicKey) != y)) | |
228 | + | then throw("Only Admin can perform contract operation.") | |
229 | + | else if ((g(B) == false)) | |
230 | + | then throw("Contract is not yet ready.") | |
231 | + | else if ((fromBase58String(aR) != ac)) | |
232 | + | then throw("Baking asset id could be USDN only.") | |
233 | + | else if ((am(S) != "")) | |
234 | + | then throw((("Asset with passed code " + S) + " has already been proposed.")) | |
235 | + | else if ((ae > aT)) | |
236 | + | then throw(("Minimum pool amount should be greater or equals to " + toString(ae))) | |
237 | + | else if (if (if (if (if (if (if (if ((0 > aS)) | |
238 | + | then true | |
239 | + | else (aQ != 1000000)) | |
240 | + | then true | |
241 | + | else (0 > aU)) | |
242 | + | then true | |
243 | + | else (0 > aV)) | |
244 | + | then true | |
245 | + | else (0 > aW)) | |
246 | + | then true | |
247 | + | else (0 > aX)) | |
248 | + | then true | |
249 | + | else (0 > aY)) | |
250 | + | then true | |
251 | + | else (0 > aZ)) | |
252 | + | then throw("One of the passed parameters is invalid.") | |
253 | + | else { | |
254 | + | let bi = valueOrErrorMessage(addressFromStringValue(aO), "Passed Price Oracle Address is not valid.") | |
255 | + | let L = ah[ai] | |
256 | + | let bj = valueOrErrorMessage(getString(valueOrErrorMessage(addressFromString(L), ""), H), "No defo asset ID found.") | |
257 | + | [StringEntry(K(L), aP(S, bj, af._1, aQ, aR, aS, aT, aO, aU, aV, aW, aX, aY, aZ, ba)), StringEntry(R(S), L), StringEntry(Q(L), bh), IntegerEntry(M(L), height), IntegerEntry(C, (ai + 1)), StringEntry(T(bj), L)] | |
258 | + | } | |
259 | + | ||
260 | + | ||
261 | + | ||
262 | + | @Callable(bb) | |
263 | + | func fundLiquidityPool (S) = { | |
264 | + | let L = am(S) | |
265 | + | let bk = aa(L) | |
266 | + | let bl = value(bb.payments[0]) | |
267 | + | if ((toBase58String(bb.callerPublicKey) != y)) | |
268 | + | then throw("Only Admin can perform contract operation.") | |
269 | + | else if ((g(B) == false)) | |
270 | + | then throw("Contract is not yet ready.") | |
271 | + | else if ((bl.assetId != ac)) | |
272 | + | then throw("Liquidity pool could be funded with USDN only.") | |
273 | + | else if ((bl.amount == 0)) | |
274 | + | then throw("Incorrect attached payment amount.") | |
275 | + | else if ((L == "")) | |
276 | + | then throw((("Cannot find liquidity pool for asset " + S) + ".")) | |
277 | + | else { | |
278 | + | let bm = (bl.amount + aG(L)) | |
279 | + | let bn = aH(L) | |
280 | + | let bo = aJ(L, toString(bb.caller)) | |
281 | + | let bp = aK(L, toString(bb.caller)) | |
282 | + | let bq = ar(bk) | |
283 | + | let br = if (if ((bm >= av(bk))) | |
284 | + | then (bq == af._1) | |
285 | + | else false) | |
286 | + | then af._2 | |
287 | + | else bq | |
288 | + | let bs = ao(bk) | |
289 | + | let bt = aq(bk) | |
290 | + | let bu = as(bk) | |
291 | + | let bv = at(bk) | |
292 | + | let bw = au(bk) | |
293 | + | let bx = av(bk) | |
294 | + | let by = aw(bk) | |
295 | + | let bz = ax(bk) | |
296 | + | let bA = ay(bk) | |
297 | + | let bB = az(bk) | |
298 | + | let bC = aA(bk) | |
299 | + | let bD = aB(bk) | |
300 | + | let bE = aC(bk) | |
301 | + | let bF = aD(bk) | |
302 | + | let bG = (bo + bb.payments[0].amount) | |
303 | + | let bH = [IntegerEntry(V(L, toString(bb.caller)), bG), IntegerEntry(X(L, toString(bb.caller)), if ((bG > bp)) | |
304 | + | then bG | |
305 | + | else bp), IntegerEntry(O(L), bm), IntegerEntry(P(L), if ((bm > bn)) | |
306 | + | then bm | |
307 | + | else bn), DeleteEntry(K(L)), StringEntry(K(L), aP(bs, bt, br, bu, bv, bw, bx, by, bz, bA, bB, bC, bD, bE, bF))] | |
308 | + | if ((bq == af._3)) | |
309 | + | then (bH :+ ScriptTransfer(addressFromStringValue(L), bl.amount, ac)) | |
310 | + | else bH | |
311 | + | } | |
312 | + | } | |
313 | + | ||
314 | + | ||
315 | + | ||
316 | + | @Callable(bb) | |
317 | + | func activateAsset (S) = { | |
318 | + | let L = am(S) | |
319 | + | let bk = aa(L) | |
320 | + | let bI = aG(L) | |
321 | + | let bs = ao(bk) | |
322 | + | let bJ = ar(bk) | |
323 | + | let bt = aq(bk) | |
324 | + | let bu = as(bk) | |
325 | + | let bv = at(bk) | |
326 | + | let bw = au(bk) | |
327 | + | let bx = av(bk) | |
328 | + | let by = aw(bk) | |
329 | + | let bz = ax(bk) | |
330 | + | let bA = ay(bk) | |
331 | + | let bB = az(bk) | |
332 | + | let bC = aA(bk) | |
333 | + | let bD = aB(bk) | |
334 | + | let bE = aC(bk) | |
335 | + | let bF = aD(bk) | |
336 | + | if ((toBase58String(bb.callerPublicKey) != y)) | |
337 | + | then throw("Only Admin can perform contract operation.") | |
338 | + | else if ((g(B) == false)) | |
339 | + | then throw("Contract is not yet ready.") | |
340 | + | else if ((bJ != af._2)) | |
341 | + | then throw((("Asset is not in READY status. Current status is " + bJ) + ".")) | |
342 | + | else if ((L == "")) | |
343 | + | then throw((("Cannot find asset " + S) + ".")) | |
344 | + | else if ((ae > bI)) | |
345 | + | then throw((((("Cannot issue asset as liquidity pool amount (" + toString(bI)) + ") is less than required (") + toString(ae)) + ")")) | |
346 | + | else { | |
347 | + | let bf = Reissue(aj, al, true) | |
348 | + | [IntegerEntry(N(L), height), DeleteEntry(K(L)), StringEntry(K(L), aP(bs, bt, af._3, bu, bv, bw, bx, by, bz, bA, bB, bC, bD, bE, bF)), bf, ScriptTransfer(addressFromStringValue(L), bI, ac), ScriptTransfer(addressFromStringValue(L), al, aj)] | |
349 | + | } | |
350 | + | } | |
351 | + | ||
352 | + | ||
353 | + | ||
354 | + | @Callable(bb) | |
355 | + | func redeemFromPool (S,bK) = { | |
356 | + | let L = am(S) | |
357 | + | let bk = aa(L) | |
358 | + | let bL = toString(bb.caller) | |
359 | + | let bM = aJ(L, bL) | |
360 | + | let bN = aL(L, bL) | |
361 | + | if ((toBase58String(bb.callerPublicKey) != y)) | |
362 | + | then throw("Only Admin can perform contract operation.") | |
363 | + | else if ((g(B) == false)) | |
364 | + | then throw("Contract is not yet ready.") | |
365 | + | else if ((L == "")) | |
366 | + | then throw((("Cannot find asset " + S) + ".")) | |
367 | + | else if (if (if ((0 > bK)) | |
368 | + | then true | |
369 | + | else (bM == 0)) | |
370 | + | then true | |
371 | + | else (bK > bM)) | |
372 | + | then throw((("Cannot find pool maker by address " + bL) + " or amount passed is not correct.")) | |
373 | + | else if ((bN > 0)) | |
374 | + | then throw("Pool maker already has initiated redemption that is not withdrawn yet.") | |
375 | + | else [IntegerEntry(Y(L, bL), bK), IntegerEntry(Z(L, bL), (height + aD(bk)))] | |
376 | + | } | |
377 | + | ||
378 | + | ||
379 | + | ||
380 | + | @Callable(bb) | |
381 | + | func withdraw (S) = { | |
382 | + | let bk = aa(S) | |
383 | + | let L = am(S) | |
384 | + | let aO = addressFromStringValue(aw(bk)) | |
385 | + | let bL = toString(bb.caller) | |
386 | + | let bO = valueOrErrorMessage(assetInfo(fromBase58String(L)), ("Cannot find asset by id " + L)) | |
387 | + | let bP = assetBalance(this, ac) | |
388 | + | let bQ = aJ(L, bL) | |
389 | + | let bN = aL(L, bL) | |
390 | + | let bR = aM(L, bL) | |
391 | + | let bS = (aH(L) / aK(L, bL)) | |
392 | + | if ((toBase58String(bb.callerPublicKey) != y)) | |
393 | + | then throw("Only Admin can perform contract operation.") | |
394 | + | else if ((g(B) == false)) | |
395 | + | then throw("Contract is not yet ready.") | |
396 | + | else if ((g(B) == false)) | |
397 | + | then throw("Contract is not yet ready.") | |
398 | + | else if ((L == "")) | |
399 | + | then throw((("Cannot find asset " + S) + ".")) | |
400 | + | else if ((bQ == 0)) | |
401 | + | then throw((("Cannot find pool maker by address " + bL) + " or no locked amount.")) | |
402 | + | else if ((height > bR)) | |
403 | + | then throw((("Please wait " + toString(bR)) + " before withdraw.")) | |
404 | + | else { | |
405 | + | let bT = bO.quantity | |
406 | + | let bU = aN(aO) | |
407 | + | let bV = aL(L, bL) | |
408 | + | let bW = (au(bk) * bU) | |
409 | + | let bX = (bW * bT) | |
410 | + | if ((bP > bX)) | |
411 | + | then { | |
412 | + | let bY = (bP - bX) | |
413 | + | let bZ = (bS * bY) | |
414 | + | let ca = (aL(L, bL) - bZ) | |
415 | + | [IntegerEntry(O(L), (aG(L) - bZ)), IntegerEntry(V(L, bL), (aJ(L, bL) - bZ)), IntegerEntry(Y(L, bL), ca), ScriptTransfer(addressFromStringValue(bL), bZ, ac)] | |
416 | + | } | |
417 | + | else nil | |
418 | + | } | |
419 | + | } | |
420 | + | ||
421 | + |
github/deemru/w8io/169f3d6 34.39 ms ◑![]()