tx · 4XdiVAKVicTo3q7yQLR6YfzsSXZfTobCYbymbsoLr1s1

3MqsiNaG42muSdN4QxfMQqiwCWccvH368W2:  -0.01400000 Waves

2021.07.07 14:08 [1603110] smart account 3MqsiNaG42muSdN4QxfMQqiwCWccvH368W2 > SELF 0.00000000 Waves

{ "type": 13, "id": "4XdiVAKVicTo3q7yQLR6YfzsSXZfTobCYbymbsoLr1s1", "fee": 1400000, "feeAssetId": null, "timestamp": 1625656122280, "version": 2, "chainId": 84, "sender": "3MqsiNaG42muSdN4QxfMQqiwCWccvH368W2", "senderPublicKey": "6wE73N4bMbmjbcyUmThmPeeibTebXptgAEaRipnobJLu", "proofs": [ "5YtSXBZP6rp5923QVkP7MryoY6k6a6KYo63aKeXQ4ZNkVZjwvRU5AG8My8CTRrWB1hF7aT1iL9dfWNbR87hGa9ZA", "4g86tUxSXsrUMbtSgsxEW2NLVYRzwFd959H9UBACQTxYgMj9kvhcHefMB5PUxTpj1jcyGaBhBsjDDud5nDUmw5Qv" ], "script": "base64:AAIEAAAAAAAAACoIAhIDCgEEEgcKBQEBCAgEEgMKAQESAwoBARIAEgMKAQESABIAEgMKAQEAAABGAAAAAAd2ZXJzaW9uAgAAAAUxLjAuMAAAAAAKa2V5VmVyc2lvbgIAAAAHdmVyc2lvbgAAAAAJa2V5QWN0aXZlAgAAAAZhY3RpdmUAAAAAC2tleUFzc2V0SWRBAgAAAApBX2Fzc2V0X2lkAAAAAAtrZXlBc3NldElkQgIAAAAKQl9hc3NldF9pZAAAAAALa2V5QmFsYW5jZUECAAAAD0FfYXNzZXRfYmFsYW5jZQAAAAALa2V5QmFsYW5jZUICAAAAD0JfYXNzZXRfYmFsYW5jZQAAAAAPa2V5QmFsYW5jZUluaXRBAgAAAAxBX2Fzc2V0X2luaXQAAAAAD2tleUJhbGFuY2VJbml0QgIAAAAMQl9hc3NldF9pbml0AAAAAA9rZXlTaGFyZUFzc2V0SWQCAAAADnNoYXJlX2Fzc2V0X2lkAAAAABNrZXlTaGFyZUFzc2V0U3VwcGx5AgAAABJzaGFyZV9hc3NldF9zdXBwbHkAAAAADWtleUNvbW1pc3Npb24CAAAACmNvbW1pc3Npb24AAAAAG2tleUNvbW1pc3Npb25TY2FsZURlbGltaXRlcgIAAAAaY29tbWlzc2lvbl9zY2FsZV9kZWxpbWl0ZXIAAAAACGtleUNhdXNlAgAAAA5zaHV0ZG93bl9jYXVzZQAAAAAPa2V5Rmlyc3RIYXJ2ZXN0AgAAAA1maXJzdF9oYXJ2ZXN0AAAAABVrZXlGaXJzdEhhcnZlc3RIZWlnaHQCAAAAFGZpcnN0X2hhcnZlc3RfaGVpZ2h0AAAAAAtrU2hhcmVMaW1pdAIAAAAcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAAAAAALa0Jhc2VQZXJpb2QCAAAAC2Jhc2VfcGVyaW9kAAAAAA1rUGVyaW9kTGVuZ3RoAgAAAA1wZXJpb2RfbGVuZ3RoAAAAAAxrU3RhcnRIZWlnaHQCAAAADHN0YXJ0X2hlaWdodAAAAAATa0ZpcnN0SGFydmVzdEhlaWdodAIAAAAUZmlyc3RfaGFydmVzdF9oZWlnaHQAAAAADGFkbWluUHViS2V5MQEAAAAgBM915WTQwQ9OZ7kfE2TEGg3qhCRCMX0zkF1AWAqdk0oAAAAA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AAAAEnNoYXJlSW5pdGlhbFN1cHBseQUAAAANc2hhcmVEZWNpbWFscwYEAAAADHNoYXJlSXNzdWVJZAkABDgAAAABBQAAAApzaGFyZUlzc3VlBAAAAAliYXNlRW50cnkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAKa2V5VmVyc2lvbgUAAAAHdmVyc2lvbgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAJa2V5QWN0aXZlBgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAtrZXlBc3NldElkQQUAAAAOcG10U3RyQXNzZXRJZEEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAALa2V5QXNzZXRJZEIFAAAADnBtdFN0ckFzc2V0SWRCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAAKcG10QW1vdW50QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIFAAAACnBtdEFtb3VudEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADWtleUNvbW1pc3Npb24FAAAACmNvbW1pc3Npb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAG2tleUNvbW1pc3Npb25TY2FsZURlbGltaXRlcgUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyCQAETAAAAAIFAAAACnNoYXJlSXNzdWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAPa2V5U2hhcmVBc3NldElkCQACWAAAAAEFAAAADHNoYXJlSXNzdWVJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATa2V5U2hhcmVBc3NldFN1cHBseQUAAAASc2hhcmVJbml0aWFsU3VwcGx5CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAASc2hhcmVJbml0aWFsU3VwcGx5BQAAAAxzaGFyZUlzc3VlSWQFAAAAA25pbAMFAAAADGZpcnN0SGFydmVzdAkABE4AAAACBQAAAAliYXNlRW50cnkJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAAD2tleUZpcnN0SGFydmVzdAUAAAAMZmlyc3RIYXJ2ZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABVrZXlGaXJzdEhhcnZlc3RIZWlnaHQJAABkAAAAAgUAAAALc3RhcnRIZWlnaHQJAABoAAAAAgUAAAAVZmlyc3RIYXJ2ZXN0RW5kUGVyaW9kBQAAAAxwZXJpb2RMZW5ndGgFAAAAA25pbAUAAAAJYmFzZUVudHJ5AAAAAWkBAAAAEWluaXRXaXRoSW5pdFJhdGlvAAAABQAAAAlhbXRBc3NldEEAAAAJYW10QXNzZXRCAAAAC3N0ckFzc2V0SWRBAAAAC3N0ckFzc2V0SWRCAAAADGZpcnN0SGFydmVzdAQAAAALJHQwODkyOTkwMTYJAQAAABZnZXRBc3NldEluZm9Gcm9tU3RyaW5nAAAAAQUAAAALc3RyQXNzZXRJZEEEAAAADnBtdFN0ckFzc2V0SWRBCAUAAAALJHQwODkyOTkwMTYAAAACXzEEAAAADXBtdEFzc2V0TmFtZUEIBQAAAAskdDA4OTI5OTAxNgAAAAJfMgQAAAAMcG10RGVjaW1hbHNBCAUAAAALJHQwODkyOTkwMTYAAAACXzMEAAAACyR0MDkwMjE5MTA4CQEAAAAWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwAAAAEFAAAAC3N0ckFzc2V0SWRCBAAAAA5wbXRTdHJBc3NldElkQggFAAAACyR0MDkwMjE5MTA4AAAAAl8xBAAAAA1wbXRBc3NldE5hbWVCCAUAAAALJHQwOTAyMTkxMDgAAAACXzIEAAAADHBtdERlY2ltYWxzQggFAAAACyR0MDkwMjE5MTA4AAAAAl8zAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABJhZG1pblB1YktleVN0YWtpbmcFAAAAA25pbAgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CQAAAgAAAAECAAAAIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMJAQAAAAlpc0RlZmluZWQAAAABCQAEGwAAAAIFAAAABHRoaXMFAAAACWtleUFjdGl2ZQkAAAIAAAABAgAAABZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAwkAAAAAAAACBQAAAAtzdHJBc3NldElkQQUAAAALc3RyQXNzZXRJZEIJAAACAAAAAQIAAAAYQXNzZXRzIG11c3QgYmUgZGlmZmVyZW50BAAAAAlzaGFyZU5hbWUJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAAXMJAAEvAAAAAgUAAAANcG10QXNzZXROYW1lQQAAAAAAAAAABwIAAAABXwkAAS8AAAACBQAAAA1wbXRBc3NldE5hbWVCAAAAAAAAAAAHBAAAABBzaGFyZURlc2NyaXB0aW9uCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAiU2hhcmVUb2tlbiBvZiBTd29wRmkgcHJvdG9jb2wgZm9yIAUAAAANcG10QXNzZXROYW1lQQIAAAAFIGFuZCAFAAAADXBtdEFzc2V0TmFtZUICAAAADCBhdCBhZGRyZXNzIAkABCUAAAABBQAAAAR0aGlzBAAAAA1zaGFyZURlY2ltYWxzCQAAaQAAAAIJAABkAAAAAgUAAAAMcG10RGVjaW1hbHNBBQAAAAxwbXREZWNpbWFsc0IAAAAAAAAAAAIEAAAAEnNoYXJlSW5pdGlhbFN1cHBseQAAAAAAAAAAAAQAAAAKc2hhcmVJc3N1ZQkABEIAAAAFBQAAAAlzaGFyZU5hbWUFAAAAEHNoYXJlRGVzY3JpcHRpb24FAAAAEnNoYXJlSW5pdGlhbFN1cHBseQUAAAANc2hhcmVEZWNpbWFscwYEAAAADHNoYXJlSXNzdWVJZAkABDgAAAABBQAAAApzaGFyZUlzc3VlBAAAAAliYXNlRW50cnkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAKa2V5VmVyc2lvbgUAAAAHdmVyc2lvbgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAJa2V5QWN0aXZlBgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAtrZXlBc3NldElkQQUAAAAOcG10U3RyQXNzZXRJZEEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAALa2V5QXNzZXRJZEIFAAAADnBtdFN0ckFzc2V0SWRCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA9rZXlCYWxhbmNlSW5pdEEFAAAACWFtdEFzc2V0QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAPa2V5QmFsYW5jZUluaXRCBQAAAAlhbXRBc3NldEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANa2V5Q29tbWlzc2lvbgUAAAAKY29tbWlzc2lvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAba2V5Q29tbWlzc2lvblNjYWxlRGVsaW1pdGVyBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIJAARMAAAAAgUAAAAKc2hhcmVJc3N1ZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA9rZXlTaGFyZUFzc2V0SWQJAAJYAAAAAQUAAAAMc2hhcmVJc3N1ZUlkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABNrZXlTaGFyZUFzc2V0U3VwcGx5BQAAABJzaGFyZUluaXRpYWxTdXBwbHkFAAAAA25pbAMFAAAADGZpcnN0SGFydmVzdAkABE4AAAACBQAAAAliYXNlRW50cnkJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAAD2tleUZpcnN0SGFydmVzdAUAAAAMZmlyc3RIYXJ2ZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABVrZXlGaXJzdEhhcnZlc3RIZWlnaHQJAABkAAAAAgUAAAALc3RhcnRIZWlnaHQJAABoAAAAAgUAAAAVZmlyc3RIYXJ2ZXN0RW5kUGVyaW9kBQAAAAxwZXJpb2RMZW5ndGgFAAAAA25pbAUAAAAJYmFzZUVudHJ5AAAAAWkBAAAAGGtlZXBMaW1pdEZvckZpcnN0SGFydmVzdAAAAAEAAAAKc2hhcmVMaW1pdAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAMJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkxCQAETAAAAAIFAAAADGFkbWluUHViS2V5MgkABEwAAAACBQAAAAxhZG1pblB1YktleTMJAARMAAAAAgUAAAASYWRtaW5QdWJLZXlTdGFraW5nBQAAAANuaWwIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkAAAIAAAABAgAAACFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tTaGFyZUxpbWl0BQAAAApzaGFyZUxpbWl0BQAAAANuaWwAAAABaQEAAAAWcmVwbGVuaXNoV2l0aFR3b1Rva2VucwAAAAEAAAARc2xpcHBhZ2VUb2xlcmFuY2UEAAAAC3BtdEFzc2V0SWRBCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAtwbXRBc3NldElkQggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEAAAAHYXNzZXRJZAQAAAAKcG10QW1vdW50QQkBAAAAEGRlZHVjdFN0YWtpbmdGZWUAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQFAAAAC3BtdEFzc2V0SWRBBAAAAApwbXRBbW91bnRCCQEAAAAQZGVkdWN0U3Rha2luZ0ZlZQAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABAAAABmFtb3VudAUAAAALcG10QXNzZXRJZEIDAwkAAAAAAAACBQAAAAhiYWxhbmNlQQAAAAAAAAAAAAkAAAAAAAACBQAAAAhiYWxhbmNlQgAAAAAAAAAAAAcEAAAADSR0MDExNzkzMTE4NzAJAQAAAAxnZXRBc3NldEluZm8AAAABBQAAAAtwbXRBc3NldElkQQQAAAAOcG10U3RyQXNzZXRJZEEIBQAAAA0kdDAxMTc5MzExODcwAAAAAl8xBAAAAA1wbXRBc3NldE5hbWVBCAUAAAANJHQwMTE3OTMxMTg3MAAAAAJfMgQAAAAMcG10RGVjaW1hbHNBCAUAAAANJHQwMTE3OTMxMTg3MAAAAAJfMwQAAAANJHQwMTE4NzkxMTk1NgkBAAAADGdldEFzc2V0SW5mbwAAAAEFAAAAC3BtdEFzc2V0SWRCBAAAAA5wbXRTdHJBc3NldElkQggFAAAADSR0MDExODc5MTE5NTYAAAACXzEEAAAADXBtdEFzc2V0TmFtZUIIBQAAAA0kdDAxMTg3OTExOTU2AAAAAl8yBAAAAAxwbXREZWNpbWFsc0IIBQAAAA0kdDAxMTg3OTExOTU2AAAAAl8zBAAAAAp0b2tlblJhdGlvCQAAawAAAAMJAABrAAAAAwUAAAAKYXNzZXRJbml0QQUAAAALc2NhbGVWYWx1ZTgFAAAACnBtdEFtb3VudEEFAAAAC3NjYWxlVmFsdWUzCQAAawAAAAMFAAAACmFzc2V0SW5pdEIFAAAAC3NjYWxlVmFsdWU4BQAAAApwbXRBbW91bnRCAwkAAAAAAAACBQAAAAtwbXRBc3NldElkQQUAAAALcG10QXNzZXRJZEIJAAACAAAAAQIAAAAYQXNzZXRzIG11c3QgYmUgZGlmZmVyZW50BAAAAA1zaGFyZURlY2ltYWxzCQAAaQAAAAIJAABkAAAAAgUAAAAMcG10RGVjaW1hbHNBBQAAAAxwbXREZWNpbWFsc0IAAAAAAAAAAAIEAAAAEnNoYXJlSW5pdGlhbFN1cHBseQkAAGsAAAADCQAAbAAAAAYFAAAACnBtdEFtb3VudEEFAAAADHBtdERlY2ltYWxzQQAAAAAAAAAABQAAAAAAAAAAAQUAAAAMcG10RGVjaW1hbHNBBQAAAAhIQUxGRE9XTgkAAGwAAAAGBQAAAApwbXRBbW91bnRCBQAAAAxwbXREZWNpbWFsc0IAAAAAAAAAAAUAAAAAAAAAAAEFAAAADHBtdERlY2ltYWxzQgUAAAAISEFMRkRPV04JAABsAAAABgAAAAAAAAAACgAAAAAAAAAAAAUAAAANc2hhcmVEZWNpbWFscwAAAAAAAAAAAAAAAAAAAAAAAAUAAAAISEFMRkRPV04DCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDAwkAAGYAAAACAAAAAAAAAAAABQAAABFzbGlwcGFnZVRvbGVyYW5jZQYJAABmAAAAAgUAAAARc2xpcHBhZ2VUb2xlcmFuY2UFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAKVNsaXBwYWdlIHRvbGVyYW5jZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgCQABpAAAAAEFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyAgAAABYgaW5jbHVzaXZlbHkuIEFjdHVhbDogCQABpAAAAAEFAAAAEXNsaXBwYWdlVG9sZXJhbmNlAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAgkAAAIAAAABAgAAABxUd28gYXR0YWNoZWQgYXNzZXRzIGV4cGVjdGVkAwMJAABmAAAAAgkAAGkAAAACCQAAaAAAAAIFAAAAC3NjYWxlVmFsdWUzCQAAZQAAAAIFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIFAAAACnRva2VuUmF0aW8GCQAAZgAAAAIFAAAACnRva2VuUmF0aW8JAABpAAAAAgkAAGgAAAACBQAAAAtzY2FsZVZhbHVlMwkAAGQAAAACBQAAABpzbGlwcGFnZVRvbGVyYW5jZURlbGltaXRlcgUAAAARc2xpcHBhZ2VUb2xlcmFuY2UFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyCQAAAgAAAAECAAAAPUluY29ycmVjdCBhc3NldHMgYW1vdW50OiBhbW91bnRzIG11c3QgaGF2ZSB0aGUgY29udHJhY3QgcmF0aW8DAwkBAAAAAiE9AAAAAgUAAAALcG10QXNzZXRJZEEFAAAACGFzc2V0SWRBBgkBAAAAAiE9AAAAAgUAAAALcG10QXNzZXRJZEIFAAAACGFzc2V0SWRCCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAJUluY29ycmVjdCBhc3NldHMgYXR0YWNoZWQuIEV4cGVjdGVkOiAFAAAAC3N0ckFzc2V0SWRBAgAAAAUgYW5kIAUAAAALc3RyQXNzZXRJZEIDCQAAAAAAAAIFAAAAEnNoYXJlSW5pdGlhbFN1cHBseQAAAAAAAAAAAAkAAAIAAAABAgAAAB1Ub28gc21hbGwgYW1vdW50IHRvIHJlcGxlbmlzaAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAKcG10QW1vdW50QQUAAAALcG10QXNzZXRJZEEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAApwbXRBbW91bnRCBQAAAAtwbXRBc3NldElkQgUAAAADbmlsCQEAAAARc3VzcGVuZFN1c3BpY2lvdXMAAAAACQAETAAAAAIJAQAAAAdSZWlzc3VlAAAAAwUAAAAMc2hhcmVBc3NldElkBQAAABJzaGFyZUluaXRpYWxTdXBwbHkGCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAAKcG10QW1vdW50QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIFAAAACnBtdEFtb3VudEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAE2tleVNoYXJlQXNzZXRTdXBwbHkFAAAAEnNoYXJlSW5pdGlhbFN1cHBseQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAEnNoYXJlSW5pdGlhbFN1cHBseQUAAAAMc2hhcmVBc3NldElkBQAAAANuaWwEAAAACnRva2VuUmF0aW8JAABrAAAAAwkAAGsAAAADBQAAAAhiYWxhbmNlQQUAAAALc2NhbGVWYWx1ZTgFAAAACnBtdEFtb3VudEEFAAAAC3NjYWxlVmFsdWUzCQAAawAAAAMFAAAACGJhbGFuY2VCBQAAAAtzY2FsZVZhbHVlOAUAAAAKcG10QW1vdW50QgQAAAATcmF0aW9TaGFyZVRva2Vuc0luQQkAAGsAAAADBQAAAApwbXRBbW91bnRBBQAAAAtzY2FsZVZhbHVlOAUAAAAIYmFsYW5jZUEEAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkIJAABrAAAAAwUAAAAKcG10QW1vdW50QgUAAAALc2NhbGVWYWx1ZTgFAAAACGJhbGFuY2VCBAAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAABrAAAAAwkAAZcAAAABCQAETAAAAAIFAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkEJAARMAAAAAgUAAAATcmF0aW9TaGFyZVRva2Vuc0luQgUAAAADbmlsBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAtzY2FsZVZhbHVlOAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAMDCQAAZgAAAAIAAAAAAAAAAAAFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBgkAAGYAAAACBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAApU2xpcHBhZ2UgdG9sZXJhbmNlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAJAAGkAAAAAQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXICAAAAFiBpbmNsdXNpdmVseS4gQWN0dWFsOiAJAAGkAAAAAQUAAAARc2xpcHBhZ2VUb2xlcmFuY2UDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAACCQAAAgAAAAECAAAAHFR3byBhdHRhY2hlZCBhc3NldHMgZXhwZWN0ZWQDAwkBAAAAAiE9AAAAAgUAAAALcG10QXNzZXRJZEEFAAAACGFzc2V0SWRBBgkBAAAAAiE9AAAAAgUAAAALcG10QXNzZXRJZEIFAAAACGFzc2V0SWRCCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAJUluY29ycmVjdCBhc3NldHMgYXR0YWNoZWQuIEV4cGVjdGVkOiAFAAAAC3N0ckFzc2V0SWRBAgAAAAUgYW5kIAUAAAALc3RyQXNzZXRJZEIDAwkAAGYAAAACCQAAaQAAAAIJAABoAAAAAgUAAAALc2NhbGVWYWx1ZTMJAABlAAAAAgUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAABpzbGlwcGFnZVRvbGVyYW5jZURlbGltaXRlcgUAAAAKdG9rZW5SYXRpbwYJAABmAAAAAgUAAAAKdG9rZW5SYXRpbwkAAGkAAAACCQAAaAAAAAIFAAAAC3NjYWxlVmFsdWUzCQAAZAAAAAIFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIJAAACAAAAAQIAAAA9SW5jb3JyZWN0IGFzc2V0cyBhbW91bnQ6IGFtb3VudHMgbXVzdCBoYXZlIHRoZSBjb250cmFjdCByYXRpbwMJAAAAAAAAAgUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50AAAAAAAAAAAACQAAAgAAAAECAAAAHVRvbyBzbWFsbCBhbW91bnQgdG8gcmVwbGVuaXNoAwkBAAAAASEAAAABBQAAABBoYXNFbm91Z2hCYWxhbmNlCQAETgAAAAIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAApwbXRBbW91bnRBBQAAAAtwbXRBc3NldElkQQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAACnBtdEFtb3VudEIFAAAAC3BtdEFzc2V0SWRCBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAApwbXRBbW91bnRBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAKcG10QW1vdW50QgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATa2V5U2hhcmVBc3NldFN1cHBseQkAAGQAAAACBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAAAxzaGFyZUFzc2V0SWQFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQFAAAADHNoYXJlQXNzZXRJZAUAAAADbmlsAAAAAWkBAAAACHdpdGhkcmF3AAAAAAQAAAANJHQwMTYzNjgxNjUxOAkABRQAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAACXBtdEFtb3VudAgFAAAADSR0MDE2MzY4MTY1MTgAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAA0kdDAxNjM2ODE2NTE4AAAAAl8yBAAAAAxhbW91bnRUb1BheUEJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAgkAAGsAAAADBQAAAAlwbXRBbW91bnQFAAAACGJhbGFuY2VBBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAhhc3NldElkQQQAAAAMYW1vdW50VG9QYXlCCQEAAAAQZGVkdWN0U3Rha2luZ0ZlZQAAAAIJAABrAAAAAwUAAAAJcG10QW1vdW50BQAAAAhiYWxhbmNlQgUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAIYXNzZXRJZEIDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAHU9uZSBhdHRhY2hlZCBwYXltZW50IGV4cGVjdGVkAwkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAMc2hhcmVBc3NldElkCQAAAgAAAAEJAAEsAAAAAgIAAAAkSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkLiBFeHBlY3RlZDogCQACWAAAAAEFAAAADHNoYXJlQXNzZXRJZAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAJcG10QW1vdW50BQAAAApwbXRBc3NldElkBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAADAwkAAGYAAAACBQAAAAxhbW91bnRUb1BheUEFAAAAEWF2YWlsYWJsZUJhbGFuY2VBBgkAAGYAAAACBQAAAAxhbW91bnRUb1BheUIFAAAAEWF2YWlsYWJsZUJhbGFuY2VCCQEAAAAidGhyb3dJbnN1ZmZpY2llbnRBdmFpbGFibGVCYWxhbmNlcwAAAAIFAAAADGFtb3VudFRvUGF5QQUAAAAMYW1vdW50VG9QYXlCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAAMYW1vdW50VG9QYXlBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAAMYW1vdW50VG9QYXlCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABNrZXlTaGFyZUFzc2V0U3VwcGx5CQAAZQAAAAIFAAAAEHNoYXJlQXNzZXRTdXBwbHkFAAAACXBtdEFtb3VudAkABEwAAAACCQEAAAAEQnVybgAAAAIFAAAADHNoYXJlQXNzZXRJZAUAAAAJcG10QW1vdW50CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAMYW1vdW50VG9QYXlBBQAAAAhhc3NldElkQQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADGFtb3VudFRvUGF5QgUAAAAIYXNzZXRJZEIFAAAAA25pbAAAAAFpAQAAAAhleGNoYW5nZQAAAAEAAAASbWluQW1vdW50VG9SZWNlaXZlBAAAAA0kdDAxNzcyNDE3Nzk5CQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAANJHQwMTc3MjQxNzc5OQAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAADSR0MDE3NzI0MTc3OTkAAAACXzIKAQAAAA1jYWxjdWxhdGVGZWVzAAAAAgAAAAl0b2tlbkZyb20AAAAHdG9rZW5UbwQAAAAQYW1vdW50V2l0aG91dEZlZQkAAGsAAAADBQAAAAd0b2tlblRvBQAAAAlwbXRBbW91bnQJAABkAAAAAgUAAAAJcG10QW1vdW50BQAAAAl0b2tlbkZyb20EAAAADWFtb3VudFdpdGhGZWUJAABrAAAAAwUAAAAQYW1vdW50V2l0aG91dEZlZQkAAGUAAAACBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIFAAAACmNvbW1pc3Npb24FAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgQAAAAQZ292ZXJuYW5jZVJld2FyZAkAAGsAAAADBQAAABBhbW91bnRXaXRob3V0RmVlBQAAABRjb21taXNzaW9uR292ZXJuYW5jZQUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyAwkAAGYAAAACBQAAABJtaW5BbW91bnRUb1JlY2VpdmUFAAAADWFtb3VudFdpdGhGZWUJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAdQ2FsY3VsYXRlZCBhbW91bnQgdG8gcmVjZWl2ZSAJAAGkAAAAAQUAAAANYW1vdW50V2l0aEZlZQIAAAAgIGlzIGxlc3MgdGhhbiBzcGVjaWZpZWQgbWluaW11bSAJAAGkAAAAAQUAAAASbWluQW1vdW50VG9SZWNlaXZlCQAFFQAAAAMFAAAAEGFtb3VudFdpdGhvdXRGZWUFAAAADWFtb3VudFdpdGhGZWUFAAAAEGdvdmVybmFuY2VSZXdhcmQDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDAwkAAAAAAAACBQAAAAhiYWxhbmNlQQAAAAAAAAAAAAYJAAAAAAAAAgUAAAAIYmFsYW5jZUIAAAAAAAAAAAAJAAACAAAAAQIAAAAgQ2FuJ3QgZXhjaGFuZ2Ugd2l0aCB6ZXJvIGJhbGFuY2UDCQAAZwAAAAIAAAAAAAAAAAAFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQkAAAIAAAABCQABLAAAAAICAAAANE1pbmltYWwgYW1vdW50IHRvIHJlY2VpdmUgbXVzdCBiZSBwb3NpdGl2ZS4gQWN0dWFsOiAJAAGkAAAAAQUAAAASbWluQW1vdW50VG9SZWNlaXZlAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAJcG10QW1vdW50BQAAAApwbXRBc3NldElkBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAADCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRBBAAAAAthc3NldElkU2VuZAUAAAAIYXNzZXRJZEIEAAAADSR0MDE5MDczMTkxNjQJAQAAAA1jYWxjdWxhdGVGZWVzAAAAAgUAAAAIYmFsYW5jZUEFAAAACGJhbGFuY2VCBAAAABBhbW91bnRXaXRob3V0RmVlCAUAAAANJHQwMTkwNzMxOTE2NAAAAAJfMQQAAAANYW1vdW50V2l0aEZlZQgFAAAADSR0MDE5MDczMTkxNjQAAAACXzIEAAAAEGdvdmVybmFuY2VSZXdhcmQIBQAAAA0kdDAxOTA3MzE5MTY0AAAAAl8zBAAAAAtuZXdCYWxhbmNlQQkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAAJcG10QW1vdW50BAAAAAtuZXdCYWxhbmNlQgkAAGUAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VCBQAAAA1hbW91bnRXaXRoRmVlBQAAABBnb3Zlcm5hbmNlUmV3YXJkAwMDCQAAAAAAAAIFAAAACGFzc2V0SWRBBQAAAARFVVJOCQAAZwAAAAIFAAAAEHN0YWtlZEFtb3VudEVVUk4FAAAAC25ld0JhbGFuY2VBBwYDCQAAAAAAAAIFAAAACGFzc2V0SWRCBQAAAARFVVJOCQAAZwAAAAIFAAAAEHN0YWtlZEFtb3VudEVVUk4FAAAAC25ld0JhbGFuY2VCBwkBAAAAIXRocm93SW5zdWZmaWNpZW50QXZhaWxhYmxlQmFsYW5jZQAAAAMFAAAADWFtb3VudFdpdGhGZWUFAAAAEWF2YWlsYWJsZUJhbGFuY2VCBQAAAAphc3NldE5hbWVCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VCBQAAAAtuZXdCYWxhbmNlQgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADWFtb3VudFdpdGhGZWUFAAAAC2Fzc2V0SWRTZW5kCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADXdhbGxldEFkZHJlc3MFAAAAEGdvdmVybmFuY2VSZXdhcmQFAAAAC2Fzc2V0SWRTZW5kBQAAAANuaWwDCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRCBAAAAAthc3NldElkU2VuZAUAAAAIYXNzZXRJZEEEAAAADSR0MDIwMDMzMjAxMjQJAQAAAA1jYWxjdWxhdGVGZWVzAAAAAgUAAAAIYmFsYW5jZUIFAAAACGJhbGFuY2VBBAAAABBhbW91bnRXaXRob3V0RmVlCAUAAAANJHQwMjAwMzMyMDEyNAAAAAJfMQQAAAANYW1vdW50V2l0aEZlZQgFAAAADSR0MDIwMDMzMjAxMjQAAAACXzIEAAAAEGdvdmVybmFuY2VSZXdhcmQIBQAAAA0kdDAyMDAzMzIwMTI0AAAAAl8zBAAAAAtuZXdCYWxhbmNlQQkAAGUAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAAA1hbW91bnRXaXRoRmVlBQAAABBnb3Zlcm5hbmNlUmV3YXJkBAAAAAtuZXdCYWxhbmNlQgkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAJcG10QW1vdW50AwMDCQAAAAAAAAIFAAAACGFzc2V0SWRBBQAAAARFVVJOCQAAZwAAAAIFAAAAEHN0YWtlZEFtb3VudEVVUk4FAAAAC25ld0JhbGFuY2VBBwYDCQAAAAAAAAIFAAAACGFzc2V0SWRCBQAAAARFVVJOCQAAZwAAAAIFAAAAEHN0YWtlZEFtb3VudEVVUk4FAAAAC25ld0JhbGFuY2VCBwkBAAAAIXRocm93SW5zdWZmaWNpZW50QXZhaWxhYmxlQmFsYW5jZQAAAAMFAAAADWFtb3VudFdpdGhGZWUFAAAAEWF2YWlsYWJsZUJhbGFuY2VBBQAAAAphc3NldE5hbWVBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VCBQAAAAtuZXdCYWxhbmNlQgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADWFtb3VudFdpdGhGZWUFAAAAC2Fzc2V0SWRTZW5kCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADXdhbGxldEFkZHJlc3MFAAAAEGdvdmVybmFuY2VSZXdhcmQFAAAAC2Fzc2V0SWRTZW5kBQAAAANuaWwJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAkSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkLiBFeHBlY3RlZDogBQAAAAtzdHJBc3NldElkQQIAAAAEIG9yIAUAAAALc3RyQXNzZXRJZEIAAAABaQEAAAAIc2h1dGRvd24AAAAAAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABCQABLAAAAAICAAAAIkRBcHAgaXMgYWxyZWFkeSBzdXNwZW5kZWQuIENhdXNlOiAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAIa2V5Q2F1c2UCAAAAGnRoZSBjYXVzZSB3YXNuJ3Qgc3BlY2lmaWVkAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQEAAAAHc3VzcGVuZAAAAAECAAAAD1BhdXNlZCBieSBhZG1pbgAAAAFpAQAAAAhhY3RpdmF0ZQAAAAADBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAABZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUGCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAACGtleUNhdXNlBQAAAANuaWwAAAABaQEAAAAZdGFrZUludG9BY2NvdW50RXh0cmFGdW5kcwAAAAEAAAALYW1vdW50TGVhdmUEAAAAHXVuY291bnRhYmxlQW1vdW50RW5yb2xsQXNzZXRBCQAAZQAAAAIFAAAAGWFjY291bnRCYWxhbmNlV2l0aFN0YWtlZEEFAAAACGJhbGFuY2VBBAAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QgkAAGUAAAACBQAAABlhY2NvdW50QmFsYW5jZVdpdGhTdGFrZWRCBQAAAAhiYWxhbmNlQgQAAAANYW1vdW50RW5yb2xsQQkAAGUAAAACBQAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QQMJAAAAAAAAAgUAAAAIYXNzZXRJZEEFAAAABHVuaXQFAAAAC2Ftb3VudExlYXZlAAAAAAAAAAAABAAAAA1hbW91bnRFbnJvbGxCCQAAZQAAAAIFAAAAHXVuY291bnRhYmxlQW1vdW50RW5yb2xsQXNzZXRCAwkAAAAAAAACBQAAAAhhc3NldElkQgUAAAAEdW5pdAUAAAALYW1vdW50TGVhdmUAAAAAAAAAAAADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAArT25seSB0aGUgREFwcCBpdHNlbGYgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMJAABmAAAAAgAAAAAAAAAAAAUAAAALYW1vdW50TGVhdmUJAAACAAAAAQkAASwAAAACAgAAADNBcmd1bWVudCAnYW1vdW50TGVhdmUnIGNhbm5vdCBiZSBuZWdhdGl2ZS4gQWN0dWFsOiAJAAGkAAAAAQUAAAALYW1vdW50TGVhdmUDAwkAAGYAAAACAAAAAAAAAAAABQAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QQYJAABmAAAAAgAAAAAAAAAAAAUAAAAddW5jb3VudGFibGVBbW91bnRFbnJvbGxBc3NldEIJAQAAAAdzdXNwZW5kAAAAAQIAAAAWRW5yb2xsIGFtb3VudCBuZWdhdGl2ZQMDCQAAZgAAAAIAAAAAAAAAAAAFAAAADWFtb3VudEVucm9sbEEGCQAAZgAAAAIAAAAAAAAAAAAFAAAADWFtb3VudEVucm9sbEIJ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", "height": 1603110, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: acfibe37dEyHpy22DGXRS3Md1jVWentqkc68xGuZJh6 Next: CVAQasa3WK2z5YTWXhntgwrTzmXjFnXJoYv9wMRMxMdU Diff:
OldNewDifferences
5959
6060 let C = Address(base58'3MyVqAbmKWh339gF6hy8faWw1jGeTV2wnGE')
6161
62-let D = valueOrErrorMessage(getInteger(B, r), "Empty kBasePeriod")
62+let D = Address(base58'3MqsiNaG42muSdN4QxfMQqiwCWccvH368W2')
6363
64-let E = valueOrErrorMessage(getInteger(B, t), "Empty kStartHeight")
64+let E = valueOrErrorMessage(getInteger(B, r), "Empty kBasePeriod")
6565
66-let F = valueOrErrorMessage(getInteger(B, s), "Empty kPeriodLength")
66+let F = valueOrErrorMessage(getInteger(B, t), "Empty kStartHeight")
6767
68-let G = ((D + ((height - E) / F)) + 3)
68+let G = valueOrErrorMessage(getInteger(B, s), "Empty kPeriodLength")
6969
70-let H = base58'ECBCkHS68DckpBrzLeoRgYbFg7sCVqR176mPqbXsj9pA'
70+let H = ((E + ((height - F) / G)) + 3)
7171
72-let I = 234000
72+let I = base58'ECBCkHS68DckpBrzLeoRgYbFg7sCVqR176mPqbXsj9pA'
7373
74-let J = getBooleanValue(this, c)
74+let J = 234000
7575
76-let K = getStringValue(this, d)
76+let K = getBooleanValue(this, c)
7777
78-let L = getStringValue(this, e)
78+let L = getStringValue(this, d)
7979
80-let M = if ((K == "WAVES"))
81- then unit
82- else fromBase58String(K)
80+let M = getStringValue(this, e)
8381
8482 let N = if ((L == "WAVES"))
8583 then unit
8684 else fromBase58String(L)
8785
88-let O = {
89- let P = M
90- if ($isInstanceOf(P, "ByteVector"))
86+let O = if ((M == "WAVES"))
87+ then unit
88+ else fromBase58String(M)
89+
90+let P = {
91+ let Q = N
92+ if ($isInstanceOf(Q, "ByteVector"))
9193 then {
92- let Q = P
93- value(assetInfo(Q)).name
94+ let R = Q
95+ value(assetInfo(R)).name
9496 }
95- else if ($isInstanceOf(P, "Unit"))
97+ else if ($isInstanceOf(Q, "Unit"))
9698 then {
97- let R = P
99+ let S = Q
98100 "WAVES"
99101 }
100102 else throw("Match error")
101103 }
102104
103-let S = {
104- let P = N
105- if ($isInstanceOf(P, "ByteVector"))
105+let T = {
106+ let Q = O
107+ if ($isInstanceOf(Q, "ByteVector"))
106108 then {
107- let Q = P
108- value(assetInfo(Q)).name
109+ let R = Q
110+ value(assetInfo(R)).name
109111 }
110- else if ($isInstanceOf(P, "Unit"))
112+ else if ($isInstanceOf(Q, "Unit"))
111113 then {
112- let R = P
114+ let S = Q
113115 "WAVES"
114116 }
115117 else throw("Match error")
116118 }
117119
118-let T = getIntegerValue(this, f)
120+let U = getIntegerValue(this, f)
119121
120-let U = getIntegerValue(this, g)
122+let V = getIntegerValue(this, g)
121123
122-let V = fromBase58String(getStringValue(this, j))
124+let W = fromBase58String(getStringValue(this, j))
123125
124-let W = getIntegerValue(this, k)
126+let X = getIntegerValue(this, k)
125127
126-let X = 3000
128+let Y = 3000
127129
128-let Y = 1200
130+let Z = 1200
129131
130-let Z = 1000000
132+let aa = 1000000
131133
132-let aa = 1000
134+let ab = 1000
133135
134-let ab = 100000000
136+let ac = 100000000
135137
136-let ac = 1000
138+let ad = 1000
137139
138-let ad = 8
140+let ae = 8
139141
140-func ae (af) = {
141- let P = af
142- if ($isInstanceOf(P, "ByteVector"))
142+func af (ag) = {
143+ let Q = ag
144+ if ($isInstanceOf(Q, "ByteVector"))
143145 then {
144- let Q = P
145- assetBalance(this, Q)
146+ let R = Q
147+ assetBalance(this, R)
146148 }
147- else if ($isInstanceOf(P, "Unit"))
149+ else if ($isInstanceOf(Q, "Unit"))
148150 then {
149- let R = P
151+ let S = Q
150152 wavesBalance(this).available
151153 }
152154 else throw("Match error")
153155 }
154156
155157
156-let ag = {
157- let P = getInteger(C, ((("%s%s%s__stakingBalance__" + toBase58String(H)) + "__") + toString(this)))
158- if ($isInstanceOf(P, "Int"))
158+let ah = {
159+ let Q = getInteger(C, ((("%s%s%s__stakingBalance__" + toBase58String(I)) + "__") + toString(this)))
160+ if ($isInstanceOf(Q, "Int"))
159161 then {
160- let ah = P
161- ah
162+ let ai = Q
163+ ai
162164 }
163- else if ($isInstanceOf(P, "Unit"))
165+ else if ($isInstanceOf(Q, "Unit"))
164166 then {
165- let ai = P
167+ let aj = Q
166168 0
167169 }
168170 else throw("Match error")
169171 }
170172
171-let aj = getIntegerValue(this, h)
173+let ak = getIntegerValue(this, h)
172174
173-let ak = getIntegerValue(this, i)
175+let al = getIntegerValue(this, i)
174176
175-let al = (T - (if ((M == H))
176- then ag
177+let am = (U - (if ((N == I))
178+ then ah
177179 else 0))
178180
179-let am = (U - (if ((N == H))
180- then ag
181+let an = (V - (if ((O == I))
182+ then ah
181183 else 0))
182184
183-let an = (ae(M) + (if ((M == H))
184- then ag
185+let ao = (af(N) + (if ((N == I))
186+ then ah
185187 else 0))
186188
187-let ao = (ae(N) + (if ((N == H))
188- then ag
189+let ap = (af(O) + (if ((O == I))
190+ then ah
189191 else 0))
190192
191-let ap = if ((an >= T))
192- then (ao >= U)
193+let aq = if ((ao >= U))
194+ then (ap >= V)
193195 else false
194196
195-func aq (af) = {
196- let P = af
197- if ($isInstanceOf(P, "ByteVector"))
197+func ar (ag) = {
198+ let Q = ag
199+ if ($isInstanceOf(Q, "ByteVector"))
198200 then {
199- let Q = P
200- let ar = toBase58String(Q)
201- let as = valueOrErrorMessage(assetInfo(Q), (("Asset " + ar) + " doesn't exist"))
202- $Tuple3(ar, as.name, as.decimals)
201+ let R = Q
202+ let as = toBase58String(R)
203+ let at = valueOrErrorMessage(assetInfo(R), (("Asset " + as) + " doesn't exist"))
204+ $Tuple3(as, at.name, at.decimals)
203205 }
204- else if ($isInstanceOf(P, "Unit"))
206+ else if ($isInstanceOf(Q, "Unit"))
205207 then {
206- let R = P
208+ let S = Q
207209 $Tuple3("WAVES", "WAVES", 8)
208210 }
209211 else throw("Match error")
210212 }
211213
212214
213-func at (au) = if ((au == "WAVES"))
215+func au (av) = if ((av == "WAVES"))
214216 then $Tuple3("WAVES", "WAVES", 8)
215217 else {
216- let ar = au
217- let Q = fromBase58String(au)
218- let as = valueOrErrorMessage(assetInfo(Q), (("Asset " + ar) + " doesn't exist"))
219- $Tuple3(ar, as.name, as.decimals)
218+ let as = av
219+ let R = fromBase58String(av)
220+ let at = valueOrErrorMessage(assetInfo(R), (("Asset " + as) + " doesn't exist"))
221+ $Tuple3(as, at.name, at.decimals)
220222 }
221223
222224
223-func av (aw) = [BooleanEntry(c, false), StringEntry(n, aw)]
225+func aw (ax) = [BooleanEntry(c, false), StringEntry(n, ax)]
224226
225227
226-func ax (ay,af) = if ((af == H))
228+func ay (az,ag) = if ((ag == I))
227229 then {
228- let az = (ay - I)
229- if ((0 >= az))
230- then throw((((("Insufficient amount " + toString(ay)) + " to deduct staking fee ") + toString(I)) + " USD-N"))
231- else az
230+ let aA = (az - J)
231+ if ((0 >= aA))
232+ then throw((((("Insufficient amount " + toString(az)) + " to deduct staking fee ") + toString(J)) + " USD-N"))
233+ else aA
232234 }
233- else ay
235+ else az
234236
235237
236-func aA (ay,aB,aC) = throw((((((((("Insufficient DApp balance to pay " + toString(ay)) + " ") + aC) + " due to staking. Available: ") + toString(aB)) + " ") + aC) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
238+func aB (az,aC,aD) = throw((((((((("Insufficient DApp balance to pay " + toString(az)) + " ") + aD) + " due to staking. Available: ") + toString(aC)) + " ") + aD) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
237239
238240
239-func aD (aE,aF) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(aE)) + " ") + O) + " and ") + toString(aF)) + " ") + S) + " due to staking. Available: ") + toString(al)) + " ") + O) + " and ") + toString(am)) + " ") + S) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
241+func aE (aF,aG) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(aF)) + " ") + P) + " and ") + toString(aG)) + " ") + T) + " due to staking. Available: ") + toString(am)) + " ") + P) + " and ") + toString(an)) + " ") + T) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
240242
241243
242-func aG () = av(((((((((((((((("Suspicious state. Actual balances: " + toString(T)) + " ") + O) + ", ") + toString(U)) + " ") + S) + ". State: ") + toString(an)) + " ") + O) + ", ") + toString(ao)) + " ") + S))
244+func aH () = aw(((((((((((((((("Suspicious state. Actual balances: " + toString(ao)) + " ") + P) + ", ") + toString(ap)) + " ") + T) + ". State: ") + toString(U)) + " ") + P) + ", ") + toString(V)) + " ") + T))
243245
244246
245-@Callable(aH)
246-func init (aI) = {
247- let aJ = $Tuple2(aH.payments[0].amount, aH.payments[0].assetId)
248- let aK = aJ._1
249- let aL = aJ._2
250- let aM = $Tuple2(aH.payments[1].amount, aH.payments[1].assetId)
251- let aN = aM._1
252- let aO = aM._2
253- let aP = aq(aL)
254- let aQ = aP._1
255- let aR = aP._2
256- let aS = aP._3
257- let aT = aq(aO)
258- let aU = aT._1
259- let aV = aT._2
260- let aW = aT._3
261- if (!(containsElement([v, w, x, z], aH.callerPublicKey)))
247+@Callable(aI)
248+func init (aJ) = {
249+ let aK = $Tuple2(aI.payments[0].amount, aI.payments[0].assetId)
250+ let aL = aK._1
251+ let aM = aK._2
252+ let aN = $Tuple2(aI.payments[1].amount, aI.payments[1].assetId)
253+ let aO = aN._1
254+ let aP = aN._2
255+ let aQ = ar(aM)
256+ let aR = aQ._1
257+ let aS = aQ._2
258+ let aT = aQ._3
259+ let aU = ar(aP)
260+ let aV = aU._1
261+ let aW = aU._2
262+ let aX = aU._3
263+ if (!(containsElement([v, w, x, z], aI.callerPublicKey)))
262264 then throw("Only admin can call this function")
263265 else if (isDefined(getBoolean(this, c)))
264266 then throw("DApp is already active")
265- else if ((aL == aO))
267+ else if ((aM == aP))
266268 then throw("Assets must be different")
267269 else {
268- let aX = ((("s" + take(aR, 7)) + "_") + take(aV, 7))
269- let aY = ((((("ShareToken of SwopFi protocol for " + aR) + " and ") + aV) + " at address ") + toString(this))
270- let aZ = ((aS + aW) / 2)
271- let ba = fraction(pow(aK, aS, 5, 1, aS, HALFDOWN), pow(aN, aW, 5, 1, aW, HALFDOWN), pow(10, 0, aZ, 0, 0, HALFDOWN))
272- let bb = Issue(aX, aY, ba, aZ, true)
273- let bc = calculateAssetId(bb)
274- let bd = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aQ), StringEntry(e, aU), IntegerEntry(f, aK), IntegerEntry(g, aN), IntegerEntry(l, X), IntegerEntry(m, Z), bb, StringEntry(j, toBase58String(bc)), IntegerEntry(k, ba), ScriptTransfer(aH.caller, ba, bc)]
275- if (aI)
276- then (bd ++ [BooleanEntry(o, aI), IntegerEntry(p, (E + (G * F)))])
277- else bd
270+ let aY = ((("s" + take(aS, 7)) + "_") + take(aW, 7))
271+ let aZ = ((((("ShareToken of SwopFi protocol for " + aS) + " and ") + aW) + " at address ") + toString(this))
272+ let ba = ((aT + aX) / 2)
273+ let bb = fraction(pow(aL, aT, 5, 1, aT, HALFDOWN), pow(aO, aX, 5, 1, aX, HALFDOWN), pow(10, 0, ba, 0, 0, HALFDOWN))
274+ let bc = Issue(aY, aZ, bb, ba, true)
275+ let bd = calculateAssetId(bc)
276+ let be = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aR), StringEntry(e, aV), IntegerEntry(f, aL), IntegerEntry(g, aO), IntegerEntry(l, Y), IntegerEntry(m, aa), bc, StringEntry(j, toBase58String(bd)), IntegerEntry(k, bb), ScriptTransfer(aI.caller, bb, bd)]
277+ if (aJ)
278+ then (be ++ [BooleanEntry(o, aJ), IntegerEntry(p, (F + (H * G)))])
279+ else be
278280 }
279281 }
280282
281283
282284
283-@Callable(aH)
284-func initWithInitRatio (be,bf,K,L,aI) = {
285- let bg = at(K)
286- let aQ = bg._1
287- let aR = bg._2
288- let aS = bg._3
289- let bh = at(L)
290- let aU = bh._1
291- let aV = bh._2
292- let aW = bh._3
293- if (!(containsElement([v, w, x, z], aH.callerPublicKey)))
285+@Callable(aI)
286+func initWithInitRatio (bf,bg,L,M,aJ) = {
287+ let bh = au(L)
288+ let aR = bh._1
289+ let aS = bh._2
290+ let aT = bh._3
291+ let bi = au(M)
292+ let aV = bi._1
293+ let aW = bi._2
294+ let aX = bi._3
295+ if (!(containsElement([v, w, x, z], aI.callerPublicKey)))
294296 then throw("Only admin can call this function")
295297 else if (isDefined(getBoolean(this, c)))
296298 then throw("DApp is already active")
297- else if ((K == L))
299+ else if ((L == M))
298300 then throw("Assets must be different")
299301 else {
300- let aX = ((("s" + take(aR, 7)) + "_") + take(aV, 7))
301- let aY = ((((("ShareToken of SwopFi protocol for " + aR) + " and ") + aV) + " at address ") + toString(this))
302- let aZ = ((aS + aW) / 2)
303- let ba = 0
304- let bb = Issue(aX, aY, ba, aZ, true)
305- let bc = calculateAssetId(bb)
306- let bd = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aQ), StringEntry(e, aU), IntegerEntry(h, be), IntegerEntry(i, bf), IntegerEntry(f, 0), IntegerEntry(g, 0), IntegerEntry(l, X), IntegerEntry(m, Z), bb, StringEntry(j, toBase58String(bc)), IntegerEntry(k, ba)]
307- if (aI)
308- then (bd ++ [BooleanEntry(o, aI), IntegerEntry(p, (E + (G * F)))])
309- else bd
302+ let aY = ((("s" + take(aS, 7)) + "_") + take(aW, 7))
303+ let aZ = ((((("ShareToken of SwopFi protocol for " + aS) + " and ") + aW) + " at address ") + toString(this))
304+ let ba = ((aT + aX) / 2)
305+ let bb = 0
306+ let bc = Issue(aY, aZ, bb, ba, true)
307+ let bd = calculateAssetId(bc)
308+ let be = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aR), StringEntry(e, aV), IntegerEntry(h, bf), IntegerEntry(i, bg), IntegerEntry(f, 0), IntegerEntry(g, 0), IntegerEntry(l, Y), IntegerEntry(m, aa), bc, StringEntry(j, toBase58String(bd)), IntegerEntry(k, bb)]
309+ if (aJ)
310+ then (be ++ [BooleanEntry(o, aJ), IntegerEntry(p, (F + (H * G)))])
311+ else be
310312 }
311313 }
312314
313315
314316
315-@Callable(aH)
316-func keepLimitForFirstHarvest (bi) = if (!(J))
317+@Callable(aI)
318+func keepLimitForFirstHarvest (bj) = if (!(K))
317319 then throw("DApp is inactive at this moment")
318- else if (!(containsElement([v, w, x, z], aH.callerPublicKey)))
320+ else if (!(containsElement([v, w, x, z], aI.callerPublicKey)))
319321 then throw("Only admin can call this function")
320- else [IntegerEntry(q, bi)]
322+ else [IntegerEntry(q, bj)]
321323
322324
323325
324-@Callable(aH)
325-func replenishWithTwoTokens (bj) = {
326- let aL = aH.payments[0].assetId
327- let aO = aH.payments[1].assetId
328- let aK = ax(aH.payments[0].amount, aL)
329- let aN = ax(aH.payments[1].amount, aO)
330- if (if ((T == 0))
331- then (U == 0)
326+@Callable(aI)
327+func replenishWithTwoTokens (bk) = {
328+ let aM = aI.payments[0].assetId
329+ let aP = aI.payments[1].assetId
330+ let aL = ay(aI.payments[0].amount, aM)
331+ let aO = ay(aI.payments[1].amount, aP)
332+ if (if ((U == 0))
333+ then (V == 0)
332334 else false)
333335 then {
334- let bk = aq(aL)
335- let aQ = bk._1
336- let aR = bk._2
337- let aS = bk._3
338- let bl = aq(aO)
339- let aU = bl._1
340- let aV = bl._2
341- let aW = bl._3
342- let bm = fraction(fraction(aj, ab, aK), aa, fraction(ak, ab, aN))
343- if ((aL == aO))
336+ let bl = ar(aM)
337+ let aR = bl._1
338+ let aS = bl._2
339+ let aT = bl._3
340+ let bm = ar(aP)
341+ let aV = bm._1
342+ let aW = bm._2
343+ let aX = bm._3
344+ let bn = fraction(fraction(ak, ac, aL), ab, fraction(al, ac, aO))
345+ if ((aM == aP))
344346 then throw("Assets must be different")
345347 else {
346- let aZ = ((aS + aW) / 2)
347- let ba = fraction(pow(aK, aS, 5, 1, aS, HALFDOWN), pow(aN, aW, 5, 1, aW, HALFDOWN), pow(10, 0, aZ, 0, 0, HALFDOWN))
348- if (!(J))
348+ let ba = ((aT + aX) / 2)
349+ let bb = fraction(pow(aL, aT, 5, 1, aT, HALFDOWN), pow(aO, aX, 5, 1, aX, HALFDOWN), pow(10, 0, ba, 0, 0, HALFDOWN))
350+ if (!(K))
349351 then throw("DApp is inactive at this moment")
350- else if (if ((0 > bj))
352+ else if (if ((0 > bk))
351353 then true
352- else (bj > ac))
353- then throw(((("Slippage tolerance must be between 0 and " + toString(ac)) + " inclusively. Actual: ") + toString(bj)))
354- else if ((size(aH.payments) != 2))
354+ else (bk > ad))
355+ then throw(((("Slippage tolerance must be between 0 and " + toString(ad)) + " inclusively. Actual: ") + toString(bk)))
356+ else if ((size(aI.payments) != 2))
355357 then throw("Two attached assets expected")
356- else if (if ((((aa * (ac - bj)) / ac) > bm))
358+ else if (if ((((ab * (ad - bk)) / ad) > bn))
357359 then true
358- else (bm > ((aa * (ac + bj)) / ac)))
360+ else (bn > ((ab * (ad + bk)) / ad)))
359361 then throw("Incorrect assets amount: amounts must have the contract ratio")
360- else if (if ((aL != M))
362+ else if (if ((aM != N))
361363 then true
362- else (aO != N))
363- then throw(((("Incorrect assets attached. Expected: " + K) + " and ") + L))
364- else if ((ba == 0))
364+ else (aP != O))
365+ then throw(((("Incorrect assets attached. Expected: " + L) + " and ") + M))
366+ else if ((bb == 0))
365367 then throw("Too small amount to replenish")
366- else if (!(ap))
367- then ([ScriptTransfer(aH.caller, aK, aL), ScriptTransfer(aH.caller, aN, aO)] ++ aG())
368- else [Reissue(V, ba, true), IntegerEntry(f, aK), IntegerEntry(g, aN), IntegerEntry(k, ba), ScriptTransfer(aH.caller, ba, V)]
368+ else if (!(aq))
369+ then ([ScriptTransfer(aI.caller, aL, aM), ScriptTransfer(aI.caller, aO, aP)] ++ aH())
370+ else [Reissue(W, bb, true), IntegerEntry(f, aL), IntegerEntry(g, aO), IntegerEntry(k, bb), ScriptTransfer(aI.caller, bb, W)]
369371 }
370372 }
371373 else {
372- let bm = fraction(fraction(T, ab, aK), aa, fraction(U, ab, aN))
373- let bn = fraction(aK, ab, T)
374- let bo = fraction(aN, ab, U)
375- let bp = fraction(min([bn, bo]), W, ab)
376- if (!(J))
374+ let bn = fraction(fraction(U, ac, aL), ab, fraction(V, ac, aO))
375+ let bo = fraction(aL, ac, U)
376+ let bp = fraction(aO, ac, V)
377+ let bq = fraction(min([bo, bp]), X, ac)
378+ if (!(K))
377379 then throw("DApp is inactive at this moment")
378- else if (if ((0 > bj))
380+ else if (if ((0 > bk))
379381 then true
380- else (bj > ac))
381- then throw(((("Slippage tolerance must be between 0 and " + toString(ac)) + " inclusively. Actual: ") + toString(bj)))
382- else if ((size(aH.payments) != 2))
382+ else (bk > ad))
383+ then throw(((("Slippage tolerance must be between 0 and " + toString(ad)) + " inclusively. Actual: ") + toString(bk)))
384+ else if ((size(aI.payments) != 2))
383385 then throw("Two attached assets expected")
384- else if (if ((aL != M))
386+ else if (if ((aM != N))
385387 then true
386- else (aO != N))
387- then throw(((("Incorrect assets attached. Expected: " + K) + " and ") + L))
388- else if (if ((((aa * (ac - bj)) / ac) > bm))
388+ else (aP != O))
389+ then throw(((("Incorrect assets attached. Expected: " + L) + " and ") + M))
390+ else if (if ((((ab * (ad - bk)) / ad) > bn))
389391 then true
390- else (bm > ((aa * (ac + bj)) / ac)))
392+ else (bn > ((ab * (ad + bk)) / ad)))
391393 then throw("Incorrect assets amount: amounts must have the contract ratio")
392- else if ((bp == 0))
394+ else if ((bq == 0))
393395 then throw("Too small amount to replenish")
394- else if (!(ap))
395- then ([ScriptTransfer(aH.caller, aK, aL), ScriptTransfer(aH.caller, aN, aO)] ++ aG())
396- else [IntegerEntry(f, (T + aK)), IntegerEntry(g, (U + aN)), IntegerEntry(k, (W + bp)), Reissue(V, bp, true), ScriptTransfer(aH.caller, bp, V)]
396+ else if (!(aq))
397+ then ([ScriptTransfer(aI.caller, aL, aM), ScriptTransfer(aI.caller, aO, aP)] ++ aH())
398+ else [IntegerEntry(f, (U + aL)), IntegerEntry(g, (V + aO)), IntegerEntry(k, (X + bq)), Reissue(W, bq, true), ScriptTransfer(aI.caller, bq, W)]
397399 }
398400 }
399401
400402
401403
402-@Callable(aH)
404+@Callable(aI)
403405 func withdraw () = {
404- let bq = $Tuple2(aH.payments[0].amount, aH.payments[0].assetId)
405- let br = bq._1
406- let bs = bq._2
407- let bt = ax(fraction(br, T, W), M)
408- let bu = ax(fraction(br, U, W), N)
409- if (!(J))
406+ let br = $Tuple2(aI.payments[0].amount, aI.payments[0].assetId)
407+ let bs = br._1
408+ let bt = br._2
409+ let bu = ay(fraction(bs, U, X), N)
410+ let bv = ay(fraction(bs, V, X), O)
411+ if (!(K))
410412 then throw("DApp is inactive at this moment")
411- else if ((size(aH.payments) != 1))
413+ else if ((size(aI.payments) != 1))
412414 then throw("One attached payment expected")
413- else if ((bs != V))
414- then throw(("Incorrect asset attached. Expected: " + toBase58String(V)))
415- else if (!(ap))
416- then ([ScriptTransfer(aH.caller, br, bs)] ++ aG())
417- else if (if ((bt > al))
415+ else if ((bt != W))
416+ then throw(("Incorrect asset attached. Expected: " + toBase58String(W)))
417+ else if (!(aq))
418+ then ([ScriptTransfer(aI.caller, bs, bt)] ++ aH())
419+ else if (if ((bu > am))
418420 then true
419- else (bu > am))
420- then aD(bt, bu)
421- else [IntegerEntry(f, (T - bt)), IntegerEntry(g, (U - bu)), IntegerEntry(k, (W - br)), Burn(V, br), ScriptTransfer(aH.caller, bt, M), ScriptTransfer(aH.caller, bu, N)]
421+ else (bv > an))
422+ then aE(bu, bv)
423+ else [IntegerEntry(f, (U - bu)), IntegerEntry(g, (V - bv)), IntegerEntry(k, (X - bs)), Burn(W, bs), ScriptTransfer(aI.caller, bu, N), ScriptTransfer(aI.caller, bv, O)]
422424 }
423425
424426
425427
426-@Callable(aH)
427-func exchange (bv) = {
428- let bw = $Tuple2(aH.payments[0].amount, aH.payments[0].assetId)
429- let br = bw._1
430- let bs = bw._2
431- func bx (by,bz) = {
432- let bA = fraction(bz, br, (br + by))
433- let bB = fraction(bA, (Z - X), Z)
434- let bC = fraction(bA, Y, Z)
435- if ((bv > bB))
436- then throw(((("Calculated amount to receive " + toString(bB)) + " is less than specified minimum ") + toString(bv)))
437- else $Tuple3(bA, bB, bC)
428+@Callable(aI)
429+func exchange (bw) = {
430+ let bx = $Tuple2(aI.payments[0].amount, aI.payments[0].assetId)
431+ let bs = bx._1
432+ let bt = bx._2
433+ func by (bz,bA) = {
434+ let bB = fraction(bA, bs, (bs + bz))
435+ let bC = fraction(bB, (aa - Y), aa)
436+ let bD = fraction(bB, Z, aa)
437+ if ((bw > bC))
438+ then throw(((("Calculated amount to receive " + toString(bC)) + " is less than specified minimum ") + toString(bw)))
439+ else $Tuple3(bB, bC, bD)
438440 }
439441
440- if (!(J))
442+ if (!(K))
441443 then throw("DApp is inactive at this moment")
442- else if (if ((T == 0))
444+ else if (if ((U == 0))
443445 then true
444- else (U == 0))
446+ else (V == 0))
445447 then throw("Can't exchange with zero balance")
446- else if ((0 >= bv))
447- then throw(("Minimal amount to receive must be positive. Actual: " + toString(bv)))
448- else if ((size(aH.payments) != 1))
448+ else if ((0 >= bw))
449+ then throw(("Minimal amount to receive must be positive. Actual: " + toString(bw)))
450+ else if ((size(aI.payments) != 1))
449451 then throw("One attached payment expected")
450- else if (!(ap))
451- then ([ScriptTransfer(aH.caller, br, bs)] ++ aG())
452- else if ((bs == M))
452+ else if (!(aq))
453+ then ([ScriptTransfer(aI.caller, bs, bt)] ++ aH())
454+ else if ((bt == N))
453455 then {
454- let bD = N
455- let bE = bx(T, U)
456- let bA = bE._1
457- let bB = bE._2
458- let bC = bE._3
459- let bF = (T + br)
460- let bG = ((U - bB) - bC)
461- if (if (if ((M == H))
462- then (ag >= bF)
456+ let bE = O
457+ let bF = by(U, V)
458+ let bB = bF._1
459+ let bC = bF._2
460+ let bD = bF._3
461+ let bG = (U + bs)
462+ let bH = ((V - bC) - bD)
463+ if (if (if ((N == I))
464+ then (ah >= bG)
463465 else false)
464466 then true
465- else if ((N == H))
466- then (ag >= bG)
467+ else if ((O == I))
468+ then (ah >= bH)
467469 else false)
468- then aA(bB, am, S)
469- else [IntegerEntry(f, bF), IntegerEntry(g, bG), ScriptTransfer(aH.caller, bB, bD), ScriptTransfer(A, bC, bD)]
470+ then aB(bC, an, T)
471+ else [IntegerEntry(f, bG), IntegerEntry(g, bH), ScriptTransfer(aI.caller, bC, bE), ScriptTransfer(A, bD, bE)]
470472 }
471- else if ((bs == N))
473+ else if ((bt == O))
472474 then {
473- let bD = M
474- let bH = bx(U, T)
475- let bA = bH._1
476- let bB = bH._2
477- let bC = bH._3
478- let bF = ((T - bB) - bC)
479- let bG = (U + br)
480- if (if (if ((M == H))
481- then (ag >= bF)
475+ let bE = N
476+ let bI = by(V, U)
477+ let bB = bI._1
478+ let bC = bI._2
479+ let bD = bI._3
480+ let bG = ((U - bC) - bD)
481+ let bH = (V + bs)
482+ if (if (if ((N == I))
483+ then (ah >= bG)
482484 else false)
483485 then true
484- else if ((N == H))
485- then (ag >= bG)
486+ else if ((O == I))
487+ then (ah >= bH)
486488 else false)
487- then aA(bB, al, O)
488- else [IntegerEntry(f, bF), IntegerEntry(g, bG), ScriptTransfer(aH.caller, bB, bD), ScriptTransfer(A, bC, bD)]
489+ then aB(bC, am, P)
490+ else [IntegerEntry(f, bG), IntegerEntry(g, bH), ScriptTransfer(aI.caller, bC, bE), ScriptTransfer(A, bD, bE)]
489491 }
490- else throw(((("Incorrect asset attached. Expected: " + K) + " or ") + L))
492+ else throw(((("Incorrect asset attached. Expected: " + L) + " or ") + M))
491493 }
492494
493495
494496
495-@Callable(aH)
496-func shutdown () = if (!(J))
497+@Callable(aI)
498+func shutdown () = if (!(K))
497499 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, n), "the cause wasn't specified")))
498- else if (!(containsElement([v, w, x, y], aH.callerPublicKey)))
500+ else if (!(containsElement([v, w, x, y], aI.callerPublicKey)))
499501 then throw("Only admin can call this function")
500- else av("Paused by admin")
502+ else aw("Paused by admin")
501503
502504
503505
504-@Callable(aH)
505-func activate () = if (J)
506+@Callable(aI)
507+func activate () = if (K)
506508 then throw("DApp is already active")
507- else if (!(containsElement([v, w, x, y], aH.callerPublicKey)))
509+ else if (!(containsElement([v, w, x, y], aI.callerPublicKey)))
508510 then throw("Only admin can call this function")
509511 else [BooleanEntry(c, true), DeleteEntry(n)]
510512
511513
512514
513-@Callable(aH)
514-func takeIntoAccountExtraFunds (bI) = {
515- let bJ = (an - T)
515+@Callable(aI)
516+func takeIntoAccountExtraFunds (bJ) = {
516517 let bK = (ao - U)
517- let bL = (bJ - (if ((M == unit))
518- then bI
518+ let bL = (ap - V)
519+ let bM = (bK - (if ((N == unit))
520+ then bJ
519521 else 0))
520- let bM = (bK - (if ((N == unit))
521- then bI
522+ let bN = (bL - (if ((O == unit))
523+ then bJ
522524 else 0))
523- if (!(J))
525+ if (!(K))
524526 then throw("DApp is inactive at this moment")
525- else if ((aH.caller != this))
527+ else if ((aI.caller != this))
526528 then throw("Only the DApp itself can call this function")
527- else if ((0 > bI))
528- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bI)))
529- else if (if ((0 > bJ))
529+ else if ((0 > bJ))
530+ then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bJ)))
531+ else if (if ((0 > bK))
530532 then true
531- else (0 > bK))
532- then av("Enroll amount negative")
533- else if (if ((0 > bL))
533+ else (0 > bL))
534+ then aw("Enroll amount negative")
535+ else if (if ((0 > bM))
534536 then true
535- else (0 > bM))
537+ else (0 > bN))
536538 then throw("Too large amountLeave")
537- else [IntegerEntry(f, (T + bL)), IntegerEntry(g, (U + bM)), IntegerEntry(("last_income_" + K), bL), IntegerEntry(("last_income_" + L), bM)]
539+ else [IntegerEntry(f, (U + bM)), IntegerEntry(g, (V + bN)), IntegerEntry(("last_income_" + L), bM), IntegerEntry(("last_income_" + M), bN)]
538540 }
539541
540542
541-@Verifier(bN)
542-func bO () = {
543- let P = bN
544- if ($isInstanceOf(P, "InvokeScriptTransaction"))
543+@Verifier(bO)
544+func bP () = {
545+ let Q = bO
546+ if ($isInstanceOf(Q, "InvokeScriptTransaction"))
545547 then {
546- let bP = P
547- let bQ = if ((bP.dApp == this))
548- then (bP.function == "takeIntoAccountExtraFunds")
548+ let bQ = Q
549+ let bR = if ((bQ.dApp == this))
550+ then (bQ.function == "takeIntoAccountExtraFunds")
549551 else false
550- let bR = if ((bP.dApp == C))
551- then if (if (if ((bP.function == "startStaking"))
552- then (size(bP.payments) == 1)
552+ let bS = if ((bQ.dApp == C))
553+ then if (if (if ((bQ.function == "startStaking"))
554+ then (size(bQ.payments) == 1)
553555 else false)
554- then (bP.payments[0].assetId == H)
556+ then (bQ.payments[0].assetId == I)
555557 else false)
556558 then true
557- else if ((bP.function == "stopStaking"))
558- then (size(bP.payments) == 0)
559+ else if ((bQ.function == "stopStaking"))
560+ then (size(bQ.payments) == 0)
559561 else false
560562 else false
561- let bS = if (if (if (sigVerify(bN.bodyBytes, bN.proofs[0], v))
563+ let bT = if (if (if ((bQ.dApp == D))
564+ then (bQ.function == "exchange")
565+ else false)
566+ then (N == I)
567+ else false)
562568 then true
563- else sigVerify(bN.bodyBytes, bN.proofs[0], w))
569+ else if ((O == I))
570+ then (bQ.payments[0].assetId == I)
571+ else false
572+ let bU = if (if (if (sigVerify(bO.bodyBytes, bO.proofs[0], v))
564573 then true
565- else sigVerify(bN.bodyBytes, bN.proofs[0], x))
574+ else sigVerify(bO.bodyBytes, bO.proofs[0], w))
566575 then true
567- else sigVerify(bN.bodyBytes, bN.proofs[0], z)
568- if (if (bQ)
576+ else sigVerify(bO.bodyBytes, bO.proofs[0], x))
569577 then true
570- else bR)
571- then bS
578+ else sigVerify(bO.bodyBytes, bO.proofs[0], z)
579+ if (if (if (bR)
580+ then true
581+ else bS)
582+ then true
583+ else bT)
584+ then bU
572585 else false
573586 }
574587 else {
575- let bT = if (sigVerify(bN.bodyBytes, bN.proofs[0], v))
588+ let bV = if (sigVerify(bO.bodyBytes, bO.proofs[0], v))
576589 then 1
577590 else 0
578- let bU = if (sigVerify(bN.bodyBytes, bN.proofs[1], w))
591+ let bW = if (sigVerify(bO.bodyBytes, bO.proofs[1], w))
579592 then 1
580593 else 0
581- let bV = if (sigVerify(bN.bodyBytes, bN.proofs[2], x))
594+ let bX = if (sigVerify(bO.bodyBytes, bO.proofs[2], x))
582595 then 1
583596 else 0
584- (((bT + bU) + bV) >= 2)
597+ (((bV + bW) + bX) >= 2)
585598 }
586599 }
587600
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "1.0.0"
55
66 let b = "version"
77
88 let c = "active"
99
1010 let d = "A_asset_id"
1111
1212 let e = "B_asset_id"
1313
1414 let f = "A_asset_balance"
1515
1616 let g = "B_asset_balance"
1717
1818 let h = "A_asset_init"
1919
2020 let i = "B_asset_init"
2121
2222 let j = "share_asset_id"
2323
2424 let k = "share_asset_supply"
2525
2626 let l = "commission"
2727
2828 let m = "commission_scale_delimiter"
2929
3030 let n = "shutdown_cause"
3131
3232 let o = "first_harvest"
3333
3434 let p = "first_harvest_height"
3535
3636 let q = "share_limit_on_first_harvest"
3737
3838 let r = "base_period"
3939
4040 let s = "period_length"
4141
4242 let t = "start_height"
4343
4444 let u = "first_harvest_height"
4545
4646 let v = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
4747
4848 let w = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
4949
5050 let x = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
5151
5252 let y = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
5353
5454 let z = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
5555
5656 let A = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
5757
5858 let B = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
5959
6060 let C = Address(base58'3MyVqAbmKWh339gF6hy8faWw1jGeTV2wnGE')
6161
62-let D = valueOrErrorMessage(getInteger(B, r), "Empty kBasePeriod")
62+let D = Address(base58'3MqsiNaG42muSdN4QxfMQqiwCWccvH368W2')
6363
64-let E = valueOrErrorMessage(getInteger(B, t), "Empty kStartHeight")
64+let E = valueOrErrorMessage(getInteger(B, r), "Empty kBasePeriod")
6565
66-let F = valueOrErrorMessage(getInteger(B, s), "Empty kPeriodLength")
66+let F = valueOrErrorMessage(getInteger(B, t), "Empty kStartHeight")
6767
68-let G = ((D + ((height - E) / F)) + 3)
68+let G = valueOrErrorMessage(getInteger(B, s), "Empty kPeriodLength")
6969
70-let H = base58'ECBCkHS68DckpBrzLeoRgYbFg7sCVqR176mPqbXsj9pA'
70+let H = ((E + ((height - F) / G)) + 3)
7171
72-let I = 234000
72+let I = base58'ECBCkHS68DckpBrzLeoRgYbFg7sCVqR176mPqbXsj9pA'
7373
74-let J = getBooleanValue(this, c)
74+let J = 234000
7575
76-let K = getStringValue(this, d)
76+let K = getBooleanValue(this, c)
7777
78-let L = getStringValue(this, e)
78+let L = getStringValue(this, d)
7979
80-let M = if ((K == "WAVES"))
81- then unit
82- else fromBase58String(K)
80+let M = getStringValue(this, e)
8381
8482 let N = if ((L == "WAVES"))
8583 then unit
8684 else fromBase58String(L)
8785
88-let O = {
89- let P = M
90- if ($isInstanceOf(P, "ByteVector"))
86+let O = if ((M == "WAVES"))
87+ then unit
88+ else fromBase58String(M)
89+
90+let P = {
91+ let Q = N
92+ if ($isInstanceOf(Q, "ByteVector"))
9193 then {
92- let Q = P
93- value(assetInfo(Q)).name
94+ let R = Q
95+ value(assetInfo(R)).name
9496 }
95- else if ($isInstanceOf(P, "Unit"))
97+ else if ($isInstanceOf(Q, "Unit"))
9698 then {
97- let R = P
99+ let S = Q
98100 "WAVES"
99101 }
100102 else throw("Match error")
101103 }
102104
103-let S = {
104- let P = N
105- if ($isInstanceOf(P, "ByteVector"))
105+let T = {
106+ let Q = O
107+ if ($isInstanceOf(Q, "ByteVector"))
106108 then {
107- let Q = P
108- value(assetInfo(Q)).name
109+ let R = Q
110+ value(assetInfo(R)).name
109111 }
110- else if ($isInstanceOf(P, "Unit"))
112+ else if ($isInstanceOf(Q, "Unit"))
111113 then {
112- let R = P
114+ let S = Q
113115 "WAVES"
114116 }
115117 else throw("Match error")
116118 }
117119
118-let T = getIntegerValue(this, f)
120+let U = getIntegerValue(this, f)
119121
120-let U = getIntegerValue(this, g)
122+let V = getIntegerValue(this, g)
121123
122-let V = fromBase58String(getStringValue(this, j))
124+let W = fromBase58String(getStringValue(this, j))
123125
124-let W = getIntegerValue(this, k)
126+let X = getIntegerValue(this, k)
125127
126-let X = 3000
128+let Y = 3000
127129
128-let Y = 1200
130+let Z = 1200
129131
130-let Z = 1000000
132+let aa = 1000000
131133
132-let aa = 1000
134+let ab = 1000
133135
134-let ab = 100000000
136+let ac = 100000000
135137
136-let ac = 1000
138+let ad = 1000
137139
138-let ad = 8
140+let ae = 8
139141
140-func ae (af) = {
141- let P = af
142- if ($isInstanceOf(P, "ByteVector"))
142+func af (ag) = {
143+ let Q = ag
144+ if ($isInstanceOf(Q, "ByteVector"))
143145 then {
144- let Q = P
145- assetBalance(this, Q)
146+ let R = Q
147+ assetBalance(this, R)
146148 }
147- else if ($isInstanceOf(P, "Unit"))
149+ else if ($isInstanceOf(Q, "Unit"))
148150 then {
149- let R = P
151+ let S = Q
150152 wavesBalance(this).available
151153 }
152154 else throw("Match error")
153155 }
154156
155157
156-let ag = {
157- let P = getInteger(C, ((("%s%s%s__stakingBalance__" + toBase58String(H)) + "__") + toString(this)))
158- if ($isInstanceOf(P, "Int"))
158+let ah = {
159+ let Q = getInteger(C, ((("%s%s%s__stakingBalance__" + toBase58String(I)) + "__") + toString(this)))
160+ if ($isInstanceOf(Q, "Int"))
159161 then {
160- let ah = P
161- ah
162+ let ai = Q
163+ ai
162164 }
163- else if ($isInstanceOf(P, "Unit"))
165+ else if ($isInstanceOf(Q, "Unit"))
164166 then {
165- let ai = P
167+ let aj = Q
166168 0
167169 }
168170 else throw("Match error")
169171 }
170172
171-let aj = getIntegerValue(this, h)
173+let ak = getIntegerValue(this, h)
172174
173-let ak = getIntegerValue(this, i)
175+let al = getIntegerValue(this, i)
174176
175-let al = (T - (if ((M == H))
176- then ag
177+let am = (U - (if ((N == I))
178+ then ah
177179 else 0))
178180
179-let am = (U - (if ((N == H))
180- then ag
181+let an = (V - (if ((O == I))
182+ then ah
181183 else 0))
182184
183-let an = (ae(M) + (if ((M == H))
184- then ag
185+let ao = (af(N) + (if ((N == I))
186+ then ah
185187 else 0))
186188
187-let ao = (ae(N) + (if ((N == H))
188- then ag
189+let ap = (af(O) + (if ((O == I))
190+ then ah
189191 else 0))
190192
191-let ap = if ((an >= T))
192- then (ao >= U)
193+let aq = if ((ao >= U))
194+ then (ap >= V)
193195 else false
194196
195-func aq (af) = {
196- let P = af
197- if ($isInstanceOf(P, "ByteVector"))
197+func ar (ag) = {
198+ let Q = ag
199+ if ($isInstanceOf(Q, "ByteVector"))
198200 then {
199- let Q = P
200- let ar = toBase58String(Q)
201- let as = valueOrErrorMessage(assetInfo(Q), (("Asset " + ar) + " doesn't exist"))
202- $Tuple3(ar, as.name, as.decimals)
201+ let R = Q
202+ let as = toBase58String(R)
203+ let at = valueOrErrorMessage(assetInfo(R), (("Asset " + as) + " doesn't exist"))
204+ $Tuple3(as, at.name, at.decimals)
203205 }
204- else if ($isInstanceOf(P, "Unit"))
206+ else if ($isInstanceOf(Q, "Unit"))
205207 then {
206- let R = P
208+ let S = Q
207209 $Tuple3("WAVES", "WAVES", 8)
208210 }
209211 else throw("Match error")
210212 }
211213
212214
213-func at (au) = if ((au == "WAVES"))
215+func au (av) = if ((av == "WAVES"))
214216 then $Tuple3("WAVES", "WAVES", 8)
215217 else {
216- let ar = au
217- let Q = fromBase58String(au)
218- let as = valueOrErrorMessage(assetInfo(Q), (("Asset " + ar) + " doesn't exist"))
219- $Tuple3(ar, as.name, as.decimals)
218+ let as = av
219+ let R = fromBase58String(av)
220+ let at = valueOrErrorMessage(assetInfo(R), (("Asset " + as) + " doesn't exist"))
221+ $Tuple3(as, at.name, at.decimals)
220222 }
221223
222224
223-func av (aw) = [BooleanEntry(c, false), StringEntry(n, aw)]
225+func aw (ax) = [BooleanEntry(c, false), StringEntry(n, ax)]
224226
225227
226-func ax (ay,af) = if ((af == H))
228+func ay (az,ag) = if ((ag == I))
227229 then {
228- let az = (ay - I)
229- if ((0 >= az))
230- then throw((((("Insufficient amount " + toString(ay)) + " to deduct staking fee ") + toString(I)) + " USD-N"))
231- else az
230+ let aA = (az - J)
231+ if ((0 >= aA))
232+ then throw((((("Insufficient amount " + toString(az)) + " to deduct staking fee ") + toString(J)) + " USD-N"))
233+ else aA
232234 }
233- else ay
235+ else az
234236
235237
236-func aA (ay,aB,aC) = throw((((((((("Insufficient DApp balance to pay " + toString(ay)) + " ") + aC) + " due to staking. Available: ") + toString(aB)) + " ") + aC) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
238+func aB (az,aC,aD) = throw((((((((("Insufficient DApp balance to pay " + toString(az)) + " ") + aD) + " due to staking. Available: ") + toString(aC)) + " ") + aD) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
237239
238240
239-func aD (aE,aF) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(aE)) + " ") + O) + " and ") + toString(aF)) + " ") + S) + " due to staking. Available: ") + toString(al)) + " ") + O) + " and ") + toString(am)) + " ") + S) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
241+func aE (aF,aG) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(aF)) + " ") + P) + " and ") + toString(aG)) + " ") + T) + " due to staking. Available: ") + toString(am)) + " ") + P) + " and ") + toString(an)) + " ") + T) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
240242
241243
242-func aG () = av(((((((((((((((("Suspicious state. Actual balances: " + toString(T)) + " ") + O) + ", ") + toString(U)) + " ") + S) + ". State: ") + toString(an)) + " ") + O) + ", ") + toString(ao)) + " ") + S))
244+func aH () = aw(((((((((((((((("Suspicious state. Actual balances: " + toString(ao)) + " ") + P) + ", ") + toString(ap)) + " ") + T) + ". State: ") + toString(U)) + " ") + P) + ", ") + toString(V)) + " ") + T))
243245
244246
245-@Callable(aH)
246-func init (aI) = {
247- let aJ = $Tuple2(aH.payments[0].amount, aH.payments[0].assetId)
248- let aK = aJ._1
249- let aL = aJ._2
250- let aM = $Tuple2(aH.payments[1].amount, aH.payments[1].assetId)
251- let aN = aM._1
252- let aO = aM._2
253- let aP = aq(aL)
254- let aQ = aP._1
255- let aR = aP._2
256- let aS = aP._3
257- let aT = aq(aO)
258- let aU = aT._1
259- let aV = aT._2
260- let aW = aT._3
261- if (!(containsElement([v, w, x, z], aH.callerPublicKey)))
247+@Callable(aI)
248+func init (aJ) = {
249+ let aK = $Tuple2(aI.payments[0].amount, aI.payments[0].assetId)
250+ let aL = aK._1
251+ let aM = aK._2
252+ let aN = $Tuple2(aI.payments[1].amount, aI.payments[1].assetId)
253+ let aO = aN._1
254+ let aP = aN._2
255+ let aQ = ar(aM)
256+ let aR = aQ._1
257+ let aS = aQ._2
258+ let aT = aQ._3
259+ let aU = ar(aP)
260+ let aV = aU._1
261+ let aW = aU._2
262+ let aX = aU._3
263+ if (!(containsElement([v, w, x, z], aI.callerPublicKey)))
262264 then throw("Only admin can call this function")
263265 else if (isDefined(getBoolean(this, c)))
264266 then throw("DApp is already active")
265- else if ((aL == aO))
267+ else if ((aM == aP))
266268 then throw("Assets must be different")
267269 else {
268- let aX = ((("s" + take(aR, 7)) + "_") + take(aV, 7))
269- let aY = ((((("ShareToken of SwopFi protocol for " + aR) + " and ") + aV) + " at address ") + toString(this))
270- let aZ = ((aS + aW) / 2)
271- let ba = fraction(pow(aK, aS, 5, 1, aS, HALFDOWN), pow(aN, aW, 5, 1, aW, HALFDOWN), pow(10, 0, aZ, 0, 0, HALFDOWN))
272- let bb = Issue(aX, aY, ba, aZ, true)
273- let bc = calculateAssetId(bb)
274- let bd = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aQ), StringEntry(e, aU), IntegerEntry(f, aK), IntegerEntry(g, aN), IntegerEntry(l, X), IntegerEntry(m, Z), bb, StringEntry(j, toBase58String(bc)), IntegerEntry(k, ba), ScriptTransfer(aH.caller, ba, bc)]
275- if (aI)
276- then (bd ++ [BooleanEntry(o, aI), IntegerEntry(p, (E + (G * F)))])
277- else bd
270+ let aY = ((("s" + take(aS, 7)) + "_") + take(aW, 7))
271+ let aZ = ((((("ShareToken of SwopFi protocol for " + aS) + " and ") + aW) + " at address ") + toString(this))
272+ let ba = ((aT + aX) / 2)
273+ let bb = fraction(pow(aL, aT, 5, 1, aT, HALFDOWN), pow(aO, aX, 5, 1, aX, HALFDOWN), pow(10, 0, ba, 0, 0, HALFDOWN))
274+ let bc = Issue(aY, aZ, bb, ba, true)
275+ let bd = calculateAssetId(bc)
276+ let be = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aR), StringEntry(e, aV), IntegerEntry(f, aL), IntegerEntry(g, aO), IntegerEntry(l, Y), IntegerEntry(m, aa), bc, StringEntry(j, toBase58String(bd)), IntegerEntry(k, bb), ScriptTransfer(aI.caller, bb, bd)]
277+ if (aJ)
278+ then (be ++ [BooleanEntry(o, aJ), IntegerEntry(p, (F + (H * G)))])
279+ else be
278280 }
279281 }
280282
281283
282284
283-@Callable(aH)
284-func initWithInitRatio (be,bf,K,L,aI) = {
285- let bg = at(K)
286- let aQ = bg._1
287- let aR = bg._2
288- let aS = bg._3
289- let bh = at(L)
290- let aU = bh._1
291- let aV = bh._2
292- let aW = bh._3
293- if (!(containsElement([v, w, x, z], aH.callerPublicKey)))
285+@Callable(aI)
286+func initWithInitRatio (bf,bg,L,M,aJ) = {
287+ let bh = au(L)
288+ let aR = bh._1
289+ let aS = bh._2
290+ let aT = bh._3
291+ let bi = au(M)
292+ let aV = bi._1
293+ let aW = bi._2
294+ let aX = bi._3
295+ if (!(containsElement([v, w, x, z], aI.callerPublicKey)))
294296 then throw("Only admin can call this function")
295297 else if (isDefined(getBoolean(this, c)))
296298 then throw("DApp is already active")
297- else if ((K == L))
299+ else if ((L == M))
298300 then throw("Assets must be different")
299301 else {
300- let aX = ((("s" + take(aR, 7)) + "_") + take(aV, 7))
301- let aY = ((((("ShareToken of SwopFi protocol for " + aR) + " and ") + aV) + " at address ") + toString(this))
302- let aZ = ((aS + aW) / 2)
303- let ba = 0
304- let bb = Issue(aX, aY, ba, aZ, true)
305- let bc = calculateAssetId(bb)
306- let bd = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aQ), StringEntry(e, aU), IntegerEntry(h, be), IntegerEntry(i, bf), IntegerEntry(f, 0), IntegerEntry(g, 0), IntegerEntry(l, X), IntegerEntry(m, Z), bb, StringEntry(j, toBase58String(bc)), IntegerEntry(k, ba)]
307- if (aI)
308- then (bd ++ [BooleanEntry(o, aI), IntegerEntry(p, (E + (G * F)))])
309- else bd
302+ let aY = ((("s" + take(aS, 7)) + "_") + take(aW, 7))
303+ let aZ = ((((("ShareToken of SwopFi protocol for " + aS) + " and ") + aW) + " at address ") + toString(this))
304+ let ba = ((aT + aX) / 2)
305+ let bb = 0
306+ let bc = Issue(aY, aZ, bb, ba, true)
307+ let bd = calculateAssetId(bc)
308+ let be = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aR), StringEntry(e, aV), IntegerEntry(h, bf), IntegerEntry(i, bg), IntegerEntry(f, 0), IntegerEntry(g, 0), IntegerEntry(l, Y), IntegerEntry(m, aa), bc, StringEntry(j, toBase58String(bd)), IntegerEntry(k, bb)]
309+ if (aJ)
310+ then (be ++ [BooleanEntry(o, aJ), IntegerEntry(p, (F + (H * G)))])
311+ else be
310312 }
311313 }
312314
313315
314316
315-@Callable(aH)
316-func keepLimitForFirstHarvest (bi) = if (!(J))
317+@Callable(aI)
318+func keepLimitForFirstHarvest (bj) = if (!(K))
317319 then throw("DApp is inactive at this moment")
318- else if (!(containsElement([v, w, x, z], aH.callerPublicKey)))
320+ else if (!(containsElement([v, w, x, z], aI.callerPublicKey)))
319321 then throw("Only admin can call this function")
320- else [IntegerEntry(q, bi)]
322+ else [IntegerEntry(q, bj)]
321323
322324
323325
324-@Callable(aH)
325-func replenishWithTwoTokens (bj) = {
326- let aL = aH.payments[0].assetId
327- let aO = aH.payments[1].assetId
328- let aK = ax(aH.payments[0].amount, aL)
329- let aN = ax(aH.payments[1].amount, aO)
330- if (if ((T == 0))
331- then (U == 0)
326+@Callable(aI)
327+func replenishWithTwoTokens (bk) = {
328+ let aM = aI.payments[0].assetId
329+ let aP = aI.payments[1].assetId
330+ let aL = ay(aI.payments[0].amount, aM)
331+ let aO = ay(aI.payments[1].amount, aP)
332+ if (if ((U == 0))
333+ then (V == 0)
332334 else false)
333335 then {
334- let bk = aq(aL)
335- let aQ = bk._1
336- let aR = bk._2
337- let aS = bk._3
338- let bl = aq(aO)
339- let aU = bl._1
340- let aV = bl._2
341- let aW = bl._3
342- let bm = fraction(fraction(aj, ab, aK), aa, fraction(ak, ab, aN))
343- if ((aL == aO))
336+ let bl = ar(aM)
337+ let aR = bl._1
338+ let aS = bl._2
339+ let aT = bl._3
340+ let bm = ar(aP)
341+ let aV = bm._1
342+ let aW = bm._2
343+ let aX = bm._3
344+ let bn = fraction(fraction(ak, ac, aL), ab, fraction(al, ac, aO))
345+ if ((aM == aP))
344346 then throw("Assets must be different")
345347 else {
346- let aZ = ((aS + aW) / 2)
347- let ba = fraction(pow(aK, aS, 5, 1, aS, HALFDOWN), pow(aN, aW, 5, 1, aW, HALFDOWN), pow(10, 0, aZ, 0, 0, HALFDOWN))
348- if (!(J))
348+ let ba = ((aT + aX) / 2)
349+ let bb = fraction(pow(aL, aT, 5, 1, aT, HALFDOWN), pow(aO, aX, 5, 1, aX, HALFDOWN), pow(10, 0, ba, 0, 0, HALFDOWN))
350+ if (!(K))
349351 then throw("DApp is inactive at this moment")
350- else if (if ((0 > bj))
352+ else if (if ((0 > bk))
351353 then true
352- else (bj > ac))
353- then throw(((("Slippage tolerance must be between 0 and " + toString(ac)) + " inclusively. Actual: ") + toString(bj)))
354- else if ((size(aH.payments) != 2))
354+ else (bk > ad))
355+ then throw(((("Slippage tolerance must be between 0 and " + toString(ad)) + " inclusively. Actual: ") + toString(bk)))
356+ else if ((size(aI.payments) != 2))
355357 then throw("Two attached assets expected")
356- else if (if ((((aa * (ac - bj)) / ac) > bm))
358+ else if (if ((((ab * (ad - bk)) / ad) > bn))
357359 then true
358- else (bm > ((aa * (ac + bj)) / ac)))
360+ else (bn > ((ab * (ad + bk)) / ad)))
359361 then throw("Incorrect assets amount: amounts must have the contract ratio")
360- else if (if ((aL != M))
362+ else if (if ((aM != N))
361363 then true
362- else (aO != N))
363- then throw(((("Incorrect assets attached. Expected: " + K) + " and ") + L))
364- else if ((ba == 0))
364+ else (aP != O))
365+ then throw(((("Incorrect assets attached. Expected: " + L) + " and ") + M))
366+ else if ((bb == 0))
365367 then throw("Too small amount to replenish")
366- else if (!(ap))
367- then ([ScriptTransfer(aH.caller, aK, aL), ScriptTransfer(aH.caller, aN, aO)] ++ aG())
368- else [Reissue(V, ba, true), IntegerEntry(f, aK), IntegerEntry(g, aN), IntegerEntry(k, ba), ScriptTransfer(aH.caller, ba, V)]
368+ else if (!(aq))
369+ then ([ScriptTransfer(aI.caller, aL, aM), ScriptTransfer(aI.caller, aO, aP)] ++ aH())
370+ else [Reissue(W, bb, true), IntegerEntry(f, aL), IntegerEntry(g, aO), IntegerEntry(k, bb), ScriptTransfer(aI.caller, bb, W)]
369371 }
370372 }
371373 else {
372- let bm = fraction(fraction(T, ab, aK), aa, fraction(U, ab, aN))
373- let bn = fraction(aK, ab, T)
374- let bo = fraction(aN, ab, U)
375- let bp = fraction(min([bn, bo]), W, ab)
376- if (!(J))
374+ let bn = fraction(fraction(U, ac, aL), ab, fraction(V, ac, aO))
375+ let bo = fraction(aL, ac, U)
376+ let bp = fraction(aO, ac, V)
377+ let bq = fraction(min([bo, bp]), X, ac)
378+ if (!(K))
377379 then throw("DApp is inactive at this moment")
378- else if (if ((0 > bj))
380+ else if (if ((0 > bk))
379381 then true
380- else (bj > ac))
381- then throw(((("Slippage tolerance must be between 0 and " + toString(ac)) + " inclusively. Actual: ") + toString(bj)))
382- else if ((size(aH.payments) != 2))
382+ else (bk > ad))
383+ then throw(((("Slippage tolerance must be between 0 and " + toString(ad)) + " inclusively. Actual: ") + toString(bk)))
384+ else if ((size(aI.payments) != 2))
383385 then throw("Two attached assets expected")
384- else if (if ((aL != M))
386+ else if (if ((aM != N))
385387 then true
386- else (aO != N))
387- then throw(((("Incorrect assets attached. Expected: " + K) + " and ") + L))
388- else if (if ((((aa * (ac - bj)) / ac) > bm))
388+ else (aP != O))
389+ then throw(((("Incorrect assets attached. Expected: " + L) + " and ") + M))
390+ else if (if ((((ab * (ad - bk)) / ad) > bn))
389391 then true
390- else (bm > ((aa * (ac + bj)) / ac)))
392+ else (bn > ((ab * (ad + bk)) / ad)))
391393 then throw("Incorrect assets amount: amounts must have the contract ratio")
392- else if ((bp == 0))
394+ else if ((bq == 0))
393395 then throw("Too small amount to replenish")
394- else if (!(ap))
395- then ([ScriptTransfer(aH.caller, aK, aL), ScriptTransfer(aH.caller, aN, aO)] ++ aG())
396- else [IntegerEntry(f, (T + aK)), IntegerEntry(g, (U + aN)), IntegerEntry(k, (W + bp)), Reissue(V, bp, true), ScriptTransfer(aH.caller, bp, V)]
396+ else if (!(aq))
397+ then ([ScriptTransfer(aI.caller, aL, aM), ScriptTransfer(aI.caller, aO, aP)] ++ aH())
398+ else [IntegerEntry(f, (U + aL)), IntegerEntry(g, (V + aO)), IntegerEntry(k, (X + bq)), Reissue(W, bq, true), ScriptTransfer(aI.caller, bq, W)]
397399 }
398400 }
399401
400402
401403
402-@Callable(aH)
404+@Callable(aI)
403405 func withdraw () = {
404- let bq = $Tuple2(aH.payments[0].amount, aH.payments[0].assetId)
405- let br = bq._1
406- let bs = bq._2
407- let bt = ax(fraction(br, T, W), M)
408- let bu = ax(fraction(br, U, W), N)
409- if (!(J))
406+ let br = $Tuple2(aI.payments[0].amount, aI.payments[0].assetId)
407+ let bs = br._1
408+ let bt = br._2
409+ let bu = ay(fraction(bs, U, X), N)
410+ let bv = ay(fraction(bs, V, X), O)
411+ if (!(K))
410412 then throw("DApp is inactive at this moment")
411- else if ((size(aH.payments) != 1))
413+ else if ((size(aI.payments) != 1))
412414 then throw("One attached payment expected")
413- else if ((bs != V))
414- then throw(("Incorrect asset attached. Expected: " + toBase58String(V)))
415- else if (!(ap))
416- then ([ScriptTransfer(aH.caller, br, bs)] ++ aG())
417- else if (if ((bt > al))
415+ else if ((bt != W))
416+ then throw(("Incorrect asset attached. Expected: " + toBase58String(W)))
417+ else if (!(aq))
418+ then ([ScriptTransfer(aI.caller, bs, bt)] ++ aH())
419+ else if (if ((bu > am))
418420 then true
419- else (bu > am))
420- then aD(bt, bu)
421- else [IntegerEntry(f, (T - bt)), IntegerEntry(g, (U - bu)), IntegerEntry(k, (W - br)), Burn(V, br), ScriptTransfer(aH.caller, bt, M), ScriptTransfer(aH.caller, bu, N)]
421+ else (bv > an))
422+ then aE(bu, bv)
423+ else [IntegerEntry(f, (U - bu)), IntegerEntry(g, (V - bv)), IntegerEntry(k, (X - bs)), Burn(W, bs), ScriptTransfer(aI.caller, bu, N), ScriptTransfer(aI.caller, bv, O)]
422424 }
423425
424426
425427
426-@Callable(aH)
427-func exchange (bv) = {
428- let bw = $Tuple2(aH.payments[0].amount, aH.payments[0].assetId)
429- let br = bw._1
430- let bs = bw._2
431- func bx (by,bz) = {
432- let bA = fraction(bz, br, (br + by))
433- let bB = fraction(bA, (Z - X), Z)
434- let bC = fraction(bA, Y, Z)
435- if ((bv > bB))
436- then throw(((("Calculated amount to receive " + toString(bB)) + " is less than specified minimum ") + toString(bv)))
437- else $Tuple3(bA, bB, bC)
428+@Callable(aI)
429+func exchange (bw) = {
430+ let bx = $Tuple2(aI.payments[0].amount, aI.payments[0].assetId)
431+ let bs = bx._1
432+ let bt = bx._2
433+ func by (bz,bA) = {
434+ let bB = fraction(bA, bs, (bs + bz))
435+ let bC = fraction(bB, (aa - Y), aa)
436+ let bD = fraction(bB, Z, aa)
437+ if ((bw > bC))
438+ then throw(((("Calculated amount to receive " + toString(bC)) + " is less than specified minimum ") + toString(bw)))
439+ else $Tuple3(bB, bC, bD)
438440 }
439441
440- if (!(J))
442+ if (!(K))
441443 then throw("DApp is inactive at this moment")
442- else if (if ((T == 0))
444+ else if (if ((U == 0))
443445 then true
444- else (U == 0))
446+ else (V == 0))
445447 then throw("Can't exchange with zero balance")
446- else if ((0 >= bv))
447- then throw(("Minimal amount to receive must be positive. Actual: " + toString(bv)))
448- else if ((size(aH.payments) != 1))
448+ else if ((0 >= bw))
449+ then throw(("Minimal amount to receive must be positive. Actual: " + toString(bw)))
450+ else if ((size(aI.payments) != 1))
449451 then throw("One attached payment expected")
450- else if (!(ap))
451- then ([ScriptTransfer(aH.caller, br, bs)] ++ aG())
452- else if ((bs == M))
452+ else if (!(aq))
453+ then ([ScriptTransfer(aI.caller, bs, bt)] ++ aH())
454+ else if ((bt == N))
453455 then {
454- let bD = N
455- let bE = bx(T, U)
456- let bA = bE._1
457- let bB = bE._2
458- let bC = bE._3
459- let bF = (T + br)
460- let bG = ((U - bB) - bC)
461- if (if (if ((M == H))
462- then (ag >= bF)
456+ let bE = O
457+ let bF = by(U, V)
458+ let bB = bF._1
459+ let bC = bF._2
460+ let bD = bF._3
461+ let bG = (U + bs)
462+ let bH = ((V - bC) - bD)
463+ if (if (if ((N == I))
464+ then (ah >= bG)
463465 else false)
464466 then true
465- else if ((N == H))
466- then (ag >= bG)
467+ else if ((O == I))
468+ then (ah >= bH)
467469 else false)
468- then aA(bB, am, S)
469- else [IntegerEntry(f, bF), IntegerEntry(g, bG), ScriptTransfer(aH.caller, bB, bD), ScriptTransfer(A, bC, bD)]
470+ then aB(bC, an, T)
471+ else [IntegerEntry(f, bG), IntegerEntry(g, bH), ScriptTransfer(aI.caller, bC, bE), ScriptTransfer(A, bD, bE)]
470472 }
471- else if ((bs == N))
473+ else if ((bt == O))
472474 then {
473- let bD = M
474- let bH = bx(U, T)
475- let bA = bH._1
476- let bB = bH._2
477- let bC = bH._3
478- let bF = ((T - bB) - bC)
479- let bG = (U + br)
480- if (if (if ((M == H))
481- then (ag >= bF)
475+ let bE = N
476+ let bI = by(V, U)
477+ let bB = bI._1
478+ let bC = bI._2
479+ let bD = bI._3
480+ let bG = ((U - bC) - bD)
481+ let bH = (V + bs)
482+ if (if (if ((N == I))
483+ then (ah >= bG)
482484 else false)
483485 then true
484- else if ((N == H))
485- then (ag >= bG)
486+ else if ((O == I))
487+ then (ah >= bH)
486488 else false)
487- then aA(bB, al, O)
488- else [IntegerEntry(f, bF), IntegerEntry(g, bG), ScriptTransfer(aH.caller, bB, bD), ScriptTransfer(A, bC, bD)]
489+ then aB(bC, am, P)
490+ else [IntegerEntry(f, bG), IntegerEntry(g, bH), ScriptTransfer(aI.caller, bC, bE), ScriptTransfer(A, bD, bE)]
489491 }
490- else throw(((("Incorrect asset attached. Expected: " + K) + " or ") + L))
492+ else throw(((("Incorrect asset attached. Expected: " + L) + " or ") + M))
491493 }
492494
493495
494496
495-@Callable(aH)
496-func shutdown () = if (!(J))
497+@Callable(aI)
498+func shutdown () = if (!(K))
497499 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, n), "the cause wasn't specified")))
498- else if (!(containsElement([v, w, x, y], aH.callerPublicKey)))
500+ else if (!(containsElement([v, w, x, y], aI.callerPublicKey)))
499501 then throw("Only admin can call this function")
500- else av("Paused by admin")
502+ else aw("Paused by admin")
501503
502504
503505
504-@Callable(aH)
505-func activate () = if (J)
506+@Callable(aI)
507+func activate () = if (K)
506508 then throw("DApp is already active")
507- else if (!(containsElement([v, w, x, y], aH.callerPublicKey)))
509+ else if (!(containsElement([v, w, x, y], aI.callerPublicKey)))
508510 then throw("Only admin can call this function")
509511 else [BooleanEntry(c, true), DeleteEntry(n)]
510512
511513
512514
513-@Callable(aH)
514-func takeIntoAccountExtraFunds (bI) = {
515- let bJ = (an - T)
515+@Callable(aI)
516+func takeIntoAccountExtraFunds (bJ) = {
516517 let bK = (ao - U)
517- let bL = (bJ - (if ((M == unit))
518- then bI
518+ let bL = (ap - V)
519+ let bM = (bK - (if ((N == unit))
520+ then bJ
519521 else 0))
520- let bM = (bK - (if ((N == unit))
521- then bI
522+ let bN = (bL - (if ((O == unit))
523+ then bJ
522524 else 0))
523- if (!(J))
525+ if (!(K))
524526 then throw("DApp is inactive at this moment")
525- else if ((aH.caller != this))
527+ else if ((aI.caller != this))
526528 then throw("Only the DApp itself can call this function")
527- else if ((0 > bI))
528- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bI)))
529- else if (if ((0 > bJ))
529+ else if ((0 > bJ))
530+ then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bJ)))
531+ else if (if ((0 > bK))
530532 then true
531- else (0 > bK))
532- then av("Enroll amount negative")
533- else if (if ((0 > bL))
533+ else (0 > bL))
534+ then aw("Enroll amount negative")
535+ else if (if ((0 > bM))
534536 then true
535- else (0 > bM))
537+ else (0 > bN))
536538 then throw("Too large amountLeave")
537- else [IntegerEntry(f, (T + bL)), IntegerEntry(g, (U + bM)), IntegerEntry(("last_income_" + K), bL), IntegerEntry(("last_income_" + L), bM)]
539+ else [IntegerEntry(f, (U + bM)), IntegerEntry(g, (V + bN)), IntegerEntry(("last_income_" + L), bM), IntegerEntry(("last_income_" + M), bN)]
538540 }
539541
540542
541-@Verifier(bN)
542-func bO () = {
543- let P = bN
544- if ($isInstanceOf(P, "InvokeScriptTransaction"))
543+@Verifier(bO)
544+func bP () = {
545+ let Q = bO
546+ if ($isInstanceOf(Q, "InvokeScriptTransaction"))
545547 then {
546- let bP = P
547- let bQ = if ((bP.dApp == this))
548- then (bP.function == "takeIntoAccountExtraFunds")
548+ let bQ = Q
549+ let bR = if ((bQ.dApp == this))
550+ then (bQ.function == "takeIntoAccountExtraFunds")
549551 else false
550- let bR = if ((bP.dApp == C))
551- then if (if (if ((bP.function == "startStaking"))
552- then (size(bP.payments) == 1)
552+ let bS = if ((bQ.dApp == C))
553+ then if (if (if ((bQ.function == "startStaking"))
554+ then (size(bQ.payments) == 1)
553555 else false)
554- then (bP.payments[0].assetId == H)
556+ then (bQ.payments[0].assetId == I)
555557 else false)
556558 then true
557- else if ((bP.function == "stopStaking"))
558- then (size(bP.payments) == 0)
559+ else if ((bQ.function == "stopStaking"))
560+ then (size(bQ.payments) == 0)
559561 else false
560562 else false
561- let bS = if (if (if (sigVerify(bN.bodyBytes, bN.proofs[0], v))
563+ let bT = if (if (if ((bQ.dApp == D))
564+ then (bQ.function == "exchange")
565+ else false)
566+ then (N == I)
567+ else false)
562568 then true
563- else sigVerify(bN.bodyBytes, bN.proofs[0], w))
569+ else if ((O == I))
570+ then (bQ.payments[0].assetId == I)
571+ else false
572+ let bU = if (if (if (sigVerify(bO.bodyBytes, bO.proofs[0], v))
564573 then true
565- else sigVerify(bN.bodyBytes, bN.proofs[0], x))
574+ else sigVerify(bO.bodyBytes, bO.proofs[0], w))
566575 then true
567- else sigVerify(bN.bodyBytes, bN.proofs[0], z)
568- if (if (bQ)
576+ else sigVerify(bO.bodyBytes, bO.proofs[0], x))
569577 then true
570- else bR)
571- then bS
578+ else sigVerify(bO.bodyBytes, bO.proofs[0], z)
579+ if (if (if (bR)
580+ then true
581+ else bS)
582+ then true
583+ else bT)
584+ then bU
572585 else false
573586 }
574587 else {
575- let bT = if (sigVerify(bN.bodyBytes, bN.proofs[0], v))
588+ let bV = if (sigVerify(bO.bodyBytes, bO.proofs[0], v))
576589 then 1
577590 else 0
578- let bU = if (sigVerify(bN.bodyBytes, bN.proofs[1], w))
591+ let bW = if (sigVerify(bO.bodyBytes, bO.proofs[1], w))
579592 then 1
580593 else 0
581- let bV = if (sigVerify(bN.bodyBytes, bN.proofs[2], x))
594+ let bX = if (sigVerify(bO.bodyBytes, bO.proofs[2], x))
582595 then 1
583596 else 0
584- (((bT + bU) + bV) >= 2)
597+ (((bV + bW) + bX) >= 2)
585598 }
586599 }
587600

github/deemru/w8io/026f985 
217.68 ms