tx · 6Qy1rLAcgz2M8PJnKG5otoC2z5jP16sNDjhN64uqPFrw

3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT:  -0.01400000 Waves

2021.06.13 17:20 [1568678] smart account 3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT > SELF 0.00000000 Waves

{ "type": 13, "id": "6Qy1rLAcgz2M8PJnKG5otoC2z5jP16sNDjhN64uqPFrw", "fee": 1400000, "feeAssetId": null, "timestamp": 1623593990329, "version": 2, "chainId": 84, "sender": "3MsxHxruYWoddB4HRiPBYAWtMXMtCF1V9XT", "senderPublicKey": "3ijdmxaYrpDFsKVbQH2kvB7i6JzHj9bep9bGWiQPra2D", "proofs": [ "2YfxqFQU8YCtPxbZueDkbVvBUqDPQJsDPbeaAz2YkaQEXZLvDSF92SLWevSPtYfcnxRonMbaV7z4JWE48FzFuKgF" ], "script": "base64:AAIEAAAAAAAAACEIAhIDCgEIEgMKAQgSAwoBCBIDCgEIEgQKAggBEgMKAQgAAABXAAAAAAxhZG1pblB1YktleTEBAAAAIATPdeVk0MEPTme5HxNkxBoN6oQkQjF9M5BdQFgKnZNKAAAAAAxhZG1pblB1YktleTIBAAAAIATPdeVk0MEPTme5HxNkxBoN6oQkQjF9M5BdQFgKnZNKAAAAAAxhZG1pblB1YktleTMBAAAAIATPdeVk0MEPTme5HxNkxBoN6oQkQjF9M5BdQFgKnZNKAAAAABRrZXlTaGFyZVRva2Vuc0xvY2tlZAIAAAAaX3RvdGFsX3NoYXJlX3Rva2Vuc19sb2NrZWQAAAAAC2tTaGFyZUxpbWl0AgAAABxzaGFyZV9saW1pdF9vbl9maXJzdF9oYXJ2ZXN0AAAAABxrZXlSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50AgAAAB1fY3VycmVudF9wb29sX2ZyYWN0aW9uX3Jld2FyZAAAAAAda2V5UmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMCAAAAHl9wcmV2aW91c19wb29sX2ZyYWN0aW9uX3Jld2FyZAAAAAAVa2V5SGVpZ2h0UG9vbEZyYWN0aW9uAgAAABpfcG9vbF9yZXdhcmRfdXBkYXRlX2hlaWdodAAAAAAda2V5VG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQCAAAAHnRvdGFsX3Jld2FyZF9wZXJfYmxvY2tfY3VycmVudAAAAAAea2V5VG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzAgAAAB90b3RhbF9yZXdhcmRfcGVyX2Jsb2NrX3ByZXZpb3VzAAAAABVrZXlSZXdhcmRVcGRhdGVIZWlnaHQCAAAAFHJld2FyZF91cGRhdGVfaGVpZ2h0AAAAAA9rZXlMYXN0SW50ZXJlc3QCAAAADl9sYXN0X2ludGVyZXN0AAAAABVrZXlMYXN0SW50ZXJlc3RIZWlnaHQCAAAAFV9sYXN0X2ludGVyZXN0X2hlaWdodAAAAAAYa2V5VXNlclNoYXJlVG9rZW5zTG9ja2VkAgAAABRfc2hhcmVfdG9rZW5zX2xvY2tlZAAAAAATa2V5VXNlckxhc3RJbnRlcmVzdAIAAAAOX2xhc3RfaW50ZXJlc3QAAAAACWtleVNXT1BpZAIAAAAHU1dPUF9pZAAAAAAYa2V5VXNlclNXT1BDbGFpbWVkQW1vdW50AgAAABRfU1dPUF9jbGFpbWVkX2Ftb3VudAAAAAAca2V5VXNlclNXT1BMYXN0Q2xhaW1lZEFtb3VudAIAAAAZX1NXT1BfbGFzdF9jbGFpbWVkX2Ftb3VudAAAAAAQa2V5QXZhaWxhYmxlU1dPUAIAAAAPX2F2YWlsYWJsZV9TV09QAAAAABVrZXlGYXJtaW5nU3RhcnRIZWlnaHQCAAAAFGZhcm1pbmdfc3RhcnRfaGVpZ2h0AAAAAAZrZXlBUFkCAAAAA2FweQAAAAAWa1ByZXZpb3VzVG90YWxWb3RlU1dPUAIAAAAYcHJldmlvdXNfdG90YWxfdm90ZV9TV09QAAAAABNrZXlTd29wWWVhckVtaXNzaW9uAgAAABJzd29wX3llYXJfZW1pc3Npb24AAAAAD2tleUJhbGFuY2VjcG1tQQIAAAAPQV9hc3NldF9iYWxhbmNlAAAAAA9rZXlCYWxhbmNlY3BtbUICAAAAD0JfYXNzZXRfYmFsYW5jZQAAAAAha0hhcnZlc3RQb29sQWN0aXZlVm90ZVN0cnVjVm90aW5nAgAAAB5faGFydmVzdF9wb29sX2FjdGl2ZVZvdGVfc3RydWMAAAAAJWtIYXJ2ZXN0VXNlclBvb2xBY3RpdmVWb3RlU3RydWNWb3RpbmcCAAAAI19oYXJ2ZXN0X3VzZXJfcG9vbF9hY3RpdmVWb3RlX3N0cnVjAAAAABlrZXlMaW1pdFNoYXJlRmlyc3RIYXJ2ZXN0AgAAABxzaGFyZV9saW1pdF9vbl9maXJzdF9oYXJ2ZXN0AAAAAAtrZXlBc3NldElkQQIAAAAKQV9hc3NldF9pZAAAAAALa2V5QXNzZXRJZEICAAAACkJfYXNzZXRfaWQAAAAAFWtleUZpcnN0SGFydmVzdEhlaWdodAIAAAAUZmlyc3RfaGFydmVzdF9oZWlnaHQAAAAAE2tleWZpcnN0SGFydmVzdENwbW0CAAAADWZpcnN0X2hhcnZlc3QAAAAADmtleVRlbXBQcmV2U3VtAgAAABNzdW1fcmV3YXJkX3ByZXZpb3VzAAAAAA1rZXlUZW1wQ3VyU3VtAgAAABJzdW1fcmV3YXJkX2N1cnJlbnQAAAAAEWdvdmVybmFuY2VBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUqvpp3oH0E1KFyj8uOohRsxnqmBxZ8g0tAAAAAAZ3YWxsZXQJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVTfPUuXiVhZ3hXg5FELVt09el+9tX+FIYkAAAAADXZvdGluZ0FkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVQaNn7fV6KdJ2lc/r/3JtTn+6HDaD4gyn8AAAAAHGFkbWluSW5jcmVhc2VJbnRlcmVzdEFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVTfPUuXiVhZ3hXg5FELVt09el+9tX+FIYkAAAAADm9uZVdlZWtJbkJsb2NrAAAAAAAAACd6AAAAAA50b3RhbFZvdGVTaGFyZQAAAAACVAvkAAAAAAALc2NhbGVWYWx1ZTEAAAAAAAAAAAoAAAAAC3NjYWxlVmFsdWUzAAAAAAAAAAPoAAAAAAtzY2FsZVZhbHVlNQAAAAAAAAGGoAAAAAALc2NhbGVWYWx1ZTYAAAAAAAAPQkAAAAAAC3NjYWxlVmFsdWU4AAAAAAAF9eEAAAAAAAxzY2FsZVZhbHVlMTEAAAAAF0h26AABAAAAC3N0ckFzc2V0SWRBAAAAAQAAAARwb29sCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAARwb29sBQAAAAtrZXlBc3NldElkQQEAAAALc3RyQXNzZXRJZEIAAAABAAAABHBvb2wJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHBvb2wFAAAAC2tleUFzc2V0SWRCAQAAAAhhc3NldElkQQAAAAEAAAAEcG9vbAMJAAAAAAAAAgkBAAAAC3N0ckFzc2V0SWRBAAAAAQUAAAAEcG9vbAIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQkBAAAAC3N0ckFzc2V0SWRBAAAAAQUAAAAEcG9vbAEAAAAIYXNzZXRJZEIAAAABAAAABHBvb2wDCQAAAAAAAAIJAQAAAAtzdHJBc3NldElkQgAAAAEFAAAABHBvb2wCAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEJAQAAAAtzdHJBc3NldElkQgAAAAEFAAAABHBvb2wAAAAAC2tCYXNlUGVyaW9kAgAAAAtiYXNlX3BlcmlvZAAAAAANa1BlcmlvZExlbmd0aAIAAAANcGVyaW9kX2xlbmd0aAAAAAAMa1N0YXJ0SGVpZ2h0AgAAAAxzdGFydF9oZWlnaHQAAAAAE2tGaXJzdEhhcnZlc3RIZWlnaHQCAAAAFGZpcnN0X2hhcnZlc3RfaGVpZ2h0AAAAABZrRHVyYXRpb25GdWxsVm90ZVBvd2VyAgAAABhkdXJhdGlvbl9mdWxsX3ZvdGVfcG93ZXIAAAAADWtNaW5Wb3RlUG93ZXICAAAADm1pbl92b3RlX3Bvd2VyAAAAAApiYXNlUGVyaW9kCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANdm90aW5nQWRkcmVzcwUAAAALa0Jhc2VQZXJpb2QCAAAAEUVtcHR5IGtCYXNlUGVyaW9kAAAAAAtzdGFydEhlaWdodAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAADXZvdGluZ0FkZHJlc3MFAAAADGtTdGFydEhlaWdodAIAAAASRW1wdHkga1N0YXJ0SGVpZ2h0AAAAAAxwZXJpb2RMZW5ndGgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA12b3RpbmdBZGRyZXNzBQAAAA1rUGVyaW9kTGVuZ3RoAgAAABNFbXB0eSBrUGVyaW9kTGVuZ3RoAAAAABVkdXJhdGlvbkZ1bGxWb3RlUG93ZXIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA12b3RpbmdBZGRyZXNzBQAAABZrRHVyYXRpb25GdWxsVm90ZVBvd2VyAgAAABxFbXB0eSBrRHVyYXRpb25GdWxsVm90ZVBvd2VyAAAAAAxtaW5Wb3RlUG93ZXIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA12b3RpbmdBZGRyZXNzBQAAAA1rTWluVm90ZVBvd2VyAgAAABNFbXB0eSBrTWluVm90ZVBvd2VyAAAAAApjdXJyUGVyaW9kCQAAZAAAAAIFAAAACmJhc2VQZXJpb2QJAABpAAAAAgkAAGUAAAACBQAAAAZoZWlnaHQFAAAAC3N0YXJ0SGVpZ2h0BQAAAAxwZXJpb2RMZW5ndGgBAAAADWdldExpbWl0VG9rZW4AAAABAAAABHBvb2wJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHBvb2wFAAAAGWtleUxpbWl0U2hhcmVGaXJzdEhhcnZlc3QAAAAAAAAAAAAAAAAAA0FQWQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAAGa2V5QVBZAAAAABBTd29wWWVhckVtaXNzaW9uCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzBQAAABNrZXlTd29wWWVhckVtaXNzaW9uAQAAAAphc3NldE5hbWVBAAAAAQAAAARwb29sBAAAAAckbWF0Y2gwCQEAAAAIYXNzZXRJZEEAAAABBQAAAARwb29sAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJpZAUAAAAHJG1hdGNoMAgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAACaWQAAAAEbmFtZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAFd2F2ZXMFAAAAByRtYXRjaDACAAAABVdBVkVTCQAAAgAAAAECAAAAC01hdGNoIGVycm9yAQAAAAphc3NldE5hbWVCAAAAAQAAAARwb29sBAAAAAckbWF0Y2gwCQEAAAAIYXNzZXRJZEIAAAABBQAAAARwb29sAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJpZAUAAAAHJG1hdGNoMAgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAACaWQAAAAEbmFtZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAFd2F2ZXMFAAAAByRtYXRjaDACAAAABVdBVkVTCQAAAgAAAAECAAAAC01hdGNoIGVycm9yAAAAAARTV09QCQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAACWtleVNXT1BpZAEAAAAOaXNGaXJzdEhhcnZlc3QAAAABAAAABHBvb2wJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQbAAAAAgUAAAAEcG9vbAUAAAATa2V5Zmlyc3RIYXJ2ZXN0Q3BtbQcBAAAAFWdldEhlaWdodEZpcnN0SGFydmVzdAAAAAEAAAAEcG9vbAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAARwb29sBQAAABVrZXlGaXJzdEhhcnZlc3RIZWlnaHQAAAAAAAAAAAABAAAAC2dldEJhbGFuY2VBAAAAAQAAAARwb29sCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEcG9vbAUAAAAPa2V5QmFsYW5jZWNwbW1BCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAA9rZXlCYWxhbmNlY3BtbUEBAAAAC2dldEJhbGFuY2VCAAAAAQAAAARwb29sCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEcG9vbAUAAAAPa2V5QmFsYW5jZWNwbW1CCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAA9rZXlCYWxhbmNlY3BtbUIBAAAAEmdldFNoYXJlTGltaXRUb2tlbgAAAAEAAAAEcG9vbAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHBvb2wFAAAAC2tTaGFyZUxpbWl0CQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAAtrU2hhcmVMaW1pdAEAAAAYZ2V0VG90YWxTaGFyZVRva2VuTG9ja2VkAAAAAQAAAARwb29sCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAARwb29sBQAAABRrZXlTaGFyZVRva2Vuc0xvY2tlZAkAASwAAAACCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAARwb29sBQAAABRrZXlTaGFyZVRva2Vuc0xvY2tlZAEAAAAPZ2V0U2hhcmVBc3NldElkAAAAAQAAAARwb29sCQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQUAAAAEcG9vbAIAAAAOc2hhcmVfYXNzZXRfaWQBAAAADmFjY291bnRCYWxhbmNlAAAAAQAAAAdhc3NldElkBAAAAAckbWF0Y2gwBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJpZAUAAAAHJG1hdGNoMAkAA/AAAAACBQAAAAR0aGlzBQAAAAJpZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAFd2F2ZXMFAAAAByRtYXRjaDAICQAD7wAAAAEFAAAABHRoaXMAAAAJYXZhaWxhYmxlCQAAAgAAAAECAAAAC01hdGNoIGVycm9yAQAAAAxnZXRBc3NldEluZm8AAAABAAAAB2Fzc2V0SWQEAAAAByRtYXRjaDAFAAAAB2Fzc2V0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAmlkBQAAAAckbWF0Y2gwBAAAAAhzdHJpbmdJZAkAAlgAAAABBQAAAAJpZAQAAAAEaW5mbwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAD7AAAAAEFAAAAAmlkCQABLAAAAAIJAAEsAAAAAgIAAAAGQXNzZXQgBQAAAAhzdHJpbmdJZAIAAAAOIGRvZXNuJ3QgZXhpc3QJAAUVAAAAAwUAAAAIc3RyaW5nSWQIBQAAAARpbmZvAAAABG5hbWUIBQAAAARpbmZvAAAACGRlY2ltYWxzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAV3YXZlcwUAAAAHJG1hdGNoMAkABRUAAAADAgAAAAVXQVZFUwIAAAAFV0FWRVMAAAAAAAAAAAgJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IBAAAADmNhbGNTY2FsZVZhbHVlAAAAAgAAAAhhc3NldElkMQAAAAhhc3NldElkMgQAAAAQYXNzZXRJZDFEZWNpbWFscwgJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAIYXNzZXRJZDEAAAAIZGVjaW1hbHMEAAAAEGFzc2V0SWQyRGVjaW1hbHMICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAACGFzc2V0SWQyAAAACGRlY2ltYWxzBAAAAAtzY2FsZURpZ2l0cwkAAGQAAAACCQAAZQAAAAIFAAAAEGFzc2V0SWQyRGVjaW1hbHMFAAAAEGFzc2V0SWQxRGVjaW1hbHMAAAAAAAAAAAgJAABsAAAABgAAAAAAAAAACgAAAAAAAAAAAAUAAAALc2NhbGVEaWdpdHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAACEhBTEZET1dOAQAAABF1c2VyQXZhaWxhYmxlU1dPUAAAAAIAAAAEcG9vbAAAAAR1c2VyCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQUAAAAEdXNlcgUAAAAQa2V5QXZhaWxhYmxlU1dPUAAAAAAAAAAAAAEAAAAKcmV3YXJkSW5mbwAAAAEAAAAEcG9vbAQAAAAadG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAABFnb3Zlcm5hbmNlQWRkcmVzcwUAAAAda2V5VG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAB1rZXlUb3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAIAAAAMIGF0IGFkZHJlc3MgCQAEJQAAAAEFAAAAEWdvdmVybmFuY2VBZGRyZXNzBAAAABt0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAABFnb3Zlcm5hbmNlQWRkcmVzcwUAAAAea2V5VG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAea2V5VG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzAgAAAAwgYXQgYWRkcmVzcyAJAAQlAAAAAQUAAAARZ292ZXJuYW5jZUFkZHJlc3MEAAAAGXJld2FyZFBvb2xGcmFjdGlvbkN1cnJlbnQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAABFnb3Zlcm5hbmNlQWRkcmVzcwkAASwAAAACBQAAAARwb29sBQAAABxrZXlSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAARwb29sBQAAABxrZXlSZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50AgAAAAwgYXQgYWRkcmVzcyAJAAQlAAAAAQUAAAARZ292ZXJuYW5jZUFkZHJlc3MEAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAAEWdvdmVybmFuY2VBZGRyZXNzBQAAABVrZXlSZXdhcmRVcGRhdGVIZWlnaHQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAABVrZXlSZXdhcmRVcGRhdGVIZWlnaHQCAAAADCBhdCBhZGRyZXNzIAkABCUAAAABBQAAABFnb3Zlcm5hbmNlQWRkcmVzcwQAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAABFnb3Zlcm5hbmNlQWRkcmVzcwkAASwAAAACBQAAAARwb29sBQAAABVrZXlIZWlnaHRQb29sRnJhY3Rpb24AAAAAAAAAAAAEAAAAGnJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAARZ292ZXJuYW5jZUFkZHJlc3MJAAEsAAAAAgUAAAAEcG9vbAUAAAAda2V5UmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAUTm8gZGF0YSBvbiB0aGUga2V5OiAFAAAABHBvb2wFAAAAHWtleVJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzAgAAAAwgYXQgYWRkcmVzcyAJAAQlAAAAAQUAAAARZ292ZXJuYW5jZUFkZHJlc3MEAAAAEXJld2FyZFBvb2xDdXJyZW50CQAAawAAAAMFAAAAGnRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50BQAAABlyZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50BQAAAA50b3RhbFZvdGVTaGFyZQQAAAAScmV3YXJkUG9vbFByZXZpb3VzCQAAawAAAAMFAAAAG3RvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwUAAAAacmV3YXJkUG9vbEZyYWN0aW9uUHJldmlvdXMFAAAADnRvdGFsVm90ZVNoYXJlAwMJAABmAAAAAgUAAAARcmV3YXJkUG9vbEN1cnJlbnQFAAAAGnRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50BgkAAGYAAAACBQAAABJyZXdhcmRQb29sUHJldmlvdXMFAAAAG3RvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwkAAAIAAAABAgAAAGJyZXdhcmRQb29sQ3VycmVudCA+IHRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50IG9yIHJld2FyZFBvb2xQcmV2aW91cyA+IHRvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwkABRYAAAAEBQAAABFyZXdhcmRQb29sQ3VycmVudAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABJyZXdhcmRQb29sUHJldmlvdXMFAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQBAAAAE2dldExhc3RJbnRlcmVzdEluZm8AAAABAAAABHBvb2wEAAAADGxhc3RJbnRlcmVzdAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAEcG9vbAUAAAAPa2V5TGFzdEludGVyZXN0CQABLAAAAAIJAAEsAAAAAgIAAAAUTm8gZGF0YSBvbiB0aGUga2V5OiAFAAAABHBvb2wFAAAAD2tleUxhc3RJbnRlcmVzdAQAAAASbGFzdEludGVyZXN0SGVpZ2h0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAEcG9vbAUAAAAVa2V5TGFzdEludGVyZXN0SGVpZ2h0BQAAAAZoZWlnaHQJAAUUAAAAAgUAAAASbGFzdEludGVyZXN0SGVpZ2h0BQAAAAxsYXN0SW50ZXJlc3QBAAAAE2dldFVzZXJJbnRlcmVzdEluZm8AAAACAAAABHBvb2wAAAALdXNlckFkZHJlc3MEAAAAEHVzZXJMYXN0SW50ZXJlc3QJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABBQAAAAt1c2VyQWRkcmVzcwUAAAATa2V5VXNlckxhc3RJbnRlcmVzdAQAAAAJdXNlclNoYXJlCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQUAAAALdXNlckFkZHJlc3MFAAAAGGtleVVzZXJTaGFyZVRva2Vuc0xvY2tlZAQAAAAMbGFzdEludGVyZXN0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACBQAAAARwb29sBQAAAA9rZXlMYXN0SW50ZXJlc3QJAAEsAAAAAgkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAEcG9vbAUAAAAPa2V5TGFzdEludGVyZXN0BAAAABV1c2VyTGFzdEludGVyZXN0VmFsdWUEAAAAByRtYXRjaDAFAAAAEHVzZXJMYXN0SW50ZXJlc3QDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAQdXNlckxhc3RJbnRlcmVzdAUAAAAHJG1hdGNoMAUAAAAQdXNlckxhc3RJbnRlcmVzdAUAAAAMbGFzdEludGVyZXN0BAAAABV1c2VyU2hhcmVUb2tlbnNBbW91bnQEAAAAByRtYXRjaDAFAAAACXVzZXJTaGFyZQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAl1c2VyU2hhcmUFAAAAByRtYXRjaDAFAAAACXVzZXJTaGFyZQAAAAAAAAAAAAkABRQAAAACBQAAABV1c2VyTGFzdEludGVyZXN0VmFsdWUFAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAEAAAAMY2FsY0ludGVyZXN0AAAACgAAABJsYXN0SW50ZXJlc3RIZWlnaHQAAAAScmV3YXJkVXBkYXRlSGVpZ2h0AAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQAAAAMbGFzdEludGVyZXN0AAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawAAABBzaGFyZVRva2VuTG9ja2VkAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sAAAAMc2hhcmVBc3NldElkAAAACnNjYWxlVmFsdWUAAAAJcG10QW1vdW50AwkAAAAAAAACBQAAABBzaGFyZVRva2VuTG9ja2VkAAAAAAAAAAAAAAAAAAAAAAAAAwkBAAAAAiE9AAAAAgUAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAAAAAAAAAAAAAMDCQAAZgAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAGaGVpZ2h0CQAAAAAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAcEAAAABnJld2FyZAkAAGgAAAACBQAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0CQAAZAAAAAIFAAAADGxhc3RJbnRlcmVzdAkAAGsAAAADBQAAAAZyZXdhcmQFAAAACnNjYWxlVmFsdWUFAAAAEHNoYXJlVG9rZW5Mb2NrZWQDAwkAAGYAAAACBQAAAAZoZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkBAAAAAiE9AAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0BwQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQJAABkAAAAAgUAAAAMbGFzdEludGVyZXN0CQAAawAAAAMFAAAABnJld2FyZAUAAAAKc2NhbGVWYWx1ZQUAAAAQc2hhcmVUb2tlbkxvY2tlZAMDAwkAAGYAAAACBQAAAAZoZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkAAAAAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQHCQAAZgAAAAIFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BwQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAkAAGQAAAACBQAAAAxsYXN0SW50ZXJlc3QJAABrAAAAAwUAAAAGcmV3YXJkBQAAAApzY2FsZVZhbHVlBQAAABBzaGFyZVRva2VuTG9ja2VkBAAAACpyZXdhcmRBZnRlckxhc3RJbnRlcmVzdEJlZm9yZVJlYXdhcmRVcGRhdGUJAABoAAAAAgUAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAQAAAATaW50ZXJlc3RBZnRlclVwZGF0ZQkAAGQAAAACBQAAAAxsYXN0SW50ZXJlc3QJAABrAAAAAwUAAAAqcmV3YXJkQWZ0ZXJMYXN0SW50ZXJlc3RCZWZvcmVSZWF3YXJkVXBkYXRlBQAAAApzY2FsZVZhbHVlBQAAABBzaGFyZVRva2VuTG9ja2VkBAAAAAZyZXdhcmQJAABoAAAAAgUAAAAVY3VycmVudFJld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQAAZAAAAAIFAAAAE2ludGVyZXN0QWZ0ZXJVcGRhdGUJAABrAAAAAwUAAAAGcmV3YXJkBQAAAApzY2FsZVZhbHVlBQAAABBzaGFyZVRva2VuTG9ja2VkAwkAAGYAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAABmhlaWdodAQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQJAABkAAAAAgUAAAAMbGFzdEludGVyZXN0CQAAawAAAAMFAAAABnJld2FyZAUAAAAKc2NhbGVWYWx1ZQUAAAAQc2hhcmVUb2tlbkxvY2tlZAMJAABmAAAAAgUAAAASbGFzdEludGVyZXN0SGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQEAAAABnJld2FyZAkAAGgAAAACBQAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQJAABkAAAAAgUAAAAMbGFzdEludGVyZXN0CQAAawAAAAMFAAAABnJld2FyZAUAAAAKc2NhbGVWYWx1ZQUAAAAQc2hhcmVUb2tlbkxvY2tlZAQAAAAqcmV3YXJkQWZ0ZXJMYXN0SW50ZXJlc3RCZWZvcmVSZWF3YXJkVXBkYXRlCQAAaAAAAAIFAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQEAAAAE2ludGVyZXN0QWZ0ZXJVcGRhdGUJAABkAAAAAgUAAAAMbGFzdEludGVyZXN0CQAAawAAAAMFAAAAKnJld2FyZEFmdGVyTGFzdEludGVyZXN0QmVmb3JlUmVhd2FyZFVwZGF0ZQUAAAAKc2NhbGVWYWx1ZQUAAAAQc2hhcmVUb2tlbkxvY2tlZAQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkAAGQAAAACBQAAABNpbnRlcmVzdEFmdGVyVXBkYXRlCQAAawAAAAMFAAAABnJld2FyZAUAAAAKc2NhbGVWYWx1ZQUAAAAQc2hhcmVUb2tlbkxvY2tlZAEAAAAJY2xhaW1DYWxjAAAAAwAAAARwb29sAAAABmNhbGxlcgAAAAlwbXRBbW91bnQEAAAADHNoYXJlQXNzZXRJZAkBAAAAD2dldFNoYXJlQXNzZXRJZAAAAAEFAAAABHBvb2wEAAAACnNjYWxlVmFsdWUJAQAAAA5jYWxjU2NhbGVWYWx1ZQAAAAIFAAAABFNXT1AFAAAADHNoYXJlQXNzZXRJZAQAAAAQc2hhcmVUb2tlbkxvY2tlZAkBAAAAGGdldFRvdGFsU2hhcmVUb2tlbkxvY2tlZAAAAAEFAAAABHBvb2wEAAAADSR0MDEzMDAwMTMwNjUJAQAAABNnZXRMYXN0SW50ZXJlc3RJbmZvAAAAAQUAAAAEcG9vbAQAAAASbGFzdEludGVyZXN0SGVpZ2h0CAUAAAANJHQwMTMwMDAxMzA2NQAAAAJfMQQAAAAMbGFzdEludGVyZXN0CAUAAAANJHQwMTMwMDAxMzA2NQAAAAJfMgQAAAANJHQwMTMwNzAxMzE4MgkBAAAACnJld2FyZEluZm8AAAABBQAAAARwb29sBAAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sIBQAAAA0kdDAxMzA3MDEzMTgyAAAAAl8xBAAAABJyZXdhcmRVcGRhdGVIZWlnaHQIBQAAAA0kdDAxMzA3MDEzMTgyAAAAAl8yBAAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCAUAAAANJHQwMTMwNzAxMzE4MgAAAAJfMwQAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAgFAAAADSR0MDEzMDcwMTMxODIAAAACXzQEAAAADSR0MDEzMTg3MTMyNjYJAQAAABNnZXRVc2VySW50ZXJlc3RJbmZvAAAAAgUAAAAEcG9vbAUAAAAGY2FsbGVyBAAAABB1c2VyTGFzdEludGVyZXN0CAUAAAANJHQwMTMxODcxMzI2NgAAAAJfMQQAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CAUAAAANJHQwMTMxODcxMzI2NgAAAAJfMgQAAAAPY3VycmVudEludGVyZXN0CQEAAAAMY2FsY0ludGVyZXN0AAAACgUAAAASbGFzdEludGVyZXN0SGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQFAAAADGxhc3RJbnRlcmVzdAUAAAAVY3VycmVudFJld2FyZFBlckJsb2NrBQAAABBzaGFyZVRva2VuTG9ja2VkBQAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrBQAAAAxzaGFyZUFzc2V0SWQFAAAACnNjYWxlVmFsdWUFAAAACXBtdEFtb3VudAQAAAALY2xhaW1BbW91bnQJAABrAAAAAwUAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CQAAZQAAAAIFAAAAD2N1cnJlbnRJbnRlcmVzdAUAAAAQdXNlckxhc3RJbnRlcmVzdAUAAAAKc2NhbGVWYWx1ZQQAAAAPdXNlck5ld0ludGVyZXN0BQAAAA9jdXJyZW50SW50ZXJlc3QJAAUWAAAABAUAAAAPdXNlck5ld0ludGVyZXN0BQAAAA9jdXJyZW50SW50ZXJlc3QFAAAAC2NsYWltQW1vdW50BQAAABV1c2VyU2hhcmVUb2tlbnNBbW91bnQBAAAAF2NhbGN1bGF0ZVByb3RvY29sUmV3YXJkAAAAAQAAAARwb29sBAAAAA0kdDAxMzc4NDEzODQ5CQEAAAATZ2V0TGFzdEludGVyZXN0SW5mbwAAAAEFAAAABHBvb2wEAAAAEmxhc3RJbnRlcmVzdEhlaWdodAgFAAAADSR0MDEzNzg0MTM4NDkAAAACXzEEAAAADGxhc3RJbnRlcmVzdAgFAAAADSR0MDEzNzg0MTM4NDkAAAACXzIEAAAADSR0MDEzODU0MTM5NjUJAQAAAApyZXdhcmRJbmZvAAAAAQUAAAAEcG9vbAQAAAAVY3VycmVudFJld2FyZFBlckJsb2NrCAUAAAANJHQwMTM4NTQxMzk2NQAAAAJfMQQAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMTM4NTQxMzk2NQAAAAJfMgQAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawgFAAAADSR0MDEzODU0MTM5NjUAAAACXzMEAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQIBQAAAA0kdDAxMzg1NDEzOTY1AAAAAl80BAAAABBzaGFyZVRva2VuTG9ja2VkCQEAAAAYZ2V0VG90YWxTaGFyZVRva2VuTG9ja2VkAAAAAQUAAAAEcG9vbAMDCQAAAAAAAAIFAAAAEHNoYXJlVG9rZW5Mb2NrZWQAAAAAAAAAAAAJAAAAAAAAAgUAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAAAAAAAAAAAAAcDCQAAZgAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAGaGVpZ2h0BAAAAAZyZXdhcmQJAABoAAAAAgUAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAGcmV3YXJkAwkAAGYAAAACBQAAABJsYXN0SW50ZXJlc3RIZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAGcmV3YXJkBAAAACpyZXdhcmRBZnRlckxhc3RJbnRlcmVzdEJlZm9yZVJlYXdhcmRVcGRhdGUJAABoAAAAAgUAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkAAGQAAAACBQAAAAZyZXdhcmQFAAAAKnJld2FyZEFmdGVyTGFzdEludGVyZXN0QmVmb3JlUmVhd2FyZFVwZGF0ZQMDCQAAAAAAAAIFAAAAEHNoYXJlVG9rZW5Mb2NrZWQAAAAAAAAAAAAJAQAAAAIhPQAAAAIFAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQAAAAAAAAAAAAHAwMJAABmAAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAAAZoZWlnaHQJAAAAAAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0BwQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQFAAAABnJld2FyZAMDCQAAZgAAAAIFAAAABmhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQEAAAACIT0AAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQHBAAAAAZyZXdhcmQJAABoAAAAAgUAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAGcmV3YXJkAwMDCQAAZgAAAAIFAAAABmhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQAAAAAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAcJAABmAAAAAgUAAAASbGFzdEludGVyZXN0SGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQHBAAAAAZyZXdhcmQJAABoAAAAAgUAAAAVY3VycmVudFJld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0BQAAAAZyZXdhcmQEAAAAKnJld2FyZEFmdGVyTGFzdEludGVyZXN0QmVmb3JlUmVhd2FyZFVwZGF0ZQkAAGgAAAACBQAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0BAAAAAZyZXdhcmQJAABoAAAAAgUAAAAVY3VycmVudFJld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CQAAZAAAAAIFAAAABnJld2FyZAUAAAAqcmV3YXJkQWZ0ZXJMYXN0SW50ZXJlc3RCZWZvcmVSZWF3YXJkVXBkYXRlAAAAAAAAAAAAAQAAABZjaGVja1BtdEFzc2V0SWRDb3JyZWN0AAAAAgAAAARwb29sAAAACnBtdEFzc2V0SWQEAAAAEHBvb2xTaGFyZUFzc2V0SWQJAAJZAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgkBAAAABXZhbHVlAAAAAQkABCYAAAABBQAAAARwb29sAgAAAA5zaGFyZV9hc3NldF9pZAMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAQcG9vbFNoYXJlQXNzZXRJZAYHAQAAABhnZXRVc2VyU1dPUENsYWltZWRBbW91bnQAAAACAAAABHBvb2wAAAAEdXNlcgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEFAAAABHVzZXIFAAAAGGtleVVzZXJTV09QQ2xhaW1lZEFtb3VudAAAAAAAAAAAAAAAAAYAAAABaQEAAAAEaW5pdAAAAAEAAAAHZWFybHlMUAMJAQAAAAlpc0RlZmluZWQAAAABCQAEHQAAAAIFAAAABHRoaXMFAAAACWtleVNXT1BpZAkAAAIAAAABAgAAABhTV09QIGFscmVhZHkgaW5pdGlhbGl6ZWQEAAAACmluaXRBbW91bnQAAABa8xB6QAAEAAAACVNXT1Bpc3N1ZQkABEIAAAAFAgAAAARTV09QAgAAABNTV09QIHByb3RvY29sIHRva2VuBQAAAAppbml0QW1vdW50AAAAAAAAAAAIBgQAAAAGU1dPUGlkCQAEOAAAAAEFAAAACVNXT1Bpc3N1ZQkABEwAAAACCQAEQgAAAAUCAAAABFNXT1ACAAAAE1NXT1AgcHJvdG9jb2wgdG9rZW4FAAAACmluaXRBbW91bnQAAAAAAAAAAAgGCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACWtleVNXT1BpZAkAAlgAAAABBQAAAAZTV09QaWQFAAAAA25pbAAAAAFpAQAAABRpbml0UG9vbFNoYXJlRmFybWluZwAAAAEAAAAEcG9vbAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAACtPbmx5IHRoZSBEQXBwIGl0c2VsZiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uBAAAAA0kdDAxNjgwNTE2OTA4CQEAAAAKcmV3YXJkSW5mbwAAAAEFAAAABHBvb2wEAAAADWN1cnJlbnRSZXdhcmQIBQAAAA0kdDAxNjgwNTE2OTA4AAAAAl8xBAAAABJyZXdhcmRVcGRhdGVIZWlnaHQIBQAAAA0kdDAxNjgwNTE2OTA4AAAAAl8yBAAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCAUAAAANJHQwMTY4MDUxNjkwOAAAAAJfMwQAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAgFAAAADSR0MDE2ODA1MTY5MDgAAAACXzQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAUa2V5U2hhcmVUb2tlbnNMb2NrZWQAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAPa2V5TGFzdEludGVyZXN0AAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAFWtleUxhc3RJbnRlcmVzdEhlaWdodAUAAAAGaGVpZ2h0BQAAAANuaWwAAAABaQEAAAASdXBkYXRlUG9vbEludGVyZXN0AAAAAQAAAARwb29sAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAZ3YWxsZXQJAAACAAAAAQIAAAAsT25seSB0aGUgQWRtaW4gaXRzZWxmIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24EAAAADSR0MDE3MjQyMTczNjIJAQAAAAljbGFpbUNhbGMAAAADBQAAAARwb29sBQAAABxhZG1pbkluY3JlYXNlSW50ZXJlc3RBZGRyZXNzAAAAAAAAAAAABAAAAA91c2VyTmV3SW50ZXJlc3QIBQAAAA0kdDAxNzI0MjE3MzYyAAAAAl8xBAAAAA9jdXJyZW50SW50ZXJlc3QIBQAAAA0kdDAxNzI0MjE3MzYyAAAAAl8yBAAAAAtjbGFpbUFtb3VudAgFAAAADSR0MDE3MjQyMTczNjIAAAACXzMEAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAgFAAAADSR0MDE3MjQyMTczNjIAAAACXzQEAAAADSR0MDE3MzY3MTc0NzAJAQAAAApyZXdhcmRJbmZvAAAAAQUAAAAEcG9vbAQAAAANY3VycmVudFJld2FyZAgFAAAADSR0MDE3MzY3MTc0NzAAAAACXzEEAAAAEnJld2FyZFVwZGF0ZUhlaWdodAgFAAAADSR0MDE3MzY3MTc0NzAAAAACXzIEAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sIBQAAAA0kdDAxNzM2NzE3NDcwAAAAAl8zBAAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMTczNjcxNzQ3MAAAAAJfNAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sBQAAAA9rZXlMYXN0SW50ZXJlc3QFAAAAD3VzZXJOZXdJbnRlcmVzdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sBQAAABVrZXlMYXN0SW50ZXJlc3RIZWlnaHQFAAAABmhlaWdodAUAAAADbmlsAAAAAWkBAAAAD2xvY2tTaGFyZVRva2VucwAAAAEAAAAEcG9vbAQAAAANJHQwMTc2NjIxNzczNwkABRQAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAACXBtdEFtb3VudAgFAAAADSR0MDE3NjYyMTc3MzcAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAA0kdDAxNzY2MjE3NzM3AAAAAl8yBAAAAA0kdDAxNzc0MjE3ODE1CQEAAAAMZ2V0QXNzZXRJbmZvAAAAAQUAAAAKcG10QXNzZXRJZAQAAAANcG10U3RyQXNzZXRJZAgFAAAADSR0MDE3NzQyMTc4MTUAAAACXzEEAAAADHBtdEFzc2V0TmFtZQgFAAAADSR0MDE3NzQyMTc4MTUAAAACXzIEAAAAC3BtdERlY2ltYWxzCAUAAAANJHQwMTc3NDIxNzgxNQAAAAJfMwQAAAANJHQwMTc4MjAxNzkyOAkBAAAACWNsYWltQ2FsYwAAAAMFAAAABHBvb2wIBQAAAAFpAAAABmNhbGxlcgUAAAAJcG10QW1vdW50BAAAAA91c2VyTmV3SW50ZXJlc3QIBQAAAA0kdDAxNzgyMDE3OTI4AAAAAl8xBAAAAA9jdXJyZW50SW50ZXJlc3QIBQAAAA0kdDAxNzgyMDE3OTI4AAAAAl8yBAAAAAtjbGFpbUFtb3VudAgFAAAADSR0MDE3ODIwMTc5MjgAAAACXzMEAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAgFAAAADSR0MDE3ODIwMTc5MjgAAAACXzQEAAAAEnVzZXJTaGFyZUFtb3VudE5ldwkAAGQAAAACBQAAABV1c2VyU2hhcmVUb2tlbnNBbW91bnQFAAAACXBtdEFtb3VudAQAAAARYXZhaWxhYmxlRnVuZHNOZXcJAABkAAAAAgkBAAAAEXVzZXJBdmFpbGFibGVTV09QAAAAAgUAAAAEcG9vbAgFAAAAAWkAAAAGY2FsbGVyBQAAAAtjbGFpbUFtb3VudAQAAAAQdG90YWxTaGFyZUFtb3VudAkBAAAAGGdldFRvdGFsU2hhcmVUb2tlbkxvY2tlZAAAAAEFAAAABHBvb2wEAAAAE3RvdGFsU2hhcmVBbW91bnROZXcJAABkAAAAAgUAAAAQdG90YWxTaGFyZUFtb3VudAUAAAAJcG10QW1vdW50BAAAABF1c2VyQ2xhaW1lZEFtb3VudAkBAAAAGGdldFVzZXJTV09QQ2xhaW1lZEFtb3VudAAAAAIFAAAABHBvb2wIBQAAAAFpAAAABmNhbGxlcgQAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAABkAAAAAgUAAAARdXNlckNsYWltZWRBbW91bnQFAAAAC2NsYWltQW1vdW50BAAAAAliYXNlRW50cnkJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABNrZXlVc2VyTGFzdEludGVyZXN0BQAAAA91c2VyTmV3SW50ZXJlc3QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABhrZXlVc2VyU2hhcmVUb2tlbnNMb2NrZWQFAAAAEnVzZXJTaGFyZUFtb3VudE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sBQAAABRrZXlTaGFyZVRva2Vuc0xvY2tlZAUAAAATdG90YWxTaGFyZUFtb3VudE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sBQAAAA9rZXlMYXN0SW50ZXJlc3QFAAAAD2N1cnJlbnRJbnRlcmVzdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sBQAAABVrZXlMYXN0SW50ZXJlc3RIZWlnaHQFAAAABmhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAA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XzEEAAAAD2N1cnJlbnRJbnRlcmVzdAgFAAAADSR0MDIyMzA5MjI0MDkAAAACXzIEAAAAC2NsYWltQW1vdW50CAUAAAANJHQwMjIzMDkyMjQwOQAAAAJfMwQAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CAUAAAANJHQwMjIzMDkyMjQwOQAAAAJfNAQAAAASdXNlclNoYXJlQW1vdW50TmV3CQAAZQAAAAIFAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAUAAAAZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAQAAAARYXZhaWxhYmxlRnVuZHNOZXcJAABkAAAAAgkBAAAAEXVzZXJBdmFpbGFibGVTV09QAAAAAgUAAAAEcG9vbAgFAAAAAWkAAAAGY2FsbGVyBQAAAAtjbGFpbUFtb3VudAQAAAAQdG90YWxTaGFyZUFtb3VudAkBAAAAGGdldFRvdGFsU2hhcmVUb2tlbkxvY2tlZAAAAAEFAAAABHBvb2wEAAAAE3RvdGFsU2hhcmVBbW91bnROZXcJAABlAAAAAgUAAAAQdG90YWxTaGFyZUFtb3VudAUAAAAZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAQAAAARdXNlckNsYWltZWRBbW91bnQJAQAAABhnZXRVc2VyU1dPUENsYWltZWRBbW91bnQAAAACBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIEAAAAFHVzZXJDbGFpbWVkQW1vdW50TmV3CQAAZAAAAAIFAAAAEXVzZXJDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAMJAABmAAAAAgUAAAAZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAUAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CQAAAgAAAAECAAAALFdpdGhkcmF3IGFtb3VudCBtb3JlIHRoZW4gdXNlciBsb2NrZWQgYW1vdW50CQAAAgAAAAEJAAGkAAAAAQkBAAAADmFjY291bnRCYWxhbmNlAAAAAQUAAAANc2hhcmVUb2tlbnNJZAAAAAFpAQAAAAVjbGFpbQAAAAEAAAAEcG9vbAQAAAANc2hhcmVUb2tlbnNJZAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACCQEAAAAFdmFsdWUAAAABCQAEJgAAAAEFAAAABHBvb2wCAAAADnNoYXJlX2Fzc2V0X2lkBAAAABBzaGFyZVRva2VuTG9ja2VkCQEAAAAYZ2V0VG90YWxTaGFyZVRva2VuTG9ja2VkAAAAAQUAAAAEcG9vbAQAAAANJHQwMjQyNDkyNDMxNAkBAAAAE2dldExhc3RJbnRlcmVzdEluZm8AAAABBQAAAARwb29sBAAAABJsYXN0SW50ZXJlc3RIZWlnaHQIBQAAAA0kdDAyNDI0OTI0MzE0AAAAAl8xBAAAAAxsYXN0SW50ZXJlc3QIBQAAAA0kdDAyNDI0OTI0MzE0AAAAAl8yBAAAAA0kdDAyNDMxOTI0NDMxCQEAAAAKcmV3YXJkSW5mbwAAAAEFAAAABHBvb2wEAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawgFAAAADSR0MDI0MzE5MjQ0MzEAAAACXzEEAAAAEnJld2FyZFVwZGF0ZUhlaWdodAgFAAAADSR0MDI0MzE5MjQ0MzEAAAACXzIEAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sIBQAAAA0kdDAyNDMxOTI0NDMxAAAAAl8zBAAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMjQzMTkyNDQzMQAAAAJfNAQAAAANJHQwMjQ0MzYyNDUzNgkBAAAACWNsYWltQ2FsYwAAAAMFAAAABHBvb2wIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQQAAAAPdXNlck5ld0ludGVyZXN0CAUAAAANJHQwMjQ0MzYyNDUzNgAAAAJfMQQAAAAPY3VycmVudEludGVyZXN0CAUAAAANJHQwMjQ0MzYyNDUzNgAAAAJfMgQAAAALY2xhaW1BbW91bnQIBQAAAA0kdDAyNDQzNjI0NTM2AAAAAl8zBAAAABV1c2VyU2hhcmVUb2tlbnNBbW91bnQIBQAAAA0kdDAyNDQzNjI0NTM2AAAAAl80BAAAAA1hdmFpbGFibGVGdW5kCQAAZAAAAAIJAQAAABF1c2VyQXZhaWxhYmxlU1dPUAAAAAIFAAAABHBvb2wIBQAAAAFpAAAABmNhbGxlcgUAAAALY2xhaW1BbW91bnQEAAAAEXVzZXJDbGFpbWVkQW1vdW50CQEAAAAYZ2V0VXNlclNXT1BDbGFpbWVkQW1vdW50AAAAAgUAAAAEcG9vbAgFAAAAAWkAAAAGY2FsbGVyBAAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkAAGQAAAACBQAAABF1c2VyQ2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQDCQAAAAAAAAIFAAAADWF2YWlsYWJsZUZ1bmQAAAAAAAAAAAAJAAACAAAAAQIAAAAZWW91IGhhdmUgMCBhdmFpbGFibGUgU1dPUAMJAABmAAAAAgUAAAAQc2hhcmVUb2tlbkxvY2tlZAkAAGsAAAADAAAAAAAAAABjCQEAAAAOYWNjb3VudEJhbGFuY2UAAAABBQAAAA1zaGFyZVRva2Vuc0lkAAAAAAAAAABkCQAAAgAAAAECAAAAMkJhbGFuY2Ugb2Ygc2hhcmUtdG9rZW4gaXMgZ3JlYXRlciB0aGFuIHRvdGFsQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAATa2V5VXNlckxhc3RJbnRlcmVzdAUAAAAPdXNlck5ld0ludGVyZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAD2tleUxhc3RJbnRlcmVzdAUAAAAPY3VycmVudEludGVyZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAFWtleUxhc3RJbnRlcmVzdEhlaWdodAUAAAAGaGVpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAQa2V5QXZhaWxhYmxlU1dPUAAAAAAAAAAAAAkABEwAAAACCQEAAAAHUmVpc3N1ZQAAAAMFAAAABFNXT1AFAAAADWF2YWlsYWJsZUZ1bmQGCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAYa2V5VXNlclNXT1BDbGFpbWVkQW1vdW50BQAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAHGtleVVzZXJTV09QTGFzdENsYWltZWRBbW91bnQFAAAAC2NsYWltQW1vdW50CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAANYXZhaWxhYmxlRnVuZAUAAAAEU1dPUAUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAAHJG1hdGNoMAUAAAACdHgJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5cRuE7A==", "height": 1568678, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9GMw1aaEoLC3iNYLcohg9bc3L3gCNmsWUi8PdnMqmXYU Next: 7GoKNY3fsnVVMaKMuy77PP1dPhFvCng7teiX286gYbnK Diff:
OldNewDifferences
1111
1212 let e = "share_limit_on_first_harvest"
1313
14-let f = "active"
14+let f = "_current_pool_fraction_reward"
1515
16-let g = "shutdown_cause"
16+let g = "_previous_pool_fraction_reward"
1717
18-let h = "_current_pool_fraction_reward"
18+let h = "_pool_reward_update_height"
1919
20-let i = "_previous_pool_fraction_reward"
20+let i = "total_reward_per_block_current"
2121
22-let j = "_pool_reward_update_height"
22+let j = "total_reward_per_block_previous"
2323
24-let k = "total_reward_per_block_current"
24+let k = "reward_update_height"
2525
26-let l = "total_reward_per_block_previous"
26+let l = "_last_interest"
2727
28-let m = "reward_update_height"
28+let m = "_last_interest_height"
2929
30-let n = "_last_interest"
30+let n = "_share_tokens_locked"
3131
32-let o = "_last_interest_height"
32+let o = "_last_interest"
3333
34-let p = "_share_tokens_locked"
34+let p = "SWOP_id"
3535
36-let q = "_last_interest"
36+let q = "_SWOP_claimed_amount"
3737
38-let r = "SWOP_id"
38+let r = "_SWOP_last_claimed_amount"
3939
40-let s = "_SWOP_claimed_amount"
40+let s = "_available_SWOP"
4141
42-let t = "_SWOP_last_claimed_amount"
42+let t = "farming_start_height"
4343
44-let u = "_available_SWOP"
44+let u = "apy"
4545
46-let v = "farming_start_height"
46+let v = "previous_total_vote_SWOP"
4747
48-let w = "apy"
48+let w = "swop_year_emission"
4949
50-let x = "previous_total_vote_SWOP"
50+let x = "A_asset_balance"
5151
52-let y = "swop_year_emission"
52+let y = "B_asset_balance"
5353
54-let z = "A_asset_balance"
54+let z = "_harvest_pool_activeVote_struc"
5555
56-let A = "B_asset_balance"
56+let A = "_harvest_user_pool_activeVote_struc"
5757
58-let B = "_harvest_pool_activeVote_struc"
58+let B = "share_limit_on_first_harvest"
5959
60-let C = "_harvest_user_pool_activeVote_struc"
60+let C = "A_asset_id"
6161
62-let D = "share_limit_on_first_harvest"
62+let D = "B_asset_id"
6363
64-let E = "A_asset_id"
64+let E = "first_harvest_height"
6565
66-let F = "B_asset_id"
66+let F = "first_harvest"
6767
68-let G = "first_harvest_height"
68+let G = "sum_reward_previous"
6969
70-let H = "first_harvest"
70+let H = "sum_reward_current"
7171
72-let I = "sum_reward_previous"
72+let I = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
7373
74-let J = "sum_reward_current"
74+let J = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
7575
76-let K = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
76+let K = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
7777
7878 let L = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
7979
80-let M = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
80+let M = 10106
8181
82-let N = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
82+let N = 10000000000
8383
84-let O = 10106
84+let O = 10
8585
86-let P = 10000000000
86+let P = 1000
8787
88-let Q = 10
88+let Q = 100000
8989
90-let R = 1000
90+let R = 1000000
9191
92-let S = 100000
92+let S = 100000000
9393
94-let T = 1000000
94+let T = 100000000000
9595
96-let U = 100000000
97-
98-let V = 100000000000
99-
100-func W (X) = getStringValue(X, E)
96+func U (V) = getStringValue(V, C)
10197
10298
103-func Y (X) = getStringValue(X, F)
99+func W (V) = getStringValue(V, D)
104100
105101
106-func Z (X) = if ((W(X) == "WAVES"))
102+func X (V) = if ((U(V) == "WAVES"))
107103 then unit
108- else fromBase58String(W(X))
104+ else fromBase58String(U(V))
109105
110106
111-func aa (X) = if ((Y(X) == "WAVES"))
107+func Y (V) = if ((W(V) == "WAVES"))
112108 then unit
113- else fromBase58String(Y(X))
109+ else fromBase58String(W(V))
114110
115111
116-let ab = "base_period"
112+let Z = "base_period"
117113
118-let ac = "period_length"
114+let aa = "period_length"
119115
120-let ad = "start_height"
116+let ab = "start_height"
121117
122-let ae = "first_harvest_height"
118+let ac = "first_harvest_height"
123119
124-let af = "duration_full_vote_power"
120+let ad = "duration_full_vote_power"
125121
126-let ag = "min_vote_power"
122+let ae = "min_vote_power"
127123
128-let ah = valueOrErrorMessage(getInteger(M, ab), "Empty kBasePeriod")
124+let af = valueOrErrorMessage(getInteger(K, Z), "Empty kBasePeriod")
129125
130-let ai = valueOrErrorMessage(getInteger(M, ad), "Empty kStartHeight")
126+let ag = valueOrErrorMessage(getInteger(K, ab), "Empty kStartHeight")
131127
132-let aj = valueOrErrorMessage(getInteger(M, ac), "Empty kPeriodLength")
128+let ah = valueOrErrorMessage(getInteger(K, aa), "Empty kPeriodLength")
133129
134-let ak = valueOrErrorMessage(getInteger(M, af), "Empty kDurationFullVotePower")
130+let ai = valueOrErrorMessage(getInteger(K, ad), "Empty kDurationFullVotePower")
135131
136-let al = valueOrErrorMessage(getInteger(M, ag), "Empty kMinVotePower")
132+let aj = valueOrErrorMessage(getInteger(K, ae), "Empty kMinVotePower")
137133
138-let am = getBooleanValue(this, f)
134+let ak = (af + ((height - ag) / ah))
139135
140-let an = (ah + ((height - ai) / aj))
141-
142-func ao (X) = valueOrElse(getIntegerValue(X, D), 0)
136+func al (V) = valueOrElse(getIntegerValue(V, B), 0)
143137
144138
145-let ap = getIntegerValue(this, w)
139+let am = getIntegerValue(this, u)
146140
147-let aq = getIntegerValue(this, y)
141+let an = getIntegerValue(this, w)
148142
149-func ar (X) = {
150- let as = Z(X)
151- if ($isInstanceOf(as, "ByteVector"))
143+func ao (V) = {
144+ let ap = X(V)
145+ if ($isInstanceOf(ap, "ByteVector"))
152146 then {
153- let at = as
154- value(assetInfo(at)).name
147+ let aq = ap
148+ value(assetInfo(aq)).name
155149 }
156- else if ($isInstanceOf(as, "Unit"))
150+ else if ($isInstanceOf(ap, "Unit"))
157151 then {
158- let au = as
152+ let ar = ap
159153 "WAVES"
160154 }
161155 else throw("Match error")
162156 }
163157
164158
165-func av (X) = {
166- let as = aa(X)
167- if ($isInstanceOf(as, "ByteVector"))
159+func as (V) = {
160+ let ap = Y(V)
161+ if ($isInstanceOf(ap, "ByteVector"))
168162 then {
169- let at = as
170- value(assetInfo(at)).name
163+ let aq = ap
164+ value(assetInfo(aq)).name
171165 }
172- else if ($isInstanceOf(as, "Unit"))
166+ else if ($isInstanceOf(ap, "Unit"))
173167 then {
174- let au = as
168+ let ar = ap
175169 "WAVES"
176170 }
177171 else throw("Match error")
178172 }
179173
180174
181-let aw = fromBase58String(getStringValue(this, r))
175+let at = fromBase58String(getStringValue(this, p))
182176
183-func ax (X) = valueOrElse(getBoolean(X, H), false)
177+func au (V) = valueOrElse(getBoolean(V, F), false)
184178
185179
186-func ay (X) = valueOrElse(getInteger(X, G), 0)
180+func av (V) = valueOrElse(getInteger(V, E), 0)
187181
188182
189-func az (X) = valueOrErrorMessage(getInteger(X, z), ("No data on the key: " + z))
183+func aw (V) = valueOrErrorMessage(getInteger(V, x), ("No data on the key: " + x))
190184
191185
192-func aA (X) = valueOrErrorMessage(getInteger(X, A), ("No data on the key: " + A))
186+func ax (V) = valueOrErrorMessage(getInteger(V, y), ("No data on the key: " + y))
193187
194188
195-func aB (X) = valueOrErrorMessage(getInteger(X, e), ("No data on the key: " + e))
189+func ay (V) = valueOrErrorMessage(getInteger(V, e), ("No data on the key: " + e))
196190
197191
198-func aC (X) = valueOrErrorMessage(getInteger(this, (X + d)), (("No data on the key: " + X) + d))
192+func az (V) = valueOrErrorMessage(getInteger(this, (V + d)), (("No data on the key: " + V) + d))
199193
200194
201-func aD (X) = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
195+func aA (V) = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
202196
203197
204-func aE (aF) = {
205- let as = aF
206- if ($isInstanceOf(as, "ByteVector"))
198+func aB (aC) = {
199+ let ap = aC
200+ if ($isInstanceOf(ap, "ByteVector"))
207201 then {
208- let at = as
209- assetBalance(this, at)
202+ let aq = ap
203+ assetBalance(this, aq)
210204 }
211- else if ($isInstanceOf(as, "Unit"))
205+ else if ($isInstanceOf(ap, "Unit"))
212206 then {
213- let au = as
207+ let ar = ap
214208 wavesBalance(this).available
215209 }
216210 else throw("Match error")
217211 }
218212
219213
220-func aG (aF) = {
221- let as = aF
222- if ($isInstanceOf(as, "ByteVector"))
214+func aD (aC) = {
215+ let ap = aC
216+ if ($isInstanceOf(ap, "ByteVector"))
223217 then {
224- let at = as
225- let aH = toBase58String(at)
226- let aI = valueOrErrorMessage(assetInfo(at), (("Asset " + aH) + " doesn't exist"))
227- $Tuple3(aH, aI.name, aI.decimals)
218+ let aq = ap
219+ let aE = toBase58String(aq)
220+ let aF = valueOrErrorMessage(assetInfo(aq), (("Asset " + aE) + " doesn't exist"))
221+ $Tuple3(aE, aF.name, aF.decimals)
228222 }
229- else if ($isInstanceOf(as, "Unit"))
223+ else if ($isInstanceOf(ap, "Unit"))
230224 then {
231- let au = as
225+ let ar = ap
232226 $Tuple3("WAVES", "WAVES", 8)
233227 }
234228 else throw("Match error")
235229 }
236230
237231
238-func aJ (aK,aL) = {
239- let aM = value(assetInfo(aK)).decimals
240- let aN = value(assetInfo(aL)).decimals
241- let aO = ((aN - aM) + 8)
242- pow(10, 0, aO, 0, 0, HALFDOWN)
232+func aG (aH,aI) = {
233+ let aJ = value(assetInfo(aH)).decimals
234+ let aK = value(assetInfo(aI)).decimals
235+ let aL = ((aK - aJ) + 8)
236+ pow(10, 0, aL, 0, 0, HALFDOWN)
243237 }
244238
245239
246-func aP (X,aQ) = valueOrElse(getInteger(this, (((X + "_") + toString(aQ)) + u)), 0)
240+func aM (V,aN) = valueOrElse(getInteger(this, (((V + "_") + toString(aN)) + s)), 0)
247241
248242
249-func aR (X) = {
250- let aS = valueOrErrorMessage(getInteger(K, k), ((("No data on the key: " + k) + " at address ") + toString(K)))
251- let aT = valueOrErrorMessage(getInteger(K, l), ((("No data on the key: " + l) + " at address ") + toString(K)))
252- let aU = valueOrErrorMessage(getInteger(K, (X + h)), (((("No data on the key: " + X) + h) + " at address ") + toString(K)))
253- let aV = valueOrErrorMessage(getInteger(K, m), ((("No data on the key: " + m) + " at address ") + toString(K)))
254- let aW = valueOrElse(getInteger(K, (X + j)), 0)
255- let aX = valueOrErrorMessage(getInteger(K, (X + i)), (((("No data on the key: " + X) + i) + " at address ") + toString(K)))
256- let aY = fraction(aS, aU, P)
257- let aZ = fraction(aT, aX, P)
258- if (if ((aY > aS))
243+func aO (V) = {
244+ let aP = valueOrErrorMessage(getInteger(I, i), ((("No data on the key: " + i) + " at address ") + toString(I)))
245+ let aQ = valueOrErrorMessage(getInteger(I, j), ((("No data on the key: " + j) + " at address ") + toString(I)))
246+ let aR = valueOrErrorMessage(getInteger(I, (V + f)), (((("No data on the key: " + V) + f) + " at address ") + toString(I)))
247+ let aS = valueOrErrorMessage(getInteger(I, k), ((("No data on the key: " + k) + " at address ") + toString(I)))
248+ let aT = valueOrElse(getInteger(I, (V + h)), 0)
249+ let aU = valueOrErrorMessage(getInteger(I, (V + g)), (((("No data on the key: " + V) + g) + " at address ") + toString(I)))
250+ let aV = fraction(aP, aR, N)
251+ let aW = fraction(aQ, aU, N)
252+ if (if ((aV > aP))
259253 then true
260- else (aZ > aT))
254+ else (aW > aQ))
261255 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
262- else $Tuple4(aY, aV, aZ, aW)
256+ else $Tuple4(aV, aS, aW, aT)
263257 }
264258
265259
266-func ba (X) = {
267- let bb = valueOrErrorMessage(getInteger(this, (X + n)), (("No data on the key: " + X) + n))
268- let bc = valueOrElse(getInteger(this, (X + o)), height)
269- $Tuple2(bc, bb)
260+func aX (V) = {
261+ let aY = valueOrErrorMessage(getInteger(this, (V + l)), (("No data on the key: " + V) + l))
262+ let aZ = valueOrElse(getInteger(this, (V + m)), height)
263+ $Tuple2(aZ, aY)
270264 }
271265
272266
273-func bd (X,be) = {
274- let bf = getInteger(this, (((X + "_") + toString(be)) + q))
275- let bg = getInteger(this, (((X + "_") + toString(be)) + p))
276- let bb = valueOrErrorMessage(getInteger(this, (X + n)), (("No data on the key: " + X) + n))
277- let bh = {
278- let as = bf
279- if ($isInstanceOf(as, "Int"))
267+func ba (V,bb) = {
268+ let bc = getInteger(this, (((V + "_") + toString(bb)) + o))
269+ let bd = getInteger(this, (((V + "_") + toString(bb)) + n))
270+ let aY = valueOrErrorMessage(getInteger(this, (V + l)), (("No data on the key: " + V) + l))
271+ let be = {
272+ let ap = bc
273+ if ($isInstanceOf(ap, "Int"))
280274 then {
281- let bf = as
282- bf
275+ let bc = ap
276+ bc
283277 }
284- else bb
278+ else aY
285279 }
286- let bi = {
287- let as = bg
288- if ($isInstanceOf(as, "Int"))
280+ let bf = {
281+ let ap = bd
282+ if ($isInstanceOf(ap, "Int"))
289283 then {
290- let bg = as
291- bg
284+ let bd = ap
285+ bd
292286 }
293287 else 0
294288 }
295- $Tuple2(bh, bi)
289+ $Tuple2(be, bf)
296290 }
297291
298292
299-func bj (bc,aV,aW,bb,bk,bl,bm,bn,bo,bp) = if ((bl == 0))
293+func bg (aZ,aS,aT,aY,bh,bi,bj,bk,bl,bm) = if ((bi == 0))
300294 then 0
301- else if ((aW != 0))
302- then if (if ((aV > height))
303- then (aV == aW)
295+ else if ((aT != 0))
296+ then if (if ((aS > height))
297+ then (aS == aT)
304298 else false)
305299 then {
306- let bq = (bm * (height - bc))
307- (bb + fraction(bq, bo, bl))
300+ let bn = (bj * (height - aZ))
301+ (aY + fraction(bn, bl, bi))
308302 }
309- else if (if ((height > aV))
310- then (aV != aW)
303+ else if (if ((height > aS))
304+ then (aS != aT)
311305 else false)
312306 then {
313- let bq = (bm * (height - bc))
314- (bb + fraction(bq, bo, bl))
307+ let bn = (bj * (height - aZ))
308+ (aY + fraction(bn, bl, bi))
315309 }
316- else if (if (if ((height > aV))
317- then (aV == aW)
310+ else if (if (if ((height > aS))
311+ then (aS == aT)
318312 else false)
319- then (bc > aV)
313+ then (aZ > aS)
320314 else false)
321315 then {
322- let bq = (bk * (height - bc))
323- (bb + fraction(bq, bo, bl))
316+ let bn = (bh * (height - aZ))
317+ (aY + fraction(bn, bl, bi))
324318 }
325319 else {
326- let br = (bm * (aV - bc))
327- let bs = (bb + fraction(br, bo, bl))
328- let bq = (bk * (height - aV))
329- (bs + fraction(bq, bo, bl))
320+ let bo = (bj * (aS - aZ))
321+ let bp = (aY + fraction(bo, bl, bi))
322+ let bn = (bh * (height - aS))
323+ (bp + fraction(bn, bl, bi))
330324 }
331- else if ((aV > height))
325+ else if ((aS > height))
332326 then {
333- let bq = (bm * (height - bc))
334- (bb + fraction(bq, bo, bl))
327+ let bn = (bj * (height - aZ))
328+ (aY + fraction(bn, bl, bi))
335329 }
336- else if ((bc > aV))
330+ else if ((aZ > aS))
337331 then {
338- let bq = (bk * (height - bc))
339- (bb + fraction(bq, bo, bl))
332+ let bn = (bh * (height - aZ))
333+ (aY + fraction(bn, bl, bi))
340334 }
341335 else {
342- let br = (bm * (aV - bc))
343- let bs = (bb + fraction(br, bo, bl))
344- let bq = (bk * (height - aV))
345- (bs + fraction(bq, bo, bl))
336+ let bo = (bj * (aS - aZ))
337+ let bp = (aY + fraction(bo, bl, bi))
338+ let bn = (bh * (height - aS))
339+ (bp + fraction(bn, bl, bi))
346340 }
347341
348342
349-func bt (X,bu,bp) = {
350- let bn = aD(X)
351- let bo = aJ(aw, bn)
352- let bl = aC(X)
353- let bv = ba(X)
354- let bc = bv._1
355- let bb = bv._2
356- let bw = aR(X)
357- let bk = bw._1
358- let aV = bw._2
359- let bm = bw._3
360- let aW = bw._4
361- let bx = bd(X, bu)
362- let bf = bx._1
363- let bi = bx._2
364- let by = bj(bc, aV, aW, bb, bk, bl, bm, bn, bo, bp)
365- let bz = fraction(bi, (by - bf), bo)
366- let bA = by
367- $Tuple4(bA, by, bz, bi)
343+func bq (V,br,bm) = {
344+ let bk = aA(V)
345+ let bl = aG(at, bk)
346+ let bi = az(V)
347+ let bs = aX(V)
348+ let aZ = bs._1
349+ let aY = bs._2
350+ let bt = aO(V)
351+ let bh = bt._1
352+ let aS = bt._2
353+ let bj = bt._3
354+ let aT = bt._4
355+ let bu = ba(V, br)
356+ let bc = bu._1
357+ let bf = bu._2
358+ let bv = bg(aZ, aS, aT, aY, bh, bi, bj, bk, bl, bm)
359+ let bw = fraction(bf, (bv - bc), bl)
360+ let bx = bv
361+ $Tuple4(bx, bv, bw, bf)
368362 }
369363
370364
371-func bB (X) = {
372- let bC = ba(X)
373- let bc = bC._1
374- let bb = bC._2
375- let bD = aR(X)
376- let bk = bD._1
377- let aV = bD._2
378- let bm = bD._3
379- let aW = bD._4
380- let bl = aC(X)
381- if (if ((bl == 0))
382- then (aW == 0)
365+func by (V) = {
366+ let bz = aX(V)
367+ let aZ = bz._1
368+ let aY = bz._2
369+ let bA = aO(V)
370+ let bh = bA._1
371+ let aS = bA._2
372+ let bj = bA._3
373+ let aT = bA._4
374+ let bi = az(V)
375+ if (if ((bi == 0))
376+ then (aT == 0)
383377 else false)
384- then if ((aV > height))
378+ then if ((aS > height))
385379 then {
386- let bq = (bm * (height - bc))
387- bq
380+ let bn = (bj * (height - aZ))
381+ bn
388382 }
389- else if ((bc > aV))
383+ else if ((aZ > aS))
390384 then {
391- let bq = (bk * (height - bc))
392- bq
385+ let bn = (bh * (height - aZ))
386+ bn
393387 }
394388 else {
395- let br = (bm * (aV - bc))
396- let bq = (bk * (height - aV))
397- (bq + br)
389+ let bo = (bj * (aS - aZ))
390+ let bn = (bh * (height - aS))
391+ (bn + bo)
398392 }
399- else if (if ((bl == 0))
400- then (aW != 0)
393+ else if (if ((bi == 0))
394+ then (aT != 0)
401395 else false)
402- then if (if ((aV > height))
403- then (aV == aW)
396+ then if (if ((aS > height))
397+ then (aS == aT)
404398 else false)
405399 then {
406- let bq = (bm * (height - bc))
407- bq
400+ let bn = (bj * (height - aZ))
401+ bn
408402 }
409- else if (if ((height > aV))
410- then (aV != aW)
403+ else if (if ((height > aS))
404+ then (aS != aT)
411405 else false)
412406 then {
413- let bq = (bm * (height - bc))
414- bq
407+ let bn = (bj * (height - aZ))
408+ bn
415409 }
416- else if (if (if ((height > aV))
417- then (aV == aW)
410+ else if (if (if ((height > aS))
411+ then (aS == aT)
418412 else false)
419- then (bc > aV)
413+ then (aZ > aS)
420414 else false)
421415 then {
422- let bq = (bk * (height - bc))
423- bq
416+ let bn = (bh * (height - aZ))
417+ bn
424418 }
425419 else {
426- let br = (bm * (aV - bc))
427- let bq = (bk * (height - aV))
428- (bq + br)
420+ let bo = (bj * (aS - aZ))
421+ let bn = (bh * (height - aS))
422+ (bn + bo)
429423 }
430424 else 0
431425 }
432426
433427
434-func bE (X,bF) = {
435- let bG = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
436- if ((bF == bG))
428+func bB (V,bC) = {
429+ let bD = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
430+ if ((bC == bD))
437431 then true
438432 else false
439433 }
440434
441435
442-func bH (X,aQ) = valueOrElse(getInteger(this, (((X + "_") + toString(aQ)) + s)), 0)
436+func bE (V,aN) = valueOrElse(getInteger(this, (((V + "_") + toString(aN)) + q)), 0)
443437
444438
445-func bI (bJ) = [BooleanEntry(f, false), StringEntry(g, bJ)]
446-
447-
448-@Callable(bK)
449-func init (bL) = if (isDefined(getString(this, r)))
439+@Callable(bF)
440+func init (bG) = if (isDefined(getString(this, p)))
450441 then throw("SWOP already initialized")
451442 else {
452- let bM = 100000000000000
453- let bN = Issue("SWOP", "SWOP protocol token", bM, 8, true)
454- let bO = calculateAssetId(bN)
455-[BooleanEntry(f, true), Issue("SWOP", "SWOP protocol token", bM, 8, true), StringEntry(r, toBase58String(bO))]
443+ let bH = 100000000000000
444+ let bI = Issue("SWOP", "SWOP protocol token", bH, 8, true)
445+ let bJ = calculateAssetId(bI)
446+[Issue("SWOP", "SWOP protocol token", bH, 8, true), StringEntry(p, toBase58String(bJ))]
456447 }
457448
458449
459450
460-@Callable(bK)
461-func initPoolShareFarming (X) = if ((bK.caller != this))
451+@Callable(bF)
452+func initPoolShareFarming (V) = if ((bF.caller != this))
462453 then throw("Only the DApp itself can call this function")
463454 else {
464- let bP = aR(X)
465- let bQ = bP._1
466- let aV = bP._2
467- let bm = bP._3
468- let aW = bP._4
469-[IntegerEntry((X + d), 0), IntegerEntry((X + n), 0), IntegerEntry((X + o), height)]
455+ let bK = aO(V)
456+ let bL = bK._1
457+ let aS = bK._2
458+ let bj = bK._3
459+ let aT = bK._4
460+[IntegerEntry((V + d), 0), IntegerEntry((V + l), 0), IntegerEntry((V + m), height)]
470461 }
471462
472463
473464
474-@Callable(bK)
475-func updatePoolInterest (X) = if ((bK.caller != L))
465+@Callable(bF)
466+func updatePoolInterest (V) = if ((bF.caller != J))
476467 then throw("Only the Admin itself can call this function")
477- else if (!(am))
478- then throw("DApp is inactive at this moment")
479- else {
480- let bR = bt(X, N, 0)
481- let bA = bR._1
482- let by = bR._2
483- let bz = bR._3
484- let bi = bR._4
485- let bS = aR(X)
486- let bQ = bS._1
487- let aV = bS._2
488- let bm = bS._3
489- let aW = bS._4
490-[IntegerEntry((X + n), bA), IntegerEntry((X + o), height)]
491- }
468+ else {
469+ let bM = bq(V, L, 0)
470+ let bx = bM._1
471+ let bv = bM._2
472+ let bw = bM._3
473+ let bf = bM._4
474+ let bN = aO(V)
475+ let bL = bN._1
476+ let aS = bN._2
477+ let bj = bN._3
478+ let aT = bN._4
479+[IntegerEntry((V + l), bx), IntegerEntry((V + m), height)]
480+ }
492481
493482
494483
495-@Callable(bK)
496-func lockShareTokens (X) = {
497- let bT = $Tuple2(bK.payments[0].amount, bK.payments[0].assetId)
498- let bp = bT._1
499- let bF = bT._2
500- let bU = aG(bF)
501- let bV = bU._1
502- let bW = bU._2
503- let bX = bU._3
504- let bY = bt(X, bK.caller, bp)
505- let bA = bY._1
506- let by = bY._2
507- let bz = bY._3
508- let bi = bY._4
509- let bZ = (bi + bp)
510- let ca = (aP(X, bK.caller) + bz)
511- let cb = aC(X)
512- let cc = (cb + bp)
513- let cd = bH(X, bK.caller)
514- let ce = (cd + bz)
515- let cf = [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((((X + "_") + toString(bK.caller)) + p), bZ), IntegerEntry((X + d), cc), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), IntegerEntry((((X + "_") + toString(bK.caller)) + u), ca)]
516- if ((0 >= bp))
484+@Callable(bF)
485+func lockShareTokens (V) = {
486+ let bO = $Tuple2(bF.payments[0].amount, bF.payments[0].assetId)
487+ let bm = bO._1
488+ let bC = bO._2
489+ let bP = aD(bC)
490+ let bQ = bP._1
491+ let bR = bP._2
492+ let bS = bP._3
493+ let bT = bq(V, bF.caller, bm)
494+ let bx = bT._1
495+ let bv = bT._2
496+ let bw = bT._3
497+ let bf = bT._4
498+ let bU = (bf + bm)
499+ let bV = (aM(V, bF.caller) + bw)
500+ let bW = az(V)
501+ let bX = (bW + bm)
502+ let bY = bE(V, bF.caller)
503+ let bZ = (bY + bw)
504+ let ca = [IntegerEntry((((V + "_") + toString(bF.caller)) + o), bx), IntegerEntry((((V + "_") + toString(bF.caller)) + n), bU), IntegerEntry((V + d), bX), IntegerEntry((V + l), bv), IntegerEntry((V + m), height), IntegerEntry((((V + "_") + toString(bF.caller)) + q), bZ), IntegerEntry((((V + "_") + toString(bF.caller)) + r), bw), IntegerEntry((((V + "_") + toString(bF.caller)) + s), bV)]
505+ if ((0 >= bm))
517506 then throw("You can't lock token")
518- else if (!(am))
519- then throw("DApp is inactive at this moment")
520- else if (!(bE(X, bF)))
521- then throw("Incorrect pmtAssetId")
522- else if (if (ax(Address(fromBase58String(X))))
523- then (ay(Address(fromBase58String(X))) > height)
524- else false)
525- then {
526- let cg = ((((ay(Address(fromBase58String(X))) - ai) + 1) / aj) - 1)
527- let ch = split(getStringValue(M, (((toString(bK.caller) + "_") + X) + "_user_pool_struc")), "_")
528- let ci = split(getStringValue(M, (X + "_pool_struc")), "_")
529- let cj = split(valueOrElse(getString(M, (((toString(bK.caller) + "_") + X) + C)), ""), "_")
530- let ck = split(valueOrElse(getString(M, (X + B)), ""), "_")
531- let cl = bi
532- let cm = if ((toString(an) == ch[2]))
533- then valueOrElse(parseInt(cj[0]), 0)
534- else valueOrElse(parseInt(ch[1]), 0)
535- let cn = if ((toString(an) == ci[2]))
536- then valueOrElse(parseInt(ck[0]), 0)
537- else valueOrElse(parseInt(ci[1]), 0)
538- let co = bB(X)
539- if ((cm != 0))
540- then {
541- let cp = aB(addressFromStringValue(X))
542- let cq = (fraction(cp, cm, cn) - cl)
543- if (if ((size(cj) > 1))
544- then (valueOrElse(parseInt(cj[1]), 0) >= cg)
545- else false)
546- then throw("You can't share token")
547- else if ((bp > cp))
548- then throw(("You can't share token more than " + toString(cp)))
549- else if ((cq > 0))
550- then if ((cc > fraction(99, aE(bF), 100)))
551- then throw("Balance of share-token is greater than totalAmount")
552- else if ((cb == 0))
553- then (cf ++ [ScriptTransfer(L, co, aw)])
554- else if ((cq >= bp))
555- then cf
556- else throw(("Your maximum share token is " + toString(cq)))
557- else throw("You can't share token")
558- }
559- else throw("Your amount of token less than 0")
560- }
561- else cf
507+ else if (!(bB(V, bC)))
508+ then throw("Incorrect pmtAssetId")
509+ else if (if (au(Address(fromBase58String(V))))
510+ then (av(Address(fromBase58String(V))) > height)
511+ else false)
512+ then {
513+ let cb = ((((av(Address(fromBase58String(V))) - ag) + 1) / ah) - 1)
514+ let cc = split(getStringValue(K, (((toString(bF.caller) + "_") + V) + "_user_pool_struc")), "_")
515+ let cd = split(getStringValue(K, (V + "_pool_struc")), "_")
516+ let ce = split(valueOrElse(getString(K, (((toString(bF.caller) + "_") + V) + A)), ""), "_")
517+ let cf = split(valueOrElse(getString(K, (V + z)), ""), "_")
518+ let cg = bf
519+ let ch = if ((toString(ak) == cc[2]))
520+ then valueOrElse(parseInt(ce[0]), 0)
521+ else valueOrElse(parseInt(cc[1]), 0)
522+ let ci = if ((toString(ak) == cd[2]))
523+ then valueOrElse(parseInt(cf[0]), 0)
524+ else valueOrElse(parseInt(cd[1]), 0)
525+ let cj = by(V)
526+ if ((ch != 0))
527+ then {
528+ let ck = ay(addressFromStringValue(V))
529+ let cl = (fraction(ck, ch, ci) - cg)
530+ if (if ((size(ce) > 1))
531+ then (valueOrElse(parseInt(ce[1]), 0) >= cb)
532+ else false)
533+ then throw("You can't share token")
534+ else if ((bm > ck))
535+ then throw(("You can't share token more than " + toString(ck)))
536+ else if ((cl > 0))
537+ then if ((bX > fraction(99, aB(bC), 100)))
538+ then throw("Balance of share-token is greater than totalAmount")
539+ else if ((bW == 0))
540+ then (ca ++ [Reissue(at, cj, true), ScriptTransfer(J, cj, at)])
541+ else if ((cl >= bm))
542+ then ca
543+ else throw(("Your maximum share token is " + toString(cl)))
544+ else throw("You can't share token")
545+ }
546+ else throw("Your amount of token less than 0")
547+ }
548+ else ca
562549 }
563550
564551
565552
566-@Callable(bK)
567-func withdrawShareTokens (X,cr) = {
568- let cs = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
569- let ct = bt(X, bK.caller, 1)
570- let bA = ct._1
571- let by = ct._2
572- let bz = ct._3
573- let bi = ct._4
574- let bZ = (bi - cr)
575- let ca = (aP(X, bK.caller) + bz)
576- let cb = aC(X)
577- let cc = (cb - cr)
578- let cd = bH(X, bK.caller)
579- let ce = (cd + bz)
580- if ((cr > bi))
553+@Callable(bF)
554+func withdrawShareTokens (V,cm) = {
555+ let cn = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
556+ let co = bq(V, bF.caller, 1)
557+ let bx = co._1
558+ let bv = co._2
559+ let bw = co._3
560+ let bf = co._4
561+ let bU = (bf - cm)
562+ let bV = (aM(V, bF.caller) + bw)
563+ let bW = az(V)
564+ let bX = (bW - cm)
565+ let bY = bE(V, bF.caller)
566+ let bZ = (bY + bw)
567+ if ((cm > bf))
581568 then throw("Withdraw amount more then user locked amount")
582- else if (!(am))
583- then throw("DApp is inactive at this moment")
584- else if ((cr > bi))
585- then throw("Withdraw amount more then user locked amount")
586- else if ((cc > fraction(99, aE(cs), 100)))
587- then throw("Balance of share-token is greater than totalAmount")
588- else [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((((X + "_") + toString(bK.caller)) + p), bZ), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((X + d), cc), IntegerEntry((((X + "_") + toString(bK.caller)) + u), ca), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), ScriptTransfer(bK.caller, cr, cs)]
569+ else throw(toString(aB(cn)))
589570 }
590571
591572
592573
593-@Callable(bK)
594-func claim (X) = {
595- let cs = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
596- let bl = aC(X)
597- let cu = ba(X)
598- let bc = cu._1
599- let bb = cu._2
600- let cv = aR(X)
601- let bk = cv._1
602- let aV = cv._2
603- let bm = cv._3
604- let aW = cv._4
605- let cw = bt(X, bK.caller, 1)
606- let bA = cw._1
607- let by = cw._2
608- let bz = cw._3
609- let bi = cw._4
610- let cx = (aP(X, bK.caller) + bz)
611- let cd = bH(X, bK.caller)
612- let ce = (cd + bz)
613- if ((cx == 0))
574+@Callable(bF)
575+func claim (V) = {
576+ let cn = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
577+ let bi = az(V)
578+ let cp = aX(V)
579+ let aZ = cp._1
580+ let aY = cp._2
581+ let cq = aO(V)
582+ let bh = cq._1
583+ let aS = cq._2
584+ let bj = cq._3
585+ let aT = cq._4
586+ let cr = bq(V, bF.caller, 1)
587+ let bx = cr._1
588+ let bv = cr._2
589+ let bw = cr._3
590+ let bf = cr._4
591+ let cs = (aM(V, bF.caller) + bw)
592+ let bY = bE(V, bF.caller)
593+ let bZ = (bY + bw)
594+ if ((cs == 0))
614595 then throw("You have 0 available SWOP")
615- else if (!(am))
616- then throw("DApp is inactive at this moment")
617- else if ((cx == 0))
618- then throw("You have 0 available SWOP")
619- else if ((bl > fraction(99, aE(cs), 100)))
620- then throw("Balance of share-token is greater than totalAmount")
621- else [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((((X + "_") + toString(bK.caller)) + u), 0), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), ScriptTransfer(bK.caller, cx, aw)]
596+ else if ((bi > fraction(99, aB(cn), 100)))
597+ then throw("Balance of share-token is greater than totalAmount")
598+ else [IntegerEntry((((V + "_") + toString(bF.caller)) + o), bx), IntegerEntry((V + l), bv), IntegerEntry((V + m), height), IntegerEntry((((V + "_") + toString(bF.caller)) + s), 0), Reissue(at, cs, true), IntegerEntry((((V + "_") + toString(bF.caller)) + q), bZ), IntegerEntry((((V + "_") + toString(bF.caller)) + r), bw), ScriptTransfer(bF.caller, cs, at)]
622599 }
623600
624601
625-
626-@Callable(bK)
627-func shutdown () = if (!(am))
628- then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, g), "the cause wasn't specified")))
629- else if (!(containsElement([a, b, c], bK.callerPublicKey)))
630- then throw("Only admin can call this function")
631- else bI("Paused by admin")
632-
633-
634-
635-@Callable(bK)
636-func activate () = if (am)
637- then throw("DApp is already active")
638- else if (!(containsElement([a, b, c], bK.callerPublicKey)))
639- then throw("Only admin can call this function")
640- else [BooleanEntry(f, true), DeleteEntry(g)]
641-
642-
643-@Verifier(cy)
644-func cz () = {
645- let as = cy
646- sigVerify(cy.bodyBytes, cy.proofs[0], cy.senderPublicKey)
602+@Verifier(ct)
603+func cu () = {
604+ let ap = ct
605+ sigVerify(ct.bodyBytes, ct.proofs[0], ct.senderPublicKey)
647606 }
648607
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
55
66 let b = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
77
88 let c = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
99
1010 let d = "_total_share_tokens_locked"
1111
1212 let e = "share_limit_on_first_harvest"
1313
14-let f = "active"
14+let f = "_current_pool_fraction_reward"
1515
16-let g = "shutdown_cause"
16+let g = "_previous_pool_fraction_reward"
1717
18-let h = "_current_pool_fraction_reward"
18+let h = "_pool_reward_update_height"
1919
20-let i = "_previous_pool_fraction_reward"
20+let i = "total_reward_per_block_current"
2121
22-let j = "_pool_reward_update_height"
22+let j = "total_reward_per_block_previous"
2323
24-let k = "total_reward_per_block_current"
24+let k = "reward_update_height"
2525
26-let l = "total_reward_per_block_previous"
26+let l = "_last_interest"
2727
28-let m = "reward_update_height"
28+let m = "_last_interest_height"
2929
30-let n = "_last_interest"
30+let n = "_share_tokens_locked"
3131
32-let o = "_last_interest_height"
32+let o = "_last_interest"
3333
34-let p = "_share_tokens_locked"
34+let p = "SWOP_id"
3535
36-let q = "_last_interest"
36+let q = "_SWOP_claimed_amount"
3737
38-let r = "SWOP_id"
38+let r = "_SWOP_last_claimed_amount"
3939
40-let s = "_SWOP_claimed_amount"
40+let s = "_available_SWOP"
4141
42-let t = "_SWOP_last_claimed_amount"
42+let t = "farming_start_height"
4343
44-let u = "_available_SWOP"
44+let u = "apy"
4545
46-let v = "farming_start_height"
46+let v = "previous_total_vote_SWOP"
4747
48-let w = "apy"
48+let w = "swop_year_emission"
4949
50-let x = "previous_total_vote_SWOP"
50+let x = "A_asset_balance"
5151
52-let y = "swop_year_emission"
52+let y = "B_asset_balance"
5353
54-let z = "A_asset_balance"
54+let z = "_harvest_pool_activeVote_struc"
5555
56-let A = "B_asset_balance"
56+let A = "_harvest_user_pool_activeVote_struc"
5757
58-let B = "_harvest_pool_activeVote_struc"
58+let B = "share_limit_on_first_harvest"
5959
60-let C = "_harvest_user_pool_activeVote_struc"
60+let C = "A_asset_id"
6161
62-let D = "share_limit_on_first_harvest"
62+let D = "B_asset_id"
6363
64-let E = "A_asset_id"
64+let E = "first_harvest_height"
6565
66-let F = "B_asset_id"
66+let F = "first_harvest"
6767
68-let G = "first_harvest_height"
68+let G = "sum_reward_previous"
6969
70-let H = "first_harvest"
70+let H = "sum_reward_current"
7171
72-let I = "sum_reward_previous"
72+let I = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
7373
74-let J = "sum_reward_current"
74+let J = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
7575
76-let K = Address(base58'3N5W8da2iiijVieA6qLGo7KzCJj8B19smWU')
76+let K = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
7777
7878 let L = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
7979
80-let M = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
80+let M = 10106
8181
82-let N = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
82+let N = 10000000000
8383
84-let O = 10106
84+let O = 10
8585
86-let P = 10000000000
86+let P = 1000
8787
88-let Q = 10
88+let Q = 100000
8989
90-let R = 1000
90+let R = 1000000
9191
92-let S = 100000
92+let S = 100000000
9393
94-let T = 1000000
94+let T = 100000000000
9595
96-let U = 100000000
97-
98-let V = 100000000000
99-
100-func W (X) = getStringValue(X, E)
96+func U (V) = getStringValue(V, C)
10197
10298
103-func Y (X) = getStringValue(X, F)
99+func W (V) = getStringValue(V, D)
104100
105101
106-func Z (X) = if ((W(X) == "WAVES"))
102+func X (V) = if ((U(V) == "WAVES"))
107103 then unit
108- else fromBase58String(W(X))
104+ else fromBase58String(U(V))
109105
110106
111-func aa (X) = if ((Y(X) == "WAVES"))
107+func Y (V) = if ((W(V) == "WAVES"))
112108 then unit
113- else fromBase58String(Y(X))
109+ else fromBase58String(W(V))
114110
115111
116-let ab = "base_period"
112+let Z = "base_period"
117113
118-let ac = "period_length"
114+let aa = "period_length"
119115
120-let ad = "start_height"
116+let ab = "start_height"
121117
122-let ae = "first_harvest_height"
118+let ac = "first_harvest_height"
123119
124-let af = "duration_full_vote_power"
120+let ad = "duration_full_vote_power"
125121
126-let ag = "min_vote_power"
122+let ae = "min_vote_power"
127123
128-let ah = valueOrErrorMessage(getInteger(M, ab), "Empty kBasePeriod")
124+let af = valueOrErrorMessage(getInteger(K, Z), "Empty kBasePeriod")
129125
130-let ai = valueOrErrorMessage(getInteger(M, ad), "Empty kStartHeight")
126+let ag = valueOrErrorMessage(getInteger(K, ab), "Empty kStartHeight")
131127
132-let aj = valueOrErrorMessage(getInteger(M, ac), "Empty kPeriodLength")
128+let ah = valueOrErrorMessage(getInteger(K, aa), "Empty kPeriodLength")
133129
134-let ak = valueOrErrorMessage(getInteger(M, af), "Empty kDurationFullVotePower")
130+let ai = valueOrErrorMessage(getInteger(K, ad), "Empty kDurationFullVotePower")
135131
136-let al = valueOrErrorMessage(getInteger(M, ag), "Empty kMinVotePower")
132+let aj = valueOrErrorMessage(getInteger(K, ae), "Empty kMinVotePower")
137133
138-let am = getBooleanValue(this, f)
134+let ak = (af + ((height - ag) / ah))
139135
140-let an = (ah + ((height - ai) / aj))
141-
142-func ao (X) = valueOrElse(getIntegerValue(X, D), 0)
136+func al (V) = valueOrElse(getIntegerValue(V, B), 0)
143137
144138
145-let ap = getIntegerValue(this, w)
139+let am = getIntegerValue(this, u)
146140
147-let aq = getIntegerValue(this, y)
141+let an = getIntegerValue(this, w)
148142
149-func ar (X) = {
150- let as = Z(X)
151- if ($isInstanceOf(as, "ByteVector"))
143+func ao (V) = {
144+ let ap = X(V)
145+ if ($isInstanceOf(ap, "ByteVector"))
152146 then {
153- let at = as
154- value(assetInfo(at)).name
147+ let aq = ap
148+ value(assetInfo(aq)).name
155149 }
156- else if ($isInstanceOf(as, "Unit"))
150+ else if ($isInstanceOf(ap, "Unit"))
157151 then {
158- let au = as
152+ let ar = ap
159153 "WAVES"
160154 }
161155 else throw("Match error")
162156 }
163157
164158
165-func av (X) = {
166- let as = aa(X)
167- if ($isInstanceOf(as, "ByteVector"))
159+func as (V) = {
160+ let ap = Y(V)
161+ if ($isInstanceOf(ap, "ByteVector"))
168162 then {
169- let at = as
170- value(assetInfo(at)).name
163+ let aq = ap
164+ value(assetInfo(aq)).name
171165 }
172- else if ($isInstanceOf(as, "Unit"))
166+ else if ($isInstanceOf(ap, "Unit"))
173167 then {
174- let au = as
168+ let ar = ap
175169 "WAVES"
176170 }
177171 else throw("Match error")
178172 }
179173
180174
181-let aw = fromBase58String(getStringValue(this, r))
175+let at = fromBase58String(getStringValue(this, p))
182176
183-func ax (X) = valueOrElse(getBoolean(X, H), false)
177+func au (V) = valueOrElse(getBoolean(V, F), false)
184178
185179
186-func ay (X) = valueOrElse(getInteger(X, G), 0)
180+func av (V) = valueOrElse(getInteger(V, E), 0)
187181
188182
189-func az (X) = valueOrErrorMessage(getInteger(X, z), ("No data on the key: " + z))
183+func aw (V) = valueOrErrorMessage(getInteger(V, x), ("No data on the key: " + x))
190184
191185
192-func aA (X) = valueOrErrorMessage(getInteger(X, A), ("No data on the key: " + A))
186+func ax (V) = valueOrErrorMessage(getInteger(V, y), ("No data on the key: " + y))
193187
194188
195-func aB (X) = valueOrErrorMessage(getInteger(X, e), ("No data on the key: " + e))
189+func ay (V) = valueOrErrorMessage(getInteger(V, e), ("No data on the key: " + e))
196190
197191
198-func aC (X) = valueOrErrorMessage(getInteger(this, (X + d)), (("No data on the key: " + X) + d))
192+func az (V) = valueOrErrorMessage(getInteger(this, (V + d)), (("No data on the key: " + V) + d))
199193
200194
201-func aD (X) = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
195+func aA (V) = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
202196
203197
204-func aE (aF) = {
205- let as = aF
206- if ($isInstanceOf(as, "ByteVector"))
198+func aB (aC) = {
199+ let ap = aC
200+ if ($isInstanceOf(ap, "ByteVector"))
207201 then {
208- let at = as
209- assetBalance(this, at)
202+ let aq = ap
203+ assetBalance(this, aq)
210204 }
211- else if ($isInstanceOf(as, "Unit"))
205+ else if ($isInstanceOf(ap, "Unit"))
212206 then {
213- let au = as
207+ let ar = ap
214208 wavesBalance(this).available
215209 }
216210 else throw("Match error")
217211 }
218212
219213
220-func aG (aF) = {
221- let as = aF
222- if ($isInstanceOf(as, "ByteVector"))
214+func aD (aC) = {
215+ let ap = aC
216+ if ($isInstanceOf(ap, "ByteVector"))
223217 then {
224- let at = as
225- let aH = toBase58String(at)
226- let aI = valueOrErrorMessage(assetInfo(at), (("Asset " + aH) + " doesn't exist"))
227- $Tuple3(aH, aI.name, aI.decimals)
218+ let aq = ap
219+ let aE = toBase58String(aq)
220+ let aF = valueOrErrorMessage(assetInfo(aq), (("Asset " + aE) + " doesn't exist"))
221+ $Tuple3(aE, aF.name, aF.decimals)
228222 }
229- else if ($isInstanceOf(as, "Unit"))
223+ else if ($isInstanceOf(ap, "Unit"))
230224 then {
231- let au = as
225+ let ar = ap
232226 $Tuple3("WAVES", "WAVES", 8)
233227 }
234228 else throw("Match error")
235229 }
236230
237231
238-func aJ (aK,aL) = {
239- let aM = value(assetInfo(aK)).decimals
240- let aN = value(assetInfo(aL)).decimals
241- let aO = ((aN - aM) + 8)
242- pow(10, 0, aO, 0, 0, HALFDOWN)
232+func aG (aH,aI) = {
233+ let aJ = value(assetInfo(aH)).decimals
234+ let aK = value(assetInfo(aI)).decimals
235+ let aL = ((aK - aJ) + 8)
236+ pow(10, 0, aL, 0, 0, HALFDOWN)
243237 }
244238
245239
246-func aP (X,aQ) = valueOrElse(getInteger(this, (((X + "_") + toString(aQ)) + u)), 0)
240+func aM (V,aN) = valueOrElse(getInteger(this, (((V + "_") + toString(aN)) + s)), 0)
247241
248242
249-func aR (X) = {
250- let aS = valueOrErrorMessage(getInteger(K, k), ((("No data on the key: " + k) + " at address ") + toString(K)))
251- let aT = valueOrErrorMessage(getInteger(K, l), ((("No data on the key: " + l) + " at address ") + toString(K)))
252- let aU = valueOrErrorMessage(getInteger(K, (X + h)), (((("No data on the key: " + X) + h) + " at address ") + toString(K)))
253- let aV = valueOrErrorMessage(getInteger(K, m), ((("No data on the key: " + m) + " at address ") + toString(K)))
254- let aW = valueOrElse(getInteger(K, (X + j)), 0)
255- let aX = valueOrErrorMessage(getInteger(K, (X + i)), (((("No data on the key: " + X) + i) + " at address ") + toString(K)))
256- let aY = fraction(aS, aU, P)
257- let aZ = fraction(aT, aX, P)
258- if (if ((aY > aS))
243+func aO (V) = {
244+ let aP = valueOrErrorMessage(getInteger(I, i), ((("No data on the key: " + i) + " at address ") + toString(I)))
245+ let aQ = valueOrErrorMessage(getInteger(I, j), ((("No data on the key: " + j) + " at address ") + toString(I)))
246+ let aR = valueOrErrorMessage(getInteger(I, (V + f)), (((("No data on the key: " + V) + f) + " at address ") + toString(I)))
247+ let aS = valueOrErrorMessage(getInteger(I, k), ((("No data on the key: " + k) + " at address ") + toString(I)))
248+ let aT = valueOrElse(getInteger(I, (V + h)), 0)
249+ let aU = valueOrErrorMessage(getInteger(I, (V + g)), (((("No data on the key: " + V) + g) + " at address ") + toString(I)))
250+ let aV = fraction(aP, aR, N)
251+ let aW = fraction(aQ, aU, N)
252+ if (if ((aV > aP))
259253 then true
260- else (aZ > aT))
254+ else (aW > aQ))
261255 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
262- else $Tuple4(aY, aV, aZ, aW)
256+ else $Tuple4(aV, aS, aW, aT)
263257 }
264258
265259
266-func ba (X) = {
267- let bb = valueOrErrorMessage(getInteger(this, (X + n)), (("No data on the key: " + X) + n))
268- let bc = valueOrElse(getInteger(this, (X + o)), height)
269- $Tuple2(bc, bb)
260+func aX (V) = {
261+ let aY = valueOrErrorMessage(getInteger(this, (V + l)), (("No data on the key: " + V) + l))
262+ let aZ = valueOrElse(getInteger(this, (V + m)), height)
263+ $Tuple2(aZ, aY)
270264 }
271265
272266
273-func bd (X,be) = {
274- let bf = getInteger(this, (((X + "_") + toString(be)) + q))
275- let bg = getInteger(this, (((X + "_") + toString(be)) + p))
276- let bb = valueOrErrorMessage(getInteger(this, (X + n)), (("No data on the key: " + X) + n))
277- let bh = {
278- let as = bf
279- if ($isInstanceOf(as, "Int"))
267+func ba (V,bb) = {
268+ let bc = getInteger(this, (((V + "_") + toString(bb)) + o))
269+ let bd = getInteger(this, (((V + "_") + toString(bb)) + n))
270+ let aY = valueOrErrorMessage(getInteger(this, (V + l)), (("No data on the key: " + V) + l))
271+ let be = {
272+ let ap = bc
273+ if ($isInstanceOf(ap, "Int"))
280274 then {
281- let bf = as
282- bf
275+ let bc = ap
276+ bc
283277 }
284- else bb
278+ else aY
285279 }
286- let bi = {
287- let as = bg
288- if ($isInstanceOf(as, "Int"))
280+ let bf = {
281+ let ap = bd
282+ if ($isInstanceOf(ap, "Int"))
289283 then {
290- let bg = as
291- bg
284+ let bd = ap
285+ bd
292286 }
293287 else 0
294288 }
295- $Tuple2(bh, bi)
289+ $Tuple2(be, bf)
296290 }
297291
298292
299-func bj (bc,aV,aW,bb,bk,bl,bm,bn,bo,bp) = if ((bl == 0))
293+func bg (aZ,aS,aT,aY,bh,bi,bj,bk,bl,bm) = if ((bi == 0))
300294 then 0
301- else if ((aW != 0))
302- then if (if ((aV > height))
303- then (aV == aW)
295+ else if ((aT != 0))
296+ then if (if ((aS > height))
297+ then (aS == aT)
304298 else false)
305299 then {
306- let bq = (bm * (height - bc))
307- (bb + fraction(bq, bo, bl))
300+ let bn = (bj * (height - aZ))
301+ (aY + fraction(bn, bl, bi))
308302 }
309- else if (if ((height > aV))
310- then (aV != aW)
303+ else if (if ((height > aS))
304+ then (aS != aT)
311305 else false)
312306 then {
313- let bq = (bm * (height - bc))
314- (bb + fraction(bq, bo, bl))
307+ let bn = (bj * (height - aZ))
308+ (aY + fraction(bn, bl, bi))
315309 }
316- else if (if (if ((height > aV))
317- then (aV == aW)
310+ else if (if (if ((height > aS))
311+ then (aS == aT)
318312 else false)
319- then (bc > aV)
313+ then (aZ > aS)
320314 else false)
321315 then {
322- let bq = (bk * (height - bc))
323- (bb + fraction(bq, bo, bl))
316+ let bn = (bh * (height - aZ))
317+ (aY + fraction(bn, bl, bi))
324318 }
325319 else {
326- let br = (bm * (aV - bc))
327- let bs = (bb + fraction(br, bo, bl))
328- let bq = (bk * (height - aV))
329- (bs + fraction(bq, bo, bl))
320+ let bo = (bj * (aS - aZ))
321+ let bp = (aY + fraction(bo, bl, bi))
322+ let bn = (bh * (height - aS))
323+ (bp + fraction(bn, bl, bi))
330324 }
331- else if ((aV > height))
325+ else if ((aS > height))
332326 then {
333- let bq = (bm * (height - bc))
334- (bb + fraction(bq, bo, bl))
327+ let bn = (bj * (height - aZ))
328+ (aY + fraction(bn, bl, bi))
335329 }
336- else if ((bc > aV))
330+ else if ((aZ > aS))
337331 then {
338- let bq = (bk * (height - bc))
339- (bb + fraction(bq, bo, bl))
332+ let bn = (bh * (height - aZ))
333+ (aY + fraction(bn, bl, bi))
340334 }
341335 else {
342- let br = (bm * (aV - bc))
343- let bs = (bb + fraction(br, bo, bl))
344- let bq = (bk * (height - aV))
345- (bs + fraction(bq, bo, bl))
336+ let bo = (bj * (aS - aZ))
337+ let bp = (aY + fraction(bo, bl, bi))
338+ let bn = (bh * (height - aS))
339+ (bp + fraction(bn, bl, bi))
346340 }
347341
348342
349-func bt (X,bu,bp) = {
350- let bn = aD(X)
351- let bo = aJ(aw, bn)
352- let bl = aC(X)
353- let bv = ba(X)
354- let bc = bv._1
355- let bb = bv._2
356- let bw = aR(X)
357- let bk = bw._1
358- let aV = bw._2
359- let bm = bw._3
360- let aW = bw._4
361- let bx = bd(X, bu)
362- let bf = bx._1
363- let bi = bx._2
364- let by = bj(bc, aV, aW, bb, bk, bl, bm, bn, bo, bp)
365- let bz = fraction(bi, (by - bf), bo)
366- let bA = by
367- $Tuple4(bA, by, bz, bi)
343+func bq (V,br,bm) = {
344+ let bk = aA(V)
345+ let bl = aG(at, bk)
346+ let bi = az(V)
347+ let bs = aX(V)
348+ let aZ = bs._1
349+ let aY = bs._2
350+ let bt = aO(V)
351+ let bh = bt._1
352+ let aS = bt._2
353+ let bj = bt._3
354+ let aT = bt._4
355+ let bu = ba(V, br)
356+ let bc = bu._1
357+ let bf = bu._2
358+ let bv = bg(aZ, aS, aT, aY, bh, bi, bj, bk, bl, bm)
359+ let bw = fraction(bf, (bv - bc), bl)
360+ let bx = bv
361+ $Tuple4(bx, bv, bw, bf)
368362 }
369363
370364
371-func bB (X) = {
372- let bC = ba(X)
373- let bc = bC._1
374- let bb = bC._2
375- let bD = aR(X)
376- let bk = bD._1
377- let aV = bD._2
378- let bm = bD._3
379- let aW = bD._4
380- let bl = aC(X)
381- if (if ((bl == 0))
382- then (aW == 0)
365+func by (V) = {
366+ let bz = aX(V)
367+ let aZ = bz._1
368+ let aY = bz._2
369+ let bA = aO(V)
370+ let bh = bA._1
371+ let aS = bA._2
372+ let bj = bA._3
373+ let aT = bA._4
374+ let bi = az(V)
375+ if (if ((bi == 0))
376+ then (aT == 0)
383377 else false)
384- then if ((aV > height))
378+ then if ((aS > height))
385379 then {
386- let bq = (bm * (height - bc))
387- bq
380+ let bn = (bj * (height - aZ))
381+ bn
388382 }
389- else if ((bc > aV))
383+ else if ((aZ > aS))
390384 then {
391- let bq = (bk * (height - bc))
392- bq
385+ let bn = (bh * (height - aZ))
386+ bn
393387 }
394388 else {
395- let br = (bm * (aV - bc))
396- let bq = (bk * (height - aV))
397- (bq + br)
389+ let bo = (bj * (aS - aZ))
390+ let bn = (bh * (height - aS))
391+ (bn + bo)
398392 }
399- else if (if ((bl == 0))
400- then (aW != 0)
393+ else if (if ((bi == 0))
394+ then (aT != 0)
401395 else false)
402- then if (if ((aV > height))
403- then (aV == aW)
396+ then if (if ((aS > height))
397+ then (aS == aT)
404398 else false)
405399 then {
406- let bq = (bm * (height - bc))
407- bq
400+ let bn = (bj * (height - aZ))
401+ bn
408402 }
409- else if (if ((height > aV))
410- then (aV != aW)
403+ else if (if ((height > aS))
404+ then (aS != aT)
411405 else false)
412406 then {
413- let bq = (bm * (height - bc))
414- bq
407+ let bn = (bj * (height - aZ))
408+ bn
415409 }
416- else if (if (if ((height > aV))
417- then (aV == aW)
410+ else if (if (if ((height > aS))
411+ then (aS == aT)
418412 else false)
419- then (bc > aV)
413+ then (aZ > aS)
420414 else false)
421415 then {
422- let bq = (bk * (height - bc))
423- bq
416+ let bn = (bh * (height - aZ))
417+ bn
424418 }
425419 else {
426- let br = (bm * (aV - bc))
427- let bq = (bk * (height - aV))
428- (bq + br)
420+ let bo = (bj * (aS - aZ))
421+ let bn = (bh * (height - aS))
422+ (bn + bo)
429423 }
430424 else 0
431425 }
432426
433427
434-func bE (X,bF) = {
435- let bG = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
436- if ((bF == bG))
428+func bB (V,bC) = {
429+ let bD = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
430+ if ((bC == bD))
437431 then true
438432 else false
439433 }
440434
441435
442-func bH (X,aQ) = valueOrElse(getInteger(this, (((X + "_") + toString(aQ)) + s)), 0)
436+func bE (V,aN) = valueOrElse(getInteger(this, (((V + "_") + toString(aN)) + q)), 0)
443437
444438
445-func bI (bJ) = [BooleanEntry(f, false), StringEntry(g, bJ)]
446-
447-
448-@Callable(bK)
449-func init (bL) = if (isDefined(getString(this, r)))
439+@Callable(bF)
440+func init (bG) = if (isDefined(getString(this, p)))
450441 then throw("SWOP already initialized")
451442 else {
452- let bM = 100000000000000
453- let bN = Issue("SWOP", "SWOP protocol token", bM, 8, true)
454- let bO = calculateAssetId(bN)
455-[BooleanEntry(f, true), Issue("SWOP", "SWOP protocol token", bM, 8, true), StringEntry(r, toBase58String(bO))]
443+ let bH = 100000000000000
444+ let bI = Issue("SWOP", "SWOP protocol token", bH, 8, true)
445+ let bJ = calculateAssetId(bI)
446+[Issue("SWOP", "SWOP protocol token", bH, 8, true), StringEntry(p, toBase58String(bJ))]
456447 }
457448
458449
459450
460-@Callable(bK)
461-func initPoolShareFarming (X) = if ((bK.caller != this))
451+@Callable(bF)
452+func initPoolShareFarming (V) = if ((bF.caller != this))
462453 then throw("Only the DApp itself can call this function")
463454 else {
464- let bP = aR(X)
465- let bQ = bP._1
466- let aV = bP._2
467- let bm = bP._3
468- let aW = bP._4
469-[IntegerEntry((X + d), 0), IntegerEntry((X + n), 0), IntegerEntry((X + o), height)]
455+ let bK = aO(V)
456+ let bL = bK._1
457+ let aS = bK._2
458+ let bj = bK._3
459+ let aT = bK._4
460+[IntegerEntry((V + d), 0), IntegerEntry((V + l), 0), IntegerEntry((V + m), height)]
470461 }
471462
472463
473464
474-@Callable(bK)
475-func updatePoolInterest (X) = if ((bK.caller != L))
465+@Callable(bF)
466+func updatePoolInterest (V) = if ((bF.caller != J))
476467 then throw("Only the Admin itself can call this function")
477- else if (!(am))
478- then throw("DApp is inactive at this moment")
479- else {
480- let bR = bt(X, N, 0)
481- let bA = bR._1
482- let by = bR._2
483- let bz = bR._3
484- let bi = bR._4
485- let bS = aR(X)
486- let bQ = bS._1
487- let aV = bS._2
488- let bm = bS._3
489- let aW = bS._4
490-[IntegerEntry((X + n), bA), IntegerEntry((X + o), height)]
491- }
468+ else {
469+ let bM = bq(V, L, 0)
470+ let bx = bM._1
471+ let bv = bM._2
472+ let bw = bM._3
473+ let bf = bM._4
474+ let bN = aO(V)
475+ let bL = bN._1
476+ let aS = bN._2
477+ let bj = bN._3
478+ let aT = bN._4
479+[IntegerEntry((V + l), bx), IntegerEntry((V + m), height)]
480+ }
492481
493482
494483
495-@Callable(bK)
496-func lockShareTokens (X) = {
497- let bT = $Tuple2(bK.payments[0].amount, bK.payments[0].assetId)
498- let bp = bT._1
499- let bF = bT._2
500- let bU = aG(bF)
501- let bV = bU._1
502- let bW = bU._2
503- let bX = bU._3
504- let bY = bt(X, bK.caller, bp)
505- let bA = bY._1
506- let by = bY._2
507- let bz = bY._3
508- let bi = bY._4
509- let bZ = (bi + bp)
510- let ca = (aP(X, bK.caller) + bz)
511- let cb = aC(X)
512- let cc = (cb + bp)
513- let cd = bH(X, bK.caller)
514- let ce = (cd + bz)
515- let cf = [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((((X + "_") + toString(bK.caller)) + p), bZ), IntegerEntry((X + d), cc), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), IntegerEntry((((X + "_") + toString(bK.caller)) + u), ca)]
516- if ((0 >= bp))
484+@Callable(bF)
485+func lockShareTokens (V) = {
486+ let bO = $Tuple2(bF.payments[0].amount, bF.payments[0].assetId)
487+ let bm = bO._1
488+ let bC = bO._2
489+ let bP = aD(bC)
490+ let bQ = bP._1
491+ let bR = bP._2
492+ let bS = bP._3
493+ let bT = bq(V, bF.caller, bm)
494+ let bx = bT._1
495+ let bv = bT._2
496+ let bw = bT._3
497+ let bf = bT._4
498+ let bU = (bf + bm)
499+ let bV = (aM(V, bF.caller) + bw)
500+ let bW = az(V)
501+ let bX = (bW + bm)
502+ let bY = bE(V, bF.caller)
503+ let bZ = (bY + bw)
504+ let ca = [IntegerEntry((((V + "_") + toString(bF.caller)) + o), bx), IntegerEntry((((V + "_") + toString(bF.caller)) + n), bU), IntegerEntry((V + d), bX), IntegerEntry((V + l), bv), IntegerEntry((V + m), height), IntegerEntry((((V + "_") + toString(bF.caller)) + q), bZ), IntegerEntry((((V + "_") + toString(bF.caller)) + r), bw), IntegerEntry((((V + "_") + toString(bF.caller)) + s), bV)]
505+ if ((0 >= bm))
517506 then throw("You can't lock token")
518- else if (!(am))
519- then throw("DApp is inactive at this moment")
520- else if (!(bE(X, bF)))
521- then throw("Incorrect pmtAssetId")
522- else if (if (ax(Address(fromBase58String(X))))
523- then (ay(Address(fromBase58String(X))) > height)
524- else false)
525- then {
526- let cg = ((((ay(Address(fromBase58String(X))) - ai) + 1) / aj) - 1)
527- let ch = split(getStringValue(M, (((toString(bK.caller) + "_") + X) + "_user_pool_struc")), "_")
528- let ci = split(getStringValue(M, (X + "_pool_struc")), "_")
529- let cj = split(valueOrElse(getString(M, (((toString(bK.caller) + "_") + X) + C)), ""), "_")
530- let ck = split(valueOrElse(getString(M, (X + B)), ""), "_")
531- let cl = bi
532- let cm = if ((toString(an) == ch[2]))
533- then valueOrElse(parseInt(cj[0]), 0)
534- else valueOrElse(parseInt(ch[1]), 0)
535- let cn = if ((toString(an) == ci[2]))
536- then valueOrElse(parseInt(ck[0]), 0)
537- else valueOrElse(parseInt(ci[1]), 0)
538- let co = bB(X)
539- if ((cm != 0))
540- then {
541- let cp = aB(addressFromStringValue(X))
542- let cq = (fraction(cp, cm, cn) - cl)
543- if (if ((size(cj) > 1))
544- then (valueOrElse(parseInt(cj[1]), 0) >= cg)
545- else false)
546- then throw("You can't share token")
547- else if ((bp > cp))
548- then throw(("You can't share token more than " + toString(cp)))
549- else if ((cq > 0))
550- then if ((cc > fraction(99, aE(bF), 100)))
551- then throw("Balance of share-token is greater than totalAmount")
552- else if ((cb == 0))
553- then (cf ++ [ScriptTransfer(L, co, aw)])
554- else if ((cq >= bp))
555- then cf
556- else throw(("Your maximum share token is " + toString(cq)))
557- else throw("You can't share token")
558- }
559- else throw("Your amount of token less than 0")
560- }
561- else cf
507+ else if (!(bB(V, bC)))
508+ then throw("Incorrect pmtAssetId")
509+ else if (if (au(Address(fromBase58String(V))))
510+ then (av(Address(fromBase58String(V))) > height)
511+ else false)
512+ then {
513+ let cb = ((((av(Address(fromBase58String(V))) - ag) + 1) / ah) - 1)
514+ let cc = split(getStringValue(K, (((toString(bF.caller) + "_") + V) + "_user_pool_struc")), "_")
515+ let cd = split(getStringValue(K, (V + "_pool_struc")), "_")
516+ let ce = split(valueOrElse(getString(K, (((toString(bF.caller) + "_") + V) + A)), ""), "_")
517+ let cf = split(valueOrElse(getString(K, (V + z)), ""), "_")
518+ let cg = bf
519+ let ch = if ((toString(ak) == cc[2]))
520+ then valueOrElse(parseInt(ce[0]), 0)
521+ else valueOrElse(parseInt(cc[1]), 0)
522+ let ci = if ((toString(ak) == cd[2]))
523+ then valueOrElse(parseInt(cf[0]), 0)
524+ else valueOrElse(parseInt(cd[1]), 0)
525+ let cj = by(V)
526+ if ((ch != 0))
527+ then {
528+ let ck = ay(addressFromStringValue(V))
529+ let cl = (fraction(ck, ch, ci) - cg)
530+ if (if ((size(ce) > 1))
531+ then (valueOrElse(parseInt(ce[1]), 0) >= cb)
532+ else false)
533+ then throw("You can't share token")
534+ else if ((bm > ck))
535+ then throw(("You can't share token more than " + toString(ck)))
536+ else if ((cl > 0))
537+ then if ((bX > fraction(99, aB(bC), 100)))
538+ then throw("Balance of share-token is greater than totalAmount")
539+ else if ((bW == 0))
540+ then (ca ++ [Reissue(at, cj, true), ScriptTransfer(J, cj, at)])
541+ else if ((cl >= bm))
542+ then ca
543+ else throw(("Your maximum share token is " + toString(cl)))
544+ else throw("You can't share token")
545+ }
546+ else throw("Your amount of token less than 0")
547+ }
548+ else ca
562549 }
563550
564551
565552
566-@Callable(bK)
567-func withdrawShareTokens (X,cr) = {
568- let cs = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
569- let ct = bt(X, bK.caller, 1)
570- let bA = ct._1
571- let by = ct._2
572- let bz = ct._3
573- let bi = ct._4
574- let bZ = (bi - cr)
575- let ca = (aP(X, bK.caller) + bz)
576- let cb = aC(X)
577- let cc = (cb - cr)
578- let cd = bH(X, bK.caller)
579- let ce = (cd + bz)
580- if ((cr > bi))
553+@Callable(bF)
554+func withdrawShareTokens (V,cm) = {
555+ let cn = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
556+ let co = bq(V, bF.caller, 1)
557+ let bx = co._1
558+ let bv = co._2
559+ let bw = co._3
560+ let bf = co._4
561+ let bU = (bf - cm)
562+ let bV = (aM(V, bF.caller) + bw)
563+ let bW = az(V)
564+ let bX = (bW - cm)
565+ let bY = bE(V, bF.caller)
566+ let bZ = (bY + bw)
567+ if ((cm > bf))
581568 then throw("Withdraw amount more then user locked amount")
582- else if (!(am))
583- then throw("DApp is inactive at this moment")
584- else if ((cr > bi))
585- then throw("Withdraw amount more then user locked amount")
586- else if ((cc > fraction(99, aE(cs), 100)))
587- then throw("Balance of share-token is greater than totalAmount")
588- else [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((((X + "_") + toString(bK.caller)) + p), bZ), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((X + d), cc), IntegerEntry((((X + "_") + toString(bK.caller)) + u), ca), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), ScriptTransfer(bK.caller, cr, cs)]
569+ else throw(toString(aB(cn)))
589570 }
590571
591572
592573
593-@Callable(bK)
594-func claim (X) = {
595- let cs = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
596- let bl = aC(X)
597- let cu = ba(X)
598- let bc = cu._1
599- let bb = cu._2
600- let cv = aR(X)
601- let bk = cv._1
602- let aV = cv._2
603- let bm = cv._3
604- let aW = cv._4
605- let cw = bt(X, bK.caller, 1)
606- let bA = cw._1
607- let by = cw._2
608- let bz = cw._3
609- let bi = cw._4
610- let cx = (aP(X, bK.caller) + bz)
611- let cd = bH(X, bK.caller)
612- let ce = (cd + bz)
613- if ((cx == 0))
574+@Callable(bF)
575+func claim (V) = {
576+ let cn = fromBase58String(getStringValue(value(addressFromString(V)), "share_asset_id"))
577+ let bi = az(V)
578+ let cp = aX(V)
579+ let aZ = cp._1
580+ let aY = cp._2
581+ let cq = aO(V)
582+ let bh = cq._1
583+ let aS = cq._2
584+ let bj = cq._3
585+ let aT = cq._4
586+ let cr = bq(V, bF.caller, 1)
587+ let bx = cr._1
588+ let bv = cr._2
589+ let bw = cr._3
590+ let bf = cr._4
591+ let cs = (aM(V, bF.caller) + bw)
592+ let bY = bE(V, bF.caller)
593+ let bZ = (bY + bw)
594+ if ((cs == 0))
614595 then throw("You have 0 available SWOP")
615- else if (!(am))
616- then throw("DApp is inactive at this moment")
617- else if ((cx == 0))
618- then throw("You have 0 available SWOP")
619- else if ((bl > fraction(99, aE(cs), 100)))
620- then throw("Balance of share-token is greater than totalAmount")
621- else [IntegerEntry((((X + "_") + toString(bK.caller)) + q), bA), IntegerEntry((X + n), by), IntegerEntry((X + o), height), IntegerEntry((((X + "_") + toString(bK.caller)) + u), 0), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), ScriptTransfer(bK.caller, cx, aw)]
596+ else if ((bi > fraction(99, aB(cn), 100)))
597+ then throw("Balance of share-token is greater than totalAmount")
598+ else [IntegerEntry((((V + "_") + toString(bF.caller)) + o), bx), IntegerEntry((V + l), bv), IntegerEntry((V + m), height), IntegerEntry((((V + "_") + toString(bF.caller)) + s), 0), Reissue(at, cs, true), IntegerEntry((((V + "_") + toString(bF.caller)) + q), bZ), IntegerEntry((((V + "_") + toString(bF.caller)) + r), bw), ScriptTransfer(bF.caller, cs, at)]
622599 }
623600
624601
625-
626-@Callable(bK)
627-func shutdown () = if (!(am))
628- then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, g), "the cause wasn't specified")))
629- else if (!(containsElement([a, b, c], bK.callerPublicKey)))
630- then throw("Only admin can call this function")
631- else bI("Paused by admin")
632-
633-
634-
635-@Callable(bK)
636-func activate () = if (am)
637- then throw("DApp is already active")
638- else if (!(containsElement([a, b, c], bK.callerPublicKey)))
639- then throw("Only admin can call this function")
640- else [BooleanEntry(f, true), DeleteEntry(g)]
641-
642-
643-@Verifier(cy)
644-func cz () = {
645- let as = cy
646- sigVerify(cy.bodyBytes, cy.proofs[0], cy.senderPublicKey)
602+@Verifier(ct)
603+func cu () = {
604+ let ap = ct
605+ sigVerify(ct.bodyBytes, ct.proofs[0], ct.senderPublicKey)
647606 }
648607

github/deemru/w8io/169f3d6 
194.28 ms