tx · DmS2xXgada1Ju9cRuSYgEYW2jey5QqdNQjmfiSMfyVZL

3N45khsjRq7bYfsvbxX1YBURhNRBBDRFNYV:  -0.03500000 Waves

2022.12.22 17:46 [2371636] smart account 3N45khsjRq7bYfsvbxX1YBURhNRBBDRFNYV > SELF 0.00000000 Waves

{ "type": 13, "id": "DmS2xXgada1Ju9cRuSYgEYW2jey5QqdNQjmfiSMfyVZL", "fee": 3500000, "feeAssetId": null, "timestamp": 1671720413986, "version": 1, "sender": "3N45khsjRq7bYfsvbxX1YBURhNRBBDRFNYV", "senderPublicKey": "9QeKzbcXevL66Vm5v2GCmySfZ86o8jcD5y7pPmfRcRYE", "proofs": [ "2VohkM14ZZDKWmZcMC6RGB24c4YcF9QC8uRawcxTQg82Cy65gzVgEV4EhCBwBFhxBVdPHShUeQqoThSH96cTvACy" ], "script": "base64:BgKdLQgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIQa2V5RmFjdG9yeUNvbmZpZyINa2V5TWF0Y2hlclB1YiIpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMiE3Bvb2xDb250cmFjdEFkZHJlc3MiDWtleVBvb2xDb25maWciCWlBbXRBc3NldCILaVByaWNlQXNzZXQiH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQiDGJhc2VBc3NldFN0ciITa2V5QWxsUG9vbHNTaHV0ZG93biINa2V5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDgwNTg4MjI0Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIUY2FsY1ByaWNlQmlnSW50Um91bmQiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiD2NhbGN1bGF0ZVByaWNlcyIGcHJpY2VzIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCIJbHBBc3NldElkIglhbUFzc2V0SWQiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIKbHBFbWlzc2lvbiIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4Ig1scEVtaXNzaW9uWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiFGVzdGltYXRlUHV0T3BlcmF0aW9uIhFzbGlwcGFnZVRvbGVyYW5jZSIMaW5BbUFzc2V0QW10IgtpbkFtQXNzZXRJZCIMaW5QckFzc2V0QW10IgtpblByQXNzZXRJZCIKaXNFdmFsdWF0ZSIGZW1pdExwIgxhbUFzc2V0SWRTdHIiDHByQXNzZXRJZFN0ciILaUFtdEFzc2V0SWQiDWlQcmljZUFzc2V0SWQiDmluQW1Bc3NldElkU3RyIg5pblByQXNzZXRJZFN0ciIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIDcmVzIgtzbGlwcGFnZVgxOCIUc2xpcHBhZ2VUb2xlcmFuY2VYMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiC2NvbW1vblN0YXRlIgdjYWxjS0xwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiCnVwZGF0ZWRLTHAiDmNhbGNDdXJyZW50S0xwIhBhbW91bnRBc3NldERlbHRhIg9wcmljZUFzc2V0RGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCmN1cnJlbnRLTHAiEnJlZnJlc2hLTHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiB2FjdGlvbnMiEnZhbGlkYXRlVXBkYXRlZEtMcCIGb2xkS0xwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjA4MDEyMTAxMyIDa0xwIg0kdDAyMTQ4NDIxNTg0Ig11bnVzZWRBY3Rpb25zIgZrTHBOZXciDGlzT3JkZXJWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjQyNjkyNDU2MiIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyNDU2NjI0NzE1IhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyINJHQwMjQ4MzcyNDg5NiINcGF5bWVudEFtb3VudCIQYW1vdW50QmFsYW5jZU5ldyIPcHJpY2VCYWxhbmNlTmV3IgtwcmljZU5ld1gxOCIIcHJpY2VOZXciDnBheW1lbnRCYWxhbmNlIhRwYXltZW50QmFsYW5jZUJpZ0ludCIMc3VwcGx5QmlnSW50IgtjaGVjaFN1cHBseSINZGVwb3NpdEJpZ0ludCILaXNzdWVBbW91bnQiC3ByaWNlT2xkWDE4IghwcmljZU9sZCIEbG9zcyINJHQwMjYzOTcyNjU2NCIHYmFsYW5jZSIPaXNzdWVBbW91bnRCb3RoIg9jYWxjR2V0T25lVG9rZW4iCm91dEFzc2V0SWQiBmNoZWNrcyIQb3V0SW5BbW91bnRBc3NldCINYmFsYW5jZUJpZ0ludCIYb3V0SW5BbW91bnRBc3NldERlY2ltYWxzIgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCIKb3V0QmFsYW5jZSIQb3V0QmFsYW5jZUJpZ0ludCIOcmVkZWVtZWRCaWdJbnQiCWFtb3VudFJhdyINJHQwMjg0NjUyODUxNSILdG90YWxBbW91bnQiDSR0MDI4NTE5Mjg3NDUiC291dEFtQW1vdW50IgtvdXRQckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciGGFtb3VudEJvdGhJblBheW1lbnRBc3NldCIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiCWlzTWFuYWdlciICcGsiC211c3RNYW5hZ2VyIgJwZCIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiC2NoZWNrQ2FsbGVyIhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSIPc2hvdWxkQXV0b1N0YWtlIgRhbUlkIgRwcklkIgxzbGlwcGFnZUFJbnYiDHNsaXBwYWdlUEludiIKbHBUcmFuc2ZlciILc2xwU3Rha2VJbnYiDSR0MDMzMjczMzM3MzUiEXJlZnJlc2hLTHBBY3Rpb25zIhFpc1VwZGF0ZWRLTHBWYWxpZCILbWF4U2xpcHBhZ2UiDSR0MDM0Mjk3MzQzNjIiDG1pbk91dEFtb3VudCIJYXV0b1N0YWtlIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCIBQCINaXNQdXREaXNhYmxlZCIHcGF5bWVudCINJHQwMzU1NTAzNTcwMiIFYm9udXMiE2VtaXRBbW91bnRFc3RpbWF0ZWQiCmVtaXRBbW91bnQiCHN0YWtlSW52IgdzZW5kRmVlIg0kdDAzNjI4ODM2NDg1Ig0kdDAzNjQ4ODM2NTk2Ig0kdDAzNjkwMjM3MDU5Ig1vdXRBc3NldElkU3RyIg1pc0dldERpc2FibGVkIg0kdDAzNzk0NDM4MDk3Ig9hbW91bnRFc3RpbWF0ZWQiB2J1cm5JbnYiDWFzc2V0VHJhbnNmZXIiDSR0MDM4NTk3Mzg4NDQiEGZlZUFtb3VudEZvckNhbGMiDSR0MDM4ODQ3Mzg5NTUiDSR0MDM5MjEyMzkzNjgiDXVuc3Rha2VBbW91bnQiCnVuc3Rha2VJbnYiDSR0MDQwMjcwNDA0MjEiDSR0MDQwOTE2NDExNjMiDSR0MDQxMTY2NDEyNzQiCW91dEFtdEFtdCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDSR0MDQyMjIwNDIzMDIiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiDSR0MDQzMjUxNDMzMzIiDWNoZWNrUGF5bWVudHMiD2NoZWNrUG9vbFN0YXR1cyINJHQwNDQ0NTg0NDUzOSIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgxjaGVja0Ftb3VudHMiDSR0MDQ1ODM0NDU5MTUiC2FtdEFzc2V0U3RyIg1wcmljZUFzc2V0U3RyIhhsYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiHWNoZWNrTGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ig0kdDA0NzEwMjQ3MTY2IhBrTHBVcGRhdGVBY3Rpb25zIgphbXRBc3NldElkIgxwcmljZUFzc2V0SWQiDXBvb2xMUEJhbGFuY2UiEmFjY0FtdEFzc2V0QmFsYW5jZSIUYWNjUHJpY2VBc3NldEJhbGFuY2UiCnByaWNlc0xpc3QiD2xwQW10QXNzZXRTaGFyZSIRbHBQcmljZUFzc2V0U2hhcmUiCnBvb2xXZWlnaHQiDGN1clByaWNlQ2FsYyIMYW1CYWxhbmNlUmF3IgxwckJhbGFuY2VSYXciD2FtQmFsYW5jZVJhd1gxOCIPcHJCYWxhbmNlUmF3WDE4IhBwYXltZW50THBBc3NldElkIgxwYXltZW50THBBbXQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNobwABYQAIAAFiAIDC1y8AAWMJALYCAQCAwtcvAAFkCQC2AgEAgICQu7rWrfANAAFlCQC2AgEAAAABZgkAtgIBAAAAAWcJALYCAQABAAFoCQC2AgEAAgABaQIFV0FWRVMAAWoCAl9fAAFrAAEAAWwAAgABbQADAAFuAAQAAW8AAQABcAACAAFxAAMAAXIABAABcwAFAAF0AAYAAXUABwABdgAIAAF3AAkAAXgACgABeQABAAF6AAIAAUEAAwABQgABAAFDAAcBAUQCAUUBRgkAvAIDCQC2AgEFAUUFAWQJALYCAQUBRgEBRwIBSAFJCQCgAwEJALwCAwUBSAkAtgIBBQFJBQFkAQFKAwFIAUkBSwkAoAMBCQC9AgQFAUgJALYCAQUBSQUBZAUBSwEBTAMBTQFOAU8JAGsDBQFNBQFOBQFPAQFQAQFIAwkAZgIAAAUBSAkBAS0BBQFIBQFIAQFRAQFIAwkAvwICBQFlBQFICQC+AgEFAUgFAUgBAVIAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFTAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVQAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVUAAhElcyVzX19wcmljZV9fbGFzdAEBVgIBVwFYCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVwkAzAgCCQCkAwEFAVgFA25pbAUBagEBWQIBWgJhYQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVoCAl9fBQJhYQECYWICAVoCYWEJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFaAgJfXwUCYWEBAmFjAAIPJXNfX2Ftb3VudEFzc2V0AQJhZAACDiVzX19wcmljZUFzc2V0AAJhZQIHJXNfX2ZlZQACYWYJAGsDAAoFAWIAkE4AAmFnCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFlBQJhZgACYWgJALkJAgkAzAgCAgIlcwkAzAgCAgNrTHAFA25pbAUBagACYWkJALkJAgkAzAgCAgIlcwkAzAgCAhJrTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBagACYWoJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoS0xwRGVsYXkFA25pbAUBagACYWsAHgACYWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWoFAmFrAQJhbQACESVzX19mYWN0b3J5Q29uZmlnAQJhbgACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYW8BAmFwCQCsAgIJAKwCAgIIJXMlcyVzX18FAmFwAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAECYXECAmFyAmFzCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhcgICX18FAmFzAghfX2NvbmZpZwECYXQBAmF1CQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmF1AQJhdgACDCVzX19zaHV0ZG93bgECYXcBAmF4CQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUCYXgBAmF5AAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gAAmF6Ahclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYUEDAmFCAmFDAmFECQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhQgINIHNlbmRlclZh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SW50VmFsdWUBCQCRAwIFAmJOBQF0BAJiUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF1BAJiUQkBAmJFBAUCYk8FAmJQBQJiSAUCYkkEAmJDCQEBRAIFAmJIBQJiTwQCYkIJAQFEAgUCYkkFAmJQBAJiUgkBAUQCBQJiTQUBYgQCYlMJAQJiQQIFAmJDBQJiUgQCYlQJAQJiQQIFAmJCBQJiUgkAzAgCBQJiUQkAzAgCBQJiUwkAzAgCBQJiVAUDbmlsAQJiVQMCYkgCYkkCYk0EAmJWCQECYkwDBQJiSAUCYkkFAmJNCQDMCAIJAQFHAgkAkQMCBQJiVgAABQFiCQDMCAIJAQFHAgkAkQMCBQJiVgABBQFiCQDMCAIJAQFHAgkAkQMCBQJiVgACBQFiBQNuaWwBAmJXBAJiWAJiWQJiWgFaBAJiTgkBAmFQAAQCY2EJAJEDAgUCYk4FAXEEAmNiCQCRAwIFAmJOBQFyBAJjYwkAkQMCBQJiTgUBcwQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiTgUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiTgUBdQQCY2QJAJEDAgUCYk4FAXAEAmNlCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY2EJAKwCAgkArAICAgZBc3NldCAFAmNhAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQMJAQIhPQIFAmNhBQJiWQkAAgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgQCY2YJAQJieQEFAmNiBAJjZwkBAUQCBQJjZgUCYkYEAmNoCQECYnkBBQJjYwQCY2kJAQFEAgUCY2gFAmJHBAJjagkBAmJBAgUCY2kFAmNnBAJjawkBAUcCBQJjagUBYgQCY2wJAQFEAgUCYloFAWIEAmNtCQEBRAIFAmNlBQFiBAJjbgkAvAIDBQJjZwUCY2wFAmNtBAJjbwkAvAIDBQJjaQUCY2wFAmNtBAJjcAkBAUoDBQJjbgUCYkYFBUZMT09SBAJjcQkBAUoDBQJjbwUCYkcFBUZMT09SBAJjcgMJAAACBQJiWAIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWgUCY3ADCQAAAgUCY2ICBVdBVkVTBQR1bml0CQDZBAEFAmNiCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVoFAmNxAwkAAAIFAmNjAgVXQVZFUwUEdW5pdAkA2QQBBQJjYwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWICCQClCAEFAVoFAmJYCQECYnUGBQJjcAUCY3EFAmJaBQJjawUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUABQJjawkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjawUDbmlsCQCcCgoFAmNwBQJjcQUCY2IFAmNjBQJjZgUCY2gFAmNlBQJjagUCY2QFAmNyAQJjcwkCYlgCY3QCY3UCY3YCY3cCY3gBWgJjeQJjegQCYk4JAQJhUAAEAmNhCQDZBAEJAJEDAgUCYk4FAXEEAmNBCQCRAwIFAmJOBQFyBAJjQgkAkQMCBQJiTgUBcwQCY0MJAJEDAgUCYk4FAXYEAmNECQCRAwIFAmJOBQF3BAJiTwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF0BAJiUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF1BAJjZAkAkQMCBQJiTgUBcAQCY2UICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2EJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2ECDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjRQkA2AQBCQELdmFsdWVPckVsc2UCBQJjdgkA2QQBAgVXQVZFUwQCY0YJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY3gJANkEAQIFV0FWRVMDAwkBAiE9AgUCY0EFAmNFBgkBAiE9AgUCY0IFAmNGCQACAQIiSW52YWxpZCBhbXQgb3IgcHJpY2UgYXNzZXQgcGFzc2VkLgQCY2YDBQJjeQkBAmJ5AQUCY0EJAGUCCQECYnkBBQJjQQUCY3UEAmNoAwUCY3kJAQJieQEFAmNCCQBlAgkBAmJ5AQUCY0IFAmN3BAJjRwkBAUQCBQJjdQUCYk8EAmNICQEBRAIFAmN3BQJiUAQCY0kJAQJiQQIFAmNIBQJjRwQCY2cJAQFEAgUCY2YFAmJPBAJjaQkBAUQCBQJjaAUCYlAEAmNKAwkAAAIFAmNlAAAEAmNqBQFlBAJjSwUBZQQCYlIJAHYGCQC5AgIFAmNHBQJjSAAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUcCBQJiUgUBYgkBAUcCBQJjRwUCYk8JAQFHAgUCY0gFAmJQCQECYkECCQC3AgIFAmNpBQJjSAkAtwICBQJjZwUCY0cFAmNLBAJjagkBAmJBAgUCY2kFAmNnBAJjSwkAvAIDCQEBUQEJALgCAgUCY2oFAmNJBQFkBQJjagQCY0wJAQFEAgUCY3QFAWIDAwkBAiE9AgUCY2oFAWUJAL8CAgUCY0sFAmNMBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJjSwIeIGV4Y2VlZGVkIHRoZSBwYXNzZWQgbGltaXQgb2YgCQCmAwEFAmNMBAJjbQkBAUQCBQJjZQUBYgQCY00JAL0CBAUCY0cJAQJiRAMFAmNpBQJjZwUHQ0VJTElORwUBZAUHQ0VJTElORwQCY04JAL0CBAUCY0gFAWQJAQJiRAMFAmNpBQJjZwUFRkxPT1IFB0NFSUxJTkcEAmNPAwkAvwICBQJjTQUCY0gJAJQKAgUCY04FAmNICQCUCgIFAmNHBQJjTQQCY1AIBQJjTwJfMQQCY1EIBQJjTwJfMgQCYlIJAL0CBAUCY20FAmNRBQJjaQUFRkxPT1IJAJcKBQkBAUoDBQJiUgUBYgUFRkxPT1IJAQFKAwUCY1AFAmJPBQdDRUlMSU5HCQEBSgMFAmNRBQJiUAUHQ0VJTElORwUCY2oFAmNLBAJjUggFAmNKAl8xBAJjUwgFAmNKAl8yBAJjVAgFAmNKAl8zBAJjawkBAUcCCAUCY0oCXzQFAWIEAmNVCQEBRwIIBQJjSgJfNQUBYgMJAGcCAAAFAmNSCQACAQI2SW52YWxpZCBjYWxjdWxhdGlvbnMuIExQIGNhbGN1bGF0ZWQgaXMgbGVzcyB0aGFuIHplcm8uBAJjVgMJAQEhAQUCY3oAAAUCY1IEAmNXCQBlAgUCY3UFAmNTBAJjWAkAZQIFAmN3BQJjVAQCY1kJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCY2sJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2sJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVkCBQFaBQJiWAkBAmJqCgUCY1MFAmNUBQJjVgUCY2sFAmN0BQJjVQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY1cFAmNYBQNuaWwJAJ8KDQUCY1IFAmNWBQJjawUCY2YFAmNoBQJjZQUCY2EFAmNkBQJjWQUCY1cFAmNYBQJjdgUCY3gBAmNaAwJkYQJkYgJjZQQCZGMJALwCAwkAdgYJALkCAgUCZGEFAmRiAAAJALYCAQAFAAEAEgUERE9XTgUBZwUCY2UDCQAAAgUCY2UFAWYFAWYFAmRjAQJkZAMCZGUCZGYCZGcEAmRoCQC4AgIJALYCAQkBAmJ5AQkBAmFVAQUCYmMFAmRlBAJkaQkAuAICCQC2AgEJAQJieQEJAQJhVQEFAmJkBQJkZgQCZGoJALgCAgkAtgIBCAkBBXZhbHVlAQkA7AcBBQJiYghxdWFudGl0eQUCZGcEAmRrCQECY1oDBQJkaAUCZGkFAmRqBQJkawECZGwDAmRtAmRuAmRnBAJkaAkAZAIJAQJieQEJAQJhVQEFAmJjBQJkbQQCZGkJAGQCCQECYnkBCQECYVUBBQJiZAUCZG4EAmRqCQBkAggJAQV2YWx1ZQEJAOwHAQUCYmIIcXVhbnRpdHkFAmRnBAJkYwkBAmNaAwkAtgIBBQJkaAkAtgIBBQJkaQkAtgIBBQJkagQCZG8JAMwIAgkBDEludGVnZXJFbnRyeQIFAmFpBQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYWgJAKYDAQUCZGMFA25pbAkAlAoCBQJkbwUCZGMBAmRwAgJkcQJkYwMJAMACAgUCZGMFAmRxBgkBAmFJAQkAuQkCCQDMCAICInVwZGF0ZWQgS0xwIGxvd2VyIHRoYW4gY3VycmVudCBLTHAJAMwIAgkApgMBBQJkcQkAzAgCCQCmAwEFAmRjBQNuaWwCASABAmRyAQJkcwQCZHQIBQJkcwZhbW91bnQEAmR1CQBuBAgFAmRzBmFtb3VudAgFAmRzBXByaWNlBQFiBQVGTE9PUgQCZHYDCQAAAggFAmRzCW9yZGVyVHlwZQUDQnV5CQCUCgIFAmR0CQEBLQEFAmR1CQCUCgIJAQEtAQUCZHQFAmR1BAJkbQgFAmR2Al8xBAJkbggFAmR2Al8yAwMDCQECYU4ABgkAAAIFAmJhBQFtBgkAAAIFAmJhBQFuCQACAQIcRXhjaGFuZ2Ugb3BlcmF0aW9ucyBkaXNhYmxlZAMDCQECIT0CCAgFAmRzCWFzc2V0UGFpcgthbW91bnRBc3NldAUCYmMGCQECIT0CCAgFAmRzCWFzc2V0UGFpcgpwcmljZUFzc2V0BQJiZAkAAgECE1dyb25nIG9yZGVyIGFzc2V0cy4EAmR3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFAmFoCQECYUsBAg9rTHAgaXMgcmVxdWlyZWQJAQJhSwECC2ludmFsaWQga0xwBAJkeAkBAmRsAwUCZG0FAmRuAAAEAmR5CAUCZHgCXzEEAmR6CAUCZHgCXzIEAmRBCQDAAgIFAmR6BQJkdwUCZEEBAmRCAQJkQwMJAQIhPQIJAJADAQgFAmRDCHBheW1lbnRzAAEJAAIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQCZEQJAQV2YWx1ZQEJAJEDAggFAmRDCHBheW1lbnRzAAAEAmJZCQEFdmFsdWUBCAUCZEQHYXNzZXRJZAQCZEUIBQJkRAZhbW91bnQEAmNKCQECYlcECQDYBAEIBQJkQw10cmFuc2FjdGlvbklkCQDYBAEFAmJZBQJkRQgFAmRDBmNhbGxlcgQCY3AIBQJjSgJfMQQCY3EIBQJjSgJfMgQCY2QJAQ1wYXJzZUludFZhbHVlAQgFAmNKAl85BAJjcggFAmNKA18xMAMDCQECYU4ABgkAAAIFAmNkBQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJjZAkAlwoFBQJjcAUCY3EFAmRFBQJiWQUCY3IBAmRGAwJkQwJjdAJjegMJAQIhPQIJAJADAQgFAmRDCHBheW1lbnRzAAIJAAIBAh9leGFjdGx5IDIgcGF5bWVudHMgYXJlIGV4cGVjdGVkBAJkRwkBBXZhbHVlAQkAkQMCCAUCZEMIcGF5bWVudHMAAAQCZEgJAQV2YWx1ZQEJAJEDAggFAmRDCHBheW1lbnRzAAEEAmRJCQECY3MJCQDYBAEIBQJkQw10cmFuc2FjdGlvbklkBQJjdAgFAmRHBmFtb3VudAgFAmRHB2Fzc2V0SWQIBQJkSAZhbW91bnQIBQJkSAdhc3NldElkCQClCAEIBQJkQwZjYWxsZXIHBQJjegQCY2QJAQ1wYXJzZUludFZhbHVlAQgFAmRJAl84AwMDCQECYU4ABgkAAAIFAmNkBQFsBgkAAAIFAmNkBQFuCQACAQkArAICAixQdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJjZAUCZEkBAmRKAQJkSwQCZEwJAPwHBAUCYUwCBGVtaXQJAMwIAgUCZEsFA25pbAUDbmlsAwkAAAIFAmRMBQJkTAQCZE0EAmROBQJkTAMJAAECBQJkTgIHQWRkcmVzcwQCZE8FAmROCQD8BwQFAmRPAgRlbWl0CQDMCAIFAmRLBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkTQUCZE0FAmRLCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJkUAECZEsEAmRRCQBrAwUCZEsFAmFnBQFiCQCUCgIJAGUCBQJkSwUCZFEFAmRRAQJkUgQCZFMCZFQBWgJhYQQCZFUJAAACBQJhYQUEdW5pdAQCZFYJAQJieQEJAQJhVQEFAmJjBAJkVwkBAmJ5AQkBAmFVAQUCYmQEAmRYAwkAAAIFAmRUBQJiYwYDCQAAAgUCZFQFAmJkBwkBAmFJAQINaW52YWxpZCBhc3NldAQCZFkDBQJkVQkAlAoCBQJkVgUCZFcDBQJkWAkAlAoCCQBlAgUCZFYFAmRTBQJkVwkAlAoCBQJkVgkAZQIFAmRXBQJkUwQCZFoIBQJkWQJfMQQCZWEIBQJkWQJfMgQCZWIDBQJkWAkAlAoCBQJkUwAACQCUCgIAAAUCZFMEAmVjCAUCZWICXzEEAmVkCAUCZWICXzIEAmR0CAkBAmRQAQUCZWMCXzEEAmR1CAkBAmRQAQUCZWQCXzEEAmVlCQECZFABBQJkUwQCZWYIBQJlZQJfMQQCZFEIBQJlZQJfMgQCZWcJAGQCBQJkWgUCZHQEAmVoCQBkAgUCZWEFAmR1BAJlaQkBAmJBAgkBAUQCBQJlaAUCYmYJAQFEAgUCZWcFAmJlBAJlagkBAUcCBQJlaQUBYgQCZWsDBQJkWAUCZFoFAmVhBAJlbAkAtgIBBQJlawQCZW0JALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiYgkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJiYgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmVuAwkAvwICBQJlbQUBZgYJAQJhSQECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZW4FAmVuBAJlbwkAtgIBBQJlZgQCZXAJAJYDAQkAzAgCAAAJAMwIAgkBAUoDCQC8AgMFAmVtCQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZW8FAWQFAmVsABIAEgUERE9XTgUBZAUBZAUBYgUFRkxPT1IFA25pbAQCY1kDBQJkVQUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmVqCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVqCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAgkApQgBCQEFdmFsdWUBBQFaCQDYBAEJAQV2YWx1ZQEFAmFhCQECYmoKBQJlYwUCZWQFAmVwBQJlagAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmVxCQECYkECCQEBRAIFAmVhBQJiZgkBAUQCBQJkWgUCYmUEAmVyCQEBRwIFAmVxBQFiBAJlcwQCZXQDBQJkWAkAlAoCBQJlYwUCZFoJAJQKAgUCZWQFAmVhBAJkSwgFAmV0Al8xBAJldQgFAmV0Al8yBAJldgkAoAMBCQC8AgMFAmVtCQC2AgEJAGkCBQJkSwACCQC2AgEFAmV1CQBrAwkAZQIFAmVwBQJldgUBYgUCZXYJAJcKBQUCZXAFAmNZBQJkUQUCZXMFAmRYCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJldwUCZXgCZWYCZFQBWgJhYQQCZFUJAAACBQJhYQUEdW5pdAQCYk4JAQJhUAAEAmJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXQEAmJQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXUEAmV5CQDMCAIDCQAAAgUCZFQFAmJiBgkBAmFJAQIQaW52YWxpZCBscCBhc3NldAUDbmlsAwkAAAIFAmV5BQJleQQCZXoDCQAAAgUCZXgFAmJjBgMJAAACBQJleAUCYmQHCQECYUkBAg1pbnZhbGlkIGFzc2V0BAJlQQMFAmV6CQC2AgEJAQJieQEJAQJhVQEFAmJjCQC2AgEJAQJieQEJAQJhVQEFAmJkBAJlQgMFAmV6BQJiTwUCYlAEAmVDCQECYnkBCQECYVUBBQJiYwQCZUQJAQJieQEJAQJhVQEFAmJkBAJlRQMFAmV6BQJlQwUCZUQEAmVGCQC2AgEFAmVFBAJlbQkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJiCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmJiAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZUcJALYCAQUCZWYEAmVICQCWAwEJAMwIAgAACQDMCAIJAQFKAwkAvAIDBQJlQQkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZUcFAWQFAmVtABIFAWgAAAASBQRET1dOBQFkBQJlQgUFRkxPT1IFA25pbAQCZUkJAQJkUAEFAmVIBAJlSggFAmVJAl8xBAJkUQgFAmVJAl8yBAJlSwMFAmV6CQCWCgQFAmVKAAAJAGUCBQJlQwUCZUgFAmVECQCWCgQAAAUCZUoFAmVDCQBlAgUCZUQFAmVIBAJlTAgFAmVLAl8xBAJlTQgFAmVLAl8yBAJlTggFAmVLAl8zBAJlTwgFAmVLAl80BAJlaQkBAmJBAgkBAUQCBQJlTwUCYmYJAQFEAgUCZU4FAmJlBAJlagkBAUcCBQJlaQUBYgQCY1kDBQJkVQUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIJAKUIAQkBBXZhbHVlAQUBWgkA2AQBCQEFdmFsdWUBBQJhYQkBAmJ1BgUCZUwFAmVNBQJlZgUCZWoFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCZWoJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZWoFA25pbAQCZXEJAQJiQQIJAQFEAgUCZUQFAmJmCQEBRAIFAmVDBQJiZQQCZXIJAQFHAgUCZXEFAWIEAmVzBAJlUAkAaAIJAKADAQkAvAIDBQJlQQUCZUcFAmVtAAIJAGsDCQBlAgUCZUoFAmVQBQFiBQJlUAkAlwoFBQJlSgUCY1kFAmRRBQJlcwUCZXoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVRAAQCZE4JAKIIAQkBAVMAAwkAAQIFAmROAgZTdHJpbmcEAmVSBQJkTgkA2QQBBQJlUgMJAAECBQJkTgIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJlUwAEAmROCQCiCAEJAQFUAAMJAAECBQJkTgIGU3RyaW5nBAJlUgUCZE4JANkEAQUCZVIDCQABAgUCZE4CBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZVQBAmRDBAJkTgkBAmVRAAMJAAECBQJkTgIKQnl0ZVZlY3RvcgQCZVUFAmROCQAAAggFAmRDD2NhbGxlclB1YmxpY0tleQUCZVUDCQABAgUCZE4CBFVuaXQJAAACCAUCZEMGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmVWAQJkQwQCZVcJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQCZE4JAQJlUQADCQABAgUCZE4CCkJ5dGVWZWN0b3IEAmVVBQJkTgMJAAACCAUCZEMPY2FsbGVyUHVibGljS2V5BQJlVQYFAmVXAwkAAQIFAmROAgRVbml0AwkAAAIIBQJkQwZjYWxsZXIFBHRoaXMGBQJlVwkAAgECC01hdGNoIGVycm9yGwJkQwEKc2V0TWFuYWdlcgECZVgEAmVZCQECZVYBBQJkQwMJAAACBQJlWQUCZVkEAmVaCQDZBAEFAmVYAwkAAAIFAmVaBQJlWgkAzAgCCQELU3RyaW5nRW50cnkCCQEBVAAFAmVYBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBDmNvbmZpcm1NYW5hZ2VyAAQCZmEJAQJlUwAEAmZiAwkBCWlzRGVmaW5lZAEFAmZhBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmYgUCZmIEAmZjAwkAAAIIBQJkQw9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmZhBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmYwUCZmMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVMACQDYBAEJAQV2YWx1ZQEFAmZhCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFUAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQNwdXQCAmN0AmZkAwkAZgIAAAUCY3QJAAIBAiBJbnZhbGlkIHNsaXBwYWdlVG9sZXJhbmNlIHBhc3NlZAQCZEkJAQJkRgMFAmRDBQJjdAYEAmNWCAUCZEkCXzIEAmNhCAUCZEkCXzcEAmNyCAUCZEkCXzkEAmNXCAUCZEkDXzEwBAJjWAgFAmRJA18xMQQCZmUIBQJkSQNfMTIEAmZmCAUCZEkDXzEzBAJkRwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEMIcGF5bWVudHMAAAZhbW91bnQEAmRICQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkQwhwYXltZW50cwABBmFtb3VudAQCZGsJAQJkZAMFAmRHBQJkSAkAtgIBAAADCQAAAgUCZGsFAmRrBAJkTAkA/AcEBQJhTAIEZW1pdAkAzAgCBQJjVgUDbmlsBQNuaWwDCQAAAgUCZEwFAmRMBAJkTQQCZE4FAmRMAwkAAQIFAmROAgdBZGRyZXNzBAJkTwUCZE4JAPwHBAUCZE8CBGVtaXQJAMwIAgUCY1YFA25pbAUDbmlsBQR1bml0AwkAAAIFAmRNBQJkTQQCZmcDCQBmAgUCY1cAAAkA/AcEBQJiaQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZlBQJjVwUDbmlsBQNuaWwDCQAAAgUCZmcFAmZnBAJmaAMJAGYCBQJjWAAACQD8BwQFAmJpAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZmYFAmNYBQNuaWwFA25pbAMJAAACBQJmaAUCZmgEAmZpAwUCZmQEAmZqCQD8BwQFAmJoAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjYQUCY1YFA25pbAMJAAACBQJmagUCZmoFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZEMGY2FsbGVyBQJjVgUCY2EFA25pbAQCZmsJAQJkbAMAAAAAAAADCQAAAgUCZmsFAmZrBAJkYwgFAmZrAl8yBAJmbAgFAmZrAl8xBAJmbQkBAmRwAgUCZGsFAmRjAwkAAAIFAmZtBQJmbQkAzggCCQDOCAIFAmNyBQJmaQUCZmwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBCnB1dEZvckZyZWUBAmZuAwkAZgIAAAUCZm4JAAIBAhRJbnZhbGlkIHZhbHVlIHBhc3NlZAQCZEkJAQJkRgMFAmRDBQJmbgcEAmNyCAUCZEkCXzkEAmRHCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkQwhwYXltZW50cwAABmFtb3VudAQCZEgJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRDCHBheW1lbnRzAAEGYW1vdW50BAJkawkBAmRkAwUCZEcFAmRICQC2AgEAAAMJAAACBQJkawUCZGsEAmZvCQECZGwDAAAAAAAABAJmbAgFAmZvAl8xBAJkYwgFAmZvAl8yBAJmbQkBAmRwAgUCZGsFAmRjAwkAAAIFAmZtBQJmbQkAzggCBQJjcgUCZmwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBCXB1dE9uZVRrbgICZnACZnEEAmZyCgACZnMJAPwHBAUCYUwCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmcwIHQm9vbGVhbgUCZnMJAAIBCQCsAgIJAAMBBQJmcwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZnQDAwMJAQJhTgAGCQAAAgUCYmEFAWwGCQAAAgUCYmEFAW4GBQJmcgQCZXkJAMwIAgMDCQEBIQEFAmZ0BgkBAmVUAQUCZEMGCQECYUkBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkQwhwYXltZW50cwABBgkBAmFJAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZXkFAmV5BAJmdQkAkQMCCAUCZEMIcGF5bWVudHMAAAQCZFQIBQJmdQdhc3NldElkBAJkUwgFAmZ1BmFtb3VudAQCZGsDCQAAAgUCZFQFAmJjCQECZGQDCQC2AgEFAmRTCQC2AgEAAAkAtgIBAAADCQAAAgUCZFQFAmJkCQECZGQDCQC2AgEAAAkAtgIBBQJkUwkAtgIBAAAJAQJhSQECHnBheW1lbnQgYXNzZXQgaXMgbm90IHN1cHBvcnRlZAMJAAACBQJkawUCZGsEAVoIBQJkQwZjYWxsZXIEAmFhCAUCZEMNdHJhbnNhY3Rpb25JZAQCZnYJAQJkUgQFAmRTBQJkVAUBWgUCYWEDCQAAAgUCZnYFAmZ2BAJkWAgFAmZ2Al81BAJmdwgFAmZ2Al80BAJkUQgFAmZ2Al8zBAJjWQgFAmZ2Al8yBAJmeAgFAmZ2Al8xBAJmeQMDCQBmAgUCZnAAAAkAZgIFAmZwBQJmeAcJAQJhSQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZnAFA25pbAIABQJmeAQCZEwJAQJkSgEFAmZ5AwkAAAIFAmRMBQJkTAQCZmkDBQJmcQQCZnoJAPwHBAUCYmgCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJiBQJmeQUDbmlsAwkAAAIFAmZ6BQJmegUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkQwZjYWxsZXIFAmZ5BQJiYgUDbmlsBAJmQQMJAGYCBQJkUQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFNBQJkUQUCZFQFA25pbAUDbmlsBAJmQgMJAAACBQR0aGlzBQJhTQkAlAoCAAAAAAMFAmRYCQCUCgIJAQEtAQUCZFEAAAkAlAoCAAAJAQEtAQUCZFEEAmRtCAUCZkICXzEEAmRuCAUCZkICXzIEAmZDCQECZGwDBQJkbQUCZG4AAAQCZmwIBQJmQwJfMQQCZGMIBQJmQwJfMgQCZHcJAQV2YWx1ZQEJAKIIAQUCYWgEAmZtCQECZHACBQJkawUCZGMDCQAAAgUCZm0FAmZtCQCUCgIJAM4IAgkAzggCCQDOCAIFAmNZBQJmaQUCZkEFAmZsBQJmeQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQwERcHV0T25lVGtuUkVBRE9OTFkCAmRUAmRTBAJmRAkBAmRSBAUCZFMJAQJhUwEFAmRUBQR1bml0BQR1bml0BAJmeAgFAmZEAl8xBAJjWQgFAmZEAl8yBAJkUQgFAmZEAl8zBAJmdwgFAmZEAl80BAJkWAgFAmZEAl81CQCUCgIFA25pbAkAlQoDBQJmeAUCZFEFAmZ3AmRDAQlnZXRPbmVUa24CAmZFAmZwBAJmcgoAAmZzCQD8BwQFAmFMAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZnMCB0Jvb2xlYW4FAmZzCQACAQkArAICCQADAQUCZnMCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZGAwMJAQJhTgAGCQAAAgUCYmEFAW4GBQJmcgQCZXkJAMwIAgMDCQEBIQEFAmZGBgkBAmVUAQUCZEMGCQECYUkBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkQwhwYXltZW50cwABBgkBAmFJAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZXkFAmV5BAJleAkBAmFTAQUCZkUEAmZ1CQCRAwIIBQJkQwhwYXltZW50cwAABAJkVAgFAmZ1B2Fzc2V0SWQEAmVmCAUCZnUGYW1vdW50BAJkawkBAmRkAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkawUCZGsEAVoIBQJkQwZjYWxsZXIEAmFhCAUCZEMNdHJhbnNhY3Rpb25JZAQCZkcJAQJldwUFAmV4BQJlZgUCZFQFAVoFAmFhAwkAAAIFAmZHBQJmRwQCZXoIBQJmRwJfNQQCZncIBQJmRwJfNAQCZFEIBQJmRwJfMwQCY1kIBQJmRwJfMgQCZkgIBQJmRwJfMQQCZEsDAwkAZgIFAmZwAAAJAGYCBQJmcAUCZkgHCQECYUkBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZwBQNuaWwCAAUCZkgEAmZJCQD8BwQFAmFMAgRidXJuCQDMCAIFAmVmBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRUBQJlZgUDbmlsAwkAAAIFAmZJBQJmSQQCZkoJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWgUCZEsFAmV4BQNuaWwEAmZBAwkAZgIFAmRRAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYU0FAmRRBQJleAUDbmlsBQNuaWwEAmZLBAJmTAMJAAACBQR0aGlzBQJhTQAABQJkUQMFAmV6CQCUCgIJAQEtAQkAZAIFAmRLBQJmTAAACQCUCgIAAAkBAS0BCQBkAgUCZEsFAmZMBAJkbQgFAmZLAl8xBAJkbggFAmZLAl8yBAJmTQkBAmRsAwUCZG0FAmRuAAAEAmZsCAUCZk0CXzEEAmRjCAUCZk0CXzIEAmZtCQECZHACBQJkawUCZGMDCQAAAgUCZm0FAmZtCQCUCgIJAM4IAgkAzggCCQDOCAIFAmNZBQJmSgUCZkEFAmZsBQJkSwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQwERZ2V0T25lVGtuUkVBRE9OTFkCAmV4AmVmBAJmTgkBAmV3BQkBAmFTAQUCZXgFAmVmBQJiYgUEdW5pdAUEdW5pdAQCZkgIBQJmTgJfMQQCY1kIBQJmTgJfMgQCZFEIBQJmTgJfMwQCZncIBQJmTgJfNAQCZXoIBQJmTgJfNQkAlAoCBQNuaWwJAJUKAwUCZkgFAmRRBQJmdwJkQwETdW5zdGFrZUFuZEdldE9uZVRrbgMCZk8CZkUCZnAEAmZyCgACZnMJAPwHBAUCYUwCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmcwIHQm9vbGVhbgUCZnMJAAIBCQCsAgIJAAMBBQJmcwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZkYDAwkBAmFOAAYJAAACBQJiYQUBbgYFAmZyBAJleQkAzAgCAwMJAQEhAQUCZkYGCQECZVQBBQJkQwYJAQJhSQECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRDCHBheW1lbnRzAAAGCQECYUkBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJleQUCZXkEAmV4CQECYVMBBQJmRQQBWggFAmRDBmNhbGxlcgQCYWEIBQJkQw10cmFuc2FjdGlvbklkBAJkawkBAmRkAwkAtgIBAAAJALYCAQAACQC2AgEAAAQCZlAJAPwHBAUCYmgCB3Vuc3Rha2UJAMwIAgkA2AQBBQJiYgkAzAgCBQJmTwUDbmlsBQNuaWwDCQAAAgUCZlAFAmZQBAJmUQkBAmV3BQUCZXgFAmZPBQJiYgUBWgUCYWEDCQAAAgUCZlEFAmZRBAJleggFAmZRAl81BAJmdwgFAmZRAl80BAJkUQgFAmZRAl8zBAJjWQgFAmZRAl8yBAJmSAgFAmZRAl8xBAJkSwMDCQBmAgUCZnAAAAkAZgIFAmZwBQJmSAcJAQJhSQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZnAFA25pbAIABQJmSAQCZkkJAPwHBAUCYUwCBGJ1cm4JAMwIAgUCZk8FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYmIFAmZPBQNuaWwDCQAAAgUCZkkFAmZJBAJmSgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZEMGY2FsbGVyBQJkSwUCZXgFA25pbAQCZkEDCQBmAgUCZFEAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhTQUCZFEFAmV4BQNuaWwFA25pbAQCZlIEAmZMAwkAAAIFBHRoaXMFAmFNAAAFAmRRAwUCZXoJAJQKAgkBAS0BCQBkAgUCZEsFAmZMAAAJAJQKAgAACQEBLQEJAGQCBQJkSwUCZkwEAmRtCAUCZlICXzEEAmRuCAUCZlICXzIEAmZTCQECZGwDBQJkbQUCZG4AAAQCZmwIBQJmUwJfMQQCZGMIBQJmUwJfMgQCZm0JAQJkcAIFAmRrBQJkYwMJAAACBQJmbQUCZm0JAJQKAgkAzggCCQDOCAIJAM4IAgUCY1kFAmZKBQJmQQUCZmwFAmRLCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQNnZXQABAJjSgkBAmRCAQUCZEMEAmZUCAUCY0oCXzEEAmNxCAUCY0oCXzIEAmRFCAUCY0oCXzMEAmJZCAUCY0oCXzQEAmNyCAUCY0oCXzUEAmRrCQECZGQDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmRrBQJkawQCZlUJAPwHBAUCYUwCBGJ1cm4JAMwIAgUCZEUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlkFAmRFBQNuaWwDCQAAAgUCZlUFAmZVBAJmVgkBAmRsAwkBAS0BBQJmVAkBAS0BBQJjcQAABAJmbAgFAmZWAl8xBAJkYwgFAmZWAl8yBAJmbQkBAmRwAgUCZGsFAmRjAwkAAAIFAmZtBQJmbQkAzggCBQJjcgUCZmwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBCWdldE5vTGVzcwICZlcCZlgEAmNKCQECZEIBBQJkQwQCY3AIBQJjSgJfMQQCY3EIBQJjSgJfMgQCZEUIBQJjSgJfMwQCYlkIBQJjSgJfNAQCY3IIBQJjSgJfNQMJAGYCBQJmVwUCY3AJAAIBCQCsAgIJAKwCAgkArAICAhxub0xlc3NUaGVuQW10QXNzZXQgZmFpbGVkOiAgCQCkAwEFAmNwAgMgPCAJAKQDAQUCZlcDCQBmAgUCZlgFAmNxCQACAQkArAICCQCsAgIJAKwCAgIdbm9MZXNzVGhlblByaWNlQXNzZXQgZmFpbGVkOiAJAKQDAQUCY3ECAyA8IAkApAMBBQJmWAQCZGsJAQJkZAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZGsFAmRrBAJmVQkA/AcEBQJhTAIEYnVybgkAzAgCBQJkRQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiWQUCZEUFA25pbAMJAAACBQJmVQUCZlUEAmZZCQECZGwDCQEBLQEFAmNwCQEBLQEFAmNxAAAEAmZsCAUCZlkCXzEEAmRjCAUCZlkCXzIEAmZtCQECZHACBQJkawUCZGMDCQAAAgUCZm0FAmZtCQDOCAIFAmNyBQJmbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQwENdW5zdGFrZUFuZEdldAECZEsEAmZaAwkBAiE9AgkAkAMBCAUCZEMIcGF5bWVudHMAAAkAAgECGE5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAYDCQAAAgUCZloFAmZaBAJiTgkBAmFQAAQCY2EJANkEAQkAkQMCBQJiTgUBcQQCZGsJAQJkZAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZGsFAmRrBAJmUAkA/AcEBQJiaAIHdW5zdGFrZQkAzAgCCQDYBAEFAmNhCQDMCAIFAmRLBQNuaWwFA25pbAMJAAACBQJmUAUCZlAEAmNKCQECYlcECQDYBAEIBQJkQw10cmFuc2FjdGlvbklkCQDYBAEFAmNhBQJkSwgFAmRDBmNhbGxlcgQCY3AIBQJjSgJfMQQCY3EIBQJjSgJfMgQCY2QJAQ1wYXJzZUludFZhbHVlAQgFAmNKAl85BAJjcggFAmNKA18xMAQCZ2EDAwkBAmFOAAYJAAACBQJjZAUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2QGAwkAAAIFAmdhBQJnYQQCZlUJAPwHBAUCYUwCBGJ1cm4JAMwIAgUCZEsFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2EFAmRLBQNuaWwDCQAAAgUCZlUFAmZVBAJnYgkBAmRsAwkBAS0BBQJjcAkBAS0BBQJjcQAABAJmbAgFAmdiAl8xBAJkYwgFAmdiAl8yBAJmbQkBAmRwAgUCZGsFAmRjAwkAAAIFAmZtBQJmbQkAzggCBQJjcgUCZmwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmZPAmdjAmZYBAJmRgMJAQJhTgAGCQAAAgUCYmEFAW4EAmV5CQDMCAIDCQEBIQEFAmZGBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRDCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZXkFAmV5BAJkawkBAmRkAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkawUCZGsEAmZQCQD8BwQFAmJoAgd1bnN0YWtlCQDMCAIJANgEAQUCYmIJAMwIAgUCZk8FA25pbAUDbmlsAwkAAAIFAmZQBQJmUAQCY0oJAQJiVwQJANgEAQgFAmRDDXRyYW5zYWN0aW9uSWQJANgEAQUCYmIFAmZPCAUCZEMGY2FsbGVyBAJjcAgFAmNKAl8xBAJjcQgFAmNKAl8yBAJjcggFAmNKA18xMAQCZ2QJAMwIAgMJAGcCBQJjcAUCZ2MGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ2MFA25pbAIACQDMCAIDCQBnAgUCY3EFAmZYBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZlgFA25pbAIABQNuaWwDCQAAAgUCZ2QFAmdkBAJmVQkA/AcEBQJhTAIEYnVybgkAzAgCBQJmTwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiYgUCZk8FA25pbAMJAAACBQJmVQUCZlUEAmdlCQECZGwDCQEBLQEFAmNwCQEBLQEFAmNxAAAEAmZsCAUCZ2UCXzEEAmRjCAUCZ2UCXzIEAmZtCQECZHACBQJkawUCZGMDCQAAAgUCZm0FAmZtCQDOCAIFAmNyBQJmbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQwEIYWN0aXZhdGUCAmdmAmdnAwkBAiE9AgkApQgBCAUCZEMGY2FsbGVyCQClCAEFAmFMCQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFjAAUCZ2YJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAAUCZ2cFA25pbAIHc3VjY2VzcwJkQwEKcmVmcmVzaEtMcAAEAmdoCQELdmFsdWVPckVsc2UCCQCfCAEFAmFpAAAEAmdpAwkAZwIJAGUCBQZoZWlnaHQFAmdoBQJhbAUEdW5pdAkBAmFJAQkAuQkCCQDMCAIJAKQDAQUCYWwJAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmdpBQJnaQQCZHcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFoAgEwCQECYUsBAgtpbnZhbGlkIGtMcAQCZ2oJAQJkbAMAAAAAAAAEAmdrCAUCZ2oCXzEEAmRjCAUCZ2oCXzIEAmRvAwkBAiE9AgUCZHcFAmRjBQJnawkBAmFJAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmRvCQCmAwEFAmRjCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhUAACZEMBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJ6CQCUCgIFA25pbAkBAmJ5AQUCYnoCZEMBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJIAmJJAmJNBAJiVgkBAmJMAwUCYkgFAmJJBQJiTQkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmJWAAAJAMwIAgkApgMBCQCRAwIFAmJWAAEJAMwIAgkApgMBCQCRAwIFAmJWAAIFA25pbAJkQwEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUUBRgkAlAoCBQNuaWwJAKYDAQkBAUQCBQFFBQFGAmRDARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFIAUkJAJQKAgUDbmlsCQEBRwIJAKcDAQUBSAUBSQJkQwEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiQgJiQwkAlAoCBQNuaWwJAKYDAQkBAmJBAgkApwMBBQJiQgkApwMBBQJiQwJkQwEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmJYAmN0AmN1AmN2AmN3AmN4AVoCY3kCY3oJAJQKAgUDbmlsCQECY3MJBQJiWAUCY3QFAmN1BQJjdgUCY3cFAmN4BQFaBQJjeQUCY3oCZEMBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJiWAJiWQJiWgFaBAJjSgkBAmJXBAUCYlgFAmJZBQJiWgkBEUBleHRyTmF0aXZlKDEwNjIpAQUBWgkAlAoCBQNuaWwJAJwKCggFAmNKAl8xCAUCY0oCXzIIBQJjSgJfMwgFAmNKAl80CAUCY0oCXzUIBQJjSgJfNggFAmNKAl83CQCmAwEIBQJjSgJfOAgFAmNKAl85CAUCY0oDXzEwAmRDAQ1zdGF0c1JFQURPTkxZAAQCYk4JAQJhUAAEAmNhCQDZBAEJAJEDAgUCYk4FAXEEAmdsCQCRAwIFAmJOBQFyBAJnbQkAkQMCBQJiTgUBcwQCY0MJAJEDAgUCYk4FAXYEAmNECQCRAwIFAmJOBQF3BAJiTwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF0BAJiUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF1BAJnbggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjYQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjYQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmdvCQECYnkBBQJnbAQCZ3AJAQJieQEFAmdtBAJncQMJAAACBQJnbgAACQDMCAIFAWUJAMwIAgUBZQkAzAgCBQFlBQNuaWwJAQJiTAMFAmdvBQJncAUCZ24EAmNrAAAEAmdyCQEBRwIJAJEDAgUCZ3EAAQUBYgQCZ3MJAQFHAgkAkQMCBQJncQACBQFiBAJndAkBBXZhbHVlAQkAmggCBQJhTAkBAmF3AQkApQgBBQR0aGlzCQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZ28JAMwIAgkApAMBBQJncAkAzAgCCQCkAwEFAmduCQDMCAIJAKQDAQUCY2sJAMwIAgkApAMBBQJncgkAzAgCCQCkAwEFAmdzCQDMCAIJAKQDAQUCZ3QFA25pbAUBagJkQwEgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkBAmN1BAJiTgkBAmFQAAQCY2EJANkEAQkAkQMCBQJiTgUBcQQCY0EJAJEDAgUCYk4FAXIEAmNiCQDZBAEFAmNBBAJjQgkAkQMCBQJiTgUBcwQCY2MJANkEAQUCY0IEAmJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXQEAmJQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXUEAmNkCQCRAwIFAmJOBQFwBAJnbggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjYQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjYQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmdvCQECYnkBBQJjQQQCZ3AJAQJi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", "chainId": 84, "height": 2371636, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FRXBAjr8ogvGbdfLk69993j7YakHxnLwVVg1Jx9eN54y Next: 84FVkAyqjDhzUEHfRGmWTtaxkn8ndHEJDwa4QzHcHYHv Diff:
OldNewDifferences
11281128 else if ((fX > cq))
11291129 then throw(((("noLessThenPriceAsset failed: " + toString(cq)) + " < ") + toString(fX)))
11301130 else {
1131- let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1132- let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1133- if ((fU == fU))
1131+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1132+ if ((dk == dk))
11341133 then {
1135- let fY = dl(-(cp), -(cq), 0)
1136- let fl = fY._1
1137- let dc = fY._2
1138- let fm = dp(dk, dc)
1139- if ((fm == fm))
1140- then (cr ++ fl)
1134+ let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1135+ if ((fU == fU))
1136+ then {
1137+ let fY = dl(-(cp), -(cq), 0)
1138+ let fl = fY._1
1139+ let dc = fY._2
1140+ let fm = dp(dk, dc)
1141+ if ((fm == fm))
1142+ then (cr ++ fl)
1143+ else throw("Strict value is not equal to itself.")
1144+ }
11411145 else throw("Strict value is not equal to itself.")
11421146 }
11431147 else throw("Strict value is not equal to itself.")
11561160 let bN = aP()
11571161 let ca = fromBase58String(bN[q])
11581162 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1159- let fP = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1160- if ((fP == fP))
1163+ if ((dk == dk))
11611164 then {
1162- let cJ = bW(toBase58String(dC.transactionId), toBase58String(ca), dK, dC.caller)
1163- let cp = cJ._1
1164- let cq = cJ._2
1165- let cd = parseIntValue(cJ._9)
1166- let cr = cJ._10
1167- let ga = if (if (aN())
1168- then true
1169- else (cd == n))
1170- then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
1171- else true
1172- if ((ga == ga))
1165+ let fP = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1166+ if ((fP == fP))
11731167 then {
1174- let fU = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1175- if ((fU == fU))
1168+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(ca), dK, dC.caller)
1169+ let cp = cJ._1
1170+ let cq = cJ._2
1171+ let cd = parseIntValue(cJ._9)
1172+ let cr = cJ._10
1173+ let ga = if (if (aN())
1174+ then true
1175+ else (cd == n))
1176+ then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
1177+ else true
1178+ if ((ga == ga))
11761179 then {
1177- let gb = dl(-(cp), -(cq), 0)
1178- let fl = gb._1
1179- let dc = gb._2
1180- let fm = dp(dk, dc)
1181- if ((fm == fm))
1182- then (cr ++ fl)
1180+ let fU = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1181+ if ((fU == fU))
1182+ then {
1183+ let gb = dl(-(cp), -(cq), 0)
1184+ let fl = gb._1
1185+ let dc = gb._2
1186+ let fm = dp(dk, dc)
1187+ if ((fm == fm))
1188+ then (cr ++ fl)
1189+ else throw("Strict value is not equal to itself.")
1190+ }
11831191 else throw("Strict value is not equal to itself.")
11841192 }
11851193 else throw("Strict value is not equal to itself.")
12061214 if ((ey == ey))
12071215 then {
12081216 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1209- let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1210- if ((fP == fP))
1217+ if ((dk == dk))
12111218 then {
1212- let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fO, dC.caller)
1213- let cp = cJ._1
1214- let cq = cJ._2
1215- let cr = cJ._10
1216- let gd = [if ((cp >= gc))
1217- then true
1218- else throw(makeString(["amount asset amount to receive is less than ", toString(gc)], "")), if ((cq >= fX))
1219- then true
1220- else throw(makeString(["price asset amount to receive is less than ", toString(fX)], ""))]
1221- if ((gd == gd))
1219+ let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1220+ if ((fP == fP))
12221221 then {
1223- let fU = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1224- if ((fU == fU))
1222+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fO, dC.caller)
1223+ let cp = cJ._1
1224+ let cq = cJ._2
1225+ let cr = cJ._10
1226+ let gd = [if ((cp >= gc))
1227+ then true
1228+ else throw(makeString(["amount asset amount to receive is less than ", toString(gc)], "")), if ((cq >= fX))
1229+ then true
1230+ else throw(makeString(["price asset amount to receive is less than ", toString(fX)], ""))]
1231+ if ((gd == gd))
12251232 then {
1226- let ge = dl(-(cp), -(cq), 0)
1227- let fl = ge._1
1228- let dc = ge._2
1229- let fm = dp(dk, dc)
1230- if ((fm == fm))
1231- then (cr ++ fl)
1233+ let fU = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1234+ if ((fU == fU))
1235+ then {
1236+ let ge = dl(-(cp), -(cq), 0)
1237+ let fl = ge._1
1238+ let dc = ge._2
1239+ let fm = dp(dk, dc)
1240+ if ((fm == fm))
1241+ then (cr ++ fl)
1242+ else throw("Strict value is not equal to itself.")
1243+ }
12321244 else throw("Strict value is not equal to itself.")
12331245 }
12341246 else throw("Strict value is not equal to itself.")
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 (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
6868 func J (H,I,K) = toInt(fraction(H, toBigInt(I), d, K))
6969
7070
7171 func L (M,N,O) = fraction(M, N, O)
7272
7373
7474 func P (H) = if ((0 > H))
7575 then -(H)
7676 else H
7777
7878
7979 func Q (H) = if ((e > H))
8080 then -(H)
8181 else H
8282
8383
8484 func R () = "%s__factoryContract"
8585
8686
8787 func S () = "%s__managerPublicKey"
8888
8989
9090 func T () = "%s__pendingManagerPublicKey"
9191
9292
9393 func U () = "%s%s__price__last"
9494
9595
9696 func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], j)
9797
9898
9999 func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
100100
101101
102102 func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
103103
104104
105105 func ac () = "%s__amountAsset"
106106
107107
108108 func ad () = "%s__priceAsset"
109109
110110
111111 let ae = "%s__fee"
112112
113113 let af = fraction(10, b, 10000)
114114
115115 let ag = valueOrElse(getInteger(this, ae), af)
116116
117117 let ah = makeString(["%s", "kLp"], j)
118118
119119 let ai = makeString(["%s", "kLpRefreshedHeight"], j)
120120
121121 let aj = makeString(["%s", "refreshKLpDelay"], j)
122122
123123 let ak = 30
124124
125125 let al = valueOrElse(getInteger(this, aj), ak)
126126
127127 func am () = "%s__factoryConfig"
128128
129129
130130 func an () = "%s%s__matcher__publicKey"
131131
132132
133133 func ao (ap) = (("%s%s%s__" + ap) + "__mappings__poolContract2LpAsset")
134134
135135
136136 func aq (ar,as) = (((("%d%d%s__" + ar) + "__") + as) + "__config")
137137
138138
139139 func at (au) = ("%s%s%s__mappings__baseAsset2internalId__" + au)
140140
141141
142142 func av () = "%s__shutdown"
143143
144144
145145 func aw (ax) = ("%s%s__poolWeight__" + ax)
146146
147147
148148 func ay () = "%s__allowedLpScriptHash"
149149
150150
151151 let az = "%s__feeCollectorAddress"
152152
153153 func aA (aB,aC,aD) = throw(((((("order validation failed: orderValid=" + toString(aB)) + " senderValid=") + toString(aC)) + " matcherValid=") + toString(aD)))
154154
155155
156156 func aE (aF,aG) = valueOrErrorMessage(getString(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
157157
158158
159159 func aH (aF,aG) = valueOrErrorMessage(getInteger(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
160160
161161
162162 func aI (aJ) = throw(makeString(["lp.ride:", aJ], " "))
163163
164164
165165 func aK (aJ) = makeString(["lp.ride:", aJ], " ")
166166
167167
168168 let aL = addressFromStringValue(aE(this, R()))
169169
170170 let aM = addressFromStringValue(aE(aL, az))
171171
172172 func aN () = valueOrElse(getBoolean(aL, av()), false)
173173
174174
175175 func aO () = fromBase58String(aE(aL, an()))
176176
177177
178178 func aP () = {
179179 let aQ = aE(this, ac())
180180 let aR = aE(this, ad())
181181 let as = aH(aL, at(aR))
182182 let ar = aH(aL, at(aQ))
183183 split(aE(aL, aq(toString(ar), toString(as))), j)
184184 }
185185
186186
187187 func aS (aT) = if ((aT == i))
188188 then unit
189189 else fromBase58String(aT)
190190
191191
192192 func aU (aT) = if ((aT == unit))
193193 then i
194194 else toBase58String(value(aT))
195195
196196
197197 func aV (aW) = $Tuple7(addressFromStringValue(aW[o]), parseIntValue(aW[p]), fromBase58String(aW[q]), aS(aW[r]), aS(aW[s]), parseIntValue(aW[t]), parseIntValue(aW[u]))
198198
199199
200200 let aX = aV(aP())
201201
202202 let aY = aX
203203
204204 let aZ = aY._1
205205
206206 let ba = aY._2
207207
208208 let bb = aY._3
209209
210210 let bc = aY._4
211211
212212 let bd = aY._5
213213
214214 let be = aY._6
215215
216216 let bf = aY._7
217217
218218 func bg () = split(aE(aL, am()), j)
219219
220220
221221 let bh = valueOrErrorMessage(addressFromString(bg()[B]), "incorrect staking address")
222222
223223 let bi = valueOrErrorMessage(addressFromString(bg()[C]), "incorrect staking address")
224224
225225 func bj (bk,bl,bm,bn,bo,bp,bq,br,bs,bt) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt)], j)
226226
227227
228228 func bu (bv,bw,bx,bn,bq,br) = makeString(["%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(bn), toString(bq), toString(br)], j)
229229
230230
231231 func by (bz) = if ((bz == "WAVES"))
232232 then wavesBalance(this).available
233233 else assetBalance(this, fromBase58String(bz))
234234
235235
236236 func bA (bB,bC) = fraction(bB, d, bC)
237237
238238
239239 func bD (bB,bC,K) = fraction(bB, d, bC, K)
240240
241241
242242 func bE (bF,bG,bH,bI) = {
243243 let bJ = D(bH, bF)
244244 let bK = D(bI, bG)
245245 bA(bK, bJ)
246246 }
247247
248248
249249 func bL (bH,bI,bM) = {
250250 let bN = aP()
251251 let bO = parseIntValue(bN[t])
252252 let bP = parseIntValue(bN[u])
253253 let bQ = bE(bO, bP, bH, bI)
254254 let bC = D(bH, bO)
255255 let bB = D(bI, bP)
256256 let bR = D(bM, b)
257257 let bS = bA(bC, bR)
258258 let bT = bA(bB, bR)
259259 [bQ, bS, bT]
260260 }
261261
262262
263263 func bU (bH,bI,bM) = {
264264 let bV = bL(bH, bI, bM)
265265 [G(bV[0], b), G(bV[1], b), G(bV[2], b)]
266266 }
267267
268268
269269 func bW (bX,bY,bZ,Z) = {
270270 let bN = aP()
271271 let ca = bN[q]
272272 let cb = bN[r]
273273 let cc = bN[s]
274274 let bF = parseIntValue(bN[t])
275275 let bG = parseIntValue(bN[u])
276276 let cd = bN[p]
277277 let ce = valueOrErrorMessage(assetInfo(fromBase58String(ca)), (("Asset " + ca) + " doesn't exist")).quantity
278278 if ((ca != bY))
279279 then throw("Invalid asset passed.")
280280 else {
281281 let cf = by(cb)
282282 let cg = D(cf, bF)
283283 let ch = by(cc)
284284 let ci = D(ch, bG)
285285 let cj = bA(ci, cg)
286286 let ck = G(cj, b)
287287 let cl = D(bZ, b)
288288 let cm = D(ce, b)
289289 let cn = fraction(cg, cl, cm)
290290 let co = fraction(ci, cl, cm)
291291 let cp = J(cn, bF, FLOOR)
292292 let cq = J(co, bG, FLOOR)
293293 let cr = if ((bX == ""))
294294 then nil
295295 else [ScriptTransfer(Z, cp, if ((cb == "WAVES"))
296296 then unit
297297 else fromBase58String(cb)), ScriptTransfer(Z, cq, if ((cc == "WAVES"))
298298 then unit
299299 else fromBase58String(cc)), StringEntry(ab(toString(Z), bX), bu(cp, cq, bZ, ck, height, lastBlock.timestamp)), IntegerEntry(U(), ck), IntegerEntry(V(height, lastBlock.timestamp), ck)]
300300 $Tuple10(cp, cq, cb, cc, cf, ch, ce, cj, cd, cr)
301301 }
302302 }
303303
304304
305305 func cs (bX,ct,cu,cv,cw,cx,Z,cy,cz) = {
306306 let bN = aP()
307307 let ca = fromBase58String(bN[q])
308308 let cA = bN[r]
309309 let cB = bN[s]
310310 let cC = bN[v]
311311 let cD = bN[w]
312312 let bO = parseIntValue(bN[t])
313313 let bP = parseIntValue(bN[u])
314314 let cd = bN[p]
315315 let ce = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
316316 let cE = toBase58String(valueOrElse(cv, fromBase58String("WAVES")))
317317 let cF = toBase58String(valueOrElse(cx, fromBase58String("WAVES")))
318318 if (if ((cA != cE))
319319 then true
320320 else (cB != cF))
321321 then throw("Invalid amt or price asset passed.")
322322 else {
323323 let cf = if (cy)
324324 then by(cA)
325325 else (by(cA) - cu)
326326 let ch = if (cy)
327327 then by(cB)
328328 else (by(cB) - cw)
329329 let cG = D(cu, bO)
330330 let cH = D(cw, bP)
331331 let cI = bA(cH, cG)
332332 let cg = D(cf, bO)
333333 let ci = D(ch, bP)
334334 let cJ = if ((ce == 0))
335335 then {
336336 let cj = e
337337 let cK = e
338338 let bR = pow((cG * cH), 0, toBigInt(5), 1, 0, DOWN)
339339 $Tuple5(G(bR, b), G(cG, bO), G(cH, bP), bA((ci + cH), (cg + cG)), cK)
340340 }
341341 else {
342342 let cj = bA(ci, cg)
343343 let cK = fraction(Q((cj - cI)), d, cj)
344344 let cL = D(ct, b)
345345 if (if ((cj != e))
346346 then (cK > cL)
347347 else false)
348348 then throw(((("Price slippage " + toString(cK)) + " exceeded the passed limit of ") + toString(cL)))
349349 else {
350350 let cm = D(ce, b)
351351 let cM = fraction(cG, bD(ci, cg, CEILING), d, CEILING)
352352 let cN = fraction(cH, d, bD(ci, cg, FLOOR), CEILING)
353353 let cO = if ((cM > cH))
354354 then $Tuple2(cN, cH)
355355 else $Tuple2(cG, cM)
356356 let cP = cO._1
357357 let cQ = cO._2
358358 let bR = fraction(cm, cQ, ci, FLOOR)
359359 $Tuple5(J(bR, b, FLOOR), J(cP, bO, CEILING), J(cQ, bP, CEILING), cj, cK)
360360 }
361361 }
362362 let cR = cJ._1
363363 let cS = cJ._2
364364 let cT = cJ._3
365365 let ck = G(cJ._4, b)
366366 let cU = G(cJ._5, b)
367367 if ((0 >= cR))
368368 then throw("Invalid calculations. LP calculated is less than zero.")
369369 else {
370370 let cV = if (!(cz))
371371 then 0
372372 else cR
373373 let cW = (cu - cS)
374374 let cX = (cw - cT)
375375 let cY = [IntegerEntry(U(), ck), IntegerEntry(V(height, lastBlock.timestamp), ck), StringEntry(Y(Z, bX), bj(cS, cT, cV, ck, ct, cU, height, lastBlock.timestamp, cW, cX))]
376376 $Tuple13(cR, cV, ck, cf, ch, ce, ca, cd, cY, cW, cX, cv, cx)
377377 }
378378 }
379379 }
380380
381381
382382 func cZ (da,db,ce) = {
383383 let dc = fraction(pow((da * db), 0, toBigInt(5), 1, 18, DOWN), g, ce)
384384 if ((ce == f))
385385 then f
386386 else dc
387387 }
388388
389389
390390 func dd (de,df,dg) = {
391391 let dh = (toBigInt(by(aU(bc))) - de)
392392 let di = (toBigInt(by(aU(bd))) - df)
393393 let dj = (toBigInt(value(assetInfo(bb)).quantity) - dg)
394394 let dk = cZ(dh, di, dj)
395395 dk
396396 }
397397
398398
399399 func dl (dm,dn,dg) = {
400400 let dh = (by(aU(bc)) + dm)
401401 let di = (by(aU(bd)) + dn)
402402 let dj = (value(assetInfo(bb)).quantity + dg)
403403 let dc = cZ(toBigInt(dh), toBigInt(di), toBigInt(dj))
404404 let do = [IntegerEntry(ai, height), StringEntry(ah, toString(dc))]
405405 $Tuple2(do, dc)
406406 }
407407
408408
409409 func dp (dq,dc) = if ((dc >= dq))
410410 then true
411411 else aI(makeString(["updated KLp lower than current KLp", toString(dq), toString(dc)], " "))
412412
413413
414414 func dr (ds) = {
415415 let dt = ds.amount
416416 let du = fraction(ds.amount, ds.price, b, FLOOR)
417417 let dv = if ((ds.orderType == Buy))
418418 then $Tuple2(dt, -(du))
419419 else $Tuple2(-(dt), du)
420420 let dm = dv._1
421421 let dn = dv._2
422422 if (if (if (aN())
423423 then true
424424 else (ba == m))
425425 then true
426426 else (ba == n))
427427 then throw("Exchange operations disabled")
428428 else if (if ((ds.assetPair.amountAsset != bc))
429429 then true
430430 else (ds.assetPair.priceAsset != bd))
431431 then throw("Wrong order assets.")
432432 else {
433433 let dw = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ah), aK("kLp is required"))), aK("invalid kLp"))
434434 let dx = dl(dm, dn, 0)
435435 let dy = dx._1
436436 let dz = dx._2
437437 let dA = (dz >= dw)
438438 dA
439439 }
440440 }
441441
442442
443443 func dB (dC) = if ((size(dC.payments) != 1))
444444 then throw("exactly 1 payment is expected")
445445 else {
446446 let dD = value(dC.payments[0])
447447 let bY = value(dD.assetId)
448448 let dE = dD.amount
449449 let cJ = bW(toBase58String(dC.transactionId), toBase58String(bY), dE, dC.caller)
450450 let cp = cJ._1
451451 let cq = cJ._2
452452 let cd = parseIntValue(cJ._9)
453453 let cr = cJ._10
454454 if (if (aN())
455455 then true
456456 else (cd == n))
457457 then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
458458 else $Tuple5(cp, cq, dE, bY, cr)
459459 }
460460
461461
462462 func dF (dC,ct,cz) = if ((size(dC.payments) != 2))
463463 then throw("exactly 2 payments are expected")
464464 else {
465465 let dG = value(dC.payments[0])
466466 let dH = value(dC.payments[1])
467467 let dI = cs(toBase58String(dC.transactionId), ct, dG.amount, dG.assetId, dH.amount, dH.assetId, toString(dC.caller), false, cz)
468468 let cd = parseIntValue(dI._8)
469469 if (if (if (aN())
470470 then true
471471 else (cd == l))
472472 then true
473473 else (cd == n))
474474 then throw(("Put operation is blocked by admin. Status = " + toString(cd)))
475475 else dI
476476 }
477477
478478
479479 func dJ (dK) = {
480480 let dL = invoke(aL, "emit", [dK], nil)
481481 if ((dL == dL))
482482 then {
483483 let dM = {
484484 let dN = dL
485485 if ($isInstanceOf(dN, "Address"))
486486 then {
487487 let dO = dN
488488 invoke(dO, "emit", [dK], nil)
489489 }
490490 else unit
491491 }
492492 if ((dM == dM))
493493 then dK
494494 else throw("Strict value is not equal to itself.")
495495 }
496496 else throw("Strict value is not equal to itself.")
497497 }
498498
499499
500500 func dP (dK) = {
501501 let dQ = fraction(dK, ag, b)
502502 $Tuple2((dK - dQ), dQ)
503503 }
504504
505505
506506 func dR (dS,dT,Z,aa) = {
507507 let dU = (aa == unit)
508508 let dV = by(aU(bc))
509509 let dW = by(aU(bd))
510510 let dX = if ((dT == bc))
511511 then true
512512 else if ((dT == bd))
513513 then false
514514 else aI("invalid asset")
515515 let dY = if (dU)
516516 then $Tuple2(dV, dW)
517517 else if (dX)
518518 then $Tuple2((dV - dS), dW)
519519 else $Tuple2(dV, (dW - dS))
520520 let dZ = dY._1
521521 let ea = dY._2
522522 let eb = if (dX)
523523 then $Tuple2(dS, 0)
524524 else $Tuple2(0, dS)
525525 let ec = eb._1
526526 let ed = eb._2
527527 let dt = dP(ec)._1
528528 let du = dP(ed)._1
529529 let ee = dP(dS)
530530 let ef = ee._1
531531 let dQ = ee._2
532532 let eg = (dZ + dt)
533533 let eh = (ea + du)
534534 let ei = bA(D(eh, bf), D(eg, be))
535535 let ej = G(ei, b)
536536 let ek = if (dX)
537537 then dZ
538538 else ea
539539 let el = toBigInt(ek)
540540 let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
541541 let en = if ((em > f))
542542 then true
543543 else aI("initial deposit requires all coins")
544544 if ((en == en))
545545 then {
546546 let eo = toBigInt(ef)
547547 let ep = max([0, J(fraction(em, (sqrtBigInt((d + ((eo * d) / el)), 18, 18, DOWN) - d), d), b, FLOOR)])
548548 let cY = if (dU)
549549 then nil
550550 else [IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej), StringEntry(Y(toString(value(Z)), toBase58String(value(aa))), bj(ec, ed, ep, ej, 0, 0, height, lastBlock.timestamp, 0, 0))]
551551 let eq = bA(D(ea, bf), D(dZ, be))
552552 let er = G(eq, b)
553553 let es = {
554554 let et = if (dX)
555555 then $Tuple2(ec, dZ)
556556 else $Tuple2(ed, ea)
557557 let dK = et._1
558558 let eu = et._2
559559 let ev = toInt(fraction(em, toBigInt((dK / 2)), toBigInt(eu)))
560560 fraction((ep - ev), b, ev)
561561 }
562562 $Tuple5(ep, cY, dQ, es, dX)
563563 }
564564 else throw("Strict value is not equal to itself.")
565565 }
566566
567567
568568 func ew (ex,ef,dT,Z,aa) = {
569569 let dU = (aa == unit)
570570 let bN = aP()
571571 let bO = parseIntValue(bN[t])
572572 let bP = parseIntValue(bN[u])
573573 let ey = [if ((dT == bb))
574574 then true
575575 else aI("invalid lp asset")]
576576 if ((ey == ey))
577577 then {
578578 let ez = if ((ex == bc))
579579 then true
580580 else if ((ex == bd))
581581 then false
582582 else aI("invalid asset")
583583 let eA = if (ez)
584584 then toBigInt(by(aU(bc)))
585585 else toBigInt(by(aU(bd)))
586586 let eB = if (ez)
587587 then bO
588588 else bP
589589 let eC = by(aU(bc))
590590 let eD = by(aU(bd))
591591 let eE = if (ez)
592592 then eC
593593 else eD
594594 let eF = toBigInt(eE)
595595 let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
596596 let eG = toBigInt(ef)
597597 let eH = max([0, J(fraction(eA, (d - pow((d - ((eG * d) / em)), 18, h, 0, 18, DOWN)), d), eB, FLOOR)])
598598 let eI = dP(eH)
599599 let eJ = eI._1
600600 let dQ = eI._2
601601 let eK = if (ez)
602602 then $Tuple4(eJ, 0, (eC - eH), eD)
603603 else $Tuple4(0, eJ, eC, (eD - eH))
604604 let eL = eK._1
605605 let eM = eK._2
606606 let eN = eK._3
607607 let eO = eK._4
608608 let ei = bA(D(eO, bf), D(eN, be))
609609 let ej = G(ei, b)
610610 let cY = if (dU)
611611 then nil
612612 else [StringEntry(ab(toString(value(Z)), toBase58String(value(aa))), bu(eL, eM, ef, ej, height, lastBlock.timestamp)), IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej)]
613613 let eq = bA(D(eD, bf), D(eC, be))
614614 let er = G(eq, b)
615615 let es = {
616616 let eP = (toInt(fraction(eA, eG, em)) * 2)
617617 fraction((eJ - eP), b, eP)
618618 }
619619 $Tuple5(eJ, cY, dQ, es, ez)
620620 }
621621 else throw("Strict value is not equal to itself.")
622622 }
623623
624624
625625 func eQ () = {
626626 let dN = getString(S())
627627 if ($isInstanceOf(dN, "String"))
628628 then {
629629 let eR = dN
630630 fromBase58String(eR)
631631 }
632632 else if ($isInstanceOf(dN, "Unit"))
633633 then unit
634634 else throw("Match error")
635635 }
636636
637637
638638 func eS () = {
639639 let dN = getString(T())
640640 if ($isInstanceOf(dN, "String"))
641641 then {
642642 let eR = dN
643643 fromBase58String(eR)
644644 }
645645 else if ($isInstanceOf(dN, "Unit"))
646646 then unit
647647 else throw("Match error")
648648 }
649649
650650
651651 func eT (dC) = {
652652 let dN = eQ()
653653 if ($isInstanceOf(dN, "ByteVector"))
654654 then {
655655 let eU = dN
656656 (dC.callerPublicKey == eU)
657657 }
658658 else if ($isInstanceOf(dN, "Unit"))
659659 then (dC.caller == this)
660660 else throw("Match error")
661661 }
662662
663663
664664 func eV (dC) = {
665665 let eW = throw("Permission denied")
666666 let dN = eQ()
667667 if ($isInstanceOf(dN, "ByteVector"))
668668 then {
669669 let eU = dN
670670 if ((dC.callerPublicKey == eU))
671671 then true
672672 else eW
673673 }
674674 else if ($isInstanceOf(dN, "Unit"))
675675 then if ((dC.caller == this))
676676 then true
677677 else eW
678678 else throw("Match error")
679679 }
680680
681681
682682 @Callable(dC)
683683 func setManager (eX) = {
684684 let eY = eV(dC)
685685 if ((eY == eY))
686686 then {
687687 let eZ = fromBase58String(eX)
688688 if ((eZ == eZ))
689689 then [StringEntry(T(), eX)]
690690 else throw("Strict value is not equal to itself.")
691691 }
692692 else throw("Strict value is not equal to itself.")
693693 }
694694
695695
696696
697697 @Callable(dC)
698698 func confirmManager () = {
699699 let fa = eS()
700700 let fb = if (isDefined(fa))
701701 then true
702702 else throw("No pending manager")
703703 if ((fb == fb))
704704 then {
705705 let fc = if ((dC.callerPublicKey == value(fa)))
706706 then true
707707 else throw("You are not pending manager")
708708 if ((fc == fc))
709709 then [StringEntry(S(), toBase58String(value(fa))), DeleteEntry(T())]
710710 else throw("Strict value is not equal to itself.")
711711 }
712712 else throw("Strict value is not equal to itself.")
713713 }
714714
715715
716716
717717 @Callable(dC)
718718 func put (ct,fd) = if ((0 > ct))
719719 then throw("Invalid slippageTolerance passed")
720720 else {
721721 let dI = dF(dC, ct, true)
722722 let cV = dI._2
723723 let ca = dI._7
724724 let cr = dI._9
725725 let cW = dI._10
726726 let cX = dI._11
727727 let fe = dI._12
728728 let ff = dI._13
729729 let dG = toBigInt(value(dC.payments[0]).amount)
730730 let dH = toBigInt(value(dC.payments[1]).amount)
731731 let dk = dd(dG, dH, toBigInt(0))
732732 if ((dk == dk))
733733 then {
734734 let dL = invoke(aL, "emit", [cV], nil)
735735 if ((dL == dL))
736736 then {
737737 let dM = {
738738 let dN = dL
739739 if ($isInstanceOf(dN, "Address"))
740740 then {
741741 let dO = dN
742742 invoke(dO, "emit", [cV], nil)
743743 }
744744 else unit
745745 }
746746 if ((dM == dM))
747747 then {
748748 let fg = if ((cW > 0))
749749 then invoke(bi, "put", nil, [AttachedPayment(fe, cW)])
750750 else nil
751751 if ((fg == fg))
752752 then {
753753 let fh = if ((cX > 0))
754754 then invoke(bi, "put", nil, [AttachedPayment(ff, cX)])
755755 else nil
756756 if ((fh == fh))
757757 then {
758758 let fi = if (fd)
759759 then {
760760 let fj = invoke(bh, "stake", nil, [AttachedPayment(ca, cV)])
761761 if ((fj == fj))
762762 then nil
763763 else throw("Strict value is not equal to itself.")
764764 }
765765 else [ScriptTransfer(dC.caller, cV, ca)]
766766 let fk = dl(0, 0, 0)
767767 if ((fk == fk))
768768 then {
769769 let dc = fk._2
770770 let fl = fk._1
771771 let fm = dp(dk, dc)
772772 if ((fm == fm))
773773 then ((cr ++ fi) ++ fl)
774774 else throw("Strict value is not equal to itself.")
775775 }
776776 else throw("Strict value is not equal to itself.")
777777 }
778778 else throw("Strict value is not equal to itself.")
779779 }
780780 else throw("Strict value is not equal to itself.")
781781 }
782782 else throw("Strict value is not equal to itself.")
783783 }
784784 else throw("Strict value is not equal to itself.")
785785 }
786786 else throw("Strict value is not equal to itself.")
787787 }
788788
789789
790790
791791 @Callable(dC)
792792 func putForFree (fn) = if ((0 > fn))
793793 then throw("Invalid value passed")
794794 else {
795795 let dI = dF(dC, fn, false)
796796 let cr = dI._9
797797 let dG = toBigInt(value(dC.payments[0]).amount)
798798 let dH = toBigInt(value(dC.payments[1]).amount)
799799 let dk = dd(dG, dH, toBigInt(0))
800800 if ((dk == dk))
801801 then {
802802 let fo = dl(0, 0, 0)
803803 let fl = fo._1
804804 let dc = fo._2
805805 let fm = dp(dk, dc)
806806 if ((fm == fm))
807807 then (cr ++ fl)
808808 else throw("Strict value is not equal to itself.")
809809 }
810810 else throw("Strict value is not equal to itself.")
811811 }
812812
813813
814814
815815 @Callable(dC)
816816 func putOneTkn (fp,fq) = {
817817 let fr = {
818818 let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
819819 if ($isInstanceOf(fs, "Boolean"))
820820 then fs
821821 else throw(($getType(fs) + " couldn't be cast to Boolean"))
822822 }
823823 let ft = if (if (if (aN())
824824 then true
825825 else (ba == l))
826826 then true
827827 else (ba == n))
828828 then true
829829 else fr
830830 let ey = [if (if (!(ft))
831831 then true
832832 else eT(dC))
833833 then true
834834 else aI("put operation is blocked by admin"), if ((size(dC.payments) == 1))
835835 then true
836836 else aI("exactly 1 payment are expected")]
837837 if ((ey == ey))
838838 then {
839839 let fu = dC.payments[0]
840840 let dT = fu.assetId
841841 let dS = fu.amount
842842 let dk = if ((dT == bc))
843843 then dd(toBigInt(dS), toBigInt(0), toBigInt(0))
844844 else if ((dT == bd))
845845 then dd(toBigInt(0), toBigInt(dS), toBigInt(0))
846846 else aI("payment asset is not supported")
847847 if ((dk == dk))
848848 then {
849849 let Z = dC.caller
850850 let aa = dC.transactionId
851851 let fv = dR(dS, dT, Z, aa)
852852 if ((fv == fv))
853853 then {
854854 let dX = fv._5
855855 let fw = fv._4
856856 let dQ = fv._3
857857 let cY = fv._2
858858 let fx = fv._1
859859 let fy = if (if ((fp > 0))
860860 then (fp > fx)
861861 else false)
862862 then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
863863 else fx
864864 let dL = dJ(fy)
865865 if ((dL == dL))
866866 then {
867867 let fi = if (fq)
868868 then {
869869 let fz = invoke(bh, "stake", nil, [AttachedPayment(bb, fy)])
870870 if ((fz == fz))
871871 then nil
872872 else throw("Strict value is not equal to itself.")
873873 }
874874 else [ScriptTransfer(dC.caller, fy, bb)]
875875 let fA = if ((dQ > 0))
876876 then [ScriptTransfer(aM, dQ, dT)]
877877 else nil
878878 let fB = if ((this == aM))
879879 then $Tuple2(0, 0)
880880 else if (dX)
881881 then $Tuple2(-(dQ), 0)
882882 else $Tuple2(0, -(dQ))
883883 let dm = fB._1
884884 let dn = fB._2
885885 let fC = dl(dm, dn, 0)
886886 let fl = fC._1
887887 let dc = fC._2
888888 let dw = value(getString(ah))
889889 let fm = dp(dk, dc)
890890 if ((fm == fm))
891891 then $Tuple2((((cY ++ fi) ++ fA) ++ fl), fy)
892892 else throw("Strict value is not equal to itself.")
893893 }
894894 else throw("Strict value is not equal to itself.")
895895 }
896896 else throw("Strict value is not equal to itself.")
897897 }
898898 else throw("Strict value is not equal to itself.")
899899 }
900900 else throw("Strict value is not equal to itself.")
901901 }
902902
903903
904904
905905 @Callable(dC)
906906 func putOneTknREADONLY (dT,dS) = {
907907 let fD = dR(dS, aS(dT), unit, unit)
908908 let fx = fD._1
909909 let cY = fD._2
910910 let dQ = fD._3
911911 let fw = fD._4
912912 let dX = fD._5
913913 $Tuple2(nil, $Tuple3(fx, dQ, fw))
914914 }
915915
916916
917917
918918 @Callable(dC)
919919 func getOneTkn (fE,fp) = {
920920 let fr = {
921921 let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
922922 if ($isInstanceOf(fs, "Boolean"))
923923 then fs
924924 else throw(($getType(fs) + " couldn't be cast to Boolean"))
925925 }
926926 let fF = if (if (aN())
927927 then true
928928 else (ba == n))
929929 then true
930930 else fr
931931 let ey = [if (if (!(fF))
932932 then true
933933 else eT(dC))
934934 then true
935935 else aI("get operation is blocked by admin"), if ((size(dC.payments) == 1))
936936 then true
937937 else aI("exactly 1 payment are expected")]
938938 if ((ey == ey))
939939 then {
940940 let ex = aS(fE)
941941 let fu = dC.payments[0]
942942 let dT = fu.assetId
943943 let ef = fu.amount
944944 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
945945 if ((dk == dk))
946946 then {
947947 let Z = dC.caller
948948 let aa = dC.transactionId
949949 let fG = ew(ex, ef, dT, Z, aa)
950950 if ((fG == fG))
951951 then {
952952 let ez = fG._5
953953 let fw = fG._4
954954 let dQ = fG._3
955955 let cY = fG._2
956956 let fH = fG._1
957957 let dK = if (if ((fp > 0))
958958 then (fp > fH)
959959 else false)
960960 then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
961961 else fH
962962 let fI = invoke(aL, "burn", [ef], [AttachedPayment(dT, ef)])
963963 if ((fI == fI))
964964 then {
965965 let fJ = [ScriptTransfer(Z, dK, ex)]
966966 let fA = if ((dQ > 0))
967967 then [ScriptTransfer(aM, dQ, ex)]
968968 else nil
969969 let fK = {
970970 let fL = if ((this == aM))
971971 then 0
972972 else dQ
973973 if (ez)
974974 then $Tuple2(-((dK + fL)), 0)
975975 else $Tuple2(0, -((dK + fL)))
976976 }
977977 let dm = fK._1
978978 let dn = fK._2
979979 let fM = dl(dm, dn, 0)
980980 let fl = fM._1
981981 let dc = fM._2
982982 let fm = dp(dk, dc)
983983 if ((fm == fm))
984984 then $Tuple2((((cY ++ fJ) ++ fA) ++ fl), dK)
985985 else throw("Strict value is not equal to itself.")
986986 }
987987 else throw("Strict value is not equal to itself.")
988988 }
989989 else throw("Strict value is not equal to itself.")
990990 }
991991 else throw("Strict value is not equal to itself.")
992992 }
993993 else throw("Strict value is not equal to itself.")
994994 }
995995
996996
997997
998998 @Callable(dC)
999999 func getOneTknREADONLY (ex,ef) = {
10001000 let fN = ew(aS(ex), ef, bb, unit, unit)
10011001 let fH = fN._1
10021002 let cY = fN._2
10031003 let dQ = fN._3
10041004 let fw = fN._4
10051005 let ez = fN._5
10061006 $Tuple2(nil, $Tuple3(fH, dQ, fw))
10071007 }
10081008
10091009
10101010
10111011 @Callable(dC)
10121012 func unstakeAndGetOneTkn (fO,fE,fp) = {
10131013 let fr = {
10141014 let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10151015 if ($isInstanceOf(fs, "Boolean"))
10161016 then fs
10171017 else throw(($getType(fs) + " couldn't be cast to Boolean"))
10181018 }
10191019 let fF = if (if (aN())
10201020 then true
10211021 else (ba == n))
10221022 then true
10231023 else fr
10241024 let ey = [if (if (!(fF))
10251025 then true
10261026 else eT(dC))
10271027 then true
10281028 else aI("get operation is blocked by admin"), if ((size(dC.payments) == 0))
10291029 then true
10301030 else aI("no payments are expected")]
10311031 if ((ey == ey))
10321032 then {
10331033 let ex = aS(fE)
10341034 let Z = dC.caller
10351035 let aa = dC.transactionId
10361036 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
10371037 let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
10381038 if ((fP == fP))
10391039 then {
10401040 let fQ = ew(ex, fO, bb, Z, aa)
10411041 if ((fQ == fQ))
10421042 then {
10431043 let ez = fQ._5
10441044 let fw = fQ._4
10451045 let dQ = fQ._3
10461046 let cY = fQ._2
10471047 let fH = fQ._1
10481048 let dK = if (if ((fp > 0))
10491049 then (fp > fH)
10501050 else false)
10511051 then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
10521052 else fH
10531053 let fI = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
10541054 if ((fI == fI))
10551055 then {
10561056 let fJ = [ScriptTransfer(dC.caller, dK, ex)]
10571057 let fA = if ((dQ > 0))
10581058 then [ScriptTransfer(aM, dQ, ex)]
10591059 else nil
10601060 let fR = {
10611061 let fL = if ((this == aM))
10621062 then 0
10631063 else dQ
10641064 if (ez)
10651065 then $Tuple2(-((dK + fL)), 0)
10661066 else $Tuple2(0, -((dK + fL)))
10671067 }
10681068 let dm = fR._1
10691069 let dn = fR._2
10701070 let fS = dl(dm, dn, 0)
10711071 let fl = fS._1
10721072 let dc = fS._2
10731073 let fm = dp(dk, dc)
10741074 if ((fm == fm))
10751075 then $Tuple2((((cY ++ fJ) ++ fA) ++ fl), dK)
10761076 else throw("Strict value is not equal to itself.")
10771077 }
10781078 else throw("Strict value is not equal to itself.")
10791079 }
10801080 else throw("Strict value is not equal to itself.")
10811081 }
10821082 else throw("Strict value is not equal to itself.")
10831083 }
10841084 else throw("Strict value is not equal to itself.")
10851085 }
10861086
10871087
10881088
10891089 @Callable(dC)
10901090 func get () = {
10911091 let cJ = dB(dC)
10921092 let fT = cJ._1
10931093 let cq = cJ._2
10941094 let dE = cJ._3
10951095 let bY = cJ._4
10961096 let cr = cJ._5
10971097 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
10981098 if ((dk == dk))
10991099 then {
11001100 let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
11011101 if ((fU == fU))
11021102 then {
11031103 let fV = dl(-(fT), -(cq), 0)
11041104 let fl = fV._1
11051105 let dc = fV._2
11061106 let fm = dp(dk, dc)
11071107 if ((fm == fm))
11081108 then (cr ++ fl)
11091109 else throw("Strict value is not equal to itself.")
11101110 }
11111111 else throw("Strict value is not equal to itself.")
11121112 }
11131113 else throw("Strict value is not equal to itself.")
11141114 }
11151115
11161116
11171117
11181118 @Callable(dC)
11191119 func getNoLess (fW,fX) = {
11201120 let cJ = dB(dC)
11211121 let cp = cJ._1
11221122 let cq = cJ._2
11231123 let dE = cJ._3
11241124 let bY = cJ._4
11251125 let cr = cJ._5
11261126 if ((fW > cp))
11271127 then throw(((("noLessThenAmtAsset failed: " + toString(cp)) + " < ") + toString(fW)))
11281128 else if ((fX > cq))
11291129 then throw(((("noLessThenPriceAsset failed: " + toString(cq)) + " < ") + toString(fX)))
11301130 else {
1131- let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1132- let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1133- if ((fU == fU))
1131+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1132+ if ((dk == dk))
11341133 then {
1135- let fY = dl(-(cp), -(cq), 0)
1136- let fl = fY._1
1137- let dc = fY._2
1138- let fm = dp(dk, dc)
1139- if ((fm == fm))
1140- then (cr ++ fl)
1134+ let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1135+ if ((fU == fU))
1136+ then {
1137+ let fY = dl(-(cp), -(cq), 0)
1138+ let fl = fY._1
1139+ let dc = fY._2
1140+ let fm = dp(dk, dc)
1141+ if ((fm == fm))
1142+ then (cr ++ fl)
1143+ else throw("Strict value is not equal to itself.")
1144+ }
11411145 else throw("Strict value is not equal to itself.")
11421146 }
11431147 else throw("Strict value is not equal to itself.")
11441148 }
11451149 }
11461150
11471151
11481152
11491153 @Callable(dC)
11501154 func unstakeAndGet (dK) = {
11511155 let fZ = if ((size(dC.payments) != 0))
11521156 then throw("No payments are expected")
11531157 else true
11541158 if ((fZ == fZ))
11551159 then {
11561160 let bN = aP()
11571161 let ca = fromBase58String(bN[q])
11581162 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1159- let fP = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1160- if ((fP == fP))
1163+ if ((dk == dk))
11611164 then {
1162- let cJ = bW(toBase58String(dC.transactionId), toBase58String(ca), dK, dC.caller)
1163- let cp = cJ._1
1164- let cq = cJ._2
1165- let cd = parseIntValue(cJ._9)
1166- let cr = cJ._10
1167- let ga = if (if (aN())
1168- then true
1169- else (cd == n))
1170- then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
1171- else true
1172- if ((ga == ga))
1165+ let fP = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1166+ if ((fP == fP))
11731167 then {
1174- let fU = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1175- if ((fU == fU))
1168+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(ca), dK, dC.caller)
1169+ let cp = cJ._1
1170+ let cq = cJ._2
1171+ let cd = parseIntValue(cJ._9)
1172+ let cr = cJ._10
1173+ let ga = if (if (aN())
1174+ then true
1175+ else (cd == n))
1176+ then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
1177+ else true
1178+ if ((ga == ga))
11761179 then {
1177- let gb = dl(-(cp), -(cq), 0)
1178- let fl = gb._1
1179- let dc = gb._2
1180- let fm = dp(dk, dc)
1181- if ((fm == fm))
1182- then (cr ++ fl)
1180+ let fU = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1181+ if ((fU == fU))
1182+ then {
1183+ let gb = dl(-(cp), -(cq), 0)
1184+ let fl = gb._1
1185+ let dc = gb._2
1186+ let fm = dp(dk, dc)
1187+ if ((fm == fm))
1188+ then (cr ++ fl)
1189+ else throw("Strict value is not equal to itself.")
1190+ }
11831191 else throw("Strict value is not equal to itself.")
11841192 }
11851193 else throw("Strict value is not equal to itself.")
11861194 }
11871195 else throw("Strict value is not equal to itself.")
11881196 }
11891197 else throw("Strict value is not equal to itself.")
11901198 }
11911199 else throw("Strict value is not equal to itself.")
11921200 }
11931201
11941202
11951203
11961204 @Callable(dC)
11971205 func unstakeAndGetNoLess (fO,gc,fX) = {
11981206 let fF = if (aN())
11991207 then true
12001208 else (ba == n)
12011209 let ey = [if (!(fF))
12021210 then true
12031211 else throw("get operation is blocked by admin"), if ((size(dC.payments) == 0))
12041212 then true
12051213 else throw("no payments are expected")]
12061214 if ((ey == ey))
12071215 then {
12081216 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1209- let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1210- if ((fP == fP))
1217+ if ((dk == dk))
12111218 then {
1212- let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fO, dC.caller)
1213- let cp = cJ._1
1214- let cq = cJ._2
1215- let cr = cJ._10
1216- let gd = [if ((cp >= gc))
1217- then true
1218- else throw(makeString(["amount asset amount to receive is less than ", toString(gc)], "")), if ((cq >= fX))
1219- then true
1220- else throw(makeString(["price asset amount to receive is less than ", toString(fX)], ""))]
1221- if ((gd == gd))
1219+ let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1220+ if ((fP == fP))
12221221 then {
1223- let fU = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1224- if ((fU == fU))
1222+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fO, dC.caller)
1223+ let cp = cJ._1
1224+ let cq = cJ._2
1225+ let cr = cJ._10
1226+ let gd = [if ((cp >= gc))
1227+ then true
1228+ else throw(makeString(["amount asset amount to receive is less than ", toString(gc)], "")), if ((cq >= fX))
1229+ then true
1230+ else throw(makeString(["price asset amount to receive is less than ", toString(fX)], ""))]
1231+ if ((gd == gd))
12251232 then {
1226- let ge = dl(-(cp), -(cq), 0)
1227- let fl = ge._1
1228- let dc = ge._2
1229- let fm = dp(dk, dc)
1230- if ((fm == fm))
1231- then (cr ++ fl)
1233+ let fU = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1234+ if ((fU == fU))
1235+ then {
1236+ let ge = dl(-(cp), -(cq), 0)
1237+ let fl = ge._1
1238+ let dc = ge._2
1239+ let fm = dp(dk, dc)
1240+ if ((fm == fm))
1241+ then (cr ++ fl)
1242+ else throw("Strict value is not equal to itself.")
1243+ }
12321244 else throw("Strict value is not equal to itself.")
12331245 }
12341246 else throw("Strict value is not equal to itself.")
12351247 }
12361248 else throw("Strict value is not equal to itself.")
12371249 }
12381250 else throw("Strict value is not equal to itself.")
12391251 }
12401252 else throw("Strict value is not equal to itself.")
12411253 }
12421254
12431255
12441256
12451257 @Callable(dC)
12461258 func activate (gf,gg) = if ((toString(dC.caller) != toString(aL)))
12471259 then throw("permissions denied")
12481260 else $Tuple2([StringEntry(ac(), gf), StringEntry(ad(), gg)], "success")
12491261
12501262
12511263
12521264 @Callable(dC)
12531265 func refreshKLp () = {
12541266 let gh = valueOrElse(getInteger(ai), 0)
12551267 let gi = if (((height - gh) >= al))
12561268 then unit
12571269 else aI(makeString([toString(al), " blocks have not passed since the previous call"], ""))
12581270 if ((gi == gi))
12591271 then {
12601272 let dw = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ah), "0")), aK("invalid kLp"))
12611273 let gj = dl(0, 0, 0)
12621274 let gk = gj._1
12631275 let dc = gj._2
12641276 let do = if ((dw != dc))
12651277 then gk
12661278 else aI("nothing to refresh")
12671279 $Tuple2(do, toString(dc))
12681280 }
12691281 else throw("Strict value is not equal to itself.")
12701282 }
12711283
12721284
12731285
12741286 @Callable(dC)
12751287 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aP())
12761288
12771289
12781290
12791291 @Callable(dC)
12801292 func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
12811293
12821294
12831295
12841296 @Callable(dC)
12851297 func calcPricesWrapperREADONLY (bH,bI,bM) = {
12861298 let bV = bL(bH, bI, bM)
12871299 $Tuple2(nil, [toString(bV[0]), toString(bV[1]), toString(bV[2])])
12881300 }
12891301
12901302
12911303
12921304 @Callable(dC)
12931305 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
12941306
12951307
12961308
12971309 @Callable(dC)
12981310 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
12991311
13001312
13011313
13021314 @Callable(dC)
13031315 func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
13041316
13051317
13061318
13071319 @Callable(dC)
13081320 func estimatePutOperationWrapperREADONLY (bX,ct,cu,cv,cw,cx,Z,cy,cz) = $Tuple2(nil, cs(bX, ct, cu, cv, cw, cx, Z, cy, cz))
13091321
13101322
13111323
13121324 @Callable(dC)
13131325 func estimateGetOperationWrapperREADONLY (bX,bY,bZ,Z) = {
13141326 let cJ = bW(bX, bY, bZ, addressFromStringValue(Z))
13151327 $Tuple2(nil, $Tuple10(cJ._1, cJ._2, cJ._3, cJ._4, cJ._5, cJ._6, cJ._7, toString(cJ._8), cJ._9, cJ._10))
13161328 }
13171329
13181330
13191331
13201332 @Callable(dC)
13211333 func statsREADONLY () = {
13221334 let bN = aP()
13231335 let ca = fromBase58String(bN[q])
13241336 let gl = bN[r]
13251337 let gm = bN[s]
13261338 let cC = bN[v]
13271339 let cD = bN[w]
13281340 let bO = parseIntValue(bN[t])
13291341 let bP = parseIntValue(bN[u])
13301342 let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
13311343 let go = by(gl)
13321344 let gp = by(gm)
13331345 let gq = if ((gn == 0))
13341346 then [e, e, e]
13351347 else bL(go, gp, gn)
13361348 let ck = 0
13371349 let gr = G(gq[1], b)
13381350 let gs = G(gq[2], b)
13391351 let gt = value(getInteger(aL, aw(toString(this))))
13401352 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(go), toString(gp), toString(gn), toString(ck), toString(gr), toString(gs), toString(gt)], j))
13411353 }
13421354
13431355
13441356
13451357 @Callable(dC)
13461358 func evaluatePutByAmountAssetREADONLY (cu) = {
13471359 let bN = aP()
13481360 let ca = fromBase58String(bN[q])
13491361 let cA = bN[r]
13501362 let cb = fromBase58String(cA)
13511363 let cB = bN[s]
13521364 let cc = fromBase58String(cB)
13531365 let bO = parseIntValue(bN[t])
13541366 let bP = parseIntValue(bN[u])
13551367 let cd = bN[p]
13561368 let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
13571369 let go = by(cA)
13581370 let gp = by(cB)
13591371 let bJ = D(go, bO)
13601372 let bK = D(gp, bP)
13611373 let cj = if ((gn == 0))
13621374 then e
13631375 else bA(bK, bJ)
13641376 let cG = D(cu, bO)
13651377 let cH = fraction(cG, cj, d)
13661378 let cw = G(cH, bP)
13671379 let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
13681380 let cR = dI._1
13691381 let gu = dI._3
13701382 let cf = dI._4
13711383 let ch = dI._5
13721384 let ce = dI._6
13731385 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cR), toString(G(cj, b)), toString(cf), toString(ch), toString(ce), cd, toString(cu), toString(cw)], j))
13741386 }
13751387
13761388
13771389
13781390 @Callable(dC)
13791391 func evaluatePutByPriceAssetREADONLY (cw) = {
13801392 let bN = aP()
13811393 let ca = fromBase58String(bN[q])
13821394 let cA = bN[r]
13831395 let cb = fromBase58String(cA)
13841396 let cB = bN[s]
13851397 let cc = fromBase58String(cB)
13861398 let bO = parseIntValue(bN[t])
13871399 let bP = parseIntValue(bN[u])
13881400 let cd = bN[p]
13891401 let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
13901402 let gv = by(cA)
13911403 let gw = by(cB)
13921404 let gx = D(gv, bO)
13931405 let gy = D(gw, bP)
13941406 let cj = if ((gn == 0))
13951407 then e
13961408 else bA(gy, gx)
13971409 let cH = D(cw, bP)
13981410 let cG = fraction(cH, d, cj)
13991411 let cu = G(cG, bO)
14001412 let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
14011413 let cR = dI._1
14021414 let gu = dI._3
14031415 let cf = dI._4
14041416 let ch = dI._5
14051417 let ce = dI._6
14061418 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cR), toString(G(cj, b)), toString(cf), toString(ch), toString(ce), cd, toString(cu), toString(cw)], j))
14071419 }
14081420
14091421
14101422
14111423 @Callable(dC)
14121424 func evaluateGetREADONLY (gz,gA) = {
14131425 let cJ = bW("", gz, gA, this)
14141426 let cp = cJ._1
14151427 let cq = cJ._2
14161428 let cf = cJ._5
14171429 let ch = cJ._6
14181430 let ce = cJ._7
14191431 let ck = cJ._8
14201432 let cd = parseIntValue(cJ._9)
14211433 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cp), toString(cq), toString(cf), toString(ch), toString(ce), toString(ck), toString(cd)], j))
14221434 }
14231435
14241436
14251437 @Verifier(gB)
14261438 func gC () = {
14271439 let gD = {
14281440 let dN = eQ()
14291441 if ($isInstanceOf(dN, "ByteVector"))
14301442 then {
14311443 let eU = dN
14321444 eU
14331445 }
14341446 else if ($isInstanceOf(dN, "Unit"))
14351447 then gB.senderPublicKey
14361448 else throw("Match error")
14371449 }
14381450 let dN = gB
14391451 if ($isInstanceOf(dN, "Order"))
14401452 then {
14411453 let ds = dN
14421454 let gE = aO()
14431455 let aB = dr(ds)
14441456 let aC = sigVerify(ds.bodyBytes, ds.proofs[0], ds.senderPublicKey)
14451457 let aD = sigVerify(ds.bodyBytes, ds.proofs[1], gE)
14461458 if (if (if (aB)
14471459 then aC
14481460 else false)
14491461 then aD
14501462 else false)
14511463 then true
14521464 else aA(aB, aC, aD)
14531465 }
14541466 else if ($isInstanceOf(dN, "SetScriptTransaction"))
14551467 then {
14561468 let eR = dN
14571469 let gF = blake2b256(value(eR.script))
14581470 let gG = fromBase64String(value(getString(aL, ay())))
14591471 let gH = scriptHash(this)
14601472 if (if ((gG == gF))
14611473 then (gH != gF)
14621474 else false)
14631475 then true
14641476 else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
14651477 }
14661478 else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
14671479 }
14681480

github/deemru/w8io/026f985 
128.31 ms