tx · 8nZ1GBkYUkmsXo4Akj2ovQDfpohbBmVhqEx79ktfwYGV

3NAYgaLaVNNh5qw3Zx5PydFoE7mSoqYvP2H:  -0.04200000 Waves

2023.04.06 10:21 [2522379] smart account 3NAYgaLaVNNh5qw3Zx5PydFoE7mSoqYvP2H > SELF 0.00000000 Waves

{ "type": 13, "id": "8nZ1GBkYUkmsXo4Akj2ovQDfpohbBmVhqEx79ktfwYGV", "fee": 4200000, "feeAssetId": null, "timestamp": 1680765733647, "version": 2, "chainId": 84, "sender": "3NAYgaLaVNNh5qw3Zx5PydFoE7mSoqYvP2H", "senderPublicKey": "BNZJaZQpQutteRwUttAsDbWkozgmUAAjBrkxaaYMuV8", "proofs": [ "3WLPbWG8QR5g82yAWwTgbeNxKXCKtgqbupVx3LbWDnBPdxBkUb8t9NzQJqsDcdhvKxcC6TbYS5SFo7Lbzsgjihqg" ], "script": "base64:BgKQNwgCEgASBQoDAQQBEgcKBQEEAQgBEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiC3RvWDE4QmlnSW50Igdmcm9tWDE4IgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIMZnJvbVgxOFJvdW5kIgVyb3VuZCIHdG9TY2FsZSIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50Igxzd2FwQ29udHJhY3QiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIUa2V5QWRkaXRpb25hbEJhbGFuY2UiB2Fzc2V0SWQiFmtleVN0YWtpbmdBc3NldEJhbGFuY2UiGmdldEFkZGl0aW9uYWxCYWxhbmNlT3JaZXJvIhxnZXRTdGFraW5nQXNzZXRCYWxhbmNlT3JaZXJvIhBrZXlGYWN0b3J5Q29uZmlnIg1rZXlNYXRjaGVyUHViIilrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cyITcG9vbENvbnRyYWN0QWRkcmVzcyINa2V5UG9vbENvbmZpZyIJaUFtdEFzc2V0IgtpUHJpY2VBc3NldCIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIhNrZXlBbGxQb29sc1NodXRkb3duIg1rZXlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCIOb3JkZXJWYWxpZEluZm8iC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIgVpbkZlZSIBQCIGb3V0RmVlIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDg5NjI5MTI4Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIg1iYWxhbmNlT25Qb29sIgx0b3RhbEJhbGFuY2UiD2NhbGNQcmljZUJpZ0ludCIIcHJBbXRYMTgiCGFtQW10WDE4IhRjYWxjUHJpY2VCaWdJbnRSb3VuZCIHZ2V0UmF0ZSIFcHJveHkiA2ludiIHJG1hdGNoMCIBciIHZGVwb3NpdCIGYW1vdW50Ig5zdGFraW5nQXNzZXRJZCIYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlIhpjdXJyZW50U3Rha2luZ0Fzc2V0QmFsYW5jZSIFYXNzZXQiDWRlcG9zaXRJbnZva2UiFHJlY2VpdmVkU3Rha2luZ0Fzc2V0IhRuZXdBZGRpdGlvbmFsQmFsYW5jZSIWbmV3U3Rha2luZ0Fzc2V0QmFsYW5jZSIId2l0aGRyYXciDHByb3h5UmF0ZU11bCINcHJvZml0QWRkcmVzcyIQY3VycmVudFByb3h5UmF0ZSIHb2xkUmF0ZSIMc3Rha2luZ0Fzc2V0IhRvbGRTZW5kU3Rha2luZ0Ftb3VudCIWc2VuZFN0YWtpbmdBc3NldEFtb3VudCIMcHJvZml0QW1vdW50Ig53aXRoZHJhd0ludm9rZSIOcmVjZWl2ZWRBc3NldHMiE2dldExlYXNlUHJveHlDb25maWciAWEiEXJlYmFsYW5jZUludGVybmFsIgt0YXJnZXRSYXRpbyIKbWluQmFsYW5jZSIQYXZhaWxhYmxlQmFsYW5jZSIBYiIBdSIMd2hvbGVCYWxhbmNlIhd0YXJnZXRBZGRpdGlvbmFsQmFsYW5jZSIEZGlmZiIPc2VuZEFzc2V0QW1vdW50Ig5nZXRBc3NldEFtb3VudCIOcmViYWxhbmNlQXNzZXQiDSR0MDE1NTI3MTU2NjMiCmlzTGVhc2FibGUiC2xlYXNlZFJhdGlvIgxwcm94eUFkZHJlc3MiDHByb3h5QXNzZXRJZCIUc3Rha2luZ1Byb2ZpdEFkZHJlc3MiGXdpdGhkcmF3QW5kUmViYWxhbmNlQXNzZXQiCWdldEFtb3VudCINJHQwMTYwNTIxNjE4OCITbmV3VG90YWxDYWxjQmFsYW5jZSIOd2l0aGRyYXdBbW91bnQiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiD2NhbGN1bGF0ZVByaWNlcyIGcHJpY2VzIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCIJbHBBc3NldElkIglhbUFzc2V0SWQiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIKbHBFbWlzc2lvbiIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4Ig1scEVtaXNzaW9uWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCISQW1BbXRXaXRoZHJhd1N0YXRlIhJQckFtdFdpdGhkcmF3U3RhdGUiBXN0YXRlIhRlc3RpbWF0ZVB1dE9wZXJhdGlvbiIRc2xpcHBhZ2VUb2xlcmFuY2UiDGluQW1Bc3NldEFtdCILaW5BbUFzc2V0SWQiDGluUHJBc3NldEFtdCILaW5QckFzc2V0SWQiCmlzRXZhbHVhdGUiBmVtaXRMcCIMYW1Bc3NldElkU3RyIgxwckFzc2V0SWRTdHIiC2lBbXRBc3NldElkIg1pUHJpY2VBc3NldElkIg5pbkFtQXNzZXRJZFN0ciIOaW5QckFzc2V0SWRTdHIiD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiA3JlcyILc2xpcHBhZ2VYMTgiFHNsaXBwYWdlVG9sZXJhbmNlWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIgtjb21tb25TdGF0ZSIHY2FsY0tMcCINYW1vdW50QmFsYW5jZSIMcHJpY2VCYWxhbmNlIhBhbW91bnRCYWxhbmNlWDE4Ig9wcmljZUJhbGFuY2VYMTgiCnVwZGF0ZWRLTHAiDmNhbGNDdXJyZW50S0xwIhBhbW91bnRBc3NldERlbHRhIg9wcmljZUFzc2V0RGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCmN1cnJlbnRLTHAiEnJlZnJlc2hLTHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiB2FjdGlvbnMiEnZhbGlkYXRlVXBkYXRlZEtMcCIGb2xkS0xwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjgxNTMyODM2NSIDa0xwIg0kdDAyODgwNTI4OTA1Ig11bnVzZWRBY3Rpb25zIgZrTHBOZXciDGlzT3JkZXJWYWxpZCIEaW5mbyIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiB2VtaXRJbnYiDWVtaXRJbnZMZWdhY3kiFWxlZ2FjeUZhY3RvcnlDb250cmFjdCIHdGFrZUZlZSIJZmVlQW1vdW50Ig9jYWxjUHV0T25lVG9rZW4iEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIgZpc0V2YWwiEGFtb3VudEJhbGFuY2VSYXciD3ByaWNlQmFsYW5jZVJhdyIUcGF5bWVudEluQW1vdW50QXNzZXQiDSR0MDMyMDE4MzIzMTEiEGFtb3VudEJhbGFuY2VPbGQiD3ByaWNlQmFsYW5jZU9sZCINJHQwMzIzMTUzMjQ2NCIUYW1vdW50QXNzZXRBbW91bnRSYXciE3ByaWNlQXNzZXRBbW91bnRSYXciDSR0MDMyNTk2MzI2NjAiDXBheW1lbnRBbW91bnQiEGFtb3VudEJhbGFuY2VOZXciD3ByaWNlQmFsYW5jZU5ldyILcHJpY2VOZXdYMTgiCHByaWNlTmV3Ig5wYXltZW50QmFsYW5jZSIUcGF5bWVudEJhbGFuY2VCaWdJbnQiDHN1cHBseUJpZ0ludCILY2hlY2hTdXBwbHkiDWRlcG9zaXRCaWdJbnQiC2lzc3VlQW1vdW50IgtwcmljZU9sZFgxOCIIcHJpY2VPbGQiBGxvc3MiDSR0MDM0MzQxMzQ1MDgiB2JhbGFuY2UiD2lzc3VlQW1vdW50Qm90aCIPY2FsY0dldE9uZVRva2VuIgpvdXRBc3NldElkIgZjaGVja3MiEG91dEluQW1vdW50QXNzZXQiDWJhbGFuY2VCaWdJbnQiGG91dEluQW1vdW50QXNzZXREZWNpbWFscyIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiCm91dEJhbGFuY2UiEG91dEJhbGFuY2VCaWdJbnQiDnJlZGVlbWVkQmlnSW50IglhbW91bnRSYXciDSR0MDM2NTg2MzY2NDIiC3RvdGFsQW1vdW50Ig0kdDAzNjY0NjM2ODcyIgtvdXRBbUFtb3VudCILb3V0UHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IhhhbW91bnRCb3RoSW5QYXltZW50QXNzZXQiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0Iglpc01hbmFnZXIiAnBrIgttdXN0TWFuYWdlciICcGQiDWNsZWFuQW1vdW50SW4iCWlzUmV2ZXJzZSINZmVlUG9vbEFtb3VudCINJHQwMzg3NTgzOTA2MyIIYXNzZXRPdXQiB2Fzc2V0SW4iEnBvb2xBc3NldEluQmFsYW5jZSITcG9vbEFzc2V0T3V0QmFsYW5jZSIJYW1vdW50T3V0IgRvbGRLIgRuZXdLIgZjaGVja0siDGFtb3VudE91dE1pbiIJYWRkcmVzc1RvIgtzd2FwQ29udGFjdCIIY2hlY2tNaW4iDnJlYmFsYW5jZVN0YXRlIg13aXRoZHJhd1N0YXRlIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSILY2hlY2tDYWxsZXIiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIg9zaG91bGRBdXRvU3Rha2UiBGFtSWQiBHBySWQiDHNsaXBwYWdlQUludiIMc2xpcHBhZ2VQSW52IgpscFRyYW5zZmVyIgtzbHBTdGFrZUludiINJHQwNDQxMDk0NDU3MSIRcmVmcmVzaEtMcEFjdGlvbnMiEWlzVXBkYXRlZEtMcFZhbGlkIgNyZWIiC21heFNsaXBwYWdlIg0kdDA0NTE4MzQ1MjQ4IgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiB3BheW1lbnQiDSR0MDQ2NDM2NDY1ODgiBWJvbnVzIhNlbWl0QW1vdW50RXN0aW1hdGVkIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwNDcxNzQ0NzM3MSINJHQwNDczNzQ0NzQ4MiINJHQwNDc4Mzc0Nzk5NCINb3V0QXNzZXRJZFN0ciINaXNHZXREaXNhYmxlZCINJHQwNDg4Nzk0OTAzMiIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDA0OTYwNjQ5ODUzIhBmZWVBbW91bnRGb3JDYWxjIg0kdDA0OTg1NjQ5OTY0Ig0kdDA1MDI0MjUwMzk4Ig11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDA1MTMwMzUxNDU0Ig0kdDA1MjAyMzUyMjcwIg0kdDA1MjI3MzUyMzgxIglvdXRBbXRBbXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig0kdDA1MzM0ODUzNDMwIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0Ig0kdDA1NDM3OTU0NDYwIg1jaGVja1BheW1lbnRzIg9jaGVja1Bvb2xTdGF0dXMiDSR0MDU1NTg2NTU2NjciFW5vTGVzc1RoZW5BbW91bnRBc3NldCIMY2hlY2tBbW91bnRzIg0kdDA1Njk2MjU3MDQzIgthbXRBc3NldFN0ciINcHJpY2VBc3NldFN0ciIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNTgyMzA1ODI5NCIQa0xwVXBkYXRlQWN0aW9ucyIKYW10QXNzZXRJZCIMcHJpY2VBc3NldElkIg1wb29sTFBCYWxhbmNlIhJhY2NBbXRBc3NldEJhbGFuY2UiFGFjY1ByaWNlQXNzZXRCYWxhbmNlIgpwcmljZXNMaXN0Ig9scEFtdEFzc2V0U2hhcmUiEWxwUHJpY2VBc3NldFNoYXJlIgpwb29sV2VpZ2h0IgxjdXJQcmljZUNhbGMiDGFtQmFsYW5jZVJhdyIMcHJCYWxhbmNlUmF3Ig9hbUJhbGFuY2VSYXdYMTgiD3ByQmFsYW5jZVJhd1gxOCIQcGF5bWVudExwQXNzZXRJZCIMcGF5bWVudExwQW10IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiDSR0MDY2OTU2NjcwMjUiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaH4AAWEACAABYgCAwtcvAAFjCQC2AgEAgMLXLwABZAkAtgIBAICAkLu61q3wDQABZQkAtgIBAAAAAWYJALYCAQAAAAFnCQC2AgEAAQABaAkAtgIBAAIAAWkCBVdBVkVTAAFqAgJfXwABawABAAFsAAIAAW0AAwABbgAEAAFvAAEAAXAAAgABcQADAAFyAAQAAXMABQABdAAGAAF1AAcAAXYACAABdwAJAAF4AAoAAXkAAQABegACAAFBAAMAAUIAAQABQwAHAQFEAgFFAUYJALwCAwkAtgIBBQFFBQFkCQC2AgEFAUYBAUcCAUUBRgkAvAIDBQFFBQFkBQFGAQFIAgFJAUoJAKADAQkAvAIDBQFJCQC2AgEFAUoFAWQBAUsDAUkBSgFMCQCgAwEJAL0CBAUBSQkAtgIBBQFKBQFkBQFMAQFNAwFOAU8BUAkAawMFAU4FAU8FAVABAVEBAUkDCQBmAgAABQFJCQEBLQEFAUkFAUkBAVIBAUkDCQC/AgIFAWUFAUkJAL4CAQUBSQUBSQEBUwACECVzX19zd2FwQ29udHJhY3QBAVQAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFVAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVYAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVcAAhElcyVzX19wcmljZV9fbGFzdAEBWAIBWQFaCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBWQkAzAgCCQCkAwEFAVoFA25pbAUBagECYWECAmFiAmFjCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCYWICAl9fBQJhYwECYWQCAmFiAmFjCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCYWICAl9fBQJhYwECYWUAAg8lc19fYW1vdW50QXNzZXQBAmFmAAIOJXNfX3ByaWNlQXNzZXQAAmFnAgclc19fZmVlAAJhaAkAawMACgUBYgCQTgACYWkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWcFAmFoAAJhagkAuQkCCQDMCAICAiVzCQDMCAICA2tMcAUDbmlsBQFqAAJhawkAuQkCCQDMCAICAiVzCQDMCAICEmtMcFJlZnJlc2hlZEhlaWdodAUDbmlsBQFqAAJhbAkAuQkCCQDMCAICAiVzCQDMCAICD3JlZnJlc2hLTHBEZWxheQUDbmlsBQFqAAJhbQAeAAJhbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhbAUCYW0BAmFvAQJhcAkAuQkCCQDMCAICBCVzJXMJAMwIAgINc3Rha2VkQmFsYW5jZQkAzAgCBQJhcAUDbmlsBQFqAQJhcQECYXAJALkJAgkAzAgCAgQlcyVzCQDMCAICEXNoYXJlQXNzZXRCYWxhbmNlCQDMCAIFAmFwBQNuaWwFAWoBAmFyAQJhcAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYW8BBQJhcAAAAQJhcwECYXAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmFxAQUCYXAAAAECYXQAAhElc19fZmFjdG9yeUNvbmZpZwECYXUAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmF2AQJhdwkArAICCQCsAgICCCVzJXMlc19fBQJhdwIgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQBAmF4AgJheQJhegkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYXkCAl9fBQJhegIIX19jb25maWcBAmFBAQJhQgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhQgECYUMAAgwlc19fc2h1dGRvd24BAmFEAQJhRQkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FAmFFAQJhRgACFyVzX19hbGxvd2VkTHBTY3JpcHRIYXNoAAJhRwIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmFIBAJhSQJhSgJhSwJhTAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAKUDAQUCYUkCAiAoBQJhSgIBKQINIHNlbmRlclZhbGlkPQkApQMBBQJhSwIOIG1hdGNoZXJWYWxpZD0JAKUDAQUCYUwBAmFNAgJhTgJhTwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFOBQJhTwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhTgkAzAgCAgEuCQDMCAIFAmFPCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFQAgJhTgJhTwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFOBQJhTwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhTgkAzAgCAgEuCQDMCAIFAmFPCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFRAQJhUgkAAgEJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhUgUDbmlsAgEgAQJhUwECYVIJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhUgUDbmlsAgEgAAJhVAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFNAgUEdGhpcwkBAVQAAAJhVQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFNAgUCYVQFAmFHAAJhVgoAAmFXCQD8BwQFAmFUAhBnZXRJbkZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVcCA0ludAUCYVcJAAIBCQCsAgIJAAMBBQJhVwIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJhWAoAAmFXCQD8BwQFAmFUAhFnZXRPdXRGZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFXAgNJbnQFAmFXCQACAQkArAICCQADAQUCYVcCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAECYVkACQELdmFsdWVPckVsc2UCCQCbCAIFAmFUCQECYUMABwECYVoACQDZBAEJAQJhTQIFAmFUCQECYXUAAQJiYQAEAmJiCQECYU0CBQR0aGlzCQECYWUABAJiYwkBAmFNAgUEdGhpcwkBAmFmAAQCYXoJAQJhUAIFAmFUCQECYUEBBQJiYwQCYXkJAQJhUAIFAmFUCQECYUEBBQJiYgkAtQkCCQECYU0CBQJhVAkBAmF4AgkApAMBBQJheQkApAMBBQJhegUBagECYmQBAmJlAwkAAAIFAmJlBQFpBQR1bml0CQDZBAEFAmJlAQJiZgECYmUDCQAAAgUCYmUFBHVuaXQFAWkJANgEAQkBBXZhbHVlAQUCYmUBAmJnAQJiaAkAmQoHCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmJoBQFvCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmgFAXAJANkEAQkAkQMCBQJiaAUBcQkBAmJkAQkAkQMCBQJiaAUBcgkBAmJkAQkAkQMCBQJiaAUBcwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJoBQF0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmgFAXUAAmJpCQECYmcBCQECYmEAAAJiagUCYmkAAmJrCAUCYmoCXzEAAmJsCAUCYmoCXzIAAmJtCAUCYmoCXzMAAmJuCAUCYmoCXzQAAmJvCAUCYmoCXzUAAmJwCAUCYmoCXzYAAmJxCAUCYmoCXzcBAmJyAAkAtQkCCQECYU0CBQJhVAkBAmF0AAUBagACYnMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJicgAFAUICGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MAAmJ0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYnIABQFDAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAQJidQoCYnYCYncCYngCYnkCYnoCYkECYkICYkMCYkQCYkUJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJ2CQDMCAIJAKQDAQUCYncJAMwIAgkApAMBBQJieAkAzAgCCQCkAwEFAmJ5CQDMCAIJAKQDAQUCYnoJAMwIAgkApAMBBQJiQQkAzAgCCQCkAwEFAmJCCQDMCAIJAKQDAQUCYkMJAMwIAgkApAMBBQJiRAkAzAgCCQCkAwEFAmJFBQNuaWwFAWoBAmJGBgJiRwJiSAJiSQJieQJiQgJiQwkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJHCQDMCAIJAKQDAQUCYkgJAMwIAgkApAMBBQJiSQkAzAgCCQCkAwEFAmJ5CQDMCAIJAKQDAQUCYkIJAMwIAgkApAMBBQJiQwUDbmlsBQFqAQJiSgECYXAEAmJLAwkAAAIFAmFwAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJhcAQCYkwJAGUCCQBkAgUCYksJAQJhcgEFAmFwCQECYXMBBQJhcAkAlgMBCQDMCAIAAAkAzAgCBQJiTAUDbmlsAQJiTQICYk4CYk8JALwCAwUCYk4FAWQFAmJPAQJiUAMCYk4CYk8BTAkAvQIEBQJiTgUBZAUCYk8FAUwBAmJRAQJiUgQCYlMJAPwHBAUCYlICB2dldFJhdGUFA25pbAUDbmlsAwkAAAIFAmJTBQJiUwQCYlQFAmJTAwkAAQIFAmJUAgNJbnQEAmJVBQJiVAUCYlUJAQJhUQECIHByb3h5LmdldFJhdGUoKSB1bmV4cGVjdGVkIHZhbHVlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJiVgQCYXACYlcCYlgCYlIEAmJZCQECYXIBBQJhcAMJAAACBQJiWQUCYlkEAmJaCQECYXMBBQJiWAMJAAACBQJiWgUCYloEAmNhCQECYmQBBQJhcAMJAGYCBQJiVwAABAJjYgkA/AcEBQJiUgIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjYQUCYlcFA25pbAMJAAACBQJjYgUCY2IEAmJUBQJjYgMJAAECBQJiVAIDSW50BAJjYwUCYlQEAmNkCQBkAgUCYlkFAmJXBAJjZQkAZAIFAmJaBQJjYwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFvAQUCYXAFAmNkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXEBBQJiWAUCY2UFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNmBgJhcAJiVwJiWAJiUgJjZwJjaAQCYlkJAQJhcgEFAmFwAwkAAAIFAmJZBQJiWQQCYloJAQJhcwEFAmJYAwkAAAIFAmJaBQJiWgQCY2kJAQJiUQEFAmJSAwkAAAIFAmNpBQJjaQQCY2oJAGsDBQJjZwUCYlkFAmJaBAJjawkBAmJkAQUCYlgEAmNsCQBrAwUCY2cFAmJXBQJjagQCY20JAGsDBQJjZwUCYlcFAmNpBAJjbgkAlgMBCQDMCAIAAAkAzAgCCQBlAgUCY2wFAmNtBQNuaWwDCQBmAgUCY20AAAQCY28JAPwHBAUCYlICCHdpdGhkcmF3BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNrBQJjbQUDbmlsAwkAAAIFAmNvBQJjbwQCYlQFAmNvAwkAAQIFAmJUAgNJbnQEAmNwBQJiVAQCY2QJAGUCBQJiWQUCY3AEAmNlCQBlAgkAZQIFAmJaBQJjbQUCY24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhbwEFAmFwBQJjZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFxAQUCYlgFAmNlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNoBQJjbgkBAmJkAQUCYlgFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNxAQJhcAQCYlQJAPwHBAUCYVQCGmdldFBvb2xMZWFzZUNvbmZpZ1JFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwkAzAgCBQJhcAUDbmlsBQNuaWwDCQABAgUCYlQCMChCb29sZWFuLCBJbnQsIEludCwgU3RyaW5nLCBTdHJpbmcsIEludCwgU3RyaW5nKQQCY3IFAmJUBQJjcgkBAmFRAQkArAICCQCsAgICAVsFAmFwAh1dIGdldExlYXNlUHJveHlDb25maWcoKSBlcnJvcgECY3MHAmN0AmFwAmJYAmN1AmJSAmNnAmNoBAJiWQkBAmFyAQUCYXADCQAAAgUCYlkFAmJZBAJiWgkBAmFzAQUCYlgDCQAAAgUCYloFAmJaBAJjdgQCYlQJAQJiZAEFAmFwAwkAAQIFAmJUAgpCeXRlVmVjdG9yBAJjdwUCYlQJAPAHAgUEdGhpcwUCY3cDCQABAgUCYlQCBFVuaXQEAmN4BQJiVAgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAAIBAgtNYXRjaCBlcnJvcgMJAAACBQJjdgUCY3YEAmN5CQCWAwEJAMwIAgAACQDMCAIJAGUCCQBkAgUCY3YFAmJZBQJjdQUDbmlsBAJjegkAawMFAmN0BQJjeQBkBAJjQQkAZQIFAmJZBQJjegMJAAACBQJjQQAABQNuaWwDCQBmAgAABQJjQQQCY0IJAQEtAQUCY0EJAQJiVgQFAmFwBQJjQgUCYlgFAmJSBAJjQwUCY0EJAQJjZgYFAmFwBQJjQwUCYlgFAmJSBQJjZwUCY2gJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNEAQJhcAQCY0UJAQJjcQEFAmFwBAJjRggFAmNFAl8xBAJjRwgFAmNFAl8yBAJjdQgFAmNFAl8zBAJjSAgFAmNFAl80BAJjSQgFAmNFAl81BAJjZwgFAmNFAl82BAJjSggFAmNFAl83AwUCY0YJAQJjcwcFAmNHBQJhcAUCY0kFAmN1CQERQGV4dHJOYXRpdmUoMTA2MikBBQJjSAUCY2cJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNKBQNuaWwBAmNLAgJhcAJjTAQCY00JAQJjcQEFAmFwBAJjRggFAmNNAl8xBAJjRwgFAmNNAl8yBAJjdQgFAmNNAl8zBAJjSAgFAmNNAl80BAJjSQgFAmNNAl81BAJjZwgFAmNNAl82BAJjSggFAmNNAl83AwUCY0YEAmNOCQCWAwEJAMwIAgAACQDMCAIJAGUCCQBlAgkBAmJKAQUCYXAFAmNMBQJjdQUDbmlsAwkAAAIFAmNOBQJjTgQCY2QJAGsDBQJjRwUCY04AZAMJAAACBQJjZAUCY2QEAmNPCQCWAwEJAMwIAgAACQDMCAIJAGUCCQECYXIBBQJhcAUCY2QFA25pbAMJAAACBQJjTwUCY08JAQJjZgYFAmFwBQJjTwUCY0kJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNIBQJjZwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCY0oJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAECY1AEAmNRAmNSAmNTAmNUBAJjVQkBAUQCBQJjUwUCY1EEAmNWCQEBRAIFAmNUBQJjUgkBAmJNAgUCY1YFAmNVAQJjVwMCY1MCY1QCY1gEAmNZCQECYmEABAJjWgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNZBQF0BAJkYQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNZBQF1BAJkYgkBAmNQBAUCY1oFAmRhBQJjUwUCY1QEAmJPCQEBRAIFAmNTBQJjWgQCYk4JAQFEAgUCY1QFAmRhBAJkYwkBAUQCBQJjWAUBYgQCZGQJAQJiTQIFAmJPBQJkYwQCZGUJAQJiTQIFAmJOBQJkYwkAzAgCBQJkYgkAzAgCBQJkZAkAzAgCBQJkZQUDbmlsAQJkZgMCY1MCY1QCY1gEAmRnCQECY1cDBQJjUwUCY1QFAmNYCQDMCAIJAQFIAgkAkQMCBQJkZwAABQFiCQDMCAIJAQFIAgkAkQMCBQJkZwABBQFiCQDMCAIJAQFIAgkAkQMCBQJkZwACBQFiBQNuaWwBAmRoBAJkaQJkagJkawJhYgQCY1kJAQJiYQAEAmRsCQCRAwIFAmNZBQFxBAJkbQkAkQMCBQJjWQUBcgQCZG4JAJEDAgUCY1kFAXMEAmNRCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1kFAXQEAmNSCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1kFAXUEAmRvCQCRAwIFAmNZBQFwBAJkcAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmRsCQCsAgIJAKwCAgIGQXNzZXQgBQJkbAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJkbAUCZGoJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmRxCQECYkoBBQJkbQQCZHIJAQFEAgUCZHEFAmNRBAJkcwkBAmJKAQUCZG4EAmR0CQEBRAIFAmRzBQJjUgQCZHUJAQJiTQIFAmR0BQJkcgQCZHYJAQFIAgUCZHUFAWIEAmR3CQEBRAIFAmRrBQFiBAJkeAkBAUQCBQJkcAUBYgQCZHkJALwCAwUCZHIFAmR3BQJkeAQCZHoJALwCAwUCZHQFAmR3BQJkeAQCZEEJAQFLAwUCZHkFAmNRBQVGTE9PUgQCZEIJAQFLAwUCZHoFAmNSBQVGTE9PUgQCZEMJAQJjSwIFAmRtBQJkQQMJAAACBQJkQwUCZEMEAmRECQECY0sCBQJkbgUCZEIDCQAAAgUCZEQFAmREBAJkRQMJAAACBQJkaQIABQNuaWwJAM4IAgkAzggCBQJkQwUCZEQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmRBAwkAAAIFAmRtAgVXQVZFUwUEdW5pdAkA2QQBBQJkbQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCZEIDCQAAAgUCZG4CBVdBVkVTBQR1bml0CQDZBAEFAmRuCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQUCYWIFAmRpCQECYkYGBQJkQQUCZEIFAmRrBQJkdgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJkdgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkdgUDbmlsCQCcCgoFAmRBBQJkQgUCZG0FAmRuBQJkcQUCZHMFAmRwBQJkdQUCZG8FAmRFCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJkRgkCZGkCZEcCZEgCZEkCZEoCZEsCYWICZEwCZE0EAmNZCQECYmEABAJkbAkA2QQBCQCRAwIFAmNZBQFxBAJkTgkAkQMCBQJjWQUBcgQCZE8JAJEDAgUCY1kFAXMEAmRQCQCRAwIFAmNZBQF2BAJkUQkAkQMCBQJjWQUBdwQCY1oJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjWQUBdAQCZGEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjWQUBdQQCZG8JAJEDAgUCY1kFAXAEAmRwCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRsCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmRsAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZFIJANgEAQkBC3ZhbHVlT3JFbHNlAgUCZEkJANkEAQIFV0FWRVMEAmRTCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmRLCQDZBAECBVdBVkVTAwMJAQIhPQIFAmROBQJkUgYJAQIhPQIFAmRPBQJkUwkAAgECIkludmFsaWQgYW10IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4EAmRxAwUCZEwJAQJiSgEFAmROCQBlAgkBAmJKAQUCZE4FAmRIBAJkcwMFAmRMCQECYkoBBQJkTwkAZQIJAQJiSgEFAmRPBQJkSgQCZFQJAQFEAgUCZEgFAmNaBAJkVQkBAUQCBQJkSgUCZGEEAmRWCQECYk0CBQJkVQUCZFQEAmRyCQEBRAIFAmRxBQJjWgQCZHQJAQFEAgUCZHMFAmRhBAJkVwMJAAACBQJkcAAABAJkdQUBZQQCZFgFAWUEAmRjCQB2BgkAuQICBQJkVAUCZFUAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFIAgUCZGMFAWIJAQFIAgUCZFQFAmNaCQEBSAIFAmRVBQJkYQkBAmJNAgkAtwICBQJkdAUCZFUJALcCAgUCZHIFAmRUBQJkWAQCZHUJAQJiTQIFAmR0BQJkcgQCZFgJALwCAwkBAVIBCQC4AgIFAmR1BQJkVgUBZAUCZHUEAmRZCQEBRAIFAmRHBQFiAwMJAQIhPQIFAmR1BQFlCQC/AgIFAmRYBQJkWQcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCZFgCHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkApgMBBQJkWQQCZHgJAQFEAgUCZHAFAWIEAmRaCQC9AgQFAmRUCQECYlADBQJkdAUCZHIFB0NFSUxJTkcFAWQFB0NFSUxJTkcEAmVhCQC9AgQFAmRVBQFkCQECYlADBQJkdAUCZHIFBUZMT09SBQdDRUlMSU5HBAJlYgMJAL8CAgUCZFoFAmRVCQCUCgIFAmVhBQJkVQkAlAoCBQJkVAUCZFoEAmVjCAUCZWICXzEEAmVkCAUCZWICXzIEAmRjCQC9AgQFAmR4BQJlZAUCZHQFBUZMT09SCQCXCgUJAQFLAwUCZGMFAWIFBUZMT09SCQEBSwMFAmVjBQJjWgUHQ0VJTElORwkBAUsDBQJlZAUCZGEFB0NFSUxJTkcFAmR1BQJkWAQCZWUIBQJkVwJfMQQCZWYIBQJkVwJfMgQCZWcIBQJkVwJfMwQCZHYJAQFIAggFAmRXAl80BQFiBAJlaAkBAUgCCAUCZFcCXzUFAWIDCQBnAgAABQJlZQkAAgECNkludmFsaWQgY2FsY3VsYXRpb25zLiBMUCBjYWxjdWxhdGVkIGlzIGxlc3MgdGhhbiB6ZXJvLgQCZWkDCQEBIQEFAmRNAAAFAmVlBAJlagkAZQIFAmRIBQJlZgQCZWsJAGUCBQJkSgUCZWcEAmVsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmR2CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmR2CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAmFiBQJkaQkBAmJ1CgUCZWYFAmVnBQJlaQUCZHYFAmRHBQJlaAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZWoFAmVrBQNuaWwJAJ8KDQUCZWUFAmVpBQJkdgUCZHEFAmRzBQJkcAUCZGwFAmRvBQJlbAUCZWoFAmVrBQJkSQUCZEsBAmVtAwJlbgJlbwJkcAQCZXAJAQFHAgUCZW4JALYCAQUCYnAEAmVxCQEBRwIFAmVvCQC2AgEFAmJxBAJlcgkAvAIDCQB2BgkAuQICBQJlcAUCZXEAAAkAtgIBAAUAAQASBQRET1dOBQFnBQJkcAMJAAACBQJkcAUBZgUBZgUCZXIBAmVzAwJldAJldQJldgQCZXcJALgCAgkAtgIBCQECYkoBCQECYmYBBQJibgUCZXQEAmV4CQC4AgIJALYCAQkBAmJKAQkBAmJmAQUCYm8FAmV1BAJleQkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJtCHF1YW50aXR5BQJldgQCZXoJAQJlbQMFAmV3BQJleAUCZXkFAmV6AQJlQQMCZUICZUMCZXYEAmV3CQBkAgkBAmJKAQkBAmJmAQUCYm4FAmVCBAJleAkAZAIJAQJiSgEJAQJiZgEFAmJvBQJlQwQCZXkJAGQCCAkBBXZhbHVlAQkA7AcBBQJibQhxdWFudGl0eQUCZXYEAmVyCQECZW0DCQC2AgEFAmV3CQC2AgEFAmV4CQC2AgEFAmV5BAJlRAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYWsFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhagkApgMBBQJlcgUDbmlsCQCUCgIFAmVEBQJlcgECZUUCAmVGAmVyAwkAwAICBQJlcgUCZUYGCQECYVEBCQC5CQIJAMwIAgIidXBkYXRlZCBLTHAgbG93ZXIgdGhhbiBjdXJyZW50IEtMcAkAzAgCCQCmAwEFAmVGCQDMCAIJAKYDAQUCZXIFA25pbAIBIAECZUcBAmVIBAJldwkBAmJKAQkBAmJmAQUCYm4EAmV4CQECYkoBCQECYmYBBQJibwQCZUkIBQJlSAZhbW91bnQEAmVKCQBuBAgFAmVIBmFtb3VudAgFAmVIBXByaWNlBQFiBQVGTE9PUgQCZUsDCQAAAggFAmVICW9yZGVyVHlwZQUDQnV5CQCUCgIFAmVJCQEBLQEFAmVKCQCUCgIJAQEtAQUCZUkFAmVKBAJlQggFAmVLAl8xBAJlQwgFAmVLAl8yAwMDCQECYVkABgkAAAIFAmJsBQFtBgkAAAIFAmJsBQFuCQACAQIcRXhjaGFuZ2Ugb3BlcmF0aW9ucyBkaXNhYmxlZAMDCQECIT0CCAgFAmVICWFzc2V0UGFpcgthbW91bnRBc3NldAUCYm4GCQECIT0CCAgFAmVICWFzc2V0UGFpcgpwcmljZUFzc2V0BQJibwkAAgECE1dyb25nIG9yZGVyIGFzc2V0cy4EAmVMCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhagIBMAkBAmFTAQILaW52YWxpZCBrTHAEAmVNCQECZUEDBQJlQgUCZUMAAAQCZU4IBQJlTQJfMQQCZU8IBQJlTQJfMgQCZVAJAMACAgUCZU8FAmVMBAJlUQkAuQkCCQDMCAICBGtMcD0JAMwIAgkApgMBBQJlTAkAzAgCAggga0xwTmV3PQkAzAgCCQCmAwEFAmVPCQDMCAICFCBhbW91bnRBc3NldEJhbGFuY2U9CQDMCAIJAKQDAQUCZXcJAMwIAgITIHByaWNlQXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmV4CQDMCAICGSBhbW91bnRBc3NldEJhbGFuY2VEZWx0YT0JAMwIAgkApAMBBQJlQgkAzAgCAhggcHJpY2VBc3NldEJhbGFuY2VEZWx0YT0JAMwIAgkApAMBBQJlQwkAzAgCAgggaGVpZ2h0PQkAzAgCCQCkAwEFBmhlaWdodAUDbmlsAgAJAJQKAgUCZVAFAmVRAQJlUgECZVMDCQECIT0CCQCQAwEIBQJlUwhwYXltZW50cwABCQACAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEAmVUCQEFdmFsdWUBCQCRAwIIBQJlUwhwYXltZW50cwAABAJkagkBBXZhbHVlAQgFAmVUB2Fzc2V0SWQEAmVVCAUCZVQGYW1vdW50BAJkVwkBAmRoBAkA2AQBCAUCZVMNdHJhbnNhY3Rpb25JZAkA2AQBBQJkagUCZVUIBQJlUwZjYWxsZXIEAmRBCAUCZFcCXzEEAmRCCAUCZFcCXzIEAmRvCQENcGFyc2VJbnRWYWx1ZQEIBQJkVwJfOQQCZEUIBQJkVwNfMTADAwkBAmFZAAYJAAACBQJkbwUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCZG8JAJcKBQUCZEEFAmRCBQJlVQUCZGoFAmRFAQJlVgMCZVMCZEcCZE0DCQECIT0CCQCQAwEIBQJlUwhwYXltZW50cwACCQACAQIfZXhhY3RseSAyIHBheW1lbnRzIGFyZSBleHBlY3RlZAQCZVcJAQV2YWx1ZQEJAJEDAggFAmVTCHBheW1lbnRzAAAEAmVYCQEFdmFsdWUBCQCRAwIIBQJlUwhwYXltZW50cwABBAJlWQkBAmRGCQkA2AQBCAUCZVMNdHJhbnNhY3Rpb25JZAUCZEcIBQJlVwZhbW91bnQIBQJlVwdhc3NldElkCAUCZVgGYW1vdW50CAUCZVgHYXNzZXRJZAkApQgBCAUCZVMGY2FsbGVyBwUCZE0EAmRvCQENcGFyc2VJbnRWYWx1ZQEIBQJlWQJfOAMDAwkBAmFZAAYJAAACBQJkbwUBbAYJAAACBQJkbwUBbgkAAgEJAKwCAgIsUHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCZG8FAmVZAQJlWgECYlcEAmZhCQD8BwQFAmFUAgRlbWl0CQDMCAIFAmJXBQNuaWwFA25pbAMJAAACBQJmYQUCZmEEAmZiBAJiVAUCZmEDCQABAgUCYlQCB0FkZHJlc3MEAmZjBQJiVAkA/AcEBQJmYwIEZW1pdAkAzAgCBQJiVwUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZmIFAmZiBQJiVwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZmQCAmJXAmFpBAJmZQMJAAACBQJhaQAAAAAJAGsDBQJiVwUCYWkFAWIJAJQKAgkAZQIFAmJXBQJmZQUCZmUBAmZmBAJmZwJmaAJhYgJhYwQCZmkJAAACBQJhYwUEdW5pdAQCZmoJAQJiSgEJAQJiZgEFAmJuBAJmawkBAmJKAQkBAmJmAQUCYm8EAmZsAwkAAAIFAmZoBQJibgYDCQAAAgUCZmgFAmJvBwkBAmFRAQINaW52YWxpZCBhc3NldAQCZm0DBQJmaQkAlAoCBQJmagUCZmsDBQJmbAkAlAoCCQBlAgUCZmoFAmZnBQJmawkAlAoCBQJmagkAZQIFAmZrBQJmZwQCZm4IBQJmbQJfMQQCZm8IBQJmbQJfMgQCZnADBQJmbAkAlAoCBQJmZwAACQCUCgIAAAUCZmcEAmZxCAUCZnACXzEEAmZyCAUCZnACXzIEAmVJCAkBAmZkAgUCZnEFAmFWAl8xBAJlSggJAQJmZAIFAmZyBQJhVgJfMQQCZnMJAQJmZAIFAmZnBQJhVgQCZnQIBQJmcwJfMQQCZmUIBQJmcwJfMgQCZnUJAGQCBQJmbgUCZUkEAmZ2CQBkAgUCZm8FAmVKBAJmdwkBAmJNAgkBAUQCBQJmdgUCYnEJAQFEAgUCZnUFAmJwBAJmeAkBAUgCBQJmdwUBYgQCZnkDBQJmbAUCZm4FAmZvBAJmegkAtgIBBQJmeQQCZkEJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJibQkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJibQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmZCAwkAvwICBQJmQQUBZgYJAQJhUQECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZkIFAmZCBAJmQwkAtgIBBQJmdAQCZkQJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZkEJALgCAgkBCnNxcnRCaWdJbnQECQC3AgIFAWQJALoCAgkAuQICBQJmQwUBZAUCZnoAEgASBQRET1dOBQFkBQFkBQNuaWwEAmVsAwUCZmkFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJmeAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJmeAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECCQClCAEJAQV2YWx1ZQEFAmFiCQDYBAEJAQV2YWx1ZQEFAmFjCQECYnUKBQJmcQUCZnIFAmZEBQJmeAAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmZFCQECYk0CCQEBRAIFAmZvBQJicQkBAUQCBQJmbgUCYnAEAmZGCQEBSAIFAmZFBQFiBAJmRwQCZkgDBQJmbAkAlAoCBQJmcQUCZm4JAJQKAgUCZnIFAmZvBAJiVwgFAmZIAl8xBAJmSQgFAmZIAl8yBAJmSgkAoAMBCQC8AgMFAmZBCQC2AgEJAGkCBQJiVwACCQC2AgEFAmZJCQBrAwkAZQIFAmZEBQJmSgUBYgUCZkoJAJcKBQUCZkQFAmVsBQJmZQUCZkcFAmZsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmSwUCZkwCZnQCZmgCYWICYWMEAmZpCQAAAgUCYWMFBHVuaXQEAmNZCQECYmEABAJjWgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNZBQF0BAJkYQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNZBQF1BAJmTQkAzAgCAwkAAAIFAmZoBQJibQYJAQJhUQECEGludmFsaWQgbHAgYXNzZXQFA25pbAMJAAACBQJmTQUCZk0EAmZOAwkAAAIFAmZMBQJibgYDCQAAAgUCZkwFAmJvBwkBAmFRAQINaW52YWxpZCBhc3NldAQCZk8DBQJmTgkAtgIBCQECYkoBCQECYmYBBQJibgkAtgIBCQECYkoBCQECYmYBBQJibwQCZlADBQJmTgUCY1oFAmRhBAJmUQkBAmJKAQkBAmJmAQUCYm4EAmZSCQECYkoBCQECYmYBBQJibwQCZlMDBQJmTgUCZlEFAmZSBAJmVAkAtgIBBQJmUwQCZkEJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJibQkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJibQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmZVCQC2AgEFAmZ0BAJmVgkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJmTwkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZlUFAWQFAmZBABIFAWgAAAASBQRET1dOBQFkBQNuaWwEAmZXCQECZmQCBQJmVgUCYVgEAmZYCAUCZlcCXzEEAmZlCAUCZlcCXzIEAmZZAwUCZk4JAJYKBAUCZlgAAAkAZQIFAmZRBQJmVgUCZlIJAJYKBAAABQJmWAUCZlEJAGUCBQJmUgUCZlYEAmZaCAUCZlkCXzEEAmdhCAUCZlkCXzIEAmdiCAUCZlkCXzMEAmdjCAUCZlkCXzQEAmZ3CQECYk0CCQEBRAIFAmdjBQJicQkBAUQCBQJnYgUCYnAEAmZ4CQEBSAIFAmZ3BQFiBAJlbAMFAmZpBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAgkApQgBCQEFdmFsdWUBBQJhYgkA2AQBCQEFdmFsdWUBBQJhYwkBAmJGBgUCZloFAmdhBQJmdAUCZngFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZngJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZngFA25pbAQCZkUJAQJiTQIJAQFEAgUCZlIFAmJxCQEBRAIFAmZRBQJicAQCZkYJAQFIAgUCZkUFAWIEAmZHBAJnZAkAaAIJAKADAQkAvAIDBQJmTwUCZlUFAmZBAAIJAGsDCQBlAgUCZlgFAmdkBQFiBQJnZAkAlwoFBQJmWAUCZWwFAmZlBQJmRwUCZk4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmdlAAQCYlQJAKIIAQkBAVUAAwkAAQIFAmJUAgZTdHJpbmcEAmdmBQJiVAkA2QQBBQJnZgMJAAECBQJiVAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJnZwAEAmJUCQCiCAEJAQFWAAMJAAECBQJiVAIGU3RyaW5nBAJnZgUCYlQJANkEAQUCZ2YDCQABAgUCYlQCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZ2gBAmVTBAJiVAkBAmdlAAMJAAECBQJiVAIKQnl0ZVZlY3RvcgQCZ2kFAmJUCQAAAggFAmVTD2NhbGxlclB1YmxpY0tleQUCZ2kDCQABAgUCYlQCBFVuaXQJAAACCAUCZVMGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmdqAQJlUwQCZ2sJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQCYlQJAQJnZQADCQABAgUCYlQCCkJ5dGVWZWN0b3IEAmdpBQJiVAMJAAACCAUCZVMPY2FsbGVyUHVibGljS2V5BQJnaQYFAmdrAwkAAQIFAmJUAgRVbml0AwkAAAIIBQJlUwZjYWxsZXIFBHRoaXMGBQJnawkAAgECC01hdGNoIGVycm9yHgJlUwEJcmViYWxhbmNlAAkAzggCCQECY0QBCQECYU0CBQR0aGlzCQECYWUACQECY0QBCQECYU0CBQR0aGlzCQECYWYAAmVTASFjYWxjdWxhdGVBbW91bnRPdXRGb3JTd2FwUkVBRE9OTFkDAmdsAmdtAmduBAJnbwMJAAACBQJnbQcEAmdwCQECYU0CBQR0aGlzCQECYWYABAJncQkBAmFNAgUEdGhpcwkBAmFlAAkAlAoCBQJncAUCZ3EEAmdwCQECYU0CBQR0aGlzCQECYWUABAJncQkBAmFNAgUEdGhpcwkBAmFmAAkAlAoCBQJncAUCZ3EEAmdwCAUCZ28CXzEEAmdxCAUCZ28CXzIEAmdyCQECYkoBBQJncQQCZ3MJAQJiSgEFAmdwBAJndAkAawMFAmdzBQJnbAkAZAIFAmdyBQJnbAQCZ3UJALkCAgkAtgIBBQJncgkAtgIBBQJncwQCZ3YJALkCAgkAtwICCQC3AgIJALYCAQkBAmJKAQUCZ3EJALYCAQUCZ2wJALYCAQUCZ24JALgCAgkAtgIBCQECYkoBBQJncAkAtgIBBQJndAQCZ3cDCQDAAgIFAmd2BQJndQYJAAIBAhRuZXcgSyBpcyBmZXdlciBlcnJvcgMJAAACBQJndwUCZ3cJAJQKAgUDbmlsBQJndAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwEmY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcEFuZFNlbmRUb2tlbnMFAmdsAmdtAmd4Amd5AmduBAJnegoAAmFXCQD8BwQFAmFUAhdnZXRTd2FwQ29udHJhY3RSRUFET05MWQUDbmlsBQNuaWwDCQABAgUCYVcCBlN0cmluZwUCYVcJAAIBCQCsAgIJAAMBBQJhVwIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBAJmTQkAzAgCAwkAZwIICQEFdmFsdWUBCQCRAwIIBQJlUwhwYXltZW50cwAABmFtb3VudAUCZ2wGCQECYVEBAgxXcm9uZyBhbW91bnQJAMwIAgMJAAACCAUCZVMGY2FsbGVyCQERQGV4dHJOYXRpdmUoMTA2MikBBQJnegYJAQJhUQECEVBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUCZk0FAmZNBAJlVAkBBXZhbHVlAQkAkQMCCAUCZVMIcGF5bWVudHMAAAQCZ3EJAQJiZgEIBQJlVAdhc3NldElkBAJncAMJAAACBQJnbQcJAQJhTQIFBHRoaXMJAQJhZgAJAQJhTQIFBHRoaXMJAQJhZQAEAmdyCQBlAgkBAmJKAQUCZ3EICQEFdmFsdWUBCQCRAwIIBQJlUwhwYXltZW50cwAABmFtb3VudAQCZ3MJAQJiSgEFAmdwBAJndAkAawMFAmdzBQJnbAkAZAIFAmdyBQJnbAQCZ3UJALkCAgkAtgIBBQJncgkAtgIBBQJncwQCZ3YJALkCAgkAtwICCQC2AgEJAQJiSgEFAmdxCQC2AgEFAmduCQC4AgIJALYCAQkBAmJKAQUCZ3AJALYCAQUCZ3QEAmd3AwkAwAICBQJndgUCZ3UGCQACAQIUbmV3IEsgaXMgZmV3ZXIgZXJyb3IDCQAAAgUCZ3cFAmd3BAJnQQMJAGcCBQJndAUCZ3gGCQACAQIsRXhjaGFuZ2UgcmVzdWx0IGlzIGZld2VyIGNvaW5zIHRoYW4gZXhwZWN0ZWQDCQAAAgUCZ0EFAmdBBAJnQgkBAmNEAQUCZ3EDCQAAAgUCZ0IFAmdCBAJnQwkBAmNLAgUCZ3AFAmd0AwkAAAIFAmdDBQJnQwkAlAoCCQDOCAIJAM4IAgUCZ0MFAmdCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmd5BQJndAkBAmJkAQUCZ3AFA25pbAUCZ3QJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVMBCnNldE1hbmFnZXIBAmdEBAJnRQkBAmdqAQUCZVMDCQAAAgUCZ0UFAmdFBAJnRgkA2QQBBQJnRAMJAAACBQJnRgUCZ0YJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVYABQJnRAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVTAQ5jb25maXJtTWFuYWdlcgAEAmdHCQECZ2cABAJnSAMJAQlpc0RlZmluZWQBBQJnRwYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZ0gFAmdIBAJnSQMJAAACCAUCZVMPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJnRwYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZ0kFAmdJCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFVAAkA2AQBCQEFdmFsdWUBBQJnRwkAzAgCCQELRGVsZXRlRW50cnkBCQEBVgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwEDcHV0AgJkRwJnSgMJAGYCAAAFAmRHCQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmVZCQECZVYDBQJlUwUCZEcGBAJlaQgFAmVZAl8yBAJkbAgFAmVZAl83BAJkRQgFAmVZAl85BAJlaggFAmVZA18xMAQCZWsIBQJlWQNfMTEEAmdLCAUCZVkDXzEyBAJnTAgFAmVZA18xMwQCZVcJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmVTCHBheW1lbnRzAAAGYW1vdW50BAJlWAkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZVMIcGF5bWVudHMAAQZhbW91bnQEAmV6CQECZXMDBQJlVwUCZVgJALYCAQAAAwkAAAIFAmV6BQJlegQCZmEJAPwHBAUCYVQCBGVtaXQJAMwIAgUCZWkFA25pbAUDbmlsAwkAAAIFAmZhBQJmYQQCZmIEAmJUBQJmYQMJAAECBQJiVAIHQWRkcmVzcwQCZmMFAmJUCQD8BwQFAmZjAgRlbWl0CQDMCAIFAmVpBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmYgUCZmIEAmdNAwkAZgIFAmVqAAAJAPwHBAUCYnQCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnSwUCZWoFA25pbAUDbmlsAwkAAAIFAmdNBQJnTQQCZ04DCQBmAgUCZWsAAAkA/AcEBQJidAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdMBQJlawUDbmlsBQNuaWwDCQAAAgUCZ04FAmdOBAJnTwMFAmdKBAJnUAkA/AcEBQJicwIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZGwFAmVpBQNuaWwDCQAAAgUCZ1AFAmdQBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmVTBmNhbGxlcgUCZWkFAmRsBQNuaWwEAmdRCQECZUEDAAAAAAAAAwkAAAIFAmdRBQJnUQQCZXIIBQJnUQJfMgQCZ1IIBQJnUQJfMQQCZ1MJAQJlRQIFAmV6BQJlcgMJAAACBQJnUwUCZ1MEAmdUCQD8BwQFBHRoaXMCCXJlYmFsYW5jZQUDbmlsBQNuaWwDCQAAAgUCZ1QFAmdUCQDOCAIJAM4IAgUCZEUFAmdPBQJnUgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwEKcHV0Rm9yRnJlZQECZ1UDCQBmAgAABQJnVQkAAgECFEludmFsaWQgdmFsdWUgcGFzc2VkBAJlWQkBAmVWAwUCZVMFAmdVBwQCZEUIBQJlWQJfOQQCZVcJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmVTCHBheW1lbnRzAAAGYW1vdW50BAJlWAkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZVMIcGF5bWVudHMAAQZhbW91bnQEAmV6CQECZXMDBQJlVwUCZVgJALYCAQAAAwkAAAIFAmV6BQJlegQCZ1YJAQJlQQMAAAAAAAAEAmdSCAUCZ1YCXzEEAmVyCAUCZ1YCXzIEAmdTCQECZUUCBQJlegUCZXIDCQAAAgUCZ1MFAmdTCQDOCAIFAmRFBQJnUgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwEJcHV0T25lVGtuAgJnVwJnWAQCZ1kKAAJhVwkA/AcEBQJhVAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFXAgdCb29sZWFuBQJhVwkAAgEJAKwCAgkAAwEFAmFXAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnWgMDAwkBAmFZAAYJAAACBQJibAUBbAYJAAACBQJibAUBbgYFAmdZBAJmTQkAzAgCAwMJAQEhAQUCZ1oGCQECZ2gBBQJlUwYJAQJhUQECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmVTCHBheW1lbnRzAAEGCQECYVEBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmTQUCZk0EAmhhCQCRAwIIBQJlUwhwYXltZW50cwAABAJmaAgFAmhhB2Fzc2V0SWQEAmZnCAUCaGEGYW1vdW50BAJlegMJAAACBQJmaAUCYm4JAQJlcwMJALYCAQUCZmcJALYCAQAACQC2AgEAAAMJAAACBQJmaAUCYm8JAQJlcwMJALYCAQAACQC2AgEFAmZnCQC2AgEAAAkBAmFRAQIecGF5bWVudCBhc3NldCBpcyBub3Qgc3VwcG9ydGVkAwkAAAIFAmV6BQJlegQCYWIIBQJlUwZjYWxsZXIEAmFjCAUCZVMNdHJhbnNhY3Rpb25JZAQCaGIJAQJmZgQFAmZnBQJmaAUCYWIFAmFjAwkAAAIFAmhiBQJoYgQCZmwIBQJoYgJfNQQCaGMIBQJoYgJfNAQCZmUIBQJoYgJfMwQCZWwIBQJoYgJfMgQCaGQIBQJoYgJfMQQCaGUDAwkAZgIFAmdXAAAJAGYCBQJnVwUCaGQHCQECYVEBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmdXBQNuaWwCAAUCaGQEAmZhCQECZVoBBQJoZQMJAAACBQJmYQUCZmEEAmdPAwUCZ1gEAmhmCQD8BwQFAmJzAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJibQUCaGUFA25pbAMJAAACBQJoZgUCaGYFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZVMGY2FsbGVyBQJoZQUCYm0FA25pbAQCaGcDCQBmAgUCZmUAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhVQUCZmUFAmZoBQNuaWwFA25pbAQCaGgDCQAAAgUEdGhpcwUCYVUJAJQKAgAAAAADBQJmbAkAlAoCCQEBLQEFAmZlAAAJAJQKAgAACQEBLQEFAmZlBAJlQggFAmhoAl8xBAJlQwgFAmhoAl8yBAJoaQkBAmVBAwUCZUIFAmVDAAAEAmdSCAUCaGkCXzEEAmVyCAUCaGkCXzIEAmVMCQEFdmFsdWUBCQCiCAEFAmFqBAJnUwkBAmVFAgUCZXoFAmVyAwkAAAIFAmdTBQJnUwQCZ1QJAPwHBAUEdGhpcwIJcmViYWxhbmNlBQNuaWwFA25pbAMJAAACBQJnVAUCZ1QJAJQKAgkAzggCCQDOCAIJAM4IAgUCZWwFAmdPBQJoZwUCZ1IFAmhlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVTARFwdXRPbmVUa25SRUFET05MWQICZmgCZmcEAmhqCQECZmYEBQJmZwkBAmJkAQUCZmgFBHVuaXQFBHVuaXQEAmhkCAUCaGoCXzEEAmVsCAUCaGoCXzIEAmZlCAUCaGoCXzMEAmhjCAUCaGoCXzQEAmZsCAUCaGoCXzUJAJQKAgUDbmlsCQCVCgMFAmhkBQJmZQUCaGMCZVMBCWdldE9uZVRrbgICaGsCZ1cEAmdZCgACYVcJAPwHBAUCYVQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhVwIHQm9vbGVhbgUCYVcJAAIBCQCsAgIJAAMBBQJhVwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaGwDAwkBAmFZAAYJAAACBQJibAUBbgYFAmdZBAJmTQkAzAgCAwMJAQEhAQUCaGwGCQECZ2gBBQJlUwYJAQJhUQECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmVTCHBheW1lbnRzAAEGCQECYVEBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmTQUCZk0EAmZMCQECYmQBBQJoawQCaGEJAJEDAggFAmVTCHBheW1lbnRzAAAEAmZoCAUCaGEHYXNzZXRJZAQCZnQIBQJoYQZhbW91bnQEAmV6CQECZXMDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmV6BQJlegQCYWIIBQJlUwZjYWxsZXIEAmFjCAUCZVMNdHJhbnNhY3Rpb25JZAQCaG0JAQJmSwUFAmZMBQJmdAUCZmgFAmFiBQJhYwMJAAACBQJobQUCaG0EAmZOCAUCaG0CXzUEAmhjCAUCaG0CXzQEAmZlCAUCaG0CXzMEAmVsCAUCaG0CXzIEAmhuCAUCaG0CXzEEAmJXAwMJAGYCBQJnVwAACQBmAgUCZ1cFAmhuBwkBAmFRAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJnVwUDbmlsAgAFAmhuBAJobwkA/AcEBQJhVAIEYnVybgkAzAgCBQJmdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmaAUCZnQFA25pbAMJAAACBQJobwUCaG8EAmdDCQECY0sCBQJoawUCYlcDCQAAAgUCZ0MFAmdDBAJocAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCYlcFAmZMBQNuaWwEAmhnAwkAZgIFAmZlAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVUFAmZlBQJmTAUDbmlsBQNuaWwEAmhxBAJocgMJAAACBQR0aGlzBQJhVQAABQJmZQMFAmZOCQCUCgIJAQEtAQkAZAIFAmJXBQJocgAACQCUCgIAAAkBAS0BCQBkAgUCYlcFAmhyBAJlQggFAmhxAl8xBAJlQwgFAmhxAl8yBAJocwkBAmVBAwUCZUIFAmVDAAAEAmdSCAUCaHMCXzEEAmVyCAUCaHMCXzIEAmdTCQECZUUCBQJlegUCZXIDCQAAAgUCZ1MFAmdTCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgUCZWwFAmdDBQJocAUCaGcFAmdSBQJiVwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwERZ2V0T25lVGtuUkVBRE9OTFkCAmZMAmZ0BAJodAkBAmZLBQkBAmJkAQUCZkwFAmZ0BQJibQUEdW5pdAUEdW5pdAQCaG4IBQJodAJfMQQCZWwIBQJodAJfMgQCZmUIBQJodAJfMwQCaGMIBQJodAJfNAQCZk4IBQJodAJfNQkAlAoCBQNuaWwJAJUKAwUCaG4FAmZlBQJoYwJlUwETdW5zdGFrZUFuZEdldE9uZVRrbgMCaHUCaGsCZ1cEAmdZCgACYVcJAPwHBAUCYVQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhVwIHQm9vbGVhbgUCYVcJAAIBCQCsAgIJAAMBBQJhVwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaGwDAwkBAmFZAAYJAAACBQJibAUBbgYFAmdZBAJmTQkAzAgCAwMJAQEhAQUCaGwGCQECZ2gBBQJlUwYJAQJhUQECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmVTCHBheW1lbnRzAAAGCQECYVEBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmTQUCZk0EAmZMCQECYmQBBQJoawQCYWIIBQJlUwZjYWxsZXIEAmFjCAUCZVMNdHJhbnNhY3Rpb25JZAQCZXoJAQJlcwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZXoFAmV6BAJodgkA/AcEBQJicwIHdW5zdGFrZQkAzAgCCQDYBAEFAmJtCQDMCAIFAmh1BQNuaWwFA25pbAMJAAACBQJodgUCaHYEAmh3CQECZksFBQJmTAUCaHUFAmJtBQJhYgUCYWMDCQAAAgUCaHcFAmh3BAJmTggFAmh3Al81BAJoYwgFAmh3Al80BAJmZQgFAmh3Al8zBAJlbAgFAmh3Al8yBAJobggFAmh3Al8xBAJiVwMDCQBmAgUCZ1cAAAkAZgIFAmdXBQJobgcJAQJhUQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ1cFA25pbAIABQJobgQCaG8JAPwHBAUCYVQCBGJ1cm4JAMwIAgUCaHUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYm0FAmh1BQNuaWwDCQAAAgUCaG8FAmhvBAJnQwkBAmNLAgUCaGsFAmJXAwkAAAIFAmdDBQJnQwQCaHAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmVTBmNhbGxlcgUCYlcFAmZMBQNuaWwEAmhnAwkAZgIFAmZlAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVUFAmZlBQJmTAUDbmlsBQNuaWwEAmh4BAJocgMJAAACBQR0aGlzBQJhVQAABQJmZQMFAmZOCQCUCgIJAQEtAQkAZAIFAmJXBQJocgAACQCUCgIAAAkBAS0BCQBkAgUCYlcFAmhyBAJlQggFAmh4Al8xBAJlQwgFAmh4Al8yBAJoeQkBAmVBAwUCZUIFAmVDAAAEAmdSCAUCaHkCXzEEAmVyCAUCaHkCXzIEAmdTCQECZUUCBQJlegUCZXIDCQAAAgUCZ1MFAmdTCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgUCZWwFAmdDBQJocAUCaGcFAmdSBQJiVwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwEDZ2V0AAQCZFcJAQJlUgEFAmVTBAJoeggFAmRXAl8xBAJkQggFAmRXAl8yBAJlVQgFAmRXAl8zBAJkaggFAmRXAl80BAJkRQgFAmRXAl81BAJlegkBAmVzAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlegUCZXoEAmhBCQD8BwQFAmFUAgRidXJuCQDMCAIFAmVVBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRqBQJlVQUDbmlsAwkAAAIFAmhBBQJoQQQCaEIJAQJlQQMJAQEtAQUCaHoJAQEtAQUCZEIAAAQCZ1IIBQJoQgJfMQQCZXIIBQJoQgJfMgQCZ1MJAQJlRQIFAmV6BQJlcgMJAAACBQJnUwUCZ1MJAM4IAgUCZEUFAmdSCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVTAQlnZXROb0xlc3MCAmhDAmhEBAJkVwkBAmVSAQUCZVMEAmRBCAUCZFcCXzEEAmRCCAUCZFcCXzIEAmVVCAUCZFcCXzMEAmRqCAUCZFcCXzQEAmRFCAUCZFcCXzUDCQBmAgUCaEMFAmRBCQACAQkArAICCQCsAgIJAKwCAgIcbm9MZXNzVGhlbkFtdEFzc2V0IGZhaWxlZDogIAkApAMBBQJkQQIDIDwgCQCkAwEFAmhDAwkAZgIFAmhEBQJkQgkAAgEJAKwCAgkArAICCQCsAgICHW5vTGVzc1RoZW5QcmljZUFzc2V0IGZhaWxlZDogCQCkAwEFAmRCAgMgPCAJAKQDAQUCaEQEAmV6CQECZXMDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmV6BQJlegQCaEEJAPwHBAUCYVQCBGJ1cm4JAMwIAgUCZVUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZGoFAmVVBQNuaWwDCQAAAgUCaEEFAmhBBAJoRQkBAmVBAwkBAS0BBQJkQQkBAS0BBQJkQgAABAJnUggFAmhFAl8xBAJlcggFAmhFAl8yBAJnUwkBAmVFAgUCZXoFAmVyAwkAAAIFAmdTBQJnUwkAzggCBQJkRQUCZ1IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVMBDXVuc3Rha2VBbmRHZXQBAmJXBAJoRgMJAQIhPQIJAJADAQgFAmVTCHBheW1lbnRzAAAJAAIBAhhObyBwYXltZW50cyBhcmUgZXhwZWN0ZWQGAwkAAAIFAmhGBQJoRgQCY1kJAQJiYQAEAmRsCQDZBAEJAJEDAgUCY1kFAXEEAmV6CQECZXMDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmV6BQJlegQCaHYJAPwHBAUCYnMCB3Vuc3Rha2UJAMwIAgkA2AQBBQJkbAkAzAgCBQJiVwUDbmlsBQNuaWwDCQAAAgUCaHYFAmh2BAJkVwkBAmRoBAkA2AQBCAUCZVMNdHJhbnNhY3Rpb25JZAkA2AQBBQJkbAUCYlcIBQJlUwZjYWxsZXIEAmRBCAUCZFcCXzEEAmRCCAUCZFcCXzIEAmRvCQENcGFyc2VJbnRWYWx1ZQEIBQJkVwJfOQQCZEUIBQJkVwNfMTAEAmhHAwMJAQJhWQAGCQAAAgUCZG8FAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmRvBgMJAAACBQJoRwUCaEcEAmhBCQD8BwQFAmFUAgRidXJuCQDMCAIFAmJXBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRsBQJiVwUDbmlsAwkAAAIFAmhBBQJoQQQCaEgJAQJlQQMJAQEtAQUCZEEJAQEtAQUCZEIAAAQCZ1IIBQJoSAJfMQQCZXIIBQJoSAJfMgQCZ1MJAQJlRQIFAmV6BQJlcgMJAAACBQJnUwUCZ1MJAM4IAgUCZEUFAmdSCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVTARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJodQJoSQJoRAQCaGwDCQECYVkABgkAAAIFAmJsBQFuBAJmTQkAzAgCAwkBASEBBQJobAYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJlUwhwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZNBQJmTQQCZXoJAQJlcwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZXoFAmV6BAJodgkA/AcEBQJicwIHdW5zdGFrZQkAzAgCCQDYBAEFAmJtCQDMCAIFAmh1BQNuaWwFA25pbAMJAAACBQJodgUCaHYEAmRXCQECZGgECQDYBAEIBQJlUw10cmFuc2FjdGlvbklkCQDYBAEFAmJtBQJodQgFAmVTBmNhbGxlcgQCZEEIBQJkVwJfMQQCZEIIBQJkVwJfMgQCZEUIBQJkVwNfMTAEAmhKCQDMCAIDCQBnAgUCZEEFAmhJBgkAAgEJALkJAgkAzAgCAixhbW91bnQgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhJBQNuaWwCAAkAzAgCAwkAZwIFAmRCBQJoRAYJAAIBCQC5CQIJAMwIAgIrcHJpY2UgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhEBQNuaWwCAAUDbmlsAwkAAAIFAmhKBQJoSgQCaEEJAPwHBAUCYVQCBGJ1cm4JAMwIAgUCaHUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYm0FAmh1BQNuaWwDCQAAAgUCaEEFAmhBBAJoSwkBAmVBAwkBAS0BBQJkQQkBAS0BBQJkQgAABAJnUggFAmhLAl8xBAJlcggFAmhLAl8yBAJnUwkBAmVFAgUCZXoFAmVyAwkAAAIFAmdTBQJnUwkAzggCBQJkRQUCZ1IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVMBCGFjdGl2YXRlAgJoTAJoTQMJAQIhPQIJAKUIAQgFAmVTBmNhbGxlcgkApQgBBQJhVAkAAgECEnBlcm1pc3Npb25zIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZQAFAmhMCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZgAFAmhNBQNuaWwCB3N1Y2Nlc3MCZVMBCnJlZnJlc2hLTHAABAJoTgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQJhawAABAJoTwMJAGcCCQBlAgUGaGVpZ2h0BQJoTgUCYW4FBHVuaXQJAQJhUQEJALkJAgkAzAgCCQCkAwEFAmFuCQDMCAICLyBibG9ja3MgaGF2ZSBub3QgcGFzc2VkIHNpbmNlIHRoZSBwcmV2aW91cyBjYWxsBQNuaWwCAAMJAAACBQJoTwUCaE8EAmVMCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhagIBMAkBAmFTAQILaW52YWxpZCBrTHAEAmhQCQECZUEDAAAAAAAABAJoUQgFAmhQAl8xBAJlcggFAmhQAl8yBAJlRAMJAQIhPQIFAmVMBQJlcgUCaFEJAQJhUQECEm5vdGhpbmcgdG8gcmVmcmVzaAkAlAoCBQJlRAkApgMBBQJlcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYmEAAmVTARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJhcAkAlAoCBQNuaWwJAQJiSgEFAmFwAmVTARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJjUwJjVAJjWAQCZGcJAQJjVwMFAmNTBQJjVAUCY1gJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJkZwAACQDMCAIJAKYDAQkAkQMCBQJkZwABCQDMCAIJAKYDAQkAkQMCBQJkZwACBQNuaWwCZVMBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFFAUYJAJQKAgUDbmlsCQCmAwEJAQFEAgUBRQUBRgJlUwEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBSQFKCQCUCgIFA25pbAkBAUgCCQCnAwEFAUkFAUoCZVMBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYk4CYk8JAJQKAgUDbmlsCQCmAwEJAQJiTQIJAKcDAQUCYk4JAKcDAQUCYk8CZVMBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJkaQJkRwJkSAJkSQJkSgJkSwJhYgJkTAJkTQkAlAoCBQNuaWwJAQJkRgkFAmRpBQJkRwUCZEgFAmRJBQJkSgUCZEsFAmFiBQJkTAUCZE0CZVMBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJkaQJkagJkawJhYgQCZFcJAQJkaAQFAmRpBQJkagUCZGsJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmFiCQCUCgIFA25pbAkAnAoKCAUCZFcCXzEIBQJkVwJfMggFAmRXAl8zCAUCZFcCXzQIBQJkVwJfNQgFAmRXAl82CAUCZFcCXzcJAKYDAQgFAmRXAl84CAUCZFcCXzkIBQJkVwNfMTACZVMBDXN0YXRzUkVBRE9OTFkABAJjWQkBAmJhAAQCZGwJANkEAQkAkQMCBQJjWQUBcQQCaFIJAJEDAgUCY1kFAXIEAmhTCQCRAwIFAmNZBQFzBAJkUAkAkQMCBQJjWQUBdgQCZFEJAJEDAgUCY1kFAXcEAmNaCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1kFAXQEAmRhCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1kFAXUEAmhUCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRsCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmRsAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCaFUJAQJiSgEFAmhSBAJoVgkBAmJKAQUCaFMEAmhXAwkAAAIFAmhUAAAJAMwIAgUBZQkAzAgCBQFlCQDMCAIFAWUFA25pbAkBAmNXAwUCaFUFAmhWBQJoVAQCZHYAAAQCaFgJAQFIAgkAkQMCBQJoVwABBQFiBAJoWQkBAUgCCQCRAwIFAmhXAAIFAWIEAmhaCQEFdmFsdWUBCQCaCAIFAmFUCQECYUQBCQClCAEFBHRoaXMJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJoVQkAzAgCCQCkAwEFAmhWCQDMCAIJAKQDAQUCaFQJAMwIAgkApAMBBQJkdgkAzAgCCQCkAwEFAmhYCQDMCAIJAKQDAQUCaFkJAMwIAgkApAMBBQJoWgUDbmlsBQFqAmVTASBldmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQECZEgEAmNZCQECYmEABAJkbAkA2QQBCQCRAwIFAmNZBQFxBAJkTgkAkQMCBQJjWQUBcgQCZG0JANkEAQUCZE4EAmRPCQCRAwIFAmNZBQFzBAJkbgkA2QQBBQJkTwQCY1oJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjWQUBdAQCZGEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjWQUBdQQCZG8JAJEDAgUCY1kFAXAEAmhUCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRsCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmRsAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCaFUJAQJiSgEFAmROBAJoVgkBAmJKAQUCZE8EAmNVCQEBRAIFAmhVBQJjWgQCY1YJAQFEAgUCaFYFAmRhBAJkdQMJAAACBQJoVAAABQFlCQECYk0CBQJjVgUCY1UEAmRUCQEBRAIFAmRIBQJjWgQCZFUJALwCAwUCZFQFAmR1BQFkBAJkSgkBAUgCBQJkVQUCZGEEAmVZCQECZEYJAgAAoMIeBQJkSAUCZG0FAmRKBQJkbgIABgcEAmVlCAUCZVkCXzEEAmlhCAUCZVkCXzMEAmRxCAUCZVkCXzQEAmRzCAUCZVkCXzUEAmRwCAUCZVkCXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmVlCQDMCAIJAKQDAQkBAUgCBQJkdQUBYgkAzAgCCQCkAwEFAmRxCQDMCAIJAKQDAQUCZHMJAMwIAgkApAMBBQJkcAkAzAgCBQJkbwkAzAgCCQCkAwEFAmRICQDMCAIJAKQDAQUCZEoFA25pbAUBagJlUwEfZXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQECZEoEAmNZCQECYmEABAJkbAkA2QQBCQCRAwIFAmNZBQFxBAJkTgkAkQMCBQJjWQUBcgQCZG0JANkEAQUCZE4EAmRPCQCRAwIFAmNZBQFzBAJkbgkA2QQBBQJkTwQCY1oJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjWQUBdAQCZGEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjWQUBdQQCZG8JAJEDAgUCY1kFAXAEAmhUCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRsCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmRsAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCaWIJAQJiSgEFAmROBAJpYwkBAmJKAQUCZE8EAmlkCQEBRAIFAmliBQJjWgQCaWUJAQFEAgUCaWMFAmRhBAJkdQMJAAACBQJoVAAABQFlCQECYk0CBQJpZQUCaWQEAmRVCQEBRAIFAmRKBQJkYQQCZFQJALwCAwUCZFUFAWQFAmR1BAJkSAkBAUgCBQJkVAUCY1oEAmVZCQECZEYJAgAAoMIeBQJkSAUCZG0FAmRKBQJkbgIABgcEAmVlCAUCZVkCXzEEAmlhCAUCZVkCXzMEAmRxCAUCZVkCXzQEAmRzCAUCZVkCXzUEAmRwCAUCZVkCXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmVlCQDMCAIJAKQDAQkBAUgCBQJkdQUBYgkAzAgCCQCkAwEFAmRxCQDMCAIJAKQDAQUCZHMJAMwIAgkApAMBBQJkcAkAzAgCBQJkbwkAzAgCCQCkAwEFAmRICQDMCAIJAKQDAQUCZEoFA25pbAUBagJlUwETZXZhbHVhdGVHZXRSRUFET05MWQICaWYCaWcEAmRXCQECZGgEAgAFAmlmBQJpZwUEdGhpcwQCZEEIBQJkVwJfMQQCZEIIBQJkVwJfMgQCZHEIBQJkVwJfNQQCZHMIBQJkVwJfNgQCZHAIBQJkVwJfNwQCZHYIBQJkVwJfOAQCZG8JAQ1wYXJzZUludFZhbHVlAQgFAmRXAl85CQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZEEJAMwIAgkApAMBBQJkQgkAzAgCCQCkAwEFAmRxCQDMCAIJAKQDAQUCZHMJAMwIAgkApAMBBQJkcAkAzAgCCQCmAwEFAmR2CQDMCAIJAKQDAQUCZG8FA25pbAUBagECaWgBAmlpAAQCaWoEAmJUCQECZ2UAAwkAAQIFAmJUAgpCeXRlVmVjdG9yBAJnaQUCYlQFAmdpAwkAAQIFAmJUAgRVbml0CAUCaWgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmJUBQJpaAMJAAECBQJiVAIFT3JkZXIEAmVIBQJiVAQCaWsJAQJhWgAEAmlsCQECZUcBBQJlSAQCYUkIBQJpbAJfMQQCYUoIBQJpbAJfMgQCYUsJAPQDAwgFAmVICWJvZHlCeXRlcwkAkQMCCAUCZUgGcHJvb2ZzAAAIBQJlSA9zZW5kZXJQdWJsaWNLZXkEAmFMCQD0AwMIBQJlSAlib2R5Qnl0ZXMJAJEDAggFAmVIBnByb29mcwABBQJpawMDAwUCYUkFAmFLBwUCYUwHBgkBAmFIBAUCYUkFAmFKBQJhSwUCYUwDCQABAgUCYlQCFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJnZgUCYlQDCQD0AwMIBQJpaAlib2R5Qnl0ZXMJAJEDAggFAmloBnByb29mcwAABQJpagYEAmltCQD2AwEJAQV2YWx1ZQEIBQJnZgZzY3JpcHQEAmluCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYVQJAQJhRgAEAmlvCQDxBwEFBHRoaXMDCQAAAgUCaW4FAmltCQECIT0CBQJpbwUCaW0HCQD0AwMIBQJpaAlib2R5Qnl0ZXMJAJEDAggFAmloBnByb29mcwAABQJpauamT2I=", "height": 2522379, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3V2RveLtsogji62AcF3RuvcXbBnB6EB9Qkp2U1wA4jSz Next: FBju3LPE5ESkrSGqPa5cGGR2JZ2n5LdyaqoKJkSTWLow Diff:
OldNewDifferences
130130
131131 let an = valueOrElse(getInteger(this, al), am)
132132
133-func ao () = "%s__factoryConfig"
133+func ao (ap) = makeString(["%s%s", "stakedBalance", ap], j)
134134
135135
136-func ap () = "%s%s__matcher__publicKey"
136+func aq (ap) = makeString(["%s%s", "shareAssetBalance", ap], j)
137137
138138
139-func aq (ar) = (("%s%s%s__" + ar) + "__mappings__poolContract2LpAsset")
139+func ar (ap) = valueOrElse(getInteger(this, ao(ap)), 0)
140140
141141
142-func as (at,au) = (((("%d%d%s__" + at) + "__") + au) + "__config")
142+func as (ap) = valueOrElse(getInteger(this, aq(ap)), 0)
143143
144144
145-func av (aw) = ("%s%s%s__mappings__baseAsset2internalId__" + aw)
145+func at () = "%s__factoryConfig"
146146
147147
148-func ax () = "%s__shutdown"
148+func au () = "%s%s__matcher__publicKey"
149149
150150
151-func ay (az) = ("%s%s__poolWeight__" + az)
151+func av (aw) = (("%s%s%s__" + aw) + "__mappings__poolContract2LpAsset")
152152
153153
154-func aA () = "%s__allowedLpScriptHash"
154+func ax (ay,az) = (((("%d%d%s__" + ay) + "__") + az) + "__config")
155155
156156
157-let aB = "%s__feeCollectorAddress"
158-
159-func aC (aD,aE,aF,aG) = throw((((((((("order validation failed: orderValid=" + toString(aD)) + " (") + aE) + ")") + " senderValid=") + toString(aF)) + " matcherValid=") + toString(aG)))
157+func aA (aB) = ("%s%s%s__mappings__baseAsset2internalId__" + aB)
160158
161159
162-func aH (aI,aJ) = valueOrErrorMessage(getString(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
160+func aC () = "%s__shutdown"
163161
164162
165-func aK (aI,aJ) = valueOrErrorMessage(getInteger(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
163+func aD (aE) = ("%s%s__poolWeight__" + aE)
166164
167165
168-func aL (aM) = throw(makeString(["lp.ride:", aM], " "))
166+func aF () = "%s__allowedLpScriptHash"
169167
170168
171-func aN (aM) = makeString(["lp.ride:", aM], " ")
169+let aG = "%s__feeCollectorAddress"
170+
171+func aH (aI,aJ,aK,aL) = throw((((((((("order validation failed: orderValid=" + toString(aI)) + " (") + aJ) + ")") + " senderValid=") + toString(aK)) + " matcherValid=") + toString(aL)))
172172
173173
174-let aO = addressFromStringValue(aH(this, T()))
174+func aM (aN,aO) = valueOrErrorMessage(getString(aN, aO), makeString(["mandatory ", toString(aN), ".", aO, " is not defined"], ""))
175175
176-let aP = addressFromStringValue(aH(aO, aB))
177176
178-let aQ = {
179- let aR = invoke(aO, "getInFeeREADONLY", [toString(this)], nil)
180- if ($isInstanceOf(aR, "Int"))
181- then aR
182- else throw(($getType(aR) + " couldn't be cast to Int"))
177+func aP (aN,aO) = valueOrErrorMessage(getInteger(aN, aO), makeString(["mandatory ", toString(aN), ".", aO, " is not defined"], ""))
178+
179+
180+func aQ (aR) = throw(makeString(["lp.ride:", aR], " "))
181+
182+
183+func aS (aR) = makeString(["lp.ride:", aR], " ")
184+
185+
186+let aT = addressFromStringValue(aM(this, T()))
187+
188+let aU = addressFromStringValue(aM(aT, aG))
189+
190+let aV = {
191+ let aW = invoke(aT, "getInFeeREADONLY", [toString(this)], nil)
192+ if ($isInstanceOf(aW, "Int"))
193+ then aW
194+ else throw(($getType(aW) + " couldn't be cast to Int"))
183195 }
184196
185-let aS = {
186- let aR = invoke(aO, "getOutFeeREADONLY", [toString(this)], nil)
187- if ($isInstanceOf(aR, "Int"))
188- then aR
189- else throw(($getType(aR) + " couldn't be cast to Int"))
197+let aX = {
198+ let aW = invoke(aT, "getOutFeeREADONLY", [toString(this)], nil)
199+ if ($isInstanceOf(aW, "Int"))
200+ then aW
201+ else throw(($getType(aW) + " couldn't be cast to Int"))
190202 }
191203
192-func aT () = valueOrElse(getBoolean(aO, ax()), false)
204+func aY () = valueOrElse(getBoolean(aT, aC()), false)
193205
194206
195-func aU () = fromBase58String(aH(aO, ap()))
207+func aZ () = fromBase58String(aM(aT, au()))
196208
197209
198-func aV () = {
199- let aW = aH(this, ae())
200- let aX = aH(this, af())
201- let au = aK(aO, av(aX))
202- let at = aK(aO, av(aW))
203- split(aH(aO, as(toString(at), toString(au))), j)
210+func ba () = {
211+ let bb = aM(this, ae())
212+ let bc = aM(this, af())
213+ let az = aP(aT, aA(bc))
214+ let ay = aP(aT, aA(bb))
215+ split(aM(aT, ax(toString(ay), toString(az))), j)
204216 }
205217
206218
207-func aY (aZ) = if ((aZ == i))
219+func bd (be) = if ((be == i))
208220 then unit
209- else fromBase58String(aZ)
221+ else fromBase58String(be)
210222
211223
212-func ba (aZ) = if ((aZ == unit))
224+func bf (be) = if ((be == unit))
213225 then i
214- else toBase58String(value(aZ))
226+ else toBase58String(value(be))
215227
216228
217-func bb (bc) = $Tuple7(addressFromStringValue(bc[o]), parseIntValue(bc[p]), fromBase58String(bc[q]), aY(bc[r]), aY(bc[s]), parseIntValue(bc[t]), parseIntValue(bc[u]))
229+func bg (bh) = $Tuple7(addressFromStringValue(bh[o]), parseIntValue(bh[p]), fromBase58String(bh[q]), bd(bh[r]), bd(bh[s]), parseIntValue(bh[t]), parseIntValue(bh[u]))
218230
219231
220-let bd = bb(aV())
232+let bi = bg(ba())
221233
222-let be = bd
234+let bj = bi
223235
224-let bf = be._1
236+let bk = bj._1
225237
226-let bg = be._2
238+let bl = bj._2
227239
228-let bh = be._3
240+let bm = bj._3
229241
230-let bi = be._4
242+let bn = bj._4
231243
232-let bj = be._5
244+let bo = bj._5
233245
234-let bk = be._6
246+let bp = bj._6
235247
236-let bl = be._7
248+let bq = bj._7
237249
238-func bm () = split(aH(aO, ao()), j)
250+func br () = split(aM(aT, at()), j)
239251
240252
241-let bn = valueOrErrorMessage(addressFromString(bm()[B]), "incorrect staking address")
253+let bs = valueOrErrorMessage(addressFromString(br()[B]), "incorrect staking address")
242254
243-let bo = valueOrErrorMessage(addressFromString(bm()[C]), "incorrect staking address")
255+let bt = valueOrErrorMessage(addressFromString(br()[C]), "incorrect staking address")
244256
245-func bp (bq,br,bs,bt,bu,bv,bw,bx,by,bz) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz)], j)
257+func bu (bv,bw,bx,by,bz,bA,bB,bC,bD,bE) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE)], j)
246258
247259
248-func bA (bB,bC,bD,bt,bw,bx) = makeString(["%d%d%d%d%d%d", toString(bB), toString(bC), toString(bD), toString(bt), toString(bw), toString(bx)], j)
260+func bF (bG,bH,bI,by,bB,bC) = makeString(["%d%d%d%d%d%d", toString(bG), toString(bH), toString(bI), toString(by), toString(bB), toString(bC)], j)
249261
250262
251-func bE (bF) = if ((bF == "WAVES"))
252- then wavesBalance(this).available
253- else assetBalance(this, fromBase58String(bF))
254-
255-
256-func bG (bH,bI) = fraction(bH, d, bI)
257-
258-
259-func bJ (bH,bI,L) = fraction(bH, d, bI, L)
260-
261-
262-func bK (bL,bM,bN,bO) = {
263- let bP = D(bN, bL)
264- let bQ = D(bO, bM)
265- bG(bQ, bP)
263+func bJ (ap) = {
264+ let bK = if ((ap == "WAVES"))
265+ then wavesBalance(this).available
266+ else assetBalance(this, fromBase58String(ap))
267+ let bL = ((bK + ar(ap)) - as(ap))
268+ max([0, bL])
266269 }
267270
268271
269-func bR (bN,bO,bS) = {
270- let bT = aV()
271- let bU = parseIntValue(bT[t])
272- let bV = parseIntValue(bT[u])
273- let bW = bK(bU, bV, bN, bO)
274- let bI = D(bN, bU)
275- let bH = D(bO, bV)
276- let bX = D(bS, b)
277- let bY = bG(bI, bX)
278- let bZ = bG(bH, bX)
279-[bW, bY, bZ]
272+func bM (bN,bO) = fraction(bN, d, bO)
273+
274+
275+func bP (bN,bO,L) = fraction(bN, d, bO, L)
276+
277+
278+func bQ (bR) = {
279+ let bS = invoke(bR, "getRate", nil, nil)
280+ if ((bS == bS))
281+ then {
282+ let bT = bS
283+ if ($isInstanceOf(bT, "Int"))
284+ then {
285+ let bU = bT
286+ bU
287+ }
288+ else aQ("proxy.getRate() unexpected value")
289+ }
290+ else throw("Strict value is not equal to itself.")
280291 }
281292
282293
283-func ca (bN,bO,bS) = {
284- let cb = bR(bN, bO, bS)
285-[H(cb[0], b), H(cb[1], b), H(cb[2], b)]
286- }
287-
288-
289-func cc (cd,ce,cf,ab) = {
290- let bT = aV()
291- let cg = bT[q]
292- let ch = bT[r]
293- let ci = bT[s]
294- let bL = parseIntValue(bT[t])
295- let bM = parseIntValue(bT[u])
296- let cj = bT[p]
297- let ck = valueOrErrorMessage(assetInfo(fromBase58String(cg)), (("Asset " + cg) + " doesn't exist")).quantity
298- if ((cg != ce))
299- then throw("Invalid asset passed.")
300- else {
301- let cl = bE(ch)
302- let cm = D(cl, bL)
303- let cn = bE(ci)
304- let co = D(cn, bM)
305- let cp = bG(co, cm)
306- let cq = H(cp, b)
307- let cr = D(cf, b)
308- let cs = D(ck, b)
309- let ct = fraction(cm, cr, cs)
310- let cu = fraction(co, cr, cs)
311- let cv = K(ct, bL, FLOOR)
312- let cw = K(cu, bM, FLOOR)
313- let cx = if ((cd == ""))
314- then nil
315- else [ScriptTransfer(ab, cv, if ((ch == "WAVES"))
316- then unit
317- else fromBase58String(ch)), ScriptTransfer(ab, cw, if ((ci == "WAVES"))
318- then unit
319- else fromBase58String(ci)), StringEntry(ad(toString(ab), cd), bA(cv, cw, cf, cq, height, lastBlock.timestamp)), IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq)]
320- $Tuple10(cv, cw, ch, ci, cl, cn, ck, cp, cj, cx)
321- }
322- }
323-
324-
325-func cy (cd,cz,cA,cB,cC,cD,ab,cE,cF) = {
326- let bT = aV()
327- let cg = fromBase58String(bT[q])
328- let cG = bT[r]
329- let cH = bT[s]
330- let cI = bT[v]
331- let cJ = bT[w]
332- let bU = parseIntValue(bT[t])
333- let bV = parseIntValue(bT[u])
334- let cj = bT[p]
335- let ck = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
336- let cK = toBase58String(valueOrElse(cB, fromBase58String("WAVES")))
337- let cL = toBase58String(valueOrElse(cD, fromBase58String("WAVES")))
338- if (if ((cG != cK))
339- then true
340- else (cH != cL))
341- then throw("Invalid amt or price asset passed.")
342- else {
343- let cl = if (cE)
344- then bE(cG)
345- else (bE(cG) - cA)
346- let cn = if (cE)
347- then bE(cH)
348- else (bE(cH) - cC)
349- let cM = D(cA, bU)
350- let cN = D(cC, bV)
351- let cO = bG(cN, cM)
352- let cm = D(cl, bU)
353- let co = D(cn, bV)
354- let cP = if ((ck == 0))
294+func bV (ap,bW,bX,bR) = {
295+ let bY = ar(ap)
296+ if ((bY == bY))
297+ then {
298+ let bZ = as(bX)
299+ if ((bZ == bZ))
355300 then {
356- let cp = e
357- let cQ = e
358- let bX = pow((cM * cN), 0, toBigInt(5), 1, 0, DOWN)
359- $Tuple5(H(bX, b), H(cM, bU), H(cN, bV), bG((co + cN), (cm + cM)), cQ)
301+ let ca = bd(ap)
302+ if ((bW > 0))
303+ then {
304+ let cb = invoke(bR, "deposit", nil, [AttachedPayment(ca, bW)])
305+ if ((cb == cb))
306+ then {
307+ let bT = cb
308+ if ($isInstanceOf(bT, "Int"))
309+ then {
310+ let cc = bT
311+ let cd = (bY + bW)
312+ let ce = (bZ + cc)
313+[IntegerEntry(ao(ap), cd), IntegerEntry(aq(bX), ce)]
314+ }
315+ else nil
316+ }
317+ else throw("Strict value is not equal to itself.")
318+ }
319+ else nil
360320 }
361- else {
362- let cp = bG(co, cm)
363- let cQ = fraction(R((cp - cO)), d, cp)
364- let cR = D(cz, b)
365- if (if ((cp != e))
366- then (cQ > cR)
367- else false)
368- then throw(((("Price slippage " + toString(cQ)) + " exceeded the passed limit of ") + toString(cR)))
369- else {
370- let cs = D(ck, b)
371- let cS = fraction(cM, bJ(co, cm, CEILING), d, CEILING)
372- let cT = fraction(cN, d, bJ(co, cm, FLOOR), CEILING)
373- let cU = if ((cS > cN))
374- then $Tuple2(cT, cN)
375- else $Tuple2(cM, cS)
376- let cV = cU._1
377- let cW = cU._2
378- let bX = fraction(cs, cW, co, FLOOR)
379- $Tuple5(K(bX, b, FLOOR), K(cV, bU, CEILING), K(cW, bV, CEILING), cp, cQ)
380- }
381- }
382- let cX = cP._1
383- let cY = cP._2
384- let cZ = cP._3
385- let cq = H(cP._4, b)
386- let da = H(cP._5, b)
387- if ((0 >= cX))
388- then throw("Invalid calculations. LP calculated is less than zero.")
389- else {
390- let db = if (!(cF))
391- then 0
392- else cX
393- let dc = (cA - cY)
394- let dd = (cC - cZ)
395- let de = [IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq), StringEntry(aa(ab, cd), bp(cY, cZ, db, cq, cz, da, height, lastBlock.timestamp, dc, dd))]
396- $Tuple13(cX, db, cq, cl, cn, ck, cg, cj, de, dc, dd, cB, cD)
397- }
398- }
399- }
400-
401-
402-func df (dg,dh,ck) = {
403- let di = G(dg, toBigInt(bk))
404- let dj = G(dh, toBigInt(bl))
405- let dk = fraction(pow((di * dj), 0, toBigInt(5), 1, 18, DOWN), g, ck)
406- if ((ck == f))
407- then f
408- else dk
409- }
410-
411-
412-func dl (dm,dn,do) = {
413- let dp = (toBigInt(bE(ba(bi))) - dm)
414- let dq = (toBigInt(bE(ba(bj))) - dn)
415- let dr = (toBigInt(value(assetInfo(bh)).quantity) - do)
416- let ds = df(dp, dq, dr)
417- ds
418- }
419-
420-
421-func dt (du,dv,do) = {
422- let dp = (bE(ba(bi)) + du)
423- let dq = (bE(ba(bj)) + dv)
424- let dr = (value(assetInfo(bh)).quantity + do)
425- let dk = df(toBigInt(dp), toBigInt(dq), toBigInt(dr))
426- let dw = [IntegerEntry(ak, height), StringEntry(aj, toString(dk))]
427- $Tuple2(dw, dk)
428- }
429-
430-
431-func dx (dy,dk) = if ((dk >= dy))
432- then true
433- else aL(makeString(["updated KLp lower than current KLp", toString(dy), toString(dk)], " "))
434-
435-
436-func dz (dA) = {
437- let dp = bE(ba(bi))
438- let dq = bE(ba(bj))
439- let dB = dA.amount
440- let dC = fraction(dA.amount, dA.price, b, FLOOR)
441- let dD = if ((dA.orderType == Buy))
442- then $Tuple2(dB, -(dC))
443- else $Tuple2(-(dB), dC)
444- let du = dD._1
445- let dv = dD._2
446- if (if (if (aT())
447- then true
448- else (bg == m))
449- then true
450- else (bg == n))
451- then throw("Exchange operations disabled")
452- else if (if ((dA.assetPair.amountAsset != bi))
453- then true
454- else (dA.assetPair.priceAsset != bj))
455- then throw("Wrong order assets.")
456- else {
457- let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
458- let dF = dt(du, dv, 0)
459- let dG = dF._1
460- let dH = dF._2
461- let dI = (dH >= dE)
462- let dJ = makeString(["kLp=", toString(dE), " kLpNew=", toString(dH), " amountAssetBalance=", toString(dp), " priceAssetBalance=", toString(dq), " amountAssetBalanceDelta=", toString(du), " priceAssetBalanceDelta=", toString(dv), " height=", toString(height)], "")
463- $Tuple2(dI, dJ)
464- }
465- }
466-
467-
468-func dK (dL) = if ((size(dL.payments) != 1))
469- then throw("exactly 1 payment is expected")
470- else {
471- let dM = value(dL.payments[0])
472- let ce = value(dM.assetId)
473- let dN = dM.amount
474- let cP = cc(toBase58String(dL.transactionId), toBase58String(ce), dN, dL.caller)
475- let cv = cP._1
476- let cw = cP._2
477- let cj = parseIntValue(cP._9)
478- let cx = cP._10
479- if (if (aT())
480- then true
481- else (cj == n))
482- then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
483- else $Tuple5(cv, cw, dN, ce, cx)
484- }
485-
486-
487-func dO (dL,cz,cF) = if ((size(dL.payments) != 2))
488- then throw("exactly 2 payments are expected")
489- else {
490- let dP = value(dL.payments[0])
491- let dQ = value(dL.payments[1])
492- let dR = cy(toBase58String(dL.transactionId), cz, dP.amount, dP.assetId, dQ.amount, dQ.assetId, toString(dL.caller), false, cF)
493- let cj = parseIntValue(dR._8)
494- if (if (if (aT())
495- then true
496- else (cj == l))
497- then true
498- else (cj == n))
499- then throw(("Put operation is blocked by admin. Status = " + toString(cj)))
500- else dR
501- }
502-
503-
504-func dS (dT) = {
505- let dU = invoke(aO, "emit", [dT], nil)
506- if ((dU == dU))
507- then {
508- let dV = {
509- let dW = dU
510- if ($isInstanceOf(dW, "Address"))
511- then {
512- let dX = dW
513- invoke(dX, "emit", [dT], nil)
514- }
515- else unit
516- }
517- if ((dV == dV))
518- then dT
519321 else throw("Strict value is not equal to itself.")
520322 }
521323 else throw("Strict value is not equal to itself.")
522324 }
523325
524326
525-func dY (dT,ai) = {
526- let dZ = if ((ai == 0))
527- then 0
528- else fraction(dT, ai, b)
529- $Tuple2((dT - dZ), dZ)
530- }
531-
532-
533-func ea (eb,ec,ab,ac) = {
534- let ed = (ac == unit)
535- let ee = bE(ba(bi))
536- let ef = bE(ba(bj))
537- let eg = if ((ec == bi))
538- then true
539- else if ((ec == bj))
540- then false
541- else aL("invalid asset")
542- let eh = if (ed)
543- then $Tuple2(ee, ef)
544- else if (eg)
545- then $Tuple2((ee - eb), ef)
546- else $Tuple2(ee, (ef - eb))
547- let ei = eh._1
548- let ej = eh._2
549- let ek = if (eg)
550- then $Tuple2(eb, 0)
551- else $Tuple2(0, eb)
552- let el = ek._1
553- let em = ek._2
554- let dB = dY(el, aQ)._1
555- let dC = dY(em, aQ)._1
556- let en = dY(eb, aQ)
557- let eo = en._1
558- let dZ = en._2
559- let ep = (ei + dB)
560- let eq = (ej + dC)
561- let er = bG(D(eq, bl), D(ep, bk))
562- let es = H(er, b)
563- let et = if (eg)
564- then ei
565- else ej
566- let eu = toBigInt(et)
567- let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
568- let ew = if ((ev > f))
569- then true
570- else aL("initial deposit requires all coins")
571- if ((ew == ew))
327+func cf (ap,bW,bX,bR,cg,ch) = {
328+ let bY = ar(ap)
329+ if ((bY == bY))
572330 then {
573- let ex = toBigInt(eo)
574- let ey = max([0, toInt(((ev * (sqrtBigInt((d + ((ex * d) / eu)), 18, 18, DOWN) - d)) / d))])
575- let de = if (ed)
576- then nil
577- else [IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bp(el, em, ey, es, 0, 0, height, lastBlock.timestamp, 0, 0))]
578- let ez = bG(D(ej, bl), D(ei, bk))
579- let eA = H(ez, b)
580- let eB = {
581- let eC = if (eg)
582- then $Tuple2(el, ei)
583- else $Tuple2(em, ej)
584- let dT = eC._1
585- let eD = eC._2
586- let eE = toInt(fraction(ev, toBigInt((dT / 2)), toBigInt(eD)))
587- fraction((ey - eE), b, eE)
588- }
589- $Tuple5(ey, de, dZ, eB, eg)
331+ let bZ = as(bX)
332+ if ((bZ == bZ))
333+ then {
334+ let ci = bQ(bR)
335+ if ((ci == ci))
336+ then {
337+ let cj = fraction(cg, bY, bZ)
338+ let ck = bd(bX)
339+ let cl = fraction(cg, bW, cj)
340+ let cm = fraction(cg, bW, ci)
341+ let cn = max([0, (cl - cm)])
342+ if ((cm > 0))
343+ then {
344+ let co = invoke(bR, "withdraw", nil, [AttachedPayment(ck, cm)])
345+ if ((co == co))
346+ then {
347+ let bT = co
348+ if ($isInstanceOf(bT, "Int"))
349+ then {
350+ let cp = bT
351+ let cd = (bY - cp)
352+ let ce = ((bZ - cm) - cn)
353+[IntegerEntry(ao(ap), cd), IntegerEntry(aq(bX), ce), ScriptTransfer(ch, cn, bd(bX))]
354+ }
355+ else nil
356+ }
357+ else throw("Strict value is not equal to itself.")
358+ }
359+ else nil
360+ }
361+ else throw("Strict value is not equal to itself.")
362+ }
363+ else throw("Strict value is not equal to itself.")
590364 }
591365 else throw("Strict value is not equal to itself.")
592366 }
593367
594368
595-func eF (eG,eo,ec,ab,ac) = {
596- let ed = (ac == unit)
597- let bT = aV()
598- let bU = parseIntValue(bT[t])
599- let bV = parseIntValue(bT[u])
600- let eH = [if ((ec == bh))
601- then true
602- else aL("invalid lp asset")]
603- if ((eH == eH))
369+func cq (ap) = {
370+ let bT = invoke(aT, "getPoolLeaseConfigREADONLY", [toString(this), ap], nil)
371+ if ($isInstanceOf(bT, "(Boolean, Int, Int, String, String, Int, String)"))
604372 then {
605- let eI = if ((eG == bi))
606- then true
607- else if ((eG == bj))
608- then false
609- else aL("invalid asset")
610- let eJ = if (eI)
611- then toBigInt(bE(ba(bi)))
612- else toBigInt(bE(ba(bj)))
613- let eK = if (eI)
614- then bU
615- else bV
616- let eL = bE(ba(bi))
617- let eM = bE(ba(bj))
618- let eN = if (eI)
619- then eL
620- else eM
621- let eO = toBigInt(eN)
622- let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
623- let eP = toBigInt(eo)
624- let eQ = max([0, toInt(((eJ * (d - pow((d - ((eP * d) / ev)), 18, h, 0, 18, DOWN))) / d))])
625- let eR = dY(eQ, aS)
626- let eS = eR._1
627- let dZ = eR._2
628- let eT = if (eI)
629- then $Tuple4(eS, 0, (eL - eQ), eM)
630- else $Tuple4(0, eS, eL, (eM - eQ))
631- let eU = eT._1
632- let eV = eT._2
633- let eW = eT._3
634- let eX = eT._4
635- let er = bG(D(eX, bl), D(eW, bk))
636- let es = H(er, b)
637- let de = if (ed)
638- then nil
639- else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bA(eU, eV, eo, es, height, lastBlock.timestamp)), IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es)]
640- let ez = bG(D(eM, bl), D(eL, bk))
641- let eA = H(ez, b)
642- let eB = {
643- let eY = (toInt(fraction(eJ, eP, ev)) * 2)
644- fraction((eS - eY), b, eY)
645- }
646- $Tuple5(eS, de, dZ, eB, eI)
373+ let cr = bT
374+ cr
375+ }
376+ else aQ((("[" + ap) + "] getLeaseProxyConfig() error"))
377+ }
378+
379+
380+func cs (ct,ap,bX,cu,bR,cg,ch) = {
381+ let bY = ar(ap)
382+ if ((bY == bY))
383+ then {
384+ let bZ = as(bX)
385+ if ((bZ == bZ))
386+ then {
387+ let cv = {
388+ let bT = bd(ap)
389+ if ($isInstanceOf(bT, "ByteVector"))
390+ then {
391+ let cw = bT
392+ assetBalance(this, cw)
393+ }
394+ else if ($isInstanceOf(bT, "Unit"))
395+ then {
396+ let cx = bT
397+ wavesBalance(this).available
398+ }
399+ else throw("Match error")
400+ }
401+ if ((cv == cv))
402+ then {
403+ let cy = max([0, ((cv + bY) - cu)])
404+ let cz = fraction(ct, cy, 100)
405+ let cA = (bY - cz)
406+ if ((cA == 0))
407+ then nil
408+ else if ((0 > cA))
409+ then {
410+ let cB = -(cA)
411+ bV(ap, cB, bX, bR)
412+ }
413+ else {
414+ let cC = cA
415+ cf(ap, cC, bX, bR, cg, ch)
416+ }
417+ }
418+ else throw("Strict value is not equal to itself.")
419+ }
420+ else throw("Strict value is not equal to itself.")
647421 }
648422 else throw("Strict value is not equal to itself.")
649423 }
650424
651425
652-func eZ () = {
653- let dW = getString(U())
654- if ($isInstanceOf(dW, "String"))
426+func cD (ap) = {
427+ let cE = cq(ap)
428+ let cF = cE._1
429+ let cG = cE._2
430+ let cu = cE._3
431+ let cH = cE._4
432+ let cI = cE._5
433+ let cg = cE._6
434+ let cJ = cE._7
435+ if (cF)
436+ then cs(cG, ap, cI, cu, addressFromStringValue(cH), cg, addressFromStringValue(cJ))
437+ else nil
438+ }
439+
440+
441+func cK (ap,cL) = {
442+ let cM = cq(ap)
443+ let cF = cM._1
444+ let cG = cM._2
445+ let cu = cM._3
446+ let cH = cM._4
447+ let cI = cM._5
448+ let cg = cM._6
449+ let cJ = cM._7
450+ if (cF)
655451 then {
656- let fa = dW
657- fromBase58String(fa)
452+ let cN = max([0, ((bJ(ap) - cL) - cu)])
453+ if ((cN == cN))
454+ then {
455+ let cd = fraction(cG, cN, 100)
456+ if ((cd == cd))
457+ then {
458+ let cO = max([0, (ar(ap) - cd)])
459+ if ((cO == cO))
460+ then cf(ap, cO, cI, addressFromStringValue(cH), cg, addressFromStringValue(cJ))
461+ else throw("Strict value is not equal to itself.")
462+ }
463+ else throw("Strict value is not equal to itself.")
464+ }
465+ else throw("Strict value is not equal to itself.")
658466 }
659- else if ($isInstanceOf(dW, "Unit"))
467+ else nil
468+ }
469+
470+
471+func cP (cQ,cR,cS,cT) = {
472+ let cU = D(cS, cQ)
473+ let cV = D(cT, cR)
474+ bM(cV, cU)
475+ }
476+
477+
478+func cW (cS,cT,cX) = {
479+ let cY = ba()
480+ let cZ = parseIntValue(cY[t])
481+ let da = parseIntValue(cY[u])
482+ let db = cP(cZ, da, cS, cT)
483+ let bO = D(cS, cZ)
484+ let bN = D(cT, da)
485+ let dc = D(cX, b)
486+ let dd = bM(bO, dc)
487+ let de = bM(bN, dc)
488+[db, dd, de]
489+ }
490+
491+
492+func df (cS,cT,cX) = {
493+ let dg = cW(cS, cT, cX)
494+[H(dg[0], b), H(dg[1], b), H(dg[2], b)]
495+ }
496+
497+
498+func dh (di,dj,dk,ab) = {
499+ let cY = ba()
500+ let dl = cY[q]
501+ let dm = cY[r]
502+ let dn = cY[s]
503+ let cQ = parseIntValue(cY[t])
504+ let cR = parseIntValue(cY[u])
505+ let do = cY[p]
506+ let dp = valueOrErrorMessage(assetInfo(fromBase58String(dl)), (("Asset " + dl) + " doesn't exist")).quantity
507+ if ((dl != dj))
508+ then throw("Invalid asset passed.")
509+ else {
510+ let dq = bJ(dm)
511+ let dr = D(dq, cQ)
512+ let ds = bJ(dn)
513+ let dt = D(ds, cR)
514+ let du = bM(dt, dr)
515+ let dv = H(du, b)
516+ let dw = D(dk, b)
517+ let dx = D(dp, b)
518+ let dy = fraction(dr, dw, dx)
519+ let dz = fraction(dt, dw, dx)
520+ let dA = K(dy, cQ, FLOOR)
521+ let dB = K(dz, cR, FLOOR)
522+ let dC = cK(dm, dA)
523+ if ((dC == dC))
524+ then {
525+ let dD = cK(dn, dB)
526+ if ((dD == dD))
527+ then {
528+ let dE = if ((di == ""))
529+ then nil
530+ else ((dC ++ dD) ++ [ScriptTransfer(ab, dA, if ((dm == "WAVES"))
531+ then unit
532+ else fromBase58String(dm)), ScriptTransfer(ab, dB, if ((dn == "WAVES"))
533+ then unit
534+ else fromBase58String(dn)), StringEntry(ad(toString(ab), di), bF(dA, dB, dk, dv, height, lastBlock.timestamp)), IntegerEntry(W(), dv), IntegerEntry(X(height, lastBlock.timestamp), dv)])
535+ $Tuple10(dA, dB, dm, dn, dq, ds, dp, du, do, dE)
536+ }
537+ else throw("Strict value is not equal to itself.")
538+ }
539+ else throw("Strict value is not equal to itself.")
540+ }
541+ }
542+
543+
544+func dF (di,dG,dH,dI,dJ,dK,ab,dL,dM) = {
545+ let cY = ba()
546+ let dl = fromBase58String(cY[q])
547+ let dN = cY[r]
548+ let dO = cY[s]
549+ let dP = cY[v]
550+ let dQ = cY[w]
551+ let cZ = parseIntValue(cY[t])
552+ let da = parseIntValue(cY[u])
553+ let do = cY[p]
554+ let dp = valueOrErrorMessage(assetInfo(dl), (("Asset " + toBase58String(dl)) + " doesn't exist")).quantity
555+ let dR = toBase58String(valueOrElse(dI, fromBase58String("WAVES")))
556+ let dS = toBase58String(valueOrElse(dK, fromBase58String("WAVES")))
557+ if (if ((dN != dR))
558+ then true
559+ else (dO != dS))
560+ then throw("Invalid amt or price asset passed.")
561+ else {
562+ let dq = if (dL)
563+ then bJ(dN)
564+ else (bJ(dN) - dH)
565+ let ds = if (dL)
566+ then bJ(dO)
567+ else (bJ(dO) - dJ)
568+ let dT = D(dH, cZ)
569+ let dU = D(dJ, da)
570+ let dV = bM(dU, dT)
571+ let dr = D(dq, cZ)
572+ let dt = D(ds, da)
573+ let dW = if ((dp == 0))
574+ then {
575+ let du = e
576+ let dX = e
577+ let dc = pow((dT * dU), 0, toBigInt(5), 1, 0, DOWN)
578+ $Tuple5(H(dc, b), H(dT, cZ), H(dU, da), bM((dt + dU), (dr + dT)), dX)
579+ }
580+ else {
581+ let du = bM(dt, dr)
582+ let dX = fraction(R((du - dV)), d, du)
583+ let dY = D(dG, b)
584+ if (if ((du != e))
585+ then (dX > dY)
586+ else false)
587+ then throw(((("Price slippage " + toString(dX)) + " exceeded the passed limit of ") + toString(dY)))
588+ else {
589+ let dx = D(dp, b)
590+ let dZ = fraction(dT, bP(dt, dr, CEILING), d, CEILING)
591+ let ea = fraction(dU, d, bP(dt, dr, FLOOR), CEILING)
592+ let eb = if ((dZ > dU))
593+ then $Tuple2(ea, dU)
594+ else $Tuple2(dT, dZ)
595+ let ec = eb._1
596+ let ed = eb._2
597+ let dc = fraction(dx, ed, dt, FLOOR)
598+ $Tuple5(K(dc, b, FLOOR), K(ec, cZ, CEILING), K(ed, da, CEILING), du, dX)
599+ }
600+ }
601+ let ee = dW._1
602+ let ef = dW._2
603+ let eg = dW._3
604+ let dv = H(dW._4, b)
605+ let eh = H(dW._5, b)
606+ if ((0 >= ee))
607+ then throw("Invalid calculations. LP calculated is less than zero.")
608+ else {
609+ let ei = if (!(dM))
610+ then 0
611+ else ee
612+ let ej = (dH - ef)
613+ let ek = (dJ - eg)
614+ let el = [IntegerEntry(W(), dv), IntegerEntry(X(height, lastBlock.timestamp), dv), StringEntry(aa(ab, di), bu(ef, eg, ei, dv, dG, eh, height, lastBlock.timestamp, ej, ek))]
615+ $Tuple13(ee, ei, dv, dq, ds, dp, dl, do, el, ej, ek, dI, dK)
616+ }
617+ }
618+ }
619+
620+
621+func em (en,eo,dp) = {
622+ let ep = G(en, toBigInt(bp))
623+ let eq = G(eo, toBigInt(bq))
624+ let er = fraction(pow((ep * eq), 0, toBigInt(5), 1, 18, DOWN), g, dp)
625+ if ((dp == f))
626+ then f
627+ else er
628+ }
629+
630+
631+func es (et,eu,ev) = {
632+ let ew = (toBigInt(bJ(bf(bn))) - et)
633+ let ex = (toBigInt(bJ(bf(bo))) - eu)
634+ let ey = (toBigInt(value(assetInfo(bm)).quantity) - ev)
635+ let ez = em(ew, ex, ey)
636+ ez
637+ }
638+
639+
640+func eA (eB,eC,ev) = {
641+ let ew = (bJ(bf(bn)) + eB)
642+ let ex = (bJ(bf(bo)) + eC)
643+ let ey = (value(assetInfo(bm)).quantity + ev)
644+ let er = em(toBigInt(ew), toBigInt(ex), toBigInt(ey))
645+ let eD = [IntegerEntry(ak, height), StringEntry(aj, toString(er))]
646+ $Tuple2(eD, er)
647+ }
648+
649+
650+func eE (eF,er) = if ((er >= eF))
651+ then true
652+ else aQ(makeString(["updated KLp lower than current KLp", toString(eF), toString(er)], " "))
653+
654+
655+func eG (eH) = {
656+ let ew = bJ(bf(bn))
657+ let ex = bJ(bf(bo))
658+ let eI = eH.amount
659+ let eJ = fraction(eH.amount, eH.price, b, FLOOR)
660+ let eK = if ((eH.orderType == Buy))
661+ then $Tuple2(eI, -(eJ))
662+ else $Tuple2(-(eI), eJ)
663+ let eB = eK._1
664+ let eC = eK._2
665+ if (if (if (aY())
666+ then true
667+ else (bl == m))
668+ then true
669+ else (bl == n))
670+ then throw("Exchange operations disabled")
671+ else if (if ((eH.assetPair.amountAsset != bn))
672+ then true
673+ else (eH.assetPair.priceAsset != bo))
674+ then throw("Wrong order assets.")
675+ else {
676+ let eL = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
677+ let eM = eA(eB, eC, 0)
678+ let eN = eM._1
679+ let eO = eM._2
680+ let eP = (eO >= eL)
681+ let eQ = makeString(["kLp=", toString(eL), " kLpNew=", toString(eO), " amountAssetBalance=", toString(ew), " priceAssetBalance=", toString(ex), " amountAssetBalanceDelta=", toString(eB), " priceAssetBalanceDelta=", toString(eC), " height=", toString(height)], "")
682+ $Tuple2(eP, eQ)
683+ }
684+ }
685+
686+
687+func eR (eS) = if ((size(eS.payments) != 1))
688+ then throw("exactly 1 payment is expected")
689+ else {
690+ let eT = value(eS.payments[0])
691+ let dj = value(eT.assetId)
692+ let eU = eT.amount
693+ let dW = dh(toBase58String(eS.transactionId), toBase58String(dj), eU, eS.caller)
694+ let dA = dW._1
695+ let dB = dW._2
696+ let do = parseIntValue(dW._9)
697+ let dE = dW._10
698+ if (if (aY())
699+ then true
700+ else (do == n))
701+ then throw(("Get operation is blocked by admin. Status = " + toString(do)))
702+ else $Tuple5(dA, dB, eU, dj, dE)
703+ }
704+
705+
706+func eV (eS,dG,dM) = if ((size(eS.payments) != 2))
707+ then throw("exactly 2 payments are expected")
708+ else {
709+ let eW = value(eS.payments[0])
710+ let eX = value(eS.payments[1])
711+ let eY = dF(toBase58String(eS.transactionId), dG, eW.amount, eW.assetId, eX.amount, eX.assetId, toString(eS.caller), false, dM)
712+ let do = parseIntValue(eY._8)
713+ if (if (if (aY())
714+ then true
715+ else (do == l))
716+ then true
717+ else (do == n))
718+ then throw(("Put operation is blocked by admin. Status = " + toString(do)))
719+ else eY
720+ }
721+
722+
723+func eZ (bW) = {
724+ let fa = invoke(aT, "emit", [bW], nil)
725+ if ((fa == fa))
726+ then {
727+ let fb = {
728+ let bT = fa
729+ if ($isInstanceOf(bT, "Address"))
730+ then {
731+ let fc = bT
732+ invoke(fc, "emit", [bW], nil)
733+ }
734+ else unit
735+ }
736+ if ((fb == fb))
737+ then bW
738+ else throw("Strict value is not equal to itself.")
739+ }
740+ else throw("Strict value is not equal to itself.")
741+ }
742+
743+
744+func fd (bW,ai) = {
745+ let fe = if ((ai == 0))
746+ then 0
747+ else fraction(bW, ai, b)
748+ $Tuple2((bW - fe), fe)
749+ }
750+
751+
752+func ff (fg,fh,ab,ac) = {
753+ let fi = (ac == unit)
754+ let fj = bJ(bf(bn))
755+ let fk = bJ(bf(bo))
756+ let fl = if ((fh == bn))
757+ then true
758+ else if ((fh == bo))
759+ then false
760+ else aQ("invalid asset")
761+ let fm = if (fi)
762+ then $Tuple2(fj, fk)
763+ else if (fl)
764+ then $Tuple2((fj - fg), fk)
765+ else $Tuple2(fj, (fk - fg))
766+ let fn = fm._1
767+ let fo = fm._2
768+ let fp = if (fl)
769+ then $Tuple2(fg, 0)
770+ else $Tuple2(0, fg)
771+ let fq = fp._1
772+ let fr = fp._2
773+ let eI = fd(fq, aV)._1
774+ let eJ = fd(fr, aV)._1
775+ let fs = fd(fg, aV)
776+ let ft = fs._1
777+ let fe = fs._2
778+ let fu = (fn + eI)
779+ let fv = (fo + eJ)
780+ let fw = bM(D(fv, bq), D(fu, bp))
781+ let fx = H(fw, b)
782+ let fy = if (fl)
783+ then fn
784+ else fo
785+ let fz = toBigInt(fy)
786+ let fA = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
787+ let fB = if ((fA > f))
788+ then true
789+ else aQ("initial deposit requires all coins")
790+ if ((fB == fB))
791+ then {
792+ let fC = toBigInt(ft)
793+ let fD = max([0, toInt(((fA * (sqrtBigInt((d + ((fC * d) / fz)), 18, 18, DOWN) - d)) / d))])
794+ let el = if (fi)
795+ then nil
796+ else [IntegerEntry(W(), fx), IntegerEntry(X(height, lastBlock.timestamp), fx), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bu(fq, fr, fD, fx, 0, 0, height, lastBlock.timestamp, 0, 0))]
797+ let fE = bM(D(fo, bq), D(fn, bp))
798+ let fF = H(fE, b)
799+ let fG = {
800+ let fH = if (fl)
801+ then $Tuple2(fq, fn)
802+ else $Tuple2(fr, fo)
803+ let bW = fH._1
804+ let fI = fH._2
805+ let fJ = toInt(fraction(fA, toBigInt((bW / 2)), toBigInt(fI)))
806+ fraction((fD - fJ), b, fJ)
807+ }
808+ $Tuple5(fD, el, fe, fG, fl)
809+ }
810+ else throw("Strict value is not equal to itself.")
811+ }
812+
813+
814+func fK (fL,ft,fh,ab,ac) = {
815+ let fi = (ac == unit)
816+ let cY = ba()
817+ let cZ = parseIntValue(cY[t])
818+ let da = parseIntValue(cY[u])
819+ let fM = [if ((fh == bm))
820+ then true
821+ else aQ("invalid lp asset")]
822+ if ((fM == fM))
823+ then {
824+ let fN = if ((fL == bn))
825+ then true
826+ else if ((fL == bo))
827+ then false
828+ else aQ("invalid asset")
829+ let fO = if (fN)
830+ then toBigInt(bJ(bf(bn)))
831+ else toBigInt(bJ(bf(bo)))
832+ let fP = if (fN)
833+ then cZ
834+ else da
835+ let fQ = bJ(bf(bn))
836+ let fR = bJ(bf(bo))
837+ let fS = if (fN)
838+ then fQ
839+ else fR
840+ let fT = toBigInt(fS)
841+ let fA = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
842+ let fU = toBigInt(ft)
843+ let fV = max([0, toInt(((fO * (d - pow((d - ((fU * d) / fA)), 18, h, 0, 18, DOWN))) / d))])
844+ let fW = fd(fV, aX)
845+ let fX = fW._1
846+ let fe = fW._2
847+ let fY = if (fN)
848+ then $Tuple4(fX, 0, (fQ - fV), fR)
849+ else $Tuple4(0, fX, fQ, (fR - fV))
850+ let fZ = fY._1
851+ let ga = fY._2
852+ let gb = fY._3
853+ let gc = fY._4
854+ let fw = bM(D(gc, bq), D(gb, bp))
855+ let fx = H(fw, b)
856+ let el = if (fi)
857+ then nil
858+ else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bF(fZ, ga, ft, fx, height, lastBlock.timestamp)), IntegerEntry(W(), fx), IntegerEntry(X(height, lastBlock.timestamp), fx)]
859+ let fE = bM(D(fR, bq), D(fQ, bp))
860+ let fF = H(fE, b)
861+ let fG = {
862+ let gd = (toInt(fraction(fO, fU, fA)) * 2)
863+ fraction((fX - gd), b, gd)
864+ }
865+ $Tuple5(fX, el, fe, fG, fN)
866+ }
867+ else throw("Strict value is not equal to itself.")
868+ }
869+
870+
871+func ge () = {
872+ let bT = getString(U())
873+ if ($isInstanceOf(bT, "String"))
874+ then {
875+ let gf = bT
876+ fromBase58String(gf)
877+ }
878+ else if ($isInstanceOf(bT, "Unit"))
660879 then unit
661880 else throw("Match error")
662881 }
663882
664883
665-func fb () = {
666- let dW = getString(V())
667- if ($isInstanceOf(dW, "String"))
884+func gg () = {
885+ let bT = getString(V())
886+ if ($isInstanceOf(bT, "String"))
668887 then {
669- let fa = dW
670- fromBase58String(fa)
888+ let gf = bT
889+ fromBase58String(gf)
671890 }
672- else if ($isInstanceOf(dW, "Unit"))
891+ else if ($isInstanceOf(bT, "Unit"))
673892 then unit
674893 else throw("Match error")
675894 }
676895
677896
678-func fc (dL) = {
679- let dW = eZ()
680- if ($isInstanceOf(dW, "ByteVector"))
897+func gh (eS) = {
898+ let bT = ge()
899+ if ($isInstanceOf(bT, "ByteVector"))
681900 then {
682- let fd = dW
683- (dL.callerPublicKey == fd)
901+ let gi = bT
902+ (eS.callerPublicKey == gi)
684903 }
685- else if ($isInstanceOf(dW, "Unit"))
686- then (dL.caller == this)
904+ else if ($isInstanceOf(bT, "Unit"))
905+ then (eS.caller == this)
687906 else throw("Match error")
688907 }
689908
690909
691-func fe (dL) = {
692- let ff = throw("Permission denied")
693- let dW = eZ()
694- if ($isInstanceOf(dW, "ByteVector"))
910+func gj (eS) = {
911+ let gk = throw("Permission denied")
912+ let bT = ge()
913+ if ($isInstanceOf(bT, "ByteVector"))
695914 then {
696- let fd = dW
697- if ((dL.callerPublicKey == fd))
915+ let gi = bT
916+ if ((eS.callerPublicKey == gi))
698917 then true
699- else ff
918+ else gk
700919 }
701- else if ($isInstanceOf(dW, "Unit"))
702- then if ((dL.caller == this))
920+ else if ($isInstanceOf(bT, "Unit"))
921+ then if ((eS.caller == this))
703922 then true
704- else ff
923+ else gk
705924 else throw("Match error")
706925 }
707926
708927
709-@Callable(dL)
710-func calculateAmountOutForSwapREADONLY (fg,fh,fi) = {
711- let fj = if ((fh == false))
928+@Callable(eS)
929+func rebalance () = (cD(aM(this, ae())) ++ cD(aM(this, af())))
930+
931+
932+
933+@Callable(eS)
934+func calculateAmountOutForSwapREADONLY (gl,gm,gn) = {
935+ let go = if ((gm == false))
712936 then {
713- let fk = aH(this, af())
714- let fl = aH(this, ae())
715- $Tuple2(fk, fl)
937+ let gp = aM(this, af())
938+ let gq = aM(this, ae())
939+ $Tuple2(gp, gq)
716940 }
717941 else {
718- let fk = aH(this, ae())
719- let fl = aH(this, af())
720- $Tuple2(fk, fl)
942+ let gp = aM(this, ae())
943+ let gq = aM(this, af())
944+ $Tuple2(gp, gq)
721945 }
722- let fk = fj._1
723- let fl = fj._2
724- let fm = bE(fl)
725- let fn = bE(fk)
726- let fo = fraction(fn, fg, (fm + fg))
727- let fp = (toBigInt(fm) * toBigInt(fn))
728- let fq = (((toBigInt(bE(fl)) + toBigInt(fg)) + toBigInt(fi)) * (toBigInt(bE(fk)) - toBigInt(fo)))
729- let fr = if ((fq >= fp))
946+ let gp = go._1
947+ let gq = go._2
948+ let gr = bJ(gq)
949+ let gs = bJ(gp)
950+ let gt = fraction(gs, gl, (gr + gl))
951+ let gu = (toBigInt(gr) * toBigInt(gs))
952+ let gv = (((toBigInt(bJ(gq)) + toBigInt(gl)) + toBigInt(gn)) * (toBigInt(bJ(gp)) - toBigInt(gt)))
953+ let gw = if ((gv >= gu))
730954 then true
731955 else throw("new K is fewer error")
732- if ((fr == fr))
733- then $Tuple2(nil, fo)
956+ if ((gw == gw))
957+ then $Tuple2(nil, gt)
734958 else throw("Strict value is not equal to itself.")
735959 }
736960
737961
738962
739-@Callable(dL)
740-func calculateAmountOutForSwapAndSendTokens (fg,fh,fs,ft,fi) = {
741- let fu = {
742- let aR = invoke(aO, "getSwapContractREADONLY", nil, nil)
743- if ($isInstanceOf(aR, "String"))
744- then aR
745- else throw(($getType(aR) + " couldn't be cast to String"))
963+@Callable(eS)
964+func calculateAmountOutForSwapAndSendTokens (gl,gm,gx,gy,gn) = {
965+ let gz = {
966+ let aW = invoke(aT, "getSwapContractREADONLY", nil, nil)
967+ if ($isInstanceOf(aW, "String"))
968+ then aW
969+ else throw(($getType(aW) + " couldn't be cast to String"))
746970 }
747- let eH = [if ((value(dL.payments[0]).amount >= fg))
971+ let fM = [if ((value(eS.payments[0]).amount >= gl))
748972 then true
749- else aL("Wrong amount"), if ((dL.caller == addressFromStringValue(fu)))
973+ else aQ("Wrong amount"), if ((eS.caller == addressFromStringValue(gz)))
750974 then true
751- else aL("Permission denied")]
752- if ((eH == eH))
975+ else aQ("Permission denied")]
976+ if ((fM == fM))
753977 then {
754- let dM = value(dL.payments[0])
755- let fl = ba(dM.assetId)
756- let fk = if ((fh == false))
757- then aH(this, af())
758- else aH(this, ae())
759- let fm = (bE(fl) - value(dL.payments[0]).amount)
760- let fn = bE(fk)
761- let fo = fraction(fn, fg, (fm + fg))
762- let fp = (toBigInt(fm) * toBigInt(fn))
763- let fq = ((toBigInt(bE(fl)) + toBigInt(fi)) * (toBigInt(bE(fk)) - toBigInt(fo)))
764- let fr = if ((fq >= fp))
978+ let eT = value(eS.payments[0])
979+ let gq = bf(eT.assetId)
980+ let gp = if ((gm == false))
981+ then aM(this, af())
982+ else aM(this, ae())
983+ let gr = (bJ(gq) - value(eS.payments[0]).amount)
984+ let gs = bJ(gp)
985+ let gt = fraction(gs, gl, (gr + gl))
986+ let gu = (toBigInt(gr) * toBigInt(gs))
987+ let gv = ((toBigInt(bJ(gq)) + toBigInt(gn)) * (toBigInt(bJ(gp)) - toBigInt(gt)))
988+ let gw = if ((gv >= gu))
765989 then true
766990 else throw("new K is fewer error")
767- if ((fr == fr))
991+ if ((gw == gw))
768992 then {
769- let fv = if ((fo >= fs))
993+ let gA = if ((gt >= gx))
770994 then true
771995 else throw("Exchange result is fewer coins than expected")
772- if ((fv == fv))
773- then $Tuple2([ScriptTransfer(addressFromStringValue(ft), fo, aY(fk))], fo)
996+ if ((gA == gA))
997+ then {
998+ let gB = cD(gq)
999+ if ((gB == gB))
1000+ then {
1001+ let gC = cK(gp, gt)
1002+ if ((gC == gC))
1003+ then $Tuple2(((gC ++ gB) ++ [ScriptTransfer(addressFromStringValue(gy), gt, bd(gp))]), gt)
1004+ else throw("Strict value is not equal to itself.")
1005+ }
1006+ else throw("Strict value is not equal to itself.")
1007+ }
7741008 else throw("Strict value is not equal to itself.")
7751009 }
7761010 else throw("Strict value is not equal to itself.")
7801014
7811015
7821016
783-@Callable(dL)
784-func setManager (fw) = {
785- let fx = fe(dL)
786- if ((fx == fx))
1017+@Callable(eS)
1018+func setManager (gD) = {
1019+ let gE = gj(eS)
1020+ if ((gE == gE))
7871021 then {
788- let fy = fromBase58String(fw)
789- if ((fy == fy))
790- then [StringEntry(V(), fw)]
1022+ let gF = fromBase58String(gD)
1023+ if ((gF == gF))
1024+ then [StringEntry(V(), gD)]
7911025 else throw("Strict value is not equal to itself.")
7921026 }
7931027 else throw("Strict value is not equal to itself.")
7951029
7961030
7971031
798-@Callable(dL)
1032+@Callable(eS)
7991033 func confirmManager () = {
800- let fz = fb()
801- let fA = if (isDefined(fz))
1034+ let gG = gg()
1035+ let gH = if (isDefined(gG))
8021036 then true
8031037 else throw("No pending manager")
804- if ((fA == fA))
1038+ if ((gH == gH))
8051039 then {
806- let fB = if ((dL.callerPublicKey == value(fz)))
1040+ let gI = if ((eS.callerPublicKey == value(gG)))
8071041 then true
8081042 else throw("You are not pending manager")
809- if ((fB == fB))
810- then [StringEntry(U(), toBase58String(value(fz))), DeleteEntry(V())]
1043+ if ((gI == gI))
1044+ then [StringEntry(U(), toBase58String(value(gG))), DeleteEntry(V())]
8111045 else throw("Strict value is not equal to itself.")
8121046 }
8131047 else throw("Strict value is not equal to itself.")
8151049
8161050
8171051
818-@Callable(dL)
819-func put (cz,fC) = if ((0 > cz))
1052+@Callable(eS)
1053+func put (dG,gJ) = if ((0 > dG))
8201054 then throw("Invalid slippageTolerance passed")
8211055 else {
822- let dR = dO(dL, cz, true)
823- let db = dR._2
824- let cg = dR._7
825- let cx = dR._9
826- let dc = dR._10
827- let dd = dR._11
828- let fD = dR._12
829- let fE = dR._13
830- let dP = toBigInt(value(dL.payments[0]).amount)
831- let dQ = toBigInt(value(dL.payments[1]).amount)
832- let ds = dl(dP, dQ, toBigInt(0))
833- if ((ds == ds))
1056+ let eY = eV(eS, dG, true)
1057+ let ei = eY._2
1058+ let dl = eY._7
1059+ let dE = eY._9
1060+ let ej = eY._10
1061+ let ek = eY._11
1062+ let gK = eY._12
1063+ let gL = eY._13
1064+ let eW = toBigInt(value(eS.payments[0]).amount)
1065+ let eX = toBigInt(value(eS.payments[1]).amount)
1066+ let ez = es(eW, eX, toBigInt(0))
1067+ if ((ez == ez))
8341068 then {
835- let dU = invoke(aO, "emit", [db], nil)
836- if ((dU == dU))
1069+ let fa = invoke(aT, "emit", [ei], nil)
1070+ if ((fa == fa))
8371071 then {
838- let dV = {
839- let dW = dU
840- if ($isInstanceOf(dW, "Address"))
1072+ let fb = {
1073+ let bT = fa
1074+ if ($isInstanceOf(bT, "Address"))
8411075 then {
842- let dX = dW
843- invoke(dX, "emit", [db], nil)
1076+ let fc = bT
1077+ invoke(fc, "emit", [ei], nil)
8441078 }
8451079 else unit
8461080 }
847- if ((dV == dV))
1081+ if ((fb == fb))
8481082 then {
849- let fF = if ((dc > 0))
850- then invoke(bo, "put", nil, [AttachedPayment(fD, dc)])
1083+ let gM = if ((ej > 0))
1084+ then invoke(bt, "put", nil, [AttachedPayment(gK, ej)])
8511085 else nil
852- if ((fF == fF))
1086+ if ((gM == gM))
8531087 then {
854- let fG = if ((dd > 0))
855- then invoke(bo, "put", nil, [AttachedPayment(fE, dd)])
1088+ let gN = if ((ek > 0))
1089+ then invoke(bt, "put", nil, [AttachedPayment(gL, ek)])
8561090 else nil
857- if ((fG == fG))
1091+ if ((gN == gN))
8581092 then {
859- let fH = if (fC)
1093+ let gO = if (gJ)
8601094 then {
861- let fI = invoke(bn, "stake", nil, [AttachedPayment(cg, db)])
862- if ((fI == fI))
1095+ let gP = invoke(bs, "stake", nil, [AttachedPayment(dl, ei)])
1096+ if ((gP == gP))
8631097 then nil
8641098 else throw("Strict value is not equal to itself.")
8651099 }
866- else [ScriptTransfer(dL.caller, db, cg)]
867- let fJ = dt(0, 0, 0)
868- if ((fJ == fJ))
1100+ else [ScriptTransfer(eS.caller, ei, dl)]
1101+ let gQ = eA(0, 0, 0)
1102+ if ((gQ == gQ))
8691103 then {
870- let dk = fJ._2
871- let fK = fJ._1
872- let fL = dx(ds, dk)
873- if ((fL == fL))
874- then ((cx ++ fH) ++ fK)
1104+ let er = gQ._2
1105+ let gR = gQ._1
1106+ let gS = eE(ez, er)
1107+ if ((gS == gS))
1108+ then {
1109+ let gT = invoke(this, "rebalance", nil, nil)
1110+ if ((gT == gT))
1111+ then ((dE ++ gO) ++ gR)
1112+ else throw("Strict value is not equal to itself.")
1113+ }
8751114 else throw("Strict value is not equal to itself.")
8761115 }
8771116 else throw("Strict value is not equal to itself.")
8891128
8901129
8911130
892-@Callable(dL)
893-func putForFree (fM) = if ((0 > fM))
1131+@Callable(eS)
1132+func putForFree (gU) = if ((0 > gU))
8941133 then throw("Invalid value passed")
8951134 else {
896- let dR = dO(dL, fM, false)
897- let cx = dR._9
898- let dP = toBigInt(value(dL.payments[0]).amount)
899- let dQ = toBigInt(value(dL.payments[1]).amount)
900- let ds = dl(dP, dQ, toBigInt(0))
901- if ((ds == ds))
1135+ let eY = eV(eS, gU, false)
1136+ let dE = eY._9
1137+ let eW = toBigInt(value(eS.payments[0]).amount)
1138+ let eX = toBigInt(value(eS.payments[1]).amount)
1139+ let ez = es(eW, eX, toBigInt(0))
1140+ if ((ez == ez))
9021141 then {
903- let fN = dt(0, 0, 0)
904- let fK = fN._1
905- let dk = fN._2
906- let fL = dx(ds, dk)
907- if ((fL == fL))
908- then (cx ++ fK)
1142+ let gV = eA(0, 0, 0)
1143+ let gR = gV._1
1144+ let er = gV._2
1145+ let gS = eE(ez, er)
1146+ if ((gS == gS))
1147+ then (dE ++ gR)
9091148 else throw("Strict value is not equal to itself.")
9101149 }
9111150 else throw("Strict value is not equal to itself.")
9131152
9141153
9151154
916-@Callable(dL)
917-func putOneTkn (fO,fP) = {
918- let fQ = {
919- let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
920- if ($isInstanceOf(aR, "Boolean"))
921- then aR
922- else throw(($getType(aR) + " couldn't be cast to Boolean"))
1155+@Callable(eS)
1156+func putOneTkn (gW,gX) = {
1157+ let gY = {
1158+ let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1159+ if ($isInstanceOf(aW, "Boolean"))
1160+ then aW
1161+ else throw(($getType(aW) + " couldn't be cast to Boolean"))
9231162 }
924- let fR = if (if (if (aT())
1163+ let gZ = if (if (if (aY())
9251164 then true
926- else (bg == l))
1165+ else (bl == l))
9271166 then true
928- else (bg == n))
1167+ else (bl == n))
9291168 then true
930- else fQ
931- let eH = [if (if (!(fR))
1169+ else gY
1170+ let fM = [if (if (!(gZ))
9321171 then true
933- else fc(dL))
1172+ else gh(eS))
9341173 then true
935- else aL("put operation is blocked by admin"), if ((size(dL.payments) == 1))
1174+ else aQ("put operation is blocked by admin"), if ((size(eS.payments) == 1))
9361175 then true
937- else aL("exactly 1 payment are expected")]
938- if ((eH == eH))
1176+ else aQ("exactly 1 payment are expected")]
1177+ if ((fM == fM))
9391178 then {
940- let fS = dL.payments[0]
941- let ec = fS.assetId
942- let eb = fS.amount
943- let ds = if ((ec == bi))
944- then dl(toBigInt(eb), toBigInt(0), toBigInt(0))
945- else if ((ec == bj))
946- then dl(toBigInt(0), toBigInt(eb), toBigInt(0))
947- else aL("payment asset is not supported")
948- if ((ds == ds))
1179+ let ha = eS.payments[0]
1180+ let fh = ha.assetId
1181+ let fg = ha.amount
1182+ let ez = if ((fh == bn))
1183+ then es(toBigInt(fg), toBigInt(0), toBigInt(0))
1184+ else if ((fh == bo))
1185+ then es(toBigInt(0), toBigInt(fg), toBigInt(0))
1186+ else aQ("payment asset is not supported")
1187+ if ((ez == ez))
9491188 then {
950- let ab = dL.caller
951- let ac = dL.transactionId
952- let fT = ea(eb, ec, ab, ac)
953- if ((fT == fT))
1189+ let ab = eS.caller
1190+ let ac = eS.transactionId
1191+ let hb = ff(fg, fh, ab, ac)
1192+ if ((hb == hb))
9541193 then {
955- let eg = fT._5
956- let fU = fT._4
957- let dZ = fT._3
958- let de = fT._2
959- let fV = fT._1
960- let fW = if (if ((fO > 0))
961- then (fO > fV)
1194+ let fl = hb._5
1195+ let hc = hb._4
1196+ let fe = hb._3
1197+ let el = hb._2
1198+ let hd = hb._1
1199+ let he = if (if ((gW > 0))
1200+ then (gW > hd)
9621201 else false)
963- then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
964- else fV
965- let dU = dS(fW)
966- if ((dU == dU))
1202+ then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1203+ else hd
1204+ let fa = eZ(he)
1205+ if ((fa == fa))
9671206 then {
968- let fH = if (fP)
1207+ let gO = if (gX)
9691208 then {
970- let fX = invoke(bn, "stake", nil, [AttachedPayment(bh, fW)])
971- if ((fX == fX))
1209+ let hf = invoke(bs, "stake", nil, [AttachedPayment(bm, he)])
1210+ if ((hf == hf))
9721211 then nil
9731212 else throw("Strict value is not equal to itself.")
9741213 }
975- else [ScriptTransfer(dL.caller, fW, bh)]
976- let fY = if ((dZ > 0))
977- then [ScriptTransfer(aP, dZ, ec)]
1214+ else [ScriptTransfer(eS.caller, he, bm)]
1215+ let hg = if ((fe > 0))
1216+ then [ScriptTransfer(aU, fe, fh)]
9781217 else nil
979- let fZ = if ((this == aP))
1218+ let hh = if ((this == aU))
9801219 then $Tuple2(0, 0)
981- else if (eg)
982- then $Tuple2(-(dZ), 0)
983- else $Tuple2(0, -(dZ))
984- let du = fZ._1
985- let dv = fZ._2
986- let ga = dt(du, dv, 0)
987- let fK = ga._1
988- let dk = ga._2
989- let dE = value(getString(aj))
990- let fL = dx(ds, dk)
991- if ((fL == fL))
992- then $Tuple2((((de ++ fH) ++ fY) ++ fK), fW)
993- else throw("Strict value is not equal to itself.")
994- }
995- else throw("Strict value is not equal to itself.")
996- }
997- else throw("Strict value is not equal to itself.")
998- }
999- else throw("Strict value is not equal to itself.")
1000- }
1001- else throw("Strict value is not equal to itself.")
1002- }
1003-
1004-
1005-
1006-@Callable(dL)
1007-func putOneTknREADONLY (ec,eb) = {
1008- let gb = ea(eb, aY(ec), unit, unit)
1009- let fV = gb._1
1010- let de = gb._2
1011- let dZ = gb._3
1012- let fU = gb._4
1013- let eg = gb._5
1014- $Tuple2(nil, $Tuple3(fV, dZ, fU))
1015- }
1016-
1017-
1018-
1019-@Callable(dL)
1020-func getOneTkn (gc,fO) = {
1021- let fQ = {
1022- let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1023- if ($isInstanceOf(aR, "Boolean"))
1024- then aR
1025- else throw(($getType(aR) + " couldn't be cast to Boolean"))
1026- }
1027- let gd = if (if (aT())
1028- then true
1029- else (bg == n))
1030- then true
1031- else fQ
1032- let eH = [if (if (!(gd))
1033- then true
1034- else fc(dL))
1035- then true
1036- else aL("get operation is blocked by admin"), if ((size(dL.payments) == 1))
1037- then true
1038- else aL("exactly 1 payment are expected")]
1039- if ((eH == eH))
1040- then {
1041- let eG = aY(gc)
1042- let fS = dL.payments[0]
1043- let ec = fS.assetId
1044- let eo = fS.amount
1045- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1046- if ((ds == ds))
1047- then {
1048- let ab = dL.caller
1049- let ac = dL.transactionId
1050- let ge = eF(eG, eo, ec, ab, ac)
1051- if ((ge == ge))
1052- then {
1053- let eI = ge._5
1054- let fU = ge._4
1055- let dZ = ge._3
1056- let de = ge._2
1057- let gf = ge._1
1058- let dT = if (if ((fO > 0))
1059- then (fO > gf)
1060- else false)
1061- then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
1062- else gf
1063- let gg = invoke(aO, "burn", [eo], [AttachedPayment(ec, eo)])
1064- if ((gg == gg))
1065- then {
1066- let gh = [ScriptTransfer(ab, dT, eG)]
1067- let fY = if ((dZ > 0))
1068- then [ScriptTransfer(aP, dZ, eG)]
1069- else nil
1070- let gi = {
1071- let gj = if ((this == aP))
1072- then 0
1073- else dZ
1074- if (eI)
1075- then $Tuple2(-((dT + gj)), 0)
1076- else $Tuple2(0, -((dT + gj)))
1077- }
1078- let du = gi._1
1079- let dv = gi._2
1080- let gk = dt(du, dv, 0)
1081- let fK = gk._1
1082- let dk = gk._2
1083- let fL = dx(ds, dk)
1084- if ((fL == fL))
1085- then $Tuple2((((de ++ gh) ++ fY) ++ fK), dT)
1086- else throw("Strict value is not equal to itself.")
1087- }
1088- else throw("Strict value is not equal to itself.")
1089- }
1090- else throw("Strict value is not equal to itself.")
1091- }
1092- else throw("Strict value is not equal to itself.")
1093- }
1094- else throw("Strict value is not equal to itself.")
1095- }
1096-
1097-
1098-
1099-@Callable(dL)
1100-func getOneTknREADONLY (eG,eo) = {
1101- let gl = eF(aY(eG), eo, bh, unit, unit)
1102- let gf = gl._1
1103- let de = gl._2
1104- let dZ = gl._3
1105- let fU = gl._4
1106- let eI = gl._5
1107- $Tuple2(nil, $Tuple3(gf, dZ, fU))
1108- }
1109-
1110-
1111-
1112-@Callable(dL)
1113-func unstakeAndGetOneTkn (gm,gc,fO) = {
1114- let fQ = {
1115- let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1116- if ($isInstanceOf(aR, "Boolean"))
1117- then aR
1118- else throw(($getType(aR) + " couldn't be cast to Boolean"))
1119- }
1120- let gd = if (if (aT())
1121- then true
1122- else (bg == n))
1123- then true
1124- else fQ
1125- let eH = [if (if (!(gd))
1126- then true
1127- else fc(dL))
1128- then true
1129- else aL("get operation is blocked by admin"), if ((size(dL.payments) == 0))
1130- then true
1131- else aL("no payments are expected")]
1132- if ((eH == eH))
1133- then {
1134- let eG = aY(gc)
1135- let ab = dL.caller
1136- let ac = dL.transactionId
1137- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1138- if ((ds == ds))
1139- then {
1140- let gn = invoke(bn, "unstake", [toBase58String(bh), gm], nil)
1141- if ((gn == gn))
1142- then {
1143- let go = eF(eG, gm, bh, ab, ac)
1144- if ((go == go))
1145- then {
1146- let eI = go._5
1147- let fU = go._4
1148- let dZ = go._3
1149- let de = go._2
1150- let gf = go._1
1151- let dT = if (if ((fO > 0))
1152- then (fO > gf)
1153- else false)
1154- then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
1155- else gf
1156- let gg = invoke(aO, "burn", [gm], [AttachedPayment(bh, gm)])
1157- if ((gg == gg))
1220+ else if (fl)
1221+ then $Tuple2(-(fe), 0)
1222+ else $Tuple2(0, -(fe))
1223+ let eB = hh._1
1224+ let eC = hh._2
1225+ let hi = eA(eB, eC, 0)
1226+ let gR = hi._1
1227+ let er = hi._2
1228+ let eL = value(getString(aj))
1229+ let gS = eE(ez, er)
1230+ if ((gS == gS))
11581231 then {
1159- let gh = [ScriptTransfer(dL.caller, dT, eG)]
1160- let fY = if ((dZ > 0))
1161- then [ScriptTransfer(aP, dZ, eG)]
1162- else nil
1163- let gp = {
1164- let gj = if ((this == aP))
1165- then 0
1166- else dZ
1167- if (eI)
1168- then $Tuple2(-((dT + gj)), 0)
1169- else $Tuple2(0, -((dT + gj)))
1170- }
1171- let du = gp._1
1172- let dv = gp._2
1173- let gq = dt(du, dv, 0)
1174- let fK = gq._1
1175- let dk = gq._2
1176- let fL = dx(ds, dk)
1177- if ((fL == fL))
1178- then $Tuple2((((de ++ gh) ++ fY) ++ fK), dT)
1232+ let gT = invoke(this, "rebalance", nil, nil)
1233+ if ((gT == gT))
1234+ then $Tuple2((((el ++ gO) ++ hg) ++ gR), he)
11791235 else throw("Strict value is not equal to itself.")
11801236 }
11811237 else throw("Strict value is not equal to itself.")
11911247
11921248
11931249
1194-@Callable(dL)
1195-func get () = {
1196- let cP = dK(dL)
1197- let gr = cP._1
1198- let cw = cP._2
1199- let dN = cP._3
1200- let ce = cP._4
1201- let cx = cP._5
1202- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1203- if ((ds == ds))
1204- then {
1205- let gs = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1206- if ((gs == gs))
1207- then {
1208- let gt = dt(-(gr), -(cw), 0)
1209- let fK = gt._1
1210- let dk = gt._2
1211- let fL = dx(ds, dk)
1212- if ((fL == fL))
1213- then (cx ++ fK)
1214- else throw("Strict value is not equal to itself.")
1215- }
1216- else throw("Strict value is not equal to itself.")
1217- }
1218- else throw("Strict value is not equal to itself.")
1250+@Callable(eS)
1251+func putOneTknREADONLY (fh,fg) = {
1252+ let hj = ff(fg, bd(fh), unit, unit)
1253+ let hd = hj._1
1254+ let el = hj._2
1255+ let fe = hj._3
1256+ let hc = hj._4
1257+ let fl = hj._5
1258+ $Tuple2(nil, $Tuple3(hd, fe, hc))
12191259 }
12201260
12211261
12221262
1223-@Callable(dL)
1224-func getNoLess (gu,gv) = {
1225- let cP = dK(dL)
1226- let cv = cP._1
1227- let cw = cP._2
1228- let dN = cP._3
1229- let ce = cP._4
1230- let cx = cP._5
1231- if ((gu > cv))
1232- then throw(((("noLessThenAmtAsset failed: " + toString(cv)) + " < ") + toString(gu)))
1233- else if ((gv > cw))
1234- then throw(((("noLessThenPriceAsset failed: " + toString(cw)) + " < ") + toString(gv)))
1235- else {
1236- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1237- if ((ds == ds))
1238- then {
1239- let gs = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1240- if ((gs == gs))
1241- then {
1242- let gw = dt(-(cv), -(cw), 0)
1243- let fK = gw._1
1244- let dk = gw._2
1245- let fL = dx(ds, dk)
1246- if ((fL == fL))
1247- then (cx ++ fK)
1248- else throw("Strict value is not equal to itself.")
1249- }
1250- else throw("Strict value is not equal to itself.")
1251- }
1252- else throw("Strict value is not equal to itself.")
1253- }
1254- }
1255-
1256-
1257-
1258-@Callable(dL)
1259-func unstakeAndGet (dT) = {
1260- let gx = if ((size(dL.payments) != 0))
1261- then throw("No payments are expected")
1262- else true
1263- if ((gx == gx))
1263+@Callable(eS)
1264+func getOneTkn (hk,gW) = {
1265+ let gY = {
1266+ let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1267+ if ($isInstanceOf(aW, "Boolean"))
1268+ then aW
1269+ else throw(($getType(aW) + " couldn't be cast to Boolean"))
1270+ }
1271+ let hl = if (if (aY())
1272+ then true
1273+ else (bl == n))
1274+ then true
1275+ else gY
1276+ let fM = [if (if (!(hl))
1277+ then true
1278+ else gh(eS))
1279+ then true
1280+ else aQ("get operation is blocked by admin"), if ((size(eS.payments) == 1))
1281+ then true
1282+ else aQ("exactly 1 payment are expected")]
1283+ if ((fM == fM))
12641284 then {
1265- let bT = aV()
1266- let cg = fromBase58String(bT[q])
1267- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1268- if ((ds == ds))
1285+ let fL = bd(hk)
1286+ let ha = eS.payments[0]
1287+ let fh = ha.assetId
1288+ let ft = ha.amount
1289+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1290+ if ((ez == ez))
12691291 then {
1270- let gn = invoke(bn, "unstake", [toBase58String(cg), dT], nil)
1271- if ((gn == gn))
1292+ let ab = eS.caller
1293+ let ac = eS.transactionId
1294+ let hm = fK(fL, ft, fh, ab, ac)
1295+ if ((hm == hm))
12721296 then {
1273- let cP = cc(toBase58String(dL.transactionId), toBase58String(cg), dT, dL.caller)
1274- let cv = cP._1
1275- let cw = cP._2
1276- let cj = parseIntValue(cP._9)
1277- let cx = cP._10
1278- let gy = if (if (aT())
1279- then true
1280- else (cj == n))
1281- then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
1282- else true
1283- if ((gy == gy))
1297+ let fN = hm._5
1298+ let hc = hm._4
1299+ let fe = hm._3
1300+ let el = hm._2
1301+ let hn = hm._1
1302+ let bW = if (if ((gW > 0))
1303+ then (gW > hn)
1304+ else false)
1305+ then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1306+ else hn
1307+ let ho = invoke(aT, "burn", [ft], [AttachedPayment(fh, ft)])
1308+ if ((ho == ho))
12841309 then {
1285- let gs = invoke(aO, "burn", [dT], [AttachedPayment(cg, dT)])
1286- if ((gs == gs))
1310+ let gC = cK(hk, bW)
1311+ if ((gC == gC))
12871312 then {
1288- let gz = dt(-(cv), -(cw), 0)
1289- let fK = gz._1
1290- let dk = gz._2
1291- let fL = dx(ds, dk)
1292- if ((fL == fL))
1293- then (cx ++ fK)
1313+ let hp = [ScriptTransfer(ab, bW, fL)]
1314+ let hg = if ((fe > 0))
1315+ then [ScriptTransfer(aU, fe, fL)]
1316+ else nil
1317+ let hq = {
1318+ let hr = if ((this == aU))
1319+ then 0
1320+ else fe
1321+ if (fN)
1322+ then $Tuple2(-((bW + hr)), 0)
1323+ else $Tuple2(0, -((bW + hr)))
1324+ }
1325+ let eB = hq._1
1326+ let eC = hq._2
1327+ let hs = eA(eB, eC, 0)
1328+ let gR = hs._1
1329+ let er = hs._2
1330+ let gS = eE(ez, er)
1331+ if ((gS == gS))
1332+ then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
12941333 else throw("Strict value is not equal to itself.")
12951334 }
12961335 else throw("Strict value is not equal to itself.")
13061345
13071346
13081347
1309-@Callable(dL)
1310-func unstakeAndGetNoLess (gm,gA,gv) = {
1311- let gd = if (aT())
1348+@Callable(eS)
1349+func getOneTknREADONLY (fL,ft) = {
1350+ let ht = fK(bd(fL), ft, bm, unit, unit)
1351+ let hn = ht._1
1352+ let el = ht._2
1353+ let fe = ht._3
1354+ let hc = ht._4
1355+ let fN = ht._5
1356+ $Tuple2(nil, $Tuple3(hn, fe, hc))
1357+ }
1358+
1359+
1360+
1361+@Callable(eS)
1362+func unstakeAndGetOneTkn (hu,hk,gW) = {
1363+ let gY = {
1364+ let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1365+ if ($isInstanceOf(aW, "Boolean"))
1366+ then aW
1367+ else throw(($getType(aW) + " couldn't be cast to Boolean"))
1368+ }
1369+ let hl = if (if (aY())
13121370 then true
1313- else (bg == n)
1314- let eH = [if (!(gd))
1371+ else (bl == n))
13151372 then true
1316- else throw("get operation is blocked by admin"), if ((size(dL.payments) == 0))
1373+ else gY
1374+ let fM = [if (if (!(hl))
13171375 then true
1318- else throw("no payments are expected")]
1319- if ((eH == eH))
1376+ else gh(eS))
1377+ then true
1378+ else aQ("get operation is blocked by admin"), if ((size(eS.payments) == 0))
1379+ then true
1380+ else aQ("no payments are expected")]
1381+ if ((fM == fM))
13201382 then {
1321- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1322- if ((ds == ds))
1383+ let fL = bd(hk)
1384+ let ab = eS.caller
1385+ let ac = eS.transactionId
1386+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1387+ if ((ez == ez))
13231388 then {
1324- let gn = invoke(bn, "unstake", [toBase58String(bh), gm], nil)
1325- if ((gn == gn))
1389+ let hv = invoke(bs, "unstake", [toBase58String(bm), hu], nil)
1390+ if ((hv == hv))
13261391 then {
1327- let cP = cc(toBase58String(dL.transactionId), toBase58String(bh), gm, dL.caller)
1328- let cv = cP._1
1329- let cw = cP._2
1330- let cx = cP._10
1331- let gB = [if ((cv >= gA))
1332- then true
1333- else throw(makeString(["amount asset amount to receive is less than ", toString(gA)], "")), if ((cw >= gv))
1334- then true
1335- else throw(makeString(["price asset amount to receive is less than ", toString(gv)], ""))]
1336- if ((gB == gB))
1392+ let hw = fK(fL, hu, bm, ab, ac)
1393+ if ((hw == hw))
13371394 then {
1338- let gs = invoke(aO, "burn", [gm], [AttachedPayment(bh, gm)])
1339- if ((gs == gs))
1395+ let fN = hw._5
1396+ let hc = hw._4
1397+ let fe = hw._3
1398+ let el = hw._2
1399+ let hn = hw._1
1400+ let bW = if (if ((gW > 0))
1401+ then (gW > hn)
1402+ else false)
1403+ then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1404+ else hn
1405+ let ho = invoke(aT, "burn", [hu], [AttachedPayment(bm, hu)])
1406+ if ((ho == ho))
13401407 then {
1341- let gC = dt(-(cv), -(cw), 0)
1342- let fK = gC._1
1343- let dk = gC._2
1344- let fL = dx(ds, dk)
1345- if ((fL == fL))
1346- then (cx ++ fK)
1408+ let gC = cK(hk, bW)
1409+ if ((gC == gC))
1410+ then {
1411+ let hp = [ScriptTransfer(eS.caller, bW, fL)]
1412+ let hg = if ((fe > 0))
1413+ then [ScriptTransfer(aU, fe, fL)]
1414+ else nil
1415+ let hx = {
1416+ let hr = if ((this == aU))
1417+ then 0
1418+ else fe
1419+ if (fN)
1420+ then $Tuple2(-((bW + hr)), 0)
1421+ else $Tuple2(0, -((bW + hr)))
1422+ }
1423+ let eB = hx._1
1424+ let eC = hx._2
1425+ let hy = eA(eB, eC, 0)
1426+ let gR = hy._1
1427+ let er = hy._2
1428+ let gS = eE(ez, er)
1429+ if ((gS == gS))
1430+ then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
1431+ else throw("Strict value is not equal to itself.")
1432+ }
13471433 else throw("Strict value is not equal to itself.")
13481434 }
13491435 else throw("Strict value is not equal to itself.")
13591445
13601446
13611447
1362-@Callable(dL)
1363-func activate (gD,gE) = if ((toString(dL.caller) != toString(aO)))
1364- then throw("permissions denied")
1365- else $Tuple2([StringEntry(ae(), gD), StringEntry(af(), gE)], "success")
1366-
1367-
1368-
1369-@Callable(dL)
1370-func refreshKLp () = {
1371- let gF = valueOrElse(getInteger(ak), 0)
1372- let gG = if (((height - gF) >= an))
1373- then unit
1374- else aL(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1375- if ((gG == gG))
1448+@Callable(eS)
1449+func get () = {
1450+ let dW = eR(eS)
1451+ let hz = dW._1
1452+ let dB = dW._2
1453+ let eU = dW._3
1454+ let dj = dW._4
1455+ let dE = dW._5
1456+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1457+ if ((ez == ez))
13761458 then {
1377- let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
1378- let gH = dt(0, 0, 0)
1379- let gI = gH._1
1380- let dk = gH._2
1381- let dw = if ((dE != dk))
1382- then gI
1383- else aL("nothing to refresh")
1384- $Tuple2(dw, toString(dk))
1459+ let hA = invoke(aT, "burn", [eU], [AttachedPayment(dj, eU)])
1460+ if ((hA == hA))
1461+ then {
1462+ let hB = eA(-(hz), -(dB), 0)
1463+ let gR = hB._1
1464+ let er = hB._2
1465+ let gS = eE(ez, er)
1466+ if ((gS == gS))
1467+ then (dE ++ gR)
1468+ else throw("Strict value is not equal to itself.")
1469+ }
1470+ else throw("Strict value is not equal to itself.")
13851471 }
13861472 else throw("Strict value is not equal to itself.")
13871473 }
13881474
13891475
13901476
1391-@Callable(dL)
1392-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aV())
1393-
1394-
1395-
1396-@Callable(dL)
1397-func getAccBalanceWrapperREADONLY (bF) = $Tuple2(nil, bE(bF))
1398-
1399-
1400-
1401-@Callable(dL)
1402-func calcPricesWrapperREADONLY (bN,bO,bS) = {
1403- let cb = bR(bN, bO, bS)
1404- $Tuple2(nil, [toString(cb[0]), toString(cb[1]), toString(cb[2])])
1477+@Callable(eS)
1478+func getNoLess (hC,hD) = {
1479+ let dW = eR(eS)
1480+ let dA = dW._1
1481+ let dB = dW._2
1482+ let eU = dW._3
1483+ let dj = dW._4
1484+ let dE = dW._5
1485+ if ((hC > dA))
1486+ then throw(((("noLessThenAmtAsset failed: " + toString(dA)) + " < ") + toString(hC)))
1487+ else if ((hD > dB))
1488+ then throw(((("noLessThenPriceAsset failed: " + toString(dB)) + " < ") + toString(hD)))
1489+ else {
1490+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1491+ if ((ez == ez))
1492+ then {
1493+ let hA = invoke(aT, "burn", [eU], [AttachedPayment(dj, eU)])
1494+ if ((hA == hA))
1495+ then {
1496+ let hE = eA(-(dA), -(dB), 0)
1497+ let gR = hE._1
1498+ let er = hE._2
1499+ let gS = eE(ez, er)
1500+ if ((gS == gS))
1501+ then (dE ++ gR)
1502+ else throw("Strict value is not equal to itself.")
1503+ }
1504+ else throw("Strict value is not equal to itself.")
1505+ }
1506+ else throw("Strict value is not equal to itself.")
1507+ }
14051508 }
14061509
14071510
14081511
1409-@Callable(dL)
1512+@Callable(eS)
1513+func unstakeAndGet (bW) = {
1514+ let hF = if ((size(eS.payments) != 0))
1515+ then throw("No payments are expected")
1516+ else true
1517+ if ((hF == hF))
1518+ then {
1519+ let cY = ba()
1520+ let dl = fromBase58String(cY[q])
1521+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1522+ if ((ez == ez))
1523+ then {
1524+ let hv = invoke(bs, "unstake", [toBase58String(dl), bW], nil)
1525+ if ((hv == hv))
1526+ then {
1527+ let dW = dh(toBase58String(eS.transactionId), toBase58String(dl), bW, eS.caller)
1528+ let dA = dW._1
1529+ let dB = dW._2
1530+ let do = parseIntValue(dW._9)
1531+ let dE = dW._10
1532+ let hG = if (if (aY())
1533+ then true
1534+ else (do == n))
1535+ then throw(("Get operation is blocked by admin. Status = " + toString(do)))
1536+ else true
1537+ if ((hG == hG))
1538+ then {
1539+ let hA = invoke(aT, "burn", [bW], [AttachedPayment(dl, bW)])
1540+ if ((hA == hA))
1541+ then {
1542+ let hH = eA(-(dA), -(dB), 0)
1543+ let gR = hH._1
1544+ let er = hH._2
1545+ let gS = eE(ez, er)
1546+ if ((gS == gS))
1547+ then (dE ++ gR)
1548+ else throw("Strict value is not equal to itself.")
1549+ }
1550+ else throw("Strict value is not equal to itself.")
1551+ }
1552+ else throw("Strict value is not equal to itself.")
1553+ }
1554+ else throw("Strict value is not equal to itself.")
1555+ }
1556+ else throw("Strict value is not equal to itself.")
1557+ }
1558+ else throw("Strict value is not equal to itself.")
1559+ }
1560+
1561+
1562+
1563+@Callable(eS)
1564+func unstakeAndGetNoLess (hu,hI,hD) = {
1565+ let hl = if (aY())
1566+ then true
1567+ else (bl == n)
1568+ let fM = [if (!(hl))
1569+ then true
1570+ else throw("get operation is blocked by admin"), if ((size(eS.payments) == 0))
1571+ then true
1572+ else throw("no payments are expected")]
1573+ if ((fM == fM))
1574+ then {
1575+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1576+ if ((ez == ez))
1577+ then {
1578+ let hv = invoke(bs, "unstake", [toBase58String(bm), hu], nil)
1579+ if ((hv == hv))
1580+ then {
1581+ let dW = dh(toBase58String(eS.transactionId), toBase58String(bm), hu, eS.caller)
1582+ let dA = dW._1
1583+ let dB = dW._2
1584+ let dE = dW._10
1585+ let hJ = [if ((dA >= hI))
1586+ then true
1587+ else throw(makeString(["amount asset amount to receive is less than ", toString(hI)], "")), if ((dB >= hD))
1588+ then true
1589+ else throw(makeString(["price asset amount to receive is less than ", toString(hD)], ""))]
1590+ if ((hJ == hJ))
1591+ then {
1592+ let hA = invoke(aT, "burn", [hu], [AttachedPayment(bm, hu)])
1593+ if ((hA == hA))
1594+ then {
1595+ let hK = eA(-(dA), -(dB), 0)
1596+ let gR = hK._1
1597+ let er = hK._2
1598+ let gS = eE(ez, er)
1599+ if ((gS == gS))
1600+ then (dE ++ gR)
1601+ else throw("Strict value is not equal to itself.")
1602+ }
1603+ else throw("Strict value is not equal to itself.")
1604+ }
1605+ else throw("Strict value is not equal to itself.")
1606+ }
1607+ else throw("Strict value is not equal to itself.")
1608+ }
1609+ else throw("Strict value is not equal to itself.")
1610+ }
1611+ else throw("Strict value is not equal to itself.")
1612+ }
1613+
1614+
1615+
1616+@Callable(eS)
1617+func activate (hL,hM) = if ((toString(eS.caller) != toString(aT)))
1618+ then throw("permissions denied")
1619+ else $Tuple2([StringEntry(ae(), hL), StringEntry(af(), hM)], "success")
1620+
1621+
1622+
1623+@Callable(eS)
1624+func refreshKLp () = {
1625+ let hN = valueOrElse(getInteger(ak), 0)
1626+ let hO = if (((height - hN) >= an))
1627+ then unit
1628+ else aQ(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1629+ if ((hO == hO))
1630+ then {
1631+ let eL = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
1632+ let hP = eA(0, 0, 0)
1633+ let hQ = hP._1
1634+ let er = hP._2
1635+ let eD = if ((eL != er))
1636+ then hQ
1637+ else aQ("nothing to refresh")
1638+ $Tuple2(eD, toString(er))
1639+ }
1640+ else throw("Strict value is not equal to itself.")
1641+ }
1642+
1643+
1644+
1645+@Callable(eS)
1646+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, ba())
1647+
1648+
1649+
1650+@Callable(eS)
1651+func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bJ(ap))
1652+
1653+
1654+
1655+@Callable(eS)
1656+func calcPricesWrapperREADONLY (cS,cT,cX) = {
1657+ let dg = cW(cS, cT, cX)
1658+ $Tuple2(nil, [toString(dg[0]), toString(dg[1]), toString(dg[2])])
1659+ }
1660+
1661+
1662+
1663+@Callable(eS)
14101664 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
14111665
14121666
14131667
1414-@Callable(dL)
1668+@Callable(eS)
14151669 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
14161670
14171671
14181672
1419-@Callable(dL)
1420-func calcPriceBigIntWrapperREADONLY (bH,bI) = $Tuple2(nil, toString(bG(parseBigIntValue(bH), parseBigIntValue(bI))))
1673+@Callable(eS)
1674+func calcPriceBigIntWrapperREADONLY (bN,bO) = $Tuple2(nil, toString(bM(parseBigIntValue(bN), parseBigIntValue(bO))))
14211675
14221676
14231677
1424-@Callable(dL)
1425-func estimatePutOperationWrapperREADONLY (cd,cz,cA,cB,cC,cD,ab,cE,cF) = $Tuple2(nil, cy(cd, cz, cA, cB, cC, cD, ab, cE, cF))
1678+@Callable(eS)
1679+func estimatePutOperationWrapperREADONLY (di,dG,dH,dI,dJ,dK,ab,dL,dM) = $Tuple2(nil, dF(di, dG, dH, dI, dJ, dK, ab, dL, dM))
14261680
14271681
14281682
1429-@Callable(dL)
1430-func estimateGetOperationWrapperREADONLY (cd,ce,cf,ab) = {
1431- let cP = cc(cd, ce, cf, addressFromStringValue(ab))
1432- $Tuple2(nil, $Tuple10(cP._1, cP._2, cP._3, cP._4, cP._5, cP._6, cP._7, toString(cP._8), cP._9, cP._10))
1683+@Callable(eS)
1684+func estimateGetOperationWrapperREADONLY (di,dj,dk,ab) = {
1685+ let dW = dh(di, dj, dk, addressFromStringValue(ab))
1686+ $Tuple2(nil, $Tuple10(dW._1, dW._2, dW._3, dW._4, dW._5, dW._6, dW._7, toString(dW._8), dW._9, dW._10))
14331687 }
14341688
14351689
14361690
1437-@Callable(dL)
1691+@Callable(eS)
14381692 func statsREADONLY () = {
1439- let bT = aV()
1440- let cg = fromBase58String(bT[q])
1441- let gJ = bT[r]
1442- let gK = bT[s]
1443- let cI = bT[v]
1444- let cJ = bT[w]
1445- let bU = parseIntValue(bT[t])
1446- let bV = parseIntValue(bT[u])
1447- let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1448- let gM = bE(gJ)
1449- let gN = bE(gK)
1450- let gO = if ((gL == 0))
1693+ let cY = ba()
1694+ let dl = fromBase58String(cY[q])
1695+ let hR = cY[r]
1696+ let hS = cY[s]
1697+ let dP = cY[v]
1698+ let dQ = cY[w]
1699+ let cZ = parseIntValue(cY[t])
1700+ let da = parseIntValue(cY[u])
1701+ let hT = valueOrErrorMessage(assetInfo(dl), (("Asset " + toBase58String(dl)) + " doesn't exist")).quantity
1702+ let hU = bJ(hR)
1703+ let hV = bJ(hS)
1704+ let hW = if ((hT == 0))
14511705 then [e, e, e]
1452- else bR(gM, gN, gL)
1453- let cq = 0
1454- let gP = H(gO[1], b)
1455- let gQ = H(gO[2], b)
1456- let gR = value(getInteger(aO, ay(toString(this))))
1457- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gM), toString(gN), toString(gL), toString(cq), toString(gP), toString(gQ), toString(gR)], j))
1706+ else cW(hU, hV, hT)
1707+ let dv = 0
1708+ let hX = H(hW[1], b)
1709+ let hY = H(hW[2], b)
1710+ let hZ = value(getInteger(aT, aD(toString(this))))
1711+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hU), toString(hV), toString(hT), toString(dv), toString(hX), toString(hY), toString(hZ)], j))
14581712 }
14591713
14601714
14611715
1462-@Callable(dL)
1463-func evaluatePutByAmountAssetREADONLY (cA) = {
1464- let bT = aV()
1465- let cg = fromBase58String(bT[q])
1466- let cG = bT[r]
1467- let ch = fromBase58String(cG)
1468- let cH = bT[s]
1469- let ci = fromBase58String(cH)
1470- let bU = parseIntValue(bT[t])
1471- let bV = parseIntValue(bT[u])
1472- let cj = bT[p]
1473- let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1474- let gM = bE(cG)
1475- let gN = bE(cH)
1476- let bP = D(gM, bU)
1477- let bQ = D(gN, bV)
1478- let cp = if ((gL == 0))
1716+@Callable(eS)
1717+func evaluatePutByAmountAssetREADONLY (dH) = {
1718+ let cY = ba()
1719+ let dl = fromBase58String(cY[q])
1720+ let dN = cY[r]
1721+ let dm = fromBase58String(dN)
1722+ let dO = cY[s]
1723+ let dn = fromBase58String(dO)
1724+ let cZ = parseIntValue(cY[t])
1725+ let da = parseIntValue(cY[u])
1726+ let do = cY[p]
1727+ let hT = valueOrErrorMessage(assetInfo(dl), (("Asset " + toBase58String(dl)) + " doesn't exist")).quantity
1728+ let hU = bJ(dN)
1729+ let hV = bJ(dO)
1730+ let cU = D(hU, cZ)
1731+ let cV = D(hV, da)
1732+ let du = if ((hT == 0))
14791733 then e
1480- else bG(bQ, bP)
1481- let cM = D(cA, bU)
1482- let cN = fraction(cM, cp, d)
1483- let cC = H(cN, bV)
1484- let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
1485- let cX = dR._1
1486- let gS = dR._3
1487- let cl = dR._4
1488- let cn = dR._5
1489- let ck = dR._6
1490- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
1734+ else bM(cV, cU)
1735+ let dT = D(dH, cZ)
1736+ let dU = fraction(dT, du, d)
1737+ let dJ = H(dU, da)
1738+ let eY = dF("", 500000, dH, dm, dJ, dn, "", true, false)
1739+ let ee = eY._1
1740+ let ia = eY._3
1741+ let dq = eY._4
1742+ let ds = eY._5
1743+ let dp = eY._6
1744+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ee), toString(H(du, b)), toString(dq), toString(ds), toString(dp), do, toString(dH), toString(dJ)], j))
14911745 }
14921746
14931747
14941748
1495-@Callable(dL)
1496-func evaluatePutByPriceAssetREADONLY (cC) = {
1497- let bT = aV()
1498- let cg = fromBase58String(bT[q])
1499- let cG = bT[r]
1500- let ch = fromBase58String(cG)
1501- let cH = bT[s]
1502- let ci = fromBase58String(cH)
1503- let bU = parseIntValue(bT[t])
1504- let bV = parseIntValue(bT[u])
1505- let cj = bT[p]
1506- let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1507- let gT = bE(cG)
1508- let gU = bE(cH)
1509- let gV = D(gT, bU)
1510- let gW = D(gU, bV)
1511- let cp = if ((gL == 0))
1749+@Callable(eS)
1750+func evaluatePutByPriceAssetREADONLY (dJ) = {
1751+ let cY = ba()
1752+ let dl = fromBase58String(cY[q])
1753+ let dN = cY[r]
1754+ let dm = fromBase58String(dN)
1755+ let dO = cY[s]
1756+ let dn = fromBase58String(dO)
1757+ let cZ = parseIntValue(cY[t])
1758+ let da = parseIntValue(cY[u])
1759+ let do = cY[p]
1760+ let hT = valueOrErrorMessage(assetInfo(dl), (("Asset " + toBase58String(dl)) + " doesn't exist")).quantity
1761+ let ib = bJ(dN)
1762+ let ic = bJ(dO)
1763+ let id = D(ib, cZ)
1764+ let ie = D(ic, da)
1765+ let du = if ((hT == 0))
15121766 then e
1513- else bG(gW, gV)
1514- let cN = D(cC, bV)
1515- let cM = fraction(cN, d, cp)
1516- let cA = H(cM, bU)
1517- let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
1518- let cX = dR._1
1519- let gS = dR._3
1520- let cl = dR._4
1521- let cn = dR._5
1522- let ck = dR._6
1523- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
1767+ else bM(ie, id)
1768+ let dU = D(dJ, da)
1769+ let dT = fraction(dU, d, du)
1770+ let dH = H(dT, cZ)
1771+ let eY = dF("", 500000, dH, dm, dJ, dn, "", true, false)
1772+ let ee = eY._1
1773+ let ia = eY._3
1774+ let dq = eY._4
1775+ let ds = eY._5
1776+ let dp = eY._6
1777+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ee), toString(H(du, b)), toString(dq), toString(ds), toString(dp), do, toString(dH), toString(dJ)], j))
15241778 }
15251779
15261780
15271781
1528-@Callable(dL)
1529-func evaluateGetREADONLY (gX,gY) = {
1530- let cP = cc("", gX, gY, this)
1531- let cv = cP._1
1532- let cw = cP._2
1533- let cl = cP._5
1534- let cn = cP._6
1535- let ck = cP._7
1536- let cq = cP._8
1537- let cj = parseIntValue(cP._9)
1538- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cv), toString(cw), toString(cl), toString(cn), toString(ck), toString(cq), toString(cj)], j))
1782+@Callable(eS)
1783+func evaluateGetREADONLY (if,ig) = {
1784+ let dW = dh("", if, ig, this)
1785+ let dA = dW._1
1786+ let dB = dW._2
1787+ let dq = dW._5
1788+ let ds = dW._6
1789+ let dp = dW._7
1790+ let dv = dW._8
1791+ let do = parseIntValue(dW._9)
1792+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dA), toString(dB), toString(dq), toString(ds), toString(dp), toString(dv), toString(do)], j))
15391793 }
15401794
15411795
1542-@Verifier(gZ)
1543-func ha () = {
1544- let hb = {
1545- let dW = eZ()
1546- if ($isInstanceOf(dW, "ByteVector"))
1796+@Verifier(ih)
1797+func ii () = {
1798+ let ij = {
1799+ let bT = ge()
1800+ if ($isInstanceOf(bT, "ByteVector"))
15471801 then {
1548- let fd = dW
1549- fd
1802+ let gi = bT
1803+ gi
15501804 }
1551- else if ($isInstanceOf(dW, "Unit"))
1552- then gZ.senderPublicKey
1805+ else if ($isInstanceOf(bT, "Unit"))
1806+ then ih.senderPublicKey
15531807 else throw("Match error")
15541808 }
1555- let dW = gZ
1556- if ($isInstanceOf(dW, "Order"))
1809+ let bT = ih
1810+ if ($isInstanceOf(bT, "Order"))
15571811 then {
1558- let dA = dW
1559- let hc = aU()
1560- let hd = dz(dA)
1561- let aD = hd._1
1562- let aE = hd._2
1563- let aF = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
1564- let aG = sigVerify(dA.bodyBytes, dA.proofs[1], hc)
1565- if (if (if (aD)
1566- then aF
1812+ let eH = bT
1813+ let ik = aZ()
1814+ let il = eG(eH)
1815+ let aI = il._1
1816+ let aJ = il._2
1817+ let aK = sigVerify(eH.bodyBytes, eH.proofs[0], eH.senderPublicKey)
1818+ let aL = sigVerify(eH.bodyBytes, eH.proofs[1], ik)
1819+ if (if (if (aI)
1820+ then aK
15671821 else false)
1568- then aG
1822+ then aL
15691823 else false)
15701824 then true
1571- else aC(aD, aE, aF, aG)
1825+ else aH(aI, aJ, aK, aL)
15721826 }
1573- else if ($isInstanceOf(dW, "SetScriptTransaction"))
1827+ else if ($isInstanceOf(bT, "SetScriptTransaction"))
15741828 then {
1575- let fa = dW
1576- if (sigVerify(gZ.bodyBytes, gZ.proofs[0], hb))
1829+ let gf = bT
1830+ if (sigVerify(ih.bodyBytes, ih.proofs[0], ij))
15771831 then true
15781832 else {
1579- let he = blake2b256(value(fa.script))
1580- let hf = fromBase64String(value(getString(aO, aA())))
1581- let hg = scriptHash(this)
1582- if ((hf == he))
1583- then (hg != he)
1833+ let im = blake2b256(value(gf.script))
1834+ let in = fromBase64String(value(getString(aT, aF())))
1835+ let io = scriptHash(this)
1836+ if ((in == im))
1837+ then (io != im)
15841838 else false
15851839 }
15861840 }
1587- else sigVerify(gZ.bodyBytes, gZ.proofs[0], hb)
1841+ else sigVerify(ih.bodyBytes, ih.proofs[0], ij)
15881842 }
15891843
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
133-func ao () = "%s__factoryConfig"
133+func ao (ap) = makeString(["%s%s", "stakedBalance", ap], j)
134134
135135
136-func ap () = "%s%s__matcher__publicKey"
136+func aq (ap) = makeString(["%s%s", "shareAssetBalance", ap], j)
137137
138138
139-func aq (ar) = (("%s%s%s__" + ar) + "__mappings__poolContract2LpAsset")
139+func ar (ap) = valueOrElse(getInteger(this, ao(ap)), 0)
140140
141141
142-func as (at,au) = (((("%d%d%s__" + at) + "__") + au) + "__config")
142+func as (ap) = valueOrElse(getInteger(this, aq(ap)), 0)
143143
144144
145-func av (aw) = ("%s%s%s__mappings__baseAsset2internalId__" + aw)
145+func at () = "%s__factoryConfig"
146146
147147
148-func ax () = "%s__shutdown"
148+func au () = "%s%s__matcher__publicKey"
149149
150150
151-func ay (az) = ("%s%s__poolWeight__" + az)
151+func av (aw) = (("%s%s%s__" + aw) + "__mappings__poolContract2LpAsset")
152152
153153
154-func aA () = "%s__allowedLpScriptHash"
154+func ax (ay,az) = (((("%d%d%s__" + ay) + "__") + az) + "__config")
155155
156156
157-let aB = "%s__feeCollectorAddress"
158-
159-func aC (aD,aE,aF,aG) = throw((((((((("order validation failed: orderValid=" + toString(aD)) + " (") + aE) + ")") + " senderValid=") + toString(aF)) + " matcherValid=") + toString(aG)))
157+func aA (aB) = ("%s%s%s__mappings__baseAsset2internalId__" + aB)
160158
161159
162-func aH (aI,aJ) = valueOrErrorMessage(getString(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
160+func aC () = "%s__shutdown"
163161
164162
165-func aK (aI,aJ) = valueOrErrorMessage(getInteger(aI, aJ), makeString(["mandatory ", toString(aI), ".", aJ, " is not defined"], ""))
163+func aD (aE) = ("%s%s__poolWeight__" + aE)
166164
167165
168-func aL (aM) = throw(makeString(["lp.ride:", aM], " "))
166+func aF () = "%s__allowedLpScriptHash"
169167
170168
171-func aN (aM) = makeString(["lp.ride:", aM], " ")
169+let aG = "%s__feeCollectorAddress"
170+
171+func aH (aI,aJ,aK,aL) = throw((((((((("order validation failed: orderValid=" + toString(aI)) + " (") + aJ) + ")") + " senderValid=") + toString(aK)) + " matcherValid=") + toString(aL)))
172172
173173
174-let aO = addressFromStringValue(aH(this, T()))
174+func aM (aN,aO) = valueOrErrorMessage(getString(aN, aO), makeString(["mandatory ", toString(aN), ".", aO, " is not defined"], ""))
175175
176-let aP = addressFromStringValue(aH(aO, aB))
177176
178-let aQ = {
179- let aR = invoke(aO, "getInFeeREADONLY", [toString(this)], nil)
180- if ($isInstanceOf(aR, "Int"))
181- then aR
182- else throw(($getType(aR) + " couldn't be cast to Int"))
177+func aP (aN,aO) = valueOrErrorMessage(getInteger(aN, aO), makeString(["mandatory ", toString(aN), ".", aO, " is not defined"], ""))
178+
179+
180+func aQ (aR) = throw(makeString(["lp.ride:", aR], " "))
181+
182+
183+func aS (aR) = makeString(["lp.ride:", aR], " ")
184+
185+
186+let aT = addressFromStringValue(aM(this, T()))
187+
188+let aU = addressFromStringValue(aM(aT, aG))
189+
190+let aV = {
191+ let aW = invoke(aT, "getInFeeREADONLY", [toString(this)], nil)
192+ if ($isInstanceOf(aW, "Int"))
193+ then aW
194+ else throw(($getType(aW) + " couldn't be cast to Int"))
183195 }
184196
185-let aS = {
186- let aR = invoke(aO, "getOutFeeREADONLY", [toString(this)], nil)
187- if ($isInstanceOf(aR, "Int"))
188- then aR
189- else throw(($getType(aR) + " couldn't be cast to Int"))
197+let aX = {
198+ let aW = invoke(aT, "getOutFeeREADONLY", [toString(this)], nil)
199+ if ($isInstanceOf(aW, "Int"))
200+ then aW
201+ else throw(($getType(aW) + " couldn't be cast to Int"))
190202 }
191203
192-func aT () = valueOrElse(getBoolean(aO, ax()), false)
204+func aY () = valueOrElse(getBoolean(aT, aC()), false)
193205
194206
195-func aU () = fromBase58String(aH(aO, ap()))
207+func aZ () = fromBase58String(aM(aT, au()))
196208
197209
198-func aV () = {
199- let aW = aH(this, ae())
200- let aX = aH(this, af())
201- let au = aK(aO, av(aX))
202- let at = aK(aO, av(aW))
203- split(aH(aO, as(toString(at), toString(au))), j)
210+func ba () = {
211+ let bb = aM(this, ae())
212+ let bc = aM(this, af())
213+ let az = aP(aT, aA(bc))
214+ let ay = aP(aT, aA(bb))
215+ split(aM(aT, ax(toString(ay), toString(az))), j)
204216 }
205217
206218
207-func aY (aZ) = if ((aZ == i))
219+func bd (be) = if ((be == i))
208220 then unit
209- else fromBase58String(aZ)
221+ else fromBase58String(be)
210222
211223
212-func ba (aZ) = if ((aZ == unit))
224+func bf (be) = if ((be == unit))
213225 then i
214- else toBase58String(value(aZ))
226+ else toBase58String(value(be))
215227
216228
217-func bb (bc) = $Tuple7(addressFromStringValue(bc[o]), parseIntValue(bc[p]), fromBase58String(bc[q]), aY(bc[r]), aY(bc[s]), parseIntValue(bc[t]), parseIntValue(bc[u]))
229+func bg (bh) = $Tuple7(addressFromStringValue(bh[o]), parseIntValue(bh[p]), fromBase58String(bh[q]), bd(bh[r]), bd(bh[s]), parseIntValue(bh[t]), parseIntValue(bh[u]))
218230
219231
220-let bd = bb(aV())
232+let bi = bg(ba())
221233
222-let be = bd
234+let bj = bi
223235
224-let bf = be._1
236+let bk = bj._1
225237
226-let bg = be._2
238+let bl = bj._2
227239
228-let bh = be._3
240+let bm = bj._3
229241
230-let bi = be._4
242+let bn = bj._4
231243
232-let bj = be._5
244+let bo = bj._5
233245
234-let bk = be._6
246+let bp = bj._6
235247
236-let bl = be._7
248+let bq = bj._7
237249
238-func bm () = split(aH(aO, ao()), j)
250+func br () = split(aM(aT, at()), j)
239251
240252
241-let bn = valueOrErrorMessage(addressFromString(bm()[B]), "incorrect staking address")
253+let bs = valueOrErrorMessage(addressFromString(br()[B]), "incorrect staking address")
242254
243-let bo = valueOrErrorMessage(addressFromString(bm()[C]), "incorrect staking address")
255+let bt = valueOrErrorMessage(addressFromString(br()[C]), "incorrect staking address")
244256
245-func bp (bq,br,bs,bt,bu,bv,bw,bx,by,bz) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz)], j)
257+func bu (bv,bw,bx,by,bz,bA,bB,bC,bD,bE) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE)], j)
246258
247259
248-func bA (bB,bC,bD,bt,bw,bx) = makeString(["%d%d%d%d%d%d", toString(bB), toString(bC), toString(bD), toString(bt), toString(bw), toString(bx)], j)
260+func bF (bG,bH,bI,by,bB,bC) = makeString(["%d%d%d%d%d%d", toString(bG), toString(bH), toString(bI), toString(by), toString(bB), toString(bC)], j)
249261
250262
251-func bE (bF) = if ((bF == "WAVES"))
252- then wavesBalance(this).available
253- else assetBalance(this, fromBase58String(bF))
254-
255-
256-func bG (bH,bI) = fraction(bH, d, bI)
257-
258-
259-func bJ (bH,bI,L) = fraction(bH, d, bI, L)
260-
261-
262-func bK (bL,bM,bN,bO) = {
263- let bP = D(bN, bL)
264- let bQ = D(bO, bM)
265- bG(bQ, bP)
263+func bJ (ap) = {
264+ let bK = if ((ap == "WAVES"))
265+ then wavesBalance(this).available
266+ else assetBalance(this, fromBase58String(ap))
267+ let bL = ((bK + ar(ap)) - as(ap))
268+ max([0, bL])
266269 }
267270
268271
269-func bR (bN,bO,bS) = {
270- let bT = aV()
271- let bU = parseIntValue(bT[t])
272- let bV = parseIntValue(bT[u])
273- let bW = bK(bU, bV, bN, bO)
274- let bI = D(bN, bU)
275- let bH = D(bO, bV)
276- let bX = D(bS, b)
277- let bY = bG(bI, bX)
278- let bZ = bG(bH, bX)
279-[bW, bY, bZ]
272+func bM (bN,bO) = fraction(bN, d, bO)
273+
274+
275+func bP (bN,bO,L) = fraction(bN, d, bO, L)
276+
277+
278+func bQ (bR) = {
279+ let bS = invoke(bR, "getRate", nil, nil)
280+ if ((bS == bS))
281+ then {
282+ let bT = bS
283+ if ($isInstanceOf(bT, "Int"))
284+ then {
285+ let bU = bT
286+ bU
287+ }
288+ else aQ("proxy.getRate() unexpected value")
289+ }
290+ else throw("Strict value is not equal to itself.")
280291 }
281292
282293
283-func ca (bN,bO,bS) = {
284- let cb = bR(bN, bO, bS)
285-[H(cb[0], b), H(cb[1], b), H(cb[2], b)]
286- }
287-
288-
289-func cc (cd,ce,cf,ab) = {
290- let bT = aV()
291- let cg = bT[q]
292- let ch = bT[r]
293- let ci = bT[s]
294- let bL = parseIntValue(bT[t])
295- let bM = parseIntValue(bT[u])
296- let cj = bT[p]
297- let ck = valueOrErrorMessage(assetInfo(fromBase58String(cg)), (("Asset " + cg) + " doesn't exist")).quantity
298- if ((cg != ce))
299- then throw("Invalid asset passed.")
300- else {
301- let cl = bE(ch)
302- let cm = D(cl, bL)
303- let cn = bE(ci)
304- let co = D(cn, bM)
305- let cp = bG(co, cm)
306- let cq = H(cp, b)
307- let cr = D(cf, b)
308- let cs = D(ck, b)
309- let ct = fraction(cm, cr, cs)
310- let cu = fraction(co, cr, cs)
311- let cv = K(ct, bL, FLOOR)
312- let cw = K(cu, bM, FLOOR)
313- let cx = if ((cd == ""))
314- then nil
315- else [ScriptTransfer(ab, cv, if ((ch == "WAVES"))
316- then unit
317- else fromBase58String(ch)), ScriptTransfer(ab, cw, if ((ci == "WAVES"))
318- then unit
319- else fromBase58String(ci)), StringEntry(ad(toString(ab), cd), bA(cv, cw, cf, cq, height, lastBlock.timestamp)), IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq)]
320- $Tuple10(cv, cw, ch, ci, cl, cn, ck, cp, cj, cx)
321- }
322- }
323-
324-
325-func cy (cd,cz,cA,cB,cC,cD,ab,cE,cF) = {
326- let bT = aV()
327- let cg = fromBase58String(bT[q])
328- let cG = bT[r]
329- let cH = bT[s]
330- let cI = bT[v]
331- let cJ = bT[w]
332- let bU = parseIntValue(bT[t])
333- let bV = parseIntValue(bT[u])
334- let cj = bT[p]
335- let ck = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
336- let cK = toBase58String(valueOrElse(cB, fromBase58String("WAVES")))
337- let cL = toBase58String(valueOrElse(cD, fromBase58String("WAVES")))
338- if (if ((cG != cK))
339- then true
340- else (cH != cL))
341- then throw("Invalid amt or price asset passed.")
342- else {
343- let cl = if (cE)
344- then bE(cG)
345- else (bE(cG) - cA)
346- let cn = if (cE)
347- then bE(cH)
348- else (bE(cH) - cC)
349- let cM = D(cA, bU)
350- let cN = D(cC, bV)
351- let cO = bG(cN, cM)
352- let cm = D(cl, bU)
353- let co = D(cn, bV)
354- let cP = if ((ck == 0))
294+func bV (ap,bW,bX,bR) = {
295+ let bY = ar(ap)
296+ if ((bY == bY))
297+ then {
298+ let bZ = as(bX)
299+ if ((bZ == bZ))
355300 then {
356- let cp = e
357- let cQ = e
358- let bX = pow((cM * cN), 0, toBigInt(5), 1, 0, DOWN)
359- $Tuple5(H(bX, b), H(cM, bU), H(cN, bV), bG((co + cN), (cm + cM)), cQ)
301+ let ca = bd(ap)
302+ if ((bW > 0))
303+ then {
304+ let cb = invoke(bR, "deposit", nil, [AttachedPayment(ca, bW)])
305+ if ((cb == cb))
306+ then {
307+ let bT = cb
308+ if ($isInstanceOf(bT, "Int"))
309+ then {
310+ let cc = bT
311+ let cd = (bY + bW)
312+ let ce = (bZ + cc)
313+[IntegerEntry(ao(ap), cd), IntegerEntry(aq(bX), ce)]
314+ }
315+ else nil
316+ }
317+ else throw("Strict value is not equal to itself.")
318+ }
319+ else nil
360320 }
361- else {
362- let cp = bG(co, cm)
363- let cQ = fraction(R((cp - cO)), d, cp)
364- let cR = D(cz, b)
365- if (if ((cp != e))
366- then (cQ > cR)
367- else false)
368- then throw(((("Price slippage " + toString(cQ)) + " exceeded the passed limit of ") + toString(cR)))
369- else {
370- let cs = D(ck, b)
371- let cS = fraction(cM, bJ(co, cm, CEILING), d, CEILING)
372- let cT = fraction(cN, d, bJ(co, cm, FLOOR), CEILING)
373- let cU = if ((cS > cN))
374- then $Tuple2(cT, cN)
375- else $Tuple2(cM, cS)
376- let cV = cU._1
377- let cW = cU._2
378- let bX = fraction(cs, cW, co, FLOOR)
379- $Tuple5(K(bX, b, FLOOR), K(cV, bU, CEILING), K(cW, bV, CEILING), cp, cQ)
380- }
381- }
382- let cX = cP._1
383- let cY = cP._2
384- let cZ = cP._3
385- let cq = H(cP._4, b)
386- let da = H(cP._5, b)
387- if ((0 >= cX))
388- then throw("Invalid calculations. LP calculated is less than zero.")
389- else {
390- let db = if (!(cF))
391- then 0
392- else cX
393- let dc = (cA - cY)
394- let dd = (cC - cZ)
395- let de = [IntegerEntry(W(), cq), IntegerEntry(X(height, lastBlock.timestamp), cq), StringEntry(aa(ab, cd), bp(cY, cZ, db, cq, cz, da, height, lastBlock.timestamp, dc, dd))]
396- $Tuple13(cX, db, cq, cl, cn, ck, cg, cj, de, dc, dd, cB, cD)
397- }
398- }
399- }
400-
401-
402-func df (dg,dh,ck) = {
403- let di = G(dg, toBigInt(bk))
404- let dj = G(dh, toBigInt(bl))
405- let dk = fraction(pow((di * dj), 0, toBigInt(5), 1, 18, DOWN), g, ck)
406- if ((ck == f))
407- then f
408- else dk
409- }
410-
411-
412-func dl (dm,dn,do) = {
413- let dp = (toBigInt(bE(ba(bi))) - dm)
414- let dq = (toBigInt(bE(ba(bj))) - dn)
415- let dr = (toBigInt(value(assetInfo(bh)).quantity) - do)
416- let ds = df(dp, dq, dr)
417- ds
418- }
419-
420-
421-func dt (du,dv,do) = {
422- let dp = (bE(ba(bi)) + du)
423- let dq = (bE(ba(bj)) + dv)
424- let dr = (value(assetInfo(bh)).quantity + do)
425- let dk = df(toBigInt(dp), toBigInt(dq), toBigInt(dr))
426- let dw = [IntegerEntry(ak, height), StringEntry(aj, toString(dk))]
427- $Tuple2(dw, dk)
428- }
429-
430-
431-func dx (dy,dk) = if ((dk >= dy))
432- then true
433- else aL(makeString(["updated KLp lower than current KLp", toString(dy), toString(dk)], " "))
434-
435-
436-func dz (dA) = {
437- let dp = bE(ba(bi))
438- let dq = bE(ba(bj))
439- let dB = dA.amount
440- let dC = fraction(dA.amount, dA.price, b, FLOOR)
441- let dD = if ((dA.orderType == Buy))
442- then $Tuple2(dB, -(dC))
443- else $Tuple2(-(dB), dC)
444- let du = dD._1
445- let dv = dD._2
446- if (if (if (aT())
447- then true
448- else (bg == m))
449- then true
450- else (bg == n))
451- then throw("Exchange operations disabled")
452- else if (if ((dA.assetPair.amountAsset != bi))
453- then true
454- else (dA.assetPair.priceAsset != bj))
455- then throw("Wrong order assets.")
456- else {
457- let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
458- let dF = dt(du, dv, 0)
459- let dG = dF._1
460- let dH = dF._2
461- let dI = (dH >= dE)
462- let dJ = makeString(["kLp=", toString(dE), " kLpNew=", toString(dH), " amountAssetBalance=", toString(dp), " priceAssetBalance=", toString(dq), " amountAssetBalanceDelta=", toString(du), " priceAssetBalanceDelta=", toString(dv), " height=", toString(height)], "")
463- $Tuple2(dI, dJ)
464- }
465- }
466-
467-
468-func dK (dL) = if ((size(dL.payments) != 1))
469- then throw("exactly 1 payment is expected")
470- else {
471- let dM = value(dL.payments[0])
472- let ce = value(dM.assetId)
473- let dN = dM.amount
474- let cP = cc(toBase58String(dL.transactionId), toBase58String(ce), dN, dL.caller)
475- let cv = cP._1
476- let cw = cP._2
477- let cj = parseIntValue(cP._9)
478- let cx = cP._10
479- if (if (aT())
480- then true
481- else (cj == n))
482- then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
483- else $Tuple5(cv, cw, dN, ce, cx)
484- }
485-
486-
487-func dO (dL,cz,cF) = if ((size(dL.payments) != 2))
488- then throw("exactly 2 payments are expected")
489- else {
490- let dP = value(dL.payments[0])
491- let dQ = value(dL.payments[1])
492- let dR = cy(toBase58String(dL.transactionId), cz, dP.amount, dP.assetId, dQ.amount, dQ.assetId, toString(dL.caller), false, cF)
493- let cj = parseIntValue(dR._8)
494- if (if (if (aT())
495- then true
496- else (cj == l))
497- then true
498- else (cj == n))
499- then throw(("Put operation is blocked by admin. Status = " + toString(cj)))
500- else dR
501- }
502-
503-
504-func dS (dT) = {
505- let dU = invoke(aO, "emit", [dT], nil)
506- if ((dU == dU))
507- then {
508- let dV = {
509- let dW = dU
510- if ($isInstanceOf(dW, "Address"))
511- then {
512- let dX = dW
513- invoke(dX, "emit", [dT], nil)
514- }
515- else unit
516- }
517- if ((dV == dV))
518- then dT
519321 else throw("Strict value is not equal to itself.")
520322 }
521323 else throw("Strict value is not equal to itself.")
522324 }
523325
524326
525-func dY (dT,ai) = {
526- let dZ = if ((ai == 0))
527- then 0
528- else fraction(dT, ai, b)
529- $Tuple2((dT - dZ), dZ)
530- }
531-
532-
533-func ea (eb,ec,ab,ac) = {
534- let ed = (ac == unit)
535- let ee = bE(ba(bi))
536- let ef = bE(ba(bj))
537- let eg = if ((ec == bi))
538- then true
539- else if ((ec == bj))
540- then false
541- else aL("invalid asset")
542- let eh = if (ed)
543- then $Tuple2(ee, ef)
544- else if (eg)
545- then $Tuple2((ee - eb), ef)
546- else $Tuple2(ee, (ef - eb))
547- let ei = eh._1
548- let ej = eh._2
549- let ek = if (eg)
550- then $Tuple2(eb, 0)
551- else $Tuple2(0, eb)
552- let el = ek._1
553- let em = ek._2
554- let dB = dY(el, aQ)._1
555- let dC = dY(em, aQ)._1
556- let en = dY(eb, aQ)
557- let eo = en._1
558- let dZ = en._2
559- let ep = (ei + dB)
560- let eq = (ej + dC)
561- let er = bG(D(eq, bl), D(ep, bk))
562- let es = H(er, b)
563- let et = if (eg)
564- then ei
565- else ej
566- let eu = toBigInt(et)
567- let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
568- let ew = if ((ev > f))
569- then true
570- else aL("initial deposit requires all coins")
571- if ((ew == ew))
327+func cf (ap,bW,bX,bR,cg,ch) = {
328+ let bY = ar(ap)
329+ if ((bY == bY))
572330 then {
573- let ex = toBigInt(eo)
574- let ey = max([0, toInt(((ev * (sqrtBigInt((d + ((ex * d) / eu)), 18, 18, DOWN) - d)) / d))])
575- let de = if (ed)
576- then nil
577- else [IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bp(el, em, ey, es, 0, 0, height, lastBlock.timestamp, 0, 0))]
578- let ez = bG(D(ej, bl), D(ei, bk))
579- let eA = H(ez, b)
580- let eB = {
581- let eC = if (eg)
582- then $Tuple2(el, ei)
583- else $Tuple2(em, ej)
584- let dT = eC._1
585- let eD = eC._2
586- let eE = toInt(fraction(ev, toBigInt((dT / 2)), toBigInt(eD)))
587- fraction((ey - eE), b, eE)
588- }
589- $Tuple5(ey, de, dZ, eB, eg)
331+ let bZ = as(bX)
332+ if ((bZ == bZ))
333+ then {
334+ let ci = bQ(bR)
335+ if ((ci == ci))
336+ then {
337+ let cj = fraction(cg, bY, bZ)
338+ let ck = bd(bX)
339+ let cl = fraction(cg, bW, cj)
340+ let cm = fraction(cg, bW, ci)
341+ let cn = max([0, (cl - cm)])
342+ if ((cm > 0))
343+ then {
344+ let co = invoke(bR, "withdraw", nil, [AttachedPayment(ck, cm)])
345+ if ((co == co))
346+ then {
347+ let bT = co
348+ if ($isInstanceOf(bT, "Int"))
349+ then {
350+ let cp = bT
351+ let cd = (bY - cp)
352+ let ce = ((bZ - cm) - cn)
353+[IntegerEntry(ao(ap), cd), IntegerEntry(aq(bX), ce), ScriptTransfer(ch, cn, bd(bX))]
354+ }
355+ else nil
356+ }
357+ else throw("Strict value is not equal to itself.")
358+ }
359+ else nil
360+ }
361+ else throw("Strict value is not equal to itself.")
362+ }
363+ else throw("Strict value is not equal to itself.")
590364 }
591365 else throw("Strict value is not equal to itself.")
592366 }
593367
594368
595-func eF (eG,eo,ec,ab,ac) = {
596- let ed = (ac == unit)
597- let bT = aV()
598- let bU = parseIntValue(bT[t])
599- let bV = parseIntValue(bT[u])
600- let eH = [if ((ec == bh))
601- then true
602- else aL("invalid lp asset")]
603- if ((eH == eH))
369+func cq (ap) = {
370+ let bT = invoke(aT, "getPoolLeaseConfigREADONLY", [toString(this), ap], nil)
371+ if ($isInstanceOf(bT, "(Boolean, Int, Int, String, String, Int, String)"))
604372 then {
605- let eI = if ((eG == bi))
606- then true
607- else if ((eG == bj))
608- then false
609- else aL("invalid asset")
610- let eJ = if (eI)
611- then toBigInt(bE(ba(bi)))
612- else toBigInt(bE(ba(bj)))
613- let eK = if (eI)
614- then bU
615- else bV
616- let eL = bE(ba(bi))
617- let eM = bE(ba(bj))
618- let eN = if (eI)
619- then eL
620- else eM
621- let eO = toBigInt(eN)
622- let ev = toBigInt(valueOrErrorMessage(assetInfo(bh), (("asset " + toBase58String(bh)) + " doesn't exist")).quantity)
623- let eP = toBigInt(eo)
624- let eQ = max([0, toInt(((eJ * (d - pow((d - ((eP * d) / ev)), 18, h, 0, 18, DOWN))) / d))])
625- let eR = dY(eQ, aS)
626- let eS = eR._1
627- let dZ = eR._2
628- let eT = if (eI)
629- then $Tuple4(eS, 0, (eL - eQ), eM)
630- else $Tuple4(0, eS, eL, (eM - eQ))
631- let eU = eT._1
632- let eV = eT._2
633- let eW = eT._3
634- let eX = eT._4
635- let er = bG(D(eX, bl), D(eW, bk))
636- let es = H(er, b)
637- let de = if (ed)
638- then nil
639- else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bA(eU, eV, eo, es, height, lastBlock.timestamp)), IntegerEntry(W(), es), IntegerEntry(X(height, lastBlock.timestamp), es)]
640- let ez = bG(D(eM, bl), D(eL, bk))
641- let eA = H(ez, b)
642- let eB = {
643- let eY = (toInt(fraction(eJ, eP, ev)) * 2)
644- fraction((eS - eY), b, eY)
645- }
646- $Tuple5(eS, de, dZ, eB, eI)
373+ let cr = bT
374+ cr
375+ }
376+ else aQ((("[" + ap) + "] getLeaseProxyConfig() error"))
377+ }
378+
379+
380+func cs (ct,ap,bX,cu,bR,cg,ch) = {
381+ let bY = ar(ap)
382+ if ((bY == bY))
383+ then {
384+ let bZ = as(bX)
385+ if ((bZ == bZ))
386+ then {
387+ let cv = {
388+ let bT = bd(ap)
389+ if ($isInstanceOf(bT, "ByteVector"))
390+ then {
391+ let cw = bT
392+ assetBalance(this, cw)
393+ }
394+ else if ($isInstanceOf(bT, "Unit"))
395+ then {
396+ let cx = bT
397+ wavesBalance(this).available
398+ }
399+ else throw("Match error")
400+ }
401+ if ((cv == cv))
402+ then {
403+ let cy = max([0, ((cv + bY) - cu)])
404+ let cz = fraction(ct, cy, 100)
405+ let cA = (bY - cz)
406+ if ((cA == 0))
407+ then nil
408+ else if ((0 > cA))
409+ then {
410+ let cB = -(cA)
411+ bV(ap, cB, bX, bR)
412+ }
413+ else {
414+ let cC = cA
415+ cf(ap, cC, bX, bR, cg, ch)
416+ }
417+ }
418+ else throw("Strict value is not equal to itself.")
419+ }
420+ else throw("Strict value is not equal to itself.")
647421 }
648422 else throw("Strict value is not equal to itself.")
649423 }
650424
651425
652-func eZ () = {
653- let dW = getString(U())
654- if ($isInstanceOf(dW, "String"))
426+func cD (ap) = {
427+ let cE = cq(ap)
428+ let cF = cE._1
429+ let cG = cE._2
430+ let cu = cE._3
431+ let cH = cE._4
432+ let cI = cE._5
433+ let cg = cE._6
434+ let cJ = cE._7
435+ if (cF)
436+ then cs(cG, ap, cI, cu, addressFromStringValue(cH), cg, addressFromStringValue(cJ))
437+ else nil
438+ }
439+
440+
441+func cK (ap,cL) = {
442+ let cM = cq(ap)
443+ let cF = cM._1
444+ let cG = cM._2
445+ let cu = cM._3
446+ let cH = cM._4
447+ let cI = cM._5
448+ let cg = cM._6
449+ let cJ = cM._7
450+ if (cF)
655451 then {
656- let fa = dW
657- fromBase58String(fa)
452+ let cN = max([0, ((bJ(ap) - cL) - cu)])
453+ if ((cN == cN))
454+ then {
455+ let cd = fraction(cG, cN, 100)
456+ if ((cd == cd))
457+ then {
458+ let cO = max([0, (ar(ap) - cd)])
459+ if ((cO == cO))
460+ then cf(ap, cO, cI, addressFromStringValue(cH), cg, addressFromStringValue(cJ))
461+ else throw("Strict value is not equal to itself.")
462+ }
463+ else throw("Strict value is not equal to itself.")
464+ }
465+ else throw("Strict value is not equal to itself.")
658466 }
659- else if ($isInstanceOf(dW, "Unit"))
467+ else nil
468+ }
469+
470+
471+func cP (cQ,cR,cS,cT) = {
472+ let cU = D(cS, cQ)
473+ let cV = D(cT, cR)
474+ bM(cV, cU)
475+ }
476+
477+
478+func cW (cS,cT,cX) = {
479+ let cY = ba()
480+ let cZ = parseIntValue(cY[t])
481+ let da = parseIntValue(cY[u])
482+ let db = cP(cZ, da, cS, cT)
483+ let bO = D(cS, cZ)
484+ let bN = D(cT, da)
485+ let dc = D(cX, b)
486+ let dd = bM(bO, dc)
487+ let de = bM(bN, dc)
488+[db, dd, de]
489+ }
490+
491+
492+func df (cS,cT,cX) = {
493+ let dg = cW(cS, cT, cX)
494+[H(dg[0], b), H(dg[1], b), H(dg[2], b)]
495+ }
496+
497+
498+func dh (di,dj,dk,ab) = {
499+ let cY = ba()
500+ let dl = cY[q]
501+ let dm = cY[r]
502+ let dn = cY[s]
503+ let cQ = parseIntValue(cY[t])
504+ let cR = parseIntValue(cY[u])
505+ let do = cY[p]
506+ let dp = valueOrErrorMessage(assetInfo(fromBase58String(dl)), (("Asset " + dl) + " doesn't exist")).quantity
507+ if ((dl != dj))
508+ then throw("Invalid asset passed.")
509+ else {
510+ let dq = bJ(dm)
511+ let dr = D(dq, cQ)
512+ let ds = bJ(dn)
513+ let dt = D(ds, cR)
514+ let du = bM(dt, dr)
515+ let dv = H(du, b)
516+ let dw = D(dk, b)
517+ let dx = D(dp, b)
518+ let dy = fraction(dr, dw, dx)
519+ let dz = fraction(dt, dw, dx)
520+ let dA = K(dy, cQ, FLOOR)
521+ let dB = K(dz, cR, FLOOR)
522+ let dC = cK(dm, dA)
523+ if ((dC == dC))
524+ then {
525+ let dD = cK(dn, dB)
526+ if ((dD == dD))
527+ then {
528+ let dE = if ((di == ""))
529+ then nil
530+ else ((dC ++ dD) ++ [ScriptTransfer(ab, dA, if ((dm == "WAVES"))
531+ then unit
532+ else fromBase58String(dm)), ScriptTransfer(ab, dB, if ((dn == "WAVES"))
533+ then unit
534+ else fromBase58String(dn)), StringEntry(ad(toString(ab), di), bF(dA, dB, dk, dv, height, lastBlock.timestamp)), IntegerEntry(W(), dv), IntegerEntry(X(height, lastBlock.timestamp), dv)])
535+ $Tuple10(dA, dB, dm, dn, dq, ds, dp, du, do, dE)
536+ }
537+ else throw("Strict value is not equal to itself.")
538+ }
539+ else throw("Strict value is not equal to itself.")
540+ }
541+ }
542+
543+
544+func dF (di,dG,dH,dI,dJ,dK,ab,dL,dM) = {
545+ let cY = ba()
546+ let dl = fromBase58String(cY[q])
547+ let dN = cY[r]
548+ let dO = cY[s]
549+ let dP = cY[v]
550+ let dQ = cY[w]
551+ let cZ = parseIntValue(cY[t])
552+ let da = parseIntValue(cY[u])
553+ let do = cY[p]
554+ let dp = valueOrErrorMessage(assetInfo(dl), (("Asset " + toBase58String(dl)) + " doesn't exist")).quantity
555+ let dR = toBase58String(valueOrElse(dI, fromBase58String("WAVES")))
556+ let dS = toBase58String(valueOrElse(dK, fromBase58String("WAVES")))
557+ if (if ((dN != dR))
558+ then true
559+ else (dO != dS))
560+ then throw("Invalid amt or price asset passed.")
561+ else {
562+ let dq = if (dL)
563+ then bJ(dN)
564+ else (bJ(dN) - dH)
565+ let ds = if (dL)
566+ then bJ(dO)
567+ else (bJ(dO) - dJ)
568+ let dT = D(dH, cZ)
569+ let dU = D(dJ, da)
570+ let dV = bM(dU, dT)
571+ let dr = D(dq, cZ)
572+ let dt = D(ds, da)
573+ let dW = if ((dp == 0))
574+ then {
575+ let du = e
576+ let dX = e
577+ let dc = pow((dT * dU), 0, toBigInt(5), 1, 0, DOWN)
578+ $Tuple5(H(dc, b), H(dT, cZ), H(dU, da), bM((dt + dU), (dr + dT)), dX)
579+ }
580+ else {
581+ let du = bM(dt, dr)
582+ let dX = fraction(R((du - dV)), d, du)
583+ let dY = D(dG, b)
584+ if (if ((du != e))
585+ then (dX > dY)
586+ else false)
587+ then throw(((("Price slippage " + toString(dX)) + " exceeded the passed limit of ") + toString(dY)))
588+ else {
589+ let dx = D(dp, b)
590+ let dZ = fraction(dT, bP(dt, dr, CEILING), d, CEILING)
591+ let ea = fraction(dU, d, bP(dt, dr, FLOOR), CEILING)
592+ let eb = if ((dZ > dU))
593+ then $Tuple2(ea, dU)
594+ else $Tuple2(dT, dZ)
595+ let ec = eb._1
596+ let ed = eb._2
597+ let dc = fraction(dx, ed, dt, FLOOR)
598+ $Tuple5(K(dc, b, FLOOR), K(ec, cZ, CEILING), K(ed, da, CEILING), du, dX)
599+ }
600+ }
601+ let ee = dW._1
602+ let ef = dW._2
603+ let eg = dW._3
604+ let dv = H(dW._4, b)
605+ let eh = H(dW._5, b)
606+ if ((0 >= ee))
607+ then throw("Invalid calculations. LP calculated is less than zero.")
608+ else {
609+ let ei = if (!(dM))
610+ then 0
611+ else ee
612+ let ej = (dH - ef)
613+ let ek = (dJ - eg)
614+ let el = [IntegerEntry(W(), dv), IntegerEntry(X(height, lastBlock.timestamp), dv), StringEntry(aa(ab, di), bu(ef, eg, ei, dv, dG, eh, height, lastBlock.timestamp, ej, ek))]
615+ $Tuple13(ee, ei, dv, dq, ds, dp, dl, do, el, ej, ek, dI, dK)
616+ }
617+ }
618+ }
619+
620+
621+func em (en,eo,dp) = {
622+ let ep = G(en, toBigInt(bp))
623+ let eq = G(eo, toBigInt(bq))
624+ let er = fraction(pow((ep * eq), 0, toBigInt(5), 1, 18, DOWN), g, dp)
625+ if ((dp == f))
626+ then f
627+ else er
628+ }
629+
630+
631+func es (et,eu,ev) = {
632+ let ew = (toBigInt(bJ(bf(bn))) - et)
633+ let ex = (toBigInt(bJ(bf(bo))) - eu)
634+ let ey = (toBigInt(value(assetInfo(bm)).quantity) - ev)
635+ let ez = em(ew, ex, ey)
636+ ez
637+ }
638+
639+
640+func eA (eB,eC,ev) = {
641+ let ew = (bJ(bf(bn)) + eB)
642+ let ex = (bJ(bf(bo)) + eC)
643+ let ey = (value(assetInfo(bm)).quantity + ev)
644+ let er = em(toBigInt(ew), toBigInt(ex), toBigInt(ey))
645+ let eD = [IntegerEntry(ak, height), StringEntry(aj, toString(er))]
646+ $Tuple2(eD, er)
647+ }
648+
649+
650+func eE (eF,er) = if ((er >= eF))
651+ then true
652+ else aQ(makeString(["updated KLp lower than current KLp", toString(eF), toString(er)], " "))
653+
654+
655+func eG (eH) = {
656+ let ew = bJ(bf(bn))
657+ let ex = bJ(bf(bo))
658+ let eI = eH.amount
659+ let eJ = fraction(eH.amount, eH.price, b, FLOOR)
660+ let eK = if ((eH.orderType == Buy))
661+ then $Tuple2(eI, -(eJ))
662+ else $Tuple2(-(eI), eJ)
663+ let eB = eK._1
664+ let eC = eK._2
665+ if (if (if (aY())
666+ then true
667+ else (bl == m))
668+ then true
669+ else (bl == n))
670+ then throw("Exchange operations disabled")
671+ else if (if ((eH.assetPair.amountAsset != bn))
672+ then true
673+ else (eH.assetPair.priceAsset != bo))
674+ then throw("Wrong order assets.")
675+ else {
676+ let eL = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
677+ let eM = eA(eB, eC, 0)
678+ let eN = eM._1
679+ let eO = eM._2
680+ let eP = (eO >= eL)
681+ let eQ = makeString(["kLp=", toString(eL), " kLpNew=", toString(eO), " amountAssetBalance=", toString(ew), " priceAssetBalance=", toString(ex), " amountAssetBalanceDelta=", toString(eB), " priceAssetBalanceDelta=", toString(eC), " height=", toString(height)], "")
682+ $Tuple2(eP, eQ)
683+ }
684+ }
685+
686+
687+func eR (eS) = if ((size(eS.payments) != 1))
688+ then throw("exactly 1 payment is expected")
689+ else {
690+ let eT = value(eS.payments[0])
691+ let dj = value(eT.assetId)
692+ let eU = eT.amount
693+ let dW = dh(toBase58String(eS.transactionId), toBase58String(dj), eU, eS.caller)
694+ let dA = dW._1
695+ let dB = dW._2
696+ let do = parseIntValue(dW._9)
697+ let dE = dW._10
698+ if (if (aY())
699+ then true
700+ else (do == n))
701+ then throw(("Get operation is blocked by admin. Status = " + toString(do)))
702+ else $Tuple5(dA, dB, eU, dj, dE)
703+ }
704+
705+
706+func eV (eS,dG,dM) = if ((size(eS.payments) != 2))
707+ then throw("exactly 2 payments are expected")
708+ else {
709+ let eW = value(eS.payments[0])
710+ let eX = value(eS.payments[1])
711+ let eY = dF(toBase58String(eS.transactionId), dG, eW.amount, eW.assetId, eX.amount, eX.assetId, toString(eS.caller), false, dM)
712+ let do = parseIntValue(eY._8)
713+ if (if (if (aY())
714+ then true
715+ else (do == l))
716+ then true
717+ else (do == n))
718+ then throw(("Put operation is blocked by admin. Status = " + toString(do)))
719+ else eY
720+ }
721+
722+
723+func eZ (bW) = {
724+ let fa = invoke(aT, "emit", [bW], nil)
725+ if ((fa == fa))
726+ then {
727+ let fb = {
728+ let bT = fa
729+ if ($isInstanceOf(bT, "Address"))
730+ then {
731+ let fc = bT
732+ invoke(fc, "emit", [bW], nil)
733+ }
734+ else unit
735+ }
736+ if ((fb == fb))
737+ then bW
738+ else throw("Strict value is not equal to itself.")
739+ }
740+ else throw("Strict value is not equal to itself.")
741+ }
742+
743+
744+func fd (bW,ai) = {
745+ let fe = if ((ai == 0))
746+ then 0
747+ else fraction(bW, ai, b)
748+ $Tuple2((bW - fe), fe)
749+ }
750+
751+
752+func ff (fg,fh,ab,ac) = {
753+ let fi = (ac == unit)
754+ let fj = bJ(bf(bn))
755+ let fk = bJ(bf(bo))
756+ let fl = if ((fh == bn))
757+ then true
758+ else if ((fh == bo))
759+ then false
760+ else aQ("invalid asset")
761+ let fm = if (fi)
762+ then $Tuple2(fj, fk)
763+ else if (fl)
764+ then $Tuple2((fj - fg), fk)
765+ else $Tuple2(fj, (fk - fg))
766+ let fn = fm._1
767+ let fo = fm._2
768+ let fp = if (fl)
769+ then $Tuple2(fg, 0)
770+ else $Tuple2(0, fg)
771+ let fq = fp._1
772+ let fr = fp._2
773+ let eI = fd(fq, aV)._1
774+ let eJ = fd(fr, aV)._1
775+ let fs = fd(fg, aV)
776+ let ft = fs._1
777+ let fe = fs._2
778+ let fu = (fn + eI)
779+ let fv = (fo + eJ)
780+ let fw = bM(D(fv, bq), D(fu, bp))
781+ let fx = H(fw, b)
782+ let fy = if (fl)
783+ then fn
784+ else fo
785+ let fz = toBigInt(fy)
786+ let fA = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
787+ let fB = if ((fA > f))
788+ then true
789+ else aQ("initial deposit requires all coins")
790+ if ((fB == fB))
791+ then {
792+ let fC = toBigInt(ft)
793+ let fD = max([0, toInt(((fA * (sqrtBigInt((d + ((fC * d) / fz)), 18, 18, DOWN) - d)) / d))])
794+ let el = if (fi)
795+ then nil
796+ else [IntegerEntry(W(), fx), IntegerEntry(X(height, lastBlock.timestamp), fx), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bu(fq, fr, fD, fx, 0, 0, height, lastBlock.timestamp, 0, 0))]
797+ let fE = bM(D(fo, bq), D(fn, bp))
798+ let fF = H(fE, b)
799+ let fG = {
800+ let fH = if (fl)
801+ then $Tuple2(fq, fn)
802+ else $Tuple2(fr, fo)
803+ let bW = fH._1
804+ let fI = fH._2
805+ let fJ = toInt(fraction(fA, toBigInt((bW / 2)), toBigInt(fI)))
806+ fraction((fD - fJ), b, fJ)
807+ }
808+ $Tuple5(fD, el, fe, fG, fl)
809+ }
810+ else throw("Strict value is not equal to itself.")
811+ }
812+
813+
814+func fK (fL,ft,fh,ab,ac) = {
815+ let fi = (ac == unit)
816+ let cY = ba()
817+ let cZ = parseIntValue(cY[t])
818+ let da = parseIntValue(cY[u])
819+ let fM = [if ((fh == bm))
820+ then true
821+ else aQ("invalid lp asset")]
822+ if ((fM == fM))
823+ then {
824+ let fN = if ((fL == bn))
825+ then true
826+ else if ((fL == bo))
827+ then false
828+ else aQ("invalid asset")
829+ let fO = if (fN)
830+ then toBigInt(bJ(bf(bn)))
831+ else toBigInt(bJ(bf(bo)))
832+ let fP = if (fN)
833+ then cZ
834+ else da
835+ let fQ = bJ(bf(bn))
836+ let fR = bJ(bf(bo))
837+ let fS = if (fN)
838+ then fQ
839+ else fR
840+ let fT = toBigInt(fS)
841+ let fA = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
842+ let fU = toBigInt(ft)
843+ let fV = max([0, toInt(((fO * (d - pow((d - ((fU * d) / fA)), 18, h, 0, 18, DOWN))) / d))])
844+ let fW = fd(fV, aX)
845+ let fX = fW._1
846+ let fe = fW._2
847+ let fY = if (fN)
848+ then $Tuple4(fX, 0, (fQ - fV), fR)
849+ else $Tuple4(0, fX, fQ, (fR - fV))
850+ let fZ = fY._1
851+ let ga = fY._2
852+ let gb = fY._3
853+ let gc = fY._4
854+ let fw = bM(D(gc, bq), D(gb, bp))
855+ let fx = H(fw, b)
856+ let el = if (fi)
857+ then nil
858+ else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bF(fZ, ga, ft, fx, height, lastBlock.timestamp)), IntegerEntry(W(), fx), IntegerEntry(X(height, lastBlock.timestamp), fx)]
859+ let fE = bM(D(fR, bq), D(fQ, bp))
860+ let fF = H(fE, b)
861+ let fG = {
862+ let gd = (toInt(fraction(fO, fU, fA)) * 2)
863+ fraction((fX - gd), b, gd)
864+ }
865+ $Tuple5(fX, el, fe, fG, fN)
866+ }
867+ else throw("Strict value is not equal to itself.")
868+ }
869+
870+
871+func ge () = {
872+ let bT = getString(U())
873+ if ($isInstanceOf(bT, "String"))
874+ then {
875+ let gf = bT
876+ fromBase58String(gf)
877+ }
878+ else if ($isInstanceOf(bT, "Unit"))
660879 then unit
661880 else throw("Match error")
662881 }
663882
664883
665-func fb () = {
666- let dW = getString(V())
667- if ($isInstanceOf(dW, "String"))
884+func gg () = {
885+ let bT = getString(V())
886+ if ($isInstanceOf(bT, "String"))
668887 then {
669- let fa = dW
670- fromBase58String(fa)
888+ let gf = bT
889+ fromBase58String(gf)
671890 }
672- else if ($isInstanceOf(dW, "Unit"))
891+ else if ($isInstanceOf(bT, "Unit"))
673892 then unit
674893 else throw("Match error")
675894 }
676895
677896
678-func fc (dL) = {
679- let dW = eZ()
680- if ($isInstanceOf(dW, "ByteVector"))
897+func gh (eS) = {
898+ let bT = ge()
899+ if ($isInstanceOf(bT, "ByteVector"))
681900 then {
682- let fd = dW
683- (dL.callerPublicKey == fd)
901+ let gi = bT
902+ (eS.callerPublicKey == gi)
684903 }
685- else if ($isInstanceOf(dW, "Unit"))
686- then (dL.caller == this)
904+ else if ($isInstanceOf(bT, "Unit"))
905+ then (eS.caller == this)
687906 else throw("Match error")
688907 }
689908
690909
691-func fe (dL) = {
692- let ff = throw("Permission denied")
693- let dW = eZ()
694- if ($isInstanceOf(dW, "ByteVector"))
910+func gj (eS) = {
911+ let gk = throw("Permission denied")
912+ let bT = ge()
913+ if ($isInstanceOf(bT, "ByteVector"))
695914 then {
696- let fd = dW
697- if ((dL.callerPublicKey == fd))
915+ let gi = bT
916+ if ((eS.callerPublicKey == gi))
698917 then true
699- else ff
918+ else gk
700919 }
701- else if ($isInstanceOf(dW, "Unit"))
702- then if ((dL.caller == this))
920+ else if ($isInstanceOf(bT, "Unit"))
921+ then if ((eS.caller == this))
703922 then true
704- else ff
923+ else gk
705924 else throw("Match error")
706925 }
707926
708927
709-@Callable(dL)
710-func calculateAmountOutForSwapREADONLY (fg,fh,fi) = {
711- let fj = if ((fh == false))
928+@Callable(eS)
929+func rebalance () = (cD(aM(this, ae())) ++ cD(aM(this, af())))
930+
931+
932+
933+@Callable(eS)
934+func calculateAmountOutForSwapREADONLY (gl,gm,gn) = {
935+ let go = if ((gm == false))
712936 then {
713- let fk = aH(this, af())
714- let fl = aH(this, ae())
715- $Tuple2(fk, fl)
937+ let gp = aM(this, af())
938+ let gq = aM(this, ae())
939+ $Tuple2(gp, gq)
716940 }
717941 else {
718- let fk = aH(this, ae())
719- let fl = aH(this, af())
720- $Tuple2(fk, fl)
942+ let gp = aM(this, ae())
943+ let gq = aM(this, af())
944+ $Tuple2(gp, gq)
721945 }
722- let fk = fj._1
723- let fl = fj._2
724- let fm = bE(fl)
725- let fn = bE(fk)
726- let fo = fraction(fn, fg, (fm + fg))
727- let fp = (toBigInt(fm) * toBigInt(fn))
728- let fq = (((toBigInt(bE(fl)) + toBigInt(fg)) + toBigInt(fi)) * (toBigInt(bE(fk)) - toBigInt(fo)))
729- let fr = if ((fq >= fp))
946+ let gp = go._1
947+ let gq = go._2
948+ let gr = bJ(gq)
949+ let gs = bJ(gp)
950+ let gt = fraction(gs, gl, (gr + gl))
951+ let gu = (toBigInt(gr) * toBigInt(gs))
952+ let gv = (((toBigInt(bJ(gq)) + toBigInt(gl)) + toBigInt(gn)) * (toBigInt(bJ(gp)) - toBigInt(gt)))
953+ let gw = if ((gv >= gu))
730954 then true
731955 else throw("new K is fewer error")
732- if ((fr == fr))
733- then $Tuple2(nil, fo)
956+ if ((gw == gw))
957+ then $Tuple2(nil, gt)
734958 else throw("Strict value is not equal to itself.")
735959 }
736960
737961
738962
739-@Callable(dL)
740-func calculateAmountOutForSwapAndSendTokens (fg,fh,fs,ft,fi) = {
741- let fu = {
742- let aR = invoke(aO, "getSwapContractREADONLY", nil, nil)
743- if ($isInstanceOf(aR, "String"))
744- then aR
745- else throw(($getType(aR) + " couldn't be cast to String"))
963+@Callable(eS)
964+func calculateAmountOutForSwapAndSendTokens (gl,gm,gx,gy,gn) = {
965+ let gz = {
966+ let aW = invoke(aT, "getSwapContractREADONLY", nil, nil)
967+ if ($isInstanceOf(aW, "String"))
968+ then aW
969+ else throw(($getType(aW) + " couldn't be cast to String"))
746970 }
747- let eH = [if ((value(dL.payments[0]).amount >= fg))
971+ let fM = [if ((value(eS.payments[0]).amount >= gl))
748972 then true
749- else aL("Wrong amount"), if ((dL.caller == addressFromStringValue(fu)))
973+ else aQ("Wrong amount"), if ((eS.caller == addressFromStringValue(gz)))
750974 then true
751- else aL("Permission denied")]
752- if ((eH == eH))
975+ else aQ("Permission denied")]
976+ if ((fM == fM))
753977 then {
754- let dM = value(dL.payments[0])
755- let fl = ba(dM.assetId)
756- let fk = if ((fh == false))
757- then aH(this, af())
758- else aH(this, ae())
759- let fm = (bE(fl) - value(dL.payments[0]).amount)
760- let fn = bE(fk)
761- let fo = fraction(fn, fg, (fm + fg))
762- let fp = (toBigInt(fm) * toBigInt(fn))
763- let fq = ((toBigInt(bE(fl)) + toBigInt(fi)) * (toBigInt(bE(fk)) - toBigInt(fo)))
764- let fr = if ((fq >= fp))
978+ let eT = value(eS.payments[0])
979+ let gq = bf(eT.assetId)
980+ let gp = if ((gm == false))
981+ then aM(this, af())
982+ else aM(this, ae())
983+ let gr = (bJ(gq) - value(eS.payments[0]).amount)
984+ let gs = bJ(gp)
985+ let gt = fraction(gs, gl, (gr + gl))
986+ let gu = (toBigInt(gr) * toBigInt(gs))
987+ let gv = ((toBigInt(bJ(gq)) + toBigInt(gn)) * (toBigInt(bJ(gp)) - toBigInt(gt)))
988+ let gw = if ((gv >= gu))
765989 then true
766990 else throw("new K is fewer error")
767- if ((fr == fr))
991+ if ((gw == gw))
768992 then {
769- let fv = if ((fo >= fs))
993+ let gA = if ((gt >= gx))
770994 then true
771995 else throw("Exchange result is fewer coins than expected")
772- if ((fv == fv))
773- then $Tuple2([ScriptTransfer(addressFromStringValue(ft), fo, aY(fk))], fo)
996+ if ((gA == gA))
997+ then {
998+ let gB = cD(gq)
999+ if ((gB == gB))
1000+ then {
1001+ let gC = cK(gp, gt)
1002+ if ((gC == gC))
1003+ then $Tuple2(((gC ++ gB) ++ [ScriptTransfer(addressFromStringValue(gy), gt, bd(gp))]), gt)
1004+ else throw("Strict value is not equal to itself.")
1005+ }
1006+ else throw("Strict value is not equal to itself.")
1007+ }
7741008 else throw("Strict value is not equal to itself.")
7751009 }
7761010 else throw("Strict value is not equal to itself.")
7771011 }
7781012 else throw("Strict value is not equal to itself.")
7791013 }
7801014
7811015
7821016
783-@Callable(dL)
784-func setManager (fw) = {
785- let fx = fe(dL)
786- if ((fx == fx))
1017+@Callable(eS)
1018+func setManager (gD) = {
1019+ let gE = gj(eS)
1020+ if ((gE == gE))
7871021 then {
788- let fy = fromBase58String(fw)
789- if ((fy == fy))
790- then [StringEntry(V(), fw)]
1022+ let gF = fromBase58String(gD)
1023+ if ((gF == gF))
1024+ then [StringEntry(V(), gD)]
7911025 else throw("Strict value is not equal to itself.")
7921026 }
7931027 else throw("Strict value is not equal to itself.")
7941028 }
7951029
7961030
7971031
798-@Callable(dL)
1032+@Callable(eS)
7991033 func confirmManager () = {
800- let fz = fb()
801- let fA = if (isDefined(fz))
1034+ let gG = gg()
1035+ let gH = if (isDefined(gG))
8021036 then true
8031037 else throw("No pending manager")
804- if ((fA == fA))
1038+ if ((gH == gH))
8051039 then {
806- let fB = if ((dL.callerPublicKey == value(fz)))
1040+ let gI = if ((eS.callerPublicKey == value(gG)))
8071041 then true
8081042 else throw("You are not pending manager")
809- if ((fB == fB))
810- then [StringEntry(U(), toBase58String(value(fz))), DeleteEntry(V())]
1043+ if ((gI == gI))
1044+ then [StringEntry(U(), toBase58String(value(gG))), DeleteEntry(V())]
8111045 else throw("Strict value is not equal to itself.")
8121046 }
8131047 else throw("Strict value is not equal to itself.")
8141048 }
8151049
8161050
8171051
818-@Callable(dL)
819-func put (cz,fC) = if ((0 > cz))
1052+@Callable(eS)
1053+func put (dG,gJ) = if ((0 > dG))
8201054 then throw("Invalid slippageTolerance passed")
8211055 else {
822- let dR = dO(dL, cz, true)
823- let db = dR._2
824- let cg = dR._7
825- let cx = dR._9
826- let dc = dR._10
827- let dd = dR._11
828- let fD = dR._12
829- let fE = dR._13
830- let dP = toBigInt(value(dL.payments[0]).amount)
831- let dQ = toBigInt(value(dL.payments[1]).amount)
832- let ds = dl(dP, dQ, toBigInt(0))
833- if ((ds == ds))
1056+ let eY = eV(eS, dG, true)
1057+ let ei = eY._2
1058+ let dl = eY._7
1059+ let dE = eY._9
1060+ let ej = eY._10
1061+ let ek = eY._11
1062+ let gK = eY._12
1063+ let gL = eY._13
1064+ let eW = toBigInt(value(eS.payments[0]).amount)
1065+ let eX = toBigInt(value(eS.payments[1]).amount)
1066+ let ez = es(eW, eX, toBigInt(0))
1067+ if ((ez == ez))
8341068 then {
835- let dU = invoke(aO, "emit", [db], nil)
836- if ((dU == dU))
1069+ let fa = invoke(aT, "emit", [ei], nil)
1070+ if ((fa == fa))
8371071 then {
838- let dV = {
839- let dW = dU
840- if ($isInstanceOf(dW, "Address"))
1072+ let fb = {
1073+ let bT = fa
1074+ if ($isInstanceOf(bT, "Address"))
8411075 then {
842- let dX = dW
843- invoke(dX, "emit", [db], nil)
1076+ let fc = bT
1077+ invoke(fc, "emit", [ei], nil)
8441078 }
8451079 else unit
8461080 }
847- if ((dV == dV))
1081+ if ((fb == fb))
8481082 then {
849- let fF = if ((dc > 0))
850- then invoke(bo, "put", nil, [AttachedPayment(fD, dc)])
1083+ let gM = if ((ej > 0))
1084+ then invoke(bt, "put", nil, [AttachedPayment(gK, ej)])
8511085 else nil
852- if ((fF == fF))
1086+ if ((gM == gM))
8531087 then {
854- let fG = if ((dd > 0))
855- then invoke(bo, "put", nil, [AttachedPayment(fE, dd)])
1088+ let gN = if ((ek > 0))
1089+ then invoke(bt, "put", nil, [AttachedPayment(gL, ek)])
8561090 else nil
857- if ((fG == fG))
1091+ if ((gN == gN))
8581092 then {
859- let fH = if (fC)
1093+ let gO = if (gJ)
8601094 then {
861- let fI = invoke(bn, "stake", nil, [AttachedPayment(cg, db)])
862- if ((fI == fI))
1095+ let gP = invoke(bs, "stake", nil, [AttachedPayment(dl, ei)])
1096+ if ((gP == gP))
8631097 then nil
8641098 else throw("Strict value is not equal to itself.")
8651099 }
866- else [ScriptTransfer(dL.caller, db, cg)]
867- let fJ = dt(0, 0, 0)
868- if ((fJ == fJ))
1100+ else [ScriptTransfer(eS.caller, ei, dl)]
1101+ let gQ = eA(0, 0, 0)
1102+ if ((gQ == gQ))
8691103 then {
870- let dk = fJ._2
871- let fK = fJ._1
872- let fL = dx(ds, dk)
873- if ((fL == fL))
874- then ((cx ++ fH) ++ fK)
1104+ let er = gQ._2
1105+ let gR = gQ._1
1106+ let gS = eE(ez, er)
1107+ if ((gS == gS))
1108+ then {
1109+ let gT = invoke(this, "rebalance", nil, nil)
1110+ if ((gT == gT))
1111+ then ((dE ++ gO) ++ gR)
1112+ else throw("Strict value is not equal to itself.")
1113+ }
8751114 else throw("Strict value is not equal to itself.")
8761115 }
8771116 else throw("Strict value is not equal to itself.")
8781117 }
8791118 else throw("Strict value is not equal to itself.")
8801119 }
8811120 else throw("Strict value is not equal to itself.")
8821121 }
8831122 else throw("Strict value is not equal to itself.")
8841123 }
8851124 else throw("Strict value is not equal to itself.")
8861125 }
8871126 else throw("Strict value is not equal to itself.")
8881127 }
8891128
8901129
8911130
892-@Callable(dL)
893-func putForFree (fM) = if ((0 > fM))
1131+@Callable(eS)
1132+func putForFree (gU) = if ((0 > gU))
8941133 then throw("Invalid value passed")
8951134 else {
896- let dR = dO(dL, fM, false)
897- let cx = dR._9
898- let dP = toBigInt(value(dL.payments[0]).amount)
899- let dQ = toBigInt(value(dL.payments[1]).amount)
900- let ds = dl(dP, dQ, toBigInt(0))
901- if ((ds == ds))
1135+ let eY = eV(eS, gU, false)
1136+ let dE = eY._9
1137+ let eW = toBigInt(value(eS.payments[0]).amount)
1138+ let eX = toBigInt(value(eS.payments[1]).amount)
1139+ let ez = es(eW, eX, toBigInt(0))
1140+ if ((ez == ez))
9021141 then {
903- let fN = dt(0, 0, 0)
904- let fK = fN._1
905- let dk = fN._2
906- let fL = dx(ds, dk)
907- if ((fL == fL))
908- then (cx ++ fK)
1142+ let gV = eA(0, 0, 0)
1143+ let gR = gV._1
1144+ let er = gV._2
1145+ let gS = eE(ez, er)
1146+ if ((gS == gS))
1147+ then (dE ++ gR)
9091148 else throw("Strict value is not equal to itself.")
9101149 }
9111150 else throw("Strict value is not equal to itself.")
9121151 }
9131152
9141153
9151154
916-@Callable(dL)
917-func putOneTkn (fO,fP) = {
918- let fQ = {
919- let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
920- if ($isInstanceOf(aR, "Boolean"))
921- then aR
922- else throw(($getType(aR) + " couldn't be cast to Boolean"))
1155+@Callable(eS)
1156+func putOneTkn (gW,gX) = {
1157+ let gY = {
1158+ let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1159+ if ($isInstanceOf(aW, "Boolean"))
1160+ then aW
1161+ else throw(($getType(aW) + " couldn't be cast to Boolean"))
9231162 }
924- let fR = if (if (if (aT())
1163+ let gZ = if (if (if (aY())
9251164 then true
926- else (bg == l))
1165+ else (bl == l))
9271166 then true
928- else (bg == n))
1167+ else (bl == n))
9291168 then true
930- else fQ
931- let eH = [if (if (!(fR))
1169+ else gY
1170+ let fM = [if (if (!(gZ))
9321171 then true
933- else fc(dL))
1172+ else gh(eS))
9341173 then true
935- else aL("put operation is blocked by admin"), if ((size(dL.payments) == 1))
1174+ else aQ("put operation is blocked by admin"), if ((size(eS.payments) == 1))
9361175 then true
937- else aL("exactly 1 payment are expected")]
938- if ((eH == eH))
1176+ else aQ("exactly 1 payment are expected")]
1177+ if ((fM == fM))
9391178 then {
940- let fS = dL.payments[0]
941- let ec = fS.assetId
942- let eb = fS.amount
943- let ds = if ((ec == bi))
944- then dl(toBigInt(eb), toBigInt(0), toBigInt(0))
945- else if ((ec == bj))
946- then dl(toBigInt(0), toBigInt(eb), toBigInt(0))
947- else aL("payment asset is not supported")
948- if ((ds == ds))
1179+ let ha = eS.payments[0]
1180+ let fh = ha.assetId
1181+ let fg = ha.amount
1182+ let ez = if ((fh == bn))
1183+ then es(toBigInt(fg), toBigInt(0), toBigInt(0))
1184+ else if ((fh == bo))
1185+ then es(toBigInt(0), toBigInt(fg), toBigInt(0))
1186+ else aQ("payment asset is not supported")
1187+ if ((ez == ez))
9491188 then {
950- let ab = dL.caller
951- let ac = dL.transactionId
952- let fT = ea(eb, ec, ab, ac)
953- if ((fT == fT))
1189+ let ab = eS.caller
1190+ let ac = eS.transactionId
1191+ let hb = ff(fg, fh, ab, ac)
1192+ if ((hb == hb))
9541193 then {
955- let eg = fT._5
956- let fU = fT._4
957- let dZ = fT._3
958- let de = fT._2
959- let fV = fT._1
960- let fW = if (if ((fO > 0))
961- then (fO > fV)
1194+ let fl = hb._5
1195+ let hc = hb._4
1196+ let fe = hb._3
1197+ let el = hb._2
1198+ let hd = hb._1
1199+ let he = if (if ((gW > 0))
1200+ then (gW > hd)
9621201 else false)
963- then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
964- else fV
965- let dU = dS(fW)
966- if ((dU == dU))
1202+ then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1203+ else hd
1204+ let fa = eZ(he)
1205+ if ((fa == fa))
9671206 then {
968- let fH = if (fP)
1207+ let gO = if (gX)
9691208 then {
970- let fX = invoke(bn, "stake", nil, [AttachedPayment(bh, fW)])
971- if ((fX == fX))
1209+ let hf = invoke(bs, "stake", nil, [AttachedPayment(bm, he)])
1210+ if ((hf == hf))
9721211 then nil
9731212 else throw("Strict value is not equal to itself.")
9741213 }
975- else [ScriptTransfer(dL.caller, fW, bh)]
976- let fY = if ((dZ > 0))
977- then [ScriptTransfer(aP, dZ, ec)]
1214+ else [ScriptTransfer(eS.caller, he, bm)]
1215+ let hg = if ((fe > 0))
1216+ then [ScriptTransfer(aU, fe, fh)]
9781217 else nil
979- let fZ = if ((this == aP))
1218+ let hh = if ((this == aU))
9801219 then $Tuple2(0, 0)
981- else if (eg)
982- then $Tuple2(-(dZ), 0)
983- else $Tuple2(0, -(dZ))
984- let du = fZ._1
985- let dv = fZ._2
986- let ga = dt(du, dv, 0)
987- let fK = ga._1
988- let dk = ga._2
989- let dE = value(getString(aj))
990- let fL = dx(ds, dk)
991- if ((fL == fL))
992- then $Tuple2((((de ++ fH) ++ fY) ++ fK), fW)
993- else throw("Strict value is not equal to itself.")
994- }
995- else throw("Strict value is not equal to itself.")
996- }
997- else throw("Strict value is not equal to itself.")
998- }
999- else throw("Strict value is not equal to itself.")
1000- }
1001- else throw("Strict value is not equal to itself.")
1002- }
1003-
1004-
1005-
1006-@Callable(dL)
1007-func putOneTknREADONLY (ec,eb) = {
1008- let gb = ea(eb, aY(ec), unit, unit)
1009- let fV = gb._1
1010- let de = gb._2
1011- let dZ = gb._3
1012- let fU = gb._4
1013- let eg = gb._5
1014- $Tuple2(nil, $Tuple3(fV, dZ, fU))
1015- }
1016-
1017-
1018-
1019-@Callable(dL)
1020-func getOneTkn (gc,fO) = {
1021- let fQ = {
1022- let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1023- if ($isInstanceOf(aR, "Boolean"))
1024- then aR
1025- else throw(($getType(aR) + " couldn't be cast to Boolean"))
1026- }
1027- let gd = if (if (aT())
1028- then true
1029- else (bg == n))
1030- then true
1031- else fQ
1032- let eH = [if (if (!(gd))
1033- then true
1034- else fc(dL))
1035- then true
1036- else aL("get operation is blocked by admin"), if ((size(dL.payments) == 1))
1037- then true
1038- else aL("exactly 1 payment are expected")]
1039- if ((eH == eH))
1040- then {
1041- let eG = aY(gc)
1042- let fS = dL.payments[0]
1043- let ec = fS.assetId
1044- let eo = fS.amount
1045- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1046- if ((ds == ds))
1047- then {
1048- let ab = dL.caller
1049- let ac = dL.transactionId
1050- let ge = eF(eG, eo, ec, ab, ac)
1051- if ((ge == ge))
1052- then {
1053- let eI = ge._5
1054- let fU = ge._4
1055- let dZ = ge._3
1056- let de = ge._2
1057- let gf = ge._1
1058- let dT = if (if ((fO > 0))
1059- then (fO > gf)
1060- else false)
1061- then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
1062- else gf
1063- let gg = invoke(aO, "burn", [eo], [AttachedPayment(ec, eo)])
1064- if ((gg == gg))
1065- then {
1066- let gh = [ScriptTransfer(ab, dT, eG)]
1067- let fY = if ((dZ > 0))
1068- then [ScriptTransfer(aP, dZ, eG)]
1069- else nil
1070- let gi = {
1071- let gj = if ((this == aP))
1072- then 0
1073- else dZ
1074- if (eI)
1075- then $Tuple2(-((dT + gj)), 0)
1076- else $Tuple2(0, -((dT + gj)))
1077- }
1078- let du = gi._1
1079- let dv = gi._2
1080- let gk = dt(du, dv, 0)
1081- let fK = gk._1
1082- let dk = gk._2
1083- let fL = dx(ds, dk)
1084- if ((fL == fL))
1085- then $Tuple2((((de ++ gh) ++ fY) ++ fK), dT)
1086- else throw("Strict value is not equal to itself.")
1087- }
1088- else throw("Strict value is not equal to itself.")
1089- }
1090- else throw("Strict value is not equal to itself.")
1091- }
1092- else throw("Strict value is not equal to itself.")
1093- }
1094- else throw("Strict value is not equal to itself.")
1095- }
1096-
1097-
1098-
1099-@Callable(dL)
1100-func getOneTknREADONLY (eG,eo) = {
1101- let gl = eF(aY(eG), eo, bh, unit, unit)
1102- let gf = gl._1
1103- let de = gl._2
1104- let dZ = gl._3
1105- let fU = gl._4
1106- let eI = gl._5
1107- $Tuple2(nil, $Tuple3(gf, dZ, fU))
1108- }
1109-
1110-
1111-
1112-@Callable(dL)
1113-func unstakeAndGetOneTkn (gm,gc,fO) = {
1114- let fQ = {
1115- let aR = invoke(aO, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1116- if ($isInstanceOf(aR, "Boolean"))
1117- then aR
1118- else throw(($getType(aR) + " couldn't be cast to Boolean"))
1119- }
1120- let gd = if (if (aT())
1121- then true
1122- else (bg == n))
1123- then true
1124- else fQ
1125- let eH = [if (if (!(gd))
1126- then true
1127- else fc(dL))
1128- then true
1129- else aL("get operation is blocked by admin"), if ((size(dL.payments) == 0))
1130- then true
1131- else aL("no payments are expected")]
1132- if ((eH == eH))
1133- then {
1134- let eG = aY(gc)
1135- let ab = dL.caller
1136- let ac = dL.transactionId
1137- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1138- if ((ds == ds))
1139- then {
1140- let gn = invoke(bn, "unstake", [toBase58String(bh), gm], nil)
1141- if ((gn == gn))
1142- then {
1143- let go = eF(eG, gm, bh, ab, ac)
1144- if ((go == go))
1145- then {
1146- let eI = go._5
1147- let fU = go._4
1148- let dZ = go._3
1149- let de = go._2
1150- let gf = go._1
1151- let dT = if (if ((fO > 0))
1152- then (fO > gf)
1153- else false)
1154- then aL(makeString(["amount to receive is less than ", toString(fO)], ""))
1155- else gf
1156- let gg = invoke(aO, "burn", [gm], [AttachedPayment(bh, gm)])
1157- if ((gg == gg))
1220+ else if (fl)
1221+ then $Tuple2(-(fe), 0)
1222+ else $Tuple2(0, -(fe))
1223+ let eB = hh._1
1224+ let eC = hh._2
1225+ let hi = eA(eB, eC, 0)
1226+ let gR = hi._1
1227+ let er = hi._2
1228+ let eL = value(getString(aj))
1229+ let gS = eE(ez, er)
1230+ if ((gS == gS))
11581231 then {
1159- let gh = [ScriptTransfer(dL.caller, dT, eG)]
1160- let fY = if ((dZ > 0))
1161- then [ScriptTransfer(aP, dZ, eG)]
1162- else nil
1163- let gp = {
1164- let gj = if ((this == aP))
1165- then 0
1166- else dZ
1167- if (eI)
1168- then $Tuple2(-((dT + gj)), 0)
1169- else $Tuple2(0, -((dT + gj)))
1170- }
1171- let du = gp._1
1172- let dv = gp._2
1173- let gq = dt(du, dv, 0)
1174- let fK = gq._1
1175- let dk = gq._2
1176- let fL = dx(ds, dk)
1177- if ((fL == fL))
1178- then $Tuple2((((de ++ gh) ++ fY) ++ fK), dT)
1232+ let gT = invoke(this, "rebalance", nil, nil)
1233+ if ((gT == gT))
1234+ then $Tuple2((((el ++ gO) ++ hg) ++ gR), he)
11791235 else throw("Strict value is not equal to itself.")
11801236 }
11811237 else throw("Strict value is not equal to itself.")
11821238 }
11831239 else throw("Strict value is not equal to itself.")
11841240 }
11851241 else throw("Strict value is not equal to itself.")
11861242 }
11871243 else throw("Strict value is not equal to itself.")
11881244 }
11891245 else throw("Strict value is not equal to itself.")
11901246 }
11911247
11921248
11931249
1194-@Callable(dL)
1195-func get () = {
1196- let cP = dK(dL)
1197- let gr = cP._1
1198- let cw = cP._2
1199- let dN = cP._3
1200- let ce = cP._4
1201- let cx = cP._5
1202- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1203- if ((ds == ds))
1204- then {
1205- let gs = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1206- if ((gs == gs))
1207- then {
1208- let gt = dt(-(gr), -(cw), 0)
1209- let fK = gt._1
1210- let dk = gt._2
1211- let fL = dx(ds, dk)
1212- if ((fL == fL))
1213- then (cx ++ fK)
1214- else throw("Strict value is not equal to itself.")
1215- }
1216- else throw("Strict value is not equal to itself.")
1217- }
1218- else throw("Strict value is not equal to itself.")
1250+@Callable(eS)
1251+func putOneTknREADONLY (fh,fg) = {
1252+ let hj = ff(fg, bd(fh), unit, unit)
1253+ let hd = hj._1
1254+ let el = hj._2
1255+ let fe = hj._3
1256+ let hc = hj._4
1257+ let fl = hj._5
1258+ $Tuple2(nil, $Tuple3(hd, fe, hc))
12191259 }
12201260
12211261
12221262
1223-@Callable(dL)
1224-func getNoLess (gu,gv) = {
1225- let cP = dK(dL)
1226- let cv = cP._1
1227- let cw = cP._2
1228- let dN = cP._3
1229- let ce = cP._4
1230- let cx = cP._5
1231- if ((gu > cv))
1232- then throw(((("noLessThenAmtAsset failed: " + toString(cv)) + " < ") + toString(gu)))
1233- else if ((gv > cw))
1234- then throw(((("noLessThenPriceAsset failed: " + toString(cw)) + " < ") + toString(gv)))
1235- else {
1236- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1237- if ((ds == ds))
1238- then {
1239- let gs = invoke(aO, "burn", [dN], [AttachedPayment(ce, dN)])
1240- if ((gs == gs))
1241- then {
1242- let gw = dt(-(cv), -(cw), 0)
1243- let fK = gw._1
1244- let dk = gw._2
1245- let fL = dx(ds, dk)
1246- if ((fL == fL))
1247- then (cx ++ fK)
1248- else throw("Strict value is not equal to itself.")
1249- }
1250- else throw("Strict value is not equal to itself.")
1251- }
1252- else throw("Strict value is not equal to itself.")
1253- }
1254- }
1255-
1256-
1257-
1258-@Callable(dL)
1259-func unstakeAndGet (dT) = {
1260- let gx = if ((size(dL.payments) != 0))
1261- then throw("No payments are expected")
1262- else true
1263- if ((gx == gx))
1263+@Callable(eS)
1264+func getOneTkn (hk,gW) = {
1265+ let gY = {
1266+ let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1267+ if ($isInstanceOf(aW, "Boolean"))
1268+ then aW
1269+ else throw(($getType(aW) + " couldn't be cast to Boolean"))
1270+ }
1271+ let hl = if (if (aY())
1272+ then true
1273+ else (bl == n))
1274+ then true
1275+ else gY
1276+ let fM = [if (if (!(hl))
1277+ then true
1278+ else gh(eS))
1279+ then true
1280+ else aQ("get operation is blocked by admin"), if ((size(eS.payments) == 1))
1281+ then true
1282+ else aQ("exactly 1 payment are expected")]
1283+ if ((fM == fM))
12641284 then {
1265- let bT = aV()
1266- let cg = fromBase58String(bT[q])
1267- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1268- if ((ds == ds))
1285+ let fL = bd(hk)
1286+ let ha = eS.payments[0]
1287+ let fh = ha.assetId
1288+ let ft = ha.amount
1289+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1290+ if ((ez == ez))
12691291 then {
1270- let gn = invoke(bn, "unstake", [toBase58String(cg), dT], nil)
1271- if ((gn == gn))
1292+ let ab = eS.caller
1293+ let ac = eS.transactionId
1294+ let hm = fK(fL, ft, fh, ab, ac)
1295+ if ((hm == hm))
12721296 then {
1273- let cP = cc(toBase58String(dL.transactionId), toBase58String(cg), dT, dL.caller)
1274- let cv = cP._1
1275- let cw = cP._2
1276- let cj = parseIntValue(cP._9)
1277- let cx = cP._10
1278- let gy = if (if (aT())
1279- then true
1280- else (cj == n))
1281- then throw(("Get operation is blocked by admin. Status = " + toString(cj)))
1282- else true
1283- if ((gy == gy))
1297+ let fN = hm._5
1298+ let hc = hm._4
1299+ let fe = hm._3
1300+ let el = hm._2
1301+ let hn = hm._1
1302+ let bW = if (if ((gW > 0))
1303+ then (gW > hn)
1304+ else false)
1305+ then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1306+ else hn
1307+ let ho = invoke(aT, "burn", [ft], [AttachedPayment(fh, ft)])
1308+ if ((ho == ho))
12841309 then {
1285- let gs = invoke(aO, "burn", [dT], [AttachedPayment(cg, dT)])
1286- if ((gs == gs))
1310+ let gC = cK(hk, bW)
1311+ if ((gC == gC))
12871312 then {
1288- let gz = dt(-(cv), -(cw), 0)
1289- let fK = gz._1
1290- let dk = gz._2
1291- let fL = dx(ds, dk)
1292- if ((fL == fL))
1293- then (cx ++ fK)
1313+ let hp = [ScriptTransfer(ab, bW, fL)]
1314+ let hg = if ((fe > 0))
1315+ then [ScriptTransfer(aU, fe, fL)]
1316+ else nil
1317+ let hq = {
1318+ let hr = if ((this == aU))
1319+ then 0
1320+ else fe
1321+ if (fN)
1322+ then $Tuple2(-((bW + hr)), 0)
1323+ else $Tuple2(0, -((bW + hr)))
1324+ }
1325+ let eB = hq._1
1326+ let eC = hq._2
1327+ let hs = eA(eB, eC, 0)
1328+ let gR = hs._1
1329+ let er = hs._2
1330+ let gS = eE(ez, er)
1331+ if ((gS == gS))
1332+ then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
12941333 else throw("Strict value is not equal to itself.")
12951334 }
12961335 else throw("Strict value is not equal to itself.")
12971336 }
12981337 else throw("Strict value is not equal to itself.")
12991338 }
13001339 else throw("Strict value is not equal to itself.")
13011340 }
13021341 else throw("Strict value is not equal to itself.")
13031342 }
13041343 else throw("Strict value is not equal to itself.")
13051344 }
13061345
13071346
13081347
1309-@Callable(dL)
1310-func unstakeAndGetNoLess (gm,gA,gv) = {
1311- let gd = if (aT())
1348+@Callable(eS)
1349+func getOneTknREADONLY (fL,ft) = {
1350+ let ht = fK(bd(fL), ft, bm, unit, unit)
1351+ let hn = ht._1
1352+ let el = ht._2
1353+ let fe = ht._3
1354+ let hc = ht._4
1355+ let fN = ht._5
1356+ $Tuple2(nil, $Tuple3(hn, fe, hc))
1357+ }
1358+
1359+
1360+
1361+@Callable(eS)
1362+func unstakeAndGetOneTkn (hu,hk,gW) = {
1363+ let gY = {
1364+ let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1365+ if ($isInstanceOf(aW, "Boolean"))
1366+ then aW
1367+ else throw(($getType(aW) + " couldn't be cast to Boolean"))
1368+ }
1369+ let hl = if (if (aY())
13121370 then true
1313- else (bg == n)
1314- let eH = [if (!(gd))
1371+ else (bl == n))
13151372 then true
1316- else throw("get operation is blocked by admin"), if ((size(dL.payments) == 0))
1373+ else gY
1374+ let fM = [if (if (!(hl))
13171375 then true
1318- else throw("no payments are expected")]
1319- if ((eH == eH))
1376+ else gh(eS))
1377+ then true
1378+ else aQ("get operation is blocked by admin"), if ((size(eS.payments) == 0))
1379+ then true
1380+ else aQ("no payments are expected")]
1381+ if ((fM == fM))
13201382 then {
1321- let ds = dl(toBigInt(0), toBigInt(0), toBigInt(0))
1322- if ((ds == ds))
1383+ let fL = bd(hk)
1384+ let ab = eS.caller
1385+ let ac = eS.transactionId
1386+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1387+ if ((ez == ez))
13231388 then {
1324- let gn = invoke(bn, "unstake", [toBase58String(bh), gm], nil)
1325- if ((gn == gn))
1389+ let hv = invoke(bs, "unstake", [toBase58String(bm), hu], nil)
1390+ if ((hv == hv))
13261391 then {
1327- let cP = cc(toBase58String(dL.transactionId), toBase58String(bh), gm, dL.caller)
1328- let cv = cP._1
1329- let cw = cP._2
1330- let cx = cP._10
1331- let gB = [if ((cv >= gA))
1332- then true
1333- else throw(makeString(["amount asset amount to receive is less than ", toString(gA)], "")), if ((cw >= gv))
1334- then true
1335- else throw(makeString(["price asset amount to receive is less than ", toString(gv)], ""))]
1336- if ((gB == gB))
1392+ let hw = fK(fL, hu, bm, ab, ac)
1393+ if ((hw == hw))
13371394 then {
1338- let gs = invoke(aO, "burn", [gm], [AttachedPayment(bh, gm)])
1339- if ((gs == gs))
1395+ let fN = hw._5
1396+ let hc = hw._4
1397+ let fe = hw._3
1398+ let el = hw._2
1399+ let hn = hw._1
1400+ let bW = if (if ((gW > 0))
1401+ then (gW > hn)
1402+ else false)
1403+ then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1404+ else hn
1405+ let ho = invoke(aT, "burn", [hu], [AttachedPayment(bm, hu)])
1406+ if ((ho == ho))
13401407 then {
1341- let gC = dt(-(cv), -(cw), 0)
1342- let fK = gC._1
1343- let dk = gC._2
1344- let fL = dx(ds, dk)
1345- if ((fL == fL))
1346- then (cx ++ fK)
1408+ let gC = cK(hk, bW)
1409+ if ((gC == gC))
1410+ then {
1411+ let hp = [ScriptTransfer(eS.caller, bW, fL)]
1412+ let hg = if ((fe > 0))
1413+ then [ScriptTransfer(aU, fe, fL)]
1414+ else nil
1415+ let hx = {
1416+ let hr = if ((this == aU))
1417+ then 0
1418+ else fe
1419+ if (fN)
1420+ then $Tuple2(-((bW + hr)), 0)
1421+ else $Tuple2(0, -((bW + hr)))
1422+ }
1423+ let eB = hx._1
1424+ let eC = hx._2
1425+ let hy = eA(eB, eC, 0)
1426+ let gR = hy._1
1427+ let er = hy._2
1428+ let gS = eE(ez, er)
1429+ if ((gS == gS))
1430+ then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
1431+ else throw("Strict value is not equal to itself.")
1432+ }
13471433 else throw("Strict value is not equal to itself.")
13481434 }
13491435 else throw("Strict value is not equal to itself.")
13501436 }
13511437 else throw("Strict value is not equal to itself.")
13521438 }
13531439 else throw("Strict value is not equal to itself.")
13541440 }
13551441 else throw("Strict value is not equal to itself.")
13561442 }
13571443 else throw("Strict value is not equal to itself.")
13581444 }
13591445
13601446
13611447
1362-@Callable(dL)
1363-func activate (gD,gE) = if ((toString(dL.caller) != toString(aO)))
1364- then throw("permissions denied")
1365- else $Tuple2([StringEntry(ae(), gD), StringEntry(af(), gE)], "success")
1366-
1367-
1368-
1369-@Callable(dL)
1370-func refreshKLp () = {
1371- let gF = valueOrElse(getInteger(ak), 0)
1372- let gG = if (((height - gF) >= an))
1373- then unit
1374- else aL(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1375- if ((gG == gG))
1448+@Callable(eS)
1449+func get () = {
1450+ let dW = eR(eS)
1451+ let hz = dW._1
1452+ let dB = dW._2
1453+ let eU = dW._3
1454+ let dj = dW._4
1455+ let dE = dW._5
1456+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1457+ if ((ez == ez))
13761458 then {
1377- let dE = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aN("invalid kLp"))
1378- let gH = dt(0, 0, 0)
1379- let gI = gH._1
1380- let dk = gH._2
1381- let dw = if ((dE != dk))
1382- then gI
1383- else aL("nothing to refresh")
1384- $Tuple2(dw, toString(dk))
1459+ let hA = invoke(aT, "burn", [eU], [AttachedPayment(dj, eU)])
1460+ if ((hA == hA))
1461+ then {
1462+ let hB = eA(-(hz), -(dB), 0)
1463+ let gR = hB._1
1464+ let er = hB._2
1465+ let gS = eE(ez, er)
1466+ if ((gS == gS))
1467+ then (dE ++ gR)
1468+ else throw("Strict value is not equal to itself.")
1469+ }
1470+ else throw("Strict value is not equal to itself.")
13851471 }
13861472 else throw("Strict value is not equal to itself.")
13871473 }
13881474
13891475
13901476
1391-@Callable(dL)
1392-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aV())
1393-
1394-
1395-
1396-@Callable(dL)
1397-func getAccBalanceWrapperREADONLY (bF) = $Tuple2(nil, bE(bF))
1398-
1399-
1400-
1401-@Callable(dL)
1402-func calcPricesWrapperREADONLY (bN,bO,bS) = {
1403- let cb = bR(bN, bO, bS)
1404- $Tuple2(nil, [toString(cb[0]), toString(cb[1]), toString(cb[2])])
1477+@Callable(eS)
1478+func getNoLess (hC,hD) = {
1479+ let dW = eR(eS)
1480+ let dA = dW._1
1481+ let dB = dW._2
1482+ let eU = dW._3
1483+ let dj = dW._4
1484+ let dE = dW._5
1485+ if ((hC > dA))
1486+ then throw(((("noLessThenAmtAsset failed: " + toString(dA)) + " < ") + toString(hC)))
1487+ else if ((hD > dB))
1488+ then throw(((("noLessThenPriceAsset failed: " + toString(dB)) + " < ") + toString(hD)))
1489+ else {
1490+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1491+ if ((ez == ez))
1492+ then {
1493+ let hA = invoke(aT, "burn", [eU], [AttachedPayment(dj, eU)])
1494+ if ((hA == hA))
1495+ then {
1496+ let hE = eA(-(dA), -(dB), 0)
1497+ let gR = hE._1
1498+ let er = hE._2
1499+ let gS = eE(ez, er)
1500+ if ((gS == gS))
1501+ then (dE ++ gR)
1502+ else throw("Strict value is not equal to itself.")
1503+ }
1504+ else throw("Strict value is not equal to itself.")
1505+ }
1506+ else throw("Strict value is not equal to itself.")
1507+ }
14051508 }
14061509
14071510
14081511
1409-@Callable(dL)
1512+@Callable(eS)
1513+func unstakeAndGet (bW) = {
1514+ let hF = if ((size(eS.payments) != 0))
1515+ then throw("No payments are expected")
1516+ else true
1517+ if ((hF == hF))
1518+ then {
1519+ let cY = ba()
1520+ let dl = fromBase58String(cY[q])
1521+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1522+ if ((ez == ez))
1523+ then {
1524+ let hv = invoke(bs, "unstake", [toBase58String(dl), bW], nil)
1525+ if ((hv == hv))
1526+ then {
1527+ let dW = dh(toBase58String(eS.transactionId), toBase58String(dl), bW, eS.caller)
1528+ let dA = dW._1
1529+ let dB = dW._2
1530+ let do = parseIntValue(dW._9)
1531+ let dE = dW._10
1532+ let hG = if (if (aY())
1533+ then true
1534+ else (do == n))
1535+ then throw(("Get operation is blocked by admin. Status = " + toString(do)))
1536+ else true
1537+ if ((hG == hG))
1538+ then {
1539+ let hA = invoke(aT, "burn", [bW], [AttachedPayment(dl, bW)])
1540+ if ((hA == hA))
1541+ then {
1542+ let hH = eA(-(dA), -(dB), 0)
1543+ let gR = hH._1
1544+ let er = hH._2
1545+ let gS = eE(ez, er)
1546+ if ((gS == gS))
1547+ then (dE ++ gR)
1548+ else throw("Strict value is not equal to itself.")
1549+ }
1550+ else throw("Strict value is not equal to itself.")
1551+ }
1552+ else throw("Strict value is not equal to itself.")
1553+ }
1554+ else throw("Strict value is not equal to itself.")
1555+ }
1556+ else throw("Strict value is not equal to itself.")
1557+ }
1558+ else throw("Strict value is not equal to itself.")
1559+ }
1560+
1561+
1562+
1563+@Callable(eS)
1564+func unstakeAndGetNoLess (hu,hI,hD) = {
1565+ let hl = if (aY())
1566+ then true
1567+ else (bl == n)
1568+ let fM = [if (!(hl))
1569+ then true
1570+ else throw("get operation is blocked by admin"), if ((size(eS.payments) == 0))
1571+ then true
1572+ else throw("no payments are expected")]
1573+ if ((fM == fM))
1574+ then {
1575+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1576+ if ((ez == ez))
1577+ then {
1578+ let hv = invoke(bs, "unstake", [toBase58String(bm), hu], nil)
1579+ if ((hv == hv))
1580+ then {
1581+ let dW = dh(toBase58String(eS.transactionId), toBase58String(bm), hu, eS.caller)
1582+ let dA = dW._1
1583+ let dB = dW._2
1584+ let dE = dW._10
1585+ let hJ = [if ((dA >= hI))
1586+ then true
1587+ else throw(makeString(["amount asset amount to receive is less than ", toString(hI)], "")), if ((dB >= hD))
1588+ then true
1589+ else throw(makeString(["price asset amount to receive is less than ", toString(hD)], ""))]
1590+ if ((hJ == hJ))
1591+ then {
1592+ let hA = invoke(aT, "burn", [hu], [AttachedPayment(bm, hu)])
1593+ if ((hA == hA))
1594+ then {
1595+ let hK = eA(-(dA), -(dB), 0)
1596+ let gR = hK._1
1597+ let er = hK._2
1598+ let gS = eE(ez, er)
1599+ if ((gS == gS))
1600+ then (dE ++ gR)
1601+ else throw("Strict value is not equal to itself.")
1602+ }
1603+ else throw("Strict value is not equal to itself.")
1604+ }
1605+ else throw("Strict value is not equal to itself.")
1606+ }
1607+ else throw("Strict value is not equal to itself.")
1608+ }
1609+ else throw("Strict value is not equal to itself.")
1610+ }
1611+ else throw("Strict value is not equal to itself.")
1612+ }
1613+
1614+
1615+
1616+@Callable(eS)
1617+func activate (hL,hM) = if ((toString(eS.caller) != toString(aT)))
1618+ then throw("permissions denied")
1619+ else $Tuple2([StringEntry(ae(), hL), StringEntry(af(), hM)], "success")
1620+
1621+
1622+
1623+@Callable(eS)
1624+func refreshKLp () = {
1625+ let hN = valueOrElse(getInteger(ak), 0)
1626+ let hO = if (((height - hN) >= an))
1627+ then unit
1628+ else aQ(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1629+ if ((hO == hO))
1630+ then {
1631+ let eL = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
1632+ let hP = eA(0, 0, 0)
1633+ let hQ = hP._1
1634+ let er = hP._2
1635+ let eD = if ((eL != er))
1636+ then hQ
1637+ else aQ("nothing to refresh")
1638+ $Tuple2(eD, toString(er))
1639+ }
1640+ else throw("Strict value is not equal to itself.")
1641+ }
1642+
1643+
1644+
1645+@Callable(eS)
1646+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, ba())
1647+
1648+
1649+
1650+@Callable(eS)
1651+func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bJ(ap))
1652+
1653+
1654+
1655+@Callable(eS)
1656+func calcPricesWrapperREADONLY (cS,cT,cX) = {
1657+ let dg = cW(cS, cT, cX)
1658+ $Tuple2(nil, [toString(dg[0]), toString(dg[1]), toString(dg[2])])
1659+ }
1660+
1661+
1662+
1663+@Callable(eS)
14101664 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
14111665
14121666
14131667
1414-@Callable(dL)
1668+@Callable(eS)
14151669 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
14161670
14171671
14181672
1419-@Callable(dL)
1420-func calcPriceBigIntWrapperREADONLY (bH,bI) = $Tuple2(nil, toString(bG(parseBigIntValue(bH), parseBigIntValue(bI))))
1673+@Callable(eS)
1674+func calcPriceBigIntWrapperREADONLY (bN,bO) = $Tuple2(nil, toString(bM(parseBigIntValue(bN), parseBigIntValue(bO))))
14211675
14221676
14231677
1424-@Callable(dL)
1425-func estimatePutOperationWrapperREADONLY (cd,cz,cA,cB,cC,cD,ab,cE,cF) = $Tuple2(nil, cy(cd, cz, cA, cB, cC, cD, ab, cE, cF))
1678+@Callable(eS)
1679+func estimatePutOperationWrapperREADONLY (di,dG,dH,dI,dJ,dK,ab,dL,dM) = $Tuple2(nil, dF(di, dG, dH, dI, dJ, dK, ab, dL, dM))
14261680
14271681
14281682
1429-@Callable(dL)
1430-func estimateGetOperationWrapperREADONLY (cd,ce,cf,ab) = {
1431- let cP = cc(cd, ce, cf, addressFromStringValue(ab))
1432- $Tuple2(nil, $Tuple10(cP._1, cP._2, cP._3, cP._4, cP._5, cP._6, cP._7, toString(cP._8), cP._9, cP._10))
1683+@Callable(eS)
1684+func estimateGetOperationWrapperREADONLY (di,dj,dk,ab) = {
1685+ let dW = dh(di, dj, dk, addressFromStringValue(ab))
1686+ $Tuple2(nil, $Tuple10(dW._1, dW._2, dW._3, dW._4, dW._5, dW._6, dW._7, toString(dW._8), dW._9, dW._10))
14331687 }
14341688
14351689
14361690
1437-@Callable(dL)
1691+@Callable(eS)
14381692 func statsREADONLY () = {
1439- let bT = aV()
1440- let cg = fromBase58String(bT[q])
1441- let gJ = bT[r]
1442- let gK = bT[s]
1443- let cI = bT[v]
1444- let cJ = bT[w]
1445- let bU = parseIntValue(bT[t])
1446- let bV = parseIntValue(bT[u])
1447- let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1448- let gM = bE(gJ)
1449- let gN = bE(gK)
1450- let gO = if ((gL == 0))
1693+ let cY = ba()
1694+ let dl = fromBase58String(cY[q])
1695+ let hR = cY[r]
1696+ let hS = cY[s]
1697+ let dP = cY[v]
1698+ let dQ = cY[w]
1699+ let cZ = parseIntValue(cY[t])
1700+ let da = parseIntValue(cY[u])
1701+ let hT = valueOrErrorMessage(assetInfo(dl), (("Asset " + toBase58String(dl)) + " doesn't exist")).quantity
1702+ let hU = bJ(hR)
1703+ let hV = bJ(hS)
1704+ let hW = if ((hT == 0))
14511705 then [e, e, e]
1452- else bR(gM, gN, gL)
1453- let cq = 0
1454- let gP = H(gO[1], b)
1455- let gQ = H(gO[2], b)
1456- let gR = value(getInteger(aO, ay(toString(this))))
1457- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gM), toString(gN), toString(gL), toString(cq), toString(gP), toString(gQ), toString(gR)], j))
1706+ else cW(hU, hV, hT)
1707+ let dv = 0
1708+ let hX = H(hW[1], b)
1709+ let hY = H(hW[2], b)
1710+ let hZ = value(getInteger(aT, aD(toString(this))))
1711+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hU), toString(hV), toString(hT), toString(dv), toString(hX), toString(hY), toString(hZ)], j))
14581712 }
14591713
14601714
14611715
1462-@Callable(dL)
1463-func evaluatePutByAmountAssetREADONLY (cA) = {
1464- let bT = aV()
1465- let cg = fromBase58String(bT[q])
1466- let cG = bT[r]
1467- let ch = fromBase58String(cG)
1468- let cH = bT[s]
1469- let ci = fromBase58String(cH)
1470- let bU = parseIntValue(bT[t])
1471- let bV = parseIntValue(bT[u])
1472- let cj = bT[p]
1473- let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1474- let gM = bE(cG)
1475- let gN = bE(cH)
1476- let bP = D(gM, bU)
1477- let bQ = D(gN, bV)
1478- let cp = if ((gL == 0))
1716+@Callable(eS)
1717+func evaluatePutByAmountAssetREADONLY (dH) = {
1718+ let cY = ba()
1719+ let dl = fromBase58String(cY[q])
1720+ let dN = cY[r]
1721+ let dm = fromBase58String(dN)
1722+ let dO = cY[s]
1723+ let dn = fromBase58String(dO)
1724+ let cZ = parseIntValue(cY[t])
1725+ let da = parseIntValue(cY[u])
1726+ let do = cY[p]
1727+ let hT = valueOrErrorMessage(assetInfo(dl), (("Asset " + toBase58String(dl)) + " doesn't exist")).quantity
1728+ let hU = bJ(dN)
1729+ let hV = bJ(dO)
1730+ let cU = D(hU, cZ)
1731+ let cV = D(hV, da)
1732+ let du = if ((hT == 0))
14791733 then e
1480- else bG(bQ, bP)
1481- let cM = D(cA, bU)
1482- let cN = fraction(cM, cp, d)
1483- let cC = H(cN, bV)
1484- let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
1485- let cX = dR._1
1486- let gS = dR._3
1487- let cl = dR._4
1488- let cn = dR._5
1489- let ck = dR._6
1490- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
1734+ else bM(cV, cU)
1735+ let dT = D(dH, cZ)
1736+ let dU = fraction(dT, du, d)
1737+ let dJ = H(dU, da)
1738+ let eY = dF("", 500000, dH, dm, dJ, dn, "", true, false)
1739+ let ee = eY._1
1740+ let ia = eY._3
1741+ let dq = eY._4
1742+ let ds = eY._5
1743+ let dp = eY._6
1744+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ee), toString(H(du, b)), toString(dq), toString(ds), toString(dp), do, toString(dH), toString(dJ)], j))
14911745 }
14921746
14931747
14941748
1495-@Callable(dL)
1496-func evaluatePutByPriceAssetREADONLY (cC) = {
1497- let bT = aV()
1498- let cg = fromBase58String(bT[q])
1499- let cG = bT[r]
1500- let ch = fromBase58String(cG)
1501- let cH = bT[s]
1502- let ci = fromBase58String(cH)
1503- let bU = parseIntValue(bT[t])
1504- let bV = parseIntValue(bT[u])
1505- let cj = bT[p]
1506- let gL = valueOrErrorMessage(assetInfo(cg), (("Asset " + toBase58String(cg)) + " doesn't exist")).quantity
1507- let gT = bE(cG)
1508- let gU = bE(cH)
1509- let gV = D(gT, bU)
1510- let gW = D(gU, bV)
1511- let cp = if ((gL == 0))
1749+@Callable(eS)
1750+func evaluatePutByPriceAssetREADONLY (dJ) = {
1751+ let cY = ba()
1752+ let dl = fromBase58String(cY[q])
1753+ let dN = cY[r]
1754+ let dm = fromBase58String(dN)
1755+ let dO = cY[s]
1756+ let dn = fromBase58String(dO)
1757+ let cZ = parseIntValue(cY[t])
1758+ let da = parseIntValue(cY[u])
1759+ let do = cY[p]
1760+ let hT = valueOrErrorMessage(assetInfo(dl), (("Asset " + toBase58String(dl)) + " doesn't exist")).quantity
1761+ let ib = bJ(dN)
1762+ let ic = bJ(dO)
1763+ let id = D(ib, cZ)
1764+ let ie = D(ic, da)
1765+ let du = if ((hT == 0))
15121766 then e
1513- else bG(gW, gV)
1514- let cN = D(cC, bV)
1515- let cM = fraction(cN, d, cp)
1516- let cA = H(cM, bU)
1517- let dR = cy("", 500000, cA, ch, cC, ci, "", true, false)
1518- let cX = dR._1
1519- let gS = dR._3
1520- let cl = dR._4
1521- let cn = dR._5
1522- let ck = dR._6
1523- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cX), toString(H(cp, b)), toString(cl), toString(cn), toString(ck), cj, toString(cA), toString(cC)], j))
1767+ else bM(ie, id)
1768+ let dU = D(dJ, da)
1769+ let dT = fraction(dU, d, du)
1770+ let dH = H(dT, cZ)
1771+ let eY = dF("", 500000, dH, dm, dJ, dn, "", true, false)
1772+ let ee = eY._1
1773+ let ia = eY._3
1774+ let dq = eY._4
1775+ let ds = eY._5
1776+ let dp = eY._6
1777+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ee), toString(H(du, b)), toString(dq), toString(ds), toString(dp), do, toString(dH), toString(dJ)], j))
15241778 }
15251779
15261780
15271781
1528-@Callable(dL)
1529-func evaluateGetREADONLY (gX,gY) = {
1530- let cP = cc("", gX, gY, this)
1531- let cv = cP._1
1532- let cw = cP._2
1533- let cl = cP._5
1534- let cn = cP._6
1535- let ck = cP._7
1536- let cq = cP._8
1537- let cj = parseIntValue(cP._9)
1538- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cv), toString(cw), toString(cl), toString(cn), toString(ck), toString(cq), toString(cj)], j))
1782+@Callable(eS)
1783+func evaluateGetREADONLY (if,ig) = {
1784+ let dW = dh("", if, ig, this)
1785+ let dA = dW._1
1786+ let dB = dW._2
1787+ let dq = dW._5
1788+ let ds = dW._6
1789+ let dp = dW._7
1790+ let dv = dW._8
1791+ let do = parseIntValue(dW._9)
1792+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dA), toString(dB), toString(dq), toString(ds), toString(dp), toString(dv), toString(do)], j))
15391793 }
15401794
15411795
1542-@Verifier(gZ)
1543-func ha () = {
1544- let hb = {
1545- let dW = eZ()
1546- if ($isInstanceOf(dW, "ByteVector"))
1796+@Verifier(ih)
1797+func ii () = {
1798+ let ij = {
1799+ let bT = ge()
1800+ if ($isInstanceOf(bT, "ByteVector"))
15471801 then {
1548- let fd = dW
1549- fd
1802+ let gi = bT
1803+ gi
15501804 }
1551- else if ($isInstanceOf(dW, "Unit"))
1552- then gZ.senderPublicKey
1805+ else if ($isInstanceOf(bT, "Unit"))
1806+ then ih.senderPublicKey
15531807 else throw("Match error")
15541808 }
1555- let dW = gZ
1556- if ($isInstanceOf(dW, "Order"))
1809+ let bT = ih
1810+ if ($isInstanceOf(bT, "Order"))
15571811 then {
1558- let dA = dW
1559- let hc = aU()
1560- let hd = dz(dA)
1561- let aD = hd._1
1562- let aE = hd._2
1563- let aF = sigVerify(dA.bodyBytes, dA.proofs[0], dA.senderPublicKey)
1564- let aG = sigVerify(dA.bodyBytes, dA.proofs[1], hc)
1565- if (if (if (aD)
1566- then aF
1812+ let eH = bT
1813+ let ik = aZ()
1814+ let il = eG(eH)
1815+ let aI = il._1
1816+ let aJ = il._2
1817+ let aK = sigVerify(eH.bodyBytes, eH.proofs[0], eH.senderPublicKey)
1818+ let aL = sigVerify(eH.bodyBytes, eH.proofs[1], ik)
1819+ if (if (if (aI)
1820+ then aK
15671821 else false)
1568- then aG
1822+ then aL
15691823 else false)
15701824 then true
1571- else aC(aD, aE, aF, aG)
1825+ else aH(aI, aJ, aK, aL)
15721826 }
1573- else if ($isInstanceOf(dW, "SetScriptTransaction"))
1827+ else if ($isInstanceOf(bT, "SetScriptTransaction"))
15741828 then {
1575- let fa = dW
1576- if (sigVerify(gZ.bodyBytes, gZ.proofs[0], hb))
1829+ let gf = bT
1830+ if (sigVerify(ih.bodyBytes, ih.proofs[0], ij))
15771831 then true
15781832 else {
1579- let he = blake2b256(value(fa.script))
1580- let hf = fromBase64String(value(getString(aO, aA())))
1581- let hg = scriptHash(this)
1582- if ((hf == he))
1583- then (hg != he)
1833+ let im = blake2b256(value(gf.script))
1834+ let in = fromBase64String(value(getString(aT, aF())))
1835+ let io = scriptHash(this)
1836+ if ((in == im))
1837+ then (io != im)
15841838 else false
15851839 }
15861840 }
1587- else sigVerify(gZ.bodyBytes, gZ.proofs[0], hb)
1841+ else sigVerify(ih.bodyBytes, ih.proofs[0], ij)
15881842 }
15891843

github/deemru/w8io/3da68e3 
525.81 ms