tx · 2xiM3XmNExytHoPL9ETDaqc7yWFWouktmXcRhtWULfrg

3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g:  -0.01400000 Waves

2022.03.11 12:19 [3024226] smart account 3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g > SELF 0.00000000 Waves

{ "type": 13, "id": "2xiM3XmNExytHoPL9ETDaqc7yWFWouktmXcRhtWULfrg", "fee": 1400000, "feeAssetId": null, "timestamp": 1646990325790, "version": 1, "sender": "3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g", "senderPublicKey": "7JeravxHejNM5QqFiU1URLXYHueuDGzjdGucMBFJe5nz", "proofs": [ "3TPUXXHgaySEuS7VYWeJVMQLmR8zQdsxC5VX2EuafsCtJ5xKSD4FiZxA6SR29C5SWCEbivrvTihtzbTBchgNn3qg" ], "script": "base64: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dAEAAAAQa2V5RmFjdG9yeUNvbmZpZwAAAAACAAAAESVzX19mYWN0b3J5Q29uZmlnAQAAAA1rZXlNYXRjaGVyUHViAAAAAAIAAAAYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQAAAClrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwAAAAEAAAATcG9vbENvbnRyYWN0QWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAACCVzJXMlc19fBQAAABNwb29sQ29udHJhY3RBZGRyZXNzAgAAACBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAEAAAANa2V5UG9vbENvbmZpZwAAAAIAAAAJaUFtdEFzc2V0AAAAC2lQcmljZUFzc2V0CQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACCVkJWQlc19fBQAAAAlpQW10QXNzZXQCAAAAAl9fBQAAAAtpUHJpY2VBc3NldAIAAAAIX19jb25maWcBAAAAH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQAAAABAAAADGJhc2VBc3NldFN0cgkAASwAAAACAgAAACglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQAAAAxiYXNlQXNzZXRTdHIBAAAAE2tleUFsbFBvb2xzU2h1dGRvd24AAAAAAgAAAAwlc19fc2h1dGRvd24BAAAADWtleVBvb2xXZWlnaHQAAAABAAAAD2NvbnRyYWN0QWRkcmVzcwkAASwAAAACAgAAABIlcyVzX19wb29sV2VpZ2h0X18FAAAAD2NvbnRyYWN0QWRkcmVzcwEAAAAPdGhyb3dPcmRlckVycm9yAAAAAwAAAApvcmRlclZhbGlkAAAAC3NlbmRlclZhbGlkAAAADG1hdGNoZXJWYWxpZAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAkb3JkZXIgdmFsaWRhdGlvbiBmYWlsZWQ6IG9yZGVyVmFsaWQ9CQABpQAAAAEFAAAACm9yZGVyVmFsaWQCAAAADSBzZW5kZXJWYWxpZD0JAAGlAAAAAQUAAAALc2VuZGVyVmFsaWQCAAAADiBtYXRjaGVyVmFsaWQ9CQABpQAAAAEFAAAADG1hdGNoZXJWYWxpZAEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQkABLkAAAACCQAETAAAAAICAAAACm1hbmRhdG9yeSAJAARMAAAAAgkABCUAAAABBQAAAAdhZGRyZXNzCQAETAAAAAICAAAAAS4JAARMAAAAAgUAAAADa2V5CQAETAAAAAICAAAADyBpcyBub3QgZGVmaW5lZAUAAAADbmlsAgAAAAABAAAADGdldEludE9yRmFpbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAdhZGRyZXNzBQAAAANrZXkJAAS5AAAAAgkABEwAAAACAgAAAAptYW5kYXRvcnkgCQAETAAAAAIJAAQlAAAAAQUAAAAHYWRkcmVzcwkABEwAAAACAgAAAAEuCQAETAAAAAIFAAAAA2tleQkABEwAAAACAgAAAA8gaXMgbm90IGRlZmluZWQFAAAAA25pbAIAAAAAAAAAAA9mYWN0b3J5Q29udHJhY3QJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAAR0aGlzCQEAAAACZmMAAAAAAQAAABBpc0dsb2JhbFNodXRkb3duAAAAAAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBsAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAABNrZXlBbGxQb29sc1NodXRkb3duAAAAAAcBAAAAE2dldE1hdGNoZXJQdWJPckZhaWwAAAAACQACWQAAAAEJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAA1rZXlNYXRjaGVyUHViAAAAAAEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACGFtdEFzc2V0CQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAEdGhpcwkBAAAAAmFhAAAAAAQAAAAKcHJpY2VBc3NldAkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAABHRoaXMJAQAAAAJwYQAAAAAEAAAAC2lQcmljZUFzc2V0CQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAAfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAAAAAEFAAAACnByaWNlQXNzZXQEAAAACWlBbXRBc3NldAkBAAAADGdldEludE9yRmFpbAAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQAAAABBQAAAAhhbXRBc3NldAkABLUAAAACCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAANa2V5UG9vbENvbmZpZwAAAAIJAAGkAAAAAQUAAAAJaUFtdEFzc2V0CQABpAAAAAEFAAAAC2lQcmljZUFzc2V0BQAAAANTRVABAAAAEGdldEZhY3RvcnlDb25maWcAAAAACQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAABBrZXlGYWN0b3J5Q29uZmlnAAAAAAUAAAADU0VQAQAAABFkYXRhUHV0QWN0aW9uSW5mbwAAAAoAAAANaW5BbXRBc3NldEFtdAAAAA9pblByaWNlQXNzZXRBbXQAAAAIb3V0THBBbXQAAAAFcHJpY2UAAAAdc2xpcHBhZ2VUb2xlcmFuY2VQYXNzZWRCeVVzZXIAAAAVc2xpcHBhZ2VUb2xlcmFuY2VSZWFsAAAACHR4SGVpZ2h0AAAAC3R4VGltZXN0YW1wAAAAEnNsaXBhZ2VBbXRBc3NldEFtdAAAABRzbGlwYWdlUHJpY2VBc3NldEFtdAkABLkAAAACCQAETAAAAAICAAAAFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAANaW5BbXRBc3NldEFtdAkABEwAAAACCQABpAAAAAEFAAAAD2luUHJpY2VBc3NldEFtdAkABEwAAAACCQABpAAAAAEFAAAACG91dExwQW10CQAETAAAAAIJAAGkAAAAAQUAAAAFcHJpY2UJAARMAAAAAgkAAaQAAAABBQAAAB1zbGlwcGFnZVRvbGVyYW5jZVBhc3NlZEJ5VXNlcgkABEwAAAACCQABpAAAAAEFAAAAFXNsaXBwYWdlVG9sZXJhbmNlUmVhbAkABEwAAAACCQABpAAAAAEFAAAACHR4SGVpZ2h0CQAETAAAAAIJAAGkAAAAAQUAAAALdHhUaW1lc3RhbXAJAARMAAAAAgkAAaQAAAABBQAAABJzbGlwYWdlQW10QXNzZXRBbXQJAARMAAAAAgkAAaQAAAABBQAAABRzbGlwYWdlUHJpY2VBc3NldEFtdAUAAAADbmlsBQAAAANTRVABAAAAEWRhdGFHZXRBY3Rpb25JbmZvAAAABgAAAA5vdXRBbXRBc3NldEFtdAAAABBvdXRQcmljZUFzc2V0QW10AAAAB2luTHBBbXQAAAAFcHJpY2UAAAAIdHhIZWlnaHQAAAALdHhUaW1lc3RhbXAJAAS5AAAAAgkABEwAAAACAgAAAAwlZCVkJWQlZCVkJWQJAARMAAAAAgkAAaQAAAABBQAAAA5vdXRBbXRBc3NldEFtdAkABEwAAAACCQABpAAAAAEFAAAAEG91dFByaWNlQXNzZXRBbXQJAARMAAAAAgkAAaQAAAABBQAAAAdpbkxwQW10CQAETAAAAAIJAAGkAAAAAQUAAAAFcHJpY2UJAARMAAAAAgkAAaQAAAABBQAAAAh0eEhlaWdodAkABEwAAAACCQABpAAAAAEFAAAAC3R4VGltZXN0YW1wBQAAAANuaWwFAAAAA1NFUAEAAAANZ2V0QWNjQmFsYW5jZQAAAAEAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAAHYXNzZXRJZAIAAAAFV0FWRVMICQAD7wAAAAEFAAAABHRoaXMAAAAJYXZhaWxhYmxlCQAD8AAAAAIFAAAABHRoaXMJAAJZAAAAAQUAAAAHYXNzZXRJZAEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgAAAAhwckFtdFgxOAAAAAhhbUFtdFgxOAkAATwAAAADBQAAAAhwckFtdFgxOAUAAAAHc2NhbGUxOAUAAAAIYW1BbXRYMTgBAAAAEHByaXZhdGVDYWxjUHJpY2UAAAAEAAAACmFtQXNzZXREY20AAAAKcHJBc3NldERjbQAAAAVhbUFtdAAAAAVwckFtdAQAAAAOYW10QXNzZXRBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAABWFtQW10BQAAAAphbUFzc2V0RGNtBAAAABBwcmljZUFzc2V0QW10WDE4CQEAAAAFdG9YMTgAAAACBQAAAAVwckFtdAUAAAAKcHJBc3NldERjbQkBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIFAAAAEHByaWNlQXNzZXRBbXRYMTgFAAAADmFtdEFzc2V0QW10WDE4AQAAAApjYWxjUHJpY2VzAAAAAwAAAAVhbUFtdAAAAAVwckFtdAAAAAVscEFtdAQAAAADY2ZnCQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAAC2FtdEFzc2V0RGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAA5pZHhBbXRBc3NldERjbQQAAAANcHJpY2VBc3NldERjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAQaWR4UHJpY2VBc3NldERjbQQAAAAIcHJpY2VYMTgJAQAAABBwcml2YXRlQ2FsY1ByaWNlAAAABAUAAAALYW10QXNzZXREY20FAAAADXByaWNlQXNzZXREY20FAAAABWFtQW10BQAAAAVwckFtdAQAAAAIYW1BbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAABWFtQW10BQAAAAthbXRBc3NldERjbQQAAAAIcHJBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAABXByQW10BQAAAA1wcmljZUFzc2V0RGNtBAAAAAhscEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAFbHBBbXQFAAAABnNjYWxlOAQAAAATbHBQcmljZUluQW1Bc3NldFgxOAkBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIFAAAACGFtQW10WDE4BQAAAAhscEFtdFgxOAQAAAATbHBQcmljZUluUHJBc3NldFgxOAkBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIFAAAACHByQW10WDE4BQAAAAhscEFtdFgxOAkABEwAAAACBQAAAAhwcmljZVgxOAkABEwAAAACBQAAABNscFByaWNlSW5BbUFzc2V0WDE4CQAETAAAAAIFAAAAE2xwUHJpY2VJblByQXNzZXRYMTgFAAAAA25pbAEAAAAPY2FsY3VsYXRlUHJpY2VzAAAAAwAAAAVhbUFtdAAAAAVwckFtdAAAAAVscEFtdAQAAAAGcHJpY2VzCQEAAAAKY2FsY1ByaWNlcwAAAAMFAAAABWFtQW10BQAAAAVwckFtdAUAAAAFbHBBbXQJAARMAAAAAgkBAAAAB2Zyb21YMTgAAAACCQABkQAAAAIFAAAABnByaWNlcwAAAAAAAAAAAAUAAAAGc2NhbGU4CQAETAAAAAIJAQAAAAdmcm9tWDE4AAAAAgkAAZEAAAACBQAAAAZwcmljZXMAAAAAAAAAAAEFAAAABnNjYWxlOAkABEwAAAACCQEAAAAHZnJvbVgxOAAAAAIJAAGRAAAAAgUAAAAGcHJpY2VzAAAAAAAAAAACBQAAAAZzY2FsZTgFAAAAA25pbAEAAAAUZXN0aW1hdGVHZXRPcGVyYXRpb24AAAAEAAAABnR4SWQ1OAAAAApwbXRBc3NldElkAAAACHBtdExwQW10AAAAC3VzZXJBZGRyZXNzBAAAAANjZmcJAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAAJbHBBc3NldElkCQABkQAAAAIFAAAAA2NmZwUAAAAQaWR4UG9vbExQQXNzZXRJZAQAAAAJYW1Bc3NldElkCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4QW10QXNzZXRJZAQAAAAJcHJBc3NldElkCQABkQAAAAIFAAAAA2NmZwUAAAAPaWR4UHJpY2VBc3NldElkBAAAAAphbUFzc2V0RGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAA5pZHhBbXRBc3NldERjbQQAAAAKcHJBc3NldERjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAQaWR4UHJpY2VBc3NldERjbQQAAAAKcG9vbFN0YXR1cwkAAZEAAAACBQAAAANjZmcFAAAADWlkeFBvb2xTdGF0dXMEAAAACmxwRW1pc3Npb24ICQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQkAAlkAAAABBQAAAAlscEFzc2V0SWQJAAEsAAAAAgkAASwAAAACAgAAAAZBc3NldCAFAAAACWxwQXNzZXRJZAIAAAAOIGRvZXNuJ3QgZXhpc3QAAAAIcXVhbnRpdHkDCQEAAAACIT0AAAACBQAAAAlscEFzc2V0SWQFAAAACnBtdEFzc2V0SWQJAAACAAAAAQIAAAAVSW52YWxpZCBhc3NldCBwYXNzZWQuBAAAAAlhbUJhbGFuY2UJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAJYW1Bc3NldElkBAAAAAxhbUJhbGFuY2VYMTgJAQAAAAV0b1gxOAAAAAIFAAAACWFtQmFsYW5jZQUAAAAKYW1Bc3NldERjbQQAAAAJcHJCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAACXByQXNzZXRJZAQAAAAMcHJCYWxhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAAAlwckJhbGFuY2UFAAAACnByQXNzZXREY20EAAAAC2N1clByaWNlWDE4CQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgUAAAAMcHJCYWxhbmNlWDE4BQAAAAxhbUJhbGFuY2VYMTgEAAAACGN1clByaWNlCQEAAAAHZnJvbVgxOAAAAAIFAAAAC2N1clByaWNlWDE4BQAAAAZzY2FsZTgEAAAAC3BtdExwQW10WDE4CQEAAAAFdG9YMTgAAAACBQAAAAhwbXRMcEFtdAUAAAAGc2NhbGU4BAAAAA1scEVtaXNzaW9uWDE4CQEAAAAFdG9YMTgAAAACBQAAAApscEVtaXNzaW9uBQAAAAZzY2FsZTgEAAAAC291dEFtQW10WDE4CQABPAAAAAMFAAAADGFtQmFsYW5jZVgxOAUAAAALcG10THBBbXRYMTgFAAAADWxwRW1pc3Npb25YMTgEAAAAC291dFByQW10WDE4CQABPAAAAAMFAAAADHByQmFsYW5jZVgxOAUAAAALcG10THBBbXRYMTgFAAAADWxwRW1pc3Npb25YMTgEAAAACG91dEFtQW10CQEAAAAHZnJvbVgxOAAAAAIFAAAAC291dEFtQW10WDE4BQAAAAphbUFzc2V0RGNtBAAAAAhvdXRQckFtdAkBAAAAB2Zyb21YMTgAAAACBQAAAAtvdXRQckFtdFgxOAUAAAAKcHJBc3NldERjbQQAAAAFc3RhdGUDCQAAAAAAAAIFAAAABnR4SWQ1OAIAAAAABQAAAANuaWwJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAALdXNlckFkZHJlc3MFAAAACG91dEFtQW10AwkAAAAAAAACBQAAAAlhbUFzc2V0SWQCAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAACWFtQXNzZXRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAt1c2VyQWRkcmVzcwUAAAAIb3V0UHJBbXQDCQAAAAAAAAIFAAAACXByQXNzZXRJZAIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAAJcHJBc3NldElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAANnYXUAAAACCQAEJQAAAAEFAAAAC3VzZXJBZGRyZXNzBQAAAAZ0eElkNTgJAQAAABFkYXRhR2V0QWN0aW9uSW5mbwAAAAYFAAAACG91dEFtQW10BQAAAAhvdXRQckFtdAUAAAAIcG10THBBbXQFAAAACGN1clByaWNlBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAACcGwAAAAABQAAAAhjdXJQcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAAnBoAAAAAgUAAAAGaGVpZ2h0CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAUAAAAIY3VyUHJpY2UFAAAAA25pbAkABRwAAAAKBQAAAAhvdXRBbUFtdAUAAAAIb3V0UHJBbXQFAAAACWFtQXNzZXRJZAUAAAAJcHJBc3NldElkBQAAAAlhbUJhbGFuY2UFAAAACXByQmFsYW5jZQUAAAAKbHBFbWlzc2lvbgUAAAALY3VyUHJpY2VYMTgFAAAACnBvb2xTdGF0dXMFAAAABXN0YXRlAQAAABRlc3RpbWF0ZVB1dE9wZXJhdGlvbgAAAAkAAAAGdHhJZDU4AAAAEXNsaXBwYWdlVG9sZXJhbmNlAAAADGluQW1Bc3NldEFtdAAAAAtpbkFtQXNzZXRJZAAAAAxpblByQXNzZXRBbXQAAAALaW5QckFzc2V0SWQAAAALdXNlckFkZHJlc3MAAAAKaXNFdmFsdWF0ZQAAAAZlbWl0THAEAAAAA2NmZwkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAAlscEFzc2V0SWQJAAJZAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAEGlkeFBvb2xMUEFzc2V0SWQEAAAADGFtQXNzZXRJZFN0cgkAAZEAAAACBQAAAANjZmcFAAAADWlkeEFtdEFzc2V0SWQEAAAADHByQXNzZXRJZFN0cgkAAZEAAAACBQAAAANjZmcFAAAAD2lkeFByaWNlQXNzZXRJZAQAAAALaUFtdEFzc2V0SWQJAAGRAAAAAgUAAAADY2ZnBQAAAA5pZHhJQW10QXNzZXRJZAQAAAANaVByaWNlQXNzZXRJZAkAAZEAAAACBQAAAANjZmcFAAAAEGlkeElQcmljZUFzc2V0SWQEAAAAC2FtdEFzc2V0RGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAA5pZHhBbXRBc3NldERjbQQAAAANcHJpY2VBc3NldERjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAQaWR4UHJpY2VBc3NldERjbQQAAAAKcG9vbFN0YXR1cwkAAZEAAAACBQAAAANjZmcFAAAADWlkeFBvb2xTdGF0dXMEAAAACmxwRW1pc3Npb24ICQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQUAAAAJbHBBc3NldElkCQABLAAAAAIJAAEsAAAAAgIAAAAGQXNzZXQgCQACWAAAAAEFAAAACWxwQXNzZXRJZAIAAAAOIGRvZXNuJ3QgZXhpc3QAAAAIcXVhbnRpdHkEAAAADmluQW1Bc3NldElkU3RyCQACWAAAAAEJAQAAAAt2YWx1ZU9yRWxzZQAAAAIFAAAAC2luQW1Bc3NldElkCQACWQAAAAECAAAABVdBVkVTBAAAAA5pblByQXNzZXRJZFN0cgkAAlgAAAABCQEAAAALdmFsdWVPckVsc2UAAAACBQAAAAtpblByQXNzZXRJZAkAAlkAAAABAgAAAAVXQVZFUwMDCQEAAAACIT0AAAACBQAAAAxhbUFzc2V0SWRTdHIFAAAADmluQW1Bc3NldElkU3RyBgkBAAAAAiE9AAAAAgUAAAAMcHJBc3NldElkU3RyBQAAAA5pblByQXNzZXRJZFN0cgkAAAIAAAABAgAAACJJbnZhbGlkIGFtdCBvciBwcmljZSBhc3NldCBwYXNzZWQuBAAAAAlhbUJhbGFuY2UDBQAAAAppc0V2YWx1YXRlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAADGFtQXNzZXRJZFN0cgkAAGUAAAACCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAADGFtQXNzZXRJZFN0cgUAAAAMaW5BbUFzc2V0QW10BAAAAAlwckJhbGFuY2UDBQAAAAppc0V2YWx1YXRlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAADHByQXNzZXRJZFN0cgkAAGUAAAACCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAADHByQXNzZXRJZFN0cgUAAAAMaW5QckFzc2V0QW10BAAAAA9pbkFtQXNzZXRBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAADGluQW1Bc3NldEFtdAUAAAALYW10QXNzZXREY20EAAAAD2luUHJBc3NldEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAMaW5QckFzc2V0QW10BQAAAA1wcmljZUFzc2V0RGNtBAAAAAx1c2VyUHJpY2VYMTgJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAA9pblByQXNzZXRBbXRYMTgFAAAAD2luQW1Bc3NldEFtdFgxOAQAAAAMYW1CYWxhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAAAlhbUJhbGFuY2UFAAAAC2FtdEFzc2V0RGNtBAAAAAxwckJhbGFuY2VYMTgJAQAAAAV0b1gxOAAAAAIFAAAACXByQmFsYW5jZQUAAAANcHJpY2VBc3NldERjbQQAAAADcmVzAwkAAAAAAAACBQAAAApscEVtaXNzaW9uAAAAAAAAAAAABAAAAAtjdXJQcmljZVgxOAUAAAAKemVyb0JpZ0ludAQAAAALc2xpcHBhZ2VYMTgFAAAACnplcm9CaWdJbnQEAAAACGxwQW10WDE4CQAAdgAAAAYJAAE5AAAAAgUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAA9pblByQXNzZXRBbXRYMTgAAAAAAAAAAAAJAAE2AAAAAQAAAAAAAAAABQAAAAAAAAAAAQAAAAAAAAAAAAUAAAAERE9XTgkABRcAAAAFCQEAAAAHZnJvbVgxOAAAAAIFAAAACGxwQW10WDE4BQAAAAZzY2FsZTgJAQAAAAdmcm9tWDE4AAAAAgUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAAthbXRBc3NldERjbQkBAAAAB2Zyb21YMTgAAAACBQAAAA9pblByQXNzZXRBbXRYMTgFAAAADXByaWNlQXNzZXREY20JAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACCQABNwAAAAIFAAAADHByQmFsYW5jZVgxOAUAAAAPaW5QckFzc2V0QW10WDE4CQABNwAAAAIFAAAADGFtQmFsYW5jZVgxOAUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAAtzbGlwcGFnZVgxOAQAAAALY3VyUHJpY2VYMTgJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAAxwckJhbGFuY2VYMTgFAAAADGFtQmFsYW5jZVgxOAQAAAALc2xpcHBhZ2VYMTgJAAE8AAAAAwkBAAAAA2FicwAAAAEJAAE4AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAADHVzZXJQcmljZVgxOAUAAAAHc2NhbGUxOAUAAAALY3VyUHJpY2VYMTgEAAAAFHNsaXBwYWdlVG9sZXJhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAGc2NhbGU4AwMJAQAAAAIhPQAAAAIFAAAAC2N1clByaWNlWDE4BQAAAAp6ZXJvQmlnSW50CQABPwAAAAIFAAAAC3NsaXBwYWdlWDE4BQAAABRzbGlwcGFnZVRvbGVyYW5jZVgxOAcJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPUHJpY2Ugc2xpcHBhZ2UgCQABpgAAAAEFAAAAC3NsaXBwYWdlWDE4AgAAAB4gZXhjZWVkZWQgdGhlIHBhc3NlZCBsaW1pdCBvZiAJAAGmAAAAAQUAAAAUc2xpcHBhZ2VUb2xlcmFuY2VYMTgEAAAADWxwRW1pc3Npb25YMTgJAQAAAAV0b1gxOAAAAAIFAAAACmxwRW1pc3Npb24FAAAABnNjYWxlOAQAAAAKcHJWaWFBbVgxOAkAATwAAAADBQAAAA9pbkFtQXNzZXRBbXRYMTgFAAAAC2N1clByaWNlWDE4BQAAAAdzY2FsZTE4BAAAAAphbVZpYVByWDE4CQABPAAAAAMFAAAAD2luUHJBc3NldEFtdFgxOAUAAAAHc2NhbGUxOAUAAAALY3VyUHJpY2VYMTgEAAAADGV4cGVjdGVkQW10cwMJAAE/AAAAAgUAAAAKcHJWaWFBbVgxOAUAAAAPaW5QckFzc2V0QW10WDE4CQAFFAAAAAIFAAAACmFtVmlhUHJYMTgFAAAAD2luUHJBc3NldEFtdFgxOAkABRQAAAACBQAAAA9pbkFtQXNzZXRBbXRYMTgFAAAACnByVmlhQW1YMTgEAAAAEWV4cEFtdEFzc2V0QW10WDE4CAUAAAAMZXhwZWN0ZWRBbXRzAAAAAl8xBAAAABNleHBQcmljZUFzc2V0QW10WDE4CAUAAAAMZXhwZWN0ZWRBbXRzAAAAAl8yBAAAAAhscEFtdFgxOAkAATwAAAADBQAAAA1scEVtaXNzaW9uWDE4BQAAABNleHBQcmljZUFzc2V0QW10WDE4BQAAAAxwckJhbGFuY2VYMTgJAAUXAAAABQkBAAAAB2Zyb21YMTgAAAACBQAAAAhscEFtdFgxOAUAAAAGc2NhbGU4CQEAAAAHZnJvbVgxOAAAAAIFAAAAEWV4cEFtdEFzc2V0QW10WDE4BQAAAAthbXRBc3NldERjbQkBAAAAB2Zyb21YMTgAAAACBQAAABNleHBQcmljZUFzc2V0QW10WDE4BQAAAA1wcmljZUFzc2V0RGNtBQAAAAtjdXJQcmljZVgxOAUAAAALc2xpcHBhZ2VYMTgEAAAACWNhbGNMcEFtdAgFAAAAA3JlcwAAAAJfMQQAAAAOY2FsY0FtQXNzZXRQbXQIBQAAAANyZXMAAAACXzIEAAAADmNhbGNQckFzc2V0UG10CAUAAAADcmVzAAAAAl8zBAAAAAhjdXJQcmljZQkBAAAAB2Zyb21YMTgAAAACCAUAAAADcmVzAAAAAl80BQAAAAZzY2FsZTgEAAAADHNsaXBwYWdlQ2FsYwkBAAAAB2Zyb21YMTgAAAACCAUAAAADcmVzAAAAAl81BQAAAAZzY2FsZTgDCQAAZwAAAAIAAAAAAAAAAAAFAAAACWNhbGNMcEFtdAkAAAIAAAABAgAAADZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAAAACWVtaXRMcEFtdAMJAQAAAAEhAAAAAQUAAAAGZW1pdExwAAAAAAAAAAAABQAAAAljYWxjTHBBbXQEAAAABmFtRGlmZgkAAGUAAAACBQAAAAxpbkFtQXNzZXRBbXQFAAAADmNhbGNBbUFzc2V0UG10BAAAAAZwckRpZmYJAABlAAAAAgUAAAAMaW5QckFzc2V0QW10BQAAAA5jYWxjUHJBc3NldFBtdAQAAAALY29tbW9uU3RhdGUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAJwbAAAAAAFAAAACGN1clByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAACcGgAAAACBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAhjdXJQcmljZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAADcGF1AAAAAgUAAAALdXNlckFkZHJlc3MFAAAABnR4SWQ1OAkBAAAAEWRhdGFQdXRBY3Rpb25JbmZvAAAACgUAAAAOY2FsY0FtQXNzZXRQbXQFAAAADmNhbGNQckFzc2V0UG10BQAAAAllbWl0THBBbXQFAAAACGN1clByaWNlBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAMc2xpcHBhZ2VDYWxjBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAZhbURpZmYFAAAABnByRGlmZgUAAAADbmlsCQAFHwAAAA0FAAAACWNhbGNMcEFtdAUAAAAJZW1pdExwQW10BQAAAAhjdXJQcmljZQUAAAAJYW1CYWxhbmNlBQAAAAlwckJhbGFuY2UFAAAACmxwRW1pc3Npb24FAAAACWxwQXNzZXRJZAUAAAAKcG9vbFN0YXR1cwUAAAALY29tbW9uU3RhdGUFAAAABmFtRGlmZgUAAAAGcHJEaWZmBQAAAAtpbkFtQXNzZXRJZAUAAAALaW5QckFzc2V0SWQBAAAAG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZAAAAAEAAAAFb3JkZXIEAAAAA2NmZwkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAAphbXRBc3NldElkCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4QW10QXNzZXRJZAQAAAAMcHJpY2VBc3NldElkCQABkQAAAAIFAAAAA2NmZwUAAAAPaWR4UHJpY2VBc3NldElkBAAAAApwb29sU3RhdHVzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAA1pZHhQb29sU3RhdHVzBAAAAAthbXRBc3NldERjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAOaWR4QW10QXNzZXREY20EAAAADXByaWNlQXNzZXREY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAEGlkeFByaWNlQXNzZXREY20EAAAAEmFjY0FtdEFzc2V0QmFsYW5jZQkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAphbXRBc3NldElkBAAAABRhY2NQcmljZUFzc2V0QmFsYW5jZQkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAxwcmljZUFzc2V0SWQEAAAAC2N1clByaWNlWDE4AwkAAAAAAAACCAUAAAAFb3JkZXIAAAAJb3JkZXJUeXBlBQAAAANCdXkJAQAAABBwcml2YXRlQ2FsY1ByaWNlAAAABAUAAAALYW10QXNzZXREY20FAAAADXByaWNlQXNzZXREY20JAABkAAAAAgUAAAASYWNjQW10QXNzZXRCYWxhbmNlCAUAAAAFb3JkZXIAAAAGYW1vdW50BQAAABRhY2NQcmljZUFzc2V0QmFsYW5jZQkBAAAAEHByaXZhdGVDYWxjUHJpY2UAAAAEBQAAAAthbXRBc3NldERjbQUAAAANcHJpY2VBc3NldERjbQkAAGUAAAACBQAAABJhY2NBbXRBc3NldEJhbGFuY2UIBQAAAAVvcmRlcgAAAAZhbW91bnQFAAAAFGFjY1ByaWNlQXNzZXRCYWxhbmNlBAAAAAhjdXJQcmljZQkBAAAAB2Zyb21YMTgAAAACBQAAAAtjdXJQcmljZVgxOAUAAAAGc2NhbGU4AwMDCQEAAAAQaXNHbG9iYWxTaHV0ZG93bgAAAAAGCQAAAAAAAAIFAAAACnBvb2xTdGF0dXMFAAAAE1Bvb2xNYXRjaGVyRGlzYWJsZWQGCQAAAAAAAAIFAAAACnBvb2xTdGF0dXMFAAAADFBvb2xTaHV0ZG93bgkAAAIAAAABAgAAABxFeGNoYW5nZSBvcGVyYXRpb25zIGRpc2FibGVkBAAAAA1vcmRlckFtdEFzc2V0CAgFAAAABW9yZGVyAAAACWFzc2V0UGFpcgAAAAthbW91bnRBc3NldAQAAAAQb3JkZXJBbXRBc3NldFN0cgMJAAAAAAAAAgUAAAANb3JkZXJBbXRBc3NldAUAAAAEdW5pdAIAAAAFV0FWRVMJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQUAAAANb3JkZXJBbXRBc3NldAQAAAAPb3JkZXJQcmljZUFzc2V0CAgFAAAABW9yZGVyAAAACWFzc2V0UGFpcgAAAApwcmljZUFzc2V0BAAAABJvcmRlclByaWNlQXNzZXRTdHIDCQAAAAAAAAIFAAAAD29yZGVyUHJpY2VBc3NldAUAAAAEdW5pdAIAAAAFV0FWRVMJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQUAAAAPb3JkZXJQcmljZUFzc2V0AwMJAQAAAAIhPQAAAAIFAAAAEG9yZGVyQW10QXNzZXRTdHIFAAAACmFtdEFzc2V0SWQGCQEAAAACIT0AAAACBQAAABJvcmRlclByaWNlQXNzZXRTdHIFAAAADHByaWNlQXNzZXRJZAkAAAIAAAABAgAAABNXcm9uZyBvcmRlciBhc3NldHMuBAAAAApvcmRlclByaWNlCAUAAAAFb3JkZXIAAAAFcHJpY2UEAAAACHByaWNlRGNtCQAAawAAAAMFAAAABnNjYWxlOAUAAAANcHJpY2VBc3NldERjbQUAAAALYW10QXNzZXREY20EAAAAEGNhc3RlZE9yZGVyUHJpY2UJAQAAAAd0b1NjYWxlAAAAAwUAAAAKb3JkZXJQcmljZQUAAAAGc2NhbGU4BQAAAAhwcmljZURjbQQAAAARaXNPcmRlclByaWNlVmFsaWQDCQAAAAAAAAIIBQAAAAVvcmRlcgAAAAlvcmRlclR5cGUFAAAAA0J1eQkAAGcAAAACBQAAAAhjdXJQcmljZQUAAAAQY2FzdGVkT3JkZXJQcmljZQkAAGcAAAACBQAAABBjYXN0ZWRPcmRlclByaWNlBQAAAAhjdXJQcmljZQYBAAAACWNvbW1vbkdldAAAAAEAAAABaQMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkA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ACFFcnJvci4gSW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcy4EAAAAEHNsaXBwYWdlQ29udHJhY3QJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABCQABkQAAAAIFAAAACmZhY3RvcnlDZmcFAAAAGmlkeEZhY3RvcnlTbGlwcGFnZUNvbnRyYWN0AgAAACtFcnJvci4gSW5jb3JyZWN0IHNsaXBwYWdlIGNvbnRyYWN0IGFkZHJlc3MuAwkAAGYAAAACAAAAAAAAAAAABQAAABFzbGlwcGFnZVRvbGVyYW5jZQkAAAIAAAABAgAAACBJbnZhbGlkIHNsaXBwYWdlVG9sZXJhbmNlIHBhc3NlZAQAAAAGZXN0UHV0CQEAAAAJY29tbW9uUHV0AAAAAwUAAAABaQUAAAARc2xpcHBhZ2VUb2xlcmFuY2UGBAAAAAllbWl0THBBbXQIBQAAAAZlc3RQdXQAAAACXzIEAAAACWxwQXNzZXRJZAgFAAAABmVzdFB1dAAAAAJfNwQAAAAFc3RhdGUIBQAAAAZlc3RQdXQAAAACXzkEAAAABmFtRGlmZggFAAAABmVzdFB1dAAAAANfMTAEAAAABnByRGlmZggFAAAABmVzdFB1dAAAAANfMTEEAAAABGFtSWQIBQAAAAZlc3RQdXQAAAADXzEyBAAAAARwcklkCAUAAAAGZXN0UHV0AAAAA18xMwQAAAAHZW1pdEludgkAA/wAAAAEBQAAAA9mYWN0b3J5Q29udHJhY3QCAAAABGVtaXQJAARMAAAAAgUAAAAJZW1pdExwQW10BQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAHZW1pdEludgUAAAAHZW1pdEludgQAAAANZW1pdEludkxlZ2FjeQQAAAAHJG1hdGNoMAUAAAAHZW1pdEludgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQWRkcmVzcwQAAAAVbGVnYWN5RmFjdG9yeUNvbnRyYWN0BQAAAAckbWF0Y2gwCQAD/AAAAAQFAAAAFWxlZ2FjeUZhY3RvcnlDb250cmFjdAIAAAAEZW1pdAkABEwAAAACBQAAAAllbWl0THBBbXQFAAAAA25pbAUAAAADbmlsBQAAAAR1bml0AwkAAAAAAAACBQAAAA1lbWl0SW52TGVnYWN5BQAA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dFBvb2xDb25maWcAAAAABAAAAApmYWN0b3J5Q2ZnCQEAAAAQZ2V0RmFjdG9yeUNvbmZpZwAAAAAEAAAACWxwQXNzZXRJZAkAAlkAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAQaWR4UG9vbExQQXNzZXRJZAQAAAAPc3Rha2luZ0NvbnRyYWN0CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkAAZEAAAACBQAAAApmYWN0b3J5Q2ZnBQAAABlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0AgAAACFFcnJvci4gSW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcy4EAAAACnVuc3Rha2VJbnYJAAP8AAAABAUAAAAPc3Rha2luZ0NvbnRyYWN0AgAAAAd1bnN0YWtlCQAETAAAAAIJAAJYAAAAAQUAAAAJbHBBc3NldElkCQAETAAAAAIFAAAABmFtb3VudAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAACnVuc3Rha2VJbnYFAAAACnVuc3Rha2VJbnYEAAAAA3JlcwkBAAAAFGVzdGltYXRlR2V0T3BlcmF0aW9uAAAABAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQACWAAAAAEFAAAACWxwQXNzZXRJZAUAAAAGYW1vdW50CAUAAAABaQAAAAZjYWxsZXIEAAAACnBvb2xTdGF0dXMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQgFAAAAA3JlcwAAAAJfOQQAAAAFc3RhdGUIBQAAAANyZXMAAAADXzEwBAAAAA9jaGVja1Bvb2xTdGF0dXMDAwkBAAAAEGlzR2xvYmFsU2h1dGRvd24AAAAABgkAAAAAAAACBQAAAApwb29sU3RhdHVzBQAAAAxQb29sU2h1dGRvd24JAAACAAAAAQkAASwAAAACAgAAACxHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkAAaQAAAABBQAAAApwb29sU3RhdHVzBgMJAAAAAAAAAgUAAAAPY2hlY2tQb29sU3RhdHVzBQAAAA9jaGVja1Bvb2xTdGF0dXMEAAAAFGJ1cm5MUEFzc2V0T25GYWN0b3J5CQAD/AAAAAQFAAAAD2ZhY3RvcnlDb250cmFj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Y2ZnBQAAAA5pZHhBbXRBc3NldERjbQQAAAANcHJpY2VBc3NldERjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAQaWR4UHJpY2VBc3NldERjbQQAAAANcG9vbExQQmFsYW5jZQgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+wAAAABBQAAAAlscEFzc2V0SWQJAAEsAAAAAgkAASwAAAACAgAAAAZBc3NldCAJAAJYAAAAAQUAAAAJbHBBc3NldElkAgAAAA4gZG9lc24ndCBleGlzdAAAAAhxdWFudGl0eQQAAAASYWNjQW10QXNzZXRCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAACmFtdEFzc2V0SWQEAAAAFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAADHByaWNlQXNzZXRJZAQAAAAKcHJpY2VzTGlzdAMJAAAAAAAAAgUAAAANcG9vbExQQmFsYW5jZQAAAAAAAAAAAAkABEwAAAACBQAAAAp6ZXJvQmlnSW50CQAETAAAAAIFAAAACnplcm9CaWdJbnQJAARMAAAAAgUAAAAKemVyb0JpZ0ludAUAAAADbmlsCQEAAAAKY2FsY1ByaWNlcwAAAAMFAAAAEmFjY0FtdEFzc2V0QmFsYW5jZQUAAAAUYWNjUHJpY2VBc3NldEJhbGFuY2UFAAAADXBvb2xMUEJhbGFuY2UEAAAACGN1clByaWNlAAAAAAAAAAAABAAAAA9scEFtdEFzc2V0U2hhcmUJAQAAAAdmcm9tWDE4AAAAAgkAAZEAAAACBQAAAApwcmljZXNMaXN0AAAAAAAAAAABBQAAAAZzY2FsZTgEAAAAEWxwUHJpY2VBc3NldFNoYXJlCQEAAAAHZnJvbVgxOAAAAAIJAAGRAAAAAgUAAAAKcHJpY2VzTGlzdAAAAAAAAAAAAgUAAAAGc2NhbGU4BAAAAApwb29sV2VpZ2h0CQEAAAAFdmFsdWUAAAABCQAEGgAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAADWtleVBvb2xXZWlnaHQAAAABCQAEJQAAAAEFAAAABHRoaXMJAAUUAAAAAgUAAAADbmlsCQAEuQAAAAIJAARMAAAAAgIAAAAOJWQlZCVkJWQlZCVkJWQJAARMAAAAAgkAAaQAAAABBQAAABJhY2NBbXRBc3NldEJhbGFuY2UJAARMAAAAAgkAAaQAAAABBQAAABRhY2NQcmljZUFzc2V0QmFsYW5jZQkABEwAAAACCQABpAAAAAEFAAAADXBvb2xMUEJhbGFuY2UJAARMAAAAAgkAAaQAAAABBQAAAAhjdXJQcmljZQkABEwAAAACCQABpAAAAAEFAAAAD2xwQW10QXNzZXRTaGFyZQkABEwAAAACCQABpAAAAAEFAAAAEWxwUHJpY2VBc3NldFNoYXJlCQAETAAAAAIJAAGkAAAAAQUAAAAKcG9vbFdlaWdodAUAAAADbmlsBQAAAANTRVAAAAABaQEAAAAgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkAAAABAAAADGluQW1Bc3NldEFtdAQAAAADY2ZnCQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACWxwQXNzZXRJZAkAAlkAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAQaWR4UG9vbExQQXNzZXRJZAQAAAAMYW1Bc3NldElkU3RyCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4QW10QXNzZXRJZAQAAAAJYW1Bc3NldElkCQACWQAAAAEFAAAADGFtQXNzZXRJZFN0cgQAAAAMcHJBc3NldElkU3RyCQABkQAAAAIFAAAAA2NmZwUAAAAPaWR4UHJpY2VBc3NldElkBAAAAAlwckFzc2V0SWQJAAJZAAAAAQUAAAAMcHJBc3NldElkU3RyBAAAAAthbXRBc3NldERjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAOaWR4QW10QXNzZXREY20EAAAADXByaWNlQXNzZXREY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAEGlkeFByaWNlQXNzZXREY20EAAAACnBvb2xTdGF0dXMJAAGRAAAAAgUAAAADY2ZnBQAAAA1pZHhQb29sU3RhdHVzBAAAAA1wb29sTFBCYWxhbmNlCAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAD7AAAAAEFAAAACWxwQXNzZXRJZAkAASwAAAACCQABLAAAAAICAAAABkFzc2V0IAkAAlgAAAABBQAAAAlscEFzc2V0SWQCAAAADiBkb2Vzbid0IGV4aXN0AAAACHF1YW50aXR5BAAAABJhY2NBbXRBc3NldEJhbGFuY2UJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAMYW1Bc3NldElkU3RyBAAAABRhY2NQcmljZUFzc2V0QmFsYW5jZQkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAxwckFzc2V0SWRTdHIEAAAADmFtdEFzc2V0QW10WDE4CQEAAAAFdG9YMTgAAAACBQAAABJhY2NBbXRBc3NldEJhbGFuY2UFAAAAC2FtdEFzc2V0RGNtBAAAABBwcmljZUFzc2V0QW10WDE4CQEAAAAFdG9YMTgAAAACBQAAABRhY2NQcmljZUFzc2V0QmFsYW5jZQUAAAANcHJpY2VBc3NldERjbQQAAAALY3VyUHJpY2VYMTgDCQAAAAAAAAIFAAAADXBvb2xMUEJhbGFuY2UAAAAAAAAAAAAFAAAACnplcm9CaWdJbnQJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAABBwcmljZUFzc2V0QW10WDE4BQAAAA5hbXRBc3NldEFtdFgxOAQAAAAPaW5BbUFzc2V0QW10WDE4CQEAAAAFdG9YMTgAAAACBQAAAAxpbkFtQXNzZXRBbXQFAAAAC2FtdEFzc2V0RGNtBAAAAA9pblByQXNzZXRBbXRYMTgJAAE8AAAAAwUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAAtjdXJQcmljZVgxOAUAAAAHc2NhbGUxOAQAAAAMaW5QckFzc2V0QW10CQEAAAAHZnJvbVgxOAAAAAIFAAAAD2luUHJBc3NldEFtdFgxOAUAAAANcHJpY2VBc3NldERjbQQAAAAGZXN0UHV0CQEAAAAUZXN0aW1hdGVQdXRPcGVyYXRpb24AAAAJAgAAAAAAAAAAAAAHoSAFAAAADGluQW1Bc3NldEFtdAUAAAAJYW1Bc3NldElkBQAAAAxpblByQXNzZXRBbXQFAAAACXByQXNzZXRJZAIAAAAABgcEAAAACWNhbGNMcEFtdAgFAAAABmVzdFB1dAAAAAJfMQQAAAAMY3VyUHJpY2VDYWxjCAUAAAAGZXN0UHV0AAAAAl8zBAAAAAlhbUJhbGFuY2UIBQAAAAZlc3RQdXQAAAACXzQEAAAACXByQmFsYW5jZQgFAAAABmVzdFB1dAAAAAJfNQQAAAAKbHBFbWlzc2lvbggFAAAABmVzdFB1dAAAAAJfNgkABRQAAAACBQAAAANuaWwJAAS5AAAAAgkABEwAAAACAgAAABAlZCVkJWQlZCVkJWQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAAJY2FsY0xwQW10CQAETAAAAAIJAAGkAAAAAQkBAAAAB2Zyb21YMTgAAAACBQAAAAtjdXJQcmljZVgxOAUAAAAGc2NhbGU4CQAETAAAAAIJAAGkAAAAAQUAAAAJYW1CYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAAJcHJCYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAAKbHBFbWlzc2lvbgkABEwAAAACBQAAAApwb29sU3RhdHVzCQAETAAAAAIJAAGkAAAAAQUAAAAMaW5BbUFzc2V0QW10CQAETAAAAAIJAAGkAAAAAQUAAAAMaW5QckFzc2V0QW10BQAAAANuaWwFAAAAA1NFUAAAAAFpAQAAAB9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAAAAAQAAAAxpblByQXNzZXRBbXQEAAAAA2NmZwkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAAlscEFzc2V0SWQJAAJZAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAEGlkeFBvb2xMUEFzc2V0SWQEAAAADGFtQXNzZXRJZFN0cgkAAZEAAAACBQAAAANjZmcFAAAADWlkeEFtdEFzc2V0SWQEAAAACWFtQXNzZXRJZAkAAlkAAAABBQAAAAxhbUFzc2V0SWRTdHIEAAAADHByQXNzZXRJZFN0cgkAAZEAAAACBQAAAANjZmcFAAAAD2lkeFByaWNlQXNzZXRJZAQAAAAJcHJBc3NldElkCQACWQAAAAEFAAAADHByQXNzZXRJZFN0cgQAAAALYW10QXNzZXREY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAADmlkeEFtdEFzc2V0RGNtBAAAAA1wcmljZUFzc2V0RGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAABBpZHhQcmljZUFzc2V0RGNtBAAAAApwb29sU3RhdHVzCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4UG9vbFN0YXR1cwQAAAANcG9vbExQQmFsYW5jZQgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+wAAAABBQAAAAlscEFzc2V0SWQJAAEsAAAAAgkAASwAAAACAgAAAAZBc3NldCAJAAJYAAAAAQUAAAAJbHBBc3NldElkAgAAAA4gZG9lc24ndCBleGlzdAAAAAhxdWFudGl0eQQAAAAMYW1CYWxhbmNlUmF3CQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAADGFtQXNzZXRJZFN0cgQAAAAMcHJCYWxhbmNlUmF3CQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAADHByQXNzZXRJZFN0cgQAAAAPYW1CYWxhbmNlUmF3WDE4CQEAAAAFdG9YMTgAAAACBQAAAAxhbUJhbGFuY2VSYXcFAAAAC2FtdEFzc2V0RGNtBAAAAA9wckJhbGFuY2VSYXdYMTgJAQAAAAV0b1gxOAAAAAIFAAAADHByQmFsYW5jZVJhdwUAAAANcHJpY2VBc3NldERjbQQAAAALY3VyUHJpY2VYMTgDCQAAAAAAAAIFAAAADXBvb2xMUEJhbGFuY2UAAAAAAAAAAAAFAAAACnplcm9CaWdJbnQJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAA9wckJhbGFuY2VSYXdYMTgFAAAAD2FtQmFsYW5jZVJhd1gxOAQAAAAPaW5QckFzc2V0QW10WDE4CQEAAAAFdG9YMTgAAAACBQAAAAxpblByQXNzZXRBbXQFAAAADXByaWNlQXNzZXREY20EAAAAD2luQW1Bc3NldEFtdFgxOAkAATwAAAADBQAAAA9pblByQXNzZXRBbXRYMTgFAAAAB3NjYWxlMTgFAAAAC2N1clByaWNlWDE4BAAAAAxpbkFtQXNzZXRBbXQJAQAAAAdmcm9tWDE4AAAAAgUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAAthbXRBc3NldERjbQQAAAAGZXN0UHV0CQEAAAAUZXN0aW1hdGVQdXRPcGVyYXRpb24AAAAJAgAAAAAAAAAAAAAHoSAFAAAADGluQW1Bc3NldEFtdAUAAAAJYW1Bc3NldElkBQAAAAxpblByQXNzZXRBbXQFAAAACXByQXNzZXRJZAIAAAAABgcEAAAACWNhbGNMcEFtdAgFAAAABmVzdFB1dAAAAAJfMQQAAAAMY3VyUHJpY2VDYWxjCAUAAAAGZXN0UHV0AAAAAl8zBAAAAAlhbUJhbGFuY2UIBQAAAAZlc3RQdXQAAAACXzQEAAAACXByQmFsYW5jZQgFAAAABmVzdFB1dAAAAAJfNQQAAAAKbHBFbWlzc2lvbggFAAAABmVzdFB1dAAAAAJfNgkABRQAAAACBQAAAANuaWwJAAS5AAAAAgkABEwAAAACAgAAABAlZCVkJWQlZCVkJWQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAAJY2FsY0xwQW10CQAETAAAAAIJAAGkAAAAAQkBAAAAB2Zyb21YMTgAAAACBQAAAAtjdXJQcmljZVgxOAUAAAAGc2NhbGU4CQAETAAAAAIJAAGkAAAAAQUAAAAJYW1CYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAAJcHJCYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAAKbHBFbWlzc2lvbgkABEwAAAACBQAAAApwb29sU3RhdHVzCQAETAAAAAIJAAGkAAAAAQUAAAAMaW5BbUFzc2V0QW10CQAETAAAAAIJAAGkAAAAAQUAAAAMaW5QckFzc2V0QW10BQAAAANuaWwFAAAAA1NFUAAAAAFpAQAAABNldmFsdWF0ZUdldFJFQURPTkxZAAAAAgAAABBwYXltZW50THBBc3NldElkAAAADHBheW1lbnRMcEFtdAQAAAADcmVzCQEAAAAUZXN0aW1hdGVHZXRPcGVyYXRpb24AAAAEAgAAAAAFAAAAEHBheW1lbnRMcEFzc2V0SWQFAAAADHBheW1lbnRMcEFtdAUAAAAEdGhpcwQAAAAIb3V0QW1BbXQIBQAAAANyZXMAAAACXzEEAAAACG91dFByQW10CAUAAAADcmVzAAAAAl8yBAAAAAlhbUJhbGFuY2UIBQAAAANyZXMAAAACXzUEAAAACXByQmFsYW5jZQgFAAAAA3JlcwAAAAJfNgQAAAAKbHBFbWlzc2lvbggFAAAAA3JlcwAAAAJfNwQAAAAIY3VyUHJpY2UIBQAAAANyZXMAAAACXzgEAAAACnBvb2xTdGF0dXMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQgFAAAAA3JlcwAAAAJfOQkABRQAAAACBQAAAANuaWwJAAS5AAAAAgkABEwAAAACAgAAAA4lZCVkJWQlZCVkJWQlZAkABEwAAAACCQABpAAAAAEFAAAACG91dEFtQW10CQAETAAAAAIJAAGkAAAAAQUAAAAIb3V0UHJBbXQJAARMAAAAAgkAAaQAAAABBQAAAAlhbUJhbGFuY2UJAARMAAAAAgkAAaQAAAABBQAAAAlwckJhbGFuY2UJAARMAAAAAgkAAaQAAAABBQAAAApscEVtaXNzaW9uCQAETAAAAAIJAAGmAAAAAQUAAAAIY3VyUHJpY2UJAARMAAAAAgkAAaQAAAABBQAAAApwb29sU3RhdHVzBQAAAANuaWwFAAAAA1NFUAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAByRtYXRjaDAFAAAAAnR4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAVPcmRlcgQAAAAFb3JkZXIFAAAAByRtYXRjaDAEAAAACm1hdGNoZXJQdWIJAQAAABNnZXRNYXRjaGVyUHViT3JGYWlsAAAAAAQAAAAKb3JkZXJWYWxpZAkBAAAAG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZAAAAAEFAAAABW9yZGVyBAAAAAtzZW5kZXJWYWxpZAkAAfQAAAADCAUAAAAFb3JkZXIAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAVvcmRlcgAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAVvcmRlcgAAAA9zZW5kZXJQdWJsaWNLZXkEAAAADG1hdGNoZXJWYWxpZAkAAfQAAAADCAUAAAAFb3JkZXIAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAVvcmRlcgAAAAZwcm9vZnMAAAAAAAAAAAEFAAAACm1hdGNoZXJQdWIDAwMFAAAACm9yZGVyVmFsaWQFAAAAC3NlbmRlclZhbGlkBwUAAAAMbWF0Y2hlclZhbGlkBwYJAQAAAA90aHJvd09yZGVyRXJyb3IAAAADBQAAAApvcmRlclZhbGlkBQAAAAtzZW5kZXJWYWxpZAUAAAAMbWF0Y2hlclZhbGlkBAAAAA90YXJnZXRQdWJsaWNLZXkEAAAAByRtYXRjaDEJAQAAABZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMQIAAAAKQnl0ZVZlY3RvcgQAAAACcGsFAAAAByRtYXRjaDEFAAAAAnBrAwkAAAEAAAACBQAAAAckbWF0Y2gxAgAAAARVbml0CAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5CQAAAgAAAAECAAAAC01hdGNoIGVycm9yCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAPdGFyZ2V0UHVibGljS2V5c/DYWQ==", "chainId": 87, "height": 3024226, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: H3aX71hNth9iSwASGzaSmhAX3NWicGhSqnqASFi8mcA6 Next: BZqcZ94RUbg8qPuFBJc13PjtTmkyuz5pU2SQTwPyyJDa Diff:
OldNewDifferences
1313
1414 let f = "__"
1515
16-let g = ""
16+let g = 1
1717
18-let h = 1
18+let h = 2
1919
20-let i = 2
20+let i = 3
2121
22-let j = 3
22+let j = 4
2323
24-let k = 4
24+let k = 1
2525
26-let l = 1
26+let l = 2
2727
28-let m = 2
28+let m = 3
2929
30-let n = 3
30+let n = 4
3131
32-let o = 4
32+let o = 5
3333
34-let p = 5
34+let p = 6
3535
36-let q = 6
36+let q = 7
3737
38-let r = 7
38+let r = 8
3939
40-let s = 8
40+let s = 9
4141
42-let t = 9
42+let t = 10
4343
44-let u = 10
44+let u = 1
4545
46-let v = 1
46+let v = 2
4747
48-let w = 2
48+let w = 3
4949
50-let x = 3
50+let x = 1
5151
52-let y = 1
52+let y = 7
5353
54-let z = 7
55-
56-func A (B,C) = fraction(toBigInt(B), d, toBigInt(C))
54+func z (A,B) = fraction(toBigInt(A), d, toBigInt(B))
5755
5856
59-func D (E,F) = toInt(fraction(E, toBigInt(F), d))
57+func C (D,E) = toInt(fraction(D, toBigInt(E), d))
6058
6159
62-func G (H,I,J) = fraction(H, I, J)
60+func F (G,H,I) = fraction(G, H, I)
6361
6462
65-func K (E) = if ((e > E))
66- then -(E)
67- else E
63+func J (D) = if ((e > D))
64+ then -(D)
65+ else D
6866
6967
70-func L () = "%s__factoryContract"
68+func K () = "%s__factoryContract"
7169
7270
73-func M () = "%s__managerPublicKey"
71+func L () = "%s__managerPublicKey"
72+
73+
74+func M () = "%s__pendingManagerPublicKey"
7475
7576
7677 func N () = "%s%s__price__last"
9192 func W () = "%s__priceAsset"
9293
9394
94-func X (P,Q) = makeString(["%s%s%d%d__K_history", toString(P), toString(Q)], f)
95+func X () = "%s__factoryConfig"
9596
9697
97-func Y () = "%s__factoryConfig"
98+func Y () = "%s%s__matcher__publicKey"
9899
99100
100-func Z () = "%s%s__matcher__publicKey"
101+func Z (aa) = (("%s%s%s__" + aa) + "__mappings__poolContract2LpAsset")
101102
102103
103-func aa (ab) = (("%s%s%s__" + ab) + "__mappings__poolContract2LpAsset")
104+func ab (ac,ad) = (((("%d%d%s__" + ac) + "__") + ad) + "__config")
104105
105106
106-func ac (ad,ae) = (((("%d%d%s__" + ad) + "__") + ae) + "__config")
107+func ae (af) = ("%s%s%s__mappings__baseAsset2internalId__" + af)
107108
108109
109-func af (ag) = ("%s%s%s__mappings__baseAsset2internalId__" + ag)
110+func ag () = "%s__shutdown"
110111
111112
112-func ah () = "%s__shutdown"
113+func ah (ai) = ("%s%s__poolWeight__" + ai)
113114
114115
115-func ai (aj) = ("%s%s__poolWeight__" + aj)
116+func aj (ak,al,am) = throw(((((("order validation failed: orderValid=" + toString(ak)) + " senderValid=") + toString(al)) + " matcherValid=") + toString(am)))
116117
117118
118-func ak (al,am,an) = throw(((((("order validation failed: orderValid=" + toString(al)) + " senderValid=") + toString(am)) + " matcherValid=") + toString(an)))
119+func an (ao,ap) = valueOrErrorMessage(getString(ao, ap), makeString(["mandatory ", toString(ao), ".", ap, " is not defined"], ""))
119120
120121
121-func ao (ap,aq) = valueOrErrorMessage(getString(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
122+func aq (ao,ap) = valueOrErrorMessage(getInteger(ao, ap), makeString(["mandatory ", toString(ao), ".", ap, " is not defined"], ""))
122123
123124
124-func ar (ap,aq) = valueOrErrorMessage(getInteger(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
125+let ar = addressFromStringValue(an(this, K()))
126+
127+func as () = valueOrElse(getBoolean(ar, ag()), false)
125128
126129
127-let as = addressFromStringValue(ao(this, L()))
128-
129-func at () = valueOrElse(getBoolean(as, ah()), false)
130+func at () = fromBase58String(an(ar, Y()))
130131
131132
132-func au () = fromBase58String(ao(as, Z()))
133-
134-
135-func av () = {
136- let aw = ao(this, V())
137- let ax = ao(this, W())
138- let ae = ar(as, af(ax))
139- let ad = ar(as, af(aw))
140- split(ao(as, ac(toString(ad), toString(ae))), f)
133+func au () = {
134+ let av = an(this, V())
135+ let aw = an(this, W())
136+ let ad = aq(ar, ae(aw))
137+ let ac = aq(ar, ae(av))
138+ split(an(ar, ab(toString(ac), toString(ad))), f)
141139 }
142140
143141
144-func ay () = split(ao(as, Y()), f)
142+func ax () = split(an(ar, X()), f)
145143
146144
147-func az (aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aA), toString(aB), toString(aC), toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ)], f)
145+func ay (az,aA,aB,aC,aD,aE,aF,aG,aH,aI) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(az), toString(aA), toString(aB), toString(aC), toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI)], f)
148146
149147
150-func aK (aL,aM,aN,aD,aG,aH) = makeString(["%d%d%d%d%d%d", toString(aL), toString(aM), toString(aN), toString(aD), toString(aG), toString(aH)], f)
148+func aJ (aK,aL,aM,aC,aF,aG) = makeString(["%d%d%d%d%d%d", toString(aK), toString(aL), toString(aM), toString(aC), toString(aF), toString(aG)], f)
151149
152150
153-func aO (aP) = if ((aP == "WAVES"))
151+func aN (aO) = if ((aO == "WAVES"))
154152 then wavesBalance(this).available
155- else assetBalance(this, fromBase58String(aP))
153+ else assetBalance(this, fromBase58String(aO))
156154
157155
158-func aQ (aR,aS) = fraction(aR, d, aS)
156+func aP (aQ,aR) = fraction(aQ, d, aR)
159157
160158
161-func aT (aU,aV,aW,aX) = {
162- let aY = A(aW, aU)
163- let aZ = A(aX, aV)
164- aQ(aZ, aY)
159+func aS (aT,aU,aV,aW) = {
160+ let aX = z(aV, aT)
161+ let aY = z(aW, aU)
162+ aP(aY, aX)
165163 }
166164
167165
168-func ba (aW,aX,bb) = {
169- let bc = av()
170- let bd = parseIntValue(bc[q])
171- let be = parseIntValue(bc[r])
172- let bf = aT(bd, be, aW, aX)
173- let aS = A(aW, bd)
174- let aR = A(aX, be)
175- let bg = A(bb, b)
176- let bh = aQ(aS, bg)
177- let bi = aQ(aR, bg)
178-[bf, bh, bi]
166+func aZ (aV,aW,ba) = {
167+ let bb = au()
168+ let bc = parseIntValue(bb[p])
169+ let bd = parseIntValue(bb[q])
170+ let be = aS(bc, bd, aV, aW)
171+ let aR = z(aV, bc)
172+ let aQ = z(aW, bd)
173+ let bf = z(ba, b)
174+ let bg = aP(aR, bf)
175+ let bh = aP(aQ, bf)
176+[be, bg, bh]
179177 }
180178
181179
182-func bj (aW,aX,bb) = {
183- let bk = ba(aW, aX, bb)
184-[D(bk[0], b), D(bk[1], b), D(bk[2], b)]
180+func bi (aV,aW,ba) = {
181+ let bj = aZ(aV, aW, ba)
182+[C(bj[0], b), C(bj[1], b), C(bj[2], b)]
185183 }
186184
187185
188-func bl (bm,bn,bo,S) = {
189- let bc = av()
190- let bp = bc[n]
191- let bq = bc[o]
192- let br = bc[p]
193- let aU = parseIntValue(bc[q])
194- let aV = parseIntValue(bc[r])
195- let bs = bc[m]
196- let bt = valueOrErrorMessage(assetInfo(fromBase58String(bp)), (("Asset " + bp) + " doesn't exist")).quantity
197- if ((bp != bn))
186+func bk (bl,bm,bn,S) = {
187+ let bb = au()
188+ let bo = bb[m]
189+ let bp = bb[n]
190+ let bq = bb[o]
191+ let aT = parseIntValue(bb[p])
192+ let aU = parseIntValue(bb[q])
193+ let br = bb[l]
194+ let bs = valueOrErrorMessage(assetInfo(fromBase58String(bo)), (("Asset " + bo) + " doesn't exist")).quantity
195+ if ((bo != bm))
198196 then throw("Invalid asset passed.")
199197 else {
200- let bu = aO(bq)
201- let bv = A(bu, aU)
202- let bw = aO(br)
203- let bx = A(bw, aV)
204- let by = aQ(bx, bv)
205- let bz = D(by, b)
206- let bA = A(bo, b)
207- let bB = A(bt, b)
208- let bC = fraction(bv, bA, bB)
209- let bD = fraction(bx, bA, bB)
210- let bE = D(bC, aU)
211- let bF = D(bD, aV)
212- let bG = if ((bm == ""))
198+ let bt = aN(bp)
199+ let bu = z(bt, aT)
200+ let bv = aN(bq)
201+ let bw = z(bv, aU)
202+ let bx = aP(bw, bu)
203+ let by = C(bx, b)
204+ let bz = z(bn, b)
205+ let bA = z(bs, b)
206+ let bB = fraction(bu, bz, bA)
207+ let bC = fraction(bw, bz, bA)
208+ let bD = C(bB, aT)
209+ let bE = C(bC, aU)
210+ let bF = if ((bl == ""))
213211 then nil
214- else [ScriptTransfer(S, bE, if ((bq == "WAVES"))
212+ else [ScriptTransfer(S, bD, if ((bp == "WAVES"))
215213 then unit
216- else fromBase58String(bq)), ScriptTransfer(S, bF, if ((br == "WAVES"))
214+ else fromBase58String(bp)), ScriptTransfer(S, bE, if ((bq == "WAVES"))
217215 then unit
218- else fromBase58String(br)), StringEntry(U(toString(S), bm), aK(bE, bF, bo, bz, height, lastBlock.timestamp)), IntegerEntry(N(), bz), IntegerEntry(O(height, lastBlock.timestamp), bz)]
219- $Tuple10(bE, bF, bq, br, bu, bw, bt, by, bs, bG)
216+ else fromBase58String(bq)), StringEntry(U(toString(S), bl), aJ(bD, bE, bn, by, height, lastBlock.timestamp)), IntegerEntry(N(), by), IntegerEntry(O(height, lastBlock.timestamp), by)]
217+ $Tuple10(bD, bE, bp, bq, bt, bv, bs, bx, br, bF)
220218 }
221219 }
222220
223221
224-func bH (bm,bI,bJ,bK,bL,bM,S,bN,bO) = {
225- let bc = av()
226- let bp = fromBase58String(bc[n])
227- let bP = bc[o]
228- let bQ = bc[p]
229- let bR = bc[s]
230- let bS = bc[t]
231- let bd = parseIntValue(bc[q])
232- let be = parseIntValue(bc[r])
233- let bs = bc[m]
234- let bt = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
235- let bT = toBase58String(valueOrElse(bK, fromBase58String("WAVES")))
236- let bU = toBase58String(valueOrElse(bM, fromBase58String("WAVES")))
237- if (if ((bP != bT))
222+func bG (bl,bH,bI,bJ,bK,bL,S,bM,bN) = {
223+ let bb = au()
224+ let bo = fromBase58String(bb[m])
225+ let bO = bb[n]
226+ let bP = bb[o]
227+ let bQ = bb[r]
228+ let bR = bb[s]
229+ let bc = parseIntValue(bb[p])
230+ let bd = parseIntValue(bb[q])
231+ let br = bb[l]
232+ let bs = valueOrErrorMessage(assetInfo(bo), (("Asset " + toBase58String(bo)) + " doesn't exist")).quantity
233+ let bS = toBase58String(valueOrElse(bJ, fromBase58String("WAVES")))
234+ let bT = toBase58String(valueOrElse(bL, fromBase58String("WAVES")))
235+ if (if ((bO != bS))
238236 then true
239- else (bQ != bU))
237+ else (bP != bT))
240238 then throw("Invalid amt or price asset passed.")
241239 else {
242- let bu = if (bN)
243- then aO(bP)
244- else (aO(bP) - bJ)
245- let bw = if (bN)
246- then aO(bQ)
247- else (aO(bQ) - bL)
248- let bV = A(bJ, bd)
249- let bW = A(bL, be)
250- let bX = aQ(bW, bV)
251- let bv = A(bu, bd)
252- let bx = A(bw, be)
253- let bY = if ((bt == 0))
240+ let bt = if (bM)
241+ then aN(bO)
242+ else (aN(bO) - bI)
243+ let bv = if (bM)
244+ then aN(bP)
245+ else (aN(bP) - bK)
246+ let bU = z(bI, bc)
247+ let bV = z(bK, bd)
248+ let bW = aP(bV, bU)
249+ let bu = z(bt, bc)
250+ let bw = z(bv, bd)
251+ let bX = if ((bs == 0))
254252 then {
255- let by = e
256- let bZ = e
257- let bg = pow((bV * bW), 0, toBigInt(5), 1, 0, DOWN)
258- $Tuple5(D(bg, b), D(bV, bd), D(bW, be), aQ((bx + bW), (bv + bV)), bZ)
253+ let bx = e
254+ let bY = e
255+ let bf = pow((bU * bV), 0, toBigInt(5), 1, 0, DOWN)
256+ $Tuple5(C(bf, b), C(bU, bc), C(bV, bd), aP((bw + bV), (bu + bU)), bY)
259257 }
260258 else {
261- let by = aQ(bx, bv)
262- let bZ = fraction(K((by - bX)), d, by)
263- let ca = A(bI, b)
264- if (if ((by != e))
265- then (bZ > ca)
259+ let bx = aP(bw, bu)
260+ let bY = fraction(J((bx - bW)), d, bx)
261+ let bZ = z(bH, b)
262+ if (if ((bx != e))
263+ then (bY > bZ)
266264 else false)
267- then throw(((("Price slippage " + toString(bZ)) + " exceeded the passed limit of ") + toString(ca)))
265+ then throw(((("Price slippage " + toString(bY)) + " exceeded the passed limit of ") + toString(bZ)))
268266 else {
269- let bB = A(bt, b)
270- let cb = fraction(bV, by, d)
271- let cc = fraction(bW, d, by)
272- let cd = if ((cb > bW))
273- then $Tuple2(cc, bW)
274- else $Tuple2(bV, cb)
275- let ce = cd._1
276- let cf = cd._2
277- let bg = fraction(bB, cf, bx)
278- $Tuple5(D(bg, b), D(ce, bd), D(cf, be), by, bZ)
267+ let bA = z(bs, b)
268+ let ca = fraction(bU, bx, d)
269+ let cb = fraction(bV, d, bx)
270+ let cc = if ((ca > bV))
271+ then $Tuple2(cb, bV)
272+ else $Tuple2(bU, ca)
273+ let cd = cc._1
274+ let ce = cc._2
275+ let bf = fraction(bA, ce, bw)
276+ $Tuple5(C(bf, b), C(cd, bc), C(ce, bd), bx, bY)
279277 }
280278 }
281- let cg = bY._1
282- let ch = bY._2
283- let ci = bY._3
284- let bz = D(bY._4, b)
285- let cj = D(bY._5, b)
286- if ((0 >= cg))
279+ let cf = bX._1
280+ let cg = bX._2
281+ let ch = bX._3
282+ let by = C(bX._4, b)
283+ let ci = C(bX._5, b)
284+ if ((0 >= cf))
287285 then throw("Invalid calculations. LP calculated is less than zero.")
288286 else {
289- let ck = if (!(bO))
287+ let cj = if (!(bN))
290288 then 0
291- else cg
292- let cl = (bJ - ch)
293- let cm = (bL - ci)
294- let cn = [IntegerEntry(N(), bz), IntegerEntry(O(height, lastBlock.timestamp), bz), StringEntry(R(S, bm), az(ch, ci, ck, bz, bI, cj, height, lastBlock.timestamp, cl, cm))]
295- $Tuple13(cg, ck, bz, bu, bw, bt, bp, bs, cn, cl, cm, bK, bM)
289+ else cf
290+ let ck = (bI - cg)
291+ let cl = (bK - ch)
292+ let cm = [IntegerEntry(N(), by), IntegerEntry(O(height, lastBlock.timestamp), by), StringEntry(R(S, bl), ay(cg, ch, cj, by, bH, ci, height, lastBlock.timestamp, ck, cl))]
293+ $Tuple13(cf, cj, by, bt, bv, bs, bo, br, cm, ck, cl, bJ, bL)
296294 }
297295 }
298296 }
299297
300298
301-func co (cp) = {
302- let bc = av()
303- let cq = bc[o]
304- let cr = bc[p]
305- let bs = parseIntValue(bc[m])
306- let bd = parseIntValue(bc[q])
307- let be = parseIntValue(bc[r])
308- let cs = aO(cq)
309- let ct = aO(cr)
310- let by = if ((cp.orderType == Buy))
311- then aT(bd, be, (cs + cp.amount), ct)
312- else aT(bd, be, (cs - cp.amount), ct)
313- let bz = D(by, b)
314- if (if (if (at())
299+func cn (co) = {
300+ let bb = au()
301+ let cp = bb[n]
302+ let cq = bb[o]
303+ let br = parseIntValue(bb[l])
304+ let bc = parseIntValue(bb[p])
305+ let bd = parseIntValue(bb[q])
306+ let cr = aN(cp)
307+ let cs = aN(cq)
308+ let bx = if ((co.orderType == Buy))
309+ then aS(bc, bd, (cr + co.amount), cs)
310+ else aS(bc, bd, (cr - co.amount), cs)
311+ let by = C(bx, b)
312+ if (if (if (as())
315313 then true
316- else (bs == j))
314+ else (br == i))
317315 then true
318- else (bs == k))
316+ else (br == j))
319317 then throw("Exchange operations disabled")
320318 else {
321- let cu = cp.assetPair.amountAsset
322- let cv = if ((cu == unit))
319+ let ct = co.assetPair.amountAsset
320+ let cu = if ((ct == unit))
323321 then "WAVES"
324- else toBase58String(value(cu))
325- let cw = cp.assetPair.priceAsset
326- let cx = if ((cw == unit))
322+ else toBase58String(value(ct))
323+ let cv = co.assetPair.priceAsset
324+ let cw = if ((cv == unit))
327325 then "WAVES"
328- else toBase58String(value(cw))
329- if (if ((cv != cq))
326+ else toBase58String(value(cv))
327+ if (if ((cu != cp))
330328 then true
331- else (cx != cr))
329+ else (cw != cq))
332330 then throw("Wrong order assets.")
333331 else {
334- let cy = cp.price
335- let cz = fraction(b, be, bd)
336- let cA = G(cy, b, cz)
337- let cB = if ((cp.orderType == Buy))
338- then (bz >= cA)
339- else (cA >= bz)
332+ let cx = co.price
333+ let cy = fraction(b, bd, bc)
334+ let cz = F(cx, b, cy)
335+ let cA = if ((co.orderType == Buy))
336+ then (by >= cz)
337+ else (cz >= by)
340338 true
341339 }
342340 }
343341 }
344342
345343
346-func cC (cD) = if ((size(cD.payments) != 1))
344+func cB (cC) = if ((size(cC.payments) != 1))
347345 then throw("exactly 1 payment is expected")
348346 else {
349- let cE = value(cD.payments[0])
350- let bn = value(cE.assetId)
351- let cF = cE.amount
352- let bY = bl(toBase58String(cD.transactionId), toBase58String(bn), cF, cD.caller)
353- let bE = bY._1
354- let bF = bY._2
355- let bs = parseIntValue(bY._9)
356- let bG = bY._10
357- if (if (at())
347+ let cD = value(cC.payments[0])
348+ let bm = value(cD.assetId)
349+ let cE = cD.amount
350+ let bX = bk(toBase58String(cC.transactionId), toBase58String(bm), cE, cC.caller)
351+ let bD = bX._1
352+ let bE = bX._2
353+ let br = parseIntValue(bX._9)
354+ let bF = bX._10
355+ if (if (as())
358356 then true
359- else (bs == k))
360- then throw(("Get operation is blocked by admin. Status = " + toString(bs)))
361- else $Tuple5(bE, bF, cF, bn, bG)
357+ else (br == j))
358+ then throw(("Get operation is blocked by admin. Status = " + toString(br)))
359+ else $Tuple5(bD, bE, cE, bm, bF)
362360 }
363361
364362
365-func cG (cD,bI,bO) = if ((size(cD.payments) != 2))
363+func cF (cC,bH,bN) = if ((size(cC.payments) != 2))
366364 then throw("exactly 2 payments are expected")
367365 else {
368- let cH = value(cD.payments[0])
369- let cI = value(cD.payments[1])
370- let cJ = bH(toBase58String(cD.transactionId), bI, cH.amount, cH.assetId, cI.amount, cI.assetId, toString(cD.caller), false, bO)
371- let bs = parseIntValue(cJ._8)
372- if (if (if (at())
366+ let cG = value(cC.payments[0])
367+ let cH = value(cC.payments[1])
368+ let cI = bG(toBase58String(cC.transactionId), bH, cG.amount, cG.assetId, cH.amount, cH.assetId, toString(cC.caller), false, bN)
369+ let br = parseIntValue(cI._8)
370+ if (if (if (as())
373371 then true
374- else (bs == i))
372+ else (br == h))
375373 then true
376- else (bs == k))
377- then throw(("Put operation is blocked by admin. Status = " + toString(bs)))
378- else cJ
374+ else (br == j))
375+ then throw(("Put operation is blocked by admin. Status = " + toString(br)))
376+ else cI
379377 }
380378
381379
382-@Callable(cD)
383-func constructor (as,cK) = if ((cD.caller != this))
384- then throw("permissions denied")
385- else [StringEntry(L(), as), StringEntry(M(), cK)]
380+func cJ () = {
381+ let cK = getString(L())
382+ if ($isInstanceOf(cK, "String"))
383+ then {
384+ let cL = cK
385+ fromBase58String(cL)
386+ }
387+ else if ($isInstanceOf(cK, "Unit"))
388+ then unit
389+ else throw("Match error")
390+ }
391+
392+
393+func cM () = {
394+ let cK = getString(M())
395+ if ($isInstanceOf(cK, "String"))
396+ then {
397+ let cL = cK
398+ fromBase58String(cL)
399+ }
400+ else if ($isInstanceOf(cK, "Unit"))
401+ then unit
402+ else throw("Match error")
403+ }
404+
405+
406+func cN (cC) = {
407+ let cO = throw("Permission denied")
408+ let cK = cJ()
409+ if ($isInstanceOf(cK, "ByteVector"))
410+ then {
411+ let cP = cK
412+ if ((cC.callerPublicKey == cP))
413+ then true
414+ else cO
415+ }
416+ else if ($isInstanceOf(cK, "Unit"))
417+ then if ((cC.caller == this))
418+ then true
419+ else cO
420+ else throw("Match error")
421+ }
422+
423+
424+@Callable(cC)
425+func constructor (ar) = {
426+ let cQ = cN(cC)
427+ if ((cQ == cQ))
428+ then [StringEntry(K(), ar)]
429+ else throw("Strict value is not equal to itself.")
430+ }
386431
387432
388433
389-@Callable(cD)
390-func put (bI,cL) = {
391- let cM = ay()
392- let cN = valueOrErrorMessage(addressFromString(cM[y]), "Error. Incorrect staking address.")
393- let cO = valueOrErrorMessage(addressFromString(cM[z]), "Error. Incorrect slippage contract address.")
394- if ((0 > bI))
434+@Callable(cC)
435+func setManager (cR) = {
436+ let cQ = cN(cC)
437+ if ((cQ == cQ))
438+ then {
439+ let cS = fromBase58String(cR)
440+ if ((cS == cS))
441+ then [StringEntry(M(), cR)]
442+ else throw("Strict value is not equal to itself.")
443+ }
444+ else throw("Strict value is not equal to itself.")
445+ }
446+
447+
448+
449+@Callable(cC)
450+func confirmManager () = {
451+ let cT = cM()
452+ let cU = if (isDefined(cT))
453+ then true
454+ else throw("No pending manager")
455+ if ((cU == cU))
456+ then {
457+ let cV = if ((cC.callerPublicKey == value(cT)))
458+ then true
459+ else throw("You are not pending manager")
460+ if ((cV == cV))
461+ then [StringEntry(L(), toBase58String(value(cT))), DeleteEntry(M())]
462+ else throw("Strict value is not equal to itself.")
463+ }
464+ else throw("Strict value is not equal to itself.")
465+ }
466+
467+
468+
469+@Callable(cC)
470+func put (bH,cW) = {
471+ let cX = ax()
472+ let cY = valueOrErrorMessage(addressFromString(cX[x]), "Error. Incorrect staking address.")
473+ let cZ = valueOrErrorMessage(addressFromString(cX[y]), "Error. Incorrect slippage contract address.")
474+ if ((0 > bH))
395475 then throw("Invalid slippageTolerance passed")
396476 else {
397- let cJ = cG(cD, bI, true)
398- let ck = cJ._2
399- let bp = cJ._7
400- let bG = cJ._9
401- let cl = cJ._10
402- let cm = cJ._11
403- let cP = cJ._12
404- let cQ = cJ._13
405- let cR = invoke(as, "emit", [ck], nil)
406- if ((cR == cR))
477+ let cI = cF(cC, bH, true)
478+ let cj = cI._2
479+ let bo = cI._7
480+ let bF = cI._9
481+ let ck = cI._10
482+ let cl = cI._11
483+ let da = cI._12
484+ let db = cI._13
485+ let dc = invoke(ar, "emit", [cj], nil)
486+ if ((dc == dc))
407487 then {
408- let cS = if ((cl > 0))
409- then invoke(cO, "put", nil, [AttachedPayment(cP, cl)])
410- else nil
411- if ((cS == cS))
488+ let dd = {
489+ let cK = dc
490+ if ($isInstanceOf(cK, "Address"))
491+ then {
492+ let de = cK
493+ invoke(de, "emit", [cj], nil)
494+ }
495+ else unit
496+ }
497+ if ((dd == dd))
412498 then {
413- let cT = if ((cm > 0))
414- then invoke(cO, "put", nil, [AttachedPayment(cQ, cm)])
499+ let df = if ((ck > 0))
500+ then invoke(cZ, "put", nil, [AttachedPayment(da, ck)])
415501 else nil
416- if ((cT == cT))
502+ if ((df == df))
417503 then {
418- let cU = if (cL)
504+ let dg = if ((cl > 0))
505+ then invoke(cZ, "put", nil, [AttachedPayment(db, cl)])
506+ else nil
507+ if ((dg == dg))
419508 then {
420- let cV = invoke(cN, "stake", nil, [AttachedPayment(bp, ck)])
421- if ((cV == cV))
422- then nil
423- else throw("Strict value is not equal to itself.")
509+ let dh = if (cW)
510+ then {
511+ let di = invoke(cY, "stake", nil, [AttachedPayment(bo, cj)])
512+ if ((di == di))
513+ then nil
514+ else throw("Strict value is not equal to itself.")
515+ }
516+ else [ScriptTransfer(cC.caller, cj, bo)]
517+ (bF ++ dh)
424518 }
425- else [ScriptTransfer(cD.caller, ck, bp)]
426- (bG ++ cU)
519+ else throw("Strict value is not equal to itself.")
427520 }
428521 else throw("Strict value is not equal to itself.")
429522 }
435528
436529
437530
438-@Callable(cD)
439-func putForFree (cW) = if ((0 > cW))
531+@Callable(cC)
532+func putForFree (dj) = if ((0 > dj))
440533 then throw("Invalid value passed")
441534 else {
442- let cJ = cG(cD, cW, false)
443- cJ._9
535+ let cI = cF(cC, dj, false)
536+ cI._9
444537 }
445538
446539
447540
448-@Callable(cD)
541+@Callable(cC)
449542 func get () = {
450- let bY = cC(cD)
451- let cX = bY._1
452- let bF = bY._2
453- let cF = bY._3
454- let bn = bY._4
455- let bG = bY._5
456- let cY = invoke(as, "burn", [cF], [AttachedPayment(bn, cF)])
457- if ((cY == cY))
458- then bG
543+ let bX = cB(cC)
544+ let dk = bX._1
545+ let bE = bX._2
546+ let cE = bX._3
547+ let bm = bX._4
548+ let bF = bX._5
549+ let dl = invoke(ar, "burn", [cE], [AttachedPayment(bm, cE)])
550+ if ((dl == dl))
551+ then bF
459552 else throw("Strict value is not equal to itself.")
460553 }
461554
462555
463556
464-@Callable(cD)
465-func getNoLess (cZ,da) = {
466- let bY = cC(cD)
467- let bE = bY._1
468- let bF = bY._2
469- let cF = bY._3
470- let bn = bY._4
471- let bG = bY._5
472- if ((cZ > bE))
473- then throw(((("noLessThenAmtAsset failed: " + toString(bE)) + " < ") + toString(cZ)))
474- else if ((da > bF))
475- then throw(((("noLessThenPriceAsset failed: " + toString(bF)) + " < ") + toString(da)))
557+@Callable(cC)
558+func getNoLess (dm,dn) = {
559+ let bX = cB(cC)
560+ let bD = bX._1
561+ let bE = bX._2
562+ let cE = bX._3
563+ let bm = bX._4
564+ let bF = bX._5
565+ if ((dm > bD))
566+ then throw(((("noLessThenAmtAsset failed: " + toString(bD)) + " < ") + toString(dm)))
567+ else if ((dn > bE))
568+ then throw(((("noLessThenPriceAsset failed: " + toString(bE)) + " < ") + toString(dn)))
476569 else {
477- let cY = invoke(as, "burn", [cF], [AttachedPayment(bn, cF)])
478- if ((cY == cY))
479- then bG
570+ let dl = invoke(ar, "burn", [cE], [AttachedPayment(bm, cE)])
571+ if ((dl == dl))
572+ then bF
480573 else throw("Strict value is not equal to itself.")
481574 }
482575 }
483576
484577
485578
486-@Callable(cD)
487-func unstakeAndGet (db) = {
488- let dc = if ((size(cD.payments) != 0))
579+@Callable(cC)
580+func unstakeAndGet (do) = {
581+ let dp = if ((size(cC.payments) != 0))
489582 then throw("No payments are expected")
490583 else true
491- if ((dc == dc))
584+ if ((dp == dp))
492585 then {
493- let bc = av()
494- let cM = ay()
495- let bp = fromBase58String(bc[n])
496- let cN = valueOrErrorMessage(addressFromString(cM[y]), "Error. Incorrect staking address.")
497- let dd = invoke(cN, "unstake", [toBase58String(bp), db], nil)
498- if ((dd == dd))
586+ let bb = au()
587+ let cX = ax()
588+ let bo = fromBase58String(bb[m])
589+ let cY = valueOrErrorMessage(addressFromString(cX[x]), "Error. Incorrect staking address.")
590+ let dq = invoke(cY, "unstake", [toBase58String(bo), do], nil)
591+ if ((dq == dq))
499592 then {
500- let bY = bl(toBase58String(cD.transactionId), toBase58String(bp), db, cD.caller)
501- let bs = parseIntValue(bY._9)
502- let bG = bY._10
503- let de = if (if (at())
593+ let bX = bk(toBase58String(cC.transactionId), toBase58String(bo), do, cC.caller)
594+ let br = parseIntValue(bX._9)
595+ let bF = bX._10
596+ let dr = if (if (as())
504597 then true
505- else (bs == k))
506- then throw(("Get operation is blocked by admin. Status = " + toString(bs)))
598+ else (br == j))
599+ then throw(("Get operation is blocked by admin. Status = " + toString(br)))
507600 else true
508- if ((de == de))
601+ if ((dr == dr))
509602 then {
510- let cY = invoke(as, "burn", [db], [AttachedPayment(bp, db)])
511- if ((cY == cY))
512- then bG
603+ let dl = invoke(ar, "burn", [do], [AttachedPayment(bo, do)])
604+ if ((dl == dl))
605+ then bF
513606 else throw("Strict value is not equal to itself.")
514607 }
515608 else throw("Strict value is not equal to itself.")
521614
522615
523616
524-@Callable(cD)
525-func activate (df,dg) = if ((toString(cD.caller) != toString(as)))
617+@Callable(cC)
618+func activate (ds,dt) = if ((toString(cC.caller) != toString(ar)))
526619 then throw("permissions denied")
527- else $Tuple2([StringEntry(V(), df), StringEntry(W(), dg)], "success")
620+ else $Tuple2([StringEntry(V(), ds), StringEntry(W(), dt)], "success")
528621
529622
530623
531-@Callable(cD)
532-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, av())
624+@Callable(cC)
625+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, au())
533626
534627
535628
536-@Callable(cD)
537-func getAccBalanceWrapperREADONLY (aP) = $Tuple2(nil, aO(aP))
629+@Callable(cC)
630+func getAccBalanceWrapperREADONLY (aO) = $Tuple2(nil, aN(aO))
538631
539632
540633
541-@Callable(cD)
542-func calcPricesWrapperREADONLY (aW,aX,bb) = {
543- let bk = ba(aW, aX, bb)
544- $Tuple2(nil, [toString(bk[0]), toString(bk[1]), toString(bk[2])])
634+@Callable(cC)
635+func calcPricesWrapperREADONLY (aV,aW,ba) = {
636+ let bj = aZ(aV, aW, ba)
637+ $Tuple2(nil, [toString(bj[0]), toString(bj[1]), toString(bj[2])])
545638 }
546639
547640
548641
549-@Callable(cD)
550-func toX18WrapperREADONLY (B,C) = $Tuple2(nil, toString(A(B, C)))
642+@Callable(cC)
643+func toX18WrapperREADONLY (A,B) = $Tuple2(nil, toString(z(A, B)))
551644
552645
553646
554-@Callable(cD)
555-func fromX18WrapperREADONLY (E,F) = $Tuple2(nil, D(parseBigIntValue(E), F))
647+@Callable(cC)
648+func fromX18WrapperREADONLY (D,E) = $Tuple2(nil, C(parseBigIntValue(D), E))
556649
557650
558651
559-@Callable(cD)
560-func calcPriceBigIntWrapperREADONLY (aR,aS) = $Tuple2(nil, toString(aQ(parseBigIntValue(aR), parseBigIntValue(aS))))
652+@Callable(cC)
653+func calcPriceBigIntWrapperREADONLY (aQ,aR) = $Tuple2(nil, toString(aP(parseBigIntValue(aQ), parseBigIntValue(aR))))
561654
562655
563656
564-@Callable(cD)
565-func estimatePutOperationWrapperREADONLY (bm,bI,bJ,bK,bL,bM,S,bN,bO) = $Tuple2(nil, bH(bm, bI, bJ, bK, bL, bM, S, bN, bO))
657+@Callable(cC)
658+func estimatePutOperationWrapperREADONLY (bl,bH,bI,bJ,bK,bL,S,bM,bN) = $Tuple2(nil, bG(bl, bH, bI, bJ, bK, bL, S, bM, bN))
566659
567660
568661
569-@Callable(cD)
570-func estimateGetOperationWrapperREADONLY (bm,bn,bo,S) = {
571- let bY = bl(bm, bn, bo, addressFromStringValue(S))
572- $Tuple2(nil, $Tuple10(bY._1, bY._2, bY._3, bY._4, bY._5, bY._6, bY._7, toString(bY._8), bY._9, bY._10))
662+@Callable(cC)
663+func estimateGetOperationWrapperREADONLY (bl,bm,bn,S) = {
664+ let bX = bk(bl, bm, bn, addressFromStringValue(S))
665+ $Tuple2(nil, $Tuple10(bX._1, bX._2, bX._3, bX._4, bX._5, bX._6, bX._7, toString(bX._8), bX._9, bX._10))
573666 }
574667
575668
576669
577-@Callable(cD)
670+@Callable(cC)
578671 func statsREADONLY () = {
579- let bc = av()
580- let bp = fromBase58String(bc[n])
581- let cq = bc[o]
582- let cr = bc[p]
583- let bR = bc[s]
584- let bS = bc[t]
585- let bd = parseIntValue(bc[q])
586- let be = parseIntValue(bc[r])
587- let dh = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
588- let cs = aO(cq)
589- let ct = aO(cr)
590- let di = if ((dh == 0))
672+ let bb = au()
673+ let bo = fromBase58String(bb[m])
674+ let cp = bb[n]
675+ let cq = bb[o]
676+ let bQ = bb[r]
677+ let bR = bb[s]
678+ let bc = parseIntValue(bb[p])
679+ let bd = parseIntValue(bb[q])
680+ let du = valueOrErrorMessage(assetInfo(bo), (("Asset " + toBase58String(bo)) + " doesn't exist")).quantity
681+ let cr = aN(cp)
682+ let cs = aN(cq)
683+ let dv = if ((du == 0))
591684 then [e, e, e]
592- else ba(cs, ct, dh)
593- let bz = 0
594- let dj = D(di[1], b)
595- let dk = D(di[2], b)
596- let dl = value(getInteger(as, ai(toString(this))))
597- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cs), toString(ct), toString(dh), toString(bz), toString(dj), toString(dk), toString(dl)], f))
685+ else aZ(cr, cs, du)
686+ let by = 0
687+ let dw = C(dv[1], b)
688+ let dx = C(dv[2], b)
689+ let dy = value(getInteger(ar, ah(toString(this))))
690+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cr), toString(cs), toString(du), toString(by), toString(dw), toString(dx), toString(dy)], f))
598691 }
599692
600693
601694
602-@Callable(cD)
603-func evaluatePutByAmountAssetREADONLY (bJ) = {
604- let bc = av()
605- let bp = fromBase58String(bc[n])
606- let bP = bc[o]
695+@Callable(cC)
696+func evaluatePutByAmountAssetREADONLY (bI) = {
697+ let bb = au()
698+ let bo = fromBase58String(bb[m])
699+ let bO = bb[n]
700+ let bp = fromBase58String(bO)
701+ let bP = bb[o]
607702 let bq = fromBase58String(bP)
608- let bQ = bc[p]
609- let br = fromBase58String(bQ)
610- let bd = parseIntValue(bc[q])
611- let be = parseIntValue(bc[r])
612- let bs = bc[m]
613- let dh = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
614- let cs = aO(bP)
615- let ct = aO(bQ)
616- let aY = A(cs, bd)
617- let aZ = A(ct, be)
618- let by = if ((dh == 0))
703+ let bc = parseIntValue(bb[p])
704+ let bd = parseIntValue(bb[q])
705+ let br = bb[l]
706+ let du = valueOrErrorMessage(assetInfo(bo), (("Asset " + toBase58String(bo)) + " doesn't exist")).quantity
707+ let cr = aN(bO)
708+ let cs = aN(bP)
709+ let aX = z(cr, bc)
710+ let aY = z(cs, bd)
711+ let bx = if ((du == 0))
619712 then e
620- else aQ(aZ, aY)
621- let bV = A(bJ, bd)
622- let bW = fraction(bV, by, d)
623- let bL = D(bW, be)
624- let cJ = bH("", 500000, bJ, bq, bL, br, "", true, false)
625- let cg = cJ._1
626- let dm = cJ._3
627- let bu = cJ._4
628- let bw = cJ._5
629- let bt = cJ._6
630- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cg), toString(D(by, b)), toString(bu), toString(bw), toString(bt), bs, toString(bJ), toString(bL)], f))
713+ else aP(aY, aX)
714+ let bU = z(bI, bc)
715+ let bV = fraction(bU, bx, d)
716+ let bK = C(bV, bd)
717+ let cI = bG("", 500000, bI, bp, bK, bq, "", true, false)
718+ let cf = cI._1
719+ let dz = cI._3
720+ let bt = cI._4
721+ let bv = cI._5
722+ let bs = cI._6
723+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cf), toString(C(bx, b)), toString(bt), toString(bv), toString(bs), br, toString(bI), toString(bK)], f))
631724 }
632725
633726
634727
635-@Callable(cD)
636-func evaluatePutByPriceAssetREADONLY (bL) = {
637- let bc = av()
638- let bp = fromBase58String(bc[n])
639- let bP = bc[o]
728+@Callable(cC)
729+func evaluatePutByPriceAssetREADONLY (bK) = {
730+ let bb = au()
731+ let bo = fromBase58String(bb[m])
732+ let bO = bb[n]
733+ let bp = fromBase58String(bO)
734+ let bP = bb[o]
640735 let bq = fromBase58String(bP)
641- let bQ = bc[p]
642- let br = fromBase58String(bQ)
643- let bd = parseIntValue(bc[q])
644- let be = parseIntValue(bc[r])
645- let bs = bc[m]
646- let dh = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
647- let dn = aO(bP)
648- let do = aO(bQ)
649- let dp = A(dn, bd)
650- let dq = A(do, be)
651- let by = if ((dh == 0))
736+ let bc = parseIntValue(bb[p])
737+ let bd = parseIntValue(bb[q])
738+ let br = bb[l]
739+ let du = valueOrErrorMessage(assetInfo(bo), (("Asset " + toBase58String(bo)) + " doesn't exist")).quantity
740+ let dA = aN(bO)
741+ let dB = aN(bP)
742+ let dC = z(dA, bc)
743+ let dD = z(dB, bd)
744+ let bx = if ((du == 0))
652745 then e
653- else aQ(dq, dp)
654- let bW = A(bL, be)
655- let bV = fraction(bW, d, by)
656- let bJ = D(bV, bd)
657- let cJ = bH("", 500000, bJ, bq, bL, br, "", true, false)
658- let cg = cJ._1
659- let dm = cJ._3
660- let bu = cJ._4
661- let bw = cJ._5
662- let bt = cJ._6
663- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cg), toString(D(by, b)), toString(bu), toString(bw), toString(bt), bs, toString(bJ), toString(bL)], f))
746+ else aP(dD, dC)
747+ let bV = z(bK, bd)
748+ let bU = fraction(bV, d, bx)
749+ let bI = C(bU, bc)
750+ let cI = bG("", 500000, bI, bp, bK, bq, "", true, false)
751+ let cf = cI._1
752+ let dz = cI._3
753+ let bt = cI._4
754+ let bv = cI._5
755+ let bs = cI._6
756+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cf), toString(C(bx, b)), toString(bt), toString(bv), toString(bs), br, toString(bI), toString(bK)], f))
664757 }
665758
666759
667760
668-@Callable(cD)
669-func evaluateGetREADONLY (dr,ds) = {
670- let bY = bl("", dr, ds, this)
671- let bE = bY._1
672- let bF = bY._2
673- let bu = bY._5
674- let bw = bY._6
675- let bt = bY._7
676- let bz = bY._8
677- let bs = parseIntValue(bY._9)
678- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(bE), toString(bF), toString(bu), toString(bw), toString(bt), toString(bz), toString(bs)], f))
761+@Callable(cC)
762+func evaluateGetREADONLY (dE,dF) = {
763+ let bX = bk("", dE, dF, this)
764+ let bD = bX._1
765+ let bE = bX._2
766+ let bt = bX._5
767+ let bv = bX._6
768+ let bs = bX._7
769+ let by = bX._8
770+ let br = parseIntValue(bX._9)
771+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(bD), toString(bE), toString(bt), toString(bv), toString(bs), toString(by), toString(br)], f))
679772 }
680773
681774
682-@Verifier(dt)
683-func du () = {
684- let dv = dt
685- if ($isInstanceOf(dv, "Order"))
775+@Verifier(dG)
776+func dH () = {
777+ let cK = dG
778+ if ($isInstanceOf(cK, "Order"))
686779 then {
687- let cp = dv
688- let dw = au()
689- let al = co(cp)
690- let am = sigVerify(cp.bodyBytes, cp.proofs[0], cp.senderPublicKey)
691- let an = sigVerify(cp.bodyBytes, cp.proofs[1], dw)
692- if (if (if (al)
780+ let co = cK
781+ let dI = at()
782+ let ak = cn(co)
783+ let al = sigVerify(co.bodyBytes, co.proofs[0], co.senderPublicKey)
784+ let am = sigVerify(co.bodyBytes, co.proofs[1], dI)
785+ if (if (if (ak)
786+ then al
787+ else false)
693788 then am
694789 else false)
695- then an
696- else false)
697790 then true
698- else ak(al, am, an)
791+ else aj(ak, al, am)
699792 }
700793 else {
701- let dx = valueOrElse(getString(this, M()), g)
702- if ((dx == g))
703- then sigVerify(dt.bodyBytes, dt.proofs[0], dt.senderPublicKey)
704- else sigVerify(dt.bodyBytes, dt.proofs[0], fromBase58String(dx))
794+ let dJ = {
795+ let dK = cJ()
796+ if ($isInstanceOf(dK, "ByteVector"))
797+ then {
798+ let cP = dK
799+ cP
800+ }
801+ else if ($isInstanceOf(dK, "Unit"))
802+ then dG.senderPublicKey
803+ else throw("Match error")
804+ }
805+ sigVerify(dG.bodyBytes, dG.proofs[0], dJ)
705806 }
706807 }
707808
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = "__"
1515
16-let g = ""
16+let g = 1
1717
18-let h = 1
18+let h = 2
1919
20-let i = 2
20+let i = 3
2121
22-let j = 3
22+let j = 4
2323
24-let k = 4
24+let k = 1
2525
26-let l = 1
26+let l = 2
2727
28-let m = 2
28+let m = 3
2929
30-let n = 3
30+let n = 4
3131
32-let o = 4
32+let o = 5
3333
34-let p = 5
34+let p = 6
3535
36-let q = 6
36+let q = 7
3737
38-let r = 7
38+let r = 8
3939
40-let s = 8
40+let s = 9
4141
42-let t = 9
42+let t = 10
4343
44-let u = 10
44+let u = 1
4545
46-let v = 1
46+let v = 2
4747
48-let w = 2
48+let w = 3
4949
50-let x = 3
50+let x = 1
5151
52-let y = 1
52+let y = 7
5353
54-let z = 7
55-
56-func A (B,C) = fraction(toBigInt(B), d, toBigInt(C))
54+func z (A,B) = fraction(toBigInt(A), d, toBigInt(B))
5755
5856
59-func D (E,F) = toInt(fraction(E, toBigInt(F), d))
57+func C (D,E) = toInt(fraction(D, toBigInt(E), d))
6058
6159
62-func G (H,I,J) = fraction(H, I, J)
60+func F (G,H,I) = fraction(G, H, I)
6361
6462
65-func K (E) = if ((e > E))
66- then -(E)
67- else E
63+func J (D) = if ((e > D))
64+ then -(D)
65+ else D
6866
6967
70-func L () = "%s__factoryContract"
68+func K () = "%s__factoryContract"
7169
7270
73-func M () = "%s__managerPublicKey"
71+func L () = "%s__managerPublicKey"
72+
73+
74+func M () = "%s__pendingManagerPublicKey"
7475
7576
7677 func N () = "%s%s__price__last"
7778
7879
7980 func O (P,Q) = makeString(["%s%s%d%d__price__history", toString(P), toString(Q)], f)
8081
8182
8283 func R (S,T) = ((("%s%s%s__P__" + S) + "__") + T)
8384
8485
8586 func U (S,T) = ((("%s%s%s__G__" + S) + "__") + T)
8687
8788
8889 func V () = "%s__amountAsset"
8990
9091
9192 func W () = "%s__priceAsset"
9293
9394
94-func X (P,Q) = makeString(["%s%s%d%d__K_history", toString(P), toString(Q)], f)
95+func X () = "%s__factoryConfig"
9596
9697
97-func Y () = "%s__factoryConfig"
98+func Y () = "%s%s__matcher__publicKey"
9899
99100
100-func Z () = "%s%s__matcher__publicKey"
101+func Z (aa) = (("%s%s%s__" + aa) + "__mappings__poolContract2LpAsset")
101102
102103
103-func aa (ab) = (("%s%s%s__" + ab) + "__mappings__poolContract2LpAsset")
104+func ab (ac,ad) = (((("%d%d%s__" + ac) + "__") + ad) + "__config")
104105
105106
106-func ac (ad,ae) = (((("%d%d%s__" + ad) + "__") + ae) + "__config")
107+func ae (af) = ("%s%s%s__mappings__baseAsset2internalId__" + af)
107108
108109
109-func af (ag) = ("%s%s%s__mappings__baseAsset2internalId__" + ag)
110+func ag () = "%s__shutdown"
110111
111112
112-func ah () = "%s__shutdown"
113+func ah (ai) = ("%s%s__poolWeight__" + ai)
113114
114115
115-func ai (aj) = ("%s%s__poolWeight__" + aj)
116+func aj (ak,al,am) = throw(((((("order validation failed: orderValid=" + toString(ak)) + " senderValid=") + toString(al)) + " matcherValid=") + toString(am)))
116117
117118
118-func ak (al,am,an) = throw(((((("order validation failed: orderValid=" + toString(al)) + " senderValid=") + toString(am)) + " matcherValid=") + toString(an)))
119+func an (ao,ap) = valueOrErrorMessage(getString(ao, ap), makeString(["mandatory ", toString(ao), ".", ap, " is not defined"], ""))
119120
120121
121-func ao (ap,aq) = valueOrErrorMessage(getString(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
122+func aq (ao,ap) = valueOrErrorMessage(getInteger(ao, ap), makeString(["mandatory ", toString(ao), ".", ap, " is not defined"], ""))
122123
123124
124-func ar (ap,aq) = valueOrErrorMessage(getInteger(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
125+let ar = addressFromStringValue(an(this, K()))
126+
127+func as () = valueOrElse(getBoolean(ar, ag()), false)
125128
126129
127-let as = addressFromStringValue(ao(this, L()))
128-
129-func at () = valueOrElse(getBoolean(as, ah()), false)
130+func at () = fromBase58String(an(ar, Y()))
130131
131132
132-func au () = fromBase58String(ao(as, Z()))
133-
134-
135-func av () = {
136- let aw = ao(this, V())
137- let ax = ao(this, W())
138- let ae = ar(as, af(ax))
139- let ad = ar(as, af(aw))
140- split(ao(as, ac(toString(ad), toString(ae))), f)
133+func au () = {
134+ let av = an(this, V())
135+ let aw = an(this, W())
136+ let ad = aq(ar, ae(aw))
137+ let ac = aq(ar, ae(av))
138+ split(an(ar, ab(toString(ac), toString(ad))), f)
141139 }
142140
143141
144-func ay () = split(ao(as, Y()), f)
142+func ax () = split(an(ar, X()), f)
145143
146144
147-func az (aA,aB,aC,aD,aE,aF,aG,aH,aI,aJ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aA), toString(aB), toString(aC), toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ)], f)
145+func ay (az,aA,aB,aC,aD,aE,aF,aG,aH,aI) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(az), toString(aA), toString(aB), toString(aC), toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI)], f)
148146
149147
150-func aK (aL,aM,aN,aD,aG,aH) = makeString(["%d%d%d%d%d%d", toString(aL), toString(aM), toString(aN), toString(aD), toString(aG), toString(aH)], f)
148+func aJ (aK,aL,aM,aC,aF,aG) = makeString(["%d%d%d%d%d%d", toString(aK), toString(aL), toString(aM), toString(aC), toString(aF), toString(aG)], f)
151149
152150
153-func aO (aP) = if ((aP == "WAVES"))
151+func aN (aO) = if ((aO == "WAVES"))
154152 then wavesBalance(this).available
155- else assetBalance(this, fromBase58String(aP))
153+ else assetBalance(this, fromBase58String(aO))
156154
157155
158-func aQ (aR,aS) = fraction(aR, d, aS)
156+func aP (aQ,aR) = fraction(aQ, d, aR)
159157
160158
161-func aT (aU,aV,aW,aX) = {
162- let aY = A(aW, aU)
163- let aZ = A(aX, aV)
164- aQ(aZ, aY)
159+func aS (aT,aU,aV,aW) = {
160+ let aX = z(aV, aT)
161+ let aY = z(aW, aU)
162+ aP(aY, aX)
165163 }
166164
167165
168-func ba (aW,aX,bb) = {
169- let bc = av()
170- let bd = parseIntValue(bc[q])
171- let be = parseIntValue(bc[r])
172- let bf = aT(bd, be, aW, aX)
173- let aS = A(aW, bd)
174- let aR = A(aX, be)
175- let bg = A(bb, b)
176- let bh = aQ(aS, bg)
177- let bi = aQ(aR, bg)
178-[bf, bh, bi]
166+func aZ (aV,aW,ba) = {
167+ let bb = au()
168+ let bc = parseIntValue(bb[p])
169+ let bd = parseIntValue(bb[q])
170+ let be = aS(bc, bd, aV, aW)
171+ let aR = z(aV, bc)
172+ let aQ = z(aW, bd)
173+ let bf = z(ba, b)
174+ let bg = aP(aR, bf)
175+ let bh = aP(aQ, bf)
176+[be, bg, bh]
179177 }
180178
181179
182-func bj (aW,aX,bb) = {
183- let bk = ba(aW, aX, bb)
184-[D(bk[0], b), D(bk[1], b), D(bk[2], b)]
180+func bi (aV,aW,ba) = {
181+ let bj = aZ(aV, aW, ba)
182+[C(bj[0], b), C(bj[1], b), C(bj[2], b)]
185183 }
186184
187185
188-func bl (bm,bn,bo,S) = {
189- let bc = av()
190- let bp = bc[n]
191- let bq = bc[o]
192- let br = bc[p]
193- let aU = parseIntValue(bc[q])
194- let aV = parseIntValue(bc[r])
195- let bs = bc[m]
196- let bt = valueOrErrorMessage(assetInfo(fromBase58String(bp)), (("Asset " + bp) + " doesn't exist")).quantity
197- if ((bp != bn))
186+func bk (bl,bm,bn,S) = {
187+ let bb = au()
188+ let bo = bb[m]
189+ let bp = bb[n]
190+ let bq = bb[o]
191+ let aT = parseIntValue(bb[p])
192+ let aU = parseIntValue(bb[q])
193+ let br = bb[l]
194+ let bs = valueOrErrorMessage(assetInfo(fromBase58String(bo)), (("Asset " + bo) + " doesn't exist")).quantity
195+ if ((bo != bm))
198196 then throw("Invalid asset passed.")
199197 else {
200- let bu = aO(bq)
201- let bv = A(bu, aU)
202- let bw = aO(br)
203- let bx = A(bw, aV)
204- let by = aQ(bx, bv)
205- let bz = D(by, b)
206- let bA = A(bo, b)
207- let bB = A(bt, b)
208- let bC = fraction(bv, bA, bB)
209- let bD = fraction(bx, bA, bB)
210- let bE = D(bC, aU)
211- let bF = D(bD, aV)
212- let bG = if ((bm == ""))
198+ let bt = aN(bp)
199+ let bu = z(bt, aT)
200+ let bv = aN(bq)
201+ let bw = z(bv, aU)
202+ let bx = aP(bw, bu)
203+ let by = C(bx, b)
204+ let bz = z(bn, b)
205+ let bA = z(bs, b)
206+ let bB = fraction(bu, bz, bA)
207+ let bC = fraction(bw, bz, bA)
208+ let bD = C(bB, aT)
209+ let bE = C(bC, aU)
210+ let bF = if ((bl == ""))
213211 then nil
214- else [ScriptTransfer(S, bE, if ((bq == "WAVES"))
212+ else [ScriptTransfer(S, bD, if ((bp == "WAVES"))
215213 then unit
216- else fromBase58String(bq)), ScriptTransfer(S, bF, if ((br == "WAVES"))
214+ else fromBase58String(bp)), ScriptTransfer(S, bE, if ((bq == "WAVES"))
217215 then unit
218- else fromBase58String(br)), StringEntry(U(toString(S), bm), aK(bE, bF, bo, bz, height, lastBlock.timestamp)), IntegerEntry(N(), bz), IntegerEntry(O(height, lastBlock.timestamp), bz)]
219- $Tuple10(bE, bF, bq, br, bu, bw, bt, by, bs, bG)
216+ else fromBase58String(bq)), StringEntry(U(toString(S), bl), aJ(bD, bE, bn, by, height, lastBlock.timestamp)), IntegerEntry(N(), by), IntegerEntry(O(height, lastBlock.timestamp), by)]
217+ $Tuple10(bD, bE, bp, bq, bt, bv, bs, bx, br, bF)
220218 }
221219 }
222220
223221
224-func bH (bm,bI,bJ,bK,bL,bM,S,bN,bO) = {
225- let bc = av()
226- let bp = fromBase58String(bc[n])
227- let bP = bc[o]
228- let bQ = bc[p]
229- let bR = bc[s]
230- let bS = bc[t]
231- let bd = parseIntValue(bc[q])
232- let be = parseIntValue(bc[r])
233- let bs = bc[m]
234- let bt = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
235- let bT = toBase58String(valueOrElse(bK, fromBase58String("WAVES")))
236- let bU = toBase58String(valueOrElse(bM, fromBase58String("WAVES")))
237- if (if ((bP != bT))
222+func bG (bl,bH,bI,bJ,bK,bL,S,bM,bN) = {
223+ let bb = au()
224+ let bo = fromBase58String(bb[m])
225+ let bO = bb[n]
226+ let bP = bb[o]
227+ let bQ = bb[r]
228+ let bR = bb[s]
229+ let bc = parseIntValue(bb[p])
230+ let bd = parseIntValue(bb[q])
231+ let br = bb[l]
232+ let bs = valueOrErrorMessage(assetInfo(bo), (("Asset " + toBase58String(bo)) + " doesn't exist")).quantity
233+ let bS = toBase58String(valueOrElse(bJ, fromBase58String("WAVES")))
234+ let bT = toBase58String(valueOrElse(bL, fromBase58String("WAVES")))
235+ if (if ((bO != bS))
238236 then true
239- else (bQ != bU))
237+ else (bP != bT))
240238 then throw("Invalid amt or price asset passed.")
241239 else {
242- let bu = if (bN)
243- then aO(bP)
244- else (aO(bP) - bJ)
245- let bw = if (bN)
246- then aO(bQ)
247- else (aO(bQ) - bL)
248- let bV = A(bJ, bd)
249- let bW = A(bL, be)
250- let bX = aQ(bW, bV)
251- let bv = A(bu, bd)
252- let bx = A(bw, be)
253- let bY = if ((bt == 0))
240+ let bt = if (bM)
241+ then aN(bO)
242+ else (aN(bO) - bI)
243+ let bv = if (bM)
244+ then aN(bP)
245+ else (aN(bP) - bK)
246+ let bU = z(bI, bc)
247+ let bV = z(bK, bd)
248+ let bW = aP(bV, bU)
249+ let bu = z(bt, bc)
250+ let bw = z(bv, bd)
251+ let bX = if ((bs == 0))
254252 then {
255- let by = e
256- let bZ = e
257- let bg = pow((bV * bW), 0, toBigInt(5), 1, 0, DOWN)
258- $Tuple5(D(bg, b), D(bV, bd), D(bW, be), aQ((bx + bW), (bv + bV)), bZ)
253+ let bx = e
254+ let bY = e
255+ let bf = pow((bU * bV), 0, toBigInt(5), 1, 0, DOWN)
256+ $Tuple5(C(bf, b), C(bU, bc), C(bV, bd), aP((bw + bV), (bu + bU)), bY)
259257 }
260258 else {
261- let by = aQ(bx, bv)
262- let bZ = fraction(K((by - bX)), d, by)
263- let ca = A(bI, b)
264- if (if ((by != e))
265- then (bZ > ca)
259+ let bx = aP(bw, bu)
260+ let bY = fraction(J((bx - bW)), d, bx)
261+ let bZ = z(bH, b)
262+ if (if ((bx != e))
263+ then (bY > bZ)
266264 else false)
267- then throw(((("Price slippage " + toString(bZ)) + " exceeded the passed limit of ") + toString(ca)))
265+ then throw(((("Price slippage " + toString(bY)) + " exceeded the passed limit of ") + toString(bZ)))
268266 else {
269- let bB = A(bt, b)
270- let cb = fraction(bV, by, d)
271- let cc = fraction(bW, d, by)
272- let cd = if ((cb > bW))
273- then $Tuple2(cc, bW)
274- else $Tuple2(bV, cb)
275- let ce = cd._1
276- let cf = cd._2
277- let bg = fraction(bB, cf, bx)
278- $Tuple5(D(bg, b), D(ce, bd), D(cf, be), by, bZ)
267+ let bA = z(bs, b)
268+ let ca = fraction(bU, bx, d)
269+ let cb = fraction(bV, d, bx)
270+ let cc = if ((ca > bV))
271+ then $Tuple2(cb, bV)
272+ else $Tuple2(bU, ca)
273+ let cd = cc._1
274+ let ce = cc._2
275+ let bf = fraction(bA, ce, bw)
276+ $Tuple5(C(bf, b), C(cd, bc), C(ce, bd), bx, bY)
279277 }
280278 }
281- let cg = bY._1
282- let ch = bY._2
283- let ci = bY._3
284- let bz = D(bY._4, b)
285- let cj = D(bY._5, b)
286- if ((0 >= cg))
279+ let cf = bX._1
280+ let cg = bX._2
281+ let ch = bX._3
282+ let by = C(bX._4, b)
283+ let ci = C(bX._5, b)
284+ if ((0 >= cf))
287285 then throw("Invalid calculations. LP calculated is less than zero.")
288286 else {
289- let ck = if (!(bO))
287+ let cj = if (!(bN))
290288 then 0
291- else cg
292- let cl = (bJ - ch)
293- let cm = (bL - ci)
294- let cn = [IntegerEntry(N(), bz), IntegerEntry(O(height, lastBlock.timestamp), bz), StringEntry(R(S, bm), az(ch, ci, ck, bz, bI, cj, height, lastBlock.timestamp, cl, cm))]
295- $Tuple13(cg, ck, bz, bu, bw, bt, bp, bs, cn, cl, cm, bK, bM)
289+ else cf
290+ let ck = (bI - cg)
291+ let cl = (bK - ch)
292+ let cm = [IntegerEntry(N(), by), IntegerEntry(O(height, lastBlock.timestamp), by), StringEntry(R(S, bl), ay(cg, ch, cj, by, bH, ci, height, lastBlock.timestamp, ck, cl))]
293+ $Tuple13(cf, cj, by, bt, bv, bs, bo, br, cm, ck, cl, bJ, bL)
296294 }
297295 }
298296 }
299297
300298
301-func co (cp) = {
302- let bc = av()
303- let cq = bc[o]
304- let cr = bc[p]
305- let bs = parseIntValue(bc[m])
306- let bd = parseIntValue(bc[q])
307- let be = parseIntValue(bc[r])
308- let cs = aO(cq)
309- let ct = aO(cr)
310- let by = if ((cp.orderType == Buy))
311- then aT(bd, be, (cs + cp.amount), ct)
312- else aT(bd, be, (cs - cp.amount), ct)
313- let bz = D(by, b)
314- if (if (if (at())
299+func cn (co) = {
300+ let bb = au()
301+ let cp = bb[n]
302+ let cq = bb[o]
303+ let br = parseIntValue(bb[l])
304+ let bc = parseIntValue(bb[p])
305+ let bd = parseIntValue(bb[q])
306+ let cr = aN(cp)
307+ let cs = aN(cq)
308+ let bx = if ((co.orderType == Buy))
309+ then aS(bc, bd, (cr + co.amount), cs)
310+ else aS(bc, bd, (cr - co.amount), cs)
311+ let by = C(bx, b)
312+ if (if (if (as())
315313 then true
316- else (bs == j))
314+ else (br == i))
317315 then true
318- else (bs == k))
316+ else (br == j))
319317 then throw("Exchange operations disabled")
320318 else {
321- let cu = cp.assetPair.amountAsset
322- let cv = if ((cu == unit))
319+ let ct = co.assetPair.amountAsset
320+ let cu = if ((ct == unit))
323321 then "WAVES"
324- else toBase58String(value(cu))
325- let cw = cp.assetPair.priceAsset
326- let cx = if ((cw == unit))
322+ else toBase58String(value(ct))
323+ let cv = co.assetPair.priceAsset
324+ let cw = if ((cv == unit))
327325 then "WAVES"
328- else toBase58String(value(cw))
329- if (if ((cv != cq))
326+ else toBase58String(value(cv))
327+ if (if ((cu != cp))
330328 then true
331- else (cx != cr))
329+ else (cw != cq))
332330 then throw("Wrong order assets.")
333331 else {
334- let cy = cp.price
335- let cz = fraction(b, be, bd)
336- let cA = G(cy, b, cz)
337- let cB = if ((cp.orderType == Buy))
338- then (bz >= cA)
339- else (cA >= bz)
332+ let cx = co.price
333+ let cy = fraction(b, bd, bc)
334+ let cz = F(cx, b, cy)
335+ let cA = if ((co.orderType == Buy))
336+ then (by >= cz)
337+ else (cz >= by)
340338 true
341339 }
342340 }
343341 }
344342
345343
346-func cC (cD) = if ((size(cD.payments) != 1))
344+func cB (cC) = if ((size(cC.payments) != 1))
347345 then throw("exactly 1 payment is expected")
348346 else {
349- let cE = value(cD.payments[0])
350- let bn = value(cE.assetId)
351- let cF = cE.amount
352- let bY = bl(toBase58String(cD.transactionId), toBase58String(bn), cF, cD.caller)
353- let bE = bY._1
354- let bF = bY._2
355- let bs = parseIntValue(bY._9)
356- let bG = bY._10
357- if (if (at())
347+ let cD = value(cC.payments[0])
348+ let bm = value(cD.assetId)
349+ let cE = cD.amount
350+ let bX = bk(toBase58String(cC.transactionId), toBase58String(bm), cE, cC.caller)
351+ let bD = bX._1
352+ let bE = bX._2
353+ let br = parseIntValue(bX._9)
354+ let bF = bX._10
355+ if (if (as())
358356 then true
359- else (bs == k))
360- then throw(("Get operation is blocked by admin. Status = " + toString(bs)))
361- else $Tuple5(bE, bF, cF, bn, bG)
357+ else (br == j))
358+ then throw(("Get operation is blocked by admin. Status = " + toString(br)))
359+ else $Tuple5(bD, bE, cE, bm, bF)
362360 }
363361
364362
365-func cG (cD,bI,bO) = if ((size(cD.payments) != 2))
363+func cF (cC,bH,bN) = if ((size(cC.payments) != 2))
366364 then throw("exactly 2 payments are expected")
367365 else {
368- let cH = value(cD.payments[0])
369- let cI = value(cD.payments[1])
370- let cJ = bH(toBase58String(cD.transactionId), bI, cH.amount, cH.assetId, cI.amount, cI.assetId, toString(cD.caller), false, bO)
371- let bs = parseIntValue(cJ._8)
372- if (if (if (at())
366+ let cG = value(cC.payments[0])
367+ let cH = value(cC.payments[1])
368+ let cI = bG(toBase58String(cC.transactionId), bH, cG.amount, cG.assetId, cH.amount, cH.assetId, toString(cC.caller), false, bN)
369+ let br = parseIntValue(cI._8)
370+ if (if (if (as())
373371 then true
374- else (bs == i))
372+ else (br == h))
375373 then true
376- else (bs == k))
377- then throw(("Put operation is blocked by admin. Status = " + toString(bs)))
378- else cJ
374+ else (br == j))
375+ then throw(("Put operation is blocked by admin. Status = " + toString(br)))
376+ else cI
379377 }
380378
381379
382-@Callable(cD)
383-func constructor (as,cK) = if ((cD.caller != this))
384- then throw("permissions denied")
385- else [StringEntry(L(), as), StringEntry(M(), cK)]
380+func cJ () = {
381+ let cK = getString(L())
382+ if ($isInstanceOf(cK, "String"))
383+ then {
384+ let cL = cK
385+ fromBase58String(cL)
386+ }
387+ else if ($isInstanceOf(cK, "Unit"))
388+ then unit
389+ else throw("Match error")
390+ }
391+
392+
393+func cM () = {
394+ let cK = getString(M())
395+ if ($isInstanceOf(cK, "String"))
396+ then {
397+ let cL = cK
398+ fromBase58String(cL)
399+ }
400+ else if ($isInstanceOf(cK, "Unit"))
401+ then unit
402+ else throw("Match error")
403+ }
404+
405+
406+func cN (cC) = {
407+ let cO = throw("Permission denied")
408+ let cK = cJ()
409+ if ($isInstanceOf(cK, "ByteVector"))
410+ then {
411+ let cP = cK
412+ if ((cC.callerPublicKey == cP))
413+ then true
414+ else cO
415+ }
416+ else if ($isInstanceOf(cK, "Unit"))
417+ then if ((cC.caller == this))
418+ then true
419+ else cO
420+ else throw("Match error")
421+ }
422+
423+
424+@Callable(cC)
425+func constructor (ar) = {
426+ let cQ = cN(cC)
427+ if ((cQ == cQ))
428+ then [StringEntry(K(), ar)]
429+ else throw("Strict value is not equal to itself.")
430+ }
386431
387432
388433
389-@Callable(cD)
390-func put (bI,cL) = {
391- let cM = ay()
392- let cN = valueOrErrorMessage(addressFromString(cM[y]), "Error. Incorrect staking address.")
393- let cO = valueOrErrorMessage(addressFromString(cM[z]), "Error. Incorrect slippage contract address.")
394- if ((0 > bI))
434+@Callable(cC)
435+func setManager (cR) = {
436+ let cQ = cN(cC)
437+ if ((cQ == cQ))
438+ then {
439+ let cS = fromBase58String(cR)
440+ if ((cS == cS))
441+ then [StringEntry(M(), cR)]
442+ else throw("Strict value is not equal to itself.")
443+ }
444+ else throw("Strict value is not equal to itself.")
445+ }
446+
447+
448+
449+@Callable(cC)
450+func confirmManager () = {
451+ let cT = cM()
452+ let cU = if (isDefined(cT))
453+ then true
454+ else throw("No pending manager")
455+ if ((cU == cU))
456+ then {
457+ let cV = if ((cC.callerPublicKey == value(cT)))
458+ then true
459+ else throw("You are not pending manager")
460+ if ((cV == cV))
461+ then [StringEntry(L(), toBase58String(value(cT))), DeleteEntry(M())]
462+ else throw("Strict value is not equal to itself.")
463+ }
464+ else throw("Strict value is not equal to itself.")
465+ }
466+
467+
468+
469+@Callable(cC)
470+func put (bH,cW) = {
471+ let cX = ax()
472+ let cY = valueOrErrorMessage(addressFromString(cX[x]), "Error. Incorrect staking address.")
473+ let cZ = valueOrErrorMessage(addressFromString(cX[y]), "Error. Incorrect slippage contract address.")
474+ if ((0 > bH))
395475 then throw("Invalid slippageTolerance passed")
396476 else {
397- let cJ = cG(cD, bI, true)
398- let ck = cJ._2
399- let bp = cJ._7
400- let bG = cJ._9
401- let cl = cJ._10
402- let cm = cJ._11
403- let cP = cJ._12
404- let cQ = cJ._13
405- let cR = invoke(as, "emit", [ck], nil)
406- if ((cR == cR))
477+ let cI = cF(cC, bH, true)
478+ let cj = cI._2
479+ let bo = cI._7
480+ let bF = cI._9
481+ let ck = cI._10
482+ let cl = cI._11
483+ let da = cI._12
484+ let db = cI._13
485+ let dc = invoke(ar, "emit", [cj], nil)
486+ if ((dc == dc))
407487 then {
408- let cS = if ((cl > 0))
409- then invoke(cO, "put", nil, [AttachedPayment(cP, cl)])
410- else nil
411- if ((cS == cS))
488+ let dd = {
489+ let cK = dc
490+ if ($isInstanceOf(cK, "Address"))
491+ then {
492+ let de = cK
493+ invoke(de, "emit", [cj], nil)
494+ }
495+ else unit
496+ }
497+ if ((dd == dd))
412498 then {
413- let cT = if ((cm > 0))
414- then invoke(cO, "put", nil, [AttachedPayment(cQ, cm)])
499+ let df = if ((ck > 0))
500+ then invoke(cZ, "put", nil, [AttachedPayment(da, ck)])
415501 else nil
416- if ((cT == cT))
502+ if ((df == df))
417503 then {
418- let cU = if (cL)
504+ let dg = if ((cl > 0))
505+ then invoke(cZ, "put", nil, [AttachedPayment(db, cl)])
506+ else nil
507+ if ((dg == dg))
419508 then {
420- let cV = invoke(cN, "stake", nil, [AttachedPayment(bp, ck)])
421- if ((cV == cV))
422- then nil
423- else throw("Strict value is not equal to itself.")
509+ let dh = if (cW)
510+ then {
511+ let di = invoke(cY, "stake", nil, [AttachedPayment(bo, cj)])
512+ if ((di == di))
513+ then nil
514+ else throw("Strict value is not equal to itself.")
515+ }
516+ else [ScriptTransfer(cC.caller, cj, bo)]
517+ (bF ++ dh)
424518 }
425- else [ScriptTransfer(cD.caller, ck, bp)]
426- (bG ++ cU)
519+ else throw("Strict value is not equal to itself.")
427520 }
428521 else throw("Strict value is not equal to itself.")
429522 }
430523 else throw("Strict value is not equal to itself.")
431524 }
432525 else throw("Strict value is not equal to itself.")
433526 }
434527 }
435528
436529
437530
438-@Callable(cD)
439-func putForFree (cW) = if ((0 > cW))
531+@Callable(cC)
532+func putForFree (dj) = if ((0 > dj))
440533 then throw("Invalid value passed")
441534 else {
442- let cJ = cG(cD, cW, false)
443- cJ._9
535+ let cI = cF(cC, dj, false)
536+ cI._9
444537 }
445538
446539
447540
448-@Callable(cD)
541+@Callable(cC)
449542 func get () = {
450- let bY = cC(cD)
451- let cX = bY._1
452- let bF = bY._2
453- let cF = bY._3
454- let bn = bY._4
455- let bG = bY._5
456- let cY = invoke(as, "burn", [cF], [AttachedPayment(bn, cF)])
457- if ((cY == cY))
458- then bG
543+ let bX = cB(cC)
544+ let dk = bX._1
545+ let bE = bX._2
546+ let cE = bX._3
547+ let bm = bX._4
548+ let bF = bX._5
549+ let dl = invoke(ar, "burn", [cE], [AttachedPayment(bm, cE)])
550+ if ((dl == dl))
551+ then bF
459552 else throw("Strict value is not equal to itself.")
460553 }
461554
462555
463556
464-@Callable(cD)
465-func getNoLess (cZ,da) = {
466- let bY = cC(cD)
467- let bE = bY._1
468- let bF = bY._2
469- let cF = bY._3
470- let bn = bY._4
471- let bG = bY._5
472- if ((cZ > bE))
473- then throw(((("noLessThenAmtAsset failed: " + toString(bE)) + " < ") + toString(cZ)))
474- else if ((da > bF))
475- then throw(((("noLessThenPriceAsset failed: " + toString(bF)) + " < ") + toString(da)))
557+@Callable(cC)
558+func getNoLess (dm,dn) = {
559+ let bX = cB(cC)
560+ let bD = bX._1
561+ let bE = bX._2
562+ let cE = bX._3
563+ let bm = bX._4
564+ let bF = bX._5
565+ if ((dm > bD))
566+ then throw(((("noLessThenAmtAsset failed: " + toString(bD)) + " < ") + toString(dm)))
567+ else if ((dn > bE))
568+ then throw(((("noLessThenPriceAsset failed: " + toString(bE)) + " < ") + toString(dn)))
476569 else {
477- let cY = invoke(as, "burn", [cF], [AttachedPayment(bn, cF)])
478- if ((cY == cY))
479- then bG
570+ let dl = invoke(ar, "burn", [cE], [AttachedPayment(bm, cE)])
571+ if ((dl == dl))
572+ then bF
480573 else throw("Strict value is not equal to itself.")
481574 }
482575 }
483576
484577
485578
486-@Callable(cD)
487-func unstakeAndGet (db) = {
488- let dc = if ((size(cD.payments) != 0))
579+@Callable(cC)
580+func unstakeAndGet (do) = {
581+ let dp = if ((size(cC.payments) != 0))
489582 then throw("No payments are expected")
490583 else true
491- if ((dc == dc))
584+ if ((dp == dp))
492585 then {
493- let bc = av()
494- let cM = ay()
495- let bp = fromBase58String(bc[n])
496- let cN = valueOrErrorMessage(addressFromString(cM[y]), "Error. Incorrect staking address.")
497- let dd = invoke(cN, "unstake", [toBase58String(bp), db], nil)
498- if ((dd == dd))
586+ let bb = au()
587+ let cX = ax()
588+ let bo = fromBase58String(bb[m])
589+ let cY = valueOrErrorMessage(addressFromString(cX[x]), "Error. Incorrect staking address.")
590+ let dq = invoke(cY, "unstake", [toBase58String(bo), do], nil)
591+ if ((dq == dq))
499592 then {
500- let bY = bl(toBase58String(cD.transactionId), toBase58String(bp), db, cD.caller)
501- let bs = parseIntValue(bY._9)
502- let bG = bY._10
503- let de = if (if (at())
593+ let bX = bk(toBase58String(cC.transactionId), toBase58String(bo), do, cC.caller)
594+ let br = parseIntValue(bX._9)
595+ let bF = bX._10
596+ let dr = if (if (as())
504597 then true
505- else (bs == k))
506- then throw(("Get operation is blocked by admin. Status = " + toString(bs)))
598+ else (br == j))
599+ then throw(("Get operation is blocked by admin. Status = " + toString(br)))
507600 else true
508- if ((de == de))
601+ if ((dr == dr))
509602 then {
510- let cY = invoke(as, "burn", [db], [AttachedPayment(bp, db)])
511- if ((cY == cY))
512- then bG
603+ let dl = invoke(ar, "burn", [do], [AttachedPayment(bo, do)])
604+ if ((dl == dl))
605+ then bF
513606 else throw("Strict value is not equal to itself.")
514607 }
515608 else throw("Strict value is not equal to itself.")
516609 }
517610 else throw("Strict value is not equal to itself.")
518611 }
519612 else throw("Strict value is not equal to itself.")
520613 }
521614
522615
523616
524-@Callable(cD)
525-func activate (df,dg) = if ((toString(cD.caller) != toString(as)))
617+@Callable(cC)
618+func activate (ds,dt) = if ((toString(cC.caller) != toString(ar)))
526619 then throw("permissions denied")
527- else $Tuple2([StringEntry(V(), df), StringEntry(W(), dg)], "success")
620+ else $Tuple2([StringEntry(V(), ds), StringEntry(W(), dt)], "success")
528621
529622
530623
531-@Callable(cD)
532-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, av())
624+@Callable(cC)
625+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, au())
533626
534627
535628
536-@Callable(cD)
537-func getAccBalanceWrapperREADONLY (aP) = $Tuple2(nil, aO(aP))
629+@Callable(cC)
630+func getAccBalanceWrapperREADONLY (aO) = $Tuple2(nil, aN(aO))
538631
539632
540633
541-@Callable(cD)
542-func calcPricesWrapperREADONLY (aW,aX,bb) = {
543- let bk = ba(aW, aX, bb)
544- $Tuple2(nil, [toString(bk[0]), toString(bk[1]), toString(bk[2])])
634+@Callable(cC)
635+func calcPricesWrapperREADONLY (aV,aW,ba) = {
636+ let bj = aZ(aV, aW, ba)
637+ $Tuple2(nil, [toString(bj[0]), toString(bj[1]), toString(bj[2])])
545638 }
546639
547640
548641
549-@Callable(cD)
550-func toX18WrapperREADONLY (B,C) = $Tuple2(nil, toString(A(B, C)))
642+@Callable(cC)
643+func toX18WrapperREADONLY (A,B) = $Tuple2(nil, toString(z(A, B)))
551644
552645
553646
554-@Callable(cD)
555-func fromX18WrapperREADONLY (E,F) = $Tuple2(nil, D(parseBigIntValue(E), F))
647+@Callable(cC)
648+func fromX18WrapperREADONLY (D,E) = $Tuple2(nil, C(parseBigIntValue(D), E))
556649
557650
558651
559-@Callable(cD)
560-func calcPriceBigIntWrapperREADONLY (aR,aS) = $Tuple2(nil, toString(aQ(parseBigIntValue(aR), parseBigIntValue(aS))))
652+@Callable(cC)
653+func calcPriceBigIntWrapperREADONLY (aQ,aR) = $Tuple2(nil, toString(aP(parseBigIntValue(aQ), parseBigIntValue(aR))))
561654
562655
563656
564-@Callable(cD)
565-func estimatePutOperationWrapperREADONLY (bm,bI,bJ,bK,bL,bM,S,bN,bO) = $Tuple2(nil, bH(bm, bI, bJ, bK, bL, bM, S, bN, bO))
657+@Callable(cC)
658+func estimatePutOperationWrapperREADONLY (bl,bH,bI,bJ,bK,bL,S,bM,bN) = $Tuple2(nil, bG(bl, bH, bI, bJ, bK, bL, S, bM, bN))
566659
567660
568661
569-@Callable(cD)
570-func estimateGetOperationWrapperREADONLY (bm,bn,bo,S) = {
571- let bY = bl(bm, bn, bo, addressFromStringValue(S))
572- $Tuple2(nil, $Tuple10(bY._1, bY._2, bY._3, bY._4, bY._5, bY._6, bY._7, toString(bY._8), bY._9, bY._10))
662+@Callable(cC)
663+func estimateGetOperationWrapperREADONLY (bl,bm,bn,S) = {
664+ let bX = bk(bl, bm, bn, addressFromStringValue(S))
665+ $Tuple2(nil, $Tuple10(bX._1, bX._2, bX._3, bX._4, bX._5, bX._6, bX._7, toString(bX._8), bX._9, bX._10))
573666 }
574667
575668
576669
577-@Callable(cD)
670+@Callable(cC)
578671 func statsREADONLY () = {
579- let bc = av()
580- let bp = fromBase58String(bc[n])
581- let cq = bc[o]
582- let cr = bc[p]
583- let bR = bc[s]
584- let bS = bc[t]
585- let bd = parseIntValue(bc[q])
586- let be = parseIntValue(bc[r])
587- let dh = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
588- let cs = aO(cq)
589- let ct = aO(cr)
590- let di = if ((dh == 0))
672+ let bb = au()
673+ let bo = fromBase58String(bb[m])
674+ let cp = bb[n]
675+ let cq = bb[o]
676+ let bQ = bb[r]
677+ let bR = bb[s]
678+ let bc = parseIntValue(bb[p])
679+ let bd = parseIntValue(bb[q])
680+ let du = valueOrErrorMessage(assetInfo(bo), (("Asset " + toBase58String(bo)) + " doesn't exist")).quantity
681+ let cr = aN(cp)
682+ let cs = aN(cq)
683+ let dv = if ((du == 0))
591684 then [e, e, e]
592- else ba(cs, ct, dh)
593- let bz = 0
594- let dj = D(di[1], b)
595- let dk = D(di[2], b)
596- let dl = value(getInteger(as, ai(toString(this))))
597- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cs), toString(ct), toString(dh), toString(bz), toString(dj), toString(dk), toString(dl)], f))
685+ else aZ(cr, cs, du)
686+ let by = 0
687+ let dw = C(dv[1], b)
688+ let dx = C(dv[2], b)
689+ let dy = value(getInteger(ar, ah(toString(this))))
690+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cr), toString(cs), toString(du), toString(by), toString(dw), toString(dx), toString(dy)], f))
598691 }
599692
600693
601694
602-@Callable(cD)
603-func evaluatePutByAmountAssetREADONLY (bJ) = {
604- let bc = av()
605- let bp = fromBase58String(bc[n])
606- let bP = bc[o]
695+@Callable(cC)
696+func evaluatePutByAmountAssetREADONLY (bI) = {
697+ let bb = au()
698+ let bo = fromBase58String(bb[m])
699+ let bO = bb[n]
700+ let bp = fromBase58String(bO)
701+ let bP = bb[o]
607702 let bq = fromBase58String(bP)
608- let bQ = bc[p]
609- let br = fromBase58String(bQ)
610- let bd = parseIntValue(bc[q])
611- let be = parseIntValue(bc[r])
612- let bs = bc[m]
613- let dh = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
614- let cs = aO(bP)
615- let ct = aO(bQ)
616- let aY = A(cs, bd)
617- let aZ = A(ct, be)
618- let by = if ((dh == 0))
703+ let bc = parseIntValue(bb[p])
704+ let bd = parseIntValue(bb[q])
705+ let br = bb[l]
706+ let du = valueOrErrorMessage(assetInfo(bo), (("Asset " + toBase58String(bo)) + " doesn't exist")).quantity
707+ let cr = aN(bO)
708+ let cs = aN(bP)
709+ let aX = z(cr, bc)
710+ let aY = z(cs, bd)
711+ let bx = if ((du == 0))
619712 then e
620- else aQ(aZ, aY)
621- let bV = A(bJ, bd)
622- let bW = fraction(bV, by, d)
623- let bL = D(bW, be)
624- let cJ = bH("", 500000, bJ, bq, bL, br, "", true, false)
625- let cg = cJ._1
626- let dm = cJ._3
627- let bu = cJ._4
628- let bw = cJ._5
629- let bt = cJ._6
630- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cg), toString(D(by, b)), toString(bu), toString(bw), toString(bt), bs, toString(bJ), toString(bL)], f))
713+ else aP(aY, aX)
714+ let bU = z(bI, bc)
715+ let bV = fraction(bU, bx, d)
716+ let bK = C(bV, bd)
717+ let cI = bG("", 500000, bI, bp, bK, bq, "", true, false)
718+ let cf = cI._1
719+ let dz = cI._3
720+ let bt = cI._4
721+ let bv = cI._5
722+ let bs = cI._6
723+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cf), toString(C(bx, b)), toString(bt), toString(bv), toString(bs), br, toString(bI), toString(bK)], f))
631724 }
632725
633726
634727
635-@Callable(cD)
636-func evaluatePutByPriceAssetREADONLY (bL) = {
637- let bc = av()
638- let bp = fromBase58String(bc[n])
639- let bP = bc[o]
728+@Callable(cC)
729+func evaluatePutByPriceAssetREADONLY (bK) = {
730+ let bb = au()
731+ let bo = fromBase58String(bb[m])
732+ let bO = bb[n]
733+ let bp = fromBase58String(bO)
734+ let bP = bb[o]
640735 let bq = fromBase58String(bP)
641- let bQ = bc[p]
642- let br = fromBase58String(bQ)
643- let bd = parseIntValue(bc[q])
644- let be = parseIntValue(bc[r])
645- let bs = bc[m]
646- let dh = valueOrErrorMessage(assetInfo(bp), (("Asset " + toBase58String(bp)) + " doesn't exist")).quantity
647- let dn = aO(bP)
648- let do = aO(bQ)
649- let dp = A(dn, bd)
650- let dq = A(do, be)
651- let by = if ((dh == 0))
736+ let bc = parseIntValue(bb[p])
737+ let bd = parseIntValue(bb[q])
738+ let br = bb[l]
739+ let du = valueOrErrorMessage(assetInfo(bo), (("Asset " + toBase58String(bo)) + " doesn't exist")).quantity
740+ let dA = aN(bO)
741+ let dB = aN(bP)
742+ let dC = z(dA, bc)
743+ let dD = z(dB, bd)
744+ let bx = if ((du == 0))
652745 then e
653- else aQ(dq, dp)
654- let bW = A(bL, be)
655- let bV = fraction(bW, d, by)
656- let bJ = D(bV, bd)
657- let cJ = bH("", 500000, bJ, bq, bL, br, "", true, false)
658- let cg = cJ._1
659- let dm = cJ._3
660- let bu = cJ._4
661- let bw = cJ._5
662- let bt = cJ._6
663- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cg), toString(D(by, b)), toString(bu), toString(bw), toString(bt), bs, toString(bJ), toString(bL)], f))
746+ else aP(dD, dC)
747+ let bV = z(bK, bd)
748+ let bU = fraction(bV, d, bx)
749+ let bI = C(bU, bc)
750+ let cI = bG("", 500000, bI, bp, bK, bq, "", true, false)
751+ let cf = cI._1
752+ let dz = cI._3
753+ let bt = cI._4
754+ let bv = cI._5
755+ let bs = cI._6
756+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cf), toString(C(bx, b)), toString(bt), toString(bv), toString(bs), br, toString(bI), toString(bK)], f))
664757 }
665758
666759
667760
668-@Callable(cD)
669-func evaluateGetREADONLY (dr,ds) = {
670- let bY = bl("", dr, ds, this)
671- let bE = bY._1
672- let bF = bY._2
673- let bu = bY._5
674- let bw = bY._6
675- let bt = bY._7
676- let bz = bY._8
677- let bs = parseIntValue(bY._9)
678- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(bE), toString(bF), toString(bu), toString(bw), toString(bt), toString(bz), toString(bs)], f))
761+@Callable(cC)
762+func evaluateGetREADONLY (dE,dF) = {
763+ let bX = bk("", dE, dF, this)
764+ let bD = bX._1
765+ let bE = bX._2
766+ let bt = bX._5
767+ let bv = bX._6
768+ let bs = bX._7
769+ let by = bX._8
770+ let br = parseIntValue(bX._9)
771+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(bD), toString(bE), toString(bt), toString(bv), toString(bs), toString(by), toString(br)], f))
679772 }
680773
681774
682-@Verifier(dt)
683-func du () = {
684- let dv = dt
685- if ($isInstanceOf(dv, "Order"))
775+@Verifier(dG)
776+func dH () = {
777+ let cK = dG
778+ if ($isInstanceOf(cK, "Order"))
686779 then {
687- let cp = dv
688- let dw = au()
689- let al = co(cp)
690- let am = sigVerify(cp.bodyBytes, cp.proofs[0], cp.senderPublicKey)
691- let an = sigVerify(cp.bodyBytes, cp.proofs[1], dw)
692- if (if (if (al)
780+ let co = cK
781+ let dI = at()
782+ let ak = cn(co)
783+ let al = sigVerify(co.bodyBytes, co.proofs[0], co.senderPublicKey)
784+ let am = sigVerify(co.bodyBytes, co.proofs[1], dI)
785+ if (if (if (ak)
786+ then al
787+ else false)
693788 then am
694789 else false)
695- then an
696- else false)
697790 then true
698- else ak(al, am, an)
791+ else aj(ak, al, am)
699792 }
700793 else {
701- let dx = valueOrElse(getString(this, M()), g)
702- if ((dx == g))
703- then sigVerify(dt.bodyBytes, dt.proofs[0], dt.senderPublicKey)
704- else sigVerify(dt.bodyBytes, dt.proofs[0], fromBase58String(dx))
794+ let dJ = {
795+ let dK = cJ()
796+ if ($isInstanceOf(dK, "ByteVector"))
797+ then {
798+ let cP = dK
799+ cP
800+ }
801+ else if ($isInstanceOf(dK, "Unit"))
802+ then dG.senderPublicKey
803+ else throw("Match error")
804+ }
805+ sigVerify(dG.bodyBytes, dG.proofs[0], dJ)
705806 }
706807 }
707808

github/deemru/w8io/6500d08 
229.79 ms