tx · GFdeJVWFnamfaqrJDpURZp4aMt1XuoETqsAGxb28aFpN

3N6wAa7PMFZJu4Zrmp3avXmMnRTrRpMM9Lh:  -0.03500000 Waves

2022.12.08 10:06 [2351052] smart account 3N6wAa7PMFZJu4Zrmp3avXmMnRTrRpMM9Lh > SELF 0.00000000 Waves

{ "type": 13, "id": "GFdeJVWFnamfaqrJDpURZp4aMt1XuoETqsAGxb28aFpN", "fee": 3500000, "feeAssetId": null, "timestamp": 1670483197203, "version": 1, "sender": "3N6wAa7PMFZJu4Zrmp3avXmMnRTrRpMM9Lh", "senderPublicKey": "Cr8D7eozSzJh7XHsYTjBinPpo3SS83BrCGiBAJsjGxBo", "proofs": [ "4N9Whbh8CbfrQpLjEf5Tr5rBT3PQ7smkBPT3QuYqAwrBcCFeAiszgkHS8q5jo5GMZNuDRB68LvVkxTVzPiX1DDoL" ], "script": "base64:BgKDLQgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIQa2V5RmFjdG9yeUNvbmZpZyINa2V5TWF0Y2hlclB1YiIpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMiE3Bvb2xDb250cmFjdEFkZHJlc3MiDWtleVBvb2xDb25maWciCWlBbXRBc3NldCILaVByaWNlQXNzZXQiH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQiDGJhc2VBc3NldFN0ciITa2V5QWxsUG9vbHNTaHV0ZG93biINa2V5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDgwNjM4MjI5Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIUY2FsY1ByaWNlQmlnSW50Um91bmQiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiD2NhbGN1bGF0ZVByaWNlcyIGcHJpY2VzIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCIJbHBBc3NldElkIglhbUFzc2V0SWQiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIKbHBFbWlzc2lvbiIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4Ig1scEVtaXNzaW9uWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiFGVzdGltYXRlUHV0T3BlcmF0aW9uIhFzbGlwcGFnZVRvbGVyYW5jZSIMaW5BbUFzc2V0QW10IgtpbkFtQXNzZXRJZCIMaW5QckFzc2V0QW10IgtpblByQXNzZXRJZCIKaXNFdmFsdWF0ZSIGZW1pdExwIgxhbUFzc2V0SWRTdHIiDHByQXNzZXRJZFN0ciILaUFtdEFzc2V0SWQiDWlQcmljZUFzc2V0SWQiDmluQW1Bc3NldElkU3RyIg5pblByQXNzZXRJZFN0ciIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIDcmVzIgtzbGlwcGFnZVgxOCIUc2xpcHBhZ2VUb2xlcmFuY2VYMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiC2NvbW1vblN0YXRlIgdjYWxjS0xwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiCnVwZGF0ZWRLTHAiDmNhbGNDdXJyZW50S0xwIhBhbW91bnRBc3NldERlbHRhIg9wcmljZUFzc2V0RGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCmN1cnJlbnRLTHAiEnJlZnJlc2hLTHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiB2FjdGlvbnMiEnZhbGlkYXRlVXBkYXRlZEtMcCIGb2xkS0xwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjA4MDMyMTAxNSIDa0xwIg0kdDAyMTQ4NjIxNTg2Ig11bnVzZWRBY3Rpb25zIgZrTHBOZXciDGlzT3JkZXJWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjQyNzEyNDU2NCIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyNDU2ODI0NzE3IhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyINJHQwMjQ4MzkyNDg5OCINcGF5bWVudEFtb3VudCIQYW1vdW50QmFsYW5jZU5ldyIPcHJpY2VCYWxhbmNlTmV3IgtwcmljZU5ld1gxOCIIcHJpY2VOZXciDnBheW1lbnRCYWxhbmNlIhRwYXltZW50QmFsYW5jZUJpZ0ludCIMc3VwcGx5QmlnSW50IgtjaGVjaFN1cHBseSINZGVwb3NpdEJpZ0ludCILaXNzdWVBbW91bnQiC3ByaWNlT2xkWDE4IghwcmljZU9sZCIEbG9zcyINJHQwMjYzNzUyNjU0MiIHYmFsYW5jZSIPaXNzdWVBbW91bnRCb3RoIg9jYWxjR2V0T25lVG9rZW4iCm91dEFzc2V0SWQiBmNoZWNrcyIQb3V0SW5BbW91bnRBc3NldCINYmFsYW5jZUJpZ0ludCIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiCm91dEJhbGFuY2UiEG91dEJhbGFuY2VCaWdJbnQiDnJlZGVlbWVkQmlnSW50IglhbW91bnRSYXciDSR0MDI4MTQ0MjgxOTQiC3RvdGFsQW1vdW50Ig0kdDAyODE5ODI4NDI0IgtvdXRBbUFtb3VudCILb3V0UHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IhhhbW91bnRCb3RoSW5QYXltZW50QXNzZXQiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0Iglpc01hbmFnZXIiAnBrIgttdXN0TWFuYWdlciICcGQiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgtjaGVja0NhbGxlciIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iD3Nob3VsZEF1dG9TdGFrZSIEYW1JZCIEcHJJZCIMc2xpcHBhZ2VBSW52IgxzbGlwcGFnZVBJbnYiCmxwVHJhbnNmZXIiC3NscFN0YWtlSW52Ig0kdDAzMjk1MjMzNDE0IhFyZWZyZXNoS0xwQWN0aW9ucyIRaXNVcGRhdGVkS0xwVmFsaWQiC21heFNsaXBwYWdlIg0kdDAzMzk3NjM0MDQxIgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiAUAiDWlzUHV0RGlzYWJsZWQiB3BheW1lbnQiDSR0MDM1MjI2MzUzNzgiBWJvbnVzIhNlbWl0QW1vdW50RXN0aW1hdGVkIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwMzU5NjQzNjE2MSINJHQwMzYxNjQzNjI3MiINJHQwMzY1NzgzNjczNSINb3V0QXNzZXRJZFN0ciINaXNHZXREaXNhYmxlZCINJHQwMzc2MjkzNzc4MiIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDAzODI4MjM4NTI5IhBmZWVBbW91bnRGb3JDYWxjIg0kdDAzODUzMjM4NjQwIg0kdDAzODg5NzM5MDUzIg11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDAzOTk1NTQwMTA2Ig0kdDA0MDYwMTQwODQ4Ig0kdDA0MDg1MTQwOTU5IglvdXRBbXRBbXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig0kdDA0MTkwNzQxOTg5IhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0Ig0kdDA0Mjk0MDQzMDIxIg1jaGVja1BheW1lbnRzIg9jaGVja1Bvb2xTdGF0dXMiDSR0MDQ0MTQ0NDQyMjUiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIMY2hlY2tBbW91bnRzIg0kdDA0NTUxNzQ1NTk4IgthbXRBc3NldFN0ciINcHJpY2VBc3NldFN0ciIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNDY3ODU0Njg0OSIQa0xwVXBkYXRlQWN0aW9ucyIKYW10QXNzZXRJZCIMcHJpY2VBc3NldElkIg1wb29sTFBCYWxhbmNlIhJhY2NBbXRBc3NldEJhbGFuY2UiFGFjY1ByaWNlQXNzZXRCYWxhbmNlIgpwcmljZXNMaXN0Ig9scEFtdEFzc2V0U2hhcmUiEWxwUHJpY2VBc3NldFNoYXJlIgpwb29sV2VpZ2h0IgxjdXJQcmljZUNhbGMiDGFtQmFsYW5jZVJhdyIMcHJCYWxhbmNlUmF3Ig9hbUJhbGFuY2VSYXdYMTgiD3ByQmFsYW5jZVJhd1gxOCIQcGF5bWVudExwQXNzZXRJZCIMcGF5bWVudExwQW10IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaG8AAWEACAABYgCAwtcvAAFjCQC2AgEAgMLXLwABZAkAtgIBAICAkLu61q3wDQABZQkAtgIBAAAAAWYJALYCAQAAAAFnCQC2AgEAAQABaAkAtgIBAAIAAWkCBVdBVkVTAAFqAgJfXwABawABAAFsAAIAAW0AAwABbgAEAAFvAAEAAXAAAgABcQADAAFyAAQAAXMABQABdAAGAAF1AAcAAXYACAABdwAJAAF4AAoAAXkAAQABegACAAFBAAMAAUIAAQABQwAHAQFEAgFFAUYJALwCAwkAtgIBBQFFBQFkCQC2AgEFAUYBAUcCAUgBSQkAoAMBCQC8AgMFAUgJALYCAQUBSQUBZAEBSgMBSAFJAUsJAKADAQkAvQIEBQFICQC2AgEFAUkFAWQFAUsBAUwDAU0BTgFPCQBrAwUBTQUBTgUBTwEBUAEBSAMJAGYCAAAFAUgJAQEtAQUBSAUBSAEBUQEBSAMJAL8CAgUBZQUBSAkAvgIBBQFIBQFIAQFSAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBUwACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFUAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFVAAIRJXMlc19fcHJpY2VfX2xhc3QBAVYCAVcBWAkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVcJAMwIAgkApAMBBQFYBQNuaWwFAWoBAVkCAVoCYWEJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQFaAgJfXwUCYWEBAmFiAgFaAmFhCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUBWgICX18FAmFhAQJhYwACDyVzX19hbW91bnRBc3NldAECYWQAAg4lc19fcHJpY2VBc3NldAACYWUCByVzX19mZWUAAmFmCQBrAwAKBQFiAJBOAAJhZwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhZQUCYWYAAmFoCQC5CQIJAMwIAgICJXMJAMwIAgIDa0xwBQNuaWwFAWoAAmFpCQC5CQIJAMwIAgICJXMJAMwIAgISa0xwUmVmcmVzaGVkSGVpZ2h0BQNuaWwFAWoAAmFqCQC5CQIJAMwIAgICJXMJAMwIAgIPcmVmcmVzaEtMcERlbGF5BQNuaWwFAWoAAmFrAB4AAmFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFqBQJhawECYW0AAhElc19fZmFjdG9yeUNvbmZpZwECYW4AAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmFvAQJhcAkArAICCQCsAgICCCVzJXMlc19fBQJhcAIgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQBAmFxAgJhcgJhcwkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYXICAl9fBQJhcwIIX19jb25maWcBAmF0AQJhdQkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhdQECYXYAAgwlc19fc2h1dGRvd24BAmF3AQJheAkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FAmF4AQJheQACFyVzX19hbGxvd2VkTHBTY3JpcHRIYXNoAAJhegIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmFBAwJhQgJhQwJhRAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAKUDAQUCYUICDSBzZW5kZXJWYWxpZD0JAKUDAQUCYUMCDiBtYXRjaGVyVmFs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AQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiTgUBdQQCYlEJAQJiRQQFAmJPBQJiUAUCYkgFAmJJBAJiQwkBAUQCBQJiSAUCYk8EAmJCCQEBRAIFAmJJBQJiUAQCYlIJAQFEAgUCYk0FAWIEAmJTCQECYkECBQJiQwUCYlIEAmJUCQECYkECBQJiQgUCYlIJAMwIAgUCYlEJAMwIAgUCYlMJAMwIAgUCYlQFA25pbAECYlUDAmJIAmJJAmJNBAJiVgkBAmJMAwUCYkgFAmJJBQJiTQkAzAgCCQEBRwIJAJEDAgUCYlYAAAUBYgkAzAgCCQEBRwIJAJEDAgUCYlYAAQUBYgkAzAgCCQEBRwIJAJEDAgUCYlYAAgUBYgUDbmlsAQJiVwQCYlgCYlkCYloBWgQCYk4JAQJhUAAEAmNhCQCRAwIFAmJOBQFxBAJjYgkAkQMCBQJiTgUBcgQCY2MJAJEDAgUCYk4FAXMEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXQEAmJHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXUEAmNkCQCRAwIFAmJOBQFwBAJjZQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNhCQCsAgIJAKwCAgIGQXNzZXQgBQJjYQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJjYQUCYlkJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmNmCQECYnkBBQJjYgQCY2cJAQFEAgUCY2YFAmJGBAJjaAkBAmJ5AQUCY2MEAmNpCQEBRAIFAmNoBQJiRwQCY2oJAQJiQQIFAmNpBQJjZwQCY2sJAQFHAgUCY2oFAWIEAmNsCQEBRAIFAmJaBQFiBAJjbQkBAUQCBQJjZQUBYgQCY24JALwCAwUCY2cFAmNsBQJjbQQCY28JALwCAwUCY2kFAmNsBQJjbQQCY3AJAQFHAgUCY24FAmJGBAJjcQkBAUcCBQJjbwUCYkcEAmNyAwkAAAIFAmJYAgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFaBQJjcAMJAAACBQJjYgIFV0FWRVMFBHVuaXQJANkEAQUCY2IJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWgUCY3EDCQAAAgUCY2MCBVdBVkVTBQR1bml0CQDZBAEFAmNjCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIJAKUIAQUBWgUCYlgJAQJidQYFAmNwBQJjcQUCYloFAmNrBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmNrCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNrBQNuaWwJAJwKCgUCY3AFAmNxBQJjYgUCY2MFAmNmBQJjaAUCY2UFAmNqBQJjZAUCY3IBAmNzCQJiWAJjdAJjdQJjdgJjdwJjeAFaAmN5AmN6BAJiTgkBAmFQAAQCY2EJANkEAQkAkQMCBQJiTgUBcQQCY0EJAJEDAgUCYk4FAXIEAmNCCQCRAwIFAmJOBQFzBAJjQwkAkQMCBQJiTgUBdgQCY0QJAJEDAgUCYk4FAXcEAmJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXQEAmJQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXUEAmNkCQCRAwIFAmJOBQFwBAJjZQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjYQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjYQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNFCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmN2CQDZBAECBVdBVkVTBAJjRgkA2AQBCQELdmFsdWVPckVsc2UCBQJjeAkA2QQBAgVXQVZFUwMDCQECIT0CBQJjQQUCY0UGCQECIT0CBQJjQgUCY0YJAAIBAiJJbnZhbGlkIGFtdCBvciBwcmljZSBhc3NldCBwYXNzZWQuBAJjZgMFAmN5CQECYnkBBQJjQQkAZQIJAQJieQEFAmNBBQJjdQQCY2gDBQJjeQkBAmJ5AQUCY0IJAGUCCQECYnkBBQJjQgUCY3cEAmNHCQEBRAIFAmN1BQJiTwQCY0gJAQFEAgUCY3cFAmJQBAJjSQkBAmJBAgUCY0gFAmNHBAJjZwkBAUQCBQJjZgUCYk8EAmNpCQEBRAIFAmNoBQJiUAQCY0oDCQAAAgUCY2UAAAQCY2oFAWUEAmNLBQFlBAJiUgkAdgYJALkCAgUCY0cFAmNIAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBRwIFAmJSBQFiCQEBRwIFAmNHBQJiTwkBAUcCBQJjSAUCYlAJAQJiQQIJALcCAgUCY2kFAmNICQC3AgIFAmNnBQJjRwUCY0sEAmNqCQECYkECBQJjaQUCY2cEAmNLCQC8AgMJAQFRAQkAuAICBQJjagUCY0kFAWQFAmNqBAJjTAkBAUQCBQJjdAUBYgMDCQECIT0CBQJjagUBZQkAvwICBQJjSwUCY0wHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmNLAh4gZXhjZWVkZWQgdGhlIHBhc3NlZCBsaW1pdCBvZiAJAKYDAQUCY0wEAmNtCQEBRAIFAmNlBQFiBAJjTQkAvQIEBQJjRwkBAmJEAwUCY2kFAmNnBQdDRUlMSU5HBQFkBQdDRUlMSU5HBAJjTgkAvQIEBQJjSAUBZAkBAmJEAwUCY2kFAmNnBQVGTE9PUgUHQ0VJTElORwQCY08DCQC/AgIFAmNNBQJjSAkAlAoCBQJjTgUCY0gJAJQKAgUCY0cFAmNNBAJjUAgFAmNPAl8xBAJjUQgFAmNPAl8yBAJiUgkAvQIEBQJjbQUCY1EFAmNpBQVGTE9PUgkAlwoFCQEBSgMFAmJSBQFiBQVGTE9PUgkBAUoDBQJjUAUCYk8FB0NFSUxJTkcJAQFKAwUCY1EFAmJQBQdDRUlMSU5HBQJjagUCY0sEAmNSCAUCY0oCXzEEAmNTCAUCY0oCXzIEAmNUCAUCY0oCXzMEAmNrCQEBRwIIBQJjSgJfNAUBYgQCY1UJAQFHAggFAmNKAl81BQFiAwkAZwIAAAUCY1IJAAIBAjZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAmNWAwkBASEBBQJjegAABQJjUgQCY1cJAGUCBQJjdQUCY1MEAmNYCQBlAgUCY3cFAmNUBAJjWQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUABQJjawkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjawkAzAgCCQELU3RyaW5nRW50cnkCCQEBWQIFAVoFAmJYCQECYmoKBQJjUwUCY1QFAmNWBQJjawUCY3QFAmNVBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjVwUCY1gFA25pbAkAnwoNBQJjUgUCY1YFAmNrBQJjZgUCY2gFAmNlBQJjYQUCY2QFAmNZBQJjVwUCY1gFAmN2BQJjeAECY1oDAmRhAmRiAmNlBAJkYwkAvAIDCQB2BgkAuQICBQJkYQUCZGIAAAkAtgIBAAUAAQASBQRET1dOBQFnBQJjZQMJAAACBQJjZQUBZgUBZgUCZGMBAmRkAwJkZQJkZgJkZwQCZGgJALgCAgkAtgIBCQECYnkBCQECYVUBBQJiYwUCZGUEAmRpCQC4AgIJALYCAQkBAmJ5AQkBAmFVAQUCYmQFAmRmBAJkagkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJiCHF1YW50aXR5BQJkZwQCZGsJAQJjWgMFAmRoBQJkaQUCZGoFAmRrAQJkbAMCZG0CZG4CZGcEAmRoCQBkAgkBAmJ5AQkBAmFVAQUCYmMFAmRtBAJkaQkAZAIJAQJieQEJAQJhVQEFAmJkBQJkbgQCZGoJAGQCCAkBBXZhbHVlAQkA7AcBBQJiYghxdWFudGl0eQUCZGcEAmRjCQECY1oDCQC2AgEFAmRoCQC2AgEFAmRpCQC2AgEFAmRqBAJkbwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYWkFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhaAkApgMBBQJkYwUDbmlsCQCUCgIFAmRvBQJkYwECZHACAmRxAmRjAwkAwAICBQJkYwUCZHEGCQECYUkBCQC5CQIJAMwIAgIidXBkYXRlZCBLTHAgbG93ZXIgdGhhbiBjdXJyZW50IEtMcAkAzAgCCQCmAwEFAmRxCQDMCAIJAKYDAQUCZGMFA25pbAIBIAECZHIBAmRzBAJkdAgFAmRzBmFtb3VudAQCZHUJAG4ECAUCZHMGYW1vdW50CAUCZHMFcHJpY2UFAWIFBUZMT09SBAJkdgMJAAACCAUCZHMJb3JkZXJUeXBlBQNCdXkJAJQKAgUCZHQJAQEtAQUCZHUJAJQKAgkBAS0BBQJkdAUCZHUEAmRtCAUCZHYCXzEEAmRuCAUCZHYCXzIDAwMJAQJhTgAGCQAAAgUCYmEFAW0GCQAAAgUCYmEFAW4JAAIBAhxFeGNoYW5nZSBvcGVyYXRpb25zIGRpc2FibGVkAwMJAQIhPQIICAUCZHMJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BQJiYwYJAQIhPQIICAUCZHMJYXNzZXRQYWlyCnByaWNlQXNzZXQFAmJkCQACAQITV3Jvbmcgb3JkZXIgYXNzZXRzLgQCZHcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUCYWgJAQJhSwECD2tMcCBpcyByZXF1aXJlZAkBAmFLAQILaW52YWxpZCBrTHAEAmR4CQECZGwDBQJkbQUCZG4AAAQCZHkIBQJkeAJfMQQCZHoIBQJkeAJfMgQCZEEJAMACAgUCZHoFAmR3BQJkQQECZEIBAmRDAwkBAiE9AgkAkAMBCAUCZEMIcGF5bWVudHMAAQkAAgECHWV4YWN0bHkgMSBwYXltZW50IGlzIGV4cGVjdGVkBAJkRAkBBXZhbHVlAQkAkQMCCAUCZEMIcGF5bWVudHMAAAQCYlkJAQV2YWx1ZQEIBQJkRAdhc3NldElkBAJkRQgFAmREBmFtb3VudAQCY0oJAQJiVwQJANgEAQgFAmRDDXRyYW5zYWN0aW9uSWQJANgEAQUCYlkFAmRFCAUCZEMGY2FsbGVyBAJjcAgFAmNKAl8xBAJjcQgFAmNKAl8yBAJjZAkBDXBhcnNlSW50VmFsdWUBCAUCY0oCXzkEAmNyCAUCY0oDXzEwAwMJAQJhTgAGCQAAAgUCY2QFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNkCQCXCgUFAmNwBQJjcQUCZEUFAmJZBQJjcgECZEYDAmRDAmN0AmN6AwkBAiE9AgkAkAMBCAUCZEMIcGF5bWVudHMAAgkAAgECH2V4YWN0bHkgMiBwYXltZW50cyBhcmUgZXhwZWN0ZWQEAmRHCQEFdmFsdWUBCQCRAwIIBQJkQwhwYXltZW50cwAABAJkSAkBBXZhbHVlAQkAkQMCCAUCZEMIcGF5bWVudHMAAQQCZEkJAQJjcwkJANgEAQgFAmRDDXRyYW5zYWN0aW9uSWQFAmN0CAUCZEcGYW1vdW50CAUCZEcHYXNzZXRJZAgFAmRIBmFtb3VudAgFAmRIB2Fzc2V0SWQJAKUIAQgFAmRDBmNhbGxlcgcFAmN6BAJjZAkBDXBhcnNlSW50VmFsdWUBCAUCZEkCXzgDAwMJAQJhTgAGCQAAAgUCY2QFAWwGCQAAAgUCY2QFAW4JAAIBCQCsAgICLFB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNkBQJkSQECZEoBAmRLBAJkTAkA/AcEBQJhTAIEZW1pdAkAzAgCBQJkSwUDbmlsBQNuaWwDCQAAAgUCZEwFAmRMBAJkTQQCZE4FAmRMAwkAAQIFAmROAgdBZGRyZXNzBAJkTwUCZE4JAPwHBAUCZE8CBGVtaXQJAMwIAgUCZEsFA25pbAUDbmlsBQR1bml0AwkAAAIFAmRNBQJkTQUCZEsJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmRQAQJkSwQCZFEJAGsDBQJkSwUCYWcFAWIJAJQKAgkAZQIFAmRLBQJkUQUCZFEBAmRSBAJkUwJkVAFaAmFhBAJkVQkAAAIFAmFhBQR1bml0BAJkVgkBAmJ5AQkBAmFVAQUCYmMEAmRXCQECYnkBCQECYVUBBQJiZAQCZFgDCQAAAgUCZFQFAmJjBgMJAAACBQJkVAUCYmQHCQECYUkBAg1pbnZhbGlkIGFzc2V0BAJkWQMFAmRVCQCUCgIFAmRWBQJkVwMFAmRYCQCUCgIJAGUCBQJkVgUCZFMFAmRXCQCUCgIFAmRWCQBlAgUCZFcFAmRTBAJkWggFAmRZAl8xBAJlYQgFAmRZAl8yBAJlYgMFAmRYCQCUCgIFAmRTAAAJAJQKAgAABQJkUwQCZWMIBQJlYgJfMQQCZWQIBQJlYgJfMgQCZHQICQECZFABBQJlYwJfMQQCZHUICQECZFABBQJlZAJfMQQCZWUJAQJkUAEFAmRTBAJlZggFAmVlAl8xBAJkUQgFAmVlAl8yBAJlZwkAZAIFAmRaBQJkdAQCZWgJAGQCBQJlYQUCZHUEAmVpCQECYkECCQEBRAIFAmVoBQJiZgkBAUQCBQJlZwUCYmUEAmVqCQEBRwIFAmVpBQFiBAJlawMFAmRYBQJkWgUCZWEEAmVsCQC2AgEFAmVrBAJlbQkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJiCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmJiAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZW4DCQC/AgIFAmVtBQFmBgkBAmFJAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJlbgUCZW4EAmVvCQC2AgEFAmVmBAJlcAkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlbQkAuAICCQEKc3FydEJpZ0ludAQJALcCAgUBZAkAugICCQC5AgIFAmVvBQFkBQJlbAASABIFBERPV04FAWQFAWQFA25pbAQCY1kDBQJkVQUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmVqCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVqCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAgkApQgBCQEFdmFsdWUBBQFaCQDYBAEJAQV2YWx1ZQEFAmFhCQECYmoKBQJlYwUCZWQFAmVwBQJlagAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmVxCQECYkECCQEBRAIFAmVhBQJiZgkBAUQCBQJkWgUCYmUEAmVyCQEBRwIFAmVxBQFiBAJlcwQCZXQDBQJkWAkAlAoCBQJlYwUCZFoJAJQKAgUCZWQFAmVhBAJkSwgFAmV0Al8xBAJldQgFAmV0Al8yBAJldgkAoAMBCQC8AgMFAmVtCQC2AgEJAGkCBQJkSwACCQC2AgEFAmV1CQBrAwkAZQIFAmVwBQJldgUBYgUCZXYJAJcKBQUCZXAFAmNZBQJkUQUCZXMFAmRYCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJldwUCZXgCZWYCZFQBWgJhYQQCZFUJAAACBQJhYQUEdW5pdAQCZXkJAMwIAgMJAAACBQJkVAUCYmIGCQECYUkBAhBpbnZhbGlkIGxwIGFzc2V0BQNuaWwDCQAAAgUCZXkFAmV5BAJlegMJAAACBQJleAUCYmMGAwkAAAIFAmV4BQJiZAcJAQJhSQECDWludmFsaWQgYXNzZXQEAmVBAwUCZXoJALYCAQkBAmJ5AQkBAmFVAQUCYmMJALYCAQkBAmJ5AQkBAmFVAQUCYmQEAmVCCQECYnkBCQECYVUBBQJiYwQCZUMJAQJieQEJAQJhVQEFAmJkBAJlRAMFAmV6BQJlQgUCZUMEAmVFCQC2AgEFAmVEBAJlbQkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJiCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmJiAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZUYJALYCAQUCZWYEAmVHCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmVBCQC4AgIFAWQJAHYGCQC4AgIFAWQJALoCAgkAuQICBQJlRgUBZAUCZW0AEgUBaAAAABIFBERPV04FAWQFA25pbAQCZUgJAQJkUAEFAmVHBAJlSQgFAmVIAl8xBAJkUQgFAmVIAl8yBAJlSgMFAmV6CQCWCgQFAmVJAAAJAGUCBQJlQgUCZUcFAmVDCQCWCgQAAAUCZUkFAmVCCQBlAgUCZUMFAmVHBAJlSwgFAmVKAl8xBAJlTAgFAmVKAl8yBAJlTQgFAmVKAl8zBAJlTggFAmVKAl80BAJlaQkBAmJBAgkBAUQCBQJlTgUCYmYJAQFEAgUCZU0FAmJlBAJlagkBAUcCBQJlaQUBYgQCY1kDBQJkVQUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIJAKUIAQkBBXZhbHVlAQUBWgkA2AQBCQEFdmFsdWUBBQJhYQkBAmJ1BgUCZUsFAmVMBQJlZgUCZWoFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCZWoJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZWoFA25pbAQCZXEJAQJiQQIJAQFEAgUCZUMFAmJmCQEBRAIFAmVCBQJiZQQCZXIJAQFHAgUCZXEFAWIEAmVzBAJlTwkAaAIJAKADAQkAvAIDBQJlQQUCZUYFAmVtAAIJAGsDCQBlAgUCZUkFAmVPBQFiBQJlTwkAlwoFBQJlSQUCY1kFAmRRBQJlcwUCZXoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVQAAQCZE4JAKIIAQkBAVMAAwkAAQIFAmROAgZTdHJpbmcEAmVRBQJkTgkA2QQBBQJlUQMJAAECBQJkTgIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJlUgAEAmROCQCiCAEJAQFUAAMJAAECBQJkTgIGU3RyaW5nBAJlUQUCZE4JANkEAQUCZVEDCQABAgUCZE4CBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZVMBAmRDBAJkTgkBAmVQAAMJAAECBQJkTgIKQnl0ZVZlY3RvcgQCZVQFAmROCQAAAggFAmRDD2NhbGxlclB1YmxpY0tleQUCZVQDCQABAgUCZE4CBFVuaXQJAAACCAUCZEMGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmVVAQJkQwQCZVYJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQCZE4JAQJlUAADCQABAgUCZE4CCkJ5dGVWZWN0b3IEAmVUBQJkTgMJAAACCAUCZEMPY2FsbGVyUHVibGljS2V5BQJlVAYFAmVWAwkAAQIFAmROAgRVbml0AwkAAAIIBQJkQwZjYWxsZXIFBHRoaXMGBQJlVgkAAgECC01hdGNoIGVycm9yGwJkQwEKc2V0TWFuYWdlcgECZVcEAmVYCQECZVUBBQJkQwMJAAACBQJlWAUCZVgEAmVZCQDZBAEFAmVXAwkAAAIFAmVZBQJlWQkAzAgCCQELU3RyaW5nRW50cnkCCQEBVAAFAmVXBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBDmNvbmZpcm1NYW5hZ2VyAAQCZVoJAQJlUgAEAmZhAwkBCWlzRGVmaW5lZAEFAmVaBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmYQUCZmEEAmZiAwkAAAIIBQJkQw9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmVaBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmYgUCZmIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVMACQDYBAEJAQV2YWx1ZQEFAmVaCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFUAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQNwdXQCAmN0AmZjAwkAZgIAAAUCY3QJAAIBAiBJbnZhbGlkIHNsaXBwYWdlVG9sZXJhbmNlIHBhc3NlZAQCZEkJAQJkRgMFAmRDBQJjdAYEAmNWCAUCZEkCXzIEAmNhCAUCZEkCXzcEAmNyCAUCZEkCXzkEAmNXCAUCZEkDXzEwBAJjWAgFAmRJA18xMQQCZmQIBQJkSQNfMTIEAmZlCAUCZEkDXzEzBAJkRwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEMIcGF5bWVudHMAAAZhbW91bnQEAmRICQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkQwhwYXltZW50cwABBmFtb3VudAQCZGsJAQJkZAMFAmRHBQJkSAkAtgIBAAADCQAAAgUCZGsFAmRrBAJkTAkA/AcEBQJhTAIEZW1pdAkAzAgCBQJjVgUDbmlsBQNuaWwDCQAAAgUCZEwFAmRMBAJkTQQCZE4FAmRMAwkAAQIFAmROAgdBZGRyZXNzBAJkTwUCZE4JAPwHBAUCZE8CBGVtaXQJAMwIAgUCY1YFA25pbAUDbmlsBQR1bml0AwkAAAIFAmRNBQJkTQQCZmYDCQBmAgUCY1cAAAkA/AcEBQJiaQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZkBQJjVwUDbmlsBQNuaWwDCQAAAgUCZmYFAmZmBAJmZwMJAGYCBQJjWAAACQD8BwQFAmJpAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZmUFAmNYBQNuaWwFA25pbAMJAAACBQJmZwUCZmcEAmZoAwUCZmMEAmZpCQD8BwQFAmJoAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjYQUCY1YFA25pbAMJAAACBQJmaQUCZmkFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZEMGY2FsbGVyBQJjVgUCY2EFA25pbAQCZmoJAQJkbAMAAAAAAAADCQAAAgUCZmoFAmZqBAJkYwgFAmZqAl8yBAJmawgFAmZqAl8xBAJmbAkBAmRwAgUCZGsFAmRjAwkAAAIFAmZsBQJmbAkAzggCCQDOCAIFAmNyBQJmaAUCZmsJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBCnB1dEZvckZyZWUBAmZtAwkAZgIAAAUCZm0JAAIBAhRJbnZhbGlkIHZhbHVlIHBhc3NlZAQCZEkJAQJkRgMFAmRDBQJmbQcEAmNyCAUCZEkCXzkEAmRHCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkQwhwYXltZW50cwAABmFtb3VudAQCZEgJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRDCHBheW1lbnRzAAEGYW1vdW50BAJkawkBAmRkAwUCZEcFAmRICQC2AgEAAAMJAAACBQJkawUCZGsEAmZuCQECZGwDAAAAAAAABAJmawgFAmZuAl8xBAJkYwgFAmZuAl8yBAJmbAkBAmRwAgUCZGsFAmRjAwkAAAIFAmZsBQJmbAkAzggCBQJjcgUCZmsJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBCXB1dE9uZVRrbgICZm8CZnAEAmZxCgACZnIJAPwHBAUCYUwCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmcgIHQm9vbGVhbgUCZnIJAAIBCQCsAgIJAAMBBQJmcgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZnMDAwMJAQJhTgAGCQAAAgUCYmEFAWwGCQAAAgUCYmEFAW4GBQJmcQQCZXkJAMwIAgMDCQEBIQEFAmZzBgkBAmVTAQUCZEMGCQECYUkBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkQwhwYXltZW50cwABBgkBAmFJAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZXkFAmV5BAJmdAkAkQMCCAUCZEMIcGF5bWVudHMAAAQCZFQIBQJmdAdhc3NldElkBAJkUwgFAmZ0BmFtb3VudAQCZGsDCQAAAgUCZFQFAmJjCQECZGQDCQC2AgEFAmRTCQC2AgEAAAkAtgIBAAADCQAAAgUCZFQFAmJkCQECZGQDCQC2AgEAAAkAtgIBBQJkUwkAtgIBAAAJAQJhSQECHnBheW1lbnQgYXNzZXQgaXMgbm90IHN1cHBvcnRlZAQBWggFAmRDBmNhbGxlcgQCYWEIBQJkQw10cmFuc2FjdGlvbklkBAJmdQkBAmRSBAUCZFMFAmRUBQFaBQJhYQMJAAACBQJmdQUCZnUEAmRYCAUCZnUCXzUEAmZ2CAUCZnUCXzQEAmRRCAUCZnUCXzMEAmNZCAUCZnUCXzIEAmZ3CAUCZnUCXzEEAmZ4AwMJAGYCBQJmbwAACQBmAgUCZm8FAmZ3BwkBAmFJAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmbwUDbmlsAgAFAmZ3BAJkTAkBAmRKAQUCZngDCQAAAgUCZEwFAmRMBAJmaAMFAmZwBAJmeQkA/AcEBQJiaAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYmIFAmZ4BQNuaWwDCQAAAgUCZnkFAmZ5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRDBmNhbGxlcgUCZngFAmJiBQNuaWwEAmZ6AwkAZgIFAmRRAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYU0FAmRRBQJkVAUDbmlsBQNuaWwEAmZBAwkAAAIFBHRoaXMFAmFNCQCUCgIAAAAAAwUCZFgJAJQKAgkBAS0BBQJkUQAACQCUCgIAAAkBAS0BBQJkUQQCZG0IBQJmQQJfMQQCZG4IBQJmQQJfMgQCZkIJAQJkbAMFAmRtBQJkbgAABAJmawgFAmZCAl8xBAJkYwgFAmZCAl8yBAJkdwkBBXZhbHVlAQkAoggBBQJhaAQCZmwJAQJkcAIFAmRrBQJkYwMJAAACBQJmbAUCZmwJAJQKAgkAzggCCQDOCAIJAM4IAgUCY1kFAmZoBQJmegUCZmsFAmZ4CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDARFwdXRPbmVUa25SRUFET05MWQICZFQCZFMEAmZDCQECZFIEBQJkUwkBAmFTAQUCZFQFBHVuaXQFBHVuaXQEAmZ3CAUCZkMCXzEEAmNZCAUCZkMCXzIEAmRRCAUCZkMCXzMEAmZ2CAUCZkMCXzQEAmRYCAUCZkMCXzUJAJQKAgUDbmlsCQCVCgMFAmZ3BQJkUQUCZnYCZEMBCWdldE9uZVRrbgICZkQCZm8EAmZxCgACZnIJAPwHBAUCYUwCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmcgIHQm9vbGVhbgUCZnIJAAIBCQCsAgIJAAMBBQJmcgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZkUDAwkBAmFOAAYJAAACBQJiYQUBbgYFAmZx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AAAJALYCAQUCZEUEAmZUCQD8BwQFAmFMAgRidXJuCQDMCAIFAmRFBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJZBQJkRQUDbmlsAwkAAAIFAmZUBQJmVAQCZlUJAQJkbAMJAQEtAQUCZlMJAQEtAQUCY3EAAAQCZmsIBQJmVQJfMQQCZGMIBQJmVQJfMgQCZmwJAQJkcAIFAmRrBQJkYwMJAAACBQJmbAUCZmwJAM4IAgUCY3IFAmZrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQlnZXROb0xlc3MCAmZWAmZXBAJjSgkBAmRCAQUCZEMEAmNwCAUCY0oCXzEEAmNxCAUCY0oCXzIEAmRFCAUCY0oCXzMEAmJZCAUCY0oCXzQEAmNyCAUCY0oCXzUDCQBmAgUCZlYFAmNwCQACAQkArAICCQCsAgIJAKwCAgIcbm9MZXNzVGhlbkFtdEFzc2V0IGZhaWxlZDogIAkApAMBBQJjcAIDIDwgCQCkAwEFAmZWAwkAZgIFAmZXBQJjcQkAAgEJAKwCAgkArAICCQCsAgICHW5vTGVzc1RoZW5QcmljZUFzc2V0IGZhaWxlZDogCQCkAwEFAmNxAgMgPCAJAKQDAQUCZlcEAmRrCQECZGQDCQC2AgEAAAkAtgIBAAAJALYCAQUCZEUEAmZUCQD8BwQFAmFMAgRidXJuCQDMCAIFAmRFBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJZBQJkRQUDbmlsAwkAAAIFAmZUBQJmVAQCZlgJAQJkbAMJAQEtAQUCY3AJAQEtAQUCY3EAAAQCZmsIBQJmWAJfMQQCZGMIBQJmWAJfMgQCZmwJAQJkcAIFAmRrBQJkYwMJAAACBQJmbAUCZmwJAM4IAgUCY3IFAmZrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQ11bnN0YWtlQW5kR2V0AQJkSwQCZlkDCQECIT0CCQCQAwEIBQJkQwhwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJmWQUCZlkEAmJOCQECYVAABAJjYQkA2QQBCQCRAwIFAmJOBQFxBAJkawkBAmRkAwkAtgIBAAAJALYCAQAACQC2AgEAAAQCZk8JAPwHBAUCYmgCB3Vuc3Rha2UJAMwIAgkA2AQBBQJjYQkAzAgCBQJkSwUDbmlsBQNuaWwDCQAAAgUCZk8FAmZPBAJjSgkBAmJXBAkA2AQBCAUCZEMNdHJhbnNhY3Rpb25JZAkA2AQBBQJjYQUCZEsIBQJkQwZjYWxsZXIEAmNwCAUCY0oCXzEEAmNxCAUCY0oCXzIEAmNkCQENcGFyc2VJbnRWYWx1ZQEIBQJjSgJfOQQCY3IIBQJjSgNfMTAEAmZaAwMJAQJhTgAGCQAAAgUCY2QFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNkBgMJAAACBQJmWgUCZloEAmZUCQD8BwQFAmFMAgRidXJuCQDMCAIFAmRLBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNhBQJkSwUDbmlsAwkAAAIFAmZUBQJmVAQCZ2EJAQJkbAMJAQEtAQUCY3AJAQEtAQUCY3EAAAQCZmsIBQJnYQJfMQQCZGMIBQJnYQJfMgQCZmwJAQJkcAIFAmRrBQJkYwMJAAACBQJmbAUCZmwJAM4IAgUCY3IFAmZrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJmTgJnYgJmVwQCZkUDCQECYU4ABgkAAAIFAmJhBQFuBAJleQkAzAgCAwkBASEBBQJmRQYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkQwhwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmV5BQJleQQCZGsJAQJkZAMJALYCAQAACQC2AgEAAAkAtgIBAAAEAmZPCQD8BwQFAmJoAgd1bnN0YWtlCQDMCAIJANgEAQUCYmIJAMwIAgUCZk4FA25pbAUDbmlsAwkAAAIFAmZPBQJmTwQCY0oJAQJiVwQJANgEAQgFAmRDDXRyYW5zYWN0aW9uSWQJANgEAQUCYmIFAmZOCAUCZEMGY2FsbGVyBAJjcAgFAmNKAl8xBAJjcQgFAmNKAl8yBAJjcggFAmNKA18xMAQCZ2MJAMwIAgMJAGcCBQJjcAUCZ2IGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ2IFA25pbAIACQDMCAIDCQBnAgUCY3EFAmZXBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZlcFA25pbAIABQNuaWwDCQAAAgUCZ2MFAmdjBAJmVAkA/AcEBQJhTAIEYnVybgkAzAgCBQJmTgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiYgUCZk4FA25pbAMJAAACBQJmVAUCZlQEAmdkCQECZGwDCQEBLQEFAmNwCQEBLQEFAmNxAAAEAmZrCAUCZ2QCXzEEAmRjCAUCZ2QCXzIEAmZsCQECZHACBQJkawUCZGMDCQAAAgUCZmwFAmZsCQDOCAIFAmNyBQJmawkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQwEIYWN0aXZh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ZCVkCQDMCAIJAKQDAQUCZ24JAMwIAgkApAMBBQJnbwkAzAgCCQCkAwEFAmdtCQDMCAIJAKQDAQUCY2sJAMwIAgkApAMBBQJncQkAzAgCCQCkAwEFAmdyCQDMCAIJAKQDAQUCZ3MFA25pbAUBagJkQwEgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkBAmN1BAJiTgkBAmFQAAQCY2EJANkEAQkAkQMCBQJiTgUBcQQCY0EJAJEDAgUCYk4FAXIEAmNiCQDZBAEFAmNBBAJjQgkAkQMCBQJiTgUBcwQCY2MJANkEAQUCY0IEAmJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXQEAmJQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXUEAmNkCQCRAwIFAmJOBQFwBAJnbQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjYQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjYQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmduCQECYnkBBQJjQQQCZ28JAQJieQEFAmNCBAJiSgkBAUQCBQJnbgUCYk8EAmJLCQEBRAIFAmdvBQJiUAQCY2oDCQAAAgUCZ20AAAUBZQkBAmJBAgUCYksFAmJKBAJjRwkBAUQCBQJjdQUCYk8EAmNICQC8AgMFAmNHBQJjagUBZAQCY3cJAQFHAgUCY0gFAmJQBAJkSQkBAmNzCQIAAKDCHgUCY3UFAmNiBQJjdwUCY2MCAAYHBAJjUggFAmRJAl8xBAJndAgFAmRJAl8zBAJjZggFAmRJAl80BAJjaAgFAmRJAl81BAJjZQgFAmRJAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjUgkAzAgCCQCkAwEJAQFHAgUCY2oFAWIJAMwIAgkApAMBBQJjZgkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCY2UJAMwIAgUCY2QJAMwIAgkApAMBBQJjdQkAzAgCCQCkAwEFAmN3BQNuaWwFAWoCZEMBH2V2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkBAmN3BAJiTgkBAmFQAAQCY2EJANkEAQkAkQMCBQJiTgUBcQQCY0EJAJEDAgUCYk4FAXIEAmNiCQDZBAEFAmNBBAJjQgkAkQMCBQJiTgUBcwQCY2MJANkEAQUCY0IEAmJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXQEAmJQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXUEAmNkCQCRAwIFAmJOBQFwBAJnbQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjYQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjYQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmd1CQECYnkBBQJjQQQCZ3YJAQJieQEFAmNCBAJndwkBAUQCBQJndQUCYk8EAmd4CQEBRAIFAmd2BQJiUAQCY2oDCQAAAgUCZ20AAAUBZQkBAmJBAgUCZ3gFAmd3BAJjSAkBAUQCBQJjdwUCYlAEAmNHCQC8AgMFAmNIBQFkBQJjagQCY3UJAQFHAgUCY0cFAmJPBAJkSQkBAmNzCQIAAKDCHgUCY3UFAmNiBQJjdwUCY2MCAAYHBAJjUggFAmRJAl8xBAJndAgFAmRJAl8zBAJjZggFAmRJAl80BAJjaAgFAmRJAl81BAJjZQgFAmRJAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjUgkAzAgCCQCkAwEJAQFHAgUCY2oFAWIJAMwIAgkApAMBBQJjZgkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCY2UJAMwIAgUCY2QJAMwIAgkApAMBBQJjdQkAzAgCCQCkAwEFAmN3BQNuaWwFAWoCZEMBE2V2YWx1YXRlR2V0UkVBRE9OTFkCAmd5Amd6BAJjSgkBAmJXBAIABQJneQUCZ3oFBHRoaXMEAmNwCAUCY0oCXzEEAmNxCAUCY0oCXzIEAmNmCAUCY0oCXzUEAmNoCAUCY0oCXzYEAmNlCAUCY0oCXzcEAmNrCAUCY0oCXzgEAmNkCQENcGFyc2VJbnRWYWx1ZQEIBQJjSgJfOQkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNwCQDMCAIJAKQDAQUCY3EJAMwIAgkApAMBBQJjZgkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCY2UJAMwIAgkApgMBBQJjawkAzAgCCQCkAwEFAmNkBQNuaWwFAWoBAmdBAQJnQgAEAmdDBAJkTgkBAmVQAAMJAAECBQJkTgIKQnl0ZVZlY3RvcgQCZVQFAmROBQJlVAMJAAECBQJkTgIEVW5pdAgFAmdBD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJkTgUCZ0EDCQABAgUCZE4CBU9yZGVyBAJkcwUCZE4EAmdECQECYU8ABAJhQgkBAmRyAQUCZHMEAmFDCQD0AwMIBQJkcwlib2R5Qnl0ZXMJAJEDAggFAmRzBnByb29mcwAACAUCZHMPc2VuZGVyUHVibGljS2V5BAJhRAkA9AMDCAUCZHMJYm9keUJ5dGVzCQCRAwIIBQJkcwZwcm9vZnMAAQUCZ0QDAwMFAmFCBQJhQwcFAmFEBwYJAQJhQQMFAmFCBQJhQwUCYUQDCQABAgUCZE4CFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJlUQUCZE4EAmdFCQD2AwEJAQV2YWx1ZQEIBQJlUQZzY3JpcHQEAmdGCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYUwJAQJheQAEAmdHCQDxBwEFBHRoaXMDAwkAAAIFAmdGBQJnRQkBAiE9AgUCZ0cFAmdFBwYJAPQDAwgFAmdBCWJvZHlCeXRlcwkAkQMCCAUCZ0EGcHJvb2ZzAAAFAmdDCQD0AwMIBQJnQQlib2R5Qnl0ZXMJAJEDAggFAmdBBnByb29mcwAABQJnQ+X5DuM=", "chainId": 84, "height": 2351052, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Gq5G5FQ9JsjYV2owYv6j3jiyci5vMdxkqGTvc3xYWT3b Next: AzmqX6izGGyJkyKToZcfLyb5iYNZ4Xee6RU1KLy1Kj7F Diff:
OldNewDifferences
722722 let fe = dI._13
723723 let dG = toBigInt(value(dC.payments[0]).amount)
724724 let dH = toBigInt(value(dC.payments[1]).amount)
725- let dh = (toBigInt(by(aU(bc))) - dG)
726- if ((dh == dh))
725+ let dk = dd(dG, dH, toBigInt(0))
726+ if ((dk == dk))
727727 then {
728- let di = (toBigInt(by(aU(bd))) - dH)
729- if ((di == di))
728+ let dL = invoke(aL, "emit", [cV], nil)
729+ if ((dL == dL))
730730 then {
731- let dj = toBigInt(value(assetInfo(bb)).quantity)
732- if ((dj == dj))
731+ let dM = {
732+ let dN = dL
733+ if ($isInstanceOf(dN, "Address"))
734+ then {
735+ let dO = dN
736+ invoke(dO, "emit", [cV], nil)
737+ }
738+ else unit
739+ }
740+ if ((dM == dM))
733741 then {
734- let dk = dd(dG, dH, toBigInt(0))
735- if ((dk == dk))
742+ let ff = if ((cW > 0))
743+ then invoke(bi, "put", nil, [AttachedPayment(fd, cW)])
744+ else nil
745+ if ((ff == ff))
736746 then {
737- let dL = invoke(aL, "emit", [cV], nil)
738- if ((dL == dL))
747+ let fg = if ((cX > 0))
748+ then invoke(bi, "put", nil, [AttachedPayment(fe, cX)])
749+ else nil
750+ if ((fg == fg))
739751 then {
740- let dM = {
741- let dN = dL
742- if ($isInstanceOf(dN, "Address"))
743- then {
744- let dO = dN
745- invoke(dO, "emit", [cV], nil)
746- }
747- else unit
748- }
749- if ((dM == dM))
752+ let fh = if (fc)
750753 then {
751- let ff = if ((cW > 0))
752- then invoke(bi, "put", nil, [AttachedPayment(fd, cW)])
753- else nil
754- if ((ff == ff))
755- then {
756- let fg = if ((cX > 0))
757- then invoke(bi, "put", nil, [AttachedPayment(fe, cX)])
758- else nil
759- if ((fg == fg))
760- then {
761- let fh = if (fc)
762- then {
763- let fi = invoke(bh, "stake", nil, [AttachedPayment(ca, cV)])
764- if ((fi == fi))
765- then nil
766- else throw("Strict value is not equal to itself.")
767- }
768- else [ScriptTransfer(dC.caller, cV, ca)]
769- let fj = value(assetInfo(bb)).quantity
770- if ((fj == fj))
771- then {
772- let fk = dl(0, 0, 0)
773- if ((fk == fk))
774- then {
775- let dc = fk._2
776- let fl = fk._1
777- let fm = aI(makeString([toString(dh), toString(di), toString(dj), toString(dk), toString(dc), toString(cV), toString(cW), toString(cX), toString(dj), toString(fj)], " "))
778- if ((fm == fm))
779- then {
780- let fn = dp(dk, dc)
781- if ((fn == fn))
782- then ((cr ++ fh) ++ fl)
783- else throw("Strict value is not equal to itself.")
784- }
785- else throw("Strict value is not equal to itself.")
786- }
787- else throw("Strict value is not equal to itself.")
788- }
789- else throw("Strict value is not equal to itself.")
790- }
791- else throw("Strict value is not equal to itself.")
792- }
754+ let fi = invoke(bh, "stake", nil, [AttachedPayment(ca, cV)])
755+ if ((fi == fi))
756+ then nil
757+ else throw("Strict value is not equal to itself.")
758+ }
759+ else [ScriptTransfer(dC.caller, cV, ca)]
760+ let fj = dl(0, 0, 0)
761+ if ((fj == fj))
762+ then {
763+ let dc = fj._2
764+ let fk = fj._1
765+ let fl = dp(dk, dc)
766+ if ((fl == fl))
767+ then ((cr ++ fh) ++ fk)
793768 else throw("Strict value is not equal to itself.")
794769 }
795770 else throw("Strict value is not equal to itself.")
808783
809784
810785 @Callable(dC)
811-func putForFree (fo) = if ((0 > fo))
786+func putForFree (fm) = if ((0 > fm))
812787 then throw("Invalid value passed")
813788 else {
814- let dI = dF(dC, fo, false)
789+ let dI = dF(dC, fm, false)
815790 let cr = dI._9
816791 let dG = toBigInt(value(dC.payments[0]).amount)
817792 let dH = toBigInt(value(dC.payments[1]).amount)
818793 let dk = dd(dG, dH, toBigInt(0))
819794 if ((dk == dk))
820795 then {
821- let fp = dl(0, 0, 0)
822- let fl = fp._1
823- let dc = fp._2
824- let fn = dp(dk, dc)
825- if ((fn == fn))
826- then (cr ++ fl)
796+ let fn = dl(0, 0, 0)
797+ let fk = fn._1
798+ let dc = fn._2
799+ let fl = dp(dk, dc)
800+ if ((fl == fl))
801+ then (cr ++ fk)
827802 else throw("Strict value is not equal to itself.")
828803 }
829804 else throw("Strict value is not equal to itself.")
832807
833808
834809 @Callable(dC)
835-func putOneTkn (fq,fr) = {
836- let fs = {
837- let ft = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
838- if ($isInstanceOf(ft, "Boolean"))
839- then ft
840- else throw(($getType(ft) + " couldn't be cast to Boolean"))
810+func putOneTkn (fo,fp) = {
811+ let fq = {
812+ let fr = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
813+ if ($isInstanceOf(fr, "Boolean"))
814+ then fr
815+ else throw(($getType(fr) + " couldn't be cast to Boolean"))
841816 }
842- let fu = if (if (if (aN())
817+ let fs = if (if (if (aN())
843818 then true
844819 else (ba == l))
845820 then true
846821 else (ba == n))
847822 then true
848- else fs
849- let ey = [if (if (!(fu))
823+ else fq
824+ let ey = [if (if (!(fs))
850825 then true
851826 else eS(dC))
852827 then true
855830 else aI("exactly 1 payment are expected")]
856831 if ((ey == ey))
857832 then {
858- let fv = dC.payments[0]
859- let dT = fv.assetId
860- let dS = fv.amount
833+ let ft = dC.payments[0]
834+ let dT = ft.assetId
835+ let dS = ft.amount
861836 let dk = if ((dT == bc))
862837 then dd(toBigInt(dS), toBigInt(0), toBigInt(0))
863838 else if ((dT == bd))
865840 else aI("payment asset is not supported")
866841 let Z = dC.caller
867842 let aa = dC.transactionId
868- let fw = dR(dS, dT, Z, aa)
869- if ((fw == fw))
843+ let fu = dR(dS, dT, Z, aa)
844+ if ((fu == fu))
870845 then {
871- let dX = fw._5
872- let fx = fw._4
873- let dQ = fw._3
874- let cY = fw._2
875- let fy = fw._1
876- let fz = if (if ((fq > 0))
877- then (fq > fy)
846+ let dX = fu._5
847+ let fv = fu._4
848+ let dQ = fu._3
849+ let cY = fu._2
850+ let fw = fu._1
851+ let fx = if (if ((fo > 0))
852+ then (fo > fw)
878853 else false)
879- then aI(makeString(["amount to receive is less than ", toString(fq)], ""))
880- else fy
881- let dL = dJ(fz)
854+ then aI(makeString(["amount to receive is less than ", toString(fo)], ""))
855+ else fw
856+ let dL = dJ(fx)
882857 if ((dL == dL))
883858 then {
884- let fh = if (fr)
859+ let fh = if (fp)
885860 then {
886- let fA = invoke(bh, "stake", nil, [AttachedPayment(bb, fz)])
887- if ((fA == fA))
861+ let fy = invoke(bh, "stake", nil, [AttachedPayment(bb, fx)])
862+ if ((fy == fy))
888863 then nil
889864 else throw("Strict value is not equal to itself.")
890865 }
891- else [ScriptTransfer(dC.caller, fz, bb)]
892- let fB = if ((dQ > 0))
866+ else [ScriptTransfer(dC.caller, fx, bb)]
867+ let fz = if ((dQ > 0))
893868 then [ScriptTransfer(aM, dQ, dT)]
894869 else nil
895- let fC = if ((this == aM))
870+ let fA = if ((this == aM))
896871 then $Tuple2(0, 0)
897872 else if (dX)
898873 then $Tuple2(-(dQ), 0)
899874 else $Tuple2(0, -(dQ))
900- let dm = fC._1
901- let dn = fC._2
902- let fD = dl(dm, dn, 0)
903- let fl = fD._1
904- let dc = fD._2
875+ let dm = fA._1
876+ let dn = fA._2
877+ let fB = dl(dm, dn, 0)
878+ let fk = fB._1
879+ let dc = fB._2
905880 let dw = value(getString(ah))
906- let fn = dp(dk, dc)
907- if ((fn == fn))
908- then $Tuple2((((cY ++ fh) ++ fB) ++ fl), fz)
881+ let fl = dp(dk, dc)
882+ if ((fl == fl))
883+ then $Tuple2((((cY ++ fh) ++ fz) ++ fk), fx)
909884 else throw("Strict value is not equal to itself.")
910885 }
911886 else throw("Strict value is not equal to itself.")
919894
920895 @Callable(dC)
921896 func putOneTknREADONLY (dT,dS) = {
922- let fE = dR(dS, aS(dT), unit, unit)
923- let fy = fE._1
924- let cY = fE._2
925- let dQ = fE._3
926- let fx = fE._4
927- let dX = fE._5
928- $Tuple2(nil, $Tuple3(fy, dQ, fx))
897+ let fC = dR(dS, aS(dT), unit, unit)
898+ let fw = fC._1
899+ let cY = fC._2
900+ let dQ = fC._3
901+ let fv = fC._4
902+ let dX = fC._5
903+ $Tuple2(nil, $Tuple3(fw, dQ, fv))
929904 }
930905
931906
932907
933908 @Callable(dC)
934-func getOneTkn (fF,fq) = {
935- let fs = {
936- let ft = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
937- if ($isInstanceOf(ft, "Boolean"))
938- then ft
939- else throw(($getType(ft) + " couldn't be cast to Boolean"))
909+func getOneTkn (fD,fo) = {
910+ let fq = {
911+ let fr = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
912+ if ($isInstanceOf(fr, "Boolean"))
913+ then fr
914+ else throw(($getType(fr) + " couldn't be cast to Boolean"))
940915 }
941- let fG = if (if (aN())
916+ let fE = if (if (aN())
942917 then true
943918 else (ba == n))
944919 then true
945- else fs
946- let ey = [if (if (!(fG))
920+ else fq
921+ let ey = [if (if (!(fE))
947922 then true
948923 else eS(dC))
949924 then true
952927 else aI("exactly 1 payment are expected")]
953928 if ((ey == ey))
954929 then {
955- let ex = aS(fF)
956- let fv = dC.payments[0]
957- let dT = fv.assetId
958- let ef = fv.amount
930+ let ex = aS(fD)
931+ let ft = dC.payments[0]
932+ let dT = ft.assetId
933+ let ef = ft.amount
959934 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(ef))
960935 let Z = dC.caller
961936 let aa = dC.transactionId
962- let fH = ew(ex, ef, dT, Z, aa)
963- if ((fH == fH))
937+ let fF = ew(ex, ef, dT, Z, aa)
938+ if ((fF == fF))
964939 then {
965- let ez = fH._5
966- let fx = fH._4
967- let dQ = fH._3
968- let cY = fH._2
969- let fI = fH._1
970- let dK = if (if ((fq > 0))
971- then (fq > fI)
940+ let ez = fF._5
941+ let fv = fF._4
942+ let dQ = fF._3
943+ let cY = fF._2
944+ let fG = fF._1
945+ let dK = if (if ((fo > 0))
946+ then (fo > fG)
972947 else false)
973- then aI(makeString(["amount to receive is less than ", toString(fq)], ""))
974- else fI
975- let fJ = invoke(aL, "burn", [ef], [AttachedPayment(dT, ef)])
976- if ((fJ == fJ))
948+ then aI(makeString(["amount to receive is less than ", toString(fo)], ""))
949+ else fG
950+ let fH = invoke(aL, "burn", [ef], [AttachedPayment(dT, ef)])
951+ if ((fH == fH))
977952 then {
978- let fK = [ScriptTransfer(Z, dK, ex)]
979- let fB = if ((dQ > 0))
953+ let fI = [ScriptTransfer(Z, dK, ex)]
954+ let fz = if ((dQ > 0))
980955 then [ScriptTransfer(aM, dQ, ex)]
981956 else nil
982- let fL = {
983- let fM = if ((this == aM))
957+ let fJ = {
958+ let fK = if ((this == aM))
984959 then 0
985960 else dQ
986961 if (ez)
987- then $Tuple2(-((dK + fM)), 0)
988- else $Tuple2(0, -((dK + fM)))
962+ then $Tuple2(-((dK + fK)), 0)
963+ else $Tuple2(0, -((dK + fK)))
989964 }
990- let dm = fL._1
991- let dn = fL._2
992- let fN = dl(dm, dn, 0)
993- let fl = fN._1
994- let dc = fN._2
995- let fn = dp(dk, dc)
996- if ((fn == fn))
997- then $Tuple2((((cY ++ fK) ++ fB) ++ fl), dK)
965+ let dm = fJ._1
966+ let dn = fJ._2
967+ let fL = dl(dm, dn, 0)
968+ let fk = fL._1
969+ let dc = fL._2
970+ let fl = dp(dk, dc)
971+ if ((fl == fl))
972+ then $Tuple2((((cY ++ fI) ++ fz) ++ fk), dK)
998973 else throw("Strict value is not equal to itself.")
999974 }
1000975 else throw("Strict value is not equal to itself.")
1008983
1009984 @Callable(dC)
1010985 func getOneTknREADONLY (ex,ef) = {
1011- let fO = ew(aS(ex), ef, bb, unit, unit)
1012- let fI = fO._1
1013- let cY = fO._2
1014- let dQ = fO._3
1015- let fx = fO._4
1016- let ez = fO._5
1017- $Tuple2(nil, $Tuple3(fI, dQ, fx))
986+ let fM = ew(aS(ex), ef, bb, unit, unit)
987+ let fG = fM._1
988+ let cY = fM._2
989+ let dQ = fM._3
990+ let fv = fM._4
991+ let ez = fM._5
992+ $Tuple2(nil, $Tuple3(fG, dQ, fv))
1018993 }
1019994
1020995
1021996
1022997 @Callable(dC)
1023-func unstakeAndGetOneTkn (fP,fF,fq) = {
1024- let fs = {
1025- let ft = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1026- if ($isInstanceOf(ft, "Boolean"))
1027- then ft
1028- else throw(($getType(ft) + " couldn't be cast to Boolean"))
998+func unstakeAndGetOneTkn (fN,fD,fo) = {
999+ let fq = {
1000+ let fr = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1001+ if ($isInstanceOf(fr, "Boolean"))
1002+ then fr
1003+ else throw(($getType(fr) + " couldn't be cast to Boolean"))
10291004 }
1030- let fG = if (if (aN())
1005+ let fE = if (if (aN())
10311006 then true
10321007 else (ba == n))
10331008 then true
1034- else fs
1035- let ey = [if (if (!(fG))
1009+ else fq
1010+ let ey = [if (if (!(fE))
10361011 then true
10371012 else eS(dC))
10381013 then true
10411016 else aI("no payments are expected")]
10421017 if ((ey == ey))
10431018 then {
1044- let ex = aS(fF)
1019+ let ex = aS(fD)
10451020 let Z = dC.caller
10461021 let aa = dC.transactionId
10471022 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1048- let fQ = invoke(bh, "unstake", [toBase58String(bb), fP], nil)
1049- if ((fQ == fQ))
1023+ let fO = invoke(bh, "unstake", [toBase58String(bb), fN], nil)
1024+ if ((fO == fO))
10501025 then {
1051- let fR = ew(ex, fP, bb, Z, aa)
1052- if ((fR == fR))
1026+ let fP = ew(ex, fN, bb, Z, aa)
1027+ if ((fP == fP))
10531028 then {
1054- let ez = fR._5
1055- let fx = fR._4
1056- let dQ = fR._3
1057- let cY = fR._2
1058- let fI = fR._1
1059- let dK = if (if ((fq > 0))
1060- then (fq > fI)
1029+ let ez = fP._5
1030+ let fv = fP._4
1031+ let dQ = fP._3
1032+ let cY = fP._2
1033+ let fG = fP._1
1034+ let dK = if (if ((fo > 0))
1035+ then (fo > fG)
10611036 else false)
1062- then aI(makeString(["amount to receive is less than ", toString(fq)], ""))
1063- else fI
1064- let fJ = invoke(aL, "burn", [fP], [AttachedPayment(bb, fP)])
1065- if ((fJ == fJ))
1037+ then aI(makeString(["amount to receive is less than ", toString(fo)], ""))
1038+ else fG
1039+ let fH = invoke(aL, "burn", [fN], [AttachedPayment(bb, fN)])
1040+ if ((fH == fH))
10661041 then {
1067- let fK = [ScriptTransfer(dC.caller, dK, ex)]
1068- let fB = if ((dQ > 0))
1042+ let fI = [ScriptTransfer(dC.caller, dK, ex)]
1043+ let fz = if ((dQ > 0))
10691044 then [ScriptTransfer(aM, dQ, ex)]
10701045 else nil
1071- let fS = {
1072- let fM = if ((this == aM))
1046+ let fQ = {
1047+ let fK = if ((this == aM))
10731048 then 0
10741049 else dQ
10751050 if (ez)
1076- then $Tuple2(-((dK + fM)), 0)
1077- else $Tuple2(0, -((dK + fM)))
1051+ then $Tuple2(-((dK + fK)), 0)
1052+ else $Tuple2(0, -((dK + fK)))
10781053 }
1079- let dm = fS._1
1080- let dn = fS._2
1081- let fT = dl(dm, dn, 0)
1082- let fl = fT._1
1083- let dc = fT._2
1084- let fn = dp(dk, dc)
1085- if ((fn == fn))
1086- then $Tuple2((((cY ++ fK) ++ fB) ++ fl), dK)
1054+ let dm = fQ._1
1055+ let dn = fQ._2
1056+ let fR = dl(dm, dn, 0)
1057+ let fk = fR._1
1058+ let dc = fR._2
1059+ let fl = dp(dk, dc)
1060+ if ((fl == fl))
1061+ then $Tuple2((((cY ++ fI) ++ fz) ++ fk), dK)
10871062 else throw("Strict value is not equal to itself.")
10881063 }
10891064 else throw("Strict value is not equal to itself.")
11001075 @Callable(dC)
11011076 func get () = {
11021077 let cJ = dB(dC)
1103- let fU = cJ._1
1078+ let fS = cJ._1
11041079 let cq = cJ._2
11051080 let dE = cJ._3
11061081 let bY = cJ._4
11071082 let cr = cJ._5
11081083 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1109- let fV = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1110- if ((fV == fV))
1084+ let fT = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1085+ if ((fT == fT))
11111086 then {
1112- let fW = dl(-(fU), -(cq), 0)
1113- let fl = fW._1
1114- let dc = fW._2
1115- let fn = dp(dk, dc)
1116- if ((fn == fn))
1117- then (cr ++ fl)
1087+ let fU = dl(-(fS), -(cq), 0)
1088+ let fk = fU._1
1089+ let dc = fU._2
1090+ let fl = dp(dk, dc)
1091+ if ((fl == fl))
1092+ then (cr ++ fk)
11181093 else throw("Strict value is not equal to itself.")
11191094 }
11201095 else throw("Strict value is not equal to itself.")
11231098
11241099
11251100 @Callable(dC)
1126-func getNoLess (fX,fY) = {
1101+func getNoLess (fV,fW) = {
11271102 let cJ = dB(dC)
11281103 let cp = cJ._1
11291104 let cq = cJ._2
11301105 let dE = cJ._3
11311106 let bY = cJ._4
11321107 let cr = cJ._5
1133- if ((fX > cp))
1134- then throw(((("noLessThenAmtAsset failed: " + toString(cp)) + " < ") + toString(fX)))
1135- else if ((fY > cq))
1136- then throw(((("noLessThenPriceAsset failed: " + toString(cq)) + " < ") + toString(fY)))
1108+ if ((fV > cp))
1109+ then throw(((("noLessThenAmtAsset failed: " + toString(cp)) + " < ") + toString(fV)))
1110+ else if ((fW > cq))
1111+ then throw(((("noLessThenPriceAsset failed: " + toString(cq)) + " < ") + toString(fW)))
11371112 else {
11381113 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1139- let fV = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1140- if ((fV == fV))
1114+ let fT = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1115+ if ((fT == fT))
11411116 then {
1142- let fZ = dl(-(cp), -(cq), 0)
1143- let fl = fZ._1
1144- let dc = fZ._2
1145- let fn = dp(dk, dc)
1146- if ((fn == fn))
1147- then (cr ++ fl)
1117+ let fX = dl(-(cp), -(cq), 0)
1118+ let fk = fX._1
1119+ let dc = fX._2
1120+ let fl = dp(dk, dc)
1121+ if ((fl == fl))
1122+ then (cr ++ fk)
11481123 else throw("Strict value is not equal to itself.")
11491124 }
11501125 else throw("Strict value is not equal to itself.")
11551130
11561131 @Callable(dC)
11571132 func unstakeAndGet (dK) = {
1158- let ga = if ((size(dC.payments) != 0))
1133+ let fY = if ((size(dC.payments) != 0))
11591134 then throw("No payments are expected")
11601135 else true
1161- if ((ga == ga))
1136+ if ((fY == fY))
11621137 then {
11631138 let bN = aP()
11641139 let ca = fromBase58String(bN[q])
11651140 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1166- let fQ = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1167- if ((fQ == fQ))
1141+ let fO = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1142+ if ((fO == fO))
11681143 then {
11691144 let cJ = bW(toBase58String(dC.transactionId), toBase58String(ca), dK, dC.caller)
11701145 let cp = cJ._1
11711146 let cq = cJ._2
11721147 let cd = parseIntValue(cJ._9)
11731148 let cr = cJ._10
1174- let gb = if (if (aN())
1149+ let fZ = if (if (aN())
11751150 then true
11761151 else (cd == n))
11771152 then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
11781153 else true
1179- if ((gb == gb))
1154+ if ((fZ == fZ))
11801155 then {
1181- let fV = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1182- if ((fV == fV))
1156+ let fT = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1157+ if ((fT == fT))
11831158 then {
1184- let gc = dl(-(cp), -(cq), 0)
1185- let fl = gc._1
1186- let dc = gc._2
1187- let fn = dp(dk, dc)
1188- if ((fn == fn))
1189- then (cr ++ fl)
1159+ let ga = dl(-(cp), -(cq), 0)
1160+ let fk = ga._1
1161+ let dc = ga._2
1162+ let fl = dp(dk, dc)
1163+ if ((fl == fl))
1164+ then (cr ++ fk)
11901165 else throw("Strict value is not equal to itself.")
11911166 }
11921167 else throw("Strict value is not equal to itself.")
12011176
12021177
12031178 @Callable(dC)
1204-func unstakeAndGetNoLess (fP,gd,fY) = {
1205- let fG = if (aN())
1179+func unstakeAndGetNoLess (fN,gb,fW) = {
1180+ let fE = if (aN())
12061181 then true
12071182 else (ba == n)
1208- let ey = [if (!(fG))
1183+ let ey = [if (!(fE))
12091184 then true
12101185 else throw("get operation is blocked by admin"), if ((size(dC.payments) == 0))
12111186 then true
12131188 if ((ey == ey))
12141189 then {
12151190 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1216- let fQ = invoke(bh, "unstake", [toBase58String(bb), fP], nil)
1217- if ((fQ == fQ))
1191+ let fO = invoke(bh, "unstake", [toBase58String(bb), fN], nil)
1192+ if ((fO == fO))
12181193 then {
1219- let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fP, dC.caller)
1194+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fN, dC.caller)
12201195 let cp = cJ._1
12211196 let cq = cJ._2
12221197 let cr = cJ._10
1223- let ge = [if ((cp >= gd))
1198+ let gc = [if ((cp >= gb))
12241199 then true
1225- else throw(makeString(["amount asset amount to receive is less than ", toString(gd)], "")), if ((cq >= fY))
1200+ else throw(makeString(["amount asset amount to receive is less than ", toString(gb)], "")), if ((cq >= fW))
12261201 then true
1227- else throw(makeString(["price asset amount to receive is less than ", toString(fY)], ""))]
1228- if ((ge == ge))
1202+ else throw(makeString(["price asset amount to receive is less than ", toString(fW)], ""))]
1203+ if ((gc == gc))
12291204 then {
1230- let fV = invoke(aL, "burn", [fP], [AttachedPayment(bb, fP)])
1231- if ((fV == fV))
1205+ let fT = invoke(aL, "burn", [fN], [AttachedPayment(bb, fN)])
1206+ if ((fT == fT))
12321207 then {
1233- let gf = dl(-(cp), -(cq), 0)
1234- let fl = gf._1
1235- let dc = gf._2
1236- let fn = dp(dk, dc)
1237- if ((fn == fn))
1238- then (cr ++ fl)
1208+ let gd = dl(-(cp), -(cq), 0)
1209+ let fk = gd._1
1210+ let dc = gd._2
1211+ let fl = dp(dk, dc)
1212+ if ((fl == fl))
1213+ then (cr ++ fk)
12391214 else throw("Strict value is not equal to itself.")
12401215 }
12411216 else throw("Strict value is not equal to itself.")
12501225
12511226
12521227 @Callable(dC)
1253-func activate (gg,gh) = if ((toString(dC.caller) != toString(aL)))
1228+func activate (ge,gf) = if ((toString(dC.caller) != toString(aL)))
12541229 then throw("permissions denied")
1255- else $Tuple2([StringEntry(ac(), gg), StringEntry(ad(), gh)], "success")
1230+ else $Tuple2([StringEntry(ac(), ge), StringEntry(ad(), gf)], "success")
12561231
12571232
12581233
12591234 @Callable(dC)
12601235 func refreshKLp () = {
1261- let gi = valueOrElse(getInteger(ai), 0)
1262- let gj = if (((height - gi) >= al))
1236+ let gg = valueOrElse(getInteger(ai), 0)
1237+ let gh = if (((height - gg) >= al))
12631238 then unit
12641239 else aI(makeString([toString(al), " blocks have not passed since the previous call"], ""))
1265- if ((gj == gj))
1240+ if ((gh == gh))
12661241 then {
12671242 let dw = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ah), "0")), aK("invalid kLp"))
1268- let gk = dl(0, 0, 0)
1269- let gl = gk._1
1270- let dc = gk._2
1243+ let gi = dl(0, 0, 0)
1244+ let gj = gi._1
1245+ let dc = gi._2
12711246 let do = if ((dw != dc))
1272- then gl
1247+ then gj
12731248 else aI("nothing to refresh")
12741249 $Tuple2(do, toString(dc))
12751250 }
13281303 func statsREADONLY () = {
13291304 let bN = aP()
13301305 let ca = fromBase58String(bN[q])
1331- let gm = bN[r]
1332- let gn = bN[s]
1306+ let gk = bN[r]
1307+ let gl = bN[s]
13331308 let cC = bN[v]
13341309 let cD = bN[w]
13351310 let bO = parseIntValue(bN[t])
13361311 let bP = parseIntValue(bN[u])
1337- let go = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1338- let gp = by(gm)
1339- let gq = by(gn)
1340- let gr = if ((go == 0))
1312+ let gm = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1313+ let gn = by(gk)
1314+ let go = by(gl)
1315+ let gp = if ((gm == 0))
13411316 then [e, e, e]
1342- else bL(gp, gq, go)
1317+ else bL(gn, go, gm)
13431318 let ck = 0
1344- let gs = G(gr[1], b)
1345- let gt = G(gr[2], b)
1346- let gu = value(getInteger(aL, aw(toString(this))))
1347- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gp), toString(gq), toString(go), toString(ck), toString(gs), toString(gt), toString(gu)], j))
1319+ let gq = G(gp[1], b)
1320+ let gr = G(gp[2], b)
1321+ let gs = value(getInteger(aL, aw(toString(this))))
1322+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gn), toString(go), toString(gm), toString(ck), toString(gq), toString(gr), toString(gs)], j))
13481323 }
13491324
13501325
13601335 let bO = parseIntValue(bN[t])
13611336 let bP = parseIntValue(bN[u])
13621337 let cd = bN[p]
1363- let go = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1364- let gp = by(cA)
1365- let gq = by(cB)
1366- let bJ = D(gp, bO)
1367- let bK = D(gq, bP)
1368- let cj = if ((go == 0))
1338+ let gm = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1339+ let gn = by(cA)
1340+ let go = by(cB)
1341+ let bJ = D(gn, bO)
1342+ let bK = D(go, bP)
1343+ let cj = if ((gm == 0))
13691344 then e
13701345 else bA(bK, bJ)
13711346 let cG = D(cu, bO)
13731348 let cw = G(cH, bP)
13741349 let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
13751350 let cR = dI._1
1376- let gv = dI._3
1351+ let gt = dI._3
13771352 let cf = dI._4
13781353 let ch = dI._5
13791354 let ce = dI._6
13931368 let bO = parseIntValue(bN[t])
13941369 let bP = parseIntValue(bN[u])
13951370 let cd = bN[p]
1396- let go = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1397- let gw = by(cA)
1398- let gx = by(cB)
1399- let gy = D(gw, bO)
1400- let gz = D(gx, bP)
1401- let cj = if ((go == 0))
1371+ let gm = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1372+ let gu = by(cA)
1373+ let gv = by(cB)
1374+ let gw = D(gu, bO)
1375+ let gx = D(gv, bP)
1376+ let cj = if ((gm == 0))
14021377 then e
1403- else bA(gz, gy)
1378+ else bA(gx, gw)
14041379 let cH = D(cw, bP)
14051380 let cG = fraction(cH, d, cj)
14061381 let cu = G(cG, bO)
14071382 let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
14081383 let cR = dI._1
1409- let gv = dI._3
1384+ let gt = dI._3
14101385 let cf = dI._4
14111386 let ch = dI._5
14121387 let ce = dI._6
14161391
14171392
14181393 @Callable(dC)
1419-func evaluateGetREADONLY (gA,gB) = {
1420- let cJ = bW("", gA, gB, this)
1394+func evaluateGetREADONLY (gy,gz) = {
1395+ let cJ = bW("", gy, gz, this)
14211396 let cp = cJ._1
14221397 let cq = cJ._2
14231398 let cf = cJ._5
14291404 }
14301405
14311406
1432-@Verifier(gC)
1433-func gD () = {
1434- let gE = {
1407+@Verifier(gA)
1408+func gB () = {
1409+ let gC = {
14351410 let dN = eP()
14361411 if ($isInstanceOf(dN, "ByteVector"))
14371412 then {
14391414 eT
14401415 }
14411416 else if ($isInstanceOf(dN, "Unit"))
1442- then gC.senderPublicKey
1417+ then gA.senderPublicKey
14431418 else throw("Match error")
14441419 }
1445- let dN = gC
1420+ let dN = gA
14461421 if ($isInstanceOf(dN, "Order"))
14471422 then {
14481423 let ds = dN
1449- let gF = aO()
1424+ let gD = aO()
14501425 let aB = dr(ds)
14511426 let aC = sigVerify(ds.bodyBytes, ds.proofs[0], ds.senderPublicKey)
1452- let aD = sigVerify(ds.bodyBytes, ds.proofs[1], gF)
1427+ let aD = sigVerify(ds.bodyBytes, ds.proofs[1], gD)
14531428 if (if (if (aB)
14541429 then aC
14551430 else false)
14611436 else if ($isInstanceOf(dN, "SetScriptTransaction"))
14621437 then {
14631438 let eQ = dN
1464- let gG = blake2b256(value(eQ.script))
1465- let gH = fromBase64String(value(getString(aL, ay())))
1466- let gI = scriptHash(this)
1467- if (if ((gH == gG))
1468- then (gI != gG)
1439+ let gE = blake2b256(value(eQ.script))
1440+ let gF = fromBase64String(value(getString(aL, ay())))
1441+ let gG = scriptHash(this)
1442+ if (if ((gF == gE))
1443+ then (gG != gE)
14691444 else false)
14701445 then true
1471- else sigVerify(gC.bodyBytes, gC.proofs[0], gE)
1446+ else sigVerify(gA.bodyBytes, gA.proofs[0], gC)
14721447 }
1473- else sigVerify(gC.bodyBytes, gC.proofs[0], gE)
1448+ else sigVerify(gA.bodyBytes, gA.proofs[0], gC)
14741449 }
14751450
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 = G(cn, bF)
292292 let cq = G(co, bG)
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, toInt(((em * (sqrtBigInt((d + ((eo * d) / el)), 18, 18, DOWN) - d)) / d))])
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 ey = [if ((dT == bb))
571571 then true
572572 else aI("invalid lp asset")]
573573 if ((ey == ey))
574574 then {
575575 let ez = if ((ex == bc))
576576 then true
577577 else if ((ex == bd))
578578 then false
579579 else aI("invalid asset")
580580 let eA = if (ez)
581581 then toBigInt(by(aU(bc)))
582582 else toBigInt(by(aU(bd)))
583583 let eB = by(aU(bc))
584584 let eC = by(aU(bd))
585585 let eD = if (ez)
586586 then eB
587587 else eC
588588 let eE = toBigInt(eD)
589589 let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
590590 let eF = toBigInt(ef)
591591 let eG = max([0, toInt(((eA * (d - pow((d - ((eF * d) / em)), 18, h, 0, 18, DOWN))) / d))])
592592 let eH = dP(eG)
593593 let eI = eH._1
594594 let dQ = eH._2
595595 let eJ = if (ez)
596596 then $Tuple4(eI, 0, (eB - eG), eC)
597597 else $Tuple4(0, eI, eB, (eC - eG))
598598 let eK = eJ._1
599599 let eL = eJ._2
600600 let eM = eJ._3
601601 let eN = eJ._4
602602 let ei = bA(D(eN, bf), D(eM, be))
603603 let ej = G(ei, b)
604604 let cY = if (dU)
605605 then nil
606606 else [StringEntry(ab(toString(value(Z)), toBase58String(value(aa))), bu(eK, eL, ef, ej, height, lastBlock.timestamp)), IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej)]
607607 let eq = bA(D(eC, bf), D(eB, be))
608608 let er = G(eq, b)
609609 let es = {
610610 let eO = (toInt(fraction(eA, eF, em)) * 2)
611611 fraction((eI - eO), b, eO)
612612 }
613613 $Tuple5(eI, cY, dQ, es, ez)
614614 }
615615 else throw("Strict value is not equal to itself.")
616616 }
617617
618618
619619 func eP () = {
620620 let dN = getString(S())
621621 if ($isInstanceOf(dN, "String"))
622622 then {
623623 let eQ = dN
624624 fromBase58String(eQ)
625625 }
626626 else if ($isInstanceOf(dN, "Unit"))
627627 then unit
628628 else throw("Match error")
629629 }
630630
631631
632632 func eR () = {
633633 let dN = getString(T())
634634 if ($isInstanceOf(dN, "String"))
635635 then {
636636 let eQ = dN
637637 fromBase58String(eQ)
638638 }
639639 else if ($isInstanceOf(dN, "Unit"))
640640 then unit
641641 else throw("Match error")
642642 }
643643
644644
645645 func eS (dC) = {
646646 let dN = eP()
647647 if ($isInstanceOf(dN, "ByteVector"))
648648 then {
649649 let eT = dN
650650 (dC.callerPublicKey == eT)
651651 }
652652 else if ($isInstanceOf(dN, "Unit"))
653653 then (dC.caller == this)
654654 else throw("Match error")
655655 }
656656
657657
658658 func eU (dC) = {
659659 let eV = throw("Permission denied")
660660 let dN = eP()
661661 if ($isInstanceOf(dN, "ByteVector"))
662662 then {
663663 let eT = dN
664664 if ((dC.callerPublicKey == eT))
665665 then true
666666 else eV
667667 }
668668 else if ($isInstanceOf(dN, "Unit"))
669669 then if ((dC.caller == this))
670670 then true
671671 else eV
672672 else throw("Match error")
673673 }
674674
675675
676676 @Callable(dC)
677677 func setManager (eW) = {
678678 let eX = eU(dC)
679679 if ((eX == eX))
680680 then {
681681 let eY = fromBase58String(eW)
682682 if ((eY == eY))
683683 then [StringEntry(T(), eW)]
684684 else throw("Strict value is not equal to itself.")
685685 }
686686 else throw("Strict value is not equal to itself.")
687687 }
688688
689689
690690
691691 @Callable(dC)
692692 func confirmManager () = {
693693 let eZ = eR()
694694 let fa = if (isDefined(eZ))
695695 then true
696696 else throw("No pending manager")
697697 if ((fa == fa))
698698 then {
699699 let fb = if ((dC.callerPublicKey == value(eZ)))
700700 then true
701701 else throw("You are not pending manager")
702702 if ((fb == fb))
703703 then [StringEntry(S(), toBase58String(value(eZ))), DeleteEntry(T())]
704704 else throw("Strict value is not equal to itself.")
705705 }
706706 else throw("Strict value is not equal to itself.")
707707 }
708708
709709
710710
711711 @Callable(dC)
712712 func put (ct,fc) = if ((0 > ct))
713713 then throw("Invalid slippageTolerance passed")
714714 else {
715715 let dI = dF(dC, ct, true)
716716 let cV = dI._2
717717 let ca = dI._7
718718 let cr = dI._9
719719 let cW = dI._10
720720 let cX = dI._11
721721 let fd = dI._12
722722 let fe = dI._13
723723 let dG = toBigInt(value(dC.payments[0]).amount)
724724 let dH = toBigInt(value(dC.payments[1]).amount)
725- let dh = (toBigInt(by(aU(bc))) - dG)
726- if ((dh == dh))
725+ let dk = dd(dG, dH, toBigInt(0))
726+ if ((dk == dk))
727727 then {
728- let di = (toBigInt(by(aU(bd))) - dH)
729- if ((di == di))
728+ let dL = invoke(aL, "emit", [cV], nil)
729+ if ((dL == dL))
730730 then {
731- let dj = toBigInt(value(assetInfo(bb)).quantity)
732- if ((dj == dj))
731+ let dM = {
732+ let dN = dL
733+ if ($isInstanceOf(dN, "Address"))
734+ then {
735+ let dO = dN
736+ invoke(dO, "emit", [cV], nil)
737+ }
738+ else unit
739+ }
740+ if ((dM == dM))
733741 then {
734- let dk = dd(dG, dH, toBigInt(0))
735- if ((dk == dk))
742+ let ff = if ((cW > 0))
743+ then invoke(bi, "put", nil, [AttachedPayment(fd, cW)])
744+ else nil
745+ if ((ff == ff))
736746 then {
737- let dL = invoke(aL, "emit", [cV], nil)
738- if ((dL == dL))
747+ let fg = if ((cX > 0))
748+ then invoke(bi, "put", nil, [AttachedPayment(fe, cX)])
749+ else nil
750+ if ((fg == fg))
739751 then {
740- let dM = {
741- let dN = dL
742- if ($isInstanceOf(dN, "Address"))
743- then {
744- let dO = dN
745- invoke(dO, "emit", [cV], nil)
746- }
747- else unit
748- }
749- if ((dM == dM))
752+ let fh = if (fc)
750753 then {
751- let ff = if ((cW > 0))
752- then invoke(bi, "put", nil, [AttachedPayment(fd, cW)])
753- else nil
754- if ((ff == ff))
755- then {
756- let fg = if ((cX > 0))
757- then invoke(bi, "put", nil, [AttachedPayment(fe, cX)])
758- else nil
759- if ((fg == fg))
760- then {
761- let fh = if (fc)
762- then {
763- let fi = invoke(bh, "stake", nil, [AttachedPayment(ca, cV)])
764- if ((fi == fi))
765- then nil
766- else throw("Strict value is not equal to itself.")
767- }
768- else [ScriptTransfer(dC.caller, cV, ca)]
769- let fj = value(assetInfo(bb)).quantity
770- if ((fj == fj))
771- then {
772- let fk = dl(0, 0, 0)
773- if ((fk == fk))
774- then {
775- let dc = fk._2
776- let fl = fk._1
777- let fm = aI(makeString([toString(dh), toString(di), toString(dj), toString(dk), toString(dc), toString(cV), toString(cW), toString(cX), toString(dj), toString(fj)], " "))
778- if ((fm == fm))
779- then {
780- let fn = dp(dk, dc)
781- if ((fn == fn))
782- then ((cr ++ fh) ++ fl)
783- else throw("Strict value is not equal to itself.")
784- }
785- else throw("Strict value is not equal to itself.")
786- }
787- else throw("Strict value is not equal to itself.")
788- }
789- else throw("Strict value is not equal to itself.")
790- }
791- else throw("Strict value is not equal to itself.")
792- }
754+ let fi = invoke(bh, "stake", nil, [AttachedPayment(ca, cV)])
755+ if ((fi == fi))
756+ then nil
757+ else throw("Strict value is not equal to itself.")
758+ }
759+ else [ScriptTransfer(dC.caller, cV, ca)]
760+ let fj = dl(0, 0, 0)
761+ if ((fj == fj))
762+ then {
763+ let dc = fj._2
764+ let fk = fj._1
765+ let fl = dp(dk, dc)
766+ if ((fl == fl))
767+ then ((cr ++ fh) ++ fk)
793768 else throw("Strict value is not equal to itself.")
794769 }
795770 else throw("Strict value is not equal to itself.")
796771 }
797772 else throw("Strict value is not equal to itself.")
798773 }
799774 else throw("Strict value is not equal to itself.")
800775 }
801776 else throw("Strict value is not equal to itself.")
802777 }
803778 else throw("Strict value is not equal to itself.")
804779 }
805780 else throw("Strict value is not equal to itself.")
806781 }
807782
808783
809784
810785 @Callable(dC)
811-func putForFree (fo) = if ((0 > fo))
786+func putForFree (fm) = if ((0 > fm))
812787 then throw("Invalid value passed")
813788 else {
814- let dI = dF(dC, fo, false)
789+ let dI = dF(dC, fm, false)
815790 let cr = dI._9
816791 let dG = toBigInt(value(dC.payments[0]).amount)
817792 let dH = toBigInt(value(dC.payments[1]).amount)
818793 let dk = dd(dG, dH, toBigInt(0))
819794 if ((dk == dk))
820795 then {
821- let fp = dl(0, 0, 0)
822- let fl = fp._1
823- let dc = fp._2
824- let fn = dp(dk, dc)
825- if ((fn == fn))
826- then (cr ++ fl)
796+ let fn = dl(0, 0, 0)
797+ let fk = fn._1
798+ let dc = fn._2
799+ let fl = dp(dk, dc)
800+ if ((fl == fl))
801+ then (cr ++ fk)
827802 else throw("Strict value is not equal to itself.")
828803 }
829804 else throw("Strict value is not equal to itself.")
830805 }
831806
832807
833808
834809 @Callable(dC)
835-func putOneTkn (fq,fr) = {
836- let fs = {
837- let ft = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
838- if ($isInstanceOf(ft, "Boolean"))
839- then ft
840- else throw(($getType(ft) + " couldn't be cast to Boolean"))
810+func putOneTkn (fo,fp) = {
811+ let fq = {
812+ let fr = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
813+ if ($isInstanceOf(fr, "Boolean"))
814+ then fr
815+ else throw(($getType(fr) + " couldn't be cast to Boolean"))
841816 }
842- let fu = if (if (if (aN())
817+ let fs = if (if (if (aN())
843818 then true
844819 else (ba == l))
845820 then true
846821 else (ba == n))
847822 then true
848- else fs
849- let ey = [if (if (!(fu))
823+ else fq
824+ let ey = [if (if (!(fs))
850825 then true
851826 else eS(dC))
852827 then true
853828 else aI("put operation is blocked by admin"), if ((size(dC.payments) == 1))
854829 then true
855830 else aI("exactly 1 payment are expected")]
856831 if ((ey == ey))
857832 then {
858- let fv = dC.payments[0]
859- let dT = fv.assetId
860- let dS = fv.amount
833+ let ft = dC.payments[0]
834+ let dT = ft.assetId
835+ let dS = ft.amount
861836 let dk = if ((dT == bc))
862837 then dd(toBigInt(dS), toBigInt(0), toBigInt(0))
863838 else if ((dT == bd))
864839 then dd(toBigInt(0), toBigInt(dS), toBigInt(0))
865840 else aI("payment asset is not supported")
866841 let Z = dC.caller
867842 let aa = dC.transactionId
868- let fw = dR(dS, dT, Z, aa)
869- if ((fw == fw))
843+ let fu = dR(dS, dT, Z, aa)
844+ if ((fu == fu))
870845 then {
871- let dX = fw._5
872- let fx = fw._4
873- let dQ = fw._3
874- let cY = fw._2
875- let fy = fw._1
876- let fz = if (if ((fq > 0))
877- then (fq > fy)
846+ let dX = fu._5
847+ let fv = fu._4
848+ let dQ = fu._3
849+ let cY = fu._2
850+ let fw = fu._1
851+ let fx = if (if ((fo > 0))
852+ then (fo > fw)
878853 else false)
879- then aI(makeString(["amount to receive is less than ", toString(fq)], ""))
880- else fy
881- let dL = dJ(fz)
854+ then aI(makeString(["amount to receive is less than ", toString(fo)], ""))
855+ else fw
856+ let dL = dJ(fx)
882857 if ((dL == dL))
883858 then {
884- let fh = if (fr)
859+ let fh = if (fp)
885860 then {
886- let fA = invoke(bh, "stake", nil, [AttachedPayment(bb, fz)])
887- if ((fA == fA))
861+ let fy = invoke(bh, "stake", nil, [AttachedPayment(bb, fx)])
862+ if ((fy == fy))
888863 then nil
889864 else throw("Strict value is not equal to itself.")
890865 }
891- else [ScriptTransfer(dC.caller, fz, bb)]
892- let fB = if ((dQ > 0))
866+ else [ScriptTransfer(dC.caller, fx, bb)]
867+ let fz = if ((dQ > 0))
893868 then [ScriptTransfer(aM, dQ, dT)]
894869 else nil
895- let fC = if ((this == aM))
870+ let fA = if ((this == aM))
896871 then $Tuple2(0, 0)
897872 else if (dX)
898873 then $Tuple2(-(dQ), 0)
899874 else $Tuple2(0, -(dQ))
900- let dm = fC._1
901- let dn = fC._2
902- let fD = dl(dm, dn, 0)
903- let fl = fD._1
904- let dc = fD._2
875+ let dm = fA._1
876+ let dn = fA._2
877+ let fB = dl(dm, dn, 0)
878+ let fk = fB._1
879+ let dc = fB._2
905880 let dw = value(getString(ah))
906- let fn = dp(dk, dc)
907- if ((fn == fn))
908- then $Tuple2((((cY ++ fh) ++ fB) ++ fl), fz)
881+ let fl = dp(dk, dc)
882+ if ((fl == fl))
883+ then $Tuple2((((cY ++ fh) ++ fz) ++ fk), fx)
909884 else throw("Strict value is not equal to itself.")
910885 }
911886 else throw("Strict value is not equal to itself.")
912887 }
913888 else throw("Strict value is not equal to itself.")
914889 }
915890 else throw("Strict value is not equal to itself.")
916891 }
917892
918893
919894
920895 @Callable(dC)
921896 func putOneTknREADONLY (dT,dS) = {
922- let fE = dR(dS, aS(dT), unit, unit)
923- let fy = fE._1
924- let cY = fE._2
925- let dQ = fE._3
926- let fx = fE._4
927- let dX = fE._5
928- $Tuple2(nil, $Tuple3(fy, dQ, fx))
897+ let fC = dR(dS, aS(dT), unit, unit)
898+ let fw = fC._1
899+ let cY = fC._2
900+ let dQ = fC._3
901+ let fv = fC._4
902+ let dX = fC._5
903+ $Tuple2(nil, $Tuple3(fw, dQ, fv))
929904 }
930905
931906
932907
933908 @Callable(dC)
934-func getOneTkn (fF,fq) = {
935- let fs = {
936- let ft = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
937- if ($isInstanceOf(ft, "Boolean"))
938- then ft
939- else throw(($getType(ft) + " couldn't be cast to Boolean"))
909+func getOneTkn (fD,fo) = {
910+ let fq = {
911+ let fr = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
912+ if ($isInstanceOf(fr, "Boolean"))
913+ then fr
914+ else throw(($getType(fr) + " couldn't be cast to Boolean"))
940915 }
941- let fG = if (if (aN())
916+ let fE = if (if (aN())
942917 then true
943918 else (ba == n))
944919 then true
945- else fs
946- let ey = [if (if (!(fG))
920+ else fq
921+ let ey = [if (if (!(fE))
947922 then true
948923 else eS(dC))
949924 then true
950925 else aI("get operation is blocked by admin"), if ((size(dC.payments) == 1))
951926 then true
952927 else aI("exactly 1 payment are expected")]
953928 if ((ey == ey))
954929 then {
955- let ex = aS(fF)
956- let fv = dC.payments[0]
957- let dT = fv.assetId
958- let ef = fv.amount
930+ let ex = aS(fD)
931+ let ft = dC.payments[0]
932+ let dT = ft.assetId
933+ let ef = ft.amount
959934 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(ef))
960935 let Z = dC.caller
961936 let aa = dC.transactionId
962- let fH = ew(ex, ef, dT, Z, aa)
963- if ((fH == fH))
937+ let fF = ew(ex, ef, dT, Z, aa)
938+ if ((fF == fF))
964939 then {
965- let ez = fH._5
966- let fx = fH._4
967- let dQ = fH._3
968- let cY = fH._2
969- let fI = fH._1
970- let dK = if (if ((fq > 0))
971- then (fq > fI)
940+ let ez = fF._5
941+ let fv = fF._4
942+ let dQ = fF._3
943+ let cY = fF._2
944+ let fG = fF._1
945+ let dK = if (if ((fo > 0))
946+ then (fo > fG)
972947 else false)
973- then aI(makeString(["amount to receive is less than ", toString(fq)], ""))
974- else fI
975- let fJ = invoke(aL, "burn", [ef], [AttachedPayment(dT, ef)])
976- if ((fJ == fJ))
948+ then aI(makeString(["amount to receive is less than ", toString(fo)], ""))
949+ else fG
950+ let fH = invoke(aL, "burn", [ef], [AttachedPayment(dT, ef)])
951+ if ((fH == fH))
977952 then {
978- let fK = [ScriptTransfer(Z, dK, ex)]
979- let fB = if ((dQ > 0))
953+ let fI = [ScriptTransfer(Z, dK, ex)]
954+ let fz = if ((dQ > 0))
980955 then [ScriptTransfer(aM, dQ, ex)]
981956 else nil
982- let fL = {
983- let fM = if ((this == aM))
957+ let fJ = {
958+ let fK = if ((this == aM))
984959 then 0
985960 else dQ
986961 if (ez)
987- then $Tuple2(-((dK + fM)), 0)
988- else $Tuple2(0, -((dK + fM)))
962+ then $Tuple2(-((dK + fK)), 0)
963+ else $Tuple2(0, -((dK + fK)))
989964 }
990- let dm = fL._1
991- let dn = fL._2
992- let fN = dl(dm, dn, 0)
993- let fl = fN._1
994- let dc = fN._2
995- let fn = dp(dk, dc)
996- if ((fn == fn))
997- then $Tuple2((((cY ++ fK) ++ fB) ++ fl), dK)
965+ let dm = fJ._1
966+ let dn = fJ._2
967+ let fL = dl(dm, dn, 0)
968+ let fk = fL._1
969+ let dc = fL._2
970+ let fl = dp(dk, dc)
971+ if ((fl == fl))
972+ then $Tuple2((((cY ++ fI) ++ fz) ++ fk), dK)
998973 else throw("Strict value is not equal to itself.")
999974 }
1000975 else throw("Strict value is not equal to itself.")
1001976 }
1002977 else throw("Strict value is not equal to itself.")
1003978 }
1004979 else throw("Strict value is not equal to itself.")
1005980 }
1006981
1007982
1008983
1009984 @Callable(dC)
1010985 func getOneTknREADONLY (ex,ef) = {
1011- let fO = ew(aS(ex), ef, bb, unit, unit)
1012- let fI = fO._1
1013- let cY = fO._2
1014- let dQ = fO._3
1015- let fx = fO._4
1016- let ez = fO._5
1017- $Tuple2(nil, $Tuple3(fI, dQ, fx))
986+ let fM = ew(aS(ex), ef, bb, unit, unit)
987+ let fG = fM._1
988+ let cY = fM._2
989+ let dQ = fM._3
990+ let fv = fM._4
991+ let ez = fM._5
992+ $Tuple2(nil, $Tuple3(fG, dQ, fv))
1018993 }
1019994
1020995
1021996
1022997 @Callable(dC)
1023-func unstakeAndGetOneTkn (fP,fF,fq) = {
1024- let fs = {
1025- let ft = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1026- if ($isInstanceOf(ft, "Boolean"))
1027- then ft
1028- else throw(($getType(ft) + " couldn't be cast to Boolean"))
998+func unstakeAndGetOneTkn (fN,fD,fo) = {
999+ let fq = {
1000+ let fr = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1001+ if ($isInstanceOf(fr, "Boolean"))
1002+ then fr
1003+ else throw(($getType(fr) + " couldn't be cast to Boolean"))
10291004 }
1030- let fG = if (if (aN())
1005+ let fE = if (if (aN())
10311006 then true
10321007 else (ba == n))
10331008 then true
1034- else fs
1035- let ey = [if (if (!(fG))
1009+ else fq
1010+ let ey = [if (if (!(fE))
10361011 then true
10371012 else eS(dC))
10381013 then true
10391014 else aI("get operation is blocked by admin"), if ((size(dC.payments) == 0))
10401015 then true
10411016 else aI("no payments are expected")]
10421017 if ((ey == ey))
10431018 then {
1044- let ex = aS(fF)
1019+ let ex = aS(fD)
10451020 let Z = dC.caller
10461021 let aa = dC.transactionId
10471022 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1048- let fQ = invoke(bh, "unstake", [toBase58String(bb), fP], nil)
1049- if ((fQ == fQ))
1023+ let fO = invoke(bh, "unstake", [toBase58String(bb), fN], nil)
1024+ if ((fO == fO))
10501025 then {
1051- let fR = ew(ex, fP, bb, Z, aa)
1052- if ((fR == fR))
1026+ let fP = ew(ex, fN, bb, Z, aa)
1027+ if ((fP == fP))
10531028 then {
1054- let ez = fR._5
1055- let fx = fR._4
1056- let dQ = fR._3
1057- let cY = fR._2
1058- let fI = fR._1
1059- let dK = if (if ((fq > 0))
1060- then (fq > fI)
1029+ let ez = fP._5
1030+ let fv = fP._4
1031+ let dQ = fP._3
1032+ let cY = fP._2
1033+ let fG = fP._1
1034+ let dK = if (if ((fo > 0))
1035+ then (fo > fG)
10611036 else false)
1062- then aI(makeString(["amount to receive is less than ", toString(fq)], ""))
1063- else fI
1064- let fJ = invoke(aL, "burn", [fP], [AttachedPayment(bb, fP)])
1065- if ((fJ == fJ))
1037+ then aI(makeString(["amount to receive is less than ", toString(fo)], ""))
1038+ else fG
1039+ let fH = invoke(aL, "burn", [fN], [AttachedPayment(bb, fN)])
1040+ if ((fH == fH))
10661041 then {
1067- let fK = [ScriptTransfer(dC.caller, dK, ex)]
1068- let fB = if ((dQ > 0))
1042+ let fI = [ScriptTransfer(dC.caller, dK, ex)]
1043+ let fz = if ((dQ > 0))
10691044 then [ScriptTransfer(aM, dQ, ex)]
10701045 else nil
1071- let fS = {
1072- let fM = if ((this == aM))
1046+ let fQ = {
1047+ let fK = if ((this == aM))
10731048 then 0
10741049 else dQ
10751050 if (ez)
1076- then $Tuple2(-((dK + fM)), 0)
1077- else $Tuple2(0, -((dK + fM)))
1051+ then $Tuple2(-((dK + fK)), 0)
1052+ else $Tuple2(0, -((dK + fK)))
10781053 }
1079- let dm = fS._1
1080- let dn = fS._2
1081- let fT = dl(dm, dn, 0)
1082- let fl = fT._1
1083- let dc = fT._2
1084- let fn = dp(dk, dc)
1085- if ((fn == fn))
1086- then $Tuple2((((cY ++ fK) ++ fB) ++ fl), dK)
1054+ let dm = fQ._1
1055+ let dn = fQ._2
1056+ let fR = dl(dm, dn, 0)
1057+ let fk = fR._1
1058+ let dc = fR._2
1059+ let fl = dp(dk, dc)
1060+ if ((fl == fl))
1061+ then $Tuple2((((cY ++ fI) ++ fz) ++ fk), dK)
10871062 else throw("Strict value is not equal to itself.")
10881063 }
10891064 else throw("Strict value is not equal to itself.")
10901065 }
10911066 else throw("Strict value is not equal to itself.")
10921067 }
10931068 else throw("Strict value is not equal to itself.")
10941069 }
10951070 else throw("Strict value is not equal to itself.")
10961071 }
10971072
10981073
10991074
11001075 @Callable(dC)
11011076 func get () = {
11021077 let cJ = dB(dC)
1103- let fU = cJ._1
1078+ let fS = cJ._1
11041079 let cq = cJ._2
11051080 let dE = cJ._3
11061081 let bY = cJ._4
11071082 let cr = cJ._5
11081083 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1109- let fV = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1110- if ((fV == fV))
1084+ let fT = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1085+ if ((fT == fT))
11111086 then {
1112- let fW = dl(-(fU), -(cq), 0)
1113- let fl = fW._1
1114- let dc = fW._2
1115- let fn = dp(dk, dc)
1116- if ((fn == fn))
1117- then (cr ++ fl)
1087+ let fU = dl(-(fS), -(cq), 0)
1088+ let fk = fU._1
1089+ let dc = fU._2
1090+ let fl = dp(dk, dc)
1091+ if ((fl == fl))
1092+ then (cr ++ fk)
11181093 else throw("Strict value is not equal to itself.")
11191094 }
11201095 else throw("Strict value is not equal to itself.")
11211096 }
11221097
11231098
11241099
11251100 @Callable(dC)
1126-func getNoLess (fX,fY) = {
1101+func getNoLess (fV,fW) = {
11271102 let cJ = dB(dC)
11281103 let cp = cJ._1
11291104 let cq = cJ._2
11301105 let dE = cJ._3
11311106 let bY = cJ._4
11321107 let cr = cJ._5
1133- if ((fX > cp))
1134- then throw(((("noLessThenAmtAsset failed: " + toString(cp)) + " < ") + toString(fX)))
1135- else if ((fY > cq))
1136- then throw(((("noLessThenPriceAsset failed: " + toString(cq)) + " < ") + toString(fY)))
1108+ if ((fV > cp))
1109+ then throw(((("noLessThenAmtAsset failed: " + toString(cp)) + " < ") + toString(fV)))
1110+ else if ((fW > cq))
1111+ then throw(((("noLessThenPriceAsset failed: " + toString(cq)) + " < ") + toString(fW)))
11371112 else {
11381113 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1139- let fV = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1140- if ((fV == fV))
1114+ let fT = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1115+ if ((fT == fT))
11411116 then {
1142- let fZ = dl(-(cp), -(cq), 0)
1143- let fl = fZ._1
1144- let dc = fZ._2
1145- let fn = dp(dk, dc)
1146- if ((fn == fn))
1147- then (cr ++ fl)
1117+ let fX = dl(-(cp), -(cq), 0)
1118+ let fk = fX._1
1119+ let dc = fX._2
1120+ let fl = dp(dk, dc)
1121+ if ((fl == fl))
1122+ then (cr ++ fk)
11481123 else throw("Strict value is not equal to itself.")
11491124 }
11501125 else throw("Strict value is not equal to itself.")
11511126 }
11521127 }
11531128
11541129
11551130
11561131 @Callable(dC)
11571132 func unstakeAndGet (dK) = {
1158- let ga = if ((size(dC.payments) != 0))
1133+ let fY = if ((size(dC.payments) != 0))
11591134 then throw("No payments are expected")
11601135 else true
1161- if ((ga == ga))
1136+ if ((fY == fY))
11621137 then {
11631138 let bN = aP()
11641139 let ca = fromBase58String(bN[q])
11651140 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1166- let fQ = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1167- if ((fQ == fQ))
1141+ let fO = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1142+ if ((fO == fO))
11681143 then {
11691144 let cJ = bW(toBase58String(dC.transactionId), toBase58String(ca), dK, dC.caller)
11701145 let cp = cJ._1
11711146 let cq = cJ._2
11721147 let cd = parseIntValue(cJ._9)
11731148 let cr = cJ._10
1174- let gb = if (if (aN())
1149+ let fZ = if (if (aN())
11751150 then true
11761151 else (cd == n))
11771152 then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
11781153 else true
1179- if ((gb == gb))
1154+ if ((fZ == fZ))
11801155 then {
1181- let fV = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1182- if ((fV == fV))
1156+ let fT = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1157+ if ((fT == fT))
11831158 then {
1184- let gc = dl(-(cp), -(cq), 0)
1185- let fl = gc._1
1186- let dc = gc._2
1187- let fn = dp(dk, dc)
1188- if ((fn == fn))
1189- then (cr ++ fl)
1159+ let ga = dl(-(cp), -(cq), 0)
1160+ let fk = ga._1
1161+ let dc = ga._2
1162+ let fl = dp(dk, dc)
1163+ if ((fl == fl))
1164+ then (cr ++ fk)
11901165 else throw("Strict value is not equal to itself.")
11911166 }
11921167 else throw("Strict value is not equal to itself.")
11931168 }
11941169 else throw("Strict value is not equal to itself.")
11951170 }
11961171 else throw("Strict value is not equal to itself.")
11971172 }
11981173 else throw("Strict value is not equal to itself.")
11991174 }
12001175
12011176
12021177
12031178 @Callable(dC)
1204-func unstakeAndGetNoLess (fP,gd,fY) = {
1205- let fG = if (aN())
1179+func unstakeAndGetNoLess (fN,gb,fW) = {
1180+ let fE = if (aN())
12061181 then true
12071182 else (ba == n)
1208- let ey = [if (!(fG))
1183+ let ey = [if (!(fE))
12091184 then true
12101185 else throw("get operation is blocked by admin"), if ((size(dC.payments) == 0))
12111186 then true
12121187 else throw("no payments are expected")]
12131188 if ((ey == ey))
12141189 then {
12151190 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1216- let fQ = invoke(bh, "unstake", [toBase58String(bb), fP], nil)
1217- if ((fQ == fQ))
1191+ let fO = invoke(bh, "unstake", [toBase58String(bb), fN], nil)
1192+ if ((fO == fO))
12181193 then {
1219- let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fP, dC.caller)
1194+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fN, dC.caller)
12201195 let cp = cJ._1
12211196 let cq = cJ._2
12221197 let cr = cJ._10
1223- let ge = [if ((cp >= gd))
1198+ let gc = [if ((cp >= gb))
12241199 then true
1225- else throw(makeString(["amount asset amount to receive is less than ", toString(gd)], "")), if ((cq >= fY))
1200+ else throw(makeString(["amount asset amount to receive is less than ", toString(gb)], "")), if ((cq >= fW))
12261201 then true
1227- else throw(makeString(["price asset amount to receive is less than ", toString(fY)], ""))]
1228- if ((ge == ge))
1202+ else throw(makeString(["price asset amount to receive is less than ", toString(fW)], ""))]
1203+ if ((gc == gc))
12291204 then {
1230- let fV = invoke(aL, "burn", [fP], [AttachedPayment(bb, fP)])
1231- if ((fV == fV))
1205+ let fT = invoke(aL, "burn", [fN], [AttachedPayment(bb, fN)])
1206+ if ((fT == fT))
12321207 then {
1233- let gf = dl(-(cp), -(cq), 0)
1234- let fl = gf._1
1235- let dc = gf._2
1236- let fn = dp(dk, dc)
1237- if ((fn == fn))
1238- then (cr ++ fl)
1208+ let gd = dl(-(cp), -(cq), 0)
1209+ let fk = gd._1
1210+ let dc = gd._2
1211+ let fl = dp(dk, dc)
1212+ if ((fl == fl))
1213+ then (cr ++ fk)
12391214 else throw("Strict value is not equal to itself.")
12401215 }
12411216 else throw("Strict value is not equal to itself.")
12421217 }
12431218 else throw("Strict value is not equal to itself.")
12441219 }
12451220 else throw("Strict value is not equal to itself.")
12461221 }
12471222 else throw("Strict value is not equal to itself.")
12481223 }
12491224
12501225
12511226
12521227 @Callable(dC)
1253-func activate (gg,gh) = if ((toString(dC.caller) != toString(aL)))
1228+func activate (ge,gf) = if ((toString(dC.caller) != toString(aL)))
12541229 then throw("permissions denied")
1255- else $Tuple2([StringEntry(ac(), gg), StringEntry(ad(), gh)], "success")
1230+ else $Tuple2([StringEntry(ac(), ge), StringEntry(ad(), gf)], "success")
12561231
12571232
12581233
12591234 @Callable(dC)
12601235 func refreshKLp () = {
1261- let gi = valueOrElse(getInteger(ai), 0)
1262- let gj = if (((height - gi) >= al))
1236+ let gg = valueOrElse(getInteger(ai), 0)
1237+ let gh = if (((height - gg) >= al))
12631238 then unit
12641239 else aI(makeString([toString(al), " blocks have not passed since the previous call"], ""))
1265- if ((gj == gj))
1240+ if ((gh == gh))
12661241 then {
12671242 let dw = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ah), "0")), aK("invalid kLp"))
1268- let gk = dl(0, 0, 0)
1269- let gl = gk._1
1270- let dc = gk._2
1243+ let gi = dl(0, 0, 0)
1244+ let gj = gi._1
1245+ let dc = gi._2
12711246 let do = if ((dw != dc))
1272- then gl
1247+ then gj
12731248 else aI("nothing to refresh")
12741249 $Tuple2(do, toString(dc))
12751250 }
12761251 else throw("Strict value is not equal to itself.")
12771252 }
12781253
12791254
12801255
12811256 @Callable(dC)
12821257 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aP())
12831258
12841259
12851260
12861261 @Callable(dC)
12871262 func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
12881263
12891264
12901265
12911266 @Callable(dC)
12921267 func calcPricesWrapperREADONLY (bH,bI,bM) = {
12931268 let bV = bL(bH, bI, bM)
12941269 $Tuple2(nil, [toString(bV[0]), toString(bV[1]), toString(bV[2])])
12951270 }
12961271
12971272
12981273
12991274 @Callable(dC)
13001275 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
13011276
13021277
13031278
13041279 @Callable(dC)
13051280 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
13061281
13071282
13081283
13091284 @Callable(dC)
13101285 func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
13111286
13121287
13131288
13141289 @Callable(dC)
13151290 func estimatePutOperationWrapperREADONLY (bX,ct,cu,cv,cw,cx,Z,cy,cz) = $Tuple2(nil, cs(bX, ct, cu, cv, cw, cx, Z, cy, cz))
13161291
13171292
13181293
13191294 @Callable(dC)
13201295 func estimateGetOperationWrapperREADONLY (bX,bY,bZ,Z) = {
13211296 let cJ = bW(bX, bY, bZ, addressFromStringValue(Z))
13221297 $Tuple2(nil, $Tuple10(cJ._1, cJ._2, cJ._3, cJ._4, cJ._5, cJ._6, cJ._7, toString(cJ._8), cJ._9, cJ._10))
13231298 }
13241299
13251300
13261301
13271302 @Callable(dC)
13281303 func statsREADONLY () = {
13291304 let bN = aP()
13301305 let ca = fromBase58String(bN[q])
1331- let gm = bN[r]
1332- let gn = bN[s]
1306+ let gk = bN[r]
1307+ let gl = bN[s]
13331308 let cC = bN[v]
13341309 let cD = bN[w]
13351310 let bO = parseIntValue(bN[t])
13361311 let bP = parseIntValue(bN[u])
1337- let go = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1338- let gp = by(gm)
1339- let gq = by(gn)
1340- let gr = if ((go == 0))
1312+ let gm = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1313+ let gn = by(gk)
1314+ let go = by(gl)
1315+ let gp = if ((gm == 0))
13411316 then [e, e, e]
1342- else bL(gp, gq, go)
1317+ else bL(gn, go, gm)
13431318 let ck = 0
1344- let gs = G(gr[1], b)
1345- let gt = G(gr[2], b)
1346- let gu = value(getInteger(aL, aw(toString(this))))
1347- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gp), toString(gq), toString(go), toString(ck), toString(gs), toString(gt), toString(gu)], j))
1319+ let gq = G(gp[1], b)
1320+ let gr = G(gp[2], b)
1321+ let gs = value(getInteger(aL, aw(toString(this))))
1322+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gn), toString(go), toString(gm), toString(ck), toString(gq), toString(gr), toString(gs)], j))
13481323 }
13491324
13501325
13511326
13521327 @Callable(dC)
13531328 func evaluatePutByAmountAssetREADONLY (cu) = {
13541329 let bN = aP()
13551330 let ca = fromBase58String(bN[q])
13561331 let cA = bN[r]
13571332 let cb = fromBase58String(cA)
13581333 let cB = bN[s]
13591334 let cc = fromBase58String(cB)
13601335 let bO = parseIntValue(bN[t])
13611336 let bP = parseIntValue(bN[u])
13621337 let cd = bN[p]
1363- let go = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1364- let gp = by(cA)
1365- let gq = by(cB)
1366- let bJ = D(gp, bO)
1367- let bK = D(gq, bP)
1368- let cj = if ((go == 0))
1338+ let gm = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1339+ let gn = by(cA)
1340+ let go = by(cB)
1341+ let bJ = D(gn, bO)
1342+ let bK = D(go, bP)
1343+ let cj = if ((gm == 0))
13691344 then e
13701345 else bA(bK, bJ)
13711346 let cG = D(cu, bO)
13721347 let cH = fraction(cG, cj, d)
13731348 let cw = G(cH, bP)
13741349 let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
13751350 let cR = dI._1
1376- let gv = dI._3
1351+ let gt = dI._3
13771352 let cf = dI._4
13781353 let ch = dI._5
13791354 let ce = dI._6
13801355 $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))
13811356 }
13821357
13831358
13841359
13851360 @Callable(dC)
13861361 func evaluatePutByPriceAssetREADONLY (cw) = {
13871362 let bN = aP()
13881363 let ca = fromBase58String(bN[q])
13891364 let cA = bN[r]
13901365 let cb = fromBase58String(cA)
13911366 let cB = bN[s]
13921367 let cc = fromBase58String(cB)
13931368 let bO = parseIntValue(bN[t])
13941369 let bP = parseIntValue(bN[u])
13951370 let cd = bN[p]
1396- let go = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1397- let gw = by(cA)
1398- let gx = by(cB)
1399- let gy = D(gw, bO)
1400- let gz = D(gx, bP)
1401- let cj = if ((go == 0))
1371+ let gm = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1372+ let gu = by(cA)
1373+ let gv = by(cB)
1374+ let gw = D(gu, bO)
1375+ let gx = D(gv, bP)
1376+ let cj = if ((gm == 0))
14021377 then e
1403- else bA(gz, gy)
1378+ else bA(gx, gw)
14041379 let cH = D(cw, bP)
14051380 let cG = fraction(cH, d, cj)
14061381 let cu = G(cG, bO)
14071382 let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
14081383 let cR = dI._1
1409- let gv = dI._3
1384+ let gt = dI._3
14101385 let cf = dI._4
14111386 let ch = dI._5
14121387 let ce = dI._6
14131388 $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))
14141389 }
14151390
14161391
14171392
14181393 @Callable(dC)
1419-func evaluateGetREADONLY (gA,gB) = {
1420- let cJ = bW("", gA, gB, this)
1394+func evaluateGetREADONLY (gy,gz) = {
1395+ let cJ = bW("", gy, gz, this)
14211396 let cp = cJ._1
14221397 let cq = cJ._2
14231398 let cf = cJ._5
14241399 let ch = cJ._6
14251400 let ce = cJ._7
14261401 let ck = cJ._8
14271402 let cd = parseIntValue(cJ._9)
14281403 $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))
14291404 }
14301405
14311406
1432-@Verifier(gC)
1433-func gD () = {
1434- let gE = {
1407+@Verifier(gA)
1408+func gB () = {
1409+ let gC = {
14351410 let dN = eP()
14361411 if ($isInstanceOf(dN, "ByteVector"))
14371412 then {
14381413 let eT = dN
14391414 eT
14401415 }
14411416 else if ($isInstanceOf(dN, "Unit"))
1442- then gC.senderPublicKey
1417+ then gA.senderPublicKey
14431418 else throw("Match error")
14441419 }
1445- let dN = gC
1420+ let dN = gA
14461421 if ($isInstanceOf(dN, "Order"))
14471422 then {
14481423 let ds = dN
1449- let gF = aO()
1424+ let gD = aO()
14501425 let aB = dr(ds)
14511426 let aC = sigVerify(ds.bodyBytes, ds.proofs[0], ds.senderPublicKey)
1452- let aD = sigVerify(ds.bodyBytes, ds.proofs[1], gF)
1427+ let aD = sigVerify(ds.bodyBytes, ds.proofs[1], gD)
14531428 if (if (if (aB)
14541429 then aC
14551430 else false)
14561431 then aD
14571432 else false)
14581433 then true
14591434 else aA(aB, aC, aD)
14601435 }
14611436 else if ($isInstanceOf(dN, "SetScriptTransaction"))
14621437 then {
14631438 let eQ = dN
1464- let gG = blake2b256(value(eQ.script))
1465- let gH = fromBase64String(value(getString(aL, ay())))
1466- let gI = scriptHash(this)
1467- if (if ((gH == gG))
1468- then (gI != gG)
1439+ let gE = blake2b256(value(eQ.script))
1440+ let gF = fromBase64String(value(getString(aL, ay())))
1441+ let gG = scriptHash(this)
1442+ if (if ((gF == gE))
1443+ then (gG != gE)
14691444 else false)
14701445 then true
1471- else sigVerify(gC.bodyBytes, gC.proofs[0], gE)
1446+ else sigVerify(gA.bodyBytes, gA.proofs[0], gC)
14721447 }
1473- else sigVerify(gC.bodyBytes, gC.proofs[0], gE)
1448+ else sigVerify(gA.bodyBytes, gA.proofs[0], gC)
14741449 }
14751450

github/deemru/w8io/026f985 
306.76 ms