tx · FfcVbAcn87vSrThFXtoUwa43bD2YwkWTuHhBKGDHks2V

3N7b3kPunHUXhZp1vMG9NhPMARNEprCMWxT:  -0.04300000 Waves

2023.04.05 11:51 [2521028] smart account 3N7b3kPunHUXhZp1vMG9NhPMARNEprCMWxT > SELF 0.00000000 Waves

{ "type": 13, "id": "FfcVbAcn87vSrThFXtoUwa43bD2YwkWTuHhBKGDHks2V", "fee": 4300000, "feeAssetId": null, "timestamp": 1680684675591, "version": 2, "chainId": 84, "sender": "3N7b3kPunHUXhZp1vMG9NhPMARNEprCMWxT", "senderPublicKey": "AYbpHveq7zviKTDV7SGTB1pZGFbkumgfq3jSwVv6BznT", "proofs": [ "3QnPgE7GcFwQQAz31S85YJkqQFoJBDxcAVf6iL2SeegXScEqjEf48BT3UFH3TcduoAhk5Wby8QLPWHu8wom8uMMe" ], "script": "base64:BgLENwgCEgASBQoDAQQBEgcKBQEEAQgBEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiC3RvWDE4QmlnSW50Igdmcm9tWDE4IgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIMZnJvbVgxOFJvdW5kIgVyb3VuZCIHdG9TY2FsZSIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50Igxzd2FwQ29udHJhY3QiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIQa2V5U1dhdmVzQXNzZXRJZCIVa2V5U1dhdmVzUHJveHlBZGRyZXNzIhRrZXlBZGRpdGlvbmFsQmFsYW5jZSIHYXNzZXRJZCIWa2V5U3Rha2luZ0Fzc2V0QmFsYW5jZSIaZ2V0QWRkaXRpb25hbEJhbGFuY2VPclplcm8iHGdldFN0YWtpbmdBc3NldEJhbGFuY2VPclplcm8iEGtleUZhY3RvcnlDb25maWciDWtleU1hdGNoZXJQdWIiKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzIhNwb29sQ29udHJhY3RBZGRyZXNzIg1rZXlQb29sQ29uZmlnIglpQW10QXNzZXQiC2lQcmljZUFzc2V0Ih9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkIgxiYXNlQXNzZXRTdHIiE2tleUFsbFBvb2xzU2h1dGRvd24iDWtleVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIWa2V5QWxsb3dlZExwU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIPdGhyb3dPcmRlckVycm9yIgpvcmRlclZhbGlkIg5vcmRlclZhbGlkSW5mbyILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiDGdldEludE9yRmFpbCIIdGhyb3dFcnIiA21zZyIGZm10RXJyIg9mYWN0b3J5Q29udHJhY3QiE2ZlZUNvbGxlY3RvckFkZHJlc3MiBWluRmVlIgFAIgZvdXRGZWUiCHNXYXZlc0lkIgtzV2F2ZXNQcm94eSIQaXNHbG9iYWxTaHV0ZG93biITZ2V0TWF0Y2hlclB1Yk9yRmFpbCINZ2V0UG9vbENvbmZpZyIIYW10QXNzZXQiCnByaWNlQXNzZXQiDHBhcnNlQXNzZXRJZCIFaW5wdXQiD2Fzc2V0SWRUb1N0cmluZyIPcGFyc2VQb29sQ29uZmlnIgpwb29sQ29uZmlnIhBwb29sQ29uZmlnUGFyc2VkIgskdDA5Mjk3OTQ2MyIOY2ZnUG9vbEFkZHJlc3MiDWNmZ1Bvb2xTdGF0dXMiDGNmZ0xwQXNzZXRJZCIQY2ZnQW1vdW50QXNzZXRJZCIPY2ZnUHJpY2VBc3NldElkIhZjZmdBbW91bnRBc3NldERlY2ltYWxzIhVjZmdQcmljZUFzc2V0RGVjaW1hbHMiEGdldEZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIQc2xpcHBhZ2VDb250cmFjdCIRZGF0YVB1dEFjdGlvbkluZm8iDWluQW10QXNzZXRBbXQiD2luUHJpY2VBc3NldEFtdCIIb3V0THBBbXQiBXByaWNlIh1zbGlwcGFnZVRvbGVyYW5jZVBhc3NlZEJ5VXNlciIVc2xpcHBhZ2VUb2xlcmFuY2VSZWFsIgh0eEhlaWdodCILdHhUaW1lc3RhbXAiEnNsaXBhZ2VBbXRBc3NldEFtdCIUc2xpcGFnZVByaWNlQXNzZXRBbXQiEWRhdGFHZXRBY3Rpb25JbmZvIg5vdXRBbXRBc3NldEFtdCIQb3V0UHJpY2VBc3NldEFtdCIHaW5McEFtdCINZ2V0QWNjQmFsYW5jZSINYmFsYW5jZU9uUG9vbCIMdG90YWxCYWxhbmNlIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIUY2FsY1ByaWNlQmlnSW50Um91bmQiB2dldFJhdGUiBXByb3h5IgNpbnYiByRtYXRjaDAiAXIiB2RlcG9zaXQiBmFtb3VudCIOc3Rha2luZ0Fzc2V0SWQiGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZSIaY3VycmVudFN0YWtpbmdBc3NldEJhbGFuY2UiBWFzc2V0Ig1kZXBvc2l0SW52b2tlIhRyZWNlaXZlZFN0YWtpbmdBc3NldCIUbmV3QWRkaXRpb25hbEJhbGFuY2UiFm5ld1N0YWtpbmdBc3NldEJhbGFuY2UiCHdpdGhkcmF3Igxwcm94eVJhdGVNdWwiDXByb2ZpdEFkZHJlc3MiEGN1cnJlbnRQcm94eVJhdGUiB29sZFJhdGUiDHN0YWtpbmdBc3NldCIUb2xkU2VuZFN0YWtpbmdBbW91bnQiFnNlbmRTdGFraW5nQXNzZXRBbW91bnQiDHByb2ZpdEFtb3VudCIOd2l0aGRyYXdJbnZva2UiDnJlY2VpdmVkQXNzZXRzIhNnZXRMZWFzZVByb3h5Q29uZmlnIhFyZWJhbGFuY2VJbnRlcm5hbCILdGFyZ2V0UmF0aW8iCm1pbkJhbGFuY2UiEGF2YWlsYWJsZUJhbGFuY2UiAWIiAXUiDHdob2xlQmFsYW5jZSIXdGFyZ2V0QWRkaXRpb25hbEJhbGFuY2UiBGRpZmYiD3NlbmRBc3NldEFtb3VudCIOZ2V0QXNzZXRBbW91bnQiDnJlYmFsYW5jZUFzc2V0IgFhIg0kdDAxNTgxNDE1OTIzIgppc0xlYXNhYmxlIgtsZWFzZWRSYXRpbyIMcHJveHlBZGRyZXNzIgxwcm94eUFzc2V0SWQiFHN0YWtpbmdQcm9maXRBZGRyZXNzIhVnZXRXaXRoZHJhd0Fzc2V0U3RhdGUiCWdldEFtb3VudCINJHQwMTY1MTYxNjYyNSITbmV3VG90YWxDYWxjQmFsYW5jZSIOd2l0aGRyYXdBbW91bnQiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiD2NhbGN1bGF0ZVByaWNlcyIGcHJpY2VzIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCIJbHBBc3NldElkIglhbUFzc2V0SWQiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIKbHBFbWlzc2lvbiIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4Ig1scEVtaXNzaW9uWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCISQW1BbXRXaXRoZHJhd1N0YXRlIhJQckFtdFdpdGhkcmF3U3RhdGUiBXN0YXRlIhRlc3RpbWF0ZVB1dE9wZXJhdGlvbiIRc2xpcHBhZ2VUb2xlcmFuY2UiDGluQW1Bc3NldEFtdCILaW5BbUFzc2V0SWQiDGluUHJBc3NldEFtdCILaW5QckFzc2V0SWQiCmlzRXZhbHVhdGUiBmVtaXRMcCIMYW1Bc3NldElkU3RyIgxwckFzc2V0SWRTdHIiC2lBbXRBc3NldElkIg1pUHJpY2VBc3NldElkIg5pbkFtQXNzZXRJZFN0ciIOaW5QckFzc2V0SWRTdHIiD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiA3JlcyILc2xpcHBhZ2VYMTgiFHNsaXBwYWdlVG9sZXJhbmNlWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIgtjb21tb25TdGF0ZSIHY2FsY0tMcCINYW1vdW50QmFsYW5jZSIMcHJpY2VCYWxhbmNlIhBhbW91bnRCYWxhbmNlWDE4Ig9wcmljZUJhbGFuY2VYMTgiCnVwZGF0ZWRLTHAiDmNhbGNDdXJyZW50S0xwIhBhbW91bnRBc3NldERlbHRhIg9wcmljZUFzc2V0RGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCmN1cnJlbnRLTHAiEnJlZnJlc2hLTHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiB2FjdGlvbnMiEnZhbGlkYXRlVXBkYXRlZEtMcCIGb2xkS0xwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjg3MDcyODkxOSIDa0xwIg0kdDAyOTM1OTI5NDU5Ig11bnVzZWRBY3Rpb25zIgZrTHBOZXciDGlzT3JkZXJWYWxpZCIEaW5mbyIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiB2VtaXRJbnYiDWVtaXRJbnZMZWdhY3kiFWxlZ2FjeUZhY3RvcnlDb250cmFjdCIHdGFrZUZlZSIJZmVlQW1vdW50Ig9jYWxjUHV0T25lVG9rZW4iEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIgZpc0V2YWwiEGFtb3VudEJhbGFuY2VSYXciD3ByaWNlQmFsYW5jZVJhdyIUcGF5bWVudEluQW1vdW50QXNzZXQiDSR0MDMyNTcyMzI4NjUiEGFtb3VudEJhbGFuY2VPbGQiD3ByaWNlQmFsYW5jZU9sZCINJHQwMzI4NjkzMzAxOCIUYW1vdW50QXNzZXRBbW91bnRSYXciE3ByaWNlQXNzZXRBbW91bnRSYXciDSR0MDMzMTUwMzMyMTQiDXBheW1lbnRBbW91bnQiEGFtb3VudEJhbGFuY2VOZXciD3ByaWNlQmFsYW5jZU5ldyILcHJpY2VOZXdYMTgiCHByaWNlTmV3Ig5wYXltZW50QmFsYW5jZSIUcGF5bWVudEJhbGFuY2VCaWdJbnQiDHN1cHBseUJpZ0ludCILY2hlY2hTdXBwbHkiDWRlcG9zaXRCaWdJbnQiC2lzc3VlQW1vdW50IgtwcmljZU9sZFgxOCIIcHJpY2VPbGQiBGxvc3MiDSR0MDM0ODk1MzUwNjIiB2JhbGFuY2UiD2lzc3VlQW1vdW50Qm90aCIPY2FsY0dldE9uZVRva2VuIgpvdXRBc3NldElkIgZjaGVja3MiEG91dEluQW1vdW50QXNzZXQiDWJhbGFuY2VCaWdJbnQiGG91dEluQW1vdW50QXNzZXREZWNpbWFscyIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiCm91dEJhbGFuY2UiEG91dEJhbGFuY2VCaWdJbnQiDnJlZGVlbWVkQmlnSW50IglhbW91bnRSYXciDSR0MDM3MTQwMzcxOTYiC3RvdGFsQW1vdW50Ig0kdDAzNzIwMDM3NDI2IgtvdXRBbUFtb3VudCILb3V0UHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IhhhbW91bnRCb3RoSW5QYXltZW50QXNzZXQiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0Iglpc01hbmFnZXIiAnBrIgttdXN0TWFuYWdlciICcGQiDWNsZWFuQW1vdW50SW4iCWlzUmV2ZXJzZSINZmVlUG9vbEFtb3VudCINJHQwMzkzMTIzOTYxNyIIYXNzZXRPdXQiB2Fzc2V0SW4iEnBvb2xBc3NldEluQmFsYW5jZSITcG9vbEFzc2V0T3V0QmFsYW5jZSIJYW1vdW50T3V0IgRvbGRLIgRuZXdLIgZjaGVja0siDGFtb3VudE91dE1pbiIJYWRkcmVzc1RvIgtzd2FwQ29udGFjdCIIY2hlY2tNaW4iBmxzQ29uZiINd2l0aGRyYXdTdGF0ZSIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiC2NoZWNrQ2FsbGVyIhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSIPc2hvdWxkQXV0b1N0YWtlIgRhbUlkIgRwcklkIgxzbGlwcGFnZUFJbnYiDHNsaXBwYWdlUEludiIKbHBUcmFuc2ZlciILc2xwU3Rha2VJbnYiDSR0MDQ0NzcwNDUyMzIiEXJlZnJlc2hLTHBBY3Rpb25zIhFpc1VwZGF0ZWRLTHBWYWxpZCIDcmViIgttYXhTbGlwcGFnZSINJHQwNDU4NDQ0NTkwOSIMbWluT3V0QW1vdW50IglhdXRvU3Rha2UiIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkIg1pc1B1dERpc2FibGVkIgdwYXltZW50Ig0kdDA0NzA5NzQ3MjQ5IgVib251cyITZW1pdEFtb3VudEVzdGltYXRlZCIKZW1pdEFtb3VudCIIc3Rha2VJbnYiB3NlbmRGZWUiDSR0MDQ3ODM1NDgwMzIiDSR0MDQ4MDM1NDgxNDMiDSR0MDQ4NDk4NDg2NTUiDW91dEFzc2V0SWRTdHIiDWlzR2V0RGlzYWJsZWQiDSR0MDQ5NTQwNDk2OTMiD2Ftb3VudEVzdGltYXRlZCIHYnVybkludiINYXNzZXRUcmFuc2ZlciINJHQwNTA0NDk1MDY5NiIQZmVlQW1vdW50Rm9yQ2FsYyINJHQwNTA2OTk1MDgwNyINJHQwNTEwODU1MTI0MSINdW5zdGFrZUFtb3VudCIKdW5zdGFrZUludiINJHQwNTIxNDY1MjI5NyINJHQwNTI4NjI1MzEwOSINJHQwNTMxMTI1MzIyMCIJb3V0QW10QW10IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNTQxODc1NDI2OSISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCINJHQwNTUyMTg1NTI5OSINY2hlY2tQYXltZW50cyIPY2hlY2tQb29sU3RhdHVzIg0kdDA1NjQyNTU2NTA2IhVub0xlc3NUaGVuQW1vdW50QXNzZXQiDGNoZWNrQW1vdW50cyINJHQwNTc4MDE1Nzg4MiILYW10QXNzZXRTdHIiDXByaWNlQXNzZXRTdHIiGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDU5MDY5NTkxMzMiEGtMcFVwZGF0ZUFjdGlvbnMiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCINcG9vbExQQmFsYW5jZSISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSIKcHJpY2VzTGlzdCIPbHBBbXRBc3NldFNoYXJlIhFscFByaWNlQXNzZXRTaGFyZSIKcG9vbFdlaWdodCIMY3VyUHJpY2VDYWxjIgxhbUJhbGFuY2VSYXciDHByQmFsYW5jZVJhdyIPYW1CYWxhbmNlUmF3WDE4Ig9wckJhbGFuY2VSYXdYMTgiEHBheW1lbnRMcEFzc2V0SWQiDHBheW1lbnRMcEFtdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIg0kdDA2Nzc5NTY3ODY0IgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2iCAQABYQAIAAFiAIDC1y8AAWMJALYCAQCAwtcvAAFkCQC2AgEAgICQu7rWrfANAAFlCQC2AgEAAAABZgkAtgIBAAAAAWcJALYCAQABAAFoCQC2AgEAAgABaQIFV0FWRVMAAWoCAl9fAAFrAAEAAWwAAgABbQADAAFuAAQAAW8AAQABcAACAAFxAAMAAXIABAABcwAFAAF0AAYAAXUABwABdgAIAAF3AAkAAXgACgABeQABAAF6AAIAAUEAAwABQgABAAFDAAcBAUQCAUUBRgkAvAIDCQC2AgEFAUUFAWQJALYCAQUBRgEBRwIBRQFGCQC8AgMFAUUFAWQFAUYBAUgCAUkBSgkAoAMBCQC8AgMFAUkJALYCAQUBSgUBZAEBSwMBSQFKAUwJAKADAQkAvQIEBQFJCQC2AgEFAUoFAWQFAUwBAU0DAU4BTwFQCQBrAwUBTgUBTwUBUAEBUQEBSQMJAGYCAAAFAUkJAQEtAQUBSQUBSQEBUgEBSQMJAL8CAgUBZQUBSQkAvgIBBQFJBQFJAQFTAAIQJXNfX3N3YXBDb250cmFjdAEBVAACEyVzX19mYWN0b3J5Q29udHJhY3QBAVUAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBVgACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBVwACESVzJXNfX3ByaWNlX19sYXN0AQFYAgFZAVoJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFZCQDMCAIJAKQDAQUBWgUDbmlsBQFqAQJhYQICYWICYWMJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQJhYgICX18FAmFjAQJhZAICYWICYWMJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJhYgICX18FAmFjAQJhZQACDyVzX19hbW91bnRBc3NldAECYWYAAg4lc19fcHJpY2VBc3NldAACYWcCByVzX19mZWUAAmFoCQBrAwAKBQFiAJBOAAJhaQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhZwUCYWgAAmFqCQC5CQIJAMwIAgICJXMJAMwIAgIDa0xwBQNuaWwFAWoAAmFrCQC5CQIJAMwIAgICJXMJAMwIAgISa0xwUmVmcmVzaGVkSGVpZ2h0BQNuaWwFAWoAAmFsCQC5CQIJAMwIAgICJXMJAMwIAgIPcmVmcmVzaEtMcERlbGF5BQNuaWwFAWoAAmFtAB4AAmFuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFsBQJhbQECYW8AAhElc19fc1dhdmVzQXNzZXRJZAECYXAAAhYlc19fc1dhdmVzUHJveHlBZGRyZXNzAQJhcQECYXIJALkJAgkAzAgCAgQlcyVzCQDMCAICEWFkZGl0aW9uYWxCYWxhbmNlCQDMCAIFAmFyBQNuaWwFAWoBAmFzAQJhcgkAuQkCCQDMCAICBCVzJXMJAMwIAgITc3Rha2luZ0Fzc2V0QmFsYW5jZQkAzAgCBQJhcgUDbmlsBQFqAQJhdAECYXIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmFxAQUCYXIAAAECYXUBAmFyCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJhcwEFAmFyAAABAmF2AAIRJXNfX2ZhY3RvcnlDb25maWcBAmF3AAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJheAECYXkJAKwCAgkArAICAgglcyVzJXNfXwUCYXkCIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0AQJhegICYUECYUIJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFBAgJfXwUCYUICCF9fY29uZmlnAQJhQwECYUQJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYUQBAmFFAAIMJXNfX3NodXRkb3duAQJhRgECYUcJAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQJhRwECYUgAAhclc19fYWxsb3dlZExwU2NyaXB0SGFzaAACYUkCFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhSgQCYUsCYUwCYU0CYU4JAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIkb3JkZXIgdmFsaWRhdGlvbiBmYWlsZWQ6IG9yZGVyVmFsaWQ9CQClAwEFAmFLAgIgKAUCYUwCASkCDSBzZW5kZXJWYWxpZD0JAKUDAQUCYU0CDiBtYXRjaGVyVmFsaWQ9CQClAwEFAmFOAQJhTwICYVACYVEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhUAUCYVEJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYVAJAMwIAgIBLgkAzAgCBQJhUQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQJhUgICYVACYVEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJhUAUCYVEJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYVAJAMwIAgIBLgkAzAgCBQJhUQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQJhUwECYVQJAAIBCQC5CQIJAMwIAgIIbHAucmlkZToJAMwIAgUCYVQFA25pbAIBIAECYVUBAmFUCQC5CQIJAMwIAgIIbHAucmlkZToJAMwIAgUCYVQFA25pbAIBIAACYVYJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhTwIFBHRoaXMJAQFUAAACYVcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhTwIFAmFWBQJhSQACYVgKAAJhWQkA/AcEBQJhVgIQZ2V0SW5GZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFZAgNJbnQFAmFZCQACAQkArAICCQADAQUCYVkCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYVoKAAJhWQkA/AcEBQJhVgIRZ2V0T3V0RmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhWQIDSW50BQJhWQkAAgEJAKwCAgkAAwEFAmFZAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBAmJhAAkBAmFPAgUCYVYJAQJhbwABAmJiAAkBAmFPAgUCYVYJAQJhcAABAmJjAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhVgkBAmFFAAcBAmJkAAkA2QQBCQECYU8CBQJhVgkBAmF3AAECYmUABAJiZgkBAmFPAgUEdGhpcwkBAmFlAAQCYmcJAQJhTwIFBHRoaXMJAQJhZgAEAmFCCQECYVICBQJhVgkBAmFDAQUCYmcEAmFBCQECYVICBQJhVgkBAmFDAQUCYmYJALUJAgkBAmFPAgUCYVYJAQJhegIJAKQDAQUCYUEJAKQDAQUCYUIFAWoBAmJoAQJiaQMJAAACBQJiaQUBaQUEdW5pdAkA2QQBBQJiaQECYmoBAmJpAwkAAAIFAmJpBQR1bml0BQFpCQDYBAEJAQV2YWx1ZQEFAmJpAQJiawECYmwJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJibAUBbwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJsBQFwCQDZBAEJAJEDAgUCYmwFAXEJAQJiaAEJAJEDAgUCYmwFAXIJAQJiaAEJAJEDAgUCYmwFAXMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJibAUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJsBQF1AAJibQkBAmJrAQkBAmJlAAACYm4FAmJtAAJibwgFAmJuAl8xAAJicAgFAmJuAl8yAAJicQgFAmJuAl8zAAJicggFAmJuAl80AAJicwgFAmJuAl81AAJidAgFAmJuAl82AAJidQgFAmJuAl83AQJidgAJALUJAgkBAmFPAgUCYVYJAQJhdgAFAWoAAmJ3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYnYABQFCAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAAJieAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJ2AAUBQwIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwECYnkKAmJ6AmJBAmJCAmJDAmJEAmJFAmJGAmJHAmJIAmJJCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiegkAzAgCCQCkAwEFAmJBCQDMCAIJAKQDAQUCYkIJAMwIAgkApAMBBQJiQwkAzAgCCQCkAwEFAmJECQDMCAIJAKQDAQUCYkUJAMwIAgkApAMBBQJiRgkAzAgCCQCkAwEFAmJHCQDMCAIJAKQDAQUCYkgJAMwIAgkApAMBBQJiSQUDbmlsBQFqAQJiSgYCYksCYkwCYk0CYkMCYkYCYkcJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiSwkAzAgCCQCkAwEFAmJMCQDMCAIJAKQDAQUCYk0JAMwIAgkApAMBBQJiQwkAzAgCCQCkAwEFAmJGCQDMCAIJAKQDAQUCYkcFA25pbAUBagECYk4BAmFyBAJiTwMJAAACBQJhcgIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYXIEAmJQCQBlAgkAZAIFAmJPCQECYXQBBQJhcgkBAmF1AQUCYXIJAJYDAQkAzAgCAAAJAMwIAgUCYlAFA25pbAECYlECAmJSAmJTCQC8AgMFAmJSBQFkBQJiUwECYlQDAmJSAmJTAUwJAL0CBAUCYlIFAWQFAmJTBQFMAQJiVQECYlYEAmJXCQD8BwQFAmJWAgdnZXRSYXRlBQNuaWwFA25pbAMJAAACBQJiVwUCYlcEAmJYBQJiVwMJAAECBQJiWAIDSW50BAJiWQUCYlgFAmJZCQECYVMBAiBwcm94eS5nZXRSYXRlKCkgdW5leHBlY3RlZCB2YWx1ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECYloEAmFyAmNhAmNiAmJWBAJjYwkBAmF0AQUCYXIDCQAAAgUCY2MFAmNjBAJjZAkBAmF1AQUCY2IDCQAAAgUCY2QFAmNkBAJjZQkBAmJoAQUCYXIDCQBmAgUCY2EAAAQCY2YJAPwHBAUCYlYCB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2UFAmNhBQNuaWwDCQAAAgUCY2YFAmNmBAJiWAUCY2YDCQABAgUCYlgCA0ludAQCY2cFAmJYBAJjaAkAZAIFAmNjBQJjYQQCY2kJAGQCBQJjZAUCY2cJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhcQEFAmFyBQJjaAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFzAQUCY2IFAmNpBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJjagYCYXICY2ECY2ICYlYCY2sCY2wEAmNjCQECYXQBBQJhcgMJAAACBQJjYwUCY2MEAmNkCQECYXUBBQJjYgMJAAACBQJjZAUCY2QEAmNtCQECYlUBBQJiVgMJAAACBQJjbQUCY20EAmNuCQBrAwUCY2sFAmNjBQJjZAQCY28JAQJiaAEFAmNiBAJjcAkAawMFAmNrBQJjYQUCY24EAmNxCQBrAwUCY2sFAmNhBQJjbQQCY3IJAJYDAQkAzAgCAAAJAMwIAgkAZQIFAmNwBQJjcQUDbmlsAwkAZgIFAmNxAAAEAmNzCQD8BwQFAmJWAgh3aXRoZHJhdwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjbwUCY3EFA25pbAMJAAACBQJjcwUCY3MEAmJYBQJjcwMJAAECBQJiWAIDSW50BAJjdAUCYlgEAmNoCQBlAgUCY2MFAmN0BAJjaQkAZQIJAGUCBQJjZAUCY3EFAmNyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXEBBQJhcgUCY2gJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhcwEFAmNiBQJjaQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjbAUCY3IJAQJiaAEFAmNiBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJjdQECYXIJAPwHBAUCYVYCGmdldFBvb2xMZWFzZUNvbmZpZ1JFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwkAzAgCBQJhcgUDbmlsBQNuaWwBAmN2BwJjdwJhcgJjYgJjeAJiVgJjawJjbAQCY2MJAQJhdAEFAmFyAwkAAAIFAmNjBQJjYwQCY2QJAQJhdQEFAmNiAwkAAAIFAmNkBQJjZAQCY3kEAmJYCQECYmgBBQJhcgMJAAECBQJiWAIKQnl0ZVZlY3RvcgQCY3oFAmJYCQDwBwIFBHRoaXMFAmN6AwkAAQIFAmJYAgRVbml0BAJjQQUCYlgICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQACAQILTWF0Y2ggZXJyb3IDCQAAAgUCY3kFAmN5BAJjQgkAlgMBCQDMCAIAAAkAzAgCCQBlAgkAZAIFAmN5BQJjYwUCY3gFA25pbAQCY0MJAGsDBQJjdwUCY0IAZAQCY0QJAGUCBQJjYwUCY0MDCQAAAgUCY0QAAAUDbmlsAwkAZgIAAAUCY0QEAmNFCQEBLQEFAmNECQECYloEBQJhcgUCY0UFAmNiBQJiVgQCY0YFAmNECQECY2oGBQJhcgUCY0YFAmNiBQJiVgUCY2sFAmNsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJjRwECYXIEAmJYCQECY3UBBQJhcgMJAAECBQJiWAIwKEJvb2xlYW4sIEludCwgSW50LCBTdHJpbmcsIFN0cmluZywgSW50LCBTdHJpbmcpBAJjSAUCYlgEAmNJBQJjSAQCY0oIBQJjSQJfMQQCY0sIBQJjSQJfMgQCY3gIBQJjSQJfMwQCY0wIBQJjSQJfNAQCY00IBQJjSQJfNQQCY2sIBQJjSQJfNgQCY04IBQJjSQJfNwMFAmNKCQECY3YHBQJjSwUCYXIFAmNNBQJjeAkBEUBleHRyTmF0aXZlKDEwNjIpAQUCY0wFAmNrCQERQGV4dHJOYXRpdmUoMTA2MikBBQJjTgUDbmlsCQECYVMBCQCsAgIJAKwCAgIBWwUCYXICEV0gUmViYWxhbmNlIGVycm9yAQJjTwICYXICY1AEAmJYCQECY3UBBQJhcgMJAAECBQJiWAIwKEJvb2xlYW4sIEludCwgSW50LCBTdHJpbmcsIFN0cmluZywgSW50LCBTdHJpbmcpBAJjSAUCYlgEAmNRBQJjSAQCY0oIBQJjUQJfMQQCY0sIBQJjUQJfMgQCY3gIBQJjUQJfMwQCY0wIBQJjUQJfNAQCY00IBQJjUQJfNQQCY2sIBQJjUQJfNgQCY04IBQJjUQJfNwMFAmNKBAJjUgkAlgMBCQDMCAIAAAkAzAgCCQBlAgkAZQIJAQJiTgEFAmFyBQJjUAUCY3gFA25pbAMJAAACBQJjUgUCY1IEAmNoCQBrAwUCY0sFAmNSAGQDCQAAAgUCY2gFAmNoBAJjUwkAlgMBCQDMCAIAAAkAzAgCCQBlAgkBAmF0AQUCYXIFAmNoBQNuaWwDCQAAAgUCY1MFAmNTCQECY2oGBQJhcgUCY1MFAmNNCQERQGV4dHJOYXRpdmUoMTA2MikBBQJjTAUCY2sJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNOCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwJAQJhUwEJAKwCAgkArAICAgFbBQJhcgIfXSBnZXRXaXRoZHJhd0Fzc2V0U3RhdGUoKSBlcnJvcgECY1QEAmNVAmNWAmNXAmNYBAJjWQkBAUQCBQJjVwUCY1UEAmNaCQEBRAIFAmNYBQJjVgkBAmJRAgUCY1oFAmNZAQJkYQMCY1cCY1gCZGIEAmRjCQECYmUABAJkZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRjBQF0BAJkZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRjBQF1BAJkZgkBAmNUBAUCZGQFAmRlBQJjVwUCY1gEAmJTCQEBRAIFAmNXBQJkZAQCYlIJAQFEAgUCY1gFAmRlBAJkZwkBAUQCBQJkYgUBYgQCZGgJAQJiUQIFAmJTBQJkZwQCZGkJAQJiUQIFAmJSBQJkZwkAzAgCBQJkZgkAzAgCBQJkaAkAzAgCBQJkaQUDbmlsAQJkagMCY1cCY1gCZGIEAmRrCQECZGEDBQJjVwUCY1gFAmRiCQDMCAIJAQFIAgkAkQMCBQJkawAABQFiCQDMCAIJAQFIAgkAkQMCBQJkawABBQFiCQDMCAIJAQFIAgkAkQMCBQJkawACBQFiBQNuaWwBAmRsBAJkbQJkbgJkbwJhYgQCZGMJAQJiZQAEAmRwCQCRAwIFAmRjBQFxBAJkcQkAkQMCBQJkYwUBcgQCZHIJAJEDAgUCZGMFAXMEAmNVCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGMFAXQEAmNWCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGMFAXUEAmRzCQCRAwIFAmRjBQFwBAJkdAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmRwCQCsAgIJAKwCAgIGQXNzZXQgBQJkcAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJkcAUCZG4JAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmR1CQECYk4BBQJkcQQCZHYJAQFEAgUCZHUFAmNVBAJkdwkBAmJOAQUCZHIEAmR4CQEBRAIFAmR3BQJjVgQCZHkJAQJiUQIFAmR4BQJkdgQCZHoJAQFIAgUCZHkFAWIEAmRBCQEBRAIFAmRvBQFiBAJkQgkBAUQCBQJkdAUBYgQCZEMJALwCAwUCZHYFAmRBBQJkQgQCZEQJALwCAwUCZHgFAmRBBQJkQgQCZEUJAQFLAwUCZEMFAmNVBQVGTE9PUgQCZEYJAQFLAwUCZEQFAmNWBQVGTE9PUgQCZEcJAQJjTwIFAmRxBQJkRQMJAAACBQJkRwUCZEcEAmRICQECY08CBQJkcgUCZEYDCQAAAgUCZEgFAmRIBAJkSQMJAAACBQJkbQIABQNuaWwJAM4IAgkAzggCBQJkRwUCZEgJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmRFAwkAAAIFAmRxAgVXQVZFUwUEdW5pdAkA2QQBBQJkcQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCZEYDCQAAAgUCZHICBVdBVkVTBQR1bml0CQDZBAEFAmRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQUCYWIFAmRtCQECYkoGBQJkRQUCZEYFAmRvBQJkegUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJkegkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkegUDbmlsCQCcCgoFAmRFBQJkRgUCZHEFAmRyBQJkdQUCZHcFAmR0BQJkeQUCZHMFAmRJCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJkSgkCZG0CZEsCZEwCZE0CZE4CZE8CYWICZFACZFEEAmRjCQECYmUABAJkcAkA2QQBCQCRAwIFAmRjBQFxBAJkUgkAkQMCBQJkYwUBcgQCZFMJAJEDAgUCZGMFAXMEAmRUCQCRAwIFAmRjBQF2BAJkVQkAkQMCBQJkYwUBdwQCZGQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkYwUBdAQCZGUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkYwUBdQQCZHMJAJEDAgUCZGMFAXAEAmR0CAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRwCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmRwAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZFYJANgEAQkBC3ZhbHVlT3JFbHNlAgUCZE0JANkEAQIFV0FWRVMEAmRXCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmRPCQDZBAECBVdBVkVTAwMJAQIhPQIFAmRSBQJkVgYJAQIhPQIFAmRTBQJkVwkAAgECIkludmFsaWQgYW10IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4EAmR1AwUCZFAJAQJiTgEFAmRSCQBlAgkBAmJOAQUCZFIFAmRMBAJkdwMFAmRQCQECYk4BBQJkUwkAZQIJAQJiTgEFAmRTBQJkTgQCZFgJAQFEAgUCZEwFAmRkBAJkWQkBAUQCBQJkTgUCZGUEAmRaCQECYlECBQJkWQUCZFgEAmR2CQEBRAIFAmR1BQJkZAQCZHgJAQFEAgUCZHcFAmRlBAJlYQMJAAACBQJkdAAABAJkeQUBZQQCZWIFAWUEAmRnCQB2BgkAuQICBQJkWAUCZFkAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFIAgUCZGcFAWIJAQFIAgUCZFgFAmRkCQEBSAIFAmRZBQJkZQkBAmJRAgkAtwICBQJkeAUCZFkJALcCAgUCZHYFAmRYBQJlYgQCZHkJAQJiUQIFAmR4BQJkdgQCZWIJALwCAwkBAVIBCQC4AgIFAmR5BQJkWgUBZAUCZHkEAmVjCQEBRAIFAmRLBQFiAwMJAQIhPQIFAmR5BQFlCQC/AgIFAmViBQJlYwcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCZWICHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkApgMBBQJlYwQCZEIJAQFEAgUCZHQFAWIEAmVkCQC9AgQFAmRYCQECYlQDBQJkeAUCZHYFB0NFSUxJTkcFAWQFB0NFSUxJTkcEAmVlCQC9AgQFAmRZBQFkCQECYlQDBQJkeAUCZHYFBUZMT09SBQdDRUlMSU5HBAJlZgMJAL8CAgUCZWQFAmRZCQCUCgIFAmVlBQJkWQkAlAoCBQJkWAUCZWQEAmVnCAUCZWYCXzEEAmVoCAUCZWYCXzIEAmRnCQC9AgQFAmRCBQJlaAUCZHgFBUZMT09SCQCXCgUJAQFLAwUCZGcFAWIFBUZMT09SCQEBSwMFAmVnBQJkZAUHQ0VJTElORwkBAUsDBQJlaAUCZGUFB0NFSUxJTkcFAmR5BQJlYgQCZWkIBQJlYQJfMQQCZWoIBQJlYQJfMgQCZWsIBQJlYQJfMwQCZHoJAQFIAggFAmVhAl80BQFiBAJlbAkBAUgCCAUCZWECXzUFAWIDCQBnAgAABQJlaQkAAgECNkludmFsaWQgY2FsY3VsYXRpb25zLiBMUCBjYWxjdWxhdGVkIGlzIGxlc3MgdGhhbiB6ZXJvLgQCZW0DCQEBIQEFAmRRAAAFAmVpBAJlbgkAZQIFAmRMBQJlagQCZW8JAGUCBQJkTgUCZWsEAmVwCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmR6CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmR6CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAmFiBQJkbQkBAmJ5CgUCZWoFAmVrBQJlbQUCZHoFAmRLBQJlbAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZW4FAmVvBQNuaWwJAJ8KDQUCZWkFAmVtBQJkegUCZHUFAmR3BQJkdAUCZHAFAmRzBQJlcAUCZW4FAmVvBQJkTQUCZE8BAmVxAwJlcgJlcwJkdAQCZXQJAQFHAgUCZXIJALYCAQUCYnQEAmV1CQEBRwIFAmVzCQC2AgEFAmJ1BAJldgkAvAIDCQB2BgkAuQICBQJldAUCZXUAAAkAtgIBAAUAAQASBQRET1dOBQFnBQJkdAMJAAACBQJkdAUBZgUBZgUCZXYBAmV3AwJleAJleQJlegQCZUEJALgCAgkAtgIBCQECYk4BCQECYmoBBQJicgUCZXgEAmVCCQC4AgIJALYCAQkBAmJOAQkBAmJqAQUCYnMFAmV5BAJlQwkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJxCHF1YW50aXR5BQJlegQCZUQJAQJlcQMFAmVBBQJlQgUCZUMFAmVEAQJlRQMCZUYCZUcCZXoEAmVBCQBkAgkBAmJOAQkBAmJqAQUCYnIFAmVGBAJlQgkAZAIJAQJiTgEJAQJiagEFAmJzBQJlRwQCZUMJAGQCCAkBBXZhbHVlAQkA7AcBBQJicQhxdWFudGl0eQUCZXoEAmV2CQECZXEDCQC2AgEFAmVBCQC2AgEFAmVCCQC2AgEFAmVDBAJlSAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYWsFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhagkApgMBBQJldgUDbmlsCQCUCgIFAmVIBQJldgECZUkCAmVKAmV2AwkAwAICBQJldgUCZUoGCQECYVMBCQC5CQIJAMwIAgIidXBkYXRlZCBLTHAgbG93ZXIgdGhhbiBjdXJyZW50IEtMcAkAzAgCCQCmAwEFAmVKCQDMCAIJAKYDAQUCZXYFA25pbAIBIAECZUsBAmVMBAJlQQkBAmJOAQkBAmJqAQUCYnIEAmVCCQECYk4BCQECYmoBBQJicwQCZU0IBQJlTAZhbW91bnQEAmVOCQBuBAgFAmVMBmFtb3VudAgFAmVMBXByaWNlBQFiBQVGTE9PUgQCZU8DCQAAAggFAmVMCW9yZGVyVHlwZQUDQnV5CQCUCgIFAmVNCQEBLQEFAmVOCQCUCgIJAQEtAQUCZU0FAmVOBAJlRggFAmVPAl8xBAJlRwgFAmVPAl8yAwMDCQECYmMABgkAAAIFAmJwBQFtBgkAAAIFAmJwBQFuCQACAQIcRXhjaGFuZ2Ugb3BlcmF0aW9ucyBkaXNhYmxlZAMDCQECIT0CCAgFAmVMCWFzc2V0UGFpcgthbW91bnRBc3NldAUCYnIGCQECIT0CCAgFAmVMCWFzc2V0UGFpcgpwcmljZUFzc2V0BQJicwkAAgECE1dyb25nIG9yZGVyIGFzc2V0cy4EAmVQCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhagIBMAkBAmFVAQILaW52YWxpZCBrTHAEAmVRCQECZUUDBQJlRgUCZUcAAAQCZVIIBQJlUQJfMQQCZVMIBQJlUQJfMgQCZVQJAMACAgUCZVMFAmVQBAJlVQkAuQkCCQDMCAICBGtMcD0JAMwIAgkApgMBBQJlUAkAzAgCAggga0xwTmV3PQkAzAgCCQCmAwEFAmVTCQDMCAICFCBhbW91bnRBc3NldEJhbGFuY2U9CQDMCAIJAKQDAQUCZUEJAMwIAgITIHByaWNlQXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmVCCQDMCAICGSBhbW91bnRBc3NldEJhbGFuY2VEZWx0YT0JAMwIAgkApAMBBQJlRgkAzAgCAhggcHJpY2VBc3NldEJhbGFuY2VEZWx0YT0JAMwIAgkApAMBBQJlRwkAzAgCAgggaGVpZ2h0PQkAzAgCCQCkAwEFBmhlaWdodAUDbmlsAgAJAJQKAgUCZVQFAmVVAQJlVgECZVcDCQECIT0CCQCQAwEIBQJlVwhwYXltZW50cwABCQACAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEAmVYCQEFdmFsdWUBCQCRAwIIBQJlVwhwYXltZW50cwAABAJkbgkBBXZhbHVlAQgFAmVYB2Fzc2V0SWQEAmVZCAUCZVgGYW1vdW50BAJlYQkBAmRsBAkA2AQBCAUCZVcNdHJhbnNhY3Rpb25JZAkA2AQBBQJkbgUCZVkIBQJlVwZjYWxsZXIEAmRFCAUCZWECXzEEAmRGCAUCZWECXzIEAmRzCQENcGFyc2VJbnRWYWx1ZQEIBQJlYQJfOQQCZEkIBQJlYQNfMTADAwkBAmJjAAYJAAACBQJkcwUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCZHMJAJcKBQUCZEUFAmRGBQJlWQUCZG4FAmRJAQJlWgMCZVcCZEsCZFEDCQECIT0CCQCQAwEIBQJlVwhwYXltZW50cwACCQACAQIfZXhhY3RseSAyIHBheW1lbnRzIGFyZSBleHBlY3RlZAQCZmEJAQV2YWx1ZQEJAJEDAggFAmVXCHBheW1lbnRzAAAEAmZiCQEFdmFsdWUBCQCRAwIIBQJlVwhwYXltZW50cwABBAJmYwkBAmRKCQkA2AQBCAUCZVcNdHJhbnNhY3Rpb25JZAUCZEsIBQJmYQZhbW91bnQIBQJmYQdhc3NldElkCAUCZmIGYW1vdW50CAUCZmIHYXNzZXRJZAkApQgBCAUCZVcGY2FsbGVyBwUCZFEEAmRzCQENcGFyc2VJbnRWYWx1ZQEIBQJmYwJfOAMDAwkBAmJjAAYJAAACBQJkcwUBbAYJAAACBQJkcwUBbgkAAgEJAKwCAgIsUHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCZHMFAmZjAQJmZAECY2EEAmZlCQD8BwQFAmFWAgRlbWl0CQDMCAIFAmNhBQNuaWwFA25pbAMJAAACBQJmZQUCZmUEAmZmBAJiWAUCZmUDCQABAgUCYlgCB0FkZHJlc3MEAmZnBQJiWAkA/AcEBQJmZwIEZW1pdAkAzAgCBQJjYQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZmYFAmZmBQJjYQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZmgCAmNhAmFpBAJmaQMJAAACBQJhaQAAAAAJAGsDBQJjYQUCYWkFAWIJAJQKAgkAZQIFAmNhBQJmaQUCZmkBAmZqBAJmawJmbAJhYgJhYwQCZm0JAAACBQJhYwUEdW5pdAQCZm4JAQJiTgEJAQJiagEFAmJyBAJmbwkBAmJOAQkBAmJqAQUCYnMEAmZwAwkAAAIFAmZsBQJicgYDCQAAAgUCZmwFAmJzBwkBAmFTAQINaW52YWxpZCBhc3NldAQCZnEDBQJmbQkAlAoCBQJmbgUCZm8DBQJmcAkAlAoCCQBlAgUCZm4FAmZrBQJmbwkAlAoCBQJmbgkAZQIFAmZvBQJmawQCZnIIBQJmcQJfMQQCZnMIBQJmcQJfMgQCZnQDBQJmcAkAlAoCBQJmawAACQCUCgIAAAUCZmsEAmZ1CAUCZnQCXzEEAmZ2CAUCZnQCXzIEAmVNCAkBAmZoAgUCZnUFAmFYAl8xBAJlTggJAQJmaAIFAmZ2BQJhWAJfMQQCZncJAQJmaAIFAmZrBQJhWAQCZngIBQJmdwJfMQQCZmkIBQJmdwJfMgQCZnkJAGQCBQJmcgUCZU0EAmZ6CQBkAgUCZnMFAmVOBAJmQQkBAmJRAgkBAUQCBQJmegUCYnUJAQFEAgUCZnkFAmJ0BAJmQgkBAUgCBQJmQQUBYgQCZkMDBQJmcAUCZnIFAmZzBAJmRAkAtgIBBQJmQwQCZkUJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJicQkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJicQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmZGAwkAvwICBQJmRQUBZgYJAQJhUwECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZkYFAmZGBAJmRwkAtgIBBQJmeAQCZkgJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZkUJALgCAgkBCnNxcnRCaWdJbnQECQC3AgIFAWQJALoCAgkAuQICBQJmRwUBZAUCZkQAEgASBQRET1dOBQFkBQFkBQNuaWwEAmVwAwUCZm0FA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJmQgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJmQgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECCQClCAEJAQV2YWx1ZQEFAmFiCQDYBAEJAQV2YWx1ZQEFAmFjCQECYnkKBQJmdQUCZnYFAmZIBQJmQgAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmZJCQECYlECCQEBRAIFAmZzBQJidQkBAUQCBQJmcgUCYnQEAmZKCQEBSAIFAmZJBQFiBAJmSwQCZkwDBQJmcAkAlAoCBQJmdQUCZnIJAJQKAgUCZnYFAmZzBAJjYQgFAmZMAl8xBAJmTQgFAmZMAl8yBAJmTgkAoAMBCQC8AgMFAmZFCQC2AgEJAGkCBQJjYQACCQC2AgEFAmZNCQBrAwkAZQIFAmZIBQJmTgUBYgUCZk4JAJcKBQUCZkgFAmVwBQJmaQUCZksFAmZwCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmTwUCZlACZngCZmwCYWICYWMEAmZtCQAAAgUCYWMFBHVuaXQEAmRjCQECYmUABAJkZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRjBQF0BAJkZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRjBQF1BAJmUQkAzAgCAwkAAAIFAmZsBQJicQYJAQJhUwECEGludmFsaWQgbHAgYXNzZXQFA25pbAMJAAACBQJmUQUCZlEEAmZSAwkAAAIFAmZQBQJicgYDCQAAAgUCZlAFAmJzBwkBAmFTAQINaW52YWxpZCBhc3NldAQCZlMDBQJmUgkAtgIBCQECYk4BCQECYmoBBQJicgkAtgIBCQECYk4BCQECYmoBBQJicwQCZlQDBQJmUgUCZGQFAmRlBAJmVQkBAmJOAQkBAmJqAQUCYnIEAmZWCQECYk4BCQECYmoBBQJicwQCZlcDBQJmUgUCZlUFAmZWBAJmWAkAtgIBBQJmVwQCZkUJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJicQkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJicQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmZZCQC2AgEFAmZ4BAJmWgkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJmUwkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZlkFAWQFAmZFABIFAWgAAAASBQRET1dOBQFkBQNuaWwEAmdhCQECZmgCBQJmWgUCYVoEAmdiCAUCZ2ECXzEEAmZpCAUCZ2ECXzIEAmdjAwUCZlIJAJYKBAUCZ2IAAAkAZQIFAmZVBQJmWgUCZlYJAJYKBAAABQJnYgUCZlUJAGUCBQJmVgUCZloEAmdkCAUCZ2MCXzEEAmdlCAUCZ2MCXzIEAmdmCAUCZ2MCXzMEAmdnCAUCZ2MCXzQEAmZBCQECYlECCQEBRAIFAmdnBQJidQkBAUQCBQJnZgUCYnQEAmZCCQEBSAIFAmZBBQFiBAJlcAMFAmZtBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAgkApQgBCQEFdmFsdWUBBQJhYgkA2AQBCQEFdmFsdWUBBQJhYwkBAmJKBgUCZ2QFAmdlBQJmeAUCZkIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZkIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZkIFA25pbAQCZkkJAQJiUQIJAQFEAgUCZlYFAmJ1CQEBRAIFAmZVBQJidAQCZkoJAQFIAgUCZkkFAWIEAmZLBAJnaAkAaAIJAKADAQkAvAIDBQJmUwUCZlkFAmZFAAIJAGsDCQBlAgUCZ2IFAmdoBQFiBQJnaAkAlwoFBQJnYgUCZXAFAmZpBQJmSwUCZlIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmdpAAQCYlgJAKIIAQkBAVUAAwkAAQIFAmJYAgZTdHJpbmcEAmdqBQJiWAkA2QQBBQJnagMJAAECBQJiWAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJnawAEAmJYCQCiCAEJAQFWAAMJAAECBQJiWAIGU3RyaW5nBAJnagUCYlgJANkEAQUCZ2oDCQABAgUCYlgCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZ2wBAmVXBAJiWAkBAmdpAAMJAAECBQJiWAIKQnl0ZVZlY3RvcgQCZ20FAmJYCQAAAggFAmVXD2NhbGxlclB1YmxpY0tleQUCZ20DCQABAgUCYlgCBFVuaXQJAAACCAUCZVcGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmduAQJlVwQCZ28JAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQCYlgJAQJnaQADCQABAgUCYlgCCkJ5dGVWZWN0b3IEAmdtBQJiWAMJAAACCAUCZVcPY2FsbGVyUHVibGljS2V5BQJnbQYFAmdvAwkAAQIFAmJYAgRVbml0AwkAAAIIBQJlVwZjYWxsZXIFBHRoaXMGBQJnbwkAAgECC01hdGNoIGVycm9yHgJlVwEJcmViYWxhbmNlAAkAzggCCQECY0cBCQECYU8CBQR0aGlzCQECYWUACQECY0cBCQECYU8CBQR0aGlzCQECYWYAAmVXASFjYWxjdWxhdGVBbW91bnRPdXRGb3JTd2FwUkVBRE9OTFkDAmdwAmdxAmdyBAJncwMJAAACBQJncQcEAmd0CQECYU8CBQR0aGlzCQECYWYABAJndQkBAmFPAgUEdGhpcwkBAmFlAAkAlAoCBQJndAUCZ3UEAmd0CQECYU8CBQR0aGlzCQECYWUABAJndQkBAmFPAgUEdGhpcwkBAmFmAAkAlAoCBQJndAUCZ3UEAmd0CAUCZ3MCXzEEAmd1CAUCZ3MCXzIEAmd2CQECYk4BBQJndQQCZ3cJAQJiTgEFAmd0BAJneAkAawMFAmd3BQJncAkAZAIFAmd2BQJncAQCZ3kJALkCAgkAtgIBBQJndgkAtgIBBQJndwQCZ3oJALkCAgkAtwICCQC3AgIJALYCAQkBAmJOAQUCZ3UJALYCAQUCZ3AJALYCAQUCZ3IJALgCAgkAtgIBCQECYk4BBQJndAkAtgIBBQJneAQCZ0EDCQDAAgIFAmd6BQJneQYJAAIBAhRuZXcgSyBpcyBmZXdlciBlcnJvcgMJAAACBQJnQQUCZ0EJAJQKAgUDbmlsBQJneAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlVwEmY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcEFuZFNlbmRUb2tlbnMFAmdwAmdxAmdCAmdDAmdyBAJnRAoAAmFZCQD8BwQFAmFWAhdnZXRTd2FwQ29udHJhY3RSRUFET05MWQUDbmlsBQNuaWwDCQABAgUCYVkCBlN0cmluZwUCYVkJAAIBCQCsAgIJAAMBBQJhWQIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBAJmUQkAzAgCAwkAZwIICQEFdmFsdWUBCQCRAwIIBQJlVwhwYXltZW50cwAABmFtb3VudAUCZ3AGCQECYVMBAgxXcm9uZyBhbW91bnQJAMwIAgMJAAACCAUCZVcGY2FsbGVyCQERQGV4dHJOYXRpdmUoMTA2MikBBQJnRAYJAQJhUwECEVBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUCZlEFAmZRBAJlWAkBBXZhbHVlAQkAkQMCCAUCZVcIcGF5bWVudHMAAAQCZ3UJAQJiagEIBQJlWAdhc3NldElkBAJndAMJAAACBQJncQcJAQJhTwIFBHRoaXMJAQJhZgAJAQJhTwIFBHRoaXMJAQJhZQAEAmd2CQBlAgkBAmJOAQUCZ3UICQEFdmFsdWUBCQCRAwIIBQJlVwhwYXltZW50cwAABmFtb3VudAQCZ3cJAQJiTgEFAmd0BAJneAkAawMFAmd3BQJncAkAZAIFAmd2BQJncAQCZ3kJALkCAgkAtgIBBQJndgkAtgIBBQJndwQCZ3oJALkCAgkAtwICCQC2AgEJAQJiTgEFAmd1CQC2AgEFAmdyCQC4AgIJALYCAQkBAmJOAQUCZ3QJALYCAQUCZ3gEAmdBAwkAwAICBQJnegUCZ3kGCQACAQIUbmV3IEsgaXMgZmV3ZXIgZXJyb3IDCQAAAgUCZ0EFAmdBBAJnRQMJAGcCBQJneAUCZ0IGCQACAQIsRXhjaGFuZ2UgcmVzdWx0IGlzIGZld2VyIGNvaW5zIHRoYW4gZXhwZWN0ZWQDCQAAAgUCZ0UFAmdFBAJnRgQCYlgJAQJjdQEFAmd0AwkAAQIFAmJYAjAoQm9vbGVhbiwgSW50LCBJbnQsIFN0cmluZywgU3RyaW5nLCBJbnQsIFN0cmluZykEAmNIBQJiWAUCY0gJAAIBAhJlcnJvciBsZWFzZSBjb25maWcEAmdHCQECY08CBQJndAUCZ3gDCQAAAgUCZ0cFAmdHCQCUCgIJAM4IAgUCZ0cJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ0MFAmd4CQECYmgBBQJndAUDbmlsBQJneAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlVwEKc2V0TWFuYWdlcgECZ0gEAmdJCQECZ24BBQJlVwMJAAACBQJnSQUCZ0kEAmdKCQDZBAEFAmdIAwkAAAIFAmdKBQJnSgkAzAgCCQELU3RyaW5nRW50cnkCCQEBVgAFAmdIBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVcBDmNvbmZpcm1NYW5hZ2VyAAQCZ0sJAQJnawAEAmdMAwkBCWlzRGVmaW5lZAEFAmdLBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJnTAUCZ0wEAmdNAwkAAAIIBQJlVw9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmdLBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJnTQUCZ00JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVUACQDYBAEJAQV2YWx1ZQEFAmdLCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFWAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVXAQNwdXQCAmRLAmdOAwkAZgIAAAUCZEsJAAIBAiBJbnZhbGlkIHNsaXBwYWdlVG9sZXJhbmNlIHBhc3NlZAQCZmMJAQJlWgMFAmVXBQJkSwYEAmVtCAUCZmMCXzIEAmRwCAUCZmMCXzcEAmRJCAUCZmMCXzkEAmVuCAUCZmMDXzEwBAJlbwgFAmZjA18xMQQCZ08IBQJmYwNfMTIEAmdQCAUCZmMDXzEzBAJmYQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZVcIcGF5bWVudHMAAAZhbW91bnQEAmZiCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJlVwhwYXltZW50cwABBmFtb3VudAQCZUQJAQJldwMFAmZhBQJmYgkAtgIBAAADCQAAAgUCZUQFAmVEBAJmZQkA/AcEBQJhVgIEZW1pdAkAzAgCBQJlbQUDbmlsBQNuaWwDCQAAAgUCZmUFAmZlBAJmZgQCYlgFAmZlAwkAAQIFAmJYAgdBZGRyZXNzBAJmZwUCYlgJAPwHBAUCZmcCBGVtaXQJAMwIAgUCZW0FA25pbAUDbmlsBQR1bml0AwkAAAIFAmZmBQJmZgQCZ1EDCQBmAgUCZW4AAAkA/AcEBQJieAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdPBQJlbgUDbmlsBQNuaWwDCQAAAgUCZ1EFAmdRBAJnUgMJAGYCBQJlbwAACQD8BwQFAmJ4AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ1AFAmVvBQNuaWwFA25pbAMJAAACBQJnUgUCZ1IEAmdTAwUCZ04EAmdUCQD8BwQFAmJ3AgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkcAUCZW0FA25pbAMJAAACBQJnVAUCZ1QFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZVcGY2FsbGVyBQJlbQUCZHAFA25pbAQCZ1UJAQJlRQMAAAAAAAADCQAAAgUCZ1UFAmdVBAJldggFAmdVAl8yBAJnVggFAmdVAl8xBAJnVwkBAmVJAgUCZUQFAmV2AwkAAAIFAmdXBQJnVwQCZ1gJAPwHBAUEdGhpcwIJcmViYWxhbmNlBQNuaWwFA25pbAMJAAACBQJnWAUCZ1gJAM4IAgkAzggCBQJkSQUCZ1MFAmdWCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVXAQpwdXRGb3JGcmVlAQJnWQMJAGYCAAAFAmdZCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmZjCQECZVoDBQJlVwUCZ1kHBAJkSQgFAmZjAl85BAJmYQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZVcIcGF5bWVudHMAAAZhbW91bnQEAmZiCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJlVwhwYXltZW50cwABBmFtb3VudAQCZUQJAQJldwMFAmZhBQJmYgkAtgIBAAADCQAAAgUCZUQFAmVEBAJnWgkBAmVFAwAAAAAAAAQCZ1YIBQJnWgJfMQQCZXYIBQJnWgJfMgQCZ1cJAQJlSQIFAmVEBQJldgMJAAACBQJnVwUCZ1cJAM4IAgUCZEkFAmdWCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVXAQlwdXRPbmVUa24CAmhhAmhiBAJoYwoAAmFZCQD8BwQFAmFWAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVkCB0Jvb2xlYW4FAmFZCQACAQkArAICCQADAQUCYVkCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmhkAwMDCQECYmMABgkAAAIFAmJwBQFsBgkAAAIFAmJwBQFuBgUCaGMEAmZRCQDMCAIDAwkBASEBBQJoZAYJAQJnbAEFAmVXBgkBAmFTAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZVcIcGF5bWVudHMAAQYJAQJhUwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZRBQJmUQQCaGUJAJEDAggFAmVXCHBheW1lbnRzAAAEAmZsCAUCaGUHYXNzZXRJZAQCZmsIBQJoZQZhbW91bnQEAmVEAwkAAAIFAmZsBQJicgkBAmV3AwkAtgIBBQJmawkAtgIBAAAJALYCAQAAAwkAAAIFAmZsBQJicwkBAmV3AwkAtgIBAAAJALYCAQUCZmsJALYCAQAACQECYVMBAh5wYXltZW50IGFzc2V0IGlzIG5vdCBzdXBwb3J0ZWQDCQAAAgUCZUQFAmVEBAJhYggFAmVXBmNhbGxlcgQCYWMIBQJlVw10cmFuc2FjdGlvbklkBAJoZgkBAmZqBAUCZmsFAmZsBQJhYgUCYWMDCQAAAgUCaGYFAmhmBAJmcAgFAmhmAl81BAJoZwgFAmhmAl80BAJmaQgFAmhmAl8zBAJlcAgFAmhmAl8yBAJoaAgFAmhmAl8xBAJoaQMDCQBmAgUCaGEAAAkAZgIFAmhhBQJoaAcJAQJhUwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaGEFA25pbAIABQJoaAQCZmUJAQJmZAEFAmhpAwkAAAIFAmZlBQJmZQQCZ1MDBQJoYgQCaGoJAPwHBAUCYncCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJxBQJoaQUDbmlsAwkAAAIFAmhqBQJoagUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJlVwZjYWxsZXIFAmhpBQJicQUDbmlsBAJoawMJAGYCBQJmaQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFXBQJmaQUCZmwFA25pbAUDbmlsBAJobAMJAAACBQR0aGlzBQJhVwkAlAoCAAAAAAMFAmZwCQCUCgIJAQEtAQUCZmkAAAkAlAoCAAAJAQEtAQUCZmkEAmVGCAUCaGwCXzEEAmVHCAUCaGwCXzIEAmhtCQECZUUDBQJlRgUCZUcAAAQCZ1YIBQJobQJfMQQCZXYIBQJobQJfMgQCZVAJAQV2YWx1ZQEJAKIIAQUCYWoEAmdXCQECZUkCBQJlRAUCZXYDCQAAAgUCZ1cFAmdXBAJnWAkA/AcEBQR0aGlzAglyZWJhbGFuY2UFA25pbAUDbmlsAwkAAAIFAmdYBQJnWAkAlAoCCQDOCAIJAM4IAgkAzggCBQJlcAUCZ1MFAmhrBQJnVgUCaGkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVcBEXB1dE9uZVRrblJFQURPTkxZAgJmbAJmawQCaG4JAQJmagQFAmZrCQECYmgBBQJmbAUEdW5pdAUEdW5pdAQCaGgIBQJobgJfMQQCZXAIBQJobgJfMgQCZmkIBQJobgJfMwQCaGcIBQJobgJfNAQCZnAIBQJobgJfNQkAlAoCBQNuaWwJAJUKAwUCaGgFAmZpBQJoZwJlVwEJZ2V0T25lVGtuAgJobwJoYQQCaGMKAAJhWQkA/AcEBQJhVgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFZAgdCb29sZWFuBQJhWQkAAgEJAKwCAgkAAwEFAmFZAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJocAMDCQECYmMABgkAAAIFAmJwBQFuBgUCaGMEAmZRCQDMCAIDAwkBASEBBQJocAYJAQJnbAEFAmVXBgkBAmFTAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZVcIcGF5bWVudHMAAQYJAQJhUwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZRBQJmUQQCZlAJAQJiaAEFAmhvBAJoZQkAkQMCCAUCZVcIcGF5bWVudHMAAAQCZmwIBQJoZQdhc3NldElkBAJmeAgFAmhlBmFtb3VudAQCZUQJAQJldwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZUQFAmVEBAJhYggFAmVXBmNhbGxlcgQCYWMIBQJlVw10cmFuc2FjdGlvbklkBAJocQkBAmZPBQUCZlAFAmZ4BQJmbAUCYWIFAmFjAwkAAAIFAmhxBQJocQQCZlIIBQJocQJfNQQCaGcIBQJocQJfNAQCZmkIBQJocQJfMwQCZXAIBQJocQJfMgQCaHIIBQJocQJfMQQCY2EDAwkAZgIFAmhhAAAJAGYCBQJoYQUCaHIHCQECYVMBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhhBQNuaWwCAAUCaHIEAmdGBAJiWAkBAmN1AQUCaG8DCQABAgUCYlgCMChCb29sZWFuLCBJbnQsIEludCwgU3RyaW5nLCBTdHJpbmcsIEludCwgU3RyaW5nKQQCY0gFAmJYBQJjSAkAAgECEmVycm9yIGxlYXNlIGNvbmZpZwQCaHMJAPwHBAUCYVYCBGJ1cm4JAMwIAgUCZngFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZmwFAmZ4BQNuaWwDCQAAAgUCaHMFAmhzBAJnRwkBAmNPAgUCaG8FAmNhAwkAAAIFAmdHBQJnRwQCaHQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmNhBQJmUAUDbmlsBAJoawMJAGYCBQJmaQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFXBQJmaQUCZlAFA25pbAUDbmlsBAJodQQCaHYDCQAAAgUEdGhpcwUCYVcAAAUCZmkDBQJmUgkAlAoCCQEBLQEJAGQCBQJjYQUCaHYAAAkAlAoCAAAJAQEtAQkAZAIFAmNhBQJodgQCZUYIBQJodQJfMQQCZUcIBQJodQJfMgQCaHcJAQJlRQMFAmVGBQJlRwAABAJnVggFAmh3Al8xBAJldggFAmh3Al8yBAJnVwkBAmVJAgUCZUQFAmV2AwkAAAIFAmdXBQJnVwkAlAoCCQDOCAIJAM4IAgkAzggCCQDOCAIFAmVwBQJnRwUCaHQFAmhrBQJnVgUCY2EJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVcBEWdldE9uZVRrblJFQURPTkxZAgJmUAJmeAQCaHgJAQJmTwUJAQJiaAEFAmZQBQJmeAUCYnEFBHVuaXQFBHVuaXQEAmhyCAUCaHgCXzEEAmVwCAUCaHgCXzIEAmZpCAUCaHgCXzMEAmhnCAUCaHgCXzQEAmZSCAUCaHgCXzUJAJQKAgUDbmlsCQCVCgMFAmhyBQJmaQUCaGcCZVcBE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmh5AmhvAmhhBAJoYwoAAmFZCQD8BwQFAmFWAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVkCB0Jvb2xlYW4FAmFZCQACAQkArAICCQADAQUCYVkCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmhwAwMJAQJiYwAGCQAAAgUCYnAFAW4GBQJoYwQCZlEJAMwIAgMDCQEBIQEFAmhwBgkBAmdsAQUCZVcGCQECYVMBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJlVwhwYXltZW50cwAABgkBAmFTAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZlEFAmZRBAJmUAkBAmJoAQUCaG8EAmFiCAUCZVcGY2FsbGVyBAJhYwgFAmVXDXRyYW5zYWN0aW9uSWQEAmVECQECZXcDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVEBQJlRAQCaHoJAPwHBAUCYncCB3Vuc3Rha2UJAMwIAgkA2AQBBQJicQkAzAgCBQJoeQUDbmlsBQNuaWwDCQAAAgUCaHoFAmh6BAJoQQkBAmZPBQUCZlAFAmh5BQJicQUCYWIFAmFjAwkAAAIFAmhBBQJoQQQCZlIIBQJoQQJfNQQCaGcIBQJoQQJfNAQCZmkIBQJoQQJfMwQCZXAIBQJoQQJfMgQCaHIIBQJoQQJfMQQCY2EDAwkAZgIFAmhhAAAJAGYCBQJoYQUCaHIHCQECYVMBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhhBQNuaWwCAAUCaHIEAmhzCQD8BwQFAmFWAgRidXJuCQDMCAIFAmh5BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJxBQJoeQUDbmlsAwkAAAIFAmhzBQJocwQCZ0cJAQJjTwIFAmhvBQJjYQMJAAACBQJnRwUCZ0cEAmh0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJlVwZjYWxsZXIFAmNhBQJmUAUDbmlsBAJoawMJAGYCBQJmaQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFXBQJmaQUCZlAFA25pbAUDbmlsBAJoQgQCaHYDCQAAAgUEdGhpcwUCYVcAAAUCZmkDBQJmUgkAlAoCCQEBLQEJAGQCBQJjYQUCaHYAAAkAlAoCAAAJAQEtAQkAZAIFAmNhBQJodgQCZUYIBQJoQgJfMQQCZUcIBQJoQgJfMgQCaEMJAQJlRQMFAmVGBQJlRwAABAJnVggFAmhDAl8xBAJldggFAmhDAl8yBAJnVwkBAmVJAgUCZUQFAmV2AwkAAAIFAmdXBQJnVwkAlAoCCQDOCAIJAM4IAgkAzggCCQDOCAIFAmVwBQJnRwUCaHQFAmhrBQJnVgUCY2EJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVcBA2dldAAEAmVhCQECZVYBBQJlVwQCaEQIBQJlYQJfMQQCZEYIBQJlYQJfMgQCZVkIBQJlYQJfMwQCZG4IBQJlYQJfNAQCZEkIBQJlYQJfNQQCZUQJAQJldwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZUQFAmVEBAJoRQkA/AcEBQJhVgIEYnVybgkAzAgCBQJlWQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkbgUCZVkFA25pbAMJAAACBQJoRQUCaEUEAmhGCQECZUUDCQEBLQEFAmhECQEBLQEFAmRGAAAEAmdWCAUCaEYCXzEEAmV2CAUCaEYCXzIEAmdXCQECZUkCBQJlRAUCZXYDCQAAAgUCZ1cFAmdXCQDOCAIFAmRJBQJnVgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlVwEJZ2V0Tm9MZXNzAgJoRwJoSAQCZWEJAQJlVgEFAmVXBAJkRQgFAmVhAl8xBAJkRggFAmVhAl8yBAJlWQgFAmVhAl8zBAJkbggFAmVhAl80BAJkSQgFAmVhAl81AwkAZgIFAmhHBQJkRQkAAgEJAKwCAgkArAICCQCsAgICHG5vTGVzc1RoZW5BbXRBc3NldCBmYWlsZWQ6ICAJAKQDAQUCZEUCAyA8IAkApAMBBQJoRwMJAGYCBQJoSAUCZEYJAAIBCQCsAgIJAKwCAgkArAICAh1ub0xlc3NUaGVuUHJpY2VBc3NldCBmYWlsZWQ6IAkApAMBBQJkRgIDIDwgCQCkAwEFAmhIBAJlRAkBAmV3AwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlRAUCZUQEAmhFCQD8BwQFAmFWAgRidXJuCQDMCAIFAmVZBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRuBQJlWQUDbmlsAwkAAAIFAmhFBQJoRQQCaEkJAQJlRQMJAQEtAQUCZEUJAQEtAQUCZEYAAAQCZ1YIBQJoSQJfMQQCZXYIBQJoSQJfMgQCZ1cJAQJlSQIFAmVEBQJldgMJAAACBQJnVwUCZ1cJAM4IAgUCZEkFAmdWCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVXAQ11bnN0YWtlQW5kR2V0AQJjYQQCaEoDCQECIT0CCQCQAwEIBQJlVwhwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJoSgUCaEoEAmRjCQECYmUABAJkcAkA2QQBCQCRAwIFAmRjBQFxBAJlRAkBAmV3AwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlRAUCZUQEAmh6CQD8BwQFAmJ3Agd1bnN0YWtlCQDMCAIJANgEAQUCZHAJAMwIAgUCY2EFA25pbAUDbmlsAwkAAAIFAmh6BQJoegQCZWEJAQJkbAQJANgEAQgFAmVXDXRyYW5zYWN0aW9uSWQJANgEAQUCZHAFAmNhCAUCZVcGY2FsbGVyBAJkRQgFAmVhAl8xBAJkRggFAmVhAl8yBAJkcwkBDXBhcnNlSW50VmFsdWUBCAUCZWECXzkEAmRJCAUCZWEDXzEwBAJoSwMDCQECYmMABgkAAAIFAmRzBQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJkcwYDCQAAAgUCaEsFAmhLBAJoRQkA/AcEBQJhVgIEYnVybgkAzAgCBQJjYQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkcAUCY2EFA25pbAMJAAACBQJoRQUCaEUEAmhMCQECZUUDCQEBLQEFAmRFCQEBLQEFAmRGAAAEAmdWCAUCaEwCXzEEAmV2CAUCaEwCXzIEAmdXCQECZUkCBQJlRAUCZXYDCQAAAgUCZ1cFAmdXCQDOCAIFAmRJBQJnVgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlVwETdW5zdGFrZUFuZEdldE5vTGVzcwMCaHkCaE0CaEgEAmhwAwkBAmJjAAYJAAACBQJicAUBbgQCZlEJAMwIAgMJAQEhAQUCaHAGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZVcIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmUQUCZlEEAmVECQECZXcDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVEBQJlRAQCaHoJAPwHBAUCYncCB3Vuc3Rha2UJAMwIAgkA2AQBBQJicQkAzAgCBQJoeQUDbmlsBQNuaWwDCQAAAgUCaHoFAmh6BAJlYQkBAmRsBAkA2AQBCAUCZVcNdHJhbnNhY3Rpb25JZAkA2AQBBQJicQUCaHkIBQJlVwZjYWxsZXIEAmRFCAUCZWECXzEEAmRGCAUCZWECXzIEAmRJCAUCZWEDXzEwBAJoTgkAzAgCAwkAZwIFAmRFBQJoTQYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoTQUDbmlsAgAJAMwIAgMJAGcCBQJkRgUCaEgGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoSAUDbmlsAgAFA25pbAMJAAACBQJoTgUCaE4EAmhFCQD8BwQFAmFWAgRidXJuCQDMCAIFAmh5BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJxBQJoeQUDbmlsAwkAAAIFAmhFBQJoRQQCaE8JAQJlRQMJAQEtAQUCZEUJAQEtAQUCZEYAAAQCZ1YIBQJoTwJfMQQCZXYIBQJoTwJfMgQCZ1cJAQJlSQIFAmVEBQJldgMJAAACBQJnVwUCZ1cJAM4IAgUCZEkFAmdWCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVXAQhhY3RpdmF0ZQICaFACaFEDCQECIT0CCQClCAEIBQJlVwZjYWxsZXIJAKUIAQUCYVYJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWUABQJoUAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWYABQJoUQUDbmlsAgdzdWNjZXNzAmVXAQpyZWZyZXNoS0xwAAQCaFIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCYWsAAAQCaFMDCQBnAgkAZQIFBmhlaWdodAUCaFIFAmFuBQR1bml0CQECYVMBCQC5CQIJAMwIAgkApAMBBQJhbgkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCaFMFAmhTBAJlUAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYWoCATAJAQJhVQECC2ludmFsaWQga0xwBAJoVAkBAmVFAwAAAAAAAAQCaFUIBQJoVAJfMQQCZXYIBQJoVAJfMgQCZUgDCQECIT0CBQJlUAUCZXYFAmhVCQECYVMBAhJub3RoaW5nIHRvIHJlZnJlc2gJAJQKAgUCZUgJAKYDAQUCZXYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVcBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmJlAAJlVwEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYXIJAJQKAgUDbmlsCQECYk4BBQJhcgJlVwEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCY1cCY1gCZGIEAmRrCQECZGEDBQJjVwUCY1gFAmRiCQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCZGsAAAkAzAgCCQCmAwEJAJEDAgUCZGsAAQkAzAgCCQCmAwEJAJEDAgUCZGsAAgUDbmlsAmVXARR0b1gxOFdyYXBwZXJSRUFET05MWQIBRQFGCQCUCgIFA25pbAkApgMBCQEBRAIFAUUFAUYCZVcBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAUkBSgkAlAoCBQNuaWwJAQFIAgkApwMBBQFJBQFKAmVXAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJSAmJTCQCUCgIFA25pbAkApgMBCQECYlECCQCnAwEFAmJSCQCnAwEFAmJTAmVXASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCZG0CZEsCZEwCZE0CZE4CZE8CYWICZFACZFEJAJQKAgUDbmlsCQECZEoJBQJkbQUCZEsFAmRMBQJkTQUCZE4FAmRPBQJhYgUCZFAFAmRRAmVXASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCZG0CZG4CZG8CYWIEAmVhCQECZGwEBQJkbQUCZG4FAmRvCQERQGV4dHJOYXRpdmUoMTA2MikBBQJhYgkAlAoCBQNuaWwJAJwKCggFAmVhAl8xCAUCZWECXzIIBQJlYQJfMwgFAmVhAl80CAUCZWECXzUIBQJlYQJfNggFAmVhAl83CQCmAwEIBQJlYQJfOAgFAmVhAl85CAUCZWEDXzEwAmVXAQ1zdGF0c1JFQURPTkxZAAQCZGMJAQJiZQAEAmRwCQDZBAEJAJEDAgUCZGMFAXEEAmhWCQCRAwIFAmRjBQFyBAJoVwkAkQMCBQJkYwUBcwQCZFQJAJEDAgUCZGMFAXYEAmRVCQCRAwIFAmRjBQF3BAJkZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRjBQF0BAJkZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRjBQF1BAJoWAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkcAkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJkcAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmhZCQECYk4BBQJoVgQCaFoJAQJiTgEFAmhXBAJpYQMJAAACBQJoWAAACQDMCAIFAWUJAMwIAgUBZQkAzAgCBQFlBQNuaWwJAQJkYQMFAmhZBQJoWgUCaFgEAmR6AAAEAmliCQEBSAIJAJEDAgUCaWEAAQUBYgQCaWMJAQFIAgkAkQMCBQJpYQACBQFiBAJpZAkBBXZhbHVlAQkAmggCBQJhVgkBAmFGAQkApQgBBQR0aGlzCQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCaFkJAMwIAgkApAMBBQJoWgkAzAgCCQCkAwEFAmhYCQDMCAIJAKQDAQUCZHoJAMwIAgkApAMBBQJpYgkAzAgCCQCkAwEFAmljCQDMCAIJAKQDAQUCaWQFA25pbAUBagJlVwEgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkBAmRMBAJkYwkBAmJlAAQCZHAJANkEAQkAkQMCBQJkYwUBcQQCZFIJAJEDAgUCZGMFAXIEAmRxCQDZBAEFAmRSBAJkUwkAkQMCBQJkYwUBcwQCZHIJANkEAQUCZFMEAmRkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGMFAXQEAmRlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGMFAXUEAmRzCQCRAwIFAmRjBQFwBAJoWAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkcAkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJkcAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmhZCQECYk4BBQJkUgQCaFoJAQJiTgEFAmRTBAJjWQkBAUQCBQJoWQUCZGQEAmNaCQEBRAIFAmhaBQJkZQQCZHkDCQAAAgUCaFgAAAUBZQkBAmJRAgUCY1oFAmNZBAJkWAkBAUQCBQJkTAUCZGQEAmRZCQC8AgMFAmRYBQJkeQUBZAQCZE4JAQFIAgUCZFkFAmRlBAJmYwkBAmRKCQIAAKDCHgUCZEwFAmRxBQJkTgUCZHICAAYHBAJlaQgFAmZjAl8xBAJpZQgFAmZjAl8zBAJkdQgFAmZjAl80BAJkdwgFAmZjAl81BAJkdAgFAmZjAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJlaQkAzAgCCQCkAwEJAQFIAgUCZHkFAWIJAMwIAgkApAMBBQJkdQkAzAgCCQCkAwEFAmR3CQDMCAIJAKQDAQUCZHQJAMwIAgUCZHMJAMwIAgkApAMBBQJkTAkAzAgCCQCkAwEFAmROBQNuaWwFAWoCZVcBH2V2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkBAmROBAJkYwkBAmJlAAQCZHAJANkEAQkAkQMCBQJkYwUBcQQCZFIJAJEDAgUCZGMFAXIEAmRxCQDZBAEFAmRSBAJkUwkAkQMCBQJkYwUBcwQCZHIJANkEAQUCZFMEAmRkCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGMFAXQEAmRlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGMFAXUEAmRzCQCRAwIFAmRjBQFwBAJoWAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkcAkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJkcAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmlmCQECYk4BBQJkUgQCaWcJAQJiTgEFAmRTBAJpaAkBAUQCBQJpZgUCZGQEAmlpCQEBRAIFAmlnBQJkZQQCZHkDCQAAAgUCaFgAAAUBZQkBAmJRAgUCaWkFAmloBAJkWQkBAUQCBQJkTgUCZGUEAmRYCQC8AgMFAmRZBQFkBQJkeQQCZEwJAQFIAgUCZFgFAmRkBAJmYwkBAmRKCQIAAKDCHgUCZEwFAmRxBQJkTgUCZHICAAYHBAJlaQgFAmZjAl8xBAJpZQgFAmZjAl8zBAJkdQgFAmZjAl80BAJkdwgFAmZjAl81BAJkdAgFAmZjAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJlaQkAzAgCCQCkAwEJAQFIAgUCZHkFAWIJAMwIAgkApAMBBQJkdQkAzAgCCQCkAwEFAmR3CQDMCAIJAKQDAQUCZHQJAMwIAgUCZHMJAMwIAgkApAMBBQJkTAkAzAgCCQCkAwEFAmROBQNuaWwFAWoCZVcBE2V2YWx1YXRlR2V0UkVBRE9OTFkCAmlqAmlrBAJlYQkBAmRsBAIABQJpagUCaWsFBHRoaXMEAmRFCAUCZWECXzEEAmRGCAUCZWECXzIEAmR1CAUCZWECXzUEAmR3CAUCZWECXzYEAmR0CAUCZWECXzcEAmR6CAUCZWECXzgEAmRzCQENcGFyc2VJbnRWYWx1ZQEIBQJlYQJfOQkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmRFCQDMCAIJAKQDAQUCZEYJAMwIAgkApAMBBQJkdQkAzAgCCQCkAwEFAmR3CQDMCAIJAKQDAQUCZHQJAMwIAgkApgMBBQJkegkAzAgCCQCkAwEFAmRzBQNuaWwFAWoBAmlsAQJpbQAEAmluBAJiWAkBAmdpAAMJAAECBQJiWAIKQnl0ZVZlY3RvcgQCZ20FAmJYBQJnbQMJAAECBQJiWAIEVW5pdAgFAmlsD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJiWAUCaWwDCQABAgUCYlgCBU9yZGVyBAJlTAUCYlgEAmlvCQECYmQABAJpcAkBAmVLAQUCZUwEAmFLCAUCaXACXzEEAmFMCAUCaXACXzIEAmFNCQD0AwMIBQJlTAlib2R5Qnl0ZXMJAJEDAggFAmVMBnByb29mcwAACAUCZUwPc2VuZGVyUHVibGljS2V5BAJhTgkA9AMDCAUCZUwJYm9keUJ5dGVzCQCRAwIIBQJlTAZwcm9vZnMAAQUCaW8DAwMFAmFLBQJhTQcFAmFOBwYJAQJhSgQFAmFLBQJhTAUCYU0FAmFOAwkAAQIFAmJYAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZ2oFAmJYAwkA9AMDCAUCaWwJYm9keUJ5dGVzCQCRAwIIBQJpbAZwcm9vZnMAAAUCaW4GBAJpcQkA9gMBCQEFdmFsdWUBCAUCZ2oGc2NyaXB0BAJpcgkA2wQBCQEFdmFsdWUBCQCdCAIFAmFWCQECYUgABAJpcwkA8QcBBQR0aGlzAwkAAAIFAmlyBQJpcQkBAiE9AgUCaXMFAmlxBwkA9AMDCAUCaWwJYm9keUJ5dGVzCQCRAwIIBQJpbAZwcm9vZnMAAAUCaW4Trefl", "height": 2521028, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CwsE6yZQaXQSkrvLW1HPst8sYYUsdjfTx3N4Z5rsNEGT Next: 7RjAg7rL8259dTH8yJypLNPDY4cywphLdCsAaQvECTQr Diff:
OldNewDifferences
448448 }
449449
450450
451-func cO (ar,ca) = {
451+func cO (ar,cP) = {
452452 let bX = cu(ar)
453453 if ($isInstanceOf(bX, "(Boolean, Int, Int, String, String, Int, String)"))
454454 then {
455455 let cH = bX
456- let cP = cH
457- let cJ = cP._1
458- let cK = cP._2
459- let cx = cP._3
460- let cL = cP._4
461- let cM = cP._5
462- let ck = cP._6
463- let cN = cP._7
456+ let cQ = cH
457+ let cJ = cQ._1
458+ let cK = cQ._2
459+ let cx = cQ._3
460+ let cL = cQ._4
461+ let cM = cQ._5
462+ let ck = cQ._6
463+ let cN = cQ._7
464464 if (cJ)
465- then cj(ar, ca, cM, addressFromStringValue(cL), ck, addressFromStringValue(cN))
465+ then {
466+ let cR = max([0, ((bN(ar) - cP) - cx)])
467+ if ((cR == cR))
468+ then {
469+ let ch = fraction(cK, cR, 100)
470+ if ((ch == ch))
471+ then {
472+ let cS = max([0, (at(ar) - ch)])
473+ if ((cS == cS))
474+ then cj(ar, cS, cM, addressFromStringValue(cL), ck, addressFromStringValue(cN))
475+ else throw("Strict value is not equal to itself.")
476+ }
477+ else throw("Strict value is not equal to itself.")
478+ }
479+ else throw("Strict value is not equal to itself.")
480+ }
466481 else nil
467482 }
468- else aS((("[" + ar) + "] withdrawAssetWrapper() error"))
483+ else aS((("[" + ar) + "] getWithdrawAssetState() error"))
469484 }
470485
471486
472-func cQ (ar,ca) = {
473- let cR = {
474- let bX = bh(ar)
475- if ($isInstanceOf(bX, "ByteVector"))
476- then {
477- let cz = bX
478- assetBalance(this, cz)
479- }
480- else if ($isInstanceOf(bX, "Unit"))
481- then {
482- let cS = bX
483- wavesBalance(this).available
484- }
485- else throw("Match error")
486- }
487- if ((ca > cR))
488- then {
489- let cT = (ca - cR)
490- cO(ar, cT)
491- }
492- else nil
487+func cT (cU,cV,cW,cX) = {
488+ let cY = D(cW, cU)
489+ let cZ = D(cX, cV)
490+ bQ(cZ, cY)
493491 }
494492
495493
496-func cU (cV,cW,cX,cY) = {
497- let cZ = D(cX, cV)
498- let da = D(cY, cW)
499- bQ(da, cZ)
494+func da (cW,cX,db) = {
495+ let dc = be()
496+ let dd = parseIntValue(dc[t])
497+ let de = parseIntValue(dc[u])
498+ let df = cT(dd, de, cW, cX)
499+ let bS = D(cW, dd)
500+ let bR = D(cX, de)
501+ let dg = D(db, b)
502+ let dh = bQ(bS, dg)
503+ let di = bQ(bR, dg)
504+[df, dh, di]
500505 }
501506
502507
503-func db (cX,cY,dc) = {
504- let dd = be()
505- let de = parseIntValue(dd[t])
506- let df = parseIntValue(dd[u])
507- let dg = cU(de, df, cX, cY)
508- let bS = D(cX, de)
509- let bR = D(cY, df)
510- let dh = D(dc, b)
511- let di = bQ(bS, dh)
512- let dj = bQ(bR, dh)
513-[dg, di, dj]
508+func dj (cW,cX,db) = {
509+ let dk = da(cW, cX, db)
510+[H(dk[0], b), H(dk[1], b), H(dk[2], b)]
514511 }
515512
516513
517-func dk (cX,cY,dc) = {
518- let dl = db(cX, cY, dc)
519-[H(dl[0], b), H(dl[1], b), H(dl[2], b)]
520- }
521-
522-
523-func dm (dn,do,dp,ab) = {
524- let dd = be()
525- let dq = dd[q]
526- let dr = dd[r]
527- let ds = dd[s]
528- let cV = parseIntValue(dd[t])
529- let cW = parseIntValue(dd[u])
530- let dt = dd[p]
531- let du = valueOrErrorMessage(assetInfo(fromBase58String(dq)), (("Asset " + dq) + " doesn't exist")).quantity
532- if ((dq != do))
514+func dl (dm,dn,do,ab) = {
515+ let dc = be()
516+ let dp = dc[q]
517+ let dq = dc[r]
518+ let dr = dc[s]
519+ let cU = parseIntValue(dc[t])
520+ let cV = parseIntValue(dc[u])
521+ let ds = dc[p]
522+ let dt = valueOrErrorMessage(assetInfo(fromBase58String(dp)), (("Asset " + dp) + " doesn't exist")).quantity
523+ if ((dp != dn))
533524 then throw("Invalid asset passed.")
534525 else {
535- let dv = bN(dr)
536- let dw = D(dv, cV)
537- let dx = bN(ds)
538- let dy = D(dx, cW)
539- let dz = bQ(dy, dw)
540- let dA = H(dz, b)
541- let dB = D(dp, b)
542- let dC = D(du, b)
543- let dD = fraction(dw, dB, dC)
544- let dE = fraction(dy, dB, dC)
526+ let du = bN(dq)
527+ let dv = D(du, cU)
528+ let dw = bN(dr)
529+ let dx = D(dw, cV)
530+ let dy = bQ(dx, dv)
531+ let dz = H(dy, b)
532+ let dA = D(do, b)
533+ let dB = D(dt, b)
534+ let dC = fraction(dv, dA, dB)
535+ let dD = fraction(dx, dA, dB)
536+ let dE = K(dC, cU, FLOOR)
545537 let dF = K(dD, cV, FLOOR)
546- let dG = K(dE, cW, FLOOR)
547- let dH = cQ(dr, dF)
548- if ((dH == dH))
538+ let dG = cO(dq, dE)
539+ if ((dG == dG))
549540 then {
550- let dI = cQ(ds, dG)
551- if ((dI == dI))
541+ let dH = cO(dr, dF)
542+ if ((dH == dH))
552543 then {
553- let dJ = invoke(this, "rebalance", nil, nil)
554- if ((dJ == dJ))
555- then {
556- let dK = if ((dn == ""))
557- then nil
558- else ((dH ++ dI) ++ [ScriptTransfer(ab, dF, if ((dr == "WAVES"))
559- then unit
560- else fromBase58String(dr)), ScriptTransfer(ab, dG, if ((ds == "WAVES"))
561- then unit
562- else fromBase58String(ds)), StringEntry(ad(toString(ab), dn), bJ(dF, dG, dp, dA, height, lastBlock.timestamp)), IntegerEntry(W(), dA), IntegerEntry(X(height, lastBlock.timestamp), dA)])
563- $Tuple10(dF, dG, dr, ds, dv, dx, du, dz, dt, dK)
564- }
565- else throw("Strict value is not equal to itself.")
544+ let dI = if ((dm == ""))
545+ then nil
546+ else ((dG ++ dH) ++ [ScriptTransfer(ab, dE, if ((dq == "WAVES"))
547+ then unit
548+ else fromBase58String(dq)), ScriptTransfer(ab, dF, if ((dr == "WAVES"))
549+ then unit
550+ else fromBase58String(dr)), StringEntry(ad(toString(ab), dm), bJ(dE, dF, do, dz, height, lastBlock.timestamp)), IntegerEntry(W(), dz), IntegerEntry(X(height, lastBlock.timestamp), dz)])
551+ $Tuple10(dE, dF, dq, dr, du, dw, dt, dy, ds, dI)
566552 }
567553 else throw("Strict value is not equal to itself.")
568554 }
571557 }
572558
573559
574-func dL (dn,dM,dN,dO,dP,dQ,ab,dR,dS) = {
575- let dd = be()
576- let dq = fromBase58String(dd[q])
577- let dT = dd[r]
578- let dU = dd[s]
579- let dV = dd[v]
580- let dW = dd[w]
581- let de = parseIntValue(dd[t])
582- let df = parseIntValue(dd[u])
583- let dt = dd[p]
584- let du = valueOrErrorMessage(assetInfo(dq), (("Asset " + toBase58String(dq)) + " doesn't exist")).quantity
585- let dX = toBase58String(valueOrElse(dO, fromBase58String("WAVES")))
586- let dY = toBase58String(valueOrElse(dQ, fromBase58String("WAVES")))
587- if (if ((dT != dX))
560+func dJ (dm,dK,dL,dM,dN,dO,ab,dP,dQ) = {
561+ let dc = be()
562+ let dp = fromBase58String(dc[q])
563+ let dR = dc[r]
564+ let dS = dc[s]
565+ let dT = dc[v]
566+ let dU = dc[w]
567+ let dd = parseIntValue(dc[t])
568+ let de = parseIntValue(dc[u])
569+ let ds = dc[p]
570+ let dt = valueOrErrorMessage(assetInfo(dp), (("Asset " + toBase58String(dp)) + " doesn't exist")).quantity
571+ let dV = toBase58String(valueOrElse(dM, fromBase58String("WAVES")))
572+ let dW = toBase58String(valueOrElse(dO, fromBase58String("WAVES")))
573+ if (if ((dR != dV))
588574 then true
589- else (dU != dY))
575+ else (dS != dW))
590576 then throw("Invalid amt or price asset passed.")
591577 else {
592- let dv = if (dR)
593- then bN(dT)
594- else (bN(dT) - dN)
595- let dx = if (dR)
596- then bN(dU)
597- else (bN(dU) - dP)
598- let dZ = D(dN, de)
599- let ea = D(dP, df)
600- let eb = bQ(ea, dZ)
601- let dw = D(dv, de)
602- let dy = D(dx, df)
603- let ec = if ((du == 0))
578+ let du = if (dP)
579+ then bN(dR)
580+ else (bN(dR) - dL)
581+ let dw = if (dP)
582+ then bN(dS)
583+ else (bN(dS) - dN)
584+ let dX = D(dL, dd)
585+ let dY = D(dN, de)
586+ let dZ = bQ(dY, dX)
587+ let dv = D(du, dd)
588+ let dx = D(dw, de)
589+ let ea = if ((dt == 0))
604590 then {
605- let dz = e
606- let ed = e
607- let dh = pow((dZ * ea), 0, toBigInt(5), 1, 0, DOWN)
608- $Tuple5(H(dh, b), H(dZ, de), H(ea, df), bQ((dy + ea), (dw + dZ)), ed)
591+ let dy = e
592+ let eb = e
593+ let dg = pow((dX * dY), 0, toBigInt(5), 1, 0, DOWN)
594+ $Tuple5(H(dg, b), H(dX, dd), H(dY, de), bQ((dx + dY), (dv + dX)), eb)
609595 }
610596 else {
611- let dz = bQ(dy, dw)
612- let ed = fraction(R((dz - eb)), d, dz)
613- let ee = D(dM, b)
614- if (if ((dz != e))
615- then (ed > ee)
597+ let dy = bQ(dx, dv)
598+ let eb = fraction(R((dy - dZ)), d, dy)
599+ let ec = D(dK, b)
600+ if (if ((dy != e))
601+ then (eb > ec)
616602 else false)
617- then throw(((("Price slippage " + toString(ed)) + " exceeded the passed limit of ") + toString(ee)))
603+ then throw(((("Price slippage " + toString(eb)) + " exceeded the passed limit of ") + toString(ec)))
618604 else {
619- let dC = D(du, b)
620- let ef = fraction(dZ, bT(dy, dw, CEILING), d, CEILING)
621- let eg = fraction(ea, d, bT(dy, dw, FLOOR), CEILING)
622- let eh = if ((ef > ea))
623- then $Tuple2(eg, ea)
624- else $Tuple2(dZ, ef)
625- let ei = eh._1
626- let ej = eh._2
627- let dh = fraction(dC, ej, dy, FLOOR)
628- $Tuple5(K(dh, b, FLOOR), K(ei, de, CEILING), K(ej, df, CEILING), dz, ed)
605+ let dB = D(dt, b)
606+ let ed = fraction(dX, bT(dx, dv, CEILING), d, CEILING)
607+ let ee = fraction(dY, d, bT(dx, dv, FLOOR), CEILING)
608+ let ef = if ((ed > dY))
609+ then $Tuple2(ee, dY)
610+ else $Tuple2(dX, ed)
611+ let eg = ef._1
612+ let eh = ef._2
613+ let dg = fraction(dB, eh, dx, FLOOR)
614+ $Tuple5(K(dg, b, FLOOR), K(eg, dd, CEILING), K(eh, de, CEILING), dy, eb)
629615 }
630616 }
631- let ek = ec._1
632- let el = ec._2
633- let em = ec._3
634- let dA = H(ec._4, b)
635- let en = H(ec._5, b)
636- if ((0 >= ek))
617+ let ei = ea._1
618+ let ej = ea._2
619+ let ek = ea._3
620+ let dz = H(ea._4, b)
621+ let el = H(ea._5, b)
622+ if ((0 >= ei))
637623 then throw("Invalid calculations. LP calculated is less than zero.")
638624 else {
639- let eo = if (!(dS))
625+ let em = if (!(dQ))
640626 then 0
641- else ek
642- let ep = (dN - el)
643- let eq = (dP - em)
644- let er = [IntegerEntry(W(), dA), IntegerEntry(X(height, lastBlock.timestamp), dA), StringEntry(aa(ab, dn), by(el, em, eo, dA, dM, en, height, lastBlock.timestamp, ep, eq))]
645- $Tuple13(ek, eo, dA, dv, dx, du, dq, dt, er, ep, eq, dO, dQ)
627+ else ei
628+ let en = (dL - ej)
629+ let eo = (dN - ek)
630+ let ep = [IntegerEntry(W(), dz), IntegerEntry(X(height, lastBlock.timestamp), dz), StringEntry(aa(ab, dm), by(ej, ek, em, dz, dK, el, height, lastBlock.timestamp, en, eo))]
631+ $Tuple13(ei, em, dz, du, dw, dt, dp, ds, ep, en, eo, dM, dO)
646632 }
647633 }
648634 }
649635
650636
651-func es (et,eu,du) = {
652- let ev = G(et, toBigInt(bt))
653- let ew = G(eu, toBigInt(bu))
654- let ex = fraction(pow((ev * ew), 0, toBigInt(5), 1, 18, DOWN), g, du)
655- if ((du == f))
637+func eq (er,es,dt) = {
638+ let et = G(er, toBigInt(bt))
639+ let eu = G(es, toBigInt(bu))
640+ let ev = fraction(pow((et * eu), 0, toBigInt(5), 1, 18, DOWN), g, dt)
641+ if ((dt == f))
656642 then f
657- else ex
643+ else ev
658644 }
659645
660646
661-func ey (ez,eA,eB) = {
662- let eC = (toBigInt(bN(bj(br))) - ez)
663- let eD = (toBigInt(bN(bj(bs))) - eA)
664- let eE = (toBigInt(value(assetInfo(bq)).quantity) - eB)
665- let eF = es(eC, eD, eE)
666- eF
647+func ew (ex,ey,ez) = {
648+ let eA = (toBigInt(bN(bj(br))) - ex)
649+ let eB = (toBigInt(bN(bj(bs))) - ey)
650+ let eC = (toBigInt(value(assetInfo(bq)).quantity) - ez)
651+ let eD = eq(eA, eB, eC)
652+ eD
667653 }
668654
669655
670-func eG (eH,eI,eB) = {
671- let eC = (bN(bj(br)) + eH)
672- let eD = (bN(bj(bs)) + eI)
673- let eE = (value(assetInfo(bq)).quantity + eB)
674- let ex = es(toBigInt(eC), toBigInt(eD), toBigInt(eE))
675- let eJ = [IntegerEntry(ak, height), StringEntry(aj, toString(ex))]
676- $Tuple2(eJ, ex)
656+func eE (eF,eG,ez) = {
657+ let eA = (bN(bj(br)) + eF)
658+ let eB = (bN(bj(bs)) + eG)
659+ let eC = (value(assetInfo(bq)).quantity + ez)
660+ let ev = eq(toBigInt(eA), toBigInt(eB), toBigInt(eC))
661+ let eH = [IntegerEntry(ak, height), StringEntry(aj, toString(ev))]
662+ $Tuple2(eH, ev)
677663 }
678664
679665
680-func eK (eL,ex) = if ((ex >= eL))
666+func eI (eJ,ev) = if ((ev >= eJ))
681667 then true
682- else aS(makeString(["updated KLp lower than current KLp", toString(eL), toString(ex)], " "))
668+ else aS(makeString(["updated KLp lower than current KLp", toString(eJ), toString(ev)], " "))
683669
684670
685-func eM (eN) = {
686- let eC = bN(bj(br))
687- let eD = bN(bj(bs))
688- let eO = eN.amount
689- let eP = fraction(eN.amount, eN.price, b, FLOOR)
690- let eQ = if ((eN.orderType == Buy))
691- then $Tuple2(eO, -(eP))
692- else $Tuple2(-(eO), eP)
693- let eH = eQ._1
694- let eI = eQ._2
671+func eK (eL) = {
672+ let eA = bN(bj(br))
673+ let eB = bN(bj(bs))
674+ let eM = eL.amount
675+ let eN = fraction(eL.amount, eL.price, b, FLOOR)
676+ let eO = if ((eL.orderType == Buy))
677+ then $Tuple2(eM, -(eN))
678+ else $Tuple2(-(eM), eN)
679+ let eF = eO._1
680+ let eG = eO._2
695681 if (if (if (bc())
696682 then true
697683 else (bp == m))
698684 then true
699685 else (bp == n))
700686 then throw("Exchange operations disabled")
701- else if (if ((eN.assetPair.amountAsset != br))
687+ else if (if ((eL.assetPair.amountAsset != br))
702688 then true
703- else (eN.assetPair.priceAsset != bs))
689+ else (eL.assetPair.priceAsset != bs))
704690 then throw("Wrong order assets.")
705691 else {
706- let eR = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aU("invalid kLp"))
707- let eS = eG(eH, eI, 0)
708- let eT = eS._1
709- let eU = eS._2
710- let eV = (eU >= eR)
711- let eW = makeString(["kLp=", toString(eR), " kLpNew=", toString(eU), " amountAssetBalance=", toString(eC), " priceAssetBalance=", toString(eD), " amountAssetBalanceDelta=", toString(eH), " priceAssetBalanceDelta=", toString(eI), " height=", toString(height)], "")
712- $Tuple2(eV, eW)
692+ let eP = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aU("invalid kLp"))
693+ let eQ = eE(eF, eG, 0)
694+ let eR = eQ._1
695+ let eS = eQ._2
696+ let eT = (eS >= eP)
697+ let eU = makeString(["kLp=", toString(eP), " kLpNew=", toString(eS), " amountAssetBalance=", toString(eA), " priceAssetBalance=", toString(eB), " amountAssetBalanceDelta=", toString(eF), " priceAssetBalanceDelta=", toString(eG), " height=", toString(height)], "")
698+ $Tuple2(eT, eU)
713699 }
714700 }
715701
716702
717-func eX (eY) = if ((size(eY.payments) != 1))
703+func eV (eW) = if ((size(eW.payments) != 1))
718704 then throw("exactly 1 payment is expected")
719705 else {
720- let eZ = value(eY.payments[0])
721- let do = value(eZ.assetId)
722- let fa = eZ.amount
723- let ec = dm(toBase58String(eY.transactionId), toBase58String(do), fa, eY.caller)
724- let dF = ec._1
725- let dG = ec._2
726- let dt = parseIntValue(ec._9)
727- let dK = ec._10
706+ let eX = value(eW.payments[0])
707+ let dn = value(eX.assetId)
708+ let eY = eX.amount
709+ let ea = dl(toBase58String(eW.transactionId), toBase58String(dn), eY, eW.caller)
710+ let dE = ea._1
711+ let dF = ea._2
712+ let ds = parseIntValue(ea._9)
713+ let dI = ea._10
728714 if (if (bc())
729715 then true
730- else (dt == n))
731- then throw(("Get operation is blocked by admin. Status = " + toString(dt)))
732- else $Tuple5(dF, dG, fa, do, dK)
716+ else (ds == n))
717+ then throw(("Get operation is blocked by admin. Status = " + toString(ds)))
718+ else $Tuple5(dE, dF, eY, dn, dI)
733719 }
734720
735721
736-func fb (eY,dM,dS) = if ((size(eY.payments) != 2))
722+func eZ (eW,dK,dQ) = if ((size(eW.payments) != 2))
737723 then throw("exactly 2 payments are expected")
738724 else {
739- let fc = value(eY.payments[0])
740- let fd = value(eY.payments[1])
741- let fe = dL(toBase58String(eY.transactionId), dM, fc.amount, fc.assetId, fd.amount, fd.assetId, toString(eY.caller), false, dS)
742- let dt = parseIntValue(fe._8)
725+ let fa = value(eW.payments[0])
726+ let fb = value(eW.payments[1])
727+ let fc = dJ(toBase58String(eW.transactionId), dK, fa.amount, fa.assetId, fb.amount, fb.assetId, toString(eW.caller), false, dQ)
728+ let ds = parseIntValue(fc._8)
743729 if (if (if (bc())
744730 then true
745- else (dt == l))
731+ else (ds == l))
746732 then true
747- else (dt == n))
748- then throw(("Put operation is blocked by admin. Status = " + toString(dt)))
749- else fe
733+ else (ds == n))
734+ then throw(("Put operation is blocked by admin. Status = " + toString(ds)))
735+ else fc
750736 }
751737
752738
753-func ff (ca) = {
754- let fg = invoke(aV, "emit", [ca], nil)
755- if ((fg == fg))
739+func fd (ca) = {
740+ let fe = invoke(aV, "emit", [ca], nil)
741+ if ((fe == fe))
756742 then {
757- let fh = {
758- let bX = fg
743+ let ff = {
744+ let bX = fe
759745 if ($isInstanceOf(bX, "Address"))
760746 then {
761- let fi = bX
762- invoke(fi, "emit", [ca], nil)
747+ let fg = bX
748+ invoke(fg, "emit", [ca], nil)
763749 }
764750 else unit
765751 }
766- if ((fh == fh))
752+ if ((ff == ff))
767753 then ca
768754 else throw("Strict value is not equal to itself.")
769755 }
771757 }
772758
773759
774-func fj (ca,ai) = {
775- let fk = if ((ai == 0))
760+func fh (ca,ai) = {
761+ let fi = if ((ai == 0))
776762 then 0
777763 else fraction(ca, ai, b)
778- $Tuple2((ca - fk), fk)
764+ $Tuple2((ca - fi), fi)
779765 }
780766
781767
782-func fl (fm,fn,ab,ac) = {
783- let fo = (ac == unit)
784- let fp = bN(bj(br))
785- let fq = bN(bj(bs))
786- let fr = if ((fn == br))
768+func fj (fk,fl,ab,ac) = {
769+ let fm = (ac == unit)
770+ let fn = bN(bj(br))
771+ let fo = bN(bj(bs))
772+ let fp = if ((fl == br))
787773 then true
788- else if ((fn == bs))
774+ else if ((fl == bs))
789775 then false
790776 else aS("invalid asset")
791- let fs = if (fo)
792- then $Tuple2(fp, fq)
793- else if (fr)
794- then $Tuple2((fp - fm), fq)
795- else $Tuple2(fp, (fq - fm))
796- let ft = fs._1
797- let fu = fs._2
798- let fv = if (fr)
799- then $Tuple2(fm, 0)
800- else $Tuple2(0, fm)
801- let fw = fv._1
802- let fx = fv._2
803- let eO = fj(fw, aX)._1
804- let eP = fj(fx, aX)._1
805- let fy = fj(fm, aX)
806- let fz = fy._1
807- let fk = fy._2
808- let fA = (ft + eO)
809- let fB = (fu + eP)
810- let fC = bQ(D(fB, bu), D(fA, bt))
811- let fD = H(fC, b)
812- let fE = if (fr)
813- then ft
814- else fu
815- let fF = toBigInt(fE)
816- let fG = toBigInt(valueOrErrorMessage(assetInfo(bq), (("asset " + toBase58String(bq)) + " doesn't exist")).quantity)
817- let fH = if ((fG > f))
777+ let fq = if (fm)
778+ then $Tuple2(fn, fo)
779+ else if (fp)
780+ then $Tuple2((fn - fk), fo)
781+ else $Tuple2(fn, (fo - fk))
782+ let fr = fq._1
783+ let fs = fq._2
784+ let ft = if (fp)
785+ then $Tuple2(fk, 0)
786+ else $Tuple2(0, fk)
787+ let fu = ft._1
788+ let fv = ft._2
789+ let eM = fh(fu, aX)._1
790+ let eN = fh(fv, aX)._1
791+ let fw = fh(fk, aX)
792+ let fx = fw._1
793+ let fi = fw._2
794+ let fy = (fr + eM)
795+ let fz = (fs + eN)
796+ let fA = bQ(D(fz, bu), D(fy, bt))
797+ let fB = H(fA, b)
798+ let fC = if (fp)
799+ then fr
800+ else fs
801+ let fD = toBigInt(fC)
802+ let fE = toBigInt(valueOrErrorMessage(assetInfo(bq), (("asset " + toBase58String(bq)) + " doesn't exist")).quantity)
803+ let fF = if ((fE > f))
818804 then true
819805 else aS("initial deposit requires all coins")
820- if ((fH == fH))
806+ if ((fF == fF))
821807 then {
822- let fI = toBigInt(fz)
823- let fJ = max([0, toInt(((fG * (sqrtBigInt((d + ((fI * d) / fF)), 18, 18, DOWN) - d)) / d))])
824- let er = if (fo)
808+ let fG = toBigInt(fx)
809+ let fH = max([0, toInt(((fE * (sqrtBigInt((d + ((fG * d) / fD)), 18, 18, DOWN) - d)) / d))])
810+ let ep = if (fm)
825811 then nil
826- else [IntegerEntry(W(), fD), IntegerEntry(X(height, lastBlock.timestamp), fD), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), by(fw, fx, fJ, fD, 0, 0, height, lastBlock.timestamp, 0, 0))]
827- let fK = bQ(D(fu, bu), D(ft, bt))
828- let fL = H(fK, b)
829- let fM = {
830- let fN = if (fr)
831- then $Tuple2(fw, ft)
832- else $Tuple2(fx, fu)
833- let ca = fN._1
834- let fO = fN._2
835- let fP = toInt(fraction(fG, toBigInt((ca / 2)), toBigInt(fO)))
836- fraction((fJ - fP), b, fP)
812+ else [IntegerEntry(W(), fB), IntegerEntry(X(height, lastBlock.timestamp), fB), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), by(fu, fv, fH, fB, 0, 0, height, lastBlock.timestamp, 0, 0))]
813+ let fI = bQ(D(fs, bu), D(fr, bt))
814+ let fJ = H(fI, b)
815+ let fK = {
816+ let fL = if (fp)
817+ then $Tuple2(fu, fr)
818+ else $Tuple2(fv, fs)
819+ let ca = fL._1
820+ let fM = fL._2
821+ let fN = toInt(fraction(fE, toBigInt((ca / 2)), toBigInt(fM)))
822+ fraction((fH - fN), b, fN)
837823 }
838- $Tuple5(fJ, er, fk, fM, fr)
824+ $Tuple5(fH, ep, fi, fK, fp)
839825 }
840826 else throw("Strict value is not equal to itself.")
841827 }
842828
843829
844-func fQ (fR,fz,fn,ab,ac) = {
845- let fo = (ac == unit)
846- let dd = be()
847- let de = parseIntValue(dd[t])
848- let df = parseIntValue(dd[u])
849- let fS = [if ((fn == bq))
830+func fO (fP,fx,fl,ab,ac) = {
831+ let fm = (ac == unit)
832+ let dc = be()
833+ let dd = parseIntValue(dc[t])
834+ let de = parseIntValue(dc[u])
835+ let fQ = [if ((fl == bq))
850836 then true
851837 else aS("invalid lp asset")]
852- if ((fS == fS))
838+ if ((fQ == fQ))
853839 then {
854- let fT = if ((fR == br))
840+ let fR = if ((fP == br))
855841 then true
856- else if ((fR == bs))
842+ else if ((fP == bs))
857843 then false
858844 else aS("invalid asset")
859- let fU = if (fT)
845+ let fS = if (fR)
860846 then toBigInt(bN(bj(br)))
861847 else toBigInt(bN(bj(bs)))
862- let fV = if (fT)
863- then de
864- else df
865- let fW = bN(bj(br))
866- let fX = bN(bj(bs))
867- let fY = if (fT)
868- then fW
869- else fX
870- let fZ = toBigInt(fY)
871- let fG = toBigInt(valueOrErrorMessage(assetInfo(bq), (("asset " + toBase58String(bq)) + " doesn't exist")).quantity)
872- let ga = toBigInt(fz)
873- let gb = max([0, toInt(((fU * (d - pow((d - ((ga * d) / fG)), 18, h, 0, 18, DOWN))) / d))])
874- let gc = fj(gb, aZ)
848+ let fT = if (fR)
849+ then dd
850+ else de
851+ let fU = bN(bj(br))
852+ let fV = bN(bj(bs))
853+ let fW = if (fR)
854+ then fU
855+ else fV
856+ let fX = toBigInt(fW)
857+ let fE = toBigInt(valueOrErrorMessage(assetInfo(bq), (("asset " + toBase58String(bq)) + " doesn't exist")).quantity)
858+ let fY = toBigInt(fx)
859+ let fZ = max([0, toInt(((fS * (d - pow((d - ((fY * d) / fE)), 18, h, 0, 18, DOWN))) / d))])
860+ let ga = fh(fZ, aZ)
861+ let gb = ga._1
862+ let fi = ga._2
863+ let gc = if (fR)
864+ then $Tuple4(gb, 0, (fU - fZ), fV)
865+ else $Tuple4(0, gb, fU, (fV - fZ))
875866 let gd = gc._1
876- let fk = gc._2
877- let ge = if (fT)
878- then $Tuple4(gd, 0, (fW - gb), fX)
879- else $Tuple4(0, gd, fW, (fX - gb))
880- let gf = ge._1
881- let gg = ge._2
882- let gh = ge._3
883- let gi = ge._4
884- let fC = bQ(D(gi, bu), D(gh, bt))
885- let fD = H(fC, b)
886- let er = if (fo)
867+ let ge = gc._2
868+ let gf = gc._3
869+ let gg = gc._4
870+ let fA = bQ(D(gg, bu), D(gf, bt))
871+ let fB = H(fA, b)
872+ let ep = if (fm)
887873 then nil
888- else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bJ(gf, gg, fz, fD, height, lastBlock.timestamp)), IntegerEntry(W(), fD), IntegerEntry(X(height, lastBlock.timestamp), fD)]
889- let fK = bQ(D(fX, bu), D(fW, bt))
890- let fL = H(fK, b)
891- let fM = {
892- let gj = (toInt(fraction(fU, ga, fG)) * 2)
893- fraction((gd - gj), b, gj)
874+ else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bJ(gd, ge, fx, fB, height, lastBlock.timestamp)), IntegerEntry(W(), fB), IntegerEntry(X(height, lastBlock.timestamp), fB)]
875+ let fI = bQ(D(fV, bu), D(fU, bt))
876+ let fJ = H(fI, b)
877+ let fK = {
878+ let gh = (toInt(fraction(fS, fY, fE)) * 2)
879+ fraction((gb - gh), b, gh)
894880 }
895- $Tuple5(gd, er, fk, fM, fT)
881+ $Tuple5(gb, ep, fi, fK, fR)
896882 }
897883 else throw("Strict value is not equal to itself.")
898884 }
899885
900886
901-func gk () = {
887+func gi () = {
902888 let bX = getString(U())
903889 if ($isInstanceOf(bX, "String"))
904890 then {
905- let gl = bX
906- fromBase58String(gl)
891+ let gj = bX
892+ fromBase58String(gj)
907893 }
908894 else if ($isInstanceOf(bX, "Unit"))
909895 then unit
911897 }
912898
913899
914-func gm () = {
900+func gk () = {
915901 let bX = getString(V())
916902 if ($isInstanceOf(bX, "String"))
917903 then {
918- let gl = bX
919- fromBase58String(gl)
904+ let gj = bX
905+ fromBase58String(gj)
920906 }
921907 else if ($isInstanceOf(bX, "Unit"))
922908 then unit
924910 }
925911
926912
927-func gn (eY) = {
928- let bX = gk()
913+func gl (eW) = {
914+ let bX = gi()
929915 if ($isInstanceOf(bX, "ByteVector"))
930916 then {
931- let go = bX
932- (eY.callerPublicKey == go)
917+ let gm = bX
918+ (eW.callerPublicKey == gm)
933919 }
934920 else if ($isInstanceOf(bX, "Unit"))
935- then (eY.caller == this)
921+ then (eW.caller == this)
936922 else throw("Match error")
937923 }
938924
939925
940-func gp (eY) = {
941- let gq = throw("Permission denied")
942- let bX = gk()
926+func gn (eW) = {
927+ let go = throw("Permission denied")
928+ let bX = gi()
943929 if ($isInstanceOf(bX, "ByteVector"))
944930 then {
945- let go = bX
946- if ((eY.callerPublicKey == go))
931+ let gm = bX
932+ if ((eW.callerPublicKey == gm))
947933 then true
948- else gq
934+ else go
949935 }
950936 else if ($isInstanceOf(bX, "Unit"))
951- then if ((eY.caller == this))
937+ then if ((eW.caller == this))
952938 then true
953- else gq
939+ else go
954940 else throw("Match error")
955941 }
956942
957943
958-@Callable(eY)
944+@Callable(eW)
959945 func rebalance () = (cG(aO(this, ae())) ++ cG(aO(this, af())))
960946
961947
962948
963-@Callable(eY)
964-func calculateAmountOutForSwapREADONLY (gr,gs,gt) = {
965- let gu = if ((gs == false))
949+@Callable(eW)
950+func calculateAmountOutForSwapREADONLY (gp,gq,gr) = {
951+ let gs = if ((gq == false))
966952 then {
967- let gv = aO(this, af())
968- let gw = aO(this, ae())
969- $Tuple2(gv, gw)
953+ let gt = aO(this, af())
954+ let gu = aO(this, ae())
955+ $Tuple2(gt, gu)
970956 }
971957 else {
972- let gv = aO(this, ae())
973- let gw = aO(this, af())
974- $Tuple2(gv, gw)
958+ let gt = aO(this, ae())
959+ let gu = aO(this, af())
960+ $Tuple2(gt, gu)
975961 }
976- let gv = gu._1
977- let gw = gu._2
978- let gx = bN(gw)
979- let gy = bN(gv)
980- let gz = fraction(gy, gr, (gx + gr))
981- let gA = (toBigInt(gx) * toBigInt(gy))
982- let gB = (((toBigInt(bN(gw)) + toBigInt(gr)) + toBigInt(gt)) * (toBigInt(bN(gv)) - toBigInt(gz)))
983- let gC = if ((gB >= gA))
962+ let gt = gs._1
963+ let gu = gs._2
964+ let gv = bN(gu)
965+ let gw = bN(gt)
966+ let gx = fraction(gw, gp, (gv + gp))
967+ let gy = (toBigInt(gv) * toBigInt(gw))
968+ let gz = (((toBigInt(bN(gu)) + toBigInt(gp)) + toBigInt(gr)) * (toBigInt(bN(gt)) - toBigInt(gx)))
969+ let gA = if ((gz >= gy))
984970 then true
985971 else throw("new K is fewer error")
986- if ((gC == gC))
987- then $Tuple2(nil, gz)
972+ if ((gA == gA))
973+ then $Tuple2(nil, gx)
988974 else throw("Strict value is not equal to itself.")
989975 }
990976
991977
992978
993-@Callable(eY)
994-func calculateAmountOutForSwapAndSendTokens (gr,gs,gD,gE,gt) = {
995- let gF = {
979+@Callable(eW)
980+func calculateAmountOutForSwapAndSendTokens (gp,gq,gB,gC,gr) = {
981+ let gD = {
996982 let aY = invoke(aV, "getSwapContractREADONLY", nil, nil)
997983 if ($isInstanceOf(aY, "String"))
998984 then aY
999985 else throw(($getType(aY) + " couldn't be cast to String"))
1000986 }
1001- let fS = [if ((value(eY.payments[0]).amount >= gr))
987+ let fQ = [if ((value(eW.payments[0]).amount >= gp))
1002988 then true
1003- else aS("Wrong amount"), if ((eY.caller == addressFromStringValue(gF)))
989+ else aS("Wrong amount"), if ((eW.caller == addressFromStringValue(gD)))
1004990 then true
1005991 else aS("Permission denied")]
1006- if ((fS == fS))
992+ if ((fQ == fQ))
1007993 then {
1008- let eZ = value(eY.payments[0])
1009- let gw = bj(eZ.assetId)
1010- let gv = if ((gs == false))
994+ let eX = value(eW.payments[0])
995+ let gu = bj(eX.assetId)
996+ let gt = if ((gq == false))
1011997 then aO(this, af())
1012998 else aO(this, ae())
1013- let gx = (bN(gw) - value(eY.payments[0]).amount)
1014- let gy = bN(gv)
1015- let gz = fraction(gy, gr, (gx + gr))
1016- let gA = (toBigInt(gx) * toBigInt(gy))
1017- let gB = ((toBigInt(bN(gw)) + toBigInt(gt)) * (toBigInt(bN(gv)) - toBigInt(gz)))
1018- let gC = if ((gB >= gA))
999+ let gv = (bN(gu) - value(eW.payments[0]).amount)
1000+ let gw = bN(gt)
1001+ let gx = fraction(gw, gp, (gv + gp))
1002+ let gy = (toBigInt(gv) * toBigInt(gw))
1003+ let gz = ((toBigInt(bN(gu)) + toBigInt(gr)) * (toBigInt(bN(gt)) - toBigInt(gx)))
1004+ let gA = if ((gz >= gy))
10191005 then true
10201006 else throw("new K is fewer error")
1021- if ((gC == gC))
1007+ if ((gA == gA))
10221008 then {
1023- let gG = if ((gz >= gD))
1009+ let gE = if ((gx >= gB))
10241010 then true
10251011 else throw("Exchange result is fewer coins than expected")
1026- if ((gG == gG))
1012+ if ((gE == gE))
10271013 then {
1028- let gH = {
1029- let bX = cu(gv)
1014+ let gF = {
1015+ let bX = cu(gt)
10301016 if ($isInstanceOf(bX, "(Boolean, Int, Int, String, String, Int, String)"))
10311017 then {
10321018 let cH = bX
10341020 }
10351021 else throw("error lease config")
10361022 }
1037- let gI = cQ(gv, gz)
1038- if ((gI == gI))
1039- then {
1040- let dJ = invoke(this, "rebalance", nil, nil)
1041- if ((dJ == dJ))
1042- then $Tuple2((gI ++ [ScriptTransfer(addressFromStringValue(gE), gz, bh(gv))]), gz)
1043- else throw("Strict value is not equal to itself.")
1044- }
1023+ let gG = cO(gt, gx)
1024+ if ((gG == gG))
1025+ then $Tuple2((gG ++ [ScriptTransfer(addressFromStringValue(gC), gx, bh(gt))]), gx)
10451026 else throw("Strict value is not equal to itself.")
10461027 }
10471028 else throw("Strict value is not equal to itself.")
10531034
10541035
10551036
1056-@Callable(eY)
1057-func setManager (gJ) = {
1058- let gK = gp(eY)
1059- if ((gK == gK))
1037+@Callable(eW)
1038+func setManager (gH) = {
1039+ let gI = gn(eW)
1040+ if ((gI == gI))
10601041 then {
1061- let gL = fromBase58String(gJ)
1062- if ((gL == gL))
1063- then [StringEntry(V(), gJ)]
1042+ let gJ = fromBase58String(gH)
1043+ if ((gJ == gJ))
1044+ then [StringEntry(V(), gH)]
10641045 else throw("Strict value is not equal to itself.")
10651046 }
10661047 else throw("Strict value is not equal to itself.")
10681049
10691050
10701051
1071-@Callable(eY)
1052+@Callable(eW)
10721053 func confirmManager () = {
1073- let gM = gm()
1074- let gN = if (isDefined(gM))
1054+ let gK = gk()
1055+ let gL = if (isDefined(gK))
10751056 then true
10761057 else throw("No pending manager")
1077- if ((gN == gN))
1058+ if ((gL == gL))
10781059 then {
1079- let gO = if ((eY.callerPublicKey == value(gM)))
1060+ let gM = if ((eW.callerPublicKey == value(gK)))
10801061 then true
10811062 else throw("You are not pending manager")
1082- if ((gO == gO))
1083- then [StringEntry(U(), toBase58String(value(gM))), DeleteEntry(V())]
1063+ if ((gM == gM))
1064+ then [StringEntry(U(), toBase58String(value(gK))), DeleteEntry(V())]
10841065 else throw("Strict value is not equal to itself.")
10851066 }
10861067 else throw("Strict value is not equal to itself.")
10881069
10891070
10901071
1091-@Callable(eY)
1092-func put (dM,gP) = if ((0 > dM))
1072+@Callable(eW)
1073+func put (dK,gN) = if ((0 > dK))
10931074 then throw("Invalid slippageTolerance passed")
10941075 else {
1095- let fe = fb(eY, dM, true)
1096- let eo = fe._2
1097- let dq = fe._7
1098- let dK = fe._9
1099- let ep = fe._10
1100- let eq = fe._11
1101- let gQ = fe._12
1102- let gR = fe._13
1103- let fc = toBigInt(value(eY.payments[0]).amount)
1104- let fd = toBigInt(value(eY.payments[1]).amount)
1105- let eF = ey(fc, fd, toBigInt(0))
1106- if ((eF == eF))
1076+ let fc = eZ(eW, dK, true)
1077+ let em = fc._2
1078+ let dp = fc._7
1079+ let dI = fc._9
1080+ let en = fc._10
1081+ let eo = fc._11
1082+ let gO = fc._12
1083+ let gP = fc._13
1084+ let fa = toBigInt(value(eW.payments[0]).amount)
1085+ let fb = toBigInt(value(eW.payments[1]).amount)
1086+ let eD = ew(fa, fb, toBigInt(0))
1087+ if ((eD == eD))
11071088 then {
1108- let fg = invoke(aV, "emit", [eo], nil)
1109- if ((fg == fg))
1089+ let fe = invoke(aV, "emit", [em], nil)
1090+ if ((fe == fe))
11101091 then {
1111- let fh = {
1112- let bX = fg
1092+ let ff = {
1093+ let bX = fe
11131094 if ($isInstanceOf(bX, "Address"))
11141095 then {
1115- let fi = bX
1116- invoke(fi, "emit", [eo], nil)
1096+ let fg = bX
1097+ invoke(fg, "emit", [em], nil)
11171098 }
11181099 else unit
11191100 }
1120- if ((fh == fh))
1101+ if ((ff == ff))
11211102 then {
1122- let gS = if ((ep > 0))
1123- then invoke(bx, "put", nil, [AttachedPayment(gQ, ep)])
1103+ let gQ = if ((en > 0))
1104+ then invoke(bx, "put", nil, [AttachedPayment(gO, en)])
11241105 else nil
1125- if ((gS == gS))
1106+ if ((gQ == gQ))
11261107 then {
1127- let gT = if ((eq > 0))
1128- then invoke(bx, "put", nil, [AttachedPayment(gR, eq)])
1108+ let gR = if ((eo > 0))
1109+ then invoke(bx, "put", nil, [AttachedPayment(gP, eo)])
11291110 else nil
1130- if ((gT == gT))
1111+ if ((gR == gR))
11311112 then {
1132- let gU = if (gP)
1113+ let gS = if (gN)
11331114 then {
1134- let gV = invoke(bw, "stake", nil, [AttachedPayment(dq, eo)])
1135- if ((gV == gV))
1115+ let gT = invoke(bw, "stake", nil, [AttachedPayment(dp, em)])
1116+ if ((gT == gT))
11361117 then nil
11371118 else throw("Strict value is not equal to itself.")
11381119 }
1139- else [ScriptTransfer(eY.caller, eo, dq)]
1140- let gW = eG(0, 0, 0)
1141- if ((gW == gW))
1120+ else [ScriptTransfer(eW.caller, em, dp)]
1121+ let gU = eE(0, 0, 0)
1122+ if ((gU == gU))
11421123 then {
1143- let ex = gW._2
1144- let gX = gW._1
1145- let gY = eK(eF, ex)
1146- if ((gY == gY))
1124+ let ev = gU._2
1125+ let gV = gU._1
1126+ let gW = eI(eD, ev)
1127+ if ((gW == gW))
11471128 then {
1148- let dJ = invoke(this, "rebalance", nil, nil)
1149- if ((dJ == dJ))
1150- then ((dK ++ gU) ++ gX)
1129+ let gX = invoke(this, "rebalance", nil, nil)
1130+ if ((gX == gX))
1131+ then ((dI ++ gS) ++ gV)
11511132 else throw("Strict value is not equal to itself.")
11521133 }
11531134 else throw("Strict value is not equal to itself.")
11671148
11681149
11691150
1170-@Callable(eY)
1171-func putForFree (gZ) = if ((0 > gZ))
1151+@Callable(eW)
1152+func putForFree (gY) = if ((0 > gY))
11721153 then throw("Invalid value passed")
11731154 else {
1174- let fe = fb(eY, gZ, false)
1175- let dK = fe._9
1176- let fc = toBigInt(value(eY.payments[0]).amount)
1177- let fd = toBigInt(value(eY.payments[1]).amount)
1178- let eF = ey(fc, fd, toBigInt(0))
1179- if ((eF == eF))
1155+ let fc = eZ(eW, gY, false)
1156+ let dI = fc._9
1157+ let fa = toBigInt(value(eW.payments[0]).amount)
1158+ let fb = toBigInt(value(eW.payments[1]).amount)
1159+ let eD = ew(fa, fb, toBigInt(0))
1160+ if ((eD == eD))
11801161 then {
1181- let ha = eG(0, 0, 0)
1182- let gX = ha._1
1183- let ex = ha._2
1184- let gY = eK(eF, ex)
1185- if ((gY == gY))
1186- then (dK ++ gX)
1162+ let gZ = eE(0, 0, 0)
1163+ let gV = gZ._1
1164+ let ev = gZ._2
1165+ let gW = eI(eD, ev)
1166+ if ((gW == gW))
1167+ then (dI ++ gV)
11871168 else throw("Strict value is not equal to itself.")
11881169 }
11891170 else throw("Strict value is not equal to itself.")
11911172
11921173
11931174
1194-@Callable(eY)
1195-func putOneTkn (hb,hc) = {
1196- let hd = {
1175+@Callable(eW)
1176+func putOneTkn (ha,hb) = {
1177+ let hc = {
11971178 let aY = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11981179 if ($isInstanceOf(aY, "Boolean"))
11991180 then aY
12001181 else throw(($getType(aY) + " couldn't be cast to Boolean"))
12011182 }
1202- let he = if (if (if (bc())
1183+ let hd = if (if (if (bc())
12031184 then true
12041185 else (bp == l))
12051186 then true
12061187 else (bp == n))
12071188 then true
1208- else hd
1209- let fS = [if (if (!(he))
1189+ else hc
1190+ let fQ = [if (if (!(hd))
12101191 then true
1211- else gn(eY))
1192+ else gl(eW))
12121193 then true
1213- else aS("put operation is blocked by admin"), if ((size(eY.payments) == 1))
1194+ else aS("put operation is blocked by admin"), if ((size(eW.payments) == 1))
12141195 then true
12151196 else aS("exactly 1 payment are expected")]
1216- if ((fS == fS))
1197+ if ((fQ == fQ))
12171198 then {
1218- let hf = eY.payments[0]
1219- let fn = hf.assetId
1220- let fm = hf.amount
1221- let eF = if ((fn == br))
1222- then ey(toBigInt(fm), toBigInt(0), toBigInt(0))
1223- else if ((fn == bs))
1224- then ey(toBigInt(0), toBigInt(fm), toBigInt(0))
1199+ let he = eW.payments[0]
1200+ let fl = he.assetId
1201+ let fk = he.amount
1202+ let eD = if ((fl == br))
1203+ then ew(toBigInt(fk), toBigInt(0), toBigInt(0))
1204+ else if ((fl == bs))
1205+ then ew(toBigInt(0), toBigInt(fk), toBigInt(0))
12251206 else aS("payment asset is not supported")
1226- if ((eF == eF))
1207+ if ((eD == eD))
12271208 then {
1228- let ab = eY.caller
1229- let ac = eY.transactionId
1230- let hg = fl(fm, fn, ab, ac)
1231- if ((hg == hg))
1209+ let ab = eW.caller
1210+ let ac = eW.transactionId
1211+ let hf = fj(fk, fl, ab, ac)
1212+ if ((hf == hf))
12321213 then {
1233- let fr = hg._5
1234- let hh = hg._4
1235- let fk = hg._3
1236- let er = hg._2
1237- let hi = hg._1
1238- let hj = if (if ((hb > 0))
1239- then (hb > hi)
1214+ let fp = hf._5
1215+ let hg = hf._4
1216+ let fi = hf._3
1217+ let ep = hf._2
1218+ let hh = hf._1
1219+ let hi = if (if ((ha > 0))
1220+ then (ha > hh)
12401221 else false)
1241- then aS(makeString(["amount to receive is less than ", toString(hb)], ""))
1242- else hi
1243- let fg = ff(hj)
1244- if ((fg == fg))
1222+ then aS(makeString(["amount to receive is less than ", toString(ha)], ""))
1223+ else hh
1224+ let fe = fd(hi)
1225+ if ((fe == fe))
12451226 then {
1246- let gU = if (hc)
1227+ let gS = if (hb)
12471228 then {
1248- let hk = invoke(bw, "stake", nil, [AttachedPayment(bq, hj)])
1249- if ((hk == hk))
1229+ let hj = invoke(bw, "stake", nil, [AttachedPayment(bq, hi)])
1230+ if ((hj == hj))
12501231 then nil
12511232 else throw("Strict value is not equal to itself.")
12521233 }
1253- else [ScriptTransfer(eY.caller, hj, bq)]
1254- let hl = if ((fk > 0))
1255- then [ScriptTransfer(aW, fk, fn)]
1234+ else [ScriptTransfer(eW.caller, hi, bq)]
1235+ let hk = if ((fi > 0))
1236+ then [ScriptTransfer(aW, fi, fl)]
12561237 else nil
1257- let hm = if ((this == aW))
1238+ let hl = if ((this == aW))
12581239 then $Tuple2(0, 0)
1259- else if (fr)
1260- then $Tuple2(-(fk), 0)
1261- else $Tuple2(0, -(fk))
1262- let eH = hm._1
1263- let eI = hm._2
1264- let hn = eG(eH, eI, 0)
1265- let gX = hn._1
1266- let ex = hn._2
1267- let eR = value(getString(aj))
1268- let gY = eK(eF, ex)
1269- if ((gY == gY))
1240+ else if (fp)
1241+ then $Tuple2(-(fi), 0)
1242+ else $Tuple2(0, -(fi))
1243+ let eF = hl._1
1244+ let eG = hl._2
1245+ let hm = eE(eF, eG, 0)
1246+ let gV = hm._1
1247+ let ev = hm._2
1248+ let eP = value(getString(aj))
1249+ let gW = eI(eD, ev)
1250+ if ((gW == gW))
12701251 then {
1271- let dJ = invoke(this, "rebalance", nil, nil)
1272- if ((dJ == dJ))
1273- then $Tuple2((((er ++ gU) ++ hl) ++ gX), hj)
1252+ let gX = invoke(this, "rebalance", nil, nil)
1253+ if ((gX == gX))
1254+ then $Tuple2((((ep ++ gS) ++ hk) ++ gV), hi)
12741255 else throw("Strict value is not equal to itself.")
12751256 }
12761257 else throw("Strict value is not equal to itself.")
12861267
12871268
12881269
1289-@Callable(eY)
1290-func putOneTknREADONLY (fn,fm) = {
1291- let ho = fl(fm, bh(fn), unit, unit)
1292- let hi = ho._1
1293- let er = ho._2
1294- let fk = ho._3
1295- let hh = ho._4
1296- let fr = ho._5
1297- $Tuple2(nil, $Tuple3(hi, fk, hh))
1270+@Callable(eW)
1271+func putOneTknREADONLY (fl,fk) = {
1272+ let hn = fj(fk, bh(fl), unit, unit)
1273+ let hh = hn._1
1274+ let ep = hn._2
1275+ let fi = hn._3
1276+ let hg = hn._4
1277+ let fp = hn._5
1278+ $Tuple2(nil, $Tuple3(hh, fi, hg))
12981279 }
12991280
13001281
13011282
1302-@Callable(eY)
1303-func getOneTkn (hp,hb) = {
1304- let hd = {
1283+@Callable(eW)
1284+func getOneTkn (ho,ha) = {
1285+ let hc = {
13051286 let aY = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13061287 if ($isInstanceOf(aY, "Boolean"))
13071288 then aY
13081289 else throw(($getType(aY) + " couldn't be cast to Boolean"))
13091290 }
1310- let hq = if (if (bc())
1291+ let hp = if (if (bc())
13111292 then true
13121293 else (bp == n))
13131294 then true
1314- else hd
1315- let fS = [if (if (!(hq))
1295+ else hc
1296+ let fQ = [if (if (!(hp))
13161297 then true
1317- else gn(eY))
1298+ else gl(eW))
13181299 then true
1319- else aS("get operation is blocked by admin"), if ((size(eY.payments) == 1))
1300+ else aS("get operation is blocked by admin"), if ((size(eW.payments) == 1))
13201301 then true
13211302 else aS("exactly 1 payment are expected")]
1322- if ((fS == fS))
1303+ if ((fQ == fQ))
13231304 then {
1324- let fR = bh(hp)
1325- let hf = eY.payments[0]
1326- let fn = hf.assetId
1327- let fz = hf.amount
1328- let eF = ey(toBigInt(0), toBigInt(0), toBigInt(0))
1329- if ((eF == eF))
1305+ let fP = bh(ho)
1306+ let he = eW.payments[0]
1307+ let fl = he.assetId
1308+ let fx = he.amount
1309+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1310+ if ((eD == eD))
13301311 then {
1331- let ab = eY.caller
1332- let ac = eY.transactionId
1333- let hr = fQ(fR, fz, fn, ab, ac)
1334- if ((hr == hr))
1312+ let ab = eW.caller
1313+ let ac = eW.transactionId
1314+ let hq = fO(fP, fx, fl, ab, ac)
1315+ if ((hq == hq))
13351316 then {
1336- let fT = hr._5
1337- let hh = hr._4
1338- let fk = hr._3
1339- let er = hr._2
1340- let hs = hr._1
1341- let ca = if (if ((hb > 0))
1342- then (hb > hs)
1317+ let fR = hq._5
1318+ let hg = hq._4
1319+ let fi = hq._3
1320+ let ep = hq._2
1321+ let hr = hq._1
1322+ let ca = if (if ((ha > 0))
1323+ then (ha > hr)
13431324 else false)
1344- then aS(makeString(["amount to receive is less than ", toString(hb)], ""))
1345- else hs
1346- let gH = {
1347- let bX = cu(hp)
1325+ then aS(makeString(["amount to receive is less than ", toString(ha)], ""))
1326+ else hr
1327+ let gF = {
1328+ let bX = cu(ho)
13481329 if ($isInstanceOf(bX, "(Boolean, Int, Int, String, String, Int, String)"))
13491330 then {
13501331 let cH = bX
13521333 }
13531334 else throw("error lease config")
13541335 }
1355- let ht = invoke(aV, "burn", [fz], [AttachedPayment(fn, fz)])
1356- if ((ht == ht))
1336+ let hs = invoke(aV, "burn", [fx], [AttachedPayment(fl, fx)])
1337+ if ((hs == hs))
13571338 then {
1358- let gI = cQ(hp, ca)
1359- if ((gI == gI))
1339+ let gG = cO(ho, ca)
1340+ if ((gG == gG))
13601341 then {
1361- let hu = [ScriptTransfer(ab, ca, fR)]
1362- let hl = if ((fk > 0))
1363- then [ScriptTransfer(aW, fk, fR)]
1342+ let ht = [ScriptTransfer(ab, ca, fP)]
1343+ let hk = if ((fi > 0))
1344+ then [ScriptTransfer(aW, fi, fP)]
13641345 else nil
1365- let hv = {
1366- let hw = if ((this == aW))
1346+ let hu = {
1347+ let hv = if ((this == aW))
13671348 then 0
1368- else fk
1369- if (fT)
1370- then $Tuple2(-((ca + hw)), 0)
1371- else $Tuple2(0, -((ca + hw)))
1349+ else fi
1350+ if (fR)
1351+ then $Tuple2(-((ca + hv)), 0)
1352+ else $Tuple2(0, -((ca + hv)))
13721353 }
1373- let eH = hv._1
1374- let eI = hv._2
1375- let hx = eG(eH, eI, 0)
1376- let gX = hx._1
1377- let ex = hx._2
1378- let gY = eK(eF, ex)
1379- if ((gY == gY))
1354+ let eF = hu._1
1355+ let eG = hu._2
1356+ let hw = eE(eF, eG, 0)
1357+ let gV = hw._1
1358+ let ev = hw._2
1359+ let gW = eI(eD, ev)
1360+ if ((gW == gW))
1361+ then $Tuple2(((((ep ++ gG) ++ ht) ++ hk) ++ gV), ca)
1362+ else throw("Strict value is not equal to itself.")
1363+ }
1364+ else throw("Strict value is not equal to itself.")
1365+ }
1366+ else throw("Strict value is not equal to itself.")
1367+ }
1368+ else throw("Strict value is not equal to itself.")
1369+ }
1370+ else throw("Strict value is not equal to itself.")
1371+ }
1372+ else throw("Strict value is not equal to itself.")
1373+ }
1374+
1375+
1376+
1377+@Callable(eW)
1378+func getOneTknREADONLY (fP,fx) = {
1379+ let hx = fO(bh(fP), fx, bq, unit, unit)
1380+ let hr = hx._1
1381+ let ep = hx._2
1382+ let fi = hx._3
1383+ let hg = hx._4
1384+ let fR = hx._5
1385+ $Tuple2(nil, $Tuple3(hr, fi, hg))
1386+ }
1387+
1388+
1389+
1390+@Callable(eW)
1391+func unstakeAndGetOneTkn (hy,ho,ha) = {
1392+ let hc = {
1393+ let aY = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1394+ if ($isInstanceOf(aY, "Boolean"))
1395+ then aY
1396+ else throw(($getType(aY) + " couldn't be cast to Boolean"))
1397+ }
1398+ let hp = if (if (bc())
1399+ then true
1400+ else (bp == n))
1401+ then true
1402+ else hc
1403+ let fQ = [if (if (!(hp))
1404+ then true
1405+ else gl(eW))
1406+ then true
1407+ else aS("get operation is blocked by admin"), if ((size(eW.payments) == 0))
1408+ then true
1409+ else aS("no payments are expected")]
1410+ if ((fQ == fQ))
1411+ then {
1412+ let fP = bh(ho)
1413+ let ab = eW.caller
1414+ let ac = eW.transactionId
1415+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1416+ if ((eD == eD))
1417+ then {
1418+ let hz = invoke(bw, "unstake", [toBase58String(bq), hy], nil)
1419+ if ((hz == hz))
1420+ then {
1421+ let hA = fO(fP, hy, bq, ab, ac)
1422+ if ((hA == hA))
1423+ then {
1424+ let fR = hA._5
1425+ let hg = hA._4
1426+ let fi = hA._3
1427+ let ep = hA._2
1428+ let hr = hA._1
1429+ let ca = if (if ((ha > 0))
1430+ then (ha > hr)
1431+ else false)
1432+ then aS(makeString(["amount to receive is less than ", toString(ha)], ""))
1433+ else hr
1434+ let hs = invoke(aV, "burn", [hy], [AttachedPayment(bq, hy)])
1435+ if ((hs == hs))
1436+ then {
1437+ let gG = cO(ho, ca)
1438+ if ((gG == gG))
13801439 then {
1381- let dJ = invoke(this, "rebalance", nil, nil)
1382- if ((dJ == dJ))
1383- then $Tuple2(((((er ++ gI) ++ hu) ++ hl) ++ gX), ca)
1440+ let ht = [ScriptTransfer(eW.caller, ca, fP)]
1441+ let hk = if ((fi > 0))
1442+ then [ScriptTransfer(aW, fi, fP)]
1443+ else nil
1444+ let hB = {
1445+ let hv = if ((this == aW))
1446+ then 0
1447+ else fi
1448+ if (fR)
1449+ then $Tuple2(-((ca + hv)), 0)
1450+ else $Tuple2(0, -((ca + hv)))
1451+ }
1452+ let eF = hB._1
1453+ let eG = hB._2
1454+ let hC = eE(eF, eG, 0)
1455+ let gV = hC._1
1456+ let ev = hC._2
1457+ let gW = eI(eD, ev)
1458+ if ((gW == gW))
1459+ then $Tuple2(((((ep ++ gG) ++ ht) ++ hk) ++ gV), ca)
13841460 else throw("Strict value is not equal to itself.")
13851461 }
13861462 else throw("Strict value is not equal to itself.")
13981474
13991475
14001476
1401-@Callable(eY)
1402-func getOneTknREADONLY (fR,fz) = {
1403- let hy = fQ(bh(fR), fz, bq, unit, unit)
1404- let hs = hy._1
1405- let er = hy._2
1406- let fk = hy._3
1407- let hh = hy._4
1408- let fT = hy._5
1409- $Tuple2(nil, $Tuple3(hs, fk, hh))
1477+@Callable(eW)
1478+func get () = {
1479+ let ea = eV(eW)
1480+ let hD = ea._1
1481+ let dF = ea._2
1482+ let eY = ea._3
1483+ let dn = ea._4
1484+ let dI = ea._5
1485+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1486+ if ((eD == eD))
1487+ then {
1488+ let hE = invoke(aV, "burn", [eY], [AttachedPayment(dn, eY)])
1489+ if ((hE == hE))
1490+ then {
1491+ let hF = eE(-(hD), -(dF), 0)
1492+ let gV = hF._1
1493+ let ev = hF._2
1494+ let gW = eI(eD, ev)
1495+ if ((gW == gW))
1496+ then (dI ++ gV)
1497+ else throw("Strict value is not equal to itself.")
1498+ }
1499+ else throw("Strict value is not equal to itself.")
1500+ }
1501+ else throw("Strict value is not equal to itself.")
14101502 }
14111503
14121504
14131505
1414-@Callable(eY)
1415-func unstakeAndGetOneTkn (hz,hp,hb) = {
1416- let hd = {
1417- let aY = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1418- if ($isInstanceOf(aY, "Boolean"))
1419- then aY
1420- else throw(($getType(aY) + " couldn't be cast to Boolean"))
1421- }
1422- let hq = if (if (bc())
1423- then true
1424- else (bp == n))
1425- then true
1426- else hd
1427- let fS = [if (if (!(hq))
1428- then true
1429- else gn(eY))
1430- then true
1431- else aS("get operation is blocked by admin"), if ((size(eY.payments) == 0))
1432- then true
1433- else aS("no payments are expected")]
1434- if ((fS == fS))
1506+@Callable(eW)
1507+func getNoLess (hG,hH) = {
1508+ let ea = eV(eW)
1509+ let dE = ea._1
1510+ let dF = ea._2
1511+ let eY = ea._3
1512+ let dn = ea._4
1513+ let dI = ea._5
1514+ if ((hG > dE))
1515+ then throw(((("noLessThenAmtAsset failed: " + toString(dE)) + " < ") + toString(hG)))
1516+ else if ((hH > dF))
1517+ then throw(((("noLessThenPriceAsset failed: " + toString(dF)) + " < ") + toString(hH)))
1518+ else {
1519+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1520+ if ((eD == eD))
1521+ then {
1522+ let hE = invoke(aV, "burn", [eY], [AttachedPayment(dn, eY)])
1523+ if ((hE == hE))
1524+ then {
1525+ let hI = eE(-(dE), -(dF), 0)
1526+ let gV = hI._1
1527+ let ev = hI._2
1528+ let gW = eI(eD, ev)
1529+ if ((gW == gW))
1530+ then (dI ++ gV)
1531+ else throw("Strict value is not equal to itself.")
1532+ }
1533+ else throw("Strict value is not equal to itself.")
1534+ }
1535+ else throw("Strict value is not equal to itself.")
1536+ }
1537+ }
1538+
1539+
1540+
1541+@Callable(eW)
1542+func unstakeAndGet (ca) = {
1543+ let hJ = if ((size(eW.payments) != 0))
1544+ then throw("No payments are expected")
1545+ else true
1546+ if ((hJ == hJ))
14351547 then {
1436- let fR = bh(hp)
1437- let ab = eY.caller
1438- let ac = eY.transactionId
1439- let eF = ey(toBigInt(0), toBigInt(0), toBigInt(0))
1440- if ((eF == eF))
1548+ let dc = be()
1549+ let dp = fromBase58String(dc[q])
1550+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1551+ if ((eD == eD))
14411552 then {
1442- let hA = invoke(bw, "unstake", [toBase58String(bq), hz], nil)
1443- if ((hA == hA))
1553+ let hz = invoke(bw, "unstake", [toBase58String(dp), ca], nil)
1554+ if ((hz == hz))
14441555 then {
1445- let hB = fQ(fR, hz, bq, ab, ac)
1446- if ((hB == hB))
1556+ let ea = dl(toBase58String(eW.transactionId), toBase58String(dp), ca, eW.caller)
1557+ let dE = ea._1
1558+ let dF = ea._2
1559+ let ds = parseIntValue(ea._9)
1560+ let dI = ea._10
1561+ let hK = if (if (bc())
1562+ then true
1563+ else (ds == n))
1564+ then throw(("Get operation is blocked by admin. Status = " + toString(ds)))
1565+ else true
1566+ if ((hK == hK))
14471567 then {
1448- let fT = hB._5
1449- let hh = hB._4
1450- let fk = hB._3
1451- let er = hB._2
1452- let hs = hB._1
1453- let ca = if (if ((hb > 0))
1454- then (hb > hs)
1455- else false)
1456- then aS(makeString(["amount to receive is less than ", toString(hb)], ""))
1457- else hs
1458- let ht = invoke(aV, "burn", [hz], [AttachedPayment(bq, hz)])
1459- if ((ht == ht))
1568+ let hE = invoke(aV, "burn", [ca], [AttachedPayment(dp, ca)])
1569+ if ((hE == hE))
14601570 then {
1461- let gI = cQ(hp, ca)
1462- if ((gI == gI))
1463- then {
1464- let hu = [ScriptTransfer(eY.caller, ca, fR)]
1465- let hl = if ((fk > 0))
1466- then [ScriptTransfer(aW, fk, fR)]
1467- else nil
1468- let hC = {
1469- let hw = if ((this == aW))
1470- then 0
1471- else fk
1472- if (fT)
1473- then $Tuple2(-((ca + hw)), 0)
1474- else $Tuple2(0, -((ca + hw)))
1475- }
1476- let eH = hC._1
1477- let eI = hC._2
1478- let hD = eG(eH, eI, 0)
1479- let gX = hD._1
1480- let ex = hD._2
1481- let gY = eK(eF, ex)
1482- if ((gY == gY))
1483- then {
1484- let dJ = invoke(this, "rebalance", nil, nil)
1485- if ((dJ == dJ))
1486- then $Tuple2(((((er ++ gI) ++ hu) ++ hl) ++ gX), ca)
1487- else throw("Strict value is not equal to itself.")
1488- }
1489- else throw("Strict value is not equal to itself.")
1490- }
1571+ let hL = eE(-(dE), -(dF), 0)
1572+ let gV = hL._1
1573+ let ev = hL._2
1574+ let gW = eI(eD, ev)
1575+ if ((gW == gW))
1576+ then (dI ++ gV)
14911577 else throw("Strict value is not equal to itself.")
14921578 }
14931579 else throw("Strict value is not equal to itself.")
15031589
15041590
15051591
1506-@Callable(eY)
1507-func get () = {
1508- let ec = eX(eY)
1509- let hE = ec._1
1510- let dG = ec._2
1511- let fa = ec._3
1512- let do = ec._4
1513- let dK = ec._5
1514- let eF = ey(toBigInt(0), toBigInt(0), toBigInt(0))
1515- if ((eF == eF))
1592+@Callable(eW)
1593+func unstakeAndGetNoLess (hy,hM,hH) = {
1594+ let hp = if (bc())
1595+ then true
1596+ else (bp == n)
1597+ let fQ = [if (!(hp))
1598+ then true
1599+ else throw("get operation is blocked by admin"), if ((size(eW.payments) == 0))
1600+ then true
1601+ else throw("no payments are expected")]
1602+ if ((fQ == fQ))
15161603 then {
1517- let hF = invoke(aV, "burn", [fa], [AttachedPayment(do, fa)])
1518- if ((hF == hF))
1604+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1605+ if ((eD == eD))
15191606 then {
1520- let hG = eG(-(hE), -(dG), 0)
1521- let gX = hG._1
1522- let ex = hG._2
1523- let gY = eK(eF, ex)
1524- if ((gY == gY))
1525- then (dK ++ gX)
1526- else throw("Strict value is not equal to itself.")
1527- }
1528- else throw("Strict value is not equal to itself.")
1529- }
1530- else throw("Strict value is not equal to itself.")
1531- }
1532-
1533-
1534-
1535-@Callable(eY)
1536-func getNoLess (hH,hI) = {
1537- let ec = eX(eY)
1538- let dF = ec._1
1539- let dG = ec._2
1540- let fa = ec._3
1541- let do = ec._4
1542- let dK = ec._5
1543- if ((hH > dF))
1544- then throw(((("noLessThenAmtAsset failed: " + toString(dF)) + " < ") + toString(hH)))
1545- else if ((hI > dG))
1546- then throw(((("noLessThenPriceAsset failed: " + toString(dG)) + " < ") + toString(hI)))
1547- else {
1548- let eF = ey(toBigInt(0), toBigInt(0), toBigInt(0))
1549- if ((eF == eF))
1550- then {
1551- let hF = invoke(aV, "burn", [fa], [AttachedPayment(do, fa)])
1552- if ((hF == hF))
1553- then {
1554- let hJ = eG(-(dF), -(dG), 0)
1555- let gX = hJ._1
1556- let ex = hJ._2
1557- let gY = eK(eF, ex)
1558- if ((gY == gY))
1559- then (dK ++ gX)
1560- else throw("Strict value is not equal to itself.")
1561- }
1562- else throw("Strict value is not equal to itself.")
1563- }
1564- else throw("Strict value is not equal to itself.")
1565- }
1566- }
1567-
1568-
1569-
1570-@Callable(eY)
1571-func unstakeAndGet (ca) = {
1572- let hK = if ((size(eY.payments) != 0))
1573- then throw("No payments are expected")
1574- else true
1575- if ((hK == hK))
1576- then {
1577- let dd = be()
1578- let dq = fromBase58String(dd[q])
1579- let eF = ey(toBigInt(0), toBigInt(0), toBigInt(0))
1580- if ((eF == eF))
1581- then {
1582- let hA = invoke(bw, "unstake", [toBase58String(dq), ca], nil)
1583- if ((hA == hA))
1607+ let hz = invoke(bw, "unstake", [toBase58String(bq), hy], nil)
1608+ if ((hz == hz))
15841609 then {
1585- let ec = dm(toBase58String(eY.transactionId), toBase58String(dq), ca, eY.caller)
1586- let dF = ec._1
1587- let dG = ec._2
1588- let dt = parseIntValue(ec._9)
1589- let dK = ec._10
1590- let hL = if (if (bc())
1610+ let ea = dl(toBase58String(eW.transactionId), toBase58String(bq), hy, eW.caller)
1611+ let dE = ea._1
1612+ let dF = ea._2
1613+ let dI = ea._10
1614+ let hN = [if ((dE >= hM))
15911615 then true
1592- else (dt == n))
1593- then throw(("Get operation is blocked by admin. Status = " + toString(dt)))
1594- else true
1595- if ((hL == hL))
1616+ else throw(makeString(["amount asset amount to receive is less than ", toString(hM)], "")), if ((dF >= hH))
1617+ then true
1618+ else throw(makeString(["price asset amount to receive is less than ", toString(hH)], ""))]
1619+ if ((hN == hN))
15961620 then {
1597- let hF = invoke(aV, "burn", [ca], [AttachedPayment(dq, ca)])
1598- if ((hF == hF))
1621+ let hE = invoke(aV, "burn", [hy], [AttachedPayment(bq, hy)])
1622+ if ((hE == hE))
15991623 then {
1600- let hM = eG(-(dF), -(dG), 0)
1601- let gX = hM._1
1602- let ex = hM._2
1603- let gY = eK(eF, ex)
1604- if ((gY == gY))
1605- then (dK ++ gX)
1624+ let hO = eE(-(dE), -(dF), 0)
1625+ let gV = hO._1
1626+ let ev = hO._2
1627+ let gW = eI(eD, ev)
1628+ if ((gW == gW))
1629+ then (dI ++ gV)
16061630 else throw("Strict value is not equal to itself.")
16071631 }
16081632 else throw("Strict value is not equal to itself.")
16181642
16191643
16201644
1621-@Callable(eY)
1622-func unstakeAndGetNoLess (hz,hN,hI) = {
1623- let hq = if (bc())
1624- then true
1625- else (bp == n)
1626- let fS = [if (!(hq))
1627- then true
1628- else throw("get operation is blocked by admin"), if ((size(eY.payments) == 0))
1629- then true
1630- else throw("no payments are expected")]
1631- if ((fS == fS))
1645+@Callable(eW)
1646+func activate (hP,hQ) = if ((toString(eW.caller) != toString(aV)))
1647+ then throw("permissions denied")
1648+ else $Tuple2([StringEntry(ae(), hP), StringEntry(af(), hQ)], "success")
1649+
1650+
1651+
1652+@Callable(eW)
1653+func refreshKLp () = {
1654+ let hR = valueOrElse(getInteger(ak), 0)
1655+ let hS = if (((height - hR) >= an))
1656+ then unit
1657+ else aS(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1658+ if ((hS == hS))
16321659 then {
1633- let eF = ey(toBigInt(0), toBigInt(0), toBigInt(0))
1634- if ((eF == eF))
1635- then {
1636- let hA = invoke(bw, "unstake", [toBase58String(bq), hz], nil)
1637- if ((hA == hA))
1638- then {
1639- let ec = dm(toBase58String(eY.transactionId), toBase58String(bq), hz, eY.caller)
1640- let dF = ec._1
1641- let dG = ec._2
1642- let dK = ec._10
1643- let hO = [if ((dF >= hN))
1644- then true
1645- else throw(makeString(["amount asset amount to receive is less than ", toString(hN)], "")), if ((dG >= hI))
1646- then true
1647- else throw(makeString(["price asset amount to receive is less than ", toString(hI)], ""))]
1648- if ((hO == hO))
1649- then {
1650- let hF = invoke(aV, "burn", [hz], [AttachedPayment(bq, hz)])
1651- if ((hF == hF))
1652- then {
1653- let hP = eG(-(dF), -(dG), 0)
1654- let gX = hP._1
1655- let ex = hP._2
1656- let gY = eK(eF, ex)
1657- if ((gY == gY))
1658- then (dK ++ gX)
1659- else throw("Strict value is not equal to itself.")
1660- }
1661- else throw("Strict value is not equal to itself.")
1662- }
1663- else throw("Strict value is not equal to itself.")
1664- }
1665- else throw("Strict value is not equal to itself.")
1666- }
1667- else throw("Strict value is not equal to itself.")
1660+ let eP = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aU("invalid kLp"))
1661+ let hT = eE(0, 0, 0)
1662+ let hU = hT._1
1663+ let ev = hT._2
1664+ let eH = if ((eP != ev))
1665+ then hU
1666+ else aS("nothing to refresh")
1667+ $Tuple2(eH, toString(ev))
16681668 }
16691669 else throw("Strict value is not equal to itself.")
16701670 }
16711671
16721672
16731673
1674-@Callable(eY)
1675-func activate (hQ,hR) = if ((toString(eY.caller) != toString(aV)))
1676- then throw("permissions denied")
1677- else $Tuple2([StringEntry(ae(), hQ), StringEntry(af(), hR)], "success")
1674+@Callable(eW)
1675+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, be())
16781676
16791677
16801678
1681-@Callable(eY)
1682-func refreshKLp () = {
1683- let hS = valueOrElse(getInteger(ak), 0)
1684- let hT = if (((height - hS) >= an))
1685- then unit
1686- else aS(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1687- if ((hT == hT))
1688- then {
1689- let eR = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aU("invalid kLp"))
1690- let hU = eG(0, 0, 0)
1691- let hV = hU._1
1692- let ex = hU._2
1693- let eJ = if ((eR != ex))
1694- then hV
1695- else aS("nothing to refresh")
1696- $Tuple2(eJ, toString(ex))
1697- }
1698- else throw("Strict value is not equal to itself.")
1679+@Callable(eW)
1680+func getAccBalanceWrapperREADONLY (ar) = $Tuple2(nil, bN(ar))
1681+
1682+
1683+
1684+@Callable(eW)
1685+func calcPricesWrapperREADONLY (cW,cX,db) = {
1686+ let dk = da(cW, cX, db)
1687+ $Tuple2(nil, [toString(dk[0]), toString(dk[1]), toString(dk[2])])
16991688 }
17001689
17011690
17021691
1703-@Callable(eY)
1704-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, be())
1692+@Callable(eW)
1693+func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
17051694
17061695
17071696
1708-@Callable(eY)
1709-func getAccBalanceWrapperREADONLY (ar) = $Tuple2(nil, bN(ar))
1697+@Callable(eW)
1698+func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
17101699
17111700
17121701
1713-@Callable(eY)
1714-func calcPricesWrapperREADONLY (cX,cY,dc) = {
1715- let dl = db(cX, cY, dc)
1716- $Tuple2(nil, [toString(dl[0]), toString(dl[1]), toString(dl[2])])
1702+@Callable(eW)
1703+func calcPriceBigIntWrapperREADONLY (bR,bS) = $Tuple2(nil, toString(bQ(parseBigIntValue(bR), parseBigIntValue(bS))))
1704+
1705+
1706+
1707+@Callable(eW)
1708+func estimatePutOperationWrapperREADONLY (dm,dK,dL,dM,dN,dO,ab,dP,dQ) = $Tuple2(nil, dJ(dm, dK, dL, dM, dN, dO, ab, dP, dQ))
1709+
1710+
1711+
1712+@Callable(eW)
1713+func estimateGetOperationWrapperREADONLY (dm,dn,do,ab) = {
1714+ let ea = dl(dm, dn, do, addressFromStringValue(ab))
1715+ $Tuple2(nil, $Tuple10(ea._1, ea._2, ea._3, ea._4, ea._5, ea._6, ea._7, toString(ea._8), ea._9, ea._10))
17171716 }
17181717
17191718
17201719
1721-@Callable(eY)
1722-func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
1723-
1724-
1725-
1726-@Callable(eY)
1727-func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
1728-
1729-
1730-
1731-@Callable(eY)
1732-func calcPriceBigIntWrapperREADONLY (bR,bS) = $Tuple2(nil, toString(bQ(parseBigIntValue(bR), parseBigIntValue(bS))))
1733-
1734-
1735-
1736-@Callable(eY)
1737-func estimatePutOperationWrapperREADONLY (dn,dM,dN,dO,dP,dQ,ab,dR,dS) = $Tuple2(nil, dL(dn, dM, dN, dO, dP, dQ, ab, dR, dS))
1738-
1739-
1740-
1741-@Callable(eY)
1742-func estimateGetOperationWrapperREADONLY (dn,do,dp,ab) = {
1743- let ec = dm(dn, do, dp, addressFromStringValue(ab))
1744- $Tuple2(nil, $Tuple10(ec._1, ec._2, ec._3, ec._4, ec._5, ec._6, ec._7, toString(ec._8), ec._9, ec._10))
1720+@Callable(eW)
1721+func statsREADONLY () = {
1722+ let dc = be()
1723+ let dp = fromBase58String(dc[q])
1724+ let hV = dc[r]
1725+ let hW = dc[s]
1726+ let dT = dc[v]
1727+ let dU = dc[w]
1728+ let dd = parseIntValue(dc[t])
1729+ let de = parseIntValue(dc[u])
1730+ let hX = valueOrErrorMessage(assetInfo(dp), (("Asset " + toBase58String(dp)) + " doesn't exist")).quantity
1731+ let hY = bN(hV)
1732+ let hZ = bN(hW)
1733+ let ia = if ((hX == 0))
1734+ then [e, e, e]
1735+ else da(hY, hZ, hX)
1736+ let dz = 0
1737+ let ib = H(ia[1], b)
1738+ let ic = H(ia[2], b)
1739+ let id = value(getInteger(aV, aF(toString(this))))
1740+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hY), toString(hZ), toString(hX), toString(dz), toString(ib), toString(ic), toString(id)], j))
17451741 }
17461742
17471743
17481744
1749-@Callable(eY)
1750-func statsREADONLY () = {
1751- let dd = be()
1752- let dq = fromBase58String(dd[q])
1753- let hW = dd[r]
1754- let hX = dd[s]
1755- let dV = dd[v]
1756- let dW = dd[w]
1757- let de = parseIntValue(dd[t])
1758- let df = parseIntValue(dd[u])
1759- let hY = valueOrErrorMessage(assetInfo(dq), (("Asset " + toBase58String(dq)) + " doesn't exist")).quantity
1760- let hZ = bN(hW)
1761- let ia = bN(hX)
1762- let ib = if ((hY == 0))
1763- then [e, e, e]
1764- else db(hZ, ia, hY)
1765- let dA = 0
1766- let ic = H(ib[1], b)
1767- let id = H(ib[2], b)
1768- let ie = value(getInteger(aV, aF(toString(this))))
1769- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hZ), toString(ia), toString(hY), toString(dA), toString(ic), toString(id), toString(ie)], j))
1745+@Callable(eW)
1746+func evaluatePutByAmountAssetREADONLY (dL) = {
1747+ let dc = be()
1748+ let dp = fromBase58String(dc[q])
1749+ let dR = dc[r]
1750+ let dq = fromBase58String(dR)
1751+ let dS = dc[s]
1752+ let dr = fromBase58String(dS)
1753+ let dd = parseIntValue(dc[t])
1754+ let de = parseIntValue(dc[u])
1755+ let ds = dc[p]
1756+ let hX = valueOrErrorMessage(assetInfo(dp), (("Asset " + toBase58String(dp)) + " doesn't exist")).quantity
1757+ let hY = bN(dR)
1758+ let hZ = bN(dS)
1759+ let cY = D(hY, dd)
1760+ let cZ = D(hZ, de)
1761+ let dy = if ((hX == 0))
1762+ then e
1763+ else bQ(cZ, cY)
1764+ let dX = D(dL, dd)
1765+ let dY = fraction(dX, dy, d)
1766+ let dN = H(dY, de)
1767+ let fc = dJ("", 500000, dL, dq, dN, dr, "", true, false)
1768+ let ei = fc._1
1769+ let ie = fc._3
1770+ let du = fc._4
1771+ let dw = fc._5
1772+ let dt = fc._6
1773+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ei), toString(H(dy, b)), toString(du), toString(dw), toString(dt), ds, toString(dL), toString(dN)], j))
17701774 }
17711775
17721776
17731777
1774-@Callable(eY)
1775-func evaluatePutByAmountAssetREADONLY (dN) = {
1776- let dd = be()
1777- let dq = fromBase58String(dd[q])
1778- let dT = dd[r]
1779- let dr = fromBase58String(dT)
1780- let dU = dd[s]
1781- let ds = fromBase58String(dU)
1782- let de = parseIntValue(dd[t])
1783- let df = parseIntValue(dd[u])
1784- let dt = dd[p]
1785- let hY = valueOrErrorMessage(assetInfo(dq), (("Asset " + toBase58String(dq)) + " doesn't exist")).quantity
1786- let hZ = bN(dT)
1787- let ia = bN(dU)
1788- let cZ = D(hZ, de)
1789- let da = D(ia, df)
1790- let dz = if ((hY == 0))
1778+@Callable(eW)
1779+func evaluatePutByPriceAssetREADONLY (dN) = {
1780+ let dc = be()
1781+ let dp = fromBase58String(dc[q])
1782+ let dR = dc[r]
1783+ let dq = fromBase58String(dR)
1784+ let dS = dc[s]
1785+ let dr = fromBase58String(dS)
1786+ let dd = parseIntValue(dc[t])
1787+ let de = parseIntValue(dc[u])
1788+ let ds = dc[p]
1789+ let hX = valueOrErrorMessage(assetInfo(dp), (("Asset " + toBase58String(dp)) + " doesn't exist")).quantity
1790+ let if = bN(dR)
1791+ let ig = bN(dS)
1792+ let ih = D(if, dd)
1793+ let ii = D(ig, de)
1794+ let dy = if ((hX == 0))
17911795 then e
1792- else bQ(da, cZ)
1793- let dZ = D(dN, de)
1794- let ea = fraction(dZ, dz, d)
1795- let dP = H(ea, df)
1796- let fe = dL("", 500000, dN, dr, dP, ds, "", true, false)
1797- let ek = fe._1
1798- let if = fe._3
1799- let dv = fe._4
1800- let dx = fe._5
1801- let du = fe._6
1802- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ek), toString(H(dz, b)), toString(dv), toString(dx), toString(du), dt, toString(dN), toString(dP)], j))
1796+ else bQ(ii, ih)
1797+ let dY = D(dN, de)
1798+ let dX = fraction(dY, d, dy)
1799+ let dL = H(dX, dd)
1800+ let fc = dJ("", 500000, dL, dq, dN, dr, "", true, false)
1801+ let ei = fc._1
1802+ let ie = fc._3
1803+ let du = fc._4
1804+ let dw = fc._5
1805+ let dt = fc._6
1806+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ei), toString(H(dy, b)), toString(du), toString(dw), toString(dt), ds, toString(dL), toString(dN)], j))
18031807 }
18041808
18051809
18061810
1807-@Callable(eY)
1808-func evaluatePutByPriceAssetREADONLY (dP) = {
1809- let dd = be()
1810- let dq = fromBase58String(dd[q])
1811- let dT = dd[r]
1812- let dr = fromBase58String(dT)
1813- let dU = dd[s]
1814- let ds = fromBase58String(dU)
1815- let de = parseIntValue(dd[t])
1816- let df = parseIntValue(dd[u])
1817- let dt = dd[p]
1818- let hY = valueOrErrorMessage(assetInfo(dq), (("Asset " + toBase58String(dq)) + " doesn't exist")).quantity
1819- let ig = bN(dT)
1820- let ih = bN(dU)
1821- let ii = D(ig, de)
1822- let ij = D(ih, df)
1823- let dz = if ((hY == 0))
1824- then e
1825- else bQ(ij, ii)
1826- let ea = D(dP, df)
1827- let dZ = fraction(ea, d, dz)
1828- let dN = H(dZ, de)
1829- let fe = dL("", 500000, dN, dr, dP, ds, "", true, false)
1830- let ek = fe._1
1831- let if = fe._3
1832- let dv = fe._4
1833- let dx = fe._5
1834- let du = fe._6
1835- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ek), toString(H(dz, b)), toString(dv), toString(dx), toString(du), dt, toString(dN), toString(dP)], j))
1811+@Callable(eW)
1812+func evaluateGetREADONLY (ij,ik) = {
1813+ let ea = dl("", ij, ik, this)
1814+ let dE = ea._1
1815+ let dF = ea._2
1816+ let du = ea._5
1817+ let dw = ea._6
1818+ let dt = ea._7
1819+ let dz = ea._8
1820+ let ds = parseIntValue(ea._9)
1821+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dE), toString(dF), toString(du), toString(dw), toString(dt), toString(dz), toString(ds)], j))
18361822 }
18371823
18381824
1839-
1840-@Callable(eY)
1841-func evaluateGetREADONLY (ik,il) = {
1842- let ec = dm("", ik, il, this)
1843- let dF = ec._1
1844- let dG = ec._2
1845- let dv = ec._5
1846- let dx = ec._6
1847- let du = ec._7
1848- let dA = ec._8
1849- let dt = parseIntValue(ec._9)
1850- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dF), toString(dG), toString(dv), toString(dx), toString(du), toString(dA), toString(dt)], j))
1851- }
1852-
1853-
1854-@Verifier(im)
1855-func in () = {
1856- let io = {
1857- let bX = gk()
1825+@Verifier(il)
1826+func im () = {
1827+ let in = {
1828+ let bX = gi()
18581829 if ($isInstanceOf(bX, "ByteVector"))
18591830 then {
1860- let go = bX
1861- go
1831+ let gm = bX
1832+ gm
18621833 }
18631834 else if ($isInstanceOf(bX, "Unit"))
1864- then im.senderPublicKey
1835+ then il.senderPublicKey
18651836 else throw("Match error")
18661837 }
1867- let bX = im
1838+ let bX = il
18681839 if ($isInstanceOf(bX, "Order"))
18691840 then {
1870- let eN = bX
1871- let ip = bd()
1872- let iq = eM(eN)
1873- let aK = iq._1
1874- let aL = iq._2
1875- let aM = sigVerify(eN.bodyBytes, eN.proofs[0], eN.senderPublicKey)
1876- let aN = sigVerify(eN.bodyBytes, eN.proofs[1], ip)
1841+ let eL = bX
1842+ let io = bd()
1843+ let ip = eK(eL)
1844+ let aK = ip._1
1845+ let aL = ip._2
1846+ let aM = sigVerify(eL.bodyBytes, eL.proofs[0], eL.senderPublicKey)
1847+ let aN = sigVerify(eL.bodyBytes, eL.proofs[1], io)
18771848 if (if (if (aK)
18781849 then aM
18791850 else false)
18841855 }
18851856 else if ($isInstanceOf(bX, "SetScriptTransaction"))
18861857 then {
1887- let gl = bX
1888- if (sigVerify(im.bodyBytes, im.proofs[0], io))
1858+ let gj = bX
1859+ if (sigVerify(il.bodyBytes, il.proofs[0], in))
18891860 then true
18901861 else {
1891- let ir = blake2b256(value(gl.script))
1892- let is = fromBase64String(value(getString(aV, aH())))
1893- let it = scriptHash(this)
1894- if ((is == ir))
1895- then (it != ir)
1862+ let iq = blake2b256(value(gj.script))
1863+ let ir = fromBase64String(value(getString(aV, aH())))
1864+ let is = scriptHash(this)
1865+ if ((ir == iq))
1866+ then (is != iq)
18961867 else false
18971868 }
18981869 }
1899- else sigVerify(im.bodyBytes, im.proofs[0], io)
1870+ else sigVerify(il.bodyBytes, il.proofs[0], in)
19001871 }
19011872
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
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 = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (E,F) = fraction(E, d, F)
6666
6767
6868 func H (I,J) = toInt(fraction(I, toBigInt(J), d))
6969
7070
7171 func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
7272
7373
7474 func M (N,O,P) = fraction(N, O, P)
7575
7676
7777 func Q (I) = if ((0 > I))
7878 then -(I)
7979 else I
8080
8181
8282 func R (I) = if ((e > I))
8383 then -(I)
8484 else I
8585
8686
8787 func S () = "%s__swapContract"
8888
8989
9090 func T () = "%s__factoryContract"
9191
9292
9393 func U () = "%s__managerPublicKey"
9494
9595
9696 func V () = "%s__pendingManagerPublicKey"
9797
9898
9999 func W () = "%s%s__price__last"
100100
101101
102102 func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], j)
103103
104104
105105 func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
106106
107107
108108 func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
109109
110110
111111 func ae () = "%s__amountAsset"
112112
113113
114114 func af () = "%s__priceAsset"
115115
116116
117117 let ag = "%s__fee"
118118
119119 let ah = fraction(10, b, 10000)
120120
121121 let ai = valueOrElse(getInteger(this, ag), ah)
122122
123123 let aj = makeString(["%s", "kLp"], j)
124124
125125 let ak = makeString(["%s", "kLpRefreshedHeight"], j)
126126
127127 let al = makeString(["%s", "refreshKLpDelay"], j)
128128
129129 let am = 30
130130
131131 let an = valueOrElse(getInteger(this, al), am)
132132
133133 func ao () = "%s__sWavesAssetId"
134134
135135
136136 func ap () = "%s__sWavesProxyAddress"
137137
138138
139139 func aq (ar) = makeString(["%s%s", "additionalBalance", ar], j)
140140
141141
142142 func as (ar) = makeString(["%s%s", "stakingAssetBalance", ar], j)
143143
144144
145145 func at (ar) = valueOrElse(getInteger(this, aq(ar)), 0)
146146
147147
148148 func au (ar) = valueOrElse(getInteger(this, as(ar)), 0)
149149
150150
151151 func av () = "%s__factoryConfig"
152152
153153
154154 func aw () = "%s%s__matcher__publicKey"
155155
156156
157157 func ax (ay) = (("%s%s%s__" + ay) + "__mappings__poolContract2LpAsset")
158158
159159
160160 func az (aA,aB) = (((("%d%d%s__" + aA) + "__") + aB) + "__config")
161161
162162
163163 func aC (aD) = ("%s%s%s__mappings__baseAsset2internalId__" + aD)
164164
165165
166166 func aE () = "%s__shutdown"
167167
168168
169169 func aF (aG) = ("%s%s__poolWeight__" + aG)
170170
171171
172172 func aH () = "%s__allowedLpScriptHash"
173173
174174
175175 let aI = "%s__feeCollectorAddress"
176176
177177 func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
178178
179179
180180 func aO (aP,aQ) = valueOrErrorMessage(getString(aP, aQ), makeString(["mandatory ", toString(aP), ".", aQ, " is not defined"], ""))
181181
182182
183183 func aR (aP,aQ) = valueOrErrorMessage(getInteger(aP, aQ), makeString(["mandatory ", toString(aP), ".", aQ, " is not defined"], ""))
184184
185185
186186 func aS (aT) = throw(makeString(["lp.ride:", aT], " "))
187187
188188
189189 func aU (aT) = makeString(["lp.ride:", aT], " ")
190190
191191
192192 let aV = addressFromStringValue(aO(this, T()))
193193
194194 let aW = addressFromStringValue(aO(aV, aI))
195195
196196 let aX = {
197197 let aY = invoke(aV, "getInFeeREADONLY", [toString(this)], nil)
198198 if ($isInstanceOf(aY, "Int"))
199199 then aY
200200 else throw(($getType(aY) + " couldn't be cast to Int"))
201201 }
202202
203203 let aZ = {
204204 let aY = invoke(aV, "getOutFeeREADONLY", [toString(this)], nil)
205205 if ($isInstanceOf(aY, "Int"))
206206 then aY
207207 else throw(($getType(aY) + " couldn't be cast to Int"))
208208 }
209209
210210 func ba () = aO(aV, ao())
211211
212212
213213 func bb () = aO(aV, ap())
214214
215215
216216 func bc () = valueOrElse(getBoolean(aV, aE()), false)
217217
218218
219219 func bd () = fromBase58String(aO(aV, aw()))
220220
221221
222222 func be () = {
223223 let bf = aO(this, ae())
224224 let bg = aO(this, af())
225225 let aB = aR(aV, aC(bg))
226226 let aA = aR(aV, aC(bf))
227227 split(aO(aV, az(toString(aA), toString(aB))), j)
228228 }
229229
230230
231231 func bh (bi) = if ((bi == i))
232232 then unit
233233 else fromBase58String(bi)
234234
235235
236236 func bj (bi) = if ((bi == unit))
237237 then i
238238 else toBase58String(value(bi))
239239
240240
241241 func bk (bl) = $Tuple7(addressFromStringValue(bl[o]), parseIntValue(bl[p]), fromBase58String(bl[q]), bh(bl[r]), bh(bl[s]), parseIntValue(bl[t]), parseIntValue(bl[u]))
242242
243243
244244 let bm = bk(be())
245245
246246 let bn = bm
247247
248248 let bo = bn._1
249249
250250 let bp = bn._2
251251
252252 let bq = bn._3
253253
254254 let br = bn._4
255255
256256 let bs = bn._5
257257
258258 let bt = bn._6
259259
260260 let bu = bn._7
261261
262262 func bv () = split(aO(aV, av()), j)
263263
264264
265265 let bw = valueOrErrorMessage(addressFromString(bv()[B]), "incorrect staking address")
266266
267267 let bx = valueOrErrorMessage(addressFromString(bv()[C]), "incorrect staking address")
268268
269269 func by (bz,bA,bB,bC,bD,bE,bF,bG,bH,bI) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE), toString(bF), toString(bG), toString(bH), toString(bI)], j)
270270
271271
272272 func bJ (bK,bL,bM,bC,bF,bG) = makeString(["%d%d%d%d%d%d", toString(bK), toString(bL), toString(bM), toString(bC), toString(bF), toString(bG)], j)
273273
274274
275275 func bN (ar) = {
276276 let bO = if ((ar == "WAVES"))
277277 then wavesBalance(this).available
278278 else assetBalance(this, fromBase58String(ar))
279279 let bP = ((bO + at(ar)) - au(ar))
280280 max([0, bP])
281281 }
282282
283283
284284 func bQ (bR,bS) = fraction(bR, d, bS)
285285
286286
287287 func bT (bR,bS,L) = fraction(bR, d, bS, L)
288288
289289
290290 func bU (bV) = {
291291 let bW = invoke(bV, "getRate", nil, nil)
292292 if ((bW == bW))
293293 then {
294294 let bX = bW
295295 if ($isInstanceOf(bX, "Int"))
296296 then {
297297 let bY = bX
298298 bY
299299 }
300300 else aS("proxy.getRate() unexpected value")
301301 }
302302 else throw("Strict value is not equal to itself.")
303303 }
304304
305305
306306 func bZ (ar,ca,cb,bV) = {
307307 let cc = at(ar)
308308 if ((cc == cc))
309309 then {
310310 let cd = au(cb)
311311 if ((cd == cd))
312312 then {
313313 let ce = bh(ar)
314314 if ((ca > 0))
315315 then {
316316 let cf = invoke(bV, "deposit", nil, [AttachedPayment(ce, ca)])
317317 if ((cf == cf))
318318 then {
319319 let bX = cf
320320 if ($isInstanceOf(bX, "Int"))
321321 then {
322322 let cg = bX
323323 let ch = (cc + ca)
324324 let ci = (cd + cg)
325325 [IntegerEntry(aq(ar), ch), IntegerEntry(as(cb), ci)]
326326 }
327327 else nil
328328 }
329329 else throw("Strict value is not equal to itself.")
330330 }
331331 else nil
332332 }
333333 else throw("Strict value is not equal to itself.")
334334 }
335335 else throw("Strict value is not equal to itself.")
336336 }
337337
338338
339339 func cj (ar,ca,cb,bV,ck,cl) = {
340340 let cc = at(ar)
341341 if ((cc == cc))
342342 then {
343343 let cd = au(cb)
344344 if ((cd == cd))
345345 then {
346346 let cm = bU(bV)
347347 if ((cm == cm))
348348 then {
349349 let cn = fraction(ck, cc, cd)
350350 let co = bh(cb)
351351 let cp = fraction(ck, ca, cn)
352352 let cq = fraction(ck, ca, cm)
353353 let cr = max([0, (cp - cq)])
354354 if ((cq > 0))
355355 then {
356356 let cs = invoke(bV, "withdraw", nil, [AttachedPayment(co, cq)])
357357 if ((cs == cs))
358358 then {
359359 let bX = cs
360360 if ($isInstanceOf(bX, "Int"))
361361 then {
362362 let ct = bX
363363 let ch = (cc - ct)
364364 let ci = ((cd - cq) - cr)
365365 [IntegerEntry(aq(ar), ch), IntegerEntry(as(cb), ci), ScriptTransfer(cl, cr, bh(cb))]
366366 }
367367 else nil
368368 }
369369 else throw("Strict value is not equal to itself.")
370370 }
371371 else nil
372372 }
373373 else throw("Strict value is not equal to itself.")
374374 }
375375 else throw("Strict value is not equal to itself.")
376376 }
377377 else throw("Strict value is not equal to itself.")
378378 }
379379
380380
381381 func cu (ar) = invoke(aV, "getPoolLeaseConfigREADONLY", [toString(this), ar], nil)
382382
383383
384384 func cv (cw,ar,cb,cx,bV,ck,cl) = {
385385 let cc = at(ar)
386386 if ((cc == cc))
387387 then {
388388 let cd = au(cb)
389389 if ((cd == cd))
390390 then {
391391 let cy = {
392392 let bX = bh(ar)
393393 if ($isInstanceOf(bX, "ByteVector"))
394394 then {
395395 let cz = bX
396396 assetBalance(this, cz)
397397 }
398398 else if ($isInstanceOf(bX, "Unit"))
399399 then {
400400 let cA = bX
401401 wavesBalance(this).available
402402 }
403403 else throw("Match error")
404404 }
405405 if ((cy == cy))
406406 then {
407407 let cB = max([0, ((cy + cc) - cx)])
408408 let cC = fraction(cw, cB, 100)
409409 let cD = (cc - cC)
410410 if ((cD == 0))
411411 then nil
412412 else if ((0 > cD))
413413 then {
414414 let cE = -(cD)
415415 bZ(ar, cE, cb, bV)
416416 }
417417 else {
418418 let cF = cD
419419 cj(ar, cF, cb, bV, ck, cl)
420420 }
421421 }
422422 else throw("Strict value is not equal to itself.")
423423 }
424424 else throw("Strict value is not equal to itself.")
425425 }
426426 else throw("Strict value is not equal to itself.")
427427 }
428428
429429
430430 func cG (ar) = {
431431 let bX = cu(ar)
432432 if ($isInstanceOf(bX, "(Boolean, Int, Int, String, String, Int, String)"))
433433 then {
434434 let cH = bX
435435 let cI = cH
436436 let cJ = cI._1
437437 let cK = cI._2
438438 let cx = cI._3
439439 let cL = cI._4
440440 let cM = cI._5
441441 let ck = cI._6
442442 let cN = cI._7
443443 if (cJ)
444444 then cv(cK, ar, cM, cx, addressFromStringValue(cL), ck, addressFromStringValue(cN))
445445 else nil
446446 }
447447 else aS((("[" + ar) + "] Rebalance error"))
448448 }
449449
450450
451-func cO (ar,ca) = {
451+func cO (ar,cP) = {
452452 let bX = cu(ar)
453453 if ($isInstanceOf(bX, "(Boolean, Int, Int, String, String, Int, String)"))
454454 then {
455455 let cH = bX
456- let cP = cH
457- let cJ = cP._1
458- let cK = cP._2
459- let cx = cP._3
460- let cL = cP._4
461- let cM = cP._5
462- let ck = cP._6
463- let cN = cP._7
456+ let cQ = cH
457+ let cJ = cQ._1
458+ let cK = cQ._2
459+ let cx = cQ._3
460+ let cL = cQ._4
461+ let cM = cQ._5
462+ let ck = cQ._6
463+ let cN = cQ._7
464464 if (cJ)
465- then cj(ar, ca, cM, addressFromStringValue(cL), ck, addressFromStringValue(cN))
465+ then {
466+ let cR = max([0, ((bN(ar) - cP) - cx)])
467+ if ((cR == cR))
468+ then {
469+ let ch = fraction(cK, cR, 100)
470+ if ((ch == ch))
471+ then {
472+ let cS = max([0, (at(ar) - ch)])
473+ if ((cS == cS))
474+ then cj(ar, cS, cM, addressFromStringValue(cL), ck, addressFromStringValue(cN))
475+ else throw("Strict value is not equal to itself.")
476+ }
477+ else throw("Strict value is not equal to itself.")
478+ }
479+ else throw("Strict value is not equal to itself.")
480+ }
466481 else nil
467482 }
468- else aS((("[" + ar) + "] withdrawAssetWrapper() error"))
483+ else aS((("[" + ar) + "] getWithdrawAssetState() error"))
469484 }
470485
471486
472-func cQ (ar,ca) = {
473- let cR = {
474- let bX = bh(ar)
475- if ($isInstanceOf(bX, "ByteVector"))
476- then {
477- let cz = bX
478- assetBalance(this, cz)
479- }
480- else if ($isInstanceOf(bX, "Unit"))
481- then {
482- let cS = bX
483- wavesBalance(this).available
484- }
485- else throw("Match error")
486- }
487- if ((ca > cR))
488- then {
489- let cT = (ca - cR)
490- cO(ar, cT)
491- }
492- else nil
487+func cT (cU,cV,cW,cX) = {
488+ let cY = D(cW, cU)
489+ let cZ = D(cX, cV)
490+ bQ(cZ, cY)
493491 }
494492
495493
496-func cU (cV,cW,cX,cY) = {
497- let cZ = D(cX, cV)
498- let da = D(cY, cW)
499- bQ(da, cZ)
494+func da (cW,cX,db) = {
495+ let dc = be()
496+ let dd = parseIntValue(dc[t])
497+ let de = parseIntValue(dc[u])
498+ let df = cT(dd, de, cW, cX)
499+ let bS = D(cW, dd)
500+ let bR = D(cX, de)
501+ let dg = D(db, b)
502+ let dh = bQ(bS, dg)
503+ let di = bQ(bR, dg)
504+[df, dh, di]
500505 }
501506
502507
503-func db (cX,cY,dc) = {
504- let dd = be()
505- let de = parseIntValue(dd[t])
506- let df = parseIntValue(dd[u])
507- let dg = cU(de, df, cX, cY)
508- let bS = D(cX, de)
509- let bR = D(cY, df)
510- let dh = D(dc, b)
511- let di = bQ(bS, dh)
512- let dj = bQ(bR, dh)
513-[dg, di, dj]
508+func dj (cW,cX,db) = {
509+ let dk = da(cW, cX, db)
510+[H(dk[0], b), H(dk[1], b), H(dk[2], b)]
514511 }
515512
516513
517-func dk (cX,cY,dc) = {
518- let dl = db(cX, cY, dc)
519-[H(dl[0], b), H(dl[1], b), H(dl[2], b)]
520- }
521-
522-
523-func dm (dn,do,dp,ab) = {
524- let dd = be()
525- let dq = dd[q]
526- let dr = dd[r]
527- let ds = dd[s]
528- let cV = parseIntValue(dd[t])
529- let cW = parseIntValue(dd[u])
530- let dt = dd[p]
531- let du = valueOrErrorMessage(assetInfo(fromBase58String(dq)), (("Asset " + dq) + " doesn't exist")).quantity
532- if ((dq != do))
514+func dl (dm,dn,do,ab) = {
515+ let dc = be()
516+ let dp = dc[q]
517+ let dq = dc[r]
518+ let dr = dc[s]
519+ let cU = parseIntValue(dc[t])
520+ let cV = parseIntValue(dc[u])
521+ let ds = dc[p]
522+ let dt = valueOrErrorMessage(assetInfo(fromBase58String(dp)), (("Asset " + dp) + " doesn't exist")).quantity
523+ if ((dp != dn))
533524 then throw("Invalid asset passed.")
534525 else {
535- let dv = bN(dr)
536- let dw = D(dv, cV)
537- let dx = bN(ds)
538- let dy = D(dx, cW)
539- let dz = bQ(dy, dw)
540- let dA = H(dz, b)
541- let dB = D(dp, b)
542- let dC = D(du, b)
543- let dD = fraction(dw, dB, dC)
544- let dE = fraction(dy, dB, dC)
526+ let du = bN(dq)
527+ let dv = D(du, cU)
528+ let dw = bN(dr)
529+ let dx = D(dw, cV)
530+ let dy = bQ(dx, dv)
531+ let dz = H(dy, b)
532+ let dA = D(do, b)
533+ let dB = D(dt, b)
534+ let dC = fraction(dv, dA, dB)
535+ let dD = fraction(dx, dA, dB)
536+ let dE = K(dC, cU, FLOOR)
545537 let dF = K(dD, cV, FLOOR)
546- let dG = K(dE, cW, FLOOR)
547- let dH = cQ(dr, dF)
548- if ((dH == dH))
538+ let dG = cO(dq, dE)
539+ if ((dG == dG))
549540 then {
550- let dI = cQ(ds, dG)
551- if ((dI == dI))
541+ let dH = cO(dr, dF)
542+ if ((dH == dH))
552543 then {
553- let dJ = invoke(this, "rebalance", nil, nil)
554- if ((dJ == dJ))
555- then {
556- let dK = if ((dn == ""))
557- then nil
558- else ((dH ++ dI) ++ [ScriptTransfer(ab, dF, if ((dr == "WAVES"))
559- then unit
560- else fromBase58String(dr)), ScriptTransfer(ab, dG, if ((ds == "WAVES"))
561- then unit
562- else fromBase58String(ds)), StringEntry(ad(toString(ab), dn), bJ(dF, dG, dp, dA, height, lastBlock.timestamp)), IntegerEntry(W(), dA), IntegerEntry(X(height, lastBlock.timestamp), dA)])
563- $Tuple10(dF, dG, dr, ds, dv, dx, du, dz, dt, dK)
564- }
565- else throw("Strict value is not equal to itself.")
544+ let dI = if ((dm == ""))
545+ then nil
546+ else ((dG ++ dH) ++ [ScriptTransfer(ab, dE, if ((dq == "WAVES"))
547+ then unit
548+ else fromBase58String(dq)), ScriptTransfer(ab, dF, if ((dr == "WAVES"))
549+ then unit
550+ else fromBase58String(dr)), StringEntry(ad(toString(ab), dm), bJ(dE, dF, do, dz, height, lastBlock.timestamp)), IntegerEntry(W(), dz), IntegerEntry(X(height, lastBlock.timestamp), dz)])
551+ $Tuple10(dE, dF, dq, dr, du, dw, dt, dy, ds, dI)
566552 }
567553 else throw("Strict value is not equal to itself.")
568554 }
569555 else throw("Strict value is not equal to itself.")
570556 }
571557 }
572558
573559
574-func dL (dn,dM,dN,dO,dP,dQ,ab,dR,dS) = {
575- let dd = be()
576- let dq = fromBase58String(dd[q])
577- let dT = dd[r]
578- let dU = dd[s]
579- let dV = dd[v]
580- let dW = dd[w]
581- let de = parseIntValue(dd[t])
582- let df = parseIntValue(dd[u])
583- let dt = dd[p]
584- let du = valueOrErrorMessage(assetInfo(dq), (("Asset " + toBase58String(dq)) + " doesn't exist")).quantity
585- let dX = toBase58String(valueOrElse(dO, fromBase58String("WAVES")))
586- let dY = toBase58String(valueOrElse(dQ, fromBase58String("WAVES")))
587- if (if ((dT != dX))
560+func dJ (dm,dK,dL,dM,dN,dO,ab,dP,dQ) = {
561+ let dc = be()
562+ let dp = fromBase58String(dc[q])
563+ let dR = dc[r]
564+ let dS = dc[s]
565+ let dT = dc[v]
566+ let dU = dc[w]
567+ let dd = parseIntValue(dc[t])
568+ let de = parseIntValue(dc[u])
569+ let ds = dc[p]
570+ let dt = valueOrErrorMessage(assetInfo(dp), (("Asset " + toBase58String(dp)) + " doesn't exist")).quantity
571+ let dV = toBase58String(valueOrElse(dM, fromBase58String("WAVES")))
572+ let dW = toBase58String(valueOrElse(dO, fromBase58String("WAVES")))
573+ if (if ((dR != dV))
588574 then true
589- else (dU != dY))
575+ else (dS != dW))
590576 then throw("Invalid amt or price asset passed.")
591577 else {
592- let dv = if (dR)
593- then bN(dT)
594- else (bN(dT) - dN)
595- let dx = if (dR)
596- then bN(dU)
597- else (bN(dU) - dP)
598- let dZ = D(dN, de)
599- let ea = D(dP, df)
600- let eb = bQ(ea, dZ)
601- let dw = D(dv, de)
602- let dy = D(dx, df)
603- let ec = if ((du == 0))
578+ let du = if (dP)
579+ then bN(dR)
580+ else (bN(dR) - dL)
581+ let dw = if (dP)
582+ then bN(dS)
583+ else (bN(dS) - dN)
584+ let dX = D(dL, dd)
585+ let dY = D(dN, de)
586+ let dZ = bQ(dY, dX)
587+ let dv = D(du, dd)
588+ let dx = D(dw, de)
589+ let ea = if ((dt == 0))
604590 then {
605- let dz = e
606- let ed = e
607- let dh = pow((dZ * ea), 0, toBigInt(5), 1, 0, DOWN)
608- $Tuple5(H(dh, b), H(dZ, de), H(ea, df), bQ((dy + ea), (dw + dZ)), ed)
591+ let dy = e
592+ let eb = e
593+ let dg = pow((dX * dY), 0, toBigInt(5), 1, 0, DOWN)
594+ $Tuple5(H(dg, b), H(dX, dd), H(dY, de), bQ((dx + dY), (dv + dX)), eb)
609595 }
610596 else {
611- let dz = bQ(dy, dw)
612- let ed = fraction(R((dz - eb)), d, dz)
613- let ee = D(dM, b)
614- if (if ((dz != e))
615- then (ed > ee)
597+ let dy = bQ(dx, dv)
598+ let eb = fraction(R((dy - dZ)), d, dy)
599+ let ec = D(dK, b)
600+ if (if ((dy != e))
601+ then (eb > ec)
616602 else false)
617- then throw(((("Price slippage " + toString(ed)) + " exceeded the passed limit of ") + toString(ee)))
603+ then throw(((("Price slippage " + toString(eb)) + " exceeded the passed limit of ") + toString(ec)))
618604 else {
619- let dC = D(du, b)
620- let ef = fraction(dZ, bT(dy, dw, CEILING), d, CEILING)
621- let eg = fraction(ea, d, bT(dy, dw, FLOOR), CEILING)
622- let eh = if ((ef > ea))
623- then $Tuple2(eg, ea)
624- else $Tuple2(dZ, ef)
625- let ei = eh._1
626- let ej = eh._2
627- let dh = fraction(dC, ej, dy, FLOOR)
628- $Tuple5(K(dh, b, FLOOR), K(ei, de, CEILING), K(ej, df, CEILING), dz, ed)
605+ let dB = D(dt, b)
606+ let ed = fraction(dX, bT(dx, dv, CEILING), d, CEILING)
607+ let ee = fraction(dY, d, bT(dx, dv, FLOOR), CEILING)
608+ let ef = if ((ed > dY))
609+ then $Tuple2(ee, dY)
610+ else $Tuple2(dX, ed)
611+ let eg = ef._1
612+ let eh = ef._2
613+ let dg = fraction(dB, eh, dx, FLOOR)
614+ $Tuple5(K(dg, b, FLOOR), K(eg, dd, CEILING), K(eh, de, CEILING), dy, eb)
629615 }
630616 }
631- let ek = ec._1
632- let el = ec._2
633- let em = ec._3
634- let dA = H(ec._4, b)
635- let en = H(ec._5, b)
636- if ((0 >= ek))
617+ let ei = ea._1
618+ let ej = ea._2
619+ let ek = ea._3
620+ let dz = H(ea._4, b)
621+ let el = H(ea._5, b)
622+ if ((0 >= ei))
637623 then throw("Invalid calculations. LP calculated is less than zero.")
638624 else {
639- let eo = if (!(dS))
625+ let em = if (!(dQ))
640626 then 0
641- else ek
642- let ep = (dN - el)
643- let eq = (dP - em)
644- let er = [IntegerEntry(W(), dA), IntegerEntry(X(height, lastBlock.timestamp), dA), StringEntry(aa(ab, dn), by(el, em, eo, dA, dM, en, height, lastBlock.timestamp, ep, eq))]
645- $Tuple13(ek, eo, dA, dv, dx, du, dq, dt, er, ep, eq, dO, dQ)
627+ else ei
628+ let en = (dL - ej)
629+ let eo = (dN - ek)
630+ let ep = [IntegerEntry(W(), dz), IntegerEntry(X(height, lastBlock.timestamp), dz), StringEntry(aa(ab, dm), by(ej, ek, em, dz, dK, el, height, lastBlock.timestamp, en, eo))]
631+ $Tuple13(ei, em, dz, du, dw, dt, dp, ds, ep, en, eo, dM, dO)
646632 }
647633 }
648634 }
649635
650636
651-func es (et,eu,du) = {
652- let ev = G(et, toBigInt(bt))
653- let ew = G(eu, toBigInt(bu))
654- let ex = fraction(pow((ev * ew), 0, toBigInt(5), 1, 18, DOWN), g, du)
655- if ((du == f))
637+func eq (er,es,dt) = {
638+ let et = G(er, toBigInt(bt))
639+ let eu = G(es, toBigInt(bu))
640+ let ev = fraction(pow((et * eu), 0, toBigInt(5), 1, 18, DOWN), g, dt)
641+ if ((dt == f))
656642 then f
657- else ex
643+ else ev
658644 }
659645
660646
661-func ey (ez,eA,eB) = {
662- let eC = (toBigInt(bN(bj(br))) - ez)
663- let eD = (toBigInt(bN(bj(bs))) - eA)
664- let eE = (toBigInt(value(assetInfo(bq)).quantity) - eB)
665- let eF = es(eC, eD, eE)
666- eF
647+func ew (ex,ey,ez) = {
648+ let eA = (toBigInt(bN(bj(br))) - ex)
649+ let eB = (toBigInt(bN(bj(bs))) - ey)
650+ let eC = (toBigInt(value(assetInfo(bq)).quantity) - ez)
651+ let eD = eq(eA, eB, eC)
652+ eD
667653 }
668654
669655
670-func eG (eH,eI,eB) = {
671- let eC = (bN(bj(br)) + eH)
672- let eD = (bN(bj(bs)) + eI)
673- let eE = (value(assetInfo(bq)).quantity + eB)
674- let ex = es(toBigInt(eC), toBigInt(eD), toBigInt(eE))
675- let eJ = [IntegerEntry(ak, height), StringEntry(aj, toString(ex))]
676- $Tuple2(eJ, ex)
656+func eE (eF,eG,ez) = {
657+ let eA = (bN(bj(br)) + eF)
658+ let eB = (bN(bj(bs)) + eG)
659+ let eC = (value(assetInfo(bq)).quantity + ez)
660+ let ev = eq(toBigInt(eA), toBigInt(eB), toBigInt(eC))
661+ let eH = [IntegerEntry(ak, height), StringEntry(aj, toString(ev))]
662+ $Tuple2(eH, ev)
677663 }
678664
679665
680-func eK (eL,ex) = if ((ex >= eL))
666+func eI (eJ,ev) = if ((ev >= eJ))
681667 then true
682- else aS(makeString(["updated KLp lower than current KLp", toString(eL), toString(ex)], " "))
668+ else aS(makeString(["updated KLp lower than current KLp", toString(eJ), toString(ev)], " "))
683669
684670
685-func eM (eN) = {
686- let eC = bN(bj(br))
687- let eD = bN(bj(bs))
688- let eO = eN.amount
689- let eP = fraction(eN.amount, eN.price, b, FLOOR)
690- let eQ = if ((eN.orderType == Buy))
691- then $Tuple2(eO, -(eP))
692- else $Tuple2(-(eO), eP)
693- let eH = eQ._1
694- let eI = eQ._2
671+func eK (eL) = {
672+ let eA = bN(bj(br))
673+ let eB = bN(bj(bs))
674+ let eM = eL.amount
675+ let eN = fraction(eL.amount, eL.price, b, FLOOR)
676+ let eO = if ((eL.orderType == Buy))
677+ then $Tuple2(eM, -(eN))
678+ else $Tuple2(-(eM), eN)
679+ let eF = eO._1
680+ let eG = eO._2
695681 if (if (if (bc())
696682 then true
697683 else (bp == m))
698684 then true
699685 else (bp == n))
700686 then throw("Exchange operations disabled")
701- else if (if ((eN.assetPair.amountAsset != br))
687+ else if (if ((eL.assetPair.amountAsset != br))
702688 then true
703- else (eN.assetPair.priceAsset != bs))
689+ else (eL.assetPair.priceAsset != bs))
704690 then throw("Wrong order assets.")
705691 else {
706- let eR = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aU("invalid kLp"))
707- let eS = eG(eH, eI, 0)
708- let eT = eS._1
709- let eU = eS._2
710- let eV = (eU >= eR)
711- let eW = makeString(["kLp=", toString(eR), " kLpNew=", toString(eU), " amountAssetBalance=", toString(eC), " priceAssetBalance=", toString(eD), " amountAssetBalanceDelta=", toString(eH), " priceAssetBalanceDelta=", toString(eI), " height=", toString(height)], "")
712- $Tuple2(eV, eW)
692+ let eP = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aU("invalid kLp"))
693+ let eQ = eE(eF, eG, 0)
694+ let eR = eQ._1
695+ let eS = eQ._2
696+ let eT = (eS >= eP)
697+ let eU = makeString(["kLp=", toString(eP), " kLpNew=", toString(eS), " amountAssetBalance=", toString(eA), " priceAssetBalance=", toString(eB), " amountAssetBalanceDelta=", toString(eF), " priceAssetBalanceDelta=", toString(eG), " height=", toString(height)], "")
698+ $Tuple2(eT, eU)
713699 }
714700 }
715701
716702
717-func eX (eY) = if ((size(eY.payments) != 1))
703+func eV (eW) = if ((size(eW.payments) != 1))
718704 then throw("exactly 1 payment is expected")
719705 else {
720- let eZ = value(eY.payments[0])
721- let do = value(eZ.assetId)
722- let fa = eZ.amount
723- let ec = dm(toBase58String(eY.transactionId), toBase58String(do), fa, eY.caller)
724- let dF = ec._1
725- let dG = ec._2
726- let dt = parseIntValue(ec._9)
727- let dK = ec._10
706+ let eX = value(eW.payments[0])
707+ let dn = value(eX.assetId)
708+ let eY = eX.amount
709+ let ea = dl(toBase58String(eW.transactionId), toBase58String(dn), eY, eW.caller)
710+ let dE = ea._1
711+ let dF = ea._2
712+ let ds = parseIntValue(ea._9)
713+ let dI = ea._10
728714 if (if (bc())
729715 then true
730- else (dt == n))
731- then throw(("Get operation is blocked by admin. Status = " + toString(dt)))
732- else $Tuple5(dF, dG, fa, do, dK)
716+ else (ds == n))
717+ then throw(("Get operation is blocked by admin. Status = " + toString(ds)))
718+ else $Tuple5(dE, dF, eY, dn, dI)
733719 }
734720
735721
736-func fb (eY,dM,dS) = if ((size(eY.payments) != 2))
722+func eZ (eW,dK,dQ) = if ((size(eW.payments) != 2))
737723 then throw("exactly 2 payments are expected")
738724 else {
739- let fc = value(eY.payments[0])
740- let fd = value(eY.payments[1])
741- let fe = dL(toBase58String(eY.transactionId), dM, fc.amount, fc.assetId, fd.amount, fd.assetId, toString(eY.caller), false, dS)
742- let dt = parseIntValue(fe._8)
725+ let fa = value(eW.payments[0])
726+ let fb = value(eW.payments[1])
727+ let fc = dJ(toBase58String(eW.transactionId), dK, fa.amount, fa.assetId, fb.amount, fb.assetId, toString(eW.caller), false, dQ)
728+ let ds = parseIntValue(fc._8)
743729 if (if (if (bc())
744730 then true
745- else (dt == l))
731+ else (ds == l))
746732 then true
747- else (dt == n))
748- then throw(("Put operation is blocked by admin. Status = " + toString(dt)))
749- else fe
733+ else (ds == n))
734+ then throw(("Put operation is blocked by admin. Status = " + toString(ds)))
735+ else fc
750736 }
751737
752738
753-func ff (ca) = {
754- let fg = invoke(aV, "emit", [ca], nil)
755- if ((fg == fg))
739+func fd (ca) = {
740+ let fe = invoke(aV, "emit", [ca], nil)
741+ if ((fe == fe))
756742 then {
757- let fh = {
758- let bX = fg
743+ let ff = {
744+ let bX = fe
759745 if ($isInstanceOf(bX, "Address"))
760746 then {
761- let fi = bX
762- invoke(fi, "emit", [ca], nil)
747+ let fg = bX
748+ invoke(fg, "emit", [ca], nil)
763749 }
764750 else unit
765751 }
766- if ((fh == fh))
752+ if ((ff == ff))
767753 then ca
768754 else throw("Strict value is not equal to itself.")
769755 }
770756 else throw("Strict value is not equal to itself.")
771757 }
772758
773759
774-func fj (ca,ai) = {
775- let fk = if ((ai == 0))
760+func fh (ca,ai) = {
761+ let fi = if ((ai == 0))
776762 then 0
777763 else fraction(ca, ai, b)
778- $Tuple2((ca - fk), fk)
764+ $Tuple2((ca - fi), fi)
779765 }
780766
781767
782-func fl (fm,fn,ab,ac) = {
783- let fo = (ac == unit)
784- let fp = bN(bj(br))
785- let fq = bN(bj(bs))
786- let fr = if ((fn == br))
768+func fj (fk,fl,ab,ac) = {
769+ let fm = (ac == unit)
770+ let fn = bN(bj(br))
771+ let fo = bN(bj(bs))
772+ let fp = if ((fl == br))
787773 then true
788- else if ((fn == bs))
774+ else if ((fl == bs))
789775 then false
790776 else aS("invalid asset")
791- let fs = if (fo)
792- then $Tuple2(fp, fq)
793- else if (fr)
794- then $Tuple2((fp - fm), fq)
795- else $Tuple2(fp, (fq - fm))
796- let ft = fs._1
797- let fu = fs._2
798- let fv = if (fr)
799- then $Tuple2(fm, 0)
800- else $Tuple2(0, fm)
801- let fw = fv._1
802- let fx = fv._2
803- let eO = fj(fw, aX)._1
804- let eP = fj(fx, aX)._1
805- let fy = fj(fm, aX)
806- let fz = fy._1
807- let fk = fy._2
808- let fA = (ft + eO)
809- let fB = (fu + eP)
810- let fC = bQ(D(fB, bu), D(fA, bt))
811- let fD = H(fC, b)
812- let fE = if (fr)
813- then ft
814- else fu
815- let fF = toBigInt(fE)
816- let fG = toBigInt(valueOrErrorMessage(assetInfo(bq), (("asset " + toBase58String(bq)) + " doesn't exist")).quantity)
817- let fH = if ((fG > f))
777+ let fq = if (fm)
778+ then $Tuple2(fn, fo)
779+ else if (fp)
780+ then $Tuple2((fn - fk), fo)
781+ else $Tuple2(fn, (fo - fk))
782+ let fr = fq._1
783+ let fs = fq._2
784+ let ft = if (fp)
785+ then $Tuple2(fk, 0)
786+ else $Tuple2(0, fk)
787+ let fu = ft._1
788+ let fv = ft._2
789+ let eM = fh(fu, aX)._1
790+ let eN = fh(fv, aX)._1
791+ let fw = fh(fk, aX)
792+ let fx = fw._1
793+ let fi = fw._2
794+ let fy = (fr + eM)
795+ let fz = (fs + eN)
796+ let fA = bQ(D(fz, bu), D(fy, bt))
797+ let fB = H(fA, b)
798+ let fC = if (fp)
799+ then fr
800+ else fs
801+ let fD = toBigInt(fC)
802+ let fE = toBigInt(valueOrErrorMessage(assetInfo(bq), (("asset " + toBase58String(bq)) + " doesn't exist")).quantity)
803+ let fF = if ((fE > f))
818804 then true
819805 else aS("initial deposit requires all coins")
820- if ((fH == fH))
806+ if ((fF == fF))
821807 then {
822- let fI = toBigInt(fz)
823- let fJ = max([0, toInt(((fG * (sqrtBigInt((d + ((fI * d) / fF)), 18, 18, DOWN) - d)) / d))])
824- let er = if (fo)
808+ let fG = toBigInt(fx)
809+ let fH = max([0, toInt(((fE * (sqrtBigInt((d + ((fG * d) / fD)), 18, 18, DOWN) - d)) / d))])
810+ let ep = if (fm)
825811 then nil
826- else [IntegerEntry(W(), fD), IntegerEntry(X(height, lastBlock.timestamp), fD), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), by(fw, fx, fJ, fD, 0, 0, height, lastBlock.timestamp, 0, 0))]
827- let fK = bQ(D(fu, bu), D(ft, bt))
828- let fL = H(fK, b)
829- let fM = {
830- let fN = if (fr)
831- then $Tuple2(fw, ft)
832- else $Tuple2(fx, fu)
833- let ca = fN._1
834- let fO = fN._2
835- let fP = toInt(fraction(fG, toBigInt((ca / 2)), toBigInt(fO)))
836- fraction((fJ - fP), b, fP)
812+ else [IntegerEntry(W(), fB), IntegerEntry(X(height, lastBlock.timestamp), fB), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), by(fu, fv, fH, fB, 0, 0, height, lastBlock.timestamp, 0, 0))]
813+ let fI = bQ(D(fs, bu), D(fr, bt))
814+ let fJ = H(fI, b)
815+ let fK = {
816+ let fL = if (fp)
817+ then $Tuple2(fu, fr)
818+ else $Tuple2(fv, fs)
819+ let ca = fL._1
820+ let fM = fL._2
821+ let fN = toInt(fraction(fE, toBigInt((ca / 2)), toBigInt(fM)))
822+ fraction((fH - fN), b, fN)
837823 }
838- $Tuple5(fJ, er, fk, fM, fr)
824+ $Tuple5(fH, ep, fi, fK, fp)
839825 }
840826 else throw("Strict value is not equal to itself.")
841827 }
842828
843829
844-func fQ (fR,fz,fn,ab,ac) = {
845- let fo = (ac == unit)
846- let dd = be()
847- let de = parseIntValue(dd[t])
848- let df = parseIntValue(dd[u])
849- let fS = [if ((fn == bq))
830+func fO (fP,fx,fl,ab,ac) = {
831+ let fm = (ac == unit)
832+ let dc = be()
833+ let dd = parseIntValue(dc[t])
834+ let de = parseIntValue(dc[u])
835+ let fQ = [if ((fl == bq))
850836 then true
851837 else aS("invalid lp asset")]
852- if ((fS == fS))
838+ if ((fQ == fQ))
853839 then {
854- let fT = if ((fR == br))
840+ let fR = if ((fP == br))
855841 then true
856- else if ((fR == bs))
842+ else if ((fP == bs))
857843 then false
858844 else aS("invalid asset")
859- let fU = if (fT)
845+ let fS = if (fR)
860846 then toBigInt(bN(bj(br)))
861847 else toBigInt(bN(bj(bs)))
862- let fV = if (fT)
863- then de
864- else df
865- let fW = bN(bj(br))
866- let fX = bN(bj(bs))
867- let fY = if (fT)
868- then fW
869- else fX
870- let fZ = toBigInt(fY)
871- let fG = toBigInt(valueOrErrorMessage(assetInfo(bq), (("asset " + toBase58String(bq)) + " doesn't exist")).quantity)
872- let ga = toBigInt(fz)
873- let gb = max([0, toInt(((fU * (d - pow((d - ((ga * d) / fG)), 18, h, 0, 18, DOWN))) / d))])
874- let gc = fj(gb, aZ)
848+ let fT = if (fR)
849+ then dd
850+ else de
851+ let fU = bN(bj(br))
852+ let fV = bN(bj(bs))
853+ let fW = if (fR)
854+ then fU
855+ else fV
856+ let fX = toBigInt(fW)
857+ let fE = toBigInt(valueOrErrorMessage(assetInfo(bq), (("asset " + toBase58String(bq)) + " doesn't exist")).quantity)
858+ let fY = toBigInt(fx)
859+ let fZ = max([0, toInt(((fS * (d - pow((d - ((fY * d) / fE)), 18, h, 0, 18, DOWN))) / d))])
860+ let ga = fh(fZ, aZ)
861+ let gb = ga._1
862+ let fi = ga._2
863+ let gc = if (fR)
864+ then $Tuple4(gb, 0, (fU - fZ), fV)
865+ else $Tuple4(0, gb, fU, (fV - fZ))
875866 let gd = gc._1
876- let fk = gc._2
877- let ge = if (fT)
878- then $Tuple4(gd, 0, (fW - gb), fX)
879- else $Tuple4(0, gd, fW, (fX - gb))
880- let gf = ge._1
881- let gg = ge._2
882- let gh = ge._3
883- let gi = ge._4
884- let fC = bQ(D(gi, bu), D(gh, bt))
885- let fD = H(fC, b)
886- let er = if (fo)
867+ let ge = gc._2
868+ let gf = gc._3
869+ let gg = gc._4
870+ let fA = bQ(D(gg, bu), D(gf, bt))
871+ let fB = H(fA, b)
872+ let ep = if (fm)
887873 then nil
888- else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bJ(gf, gg, fz, fD, height, lastBlock.timestamp)), IntegerEntry(W(), fD), IntegerEntry(X(height, lastBlock.timestamp), fD)]
889- let fK = bQ(D(fX, bu), D(fW, bt))
890- let fL = H(fK, b)
891- let fM = {
892- let gj = (toInt(fraction(fU, ga, fG)) * 2)
893- fraction((gd - gj), b, gj)
874+ else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bJ(gd, ge, fx, fB, height, lastBlock.timestamp)), IntegerEntry(W(), fB), IntegerEntry(X(height, lastBlock.timestamp), fB)]
875+ let fI = bQ(D(fV, bu), D(fU, bt))
876+ let fJ = H(fI, b)
877+ let fK = {
878+ let gh = (toInt(fraction(fS, fY, fE)) * 2)
879+ fraction((gb - gh), b, gh)
894880 }
895- $Tuple5(gd, er, fk, fM, fT)
881+ $Tuple5(gb, ep, fi, fK, fR)
896882 }
897883 else throw("Strict value is not equal to itself.")
898884 }
899885
900886
901-func gk () = {
887+func gi () = {
902888 let bX = getString(U())
903889 if ($isInstanceOf(bX, "String"))
904890 then {
905- let gl = bX
906- fromBase58String(gl)
891+ let gj = bX
892+ fromBase58String(gj)
907893 }
908894 else if ($isInstanceOf(bX, "Unit"))
909895 then unit
910896 else throw("Match error")
911897 }
912898
913899
914-func gm () = {
900+func gk () = {
915901 let bX = getString(V())
916902 if ($isInstanceOf(bX, "String"))
917903 then {
918- let gl = bX
919- fromBase58String(gl)
904+ let gj = bX
905+ fromBase58String(gj)
920906 }
921907 else if ($isInstanceOf(bX, "Unit"))
922908 then unit
923909 else throw("Match error")
924910 }
925911
926912
927-func gn (eY) = {
928- let bX = gk()
913+func gl (eW) = {
914+ let bX = gi()
929915 if ($isInstanceOf(bX, "ByteVector"))
930916 then {
931- let go = bX
932- (eY.callerPublicKey == go)
917+ let gm = bX
918+ (eW.callerPublicKey == gm)
933919 }
934920 else if ($isInstanceOf(bX, "Unit"))
935- then (eY.caller == this)
921+ then (eW.caller == this)
936922 else throw("Match error")
937923 }
938924
939925
940-func gp (eY) = {
941- let gq = throw("Permission denied")
942- let bX = gk()
926+func gn (eW) = {
927+ let go = throw("Permission denied")
928+ let bX = gi()
943929 if ($isInstanceOf(bX, "ByteVector"))
944930 then {
945- let go = bX
946- if ((eY.callerPublicKey == go))
931+ let gm = bX
932+ if ((eW.callerPublicKey == gm))
947933 then true
948- else gq
934+ else go
949935 }
950936 else if ($isInstanceOf(bX, "Unit"))
951- then if ((eY.caller == this))
937+ then if ((eW.caller == this))
952938 then true
953- else gq
939+ else go
954940 else throw("Match error")
955941 }
956942
957943
958-@Callable(eY)
944+@Callable(eW)
959945 func rebalance () = (cG(aO(this, ae())) ++ cG(aO(this, af())))
960946
961947
962948
963-@Callable(eY)
964-func calculateAmountOutForSwapREADONLY (gr,gs,gt) = {
965- let gu = if ((gs == false))
949+@Callable(eW)
950+func calculateAmountOutForSwapREADONLY (gp,gq,gr) = {
951+ let gs = if ((gq == false))
966952 then {
967- let gv = aO(this, af())
968- let gw = aO(this, ae())
969- $Tuple2(gv, gw)
953+ let gt = aO(this, af())
954+ let gu = aO(this, ae())
955+ $Tuple2(gt, gu)
970956 }
971957 else {
972- let gv = aO(this, ae())
973- let gw = aO(this, af())
974- $Tuple2(gv, gw)
958+ let gt = aO(this, ae())
959+ let gu = aO(this, af())
960+ $Tuple2(gt, gu)
975961 }
976- let gv = gu._1
977- let gw = gu._2
978- let gx = bN(gw)
979- let gy = bN(gv)
980- let gz = fraction(gy, gr, (gx + gr))
981- let gA = (toBigInt(gx) * toBigInt(gy))
982- let gB = (((toBigInt(bN(gw)) + toBigInt(gr)) + toBigInt(gt)) * (toBigInt(bN(gv)) - toBigInt(gz)))
983- let gC = if ((gB >= gA))
962+ let gt = gs._1
963+ let gu = gs._2
964+ let gv = bN(gu)
965+ let gw = bN(gt)
966+ let gx = fraction(gw, gp, (gv + gp))
967+ let gy = (toBigInt(gv) * toBigInt(gw))
968+ let gz = (((toBigInt(bN(gu)) + toBigInt(gp)) + toBigInt(gr)) * (toBigInt(bN(gt)) - toBigInt(gx)))
969+ let gA = if ((gz >= gy))
984970 then true
985971 else throw("new K is fewer error")
986- if ((gC == gC))
987- then $Tuple2(nil, gz)
972+ if ((gA == gA))
973+ then $Tuple2(nil, gx)
988974 else throw("Strict value is not equal to itself.")
989975 }
990976
991977
992978
993-@Callable(eY)
994-func calculateAmountOutForSwapAndSendTokens (gr,gs,gD,gE,gt) = {
995- let gF = {
979+@Callable(eW)
980+func calculateAmountOutForSwapAndSendTokens (gp,gq,gB,gC,gr) = {
981+ let gD = {
996982 let aY = invoke(aV, "getSwapContractREADONLY", nil, nil)
997983 if ($isInstanceOf(aY, "String"))
998984 then aY
999985 else throw(($getType(aY) + " couldn't be cast to String"))
1000986 }
1001- let fS = [if ((value(eY.payments[0]).amount >= gr))
987+ let fQ = [if ((value(eW.payments[0]).amount >= gp))
1002988 then true
1003- else aS("Wrong amount"), if ((eY.caller == addressFromStringValue(gF)))
989+ else aS("Wrong amount"), if ((eW.caller == addressFromStringValue(gD)))
1004990 then true
1005991 else aS("Permission denied")]
1006- if ((fS == fS))
992+ if ((fQ == fQ))
1007993 then {
1008- let eZ = value(eY.payments[0])
1009- let gw = bj(eZ.assetId)
1010- let gv = if ((gs == false))
994+ let eX = value(eW.payments[0])
995+ let gu = bj(eX.assetId)
996+ let gt = if ((gq == false))
1011997 then aO(this, af())
1012998 else aO(this, ae())
1013- let gx = (bN(gw) - value(eY.payments[0]).amount)
1014- let gy = bN(gv)
1015- let gz = fraction(gy, gr, (gx + gr))
1016- let gA = (toBigInt(gx) * toBigInt(gy))
1017- let gB = ((toBigInt(bN(gw)) + toBigInt(gt)) * (toBigInt(bN(gv)) - toBigInt(gz)))
1018- let gC = if ((gB >= gA))
999+ let gv = (bN(gu) - value(eW.payments[0]).amount)
1000+ let gw = bN(gt)
1001+ let gx = fraction(gw, gp, (gv + gp))
1002+ let gy = (toBigInt(gv) * toBigInt(gw))
1003+ let gz = ((toBigInt(bN(gu)) + toBigInt(gr)) * (toBigInt(bN(gt)) - toBigInt(gx)))
1004+ let gA = if ((gz >= gy))
10191005 then true
10201006 else throw("new K is fewer error")
1021- if ((gC == gC))
1007+ if ((gA == gA))
10221008 then {
1023- let gG = if ((gz >= gD))
1009+ let gE = if ((gx >= gB))
10241010 then true
10251011 else throw("Exchange result is fewer coins than expected")
1026- if ((gG == gG))
1012+ if ((gE == gE))
10271013 then {
1028- let gH = {
1029- let bX = cu(gv)
1014+ let gF = {
1015+ let bX = cu(gt)
10301016 if ($isInstanceOf(bX, "(Boolean, Int, Int, String, String, Int, String)"))
10311017 then {
10321018 let cH = bX
10331019 cH
10341020 }
10351021 else throw("error lease config")
10361022 }
1037- let gI = cQ(gv, gz)
1038- if ((gI == gI))
1039- then {
1040- let dJ = invoke(this, "rebalance", nil, nil)
1041- if ((dJ == dJ))
1042- then $Tuple2((gI ++ [ScriptTransfer(addressFromStringValue(gE), gz, bh(gv))]), gz)
1043- else throw("Strict value is not equal to itself.")
1044- }
1023+ let gG = cO(gt, gx)
1024+ if ((gG == gG))
1025+ then $Tuple2((gG ++ [ScriptTransfer(addressFromStringValue(gC), gx, bh(gt))]), gx)
10451026 else throw("Strict value is not equal to itself.")
10461027 }
10471028 else throw("Strict value is not equal to itself.")
10481029 }
10491030 else throw("Strict value is not equal to itself.")
10501031 }
10511032 else throw("Strict value is not equal to itself.")
10521033 }
10531034
10541035
10551036
1056-@Callable(eY)
1057-func setManager (gJ) = {
1058- let gK = gp(eY)
1059- if ((gK == gK))
1037+@Callable(eW)
1038+func setManager (gH) = {
1039+ let gI = gn(eW)
1040+ if ((gI == gI))
10601041 then {
1061- let gL = fromBase58String(gJ)
1062- if ((gL == gL))
1063- then [StringEntry(V(), gJ)]
1042+ let gJ = fromBase58String(gH)
1043+ if ((gJ == gJ))
1044+ then [StringEntry(V(), gH)]
10641045 else throw("Strict value is not equal to itself.")
10651046 }
10661047 else throw("Strict value is not equal to itself.")
10671048 }
10681049
10691050
10701051
1071-@Callable(eY)
1052+@Callable(eW)
10721053 func confirmManager () = {
1073- let gM = gm()
1074- let gN = if (isDefined(gM))
1054+ let gK = gk()
1055+ let gL = if (isDefined(gK))
10751056 then true
10761057 else throw("No pending manager")
1077- if ((gN == gN))
1058+ if ((gL == gL))
10781059 then {
1079- let gO = if ((eY.callerPublicKey == value(gM)))
1060+ let gM = if ((eW.callerPublicKey == value(gK)))
10801061 then true
10811062 else throw("You are not pending manager")
1082- if ((gO == gO))
1083- then [StringEntry(U(), toBase58String(value(gM))), DeleteEntry(V())]
1063+ if ((gM == gM))
1064+ then [StringEntry(U(), toBase58String(value(gK))), DeleteEntry(V())]
10841065 else throw("Strict value is not equal to itself.")
10851066 }
10861067 else throw("Strict value is not equal to itself.")
10871068 }
10881069
10891070
10901071
1091-@Callable(eY)
1092-func put (dM,gP) = if ((0 > dM))
1072+@Callable(eW)
1073+func put (dK,gN) = if ((0 > dK))
10931074 then throw("Invalid slippageTolerance passed")
10941075 else {
1095- let fe = fb(eY, dM, true)
1096- let eo = fe._2
1097- let dq = fe._7
1098- let dK = fe._9
1099- let ep = fe._10
1100- let eq = fe._11
1101- let gQ = fe._12
1102- let gR = fe._13
1103- let fc = toBigInt(value(eY.payments[0]).amount)
1104- let fd = toBigInt(value(eY.payments[1]).amount)
1105- let eF = ey(fc, fd, toBigInt(0))
1106- if ((eF == eF))
1076+ let fc = eZ(eW, dK, true)
1077+ let em = fc._2
1078+ let dp = fc._7
1079+ let dI = fc._9
1080+ let en = fc._10
1081+ let eo = fc._11
1082+ let gO = fc._12
1083+ let gP = fc._13
1084+ let fa = toBigInt(value(eW.payments[0]).amount)
1085+ let fb = toBigInt(value(eW.payments[1]).amount)
1086+ let eD = ew(fa, fb, toBigInt(0))
1087+ if ((eD == eD))
11071088 then {
1108- let fg = invoke(aV, "emit", [eo], nil)
1109- if ((fg == fg))
1089+ let fe = invoke(aV, "emit", [em], nil)
1090+ if ((fe == fe))
11101091 then {
1111- let fh = {
1112- let bX = fg
1092+ let ff = {
1093+ let bX = fe
11131094 if ($isInstanceOf(bX, "Address"))
11141095 then {
1115- let fi = bX
1116- invoke(fi, "emit", [eo], nil)
1096+ let fg = bX
1097+ invoke(fg, "emit", [em], nil)
11171098 }
11181099 else unit
11191100 }
1120- if ((fh == fh))
1101+ if ((ff == ff))
11211102 then {
1122- let gS = if ((ep > 0))
1123- then invoke(bx, "put", nil, [AttachedPayment(gQ, ep)])
1103+ let gQ = if ((en > 0))
1104+ then invoke(bx, "put", nil, [AttachedPayment(gO, en)])
11241105 else nil
1125- if ((gS == gS))
1106+ if ((gQ == gQ))
11261107 then {
1127- let gT = if ((eq > 0))
1128- then invoke(bx, "put", nil, [AttachedPayment(gR, eq)])
1108+ let gR = if ((eo > 0))
1109+ then invoke(bx, "put", nil, [AttachedPayment(gP, eo)])
11291110 else nil
1130- if ((gT == gT))
1111+ if ((gR == gR))
11311112 then {
1132- let gU = if (gP)
1113+ let gS = if (gN)
11331114 then {
1134- let gV = invoke(bw, "stake", nil, [AttachedPayment(dq, eo)])
1135- if ((gV == gV))
1115+ let gT = invoke(bw, "stake", nil, [AttachedPayment(dp, em)])
1116+ if ((gT == gT))
11361117 then nil
11371118 else throw("Strict value is not equal to itself.")
11381119 }
1139- else [ScriptTransfer(eY.caller, eo, dq)]
1140- let gW = eG(0, 0, 0)
1141- if ((gW == gW))
1120+ else [ScriptTransfer(eW.caller, em, dp)]
1121+ let gU = eE(0, 0, 0)
1122+ if ((gU == gU))
11421123 then {
1143- let ex = gW._2
1144- let gX = gW._1
1145- let gY = eK(eF, ex)
1146- if ((gY == gY))
1124+ let ev = gU._2
1125+ let gV = gU._1
1126+ let gW = eI(eD, ev)
1127+ if ((gW == gW))
11471128 then {
1148- let dJ = invoke(this, "rebalance", nil, nil)
1149- if ((dJ == dJ))
1150- then ((dK ++ gU) ++ gX)
1129+ let gX = invoke(this, "rebalance", nil, nil)
1130+ if ((gX == gX))
1131+ then ((dI ++ gS) ++ gV)
11511132 else throw("Strict value is not equal to itself.")
11521133 }
11531134 else throw("Strict value is not equal to itself.")
11541135 }
11551136 else throw("Strict value is not equal to itself.")
11561137 }
11571138 else throw("Strict value is not equal to itself.")
11581139 }
11591140 else throw("Strict value is not equal to itself.")
11601141 }
11611142 else throw("Strict value is not equal to itself.")
11621143 }
11631144 else throw("Strict value is not equal to itself.")
11641145 }
11651146 else throw("Strict value is not equal to itself.")
11661147 }
11671148
11681149
11691150
1170-@Callable(eY)
1171-func putForFree (gZ) = if ((0 > gZ))
1151+@Callable(eW)
1152+func putForFree (gY) = if ((0 > gY))
11721153 then throw("Invalid value passed")
11731154 else {
1174- let fe = fb(eY, gZ, false)
1175- let dK = fe._9
1176- let fc = toBigInt(value(eY.payments[0]).amount)
1177- let fd = toBigInt(value(eY.payments[1]).amount)
1178- let eF = ey(fc, fd, toBigInt(0))
1179- if ((eF == eF))
1155+ let fc = eZ(eW, gY, false)
1156+ let dI = fc._9
1157+ let fa = toBigInt(value(eW.payments[0]).amount)
1158+ let fb = toBigInt(value(eW.payments[1]).amount)
1159+ let eD = ew(fa, fb, toBigInt(0))
1160+ if ((eD == eD))
11801161 then {
1181- let ha = eG(0, 0, 0)
1182- let gX = ha._1
1183- let ex = ha._2
1184- let gY = eK(eF, ex)
1185- if ((gY == gY))
1186- then (dK ++ gX)
1162+ let gZ = eE(0, 0, 0)
1163+ let gV = gZ._1
1164+ let ev = gZ._2
1165+ let gW = eI(eD, ev)
1166+ if ((gW == gW))
1167+ then (dI ++ gV)
11871168 else throw("Strict value is not equal to itself.")
11881169 }
11891170 else throw("Strict value is not equal to itself.")
11901171 }
11911172
11921173
11931174
1194-@Callable(eY)
1195-func putOneTkn (hb,hc) = {
1196- let hd = {
1175+@Callable(eW)
1176+func putOneTkn (ha,hb) = {
1177+ let hc = {
11971178 let aY = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11981179 if ($isInstanceOf(aY, "Boolean"))
11991180 then aY
12001181 else throw(($getType(aY) + " couldn't be cast to Boolean"))
12011182 }
1202- let he = if (if (if (bc())
1183+ let hd = if (if (if (bc())
12031184 then true
12041185 else (bp == l))
12051186 then true
12061187 else (bp == n))
12071188 then true
1208- else hd
1209- let fS = [if (if (!(he))
1189+ else hc
1190+ let fQ = [if (if (!(hd))
12101191 then true
1211- else gn(eY))
1192+ else gl(eW))
12121193 then true
1213- else aS("put operation is blocked by admin"), if ((size(eY.payments) == 1))
1194+ else aS("put operation is blocked by admin"), if ((size(eW.payments) == 1))
12141195 then true
12151196 else aS("exactly 1 payment are expected")]
1216- if ((fS == fS))
1197+ if ((fQ == fQ))
12171198 then {
1218- let hf = eY.payments[0]
1219- let fn = hf.assetId
1220- let fm = hf.amount
1221- let eF = if ((fn == br))
1222- then ey(toBigInt(fm), toBigInt(0), toBigInt(0))
1223- else if ((fn == bs))
1224- then ey(toBigInt(0), toBigInt(fm), toBigInt(0))
1199+ let he = eW.payments[0]
1200+ let fl = he.assetId
1201+ let fk = he.amount
1202+ let eD = if ((fl == br))
1203+ then ew(toBigInt(fk), toBigInt(0), toBigInt(0))
1204+ else if ((fl == bs))
1205+ then ew(toBigInt(0), toBigInt(fk), toBigInt(0))
12251206 else aS("payment asset is not supported")
1226- if ((eF == eF))
1207+ if ((eD == eD))
12271208 then {
1228- let ab = eY.caller
1229- let ac = eY.transactionId
1230- let hg = fl(fm, fn, ab, ac)
1231- if ((hg == hg))
1209+ let ab = eW.caller
1210+ let ac = eW.transactionId
1211+ let hf = fj(fk, fl, ab, ac)
1212+ if ((hf == hf))
12321213 then {
1233- let fr = hg._5
1234- let hh = hg._4
1235- let fk = hg._3
1236- let er = hg._2
1237- let hi = hg._1
1238- let hj = if (if ((hb > 0))
1239- then (hb > hi)
1214+ let fp = hf._5
1215+ let hg = hf._4
1216+ let fi = hf._3
1217+ let ep = hf._2
1218+ let hh = hf._1
1219+ let hi = if (if ((ha > 0))
1220+ then (ha > hh)
12401221 else false)
1241- then aS(makeString(["amount to receive is less than ", toString(hb)], ""))
1242- else hi
1243- let fg = ff(hj)
1244- if ((fg == fg))
1222+ then aS(makeString(["amount to receive is less than ", toString(ha)], ""))
1223+ else hh
1224+ let fe = fd(hi)
1225+ if ((fe == fe))
12451226 then {
1246- let gU = if (hc)
1227+ let gS = if (hb)
12471228 then {
1248- let hk = invoke(bw, "stake", nil, [AttachedPayment(bq, hj)])
1249- if ((hk == hk))
1229+ let hj = invoke(bw, "stake", nil, [AttachedPayment(bq, hi)])
1230+ if ((hj == hj))
12501231 then nil
12511232 else throw("Strict value is not equal to itself.")
12521233 }
1253- else [ScriptTransfer(eY.caller, hj, bq)]
1254- let hl = if ((fk > 0))
1255- then [ScriptTransfer(aW, fk, fn)]
1234+ else [ScriptTransfer(eW.caller, hi, bq)]
1235+ let hk = if ((fi > 0))
1236+ then [ScriptTransfer(aW, fi, fl)]
12561237 else nil
1257- let hm = if ((this == aW))
1238+ let hl = if ((this == aW))
12581239 then $Tuple2(0, 0)
1259- else if (fr)
1260- then $Tuple2(-(fk), 0)
1261- else $Tuple2(0, -(fk))
1262- let eH = hm._1
1263- let eI = hm._2
1264- let hn = eG(eH, eI, 0)
1265- let gX = hn._1
1266- let ex = hn._2
1267- let eR = value(getString(aj))
1268- let gY = eK(eF, ex)
1269- if ((gY == gY))
1240+ else if (fp)
1241+ then $Tuple2(-(fi), 0)
1242+ else $Tuple2(0, -(fi))
1243+ let eF = hl._1
1244+ let eG = hl._2
1245+ let hm = eE(eF, eG, 0)
1246+ let gV = hm._1
1247+ let ev = hm._2
1248+ let eP = value(getString(aj))
1249+ let gW = eI(eD, ev)
1250+ if ((gW == gW))
12701251 then {
1271- let dJ = invoke(this, "rebalance", nil, nil)
1272- if ((dJ == dJ))
1273- then $Tuple2((((er ++ gU) ++ hl) ++ gX), hj)
1252+ let gX = invoke(this, "rebalance", nil, nil)
1253+ if ((gX == gX))
1254+ then $Tuple2((((ep ++ gS) ++ hk) ++ gV), hi)
12741255 else throw("Strict value is not equal to itself.")
12751256 }
12761257 else throw("Strict value is not equal to itself.")
12771258 }
12781259 else throw("Strict value is not equal to itself.")
12791260 }
12801261 else throw("Strict value is not equal to itself.")
12811262 }
12821263 else throw("Strict value is not equal to itself.")
12831264 }
12841265 else throw("Strict value is not equal to itself.")
12851266 }
12861267
12871268
12881269
1289-@Callable(eY)
1290-func putOneTknREADONLY (fn,fm) = {
1291- let ho = fl(fm, bh(fn), unit, unit)
1292- let hi = ho._1
1293- let er = ho._2
1294- let fk = ho._3
1295- let hh = ho._4
1296- let fr = ho._5
1297- $Tuple2(nil, $Tuple3(hi, fk, hh))
1270+@Callable(eW)
1271+func putOneTknREADONLY (fl,fk) = {
1272+ let hn = fj(fk, bh(fl), unit, unit)
1273+ let hh = hn._1
1274+ let ep = hn._2
1275+ let fi = hn._3
1276+ let hg = hn._4
1277+ let fp = hn._5
1278+ $Tuple2(nil, $Tuple3(hh, fi, hg))
12981279 }
12991280
13001281
13011282
1302-@Callable(eY)
1303-func getOneTkn (hp,hb) = {
1304- let hd = {
1283+@Callable(eW)
1284+func getOneTkn (ho,ha) = {
1285+ let hc = {
13051286 let aY = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13061287 if ($isInstanceOf(aY, "Boolean"))
13071288 then aY
13081289 else throw(($getType(aY) + " couldn't be cast to Boolean"))
13091290 }
1310- let hq = if (if (bc())
1291+ let hp = if (if (bc())
13111292 then true
13121293 else (bp == n))
13131294 then true
1314- else hd
1315- let fS = [if (if (!(hq))
1295+ else hc
1296+ let fQ = [if (if (!(hp))
13161297 then true
1317- else gn(eY))
1298+ else gl(eW))
13181299 then true
1319- else aS("get operation is blocked by admin"), if ((size(eY.payments) == 1))
1300+ else aS("get operation is blocked by admin"), if ((size(eW.payments) == 1))
13201301 then true
13211302 else aS("exactly 1 payment are expected")]
1322- if ((fS == fS))
1303+ if ((fQ == fQ))
13231304 then {
1324- let fR = bh(hp)
1325- let hf = eY.payments[0]
1326- let fn = hf.assetId
1327- let fz = hf.amount
1328- let eF = ey(toBigInt(0), toBigInt(0), toBigInt(0))
1329- if ((eF == eF))
1305+ let fP = bh(ho)
1306+ let he = eW.payments[0]
1307+ let fl = he.assetId
1308+ let fx = he.amount
1309+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1310+ if ((eD == eD))
13301311 then {
1331- let ab = eY.caller
1332- let ac = eY.transactionId
1333- let hr = fQ(fR, fz, fn, ab, ac)
1334- if ((hr == hr))
1312+ let ab = eW.caller
1313+ let ac = eW.transactionId
1314+ let hq = fO(fP, fx, fl, ab, ac)
1315+ if ((hq == hq))
13351316 then {
1336- let fT = hr._5
1337- let hh = hr._4
1338- let fk = hr._3
1339- let er = hr._2
1340- let hs = hr._1
1341- let ca = if (if ((hb > 0))
1342- then (hb > hs)
1317+ let fR = hq._5
1318+ let hg = hq._4
1319+ let fi = hq._3
1320+ let ep = hq._2
1321+ let hr = hq._1
1322+ let ca = if (if ((ha > 0))
1323+ then (ha > hr)
13431324 else false)
1344- then aS(makeString(["amount to receive is less than ", toString(hb)], ""))
1345- else hs
1346- let gH = {
1347- let bX = cu(hp)
1325+ then aS(makeString(["amount to receive is less than ", toString(ha)], ""))
1326+ else hr
1327+ let gF = {
1328+ let bX = cu(ho)
13481329 if ($isInstanceOf(bX, "(Boolean, Int, Int, String, String, Int, String)"))
13491330 then {
13501331 let cH = bX
13511332 cH
13521333 }
13531334 else throw("error lease config")
13541335 }
1355- let ht = invoke(aV, "burn", [fz], [AttachedPayment(fn, fz)])
1356- if ((ht == ht))
1336+ let hs = invoke(aV, "burn", [fx], [AttachedPayment(fl, fx)])
1337+ if ((hs == hs))
13571338 then {
1358- let gI = cQ(hp, ca)
1359- if ((gI == gI))
1339+ let gG = cO(ho, ca)
1340+ if ((gG == gG))
13601341 then {
1361- let hu = [ScriptTransfer(ab, ca, fR)]
1362- let hl = if ((fk > 0))
1363- then [ScriptTransfer(aW, fk, fR)]
1342+ let ht = [ScriptTransfer(ab, ca, fP)]
1343+ let hk = if ((fi > 0))
1344+ then [ScriptTransfer(aW, fi, fP)]
13641345 else nil
1365- let hv = {
1366- let hw = if ((this == aW))
1346+ let hu = {
1347+ let hv = if ((this == aW))
13671348 then 0
1368- else fk
1369- if (fT)
1370- then $Tuple2(-((ca + hw)), 0)
1371- else $Tuple2(0, -((ca + hw)))
1349+ else fi
1350+ if (fR)
1351+ then $Tuple2(-((ca + hv)), 0)
1352+ else $Tuple2(0, -((ca + hv)))
13721353 }
1373- let eH = hv._1
1374- let eI = hv._2
1375- let hx = eG(eH, eI, 0)
1376- let gX = hx._1
1377- let ex = hx._2
1378- let gY = eK(eF, ex)
1379- if ((gY == gY))
1354+ let eF = hu._1
1355+ let eG = hu._2
1356+ let hw = eE(eF, eG, 0)
1357+ let gV = hw._1
1358+ let ev = hw._2
1359+ let gW = eI(eD, ev)
1360+ if ((gW == gW))
1361+ then $Tuple2(((((ep ++ gG) ++ ht) ++ hk) ++ gV), ca)
1362+ else throw("Strict value is not equal to itself.")
1363+ }
1364+ else throw("Strict value is not equal to itself.")
1365+ }
1366+ else throw("Strict value is not equal to itself.")
1367+ }
1368+ else throw("Strict value is not equal to itself.")
1369+ }
1370+ else throw("Strict value is not equal to itself.")
1371+ }
1372+ else throw("Strict value is not equal to itself.")
1373+ }
1374+
1375+
1376+
1377+@Callable(eW)
1378+func getOneTknREADONLY (fP,fx) = {
1379+ let hx = fO(bh(fP), fx, bq, unit, unit)
1380+ let hr = hx._1
1381+ let ep = hx._2
1382+ let fi = hx._3
1383+ let hg = hx._4
1384+ let fR = hx._5
1385+ $Tuple2(nil, $Tuple3(hr, fi, hg))
1386+ }
1387+
1388+
1389+
1390+@Callable(eW)
1391+func unstakeAndGetOneTkn (hy,ho,ha) = {
1392+ let hc = {
1393+ let aY = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1394+ if ($isInstanceOf(aY, "Boolean"))
1395+ then aY
1396+ else throw(($getType(aY) + " couldn't be cast to Boolean"))
1397+ }
1398+ let hp = if (if (bc())
1399+ then true
1400+ else (bp == n))
1401+ then true
1402+ else hc
1403+ let fQ = [if (if (!(hp))
1404+ then true
1405+ else gl(eW))
1406+ then true
1407+ else aS("get operation is blocked by admin"), if ((size(eW.payments) == 0))
1408+ then true
1409+ else aS("no payments are expected")]
1410+ if ((fQ == fQ))
1411+ then {
1412+ let fP = bh(ho)
1413+ let ab = eW.caller
1414+ let ac = eW.transactionId
1415+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1416+ if ((eD == eD))
1417+ then {
1418+ let hz = invoke(bw, "unstake", [toBase58String(bq), hy], nil)
1419+ if ((hz == hz))
1420+ then {
1421+ let hA = fO(fP, hy, bq, ab, ac)
1422+ if ((hA == hA))
1423+ then {
1424+ let fR = hA._5
1425+ let hg = hA._4
1426+ let fi = hA._3
1427+ let ep = hA._2
1428+ let hr = hA._1
1429+ let ca = if (if ((ha > 0))
1430+ then (ha > hr)
1431+ else false)
1432+ then aS(makeString(["amount to receive is less than ", toString(ha)], ""))
1433+ else hr
1434+ let hs = invoke(aV, "burn", [hy], [AttachedPayment(bq, hy)])
1435+ if ((hs == hs))
1436+ then {
1437+ let gG = cO(ho, ca)
1438+ if ((gG == gG))
13801439 then {
1381- let dJ = invoke(this, "rebalance", nil, nil)
1382- if ((dJ == dJ))
1383- then $Tuple2(((((er ++ gI) ++ hu) ++ hl) ++ gX), ca)
1440+ let ht = [ScriptTransfer(eW.caller, ca, fP)]
1441+ let hk = if ((fi > 0))
1442+ then [ScriptTransfer(aW, fi, fP)]
1443+ else nil
1444+ let hB = {
1445+ let hv = if ((this == aW))
1446+ then 0
1447+ else fi
1448+ if (fR)
1449+ then $Tuple2(-((ca + hv)), 0)
1450+ else $Tuple2(0, -((ca + hv)))
1451+ }
1452+ let eF = hB._1
1453+ let eG = hB._2
1454+ let hC = eE(eF, eG, 0)
1455+ let gV = hC._1
1456+ let ev = hC._2
1457+ let gW = eI(eD, ev)
1458+ if ((gW == gW))
1459+ then $Tuple2(((((ep ++ gG) ++ ht) ++ hk) ++ gV), ca)
13841460 else throw("Strict value is not equal to itself.")
13851461 }
13861462 else throw("Strict value is not equal to itself.")
13871463 }
13881464 else throw("Strict value is not equal to itself.")
13891465 }
13901466 else throw("Strict value is not equal to itself.")
13911467 }
13921468 else throw("Strict value is not equal to itself.")
13931469 }
13941470 else throw("Strict value is not equal to itself.")
13951471 }
13961472 else throw("Strict value is not equal to itself.")
13971473 }
13981474
13991475
14001476
1401-@Callable(eY)
1402-func getOneTknREADONLY (fR,fz) = {
1403- let hy = fQ(bh(fR), fz, bq, unit, unit)
1404- let hs = hy._1
1405- let er = hy._2
1406- let fk = hy._3
1407- let hh = hy._4
1408- let fT = hy._5
1409- $Tuple2(nil, $Tuple3(hs, fk, hh))
1477+@Callable(eW)
1478+func get () = {
1479+ let ea = eV(eW)
1480+ let hD = ea._1
1481+ let dF = ea._2
1482+ let eY = ea._3
1483+ let dn = ea._4
1484+ let dI = ea._5
1485+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1486+ if ((eD == eD))
1487+ then {
1488+ let hE = invoke(aV, "burn", [eY], [AttachedPayment(dn, eY)])
1489+ if ((hE == hE))
1490+ then {
1491+ let hF = eE(-(hD), -(dF), 0)
1492+ let gV = hF._1
1493+ let ev = hF._2
1494+ let gW = eI(eD, ev)
1495+ if ((gW == gW))
1496+ then (dI ++ gV)
1497+ else throw("Strict value is not equal to itself.")
1498+ }
1499+ else throw("Strict value is not equal to itself.")
1500+ }
1501+ else throw("Strict value is not equal to itself.")
14101502 }
14111503
14121504
14131505
1414-@Callable(eY)
1415-func unstakeAndGetOneTkn (hz,hp,hb) = {
1416- let hd = {
1417- let aY = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1418- if ($isInstanceOf(aY, "Boolean"))
1419- then aY
1420- else throw(($getType(aY) + " couldn't be cast to Boolean"))
1421- }
1422- let hq = if (if (bc())
1423- then true
1424- else (bp == n))
1425- then true
1426- else hd
1427- let fS = [if (if (!(hq))
1428- then true
1429- else gn(eY))
1430- then true
1431- else aS("get operation is blocked by admin"), if ((size(eY.payments) == 0))
1432- then true
1433- else aS("no payments are expected")]
1434- if ((fS == fS))
1506+@Callable(eW)
1507+func getNoLess (hG,hH) = {
1508+ let ea = eV(eW)
1509+ let dE = ea._1
1510+ let dF = ea._2
1511+ let eY = ea._3
1512+ let dn = ea._4
1513+ let dI = ea._5
1514+ if ((hG > dE))
1515+ then throw(((("noLessThenAmtAsset failed: " + toString(dE)) + " < ") + toString(hG)))
1516+ else if ((hH > dF))
1517+ then throw(((("noLessThenPriceAsset failed: " + toString(dF)) + " < ") + toString(hH)))
1518+ else {
1519+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1520+ if ((eD == eD))
1521+ then {
1522+ let hE = invoke(aV, "burn", [eY], [AttachedPayment(dn, eY)])
1523+ if ((hE == hE))
1524+ then {
1525+ let hI = eE(-(dE), -(dF), 0)
1526+ let gV = hI._1
1527+ let ev = hI._2
1528+ let gW = eI(eD, ev)
1529+ if ((gW == gW))
1530+ then (dI ++ gV)
1531+ else throw("Strict value is not equal to itself.")
1532+ }
1533+ else throw("Strict value is not equal to itself.")
1534+ }
1535+ else throw("Strict value is not equal to itself.")
1536+ }
1537+ }
1538+
1539+
1540+
1541+@Callable(eW)
1542+func unstakeAndGet (ca) = {
1543+ let hJ = if ((size(eW.payments) != 0))
1544+ then throw("No payments are expected")
1545+ else true
1546+ if ((hJ == hJ))
14351547 then {
1436- let fR = bh(hp)
1437- let ab = eY.caller
1438- let ac = eY.transactionId
1439- let eF = ey(toBigInt(0), toBigInt(0), toBigInt(0))
1440- if ((eF == eF))
1548+ let dc = be()
1549+ let dp = fromBase58String(dc[q])
1550+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1551+ if ((eD == eD))
14411552 then {
1442- let hA = invoke(bw, "unstake", [toBase58String(bq), hz], nil)
1443- if ((hA == hA))
1553+ let hz = invoke(bw, "unstake", [toBase58String(dp), ca], nil)
1554+ if ((hz == hz))
14441555 then {
1445- let hB = fQ(fR, hz, bq, ab, ac)
1446- if ((hB == hB))
1556+ let ea = dl(toBase58String(eW.transactionId), toBase58String(dp), ca, eW.caller)
1557+ let dE = ea._1
1558+ let dF = ea._2
1559+ let ds = parseIntValue(ea._9)
1560+ let dI = ea._10
1561+ let hK = if (if (bc())
1562+ then true
1563+ else (ds == n))
1564+ then throw(("Get operation is blocked by admin. Status = " + toString(ds)))
1565+ else true
1566+ if ((hK == hK))
14471567 then {
1448- let fT = hB._5
1449- let hh = hB._4
1450- let fk = hB._3
1451- let er = hB._2
1452- let hs = hB._1
1453- let ca = if (if ((hb > 0))
1454- then (hb > hs)
1455- else false)
1456- then aS(makeString(["amount to receive is less than ", toString(hb)], ""))
1457- else hs
1458- let ht = invoke(aV, "burn", [hz], [AttachedPayment(bq, hz)])
1459- if ((ht == ht))
1568+ let hE = invoke(aV, "burn", [ca], [AttachedPayment(dp, ca)])
1569+ if ((hE == hE))
14601570 then {
1461- let gI = cQ(hp, ca)
1462- if ((gI == gI))
1463- then {
1464- let hu = [ScriptTransfer(eY.caller, ca, fR)]
1465- let hl = if ((fk > 0))
1466- then [ScriptTransfer(aW, fk, fR)]
1467- else nil
1468- let hC = {
1469- let hw = if ((this == aW))
1470- then 0
1471- else fk
1472- if (fT)
1473- then $Tuple2(-((ca + hw)), 0)
1474- else $Tuple2(0, -((ca + hw)))
1475- }
1476- let eH = hC._1
1477- let eI = hC._2
1478- let hD = eG(eH, eI, 0)
1479- let gX = hD._1
1480- let ex = hD._2
1481- let gY = eK(eF, ex)
1482- if ((gY == gY))
1483- then {
1484- let dJ = invoke(this, "rebalance", nil, nil)
1485- if ((dJ == dJ))
1486- then $Tuple2(((((er ++ gI) ++ hu) ++ hl) ++ gX), ca)
1487- else throw("Strict value is not equal to itself.")
1488- }
1489- else throw("Strict value is not equal to itself.")
1490- }
1571+ let hL = eE(-(dE), -(dF), 0)
1572+ let gV = hL._1
1573+ let ev = hL._2
1574+ let gW = eI(eD, ev)
1575+ if ((gW == gW))
1576+ then (dI ++ gV)
14911577 else throw("Strict value is not equal to itself.")
14921578 }
14931579 else throw("Strict value is not equal to itself.")
14941580 }
14951581 else throw("Strict value is not equal to itself.")
14961582 }
14971583 else throw("Strict value is not equal to itself.")
14981584 }
14991585 else throw("Strict value is not equal to itself.")
15001586 }
15011587 else throw("Strict value is not equal to itself.")
15021588 }
15031589
15041590
15051591
1506-@Callable(eY)
1507-func get () = {
1508- let ec = eX(eY)
1509- let hE = ec._1
1510- let dG = ec._2
1511- let fa = ec._3
1512- let do = ec._4
1513- let dK = ec._5
1514- let eF = ey(toBigInt(0), toBigInt(0), toBigInt(0))
1515- if ((eF == eF))
1592+@Callable(eW)
1593+func unstakeAndGetNoLess (hy,hM,hH) = {
1594+ let hp = if (bc())
1595+ then true
1596+ else (bp == n)
1597+ let fQ = [if (!(hp))
1598+ then true
1599+ else throw("get operation is blocked by admin"), if ((size(eW.payments) == 0))
1600+ then true
1601+ else throw("no payments are expected")]
1602+ if ((fQ == fQ))
15161603 then {
1517- let hF = invoke(aV, "burn", [fa], [AttachedPayment(do, fa)])
1518- if ((hF == hF))
1604+ let eD = ew(toBigInt(0), toBigInt(0), toBigInt(0))
1605+ if ((eD == eD))
15191606 then {
1520- let hG = eG(-(hE), -(dG), 0)
1521- let gX = hG._1
1522- let ex = hG._2
1523- let gY = eK(eF, ex)
1524- if ((gY == gY))
1525- then (dK ++ gX)
1526- else throw("Strict value is not equal to itself.")
1527- }
1528- else throw("Strict value is not equal to itself.")
1529- }
1530- else throw("Strict value is not equal to itself.")
1531- }
1532-
1533-
1534-
1535-@Callable(eY)
1536-func getNoLess (hH,hI) = {
1537- let ec = eX(eY)
1538- let dF = ec._1
1539- let dG = ec._2
1540- let fa = ec._3
1541- let do = ec._4
1542- let dK = ec._5
1543- if ((hH > dF))
1544- then throw(((("noLessThenAmtAsset failed: " + toString(dF)) + " < ") + toString(hH)))
1545- else if ((hI > dG))
1546- then throw(((("noLessThenPriceAsset failed: " + toString(dG)) + " < ") + toString(hI)))
1547- else {
1548- let eF = ey(toBigInt(0), toBigInt(0), toBigInt(0))
1549- if ((eF == eF))
1550- then {
1551- let hF = invoke(aV, "burn", [fa], [AttachedPayment(do, fa)])
1552- if ((hF == hF))
1553- then {
1554- let hJ = eG(-(dF), -(dG), 0)
1555- let gX = hJ._1
1556- let ex = hJ._2
1557- let gY = eK(eF, ex)
1558- if ((gY == gY))
1559- then (dK ++ gX)
1560- else throw("Strict value is not equal to itself.")
1561- }
1562- else throw("Strict value is not equal to itself.")
1563- }
1564- else throw("Strict value is not equal to itself.")
1565- }
1566- }
1567-
1568-
1569-
1570-@Callable(eY)
1571-func unstakeAndGet (ca) = {
1572- let hK = if ((size(eY.payments) != 0))
1573- then throw("No payments are expected")
1574- else true
1575- if ((hK == hK))
1576- then {
1577- let dd = be()
1578- let dq = fromBase58String(dd[q])
1579- let eF = ey(toBigInt(0), toBigInt(0), toBigInt(0))
1580- if ((eF == eF))
1581- then {
1582- let hA = invoke(bw, "unstake", [toBase58String(dq), ca], nil)
1583- if ((hA == hA))
1607+ let hz = invoke(bw, "unstake", [toBase58String(bq), hy], nil)
1608+ if ((hz == hz))
15841609 then {
1585- let ec = dm(toBase58String(eY.transactionId), toBase58String(dq), ca, eY.caller)
1586- let dF = ec._1
1587- let dG = ec._2
1588- let dt = parseIntValue(ec._9)
1589- let dK = ec._10
1590- let hL = if (if (bc())
1610+ let ea = dl(toBase58String(eW.transactionId), toBase58String(bq), hy, eW.caller)
1611+ let dE = ea._1
1612+ let dF = ea._2
1613+ let dI = ea._10
1614+ let hN = [if ((dE >= hM))
15911615 then true
1592- else (dt == n))
1593- then throw(("Get operation is blocked by admin. Status = " + toString(dt)))
1594- else true
1595- if ((hL == hL))
1616+ else throw(makeString(["amount asset amount to receive is less than ", toString(hM)], "")), if ((dF >= hH))
1617+ then true
1618+ else throw(makeString(["price asset amount to receive is less than ", toString(hH)], ""))]
1619+ if ((hN == hN))
15961620 then {
1597- let hF = invoke(aV, "burn", [ca], [AttachedPayment(dq, ca)])
1598- if ((hF == hF))
1621+ let hE = invoke(aV, "burn", [hy], [AttachedPayment(bq, hy)])
1622+ if ((hE == hE))
15991623 then {
1600- let hM = eG(-(dF), -(dG), 0)
1601- let gX = hM._1
1602- let ex = hM._2
1603- let gY = eK(eF, ex)
1604- if ((gY == gY))
1605- then (dK ++ gX)
1624+ let hO = eE(-(dE), -(dF), 0)
1625+ let gV = hO._1
1626+ let ev = hO._2
1627+ let gW = eI(eD, ev)
1628+ if ((gW == gW))
1629+ then (dI ++ gV)
16061630 else throw("Strict value is not equal to itself.")
16071631 }
16081632 else throw("Strict value is not equal to itself.")
16091633 }
16101634 else throw("Strict value is not equal to itself.")
16111635 }
16121636 else throw("Strict value is not equal to itself.")
16131637 }
16141638 else throw("Strict value is not equal to itself.")
16151639 }
16161640 else throw("Strict value is not equal to itself.")
16171641 }
16181642
16191643
16201644
1621-@Callable(eY)
1622-func unstakeAndGetNoLess (hz,hN,hI) = {
1623- let hq = if (bc())
1624- then true
1625- else (bp == n)
1626- let fS = [if (!(hq))
1627- then true
1628- else throw("get operation is blocked by admin"), if ((size(eY.payments) == 0))
1629- then true
1630- else throw("no payments are expected")]
1631- if ((fS == fS))
1645+@Callable(eW)
1646+func activate (hP,hQ) = if ((toString(eW.caller) != toString(aV)))
1647+ then throw("permissions denied")
1648+ else $Tuple2([StringEntry(ae(), hP), StringEntry(af(), hQ)], "success")
1649+
1650+
1651+
1652+@Callable(eW)
1653+func refreshKLp () = {
1654+ let hR = valueOrElse(getInteger(ak), 0)
1655+ let hS = if (((height - hR) >= an))
1656+ then unit
1657+ else aS(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1658+ if ((hS == hS))
16321659 then {
1633- let eF = ey(toBigInt(0), toBigInt(0), toBigInt(0))
1634- if ((eF == eF))
1635- then {
1636- let hA = invoke(bw, "unstake", [toBase58String(bq), hz], nil)
1637- if ((hA == hA))
1638- then {
1639- let ec = dm(toBase58String(eY.transactionId), toBase58String(bq), hz, eY.caller)
1640- let dF = ec._1
1641- let dG = ec._2
1642- let dK = ec._10
1643- let hO = [if ((dF >= hN))
1644- then true
1645- else throw(makeString(["amount asset amount to receive is less than ", toString(hN)], "")), if ((dG >= hI))
1646- then true
1647- else throw(makeString(["price asset amount to receive is less than ", toString(hI)], ""))]
1648- if ((hO == hO))
1649- then {
1650- let hF = invoke(aV, "burn", [hz], [AttachedPayment(bq, hz)])
1651- if ((hF == hF))
1652- then {
1653- let hP = eG(-(dF), -(dG), 0)
1654- let gX = hP._1
1655- let ex = hP._2
1656- let gY = eK(eF, ex)
1657- if ((gY == gY))
1658- then (dK ++ gX)
1659- else throw("Strict value is not equal to itself.")
1660- }
1661- else throw("Strict value is not equal to itself.")
1662- }
1663- else throw("Strict value is not equal to itself.")
1664- }
1665- else throw("Strict value is not equal to itself.")
1666- }
1667- else throw("Strict value is not equal to itself.")
1660+ let eP = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aU("invalid kLp"))
1661+ let hT = eE(0, 0, 0)
1662+ let hU = hT._1
1663+ let ev = hT._2
1664+ let eH = if ((eP != ev))
1665+ then hU
1666+ else aS("nothing to refresh")
1667+ $Tuple2(eH, toString(ev))
16681668 }
16691669 else throw("Strict value is not equal to itself.")
16701670 }
16711671
16721672
16731673
1674-@Callable(eY)
1675-func activate (hQ,hR) = if ((toString(eY.caller) != toString(aV)))
1676- then throw("permissions denied")
1677- else $Tuple2([StringEntry(ae(), hQ), StringEntry(af(), hR)], "success")
1674+@Callable(eW)
1675+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, be())
16781676
16791677
16801678
1681-@Callable(eY)
1682-func refreshKLp () = {
1683- let hS = valueOrElse(getInteger(ak), 0)
1684- let hT = if (((height - hS) >= an))
1685- then unit
1686- else aS(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1687- if ((hT == hT))
1688- then {
1689- let eR = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aU("invalid kLp"))
1690- let hU = eG(0, 0, 0)
1691- let hV = hU._1
1692- let ex = hU._2
1693- let eJ = if ((eR != ex))
1694- then hV
1695- else aS("nothing to refresh")
1696- $Tuple2(eJ, toString(ex))
1697- }
1698- else throw("Strict value is not equal to itself.")
1679+@Callable(eW)
1680+func getAccBalanceWrapperREADONLY (ar) = $Tuple2(nil, bN(ar))
1681+
1682+
1683+
1684+@Callable(eW)
1685+func calcPricesWrapperREADONLY (cW,cX,db) = {
1686+ let dk = da(cW, cX, db)
1687+ $Tuple2(nil, [toString(dk[0]), toString(dk[1]), toString(dk[2])])
16991688 }
17001689
17011690
17021691
1703-@Callable(eY)
1704-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, be())
1692+@Callable(eW)
1693+func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
17051694
17061695
17071696
1708-@Callable(eY)
1709-func getAccBalanceWrapperREADONLY (ar) = $Tuple2(nil, bN(ar))
1697+@Callable(eW)
1698+func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
17101699
17111700
17121701
1713-@Callable(eY)
1714-func calcPricesWrapperREADONLY (cX,cY,dc) = {
1715- let dl = db(cX, cY, dc)
1716- $Tuple2(nil, [toString(dl[0]), toString(dl[1]), toString(dl[2])])
1702+@Callable(eW)
1703+func calcPriceBigIntWrapperREADONLY (bR,bS) = $Tuple2(nil, toString(bQ(parseBigIntValue(bR), parseBigIntValue(bS))))
1704+
1705+
1706+
1707+@Callable(eW)
1708+func estimatePutOperationWrapperREADONLY (dm,dK,dL,dM,dN,dO,ab,dP,dQ) = $Tuple2(nil, dJ(dm, dK, dL, dM, dN, dO, ab, dP, dQ))
1709+
1710+
1711+
1712+@Callable(eW)
1713+func estimateGetOperationWrapperREADONLY (dm,dn,do,ab) = {
1714+ let ea = dl(dm, dn, do, addressFromStringValue(ab))
1715+ $Tuple2(nil, $Tuple10(ea._1, ea._2, ea._3, ea._4, ea._5, ea._6, ea._7, toString(ea._8), ea._9, ea._10))
17171716 }
17181717
17191718
17201719
1721-@Callable(eY)
1722-func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
1723-
1724-
1725-
1726-@Callable(eY)
1727-func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
1728-
1729-
1730-
1731-@Callable(eY)
1732-func calcPriceBigIntWrapperREADONLY (bR,bS) = $Tuple2(nil, toString(bQ(parseBigIntValue(bR), parseBigIntValue(bS))))
1733-
1734-
1735-
1736-@Callable(eY)
1737-func estimatePutOperationWrapperREADONLY (dn,dM,dN,dO,dP,dQ,ab,dR,dS) = $Tuple2(nil, dL(dn, dM, dN, dO, dP, dQ, ab, dR, dS))
1738-
1739-
1740-
1741-@Callable(eY)
1742-func estimateGetOperationWrapperREADONLY (dn,do,dp,ab) = {
1743- let ec = dm(dn, do, dp, addressFromStringValue(ab))
1744- $Tuple2(nil, $Tuple10(ec._1, ec._2, ec._3, ec._4, ec._5, ec._6, ec._7, toString(ec._8), ec._9, ec._10))
1720+@Callable(eW)
1721+func statsREADONLY () = {
1722+ let dc = be()
1723+ let dp = fromBase58String(dc[q])
1724+ let hV = dc[r]
1725+ let hW = dc[s]
1726+ let dT = dc[v]
1727+ let dU = dc[w]
1728+ let dd = parseIntValue(dc[t])
1729+ let de = parseIntValue(dc[u])
1730+ let hX = valueOrErrorMessage(assetInfo(dp), (("Asset " + toBase58String(dp)) + " doesn't exist")).quantity
1731+ let hY = bN(hV)
1732+ let hZ = bN(hW)
1733+ let ia = if ((hX == 0))
1734+ then [e, e, e]
1735+ else da(hY, hZ, hX)
1736+ let dz = 0
1737+ let ib = H(ia[1], b)
1738+ let ic = H(ia[2], b)
1739+ let id = value(getInteger(aV, aF(toString(this))))
1740+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hY), toString(hZ), toString(hX), toString(dz), toString(ib), toString(ic), toString(id)], j))
17451741 }
17461742
17471743
17481744
1749-@Callable(eY)
1750-func statsREADONLY () = {
1751- let dd = be()
1752- let dq = fromBase58String(dd[q])
1753- let hW = dd[r]
1754- let hX = dd[s]
1755- let dV = dd[v]
1756- let dW = dd[w]
1757- let de = parseIntValue(dd[t])
1758- let df = parseIntValue(dd[u])
1759- let hY = valueOrErrorMessage(assetInfo(dq), (("Asset " + toBase58String(dq)) + " doesn't exist")).quantity
1760- let hZ = bN(hW)
1761- let ia = bN(hX)
1762- let ib = if ((hY == 0))
1763- then [e, e, e]
1764- else db(hZ, ia, hY)
1765- let dA = 0
1766- let ic = H(ib[1], b)
1767- let id = H(ib[2], b)
1768- let ie = value(getInteger(aV, aF(toString(this))))
1769- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hZ), toString(ia), toString(hY), toString(dA), toString(ic), toString(id), toString(ie)], j))
1745+@Callable(eW)
1746+func evaluatePutByAmountAssetREADONLY (dL) = {
1747+ let dc = be()
1748+ let dp = fromBase58String(dc[q])
1749+ let dR = dc[r]
1750+ let dq = fromBase58String(dR)
1751+ let dS = dc[s]
1752+ let dr = fromBase58String(dS)
1753+ let dd = parseIntValue(dc[t])
1754+ let de = parseIntValue(dc[u])
1755+ let ds = dc[p]
1756+ let hX = valueOrErrorMessage(assetInfo(dp), (("Asset " + toBase58String(dp)) + " doesn't exist")).quantity
1757+ let hY = bN(dR)
1758+ let hZ = bN(dS)
1759+ let cY = D(hY, dd)
1760+ let cZ = D(hZ, de)
1761+ let dy = if ((hX == 0))
1762+ then e
1763+ else bQ(cZ, cY)
1764+ let dX = D(dL, dd)
1765+ let dY = fraction(dX, dy, d)
1766+ let dN = H(dY, de)
1767+ let fc = dJ("", 500000, dL, dq, dN, dr, "", true, false)
1768+ let ei = fc._1
1769+ let ie = fc._3
1770+ let du = fc._4
1771+ let dw = fc._5
1772+ let dt = fc._6
1773+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ei), toString(H(dy, b)), toString(du), toString(dw), toString(dt), ds, toString(dL), toString(dN)], j))
17701774 }
17711775
17721776
17731777
1774-@Callable(eY)
1775-func evaluatePutByAmountAssetREADONLY (dN) = {
1776- let dd = be()
1777- let dq = fromBase58String(dd[q])
1778- let dT = dd[r]
1779- let dr = fromBase58String(dT)
1780- let dU = dd[s]
1781- let ds = fromBase58String(dU)
1782- let de = parseIntValue(dd[t])
1783- let df = parseIntValue(dd[u])
1784- let dt = dd[p]
1785- let hY = valueOrErrorMessage(assetInfo(dq), (("Asset " + toBase58String(dq)) + " doesn't exist")).quantity
1786- let hZ = bN(dT)
1787- let ia = bN(dU)
1788- let cZ = D(hZ, de)
1789- let da = D(ia, df)
1790- let dz = if ((hY == 0))
1778+@Callable(eW)
1779+func evaluatePutByPriceAssetREADONLY (dN) = {
1780+ let dc = be()
1781+ let dp = fromBase58String(dc[q])
1782+ let dR = dc[r]
1783+ let dq = fromBase58String(dR)
1784+ let dS = dc[s]
1785+ let dr = fromBase58String(dS)
1786+ let dd = parseIntValue(dc[t])
1787+ let de = parseIntValue(dc[u])
1788+ let ds = dc[p]
1789+ let hX = valueOrErrorMessage(assetInfo(dp), (("Asset " + toBase58String(dp)) + " doesn't exist")).quantity
1790+ let if = bN(dR)
1791+ let ig = bN(dS)
1792+ let ih = D(if, dd)
1793+ let ii = D(ig, de)
1794+ let dy = if ((hX == 0))
17911795 then e
1792- else bQ(da, cZ)
1793- let dZ = D(dN, de)
1794- let ea = fraction(dZ, dz, d)
1795- let dP = H(ea, df)
1796- let fe = dL("", 500000, dN, dr, dP, ds, "", true, false)
1797- let ek = fe._1
1798- let if = fe._3
1799- let dv = fe._4
1800- let dx = fe._5
1801- let du = fe._6
1802- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ek), toString(H(dz, b)), toString(dv), toString(dx), toString(du), dt, toString(dN), toString(dP)], j))
1796+ else bQ(ii, ih)
1797+ let dY = D(dN, de)
1798+ let dX = fraction(dY, d, dy)
1799+ let dL = H(dX, dd)
1800+ let fc = dJ("", 500000, dL, dq, dN, dr, "", true, false)
1801+ let ei = fc._1
1802+ let ie = fc._3
1803+ let du = fc._4
1804+ let dw = fc._5
1805+ let dt = fc._6
1806+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ei), toString(H(dy, b)), toString(du), toString(dw), toString(dt), ds, toString(dL), toString(dN)], j))
18031807 }
18041808
18051809
18061810
1807-@Callable(eY)
1808-func evaluatePutByPriceAssetREADONLY (dP) = {
1809- let dd = be()
1810- let dq = fromBase58String(dd[q])
1811- let dT = dd[r]
1812- let dr = fromBase58String(dT)
1813- let dU = dd[s]
1814- let ds = fromBase58String(dU)
1815- let de = parseIntValue(dd[t])
1816- let df = parseIntValue(dd[u])
1817- let dt = dd[p]
1818- let hY = valueOrErrorMessage(assetInfo(dq), (("Asset " + toBase58String(dq)) + " doesn't exist")).quantity
1819- let ig = bN(dT)
1820- let ih = bN(dU)
1821- let ii = D(ig, de)
1822- let ij = D(ih, df)
1823- let dz = if ((hY == 0))
1824- then e
1825- else bQ(ij, ii)
1826- let ea = D(dP, df)
1827- let dZ = fraction(ea, d, dz)
1828- let dN = H(dZ, de)
1829- let fe = dL("", 500000, dN, dr, dP, ds, "", true, false)
1830- let ek = fe._1
1831- let if = fe._3
1832- let dv = fe._4
1833- let dx = fe._5
1834- let du = fe._6
1835- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ek), toString(H(dz, b)), toString(dv), toString(dx), toString(du), dt, toString(dN), toString(dP)], j))
1811+@Callable(eW)
1812+func evaluateGetREADONLY (ij,ik) = {
1813+ let ea = dl("", ij, ik, this)
1814+ let dE = ea._1
1815+ let dF = ea._2
1816+ let du = ea._5
1817+ let dw = ea._6
1818+ let dt = ea._7
1819+ let dz = ea._8
1820+ let ds = parseIntValue(ea._9)
1821+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dE), toString(dF), toString(du), toString(dw), toString(dt), toString(dz), toString(ds)], j))
18361822 }
18371823
18381824
1839-
1840-@Callable(eY)
1841-func evaluateGetREADONLY (ik,il) = {
1842- let ec = dm("", ik, il, this)
1843- let dF = ec._1
1844- let dG = ec._2
1845- let dv = ec._5
1846- let dx = ec._6
1847- let du = ec._7
1848- let dA = ec._8
1849- let dt = parseIntValue(ec._9)
1850- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dF), toString(dG), toString(dv), toString(dx), toString(du), toString(dA), toString(dt)], j))
1851- }
1852-
1853-
1854-@Verifier(im)
1855-func in () = {
1856- let io = {
1857- let bX = gk()
1825+@Verifier(il)
1826+func im () = {
1827+ let in = {
1828+ let bX = gi()
18581829 if ($isInstanceOf(bX, "ByteVector"))
18591830 then {
1860- let go = bX
1861- go
1831+ let gm = bX
1832+ gm
18621833 }
18631834 else if ($isInstanceOf(bX, "Unit"))
1864- then im.senderPublicKey
1835+ then il.senderPublicKey
18651836 else throw("Match error")
18661837 }
1867- let bX = im
1838+ let bX = il
18681839 if ($isInstanceOf(bX, "Order"))
18691840 then {
1870- let eN = bX
1871- let ip = bd()
1872- let iq = eM(eN)
1873- let aK = iq._1
1874- let aL = iq._2
1875- let aM = sigVerify(eN.bodyBytes, eN.proofs[0], eN.senderPublicKey)
1876- let aN = sigVerify(eN.bodyBytes, eN.proofs[1], ip)
1841+ let eL = bX
1842+ let io = bd()
1843+ let ip = eK(eL)
1844+ let aK = ip._1
1845+ let aL = ip._2
1846+ let aM = sigVerify(eL.bodyBytes, eL.proofs[0], eL.senderPublicKey)
1847+ let aN = sigVerify(eL.bodyBytes, eL.proofs[1], io)
18771848 if (if (if (aK)
18781849 then aM
18791850 else false)
18801851 then aN
18811852 else false)
18821853 then true
18831854 else aJ(aK, aL, aM, aN)
18841855 }
18851856 else if ($isInstanceOf(bX, "SetScriptTransaction"))
18861857 then {
1887- let gl = bX
1888- if (sigVerify(im.bodyBytes, im.proofs[0], io))
1858+ let gj = bX
1859+ if (sigVerify(il.bodyBytes, il.proofs[0], in))
18891860 then true
18901861 else {
1891- let ir = blake2b256(value(gl.script))
1892- let is = fromBase64String(value(getString(aV, aH())))
1893- let it = scriptHash(this)
1894- if ((is == ir))
1895- then (it != ir)
1862+ let iq = blake2b256(value(gj.script))
1863+ let ir = fromBase64String(value(getString(aV, aH())))
1864+ let is = scriptHash(this)
1865+ if ((ir == iq))
1866+ then (is != iq)
18961867 else false
18971868 }
18981869 }
1899- else sigVerify(im.bodyBytes, im.proofs[0], io)
1870+ else sigVerify(il.bodyBytes, il.proofs[0], in)
19001871 }
19011872

github/deemru/w8io/873ac7e 
439.57 ms