tx · 3RohkzdFAr8vMGFcNWgmXdQa4A8v3dQFsJqi1dSxVkir

3Mq63YubY7UKJEobhDuXfsnXaPDJZT1fDhx:  -0.01400000 Waves

2021.12.29 19:59 [1855777] smart account 3Mq63YubY7UKJEobhDuXfsnXaPDJZT1fDhx > SELF 0.00000000 Waves

{ "type": 13, "id": "3RohkzdFAr8vMGFcNWgmXdQa4A8v3dQFsJqi1dSxVkir", "fee": 1400000, "feeAssetId": null, "timestamp": 1640797230833, "version": 2, "chainId": 84, "sender": "3Mq63YubY7UKJEobhDuXfsnXaPDJZT1fDhx", "senderPublicKey": "HXfVyeXgXUtHD3uSP6yjsk6JQcTwmU9qQTvhXzFpPw2T", "proofs": [ "56mBWRkVWLErmQ9eEGG8391cFXtXVSz5PHDv5hCnkoi5riib33bwoZwAh15GrrwmjResY16zrxbgJkp94ThB4bRw", "5dq77WyyeSjtd8SKKT3oCU6V6DXKfRcX6yD5vCh136exf4mHKwfC2V38b17Vt17L4HRta265R64cz71c3heZZsNP" ], "script": "base64:AAIFAAAAAAAAADMIAhIDCgEEEgcKBQEBCAgEEgMKAQESAwoBARIAEgMKAQESABIAEgMKAQESBQoDBAEIEgAAAABYAAAAAAd2ZXJzaW9uAgAAAAUxLjAuMAAAAAAKa2V5VmVyc2lvbgIAAAAHdmVyc2lvbgAAAAAJa2V5QWN0aXZlAgAAAAZhY3RpdmUAAAAAC2tleUFzc2V0SWRBAgAAAApBX2Fzc2V0X2lkAAAAAAtrZXlBc3NldElkQgIAAAAKQl9hc3NldF9pZAAAAAALa2V5QmFsYW5jZUECAAAAD0FfYXNzZXRfYmFsYW5jZQAAAAALa2V5QmFsYW5jZUICAAAAD0JfYXNzZXRfYmFsYW5jZQAAAAAPa2V5QmFsYW5jZUluaXRBAgAAAAxBX2Fzc2V0X2luaXQAAAAAD2tleUJhbGFuY2VJbml0QgIAAAAMQl9hc3NldF9pbml0AAAAAA9rZXlTaGFyZUFzc2V0SWQCAAAADnNoYXJlX2Fzc2V0X2lkAAAAABNrZXlTaGFyZUFzc2V0U3VwcGx5AgAAABJzaGFyZV9hc3NldF9zdXBwbHkAAAAADWtleUNvbW1pc3Npb24CAAAACmNvbW1pc3Npb24AAAAAG2tleUNvbW1pc3Npb25TY2FsZURlbGltaXRlcgIAAAAaY29tbWlzc2lvbl9zY2FsZV9kZWxpbWl0ZXIAAAAACGtleUNhdXNlAgAAAA5zaHV0ZG93bl9jYXVzZQAAAAAPa2V5Rmlyc3RIYXJ2ZXN0AgAAAA1maXJzdF9oYXJ2ZXN0AAAAABVrZXlGaXJzdEhhcnZlc3RIZWlnaHQCAAAAFGZpcnN0X2hhcnZlc3RfaGVpZ2h0AAAAAAtrU2hhcmVMaW1pdAIAAAAcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAAAAAALa0Jhc2VQZXJpb2QCAAAAC2Jhc2VfcGVyaW9kAAAAAA1rUGVyaW9kTGVuZ3RoAgAAAA1wZXJpb2RfbGVuZ3RoAAAAAAxrU3RhcnRIZWlnaHQCAAAADHN0YXJ0X2hlaWdodAAAAAATa0ZpcnN0SGFydmVzdEhlaWdodAIAAAAUZmlyc3RfaGFydmVzdF9oZWlnaHQAAAAAEmtleVVTRE5OU0JUQWRkcmVzcwIAAAAYc3Rha2luZ191c2RubnNidF9hZGRyZXNzAAAAAA5rZXlFVVJOQWRkcmVzcwIAAAAUc3Rha2luZ19ldXJuX2FkZHJlc3MAAAAADmtleUxlYXNpbmdQb29sAgAAAA9sZWFzaW5nX2FkZHJlc3MAAAAAEGtleUxlYXNpbmdBbW91bnQCAAAADmxlYXNpbmdfYW1vdW50AAAAAAxrZXlMZWFzaW5nSWQCAAAACmxlYXNpbmdfaWQAAAAAD2tleUFkbWluUHViS2V5MQIAAAALYWRtaW5fcHViXzEAAAAAD2tleUFkbWluUHViS2V5MgIAAAALYWRtaW5fcHViXzIAAAAAD2tleUFkbWluUHViS2V5MwIAAAALYWRtaW5fcHViXzMAAAAABm9yYWNsZQkBAAAAB0FkZHJlc3MAAAABAQAAABoBVOlFqh6QLzqu8boO5i6akl8amITh82KzCAEAAAALZ2V0QWRtaW5QdWIAAAABAAAAC2tleUFkbWluUHViBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABm9yYWNsZQUAAAALa2V5QWRtaW5QdWIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAGc3RyaW5nBQAAAAckbWF0Y2gwCQACWQAAAAEFAAAABnN0cmluZwQAAAAHbm90aGluZwUAAAAHJG1hdGNoMAkAAAIAAAABAgAAABlBZG1pbiBwdWJsaWMga2V5IGlzIGVtcHR5AAAAAAxhZG1pblB1YktleTEJAQAAAAtnZXRBZG1pblB1YgAAAAEFAAAAD2tleUFkbWluUHViS2V5MQAAAAAMYWRtaW5QdWJLZXkyCQEAAAALZ2V0QWRtaW5QdWIAAAABBQAAAA9rZXlBZG1pblB1YktleTIAAAAADGFkbWluUHViS2V5MwkBAAAAC2dldEFkbWluUHViAAAAAQUAAAAPa2V5QWRtaW5QdWJLZXkzAAAAABRhZG1pblB1YktleVN0YXJ0U3RvcAEAAAAgBM915WTQwQ9OZ7kfE2TEGg3qhCRCMX0zkF1AWAqdk0oAAAAAEmFkbWluUHViS2V5U3Rha2luZwEAAAAgBM915WTQwQ9OZ7kfE2TEGg3qhCRCMX0zkF1AWAqdk0oAAAAADXdhbGxldEFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVTfPUuXiVhZ3hXg5FELVt09el+9tX+FIYkAAAAADXZvdGluZ0FkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVQaNn7fV6KdJ2lc/r/3JtTn+6HDaD4gyn8AAAAABFVTRE4BAAAAIG8ko8qrMNxSKZjoLGFa7lp/I03CLXW76Z2qVODS0AfBAAAAAAROU0JUAQAAACAfMcqomheEmok3YjT1FeDjokifQYVi6vQeAO1aIhqpJAAAAAAEU1dPUAEAAAAgEv+BIJFIbrNA9tN9ExhCV/1vofsy06rszWo/nWl9O/gAAAAABEVVUk4BAAAAIMQE2t9aD0a2OEs+TuVY8nwo/62rHJEwmJzJLDjfxJK/AAAAAA1zdGFraW5nQXNzZXRzCQAETAAAAAICAAAABVdBVkVTCQAETAAAAAIJAAJYAAAAAQUAAAAEVVNETgkABEwAAAACCQACWAAAAAEFAAAABE5TQlQJAARMAAAAAgkAAlgAAAABBQAAAARFVVJOBQAAAANuaWwAAAAAFnN0YWtpbmdVU0ROTlNCVEFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAGb3JhY2xlBQAAABJrZXlVU0ROTlNCVEFkZHJlc3MCAAAAF25vIHVzZG4gc3Rha2luZyBhZGRyZXNzAAAAABJzdGFraW5nRVVSTkFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAGb3JhY2xlBQAAAA5rZXlFVVJOQWRkcmVzcwIAAAAXbm8gdXNkbiBzdGFraW5nIGFkZHJlc3MAAAAAFFVTRE5Ub1dhdmVzRXhjaGFuZ2VyCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUypap/9cFMncn8kUuv9CKh+qtjirIv4W0AAAAABNVU0ROVG9OU0JURXhjaGFuZ2VyCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUEWMEcf3cA2tBGebrexcf04K7NL8f1D3ZAAAAAApiYXNlUGVyaW9kCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANdm90aW5nQWRkcmVzcwUAAAALa0Jhc2VQZXJpb2QCAAAAEUVtcHR5IGtCYXNlUGVyaW9kAAAAAAtzdGFydEhlaWdodAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAADXZvdGluZ0FkZHJlc3MFAAAADGtTdGFydEhlaWdodAIAAAASRW1wdHkga1N0YXJ0SGVpZ2h0AAAAAAxwZXJpb2RMZW5ndGgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA12b3RpbmdBZGRyZXNzBQAAAA1rUGVyaW9kTGVuZ3RoAgAAABNFbXB0eSBrUGVyaW9kTGVuZ3RoAAAAABVmaXJzdEhhcnZlc3RFbmRQZXJpb2QJAABkAAAAAgkAAGQAAAACBQAAAApiYXNlUGVyaW9kCQAAaQAAAAIJAABlAAAAAgUAAAAGaGVpZ2h0BQAAAAtzdGFydEhlaWdodAUAAAAMcGVyaW9kTGVuZ3RoAAAAAAAAAAADAAAAAAZhY3RpdmUJAQAAABFAZXh0ck5hdGl2ZSgxMDUxKQAAAAIFAAAABHRoaXMFAAAACWtleUFjdGl2ZQAAAAALc3RyQXNzZXRJZEEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAAC2tleUFzc2V0SWRBAAAAAAtzdHJBc3NldElkQgkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwUAAAALa2V5QXNzZXRJZEIAAAAACGFzc2V0SWRBAwkAAAAAAAACBQAAAAtzdHJBc3NldElkQQIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAALc3RyQXNzZXRJZEEAAAAACGFzc2V0SWRCAwkAAAAAAAACBQAAAAtzdHJBc3NldElkQgIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAALc3RyQXNzZXRJZEIAAAAACmFzc2V0TmFtZUEEAAAAByRtYXRjaDAFAAAACGFzc2V0SWRBAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJpZAUAAAAHJG1hdGNoMAgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAACaWQAAAAEbmFtZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAF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bnQAAAABBQAAAAhhc3NldElkQgAAAAAKYXNzZXRJbml0QQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAPa2V5QmFsYW5jZUluaXRBAAAAAAphc3NldEluaXRCCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAAA9rZXlCYWxhbmNlSW5pdEIAAAAAEWF2YWlsYWJsZUJhbGFuY2VBCQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAAA1zdGFrZWRBbW91bnRBAAAAABFhdmFpbGFibGVCYWxhbmNlQgkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAANc3Rha2VkQW1vdW50QgAAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQQkAAGQAAAACCQEAAAAOYWNjb3VudEJhbGFuY2UAAAABBQAAAAhhc3NldElkQQUAAAANc3Rha2VkQW1vdW50QQAAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQgkAAGQAAAACCQEAAAAOYWNjb3VudEJhbGFuY2UAAAABBQAAAAhhc3NldElkQgUAAAANc3Rha2VkQW1vdW50QgAAAAAQaGFzRW5vdWdoQmFsYW5jZQMJAABnAAAAAgUAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQQUAAAAIYmFsYW5jZUEJAABnAAAAAgUAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQgUAAAAIYmFsYW5jZUIHAQAAAAxnZXRBc3NldEluZm8AAAABAAAAB2Fzc2V0SWQEAAAAByRtYXRjaDAFAAAAB2Fzc2V0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAmlkBQAAAAckbWF0Y2gwBAAAAAhzdHJpbmdJZAkAAlgAAAABBQAAAAJpZAQAAAAEaW5mbwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAD7AAAAAEFAAAAAmlkCQABLAAAAAIJAAEsAAAAAgIAAAAGQXNzZXQgBQAAAAhzdHJpbmdJZAIAAAAOIGRvZXNuJ3QgZXhpc3QJAAUVAAAAAwUAAAAIc3RyaW5nSWQIBQAAAARpbmZvAAAABG5hbWUIBQAAAARpbmZvAAAACGRlY2ltYWxzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAV3YXZlcwUAAAAHJG1hdGNoMAkABRUAAAADAgAAAAVXQVZFUwIAAAAFV0FWRVMAAAAAAAAAAAgJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IBAAAAFmdldEFzc2V0SW5mb0Zyb21TdHJpbmcAAAABAAAACGFzc2V0U3RyAwkAAAAAAAACBQAAAAhhc3NldFN0cgIAAAAFV0FWRVMJAAUVAAAAAwIAAAAFV0FWRVMCAAAABVdBVkVTAAAAAAAAAAAIBAAAAAhzdHJpbmdJZAUAAAAIYXNzZXRTdHIEAAAAAmlkCQACWQAAAAEFAAAACGFzc2V0U3RyBAAAAARpbmZvCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQUAAAACaWQJAAEsAAAAAgkAASwAAAACAgAAAAZBc3NldCAFAAAACHN0cmluZ0lkAgAAAA4gZG9lc24ndCBleGlzdAkABRUAAAADBQAAAAhzdHJpbmdJZAgFAAAABGluZm8AAAAEbmFtZQgFAAAABGluZm8AAAAIZGVjaW1hbHMBAAAAB3N1c3BlbmQAAAABAAAABWNhdXNlCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUHCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACGtleUNhdXNlBQAAAAVjYXVzZQUAAAADbmlsAQAAABhjYWxjU3Rha2luZ0Z1bmNBbmRBZGRyZXMAAAACAAAABXN0YWtlAAAAB2Fzc2V0SWQDBQAAAAVzdGFrZQMJAAAAAAAAAgUAAAAHYXNzZXRJZAUAAAAEVVNETgkABRQAAAACAgAAAAxsb2NrTmV1dHJpbm8FAAAAFnN0YWtpbmdVU0ROTlNCVEFkZHJlc3MDCQAAAAAAAAIFAAAAB2Fzc2V0SWQFAAAABE5TQlQJAAUUAAAAAgIAAAAIbG9ja05zYnQFAAAAFnN0YWtpbmdVU0ROTlNCVEFkZHJlc3MJAAUUAAAAAgIAAAAMc3RhcnRTdGFraW5nBQAAABJzdGFraW5nRVVSTkFkZHJlc3MDCQAAAAAAAAIFAAAAB2Fzc2V0SWQFAAAABFVTRE4JAAUUAAAAAgIAAAAOdW5sb2NrTmV1dHJpbm8FAAAAFnN0YWtpbmdVU0ROTlNCVEFkZHJlc3MDCQAAAAAAAAIFAAAAB2Fzc2V0SWQFAAAABE5TQlQJAAUUAAAAAgIAAAAKdW5sb2NrTnNidAUAAAAWc3Rha2luZ1VTRE5OU0JUQWRkcmVzcwkABRQAAAACAgAAAAtzdG9wU3Rha2luZwUAAAASc3Rha2luZ0VVUk5BZGRyZXNzAQAAABFjYWxjU3Rha2luZ1BhcmFtcwAAAAMAAAAFc3Rha2UAAAAGYW1vdW50AAAAB2Fzc2V0SWQDBQAAAAVzdGFrZQQAAAALJHQwNjkyMTY5ODcJAQAAABhjYWxjU3Rha2luZ0Z1bmNBbmRBZGRyZXMAAAACBQAAAAVzdGFrZQUAAAAHYXNzZXRJZAQAAAAEY2FsbAgFAAAACyR0MDY5MjE2OTg3AAAAAl8xBAAAAAtzdGFraW5nQWRkcggFAAAACyR0MDY5MjE2OTg3AAAAAl8yCQAFFgAAAAQFAAAABGNhbGwFAAAAC3N0YWtpbmdBZGRyBQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAAB2Fzc2V0SWQFAAAABmFtb3VudAUAAAADbmlsBAAAAAskdDA3MDczNzEzOQkBAAAAGGNhbGNTdGFraW5nRnVuY0FuZEFkZHJlcwAAAAIFAAAABXN0YWtlBQAAAAdhc3NldElkBAAAAARjYWxsCAUAAAALJHQwNzA3MzcxMzkAAAACXzEEAAAAC3N0YWtpbmdBZGRyCAUAAAALJHQwNzA3MzcxMzkAAAACXzIJAAUWAAAABAUAAAAEY2FsbAUAAAALc3Rha2luZ0FkZHIJAARMAAAAAgUAAAAGYW1vdW50CQAETAAAAAIJAAJYAAAAAQUAAAAHYXNzZXRJZAUAAAADbmlsBQAAAANuaWwBAAAADWNhbGN1bGF0ZUZlZXMAAAAEAAAACXBtdEFtb3VudAAAABJtaW5BbW91bnRUb1JlY2VpdmUAAAAJdG9rZW5Gcm9tAAAAB3Rva2VuVG8EAAAAEGFtb3VudFdpdGhvdXRGZWUJAABrAAAAAwUAAAAHdG9rZW5UbwUAAAAJcG10QW1vdW50CQAAZAAAAAIFAAAACXBtdEFtb3VudAUAAAAJdG9rZW5Gcm9tBAAAAA1hbW91bnRXaXRoRmVlCQAAawAAAAMFAAAAEGFtb3VudFdpdGhvdXRGZWUJAABlAAAAAgUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyBQAAAApjb21taXNzaW9uBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIEAAAAEGdvdmVybmFuY2VSZXdhcmQJAABrAAAAAwUAAAAQYW1vdW50V2l0aG91dEZlZQUAAAAUY29tbWlzc2lvbkdvdmVybmFuY2UFAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgMJAABmAAAAAgUAAAASbWluQW1vdW50VG9SZWNlaXZlBQAAAA1hbW91bnRXaXRoRmVlCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAHUNhbGN1bGF0ZWQgYW1vdW50IHRvIHJlY2VpdmUgCQABpAAAAAEFAAAADWFtb3VudFdpdGhGZWUCAAAAICBpcyBsZXNzIHRoYW4gc3BlY2lmaWVkIG1pbmltdW0gCQABpAAAAAEFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQkABRUAAAADBQAAABBhbW91bnRXaXRob3V0RmVlBQAAAA1hbW91bnRXaXRoRmVlBQAAABBnb3Zlcm5hbmNlUmV3YXJkAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAAJAQAAAAdzdXNwZW5kAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAjU3VzcGljaW91cyBzdGF0ZS4gQWN0dWFsIGJhbGFuY2VzOiAJAAGkAAAAAQUAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQQIAAAABIAUAAAAKYXNzZXROYW1lQQIAAAACLCAJAAGkAAAAAQUAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQgIAAAABIAUAAAAKYXNzZXROYW1lQgIAAAAJLiBTdGF0ZTogCQABpAAAAAEFAAAACGJhbGFuY2VBAgAAAAEgBQAAAAphc3NldE5hbWVBAgAAAAIsIAkA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AAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAtrZXlBc3NldElkQQUAAAAOcG10U3RyQXNzZXRJZEEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAALa2V5QXNzZXRJZEIFAAAADnBtdFN0ckFzc2V0SWRCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAAKcG10QW1vdW50QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIFAAAACnBtdEFtb3VudEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADWtleUNvbW1pc3Npb24FAAAACmNvbW1pc3Npb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAG2tleUNvbW1pc3Npb25TY2FsZURlbGltaXRlcgUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyCQAETAAAAAIFAAAACnNoYXJlSXNzdWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAPa2V5U2hhcmVBc3NldElkCQACWAAAAAEFAAAADHNoYXJlSXNzdWVJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATa2V5U2hhcmVBc3NldFN1cHBseQUAAAASc2hhcmVJbml0aWFsU3VwcGx5CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAASc2hhcmVJbml0aWFsU3VwcGx5BQAAAAxzaGFyZUlzc3VlSWQFAAAAA25pbAMFAAAADGZpcnN0SGFydmVzdAkABE4AAAACBQAAAAliYXNlRW50cnkJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAAD2tleUZpcnN0SGFydmVzdAUAAAAMZmlyc3RIYXJ2ZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABVrZXlGaXJzdEhhcnZlc3RIZWlnaHQJAABkAAAAAgUAAAALc3RhcnRIZWlnaHQJAABoAAAAAgUAAAAVZmlyc3RIYXJ2ZXN0RW5kUGVyaW9kBQAAAAxwZXJpb2RMZW5ndGgFAAAAA25pbAUAAAAJYmFzZUVudHJ5CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAARaW5pdFdpdGhJbml0UmF0aW8AAAAFAAAACWFtdEFzc2V0QQAAAAlhbXRBc3NldEIAAAALc3RyQXNzZXRJZEEAAAALc3RyQXNzZXRJZEIAAAAMZmlyc3RIYXJ2ZXN0BAAAAA0kdDAxMTIyMTExMzA4CQEAAAAWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwAAAAEFAAAAC3N0ckFzc2V0SWRBBAAAAA5wbXRTdHJBc3NldElkQQgFAAAADSR0MDExMjIxMTEzMDgAAAACXzEEAAAADXBtdEFzc2V0TmFtZUEIBQAAAA0kdDAxMTIyMTExMzA4AAAAAl8yBAAAAAxwbXREZWNpbWFsc0EIBQAAAA0kdDAxMTIyMTExMzA4AAAAAl8zBAAAAA0kdDAxMTMxMzExNDAwCQEAAAAWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwAAAAEFAAAAC3N0ckFzc2V0SWRCBAAAAA5wbXRTdHJBc3NldElkQggFAAAADSR0MDExMzEzMTE0MDAAAAACXzEEAAAADXBtdEFzc2V0TmFtZUIIBQAAAA0kdDAxMTMxMzExNDAwAAAAAl8yBAAAAAxwbXREZWNpbWFsc0IIBQAAAA0kdDAxMTMxMzExNDAwAAAAAl8zAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABJhZG1pblB1YktleVN0YWtpbmcFAAAAA25pbAgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CQAAAgAAAAECAAAAIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMJAQAAAAlpc0RlZmluZWQAAAABCQAEGwAAAAIFAAAABHRoaXMFAAAACWtleUFjdGl2ZQkAAAIAAAABAgAAABZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAwkAAAAAAAACBQAAAAtzdHJBc3NldElkQQUAAAALc3RyQXNzZXRJZEIJAAACAAAAAQIAAAAYQXNzZXRzIG11c3QgYmUgZGlmZmVyZW50BAAAAAlzaGFyZU5hbWUJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAAXMJAAEvAAAAAgUAAAANcG10QXNzZXROYW1lQQAAAAAAAAAABwIAAAABXwkAAS8AAAACBQAAAA1wbXRBc3NldE5hbWVCAAAAAAAAAAAHBAAAABBzaGFyZURlc2NyaXB0aW9uCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAiU2hhcmVUb2tlbiBvZiBTd29wRmkgcHJvdG9jb2wgZm9yIAUAAAANcG10QXNzZXROYW1lQQIAAAAFIGFuZCAFAAAADXBtdEFzc2V0TmFtZUICAAAADCBhdCBhZGRyZXNzIAkABCUAAAABBQAAAAR0aGlzBAAAAA1zaGFyZURlY2ltYWxzCQAAaQAAAAIJAABkAAAAAgUAAAAMcG10RGVjaW1hbHNBBQAAAAxwbXREZWNpbWFsc0IAAAAAAAAAAAIEAAAAEnNoYXJlSW5pdGlhbFN1cHBseQAAAAAAAAAAAAQAAAAKc2hhcmVJc3N1ZQkABEIAAAAFBQAAAAlzaGFyZU5hbWUFAAAAEHNoYXJlRGVzY3JpcHRpb24FAAAAEnNoYXJlSW5pdGlhbFN1cHBseQUAAAANc2hhcmVEZWNpbWFscwYEAAAADHNoYXJlSXNzdWVJZAkABDgAAAABBQAAAApzaGFyZUlzc3VlBAAAAAliYXNlRW50cnkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAKa2V5VmVyc2lvbgUAAAAHdmVyc2lvbgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAJa2V5QWN0aXZlBgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAtrZXlBc3NldElkQQUAAAAOcG10U3RyQXNzZXRJZEEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAALa2V5QXNzZXRJZEIFAAAADnBtdFN0ckFzc2V0SWRCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA9rZXlCYWxhbmNlSW5pdEEFAAAACWFtdEFzc2V0QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAPa2V5QmFsYW5jZUluaXRCBQAAAAlhbXRBc3NldEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANa2V5Q29tbWlzc2lvbgUAAAAKY29tbWlzc2lvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAba2V5Q29tbWlzc2lvblNjYWxlRGVsaW1pdGVyBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIJAARMAAAAAgUAAAAKc2hhcmVJc3N1ZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA9rZXlTaGFyZUFzc2V0SWQJAAJYAAAAAQUAAAAMc2hhcmVJc3N1ZUlkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABNrZXlTaGFyZUFzc2V0U3VwcGx5BQAAABJzaGFyZUluaXRpYWxTdXBwbHkFAAAAA25pbAMFAAAADGZpcnN0SGFydmVzdAkABE4AAAACBQAAAAliYXNlRW50cnkJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAAD2tleUZpcnN0SGFydmVzdAUAAAAMZmlyc3RIYXJ2ZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABVrZXlGaXJzdEhhcnZlc3RIZWlnaHQJAABkAAAAAgUAAAALc3RhcnRIZWlnaHQJAABoAAAAAgUAAAAVZmlyc3RIYXJ2ZXN0RW5kUGVyaW9kBQAAAAxwZXJpb2RMZW5ndGgFAAAAA25pbAUAAAAJYmFzZUVudHJ5AAAAAWkBAAAAGGtlZXBMaW1pdEZvckZpcnN0SGFydmVzdAAAAAEAAAAKc2hhcmVMaW1pdAkBAAAAC3ZhbHVlT3JF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QW1vdW50QQUAAAALc2NhbGVWYWx1ZTgFAAAACGJhbGFuY2VBCQAETAAAAAIJAABrAAAAAwUAAAAKcG10QW1vdW50QgUAAAALc2NhbGVWYWx1ZTgFAAAACGJhbGFuY2VCBQAAAANuaWwFAAAAEHNoYXJlQXNzZXRTdXBwbHkFAAAAC3NjYWxlVmFsdWU4AwMJAABmAAAAAgAAAAAAAAAAAAUAAAARc2xpcHBhZ2VUb2xlcmFuY2UGCQAAZgAAAAIFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAABpzbGlwcGFnZVRvbGVyYW5jZURlbGltaXRlcgkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAClTbGlwcGFnZSB0b2xlcmFuY2UgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIAkAAaQAAAABBQAAABpzbGlwcGFnZVRvbGVyYW5jZURlbGltaXRlcgIAAAAWIGluY2x1c2l2ZWx5LiBBY3R1YWw6IAkAAaQAAAABBQAAABFzbGlwcGFnZVRvbGVyYW5jZQMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAIJAAACAAAAAQIAAAAcVHdvIGF0dGFjaGVkIGFzc2V0cyBleHBlY3RlZAMDCQEAAAACIT0AAAACBQAAAAtwbXRBc3NldElkQQUAAAAIYXNzZXRJZEEGCQEAAAACIT0AAAACBQAAAAtwbXRBc3NldElkQgUAAAAIYXNzZXRJZEIJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAlSW5jb3JyZWN0IGFzc2V0cyBhdHRhY2hlZC4gRXhwZWN0ZWQ6IAUAAAALc3RyQXNzZXRJZEECAAAABSBhbmQgBQAAAAtzdHJBc3NldElkQgMDCQAAZgAAAAIJAABpAAAAAgkAAGgAAAACBQAAAAtzY2FsZVZhbHVlMwkAAGUAAAACBQAAABpzbGlwcGFnZVRvbGVyYW5jZURlbGltaXRlcgUAAAARc2xpcHBhZ2VUb2xlcmFuY2UFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyBQAAAAp0b2tlblJhdGlvBgkAAGYAAAACBQAAAAp0b2tlblJhdGlvCQAAaQAAAAIJAABoAAAAAgUAAAALc2NhbGVWYWx1ZTMJAABkAAAAAgUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAABpzbGlwcGFnZVRvbGVyYW5jZURlbGltaXRlcgkAAAIAAAABAgAAAD1JbmNvcnJlY3QgYXNzZXRzIGFtb3VudDogYW1vdW50cyBtdXN0IGhhdmUgdGhlIGNvbnRyYWN0IHJhdGlvAwkAAAAAAAACBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQAAAAAAAAAAAAJAAACAAAAAQIAAAAdVG9vIHNtYWxsIGFtb3VudCB0byByZXBsZW5pc2gDCQEAAAABIQAAAAEFAAAAEGhhc0Vub3VnaEJhbGFuY2UJAAROAAAAAgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAACnBtdEFtb3VudEEFAAAAC3BtdEFzc2V0SWRBCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAKcG10QW1vdW50QgUAAAALcG10QXNzZXRJZEIFAAAAA25pbAkBAAAAEXN1c3BlbmRTdXNwaWNpb3VzAAAAAAQAAAAGc3Rha2UxAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAADXN0YWtpbmdBc3NldHMFAAAADnBtdFN0ckFzc2V0SWRBCQAD/AAAAAQFAAAABHRoaXMCAAAADHN0YWtlVW5zdGFrZQkABEwAAAACBgkABEwAAAACBQAAAApwbXRBbW91bnRBCQAETAAAAAIFAAAADnBtdFN0ckFzc2V0SWRBBQAAAANuaWwFAAAAA25pbAAAAAAAAAAAAAMJAAAAAAAAAgUAAAAGc3Rha2UxBQAAAAZzdGFrZTEEAAAABnN0YWtlMgMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAA1zdGFraW5nQXNzZXRzBQAAAA5wbXRTdHJBc3NldElkQgkAA/wAAAAEBQAAAAR0aGlzAgAAAAxzdGFrZVVuc3Rha2UJAARMAAAAAgYJAARMAAAAAgUAAAAKcG10QW1vdW50QgkABEwAAAACBQAAAA5wbXRTdHJBc3NldElkQgUAAAADbmlsBQAAAANuaWwAAAAAAAAAAAADCQAAAAAAAAIFAAAABnN0YWtlMgUAAAAGc3Rha2UyCQAETAAAAAIJAQAAAAdSZWlzc3VlAAAAAwUAAAAMc2hhcmVBc3NldElkBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQGCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAAKcG10QW1vdW50QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIFAAAACnBtdEFtb3VudEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAE2tleVNoYXJlQXNzZXRTdXBwbHkFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUAAAAMc2hhcmVBc3NldElkBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAh3aXRoZHJhdwAAAAAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAQAAAAhpc0FjdGl2ZQAAAAAEAAAADSR0MDE2NzkzMTY4NjgJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAA0kdDAxNjc5MzE2ODY4AAAAAl8xBAAAAApwbXRBc3NldElkCAUAAAANJHQwMTY3OTMxNjg2OAAAAAJfMgQAAAAMYW1vdW50VG9QYXlBCQAAawAAAAMFAAAACXBtdEFtb3VudAUAAAAIYmFsYW5jZUEFAAAAEHNoYXJlQXNzZXRTdXBwbHkEAAAADGFtb3VudFRvUGF5QgkAAGsAAAADBQAAAAlwbXRBbW91bnQFAAAACGJhbGFu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YmFsYW5jZQMJAABnAAAAAgAAAAAAAAAAAAUAAAASbWluQW1vdW50VG9SZWNlaXZlCQAAAgAAAAEJAAEsAAAAAgIAAAA0TWluaW1hbCBhbW91bnQgdG8gcmVjZWl2ZSBtdXN0IGJlIHBvc2l0aXZlLiBBY3R1YWw6IAkAAaQAAAABBQAAABJtaW5BbW91bnRUb1JlY2VpdmUDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAHU9uZSBhdHRhY2hlZCBwYXltZW50IGV4cGVjdGVkAwkBAAAAASEAAAABBQAAABBoYXNFbm91Z2hCYWxhbmNlCQAETgAAAAIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAlwbXRBbW91bnQFAAAACnBtdEFzc2V0SWQFAAAAA25pbAkBAAAAEXN1c3BlbmRTdXNwaWNpb3VzAAAAAAMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEEEAAAAC2Fzc2V0SWRTZW5kBQAAAAhhc3NldElkQgQAAAANJHQwMTg4MDQxODkyNgkBAAAADWNhbGN1bGF0ZUZlZXMAAAAEBQAAAAlwbXRBbW91bnQFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQUAAAAIYmFsYW5jZUEFAAAACGJhbGFuY2VCBAAAABBhbW91bnRXaXRob3V0RmVlCAUAAAANJHQwMTg4MDQxODkyNgAAAAJfMQQAAAANYW1vdW50V2l0aEZlZQgFAAAADSR0MDE4ODA0MTg5MjYAAAACXzIEAAAAEGdvdmVybmFuY2VSZXdhcmQIBQAAAA0kdDAxODgwNDE4OTI2AAAAAl8zBAAAAAtuZXdCYWxhbmNlQQkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAAJcG10QW1vdW50BAAAAAtuZXdCYWxhbmNlQgkAAGUAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VCBQAAAA1hbW91bnRXaXRoRmVlBQAAABBnb3Zlcm5hbmNlUmV3YXJkBAAAAAZzdGFrZTEDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAANc3Rha2luZ0Fzc2V0cwUAAAALc3RyQXNzZXRJZEEJAAP8AAAABAUAAAAEdGhpcwIAAAAMc3Rha2VVbnN0YWtlCQAETAAAAAIGCQAETAAAAAIFAAAACXBtdEFtb3VudAkABEwAAAACBQAAAAtzdHJBc3NldElkQQUAAAADbmlsBQAAAANuaWwAAAAAAAAAAAADCQAAAAAAAAIFAAAABnN0YWtlMQUAAAAGc3Rha2UxBAAAAAZzdGFrZTIDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAANc3Rha2luZ0Fzc2V0cwUAAAALc3RyQXNzZXRJZEIJAAP8AAAABAUAAAAEdGhpcwIAAAAMc3Rha2VVbnN0YWtlCQAETAAAAAIHCQAETAAAAAIJAABkAAAAAgUAAAANYW1vdW50V2l0aEZlZQUAAAAQZ292ZXJuYW5jZVJld2FyZAkABEwAAAACBQAAAAtzdHJBc3NldElkQgUAAAADbmlsBQAAAANuaWwAAAAAAAAAAAADCQAAAAAAAAIFAAAABnN0YWtlMgUAAAAGc3Rha2UyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VCBQAAAAtuZXdCYWxhbmNlQgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADWFtb3VudFdpdGhGZWUFAAAAC2Fzc2V0SWRTZW5kCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADXdhbGxldEFkZHJlc3MFAAAAEGdvdmVybmFuY2VSZXdhcmQFAAAAC2Fzc2V0SWRTZW5kBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEIEAAAAC2Fzc2V0SWRTZW5kBQAAAAhhc3NldElkQQQAAAANJHQwMTk4ODEyMDAwMwkBAAAADWNhbGN1bGF0ZUZlZXMAAAAEBQAAAAlwbXRBbW91bnQFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQUAAAAIYmFsYW5jZUIFAAAACGJhbGFuY2VBBAAAABBhbW91bnRXaXRob3V0RmVlCAUAAAANJHQwMTk4ODEyMDAwMwAAAAJfMQQAAAANYW1vdW50V2l0aEZlZQgFAAAADSR0MDE5ODgxMjAwMDMAAAACXzIEAAAAEGdvdmVybmFuY2VSZXdhcmQIBQAAAA0kdDAxOTg4MTIwMDAzAAAAAl8zBAAAAAtuZXdCYWxhbmNlQQkAAGUAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAAA1hbW91bnRXaXRoRmVlBQAAABBnb3Zlcm5hbmNlUmV3YXJkBAAAAAtuZXdCYWxhbmNlQgkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAJcG10QW1vdW50BAAAAAZzdGFrZTEDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAANc3Rha2luZ0Fzc2V0cwUAAAALc3RyQXNzZXRJZEEJAAP8AAAABAUAAAAEdGhpcwIAAAAMc3Rha2VVbnN0YWtlCQAETAAAAAIHCQAETAAAAAIJAABkAAAAAgUAAAANYW1vdW50V2l0aEZlZQUAAAAQZ292ZXJuYW5jZVJld2FyZAkABEwAAAACBQAAAAtzdHJBc3NldElkQQUAAAADbmlsBQAAAANuaWwAAAAAAAAAAAADCQAAAAAAAAIFAAAABnN0YWtlMQUAAAAGc3Rha2UxBAAAAAZzdGFrZTIDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAANc3Rha2luZ0Fzc2V0cwUAAAALc3RyQXNzZXRJZEIJAAP8AAAABAUAAAAEdGhpcwIAAAAMc3Rha2VVbnN0YWtlCQAETAAAAAIGCQAETAAAAAIFAAAACXBtdEFtb3VudAkABEwAAAACBQAAAAtzdHJBc3NldElkQgUAAAADbmlsBQAAAANuaWwAAAAAAAAAAAADCQAAAAAAAAIFAAAABnN0YWtlMgUAAAAGc3Rha2UyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VCBQAAAAtuZXdCYWxhbmNlQgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADWFtb3VudFdpdGhGZWUFAAAAC2Fzc2V0SWRTZW5kCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADXdhbGxldEFkZHJlc3MFAAAAEGdvdmVybmFuY2VSZXdhcmQFAAAAC2Fzc2V0SWRTZW5kBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAACRJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQuIEV4cGVjdGVkOiAFAAAAC3N0ckFzc2V0SWRBAgAAAAQgb3IgBQAAAAtzdHJBc3NldElkQgAAAAFpAQAAAAhzaHV0ZG93bgAAAAADCQEAAAABIQAAAAEFAAAABmFjdGl2ZQkAAAIAAAABCQABLAAAAAICAAAAIkRBcHAgaXMgYWxyZWFkeSBzdXNwZW5kZWQuIENhdXNlOiAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAIa2V5Q2F1c2UCAAAAGnRoZSBjYXVzZSB3YXNuJ3Qgc3BlY2lmaWVkAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQEAAAAHc3VzcGVuZAAAAAECAAAAD1BhdXNlZCBieSBhZG1pbgAAAAFpAQAAAAhhY3RpdmF0ZQAAAAAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAQAAAAhpc0FjdGl2ZQAAAAADCQEAAAABIQAAAAEJAQAAAA9jb250YWluc0VsZW1lbnQAAAACCQAETAAAAAIFAAAADGFkbWluUHViS2V5MQkABEwAAAACBQAAAAxhZG1pblB1YktleTIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkzCQAETAAAAAIFAAAAFGFkbWluUHViS2V5U3RhcnRTdG9wBQAAAANuaWwIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkAAAIAAAABAgAAACFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24JAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAACWtleUFjdGl2ZQYJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAIa2V5Q2F1c2UFAAAAA25pbAAAAAFpAQAAABl0YWtlSW50b0FjY291bnRFeHRyYUZ1bmRzAAAAAQAAAAthbW91bnRMZWF2ZQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkBAAAACGlzQWN0aXZlAAAAAAQAAAAddW5jb3VudGFibGVBbW91bnRFbnJvbGxBc3NldEEJAABlAAAAAgUAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQQUAAAAIYmFsYW5jZUEEAAAAHXVuY291bnRhYmxlQW1vdW50RW5yb2xsQXNzZXRCCQAAZQAAAAIFAAAAGWFjY291bnRCYWxhbmNlV2l0aFN0YWtlZEIFAAAACGJhbGFuY2VCBAAAAA1hbW91bnRFbnJvbGxBCQAAZQAAAAIFAAAAHXVuY291bnRhYmxlQW1vdW50RW5yb2xsQXNzZXRBAwkAAAAAAAACBQAAAAhhc3NldElkQQUAAAAEdW5pdAUAAAALYW1vdW50TGVhdmUAAAAAAAAAAAAEAAAADWFtb3VudEVucm9sbEIJAABlAAAAAgUAAAAddW5jb3VudGFibGVBbW91bnRFbnJvbGxBc3NldEIDCQAAAAAAAAIFAAAACGFzc2V0SWRCBQAAAAR1bml0BQAAAAthbW91bnRMZWF2ZQAAAAAAAAAAAAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAACtPbmx5IHRoZSBEQXBwIGl0c2VsZiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uAwkAAGYAAAACAAAAAAAAAAAABQAAAAthbW91bnRMZWF2ZQkAAAIAAAABCQABLAAAAAICAAAAM0FyZ3VtZW50ICdhbW91bnRMZWF2ZScgY2Fubm90IGJlIG5lZ2F0aXZlLiBBY3R1YWw6IAkAAaQAAAABBQAAAAthbW91bnRMZWF2ZQMDCQAAZgAAAAIAAAAAAAAAAAAFAAAAHXVuY291bnRhYmxlQW1vdW50RW5yb2xsQXNzZXRBBgkAAGYAAAACAAAAAAAAAAAABQAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QgkBAAAAB3N1c3BlbmQAAAABAgAAABZFbnJvbGwgYW1vdW50IG5lZ2F0aXZlAwMJAABmAAAAAgAAAAAAAAAAAAUAAAANYW1vdW50RW5yb2xsQQYJAABmAAAAAgAAAAAAAAAAAAUAAAANYW1vdW50RW5yb2xsQgkAAAIAAAABAgAAABVUb28gbGFyZ2UgYW1vdW50TGVhdmUEAAAABnN0YWtlMQMDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAANc3Rha2luZ0Fzc2V0cwUAAAALc3RyQXNzZXRJZEEJAABmAAAAAgUAAAANYW1vdW50RW5yb2xsQQAAAAAAAAAAAAcJAAP8AAAABAUAAAAEdGhpcwIAAAAMc3Rha2VVbnN0YWtlCQAETAAAAAIGCQAETAAAAAIFAAAADWFtb3VudEVucm9sbEEJAARMAAAAAgUAAAALc3RyQXNzZXRJZEEFAAAAA25pbAUAAAADbmlsAAAAAAAAAAAAAwkAAAAAAAACBQAAAAZzdGFrZTEFAAAABnN0YWtlMQQAAAAGc3Rha2UyAwMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAA1zdGFraW5nQXNzZXRzBQAAAAtzdHJBc3NldElkQgkAAGYAAAACBQAAAA1hbW91bnRFbnJvbGxCAAAAAAAAAAAABwkAA/wAAAAEBQAAAAR0aGlzAgAAAAxzdGFrZVVuc3Rha2UJAARMAAAAAgYJAARMAAAAAgUAAAANYW1vdW50RW5yb2xsQgkABEwAAAACBQAAAAtzdHJBc3NldElkQgUAAAADbmlsBQAAAANuaWwAAAAAAAAAAAADCQAAAAAAAAIFAAAABnN0YWtlMgUAAAAGc3Rha2UyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAANYW1vdW50RW5yb2xsQQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIJAABkAAAAAgUAAAAIYmFsYW5jZUIFAAAADWFtb3VudEVucm9sbEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAMbGFzdF9pbmNvbWVfBQAAAAtzdHJBc3NldElkQQUAAAANYW1vdW50RW5yb2xsQQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAAAxsYXN0X2luY29tZV8FAAAAC3N0ckFzc2V0SWRCBQAAAA1hbW91bnRFbnJvbGxCBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAxzdGFrZVVuc3Rha2UAAAADAAAABXN0YWtlAAAABmFtb3VudAAAAA1hc3NldElkU3RyaW5nAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAALU9ubHkgY29udHJhY3QgaXRzZWxmIGNhbiBpbnZva2UgdGhpcyBmdW5jdGlvbgMJAAAAAAAAAgUAAAANYXNzZXRJZFN0cmluZwIAAAAFV0FWRVMEAAAABHBvb2wJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAZvcmFjbGUFAAAADmtleUxlYXNpbmdQb29sAgAAABlObyBsZWFzaW5nIHBvb2wgaW4gb3JhY2xlBAAAAAlsZWFzaW5nSWQJAAQcAAAAAgUAAAAEdGhpcwUAAAAMa2V5TGVhc2luZ0lkBAAAAA1sZWFzaW5nQW1vdW50CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAEGtleUxlYXNpbmdBbW91bnQAAAAAAAAAAAAEAAAADm5ld0xlYXNlQW1vdW50AwUAAAAFc3Rha2UJAABkAAAAAgUAAAANbGVhc2luZ0Ftb3VudAUAAAAGYW1vdW50CQAAZQAAAAIFAAAADWxlYXNpbmdBbW91bnQFAAAABmFtb3VudAQAAAAIbmV3TGVhc2UJAAREAAAAAgUAAAAEcG9vbAUAAAAObmV3TGVhc2VBbW91bnQEAAAACm5ld0xlYXNlSWQJAAQ5AAAAAQUAAAAIbmV3TGVhc2UEAAAACGJhc2VFdHJ5CQAETAAAAAIFAAAACG5ld0xlYXNlCQAETAAAAAIJAQAAAAtCaW5hcnlFbnRyeQAAAAIFAAAADGtleUxlYXNpbmdJZAUAAAAKbmV3TGVhc2VJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAQa2V5TGVhc2luZ0Ftb3VudAUAAAAObmV3TGVhc2VBbW91bnQFAAAAA25pbAQAAAAHJG1hdGNoMAUAAAAJbGVhc2luZ0lkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAANsSWQFAAAAByRtYXRjaDAJAAROAAAAAgkABEwAAAACCQEAAAALTGVhc2VDYW5jZWwAAAABBQAAAANsSWQFAAAAA25pbAUAAAAIYmFzZUV0cnkFAAAACGJhc2VFdHJ5BAAAAA0kdDAyNDE1MTI0MjU0CQEAAAARY2FsY1N0YWtpbmdQYXJhbXMAAAADBQAAAAVzdGFrZQUAAAAGYW1vdW50CQACWQAAAAEFAAAADWFzc2V0SWRTdHJpbmcEAAAABGNhbGwIBQAAAA0kdDAyNDE1MTI0MjU0AAAAAl8xBAAAAARhZGRyCAUAAAANJHQwMjQxNTEyNDI1NAAAAAJfMgQAAAAGcGFyYW1zCAUAAAANJHQwMjQxNTEyNDI1NAAAAAJfMwQAAAAIcGF5bWVudHMIBQAAAA0kdDAyNDE1MTI0MjU0AAAAAl80BAAAAANpbnYJAAP8AAAABAUAAAAEYWRkcgUAAAAEY2FsbAUAAAAGcGFyYW1zBQAAAAhwYXltZW50cwMJAAAAAAAAAgUAAAADaW52BQAAAANpbnYFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAIc3Rha2VBbGwAAAAACQEAAAALdmFsdWVPckVsc2UAAAACCQEAAAAIaXNBY3RpdmUAAAAAAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uBAAAAAZzdGFrZTEDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAANc3Rha2luZ0Fzc2V0cwUAAAALc3RyQXNzZXRJZEEEAAAAB2Ftb3VudEEJAABlAAAAAgUAAAAIYmFsYW5jZUEFAAAADXN0YWtlZEFtb3VudEEDCQAAZgAAAAIFAAAAB2Ftb3VudEEAAAAAAAAAAAAJAAP8AAAABAUAAAAEdGhpcwIAAAAMc3Rha2VVbnN0YWtlCQAETAAAAAIGCQAETAAAAAIFAAAAB2Ftb3VudEEJAARMAAAAAgUAAAALc3RyQXNzZXRJZEEFAAAAA25pbAUAAAADbmlsAAAAAAAAAAAAAAAAAAAAAAAAAwkAAAAAAAACBQAAAAZzdGFrZTEFAAAABnN0YWtlMQQAAAAGc3Rha2UyAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAADXN0YWtpbmdBc3NldHMFAAAAC3N0ckFzc2V0SWRCBAAAAAdhbW91bnRCCQAAZQAAAAIFAAAACGJhbGFuY2VCBQAAAA1zdGFrZWRBbW91bnRCAwkAAGYAAAACBQAAAAdhbW91bnRCAAAAAAAAAAAACQAD/AAAAAQFAAAABHRoaXMCAAAADHN0YWtlVW5zdGFrZQkABEwAAAACBgkABEwAAAACBQAAAAdhbW91bnRCCQAETAAAAAIFAAAAC3N0ckFzc2V0SWRCBQAAAANuaWwFAAAAA25pbAAAAAAAAAAAAAAAAAAAAAAAAAMJAAAAAAAAAgUAAAAGc3Rha2UyBQAAAAZzdGFrZTIFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAATbXVsdGlTaWduZWRCeUFkbWlucwQAAAASYWRtaW5QdWJLZXkxU2lnbmVkAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAADGFkbWluUHViS2V5MQAAAAAAAAAAAQAAAAAAAAAAAAQAAAASYWRtaW5QdWJLZXkyU2lnbmVkAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAEFAAAADGFkbWluUHViS2V5MgAAAAAAAAAAAQAAAAAAAAAAAAQAAAASYWRtaW5QdWJLZXkzU2lnbmVkAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAIFAAAADGFkbWluUHViS2V5MwAAAAAAAAAAAQAAAAAAAAAAAAkAAGcAAAACCQAAZAAAAAIJAABkAAAAAgUAAAASYWRtaW5QdWJLZXkxU2lnbmVkBQAAABJhZG1pblB1YktleTJTaWduZWQFAAAAEmFkbWluUHViS2V5M1NpZ25lZAAAAAAAAAAAAgQAAAAHJG1hdGNoMAUAAAACdHgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBAAAAANpbnYFAAAAByRtYXRjaDAEAAAAE2NhbGxUYWtlSW50b0FjY291bnQDCQAAAAAAAAIIBQAAAANpbnYAAAAEZEFwcAUAAAAEdGhpcwkAAAAAAAACCAUAAAADaW52AAAACGZ1bmN0aW9uAgAAABl0YWtlSW50b0FjY291bnRFeHRyYUZ1bmRzBwQAAAAPZXhjaGFuZ2VUb1dhdmVzAwMDCQAAAAAAAAIIBQAAAANpbnYAAAAEZEFwcAUAAAAUVVNETlRvV2F2ZXNFeGNoYW5nZXIJAAAAAAAAAggFAAAAA2ludgAAAAhmdW5jdGlvbgIAAAAIZXhjaGFuZ2UHCQAAAAAAAAIFAAAACGFzc2V0SWRBBQAAAARVU0ROBwYDAwkAAAAAAAACBQAAAAhhc3NldElkQgUAAAAEVVNETgkAAAAAAAACCQABkAAAAAEIBQAAAANpbnYAAAAIcGF5bWVudHMAAAAAAAAAAAEHCQAAAAAAAAIICQABkQAAAAIIBQAAAANpbnYAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAUAAAAEVVNETgcEAAAAD2V4Y2hhbmdlVG9OU0JUcwMDAwkAAAAAAAACCAUAAAADaW52AAAABGRBcHAFAAAAE1VTRE5Ub05TQlRFeGNoYW5nZXIJAAAAAAAAAggFAAAAA2ludgAAAAhmdW5jdGlvbgIAAAAIZXhjaGFuZ2UHCQAAAAAAAAIFAAAACGFzc2V0SWRBBQAAAAROU0JUBwYDAwkAAAAAAAACBQAAAAhhc3NldElkQgUAAAAETlNCVAkAAAAAAAACCQABkAAAAAEIBQAAAANpbnYAAAAIcGF5bWVudHMAAAAAAAAAAAEHCQAAAAAAAAIICQABkQAAAAIIBQAAAANpbnYAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAUAAAAEVVNETgcEAAAADXNpZ25lZEJ5QWRtaW4DAwMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAAAxhZG1pblB1YktleTEGCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAMYWRtaW5QdWJLZXkyBgkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAADGFkbWluUHViS2V5MwYJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAABJhZG1pblB1YktleVN0YWtpbmcDAwMDBQAAABNjYWxsVGFrZUludG9BY2NvdW50BgUAAAAPZXhjaGFuZ2VUb1dhdmVzBgUAAAAPZXhjaGFuZ2VUb05TQlRzBQAAAA1zaWduZWRCeUFkbWluBwYFAAAAE211bHRpU2lnbmVkQnlBZG1pbnMFAAAAE211bHRpU2lnbmVkQnlBZG1pbnO6pua+", "height": 1855777, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2VVe3JYquT2gW3tbyiMscaMkEbg4KAbn5P5aonaHxeAG Next: 9N9ZqKs5z1unpKR3LC1mX1czcDNU8jCeD4BAX568wHXn Diff:
OldNewDifferences
304304 }
305305
306306
307-func bb () = aR(((((((((((((((("Suspicious state. Actual balances: " + toString(aJ)) + " ") + ai) + ", ") + toString(aK)) + " ") + al) + ". State: ") + toString(am)) + " ") + ai) + ", ") + toString(an)) + " ") + al))
307+func bb (bc,bd,be,bf) = {
308+ let bg = fraction(bf, bc, (bc + be))
309+ let bh = fraction(bg, (as - aq), as)
310+ let bi = fraction(bg, ar, as)
311+ if ((bd > bh))
312+ then throw(((("Calculated amount to receive " + toString(bh)) + " is less than specified minimum ") + toString(bd)))
313+ else $Tuple3(bg, bh, bi)
314+ }
308315
309316
310-func bc () = if (ad)
317+func bj () = aR(((((((((((((((("Suspicious state. Actual balances: " + toString(aJ)) + " ") + ai) + ", ") + toString(aK)) + " ") + al) + ". State: ") + toString(am)) + " ") + ai) + ", ") + toString(an)) + " ") + al))
318+
319+
320+func bk () = if (ad)
311321 then unit
312322 else throw("DApp is inactive at this moment")
313323
314324
315325 @Callable(aC)
316-func init (bd) = {
317- let be = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
318- let bf = be._1
319- let bg = be._2
320- let bh = $Tuple2(aC.payments[1].amount, aC.payments[1].assetId)
321- let bi = bh._1
322- let bj = bh._2
323- let bk = aM(bg)
324- let bl = bk._1
325- let bm = bk._2
326- let bn = bk._3
327- let bo = aM(bj)
328- let bp = bo._1
329- let bq = bo._2
330- let br = bo._3
326+func init (bl) = {
327+ let bm = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
328+ let bn = bm._1
329+ let bo = bm._2
330+ let bp = $Tuple2(aC.payments[1].amount, aC.payments[1].assetId)
331+ let bq = bp._1
332+ let br = bp._2
333+ let bs = aM(bo)
334+ let bt = bs._1
335+ let bu = bs._2
336+ let bv = bs._3
337+ let bw = aM(br)
338+ let bx = bw._1
339+ let by = bw._2
340+ let bz = bw._3
331341 if (!(containsElement([J, K, L, N], aC.callerPublicKey)))
332342 then throw("Only admin can call this function")
333343 else if (isDefined(getBoolean(this, c)))
334344 then throw("DApp is already active")
335- else if ((bg == bj))
345+ else if ((bo == br))
336346 then throw("Assets must be different")
337347 else {
338- let bs = ((("s" + take(bm, 7)) + "_") + take(bq, 7))
339- let bt = ((((("ShareToken of SwopFi protocol for " + bm) + " and ") + bq) + " at address ") + toString(this))
340- let bu = ((bn + br) / 2)
341- let bv = pow(bf, bn, 5, 1, bn, DOWN)
342- let bw = pow(bi, br, 5, 1, br, DOWN)
343- let bx = pow(10, 0, bu, 0, 0, DOWN)
344- let by = fraction(bv, bw, bx)
345- let bz = Issue(bs, bt, by, bu, true)
346- let bA = calculateAssetId(bz)
347- let bB = if (containsElement(U, bl))
348- then invoke(this, "stakeUnstake", [true, bf, bl], nil)
348+ let bA = ((("s" + take(bu, 7)) + "_") + take(by, 7))
349+ let bB = ((((("ShareToken of SwopFi protocol for " + bu) + " and ") + by) + " at address ") + toString(this))
350+ let bC = ((bv + bz) / 2)
351+ let bD = pow(bn, bv, 5, 1, bv, DOWN)
352+ let bE = pow(bq, bz, 5, 1, bz, DOWN)
353+ let bF = pow(10, 0, bC, 0, 0, DOWN)
354+ let bG = fraction(bD, bE, bF)
355+ let bH = Issue(bA, bB, bG, bC, true)
356+ let bI = calculateAssetId(bH)
357+ let bJ = if (containsElement(U, bt))
358+ then invoke(this, "stakeUnstake", [true, bn, bt], nil)
349359 else 0
350- if ((bB == bB))
360+ if ((bJ == bJ))
351361 then {
352- let bC = if (containsElement(U, bp))
353- then invoke(this, "stakeUnstake", [true, bi, bp], nil)
362+ let bK = if (containsElement(U, bx))
363+ then invoke(this, "stakeUnstake", [true, bq, bx], nil)
354364 else 0
355- if ((bC == bC))
365+ if ((bK == bK))
356366 then {
357- let bD = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bl), StringEntry(e, bp), IntegerEntry(f, bf), IntegerEntry(g, bi), IntegerEntry(l, aq), IntegerEntry(m, as), bz, StringEntry(j, toBase58String(bA)), IntegerEntry(k, by), ScriptTransfer(aC.caller, by, bA)]
358- if (bd)
359- then (bD ++ [BooleanEntry(o, bd), IntegerEntry(p, (aa + (ac * ab)))])
360- else bD
367+ let bL = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bt), StringEntry(e, bx), IntegerEntry(f, bn), IntegerEntry(g, bq), IntegerEntry(l, aq), IntegerEntry(m, as), bH, StringEntry(j, toBase58String(bI)), IntegerEntry(k, bG), ScriptTransfer(aC.caller, bG, bI)]
368+ if (bl)
369+ then (bL ++ [BooleanEntry(o, bl), IntegerEntry(p, (aa + (ac * ab)))])
370+ else bL
361371 }
362372 else throw("Strict value is not equal to itself.")
363373 }
368378
369379
370380 @Callable(aC)
371-func initWithInitRatio (bE,bF,ae,af,bd) = {
372- let bG = aP(ae)
373- let bl = bG._1
374- let bm = bG._2
375- let bn = bG._3
376- let bH = aP(af)
377- let bp = bH._1
378- let bq = bH._2
379- let br = bH._3
381+func initWithInitRatio (bM,bN,ae,af,bl) = {
382+ let bO = aP(ae)
383+ let bt = bO._1
384+ let bu = bO._2
385+ let bv = bO._3
386+ let bP = aP(af)
387+ let bx = bP._1
388+ let by = bP._2
389+ let bz = bP._3
380390 if (!(containsElement([J, K, L, N], aC.callerPublicKey)))
381391 then throw("Only admin can call this function")
382392 else if (isDefined(getBoolean(this, c)))
384394 else if ((ae == af))
385395 then throw("Assets must be different")
386396 else {
387- let bs = ((("s" + take(bm, 7)) + "_") + take(bq, 7))
388- let bt = ((((("ShareToken of SwopFi protocol for " + bm) + " and ") + bq) + " at address ") + toString(this))
389- let bu = ((bn + br) / 2)
390- let by = 0
391- let bz = Issue(bs, bt, by, bu, true)
392- let bA = calculateAssetId(bz)
393- let bD = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bl), StringEntry(e, bp), IntegerEntry(h, bE), IntegerEntry(i, bF), IntegerEntry(f, 0), IntegerEntry(g, 0), IntegerEntry(l, aq), IntegerEntry(m, as), bz, StringEntry(j, toBase58String(bA)), IntegerEntry(k, by)]
394- if (bd)
395- then (bD ++ [BooleanEntry(o, bd), IntegerEntry(p, (aa + (ac * ab)))])
396- else bD
397+ let bA = ((("s" + take(bu, 7)) + "_") + take(by, 7))
398+ let bB = ((((("ShareToken of SwopFi protocol for " + bu) + " and ") + by) + " at address ") + toString(this))
399+ let bC = ((bv + bz) / 2)
400+ let bG = 0
401+ let bH = Issue(bA, bB, bG, bC, true)
402+ let bI = calculateAssetId(bH)
403+ let bL = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bt), StringEntry(e, bx), IntegerEntry(h, bM), IntegerEntry(i, bN), IntegerEntry(f, 0), IntegerEntry(g, 0), IntegerEntry(l, aq), IntegerEntry(m, as), bH, StringEntry(j, toBase58String(bI)), IntegerEntry(k, bG)]
404+ if (bl)
405+ then (bL ++ [BooleanEntry(o, bl), IntegerEntry(p, (aa + (ac * ab)))])
406+ else bL
397407 }
398408 }
399409
400410
401411
402412 @Callable(aC)
403-func keepLimitForFirstHarvest (bI) = valueOrElse(bc(), if (!(containsElement([J, K, L, N], aC.callerPublicKey)))
413+func keepLimitForFirstHarvest (bQ) = valueOrElse(bk(), if (!(containsElement([J, K, L, N], aC.callerPublicKey)))
404414 then throw("Only admin can call this function")
405- else [IntegerEntry(q, bI)])
415+ else [IntegerEntry(q, bQ)])
406416
407417
408418
409419 @Callable(aC)
410-func replenishWithTwoTokens (bJ) = valueOrElse(bc(), {
411- let bg = aC.payments[0].assetId
412- let bj = aC.payments[1].assetId
413- let bf = aC.payments[0].amount
414- let bi = aC.payments[1].amount
415- let bK = aM(bg)
416- let bl = bK._1
417- let bm = bK._2
418- let bn = bK._3
419- let bL = aM(bj)
420- let bp = bL._1
421- let bq = bL._2
422- let br = bL._3
423- let bM = if (if ((am == 0))
420+func replenishWithTwoTokens (bR) = valueOrElse(bk(), {
421+ let bo = aC.payments[0].assetId
422+ let br = aC.payments[1].assetId
423+ let bn = aC.payments[0].amount
424+ let bq = aC.payments[1].amount
425+ let bS = aM(bo)
426+ let bt = bS._1
427+ let bu = bS._2
428+ let bv = bS._3
429+ let bT = aM(br)
430+ let bx = bT._1
431+ let by = bT._2
432+ let bz = bT._3
433+ let bU = if (if ((am == 0))
424434 then (an == 0)
425435 else false)
426436 then true
427437 else false
428- let bN = if (bM)
429- then fraction(fraction(aF, au, bf), at, fraction(aG, au, bi))
430- else fraction(fraction(am, au, bf), at, fraction(an, au, bi))
431- let bu = ((bn + br) / 2)
432- let bO = if (bM)
433- then fraction(pow(bf, bn, 5, 1, bn, DOWN), pow(bi, br, 5, 1, br, DOWN), pow(10, 0, bu, 0, 0, DOWN))
434- else fraction(min([fraction(bf, au, am), fraction(bi, au, an)]), ap, au)
435- if (if ((0 > bJ))
438+ let bV = if (bU)
439+ then fraction(fraction(aF, au, bn), at, fraction(aG, au, bq))
440+ else fraction(fraction(am, au, bn), at, fraction(an, au, bq))
441+ let bC = ((bv + bz) / 2)
442+ let bW = if (bU)
443+ then fraction(pow(bn, bv, 5, 1, bv, DOWN), pow(bq, bz, 5, 1, bz, DOWN), pow(10, 0, bC, 0, 0, DOWN))
444+ else fraction(min([fraction(bn, au, am), fraction(bq, au, an)]), ap, au)
445+ if (if ((0 > bR))
436446 then true
437- else (bJ > av))
438- then throw(((("Slippage tolerance must be between 0 and " + toString(av)) + " inclusively. Actual: ") + toString(bJ)))
447+ else (bR > av))
448+ then throw(((("Slippage tolerance must be between 0 and " + toString(av)) + " inclusively. Actual: ") + toString(bR)))
439449 else if ((size(aC.payments) != 2))
440450 then throw("Two attached assets expected")
441- else if (if ((bg != ag))
451+ else if (if ((bo != ag))
442452 then true
443- else (bj != ah))
453+ else (br != ah))
444454 then throw(((("Incorrect assets attached. Expected: " + ae) + " and ") + af))
445- else if (if ((((at * (av - bJ)) / av) > bN))
455+ else if (if ((((at * (av - bR)) / av) > bV))
446456 then true
447- else (bN > ((at * (av + bJ)) / av)))
457+ else (bV > ((at * (av + bR)) / av)))
448458 then throw("Incorrect assets amount: amounts must have the contract ratio")
449- else if ((bO == 0))
459+ else if ((bW == 0))
450460 then throw("Too small amount to replenish")
451461 else if (!(aL))
452- then ([ScriptTransfer(aC.caller, bf, bg), ScriptTransfer(aC.caller, bi, bj)] ++ bb())
462+ then ([ScriptTransfer(aC.caller, bn, bo), ScriptTransfer(aC.caller, bq, br)] ++ bj())
453463 else {
454- let bB = if (containsElement(U, bl))
455- then invoke(this, "stakeUnstake", [true, bf, bl], nil)
464+ let bJ = if (containsElement(U, bt))
465+ then invoke(this, "stakeUnstake", [true, bn, bt], nil)
456466 else 0
457- if ((bB == bB))
467+ if ((bJ == bJ))
458468 then {
459- let bC = if (containsElement(U, bp))
460- then invoke(this, "stakeUnstake", [true, bi, bp], nil)
469+ let bK = if (containsElement(U, bx))
470+ then invoke(this, "stakeUnstake", [true, bq, bx], nil)
461471 else 0
462- if ((bC == bC))
463- then [Reissue(ao, bO, true), IntegerEntry(f, bf), IntegerEntry(g, bi), IntegerEntry(k, bO), ScriptTransfer(aC.caller, bO, ao)]
472+ if ((bK == bK))
473+ then [Reissue(ao, bW, true), IntegerEntry(f, bn), IntegerEntry(g, bq), IntegerEntry(k, bW), ScriptTransfer(aC.caller, bW, ao)]
464474 else throw("Strict value is not equal to itself.")
465475 }
466476 else throw("Strict value is not equal to itself.")
470480
471481
472482 @Callable(aC)
473-func withdraw () = valueOrElse(bc(), {
474- let bP = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
475- let bQ = bP._1
476- let bR = bP._2
477- let bS = fraction(bQ, am, ap)
478- let bT = fraction(bQ, an, ap)
483+func withdraw () = valueOrElse(bk(), {
484+ let bX = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
485+ let bc = bX._1
486+ let bY = bX._2
487+ let bZ = fraction(bc, am, ap)
488+ let ca = fraction(bc, an, ap)
479489 if ((size(aC.payments) != 1))
480490 then throw("One attached payment expected")
481- else if ((bR != ao))
491+ else if ((bY != ao))
482492 then throw(("Incorrect asset attached. Expected: " + toBase58String(ao)))
483493 else if (!(aL))
484- then ([ScriptTransfer(aC.caller, bQ, bR)] ++ bb())
494+ then ([ScriptTransfer(aC.caller, bc, bY)] ++ bj())
485495 else {
486- let bB = if (containsElement(U, ae))
487- then invoke(this, "stakeUnstake", [false, bS, ae], nil)
496+ let bJ = if (containsElement(U, ae))
497+ then invoke(this, "stakeUnstake", [false, bZ, ae], nil)
488498 else 0
489- if ((bB == bB))
499+ if ((bJ == bJ))
490500 then {
491- let bC = if (containsElement(U, af))
492- then invoke(this, "stakeUnstake", [false, bT, af], nil)
501+ let bK = if (containsElement(U, af))
502+ then invoke(this, "stakeUnstake", [false, ca, af], nil)
493503 else 0
494- if ((bC == bC))
495- then [IntegerEntry(f, (am - bS)), IntegerEntry(g, (an - bT)), IntegerEntry(k, (ap - bQ)), Burn(ao, bQ), ScriptTransfer(aC.caller, bS, ag), ScriptTransfer(aC.caller, bT, ah)]
504+ if ((bK == bK))
505+ then [IntegerEntry(f, (am - bZ)), IntegerEntry(g, (an - ca)), IntegerEntry(k, (ap - bc)), Burn(ao, bc), ScriptTransfer(aC.caller, bZ, ag), ScriptTransfer(aC.caller, ca, ah)]
496506 else throw("Strict value is not equal to itself.")
497507 }
498508 else throw("Strict value is not equal to itself.")
502512
503513
504514 @Callable(aC)
505-func exchange (bU) = valueOrElse(bc(), {
506- let bV = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
507- let bQ = bV._1
508- let bR = bV._2
509- func bW (bX,bY) = {
510- let bZ = fraction(bY, bQ, (bQ + bX))
511- let ca = fraction(bZ, (as - aq), as)
512- let cb = fraction(bZ, ar, as)
513- if ((bU > ca))
514- then throw(((("Calculated amount to receive " + toString(ca)) + " is less than specified minimum ") + toString(bU)))
515- else $Tuple3(bZ, ca, cb)
516- }
517-
515+func exchange (bd) = valueOrElse(bk(), {
516+ let cb = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
517+ let bc = cb._1
518+ let bY = cb._2
518519 if (if ((am == 0))
519520 then true
520521 else (an == 0))
521522 then throw("Can't exchange with zero balance")
522- else if ((0 >= bU))
523- then throw(("Minimal amount to receive must be positive. Actual: " + toString(bU)))
523+ else if ((0 >= bd))
524+ then throw(("Minimal amount to receive must be positive. Actual: " + toString(bd)))
524525 else if ((size(aC.payments) != 1))
525526 then throw("One attached payment expected")
526527 else if (!(aL))
527- then ([ScriptTransfer(aC.caller, bQ, bR)] ++ bb())
528- else if ((bR == ag))
528+ then ([ScriptTransfer(aC.caller, bc, bY)] ++ bj())
529+ else if ((bY == ag))
529530 then {
530531 let cc = ah
531- let cd = bW(am, an)
532- let bZ = cd._1
533- let ca = cd._2
534- let cb = cd._3
535- let ce = (am + bQ)
536- let cf = ((an - ca) - cb)
537- let bB = if (containsElement(U, ae))
538- then invoke(this, "stakeUnstake", [true, bQ, ae], nil)
532+ let cd = bb(bc, bd, am, an)
533+ let bg = cd._1
534+ let bh = cd._2
535+ let bi = cd._3
536+ let ce = (am + bc)
537+ let cf = ((an - bh) - bi)
538+ let bJ = if (containsElement(U, ae))
539+ then invoke(this, "stakeUnstake", [true, bc, ae], nil)
539540 else 0
540- if ((bB == bB))
541+ if ((bJ == bJ))
541542 then {
542- let bC = if (containsElement(U, af))
543- then invoke(this, "stakeUnstake", [false, (ca + cb), af], nil)
543+ let bK = if (containsElement(U, af))
544+ then invoke(this, "stakeUnstake", [false, (bh + bi), af], nil)
544545 else 0
545- if ((bC == bC))
546- then [IntegerEntry(f, ce), IntegerEntry(g, cf), ScriptTransfer(aC.caller, ca, cc), ScriptTransfer(O, cb, cc)]
546+ if ((bK == bK))
547+ then [IntegerEntry(f, ce), IntegerEntry(g, cf), ScriptTransfer(aC.caller, bh, cc), ScriptTransfer(O, bi, cc)]
547548 else throw("Strict value is not equal to itself.")
548549 }
549550 else throw("Strict value is not equal to itself.")
550551 }
551- else if ((bR == ah))
552+ else if ((bY == ah))
552553 then {
553554 let cc = ag
554- let cg = bW(an, am)
555- let bZ = cg._1
556- let ca = cg._2
557- let cb = cg._3
558- let ce = ((am - ca) - cb)
559- let cf = (an + bQ)
560- let bB = if (containsElement(U, ae))
561- then invoke(this, "stakeUnstake", [false, (ca + cb), ae], nil)
555+ let cg = bb(bc, bd, an, am)
556+ let bg = cg._1
557+ let bh = cg._2
558+ let bi = cg._3
559+ let ce = ((am - bh) - bi)
560+ let cf = (an + bc)
561+ let bJ = if (containsElement(U, ae))
562+ then invoke(this, "stakeUnstake", [false, (bh + bi), ae], nil)
562563 else 0
563- if ((bB == bB))
564+ if ((bJ == bJ))
564565 then {
565- let bC = if (containsElement(U, af))
566- then invoke(this, "stakeUnstake", [true, bQ, af], nil)
566+ let bK = if (containsElement(U, af))
567+ then invoke(this, "stakeUnstake", [true, bc, af], nil)
567568 else 0
568- if ((bC == bC))
569- then [IntegerEntry(f, ce), IntegerEntry(g, cf), ScriptTransfer(aC.caller, ca, cc), ScriptTransfer(O, cb, cc)]
569+ if ((bK == bK))
570+ then [IntegerEntry(f, ce), IntegerEntry(g, cf), ScriptTransfer(aC.caller, bh, cc), ScriptTransfer(O, bi, cc)]
570571 else throw("Strict value is not equal to itself.")
571572 }
572573 else throw("Strict value is not equal to itself.")
586587
587588
588589 @Callable(aC)
589-func activate () = valueOrElse(bc(), if (!(containsElement([J, K, L, M], aC.callerPublicKey)))
590+func activate () = valueOrElse(bk(), if (!(containsElement([J, K, L, M], aC.callerPublicKey)))
590591 then throw("Only admin can call this function")
591592 else [BooleanEntry(c, true), DeleteEntry(n)])
592593
593594
594595
595596 @Callable(aC)
596-func takeIntoAccountExtraFunds (ch) = valueOrElse(bc(), {
597+func takeIntoAccountExtraFunds (ch) = valueOrElse(bk(), {
597598 let ci = (aJ - am)
598599 let cj = (aK - an)
599600 let ck = (ci - (if ((ag == unit))
615616 else (0 > cl))
616617 then throw("Too large amountLeave")
617618 else {
618- let bB = if (if (containsElement(U, ae))
619+ let bJ = if (if (containsElement(U, ae))
619620 then (ck > 0)
620621 else false)
621622 then invoke(this, "stakeUnstake", [true, ck, ae], nil)
622623 else 0
623- if ((bB == bB))
624+ if ((bJ == bJ))
624625 then {
625- let bC = if (if (containsElement(U, af))
626+ let bK = if (if (containsElement(U, af))
626627 then (cl > 0)
627628 else false)
628629 then invoke(this, "stakeUnstake", [true, cl, af], nil)
629630 else 0
630- if ((bC == bC))
631+ if ((bK == bK))
631632 then [IntegerEntry(f, (am + ck)), IntegerEntry(g, (an + cl)), IntegerEntry(("last_income_" + ae), ck), IntegerEntry(("last_income_" + af), cl)]
632633 else throw("Strict value is not equal to itself.")
633634 }
674675
675676
676677 @Callable(aC)
677-func stakeAll () = valueOrElse(bc(), if (!(containsElement([J, K, L, M], aC.callerPublicKey)))
678+func stakeAll () = valueOrElse(bk(), if (!(containsElement([J, K, L, M], aC.callerPublicKey)))
678679 then throw("Only admin can call this function")
679680 else {
680- let bB = if (containsElement(U, ae))
681+ let bJ = if (containsElement(U, ae))
681682 then {
682683 let cA = (am - aD)
683684 if ((cA > 0))
685686 else 0
686687 }
687688 else 0
688- if ((bB == bB))
689+ if ((bJ == bJ))
689690 then {
690- let bC = if (containsElement(U, af))
691+ let bK = if (containsElement(U, af))
691692 then {
692693 let cB = (an - aE)
693694 if ((cB > 0))
695696 else 0
696697 }
697698 else 0
698- if ((bC == bC))
699+ if ((bK == bK))
699700 then nil
700701 else throw("Strict value is not equal to itself.")
701702 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "1.0.0"
55
66 let b = "version"
77
88 let c = "active"
99
1010 let d = "A_asset_id"
1111
1212 let e = "B_asset_id"
1313
1414 let f = "A_asset_balance"
1515
1616 let g = "B_asset_balance"
1717
1818 let h = "A_asset_init"
1919
2020 let i = "B_asset_init"
2121
2222 let j = "share_asset_id"
2323
2424 let k = "share_asset_supply"
2525
2626 let l = "commission"
2727
2828 let m = "commission_scale_delimiter"
2929
3030 let n = "shutdown_cause"
3131
3232 let o = "first_harvest"
3333
3434 let p = "first_harvest_height"
3535
3636 let q = "share_limit_on_first_harvest"
3737
3838 let r = "base_period"
3939
4040 let s = "period_length"
4141
4242 let t = "start_height"
4343
4444 let u = "first_harvest_height"
4545
4646 let v = "staking_usdnnsbt_address"
4747
4848 let w = "staking_eurn_address"
4949
5050 let x = "leasing_address"
5151
5252 let y = "leasing_amount"
5353
5454 let z = "leasing_id"
5555
5656 let A = "admin_pub_1"
5757
5858 let B = "admin_pub_2"
5959
6060 let C = "admin_pub_3"
6161
6262 let D = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
6363
6464 func E (F) = {
6565 let G = getString(D, F)
6666 if ($isInstanceOf(G, "String"))
6767 then {
6868 let H = G
6969 fromBase58String(H)
7070 }
7171 else {
7272 let I = G
7373 throw("Admin public key is empty")
7474 }
7575 }
7676
7777
7878 let J = E(A)
7979
8080 let K = E(B)
8181
8282 let L = E(C)
8383
8484 let M = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
8585
8686 let N = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
8787
8888 let O = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
8989
9090 let P = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
9191
9292 let Q = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
9393
9494 let R = base58'36mg8NZTaFRDygiVwb8uBnLR51hetJruUCZcxhaVcHj9'
9595
9696 let S = base58'2HAJrwa8q4SxBx9cHYaBTQdBjdk5wwqdof7ccpAx2uhZ'
9797
9898 let T = base58'ECBCkHS68DckpBrzLeoRgYbFg7sCVqR176mPqbXsj9pA'
9999
100100 let U = ["WAVES", toBase58String(Q), toBase58String(R), toBase58String(T)]
101101
102102 let V = Address(fromBase58String(valueOrErrorMessage(getString(D, v), "no usdn staking address")))
103103
104104 let W = Address(fromBase58String(valueOrErrorMessage(getString(D, w), "no usdn staking address")))
105105
106106 let X = Address(base58'3N8PGkzXhbtTvEwEQTtE2xiTJmsDEQ9XfoZ')
107107
108108 let Y = Address(base58'3MqW1t2cxdYy2emEMk3YtZkRwQPhHaTfWRe')
109109
110110 let Z = valueOrErrorMessage(getInteger(P, r), "Empty kBasePeriod")
111111
112112 let aa = valueOrErrorMessage(getInteger(P, t), "Empty kStartHeight")
113113
114114 let ab = valueOrErrorMessage(getInteger(P, s), "Empty kPeriodLength")
115115
116116 let ac = ((Z + ((height - aa) / ab)) + 3)
117117
118118 let ad = getBooleanValue(this, c)
119119
120120 let ae = getStringValue(this, d)
121121
122122 let af = getStringValue(this, e)
123123
124124 let ag = if ((ae == "WAVES"))
125125 then unit
126126 else fromBase58String(ae)
127127
128128 let ah = if ((af == "WAVES"))
129129 then unit
130130 else fromBase58String(af)
131131
132132 let ai = {
133133 let G = ag
134134 if ($isInstanceOf(G, "ByteVector"))
135135 then {
136136 let aj = G
137137 value(assetInfo(aj)).name
138138 }
139139 else if ($isInstanceOf(G, "Unit"))
140140 then {
141141 let ak = G
142142 "WAVES"
143143 }
144144 else throw("Match error")
145145 }
146146
147147 let al = {
148148 let G = ah
149149 if ($isInstanceOf(G, "ByteVector"))
150150 then {
151151 let aj = G
152152 value(assetInfo(aj)).name
153153 }
154154 else if ($isInstanceOf(G, "Unit"))
155155 then {
156156 let ak = G
157157 "WAVES"
158158 }
159159 else throw("Match error")
160160 }
161161
162162 let am = getIntegerValue(this, f)
163163
164164 let an = getIntegerValue(this, g)
165165
166166 let ao = fromBase58String(getStringValue(this, j))
167167
168168 let ap = getIntegerValue(this, k)
169169
170170 let aq = 3000
171171
172172 let ar = 1200
173173
174174 let as = 1000000
175175
176176 let at = 1000
177177
178178 let au = 100000000
179179
180180 let av = 1000
181181
182182 let aw = 8
183183
184184 func ax (ay) = {
185185 let G = ay
186186 if ($isInstanceOf(G, "ByteVector"))
187187 then {
188188 let aj = G
189189 assetBalance(this, aj)
190190 }
191191 else if ($isInstanceOf(G, "Unit"))
192192 then {
193193 let ak = G
194194 wavesBalance(this).available
195195 }
196196 else throw("Match error")
197197 }
198198
199199
200200 func az (ay) = {
201201 let aA = {
202202 let G = ay
203203 if ($isInstanceOf(G, "ByteVector"))
204204 then {
205205 let aB = G
206206 if (if ((aB == Q))
207207 then true
208208 else (aB == R))
209209 then getInteger(V, ((("rpd_balance_" + toBase58String(aB)) + "_") + toString(this)))
210210 else if ((aB == T))
211211 then getInteger(W, ((("%s%s%s__stakingBalance__" + toBase58String(aB)) + "__") + toString(this)))
212212 else 0
213213 }
214214 else if ($isInstanceOf(G, "Unit"))
215215 then valueOrElse(getInteger(this, y), 0)
216216 else throw("Match error")
217217 }
218218 let G = aA
219219 if ($isInstanceOf(G, "Int"))
220220 then {
221221 let aC = G
222222 aC
223223 }
224224 else 0
225225 }
226226
227227
228228 let aD = az(ag)
229229
230230 let aE = az(ah)
231231
232232 let aF = getIntegerValue(this, h)
233233
234234 let aG = getIntegerValue(this, i)
235235
236236 let aH = (am - aD)
237237
238238 let aI = (an - aE)
239239
240240 let aJ = (ax(ag) + aD)
241241
242242 let aK = (ax(ah) + aE)
243243
244244 let aL = if ((aJ >= am))
245245 then (aK >= an)
246246 else false
247247
248248 func aM (ay) = {
249249 let G = ay
250250 if ($isInstanceOf(G, "ByteVector"))
251251 then {
252252 let aj = G
253253 let aN = toBase58String(aj)
254254 let aO = valueOrErrorMessage(assetInfo(aj), (("Asset " + aN) + " doesn't exist"))
255255 $Tuple3(aN, aO.name, aO.decimals)
256256 }
257257 else if ($isInstanceOf(G, "Unit"))
258258 then {
259259 let ak = G
260260 $Tuple3("WAVES", "WAVES", 8)
261261 }
262262 else throw("Match error")
263263 }
264264
265265
266266 func aP (aQ) = if ((aQ == "WAVES"))
267267 then $Tuple3("WAVES", "WAVES", 8)
268268 else {
269269 let aN = aQ
270270 let aj = fromBase58String(aQ)
271271 let aO = valueOrErrorMessage(assetInfo(aj), (("Asset " + aN) + " doesn't exist"))
272272 $Tuple3(aN, aO.name, aO.decimals)
273273 }
274274
275275
276276 func aR (aS) = [BooleanEntry(c, false), StringEntry(n, aS)]
277277
278278
279279 func aT (aU,ay) = if (aU)
280280 then if ((ay == Q))
281281 then $Tuple2("lockNeutrino", V)
282282 else if ((ay == R))
283283 then $Tuple2("lockNsbt", V)
284284 else $Tuple2("startStaking", W)
285285 else if ((ay == Q))
286286 then $Tuple2("unlockNeutrino", V)
287287 else if ((ay == R))
288288 then $Tuple2("unlockNsbt", V)
289289 else $Tuple2("stopStaking", W)
290290
291291
292292 func aV (aU,aW,ay) = if (aU)
293293 then {
294294 let aX = aT(aU, ay)
295295 let aY = aX._1
296296 let aZ = aX._2
297297 $Tuple4(aY, aZ, nil, [AttachedPayment(ay, aW)])
298298 }
299299 else {
300300 let ba = aT(aU, ay)
301301 let aY = ba._1
302302 let aZ = ba._2
303303 $Tuple4(aY, aZ, [aW, toBase58String(ay)], nil)
304304 }
305305
306306
307-func bb () = aR(((((((((((((((("Suspicious state. Actual balances: " + toString(aJ)) + " ") + ai) + ", ") + toString(aK)) + " ") + al) + ". State: ") + toString(am)) + " ") + ai) + ", ") + toString(an)) + " ") + al))
307+func bb (bc,bd,be,bf) = {
308+ let bg = fraction(bf, bc, (bc + be))
309+ let bh = fraction(bg, (as - aq), as)
310+ let bi = fraction(bg, ar, as)
311+ if ((bd > bh))
312+ then throw(((("Calculated amount to receive " + toString(bh)) + " is less than specified minimum ") + toString(bd)))
313+ else $Tuple3(bg, bh, bi)
314+ }
308315
309316
310-func bc () = if (ad)
317+func bj () = aR(((((((((((((((("Suspicious state. Actual balances: " + toString(aJ)) + " ") + ai) + ", ") + toString(aK)) + " ") + al) + ". State: ") + toString(am)) + " ") + ai) + ", ") + toString(an)) + " ") + al))
318+
319+
320+func bk () = if (ad)
311321 then unit
312322 else throw("DApp is inactive at this moment")
313323
314324
315325 @Callable(aC)
316-func init (bd) = {
317- let be = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
318- let bf = be._1
319- let bg = be._2
320- let bh = $Tuple2(aC.payments[1].amount, aC.payments[1].assetId)
321- let bi = bh._1
322- let bj = bh._2
323- let bk = aM(bg)
324- let bl = bk._1
325- let bm = bk._2
326- let bn = bk._3
327- let bo = aM(bj)
328- let bp = bo._1
329- let bq = bo._2
330- let br = bo._3
326+func init (bl) = {
327+ let bm = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
328+ let bn = bm._1
329+ let bo = bm._2
330+ let bp = $Tuple2(aC.payments[1].amount, aC.payments[1].assetId)
331+ let bq = bp._1
332+ let br = bp._2
333+ let bs = aM(bo)
334+ let bt = bs._1
335+ let bu = bs._2
336+ let bv = bs._3
337+ let bw = aM(br)
338+ let bx = bw._1
339+ let by = bw._2
340+ let bz = bw._3
331341 if (!(containsElement([J, K, L, N], aC.callerPublicKey)))
332342 then throw("Only admin can call this function")
333343 else if (isDefined(getBoolean(this, c)))
334344 then throw("DApp is already active")
335- else if ((bg == bj))
345+ else if ((bo == br))
336346 then throw("Assets must be different")
337347 else {
338- let bs = ((("s" + take(bm, 7)) + "_") + take(bq, 7))
339- let bt = ((((("ShareToken of SwopFi protocol for " + bm) + " and ") + bq) + " at address ") + toString(this))
340- let bu = ((bn + br) / 2)
341- let bv = pow(bf, bn, 5, 1, bn, DOWN)
342- let bw = pow(bi, br, 5, 1, br, DOWN)
343- let bx = pow(10, 0, bu, 0, 0, DOWN)
344- let by = fraction(bv, bw, bx)
345- let bz = Issue(bs, bt, by, bu, true)
346- let bA = calculateAssetId(bz)
347- let bB = if (containsElement(U, bl))
348- then invoke(this, "stakeUnstake", [true, bf, bl], nil)
348+ let bA = ((("s" + take(bu, 7)) + "_") + take(by, 7))
349+ let bB = ((((("ShareToken of SwopFi protocol for " + bu) + " and ") + by) + " at address ") + toString(this))
350+ let bC = ((bv + bz) / 2)
351+ let bD = pow(bn, bv, 5, 1, bv, DOWN)
352+ let bE = pow(bq, bz, 5, 1, bz, DOWN)
353+ let bF = pow(10, 0, bC, 0, 0, DOWN)
354+ let bG = fraction(bD, bE, bF)
355+ let bH = Issue(bA, bB, bG, bC, true)
356+ let bI = calculateAssetId(bH)
357+ let bJ = if (containsElement(U, bt))
358+ then invoke(this, "stakeUnstake", [true, bn, bt], nil)
349359 else 0
350- if ((bB == bB))
360+ if ((bJ == bJ))
351361 then {
352- let bC = if (containsElement(U, bp))
353- then invoke(this, "stakeUnstake", [true, bi, bp], nil)
362+ let bK = if (containsElement(U, bx))
363+ then invoke(this, "stakeUnstake", [true, bq, bx], nil)
354364 else 0
355- if ((bC == bC))
365+ if ((bK == bK))
356366 then {
357- let bD = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bl), StringEntry(e, bp), IntegerEntry(f, bf), IntegerEntry(g, bi), IntegerEntry(l, aq), IntegerEntry(m, as), bz, StringEntry(j, toBase58String(bA)), IntegerEntry(k, by), ScriptTransfer(aC.caller, by, bA)]
358- if (bd)
359- then (bD ++ [BooleanEntry(o, bd), IntegerEntry(p, (aa + (ac * ab)))])
360- else bD
367+ let bL = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bt), StringEntry(e, bx), IntegerEntry(f, bn), IntegerEntry(g, bq), IntegerEntry(l, aq), IntegerEntry(m, as), bH, StringEntry(j, toBase58String(bI)), IntegerEntry(k, bG), ScriptTransfer(aC.caller, bG, bI)]
368+ if (bl)
369+ then (bL ++ [BooleanEntry(o, bl), IntegerEntry(p, (aa + (ac * ab)))])
370+ else bL
361371 }
362372 else throw("Strict value is not equal to itself.")
363373 }
364374 else throw("Strict value is not equal to itself.")
365375 }
366376 }
367377
368378
369379
370380 @Callable(aC)
371-func initWithInitRatio (bE,bF,ae,af,bd) = {
372- let bG = aP(ae)
373- let bl = bG._1
374- let bm = bG._2
375- let bn = bG._3
376- let bH = aP(af)
377- let bp = bH._1
378- let bq = bH._2
379- let br = bH._3
381+func initWithInitRatio (bM,bN,ae,af,bl) = {
382+ let bO = aP(ae)
383+ let bt = bO._1
384+ let bu = bO._2
385+ let bv = bO._3
386+ let bP = aP(af)
387+ let bx = bP._1
388+ let by = bP._2
389+ let bz = bP._3
380390 if (!(containsElement([J, K, L, N], aC.callerPublicKey)))
381391 then throw("Only admin can call this function")
382392 else if (isDefined(getBoolean(this, c)))
383393 then throw("DApp is already active")
384394 else if ((ae == af))
385395 then throw("Assets must be different")
386396 else {
387- let bs = ((("s" + take(bm, 7)) + "_") + take(bq, 7))
388- let bt = ((((("ShareToken of SwopFi protocol for " + bm) + " and ") + bq) + " at address ") + toString(this))
389- let bu = ((bn + br) / 2)
390- let by = 0
391- let bz = Issue(bs, bt, by, bu, true)
392- let bA = calculateAssetId(bz)
393- let bD = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bl), StringEntry(e, bp), IntegerEntry(h, bE), IntegerEntry(i, bF), IntegerEntry(f, 0), IntegerEntry(g, 0), IntegerEntry(l, aq), IntegerEntry(m, as), bz, StringEntry(j, toBase58String(bA)), IntegerEntry(k, by)]
394- if (bd)
395- then (bD ++ [BooleanEntry(o, bd), IntegerEntry(p, (aa + (ac * ab)))])
396- else bD
397+ let bA = ((("s" + take(bu, 7)) + "_") + take(by, 7))
398+ let bB = ((((("ShareToken of SwopFi protocol for " + bu) + " and ") + by) + " at address ") + toString(this))
399+ let bC = ((bv + bz) / 2)
400+ let bG = 0
401+ let bH = Issue(bA, bB, bG, bC, true)
402+ let bI = calculateAssetId(bH)
403+ let bL = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, bt), StringEntry(e, bx), IntegerEntry(h, bM), IntegerEntry(i, bN), IntegerEntry(f, 0), IntegerEntry(g, 0), IntegerEntry(l, aq), IntegerEntry(m, as), bH, StringEntry(j, toBase58String(bI)), IntegerEntry(k, bG)]
404+ if (bl)
405+ then (bL ++ [BooleanEntry(o, bl), IntegerEntry(p, (aa + (ac * ab)))])
406+ else bL
397407 }
398408 }
399409
400410
401411
402412 @Callable(aC)
403-func keepLimitForFirstHarvest (bI) = valueOrElse(bc(), if (!(containsElement([J, K, L, N], aC.callerPublicKey)))
413+func keepLimitForFirstHarvest (bQ) = valueOrElse(bk(), if (!(containsElement([J, K, L, N], aC.callerPublicKey)))
404414 then throw("Only admin can call this function")
405- else [IntegerEntry(q, bI)])
415+ else [IntegerEntry(q, bQ)])
406416
407417
408418
409419 @Callable(aC)
410-func replenishWithTwoTokens (bJ) = valueOrElse(bc(), {
411- let bg = aC.payments[0].assetId
412- let bj = aC.payments[1].assetId
413- let bf = aC.payments[0].amount
414- let bi = aC.payments[1].amount
415- let bK = aM(bg)
416- let bl = bK._1
417- let bm = bK._2
418- let bn = bK._3
419- let bL = aM(bj)
420- let bp = bL._1
421- let bq = bL._2
422- let br = bL._3
423- let bM = if (if ((am == 0))
420+func replenishWithTwoTokens (bR) = valueOrElse(bk(), {
421+ let bo = aC.payments[0].assetId
422+ let br = aC.payments[1].assetId
423+ let bn = aC.payments[0].amount
424+ let bq = aC.payments[1].amount
425+ let bS = aM(bo)
426+ let bt = bS._1
427+ let bu = bS._2
428+ let bv = bS._3
429+ let bT = aM(br)
430+ let bx = bT._1
431+ let by = bT._2
432+ let bz = bT._3
433+ let bU = if (if ((am == 0))
424434 then (an == 0)
425435 else false)
426436 then true
427437 else false
428- let bN = if (bM)
429- then fraction(fraction(aF, au, bf), at, fraction(aG, au, bi))
430- else fraction(fraction(am, au, bf), at, fraction(an, au, bi))
431- let bu = ((bn + br) / 2)
432- let bO = if (bM)
433- then fraction(pow(bf, bn, 5, 1, bn, DOWN), pow(bi, br, 5, 1, br, DOWN), pow(10, 0, bu, 0, 0, DOWN))
434- else fraction(min([fraction(bf, au, am), fraction(bi, au, an)]), ap, au)
435- if (if ((0 > bJ))
438+ let bV = if (bU)
439+ then fraction(fraction(aF, au, bn), at, fraction(aG, au, bq))
440+ else fraction(fraction(am, au, bn), at, fraction(an, au, bq))
441+ let bC = ((bv + bz) / 2)
442+ let bW = if (bU)
443+ then fraction(pow(bn, bv, 5, 1, bv, DOWN), pow(bq, bz, 5, 1, bz, DOWN), pow(10, 0, bC, 0, 0, DOWN))
444+ else fraction(min([fraction(bn, au, am), fraction(bq, au, an)]), ap, au)
445+ if (if ((0 > bR))
436446 then true
437- else (bJ > av))
438- then throw(((("Slippage tolerance must be between 0 and " + toString(av)) + " inclusively. Actual: ") + toString(bJ)))
447+ else (bR > av))
448+ then throw(((("Slippage tolerance must be between 0 and " + toString(av)) + " inclusively. Actual: ") + toString(bR)))
439449 else if ((size(aC.payments) != 2))
440450 then throw("Two attached assets expected")
441- else if (if ((bg != ag))
451+ else if (if ((bo != ag))
442452 then true
443- else (bj != ah))
453+ else (br != ah))
444454 then throw(((("Incorrect assets attached. Expected: " + ae) + " and ") + af))
445- else if (if ((((at * (av - bJ)) / av) > bN))
455+ else if (if ((((at * (av - bR)) / av) > bV))
446456 then true
447- else (bN > ((at * (av + bJ)) / av)))
457+ else (bV > ((at * (av + bR)) / av)))
448458 then throw("Incorrect assets amount: amounts must have the contract ratio")
449- else if ((bO == 0))
459+ else if ((bW == 0))
450460 then throw("Too small amount to replenish")
451461 else if (!(aL))
452- then ([ScriptTransfer(aC.caller, bf, bg), ScriptTransfer(aC.caller, bi, bj)] ++ bb())
462+ then ([ScriptTransfer(aC.caller, bn, bo), ScriptTransfer(aC.caller, bq, br)] ++ bj())
453463 else {
454- let bB = if (containsElement(U, bl))
455- then invoke(this, "stakeUnstake", [true, bf, bl], nil)
464+ let bJ = if (containsElement(U, bt))
465+ then invoke(this, "stakeUnstake", [true, bn, bt], nil)
456466 else 0
457- if ((bB == bB))
467+ if ((bJ == bJ))
458468 then {
459- let bC = if (containsElement(U, bp))
460- then invoke(this, "stakeUnstake", [true, bi, bp], nil)
469+ let bK = if (containsElement(U, bx))
470+ then invoke(this, "stakeUnstake", [true, bq, bx], nil)
461471 else 0
462- if ((bC == bC))
463- then [Reissue(ao, bO, true), IntegerEntry(f, bf), IntegerEntry(g, bi), IntegerEntry(k, bO), ScriptTransfer(aC.caller, bO, ao)]
472+ if ((bK == bK))
473+ then [Reissue(ao, bW, true), IntegerEntry(f, bn), IntegerEntry(g, bq), IntegerEntry(k, bW), ScriptTransfer(aC.caller, bW, ao)]
464474 else throw("Strict value is not equal to itself.")
465475 }
466476 else throw("Strict value is not equal to itself.")
467477 }
468478 })
469479
470480
471481
472482 @Callable(aC)
473-func withdraw () = valueOrElse(bc(), {
474- let bP = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
475- let bQ = bP._1
476- let bR = bP._2
477- let bS = fraction(bQ, am, ap)
478- let bT = fraction(bQ, an, ap)
483+func withdraw () = valueOrElse(bk(), {
484+ let bX = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
485+ let bc = bX._1
486+ let bY = bX._2
487+ let bZ = fraction(bc, am, ap)
488+ let ca = fraction(bc, an, ap)
479489 if ((size(aC.payments) != 1))
480490 then throw("One attached payment expected")
481- else if ((bR != ao))
491+ else if ((bY != ao))
482492 then throw(("Incorrect asset attached. Expected: " + toBase58String(ao)))
483493 else if (!(aL))
484- then ([ScriptTransfer(aC.caller, bQ, bR)] ++ bb())
494+ then ([ScriptTransfer(aC.caller, bc, bY)] ++ bj())
485495 else {
486- let bB = if (containsElement(U, ae))
487- then invoke(this, "stakeUnstake", [false, bS, ae], nil)
496+ let bJ = if (containsElement(U, ae))
497+ then invoke(this, "stakeUnstake", [false, bZ, ae], nil)
488498 else 0
489- if ((bB == bB))
499+ if ((bJ == bJ))
490500 then {
491- let bC = if (containsElement(U, af))
492- then invoke(this, "stakeUnstake", [false, bT, af], nil)
501+ let bK = if (containsElement(U, af))
502+ then invoke(this, "stakeUnstake", [false, ca, af], nil)
493503 else 0
494- if ((bC == bC))
495- then [IntegerEntry(f, (am - bS)), IntegerEntry(g, (an - bT)), IntegerEntry(k, (ap - bQ)), Burn(ao, bQ), ScriptTransfer(aC.caller, bS, ag), ScriptTransfer(aC.caller, bT, ah)]
504+ if ((bK == bK))
505+ then [IntegerEntry(f, (am - bZ)), IntegerEntry(g, (an - ca)), IntegerEntry(k, (ap - bc)), Burn(ao, bc), ScriptTransfer(aC.caller, bZ, ag), ScriptTransfer(aC.caller, ca, ah)]
496506 else throw("Strict value is not equal to itself.")
497507 }
498508 else throw("Strict value is not equal to itself.")
499509 }
500510 })
501511
502512
503513
504514 @Callable(aC)
505-func exchange (bU) = valueOrElse(bc(), {
506- let bV = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
507- let bQ = bV._1
508- let bR = bV._2
509- func bW (bX,bY) = {
510- let bZ = fraction(bY, bQ, (bQ + bX))
511- let ca = fraction(bZ, (as - aq), as)
512- let cb = fraction(bZ, ar, as)
513- if ((bU > ca))
514- then throw(((("Calculated amount to receive " + toString(ca)) + " is less than specified minimum ") + toString(bU)))
515- else $Tuple3(bZ, ca, cb)
516- }
517-
515+func exchange (bd) = valueOrElse(bk(), {
516+ let cb = $Tuple2(aC.payments[0].amount, aC.payments[0].assetId)
517+ let bc = cb._1
518+ let bY = cb._2
518519 if (if ((am == 0))
519520 then true
520521 else (an == 0))
521522 then throw("Can't exchange with zero balance")
522- else if ((0 >= bU))
523- then throw(("Minimal amount to receive must be positive. Actual: " + toString(bU)))
523+ else if ((0 >= bd))
524+ then throw(("Minimal amount to receive must be positive. Actual: " + toString(bd)))
524525 else if ((size(aC.payments) != 1))
525526 then throw("One attached payment expected")
526527 else if (!(aL))
527- then ([ScriptTransfer(aC.caller, bQ, bR)] ++ bb())
528- else if ((bR == ag))
528+ then ([ScriptTransfer(aC.caller, bc, bY)] ++ bj())
529+ else if ((bY == ag))
529530 then {
530531 let cc = ah
531- let cd = bW(am, an)
532- let bZ = cd._1
533- let ca = cd._2
534- let cb = cd._3
535- let ce = (am + bQ)
536- let cf = ((an - ca) - cb)
537- let bB = if (containsElement(U, ae))
538- then invoke(this, "stakeUnstake", [true, bQ, ae], nil)
532+ let cd = bb(bc, bd, am, an)
533+ let bg = cd._1
534+ let bh = cd._2
535+ let bi = cd._3
536+ let ce = (am + bc)
537+ let cf = ((an - bh) - bi)
538+ let bJ = if (containsElement(U, ae))
539+ then invoke(this, "stakeUnstake", [true, bc, ae], nil)
539540 else 0
540- if ((bB == bB))
541+ if ((bJ == bJ))
541542 then {
542- let bC = if (containsElement(U, af))
543- then invoke(this, "stakeUnstake", [false, (ca + cb), af], nil)
543+ let bK = if (containsElement(U, af))
544+ then invoke(this, "stakeUnstake", [false, (bh + bi), af], nil)
544545 else 0
545- if ((bC == bC))
546- then [IntegerEntry(f, ce), IntegerEntry(g, cf), ScriptTransfer(aC.caller, ca, cc), ScriptTransfer(O, cb, cc)]
546+ if ((bK == bK))
547+ then [IntegerEntry(f, ce), IntegerEntry(g, cf), ScriptTransfer(aC.caller, bh, cc), ScriptTransfer(O, bi, cc)]
547548 else throw("Strict value is not equal to itself.")
548549 }
549550 else throw("Strict value is not equal to itself.")
550551 }
551- else if ((bR == ah))
552+ else if ((bY == ah))
552553 then {
553554 let cc = ag
554- let cg = bW(an, am)
555- let bZ = cg._1
556- let ca = cg._2
557- let cb = cg._3
558- let ce = ((am - ca) - cb)
559- let cf = (an + bQ)
560- let bB = if (containsElement(U, ae))
561- then invoke(this, "stakeUnstake", [false, (ca + cb), ae], nil)
555+ let cg = bb(bc, bd, an, am)
556+ let bg = cg._1
557+ let bh = cg._2
558+ let bi = cg._3
559+ let ce = ((am - bh) - bi)
560+ let cf = (an + bc)
561+ let bJ = if (containsElement(U, ae))
562+ then invoke(this, "stakeUnstake", [false, (bh + bi), ae], nil)
562563 else 0
563- if ((bB == bB))
564+ if ((bJ == bJ))
564565 then {
565- let bC = if (containsElement(U, af))
566- then invoke(this, "stakeUnstake", [true, bQ, af], nil)
566+ let bK = if (containsElement(U, af))
567+ then invoke(this, "stakeUnstake", [true, bc, af], nil)
567568 else 0
568- if ((bC == bC))
569- then [IntegerEntry(f, ce), IntegerEntry(g, cf), ScriptTransfer(aC.caller, ca, cc), ScriptTransfer(O, cb, cc)]
569+ if ((bK == bK))
570+ then [IntegerEntry(f, ce), IntegerEntry(g, cf), ScriptTransfer(aC.caller, bh, cc), ScriptTransfer(O, bi, cc)]
570571 else throw("Strict value is not equal to itself.")
571572 }
572573 else throw("Strict value is not equal to itself.")
573574 }
574575 else throw(((("Incorrect asset attached. Expected: " + ae) + " or ") + af))
575576 })
576577
577578
578579
579580 @Callable(aC)
580581 func shutdown () = if (!(ad))
581582 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, n), "the cause wasn't specified")))
582583 else if (!(containsElement([J, K, L, M], aC.callerPublicKey)))
583584 then throw("Only admin can call this function")
584585 else aR("Paused by admin")
585586
586587
587588
588589 @Callable(aC)
589-func activate () = valueOrElse(bc(), if (!(containsElement([J, K, L, M], aC.callerPublicKey)))
590+func activate () = valueOrElse(bk(), if (!(containsElement([J, K, L, M], aC.callerPublicKey)))
590591 then throw("Only admin can call this function")
591592 else [BooleanEntry(c, true), DeleteEntry(n)])
592593
593594
594595
595596 @Callable(aC)
596-func takeIntoAccountExtraFunds (ch) = valueOrElse(bc(), {
597+func takeIntoAccountExtraFunds (ch) = valueOrElse(bk(), {
597598 let ci = (aJ - am)
598599 let cj = (aK - an)
599600 let ck = (ci - (if ((ag == unit))
600601 then ch
601602 else 0))
602603 let cl = (cj - (if ((ah == unit))
603604 then ch
604605 else 0))
605606 if ((aC.caller != this))
606607 then throw("Only the DApp itself can call this function")
607608 else if ((0 > ch))
608609 then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(ch)))
609610 else if (if ((0 > ci))
610611 then true
611612 else (0 > cj))
612613 then aR("Enroll amount negative")
613614 else if (if ((0 > ck))
614615 then true
615616 else (0 > cl))
616617 then throw("Too large amountLeave")
617618 else {
618- let bB = if (if (containsElement(U, ae))
619+ let bJ = if (if (containsElement(U, ae))
619620 then (ck > 0)
620621 else false)
621622 then invoke(this, "stakeUnstake", [true, ck, ae], nil)
622623 else 0
623- if ((bB == bB))
624+ if ((bJ == bJ))
624625 then {
625- let bC = if (if (containsElement(U, af))
626+ let bK = if (if (containsElement(U, af))
626627 then (cl > 0)
627628 else false)
628629 then invoke(this, "stakeUnstake", [true, cl, af], nil)
629630 else 0
630- if ((bC == bC))
631+ if ((bK == bK))
631632 then [IntegerEntry(f, (am + ck)), IntegerEntry(g, (an + cl)), IntegerEntry(("last_income_" + ae), ck), IntegerEntry(("last_income_" + af), cl)]
632633 else throw("Strict value is not equal to itself.")
633634 }
634635 else throw("Strict value is not equal to itself.")
635636 }
636637 })
637638
638639
639640
640641 @Callable(aC)
641642 func stakeUnstake (aU,aW,cm) = if ((aC.caller != this))
642643 then throw("Only contract itself can invoke this function")
643644 else if ((cm == "WAVES"))
644645 then {
645646 let cn = addressFromStringValue(valueOrErrorMessage(getString(D, x), "No leasing pool in oracle"))
646647 let co = getBinary(this, z)
647648 let cp = valueOrElse(getInteger(this, y), 0)
648649 let cq = if (aU)
649650 then (cp + aW)
650651 else (cp - aW)
651652 let cr = Lease(cn, cq)
652653 let cs = calculateLeaseId(cr)
653654 let ct = [cr, BinaryEntry(z, cs), IntegerEntry(y, cq)]
654655 let G = co
655656 if ($isInstanceOf(G, "ByteVector"))
656657 then {
657658 let cu = G
658659 ([LeaseCancel(cu)] ++ ct)
659660 }
660661 else ct
661662 }
662663 else {
663664 let cv = aV(aU, aW, fromBase58String(cm))
664665 let aY = cv._1
665666 let cw = cv._2
666667 let cx = cv._3
667668 let cy = cv._4
668669 let cz = invoke(cw, aY, cx, cy)
669670 if ((cz == cz))
670671 then nil
671672 else throw("Strict value is not equal to itself.")
672673 }
673674
674675
675676
676677 @Callable(aC)
677-func stakeAll () = valueOrElse(bc(), if (!(containsElement([J, K, L, M], aC.callerPublicKey)))
678+func stakeAll () = valueOrElse(bk(), if (!(containsElement([J, K, L, M], aC.callerPublicKey)))
678679 then throw("Only admin can call this function")
679680 else {
680- let bB = if (containsElement(U, ae))
681+ let bJ = if (containsElement(U, ae))
681682 then {
682683 let cA = (am - aD)
683684 if ((cA > 0))
684685 then invoke(this, "stakeUnstake", [true, cA, ae], nil)
685686 else 0
686687 }
687688 else 0
688- if ((bB == bB))
689+ if ((bJ == bJ))
689690 then {
690- let bC = if (containsElement(U, af))
691+ let bK = if (containsElement(U, af))
691692 then {
692693 let cB = (an - aE)
693694 if ((cB > 0))
694695 then invoke(this, "stakeUnstake", [true, cB, af], nil)
695696 else 0
696697 }
697698 else 0
698- if ((bC == bC))
699+ if ((bK == bK))
699700 then nil
700701 else throw("Strict value is not equal to itself.")
701702 }
702703 else throw("Strict value is not equal to itself.")
703704 })
704705
705706
706707 @Verifier(cC)
707708 func cD () = {
708709 let cE = {
709710 let cF = if (sigVerify(cC.bodyBytes, cC.proofs[0], J))
710711 then 1
711712 else 0
712713 let cG = if (sigVerify(cC.bodyBytes, cC.proofs[1], K))
713714 then 1
714715 else 0
715716 let cH = if (sigVerify(cC.bodyBytes, cC.proofs[2], L))
716717 then 1
717718 else 0
718719 (((cF + cG) + cH) >= 2)
719720 }
720721 let G = cC
721722 if ($isInstanceOf(G, "InvokeScriptTransaction"))
722723 then {
723724 let cz = G
724725 let cI = if ((cz.dApp == this))
725726 then (cz.function == "takeIntoAccountExtraFunds")
726727 else false
727728 let cJ = if (if (if ((cz.dApp == X))
728729 then (cz.function == "exchange")
729730 else false)
730731 then (ag == Q)
731732 else false)
732733 then true
733734 else if (if ((ah == Q))
734735 then (size(cz.payments) == 1)
735736 else false)
736737 then (cz.payments[0].assetId == Q)
737738 else false
738739 let cK = if (if (if ((cz.dApp == Y))
739740 then (cz.function == "exchange")
740741 else false)
741742 then (ag == R)
742743 else false)
743744 then true
744745 else if (if ((ah == R))
745746 then (size(cz.payments) == 1)
746747 else false)
747748 then (cz.payments[0].assetId == Q)
748749 else false
749750 let cL = if (if (if (sigVerify(cC.bodyBytes, cC.proofs[0], J))
750751 then true
751752 else sigVerify(cC.bodyBytes, cC.proofs[0], K))
752753 then true
753754 else sigVerify(cC.bodyBytes, cC.proofs[0], L))
754755 then true
755756 else sigVerify(cC.bodyBytes, cC.proofs[0], N)
756757 if (if (if (if (cI)
757758 then true
758759 else cJ)
759760 then true
760761 else cK)
761762 then cL
762763 else false)
763764 then true
764765 else cE
765766 }
766767 else cE
767768 }
768769

github/deemru/w8io/169f3d6 
183.38 ms