tx · Ett3CzuSdV8y2dSp8fJyKVidTN7t2eZvwY1BHrFYU34Y

3N1BKdSVtmP6d9GWNyEoZb6rHm6Qk74ukQz:  -0.05000000 Waves

2021.08.23 20:35 [1671279] smart account 3N1BKdSVtmP6d9GWNyEoZb6rHm6Qk74ukQz > SELF 0.00000000 Waves

{ "type": 13, "id": "Ett3CzuSdV8y2dSp8fJyKVidTN7t2eZvwY1BHrFYU34Y", "fee": 5000000, "feeAssetId": null, "timestamp": 1629740114292, "version": 2, "chainId": 84, "sender": "3N1BKdSVtmP6d9GWNyEoZb6rHm6Qk74ukQz", "senderPublicKey": "DCvjxX4SrVaJwLFS68vJGsd3M2FpbajxNVYCpSbpKth7", "proofs": [ "3z9ucq7CJFgwLiG4sJ1sUExGny8qYgbPiueTEzmkUPZdBZTpxWR7RuL2ESGWoHXudTQJWRhtRxV3oBKJGYxfDzmo" ], "script": "base64:AAIFAAAAAAAAABIIAhIDCgEBEgASBwoFCAgICAEAAAA5AAAAAApsUGRlY2ltYWxzAAAAAAAAAAAIAAAAABFkZWNpbWFsc011bHRQcmljZQkAAGgAAAACCQAAaAAAAAIAAAAAAAAAAGQAAAAAAAAAA+gAAAAAAAAAA+gAAAAAA1NFUAIAAAACX18AAAAAClBvb2xBY3RpdmUAAAAAAAAAAAEAAAAAD1Bvb2xQdXREaXNhYmxlZAAAAAAAAAAAAgAAAAATUG9vbE1hdGNoZXJEaXNhYmxlZAAAAAAAAAAAAwAAAAAMUG9vbFNodXRkb3duAAAAAAAAAAAEAAAAAAxidXlPcmRlclR5cGUAAAAAAAAAAAAAAAAADXNlbGxPcmRlclR5cGUAAAAAAAAAAAEAAAAAFGZhY3RvcnlBZGRyZXNzU3RyaW5nAgAAACw2cEprcndmV3loWmptM0xvUVdSampOVmFMdDVDUXpxZmdnelh5cXI3bnJ3QQAAAAAOaWR4UG9vbEFkZHJlc3MAAAAAAAAAAAEAAAAADWlkeFBvb2xTdGF0dXMAAAAAAAAAAAIAAAAAEGlkeFBvb2xMUEFzc2V0SWQAAAAAAAAAAAMAAAAAEGlkeEFtb3VudEFzc2V0SWQAAAAAAAAAAAQAAAAAD2lkeFByaWNlQXNzZXRJZAAAAAAAAAAABQAAAAAWaWR4QW1vdW50QXNzZXREZWNpbWFscwAAAAAAAAAABgAAAAAVaWR4UHJpY2VBc3NldERlY2ltYWxzAAAAAAAAAAAHAAAAABhpZHhBbW91bnRBc3NldEludGVybmFsSWQAAAAAAAAAAAgAAAAAF2lkeFByaWNlQXNzZXRJbnRlcm5hbElkAAAAAAAAAAAJAAAAAA1pZHhQb29sV2VpZ2h0AAAAAAAAAAAKAAAAABJpZHhMUEFzc2V0RGVjaW1hbHMAAAAAAAAAAAsAAAAAE2lkeE1hdGNoZXJQdWJsaWNLZXkAAAAAAAAAAAwAAAAAI2lkbWF4QWxsb3dlZE9yZGVyUHJpY2VEaWZmZXJlbmNlUGN0AAAAAAAAAAANAAAAABVpZHhQb29sQW1vdW50QXNzZXRBbXQAAAAAAAAAAAEAAAAAFGlkeFBvb2xQcmljZUFzc2V0QW10AAAAAAAAAAACAAAAABFpZHhQb29sTFBBc3NldEFtdAAAAAAAAAAAAwEAAAAMa2V5UHJpY2VMYXN0AAAAAAIAAAARJXMlc19fcHJpY2VfX2xhc3QBAAAAD2tleVByaWNlSGlzdG9yeQAAAAIAAAABaAAAAAl0aW1lc3RhbXAJAAS5AAAAAgkABEwAAAACAgAAABglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAARMAAAAAgkAAaQAAAABBQAAAAFoCQAETAAAAAIJAAGkAAAAAQUAAAAJdGltZXN0YW1wBQAAAANuaWwFAAAAA1NFUAEAAAAQa2V5UG9vbExpcXVpZGl0eQAAAAIAAAATaW50ZXJuYWxBbW91bnRBc3NldAAAABJpbnRlcm5hbFByaWNlQXNzZXQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIJWQlZCVzX18FAAAAE2ludGVybmFsQW1vdW50QXNzZXQCAAAAAl9fBQAAABJpbnRlcm5hbFByaWNlQXNzZXQCAAAACF9fbG9ja2VkAQAAABZrZXlQb29sTGlxdWlkaXR5QnlVc2VyAAAAAwAAABNpbnRlcm5hbEFtb3VudEFzc2V0AAAAEmludGVybmFsUHJpY2VBc3NldAAAAAt1c2VyQWRkcmVzcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAKJWQlZCVzJXNfXwUAAAATaW50ZXJuYWxBbW91bnRBc3NldAIAAAACX18FAAAAEmludGVybmFsUHJpY2VBc3NldAIAAAACX18FAAAAC3VzZXJBZGRyZXNzAgAAAAhfX2xvY2tlZAEAAAASa2V5UHV0QWN0aW9uQnlVc2VyAAAAAgAAAAt1c2VyQWRkcmVzcwAAAAR0eElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAslcyVzJXNfX1BfXwUAAAALdXNlckFkZHJlc3MCAAAAAl9fBQAAAAR0eElkAQAAABJrZXlHZXRBY3Rpb25CeVVzZXIAAAACAAAAC3VzZXJBZGRyZXNzAAAABHR4SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACyVzJXMlc19fR19fBQAAAAt1c2VyQWRkcmVzcwIAAAACX18FAAAABHR4SWQBAAAADmtleUFtb3VudEFzc2V0AAAAAAIAAAAOJXNfYW1vdW50QXNzZXQBAAAADWtleVByaWNlQXNzZXQAAAAAAgAAAA0lc19wcmljZUFzc2V0AQAAAClrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwAAAAEAAAATcG9vbENvbnRyYWN0QWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAACCVzJXMlc19fBQAAABNwb29sQ29udHJhY3RBZGRyZXNzAgAAACBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAEAAAANa2V5UG9vbENvbmZpZwAAAAIAAAATYW1vdW50QXNzZXRJbnRlcm5hbAAAABJwcmljZUFzc2V0SW50ZXJuYWwJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIJWQlZCVzX18FAAAAE2Ftb3VudEFzc2V0SW50ZXJuYWwCAAAAAl9fBQAAABJwcmljZUFzc2V0SW50ZXJuYWwCAAAACF9fY29uZmlnAQAAAB9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAAAAAQAAAAxiYXNlQXNzZXRTdHIJAAEsAAAAAgIAAAAoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUAAAAMYmFzZUFzc2V0U3RyAQAAABNrZXlBbGxQb29sc1NodXRkb3duAAAAAAIAAAAMJXNfX3NodXRkb3duAQAAABBpc0dsb2JhbFNodXRkb3duAAAAAAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBsAAAACCQEAAAAFdmFsdWUAAAABCQAEJgAAAAEFAAAAFGZhY3RvcnlBZGRyZXNzU3RyaW5nCQEAAAATa2V5QWxsUG9vbHNTaHV0ZG93bgAAAAAHAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAAPcG9vbEFtb3VudEFzc2V0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQiAAAAAQkBAAAADmtleUFtb3VudEFzc2V0AAAAAAIAAAAgTm8gY29uZmlnIGZvciBhbW91bnQgYXNzZXQgZm91bmQEAAAADnBvb2xQcmljZUFzc2V0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQiAAAAAQkBAAAADWtleVByaWNlQXNzZXQAAAAAAgAAAB9ObyBjb25maWcgZm9yIHByaWNlIGFzc2V0IGZvdW5kBAAAABdwb29sQW1vdW50QXNzZXRJbnRlcm5hbAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQUAAAAUZmFjdG9yeUFkZHJlc3NTdHJpbmcJAQAAAB9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAAAAAQUAAAAPcG9vbEFtb3VudEFzc2V0AgAAAClObyBjb25maWcgZm9yIGludGVybmFsIGFtb3VudCBhc3NldCBmb3VuZAQAAAAWcG9vbFByaWNlQXNzZXRJbnRlcm5hbAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQUAAAAUZmFjdG9yeUFkZHJlc3NTdHJpbmcJAQAAAB9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAAAAAQUAAAAOcG9vbFByaWNlQXNzZXQCAAAAKE5vIGNvbmZpZyBmb3IgaW50ZXJuYWwgcHJpY2UgYXNzZXQgZm91bmQJAAS1AAAAAgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAFGZhY3RvcnlBZGRyZXNzU3RyaW5nCQEAAAANa2V5UG9vbENvbmZpZwAAAAIFAAAAF3Bvb2xBbW91bnRBc3NldEludGVybmFsBQAAABZwb29sUHJpY2VBc3NldEludGVybmFsAgAAAChObyBmYWN0b3J5IGNvbmZpZyBmb3VuZCBmb3IgcG9vbCBhc3NldHMuBQAAAANTRVABAAAAEGdldFBvb2xMaXF1aWRpdHkAAAACAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAQAAAAZY3VycmVudFBvb2xMaXF1aWRpdHlWYWx1ZQkABCIAAAABCQEAAAAQa2V5UG9vbExpcXVpZGl0eQAAAAIFAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAUAAAAUcHJpY2VBc3NldEludGVybmFsSWQDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAABljdXJyZW50UG9vbExpcXVpZGl0eVZhbHVlCQAETAAAAAICAAAAAAkABEwAAAACAgAAAAEwCQAETAAAAAICAAAAATAJAARMAAAAAgIAAAABMAUAAAADbmlsCQAEtQAAAAIJAQAAAAV2YWx1ZQAAAAEFAAAAGWN1cnJlbnRQb29sTGlxdWlkaXR5VmFsdWUFAAAAA1NFUAEAAAAWZ2V0UG9vbExpcXVpZGl0eUJ5VXNlcgAAAAMAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkAAAAC3VzZXJBZGRyZXNzBAAAABljdXJyZW50UG9vbExpcXVpZGl0eVZhbHVlCQAEIgAAAAEJAQAAABZrZXlQb29sTGlxdWlkaXR5QnlVc2VyAAAAAwUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkBQAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAUAAAALdXNlckFkZHJlc3MDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAABljdXJyZW50UG9vbExpcXVpZGl0eVZhbHVlCQAETAAAAAICAAAAAAkABEwAAAACAgAAAAEwCQAETAAAAAICAAAAATAJAARMAAAAAgIAAAABMAkABEwAAAACAgAAAAEwBQAAAANuaWwJAAS1AAAAAgkBAAAABXZhbHVlAAAAAQUAAAAZY3VycmVudFBvb2xMaXF1aWRpdHlWYWx1ZQUAAAADU0VQAQAAABFkYXRhUG9vbExpcXVpZGl0eQAAAAMAAAARYW1vdW50QXNzZXRMb2NrZWQAAAAQcHJpY2VBc3NldExvY2tlZAAAAA1scFRva2VuTG9ja2VkCQAEuQAAAAIJAARMAAAAAgIAAAAGJWQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAARYW1vdW50QXNzZXRMb2NrZWQJAARMAAAAAgkAAaQAAAABBQAAABBwcmljZUFzc2V0TG9ja2VkCQAETAAAAAIJAAGkAAAAAQUAAAANbHBUb2tlbkxvY2tlZAUAAAADbmlsBQAAAANTRVABAAAAEWRhdGFQdXRBY3Rpb25JbmZvAAAACAAAABBpbkFtb3VudEFzc2V0QW10AAAAD2luUHJpY2VBc3NldEFtdAAAAAhvdXRMcEFtdAAAAAVwcmljZQAAAB1zbGlwcGFnZVRvbGVyYW5jZVBhc3NlZEJ5VXNlcgAAABVzbGlwcGFnZVRvbGVyYW5jZVJlYWwAAAAIdHhIZWlnaHQAAAALdHhUaW1lc3RhbXAJAAS5AAAAAgkABEwAAAACAgAAAA4lZCVkJWQlZCVkJWQlZAkABEwAAAACCQABpAAAAAEFAAAAEGluQW1vdW50QXNzZXRBbXQJAARMAAAAAgkAAaQAAAABBQAAAA9pblByaWNlQXNzZXRBbXQJAARMAAAAAgkAAaQAAAABBQAAAAhvdXRMcEFtdAkABEwAAAACCQABpAAAAAEFAAAABXByaWNlCQAETAAAAAIJAAGkAAAAAQUAAAAdc2xpcHBhZ2VUb2xlcmFuY2VQYXNzZWRCeVVzZXIJAARMAAAAAgkAAaQAAAABBQAAABVzbGlwcGFnZVRvbGVyYW5jZVJlYWwJAARMAAAAAgkAAaQAAAABBQAAAAh0eEhlaWdodAkABEwAAAACCQABpAAAAAEFAAAAC3R4VGltZXN0YW1wBQAAAANuaWwFAAAAA1NFUAEAAAARZGF0YUdldEFjdGlvbkluZm8AAAAGAAAAEW91dEFtb3VudEFzc2V0QW10AAAAEG91dFByaWNlQXNzZXRBbXQAAAAHaW5McEFtdAAAAAVwcmljZQAAAAh0eEhlaWdodAAAAAt0eFRpbWVzdGFtcAkABLkAAAACCQAETAAAAAICAAAADCVkJWQlZCVkJWQlZAkABEwAAAACCQABpAAAAAEFAAAAEW91dEFtb3VudEFzc2V0QW10CQAETAAAAAIJAAGkAAAAAQUAAAAQb3V0UHJpY2VBc3NldEFtdAkABEwAAAACCQABpAAAAAEFAAAAB2luTHBBbXQJAARMAAAAAgkAAaQAAAABBQAAAAVwcmljZQkABEwAAAACCQABpAAAAAEFAAAACHR4SGVpZ2h0CQAETAAAAAIJAAGkAAAAAQUAAAALdHhUaW1lc3RhbXAFAAAAA25pbAUAAAADU0VQAQAAABdkYXRhUG9vbExpcXVpZGl0eUJ5VXNlcgAAAAQAAAARYW1vdW50QXNzZXRMb2NrZWQAAAAQcHJpY2VBc3NldExvY2tlZAAAAA1scFRva2VuTG9ja2VkAAAAC3VzZXJBZGRyZXNzCQAEuQAAAAIJAARMAAAAAgIAAAAGJWQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAARYW1vdW50QXNzZXRMb2NrZWQJAARMAAAAAgkAAaQAAAABBQAAABBwcmljZUFzc2V0TG9ja2VkCQAETAAAAAIJAAGkAAAAAQUAAAANbHBUb2tlbkxvY2tlZAUAAAADbmlsBQAAAANTRVABAAAADWdldFNjcmlwdEhhc2gAAAAACQACWgAAAAEJAQAAAAV2YWx1ZQAAAAEJAAPxAAAAAQUAAAAEdGhpcwEAAAAccHJpdmF0ZUNhc3RBc3NldFRvTFBEZWNpbWFscwAAAAIAAAANYXNzZXREZWNpbWFscwAAAAthc3NldEFtb3VudAQAAAAMZGVjaW1hbHNNdWx0CQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAJAABlAAAAAgUAAAAKbFBkZWNpbWFscwUAAAANYXNzZXREZWNpbWFscwAAAAAAAAAAAAAAAAAAAAAAAAUAAAAERE9XTgkABRQAAAACCQAAaAAAAAIFAAAAC2Fzc2V0QW1vdW50BQAAAAxkZWNpbWFsc011bHQFAAAADGRlY2ltYWxzTXVsdAEAAAAgcHJpdmF0ZUNhc3RBc3NldFRvT3JpZ2luRGVjaW1hbHMAAAACAAAADWFzc2V0RGVjaW1hbHMAAAALYXNzZXRBbW91bnQEAAAADGRlY2ltYWxzTXVsdAkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAACQAAZQAAAAIFAAAACmxQZGVjaW1hbHMFAAAADWFzc2V0RGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAABERPV04JAAUUAAAAAgkAAGkAAAACBQAAAAthc3NldEFtb3VudAUAAAAMZGVjaW1hbHNNdWx0BQAAAAxkZWNpbWFsc011bHQBAAAAFXByaXZhdGVDYWxjdWxhdGVQcmljZQAAAAQAAAASYW1vdXRBc3NldERlY2ltYWxzAAAAEnByaWNlQXNzZXREZWNpbWFscwAAAA5hbW91bnRBc3NldEFtdAAAAA1wcmljZUFzc2V0QW10BAAAABhhbW91bnRBc3NldFBvb2xMb2NrZWRBbXQICQEAAAAccHJpdmF0ZUNhc3RBc3NldFRvTFBEZWNpbWFscwAAAAIFAAAAEmFtb3V0QXNzZXREZWNpbWFscwUAAAAOYW1vdW50QXNzZXRBbXQAAAACXzEEAAAAF3ByaWNlQXNzZXRQb29sTG9ja2VkQW10CAkBAAAAHHByaXZhdGVDYXN0QXNzZXRUb0xQRGVjaW1hbHMAAAACBQAAABJwcmljZUFzc2V0RGVjaW1hbHMFAAAADXByaWNlQXNzZXRBbXQAAAACXzEJAABrAAAAAwUAAAAXcHJpY2VBc3NldFBvb2xMb2NrZWRBbXQFAAAAEWRlY2ltYWxzTXVsdFByaWNlBQAAABhhbW91bnRBc3NldFBvb2xMb2NrZWRBbXQBAAAAGHByaXZhdGVHZXRQb29sU3RhdGlzdGljcwAAAAEAAAALdXNlckFkZHJlc3MEAAAAEnBvb2xDb25maWdEYXRhTGlzdAkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAAlscEFzc2V0SWQJAAJZAAAAAQkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAEGlkeFBvb2xMUEFzc2V0SWQEAAAADWFtb3VudEFzc2V0SWQJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABBpZHhBbW91bnRBc3NldElkBAAAAAxwcmljZUFzc2V0SWQJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAAA9pZHhQcmljZUFzc2V0SWQEAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAGGlkeEFtb3VudEFzc2V0SW50ZXJuYWxJZAQAAAAUcHJpY2VBc3NldEludGVybmFsSWQJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABdpZHhQcmljZUFzc2V0SW50ZXJuYWxJZAQAAAASYW1vdXRBc3NldERlY2ltYWxzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABZpZHhBbW91bnRBc3NldERlY2ltYWxzBAAAABJwcmljZUFzc2V0RGVjaW1hbHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAFWlkeFByaWNlQXNzZXREZWNpbWFscwQAAAAVcG9vbExpcXVpZGl0eURhdGFMaXN0CQEAAAAQZ2V0UG9vbExpcXVpZGl0eQAAAAIFAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAUAAAAUcHJpY2VBc3NldEludGVybmFsSWQEAAAAFnBvb2xBbW91bnRBc3NldEJhbGFuY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABVwb29sTGlxdWlkaXR5RGF0YUxpc3QFAAAAFWlkeFBvb2xBbW91bnRBc3NldEFtdAQAAAAVcG9vbFByaWNlQXNzZXRCYWxhbmNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAVcG9vbExpcXVpZGl0eURhdGFMaXN0BQAAABRpZHhQb29sUHJpY2VBc3NldEFtdAQAAAANcG9vbExQQmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAFXBvb2xMaXF1aWRpdHlEYXRhTGlzdAUAAAARaWR4UG9vbExQQXNzZXRBbXQEAAAAGGFtb3VudEFzc2V0UG9vbExvY2tlZEFtdAgJAQAAABxwcml2YXRlQ2FzdEFzc2V0VG9MUERlY2ltYWxzAAAAAgUAAAASYW1vdXRBc3NldERlY2ltYWxzBQAAABZwb29sQW1vdW50QXNzZXRCYWxhbmNlAAAAAl8xBAAAABdwcmljZUFzc2V0UG9vbExvY2tlZEFtdAgJAQAAABxwcml2YXRlQ2FzdEFzc2V0VG9MUERlY2ltYWxzAAAAAgUAAAAScHJpY2VBc3NldERlY2ltYWxzBQAAABVwb29sUHJpY2VBc3NldEJhbGFuY2UAAAACXzEEAAAAFGxwUHJpY2VJbkFtb3VudEFzc2V0CQAAawAAAAMFAAAAGGFtb3VudEFzc2V0UG9vbExvY2tlZEFtdAkAAGgAAAACAAAAAAAAAAABBQAAABFkZWNpbWFsc011bHRQcmljZQUAAAANcG9vbExQQmFsYW5jZQQAAAATbHBQcmljZUluUHJpY2VBc3NldAkAAGsAAAADBQAAABdwcmljZUFzc2V0UG9vbExvY2tlZEFtdAkAAGgAAAACAAAAAAAAAAABBQAAABFkZWNpbWFsc011bHRQcmljZQUAAAANcG9vbExQQmFsYW5jZQQAAAAMY3VycmVudFByaWNlCQEAAAAVcHJpdmF0ZUNhbGN1bGF0ZVByaWNlAAAABAUAAAASYW1vdXRBc3NldERlY2ltYWxzBQAAABJwcmljZUFzc2V0RGVjaW1hbHMFAAAAFnBvb2xBbW91bnRBc3NldEJhbGFuY2UFAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQkABEwAAAACBQAAABZwb29sQW1vdW50QXNzZXRCYWxhbmNlCQAETAAAAAIFAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQkABEwAAAACBQAAAA1wb29sTFBCYWxhbmNlCQAETAAAAAIFAAAADGN1cnJlbnRQcmljZQkABEwAAAACBQAAABRscFByaWNlSW5BbW91bnRBc3NldAkABEwAAAACBQAAABNscFByaWNlSW5QcmljZUFzc2V0BQAAAANuaWwBAAAAG3ByaXZhdGVFc3RpbWF0ZUdldE9wZXJhdGlvbgAAAAMAAAAQcGF5bWVudExwQXNzZXRJZAAAAA9wYXltZW50THBBbW91bnQAAAALdXNlckFkZHJlc3MEAAAADnBvb2xDb25maWdMaXN0CQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACWxwQXNzZXRJZAkAAZEAAAACBQAAAA5wb29sQ29uZmlnTGlzdAUAAAAQaWR4UG9vbExQQXNzZXRJZAQAAAANYW1vdW50QXNzZXRJZAkAAZEAAAACBQAAAA5wb29sQ29uZmlnTGlzdAUAAAAQaWR4QW1vdW50QXNzZXRJZAQAAAAMcHJpY2VBc3NldElkCQABkQAAAAIFAAAADnBvb2xDb25maWdMaXN0BQAAAA9pZHhQcmljZUFzc2V0SWQEAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAkAAZEAAAACBQAAAA5wb29sQ29uZmlnTGlzdAUAAAAYaWR4QW1vdW50QXNzZXRJbnRlcm5hbElkBAAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAkAAZEAAAACBQAAAA5wb29sQ29uZmlnTGlzdAUAAAAXaWR4UHJpY2VBc3NldEludGVybmFsSWQEAAAAEmFtb3V0QXNzZXREZWNpbWFscwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAADnBvb2xDb25maWdMaXN0BQAAABZpZHhBbW91bnRBc3NldERlY2ltYWxzBAAAABJwcmljZUFzc2V0RGVjaW1hbHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA5wb29sQ29uZmlnTGlzdAUAAAAVaWR4UHJpY2VBc3NldERlY2ltYWxzBAAAAApwb29sU3RhdHVzCQABkQAAAAIFAAAADnBvb2xDb25maWdMaXN0BQAAAA1pZHhQb29sU3RhdHVzBAAAABF1c2VyTGlxdWlkaXR5TGlzdAkBAAAAFmdldFBvb2xMaXF1aWRpdHlCeVVzZXIAAAADBQAAABVhbW91bnRBc3NldEludGVybmFsSWQFAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkBQAAAAt1c2VyQWRkcmVzcwQAAAANdXNlckxQQmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEXVzZXJMaXF1aWRpdHlMaXN0BQAAABFpZHhQb29sTFBBc3NldEFtdAQAAAAWdXNlckFtb3VudEFzc2V0QmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEXVzZXJMaXF1aWRpdHlMaXN0BQAAABVpZHhQb29sQW1vdW50QXNzZXRBbXQEAAAAFXVzZXJQcmljZUFzc2V0QmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEXVzZXJMaXF1aWRpdHlMaXN0BQAAABRpZHhQb29sUHJpY2VBc3NldEFtdAQAAAARcG9vbExpcXVpZGl0eUxpc3QJAQAAABBnZXRQb29sTGlxdWlkaXR5AAAAAgUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkBQAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAQAAAANcG9vbExQQmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEXBvb2xMaXF1aWRpdHlMaXN0BQAAABFpZHhQb29sTFBBc3NldEFtdAQAAAAWcG9vbEFtb3VudEFzc2V0QmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEXBvb2xMaXF1aWRpdHlMaXN0BQAAABVpZHhQb29sQW1vdW50QXNzZXRBbXQEAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEXBvb2xMaXF1aWRpdHlMaXN0BQAAABRpZHhQb29sUHJpY2VBc3NldEFtdAMJAQAAAAIhPQAAAAIFAAAACWxwQXNzZXRJZAUAAAAQcGF5bWVudExwQXNzZXRJZAkAAAIAAAABAgAAABVJbnZhbGlkIGFzc2V0IHBhc3NlZC4DCQAAZgAAAAIFAAAAD3BheW1lbnRMcEFtb3VudAUAAAANdXNlckxQQmFsYW5jZQkAAAIAAAABAgAAADJJbnZhbGlkIGFtb3VudCBwYXNzZWQuIEFtb3VudCBsZXNzIHRoYW4gYXZhaWxhYmxlLgQAAAAYYW1vdW50QXNzZXRQb29sTG9ja2VkQW10CAkBAAAAHHByaXZhdGVDYXN0QXNzZXRUb0xQRGVjaW1hbHMAAAACBQAAABJhbW91dEFzc2V0RGVjaW1hbHMFAAAAFnBvb2xBbW91bnRBc3NldEJhbGFuY2UAAAACXzEEAAAAF3ByaWNlQXNzZXRQb29sTG9ja2VkQW10CAkBAAAAHHByaXZhdGVDYXN0QXNzZXRUb0xQRGVjaW1hbHMAAAACBQAAABJwcmljZUFzc2V0RGVjaW1hbHMFAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQAAAAJfMQQAAAARb3V0QW1vdW50QXNzZXRBbXQJAABrAAAAAwUAAAAYYW1vdW50QXNzZXRQb29sTG9ja2VkQW10BQAAAA9wYXltZW50THBBbW91bnQFAAAADXBvb2xMUEJhbGFuY2UEAAAAEG91dFByaWNlQXNzZXRBbXQJAABrAAAAAwUAAAAXcHJpY2VBc3NldFBvb2xMb2NrZWRBbXQFAAAAD3BheW1lbnRMcEFtb3VudAUAAAANcG9vbExQQmFsYW5jZQQAAAAWb3V0QW1vdW50QXNzZXRBbXRGaW5hbAgJAQAAACBwcml2YXRlQ2FzdEFzc2V0VG9PcmlnaW5EZWNpbWFscwAAAAIFAAAAEmFtb3V0QXNzZXREZWNpbWFscwUAAAARb3V0QW1vdW50QXNzZXRBbXQAAAACXzEEAAAAFW91dFByaWNlQXNzZXRBbXRGaW5hbAgJAQAAACBwcml2YXRlQ2FzdEFzc2V0VG9PcmlnaW5EZWNpbWFscwAAAAIFAAAAEnByaWNlQXNzZXREZWNpbWFscwUAAAAQb3V0UHJpY2VBc3NldEFtdAAAAAJfMQQAAAAMY3VycmVudFByaWNlCQAAawAAAAMFAAAAF3ByaWNlQXNzZXRQb29sTG9ja2VkQW10BQAAABFkZWNpbWFsc011bHRQcmljZQUAAAAYYW1vdW50QXNzZXRQb29sTG9ja2VkQW10CQAFIAAAAA4FAAAAFm91dEFtb3VudEFzc2V0QW10RmluYWwFAAAAFW91dFByaWNlQXNzZXRBbXRGaW5hbAUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkBQAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAUAAAAWdXNlckFtb3VudEFzc2V0QmFsYW5jZQUAAAANYW1vdW50QXNzZXRJZAUAAAAVdXNlclByaWNlQXNzZXRCYWxhbmNlBQAAAAxwcmljZUFzc2V0SWQFAAAADXVzZXJMUEJhbGFuY2UFAAAAFnBvb2xBbW91bnRBc3NldEJhbGFuY2UFAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQUAAAANcG9vbExQQmFsYW5jZQUAAAAMY3VycmVudFByaWNlBQAAAApwb29sU3RhdHVzAQAAABtwcml2YXRlRXN0aW1hdGVQdXRPcGVyYXRpb24AAAAGAAAAEXNsaXBwYWdlVG9sZXJhbmNlAAAAEGluQW1vdW50QXNzZXRBbXQAAAAPaW5BbW91bnRBc3NldElkAAAAD2luUHJpY2VBc3NldEFtdAAAAA5pblByaWNlQXNzZXRJZAAAAAt1c2VyQWRkcmVzcwQAAAAScG9vbENvbmZpZ0RhdGFMaXN0CQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACWxwQXNzZXRJZAkAAlkAAAABCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAQaWR4UG9vbExQQXNzZXRJZAQAAAANYW1vdW50QXNzZXRJZAkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAEGlkeEFtb3VudEFzc2V0SWQEAAAADHByaWNlQXNzZXRJZAkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAD2lkeFByaWNlQXNzZXRJZAQAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAYaWR4QW1vdW50QXNzZXRJbnRlcm5hbElkBAAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAF2lkeFByaWNlQXNzZXRJbnRlcm5hbElkBAAAABJhbW91dEFzc2V0RGVjaW1hbHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAFmlkeEFtb3VudEFzc2V0RGVjaW1hbHMEAAAAEnByaWNlQXNzZXREZWNpbWFscwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAVaWR4UHJpY2VBc3NldERlY2ltYWxzBAAAAApwb29sU3RhdHVzCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAANaWR4UG9vbFN0YXR1cwQAAAAVcG9vbExpcXVpZGl0eURhdGFMaXN0CQEAAAAQZ2V0UG9vbExpcXVpZGl0eQAAAAIFAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAUAAAAUcHJpY2VBc3NldEludGVybmFsSWQEAAAAFnBvb2xBbW91bnRBc3NldEJhbGFuY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABVwb29sTGlxdWlkaXR5RGF0YUxpc3QFAAAAFWlkeFBvb2xBbW91bnRBc3NldEFtdAQAAAAVcG9vbFByaWNlQXNzZXRCYWxhbmNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAVcG9vbExpcXVpZGl0eURhdGFMaXN0BQAAABRpZHhQb29sUHJpY2VBc3NldEFtdAQAAAANcG9vbExQQmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAFXBvb2xMaXF1aWRpdHlEYXRhTGlzdAUAAAARaWR4UG9vbExQQXNzZXRBbXQEAAAAFXVzZXJMaXF1aWRpdHlEYXRhTGlzdAkBAAAAFmdldFBvb2xMaXF1aWRpdHlCeVVzZXIAAAADBQAAABVhbW91bnRBc3NldEludGVybmFsSWQFAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkBQAAAAt1c2VyQWRkcmVzcwQAAAAWdXNlckFtb3VudEFzc2V0QmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAFXVzZXJMaXF1aWRpdHlEYXRhTGlzdAUAAAAVaWR4UG9vbEFtb3VudEFzc2V0QW10BAAAABV1c2VyUHJpY2VBc3NldEJhbGFuY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABV1c2VyTGlxdWlkaXR5RGF0YUxpc3QFAAAAFGlkeFBvb2xQcmljZUFzc2V0QW10BAAAAA11c2VyTFBCYWxhbmNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAVdXNlckxpcXVpZGl0eURhdGFMaXN0BQAAABFpZHhQb29sTFBBc3NldEFtdAMDCQEAAAACIT0AAAACBQAAAA1hbW91bnRBc3NldElkBQAAAA9pbkFtb3VudEFzc2V0SWQGCQEAAAACIT0AAAACBQAAAAxwcmljZUFzc2V0SWQFAAAADmluUHJpY2VBc3NldElkCQAAAgAAAAECAAAAJUludmFsaWQgYW1vdW50IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4EAAAAH2luQW1vdW50QXNzZXRBbXRDYWxjdWxhdGVkVHVwbGUJAQAAABxwcml2YXRlQ2FzdEFzc2V0VG9MUERlY2ltYWxzAAAAAgUAAAASYW1vdXRBc3NldERlY2ltYWxzBQAAABBpbkFtb3VudEFzc2V0QW10BAAAAB5pblByaWNlQXNzZXRBbXRDYWxjdWxhdGVkVHVwbGUJAQAAABxwcml2YXRlQ2FzdEFzc2V0VG9MUERlY2ltYWxzAAAAAgUAAAAScHJpY2VBc3NldERlY2ltYWxzBQAAAA9pblByaWNlQXNzZXRBbXQEAAAAGmluQW1vdW50QXNzZXRBbXRDYWxjdWxhdGVkCAUAAAAfaW5BbW91bnRBc3NldEFtdENhbGN1bGF0ZWRUdXBsZQAAAAJfMQQAAAAZaW5QcmljZUFzc2V0QW10Q2FsY3VsYXRlZAgFAAAAHmluUHJpY2VBc3NldEFtdENhbGN1bGF0ZWRUdXBsZQAAAAJfMQQAAAAJdXNlclByaWNlCQAAawAAAAMFAAAAGWluUHJpY2VBc3NldEFtdENhbGN1bGF0ZWQFAAAAEWRlY2ltYWxzTXVsdFByaWNlBQAAABppbkFtb3VudEFzc2V0QW10Q2FsY3VsYXRlZAQAAAAYYW1vdW50QXNzZXRQb29sTG9ja2VkQW10CQAAaAAAAAIFAAAAFnBvb2xBbW91bnRBc3NldEJhbGFuY2UIBQAAAB9pbkFtb3VudEFzc2V0QW10Q2FsY3VsYXRlZFR1cGxlAAAAAl8yBAAAABdwcmljZUFzc2V0UG9vbExvY2tlZEFtdAkAAGgAAAACBQAAABVwb29sUHJpY2VBc3NldEJhbGFuY2UIBQAAAB5pblByaWNlQXNzZXRBbXRDYWxjdWxhdGVkVHVwbGUAAAACXzIEAAAAC2N1cmVudFByaWNlAwkAAAAAAAACBQAAAA1wb29sTFBCYWxhbmNlAAAAAAAAAAAAAAAAAAAAAAAACQAAawAAAAMFAAAAF3ByaWNlQXNzZXRQb29sTG9ja2VkQW10BQAAABFkZWNpbWFsc011bHRQcmljZQUAAAAYYW1vdW50QXNzZXRQb29sTG9ja2VkQW10BAAAAAhzbGlwcGFnZQMJAABmAAAAAgUAAAALY3VyZW50UHJpY2UFAAAACXVzZXJQcmljZQkAAGsAAAADCQAAZQAAAAIFAAAAC2N1cmVudFByaWNlBQAAAAl1c2VyUHJpY2UAAAAAAAAAAGQFAAAAC2N1cmVudFByaWNlCQAAawAAAAMJAABlAAAAAgUAAAAJdXNlclByaWNlBQAAAAtjdXJlbnRQcmljZQAAAAAAAAAAZAUAAAALY3VyZW50UHJpY2UDAwkBAAAAAiE9AAAAAgUAAAALY3VyZW50UHJpY2UAAAAAAAAAAAAJAABmAAAAAgkAAGgAAAACBQAAAAhzbGlwcGFnZQUAAAARZGVjaW1hbHNNdWx0UHJpY2UFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBwkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9QcmljZSBzbGlwcGFnZSAJAAGkAAAAAQUAAAAIc2xpcHBhZ2UCAAAAHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkAAaQAAAABBQAAABFzbGlwcGFnZVRvbGVyYW5jZQQAAAALb3V0THBBbW91bnQDCQAAAAAAAAIFAAAADXBvb2xMUEJhbGFuY2UAAAAAAAAAAAAEAAAABXBhcnRBCQAAbAAAAAYFAAAAGmluQW1vdW50QXNzZXRBbXRDYWxjdWxhdGVkAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAABAAAAAAAAAAAABQAAAARET1dOBAAAAAVwYXJ0QgkAAGwAAAAGBQAAABlpblByaWNlQXNzZXRBbXRDYWxjdWxhdGVkAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAABAAAAAAAAAAAABQAAAARET1dOCQAAaAAAAAIFAAAABXBhcnRBBQAAAAVwYXJ0QgQAAAASbHBBbXRCeUFtb3VudEFzc2V0CQAAawAAAAMFAAAADXBvb2xMUEJhbGFuY2UFAAAAGmluQW1vdW50QXNzZXRBbXRDYWxjdWxhdGVkBQAAABhhbW91bnRBc3NldFBvb2xMb2NrZWRBbXQEAAAAEWxwQW10QnlQcmljZUFzc2V0CQAAawAAAAMFAAAADXBvb2xMUEJhbGFuY2UFAAAAGWluUHJpY2VBc3NldEFtdENhbGN1bGF0ZWQFAAAAF3ByaWNlQXNzZXRQb29sTG9ja2VkQW10AwkAAGYAAAACBQAAABFscEFtdEJ5UHJpY2VBc3NldAUAAAASbHBBbXRCeUFtb3VudEFzc2V0BQAAABJscEFtdEJ5QW1vdW50QXNzZXQFAAAAEWxwQW10QnlQcmljZUFzc2V0CQAFHwAAAA0FAAAAC291dExwQW1vdW50BQAAAAtjdXJlbnRQcmljZQUAAAAWdXNlckFtb3VudEFzc2V0QmFsYW5jZQUAAAAVdXNlclByaWNlQXNzZXRCYWxhbmNlBQAAAA11c2VyTFBCYWxhbmNlBQAAABZwb29sQW1vdW50QXNzZXRCYWxhbmNlBQAAABVwb29sUHJpY2VBc3NldEJhbGFuY2UFAAAADXBvb2xMUEJhbGFuY2UFAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAUAAAAUcHJpY2VBc3NldEludGVybmFsSWQFAAAACWxwQXNzZXRJZAUAAAAIc2xpcHBhZ2UFAAAACnBvb2xTdGF0dXMBAAAAJmVzdGltYXRlUHV0T3BlcmF0aW9uQmFzZWRPbkFtb3VudEFzc2V0AAAAAwAAABFzbGlwcGFnZVRvbGVyYW5jZQAAABBpbkFtb3VudEFzc2V0QW10AAAAC3VzZXJBZGRyZXNzBAAAABJwb29sQ29uZmlnRGF0YUxpc3QJAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAAJbHBBc3NldElkCQACWQAAAAEJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABBpZHhQb29sTFBBc3NldElkBAAAAA1hbW91bnRBc3NldElkCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAQaWR4QW1vdW50QXNzZXRJZAQAAAAMcHJpY2VBc3NldElkCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAPaWR4UHJpY2VBc3NldElkBAAAABVhbW91bnRBc3NldEludGVybmFsSWQJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABhpZHhBbW91bnRBc3NldEludGVybmFsSWQEAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAXaWR4UHJpY2VBc3NldEludGVybmFsSWQEAAAAEmFtb3V0QXNzZXREZWNpbWFscwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAWaWR4QW1vdW50QXNzZXREZWNpbWFscwQAAAAScHJpY2VBc3NldERlY2ltYWxzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABVpZHhQcmljZUFzc2V0RGVjaW1hbHMEAAAACnBvb2xTdGF0dXMJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAAA1pZHhQb29sU3RhdHVzBAAAABVwb29sTGlxdWlkaXR5RGF0YUxpc3QJAQAAABBnZXRQb29sTGlxdWlkaXR5AAAAAgUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkBQAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAQAAAAWcG9vbEFtb3VudEFzc2V0QmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAFXBvb2xMaXF1aWRpdHlEYXRhTGlzdAUAAAAVaWR4UG9vbEFtb3VudEFzc2V0QW10BAAAABVwb29sUHJpY2VBc3NldEJhbGFuY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABVwb29sTGlxdWlkaXR5RGF0YUxpc3QFAAAAFGlkeFBvb2xQcmljZUFzc2V0QW10BAAAAA1wb29sTFBCYWxhbmNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAVcG9vbExpcXVpZGl0eURhdGFMaXN0BQAAABFpZHhQb29sTFBBc3NldEFtdAQAAAAdYW1vdW50QXNzZXRBbXRDYWxjdWxhdGVkVHVwbGUJAQAAABxwcml2YXRlQ2FzdEFzc2V0VG9MUERlY2ltYWxzAAAAAgUAAAASYW1vdXRBc3NldERlY2ltYWxzBQAAABZwb29sQW1vdW50QXNzZXRCYWxhbmNlBAAAABxwcmljZUFzc2V0QW10Q2FsY3VsYXRlZFR1cGxlCQEAAAAccHJpdmF0ZUNhc3RBc3NldFRvTFBEZWNpbWFscwAAAAIFAAAAEnByaWNlQXNzZXREZWNpbWFscwUAAAAVcG9vbFByaWNlQXNzZXRCYWxhbmNlBAAAAAtjdXJlbnRQcmljZQMJAAAAAAAAAgUAAAANcG9vbExQQmFsYW5jZQAAAAAAAAAAAAAAAAAAAAAAAAkAAGsAAAADCAUAAAAccHJpY2VBc3NldEFtdENhbGN1bGF0ZWRUdXBsZQAAAAJfMQUAAAARZGVjaW1hbHNNdWx0UHJpY2UIBQAAAB1hbW91bnRBc3NldEFtdENhbGN1bGF0ZWRUdXBsZQAAAAJfMQQAAAAZaW5QcmljZUFzc2V0QW10Q2FsY3VsYXRlZAkAAGgAAAACCAUAAAAdYW1vdW50QXNzZXRBbXRDYWxjdWxhdGVkVHVwbGUAAAACXzIFAAAAC2N1cmVudFByaWNlBAAAAA9pblByaWNlQXNzZXRBbXQICQEAAAAgcHJpdmF0ZUNhc3RBc3NldFRvT3JpZ2luRGVjaW1hbHMAAAACBQAAABJhbW91dEFzc2V0RGVjaW1hbHMFAAAAGWluUHJpY2VBc3NldEFtdENhbGN1bGF0ZWQAAAACXzEJAQAAABtwcml2YXRlRXN0aW1hdGVQdXRPcGVyYXRpb24AAAAGBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAQaW5BbW91bnRBc3NldEFtdAUAAAANYW1vdW50QXNzZXRJZAUAAAAPaW5QcmljZUFzc2V0QW10BQAAAAxwcmljZUFzc2V0SWQFAAAAC3VzZXJBZGRyZXNzAQAAACVlc3RpbWF0ZVB1dE9wZXJhdGlvbkJhc2VkT25QcmljZUFzc2V0AAAAAwAAABFzbGlwcGFnZVRvbGVyYW5jZQAAAA9pblByaWNlQXNzZXRBbXQAAAALdXNlckFkZHJlc3MEAAAAEnBvb2xDb25maWdEYXRhTGlzdAkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAAlscEFzc2V0SWQJAAJZAAAAAQkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAEGlkeFBvb2xMUEFzc2V0SWQEAAAADWFtb3VudEFzc2V0SWQJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABBpZHhBbW91bnRBc3NldElkBAAAAAxwcmljZUFzc2V0SWQJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAAA9pZHhQcmljZUFzc2V0SWQEAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAGGlkeEFtb3VudEFzc2V0SW50ZXJuYWxJZAQAAAAUcHJpY2VBc3NldEludGVybmFsSWQJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABdpZHhQcmljZUFzc2V0SW50ZXJuYWxJZAQAAAASYW1vdXRBc3NldERlY2ltYWxzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABZpZHhBbW91bnRBc3NldERlY2ltYWxzBAAAABJwcmljZUFzc2V0RGVjaW1hbHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAFWlkeFByaWNlQXNzZXREZWNpbWFscwQAAAAKcG9vbFN0YXR1cwkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAADWlkeFBvb2xTdGF0dXMEAAAAFXBvb2xMaXF1aWRpdHlEYXRhTGlzdAkBAAAAEGdldFBvb2xMaXF1aWRpdHkAAAACBQAAABVhbW91bnRBc3NldEludGVybmFsSWQFAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkBAAAABZwb29sQW1vdW50QXNzZXRCYWxhbmNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAVcG9vbExpcXVpZGl0eURhdGFMaXN0BQAAABVpZHhQb29sQW1vdW50QXNzZXRBbXQEAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAFXBvb2xMaXF1aWRpdHlEYXRhTGlzdAUAAAAUaWR4UG9vbFByaWNlQXNzZXRBbXQEAAAADXBvb2xMUEJhbGFuY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABVwb29sTGlxdWlkaXR5RGF0YUxpc3QFAAAAEWlkeFBvb2xMUEFzc2V0QW10BAAAAB1hbW91bnRBc3NldEFtdENhbGN1bGF0ZWRUdXBsZQkBAAAAHHByaXZhdGVDYXN0QXNzZXRUb0xQRGVjaW1hbHMAAAACBQAAABJhbW91dEFzc2V0RGVjaW1hbHMFAAAAFnBvb2xBbW91bnRBc3NldEJhbGFuY2UEAAAAHHByaWNlQXNzZXRBbXRDYWxjdWxhdGVkVHVwbGUJAQAAABxwcml2YXRlQ2FzdEFzc2V0VG9MUERlY2ltYWxzAAAAAgUAAAAScHJpY2VBc3NldERlY2ltYWxzBQAAABVwb29sUHJpY2VBc3NldEJhbGFuY2UEAAAAC2N1cmVudFByaWNlAwkAAAAAAAACBQAAAA1wb29sTFBCYWxhbmNlAAAAAAAAAAAAAAAAAAAAAAAACQAAawAAAAMIBQAAABxwcmljZUFzc2V0QW10Q2FsY3VsYXRlZFR1cGxlAAAAAl8xBQAAABFkZWNpbWFsc011bHRQcmljZQgFAAAAHWFtb3VudEFzc2V0QW10Q2FsY3VsYXRlZFR1cGxlAAAAAl8xBAAAABppbkFtb3VudEFzc2V0QW10Q2FsY3VsYXRlZAkAAGkAAAACCAUAAAAdYW1vdW50QXNzZXRBbXRDYWxjdWxhdGVkVHVwbGUAAAACXzIFAAAAC2N1cmVudFByaWNlBAAAABBpbkFtb3VudEFzc2V0QW10CAkBAAAAIHByaXZhdGVDYXN0QXNzZXRUb09yaWdpbkRlY2ltYWxzAAAAAgUAAAASYW1vdXRBc3NldERlY2ltYWxzBQAAABppbkFtb3VudEFzc2V0QW10Q2FsY3VsYXRlZAAAAAJfMQkBAAAAG3ByaXZhdGVFc3RpbWF0ZVB1dE9wZXJhdGlvbgAAAAYFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAABBpbkFtb3VudEFzc2V0QW10BQAAAA1hbW91bnRBc3NldElkBQAAAA9pblByaWNlQXNzZXRBbXQFAAAADHByaWNlQXNzZXRJZAUAAAALdXNlckFkZHJlc3MBAAAAG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZAAAAAEAAAAFb3JkZXIEAAAAEnBvb2xDb25maWdEYXRhTGlzdAkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAA1hbW91bnRBc3NldElkCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAQaWR4QW1vdW50QXNzZXRJZAQAAAAMcHJpY2VBc3NldElkCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAPaWR4UHJpY2VBc3NldElkBAAAAApwb29sU3RhdHVzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAAA1pZHhQb29sU3RhdHVzBAAAABNtYXRjaGVyUHVibGljS2V5U3RyCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAATaWR4TWF0Y2hlclB1YmxpY0tleQQAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAYaWR4QW1vdW50QXNzZXRJbnRlcm5hbElkBAAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAF2lkeFByaWNlQXNzZXRJbnRlcm5hbElkBAAAABNhbW91bnRBc3NldERlY2ltYWxzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAABZpZHhBbW91bnRBc3NldERlY2ltYWxzBAAAABJwcmljZUFzc2V0RGVjaW1hbHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABJwb29sQ29uZmlnRGF0YUxpc3QFAAAAFWlkeFByaWNlQXNzZXREZWNpbWFscwQAAAAhbWF4QWxsb3dlZE9yZGVyUHJpY2VEaWZmZXJlbmNlUGN0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAACNpZG1heEFsbG93ZWRPcmRlclByaWNlRGlmZmVyZW5jZVBjdAQAAAAVcG9vbExpcXVpZGl0eURhdGFMaXN0CQEAAAAQZ2V0UG9vbExpcXVpZGl0eQAAAAIFAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAUAAAAUcHJpY2VBc3NldEludGVybmFsSWQEAAAAFnBvb2xBbW91bnRBc3NldEJhbGFuY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABVwb29sTGlxdWlkaXR5RGF0YUxpc3QFAAAAFWlkeFBvb2xBbW91bnRBc3NldEFtdAQAAAAVcG9vbFByaWNlQXNzZXRCYWxhbmNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAVcG9vbExpcXVpZGl0eURhdGFMaXN0BQAAABRpZHhQb29sUHJpY2VBc3NldEFtdAQAAAAMY3VycmVudFByaWNlCQEAAAAVcHJpdmF0ZUNhbGN1bGF0ZVByaWNlAAAABAUAAAATYW1vdW50QXNzZXREZWNpbWFscwUAAAAScHJpY2VBc3NldERlY2ltYWxzBQAAABZwb29sQW1vdW50QXNzZXRCYWxhbmNlBQAAABVwb29sUHJpY2VBc3NldEJhbGFuY2UEAAAAEWlzUG9vbFN0YXR1c1ZhbGlkAwMDCQEAAAAQaXNHbG9iYWxTaHV0ZG93bgAAAAAGCQAAAAAAAAIFAAAACnBvb2xTdGF0dXMFAAAAE1Bvb2xNYXRjaGVyRGlzYWJsZWQGCQAAAAAAAAIFAAAACnBvb2xTdGF0dXMFAAAADFBvb2xTaHV0ZG93bgcGBAAAABJpc1ZhbGlkTWF0Y2hlclNpZ24JAAH0AAAAAwgFAAAABW9yZGVyAAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAAFb3JkZXIAAAAGcHJvb2ZzAAAAAAAAAAAACQACWQAAAAEFAAAAE21hdGNoZXJQdWJsaWNLZXlTdHIEAAAAEG9yZGVyQW1vdW50QXNzZXQICAUAAAAFb3JkZXIAAAAJYXNzZXRQYWlyAAAAC2Ftb3VudEFzc2V0BAAAABNvcmRlckFtb3VudEFzc2V0U3RyAwkAAAAAAAACBQAAABBvcmRlckFtb3VudEFzc2V0BQAAAAR1bml0AgAAAAAJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQUAAAAQb3JkZXJBbW91bnRBc3NldAQAAAAPb3JkZXJQcmljZUFzc2V0CAgFAAAABW9yZGVyAAAACWFzc2V0UGFpcgAAAApwcmljZUFzc2V0BAAAABJvcmRlclByaWNlQXNzZXRTdHIDCQAAAAAAAAIFAAAAD29yZGVyUHJpY2VBc3NldAUAAAAEdW5pdAIAAAAACQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAAD29yZGVyUHJpY2VBc3NldAQAAAAQaXNWYWxpZEFzc2V0UGFpcgMDCQEAAAACIT0AAAACBQAAABNvcmRlckFtb3VudEFzc2V0U3RyBQAAAA1hbW91bnRBc3NldElkBgkBAAAAAiE9AAAAAgUAAAASb3JkZXJQcmljZUFzc2V0U3RyBQAAAAxwcmljZUFzc2V0SWQHBgQAAAAKb3JkZXJQcmljZQgFAAAABW9yZGVyAAAABXByaWNlBAAAAA1wcmljZURlY2ltYWxzCQAAZQAAAAIJAABkAAAAAgAAAAAAAAAACAUAAAAScHJpY2VBc3NldERlY2ltYWxzBQAAABNhbW91bnRBc3NldERlY2ltYWxzBAAAABBjYXN0ZWRPcmRlclByaWNlCQEAAAAccHJpdmF0ZUNhc3RBc3NldFRvTFBEZWNpbWFscwAAAAIFAAAADXByaWNlRGVjaW1hbHMFAAAACm9yZGVyUHJpY2UEAAAACmRpZmZlcmVuY2UDCQAAZgAAAAIIBQAAABBjYXN0ZWRPcmRlclByaWNlAAAAAl8xBQAAAAxjdXJyZW50UHJpY2UJAABrAAAAAwkAAGUAAAACCAUAAAAQY2FzdGVkT3JkZXJQcmljZQAAAAJfMQUAAAAMY3VycmVudFByaWNlAAAAAAAAAABkBQAAAAxjdXJyZW50UHJpY2UJAABrAAAAAwkAAGUAAAACBQAAAAxjdXJyZW50UHJpY2UIBQAAABBjYXN0ZWRPcmRlclByaWNlAAAAAl8xAAAAAAAAAABkBQAAAAxjdXJyZW50UHJpY2UEAAAAEWlzT3JkZXJQcmljZVZhbGlkCQAAZwAAAAIFAAAAIW1heEFsbG93ZWRPcmRlclByaWNlRGlmZmVyZW5jZVBjdAkAAGgAAAACBQAAAApkaWZmZXJlbmNlBQAAABFkZWNpbWFsc011bHRQcmljZQkABEwAAAACAwMDBQAAABBpc1ZhbGlkQXNzZXRQYWlyBQAAABJpc1ZhbGlkTWF0Y2hlclNpZ24HBQAAABFpc1Bvb2xTdGF0dXNWYWxpZAcFAAAAEWlzT3JkZXJQcmljZVZhbGlkBwUAAAADbmlsAQAAACB2YWxpZGF0ZU1hdGNoZXJFeGNoYW5nZVR4QWxsb3dlZAAAAAEAAAACZXgEAAAAEnBvb2xDb25maWdEYXRhTGlzdAkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAA1hbW91bnRBc3NldElkCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAQaWR4QW1vdW50QXNzZXRJZAQAAAAMcHJpY2VBc3NldElkCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAAPaWR4UHJpY2VBc3NldElkBAAAAApwb29sU3RhdHVzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAScG9vbENvbmZpZ0RhdGFMaXN0BQAAAA1pZHhQb29sU3RhdHVzBAAAABNtYXRjaGVyUHVibGljS2V5U3RyCQABkQAAAAIFAAAAEnBvb2xDb25maWdEYXRhTGlzdAUAAAATaWR4TWF0Y2hlclB1YmxpY0tleQQAAAARaXNQb29sU3RhdHVzVmFsaWQDAwMJAQAAABBpc0dsb2JhbFNodXRkb3duAAAAAAYJAAAAAAAAAgUAAAAKcG9vbFN0YXR1cwUAAAATUG9vbE1hdGNoZXJEaXNhYmxlZAYJAAAAAAAAAgUAAAAKcG9vbFN0YXR1cwUAAAAMUG9vbFNodXRkb3duBwYEAAAAEmlzVmFsaWRNYXRjaGVyU2lnbgkAAfQAAAADCAUAAAACZXgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJleAAAAAZwcm9vZnMAAAAAAAAAAAAJAAJZAAAAAQUAAAATbWF0Y2hlclB1YmxpY0tleVN0cgQAAAATZXhjaGFuZ2VBbW91bnRBc3NldAgICAUAAAACZXgAAAAIYnV5T3JkZXIAAAAJYXNzZXRQYWlyAAAAC2Ftb3VudEFzc2V0BAAAABZleGNoYW5nZUFtb3VudEFzc2V0U3RyAwkAAAAAAAACBQAAABNleGNoYW5nZUFtb3VudEFzc2V0BQAAAAR1bml0AgAAAAAJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQUAAAATZXhjaGFuZ2VBbW91bnRBc3NldAQAAAASZXhjaGFuZ2VQcmljZUFzc2V0CAgIBQAAAAJleAAAAAhidXlPcmRlcgAAAAlhc3NldFBhaXIAAAAKcHJpY2VBc3NldAQAAAAVZXhjaGFuZ2VQcmljZUFzc2V0U3RyAwkAAAAAAAACBQAAABJleGNoYW5nZVByaWNlQXNzZXQFAAAABHVuaXQCAAAAAAkAAlgAAAABCQEAAAAFdmFsdWUAAAABBQAAABJleGNoYW5nZVByaWNlQXNzZXQEAAAAEGlzVmFsaWRBc3NldFBhaXIDAwkBAAAAAiE9AAAAAgUAAAAWZXhjaGFuZ2VBbW91bnRBc3NldFN0cgUAAAANYW1vdW50QXNzZXRJZAYJAQAAAAIhPQAAAAIFAAAAFWV4Y2hhbmdlUHJpY2VBc3NldFN0cgUAAAAMcHJpY2VBc3NldElkBwYEAAAAE29yZGVyQW1vdW50QXNzZXRBbXQJAAE2AAAAAQgFAAAAAmV4AAAABmFtb3VudAQAAAARZXhlY3V0ZWRPcmRlclR5cGUDCQAAAAAAAAIICAUAAAACZXgAAAAIYnV5T3JkZXIAAAAGc2VuZGVyBQAAAAR0aGlzBQAAAAxidXlPcmRlclR5cGUFAAAADXNlbGxPcmRlclR5cGUEAAAAEm9yZGVyUHJpY2VBc3NldEFtdAkAATwAAAADBQAAABNvcmRlckFtb3VudEFzc2V0QW10CQABNgAAAAEIBQAAAAJleAAAAAVwcmljZQkAATYAAAABBQAAABFkZWNpbWFsc011bHRQcmljZQQAAAAZY3VycmVudEFtb3VudEFzc2V0QmFsYW5jZQMJAAAAAAAAAgUAAAANYW1vdW50QXNzZXRJZAIAAAAACAkBAAAABXZhbHVlAAAAAQkAA+8AAAABBQAAAAR0aGlzAAAACWF2YWlsYWJsZQkBAAAABXZhbHVlAAAAAQkAA/AAAAACBQAAAAR0aGlzCQACWQAAAAEFAAAADWFtb3VudEFzc2V0SWQEAAAAGGN1cnJlbnRQcmljZUFzc2V0QmFsYW5jZQMJAAAAAAAAAgUAAAAMcHJpY2VBc3NldElkAgAAAAAICQEAAAAFdmFsdWUAAAABCQAD7wAAAAEFAAAABHRoaXMAAAAJYXZhaWxhYmxlCQEAAAAFdmFsdWUAAAABCQAD8AAAAAIFAAAABHRoaXMJAAJZAAAAAQUAAAAMcHJpY2VBc3NldElkBAAAAAhjdXJyZW50SwkAATwAAAADCQABNgAAAAEFAAAAGWN1cnJlbnRBbW91bnRBc3NldEJhbGFuY2UJAAE2AAAAAQUAAAAYY3VycmVudFByaWNlQXNzZXRCYWxhbmNlCQABNgAAAAEFAAAAEWRlY2ltYWxzTXVsdFByaWNlBAAAABtjYWxjdWxhdGVkS0FmdGVyVHJhbnNhY3Rpb24DCQAAAAAAAAIFAAAAEWV4ZWN1dGVkT3JkZXJUeXBlBQAAAAxidXlPcmRlclR5cGUJAAE8AAAAAwkAATcAAAACCQABNgAAAAEFAAAAGWN1cnJlbnRBbW91bnRBc3NldEJhbGFuY2UFAAAAE29yZGVyQW1vdW50QXNzZXRBbXQJAAE4AAAAAgkAATYAAAABBQAAABhjdXJyZW50UHJpY2VBc3NldEJhbGFuY2UFAAAAEm9yZGVyUHJpY2VBc3NldEFtdAkAATYAAAABBQAAABFkZWNpbWFsc011bHRQcmljZQkAATwAAAADCQABOAAAAAIJAAE2AAAAAQUAAAAZY3VycmVudEFtb3VudEFzc2V0QmFsYW5jZQUAAAATb3JkZXJBbW91bnRBc3NldEFtdAkAATcAAAACCQABNgAAAAEFAAAAGGN1cnJlbnRQcmljZUFzc2V0QmFsYW5jZQUAAAASb3JkZXJQcmljZUFzc2V0QW10CQABNgAAAAEFAAAAEWRlY2ltYWxzTXVsdFByaWNlBAAAAA1pc0tJbmNyZWFzaW5nCQABPwAAAAIFAAAAG2NhbGN1bGF0ZWRLQWZ0ZXJUcmFuc2FjdGlvbgUAAAAIY3VycmVudEsJAARMAAAAAgMDAwUAAAAQaXNWYWxpZEFzc2V0UGFpcgUAAAANaXNLSW5jcmVhc2luZwcFAAAAEmlzVmFsaWRNYXRjaGVyU2lnbgcFAAAAEWlzUG9vbFN0YXR1c1ZhbGlkBwUAAAADbmlsAAAAAwAAAAFpAQAAAANwdXQAAAABAAAAEXNsaXBwYWdlVG9sZXJhbmNlBAAAAA5wbXRBbW91bnRBc3NldAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAQaW5BbW91bnRBc3NldEFtdAgFAAAADnBtdEFtb3VudEFzc2V0AAAABmFtb3VudAQAAAAPaW5BbW91bnRBc3NldElkAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAADnBtdEFtb3VudEFzc2V0AAAAB2Fzc2V0SWQJAAJZAAAAAQIAAAAACQEAAAAFdmFsdWUAAAABCAUAAAAOcG10QW1vdW50QXNzZXQAAAAHYXNzZXRJZAQAAAANcG10UHJpY2VBc3NldAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQQAAAAPaW5QcmljZUFzc2V0QW10CAUAAAANcG10UHJpY2VBc3NldAAAAAZhbW91bnQEAAAADmluUHJpY2VBc3NldElkCQEAAAAFdmFsdWUAAAABCAUAAAANcG10UHJpY2VBc3NldAAAAAdhc3NldElkBAAAABNlc3RpbWF0ZWRQdXRSZXN1bHRzCQEAAAAbcHJpdmF0ZUVzdGltYXRlUHV0T3BlcmF0aW9uAAAABgUAAAARc2xpcHBhZ2VUb2xlcmFuY2UFAAAAEGluQW1vdW50QXNzZXRBbXQJAAJYAAAAAQUAAAAPaW5BbW91bnRBc3NldElkBQAAAA9pblByaWNlQXNzZXRBbXQJAAJYAAAAAQUAAAAOaW5QcmljZUFzc2V0SWQJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAAtvdXRMcEFtb3VudAgFAAAAE2VzdGltYXRlZFB1dFJlc3VsdHMAAAACXzEEAAAAC2N1cmVudFByaWNlCAUAAAATZXN0aW1hdGVkUHV0UmVzdWx0cwAAAAJfMgQAAAAWdXNlckFtb3VudEFzc2V0QmFsYW5jZQgFAAAAE2VzdGltYXRlZFB1dFJlc3VsdHMAAAACXzMEAAAAFXVzZXJQcmljZUFzc2V0QmFsYW5jZQgFAAAAE2VzdGltYXRlZFB1dFJlc3VsdHMAAAACXzQEAAAADXVzZXJMUEJhbGFuY2UIBQAAABNlc3RpbWF0ZWRQdXRSZXN1bHRzAAAAAl81BAAAABZwb29sQW1vdW50QXNzZXRCYWxhbmNlCAUAAAATZXN0aW1hdGVkUHV0UmVzdWx0cwAAAAJfNgQAAAAVcG9vbFByaWNlQXNzZXRCYWxhbmNlCAUAAAATZXN0aW1hdGVkUHV0UmVzdWx0cwAAAAJfNwQAAAANcG9vbExQQmFsYW5jZQgFAAAAE2VzdGltYXRlZFB1dFJlc3VsdHMAAAACXzgEAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAgFAAAAE2VzdGltYXRlZFB1dFJlc3VsdHMAAAACXzkEAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkCAUAAAATZXN0aW1hdGVkUHV0UmVzdWx0cwAAAANfMTAEAAAACWxwQXNzZXRJZAgFAAAAE2VzdGltYXRlZFB1dFJlc3VsdHMAAAADXzExBAAAABJzbGlwcGFnZUNhbGN1bGF0ZWQIBQAAABNlc3RpbWF0ZWRQdXRSZXN1bHRzAAAAA18xMgQAAAAKcG9vbFN0YXR1cwkBAAAADXBhcnNlSW50VmFsdWUAAAABCAUAAAATZXN0aW1hdGVkUHV0UmVzdWx0cwAAAANfMTMDAwMJAQAAABBpc0dsb2JhbFNodXRkb3duAAAAAAYJAAAAAAAAAgUAAAAKcG9vbFN0YXR1cwUAAAAPUG9vbFB1dERpc2FibGVkBgkAAAAAAAACBQAAAApwb29sU3RhdHVzBQAAAAxQb29sU2h1dGRvd24JAAACAAAAAQkAASwAAAACAgAAACxQdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkAAaQAAAABBQAAAApwb29sU3RhdHVzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAxrZXlQcmljZUxhc3QAAAAACQABLAAAAAICAAAABCVzX18JAAGkAAAAAQUAAAALY3VyZW50UHJpY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAD2tleVByaWNlSGlzdG9yeQAAAAIFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAAEsAAAAAgIAAAAEJXNfXwkAAaQAAAABBQAAAAtjdXJlbnRQcmljZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASa2V5UHV0QWN0aW9uQnlVc2VyAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkBAAAAEWRhdGFQdXRBY3Rpb25JbmZvAAAACAUAAAAQaW5BbW91bnRBc3NldEFtdAUAAAAPaW5QcmljZUFzc2V0QW10BQAAAAtvdXRMcEFtb3VudAUAAAALY3VyZW50UHJpY2UFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAABJzbGlwcGFnZUNhbGN1bGF0ZWQFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAFmtleVBvb2xMaXF1aWRpdHlCeVVzZXIAAAADBQAAABVhbW91bnRBc3NldEludGVybmFsSWQFAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgkBAAAAEWRhdGFQb29sTGlxdWlkaXR5AAAAAwkAAGQAAAACBQAAABZ1c2VyQW1vdW50QXNzZXRCYWxhbmNlBQAAABBpbkFtb3VudEFzc2V0QW10CQAAZAAAAAIFAAAAFXVzZXJQcmljZUFzc2V0QmFsYW5jZQUAAAAPaW5QcmljZUFzc2V0QW10CQAAZAAAAAIFAAAADXVzZXJMUEJhbGFuY2UFAAAAC291dExwQW1vdW50CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlQb29sTGlxdWlkaXR5AAAAAgUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkBQAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAkBAAAAEWRhdGFQb29sTGlxdWlkaXR5AAAAAwkAAGQAAAACBQAAABZwb29sQW1vdW50QXNzZXRCYWxhbmNlBQAAABBpbkFtb3VudEFzc2V0QW10CQAAZAAAAAIFAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQUAAAAPaW5QcmljZUFzc2V0QW10CQAAZAAAAAIFAAAADXBvb2xMUEJhbGFuY2UFAAAAC291dExwQW1vdW50CQAETAAAAAIJAQAAAAdSZWlzc3VlAAAAAwUAAAAJbHBBc3NldElkBQAAAAtvdXRMcEFtb3VudAYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAtvdXRMcEFtb3VudAUAAAAJbHBBc3NldElkBQAAAANuaWwAAAABaQEAAAADZ2V0AAAAAAQAAAAOcG10QW1vdW50QXNzZXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAACnBtdEFzc2V0SWQJAQAAAAV2YWx1ZQAAAAEIBQAAAA5wbXRBbW91bnRBc3NldAAAAAdhc3NldElkBAAAAA5wbXRBc3NldEFtb3VudAgFAAAADnBtdEFtb3VudEFzc2V0AAAABmFtb3VudAQAAAAHcmVzdWx0cwkBAAAAG3ByaXZhdGVFc3RpbWF0ZUdldE9wZXJhdGlvbgAAAAMJAAJYAAAAAQUAAAAKcG10QXNzZXRJZAUAAAAOcG10QXNzZXRBbW91bnQJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAABFvdXRBbW91bnRBc3NldEFtdAgFAAAAB3Jlc3VsdHMAAAACXzEEAAAAEG91dFByaWNlQXNzZXRBbXQIBQAAAAdyZXN1bHRzAAAAAl8yBAAAABVhbW91bnRBc3NldEludGVybmFsSWQIBQAAAAdyZXN1bHRzAAAAAl8zBAAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAgFAAAAB3Jlc3VsdHMAAAACXzQEAAAAFnVzZXJBbW91bnRBc3NldEJhbGFuY2UIBQAAAAdyZXN1bHRzAAAAAl81BAAAAA1hbW91bnRBc3NldElkCAUAAAAHcmVzdWx0cwAAAAJfNgQAAAAVdXNlclByaWNlQXNzZXRCYWxhbmNlCAUAAAAHcmVzdWx0cwAAAAJfNwQAAAAMcHJpY2VBc3NldElkCAUAAAAHcmVzdWx0cwAAAAJfOAQAAAANdXNlckxQQmFsYW5jZQgFAAAAB3Jlc3VsdHMAAAACXzkEAAAAFnBvb2xBbW91bnRBc3NldEJhbGFuY2UIBQAAAAdyZXN1bHRzAAAAA18xMAQAAAAVcG9vbFByaWNlQXNzZXRCYWxhbmNlCAUAAAAHcmVzdWx0cwAAAANfMTEEAAAADXBvb2xMUEJhbGFuY2UIBQAAAAdyZXN1bHRzAAAAA18xMgQAAAAMY3VycmVudFByaWNlCAUAAAAHcmVzdWx0cwAAAANfMTMEAAAACnBvb2xTdGF0dXMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQgFAAAAB3Jlc3VsdHMAAAADXzE0AwMJAQAAABBpc0dsb2JhbFNodXRkb3duAAAAAAYJAAAAAAAAAgUAAAAKcG9vbFN0YXR1cwUAAAAMUG9vbFNodXRkb3duCQAAAgAAAAEJAAEsAAAAAgIAAAAsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAAGkAAAAAQUAAAAKcG9vbFN0YXR1cwkABEwAAAACCQEAAAAEQnVybgAAAAIFAAAACnBtdEFzc2V0SWQFAAAADnBtdEFzc2V0QW1vdW50CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAARb3V0QW1vdW50QXNzZXRBbXQDCQAAAAAAAAIFAAAADWFtb3VudEFzc2V0SWQCAAAAAAUAAAAEdW5pdAkAAlkAAAABBQAAAA1hbW91bnRBc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAQb3V0UHJpY2VBc3NldEFtdAkAAlkAAAABBQAAAAxwcmljZUFzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAFmtleVBvb2xMaXF1aWRpdHlCeVVzZXIAAAADBQAAABVhbW91bnRBc3NldEludGVybmFsSWQFAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgkBAAAAEWRhdGFQb29sTGlxdWlkaXR5AAAAAwkAAGUAAAACBQAAABZ1c2VyQW1vdW50QXNzZXRCYWxhbmNlBQAAABFvdXRBbW91bnRBc3NldEFtdAkAAGUAAAACBQAAABV1c2VyUHJpY2VBc3NldEJhbGFuY2UFAAAAEG91dFByaWNlQXNzZXRBbXQJAABlAAAAAgUAAAANdXNlckxQQmFsYW5jZQUAAAAOcG10QXNzZXRBbW91bnQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEGtleVBvb2xMaXF1aWRpdHkAAAACBQAAABVhbW91bnRBc3NldEludGVybmFsSWQFAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkCQEAAAARZGF0YVBvb2xMaXF1aWRpdHkAAAADCQAAZQAAAAIFAAAAFnBvb2xBbW91bnRBc3NldEJhbGFuY2UFAAAAEW91dEFtb3VudEFzc2V0QW10CQAAZQAAAAIFAAAAFXBvb2xQcmljZUFzc2V0QmFsYW5jZQUAAAAQb3V0UHJpY2VBc3NldEFtdAkAAGUAAAACBQAAAA1wb29sTFBCYWxhbmNlBQAAAA5wbXRBc3NldEFtb3VudAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASa2V5R2V0QWN0aW9uQnlVc2VyAAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkBAAAAEWRhdGFHZXRBY3Rpb25JbmZvAAAABgUAAAARb3V0QW1vdW50QXNzZXRBbXQFAAAAEG91dFByaWNlQXNzZXRBbXQFAAAADnBtdEFzc2V0QW1vdW50BQAAAAxjdXJyZW50UHJpY2UFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADGtleVByaWNlTGFzdAAAAAAJAAEsAAAAAgIAAAAEJXNfXwkAAaQAAAABBQAAAAxjdXJyZW50UHJpY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAD2tleVByaWNlSGlzdG9yeQAAAAIFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAAEsAAAAAgIAAAAEJXNfXwkAAaQAAAABBQAAAAxjdXJyZW50UHJpY2UFAAAAA25pbAAAAAFpAQAAAAhhY3RpdmF0ZQAAAAUAAAAOYW1vdW50QXNzZXRTdHIAAAANcHJpY2VBc3NldFN0cgAAAAtscEFzc2V0TmFtZQAAAAxscEFzc2V0RGVzY3IAAAAKcG9vbFdlaWdodAMJAQAAAAIhPQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABRmYWN0b3J5QWRkcmVzc1N0cmluZwkAAAIAAAABAgAAABJwZXJtaXNzaW9ucyBkZW5pZWQEAAAADWFtb3VudEFzc2V0SWQJAAJZAAAAAQUAAAAOYW1vdW50QXNzZXRTdHIEAAAAE2Ftb3VudEFzc2V0RGVjaW1hbHMICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAADWFtb3VudEFzc2V0SWQAAAAIZGVjaW1hbHMEAAAADHByaWNlQXNzZXRJZAkAAlkAAAABBQAAAA1wcmljZUFzc2V0U3RyBAAAABJwcmljZUFzc2V0RGVjaW1hbHMICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAADHByaWNlQXNzZXRJZAAAAAhkZWNpbWFscwQAAAASbHBBc3NldElzc3VlQWN0aW9uCQAEQgAAAAUFAAAAC2xwQXNzZXROYW1lBQAAAAxscEFzc2V0RGVzY3IAAAAAAAAAAAEAAAAAAAAAAAgGBAAAAAlscEFzc2V0SWQJAAQ4AAAAAQUAAAASbHBBc3NldElzc3VlQWN0aW9uBAAAABFscEFzc2V0SWRBc1N0cmluZwkAAlgAAAABBQAAAAlscEFzc2V0SWQJAAUUAAAAAgkABEwAAAACBQAAABJscEFzc2V0SXNzdWVBY3Rpb24JAARMAAAAAgkBAAAABEJ1cm4AAAACBQAAAAlscEFzc2V0SWQAAAAAAAAAAAEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADmtleUFtb3VudEFzc2V0AAAAAAUAAAAOYW1vdW50QXNzZXRTdHIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleVByaWNlQXNzZXQAAAAABQAAAA1wcmljZUFzc2V0U3RyBQAAAANuaWwFAAAAEWxwQXNzZXRJZEFzU3RyaW5nAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAAHJG1hdGNoMAUAAAACdHgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABU9yZGVyBAAAAAVvcmRlcgUAAAAHJG1hdGNoMAkAAZEAAAACCQEAAAAbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkAAAAAQUAAAAFb3JkZXIAAAAAAAAAAAEDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAE0V4Y2hhbmdlVHJhbnNhY3Rpb24EAAAACmV4Y2hhbmdlVHgFAAAAByRtYXRjaDAJAAGRAAAAAgkBAAAAIHZhbGlkYXRlTWF0Y2hlckV4Y2hhbmdlVHhBbGxvd2VkAAAAAQUAAAAKZXhjaGFuZ2VUeAAAAAAAAAAAAQkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXmd+z/T", "height": 1671279, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2HnECcJonSQyf3WFk6GB2AjVSk22V9qNPrM6jJkXnZWE Next: 8yBwhqFyXk2ErBsNhxcETENmffixcDuT6ZV15oCFX7o1 Diff:
OldNewDifferences
1515
1616 let g = 4
1717
18-let h = fromBase58String("6pJkrwfWyhZjm3LoQWRjjNVaLt5CQzqfggzXyqr7nrwA")
18+let h = 0
1919
2020 let i = 1
2121
22-let j = 2
22+let j = "6pJkrwfWyhZjm3LoQWRjjNVaLt5CQzqfggzXyqr7nrwA"
2323
24-let k = 3
24+let k = 1
2525
26-let l = 4
26+let l = 2
2727
28-let m = 5
28+let m = 3
2929
30-let n = 6
30+let n = 4
3131
32-let o = 7
32+let o = 5
3333
34-let p = 8
34+let p = 6
3535
36-let q = 9
36+let q = 7
3737
38-let r = 10
38+let r = 8
3939
40-let s = 1
40+let s = 9
4141
42-let t = 2
42+let t = 10
4343
44-let u = 3
44+let u = 11
4545
46-func v () = "%s%s__price__last"
46+let v = 12
47+
48+let w = 13
49+
50+let x = 1
51+
52+let y = 2
53+
54+let z = 3
55+
56+func A () = "%s%s__price__last"
4757
4858
49-func w (x,y) = makeString(["%s%s%d%d__price__history", toString(x), toString(y)], c)
59+func B (C,D) = makeString(["%s%s%d%d__price__history", toString(C), toString(D)], c)
5060
5161
52-func z (A,B) = (((("%d%d%s__" + A) + "__") + B) + "__locked")
62+func E (F,G) = (((("%d%d%s__" + F) + "__") + G) + "__locked")
5363
5464
55-func C (A,B,D) = (((((("%d%d%s%s__" + A) + "__") + B) + "__") + D) + "__locked")
65+func H (F,G,I) = (((((("%d%d%s%s__" + F) + "__") + G) + "__") + I) + "__locked")
5666
5767
58-func E (D,F) = ((("%s%s%s__P__" + D) + "__") + F)
68+func J (I,K) = ((("%s%s%s__P__" + I) + "__") + K)
5969
6070
61-func G (D,F) = ((("%s%s%s__G__" + D) + "__") + F)
71+func L (I,K) = ((("%s%s%s__G__" + I) + "__") + K)
6272
6373
64-func H (I) = (("%s%s%s__" + I) + "__mappings__poolContract2LpAsset")
74+func M () = "%s_amountAsset"
6575
6676
67-func J (K,L) = (((("%d%d%s__" + K) + "__") + L) + "__config")
77+func N () = "%s_priceAsset"
6878
6979
70-func M () = {
71- let N = addressFromPublicKey(h)
72- let O = split(valueOrErrorMessage(getString(N, H(toString(this))), "No factory config found for pool address."), c)
73- let P = split(valueOrErrorMessage(getString(N, J(O[1], O[2])), "No factory config found for pool assets."), c)
74- P
80+func O (P) = (("%s%s%s__" + P) + "__mappings__poolContract2LpAsset")
81+
82+
83+func Q (R,S) = (((("%d%d%s__" + R) + "__") + S) + "__config")
84+
85+
86+func T (U) = ("%s%s%s__mappings__baseAsset2internalId__" + U)
87+
88+
89+func V () = "%s__shutdown"
90+
91+
92+func W () = valueOrElse(getBoolean(value(addressFromString(j)), V()), false)
93+
94+
95+func X () = {
96+ let Y = valueOrErrorMessage(getString(M()), "No config for amount asset found")
97+ let Z = valueOrErrorMessage(getString(N()), "No config for price asset found")
98+ let aa = valueOrErrorMessage(getString(value(addressFromString(j)), T(Y)), "No config for internal amount asset found")
99+ let ab = valueOrErrorMessage(getString(value(addressFromString(j)), T(Z)), "No config for internal price asset found")
100+ split(valueOrErrorMessage(getString(addressFromStringValue(j), Q(aa, ab)), "No factory config found for pool assets."), c)
75101 }
76102
77103
78-func Q (R,S) = {
79- let T = getString(z(R, S))
80- if (!(isDefined(T)))
104+func ac (ad,ae) = {
105+ let af = getString(E(ad, ae))
106+ if (!(isDefined(af)))
81107 then ["", "0", "0", "0"]
108+ else split(value(af), c)
109+ }
110+
111+
112+func ag (ad,ae,I) = {
113+ let af = getString(H(ad, ae, I))
114+ if (!(isDefined(af)))
115+ then ["", "0", "0", "0", "0"]
116+ else split(value(af), c)
117+ }
118+
119+
120+func ah (ai,aj,ak) = makeString(["%d%d%d", toString(ai), toString(aj), toString(ak)], c)
121+
122+
123+func al (am,an,ao,ap,aq,ar,as,at) = makeString(["%d%d%d%d%d%d%d", toString(am), toString(an), toString(ao), toString(ap), toString(aq), toString(ar), toString(as), toString(at)], c)
124+
125+
126+func au (av,aw,ax,ap,as,at) = makeString(["%d%d%d%d%d%d", toString(av), toString(aw), toString(ax), toString(ap), toString(as), toString(at)], c)
127+
128+
129+func ay (ai,aj,ak,I) = makeString(["%d%d%d", toString(ai), toString(aj), toString(ak)], c)
130+
131+
132+func az () = toBase64String(value(scriptHash(this)))
133+
134+
135+func aA (aB,aC) = {
136+ let aD = pow(10, 0, (a - aB), 0, 0, DOWN)
137+ $Tuple2((aC * aD), aD)
138+ }
139+
140+
141+func aE (aB,aC) = {
142+ let aD = pow(10, 0, (a - aB), 0, 0, DOWN)
143+ $Tuple2((aC / aD), aD)
144+ }
145+
146+
147+func aF (aG,aH,aI,aJ) = {
148+ let aK = aA(aG, aI)._1
149+ let aL = aA(aH, aJ)._1
150+ fraction(aL, b, aK)
151+ }
152+
153+
154+func aM (I) = {
155+ let aN = X()
156+ let aO = fromBase58String(aN[m])
157+ let aP = aN[n]
158+ let aQ = aN[o]
159+ let ad = aN[r]
160+ let ae = aN[s]
161+ let aG = parseIntValue(aN[p])
162+ let aH = parseIntValue(aN[q])
163+ let aR = ac(ad, ae)
164+ let aS = parseIntValue(aR[x])
165+ let aT = parseIntValue(aR[y])
166+ let aU = parseIntValue(aR[z])
167+ let aK = aA(aG, aS)._1
168+ let aL = aA(aH, aT)._1
169+ let aV = fraction(aK, (1 * b), aU)
170+ let aW = fraction(aL, (1 * b), aU)
171+ let aX = aF(aG, aH, aS, aT)
172+[aS, aT, aU, aX, aV, aW]
173+ }
174+
175+
176+func aY (aZ,ba,I) = {
177+ let bb = X()
178+ let aO = bb[m]
179+ let aP = bb[n]
180+ let aQ = bb[o]
181+ let ad = bb[r]
182+ let ae = bb[s]
183+ let aG = parseIntValue(bb[p])
184+ let aH = parseIntValue(bb[q])
185+ let bc = bb[l]
186+ let bd = ag(ad, ae, I)
187+ let be = parseIntValue(bd[z])
188+ let bf = parseIntValue(bd[x])
189+ let bg = parseIntValue(bd[y])
190+ let bh = ac(ad, ae)
191+ let aU = parseIntValue(bh[z])
192+ let aS = parseIntValue(bh[x])
193+ let aT = parseIntValue(bh[y])
194+ if ((aO != aZ))
195+ then throw("Invalid asset passed.")
196+ else if ((ba > be))
197+ then throw("Invalid amount passed. Amount less than available.")
198+ else {
199+ let aK = aA(aG, aS)._1
200+ let aL = aA(aH, aT)._1
201+ let av = fraction(aK, ba, aU)
202+ let aw = fraction(aL, ba, aU)
203+ let bi = aE(aG, av)._1
204+ let bj = aE(aH, aw)._1
205+ let aX = fraction(aL, b, aK)
206+ $Tuple14(bi, bj, ad, ae, bf, aP, bg, aQ, be, aS, aT, aU, aX, bc)
207+ }
208+ }
209+
210+
211+func bk (bl,am,bm,an,bn,I) = {
212+ let aN = X()
213+ let aO = fromBase58String(aN[m])
214+ let aP = aN[n]
215+ let aQ = aN[o]
216+ let ad = aN[r]
217+ let ae = aN[s]
218+ let aG = parseIntValue(aN[p])
219+ let aH = parseIntValue(aN[q])
220+ let bc = aN[l]
221+ let aR = ac(ad, ae)
222+ let aS = parseIntValue(aR[x])
223+ let aT = parseIntValue(aR[y])
224+ let aU = parseIntValue(aR[z])
225+ let bo = ag(ad, ae, I)
226+ let bf = parseIntValue(bo[x])
227+ let bg = parseIntValue(bo[y])
228+ let be = parseIntValue(bo[z])
229+ if (if ((aP != bm))
230+ then true
231+ else (aQ != bn))
232+ then throw("Invalid amount or price asset passed.")
82233 else {
83- let U = split(value(T), c)
84- U
234+ let bp = aA(aG, am)
235+ let bq = aA(aH, an)
236+ let br = bp._1
237+ let bs = bq._1
238+ let bt = fraction(bs, b, br)
239+ let aK = (aS * bp._2)
240+ let aL = (aT * bq._2)
241+ let bu = if ((aU == 0))
242+ then 0
243+ else fraction(aL, b, aK)
244+ let bv = if ((bu > bt))
245+ then fraction((bu - bt), 100, bu)
246+ else fraction((bt - bu), 100, bu)
247+ if (if ((bu != 0))
248+ then ((bv * b) > bl)
249+ else false)
250+ then throw(((("Price slippage " + toString(bv)) + " exceeded the passed limit of ") + toString(bl)))
251+ else {
252+ let bw = if ((aU == 0))
253+ then {
254+ let bx = pow(br, 0, 5, 1, 0, DOWN)
255+ let by = pow(bs, 0, 5, 1, 0, DOWN)
256+ (bx * by)
257+ }
258+ else {
259+ let bz = fraction(aU, br, aK)
260+ let bA = fraction(aU, bs, aL)
261+ if ((bA > bz))
262+ then bz
263+ else bA
264+ }
265+ $Tuple13(bw, bu, bf, bg, be, aS, aT, aU, ad, ae, aO, bv, bc)
266+ }
85267 }
86268 }
87269
88270
89-func V (R,S,D) = {
90- let T = getString(C(R, S, D))
91- if (!(isDefined(T)))
92- then ["", "0", "0", "0", "0"]
93- else {
94- let U = split(value(T), c)
95- U
96- }
271+func bB (bl,am,I) = {
272+ let aN = X()
273+ let aO = fromBase58String(aN[m])
274+ let aP = aN[n]
275+ let aQ = aN[o]
276+ let ad = aN[r]
277+ let ae = aN[s]
278+ let aG = parseIntValue(aN[p])
279+ let aH = parseIntValue(aN[q])
280+ let bc = aN[l]
281+ let aR = ac(ad, ae)
282+ let aS = parseIntValue(aR[x])
283+ let aT = parseIntValue(aR[y])
284+ let aU = parseIntValue(aR[z])
285+ let bC = aA(aG, aS)
286+ let bD = aA(aH, aT)
287+ let bu = if ((aU == 0))
288+ then 0
289+ else fraction(bD._1, b, bC._1)
290+ let bs = (bC._2 * bu)
291+ let an = aE(aG, bs)._1
292+ bk(bl, am, aP, an, aQ, I)
97293 }
98294
99295
100-func W (X,Y,Z) = makeString(["%d%d%d", toString(X), toString(Y), toString(Z)], c)
101-
102-
103-func aa (ab,ac,ad,ae,af,ag,ah) = makeString(["%d%d%d%d%d%d%d", toString(ab), toString(ac), toString(ad), toString(ae), toString(af), toString(ag), toString(ah)], c)
104-
105-
106-func ai (aj,ak,al,ae,ag,ah) = makeString(["%d%d%d%d%d%d", toString(aj), toString(ak), toString(al), toString(ae), toString(ag), toString(ah)], c)
107-
108-
109-func am (X,Y,Z,D) = makeString(["%d%d%d", toString(X), toString(Y), toString(Z)], c)
110-
111-
112-func an () = {
113- let ao = toBase64String(value(scriptHash(this)))
114- ao
296+func bE (bl,an,I) = {
297+ let aN = X()
298+ let aO = fromBase58String(aN[m])
299+ let aP = aN[n]
300+ let aQ = aN[o]
301+ let ad = aN[r]
302+ let ae = aN[s]
303+ let aG = parseIntValue(aN[p])
304+ let aH = parseIntValue(aN[q])
305+ let bc = aN[l]
306+ let aR = ac(ad, ae)
307+ let aS = parseIntValue(aR[x])
308+ let aT = parseIntValue(aR[y])
309+ let aU = parseIntValue(aR[z])
310+ let bC = aA(aG, aS)
311+ let bD = aA(aH, aT)
312+ let bu = if ((aU == 0))
313+ then 0
314+ else fraction(bD._1, b, bC._1)
315+ let br = (bC._2 / bu)
316+ let am = aE(aG, br)._1
317+ bk(bl, am, aP, an, aQ, I)
115318 }
116319
117320
118-func ap (aq,ar) = {
119- let as = pow(10, 0, (a - aq), 0, 0, DOWN)
120- $Tuple2((ar * as), as)
321+func bF (bG) = {
322+ let aN = X()
323+ let aP = aN[n]
324+ let aQ = aN[o]
325+ let bc = parseIntValue(aN[l])
326+ let bH = aN[v]
327+ let ad = aN[r]
328+ let ae = aN[s]
329+ let bI = parseIntValue(aN[p])
330+ let aH = parseIntValue(aN[q])
331+ let bJ = parseIntValue(aN[w])
332+ let aR = ac(ad, ae)
333+ let aS = parseIntValue(aR[x])
334+ let aT = parseIntValue(aR[y])
335+ let aX = aF(bI, aH, aS, aT)
336+ let bK = if (if (if (W())
337+ then true
338+ else (bc == f))
339+ then true
340+ else (bc == g))
341+ then false
342+ else true
343+ let bL = sigVerify(bG.bodyBytes, bG.proofs[0], fromBase58String(bH))
344+ let bM = bG.assetPair.amountAsset
345+ let bN = if ((bM == unit))
346+ then ""
347+ else toBase58String(value(bM))
348+ let bO = bG.assetPair.priceAsset
349+ let bP = if ((bO == unit))
350+ then ""
351+ else toBase58String(value(bO))
352+ let bQ = if (if ((bN != aP))
353+ then true
354+ else (bP != aQ))
355+ then false
356+ else true
357+ let bR = bG.price
358+ let bS = ((8 + aH) - bI)
359+ let bT = aA(bS, bR)
360+ let bU = if ((bT._1 > aX))
361+ then fraction((bT._1 - aX), 100, aX)
362+ else fraction((aX - bT._1), 100, aX)
363+ let bV = (bJ >= (bU * b))
364+[if (if (if (bQ)
365+ then bL
366+ else false)
367+ then bK
368+ else false)
369+ then bV
370+ else false]
121371 }
122372
123373
124-func at (au,av,aw,ax) = {
125- let ay = ap(au, aw)._1
126- let az = ap(av, ax)._1
127- fraction(az, b, ay)
374+func bW (bX) = {
375+ let aN = X()
376+ let aP = aN[n]
377+ let aQ = aN[o]
378+ let bc = parseIntValue(aN[l])
379+ let bH = aN[v]
380+ let bK = if (if (if (W())
381+ then true
382+ else (bc == f))
383+ then true
384+ else (bc == g))
385+ then false
386+ else true
387+ let bL = sigVerify(bX.bodyBytes, bX.proofs[0], fromBase58String(bH))
388+ let bY = bX.buyOrder.assetPair.amountAsset
389+ let bZ = if ((bY == unit))
390+ then ""
391+ else toBase58String(value(bY))
392+ let ca = bX.buyOrder.assetPair.priceAsset
393+ let cb = if ((ca == unit))
394+ then ""
395+ else toBase58String(value(ca))
396+ let bQ = if (if ((bZ != aP))
397+ then true
398+ else (cb != aQ))
399+ then false
400+ else true
401+ let cc = toBigInt(bX.amount)
402+ let cd = if ((bX.buyOrder.sender == this))
403+ then h
404+ else i
405+ let ce = fraction(cc, toBigInt(bX.price), toBigInt(b))
406+ let cf = if ((aP == ""))
407+ then value(wavesBalance(this)).available
408+ else value(assetBalance(this, fromBase58String(aP)))
409+ let cg = if ((aQ == ""))
410+ then value(wavesBalance(this)).available
411+ else value(assetBalance(this, fromBase58String(aQ)))
412+ let ch = fraction(toBigInt(cf), toBigInt(cg), toBigInt(b))
413+ let ci = if ((cd == h))
414+ then fraction((toBigInt(cf) + cc), (toBigInt(cg) - ce), toBigInt(b))
415+ else fraction((toBigInt(cf) - cc), (toBigInt(cg) + ce), toBigInt(b))
416+ let cj = (ci > ch)
417+[if (if (if (bQ)
418+ then cj
419+ else false)
420+ then bL
421+ else false)
422+ then bK
423+ else false]
128424 }
129425
130426
131-func aA () = {
132- let aB = M()
133- let aC = fromBase58String(aB[k])
134- let aD = aB[l]
135- let aE = aB[m]
136- let R = aB[p]
137- let S = aB[q]
138- let au = parseIntValue(aB[n])
139- let av = parseIntValue(aB[o])
140- let aF = Q(R, S)
141- let aG = parseIntValue(aF[s])
142- let aH = parseIntValue(aF[t])
143- let aI = parseIntValue(aF[u])
144- let ay = ap(au, aG)._1
145- let az = ap(av, aH)._1
146- let aJ = fraction(ay, (1 * b), aI)
147- let aK = fraction(az, (1 * b), aI)
148- let aL = at(au, av, aG, aH)
149-[aG, aH, aI, aL, aJ, aK]
150- }
151-
152-
153-func aM (aN,aO,D) = {
154- let aP = M()
155- let aC = aP[k]
156- let aD = aP[l]
157- let aE = aP[m]
158- let R = aP[p]
159- let S = aP[q]
160- let au = parseIntValue(aP[n])
161- let av = parseIntValue(aP[o])
162- let aQ = V(R, S, D)
163- let aR = parseIntValue(aQ[u])
164- let aS = parseIntValue(aQ[s])
165- let aT = parseIntValue(aQ[t])
166- let aU = Q(R, S)
167- let aI = parseIntValue(aU[u])
168- let aG = parseIntValue(aU[s])
169- let aH = parseIntValue(aU[t])
170- if ((aC != aN))
171- then throw("Invalid asset passed.")
172- else if ((aO > aR))
173- then throw("Invalid amount passed. Amount less than available.")
174- else {
175- let ay = ap(au, aG)._1
176- let az = ap(av, aH)._1
177- let aj = fraction(ay, aO, aI)
178- let ak = fraction(az, aO, aI)
179- let aL = fraction(az, b, ay)
180- $Tuple14(aD, aE, R, S, aS, aj, aT, ak, aj, aR, aG, aH, aI, aL)
181- }
182- }
183-
184-
185-func aV (aW,ab,aX,ac,aY,D) = {
186- let aB = M()
187- let aC = fromBase58String(aB[k])
188- let aD = aB[l]
189- let aE = aB[m]
190- let R = aB[p]
191- let S = aB[q]
192- let au = parseIntValue(aB[n])
193- let av = parseIntValue(aB[o])
194- let aF = Q(R, S)
195- let aG = parseIntValue(aF[s])
196- let aH = parseIntValue(aF[t])
197- let aI = parseIntValue(aF[u])
198- let aZ = V(R, S, D)
199- let aS = parseIntValue(aZ[s])
200- let aT = parseIntValue(aZ[t])
201- let aR = parseIntValue(aZ[u])
202- if (if ((aD != aX))
427+@Callable(ck)
428+func put (bl) = {
429+ let cl = value(ck.payments[0])
430+ let am = cl.amount
431+ let bm = if (!(isDefined(cl.assetId)))
432+ then fromBase58String("")
433+ else value(cl.assetId)
434+ let cm = value(ck.payments[1])
435+ let an = cm.amount
436+ let bn = value(cm.assetId)
437+ let cn = bk(bl, am, toBase58String(bm), an, toBase58String(bn), toString(ck.caller))
438+ let bw = cn._1
439+ let bu = cn._2
440+ let bf = cn._3
441+ let bg = cn._4
442+ let be = cn._5
443+ let aS = cn._6
444+ let aT = cn._7
445+ let aU = cn._8
446+ let ad = cn._9
447+ let ae = cn._10
448+ let aO = cn._11
449+ let co = cn._12
450+ let bc = parseIntValue(cn._13)
451+ if (if (if (W())
203452 then true
204- else (aE != aY))
205- then throw("Invalid amount or price asset passed.")
206- else {
207- let ba = ap(au, ab)
208- let bb = ap(av, ac)
209- let bc = ba._1
210- let bd = bb._1
211- let be = fraction(bd, b, bc)
212- let ay = (aG * ba._2)
213- let az = (aH * bb._2)
214- let bf = if ((aI == 0))
215- then 0
216- else fraction(az, b, ay)
217- let bg = if ((aI == 0))
218- then {
219- let bh = pow(bc, 0, 5, 1, 0, DOWN)
220- let bi = pow(bd, 0, 5, 1, 0, DOWN)
221- (bh * bi)
222- }
223- else {
224- let bj = fraction(bf, 100, be)
225- if ((bj > aW))
226- then throw(((("Price slippage " + toString(bj)) + " exceeded the passed limit of ") + toString(aW)))
227- else {
228- let bk = fraction(aI, bc, ay)
229- let bl = fraction(aI, bd, az)
230- if ((bl > bk))
231- then bk
232- else bl
233- }
234- }
235- $Tuple11(bg, bf, aS, aT, aR, aG, aH, aI, R, S, aC)
236- }
237- }
238-
239-
240-@Callable(bm)
241-func put (aW) = {
242- let bn = value(bm.payments[0])
243- let ab = bn.amount
244- let aX = value(bn.assetId)
245- let bo = value(bm.payments[1])
246- let ac = bo.amount
247- let aY = value(bo.assetId)
248- let bp = aV(aW, ab, toBase58String(aX), ac, toBase58String(aY), toString(bm.caller))
249- let bg = bp._1
250- let bf = bp._2
251- let aS = bp._3
252- let aT = bp._4
253- let aR = bp._5
254- let aG = bp._6
255- let aH = bp._7
256- let aI = bp._8
257- let R = bp._9
258- let S = bp._10
259- let aC = bp._11
260-[StringEntry(v(), ("%s__" + toString(bf))), StringEntry(w(height, lastBlock.timestamp), ("%s__" + toString(bf))), StringEntry(E(toString(bm.caller), toBase58String(bm.transactionId)), aa(ab, ac, bg, bf, aW, height, lastBlock.timestamp)), StringEntry(C(R, S, toString(bm.caller)), W((aS + ab), (aT + ac), (aR + bg))), StringEntry(z(R, S), W((aG + ab), (aH + ac), (aI + bg))), Reissue(aC, bg, true), ScriptTransfer(bm.caller, bg, aC)]
453+ else (bc == e))
454+ then true
455+ else (bc == g))
456+ then throw(("Put operation is blocked by admin. Status = " + toString(bc)))
457+ else [StringEntry(A(), ("%s__" + toString(bu))), StringEntry(B(height, lastBlock.timestamp), ("%s__" + toString(bu))), StringEntry(J(toString(ck.caller), toBase58String(ck.transactionId)), al(am, an, bw, bu, bl, co, height, lastBlock.timestamp)), StringEntry(H(ad, ae, toString(ck.caller)), ah((bf + am), (bg + an), (be + bw))), StringEntry(E(ad, ae), ah((aS + am), (aT + an), (aU + bw))), Reissue(aO, bw, true), ScriptTransfer(ck.caller, bw, aO)]
261458 }
262459
263460
264461
265-@Callable(bm)
462+@Callable(ck)
266463 func get () = {
267- let bn = value(bm.payments[0])
268- let bq = value(bn.assetId)
269- let br = bn.amount
270- let bs = aM(toBase58String(bq), br, toString(bm.caller))
271- let aD = bs._1
272- let aE = bs._2
273- let R = bs._3
274- let S = bs._4
275- let aS = bs._5
276- let aj = bs._6
277- let aT = bs._7
278- let ak = bs._8
279- let aR = bs._9
280- let aG = bs._11
281- let aH = bs._12
282- let aI = bs._13
283- let aL = bs._14
284-[Burn(bq, br), ScriptTransfer(bm.caller, aj, fromBase58String(aD)), ScriptTransfer(bm.caller, ak, fromBase58String(aE)), StringEntry(C(R, S, toString(bm.caller)), W((aS - aj), (aT - ak), (aR - br))), StringEntry(z(R, S), W((aG - aj), (aH - ak), (aI - br))), StringEntry(G(toString(bm.caller), toBase58String(bm.transactionId)), ai(aj, ak, br, aL, height, lastBlock.timestamp)), StringEntry(v(), ("%s__" + toString(aL))), StringEntry(w(height, lastBlock.timestamp), ("%s__" + toString(aL)))]
464+ let cl = value(ck.payments[0])
465+ let cp = value(cl.assetId)
466+ let cq = cl.amount
467+ let cr = aY(toBase58String(cp), cq, toString(ck.caller))
468+ let av = cr._1
469+ let aw = cr._2
470+ let ad = cr._3
471+ let ae = cr._4
472+ let bf = cr._5
473+ let aP = cr._6
474+ let bg = cr._7
475+ let aQ = cr._8
476+ let be = cr._9
477+ let aS = cr._10
478+ let aT = cr._11
479+ let aU = cr._12
480+ let aX = cr._13
481+ let bc = parseIntValue(cr._14)
482+ if (if (W())
483+ then true
484+ else (bc == g))
485+ then throw(("Get operation is blocked by admin. Status = " + toString(bc)))
486+ else [Burn(cp, cq), ScriptTransfer(ck.caller, av, if ((aP == ""))
487+ then unit
488+ else fromBase58String(aP)), ScriptTransfer(ck.caller, aw, fromBase58String(aQ)), StringEntry(H(ad, ae, toString(ck.caller)), ah((bf - av), (bg - aw), (be - cq))), StringEntry(E(ad, ae), ah((aS - av), (aT - aw), (aU - cq))), StringEntry(L(toString(ck.caller), toBase58String(ck.transactionId)), au(av, aw, cq, aX, height, lastBlock.timestamp)), StringEntry(A(), ("%s__" + toString(aX))), StringEntry(B(height, lastBlock.timestamp), ("%s__" + toString(aX)))]
285489 }
286490
287491
288492
289-@Callable(bm)
290-func activate (bt,bu,bv,bw,bx) = if ((bm.callerPublicKey != h))
493+@Callable(ck)
494+func activate (cs,ct,cu,cv,cw) = if ((toString(ck.caller) != j))
291495 then throw("permissions denied")
292496 else {
293- let aD = fromBase58String(bt)
294- let by = value(assetInfo(aD)).decimals
295- let aE = fromBase58String(bu)
296- let av = value(assetInfo(aE)).decimals
297- let bz = Issue(bv, bw, 1, 8, true)
298- let aC = calculateAssetId(bz)
299- let bA = toBase58String(aC)
300- $Tuple2([bz, Burn(aC, 1)], bA)
497+ let aP = fromBase58String(cs)
498+ let bI = value(assetInfo(aP)).decimals
499+ let aQ = fromBase58String(ct)
500+ let aH = value(assetInfo(aQ)).decimals
501+ let cx = Issue(cu, cv, 1, 8, true)
502+ let aO = calculateAssetId(cx)
503+ let cy = toBase58String(aO)
504+ $Tuple2([cx, Burn(aO, 1), StringEntry(M(), cs), StringEntry(N(), ct)], cy)
301505 }
302506
303507
304-
305-@Callable(bm)
306-func manage (bB) = nil
307-
308-
309-@Verifier(bC)
310-func bD () = sigVerify(bC.bodyBytes, bC.proofs[0], bC.senderPublicKey)
508+@Verifier(cz)
509+func cA () = {
510+ let cB = cz
511+ if ($isInstanceOf(cB, "Order"))
512+ then {
513+ let bG = cB
514+bF(bG)[1]
515+ }
516+ else if ($isInstanceOf(cB, "ExchangeTransaction"))
517+ then {
518+ let cC = cB
519+bW(cC)[1]
520+ }
521+ else sigVerify(cz.bodyBytes, cz.proofs[0], cz.senderPublicKey)
522+ }
311523
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = ((100 * 1000) * 1000)
77
88 let c = "__"
99
1010 let d = 1
1111
1212 let e = 2
1313
1414 let f = 3
1515
1616 let g = 4
1717
18-let h = fromBase58String("6pJkrwfWyhZjm3LoQWRjjNVaLt5CQzqfggzXyqr7nrwA")
18+let h = 0
1919
2020 let i = 1
2121
22-let j = 2
22+let j = "6pJkrwfWyhZjm3LoQWRjjNVaLt5CQzqfggzXyqr7nrwA"
2323
24-let k = 3
24+let k = 1
2525
26-let l = 4
26+let l = 2
2727
28-let m = 5
28+let m = 3
2929
30-let n = 6
30+let n = 4
3131
32-let o = 7
32+let o = 5
3333
34-let p = 8
34+let p = 6
3535
36-let q = 9
36+let q = 7
3737
38-let r = 10
38+let r = 8
3939
40-let s = 1
40+let s = 9
4141
42-let t = 2
42+let t = 10
4343
44-let u = 3
44+let u = 11
4545
46-func v () = "%s%s__price__last"
46+let v = 12
47+
48+let w = 13
49+
50+let x = 1
51+
52+let y = 2
53+
54+let z = 3
55+
56+func A () = "%s%s__price__last"
4757
4858
49-func w (x,y) = makeString(["%s%s%d%d__price__history", toString(x), toString(y)], c)
59+func B (C,D) = makeString(["%s%s%d%d__price__history", toString(C), toString(D)], c)
5060
5161
52-func z (A,B) = (((("%d%d%s__" + A) + "__") + B) + "__locked")
62+func E (F,G) = (((("%d%d%s__" + F) + "__") + G) + "__locked")
5363
5464
55-func C (A,B,D) = (((((("%d%d%s%s__" + A) + "__") + B) + "__") + D) + "__locked")
65+func H (F,G,I) = (((((("%d%d%s%s__" + F) + "__") + G) + "__") + I) + "__locked")
5666
5767
58-func E (D,F) = ((("%s%s%s__P__" + D) + "__") + F)
68+func J (I,K) = ((("%s%s%s__P__" + I) + "__") + K)
5969
6070
61-func G (D,F) = ((("%s%s%s__G__" + D) + "__") + F)
71+func L (I,K) = ((("%s%s%s__G__" + I) + "__") + K)
6272
6373
64-func H (I) = (("%s%s%s__" + I) + "__mappings__poolContract2LpAsset")
74+func M () = "%s_amountAsset"
6575
6676
67-func J (K,L) = (((("%d%d%s__" + K) + "__") + L) + "__config")
77+func N () = "%s_priceAsset"
6878
6979
70-func M () = {
71- let N = addressFromPublicKey(h)
72- let O = split(valueOrErrorMessage(getString(N, H(toString(this))), "No factory config found for pool address."), c)
73- let P = split(valueOrErrorMessage(getString(N, J(O[1], O[2])), "No factory config found for pool assets."), c)
74- P
80+func O (P) = (("%s%s%s__" + P) + "__mappings__poolContract2LpAsset")
81+
82+
83+func Q (R,S) = (((("%d%d%s__" + R) + "__") + S) + "__config")
84+
85+
86+func T (U) = ("%s%s%s__mappings__baseAsset2internalId__" + U)
87+
88+
89+func V () = "%s__shutdown"
90+
91+
92+func W () = valueOrElse(getBoolean(value(addressFromString(j)), V()), false)
93+
94+
95+func X () = {
96+ let Y = valueOrErrorMessage(getString(M()), "No config for amount asset found")
97+ let Z = valueOrErrorMessage(getString(N()), "No config for price asset found")
98+ let aa = valueOrErrorMessage(getString(value(addressFromString(j)), T(Y)), "No config for internal amount asset found")
99+ let ab = valueOrErrorMessage(getString(value(addressFromString(j)), T(Z)), "No config for internal price asset found")
100+ split(valueOrErrorMessage(getString(addressFromStringValue(j), Q(aa, ab)), "No factory config found for pool assets."), c)
75101 }
76102
77103
78-func Q (R,S) = {
79- let T = getString(z(R, S))
80- if (!(isDefined(T)))
104+func ac (ad,ae) = {
105+ let af = getString(E(ad, ae))
106+ if (!(isDefined(af)))
81107 then ["", "0", "0", "0"]
108+ else split(value(af), c)
109+ }
110+
111+
112+func ag (ad,ae,I) = {
113+ let af = getString(H(ad, ae, I))
114+ if (!(isDefined(af)))
115+ then ["", "0", "0", "0", "0"]
116+ else split(value(af), c)
117+ }
118+
119+
120+func ah (ai,aj,ak) = makeString(["%d%d%d", toString(ai), toString(aj), toString(ak)], c)
121+
122+
123+func al (am,an,ao,ap,aq,ar,as,at) = makeString(["%d%d%d%d%d%d%d", toString(am), toString(an), toString(ao), toString(ap), toString(aq), toString(ar), toString(as), toString(at)], c)
124+
125+
126+func au (av,aw,ax,ap,as,at) = makeString(["%d%d%d%d%d%d", toString(av), toString(aw), toString(ax), toString(ap), toString(as), toString(at)], c)
127+
128+
129+func ay (ai,aj,ak,I) = makeString(["%d%d%d", toString(ai), toString(aj), toString(ak)], c)
130+
131+
132+func az () = toBase64String(value(scriptHash(this)))
133+
134+
135+func aA (aB,aC) = {
136+ let aD = pow(10, 0, (a - aB), 0, 0, DOWN)
137+ $Tuple2((aC * aD), aD)
138+ }
139+
140+
141+func aE (aB,aC) = {
142+ let aD = pow(10, 0, (a - aB), 0, 0, DOWN)
143+ $Tuple2((aC / aD), aD)
144+ }
145+
146+
147+func aF (aG,aH,aI,aJ) = {
148+ let aK = aA(aG, aI)._1
149+ let aL = aA(aH, aJ)._1
150+ fraction(aL, b, aK)
151+ }
152+
153+
154+func aM (I) = {
155+ let aN = X()
156+ let aO = fromBase58String(aN[m])
157+ let aP = aN[n]
158+ let aQ = aN[o]
159+ let ad = aN[r]
160+ let ae = aN[s]
161+ let aG = parseIntValue(aN[p])
162+ let aH = parseIntValue(aN[q])
163+ let aR = ac(ad, ae)
164+ let aS = parseIntValue(aR[x])
165+ let aT = parseIntValue(aR[y])
166+ let aU = parseIntValue(aR[z])
167+ let aK = aA(aG, aS)._1
168+ let aL = aA(aH, aT)._1
169+ let aV = fraction(aK, (1 * b), aU)
170+ let aW = fraction(aL, (1 * b), aU)
171+ let aX = aF(aG, aH, aS, aT)
172+[aS, aT, aU, aX, aV, aW]
173+ }
174+
175+
176+func aY (aZ,ba,I) = {
177+ let bb = X()
178+ let aO = bb[m]
179+ let aP = bb[n]
180+ let aQ = bb[o]
181+ let ad = bb[r]
182+ let ae = bb[s]
183+ let aG = parseIntValue(bb[p])
184+ let aH = parseIntValue(bb[q])
185+ let bc = bb[l]
186+ let bd = ag(ad, ae, I)
187+ let be = parseIntValue(bd[z])
188+ let bf = parseIntValue(bd[x])
189+ let bg = parseIntValue(bd[y])
190+ let bh = ac(ad, ae)
191+ let aU = parseIntValue(bh[z])
192+ let aS = parseIntValue(bh[x])
193+ let aT = parseIntValue(bh[y])
194+ if ((aO != aZ))
195+ then throw("Invalid asset passed.")
196+ else if ((ba > be))
197+ then throw("Invalid amount passed. Amount less than available.")
198+ else {
199+ let aK = aA(aG, aS)._1
200+ let aL = aA(aH, aT)._1
201+ let av = fraction(aK, ba, aU)
202+ let aw = fraction(aL, ba, aU)
203+ let bi = aE(aG, av)._1
204+ let bj = aE(aH, aw)._1
205+ let aX = fraction(aL, b, aK)
206+ $Tuple14(bi, bj, ad, ae, bf, aP, bg, aQ, be, aS, aT, aU, aX, bc)
207+ }
208+ }
209+
210+
211+func bk (bl,am,bm,an,bn,I) = {
212+ let aN = X()
213+ let aO = fromBase58String(aN[m])
214+ let aP = aN[n]
215+ let aQ = aN[o]
216+ let ad = aN[r]
217+ let ae = aN[s]
218+ let aG = parseIntValue(aN[p])
219+ let aH = parseIntValue(aN[q])
220+ let bc = aN[l]
221+ let aR = ac(ad, ae)
222+ let aS = parseIntValue(aR[x])
223+ let aT = parseIntValue(aR[y])
224+ let aU = parseIntValue(aR[z])
225+ let bo = ag(ad, ae, I)
226+ let bf = parseIntValue(bo[x])
227+ let bg = parseIntValue(bo[y])
228+ let be = parseIntValue(bo[z])
229+ if (if ((aP != bm))
230+ then true
231+ else (aQ != bn))
232+ then throw("Invalid amount or price asset passed.")
82233 else {
83- let U = split(value(T), c)
84- U
234+ let bp = aA(aG, am)
235+ let bq = aA(aH, an)
236+ let br = bp._1
237+ let bs = bq._1
238+ let bt = fraction(bs, b, br)
239+ let aK = (aS * bp._2)
240+ let aL = (aT * bq._2)
241+ let bu = if ((aU == 0))
242+ then 0
243+ else fraction(aL, b, aK)
244+ let bv = if ((bu > bt))
245+ then fraction((bu - bt), 100, bu)
246+ else fraction((bt - bu), 100, bu)
247+ if (if ((bu != 0))
248+ then ((bv * b) > bl)
249+ else false)
250+ then throw(((("Price slippage " + toString(bv)) + " exceeded the passed limit of ") + toString(bl)))
251+ else {
252+ let bw = if ((aU == 0))
253+ then {
254+ let bx = pow(br, 0, 5, 1, 0, DOWN)
255+ let by = pow(bs, 0, 5, 1, 0, DOWN)
256+ (bx * by)
257+ }
258+ else {
259+ let bz = fraction(aU, br, aK)
260+ let bA = fraction(aU, bs, aL)
261+ if ((bA > bz))
262+ then bz
263+ else bA
264+ }
265+ $Tuple13(bw, bu, bf, bg, be, aS, aT, aU, ad, ae, aO, bv, bc)
266+ }
85267 }
86268 }
87269
88270
89-func V (R,S,D) = {
90- let T = getString(C(R, S, D))
91- if (!(isDefined(T)))
92- then ["", "0", "0", "0", "0"]
93- else {
94- let U = split(value(T), c)
95- U
96- }
271+func bB (bl,am,I) = {
272+ let aN = X()
273+ let aO = fromBase58String(aN[m])
274+ let aP = aN[n]
275+ let aQ = aN[o]
276+ let ad = aN[r]
277+ let ae = aN[s]
278+ let aG = parseIntValue(aN[p])
279+ let aH = parseIntValue(aN[q])
280+ let bc = aN[l]
281+ let aR = ac(ad, ae)
282+ let aS = parseIntValue(aR[x])
283+ let aT = parseIntValue(aR[y])
284+ let aU = parseIntValue(aR[z])
285+ let bC = aA(aG, aS)
286+ let bD = aA(aH, aT)
287+ let bu = if ((aU == 0))
288+ then 0
289+ else fraction(bD._1, b, bC._1)
290+ let bs = (bC._2 * bu)
291+ let an = aE(aG, bs)._1
292+ bk(bl, am, aP, an, aQ, I)
97293 }
98294
99295
100-func W (X,Y,Z) = makeString(["%d%d%d", toString(X), toString(Y), toString(Z)], c)
101-
102-
103-func aa (ab,ac,ad,ae,af,ag,ah) = makeString(["%d%d%d%d%d%d%d", toString(ab), toString(ac), toString(ad), toString(ae), toString(af), toString(ag), toString(ah)], c)
104-
105-
106-func ai (aj,ak,al,ae,ag,ah) = makeString(["%d%d%d%d%d%d", toString(aj), toString(ak), toString(al), toString(ae), toString(ag), toString(ah)], c)
107-
108-
109-func am (X,Y,Z,D) = makeString(["%d%d%d", toString(X), toString(Y), toString(Z)], c)
110-
111-
112-func an () = {
113- let ao = toBase64String(value(scriptHash(this)))
114- ao
296+func bE (bl,an,I) = {
297+ let aN = X()
298+ let aO = fromBase58String(aN[m])
299+ let aP = aN[n]
300+ let aQ = aN[o]
301+ let ad = aN[r]
302+ let ae = aN[s]
303+ let aG = parseIntValue(aN[p])
304+ let aH = parseIntValue(aN[q])
305+ let bc = aN[l]
306+ let aR = ac(ad, ae)
307+ let aS = parseIntValue(aR[x])
308+ let aT = parseIntValue(aR[y])
309+ let aU = parseIntValue(aR[z])
310+ let bC = aA(aG, aS)
311+ let bD = aA(aH, aT)
312+ let bu = if ((aU == 0))
313+ then 0
314+ else fraction(bD._1, b, bC._1)
315+ let br = (bC._2 / bu)
316+ let am = aE(aG, br)._1
317+ bk(bl, am, aP, an, aQ, I)
115318 }
116319
117320
118-func ap (aq,ar) = {
119- let as = pow(10, 0, (a - aq), 0, 0, DOWN)
120- $Tuple2((ar * as), as)
321+func bF (bG) = {
322+ let aN = X()
323+ let aP = aN[n]
324+ let aQ = aN[o]
325+ let bc = parseIntValue(aN[l])
326+ let bH = aN[v]
327+ let ad = aN[r]
328+ let ae = aN[s]
329+ let bI = parseIntValue(aN[p])
330+ let aH = parseIntValue(aN[q])
331+ let bJ = parseIntValue(aN[w])
332+ let aR = ac(ad, ae)
333+ let aS = parseIntValue(aR[x])
334+ let aT = parseIntValue(aR[y])
335+ let aX = aF(bI, aH, aS, aT)
336+ let bK = if (if (if (W())
337+ then true
338+ else (bc == f))
339+ then true
340+ else (bc == g))
341+ then false
342+ else true
343+ let bL = sigVerify(bG.bodyBytes, bG.proofs[0], fromBase58String(bH))
344+ let bM = bG.assetPair.amountAsset
345+ let bN = if ((bM == unit))
346+ then ""
347+ else toBase58String(value(bM))
348+ let bO = bG.assetPair.priceAsset
349+ let bP = if ((bO == unit))
350+ then ""
351+ else toBase58String(value(bO))
352+ let bQ = if (if ((bN != aP))
353+ then true
354+ else (bP != aQ))
355+ then false
356+ else true
357+ let bR = bG.price
358+ let bS = ((8 + aH) - bI)
359+ let bT = aA(bS, bR)
360+ let bU = if ((bT._1 > aX))
361+ then fraction((bT._1 - aX), 100, aX)
362+ else fraction((aX - bT._1), 100, aX)
363+ let bV = (bJ >= (bU * b))
364+[if (if (if (bQ)
365+ then bL
366+ else false)
367+ then bK
368+ else false)
369+ then bV
370+ else false]
121371 }
122372
123373
124-func at (au,av,aw,ax) = {
125- let ay = ap(au, aw)._1
126- let az = ap(av, ax)._1
127- fraction(az, b, ay)
374+func bW (bX) = {
375+ let aN = X()
376+ let aP = aN[n]
377+ let aQ = aN[o]
378+ let bc = parseIntValue(aN[l])
379+ let bH = aN[v]
380+ let bK = if (if (if (W())
381+ then true
382+ else (bc == f))
383+ then true
384+ else (bc == g))
385+ then false
386+ else true
387+ let bL = sigVerify(bX.bodyBytes, bX.proofs[0], fromBase58String(bH))
388+ let bY = bX.buyOrder.assetPair.amountAsset
389+ let bZ = if ((bY == unit))
390+ then ""
391+ else toBase58String(value(bY))
392+ let ca = bX.buyOrder.assetPair.priceAsset
393+ let cb = if ((ca == unit))
394+ then ""
395+ else toBase58String(value(ca))
396+ let bQ = if (if ((bZ != aP))
397+ then true
398+ else (cb != aQ))
399+ then false
400+ else true
401+ let cc = toBigInt(bX.amount)
402+ let cd = if ((bX.buyOrder.sender == this))
403+ then h
404+ else i
405+ let ce = fraction(cc, toBigInt(bX.price), toBigInt(b))
406+ let cf = if ((aP == ""))
407+ then value(wavesBalance(this)).available
408+ else value(assetBalance(this, fromBase58String(aP)))
409+ let cg = if ((aQ == ""))
410+ then value(wavesBalance(this)).available
411+ else value(assetBalance(this, fromBase58String(aQ)))
412+ let ch = fraction(toBigInt(cf), toBigInt(cg), toBigInt(b))
413+ let ci = if ((cd == h))
414+ then fraction((toBigInt(cf) + cc), (toBigInt(cg) - ce), toBigInt(b))
415+ else fraction((toBigInt(cf) - cc), (toBigInt(cg) + ce), toBigInt(b))
416+ let cj = (ci > ch)
417+[if (if (if (bQ)
418+ then cj
419+ else false)
420+ then bL
421+ else false)
422+ then bK
423+ else false]
128424 }
129425
130426
131-func aA () = {
132- let aB = M()
133- let aC = fromBase58String(aB[k])
134- let aD = aB[l]
135- let aE = aB[m]
136- let R = aB[p]
137- let S = aB[q]
138- let au = parseIntValue(aB[n])
139- let av = parseIntValue(aB[o])
140- let aF = Q(R, S)
141- let aG = parseIntValue(aF[s])
142- let aH = parseIntValue(aF[t])
143- let aI = parseIntValue(aF[u])
144- let ay = ap(au, aG)._1
145- let az = ap(av, aH)._1
146- let aJ = fraction(ay, (1 * b), aI)
147- let aK = fraction(az, (1 * b), aI)
148- let aL = at(au, av, aG, aH)
149-[aG, aH, aI, aL, aJ, aK]
150- }
151-
152-
153-func aM (aN,aO,D) = {
154- let aP = M()
155- let aC = aP[k]
156- let aD = aP[l]
157- let aE = aP[m]
158- let R = aP[p]
159- let S = aP[q]
160- let au = parseIntValue(aP[n])
161- let av = parseIntValue(aP[o])
162- let aQ = V(R, S, D)
163- let aR = parseIntValue(aQ[u])
164- let aS = parseIntValue(aQ[s])
165- let aT = parseIntValue(aQ[t])
166- let aU = Q(R, S)
167- let aI = parseIntValue(aU[u])
168- let aG = parseIntValue(aU[s])
169- let aH = parseIntValue(aU[t])
170- if ((aC != aN))
171- then throw("Invalid asset passed.")
172- else if ((aO > aR))
173- then throw("Invalid amount passed. Amount less than available.")
174- else {
175- let ay = ap(au, aG)._1
176- let az = ap(av, aH)._1
177- let aj = fraction(ay, aO, aI)
178- let ak = fraction(az, aO, aI)
179- let aL = fraction(az, b, ay)
180- $Tuple14(aD, aE, R, S, aS, aj, aT, ak, aj, aR, aG, aH, aI, aL)
181- }
182- }
183-
184-
185-func aV (aW,ab,aX,ac,aY,D) = {
186- let aB = M()
187- let aC = fromBase58String(aB[k])
188- let aD = aB[l]
189- let aE = aB[m]
190- let R = aB[p]
191- let S = aB[q]
192- let au = parseIntValue(aB[n])
193- let av = parseIntValue(aB[o])
194- let aF = Q(R, S)
195- let aG = parseIntValue(aF[s])
196- let aH = parseIntValue(aF[t])
197- let aI = parseIntValue(aF[u])
198- let aZ = V(R, S, D)
199- let aS = parseIntValue(aZ[s])
200- let aT = parseIntValue(aZ[t])
201- let aR = parseIntValue(aZ[u])
202- if (if ((aD != aX))
427+@Callable(ck)
428+func put (bl) = {
429+ let cl = value(ck.payments[0])
430+ let am = cl.amount
431+ let bm = if (!(isDefined(cl.assetId)))
432+ then fromBase58String("")
433+ else value(cl.assetId)
434+ let cm = value(ck.payments[1])
435+ let an = cm.amount
436+ let bn = value(cm.assetId)
437+ let cn = bk(bl, am, toBase58String(bm), an, toBase58String(bn), toString(ck.caller))
438+ let bw = cn._1
439+ let bu = cn._2
440+ let bf = cn._3
441+ let bg = cn._4
442+ let be = cn._5
443+ let aS = cn._6
444+ let aT = cn._7
445+ let aU = cn._8
446+ let ad = cn._9
447+ let ae = cn._10
448+ let aO = cn._11
449+ let co = cn._12
450+ let bc = parseIntValue(cn._13)
451+ if (if (if (W())
203452 then true
204- else (aE != aY))
205- then throw("Invalid amount or price asset passed.")
206- else {
207- let ba = ap(au, ab)
208- let bb = ap(av, ac)
209- let bc = ba._1
210- let bd = bb._1
211- let be = fraction(bd, b, bc)
212- let ay = (aG * ba._2)
213- let az = (aH * bb._2)
214- let bf = if ((aI == 0))
215- then 0
216- else fraction(az, b, ay)
217- let bg = if ((aI == 0))
218- then {
219- let bh = pow(bc, 0, 5, 1, 0, DOWN)
220- let bi = pow(bd, 0, 5, 1, 0, DOWN)
221- (bh * bi)
222- }
223- else {
224- let bj = fraction(bf, 100, be)
225- if ((bj > aW))
226- then throw(((("Price slippage " + toString(bj)) + " exceeded the passed limit of ") + toString(aW)))
227- else {
228- let bk = fraction(aI, bc, ay)
229- let bl = fraction(aI, bd, az)
230- if ((bl > bk))
231- then bk
232- else bl
233- }
234- }
235- $Tuple11(bg, bf, aS, aT, aR, aG, aH, aI, R, S, aC)
236- }
237- }
238-
239-
240-@Callable(bm)
241-func put (aW) = {
242- let bn = value(bm.payments[0])
243- let ab = bn.amount
244- let aX = value(bn.assetId)
245- let bo = value(bm.payments[1])
246- let ac = bo.amount
247- let aY = value(bo.assetId)
248- let bp = aV(aW, ab, toBase58String(aX), ac, toBase58String(aY), toString(bm.caller))
249- let bg = bp._1
250- let bf = bp._2
251- let aS = bp._3
252- let aT = bp._4
253- let aR = bp._5
254- let aG = bp._6
255- let aH = bp._7
256- let aI = bp._8
257- let R = bp._9
258- let S = bp._10
259- let aC = bp._11
260-[StringEntry(v(), ("%s__" + toString(bf))), StringEntry(w(height, lastBlock.timestamp), ("%s__" + toString(bf))), StringEntry(E(toString(bm.caller), toBase58String(bm.transactionId)), aa(ab, ac, bg, bf, aW, height, lastBlock.timestamp)), StringEntry(C(R, S, toString(bm.caller)), W((aS + ab), (aT + ac), (aR + bg))), StringEntry(z(R, S), W((aG + ab), (aH + ac), (aI + bg))), Reissue(aC, bg, true), ScriptTransfer(bm.caller, bg, aC)]
453+ else (bc == e))
454+ then true
455+ else (bc == g))
456+ then throw(("Put operation is blocked by admin. Status = " + toString(bc)))
457+ else [StringEntry(A(), ("%s__" + toString(bu))), StringEntry(B(height, lastBlock.timestamp), ("%s__" + toString(bu))), StringEntry(J(toString(ck.caller), toBase58String(ck.transactionId)), al(am, an, bw, bu, bl, co, height, lastBlock.timestamp)), StringEntry(H(ad, ae, toString(ck.caller)), ah((bf + am), (bg + an), (be + bw))), StringEntry(E(ad, ae), ah((aS + am), (aT + an), (aU + bw))), Reissue(aO, bw, true), ScriptTransfer(ck.caller, bw, aO)]
261458 }
262459
263460
264461
265-@Callable(bm)
462+@Callable(ck)
266463 func get () = {
267- let bn = value(bm.payments[0])
268- let bq = value(bn.assetId)
269- let br = bn.amount
270- let bs = aM(toBase58String(bq), br, toString(bm.caller))
271- let aD = bs._1
272- let aE = bs._2
273- let R = bs._3
274- let S = bs._4
275- let aS = bs._5
276- let aj = bs._6
277- let aT = bs._7
278- let ak = bs._8
279- let aR = bs._9
280- let aG = bs._11
281- let aH = bs._12
282- let aI = bs._13
283- let aL = bs._14
284-[Burn(bq, br), ScriptTransfer(bm.caller, aj, fromBase58String(aD)), ScriptTransfer(bm.caller, ak, fromBase58String(aE)), StringEntry(C(R, S, toString(bm.caller)), W((aS - aj), (aT - ak), (aR - br))), StringEntry(z(R, S), W((aG - aj), (aH - ak), (aI - br))), StringEntry(G(toString(bm.caller), toBase58String(bm.transactionId)), ai(aj, ak, br, aL, height, lastBlock.timestamp)), StringEntry(v(), ("%s__" + toString(aL))), StringEntry(w(height, lastBlock.timestamp), ("%s__" + toString(aL)))]
464+ let cl = value(ck.payments[0])
465+ let cp = value(cl.assetId)
466+ let cq = cl.amount
467+ let cr = aY(toBase58String(cp), cq, toString(ck.caller))
468+ let av = cr._1
469+ let aw = cr._2
470+ let ad = cr._3
471+ let ae = cr._4
472+ let bf = cr._5
473+ let aP = cr._6
474+ let bg = cr._7
475+ let aQ = cr._8
476+ let be = cr._9
477+ let aS = cr._10
478+ let aT = cr._11
479+ let aU = cr._12
480+ let aX = cr._13
481+ let bc = parseIntValue(cr._14)
482+ if (if (W())
483+ then true
484+ else (bc == g))
485+ then throw(("Get operation is blocked by admin. Status = " + toString(bc)))
486+ else [Burn(cp, cq), ScriptTransfer(ck.caller, av, if ((aP == ""))
487+ then unit
488+ else fromBase58String(aP)), ScriptTransfer(ck.caller, aw, fromBase58String(aQ)), StringEntry(H(ad, ae, toString(ck.caller)), ah((bf - av), (bg - aw), (be - cq))), StringEntry(E(ad, ae), ah((aS - av), (aT - aw), (aU - cq))), StringEntry(L(toString(ck.caller), toBase58String(ck.transactionId)), au(av, aw, cq, aX, height, lastBlock.timestamp)), StringEntry(A(), ("%s__" + toString(aX))), StringEntry(B(height, lastBlock.timestamp), ("%s__" + toString(aX)))]
285489 }
286490
287491
288492
289-@Callable(bm)
290-func activate (bt,bu,bv,bw,bx) = if ((bm.callerPublicKey != h))
493+@Callable(ck)
494+func activate (cs,ct,cu,cv,cw) = if ((toString(ck.caller) != j))
291495 then throw("permissions denied")
292496 else {
293- let aD = fromBase58String(bt)
294- let by = value(assetInfo(aD)).decimals
295- let aE = fromBase58String(bu)
296- let av = value(assetInfo(aE)).decimals
297- let bz = Issue(bv, bw, 1, 8, true)
298- let aC = calculateAssetId(bz)
299- let bA = toBase58String(aC)
300- $Tuple2([bz, Burn(aC, 1)], bA)
497+ let aP = fromBase58String(cs)
498+ let bI = value(assetInfo(aP)).decimals
499+ let aQ = fromBase58String(ct)
500+ let aH = value(assetInfo(aQ)).decimals
501+ let cx = Issue(cu, cv, 1, 8, true)
502+ let aO = calculateAssetId(cx)
503+ let cy = toBase58String(aO)
504+ $Tuple2([cx, Burn(aO, 1), StringEntry(M(), cs), StringEntry(N(), ct)], cy)
301505 }
302506
303507
304-
305-@Callable(bm)
306-func manage (bB) = nil
307-
308-
309-@Verifier(bC)
310-func bD () = sigVerify(bC.bodyBytes, bC.proofs[0], bC.senderPublicKey)
508+@Verifier(cz)
509+func cA () = {
510+ let cB = cz
511+ if ($isInstanceOf(cB, "Order"))
512+ then {
513+ let bG = cB
514+bF(bG)[1]
515+ }
516+ else if ($isInstanceOf(cB, "ExchangeTransaction"))
517+ then {
518+ let cC = cB
519+bW(cC)[1]
520+ }
521+ else sigVerify(cz.bodyBytes, cz.proofs[0], cz.senderPublicKey)
522+ }
311523

github/deemru/w8io/c3f4982 
97.14 ms