tx · GU5aE7V6jPwbkLUyZVnQ5me7AygDLVZYmTp19ByKQSnA

3N7b3kPunHUXhZp1vMG9NhPMARNEprCMWxT:  -0.04200000 Waves

2023.04.06 12:52 [2522546] smart account 3N7b3kPunHUXhZp1vMG9NhPMARNEprCMWxT > SELF 0.00000000 Waves

{ "type": 13, "id": "GU5aE7V6jPwbkLUyZVnQ5me7AygDLVZYmTp19ByKQSnA", "fee": 4200000, "feeAssetId": null, "timestamp": 1680774757326, "version": 2, "chainId": 84, "sender": "3N7b3kPunHUXhZp1vMG9NhPMARNEprCMWxT", "senderPublicKey": "AYbpHveq7zviKTDV7SGTB1pZGFbkumgfq3jSwVv6BznT", "proofs": [ "5N5Pa1p8EGYx31A84hAgAYrtMfhB3u6XH43Ms6iJc8X7g6SHuc4aSB43MNwyDLp6vBqDr9DgxMonYYPRJxM3pfip" ], "script": "base64:BgK9NwgCEgASBQoDAQQBEgcKBQEEAQgBEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiC3RvWDE4QmlnSW50Igdmcm9tWDE4IgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIMZnJvbVgxOFJvdW5kIgVyb3VuZCIHdG9TY2FsZSIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50Igxzd2FwQ29udHJhY3QiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIUa2V5QWRkaXRpb25hbEJhbGFuY2UiB2Fzc2V0SWQiFmtleVN0YWtpbmdBc3NldEJhbGFuY2UiGmdldEFkZGl0aW9uYWxCYWxhbmNlT3JaZXJvIhxnZXRTdGFraW5nQXNzZXRCYWxhbmNlT3JaZXJvIhBrZXlGYWN0b3J5Q29uZmlnIg1rZXlNYXRjaGVyUHViIilrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cyITcG9vbENvbnRyYWN0QWRkcmVzcyINa2V5UG9vbENvbmZpZyIJaUFtdEFzc2V0IgtpUHJpY2VBc3NldCIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIhNrZXlBbGxQb29sc1NodXRkb3duIg1rZXlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCIOb3JkZXJWYWxpZEluZm8iC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIgVpbkZlZSIBQCIGb3V0RmVlIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDg5NjI5MTI4Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIg1iYWxhbmNlT25Qb29sIgx0b3RhbEJhbGFuY2UiD2NhbGNQcmljZUJpZ0ludCIIcHJBbXRYMTgiCGFtQW10WDE4IhRjYWxjUHJpY2VCaWdJbnRSb3VuZCIHZ2V0UmF0ZSIFcHJveHkiA2ludiIHJG1hdGNoMCIBciIHZGVwb3NpdCIGYW1vdW50Ig5zdGFraW5nQXNzZXRJZCIYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlIhpjdXJyZW50U3Rha2luZ0Fzc2V0QmFsYW5jZSIFYXNzZXQiDWRlcG9zaXRJbnZva2UiFHJlY2VpdmVkU3Rha2luZ0Fzc2V0IhRuZXdBZGRpdGlvbmFsQmFsYW5jZSIWbmV3U3Rha2luZ0Fzc2V0QmFsYW5jZSIId2l0aGRyYXciDHByb3h5UmF0ZU11bCINcHJvZml0QWRkcmVzcyIQY3VycmVudFByb3h5UmF0ZSIHb2xkUmF0ZSIMc3Rha2luZ0Fzc2V0IhRvbGRTZW5kU3Rha2luZ0Ftb3VudCIWc2VuZFN0YWtpbmdBc3NldEFtb3VudCIMcHJvZml0QW1vdW50Ig53aXRoZHJhd0ludm9rZSIOcmVjZWl2ZWRBc3NldHMiE2dldExlYXNlUHJveHlDb25maWciAWEiEXJlYmFsYW5jZUludGVybmFsIgt0YXJnZXRSYXRpbyIKbWluQmFsYW5jZSIUbGVhc2FibGVUb3RhbEJhbGFuY2UiF3RhcmdldEFkZGl0aW9uYWxCYWxhbmNlIgRkaWZmIg9zZW5kQXNzZXRBbW91bnQiDmdldEFzc2V0QW1vdW50Ig5yZWJhbGFuY2VBc3NldCINJHQwMTUzNjQxNTUwMCIKaXNMZWFzYWJsZSILbGVhc2VkUmF0aW8iDHByb3h5QWRkcmVzcyIMcHJveHlBc3NldElkIhRzdGFraW5nUHJvZml0QWRkcmVzcyIZd2l0aGRyYXdBbmRSZWJhbGFuY2VBc3NldCIJZ2V0QW1vdW50Ig0kdDAxNTg4OTE2MDI1IhduZXdUb3RhbExlYXNhYmxlQmFsYW5jZSIOd2l0aGRyYXdBbW91bnQiF3dpdGhkcmF3QW5kUmViYWxhbmNlQWxsIhRhbW91bnRBc3NldE91dEFtb3VudCITcHJpY2VBc3NldE91dEFtb3VudCISQW1BbXRXaXRoZHJhd1N0YXRlIhJQckFtdFdpdGhkcmF3U3RhdGUiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiD2NhbGN1bGF0ZVByaWNlcyIGcHJpY2VzIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCIJbHBBc3NldElkIglhbUFzc2V0SWQiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIKbHBFbWlzc2lvbiIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4Ig1scEVtaXNzaW9uWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiFGVzdGltYXRlUHV0T3BlcmF0aW9uIhFzbGlwcGFnZVRvbGVyYW5jZSIMaW5BbUFzc2V0QW10IgtpbkFtQXNzZXRJZCIMaW5QckFzc2V0QW10IgtpblByQXNzZXRJZCIKaXNFdmFsdWF0ZSIGZW1pdExwIgxhbUFzc2V0SWRTdHIiDHByQXNzZXRJZFN0ciILaUFtdEFzc2V0SWQiDWlQcmljZUFzc2V0SWQiDmluQW1Bc3NldElkU3RyIg5pblByQXNzZXRJZFN0ciIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIDcmVzIgtzbGlwcGFnZVgxOCIUc2xpcHBhZ2VUb2xlcmFuY2VYMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiC2NvbW1vblN0YXRlIgdjYWxjS0xwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiEGFtb3VudEJhbGFuY2VYMTgiD3ByaWNlQmFsYW5jZVgxOCIKdXBkYXRlZEtMcCIOY2FsY0N1cnJlbnRLTHAiEGFtb3VudEFzc2V0RGVsdGEiD3ByaWNlQXNzZXREZWx0YSIUbHBBc3NldEVtaXNzaW9uRGVsdGEiEmFtb3VudEFzc2V0QmFsYW5jZSIRcHJpY2VBc3NldEJhbGFuY2UiD2xwQXNzZXRFbWlzc2lvbiIKY3VycmVudEtMcCIScmVmcmVzaEtMcEludGVybmFsIhdhbW91bnRBc3NldEJhbGFuY2VEZWx0YSIWcHJpY2VBc3NldEJhbGFuY2VEZWx0YSIHYWN0aW9ucyISdmFsaWRhdGVVcGRhdGVkS0xwIgZvbGRLTHAiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiEWFtb3VudEFzc2V0QW1vdW50IhBwcmljZUFzc2V0QW1vdW50Ig0kdDAyODE1MzI4MzY1IgNrTHAiDSR0MDI4ODA1Mjg5MDUiDXVudXNlZEFjdGlvbnMiBmtMcE5ldyIMaXNPcmRlclZhbGlkIgRpbmZvIgljb21tb25HZXQiAWkiA3BtdCIGcG10QW10Igljb21tb25QdXQiCmFtQXNzZXRQbXQiCnByQXNzZXRQbXQiBmVzdFB1dCIEZW1pdCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMzIwMTgzMjMxMSIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAzMjMxNTMyNDY0IhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyINJHQwMzI1OTYzMjY2MCINcGF5bWVudEFtb3VudCIQYW1vdW50QmFsYW5jZU5ldyIPcHJpY2VCYWxhbmNlTmV3IgtwcmljZU5ld1gxOCIIcHJpY2VOZXciDnBheW1lbnRCYWxhbmNlIhRwYXltZW50QmFsYW5jZUJpZ0ludCIMc3VwcGx5QmlnSW50IgtjaGVjaFN1cHBseSINZGVwb3NpdEJpZ0ludCILaXNzdWVBbW91bnQiC3ByaWNlT2xkWDE4IghwcmljZU9sZCIEbG9zcyINJHQwMzQzNDEzNDUwOCIHYmFsYW5jZSIPaXNzdWVBbW91bnRCb3RoIg9jYWxjR2V0T25lVG9rZW4iCm91dEFzc2V0SWQiBmNoZWNrcyIQb3V0SW5BbW91bnRBc3NldCINYmFsYW5jZUJpZ0ludCIYb3V0SW5BbW91bnRBc3NldERlY2ltYWxzIgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCIKb3V0QmFsYW5jZSIQb3V0QmFsYW5jZUJpZ0ludCIOcmVkZWVtZWRCaWdJbnQiCWFtb3VudFJhdyINJHQwMzY1ODYzNjY0MiILdG90YWxBbW91bnQiDSR0MDM2NjQ2MzY4NzIiC291dEFtQW1vdW50IgtvdXRQckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciGGFtb3VudEJvdGhJblBheW1lbnRBc3NldCIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiCWlzTWFuYWdlciICcGsiC211c3RNYW5hZ2VyIgJwZCINY2xlYW5BbW91bnRJbiIJaXNSZXZlcnNlIg1mZWVQb29sQW1vdW50Ig0kdDAzODc1ODM5MDYzIghhc3NldE91dCIHYXNzZXRJbiIScG9vbEFzc2V0SW5CYWxhbmNlIhNwb29sQXNzZXRPdXRCYWxhbmNlIglhbW91bnRPdXQiBG9sZEsiBG5ld0siBmNoZWNrSyIMYW1vdW50T3V0TWluIglhZGRyZXNzVG8iC3N3YXBDb250YWN0IghjaGVja01pbiIOcmViYWxhbmNlU3RhdGUiDXdpdGhkcmF3U3RhdGUiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgtjaGVja0NhbGxlciIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iD3Nob3VsZEF1dG9TdGFrZSIEYW1JZCIEcHJJZCIMc2xpcHBhZ2VBSW52IgxzbGlwcGFnZVBJbnYiCmxwVHJhbnNmZXIiC3NscFN0YWtlSW52Ig0kdDA0NDEwOTQ0NTcxIhFyZWZyZXNoS0xwQWN0aW9ucyIRaXNVcGRhdGVkS0xwVmFsaWQiA3JlYiILbWF4U2xpcHBhZ2UiDSR0MDQ1MTgzNDUyNDgiDG1pbk91dEFtb3VudCIJYXV0b1N0YWtlIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCINaXNQdXREaXNhYmxlZCIHcGF5bWVudCINJHQwNDY0MzY0NjU4OCIFYm9udXMiE2VtaXRBbW91bnRFc3RpbWF0ZWQiCmVtaXRBbW91bnQiCHN0YWtlSW52IgdzZW5kRmVlIg0kdDA0NzE3NDQ3MzcxIg0kdDA0NzM3NDQ3NDgyIg0kdDA0NzgzNzQ3OTk0Ig1vdXRBc3NldElkU3RyIg1pc0dldERpc2FibGVkIg0kdDA0ODg3OTQ5MDMyIg9hbW91bnRFc3RpbWF0ZWQiB2J1cm5JbnYiDWFzc2V0VHJhbnNmZXIiDSR0MDQ5NjAzNDk4NTAiEGZlZUFtb3VudEZvckNhbGMiDSR0MDQ5ODUzNDk5NjEiDSR0MDUwMjM5NTAzOTUiDXVuc3Rha2VBbW91bnQiCnVuc3Rha2VJbnYiDSR0MDUxMzAwNTE0NTEiDSR0MDUyMDE3NTIyNjQiDSR0MDUyMjY3NTIzNzUiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig0kdDA1MzQ3MDUzNTUxIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0Ig0kdDA1NDY0NjU0NzI3Ig1jaGVja1BheW1lbnRzIg9jaGVja1Bvb2xTdGF0dXMiDSR0MDU1OTk5NTYwODAiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIMY2hlY2tBbW91bnRzIg0kdDA1NzUyMTU3NjAyIgthbXRBc3NldFN0ciINcHJpY2VBc3NldFN0ciIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNTg4MDY1ODg3MCIQa0xwVXBkYXRlQWN0aW9ucyIKYW10QXNzZXRJZCIMcHJpY2VBc3NldElkIg1wb29sTFBCYWxhbmNlIhJhY2NBbXRBc3NldEJhbGFuY2UiFGFjY1ByaWNlQXNzZXRCYWxhbmNlIgpwcmljZXNMaXN0Ig9scEFtdEFzc2V0U2hhcmUiEWxwUHJpY2VBc3NldFNoYXJlIgpwb29sV2VpZ2h0IgxjdXJQcmljZUNhbGMiDGFtQmFsYW5jZVJhdyIMcHJCYWxhbmNlUmF3Ig9hbUJhbGFuY2VSYXdYMTgiD3ByQmFsYW5jZVJhd1gxOCIQcGF5bWVudExwQXNzZXRJZCIMcGF5bWVudExwQW10IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiDSR0MDY3NTMyNjc2MDEiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaH8AAWEACAABYgCAwtcvAAFjCQC2AgEAgMLXLwABZAkAtgIBAICAkLu61q3wDQABZQkAtgIBAAAAAWYJALYCAQAAAAFnCQC2AgEAAQABaAkAtgIBAAIAAWkCBVdBVkVTAAFqAgJfXwABawABAAFsAAIAAW0AAwABbgAEAAFvAAEAAXAAAgABcQADAAFyAAQAAXMABQABdAAGAAF1AAcAAXYACAABdwAJAAF4AAoAAXkAAQABegACAAFBAAMAAUIAAQABQwAHAQFEAgFFAUYJALwCAwkAtgIBBQFFBQFkCQC2AgEFAUYBAUcCAUUBRgkAvAIDBQFFBQFkBQFGAQFIAgFJAUoJAKADAQkAvAIDBQFJCQC2AgEFAUoFAWQBAUsDAUkBSgFMCQCgAwEJAL0CBAUBSQkAtgIBBQFKBQFkBQFMAQFNAwFOAU8BUAkAawMFAU4FAU8FAVABAVEBAUkDCQBmAgAABQFJCQEBLQEFAUkFAUkBAVIBAUkDCQC/AgIFAWUFAUkJAL4CAQUBSQUBSQEBUwACECVzX19zd2FwQ29udHJhY3QBAVQAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFVAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVYAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVcAAhElcyVzX19wcmljZV9fbGFzdAEBWAIBWQFaCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBWQkAzAgCCQCkAwEFAVoFA25pbAUBagECYWECAmFiAmFjCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCYWICAl9fBQJhYwECYWQCAmFiAmFjCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCYWICAl9fBQJhYwECYWUAAg8lc19fYW1vdW50QXNzZXQBAmFmAAIOJXNfX3ByaWNlQXNzZXQAAmFnAgclc19fZmVlAAJhaAkAawMACgUBYgCQTgACYWkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWcFAmFoAAJhagkAuQkCCQDMCAICAiVzCQDMCAICA2tMcAUDbmlsBQFqAAJhawkAuQkCCQDMCAICAiVzCQDMCAICEmtMcFJlZnJlc2hlZEhlaWdodAUDbmlsBQFqAAJhbAkAuQkCCQDMCAICAiVzCQDMCAICD3JlZnJlc2hLTHBEZWxheQUDbmlsBQFqAAJhbQAeAAJhbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhbAUCYW0BAmFvAQJhcAkAuQkCCQDMCAICBCVzJXMJAMwIAgINc3Rha2VkQmFsYW5jZQkAzAgCBQJhcAUDbmlsBQFqAQJhcQECYXAJALkJAgkAzAgCAgQlcyVzCQDMCAICEXNoYXJlQXNzZXRCYWxhbmNlCQDMCAIFAmFwBQNuaWwFAWoBAmFyAQJhcAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYW8BBQJhcAAAAQJhcwECYXAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmFxAQUCYXAAAAECYXQAAhElc19fZmFjdG9yeUNvbmZpZwECYXUAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmF2AQJhdwkArAICCQCsAgICCCVzJXMlc19fBQJhdwIgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQBAmF4AgJheQJhegkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYXkCAl9fBQJhegIIX19jb25maWcBAmFBAQJhQgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhQgECYUMAAgwlc19fc2h1dGRvd24BAmFEAQJhRQkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FAmFFAQJhRgACFyVzX19hbGxvd2VkTHBTY3JpcHRIYXNoAAJhRwIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmFIBAJhSQJhSgJhSwJhTAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAKUDAQUCYUkCAiAoBQJhSgIBKQINIHNlbmRlclZhbGlkPQkApQMBBQJhSwIOIG1hdGNoZXJWYWxpZD0JAKUDAQUCYUwBAmFNAgJhTgJhTwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFOBQJhTwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhTgkAzAgCAgEuCQDMCAIFAmFPCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFQAgJhTgJhTwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFOBQJhTwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhTgkAzAgCAgEuCQDMCAIFAmFPCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFRAQJhUgkAAgEJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhUgUDbmlsAgEgAQJhUwECYVIJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhUgUDbmlsAgEgAAJhVAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFNAgUEdGhpcwkBAVQAAAJhVQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFNAgUCYVQFAmFHAAJhVgoAAmFXCQD8BwQFAmFUAhBnZXRJbkZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVcCA0ludAUCYVcJAAIBCQCsAgIJAAMBBQJhVwIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJhWAoAAmFXCQD8BwQFAmFUAhFnZXRPdXRGZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFXAgNJbnQFAmFXCQACAQkArAICCQADAQUCYVcCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAECYVkACQELdmFsdWVPckVsc2UCCQCbCAIFAmFUCQECYUMABwECYVoACQDZBAEJAQJhTQIFAmFUCQECYXUAAQJiYQAEAmJiCQECYU0CBQR0aGlzCQECYWUABAJiYwkBAmFNAgUEdGhpcwkBAmFmAAQCYXoJAQJhUAIFAmFUCQECYUEBBQJiYwQCYXkJAQJhUAIFAmFUCQECYUEBBQJiYgkAtQkCCQECYU0CBQJhVAkBAmF4AgkApAMBBQJheQkApAMBBQJhegUBagECYmQBAmJlAwkAAAIFAmJlBQFpBQR1bml0CQDZBAEFAmJlAQJiZgECYmUDCQAAAgUCYmUFBHVuaXQFAWkJANgEAQkBBXZhbHVlAQUCYmUBAmJnAQJiaAkAmQoHCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmJoBQFvCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmgFAXAJANkEAQkAkQMCBQJiaAUBcQkBAmJkAQkAkQMCBQJiaAUBcgkBAmJkAQkAkQMCBQJiaAUBcwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJoBQF0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmgFAXUAAmJpCQECYmcBCQECYmEAAAJiagUCYmkAAmJrCAUCYmoCXzEAAmJsCAUCYmoCXzIAAmJtCAUCYmoCXzMAAmJuCAUCYmoCXzQAAmJvCAUCYmoCXzUAAmJwCAUCYmoCXzYAAmJxCAUCYmoCXzcBAmJyAAkAtQkCCQECYU0CBQJhVAkBAmF0AAUBagACYnMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJicgAFAUICGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MAAmJ0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYnIABQFDAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAQJidQoCYnYCYncCYngCYnkCYnoCYkECYkICYkMCYkQCYkUJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJ2CQDMCAIJAKQDAQUCYncJAMwIAgkApAMBBQJieAkAzAgCCQCkAwEFAmJ5CQDMCAIJAKQDAQUCYnoJAMwIAgkApAMBBQJiQQkAzAgCCQCkAwEFAmJCCQDMCAIJAKQDAQUCYkMJAMwIAgkApAMBBQJiRAkAzAgCCQCkAwEFAmJFBQNuaWwFAWoBAmJGBgJiRwJiSAJiSQJieQJiQgJiQwkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJHCQDMCAIJAKQDAQUCYkgJAMwIAgkApAMBBQJiSQkAzAgCCQCkAwEFAmJ5CQDMCAIJAKQDAQUCYkIJAMwIAgkApAMBBQJiQwUDbmlsBQFqAQJiSgECYXAEAmJLAwkAAAIFAmFwAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJhcAQCYkwJAGUCCQBkAgUCYksJAQJhcgEFAmFwCQECYXMBBQJhcAkAlgMBCQDMCAIAAAkAzAgCBQJiTAUDbmlsAQJiTQICYk4CYk8JALwCAwUCYk4FAWQFAmJPAQJiUAMCYk4CYk8BTAkAvQIEBQJiTgUBZAUCYk8FAUwBAmJRAQJiUgQCYlMJAPwHBAUCYlICB2dldFJhdGUFA25pbAUDbmlsAwkAAAIFAmJTBQJiUwQCYlQFAmJTAwkAAQIFAmJUAgNJbnQEAmJVBQJiVAUCYlUJAQJhUQECIHByb3h5LmdldFJhdGUoKSB1bmV4cGVjdGVkIHZhbHVlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJiVgQCYXACYlcCYlgCYlIEAmJZCQECYXIBBQJhcAMJAAACBQJiWQUCYlkEAmJaCQECYXMBBQJiWAMJAAACBQJiWgUCYloEAmNhCQECYmQBBQJhcAMJAGYCBQJiVwAABAJjYgkA/AcEBQJiUgIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjYQUCYlcFA25pbAMJAAACBQJjYgUCY2IEAmJUBQJjYgMJAAECBQJiVAIDSW50BAJjYwUCYlQEAmNkCQBkAgUCYlkFAmJXBAJjZQkAZAIFAmJaBQJjYwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFvAQUCYXAFAmNkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXEBBQJiWAUCY2UFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNmBgJhcAJiVwJiWAJiUgJjZwJjaAQCYlkJAQJhcgEFAmFwAwkAAAIFAmJZBQJiWQQCYloJAQJhcwEFAmJYAwkAAAIFAmJaBQJiWgQCY2kJAQJiUQEFAmJSAwkAAAIFAmNpBQJjaQQCY2oJAGsDBQJjZwUCYlkFAmJaBAJjawkBAmJkAQUCYlgEAmNsCQBrAwUCY2cFAmJXBQJjagQCY20JAGsDBQJjZwUCYlcFAmNpBAJjbgkAlgMBCQDMCAIAAAkAzAgCCQBlAgUCY2wFAmNtBQNuaWwDCQBmAgUCY20AAAQCY28JAPwHBAUCYlICCHdpdGhkcmF3BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNrBQJjbQUDbmlsAwkAAAIFAmNvBQJjbwQCYlQFAmNvAwkAAQIFAmJUAgNJbnQEAmNwBQJiVAQCY2QJAGUCBQJiWQUCY3AEAmNlCQBlAgkAZQIFAmJaBQJjbQUCY24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhbwEFAmFwBQJjZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFxAQUCYlgFAmNlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNoBQJjbgkBAmJkAQUCYlgFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNxAQJhcAQCYlQJAPwHBAUCYVQCGmdldFBvb2xMZWFzZUNvbmZpZ1JFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwkAzAgCBQJhcAUDbmlsBQNuaWwDCQABAgUCYlQCMChCb29sZWFuLCBJbnQsIEludCwgU3RyaW5nLCBTdHJpbmcsIEludCwgU3RyaW5nKQQCY3IFAmJUBQJjcgkBAmFRAQkArAICCQCsAgICAVsFAmFwAh1dIGdldExlYXNlUHJveHlDb25maWcoKSBlcnJvcgECY3MHAmN0AmFwAmJYAmN1AmJSAmNnAmNoBAJiWQkBAmFyAQUCYXADCQAAAgUCYlkFAmJZBAJiWgkBAmFzAQUCYlgDCQAAAgUCYloFAmJaBAJjdgkAlgMBCQDMCAIAAAkAzAgCCQBlAgkBAmJKAQUCYXAFAmN1BQNuaWwEAmN3CQBrAwUCY3QFAmN2AGQEAmN4CQBlAgUCYlkFAmN3AwkAAAIFAmN4AAAFA25pbAMJAGYCAAAFAmN4BAJjeQkBAS0BBQJjeAkBAmJWBAUCYXAFAmN5BQJiWAUCYlIEAmN6BQJjeAkBAmNmBgUCYXAFAmN6BQJiWAUCYlIFAmNnBQJjaAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECY0EBAmFwBAJjQgkBAmNxAQUCYXAEAmNDCAUCY0ICXzEEAmNECAUCY0ICXzIEAmN1CAUCY0ICXzMEAmNFCAUCY0ICXzQEAmNGCAUCY0ICXzUEAmNnCAUCY0ICXzYEAmNHCAUCY0ICXzcDBQJjQwkBAmNzBwUCY0QFAmFwBQJjRgUCY3UJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNFBQJjZwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCY0cFA25pbAECY0gCAmFwAmNJBAJjSgkBAmNxAQUCYXAEAmNDCAUCY0oCXzEEAmNECAUCY0oCXzIEAmN1CAUCY0oCXzMEAmNFCAUCY0oCXzQEAmNGCAUCY0oCXzUEAmNnCAUCY0oCXzYEAmNHCAUCY0oCXzcDBQJjQwQCY0sJAJYDAQkAzAgCAAAJAMwIAgkAZQIJAGUCCQECYkoBBQJhcAUCY0kFAmN1BQNuaWwDCQAAAgUCY0sFAmNLBAJjZAkAawMFAmNEBQJjSwBkAwkAAAIFAmNkBQJjZAQCY0wJAJYDAQkAzAgCAAAJAMwIAgkAZQIJAQJhcgEFAmFwBQJjZAUDbmlsAwkAAAIFAmNMBQJjTAkBAmNmBgUCYXAFAmNMBQJjRgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCY0UFAmNnCQERQGV4dHJOYXRpdmUoMTA2MikBBQJjRwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsAQJjTQICY04CY08EAmNQCQECY0gCCQECYU0CBQR0aGlzCQECYWUABQJjTgQCY1EJAQJjSAIJAQJhTQIFBHRoaXMJAQJhZgAFAmNPCQDOCAIFAmNQBQJjUQECY1IEAmNTAmNUAmNVAmNWBAJjVwkBAUQCBQJjVQUCY1MEAmNYCQEBRAIFAmNWBQJjVAkBAmJNAgUCY1gFAmNXAQJjWQMCY1UCY1YCY1oEAmRhCQECYmEABAJkYgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRhBQF0BAJkYwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRhBQF1BAJkZAkBAmNSBAUCZGIFAmRjBQJjVQUCY1YEAmJPCQEBRAIFAmNVBQJkYgQCYk4JAQFEAgUCY1YFAmRjBAJkZQkBAUQCBQJjWgUBYgQCZGYJAQJiTQIFAmJPBQJkZQQCZGcJAQJiTQIFAmJOBQJkZQkAzAgCBQJkZAkAzAgCBQJkZgkAzAgCBQJkZwUDbmlsAQJkaAMCY1UCY1YCY1oEAmRpCQECY1kDBQJjVQUCY1YFAmNaCQDMCAIJAQFIAgkAkQMCBQJkaQAABQFiCQDMCAIJAQFIAgkAkQMCBQJkaQABBQFiCQDMCAIJAQFIAgkAkQMCBQJkaQACBQFiBQNuaWwBAmRqBAJkawJkbAJkbQJhYgQCZGEJAQJiYQAEAmRuCQCRAwIFAmRhBQFxBAJkbwkAkQMCBQJkYQUBcgQCZHAJAJEDAgUCZGEFAXMEAmNTCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGEFAXQEAmNUCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGEFAXUEAmRxCQCRAwIFAmRhBQFwBAJkcggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmRuCQCsAgIJAKwCAgIGQXNzZXQgBQJkbgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJkbgUCZGwJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmRzCQECYkoBBQJkbwQCZHQJAQFEAgUCZHMFAmNTBAJkdQkBAmJKAQUCZHAEAmR2CQEBRAIFAmR1BQJjVAQCZHcJAQJiTQIFAmR2BQJkdAQCZHgJAQFIAgUCZHcFAWIEAmR5CQEBRAIFAmRtBQFiBAJkegkBAUQCBQJkcgUBYgQCZEEJALwCAwUCZHQFAmR5BQJkegQCZEIJALwCAwUCZHYFAmR5BQJkegQCZEMJAQFLAwUCZEEFAmNTBQVGTE9PUgQCZEQJAQFLAwUCZEIFAmNUBQVGTE9PUgQCZEUDCQAAAgUCZGsCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFiBQJkQwMJAAACBQJkbwIFV0FWRVMFBHVuaXQJANkEAQUCZG8JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmREAwkAAAIFAmRwAgVXQVZFUwUEdW5pdAkA2QQBBQJkcAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQCCQClCAEFAmFiBQJkawkBAmJGBgUCZEMFAmREBQJkbQUCZHgFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZHgJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZHgFA25pbAkAnAoKBQJkQwUCZEQFAmRvBQJkcAUCZHMFAmR1BQJkcgUCZHcFAmRxBQJkRQECZEYJAmRrAmRHAmRIAmRJAmRKAmRLAmFiAmRMAmRNBAJkYQkBAmJhAAQCZG4JANkEAQkAkQMCBQJkYQUBcQQCZE4JAJEDAgUCZGEFAXIEAmRPCQCRAwIFAmRhBQFzBAJkUAkAkQMCBQJkYQUBdgQCZFEJAJEDAgUCZGEFAXcEAmRiCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGEFAXQEAmRjCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGEFAXUEAmRxCQCRAwIFAmRhBQFwBAJkcggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkbgkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJkbgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmRSCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmRJCQDZBAECBVdBVkVTBAJkUwkA2AQBCQELdmFsdWVPckVsc2UCBQJkSwkA2QQBAgVXQVZFUwMDCQECIT0CBQJkTgUCZFIGCQECIT0CBQJkTwUCZFMJAAIBAiJJbnZhbGlkIGFtdCBvciBwcmljZSBhc3NldCBwYXNzZWQuBAJkcwMFAmRMCQECYkoBBQJkTgkAZQIJAQJiSgEFAmROBQJkSAQCZHUDBQJkTAkBAmJKAQUCZE8JAGUCCQECYkoBBQJkTwUCZEoEAmRUCQEBRAIFAmRIBQJkYgQCZFUJAQFEAgUCZEoFAmRjBAJkVgkBAmJNAgUCZFUFAmRUBAJkdAkBAUQCBQJkcwUCZGIEAmR2CQEBRAIFAmR1BQJkYwQCZFcDCQAAAgUCZHIAAAQCZHcFAWUEAmRYBQFlBAJkZQkAdgYJALkCAgUCZFQFAmRVAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBSAIFAmRlBQFiCQEBSAIFAmRUBQJkYgkBAUgCBQJkVQUCZGMJAQJiTQIJALcCAgUCZHYFAmRVCQC3AgIFAmR0BQJkVAUCZFgEAmR3CQECYk0CBQJkdgUCZHQEAmRYCQC8AgMJAQFSAQkAuAICBQJkdwUCZFYFAWQFAmR3BAJkWQkBAUQCBQJkRwUBYgMDCQECIT0CBQJkdwUBZQkAvwICBQJkWAUCZFkHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmRYAh4gZXhjZWVkZWQgdGhlIHBhc3NlZCBsaW1pdCBvZiAJAKYDAQUCZFkEAmR6CQEBRAIFAmRyBQFiBAJkWgkAvQIEBQJkVAkBAmJQAwUCZHYFAmR0BQdDRUlMSU5HBQFkBQdDRUlMSU5HBAJlYQkAvQIEBQJkVQUBZAkBAmJQAwUCZHYFAmR0BQVGTE9PUgUHQ0VJTElORwQCZWIDCQC/AgIFAmRaBQJkVQkAlAoCBQJlYQUCZFUJAJQKAgUCZFQFAmRaBAJlYwgFAmViAl8xBAJlZAgFAmViAl8yBAJkZQkAvQIEBQJkegUCZWQFAmR2BQVGTE9PUgkAlwoFCQEBSwMFAmRlBQFiBQVGTE9PUgkBAUsDBQJlYwUCZGIFB0NFSUxJTkcJAQFLAwUCZWQFAmRjBQdDRUlMSU5HBQJkdwUCZFgEAmVlCAUCZFcCXzEEAmVmCAUCZFcCXzIEAmVnCAUCZFcCXzMEAmR4CQEBSAIIBQJkVwJfNAUBYgQCZWgJAQFIAggFAmRXAl81BQFiAwkAZwIAAAUCZWUJAAIBAjZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAmVpAwkBASEBBQJkTQAABQJlZQQCZWoJAGUCBQJkSAUCZWYEAmVrCQBlAgUCZEoFAmVnBAJlbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJkeAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkeAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECBQJhYgUCZGsJAQJidQoFAmVmBQJlZwUCZWkFAmR4BQJkRwUCZWgFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVqBQJlawUDbmlsCQCfCg0FAmVlBQJlaQUCZHgFAmRzBQJkdQUCZHIFAmRuBQJkcQUCZWwFAmVqBQJlawUCZEkFAmRLAQJlbQMCZW4CZW8CZHIEAmVwCQEBRwIFAmVuCQC2AgEFAmJwBAJlcQkBAUcCBQJlbwkAtgIBBQJicQQCZXIJALwCAwkAdgYJALkCAgUCZXAFAmVxAAAJALYCAQAFAAEAEgUERE9XTgUBZwUCZHIDCQAAAgUCZHIFAWYFAWYFAmVyAQJlcwMCZXQCZXUCZXYEAmV3CQC4AgIJALYCAQkBAmJKAQkBAmJmAQUCYm4FAmV0BAJleAkAuAICCQC2AgEJAQJiSgEJAQJiZgEFAmJvBQJldQQCZXkJALgCAgkAtgIBCAkBBXZhbHVlAQkA7AcBBQJibQhxdWFudGl0eQUCZXYEAmV6CQECZW0DBQJldwUCZXgFAmV5BQJlegECZUEDAmVCAmVDAmV2BAJldwkAZAIJAQJiSgEJAQJiZgEFAmJuBQJlQgQCZXgJAGQCCQECYkoBCQECYmYBBQJibwUCZUMEAmV5CQBkAggJAQV2YWx1ZQEJAOwHAQUCYm0IcXVhbnRpdHkFAmV2BAJlcgkBAmVtAwkAtgIBBQJldwkAtgIBBQJleAkAtgIBBQJleQQCZUQJAMwIAgkBDEludGVnZXJFbnRyeQIFAmFrBQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYWoJAKYDAQUCZXIFA25pbAkAlAoCBQJlRAUCZXIBAmVFAgJlRgJlcgMJAMACAgUCZXIFAmVGBgkBAmFRAQkAuQkCCQDMCAICInVwZGF0ZWQgS0xwIGxvd2VyIHRoYW4gY3VycmVudCBLTHAJAMwIAgkApgMBBQJlRgkAzAgCCQCmAwEFAmVyBQNuaWwCASABAmVHAQJlSAQCZXcJAQJiSgEJAQJiZgEFAmJuBAJleAkBAmJKAQkBAmJmAQUCYm8EAmVJCAUCZUgGYW1vdW50BAJlSgkAbgQIBQJlSAZhbW91bnQIBQJlSAVwcmljZQUBYgUFRkxPT1IEAmVLAwkAAAIIBQJlSAlvcmRlclR5cGUFA0J1eQkAlAoCBQJlSQkBAS0BBQJlSgkAlAoCCQEBLQEFAmVJBQJlSgQCZUIIBQJlSwJfMQQCZUMIBQJlSwJfMgMDAwkBAmFZAAYJAAACBQJibAUBbQYJAAACBQJibAUBbgkAAgECHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQDAwkBAiE9AggIBQJlSAlhc3NldFBhaXILYW1vdW50QXNzZXQFAmJuBgkBAiE9AggIBQJlSAlhc3NldFBhaXIKcHJpY2VBc3NldAUCYm8JAAIBAhNXcm9uZyBvcmRlciBhc3NldHMuBAJlTAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYWoCATAJAQJhUwECC2ludmFsaWQga0xwBAJlTQkBAmVBAwUCZUIFAmVDAAAEAmVOCAUCZU0CXzEEAmVPCAUCZU0CXzIEAmVQCQDAAgIFAmVPBQJlTAQCZVEJALkJAgkAzAgCAgRrTHA9CQDMCAIJAKYDAQUCZUwJAMwIAgIIIGtMcE5ldz0JAMwIAgkApgMBBQJlTwkAzAgCAhQgYW1vdW50QXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmV3CQDMCAICEyBwcmljZUFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJleAkAzAgCAhkgYW1vdW50QXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZUIJAMwIAgIYIHByaWNlQXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZUMJAMwIAgIIIGhlaWdodD0JAMwIAgkApAMBBQZoZWlnaHQFA25pbAIACQCUCgIFAmVQBQJlUQECZVIBAmVTAwkBAiE9AgkAkAMBCAUCZVMIcGF5bWVudHMAAQkAAgECHWV4YWN0bHkgMSBwYXltZW50IGlzIGV4cGVjdGVkBAJlVAkBBXZhbHVlAQkAkQMCCAUCZVMIcGF5bWVudHMAAAQCZGwJAQV2YWx1ZQEIBQJlVAdhc3NldElkBAJlVQgFAmVUBmFtb3VudAQCZFcJAQJkagQJANgEAQgFAmVTDXRyYW5zYWN0aW9uSWQJANgEAQUCZGwFAmVVCAUCZVMGY2FsbGVyBAJkQwgFAmRXAl8xBAJkRAgFAmRXAl8yBAJkcQkBDXBhcnNlSW50VmFsdWUBCAUCZFcCXzkEAmRFCAUCZFcDXzEwAwMJAQJhWQAGCQAAAgUCZHEFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmRxCQCXCgUFAmRDBQJkRAUCZVUFAmRsBQJkRQECZVYDAmVTAmRHAmRNAwkBAiE9AgkAkAMBCAUCZVMIcGF5bWVudHMAAgkAAgECH2V4YWN0bHkgMiBwYXltZW50cyBhcmUgZXhwZWN0ZWQEAmVXCQEFdmFsdWUBCQCRAwIIBQJlUwhwYXltZW50cwAABAJlWAkBBXZhbHVlAQkAkQMCCAUCZVMIcGF5bWVudHMAAQQCZVkJAQJkRgkJANgEAQgFAmVTDXRyYW5zYWN0aW9uSWQFAmRHCAUCZVcGYW1vdW50CAUCZVcHYXNzZXRJZAgFAmVYBmFtb3VudAgFAmVYB2Fzc2V0SWQJAKUIAQgFAmVTBmNhbGxlcgcFAmRNBAJkcQkBDXBhcnNlSW50VmFsdWUBCAUCZVkCXzgDAwMJAQJhWQAGCQAAAgUCZHEFAWwGCQAAAgUCZHEFAW4JAAIBCQCsAgICLFB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmRxBQJlWQECZVoBAmJXBAJmYQkA/AcEBQJhVAIEZW1pdAkAzAgCBQJiVwUDbmlsBQNuaWwDCQAAAgUCZmEFAmZhBAJmYgQCYlQFAmZhAwkAAQIFAmJUAgdBZGRyZXNzBAJmYwUCYlQJAPwHBAUCZmMCBGVtaXQJAMwIAgUCYlcFA25pbAUDbmlsBQR1bml0AwkAAAIFAmZiBQJmYgUCYlcJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZkAgJiVwJhaQQCZmUDCQAAAgUCYWkAAAAACQBrAwUCYlcFAmFpBQFiCQCUCgIJAGUCBQJiVwUCZmUFAmZlAQJmZgQCZmcCZmgCYWICYWMEAmZpCQAAAgUCYWMFBHVuaXQEAmZqCQECYkoBCQECYmYBBQJibgQCZmsJAQJiSgEJAQJiZgEFAmJvBAJmbAMJAAACBQJmaAUCYm4GAwkAAAIFAmZoBQJibwcJAQJhUQECDWludmFsaWQgYXNzZXQEAmZtAwUCZmkJAJQKAgUCZmoFAmZrAwUCZmwJAJQKAgkAZQIFAmZqBQJmZwUCZmsJAJQKAgUCZmoJAGUCBQJmawUCZmcEAmZuCAUCZm0CXzEEAmZvCAUCZm0CXzIEAmZwAwUCZmwJAJQKAgUCZmcAAAkAlAoCAAAFAmZnBAJmcQgFAmZwAl8xBAJmcggFAmZwAl8yBAJlSQgJAQJmZAIFAmZxBQJhVgJfMQQCZUoICQECZmQCBQJmcgUCYVYCXzEEAmZzCQECZmQCBQJmZwUCYVYEAmZ0CAUCZnMCXzEEAmZlCAUCZnMCXzIEAmZ1CQBkAgUCZm4FAmVJBAJmdgkAZAIFAmZvBQJlSgQCZncJAQJiTQIJAQFEAgUCZnYFAmJxCQEBRAIFAmZ1BQJicAQCZngJAQFIAgUCZncFAWIEAmZ5AwUCZmwFAmZuBQJmbwQCZnoJALYCAQUCZnkEAmZBCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYm0JAKwCAgkArAICAgZhc3NldCAJANgEAQUCYm0CDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJmQgMJAL8CAgUCZkEFAWYGCQECYVEBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmZCBQJmQgQCZkMJALYCAQUCZnQEAmZECQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmZBCQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZkMFAWQFAmZ6ABIAEgUERE9XTgUBZAUBZAUDbmlsBAJlbAMFAmZpBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZngJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZngJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgkApQgBCQEFdmFsdWUBBQJhYgkA2AQBCQEFdmFsdWUBBQJhYwkBAmJ1CgUCZnEFAmZyBQJmRAUCZngAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJmRQkBAmJNAgkBAUQCBQJmbwUCYnEJAQFEAgUCZm4FAmJwBAJmRgkBAUgCBQJmRQUBYgQCZkcEAmZIAwUCZmwJAJQKAgUCZnEFAmZuCQCUCgIFAmZyBQJmbwQCYlcIBQJmSAJfMQQCZkkIBQJmSAJfMgQCZkoJAKADAQkAvAIDBQJmQQkAtgIBCQBpAgUCYlcAAgkAtgIBBQJmSQkAawMJAGUCBQJmRAUCZkoFAWIFAmZKCQCXCgUFAmZEBQJlbAUCZmUFAmZHBQJmbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZksFAmZMAmZ0AmZoAmFiAmFjBAJmaQkAAAIFAmFjBQR1bml0BAJkYQkBAmJhAAQCZGIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkYQUBdAQCZGMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkYQUBdQQCZk0JAMwIAgMJAAACBQJmaAUCYm0GCQECYVEBAhBpbnZhbGlkIGxwIGFzc2V0BQNuaWwDCQAAAgUCZk0FAmZNBAJmTgMJAAACBQJmTAUCYm4GAwkAAAIFAmZMBQJibwcJAQJhUQECDWludmFsaWQgYXNzZXQEAmZPAwUCZk4JALYCAQkBAmJKAQkBAmJmAQUCYm4JALYCAQkBAmJKAQkBAmJmAQUCYm8EAmZQAwUCZk4FAmRiBQJkYwQCZlEJAQJiSgEJAQJiZgEFAmJuBAJmUgkBAmJKAQkBAmJmAQUCYm8EAmZTAwUCZk4FAmZRBQJmUgQCZlQJALYCAQUCZlMEAmZBCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYm0JAKwCAgkArAICAgZhc3NldCAJANgEAQUCYm0CDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJmVQkAtgIBBQJmdAQCZlYJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZk8JALgCAgUBZAkAdgYJALgCAgUBZAkAugICCQC5AgIFAmZVBQFkBQJmQQASBQFoAAAAEgUERE9XTgUBZAUDbmlsBAJmVwkBAmZkAgUCZlYFAmFYBAJmWAgFAmZXAl8xBAJmZQgFAmZXAl8yBAJmWQMFAmZOCQCWCgQFAmZYAAAJAGUCBQJmUQUCZlYFAmZSCQCWCgQAAAUCZlgFAmZRCQBlAgUCZlIFAmZWBAJmWggFAmZZAl8xBAJnYQgFAmZZAl8yBAJnYggFAmZZAl8zBAJnYwgFAmZZAl80BAJmdwkBAmJNAgkBAUQCBQJnYwUCYnEJAQFEAgUCZ2IFAmJwBAJmeAkBAUgCBQJmdwUBYgQCZWwDBQJmaQUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQkBBXZhbHVlAQUCYWIJANgEAQkBBXZhbHVlAQUCYWMJAQJiRgYFAmZaBQJnYQUCZnQFAmZ4BQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmZ4CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmZ4BQNuaWwEAmZFCQECYk0CCQEBRAIFAmZSBQJicQkBAUQCBQJmUQUCYnAEAmZGCQEBSAIFAmZFBQFiBAJmRwQCZ2QJAGgCCQCgAwEJALwCAwUCZk8FAmZVBQJmQQACCQBrAwkAZQIFAmZYBQJnZAUBYgUCZ2QJAJcKBQUCZlgFAmVsBQJmZQUCZkcFAmZOCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJnZQAEAmJUCQCiCAEJAQFVAAMJAAECBQJiVAIGU3RyaW5nBAJnZgUCYlQJANkEAQUCZ2YDCQABAgUCYlQCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZ2cABAJiVAkAoggBCQEBVgADCQABAgUCYlQCBlN0cmluZwQCZ2YFAmJUCQDZBAEFAmdmAwkAAQIFAmJUAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmdoAQJlUwQCYlQJAQJnZQADCQABAgUCYlQCCkJ5dGVWZWN0b3IEAmdpBQJiVAkAAAIIBQJlUw9jYWxsZXJQdWJsaWNLZXkFAmdpAwkAAQIFAmJUAgRVbml0CQAAAggFAmVTBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJnagECZVMEAmdrCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmJUCQECZ2UAAwkAAQIFAmJUAgpCeXRlVmVjdG9yBAJnaQUCYlQDCQAAAggFAmVTD2NhbGxlclB1YmxpY0tleQUCZ2kGBQJnawMJAAECBQJiVAIEVW5pdAMJAAACCAUCZVMGY2FsbGVyBQR0aGlzBgUCZ2sJAAIBAgtNYXRjaCBlcnJvch4CZVMBCXJlYmFsYW5jZQAJAM4IAgkBAmNBAQkBAmFNAgUEdGhpcwkBAmFlAAkBAmNBAQkBAmFNAgUEdGhpcwkBAmFmAAJlUwEhY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcFJFQURPTkxZAwJnbAJnbQJnbgQCZ28DCQAAAgUCZ20HBAJncAkBAmFNAgUEdGhpcwkBAmFmAAQCZ3EJAQJhTQIFBHRoaXMJAQJhZQAJAJQKAgUCZ3AFAmdxBAJncAkBAmFNAgUEdGhpcwkBAmFlAAQCZ3EJAQJhTQIFBHRoaXMJAQJhZgAJAJQKAgUCZ3AFAmdxBAJncAgFAmdvAl8xBAJncQgFAmdvAl8yBAJncgkBAmJKAQUCZ3EEAmdzCQECYkoBBQJncAQCZ3QJAGsDBQJncwUCZ2wJAGQCBQJncgUCZ2wEAmd1CQC5AgIJALYCAQUCZ3IJALYCAQUCZ3MEAmd2CQC5AgIJALcCAgkAtwICCQC2AgEJAQJiSgEFAmdxCQC2AgEFAmdsCQC2AgEFAmduCQC4AgIJALYCAQkBAmJKAQUCZ3AJALYCAQUCZ3QEAmd3AwkAwAICBQJndgUCZ3UGCQACAQIUbmV3IEsgaXMgZmV3ZXIgZXJyb3IDCQAAAgUCZ3cFAmd3CQCUCgIFA25pbAUCZ3QJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVMBJmNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBBbmRTZW5kVG9rZW5zBQJnbAJnbQJneAJneQJnbgQCZ3oKAAJhVwkA/AcEBQJhVAIXZ2V0U3dhcENvbnRyYWN0UkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAmFXAgZTdHJpbmcFAmFXCQACAQkArAICCQADAQUCYVcCGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQCZk0JAMwIAgMJAGcCCAkBBXZhbHVlAQkAkQMCCAUCZVMIcGF5bWVudHMAAAZhbW91bnQFAmdsBgkBAmFRAQIMV3JvbmcgYW1vdW50CQDMCAIDCQAAAggFAmVTBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ3oGCQECYVEBAhFQZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFAmZNBQJmTQQCZVQJAQV2YWx1ZQEJAJEDAggFAmVTCHBheW1lbnRzAAAEAmdxCQECYmYBCAUCZVQHYXNzZXRJZAQCZ3ADCQAAAgUCZ20HCQECYU0CBQR0aGlzCQECYWYACQECYU0CBQR0aGlzCQECYWUABAJncgkAZQIJAQJiSgEFAmdxCAkBBXZhbHVlAQkAkQMCCAUCZVMIcGF5bWVudHMAAAZhbW91bnQEAmdzCQECYkoBBQJncAQCZ3QJAGsDBQJncwUCZ2wJAGQCBQJncgUCZ2wEAmd1CQC5AgIJALYCAQUCZ3IJALYCAQUCZ3MEAmd2CQC5AgIJALcCAgkAtgIBCQECYkoBBQJncQkAtgIBBQJnbgkAuAICCQC2AgEJAQJiSgEFAmdwCQC2AgEFAmd0BAJndwMJAMACAgUCZ3YFAmd1BgkAAgECFG5ldyBLIGlzIGZld2VyIGVycm9yAwkAAAIFAmd3BQJndwQCZ0EDCQBnAgUCZ3QFAmd4BgkAAgECLEV4Y2hhbmdlIHJlc3VsdCBpcyBmZXdlciBjb2lucyB0aGFuIGV4cGVjdGVkAwkAAAIFAmdBBQJnQQQCZ0IJAQJjQQEFAmdxAwkAAAIFAmdCBQJnQgQCZ0MJAQJjSAIFAmdwBQJndAMJAAACBQJnQwUCZ0MJAJQKAgkAzggCCQDOCAIFAmdDBQJnQgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQJneQUCZ3QJAQJiZAEFAmdwBQNuaWwFAmd0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVTAQpzZXRNYW5hZ2VyAQJnRAQCZ0UJAQJnagEFAmVTAwkAAAIFAmdFBQJnRQQCZ0YJANkEAQUCZ0QDCQAAAgUCZ0YFAmdGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFWAAUCZ0QFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwEOY29uZmlybU1hbmFnZXIABAJnRwkBAmdnAAQCZ0gDCQEJaXNEZWZpbmVkAQUCZ0cGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmdIBQJnSAQCZ0kDCQAAAggFAmVTD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCZ0cGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmdJBQJnSQkAzAgCCQELU3RyaW5nRW50cnkCCQEBVQAJANgEAQkBBXZhbHVlAQUCZ0cJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVYABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVMBA3B1dAICZEcCZ0oDCQBmAgAABQJkRwkAAgECIEludmFsaWQgc2xpcHBhZ2VUb2xlcmFuY2UgcGFzc2VkBAJlWQkBAmVWAwUCZVMFAmRHBgQCZWkIBQJlWQJfMgQCZG4IBQJlWQJfNwQCZEUIBQJlWQJfOQQCZWoIBQJlWQNfMTAEAmVrCAUCZVkDXzExBAJnSwgFAmVZA18xMgQCZ0wIBQJlWQNfMTMEAmVXCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJlUwhwYXltZW50cwAABmFtb3VudAQCZVgJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmVTCHBheW1lbnRzAAEGYW1vdW50BAJlegkBAmVzAwUCZVcFAmVYCQC2AgEAAAMJAAACBQJlegUCZXoEAmZhCQD8BwQFAmFUAgRlbWl0CQDMCAIFAmVpBQNuaWwFA25pbAMJAAACBQJmYQUCZmEEAmZiBAJiVAUCZmEDCQABAgUCYlQCB0FkZHJlc3MEAmZjBQJiVAkA/AcEBQJmYwIEZW1pdAkAzAgCBQJlaQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZmIFAmZiBAJnTQMJAGYCBQJlagAACQD8BwQFAmJ0AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ0sFAmVqBQNuaWwFA25pbAMJAAACBQJnTQUCZ00EAmdOAwkAZgIFAmVrAAAJAPwHBAUCYnQCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnTAUCZWsFA25pbAUDbmlsAwkAAAIFAmdOBQJnTgQCZ08DBQJnSgQCZ1AJAPwHBAUCYnMCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRuBQJlaQUDbmlsAwkAAAIFAmdQBQJnUAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJlUwZjYWxsZXIFAmVpBQJkbgUDbmlsBAJnUQkBAmVBAwAAAAAAAAMJAAACBQJnUQUCZ1EEAmVyCAUCZ1ECXzIEAmdSCAUCZ1ECXzEEAmdTCQECZUUCBQJlegUCZXIDCQAAAgUCZ1MFAmdTBAJnVAkA/AcEBQR0aGlzAglyZWJhbGFuY2UFA25pbAUDbmlsAwkAAAIFAmdUBQJnVAkAzggCCQDOCAIFAmRFBQJnTwUCZ1IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVMBCnB1dEZvckZyZWUBAmdVAwkAZgIAAAUCZ1UJAAIBAhRJbnZhbGlkIHZhbHVlIHBhc3NlZAQCZVkJAQJlVgMFAmVTBQJnVQcEAmRFCAUCZVkCXzkEAmVXCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJlUwhwYXltZW50cwAABmFtb3VudAQCZVgJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmVTCHBheW1lbnRzAAEGYW1vdW50BAJlegkBAmVzAwUCZVcFAmVYCQC2AgEAAAMJAAACBQJlegUCZXoEAmdWCQECZUEDAAAAAAAABAJnUggFAmdWAl8xBAJlcggFAmdWAl8yBAJnUwkBAmVFAgUCZXoFAmVyAwkAAAIFAmdTBQJnUwkAzggCBQJkRQUCZ1IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVMBCXB1dE9uZVRrbgICZ1cCZ1gEAmdZCgACYVcJAPwHBAUCYVQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhVwIHQm9vbGVhbgUCYVcJAAIBCQCsAgIJAAMBBQJhVwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZ1oDAwMJAQJhWQAGCQAAAgUCYmwFAWwGCQAAAgUCYmwFAW4GBQJnWQQCZk0JAMwIAgMDCQEBIQEFAmdaBgkBAmdoAQUCZVMGCQECYVEBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJlUwhwYXltZW50cwABBgkBAmFRAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZk0FAmZNBAJoYQkAkQMCCAUCZVMIcGF5bWVudHMAAAQCZmgIBQJoYQdhc3NldElkBAJmZwgFAmhhBmFtb3VudAQCZXoDCQAAAgUCZmgFAmJuCQECZXMDCQC2AgEFAmZnCQC2AgEAAAkAtgIBAAADCQAAAgUCZmgFAmJvCQECZXMDCQC2AgEAAAkAtgIBBQJmZwkAtgIBAAAJAQJhUQECHnBheW1lbnQgYXNzZXQgaXMgbm90IHN1cHBvcnRlZAMJAAACBQJlegUCZXoEAmFiCAUCZVMGY2FsbGVyBAJhYwgFAmVTDXRyYW5zYWN0aW9uSWQEAmhiCQECZmYEBQJmZwUCZmgFAmFiBQJhYwMJAAACBQJoYgUCaGIEAmZsCAUCaGICXzUEAmhjCAUCaGICXzQEAmZlCAUCaGICXzMEAmVsCAUCaGICXzIEAmhkCAUCaGICXzEEAmhlAwMJAGYCBQJnVwAACQBmAgUCZ1cFAmhkBwkBAmFRAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJnVwUDbmlsAgAFAmhkBAJmYQkBAmVaAQUCaGUDCQAAAgUCZmEFAmZhBAJnTwMFAmdYBAJoZgkA/AcEBQJicwIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYm0FAmhlBQNuaWwDCQAAAgUCaGYFAmhmBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmVTBmNhbGxlcgUCaGUFAmJtBQNuaWwEAmhnAwkAZgIFAmZlAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVUFAmZlBQJmaAUDbmlsBQNuaWwEAmhoAwkAAAIFBHRoaXMFAmFVCQCUCgIAAAAAAwUCZmwJAJQKAgkBAS0BBQJmZQAACQCUCgIAAAkBAS0BBQJmZQQCZUIIBQJoaAJfMQQCZUMIBQJoaAJfMgQCaGkJAQJlQQMFAmVCBQJlQwAABAJnUggFAmhpAl8xBAJlcggFAmhpAl8yBAJlTAkBBXZhbHVlAQkAoggBBQJhagQCZ1MJAQJlRQIFAmV6BQJlcgMJAAACBQJnUwUCZ1MEAmdUCQD8BwQFBHRoaXMCCXJlYmFsYW5jZQUDbmlsBQNuaWwDCQAAAgUCZ1QFAmdUCQCUCgIJAM4IAgkAzggCCQDOCAIFAmVsBQJnTwUCaGcFAmdSBQJoZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwERcHV0T25lVGtuUkVBRE9OTFkCAmZoAmZnBAJoagkBAmZmBAUCZmcJAQJiZAEFAmZoBQR1bml0BQR1bml0BAJoZAgFAmhqAl8xBAJlbAgFAmhqAl8yBAJmZQgFAmhqAl8zBAJoYwgFAmhqAl80BAJmbAgFAmhqAl81CQCUCgIFA25pbAkAlQoDBQJoZAUCZmUFAmhjAmVTAQlnZXRPbmVUa24CAmhrAmdXBAJnWQoAAmFXCQD8BwQFAmFUAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVcCB0Jvb2xlYW4FAmFXCQACAQkArAICCQADAQUCYVcCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmhsAwMJAQJhWQAGCQAAAgUCYmwFAW4GBQJnWQQCZk0JAMwIAgMDCQEBIQEFAmhsBgkBAmdoAQUCZVMGCQECYVEBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJlUwhwYXltZW50cwABBgkBAmFRAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZk0FAmZNBAJmTAkBAmJkAQUCaGsEAmhhCQCRAwIIBQJlUwhwYXltZW50cwAABAJmaAgFAmhhB2Fzc2V0SWQEAmZ0CAUCaGEGYW1vdW50BAJlegkBAmVzAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlegUCZXoEAmFiCAUCZVMGY2FsbGVyBAJhYwgFAmVTDXRyYW5zYWN0aW9uSWQEAmhtCQECZksFBQJmTAUCZnQFAmZoBQJhYgUCYWMDCQAAAgUCaG0FAmhtBAJmTggFAmhtAl81BAJoYwgFAmhtAl80BAJmZQgFAmhtAl8zBAJlbAgFAmhtAl8yBAJobggFAmhtAl8xBAJiVwMDCQBmAgUCZ1cAAAkAZgIFAmdXBQJobgcJAQJhUQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ1cFA25pbAIABQJobgQCaG8JAPwHBAUCYVQCBGJ1cm4JAMwIAgUCZnQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZmgFAmZ0BQNuaWwDCQAAAgUCaG8FAmhvBAJnQwkBAmNIAgUCaGsFAmJXBAJocAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCYlcFAmZMBQNuaWwEAmhnAwkAZgIFAmZlAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVUFAmZlBQJmTAUDbmlsBQNuaWwEAmhxBAJocgMJAAACBQR0aGlzBQJhVQAABQJmZQMFAmZOCQCUCgIJAQEtAQkAZAIFAmJXBQJocgAACQCUCgIAAAkBAS0BCQBkAgUCYlcFAmhyBAJlQggFAmhxAl8xBAJlQwgFAmhxAl8yBAJocwkBAmVBAwUCZUIFAmVDAAAEAmdSCAUCaHMCXzEEAmVyCAUCaHMCXzIEAmdTCQECZUUCBQJlegUCZXIDCQAAAgUCZ1MFAmdTCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgUCZWwFAmdDBQJocAUCaGcFAmdSBQJiVwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwERZ2V0T25lVGtuUkVBRE9OTFkCAmZMAmZ0BAJodAkBAmZLBQkBAmJkAQUCZkwFAmZ0BQJibQUEdW5pdAUEdW5pdAQCaG4IBQJodAJfMQQCZWwIBQJodAJfMgQCZmUIBQJodAJfMwQCaGMIBQJodAJfNAQCZk4IBQJodAJfNQkAlAoCBQNuaWwJAJUKAwUCaG4FAmZlBQJoYwJlUwETdW5zdGFrZUFuZEdldE9uZVRrbgMCaHUCaGsCZ1cEAmdZCgACYVcJAPwHBAUCYVQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhVwIHQm9vbGVhbgUCYVcJAAIBCQCsAgIJAAMBBQJhVwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaGwDAwkBAmFZAAYJAAACBQJibAUBbgYFAmdZBAJmTQkAzAgCAwMJAQEhAQUCaGwGCQECZ2gBBQJlUwYJAQJhUQECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmVTCHBheW1lbnRzAAAGCQECYVEBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmTQUCZk0EAmZMCQECYmQBBQJoawQCYWIIBQJlUwZjYWxsZXIEAmFjCAUCZVMNdHJhbnNhY3Rpb25JZAQCZXoJAQJlcwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZXoFAmV6BAJodgkA/AcEBQJicwIHdW5zdGFrZQkAzAgCCQDYBAEFAmJtCQDMCAIFAmh1BQNuaWwFA25pbAMJAAACBQJodgUCaHYEAmh3CQECZksFBQJmTAUCaHUFAmJtBQJhYgUCYWMDCQAAAgUCaHcFAmh3BAJmTggFAmh3Al81BAJoYwgFAmh3Al80BAJmZQgFAmh3Al8zBAJlbAgFAmh3Al8yBAJobggFAmh3Al8xBAJiVwMDCQBmAgUCZ1cAAAkAZgIFAmdXBQJobgcJAQJhUQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ1cFA25pbAIABQJobgQCaG8JAPwHBAUCYVQCBGJ1cm4JAMwIAgUCaHUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYm0FAmh1BQNuaWwDCQAAAgUCaG8FAmhvBAJnQwkBAmNIAgUCaGsFAmJXBAJocAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZVMGY2FsbGVyBQJiVwUCZkwFA25pbAQCaGcDCQBmAgUCZmUAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhVQUCZmUFAmZMBQNuaWwFA25pbAQCaHgEAmhyAwkAAAIFBHRoaXMFAmFVAAAFAmZlAwUCZk4JAJQKAgkBAS0BCQBkAgUCYlcFAmhyAAAJAJQKAgAACQEBLQEJAGQCBQJiVwUCaHIEAmVCCAUCaHgCXzEEAmVDCAUCaHgCXzIEAmh5CQECZUEDBQJlQgUCZUMAAAQCZ1IIBQJoeQJfMQQCZXIIBQJoeQJfMgQCZ1MJAQJlRQIFAmV6BQJlcgMJAAACBQJnUwUCZ1MJAJQKAgkAzggCCQDOCAIJAM4IAgkAzggCBQJlbAUCZ0MFAmhwBQJoZwUCZ1IFAmJXCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVTAQNnZXQABAJkVwkBAmVSAQUCZVMEAmRDCAUCZFcCXzEEAmRECAUCZFcCXzIEAmVVCAUCZFcCXzMEAmRsCAUCZFcCXzQEAmRFCAUCZFcCXzUEAmdDCQECY00CBQJkQwUCZEQEAmV6CQECZXMDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmV6BQJlegQCaHoJAPwHBAUCYVQCBGJ1cm4JAMwIAgUCZVUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZGwFAmVVBQNuaWwDCQAAAgUCaHoFAmh6BAJoQQkBAmVBAwkBAS0BBQJkQwkBAS0BBQJkRAAABAJnUggFAmhBAl8xBAJlcggFAmhBAl8yBAJnUwkBAmVFAgUCZXoFAmVyAwkAAAIFAmdTBQJnUwkAzggCCQDOCAIFAmdDBQJkRQUCZ1IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVMBCWdldE5vTGVzcwICaEICaEMEAmRXCQECZVIBBQJlUwQCZEMIBQJkVwJfMQQCZEQIBQJkVwJfMgQCZVUIBQJkVwJfMwQCZGwIBQJkVwJfNAQCZEUIBQJkVwJfNQMJAGYCBQJoQgUCZEMJAAIBCQCsAgIJAKwCAgkArAICAhxub0xlc3NUaGVuQW10QXNzZXQgZmFpbGVkOiAgCQCkAwEFAmRDAgMgPCAJAKQDAQUCaEIDCQBmAgUCaEMFAmRECQACAQkArAICCQCsAgIJAKwCAgIdbm9MZXNzVGhlblByaWNlQXNzZXQgZmFpbGVkOiAJAKQDAQUCZEQCAyA8IAkApAMBBQJoQwQCZ0MJAQJjTQIFAmRDBQJkRAQCZXoJAQJlcwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZXoFAmV6BAJoegkA/AcEBQJhVAIEYnVybgkAzAgCBQJlVQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkbAUCZVUFA25pbAMJAAACBQJoegUCaHoEAmhECQECZUEDCQEBLQEFAmRDCQEBLQEFAmREAAAEAmdSCAUCaEQCXzEEAmVyCAUCaEQCXzIEAmdTCQECZUUCBQJlegUCZXIDCQAAAgUCZ1MFAmdTCQDOCAIJAM4IAgUCZ0MFAmRFBQJnUgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwENdW5zdGFrZUFuZEdldAECYlcEAmhFAwkBAiE9AgkAkAMBCAUCZVMIcGF5bWVudHMAAAkAAgECGE5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAYDCQAAAgUCaEUFAmhFBAJkYQkBAmJhAAQCZG4JANkEAQkAkQMCBQJkYQUBcQQCZXoJAQJlcwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZXoFAmV6BAJodgkA/AcEBQJicwIHdW5zdGFrZQkAzAgCCQDYBAEFAmRuCQDMCAIFAmJXBQNuaWwFA25pbAMJAAACBQJodgUCaHYEAmRXCQECZGoECQDYBAEIBQJlUw10cmFuc2FjdGlvbklkCQDYBAEFAmRuBQJiVwgFAmVTBmNhbGxlcgQCZEMIBQJkVwJfMQQCZEQIBQJkVwJfMgQCZHEJAQ1wYXJzZUludFZhbHVlAQgFAmRXAl85BAJkRQgFAmRXA18xMAQCZ0MJAQJjTQIFAmRDBQJkRAQCaEYDAwkBAmFZAAYJAAACBQJkcQUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCZHEGAwkAAAIFAmhGBQJoRgQCaHoJAPwHBAUCYVQCBGJ1cm4JAMwIAgUCYlcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZG4FAmJXBQNuaWwDCQAAAgUCaHoFAmh6BAJoRwkBAmVBAwkBAS0BBQJkQwkBAS0BBQJkRAAABAJnUggFAmhHAl8xBAJlcggFAmhHAl8yBAJnUwkBAmVFAgUCZXoFAmVyAwkAAAIFAmdTBQJnUwkAzggCCQDOCAIFAmdDBQJkRQUCZ1IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVMBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmh1AmhIAmhDBAJobAMJAQJhWQAGCQAAAgUCYmwFAW4EAmZNCQDMCAIDCQEBIQEFAmhsBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmVTCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZk0FAmZNBAJlegkBAmVzAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlegUCZXoEAmh2CQD8BwQFAmJzAgd1bnN0YWtlCQDMCAIJANgEAQUCYm0JAMwIAgUCaHUFA25pbAUDbmlsAwkAAAIFAmh2BQJodgQCZFcJAQJkagQJANgEAQgFAmVTDXRyYW5zYWN0aW9uSWQJANgEAQUCYm0FAmh1CAUCZVMGY2FsbGVyBAJkQwgFAmRXAl8xBAJkRAgFAmRXAl8yBAJkRQgFAmRXA18xMAQCZ0MJAQJjTQIFAmRDBQJkRAQCaEkJAMwIAgMJAGcCBQJkQwUCaEgGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaEgFA25pbAIACQDMCAIDCQBnAgUCZEQFAmhDBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaEMFA25pbAIABQNuaWwDCQAAAgUCaEkFAmhJBAJoegkA/AcEBQJhVAIEYnVybgkAzAgCBQJodQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJibQUCaHUFA25pbAMJAAACBQJoegUCaHoEAmhKCQECZUEDCQEBLQEFAmRDCQEBLQEFAmREAAAEAmdSCAUCaEoCXzEEAmVyCAUCaEoCXzIEAmdTCQECZUUCBQJlegUCZXIDCQAAAgUCZ1MFAmdTCQDOCAIJAM4IAgUCZ0MFAmRFBQJnUgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwEIYWN0aXZhdGUCAmhLAmhMAwkBAiE9AgkApQgBCAUCZVMGY2FsbGVyCQClCAEFAmFUCQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFlAAUCaEsJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAAUCaEwFA25pbAIHc3VjY2VzcwJlUwEKcmVmcmVzaEtMcAAEAmhNCQELdmFsdWVPckVsc2UCCQCfCAEFAmFrAAAEAmhOAwkAZwIJAGUCBQZoZWlnaHQFAmhNBQJhbgUEdW5pdAkBAmFRAQkAuQkCCQDMCAIJAKQDAQUCYW4JAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmhOBQJoTgQCZUwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFqAgEwCQECYVMBAgtpbnZhbGlkIGtMcAQCaE8JAQJlQQMAAAAAAAAEAmhQCAUCaE8CXzEEAmVyCAUCaE8CXzIEAmVEAwkBAiE9AgUCZUwFAmVyBQJoUAkBAmFRAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmVECQCmAwEFAmVyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVTARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJiYQACZVMBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmFwCQCUCgIFA25pbAkBAmJKAQUCYXACZVMBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmNVAmNWAmNaBAJkaQkBAmNZAwUCY1UFAmNWBQJjWgkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmRpAAAJAMwIAgkApgMBCQCRAwIFAmRpAAEJAMwIAgkApgMBCQCRAwIFAmRpAAIFA25pbAJlUwEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUUBRgkAlAoCBQNuaWwJAKYDAQkBAUQCBQFFBQFGAmVTARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFJAUoJAJQKAgUDbmlsCQEBSAIJAKcDAQUBSQUBSgJlUwEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiTgJiTwkAlAoCBQNuaWwJAKYDAQkBAmJNAgkApwMBBQJiTgkApwMBBQJiTwJlUwEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmRrAmRHAmRIAmRJAmRKAmRLAmFiAmRMAmRNCQCUCgIFA25pbAkBAmRGCQUCZGsFAmRHBQJkSAUCZEkFAmRKBQJkSwUCYWIFAmRMBQJkTQJlUwEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmRrAmRsAmRtAmFiBAJkVwkBAmRqBAUCZGsFAmRsBQJkbQkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYWIJAJQKAgUDbmlsCQCcCgoIBQJkVwJfMQgFAmRXAl8yCAUCZFcCXzMIBQJkVwJfNAgFAmRXAl81CAUCZFcCXzYIBQJkVwJfNwkApgMBCAUCZFcCXzgIBQJkVwJfOQgFAmRXA18xMAJlUwENc3RhdHNSRUFET05MWQAEAmRhCQECYmEABAJkbgkA2QQBCQCRAwIFAmRhBQFxBAJoUQkAkQMCBQJkYQUBcgQCaFIJAJEDAgUCZGEFAXMEAmRQCQCRAwIFAmRhBQF2BAJkUQkAkQMCBQJkYQUBdwQCZGIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkYQUBdAQCZGMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkYQUBdQQCaFMICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZG4JAKwCAgkArAICAgZBc3NldCAJANgEAQUCZG4CDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJoVAkBAmJKAQUCaFEEAmhVCQECYkoBBQJoUgQCaFYDCQAAAgUCaFMAAAkAzAgCBQFlCQDMCAIFAWUJAMwIAgUBZQUDbmlsCQECY1kDBQJoVAUCaFUFAmhTBAJkeAAABAJoVwkBAUgCCQCRAwIFAmhWAAEFAWIEAmhYCQEBSAIJAJEDAgUCaFYAAgUBYgQCaFkJAQV2YWx1ZQEJAJoIAgUCYVQJAQJhRAEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmhUCQDMCAIJAKQDAQUCaFUJAMwIAgkApAMBBQJoUwkAzAgCCQCkAwEFAmR4CQDMCAIJAKQDAQUCaFcJAMwIAgkApAMBBQJoWAkAzAgCCQCkAwEFAmhZBQNuaWwFAWoCZVMBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJkSAQCZGEJAQJiYQAEAmRuCQDZBAEJAJEDAgUCZGEFAXEEAmROCQCRAwIFAmRhBQFyBAJkbwkA2QQBBQJkTgQCZE8JAJEDAgUCZGEFAXMEAmRwCQDZBAEFAmRPBAJkYgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRhBQF0BAJkYwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRhBQF1BAJkcQkAkQMCBQJkYQUBcAQCaFMICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZG4JAKwCAgkArAICAgZBc3NldCAJANgEAQUCZG4CDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJoVAkBAmJKAQUCZE4EAmhVCQECYkoBBQJkTwQCY1cJAQFEAgUCaFQFAmRiBAJjWAkBAUQCBQJoVQUCZGMEAmR3AwkAAAIFAmhTAAAFAWUJAQJiTQIFAmNYBQJjVwQCZFQJAQFEAgUCZEgFAmRiBAJkVQkAvAIDBQJkVAUCZHcFAWQEAmRKCQEBSAIFAmRVBQJkYwQCZVkJAQJkRgkCAACgwh4FAmRIBQJkbwUCZEoFAmRwAgAGBwQCZWUIBQJlWQJfMQQCaFoIBQJlWQJfMwQCZHMIBQJlWQJfNAQCZHUIBQJlWQJfNQQCZHIIBQJlWQJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZWUJAMwIAgkApAMBCQEBSAIFAmR3BQFiCQDMCAIJAKQDAQUCZHMJAMwIAgkApAMBBQJkdQkAzAgCCQCkAwEFAmRyCQDMCAIFAmRxCQDMCAIJAKQDAQUCZEgJAMwIAgkApAMBBQJkSgUDbmlsBQFqAmVTAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJkSgQCZGEJAQJiYQAEAmRuCQDZBAEJAJEDAgUCZGEFAXEEAmROCQCRAwIFAmRhBQFyBAJkbwkA2QQBBQJkTgQCZE8JAJEDAgUCZGEFAXMEAmRwCQDZBAEFAmRPBAJkYgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRhBQF0BAJkYwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRhBQF1BAJkcQkAkQMCBQJkYQUBcAQCaFMICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZG4JAKwCAgkArAICAgZBc3NldCAJANgEAQUCZG4CDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJpYQkBAmJKAQUCZE4EAmliCQECYkoBBQJkTwQCaWMJAQFEAgUCaWEFAmRiBAJpZAkBAUQCBQJpYgUCZGMEAmR3AwkAAAIFAmhTAAAFAWUJAQJiTQIFAmlkBQJpYwQCZFUJAQFEAgUCZEoFAmRjBAJkVAkAvAIDBQJkVQUBZAUCZHcEAmRICQEBSAIFAmRUBQJkYgQCZVkJAQJkRgkCAACgwh4FAmRIBQJkbwUCZEoFAmRwAgAGBwQCZWUIBQJlWQJfMQQCaFoIBQJlWQJfMwQCZHMIBQJlWQJfNAQCZHUIBQJlWQJfNQQCZHIIBQJlWQJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZWUJAMwIAgkApAMBCQEBSAIFAmR3BQFiCQDMCAIJAKQDAQUCZHMJAMwIAgkApAMBBQJkdQkAzAgCCQCkAwEFAmRyCQDMCAIFAmRxCQDMCAIJAKQDAQUCZEgJAMwIAgkApAMBBQJkSgUDbmlsBQFqAmVTARNldmFsdWF0ZUdldFJFQURPTkxZAgJpZQJpZgQCZFcJAQJkagQCAAUCaWUFAmlmBQR0aGlzBAJkQwgFAmRXAl8xBAJkRAgFAmRXAl8yBAJkcwgFAmRXAl81BAJkdQgFAmRXAl82BAJkcggFAmRXAl83BAJkeAgFAmRXAl84BAJkcQkBDXBhcnNlSW50VmFsdWUBCAUCZFcCXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJkQwkAzAgCCQCkAwEFAmRECQDMCAIJAKQDAQUCZHMJAMwIAgkApAMBBQJkdQkAzAgCCQCkAwEFAmRyCQDMCAIJAKYDAQUCZHgJAMwIAgkApAMBBQJkcQUDbmlsBQFqAQJpZwECaWgABAJpaQQCYlQJAQJnZQADCQABAgUCYlQCCkJ5dGVWZWN0b3IEAmdpBQJiVAUCZ2kDCQABAgUCYlQCBFVuaXQIBQJpZw9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCYlQFAmlnAwkAAQIFAmJUAgVPcmRlcgQCZUgFAmJUBAJpagkBAmFaAAQCaWsJAQJlRwEFAmVIBAJhSQgFAmlrAl8xBAJhSggFAmlrAl8yBAJhSwkA9AMDCAUCZUgJYm9keUJ5dGVzCQCRAwIIBQJlSAZwcm9vZnMAAAgFAmVID3NlbmRlclB1YmxpY0tleQQCYUwJAPQDAwgFAmVICWJvZHlCeXRlcwkAkQMCCAUCZUgGcHJvb2ZzAAEFAmlqAwMDBQJhSQUCYUsHBQJhTAcGCQECYUgEBQJhSQUCYUoFAmFLBQJhTAMJAAECBQJiVAIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmdmBQJiVAMJAPQDAwgFAmlnCWJvZHlCeXRlcwkAkQMCCAUCaWcGcHJvb2ZzAAAFAmlpBgQCaWwJAPYDAQkBBXZhbHVlAQgFAmdmBnNjcmlwdAQCaW0JANsEAQkBBXZhbHVlAQkAnQgCBQJhVAkBAmFGAAQCaW4JAPEHAQUEdGhpcwMJAAACBQJpbQUCaWwJAQIhPQIFAmluBQJpbAcJAPQDAwgFAmlnCWJvZHlCeXRlcwkAkQMCCAUCaWcGcHJvb2ZzAAAFAmlpzVFmaQ==", "height": 2522546, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8zzNtygyGEaC4P6DU3DtSZXcchB2TN7VCmAwV8sFZFGS Next: G8EwcKNg9TF91khBUfGoTSXuKTAiYWr1u9uZYpz5dPMB Diff:
OldNewDifferences
384384 let bZ = as(bX)
385385 if ((bZ == bZ))
386386 then {
387- let cv = {
388- let bT = bd(ap)
389- if ($isInstanceOf(bT, "ByteVector"))
387+ let cv = max([0, (bJ(ap) - cu)])
388+ let cw = fraction(ct, cv, 100)
389+ let cx = (bY - cw)
390+ if ((cx == 0))
391+ then nil
392+ else if ((0 > cx))
390393 then {
391- let cw = bT
392- assetBalance(this, cw)
394+ let cy = -(cx)
395+ bV(ap, cy, bX, bR)
393396 }
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.")
397+ else {
398+ let cz = cx
399+ cf(ap, cz, bX, bR, cg, ch)
400+ }
419401 }
420402 else throw("Strict value is not equal to itself.")
421403 }
423405 }
424406
425407
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))
408+func cA (ap) = {
409+ let cB = cq(ap)
410+ let cC = cB._1
411+ let cD = cB._2
412+ let cu = cB._3
413+ let cE = cB._4
414+ let cF = cB._5
415+ let cg = cB._6
416+ let cG = cB._7
417+ if (cC)
418+ then cs(cD, ap, cF, cu, addressFromStringValue(cE), cg, addressFromStringValue(cG))
437419 else nil
438420 }
439421
440422
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)
423+func cH (ap,cI) = {
424+ let cJ = cq(ap)
425+ let cC = cJ._1
426+ let cD = cJ._2
427+ let cu = cJ._3
428+ let cE = cJ._4
429+ let cF = cJ._5
430+ let cg = cJ._6
431+ let cG = cJ._7
432+ if (cC)
451433 then {
452- let cN = max([0, ((bJ(ap) - cL) - cu)])
453- if ((cN == cN))
434+ let cK = max([0, ((bJ(ap) - cI) - cu)])
435+ if ((cK == cK))
454436 then {
455- let cd = fraction(cG, cN, 100)
437+ let cd = fraction(cD, cK, 100)
456438 if ((cd == cd))
457439 then {
458- let cO = max([0, (ar(ap) - cd)])
459- if ((cO == cO))
460- then cf(ap, cO, cI, addressFromStringValue(cH), cg, addressFromStringValue(cJ))
440+ let cL = max([0, (ar(ap) - cd)])
441+ if ((cL == cL))
442+ then cf(ap, cL, cF, addressFromStringValue(cE), cg, addressFromStringValue(cG))
461443 else throw("Strict value is not equal to itself.")
462444 }
463445 else throw("Strict value is not equal to itself.")
468450 }
469451
470452
471-func cP (cQ,cR) = {
472- let cS = cK(aM(this, ae()), cQ)
473- let cT = cK(aM(this, af()), cR)
474- (cS ++ cT)
453+func cM (cN,cO) = {
454+ let cP = cH(aM(this, ae()), cN)
455+ let cQ = cH(aM(this, af()), cO)
456+ (cP ++ cQ)
475457 }
476458
477459
478-func cU (cV,cW,cX,cY) = {
479- let cZ = D(cX, cV)
480- let da = D(cY, cW)
481- bM(da, cZ)
460+func cR (cS,cT,cU,cV) = {
461+ let cW = D(cU, cS)
462+ let cX = D(cV, cT)
463+ bM(cX, cW)
482464 }
483465
484466
485-func db (cX,cY,dc) = {
486- let dd = ba()
487- let de = parseIntValue(dd[t])
488- let df = parseIntValue(dd[u])
489- let dg = cU(de, df, cX, cY)
490- let bO = D(cX, de)
491- let bN = D(cY, df)
492- let dh = D(dc, b)
493- let di = bM(bO, dh)
494- let dj = bM(bN, dh)
495-[dg, di, dj]
467+func cY (cU,cV,cZ) = {
468+ let da = ba()
469+ let db = parseIntValue(da[t])
470+ let dc = parseIntValue(da[u])
471+ let dd = cR(db, dc, cU, cV)
472+ let bO = D(cU, db)
473+ let bN = D(cV, dc)
474+ let de = D(cZ, b)
475+ let df = bM(bO, de)
476+ let dg = bM(bN, de)
477+[dd, df, dg]
496478 }
497479
498480
499-func dk (cX,cY,dc) = {
500- let dl = db(cX, cY, dc)
501-[H(dl[0], b), H(dl[1], b), H(dl[2], b)]
481+func dh (cU,cV,cZ) = {
482+ let di = cY(cU, cV, cZ)
483+[H(di[0], b), H(di[1], b), H(di[2], b)]
502484 }
503485
504486
505-func dm (dn,do,dp,ab) = {
506- let dd = ba()
507- let dq = dd[q]
508- let dr = dd[r]
509- let ds = dd[s]
510- let cV = parseIntValue(dd[t])
511- let cW = parseIntValue(dd[u])
512- let dt = dd[p]
513- let du = valueOrErrorMessage(assetInfo(fromBase58String(dq)), (("Asset " + dq) + " doesn't exist")).quantity
514- if ((dq != do))
487+func dj (dk,dl,dm,ab) = {
488+ let da = ba()
489+ let dn = da[q]
490+ let do = da[r]
491+ let dp = da[s]
492+ let cS = parseIntValue(da[t])
493+ let cT = parseIntValue(da[u])
494+ let dq = da[p]
495+ let dr = valueOrErrorMessage(assetInfo(fromBase58String(dn)), (("Asset " + dn) + " doesn't exist")).quantity
496+ if ((dn != dl))
515497 then throw("Invalid asset passed.")
516498 else {
517- let dv = bJ(dr)
518- let dw = D(dv, cV)
519- let dx = bJ(ds)
520- let dy = D(dx, cW)
521- let dz = bM(dy, dw)
522- let dA = H(dz, b)
523- let dB = D(dp, b)
524- let dC = D(du, b)
525- let dD = fraction(dw, dB, dC)
526- let dE = fraction(dy, dB, dC)
527- let dF = K(dD, cV, FLOOR)
528- let dG = K(dE, cW, FLOOR)
529- let dH = if ((dn == ""))
499+ let ds = bJ(do)
500+ let dt = D(ds, cS)
501+ let du = bJ(dp)
502+ let dv = D(du, cT)
503+ let dw = bM(dv, dt)
504+ let dx = H(dw, b)
505+ let dy = D(dm, b)
506+ let dz = D(dr, b)
507+ let dA = fraction(dt, dy, dz)
508+ let dB = fraction(dv, dy, dz)
509+ let dC = K(dA, cS, FLOOR)
510+ let dD = K(dB, cT, FLOOR)
511+ let dE = if ((dk == ""))
530512 then nil
531- else [ScriptTransfer(ab, dF, if ((dr == "WAVES"))
513+ else [ScriptTransfer(ab, dC, if ((do == "WAVES"))
532514 then unit
533- else fromBase58String(dr)), ScriptTransfer(ab, dG, if ((ds == "WAVES"))
515+ else fromBase58String(do)), ScriptTransfer(ab, dD, if ((dp == "WAVES"))
534516 then unit
535- else fromBase58String(ds)), StringEntry(ad(toString(ab), dn), bF(dF, dG, dp, dA, height, lastBlock.timestamp)), IntegerEntry(W(), dA), IntegerEntry(X(height, lastBlock.timestamp), dA)]
536- $Tuple10(dF, dG, dr, ds, dv, dx, du, dz, dt, dH)
517+ else fromBase58String(dp)), StringEntry(ad(toString(ab), dk), bF(dC, dD, dm, dx, height, lastBlock.timestamp)), IntegerEntry(W(), dx), IntegerEntry(X(height, lastBlock.timestamp), dx)]
518+ $Tuple10(dC, dD, do, dp, ds, du, dr, dw, dq, dE)
537519 }
538520 }
539521
540522
541-func dI (dn,dJ,dK,dL,dM,dN,ab,dO,dP) = {
542- let dd = ba()
543- let dq = fromBase58String(dd[q])
544- let dQ = dd[r]
545- let dR = dd[s]
546- let dS = dd[v]
547- let dT = dd[w]
548- let de = parseIntValue(dd[t])
549- let df = parseIntValue(dd[u])
550- let dt = dd[p]
551- let du = valueOrErrorMessage(assetInfo(dq), (("Asset " + toBase58String(dq)) + " doesn't exist")).quantity
552- let dU = toBase58String(valueOrElse(dL, fromBase58String("WAVES")))
553- let dV = toBase58String(valueOrElse(dN, fromBase58String("WAVES")))
554- if (if ((dQ != dU))
523+func dF (dk,dG,dH,dI,dJ,dK,ab,dL,dM) = {
524+ let da = ba()
525+ let dn = fromBase58String(da[q])
526+ let dN = da[r]
527+ let dO = da[s]
528+ let dP = da[v]
529+ let dQ = da[w]
530+ let db = parseIntValue(da[t])
531+ let dc = parseIntValue(da[u])
532+ let dq = da[p]
533+ let dr = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
534+ let dR = toBase58String(valueOrElse(dI, fromBase58String("WAVES")))
535+ let dS = toBase58String(valueOrElse(dK, fromBase58String("WAVES")))
536+ if (if ((dN != dR))
555537 then true
556- else (dR != dV))
538+ else (dO != dS))
557539 then throw("Invalid amt or price asset passed.")
558540 else {
559- let dv = if (dO)
560- then bJ(dQ)
561- else (bJ(dQ) - dK)
562- let dx = if (dO)
563- then bJ(dR)
564- else (bJ(dR) - dM)
565- let dW = D(dK, de)
566- let dX = D(dM, df)
567- let dY = bM(dX, dW)
568- let dw = D(dv, de)
569- let dy = D(dx, df)
570- let dZ = if ((du == 0))
541+ let ds = if (dL)
542+ then bJ(dN)
543+ else (bJ(dN) - dH)
544+ let du = if (dL)
545+ then bJ(dO)
546+ else (bJ(dO) - dJ)
547+ let dT = D(dH, db)
548+ let dU = D(dJ, dc)
549+ let dV = bM(dU, dT)
550+ let dt = D(ds, db)
551+ let dv = D(du, dc)
552+ let dW = if ((dr == 0))
571553 then {
572- let dz = e
573- let ea = e
574- let dh = pow((dW * dX), 0, toBigInt(5), 1, 0, DOWN)
575- $Tuple5(H(dh, b), H(dW, de), H(dX, df), bM((dy + dX), (dw + dW)), ea)
554+ let dw = e
555+ let dX = e
556+ let de = pow((dT * dU), 0, toBigInt(5), 1, 0, DOWN)
557+ $Tuple5(H(de, b), H(dT, db), H(dU, dc), bM((dv + dU), (dt + dT)), dX)
576558 }
577559 else {
578- let dz = bM(dy, dw)
579- let ea = fraction(R((dz - dY)), d, dz)
580- let eb = D(dJ, b)
581- if (if ((dz != e))
582- then (ea > eb)
560+ let dw = bM(dv, dt)
561+ let dX = fraction(R((dw - dV)), d, dw)
562+ let dY = D(dG, b)
563+ if (if ((dw != e))
564+ then (dX > dY)
583565 else false)
584- then throw(((("Price slippage " + toString(ea)) + " exceeded the passed limit of ") + toString(eb)))
566+ then throw(((("Price slippage " + toString(dX)) + " exceeded the passed limit of ") + toString(dY)))
585567 else {
586- let dC = D(du, b)
587- let ec = fraction(dW, bP(dy, dw, CEILING), d, CEILING)
588- let ed = fraction(dX, d, bP(dy, dw, FLOOR), CEILING)
589- let ee = if ((ec > dX))
590- then $Tuple2(ed, dX)
591- else $Tuple2(dW, ec)
592- let ef = ee._1
593- let eg = ee._2
594- let dh = fraction(dC, eg, dy, FLOOR)
595- $Tuple5(K(dh, b, FLOOR), K(ef, de, CEILING), K(eg, df, CEILING), dz, ea)
568+ let dz = D(dr, b)
569+ let dZ = fraction(dT, bP(dv, dt, CEILING), d, CEILING)
570+ let ea = fraction(dU, d, bP(dv, dt, FLOOR), CEILING)
571+ let eb = if ((dZ > dU))
572+ then $Tuple2(ea, dU)
573+ else $Tuple2(dT, dZ)
574+ let ec = eb._1
575+ let ed = eb._2
576+ let de = fraction(dz, ed, dv, FLOOR)
577+ $Tuple5(K(de, b, FLOOR), K(ec, db, CEILING), K(ed, dc, CEILING), dw, dX)
596578 }
597579 }
598- let eh = dZ._1
599- let ei = dZ._2
600- let ej = dZ._3
601- let dA = H(dZ._4, b)
602- let ek = H(dZ._5, b)
603- if ((0 >= eh))
580+ let ee = dW._1
581+ let ef = dW._2
582+ let eg = dW._3
583+ let dx = H(dW._4, b)
584+ let eh = H(dW._5, b)
585+ if ((0 >= ee))
604586 then throw("Invalid calculations. LP calculated is less than zero.")
605587 else {
606- let el = if (!(dP))
588+ let ei = if (!(dM))
607589 then 0
608- else eh
609- let em = (dK - ei)
610- let en = (dM - ej)
611- let eo = [IntegerEntry(W(), dA), IntegerEntry(X(height, lastBlock.timestamp), dA), StringEntry(aa(ab, dn), bu(ei, ej, el, dA, dJ, ek, height, lastBlock.timestamp, em, en))]
612- $Tuple13(eh, el, dA, dv, dx, du, dq, dt, eo, em, en, dL, dN)
590+ else ee
591+ let ej = (dH - ef)
592+ let ek = (dJ - eg)
593+ let el = [IntegerEntry(W(), dx), IntegerEntry(X(height, lastBlock.timestamp), dx), StringEntry(aa(ab, dk), bu(ef, eg, ei, dx, dG, eh, height, lastBlock.timestamp, ej, ek))]
594+ $Tuple13(ee, ei, dx, ds, du, dr, dn, dq, el, ej, ek, dI, dK)
613595 }
614596 }
615597 }
616598
617599
618-func ep (eq,er,du) = {
619- let es = G(eq, toBigInt(bp))
620- let et = G(er, toBigInt(bq))
621- let eu = fraction(pow((es * et), 0, toBigInt(5), 1, 18, DOWN), g, du)
622- if ((du == f))
600+func em (en,eo,dr) = {
601+ let ep = G(en, toBigInt(bp))
602+ let eq = G(eo, toBigInt(bq))
603+ let er = fraction(pow((ep * eq), 0, toBigInt(5), 1, 18, DOWN), g, dr)
604+ if ((dr == f))
623605 then f
624- else eu
606+ else er
625607 }
626608
627609
628-func ev (ew,ex,ey) = {
629- let ez = (toBigInt(bJ(bf(bn))) - ew)
630- let eA = (toBigInt(bJ(bf(bo))) - ex)
631- let eB = (toBigInt(value(assetInfo(bm)).quantity) - ey)
632- let eC = ep(ez, eA, eB)
633- eC
610+func es (et,eu,ev) = {
611+ let ew = (toBigInt(bJ(bf(bn))) - et)
612+ let ex = (toBigInt(bJ(bf(bo))) - eu)
613+ let ey = (toBigInt(value(assetInfo(bm)).quantity) - ev)
614+ let ez = em(ew, ex, ey)
615+ ez
634616 }
635617
636618
637-func eD (eE,eF,ey) = {
638- let ez = (bJ(bf(bn)) + eE)
639- let eA = (bJ(bf(bo)) + eF)
640- let eB = (value(assetInfo(bm)).quantity + ey)
641- let eu = ep(toBigInt(ez), toBigInt(eA), toBigInt(eB))
642- let eG = [IntegerEntry(ak, height), StringEntry(aj, toString(eu))]
643- $Tuple2(eG, eu)
619+func eA (eB,eC,ev) = {
620+ let ew = (bJ(bf(bn)) + eB)
621+ let ex = (bJ(bf(bo)) + eC)
622+ let ey = (value(assetInfo(bm)).quantity + ev)
623+ let er = em(toBigInt(ew), toBigInt(ex), toBigInt(ey))
624+ let eD = [IntegerEntry(ak, height), StringEntry(aj, toString(er))]
625+ $Tuple2(eD, er)
644626 }
645627
646628
647-func eH (eI,eu) = if ((eu >= eI))
629+func eE (eF,er) = if ((er >= eF))
648630 then true
649- else aQ(makeString(["updated KLp lower than current KLp", toString(eI), toString(eu)], " "))
631+ else aQ(makeString(["updated KLp lower than current KLp", toString(eF), toString(er)], " "))
650632
651633
652-func eJ (eK) = {
653- let ez = bJ(bf(bn))
654- let eA = bJ(bf(bo))
655- let eL = eK.amount
656- let eM = fraction(eK.amount, eK.price, b, FLOOR)
657- let eN = if ((eK.orderType == Buy))
658- then $Tuple2(eL, -(eM))
659- else $Tuple2(-(eL), eM)
660- let eE = eN._1
661- let eF = eN._2
634+func eG (eH) = {
635+ let ew = bJ(bf(bn))
636+ let ex = bJ(bf(bo))
637+ let eI = eH.amount
638+ let eJ = fraction(eH.amount, eH.price, b, FLOOR)
639+ let eK = if ((eH.orderType == Buy))
640+ then $Tuple2(eI, -(eJ))
641+ else $Tuple2(-(eI), eJ)
642+ let eB = eK._1
643+ let eC = eK._2
662644 if (if (if (aY())
663645 then true
664646 else (bl == m))
665647 then true
666648 else (bl == n))
667649 then throw("Exchange operations disabled")
668- else if (if ((eK.assetPair.amountAsset != bn))
650+ else if (if ((eH.assetPair.amountAsset != bn))
669651 then true
670- else (eK.assetPair.priceAsset != bo))
652+ else (eH.assetPair.priceAsset != bo))
671653 then throw("Wrong order assets.")
672654 else {
673- let eO = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
674- let eP = eD(eE, eF, 0)
675- let eQ = eP._1
676- let eR = eP._2
677- let eS = (eR >= eO)
678- let eT = makeString(["kLp=", toString(eO), " kLpNew=", toString(eR), " amountAssetBalance=", toString(ez), " priceAssetBalance=", toString(eA), " amountAssetBalanceDelta=", toString(eE), " priceAssetBalanceDelta=", toString(eF), " height=", toString(height)], "")
679- $Tuple2(eS, eT)
655+ let eL = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
656+ let eM = eA(eB, eC, 0)
657+ let eN = eM._1
658+ let eO = eM._2
659+ let eP = (eO >= eL)
660+ let eQ = makeString(["kLp=", toString(eL), " kLpNew=", toString(eO), " amountAssetBalance=", toString(ew), " priceAssetBalance=", toString(ex), " amountAssetBalanceDelta=", toString(eB), " priceAssetBalanceDelta=", toString(eC), " height=", toString(height)], "")
661+ $Tuple2(eP, eQ)
680662 }
681663 }
682664
683665
684-func eU (eV) = if ((size(eV.payments) != 1))
666+func eR (eS) = if ((size(eS.payments) != 1))
685667 then throw("exactly 1 payment is expected")
686668 else {
687- let eW = value(eV.payments[0])
688- let do = value(eW.assetId)
689- let eX = eW.amount
690- let dZ = dm(toBase58String(eV.transactionId), toBase58String(do), eX, eV.caller)
691- let dF = dZ._1
692- let dG = dZ._2
693- let dt = parseIntValue(dZ._9)
694- let dH = dZ._10
669+ let eT = value(eS.payments[0])
670+ let dl = value(eT.assetId)
671+ let eU = eT.amount
672+ let dW = dj(toBase58String(eS.transactionId), toBase58String(dl), eU, eS.caller)
673+ let dC = dW._1
674+ let dD = dW._2
675+ let dq = parseIntValue(dW._9)
676+ let dE = dW._10
695677 if (if (aY())
696678 then true
697- else (dt == n))
698- then throw(("Get operation is blocked by admin. Status = " + toString(dt)))
699- else $Tuple5(dF, dG, eX, do, dH)
679+ else (dq == n))
680+ then throw(("Get operation is blocked by admin. Status = " + toString(dq)))
681+ else $Tuple5(dC, dD, eU, dl, dE)
700682 }
701683
702684
703-func eY (eV,dJ,dP) = if ((size(eV.payments) != 2))
685+func eV (eS,dG,dM) = if ((size(eS.payments) != 2))
704686 then throw("exactly 2 payments are expected")
705687 else {
706- let eZ = value(eV.payments[0])
707- let fa = value(eV.payments[1])
708- let fb = dI(toBase58String(eV.transactionId), dJ, eZ.amount, eZ.assetId, fa.amount, fa.assetId, toString(eV.caller), false, dP)
709- let dt = parseIntValue(fb._8)
688+ let eW = value(eS.payments[0])
689+ let eX = value(eS.payments[1])
690+ let eY = dF(toBase58String(eS.transactionId), dG, eW.amount, eW.assetId, eX.amount, eX.assetId, toString(eS.caller), false, dM)
691+ let dq = parseIntValue(eY._8)
710692 if (if (if (aY())
711693 then true
712- else (dt == l))
694+ else (dq == l))
713695 then true
714- else (dt == n))
715- then throw(("Put operation is blocked by admin. Status = " + toString(dt)))
716- else fb
696+ else (dq == n))
697+ then throw(("Put operation is blocked by admin. Status = " + toString(dq)))
698+ else eY
717699 }
718700
719701
720-func fc (bW) = {
721- let fd = invoke(aT, "emit", [bW], nil)
722- if ((fd == fd))
702+func eZ (bW) = {
703+ let fa = invoke(aT, "emit", [bW], nil)
704+ if ((fa == fa))
723705 then {
724- let fe = {
725- let bT = fd
706+ let fb = {
707+ let bT = fa
726708 if ($isInstanceOf(bT, "Address"))
727709 then {
728- let ff = bT
729- invoke(ff, "emit", [bW], nil)
710+ let fc = bT
711+ invoke(fc, "emit", [bW], nil)
730712 }
731713 else unit
732714 }
733- if ((fe == fe))
715+ if ((fb == fb))
734716 then bW
735717 else throw("Strict value is not equal to itself.")
736718 }
738720 }
739721
740722
741-func fg (bW,ai) = {
742- let fh = if ((ai == 0))
723+func fd (bW,ai) = {
724+ let fe = if ((ai == 0))
743725 then 0
744726 else fraction(bW, ai, b)
745- $Tuple2((bW - fh), fh)
727+ $Tuple2((bW - fe), fe)
746728 }
747729
748730
749-func fi (fj,fk,ab,ac) = {
750- let fl = (ac == unit)
751- let fm = bJ(bf(bn))
752- let fn = bJ(bf(bo))
753- let fo = if ((fk == bn))
731+func ff (fg,fh,ab,ac) = {
732+ let fi = (ac == unit)
733+ let fj = bJ(bf(bn))
734+ let fk = bJ(bf(bo))
735+ let fl = if ((fh == bn))
754736 then true
755- else if ((fk == bo))
737+ else if ((fh == bo))
756738 then false
757739 else aQ("invalid asset")
740+ let fm = if (fi)
741+ then $Tuple2(fj, fk)
742+ else if (fl)
743+ then $Tuple2((fj - fg), fk)
744+ else $Tuple2(fj, (fk - fg))
745+ let fn = fm._1
746+ let fo = fm._2
758747 let fp = if (fl)
759- then $Tuple2(fm, fn)
760- else if (fo)
761- then $Tuple2((fm - fj), fn)
762- else $Tuple2(fm, (fn - fj))
748+ then $Tuple2(fg, 0)
749+ else $Tuple2(0, fg)
763750 let fq = fp._1
764751 let fr = fp._2
765- let fs = if (fo)
766- then $Tuple2(fj, 0)
767- else $Tuple2(0, fj)
752+ let eI = fd(fq, aV)._1
753+ let eJ = fd(fr, aV)._1
754+ let fs = fd(fg, aV)
768755 let ft = fs._1
769- let fu = fs._2
770- let eL = fg(ft, aV)._1
771- let eM = fg(fu, aV)._1
772- let fv = fg(fj, aV)
773- let fw = fv._1
774- let fh = fv._2
775- let fx = (fq + eL)
776- let fy = (fr + eM)
777- let fz = bM(D(fy, bq), D(fx, bp))
778- let fA = H(fz, b)
779- let fB = if (fo)
780- then fq
781- else fr
782- let fC = toBigInt(fB)
783- let fD = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
784- let fE = if ((fD > f))
756+ let fe = fs._2
757+ let fu = (fn + eI)
758+ let fv = (fo + eJ)
759+ let fw = bM(D(fv, bq), D(fu, bp))
760+ let fx = H(fw, b)
761+ let fy = if (fl)
762+ then fn
763+ else fo
764+ let fz = toBigInt(fy)
765+ let fA = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
766+ let fB = if ((fA > f))
785767 then true
786768 else aQ("initial deposit requires all coins")
787- if ((fE == fE))
769+ if ((fB == fB))
788770 then {
789- let fF = toBigInt(fw)
790- let fG = max([0, toInt(((fD * (sqrtBigInt((d + ((fF * d) / fC)), 18, 18, DOWN) - d)) / d))])
791- let eo = if (fl)
771+ let fC = toBigInt(ft)
772+ let fD = max([0, toInt(((fA * (sqrtBigInt((d + ((fC * d) / fz)), 18, 18, DOWN) - d)) / d))])
773+ let el = if (fi)
792774 then nil
793- else [IntegerEntry(W(), fA), IntegerEntry(X(height, lastBlock.timestamp), fA), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bu(ft, fu, fG, fA, 0, 0, height, lastBlock.timestamp, 0, 0))]
794- let fH = bM(D(fr, bq), D(fq, bp))
795- let fI = H(fH, b)
796- let fJ = {
797- let fK = if (fo)
798- then $Tuple2(ft, fq)
799- else $Tuple2(fu, fr)
800- let bW = fK._1
801- let fL = fK._2
802- let fM = toInt(fraction(fD, toBigInt((bW / 2)), toBigInt(fL)))
803- fraction((fG - fM), b, fM)
775+ 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))]
776+ let fE = bM(D(fo, bq), D(fn, bp))
777+ let fF = H(fE, b)
778+ let fG = {
779+ let fH = if (fl)
780+ then $Tuple2(fq, fn)
781+ else $Tuple2(fr, fo)
782+ let bW = fH._1
783+ let fI = fH._2
784+ let fJ = toInt(fraction(fA, toBigInt((bW / 2)), toBigInt(fI)))
785+ fraction((fD - fJ), b, fJ)
804786 }
805- $Tuple5(fG, eo, fh, fJ, fo)
787+ $Tuple5(fD, el, fe, fG, fl)
806788 }
807789 else throw("Strict value is not equal to itself.")
808790 }
809791
810792
811-func fN (fO,fw,fk,ab,ac) = {
812- let fl = (ac == unit)
813- let dd = ba()
814- let de = parseIntValue(dd[t])
815- let df = parseIntValue(dd[u])
816- let fP = [if ((fk == bm))
793+func fK (fL,ft,fh,ab,ac) = {
794+ let fi = (ac == unit)
795+ let da = ba()
796+ let db = parseIntValue(da[t])
797+ let dc = parseIntValue(da[u])
798+ let fM = [if ((fh == bm))
817799 then true
818800 else aQ("invalid lp asset")]
819- if ((fP == fP))
801+ if ((fM == fM))
820802 then {
821- let fQ = if ((fO == bn))
803+ let fN = if ((fL == bn))
822804 then true
823- else if ((fO == bo))
805+ else if ((fL == bo))
824806 then false
825807 else aQ("invalid asset")
826- let fR = if (fQ)
808+ let fO = if (fN)
827809 then toBigInt(bJ(bf(bn)))
828810 else toBigInt(bJ(bf(bo)))
829- let fS = if (fQ)
830- then de
831- else df
832- let fT = bJ(bf(bn))
833- let fU = bJ(bf(bo))
834- let fV = if (fQ)
835- then fT
836- else fU
837- let fW = toBigInt(fV)
838- let fD = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
839- let fX = toBigInt(fw)
840- let fY = max([0, toInt(((fR * (d - pow((d - ((fX * d) / fD)), 18, h, 0, 18, DOWN))) / d))])
841- let fZ = fg(fY, aX)
842- let ga = fZ._1
843- let fh = fZ._2
844- let gb = if (fQ)
845- then $Tuple4(ga, 0, (fT - fY), fU)
846- else $Tuple4(0, ga, fT, (fU - fY))
847- let gc = gb._1
848- let gd = gb._2
849- let ge = gb._3
850- let gf = gb._4
851- let fz = bM(D(gf, bq), D(ge, bp))
852- let fA = H(fz, b)
853- let eo = if (fl)
811+ let fP = if (fN)
812+ then db
813+ else dc
814+ let fQ = bJ(bf(bn))
815+ let fR = bJ(bf(bo))
816+ let fS = if (fN)
817+ then fQ
818+ else fR
819+ let fT = toBigInt(fS)
820+ let fA = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
821+ let fU = toBigInt(ft)
822+ let fV = max([0, toInt(((fO * (d - pow((d - ((fU * d) / fA)), 18, h, 0, 18, DOWN))) / d))])
823+ let fW = fd(fV, aX)
824+ let fX = fW._1
825+ let fe = fW._2
826+ let fY = if (fN)
827+ then $Tuple4(fX, 0, (fQ - fV), fR)
828+ else $Tuple4(0, fX, fQ, (fR - fV))
829+ let fZ = fY._1
830+ let ga = fY._2
831+ let gb = fY._3
832+ let gc = fY._4
833+ let fw = bM(D(gc, bq), D(gb, bp))
834+ let fx = H(fw, b)
835+ let el = if (fi)
854836 then nil
855- else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bF(gc, gd, fw, fA, height, lastBlock.timestamp)), IntegerEntry(W(), fA), IntegerEntry(X(height, lastBlock.timestamp), fA)]
856- let fH = bM(D(fU, bq), D(fT, bp))
857- let fI = H(fH, b)
858- let fJ = {
859- let gg = (toInt(fraction(fR, fX, fD)) * 2)
860- fraction((ga - gg), b, gg)
837+ 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)]
838+ let fE = bM(D(fR, bq), D(fQ, bp))
839+ let fF = H(fE, b)
840+ let fG = {
841+ let gd = (toInt(fraction(fO, fU, fA)) * 2)
842+ fraction((fX - gd), b, gd)
861843 }
862- $Tuple5(ga, eo, fh, fJ, fQ)
844+ $Tuple5(fX, el, fe, fG, fN)
863845 }
864846 else throw("Strict value is not equal to itself.")
865847 }
866848
867849
868-func gh () = {
850+func ge () = {
869851 let bT = getString(U())
870852 if ($isInstanceOf(bT, "String"))
871853 then {
872- let gi = bT
873- fromBase58String(gi)
854+ let gf = bT
855+ fromBase58String(gf)
874856 }
875857 else if ($isInstanceOf(bT, "Unit"))
876858 then unit
878860 }
879861
880862
881-func gj () = {
863+func gg () = {
882864 let bT = getString(V())
883865 if ($isInstanceOf(bT, "String"))
884866 then {
885- let gi = bT
886- fromBase58String(gi)
867+ let gf = bT
868+ fromBase58String(gf)
887869 }
888870 else if ($isInstanceOf(bT, "Unit"))
889871 then unit
891873 }
892874
893875
894-func gk (eV) = {
895- let bT = gh()
876+func gh (eS) = {
877+ let bT = ge()
896878 if ($isInstanceOf(bT, "ByteVector"))
897879 then {
898- let gl = bT
899- (eV.callerPublicKey == gl)
880+ let gi = bT
881+ (eS.callerPublicKey == gi)
900882 }
901883 else if ($isInstanceOf(bT, "Unit"))
902- then (eV.caller == this)
884+ then (eS.caller == this)
903885 else throw("Match error")
904886 }
905887
906888
907-func gm (eV) = {
908- let gn = throw("Permission denied")
909- let bT = gh()
889+func gj (eS) = {
890+ let gk = throw("Permission denied")
891+ let bT = ge()
910892 if ($isInstanceOf(bT, "ByteVector"))
911893 then {
912- let gl = bT
913- if ((eV.callerPublicKey == gl))
894+ let gi = bT
895+ if ((eS.callerPublicKey == gi))
914896 then true
915- else gn
897+ else gk
916898 }
917899 else if ($isInstanceOf(bT, "Unit"))
918- then if ((eV.caller == this))
900+ then if ((eS.caller == this))
919901 then true
920- else gn
902+ else gk
921903 else throw("Match error")
922904 }
923905
924906
925-@Callable(eV)
926-func rebalance () = (cD(aM(this, ae())) ++ cD(aM(this, af())))
907+@Callable(eS)
908+func rebalance () = (cA(aM(this, ae())) ++ cA(aM(this, af())))
927909
928910
929911
930-@Callable(eV)
931-func calculateAmountOutForSwapREADONLY (go,gp,gq) = {
932- let gr = if ((gp == false))
912+@Callable(eS)
913+func calculateAmountOutForSwapREADONLY (gl,gm,gn) = {
914+ let go = if ((gm == false))
933915 then {
934- let gs = aM(this, af())
935- let gt = aM(this, ae())
936- $Tuple2(gs, gt)
916+ let gp = aM(this, af())
917+ let gq = aM(this, ae())
918+ $Tuple2(gp, gq)
937919 }
938920 else {
939- let gs = aM(this, ae())
940- let gt = aM(this, af())
941- $Tuple2(gs, gt)
921+ let gp = aM(this, ae())
922+ let gq = aM(this, af())
923+ $Tuple2(gp, gq)
942924 }
943- let gs = gr._1
944- let gt = gr._2
945- let gu = bJ(gt)
946- let gv = bJ(gs)
947- let gw = fraction(gv, go, (gu + go))
948- let gx = (toBigInt(gu) * toBigInt(gv))
949- let gy = (((toBigInt(bJ(gt)) + toBigInt(go)) + toBigInt(gq)) * (toBigInt(bJ(gs)) - toBigInt(gw)))
950- let gz = if ((gy >= gx))
925+ let gp = go._1
926+ let gq = go._2
927+ let gr = bJ(gq)
928+ let gs = bJ(gp)
929+ let gt = fraction(gs, gl, (gr + gl))
930+ let gu = (toBigInt(gr) * toBigInt(gs))
931+ let gv = (((toBigInt(bJ(gq)) + toBigInt(gl)) + toBigInt(gn)) * (toBigInt(bJ(gp)) - toBigInt(gt)))
932+ let gw = if ((gv >= gu))
951933 then true
952934 else throw("new K is fewer error")
953- if ((gz == gz))
954- then $Tuple2(nil, gw)
935+ if ((gw == gw))
936+ then $Tuple2(nil, gt)
955937 else throw("Strict value is not equal to itself.")
956938 }
957939
958940
959941
960-@Callable(eV)
961-func calculateAmountOutForSwapAndSendTokens (go,gp,gA,gB,gq) = {
962- let gC = {
942+@Callable(eS)
943+func calculateAmountOutForSwapAndSendTokens (gl,gm,gx,gy,gn) = {
944+ let gz = {
963945 let aW = invoke(aT, "getSwapContractREADONLY", nil, nil)
964946 if ($isInstanceOf(aW, "String"))
965947 then aW
966948 else throw(($getType(aW) + " couldn't be cast to String"))
967949 }
968- let fP = [if ((value(eV.payments[0]).amount >= go))
950+ let fM = [if ((value(eS.payments[0]).amount >= gl))
969951 then true
970- else aQ("Wrong amount"), if ((eV.caller == addressFromStringValue(gC)))
952+ else aQ("Wrong amount"), if ((eS.caller == addressFromStringValue(gz)))
971953 then true
972954 else aQ("Permission denied")]
973- if ((fP == fP))
955+ if ((fM == fM))
974956 then {
975- let eW = value(eV.payments[0])
976- let gt = bf(eW.assetId)
977- let gs = if ((gp == false))
957+ let eT = value(eS.payments[0])
958+ let gq = bf(eT.assetId)
959+ let gp = if ((gm == false))
978960 then aM(this, af())
979961 else aM(this, ae())
980- let gu = (bJ(gt) - value(eV.payments[0]).amount)
981- let gv = bJ(gs)
982- let gw = fraction(gv, go, (gu + go))
983- let gx = (toBigInt(gu) * toBigInt(gv))
984- let gy = ((toBigInt(bJ(gt)) + toBigInt(gq)) * (toBigInt(bJ(gs)) - toBigInt(gw)))
985- let gz = if ((gy >= gx))
962+ let gr = (bJ(gq) - value(eS.payments[0]).amount)
963+ let gs = bJ(gp)
964+ let gt = fraction(gs, gl, (gr + gl))
965+ let gu = (toBigInt(gr) * toBigInt(gs))
966+ let gv = ((toBigInt(bJ(gq)) + toBigInt(gn)) * (toBigInt(bJ(gp)) - toBigInt(gt)))
967+ let gw = if ((gv >= gu))
986968 then true
987969 else throw("new K is fewer error")
988- if ((gz == gz))
970+ if ((gw == gw))
989971 then {
990- let gD = if ((gw >= gA))
972+ let gA = if ((gt >= gx))
991973 then true
992974 else throw("Exchange result is fewer coins than expected")
993- if ((gD == gD))
975+ if ((gA == gA))
994976 then {
995- let gE = cD(gt)
996- if ((gE == gE))
977+ let gB = cA(gq)
978+ if ((gB == gB))
997979 then {
998- let gF = cK(gs, gw)
999- if ((gF == gF))
1000- then $Tuple2(((gF ++ gE) ++ [ScriptTransfer(addressFromStringValue(gB), gw, bd(gs))]), gw)
980+ let gC = cH(gp, gt)
981+ if ((gC == gC))
982+ then $Tuple2(((gC ++ gB) ++ [ScriptTransfer(addressFromStringValue(gy), gt, bd(gp))]), gt)
1001983 else throw("Strict value is not equal to itself.")
1002984 }
1003985 else throw("Strict value is not equal to itself.")
1011993
1012994
1013995
1014-@Callable(eV)
1015-func setManager (gG) = {
1016- let gH = gm(eV)
1017- if ((gH == gH))
996+@Callable(eS)
997+func setManager (gD) = {
998+ let gE = gj(eS)
999+ if ((gE == gE))
10181000 then {
1019- let gI = fromBase58String(gG)
1020- if ((gI == gI))
1021- then [StringEntry(V(), gG)]
1001+ let gF = fromBase58String(gD)
1002+ if ((gF == gF))
1003+ then [StringEntry(V(), gD)]
10221004 else throw("Strict value is not equal to itself.")
10231005 }
10241006 else throw("Strict value is not equal to itself.")
10261008
10271009
10281010
1029-@Callable(eV)
1011+@Callable(eS)
10301012 func confirmManager () = {
1031- let gJ = gj()
1032- let gK = if (isDefined(gJ))
1013+ let gG = gg()
1014+ let gH = if (isDefined(gG))
10331015 then true
10341016 else throw("No pending manager")
1035- if ((gK == gK))
1017+ if ((gH == gH))
10361018 then {
1037- let gL = if ((eV.callerPublicKey == value(gJ)))
1019+ let gI = if ((eS.callerPublicKey == value(gG)))
10381020 then true
10391021 else throw("You are not pending manager")
1040- if ((gL == gL))
1041- then [StringEntry(U(), toBase58String(value(gJ))), DeleteEntry(V())]
1022+ if ((gI == gI))
1023+ then [StringEntry(U(), toBase58String(value(gG))), DeleteEntry(V())]
10421024 else throw("Strict value is not equal to itself.")
10431025 }
10441026 else throw("Strict value is not equal to itself.")
10461028
10471029
10481030
1049-@Callable(eV)
1050-func put (dJ,gM) = if ((0 > dJ))
1031+@Callable(eS)
1032+func put (dG,gJ) = if ((0 > dG))
10511033 then throw("Invalid slippageTolerance passed")
10521034 else {
1053- let fb = eY(eV, dJ, true)
1054- let el = fb._2
1055- let dq = fb._7
1056- let dH = fb._9
1057- let em = fb._10
1058- let en = fb._11
1059- let gN = fb._12
1060- let gO = fb._13
1061- let eZ = toBigInt(value(eV.payments[0]).amount)
1062- let fa = toBigInt(value(eV.payments[1]).amount)
1063- let eC = ev(eZ, fa, toBigInt(0))
1064- if ((eC == eC))
1035+ let eY = eV(eS, dG, true)
1036+ let ei = eY._2
1037+ let dn = eY._7
1038+ let dE = eY._9
1039+ let ej = eY._10
1040+ let ek = eY._11
1041+ let gK = eY._12
1042+ let gL = eY._13
1043+ let eW = toBigInt(value(eS.payments[0]).amount)
1044+ let eX = toBigInt(value(eS.payments[1]).amount)
1045+ let ez = es(eW, eX, toBigInt(0))
1046+ if ((ez == ez))
10651047 then {
1066- let fd = invoke(aT, "emit", [el], nil)
1067- if ((fd == fd))
1048+ let fa = invoke(aT, "emit", [ei], nil)
1049+ if ((fa == fa))
10681050 then {
1069- let fe = {
1070- let bT = fd
1051+ let fb = {
1052+ let bT = fa
10711053 if ($isInstanceOf(bT, "Address"))
10721054 then {
1073- let ff = bT
1074- invoke(ff, "emit", [el], nil)
1055+ let fc = bT
1056+ invoke(fc, "emit", [ei], nil)
10751057 }
10761058 else unit
10771059 }
1078- if ((fe == fe))
1060+ if ((fb == fb))
10791061 then {
1080- let gP = if ((em > 0))
1081- then invoke(bt, "put", nil, [AttachedPayment(gN, em)])
1062+ let gM = if ((ej > 0))
1063+ then invoke(bt, "put", nil, [AttachedPayment(gK, ej)])
10821064 else nil
1083- if ((gP == gP))
1065+ if ((gM == gM))
10841066 then {
1085- let gQ = if ((en > 0))
1086- then invoke(bt, "put", nil, [AttachedPayment(gO, en)])
1067+ let gN = if ((ek > 0))
1068+ then invoke(bt, "put", nil, [AttachedPayment(gL, ek)])
10871069 else nil
1088- if ((gQ == gQ))
1070+ if ((gN == gN))
10891071 then {
1090- let gR = if (gM)
1072+ let gO = if (gJ)
10911073 then {
1092- let gS = invoke(bs, "stake", nil, [AttachedPayment(dq, el)])
1093- if ((gS == gS))
1074+ let gP = invoke(bs, "stake", nil, [AttachedPayment(dn, ei)])
1075+ if ((gP == gP))
10941076 then nil
10951077 else throw("Strict value is not equal to itself.")
10961078 }
1097- else [ScriptTransfer(eV.caller, el, dq)]
1098- let gT = eD(0, 0, 0)
1099- if ((gT == gT))
1079+ else [ScriptTransfer(eS.caller, ei, dn)]
1080+ let gQ = eA(0, 0, 0)
1081+ if ((gQ == gQ))
11001082 then {
1101- let eu = gT._2
1102- let gU = gT._1
1103- let gV = eH(eC, eu)
1104- if ((gV == gV))
1083+ let er = gQ._2
1084+ let gR = gQ._1
1085+ let gS = eE(ez, er)
1086+ if ((gS == gS))
11051087 then {
1106- let gW = invoke(this, "rebalance", nil, nil)
1107- if ((gW == gW))
1108- then ((dH ++ gR) ++ gU)
1088+ let gT = invoke(this, "rebalance", nil, nil)
1089+ if ((gT == gT))
1090+ then ((dE ++ gO) ++ gR)
11091091 else throw("Strict value is not equal to itself.")
11101092 }
11111093 else throw("Strict value is not equal to itself.")
11251107
11261108
11271109
1128-@Callable(eV)
1129-func putForFree (gX) = if ((0 > gX))
1110+@Callable(eS)
1111+func putForFree (gU) = if ((0 > gU))
11301112 then throw("Invalid value passed")
11311113 else {
1132- let fb = eY(eV, gX, false)
1133- let dH = fb._9
1134- let eZ = toBigInt(value(eV.payments[0]).amount)
1135- let fa = toBigInt(value(eV.payments[1]).amount)
1136- let eC = ev(eZ, fa, toBigInt(0))
1137- if ((eC == eC))
1114+ let eY = eV(eS, gU, false)
1115+ let dE = eY._9
1116+ let eW = toBigInt(value(eS.payments[0]).amount)
1117+ let eX = toBigInt(value(eS.payments[1]).amount)
1118+ let ez = es(eW, eX, toBigInt(0))
1119+ if ((ez == ez))
11381120 then {
1139- let gY = eD(0, 0, 0)
1140- let gU = gY._1
1141- let eu = gY._2
1142- let gV = eH(eC, eu)
1143- if ((gV == gV))
1144- then (dH ++ gU)
1121+ let gV = eA(0, 0, 0)
1122+ let gR = gV._1
1123+ let er = gV._2
1124+ let gS = eE(ez, er)
1125+ if ((gS == gS))
1126+ then (dE ++ gR)
11451127 else throw("Strict value is not equal to itself.")
11461128 }
11471129 else throw("Strict value is not equal to itself.")
11491131
11501132
11511133
1152-@Callable(eV)
1153-func putOneTkn (gZ,ha) = {
1154- let hb = {
1134+@Callable(eS)
1135+func putOneTkn (gW,gX) = {
1136+ let gY = {
11551137 let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11561138 if ($isInstanceOf(aW, "Boolean"))
11571139 then aW
11581140 else throw(($getType(aW) + " couldn't be cast to Boolean"))
11591141 }
1160- let hc = if (if (if (aY())
1142+ let gZ = if (if (if (aY())
11611143 then true
11621144 else (bl == l))
11631145 then true
11641146 else (bl == n))
11651147 then true
1166- else hb
1167- let fP = [if (if (!(hc))
1148+ else gY
1149+ let fM = [if (if (!(gZ))
11681150 then true
1169- else gk(eV))
1151+ else gh(eS))
11701152 then true
1171- else aQ("put operation is blocked by admin"), if ((size(eV.payments) == 1))
1153+ else aQ("put operation is blocked by admin"), if ((size(eS.payments) == 1))
11721154 then true
11731155 else aQ("exactly 1 payment are expected")]
1174- if ((fP == fP))
1156+ if ((fM == fM))
11751157 then {
1176- let hd = eV.payments[0]
1177- let fk = hd.assetId
1178- let fj = hd.amount
1179- let eC = if ((fk == bn))
1180- then ev(toBigInt(fj), toBigInt(0), toBigInt(0))
1181- else if ((fk == bo))
1182- then ev(toBigInt(0), toBigInt(fj), toBigInt(0))
1158+ let ha = eS.payments[0]
1159+ let fh = ha.assetId
1160+ let fg = ha.amount
1161+ let ez = if ((fh == bn))
1162+ then es(toBigInt(fg), toBigInt(0), toBigInt(0))
1163+ else if ((fh == bo))
1164+ then es(toBigInt(0), toBigInt(fg), toBigInt(0))
11831165 else aQ("payment asset is not supported")
1184- if ((eC == eC))
1166+ if ((ez == ez))
11851167 then {
1186- let ab = eV.caller
1187- let ac = eV.transactionId
1188- let he = fi(fj, fk, ab, ac)
1189- if ((he == he))
1168+ let ab = eS.caller
1169+ let ac = eS.transactionId
1170+ let hb = ff(fg, fh, ab, ac)
1171+ if ((hb == hb))
11901172 then {
1191- let fo = he._5
1192- let hf = he._4
1193- let fh = he._3
1194- let eo = he._2
1195- let hg = he._1
1196- let hh = if (if ((gZ > 0))
1197- then (gZ > hg)
1173+ let fl = hb._5
1174+ let hc = hb._4
1175+ let fe = hb._3
1176+ let el = hb._2
1177+ let hd = hb._1
1178+ let he = if (if ((gW > 0))
1179+ then (gW > hd)
11981180 else false)
1199- then aQ(makeString(["amount to receive is less than ", toString(gZ)], ""))
1200- else hg
1201- let fd = fc(hh)
1202- if ((fd == fd))
1181+ then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1182+ else hd
1183+ let fa = eZ(he)
1184+ if ((fa == fa))
12031185 then {
1204- let gR = if (ha)
1186+ let gO = if (gX)
12051187 then {
1206- let hi = invoke(bs, "stake", nil, [AttachedPayment(bm, hh)])
1207- if ((hi == hi))
1188+ let hf = invoke(bs, "stake", nil, [AttachedPayment(bm, he)])
1189+ if ((hf == hf))
12081190 then nil
12091191 else throw("Strict value is not equal to itself.")
12101192 }
1211- else [ScriptTransfer(eV.caller, hh, bm)]
1212- let hj = if ((fh > 0))
1213- then [ScriptTransfer(aU, fh, fk)]
1193+ else [ScriptTransfer(eS.caller, he, bm)]
1194+ let hg = if ((fe > 0))
1195+ then [ScriptTransfer(aU, fe, fh)]
12141196 else nil
1215- let hk = if ((this == aU))
1197+ let hh = if ((this == aU))
12161198 then $Tuple2(0, 0)
1217- else if (fo)
1218- then $Tuple2(-(fh), 0)
1219- else $Tuple2(0, -(fh))
1220- let eE = hk._1
1221- let eF = hk._2
1222- let hl = eD(eE, eF, 0)
1223- let gU = hl._1
1224- let eu = hl._2
1225- let eO = value(getString(aj))
1226- let gV = eH(eC, eu)
1227- if ((gV == gV))
1199+ else if (fl)
1200+ then $Tuple2(-(fe), 0)
1201+ else $Tuple2(0, -(fe))
1202+ let eB = hh._1
1203+ let eC = hh._2
1204+ let hi = eA(eB, eC, 0)
1205+ let gR = hi._1
1206+ let er = hi._2
1207+ let eL = value(getString(aj))
1208+ let gS = eE(ez, er)
1209+ if ((gS == gS))
12281210 then {
1229- let gW = invoke(this, "rebalance", nil, nil)
1230- if ((gW == gW))
1231- then $Tuple2((((eo ++ gR) ++ hj) ++ gU), hh)
1211+ let gT = invoke(this, "rebalance", nil, nil)
1212+ if ((gT == gT))
1213+ then $Tuple2((((el ++ gO) ++ hg) ++ gR), he)
12321214 else throw("Strict value is not equal to itself.")
12331215 }
12341216 else throw("Strict value is not equal to itself.")
12441226
12451227
12461228
1247-@Callable(eV)
1248-func putOneTknREADONLY (fk,fj) = {
1249- let hm = fi(fj, bd(fk), unit, unit)
1250- let hg = hm._1
1251- let eo = hm._2
1252- let fh = hm._3
1253- let hf = hm._4
1254- let fo = hm._5
1255- $Tuple2(nil, $Tuple3(hg, fh, hf))
1229+@Callable(eS)
1230+func putOneTknREADONLY (fh,fg) = {
1231+ let hj = ff(fg, bd(fh), unit, unit)
1232+ let hd = hj._1
1233+ let el = hj._2
1234+ let fe = hj._3
1235+ let hc = hj._4
1236+ let fl = hj._5
1237+ $Tuple2(nil, $Tuple3(hd, fe, hc))
12561238 }
12571239
12581240
12591241
1260-@Callable(eV)
1261-func getOneTkn (hn,gZ) = {
1262- let hb = {
1242+@Callable(eS)
1243+func getOneTkn (hk,gW) = {
1244+ let gY = {
12631245 let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12641246 if ($isInstanceOf(aW, "Boolean"))
12651247 then aW
12661248 else throw(($getType(aW) + " couldn't be cast to Boolean"))
12671249 }
1268- let ho = if (if (aY())
1250+ let hl = if (if (aY())
12691251 then true
12701252 else (bl == n))
12711253 then true
1272- else hb
1273- let fP = [if (if (!(ho))
1254+ else gY
1255+ let fM = [if (if (!(hl))
12741256 then true
1275- else gk(eV))
1257+ else gh(eS))
12761258 then true
1277- else aQ("get operation is blocked by admin"), if ((size(eV.payments) == 1))
1259+ else aQ("get operation is blocked by admin"), if ((size(eS.payments) == 1))
12781260 then true
12791261 else aQ("exactly 1 payment are expected")]
1280- if ((fP == fP))
1262+ if ((fM == fM))
12811263 then {
1282- let fO = bd(hn)
1283- let hd = eV.payments[0]
1284- let fk = hd.assetId
1285- let fw = hd.amount
1286- let eC = ev(toBigInt(0), toBigInt(0), toBigInt(0))
1287- if ((eC == eC))
1264+ let fL = bd(hk)
1265+ let ha = eS.payments[0]
1266+ let fh = ha.assetId
1267+ let ft = ha.amount
1268+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1269+ if ((ez == ez))
12881270 then {
1289- let ab = eV.caller
1290- let ac = eV.transactionId
1291- let hp = fN(fO, fw, fk, ab, ac)
1292- if ((hp == hp))
1271+ let ab = eS.caller
1272+ let ac = eS.transactionId
1273+ let hm = fK(fL, ft, fh, ab, ac)
1274+ if ((hm == hm))
12931275 then {
1294- let fQ = hp._5
1295- let hf = hp._4
1296- let fh = hp._3
1297- let eo = hp._2
1298- let hq = hp._1
1299- let bW = if (if ((gZ > 0))
1300- then (gZ > hq)
1276+ let fN = hm._5
1277+ let hc = hm._4
1278+ let fe = hm._3
1279+ let el = hm._2
1280+ let hn = hm._1
1281+ let bW = if (if ((gW > 0))
1282+ then (gW > hn)
13011283 else false)
1302- then aQ(makeString(["amount to receive is less than ", toString(gZ)], ""))
1303- else hq
1304- let hr = invoke(aT, "burn", [fw], [AttachedPayment(fk, fw)])
1305- if ((hr == hr))
1284+ then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1285+ else hn
1286+ let ho = invoke(aT, "burn", [ft], [AttachedPayment(fh, ft)])
1287+ if ((ho == ho))
13061288 then {
1307- let gF = cK(hn, bW)
1308- let hs = [ScriptTransfer(ab, bW, fO)]
1309- let hj = if ((fh > 0))
1310- then [ScriptTransfer(aU, fh, fO)]
1289+ let gC = cH(hk, bW)
1290+ let hp = [ScriptTransfer(ab, bW, fL)]
1291+ let hg = if ((fe > 0))
1292+ then [ScriptTransfer(aU, fe, fL)]
13111293 else nil
1312- let ht = {
1313- let hu = if ((this == aU))
1294+ let hq = {
1295+ let hr = if ((this == aU))
13141296 then 0
1315- else fh
1316- if (fQ)
1317- then $Tuple2(-((bW + hu)), 0)
1318- else $Tuple2(0, -((bW + hu)))
1297+ else fe
1298+ if (fN)
1299+ then $Tuple2(-((bW + hr)), 0)
1300+ else $Tuple2(0, -((bW + hr)))
13191301 }
1320- let eE = ht._1
1321- let eF = ht._2
1322- let hv = eD(eE, eF, 0)
1323- let gU = hv._1
1324- let eu = hv._2
1325- let gV = eH(eC, eu)
1326- if ((gV == gV))
1327- then $Tuple2(((((eo ++ gF) ++ hs) ++ hj) ++ gU), bW)
1302+ let eB = hq._1
1303+ let eC = hq._2
1304+ let hs = eA(eB, eC, 0)
1305+ let gR = hs._1
1306+ let er = hs._2
1307+ let gS = eE(ez, er)
1308+ if ((gS == gS))
1309+ then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
13281310 else throw("Strict value is not equal to itself.")
13291311 }
13301312 else throw("Strict value is not equal to itself.")
13381320
13391321
13401322
1341-@Callable(eV)
1342-func getOneTknREADONLY (fO,fw) = {
1343- let hw = fN(bd(fO), fw, bm, unit, unit)
1344- let hq = hw._1
1345- let eo = hw._2
1346- let fh = hw._3
1347- let hf = hw._4
1348- let fQ = hw._5
1349- $Tuple2(nil, $Tuple3(hq, fh, hf))
1323+@Callable(eS)
1324+func getOneTknREADONLY (fL,ft) = {
1325+ let ht = fK(bd(fL), ft, bm, unit, unit)
1326+ let hn = ht._1
1327+ let el = ht._2
1328+ let fe = ht._3
1329+ let hc = ht._4
1330+ let fN = ht._5
1331+ $Tuple2(nil, $Tuple3(hn, fe, hc))
13501332 }
13511333
13521334
13531335
1354-@Callable(eV)
1355-func unstakeAndGetOneTkn (hx,hn,gZ) = {
1356- let hb = {
1336+@Callable(eS)
1337+func unstakeAndGetOneTkn (hu,hk,gW) = {
1338+ let gY = {
13571339 let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13581340 if ($isInstanceOf(aW, "Boolean"))
13591341 then aW
13601342 else throw(($getType(aW) + " couldn't be cast to Boolean"))
13611343 }
1362- let ho = if (if (aY())
1344+ let hl = if (if (aY())
13631345 then true
13641346 else (bl == n))
13651347 then true
1366- else hb
1367- let fP = [if (if (!(ho))
1348+ else gY
1349+ let fM = [if (if (!(hl))
13681350 then true
1369- else gk(eV))
1351+ else gh(eS))
13701352 then true
1371- else aQ("get operation is blocked by admin"), if ((size(eV.payments) == 0))
1353+ else aQ("get operation is blocked by admin"), if ((size(eS.payments) == 0))
13721354 then true
13731355 else aQ("no payments are expected")]
1374- if ((fP == fP))
1356+ if ((fM == fM))
13751357 then {
1376- let fO = bd(hn)
1377- let ab = eV.caller
1378- let ac = eV.transactionId
1379- let eC = ev(toBigInt(0), toBigInt(0), toBigInt(0))
1380- if ((eC == eC))
1358+ let fL = bd(hk)
1359+ let ab = eS.caller
1360+ let ac = eS.transactionId
1361+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1362+ if ((ez == ez))
13811363 then {
1382- let hy = invoke(bs, "unstake", [toBase58String(bm), hx], nil)
1383- if ((hy == hy))
1364+ let hv = invoke(bs, "unstake", [toBase58String(bm), hu], nil)
1365+ if ((hv == hv))
13841366 then {
1385- let hz = fN(fO, hx, bm, ab, ac)
1386- if ((hz == hz))
1367+ let hw = fK(fL, hu, bm, ab, ac)
1368+ if ((hw == hw))
13871369 then {
1388- let fQ = hz._5
1389- let hf = hz._4
1390- let fh = hz._3
1391- let eo = hz._2
1392- let hq = hz._1
1393- let bW = if (if ((gZ > 0))
1394- then (gZ > hq)
1370+ let fN = hw._5
1371+ let hc = hw._4
1372+ let fe = hw._3
1373+ let el = hw._2
1374+ let hn = hw._1
1375+ let bW = if (if ((gW > 0))
1376+ then (gW > hn)
13951377 else false)
1396- then aQ(makeString(["amount to receive is less than ", toString(gZ)], ""))
1397- else hq
1398- let hr = invoke(aT, "burn", [hx], [AttachedPayment(bm, hx)])
1399- if ((hr == hr))
1378+ then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1379+ else hn
1380+ let ho = invoke(aT, "burn", [hu], [AttachedPayment(bm, hu)])
1381+ if ((ho == ho))
14001382 then {
1401- let gF = cK(hn, bW)
1402- let hs = [ScriptTransfer(eV.caller, bW, fO)]
1403- let hj = if ((fh > 0))
1404- then [ScriptTransfer(aU, fh, fO)]
1383+ let gC = cH(hk, bW)
1384+ let hp = [ScriptTransfer(eS.caller, bW, fL)]
1385+ let hg = if ((fe > 0))
1386+ then [ScriptTransfer(aU, fe, fL)]
14051387 else nil
1406- let hA = {
1407- let hu = if ((this == aU))
1388+ let hx = {
1389+ let hr = if ((this == aU))
14081390 then 0
1409- else fh
1410- if (fQ)
1411- then $Tuple2(-((bW + hu)), 0)
1412- else $Tuple2(0, -((bW + hu)))
1391+ else fe
1392+ if (fN)
1393+ then $Tuple2(-((bW + hr)), 0)
1394+ else $Tuple2(0, -((bW + hr)))
14131395 }
1414- let eE = hA._1
1415- let eF = hA._2
1416- let hB = eD(eE, eF, 0)
1417- let gU = hB._1
1418- let eu = hB._2
1419- let gV = eH(eC, eu)
1420- if ((gV == gV))
1421- then $Tuple2(((((eo ++ gF) ++ hs) ++ hj) ++ gU), bW)
1396+ let eB = hx._1
1397+ let eC = hx._2
1398+ let hy = eA(eB, eC, 0)
1399+ let gR = hy._1
1400+ let er = hy._2
1401+ let gS = eE(ez, er)
1402+ if ((gS == gS))
1403+ then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
14221404 else throw("Strict value is not equal to itself.")
14231405 }
14241406 else throw("Strict value is not equal to itself.")
14341416
14351417
14361418
1437-@Callable(eV)
1419+@Callable(eS)
14381420 func get () = {
1439- let dZ = eU(eV)
1440- let dF = dZ._1
1441- let dG = dZ._2
1442- let eX = dZ._3
1443- let do = dZ._4
1444- let dH = dZ._5
1445- let gF = cP(dF, dG)
1446- let eC = ev(toBigInt(0), toBigInt(0), toBigInt(0))
1447- if ((eC == eC))
1421+ let dW = eR(eS)
1422+ let dC = dW._1
1423+ let dD = dW._2
1424+ let eU = dW._3
1425+ let dl = dW._4
1426+ let dE = dW._5
1427+ let gC = cM(dC, dD)
1428+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1429+ if ((ez == ez))
14481430 then {
1449- let hC = invoke(aT, "burn", [eX], [AttachedPayment(do, eX)])
1450- if ((hC == hC))
1431+ let hz = invoke(aT, "burn", [eU], [AttachedPayment(dl, eU)])
1432+ if ((hz == hz))
14511433 then {
1452- let hD = eD(-(dF), -(dG), 0)
1453- let gU = hD._1
1454- let eu = hD._2
1455- let gV = eH(eC, eu)
1456- if ((gV == gV))
1457- then ((gF ++ dH) ++ gU)
1434+ let hA = eA(-(dC), -(dD), 0)
1435+ let gR = hA._1
1436+ let er = hA._2
1437+ let gS = eE(ez, er)
1438+ if ((gS == gS))
1439+ then ((gC ++ dE) ++ gR)
14581440 else throw("Strict value is not equal to itself.")
14591441 }
14601442 else throw("Strict value is not equal to itself.")
14641446
14651447
14661448
1467-@Callable(eV)
1468-func getNoLess (hE,hF) = {
1469- let dZ = eU(eV)
1470- let dF = dZ._1
1471- let dG = dZ._2
1472- let eX = dZ._3
1473- let do = dZ._4
1474- let dH = dZ._5
1475- if ((hE > dF))
1476- then throw(((("noLessThenAmtAsset failed: " + toString(dF)) + " < ") + toString(hE)))
1477- else if ((hF > dG))
1478- then throw(((("noLessThenPriceAsset failed: " + toString(dG)) + " < ") + toString(hF)))
1449+@Callable(eS)
1450+func getNoLess (hB,hC) = {
1451+ let dW = eR(eS)
1452+ let dC = dW._1
1453+ let dD = dW._2
1454+ let eU = dW._3
1455+ let dl = dW._4
1456+ let dE = dW._5
1457+ if ((hB > dC))
1458+ then throw(((("noLessThenAmtAsset failed: " + toString(dC)) + " < ") + toString(hB)))
1459+ else if ((hC > dD))
1460+ then throw(((("noLessThenPriceAsset failed: " + toString(dD)) + " < ") + toString(hC)))
14791461 else {
1480- let gF = cP(dF, dG)
1481- let eC = ev(toBigInt(0), toBigInt(0), toBigInt(0))
1482- if ((eC == eC))
1462+ let gC = cM(dC, dD)
1463+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1464+ if ((ez == ez))
14831465 then {
1484- let hC = invoke(aT, "burn", [eX], [AttachedPayment(do, eX)])
1485- if ((hC == hC))
1466+ let hz = invoke(aT, "burn", [eU], [AttachedPayment(dl, eU)])
1467+ if ((hz == hz))
14861468 then {
1487- let hG = eD(-(dF), -(dG), 0)
1488- let gU = hG._1
1489- let eu = hG._2
1490- let gV = eH(eC, eu)
1491- if ((gV == gV))
1492- then ((gF ++ dH) ++ gU)
1469+ let hD = eA(-(dC), -(dD), 0)
1470+ let gR = hD._1
1471+ let er = hD._2
1472+ let gS = eE(ez, er)
1473+ if ((gS == gS))
1474+ then ((gC ++ dE) ++ gR)
14931475 else throw("Strict value is not equal to itself.")
14941476 }
14951477 else throw("Strict value is not equal to itself.")
15001482
15011483
15021484
1503-@Callable(eV)
1485+@Callable(eS)
15041486 func unstakeAndGet (bW) = {
1505- let hH = if ((size(eV.payments) != 0))
1487+ let hE = if ((size(eS.payments) != 0))
15061488 then throw("No payments are expected")
15071489 else true
1508- if ((hH == hH))
1490+ if ((hE == hE))
15091491 then {
1510- let dd = ba()
1511- let dq = fromBase58String(dd[q])
1512- let eC = ev(toBigInt(0), toBigInt(0), toBigInt(0))
1513- if ((eC == eC))
1492+ let da = ba()
1493+ let dn = fromBase58String(da[q])
1494+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1495+ if ((ez == ez))
15141496 then {
1515- let hy = invoke(bs, "unstake", [toBase58String(dq), bW], nil)
1516- if ((hy == hy))
1497+ let hv = invoke(bs, "unstake", [toBase58String(dn), bW], nil)
1498+ if ((hv == hv))
15171499 then {
1518- let dZ = dm(toBase58String(eV.transactionId), toBase58String(dq), bW, eV.caller)
1519- let dF = dZ._1
1520- let dG = dZ._2
1521- let dt = parseIntValue(dZ._9)
1522- let dH = dZ._10
1523- let gF = cP(dF, dG)
1524- let hI = if (if (aY())
1500+ let dW = dj(toBase58String(eS.transactionId), toBase58String(dn), bW, eS.caller)
1501+ let dC = dW._1
1502+ let dD = dW._2
1503+ let dq = parseIntValue(dW._9)
1504+ let dE = dW._10
1505+ let gC = cM(dC, dD)
1506+ let hF = if (if (aY())
15251507 then true
1526- else (dt == n))
1527- then throw(("Get operation is blocked by admin. Status = " + toString(dt)))
1508+ else (dq == n))
1509+ then throw(("Get operation is blocked by admin. Status = " + toString(dq)))
15281510 else true
1529- if ((hI == hI))
1511+ if ((hF == hF))
15301512 then {
1531- let hC = invoke(aT, "burn", [bW], [AttachedPayment(dq, bW)])
1532- if ((hC == hC))
1513+ let hz = invoke(aT, "burn", [bW], [AttachedPayment(dn, bW)])
1514+ if ((hz == hz))
15331515 then {
1534- let hJ = eD(-(dF), -(dG), 0)
1535- let gU = hJ._1
1536- let eu = hJ._2
1537- let gV = eH(eC, eu)
1538- if ((gV == gV))
1539- then ((gF ++ dH) ++ gU)
1516+ let hG = eA(-(dC), -(dD), 0)
1517+ let gR = hG._1
1518+ let er = hG._2
1519+ let gS = eE(ez, er)
1520+ if ((gS == gS))
1521+ then ((gC ++ dE) ++ gR)
15401522 else throw("Strict value is not equal to itself.")
15411523 }
15421524 else throw("Strict value is not equal to itself.")
15521534
15531535
15541536
1555-@Callable(eV)
1556-func unstakeAndGetNoLess (hx,hK,hF) = {
1557- let ho = if (aY())
1537+@Callable(eS)
1538+func unstakeAndGetNoLess (hu,hH,hC) = {
1539+ let hl = if (aY())
15581540 then true
15591541 else (bl == n)
1560- let fP = [if (!(ho))
1542+ let fM = [if (!(hl))
15611543 then true
1562- else throw("get operation is blocked by admin"), if ((size(eV.payments) == 0))
1544+ else throw("get operation is blocked by admin"), if ((size(eS.payments) == 0))
15631545 then true
15641546 else throw("no payments are expected")]
1565- if ((fP == fP))
1547+ if ((fM == fM))
15661548 then {
1567- let eC = ev(toBigInt(0), toBigInt(0), toBigInt(0))
1568- if ((eC == eC))
1549+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1550+ if ((ez == ez))
15691551 then {
1570- let hy = invoke(bs, "unstake", [toBase58String(bm), hx], nil)
1571- if ((hy == hy))
1552+ let hv = invoke(bs, "unstake", [toBase58String(bm), hu], nil)
1553+ if ((hv == hv))
15721554 then {
1573- let dZ = dm(toBase58String(eV.transactionId), toBase58String(bm), hx, eV.caller)
1574- let dF = dZ._1
1575- let dG = dZ._2
1576- let dH = dZ._10
1577- let gF = cP(dF, dG)
1578- let hL = [if ((dF >= hK))
1555+ let dW = dj(toBase58String(eS.transactionId), toBase58String(bm), hu, eS.caller)
1556+ let dC = dW._1
1557+ let dD = dW._2
1558+ let dE = dW._10
1559+ let gC = cM(dC, dD)
1560+ let hI = [if ((dC >= hH))
15791561 then true
1580- else throw(makeString(["amount asset amount to receive is less than ", toString(hK)], "")), if ((dG >= hF))
1562+ else throw(makeString(["amount asset amount to receive is less than ", toString(hH)], "")), if ((dD >= hC))
15811563 then true
1582- else throw(makeString(["price asset amount to receive is less than ", toString(hF)], ""))]
1583- if ((hL == hL))
1564+ else throw(makeString(["price asset amount to receive is less than ", toString(hC)], ""))]
1565+ if ((hI == hI))
15841566 then {
1585- let hC = invoke(aT, "burn", [hx], [AttachedPayment(bm, hx)])
1586- if ((hC == hC))
1567+ let hz = invoke(aT, "burn", [hu], [AttachedPayment(bm, hu)])
1568+ if ((hz == hz))
15871569 then {
1588- let hM = eD(-(dF), -(dG), 0)
1589- let gU = hM._1
1590- let eu = hM._2
1591- let gV = eH(eC, eu)
1592- if ((gV == gV))
1593- then ((gF ++ dH) ++ gU)
1570+ let hJ = eA(-(dC), -(dD), 0)
1571+ let gR = hJ._1
1572+ let er = hJ._2
1573+ let gS = eE(ez, er)
1574+ if ((gS == gS))
1575+ then ((gC ++ dE) ++ gR)
15941576 else throw("Strict value is not equal to itself.")
15951577 }
15961578 else throw("Strict value is not equal to itself.")
16061588
16071589
16081590
1609-@Callable(eV)
1610-func activate (hN,hO) = if ((toString(eV.caller) != toString(aT)))
1591+@Callable(eS)
1592+func activate (hK,hL) = if ((toString(eS.caller) != toString(aT)))
16111593 then throw("permissions denied")
1612- else $Tuple2([StringEntry(ae(), hN), StringEntry(af(), hO)], "success")
1594+ else $Tuple2([StringEntry(ae(), hK), StringEntry(af(), hL)], "success")
16131595
16141596
16151597
1616-@Callable(eV)
1598+@Callable(eS)
16171599 func refreshKLp () = {
1618- let hP = valueOrElse(getInteger(ak), 0)
1619- let hQ = if (((height - hP) >= an))
1600+ let hM = valueOrElse(getInteger(ak), 0)
1601+ let hN = if (((height - hM) >= an))
16201602 then unit
16211603 else aQ(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1622- if ((hQ == hQ))
1604+ if ((hN == hN))
16231605 then {
1624- let eO = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
1625- let hR = eD(0, 0, 0)
1626- let hS = hR._1
1627- let eu = hR._2
1628- let eG = if ((eO != eu))
1629- then hS
1606+ let eL = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
1607+ let hO = eA(0, 0, 0)
1608+ let hP = hO._1
1609+ let er = hO._2
1610+ let eD = if ((eL != er))
1611+ then hP
16301612 else aQ("nothing to refresh")
1631- $Tuple2(eG, toString(eu))
1613+ $Tuple2(eD, toString(er))
16321614 }
16331615 else throw("Strict value is not equal to itself.")
16341616 }
16351617
16361618
16371619
1638-@Callable(eV)
1620+@Callable(eS)
16391621 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, ba())
16401622
16411623
16421624
1643-@Callable(eV)
1625+@Callable(eS)
16441626 func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bJ(ap))
16451627
16461628
16471629
1648-@Callable(eV)
1649-func calcPricesWrapperREADONLY (cX,cY,dc) = {
1650- let dl = db(cX, cY, dc)
1651- $Tuple2(nil, [toString(dl[0]), toString(dl[1]), toString(dl[2])])
1630+@Callable(eS)
1631+func calcPricesWrapperREADONLY (cU,cV,cZ) = {
1632+ let di = cY(cU, cV, cZ)
1633+ $Tuple2(nil, [toString(di[0]), toString(di[1]), toString(di[2])])
16521634 }
16531635
16541636
16551637
1656-@Callable(eV)
1638+@Callable(eS)
16571639 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
16581640
16591641
16601642
1661-@Callable(eV)
1643+@Callable(eS)
16621644 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
16631645
16641646
16651647
1666-@Callable(eV)
1648+@Callable(eS)
16671649 func calcPriceBigIntWrapperREADONLY (bN,bO) = $Tuple2(nil, toString(bM(parseBigIntValue(bN), parseBigIntValue(bO))))
16681650
16691651
16701652
1671-@Callable(eV)
1672-func estimatePutOperationWrapperREADONLY (dn,dJ,dK,dL,dM,dN,ab,dO,dP) = $Tuple2(nil, dI(dn, dJ, dK, dL, dM, dN, ab, dO, dP))
1653+@Callable(eS)
1654+func estimatePutOperationWrapperREADONLY (dk,dG,dH,dI,dJ,dK,ab,dL,dM) = $Tuple2(nil, dF(dk, dG, dH, dI, dJ, dK, ab, dL, dM))
16731655
16741656
16751657
1676-@Callable(eV)
1677-func estimateGetOperationWrapperREADONLY (dn,do,dp,ab) = {
1678- let dZ = dm(dn, do, dp, addressFromStringValue(ab))
1679- $Tuple2(nil, $Tuple10(dZ._1, dZ._2, dZ._3, dZ._4, dZ._5, dZ._6, dZ._7, toString(dZ._8), dZ._9, dZ._10))
1658+@Callable(eS)
1659+func estimateGetOperationWrapperREADONLY (dk,dl,dm,ab) = {
1660+ let dW = dj(dk, dl, dm, addressFromStringValue(ab))
1661+ $Tuple2(nil, $Tuple10(dW._1, dW._2, dW._3, dW._4, dW._5, dW._6, dW._7, toString(dW._8), dW._9, dW._10))
16801662 }
16811663
16821664
16831665
1684-@Callable(eV)
1666+@Callable(eS)
16851667 func statsREADONLY () = {
1686- let dd = ba()
1687- let dq = fromBase58String(dd[q])
1688- let hT = dd[r]
1689- let hU = dd[s]
1690- let dS = dd[v]
1691- let dT = dd[w]
1692- let de = parseIntValue(dd[t])
1693- let df = parseIntValue(dd[u])
1694- let hV = valueOrErrorMessage(assetInfo(dq), (("Asset " + toBase58String(dq)) + " doesn't exist")).quantity
1695- let hW = bJ(hT)
1696- let hX = bJ(hU)
1697- let hY = if ((hV == 0))
1668+ let da = ba()
1669+ let dn = fromBase58String(da[q])
1670+ let hQ = da[r]
1671+ let hR = da[s]
1672+ let dP = da[v]
1673+ let dQ = da[w]
1674+ let db = parseIntValue(da[t])
1675+ let dc = parseIntValue(da[u])
1676+ let hS = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
1677+ let hT = bJ(hQ)
1678+ let hU = bJ(hR)
1679+ let hV = if ((hS == 0))
16981680 then [e, e, e]
1699- else db(hW, hX, hV)
1700- let dA = 0
1701- let hZ = H(hY[1], b)
1702- let ia = H(hY[2], b)
1703- let ib = value(getInteger(aT, aD(toString(this))))
1704- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hW), toString(hX), toString(hV), toString(dA), toString(hZ), toString(ia), toString(ib)], j))
1681+ else cY(hT, hU, hS)
1682+ let dx = 0
1683+ let hW = H(hV[1], b)
1684+ let hX = H(hV[2], b)
1685+ let hY = value(getInteger(aT, aD(toString(this))))
1686+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hT), toString(hU), toString(hS), toString(dx), toString(hW), toString(hX), toString(hY)], j))
17051687 }
17061688
17071689
17081690
1709-@Callable(eV)
1710-func evaluatePutByAmountAssetREADONLY (dK) = {
1711- let dd = ba()
1712- let dq = fromBase58String(dd[q])
1713- let dQ = dd[r]
1714- let dr = fromBase58String(dQ)
1715- let dR = dd[s]
1716- let ds = fromBase58String(dR)
1717- let de = parseIntValue(dd[t])
1718- let df = parseIntValue(dd[u])
1719- let dt = dd[p]
1720- let hV = valueOrErrorMessage(assetInfo(dq), (("Asset " + toBase58String(dq)) + " doesn't exist")).quantity
1721- let hW = bJ(dQ)
1722- let hX = bJ(dR)
1723- let cZ = D(hW, de)
1724- let da = D(hX, df)
1725- let dz = if ((hV == 0))
1691+@Callable(eS)
1692+func evaluatePutByAmountAssetREADONLY (dH) = {
1693+ let da = ba()
1694+ let dn = fromBase58String(da[q])
1695+ let dN = da[r]
1696+ let do = fromBase58String(dN)
1697+ let dO = da[s]
1698+ let dp = fromBase58String(dO)
1699+ let db = parseIntValue(da[t])
1700+ let dc = parseIntValue(da[u])
1701+ let dq = da[p]
1702+ let hS = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
1703+ let hT = bJ(dN)
1704+ let hU = bJ(dO)
1705+ let cW = D(hT, db)
1706+ let cX = D(hU, dc)
1707+ let dw = if ((hS == 0))
17261708 then e
1727- else bM(da, cZ)
1728- let dW = D(dK, de)
1729- let dX = fraction(dW, dz, d)
1730- let dM = H(dX, df)
1731- let fb = dI("", 500000, dK, dr, dM, ds, "", true, false)
1732- let eh = fb._1
1733- let ic = fb._3
1734- let dv = fb._4
1735- let dx = fb._5
1736- let du = fb._6
1737- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(eh), toString(H(dz, b)), toString(dv), toString(dx), toString(du), dt, toString(dK), toString(dM)], j))
1709+ else bM(cX, cW)
1710+ let dT = D(dH, db)
1711+ let dU = fraction(dT, dw, d)
1712+ let dJ = H(dU, dc)
1713+ let eY = dF("", 500000, dH, do, dJ, dp, "", true, false)
1714+ let ee = eY._1
1715+ let hZ = eY._3
1716+ let ds = eY._4
1717+ let du = eY._5
1718+ let dr = eY._6
1719+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ee), toString(H(dw, b)), toString(ds), toString(du), toString(dr), dq, toString(dH), toString(dJ)], j))
17381720 }
17391721
17401722
17411723
1742-@Callable(eV)
1743-func evaluatePutByPriceAssetREADONLY (dM) = {
1744- let dd = ba()
1745- let dq = fromBase58String(dd[q])
1746- let dQ = dd[r]
1747- let dr = fromBase58String(dQ)
1748- let dR = dd[s]
1749- let ds = fromBase58String(dR)
1750- let de = parseIntValue(dd[t])
1751- let df = parseIntValue(dd[u])
1752- let dt = dd[p]
1753- let hV = valueOrErrorMessage(assetInfo(dq), (("Asset " + toBase58String(dq)) + " doesn't exist")).quantity
1754- let id = bJ(dQ)
1755- let ie = bJ(dR)
1756- let if = D(id, de)
1757- let ig = D(ie, df)
1758- let dz = if ((hV == 0))
1724+@Callable(eS)
1725+func evaluatePutByPriceAssetREADONLY (dJ) = {
1726+ let da = ba()
1727+ let dn = fromBase58String(da[q])
1728+ let dN = da[r]
1729+ let do = fromBase58String(dN)
1730+ let dO = da[s]
1731+ let dp = fromBase58String(dO)
1732+ let db = parseIntValue(da[t])
1733+ let dc = parseIntValue(da[u])
1734+ let dq = da[p]
1735+ let hS = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
1736+ let ia = bJ(dN)
1737+ let ib = bJ(dO)
1738+ let ic = D(ia, db)
1739+ let id = D(ib, dc)
1740+ let dw = if ((hS == 0))
17591741 then e
1760- else bM(ig, if)
1761- let dX = D(dM, df)
1762- let dW = fraction(dX, d, dz)
1763- let dK = H(dW, de)
1764- let fb = dI("", 500000, dK, dr, dM, ds, "", true, false)
1765- let eh = fb._1
1766- let ic = fb._3
1767- let dv = fb._4
1768- let dx = fb._5
1769- let du = fb._6
1770- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(eh), toString(H(dz, b)), toString(dv), toString(dx), toString(du), dt, toString(dK), toString(dM)], j))
1742+ else bM(id, ic)
1743+ let dU = D(dJ, dc)
1744+ let dT = fraction(dU, d, dw)
1745+ let dH = H(dT, db)
1746+ let eY = dF("", 500000, dH, do, dJ, dp, "", true, false)
1747+ let ee = eY._1
1748+ let hZ = eY._3
1749+ let ds = eY._4
1750+ let du = eY._5
1751+ let dr = eY._6
1752+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ee), toString(H(dw, b)), toString(ds), toString(du), toString(dr), dq, toString(dH), toString(dJ)], j))
17711753 }
17721754
17731755
17741756
1775-@Callable(eV)
1776-func evaluateGetREADONLY (ih,ii) = {
1777- let dZ = dm("", ih, ii, this)
1778- let dF = dZ._1
1779- let dG = dZ._2
1780- let dv = dZ._5
1781- let dx = dZ._6
1782- let du = dZ._7
1783- let dA = dZ._8
1784- let dt = parseIntValue(dZ._9)
1785- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dF), toString(dG), toString(dv), toString(dx), toString(du), toString(dA), toString(dt)], j))
1757+@Callable(eS)
1758+func evaluateGetREADONLY (ie,if) = {
1759+ let dW = dj("", ie, if, this)
1760+ let dC = dW._1
1761+ let dD = dW._2
1762+ let ds = dW._5
1763+ let du = dW._6
1764+ let dr = dW._7
1765+ let dx = dW._8
1766+ let dq = parseIntValue(dW._9)
1767+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dC), toString(dD), toString(ds), toString(du), toString(dr), toString(dx), toString(dq)], j))
17861768 }
17871769
17881770
1789-@Verifier(ij)
1790-func ik () = {
1791- let il = {
1792- let bT = gh()
1771+@Verifier(ig)
1772+func ih () = {
1773+ let ii = {
1774+ let bT = ge()
17931775 if ($isInstanceOf(bT, "ByteVector"))
17941776 then {
1795- let gl = bT
1796- gl
1777+ let gi = bT
1778+ gi
17971779 }
17981780 else if ($isInstanceOf(bT, "Unit"))
1799- then ij.senderPublicKey
1781+ then ig.senderPublicKey
18001782 else throw("Match error")
18011783 }
1802- let bT = ij
1784+ let bT = ig
18031785 if ($isInstanceOf(bT, "Order"))
18041786 then {
1805- let eK = bT
1806- let im = aZ()
1807- let in = eJ(eK)
1808- let aI = in._1
1809- let aJ = in._2
1810- let aK = sigVerify(eK.bodyBytes, eK.proofs[0], eK.senderPublicKey)
1811- let aL = sigVerify(eK.bodyBytes, eK.proofs[1], im)
1787+ let eH = bT
1788+ let ij = aZ()
1789+ let ik = eG(eH)
1790+ let aI = ik._1
1791+ let aJ = ik._2
1792+ let aK = sigVerify(eH.bodyBytes, eH.proofs[0], eH.senderPublicKey)
1793+ let aL = sigVerify(eH.bodyBytes, eH.proofs[1], ij)
18121794 if (if (if (aI)
18131795 then aK
18141796 else false)
18191801 }
18201802 else if ($isInstanceOf(bT, "SetScriptTransaction"))
18211803 then {
1822- let gi = bT
1823- if (sigVerify(ij.bodyBytes, ij.proofs[0], il))
1804+ let gf = bT
1805+ if (sigVerify(ig.bodyBytes, ig.proofs[0], ii))
18241806 then true
18251807 else {
1826- let io = blake2b256(value(gi.script))
1827- let ip = fromBase64String(value(getString(aT, aF())))
1828- let iq = scriptHash(this)
1829- if ((ip == io))
1830- then (iq != io)
1808+ let il = blake2b256(value(gf.script))
1809+ let im = fromBase64String(value(getString(aT, aF())))
1810+ let in = scriptHash(this)
1811+ if ((im == il))
1812+ then (in != il)
18311813 else false
18321814 }
18331815 }
1834- else sigVerify(ij.bodyBytes, ij.proofs[0], il)
1816+ else sigVerify(ig.bodyBytes, ig.proofs[0], ii)
18351817 }
18361818
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (E,F) = fraction(E, d, F)
6666
6767
6868 func H (I,J) = toInt(fraction(I, toBigInt(J), d))
6969
7070
7171 func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
7272
7373
7474 func M (N,O,P) = fraction(N, O, P)
7575
7676
7777 func Q (I) = if ((0 > I))
7878 then -(I)
7979 else I
8080
8181
8282 func R (I) = if ((e > I))
8383 then -(I)
8484 else I
8585
8686
8787 func S () = "%s__swapContract"
8888
8989
9090 func T () = "%s__factoryContract"
9191
9292
9393 func U () = "%s__managerPublicKey"
9494
9595
9696 func V () = "%s__pendingManagerPublicKey"
9797
9898
9999 func W () = "%s%s__price__last"
100100
101101
102102 func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], j)
103103
104104
105105 func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
106106
107107
108108 func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
109109
110110
111111 func ae () = "%s__amountAsset"
112112
113113
114114 func af () = "%s__priceAsset"
115115
116116
117117 let ag = "%s__fee"
118118
119119 let ah = fraction(10, b, 10000)
120120
121121 let ai = valueOrElse(getInteger(this, ag), ah)
122122
123123 let aj = makeString(["%s", "kLp"], j)
124124
125125 let ak = makeString(["%s", "kLpRefreshedHeight"], j)
126126
127127 let al = makeString(["%s", "refreshKLpDelay"], j)
128128
129129 let am = 30
130130
131131 let an = valueOrElse(getInteger(this, al), am)
132132
133133 func ao (ap) = makeString(["%s%s", "stakedBalance", ap], j)
134134
135135
136136 func aq (ap) = makeString(["%s%s", "shareAssetBalance", ap], j)
137137
138138
139139 func ar (ap) = valueOrElse(getInteger(this, ao(ap)), 0)
140140
141141
142142 func as (ap) = valueOrElse(getInteger(this, aq(ap)), 0)
143143
144144
145145 func at () = "%s__factoryConfig"
146146
147147
148148 func au () = "%s%s__matcher__publicKey"
149149
150150
151151 func av (aw) = (("%s%s%s__" + aw) + "__mappings__poolContract2LpAsset")
152152
153153
154154 func ax (ay,az) = (((("%d%d%s__" + ay) + "__") + az) + "__config")
155155
156156
157157 func aA (aB) = ("%s%s%s__mappings__baseAsset2internalId__" + aB)
158158
159159
160160 func aC () = "%s__shutdown"
161161
162162
163163 func aD (aE) = ("%s%s__poolWeight__" + aE)
164164
165165
166166 func aF () = "%s__allowedLpScriptHash"
167167
168168
169169 let aG = "%s__feeCollectorAddress"
170170
171171 func aH (aI,aJ,aK,aL) = throw((((((((("order validation failed: orderValid=" + toString(aI)) + " (") + aJ) + ")") + " senderValid=") + toString(aK)) + " matcherValid=") + toString(aL)))
172172
173173
174174 func aM (aN,aO) = valueOrErrorMessage(getString(aN, aO), makeString(["mandatory ", toString(aN), ".", aO, " is not defined"], ""))
175175
176176
177177 func aP (aN,aO) = valueOrErrorMessage(getInteger(aN, aO), makeString(["mandatory ", toString(aN), ".", aO, " is not defined"], ""))
178178
179179
180180 func aQ (aR) = throw(makeString(["lp.ride:", aR], " "))
181181
182182
183183 func aS (aR) = makeString(["lp.ride:", aR], " ")
184184
185185
186186 let aT = addressFromStringValue(aM(this, T()))
187187
188188 let aU = addressFromStringValue(aM(aT, aG))
189189
190190 let aV = {
191191 let aW = invoke(aT, "getInFeeREADONLY", [toString(this)], nil)
192192 if ($isInstanceOf(aW, "Int"))
193193 then aW
194194 else throw(($getType(aW) + " couldn't be cast to Int"))
195195 }
196196
197197 let aX = {
198198 let aW = invoke(aT, "getOutFeeREADONLY", [toString(this)], nil)
199199 if ($isInstanceOf(aW, "Int"))
200200 then aW
201201 else throw(($getType(aW) + " couldn't be cast to Int"))
202202 }
203203
204204 func aY () = valueOrElse(getBoolean(aT, aC()), false)
205205
206206
207207 func aZ () = fromBase58String(aM(aT, au()))
208208
209209
210210 func ba () = {
211211 let bb = aM(this, ae())
212212 let bc = aM(this, af())
213213 let az = aP(aT, aA(bc))
214214 let ay = aP(aT, aA(bb))
215215 split(aM(aT, ax(toString(ay), toString(az))), j)
216216 }
217217
218218
219219 func bd (be) = if ((be == i))
220220 then unit
221221 else fromBase58String(be)
222222
223223
224224 func bf (be) = if ((be == unit))
225225 then i
226226 else toBase58String(value(be))
227227
228228
229229 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]))
230230
231231
232232 let bi = bg(ba())
233233
234234 let bj = bi
235235
236236 let bk = bj._1
237237
238238 let bl = bj._2
239239
240240 let bm = bj._3
241241
242242 let bn = bj._4
243243
244244 let bo = bj._5
245245
246246 let bp = bj._6
247247
248248 let bq = bj._7
249249
250250 func br () = split(aM(aT, at()), j)
251251
252252
253253 let bs = valueOrErrorMessage(addressFromString(br()[B]), "incorrect staking address")
254254
255255 let bt = valueOrErrorMessage(addressFromString(br()[C]), "incorrect staking address")
256256
257257 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)
258258
259259
260260 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)
261261
262262
263263 func bJ (ap) = {
264264 let bK = if ((ap == "WAVES"))
265265 then wavesBalance(this).available
266266 else assetBalance(this, fromBase58String(ap))
267267 let bL = ((bK + ar(ap)) - as(ap))
268268 max([0, bL])
269269 }
270270
271271
272272 func bM (bN,bO) = fraction(bN, d, bO)
273273
274274
275275 func bP (bN,bO,L) = fraction(bN, d, bO, L)
276276
277277
278278 func bQ (bR) = {
279279 let bS = invoke(bR, "getRate", nil, nil)
280280 if ((bS == bS))
281281 then {
282282 let bT = bS
283283 if ($isInstanceOf(bT, "Int"))
284284 then {
285285 let bU = bT
286286 bU
287287 }
288288 else aQ("proxy.getRate() unexpected value")
289289 }
290290 else throw("Strict value is not equal to itself.")
291291 }
292292
293293
294294 func bV (ap,bW,bX,bR) = {
295295 let bY = ar(ap)
296296 if ((bY == bY))
297297 then {
298298 let bZ = as(bX)
299299 if ((bZ == bZ))
300300 then {
301301 let ca = bd(ap)
302302 if ((bW > 0))
303303 then {
304304 let cb = invoke(bR, "deposit", nil, [AttachedPayment(ca, bW)])
305305 if ((cb == cb))
306306 then {
307307 let bT = cb
308308 if ($isInstanceOf(bT, "Int"))
309309 then {
310310 let cc = bT
311311 let cd = (bY + bW)
312312 let ce = (bZ + cc)
313313 [IntegerEntry(ao(ap), cd), IntegerEntry(aq(bX), ce)]
314314 }
315315 else nil
316316 }
317317 else throw("Strict value is not equal to itself.")
318318 }
319319 else nil
320320 }
321321 else throw("Strict value is not equal to itself.")
322322 }
323323 else throw("Strict value is not equal to itself.")
324324 }
325325
326326
327327 func cf (ap,bW,bX,bR,cg,ch) = {
328328 let bY = ar(ap)
329329 if ((bY == bY))
330330 then {
331331 let bZ = as(bX)
332332 if ((bZ == bZ))
333333 then {
334334 let ci = bQ(bR)
335335 if ((ci == ci))
336336 then {
337337 let cj = fraction(cg, bY, bZ)
338338 let ck = bd(bX)
339339 let cl = fraction(cg, bW, cj)
340340 let cm = fraction(cg, bW, ci)
341341 let cn = max([0, (cl - cm)])
342342 if ((cm > 0))
343343 then {
344344 let co = invoke(bR, "withdraw", nil, [AttachedPayment(ck, cm)])
345345 if ((co == co))
346346 then {
347347 let bT = co
348348 if ($isInstanceOf(bT, "Int"))
349349 then {
350350 let cp = bT
351351 let cd = (bY - cp)
352352 let ce = ((bZ - cm) - cn)
353353 [IntegerEntry(ao(ap), cd), IntegerEntry(aq(bX), ce), ScriptTransfer(ch, cn, bd(bX))]
354354 }
355355 else nil
356356 }
357357 else throw("Strict value is not equal to itself.")
358358 }
359359 else nil
360360 }
361361 else throw("Strict value is not equal to itself.")
362362 }
363363 else throw("Strict value is not equal to itself.")
364364 }
365365 else throw("Strict value is not equal to itself.")
366366 }
367367
368368
369369 func cq (ap) = {
370370 let bT = invoke(aT, "getPoolLeaseConfigREADONLY", [toString(this), ap], nil)
371371 if ($isInstanceOf(bT, "(Boolean, Int, Int, String, String, Int, String)"))
372372 then {
373373 let cr = bT
374374 cr
375375 }
376376 else aQ((("[" + ap) + "] getLeaseProxyConfig() error"))
377377 }
378378
379379
380380 func cs (ct,ap,bX,cu,bR,cg,ch) = {
381381 let bY = ar(ap)
382382 if ((bY == bY))
383383 then {
384384 let bZ = as(bX)
385385 if ((bZ == bZ))
386386 then {
387- let cv = {
388- let bT = bd(ap)
389- if ($isInstanceOf(bT, "ByteVector"))
387+ let cv = max([0, (bJ(ap) - cu)])
388+ let cw = fraction(ct, cv, 100)
389+ let cx = (bY - cw)
390+ if ((cx == 0))
391+ then nil
392+ else if ((0 > cx))
390393 then {
391- let cw = bT
392- assetBalance(this, cw)
394+ let cy = -(cx)
395+ bV(ap, cy, bX, bR)
393396 }
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.")
397+ else {
398+ let cz = cx
399+ cf(ap, cz, bX, bR, cg, ch)
400+ }
419401 }
420402 else throw("Strict value is not equal to itself.")
421403 }
422404 else throw("Strict value is not equal to itself.")
423405 }
424406
425407
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))
408+func cA (ap) = {
409+ let cB = cq(ap)
410+ let cC = cB._1
411+ let cD = cB._2
412+ let cu = cB._3
413+ let cE = cB._4
414+ let cF = cB._5
415+ let cg = cB._6
416+ let cG = cB._7
417+ if (cC)
418+ then cs(cD, ap, cF, cu, addressFromStringValue(cE), cg, addressFromStringValue(cG))
437419 else nil
438420 }
439421
440422
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)
423+func cH (ap,cI) = {
424+ let cJ = cq(ap)
425+ let cC = cJ._1
426+ let cD = cJ._2
427+ let cu = cJ._3
428+ let cE = cJ._4
429+ let cF = cJ._5
430+ let cg = cJ._6
431+ let cG = cJ._7
432+ if (cC)
451433 then {
452- let cN = max([0, ((bJ(ap) - cL) - cu)])
453- if ((cN == cN))
434+ let cK = max([0, ((bJ(ap) - cI) - cu)])
435+ if ((cK == cK))
454436 then {
455- let cd = fraction(cG, cN, 100)
437+ let cd = fraction(cD, cK, 100)
456438 if ((cd == cd))
457439 then {
458- let cO = max([0, (ar(ap) - cd)])
459- if ((cO == cO))
460- then cf(ap, cO, cI, addressFromStringValue(cH), cg, addressFromStringValue(cJ))
440+ let cL = max([0, (ar(ap) - cd)])
441+ if ((cL == cL))
442+ then cf(ap, cL, cF, addressFromStringValue(cE), cg, addressFromStringValue(cG))
461443 else throw("Strict value is not equal to itself.")
462444 }
463445 else throw("Strict value is not equal to itself.")
464446 }
465447 else throw("Strict value is not equal to itself.")
466448 }
467449 else nil
468450 }
469451
470452
471-func cP (cQ,cR) = {
472- let cS = cK(aM(this, ae()), cQ)
473- let cT = cK(aM(this, af()), cR)
474- (cS ++ cT)
453+func cM (cN,cO) = {
454+ let cP = cH(aM(this, ae()), cN)
455+ let cQ = cH(aM(this, af()), cO)
456+ (cP ++ cQ)
475457 }
476458
477459
478-func cU (cV,cW,cX,cY) = {
479- let cZ = D(cX, cV)
480- let da = D(cY, cW)
481- bM(da, cZ)
460+func cR (cS,cT,cU,cV) = {
461+ let cW = D(cU, cS)
462+ let cX = D(cV, cT)
463+ bM(cX, cW)
482464 }
483465
484466
485-func db (cX,cY,dc) = {
486- let dd = ba()
487- let de = parseIntValue(dd[t])
488- let df = parseIntValue(dd[u])
489- let dg = cU(de, df, cX, cY)
490- let bO = D(cX, de)
491- let bN = D(cY, df)
492- let dh = D(dc, b)
493- let di = bM(bO, dh)
494- let dj = bM(bN, dh)
495-[dg, di, dj]
467+func cY (cU,cV,cZ) = {
468+ let da = ba()
469+ let db = parseIntValue(da[t])
470+ let dc = parseIntValue(da[u])
471+ let dd = cR(db, dc, cU, cV)
472+ let bO = D(cU, db)
473+ let bN = D(cV, dc)
474+ let de = D(cZ, b)
475+ let df = bM(bO, de)
476+ let dg = bM(bN, de)
477+[dd, df, dg]
496478 }
497479
498480
499-func dk (cX,cY,dc) = {
500- let dl = db(cX, cY, dc)
501-[H(dl[0], b), H(dl[1], b), H(dl[2], b)]
481+func dh (cU,cV,cZ) = {
482+ let di = cY(cU, cV, cZ)
483+[H(di[0], b), H(di[1], b), H(di[2], b)]
502484 }
503485
504486
505-func dm (dn,do,dp,ab) = {
506- let dd = ba()
507- let dq = dd[q]
508- let dr = dd[r]
509- let ds = dd[s]
510- let cV = parseIntValue(dd[t])
511- let cW = parseIntValue(dd[u])
512- let dt = dd[p]
513- let du = valueOrErrorMessage(assetInfo(fromBase58String(dq)), (("Asset " + dq) + " doesn't exist")).quantity
514- if ((dq != do))
487+func dj (dk,dl,dm,ab) = {
488+ let da = ba()
489+ let dn = da[q]
490+ let do = da[r]
491+ let dp = da[s]
492+ let cS = parseIntValue(da[t])
493+ let cT = parseIntValue(da[u])
494+ let dq = da[p]
495+ let dr = valueOrErrorMessage(assetInfo(fromBase58String(dn)), (("Asset " + dn) + " doesn't exist")).quantity
496+ if ((dn != dl))
515497 then throw("Invalid asset passed.")
516498 else {
517- let dv = bJ(dr)
518- let dw = D(dv, cV)
519- let dx = bJ(ds)
520- let dy = D(dx, cW)
521- let dz = bM(dy, dw)
522- let dA = H(dz, b)
523- let dB = D(dp, b)
524- let dC = D(du, b)
525- let dD = fraction(dw, dB, dC)
526- let dE = fraction(dy, dB, dC)
527- let dF = K(dD, cV, FLOOR)
528- let dG = K(dE, cW, FLOOR)
529- let dH = if ((dn == ""))
499+ let ds = bJ(do)
500+ let dt = D(ds, cS)
501+ let du = bJ(dp)
502+ let dv = D(du, cT)
503+ let dw = bM(dv, dt)
504+ let dx = H(dw, b)
505+ let dy = D(dm, b)
506+ let dz = D(dr, b)
507+ let dA = fraction(dt, dy, dz)
508+ let dB = fraction(dv, dy, dz)
509+ let dC = K(dA, cS, FLOOR)
510+ let dD = K(dB, cT, FLOOR)
511+ let dE = if ((dk == ""))
530512 then nil
531- else [ScriptTransfer(ab, dF, if ((dr == "WAVES"))
513+ else [ScriptTransfer(ab, dC, if ((do == "WAVES"))
532514 then unit
533- else fromBase58String(dr)), ScriptTransfer(ab, dG, if ((ds == "WAVES"))
515+ else fromBase58String(do)), ScriptTransfer(ab, dD, if ((dp == "WAVES"))
534516 then unit
535- else fromBase58String(ds)), StringEntry(ad(toString(ab), dn), bF(dF, dG, dp, dA, height, lastBlock.timestamp)), IntegerEntry(W(), dA), IntegerEntry(X(height, lastBlock.timestamp), dA)]
536- $Tuple10(dF, dG, dr, ds, dv, dx, du, dz, dt, dH)
517+ else fromBase58String(dp)), StringEntry(ad(toString(ab), dk), bF(dC, dD, dm, dx, height, lastBlock.timestamp)), IntegerEntry(W(), dx), IntegerEntry(X(height, lastBlock.timestamp), dx)]
518+ $Tuple10(dC, dD, do, dp, ds, du, dr, dw, dq, dE)
537519 }
538520 }
539521
540522
541-func dI (dn,dJ,dK,dL,dM,dN,ab,dO,dP) = {
542- let dd = ba()
543- let dq = fromBase58String(dd[q])
544- let dQ = dd[r]
545- let dR = dd[s]
546- let dS = dd[v]
547- let dT = dd[w]
548- let de = parseIntValue(dd[t])
549- let df = parseIntValue(dd[u])
550- let dt = dd[p]
551- let du = valueOrErrorMessage(assetInfo(dq), (("Asset " + toBase58String(dq)) + " doesn't exist")).quantity
552- let dU = toBase58String(valueOrElse(dL, fromBase58String("WAVES")))
553- let dV = toBase58String(valueOrElse(dN, fromBase58String("WAVES")))
554- if (if ((dQ != dU))
523+func dF (dk,dG,dH,dI,dJ,dK,ab,dL,dM) = {
524+ let da = ba()
525+ let dn = fromBase58String(da[q])
526+ let dN = da[r]
527+ let dO = da[s]
528+ let dP = da[v]
529+ let dQ = da[w]
530+ let db = parseIntValue(da[t])
531+ let dc = parseIntValue(da[u])
532+ let dq = da[p]
533+ let dr = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
534+ let dR = toBase58String(valueOrElse(dI, fromBase58String("WAVES")))
535+ let dS = toBase58String(valueOrElse(dK, fromBase58String("WAVES")))
536+ if (if ((dN != dR))
555537 then true
556- else (dR != dV))
538+ else (dO != dS))
557539 then throw("Invalid amt or price asset passed.")
558540 else {
559- let dv = if (dO)
560- then bJ(dQ)
561- else (bJ(dQ) - dK)
562- let dx = if (dO)
563- then bJ(dR)
564- else (bJ(dR) - dM)
565- let dW = D(dK, de)
566- let dX = D(dM, df)
567- let dY = bM(dX, dW)
568- let dw = D(dv, de)
569- let dy = D(dx, df)
570- let dZ = if ((du == 0))
541+ let ds = if (dL)
542+ then bJ(dN)
543+ else (bJ(dN) - dH)
544+ let du = if (dL)
545+ then bJ(dO)
546+ else (bJ(dO) - dJ)
547+ let dT = D(dH, db)
548+ let dU = D(dJ, dc)
549+ let dV = bM(dU, dT)
550+ let dt = D(ds, db)
551+ let dv = D(du, dc)
552+ let dW = if ((dr == 0))
571553 then {
572- let dz = e
573- let ea = e
574- let dh = pow((dW * dX), 0, toBigInt(5), 1, 0, DOWN)
575- $Tuple5(H(dh, b), H(dW, de), H(dX, df), bM((dy + dX), (dw + dW)), ea)
554+ let dw = e
555+ let dX = e
556+ let de = pow((dT * dU), 0, toBigInt(5), 1, 0, DOWN)
557+ $Tuple5(H(de, b), H(dT, db), H(dU, dc), bM((dv + dU), (dt + dT)), dX)
576558 }
577559 else {
578- let dz = bM(dy, dw)
579- let ea = fraction(R((dz - dY)), d, dz)
580- let eb = D(dJ, b)
581- if (if ((dz != e))
582- then (ea > eb)
560+ let dw = bM(dv, dt)
561+ let dX = fraction(R((dw - dV)), d, dw)
562+ let dY = D(dG, b)
563+ if (if ((dw != e))
564+ then (dX > dY)
583565 else false)
584- then throw(((("Price slippage " + toString(ea)) + " exceeded the passed limit of ") + toString(eb)))
566+ then throw(((("Price slippage " + toString(dX)) + " exceeded the passed limit of ") + toString(dY)))
585567 else {
586- let dC = D(du, b)
587- let ec = fraction(dW, bP(dy, dw, CEILING), d, CEILING)
588- let ed = fraction(dX, d, bP(dy, dw, FLOOR), CEILING)
589- let ee = if ((ec > dX))
590- then $Tuple2(ed, dX)
591- else $Tuple2(dW, ec)
592- let ef = ee._1
593- let eg = ee._2
594- let dh = fraction(dC, eg, dy, FLOOR)
595- $Tuple5(K(dh, b, FLOOR), K(ef, de, CEILING), K(eg, df, CEILING), dz, ea)
568+ let dz = D(dr, b)
569+ let dZ = fraction(dT, bP(dv, dt, CEILING), d, CEILING)
570+ let ea = fraction(dU, d, bP(dv, dt, FLOOR), CEILING)
571+ let eb = if ((dZ > dU))
572+ then $Tuple2(ea, dU)
573+ else $Tuple2(dT, dZ)
574+ let ec = eb._1
575+ let ed = eb._2
576+ let de = fraction(dz, ed, dv, FLOOR)
577+ $Tuple5(K(de, b, FLOOR), K(ec, db, CEILING), K(ed, dc, CEILING), dw, dX)
596578 }
597579 }
598- let eh = dZ._1
599- let ei = dZ._2
600- let ej = dZ._3
601- let dA = H(dZ._4, b)
602- let ek = H(dZ._5, b)
603- if ((0 >= eh))
580+ let ee = dW._1
581+ let ef = dW._2
582+ let eg = dW._3
583+ let dx = H(dW._4, b)
584+ let eh = H(dW._5, b)
585+ if ((0 >= ee))
604586 then throw("Invalid calculations. LP calculated is less than zero.")
605587 else {
606- let el = if (!(dP))
588+ let ei = if (!(dM))
607589 then 0
608- else eh
609- let em = (dK - ei)
610- let en = (dM - ej)
611- let eo = [IntegerEntry(W(), dA), IntegerEntry(X(height, lastBlock.timestamp), dA), StringEntry(aa(ab, dn), bu(ei, ej, el, dA, dJ, ek, height, lastBlock.timestamp, em, en))]
612- $Tuple13(eh, el, dA, dv, dx, du, dq, dt, eo, em, en, dL, dN)
590+ else ee
591+ let ej = (dH - ef)
592+ let ek = (dJ - eg)
593+ let el = [IntegerEntry(W(), dx), IntegerEntry(X(height, lastBlock.timestamp), dx), StringEntry(aa(ab, dk), bu(ef, eg, ei, dx, dG, eh, height, lastBlock.timestamp, ej, ek))]
594+ $Tuple13(ee, ei, dx, ds, du, dr, dn, dq, el, ej, ek, dI, dK)
613595 }
614596 }
615597 }
616598
617599
618-func ep (eq,er,du) = {
619- let es = G(eq, toBigInt(bp))
620- let et = G(er, toBigInt(bq))
621- let eu = fraction(pow((es * et), 0, toBigInt(5), 1, 18, DOWN), g, du)
622- if ((du == f))
600+func em (en,eo,dr) = {
601+ let ep = G(en, toBigInt(bp))
602+ let eq = G(eo, toBigInt(bq))
603+ let er = fraction(pow((ep * eq), 0, toBigInt(5), 1, 18, DOWN), g, dr)
604+ if ((dr == f))
623605 then f
624- else eu
606+ else er
625607 }
626608
627609
628-func ev (ew,ex,ey) = {
629- let ez = (toBigInt(bJ(bf(bn))) - ew)
630- let eA = (toBigInt(bJ(bf(bo))) - ex)
631- let eB = (toBigInt(value(assetInfo(bm)).quantity) - ey)
632- let eC = ep(ez, eA, eB)
633- eC
610+func es (et,eu,ev) = {
611+ let ew = (toBigInt(bJ(bf(bn))) - et)
612+ let ex = (toBigInt(bJ(bf(bo))) - eu)
613+ let ey = (toBigInt(value(assetInfo(bm)).quantity) - ev)
614+ let ez = em(ew, ex, ey)
615+ ez
634616 }
635617
636618
637-func eD (eE,eF,ey) = {
638- let ez = (bJ(bf(bn)) + eE)
639- let eA = (bJ(bf(bo)) + eF)
640- let eB = (value(assetInfo(bm)).quantity + ey)
641- let eu = ep(toBigInt(ez), toBigInt(eA), toBigInt(eB))
642- let eG = [IntegerEntry(ak, height), StringEntry(aj, toString(eu))]
643- $Tuple2(eG, eu)
619+func eA (eB,eC,ev) = {
620+ let ew = (bJ(bf(bn)) + eB)
621+ let ex = (bJ(bf(bo)) + eC)
622+ let ey = (value(assetInfo(bm)).quantity + ev)
623+ let er = em(toBigInt(ew), toBigInt(ex), toBigInt(ey))
624+ let eD = [IntegerEntry(ak, height), StringEntry(aj, toString(er))]
625+ $Tuple2(eD, er)
644626 }
645627
646628
647-func eH (eI,eu) = if ((eu >= eI))
629+func eE (eF,er) = if ((er >= eF))
648630 then true
649- else aQ(makeString(["updated KLp lower than current KLp", toString(eI), toString(eu)], " "))
631+ else aQ(makeString(["updated KLp lower than current KLp", toString(eF), toString(er)], " "))
650632
651633
652-func eJ (eK) = {
653- let ez = bJ(bf(bn))
654- let eA = bJ(bf(bo))
655- let eL = eK.amount
656- let eM = fraction(eK.amount, eK.price, b, FLOOR)
657- let eN = if ((eK.orderType == Buy))
658- then $Tuple2(eL, -(eM))
659- else $Tuple2(-(eL), eM)
660- let eE = eN._1
661- let eF = eN._2
634+func eG (eH) = {
635+ let ew = bJ(bf(bn))
636+ let ex = bJ(bf(bo))
637+ let eI = eH.amount
638+ let eJ = fraction(eH.amount, eH.price, b, FLOOR)
639+ let eK = if ((eH.orderType == Buy))
640+ then $Tuple2(eI, -(eJ))
641+ else $Tuple2(-(eI), eJ)
642+ let eB = eK._1
643+ let eC = eK._2
662644 if (if (if (aY())
663645 then true
664646 else (bl == m))
665647 then true
666648 else (bl == n))
667649 then throw("Exchange operations disabled")
668- else if (if ((eK.assetPair.amountAsset != bn))
650+ else if (if ((eH.assetPair.amountAsset != bn))
669651 then true
670- else (eK.assetPair.priceAsset != bo))
652+ else (eH.assetPair.priceAsset != bo))
671653 then throw("Wrong order assets.")
672654 else {
673- let eO = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
674- let eP = eD(eE, eF, 0)
675- let eQ = eP._1
676- let eR = eP._2
677- let eS = (eR >= eO)
678- let eT = makeString(["kLp=", toString(eO), " kLpNew=", toString(eR), " amountAssetBalance=", toString(ez), " priceAssetBalance=", toString(eA), " amountAssetBalanceDelta=", toString(eE), " priceAssetBalanceDelta=", toString(eF), " height=", toString(height)], "")
679- $Tuple2(eS, eT)
655+ let eL = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
656+ let eM = eA(eB, eC, 0)
657+ let eN = eM._1
658+ let eO = eM._2
659+ let eP = (eO >= eL)
660+ let eQ = makeString(["kLp=", toString(eL), " kLpNew=", toString(eO), " amountAssetBalance=", toString(ew), " priceAssetBalance=", toString(ex), " amountAssetBalanceDelta=", toString(eB), " priceAssetBalanceDelta=", toString(eC), " height=", toString(height)], "")
661+ $Tuple2(eP, eQ)
680662 }
681663 }
682664
683665
684-func eU (eV) = if ((size(eV.payments) != 1))
666+func eR (eS) = if ((size(eS.payments) != 1))
685667 then throw("exactly 1 payment is expected")
686668 else {
687- let eW = value(eV.payments[0])
688- let do = value(eW.assetId)
689- let eX = eW.amount
690- let dZ = dm(toBase58String(eV.transactionId), toBase58String(do), eX, eV.caller)
691- let dF = dZ._1
692- let dG = dZ._2
693- let dt = parseIntValue(dZ._9)
694- let dH = dZ._10
669+ let eT = value(eS.payments[0])
670+ let dl = value(eT.assetId)
671+ let eU = eT.amount
672+ let dW = dj(toBase58String(eS.transactionId), toBase58String(dl), eU, eS.caller)
673+ let dC = dW._1
674+ let dD = dW._2
675+ let dq = parseIntValue(dW._9)
676+ let dE = dW._10
695677 if (if (aY())
696678 then true
697- else (dt == n))
698- then throw(("Get operation is blocked by admin. Status = " + toString(dt)))
699- else $Tuple5(dF, dG, eX, do, dH)
679+ else (dq == n))
680+ then throw(("Get operation is blocked by admin. Status = " + toString(dq)))
681+ else $Tuple5(dC, dD, eU, dl, dE)
700682 }
701683
702684
703-func eY (eV,dJ,dP) = if ((size(eV.payments) != 2))
685+func eV (eS,dG,dM) = if ((size(eS.payments) != 2))
704686 then throw("exactly 2 payments are expected")
705687 else {
706- let eZ = value(eV.payments[0])
707- let fa = value(eV.payments[1])
708- let fb = dI(toBase58String(eV.transactionId), dJ, eZ.amount, eZ.assetId, fa.amount, fa.assetId, toString(eV.caller), false, dP)
709- let dt = parseIntValue(fb._8)
688+ let eW = value(eS.payments[0])
689+ let eX = value(eS.payments[1])
690+ let eY = dF(toBase58String(eS.transactionId), dG, eW.amount, eW.assetId, eX.amount, eX.assetId, toString(eS.caller), false, dM)
691+ let dq = parseIntValue(eY._8)
710692 if (if (if (aY())
711693 then true
712- else (dt == l))
694+ else (dq == l))
713695 then true
714- else (dt == n))
715- then throw(("Put operation is blocked by admin. Status = " + toString(dt)))
716- else fb
696+ else (dq == n))
697+ then throw(("Put operation is blocked by admin. Status = " + toString(dq)))
698+ else eY
717699 }
718700
719701
720-func fc (bW) = {
721- let fd = invoke(aT, "emit", [bW], nil)
722- if ((fd == fd))
702+func eZ (bW) = {
703+ let fa = invoke(aT, "emit", [bW], nil)
704+ if ((fa == fa))
723705 then {
724- let fe = {
725- let bT = fd
706+ let fb = {
707+ let bT = fa
726708 if ($isInstanceOf(bT, "Address"))
727709 then {
728- let ff = bT
729- invoke(ff, "emit", [bW], nil)
710+ let fc = bT
711+ invoke(fc, "emit", [bW], nil)
730712 }
731713 else unit
732714 }
733- if ((fe == fe))
715+ if ((fb == fb))
734716 then bW
735717 else throw("Strict value is not equal to itself.")
736718 }
737719 else throw("Strict value is not equal to itself.")
738720 }
739721
740722
741-func fg (bW,ai) = {
742- let fh = if ((ai == 0))
723+func fd (bW,ai) = {
724+ let fe = if ((ai == 0))
743725 then 0
744726 else fraction(bW, ai, b)
745- $Tuple2((bW - fh), fh)
727+ $Tuple2((bW - fe), fe)
746728 }
747729
748730
749-func fi (fj,fk,ab,ac) = {
750- let fl = (ac == unit)
751- let fm = bJ(bf(bn))
752- let fn = bJ(bf(bo))
753- let fo = if ((fk == bn))
731+func ff (fg,fh,ab,ac) = {
732+ let fi = (ac == unit)
733+ let fj = bJ(bf(bn))
734+ let fk = bJ(bf(bo))
735+ let fl = if ((fh == bn))
754736 then true
755- else if ((fk == bo))
737+ else if ((fh == bo))
756738 then false
757739 else aQ("invalid asset")
740+ let fm = if (fi)
741+ then $Tuple2(fj, fk)
742+ else if (fl)
743+ then $Tuple2((fj - fg), fk)
744+ else $Tuple2(fj, (fk - fg))
745+ let fn = fm._1
746+ let fo = fm._2
758747 let fp = if (fl)
759- then $Tuple2(fm, fn)
760- else if (fo)
761- then $Tuple2((fm - fj), fn)
762- else $Tuple2(fm, (fn - fj))
748+ then $Tuple2(fg, 0)
749+ else $Tuple2(0, fg)
763750 let fq = fp._1
764751 let fr = fp._2
765- let fs = if (fo)
766- then $Tuple2(fj, 0)
767- else $Tuple2(0, fj)
752+ let eI = fd(fq, aV)._1
753+ let eJ = fd(fr, aV)._1
754+ let fs = fd(fg, aV)
768755 let ft = fs._1
769- let fu = fs._2
770- let eL = fg(ft, aV)._1
771- let eM = fg(fu, aV)._1
772- let fv = fg(fj, aV)
773- let fw = fv._1
774- let fh = fv._2
775- let fx = (fq + eL)
776- let fy = (fr + eM)
777- let fz = bM(D(fy, bq), D(fx, bp))
778- let fA = H(fz, b)
779- let fB = if (fo)
780- then fq
781- else fr
782- let fC = toBigInt(fB)
783- let fD = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
784- let fE = if ((fD > f))
756+ let fe = fs._2
757+ let fu = (fn + eI)
758+ let fv = (fo + eJ)
759+ let fw = bM(D(fv, bq), D(fu, bp))
760+ let fx = H(fw, b)
761+ let fy = if (fl)
762+ then fn
763+ else fo
764+ let fz = toBigInt(fy)
765+ let fA = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
766+ let fB = if ((fA > f))
785767 then true
786768 else aQ("initial deposit requires all coins")
787- if ((fE == fE))
769+ if ((fB == fB))
788770 then {
789- let fF = toBigInt(fw)
790- let fG = max([0, toInt(((fD * (sqrtBigInt((d + ((fF * d) / fC)), 18, 18, DOWN) - d)) / d))])
791- let eo = if (fl)
771+ let fC = toBigInt(ft)
772+ let fD = max([0, toInt(((fA * (sqrtBigInt((d + ((fC * d) / fz)), 18, 18, DOWN) - d)) / d))])
773+ let el = if (fi)
792774 then nil
793- else [IntegerEntry(W(), fA), IntegerEntry(X(height, lastBlock.timestamp), fA), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bu(ft, fu, fG, fA, 0, 0, height, lastBlock.timestamp, 0, 0))]
794- let fH = bM(D(fr, bq), D(fq, bp))
795- let fI = H(fH, b)
796- let fJ = {
797- let fK = if (fo)
798- then $Tuple2(ft, fq)
799- else $Tuple2(fu, fr)
800- let bW = fK._1
801- let fL = fK._2
802- let fM = toInt(fraction(fD, toBigInt((bW / 2)), toBigInt(fL)))
803- fraction((fG - fM), b, fM)
775+ 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))]
776+ let fE = bM(D(fo, bq), D(fn, bp))
777+ let fF = H(fE, b)
778+ let fG = {
779+ let fH = if (fl)
780+ then $Tuple2(fq, fn)
781+ else $Tuple2(fr, fo)
782+ let bW = fH._1
783+ let fI = fH._2
784+ let fJ = toInt(fraction(fA, toBigInt((bW / 2)), toBigInt(fI)))
785+ fraction((fD - fJ), b, fJ)
804786 }
805- $Tuple5(fG, eo, fh, fJ, fo)
787+ $Tuple5(fD, el, fe, fG, fl)
806788 }
807789 else throw("Strict value is not equal to itself.")
808790 }
809791
810792
811-func fN (fO,fw,fk,ab,ac) = {
812- let fl = (ac == unit)
813- let dd = ba()
814- let de = parseIntValue(dd[t])
815- let df = parseIntValue(dd[u])
816- let fP = [if ((fk == bm))
793+func fK (fL,ft,fh,ab,ac) = {
794+ let fi = (ac == unit)
795+ let da = ba()
796+ let db = parseIntValue(da[t])
797+ let dc = parseIntValue(da[u])
798+ let fM = [if ((fh == bm))
817799 then true
818800 else aQ("invalid lp asset")]
819- if ((fP == fP))
801+ if ((fM == fM))
820802 then {
821- let fQ = if ((fO == bn))
803+ let fN = if ((fL == bn))
822804 then true
823- else if ((fO == bo))
805+ else if ((fL == bo))
824806 then false
825807 else aQ("invalid asset")
826- let fR = if (fQ)
808+ let fO = if (fN)
827809 then toBigInt(bJ(bf(bn)))
828810 else toBigInt(bJ(bf(bo)))
829- let fS = if (fQ)
830- then de
831- else df
832- let fT = bJ(bf(bn))
833- let fU = bJ(bf(bo))
834- let fV = if (fQ)
835- then fT
836- else fU
837- let fW = toBigInt(fV)
838- let fD = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
839- let fX = toBigInt(fw)
840- let fY = max([0, toInt(((fR * (d - pow((d - ((fX * d) / fD)), 18, h, 0, 18, DOWN))) / d))])
841- let fZ = fg(fY, aX)
842- let ga = fZ._1
843- let fh = fZ._2
844- let gb = if (fQ)
845- then $Tuple4(ga, 0, (fT - fY), fU)
846- else $Tuple4(0, ga, fT, (fU - fY))
847- let gc = gb._1
848- let gd = gb._2
849- let ge = gb._3
850- let gf = gb._4
851- let fz = bM(D(gf, bq), D(ge, bp))
852- let fA = H(fz, b)
853- let eo = if (fl)
811+ let fP = if (fN)
812+ then db
813+ else dc
814+ let fQ = bJ(bf(bn))
815+ let fR = bJ(bf(bo))
816+ let fS = if (fN)
817+ then fQ
818+ else fR
819+ let fT = toBigInt(fS)
820+ let fA = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
821+ let fU = toBigInt(ft)
822+ let fV = max([0, toInt(((fO * (d - pow((d - ((fU * d) / fA)), 18, h, 0, 18, DOWN))) / d))])
823+ let fW = fd(fV, aX)
824+ let fX = fW._1
825+ let fe = fW._2
826+ let fY = if (fN)
827+ then $Tuple4(fX, 0, (fQ - fV), fR)
828+ else $Tuple4(0, fX, fQ, (fR - fV))
829+ let fZ = fY._1
830+ let ga = fY._2
831+ let gb = fY._3
832+ let gc = fY._4
833+ let fw = bM(D(gc, bq), D(gb, bp))
834+ let fx = H(fw, b)
835+ let el = if (fi)
854836 then nil
855- else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bF(gc, gd, fw, fA, height, lastBlock.timestamp)), IntegerEntry(W(), fA), IntegerEntry(X(height, lastBlock.timestamp), fA)]
856- let fH = bM(D(fU, bq), D(fT, bp))
857- let fI = H(fH, b)
858- let fJ = {
859- let gg = (toInt(fraction(fR, fX, fD)) * 2)
860- fraction((ga - gg), b, gg)
837+ 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)]
838+ let fE = bM(D(fR, bq), D(fQ, bp))
839+ let fF = H(fE, b)
840+ let fG = {
841+ let gd = (toInt(fraction(fO, fU, fA)) * 2)
842+ fraction((fX - gd), b, gd)
861843 }
862- $Tuple5(ga, eo, fh, fJ, fQ)
844+ $Tuple5(fX, el, fe, fG, fN)
863845 }
864846 else throw("Strict value is not equal to itself.")
865847 }
866848
867849
868-func gh () = {
850+func ge () = {
869851 let bT = getString(U())
870852 if ($isInstanceOf(bT, "String"))
871853 then {
872- let gi = bT
873- fromBase58String(gi)
854+ let gf = bT
855+ fromBase58String(gf)
874856 }
875857 else if ($isInstanceOf(bT, "Unit"))
876858 then unit
877859 else throw("Match error")
878860 }
879861
880862
881-func gj () = {
863+func gg () = {
882864 let bT = getString(V())
883865 if ($isInstanceOf(bT, "String"))
884866 then {
885- let gi = bT
886- fromBase58String(gi)
867+ let gf = bT
868+ fromBase58String(gf)
887869 }
888870 else if ($isInstanceOf(bT, "Unit"))
889871 then unit
890872 else throw("Match error")
891873 }
892874
893875
894-func gk (eV) = {
895- let bT = gh()
876+func gh (eS) = {
877+ let bT = ge()
896878 if ($isInstanceOf(bT, "ByteVector"))
897879 then {
898- let gl = bT
899- (eV.callerPublicKey == gl)
880+ let gi = bT
881+ (eS.callerPublicKey == gi)
900882 }
901883 else if ($isInstanceOf(bT, "Unit"))
902- then (eV.caller == this)
884+ then (eS.caller == this)
903885 else throw("Match error")
904886 }
905887
906888
907-func gm (eV) = {
908- let gn = throw("Permission denied")
909- let bT = gh()
889+func gj (eS) = {
890+ let gk = throw("Permission denied")
891+ let bT = ge()
910892 if ($isInstanceOf(bT, "ByteVector"))
911893 then {
912- let gl = bT
913- if ((eV.callerPublicKey == gl))
894+ let gi = bT
895+ if ((eS.callerPublicKey == gi))
914896 then true
915- else gn
897+ else gk
916898 }
917899 else if ($isInstanceOf(bT, "Unit"))
918- then if ((eV.caller == this))
900+ then if ((eS.caller == this))
919901 then true
920- else gn
902+ else gk
921903 else throw("Match error")
922904 }
923905
924906
925-@Callable(eV)
926-func rebalance () = (cD(aM(this, ae())) ++ cD(aM(this, af())))
907+@Callable(eS)
908+func rebalance () = (cA(aM(this, ae())) ++ cA(aM(this, af())))
927909
928910
929911
930-@Callable(eV)
931-func calculateAmountOutForSwapREADONLY (go,gp,gq) = {
932- let gr = if ((gp == false))
912+@Callable(eS)
913+func calculateAmountOutForSwapREADONLY (gl,gm,gn) = {
914+ let go = if ((gm == false))
933915 then {
934- let gs = aM(this, af())
935- let gt = aM(this, ae())
936- $Tuple2(gs, gt)
916+ let gp = aM(this, af())
917+ let gq = aM(this, ae())
918+ $Tuple2(gp, gq)
937919 }
938920 else {
939- let gs = aM(this, ae())
940- let gt = aM(this, af())
941- $Tuple2(gs, gt)
921+ let gp = aM(this, ae())
922+ let gq = aM(this, af())
923+ $Tuple2(gp, gq)
942924 }
943- let gs = gr._1
944- let gt = gr._2
945- let gu = bJ(gt)
946- let gv = bJ(gs)
947- let gw = fraction(gv, go, (gu + go))
948- let gx = (toBigInt(gu) * toBigInt(gv))
949- let gy = (((toBigInt(bJ(gt)) + toBigInt(go)) + toBigInt(gq)) * (toBigInt(bJ(gs)) - toBigInt(gw)))
950- let gz = if ((gy >= gx))
925+ let gp = go._1
926+ let gq = go._2
927+ let gr = bJ(gq)
928+ let gs = bJ(gp)
929+ let gt = fraction(gs, gl, (gr + gl))
930+ let gu = (toBigInt(gr) * toBigInt(gs))
931+ let gv = (((toBigInt(bJ(gq)) + toBigInt(gl)) + toBigInt(gn)) * (toBigInt(bJ(gp)) - toBigInt(gt)))
932+ let gw = if ((gv >= gu))
951933 then true
952934 else throw("new K is fewer error")
953- if ((gz == gz))
954- then $Tuple2(nil, gw)
935+ if ((gw == gw))
936+ then $Tuple2(nil, gt)
955937 else throw("Strict value is not equal to itself.")
956938 }
957939
958940
959941
960-@Callable(eV)
961-func calculateAmountOutForSwapAndSendTokens (go,gp,gA,gB,gq) = {
962- let gC = {
942+@Callable(eS)
943+func calculateAmountOutForSwapAndSendTokens (gl,gm,gx,gy,gn) = {
944+ let gz = {
963945 let aW = invoke(aT, "getSwapContractREADONLY", nil, nil)
964946 if ($isInstanceOf(aW, "String"))
965947 then aW
966948 else throw(($getType(aW) + " couldn't be cast to String"))
967949 }
968- let fP = [if ((value(eV.payments[0]).amount >= go))
950+ let fM = [if ((value(eS.payments[0]).amount >= gl))
969951 then true
970- else aQ("Wrong amount"), if ((eV.caller == addressFromStringValue(gC)))
952+ else aQ("Wrong amount"), if ((eS.caller == addressFromStringValue(gz)))
971953 then true
972954 else aQ("Permission denied")]
973- if ((fP == fP))
955+ if ((fM == fM))
974956 then {
975- let eW = value(eV.payments[0])
976- let gt = bf(eW.assetId)
977- let gs = if ((gp == false))
957+ let eT = value(eS.payments[0])
958+ let gq = bf(eT.assetId)
959+ let gp = if ((gm == false))
978960 then aM(this, af())
979961 else aM(this, ae())
980- let gu = (bJ(gt) - value(eV.payments[0]).amount)
981- let gv = bJ(gs)
982- let gw = fraction(gv, go, (gu + go))
983- let gx = (toBigInt(gu) * toBigInt(gv))
984- let gy = ((toBigInt(bJ(gt)) + toBigInt(gq)) * (toBigInt(bJ(gs)) - toBigInt(gw)))
985- let gz = if ((gy >= gx))
962+ let gr = (bJ(gq) - value(eS.payments[0]).amount)
963+ let gs = bJ(gp)
964+ let gt = fraction(gs, gl, (gr + gl))
965+ let gu = (toBigInt(gr) * toBigInt(gs))
966+ let gv = ((toBigInt(bJ(gq)) + toBigInt(gn)) * (toBigInt(bJ(gp)) - toBigInt(gt)))
967+ let gw = if ((gv >= gu))
986968 then true
987969 else throw("new K is fewer error")
988- if ((gz == gz))
970+ if ((gw == gw))
989971 then {
990- let gD = if ((gw >= gA))
972+ let gA = if ((gt >= gx))
991973 then true
992974 else throw("Exchange result is fewer coins than expected")
993- if ((gD == gD))
975+ if ((gA == gA))
994976 then {
995- let gE = cD(gt)
996- if ((gE == gE))
977+ let gB = cA(gq)
978+ if ((gB == gB))
997979 then {
998- let gF = cK(gs, gw)
999- if ((gF == gF))
1000- then $Tuple2(((gF ++ gE) ++ [ScriptTransfer(addressFromStringValue(gB), gw, bd(gs))]), gw)
980+ let gC = cH(gp, gt)
981+ if ((gC == gC))
982+ then $Tuple2(((gC ++ gB) ++ [ScriptTransfer(addressFromStringValue(gy), gt, bd(gp))]), gt)
1001983 else throw("Strict value is not equal to itself.")
1002984 }
1003985 else throw("Strict value is not equal to itself.")
1004986 }
1005987 else throw("Strict value is not equal to itself.")
1006988 }
1007989 else throw("Strict value is not equal to itself.")
1008990 }
1009991 else throw("Strict value is not equal to itself.")
1010992 }
1011993
1012994
1013995
1014-@Callable(eV)
1015-func setManager (gG) = {
1016- let gH = gm(eV)
1017- if ((gH == gH))
996+@Callable(eS)
997+func setManager (gD) = {
998+ let gE = gj(eS)
999+ if ((gE == gE))
10181000 then {
1019- let gI = fromBase58String(gG)
1020- if ((gI == gI))
1021- then [StringEntry(V(), gG)]
1001+ let gF = fromBase58String(gD)
1002+ if ((gF == gF))
1003+ then [StringEntry(V(), gD)]
10221004 else throw("Strict value is not equal to itself.")
10231005 }
10241006 else throw("Strict value is not equal to itself.")
10251007 }
10261008
10271009
10281010
1029-@Callable(eV)
1011+@Callable(eS)
10301012 func confirmManager () = {
1031- let gJ = gj()
1032- let gK = if (isDefined(gJ))
1013+ let gG = gg()
1014+ let gH = if (isDefined(gG))
10331015 then true
10341016 else throw("No pending manager")
1035- if ((gK == gK))
1017+ if ((gH == gH))
10361018 then {
1037- let gL = if ((eV.callerPublicKey == value(gJ)))
1019+ let gI = if ((eS.callerPublicKey == value(gG)))
10381020 then true
10391021 else throw("You are not pending manager")
1040- if ((gL == gL))
1041- then [StringEntry(U(), toBase58String(value(gJ))), DeleteEntry(V())]
1022+ if ((gI == gI))
1023+ then [StringEntry(U(), toBase58String(value(gG))), DeleteEntry(V())]
10421024 else throw("Strict value is not equal to itself.")
10431025 }
10441026 else throw("Strict value is not equal to itself.")
10451027 }
10461028
10471029
10481030
1049-@Callable(eV)
1050-func put (dJ,gM) = if ((0 > dJ))
1031+@Callable(eS)
1032+func put (dG,gJ) = if ((0 > dG))
10511033 then throw("Invalid slippageTolerance passed")
10521034 else {
1053- let fb = eY(eV, dJ, true)
1054- let el = fb._2
1055- let dq = fb._7
1056- let dH = fb._9
1057- let em = fb._10
1058- let en = fb._11
1059- let gN = fb._12
1060- let gO = fb._13
1061- let eZ = toBigInt(value(eV.payments[0]).amount)
1062- let fa = toBigInt(value(eV.payments[1]).amount)
1063- let eC = ev(eZ, fa, toBigInt(0))
1064- if ((eC == eC))
1035+ let eY = eV(eS, dG, true)
1036+ let ei = eY._2
1037+ let dn = eY._7
1038+ let dE = eY._9
1039+ let ej = eY._10
1040+ let ek = eY._11
1041+ let gK = eY._12
1042+ let gL = eY._13
1043+ let eW = toBigInt(value(eS.payments[0]).amount)
1044+ let eX = toBigInt(value(eS.payments[1]).amount)
1045+ let ez = es(eW, eX, toBigInt(0))
1046+ if ((ez == ez))
10651047 then {
1066- let fd = invoke(aT, "emit", [el], nil)
1067- if ((fd == fd))
1048+ let fa = invoke(aT, "emit", [ei], nil)
1049+ if ((fa == fa))
10681050 then {
1069- let fe = {
1070- let bT = fd
1051+ let fb = {
1052+ let bT = fa
10711053 if ($isInstanceOf(bT, "Address"))
10721054 then {
1073- let ff = bT
1074- invoke(ff, "emit", [el], nil)
1055+ let fc = bT
1056+ invoke(fc, "emit", [ei], nil)
10751057 }
10761058 else unit
10771059 }
1078- if ((fe == fe))
1060+ if ((fb == fb))
10791061 then {
1080- let gP = if ((em > 0))
1081- then invoke(bt, "put", nil, [AttachedPayment(gN, em)])
1062+ let gM = if ((ej > 0))
1063+ then invoke(bt, "put", nil, [AttachedPayment(gK, ej)])
10821064 else nil
1083- if ((gP == gP))
1065+ if ((gM == gM))
10841066 then {
1085- let gQ = if ((en > 0))
1086- then invoke(bt, "put", nil, [AttachedPayment(gO, en)])
1067+ let gN = if ((ek > 0))
1068+ then invoke(bt, "put", nil, [AttachedPayment(gL, ek)])
10871069 else nil
1088- if ((gQ == gQ))
1070+ if ((gN == gN))
10891071 then {
1090- let gR = if (gM)
1072+ let gO = if (gJ)
10911073 then {
1092- let gS = invoke(bs, "stake", nil, [AttachedPayment(dq, el)])
1093- if ((gS == gS))
1074+ let gP = invoke(bs, "stake", nil, [AttachedPayment(dn, ei)])
1075+ if ((gP == gP))
10941076 then nil
10951077 else throw("Strict value is not equal to itself.")
10961078 }
1097- else [ScriptTransfer(eV.caller, el, dq)]
1098- let gT = eD(0, 0, 0)
1099- if ((gT == gT))
1079+ else [ScriptTransfer(eS.caller, ei, dn)]
1080+ let gQ = eA(0, 0, 0)
1081+ if ((gQ == gQ))
11001082 then {
1101- let eu = gT._2
1102- let gU = gT._1
1103- let gV = eH(eC, eu)
1104- if ((gV == gV))
1083+ let er = gQ._2
1084+ let gR = gQ._1
1085+ let gS = eE(ez, er)
1086+ if ((gS == gS))
11051087 then {
1106- let gW = invoke(this, "rebalance", nil, nil)
1107- if ((gW == gW))
1108- then ((dH ++ gR) ++ gU)
1088+ let gT = invoke(this, "rebalance", nil, nil)
1089+ if ((gT == gT))
1090+ then ((dE ++ gO) ++ gR)
11091091 else throw("Strict value is not equal to itself.")
11101092 }
11111093 else throw("Strict value is not equal to itself.")
11121094 }
11131095 else throw("Strict value is not equal to itself.")
11141096 }
11151097 else throw("Strict value is not equal to itself.")
11161098 }
11171099 else throw("Strict value is not equal to itself.")
11181100 }
11191101 else throw("Strict value is not equal to itself.")
11201102 }
11211103 else throw("Strict value is not equal to itself.")
11221104 }
11231105 else throw("Strict value is not equal to itself.")
11241106 }
11251107
11261108
11271109
1128-@Callable(eV)
1129-func putForFree (gX) = if ((0 > gX))
1110+@Callable(eS)
1111+func putForFree (gU) = if ((0 > gU))
11301112 then throw("Invalid value passed")
11311113 else {
1132- let fb = eY(eV, gX, false)
1133- let dH = fb._9
1134- let eZ = toBigInt(value(eV.payments[0]).amount)
1135- let fa = toBigInt(value(eV.payments[1]).amount)
1136- let eC = ev(eZ, fa, toBigInt(0))
1137- if ((eC == eC))
1114+ let eY = eV(eS, gU, false)
1115+ let dE = eY._9
1116+ let eW = toBigInt(value(eS.payments[0]).amount)
1117+ let eX = toBigInt(value(eS.payments[1]).amount)
1118+ let ez = es(eW, eX, toBigInt(0))
1119+ if ((ez == ez))
11381120 then {
1139- let gY = eD(0, 0, 0)
1140- let gU = gY._1
1141- let eu = gY._2
1142- let gV = eH(eC, eu)
1143- if ((gV == gV))
1144- then (dH ++ gU)
1121+ let gV = eA(0, 0, 0)
1122+ let gR = gV._1
1123+ let er = gV._2
1124+ let gS = eE(ez, er)
1125+ if ((gS == gS))
1126+ then (dE ++ gR)
11451127 else throw("Strict value is not equal to itself.")
11461128 }
11471129 else throw("Strict value is not equal to itself.")
11481130 }
11491131
11501132
11511133
1152-@Callable(eV)
1153-func putOneTkn (gZ,ha) = {
1154- let hb = {
1134+@Callable(eS)
1135+func putOneTkn (gW,gX) = {
1136+ let gY = {
11551137 let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11561138 if ($isInstanceOf(aW, "Boolean"))
11571139 then aW
11581140 else throw(($getType(aW) + " couldn't be cast to Boolean"))
11591141 }
1160- let hc = if (if (if (aY())
1142+ let gZ = if (if (if (aY())
11611143 then true
11621144 else (bl == l))
11631145 then true
11641146 else (bl == n))
11651147 then true
1166- else hb
1167- let fP = [if (if (!(hc))
1148+ else gY
1149+ let fM = [if (if (!(gZ))
11681150 then true
1169- else gk(eV))
1151+ else gh(eS))
11701152 then true
1171- else aQ("put operation is blocked by admin"), if ((size(eV.payments) == 1))
1153+ else aQ("put operation is blocked by admin"), if ((size(eS.payments) == 1))
11721154 then true
11731155 else aQ("exactly 1 payment are expected")]
1174- if ((fP == fP))
1156+ if ((fM == fM))
11751157 then {
1176- let hd = eV.payments[0]
1177- let fk = hd.assetId
1178- let fj = hd.amount
1179- let eC = if ((fk == bn))
1180- then ev(toBigInt(fj), toBigInt(0), toBigInt(0))
1181- else if ((fk == bo))
1182- then ev(toBigInt(0), toBigInt(fj), toBigInt(0))
1158+ let ha = eS.payments[0]
1159+ let fh = ha.assetId
1160+ let fg = ha.amount
1161+ let ez = if ((fh == bn))
1162+ then es(toBigInt(fg), toBigInt(0), toBigInt(0))
1163+ else if ((fh == bo))
1164+ then es(toBigInt(0), toBigInt(fg), toBigInt(0))
11831165 else aQ("payment asset is not supported")
1184- if ((eC == eC))
1166+ if ((ez == ez))
11851167 then {
1186- let ab = eV.caller
1187- let ac = eV.transactionId
1188- let he = fi(fj, fk, ab, ac)
1189- if ((he == he))
1168+ let ab = eS.caller
1169+ let ac = eS.transactionId
1170+ let hb = ff(fg, fh, ab, ac)
1171+ if ((hb == hb))
11901172 then {
1191- let fo = he._5
1192- let hf = he._4
1193- let fh = he._3
1194- let eo = he._2
1195- let hg = he._1
1196- let hh = if (if ((gZ > 0))
1197- then (gZ > hg)
1173+ let fl = hb._5
1174+ let hc = hb._4
1175+ let fe = hb._3
1176+ let el = hb._2
1177+ let hd = hb._1
1178+ let he = if (if ((gW > 0))
1179+ then (gW > hd)
11981180 else false)
1199- then aQ(makeString(["amount to receive is less than ", toString(gZ)], ""))
1200- else hg
1201- let fd = fc(hh)
1202- if ((fd == fd))
1181+ then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1182+ else hd
1183+ let fa = eZ(he)
1184+ if ((fa == fa))
12031185 then {
1204- let gR = if (ha)
1186+ let gO = if (gX)
12051187 then {
1206- let hi = invoke(bs, "stake", nil, [AttachedPayment(bm, hh)])
1207- if ((hi == hi))
1188+ let hf = invoke(bs, "stake", nil, [AttachedPayment(bm, he)])
1189+ if ((hf == hf))
12081190 then nil
12091191 else throw("Strict value is not equal to itself.")
12101192 }
1211- else [ScriptTransfer(eV.caller, hh, bm)]
1212- let hj = if ((fh > 0))
1213- then [ScriptTransfer(aU, fh, fk)]
1193+ else [ScriptTransfer(eS.caller, he, bm)]
1194+ let hg = if ((fe > 0))
1195+ then [ScriptTransfer(aU, fe, fh)]
12141196 else nil
1215- let hk = if ((this == aU))
1197+ let hh = if ((this == aU))
12161198 then $Tuple2(0, 0)
1217- else if (fo)
1218- then $Tuple2(-(fh), 0)
1219- else $Tuple2(0, -(fh))
1220- let eE = hk._1
1221- let eF = hk._2
1222- let hl = eD(eE, eF, 0)
1223- let gU = hl._1
1224- let eu = hl._2
1225- let eO = value(getString(aj))
1226- let gV = eH(eC, eu)
1227- if ((gV == gV))
1199+ else if (fl)
1200+ then $Tuple2(-(fe), 0)
1201+ else $Tuple2(0, -(fe))
1202+ let eB = hh._1
1203+ let eC = hh._2
1204+ let hi = eA(eB, eC, 0)
1205+ let gR = hi._1
1206+ let er = hi._2
1207+ let eL = value(getString(aj))
1208+ let gS = eE(ez, er)
1209+ if ((gS == gS))
12281210 then {
1229- let gW = invoke(this, "rebalance", nil, nil)
1230- if ((gW == gW))
1231- then $Tuple2((((eo ++ gR) ++ hj) ++ gU), hh)
1211+ let gT = invoke(this, "rebalance", nil, nil)
1212+ if ((gT == gT))
1213+ then $Tuple2((((el ++ gO) ++ hg) ++ gR), he)
12321214 else throw("Strict value is not equal to itself.")
12331215 }
12341216 else throw("Strict value is not equal to itself.")
12351217 }
12361218 else throw("Strict value is not equal to itself.")
12371219 }
12381220 else throw("Strict value is not equal to itself.")
12391221 }
12401222 else throw("Strict value is not equal to itself.")
12411223 }
12421224 else throw("Strict value is not equal to itself.")
12431225 }
12441226
12451227
12461228
1247-@Callable(eV)
1248-func putOneTknREADONLY (fk,fj) = {
1249- let hm = fi(fj, bd(fk), unit, unit)
1250- let hg = hm._1
1251- let eo = hm._2
1252- let fh = hm._3
1253- let hf = hm._4
1254- let fo = hm._5
1255- $Tuple2(nil, $Tuple3(hg, fh, hf))
1229+@Callable(eS)
1230+func putOneTknREADONLY (fh,fg) = {
1231+ let hj = ff(fg, bd(fh), unit, unit)
1232+ let hd = hj._1
1233+ let el = hj._2
1234+ let fe = hj._3
1235+ let hc = hj._4
1236+ let fl = hj._5
1237+ $Tuple2(nil, $Tuple3(hd, fe, hc))
12561238 }
12571239
12581240
12591241
1260-@Callable(eV)
1261-func getOneTkn (hn,gZ) = {
1262- let hb = {
1242+@Callable(eS)
1243+func getOneTkn (hk,gW) = {
1244+ let gY = {
12631245 let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12641246 if ($isInstanceOf(aW, "Boolean"))
12651247 then aW
12661248 else throw(($getType(aW) + " couldn't be cast to Boolean"))
12671249 }
1268- let ho = if (if (aY())
1250+ let hl = if (if (aY())
12691251 then true
12701252 else (bl == n))
12711253 then true
1272- else hb
1273- let fP = [if (if (!(ho))
1254+ else gY
1255+ let fM = [if (if (!(hl))
12741256 then true
1275- else gk(eV))
1257+ else gh(eS))
12761258 then true
1277- else aQ("get operation is blocked by admin"), if ((size(eV.payments) == 1))
1259+ else aQ("get operation is blocked by admin"), if ((size(eS.payments) == 1))
12781260 then true
12791261 else aQ("exactly 1 payment are expected")]
1280- if ((fP == fP))
1262+ if ((fM == fM))
12811263 then {
1282- let fO = bd(hn)
1283- let hd = eV.payments[0]
1284- let fk = hd.assetId
1285- let fw = hd.amount
1286- let eC = ev(toBigInt(0), toBigInt(0), toBigInt(0))
1287- if ((eC == eC))
1264+ let fL = bd(hk)
1265+ let ha = eS.payments[0]
1266+ let fh = ha.assetId
1267+ let ft = ha.amount
1268+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1269+ if ((ez == ez))
12881270 then {
1289- let ab = eV.caller
1290- let ac = eV.transactionId
1291- let hp = fN(fO, fw, fk, ab, ac)
1292- if ((hp == hp))
1271+ let ab = eS.caller
1272+ let ac = eS.transactionId
1273+ let hm = fK(fL, ft, fh, ab, ac)
1274+ if ((hm == hm))
12931275 then {
1294- let fQ = hp._5
1295- let hf = hp._4
1296- let fh = hp._3
1297- let eo = hp._2
1298- let hq = hp._1
1299- let bW = if (if ((gZ > 0))
1300- then (gZ > hq)
1276+ let fN = hm._5
1277+ let hc = hm._4
1278+ let fe = hm._3
1279+ let el = hm._2
1280+ let hn = hm._1
1281+ let bW = if (if ((gW > 0))
1282+ then (gW > hn)
13011283 else false)
1302- then aQ(makeString(["amount to receive is less than ", toString(gZ)], ""))
1303- else hq
1304- let hr = invoke(aT, "burn", [fw], [AttachedPayment(fk, fw)])
1305- if ((hr == hr))
1284+ then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1285+ else hn
1286+ let ho = invoke(aT, "burn", [ft], [AttachedPayment(fh, ft)])
1287+ if ((ho == ho))
13061288 then {
1307- let gF = cK(hn, bW)
1308- let hs = [ScriptTransfer(ab, bW, fO)]
1309- let hj = if ((fh > 0))
1310- then [ScriptTransfer(aU, fh, fO)]
1289+ let gC = cH(hk, bW)
1290+ let hp = [ScriptTransfer(ab, bW, fL)]
1291+ let hg = if ((fe > 0))
1292+ then [ScriptTransfer(aU, fe, fL)]
13111293 else nil
1312- let ht = {
1313- let hu = if ((this == aU))
1294+ let hq = {
1295+ let hr = if ((this == aU))
13141296 then 0
1315- else fh
1316- if (fQ)
1317- then $Tuple2(-((bW + hu)), 0)
1318- else $Tuple2(0, -((bW + hu)))
1297+ else fe
1298+ if (fN)
1299+ then $Tuple2(-((bW + hr)), 0)
1300+ else $Tuple2(0, -((bW + hr)))
13191301 }
1320- let eE = ht._1
1321- let eF = ht._2
1322- let hv = eD(eE, eF, 0)
1323- let gU = hv._1
1324- let eu = hv._2
1325- let gV = eH(eC, eu)
1326- if ((gV == gV))
1327- then $Tuple2(((((eo ++ gF) ++ hs) ++ hj) ++ gU), bW)
1302+ let eB = hq._1
1303+ let eC = hq._2
1304+ let hs = eA(eB, eC, 0)
1305+ let gR = hs._1
1306+ let er = hs._2
1307+ let gS = eE(ez, er)
1308+ if ((gS == gS))
1309+ then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
13281310 else throw("Strict value is not equal to itself.")
13291311 }
13301312 else throw("Strict value is not equal to itself.")
13311313 }
13321314 else throw("Strict value is not equal to itself.")
13331315 }
13341316 else throw("Strict value is not equal to itself.")
13351317 }
13361318 else throw("Strict value is not equal to itself.")
13371319 }
13381320
13391321
13401322
1341-@Callable(eV)
1342-func getOneTknREADONLY (fO,fw) = {
1343- let hw = fN(bd(fO), fw, bm, unit, unit)
1344- let hq = hw._1
1345- let eo = hw._2
1346- let fh = hw._3
1347- let hf = hw._4
1348- let fQ = hw._5
1349- $Tuple2(nil, $Tuple3(hq, fh, hf))
1323+@Callable(eS)
1324+func getOneTknREADONLY (fL,ft) = {
1325+ let ht = fK(bd(fL), ft, bm, unit, unit)
1326+ let hn = ht._1
1327+ let el = ht._2
1328+ let fe = ht._3
1329+ let hc = ht._4
1330+ let fN = ht._5
1331+ $Tuple2(nil, $Tuple3(hn, fe, hc))
13501332 }
13511333
13521334
13531335
1354-@Callable(eV)
1355-func unstakeAndGetOneTkn (hx,hn,gZ) = {
1356- let hb = {
1336+@Callable(eS)
1337+func unstakeAndGetOneTkn (hu,hk,gW) = {
1338+ let gY = {
13571339 let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13581340 if ($isInstanceOf(aW, "Boolean"))
13591341 then aW
13601342 else throw(($getType(aW) + " couldn't be cast to Boolean"))
13611343 }
1362- let ho = if (if (aY())
1344+ let hl = if (if (aY())
13631345 then true
13641346 else (bl == n))
13651347 then true
1366- else hb
1367- let fP = [if (if (!(ho))
1348+ else gY
1349+ let fM = [if (if (!(hl))
13681350 then true
1369- else gk(eV))
1351+ else gh(eS))
13701352 then true
1371- else aQ("get operation is blocked by admin"), if ((size(eV.payments) == 0))
1353+ else aQ("get operation is blocked by admin"), if ((size(eS.payments) == 0))
13721354 then true
13731355 else aQ("no payments are expected")]
1374- if ((fP == fP))
1356+ if ((fM == fM))
13751357 then {
1376- let fO = bd(hn)
1377- let ab = eV.caller
1378- let ac = eV.transactionId
1379- let eC = ev(toBigInt(0), toBigInt(0), toBigInt(0))
1380- if ((eC == eC))
1358+ let fL = bd(hk)
1359+ let ab = eS.caller
1360+ let ac = eS.transactionId
1361+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1362+ if ((ez == ez))
13811363 then {
1382- let hy = invoke(bs, "unstake", [toBase58String(bm), hx], nil)
1383- if ((hy == hy))
1364+ let hv = invoke(bs, "unstake", [toBase58String(bm), hu], nil)
1365+ if ((hv == hv))
13841366 then {
1385- let hz = fN(fO, hx, bm, ab, ac)
1386- if ((hz == hz))
1367+ let hw = fK(fL, hu, bm, ab, ac)
1368+ if ((hw == hw))
13871369 then {
1388- let fQ = hz._5
1389- let hf = hz._4
1390- let fh = hz._3
1391- let eo = hz._2
1392- let hq = hz._1
1393- let bW = if (if ((gZ > 0))
1394- then (gZ > hq)
1370+ let fN = hw._5
1371+ let hc = hw._4
1372+ let fe = hw._3
1373+ let el = hw._2
1374+ let hn = hw._1
1375+ let bW = if (if ((gW > 0))
1376+ then (gW > hn)
13951377 else false)
1396- then aQ(makeString(["amount to receive is less than ", toString(gZ)], ""))
1397- else hq
1398- let hr = invoke(aT, "burn", [hx], [AttachedPayment(bm, hx)])
1399- if ((hr == hr))
1378+ then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
1379+ else hn
1380+ let ho = invoke(aT, "burn", [hu], [AttachedPayment(bm, hu)])
1381+ if ((ho == ho))
14001382 then {
1401- let gF = cK(hn, bW)
1402- let hs = [ScriptTransfer(eV.caller, bW, fO)]
1403- let hj = if ((fh > 0))
1404- then [ScriptTransfer(aU, fh, fO)]
1383+ let gC = cH(hk, bW)
1384+ let hp = [ScriptTransfer(eS.caller, bW, fL)]
1385+ let hg = if ((fe > 0))
1386+ then [ScriptTransfer(aU, fe, fL)]
14051387 else nil
1406- let hA = {
1407- let hu = if ((this == aU))
1388+ let hx = {
1389+ let hr = if ((this == aU))
14081390 then 0
1409- else fh
1410- if (fQ)
1411- then $Tuple2(-((bW + hu)), 0)
1412- else $Tuple2(0, -((bW + hu)))
1391+ else fe
1392+ if (fN)
1393+ then $Tuple2(-((bW + hr)), 0)
1394+ else $Tuple2(0, -((bW + hr)))
14131395 }
1414- let eE = hA._1
1415- let eF = hA._2
1416- let hB = eD(eE, eF, 0)
1417- let gU = hB._1
1418- let eu = hB._2
1419- let gV = eH(eC, eu)
1420- if ((gV == gV))
1421- then $Tuple2(((((eo ++ gF) ++ hs) ++ hj) ++ gU), bW)
1396+ let eB = hx._1
1397+ let eC = hx._2
1398+ let hy = eA(eB, eC, 0)
1399+ let gR = hy._1
1400+ let er = hy._2
1401+ let gS = eE(ez, er)
1402+ if ((gS == gS))
1403+ then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
14221404 else throw("Strict value is not equal to itself.")
14231405 }
14241406 else throw("Strict value is not equal to itself.")
14251407 }
14261408 else throw("Strict value is not equal to itself.")
14271409 }
14281410 else throw("Strict value is not equal to itself.")
14291411 }
14301412 else throw("Strict value is not equal to itself.")
14311413 }
14321414 else throw("Strict value is not equal to itself.")
14331415 }
14341416
14351417
14361418
1437-@Callable(eV)
1419+@Callable(eS)
14381420 func get () = {
1439- let dZ = eU(eV)
1440- let dF = dZ._1
1441- let dG = dZ._2
1442- let eX = dZ._3
1443- let do = dZ._4
1444- let dH = dZ._5
1445- let gF = cP(dF, dG)
1446- let eC = ev(toBigInt(0), toBigInt(0), toBigInt(0))
1447- if ((eC == eC))
1421+ let dW = eR(eS)
1422+ let dC = dW._1
1423+ let dD = dW._2
1424+ let eU = dW._3
1425+ let dl = dW._4
1426+ let dE = dW._5
1427+ let gC = cM(dC, dD)
1428+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1429+ if ((ez == ez))
14481430 then {
1449- let hC = invoke(aT, "burn", [eX], [AttachedPayment(do, eX)])
1450- if ((hC == hC))
1431+ let hz = invoke(aT, "burn", [eU], [AttachedPayment(dl, eU)])
1432+ if ((hz == hz))
14511433 then {
1452- let hD = eD(-(dF), -(dG), 0)
1453- let gU = hD._1
1454- let eu = hD._2
1455- let gV = eH(eC, eu)
1456- if ((gV == gV))
1457- then ((gF ++ dH) ++ gU)
1434+ let hA = eA(-(dC), -(dD), 0)
1435+ let gR = hA._1
1436+ let er = hA._2
1437+ let gS = eE(ez, er)
1438+ if ((gS == gS))
1439+ then ((gC ++ dE) ++ gR)
14581440 else throw("Strict value is not equal to itself.")
14591441 }
14601442 else throw("Strict value is not equal to itself.")
14611443 }
14621444 else throw("Strict value is not equal to itself.")
14631445 }
14641446
14651447
14661448
1467-@Callable(eV)
1468-func getNoLess (hE,hF) = {
1469- let dZ = eU(eV)
1470- let dF = dZ._1
1471- let dG = dZ._2
1472- let eX = dZ._3
1473- let do = dZ._4
1474- let dH = dZ._5
1475- if ((hE > dF))
1476- then throw(((("noLessThenAmtAsset failed: " + toString(dF)) + " < ") + toString(hE)))
1477- else if ((hF > dG))
1478- then throw(((("noLessThenPriceAsset failed: " + toString(dG)) + " < ") + toString(hF)))
1449+@Callable(eS)
1450+func getNoLess (hB,hC) = {
1451+ let dW = eR(eS)
1452+ let dC = dW._1
1453+ let dD = dW._2
1454+ let eU = dW._3
1455+ let dl = dW._4
1456+ let dE = dW._5
1457+ if ((hB > dC))
1458+ then throw(((("noLessThenAmtAsset failed: " + toString(dC)) + " < ") + toString(hB)))
1459+ else if ((hC > dD))
1460+ then throw(((("noLessThenPriceAsset failed: " + toString(dD)) + " < ") + toString(hC)))
14791461 else {
1480- let gF = cP(dF, dG)
1481- let eC = ev(toBigInt(0), toBigInt(0), toBigInt(0))
1482- if ((eC == eC))
1462+ let gC = cM(dC, dD)
1463+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1464+ if ((ez == ez))
14831465 then {
1484- let hC = invoke(aT, "burn", [eX], [AttachedPayment(do, eX)])
1485- if ((hC == hC))
1466+ let hz = invoke(aT, "burn", [eU], [AttachedPayment(dl, eU)])
1467+ if ((hz == hz))
14861468 then {
1487- let hG = eD(-(dF), -(dG), 0)
1488- let gU = hG._1
1489- let eu = hG._2
1490- let gV = eH(eC, eu)
1491- if ((gV == gV))
1492- then ((gF ++ dH) ++ gU)
1469+ let hD = eA(-(dC), -(dD), 0)
1470+ let gR = hD._1
1471+ let er = hD._2
1472+ let gS = eE(ez, er)
1473+ if ((gS == gS))
1474+ then ((gC ++ dE) ++ gR)
14931475 else throw("Strict value is not equal to itself.")
14941476 }
14951477 else throw("Strict value is not equal to itself.")
14961478 }
14971479 else throw("Strict value is not equal to itself.")
14981480 }
14991481 }
15001482
15011483
15021484
1503-@Callable(eV)
1485+@Callable(eS)
15041486 func unstakeAndGet (bW) = {
1505- let hH = if ((size(eV.payments) != 0))
1487+ let hE = if ((size(eS.payments) != 0))
15061488 then throw("No payments are expected")
15071489 else true
1508- if ((hH == hH))
1490+ if ((hE == hE))
15091491 then {
1510- let dd = ba()
1511- let dq = fromBase58String(dd[q])
1512- let eC = ev(toBigInt(0), toBigInt(0), toBigInt(0))
1513- if ((eC == eC))
1492+ let da = ba()
1493+ let dn = fromBase58String(da[q])
1494+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1495+ if ((ez == ez))
15141496 then {
1515- let hy = invoke(bs, "unstake", [toBase58String(dq), bW], nil)
1516- if ((hy == hy))
1497+ let hv = invoke(bs, "unstake", [toBase58String(dn), bW], nil)
1498+ if ((hv == hv))
15171499 then {
1518- let dZ = dm(toBase58String(eV.transactionId), toBase58String(dq), bW, eV.caller)
1519- let dF = dZ._1
1520- let dG = dZ._2
1521- let dt = parseIntValue(dZ._9)
1522- let dH = dZ._10
1523- let gF = cP(dF, dG)
1524- let hI = if (if (aY())
1500+ let dW = dj(toBase58String(eS.transactionId), toBase58String(dn), bW, eS.caller)
1501+ let dC = dW._1
1502+ let dD = dW._2
1503+ let dq = parseIntValue(dW._9)
1504+ let dE = dW._10
1505+ let gC = cM(dC, dD)
1506+ let hF = if (if (aY())
15251507 then true
1526- else (dt == n))
1527- then throw(("Get operation is blocked by admin. Status = " + toString(dt)))
1508+ else (dq == n))
1509+ then throw(("Get operation is blocked by admin. Status = " + toString(dq)))
15281510 else true
1529- if ((hI == hI))
1511+ if ((hF == hF))
15301512 then {
1531- let hC = invoke(aT, "burn", [bW], [AttachedPayment(dq, bW)])
1532- if ((hC == hC))
1513+ let hz = invoke(aT, "burn", [bW], [AttachedPayment(dn, bW)])
1514+ if ((hz == hz))
15331515 then {
1534- let hJ = eD(-(dF), -(dG), 0)
1535- let gU = hJ._1
1536- let eu = hJ._2
1537- let gV = eH(eC, eu)
1538- if ((gV == gV))
1539- then ((gF ++ dH) ++ gU)
1516+ let hG = eA(-(dC), -(dD), 0)
1517+ let gR = hG._1
1518+ let er = hG._2
1519+ let gS = eE(ez, er)
1520+ if ((gS == gS))
1521+ then ((gC ++ dE) ++ gR)
15401522 else throw("Strict value is not equal to itself.")
15411523 }
15421524 else throw("Strict value is not equal to itself.")
15431525 }
15441526 else throw("Strict value is not equal to itself.")
15451527 }
15461528 else throw("Strict value is not equal to itself.")
15471529 }
15481530 else throw("Strict value is not equal to itself.")
15491531 }
15501532 else throw("Strict value is not equal to itself.")
15511533 }
15521534
15531535
15541536
1555-@Callable(eV)
1556-func unstakeAndGetNoLess (hx,hK,hF) = {
1557- let ho = if (aY())
1537+@Callable(eS)
1538+func unstakeAndGetNoLess (hu,hH,hC) = {
1539+ let hl = if (aY())
15581540 then true
15591541 else (bl == n)
1560- let fP = [if (!(ho))
1542+ let fM = [if (!(hl))
15611543 then true
1562- else throw("get operation is blocked by admin"), if ((size(eV.payments) == 0))
1544+ else throw("get operation is blocked by admin"), if ((size(eS.payments) == 0))
15631545 then true
15641546 else throw("no payments are expected")]
1565- if ((fP == fP))
1547+ if ((fM == fM))
15661548 then {
1567- let eC = ev(toBigInt(0), toBigInt(0), toBigInt(0))
1568- if ((eC == eC))
1549+ let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
1550+ if ((ez == ez))
15691551 then {
1570- let hy = invoke(bs, "unstake", [toBase58String(bm), hx], nil)
1571- if ((hy == hy))
1552+ let hv = invoke(bs, "unstake", [toBase58String(bm), hu], nil)
1553+ if ((hv == hv))
15721554 then {
1573- let dZ = dm(toBase58String(eV.transactionId), toBase58String(bm), hx, eV.caller)
1574- let dF = dZ._1
1575- let dG = dZ._2
1576- let dH = dZ._10
1577- let gF = cP(dF, dG)
1578- let hL = [if ((dF >= hK))
1555+ let dW = dj(toBase58String(eS.transactionId), toBase58String(bm), hu, eS.caller)
1556+ let dC = dW._1
1557+ let dD = dW._2
1558+ let dE = dW._10
1559+ let gC = cM(dC, dD)
1560+ let hI = [if ((dC >= hH))
15791561 then true
1580- else throw(makeString(["amount asset amount to receive is less than ", toString(hK)], "")), if ((dG >= hF))
1562+ else throw(makeString(["amount asset amount to receive is less than ", toString(hH)], "")), if ((dD >= hC))
15811563 then true
1582- else throw(makeString(["price asset amount to receive is less than ", toString(hF)], ""))]
1583- if ((hL == hL))
1564+ else throw(makeString(["price asset amount to receive is less than ", toString(hC)], ""))]
1565+ if ((hI == hI))
15841566 then {
1585- let hC = invoke(aT, "burn", [hx], [AttachedPayment(bm, hx)])
1586- if ((hC == hC))
1567+ let hz = invoke(aT, "burn", [hu], [AttachedPayment(bm, hu)])
1568+ if ((hz == hz))
15871569 then {
1588- let hM = eD(-(dF), -(dG), 0)
1589- let gU = hM._1
1590- let eu = hM._2
1591- let gV = eH(eC, eu)
1592- if ((gV == gV))
1593- then ((gF ++ dH) ++ gU)
1570+ let hJ = eA(-(dC), -(dD), 0)
1571+ let gR = hJ._1
1572+ let er = hJ._2
1573+ let gS = eE(ez, er)
1574+ if ((gS == gS))
1575+ then ((gC ++ dE) ++ gR)
15941576 else throw("Strict value is not equal to itself.")
15951577 }
15961578 else throw("Strict value is not equal to itself.")
15971579 }
15981580 else throw("Strict value is not equal to itself.")
15991581 }
16001582 else throw("Strict value is not equal to itself.")
16011583 }
16021584 else throw("Strict value is not equal to itself.")
16031585 }
16041586 else throw("Strict value is not equal to itself.")
16051587 }
16061588
16071589
16081590
1609-@Callable(eV)
1610-func activate (hN,hO) = if ((toString(eV.caller) != toString(aT)))
1591+@Callable(eS)
1592+func activate (hK,hL) = if ((toString(eS.caller) != toString(aT)))
16111593 then throw("permissions denied")
1612- else $Tuple2([StringEntry(ae(), hN), StringEntry(af(), hO)], "success")
1594+ else $Tuple2([StringEntry(ae(), hK), StringEntry(af(), hL)], "success")
16131595
16141596
16151597
1616-@Callable(eV)
1598+@Callable(eS)
16171599 func refreshKLp () = {
1618- let hP = valueOrElse(getInteger(ak), 0)
1619- let hQ = if (((height - hP) >= an))
1600+ let hM = valueOrElse(getInteger(ak), 0)
1601+ let hN = if (((height - hM) >= an))
16201602 then unit
16211603 else aQ(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1622- if ((hQ == hQ))
1604+ if ((hN == hN))
16231605 then {
1624- let eO = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
1625- let hR = eD(0, 0, 0)
1626- let hS = hR._1
1627- let eu = hR._2
1628- let eG = if ((eO != eu))
1629- then hS
1606+ let eL = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
1607+ let hO = eA(0, 0, 0)
1608+ let hP = hO._1
1609+ let er = hO._2
1610+ let eD = if ((eL != er))
1611+ then hP
16301612 else aQ("nothing to refresh")
1631- $Tuple2(eG, toString(eu))
1613+ $Tuple2(eD, toString(er))
16321614 }
16331615 else throw("Strict value is not equal to itself.")
16341616 }
16351617
16361618
16371619
1638-@Callable(eV)
1620+@Callable(eS)
16391621 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, ba())
16401622
16411623
16421624
1643-@Callable(eV)
1625+@Callable(eS)
16441626 func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bJ(ap))
16451627
16461628
16471629
1648-@Callable(eV)
1649-func calcPricesWrapperREADONLY (cX,cY,dc) = {
1650- let dl = db(cX, cY, dc)
1651- $Tuple2(nil, [toString(dl[0]), toString(dl[1]), toString(dl[2])])
1630+@Callable(eS)
1631+func calcPricesWrapperREADONLY (cU,cV,cZ) = {
1632+ let di = cY(cU, cV, cZ)
1633+ $Tuple2(nil, [toString(di[0]), toString(di[1]), toString(di[2])])
16521634 }
16531635
16541636
16551637
1656-@Callable(eV)
1638+@Callable(eS)
16571639 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
16581640
16591641
16601642
1661-@Callable(eV)
1643+@Callable(eS)
16621644 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
16631645
16641646
16651647
1666-@Callable(eV)
1648+@Callable(eS)
16671649 func calcPriceBigIntWrapperREADONLY (bN,bO) = $Tuple2(nil, toString(bM(parseBigIntValue(bN), parseBigIntValue(bO))))
16681650
16691651
16701652
1671-@Callable(eV)
1672-func estimatePutOperationWrapperREADONLY (dn,dJ,dK,dL,dM,dN,ab,dO,dP) = $Tuple2(nil, dI(dn, dJ, dK, dL, dM, dN, ab, dO, dP))
1653+@Callable(eS)
1654+func estimatePutOperationWrapperREADONLY (dk,dG,dH,dI,dJ,dK,ab,dL,dM) = $Tuple2(nil, dF(dk, dG, dH, dI, dJ, dK, ab, dL, dM))
16731655
16741656
16751657
1676-@Callable(eV)
1677-func estimateGetOperationWrapperREADONLY (dn,do,dp,ab) = {
1678- let dZ = dm(dn, do, dp, addressFromStringValue(ab))
1679- $Tuple2(nil, $Tuple10(dZ._1, dZ._2, dZ._3, dZ._4, dZ._5, dZ._6, dZ._7, toString(dZ._8), dZ._9, dZ._10))
1658+@Callable(eS)
1659+func estimateGetOperationWrapperREADONLY (dk,dl,dm,ab) = {
1660+ let dW = dj(dk, dl, dm, addressFromStringValue(ab))
1661+ $Tuple2(nil, $Tuple10(dW._1, dW._2, dW._3, dW._4, dW._5, dW._6, dW._7, toString(dW._8), dW._9, dW._10))
16801662 }
16811663
16821664
16831665
1684-@Callable(eV)
1666+@Callable(eS)
16851667 func statsREADONLY () = {
1686- let dd = ba()
1687- let dq = fromBase58String(dd[q])
1688- let hT = dd[r]
1689- let hU = dd[s]
1690- let dS = dd[v]
1691- let dT = dd[w]
1692- let de = parseIntValue(dd[t])
1693- let df = parseIntValue(dd[u])
1694- let hV = valueOrErrorMessage(assetInfo(dq), (("Asset " + toBase58String(dq)) + " doesn't exist")).quantity
1695- let hW = bJ(hT)
1696- let hX = bJ(hU)
1697- let hY = if ((hV == 0))
1668+ let da = ba()
1669+ let dn = fromBase58String(da[q])
1670+ let hQ = da[r]
1671+ let hR = da[s]
1672+ let dP = da[v]
1673+ let dQ = da[w]
1674+ let db = parseIntValue(da[t])
1675+ let dc = parseIntValue(da[u])
1676+ let hS = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
1677+ let hT = bJ(hQ)
1678+ let hU = bJ(hR)
1679+ let hV = if ((hS == 0))
16981680 then [e, e, e]
1699- else db(hW, hX, hV)
1700- let dA = 0
1701- let hZ = H(hY[1], b)
1702- let ia = H(hY[2], b)
1703- let ib = value(getInteger(aT, aD(toString(this))))
1704- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hW), toString(hX), toString(hV), toString(dA), toString(hZ), toString(ia), toString(ib)], j))
1681+ else cY(hT, hU, hS)
1682+ let dx = 0
1683+ let hW = H(hV[1], b)
1684+ let hX = H(hV[2], b)
1685+ let hY = value(getInteger(aT, aD(toString(this))))
1686+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hT), toString(hU), toString(hS), toString(dx), toString(hW), toString(hX), toString(hY)], j))
17051687 }
17061688
17071689
17081690
1709-@Callable(eV)
1710-func evaluatePutByAmountAssetREADONLY (dK) = {
1711- let dd = ba()
1712- let dq = fromBase58String(dd[q])
1713- let dQ = dd[r]
1714- let dr = fromBase58String(dQ)
1715- let dR = dd[s]
1716- let ds = fromBase58String(dR)
1717- let de = parseIntValue(dd[t])
1718- let df = parseIntValue(dd[u])
1719- let dt = dd[p]
1720- let hV = valueOrErrorMessage(assetInfo(dq), (("Asset " + toBase58String(dq)) + " doesn't exist")).quantity
1721- let hW = bJ(dQ)
1722- let hX = bJ(dR)
1723- let cZ = D(hW, de)
1724- let da = D(hX, df)
1725- let dz = if ((hV == 0))
1691+@Callable(eS)
1692+func evaluatePutByAmountAssetREADONLY (dH) = {
1693+ let da = ba()
1694+ let dn = fromBase58String(da[q])
1695+ let dN = da[r]
1696+ let do = fromBase58String(dN)
1697+ let dO = da[s]
1698+ let dp = fromBase58String(dO)
1699+ let db = parseIntValue(da[t])
1700+ let dc = parseIntValue(da[u])
1701+ let dq = da[p]
1702+ let hS = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
1703+ let hT = bJ(dN)
1704+ let hU = bJ(dO)
1705+ let cW = D(hT, db)
1706+ let cX = D(hU, dc)
1707+ let dw = if ((hS == 0))
17261708 then e
1727- else bM(da, cZ)
1728- let dW = D(dK, de)
1729- let dX = fraction(dW, dz, d)
1730- let dM = H(dX, df)
1731- let fb = dI("", 500000, dK, dr, dM, ds, "", true, false)
1732- let eh = fb._1
1733- let ic = fb._3
1734- let dv = fb._4
1735- let dx = fb._5
1736- let du = fb._6
1737- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(eh), toString(H(dz, b)), toString(dv), toString(dx), toString(du), dt, toString(dK), toString(dM)], j))
1709+ else bM(cX, cW)
1710+ let dT = D(dH, db)
1711+ let dU = fraction(dT, dw, d)
1712+ let dJ = H(dU, dc)
1713+ let eY = dF("", 500000, dH, do, dJ, dp, "", true, false)
1714+ let ee = eY._1
1715+ let hZ = eY._3
1716+ let ds = eY._4
1717+ let du = eY._5
1718+ let dr = eY._6
1719+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ee), toString(H(dw, b)), toString(ds), toString(du), toString(dr), dq, toString(dH), toString(dJ)], j))
17381720 }
17391721
17401722
17411723
1742-@Callable(eV)
1743-func evaluatePutByPriceAssetREADONLY (dM) = {
1744- let dd = ba()
1745- let dq = fromBase58String(dd[q])
1746- let dQ = dd[r]
1747- let dr = fromBase58String(dQ)
1748- let dR = dd[s]
1749- let ds = fromBase58String(dR)
1750- let de = parseIntValue(dd[t])
1751- let df = parseIntValue(dd[u])
1752- let dt = dd[p]
1753- let hV = valueOrErrorMessage(assetInfo(dq), (("Asset " + toBase58String(dq)) + " doesn't exist")).quantity
1754- let id = bJ(dQ)
1755- let ie = bJ(dR)
1756- let if = D(id, de)
1757- let ig = D(ie, df)
1758- let dz = if ((hV == 0))
1724+@Callable(eS)
1725+func evaluatePutByPriceAssetREADONLY (dJ) = {
1726+ let da = ba()
1727+ let dn = fromBase58String(da[q])
1728+ let dN = da[r]
1729+ let do = fromBase58String(dN)
1730+ let dO = da[s]
1731+ let dp = fromBase58String(dO)
1732+ let db = parseIntValue(da[t])
1733+ let dc = parseIntValue(da[u])
1734+ let dq = da[p]
1735+ let hS = valueOrErrorMessage(assetInfo(dn), (("Asset " + toBase58String(dn)) + " doesn't exist")).quantity
1736+ let ia = bJ(dN)
1737+ let ib = bJ(dO)
1738+ let ic = D(ia, db)
1739+ let id = D(ib, dc)
1740+ let dw = if ((hS == 0))
17591741 then e
1760- else bM(ig, if)
1761- let dX = D(dM, df)
1762- let dW = fraction(dX, d, dz)
1763- let dK = H(dW, de)
1764- let fb = dI("", 500000, dK, dr, dM, ds, "", true, false)
1765- let eh = fb._1
1766- let ic = fb._3
1767- let dv = fb._4
1768- let dx = fb._5
1769- let du = fb._6
1770- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(eh), toString(H(dz, b)), toString(dv), toString(dx), toString(du), dt, toString(dK), toString(dM)], j))
1742+ else bM(id, ic)
1743+ let dU = D(dJ, dc)
1744+ let dT = fraction(dU, d, dw)
1745+ let dH = H(dT, db)
1746+ let eY = dF("", 500000, dH, do, dJ, dp, "", true, false)
1747+ let ee = eY._1
1748+ let hZ = eY._3
1749+ let ds = eY._4
1750+ let du = eY._5
1751+ let dr = eY._6
1752+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ee), toString(H(dw, b)), toString(ds), toString(du), toString(dr), dq, toString(dH), toString(dJ)], j))
17711753 }
17721754
17731755
17741756
1775-@Callable(eV)
1776-func evaluateGetREADONLY (ih,ii) = {
1777- let dZ = dm("", ih, ii, this)
1778- let dF = dZ._1
1779- let dG = dZ._2
1780- let dv = dZ._5
1781- let dx = dZ._6
1782- let du = dZ._7
1783- let dA = dZ._8
1784- let dt = parseIntValue(dZ._9)
1785- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dF), toString(dG), toString(dv), toString(dx), toString(du), toString(dA), toString(dt)], j))
1757+@Callable(eS)
1758+func evaluateGetREADONLY (ie,if) = {
1759+ let dW = dj("", ie, if, this)
1760+ let dC = dW._1
1761+ let dD = dW._2
1762+ let ds = dW._5
1763+ let du = dW._6
1764+ let dr = dW._7
1765+ let dx = dW._8
1766+ let dq = parseIntValue(dW._9)
1767+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dC), toString(dD), toString(ds), toString(du), toString(dr), toString(dx), toString(dq)], j))
17861768 }
17871769
17881770
1789-@Verifier(ij)
1790-func ik () = {
1791- let il = {
1792- let bT = gh()
1771+@Verifier(ig)
1772+func ih () = {
1773+ let ii = {
1774+ let bT = ge()
17931775 if ($isInstanceOf(bT, "ByteVector"))
17941776 then {
1795- let gl = bT
1796- gl
1777+ let gi = bT
1778+ gi
17971779 }
17981780 else if ($isInstanceOf(bT, "Unit"))
1799- then ij.senderPublicKey
1781+ then ig.senderPublicKey
18001782 else throw("Match error")
18011783 }
1802- let bT = ij
1784+ let bT = ig
18031785 if ($isInstanceOf(bT, "Order"))
18041786 then {
1805- let eK = bT
1806- let im = aZ()
1807- let in = eJ(eK)
1808- let aI = in._1
1809- let aJ = in._2
1810- let aK = sigVerify(eK.bodyBytes, eK.proofs[0], eK.senderPublicKey)
1811- let aL = sigVerify(eK.bodyBytes, eK.proofs[1], im)
1787+ let eH = bT
1788+ let ij = aZ()
1789+ let ik = eG(eH)
1790+ let aI = ik._1
1791+ let aJ = ik._2
1792+ let aK = sigVerify(eH.bodyBytes, eH.proofs[0], eH.senderPublicKey)
1793+ let aL = sigVerify(eH.bodyBytes, eH.proofs[1], ij)
18121794 if (if (if (aI)
18131795 then aK
18141796 else false)
18151797 then aL
18161798 else false)
18171799 then true
18181800 else aH(aI, aJ, aK, aL)
18191801 }
18201802 else if ($isInstanceOf(bT, "SetScriptTransaction"))
18211803 then {
1822- let gi = bT
1823- if (sigVerify(ij.bodyBytes, ij.proofs[0], il))
1804+ let gf = bT
1805+ if (sigVerify(ig.bodyBytes, ig.proofs[0], ii))
18241806 then true
18251807 else {
1826- let io = blake2b256(value(gi.script))
1827- let ip = fromBase64String(value(getString(aT, aF())))
1828- let iq = scriptHash(this)
1829- if ((ip == io))
1830- then (iq != io)
1808+ let il = blake2b256(value(gf.script))
1809+ let im = fromBase64String(value(getString(aT, aF())))
1810+ let in = scriptHash(this)
1811+ if ((im == il))
1812+ then (in != il)
18311813 else false
18321814 }
18331815 }
1834- else sigVerify(ij.bodyBytes, ij.proofs[0], il)
1816+ else sigVerify(ig.bodyBytes, ig.proofs[0], ii)
18351817 }
18361818

github/deemru/w8io/873ac7e 
578.68 ms