tx · FPoH3XuhbwenbVu3HoNPxDKAdJNB9G52CPh1WH3x6zxh

3N55kCyUFy8M2ooKRwierKnP7L6viqzScNn:  -0.03300000 Waves

2022.11.28 14:41 [2336904] smart account 3N55kCyUFy8M2ooKRwierKnP7L6viqzScNn > SELF 0.00000000 Waves

{ "type": 13, "id": "FPoH3XuhbwenbVu3HoNPxDKAdJNB9G52CPh1WH3x6zxh", "fee": 3300000, "feeAssetId": null, "timestamp": 1669635679266, "version": 1, "sender": "3N55kCyUFy8M2ooKRwierKnP7L6viqzScNn", "senderPublicKey": "HpuFV1RhaXZ5gaJNgeLjyAKy3D5q7fMKdNFYYbPDafnb", "proofs": [ "q3HxbD2s49yLRXbWUpAyTKstNrrUKdE2LvhNcoeDkfarVuR2TF3ySc9njawBZck9ATaFAxp9RHxSierJNFZNLVz" ], "script": "base64:BgKRLAgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIQa2V5RmFjdG9yeUNvbmZpZyINa2V5TWF0Y2hlclB1YiIpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMiE3Bvb2xDb250cmFjdEFkZHJlc3MiDWtleVBvb2xDb25maWciCWlBbXRBc3NldCILaVByaWNlQXNzZXQiH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQiDGJhc2VBc3NldFN0ciITa2V5QWxsUG9vbHNTaHV0ZG93biINa2V5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDc5MTU4MDgxIg5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSINb3JkZXJBbXRBc3NldCIQb3JkZXJBbXRBc3NldFN0ciIPb3JkZXJQcmljZUFzc2V0IhJvcmRlclByaWNlQXNzZXRTdHIiCm9yZGVyUHJpY2UiCHByaWNlRGNtIhBjYXN0ZWRPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjI5NDIyMzIzNSIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyMzIzOTIzMzg4IhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDIzNTEwMjM1NjkiDXBheW1lbnRBbW91bnQiEGFtb3VudEJhbGFuY2VOZXciD3ByaWNlQmFsYW5jZU5ldyILcHJpY2VOZXdYMTgiCHByaWNlTmV3Ig5wYXltZW50QmFsYW5jZSIUcGF5bWVudEJhbGFuY2VCaWdJbnQiDHN1cHBseUJpZ0ludCILY2hlY2hTdXBwbHkiDWRlcG9zaXRCaWdJbnQiC2lzc3VlQW1vdW50IgtwcmljZU9sZFgxOCIIcHJpY2VPbGQiBGxvc3MiDSR0MDI1MDQ2MjUyMTMiB2JhbGFuY2UiD2lzc3VlQW1vdW50Qm90aCIPY2FsY0dldE9uZVRva2VuIgpvdXRBc3NldElkIgZjaGVja3MiEG91dEluQW1vdW50QXNzZXQiDWJhbGFuY2VCaWdJbnQiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIgpvdXRCYWxhbmNlIhBvdXRCYWxhbmNlQmlnSW50Ig5yZWRlZW1lZEJpZ0ludCIJYW1vdW50UmF3Ig0kdDAyNjgxNTI2ODY1Igt0b3RhbEFtb3VudCINJHQwMjY4NjkyNzA5NSILb3V0QW1BbW91bnQiC291dFByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIYYW1vdW50Qm90aEluUGF5bWVudEFzc2V0IgdjYWxjS0xwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiCnVwZGF0ZWRLTHAiEnJlZnJlc2hLTHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iB2FjdGlvbnMiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0Iglpc01hbmFnZXIiAnBrIgttdXN0TWFuYWdlciICcGQiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgtjaGVja0NhbGxlciIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iD3Nob3VsZEF1dG9TdGFrZSIEYW1JZCIEcHJJZCIMc2xpcHBhZ2VBSW52IgxzbGlwcGFnZVBJbnYiCmxwVHJhbnNmZXIiC3NscFN0YWtlSW52Ig0kdDAzMTk5NjMyMDYxIhFyZWZyZXNoS0xwQWN0aW9ucyILbWF4U2xpcHBhZ2UiDSR0MDMyMzQ3MzI0MTIiDG1pbk91dEFtb3VudCIJYXV0b1N0YWtlIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCIBQCINaXNQdXREaXNhYmxlZCIHcGF5bWVudCINJHQwMzMxODgzMzMzNyITZW1pdEFtb3VudEVzdGltYXRlZCIFYm9udXMiCmVtaXRBbW91bnQiCHN0YWtlSW52IgdzZW5kRmVlIg0kdDAzMzkyMzM0MTIwIg0kdDAzNDEyMzM0MjMxIg0kdDAzNDQyNDM0NTgxIg1vdXRBc3NldElkU3RyIg1pc0dldERpc2FibGVkIg0kdDAzNTM4NjM1NTM2Ig9hbW91bnRFc3RpbWF0ZWQiB2J1cm5JbnYiDWFzc2V0VHJhbnNmZXIiDSR0MDM2MDM2MzYyODMiEGZlZUFtb3VudEZvckNhbGMiDSR0MDM2Mjg2MzYzOTQiDSR0MDM2NTc4MzY3MzQiDXVuc3Rha2VBbW91bnQiCnVuc3Rha2VJbnYiDSR0MDM3NTU5Mzc3MDciDSR0MDM4MjAyMzg0NDkiDSR0MDM4NDUyMzg1NjAiCW91dEFtdEFtdCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDSR0MDM5MzUyMzk0MzQiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiDSR0MDQwMjMwNDAzMTEiDWNoZWNrUGF5bWVudHMiD2NoZWNrUG9vbFN0YXR1cyINJHQwNDEyODQ0MTM2NSIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgxjaGVja0Ftb3VudHMiDSR0MDQyNTA1NDI1ODYiC2FtdEFzc2V0U3RyIg1wcmljZUFzc2V0U3RyIhhsYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiHWNoZWNrTGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ig0kdDA0MzU3NDQzNjI5Ig1wb29sTFBCYWxhbmNlIgpwcmljZXNMaXN0Ig9scEFtdEFzc2V0U2hhcmUiEWxwUHJpY2VBc3NldFNoYXJlIgpwb29sV2VpZ2h0IgxjdXJQcmljZUNhbGMiDGFtQmFsYW5jZVJhdyIMcHJCYWxhbmNlUmF3Ig9hbUJhbGFuY2VSYXdYMTgiD3ByQmFsYW5jZVJhd1gxOCIQcGF5bWVudExwQXNzZXRJZCIMcGF5bWVudExwQW10IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaGsAAWEACAABYgCAwtcvAAFjCQC2AgEAgMLXLwABZAkAtgIBAICAkLu61q3wDQABZQkAtgIBAAAAAWYJALYCAQAAAAFnCQC2AgEAAQABaAkAtgIBAAIAAWkCBVdBVkVTAAFqAgJfXwABawABAAFsAAIAAW0AAwABbgAEAAFvAAEAAXAAAgABcQADAAFyAAQAAXMABQABdAAGAAF1AAcAAXYACAABdwAJAAF4AAoAAXkAAQABegACAAFBAAMAAUIAAQABQwAHAQFEAgFFAUYJALwCAwkAtgIBBQFFBQFkCQC2AgEFAUYBAUcCAUgBSQkAoAMBCQC8AgMFAUgJALYCAQUBSQUBZAEBSgMBSwFMAU0JAGsDBQFLBQFMBQFNAQFOAQFIAwkAZgIAAAUBSAkBAS0BBQFIBQFIAQFPAQFIAwkAvwICBQFlBQFICQC+AgEFAUgFAUgBAVAAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFRAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVIAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVMAAhElcyVzX19wcmljZV9fbGFzdAEBVAIBVQFWCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVQkAzAgCCQCkAwEFAVYFA25pbAUBagEBVwIBWAFZCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUBWAICX18FAVkBAVoCAVgBWQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAVgCAl9fBQFZAQJhYQACDyVzX19hbW91bnRBc3NldAECYWIAAg4lc19fcHJpY2VBc3NldAACYWMCByVzX19mZWUAAmFkCQBrAwAKBQFiAJBOAAJhZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhYwUCYWQAAmFmCQC5CQIJAMwIAgICJXMJAMwIAgIDa0xwBQNuaWwFAWoAAmFnCQC5CQIJAMwIAgICJXMJAMwIAgISa0xwUmVmcmVzaGVkSGVpZ2h0BQNuaWwFAWoAAmFoCQC5CQIJAMwIAgICJXMJAMwIAgIPcmVmcmVzaEtMcERlbGF5BQNuaWwFAWoAAmFpAB4AAmFqCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFoBQJhaQECYWsAAhElc19fZmFjdG9yeUNvbmZpZwECYWwAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmFtAQJhbgkArAICCQCsAgICCCVzJXMlc19fBQJhbgIgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQBAmFvAgJhcAJhcQkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYXACAl9fBQJhcQIIX19jb25maWcBAmFyAQJhcwkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhcwECYXQAAgwlc19fc2h1dGRvd24BAmF1AQJhdgkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FAmF2AQJhdwACFyVzX19hbGxvd2VkTHBTY3JpcHRIYXNoAAJheAIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmF5AwJhegJhQQJhQgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAKUDAQUCYXoCDSBzZW5kZXJWYWxpZD0JAKUDAQUCYUECDiBtYXRjaGVyVmFsaWQ9CQClAwEFAmFCAQJhQwICYUQCYUUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhRAUCYUUJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYUQJAMwIAgIBLgkAzAgCBQJhRQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQJhRgICYUQCYUUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJhRAUCYUUJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYUQJAMwIAgIBLgkAzAgCBQJhRQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQJhRwECYUgJAAIBCQC5CQIJAMwIAgIIbHAucmlkZToJAMwIAgUCYUgFA25pbAIBIAECYUkBAmFICQC5CQIJAMwIAgIIbHAucmlkZToJAMwIAgUCYUgFA25pbAIBIAACYUoJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhQwIFBHRoaXMJAQFQAAACYUsJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhQwIFAmFKBQJheAECYUwACQELdmFsdWVPckVsc2UCCQCbCAIFAmFKCQECYXQABwECYU0ACQDZBAEJAQJhQwIFAmFKCQECYWwAAQJhTgAEAmFPCQECYUMCBQR0aGlzCQECYWEABAJhUAkBAmFDAgUEdGhpcwkBAmFiAAQCYXEJAQJhRgIFAmFKCQECYXIBBQJhUAQCYXAJAQJhRgIFAmFKCQECYXIBBQJhTwkAtQkCCQECYUMCBQJhSgkBAmFvAgkApAMBBQJhcAkApAMBBQJhcQUBagECYVEBAmFSAwkAAAIFAmFSBQFpBQR1bml0CQDZBAEFAmFSAQJhUwECYVIDCQAAAgUCYVIFBHVuaXQFAWkJANgEAQkBBXZhbHVlAQUCYVIBAmFUAQJhVQkAmQoHCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFVBQFvCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVUFAXAJANkEAQkAkQMCBQJhVQUBcQkBAmFRAQkAkQMCBQJhVQUBcgkBAmFRAQkAkQMCBQJhVQUBcwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFVBQF0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVUFAXUAAmFWCQECYVQBCQECYU4AAAJhVwUCYVYAAmFYCAUCYVcCXzEAAmFZCAUCYVcCXzIAAmFaCAUCYVcCXzMAAmJhCAUCYVcCXzQAAmJiCAUCYVcCXzUAAmJjCAUCYVcCXzYAAmJkCAUCYVcCXzcBAmJlAAkAtQkCCQECYUMCBQJhSgkBAmFrAAUBagACYmYJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJiZQAFAUICGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MAAmJnCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYmUABQFDAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAQJiaAoCYmkCYmoCYmsCYmwCYm0CYm4CYm8CYnACYnECYnIJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJpCQDMCAIJAKQDAQUCYmoJAMwIAgkApAMBBQJiawkAzAgCCQCkAwEFAmJsCQDMCAIJAKQDAQUCYm0JAMwIAgkApAMBBQJibgkAzAgCCQCkAwEFAmJvCQDMCAIJAKQDAQUCYnAJAMwIAgkApAMBBQJicQkAzAgCCQCkAwEFAmJyBQNuaWwFAWoBAmJzBgJidAJidQJidgJibAJibwJicAkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJ0CQDMCAIJAKQDAQUCYnUJAMwIAgkApAMBBQJidgkAzAgCCQCkAwEFAmJsCQDMCAIJAKQDAQUCYm8JAMwIAgkApAMBBQJicAUDbmlsBQFqAQJidwECYngDCQAAAgUCYngCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFAmJ4AQJieQICYnoCYkEJALwCAwUCYnoFAWQFAmJBAQJiQgQCYkMCYkQCYkUCYkYEAmJHCQEBRAIFAmJFBQJiQwQCYkgJAQFEAgUCYkYFAmJECQECYnkCBQJiSAUCYkcBAmJJAwJiRQJiRgJiSgQCYksJAQJhTgAEAmJMCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXQEAmJNCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXUEAmJOCQECYkIEBQJiTAUCYk0FAmJFBQJiRgQCYkEJAQFEAgUCYkUFAmJMBAJiegkBAUQCBQJiRgUCYk0EAmJPCQEBRAIFAmJKBQFiBAJiUAkBAmJ5AgUCYkEFAmJPBAJiUQkBAmJ5AgUCYnoFAmJPCQDMCAIFAmJOCQDMCAIFAmJQCQDMCAIFAmJRBQNuaWwBAmJSAwJiRQJiRgJiSgQCYlMJAQJiSQMFAmJFBQJiRgUCYkoJAMwIAgkBAUcCCQCRAwIFAmJTAAAFAWIJAMwIAgkBAUcCCQCRAwIFAmJTAAEFAWIJAMwIAgkBAUcCCQCRAwIFAmJTAAIFAWIFA25pbAECYlQEAmJVAmJWAmJXAVgEAmJLCQECYU4ABAJiWAkAkQMCBQJiSwUBcQQCYlkJAJEDAgUCYksFAXIEAmJaCQCRAwIFAmJLBQFzBAJiQwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF0BAJiRAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF1BAJjYQkAkQMCBQJiSwUBcAQCY2IICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJiWAkArAICCQCsAgICBkFzc2V0IAUCYlgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5AwkBAiE9AgUCYlgFAmJWCQACAQIVSW52YWxpZCBhc3NldCBwYXNzZWQuBAJjYwkBAmJ3AQUCYlkEAmNkCQEBRAIFAmNjBQJiQwQCY2UJAQJidwEFAmJaBAJjZgkBAUQCBQJjZQUCYkQEAmNnCQECYnkCBQJjZgUCY2QEAmNoCQEBRwIFAmNnBQFiBAJjaQkBAUQCBQJiVwUBYgQCY2oJAQFEAgUCY2IFAWIEAmNrCQC8AgMFAmNkBQJjaQUCY2oEAmNsCQC8AgMFAmNmBQJjaQUCY2oEAmNtCQEBRwIFAmNrBQJiQwQCY24JAQFHAgUCY2wFAmJEBAJjbwMJAAACBQJiVQIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWAUCY20DCQAAAgUCYlkCBVdBVkVTBQR1bml0CQDZBAEFAmJZCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVgFAmNuAwkAAAIFAmJaAgVXQVZFUwUEdW5pdAkA2QQBBQJiWgkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIJAKUIAQUBWAUCYlUJAQJicwYFAmNtBQJjbgUCYlcFAmNoBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmNoCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNoBQNuaWwJAJwKCgUCY20FAmNuBQJiWQUCYloFAmNjBQJjZQUCY2IFAmNnBQJjYQUCY28BAmNwCQJiVQJjcQJjcgJjcwJjdAJjdQFYAmN2AmN3BAJiSwkBAmFOAAQCYlgJANkEAQkAkQMCBQJiSwUBcQQCY3gJAJEDAgUCYksFAXIEAmN5CQCRAwIFAmJLBQFzBAJjegkAkQMCBQJiSwUBdgQCY0EJAJEDAgUCYksFAXcEAmJMCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXQEAmJNCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXUEAmNhCQCRAwIFAmJLBQFwBAJjYggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiWAkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJiWAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNCCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmNzCQDZBAECBVdBVkVTBAJjQwkA2AQBCQELdmFsdWVPckVsc2UCBQJjdQkA2QQBAgVXQVZFUwMDCQECIT0CBQJjeAUCY0IGCQECIT0CBQJjeQUCY0MJAAIBAiJJbnZhbGlkIGFtdCBvciBwcmljZSBhc3NldCBwYXNzZWQuBAJjYwMFAmN2CQECYncBBQJjeAkAZQIJAQJidwEFAmN4BQJjcgQCY2UDBQJjdgkBAmJ3AQUCY3kJAGUCCQECYncBBQJjeQUCY3QEAmNECQEBRAIFAmNyBQJiTAQCY0UJAQFEAgUCY3QFAmJNBAJjRgkBAmJ5AgUCY0UFAmNEBAJjZAkBAUQCBQJjYwUCYkwEAmNmCQEBRAIFAmNlBQJiTQQCY0cDCQAAAgUCY2IAAAQCY2cFAWUEAmNIBQFlBAJiTwkAdgYJALkCAgUCY0QFAmNFAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBRwIFAmJPBQFiCQEBRwIFAmNEBQJiTAkBAUcCBQJjRQUCYk0JAQJieQIJALcCAgUCY2YFAmNFCQC3AgIFAmNkBQJjRAUCY0gEAmNnCQECYnkCBQJjZgUCY2QEAmNICQC8AgMJAQFPAQkAuAICBQJjZwUCY0YFAWQFAmNnBAJjSQkBAUQCBQJjcQUBYgMDCQECIT0CBQJjZwUBZQkAvwICBQJjSAUCY0kHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmNIAh4gZXhjZWVkZWQgdGhlIHBhc3NlZCBsaW1pdCBvZiAJAKYDAQUCY0kEAmNqCQEBRAIFAmNiBQFiBAJjSgkAvAIDBQJjRAUCY2cFAWQEAmNLCQC8AgMFAmNFBQFkBQJjZwQCY0wDCQC/AgIFAmNKBQJjRQkAlAoCBQJjSwUCY0UJAJQKAgUCY0QFAmNKBAJjTQgFAmNMAl8xBAJjTggFAmNMAl8yBAJiTwkAvAIDBQJjagUCY04FAmNmCQCXCgUJAQFHAgUCYk8FAWIJAQFHAgUCY00FAmJMCQEBRwIFAmNOBQJiTQUCY2cFAmNIBAJjTwgFAmNHAl8xBAJjUAgFAmNHAl8yBAJjUQgFAmNHAl8zBAJjaAkBAUcCCAUCY0cCXzQFAWIEAmNSCQEBRwIIBQJjRwJfNQUBYgMJAGcCAAAFAmNPCQACAQI2SW52YWxpZCBjYWxjdWxhdGlvbnMuIExQIGNhbGN1bGF0ZWQgaXMgbGVzcyB0aGFuIHplcm8uBAJjUwMJAQEhAQUCY3cAAAUCY08EAmNUCQBlAgUCY3IFAmNQBAJjVQkAZQIFAmN0BQJjUQQCY1YJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCY2gJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2gJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcCBQFYBQJiVQkBAmJoCgUCY1AFAmNRBQJjUwUCY2gFAmNxBQJjUgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY1QFAmNVBQNuaWwJAJ8KDQUCY08FAmNTBQJjaAUCY2MFAmNlBQJjYgUCYlgFAmNhBQJjVgUCY1QFAmNVBQJjcwUCY3UBAmNXAQJjWAQCYksJAQJhTgAEAmNZCQCRAwIFAmJLBQFyBAJjWgkAkQMCBQJiSwUBcwQCY2EJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBcAQCYkwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdAQCYk0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdQQCZGEJAQJidwEFAmNZBAJkYgkBAmJ3AQUCY1oEAmNnAwkAAAIIBQJjWAlvcmRlclR5cGUFA0J1eQkBAmJCBAUCYkwFAmJNCQBkAgUCZGEIBQJjWAZhbW91bnQFAmRiCQECYkIEBQJiTAUCYk0JAGUCBQJkYQgFAmNYBmFtb3VudAUCZGIEAmNoCQEBRwIFAmNnBQFiAwMDCQECYUwABgkAAAIFAmNhBQFtBgkAAAIFAmNhBQFuCQACAQIcRXhjaGFuZ2Ugb3BlcmF0aW9ucyBkaXNhYmxlZAQCZGMICAUCY1gJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BAJkZAMJAAACBQJkYwUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZGMEAmRlCAgFAmNYCWFzc2V0UGFpcgpwcmljZUFzc2V0BAJkZgMJAAACBQJkZQUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZGUDAwkBAiE9AgUCZGQFAmNZBgkBAiE9AgUCZGYFAmNaCQACAQITV3Jvbmcgb3JkZXIgYXNzZXRzLgQCZGcIBQJjWAVwcmljZQQCZGgJAGsDBQFiBQJiTQUCYkwEAmRpCQEBSgMFAmRnBQFiBQJkaAQCZGoDCQAAAggFAmNYCW9yZGVyVHlwZQUDQnV5CQBnAgUCY2gFAmRpCQBnAgUCZGkFAmNoBgECZGsBAmRsAwkBAiE9AgkAkAMBCAUCZGwIcGF5bWVudHMAAQkAAgECHWV4YWN0bHkgMSBwYXltZW50IGlzIGV4cGVjdGVkBAJkbQkBBXZhbHVlAQkAkQMCCAUCZGwIcGF5bWVudHMAAAQCYlYJAQV2YWx1ZQEIBQJkbQdhc3NldElkBAJkbggFAmRtBmFtb3VudAQCY0cJAQJiVAQJANgEAQgFAmRsDXRyYW5zYWN0aW9uSWQJANgEAQUCYlYFAmRuCAUCZGwGY2FsbGVyBAJjbQgFAmNHAl8xBAJjbggFAmNHAl8yBAJjYQkBDXBhcnNlSW50VmFsdWUBCAUCY0cCXzkEAmNvCAUCY0cDXzEwAwMJAQJhTAAGCQAAAgUCY2EFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNhCQCXCgUFAmNtBQJjbgUCZG4FAmJWBQJjbwECZG8DAmRsAmNxAmN3AwkBAiE9AgkAkAMBCAUCZGwIcGF5bWVudHMAAgkAAgECH2V4YWN0bHkgMiBwYXltZW50cyBhcmUgZXhwZWN0ZWQEAmRwCQEFdmFsdWUBCQCRAwIIBQJkbAhwYXltZW50cwAABAJkcQkBBXZhbHVlAQkAkQMCCAUCZGwIcGF5bWVudHMAAQQCZHIJAQJjcAkJANgEAQgFAmRsDXRyYW5zYWN0aW9uSWQFAmNxCAUCZHAGYW1vdW50CAUCZHAHYXNzZXRJZAgFAmRxBmFtb3VudAgFAmRxB2Fzc2V0SWQJAKUIAQgFAmRsBmNhbGxlcgcFAmN3BAJjYQkBDXBhcnNlSW50VmFsdWUBCAUCZHICXzgDAwMJAQJhTAAGCQAAAgUCY2EFAWwGCQAAAgUCY2EFAW4JAAIBCQCsAgICLFB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNhBQJkcgECZHMBAmR0BAJkdQkA/AcEBQJhSgIEZW1pdAkAzAgCBQJkdAUDbmlsBQNuaWwDCQAAAgUCZHUFAmR1BAJkdgQCZHcFAmR1AwkAAQIFAmR3AgdBZGRyZXNzBAJkeAUCZHcJAPwHBAUCZHgCBGVtaXQJAMwIAgUCZHQFA25pbAUDbmlsBQR1bml0AwkAAAIFAmR2BQJkdgUCZHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmR5AQJkdAQCZHoJAGsDBQJkdAUCYWUFAWIJAJQKAgkAZQIFAmR0BQJkegUCZHoBAmRBBAJkQgJkQwFYAVkEAmRECQAAAgUBWQUEdW5pdAQCZEUJAQJidwEJAQJhUwEFAmJhBAJkRgkBAmJ3AQkBAmFTAQUCYmIEAmRHAwkAAAIFAmRDBQJiYQYDCQAAAgUCZEMFAmJiBwkBAmFHAQINaW52YWxpZCBhc3NldAQCZEgDBQJkRAkAlAoCBQJkRQUCZEYDBQJkRwkAlAoCCQBlAgUCZEUFAmRCBQJkRgkAlAoCBQJkRQkAZQIFAmRGBQJkQgQCZEkIBQJkSAJfMQQCZEoIBQJkSAJfMgQCZEsDBQJkRwkAlAoCBQJkQgAACQCUCgIAAAUCZEIEAmRMCAUCZEsCXzEEAmRNCAUCZEsCXzIEAmROCAkBAmR5AQUCZEwCXzEEAmRPCAkBAmR5AQUCZE0CXzEEAmRQCQECZHkBBQJkQgQCZFEIBQJkUAJfMQQCZHoIBQJkUAJfMgQCZFIJAGQCBQJkSQUCZE4EAmRTCQBkAgUCZEoFAmRPBAJkVAkBAmJ5AgkBAUQCBQJkUwUCYmQJAQFEAgUCZFIFAmJjBAJkVQkBAUcCBQJkVAUBYgQCZFYDBQJkRwUCZEkFAmRKBAJkVwkAtgIBBQJkVgQCZFgJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJhWgkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJhWgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmRZAwkAvwICBQJkWAUBZgYJAQJhRwECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZFkFAmRZBAJkWgkAtgIBBQJkUQQCZWEJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZFgJALgCAgkBCnNxcnRCaWdJbnQECQC3AgIFAWQJALoCAgkAuQICBQJkWgUBZAUCZFcAEgASBQRET1dOBQFkBQFkBQNuaWwEAmNWAwUCZEQFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJkVQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkVQkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIJAKUIAQkBBXZhbHVlAQUBWAkA2AQBCQEFdmFsdWUBBQFZCQECYmgKBQJkTAUCZE0FAmVhBQJkVQAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmViCQECYnkCCQEBRAIFAmRKBQJiZAkBAUQCBQJkSQUCYmMEAmVjCQEBRwIFAmViBQFiBAJlZAQCZWUDBQJkRwkAlAoCBQJkTAUCZEkJAJQKAgUCZE0FAmRKBAJkdAgFAmVlAl8xBAJlZggFAmVlAl8yBAJlZwkAoAMBCQC8AgMFAmRYCQC2AgEJAGkCBQJkdAACCQC2AgEFAmVmCQBrAwkAZQIFAmVhBQJlZwUBYgUCZWcJAJcKBQUCZWEFAmNWBQJkegUCZWQFAmRHCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlaAUCZWkCZFECZEMBWAFZBAJkRAkAAAIFAVkFBHVuaXQEAmVqCQDMCAIDCQAAAgUCZEMFAmFaBgkBAmFHAQIQaW52YWxpZCBscCBhc3NldAUDbmlsAwkAAAIFAmVqBQJlagQCZWsDCQAAAgUCZWkFAmJhBgMJAAACBQJlaQUCYmIHCQECYUcBAg1pbnZhbGlkIGFzc2V0BAJlbAMFAmVrCQC2AgEJAQJidwEJAQJhUwEFAmJhCQC2AgEJAQJidwEJAQJhUwEFAmJiBAJlbQkBAmJ3AQkBAmFTAQUCYmEEAmVuCQECYncBCQECYVMBBQJiYgQCZW8DBQJlawUCZW0FAmVuBAJlcAkAtgIBBQJlbwQCZFgJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJhWgkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJhWgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmVxCQC2AgEFAmRRBAJlcgkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlbAkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZXEFAWQFAmRYABIFAWgAAAASBQRET1dOBQFkBQNuaWwEAmVzCQECZHkBBQJlcgQCZXQIBQJlcwJfMQQCZHoIBQJlcwJfMgQCZXUDBQJlawkAlgoEBQJldAAACQBlAgUCZW0FAmVyBQJlbgkAlgoEAAAFAmV0BQJlbQkAZQIFAmVuBQJlcgQCZXYIBQJldQJfMQQCZXcIBQJldQJfMgQCZXgIBQJldQJfMwQCZXkIBQJldQJfNAQCZFQJAQJieQIJAQFEAgUCZXkFAmJkCQEBRAIFAmV4BQJiYwQCZFUJAQFHAgUCZFQFAWIEAmNWAwUCZEQFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIJAKUIAQkBBXZhbHVlAQUBWAkA2AQBCQEFdmFsdWUBBQFZCQECYnMGBQJldgUCZXcFAmRRBQJkVQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJkVQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkVQUDbmlsBAJlYgkBAmJ5AgkBAUQCBQJlbgUCYmQJAQFEAgUCZW0FAmJjBAJlYwkBAUcCBQJlYgUBYgQCZWQEAmV6CQBoAgkAoAMBCQC8AgMFAmVsBQJlcQUCZFgAAgkAawMJAGUCBQJldAUCZXoFAWIFAmV6CQCXCgUFAmV0BQJjVgUCZHoFAmVkBQJlawkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZUEDAmVCAmVDAmNiBAJlRAkAvAIDCQB2BgkAuQICBQJlQgUCZUMAAAkAtgIBAAUAAQAABQRET1dOBQFkBQJjYgUCZUQBAmVFAwJlRgJlRwJlSAQCZUkJAGQCCQECYncBCQECYVMBBQJiYQUCZUYEAmVKCQBkAgkBAmJ3AQkBAmFTAQUCYmIFAmVHBAJlSwkAZAIICQEFdmFsdWUBCQDsBwEFAmFaCHF1YW50aXR5BQJlSAQCZUQJAQJlQQMJALYCAQUCZUkJALYCAQUCZUoJALYCAQUCZUsEAmVMCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhZwUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmFmCQCmAwEFAmVEBQNuaWwJAJQKAgUCZUwFAmVEAQJlTQAEAmR3CQCiCAEJAQFRAAMJAAECBQJkdwIGU3RyaW5nBAJlTgUCZHcJANkEAQUCZU4DCQABAgUCZHcCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZU8ABAJkdwkAoggBCQEBUgADCQABAgUCZHcCBlN0cmluZwQCZU4FAmR3CQDZBAEFAmVOAwkAAQIFAmR3AgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmVQAQJkbAQCZHcJAQJlTQADCQABAgUCZHcCCkJ5dGVWZWN0b3IEAmVRBQJkdwkAAAIIBQJkbA9jYWxsZXJQdWJsaWNLZXkFAmVRAwkAAQIFAmR3AgRVbml0CQAAAggFAmRsBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJlUgECZGwEAmVTCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmR3CQECZU0AAwkAAQIFAmR3AgpCeXRlVmVjdG9yBAJlUQUCZHcDCQAAAggFAmRsD2NhbGxlclB1YmxpY0tleQUCZVEGBQJlUwMJAAECBQJkdwIEVW5pdAMJAAACCAUCZGwGY2FsbGVyBQR0aGlzBgUCZVMJAAIBAgtNYXRjaCBlcnJvchsCZGwBCnNldE1hbmFnZXIBAmVUBAJlVQkBAmVSAQUCZGwDCQAAAgUCZVUFAmVVBAJlVgkA2QQBBQJlVAMJAAACBQJlVgUCZVYJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVIABQJlVAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRsAQ5jb25maXJtTWFuYWdlcgAEAmVXCQECZU8ABAJlWAMJAQlpc0RlZmluZWQBBQJlVwYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZVgFAmVYBAJlWQMJAAACCAUCZGwPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJlVwYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZVkFAmVZCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAAkA2AQBCQEFdmFsdWUBBQJlVwkAzAgCCQELRGVsZXRlRW50cnkBCQEBUgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbAEDcHV0AgJjcQJlWgMJAGYCAAAFAmNxCQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmRyCQECZG8DBQJkbAUCY3EGBAJjUwgFAmRyAl8yBAJiWAgFAmRyAl83BAJjbwgFAmRyAl85BAJjVAgFAmRyA18xMAQCY1UIBQJkcgNfMTEEAmZhCAUCZHIDXzEyBAJmYggFAmRyA18xMwQCZHUJAPwHBAUCYUoCBGVtaXQJAMwIAgUCY1MFA25pbAUDbmlsAwkAAAIFAmR1BQJkdQQCZHYEAmR3BQJkdQMJAAECBQJkdwIHQWRkcmVzcwQCZHgFAmR3CQD8BwQFAmR4AgRlbWl0CQDMCAIFAmNTBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkdgUCZHYEAmZjAwkAZgIFAmNUAAAJAPwHBAUCYmcCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmYQUCY1QFA25pbAUDbmlsAwkAAAIFAmZjBQJmYwQCZmQDCQBmAgUCY1UAAAkA/AcEBQJiZwIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZiBQJjVQUDbmlsBQNuaWwDCQAAAgUCZmQFAmZkBAJmZQMFAmVaBAJmZgkA/AcEBQJiZgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlgFAmNTBQNuaWwDCQAAAgUCZmYFAmZmBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRsBmNhbGxlcgUCY1MFAmJYBQNuaWwEAmZnCQECZUUDAAAAAAAABAJmaAgFAmZnAl8xBAJlRAgFAmZnAl8yCQDOCAIJAM4IAgUCY28FAmZlBQJmaAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbAEKcHV0Rm9yRnJlZQECZmkDCQBmAgAABQJmaQkAAgECFEludmFsaWQgdmFsdWUgcGFzc2VkBAJkcgkBAmRvAwUCZGwFAmZpBwQCY28IBQJkcgJfOQQCZmoJAQJlRQMAAAAAAAAEAmZoCAUCZmoCXzEEAmVECAUCZmoCXzIJAM4IAgUCY28FAmZoAmRsAQlwdXRPbmVUa24CAmZrAmZsBAJmbQoAAmZuCQD8BwQFAmFKAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZm4CB0Jvb2xlYW4FAmZuCQACAQkArAICCQADAQUCZm4CHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZvAwMDCQECYUwABgkAAAIFAmFZBQFsBgkAAAIFAmFZBQFuBgUCZm0EAmVqCQDMCAIDAwkBASEBBQJmbwYJAQJlUAEFAmRsBgkBAmFHAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZGwIcGF5bWVudHMAAQYJAQJhRwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVqBQJlagQCZnAJAJEDAggFAmRsCHBheW1lbnRzAAAEAmRDCAUCZnAHYXNzZXRJZAQCZEIIBQJmcAZhbW91bnQEAVgIBQJkbAZjYWxsZXIEAVkIBQJkbA10cmFuc2FjdGlvbklkBAJmcQkBAmRBBAUCZEIFAmRDBQFYBQFZBAJmcggFAmZxAl8xBAJjVggFAmZxAl8yBAJkeggFAmZxAl8zBAJmcwgFAmZxAl80BAJkRwgFAmZxAl81BAJmdAMDCQBmAgUCZmsAAAkAZgIFAmZrBQJmcgcJAQJhRwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZmsFA25pbAIABQJmcgQCZHUJAQJkcwEFAmZ0AwkAAAIFAmR1BQJkdQQCZmUDBQJmbAQCZnUJAPwHBAUCYmYCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFaBQJmdAUDbmlsAwkAAAIFAmZ1BQJmdQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkbAZjYWxsZXIFAmZ0BQJhWgUDbmlsBAJmdgMJAGYCBQJkegAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFLBQJkegUCZEMFA25pbAUDbmlsBAJmdwMJAAACBQR0aGlzBQJhSwkAlAoCAAAAAAMFAmRHCQCUCgIJAQEtAQUCZHoAAAkAlAoCAAAJAQEtAQUCZHoEAmVGCAUCZncCXzEEAmVHCAUCZncCXzIEAmZ4CQECZUUDBQJlRgUCZUcAAAQCZmgIBQJmeAJfMQQCZUQIBQJmeAJfMgkAlAoCCQDOCAIJAM4IAgkAzggCBQJjVgUCZmUFAmZ2BQJmaAUCZnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGwBEXB1dE9uZVRrblJFQURPTkxZAgJkQwJkQgQCZnkJAQJkQQQFAmRCCQECYVEBBQJkQwUEdW5pdAUEdW5pdAQCZnIIBQJmeQJfMQQCY1YIBQJmeQJfMgQCZHoIBQJmeQJfMwQCZnMIBQJmeQJfNAQCZEcIBQJmeQJfNQkAlAoCBQNuaWwJAJUKAwUCZnIFAmR6BQJmcwJkbAEJZ2V0T25lVGtuAgJmegJmawQCZm0KAAJmbgkA/AcEBQJhSgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZuAgdCb29sZWFuBQJmbgkAAgEJAKwCAgkAAwEFAmZuAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJmQQMDCQECYUwABgkAAAIFAmFZBQFuBgUCZm0EAmVqCQDMCAIDAwkBASEBBQJmQQYJAQJlUAEFAmRsBgkBAmFHAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZGwIcGF5bWVudHMAAQYJAQJhRwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVqBQJlagQCZWkJAQJhUQEFAmZ6BAJmcAkAkQMCCAUCZGwIcGF5bWVudHMAAAQCZEMIBQJmcAdhc3NldElkBAJkUQgFAmZwBmFtb3VudAQBWAgFAmRsBmNhbGxlcgQBWQgFAmRsDXRyYW5zYWN0aW9uSWQEAmZCCQECZWgFBQJlaQUCZFEFAmRDBQFYBQFZBAJmQwgFAmZCAl8xBAJjVggFAmZCAl8yBAJkeggFAmZCAl8zBAJmcwgFAmZCAl80BAJlawgFAmZCAl81BAJkdAMDCQBmAgUCZmsAAAkAZgIFAmZrBQJmQwcJAQJhRwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZmsFA25pbAIABQJmQwQCZkQJAPwHBAUCYUoCBGJ1cm4JAMwIAgUCZFEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZEMFAmRRBQNuaWwDCQAAAgUCZkQFAmZEBAJmRQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFYBQJkdAUCZWkFA25pbAQCZnYDCQBmAgUCZHoAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhSwUCZHoFAmVpBQNuaWwFA25pbAQCZkYEAmZHAwkAAAIFBHRoaXMFAmFLAAAFAmR6AwUCZWsJAJQKAgkBAS0BCQBkAgUCZHQFAmZHAAAJAJQKAgAACQEBLQEJAGQCBQJkdAUCZkcEAmVGCAUCZkYCXzEEAmVHCAUCZkYCXzIEAmZICQECZUUDBQJlRgUCZUcAAAQCZmgIBQJmSAJfMQQCZUQIBQJmSAJfMgkAlAoCCQDOCAIJAM4IAgkAzggCBQJjVgUCZkUFAmZ2BQJmaAUCZHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGwBEWdldE9uZVRrblJFQURPTkxZAgJlaQJkUQQCZkkJAQJlaAUJAQJhUQEFAmVpBQJkUQUCYVoFBHVuaXQFBHVuaXQEAmZDCAUCZkkCXzEEAmNWCAUCZkkCXzIEAmR6CAUCZkkCXzMEAmZzCAUCZkkCXzQEAmVrCAUCZkkCXzUJAJQKAgUDbmlsCQCVCgMFAmZDBQJkegUCZnMCZGwBE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmZKAmZ6AmZrBAJmbQoAAmZuCQD8BwQFAmFKAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZm4CB0Jvb2xlYW4FAmZuCQACAQkArAICCQADAQUCZm4CHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZBAwMJAQJhTAAGCQAAAgUCYVkFAW4GBQJmbQQCZWoJAMwIAgMDCQEBIQEFAmZBBgkBAmVQAQUCZGwGCQECYUcBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkbAhwYXltZW50cwAABgkBAmFHAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWoFAmVqBAJlaQkBAmFRAQUCZnoEAVgIBQJkbAZjYWxsZXIEAVkIBQJkbA10cmFuc2FjdGlvbklkBAJmSwkA/AcEBQJiZgIHdW5zdGFrZQkAzAgCCQDYBAEFAmFaCQDMCAIFAmZKBQNuaWwFA25pbAMJAAACBQJmSwUCZksEAmZMCQECZWgFBQJlaQUCZkoFAmFaBQFYBQFZBAJmQwgFAmZMAl8xBAJjVggFAmZMAl8yBAJkeggFAmZMAl8zBAJmcwgFAmZMAl80BAJlawgFAmZMAl81BAJkdAMDCQBmAgUCZmsAAAkAZgIFAmZrBQJmQwcJAQJhRwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZmsFA25pbAIABQJmQwQCZkQJAPwHBAUCYUoCBGJ1cm4JAMwIAgUCZkoFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYVoFAmZKBQNuaWwDCQAAAgUCZkQFAmZEBAJmRQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZGwGY2FsbGVyBQJkdAUCZWkFA25pbAQCZnYDCQBmAgUCZHoAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhSwUCZHoFAmVpBQNuaWwFA25pbAQCZk0EAmZHAwkAAAIFBHRoaXMFAmFLAAAFAmR6AwUCZWsJAJQKAgkBAS0BCQBkAgUCZHQFAmZHAAAJAJQKAgAACQEBLQEJAGQCBQJkdAUCZkcEAmVGCAUCZk0CXzEEAmVHCAUCZk0CXzIEAmZOCQECZUUDBQJlRgUCZUcAAAQCZmgIBQJmTgJfMQQCZUQIBQJmTgJfMgkAlAoCCQDOCAIJAM4IAgkAzggCBQJjVgUCZkUFAmZ2BQJmaAUCZHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGwBA2dldAAEAmNHCQECZGsBBQJkbAQCZk8IBQJjRwJfMQQCY24IBQJjRwJfMgQCZG4IBQJjRwJfMwQCYlYIBQJjRwJfNAQCY28IBQJjRwJfNQQCZlAJAPwHBAUCYUoCBGJ1cm4JAMwIAgUCZG4FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlYFAmRuBQNuaWwDCQAAAgUCZlAFAmZQBAJmUQkBAmVFAwkBAS0BBQJmTwkBAS0BBQJjbgAABAJmaAgFAmZRAl8xBAJlRAgFAmZRAl8yCQDOCAIFAmNvBQJmaAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbAEJZ2V0Tm9MZXNzAgJmUgJmUwQCY0cJAQJkawEFAmRsBAJjbQgFAmNHAl8xBAJjbggFAmNHAl8yBAJkbggFAmNHAl8zBAJiVggFAmNHAl80BAJjbwgFAmNHAl81AwkAZgIFAmZSBQJjbQkAAgEJAKwCAgkArAICCQCsAgICHG5vTGVzc1RoZW5BbXRBc3NldCBmYWlsZWQ6ICAJAKQDAQUCY20CAyA8IAkApAMBBQJmUgMJAGYCBQJmUwUCY24JAAIBCQCsAgIJAKwCAgkArAICAh1ub0xlc3NUaGVuUHJpY2VBc3NldCBmYWlsZWQ6IAkApAMBBQJjbgIDIDwgCQCkAwEFAmZTBAJmUAkA/AcEBQJhSgIEYnVybgkAzAgCBQJkbgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiVgUCZG4FA25pbAMJAAACBQJmUAUCZlAEAmZUCQECZUUDCQEBLQEFAmNtCQEBLQEFAmNuAAAEAmZoCAUCZlQCXzEEAmVECAUCZlQCXzIJAM4IAgUCY28FAmZoCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRsAQ11bnN0YWtlQW5kR2V0AQJkdAQCZlUDCQECIT0CCQCQAwEIBQJkbAhwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJmVQUCZlUEAmJLCQECYU4ABAJiWAkA2QQBCQCRAwIFAmJLBQFxBAJmSwkA/AcEBQJiZgIHdW5zdGFrZQkAzAgCCQDYBAEFAmJYCQDMCAIFAmR0BQNuaWwFA25pbAMJAAACBQJmSwUCZksEAmNHCQECYlQECQDYBAEIBQJkbA10cmFuc2FjdGlvbklkCQDYBAEFAmJYBQJkdAgFAmRsBmNhbGxlcgQCY20IBQJjRwJfMQQCY24IBQJjRwJfMgQCY2EJAQ1wYXJzZUludFZhbHVlAQgFAmNHAl85BAJjbwgFAmNHA18xMAQCZlYDAwkBAmFMAAYJAAACBQJjYQUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2EGAwkAAAIFAmZWBQJmVgQCZlAJAPwHBAUCYUoCBGJ1cm4JAMwIAgUCZHQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlgFAmR0BQNuaWwDCQAAAgUCZlAFAmZQBAJmVwkBAmVFAwkBAS0BBQJjbQkBAS0BBQJjbgAABAJmaAgFAmZXAl8xBAJlRAgFAmZXAl8yCQDOCAIFAmNvBQJmaAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbAETdW5zdGFrZUFuZEdldE5vTGVzcwMCZkoCZlgCZlMEAmZBAwkBAmFMAAYJAAACBQJhWQUBbgQCZWoJAMwIAgMJAQEhAQUCZkEGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZGwIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlagUCZWoEAmZLCQD8BwQFAmJmAgd1bnN0YWtlCQDMCAIJANgEAQUCYVoJAMwIAgUCZkoFA25pbAUDbmlsAwkAAAIFAmZLBQJmSwQCY0cJAQJiVAQJANgEAQgFAmRsDXRyYW5zYWN0aW9uSWQJANgEAQUCYVoFAmZKCAUCZGwGY2FsbGVyBAJjbQgFAmNHAl8xBAJjbggFAmNHAl8yBAJjbwgFAmNHA18xMAQCZlkJAMwIAgMJAGcCBQJjbQUCZlgGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZlgFA25pbAIACQDMCAIDCQBnAgUCY24FAmZTBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZlMFA25pbAIABQNuaWwDCQAAAgUCZlkFAmZZBAJmUAkA/AcEBQJhSgIEYnVybgkAzAgCBQJmSgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJhWgUCZkoFA25pbAMJAAACBQJmUAUCZlAEAmZaCQECZUUDCQEBLQEFAmNtCQEBLQEFAmNuAAAEAmZoCAUCZloCXzEEAmVECAUCZloCXzIJAM4IAgUCY28FAmZoCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRsAQhhY3RpdmF0ZQICZ2ECZ2IDCQECIT0CCQClCAEIBQJkbAZjYWxsZXIJAKUIAQUCYUoJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWEABQJnYQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWIABQJnYgUDbmlsAgdzdWNjZXNzAmRsAQpyZWZyZXNoS0xwAAQCZ2MJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCYWcAAAQCZ2QDCQBnAgkAZQIFBmhlaWdodAUCZ2MFAmFqBQR1bml0CQECYUcBCQC5CQIJAMwIAgkApAMBBQJhagkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCZ2QFAmdkBAJnZQkBAmVFAwAAAAAAAAQCZUwIBQJnZQJfMQQCZUQIBQJnZQJfMgkAlAoCBQJlTAkApgMBBQJlRAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbAEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYU4AAmRsARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJieAkAlAoCBQNuaWwJAQJidwEFAmJ4AmRsARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJiRQJiRgJiSgQCYlMJAQJiSQMFAmJFBQJiRgUCYkoJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJiUwAACQDMCAIJAKYDAQkAkQMCBQJiUwABCQDMCAIJAKYDAQkAkQMCBQJiUwACBQNuaWwCZGwBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFFAUYJAJQKAgUDbmlsCQCmAwEJAQFEAgUBRQUBRgJkbAEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBSAFJCQCUCgIFA25pbAkBAUcCCQCnAwEFAUgFAUkCZGwBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYnoCYkEJAJQKAgUDbmlsCQCmAwEJAQJieQIJAKcDAQUCYnoJAKcDAQUCYkECZGwBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJiVQJjcQJjcgJjcwJjdAJjdQFYAmN2AmN3CQCUCgIFA25pbAkBAmNwCQUCYlUFAmNxBQJjcgUCY3MFAmN0BQJjdQUBWAUCY3YFAmN3AmRsASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCYlUCYlYCYlcBWAQCY0cJAQJiVAQFAmJVBQJiVgUCYlcJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAVgJAJQKAgUDbmlsCQCcCgoIBQJjRwJfMQgFAmNHAl8yCAUCY0cCXzMIBQJjRwJfNAgFAmNHAl81CAUCY0cCXzYIBQJjRwJfNwkApgMBCAUCY0cCXzgIBQJjRwJfOQgFAmNHA18xMAJkbAENc3RhdHNSRUFET05MWQAEAmJLCQECYU4ABAJiWAkA2QQBCQCRAwIFAmJLBQFxBAJjWQkAkQMCBQJiSwUBcgQCY1oJAJEDAgUCYksFAXMEAmN6CQCRAwIFAmJLBQF2BAJjQQkAkQMCBQJiSwUBdwQCYkwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdAQCYk0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdQQCZ2YICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlgJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJkYQkBAmJ3AQUCY1kEAmRiCQECYncBBQJjWgQCZ2cDCQAAAgUCZ2YAAAkAzAgCBQFlCQDMCAIFAWUJAMwIAgUBZQUDbmlsCQECYkkDBQJkYQUCZGIFAmdmBAJjaAAABAJnaAkBAUcCCQCRAwIFAmdnAAEFAWIEAmdpCQEBRwIJAJEDAgUCZ2cAAgUBYgQCZ2oJAQV2YWx1ZQEJAJoIAgUCYUoJAQJhdQEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmRhCQDMCAIJAKQDAQUCZGIJAMwIAgkApAMBBQJnZgkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCZ2gJAMwIAgkApAMBBQJnaQkAzAgCCQCkAwEFAmdqBQNuaWwFAWoCZGwBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJjcgQCYksJAQJhTgAEAmJYCQDZBAEJAJEDAgUCYksFAXEEAmN4CQCRAwIFAmJLBQFyBAJiWQkA2QQBBQJjeAQCY3kJAJEDAgUCYksFAXMEAmJaCQDZBAEFAmN5BAJiTAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF0BAJiTQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF1BAJjYQkAkQMCBQJiSwUBcAQCZ2YICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlgJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJkYQkBAmJ3AQUCY3gEAmRiCQECYncBBQJjeQQCYkcJAQFEAgUCZGEFAmJMBAJiSAkBAUQCBQJkYgUCYk0EAmNnAwkAAAIFAmdmAAAFAWUJAQJieQIFAmJIBQJiRwQCY0QJAQFEAgUCY3IFAmJMBAJjRQkAvAIDBQJjRAUCY2cFAWQEAmN0CQEBRwIFAmNFBQJiTQQCZHIJAQJjcAkCAACgwh4FAmNyBQJiWQUCY3QFAmJaAgAGBwQCY08IBQJkcgJfMQQCZ2sIBQJkcgJfMwQCY2MIBQJkcgJfNAQCY2UIBQJkcgJfNQQCY2IIBQJkcgJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY08JAMwIAgkApAMBCQEBRwIFAmNnBQFiCQDMCAIJAKQDAQUCY2MJAMwIAgkApAMBBQJjZQkAzAgCCQCkAwEFAmNiCQDMCAIFAmNhCQDMCAIJAKQDAQUCY3IJAMwIAgkApAMBBQJjdAUDbmlsBQFqAmRsAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJjdAQCYksJAQJhTgAEAmJYCQDZBAEJAJEDAgUCYksFAXEEAmN4CQCRAwIFAmJLBQFyBAJiWQkA2QQBBQJjeAQCY3kJAJEDAgUCYksFAXMEAmJaCQDZBAEFAmN5BAJiTAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF0BAJiTQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF1BAJjYQkAkQMCBQJiSwUBcAQCZ2YICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlgJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnbAkBAmJ3AQUCY3gEAmdtCQECYncBBQJjeQQCZ24JAQFEAgUCZ2wFAmJMBAJnbwkBAUQCBQJnbQUCYk0EAmNnAwkAAAIFAmdmAAAFAWUJAQJieQIFAmdvBQJnbgQCY0UJAQFEAgUCY3QFAmJNBAJjRAkAvAIDBQJjRQUBZAUCY2cEAmNyCQEBRwIFAmNEBQJiTAQCZHIJAQJjcAkCAACgwh4FAmNyBQJiWQUCY3QFAmJaAgAGBwQCY08IBQJkcgJfMQQCZ2sIBQJkcgJfMwQCY2MIBQJkcgJfNAQCY2UIBQJkcgJfNQQCY2IIBQJkcgJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY08JAMwIAgkApAMBCQEBRwIFAmNnBQFiCQDMCAIJAKQDAQUCY2MJAMwIAgkApAMBBQJjZQkAzAgCCQCkAwEFAmNiCQDMCAIFAmNhCQDMCAIJAKQDAQUCY3IJAMwIAgkApAMBBQJjdAUDbmlsBQFqAmRsARNldmFsdWF0ZUdldFJFQURPTkxZAgJncAJncQQCY0cJAQJiVAQCAAUCZ3AFAmdxBQR0aGlzBAJjbQgFAmNHAl8xBAJjbggFAmNHAl8yBAJjYwgFAmNHAl81BAJjZQgFAmNHAl82BAJjYggFAmNHAl83BAJjaAgFAmNHAl84BAJjYQkBDXBhcnNlSW50VmFsdWUBCAUCY0cCXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjbQkAzAgCCQCkAwEFAmNuCQDMCAIJAKQDAQUCY2MJAMwIAgkApAMBBQJjZQkAzAgCCQCkAwEFAmNiCQDMCAIJAKYDAQUCY2gJAMwIAgkApAMBBQJjYQUDbmlsBQFqAQJncgECZ3MABAJndAQCZHcJAQJlTQADCQABAgUCZHcCCkJ5dGVWZWN0b3IEAmVRBQJkdwUCZVEDCQABAgUCZHcCBFVuaXQIBQJncg9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCZHcFAmdyAwkAAQIFAmR3AgVPcmRlcgQCY1gFAmR3BAJndQkBAmFNAAQCYXoJAQJjVwEFAmNYBAJhQQkA9AMDCAUCY1gJYm9keUJ5dGVzCQCRAwIIBQJjWAZwcm9vZnMAAAgFAmNYD3NlbmRlclB1YmxpY0tleQQCYUIJAPQDAwgFAmNYCWJvZHlCeXRlcwkAkQMCCAUCY1gGcHJvb2ZzAAEFAmd1AwMDBQJhegUCYUEHBQJhQgcGCQECYXkDBQJhegUCYUEFAmFCAwkAAQIFAmR3AhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZU4FAmR3BAJndgkA9gMBCQEFdmFsdWUBCAUCZU4Gc2NyaXB0BAJndwkA2wQBCQEFdmFsdWUBCQCdCAIFAmFKCQECYXcABAJneAkA8QcBBQR0aGlzAwMJAAACBQJndwUCZ3YJAQIhPQIFAmd4BQJndgcGCQD0AwMIBQJncglib2R5Qnl0ZXMJAJEDAggFAmdyBnByb29mcwAABQJndAkA9AMDCAUCZ3IJYm9keUJ5dGVzCQCRAwIIBQJncgZwcm9vZnMAAAUCZ3SQlvL/", "chainId": 84, "height": 2336904, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: ARLUShCLUtw8pwPCLJXmzUgfKmJn16fnsu9vPEW3zowp Next: GZbVDSLwrFYkQwf8jJc7bJ7aGREbLMjTupdL2EUM2A6h Diff:
OldNewDifferences
537537 let eg = toInt(fraction(dX, toBigInt((dt / 2)), toBigInt(ef)))
538538 fraction((ea - eg), b, eg)
539539 }
540- $Tuple4(ea, cV, dz, ed)
540+ $Tuple5(ea, cV, dz, ed, dG)
541541 }
542542 else throw("Strict value is not equal to itself.")
543543 }
588588 let ez = (toInt(fraction(el, eq, dX)) * 2)
589589 fraction((et - ez), b, ez)
590590 }
591- $Tuple4(et, cV, dz, ed)
591+ $Tuple5(et, cV, dz, ed, ek)
592592 }
593593 else throw("Strict value is not equal to itself.")
594594 }
595595
596596
597-func eA () = {
597+func eA (eB,eC,cb) = {
598+ let eD = fraction(pow((eB * eC), 0, toBigInt(5), 1, 0, DOWN), d, cb)
599+ eD
600+ }
601+
602+
603+func eE (eF,eG,eH) = {
604+ let eI = (bw(aS(ba)) + eF)
605+ let eJ = (bw(aS(bb)) + eG)
606+ let eK = (value(assetInfo(aZ)).quantity + eH)
607+ let eD = eA(toBigInt(eI), toBigInt(eJ), toBigInt(eK))
608+ let eL = [IntegerEntry(ag, height), StringEntry(af, toString(eD))]
609+ $Tuple2(eL, eD)
610+ }
611+
612+
613+func eM () = {
598614 let dw = getString(Q())
599615 if ($isInstanceOf(dw, "String"))
600616 then {
601- let eB = dw
602- fromBase58String(eB)
617+ let eN = dw
618+ fromBase58String(eN)
603619 }
604620 else if ($isInstanceOf(dw, "Unit"))
605621 then unit
607623 }
608624
609625
610-func eC () = {
626+func eO () = {
611627 let dw = getString(R())
612628 if ($isInstanceOf(dw, "String"))
613629 then {
614- let eB = dw
615- fromBase58String(eB)
630+ let eN = dw
631+ fromBase58String(eN)
616632 }
617633 else if ($isInstanceOf(dw, "Unit"))
618634 then unit
620636 }
621637
622638
623-func eD (dl) = {
624- let dw = eA()
639+func eP (dl) = {
640+ let dw = eM()
625641 if ($isInstanceOf(dw, "ByteVector"))
626642 then {
627- let eE = dw
628- (dl.callerPublicKey == eE)
643+ let eQ = dw
644+ (dl.callerPublicKey == eQ)
629645 }
630646 else if ($isInstanceOf(dw, "Unit"))
631647 then (dl.caller == this)
633649 }
634650
635651
636-func eF (dl) = {
637- let eG = throw("Permission denied")
638- let dw = eA()
652+func eR (dl) = {
653+ let eS = throw("Permission denied")
654+ let dw = eM()
639655 if ($isInstanceOf(dw, "ByteVector"))
640656 then {
641- let eE = dw
642- if ((dl.callerPublicKey == eE))
657+ let eQ = dw
658+ if ((dl.callerPublicKey == eQ))
643659 then true
644- else eG
660+ else eS
645661 }
646662 else if ($isInstanceOf(dw, "Unit"))
647663 then if ((dl.caller == this))
648664 then true
649- else eG
665+ else eS
650666 else throw("Match error")
651667 }
652668
653669
654670 @Callable(dl)
655-func setManager (eH) = {
656- let eI = eF(dl)
657- if ((eI == eI))
671+func setManager (eT) = {
672+ let eU = eR(dl)
673+ if ((eU == eU))
658674 then {
659- let eJ = fromBase58String(eH)
660- if ((eJ == eJ))
661- then [StringEntry(R(), eH)]
675+ let eV = fromBase58String(eT)
676+ if ((eV == eV))
677+ then [StringEntry(R(), eT)]
662678 else throw("Strict value is not equal to itself.")
663679 }
664680 else throw("Strict value is not equal to itself.")
668684
669685 @Callable(dl)
670686 func confirmManager () = {
671- let eK = eC()
672- let eL = if (isDefined(eK))
687+ let eW = eO()
688+ let eX = if (isDefined(eW))
673689 then true
674690 else throw("No pending manager")
675- if ((eL == eL))
691+ if ((eX == eX))
676692 then {
677- let eM = if ((dl.callerPublicKey == value(eK)))
693+ let eY = if ((dl.callerPublicKey == value(eW)))
678694 then true
679695 else throw("You are not pending manager")
680- if ((eM == eM))
681- then [StringEntry(Q(), toBase58String(value(eK))), DeleteEntry(R())]
696+ if ((eY == eY))
697+ then [StringEntry(Q(), toBase58String(value(eW))), DeleteEntry(R())]
682698 else throw("Strict value is not equal to itself.")
683699 }
684700 else throw("Strict value is not equal to itself.")
687703
688704
689705 @Callable(dl)
690-func put (cq,eN) = if ((0 > cq))
706+func put (cq,eZ) = if ((0 > cq))
691707 then throw("Invalid slippageTolerance passed")
692708 else {
693709 let dr = do(dl, cq, true)
696712 let co = dr._9
697713 let cT = dr._10
698714 let cU = dr._11
699- let eO = dr._12
700- let eP = dr._13
715+ let fa = dr._12
716+ let fb = dr._13
701717 let du = invoke(aJ, "emit", [cS], nil)
702718 if ((du == du))
703719 then {
712728 }
713729 if ((dv == dv))
714730 then {
715- let eQ = if ((cT > 0))
716- then invoke(bg, "put", nil, [AttachedPayment(eO, cT)])
731+ let fc = if ((cT > 0))
732+ then invoke(bg, "put", nil, [AttachedPayment(fa, cT)])
717733 else nil
718- if ((eQ == eQ))
734+ if ((fc == fc))
719735 then {
720- let eR = if ((cU > 0))
721- then invoke(bg, "put", nil, [AttachedPayment(eP, cU)])
736+ let fd = if ((cU > 0))
737+ then invoke(bg, "put", nil, [AttachedPayment(fb, cU)])
722738 else nil
723- if ((eR == eR))
739+ if ((fd == fd))
724740 then {
725- let eS = if (eN)
741+ let fe = if (eZ)
726742 then {
727- let eT = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
728- if ((eT == eT))
743+ let ff = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
744+ if ((ff == ff))
729745 then nil
730746 else throw("Strict value is not equal to itself.")
731747 }
732748 else [ScriptTransfer(dl.caller, cS, bX)]
733- (co ++ eS)
749+ let fg = eE(0, 0, 0)
750+ let fh = fg._1
751+ let eD = fg._2
752+ ((co ++ fe) ++ fh)
734753 }
735754 else throw("Strict value is not equal to itself.")
736755 }
744763
745764
746765 @Callable(dl)
747-func putForFree (eU) = if ((0 > eU))
766+func putForFree (fi) = if ((0 > fi))
748767 then throw("Invalid value passed")
749768 else {
750- let dr = do(dl, eU, false)
751- dr._9
769+ let dr = do(dl, fi, false)
770+ let co = dr._9
771+ let fj = eE(0, 0, 0)
772+ let fh = fj._1
773+ let eD = fj._2
774+ (co ++ fh)
752775 }
753776
754777
755778
756779 @Callable(dl)
757-func putOneTkn (eV,eW) = {
758- let eX = {
759- let eY = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
760- if ($isInstanceOf(eY, "Boolean"))
761- then eY
762- else throw(($getType(eY) + " couldn't be cast to Boolean"))
780+func putOneTkn (fk,fl) = {
781+ let fm = {
782+ let fn = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
783+ if ($isInstanceOf(fn, "Boolean"))
784+ then fn
785+ else throw(($getType(fn) + " couldn't be cast to Boolean"))
763786 }
764- let eZ = if (if (if (aL())
787+ let fo = if (if (if (aL())
765788 then true
766789 else (aY == l))
767790 then true
768791 else (aY == n))
769792 then true
770- else eX
771- let ej = [if (if (!(eZ))
793+ else fm
794+ let ej = [if (if (!(fo))
772795 then true
773- else eD(dl))
796+ else eP(dl))
774797 then true
775798 else aG("put operation is blocked by admin"), if ((size(dl.payments) == 1))
776799 then true
777800 else aG("exactly 1 payment are expected")]
778801 if ((ej == ej))
779802 then {
780- let fa = dl.payments[0]
781- let dC = fa.assetId
782- let dB = fa.amount
803+ let fp = dl.payments[0]
804+ let dC = fp.assetId
805+ let dB = fp.amount
783806 let X = dl.caller
784807 let Y = dl.transactionId
785- let fb = dA(dB, dC, X, Y)
786- let fc = fb._1
787- let cV = fb._2
788- let dz = fb._3
789- let fd = fb._4
790- let fe = if (if ((eV > 0))
791- then (eV > fc)
808+ let fq = dA(dB, dC, X, Y)
809+ let fr = fq._1
810+ let cV = fq._2
811+ let dz = fq._3
812+ let fs = fq._4
813+ let dG = fq._5
814+ let ft = if (if ((fk > 0))
815+ then (fk > fr)
792816 else false)
793- then aG(makeString(["amount to receive is less than ", toString(eV)], ""))
794- else fc
795- let du = ds(fe)
817+ then aG(makeString(["amount to receive is less than ", toString(fk)], ""))
818+ else fr
819+ let du = ds(ft)
796820 if ((du == du))
797821 then {
798- let eS = if (eW)
822+ let fe = if (fl)
799823 then {
800- let ff = invoke(bf, "stake", nil, [AttachedPayment(aZ, fe)])
801- if ((ff == ff))
824+ let fu = invoke(bf, "stake", nil, [AttachedPayment(aZ, ft)])
825+ if ((fu == fu))
802826 then nil
803827 else throw("Strict value is not equal to itself.")
804828 }
805- else [ScriptTransfer(dl.caller, fe, aZ)]
806- let fg = if ((dz > 0))
829+ else [ScriptTransfer(dl.caller, ft, aZ)]
830+ let fv = if ((dz > 0))
807831 then [ScriptTransfer(aK, dz, dC)]
808832 else nil
809- $Tuple2(((cV ++ eS) ++ fg), fe)
833+ let fw = if ((this == aK))
834+ then $Tuple2(0, 0)
835+ else if (dG)
836+ then $Tuple2(-(dz), 0)
837+ else $Tuple2(0, -(dz))
838+ let eF = fw._1
839+ let eG = fw._2
840+ let fx = eE(eF, eG, 0)
841+ let fh = fx._1
842+ let eD = fx._2
843+ $Tuple2((((cV ++ fe) ++ fv) ++ fh), ft)
810844 }
811845 else throw("Strict value is not equal to itself.")
812846 }
817851
818852 @Callable(dl)
819853 func putOneTknREADONLY (dC,dB) = {
820- let fh = dA(dB, aQ(dC), unit, unit)
821- let fc = fh._1
822- let cV = fh._2
823- let dz = fh._3
824- let fd = fh._4
825- $Tuple2(nil, $Tuple3(fc, dz, fd))
854+ let fy = dA(dB, aQ(dC), unit, unit)
855+ let fr = fy._1
856+ let cV = fy._2
857+ let dz = fy._3
858+ let fs = fy._4
859+ let dG = fy._5
860+ $Tuple2(nil, $Tuple3(fr, dz, fs))
826861 }
827862
828863
829864
830865 @Callable(dl)
831-func getOneTkn (fi,eV) = {
832- let eX = {
833- let eY = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
834- if ($isInstanceOf(eY, "Boolean"))
835- then eY
836- else throw(($getType(eY) + " couldn't be cast to Boolean"))
866+func getOneTkn (fz,fk) = {
867+ let fm = {
868+ let fn = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
869+ if ($isInstanceOf(fn, "Boolean"))
870+ then fn
871+ else throw(($getType(fn) + " couldn't be cast to Boolean"))
837872 }
838- let fj = if (if (aL())
873+ let fA = if (if (aL())
839874 then true
840875 else (aY == n))
841876 then true
842- else eX
843- let ej = [if (if (!(fj))
877+ else fm
878+ let ej = [if (if (!(fA))
844879 then true
845- else eD(dl))
880+ else eP(dl))
846881 then true
847882 else aG("get operation is blocked by admin"), if ((size(dl.payments) == 1))
848883 then true
849884 else aG("exactly 1 payment are expected")]
850885 if ((ej == ej))
851886 then {
852- let ei = aQ(fi)
853- let fa = dl.payments[0]
854- let dC = fa.assetId
855- let dQ = fa.amount
887+ let ei = aQ(fz)
888+ let fp = dl.payments[0]
889+ let dC = fp.assetId
890+ let dQ = fp.amount
856891 let X = dl.caller
857892 let Y = dl.transactionId
858- let fk = eh(ei, dQ, dC, X, Y)
859- let fl = fk._1
860- let cV = fk._2
861- let dz = fk._3
862- let fd = fk._4
863- let dt = if (if ((eV > 0))
864- then (eV > fl)
893+ let fB = eh(ei, dQ, dC, X, Y)
894+ let fC = fB._1
895+ let cV = fB._2
896+ let dz = fB._3
897+ let fs = fB._4
898+ let ek = fB._5
899+ let dt = if (if ((fk > 0))
900+ then (fk > fC)
865901 else false)
866- then aG(makeString(["amount to receive is less than ", toString(eV)], ""))
867- else fl
868- let fm = invoke(aJ, "burn", [dQ], [AttachedPayment(dC, dQ)])
869- if ((fm == fm))
902+ then aG(makeString(["amount to receive is less than ", toString(fk)], ""))
903+ else fC
904+ let fD = invoke(aJ, "burn", [dQ], [AttachedPayment(dC, dQ)])
905+ if ((fD == fD))
870906 then {
871- let fn = [ScriptTransfer(X, dt, ei)]
872- let fg = if ((dz > 0))
907+ let fE = [ScriptTransfer(X, dt, ei)]
908+ let fv = if ((dz > 0))
873909 then [ScriptTransfer(aK, dz, ei)]
874910 else nil
875- $Tuple2(((cV ++ fn) ++ fg), dt)
911+ let fF = {
912+ let fG = if ((this == aK))
913+ then 0
914+ else dz
915+ if (ek)
916+ then $Tuple2(-((dt + fG)), 0)
917+ else $Tuple2(0, -((dt + fG)))
918+ }
919+ let eF = fF._1
920+ let eG = fF._2
921+ let fH = eE(eF, eG, 0)
922+ let fh = fH._1
923+ let eD = fH._2
924+ $Tuple2((((cV ++ fE) ++ fv) ++ fh), dt)
876925 }
877926 else throw("Strict value is not equal to itself.")
878927 }
883932
884933 @Callable(dl)
885934 func getOneTknREADONLY (ei,dQ) = {
886- let fo = eh(aQ(ei), dQ, aZ, unit, unit)
887- let fl = fo._1
888- let cV = fo._2
889- let dz = fo._3
890- let fd = fo._4
891- $Tuple2(nil, $Tuple3(fl, dz, fd))
935+ let fI = eh(aQ(ei), dQ, aZ, unit, unit)
936+ let fC = fI._1
937+ let cV = fI._2
938+ let dz = fI._3
939+ let fs = fI._4
940+ let ek = fI._5
941+ $Tuple2(nil, $Tuple3(fC, dz, fs))
892942 }
893943
894944
895945
896946 @Callable(dl)
897-func unstakeAndGetOneTkn (fp,fi,eV) = {
898- let eX = {
899- let eY = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
900- if ($isInstanceOf(eY, "Boolean"))
901- then eY
902- else throw(($getType(eY) + " couldn't be cast to Boolean"))
947+func unstakeAndGetOneTkn (fJ,fz,fk) = {
948+ let fm = {
949+ let fn = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
950+ if ($isInstanceOf(fn, "Boolean"))
951+ then fn
952+ else throw(($getType(fn) + " couldn't be cast to Boolean"))
903953 }
904- let fj = if (if (aL())
954+ let fA = if (if (aL())
905955 then true
906956 else (aY == n))
907957 then true
908- else eX
909- let ej = [if (if (!(fj))
958+ else fm
959+ let ej = [if (if (!(fA))
910960 then true
911- else eD(dl))
961+ else eP(dl))
912962 then true
913963 else aG("get operation is blocked by admin"), if ((size(dl.payments) == 0))
914964 then true
915965 else aG("no payments are expected")]
916966 if ((ej == ej))
917967 then {
918- let ei = aQ(fi)
968+ let ei = aQ(fz)
919969 let X = dl.caller
920970 let Y = dl.transactionId
921- let fq = invoke(bf, "unstake", [toBase58String(aZ), fp], nil)
922- if ((fq == fq))
971+ let fK = invoke(bf, "unstake", [toBase58String(aZ), fJ], nil)
972+ if ((fK == fK))
923973 then {
924- let fr = eh(ei, fp, aZ, X, Y)
925- let fl = fr._1
926- let cV = fr._2
927- let dz = fr._3
928- let fd = fr._4
929- let dt = if (if ((eV > 0))
930- then (eV > fl)
974+ let fL = eh(ei, fJ, aZ, X, Y)
975+ let fC = fL._1
976+ let cV = fL._2
977+ let dz = fL._3
978+ let fs = fL._4
979+ let ek = fL._5
980+ let dt = if (if ((fk > 0))
981+ then (fk > fC)
931982 else false)
932- then aG(makeString(["amount to receive is less than ", toString(eV)], ""))
933- else fl
934- let fm = invoke(aJ, "burn", [fp], [AttachedPayment(aZ, fp)])
935- if ((fm == fm))
983+ then aG(makeString(["amount to receive is less than ", toString(fk)], ""))
984+ else fC
985+ let fD = invoke(aJ, "burn", [fJ], [AttachedPayment(aZ, fJ)])
986+ if ((fD == fD))
936987 then {
937- let fn = [ScriptTransfer(dl.caller, dt, ei)]
938- let fg = if ((dz > 0))
988+ let fE = [ScriptTransfer(dl.caller, dt, ei)]
989+ let fv = if ((dz > 0))
939990 then [ScriptTransfer(aK, dz, ei)]
940991 else nil
941- $Tuple2(((cV ++ fn) ++ fg), dt)
992+ let fM = {
993+ let fG = if ((this == aK))
994+ then 0
995+ else dz
996+ if (ek)
997+ then $Tuple2(-((dt + fG)), 0)
998+ else $Tuple2(0, -((dt + fG)))
999+ }
1000+ let eF = fM._1
1001+ let eG = fM._2
1002+ let fN = eE(eF, eG, 0)
1003+ let fh = fN._1
1004+ let eD = fN._2
1005+ $Tuple2((((cV ++ fE) ++ fv) ++ fh), dt)
9421006 }
9431007 else throw("Strict value is not equal to itself.")
9441008 }
9521016 @Callable(dl)
9531017 func get () = {
9541018 let cG = dk(dl)
955- let fs = cG._1
1019+ let fO = cG._1
9561020 let cn = cG._2
9571021 let dn = cG._3
9581022 let bV = cG._4
9591023 let co = cG._5
960- let ft = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
961- if ((ft == ft))
962- then co
1024+ let fP = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
1025+ if ((fP == fP))
1026+ then {
1027+ let fQ = eE(-(fO), -(cn), 0)
1028+ let fh = fQ._1
1029+ let eD = fQ._2
1030+ (co ++ fh)
1031+ }
9631032 else throw("Strict value is not equal to itself.")
9641033 }
9651034
9661035
9671036
9681037 @Callable(dl)
969-func getNoLess (fu,fv) = {
1038+func getNoLess (fR,fS) = {
9701039 let cG = dk(dl)
9711040 let cm = cG._1
9721041 let cn = cG._2
9731042 let dn = cG._3
9741043 let bV = cG._4
9751044 let co = cG._5
976- if ((fu > cm))
977- then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fu)))
978- else if ((fv > cn))
979- then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fv)))
1045+ if ((fR > cm))
1046+ then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fR)))
1047+ else if ((fS > cn))
1048+ then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fS)))
9801049 else {
981- let ft = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
982- if ((ft == ft))
983- then co
1050+ let fP = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
1051+ if ((fP == fP))
1052+ then {
1053+ let fT = eE(-(cm), -(cn), 0)
1054+ let fh = fT._1
1055+ let eD = fT._2
1056+ (co ++ fh)
1057+ }
9841058 else throw("Strict value is not equal to itself.")
9851059 }
9861060 }
9891063
9901064 @Callable(dl)
9911065 func unstakeAndGet (dt) = {
992- let fw = if ((size(dl.payments) != 0))
1066+ let fU = if ((size(dl.payments) != 0))
9931067 then throw("No payments are expected")
9941068 else true
995- if ((fw == fw))
1069+ if ((fU == fU))
9961070 then {
9971071 let bK = aN()
9981072 let bX = fromBase58String(bK[q])
999- let fq = invoke(bf, "unstake", [toBase58String(bX), dt], nil)
1000- if ((fq == fq))
1073+ let fK = invoke(bf, "unstake", [toBase58String(bX), dt], nil)
1074+ if ((fK == fK))
10011075 then {
10021076 let cG = bT(toBase58String(dl.transactionId), toBase58String(bX), dt, dl.caller)
1077+ let cm = cG._1
1078+ let cn = cG._2
10031079 let ca = parseIntValue(cG._9)
10041080 let co = cG._10
1005- let fx = if (if (aL())
1081+ let fV = if (if (aL())
10061082 then true
10071083 else (ca == n))
10081084 then throw(("Get operation is blocked by admin. Status = " + toString(ca)))
10091085 else true
1010- if ((fx == fx))
1086+ if ((fV == fV))
10111087 then {
1012- let ft = invoke(aJ, "burn", [dt], [AttachedPayment(bX, dt)])
1013- if ((ft == ft))
1014- then co
1088+ let fP = invoke(aJ, "burn", [dt], [AttachedPayment(bX, dt)])
1089+ if ((fP == fP))
1090+ then {
1091+ let fW = eE(-(cm), -(cn), 0)
1092+ let fh = fW._1
1093+ let eD = fW._2
1094+ (co ++ fh)
1095+ }
10151096 else throw("Strict value is not equal to itself.")
10161097 }
10171098 else throw("Strict value is not equal to itself.")
10241105
10251106
10261107 @Callable(dl)
1027-func unstakeAndGetNoLess (fp,fy,fv) = {
1028- let fj = if (aL())
1108+func unstakeAndGetNoLess (fJ,fX,fS) = {
1109+ let fA = if (aL())
10291110 then true
10301111 else (aY == n)
1031- let ej = [if (!(fj))
1112+ let ej = [if (!(fA))
10321113 then true
10331114 else throw("get operation is blocked by admin"), if ((size(dl.payments) == 0))
10341115 then true
10351116 else throw("no payments are expected")]
10361117 if ((ej == ej))
10371118 then {
1038- let fq = invoke(bf, "unstake", [toBase58String(aZ), fp], nil)
1039- if ((fq == fq))
1119+ let fK = invoke(bf, "unstake", [toBase58String(aZ), fJ], nil)
1120+ if ((fK == fK))
10401121 then {
1041- let cG = bT(toBase58String(dl.transactionId), toBase58String(aZ), fp, dl.caller)
1122+ let cG = bT(toBase58String(dl.transactionId), toBase58String(aZ), fJ, dl.caller)
10421123 let cm = cG._1
10431124 let cn = cG._2
10441125 let co = cG._10
1045- let fz = [if ((cm >= fy))
1126+ let fY = [if ((cm >= fX))
10461127 then true
1047- else throw(makeString(["amount asset amount to receive is less than ", toString(fy)], "")), if ((cn >= fv))
1128+ else throw(makeString(["amount asset amount to receive is less than ", toString(fX)], "")), if ((cn >= fS))
10481129 then true
1049- else throw(makeString(["price asset amount to receive is less than ", toString(fv)], ""))]
1050- if ((fz == fz))
1130+ else throw(makeString(["price asset amount to receive is less than ", toString(fS)], ""))]
1131+ if ((fY == fY))
10511132 then {
1052- let ft = invoke(aJ, "burn", [fp], [AttachedPayment(aZ, fp)])
1053- if ((ft == ft))
1054- then co
1133+ let fP = invoke(aJ, "burn", [fJ], [AttachedPayment(aZ, fJ)])
1134+ if ((fP == fP))
1135+ then {
1136+ let fZ = eE(-(cm), -(cn), 0)
1137+ let fh = fZ._1
1138+ let eD = fZ._2
1139+ (co ++ fh)
1140+ }
10551141 else throw("Strict value is not equal to itself.")
10561142 }
10571143 else throw("Strict value is not equal to itself.")
10641150
10651151
10661152 @Callable(dl)
1067-func activate (fA,fB) = if ((toString(dl.caller) != toString(aJ)))
1153+func activate (ga,gb) = if ((toString(dl.caller) != toString(aJ)))
10681154 then throw("permissions denied")
1069- else $Tuple2([StringEntry(aa(), fA), StringEntry(ab(), fB)], "success")
1155+ else $Tuple2([StringEntry(aa(), ga), StringEntry(ab(), gb)], "success")
10701156
10711157
10721158
10731159 @Callable(dl)
10741160 func refreshKLp () = {
1075- let fC = valueOrElse(getInteger(ag), 0)
1076- let fD = if (((height - fC) >= aj))
1161+ let gc = valueOrElse(getInteger(ag), 0)
1162+ let gd = if (((height - gc) >= aj))
10771163 then unit
10781164 else aG(makeString([toString(aj), " blocks have not passed since the previous call"], ""))
1079- if ((fD == fD))
1165+ if ((gd == gd))
10801166 then {
1081- let fE = toBigInt(bw(aS(ba)))
1082- let fF = toBigInt(bw(aS(bb)))
1083- let fG = toBigInt(value(assetInfo(aZ)).quantity)
1084- let fH = fraction(pow((fE * fF), 0, toBigInt(5), 1, 0, DOWN), d, fG)
1085- let fI = [IntegerEntry(ag, height), StringEntry(af, toString(fH))]
1086- $Tuple2(fI, toString(fH))
1167+ let ge = eE(0, 0, 0)
1168+ let eL = ge._1
1169+ let eD = ge._2
1170+ $Tuple2(eL, toString(eD))
10871171 }
10881172 else throw("Strict value is not equal to itself.")
10891173 }
11461230 let cA = bK[w]
11471231 let bL = parseIntValue(bK[t])
11481232 let bM = parseIntValue(bK[u])
1149- let fJ = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1233+ let gf = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
11501234 let da = bw(cY)
11511235 let db = bw(cZ)
1152- let fK = if ((fJ == 0))
1236+ let gg = if ((gf == 0))
11531237 then [e, e, e]
1154- else bI(da, db, fJ)
1238+ else bI(da, db, gf)
11551239 let ch = 0
1156- let fL = G(fK[1], b)
1157- let fM = G(fK[2], b)
1158- let fN = value(getInteger(aJ, au(toString(this))))
1159- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(da), toString(db), toString(fJ), toString(ch), toString(fL), toString(fM), toString(fN)], j))
1240+ let gh = G(gg[1], b)
1241+ let gi = G(gg[2], b)
1242+ let gj = value(getInteger(aJ, au(toString(this))))
1243+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(da), toString(db), toString(gf), toString(ch), toString(gh), toString(gi), toString(gj)], j))
11601244 }
11611245
11621246
11721256 let bL = parseIntValue(bK[t])
11731257 let bM = parseIntValue(bK[u])
11741258 let ca = bK[p]
1175- let fJ = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1259+ let gf = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
11761260 let da = bw(cx)
11771261 let db = bw(cy)
11781262 let bG = D(da, bL)
11791263 let bH = D(db, bM)
1180- let cg = if ((fJ == 0))
1264+ let cg = if ((gf == 0))
11811265 then e
11821266 else by(bH, bG)
11831267 let cD = D(cr, bL)
11851269 let ct = G(cE, bM)
11861270 let dr = cp("", 500000, cr, bY, ct, bZ, "", true, false)
11871271 let cO = dr._1
1188- let fO = dr._3
1272+ let gk = dr._3
11891273 let cc = dr._4
11901274 let ce = dr._5
11911275 let cb = dr._6
12051289 let bL = parseIntValue(bK[t])
12061290 let bM = parseIntValue(bK[u])
12071291 let ca = bK[p]
1208- let fJ = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1209- let fP = bw(cx)
1210- let fQ = bw(cy)
1211- let fR = D(fP, bL)
1212- let fS = D(fQ, bM)
1213- let cg = if ((fJ == 0))
1292+ let gf = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1293+ let gl = bw(cx)
1294+ let gm = bw(cy)
1295+ let gn = D(gl, bL)
1296+ let go = D(gm, bM)
1297+ let cg = if ((gf == 0))
12141298 then e
1215- else by(fS, fR)
1299+ else by(go, gn)
12161300 let cE = D(ct, bM)
12171301 let cD = fraction(cE, d, cg)
12181302 let cr = G(cD, bL)
12191303 let dr = cp("", 500000, cr, bY, ct, bZ, "", true, false)
12201304 let cO = dr._1
1221- let fO = dr._3
1305+ let gk = dr._3
12221306 let cc = dr._4
12231307 let ce = dr._5
12241308 let cb = dr._6
12281312
12291313
12301314 @Callable(dl)
1231-func evaluateGetREADONLY (fT,fU) = {
1232- let cG = bT("", fT, fU, this)
1315+func evaluateGetREADONLY (gp,gq) = {
1316+ let cG = bT("", gp, gq, this)
12331317 let cm = cG._1
12341318 let cn = cG._2
12351319 let cc = cG._5
12411325 }
12421326
12431327
1244-@Verifier(fV)
1245-func fW () = {
1246- let fX = {
1247- let dw = eA()
1328+@Verifier(gr)
1329+func gs () = {
1330+ let gt = {
1331+ let dw = eM()
12481332 if ($isInstanceOf(dw, "ByteVector"))
12491333 then {
1250- let eE = dw
1251- eE
1334+ let eQ = dw
1335+ eQ
12521336 }
12531337 else if ($isInstanceOf(dw, "Unit"))
1254- then fV.senderPublicKey
1338+ then gr.senderPublicKey
12551339 else throw("Match error")
12561340 }
1257- let dw = fV
1341+ let dw = gr
12581342 if ($isInstanceOf(dw, "Order"))
12591343 then {
12601344 let cX = dw
1261- let fY = aM()
1345+ let gu = aM()
12621346 let az = cW(cX)
12631347 let aA = sigVerify(cX.bodyBytes, cX.proofs[0], cX.senderPublicKey)
1264- let aB = sigVerify(cX.bodyBytes, cX.proofs[1], fY)
1348+ let aB = sigVerify(cX.bodyBytes, cX.proofs[1], gu)
12651349 if (if (if (az)
12661350 then aA
12671351 else false)
12721356 }
12731357 else if ($isInstanceOf(dw, "SetScriptTransaction"))
12741358 then {
1275- let eB = dw
1276- let fZ = blake2b256(value(eB.script))
1277- let ga = fromBase64String(value(getString(aJ, aw())))
1278- let gb = scriptHash(this)
1279- if (if ((ga == fZ))
1280- then (gb != fZ)
1359+ let eN = dw
1360+ let gv = blake2b256(value(eN.script))
1361+ let gw = fromBase64String(value(getString(aJ, aw())))
1362+ let gx = scriptHash(this)
1363+ if (if ((gw == gv))
1364+ then (gx != gv)
12811365 else false)
12821366 then true
1283- else sigVerify(fV.bodyBytes, fV.proofs[0], fX)
1367+ else sigVerify(gr.bodyBytes, gr.proofs[0], gt)
12841368 }
1285- else sigVerify(fV.bodyBytes, fV.proofs[0], fX)
1369+ else sigVerify(gr.bodyBytes, gr.proofs[0], gt)
12861370 }
12871371
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 (K,L,M) = fraction(K, L, M)
6969
7070
7171 func N (H) = if ((0 > H))
7272 then -(H)
7373 else H
7474
7575
7676 func O (H) = if ((e > H))
7777 then -(H)
7878 else H
7979
8080
8181 func P () = "%s__factoryContract"
8282
8383
8484 func Q () = "%s__managerPublicKey"
8585
8686
8787 func R () = "%s__pendingManagerPublicKey"
8888
8989
9090 func S () = "%s%s__price__last"
9191
9292
9393 func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
9494
9595
9696 func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
9797
9898
9999 func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
100100
101101
102102 func aa () = "%s__amountAsset"
103103
104104
105105 func ab () = "%s__priceAsset"
106106
107107
108108 let ac = "%s__fee"
109109
110110 let ad = fraction(10, b, 10000)
111111
112112 let ae = valueOrElse(getInteger(this, ac), ad)
113113
114114 let af = makeString(["%s", "kLp"], j)
115115
116116 let ag = makeString(["%s", "kLpRefreshedHeight"], j)
117117
118118 let ah = makeString(["%s", "refreshKLpDelay"], j)
119119
120120 let ai = 30
121121
122122 let aj = valueOrElse(getInteger(this, ah), ai)
123123
124124 func ak () = "%s__factoryConfig"
125125
126126
127127 func al () = "%s%s__matcher__publicKey"
128128
129129
130130 func am (an) = (("%s%s%s__" + an) + "__mappings__poolContract2LpAsset")
131131
132132
133133 func ao (ap,aq) = (((("%d%d%s__" + ap) + "__") + aq) + "__config")
134134
135135
136136 func ar (as) = ("%s%s%s__mappings__baseAsset2internalId__" + as)
137137
138138
139139 func at () = "%s__shutdown"
140140
141141
142142 func au (av) = ("%s%s__poolWeight__" + av)
143143
144144
145145 func aw () = "%s__allowedLpScriptHash"
146146
147147
148148 let ax = "%s__feeCollectorAddress"
149149
150150 func ay (az,aA,aB) = throw(((((("order validation failed: orderValid=" + toString(az)) + " senderValid=") + toString(aA)) + " matcherValid=") + toString(aB)))
151151
152152
153153 func aC (aD,aE) = valueOrErrorMessage(getString(aD, aE), makeString(["mandatory ", toString(aD), ".", aE, " is not defined"], ""))
154154
155155
156156 func aF (aD,aE) = valueOrErrorMessage(getInteger(aD, aE), makeString(["mandatory ", toString(aD), ".", aE, " is not defined"], ""))
157157
158158
159159 func aG (aH) = throw(makeString(["lp.ride:", aH], " "))
160160
161161
162162 func aI (aH) = makeString(["lp.ride:", aH], " ")
163163
164164
165165 let aJ = addressFromStringValue(aC(this, P()))
166166
167167 let aK = addressFromStringValue(aC(aJ, ax))
168168
169169 func aL () = valueOrElse(getBoolean(aJ, at()), false)
170170
171171
172172 func aM () = fromBase58String(aC(aJ, al()))
173173
174174
175175 func aN () = {
176176 let aO = aC(this, aa())
177177 let aP = aC(this, ab())
178178 let aq = aF(aJ, ar(aP))
179179 let ap = aF(aJ, ar(aO))
180180 split(aC(aJ, ao(toString(ap), toString(aq))), j)
181181 }
182182
183183
184184 func aQ (aR) = if ((aR == i))
185185 then unit
186186 else fromBase58String(aR)
187187
188188
189189 func aS (aR) = if ((aR == unit))
190190 then i
191191 else toBase58String(value(aR))
192192
193193
194194 func aT (aU) = $Tuple7(addressFromStringValue(aU[o]), parseIntValue(aU[p]), fromBase58String(aU[q]), aQ(aU[r]), aQ(aU[s]), parseIntValue(aU[t]), parseIntValue(aU[u]))
195195
196196
197197 let aV = aT(aN())
198198
199199 let aW = aV
200200
201201 let aX = aW._1
202202
203203 let aY = aW._2
204204
205205 let aZ = aW._3
206206
207207 let ba = aW._4
208208
209209 let bb = aW._5
210210
211211 let bc = aW._6
212212
213213 let bd = aW._7
214214
215215 func be () = split(aC(aJ, ak()), j)
216216
217217
218218 let bf = valueOrErrorMessage(addressFromString(be()[B]), "incorrect staking address")
219219
220220 let bg = valueOrErrorMessage(addressFromString(be()[C]), "incorrect staking address")
221221
222222 func bh (bi,bj,bk,bl,bm,bn,bo,bp,bq,br) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bi), toString(bj), toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br)], j)
223223
224224
225225 func bs (bt,bu,bv,bl,bo,bp) = makeString(["%d%d%d%d%d%d", toString(bt), toString(bu), toString(bv), toString(bl), toString(bo), toString(bp)], j)
226226
227227
228228 func bw (bx) = if ((bx == "WAVES"))
229229 then wavesBalance(this).available
230230 else assetBalance(this, fromBase58String(bx))
231231
232232
233233 func by (bz,bA) = fraction(bz, d, bA)
234234
235235
236236 func bB (bC,bD,bE,bF) = {
237237 let bG = D(bE, bC)
238238 let bH = D(bF, bD)
239239 by(bH, bG)
240240 }
241241
242242
243243 func bI (bE,bF,bJ) = {
244244 let bK = aN()
245245 let bL = parseIntValue(bK[t])
246246 let bM = parseIntValue(bK[u])
247247 let bN = bB(bL, bM, bE, bF)
248248 let bA = D(bE, bL)
249249 let bz = D(bF, bM)
250250 let bO = D(bJ, b)
251251 let bP = by(bA, bO)
252252 let bQ = by(bz, bO)
253253 [bN, bP, bQ]
254254 }
255255
256256
257257 func bR (bE,bF,bJ) = {
258258 let bS = bI(bE, bF, bJ)
259259 [G(bS[0], b), G(bS[1], b), G(bS[2], b)]
260260 }
261261
262262
263263 func bT (bU,bV,bW,X) = {
264264 let bK = aN()
265265 let bX = bK[q]
266266 let bY = bK[r]
267267 let bZ = bK[s]
268268 let bC = parseIntValue(bK[t])
269269 let bD = parseIntValue(bK[u])
270270 let ca = bK[p]
271271 let cb = valueOrErrorMessage(assetInfo(fromBase58String(bX)), (("Asset " + bX) + " doesn't exist")).quantity
272272 if ((bX != bV))
273273 then throw("Invalid asset passed.")
274274 else {
275275 let cc = bw(bY)
276276 let cd = D(cc, bC)
277277 let ce = bw(bZ)
278278 let cf = D(ce, bD)
279279 let cg = by(cf, cd)
280280 let ch = G(cg, b)
281281 let ci = D(bW, b)
282282 let cj = D(cb, b)
283283 let ck = fraction(cd, ci, cj)
284284 let cl = fraction(cf, ci, cj)
285285 let cm = G(ck, bC)
286286 let cn = G(cl, bD)
287287 let co = if ((bU == ""))
288288 then nil
289289 else [ScriptTransfer(X, cm, if ((bY == "WAVES"))
290290 then unit
291291 else fromBase58String(bY)), ScriptTransfer(X, cn, if ((bZ == "WAVES"))
292292 then unit
293293 else fromBase58String(bZ)), StringEntry(Z(toString(X), bU), bs(cm, cn, bW, ch, height, lastBlock.timestamp)), IntegerEntry(S(), ch), IntegerEntry(T(height, lastBlock.timestamp), ch)]
294294 $Tuple10(cm, cn, bY, bZ, cc, ce, cb, cg, ca, co)
295295 }
296296 }
297297
298298
299299 func cp (bU,cq,cr,cs,ct,cu,X,cv,cw) = {
300300 let bK = aN()
301301 let bX = fromBase58String(bK[q])
302302 let cx = bK[r]
303303 let cy = bK[s]
304304 let cz = bK[v]
305305 let cA = bK[w]
306306 let bL = parseIntValue(bK[t])
307307 let bM = parseIntValue(bK[u])
308308 let ca = bK[p]
309309 let cb = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
310310 let cB = toBase58String(valueOrElse(cs, fromBase58String("WAVES")))
311311 let cC = toBase58String(valueOrElse(cu, fromBase58String("WAVES")))
312312 if (if ((cx != cB))
313313 then true
314314 else (cy != cC))
315315 then throw("Invalid amt or price asset passed.")
316316 else {
317317 let cc = if (cv)
318318 then bw(cx)
319319 else (bw(cx) - cr)
320320 let ce = if (cv)
321321 then bw(cy)
322322 else (bw(cy) - ct)
323323 let cD = D(cr, bL)
324324 let cE = D(ct, bM)
325325 let cF = by(cE, cD)
326326 let cd = D(cc, bL)
327327 let cf = D(ce, bM)
328328 let cG = if ((cb == 0))
329329 then {
330330 let cg = e
331331 let cH = e
332332 let bO = pow((cD * cE), 0, toBigInt(5), 1, 0, DOWN)
333333 $Tuple5(G(bO, b), G(cD, bL), G(cE, bM), by((cf + cE), (cd + cD)), cH)
334334 }
335335 else {
336336 let cg = by(cf, cd)
337337 let cH = fraction(O((cg - cF)), d, cg)
338338 let cI = D(cq, b)
339339 if (if ((cg != e))
340340 then (cH > cI)
341341 else false)
342342 then throw(((("Price slippage " + toString(cH)) + " exceeded the passed limit of ") + toString(cI)))
343343 else {
344344 let cj = D(cb, b)
345345 let cJ = fraction(cD, cg, d)
346346 let cK = fraction(cE, d, cg)
347347 let cL = if ((cJ > cE))
348348 then $Tuple2(cK, cE)
349349 else $Tuple2(cD, cJ)
350350 let cM = cL._1
351351 let cN = cL._2
352352 let bO = fraction(cj, cN, cf)
353353 $Tuple5(G(bO, b), G(cM, bL), G(cN, bM), cg, cH)
354354 }
355355 }
356356 let cO = cG._1
357357 let cP = cG._2
358358 let cQ = cG._3
359359 let ch = G(cG._4, b)
360360 let cR = G(cG._5, b)
361361 if ((0 >= cO))
362362 then throw("Invalid calculations. LP calculated is less than zero.")
363363 else {
364364 let cS = if (!(cw))
365365 then 0
366366 else cO
367367 let cT = (cr - cP)
368368 let cU = (ct - cQ)
369369 let cV = [IntegerEntry(S(), ch), IntegerEntry(T(height, lastBlock.timestamp), ch), StringEntry(W(X, bU), bh(cP, cQ, cS, ch, cq, cR, height, lastBlock.timestamp, cT, cU))]
370370 $Tuple13(cO, cS, ch, cc, ce, cb, bX, ca, cV, cT, cU, cs, cu)
371371 }
372372 }
373373 }
374374
375375
376376 func cW (cX) = {
377377 let bK = aN()
378378 let cY = bK[r]
379379 let cZ = bK[s]
380380 let ca = parseIntValue(bK[p])
381381 let bL = parseIntValue(bK[t])
382382 let bM = parseIntValue(bK[u])
383383 let da = bw(cY)
384384 let db = bw(cZ)
385385 let cg = if ((cX.orderType == Buy))
386386 then bB(bL, bM, (da + cX.amount), db)
387387 else bB(bL, bM, (da - cX.amount), db)
388388 let ch = G(cg, b)
389389 if (if (if (aL())
390390 then true
391391 else (ca == m))
392392 then true
393393 else (ca == n))
394394 then throw("Exchange operations disabled")
395395 else {
396396 let dc = cX.assetPair.amountAsset
397397 let dd = if ((dc == unit))
398398 then "WAVES"
399399 else toBase58String(value(dc))
400400 let de = cX.assetPair.priceAsset
401401 let df = if ((de == unit))
402402 then "WAVES"
403403 else toBase58String(value(de))
404404 if (if ((dd != cY))
405405 then true
406406 else (df != cZ))
407407 then throw("Wrong order assets.")
408408 else {
409409 let dg = cX.price
410410 let dh = fraction(b, bM, bL)
411411 let di = J(dg, b, dh)
412412 let dj = if ((cX.orderType == Buy))
413413 then (ch >= di)
414414 else (di >= ch)
415415 true
416416 }
417417 }
418418 }
419419
420420
421421 func dk (dl) = if ((size(dl.payments) != 1))
422422 then throw("exactly 1 payment is expected")
423423 else {
424424 let dm = value(dl.payments[0])
425425 let bV = value(dm.assetId)
426426 let dn = dm.amount
427427 let cG = bT(toBase58String(dl.transactionId), toBase58String(bV), dn, dl.caller)
428428 let cm = cG._1
429429 let cn = cG._2
430430 let ca = parseIntValue(cG._9)
431431 let co = cG._10
432432 if (if (aL())
433433 then true
434434 else (ca == n))
435435 then throw(("Get operation is blocked by admin. Status = " + toString(ca)))
436436 else $Tuple5(cm, cn, dn, bV, co)
437437 }
438438
439439
440440 func do (dl,cq,cw) = if ((size(dl.payments) != 2))
441441 then throw("exactly 2 payments are expected")
442442 else {
443443 let dp = value(dl.payments[0])
444444 let dq = value(dl.payments[1])
445445 let dr = cp(toBase58String(dl.transactionId), cq, dp.amount, dp.assetId, dq.amount, dq.assetId, toString(dl.caller), false, cw)
446446 let ca = parseIntValue(dr._8)
447447 if (if (if (aL())
448448 then true
449449 else (ca == l))
450450 then true
451451 else (ca == n))
452452 then throw(("Put operation is blocked by admin. Status = " + toString(ca)))
453453 else dr
454454 }
455455
456456
457457 func ds (dt) = {
458458 let du = invoke(aJ, "emit", [dt], nil)
459459 if ((du == du))
460460 then {
461461 let dv = {
462462 let dw = du
463463 if ($isInstanceOf(dw, "Address"))
464464 then {
465465 let dx = dw
466466 invoke(dx, "emit", [dt], nil)
467467 }
468468 else unit
469469 }
470470 if ((dv == dv))
471471 then dt
472472 else throw("Strict value is not equal to itself.")
473473 }
474474 else throw("Strict value is not equal to itself.")
475475 }
476476
477477
478478 func dy (dt) = {
479479 let dz = fraction(dt, ae, b)
480480 $Tuple2((dt - dz), dz)
481481 }
482482
483483
484484 func dA (dB,dC,X,Y) = {
485485 let dD = (Y == unit)
486486 let dE = bw(aS(ba))
487487 let dF = bw(aS(bb))
488488 let dG = if ((dC == ba))
489489 then true
490490 else if ((dC == bb))
491491 then false
492492 else aG("invalid asset")
493493 let dH = if (dD)
494494 then $Tuple2(dE, dF)
495495 else if (dG)
496496 then $Tuple2((dE - dB), dF)
497497 else $Tuple2(dE, (dF - dB))
498498 let dI = dH._1
499499 let dJ = dH._2
500500 let dK = if (dG)
501501 then $Tuple2(dB, 0)
502502 else $Tuple2(0, dB)
503503 let dL = dK._1
504504 let dM = dK._2
505505 let dN = dy(dL)._1
506506 let dO = dy(dM)._1
507507 let dP = dy(dB)
508508 let dQ = dP._1
509509 let dz = dP._2
510510 let dR = (dI + dN)
511511 let dS = (dJ + dO)
512512 let dT = by(D(dS, bd), D(dR, bc))
513513 let dU = G(dT, b)
514514 let dV = if (dG)
515515 then dI
516516 else dJ
517517 let dW = toBigInt(dV)
518518 let dX = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
519519 let dY = if ((dX > f))
520520 then true
521521 else aG("initial deposit requires all coins")
522522 if ((dY == dY))
523523 then {
524524 let dZ = toBigInt(dQ)
525525 let ea = max([0, toInt(((dX * (sqrtBigInt((d + ((dZ * d) / dW)), 18, 18, DOWN) - d)) / d))])
526526 let cV = if (dD)
527527 then nil
528528 else [IntegerEntry(S(), dU), IntegerEntry(T(height, lastBlock.timestamp), dU), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bh(dL, dM, ea, dU, 0, 0, height, lastBlock.timestamp, 0, 0))]
529529 let eb = by(D(dJ, bd), D(dI, bc))
530530 let ec = G(eb, b)
531531 let ed = {
532532 let ee = if (dG)
533533 then $Tuple2(dL, dI)
534534 else $Tuple2(dM, dJ)
535535 let dt = ee._1
536536 let ef = ee._2
537537 let eg = toInt(fraction(dX, toBigInt((dt / 2)), toBigInt(ef)))
538538 fraction((ea - eg), b, eg)
539539 }
540- $Tuple4(ea, cV, dz, ed)
540+ $Tuple5(ea, cV, dz, ed, dG)
541541 }
542542 else throw("Strict value is not equal to itself.")
543543 }
544544
545545
546546 func eh (ei,dQ,dC,X,Y) = {
547547 let dD = (Y == unit)
548548 let ej = [if ((dC == aZ))
549549 then true
550550 else aG("invalid lp asset")]
551551 if ((ej == ej))
552552 then {
553553 let ek = if ((ei == ba))
554554 then true
555555 else if ((ei == bb))
556556 then false
557557 else aG("invalid asset")
558558 let el = if (ek)
559559 then toBigInt(bw(aS(ba)))
560560 else toBigInt(bw(aS(bb)))
561561 let em = bw(aS(ba))
562562 let en = bw(aS(bb))
563563 let eo = if (ek)
564564 then em
565565 else en
566566 let ep = toBigInt(eo)
567567 let dX = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
568568 let eq = toBigInt(dQ)
569569 let er = max([0, toInt(((el * (d - pow((d - ((eq * d) / dX)), 18, h, 0, 18, DOWN))) / d))])
570570 let es = dy(er)
571571 let et = es._1
572572 let dz = es._2
573573 let eu = if (ek)
574574 then $Tuple4(et, 0, (em - er), en)
575575 else $Tuple4(0, et, em, (en - er))
576576 let ev = eu._1
577577 let ew = eu._2
578578 let ex = eu._3
579579 let ey = eu._4
580580 let dT = by(D(ey, bd), D(ex, bc))
581581 let dU = G(dT, b)
582582 let cV = if (dD)
583583 then nil
584584 else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bs(ev, ew, dQ, dU, height, lastBlock.timestamp)), IntegerEntry(S(), dU), IntegerEntry(T(height, lastBlock.timestamp), dU)]
585585 let eb = by(D(en, bd), D(em, bc))
586586 let ec = G(eb, b)
587587 let ed = {
588588 let ez = (toInt(fraction(el, eq, dX)) * 2)
589589 fraction((et - ez), b, ez)
590590 }
591- $Tuple4(et, cV, dz, ed)
591+ $Tuple5(et, cV, dz, ed, ek)
592592 }
593593 else throw("Strict value is not equal to itself.")
594594 }
595595
596596
597-func eA () = {
597+func eA (eB,eC,cb) = {
598+ let eD = fraction(pow((eB * eC), 0, toBigInt(5), 1, 0, DOWN), d, cb)
599+ eD
600+ }
601+
602+
603+func eE (eF,eG,eH) = {
604+ let eI = (bw(aS(ba)) + eF)
605+ let eJ = (bw(aS(bb)) + eG)
606+ let eK = (value(assetInfo(aZ)).quantity + eH)
607+ let eD = eA(toBigInt(eI), toBigInt(eJ), toBigInt(eK))
608+ let eL = [IntegerEntry(ag, height), StringEntry(af, toString(eD))]
609+ $Tuple2(eL, eD)
610+ }
611+
612+
613+func eM () = {
598614 let dw = getString(Q())
599615 if ($isInstanceOf(dw, "String"))
600616 then {
601- let eB = dw
602- fromBase58String(eB)
617+ let eN = dw
618+ fromBase58String(eN)
603619 }
604620 else if ($isInstanceOf(dw, "Unit"))
605621 then unit
606622 else throw("Match error")
607623 }
608624
609625
610-func eC () = {
626+func eO () = {
611627 let dw = getString(R())
612628 if ($isInstanceOf(dw, "String"))
613629 then {
614- let eB = dw
615- fromBase58String(eB)
630+ let eN = dw
631+ fromBase58String(eN)
616632 }
617633 else if ($isInstanceOf(dw, "Unit"))
618634 then unit
619635 else throw("Match error")
620636 }
621637
622638
623-func eD (dl) = {
624- let dw = eA()
639+func eP (dl) = {
640+ let dw = eM()
625641 if ($isInstanceOf(dw, "ByteVector"))
626642 then {
627- let eE = dw
628- (dl.callerPublicKey == eE)
643+ let eQ = dw
644+ (dl.callerPublicKey == eQ)
629645 }
630646 else if ($isInstanceOf(dw, "Unit"))
631647 then (dl.caller == this)
632648 else throw("Match error")
633649 }
634650
635651
636-func eF (dl) = {
637- let eG = throw("Permission denied")
638- let dw = eA()
652+func eR (dl) = {
653+ let eS = throw("Permission denied")
654+ let dw = eM()
639655 if ($isInstanceOf(dw, "ByteVector"))
640656 then {
641- let eE = dw
642- if ((dl.callerPublicKey == eE))
657+ let eQ = dw
658+ if ((dl.callerPublicKey == eQ))
643659 then true
644- else eG
660+ else eS
645661 }
646662 else if ($isInstanceOf(dw, "Unit"))
647663 then if ((dl.caller == this))
648664 then true
649- else eG
665+ else eS
650666 else throw("Match error")
651667 }
652668
653669
654670 @Callable(dl)
655-func setManager (eH) = {
656- let eI = eF(dl)
657- if ((eI == eI))
671+func setManager (eT) = {
672+ let eU = eR(dl)
673+ if ((eU == eU))
658674 then {
659- let eJ = fromBase58String(eH)
660- if ((eJ == eJ))
661- then [StringEntry(R(), eH)]
675+ let eV = fromBase58String(eT)
676+ if ((eV == eV))
677+ then [StringEntry(R(), eT)]
662678 else throw("Strict value is not equal to itself.")
663679 }
664680 else throw("Strict value is not equal to itself.")
665681 }
666682
667683
668684
669685 @Callable(dl)
670686 func confirmManager () = {
671- let eK = eC()
672- let eL = if (isDefined(eK))
687+ let eW = eO()
688+ let eX = if (isDefined(eW))
673689 then true
674690 else throw("No pending manager")
675- if ((eL == eL))
691+ if ((eX == eX))
676692 then {
677- let eM = if ((dl.callerPublicKey == value(eK)))
693+ let eY = if ((dl.callerPublicKey == value(eW)))
678694 then true
679695 else throw("You are not pending manager")
680- if ((eM == eM))
681- then [StringEntry(Q(), toBase58String(value(eK))), DeleteEntry(R())]
696+ if ((eY == eY))
697+ then [StringEntry(Q(), toBase58String(value(eW))), DeleteEntry(R())]
682698 else throw("Strict value is not equal to itself.")
683699 }
684700 else throw("Strict value is not equal to itself.")
685701 }
686702
687703
688704
689705 @Callable(dl)
690-func put (cq,eN) = if ((0 > cq))
706+func put (cq,eZ) = if ((0 > cq))
691707 then throw("Invalid slippageTolerance passed")
692708 else {
693709 let dr = do(dl, cq, true)
694710 let cS = dr._2
695711 let bX = dr._7
696712 let co = dr._9
697713 let cT = dr._10
698714 let cU = dr._11
699- let eO = dr._12
700- let eP = dr._13
715+ let fa = dr._12
716+ let fb = dr._13
701717 let du = invoke(aJ, "emit", [cS], nil)
702718 if ((du == du))
703719 then {
704720 let dv = {
705721 let dw = du
706722 if ($isInstanceOf(dw, "Address"))
707723 then {
708724 let dx = dw
709725 invoke(dx, "emit", [cS], nil)
710726 }
711727 else unit
712728 }
713729 if ((dv == dv))
714730 then {
715- let eQ = if ((cT > 0))
716- then invoke(bg, "put", nil, [AttachedPayment(eO, cT)])
731+ let fc = if ((cT > 0))
732+ then invoke(bg, "put", nil, [AttachedPayment(fa, cT)])
717733 else nil
718- if ((eQ == eQ))
734+ if ((fc == fc))
719735 then {
720- let eR = if ((cU > 0))
721- then invoke(bg, "put", nil, [AttachedPayment(eP, cU)])
736+ let fd = if ((cU > 0))
737+ then invoke(bg, "put", nil, [AttachedPayment(fb, cU)])
722738 else nil
723- if ((eR == eR))
739+ if ((fd == fd))
724740 then {
725- let eS = if (eN)
741+ let fe = if (eZ)
726742 then {
727- let eT = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
728- if ((eT == eT))
743+ let ff = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
744+ if ((ff == ff))
729745 then nil
730746 else throw("Strict value is not equal to itself.")
731747 }
732748 else [ScriptTransfer(dl.caller, cS, bX)]
733- (co ++ eS)
749+ let fg = eE(0, 0, 0)
750+ let fh = fg._1
751+ let eD = fg._2
752+ ((co ++ fe) ++ fh)
734753 }
735754 else throw("Strict value is not equal to itself.")
736755 }
737756 else throw("Strict value is not equal to itself.")
738757 }
739758 else throw("Strict value is not equal to itself.")
740759 }
741760 else throw("Strict value is not equal to itself.")
742761 }
743762
744763
745764
746765 @Callable(dl)
747-func putForFree (eU) = if ((0 > eU))
766+func putForFree (fi) = if ((0 > fi))
748767 then throw("Invalid value passed")
749768 else {
750- let dr = do(dl, eU, false)
751- dr._9
769+ let dr = do(dl, fi, false)
770+ let co = dr._9
771+ let fj = eE(0, 0, 0)
772+ let fh = fj._1
773+ let eD = fj._2
774+ (co ++ fh)
752775 }
753776
754777
755778
756779 @Callable(dl)
757-func putOneTkn (eV,eW) = {
758- let eX = {
759- let eY = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
760- if ($isInstanceOf(eY, "Boolean"))
761- then eY
762- else throw(($getType(eY) + " couldn't be cast to Boolean"))
780+func putOneTkn (fk,fl) = {
781+ let fm = {
782+ let fn = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
783+ if ($isInstanceOf(fn, "Boolean"))
784+ then fn
785+ else throw(($getType(fn) + " couldn't be cast to Boolean"))
763786 }
764- let eZ = if (if (if (aL())
787+ let fo = if (if (if (aL())
765788 then true
766789 else (aY == l))
767790 then true
768791 else (aY == n))
769792 then true
770- else eX
771- let ej = [if (if (!(eZ))
793+ else fm
794+ let ej = [if (if (!(fo))
772795 then true
773- else eD(dl))
796+ else eP(dl))
774797 then true
775798 else aG("put operation is blocked by admin"), if ((size(dl.payments) == 1))
776799 then true
777800 else aG("exactly 1 payment are expected")]
778801 if ((ej == ej))
779802 then {
780- let fa = dl.payments[0]
781- let dC = fa.assetId
782- let dB = fa.amount
803+ let fp = dl.payments[0]
804+ let dC = fp.assetId
805+ let dB = fp.amount
783806 let X = dl.caller
784807 let Y = dl.transactionId
785- let fb = dA(dB, dC, X, Y)
786- let fc = fb._1
787- let cV = fb._2
788- let dz = fb._3
789- let fd = fb._4
790- let fe = if (if ((eV > 0))
791- then (eV > fc)
808+ let fq = dA(dB, dC, X, Y)
809+ let fr = fq._1
810+ let cV = fq._2
811+ let dz = fq._3
812+ let fs = fq._4
813+ let dG = fq._5
814+ let ft = if (if ((fk > 0))
815+ then (fk > fr)
792816 else false)
793- then aG(makeString(["amount to receive is less than ", toString(eV)], ""))
794- else fc
795- let du = ds(fe)
817+ then aG(makeString(["amount to receive is less than ", toString(fk)], ""))
818+ else fr
819+ let du = ds(ft)
796820 if ((du == du))
797821 then {
798- let eS = if (eW)
822+ let fe = if (fl)
799823 then {
800- let ff = invoke(bf, "stake", nil, [AttachedPayment(aZ, fe)])
801- if ((ff == ff))
824+ let fu = invoke(bf, "stake", nil, [AttachedPayment(aZ, ft)])
825+ if ((fu == fu))
802826 then nil
803827 else throw("Strict value is not equal to itself.")
804828 }
805- else [ScriptTransfer(dl.caller, fe, aZ)]
806- let fg = if ((dz > 0))
829+ else [ScriptTransfer(dl.caller, ft, aZ)]
830+ let fv = if ((dz > 0))
807831 then [ScriptTransfer(aK, dz, dC)]
808832 else nil
809- $Tuple2(((cV ++ eS) ++ fg), fe)
833+ let fw = if ((this == aK))
834+ then $Tuple2(0, 0)
835+ else if (dG)
836+ then $Tuple2(-(dz), 0)
837+ else $Tuple2(0, -(dz))
838+ let eF = fw._1
839+ let eG = fw._2
840+ let fx = eE(eF, eG, 0)
841+ let fh = fx._1
842+ let eD = fx._2
843+ $Tuple2((((cV ++ fe) ++ fv) ++ fh), ft)
810844 }
811845 else throw("Strict value is not equal to itself.")
812846 }
813847 else throw("Strict value is not equal to itself.")
814848 }
815849
816850
817851
818852 @Callable(dl)
819853 func putOneTknREADONLY (dC,dB) = {
820- let fh = dA(dB, aQ(dC), unit, unit)
821- let fc = fh._1
822- let cV = fh._2
823- let dz = fh._3
824- let fd = fh._4
825- $Tuple2(nil, $Tuple3(fc, dz, fd))
854+ let fy = dA(dB, aQ(dC), unit, unit)
855+ let fr = fy._1
856+ let cV = fy._2
857+ let dz = fy._3
858+ let fs = fy._4
859+ let dG = fy._5
860+ $Tuple2(nil, $Tuple3(fr, dz, fs))
826861 }
827862
828863
829864
830865 @Callable(dl)
831-func getOneTkn (fi,eV) = {
832- let eX = {
833- let eY = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
834- if ($isInstanceOf(eY, "Boolean"))
835- then eY
836- else throw(($getType(eY) + " couldn't be cast to Boolean"))
866+func getOneTkn (fz,fk) = {
867+ let fm = {
868+ let fn = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
869+ if ($isInstanceOf(fn, "Boolean"))
870+ then fn
871+ else throw(($getType(fn) + " couldn't be cast to Boolean"))
837872 }
838- let fj = if (if (aL())
873+ let fA = if (if (aL())
839874 then true
840875 else (aY == n))
841876 then true
842- else eX
843- let ej = [if (if (!(fj))
877+ else fm
878+ let ej = [if (if (!(fA))
844879 then true
845- else eD(dl))
880+ else eP(dl))
846881 then true
847882 else aG("get operation is blocked by admin"), if ((size(dl.payments) == 1))
848883 then true
849884 else aG("exactly 1 payment are expected")]
850885 if ((ej == ej))
851886 then {
852- let ei = aQ(fi)
853- let fa = dl.payments[0]
854- let dC = fa.assetId
855- let dQ = fa.amount
887+ let ei = aQ(fz)
888+ let fp = dl.payments[0]
889+ let dC = fp.assetId
890+ let dQ = fp.amount
856891 let X = dl.caller
857892 let Y = dl.transactionId
858- let fk = eh(ei, dQ, dC, X, Y)
859- let fl = fk._1
860- let cV = fk._2
861- let dz = fk._3
862- let fd = fk._4
863- let dt = if (if ((eV > 0))
864- then (eV > fl)
893+ let fB = eh(ei, dQ, dC, X, Y)
894+ let fC = fB._1
895+ let cV = fB._2
896+ let dz = fB._3
897+ let fs = fB._4
898+ let ek = fB._5
899+ let dt = if (if ((fk > 0))
900+ then (fk > fC)
865901 else false)
866- then aG(makeString(["amount to receive is less than ", toString(eV)], ""))
867- else fl
868- let fm = invoke(aJ, "burn", [dQ], [AttachedPayment(dC, dQ)])
869- if ((fm == fm))
902+ then aG(makeString(["amount to receive is less than ", toString(fk)], ""))
903+ else fC
904+ let fD = invoke(aJ, "burn", [dQ], [AttachedPayment(dC, dQ)])
905+ if ((fD == fD))
870906 then {
871- let fn = [ScriptTransfer(X, dt, ei)]
872- let fg = if ((dz > 0))
907+ let fE = [ScriptTransfer(X, dt, ei)]
908+ let fv = if ((dz > 0))
873909 then [ScriptTransfer(aK, dz, ei)]
874910 else nil
875- $Tuple2(((cV ++ fn) ++ fg), dt)
911+ let fF = {
912+ let fG = if ((this == aK))
913+ then 0
914+ else dz
915+ if (ek)
916+ then $Tuple2(-((dt + fG)), 0)
917+ else $Tuple2(0, -((dt + fG)))
918+ }
919+ let eF = fF._1
920+ let eG = fF._2
921+ let fH = eE(eF, eG, 0)
922+ let fh = fH._1
923+ let eD = fH._2
924+ $Tuple2((((cV ++ fE) ++ fv) ++ fh), dt)
876925 }
877926 else throw("Strict value is not equal to itself.")
878927 }
879928 else throw("Strict value is not equal to itself.")
880929 }
881930
882931
883932
884933 @Callable(dl)
885934 func getOneTknREADONLY (ei,dQ) = {
886- let fo = eh(aQ(ei), dQ, aZ, unit, unit)
887- let fl = fo._1
888- let cV = fo._2
889- let dz = fo._3
890- let fd = fo._4
891- $Tuple2(nil, $Tuple3(fl, dz, fd))
935+ let fI = eh(aQ(ei), dQ, aZ, unit, unit)
936+ let fC = fI._1
937+ let cV = fI._2
938+ let dz = fI._3
939+ let fs = fI._4
940+ let ek = fI._5
941+ $Tuple2(nil, $Tuple3(fC, dz, fs))
892942 }
893943
894944
895945
896946 @Callable(dl)
897-func unstakeAndGetOneTkn (fp,fi,eV) = {
898- let eX = {
899- let eY = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
900- if ($isInstanceOf(eY, "Boolean"))
901- then eY
902- else throw(($getType(eY) + " couldn't be cast to Boolean"))
947+func unstakeAndGetOneTkn (fJ,fz,fk) = {
948+ let fm = {
949+ let fn = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
950+ if ($isInstanceOf(fn, "Boolean"))
951+ then fn
952+ else throw(($getType(fn) + " couldn't be cast to Boolean"))
903953 }
904- let fj = if (if (aL())
954+ let fA = if (if (aL())
905955 then true
906956 else (aY == n))
907957 then true
908- else eX
909- let ej = [if (if (!(fj))
958+ else fm
959+ let ej = [if (if (!(fA))
910960 then true
911- else eD(dl))
961+ else eP(dl))
912962 then true
913963 else aG("get operation is blocked by admin"), if ((size(dl.payments) == 0))
914964 then true
915965 else aG("no payments are expected")]
916966 if ((ej == ej))
917967 then {
918- let ei = aQ(fi)
968+ let ei = aQ(fz)
919969 let X = dl.caller
920970 let Y = dl.transactionId
921- let fq = invoke(bf, "unstake", [toBase58String(aZ), fp], nil)
922- if ((fq == fq))
971+ let fK = invoke(bf, "unstake", [toBase58String(aZ), fJ], nil)
972+ if ((fK == fK))
923973 then {
924- let fr = eh(ei, fp, aZ, X, Y)
925- let fl = fr._1
926- let cV = fr._2
927- let dz = fr._3
928- let fd = fr._4
929- let dt = if (if ((eV > 0))
930- then (eV > fl)
974+ let fL = eh(ei, fJ, aZ, X, Y)
975+ let fC = fL._1
976+ let cV = fL._2
977+ let dz = fL._3
978+ let fs = fL._4
979+ let ek = fL._5
980+ let dt = if (if ((fk > 0))
981+ then (fk > fC)
931982 else false)
932- then aG(makeString(["amount to receive is less than ", toString(eV)], ""))
933- else fl
934- let fm = invoke(aJ, "burn", [fp], [AttachedPayment(aZ, fp)])
935- if ((fm == fm))
983+ then aG(makeString(["amount to receive is less than ", toString(fk)], ""))
984+ else fC
985+ let fD = invoke(aJ, "burn", [fJ], [AttachedPayment(aZ, fJ)])
986+ if ((fD == fD))
936987 then {
937- let fn = [ScriptTransfer(dl.caller, dt, ei)]
938- let fg = if ((dz > 0))
988+ let fE = [ScriptTransfer(dl.caller, dt, ei)]
989+ let fv = if ((dz > 0))
939990 then [ScriptTransfer(aK, dz, ei)]
940991 else nil
941- $Tuple2(((cV ++ fn) ++ fg), dt)
992+ let fM = {
993+ let fG = if ((this == aK))
994+ then 0
995+ else dz
996+ if (ek)
997+ then $Tuple2(-((dt + fG)), 0)
998+ else $Tuple2(0, -((dt + fG)))
999+ }
1000+ let eF = fM._1
1001+ let eG = fM._2
1002+ let fN = eE(eF, eG, 0)
1003+ let fh = fN._1
1004+ let eD = fN._2
1005+ $Tuple2((((cV ++ fE) ++ fv) ++ fh), dt)
9421006 }
9431007 else throw("Strict value is not equal to itself.")
9441008 }
9451009 else throw("Strict value is not equal to itself.")
9461010 }
9471011 else throw("Strict value is not equal to itself.")
9481012 }
9491013
9501014
9511015
9521016 @Callable(dl)
9531017 func get () = {
9541018 let cG = dk(dl)
955- let fs = cG._1
1019+ let fO = cG._1
9561020 let cn = cG._2
9571021 let dn = cG._3
9581022 let bV = cG._4
9591023 let co = cG._5
960- let ft = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
961- if ((ft == ft))
962- then co
1024+ let fP = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
1025+ if ((fP == fP))
1026+ then {
1027+ let fQ = eE(-(fO), -(cn), 0)
1028+ let fh = fQ._1
1029+ let eD = fQ._2
1030+ (co ++ fh)
1031+ }
9631032 else throw("Strict value is not equal to itself.")
9641033 }
9651034
9661035
9671036
9681037 @Callable(dl)
969-func getNoLess (fu,fv) = {
1038+func getNoLess (fR,fS) = {
9701039 let cG = dk(dl)
9711040 let cm = cG._1
9721041 let cn = cG._2
9731042 let dn = cG._3
9741043 let bV = cG._4
9751044 let co = cG._5
976- if ((fu > cm))
977- then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fu)))
978- else if ((fv > cn))
979- then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fv)))
1045+ if ((fR > cm))
1046+ then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fR)))
1047+ else if ((fS > cn))
1048+ then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fS)))
9801049 else {
981- let ft = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
982- if ((ft == ft))
983- then co
1050+ let fP = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
1051+ if ((fP == fP))
1052+ then {
1053+ let fT = eE(-(cm), -(cn), 0)
1054+ let fh = fT._1
1055+ let eD = fT._2
1056+ (co ++ fh)
1057+ }
9841058 else throw("Strict value is not equal to itself.")
9851059 }
9861060 }
9871061
9881062
9891063
9901064 @Callable(dl)
9911065 func unstakeAndGet (dt) = {
992- let fw = if ((size(dl.payments) != 0))
1066+ let fU = if ((size(dl.payments) != 0))
9931067 then throw("No payments are expected")
9941068 else true
995- if ((fw == fw))
1069+ if ((fU == fU))
9961070 then {
9971071 let bK = aN()
9981072 let bX = fromBase58String(bK[q])
999- let fq = invoke(bf, "unstake", [toBase58String(bX), dt], nil)
1000- if ((fq == fq))
1073+ let fK = invoke(bf, "unstake", [toBase58String(bX), dt], nil)
1074+ if ((fK == fK))
10011075 then {
10021076 let cG = bT(toBase58String(dl.transactionId), toBase58String(bX), dt, dl.caller)
1077+ let cm = cG._1
1078+ let cn = cG._2
10031079 let ca = parseIntValue(cG._9)
10041080 let co = cG._10
1005- let fx = if (if (aL())
1081+ let fV = if (if (aL())
10061082 then true
10071083 else (ca == n))
10081084 then throw(("Get operation is blocked by admin. Status = " + toString(ca)))
10091085 else true
1010- if ((fx == fx))
1086+ if ((fV == fV))
10111087 then {
1012- let ft = invoke(aJ, "burn", [dt], [AttachedPayment(bX, dt)])
1013- if ((ft == ft))
1014- then co
1088+ let fP = invoke(aJ, "burn", [dt], [AttachedPayment(bX, dt)])
1089+ if ((fP == fP))
1090+ then {
1091+ let fW = eE(-(cm), -(cn), 0)
1092+ let fh = fW._1
1093+ let eD = fW._2
1094+ (co ++ fh)
1095+ }
10151096 else throw("Strict value is not equal to itself.")
10161097 }
10171098 else throw("Strict value is not equal to itself.")
10181099 }
10191100 else throw("Strict value is not equal to itself.")
10201101 }
10211102 else throw("Strict value is not equal to itself.")
10221103 }
10231104
10241105
10251106
10261107 @Callable(dl)
1027-func unstakeAndGetNoLess (fp,fy,fv) = {
1028- let fj = if (aL())
1108+func unstakeAndGetNoLess (fJ,fX,fS) = {
1109+ let fA = if (aL())
10291110 then true
10301111 else (aY == n)
1031- let ej = [if (!(fj))
1112+ let ej = [if (!(fA))
10321113 then true
10331114 else throw("get operation is blocked by admin"), if ((size(dl.payments) == 0))
10341115 then true
10351116 else throw("no payments are expected")]
10361117 if ((ej == ej))
10371118 then {
1038- let fq = invoke(bf, "unstake", [toBase58String(aZ), fp], nil)
1039- if ((fq == fq))
1119+ let fK = invoke(bf, "unstake", [toBase58String(aZ), fJ], nil)
1120+ if ((fK == fK))
10401121 then {
1041- let cG = bT(toBase58String(dl.transactionId), toBase58String(aZ), fp, dl.caller)
1122+ let cG = bT(toBase58String(dl.transactionId), toBase58String(aZ), fJ, dl.caller)
10421123 let cm = cG._1
10431124 let cn = cG._2
10441125 let co = cG._10
1045- let fz = [if ((cm >= fy))
1126+ let fY = [if ((cm >= fX))
10461127 then true
1047- else throw(makeString(["amount asset amount to receive is less than ", toString(fy)], "")), if ((cn >= fv))
1128+ else throw(makeString(["amount asset amount to receive is less than ", toString(fX)], "")), if ((cn >= fS))
10481129 then true
1049- else throw(makeString(["price asset amount to receive is less than ", toString(fv)], ""))]
1050- if ((fz == fz))
1130+ else throw(makeString(["price asset amount to receive is less than ", toString(fS)], ""))]
1131+ if ((fY == fY))
10511132 then {
1052- let ft = invoke(aJ, "burn", [fp], [AttachedPayment(aZ, fp)])
1053- if ((ft == ft))
1054- then co
1133+ let fP = invoke(aJ, "burn", [fJ], [AttachedPayment(aZ, fJ)])
1134+ if ((fP == fP))
1135+ then {
1136+ let fZ = eE(-(cm), -(cn), 0)
1137+ let fh = fZ._1
1138+ let eD = fZ._2
1139+ (co ++ fh)
1140+ }
10551141 else throw("Strict value is not equal to itself.")
10561142 }
10571143 else throw("Strict value is not equal to itself.")
10581144 }
10591145 else throw("Strict value is not equal to itself.")
10601146 }
10611147 else throw("Strict value is not equal to itself.")
10621148 }
10631149
10641150
10651151
10661152 @Callable(dl)
1067-func activate (fA,fB) = if ((toString(dl.caller) != toString(aJ)))
1153+func activate (ga,gb) = if ((toString(dl.caller) != toString(aJ)))
10681154 then throw("permissions denied")
1069- else $Tuple2([StringEntry(aa(), fA), StringEntry(ab(), fB)], "success")
1155+ else $Tuple2([StringEntry(aa(), ga), StringEntry(ab(), gb)], "success")
10701156
10711157
10721158
10731159 @Callable(dl)
10741160 func refreshKLp () = {
1075- let fC = valueOrElse(getInteger(ag), 0)
1076- let fD = if (((height - fC) >= aj))
1161+ let gc = valueOrElse(getInteger(ag), 0)
1162+ let gd = if (((height - gc) >= aj))
10771163 then unit
10781164 else aG(makeString([toString(aj), " blocks have not passed since the previous call"], ""))
1079- if ((fD == fD))
1165+ if ((gd == gd))
10801166 then {
1081- let fE = toBigInt(bw(aS(ba)))
1082- let fF = toBigInt(bw(aS(bb)))
1083- let fG = toBigInt(value(assetInfo(aZ)).quantity)
1084- let fH = fraction(pow((fE * fF), 0, toBigInt(5), 1, 0, DOWN), d, fG)
1085- let fI = [IntegerEntry(ag, height), StringEntry(af, toString(fH))]
1086- $Tuple2(fI, toString(fH))
1167+ let ge = eE(0, 0, 0)
1168+ let eL = ge._1
1169+ let eD = ge._2
1170+ $Tuple2(eL, toString(eD))
10871171 }
10881172 else throw("Strict value is not equal to itself.")
10891173 }
10901174
10911175
10921176
10931177 @Callable(dl)
10941178 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aN())
10951179
10961180
10971181
10981182 @Callable(dl)
10991183 func getAccBalanceWrapperREADONLY (bx) = $Tuple2(nil, bw(bx))
11001184
11011185
11021186
11031187 @Callable(dl)
11041188 func calcPricesWrapperREADONLY (bE,bF,bJ) = {
11051189 let bS = bI(bE, bF, bJ)
11061190 $Tuple2(nil, [toString(bS[0]), toString(bS[1]), toString(bS[2])])
11071191 }
11081192
11091193
11101194
11111195 @Callable(dl)
11121196 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
11131197
11141198
11151199
11161200 @Callable(dl)
11171201 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
11181202
11191203
11201204
11211205 @Callable(dl)
11221206 func calcPriceBigIntWrapperREADONLY (bz,bA) = $Tuple2(nil, toString(by(parseBigIntValue(bz), parseBigIntValue(bA))))
11231207
11241208
11251209
11261210 @Callable(dl)
11271211 func estimatePutOperationWrapperREADONLY (bU,cq,cr,cs,ct,cu,X,cv,cw) = $Tuple2(nil, cp(bU, cq, cr, cs, ct, cu, X, cv, cw))
11281212
11291213
11301214
11311215 @Callable(dl)
11321216 func estimateGetOperationWrapperREADONLY (bU,bV,bW,X) = {
11331217 let cG = bT(bU, bV, bW, addressFromStringValue(X))
11341218 $Tuple2(nil, $Tuple10(cG._1, cG._2, cG._3, cG._4, cG._5, cG._6, cG._7, toString(cG._8), cG._9, cG._10))
11351219 }
11361220
11371221
11381222
11391223 @Callable(dl)
11401224 func statsREADONLY () = {
11411225 let bK = aN()
11421226 let bX = fromBase58String(bK[q])
11431227 let cY = bK[r]
11441228 let cZ = bK[s]
11451229 let cz = bK[v]
11461230 let cA = bK[w]
11471231 let bL = parseIntValue(bK[t])
11481232 let bM = parseIntValue(bK[u])
1149- let fJ = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1233+ let gf = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
11501234 let da = bw(cY)
11511235 let db = bw(cZ)
1152- let fK = if ((fJ == 0))
1236+ let gg = if ((gf == 0))
11531237 then [e, e, e]
1154- else bI(da, db, fJ)
1238+ else bI(da, db, gf)
11551239 let ch = 0
1156- let fL = G(fK[1], b)
1157- let fM = G(fK[2], b)
1158- let fN = value(getInteger(aJ, au(toString(this))))
1159- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(da), toString(db), toString(fJ), toString(ch), toString(fL), toString(fM), toString(fN)], j))
1240+ let gh = G(gg[1], b)
1241+ let gi = G(gg[2], b)
1242+ let gj = value(getInteger(aJ, au(toString(this))))
1243+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(da), toString(db), toString(gf), toString(ch), toString(gh), toString(gi), toString(gj)], j))
11601244 }
11611245
11621246
11631247
11641248 @Callable(dl)
11651249 func evaluatePutByAmountAssetREADONLY (cr) = {
11661250 let bK = aN()
11671251 let bX = fromBase58String(bK[q])
11681252 let cx = bK[r]
11691253 let bY = fromBase58String(cx)
11701254 let cy = bK[s]
11711255 let bZ = fromBase58String(cy)
11721256 let bL = parseIntValue(bK[t])
11731257 let bM = parseIntValue(bK[u])
11741258 let ca = bK[p]
1175- let fJ = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1259+ let gf = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
11761260 let da = bw(cx)
11771261 let db = bw(cy)
11781262 let bG = D(da, bL)
11791263 let bH = D(db, bM)
1180- let cg = if ((fJ == 0))
1264+ let cg = if ((gf == 0))
11811265 then e
11821266 else by(bH, bG)
11831267 let cD = D(cr, bL)
11841268 let cE = fraction(cD, cg, d)
11851269 let ct = G(cE, bM)
11861270 let dr = cp("", 500000, cr, bY, ct, bZ, "", true, false)
11871271 let cO = dr._1
1188- let fO = dr._3
1272+ let gk = dr._3
11891273 let cc = dr._4
11901274 let ce = dr._5
11911275 let cb = dr._6
11921276 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cO), toString(G(cg, b)), toString(cc), toString(ce), toString(cb), ca, toString(cr), toString(ct)], j))
11931277 }
11941278
11951279
11961280
11971281 @Callable(dl)
11981282 func evaluatePutByPriceAssetREADONLY (ct) = {
11991283 let bK = aN()
12001284 let bX = fromBase58String(bK[q])
12011285 let cx = bK[r]
12021286 let bY = fromBase58String(cx)
12031287 let cy = bK[s]
12041288 let bZ = fromBase58String(cy)
12051289 let bL = parseIntValue(bK[t])
12061290 let bM = parseIntValue(bK[u])
12071291 let ca = bK[p]
1208- let fJ = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1209- let fP = bw(cx)
1210- let fQ = bw(cy)
1211- let fR = D(fP, bL)
1212- let fS = D(fQ, bM)
1213- let cg = if ((fJ == 0))
1292+ let gf = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1293+ let gl = bw(cx)
1294+ let gm = bw(cy)
1295+ let gn = D(gl, bL)
1296+ let go = D(gm, bM)
1297+ let cg = if ((gf == 0))
12141298 then e
1215- else by(fS, fR)
1299+ else by(go, gn)
12161300 let cE = D(ct, bM)
12171301 let cD = fraction(cE, d, cg)
12181302 let cr = G(cD, bL)
12191303 let dr = cp("", 500000, cr, bY, ct, bZ, "", true, false)
12201304 let cO = dr._1
1221- let fO = dr._3
1305+ let gk = dr._3
12221306 let cc = dr._4
12231307 let ce = dr._5
12241308 let cb = dr._6
12251309 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cO), toString(G(cg, b)), toString(cc), toString(ce), toString(cb), ca, toString(cr), toString(ct)], j))
12261310 }
12271311
12281312
12291313
12301314 @Callable(dl)
1231-func evaluateGetREADONLY (fT,fU) = {
1232- let cG = bT("", fT, fU, this)
1315+func evaluateGetREADONLY (gp,gq) = {
1316+ let cG = bT("", gp, gq, this)
12331317 let cm = cG._1
12341318 let cn = cG._2
12351319 let cc = cG._5
12361320 let ce = cG._6
12371321 let cb = cG._7
12381322 let ch = cG._8
12391323 let ca = parseIntValue(cG._9)
12401324 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cm), toString(cn), toString(cc), toString(ce), toString(cb), toString(ch), toString(ca)], j))
12411325 }
12421326
12431327
1244-@Verifier(fV)
1245-func fW () = {
1246- let fX = {
1247- let dw = eA()
1328+@Verifier(gr)
1329+func gs () = {
1330+ let gt = {
1331+ let dw = eM()
12481332 if ($isInstanceOf(dw, "ByteVector"))
12491333 then {
1250- let eE = dw
1251- eE
1334+ let eQ = dw
1335+ eQ
12521336 }
12531337 else if ($isInstanceOf(dw, "Unit"))
1254- then fV.senderPublicKey
1338+ then gr.senderPublicKey
12551339 else throw("Match error")
12561340 }
1257- let dw = fV
1341+ let dw = gr
12581342 if ($isInstanceOf(dw, "Order"))
12591343 then {
12601344 let cX = dw
1261- let fY = aM()
1345+ let gu = aM()
12621346 let az = cW(cX)
12631347 let aA = sigVerify(cX.bodyBytes, cX.proofs[0], cX.senderPublicKey)
1264- let aB = sigVerify(cX.bodyBytes, cX.proofs[1], fY)
1348+ let aB = sigVerify(cX.bodyBytes, cX.proofs[1], gu)
12651349 if (if (if (az)
12661350 then aA
12671351 else false)
12681352 then aB
12691353 else false)
12701354 then true
12711355 else ay(az, aA, aB)
12721356 }
12731357 else if ($isInstanceOf(dw, "SetScriptTransaction"))
12741358 then {
1275- let eB = dw
1276- let fZ = blake2b256(value(eB.script))
1277- let ga = fromBase64String(value(getString(aJ, aw())))
1278- let gb = scriptHash(this)
1279- if (if ((ga == fZ))
1280- then (gb != fZ)
1359+ let eN = dw
1360+ let gv = blake2b256(value(eN.script))
1361+ let gw = fromBase64String(value(getString(aJ, aw())))
1362+ let gx = scriptHash(this)
1363+ if (if ((gw == gv))
1364+ then (gx != gv)
12811365 else false)
12821366 then true
1283- else sigVerify(fV.bodyBytes, fV.proofs[0], fX)
1367+ else sigVerify(gr.bodyBytes, gr.proofs[0], gt)
12841368 }
1285- else sigVerify(fV.bodyBytes, fV.proofs[0], fX)
1369+ else sigVerify(gr.bodyBytes, gr.proofs[0], gt)
12861370 }
12871371

github/deemru/w8io/026f985 
193.42 ms