tx · Dmo8mJrHppFBn2XYhgjUf9Ja1tKmzj1B3XckFdUy93Pj

3P73HDkPqG15nLXevjCbmXtazHYTZbpPoPw:  -0.01400000 Waves

2021.06.14 14:08 [2634674] smart account 3P73HDkPqG15nLXevjCbmXtazHYTZbpPoPw > SELF 0.00000000 Waves

{ "type": 13, "id": "Dmo8mJrHppFBn2XYhgjUf9Ja1tKmzj1B3XckFdUy93Pj", "fee": 1400000, "feeAssetId": null, "timestamp": 1623668918022, "version": 2, "chainId": 87, "sender": "3P73HDkPqG15nLXevjCbmXtazHYTZbpPoPw", "senderPublicKey": "B3jG1KiAb24bgwe28D9JKKkg9mtpiGTeEAYmQPrtHwQQ", "proofs": [ "", "nN1jfEQcGRfv4hw6TyV5sX2PZ4YiD9uGaxa4XXR1YceSUtvgTY8vP8ezUCeksaeNyxTFmPPgJjZnti7h256ARfR", "jMmESrxPb2DvWqVnE2p867HwQKSk3yCDNAwFujHAMRRims1dUjrW8x6HcPTKgCpmgASBHYs8mjTstNqanqjqfu2" ], "script": "base64:AAIEAAAAAAAAACUIAhIDCgEIEgMKAQgSAwoBCBIDCgEIEgQKAggBEgMKAQgSABIAAAAAWwAAAAAMYWRtaW5QdWJLZXkxAQAAACC6Cdc7iVmk0V2g//G7M9Cq4TlpD8vivZHWO+5PXqjgEwAAAAAMYWRtaW5QdWJLZXkyAQAAACDCkUSZs9KwtA0ipZFYvYi8oTe7CMv/3YzmlO9bFg5+QAAAAAAMYWRtaW5QdWJLZXkzAQAAACCOHhcueLEHO/RITnozKGB2KHf8meWSMKMgws+oq+kOVQAAAAAUa2V5U2hhcmVUb2tlbnNMb2NrZWQCAAAAGl90b3RhbF9zaGFyZV90b2tlbnNfbG9ja2VkAAAAAAtrU2hhcmVMaW1pdAIAAAAcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAAAAAAJa2V5QWN0aXZlAgAAAAZhY3RpdmUAAAAACGtleUNhdXNlAgAAAA5zaHV0ZG93bl9jYXVzZQAAAAAca2V5UmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAIAAAAdX2N1cnJlbnRfcG9vbF9mcmFjdGlvbl9yZXdhcmQAAAAAHWtleVJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzAgAAAB5fcHJldmlvdXNfcG9vbF9mcmFjdGlvbl9yZXdhcmQAAAAAFWtleUhlaWdodFBvb2xGcmFjdGlvbgIAAAAaX3Bvb2xfcmV3YXJkX3VwZGF0ZV9oZWlnaHQAAAAAHWtleVRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50AgAAAB50b3RhbF9yZXdhcmRfcGVyX2Jsb2NrX2N1cnJlbnQAAAAAHmtleVRvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwIAAAAfdG90YWxfcmV3YXJkX3Blcl9ibG9ja19wcmV2aW91cwAAAAAVa2V5UmV3YXJkVXBkYXRlSGVpZ2h0AgAAABRyZXdhcmRfdXBkYXRlX2hlaWdodAAAAAAPa2V5TGFzdEludGVyZXN0AgAAAA5fbGFzdF9pbnRlcmVzdAAAAAAVa2V5TGFzdEludGVyZXN0SGVpZ2h0AgAAABVfbGFzdF9pbnRlcmVzdF9oZWlnaHQAAAAAGGtleVVzZXJTaGFyZVRva2Vuc0xvY2tlZAIAAAAUX3NoYXJlX3Rva2Vuc19sb2NrZWQAAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QCAAAADl9sYXN0X2ludGVyZXN0AAAAAAlrZXlTV09QaWQCAAAAB1NXT1BfaWQAAAAAGGtleVVzZXJTV09QQ2xhaW1lZEFtb3VudAIAAAAUX1NXT1BfY2xhaW1lZF9hbW91bnQAAAAAHGtleVVzZXJTV09QTGFzdENsYWltZWRBbW91bnQCAAAAGV9TV09QX2xhc3RfY2xhaW1lZF9hbW91bnQAAAAAEGtleUF2YWlsYWJsZVNXT1ACAAAAD19hdmFpbGFibGVfU1dPUAAAAAAVa2V5RmFybWluZ1N0YXJ0SGVpZ2h0AgAAABRmYXJtaW5nX3N0YXJ0X2hlaWdodAAAAAAGa2V5QVBZAgAAAANhcHkAAAAAFmtQcmV2aW91c1RvdGFsVm90ZVNXT1ACAAAAGHByZXZpb3VzX3RvdGFsX3ZvdGVfU1dPUAAAAAATa2V5U3dvcFllYXJFbWlzc2lvbgIAAAASc3dvcF95ZWFyX2VtaXNzaW9uAAAAAA9rZXlCYWxhbmNlY3BtbUECAAAAD0FfYXNzZXRfYmFsYW5jZQAAAAAPa2V5QmFsYW5jZWNwbW1CAgAAAA9CX2Fzc2V0X2JhbGFuY2UAAAAAIWtIYXJ2ZXN0UG9vbEFjdGl2ZVZvdGVTdHJ1Y1ZvdGluZwIAAAAeX2hhcnZlc3RfcG9vbF9hY3RpdmVWb3RlX3N0cnVjAAAAACVrSGFydmVzdFVzZXJQb29sQWN0aXZlVm90ZVN0cnVjVm90aW5nAgAAACNfaGFydmVzdF91c2VyX3Bvb2xfYWN0aXZlVm90ZV9zdHJ1YwAAAAAZa2V5TGltaXRTaGFyZUZpcnN0SGFydmVzdAIAAAAcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAAAAAALa2V5QXNzZXRJZEECAAAACkFfYXNzZXRfaWQAAAAAC2tleUFzc2V0SWRCAgAAAApCX2Fzc2V0X2lkAAAAABVrZXlGaXJzdEhhcnZlc3RIZWlnaHQCAAAAFGZpcnN0X2hhcnZlc3RfaGVpZ2h0AAAAABNrZXlmaXJzdEhhcnZlc3RDcG1tAgAAAA1maXJzdF9oYXJ2ZXN0AAAAAA5rZXlUZW1wUHJldlN1bQIAAAATc3VtX3Jld2FyZF9wcmV2aW91cwAAAAANa2V5VGVtcEN1clN1bQIAAAASc3VtX3Jld2FyZF9jdXJyZW50AAAAABFnb3Zlcm5hbmNlQWRkcmVzcwkBAAAAB0FkZHJlc3MAAAABAQAAABoBV8lXnLdvepYMywgiOQ98homAomzcs7cW7QAAAAAGd2FsbGV0CQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFXL+RfIKEOTQrQNLGvHqzZMvvNxH1THwzxAAAAAA12b3RpbmdBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFX+D/7rE/JYs2NlJlbruypSwjc8IykrCK7AAAAABxhZG1pbkluY3JlYXNlSW50ZXJlc3RBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFX8R8gX4ovL4Wk09HO2ZaK4i7k29zAaUV3AAAAAA5vbmVXZWVrSW5CbG9jawAAAAAAAAAnegAAAAAOdG90YWxWb3RlU2hhcmUAAAAAAlQL5AAAAAAAC3NjYWxlVmFsdWUxAAAAAAAAAAAKAAAAAAtzY2FsZVZhbHVlMwAAAAAAAAAD6AAAAAALc2NhbGVWYWx1ZTUAAAAAAAABhqAAAAAAC3NjYWxlVmFsdWU2AAAAAAAAD0JAAAAAAAtzY2FsZVZhbHVlOAAAAAAABfXhAAAAAAAMc2NhbGVWYWx1ZTExAAAAABdIdugAAQAAAAtzdHJBc3NldElkQQAAAAEAAAAEcG9vbAkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEcG9vbAUAAAALa2V5QXNzZXRJZEEBAAAAC3N0ckFzc2V0SWRCAAAAAQAAAARwb29sCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAARwb29sBQAAAAtrZXlBc3NldElkQgEAAAAIYXNzZXRJZEEAAAABAAAABHBvb2wDCQAAAAAAAAIJAQAAAAtzdHJBc3NldElkQQAAAAEFAAAABHBvb2wCAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEJAQAAAAtzdHJBc3NldElkQQAAAAEFAAAABHBvb2wBAAAACGFzc2V0SWRCAAAAAQAAAARwb29sAwkAAAAAAAACCQEAAAALc3RyQXNzZXRJZEIAAAABBQAAAARwb29sAgAAAAVXQVZFUwUAAAAEdW5pdAkAAlkAAAABCQEAAAALc3RyQXNzZXRJZEIAAAABBQAAAARwb29sAAAAAAtrQmFzZVBlcmlvZAIAAAALYmFzZV9wZXJpb2QAAAAADWtQZXJpb2RMZW5ndGgCAAAADXBlcmlvZF9sZW5ndGgAAAAADGtTdGFydEhlaWdodAIAAAAMc3RhcnRfaGVpZ2h0AAAAABNrRmlyc3RIYXJ2ZXN0SGVpZ2h0AgAAABRmaXJzdF9oYXJ2ZXN0X2hlaWdodAAAAAAWa0R1cmF0aW9uRnVsbFZvdGVQb3dlcgIAAAAYZHVyYXRpb25fZnVsbF92b3RlX3Bvd2VyAAAAAA1rTWluVm90ZVBvd2VyAgAAAA5taW5fdm90ZV9wb3dlcgAAAAAKYmFzZVBlcmlvZAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAADXZvdGluZ0FkZHJlc3MFAAAAC2tCYXNlUGVyaW9kAgAAABFFbXB0eSBrQmFzZVBlcmlvZAAAAAALc3RhcnRIZWlnaHQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA12b3RpbmdBZGRyZXNzBQAAAAxrU3RhcnRIZWlnaHQCAAAAEkVtcHR5IGtTdGFydEhlaWdodAAAAAAMcGVyaW9kTGVuZ3RoCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANdm90aW5nQWRkcmVzcwUAAAANa1BlcmlvZExlbmd0aAIAAAATRW1wdHkga1BlcmlvZExlbmd0aAAAAAAVZHVyYXRpb25GdWxsVm90ZVBvd2VyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANdm90aW5nQWRkcmVzcwUAAAAWa0R1cmF0aW9uRnVsbFZvdGVQb3dlcgIAAAAcRW1wdHkga0R1cmF0aW9uRnVsbFZvdGVQb3dlcgAAAAAMbWluVm90ZVBvd2VyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANdm90aW5nQWRkcmVzcwUAAAANa01pblZvdGVQb3dlcgIAAAATRW1wdHkga01pblZvdGVQb3dlcgAAAAAIaXNBY3RpdmUJAQAAABFAZXh0ck5hdGl2ZSgxMDUxKQAAAAIFAAAABHRoaXMFAAAACWtleUFjdGl2ZQAAAAAKY3VyclBlcmlvZAkAAGQAAAACBQAAAApiYXNlUGVyaW9kCQAAaQAAAAIJAABlAAAAAgUAAAAGaGVpZ2h0BQAAAAtzdGFydEhlaWdodAUAAAAMcGVyaW9kTGVuZ3RoAQAAAA1nZXRMaW1pdFRva2VuAAAAAQAAAARwb29sCQEAAAALdmFsdWVPckVsc2UAAAACCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAARwb29sBQAAABlrZXlMaW1pdFNoYXJlRmlyc3RIYXJ2ZXN0AAAAAAAAAAAAAAAAAANBUFkJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAABmtleUFQWQAAAAAQU3dvcFllYXJFbWlzc2lvbgkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAATa2V5U3dvcFllYXJFbWlzc2lvbgEAAAAKYXNzZXROYW1lQQAAAAEAAAAEcG9vbAQAAAAHJG1hdGNoMAkBAAAACGFzc2V0SWRBAAAAAQUAAAAEcG9vbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACaWQFAAAAByRtYXRjaDAICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAAmlkAAAABG5hbWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAABXdhdmVzBQAAAAckbWF0Y2gwAgAAAAVXQVZFUwkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgEAAAAKYXNzZXROYW1lQgAAAAEAAAAEcG9vbAQAAAAHJG1hdGNoMAkBAAAACGFzc2V0SWRCAAAAAQUAAAAEcG9vbAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACaWQFAAAAByRtYXRjaDAICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAAmlkAAAABG5hbWUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAABXdhdmVzBQAAAAckbWF0Y2gwAgAAAAVXQVZFUwkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgAAAAAEU1dPUAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAAAlrZXlTV09QaWQBAAAADmlzRmlyc3RIYXJ2ZXN0AAAAAQAAAARwb29sCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABHBvb2wFAAAAE2tleWZpcnN0SGFydmVzdENwbW0HAQAAABVnZXRIZWlnaHRGaXJzdEhhcnZlc3QAAAABAAAABHBvb2wJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEcG9vbAUAAAAVa2V5Rmlyc3RIYXJ2ZXN0SGVpZ2h0AAAAAAAAAAAAAQAAAAtnZXRCYWxhbmNlQQAAAAEAAAAEcG9vbAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHBvb2wFAAAAD2tleUJhbGFuY2VjcG1tQQkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAPa2V5QmFsYW5jZWNwbW1BAQAAAAtnZXRCYWxhbmNlQgAAAAEAAAAEcG9vbAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHBvb2wFAAAAD2tleUJhbGFuY2VjcG1tQgkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAPa2V5QmFsYW5jZWNwbW1CAQAAABJnZXRTaGFyZUxpbWl0VG9rZW4AAAABAAAABHBvb2wJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAARwb29sBQAAAAtrU2hhcmVMaW1pdAkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAALa1NoYXJlTGltaXQBAAAAGGdldFRvdGFsU2hhcmVUb2tlbkxvY2tlZAAAAAEAAAAEcG9vbAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAEcG9vbAUAAAAUa2V5U2hhcmVUb2tlbnNMb2NrZWQJAAEsAAAAAgkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAEcG9vbAUAAAAUa2V5U2hhcmVUb2tlbnNMb2NrZWQBAAAAD2dldFNoYXJlQXNzZXRJZAAAAAEAAAAEcG9vbAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACCQEAAAAFdmFsdWUAAAABCQAEJgAAAAEFAAAABHBvb2wCAAAADnNoYXJlX2Fzc2V0X2lkAQAAAA5hY2NvdW50QmFsYW5jZQAAAAEAAAAHYXNzZXRJZAQAAAAHJG1hdGNoMAUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACaWQFAAAAByRtYXRjaDAJAAPwAAAAAgUAAAAEdGhpcwUAAAACaWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAABXdhdmVzBQAAAAckbWF0Y2gwCAkAA+8AAAABBQAAAAR0aGlzAAAACWF2YWlsYWJsZQkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgEAAAAMZ2V0QXNzZXRJbmZvAAAAAQAAAAdhc3NldElkBAAAAAckbWF0Y2gwBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJpZAUAAAAHJG1hdGNoMAQAAAAIc3RyaW5nSWQJAAJYAAAAAQUAAAACaWQEAAAABGluZm8JAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+wAAAABBQAAAAJpZAkAASwAAAACCQABLAAAAAICAAAABkFzc2V0IAUAAAAIc3RyaW5nSWQCAAAADiBkb2Vzbid0IGV4aXN0CQAFFQAAAAMFAAAACHN0cmluZ0lkCAUAAAAEaW5mbwAAAARuYW1lCAUAAAAEaW5mbwAAAAhkZWNpbWFscwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAQAAAAFd2F2ZXMFAAAAByRtYXRjaDAJAAUVAAAAAwIAAAAFV0FWRVMCAAAABVdBVkVTAAAAAAAAAAAICQAAAgAAAAECAAAAC01hdGNoIGVycm9yAQAAAA5jYWxjU2NhbGVWYWx1ZQAAAAIAAAAIYXNzZXRJZDEAAAAIYXNzZXRJZDIEAAAAEGFzc2V0SWQxRGVjaW1hbHMICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAACGFzc2V0SWQxAAAACGRlY2ltYWxzBAAAABBhc3NldElkMkRlY2ltYWxzCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAhhc3NldElkMgAAAAhkZWNpbWFscwQAAAALc2NhbGVEaWdpdHMJAABkAAAAAgkAAGUAAAACBQAAABBhc3NldElkMkRlY2ltYWxzBQAAABBhc3NldElkMURlY2ltYWxzAAAAAAAAAAAICQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAFAAAAC3NjYWxlRGlnaXRzAAAAAAAAAAAAAAAAAAAAAAAABQAAAAhIQUxGRE9XTgEAAAARdXNlckF2YWlsYWJsZVNXT1AAAAACAAAABHBvb2wAAAAEdXNlcgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEFAAAABHVzZXIFAAAAEGtleUF2YWlsYWJsZVNXT1AAAAAAAAAAAAABAAAACnJld2FyZEluZm8AAAABAAAABHBvb2wEAAAAGnRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAARZ292ZXJuYW5jZUFkZHJlc3MFAAAAHWtleVRvdGFsUmV3YXJkUGVyQmxvY2tDdXJyZW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAda2V5VG90YWxSZXdhcmRQZXJCbG9ja0N1cnJlbnQCAAAADCBhdCBhZGRyZXNzIAkABCUAAAABBQAAABFnb3Zlcm5hbmNlQWRkcmVzcwQAAAAbdG90YWxSZXdhcmRQZXJCbG9ja1ByZXZpb3VzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAARZ292ZXJuYW5jZUFkZHJlc3MFAAAAHmtleVRvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAUTm8gZGF0YSBvbiB0aGUga2V5OiAFAAAAHmtleVRvdGFsUmV3YXJkUGVyQmxvY2tQcmV2aW91cwIAAAAMIGF0IGFkZHJlc3MgCQAEJQAAAAEFAAAAEWdvdmVybmFuY2VBZGRyZXNzBAAAABlyZXdhcmRQb29sRnJhY3Rpb25DdXJyZW50CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAARZ292ZXJuYW5jZUFkZHJlc3MJAAEsAAAAAgUAAAAEcG9vbAUAAAAca2V5UmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAEcG9vbAUAAAAca2V5UmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAIAAAAMIGF0IGFkZHJlc3MgCQAEJQAAAAEFAAAAEWdvdmVybmFuY2VBZGRyZXNzBAAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAABFnb3Zlcm5hbmNlQWRkcmVzcwUAAAAVa2V5UmV3YXJkVXBkYXRlSGVpZ2h0CQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABRObyBkYXRhIG9uIHRoZSBrZXk6IAUAAAAVa2V5UmV3YXJkVXBkYXRlSGVpZ2h0AgAAAAwgYXQgYWRkcmVzcyAJAAQlAAAAAQUAAAARZ292ZXJuYW5jZUFkZHJlc3MEAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAARZ292ZXJuYW5jZUFkZHJlc3MJAAEsAAAAAgUAAAAEcG9vbAUAAAAVa2V5SGVpZ2h0UG9vbEZyYWN0aW9uAAAAAAAAAAAABAAAABpyZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAAEWdvdmVybmFuY2VBZGRyZXNzCQABLAAAAAIFAAAABHBvb2wFAAAAHWtleVJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAARwb29sBQAAAB1rZXlSZXdhcmRQb29sRnJhY3Rpb25QcmV2aW91cwIAAAAMIGF0IGFkZHJlc3MgCQAEJQAAAAEFAAAAEWdvdmVybmFuY2VBZGRyZXNzBAAAABFyZXdhcmRQb29sQ3VycmVudAkAAGsAAAADBQAAABp0b3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAUAAAAZcmV3YXJkUG9vbEZyYWN0aW9uQ3VycmVudAUAAAAOdG90YWxWb3RlU2hhcmUEAAAAEnJld2FyZFBvb2xQcmV2aW91cwkAAGsAAAADBQAAABt0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMFAAAAGnJld2FyZFBvb2xGcmFjdGlvblByZXZpb3VzBQAAAA50b3RhbFZvdGVTaGFyZQMDCQAAZgAAAAIFAAAAEXJld2FyZFBvb2xDdXJyZW50BQAAABp0b3RhbFJld2FyZFBlckJsb2NrQ3VycmVudAYJAABmAAAAAgUAAAAScmV3YXJkUG9vbFByZXZpb3VzBQAAABt0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMJAAACAAAAAQIAAABicmV3YXJkUG9vbEN1cnJlbnQgPiB0b3RhbFJld2FyZFBlckJsb2NrQ3VycmVudCBvciByZXdhcmRQb29sUHJldmlvdXMgPiB0b3RhbFJld2FyZFBlckJsb2NrUHJldmlvdXMJAAUWAAAABAUAAAARcmV3YXJkUG9vbEN1cnJlbnQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAScmV3YXJkUG9vbFByZXZpb3VzBQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0AQAAABNnZXRMYXN0SW50ZXJlc3RJbmZvAAAAAQAAAARwb29sBAAAAAxsYXN0SW50ZXJlc3QJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAABHBvb2wFAAAAD2tleUxhc3RJbnRlcmVzdAkAASwAAAACCQABLAAAAAICAAAAFE5vIGRhdGEgb24gdGhlIGtleTogBQAAAARwb29sBQAAAA9rZXlMYXN0SW50ZXJlc3QEAAAAEmxhc3RJbnRlcmVzdEhlaWdodAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIFAAAABHBvb2wFAAAAFWtleUxhc3RJbnRlcmVzdEhlaWdodAUAAAAGaGVpZ2h0CQAFFAAAAAIFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAMbGFzdEludGVyZXN0AQAAABNnZXRVc2VySW50ZXJlc3RJbmZvAAAAAgAAAARwb29sAAAAC3VzZXJBZGRyZXNzBAAAABB1c2VyTGFzdEludGVyZXN0CQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQUAAAALdXNlckFkZHJlc3MFAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QEAAAACXVzZXJTaGFyZQkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEFAAAAC3VzZXJBZGRyZXNzBQAAABhrZXlVc2VyU2hhcmVUb2tlbnNMb2NrZWQEAAAADGxhc3RJbnRlcmVzdAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgUAAAAEcG9vbAUAAAAPa2V5TGFzdEludGVyZXN0CQABLAAAAAIJAAEsAAAAAgIAAAAUTm8gZGF0YSBvbiB0aGUga2V5OiAFAAAABHBvb2wFAAAAD2tleUxhc3RJbnRlcmVzdAQAAAAVdXNlckxhc3RJbnRlcmVzdFZhbHVlBAAAAAckbWF0Y2gwBQAAABB1c2VyTGFzdEludGVyZXN0AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAEHVzZXJMYXN0SW50ZXJlc3QFAAAAByRtYXRjaDAFAAAAEHVzZXJMYXN0SW50ZXJlc3QFAAAADGxhc3RJbnRlcmVzdAQAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50BAAAAAckbWF0Y2gwBQAAAAl1c2VyU2hhcmUDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAAJdXNlclNoYXJlBQAAAAckbWF0Y2gwBQAAAAl1c2VyU2hhcmUAAAAAAAAAAAAJAAUUAAAAAgUAAAAVdXNlckxhc3RJbnRlcmVzdFZhbHVlBQAAABV1c2VyU2hhcmVUb2tlbnNBbW91bnQBAAAADGNhbGNJbnRlcmVzdAAAAAoAAAASbGFzdEludGVyZXN0SGVpZ2h0AAAAEnJld2FyZFVwZGF0ZUhlaWdodAAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0AAAADGxhc3RJbnRlcmVzdAAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sAAAAQc2hhcmVUb2tlbkxvY2tlZAAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrAAAADHNoYXJlQXNzZXRJZAAAAApzY2FsZVZhbHVlAAAACXBtdEFtb3VudAMJAAAAAAAAAgUAAAAQc2hhcmVUb2tlbkxvY2tlZAAAAAAAAAAAAAAAAAAAAAAAAAMJAQAAAAIhPQAAAAIFAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQAAAAAAAAAAAADAwkAAGYAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAABmhlaWdodAkAAAAAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQHBAAAAAZyZXdhcmQJAABoAAAAAgUAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAkAAGQAAAACBQAAAAxsYXN0SW50ZXJlc3QJAABrAAAAAwUAAAAGcmV3YXJkBQAAAApzY2FsZVZhbHVlBQAAABBzaGFyZVRva2VuTG9ja2VkAwMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAQAAAAIhPQAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAcEAAAABnJld2FyZAkAAGgAAAACBQAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0CQAAZAAAAAIFAAAADGxhc3RJbnRlcmVzdAkAAGsAAAADBQAAAAZyZXdhcmQFAAAACnNjYWxlVmFsdWUFAAAAEHNoYXJlVG9rZW5Mb2NrZWQDAwMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAAAAAAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0BwkAAGYAAAACBQAAABJsYXN0SW50ZXJlc3RIZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAcEAAAABnJld2FyZAkAAGgAAAACBQAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQJAABkAAAAAgUAAAAMbGFzdEludGVyZXN0CQAAawAAAAMFAAAABnJld2FyZAUAAAAKc2NhbGVWYWx1ZQUAAAAQc2hhcmVUb2tlbkxvY2tlZAQAAAAqcmV3YXJkQWZ0ZXJMYXN0SW50ZXJlc3RCZWZvcmVSZWF3YXJkVXBkYXRlCQAAaAAAAAIFAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQEAAAAE2ludGVyZXN0QWZ0ZXJVcGRhdGUJAABkAAAAAgUAAAAMbGFzdEludGVyZXN0CQAAawAAAAMFAAAAKnJld2FyZEFmdGVyTGFzdEludGVyZXN0QmVmb3JlUmVhd2FyZFVwZGF0ZQUAAAAKc2NhbGVWYWx1ZQUAAAAQc2hhcmVUb2tlbkxvY2tlZAQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkAAGQAAAACBQAAABNpbnRlcmVzdEFmdGVyVXBkYXRlCQAAawAAAAMFAAAABnJld2FyZAUAAAAKc2NhbGVWYWx1ZQUAAAAQc2hhcmVUb2tlbkxvY2tlZAMJAABmAAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAAAZoZWlnaHQEAAAABnJld2FyZAkAAGgAAAACBQAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0CQAAZAAAAAIFAAAADGxhc3RJbnRlcmVzdAkAAGsAAAADBQAAAAZyZXdhcmQFAAAACnNjYWxlVmFsdWUFAAAAEHNoYXJlVG9rZW5Mb2NrZWQDCQAAZgAAAAIFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BAAAAAZyZXdhcmQJAABoAAAAAgUAAAAVY3VycmVudFJld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0CQAAZAAAAAIFAAAADGxhc3RJbnRlcmVzdAkAAGsAAAADBQAAAAZyZXdhcmQFAAAACnNjYWxlVmFsdWUFAAAAEHNoYXJlVG9rZW5Mb2NrZWQEAAAAKnJld2FyZEFmdGVyTGFzdEludGVyZXN0QmVmb3JlUmVhd2FyZFVwZGF0ZQkAAGgAAAACBQAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0BAAAABNpbnRlcmVzdEFmdGVyVXBkYXRlCQAAZAAAAAIFAAAADGxhc3RJbnRlcmVzdAkAAGsAAAADBQAAACpyZXdhcmRBZnRlckxhc3RJbnRlcmVzdEJlZm9yZVJlYXdhcmRVcGRhdGUFAAAACnNjYWxlVmFsdWUFAAAAEHNoYXJlVG9rZW5Mb2NrZWQEAAAABnJld2FyZAkAAGgAAAACBQAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAABkAAAAAgUAAAATaW50ZXJlc3RBZnRlclVwZGF0ZQkAAGsAAAADBQAAAAZyZXdhcmQFAAAACnNjYWxlVmFsdWUFAAAAEHNoYXJlVG9rZW5Mb2NrZWQBAAAACWNsYWltQ2FsYwAAAAMAAAAEcG9vbAAAAAZjYWxsZXIAAAAJcG10QW1vdW50BAAAAAxzaGFyZUFzc2V0SWQJAQAAAA9nZXRTaGFyZUFzc2V0SWQAAAABBQAAAARwb29sBAAAAApzY2FsZVZhbHVlCQEAAAAOY2FsY1NjYWxlVmFsdWUAAAACBQAAAARTV09QBQAAAAxzaGFyZUFzc2V0SWQEAAAAEHNoYXJlVG9rZW5Mb2NrZWQJAQAAABhnZXRUb3RhbFNoYXJlVG9rZW5Mb2NrZWQAAAABBQAAAARwb29sBAAAAA0kdDAxMzEwMzEzMTY4CQEAAAATZ2V0TGFzdEludGVyZXN0SW5mbwAAAAEFAAAABHBvb2wEAAAAEmxhc3RJbnRlcmVzdEhlaWdodAgFAAAADSR0MDEzMTAzMTMxNjgAAAACXzEEAAAADGxhc3RJbnRlcmVzdAgFAAAADSR0MDEzMTAzMTMxNjgAAAACXzIEAAAADSR0MDEzMTczMTMyODUJAQAAAApyZXdhcmRJbmZvAAAAAQUAAAAEcG9vbAQAAAAVY3VycmVudFJld2FyZFBlckJsb2NrCAUAAAANJHQwMTMxNzMxMzI4NQAAAAJfMQQAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMTMxNzMxMzI4NQAAAAJfMgQAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawgFAAAADSR0MDEzMTczMTMyODUAAAACXzMEAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQIBQAAAA0kdDAxMzE3MzEzMjg1AAAAAl80BAAAAA0kdDAxMzI5MDEzMzY5CQEAAAATZ2V0VXNlckludGVyZXN0SW5mbwAAAAIFAAAABHBvb2wFAAAABmNhbGxlcgQAAAAQdXNlckxhc3RJbnRlcmVzdAgFAAAADSR0MDEzMjkwMTMzNjkAAAACXzEEAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAgFAAAADSR0MDEzMjkwMTMzNjkAAAACXzIEAAAAD2N1cnJlbnRJbnRlcmVzdAkBAAAADGNhbGNJbnRlcmVzdAAAAAoFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0BQAAAAxsYXN0SW50ZXJlc3QFAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawUAAAAQc2hhcmVUb2tlbkxvY2tlZAUAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawUAAAAMc2hhcmVBc3NldElkBQAAAApzY2FsZVZhbHVlBQAAAAlwbXRBbW91bnQEAAAAC2NsYWltQW1vdW50CQAAawAAAAMFAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAkAAGUAAAACBQAAAA9jdXJyZW50SW50ZXJlc3QFAAAAEHVzZXJMYXN0SW50ZXJlc3QFAAAACnNjYWxlVmFsdWUEAAAAD3VzZXJOZXdJbnRlcmVzdAUAAAAPY3VycmVudEludGVyZXN0CQAFFgAAAAQFAAAAD3VzZXJOZXdJbnRlcmVzdAUAAAAPY3VycmVudEludGVyZXN0BQAAAAtjbGFpbUFtb3VudAUAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50AQAAABdjYWxjdWxhdGVQcm90b2NvbFJld2FyZAAAAAEAAAAEcG9vbAQAAAANJHQwMTM4ODcxMzk1MgkBAAAAE2dldExhc3RJbnRlcmVzdEluZm8AAAABBQAAAARwb29sBAAAABJsYXN0SW50ZXJlc3RIZWlnaHQIBQAAAA0kdDAxMzg4NzEzOTUyAAAAAl8xBAAAAAxsYXN0SW50ZXJlc3QIBQAAAA0kdDAxMzg4NzEzOTUyAAAAAl8yBAAAAA0kdDAxMzk1NzE0MDY4CQEAAAAKcmV3YXJkSW5mbwAAAAEFAAAABHBvb2wEAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawgFAAAADSR0MDEzOTU3MTQwNjgAAAACXzEEAAAAEnJld2FyZFVwZGF0ZUhlaWdodAgFAAAADSR0MDEzOTU3MTQwNjgAAAACXzIEAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sIBQAAAA0kdDAxMzk1NzE0MDY4AAAAAl8zBAAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMTM5NTcxNDA2OAAAAAJfNAQAAAAQc2hhcmVUb2tlbkxvY2tlZAkBAAAAGGdldFRvdGFsU2hhcmVUb2tlbkxvY2tlZAAAAAEFAAAABHBvb2wDAwkAAAAAAAACBQAAABBzaGFyZVRva2VuTG9ja2VkAAAAAAAAAAAACQAAAAAAAAIFAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQAAAAAAAAAAAAHAwkAAGYAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAABmhlaWdodAQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQFAAAABnJld2FyZAMJAABmAAAAAgUAAAASbGFzdEludGVyZXN0SGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQEAAAABnJld2FyZAkAAGgAAAACBQAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQFAAAABnJld2FyZAQAAAAqcmV3YXJkQWZ0ZXJMYXN0SW50ZXJlc3RCZWZvcmVSZWF3YXJkVXBkYXRlCQAAaAAAAAIFAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQEAAAABnJld2FyZAkAAGgAAAACBQAAABVjdXJyZW50UmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJyZXdhcmRVcGRhdGVIZWlnaHQJAABkAAAAAgUAAAAGcmV3YXJkBQAAACpyZXdhcmRBZnRlckxhc3RJbnRlcmVzdEJlZm9yZVJlYXdhcmRVcGRhdGUDAwkAAAAAAAACBQAAABBzaGFyZVRva2VuTG9ja2VkAAAAAAAAAAAACQEAAAACIT0AAAACBQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0AAAAAAAAAAAABwMDCQAAZgAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAGaGVpZ2h0CQAAAAAAAAIFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAUAAAAWcG9vbFJld2FyZFVwZGF0ZUhlaWdodAcEAAAABnJld2FyZAkAAGgAAAACBQAAABZwcmV2aW91c1Jld2FyZFBlckJsb2NrCQAAZQAAAAIFAAAABmhlaWdodAUAAAASbGFzdEludGVyZXN0SGVpZ2h0BQAAAAZyZXdhcmQDAwkAAGYAAAACBQAAAAZoZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkBAAAAAiE9AAAAAgUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BQAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0BwQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sJAABlAAAAAgUAAAAGaGVpZ2h0BQAAABJsYXN0SW50ZXJlc3RIZWlnaHQFAAAABnJld2FyZAMDAwkAAGYAAAACBQAAAAZoZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkAAAAAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQHCQAAZgAAAAIFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAScmV3YXJkVXBkYXRlSGVpZ2h0BwQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAUAAAAGcmV3YXJkBAAAACpyZXdhcmRBZnRlckxhc3RJbnRlcmVzdEJlZm9yZVJlYXdhcmRVcGRhdGUJAABoAAAAAgUAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAABJyZXdhcmRVcGRhdGVIZWlnaHQFAAAAEmxhc3RJbnRlcmVzdEhlaWdodAQAAAAGcmV3YXJkCQAAaAAAAAIFAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawkAAGUAAAACBQAAAAZoZWlnaHQFAAAAEnJld2FyZFVwZGF0ZUhlaWdodAkAAGQAAAACBQAAAAZyZXdhcmQFAAAAKnJld2FyZEFmdGVyTGFzdEludGVyZXN0QmVmb3JlUmVhd2FyZFVwZGF0ZQAAAAAAAAAAAAEAAAAWY2hlY2tQbXRBc3NldElkQ29ycmVjdAAAAAIAAAAEcG9vbAAAAApwbXRBc3NldElkBAAAABBwb29sU2hhcmVBc3NldElkCQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQUAAAAEcG9vbAIAAAAOc2hhcmVfYXNzZXRfaWQDCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAAEHBvb2xTaGFyZUFzc2V0SWQGBwEAAAAYZ2V0VXNlclNXT1BDbGFpbWVkQW1vdW50AAAAAgAAAARwb29sAAAABHVzZXIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABBQAAAAR1c2VyBQAAABhrZXlVc2VyU1dPUENsYWltZWRBbW91bnQAAAAAAAAAAAABAAAAB3N1c3BlbmQAAAABAAAABWNhdXNlCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUHCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAACGtleUNhdXNlBQAAAAVjYXVzZQUAAAADbmlsAAAACAAAAAFpAQAAAARpbml0AAAAAQAAAAdlYXJseUxQAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAEdGhpcwUAAAAJa2V5U1dPUGlkCQAAAgAAAAECAAAAGFNXT1AgYWxyZWFkeSBpbml0aWFsaXplZAQAAAAKaW5pdEFtb3VudAAAAFrzEHpAAAQAAAAJU1dPUGlzc3VlCQAEQgAAAAUCAAAABFNXT1ACAAAAE1NXT1AgcHJvdG9jb2wgdG9rZW4FAAAACmluaXRBbW91bnQAAAAAAAAAAAgGBAAAAAZTV09QaWQJAAQ4AAAAAQUAAAAJU1dPUGlzc3VlCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUGCQAETAAAAAIJAARCAAAABQIAAAAEU1dPUAIAAAATU1dPUCBwcm90b2NvbCB0b2tlbgUAAAAKaW5pdEFtb3VudAAAAAAAAAAACAYJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAJa2V5U1dPUGlkCQACWAAAAAEFAAAABlNXT1BpZAUAAAADbmlsAAAAAWkBAAAAFGluaXRQb29sU2hhcmVGYXJtaW5nAAAAAQAAAARwb29sAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAAK09ubHkgdGhlIERBcHAgaXRzZWxmIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24EAAAADSR0MDE3MDU0MTcxNTcJAQAAAApyZXdhcmRJbmZvAAAAAQUAAAAEcG9vbAQAAAANY3VycmVudFJld2FyZAgFAAAADSR0MDE3MDU0MTcxNTcAAAACXzEEAAAAEnJld2FyZFVwZGF0ZUhlaWdodAgFAAAADSR0MDE3MDU0MTcxNTcAAAACXzIEAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sIBQAAAA0kdDAxNzA1NDE3MTU3AAAAAl8zBAAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMTcwNTQxNzE1NwAAAAJfNAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sBQAAABRrZXlTaGFyZVRva2Vuc0xvY2tlZAAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACBQAAAARwb29sBQAAAA9rZXlMYXN0SW50ZXJlc3QAAAAAAAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAVa2V5TGFzdEludGVyZXN0SGVpZ2h0BQAAAAZoZWlnaHQFAAAAA25pbAAAAAFpAQAAABJ1cGRhdGVQb29sSW50ZXJlc3QAAAABAAAABHBvb2wDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABndhbGxldAkAAAIAAAABAgAAACxPbmx5IHRoZSBBZG1pbiBpdHNlbGYgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAQAAAANJHQwMTc1NjYxNzY4NgkBAAAACWNsYWltQ2FsYwAAAAMFAAAABHBvb2wFAAAAHGFkbWluSW5jcmVhc2VJbnRlcmVzdEFkZHJlc3MAAAAAAAAAAAAEAAAAD3VzZXJOZXdJbnRlcmVzdAgFAAAADSR0MDE3NTY2MTc2ODYAAAACXzEEAAAAD2N1cnJlbnRJbnRlcmVzdAgFAAAADSR0MDE3NTY2MTc2ODYAAAACXzIEAAAAC2NsYWltQW1vdW50CAUAAAANJHQwMTc1NjYxNzY4NgAAAAJfMwQAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CAUAAAANJHQwMTc1NjYxNzY4NgAAAAJfNAQAAAANJHQwMTc2OTExNzc5NAkBAAAACnJld2FyZEluZm8AAAABBQAAAARwb29sBAAAAA1jdXJyZW50UmV3YXJkCAUAAAANJHQwMTc2OTExNzc5NAAAAAJfMQQAAAAScmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMTc2OTExNzc5NAAAAAJfMgQAAAAWcHJldmlvdXNSZXdhcmRQZXJCbG9jawgFAAAADSR0MDE3NjkxMTc3OTQAAAACXzMEAAAAFnBvb2xSZXdhcmRVcGRhdGVIZWlnaHQIBQAAAA0kdDAxNzY5MTE3Nzk0AAAAAl80CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAD2tleUxhc3RJbnRlcmVzdAUAAAAPdXNlck5ld0ludGVyZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIFAAAABHBvb2wFAAAAFWtleUxhc3RJbnRlcmVzdEhlaWdodAUAAAAGaGVpZ2h0BQAAAANuaWwAAAABaQEAAAAPbG9ja1NoYXJlVG9rZW5zAAAAAQAAAARwb29sBAAAAA0kdDAxNzk4NjE4MDYxCQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAANJHQwMTc5ODYxODA2MQAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAADSR0MDE3OTg2MTgwNjEAAAACXzIEAAAADSR0MDE4MDY2MTgxMzkJAQAAAAxnZXRBc3NldEluZm8AAAABBQAAAApwbXRBc3NldElkBAAAAA1wbXRTdHJBc3NldElkCAUAAAANJHQwMTgwNjYxODEzOQAAAAJfMQQAAAAMcG10QXNzZXROYW1lCAUAAAANJHQwMTgwNjYxODEzOQAAAAJfMgQAAAALcG10RGVjaW1hbHMIBQAAAA0kdDAxODA2NjE4MTM5AAAAAl8zBAAAAA0kdDAxODE0NDE4MjUyCQEAAAAJY2xhaW1DYWxjAAAAAwUAAAAEcG9vbAgFAAAAAWkAAAAGY2FsbGVyBQAAAAlwbXRBbW91bnQEAAAAD3VzZXJOZXdJbnRlcmVzdAgFAAAADSR0MDE4MTQ0MTgyNTIAAAACXzEEAAAAD2N1cnJlbnRJbnRlcmVzdAgFAAAADSR0MDE4MTQ0MTgyNTIAAAACXzIEAAAAC2NsYWltQW1vdW50CAUAAAANJHQwMTgxNDQxODI1MgAAAAJfMwQAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CAUAAAANJHQwMTgxNDQxODI1MgAAAAJfNAQAAAASdXNlclNoYXJlQW1vdW50TmV3CQAAZAAAAAIFAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAUAAAAJcG10QW1vdW50BAAAABFhdmFpbGFibGVGdW5kc05ldwkAAGQAAAACCQEAAAARdXNlckF2YWlsYWJsZVNXT1AAAAACBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIFAAAAC2NsYWltQW1vdW50BAAAABB0b3RhbFNoYXJlQW1vdW50CQEAAAAYZ2V0VG90YWxTaGFyZVRva2VuTG9ja2VkAAAAAQUAAAAEcG9vbAQAAAATdG90YWxTaGFyZUFtb3VudE5ldwkAAGQAAAACBQAAABB0b3RhbFNoYXJlQW1vdW50BQAAAAlwbXRBbW91bnQEAAAAEXVzZXJDbGFpbWVkQW1vdW50CQEAAAAYZ2V0VXNlclNXT1BDbGFpbWVkQW1vdW50AAAAAgUAAAAEcG9vbAgFAAAAAWkAAAAGY2FsbGVyBAAAABR1c2VyQ2xhaW1lZEFtb3VudE5ldwkAAGQAAAACBQAAABF1c2VyQ2xhaW1lZEFtb3VudAUAAAALY2xhaW1BbW91bnQEAAAACWJhc2VFbnRyeQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAE2tleVVzZXJMYXN0SW50ZXJlc3QFAAAAD3VzZXJOZXdJbnRlcmVzdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABCAUAAAABaQAAAAZj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RW50cnkJAAACAAAAAQkAASwAAAACAgAAABxZb3VyIG1heGltdW0gc2hhcmUgdG9rZW4gaXMgCQABpAAAAAEFAAAACnNoYXJlVG9rZW4JAAACAAAAAQIAAAAVWW91IGNhbid0IHNoYXJlIHRva2VuCQAAAgAAAAECAAAAIFlvdXIgYW1vdW50IG9mIHRva2VuIGxlc3MgdGhhbiAwBQAAAAliYXNlRW50cnkAAAABaQEAAAATd2l0aGRyYXdTaGFyZVRva2VucwAAAAIAAAAEcG9vbAAAABlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50BAAAAA1zaGFyZVRva2Vuc0lkCQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQUAAAAEcG9vbAIAAAAOc2hhcmVfYXNzZXRfaWQEAAAADSR0MDIyNzAwMjI4MDAJAQAAAAljbGFpbUNhbGMAAAADBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIAAAAAAAAAAAEEAAAAD3VzZXJOZXdJbnRlcmVzdAgFAAAADSR0MDIyNzAwMjI4MDAAAAACXzEEAAAAD2N1cnJlbnRJbnRlcmVzdAgFAAAADSR0MDIyNzAwMjI4MDAAAAACXzIEAAAAC2NsYWltQW1vdW50CAUAAAANJHQwMjI3MDAyMjgwMAAAAAJfMwQAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CAUAAAANJHQwMjI3MDAyMjgwMAAAAAJfNAQAAAASdXNlclNoYXJlQW1vdW50TmV3CQAAZQAAAAIFAAAAFXVzZXJTaGFyZVRva2Vuc0Ftb3VudAUAAAAZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAQAAAARYXZhaWxhYmxlRnVuZHNOZXcJAABkAAAAAgkBAAAAEXVzZXJBdmFpbGFibGVTV09QAAAAAgUAAAAEcG9vbAgFAAAAAWkAAAAGY2FsbGVyBQAAAAtjbGFpbUFtb3VudAQAAAAQdG90YWxTaGFyZUFtb3VudAkBAAAAGGdldFRvdGFsU2hhcmVUb2tlbkxvY2tlZAAAAAEFAAAABHBvb2wEAAAAE3RvdGFsU2hhcmVBbW91bnROZXcJAABlAAAAAgUAAAAQdG90YWxTaGFyZUFtb3VudAUAAAAZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAQAAAARdXNlckNsYWltZWRBbW91bnQJAQAAABhnZXRVc2VyU1dPUENsYWltZWRBbW91bnQAAAACBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIEAAAAFHVzZXJDbGFpbWVkQW1vdW50TmV3CQAAZAAAAAIFAAAAEXVzZXJDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAMJAABmAAAAAgUAAAAZc2hhcmVUb2tlbnNXaXRoZHJhd0Ftb3VudAUAAAAVdXNlclNoYXJlVG9rZW5zQW1vdW50CQAAAgAAAAECAAAALFdpdGhkcmF3IGFtb3VudCBtb3JlIHRoZW4gdXNlciBsb2NrZWQgYW1vdW50AwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAAB9EQXBwIGlzIGluYWN0aXZlIGF0IHRoaXMgbW9tZW50AwkAAGYAAAACBQAAABlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50BQAAABV1c2VyU2hhcmVUb2tlbnNBbW91bnQJAAACAAAAAQIAAAAsV2l0aGRyYXcgYW1vdW50IG1vcmUgdGhlbiB1c2VyIGxvY2tlZCBhbW91bnQDCQAAZgAAAAIJAABrAAAAAwAAAAAAAAAAYwkAAGUAAAACCQEAAAAOYWNjb3VudEJhbGFuY2UAAAABBQAAAA1zaGFyZVRva2Vuc0lkBQAAABlzaGFyZVRva2Vuc1dpdGhkcmF3QW1vdW50AAAAAAAAAABkBQAAABN0b3RhbFNoYXJlQW1vdW50TmV3CQAAAgAAAAECAAAAMkJhbGFuY2Ugb2Ygc2hhcmUtdG9rZW4gaXMgZ3JlYXRlciB0aGFuIHRvdGFsQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAATa2V5VXNlckxhc3RJbnRlcmVzdAUAAAAPdXNlck5ld0ludGVyZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAARwb29sAgAAAAFfCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAYa2V5VXNlclNoYXJlVG9rZW5zTG9ja2VkBQAAABJ1c2VyU2hhcmVBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAPa2V5TGFzdEludGVyZXN0BQAAAA9jdXJyZW50SW50ZXJlc3QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAVa2V5TGFzdEludGVyZXN0SGVpZ2h0BQAAAAZoZWlnaHQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgUAAAAEcG9vbAUAAAAUa2V5U2hhcmVUb2tlbnNMb2NrZWQFAAAAE3RvdGFsU2hhcmVBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABBrZXlBdmFpbGFibGVTV09QBQAAABFhdmFpbGFibGVGdW5kc05ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAEcG9vbAIAAAABXwkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAGGtleVVzZXJTV09QQ2xhaW1lZEFtb3VudAUAAAAUdXNlckNsYWltZWRBbW91bnROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAABHBvb2wCAAAAAV8JAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABxrZXlVc2VyU1dPUExhc3RDbGFpbWVkQW1vdW50BQAAAAtjbGFpbUFtb3VudAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAGXNoYXJlVG9rZW5zV2l0aGRyYXdBbW91bnQFAAAADXNoYXJlVG9rZW5zSWQFAAAAA25pbAAAAAFpAQAAAAVjbGFpbQAAAAEAAAAEcG9vbAQAAAANc2hhcmVUb2tlbnNJZAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACCQEAAAAFdmFsdWUAAAABCQAEJgAAAAEFAAAABHBvb2wCAAAADnNoYXJlX2Fzc2V0X2lkBAAAABBzaGFyZVRva2VuTG9ja2VkCQEAAAAYZ2V0VG90YWxTaGFyZVRva2VuTG9ja2VkAAAAAQUAAAAEcG9vbAQAAAANJHQwMjQ4MTAyNDg3NQkBAAAAE2dldExhc3RJbnRlcmVzdEluZm8AAAABBQAAAARwb29sBAAAABJsYXN0SW50ZXJlc3RIZWlnaHQIBQAAAA0kdDAyNDgxMDI0ODc1AAAAAl8xBAAAAAxsYXN0SW50ZXJlc3QIBQAAAA0kdDAyNDgxMDI0ODc1AAAAAl8yBAAAAA0kdDAyNDg4MDI0OTkyCQEAAAAKcmV3YXJkSW5mbwAAAAEFAAAABHBvb2wEAAAAFWN1cnJlbnRSZXdhcmRQZXJCbG9jawgFAAAADSR0MDI0ODgwMjQ5OTIAAAACXzEEAAAAEnJld2FyZFVwZGF0ZUhlaWdodAgFAAAADSR0MDI0ODgwMjQ5OTIAAAACXzIEAAAAFnByZXZpb3VzUmV3YXJkUGVyQmxvY2sIBQAAAA0kdDAyNDg4MDI0OTkyAAAAAl8zBAAAABZwb29sUmV3YXJkVXBkYXRlSGVpZ2h0CAUAAAANJHQwMjQ4ODAyNDk5MgAAAAJfNAQAAAANJHQwMjQ5OTcyNTA5NwkBAAAACWNsYWltQ2FsYwAAAAMFAAAABHBvb2wIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQQAAAAPdXNlck5ld0ludGVyZXN0CAUAAAANJHQwMjQ5OTcyNTA5NwAAAAJfMQQAAAAPY3VycmVudEludGVyZXN0CAUAAAANJHQwMjQ5OTcyNTA5NwAAAAJfMgQAAAALY2xhaW1BbW91bnQIBQAAAA0kdDAyNDk5NzI1MDk3AAAAAl8zBAAAABV1c2VyU2hhcmVUb2tlbnNBbW91bnQIBQAAAA0kdDAyNDk5NzI1MDk3AAAAAl80BAAAAA1hdmFpbGFibGVGdW5kCQAAZAAAAAIJAQAAABF1c2VyQXZhaWxhYmxlU1dPUAAAAAIFAAAABHBvb2wIBQAAAAFpAAAA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", "height": 2634674, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FBMu9j2eJqgMDcdQUD4J3xgTjZqbC1EHJzXLeFGguRk4 Next: B4fW4UajahkcpvRFRoue4KzfhZUfS6VFkxmetKm8F8Z8 Diff:
OldNewDifferences
1111
1212 let e = "share_limit_on_first_harvest"
1313
14-let f = "_current_pool_fraction_reward"
14+let f = "active"
1515
16-let g = "_previous_pool_fraction_reward"
16+let g = "shutdown_cause"
1717
18-let h = "total_reward_per_block_current"
18+let h = "_current_pool_fraction_reward"
1919
20-let i = "total_reward_per_block_previous"
20+let i = "_previous_pool_fraction_reward"
2121
22-let j = "reward_update_height"
22+let j = "_pool_reward_update_height"
2323
24-let k = "_last_interest"
24+let k = "total_reward_per_block_current"
2525
26-let l = "_last_interest_height"
26+let l = "total_reward_per_block_previous"
2727
28-let m = "_share_tokens_locked"
28+let m = "reward_update_height"
2929
3030 let n = "_last_interest"
3131
32-let o = "SWOP_id"
32+let o = "_last_interest_height"
3333
34-let p = "_SWOP_claimed_amount"
34+let p = "_share_tokens_locked"
3535
36-let q = "_SWOP_last_claimed_amount"
36+let q = "_last_interest"
3737
38-let r = "_available_SWOP"
38+let r = "SWOP_id"
3939
40-let s = "farming_start_height"
40+let s = "_SWOP_claimed_amount"
4141
42-let t = "apy"
42+let t = "_SWOP_last_claimed_amount"
4343
44-let u = "previous_total_vote_SWOP"
44+let u = "_available_SWOP"
4545
46-let v = "swop_year_emission"
46+let v = "farming_start_height"
4747
48-let w = "A_asset_balance"
48+let w = "apy"
4949
50-let x = "B_asset_balance"
50+let x = "previous_total_vote_SWOP"
5151
52-let y = "_harvest_pool_activeVote_struc"
52+let y = "swop_year_emission"
5353
54-let z = "_harvest_user_pool_activeVote_struc"
54+let z = "A_asset_balance"
5555
56-let A = "share_limit_on_first_harvest"
56+let A = "B_asset_balance"
5757
58-let B = "A_asset_id"
58+let B = "_harvest_pool_activeVote_struc"
5959
60-let C = "B_asset_id"
60+let C = "_harvest_user_pool_activeVote_struc"
6161
62-let D = "first_harvest_height"
62+let D = "share_limit_on_first_harvest"
6363
64-let E = "first_harvest"
64+let E = "A_asset_id"
6565
66-let F = Address(base58'3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS')
66+let F = "B_asset_id"
6767
68-let G = Address(base58'3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp')
68+let G = "first_harvest_height"
6969
70-let H = Address(base58'3PQZWxShKGRgBN1qoJw6B4s9YWS9FneZTPg')
70+let H = "first_harvest"
7171
72-let I = Address(base58'3PPupsBVHgDXaRhyMbkTxminzAotp8AMsr6')
72+let I = "sum_reward_previous"
7373
74-let J = 10106
74+let J = "sum_reward_current"
7575
76-let K = 10000000000
76+let K = Address(base58'3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS')
7777
78-let L = 10
78+let L = Address(base58'3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp')
7979
80-let M = 1000
80+let M = Address(base58'3PQZWxShKGRgBN1qoJw6B4s9YWS9FneZTPg')
8181
82-let N = 100000
82+let N = Address(base58'3PPupsBVHgDXaRhyMbkTxminzAotp8AMsr6')
8383
84-let O = 1000000
84+let O = 10106
8585
86-let P = 100000000
86+let P = 10000000000
8787
88-let Q = 100000000000
88+let Q = 10
8989
90-func R (S) = getStringValue(S, B)
90+let R = 1000
91+
92+let S = 100000
93+
94+let T = 1000000
95+
96+let U = 100000000
97+
98+let V = 100000000000
99+
100+func W (X) = getStringValue(X, E)
91101
92102
93-func T (S) = getStringValue(S, C)
103+func Y (X) = getStringValue(X, F)
94104
95105
96-func U (S) = if ((R(S) == "WAVES"))
106+func Z (X) = if ((W(X) == "WAVES"))
97107 then unit
98- else fromBase58String(R(S))
108+ else fromBase58String(W(X))
99109
100110
101-func V (S) = if ((T(S) == "WAVES"))
111+func aa (X) = if ((Y(X) == "WAVES"))
102112 then unit
103- else fromBase58String(T(S))
113+ else fromBase58String(Y(X))
104114
105115
106-let W = "base_period"
116+let ab = "base_period"
107117
108-let X = "period_length"
118+let ac = "period_length"
109119
110-let Y = "start_height"
120+let ad = "start_height"
111121
112-let Z = "first_harvest_height"
122+let ae = "first_harvest_height"
113123
114-let aa = "duration_full_vote_power"
124+let af = "duration_full_vote_power"
115125
116-let ab = "min_vote_power"
126+let ag = "min_vote_power"
117127
118-let ac = valueOrErrorMessage(getInteger(H, W), "Empty kBasePeriod")
128+let ah = valueOrErrorMessage(getInteger(M, ab), "Empty kBasePeriod")
119129
120-let ad = valueOrErrorMessage(getInteger(H, Y), "Empty kStartHeight")
130+let ai = valueOrErrorMessage(getInteger(M, ad), "Empty kStartHeight")
121131
122-let ae = valueOrErrorMessage(getInteger(H, X), "Empty kPeriodLength")
132+let aj = valueOrErrorMessage(getInteger(M, ac), "Empty kPeriodLength")
123133
124-let af = valueOrErrorMessage(getInteger(H, aa), "Empty kDurationFullVotePower")
134+let ak = valueOrErrorMessage(getInteger(M, af), "Empty kDurationFullVotePower")
125135
126-let ag = valueOrErrorMessage(getInteger(H, ab), "Empty kMinVotePower")
136+let al = valueOrErrorMessage(getInteger(M, ag), "Empty kMinVotePower")
127137
128-let ah = (ac + ((height - ad) / ae))
138+let am = getBooleanValue(this, f)
129139
130-func ai (S) = valueOrElse(getIntegerValue(S, A), 0)
140+let an = (ah + ((height - ai) / aj))
141+
142+func ao (X) = valueOrElse(getIntegerValue(X, D), 0)
131143
132144
133-let aj = getIntegerValue(this, t)
145+let ap = getIntegerValue(this, w)
134146
135-let ak = getIntegerValue(this, v)
147+let aq = getIntegerValue(this, y)
136148
137-func al (S) = {
138- let am = U(S)
139- if ($isInstanceOf(am, "ByteVector"))
149+func ar (X) = {
150+ let as = Z(X)
151+ if ($isInstanceOf(as, "ByteVector"))
140152 then {
141- let an = am
142- value(assetInfo(an)).name
153+ let at = as
154+ value(assetInfo(at)).name
143155 }
144- else if ($isInstanceOf(am, "Unit"))
156+ else if ($isInstanceOf(as, "Unit"))
145157 then {
146- let ao = am
158+ let au = as
147159 "WAVES"
148160 }
149161 else throw("Match error")
150162 }
151163
152164
153-func ap (S) = {
154- let am = V(S)
155- if ($isInstanceOf(am, "ByteVector"))
165+func av (X) = {
166+ let as = aa(X)
167+ if ($isInstanceOf(as, "ByteVector"))
156168 then {
157- let an = am
158- value(assetInfo(an)).name
169+ let at = as
170+ value(assetInfo(at)).name
159171 }
160- else if ($isInstanceOf(am, "Unit"))
172+ else if ($isInstanceOf(as, "Unit"))
161173 then {
162- let ao = am
174+ let au = as
163175 "WAVES"
164176 }
165177 else throw("Match error")
166178 }
167179
168180
169-let aq = fromBase58String(getStringValue(this, o))
181+let aw = fromBase58String(getStringValue(this, r))
170182
171-func ar (S) = valueOrElse(getBoolean(S, E), false)
183+func ax (X) = valueOrElse(getBoolean(X, H), false)
172184
173185
174-func as (S) = valueOrElse(getInteger(S, D), 0)
186+func ay (X) = valueOrElse(getInteger(X, G), 0)
175187
176188
177-func at (S) = valueOrErrorMessage(getInteger(S, w), ("No data on the key: " + w))
189+func az (X) = valueOrErrorMessage(getInteger(X, z), ("No data on the key: " + z))
178190
179191
180-func au (S) = valueOrErrorMessage(getInteger(S, x), ("No data on the key: " + x))
192+func aA (X) = valueOrErrorMessage(getInteger(X, A), ("No data on the key: " + A))
181193
182194
183-func av (S) = valueOrErrorMessage(getInteger(S, e), ("No data on the key: " + e))
195+func aB (X) = valueOrErrorMessage(getInteger(X, e), ("No data on the key: " + e))
184196
185197
186-func aw (S) = valueOrErrorMessage(getInteger(this, (S + d)), (("No data on the key: " + S) + d))
198+func aC (X) = valueOrErrorMessage(getInteger(this, (X + d)), (("No data on the key: " + X) + d))
187199
188200
189-func ax (S) = fromBase58String(getStringValue(value(addressFromString(S)), "share_asset_id"))
201+func aD (X) = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
190202
191203
192-func ay (az) = {
193- let am = az
194- if ($isInstanceOf(am, "ByteVector"))
204+func aE (aF) = {
205+ let as = aF
206+ if ($isInstanceOf(as, "ByteVector"))
195207 then {
196- let an = am
197- let aA = toBase58String(an)
198- let aB = valueOrErrorMessage(assetInfo(an), (("Asset " + aA) + " doesn't exist"))
199- $Tuple3(aA, aB.name, aB.decimals)
208+ let at = as
209+ assetBalance(this, at)
200210 }
201- else if ($isInstanceOf(am, "Unit"))
211+ else if ($isInstanceOf(as, "Unit"))
202212 then {
203- let ao = am
213+ let au = as
214+ wavesBalance(this).available
215+ }
216+ else throw("Match error")
217+ }
218+
219+
220+func aG (aF) = {
221+ let as = aF
222+ if ($isInstanceOf(as, "ByteVector"))
223+ 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)
228+ }
229+ else if ($isInstanceOf(as, "Unit"))
230+ then {
231+ let au = as
204232 $Tuple3("WAVES", "WAVES", 8)
205233 }
206234 else throw("Match error")
207235 }
208236
209237
210-func aC (aD,aE) = {
211- let aF = value(assetInfo(aD)).decimals
212- let aG = value(assetInfo(aE)).decimals
213- let aH = ((aG - aF) + 8)
214- pow(10, 0, aH, 0, 0, HALFDOWN)
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)
215243 }
216244
217245
218-func aI (S,aJ) = valueOrElse(getInteger(this, (((S + "_") + toString(aJ)) + r)), 0)
246+func aP (X,aQ) = valueOrElse(getInteger(this, (((X + "_") + toString(aQ)) + u)), 0)
219247
220248
221-func aK (S) = {
222- let aL = valueOrErrorMessage(getInteger(F, h), ((("No data on the key: " + h) + " at address ") + toString(F)))
223- let aM = valueOrErrorMessage(getInteger(F, i), ((("No data on the key: " + i) + " at address ") + toString(F)))
224- let aN = valueOrErrorMessage(getInteger(F, (S + f)), (((("No data on the key: " + S) + f) + " at address ") + toString(F)))
225- let aO = valueOrErrorMessage(getInteger(F, j), ((("No data on the key: " + j) + " at address ") + toString(F)))
226- let aP = valueOrErrorMessage(getInteger(F, (S + g)), (((("No data on the key: " + S) + g) + " at address ") + toString(F)))
227- let aQ = fraction(aL, aN, K)
228- let aR = fraction(aM, aP, K)
229- if (if ((aQ > aL))
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))
230259 then true
231- else (aR > aM))
260+ else (aZ > aT))
232261 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
233- else $Tuple3(aQ, aO, aR)
262+ else $Tuple4(aY, aV, aZ, aW)
234263 }
235264
236265
237-func aS (S) = {
238- let aT = valueOrErrorMessage(getInteger(this, (S + k)), (("No data on the key: " + S) + k))
239- let aU = valueOrElse(getInteger(this, (S + l)), height)
240- $Tuple2(aU, aT)
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)
241270 }
242271
243272
244-func aV (S,aW) = {
245- let aX = getInteger(this, (((S + "_") + toString(aW)) + n))
246- let aY = getInteger(this, (((S + "_") + toString(aW)) + m))
247- let aT = valueOrErrorMessage(getInteger(this, (S + k)), (("No data on the key: " + S) + k))
248- let aZ = {
249- let am = aX
250- if ($isInstanceOf(am, "Int"))
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"))
251280 then {
252- let aX = am
253- aX
281+ let bf = as
282+ bf
254283 }
255- else aT
284+ else bb
256285 }
257- let ba = {
258- let am = aY
259- if ($isInstanceOf(am, "Int"))
286+ let bi = {
287+ let as = bg
288+ if ($isInstanceOf(as, "Int"))
260289 then {
261- let aY = am
262- aY
290+ let bg = as
291+ bg
263292 }
264293 else 0
265294 }
266- $Tuple2(aZ, ba)
295+ $Tuple2(bh, bi)
267296 }
268297
269298
270-func bb (aU,aO,aT,bc,bd,be,bf,bg,bh) = if ((bd == 0))
299+func bj (bc,aV,aW,bb,bk,bl,bm,bn,bo,bp) = if ((bl == 0))
271300 then 0
272- else if ((aO > height))
273- then {
274- let bi = (be * (height - aU))
275- (aT + fraction(bi, bg, bd))
276- }
277- else if ((aU > aO))
301+ else if ((aW != 0))
302+ then if (if ((aV > height))
303+ then (aV == aW)
304+ else false)
278305 then {
279- let bi = (bc * (height - aU))
280- (aT + fraction(bi, bg, bd))
306+ let bq = (bm * (height - bc))
307+ (bb + fraction(bq, bo, bl))
281308 }
282- else {
283- let bj = (be * (aO - aU))
284- let bk = (aT + fraction(bj, bg, bd))
285- let bi = (bc * (height - aO))
286- (bk + fraction(bi, bg, bd))
309+ else if (if ((height > aV))
310+ then (aV != aW)
311+ else false)
312+ then {
313+ let bq = (bm * (height - bc))
314+ (bb + fraction(bq, bo, bl))
315+ }
316+ else if (if (if ((height > aV))
317+ then (aV == aW)
318+ else false)
319+ then (bc > aV)
320+ else false)
321+ then {
322+ let bq = (bk * (height - bc))
323+ (bb + fraction(bq, bo, bl))
324+ }
325+ 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))
330+ }
331+ else if ((aV > height))
332+ then {
333+ let bq = (bm * (height - bc))
334+ (bb + fraction(bq, bo, bl))
287335 }
336+ else if ((bc > aV))
337+ then {
338+ let bq = (bk * (height - bc))
339+ (bb + fraction(bq, bo, bl))
340+ }
341+ 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))
346+ }
288347
289348
290-func bl (S,bm,bh) = {
291- let bf = ax(S)
292- let bg = aC(aq, bf)
293- let bd = aw(S)
294- let bn = aS(S)
295- let aU = bn._1
296- let aT = bn._2
297- let bo = aK(S)
298- let bc = bo._1
299- let aO = bo._2
300- let be = bo._3
301- let bp = aV(S, bm)
302- let aX = bp._1
303- let ba = bp._2
304- let bq = bb(aU, aO, aT, bc, bd, be, bf, bg, bh)
305- let br = fraction(ba, (bq - aX), bg)
306- let bs = bq
307- $Tuple4(bs, bq, br, ba)
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)
308368 }
309369
310370
311-func bt (S) = {
312- let bu = aS(S)
313- let aU = bu._1
314- let aT = bu._2
315- let bv = aK(S)
316- let bc = bv._1
317- let aO = bv._2
318- let be = bv._3
319- let bd = aw(S)
320- if ((bd == 0))
321- then if ((aO > height))
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)
383+ else false)
384+ then if ((aV > height))
322385 then {
323- let bi = (be * (height - aU))
324- bi
386+ let bq = (bm * (height - bc))
387+ bq
325388 }
326- else if ((aU > aO))
389+ else if ((bc > aV))
327390 then {
328- let bi = (bc * (height - aU))
329- bi
391+ let bq = (bk * (height - bc))
392+ bq
330393 }
331394 else {
332- let bj = (be * (aO - aU))
333- let bi = (bc * (height - aO))
334- (bi + bj)
395+ let br = (bm * (aV - bc))
396+ let bq = (bk * (height - aV))
397+ (bq + br)
335398 }
336- else 0
399+ else if (if ((bl == 0))
400+ then (aW != 0)
401+ else false)
402+ then if (if ((aV > height))
403+ then (aV == aW)
404+ else false)
405+ then {
406+ let bq = (bm * (height - bc))
407+ bq
408+ }
409+ else if (if ((height > aV))
410+ then (aV != aW)
411+ else false)
412+ then {
413+ let bq = (bm * (height - bc))
414+ bq
415+ }
416+ else if (if (if ((height > aV))
417+ then (aV == aW)
418+ else false)
419+ then (bc > aV)
420+ else false)
421+ then {
422+ let bq = (bk * (height - bc))
423+ bq
424+ }
425+ else {
426+ let br = (bm * (aV - bc))
427+ let bq = (bk * (height - aV))
428+ (bq + br)
429+ }
430+ else 0
337431 }
338432
339433
340-func bw (S,bx) = {
341- let by = fromBase58String(getStringValue(value(addressFromString(S)), "share_asset_id"))
342- if ((bx == by))
434+func bE (X,bF) = {
435+ let bG = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
436+ if ((bF == bG))
343437 then true
344438 else false
345439 }
346440
347441
348-func bz (S,aJ) = valueOrElse(getInteger(this, (((S + "_") + toString(aJ)) + p)), 0)
442+func bH (X,aQ) = valueOrElse(getInteger(this, (((X + "_") + toString(aQ)) + s)), 0)
349443
350444
351-@Callable(bA)
352-func init (bB) = if (isDefined(getString(this, o)))
445+func bI (bJ) = [BooleanEntry(f, false), StringEntry(g, bJ)]
446+
447+
448+@Callable(bK)
449+func init (bL) = if (isDefined(getString(this, r)))
353450 then throw("SWOP already initialized")
354451 else {
355- let bC = 100000000000000
356- let bD = Issue("SWOP", "SWOP protocol token", bC, 8, true)
357- let bE = calculateAssetId(bD)
358-[Issue("SWOP", "SWOP protocol token", bC, 8, true), StringEntry(o, toBase58String(bE))]
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))]
359456 }
360457
361458
362459
363-@Callable(bA)
364-func initPoolShareFarming (S) = if ((bA.caller != this))
460+@Callable(bK)
461+func initPoolShareFarming (X) = if ((bK.caller != this))
365462 then throw("Only the DApp itself can call this function")
366463 else {
367- let bF = aK(S)
368- let bG = bF._1
369- let aO = bF._2
370- let be = bF._3
371-[IntegerEntry((S + d), 0), IntegerEntry((S + k), 0), IntegerEntry((S + l), height)]
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)]
372470 }
373471
374472
375473
376-@Callable(bA)
377-func lockShareTokens (S) = {
378- let bH = $Tuple2(bA.payments[0].amount, bA.payments[0].assetId)
379- let bh = bH._1
380- let bx = bH._2
381- let bI = ay(bx)
382- let bJ = bI._1
383- let bK = bI._2
384- let bL = bI._3
385- let bM = bl(S, bA.caller, bh)
386- let bs = bM._1
387- let bq = bM._2
388- let br = bM._3
389- let ba = bM._4
390- let bN = (ba + bh)
391- let bO = (aI(S, bA.caller) + br)
392- let bP = aw(S)
393- let bQ = (bP + bh)
394- let bR = bz(S, bA.caller)
395- let bS = (bR + br)
396- let bT = [IntegerEntry((((S + "_") + toString(bA.caller)) + n), bs), IntegerEntry((((S + "_") + toString(bA.caller)) + m), bN), IntegerEntry((S + d), bQ), IntegerEntry((S + k), bq), IntegerEntry((S + l), height), IntegerEntry((((S + "_") + toString(bA.caller)) + p), bS), IntegerEntry((((S + "_") + toString(bA.caller)) + q), br), IntegerEntry((((S + "_") + toString(bA.caller)) + r), bO)]
397- if ((0 >= bh))
474+@Callable(bK)
475+func updatePoolInterest (X) = if ((bK.caller != L))
476+ 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+ }
492+
493+
494+
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))
398517 then throw("You can't lock token")
399- else if (!(bw(S, bx)))
400- then throw("Incorrect pmtAssetId")
401- else if (if (ar(Address(fromBase58String(S))))
402- then (as(Address(fromBase58String(S))) > height)
403- else false)
404- then {
405- let bU = ((((as(Address(fromBase58String(S))) - ad) + 1) / ae) - 1)
406- let bV = split(getStringValue(H, (((toString(bA.caller) + "_") + S) + "_user_pool_struc")), "_")
407- let bW = split(getStringValue(H, (S + "_pool_struc")), "_")
408- let bX = split(valueOrElse(getString(H, (((toString(bA.caller) + "_") + S) + z)), ""), "_")
409- let bY = split(valueOrElse(getString(H, (S + y)), ""), "_")
410- let bZ = ba
411- let ca = if ((toString(ah) == bV[2]))
412- then valueOrElse(parseInt(bX[0]), 0)
413- else valueOrElse(parseInt(bV[1]), 0)
414- let cb = if ((toString(ah) == bW[2]))
415- then valueOrElse(parseInt(bY[0]), 0)
416- else valueOrElse(parseInt(bW[1]), 0)
417- let cc = bt(S)
418- if ((ca != 0))
419- then {
420- let cd = av(addressFromStringValue(S))
421- let ce = (fraction(cd, ca, cb) - bZ)
422- if (if ((size(bX) > 1))
423- then (valueOrElse(parseInt(bX[1]), 0) >= bU)
424- else false)
425- then throw("You can't share token")
426- else if ((bh > cd))
427- then throw(("You can't share token more than " + toString(cd)))
428- else if ((ce > 0))
429- then if ((bP == 0))
430- then (bT ++ [Reissue(aq, cc, true), ScriptTransfer(G, cc, aq)])
431- else if ((ce >= bh))
432- then bT
433- else throw(("Your maximum share token is " + toString(ce)))
434- else throw("You can't share token")
435- }
436- else throw("Your amount of token less than 0")
437- }
438- else bT
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 ((fraction(99, (aE(bF) + bp), 100) > cc))
551+ then throw("Balance of share-token is greater than totalAmount")
552+ else if ((cb == 0))
553+ then (cf ++ [Reissue(aw, co, true), 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
439562 }
440563
441564
442565
443-@Callable(bA)
444-func withdrawShareTokens (S,cf) = {
445- let cg = fromBase58String(getStringValue(value(addressFromString(S)), "share_asset_id"))
446- let ch = bl(S, bA.caller, 1)
447- let bs = ch._1
448- let bq = ch._2
449- let br = ch._3
450- let ba = ch._4
451- let bN = (ba - cf)
452- let bO = (aI(S, bA.caller) + br)
453- let bP = aw(S)
454- let bQ = (bP - cf)
455- let bR = bz(S, bA.caller)
456- let bS = (bR + br)
457- if ((cf > ba))
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))
458581 then throw("Withdraw amount more then user locked amount")
459- else [IntegerEntry((((S + "_") + toString(bA.caller)) + n), bs), IntegerEntry((((S + "_") + toString(bA.caller)) + m), bN), IntegerEntry((S + k), bq), IntegerEntry((S + l), height), IntegerEntry((S + d), bQ), IntegerEntry((((S + "_") + toString(bA.caller)) + r), bO), IntegerEntry((((S + "_") + toString(bA.caller)) + p), bS), IntegerEntry((((S + "_") + toString(bA.caller)) + q), br), ScriptTransfer(bA.caller, cf, cg)]
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 ((fraction(99, (aE(cs) - cr), 100) > cc))
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)]
460589 }
461590
462591
463592
464-@Callable(bA)
465-func claim (S) = {
466- let bd = aw(S)
467- let ci = aS(S)
468- let aU = ci._1
469- let aT = ci._2
470- let cj = aK(S)
471- let bc = cj._1
472- let aO = cj._2
473- let be = cj._3
474- let ck = bl(S, bA.caller, 1)
475- let bs = ck._1
476- let bq = ck._2
477- let br = ck._3
478- let ba = ck._4
479- let cl = (aI(S, bA.caller) + br)
480- let bR = bz(S, bA.caller)
481- let bS = (bR + br)
482- if ((cl == 0))
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))
483614 then throw("You have 0 available SWOP")
484- else [IntegerEntry((((S + "_") + toString(bA.caller)) + n), bs), IntegerEntry((S + k), bq), IntegerEntry((S + l), height), IntegerEntry((((S + "_") + toString(bA.caller)) + r), 0), Reissue(aq, cl, true), IntegerEntry((((S + "_") + toString(bA.caller)) + p), bS), IntegerEntry((((S + "_") + toString(bA.caller)) + q), br), ScriptTransfer(bA.caller, cl, aq)]
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 ((fraction(99, aE(cs), 100) > bl))
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), Reissue(aw, cx, true), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), ScriptTransfer(bK.caller, cx, aw)]
485622 }
486623
487624
488-@Verifier(cm)
489-func cn () = {
490- let am = cm
491- let co = if (sigVerify(cm.bodyBytes, cm.proofs[0], a))
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+ let cA = if (sigVerify(cy.bodyBytes, cy.proofs[0], a))
492647 then 1
493648 else 0
494- let cp = if (sigVerify(cm.bodyBytes, cm.proofs[1], b))
649+ let cB = if (sigVerify(cy.bodyBytes, cy.proofs[1], b))
495650 then 1
496651 else 0
497- let cq = if (sigVerify(cm.bodyBytes, cm.proofs[2], c))
652+ let cC = if (sigVerify(cy.bodyBytes, cy.proofs[2], c))
498653 then 1
499654 else 0
500- (((co + cp) + cq) >= 2)
655+ (((cA + cB) + cC) >= 2)
501656 }
502657
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = base58'DXDY2itiEcYBtGkVLnkpHtDFyWQUkoLJz79uJ7ECbMrA'
55
66 let b = base58'E6Wa1SGoktYcjHjsKrvjMiqJY3SWmGKcD8Q5L8kxSPS7'
77
88 let c = base58'AZmWJtuy4GeVrMmJH4hfFBRApe1StvhJSk4jcbT6bArQ'
99
1010 let d = "_total_share_tokens_locked"
1111
1212 let e = "share_limit_on_first_harvest"
1313
14-let f = "_current_pool_fraction_reward"
14+let f = "active"
1515
16-let g = "_previous_pool_fraction_reward"
16+let g = "shutdown_cause"
1717
18-let h = "total_reward_per_block_current"
18+let h = "_current_pool_fraction_reward"
1919
20-let i = "total_reward_per_block_previous"
20+let i = "_previous_pool_fraction_reward"
2121
22-let j = "reward_update_height"
22+let j = "_pool_reward_update_height"
2323
24-let k = "_last_interest"
24+let k = "total_reward_per_block_current"
2525
26-let l = "_last_interest_height"
26+let l = "total_reward_per_block_previous"
2727
28-let m = "_share_tokens_locked"
28+let m = "reward_update_height"
2929
3030 let n = "_last_interest"
3131
32-let o = "SWOP_id"
32+let o = "_last_interest_height"
3333
34-let p = "_SWOP_claimed_amount"
34+let p = "_share_tokens_locked"
3535
36-let q = "_SWOP_last_claimed_amount"
36+let q = "_last_interest"
3737
38-let r = "_available_SWOP"
38+let r = "SWOP_id"
3939
40-let s = "farming_start_height"
40+let s = "_SWOP_claimed_amount"
4141
42-let t = "apy"
42+let t = "_SWOP_last_claimed_amount"
4343
44-let u = "previous_total_vote_SWOP"
44+let u = "_available_SWOP"
4545
46-let v = "swop_year_emission"
46+let v = "farming_start_height"
4747
48-let w = "A_asset_balance"
48+let w = "apy"
4949
50-let x = "B_asset_balance"
50+let x = "previous_total_vote_SWOP"
5151
52-let y = "_harvest_pool_activeVote_struc"
52+let y = "swop_year_emission"
5353
54-let z = "_harvest_user_pool_activeVote_struc"
54+let z = "A_asset_balance"
5555
56-let A = "share_limit_on_first_harvest"
56+let A = "B_asset_balance"
5757
58-let B = "A_asset_id"
58+let B = "_harvest_pool_activeVote_struc"
5959
60-let C = "B_asset_id"
60+let C = "_harvest_user_pool_activeVote_struc"
6161
62-let D = "first_harvest_height"
62+let D = "share_limit_on_first_harvest"
6363
64-let E = "first_harvest"
64+let E = "A_asset_id"
6565
66-let F = Address(base58'3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS')
66+let F = "B_asset_id"
6767
68-let G = Address(base58'3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp')
68+let G = "first_harvest_height"
6969
70-let H = Address(base58'3PQZWxShKGRgBN1qoJw6B4s9YWS9FneZTPg')
70+let H = "first_harvest"
7171
72-let I = Address(base58'3PPupsBVHgDXaRhyMbkTxminzAotp8AMsr6')
72+let I = "sum_reward_previous"
7373
74-let J = 10106
74+let J = "sum_reward_current"
7575
76-let K = 10000000000
76+let K = Address(base58'3PLHVWCqA9DJPDbadUofTohnCULLauiDWhS')
7777
78-let L = 10
78+let L = Address(base58'3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp')
7979
80-let M = 1000
80+let M = Address(base58'3PQZWxShKGRgBN1qoJw6B4s9YWS9FneZTPg')
8181
82-let N = 100000
82+let N = Address(base58'3PPupsBVHgDXaRhyMbkTxminzAotp8AMsr6')
8383
84-let O = 1000000
84+let O = 10106
8585
86-let P = 100000000
86+let P = 10000000000
8787
88-let Q = 100000000000
88+let Q = 10
8989
90-func R (S) = getStringValue(S, B)
90+let R = 1000
91+
92+let S = 100000
93+
94+let T = 1000000
95+
96+let U = 100000000
97+
98+let V = 100000000000
99+
100+func W (X) = getStringValue(X, E)
91101
92102
93-func T (S) = getStringValue(S, C)
103+func Y (X) = getStringValue(X, F)
94104
95105
96-func U (S) = if ((R(S) == "WAVES"))
106+func Z (X) = if ((W(X) == "WAVES"))
97107 then unit
98- else fromBase58String(R(S))
108+ else fromBase58String(W(X))
99109
100110
101-func V (S) = if ((T(S) == "WAVES"))
111+func aa (X) = if ((Y(X) == "WAVES"))
102112 then unit
103- else fromBase58String(T(S))
113+ else fromBase58String(Y(X))
104114
105115
106-let W = "base_period"
116+let ab = "base_period"
107117
108-let X = "period_length"
118+let ac = "period_length"
109119
110-let Y = "start_height"
120+let ad = "start_height"
111121
112-let Z = "first_harvest_height"
122+let ae = "first_harvest_height"
113123
114-let aa = "duration_full_vote_power"
124+let af = "duration_full_vote_power"
115125
116-let ab = "min_vote_power"
126+let ag = "min_vote_power"
117127
118-let ac = valueOrErrorMessage(getInteger(H, W), "Empty kBasePeriod")
128+let ah = valueOrErrorMessage(getInteger(M, ab), "Empty kBasePeriod")
119129
120-let ad = valueOrErrorMessage(getInteger(H, Y), "Empty kStartHeight")
130+let ai = valueOrErrorMessage(getInteger(M, ad), "Empty kStartHeight")
121131
122-let ae = valueOrErrorMessage(getInteger(H, X), "Empty kPeriodLength")
132+let aj = valueOrErrorMessage(getInteger(M, ac), "Empty kPeriodLength")
123133
124-let af = valueOrErrorMessage(getInteger(H, aa), "Empty kDurationFullVotePower")
134+let ak = valueOrErrorMessage(getInteger(M, af), "Empty kDurationFullVotePower")
125135
126-let ag = valueOrErrorMessage(getInteger(H, ab), "Empty kMinVotePower")
136+let al = valueOrErrorMessage(getInteger(M, ag), "Empty kMinVotePower")
127137
128-let ah = (ac + ((height - ad) / ae))
138+let am = getBooleanValue(this, f)
129139
130-func ai (S) = valueOrElse(getIntegerValue(S, A), 0)
140+let an = (ah + ((height - ai) / aj))
141+
142+func ao (X) = valueOrElse(getIntegerValue(X, D), 0)
131143
132144
133-let aj = getIntegerValue(this, t)
145+let ap = getIntegerValue(this, w)
134146
135-let ak = getIntegerValue(this, v)
147+let aq = getIntegerValue(this, y)
136148
137-func al (S) = {
138- let am = U(S)
139- if ($isInstanceOf(am, "ByteVector"))
149+func ar (X) = {
150+ let as = Z(X)
151+ if ($isInstanceOf(as, "ByteVector"))
140152 then {
141- let an = am
142- value(assetInfo(an)).name
153+ let at = as
154+ value(assetInfo(at)).name
143155 }
144- else if ($isInstanceOf(am, "Unit"))
156+ else if ($isInstanceOf(as, "Unit"))
145157 then {
146- let ao = am
158+ let au = as
147159 "WAVES"
148160 }
149161 else throw("Match error")
150162 }
151163
152164
153-func ap (S) = {
154- let am = V(S)
155- if ($isInstanceOf(am, "ByteVector"))
165+func av (X) = {
166+ let as = aa(X)
167+ if ($isInstanceOf(as, "ByteVector"))
156168 then {
157- let an = am
158- value(assetInfo(an)).name
169+ let at = as
170+ value(assetInfo(at)).name
159171 }
160- else if ($isInstanceOf(am, "Unit"))
172+ else if ($isInstanceOf(as, "Unit"))
161173 then {
162- let ao = am
174+ let au = as
163175 "WAVES"
164176 }
165177 else throw("Match error")
166178 }
167179
168180
169-let aq = fromBase58String(getStringValue(this, o))
181+let aw = fromBase58String(getStringValue(this, r))
170182
171-func ar (S) = valueOrElse(getBoolean(S, E), false)
183+func ax (X) = valueOrElse(getBoolean(X, H), false)
172184
173185
174-func as (S) = valueOrElse(getInteger(S, D), 0)
186+func ay (X) = valueOrElse(getInteger(X, G), 0)
175187
176188
177-func at (S) = valueOrErrorMessage(getInteger(S, w), ("No data on the key: " + w))
189+func az (X) = valueOrErrorMessage(getInteger(X, z), ("No data on the key: " + z))
178190
179191
180-func au (S) = valueOrErrorMessage(getInteger(S, x), ("No data on the key: " + x))
192+func aA (X) = valueOrErrorMessage(getInteger(X, A), ("No data on the key: " + A))
181193
182194
183-func av (S) = valueOrErrorMessage(getInteger(S, e), ("No data on the key: " + e))
195+func aB (X) = valueOrErrorMessage(getInteger(X, e), ("No data on the key: " + e))
184196
185197
186-func aw (S) = valueOrErrorMessage(getInteger(this, (S + d)), (("No data on the key: " + S) + d))
198+func aC (X) = valueOrErrorMessage(getInteger(this, (X + d)), (("No data on the key: " + X) + d))
187199
188200
189-func ax (S) = fromBase58String(getStringValue(value(addressFromString(S)), "share_asset_id"))
201+func aD (X) = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
190202
191203
192-func ay (az) = {
193- let am = az
194- if ($isInstanceOf(am, "ByteVector"))
204+func aE (aF) = {
205+ let as = aF
206+ if ($isInstanceOf(as, "ByteVector"))
195207 then {
196- let an = am
197- let aA = toBase58String(an)
198- let aB = valueOrErrorMessage(assetInfo(an), (("Asset " + aA) + " doesn't exist"))
199- $Tuple3(aA, aB.name, aB.decimals)
208+ let at = as
209+ assetBalance(this, at)
200210 }
201- else if ($isInstanceOf(am, "Unit"))
211+ else if ($isInstanceOf(as, "Unit"))
202212 then {
203- let ao = am
213+ let au = as
214+ wavesBalance(this).available
215+ }
216+ else throw("Match error")
217+ }
218+
219+
220+func aG (aF) = {
221+ let as = aF
222+ if ($isInstanceOf(as, "ByteVector"))
223+ 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)
228+ }
229+ else if ($isInstanceOf(as, "Unit"))
230+ then {
231+ let au = as
204232 $Tuple3("WAVES", "WAVES", 8)
205233 }
206234 else throw("Match error")
207235 }
208236
209237
210-func aC (aD,aE) = {
211- let aF = value(assetInfo(aD)).decimals
212- let aG = value(assetInfo(aE)).decimals
213- let aH = ((aG - aF) + 8)
214- pow(10, 0, aH, 0, 0, HALFDOWN)
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)
215243 }
216244
217245
218-func aI (S,aJ) = valueOrElse(getInteger(this, (((S + "_") + toString(aJ)) + r)), 0)
246+func aP (X,aQ) = valueOrElse(getInteger(this, (((X + "_") + toString(aQ)) + u)), 0)
219247
220248
221-func aK (S) = {
222- let aL = valueOrErrorMessage(getInteger(F, h), ((("No data on the key: " + h) + " at address ") + toString(F)))
223- let aM = valueOrErrorMessage(getInteger(F, i), ((("No data on the key: " + i) + " at address ") + toString(F)))
224- let aN = valueOrErrorMessage(getInteger(F, (S + f)), (((("No data on the key: " + S) + f) + " at address ") + toString(F)))
225- let aO = valueOrErrorMessage(getInteger(F, j), ((("No data on the key: " + j) + " at address ") + toString(F)))
226- let aP = valueOrErrorMessage(getInteger(F, (S + g)), (((("No data on the key: " + S) + g) + " at address ") + toString(F)))
227- let aQ = fraction(aL, aN, K)
228- let aR = fraction(aM, aP, K)
229- if (if ((aQ > aL))
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))
230259 then true
231- else (aR > aM))
260+ else (aZ > aT))
232261 then throw("rewardPoolCurrent > totalRewardPerBlockCurrent or rewardPoolPrevious > totalRewardPerBlockPrevious")
233- else $Tuple3(aQ, aO, aR)
262+ else $Tuple4(aY, aV, aZ, aW)
234263 }
235264
236265
237-func aS (S) = {
238- let aT = valueOrErrorMessage(getInteger(this, (S + k)), (("No data on the key: " + S) + k))
239- let aU = valueOrElse(getInteger(this, (S + l)), height)
240- $Tuple2(aU, aT)
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)
241270 }
242271
243272
244-func aV (S,aW) = {
245- let aX = getInteger(this, (((S + "_") + toString(aW)) + n))
246- let aY = getInteger(this, (((S + "_") + toString(aW)) + m))
247- let aT = valueOrErrorMessage(getInteger(this, (S + k)), (("No data on the key: " + S) + k))
248- let aZ = {
249- let am = aX
250- if ($isInstanceOf(am, "Int"))
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"))
251280 then {
252- let aX = am
253- aX
281+ let bf = as
282+ bf
254283 }
255- else aT
284+ else bb
256285 }
257- let ba = {
258- let am = aY
259- if ($isInstanceOf(am, "Int"))
286+ let bi = {
287+ let as = bg
288+ if ($isInstanceOf(as, "Int"))
260289 then {
261- let aY = am
262- aY
290+ let bg = as
291+ bg
263292 }
264293 else 0
265294 }
266- $Tuple2(aZ, ba)
295+ $Tuple2(bh, bi)
267296 }
268297
269298
270-func bb (aU,aO,aT,bc,bd,be,bf,bg,bh) = if ((bd == 0))
299+func bj (bc,aV,aW,bb,bk,bl,bm,bn,bo,bp) = if ((bl == 0))
271300 then 0
272- else if ((aO > height))
273- then {
274- let bi = (be * (height - aU))
275- (aT + fraction(bi, bg, bd))
276- }
277- else if ((aU > aO))
301+ else if ((aW != 0))
302+ then if (if ((aV > height))
303+ then (aV == aW)
304+ else false)
278305 then {
279- let bi = (bc * (height - aU))
280- (aT + fraction(bi, bg, bd))
306+ let bq = (bm * (height - bc))
307+ (bb + fraction(bq, bo, bl))
281308 }
282- else {
283- let bj = (be * (aO - aU))
284- let bk = (aT + fraction(bj, bg, bd))
285- let bi = (bc * (height - aO))
286- (bk + fraction(bi, bg, bd))
309+ else if (if ((height > aV))
310+ then (aV != aW)
311+ else false)
312+ then {
313+ let bq = (bm * (height - bc))
314+ (bb + fraction(bq, bo, bl))
315+ }
316+ else if (if (if ((height > aV))
317+ then (aV == aW)
318+ else false)
319+ then (bc > aV)
320+ else false)
321+ then {
322+ let bq = (bk * (height - bc))
323+ (bb + fraction(bq, bo, bl))
324+ }
325+ 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))
330+ }
331+ else if ((aV > height))
332+ then {
333+ let bq = (bm * (height - bc))
334+ (bb + fraction(bq, bo, bl))
287335 }
336+ else if ((bc > aV))
337+ then {
338+ let bq = (bk * (height - bc))
339+ (bb + fraction(bq, bo, bl))
340+ }
341+ 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))
346+ }
288347
289348
290-func bl (S,bm,bh) = {
291- let bf = ax(S)
292- let bg = aC(aq, bf)
293- let bd = aw(S)
294- let bn = aS(S)
295- let aU = bn._1
296- let aT = bn._2
297- let bo = aK(S)
298- let bc = bo._1
299- let aO = bo._2
300- let be = bo._3
301- let bp = aV(S, bm)
302- let aX = bp._1
303- let ba = bp._2
304- let bq = bb(aU, aO, aT, bc, bd, be, bf, bg, bh)
305- let br = fraction(ba, (bq - aX), bg)
306- let bs = bq
307- $Tuple4(bs, bq, br, ba)
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)
308368 }
309369
310370
311-func bt (S) = {
312- let bu = aS(S)
313- let aU = bu._1
314- let aT = bu._2
315- let bv = aK(S)
316- let bc = bv._1
317- let aO = bv._2
318- let be = bv._3
319- let bd = aw(S)
320- if ((bd == 0))
321- then if ((aO > height))
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)
383+ else false)
384+ then if ((aV > height))
322385 then {
323- let bi = (be * (height - aU))
324- bi
386+ let bq = (bm * (height - bc))
387+ bq
325388 }
326- else if ((aU > aO))
389+ else if ((bc > aV))
327390 then {
328- let bi = (bc * (height - aU))
329- bi
391+ let bq = (bk * (height - bc))
392+ bq
330393 }
331394 else {
332- let bj = (be * (aO - aU))
333- let bi = (bc * (height - aO))
334- (bi + bj)
395+ let br = (bm * (aV - bc))
396+ let bq = (bk * (height - aV))
397+ (bq + br)
335398 }
336- else 0
399+ else if (if ((bl == 0))
400+ then (aW != 0)
401+ else false)
402+ then if (if ((aV > height))
403+ then (aV == aW)
404+ else false)
405+ then {
406+ let bq = (bm * (height - bc))
407+ bq
408+ }
409+ else if (if ((height > aV))
410+ then (aV != aW)
411+ else false)
412+ then {
413+ let bq = (bm * (height - bc))
414+ bq
415+ }
416+ else if (if (if ((height > aV))
417+ then (aV == aW)
418+ else false)
419+ then (bc > aV)
420+ else false)
421+ then {
422+ let bq = (bk * (height - bc))
423+ bq
424+ }
425+ else {
426+ let br = (bm * (aV - bc))
427+ let bq = (bk * (height - aV))
428+ (bq + br)
429+ }
430+ else 0
337431 }
338432
339433
340-func bw (S,bx) = {
341- let by = fromBase58String(getStringValue(value(addressFromString(S)), "share_asset_id"))
342- if ((bx == by))
434+func bE (X,bF) = {
435+ let bG = fromBase58String(getStringValue(value(addressFromString(X)), "share_asset_id"))
436+ if ((bF == bG))
343437 then true
344438 else false
345439 }
346440
347441
348-func bz (S,aJ) = valueOrElse(getInteger(this, (((S + "_") + toString(aJ)) + p)), 0)
442+func bH (X,aQ) = valueOrElse(getInteger(this, (((X + "_") + toString(aQ)) + s)), 0)
349443
350444
351-@Callable(bA)
352-func init (bB) = if (isDefined(getString(this, o)))
445+func bI (bJ) = [BooleanEntry(f, false), StringEntry(g, bJ)]
446+
447+
448+@Callable(bK)
449+func init (bL) = if (isDefined(getString(this, r)))
353450 then throw("SWOP already initialized")
354451 else {
355- let bC = 100000000000000
356- let bD = Issue("SWOP", "SWOP protocol token", bC, 8, true)
357- let bE = calculateAssetId(bD)
358-[Issue("SWOP", "SWOP protocol token", bC, 8, true), StringEntry(o, toBase58String(bE))]
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))]
359456 }
360457
361458
362459
363-@Callable(bA)
364-func initPoolShareFarming (S) = if ((bA.caller != this))
460+@Callable(bK)
461+func initPoolShareFarming (X) = if ((bK.caller != this))
365462 then throw("Only the DApp itself can call this function")
366463 else {
367- let bF = aK(S)
368- let bG = bF._1
369- let aO = bF._2
370- let be = bF._3
371-[IntegerEntry((S + d), 0), IntegerEntry((S + k), 0), IntegerEntry((S + l), height)]
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)]
372470 }
373471
374472
375473
376-@Callable(bA)
377-func lockShareTokens (S) = {
378- let bH = $Tuple2(bA.payments[0].amount, bA.payments[0].assetId)
379- let bh = bH._1
380- let bx = bH._2
381- let bI = ay(bx)
382- let bJ = bI._1
383- let bK = bI._2
384- let bL = bI._3
385- let bM = bl(S, bA.caller, bh)
386- let bs = bM._1
387- let bq = bM._2
388- let br = bM._3
389- let ba = bM._4
390- let bN = (ba + bh)
391- let bO = (aI(S, bA.caller) + br)
392- let bP = aw(S)
393- let bQ = (bP + bh)
394- let bR = bz(S, bA.caller)
395- let bS = (bR + br)
396- let bT = [IntegerEntry((((S + "_") + toString(bA.caller)) + n), bs), IntegerEntry((((S + "_") + toString(bA.caller)) + m), bN), IntegerEntry((S + d), bQ), IntegerEntry((S + k), bq), IntegerEntry((S + l), height), IntegerEntry((((S + "_") + toString(bA.caller)) + p), bS), IntegerEntry((((S + "_") + toString(bA.caller)) + q), br), IntegerEntry((((S + "_") + toString(bA.caller)) + r), bO)]
397- if ((0 >= bh))
474+@Callable(bK)
475+func updatePoolInterest (X) = if ((bK.caller != L))
476+ 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+ }
492+
493+
494+
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))
398517 then throw("You can't lock token")
399- else if (!(bw(S, bx)))
400- then throw("Incorrect pmtAssetId")
401- else if (if (ar(Address(fromBase58String(S))))
402- then (as(Address(fromBase58String(S))) > height)
403- else false)
404- then {
405- let bU = ((((as(Address(fromBase58String(S))) - ad) + 1) / ae) - 1)
406- let bV = split(getStringValue(H, (((toString(bA.caller) + "_") + S) + "_user_pool_struc")), "_")
407- let bW = split(getStringValue(H, (S + "_pool_struc")), "_")
408- let bX = split(valueOrElse(getString(H, (((toString(bA.caller) + "_") + S) + z)), ""), "_")
409- let bY = split(valueOrElse(getString(H, (S + y)), ""), "_")
410- let bZ = ba
411- let ca = if ((toString(ah) == bV[2]))
412- then valueOrElse(parseInt(bX[0]), 0)
413- else valueOrElse(parseInt(bV[1]), 0)
414- let cb = if ((toString(ah) == bW[2]))
415- then valueOrElse(parseInt(bY[0]), 0)
416- else valueOrElse(parseInt(bW[1]), 0)
417- let cc = bt(S)
418- if ((ca != 0))
419- then {
420- let cd = av(addressFromStringValue(S))
421- let ce = (fraction(cd, ca, cb) - bZ)
422- if (if ((size(bX) > 1))
423- then (valueOrElse(parseInt(bX[1]), 0) >= bU)
424- else false)
425- then throw("You can't share token")
426- else if ((bh > cd))
427- then throw(("You can't share token more than " + toString(cd)))
428- else if ((ce > 0))
429- then if ((bP == 0))
430- then (bT ++ [Reissue(aq, cc, true), ScriptTransfer(G, cc, aq)])
431- else if ((ce >= bh))
432- then bT
433- else throw(("Your maximum share token is " + toString(ce)))
434- else throw("You can't share token")
435- }
436- else throw("Your amount of token less than 0")
437- }
438- else bT
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 ((fraction(99, (aE(bF) + bp), 100) > cc))
551+ then throw("Balance of share-token is greater than totalAmount")
552+ else if ((cb == 0))
553+ then (cf ++ [Reissue(aw, co, true), 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
439562 }
440563
441564
442565
443-@Callable(bA)
444-func withdrawShareTokens (S,cf) = {
445- let cg = fromBase58String(getStringValue(value(addressFromString(S)), "share_asset_id"))
446- let ch = bl(S, bA.caller, 1)
447- let bs = ch._1
448- let bq = ch._2
449- let br = ch._3
450- let ba = ch._4
451- let bN = (ba - cf)
452- let bO = (aI(S, bA.caller) + br)
453- let bP = aw(S)
454- let bQ = (bP - cf)
455- let bR = bz(S, bA.caller)
456- let bS = (bR + br)
457- if ((cf > ba))
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))
458581 then throw("Withdraw amount more then user locked amount")
459- else [IntegerEntry((((S + "_") + toString(bA.caller)) + n), bs), IntegerEntry((((S + "_") + toString(bA.caller)) + m), bN), IntegerEntry((S + k), bq), IntegerEntry((S + l), height), IntegerEntry((S + d), bQ), IntegerEntry((((S + "_") + toString(bA.caller)) + r), bO), IntegerEntry((((S + "_") + toString(bA.caller)) + p), bS), IntegerEntry((((S + "_") + toString(bA.caller)) + q), br), ScriptTransfer(bA.caller, cf, cg)]
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 ((fraction(99, (aE(cs) - cr), 100) > cc))
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)]
460589 }
461590
462591
463592
464-@Callable(bA)
465-func claim (S) = {
466- let bd = aw(S)
467- let ci = aS(S)
468- let aU = ci._1
469- let aT = ci._2
470- let cj = aK(S)
471- let bc = cj._1
472- let aO = cj._2
473- let be = cj._3
474- let ck = bl(S, bA.caller, 1)
475- let bs = ck._1
476- let bq = ck._2
477- let br = ck._3
478- let ba = ck._4
479- let cl = (aI(S, bA.caller) + br)
480- let bR = bz(S, bA.caller)
481- let bS = (bR + br)
482- if ((cl == 0))
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))
483614 then throw("You have 0 available SWOP")
484- else [IntegerEntry((((S + "_") + toString(bA.caller)) + n), bs), IntegerEntry((S + k), bq), IntegerEntry((S + l), height), IntegerEntry((((S + "_") + toString(bA.caller)) + r), 0), Reissue(aq, cl, true), IntegerEntry((((S + "_") + toString(bA.caller)) + p), bS), IntegerEntry((((S + "_") + toString(bA.caller)) + q), br), ScriptTransfer(bA.caller, cl, aq)]
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 ((fraction(99, aE(cs), 100) > bl))
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), Reissue(aw, cx, true), IntegerEntry((((X + "_") + toString(bK.caller)) + s), ce), IntegerEntry((((X + "_") + toString(bK.caller)) + t), bz), ScriptTransfer(bK.caller, cx, aw)]
485622 }
486623
487624
488-@Verifier(cm)
489-func cn () = {
490- let am = cm
491- let co = if (sigVerify(cm.bodyBytes, cm.proofs[0], a))
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+ let cA = if (sigVerify(cy.bodyBytes, cy.proofs[0], a))
492647 then 1
493648 else 0
494- let cp = if (sigVerify(cm.bodyBytes, cm.proofs[1], b))
649+ let cB = if (sigVerify(cy.bodyBytes, cy.proofs[1], b))
495650 then 1
496651 else 0
497- let cq = if (sigVerify(cm.bodyBytes, cm.proofs[2], c))
652+ let cC = if (sigVerify(cy.bodyBytes, cy.proofs[2], c))
498653 then 1
499654 else 0
500- (((co + cp) + cq) >= 2)
655+ (((cA + cB) + cC) >= 2)
501656 }
502657

github/deemru/w8io/3ef1775 
143.91 ms