tx · DuKuktRV5zz3yNAsj21gu9B6xw7P2PpNcSdeBXU4tV3P

3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1:  -0.01400000 Waves

2021.07.16 21:05 [2681275] smart account 3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1 > SELF 0.00000000 Waves

{ "type": 13, "id": "DuKuktRV5zz3yNAsj21gu9B6xw7P2PpNcSdeBXU4tV3P", "fee": 1400000, "feeAssetId": null, "timestamp": 1626458689500, "version": 2, "chainId": 87, "sender": "3PPH7x7iqobW5ziyiRCic19rQqKr6nPYaK1", "senderPublicKey": "5aTg4oxM77iRmUGy3y8Zavn5fhVbgtUciAuSGfCJAYjn", "proofs": [ "", "2UeuUeub2pJv2azgT5kVkvQAaxztRWnhFmwSdM5mkC8HmngWBA9KBgr4YnwFYoH1BJ1SsJ4Rq4gCotE7jGvejXef", "3ys4kJUzMdRUkk1tMmr5nNFrUXrdCbMbFVoLuoN5ohhR42tTyc3htJAdE7yigrHfLvSiVmtASDDMBLyn495K44m9" ], "script": "base64:AAIFAAAAAAAAACAIAhIAEgMKAQESBAoCAQESABIECgIBARIAEgASAwoBAQAAAEwAAAAAB3ZlcnNpb24CAAAABTIuMC4wAAAAAAhrVmVyc2lvbgIAAAAHdmVyc2lvbgAAAAAHa0FjdGl2ZQIAAAAGYWN0aXZlAAAAAAlrQXNzZXRJZEECAAAACkFfYXNzZXRfaWQAAAAACWtBc3NldElkQgIAAAAKQl9hc3NldF9pZAAAAAAJa0JhbGFuY2VBAgAAAA9BX2Fzc2V0X2JhbGFuY2UAAAAACWtCYWxhbmNlQgIAAAAPQl9hc3NldF9iYWxhbmNlAAAAAA1rU2hhcmVBc3NldElkAgAAAA5zaGFyZV9hc3NldF9pZAAAAAARa1NoYXJlQXNzZXRTdXBwbHkCAAAAEnNoYXJlX2Fzc2V0X3N1cHBseQAAAAAEa0ZlZQIAAAAKY29tbWlzc2lvbgAAAAASa0ZlZVNjYWxlRGVsaW1pdGVyAgAAABpjb21taXNzaW9uX3NjYWxlX2RlbGltaXRlcgAAAAAKa0ludmFyaWFudAIAAAAJaW52YXJpYW50AAAAAAZrQ2F1c2UCAAAADnNodXRkb3duX2NhdXNlAAAAAA9rZXlBZG1pblB1YktleTECAAAAC2FkbWluX3B1Yl8xAAAAAA9rZXlBZG1pblB1YktleTICAAAAC2FkbWluX3B1Yl8yAAAAAA9rZXlBZG1pblB1YktleTMCAAAAC2FkbWluX3B1Yl8zAAAAABRVU0ROVG9XYXZlc0V4Y2hhbmdlcgkBAAAAB0FkZHJlc3MAAAABAQAAABoBV6ugnY67/HaJPzVO8b2xSyoDl1hFH8eK8wAAAAAGb3JhY2xlCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFXiv8IaJo1ukDNYXTyEjfepjfw+jjO6B44AQAAAAtnZXRBZG1pblB1YgAAAAEAAAALa2V5QWRtaW5QdWIEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAGb3JhY2xlBQAAAAtrZXlBZG1pblB1YgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAZzdHJpbmcFAAAAByRtYXRjaDAJAAJZAAAAAQUAAAAGc3RyaW5nBAAAAAdub3RoaW5nBQAAAAckbWF0Y2gwCQAAAgAAAAECAAAAGUFkbWlu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AAACBQAAAAJzawUAAAAEYmV0YQUAAAAHZGlnaXRzOAUAAAAFYWxwaGEFAAAAC2FscGhhRGlnaXRzBQAAAAdkaWdpdHM4BQAAAARET1dOBQAAAAZzY2FsZTgBAAAAE2NhbGN1bGF0ZVNlbmRBbW91bnQAAAAEAAAAFWFtb3VudFRvU2VuZEVzdGltYXRlZAAAABVtaW5Ub2tlblJlY2VpdmVBbW91bnQAAAASdG9rZW5SZWNlaXZlQW1vdW50AAAAB3Rva2VuSWQEAAAADXNsaXBwYWdlVmFsdWUJAABlAAAAAgUAAAAGc2NhbGU4CQAAaQAAAAIJAABoAAAAAgUAAAAGc2NhbGU4AAAAAAAAAAABAAAAAAAAmJaABAAAAB5kZWx0YUJldHdlZW5NYXhBbmRNaW5TZW5kVmFsdWUJAABlAAAAAgUAAAAVYW1vdW50VG9TZW5kRXN0aW1hdGVkBQAAABVtaW5Ub2tlblJlY2VpdmVBbW91bnQEAAAAAXgJAABkAAAAAgUAAAAIYmFsYW5jZUEFAAAAEnRva2VuUmVjZWl2ZUFtb3VudAQAAAABeQkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAASdG9rZW5SZWNlaXZlQW1vdW50BAAAAAxpbnZhcmlhbnROZXcDCQAAAAAAAAIFAAAAB3Rva2VuSWQFAAAACGFzc2V0SWRBCQEAAAANaW52YXJpYW50Q2FsYwAAAAIFAAAAAXgJAABlAAAAAgUAAAAIYmFsYW5jZUIFAAAAFWFtb3VudFRvU2VuZEVzdGltYXRlZAMJAAAAAAAAAgUAAAAHdG9rZW5JZAUAAAAIYXNzZXRJZEIJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAAVYW1vdW50VG9TZW5kRXN0aW1hdGVkBQAAAAF5CQAAAgAAAAECAAAAFldyb25nIGFzc2V0IGluIHBheW1lbnQEAAAAF2ludmFyaWFudEVzdGltYXRlZFJhdGlvCQAAawAAAAMFAAAABnNjYWxlOAUAAAAJaW52YXJpYW50BQAAAAxpbnZhcmlhbnROZXcKAQAAAA1nZXRTdGVwQW1vdW50AAAAAgAAAANhY2MAAAAEc3RlcAMJAAAAAAAAAgUAAAADYWNjAP//////////BAAAAAxhbW91bnRUb1NlbmQJAABlAAAAAgUAAAAVYW1vdW50VG9TZW5kRXN0aW1hdGVkCQAAaQAAAAIJAABoAAAAAgUAAAAEc3RlcAUAAAAeZGVsdGFCZXR3ZWVuTWF4QW5kTWluU2VuZFZhbHVlAAAAAAAAAAAFBAAAAA1zdGVwSW52YXJpYW50AwkAAAAAAAACBQAAAAd0b2tlbklkBQAAAAhhc3NldElkQQkBAAAADWludmFyaWFudENhbGMAAAACBQAAAAF4CQAAZQAAAAIFAAAACGJhbGFuY2VCBQAAAAxhbW91bnRUb1NlbmQJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAAMYW1vdW50VG9TZW5kBQAAAAF5AwkAAGYAAAACBQAAAA1zdGVwSW52YXJpYW50BQAAAAlpbnZhcmlhbnQFAAAADGFtb3VudFRvU2VuZAD//////////wUAAAADYWNjBAAAAApzdGVwQW1vdW50BAAAAA0kbGlzdDYwMjU2MDY4CQAETAAAAAIAAAAAAAAAAAEJAARMAAAAAgAAAAAAAAAAAgkABEwAAAACAAAAAAAAAAADCQAETAAAAAIAAAAAAAAAAAQJAARMAAAAAgAAAAAAAAAABQUAAAADbmlsBAAAAA0kc2l6ZTYwMjU2MDY4CQABkAAAAAEFAAAADSRsaXN0NjAyNTYwNjgEAAAADSRhY2MwNjAyNTYwNjgA//////////8DCQAAAAAAAAIFAAAADSRzaXplNjAyNTYwNjgAAAAAAAAAAAAFAAAADSRhY2MwNjAyNTYwNjgEAAAADSRhY2MxNjAyNTYwNjgJAQAAAA1nZXRTdGVwQW1vdW50AAAAAgUAAAANJGFjYzA2MDI1NjA2OAkAAZEAAAACBQAAAA0kbGlzdDYwMjU2MDY4AAAAAAAAAAAAAwkAAAAAAAACBQAAAA0kc2l6ZTYwMjU2MDY4AAAAAAAAAAABBQAAAA0kYWNjMTYwMjU2MDY4BAAAAA0kYWNjMjYwMjU2MDY4CQEAAAANZ2V0U3RlcEFtb3VudAAAAAIFAAAADSRhY2MxNjAyNTYwNjgJAAGRAAAAAgUAAAANJGxpc3Q2MDI1NjA2OAAAAAAAAAAAAQMJAAAAAAAAAgUAAAANJHNpemU2MDI1NjA2OAAAAAAAAAAAAgUAAAANJGFjYzI2MDI1NjA2OAQAAAANJGFjYzM2MDI1NjA2OAkBAAAADWdldFN0ZXBBbW91bnQAAAACBQAAAA0kYWNjMjYwMjU2MDY4CQABkQAAAAIFAAAADSRsaXN0NjAyNTYwNjgAAAAAAAAAAAIDCQAAAAAAAAIFAAAADSRzaXplNjAyNTYwNjgAAAAAAAAAAAMFAAAADSRhY2MzNjAyNTYwNjgEAAAADSRhY2M0NjAyNTYwNjgJAQAAAA1nZXRTdGVwQW1vdW50AAAAAgUAAAANJGFjYzM2MDI1NjA2OAkAAZEAAAACBQAAAA0kbGlzdDYwMjU2MDY4AAAAAAAAAAADAwkAAAAAAAACBQAAAA0kc2l6ZTYwMjU2MDY4AAAAAAAAAAAEBQAAAA0kYWNjNDYwMjU2MDY4BAAAAA0kYWNjNTYwMjU2MDY4CQEAAAANZ2V0U3RlcEFtb3VudAAAAAIFAAAADSRhY2M0NjAyNTYwNjgJAAGRAAAAAgUAAAANJGxpc3Q2MDI1NjA2OAAAAAAAAAAABAMJAAAAAAAAAgUAAAANJHNpemU2MDI1NjA2OAAAAAAAAAAABQUAAAANJGFjYzU2MDI1NjA2OAQAAAANJGFjYzY2MDI1NjA2OAkBAAAADWdldFN0ZXBBbW91bnQAAAACBQAAAA0kYWNjNTYwMjU2MDY4CQABkQAAAAIFAAAADSRsaXN0NjAyNTYwNjgAAAAAAAAAAAUJAAACAAAAAQIAAAASTGlzdCBzaXplIGV4Y2VlZCA1AwkAAGYAAAACAAAAAAAAAAAABQAAAApzdGVwQW1vdW50CQAAAgAAAAECAAAANHNvbWV0aGluZyB3ZW50IHdyb25nIHdoaWxlIHdvcmtpbmcgd2l0aCBhbW91bnRUb1NlbmQDAwkAAGYAAAACBQAAABdpbnZhcmlhbnRFc3RpbWF0ZWRSYXRpbwUAAAANc2xpcHBhZ2VWYWx1ZQkAAGYAAAACBQAAAAxpbnZhcmlhbnROZXcFAAAACWludmFyaWFudAcFAAAAFWFtb3VudFRvU2VuZEVzdGltYXRlZAUAAAAKc3RlcEFtb3VudAEAAAAMZ2V0QXNzZXRJbmZvAAAAAQAAAAdhc3NldElkBAAAAAckbWF0Y2gwBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gw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OAAAAAEFAAAACnNoYXJlSXNzdWUEAAAAE2ludmFyaWFudENhbGN1bGF0ZWQJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgUAAAAKcG10QW1vdW50QQUAAAAKcG10QW1vdW50QgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAhrVmVyc2lvbgUAAAAHdmVyc2lvbgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAHa0FjdGl2ZQYJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAJa0Fzc2V0SWRBBQAAAA5wbXRTdHJBc3NldElkQQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAlrQXNzZXRJZEIFAAAADnBtdFN0ckFzc2V0SWRCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAlrQmFsYW5jZUEFAAAACnBtdEFtb3VudEEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQgUAAAAKcG10QW1vdW50QgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAKa0ludmFyaWFudAUAAAATaW52YXJpYW50Q2FsY3VsYXRlZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAEa0ZlZQUAAAADZmVlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrRmVlU2NhbGVEZWxpbWl0ZXIFAAAACWZlZVNjYWxlNgkABEwAAAACBQAAAApzaGFyZUlzc3VlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADWtTaGFyZUFzc2V0SWQJAAJYAAAAAQUAAAAMc2hhcmVJc3N1ZUlkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABFrU2hhcmVBc3NldFN1cHBseQUAAAASc2hhcmVJbml0aWFsU3VwcGx5CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAASc2hhcmVJbml0aWFsU3VwcGx5BQAAAAxzaGFyZUlzc3VlSWQFAAAAA25pbAAAAAFpAQAAABZyZXBsZW5pc2hXaXRoVHdvVG9rZW5zAAAAAQAAABFzbGlwcGFnZVRvbGVyYW5jZQQAAAALcG10QXNzZXRJZEEICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAAC3BtdEFzc2V0SWRCCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQAAAAdhc3NldElkBAAAAApwbXRBbW91bnRBCQEAAAAQZGVkdWN0U3Rha2luZ0ZlZQAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAUAAAALcG10QXNzZXRJZEEEAAAACnBtdEFtb3VudEIJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEAAAAGYW1vdW50BQAAAAtwbXRBc3NldElkQgQAAAAKdG9rZW5SYXRpbwkAAGsAAAADCQAAawAAAAMFAAAABnNjYWxlOAUAAAAIYmFsYW5jZUEFAAAACnBtdEFtb3VudEEFAAAABnNjYWxlMwkAAGsAAAADBQAAAAZzY2FsZTgFAAAACGJhbGFuY2VCBQAAAApwbXRBbW91bnRCBAAAABNyYXRpb1NoYXJlVG9rZW5zSW5BCQAAawAAAAMFAAAABnNjYWxlOAUAAAAKcG10QW1vdW50QQUAAAAIYmFsYW5jZUEEAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkIJAABrAAAAAwUAAAAGc2NhbGU4BQAAAApwbXRBbW91bnRCBQAAAAhiYWxhbmNlQgQAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50CQAAawAAAAMJAAGXAAAAAQkABEwAAAACBQAAABNyYXRpb1NoYXJlVG9rZW5zSW5BCQAETAAAAAIFAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkIFAAAAA25pbAUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAGc2NhbGU4BAAAABNpbnZhcmlhbnRDYWxjdWxhdGVkCQEAAAANaW52YXJpYW50Q2FsYwAAAAIJAABkAAAAAgUAAAAIYmFsYW5jZUEFAAAACnBtdEFtb3VudEEJAABkAAAAAgUAAAAIYmFsYW5jZUIFAAAACnBtdEFtb3VudEIDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQEAAAAPdGhyb3dJc0luYWN0aXZlAAAAAAMDCQAAZgAAAAIAAAAAAAAAAAAFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBgkAAGYAAAACBQAAABFzbGlwcGFnZVRvbGVyYW5jZQAAAAAAAAAACgkAAAIAAAABAgAAACBTbGlwcGFnZSB0b2xlcmFuY2UgbXVzdCBiZSA8PSAxJQMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAIJAAACAAAAAQIAAAAcVHdvIGF0dGFjaGVkIGFzc2V0cyBleHBlY3RlZAMDCQEAAAACIT0AAAACBQAAAAtwbXRBc3NldElkQQUAAAAIYXNzZXRJZEEGCQEAAAACIT0AAAACBQAAAAtwbXRBc3NldElkQgUAAAAIYXNzZXRJZEIJAQAAAAt0aHJvd0Fzc2V0cwAAAAADAwkAAGYAAAACCQAAaQAAAAIJAABoAAAAAgUAAAAGc2NhbGUzCQAAZQAAAAIFAAAADnNsaXBwYWdlU2NhbGUzBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAOc2xpcHBhZ2VTY2FsZTMFAAAACnRva2VuUmF0aW8GCQAAZgAAAAIFAAAACnRva2VuUmF0aW8JAABpAAAAAgkAAGgAAAACBQAAAAZzY2FsZTMJAABkAAAAAgUAAAAOc2xpcHBhZ2VTY2FsZTMFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAAA5zbGlwcGFnZVNjYWxlMwkAAAIAAAABAgAAAD1JbmNvcnJlY3QgYXNzZXRzIGFtb3VudDogYW1vdW50cyBtdXN0IGhhdmUgdGhlIGNvbnRyYWN0IHJhdGlvAwkAAAAAAAACBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQAAAAAAAAAAAAJAAACAAAAAQIAAAAdVG9vIHNtYWxsIGFtb3VudCB0byByZXBsZW5pc2gDCQEAAAABIQAAAAEFAAAAEGhhc0Vub3VnaEJhbGFuY2UJAAROAAAAAgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAACnBtdEFtb3VudEEFAAAAC3BtdEFzc2V0SWRBCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAKcG10QW1vdW50QgUAAAALcG10QXNzZXRJZEIFAAAAA25pbAkBAAAAEXN1c3BlbmRTdXNwaWNpb3VzAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAJa0JhbGFuY2VBCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAApwbXRBbW91bnRBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAlrQmFsYW5jZUIJAABkAAAAAgUAAAAIYmFsYW5jZUIFAAAACnBtdEFtb3VudEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEWtTaGFyZUFzc2V0U3VwcGx5CQAAZAAAAAIFAAAAEHNoYXJlQXNzZXRTdXBwbHkFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAKa0ludmFyaWFudAUAAAATaW52YXJpYW50Q2FsY3VsYXRlZAkABEwAAAACCQEAAAAHUmVpc3N1ZQAAAAMFAAAADHNoYXJlQXNzZXRJZAUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50BgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUAAAAMc2hhcmVBc3NldElkBQAAAANuaWwAAAABaQEAAAAVcmVwbGVuaXNoV2l0aE9uZVRva2VuAAAAAgAAABN2aXJ0dWFsU3dhcFRva2VuUGF5AAAAE3ZpcnR1YWxTd2FwVG9rZW5HZXQEAAAADSR0MDEzNDEwMTM0ODUJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAA0kdDAxMzQxMDEzNDg1AAAAAl8xBAAAAApwbXRBc3NldElkCAUAAAANJHQwMTM0MTAxMzQ4NQAAAAJfMgQAAAAPcG10TWluVGhyZXNob2xkAAAAAAAATEtABAAAAB10aHJlc2hvbGRWYWx1ZUZvck1pblRvbGVyYW5jZQAAAAAAAvrwgAQAAAAJdG9sZXJhbmNlAwkAAGYAAAACBQAAAB10aHJlc2hvbGRWYWx1ZUZvck1pblRvbGVyYW5jZQUAAAAJcG10QW1vdW50AAAAAAAAAYagAAAAAAAAAAABBAAAABxzbGlwcGFnZVZhbHVlTWluRm9yUmVwbGVuaXNoCQAAZQAAAAIFAAAABnNjYWxlOAkAAGkAAAACCQAAaAAAAAIFAAAABnNjYWxlOAUAAAAJdG9sZXJhbmNlAAAAAAAAmJaABAAAABxzbGlwcGFnZVZhbHVlTWF4Rm9yUmVwbGVuaXNoCQAAZAAAAAIFAAAABnNjYWxlOAkAAGkAAAACCQAAaAAAAAIFAAAABnNjYWxlOAUAAAAJdG9sZXJhbmNlAAAAAAAAmJaABAAAABdzbGlwcGFnZVZhbHVlTWluRm9yU3dhcAkAAGUAAAACBQAAAAZzY2FsZTgJAABpAAAAAgkAAGgAAAACBQAAAAZzY2FsZTgAAAAAAAAAAAEAAAAAAACYloADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQEAAAAPdGhyb3dJc0luYWN0aXZlAAAAAAMJAABmAAAAAgUAAAAPcG10TWluVGhyZXNob2xkBQAAAAlwbXRBbW91bnQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9QYXltZW50IGFtb3VudCAJAAGkAAAAAQUAAAAJcG10QW1vdW50AgAAACcgZG9lcyBub3QgZXhjZWVkIHRoZSBtaW5pbXVtIGFtb3VudCBvZiAJAAGkAAAAAQUAAAAPcG10TWluVGhyZXNob2xkAgAAAAcgdG9rZW5zAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAJcG10QW1vdW50BQAAAApwbXRBc3NldElkBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAADAwkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEEJAQAAAAIhPQAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRCBwkBAAAAC3Rocm93QXNzZXRzAAAAAAQAAAANJHQwMTQ0OTcxNTI2MgMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEEJAAUZAAAABwkAAGUAAAACBQAAAAlwbXRBbW91bnQFAAAAE3ZpcnR1YWxTd2FwVG9rZW5QYXkFAAAAE3ZpcnR1YWxTd2FwVG9rZW5HZXQJAABkAAAAAgUAAAAIYmFsYW5jZUEFAAAAE3ZpcnR1YWxTd2FwVG9rZW5QYXkJAABlAAAAAgUAAAAIYmFsYW5jZUIFAAAAE3ZpcnR1YWxTd2FwVG9rZW5HZXQJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAAJcG10QW1vdW50BQAAAAhiYWxhbmNlQgkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAAJcG10QW1vdW50BQAAAAhiYWxhbmNlQgkABRkAAAAHBQAAABN2aXJ0dWFsU3dhcFRva2VuR2V0CQAAZQAAAAIFAAAACXBtdEFtb3VudAUAAAATdmlydHVhbFN3YXBUb2tlblBheQkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAATdmlydHVhbFN3YXBUb2tlbkdldAkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAATdmlydHVhbFN3YXBUb2tlblBheQkBAAAADWludmFyaWFudENhbGMAAAACBQAAAAhiYWxhbmNlQQkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAJcG10QW1vdW50BQAAAAhiYWxhbmNlQQkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAJcG10QW1vdW50BAAAABF2aXJ0dWFsUmVwbGVuaXNoQQgFAAAADSR0MDE0NDk3MTUyNjIAAAACXzEEAAAAEXZpcnR1YWxSZXBsZW5pc2hCCAUAAAANJHQwMTQ0OTcxNTI2MgAAAAJfMgQAAAARYmFsYW5jZUFmdGVyU3dhcEEIBQAAAA0kdDAxNDQ5NzE1MjYyAAAAAl8zBAAAABFiYWxhbmNlQWZ0ZXJTd2FwQggFAAAADSR0MDE0NDk3MTUyNjIAAAACXzQEAAAAE2ludmFyaWFudENhbGN1bGF0ZWQIBQAAAA0kdDAxNDQ5NzE1MjYyAAAAAl81BAAAAAtuZXdCYWxhbmNlQQgFAAAADSR0MDE0NDk3MTUyNjIAAAACXzYEAAAAC25ld0JhbGFuY2VCCAUAAAANJHQwMTQ0OTcxNTI2MgAAAAJfNwQAAAAPbmV3QmFsYW5jZUVudHJ5AwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAAAhhc3NldElkQQkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUEJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAlrQmFsYW5jZUIFAAAAC25ld0JhbGFuY2VCBAAAAAxpbnZhcmlhbnROZXcJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgUAAAARYmFsYW5jZUFmdGVyU3dhcEEFAAAAEWJhbGFuY2VBZnRlclN3YXBCBAAAABdpbnZhcmlhbnRFc3RpbWF0ZWRSYXRpbwkAAGsAAAADBQAAAAZzY2FsZTgFAAAACWludmFyaWFudAUAAAAMaW52YXJpYW50TmV3BAAAACVyYXRpb1ZpcnR1YWxCYWxhbmNlVG9WaXJ0dWFsUmVwbGVuaXNoCQAAaQAAAAIJAABrAAAAAwkAAGgAAAACBQAAAAZzY2FsZTgFAAAABnNjYWxlOAUAAAARYmFsYW5jZUFmdGVyU3dhcEEFAAAAEWJhbGFuY2VBZnRlclN3YXBCCQAAawAAAAMFAAAABnNjYWxlOAUAAAARdmlydHVhbFJlcGxlbmlzaEEFAAAAEXZpcnR1YWxSZXBsZW5pc2hCBAAAABNkQXBwVGhyZXNob2xkQW1vdW50CQAAawAAAAMJAABkAAAAAgUAAAALbmV3QmFsYW5jZUEFAAAAC25ld0JhbGFuY2VCBQAAAA1kQXBwVGhyZXNob2xkCQAAaAAAAAIAAAAAAAAAAAIFAAAAE2RBcHBUaHJlc2hvbGRTY2FsZTIDAwkAAGcAAAACBQAAABdzbGlwcGFnZVZhbHVlTWluRm9yU3dhcAUAAAAXaW52YXJpYW50RXN0aW1hdGVkUmF0aW8GCQAAZgAAAAIFAAAACWludmFyaWFudAUAAAAMaW52YXJpYW50TmV3CQAAAgAAAAECAAAAOkluY29ycmVjdCB2aXJ0dWFsU3dhcFRva2VuUGF5IG9yIHZpcnR1YWxTd2FwVG9rZW5HZXQgdmFsdWUDAwkAAGYAAAACBQAAABxzbGlwcGFnZVZhbHVlTWluRm9yUmVwbGVuaXNoBQAAACVyYXRpb1ZpcnR1YWxCYWxhbmNlVG9WaXJ0dWFsUmVwbGVuaXNoBgkAAGYAAAACBQAAACVyYXRpb1ZpcnR1YWxCYWxhbmNlVG9WaXJ0dWFsUmVwbGVuaXNoBQAAABxzbGlwcGFnZVZhbHVlTWF4Rm9yUmVwbGVuaXNoCQAAAgAAAAECAAAAbFN3YXAgd2l0aCB2aXJ0dWFsU3dhcFRva2VuUGF5IGFuZCB2aXJ0dWFsU3dhcFRva2VuR2V0IGlzIHBvc3NpYmxlLCBidXQgcmF0aW8gYWZ0ZXIgdmlydHVhbCBzd2FwIGlzIGluY29ycmVjdAMDCQAAZgAAAAIFAAAAE2RBcHBUaHJlc2hvbGRBbW91bnQFAAAAC25ld0JhbGFuY2VBBgkAAGYAAAACBQAAABNkQXBwVGhyZXNob2xkQW1vdW50BQAAAAtuZXdCYWxhbmNlQgkBAAAADnRocm93VGhyZXNob2xkAAAAAwUAAAATZEFwcFRocmVzaG9sZEFtb3VudAUAAAALbmV3QmFsYW5jZUEFAAAAC25ld0JhbGFuY2VCBAAAABNyYXRpb1NoYXJlVG9rZW5zSW5BCQAAawAAAAMJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAgUAAAARdmlydHVhbFJlcGxlbmlzaEEFAAAACGFzc2V0SWRBBQAAAAZzY2FsZTgFAAAAEWJhbGFuY2VBZnRlclN3YXBBBAAAABNyYXRpb1NoYXJlVG9rZW5zSW5CCQAAawAAAAMJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAgUAAAARdmlydHVhbFJlcGxlbmlzaEIFAAAACGFzc2V0SWRCBQAAAAZzY2FsZTgFAAAAEWJhbGFuY2VBZnRlclN3YXBCBAAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAABrAAAAAwkAAZcAAAABCQAETAAAAAIFAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkEJAARMAAAAAgUAAAATcmF0aW9TaGFyZVRva2Vuc0luQgUAAAADbmlsBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAZzY2FsZTgJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAAAxzaGFyZUFzc2V0SWQFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQFAAAADHNoYXJlQXNzZXRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARa1NoYXJlQXNzZXRTdXBwbHkJAABkAAAAAgUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50CQAETAAAAAIFAAAAD25ld0JhbGFuY2VFbnRyeQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAKa0ludmFyaWFudAUAAAATaW52YXJpYW50Q2FsY3VsYXRlZAUAAAADbmlsAAAAAWkBAAAACHdpdGhkcmF3AAAAAAQAAAANJHQwMTc0MDcxNzU1MAkABRQAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAACXBtdEFtb3VudAgFAAAADSR0MDE3NDA3MTc1NTAAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAA0kdDAxNzQwNzE3NTUwAAAAAl8yBAAAAAxhbW91bnRUb1BheUEJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAgkAAGsAAAADBQAAAAlwbXRBbW91bnQFAAAACGJhbGFuY2VBBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAhhc3NldElkQQQAAAAMYW1vdW50VG9QYXlCCQEAAAAQZGVkdWN0U3Rha2luZ0ZlZQAAAAIJAABrAAAAAwUAAAAJcG10QW1vdW50BQAAAAhiYWxhbmNlQgUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAIYXNzZXRJZEIEAAAAE2ludmFyaWFudENhbGN1bGF0ZWQJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAAMYW1vdW50VG9QYXlBCQAAZQAAAAIFAAAACGJhbGFuY2VCBQAAAAxhbW91bnRUb1BheUIDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQEAAAAPdGhyb3dJc0luYWN0aXZlAAAAAAMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAACAAAAAQIAAAAdT25lIGF0dGFjaGVkIHBheW1lbnQgZXhwZWN0ZWQDCQEAAAACIT0AAAACBQAAAApwbXRBc3NldElkBQAAAAxzaGFyZUFzc2V0SWQJAAACAAAAAQkAASwAAAACAgAAACRJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQuIEV4cGVjdGVkOiAJAAJYAAAAAQUAAAAMc2hhcmVBc3NldElkAwkBAAAAASEAAAABBQAAABBoYXNFbm91Z2hCYWxhbmNlCQAETgAAAAIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAlwbXRBbW91bnQFAAAACnBtdEFzc2V0SWQFAAAAA25pbAkBAAAAEXN1c3BlbmRTdXNwaWNpb3VzAAAAAAMDCQAAZgAAAAIFAAAADGFtb3VudFRvUGF5QQUAAAARYXZhaWxhYmxlQmFsYW5jZUEGCQAAZgAAAAIFAAAADGFtb3VudFRvUGF5QgUAAAARYXZhaWxhYmxlQmFsYW5jZUIJAQAAACJ0aHJvd0luc3VmZmljaWVudEF2YWlsYWJsZUJhbGFuY2VzAAAAAgUAAAAMYW1vdW50VG9QYXlBBQAAAAxhbW91bnRUb1BheUIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQQkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAAMYW1vdW50VG9QYXlBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAlrQmFsYW5jZUIJAABlAAAAAgUAAAAIYmFsYW5jZUIFAAAADGFtb3VudFRvUGF5QgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARa1NoYXJlQXNzZXRTdXBwbHkJAABlAAAAAgUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAJcG10QW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAprSW52YXJpYW50BQAAABNpbnZhcmlhbnRDYWxjdWxhdGVkCQAETAAAAAIJAQAAAARCdXJuAAAAAgUAAAAMc2hhcmVBc3NldElkBQAAAAlwbXRBbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAxhbW91bnRUb1BheUEFAAAACGFzc2V0SWRBCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAMYW1vdW50VG9QYXlCBQAAAAhhc3NldElkQgUAAAADbmlsAAAAAWkBAAAACGV4Y2hhbmdlAAAAAgAAABhlc3RpbWF0ZWRBbW91bnRUb1JlY2VpdmUAAAASbWluQW1vdW50VG9SZWNlaXZlBAAAAA0kdDAxODkwODE4OTgzCQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAANJHQwMTg5MDgxODk4MwAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAADSR0MDE4OTA4MTg5ODMAAAACXzIDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQEAAAAPdGhyb3dJc0luYWN0aXZlAAAAAAMJAABnAAAAAgAAAAAAAAAAAAUAAAAYZXN0aW1hdGVkQW1vdW50VG9SZWNlaXZlCQAAAgAAAAEJAAEsAAAAAgIAAAArRXN0aW1hdGVkIGFtb3VudCBtdXN0IGJlIHBvc2l0aXZlLiBBY3R1YWw6IAkAAaQAAAABBQAAABhlc3RpbWF0ZWRBbW91bnRUb1JlY2VpdmUDCQAAZgAAAAIFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQUAAAAYZXN0aW1hdGVkQW1vdW50VG9SZWNlaXZlCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAO01pbmltYWwgYW1vdW50IGNhbid0IGJlIGdyZWF0ZXIgdGhhbiBlc3RpbWF0ZWQuIEVzdGltYXRlZDogCQABpAAAAAEFAAAAGGVzdGltYXRlZEFtb3VudFRvUmVjZWl2ZQIAAAALLiBNaW5pbWFsOiAJAAGkAAAAAQUAAAASbWluQW1vdW50VG9SZWNlaXZlAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAJcG10QW1vdW50BQAAAApwbXRBc3NldElkBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAADAwkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEEJAQAAAAIhPQAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRCBwkBAAAAC3Rocm93QXNzZXRzAAAAAAMJAABmAAAAAgAAAAAAAJiWgAUAAAAJcG10QW1vdW50CQAAAgAAAAECAAAAME9ubHkgc3dhcCBvZiAxMC4wMDAwMDAgb3IgbW9yZSB0b2tlbnMgaXMgYWxsb3dlZAMDCQAAZgAAAAIFAAAAFWV4Y2hhbmdlUmF0aW9MaW1pdE1pbgkAAGsAAAADBQAAAAZzY2FsZTgFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQUAAAAJcG10QW1vdW50BgkAAGYAAAACCQAAawAAAAMFAAAABnNjYWxlOAUAAAAYZXN0aW1hdGVkQW1vdW50VG9SZWNlaXZlBQAAAAlwbXRBbW91bnQFAAAAFWV4Y2hhbmdlUmF0aW9MaW1pdE1heAkAAAIAAAABAgAAABxJbmNvcnJlY3QgYXJncyBhbmQgcG10IHJhdGlvBAAAAAtzZW5kQXNzZXRJZAMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEEFAAAACGFzc2V0SWRCBQAAAAhhc3NldElkQQQAAAAGYW1vdW50CQEAAAATY2FsY3VsYXRlU2VuZEFtb3VudAAAAAQFAAAAGGVzdGltYXRlZEFtb3VudFRvUmVjZWl2ZQUAAAASbWluQW1vdW50VG9SZWNlaXZlBQAAAAlwbXRBbW91bnQFAAAACnBtdEFzc2V0SWQEAAAAEGdvdmVybmFuY2VSZXdhcmQJAABrAAAAAwUAAAAGYW1vdW50BQAAAA1mZWVHb3Zlcm5hbmNlBQAAAAlmZWVTY2FsZTYEAAAADmFtb3VudE1pbnVzRmVlCQAAawAAAAMFAAAABmFtb3VudAkAAGUAAAACBQAAAAlmZWVTY2FsZTYFAAAAA2ZlZQUAAAAJZmVlU2NhbGU2BAAAAA0kdDAyMDQwNTIwNjY3AwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAAAhhc3NldElkQQkABRQAAAACCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAAlwbXRBbW91bnQJAABlAAAAAgkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAAOYW1vdW50TWludXNGZWUFAAAAEGdvdmVybmFuY2VSZXdhcmQJAAUUAAAAAgkAAGUAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAAA5hbW91bnRNaW51c0ZlZQUAAAAQZ292ZXJuYW5jZVJld2FyZAkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAJcG10QW1vdW50BAAAAAtuZXdCYWxhbmNlQQgFAAAADSR0MDIwNDA1MjA2NjcAAAACXzEEAAAAC25ld0JhbGFuY2VCCAUAAAANJHQwMjA0MDUyMDY2NwAAAAJfMgQAAAATZEFwcFRocmVzaG9sZEFtb3VudAkAAGsAAAADCQAAZAAAAAIFAAAAC25ld0JhbGFuY2VBBQAAAAtuZXdCYWxhbmNlQgUAAAANZEFwcFRocmVzaG9sZAkAAGgAAAACAAAAAAAAAAACBQAAABNkQXBwVGhyZXNob2xkU2NhbGUyAwMJAABmAAAAAgUAAAATZEFwcFRocmVzaG9sZEFtb3VudAUAAAALbmV3QmFsYW5jZUEGCQAAZgAAAAIFAAAAE2RBcHBUaHJlc2hvbGRBbW91bnQFAAAAC25ld0JhbGFuY2VCCQEAAAAOdGhyb3dUaHJlc2hvbGQAAAADBQAAABNkQXBwVGhyZXNob2xkQW1vdW50BQAAAAtuZXdCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUIDAwMJAAAAAAAAAgUAAAAIYXNzZXRJZEEFAAAABFVTRE4JAAAAAAAAAgUAAAALc2VuZEFzc2V0SWQFAAAACGFzc2V0SWRBBwkAAGcAAAACBQAAABBzdGFrZWRBbW91bnRVU0ROBQAAAAtuZXdCYWxhbmNlQQcJAQAAACF0aHJvd0luc3VmZmljaWVudEF2YWlsYWJsZUJhbGFuY2UAAAADBQAAAA5hbW91bnRNaW51c0ZlZQUAAAARYXZhaWxhYmxlQmFsYW5jZUEFAAAACmFzc2V0TmFtZUEDAwMJAAAAAAAAAgUAAAAIYXNzZXRJZEIFAAAABFVTRE4JAAAAAAAAAgUAAAALc2VuZEFzc2V0SWQFAAAACGFzc2V0SWRCBwkAAGcAAAACBQAAABBzdGFrZWRBbW91bnRVU0ROBQAAAAtuZXdCYWxhbmNlQgcJAQAAACF0aHJvd0luc3VmZmljaWVudEF2YWlsYWJsZUJhbGFuY2UAAAADBQAAAA5hbW91bnRNaW51c0ZlZQUAAAARYXZhaWxhYmxlQmFsYW5jZUIFAAAACmFzc2V0TmFtZUIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQgUAAAALbmV3QmFsYW5jZUIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACmtJbnZhcmlhbnQJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgUAAAALbmV3QmFsYW5jZUEFAAAAC25ld0JhbGFuY2VCCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAOYW1vdW50TWludXNGZWUFAAAAC3NlbmRBc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAB2dvdkFkZHIFAAAAEGdvdmVybmFuY2VSZXdhcmQFAAAAC3NlbmRBc3NldElkBQAAAANuaWwAAAABaQEAAAAIc2h1dGRvd24AAAAAAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABCQABLAAAAAICAAAAIkRBcHAgaXMgYWxyZWFkeSBzdXNwZW5kZWQuIENhdXNlOiAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAGa0NhdXNlAgAAABp0aGUgY2F1c2Ugd2Fzbid0IHNwZWNpZmllZAMJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAARMAAAAAgUAAAAEYWRtMQkABEwAAAACBQAAAARhZG0yCQAETAAAAAIFAAAABGFkbTMJAARMAAAAAgUAAAAMYWRtU3RhcnRTdG9wBQAAAANuaWwIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkBAAAADnRocm93T25seUFkbWluAAAAAAkBAAAAB3N1c3BlbmQAAAABAgAAAA9QYXVzZWQgYnkgYWRtaW4AAAABaQEAAAAIYWN0aXZhdGUAAAAAAwUAAAAIaXNBY3RpdmUJAQAAAA10aHJvd0lzQWN0aXZlAAAAAAMJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAARMAAAAAgUAAAAEYWRtMQkABEwAAAACBQAAAARhZG0yCQAETAAAAAIFAAAABGFkbTMJAARMAAAAAgUAAAAMYWRtU3RhcnRTdG9wBQAAAANuaWwIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkBAAAADnRocm93T25seUFkbWluAAAAAAkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAHa0FjdGl2ZQYJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQUAAAAGa0NhdXNlBQAAAANuaWwAAAABaQEAAAAZdGFrZUludG9BY2NvdW50RXh0cmFGdW5kcwAAAAEAAAALYW1vdW50TGVhdmUEAAAADHVuY291bnRhYmxlQQkAAGUAAAACBQAAABlhY2NvdW50QmFsYW5jZVdpdGhTdGFrZWRBBQAAAAhiYWxhbmNlQQQAAAAMdW5jb3VudGFibGVCCQAAZQAAAAIFAAAAGWFjY291bnRCYWxhbmNlV2l0aFN0YWtlZEIFAAAACGJhbGFuY2VCBAAAAA1hbW91bnRFbnJvbGxBCQAAZQAAAAIFAAAADHVuY291bnRhYmxlQQMJAAAAAAAAAgUAAAAIYXNzZXRJZEEFAAAABHVuaXQFAAAAC2Ftb3VudExlYXZlAAAAAAAAAAAABAAAAA1hbW91bnRFbnJvbGxCCQAAZQAAAAIFAAAADHVuY291bnRhYmxlQgMJAAAAAAAAAgUAAAAIYXNzZXRJZEIFAAAABHVuaXQFAAAAC2Ftb3VudExlYXZlAAAAAAAAAAAABAAAAAxpbnZhcmlhbnROZXcJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAANYW1vdW50RW5yb2xsQQkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAANYW1vdW50RW5yb2xsQgMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAQAAAA90aHJvd0lzSW5hY3RpdmUAAAAAAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQEAAAAOdGhyb3dPbmx5QWRtaW4AAAAAAwkAAGYAAAACAAAAAAAAAAAABQAAAAthbW91bnRMZWF2ZQkAAAIAAAABCQABLAAAAAICAAAAM0FyZ3VtZW50ICdhbW91bnRMZWF2ZScgY2Fubm90IGJlIG5lZ2F0aXZlLiBBY3R1YWw6IAkAAaQAAAABBQAAAAthbW91bnRMZWF2ZQMDCQAAZgAAAAIAAAAAAAAAAAAFAAAADHVuY291bnRhYmxlQQYJAABmAAAAAgAAAAAAAAAAAAUAAAAMdW5jb3VudGFibGVCCQEAAAAHc3VzcGVuZAAAAAECAAAAFkVucm9sbCBhbW91bnQgbmVnYXRpdmUDAwkAAGYAAAACAAAAAAAAAAAABQAAAA1hbW91bnRFbnJvbGxBBgkAAGYAAAACAAAAAAAAAAAABQAAAA1hbW91bnRFbnJvbGxCCQAAAgAAAAECAAAAFVRvbyBsYXJnZSBhbW91bnRMZWF2ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAKa0ludmFyaWFudAUAAAAMaW52YXJpYW50TmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAlrQmFsYW5jZUEJAABkAAAAAgUAAAAIYmFsYW5jZUEFAAAADWFtb3VudEVucm9sbEEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQgkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAANYW1vdW50RW5yb2xsQgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAAAxsYXN0X2luY29tZV8FAAAAC3N0ckFzc2V0SWRBBQAAAA1hbW91bnRFbnJvbGxBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAADGxhc3RfaW5jb21lXwUAAAALc3RyQXNzZXRJZEIFAAAADWFtb3VudEVucm9sbEIFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAByRtYXRjaDAFAAAAAnR4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABdJbnZva2VTY3JpcHRUcmFuc2FjdGlvbgQAAAADaW52BQAAAAckbWF0Y2gwBAAAABNjYWxsVGFrZUludG9BY2NvdW50AwkAAAAAAAACCAUAAAADaW52AAAABGRBcHAFAAAABHRoaXMJAAAAAAAAAggFAAAAA2ludgAAAAhmdW5jdGlvbgIAAAAZdGFrZUludG9BY2NvdW50RXh0cmFGdW5kcwcEAAAAC2NhbGxTdGFraW5nAwkAAAAAAAACCAUAAAADaW52AAAABGRBcHAFAAAADnN0YWtpbmdBZGRyZXNzAwMDCQAAAAAAAAIIBQAAAANpbnYAAAAIZnVuY3Rpb24CAAAADGxvY2tOZXV0cmlubwkAAAAAAAACCQABkAAAAAEIBQAAAANpbnYAAAAIcGF5bWVudHMAAAAAAAAAAAEHCQAAAAAAAAIICQABkQAAAAIIBQAAAANpbnYAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAUAAAAEVVNETgcGAwkAAAAAAAACCAUAAAADaW52AAAACGZ1bmN0aW9uAgAAAA51bmxvY2tOZXV0cmlubwkAAAAAAAACCQABkAAAAAEIBQAAAANpbnYAAAAIcGF5bWVudHMAAAAAAAAAAAAHBwQAAAAPZXhjaGFuZ2VUb1dhdmVzAwMDCQAAAAAAAAIIBQAAAANpbnYAAAAEZEFwcAUAAAAUVVNETlRvV2F2ZXNFeGNoYW5nZXIJAAAAAAAAAggFAAAAA2ludgAAAAhmdW5jdGlvbgIAAAAIZXhjaGFuZ2UHCQAAAAAAAAIFAAAACGFzc2V0SWRBBQAAAARVU0ROBwYDAwkAAAAAAAACBQAAAAhhc3NldElkQgUAAAAEVVNETgkAAAAAAAACCQABkAAAAAEIBQAAAANpbnYAAAAIcGF5bWVudHMAAAAAAAAAAAEHCQAAAAAAAAIICQABkQAAAAIIBQAAAANpbnYAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAUAAAAEVVNETgcEAAAADXNpZ25lZEJ5QWRtaW4DAwMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAAARhZG0xBgkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAABGFkbTIGCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAEYWRtMwYJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAAAphZG1TdGFraW5nAwMDBQAAABNjYWxsVGFrZUludG9BY2NvdW50BgUAAAALY2FsbFN0YWtpbmcGBQAAAA9leGNoYW5nZVRvV2F2ZXMFAAAADXNpZ25lZEJ5QWRtaW4HBAAAAAphZG0xU2lnbmVkAwkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAABGFkbTEAAAAAAAAAAAEAAAAAAAAAAAAEAAAACmFkbTJTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAAEYWRtMgAAAAAAAAAAAQAAAAAAAAAAAAQAAAAKYWRtM1NpZ25lZAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAACBQAAAARhZG0zAAAAAAAAAAABAAAAAAAAAAAACQAAZwAAAAIJAABkAAAAAgkAAGQAAAACBQAAAAphZG0xU2lnbmVkBQAAAAphZG0yU2lnbmVkBQAAAAphZG0zU2lnbmVkAAAAAAAAAAACt2eDCA==", "height": 2681275, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DZUWBTsdYZ6xi3f6nKnewajY3tFM1sHHxJgHaRJcSizj Next: 9aSC87Ub5LW2JueEeButiKuwbuDsotoggDtefnTXRfPs Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "2.0.0"
2727
2828 let m = "shutdown_cause"
2929
30-let n = base58'DXDY2itiEcYBtGkVLnkpHtDFyWQUkoLJz79uJ7ECbMrA'
30+let n = "admin_pub_1"
3131
32-let o = base58'E6Wa1SGoktYcjHjsKrvjMiqJY3SWmGKcD8Q5L8kxSPS7'
32+let o = "admin_pub_2"
3333
34-let p = base58'AZmWJtuy4GeVrMmJH4hfFBRApe1StvhJSk4jcbT6bArQ'
34+let p = "admin_pub_3"
3535
36-let q = base58'EtVkT6ed8GtbUiVVEqdmEqsp2J4qbb3rre2HFgxeVYdg'
36+let q = Address(base58'3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG')
3737
38-let r = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h'
38+let r = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
3939
40-let s = Address(base58'3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp')
40+func s (t) = {
41+ let u = getString(r, t)
42+ if ($isInstanceOf(u, "String"))
43+ then {
44+ let v = u
45+ fromBase58String(v)
46+ }
47+ else {
48+ let w = u
49+ throw("Admin public key is empty")
50+ }
51+ }
4152
42-let t = Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ')
4353
44-let u = Address(base58'3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG')
54+let x = s(n)
4555
46-let v = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
56+let y = s(o)
4757
48-let w = 270000
58+let z = s(p)
4959
50-let x = getBooleanValue(this, c)
60+let A = base58'EtVkT6ed8GtbUiVVEqdmEqsp2J4qbb3rre2HFgxeVYdg'
5161
52-let y = getStringValue(this, d)
62+let B = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h'
5363
54-let z = getStringValue(this, e)
64+let C = Address(base58'3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp')
5565
56-let A = if ((y == "WAVES"))
66+let D = Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ')
67+
68+let E = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
69+
70+let F = 270000
71+
72+let G = getBooleanValue(this, c)
73+
74+let H = getStringValue(this, d)
75+
76+let I = getStringValue(this, e)
77+
78+let J = if ((H == "WAVES"))
5779 then unit
58- else fromBase58String(y)
80+ else fromBase58String(H)
5981
60-let B = if ((z == "WAVES"))
82+let K = if ((I == "WAVES"))
6183 then unit
62- else fromBase58String(z)
84+ else fromBase58String(I)
6385
64-let C = {
65- let D = A
66- if ($isInstanceOf(D, "ByteVector"))
86+let L = {
87+ let u = J
88+ if ($isInstanceOf(u, "ByteVector"))
6789 then {
68- let E = D
69- value(assetInfo(E)).name
90+ let M = u
91+ value(assetInfo(M)).name
7092 }
71- else if ($isInstanceOf(D, "Unit"))
93+ else if ($isInstanceOf(u, "Unit"))
7294 then {
73- let F = D
95+ let N = u
7496 "WAVES"
7597 }
7698 else throw("Match error")
7799 }
78100
79-let G = {
80- let D = B
81- if ($isInstanceOf(D, "ByteVector"))
101+let O = {
102+ let u = K
103+ if ($isInstanceOf(u, "ByteVector"))
82104 then {
83- let E = D
84- value(assetInfo(E)).name
105+ let M = u
106+ value(assetInfo(M)).name
85107 }
86- else if ($isInstanceOf(D, "Unit"))
108+ else if ($isInstanceOf(u, "Unit"))
87109 then {
88- let F = D
110+ let N = u
89111 "WAVES"
90112 }
91113 else throw("Match error")
92114 }
93115
94-let H = getIntegerValue(this, f)
116+let P = getIntegerValue(this, f)
95117
96-let I = getIntegerValue(this, g)
118+let Q = getIntegerValue(this, g)
97119
98-let J = fromBase58String(getStringValue(this, h))
120+let R = fromBase58String(getStringValue(this, h))
99121
100-let K = getIntegerValue(this, i)
122+let S = getIntegerValue(this, i)
101123
102-let L = 500
124+let T = getIntegerValue(this, l)
103125
104-let M = 200
126+let U = 500
105127
106-let N = 1000000
128+let V = 200
107129
108-let O = 1000
130+let W = 1000000
109131
110-let P = 100000000
132+let X = 1000
111133
112-let Q = 1000000000000
134+let Y = 100000000
113135
114-let R = 1000
136+let Z = 1000000000000
115137
116-let S = 8
138+let aa = 1000
117139
118-let T = 50
140+let ab = 8
119141
120-let U = 100
142+let ac = 50
121143
122-let V = 90000000
144+let ad = 100
123145
124-let W = 110000000
146+let ae = 90000000
125147
126-let X = 50
148+let af = 110000000
127149
128-let Y = 2
150+let ag = 50
129151
130-let Z = 46000000
152+let ah = 2
131153
132-func aa (ab) = {
133- let D = ab
134- if ($isInstanceOf(D, "ByteVector"))
154+let ai = 46000000
155+
156+func aj (ak) = {
157+ let u = ak
158+ if ($isInstanceOf(u, "ByteVector"))
135159 then {
136- let E = D
137- assetBalance(this, E)
160+ let M = u
161+ assetBalance(this, M)
138162 }
139- else if ($isInstanceOf(D, "Unit"))
163+ else if ($isInstanceOf(u, "Unit"))
140164 then {
141- let F = D
165+ let N = u
142166 wavesBalance(this).available
143167 }
144168 else throw("Match error")
145169 }
146170
147171
148-let ac = {
149- let D = getInteger(t, ((("rpd_balance_" + toBase58String(v)) + "_") + toString(this)))
150- if ($isInstanceOf(D, "Int"))
172+let al = {
173+ let u = getInteger(D, ((("rpd_balance_" + toBase58String(E)) + "_") + toString(this)))
174+ if ($isInstanceOf(u, "Int"))
151175 then {
152- let ad = D
153- ad
176+ let am = u
177+ am
154178 }
155- else if ($isInstanceOf(D, "Unit"))
179+ else if ($isInstanceOf(u, "Unit"))
156180 then {
157- let ae = D
181+ let w = u
158182 0
159183 }
160184 else throw("Match error")
161185 }
162186
163-let af = (H - (if ((A == v))
164- then ac
187+let an = (P - (if ((J == E))
188+ then al
165189 else 0))
166190
167-let ag = (I - (if ((B == v))
168- then ac
191+let ao = (Q - (if ((K == E))
192+ then al
169193 else 0))
170194
171-let ah = (aa(A) + (if ((A == v))
172- then ac
195+let ap = (aj(J) + (if ((J == E))
196+ then al
173197 else 0))
174198
175-let ai = (aa(B) + (if ((B == v))
176- then ac
199+let aq = (aj(K) + (if ((K == E))
200+ then al
177201 else 0))
178202
179-let aj = if ((ah >= H))
180- then (ai >= I)
203+let ar = if ((ap >= P))
204+ then (aq >= Q)
181205 else false
182206
183-func ak (al,am) = (((fraction(Q, al, am) + fraction(Q, am, al)) / 2) / 10000)
207+func as (at,au) = (((fraction(Z, at, au) + fraction(Z, au, at)) / 2) / 10000)
184208
185209
186-func an (al,am) = {
187- let ao = ak(al, am)
188- (fraction((al + am), P, pow(ao, S, X, Y, S, UP)) + (2 * fraction(pow(fraction(al, am, P), 0, 5, 1, (S / 2), DOWN), pow((ao - Z), S, X, Y, S, DOWN), P)))
210+func av (at,au) = {
211+ let aw = as(at, au)
212+ (fraction((at + au), Y, pow(aw, ab, ag, ah, ab, CEILING)) + (2 * fraction(pow(fraction(at, au, Y), 0, 5, 1, (ab / 2), DOWN), pow((aw - ai), ab, ag, ah, ab, DOWN), Y)))
189213 }
190214
191215
192-func ap (aq,ar,as,at) = {
193- let au = (P - ((P * 1) / 10000000))
194- let av = (aq - ar)
195- let aw = an(H, I)
196- let al = (H + as)
197- let am = (I + as)
198- let ax = if ((at == A))
199- then an(al, (I - aq))
200- else if ((at == B))
201- then an((H - aq), am)
216+func ax (ay,az,aA,aB) = {
217+ let aC = (Y - ((Y * 1) / 10000000))
218+ let aD = (ay - az)
219+ let at = (P + aA)
220+ let au = (Q + aA)
221+ let aE = if ((aB == J))
222+ then av(at, (Q - ay))
223+ else if ((aB == K))
224+ then av((P - ay), au)
202225 else throw("Wrong asset in payment")
203- let ay = fraction(P, aw, ax)
204- func az (aA,aB) = if ((aA == -1))
226+ let aF = fraction(Y, T, aE)
227+ func aG (aH,aI) = if ((aH == -1))
205228 then {
206- let aC = (aq - ((aB * av) / 5))
207- let aD = if ((at == A))
208- then an(al, (I - aC))
209- else an((H - aC), am)
210- if ((aD > aw))
211- then aC
229+ let aJ = (ay - ((aI * aD) / 5))
230+ let aK = if ((aB == J))
231+ then av(at, (Q - aJ))
232+ else av((P - aJ), au)
233+ if ((aK > T))
234+ then aJ
212235 else -1
213236 }
214- else aA
237+ else aH
215238
216- let aE = {
217- let aF = [1, 2, 3, 4, 5]
218- let aG = size(aF)
219- let aH = -1
220- if ((aG == 0))
221- then aH
239+ let aL = {
240+ let aM = [1, 2, 3, 4, 5]
241+ let aN = size(aM)
242+ let aO = -1
243+ if ((aN == 0))
244+ then aO
222245 else {
223- let aI = az(aH, aF[0])
224- if ((aG == 1))
225- then aI
246+ let aP = aG(aO, aM[0])
247+ if ((aN == 1))
248+ then aP
226249 else {
227- let aJ = az(aI, aF[1])
228- if ((aG == 2))
229- then aJ
250+ let aQ = aG(aP, aM[1])
251+ if ((aN == 2))
252+ then aQ
230253 else {
231- let aK = az(aJ, aF[2])
232- if ((aG == 3))
233- then aK
254+ let aR = aG(aQ, aM[2])
255+ if ((aN == 3))
256+ then aR
234257 else {
235- let aL = az(aK, aF[3])
236- if ((aG == 4))
237- then aL
258+ let aS = aG(aR, aM[3])
259+ if ((aN == 4))
260+ then aS
238261 else {
239- let aM = az(aL, aF[4])
240- if ((aG == 5))
241- then aM
262+ let aT = aG(aS, aM[4])
263+ if ((aN == 5))
264+ then aT
242265 else {
243- let aN = az(aM, aF[5])
266+ let aU = aG(aT, aM[5])
244267 throw("List size exceed 5")
245268 }
246269 }
249272 }
250273 }
251274 }
252- if ((0 > aE))
275+ if ((0 > aL))
253276 then throw("something went wrong while working with amountToSend")
254- else if (if ((ay > au))
255- then (ax > aw)
277+ else if (if ((aF > aC))
278+ then (aE > T)
256279 else false)
257- then aq
258- else aE
280+ then ay
281+ else aL
259282 }
260283
261284
262-func aO (ab) = {
263- let D = ab
264- if ($isInstanceOf(D, "ByteVector"))
285+func aV (ak) = {
286+ let u = ak
287+ if ($isInstanceOf(u, "ByteVector"))
265288 then {
266- let E = D
267- let aP = toBase58String(E)
268- let aQ = valueOrErrorMessage(assetInfo(E), (("Asset " + aP) + " doesn't exist"))
269- $Tuple3(aP, aQ.name, aQ.decimals)
289+ let M = u
290+ let aW = toBase58String(M)
291+ let aX = valueOrErrorMessage(assetInfo(M), (("Asset " + aW) + " doesn't exist"))
292+ $Tuple3(aW, aX.name, aX.decimals)
270293 }
271- else if ($isInstanceOf(D, "Unit"))
294+ else if ($isInstanceOf(u, "Unit"))
272295 then {
273- let F = D
296+ let N = u
274297 $Tuple3("WAVES", "WAVES", 8)
275298 }
276299 else throw("Match error")
277300 }
278301
279302
280-func aR (aS) = [BooleanEntry(c, false), StringEntry(m, aS)]
303+func aY (aZ) = [BooleanEntry(c, false), StringEntry(m, aZ)]
281304
282305
283-func aT (aU,ab) = if ((ab == v))
306+func ba (bb,ak) = if ((ak == E))
284307 then {
285- let aV = (aU - w)
286- if ((0 >= aV))
287- then throw((((("Insufficient amount " + toString(aU)) + " to deduct staking fee ") + toString(w)) + " USD-N"))
288- else aV
308+ let bc = (bb - F)
309+ if ((0 >= bc))
310+ then throw((((("Insufficient amount " + toString(bb)) + " to deduct staking fee ") + toString(F)) + " USD-N"))
311+ else bc
289312 }
290- else aU
313+ else bb
291314
292315
293-func aW () = throw("DApp is already active")
316+func bd () = throw("DApp is already active")
294317
295318
296-func aX () = throw("DApp is inactive at this moment")
319+func be () = throw("DApp is inactive at this moment")
297320
298321
299-func aY () = throw("Only admin can call this function")
322+func bf () = throw("Only admin can call this function")
300323
301324
302-func aZ () = throw(((("Incorrect assets attached. Expected: " + y) + " and ") + z))
325+func bg () = throw(((("Incorrect assets attached. Expected: " + H) + " and ") + I))
303326
304327
305-func ba (bb,bc,bd) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(bb)) + ": ") + toString(bc)) + " ") + C) + ", ") + toString(bd)) + " ") + G))
328+func bh (bi,bj,bk) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(bi)) + ": ") + toString(bj)) + " ") + L) + ", ") + toString(bk)) + " ") + O))
306329
307330
308-func be (aU,bf,bg) = throw((((((((("Insufficient DApp balance to pay " + toString(aU)) + " ") + bg) + " due to staking. Available: ") + toString(bf)) + " ") + bg) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
331+func bl (bb,bm,bn) = throw((((((((("Insufficient DApp balance to pay " + toString(bb)) + " ") + bn) + " due to staking. Available: ") + toString(bm)) + " ") + bn) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
309332
310333
311-func bh (bc,bd) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(bc)) + " ") + C) + " and ") + toString(bd)) + " ") + G) + " due to staking. Available: ") + toString(af)) + " ") + C) + " and ") + toString(ag)) + " ") + G) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
334+func bo (bj,bk) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(bj)) + " ") + L) + " and ") + toString(bk)) + " ") + O) + " due to staking. Available: ") + toString(an)) + " ") + L) + " and ") + toString(ao)) + " ") + O) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
312335
313336
314-func bi () = aR(((((((((((((((("Suspicious state. Actual balances: " + toString(ah)) + " ") + C) + ", ") + toString(ai)) + " ") + G) + ". State: ") + toString(H)) + " ") + C) + ", ") + toString(I)) + " ") + G))
337+func bp () = aY(((((((((((((((("Suspicious state. Actual balances: " + toString(P)) + " ") + L) + ", ") + toString(Q)) + " ") + O) + ". State: ") + toString(aj(J))) + " ") + L) + ", ") + toString(aj(K))) + " ") + O))
315338
316339
317-@Callable(bj)
340+@Callable(bq)
318341 func init () = {
319- let bk = $Tuple2(bj.payments[0].amount, bj.payments[0].assetId)
320- let bl = bk._1
321- let bm = bk._2
322- let bn = $Tuple2(bj.payments[1].amount, bj.payments[1].assetId)
323- let bo = bn._1
324- let bp = bn._2
325- let bq = aO(bm)
326- let br = bq._1
327- let bs = bq._2
328- let bt = bq._3
329- let bu = aO(bp)
342+ let br = $Tuple2(bq.payments[0].amount, bq.payments[0].assetId)
343+ let bs = br._1
344+ let bt = br._2
345+ let bu = $Tuple2(bq.payments[1].amount, bq.payments[1].assetId)
330346 let bv = bu._1
331347 let bw = bu._2
332- let bx = bu._3
348+ let bx = aV(bt)
349+ let by = bx._1
350+ let bz = bx._2
351+ let bA = bx._3
352+ let bB = aV(bw)
353+ let bC = bB._1
354+ let bD = bB._2
355+ let bE = bB._3
333356 if (isDefined(getBoolean(this, c)))
334- then aW()
335- else if ((bm == bp))
357+ then bd()
358+ else if ((bt == bw))
336359 then throw("Assets must be different")
337360 else {
338- let by = ((("s" + take(bs, 7)) + "_") + take(bw, 7))
339- let bz = ((((("ShareToken of SwopFi protocol for " + bs) + " and ") + bw) + " at address ") + toString(this))
340- let bA = ((bt + bx) / 2)
341- let bB = fraction(pow(bl, bt, 5, 1, bt, HALFDOWN), pow(bo, bx, 5, 1, bx, HALFDOWN), pow(10, 0, bA, 0, 0, HALFDOWN))
342- let bC = Issue(by, bz, bB, bA, true)
343- let bD = calculateAssetId(bC)
344- let bE = an(bl, bo)
345-[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, br), StringEntry(e, bv), IntegerEntry(f, bl), IntegerEntry(g, bo), IntegerEntry(l, bE), IntegerEntry(j, L), IntegerEntry(k, N), bC, StringEntry(h, toBase58String(bD)), IntegerEntry(i, bB), ScriptTransfer(bj.caller, bB, bD)]
361+ let bF = ((("s" + take(bz, 7)) + "_") + take(bD, 7))
362+ let bG = ((((("ShareToken of SwopFi protocol for " + bz) + " and ") + bD) + " at address ") + toString(this))
363+ let bH = ((bA + bE) / 2)
364+ let bI = fraction(pow(bs, bA, 5, 1, bA, DOWN), pow(bv, bE, 5, 1, bE, DOWN), pow(10, 0, bH, 0, 0, DOWN))
365+ let bJ = Issue(bF, bG, bI, bH, true)
366+ let bK = calculateAssetId(bJ)
367+ let bL = av(bs, bv)
368+[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, by), StringEntry(e, bC), IntegerEntry(f, bs), IntegerEntry(g, bv), IntegerEntry(l, bL), IntegerEntry(j, U), IntegerEntry(k, W), bJ, StringEntry(h, toBase58String(bK)), IntegerEntry(i, bI), ScriptTransfer(bq.caller, bI, bK)]
346369 }
347370 }
348371
349372
350373
351-@Callable(bj)
352-func replenishWithTwoTokens (bF) = {
353- let bm = bj.payments[0].assetId
354- let bp = bj.payments[1].assetId
355- let bl = aT(bj.payments[0].amount, bm)
356- let bo = aT(bj.payments[1].amount, bp)
357- let bG = fraction(fraction(P, H, bl), O, fraction(P, I, bo))
358- let bH = fraction(P, bl, H)
359- let bI = fraction(P, bo, I)
360- let bJ = fraction(min([bH, bI]), K, P)
361- let bE = an((H + bl), (I + bo))
362- if (!(x))
363- then aX()
364- else if (if ((0 > bF))
374+@Callable(bq)
375+func replenishWithTwoTokens (bM) = {
376+ let bt = bq.payments[0].assetId
377+ let bw = bq.payments[1].assetId
378+ let bs = ba(bq.payments[0].amount, bt)
379+ let bv = ba(bq.payments[1].amount, bw)
380+ let bN = fraction(fraction(Y, P, bs), X, fraction(Y, Q, bv))
381+ let bO = fraction(Y, bs, P)
382+ let bP = fraction(Y, bv, Q)
383+ let bQ = fraction(min([bO, bP]), S, Y)
384+ let bL = av((P + bs), (Q + bv))
385+ if (!(G))
386+ then be()
387+ else if (if ((0 > bM))
365388 then true
366- else (bF > 10))
389+ else (bM > 10))
367390 then throw("Slippage tolerance must be <= 1%")
368- else if ((size(bj.payments) != 2))
391+ else if ((size(bq.payments) != 2))
369392 then throw("Two attached assets expected")
370- else if (if ((bm != A))
393+ else if (if ((bt != J))
371394 then true
372- else (bp != B))
373- then aZ()
374- else if (if ((((O * (R - bF)) / R) > bG))
395+ else (bw != K))
396+ then bg()
397+ else if (if ((((X * (aa - bM)) / aa) > bN))
375398 then true
376- else (bG > ((O * (R + bF)) / R)))
399+ else (bN > ((X * (aa + bM)) / aa)))
377400 then throw("Incorrect assets amount: amounts must have the contract ratio")
378- else if ((bJ == 0))
401+ else if ((bQ == 0))
379402 then throw("Too small amount to replenish")
380- else if (!(aj))
381- then ([ScriptTransfer(bj.caller, bl, bm), ScriptTransfer(bj.caller, bo, bp)] ++ bi())
382- else [IntegerEntry(f, (H + bl)), IntegerEntry(g, (I + bo)), IntegerEntry(i, (K + bJ)), IntegerEntry(l, bE), Reissue(J, bJ, true), ScriptTransfer(bj.caller, bJ, J)]
403+ else if (!(ar))
404+ then ([ScriptTransfer(bq.caller, bs, bt), ScriptTransfer(bq.caller, bv, bw)] ++ bp())
405+ else [IntegerEntry(f, (P + bs)), IntegerEntry(g, (Q + bv)), IntegerEntry(i, (S + bQ)), IntegerEntry(l, bL), Reissue(R, bQ, true), ScriptTransfer(bq.caller, bQ, R)]
383406 }
384407
385408
386409
387-@Callable(bj)
388-func replenishWithOneToken (bK,bL) = {
389- let bM = $Tuple2(bj.payments[0].amount, bj.payments[0].assetId)
390- let bN = bM._1
391- let bO = bM._2
392- let aw = an(H, I)
393- let bP = 5000000
394- let bQ = 50000000
395- let bR = if ((bQ > bN))
410+@Callable(bq)
411+func replenishWithOneToken (bR,bS) = {
412+ let bT = $Tuple2(bq.payments[0].amount, bq.payments[0].assetId)
413+ let bU = bT._1
414+ let bV = bT._2
415+ let bW = 5000000
416+ let bX = 50000000
417+ let bY = if ((bX > bU))
396418 then 100000
397419 else 1
398- let bS = (P - ((P * bR) / 10000000))
399- let bT = (P + ((P * bR) / 10000000))
400- let bU = (P - ((P * 1) / 10000000))
401- if (!(x))
402- then aX()
403- else if ((bP > bN))
404- then throw((((("Payment amount " + toString(bN)) + " does not exceed the minimum amount of ") + toString(bP)) + " tokens"))
405- else if ((size(bj.payments) != 1))
420+ let bZ = (Y - ((Y * bY) / 10000000))
421+ let ca = (Y + ((Y * bY) / 10000000))
422+ let cb = (Y - ((Y * 1) / 10000000))
423+ if (!(G))
424+ then be()
425+ else if ((bW > bU))
426+ then throw((((("Payment amount " + toString(bU)) + " does not exceed the minimum amount of ") + toString(bW)) + " tokens"))
427+ else if ((size(bq.payments) != 1))
406428 then throw("One attached payment expected")
407- else if (!(aj))
408- then ([ScriptTransfer(bj.caller, bN, bO)] ++ bi())
409- else if (if ((bO != A))
410- then (bO != B)
429+ else if (!(ar))
430+ then ([ScriptTransfer(bq.caller, bU, bV)] ++ bp())
431+ else if (if ((bV != J))
432+ then (bV != K)
411433 else false)
412- then aZ()
434+ then bg()
413435 else {
414- let bV = if ((bO == A))
415- then $Tuple6((bN - bK), bL, (H + bK), (I - bL), (H + bN), I)
416- else $Tuple6(bL, (bN - bK), (H - bL), (I + bK), H, (I + bN))
417- let bW = bV._1
418- let bX = bV._2
419- let bY = bV._3
420- let bZ = bV._4
421- let ca = bV._5
422- let cb = bV._6
423- let ax = an(bY, bZ)
424- let ay = fraction(P, aw, ax)
425- let cc = (fraction((P * P), bY, bZ) / fraction(P, bW, bX))
426- let cd = fraction((ca + cb), T, (2 * U))
427- if (if ((bU >= ay))
436+ let cc = if ((bV == J))
437+ then $Tuple7((bU - bR), bS, (P + bR), (Q - bS), av((P + bU), Q), (P + bU), Q)
438+ else $Tuple7(bS, (bU - bR), (P - bS), (Q + bR), av(P, (Q + bU)), P, (Q + bU))
439+ let cd = cc._1
440+ let ce = cc._2
441+ let cf = cc._3
442+ let cg = cc._4
443+ let bL = cc._5
444+ let ch = cc._6
445+ let ci = cc._7
446+ let cj = if ((bV == J))
447+ then IntegerEntry(f, ch)
448+ else IntegerEntry(g, ci)
449+ let aE = av(cf, cg)
450+ let aF = fraction(Y, T, aE)
451+ let ck = (fraction((Y * Y), cf, cg) / fraction(Y, cd, ce))
452+ let cl = fraction((ch + ci), ac, (2 * ad))
453+ if (if ((cb >= aF))
428454 then true
429- else (aw > ax))
455+ else (T > aE))
430456 then throw("Incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
431- else if (if ((bS > cc))
457+ else if (if ((bZ > ck))
432458 then true
433- else (cc > bT))
459+ else (ck > ca))
434460 then throw("Swap with virtualSwapTokenPay and virtualSwapTokenGet is possible, but ratio after virtual swap is incorrect")
435- else if (if ((cd > ca))
461+ else if (if ((cl > ch))
436462 then true
437- else (cd > cb))
438- then ba(cd, ca, cb)
463+ else (cl > ci))
464+ then bh(cl, ch, ci)
439465 else {
440- let bH = fraction(aT(bW, A), P, bY)
441- let bI = fraction(aT(bX, B), P, bZ)
442- let bJ = fraction(min([bH, bI]), K, P)
443- let ce = fraction(bJ, (N - (L / 2)), N)
444- let cf = fraction(bJ, (M / 2), N)
445- let cg = fraction(cf, H, K)
446- let ch = fraction(cf, I, K)
447- let bE = an((ca - cg), (cb - ch))
448-[Reissue(J, ce, true), ScriptTransfer(bj.caller, ce, J), ScriptTransfer(s, cg, A), ScriptTransfer(s, ch, B), IntegerEntry(f, aT((ca - cg), A)), IntegerEntry(g, aT((cb - ch), B)), IntegerEntry(i, (K + ce)), IntegerEntry(l, bE)]
466+ let bO = fraction(ba(cd, J), Y, cf)
467+ let bP = fraction(ba(ce, K), Y, cg)
468+ let bQ = fraction(min([bO, bP]), S, Y)
469+[Reissue(R, bQ, true), ScriptTransfer(bq.caller, bQ, R), IntegerEntry(i, (S + bQ)), cj, IntegerEntry(l, bL)]
449470 }
450471 }
451472 }
452473
453474
454475
455-@Callable(bj)
476+@Callable(bq)
456477 func withdraw () = {
457- let ci = $Tuple2(bj.payments[0].amount, bj.payments[0].assetId)
458- let bN = ci._1
459- let bO = ci._2
460- let cj = aT(fraction(bN, H, K), A)
461- let ck = aT(fraction(bN, I, K), B)
462- let bE = an((H - cj), (I - ck))
463- if (!(x))
464- then aX()
465- else if ((size(bj.payments) != 1))
478+ let cm = $Tuple2(bq.payments[0].amount, bq.payments[0].assetId)
479+ let bU = cm._1
480+ let bV = cm._2
481+ let cn = ba(fraction(bU, P, S), J)
482+ let co = ba(fraction(bU, Q, S), K)
483+ let bL = av((P - cn), (Q - co))
484+ if (!(G))
485+ then be()
486+ else if ((size(bq.payments) != 1))
466487 then throw("One attached payment expected")
467- else if ((bO != J))
468- then throw(("Incorrect asset attached. Expected: " + toBase58String(J)))
469- else if (!(aj))
470- then ([ScriptTransfer(bj.caller, bN, bO)] ++ bi())
471- else if (if ((cj > af))
488+ else if ((bV != R))
489+ then throw(("Incorrect asset attached. Expected: " + toBase58String(R)))
490+ else if (!(ar))
491+ then ([ScriptTransfer(bq.caller, bU, bV)] ++ bp())
492+ else if (if ((cn > an))
472493 then true
473- else (ck > ag))
474- then bh(cj, ck)
475- else [IntegerEntry(f, (H - cj)), IntegerEntry(g, (I - ck)), IntegerEntry(i, (K - bN)), IntegerEntry(l, bE), Burn(J, bN), ScriptTransfer(bj.caller, cj, A), ScriptTransfer(bj.caller, ck, B)]
494+ else (co > ao))
495+ then bo(cn, co)
496+ else [IntegerEntry(f, (P - cn)), IntegerEntry(g, (Q - co)), IntegerEntry(i, (S - bU)), IntegerEntry(l, bL), Burn(R, bU), ScriptTransfer(bq.caller, cn, J), ScriptTransfer(bq.caller, co, K)]
476497 }
477498
478499
479500
480-@Callable(bj)
481-func exchange (cl,cm) = {
482- let cn = $Tuple2(bj.payments[0].amount, bj.payments[0].assetId)
483- let bN = cn._1
484- let bO = cn._2
485- if (!(x))
486- then aX()
487- else if ((0 >= cl))
488- then throw(("Estimated amount must be positive. Actual: " + toString(cl)))
489- else if ((cm > cl))
490- then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(cl)) + ". Minimal: ") + toString(cm)))
491- else if ((size(bj.payments) != 1))
501+@Callable(bq)
502+func exchange (cp,cq) = {
503+ let cr = $Tuple2(bq.payments[0].amount, bq.payments[0].assetId)
504+ let bU = cr._1
505+ let bV = cr._2
506+ if (!(G))
507+ then be()
508+ else if ((0 >= cp))
509+ then throw(("Estimated amount must be positive. Actual: " + toString(cp)))
510+ else if ((cq > cp))
511+ then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(cp)) + ". Minimal: ") + toString(cq)))
512+ else if ((size(bq.payments) != 1))
492513 then throw("One attached payment expected")
493- else if (!(aj))
494- then ([ScriptTransfer(bj.caller, bN, bO)] ++ bi())
495- else if (if ((bO != A))
496- then (bO != B)
514+ else if (!(ar))
515+ then ([ScriptTransfer(bq.caller, bU, bV)] ++ bp())
516+ else if (if ((bV != J))
517+ then (bV != K)
497518 else false)
498- then aZ()
499- else if ((10000000 > bN))
519+ then bg()
520+ else if ((10000000 > bU))
500521 then throw("Only swap of 10.000000 or more tokens is allowed")
501- else if (if ((V > fraction(P, cm, bN)))
522+ else if (if ((ae > fraction(Y, cq, bU)))
502523 then true
503- else (fraction(P, cl, bN) > W))
524+ else (fraction(Y, cp, bU) > af))
504525 then throw("Incorrect args and pmt ratio")
505526 else {
506- let co = if ((bO == A))
507- then B
508- else A
509- let aU = ap(cl, cm, bN, bO)
510- let cp = fraction(aU, M, N)
511- let cq = fraction(aU, (N - L), N)
512- let cr = if ((bO == A))
513- then $Tuple2((H + bN), ((I - cq) - cp))
514- else $Tuple2(((H - cq) - cp), (I + bN))
515- let ca = cr._1
516- let cb = cr._2
517- let cd = fraction((ca + cb), T, (2 * U))
518- if (if ((cd > ca))
527+ let cs = if ((bV == J))
528+ then K
529+ else J
530+ let bb = ax(cp, cq, bU, bV)
531+ let ct = fraction(bb, V, W)
532+ let cu = fraction(bb, (W - U), W)
533+ let cv = if ((bV == J))
534+ then $Tuple2((P + bU), ((Q - cu) - ct))
535+ else $Tuple2(((P - cu) - ct), (Q + bU))
536+ let ch = cv._1
537+ let ci = cv._2
538+ let cl = fraction((ch + ci), ac, (2 * ad))
539+ if (if ((cl > ch))
519540 then true
520- else (cd > cb))
521- then ba(cd, ca, cb)
522- else if (if (if ((A == v))
523- then (co == A)
541+ else (cl > ci))
542+ then bh(cl, ch, ci)
543+ else if (if (if ((J == E))
544+ then (cs == J)
524545 else false)
525- then (ac >= ca)
546+ then (al >= ch)
526547 else false)
527- then be(cq, af, C)
528- else if (if (if ((B == v))
529- then (co == B)
548+ then bl(cu, an, L)
549+ else if (if (if ((K == E))
550+ then (cs == K)
530551 else false)
531- then (ac >= cb)
552+ then (al >= ci)
532553 else false)
533- then be(cq, ag, G)
534- else [IntegerEntry(f, ca), IntegerEntry(g, cb), IntegerEntry(l, an(ca, cb)), ScriptTransfer(bj.caller, cq, co), ScriptTransfer(s, cp, co)]
554+ then bl(cu, ao, O)
555+ else [IntegerEntry(f, ch), IntegerEntry(g, ci), IntegerEntry(l, av(ch, ci)), ScriptTransfer(bq.caller, cu, cs), ScriptTransfer(C, ct, cs)]
535556 }
536557 }
537558
538559
539560
540-@Callable(bj)
541-func shutdown () = if (!(x))
561+@Callable(bq)
562+func shutdown () = if (!(G))
542563 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, m), "the cause wasn't specified")))
543- else if (!(containsElement([n, o, p, q], bj.callerPublicKey)))
544- then aY()
545- else aR("Paused by admin")
564+ else if (!(containsElement([x, y, z, A], bq.callerPublicKey)))
565+ then bf()
566+ else aY("Paused by admin")
546567
547568
548569
549-@Callable(bj)
550-func activate () = if (x)
551- then aW()
552- else if (!(containsElement([n, o, p, q], bj.callerPublicKey)))
553- then aY()
570+@Callable(bq)
571+func activate () = if (G)
572+ then bd()
573+ else if (!(containsElement([x, y, z, A], bq.callerPublicKey)))
574+ then bf()
554575 else [BooleanEntry(c, true), DeleteEntry(m)]
555576
556577
557578
558-@Callable(bj)
559-func takeIntoAccountExtraFunds (cs) = {
560- let ct = (ah - H)
561- let cu = (ai - I)
562- let cv = (ct - (if ((A == unit))
563- then cs
579+@Callable(bq)
580+func takeIntoAccountExtraFunds (cw) = {
581+ let cx = (ap - P)
582+ let cy = (aq - Q)
583+ let cz = (cx - (if ((J == unit))
584+ then cw
564585 else 0))
565- let cw = (cu - (if ((B == unit))
566- then cs
586+ let cA = (cy - (if ((K == unit))
587+ then cw
567588 else 0))
568- let ax = an((H + cv), (I + cw))
569- if (!(x))
570- then aX()
571- else if ((bj.caller != this))
572- then aY()
573- else if ((0 > cs))
574- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(cs)))
575- else if (if ((0 > ct))
589+ let aE = av((P + cz), (Q + cA))
590+ if (!(G))
591+ then be()
592+ else if ((bq.caller != this))
593+ then bf()
594+ else if ((0 > cw))
595+ then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(cw)))
596+ else if (if ((0 > cx))
576597 then true
577- else (0 > cu))
578- then aR("Enroll amount negative")
579- else if (if ((0 > cv))
598+ else (0 > cy))
599+ then aY("Enroll amount negative")
600+ else if (if ((0 > cz))
580601 then true
581- else (0 > cw))
602+ else (0 > cA))
582603 then throw("Too large amountLeave")
583- else [IntegerEntry(l, ax), IntegerEntry(f, (H + cv)), IntegerEntry(g, (I + cw)), IntegerEntry(("last_income_" + y), cv), IntegerEntry(("last_income_" + z), cw)]
604+ else [IntegerEntry(l, aE), IntegerEntry(f, (P + cz)), IntegerEntry(g, (Q + cA)), IntegerEntry(("last_income_" + H), cz), IntegerEntry(("last_income_" + I), cA)]
584605 }
585606
586607
587-@Verifier(cx)
588-func cy () = {
589- let D = cx
590- if ($isInstanceOf(D, "InvokeScriptTransaction"))
608+@Verifier(cB)
609+func cC () = {
610+ let u = cB
611+ if ($isInstanceOf(u, "InvokeScriptTransaction"))
591612 then {
592- let cz = D
593- let cA = if ((cz.dApp == this))
594- then (cz.function == "takeIntoAccountExtraFunds")
613+ let cD = u
614+ let cE = if ((cD.dApp == this))
615+ then (cD.function == "takeIntoAccountExtraFunds")
595616 else false
596- let cB = if ((cz.dApp == t))
597- then if (if (if ((cz.function == "lockNeutrino"))
598- then (size(cz.payments) == 1)
617+ let cF = if ((cD.dApp == D))
618+ then if (if (if ((cD.function == "lockNeutrino"))
619+ then (size(cD.payments) == 1)
599620 else false)
600- then (cz.payments[0].assetId == v)
621+ then (cD.payments[0].assetId == E)
601622 else false)
602623 then true
603- else if ((cz.function == "unlockNeutrino"))
604- then (size(cz.payments) == 0)
624+ else if ((cD.function == "unlockNeutrino"))
625+ then (size(cD.payments) == 0)
605626 else false
606627 else false
607- let cC = if (if (if ((cz.dApp == u))
608- then (cz.function == "exchange")
628+ let cG = if (if (if ((cD.dApp == q))
629+ then (cD.function == "exchange")
609630 else false)
610- then (A == v)
631+ then (J == E)
611632 else false)
612633 then true
613- else if ((B == v))
614- then (cz.payments[0].assetId == v)
634+ else if (if ((K == E))
635+ then (size(cD.payments) == 1)
636+ else false)
637+ then (cD.payments[0].assetId == E)
615638 else false
616- let cD = if (if (if (sigVerify(cx.bodyBytes, cx.proofs[0], n))
639+ let cH = if (if (if (sigVerify(cB.bodyBytes, cB.proofs[0], x))
617640 then true
618- else sigVerify(cx.bodyBytes, cx.proofs[0], o))
641+ else sigVerify(cB.bodyBytes, cB.proofs[0], y))
619642 then true
620- else sigVerify(cx.bodyBytes, cx.proofs[0], p))
643+ else sigVerify(cB.bodyBytes, cB.proofs[0], z))
621644 then true
622- else sigVerify(cx.bodyBytes, cx.proofs[0], r)
623- if (if (if (cA)
645+ else sigVerify(cB.bodyBytes, cB.proofs[0], B)
646+ if (if (if (cE)
624647 then true
625- else cB)
648+ else cF)
626649 then true
627- else cC)
628- then cD
650+ else cG)
651+ then cH
629652 else false
630653 }
631654 else {
632- let cE = if (sigVerify(cx.bodyBytes, cx.proofs[0], n))
655+ let cI = if (sigVerify(cB.bodyBytes, cB.proofs[0], x))
633656 then 1
634657 else 0
635- let cF = if (sigVerify(cx.bodyBytes, cx.proofs[1], o))
658+ let cJ = if (sigVerify(cB.bodyBytes, cB.proofs[1], y))
636659 then 1
637660 else 0
638- let cG = if (sigVerify(cx.bodyBytes, cx.proofs[2], p))
661+ let cK = if (sigVerify(cB.bodyBytes, cB.proofs[2], z))
639662 then 1
640663 else 0
641- (((cE + cF) + cG) >= 2)
664+ (((cI + cJ) + cK) >= 2)
642665 }
643666 }
644667
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "2.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 = "share_asset_id"
1919
2020 let i = "share_asset_supply"
2121
2222 let j = "commission"
2323
2424 let k = "commission_scale_delimiter"
2525
2626 let l = "invariant"
2727
2828 let m = "shutdown_cause"
2929
30-let n = base58'DXDY2itiEcYBtGkVLnkpHtDFyWQUkoLJz79uJ7ECbMrA'
30+let n = "admin_pub_1"
3131
32-let o = base58'E6Wa1SGoktYcjHjsKrvjMiqJY3SWmGKcD8Q5L8kxSPS7'
32+let o = "admin_pub_2"
3333
34-let p = base58'AZmWJtuy4GeVrMmJH4hfFBRApe1StvhJSk4jcbT6bArQ'
34+let p = "admin_pub_3"
3535
36-let q = base58'EtVkT6ed8GtbUiVVEqdmEqsp2J4qbb3rre2HFgxeVYdg'
36+let q = Address(base58'3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG')
3737
38-let r = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h'
38+let r = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
3939
40-let s = Address(base58'3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp')
40+func s (t) = {
41+ let u = getString(r, t)
42+ if ($isInstanceOf(u, "String"))
43+ then {
44+ let v = u
45+ fromBase58String(v)
46+ }
47+ else {
48+ let w = u
49+ throw("Admin public key is empty")
50+ }
51+ }
4152
42-let t = Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ')
4353
44-let u = Address(base58'3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG')
54+let x = s(n)
4555
46-let v = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
56+let y = s(o)
4757
48-let w = 270000
58+let z = s(p)
4959
50-let x = getBooleanValue(this, c)
60+let A = base58'EtVkT6ed8GtbUiVVEqdmEqsp2J4qbb3rre2HFgxeVYdg'
5161
52-let y = getStringValue(this, d)
62+let B = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h'
5363
54-let z = getStringValue(this, e)
64+let C = Address(base58'3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp')
5565
56-let A = if ((y == "WAVES"))
66+let D = Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ')
67+
68+let E = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
69+
70+let F = 270000
71+
72+let G = getBooleanValue(this, c)
73+
74+let H = getStringValue(this, d)
75+
76+let I = getStringValue(this, e)
77+
78+let J = if ((H == "WAVES"))
5779 then unit
58- else fromBase58String(y)
80+ else fromBase58String(H)
5981
60-let B = if ((z == "WAVES"))
82+let K = if ((I == "WAVES"))
6183 then unit
62- else fromBase58String(z)
84+ else fromBase58String(I)
6385
64-let C = {
65- let D = A
66- if ($isInstanceOf(D, "ByteVector"))
86+let L = {
87+ let u = J
88+ if ($isInstanceOf(u, "ByteVector"))
6789 then {
68- let E = D
69- value(assetInfo(E)).name
90+ let M = u
91+ value(assetInfo(M)).name
7092 }
71- else if ($isInstanceOf(D, "Unit"))
93+ else if ($isInstanceOf(u, "Unit"))
7294 then {
73- let F = D
95+ let N = u
7496 "WAVES"
7597 }
7698 else throw("Match error")
7799 }
78100
79-let G = {
80- let D = B
81- if ($isInstanceOf(D, "ByteVector"))
101+let O = {
102+ let u = K
103+ if ($isInstanceOf(u, "ByteVector"))
82104 then {
83- let E = D
84- value(assetInfo(E)).name
105+ let M = u
106+ value(assetInfo(M)).name
85107 }
86- else if ($isInstanceOf(D, "Unit"))
108+ else if ($isInstanceOf(u, "Unit"))
87109 then {
88- let F = D
110+ let N = u
89111 "WAVES"
90112 }
91113 else throw("Match error")
92114 }
93115
94-let H = getIntegerValue(this, f)
116+let P = getIntegerValue(this, f)
95117
96-let I = getIntegerValue(this, g)
118+let Q = getIntegerValue(this, g)
97119
98-let J = fromBase58String(getStringValue(this, h))
120+let R = fromBase58String(getStringValue(this, h))
99121
100-let K = getIntegerValue(this, i)
122+let S = getIntegerValue(this, i)
101123
102-let L = 500
124+let T = getIntegerValue(this, l)
103125
104-let M = 200
126+let U = 500
105127
106-let N = 1000000
128+let V = 200
107129
108-let O = 1000
130+let W = 1000000
109131
110-let P = 100000000
132+let X = 1000
111133
112-let Q = 1000000000000
134+let Y = 100000000
113135
114-let R = 1000
136+let Z = 1000000000000
115137
116-let S = 8
138+let aa = 1000
117139
118-let T = 50
140+let ab = 8
119141
120-let U = 100
142+let ac = 50
121143
122-let V = 90000000
144+let ad = 100
123145
124-let W = 110000000
146+let ae = 90000000
125147
126-let X = 50
148+let af = 110000000
127149
128-let Y = 2
150+let ag = 50
129151
130-let Z = 46000000
152+let ah = 2
131153
132-func aa (ab) = {
133- let D = ab
134- if ($isInstanceOf(D, "ByteVector"))
154+let ai = 46000000
155+
156+func aj (ak) = {
157+ let u = ak
158+ if ($isInstanceOf(u, "ByteVector"))
135159 then {
136- let E = D
137- assetBalance(this, E)
160+ let M = u
161+ assetBalance(this, M)
138162 }
139- else if ($isInstanceOf(D, "Unit"))
163+ else if ($isInstanceOf(u, "Unit"))
140164 then {
141- let F = D
165+ let N = u
142166 wavesBalance(this).available
143167 }
144168 else throw("Match error")
145169 }
146170
147171
148-let ac = {
149- let D = getInteger(t, ((("rpd_balance_" + toBase58String(v)) + "_") + toString(this)))
150- if ($isInstanceOf(D, "Int"))
172+let al = {
173+ let u = getInteger(D, ((("rpd_balance_" + toBase58String(E)) + "_") + toString(this)))
174+ if ($isInstanceOf(u, "Int"))
151175 then {
152- let ad = D
153- ad
176+ let am = u
177+ am
154178 }
155- else if ($isInstanceOf(D, "Unit"))
179+ else if ($isInstanceOf(u, "Unit"))
156180 then {
157- let ae = D
181+ let w = u
158182 0
159183 }
160184 else throw("Match error")
161185 }
162186
163-let af = (H - (if ((A == v))
164- then ac
187+let an = (P - (if ((J == E))
188+ then al
165189 else 0))
166190
167-let ag = (I - (if ((B == v))
168- then ac
191+let ao = (Q - (if ((K == E))
192+ then al
169193 else 0))
170194
171-let ah = (aa(A) + (if ((A == v))
172- then ac
195+let ap = (aj(J) + (if ((J == E))
196+ then al
173197 else 0))
174198
175-let ai = (aa(B) + (if ((B == v))
176- then ac
199+let aq = (aj(K) + (if ((K == E))
200+ then al
177201 else 0))
178202
179-let aj = if ((ah >= H))
180- then (ai >= I)
203+let ar = if ((ap >= P))
204+ then (aq >= Q)
181205 else false
182206
183-func ak (al,am) = (((fraction(Q, al, am) + fraction(Q, am, al)) / 2) / 10000)
207+func as (at,au) = (((fraction(Z, at, au) + fraction(Z, au, at)) / 2) / 10000)
184208
185209
186-func an (al,am) = {
187- let ao = ak(al, am)
188- (fraction((al + am), P, pow(ao, S, X, Y, S, UP)) + (2 * fraction(pow(fraction(al, am, P), 0, 5, 1, (S / 2), DOWN), pow((ao - Z), S, X, Y, S, DOWN), P)))
210+func av (at,au) = {
211+ let aw = as(at, au)
212+ (fraction((at + au), Y, pow(aw, ab, ag, ah, ab, CEILING)) + (2 * fraction(pow(fraction(at, au, Y), 0, 5, 1, (ab / 2), DOWN), pow((aw - ai), ab, ag, ah, ab, DOWN), Y)))
189213 }
190214
191215
192-func ap (aq,ar,as,at) = {
193- let au = (P - ((P * 1) / 10000000))
194- let av = (aq - ar)
195- let aw = an(H, I)
196- let al = (H + as)
197- let am = (I + as)
198- let ax = if ((at == A))
199- then an(al, (I - aq))
200- else if ((at == B))
201- then an((H - aq), am)
216+func ax (ay,az,aA,aB) = {
217+ let aC = (Y - ((Y * 1) / 10000000))
218+ let aD = (ay - az)
219+ let at = (P + aA)
220+ let au = (Q + aA)
221+ let aE = if ((aB == J))
222+ then av(at, (Q - ay))
223+ else if ((aB == K))
224+ then av((P - ay), au)
202225 else throw("Wrong asset in payment")
203- let ay = fraction(P, aw, ax)
204- func az (aA,aB) = if ((aA == -1))
226+ let aF = fraction(Y, T, aE)
227+ func aG (aH,aI) = if ((aH == -1))
205228 then {
206- let aC = (aq - ((aB * av) / 5))
207- let aD = if ((at == A))
208- then an(al, (I - aC))
209- else an((H - aC), am)
210- if ((aD > aw))
211- then aC
229+ let aJ = (ay - ((aI * aD) / 5))
230+ let aK = if ((aB == J))
231+ then av(at, (Q - aJ))
232+ else av((P - aJ), au)
233+ if ((aK > T))
234+ then aJ
212235 else -1
213236 }
214- else aA
237+ else aH
215238
216- let aE = {
217- let aF = [1, 2, 3, 4, 5]
218- let aG = size(aF)
219- let aH = -1
220- if ((aG == 0))
221- then aH
239+ let aL = {
240+ let aM = [1, 2, 3, 4, 5]
241+ let aN = size(aM)
242+ let aO = -1
243+ if ((aN == 0))
244+ then aO
222245 else {
223- let aI = az(aH, aF[0])
224- if ((aG == 1))
225- then aI
246+ let aP = aG(aO, aM[0])
247+ if ((aN == 1))
248+ then aP
226249 else {
227- let aJ = az(aI, aF[1])
228- if ((aG == 2))
229- then aJ
250+ let aQ = aG(aP, aM[1])
251+ if ((aN == 2))
252+ then aQ
230253 else {
231- let aK = az(aJ, aF[2])
232- if ((aG == 3))
233- then aK
254+ let aR = aG(aQ, aM[2])
255+ if ((aN == 3))
256+ then aR
234257 else {
235- let aL = az(aK, aF[3])
236- if ((aG == 4))
237- then aL
258+ let aS = aG(aR, aM[3])
259+ if ((aN == 4))
260+ then aS
238261 else {
239- let aM = az(aL, aF[4])
240- if ((aG == 5))
241- then aM
262+ let aT = aG(aS, aM[4])
263+ if ((aN == 5))
264+ then aT
242265 else {
243- let aN = az(aM, aF[5])
266+ let aU = aG(aT, aM[5])
244267 throw("List size exceed 5")
245268 }
246269 }
247270 }
248271 }
249272 }
250273 }
251274 }
252- if ((0 > aE))
275+ if ((0 > aL))
253276 then throw("something went wrong while working with amountToSend")
254- else if (if ((ay > au))
255- then (ax > aw)
277+ else if (if ((aF > aC))
278+ then (aE > T)
256279 else false)
257- then aq
258- else aE
280+ then ay
281+ else aL
259282 }
260283
261284
262-func aO (ab) = {
263- let D = ab
264- if ($isInstanceOf(D, "ByteVector"))
285+func aV (ak) = {
286+ let u = ak
287+ if ($isInstanceOf(u, "ByteVector"))
265288 then {
266- let E = D
267- let aP = toBase58String(E)
268- let aQ = valueOrErrorMessage(assetInfo(E), (("Asset " + aP) + " doesn't exist"))
269- $Tuple3(aP, aQ.name, aQ.decimals)
289+ let M = u
290+ let aW = toBase58String(M)
291+ let aX = valueOrErrorMessage(assetInfo(M), (("Asset " + aW) + " doesn't exist"))
292+ $Tuple3(aW, aX.name, aX.decimals)
270293 }
271- else if ($isInstanceOf(D, "Unit"))
294+ else if ($isInstanceOf(u, "Unit"))
272295 then {
273- let F = D
296+ let N = u
274297 $Tuple3("WAVES", "WAVES", 8)
275298 }
276299 else throw("Match error")
277300 }
278301
279302
280-func aR (aS) = [BooleanEntry(c, false), StringEntry(m, aS)]
303+func aY (aZ) = [BooleanEntry(c, false), StringEntry(m, aZ)]
281304
282305
283-func aT (aU,ab) = if ((ab == v))
306+func ba (bb,ak) = if ((ak == E))
284307 then {
285- let aV = (aU - w)
286- if ((0 >= aV))
287- then throw((((("Insufficient amount " + toString(aU)) + " to deduct staking fee ") + toString(w)) + " USD-N"))
288- else aV
308+ let bc = (bb - F)
309+ if ((0 >= bc))
310+ then throw((((("Insufficient amount " + toString(bb)) + " to deduct staking fee ") + toString(F)) + " USD-N"))
311+ else bc
289312 }
290- else aU
313+ else bb
291314
292315
293-func aW () = throw("DApp is already active")
316+func bd () = throw("DApp is already active")
294317
295318
296-func aX () = throw("DApp is inactive at this moment")
319+func be () = throw("DApp is inactive at this moment")
297320
298321
299-func aY () = throw("Only admin can call this function")
322+func bf () = throw("Only admin can call this function")
300323
301324
302-func aZ () = throw(((("Incorrect assets attached. Expected: " + y) + " and ") + z))
325+func bg () = throw(((("Incorrect assets attached. Expected: " + H) + " and ") + I))
303326
304327
305-func ba (bb,bc,bd) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(bb)) + ": ") + toString(bc)) + " ") + C) + ", ") + toString(bd)) + " ") + G))
328+func bh (bi,bj,bk) = throw(((((((((("New balance in assets of the DApp is less than threshold " + toString(bi)) + ": ") + toString(bj)) + " ") + L) + ", ") + toString(bk)) + " ") + O))
306329
307330
308-func be (aU,bf,bg) = throw((((((((("Insufficient DApp balance to pay " + toString(aU)) + " ") + bg) + " due to staking. Available: ") + toString(bf)) + " ") + bg) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
331+func bl (bb,bm,bn) = throw((((((((("Insufficient DApp balance to pay " + toString(bb)) + " ") + bn) + " due to staking. Available: ") + toString(bm)) + " ") + bn) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
309332
310333
311-func bh (bc,bd) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(bc)) + " ") + C) + " and ") + toString(bd)) + " ") + G) + " due to staking. Available: ") + toString(af)) + " ") + C) + " and ") + toString(ag)) + " ") + G) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
334+func bo (bj,bk) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(bj)) + " ") + L) + " and ") + toString(bk)) + " ") + O) + " due to staking. Available: ") + toString(an)) + " ") + L) + " and ") + toString(ao)) + " ") + O) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
312335
313336
314-func bi () = aR(((((((((((((((("Suspicious state. Actual balances: " + toString(ah)) + " ") + C) + ", ") + toString(ai)) + " ") + G) + ". State: ") + toString(H)) + " ") + C) + ", ") + toString(I)) + " ") + G))
337+func bp () = aY(((((((((((((((("Suspicious state. Actual balances: " + toString(P)) + " ") + L) + ", ") + toString(Q)) + " ") + O) + ". State: ") + toString(aj(J))) + " ") + L) + ", ") + toString(aj(K))) + " ") + O))
315338
316339
317-@Callable(bj)
340+@Callable(bq)
318341 func init () = {
319- let bk = $Tuple2(bj.payments[0].amount, bj.payments[0].assetId)
320- let bl = bk._1
321- let bm = bk._2
322- let bn = $Tuple2(bj.payments[1].amount, bj.payments[1].assetId)
323- let bo = bn._1
324- let bp = bn._2
325- let bq = aO(bm)
326- let br = bq._1
327- let bs = bq._2
328- let bt = bq._3
329- let bu = aO(bp)
342+ let br = $Tuple2(bq.payments[0].amount, bq.payments[0].assetId)
343+ let bs = br._1
344+ let bt = br._2
345+ let bu = $Tuple2(bq.payments[1].amount, bq.payments[1].assetId)
330346 let bv = bu._1
331347 let bw = bu._2
332- let bx = bu._3
348+ let bx = aV(bt)
349+ let by = bx._1
350+ let bz = bx._2
351+ let bA = bx._3
352+ let bB = aV(bw)
353+ let bC = bB._1
354+ let bD = bB._2
355+ let bE = bB._3
333356 if (isDefined(getBoolean(this, c)))
334- then aW()
335- else if ((bm == bp))
357+ then bd()
358+ else if ((bt == bw))
336359 then throw("Assets must be different")
337360 else {
338- let by = ((("s" + take(bs, 7)) + "_") + take(bw, 7))
339- let bz = ((((("ShareToken of SwopFi protocol for " + bs) + " and ") + bw) + " at address ") + toString(this))
340- let bA = ((bt + bx) / 2)
341- let bB = fraction(pow(bl, bt, 5, 1, bt, HALFDOWN), pow(bo, bx, 5, 1, bx, HALFDOWN), pow(10, 0, bA, 0, 0, HALFDOWN))
342- let bC = Issue(by, bz, bB, bA, true)
343- let bD = calculateAssetId(bC)
344- let bE = an(bl, bo)
345-[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, br), StringEntry(e, bv), IntegerEntry(f, bl), IntegerEntry(g, bo), IntegerEntry(l, bE), IntegerEntry(j, L), IntegerEntry(k, N), bC, StringEntry(h, toBase58String(bD)), IntegerEntry(i, bB), ScriptTransfer(bj.caller, bB, bD)]
361+ let bF = ((("s" + take(bz, 7)) + "_") + take(bD, 7))
362+ let bG = ((((("ShareToken of SwopFi protocol for " + bz) + " and ") + bD) + " at address ") + toString(this))
363+ let bH = ((bA + bE) / 2)
364+ let bI = fraction(pow(bs, bA, 5, 1, bA, DOWN), pow(bv, bE, 5, 1, bE, DOWN), pow(10, 0, bH, 0, 0, DOWN))
365+ let bJ = Issue(bF, bG, bI, bH, true)
366+ let bK = calculateAssetId(bJ)
367+ let bL = av(bs, bv)
368+[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, by), StringEntry(e, bC), IntegerEntry(f, bs), IntegerEntry(g, bv), IntegerEntry(l, bL), IntegerEntry(j, U), IntegerEntry(k, W), bJ, StringEntry(h, toBase58String(bK)), IntegerEntry(i, bI), ScriptTransfer(bq.caller, bI, bK)]
346369 }
347370 }
348371
349372
350373
351-@Callable(bj)
352-func replenishWithTwoTokens (bF) = {
353- let bm = bj.payments[0].assetId
354- let bp = bj.payments[1].assetId
355- let bl = aT(bj.payments[0].amount, bm)
356- let bo = aT(bj.payments[1].amount, bp)
357- let bG = fraction(fraction(P, H, bl), O, fraction(P, I, bo))
358- let bH = fraction(P, bl, H)
359- let bI = fraction(P, bo, I)
360- let bJ = fraction(min([bH, bI]), K, P)
361- let bE = an((H + bl), (I + bo))
362- if (!(x))
363- then aX()
364- else if (if ((0 > bF))
374+@Callable(bq)
375+func replenishWithTwoTokens (bM) = {
376+ let bt = bq.payments[0].assetId
377+ let bw = bq.payments[1].assetId
378+ let bs = ba(bq.payments[0].amount, bt)
379+ let bv = ba(bq.payments[1].amount, bw)
380+ let bN = fraction(fraction(Y, P, bs), X, fraction(Y, Q, bv))
381+ let bO = fraction(Y, bs, P)
382+ let bP = fraction(Y, bv, Q)
383+ let bQ = fraction(min([bO, bP]), S, Y)
384+ let bL = av((P + bs), (Q + bv))
385+ if (!(G))
386+ then be()
387+ else if (if ((0 > bM))
365388 then true
366- else (bF > 10))
389+ else (bM > 10))
367390 then throw("Slippage tolerance must be <= 1%")
368- else if ((size(bj.payments) != 2))
391+ else if ((size(bq.payments) != 2))
369392 then throw("Two attached assets expected")
370- else if (if ((bm != A))
393+ else if (if ((bt != J))
371394 then true
372- else (bp != B))
373- then aZ()
374- else if (if ((((O * (R - bF)) / R) > bG))
395+ else (bw != K))
396+ then bg()
397+ else if (if ((((X * (aa - bM)) / aa) > bN))
375398 then true
376- else (bG > ((O * (R + bF)) / R)))
399+ else (bN > ((X * (aa + bM)) / aa)))
377400 then throw("Incorrect assets amount: amounts must have the contract ratio")
378- else if ((bJ == 0))
401+ else if ((bQ == 0))
379402 then throw("Too small amount to replenish")
380- else if (!(aj))
381- then ([ScriptTransfer(bj.caller, bl, bm), ScriptTransfer(bj.caller, bo, bp)] ++ bi())
382- else [IntegerEntry(f, (H + bl)), IntegerEntry(g, (I + bo)), IntegerEntry(i, (K + bJ)), IntegerEntry(l, bE), Reissue(J, bJ, true), ScriptTransfer(bj.caller, bJ, J)]
403+ else if (!(ar))
404+ then ([ScriptTransfer(bq.caller, bs, bt), ScriptTransfer(bq.caller, bv, bw)] ++ bp())
405+ else [IntegerEntry(f, (P + bs)), IntegerEntry(g, (Q + bv)), IntegerEntry(i, (S + bQ)), IntegerEntry(l, bL), Reissue(R, bQ, true), ScriptTransfer(bq.caller, bQ, R)]
383406 }
384407
385408
386409
387-@Callable(bj)
388-func replenishWithOneToken (bK,bL) = {
389- let bM = $Tuple2(bj.payments[0].amount, bj.payments[0].assetId)
390- let bN = bM._1
391- let bO = bM._2
392- let aw = an(H, I)
393- let bP = 5000000
394- let bQ = 50000000
395- let bR = if ((bQ > bN))
410+@Callable(bq)
411+func replenishWithOneToken (bR,bS) = {
412+ let bT = $Tuple2(bq.payments[0].amount, bq.payments[0].assetId)
413+ let bU = bT._1
414+ let bV = bT._2
415+ let bW = 5000000
416+ let bX = 50000000
417+ let bY = if ((bX > bU))
396418 then 100000
397419 else 1
398- let bS = (P - ((P * bR) / 10000000))
399- let bT = (P + ((P * bR) / 10000000))
400- let bU = (P - ((P * 1) / 10000000))
401- if (!(x))
402- then aX()
403- else if ((bP > bN))
404- then throw((((("Payment amount " + toString(bN)) + " does not exceed the minimum amount of ") + toString(bP)) + " tokens"))
405- else if ((size(bj.payments) != 1))
420+ let bZ = (Y - ((Y * bY) / 10000000))
421+ let ca = (Y + ((Y * bY) / 10000000))
422+ let cb = (Y - ((Y * 1) / 10000000))
423+ if (!(G))
424+ then be()
425+ else if ((bW > bU))
426+ then throw((((("Payment amount " + toString(bU)) + " does not exceed the minimum amount of ") + toString(bW)) + " tokens"))
427+ else if ((size(bq.payments) != 1))
406428 then throw("One attached payment expected")
407- else if (!(aj))
408- then ([ScriptTransfer(bj.caller, bN, bO)] ++ bi())
409- else if (if ((bO != A))
410- then (bO != B)
429+ else if (!(ar))
430+ then ([ScriptTransfer(bq.caller, bU, bV)] ++ bp())
431+ else if (if ((bV != J))
432+ then (bV != K)
411433 else false)
412- then aZ()
434+ then bg()
413435 else {
414- let bV = if ((bO == A))
415- then $Tuple6((bN - bK), bL, (H + bK), (I - bL), (H + bN), I)
416- else $Tuple6(bL, (bN - bK), (H - bL), (I + bK), H, (I + bN))
417- let bW = bV._1
418- let bX = bV._2
419- let bY = bV._3
420- let bZ = bV._4
421- let ca = bV._5
422- let cb = bV._6
423- let ax = an(bY, bZ)
424- let ay = fraction(P, aw, ax)
425- let cc = (fraction((P * P), bY, bZ) / fraction(P, bW, bX))
426- let cd = fraction((ca + cb), T, (2 * U))
427- if (if ((bU >= ay))
436+ let cc = if ((bV == J))
437+ then $Tuple7((bU - bR), bS, (P + bR), (Q - bS), av((P + bU), Q), (P + bU), Q)
438+ else $Tuple7(bS, (bU - bR), (P - bS), (Q + bR), av(P, (Q + bU)), P, (Q + bU))
439+ let cd = cc._1
440+ let ce = cc._2
441+ let cf = cc._3
442+ let cg = cc._4
443+ let bL = cc._5
444+ let ch = cc._6
445+ let ci = cc._7
446+ let cj = if ((bV == J))
447+ then IntegerEntry(f, ch)
448+ else IntegerEntry(g, ci)
449+ let aE = av(cf, cg)
450+ let aF = fraction(Y, T, aE)
451+ let ck = (fraction((Y * Y), cf, cg) / fraction(Y, cd, ce))
452+ let cl = fraction((ch + ci), ac, (2 * ad))
453+ if (if ((cb >= aF))
428454 then true
429- else (aw > ax))
455+ else (T > aE))
430456 then throw("Incorrect virtualSwapTokenPay or virtualSwapTokenGet value")
431- else if (if ((bS > cc))
457+ else if (if ((bZ > ck))
432458 then true
433- else (cc > bT))
459+ else (ck > ca))
434460 then throw("Swap with virtualSwapTokenPay and virtualSwapTokenGet is possible, but ratio after virtual swap is incorrect")
435- else if (if ((cd > ca))
461+ else if (if ((cl > ch))
436462 then true
437- else (cd > cb))
438- then ba(cd, ca, cb)
463+ else (cl > ci))
464+ then bh(cl, ch, ci)
439465 else {
440- let bH = fraction(aT(bW, A), P, bY)
441- let bI = fraction(aT(bX, B), P, bZ)
442- let bJ = fraction(min([bH, bI]), K, P)
443- let ce = fraction(bJ, (N - (L / 2)), N)
444- let cf = fraction(bJ, (M / 2), N)
445- let cg = fraction(cf, H, K)
446- let ch = fraction(cf, I, K)
447- let bE = an((ca - cg), (cb - ch))
448-[Reissue(J, ce, true), ScriptTransfer(bj.caller, ce, J), ScriptTransfer(s, cg, A), ScriptTransfer(s, ch, B), IntegerEntry(f, aT((ca - cg), A)), IntegerEntry(g, aT((cb - ch), B)), IntegerEntry(i, (K + ce)), IntegerEntry(l, bE)]
466+ let bO = fraction(ba(cd, J), Y, cf)
467+ let bP = fraction(ba(ce, K), Y, cg)
468+ let bQ = fraction(min([bO, bP]), S, Y)
469+[Reissue(R, bQ, true), ScriptTransfer(bq.caller, bQ, R), IntegerEntry(i, (S + bQ)), cj, IntegerEntry(l, bL)]
449470 }
450471 }
451472 }
452473
453474
454475
455-@Callable(bj)
476+@Callable(bq)
456477 func withdraw () = {
457- let ci = $Tuple2(bj.payments[0].amount, bj.payments[0].assetId)
458- let bN = ci._1
459- let bO = ci._2
460- let cj = aT(fraction(bN, H, K), A)
461- let ck = aT(fraction(bN, I, K), B)
462- let bE = an((H - cj), (I - ck))
463- if (!(x))
464- then aX()
465- else if ((size(bj.payments) != 1))
478+ let cm = $Tuple2(bq.payments[0].amount, bq.payments[0].assetId)
479+ let bU = cm._1
480+ let bV = cm._2
481+ let cn = ba(fraction(bU, P, S), J)
482+ let co = ba(fraction(bU, Q, S), K)
483+ let bL = av((P - cn), (Q - co))
484+ if (!(G))
485+ then be()
486+ else if ((size(bq.payments) != 1))
466487 then throw("One attached payment expected")
467- else if ((bO != J))
468- then throw(("Incorrect asset attached. Expected: " + toBase58String(J)))
469- else if (!(aj))
470- then ([ScriptTransfer(bj.caller, bN, bO)] ++ bi())
471- else if (if ((cj > af))
488+ else if ((bV != R))
489+ then throw(("Incorrect asset attached. Expected: " + toBase58String(R)))
490+ else if (!(ar))
491+ then ([ScriptTransfer(bq.caller, bU, bV)] ++ bp())
492+ else if (if ((cn > an))
472493 then true
473- else (ck > ag))
474- then bh(cj, ck)
475- else [IntegerEntry(f, (H - cj)), IntegerEntry(g, (I - ck)), IntegerEntry(i, (K - bN)), IntegerEntry(l, bE), Burn(J, bN), ScriptTransfer(bj.caller, cj, A), ScriptTransfer(bj.caller, ck, B)]
494+ else (co > ao))
495+ then bo(cn, co)
496+ else [IntegerEntry(f, (P - cn)), IntegerEntry(g, (Q - co)), IntegerEntry(i, (S - bU)), IntegerEntry(l, bL), Burn(R, bU), ScriptTransfer(bq.caller, cn, J), ScriptTransfer(bq.caller, co, K)]
476497 }
477498
478499
479500
480-@Callable(bj)
481-func exchange (cl,cm) = {
482- let cn = $Tuple2(bj.payments[0].amount, bj.payments[0].assetId)
483- let bN = cn._1
484- let bO = cn._2
485- if (!(x))
486- then aX()
487- else if ((0 >= cl))
488- then throw(("Estimated amount must be positive. Actual: " + toString(cl)))
489- else if ((cm > cl))
490- then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(cl)) + ". Minimal: ") + toString(cm)))
491- else if ((size(bj.payments) != 1))
501+@Callable(bq)
502+func exchange (cp,cq) = {
503+ let cr = $Tuple2(bq.payments[0].amount, bq.payments[0].assetId)
504+ let bU = cr._1
505+ let bV = cr._2
506+ if (!(G))
507+ then be()
508+ else if ((0 >= cp))
509+ then throw(("Estimated amount must be positive. Actual: " + toString(cp)))
510+ else if ((cq > cp))
511+ then throw(((("Minimal amount can't be greater than estimated. Estimated: " + toString(cp)) + ". Minimal: ") + toString(cq)))
512+ else if ((size(bq.payments) != 1))
492513 then throw("One attached payment expected")
493- else if (!(aj))
494- then ([ScriptTransfer(bj.caller, bN, bO)] ++ bi())
495- else if (if ((bO != A))
496- then (bO != B)
514+ else if (!(ar))
515+ then ([ScriptTransfer(bq.caller, bU, bV)] ++ bp())
516+ else if (if ((bV != J))
517+ then (bV != K)
497518 else false)
498- then aZ()
499- else if ((10000000 > bN))
519+ then bg()
520+ else if ((10000000 > bU))
500521 then throw("Only swap of 10.000000 or more tokens is allowed")
501- else if (if ((V > fraction(P, cm, bN)))
522+ else if (if ((ae > fraction(Y, cq, bU)))
502523 then true
503- else (fraction(P, cl, bN) > W))
524+ else (fraction(Y, cp, bU) > af))
504525 then throw("Incorrect args and pmt ratio")
505526 else {
506- let co = if ((bO == A))
507- then B
508- else A
509- let aU = ap(cl, cm, bN, bO)
510- let cp = fraction(aU, M, N)
511- let cq = fraction(aU, (N - L), N)
512- let cr = if ((bO == A))
513- then $Tuple2((H + bN), ((I - cq) - cp))
514- else $Tuple2(((H - cq) - cp), (I + bN))
515- let ca = cr._1
516- let cb = cr._2
517- let cd = fraction((ca + cb), T, (2 * U))
518- if (if ((cd > ca))
527+ let cs = if ((bV == J))
528+ then K
529+ else J
530+ let bb = ax(cp, cq, bU, bV)
531+ let ct = fraction(bb, V, W)
532+ let cu = fraction(bb, (W - U), W)
533+ let cv = if ((bV == J))
534+ then $Tuple2((P + bU), ((Q - cu) - ct))
535+ else $Tuple2(((P - cu) - ct), (Q + bU))
536+ let ch = cv._1
537+ let ci = cv._2
538+ let cl = fraction((ch + ci), ac, (2 * ad))
539+ if (if ((cl > ch))
519540 then true
520- else (cd > cb))
521- then ba(cd, ca, cb)
522- else if (if (if ((A == v))
523- then (co == A)
541+ else (cl > ci))
542+ then bh(cl, ch, ci)
543+ else if (if (if ((J == E))
544+ then (cs == J)
524545 else false)
525- then (ac >= ca)
546+ then (al >= ch)
526547 else false)
527- then be(cq, af, C)
528- else if (if (if ((B == v))
529- then (co == B)
548+ then bl(cu, an, L)
549+ else if (if (if ((K == E))
550+ then (cs == K)
530551 else false)
531- then (ac >= cb)
552+ then (al >= ci)
532553 else false)
533- then be(cq, ag, G)
534- else [IntegerEntry(f, ca), IntegerEntry(g, cb), IntegerEntry(l, an(ca, cb)), ScriptTransfer(bj.caller, cq, co), ScriptTransfer(s, cp, co)]
554+ then bl(cu, ao, O)
555+ else [IntegerEntry(f, ch), IntegerEntry(g, ci), IntegerEntry(l, av(ch, ci)), ScriptTransfer(bq.caller, cu, cs), ScriptTransfer(C, ct, cs)]
535556 }
536557 }
537558
538559
539560
540-@Callable(bj)
541-func shutdown () = if (!(x))
561+@Callable(bq)
562+func shutdown () = if (!(G))
542563 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, m), "the cause wasn't specified")))
543- else if (!(containsElement([n, o, p, q], bj.callerPublicKey)))
544- then aY()
545- else aR("Paused by admin")
564+ else if (!(containsElement([x, y, z, A], bq.callerPublicKey)))
565+ then bf()
566+ else aY("Paused by admin")
546567
547568
548569
549-@Callable(bj)
550-func activate () = if (x)
551- then aW()
552- else if (!(containsElement([n, o, p, q], bj.callerPublicKey)))
553- then aY()
570+@Callable(bq)
571+func activate () = if (G)
572+ then bd()
573+ else if (!(containsElement([x, y, z, A], bq.callerPublicKey)))
574+ then bf()
554575 else [BooleanEntry(c, true), DeleteEntry(m)]
555576
556577
557578
558-@Callable(bj)
559-func takeIntoAccountExtraFunds (cs) = {
560- let ct = (ah - H)
561- let cu = (ai - I)
562- let cv = (ct - (if ((A == unit))
563- then cs
579+@Callable(bq)
580+func takeIntoAccountExtraFunds (cw) = {
581+ let cx = (ap - P)
582+ let cy = (aq - Q)
583+ let cz = (cx - (if ((J == unit))
584+ then cw
564585 else 0))
565- let cw = (cu - (if ((B == unit))
566- then cs
586+ let cA = (cy - (if ((K == unit))
587+ then cw
567588 else 0))
568- let ax = an((H + cv), (I + cw))
569- if (!(x))
570- then aX()
571- else if ((bj.caller != this))
572- then aY()
573- else if ((0 > cs))
574- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(cs)))
575- else if (if ((0 > ct))
589+ let aE = av((P + cz), (Q + cA))
590+ if (!(G))
591+ then be()
592+ else if ((bq.caller != this))
593+ then bf()
594+ else if ((0 > cw))
595+ then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(cw)))
596+ else if (if ((0 > cx))
576597 then true
577- else (0 > cu))
578- then aR("Enroll amount negative")
579- else if (if ((0 > cv))
598+ else (0 > cy))
599+ then aY("Enroll amount negative")
600+ else if (if ((0 > cz))
580601 then true
581- else (0 > cw))
602+ else (0 > cA))
582603 then throw("Too large amountLeave")
583- else [IntegerEntry(l, ax), IntegerEntry(f, (H + cv)), IntegerEntry(g, (I + cw)), IntegerEntry(("last_income_" + y), cv), IntegerEntry(("last_income_" + z), cw)]
604+ else [IntegerEntry(l, aE), IntegerEntry(f, (P + cz)), IntegerEntry(g, (Q + cA)), IntegerEntry(("last_income_" + H), cz), IntegerEntry(("last_income_" + I), cA)]
584605 }
585606
586607
587-@Verifier(cx)
588-func cy () = {
589- let D = cx
590- if ($isInstanceOf(D, "InvokeScriptTransaction"))
608+@Verifier(cB)
609+func cC () = {
610+ let u = cB
611+ if ($isInstanceOf(u, "InvokeScriptTransaction"))
591612 then {
592- let cz = D
593- let cA = if ((cz.dApp == this))
594- then (cz.function == "takeIntoAccountExtraFunds")
613+ let cD = u
614+ let cE = if ((cD.dApp == this))
615+ then (cD.function == "takeIntoAccountExtraFunds")
595616 else false
596- let cB = if ((cz.dApp == t))
597- then if (if (if ((cz.function == "lockNeutrino"))
598- then (size(cz.payments) == 1)
617+ let cF = if ((cD.dApp == D))
618+ then if (if (if ((cD.function == "lockNeutrino"))
619+ then (size(cD.payments) == 1)
599620 else false)
600- then (cz.payments[0].assetId == v)
621+ then (cD.payments[0].assetId == E)
601622 else false)
602623 then true
603- else if ((cz.function == "unlockNeutrino"))
604- then (size(cz.payments) == 0)
624+ else if ((cD.function == "unlockNeutrino"))
625+ then (size(cD.payments) == 0)
605626 else false
606627 else false
607- let cC = if (if (if ((cz.dApp == u))
608- then (cz.function == "exchange")
628+ let cG = if (if (if ((cD.dApp == q))
629+ then (cD.function == "exchange")
609630 else false)
610- then (A == v)
631+ then (J == E)
611632 else false)
612633 then true
613- else if ((B == v))
614- then (cz.payments[0].assetId == v)
634+ else if (if ((K == E))
635+ then (size(cD.payments) == 1)
636+ else false)
637+ then (cD.payments[0].assetId == E)
615638 else false
616- let cD = if (if (if (sigVerify(cx.bodyBytes, cx.proofs[0], n))
639+ let cH = if (if (if (sigVerify(cB.bodyBytes, cB.proofs[0], x))
617640 then true
618- else sigVerify(cx.bodyBytes, cx.proofs[0], o))
641+ else sigVerify(cB.bodyBytes, cB.proofs[0], y))
619642 then true
620- else sigVerify(cx.bodyBytes, cx.proofs[0], p))
643+ else sigVerify(cB.bodyBytes, cB.proofs[0], z))
621644 then true
622- else sigVerify(cx.bodyBytes, cx.proofs[0], r)
623- if (if (if (cA)
645+ else sigVerify(cB.bodyBytes, cB.proofs[0], B)
646+ if (if (if (cE)
624647 then true
625- else cB)
648+ else cF)
626649 then true
627- else cC)
628- then cD
650+ else cG)
651+ then cH
629652 else false
630653 }
631654 else {
632- let cE = if (sigVerify(cx.bodyBytes, cx.proofs[0], n))
655+ let cI = if (sigVerify(cB.bodyBytes, cB.proofs[0], x))
633656 then 1
634657 else 0
635- let cF = if (sigVerify(cx.bodyBytes, cx.proofs[1], o))
658+ let cJ = if (sigVerify(cB.bodyBytes, cB.proofs[1], y))
636659 then 1
637660 else 0
638- let cG = if (sigVerify(cx.bodyBytes, cx.proofs[2], p))
661+ let cK = if (sigVerify(cB.bodyBytes, cB.proofs[2], z))
639662 then 1
640663 else 0
641- (((cE + cF) + cG) >= 2)
664+ (((cI + cJ) + cK) >= 2)
642665 }
643666 }
644667

github/deemru/w8io/3ef1775 
287.08 ms