tx · AkMyGrc157icjwqnVY8fZCkLk8Acw8i2XUKvTHyEsupW

3N3yYPPFJ2sdk422jEbrwDDkFG7RtzqKqXs:  -0.01400000 Waves

2021.07.16 16:18 [1616214] smart account 3N3yYPPFJ2sdk422jEbrwDDkFG7RtzqKqXs > SELF 0.00000000 Waves

{ "type": 13, "id": "AkMyGrc157icjwqnVY8fZCkLk8Acw8i2XUKvTHyEsupW", "fee": 1400000, "feeAssetId": null, "timestamp": 1626441577266, "version": 2, "chainId": 84, "sender": "3N3yYPPFJ2sdk422jEbrwDDkFG7RtzqKqXs", "senderPublicKey": "Dq2W6UFKeXzdyx5fnP8EeYqkRJSVnMzagJV67v6qZjHY", "proofs": [ "53BsRip9fx18PM52cX6dhD4FcGkQpxnp2bjdozvXF64o7PnowKUjs8UDErhgjqLV8Mx9c2naf27XaYpjvU1zVVwq", "nDEQTna5bVX2a6zmSRUdt59NYXX3QVJCBentaedHKjuEB4GtHMBGb4Akde9Lnm7y67sNRw2muGJ2Pns2tVbALob" ], "script": "base64:AAIFAAAAAAAAACAIAhIAEgMKAQESBAoCAQESABIECgIBARIAEgASAwoBAQAAAEwAAAAAB3ZlcnNpb24CAAAABTIuMC4wAAAAAAhrVmVyc2lvbgIAAAAHdmVyc2lvbgAAAAAHa0FjdGl2ZQIAAAAGYWN0aXZlAAAAAAlrQXNzZXRJZEECAAAACkFfYXNzZXRfaWQAAAAACWtBc3NldElkQgIAAAAKQl9hc3NldF9pZAAAAAAJa0JhbGFuY2VBAgAAAA9BX2Fzc2V0X2JhbGFuY2UAAAAACWtCYWxhbmNlQgIAAAAPQl9hc3NldF9iYWxhbmNlAAAAAA1rU2hhcmVBc3NldElkAgAAAA5zaGFyZV9hc3NldF9pZAAAAAARa1NoYXJlQXNzZXRTdXBwbHkCAAAAEnNoYXJlX2Fzc2V0X3N1cHBseQAAAAAEa0ZlZQIAAAAKY29tbWlzc2lvbgAAAAASa0ZlZVNjYWxlRGVsaW1pdGVyAgAAABpjb21taXNzaW9uX3NjYWxlX2RlbGltaXRlcgAAAAAKa0ludmFyaWFudAIAAAAJaW52YXJpYW50AAAAAAZrQ2F1c2UCAAAADnNodXRkb3duX2NhdXNlAAAAAA9rZXlBZG1pblB1YktleTECAAAAC2FkbWluX3B1Yl8xAAAAAA9rZXlBZG1pblB1YktleTICAAAAC2FkbWluX3B1Yl8yAAAAAA9rZXlBZG1pblB1YktleTMCAAAAC2FkbWluX3B1Yl8zAAAAABRVU0ROVG9XYXZlc0V4Y2hhbmdlcgkBAAAAB0FkZHJlc3MAAAABAQAAABoBVLyvLOw52HwgF6zPLvnW0fXFIi/xmKAk8gAAAAAGb3JhY2xlCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFU6UWqHpAvOq7xug7mLpqSXxqYhOHzYrMIAQAAAAtnZXRBZG1pblB1YgAAAAEAAAALa2V5QWRtaW5QdWIEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAGb3JhY2xlBQAAAAtrZXlBZG1pblB1YgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAZzdHJpbmcFAAAAByRtYXRjaDAJAAJZAAAAAQUAAAAGc3RyaW5nBAAAAAdub3RoaW5nBQAAAAckbWF0Y2gwCQAAAgAAAAECAAAAGUFkbWlu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AAACBQAAAAJzawUAAAAEYmV0YQUAAAAHZGlnaXRzOAUAAAAFYWxwaGEFAAAAC2FscGhhRGlnaXRzBQAAAAdkaWdpdHM4BQAAAARET1dOBQAAAAZzY2FsZTgBAAAAE2NhbGN1bGF0ZVNlbmRBbW91bnQAAAAEAAAAFWFtb3VudFRvU2VuZEVzdGltYXRlZAAAABVtaW5Ub2tlblJlY2VpdmVBbW91bnQAAAASdG9rZW5SZWNlaXZlQW1vdW50AAAAB3Rva2VuSWQEAAAADXNsaXBwYWdlVmFsdWUJAABlAAAAAgUAAAAGc2NhbGU4CQAAaQAAAAIJAABoAAAAAgUAAAAGc2NhbGU4AAAAAAAAAAABAAAAAAAAmJaABAAAAB5kZWx0YUJldHdlZW5NYXhBbmRNaW5TZW5kVmFsdWUJAABlAAAAAgUAAAAVYW1vdW50VG9TZW5kRXN0aW1hdGVkBQAAABVtaW5Ub2tlblJlY2VpdmVBbW91bnQEAAAAAXgJAABkAAAAAgUAAAAIYmFsYW5jZUEFAAAAEnRva2VuUmVjZWl2ZUFtb3VudAQAAAABeQkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAASdG9rZW5SZWNlaXZlQW1vdW50BAAAAAxpbnZhcmlhbnROZXcDCQAAAAAAAAIFAAAAB3Rva2VuSWQFAAAACGFzc2V0SWRBCQEAAAANaW52YXJpYW50Q2FsYwAAAAIFAAAAAXgJAABlAAAAAgUAAAAIYmFsYW5jZUIFAAAAFWFtb3VudFRvU2VuZEVzdGltYXRlZAMJAAAAAAAAAgUAAAAHdG9rZW5JZAUAAAAIYXNzZXRJZEIJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAAVYW1vdW50VG9TZW5kRXN0aW1hdGVkBQAAAAF5CQAAAgAAAAECAAAAFldyb25nIGFzc2V0IGluIHBheW1lbnQEAAAAF2ludmFyaWFudEVzdGltYXRlZFJhdGlvCQAAawAAAAMFAAAABnNjYWxlOAUAAAAJaW52YXJpYW50BQAAAAxpbnZhcmlhbnROZXcKAQAAAA1nZXRTdGVwQW1vdW50AAAAAgAAAANhY2MAAAAEc3RlcAMJAAAAAAAAAgUAAAADYWNjAP//////////BAAAAAxhbW91bnRUb1NlbmQJAABlAAAAAgUAAAAVYW1vdW50VG9TZW5kRXN0aW1hdGVkCQAAaQAAAAIJAABoAAAAAgUAAAAEc3RlcAUAAAAeZGVsdGFCZXR3ZWVuTWF4QW5kTWluU2VuZFZhbHVlAAAAAAAAAAAFBAAAAA1zdGVwSW52YXJpYW50AwkAAAAAAAACBQAAAAd0b2tlbklkBQAAAAhhc3NldElkQQkBAAAADWludmFyaWFudENhbGMAAAACBQAAAAF4CQAAZQAAAAIFAAAACGJhbGFuY2VCBQAAAAxhbW91bnRUb1NlbmQJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAAMYW1vdW50VG9TZW5kBQAAAAF5AwkAAGYAAAACBQAAAA1zdGVwSW52YXJpYW50BQAAAAlpbnZhcmlhbnQFAAAADGFtb3VudFRvU2VuZAD//////////wUAAAADYWNjBAAAAApzdGVwQW1vdW50BAAAAA0kbGlzdDYwMjU2MDY4CQAETAAAAAIAAAAAAAAAAAEJAARMAAAAAgAAAAAAAAAAAgkABEwAAAACAAAAAAAAAAADCQAETAAAAAIAAAAAAAAAAAQJAARMAAAAAgAAAAAAAAAABQUAAAADbmlsBAAAAA0kc2l6ZTYwMjU2MDY4CQABkAAAAAEFAAAADSRsaXN0NjAyNTYwNjgEAAAADSRhY2MwNjAyNTYwNjgA//////////8DCQAAAAAAAAIFAAAADSRzaXplNjAyNTYwNjgAAAAAAAAAAAAFAAAADSRhY2MwNjAyNTYwNjgEAAAADSRhY2MxNjAyNTYwNjgJAQAAAA1nZXRTdGVwQW1vdW50AAAAAgUAAAANJGFjYzA2MDI1NjA2OAkAAZEAAAACBQAAAA0kbGlzdDYwMjU2MDY4AAAAAAAAAAAAAwkAAAAAAAACBQAAAA0kc2l6ZTYwMjU2MDY4AAAAAAAAAAABBQAAAA0kYWNjMTYwMjU2MDY4BAAAAA0kYWNjMjYwMjU2MDY4CQEAAAANZ2V0U3RlcEFtb3VudAAAAAIFAAAADSRhY2MxNjAyNTYwNjgJAAGRAAAAAgUAAAANJGxpc3Q2MDI1NjA2OAAAAAAAAAAAAQMJAAAAAAAAAgUAAAANJHNpemU2MDI1NjA2OAAAAAAAAAAAAgUAAAANJGFjYzI2MDI1NjA2OAQAAAANJGFjYzM2MDI1NjA2OAkBAAAADWdldFN0ZXBBbW91bnQAAAACBQAAAA0kYWNjMjYwMjU2MDY4CQABkQAAAAIFAAAADSRsaXN0NjAyNTYwNjgAAAAAAAAAAAIDCQAAAAAAAAIFAAAADSRzaXplNjAyNTYwNjgAAAAAAAAAAAMFAAAADSRhY2MzNjAyNTYwNjgEAAAADSRhY2M0NjAyNTYwNjgJAQAAAA1nZXRTdGVwQW1vdW50AAAAAgUAAAANJGFjYzM2MDI1NjA2OAkAAZEAAAACBQAAAA0kbGlzdDYwMjU2MDY4AAAAAAAAAAADAwkAAAAAAAACBQAAAA0kc2l6ZTYwMjU2MDY4AAAAAAAAAAAEBQAAAA0kYWNjNDYwMjU2MDY4BAAAAA0kYWNjNTYwMjU2MDY4CQEAAAANZ2V0U3RlcEFtb3VudAAAAAIFAAAADSRhY2M0NjAyNTYwNjgJAAGRAAAAAgUAAAANJGxpc3Q2MDI1NjA2OAAAAAAAAAAABAMJAAAAAAAAAgUAAAANJHNpemU2MDI1NjA2OAAAAAAAAAAABQUAAAANJGFjYzU2MDI1NjA2OAQAAAANJGFjYzY2MDI1NjA2OAkBAAAADWdldFN0ZXBBbW91bnQAAAACBQAAAA0kYWNjNTYwMjU2MDY4CQABkQAAAAIFAAAADSRsaXN0NjAyNTYwNjgAAAAAAAAAAAUJAAACAAAAAQIAAAASTGlzdCBzaXplIGV4Y2VlZCA1AwkAAGYAAAACAAAAAAAAAAAABQAAAApzdGVwQW1vdW50CQAAAgAAAAECAAAANHNvbWV0aGluZyB3ZW50IHdyb25nIHdoaWxlIHdvcmtpbmcgd2l0aCBhbW91bnRUb1NlbmQDAwkAAGYAAAACBQAAABdpbnZhcmlhbnRFc3RpbWF0ZWRSYXRpbwUAAAANc2xpcHBhZ2VWYWx1ZQkAAGYAAAACBQAAAAxpbnZhcmlhbnROZXcFAAAACWludmFyaWFudAcFAAAAFWFtb3VudFRvU2VuZEVzdGltYXRlZAUAAAAKc3RlcEFtb3VudAEAAAAMZ2V0QXNzZXRJbmZvAAAAAQAAAAdhc3NldElkBAAAAAckbWF0Y2gwBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gw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OAAAAAEFAAAACnNoYXJlSXNzdWUEAAAAE2ludmFyaWFudENhbGN1bGF0ZWQJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgUAAAAKcG10QW1vdW50QQUAAAAKcG10QW1vdW50QgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAhrVmVyc2lvbgUAAAAHdmVyc2lvbgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAHa0FjdGl2ZQYJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAJa0Fzc2V0SWRBBQAAAA5wbXRTdHJBc3NldElkQQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAlrQXNzZXRJZEIFAAAADnBtdFN0ckFzc2V0SWRCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAlrQmFsYW5jZUEFAAAACnBtdEFtb3VudEEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQgUAAAAKcG10QW1vdW50QgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAKa0ludmFyaWFudAUAAAATaW52YXJpYW50Q2FsY3VsYXRlZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAEa0ZlZQUAAAADZmVlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrRmVlU2NhbGVEZWxpbWl0ZXIFAAAACWZlZVNjYWxlNgkABEwAAAACBQAAAApzaGFyZUlzc3VlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADWtTaGFyZUFzc2V0SWQJAAJYAAAAAQUAAAAMc2hhcmVJc3N1ZUlkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABFrU2hhcmVBc3NldFN1cHBseQUAAAASc2hhcmVJbml0aWFsU3VwcGx5CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAASc2hhcmVJbml0aWFsU3VwcGx5BQAAAAxzaGFyZUlzc3VlSWQFAAAAA25pbAAAAAFpAQAAABZyZXBsZW5pc2hXaXRoVHdvVG9rZW5zAAAAAQAAABFzbGlwcGFnZVRvbGVyYW5jZQQAAAALcG10QXNzZXRJZEEICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAAC3BtdEFzc2V0SWRCCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQAAAAdhc3NldElkBAAAAApwbXRBbW91bnRBCQEAAAAQZGVkdWN0U3Rha2luZ0ZlZQAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAUAAAALcG10QXNzZXRJZEEEAAAACnBtdEFtb3VudEIJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEAAAAGYW1vdW50BQAAAAtwbXRBc3NldElkQgQAAAAKdG9rZW5SYXRpbwkAAGsAAAADCQAAawAAAAMFAAAABnNjYWxlOAUAAAAIYmFsYW5jZUEFAAAACnBtdEFtb3VudEEFAAAABnNjYWxlMwkAAGsAAAADBQAAAAZzY2FsZTgFAAAACGJhbGFuY2VCBQAAAApwbXRBbW91bnRCBAAAABNyYXRpb1NoYXJlVG9rZW5zSW5BCQAAawAAAAMFAAAABnNjYWxlOAUAAAAKcG10QW1vdW50QQUAAAAIYmFsYW5jZUEEAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkIJAABrAAAAAwUAAAAGc2NhbGU4BQAAAApwbXRBbW91bnRCBQAAAAhiYWxhbmNlQgQAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50CQAAawAAAAMJAAGXAAAAAQkABEwAAAACBQAAABNyYXRpb1NoYXJlVG9rZW5zSW5BCQAETAAAAAIFAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkIFAAAAA25pbAUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAGc2NhbGU4BAAAABNpbnZhcmlhbnRDYWxjdWxhdGVkCQEAAAANaW52YXJpYW50Q2FsYwAAAAIJAABkAAAAAgUAAAAIYmFsYW5jZUEFAAAACnBtdEFtb3VudEEJAABkAAAAAgUAAAAIYmFsYW5jZUIFAAAACnBtdEFtb3VudEIDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQEAAAAPdGhyb3dJc0luYWN0aXZlAAAAAAMDCQAAZgAAAAIAAAAAAAAAAAAFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBgkAAGYAAAACBQAAABFzbGlwcGFnZVRvbGVyYW5jZQAAAAAAAAAACgkAAAIAAAABAgAAACBTbGlwcGFnZSB0b2xlcmFuY2UgbXVzdCBiZSA8PSAxJQMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAIJAAACAAAAAQIAAAAcVHdvIGF0dGFjaGVkIGFzc2V0cyBleHBlY3RlZAMDCQEAAAACIT0AAAACBQAAAAtwbXRBc3NldElkQQUAAAAIYXNzZXRJZEEGCQEAAAACIT0AAAACBQAAAAtwbXRBc3NldElkQgUAAAAIYXNzZXRJZEIJAQAAAAt0aHJvd0Fzc2V0cwAAAAADAwkAAGYAAAACCQAAaQAAAAIJAABoAAAAAgUAAAAGc2NhbGUzCQAAZQAAAAIFAAAADnNsaXBwYWdlU2NhbGUzBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAOc2xpcHBhZ2VTY2FsZTMFAAAACnRva2VuUmF0aW8GCQAAZgAAAAIFAAAACnRva2VuUmF0aW8JAABpAAAAAgkAAGgAAAACBQAAAAZzY2FsZTMJAABkAAAAAgUAAAAOc2xpcHBhZ2VTY2FsZTMFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAAA5zbGlwcGFnZVNjYWxlMwkAAAIAAAABAgAAAD1JbmNvcnJlY3QgYXNzZXRzIGFtb3VudDogYW1vdW50cyBtdXN0IGhhdmUgdGhlIGNvbnRyYWN0IHJhdGlvAwkAAAAAAAACBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQAAAAAAAAAAAAJAAACAAAAAQIAAAAdVG9vIHNtYWxsIGFtb3VudCB0byByZXBsZW5pc2gDCQEAAAABIQAAAAEFAAAAEGhhc0Vub3VnaEJhbGFuY2UJAAROAAAAAgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAACnBtdEFtb3VudEEFAAAAC3BtdEFzc2V0SWRBCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAKcG10QW1vdW50QgUAAAALcG10QXNzZXRJZEIFAAAAA25pbAkBAAAAEXN1c3BlbmRTdXNwaWNpb3VzAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAJa0JhbGFuY2VBCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAApwbXRBbW91bnRBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAlrQmFsYW5jZUIJAABkAAAAAgUAAAAIYmFsYW5jZUIFAAAACnBtdEFtb3VudEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEWtTaGFyZUFzc2V0U3VwcGx5CQAAZAAAAAIFAAAAEHNoYXJlQXNzZXRTdXBwbHkFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAKa0ludmFyaWFudAUAAAATaW52YXJpYW50Q2FsY3VsYXRlZAkABEwAAAACCQEAAAAHUmVpc3N1ZQAAAAMFAAAADHNoYXJlQXNzZXRJZAUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50BgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAUAAAAMc2hhcmVBc3NldElkBQAAAANuaWwAAAABaQEAAAAVcmVwbGVuaXNoV2l0aE9uZVRva2VuAAAAAgAAABN2aXJ0dWFsU3dhcFRva2VuUGF5AAAAE3ZpcnR1YWxTd2FwVG9rZW5HZXQEAAAADSR0MDEzNDEwMTM0ODUJAAUUAAAAAggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAGYW1vdW50CAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAlwbXRBbW91bnQIBQAAAA0kdDAxMzQxMDEzNDg1AAAAAl8xBAAAAApwbXRBc3NldElkCAUAAAANJHQwMTM0MTAxMzQ4NQAAAAJfMgQAAAAPcG10TWluVGhyZXNob2xkAAAAAAAATEtABAAAAB10aHJlc2hvbGRWYWx1ZUZvck1pblRvbGVyYW5jZQAAAAAAAvrwgAQAAAAJdG9sZXJhbmNlAwkAAGYAAAACBQAAAB10aHJlc2hvbGRWYWx1ZUZvck1pblRvbGVyYW5jZQUAAAAJcG10QW1vdW50AAAAAAAAAYagAAAAAAAAAAABBAAAABxzbGlwcGFnZVZhbHVlTWluRm9yUmVwbGVuaXNoCQAAZQAAAAIFAAAABnNjYWxlOAkAAGkAAAACCQAAaAAAAAIFAAAABnNjYWxlOAUAAAAJdG9sZXJhbmNlAAAAAAAAmJaABAAAABxzbGlwcGFnZVZhbHVlTWF4Rm9yUmVwbGVuaXNoCQAAZAAAAAIFAAAABnNjYWxlOAkAAGkAAAACCQAAaAAAAAIFAAAABnNjYWxlOAUAAAAJdG9sZXJhbmNlAAAAAAAAmJaABAAAABdzbGlwcGFnZVZhbHVlTWluRm9yU3dhcAkAAGUAAAACBQAAAAZzY2FsZTgJAABpAAAAAgkAAGgAAAACBQAAAAZzY2FsZTgAAAAAAAAAAAEAAAAAAACYloADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQEAAAAPdGhyb3dJc0luYWN0aXZlAAAAAAMJAABmAAAAAgUAAAAPcG10TWluVGhyZXNob2xkBQAAAAlwbXRBbW91bnQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA9QYXltZW50IGFtb3VudCAJAAGkAAAAAQUAAAAJcG10QW1vdW50AgAAACcgZG9lcyBub3QgZXhjZWVkIHRoZSBtaW5pbXVtIGFtb3VudCBvZiAJAAGkAAAAAQUAAAAPcG10TWluVGhyZXNob2xkAgAAAAcgdG9rZW5zAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAJcG10QW1vdW50BQAAAApwbXRBc3NldElkBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAADAwkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEEJAQAAAAIhPQAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRCBwkBAAAAC3Rocm93QXNzZXRzAAAAAAQAAAANJHQwMTQ0OTcxNTI2MgMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEEJAAUZAAAABwkAAGUAAAACBQAAAAlwbXRBbW91bnQFAAAAE3ZpcnR1YWxTd2FwVG9rZW5QYXkFAAAAE3ZpcnR1YWxTd2FwVG9rZW5HZXQJAABkAAAAAgUAAAAIYmFsYW5jZUEFAAAAE3ZpcnR1YWxTd2FwVG9rZW5QYXkJAABlAAAAAgUAAAAIYmFsYW5jZUIFAAAAE3ZpcnR1YWxTd2FwVG9rZW5HZXQJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAAJcG10QW1vdW50BQAAAAhiYWxhbmNlQgkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAAJcG10QW1vdW50BQAAAAhiYWxhbmNlQgkABRkAAAAHBQAAABN2aXJ0dWFsU3dhcFRva2VuR2V0CQAAZQAAAAIFAAAACXBtdEFtb3VudAUAAAATdmlydHVhbFN3YXBUb2tlblBheQkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAATdmlydHVhbFN3YXBUb2tlbkdldAkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAATdmlydHVhbFN3YXBUb2tlblBheQkBAAAADWludmFyaWFudENhbGMAAAACBQAAAAhiYWxhbmNlQQkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAJcG10QW1vdW50BQAAAAhiYWxhbmNlQQkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAJcG10QW1vdW50BAAAABF2aXJ0dWFsUmVwbGVuaXNoQQgFAAAADSR0MDE0NDk3MTUyNjIAAAACXzEEAAAAEXZpcnR1YWxSZXBsZW5pc2hCCAUAAAANJHQwMTQ0OTcxNTI2MgAAAAJfMgQAAAARYmFsYW5jZUFmdGVyU3dhcEEIBQAAAA0kdDAxNDQ5NzE1MjYyAAAAAl8zBAAAABFiYWxhbmNlQWZ0ZXJTd2FwQggFAAAADSR0MDE0NDk3MTUyNjIAAAACXzQEAAAAE2ludmFyaWFudENhbGN1bGF0ZWQIBQAAAA0kdDAxNDQ5NzE1MjYyAAAAAl81BAAAAAtuZXdCYWxhbmNlQQgFAAAADSR0MDE0NDk3MTUyNjIAAAACXzYEAAAAC25ld0JhbGFuY2VCCAUAAAANJHQwMTQ0OTcxNTI2MgAAAAJfNwQAAAAPbmV3QmFsYW5jZUVudHJ5AwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAAAhhc3NldElkQQkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUEJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAlrQmFsYW5jZUIFAAAAC25ld0JhbGFuY2VCBAAAAAxpbnZhcmlhbnROZXcJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgUAAAARYmFsYW5jZUFmdGVyU3dhcEEFAAAAEWJhbGFuY2VBZnRlclN3YXBCBAAAABdpbnZhcmlhbnRFc3RpbWF0ZWRSYXRpbwkAAGsAAAADBQAAAAZzY2FsZTgFAAAACWludmFyaWFudAUAAAAMaW52YXJpYW50TmV3BAAAACVyYXRpb1ZpcnR1YWxCYWxhbmNlVG9WaXJ0dWFsUmVwbGVuaXNoCQAAaQAAAAIJAABrAAAAAwkAAGgAAAACBQAAAAZzY2FsZTgFAAAABnNjYWxlOAUAAAARYmFsYW5jZUFmdGVyU3dhcEEFAAAAEWJhbGFuY2VBZnRlclN3YXBCCQAAawAAAAMFAAAABnNjYWxlOAUAAAARdmlydHVhbFJlcGxlbmlzaEEFAAAAEXZpcnR1YWxSZXBsZW5pc2hCBAAAABNkQXBwVGhyZXNob2xkQW1vdW50CQAAawAAAAMJAABkAAAAAgUAAAALbmV3QmFsYW5jZUEFAAAAC25ld0JhbGFuY2VCBQAAAA1kQXBwVGhyZXNob2xkCQAAaAAAAAIAAAAAAAAAAAIFAAAAE2RBcHBUaHJlc2hvbGRTY2FsZTIDAwkAAGcAAAACBQAAABdzbGlwcGFnZVZhbHVlTWluRm9yU3dhcAUAAAAXaW52YXJpYW50RXN0aW1hdGVkUmF0aW8GCQAAZgAAAAIFAAAACWludmFyaWFudAUAAAAMaW52YXJpYW50TmV3CQAAAgAAAAECAAAAOkluY29ycmVjdCB2aXJ0dWFsU3dhcFRva2VuUGF5IG9yIHZpcnR1YWxTd2FwVG9rZW5HZXQgdmFsdWUDAwkAAGYAAAACBQAAABxzbGlwcGFnZVZhbHVlTWluRm9yUmVwbGVuaXNoBQAAACVyYXRpb1ZpcnR1YWxCYWxhbmNlVG9WaXJ0dWFsUmVwbGVuaXNoBgkAAGYAAAACBQAAACVyYXRpb1ZpcnR1YWxCYWxhbmNlVG9WaXJ0dWFsUmVwbGVuaXNoBQAAABxzbGlwcGFnZVZhbHVlTWF4Rm9yUmVwbGVuaXNoCQAAAgAAAAECAAAAbFN3YXAgd2l0aCB2aXJ0dWFsU3dhcFRva2VuUGF5IGFuZCB2aXJ0dWFsU3dhcFRva2VuR2V0IGlzIHBvc3NpYmxlLCBidXQgcmF0aW8gYWZ0ZXIgdmlydHVhbCBzd2FwIGlzIGluY29ycmVjdAMDCQAAZgAAAAIFAAAAE2RBcHBUaHJlc2hvbGRBbW91bnQFAAAAC25ld0JhbGFuY2VBBgkAAGYAAAACBQAAABNkQXBwVGhyZXNob2xkQW1vdW50BQAAAAtuZXdCYWxhbmNlQgkBAAAADnRocm93VGhyZXNob2xkAAAAAwUAAAATZEFwcFRocmVzaG9sZEFtb3VudAUAAAALbmV3QmFsYW5jZUEFAAAAC25ld0JhbGFuY2VCBAAAABNyYXRpb1NoYXJlVG9rZW5zSW5BCQAAawAAAAMJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAgUAAAARdmlydHVhbFJlcGxlbmlzaEEFAAAACGFzc2V0SWRBBQAAAAZzY2FsZTgFAAAAEWJhbGFuY2VBZnRlclN3YXBBBAAAABNyYXRpb1NoYXJlVG9rZW5zSW5CCQAAawAAAAMJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAgUAAAARdmlydHVhbFJlcGxlbmlzaEIFAAAACGFzc2V0SWRCBQAAAAZzY2FsZTgFAAAAEWJhbGFuY2VBZnRlclN3YXBCBAAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAABrAAAAAwkAAZcAAAABCQAETAAAAAIFAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkEJAARMAAAAAgUAAAATcmF0aW9TaGFyZVRva2Vuc0luQgUAAAADbmlsBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAZzY2FsZTgJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAAAxzaGFyZUFzc2V0SWQFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQFAAAADHNoYXJlQXNzZXRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARa1NoYXJlQXNzZXRTdXBwbHkJAABkAAAAAgUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50CQAETAAAAAIFAAAAD25ld0JhbGFuY2VFbnRyeQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAKa0ludmFyaWFudAUAAAATaW52YXJpYW50Q2FsY3VsYXRlZAUAAAADbmlsAAAAAWkBAAAACHdpdGhkcmF3AAAAAAQAAAANJHQwMTc0MDcxNzU1MAkABRQAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAACXBtdEFtb3VudAgFAAAADSR0MDE3NDA3MTc1NTAAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAA0kdDAxNzQwNzE3NTUwAAAAAl8yBAAAAAxhbW91bnRUb1BheUEJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAgkAAGsAAAADBQAAAAlwbXRBbW91bnQFAAAACGJhbGFuY2VBBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAhhc3NldElkQQQAAAAMYW1vdW50VG9QYXlCCQEAAAAQZGVkdWN0U3Rha2luZ0ZlZQAAAAIJAABrAAAAAwUAAAAJcG10QW1vdW50BQAAAAhiYWxhbmNlQgUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAIYXNzZXRJZEIEAAAAE2ludmFyaWFudENhbGN1bGF0ZWQJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAAMYW1vdW50VG9QYXlBCQAAZQAAAAIFAAAACGJhbGFuY2VCBQAAAAxhbW91bnRUb1BheUIDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQEAAAAPdGhyb3dJc0luYWN0aXZlAAAAAAMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAACAAAAAQIAAAAdT25lIGF0dGFjaGVkIHBheW1lbnQgZXhwZWN0ZWQDCQEAAAACIT0AAAACBQAAAApwbXRBc3NldElkBQAAAAxzaGFyZUFzc2V0SWQJAAACAAAAAQkAASwAAAACAgAAACRJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQuIEV4cGVjdGVkOiAJAAJYAAAAAQUAAAAMc2hhcmVBc3NldElkAwkBAAAAASEAAAABBQAAABBoYXNFbm91Z2hCYWxhbmNlCQAETgAAAAIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAlwbXRBbW91bnQFAAAACnBtdEFzc2V0SWQFAAAAA25pbAkBAAAAEXN1c3BlbmRTdXNwaWNpb3VzAAAAAAMDCQAAZgAAAAIFAAAADGFtb3VudFRvUGF5QQUAAAARYXZhaWxhYmxlQmFsYW5jZUEGCQAAZgAAAAIFAAAADGFtb3VudFRvUGF5QgUAAAARYXZhaWxhYmxlQmFsYW5jZUIJAQAAACJ0aHJvd0luc3VmZmljaWVudEF2YWlsYWJsZUJhbGFuY2VzAAAAAgUAAAAMYW1vdW50VG9QYXlBBQAAAAxhbW91bnRUb1BheUIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQQkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAAMYW1vdW50VG9QYXlBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAlrQmFsYW5jZUIJAABlAAAAAgUAAAAIYmFsYW5jZUIFAAAADGFtb3VudFRvUGF5QgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARa1NoYXJlQXNzZXRTdXBwbHkJAABlAAAAAgUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAJcG10QW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAprSW52YXJpYW50BQAAABNpbnZhcmlhbnRDYWxjdWxhdGVkCQAETAAAAAIJAQAAAARCdXJuAAAAAgUAAAAMc2hhcmVBc3NldElkBQAAAAlwbXRBbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAxhbW91bnRUb1BheUEFAAAACGFzc2V0SWRBCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAMYW1vdW50VG9QYXlCBQAAAAhhc3NldElkQgUAAAADbmlsAAAAAWkBAAAACGV4Y2hhbmdlAAAAAgAAABhlc3RpbWF0ZWRBbW91bnRUb1JlY2VpdmUAAAASbWluQW1vdW50VG9SZWNlaXZlBAAAAA0kdDAxODkwODE4OTgzCQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAANJHQwMTg5MDgxODk4MwAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAADSR0MDE4OTA4MTg5ODMAAAACXzIDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQEAAAAPdGhyb3dJc0luYWN0aXZlAAAAAAMJAABnAAAAAgAAAAAAAAAAAAUAAAAYZXN0aW1hdGVkQW1vdW50VG9SZWNlaXZlCQAAAgAAAAEJAAEsAAAAAgIAAAArRXN0aW1hdGVkIGFtb3VudCBtdXN0IGJlIHBvc2l0aXZlLiBBY3R1YWw6IAkAAaQAAAABBQAAABhlc3RpbWF0ZWRBbW91bnRUb1JlY2VpdmUDCQAAZgAAAAIFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQUAAAAYZXN0aW1hdGVkQW1vdW50VG9SZWNlaXZlCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAO01pbmltYWwgYW1vdW50IGNhbid0IGJlIGdyZWF0ZXIgdGhhbiBlc3RpbWF0ZWQuIEVzdGltYXRlZDogCQABpAAAAAEFAAAAGGVzdGltYXRlZEFtb3VudFRvUmVjZWl2ZQIAAAALLiBNaW5pbWFsOiAJAAGkAAAAAQUAAAASbWluQW1vdW50VG9SZWNlaXZlAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAJcG10QW1vdW50BQAAAApwbXRBc3NldElkBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAADAwkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEEJAQAAAAIhPQAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRCBwkBAAAAC3Rocm93QXNzZXRzAAAAAAMJAABmAAAAAgAAAAAAAJiWgAUAAAAJcG10QW1vdW50CQAAAgAAAAECAAAAME9ubHkgc3dhcCBvZiAxMC4wMDAwMDAgb3IgbW9yZSB0b2tlbnMgaXMgYWxsb3dlZAMDCQAAZgAAAAIFAAAAFWV4Y2hhbmdlUmF0aW9MaW1pdE1pbgkAAGsAAAADBQAAAAZzY2FsZTgFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQUAAAAJcG10QW1vdW50BgkAAGYAAAACCQAAawAAAAMFAAAABnNjYWxlOAUAAAAYZXN0aW1hdGVkQW1vdW50VG9SZWNlaXZlBQAAAAlwbXRBbW91bnQFAAAAFWV4Y2hhbmdlUmF0aW9MaW1pdE1heAkAAAIAAAABAgAAABxJbmNvcnJlY3QgYXJncyBhbmQgcG10IHJhdGlvBAAAAAtzZW5kQXNzZXRJZAMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAIYXNzZXRJZEEFAAAACGFzc2V0SWRCBQAAAAhhc3NldElkQQQAAAAGYW1vdW50CQEAAAATY2FsY3VsYXRlU2VuZEFtb3VudAAAAAQFAAAAGGVzdGltYXRlZEFtb3VudFRvUmVjZWl2ZQUAAAASbWluQW1vdW50VG9SZWNlaXZlBQAAAAlwbXRBbW91bnQFAAAACnBtdEFzc2V0SWQEAAAAEGdvdmVybmFuY2VSZXdhcmQJAABrAAAAAwUAAAAGYW1vdW50BQAAAA1mZWVHb3Zlcm5hbmNlBQAAAAlmZWVTY2FsZTYEAAAADmFtb3VudE1pbnVzRmVlCQAAawAAAAMFAAAABmFtb3VudAkAAGUAAAACBQAAAAlmZWVTY2FsZTYFAAAAA2ZlZQUAAAAJZmVlU2NhbGU2BAAAAA0kdDAyMDQwNTIwNjY3AwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAAAhhc3NldElkQQkABRQAAAACCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAAlwbXRBbW91bnQJAABlAAAAAgkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAAOYW1vdW50TWludXNGZWUFAAAAEGdvdmVybmFuY2VSZXdhcmQJAAUUAAAAAgkAAGUAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAAA5hbW91bnRNaW51c0ZlZQUAAAAQZ292ZXJuYW5jZVJld2FyZAkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAJcG10QW1vdW50BAAAAAtuZXdCYWxhbmNlQQgFAAAADSR0MDIwNDA1MjA2NjcAAAACXzEEAAAAC25ld0JhbGFuY2VCCAUAAAANJHQwMjA0MDUyMDY2NwAAAAJfMgQAAAATZEFwcFRocmVzaG9sZEFtb3VudAkAAGsAAAADCQAAZAAAAAIFAAAAC25ld0JhbGFuY2VBBQAAAAtuZXdCYWxhbmNlQgUAAAANZEFwcFRocmVzaG9sZAkAAGgAAAACAAAAAAAAAAACBQAAABNkQXBwVGhyZXNob2xkU2NhbGUyAwMJAABmAAAAAgUAAAATZEFwcFRocmVzaG9sZEFtb3VudAUAAAALbmV3QmFsYW5jZUEGCQAAZgAAAAIFAAAAE2RBcHBUaHJlc2hvbGRBbW91bnQFAAAAC25ld0JhbGFuY2VCCQEAAAAOdGhyb3dUaHJlc2hvbGQAAAADBQAAABNkQXBwVGhyZXNob2xkQW1vdW50BQAAAAtuZXdCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUIDAwMJAAAAAAAAAgUAAAAIYXNzZXRJZEEFAAAABFVTRE4JAAAAAAAAAgUAAAALc2VuZEFzc2V0SWQFAAAACGFzc2V0SWRBBwkAAGcAAAACBQAAABBzdGFrZWRBbW91bnRVU0ROBQAAAAtuZXdCYWxhbmNlQQcJAQAAACF0aHJvd0luc3VmZmljaWVudEF2YWlsYWJsZUJhbGFuY2UAAAADBQAAAA5hbW91bnRNaW51c0ZlZQUAAAARYXZhaWxhYmxlQmFsYW5jZUEFAAAACmFzc2V0TmFtZUEDAwMJAAAAAAAAAgUAAAAIYXNzZXRJZEIFAAAABFVTRE4JAAAAAAAAAgUAAAALc2VuZEFzc2V0SWQFAAAACGFzc2V0SWRCBwkAAGcAAAACBQAAABBzdGFrZWRBbW91bnRVU0ROBQAAAAtuZXdCYWxhbmNlQgcJAQAAACF0aHJvd0luc3VmZmljaWVudEF2YWlsYWJsZUJhbGFuY2UAAAADBQAAAA5hbW91bnRNaW51c0ZlZQUAAAARYXZhaWxhYmxlQmFsYW5jZUIFAAAACmFzc2V0TmFtZUIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACWtCYWxhbmNlQgUAAAALbmV3QmFsYW5jZUIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAACmtJbnZhcmlhbnQJAQAAAA1pbnZhcmlhbnRDYWxjAAAAAgUAAAALbmV3QmFsYW5jZUEFAAAAC25ld0JhbGFuY2VCCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAOYW1vdW50TWludXNGZWUFAAAAC3NlbmRBc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAB2dvdkFkZHIFAAAAEGdvdmVybmFu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", "height": 1616214, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8rNTFYbTWznVVPbbJ85g6mGm2G8Fjc6PKKX7iiTr7d53 Next: none 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'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
30+let n = "admin_pub_1"
3131
32-let o = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
32+let o = "admin_pub_2"
3333
34-let p = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
34+let p = "admin_pub_3"
3535
36-let q = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
36+let q = Address(base58'3N77kfPbQyjXWpDALX3xjKw3iEGMWEctV37')
3737
38-let r = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
38+let r = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
3939
40-let s = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
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'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
4353
44-let u = Address(base58'3N77kfPbQyjXWpDALX3xjKw3iEGMWEctV37')
54+let x = s(n)
4555
46-let v = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
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'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
5161
52-let y = getStringValue(this, d)
62+let B = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
5363
54-let z = getStringValue(this, e)
64+let C = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
5565
56-let A = if ((y == "WAVES"))
66+let D = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
67+
68+let E = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
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 = getIntegerValue(this, l)
124+let T = getIntegerValue(this, l)
103125
104-let M = 500
126+let U = 500
105127
106-let N = 200
128+let V = 200
107129
108-let O = 1000000
130+let W = 1000000
109131
110-let P = 1000
132+let X = 1000
111133
112-let Q = 100000000
134+let Y = 100000000
113135
114-let R = 1000000000000
136+let Z = 1000000000000
115137
116-let S = 1000
138+let aa = 1000
117139
118-let T = 8
140+let ab = 8
119141
120-let U = 50
142+let ac = 50
121143
122-let V = 100
144+let ad = 100
123145
124-let W = 90000000
146+let ae = 90000000
125147
126-let X = 110000000
148+let af = 110000000
127149
128-let Y = 50
150+let ag = 50
129151
130-let Z = 2
152+let ah = 2
131153
132-let aa = 46000000
154+let ai = 46000000
133155
134-func ab (ac) = {
135- let D = ac
136- if ($isInstanceOf(D, "ByteVector"))
156+func aj (ak) = {
157+ let u = ak
158+ if ($isInstanceOf(u, "ByteVector"))
137159 then {
138- let E = D
139- assetBalance(this, E)
160+ let M = u
161+ assetBalance(this, M)
140162 }
141- else if ($isInstanceOf(D, "Unit"))
163+ else if ($isInstanceOf(u, "Unit"))
142164 then {
143- let F = D
165+ let N = u
144166 wavesBalance(this).available
145167 }
146168 else throw("Match error")
147169 }
148170
149171
150-let ad = {
151- let D = getInteger(t, ((("rpd_balance_" + toBase58String(v)) + "_") + toString(this)))
152- if ($isInstanceOf(D, "Int"))
172+let al = {
173+ let u = getInteger(D, ((("rpd_balance_" + toBase58String(E)) + "_") + toString(this)))
174+ if ($isInstanceOf(u, "Int"))
153175 then {
154- let ae = D
155- ae
176+ let am = u
177+ am
156178 }
157- else if ($isInstanceOf(D, "Unit"))
179+ else if ($isInstanceOf(u, "Unit"))
158180 then {
159- let af = D
181+ let w = u
160182 0
161183 }
162184 else throw("Match error")
163185 }
164186
165-let ag = (H - (if ((A == v))
166- then ad
187+let an = (P - (if ((J == E))
188+ then al
167189 else 0))
168190
169-let ah = (I - (if ((B == v))
170- then ad
191+let ao = (Q - (if ((K == E))
192+ then al
171193 else 0))
172194
173-let ai = (ab(A) + (if ((A == v))
174- then ad
195+let ap = (aj(J) + (if ((J == E))
196+ then al
175197 else 0))
176198
177-let aj = (ab(B) + (if ((B == v))
178- then ad
199+let aq = (aj(K) + (if ((K == E))
200+ then al
179201 else 0))
180202
181-let ak = if ((ai >= H))
182- then (aj >= I)
203+let ar = if ((ap >= P))
204+ then (aq >= Q)
183205 else false
184206
185-func al (am,an) = (((fraction(R, am, an) + fraction(R, an, am)) / 2) / 10000)
207+func as (at,au) = (((fraction(Z, at, au) + fraction(Z, au, at)) / 2) / 10000)
186208
187209
188-func ao (am,an) = {
189- let ap = al(am, an)
190- (fraction((am + an), Q, pow(ap, T, Y, Z, T, UP)) + (2 * fraction(pow(fraction(am, an, Q), 0, 5, 1, (T / 2), DOWN), pow((ap - aa), T, Y, Z, T, DOWN), Q)))
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)))
191213 }
192214
193215
194-func aq (ar,as,at,au) = {
195- let av = (Q - ((Q * 1) / 10000000))
196- let aw = (ar - as)
197- let am = (H + at)
198- let an = (I + at)
199- let ax = if ((au == A))
200- then ao(am, (I - ar))
201- else if ((au == B))
202- then ao((H - ar), an)
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)
203225 else throw("Wrong asset in payment")
204- let ay = fraction(Q, L, ax)
205- func az (aA,aB) = if ((aA == -1))
226+ let aF = fraction(Y, T, aE)
227+ func aG (aH,aI) = if ((aH == -1))
206228 then {
207- let aC = (ar - ((aB * aw) / 5))
208- let aD = if ((au == A))
209- then ao(am, (I - aC))
210- else ao((H - aC), an)
211- if ((aD > L))
212- 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
213235 else -1
214236 }
215- else aA
237+ else aH
216238
217- let aE = {
218- let aF = [1, 2, 3, 4, 5]
219- let aG = size(aF)
220- let aH = -1
221- if ((aG == 0))
222- 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
223245 else {
224- let aI = az(aH, aF[0])
225- if ((aG == 1))
226- then aI
246+ let aP = aG(aO, aM[0])
247+ if ((aN == 1))
248+ then aP
227249 else {
228- let aJ = az(aI, aF[1])
229- if ((aG == 2))
230- then aJ
250+ let aQ = aG(aP, aM[1])
251+ if ((aN == 2))
252+ then aQ
231253 else {
232- let aK = az(aJ, aF[2])
233- if ((aG == 3))
234- then aK
254+ let aR = aG(aQ, aM[2])
255+ if ((aN == 3))
256+ then aR
235257 else {
236- let aL = az(aK, aF[3])
237- if ((aG == 4))
238- then aL
258+ let aS = aG(aR, aM[3])
259+ if ((aN == 4))
260+ then aS
239261 else {
240- let aM = az(aL, aF[4])
241- if ((aG == 5))
242- then aM
262+ let aT = aG(aS, aM[4])
263+ if ((aN == 5))
264+ then aT
243265 else {
244- let aN = az(aM, aF[5])
266+ let aU = aG(aT, aM[5])
245267 throw("List size exceed 5")
246268 }
247269 }
250272 }
251273 }
252274 }
253- if ((0 > aE))
275+ if ((0 > aL))
254276 then throw("something went wrong while working with amountToSend")
255- else if (if ((ay > av))
256- then (ax > L)
277+ else if (if ((aF > aC))
278+ then (aE > T)
257279 else false)
258- then ar
259- else aE
280+ then ay
281+ else aL
260282 }
261283
262284
263-func aO (ac) = {
264- let D = ac
265- if ($isInstanceOf(D, "ByteVector"))
285+func aV (ak) = {
286+ let u = ak
287+ if ($isInstanceOf(u, "ByteVector"))
266288 then {
267- let E = D
268- let aP = toBase58String(E)
269- let aQ = valueOrErrorMessage(assetInfo(E), (("Asset " + aP) + " doesn't exist"))
270- $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)
271293 }
272- else if ($isInstanceOf(D, "Unit"))
294+ else if ($isInstanceOf(u, "Unit"))
273295 then {
274- let F = D
296+ let N = u
275297 $Tuple3("WAVES", "WAVES", 8)
276298 }
277299 else throw("Match error")
278300 }
279301
280302
281-func aR (aS) = [BooleanEntry(c, false), StringEntry(m, aS)]
303+func aY (aZ) = [BooleanEntry(c, false), StringEntry(m, aZ)]
282304
283305
284-func aT (aU,ac) = if ((ac == v))
306+func ba (bb,ak) = if ((ak == E))
285307 then {
286- let aV = (aU - w)
287- if ((0 >= aV))
288- then throw((((("Insufficient amount " + toString(aU)) + " to deduct staking fee ") + toString(w)) + " USD-N"))
289- 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
290312 }
291- else aU
313+ else bb
292314
293315
294-func aW () = throw("DApp is already active")
316+func bd () = throw("DApp is already active")
295317
296318
297-func aX () = throw("DApp is inactive at this moment")
319+func be () = throw("DApp is inactive at this moment")
298320
299321
300-func aY () = throw("Only admin can call this function")
322+func bf () = throw("Only admin can call this function")
301323
302324
303-func aZ () = throw(((("Incorrect assets attached. Expected: " + y) + " and ") + z))
325+func bg () = throw(((("Incorrect assets attached. Expected: " + H) + " and ") + I))
304326
305327
306-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))
307329
308330
309-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"))
310332
311333
312-func bh (bc,bd) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(bc)) + " ") + C) + " and ") + toString(bd)) + " ") + G) + " due to staking. Available: ") + toString(ag)) + " ") + C) + " and ") + toString(ah)) + " ") + 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"))
313335
314336
315-func bi () = aR(((((((((((((((("Suspicious state. Actual balances: " + toString(ai)) + " ") + C) + ", ") + toString(aj)) + " ") + 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))
316338
317339
318-@Callable(bj)
340+@Callable(bq)
319341 func init () = {
320- let bk = $Tuple2(bj.payments[0].amount, bj.payments[0].assetId)
321- let bl = bk._1
322- let bm = bk._2
323- let bn = $Tuple2(bj.payments[1].amount, bj.payments[1].assetId)
324- let bo = bn._1
325- let bp = bn._2
326- let bq = aO(bm)
327- let br = bq._1
328- let bs = bq._2
329- let bt = bq._3
330- 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)
331346 let bv = bu._1
332347 let bw = bu._2
333- 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
334356 if (isDefined(getBoolean(this, c)))
335- then aW()
336- else if ((bm == bp))
357+ then bd()
358+ else if ((bt == bw))
337359 then throw("Assets must be different")
338360 else {
339- let by = ((("s" + take(bs, 7)) + "_") + take(bw, 7))
340- let bz = ((((("ShareToken of SwopFi protocol for " + bs) + " and ") + bw) + " at address ") + toString(this))
341- let bA = ((bt + bx) / 2)
342- let bB = fraction(pow(bl, bt, 5, 1, bt, HALFDOWN), pow(bo, bx, 5, 1, bx, HALFDOWN), pow(10, 0, bA, 0, 0, HALFDOWN))
343- let bC = Issue(by, bz, bB, bA, true)
344- let bD = calculateAssetId(bC)
345- let bE = ao(bl, bo)
346-[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, br), StringEntry(e, bv), IntegerEntry(f, bl), IntegerEntry(g, bo), IntegerEntry(l, bE), IntegerEntry(j, M), IntegerEntry(k, O), 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)]
347369 }
348370 }
349371
350372
351373
352-@Callable(bj)
353-func replenishWithTwoTokens (bF) = {
354- let bm = bj.payments[0].assetId
355- let bp = bj.payments[1].assetId
356- let bl = aT(bj.payments[0].amount, bm)
357- let bo = aT(bj.payments[1].amount, bp)
358- let bG = fraction(fraction(Q, H, bl), P, fraction(Q, I, bo))
359- let bH = fraction(Q, bl, H)
360- let bI = fraction(Q, bo, I)
361- let bJ = fraction(min([bH, bI]), K, Q)
362- let bE = ao((H + bl), (I + bo))
363- if (!(x))
364- then aX()
365- 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))
366388 then true
367- else (bF > 10))
389+ else (bM > 10))
368390 then throw("Slippage tolerance must be <= 1%")
369- else if ((size(bj.payments) != 2))
391+ else if ((size(bq.payments) != 2))
370392 then throw("Two attached assets expected")
371- else if (if ((bm != A))
393+ else if (if ((bt != J))
372394 then true
373- else (bp != B))
374- then aZ()
375- else if (if ((((P * (S - bF)) / S) > bG))
395+ else (bw != K))
396+ then bg()
397+ else if (if ((((X * (aa - bM)) / aa) > bN))
376398 then true
377- else (bG > ((P * (S + bF)) / S)))
399+ else (bN > ((X * (aa + bM)) / aa)))
378400 then throw("Incorrect assets amount: amounts must have the contract ratio")
379- else if ((bJ == 0))
401+ else if ((bQ == 0))
380402 then throw("Too small amount to replenish")
381- else if (!(ak))
382- then ([ScriptTransfer(bj.caller, bl, bm), ScriptTransfer(bj.caller, bo, bp)] ++ bi())
383- 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)]
384406 }
385407
386408
387409
388-@Callable(bj)
389-func replenishWithOneToken (bK,bL) = {
390- let bM = $Tuple2(bj.payments[0].amount, bj.payments[0].assetId)
391- let bN = bM._1
392- let bO = bM._2
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 = (Q - ((Q * bR) / 10000000))
399- let bT = (Q + ((Q * bR) / 10000000))
400- let bU = (Q - ((Q * 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 (!(ak))
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 = ao(bY, bZ)
424- let ay = fraction(Q, L, ax)
425- let cc = (fraction((Q * Q), bY, bZ) / fraction(Q, bW, bX))
426- let cd = fraction((ca + cb), U, (2 * V))
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 (L > 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), Q, bY)
441- let bI = fraction(aT(bX, B), Q, bZ)
442- let bJ = fraction(min([bH, bI]), K, Q)
443- let ce = fraction(bJ, (O - (M / 2)), O)
444- let cf = fraction(bJ, (N / 2), O)
445- let cg = fraction(cf, H, K)
446- let ch = fraction(cf, I, K)
447- let bE = ao((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 = ao((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 (!(ak))
470- then ([ScriptTransfer(bj.caller, bN, bO)] ++ bi())
471- else if (if ((cj > ag))
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 > ah))
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 (!(ak))
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 ((W > fraction(Q, cm, bN)))
522+ else if (if ((ae > fraction(Y, cq, bU)))
502523 then true
503- else (fraction(Q, cl, bN) > X))
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 = aq(cl, cm, bN, bO)
510- let cp = fraction(aU, N, O)
511- let cq = fraction(aU, (O - M), O)
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), U, (2 * V))
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 (ad >= ca)
546+ then (al >= ch)
526547 else false)
527- then be(cq, ag, 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 (ad >= cb)
552+ then (al >= ci)
532553 else false)
533- then be(cq, ah, G)
534- else [IntegerEntry(f, ca), IntegerEntry(g, cb), IntegerEntry(l, ao(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 = (ai - H)
561- let cu = (aj - 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 = ao((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 ((K == E))
635+ then (cD.payments[0].assetId == E)
615636 else false
616- let cD = if (if (if (sigVerify(cx.bodyBytes, cx.proofs[0], n))
637+ let cH = if (if (if (sigVerify(cB.bodyBytes, cB.proofs[0], x))
617638 then true
618- else sigVerify(cx.bodyBytes, cx.proofs[0], o))
639+ else sigVerify(cB.bodyBytes, cB.proofs[0], y))
619640 then true
620- else sigVerify(cx.bodyBytes, cx.proofs[0], p))
641+ else sigVerify(cB.bodyBytes, cB.proofs[0], z))
621642 then true
622- else sigVerify(cx.bodyBytes, cx.proofs[0], r)
623- if (if (if (cA)
643+ else sigVerify(cB.bodyBytes, cB.proofs[0], B)
644+ if (if (if (cE)
624645 then true
625- else cB)
646+ else cF)
626647 then true
627- else cC)
628- then cD
648+ else cG)
649+ then cH
629650 else false
630651 }
631652 else {
632- let cE = if (sigVerify(cx.bodyBytes, cx.proofs[0], n))
653+ let cI = if (sigVerify(cB.bodyBytes, cB.proofs[0], x))
633654 then 1
634655 else 0
635- let cF = if (sigVerify(cx.bodyBytes, cx.proofs[1], o))
656+ let cJ = if (sigVerify(cB.bodyBytes, cB.proofs[1], y))
636657 then 1
637658 else 0
638- let cG = if (sigVerify(cx.bodyBytes, cx.proofs[2], p))
659+ let cK = if (sigVerify(cB.bodyBytes, cB.proofs[2], z))
639660 then 1
640661 else 0
641- (((cE + cF) + cG) >= 2)
662+ (((cI + cJ) + cK) >= 2)
642663 }
643664 }
644665
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'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
30+let n = "admin_pub_1"
3131
32-let o = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
32+let o = "admin_pub_2"
3333
34-let p = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
34+let p = "admin_pub_3"
3535
36-let q = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
36+let q = Address(base58'3N77kfPbQyjXWpDALX3xjKw3iEGMWEctV37')
3737
38-let r = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
38+let r = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
3939
40-let s = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
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'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
4353
44-let u = Address(base58'3N77kfPbQyjXWpDALX3xjKw3iEGMWEctV37')
54+let x = s(n)
4555
46-let v = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
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'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
5161
52-let y = getStringValue(this, d)
62+let B = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
5363
54-let z = getStringValue(this, e)
64+let C = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
5565
56-let A = if ((y == "WAVES"))
66+let D = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
67+
68+let E = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
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 = getIntegerValue(this, l)
124+let T = getIntegerValue(this, l)
103125
104-let M = 500
126+let U = 500
105127
106-let N = 200
128+let V = 200
107129
108-let O = 1000000
130+let W = 1000000
109131
110-let P = 1000
132+let X = 1000
111133
112-let Q = 100000000
134+let Y = 100000000
113135
114-let R = 1000000000000
136+let Z = 1000000000000
115137
116-let S = 1000
138+let aa = 1000
117139
118-let T = 8
140+let ab = 8
119141
120-let U = 50
142+let ac = 50
121143
122-let V = 100
144+let ad = 100
123145
124-let W = 90000000
146+let ae = 90000000
125147
126-let X = 110000000
148+let af = 110000000
127149
128-let Y = 50
150+let ag = 50
129151
130-let Z = 2
152+let ah = 2
131153
132-let aa = 46000000
154+let ai = 46000000
133155
134-func ab (ac) = {
135- let D = ac
136- if ($isInstanceOf(D, "ByteVector"))
156+func aj (ak) = {
157+ let u = ak
158+ if ($isInstanceOf(u, "ByteVector"))
137159 then {
138- let E = D
139- assetBalance(this, E)
160+ let M = u
161+ assetBalance(this, M)
140162 }
141- else if ($isInstanceOf(D, "Unit"))
163+ else if ($isInstanceOf(u, "Unit"))
142164 then {
143- let F = D
165+ let N = u
144166 wavesBalance(this).available
145167 }
146168 else throw("Match error")
147169 }
148170
149171
150-let ad = {
151- let D = getInteger(t, ((("rpd_balance_" + toBase58String(v)) + "_") + toString(this)))
152- if ($isInstanceOf(D, "Int"))
172+let al = {
173+ let u = getInteger(D, ((("rpd_balance_" + toBase58String(E)) + "_") + toString(this)))
174+ if ($isInstanceOf(u, "Int"))
153175 then {
154- let ae = D
155- ae
176+ let am = u
177+ am
156178 }
157- else if ($isInstanceOf(D, "Unit"))
179+ else if ($isInstanceOf(u, "Unit"))
158180 then {
159- let af = D
181+ let w = u
160182 0
161183 }
162184 else throw("Match error")
163185 }
164186
165-let ag = (H - (if ((A == v))
166- then ad
187+let an = (P - (if ((J == E))
188+ then al
167189 else 0))
168190
169-let ah = (I - (if ((B == v))
170- then ad
191+let ao = (Q - (if ((K == E))
192+ then al
171193 else 0))
172194
173-let ai = (ab(A) + (if ((A == v))
174- then ad
195+let ap = (aj(J) + (if ((J == E))
196+ then al
175197 else 0))
176198
177-let aj = (ab(B) + (if ((B == v))
178- then ad
199+let aq = (aj(K) + (if ((K == E))
200+ then al
179201 else 0))
180202
181-let ak = if ((ai >= H))
182- then (aj >= I)
203+let ar = if ((ap >= P))
204+ then (aq >= Q)
183205 else false
184206
185-func al (am,an) = (((fraction(R, am, an) + fraction(R, an, am)) / 2) / 10000)
207+func as (at,au) = (((fraction(Z, at, au) + fraction(Z, au, at)) / 2) / 10000)
186208
187209
188-func ao (am,an) = {
189- let ap = al(am, an)
190- (fraction((am + an), Q, pow(ap, T, Y, Z, T, UP)) + (2 * fraction(pow(fraction(am, an, Q), 0, 5, 1, (T / 2), DOWN), pow((ap - aa), T, Y, Z, T, DOWN), Q)))
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)))
191213 }
192214
193215
194-func aq (ar,as,at,au) = {
195- let av = (Q - ((Q * 1) / 10000000))
196- let aw = (ar - as)
197- let am = (H + at)
198- let an = (I + at)
199- let ax = if ((au == A))
200- then ao(am, (I - ar))
201- else if ((au == B))
202- then ao((H - ar), an)
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)
203225 else throw("Wrong asset in payment")
204- let ay = fraction(Q, L, ax)
205- func az (aA,aB) = if ((aA == -1))
226+ let aF = fraction(Y, T, aE)
227+ func aG (aH,aI) = if ((aH == -1))
206228 then {
207- let aC = (ar - ((aB * aw) / 5))
208- let aD = if ((au == A))
209- then ao(am, (I - aC))
210- else ao((H - aC), an)
211- if ((aD > L))
212- 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
213235 else -1
214236 }
215- else aA
237+ else aH
216238
217- let aE = {
218- let aF = [1, 2, 3, 4, 5]
219- let aG = size(aF)
220- let aH = -1
221- if ((aG == 0))
222- 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
223245 else {
224- let aI = az(aH, aF[0])
225- if ((aG == 1))
226- then aI
246+ let aP = aG(aO, aM[0])
247+ if ((aN == 1))
248+ then aP
227249 else {
228- let aJ = az(aI, aF[1])
229- if ((aG == 2))
230- then aJ
250+ let aQ = aG(aP, aM[1])
251+ if ((aN == 2))
252+ then aQ
231253 else {
232- let aK = az(aJ, aF[2])
233- if ((aG == 3))
234- then aK
254+ let aR = aG(aQ, aM[2])
255+ if ((aN == 3))
256+ then aR
235257 else {
236- let aL = az(aK, aF[3])
237- if ((aG == 4))
238- then aL
258+ let aS = aG(aR, aM[3])
259+ if ((aN == 4))
260+ then aS
239261 else {
240- let aM = az(aL, aF[4])
241- if ((aG == 5))
242- then aM
262+ let aT = aG(aS, aM[4])
263+ if ((aN == 5))
264+ then aT
243265 else {
244- let aN = az(aM, aF[5])
266+ let aU = aG(aT, aM[5])
245267 throw("List size exceed 5")
246268 }
247269 }
248270 }
249271 }
250272 }
251273 }
252274 }
253- if ((0 > aE))
275+ if ((0 > aL))
254276 then throw("something went wrong while working with amountToSend")
255- else if (if ((ay > av))
256- then (ax > L)
277+ else if (if ((aF > aC))
278+ then (aE > T)
257279 else false)
258- then ar
259- else aE
280+ then ay
281+ else aL
260282 }
261283
262284
263-func aO (ac) = {
264- let D = ac
265- if ($isInstanceOf(D, "ByteVector"))
285+func aV (ak) = {
286+ let u = ak
287+ if ($isInstanceOf(u, "ByteVector"))
266288 then {
267- let E = D
268- let aP = toBase58String(E)
269- let aQ = valueOrErrorMessage(assetInfo(E), (("Asset " + aP) + " doesn't exist"))
270- $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)
271293 }
272- else if ($isInstanceOf(D, "Unit"))
294+ else if ($isInstanceOf(u, "Unit"))
273295 then {
274- let F = D
296+ let N = u
275297 $Tuple3("WAVES", "WAVES", 8)
276298 }
277299 else throw("Match error")
278300 }
279301
280302
281-func aR (aS) = [BooleanEntry(c, false), StringEntry(m, aS)]
303+func aY (aZ) = [BooleanEntry(c, false), StringEntry(m, aZ)]
282304
283305
284-func aT (aU,ac) = if ((ac == v))
306+func ba (bb,ak) = if ((ak == E))
285307 then {
286- let aV = (aU - w)
287- if ((0 >= aV))
288- then throw((((("Insufficient amount " + toString(aU)) + " to deduct staking fee ") + toString(w)) + " USD-N"))
289- 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
290312 }
291- else aU
313+ else bb
292314
293315
294-func aW () = throw("DApp is already active")
316+func bd () = throw("DApp is already active")
295317
296318
297-func aX () = throw("DApp is inactive at this moment")
319+func be () = throw("DApp is inactive at this moment")
298320
299321
300-func aY () = throw("Only admin can call this function")
322+func bf () = throw("Only admin can call this function")
301323
302324
303-func aZ () = throw(((("Incorrect assets attached. Expected: " + y) + " and ") + z))
325+func bg () = throw(((("Incorrect assets attached. Expected: " + H) + " and ") + I))
304326
305327
306-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))
307329
308330
309-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"))
310332
311333
312-func bh (bc,bd) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(bc)) + " ") + C) + " and ") + toString(bd)) + " ") + G) + " due to staking. Available: ") + toString(ag)) + " ") + C) + " and ") + toString(ah)) + " ") + 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"))
313335
314336
315-func bi () = aR(((((((((((((((("Suspicious state. Actual balances: " + toString(ai)) + " ") + C) + ", ") + toString(aj)) + " ") + 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))
316338
317339
318-@Callable(bj)
340+@Callable(bq)
319341 func init () = {
320- let bk = $Tuple2(bj.payments[0].amount, bj.payments[0].assetId)
321- let bl = bk._1
322- let bm = bk._2
323- let bn = $Tuple2(bj.payments[1].amount, bj.payments[1].assetId)
324- let bo = bn._1
325- let bp = bn._2
326- let bq = aO(bm)
327- let br = bq._1
328- let bs = bq._2
329- let bt = bq._3
330- 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)
331346 let bv = bu._1
332347 let bw = bu._2
333- 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
334356 if (isDefined(getBoolean(this, c)))
335- then aW()
336- else if ((bm == bp))
357+ then bd()
358+ else if ((bt == bw))
337359 then throw("Assets must be different")
338360 else {
339- let by = ((("s" + take(bs, 7)) + "_") + take(bw, 7))
340- let bz = ((((("ShareToken of SwopFi protocol for " + bs) + " and ") + bw) + " at address ") + toString(this))
341- let bA = ((bt + bx) / 2)
342- let bB = fraction(pow(bl, bt, 5, 1, bt, HALFDOWN), pow(bo, bx, 5, 1, bx, HALFDOWN), pow(10, 0, bA, 0, 0, HALFDOWN))
343- let bC = Issue(by, bz, bB, bA, true)
344- let bD = calculateAssetId(bC)
345- let bE = ao(bl, bo)
346-[StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, br), StringEntry(e, bv), IntegerEntry(f, bl), IntegerEntry(g, bo), IntegerEntry(l, bE), IntegerEntry(j, M), IntegerEntry(k, O), 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)]
347369 }
348370 }
349371
350372
351373
352-@Callable(bj)
353-func replenishWithTwoTokens (bF) = {
354- let bm = bj.payments[0].assetId
355- let bp = bj.payments[1].assetId
356- let bl = aT(bj.payments[0].amount, bm)
357- let bo = aT(bj.payments[1].amount, bp)
358- let bG = fraction(fraction(Q, H, bl), P, fraction(Q, I, bo))
359- let bH = fraction(Q, bl, H)
360- let bI = fraction(Q, bo, I)
361- let bJ = fraction(min([bH, bI]), K, Q)
362- let bE = ao((H + bl), (I + bo))
363- if (!(x))
364- then aX()
365- 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))
366388 then true
367- else (bF > 10))
389+ else (bM > 10))
368390 then throw("Slippage tolerance must be <= 1%")
369- else if ((size(bj.payments) != 2))
391+ else if ((size(bq.payments) != 2))
370392 then throw("Two attached assets expected")
371- else if (if ((bm != A))
393+ else if (if ((bt != J))
372394 then true
373- else (bp != B))
374- then aZ()
375- else if (if ((((P * (S - bF)) / S) > bG))
395+ else (bw != K))
396+ then bg()
397+ else if (if ((((X * (aa - bM)) / aa) > bN))
376398 then true
377- else (bG > ((P * (S + bF)) / S)))
399+ else (bN > ((X * (aa + bM)) / aa)))
378400 then throw("Incorrect assets amount: amounts must have the contract ratio")
379- else if ((bJ == 0))
401+ else if ((bQ == 0))
380402 then throw("Too small amount to replenish")
381- else if (!(ak))
382- then ([ScriptTransfer(bj.caller, bl, bm), ScriptTransfer(bj.caller, bo, bp)] ++ bi())
383- 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)]
384406 }
385407
386408
387409
388-@Callable(bj)
389-func replenishWithOneToken (bK,bL) = {
390- let bM = $Tuple2(bj.payments[0].amount, bj.payments[0].assetId)
391- let bN = bM._1
392- let bO = bM._2
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 = (Q - ((Q * bR) / 10000000))
399- let bT = (Q + ((Q * bR) / 10000000))
400- let bU = (Q - ((Q * 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 (!(ak))
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 = ao(bY, bZ)
424- let ay = fraction(Q, L, ax)
425- let cc = (fraction((Q * Q), bY, bZ) / fraction(Q, bW, bX))
426- let cd = fraction((ca + cb), U, (2 * V))
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 (L > 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), Q, bY)
441- let bI = fraction(aT(bX, B), Q, bZ)
442- let bJ = fraction(min([bH, bI]), K, Q)
443- let ce = fraction(bJ, (O - (M / 2)), O)
444- let cf = fraction(bJ, (N / 2), O)
445- let cg = fraction(cf, H, K)
446- let ch = fraction(cf, I, K)
447- let bE = ao((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 = ao((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 (!(ak))
470- then ([ScriptTransfer(bj.caller, bN, bO)] ++ bi())
471- else if (if ((cj > ag))
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 > ah))
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 (!(ak))
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 ((W > fraction(Q, cm, bN)))
522+ else if (if ((ae > fraction(Y, cq, bU)))
502523 then true
503- else (fraction(Q, cl, bN) > X))
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 = aq(cl, cm, bN, bO)
510- let cp = fraction(aU, N, O)
511- let cq = fraction(aU, (O - M), O)
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), U, (2 * V))
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 (ad >= ca)
546+ then (al >= ch)
526547 else false)
527- then be(cq, ag, 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 (ad >= cb)
552+ then (al >= ci)
532553 else false)
533- then be(cq, ah, G)
534- else [IntegerEntry(f, ca), IntegerEntry(g, cb), IntegerEntry(l, ao(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 = (ai - H)
561- let cu = (aj - 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 = ao((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 ((K == E))
635+ then (cD.payments[0].assetId == E)
615636 else false
616- let cD = if (if (if (sigVerify(cx.bodyBytes, cx.proofs[0], n))
637+ let cH = if (if (if (sigVerify(cB.bodyBytes, cB.proofs[0], x))
617638 then true
618- else sigVerify(cx.bodyBytes, cx.proofs[0], o))
639+ else sigVerify(cB.bodyBytes, cB.proofs[0], y))
619640 then true
620- else sigVerify(cx.bodyBytes, cx.proofs[0], p))
641+ else sigVerify(cB.bodyBytes, cB.proofs[0], z))
621642 then true
622- else sigVerify(cx.bodyBytes, cx.proofs[0], r)
623- if (if (if (cA)
643+ else sigVerify(cB.bodyBytes, cB.proofs[0], B)
644+ if (if (if (cE)
624645 then true
625- else cB)
646+ else cF)
626647 then true
627- else cC)
628- then cD
648+ else cG)
649+ then cH
629650 else false
630651 }
631652 else {
632- let cE = if (sigVerify(cx.bodyBytes, cx.proofs[0], n))
653+ let cI = if (sigVerify(cB.bodyBytes, cB.proofs[0], x))
633654 then 1
634655 else 0
635- let cF = if (sigVerify(cx.bodyBytes, cx.proofs[1], o))
656+ let cJ = if (sigVerify(cB.bodyBytes, cB.proofs[1], y))
636657 then 1
637658 else 0
638- let cG = if (sigVerify(cx.bodyBytes, cx.proofs[2], p))
659+ let cK = if (sigVerify(cB.bodyBytes, cB.proofs[2], z))
639660 then 1
640661 else 0
641- (((cE + cF) + cG) >= 2)
662+ (((cI + cJ) + cK) >= 2)
642663 }
643664 }
644665

github/deemru/w8io/169f3d6 
264.12 ms