tx · oby2vaVG9UqXcJR4hPnsXEmeh5Sm6pVr2tmzfqJwKEc

3N4vUDe3oc1YPNwMyQi2h8f2tmGoA7wBZp2:  -0.03600000 Waves

2023.01.19 17:11 [2411912] smart account 3N4vUDe3oc1YPNwMyQi2h8f2tmGoA7wBZp2 > SELF 0.00000000 Waves

{ "type": 13, "id": "oby2vaVG9UqXcJR4hPnsXEmeh5Sm6pVr2tmzfqJwKEc", "fee": 3600000, "feeAssetId": null, "timestamp": 1674137498658, "version": 1, "sender": "3N4vUDe3oc1YPNwMyQi2h8f2tmGoA7wBZp2", "senderPublicKey": "6MuWw1pkme7UgQX2hZh8yTZyoWVkz8A4rmHZ1acrsrVm", "proofs": [ "2cwHx5N2ErpbyPsLWKKsxZKEFR8AZVQPtJmuceS5ixqUm3XoR1o3izw941yF5Sszz8TMyUg2TLEVWDsahqitAzyc" ], "script": "base64:BgLcLQgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiC3RvWDE4QmlnSW50Igdmcm9tWDE4IgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIMZnJvbVgxOFJvdW5kIgVyb3VuZCIHdG9TY2FsZSIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50IgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiCXRpbWVzdGFtcCIDcGF1Igt1c2VyQWRkcmVzcyIEdHhJZCIDZ2F1IgJhYSICcGEiBmtleUZlZSIKZmVlRGVmYXVsdCIDZmVlIgZrZXlLTHAiFWtleUtMcFJlZnJlc2hlZEhlaWdodCISa2V5S0xwUmVmcmVzaERlbGF5IhZrTHBSZWZyZXNoRGVsYXlEZWZhdWx0Ig9rTHBSZWZyZXNoRGVsYXkiEGtleUZhY3RvcnlDb25maWciDWtleU1hdGNoZXJQdWIiKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzIhNwb29sQ29udHJhY3RBZGRyZXNzIg1rZXlQb29sQ29uZmlnIglpQW10QXNzZXQiC2lQcmljZUFzc2V0Ih9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkIgxiYXNlQXNzZXRTdHIiE2tleUFsbFBvb2xzU2h1dGRvd24iDWtleVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIWa2V5QWxsb3dlZExwU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIPdGhyb3dPcmRlckVycm9yIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIg9nZXRTdHJpbmdPckZhaWwiB2FkZHJlc3MiA2tleSIMZ2V0SW50T3JGYWlsIgh0aHJvd0VyciIDbXNnIgZmbXRFcnIiD2ZhY3RvcnlDb250cmFjdCITZmVlQ29sbGVjdG9yQWRkcmVzcyIFaW5GZWUiAUAiBm91dEZlZSIQaXNHbG9iYWxTaHV0ZG93biITZ2V0TWF0Y2hlclB1Yk9yRmFpbCINZ2V0UG9vbENvbmZpZyIIYW10QXNzZXQiCnByaWNlQXNzZXQiDHBhcnNlQXNzZXRJZCIFaW5wdXQiD2Fzc2V0SWRUb1N0cmluZyIPcGFyc2VQb29sQ29uZmlnIgpwb29sQ29uZmlnIhBwb29sQ29uZmlnUGFyc2VkIgskdDA4MzQ0ODUxMCIOY2ZnUG9vbEFkZHJlc3MiDWNmZ1Bvb2xTdGF0dXMiDGNmZ0xwQXNzZXRJZCIQY2ZnQW1vdW50QXNzZXRJZCIPY2ZnUHJpY2VBc3NldElkIhZjZmdBbW91bnRBc3NldERlY2ltYWxzIhVjZmdQcmljZUFzc2V0RGVjaW1hbHMiEGdldEZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIQc2xpcHBhZ2VDb250cmFjdCIRZGF0YVB1dEFjdGlvbkluZm8iDWluQW10QXNzZXRBbXQiD2luUHJpY2VBc3NldEFtdCIIb3V0THBBbXQiBXByaWNlIh1zbGlwcGFnZVRvbGVyYW5jZVBhc3NlZEJ5VXNlciIVc2xpcHBhZ2VUb2xlcmFuY2VSZWFsIgh0eEhlaWdodCILdHhUaW1lc3RhbXAiEnNsaXBhZ2VBbXRBc3NldEFtdCIUc2xpcGFnZVByaWNlQXNzZXRBbXQiEWRhdGFHZXRBY3Rpb25JbmZvIg5vdXRBbXRBc3NldEFtdCIQb3V0UHJpY2VBc3NldEFtdCIHaW5McEFtdCINZ2V0QWNjQmFsYW5jZSIHYXNzZXRJZCIPY2FsY1ByaWNlQmlnSW50IghwckFtdFgxOCIIYW1BbXRYMTgiFGNhbGNQcmljZUJpZ0ludFJvdW5kIhBwcml2YXRlQ2FsY1ByaWNlIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiDmFtdEFzc2V0QW10WDE4IhBwcmljZUFzc2V0QW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIgthbXRBc3NldERjbSINcHJpY2VBc3NldERjbSIIcHJpY2VYMTgiCGxwQW10WDE4IhNscFByaWNlSW5BbUFzc2V0WDE4IhNscFByaWNlSW5QckFzc2V0WDE4Ig9jYWxjdWxhdGVQcmljZXMiBnByaWNlcyIUZXN0aW1hdGVHZXRPcGVyYXRpb24iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiCWxwQXNzZXRJZCIJYW1Bc3NldElkIglwckFzc2V0SWQiCnBvb2xTdGF0dXMiCmxwRW1pc3Npb24iCWFtQmFsYW5jZSIMYW1CYWxhbmNlWDE4IglwckJhbGFuY2UiDHByQmFsYW5jZVgxOCILY3VyUHJpY2VYMTgiCGN1clByaWNlIgtwbXRMcEFtdFgxOCINbHBFbWlzc2lvblgxOCILb3V0QW1BbXRYMTgiC291dFByQW10WDE4IghvdXRBbUFtdCIIb3V0UHJBbXQiBXN0YXRlIhRlc3RpbWF0ZVB1dE9wZXJhdGlvbiIRc2xpcHBhZ2VUb2xlcmFuY2UiDGluQW1Bc3NldEFtdCILaW5BbUFzc2V0SWQiDGluUHJBc3NldEFtdCILaW5QckFzc2V0SWQiCmlzRXZhbHVhdGUiBmVtaXRMcCIMYW1Bc3NldElkU3RyIgxwckFzc2V0SWRTdHIiC2lBbXRBc3NldElkIg1pUHJpY2VBc3NldElkIg5pbkFtQXNzZXRJZFN0ciIOaW5QckFzc2V0SWRTdHIiD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiA3JlcyILc2xpcHBhZ2VYMTgiFHNsaXBwYWdlVG9sZXJhbmNlWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIgtjb21tb25TdGF0ZSIHY2FsY0tMcCINYW1vdW50QmFsYW5jZSIMcHJpY2VCYWxhbmNlIhBhbW91bnRCYWxhbmNlWDE4Ig9wcmljZUJhbGFuY2VYMTgiCnVwZGF0ZWRLTHAiDmNhbGNDdXJyZW50S0xwIhBhbW91bnRBc3NldERlbHRhIg9wcmljZUFzc2V0RGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCmN1cnJlbnRLTHAiEnJlZnJlc2hLTHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiB2FjdGlvbnMiEnZhbGlkYXRlVXBkYXRlZEtMcCIGb2xkS0xwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjEyNjIyMTQ3NCIDa0xwIg0kdDAyMTk0NTIyMDQ1Ig11bnVzZWRBY3Rpb25zIgZrTHBOZXciDGlzT3JkZXJWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjQ3NjYyNTA1OSIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyNTA2MzI1MjEyIhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyINJHQwMjUzNDQyNTQwOCINcGF5bWVudEFtb3VudCIQYW1vdW50QmFsYW5jZU5ldyIPcHJpY2VCYWxhbmNlTmV3IgtwcmljZU5ld1gxOCIIcHJpY2VOZXciDnBheW1lbnRCYWxhbmNlIhRwYXltZW50QmFsYW5jZUJpZ0ludCIMc3VwcGx5QmlnSW50IgtjaGVjaFN1cHBseSINZGVwb3NpdEJpZ0ludCILaXNzdWVBbW91bnQiC3ByaWNlT2xkWDE4IghwcmljZU9sZCIEbG9zcyINJHQwMjcwODkyNzI1NiIHYmFsYW5jZSIPaXNzdWVBbW91bnRCb3RoIg9jYWxjR2V0T25lVG9rZW4iCm91dEFzc2V0SWQiBmNoZWNrcyIQb3V0SW5BbW91bnRBc3NldCINYmFsYW5jZUJpZ0ludCIYb3V0SW5BbW91bnRBc3NldERlY2ltYWxzIgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCIKb3V0QmFsYW5jZSIQb3V0QmFsYW5jZUJpZ0ludCIOcmVkZWVtZWRCaWdJbnQiCWFtb3VudFJhdyINJHQwMjkzMzQyOTM5MCILdG90YWxBbW91bnQiDSR0MDI5Mzk0Mjk2MjAiC291dEFtQW1vdW50IgtvdXRQckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciGGFtb3VudEJvdGhJblBheW1lbnRBc3NldCIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiCWlzTWFuYWdlciICcGsiC211c3RNYW5hZ2VyIgJwZCIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiC2NoZWNrQ2FsbGVyIhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSIPc2hvdWxkQXV0b1N0YWtlIgRhbUlkIgRwcklkIgxzbGlwcGFnZUFJbnYiDHNsaXBwYWdlUEludiIKbHBUcmFuc2ZlciILc2xwU3Rha2VJbnYiDSR0MDM0MTQ4MzQ2MTAiEXJlZnJlc2hLTHBBY3Rpb25zIhFpc1VwZGF0ZWRLTHBWYWxpZCILbWF4U2xpcHBhZ2UiDSR0MDM1MTcyMzUyMzciDG1pbk91dEFtb3VudCIJYXV0b1N0YWtlIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCINaXNQdXREaXNhYmxlZCIHcGF5bWVudCINJHQwMzY0MjUzNjU3NyIFYm9udXMiE2VtaXRBbW91bnRFc3RpbWF0ZWQiCmVtaXRBbW91bnQiCHN0YWtlSW52IgdzZW5kRmVlIg0kdDAzNzE2MzM3MzYwIg0kdDAzNzM2MzM3NDcxIg0kdDAzNzc3NzM3OTM0Ig1vdXRBc3NldElkU3RyIg1pc0dldERpc2FibGVkIg0kdDAzODgxOTM4OTcyIg9hbW91bnRFc3RpbWF0ZWQiB2J1cm5JbnYiDWFzc2V0VHJhbnNmZXIiDSR0MDM5NDcyMzk3MTkiEGZlZUFtb3VudEZvckNhbGMiDSR0MDM5NzIyMzk4MzAiDSR0MDQwMDg3NDAyNDMiDXVuc3Rha2VBbW91bnQiCnVuc3Rha2VJbnYiDSR0MDQxMTQ4NDEyOTkiDSR0MDQxNzk0NDIwNDEiDSR0MDQyMDQ0NDIxNTIiCW91dEFtdEFtdCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDSR0MDQzMDk4NDMxODAiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiDSR0MDQ0MTI5NDQyMTAiDWNoZWNrUGF5bWVudHMiD2NoZWNrUG9vbFN0YXR1cyINJHQwNDUzMzY0NTQxNyIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgxjaGVja0Ftb3VudHMiDSR0MDQ2NzEyNDY3OTMiC2FtdEFzc2V0U3RyIg1wcmljZUFzc2V0U3RyIhhsYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiHWNoZWNrTGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ig0kdDA0Nzk4MDQ4MDQ0IhBrTHBVcGRhdGVBY3Rpb25zIgphbXRBc3NldElkIgxwcmljZUFzc2V0SWQiDXBvb2xMUEJhbGFuY2UiEmFjY0FtdEFzc2V0QmFsYW5jZSIUYWNjUHJpY2VBc3NldEJhbGFuY2UiCnByaWNlc0xpc3QiD2xwQW10QXNzZXRTaGFyZSIRbHBQcmljZUFzc2V0U2hhcmUiCnBvb2xXZWlnaHQiDGN1clByaWNlQ2FsYyIMYW1CYWxhbmNlUmF3IgxwckJhbGFuY2VSYXciD2FtQmFsYW5jZVJhd1gxOCIPcHJCYWxhbmNlUmF3WDE4IhBwYXltZW50THBBc3NldElkIgxwYXltZW50THBBbXQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNocgABYQAIAAFiAIDC1y8AAWMJALYCAQCAwtcvAAFkCQC2AgEAgICQu7rWrfANAAFlCQC2AgEAAAABZgkAtgIBAAAAAWcJALYCAQABAAFoCQC2AgEAAgABaQIFV0FWRVMAAWoCAl9fAAFrAAEAAWwAAgABbQADAAFuAAQAAW8AAQABcAACAAFxAAMAAXIABAABcwAFAAF0AAYAAXUABwABdgAIAAF3AAkAAXgACgABeQABAAF6AAIAAUEAAwABQgABAAFDAAcBAUQCAUUBRgkAvAIDCQC2AgEFAUUFAWQJALYCAQUBRgEBRwIBRQFGCQC8AgMFAUUFAWQFAUYBAUgCAUkBSgkAoAMBCQC8AgMFAUkJALYCAQUBSgUBZAEBSwMBSQFKAUwJAKADAQkAvQIEBQFJCQC2AgEFAUoFAWQFAUwBAU0DAU4BTwFQCQBrAwUBTgUBTwUBUAEBUQEBSQMJAGYCAAAFAUkJAQEtAQUBSQUBSQEBUgEBSQMJAL8CAgUBZQUBSQkAvgIBBQFJBQFJAQFTAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBVAACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFVAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFWAAIRJXMlc19fcHJpY2VfX2xhc3QBAVcCAVgBWQkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVgJAMwIAgkApAMBBQFZBQNuaWwFAWoBAVoCAmFhAmFiCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCYWECAl9fBQJhYgECYWMCAmFhAmFiCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCYWECAl9fBQJhYgECYWQAAg8lc19fYW1vdW50QXNzZXQBAmFlAAIOJXNfX3ByaWNlQXNzZXQAAmFmAgclc19fZmVlAAJhZwkAawMACgUBYgCQTgACYWgJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWYFAmFnAAJhaQkAuQkCCQDMCAICAiVzCQDMCAICA2tMcAUDbmlsBQFqAAJhagkAuQkCCQDMCAICAiVzCQDMCAICEmtMcFJlZnJlc2hlZEhlaWdodAUDbmlsBQFqAAJhawkAuQkCCQDMCAICAiVzCQDMCAICD3JlZnJlc2hLTHBEZWxheQUDbmlsBQFqAAJhbAAeAAJhbQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhawUCYWwBAmFuAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFvAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhcAECYXEJAKwCAgkArAICAgglcyVzJXNfXwUCYXECIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0AQJhcgICYXMCYXQJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFzAgJfXwUCYXQCCF9fY29uZmlnAQJhdQECYXYJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYXYBAmF3AAIMJXNfX3NodXRkb3duAQJheAECYXkJAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQJheQECYXoAAhclc19fYWxsb3dlZExwU2NyaXB0SGFzaAACYUECFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhQgMCYUMCYUQCYUUJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIkb3JkZXIgdmFsaWRhdGlvbiBmYWlsZWQ6IG9yZGVyVmFsaWQ9CQClAwEFAmFDAg0gc2VuZGVyVmFsaWQ9CQClAwEFAmFEAg4gbWF0Y2hlclZhbGlkPQkApQMBBQJhRQECYUYCAmFHAmFICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYUcFAmFICQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFHCQDMCAICAS4JAMwIAgUCYUgJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYUkCAmFHAmFICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYUcFAmFICQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFHCQDMCAICAS4JAMwIAgUCYUgJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYUoBAmFLCQACAQkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmFLBQNuaWwCASABAmFMAQJhSwkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmFLBQNuaWwCASAAAmFNCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUYCBQR0aGlzCQEBUwAAAmFOCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYUYCBQJhTQUCYUEAAmFPCgACYVAJAPwHBAUCYU0CEGdldEluRmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUAIDSW50BQJhUAkAAgEJAKwCAgkAAwEFAmFQAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmFRCgACYVAJAPwHBAUCYU0CEWdldE91dEZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVACA0ludAUCYVAJAAIBCQCsAgIJAAMBBQJhUAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQJhUgAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYU0JAQJhdwAHAQJhUwAJANkEAQkBAmFGAgUCYU0JAQJhbwABAmFUAAQCYVUJAQJhRgIFBHRoaXMJAQJhZAAEAmFWCQECYUYCBQR0aGlzCQECYWUABAJhdAkBAmFJAgUCYU0JAQJhdQEFAmFWBAJhcwkBAmFJAgUCYU0JAQJhdQEFAmFVCQC1CQIJAQJhRgIFAmFNCQECYXICCQCkAwEFAmFzCQCkAwEFAmF0BQFqAQJhVwECYVgDCQAAAgUCYVgFAWkFBHVuaXQJANkEAQUCYVgBAmFZAQJhWAMJAAACBQJhWAUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJhWAECYVoBAmJhCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYmEFAW8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBcAkA2QQBCQCRAwIFAmJhBQFxCQECYVcBCQCRAwIFAmJhBQFyCQECYVcBCQCRAwIFAmJhBQFzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmEFAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBdQACYmIJAQJhWgEJAQJhVAAAAmJjBQJiYgACYmQIBQJiYwJfMQACYmUIBQJiYwJfMgACYmYIBQJiYwJfMwACYmcIBQJiYwJfNAACYmgIBQJiYwJfNQACYmkIBQJiYwJfNgACYmoIBQJiYwJfNwECYmsACQC1CQIJAQJhRgIFAmFNCQECYW4ABQFqAAJibAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJrAAUBQgIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwACYm0JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJiawAFAUMCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBAmJuCgJibwJicAJicQJicgJicwJidAJidQJidgJidwJieAkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYm8JAMwIAgkApAMBBQJicAkAzAgCCQCkAwEFAmJxCQDMCAIJAKQDAQUCYnIJAMwIAgkApAMBBQJicwkAzAgCCQCkAwEFAmJ0CQDMCAIJAKQDAQUCYnUJAMwIAgkApAMBBQJidgkAzAgCCQCkAwEFAmJ3CQDMCAIJAKQDAQUCYngFA25pbAUBagECYnkGAmJ6AmJBAmJCAmJyAmJ1AmJ2CQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYnoJAMwIAgkApAMBBQJiQQkAzAgCCQCkAwEFAmJCCQDMCAIJAKQDAQUCYnIJAMwIAgkApAMBBQJidQkAzAgCCQCkAwEFAmJ2BQNuaWwFAWoBAmJDAQJiRAMJAAACBQJiRAIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYkQBAmJFAgJiRgJiRwkAvAIDBQJiRgUBZAUCYkcBAmJIAwJiRgJiRwFMCQC9AgQFAmJGBQFkBQJiRwUBTAECYkkEAmJKAmJLAmJMAmJNBAJiTgkBAUQCBQJiTAUCYkoEAmJPCQEBRAIFAmJNBQJiSwkBAmJFAgUCYk8FAmJOAQJiUAMCYkwCYk0CYlEEAmJSCQECYVQABAJiUwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJSBQF0BAJiVAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJSBQF1BAJiVQkBAmJJBAUCYlMFAmJUBQJiTAUCYk0EAmJHCQEBRAIFAmJMBQJiUwQCYkYJAQFEAgUCYk0FAmJUBAJiVgkBAUQCBQJiUQUBYgQCYlcJAQJiRQIFAmJHBQJiVgQCYlgJAQJiRQIFAmJGBQJiVgkAzAgCBQJiVQkAzAgCBQJiVwkAzAgCBQJiWAUDbmlsAQJiWQMCYkwCYk0CYlEEAmJaCQECYlADBQJiTAUCYk0FAmJRCQDMCAIJAQFIAgkAkQMCBQJiWgAABQFiCQDMCAIJAQFIAgkAkQMCBQJiWgABBQFiCQDMCAIJAQFIAgkAkQMCBQJiWgACBQFiBQNuaWwBAmNhBAJjYgJjYwJjZAJhYQQCYlIJAQJhVAAEAmNlCQCRAwIFAmJSBQFxBAJjZgkAkQMCBQJiUgUBcgQCY2cJAJEDAgUCYlIFAXMEAmJKCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlIFAXQEAmJLCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlIFAXUEAmNoCQCRAwIFAmJSBQFwBAJjaQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNlCQCsAgIJAKwCAgIGQXNzZXQgBQJjZQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJjZQUCY2MJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmNqCQECYkMBBQJjZgQCY2sJAQFEAgUCY2oFAmJKBAJjbAkBAmJDAQUCY2cEAmNtCQEBRAIFAmNsBQJiSwQCY24JAQJiRQIFAmNtBQJjawQCY28JAQFIAgUCY24FAWIEAmNwCQEBRAIFAmNkBQFiBAJjcQkBAUQCBQJjaQUBYgQCY3IJALwCAwUCY2sFAmNwBQJjcQQCY3MJALwCAwUCY20FAmNwBQJjcQQCY3QJAQFLAwUCY3IFAmJKBQVGTE9PUgQCY3UJAQFLAwUCY3MFAmJLBQVGTE9PUgQCY3YDCQAAAgUCY2ICAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFhBQJjdAMJAAACBQJjZgIFV0FWRVMFBHVuaXQJANkEAQUCY2YJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWEFAmN1AwkAAAIFAmNnAgVXQVZFUwUEdW5pdAkA2QQBBQJjZwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMCCQClCAEFAmFhBQJjYgkBAmJ5BgUCY3QFAmN1BQJjZAUCY28FBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAAUCY28JAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY28FA25pbAkAnAoKBQJjdAUCY3UFAmNmBQJjZwUCY2oFAmNsBQJjaQUCY24FAmNoBQJjdgECY3cJAmNiAmN4AmN5AmN6AmNBAmNCAmFhAmNDAmNEBAJiUgkBAmFUAAQCY2UJANkEAQkAkQMCBQJiUgUBcQQCY0UJAJEDAgUCYlIFAXIEAmNGCQCRAwIFAmJSBQFzBAJjRwkAkQMCBQJiUgUBdgQCY0gJAJEDAgUCYlIFAXcEAmJTCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlIFAXQEAmJUCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlIFAXUEAmNoCQCRAwIFAmJSBQFwBAJjaQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjZQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjZQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNJCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmN6CQDZBAECBVdBVkVTBAJjSgkA2AQBCQELdmFsdWVPckVsc2UCBQJjQgkA2QQBAgVXQVZFUwMDCQECIT0CBQJjRQUCY0kGCQECIT0CBQJjRgUCY0oJAAIBAiJJbnZhbGlkIGFtdCBvciBwcmljZSBhc3NldCBwYXNzZWQuBAJjagMFAmNDCQECYkMBBQJjRQkAZQIJAQJiQwEFAmNFBQJjeQQCY2wDBQJjQwkBAmJDAQUCY0YJAGUCCQECYkMBBQJjRgUCY0EEAmNLCQEBRAIFAmN5BQJiUwQCY0wJAQFEAgUCY0EFAmJUBAJjTQkBAmJFAgUCY0wFAmNLBAJjawkBAUQCBQJjagUCYlMEAmNtCQEBRAIFAmNsBQJiVAQCY04DCQAAAgUCY2kAAAQCY24FAWUEAmNPBQFlBAJiVgkAdgYJALkCAgUCY0sFAmNMAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBSAIFAmJWBQFiCQEBSAIFAmNLBQJiUwkBAUgCBQJjTAUCYlQJAQJiRQIJALcCAgUCY20FAmNMCQC3AgIFAmNrBQJjSwUCY08EAmNuCQECYkUCBQJjbQUCY2sEAmNPCQC8AgMJAQFSAQkAuAICBQJjbgUCY00FAWQFAmNuBAJjUAkBAUQCBQJjeAUBYgMDCQECIT0CBQJjbgUBZQkAvwICBQJjTwUCY1AHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmNPAh4gZXhjZWVkZWQgdGhlIHBhc3NlZCBsaW1pdCBvZiAJAKYDAQUCY1AEAmNxCQEBRAIFAmNpBQFiBAJjUQkAvQIEBQJjSwkBAmJIAwUCY20FAmNrBQdDRUlMSU5HBQFkBQdDRUlMSU5HBAJjUgkAvQIEBQJjTAUBZAkBAmJIAwUCY20FAmNrBQVGTE9PUgUHQ0VJTElORwQCY1MDCQC/AgIFAmNRBQJjTAkAlAoCBQJjUgUCY0wJAJQKAgUCY0sFAmNRBAJjVAgFAmNTAl8xBAJjVQgFAmNTAl8yBAJiVgkAvQIEBQJjcQUCY1UFAmNtBQVGTE9PUgkAlwoFCQEBSwMFAmJWBQFiBQVGTE9PUgkBAUsDBQJjVAUCYlMFB0NFSUxJTkcJAQFLAwUCY1UFAmJUBQdDRUlMSU5HBQJjbgUCY08EAmNWCAUCY04CXzEEAmNXCAUCY04CXzIEAmNYCAUCY04CXzMEAmNvCQEBSAIIBQJjTgJfNAUBYgQCY1kJAQFIAggFAmNOAl81BQFiAwkAZwIAAAUCY1YJAAIBAjZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAmNaAwkBASEBBQJjRAAABQJjVgQCZGEJAGUCBQJjeQUCY1cEAmRiCQBlAgUCY0EFAmNYBAJkYwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYABQJjbwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjbwkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIFAmFhBQJjYgkBAmJuCgUCY1cFAmNYBQJjWgUCY28FAmN4BQJjWQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZGEFAmRiBQNuaWwJAJ8KDQUCY1YFAmNaBQJjbwUCY2oFAmNsBQJjaQUCY2UFAmNoBQJkYwUCZGEFAmRiBQJjegUCY0IBAmRkAwJkZQJkZgJjaQQCZGcJAQFHAgUCZGUJALYCAQUCYmkEAmRoCQEBRwIFAmRmCQC2AgEFAmJqBAJkaQkAvAIDCQB2BgkAuQICBQJkZwUCZGgAAAkAtgIBAAUAAQASBQRET1dOBQFnBQJjaQMJAAACBQJjaQUBZgUBZgUCZGkBAmRqAwJkawJkbAJkbQQCZG4JALgCAgkAtgIBCQECYkMBCQECYVkBBQJiZwUCZGsEAmRvCQC4AgIJALYCAQkBAmJDAQkBAmFZAQUCYmgFAmRsBAJkcAkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJmCHF1YW50aXR5BQJkbQQCZHEJAQJkZAMFAmRuBQJkbwUCZHAFAmRxAQJkcgMCZHMCZHQCZG0EAmRuCQBkAgkBAmJDAQkBAmFZAQUCYmcFAmRzBAJkbwkAZAIJAQJiQwEJAQJhWQEFAmJoBQJkdAQCZHAJAGQCCAkBBXZhbHVlAQkA7AcBBQJiZghxdWFudGl0eQUCZG0EAmRpCQECZGQDCQC2AgEFAmRuCQC2AgEFAmRvCQC2AgEFAmRwBAJkdQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYWoFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhaQkApgMBBQJkaQUDbmlsCQCUCgIFAmR1BQJkaQECZHYCAmR3AmRpAwkAwAICBQJkaQUCZHcGCQECYUoBCQC5CQIJAMwIAgIidXBkYXRlZCBLTHAgbG93ZXIgdGhhbiBjdXJyZW50IEtMcAkAzAgCCQCmAwEFAmR3CQDMCAIJAKYDAQUCZGkFA25pbAIBIAECZHgBAmR5BAJkeggFAmR5BmFtb3VudAQCZEEJAG4ECAUCZHkGYW1vdW50CAUCZHkFcHJpY2UFAWIFBUZMT09SBAJkQgMJAAACCAUCZHkJb3JkZXJUeXBlBQNCdXkJAJQKAgUCZHoJAQEtAQUCZEEJAJQKAgkBAS0BBQJkegUCZEEEAmRzCAUCZEICXzEEAmR0CAUCZEICXzIDAwMJAQJhUgAGCQAAAgUCYmUFAW0GCQAAAgUCYmUFAW4JAAIBAhxFeGNoYW5nZSBvcGVyYXRpb25zIGRpc2FibGVkAwMJAQIhPQIICAUCZHkJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BQJiZwYJAQIhPQIICAUCZHkJYXNzZXRQYWlyCnByaWNlQXNzZXQFAmJoCQACAQITV3Jvbmcgb3JkZXIgYXNzZXRzLgQCZEMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUCYWkJAQJhTAECD2tMcCBpcyByZXF1aXJlZAkBAmFMAQILaW52YWxpZCBrTHAEAmRECQECZHIDBQJkcwUCZHQAAAQCZEUIBQJkRAJfMQQCZEYIBQJkRAJfMgQCZEcJAMACAgUCZEYFAmRDBQJkRwECZEgBAmRJAwkBAiE9AgkAkAMBCAUCZEkIcGF5bWVudHMAAQkAAgECHWV4YWN0bHkgMSBwYXltZW50IGlzIGV4cGVjdGVkBAJkSgkBBXZhbHVlAQkAkQMCCAUCZEkIcGF5bWVudHMAAAQCY2MJAQV2YWx1ZQEIBQJkSgdhc3NldElkBAJkSwgFAmRKBmFtb3VudAQCY04JAQJjYQQJANgEAQgFAmRJDXRyYW5zYWN0aW9uSWQJANgEAQUCY2MFAmRLCAUCZEkGY2FsbGVyBAJjdAgFAmNOAl8xBAJjdQgFAmNOAl8yBAJjaAkBDXBhcnNlSW50VmFsdWUBCAUCY04CXzkEAmN2CAUCY04DXzEwAwMJAQJhUgAGCQAAAgUCY2gFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNoCQCXCgUFAmN0BQJjdQUCZEsFAmNjBQJjdgECZEwDAmRJAmN4AmNEAwkBAiE9AgkAkAMBCAUCZEkIcGF5bWVudHMAAgkAAgECH2V4YWN0bHkgMiBwYXltZW50cyBhcmUgZXhwZWN0ZWQEAmRNCQEFdmFsdWUBCQCRAwIIBQJkSQhwYXltZW50cwAABAJkTgkBBXZhbHVlAQkAkQMCCAUCZEkIcGF5bWVudHMAAQQCZE8JAQJjdwkJANgEAQgFAmRJDXRyYW5zYWN0aW9uSWQFAmN4CAUCZE0GYW1vdW50CAUCZE0HYXNzZXRJZAgFAmROBmFtb3VudAgFAmROB2Fzc2V0SWQJAKUIAQgFAmRJBmNhbGxlcgcFAmNEBAJjaAkBDXBhcnNlSW50VmFsdWUBCAUCZE8CXzgDAwMJAQJhUgAGCQAAAgUCY2gFAWwGCQAAAgUCY2gFAW4JAAIBCQCsAgICLFB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNoBQJkTwECZFABAmRRBAJkUgkA/AcEBQJhTQIEZW1pdAkAzAgCBQJkUQUDbmlsBQNuaWwDCQAAAgUCZFIFAmRSBAJkUwQCZFQFAmRSAwkAAQIFAmRUAgdBZGRyZXNzBAJkVQUCZFQJAPwHBAUCZFUCBGVtaXQJAMwIAgUCZFEFA25pbAUDbmlsBQR1bml0AwkAAAIFAmRTBQJkUwUCZFEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmRWAgJkUQJhaAQCZFcDCQAAAgUCYWgAAAAACQBrAwUCZFEFAmFoBQFiCQCUCgIJAGUCBQJkUQUCZFcFAmRXAQJkWAQCZFkCZFoCYWECYWIEAmVhCQAAAgUCYWIFBHVuaXQEAmViCQECYkMBCQECYVkBBQJiZwQCZWMJAQJiQwEJAQJhWQEFAmJoBAJlZAMJAAACBQJkWgUCYmcGAwkAAAIFAmRaBQJiaAcJAQJhSgECDWludmFsaWQgYXNzZXQEAmVlAwUCZWEJAJQKAgUCZWIFAmVjAwUCZWQJAJQKAgkAZQIFAmViBQJkWQUCZWMJAJQKAgUCZWIJAGUCBQJlYwUCZFkEAmVmCAUCZWUCXzEEAmVnCAUCZWUCXzIEAmVoAwUCZWQJAJQKAgUCZFkAAAkAlAoCAAAFAmRZBAJlaQgFAmVoAl8xBAJlaggFAmVoAl8yBAJkeggJAQJkVgIFAmVpBQJhTwJfMQQCZEEICQECZFYCBQJlagUCYU8CXzEEAmVrCQECZFYCBQJkWQUCYU8EAmVsCAUCZWsCXzEEAmRXCAUCZWsCXzIEAmVtCQBkAgUCZWYFAmR6BAJlbgkAZAIFAmVnBQJkQQQCZW8JAQJiRQIJAQFEAgUCZW4FAmJqCQEBRAIFAmVtBQJiaQQCZXAJAQFIAgUCZW8FAWIEAmVxAwUCZWQFAmVmBQJlZwQCZXIJALYCAQUCZXEEAmVzCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYmYJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYmYCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJldAMJAL8CAgUCZXMFAWYGCQECYUoBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmV0BQJldAQCZXUJALYCAQUCZWwEAmV2CQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmVzCQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZXUFAWQFAmVyABIAEgUERE9XTgUBZAUBZAUDbmlsBAJkYwMFAmVhBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAAUCZXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZXAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoCCQClCAEJAQV2YWx1ZQEFAmFhCQDYBAEJAQV2YWx1ZQEFAmFiCQECYm4KBQJlaQUCZWoFAmV2BQJlcAAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmV3CQECYkUCCQEBRAIFAmVnBQJiagkBAUQCBQJlZgUCYmkEAmV4CQEBSAIFAmV3BQFiBAJleQQCZXoDBQJlZAkAlAoCBQJlaQUCZWYJAJQKAgUCZWoFAmVnBAJkUQgFAmV6Al8xBAJlQQgFAmV6Al8yBAJlQgkAoAMBCQC8AgMFAmVzCQC2AgEJAGkCBQJkUQACCQC2AgEFAmVBCQBrAwkAZQIFAmV2BQJlQgUBYgUCZUIJAJcKBQUCZXYFAmRjBQJkVwUCZXkFAmVkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlQwUCZUQCZWwCZFoCYWECYWIEAmVhCQAAAgUCYWIFBHVuaXQEAmJSCQECYVQABAJiUwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJSBQF0BAJiVAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJSBQF1BAJlRQkAzAgCAwkAAAIFAmRaBQJiZgYJAQJhSgECEGludmFsaWQgbHAgYXNzZXQFA25pbAMJAAACBQJlRQUCZUUEAmVGAwkAAAIFAmVEBQJiZwYDCQAAAgUCZUQFAmJoBwkBAmFKAQINaW52YWxpZCBhc3NldAQCZUcDBQJlRgkAtgIBCQECYkMBCQECYVkBBQJiZwkAtgIBCQECYkMBCQECYVkBBQJiaAQCZUgDBQJlRgUCYlMFAmJUBAJlSQkBAmJDAQkBAmFZAQUCYmcEAmVKCQECYkMBCQECYVkBBQJiaAQCZUsDBQJlRgUCZUkFAmVKBAJlTAkAtgIBBQJlSwQCZXMJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiZgkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJiZgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmVNCQC2AgEFAmVsBAJlTgkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlRwkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZU0FAWQFAmVzABIFAWgAAAASBQRET1dOBQFkBQNuaWwEAmVPCQECZFYCBQJlTgUCYVEEAmVQCAUCZU8CXzEEAmRXCAUCZU8CXzIEAmVRAwUCZUYJAJYKBAUCZVAAAAkAZQIFAmVJBQJlTgUCZUoJAJYKBAAABQJlUAUCZUkJAGUCBQJlSgUCZU4EAmVSCAUCZVECXzEEAmVTCAUCZVECXzIEAmVUCAUCZVECXzMEAmVVCAUCZVECXzQEAmVvCQECYkUCCQEBRAIFAmVVBQJiagkBAUQCBQJlVAUCYmkEAmVwCQEBSAIFAmVvBQFiBAJkYwMFAmVhBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFjAgkApQgBCQEFdmFsdWUBBQJhYQkA2AQBCQEFdmFsdWUBBQJhYgkBAmJ5BgUCZVIFAmVTBQJlbAUCZXAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAAUCZXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZXAFA25pbAQCZXcJAQJiRQIJAQFEAgUCZUoFAmJqCQEBRAIFAmVJBQJiaQQCZXgJAQFIAgUCZXcFAWIEAmV5BAJlVgkAaAIJAKADAQkAvAIDBQJlRwUCZU0FAmVzAAIJAGsDCQBlAgUCZVAFAmVWBQFiBQJlVgkAlwoFBQJlUAUCZGMFAmRXBQJleQUCZUYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVXAAQCZFQJAKIIAQkBAVQAAwkAAQIFAmRUAgZTdHJpbmcEAmVYBQJkVAkA2QQBBQJlWAMJAAECBQJkVAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJlWQAEAmRUCQCiCAEJAQFVAAMJAAECBQJkVAIGU3RyaW5nBAJlWAUCZFQJANkEAQUCZVgDCQABAgUCZFQCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZVoBAmRJBAJkVAkBAmVXAAMJAAECBQJkVAIKQnl0ZVZlY3RvcgQCZmEFAmRUCQAAAggFAmRJD2NhbGxlclB1YmxpY0tleQUCZmEDCQABAgUCZFQCBFVuaXQJAAACCAUCZEkGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmZiAQJkSQQCZmMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQCZFQJAQJlVwADCQABAgUCZFQCCkJ5dGVWZWN0b3IEAmZhBQJkVAMJAAACCAUCZEkPY2FsbGVyUHVibGljS2V5BQJmYQYFAmZjAwkAAQIFAmRUAgRVbml0AwkAAAIIBQJkSQZjYWxsZXIFBHRoaXMGBQJmYwkAAgECC01hdGNoIGVycm9yGwJkSQEKc2V0TWFuYWdlcgECZmQEAmZlCQECZmIBBQJkSQMJAAACBQJmZQUCZmUEAmZmCQDZBAEFAmZkAwkAAAIFAmZmBQJmZgkAzAgCCQELU3RyaW5nRW50cnkCCQEBVQAFAmZkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEkBDmNvbmZpcm1NYW5hZ2VyAAQCZmcJAQJlWQAEAmZoAwkBCWlzRGVmaW5lZAEFAmZnBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmaAUCZmgEAmZpAwkAAAIIBQJkSQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmZnBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmaQUCZmkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQACQDYBAEJAQV2YWx1ZQEFAmZnCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFVAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRJAQNwdXQCAmN4AmZqAwkAZgIAAAUCY3gJAAIBAiBJbnZhbGlkIHNsaXBwYWdlVG9sZXJhbmNlIHBhc3NlZAQCZE8JAQJkTAMFAmRJBQJjeAYEAmNaCAUCZE8CXzIEAmNlCAUCZE8CXzcEAmN2CAUCZE8CXzkEAmRhCAUCZE8DXzEwBAJkYggFAmRPA18xMQQCZmsIBQJkTwNfMTIEAmZsCAUCZE8DXzEzBAJkTQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEkIcGF5bWVudHMAAAZhbW91bnQEAmROCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkSQhwYXltZW50cwABBmFtb3VudAQCZHEJAQJkagMFAmRNBQJkTgkAtgIBAAADCQAAAgUCZHEFAmRxBAJkUgkA/AcEBQJhTQIEZW1pdAkAzAgCBQJjWgUDbmlsBQNuaWwDCQAAAgUCZFIFAmRSBAJkUwQCZFQFAmRSAwkAAQIFAmRUAgdBZGRyZXNzBAJkVQUCZFQJAPwHBAUCZFUCBGVtaXQJAMwIAgUCY1oFA25pbAUDbmlsBQR1bml0AwkAAAIFAmRTBQJkUwQCZm0DCQBmAgUCZGEAAAkA/AcEBQJibQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZrBQJkYQUDbmlsBQNuaWwDCQAAAgUCZm0FAmZtBAJmbgMJAGYCBQJkYgAACQD8BwQFAmJtAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZmwFAmRiBQNuaWwFA25pbAMJAAACBQJmbgUCZm4EAmZvAwUCZmoEAmZwCQD8BwQFAmJsAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjZQUCY1oFA25pbAMJAAACBQJmcAUCZnAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZEkGY2FsbGVyBQJjWgUCY2UFA25pbAQCZnEJAQJkcgMAAAAAAAADCQAAAgUCZnEFAmZxBAJkaQgFAmZxAl8yBAJmcggFAmZxAl8xBAJmcwkBAmR2AgUCZHEFAmRpAwkAAAIFAmZzBQJmcwkAzggCCQDOCAIFAmN2BQJmbwUCZnIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEkBCnB1dEZvckZyZWUBAmZ0AwkAZgIAAAUCZnQJAAIBAhRJbnZhbGlkIHZhbHVlIHBhc3NlZAQCZE8JAQJkTAMFAmRJBQJmdAcEAmN2CAUCZE8CXzkEAmRNCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkSQhwYXltZW50cwAABmFtb3VudAQCZE4JALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRJCHBheW1lbnRzAAEGYW1vdW50BAJkcQkBAmRqAwUCZE0FAmROCQC2AgEAAAMJAAACBQJkcQUCZHEEAmZ1CQECZHIDAAAAAAAABAJmcggFAmZ1Al8xBAJkaQgFAmZ1Al8yBAJmcwkBAmR2AgUCZHEFAmRpAwkAAAIFAmZzBQJmcwkAzggCBQJjdgUCZnIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEkBCXB1dE9uZVRrbgICZnYCZncEAmZ4CgACYVAJAPwHBAUCYU0CKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUAIHQm9vbGVhbgUCYVAJAAIBCQCsAgIJAAMBBQJhUAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZnkDAwMJAQJhUgAGCQAAAgUCYmUFAWwGCQAAAgUCYmUFAW4GBQJmeAQCZUUJAMwIAgMDCQEBIQEFAmZ5BgkBAmVaAQUCZEkGCQECYUoBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkSQhwYXltZW50cwABBgkBAmFKAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZUUFAmVFBAJmegkAkQMCCAUCZEkIcGF5bWVudHMAAAQCZFoIBQJmegdhc3NldElkBAJkWQgFAmZ6BmFtb3VudAQCZHEDCQAAAgUCZFoFAmJnCQECZGoDCQC2AgEFAmRZCQC2AgEAAAkAtgIBAAADCQAAAgUCZFoFAmJoCQECZGoDCQC2AgEAAAkAtgIBBQJkWQkAtgIBAAAJAQJhSgECHnBheW1lbnQgYXNzZXQgaXMgbm90IHN1cHBvcnRlZAMJAAACBQJkcQUCZHEEAmFhCAUCZEkGY2FsbGVyBAJhYggFAmRJDXRyYW5zYWN0aW9uSWQEAmZBCQECZFgEBQJkWQUCZFoFAmFhBQJhYgMJAAACBQJmQQUCZkEEAmVkCAUCZkECXzUEAmZCCAUCZkECXzQEAmRXCAUCZkECXzMEAmRjCAUCZkECXzIEAmZDCAUCZkECXzEEAmZEAwMJAGYCBQJmdgAACQBmAgUCZnYFAmZDBwkBAmFKAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmdgUDbmlsAgAFAmZDBAJkUgkBAmRQAQUCZkQDCQAAAgUCZFIFAmRSBAJmbwMFAmZ3BAJmRQkA/AcEBQJibAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYmYFAmZEBQNuaWwDCQAAAgUCZkUFAmZFBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRJBmNhbGxlcgUCZkQFAmJmBQNuaWwEAmZGAwkAZgIFAmRXAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYU4FAmRXBQJkWgUDbmlsBQNuaWwEAmZHAwkAAAIFBHRoaXMFAmFOCQCUCgIAAAAAAwUCZWQJAJQKAgkBAS0BBQJkVwAACQCUCgIAAAkBAS0BBQJkVwQCZHMIBQJmRwJfMQQCZHQIBQJmRwJfMgQCZkgJAQJkcgMFAmRzBQJkdAAABAJmcggFAmZIAl8xBAJkaQgFAmZIAl8yBAJkQwkBBXZhbHVlAQkAoggBBQJhaQQCZnMJAQJkdgIFAmRxBQJkaQMJAAACBQJmcwUCZnMJAJQKAgkAzggCCQDOCAIJAM4IAgUCZGMFAmZvBQJmRgUCZnIFAmZECQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRJARFwdXRPbmVUa25SRUFET05MWQICZFoCZFkEAmZJCQECZFgEBQJkWQkBAmFXAQUCZFoFBHVuaXQFBHVuaXQEAmZDCAUCZkkCXzEEAmRjCAUCZkkCXzIEAmRXCAUCZkkCXzMEAmZCCAUCZkkCXzQEAmVkCAUCZkkCXzUJAJQKAgUDbmlsCQCVCgMFAmZDBQJkVwUCZkICZEkBCWdldE9uZVRrbgICZkoCZnYEAmZ4CgACYVAJAPwHBAUCYU0CKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhUAIHQm9vbGVhbgUCYVAJAAIBCQCsAgIJAAMBBQJhUAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZksDAwkBAmFSAAYJAAACBQJiZQUBbgYFAmZ4BAJlRQkAzAgCAwMJAQEhAQUCZksGCQECZVoBBQJkSQYJAQJhSgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRJCHBheW1lbnRzAAEGCQECYUoBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlRQUCZUUEAmVECQECYVcBBQJmSgQCZnoJAJEDAggFAmRJCHBheW1lbnRzAAAEAmRaCAUCZnoHYXNzZXRJZAQCZWwIBQJmegZhbW91bnQEAmRxCQECZGoDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmRxBQJkcQQCYWEIBQJkSQZjYWxsZXIEAmFiCAUCZEkNdHJhbnNhY3Rpb25JZAQCZkwJAQJlQwUFAmVEBQJlbAUCZFoFAmFhBQJhYgMJAAACBQJmTAUCZkwEAmVGCAUCZkwCXzUEAmZCCAUCZkwCXzQEAmRXCAUCZkwCXzMEAmRjCAUCZkwCXzIEAmZNCAUCZkwCXzEEAmRRAwMJAGYCBQJmdgAACQBmAgUCZnYFAmZNBwkBAmFKAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmdgUDbmlsAgAFAmZNBAJmTgkA/AcEBQJhTQIEYnVybgkAzAgCBQJlbAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkWgUCZWwFA25pbAMJAAACBQJmTgUCZk4EAmZPCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFhBQJkUQUCZUQFA25pbAQCZkYDCQBmAgUCZFcAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhTgUCZFcFAmVEBQNuaWwFA25pbAQCZlAEAmZRAwkAAAIFBHRoaXMFAmFOAAAFAmRXAwUCZUYJAJQKAgkBAS0BCQBkAgUCZFEFAmZRAAAJAJQKAgAACQEBLQEJAGQCBQJkUQUCZlEEAmRzCAUCZlACXzEEAmR0CAUCZlACXzIEAmZSCQECZHIDBQJkcwUCZHQAAAQCZnIIBQJmUgJfMQQCZGkIBQJmUgJfMgQCZnMJAQJkdgIFAmRxBQJkaQMJAAACBQJmcwUCZnMJAJQKAgkAzggCCQDOCAIJAM4IAgUCZGMFAmZPBQJmRgUCZnIFAmRRCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRJARFnZXRPbmVUa25SRUFET05MWQICZUQCZWwEAmZTCQECZUMFCQECYVcBBQJlRAUCZWwFAmJmBQR1bml0BQR1bml0BAJmTQgFAmZTAl8xBAJkYwgFAmZTAl8yBAJkVwgFAmZTAl8zBAJmQggFAmZTAl80BAJlRggFAmZTAl81CQCUCgIFA25pbAkAlQoDBQJmTQUCZFcFAmZCAmRJARN1bnN0YWtlQW5kR2V0T25lVGtuAwJmVAJmSgJmdgQCZngKAAJhUAkA/AcEBQJhTQIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFQAgdCb29sZWFuBQJhUAkAAgEJAKwCAgkAAwEFAmFQAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJmSwMDCQECYVIABgkAAAIFAmJlBQFuBgUCZngEAmVFCQDMCAIDAwkBASEBBQJmSwYJAQJlWgEFAmRJBgkBAmFKAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEkIcGF5bWVudHMAAAYJAQJhSgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVFBQJlRQQCZUQJAQJhVwEFAmZKBAJhYQgFAmRJBmNhbGxlcgQCYWIIBQJkSQ10cmFuc2FjdGlvbklkBAJkcQkBAmRqAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkcQUCZHEEAmZVCQD8BwQFAmJsAgd1bnN0YWtlCQDMCAIJANgEAQUCYmYJAMwIAgUCZlQFA25pbAUDbmlsAwkAAAIFAmZVBQJmVQQCZlYJAQJlQwUFAmVEBQJmVAUCYmYFAmFhBQJhYgMJAAACBQJmVgUCZlYEAmVGCAUCZlYCXzUEAmZCCAUCZlYCXzQEAmRXCAUCZlYCXzMEAmRjCAUCZlYCXzIEAmZNCAUCZlYCXzEEAmRRAwMJAGYCBQJmdgAACQBmAgUCZnYFAmZNBwkBAmFKAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmdgUDbmlsAgAFAmZNBAJmTgkA/AcEBQJhTQIEYnVybgkAzAgCBQJmVAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiZgUCZlQFA25pbAMJAAACBQJmTgUCZk4EAmZPCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkSQZjYWxsZXIFAmRRBQJlRAUDbmlsBAJmRgMJAGYCBQJkVwAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFOBQJkVwUCZUQFA25pbAUDbmlsBAJmVwQCZlEDCQAAAgUEdGhpcwUCYU4AAAUCZFcDBQJlRgkAlAoCCQEBLQEJAGQCBQJkUQUCZlEAAAkAlAoCAAAJAQEtAQkAZAIFAmRRBQJmUQQCZHMIBQJmVwJfMQQCZHQIBQJmVwJfMgQCZlgJAQJkcgMFAmRzBQJkdAAABAJmcggFAmZYAl8xBAJkaQgFAmZYAl8yBAJmcwkBAmR2AgUCZHEFAmRpAwkAAAIFAmZzBQJmcwkAlAoCCQDOCAIJAM4IAgkAzggCBQJkYwUCZk8FAmZGBQJmcgUCZFEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEkBA2dldAAEAmNOCQECZEgBBQJkSQQCZlkIBQJjTgJfMQQCY3UIBQJjTgJfMgQCZEsIBQJjTgJfMwQCY2MIBQJjTgJfNAQCY3YIBQJjTgJfNQQCZHEJAQJkagMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZHEFAmRxBAJmWgkA/AcEBQJhTQIEYnVybgkAzAgCBQJkSwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjYwUCZEsFA25pbAMJAAACBQJmWgUCZloEAmdhCQECZHIDCQEBLQEFAmZZCQEBLQEFAmN1AAAEAmZyCAUCZ2ECXzEEAmRpCAUCZ2ECXzIEAmZzCQECZHYCBQJkcQUCZGkDCQAAAgUCZnMFAmZzCQDOCAIFAmN2BQJmcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkSQEJZ2V0Tm9MZXNzAgJnYgJnYwQCY04JAQJkSAEFAmRJBAJjdAgFAmNOAl8xBAJjdQgFAmNOAl8yBAJkSwgFAmNOAl8zBAJjYwgFAmNOAl80BAJjdggFAmNOAl81AwkAZgIFAmdiBQJjdAkAAgEJAKwCAgkArAICCQCsAgICHG5vTGVzc1RoZW5BbXRBc3NldCBmYWlsZWQ6ICAJAKQDAQUCY3QCAyA8IAkApAMBBQJnYgMJAGYCBQJnYwUCY3UJAAIBCQCsAgIJAKwCAgkArAICAh1ub0xlc3NUaGVuUHJpY2VBc3NldCBmYWlsZWQ6IAkApAMBBQJjdQIDIDwgCQCkAwEFAmdjBAJkcQkBAmRqAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkcQUCZHEEAmZaCQD8BwQFAmFNAgRidXJuCQDMCAIFAmRLBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNjBQJkSwUDbmlsAwkAAAIFAmZaBQJmWgQCZ2QJAQJkcgMJAQEtAQUCY3QJAQEtAQUCY3UAAAQCZnIIBQJnZAJfMQQCZGkIBQJnZAJfMgQCZnMJAQJkdgIFAmRxBQJkaQMJAAACBQJmcwUCZnMJAM4IAgUCY3YFAmZyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRJAQ11bnN0YWtlQW5kR2V0AQJkUQQCZ2UDCQECIT0CCQCQAwEIBQJkSQhwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJnZQUCZ2UEAmJSCQECYVQABAJjZQkA2QQBCQCRAwIFAmJSBQFxBAJkcQkBAmRqAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkcQUCZHEEAmZVCQD8BwQFAmJsAgd1bnN0YWtlCQDMCAIJANgEAQUCY2UJAMwIAgUCZFEFA25pbAUDbmlsAwkAAAIFAmZVBQJmVQQCY04JAQJjYQQJANgEAQgFAmRJDXRyYW5zYWN0aW9uSWQJANgEAQUCY2UFAmRRCAUCZEkGY2FsbGVyBAJjdAgFAmNOAl8xBAJjdQgFAmNOAl8yBAJjaAkBDXBhcnNlSW50VmFsdWUBCAUCY04CXzkEAmN2CAUCY04DXzEwBAJnZgMDCQECYVIABgkAAAIFAmNoBQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJjaAYDCQAAAgUCZ2YFAmdmBAJmWgkA/AcEBQJhTQIEYnVybgkAzAgCBQJkUQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjZQUCZFEFA25pbAMJAAACBQJmWgUCZloEAmdnCQECZHIDCQEBLQEFAmN0CQEBLQEFAmN1AAAEAmZyCAUCZ2cCXzEEAmRpCAUCZ2cCXzIEAmZzCQECZHYCBQJkcQUCZGkDCQAAAgUCZnMFAmZzCQDOCAIFAmN2BQJmcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkSQETdW5zdGFrZUFuZEdldE5vTGVzcwMCZlQCZ2gCZ2MEAmZLAwkBAmFSAAYJAAACBQJiZQUBbgQCZUUJAMwIAgMJAQEhAQUCZksGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEkIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlRQUCZUUEAmRxCQECZGoDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmRxBQJkcQQCZlUJAPwHBAUCYmwCB3Vuc3Rha2UJAMwIAgkA2AQBBQJiZgkAzAgCBQJmVAUDbmlsBQNuaWwDCQAAAgUCZlUFAmZVBAJjTgkBAmNhBAkA2AQBCAUCZEkNdHJhbnNhY3Rpb25JZAkA2AQBBQJiZgUCZlQIBQJkSQZjYWxsZXIEAmN0CAUCY04CXzEEAmN1CAUCY04CXzIEAmN2CAUCY04DXzEwBAJnaQkAzAgCAwkAZwIFAmN0BQJnaAYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJnaAUDbmlsAgAJAMwIAgMJAGcCBQJjdQUCZ2MGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJnYwUDbmlsAgAFA25pbAMJAAACBQJnaQUCZ2kEAmZaCQD8BwQFAmFNAgRidXJuCQDMCAIFAmZUBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJmBQJmVAUDbmlsAwkAAAIFAmZaBQJmWgQCZ2oJAQJkcgMJAQEtAQUCY3QJAQEtAQUCY3UAAAQCZnIIBQJnagJfMQQCZGkIBQJnagJfMgQCZnMJAQJkdgIFAmRxBQJkaQMJAAACBQJmcwUCZnMJAM4IAgUCY3YFAmZyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRJAQhhY3RpdmF0ZQICZ2sCZ2wDCQECIT0CCQClCAEIBQJkSQZjYWxsZXIJAKUIAQUCYU0JAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQABQJnawkAzAgCCQELU3RyaW5nRW50cnkCCQECYWUABQJnbAUDbmlsAgdzdWNjZXNzAmRJAQpyZWZyZXNoS0xwAAQCZ20JAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCYWoAAAQCZ24DCQBnAgkAZQIFBmhlaWdodAUCZ20FAmFtBQR1bml0CQECYUoBCQC5CQIJAMwIAgkApAMBBQJhbQkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCZ24FAmduBAJkQwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYWkCATAJAQJhTAECC2ludmFsaWQga0xwBAJnbwkBAmRyAwAAAAAAAAQCZ3AIBQJnbwJfMQQCZGkIBQJnbwJfMgQCZHUDCQECIT0CBQJkQwUCZGkFAmdwCQECYUoBAhJub3RoaW5nIHRvIHJlZnJlc2gJAJQKAgUCZHUJAKYDAQUCZGkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEkBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmFUAAJkSQEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYkQJAJQKAgUDbmlsCQECYkMBBQJiRAJkSQEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCYkwCYk0CYlEEAmJaCQECYlADBQJiTAUCYk0FAmJRCQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCYloAAAkAzAgCCQCmAwEJAJEDAgUCYloAAQkAzAgCCQCmAwEJAJEDAgUCYloAAgUDbmlsAmRJARR0b1gxOFdyYXBwZXJSRUFET05MWQIBRQFGCQCUCgIFA25pbAkApgMBCQEBRAIFAUUFAUYCZEkBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAUkBSgkAlAoCBQNuaWwJAQFIAgkApwMBBQFJBQFKAmRJAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJGAmJHCQCUCgIFA25pbAkApgMBCQECYkUCCQCnAwEFAmJGCQCnAwEFAmJHAmRJASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCY2ICY3gCY3kCY3oCY0ECY0ICYWECY0MCY0QJAJQKAgUDbmlsCQECY3cJBQJjYgUCY3gFAmN5BQJjegUCY0EFAmNCBQJhYQUCY0MFAmNEAmRJASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCY2ICY2MCY2QCYWEEAmNOCQECY2EEBQJjYgUCY2MFAmNkCQERQGV4dHJOYXRpdmUoMTA2MikBBQJhYQkAlAoCBQNuaWwJAJwKCggFAmNOAl8xCAUCY04CXzIIBQJjTgJfMwgFAmNOAl80CAUCY04CXzUIBQJjTgJfNggFAmNOAl83CQCmAwEIBQJjTgJfOAgFAmNOAl85CAUCY04DXzEwAmRJAQ1zdGF0c1JFQURPTkxZAAQCYlIJAQJhVAAEAmNlCQDZBAEJAJEDAgUCYlIFAXEEAmdxCQCRAwIFAmJSBQFyBAJncgkAkQMCBQJiUgUBcwQCY0cJAJEDAgUCYlIFAXYEAmNICQCRAwIFAmJSBQF3BAJiUwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJSBQF0BAJiVAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJSBQF1BAJncwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjZQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjZQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmd0CQECYkMBBQJncQQCZ3UJAQJiQwEFAmdyBAJndgMJAAACBQJncwAACQDMCAIFAWUJAMwIAgUBZQkAzAgCBQFlBQNuaWwJAQJiUAMFAmd0BQJndQUCZ3MEAmNvAAAEAmd3CQEBSAIJAJEDAgUCZ3YAAQUBYgQCZ3gJAQFIAgkAkQMCBQJndgACBQFiBAJneQkBBXZhbHVlAQkAmggCBQJhTQkBAmF4AQkApQgBBQR0aGlzCQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZ3QJAMwIAgkApAMBBQJndQkAzAgCCQCkAwEFAmdzCQDMCAIJAKQDAQUCY28JAMwIAgkApAMBBQJndwkAzAgCCQCkAwEFAmd4CQDMCAIJAKQDAQUCZ3kFA25pbAUBagJkSQEgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkBAmN5BAJiUgkBAmFUAAQCY2UJANkEAQkAkQMCBQJiUgUBcQQCY0UJAJEDAgUCYlIFAXIEAmNmCQDZBAEFAmNFBAJjRgkAkQMCBQJiUgUBcwQCY2cJANkEAQUCY0YEAmJTCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlIFAXQEAmJUCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlIFAXUEAmNoCQCRAwIFAmJSBQFwBAJncwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjZQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjZQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmd0CQECYkMBBQJjRQQCZ3UJAQJiQwEFAmNGBAJiTgkBAUQCBQJndAUCYlMEAmJPCQEBRAIFAmd1BQJiVAQCY24DCQAAAgUCZ3MAAAUBZQkBAmJFAgUCYk8FAmJOBAJjSwkBAUQCBQJjeQUCYlMEAmNMCQC8AgMFAmNLBQJjbgUBZAQCY0EJAQFIAgUCY0wFAmJUBAJkTwkBAmN3CQIAAKDCHgUCY3kFAmNmBQJjQQUCY2cCAAYHBAJjVggFAmRPAl8xBAJneggFAmRPAl8zBAJjaggFAmRPAl80BAJjbAgFAmRPAl81BAJjaQgFAmRPAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjVgkAzAgCCQCkAwEJAQFIAgUCY24FAWIJAMwIAgkApAMBBQJjagkAzAgCCQCkAwEFAmNsCQDMCAIJAKQDAQUCY2kJAMwIAgUCY2gJAMwIAgkApAMBBQJjeQkAzAgCCQCkAwEFAmNBBQNuaWwFAWoCZEkBH2V2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkBAmNBBAJiUgkBAmFUAAQCY2UJANkEAQkAkQMCBQJiUgUBcQQCY0UJAJEDAgUCYlIFAXIEAmNmCQDZBAEFAmNFBAJjRgkAkQMCBQJiUgUBcwQCY2cJANkEAQUCY0YEAmJTCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlIFAXQEAmJUCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlIFAXUEAmNoCQCRAwIFAmJSBQFwBAJncwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjZQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjZQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmdBCQECYkMBBQJjRQQCZ0IJAQJiQwEFAmNGBAJnQwkBAUQCBQJnQQUCYlMEAmdECQEBRAIFAmdCBQJiVAQCY24DCQAAAgUCZ3MAAAUBZQkBAmJFAgUCZ0QFAmdDBAJjTAkBAUQCBQJjQQUCYlQEAmNLCQC8AgMFAmNMBQFkBQJjbgQCY3kJAQFIAgUCY0sFAmJTBAJkTwkBAmN3CQIAAKDCHgUCY3kFAmNmBQJjQQUCY2cCAAYHBAJjVggFAmRPAl8xBAJneggFAmRPAl8zBAJjaggFAmRPAl80BAJjbAgFAmRPAl81BAJjaQgFAmRPAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjVgkAzAgCCQCkAwEJAQFIAgUCY24FAWIJAMwIAgkApAMBBQJjagkAzAgCCQCkAwEFAmNsCQDMCAIJAKQDAQUCY2kJAMwIAgUCY2gJAMwIAgkApAMBBQJjeQkAzAgCCQCkAwEFAmNBBQNuaWwFAWoCZEkBE2V2YWx1YXRlR2V0UkVBRE9OTFkCAmdFAmdGBAJjTgkBAmNhBAIABQJnRQUCZ0YFBHRoaXMEAmN0CAUCY04CXzEEAmN1CAUCY04CXzIEAmNqCAUCY04CXzUEAmNsCAUCY04CXzYEAmNpCAUCY04CXzcEAmNvCAUCY04CXzgEAmNoCQENcGFyc2VJbnRWYWx1ZQEIBQJjTgJfOQkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmN0CQDMCAIJAKQDAQUCY3UJAMwIAgkApAMBBQJjagkAzAgCCQCkAwEFAmNsCQDMCAIJAKQDAQUCY2kJAMwIAgkApgMBBQJjbwkAzAgCCQCkAwEFAmNoBQNuaWwFAWoBAmdHAQJnSAAEAmdJBAJkVAkBAmVXAAMJAAECBQJkVAIKQnl0ZVZlY3RvcgQCZmEFAmRUBQJmYQMJAAECBQJkVAIEVW5pdAgFAmdHD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJkVAUCZ0cDCQABAgUCZFQCBU9yZGVyBAJkeQUCZFQEAmdKCQECYVMABAJhQwkBAmR4AQUCZHkEAmFECQD0AwMIBQJkeQlib2R5Qnl0ZXMJAJEDAggFAmR5BnByb29mcwAACAUCZHkPc2VuZGVyUHVibGljS2V5BAJhRQkA9AMDCAUCZHkJYm9keUJ5dGVzCQCRAwIIBQJkeQZwcm9vZnMAAQUCZ0oDAwMFAmFDBQJhRAcFAmFFBwYJAQJhQgMFAmFDBQJhRAUCYUUDCQABAgUCZFQCFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJlWAUCZFQEAmdLCQD2AwEJAQV2YWx1ZQEIBQJlWAZzY3JpcHQEAmdMCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYU0JAQJhegAEAmdNCQDxBwEFBHRoaXMDAwkAAAIFAmdMBQJnSwkBAiE9AgUCZ00FAmdLBwYJAPQDAwgFAmdHCWJvZHlCeXRlcwkAkQMCCAUCZ0cGcHJvb2ZzAAAFAmdJCQD0AwMIBQJnRwlib2R5Qnl0ZXMJAJEDAggFAmdHBnByb29mcwAABQJnSYeWoQs=", "chainId": 84, "height": 2411912, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Dbd6rkXddZJpmEittg1gUgGc7dPiUg9mfRKzeNbd7MRH Next: 4Pot5n1mfqfEnetusAVk3Axqsy6Yb895toUA1BYLViPR Diff:
OldNewDifferences
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
65-func G (H,I) = toInt(fraction(H, toBigInt(I), d))
65+func G (E,F) = fraction(E, d, F)
6666
6767
68-func J (H,I,K) = toInt(fraction(H, toBigInt(I), d, K))
68+func H (I,J) = toInt(fraction(I, toBigInt(J), d))
6969
7070
71-func L (M,N,O) = fraction(M, N, O)
71+func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
7272
7373
74-func P (H) = if ((0 > H))
75- then -(H)
76- else H
74+func M (N,O,P) = fraction(N, O, P)
7775
7876
79-func Q (H) = if ((e > H))
80- then -(H)
81- else H
77+func Q (I) = if ((0 > I))
78+ then -(I)
79+ else I
8280
8381
84-func R () = "%s__factoryContract"
82+func R (I) = if ((e > I))
83+ then -(I)
84+ else I
8585
8686
87-func S () = "%s__managerPublicKey"
87+func S () = "%s__factoryContract"
8888
8989
90-func T () = "%s__pendingManagerPublicKey"
90+func T () = "%s__managerPublicKey"
9191
9292
93-func U () = "%s%s__price__last"
93+func U () = "%s__pendingManagerPublicKey"
9494
9595
96-func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], j)
96+func V () = "%s%s__price__last"
9797
9898
99-func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
99+func W (X,Y) = makeString(["%s%s%d%d__price__history", toString(X), toString(Y)], j)
100100
101101
102-func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
102+func Z (aa,ab) = ((("%s%s%s__P__" + aa) + "__") + ab)
103103
104104
105-func ac () = "%s__amountAsset"
105+func ac (aa,ab) = ((("%s%s%s__G__" + aa) + "__") + ab)
106106
107107
108-func ad () = "%s__priceAsset"
108+func ad () = "%s__amountAsset"
109109
110110
111-let ae = "%s__fee"
112-
113-let af = fraction(10, b, 10000)
114-
115-let ag = valueOrElse(getInteger(this, ae), af)
116-
117-let ah = makeString(["%s", "kLp"], j)
118-
119-let ai = makeString(["%s", "kLpRefreshedHeight"], j)
120-
121-let aj = makeString(["%s", "refreshKLpDelay"], j)
122-
123-let ak = 30
124-
125-let al = valueOrElse(getInteger(this, aj), ak)
126-
127-func am () = "%s__factoryConfig"
111+func ae () = "%s__priceAsset"
128112
129113
130-func an () = "%s%s__matcher__publicKey"
114+let af = "%s__fee"
115+
116+let ag = fraction(10, b, 10000)
117+
118+let ah = valueOrElse(getInteger(this, af), ag)
119+
120+let ai = makeString(["%s", "kLp"], j)
121+
122+let aj = makeString(["%s", "kLpRefreshedHeight"], j)
123+
124+let ak = makeString(["%s", "refreshKLpDelay"], j)
125+
126+let al = 30
127+
128+let am = valueOrElse(getInteger(this, ak), al)
129+
130+func an () = "%s__factoryConfig"
131131
132132
133-func ao (ap) = (("%s%s%s__" + ap) + "__mappings__poolContract2LpAsset")
133+func ao () = "%s%s__matcher__publicKey"
134134
135135
136-func aq (ar,as) = (((("%d%d%s__" + ar) + "__") + as) + "__config")
136+func ap (aq) = (("%s%s%s__" + aq) + "__mappings__poolContract2LpAsset")
137137
138138
139-func at (au) = ("%s%s%s__mappings__baseAsset2internalId__" + au)
139+func ar (as,at) = (((("%d%d%s__" + as) + "__") + at) + "__config")
140140
141141
142-func av () = "%s__shutdown"
142+func au (av) = ("%s%s%s__mappings__baseAsset2internalId__" + av)
143143
144144
145-func aw (ax) = ("%s%s__poolWeight__" + ax)
145+func aw () = "%s__shutdown"
146146
147147
148-func ay () = "%s__allowedLpScriptHash"
148+func ax (ay) = ("%s%s__poolWeight__" + ay)
149149
150150
151-let az = "%s__feeCollectorAddress"
152-
153-func aA (aB,aC,aD) = throw(((((("order validation failed: orderValid=" + toString(aB)) + " senderValid=") + toString(aC)) + " matcherValid=") + toString(aD)))
151+func az () = "%s__allowedLpScriptHash"
154152
155153
156-func aE (aF,aG) = valueOrErrorMessage(getString(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
154+let aA = "%s__feeCollectorAddress"
155+
156+func aB (aC,aD,aE) = throw(((((("order validation failed: orderValid=" + toString(aC)) + " senderValid=") + toString(aD)) + " matcherValid=") + toString(aE)))
157157
158158
159-func aH (aF,aG) = valueOrErrorMessage(getInteger(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
159+func aF (aG,aH) = valueOrErrorMessage(getString(aG, aH), makeString(["mandatory ", toString(aG), ".", aH, " is not defined"], ""))
160160
161161
162-func aI (aJ) = throw(makeString(["lp.ride:", aJ], " "))
162+func aI (aG,aH) = valueOrErrorMessage(getInteger(aG, aH), makeString(["mandatory ", toString(aG), ".", aH, " is not defined"], ""))
163163
164164
165-func aK (aJ) = makeString(["lp.ride:", aJ], " ")
165+func aJ (aK) = throw(makeString(["lp.ride:", aK], " "))
166166
167167
168-let aL = addressFromStringValue(aE(this, R()))
168+func aL (aK) = makeString(["lp.ride:", aK], " ")
169169
170-let aM = addressFromStringValue(aE(aL, az))
171170
172-let aN = {
173- let aO = invoke(aL, "getInFeeREADONLY", [toString(this)], nil)
174- if ($isInstanceOf(aO, "Int"))
175- then aO
176- else throw(($getType(aO) + " couldn't be cast to Int"))
171+let aM = addressFromStringValue(aF(this, S()))
172+
173+let aN = addressFromStringValue(aF(aM, aA))
174+
175+let aO = {
176+ let aP = invoke(aM, "getInFeeREADONLY", [toString(this)], nil)
177+ if ($isInstanceOf(aP, "Int"))
178+ then aP
179+ else throw(($getType(aP) + " couldn't be cast to Int"))
177180 }
178181
179-let aP = {
180- let aO = invoke(aL, "getOutFeeREADONLY", [toString(this)], nil)
181- if ($isInstanceOf(aO, "Int"))
182- then aO
183- else throw(($getType(aO) + " couldn't be cast to Int"))
182+let aQ = {
183+ let aP = invoke(aM, "getOutFeeREADONLY", [toString(this)], nil)
184+ if ($isInstanceOf(aP, "Int"))
185+ then aP
186+ else throw(($getType(aP) + " couldn't be cast to Int"))
184187 }
185188
186-func aQ () = valueOrElse(getBoolean(aL, av()), false)
189+func aR () = valueOrElse(getBoolean(aM, aw()), false)
187190
188191
189-func aR () = fromBase58String(aE(aL, an()))
192+func aS () = fromBase58String(aF(aM, ao()))
190193
191194
192-func aS () = {
193- let aT = aE(this, ac())
194- let aU = aE(this, ad())
195- let as = aH(aL, at(aU))
196- let ar = aH(aL, at(aT))
197- split(aE(aL, aq(toString(ar), toString(as))), j)
195+func aT () = {
196+ let aU = aF(this, ad())
197+ let aV = aF(this, ae())
198+ let at = aI(aM, au(aV))
199+ let as = aI(aM, au(aU))
200+ split(aF(aM, ar(toString(as), toString(at))), j)
198201 }
199202
200203
201-func aV (aW) = if ((aW == i))
204+func aW (aX) = if ((aX == i))
202205 then unit
203- else fromBase58String(aW)
206+ else fromBase58String(aX)
204207
205208
206-func aX (aW) = if ((aW == unit))
209+func aY (aX) = if ((aX == unit))
207210 then i
208- else toBase58String(value(aW))
211+ else toBase58String(value(aX))
209212
210213
211-func aY (aZ) = $Tuple7(addressFromStringValue(aZ[o]), parseIntValue(aZ[p]), fromBase58String(aZ[q]), aV(aZ[r]), aV(aZ[s]), parseIntValue(aZ[t]), parseIntValue(aZ[u]))
214+func aZ (ba) = $Tuple7(addressFromStringValue(ba[o]), parseIntValue(ba[p]), fromBase58String(ba[q]), aW(ba[r]), aW(ba[s]), parseIntValue(ba[t]), parseIntValue(ba[u]))
212215
213216
214-let ba = aY(aS())
217+let bb = aZ(aT())
215218
216-let bb = ba
219+let bc = bb
217220
218-let bc = bb._1
221+let bd = bc._1
219222
220-let bd = bb._2
223+let be = bc._2
221224
222-let be = bb._3
225+let bf = bc._3
223226
224-let bf = bb._4
227+let bg = bc._4
225228
226-let bg = bb._5
229+let bh = bc._5
227230
228-let bh = bb._6
231+let bi = bc._6
229232
230-let bi = bb._7
233+let bj = bc._7
231234
232-func bj () = split(aE(aL, am()), j)
235+func bk () = split(aF(aM, an()), j)
233236
234237
235-let bk = valueOrErrorMessage(addressFromString(bj()[B]), "incorrect staking address")
238+let bl = valueOrErrorMessage(addressFromString(bk()[B]), "incorrect staking address")
236239
237-let bl = valueOrErrorMessage(addressFromString(bj()[C]), "incorrect staking address")
240+let bm = valueOrErrorMessage(addressFromString(bk()[C]), "incorrect staking address")
238241
239-func bm (bn,bo,bp,bq,br,bs,bt,bu,bv,bw) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw)], j)
242+func bn (bo,bp,bq,br,bs,bt,bu,bv,bw,bx) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx)], j)
240243
241244
242-func bx (by,bz,bA,bq,bt,bu) = makeString(["%d%d%d%d%d%d", toString(by), toString(bz), toString(bA), toString(bq), toString(bt), toString(bu)], j)
245+func by (bz,bA,bB,br,bu,bv) = makeString(["%d%d%d%d%d%d", toString(bz), toString(bA), toString(bB), toString(br), toString(bu), toString(bv)], j)
243246
244247
245-func bB (bC) = if ((bC == "WAVES"))
248+func bC (bD) = if ((bD == "WAVES"))
246249 then wavesBalance(this).available
247- else assetBalance(this, fromBase58String(bC))
250+ else assetBalance(this, fromBase58String(bD))
248251
249252
250-func bD (bE,bF) = fraction(bE, d, bF)
253+func bE (bF,bG) = fraction(bF, d, bG)
251254
252255
253-func bG (bE,bF,K) = fraction(bE, d, bF, K)
256+func bH (bF,bG,L) = fraction(bF, d, bG, L)
254257
255258
256-func bH (bI,bJ,bK,bL) = {
257- let bM = D(bK, bI)
259+func bI (bJ,bK,bL,bM) = {
258260 let bN = D(bL, bJ)
259- bD(bN, bM)
261+ let bO = D(bM, bK)
262+ bE(bO, bN)
260263 }
261264
262265
263-func bO (bK,bL,bP) = {
264- let bQ = aS()
265- let bR = parseIntValue(bQ[t])
266- let bS = parseIntValue(bQ[u])
267- let bT = bH(bR, bS, bK, bL)
268- let bF = D(bK, bR)
269- let bE = D(bL, bS)
270- let bU = D(bP, b)
271- let bV = bD(bF, bU)
272- let bW = bD(bE, bU)
273-[bT, bV, bW]
266+func bP (bL,bM,bQ) = {
267+ let bR = aT()
268+ let bS = parseIntValue(bR[t])
269+ let bT = parseIntValue(bR[u])
270+ let bU = bI(bS, bT, bL, bM)
271+ let bG = D(bL, bS)
272+ let bF = D(bM, bT)
273+ let bV = D(bQ, b)
274+ let bW = bE(bG, bV)
275+ let bX = bE(bF, bV)
276+[bU, bW, bX]
274277 }
275278
276279
277-func bX (bK,bL,bP) = {
278- let bY = bO(bK, bL, bP)
279-[G(bY[0], b), G(bY[1], b), G(bY[2], b)]
280+func bY (bL,bM,bQ) = {
281+ let bZ = bP(bL, bM, bQ)
282+[H(bZ[0], b), H(bZ[1], b), H(bZ[2], b)]
280283 }
281284
282285
283-func bZ (ca,cb,cc,Z) = {
284- let bQ = aS()
285- let cd = bQ[q]
286- let ce = bQ[r]
287- let cf = bQ[s]
288- let bI = parseIntValue(bQ[t])
289- let bJ = parseIntValue(bQ[u])
290- let cg = bQ[p]
291- let ch = valueOrErrorMessage(assetInfo(fromBase58String(cd)), (("Asset " + cd) + " doesn't exist")).quantity
292- if ((cd != cb))
286+func ca (cb,cc,cd,aa) = {
287+ let bR = aT()
288+ let ce = bR[q]
289+ let cf = bR[r]
290+ let cg = bR[s]
291+ let bJ = parseIntValue(bR[t])
292+ let bK = parseIntValue(bR[u])
293+ let ch = bR[p]
294+ let ci = valueOrErrorMessage(assetInfo(fromBase58String(ce)), (("Asset " + ce) + " doesn't exist")).quantity
295+ if ((ce != cc))
293296 then throw("Invalid asset passed.")
294297 else {
295- let ci = bB(ce)
296- let cj = D(ci, bI)
297- let ck = bB(cf)
298- let cl = D(ck, bJ)
299- let cm = bD(cl, cj)
300- let cn = G(cm, b)
301- let co = D(cc, b)
302- let cp = D(ch, b)
303- let cq = fraction(cj, co, cp)
304- let cr = fraction(cl, co, cp)
305- let cs = J(cq, bI, FLOOR)
306- let ct = J(cr, bJ, FLOOR)
307- let cu = if ((ca == ""))
298+ let cj = bC(cf)
299+ let ck = D(cj, bJ)
300+ let cl = bC(cg)
301+ let cm = D(cl, bK)
302+ let cn = bE(cm, ck)
303+ let co = H(cn, b)
304+ let cp = D(cd, b)
305+ let cq = D(ci, b)
306+ let cr = fraction(ck, cp, cq)
307+ let cs = fraction(cm, cp, cq)
308+ let ct = K(cr, bJ, FLOOR)
309+ let cu = K(cs, bK, FLOOR)
310+ let cv = if ((cb == ""))
308311 then nil
309- else [ScriptTransfer(Z, cs, if ((ce == "WAVES"))
312+ else [ScriptTransfer(aa, ct, if ((cf == "WAVES"))
310313 then unit
311- else fromBase58String(ce)), ScriptTransfer(Z, ct, if ((cf == "WAVES"))
314+ else fromBase58String(cf)), ScriptTransfer(aa, cu, if ((cg == "WAVES"))
312315 then unit
313- else fromBase58String(cf)), StringEntry(ab(toString(Z), ca), bx(cs, ct, cc, cn, height, lastBlock.timestamp)), IntegerEntry(U(), cn), IntegerEntry(V(height, lastBlock.timestamp), cn)]
314- $Tuple10(cs, ct, ce, cf, ci, ck, ch, cm, cg, cu)
316+ else fromBase58String(cg)), StringEntry(ac(toString(aa), cb), by(ct, cu, cd, co, height, lastBlock.timestamp)), IntegerEntry(V(), co), IntegerEntry(W(height, lastBlock.timestamp), co)]
317+ $Tuple10(ct, cu, cf, cg, cj, cl, ci, cn, ch, cv)
315318 }
316319 }
317320
318321
319-func cv (ca,cw,cx,cy,cz,cA,Z,cB,cC) = {
320- let bQ = aS()
321- let cd = fromBase58String(bQ[q])
322- let cD = bQ[r]
323- let cE = bQ[s]
324- let cF = bQ[v]
325- let cG = bQ[w]
326- let bR = parseIntValue(bQ[t])
327- let bS = parseIntValue(bQ[u])
328- let cg = bQ[p]
329- let ch = valueOrErrorMessage(assetInfo(cd), (("Asset " + toBase58String(cd)) + " doesn't exist")).quantity
330- let cH = toBase58String(valueOrElse(cy, fromBase58String("WAVES")))
331- let cI = toBase58String(valueOrElse(cA, fromBase58String("WAVES")))
332- if (if ((cD != cH))
322+func cw (cb,cx,cy,cz,cA,cB,aa,cC,cD) = {
323+ let bR = aT()
324+ let ce = fromBase58String(bR[q])
325+ let cE = bR[r]
326+ let cF = bR[s]
327+ let cG = bR[v]
328+ let cH = bR[w]
329+ let bS = parseIntValue(bR[t])
330+ let bT = parseIntValue(bR[u])
331+ let ch = bR[p]
332+ let ci = valueOrErrorMessage(assetInfo(ce), (("Asset " + toBase58String(ce)) + " doesn't exist")).quantity
333+ let cI = toBase58String(valueOrElse(cz, fromBase58String("WAVES")))
334+ let cJ = toBase58String(valueOrElse(cB, fromBase58String("WAVES")))
335+ if (if ((cE != cI))
333336 then true
334- else (cE != cI))
337+ else (cF != cJ))
335338 then throw("Invalid amt or price asset passed.")
336339 else {
337- let ci = if (cB)
338- then bB(cD)
339- else (bB(cD) - cx)
340- let ck = if (cB)
341- then bB(cE)
342- else (bB(cE) - cz)
343- let cJ = D(cx, bR)
344- let cK = D(cz, bS)
345- let cL = bD(cK, cJ)
346- let cj = D(ci, bR)
347- let cl = D(ck, bS)
348- let cM = if ((ch == 0))
340+ let cj = if (cC)
341+ then bC(cE)
342+ else (bC(cE) - cy)
343+ let cl = if (cC)
344+ then bC(cF)
345+ else (bC(cF) - cA)
346+ let cK = D(cy, bS)
347+ let cL = D(cA, bT)
348+ let cM = bE(cL, cK)
349+ let ck = D(cj, bS)
350+ let cm = D(cl, bT)
351+ let cN = if ((ci == 0))
349352 then {
350- let cm = e
351- let cN = e
352- let bU = pow((cJ * cK), 0, toBigInt(5), 1, 0, DOWN)
353- $Tuple5(G(bU, b), G(cJ, bR), G(cK, bS), bD((cl + cK), (cj + cJ)), cN)
353+ let cn = e
354+ let cO = e
355+ let bV = pow((cK * cL), 0, toBigInt(5), 1, 0, DOWN)
356+ $Tuple5(H(bV, b), H(cK, bS), H(cL, bT), bE((cm + cL), (ck + cK)), cO)
354357 }
355358 else {
356- let cm = bD(cl, cj)
357- let cN = fraction(Q((cm - cL)), d, cm)
358- let cO = D(cw, b)
359- if (if ((cm != e))
360- then (cN > cO)
359+ let cn = bE(cm, ck)
360+ let cO = fraction(R((cn - cM)), d, cn)
361+ let cP = D(cx, b)
362+ if (if ((cn != e))
363+ then (cO > cP)
361364 else false)
362- then throw(((("Price slippage " + toString(cN)) + " exceeded the passed limit of ") + toString(cO)))
365+ then throw(((("Price slippage " + toString(cO)) + " exceeded the passed limit of ") + toString(cP)))
363366 else {
364- let cp = D(ch, b)
365- let cP = fraction(cJ, bG(cl, cj, CEILING), d, CEILING)
366- let cQ = fraction(cK, d, bG(cl, cj, FLOOR), CEILING)
367- let cR = if ((cP > cK))
368- then $Tuple2(cQ, cK)
369- else $Tuple2(cJ, cP)
370- let cS = cR._1
371- let cT = cR._2
372- let bU = fraction(cp, cT, cl, FLOOR)
373- $Tuple5(J(bU, b, FLOOR), J(cS, bR, CEILING), J(cT, bS, CEILING), cm, cN)
367+ let cq = D(ci, b)
368+ let cQ = fraction(cK, bH(cm, ck, CEILING), d, CEILING)
369+ let cR = fraction(cL, d, bH(cm, ck, FLOOR), CEILING)
370+ let cS = if ((cQ > cL))
371+ then $Tuple2(cR, cL)
372+ else $Tuple2(cK, cQ)
373+ let cT = cS._1
374+ let cU = cS._2
375+ let bV = fraction(cq, cU, cm, FLOOR)
376+ $Tuple5(K(bV, b, FLOOR), K(cT, bS, CEILING), K(cU, bT, CEILING), cn, cO)
374377 }
375378 }
376- let cU = cM._1
377- let cV = cM._2
378- let cW = cM._3
379- let cn = G(cM._4, b)
380- let cX = G(cM._5, b)
381- if ((0 >= cU))
379+ let cV = cN._1
380+ let cW = cN._2
381+ let cX = cN._3
382+ let co = H(cN._4, b)
383+ let cY = H(cN._5, b)
384+ if ((0 >= cV))
382385 then throw("Invalid calculations. LP calculated is less than zero.")
383386 else {
384- let cY = if (!(cC))
387+ let cZ = if (!(cD))
385388 then 0
386- else cU
387- let cZ = (cx - cV)
388- let da = (cz - cW)
389- let db = [IntegerEntry(U(), cn), IntegerEntry(V(height, lastBlock.timestamp), cn), StringEntry(Y(Z, ca), bm(cV, cW, cY, cn, cw, cX, height, lastBlock.timestamp, cZ, da))]
390- $Tuple13(cU, cY, cn, ci, ck, ch, cd, cg, db, cZ, da, cy, cA)
389+ else cV
390+ let da = (cy - cW)
391+ let db = (cA - cX)
392+ let dc = [IntegerEntry(V(), co), IntegerEntry(W(height, lastBlock.timestamp), co), StringEntry(Z(aa, cb), bn(cW, cX, cZ, co, cx, cY, height, lastBlock.timestamp, da, db))]
393+ $Tuple13(cV, cZ, co, cj, cl, ci, ce, ch, dc, da, db, cz, cB)
391394 }
392395 }
393396 }
394397
395398
396-func dc (dd,de,ch) = {
397- let df = fraction(pow((dd * de), 0, toBigInt(5), 1, 18, DOWN), g, ch)
398- if ((ch == f))
399+func dd (de,df,ci) = {
400+ let dg = G(de, toBigInt(bi))
401+ let dh = G(df, toBigInt(bj))
402+ let di = fraction(pow((dg * dh), 0, toBigInt(5), 1, 18, DOWN), g, ci)
403+ if ((ci == f))
399404 then f
400- else df
405+ else di
401406 }
402407
403408
404-func dg (dh,di,dj) = {
405- let dk = (toBigInt(bB(aX(bf))) - dh)
406- let dl = (toBigInt(bB(aX(bg))) - di)
407- let dm = (toBigInt(value(assetInfo(be)).quantity) - dj)
408- let dn = dc(dk, dl, dm)
409- dn
409+func dj (dk,dl,dm) = {
410+ let dn = (toBigInt(bC(aY(bg))) - dk)
411+ let do = (toBigInt(bC(aY(bh))) - dl)
412+ let dp = (toBigInt(value(assetInfo(bf)).quantity) - dm)
413+ let dq = dd(dn, do, dp)
414+ dq
410415 }
411416
412417
413-func do (dp,dq,dj) = {
414- let dk = (bB(aX(bf)) + dp)
415- let dl = (bB(aX(bg)) + dq)
416- let dm = (value(assetInfo(be)).quantity + dj)
417- let df = dc(toBigInt(dk), toBigInt(dl), toBigInt(dm))
418- let dr = [IntegerEntry(ai, height), StringEntry(ah, toString(df))]
419- $Tuple2(dr, df)
418+func dr (ds,dt,dm) = {
419+ let dn = (bC(aY(bg)) + ds)
420+ let do = (bC(aY(bh)) + dt)
421+ let dp = (value(assetInfo(bf)).quantity + dm)
422+ let di = dd(toBigInt(dn), toBigInt(do), toBigInt(dp))
423+ let du = [IntegerEntry(aj, height), StringEntry(ai, toString(di))]
424+ $Tuple2(du, di)
420425 }
421426
422427
423-func ds (dt,df) = if ((df >= dt))
428+func dv (dw,di) = if ((di >= dw))
424429 then true
425- else aI(makeString(["updated KLp lower than current KLp", toString(dt), toString(df)], " "))
430+ else aJ(makeString(["updated KLp lower than current KLp", toString(dw), toString(di)], " "))
426431
427432
428-func du (dv) = {
429- let dw = dv.amount
430- let dx = fraction(dv.amount, dv.price, b, FLOOR)
431- let dy = if ((dv.orderType == Buy))
432- then $Tuple2(dw, -(dx))
433- else $Tuple2(-(dw), dx)
434- let dp = dy._1
435- let dq = dy._2
436- if (if (if (aQ())
433+func dx (dy) = {
434+ let dz = dy.amount
435+ let dA = fraction(dy.amount, dy.price, b, FLOOR)
436+ let dB = if ((dy.orderType == Buy))
437+ then $Tuple2(dz, -(dA))
438+ else $Tuple2(-(dz), dA)
439+ let ds = dB._1
440+ let dt = dB._2
441+ if (if (if (aR())
437442 then true
438- else (bd == m))
443+ else (be == m))
439444 then true
440- else (bd == n))
445+ else (be == n))
441446 then throw("Exchange operations disabled")
442- else if (if ((dv.assetPair.amountAsset != bf))
447+ else if (if ((dy.assetPair.amountAsset != bg))
443448 then true
444- else (dv.assetPair.priceAsset != bg))
449+ else (dy.assetPair.priceAsset != bh))
445450 then throw("Wrong order assets.")
446451 else {
447- let dz = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ah), aK("kLp is required"))), aK("invalid kLp"))
448- let dA = do(dp, dq, 0)
449- let dB = dA._1
450- let dC = dA._2
451- let dD = (dC >= dz)
452- dD
452+ let dC = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ai), aL("kLp is required"))), aL("invalid kLp"))
453+ let dD = dr(ds, dt, 0)
454+ let dE = dD._1
455+ let dF = dD._2
456+ let dG = (dF >= dC)
457+ dG
453458 }
454459 }
455460
456461
457-func dE (dF) = if ((size(dF.payments) != 1))
462+func dH (dI) = if ((size(dI.payments) != 1))
458463 then throw("exactly 1 payment is expected")
459464 else {
460- let dG = value(dF.payments[0])
461- let cb = value(dG.assetId)
462- let dH = dG.amount
463- let cM = bZ(toBase58String(dF.transactionId), toBase58String(cb), dH, dF.caller)
464- let cs = cM._1
465- let ct = cM._2
466- let cg = parseIntValue(cM._9)
467- let cu = cM._10
468- if (if (aQ())
465+ let dJ = value(dI.payments[0])
466+ let cc = value(dJ.assetId)
467+ let dK = dJ.amount
468+ let cN = ca(toBase58String(dI.transactionId), toBase58String(cc), dK, dI.caller)
469+ let ct = cN._1
470+ let cu = cN._2
471+ let ch = parseIntValue(cN._9)
472+ let cv = cN._10
473+ if (if (aR())
469474 then true
470- else (cg == n))
471- then throw(("Get operation is blocked by admin. Status = " + toString(cg)))
472- else $Tuple5(cs, ct, dH, cb, cu)
475+ else (ch == n))
476+ then throw(("Get operation is blocked by admin. Status = " + toString(ch)))
477+ else $Tuple5(ct, cu, dK, cc, cv)
473478 }
474479
475480
476-func dI (dF,cw,cC) = if ((size(dF.payments) != 2))
481+func dL (dI,cx,cD) = if ((size(dI.payments) != 2))
477482 then throw("exactly 2 payments are expected")
478483 else {
479- let dJ = value(dF.payments[0])
480- let dK = value(dF.payments[1])
481- let dL = cv(toBase58String(dF.transactionId), cw, dJ.amount, dJ.assetId, dK.amount, dK.assetId, toString(dF.caller), false, cC)
482- let cg = parseIntValue(dL._8)
483- if (if (if (aQ())
484+ let dM = value(dI.payments[0])
485+ let dN = value(dI.payments[1])
486+ let dO = cw(toBase58String(dI.transactionId), cx, dM.amount, dM.assetId, dN.amount, dN.assetId, toString(dI.caller), false, cD)
487+ let ch = parseIntValue(dO._8)
488+ if (if (if (aR())
484489 then true
485- else (cg == l))
490+ else (ch == l))
486491 then true
487- else (cg == n))
488- then throw(("Put operation is blocked by admin. Status = " + toString(cg)))
489- else dL
492+ else (ch == n))
493+ then throw(("Put operation is blocked by admin. Status = " + toString(ch)))
494+ else dO
490495 }
491496
492497
493-func dM (dN) = {
494- let dO = invoke(aL, "emit", [dN], nil)
495- if ((dO == dO))
498+func dP (dQ) = {
499+ let dR = invoke(aM, "emit", [dQ], nil)
500+ if ((dR == dR))
496501 then {
497- let dP = {
498- let dQ = dO
499- if ($isInstanceOf(dQ, "Address"))
502+ let dS = {
503+ let dT = dR
504+ if ($isInstanceOf(dT, "Address"))
500505 then {
501- let dR = dQ
502- invoke(dR, "emit", [dN], nil)
506+ let dU = dT
507+ invoke(dU, "emit", [dQ], nil)
503508 }
504509 else unit
505510 }
506- if ((dP == dP))
507- then dN
511+ if ((dS == dS))
512+ then dQ
508513 else throw("Strict value is not equal to itself.")
509514 }
510515 else throw("Strict value is not equal to itself.")
511516 }
512517
513518
514-func dS (dN,ag) = {
515- let dT = if ((ag == 0))
519+func dV (dQ,ah) = {
520+ let dW = if ((ah == 0))
516521 then 0
517- else fraction(dN, ag, b)
518- $Tuple2((dN - dT), dT)
522+ else fraction(dQ, ah, b)
523+ $Tuple2((dQ - dW), dW)
519524 }
520525
521526
522-func dU (dV,dW,Z,aa) = {
523- let dX = (aa == unit)
524- let dY = bB(aX(bf))
525- let dZ = bB(aX(bg))
526- let ea = if ((dW == bf))
527+func dX (dY,dZ,aa,ab) = {
528+ let ea = (ab == unit)
529+ let eb = bC(aY(bg))
530+ let ec = bC(aY(bh))
531+ let ed = if ((dZ == bg))
527532 then true
528- else if ((dW == bg))
533+ else if ((dZ == bh))
529534 then false
530- else aI("invalid asset")
531- let eb = if (dX)
532- then $Tuple2(dY, dZ)
533- else if (ea)
534- then $Tuple2((dY - dV), dZ)
535- else $Tuple2(dY, (dZ - dV))
536- let ec = eb._1
537- let ed = eb._2
535+ else aJ("invalid asset")
538536 let ee = if (ea)
539- then $Tuple2(dV, 0)
540- else $Tuple2(0, dV)
537+ then $Tuple2(eb, ec)
538+ else if (ed)
539+ then $Tuple2((eb - dY), ec)
540+ else $Tuple2(eb, (ec - dY))
541541 let ef = ee._1
542542 let eg = ee._2
543- let dw = dS(ef, aN)._1
544- let dx = dS(eg, aN)._1
545- let eh = dS(dV, aN)
543+ let eh = if (ed)
544+ then $Tuple2(dY, 0)
545+ else $Tuple2(0, dY)
546546 let ei = eh._1
547- let dT = eh._2
548- let ej = (ec + dw)
549- let ek = (ed + dx)
550- let el = bD(D(ek, bi), D(ej, bh))
551- let em = G(el, b)
552- let en = if (ea)
553- then ec
554- else ed
555- let eo = toBigInt(en)
556- let ep = toBigInt(valueOrErrorMessage(assetInfo(be), (("asset " + toBase58String(be)) + " doesn't exist")).quantity)
557- let eq = if ((ep > f))
547+ let ej = eh._2
548+ let dz = dV(ei, aO)._1
549+ let dA = dV(ej, aO)._1
550+ let ek = dV(dY, aO)
551+ let el = ek._1
552+ let dW = ek._2
553+ let em = (ef + dz)
554+ let en = (eg + dA)
555+ let eo = bE(D(en, bj), D(em, bi))
556+ let ep = H(eo, b)
557+ let eq = if (ed)
558+ then ef
559+ else eg
560+ let er = toBigInt(eq)
561+ let es = toBigInt(valueOrErrorMessage(assetInfo(bf), (("asset " + toBase58String(bf)) + " doesn't exist")).quantity)
562+ let et = if ((es > f))
558563 then true
559- else aI("initial deposit requires all coins")
560- if ((eq == eq))
564+ else aJ("initial deposit requires all coins")
565+ if ((et == et))
561566 then {
562- let er = toBigInt(ei)
563- let es = max([0, toInt(((ep * (sqrtBigInt((d + ((er * d) / eo)), 18, 18, DOWN) - d)) / d))])
564- let db = if (dX)
567+ let eu = toBigInt(el)
568+ let ev = max([0, toInt(((es * (sqrtBigInt((d + ((eu * d) / er)), 18, 18, DOWN) - d)) / d))])
569+ let dc = if (ea)
565570 then nil
566- else [IntegerEntry(U(), em), IntegerEntry(V(height, lastBlock.timestamp), em), StringEntry(Y(toString(value(Z)), toBase58String(value(aa))), bm(ef, eg, es, em, 0, 0, height, lastBlock.timestamp, 0, 0))]
567- let et = bD(D(ed, bi), D(ec, bh))
568- let eu = G(et, b)
569- let ev = {
570- let ew = if (ea)
571- then $Tuple2(ef, ec)
572- else $Tuple2(eg, ed)
573- let dN = ew._1
574- let ex = ew._2
575- let ey = toInt(fraction(ep, toBigInt((dN / 2)), toBigInt(ex)))
576- fraction((es - ey), b, ey)
571+ else [IntegerEntry(V(), ep), IntegerEntry(W(height, lastBlock.timestamp), ep), StringEntry(Z(toString(value(aa)), toBase58String(value(ab))), bn(ei, ej, ev, ep, 0, 0, height, lastBlock.timestamp, 0, 0))]
572+ let ew = bE(D(eg, bj), D(ef, bi))
573+ let ex = H(ew, b)
574+ let ey = {
575+ let ez = if (ed)
576+ then $Tuple2(ei, ef)
577+ else $Tuple2(ej, eg)
578+ let dQ = ez._1
579+ let eA = ez._2
580+ let eB = toInt(fraction(es, toBigInt((dQ / 2)), toBigInt(eA)))
581+ fraction((ev - eB), b, eB)
577582 }
578- $Tuple5(es, db, dT, ev, ea)
583+ $Tuple5(ev, dc, dW, ey, ed)
579584 }
580585 else throw("Strict value is not equal to itself.")
581586 }
582587
583588
584-func ez (eA,ei,dW,Z,aa) = {
585- let dX = (aa == unit)
586- let bQ = aS()
587- let bR = parseIntValue(bQ[t])
588- let bS = parseIntValue(bQ[u])
589- let eB = [if ((dW == be))
589+func eC (eD,el,dZ,aa,ab) = {
590+ let ea = (ab == unit)
591+ let bR = aT()
592+ let bS = parseIntValue(bR[t])
593+ let bT = parseIntValue(bR[u])
594+ let eE = [if ((dZ == bf))
590595 then true
591- else aI("invalid lp asset")]
592- if ((eB == eB))
596+ else aJ("invalid lp asset")]
597+ if ((eE == eE))
593598 then {
594- let eC = if ((eA == bf))
599+ let eF = if ((eD == bg))
595600 then true
596- else if ((eA == bg))
601+ else if ((eD == bh))
597602 then false
598- else aI("invalid asset")
599- let eD = if (eC)
600- then toBigInt(bB(aX(bf)))
601- else toBigInt(bB(aX(bg)))
602- let eE = if (eC)
603- then bR
604- else bS
605- let eF = bB(aX(bf))
606- let eG = bB(aX(bg))
607- let eH = if (eC)
608- then eF
609- else eG
610- let eI = toBigInt(eH)
611- let ep = toBigInt(valueOrErrorMessage(assetInfo(be), (("asset " + toBase58String(be)) + " doesn't exist")).quantity)
612- let eJ = toBigInt(ei)
613- let eK = max([0, toInt(((eD * (d - pow((d - ((eJ * d) / ep)), 18, h, 0, 18, DOWN))) / d))])
614- let eL = dS(eK, aP)
615- let eM = eL._1
616- let dT = eL._2
617- let eN = if (eC)
618- then $Tuple4(eM, 0, (eF - eK), eG)
619- else $Tuple4(0, eM, eF, (eG - eK))
620- let eO = eN._1
621- let eP = eN._2
622- let eQ = eN._3
623- let eR = eN._4
624- let el = bD(D(eR, bi), D(eQ, bh))
625- let em = G(el, b)
626- let db = if (dX)
603+ else aJ("invalid asset")
604+ let eG = if (eF)
605+ then toBigInt(bC(aY(bg)))
606+ else toBigInt(bC(aY(bh)))
607+ let eH = if (eF)
608+ then bS
609+ else bT
610+ let eI = bC(aY(bg))
611+ let eJ = bC(aY(bh))
612+ let eK = if (eF)
613+ then eI
614+ else eJ
615+ let eL = toBigInt(eK)
616+ let es = toBigInt(valueOrErrorMessage(assetInfo(bf), (("asset " + toBase58String(bf)) + " doesn't exist")).quantity)
617+ let eM = toBigInt(el)
618+ let eN = max([0, toInt(((eG * (d - pow((d - ((eM * d) / es)), 18, h, 0, 18, DOWN))) / d))])
619+ let eO = dV(eN, aQ)
620+ let eP = eO._1
621+ let dW = eO._2
622+ let eQ = if (eF)
623+ then $Tuple4(eP, 0, (eI - eN), eJ)
624+ else $Tuple4(0, eP, eI, (eJ - eN))
625+ let eR = eQ._1
626+ let eS = eQ._2
627+ let eT = eQ._3
628+ let eU = eQ._4
629+ let eo = bE(D(eU, bj), D(eT, bi))
630+ let ep = H(eo, b)
631+ let dc = if (ea)
627632 then nil
628- else [StringEntry(ab(toString(value(Z)), toBase58String(value(aa))), bx(eO, eP, ei, em, height, lastBlock.timestamp)), IntegerEntry(U(), em), IntegerEntry(V(height, lastBlock.timestamp), em)]
629- let et = bD(D(eG, bi), D(eF, bh))
630- let eu = G(et, b)
631- let ev = {
632- let eS = (toInt(fraction(eD, eJ, ep)) * 2)
633- fraction((eM - eS), b, eS)
633+ else [StringEntry(ac(toString(value(aa)), toBase58String(value(ab))), by(eR, eS, el, ep, height, lastBlock.timestamp)), IntegerEntry(V(), ep), IntegerEntry(W(height, lastBlock.timestamp), ep)]
634+ let ew = bE(D(eJ, bj), D(eI, bi))
635+ let ex = H(ew, b)
636+ let ey = {
637+ let eV = (toInt(fraction(eG, eM, es)) * 2)
638+ fraction((eP - eV), b, eV)
634639 }
635- $Tuple5(eM, db, dT, ev, eC)
640+ $Tuple5(eP, dc, dW, ey, eF)
636641 }
637642 else throw("Strict value is not equal to itself.")
638643 }
639644
640645
641-func eT () = {
642- let dQ = getString(S())
643- if ($isInstanceOf(dQ, "String"))
646+func eW () = {
647+ let dT = getString(T())
648+ if ($isInstanceOf(dT, "String"))
644649 then {
645- let eU = dQ
646- fromBase58String(eU)
650+ let eX = dT
651+ fromBase58String(eX)
647652 }
648- else if ($isInstanceOf(dQ, "Unit"))
653+ else if ($isInstanceOf(dT, "Unit"))
649654 then unit
650655 else throw("Match error")
651656 }
652657
653658
654-func eV () = {
655- let dQ = getString(T())
656- if ($isInstanceOf(dQ, "String"))
659+func eY () = {
660+ let dT = getString(U())
661+ if ($isInstanceOf(dT, "String"))
657662 then {
658- let eU = dQ
659- fromBase58String(eU)
663+ let eX = dT
664+ fromBase58String(eX)
660665 }
661- else if ($isInstanceOf(dQ, "Unit"))
666+ else if ($isInstanceOf(dT, "Unit"))
662667 then unit
663668 else throw("Match error")
664669 }
665670
666671
667-func eW (dF) = {
668- let dQ = eT()
669- if ($isInstanceOf(dQ, "ByteVector"))
672+func eZ (dI) = {
673+ let dT = eW()
674+ if ($isInstanceOf(dT, "ByteVector"))
670675 then {
671- let eX = dQ
672- (dF.callerPublicKey == eX)
676+ let fa = dT
677+ (dI.callerPublicKey == fa)
673678 }
674- else if ($isInstanceOf(dQ, "Unit"))
675- then (dF.caller == this)
679+ else if ($isInstanceOf(dT, "Unit"))
680+ then (dI.caller == this)
676681 else throw("Match error")
677682 }
678683
679684
680-func eY (dF) = {
681- let eZ = throw("Permission denied")
682- let dQ = eT()
683- if ($isInstanceOf(dQ, "ByteVector"))
685+func fb (dI) = {
686+ let fc = throw("Permission denied")
687+ let dT = eW()
688+ if ($isInstanceOf(dT, "ByteVector"))
684689 then {
685- let eX = dQ
686- if ((dF.callerPublicKey == eX))
690+ let fa = dT
691+ if ((dI.callerPublicKey == fa))
687692 then true
688- else eZ
693+ else fc
689694 }
690- else if ($isInstanceOf(dQ, "Unit"))
691- then if ((dF.caller == this))
695+ else if ($isInstanceOf(dT, "Unit"))
696+ then if ((dI.caller == this))
692697 then true
693- else eZ
698+ else fc
694699 else throw("Match error")
695700 }
696701
697702
698-@Callable(dF)
699-func setManager (fa) = {
700- let fb = eY(dF)
701- if ((fb == fb))
703+@Callable(dI)
704+func setManager (fd) = {
705+ let fe = fb(dI)
706+ if ((fe == fe))
702707 then {
703- let fc = fromBase58String(fa)
704- if ((fc == fc))
705- then [StringEntry(T(), fa)]
708+ let ff = fromBase58String(fd)
709+ if ((ff == ff))
710+ then [StringEntry(U(), fd)]
706711 else throw("Strict value is not equal to itself.")
707712 }
708713 else throw("Strict value is not equal to itself.")
710715
711716
712717
713-@Callable(dF)
718+@Callable(dI)
714719 func confirmManager () = {
715- let fd = eV()
716- let fe = if (isDefined(fd))
720+ let fg = eY()
721+ let fh = if (isDefined(fg))
717722 then true
718723 else throw("No pending manager")
719- if ((fe == fe))
724+ if ((fh == fh))
720725 then {
721- let ff = if ((dF.callerPublicKey == value(fd)))
726+ let fi = if ((dI.callerPublicKey == value(fg)))
722727 then true
723728 else throw("You are not pending manager")
724- if ((ff == ff))
725- then [StringEntry(S(), toBase58String(value(fd))), DeleteEntry(T())]
729+ if ((fi == fi))
730+ then [StringEntry(T(), toBase58String(value(fg))), DeleteEntry(U())]
726731 else throw("Strict value is not equal to itself.")
727732 }
728733 else throw("Strict value is not equal to itself.")
730735
731736
732737
733-@Callable(dF)
734-func put (cw,fg) = if ((0 > cw))
738+@Callable(dI)
739+func put (cx,fj) = if ((0 > cx))
735740 then throw("Invalid slippageTolerance passed")
736741 else {
737- let dL = dI(dF, cw, true)
738- let cY = dL._2
739- let cd = dL._7
740- let cu = dL._9
741- let cZ = dL._10
742- let da = dL._11
743- let fh = dL._12
744- let fi = dL._13
745- let dJ = toBigInt(value(dF.payments[0]).amount)
746- let dK = toBigInt(value(dF.payments[1]).amount)
747- let dn = dg(dJ, dK, toBigInt(0))
748- if ((dn == dn))
742+ let dO = dL(dI, cx, true)
743+ let cZ = dO._2
744+ let ce = dO._7
745+ let cv = dO._9
746+ let da = dO._10
747+ let db = dO._11
748+ let fk = dO._12
749+ let fl = dO._13
750+ let dM = toBigInt(value(dI.payments[0]).amount)
751+ let dN = toBigInt(value(dI.payments[1]).amount)
752+ let dq = dj(dM, dN, toBigInt(0))
753+ if ((dq == dq))
749754 then {
750- let dO = invoke(aL, "emit", [cY], nil)
751- if ((dO == dO))
755+ let dR = invoke(aM, "emit", [cZ], nil)
756+ if ((dR == dR))
752757 then {
753- let dP = {
754- let dQ = dO
755- if ($isInstanceOf(dQ, "Address"))
758+ let dS = {
759+ let dT = dR
760+ if ($isInstanceOf(dT, "Address"))
756761 then {
757- let dR = dQ
758- invoke(dR, "emit", [cY], nil)
762+ let dU = dT
763+ invoke(dU, "emit", [cZ], nil)
759764 }
760765 else unit
761766 }
762- if ((dP == dP))
767+ if ((dS == dS))
763768 then {
764- let fj = if ((cZ > 0))
765- then invoke(bl, "put", nil, [AttachedPayment(fh, cZ)])
769+ let fm = if ((da > 0))
770+ then invoke(bm, "put", nil, [AttachedPayment(fk, da)])
766771 else nil
767- if ((fj == fj))
772+ if ((fm == fm))
768773 then {
769- let fk = if ((da > 0))
770- then invoke(bl, "put", nil, [AttachedPayment(fi, da)])
774+ let fn = if ((db > 0))
775+ then invoke(bm, "put", nil, [AttachedPayment(fl, db)])
771776 else nil
772- if ((fk == fk))
777+ if ((fn == fn))
773778 then {
774- let fl = if (fg)
779+ let fo = if (fj)
775780 then {
776- let fm = invoke(bk, "stake", nil, [AttachedPayment(cd, cY)])
777- if ((fm == fm))
781+ let fp = invoke(bl, "stake", nil, [AttachedPayment(ce, cZ)])
782+ if ((fp == fp))
778783 then nil
779784 else throw("Strict value is not equal to itself.")
780785 }
781- else [ScriptTransfer(dF.caller, cY, cd)]
782- let fn = do(0, 0, 0)
783- if ((fn == fn))
786+ else [ScriptTransfer(dI.caller, cZ, ce)]
787+ let fq = dr(0, 0, 0)
788+ if ((fq == fq))
784789 then {
785- let df = fn._2
786- let fo = fn._1
787- let fp = ds(dn, df)
788- if ((fp == fp))
789- then ((cu ++ fl) ++ fo)
790+ let di = fq._2
791+ let fr = fq._1
792+ let fs = dv(dq, di)
793+ if ((fs == fs))
794+ then ((cv ++ fo) ++ fr)
790795 else throw("Strict value is not equal to itself.")
791796 }
792797 else throw("Strict value is not equal to itself.")
804809
805810
806811
807-@Callable(dF)
808-func putForFree (fq) = if ((0 > fq))
812+@Callable(dI)
813+func putForFree (ft) = if ((0 > ft))
809814 then throw("Invalid value passed")
810815 else {
811- let dL = dI(dF, fq, false)
812- let cu = dL._9
813- let dJ = toBigInt(value(dF.payments[0]).amount)
814- let dK = toBigInt(value(dF.payments[1]).amount)
815- let dn = dg(dJ, dK, toBigInt(0))
816- if ((dn == dn))
816+ let dO = dL(dI, ft, false)
817+ let cv = dO._9
818+ let dM = toBigInt(value(dI.payments[0]).amount)
819+ let dN = toBigInt(value(dI.payments[1]).amount)
820+ let dq = dj(dM, dN, toBigInt(0))
821+ if ((dq == dq))
817822 then {
818- let fr = do(0, 0, 0)
819- let fo = fr._1
820- let df = fr._2
821- let fp = ds(dn, df)
822- if ((fp == fp))
823- then (cu ++ fo)
823+ let fu = dr(0, 0, 0)
824+ let fr = fu._1
825+ let di = fu._2
826+ let fs = dv(dq, di)
827+ if ((fs == fs))
828+ then (cv ++ fr)
824829 else throw("Strict value is not equal to itself.")
825830 }
826831 else throw("Strict value is not equal to itself.")
828833
829834
830835
831-@Callable(dF)
832-func putOneTkn (fs,ft) = {
833- let fu = {
834- let aO = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
835- if ($isInstanceOf(aO, "Boolean"))
836- then aO
837- else throw(($getType(aO) + " couldn't be cast to Boolean"))
836+@Callable(dI)
837+func putOneTkn (fv,fw) = {
838+ let fx = {
839+ let aP = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
840+ if ($isInstanceOf(aP, "Boolean"))
841+ then aP
842+ else throw(($getType(aP) + " couldn't be cast to Boolean"))
838843 }
839- let fv = if (if (if (aQ())
844+ let fy = if (if (if (aR())
840845 then true
841- else (bd == l))
846+ else (be == l))
842847 then true
843- else (bd == n))
848+ else (be == n))
844849 then true
845- else fu
846- let eB = [if (if (!(fv))
850+ else fx
851+ let eE = [if (if (!(fy))
847852 then true
848- else eW(dF))
853+ else eZ(dI))
849854 then true
850- else aI("put operation is blocked by admin"), if ((size(dF.payments) == 1))
855+ else aJ("put operation is blocked by admin"), if ((size(dI.payments) == 1))
851856 then true
852- else aI("exactly 1 payment are expected")]
853- if ((eB == eB))
857+ else aJ("exactly 1 payment are expected")]
858+ if ((eE == eE))
854859 then {
855- let fw = dF.payments[0]
856- let dW = fw.assetId
857- let dV = fw.amount
858- let dn = if ((dW == bf))
859- then dg(toBigInt(dV), toBigInt(0), toBigInt(0))
860- else if ((dW == bg))
861- then dg(toBigInt(0), toBigInt(dV), toBigInt(0))
862- else aI("payment asset is not supported")
863- if ((dn == dn))
860+ let fz = dI.payments[0]
861+ let dZ = fz.assetId
862+ let dY = fz.amount
863+ let dq = if ((dZ == bg))
864+ then dj(toBigInt(dY), toBigInt(0), toBigInt(0))
865+ else if ((dZ == bh))
866+ then dj(toBigInt(0), toBigInt(dY), toBigInt(0))
867+ else aJ("payment asset is not supported")
868+ if ((dq == dq))
864869 then {
865- let Z = dF.caller
866- let aa = dF.transactionId
867- let fx = dU(dV, dW, Z, aa)
868- if ((fx == fx))
870+ let aa = dI.caller
871+ let ab = dI.transactionId
872+ let fA = dX(dY, dZ, aa, ab)
873+ if ((fA == fA))
869874 then {
870- let ea = fx._5
871- let fy = fx._4
872- let dT = fx._3
873- let db = fx._2
874- let fz = fx._1
875- let fA = if (if ((fs > 0))
876- then (fs > fz)
875+ let ed = fA._5
876+ let fB = fA._4
877+ let dW = fA._3
878+ let dc = fA._2
879+ let fC = fA._1
880+ let fD = if (if ((fv > 0))
881+ then (fv > fC)
877882 else false)
878- then aI(makeString(["amount to receive is less than ", toString(fs)], ""))
879- else fz
880- let dO = dM(fA)
881- if ((dO == dO))
883+ then aJ(makeString(["amount to receive is less than ", toString(fv)], ""))
884+ else fC
885+ let dR = dP(fD)
886+ if ((dR == dR))
882887 then {
883- let fl = if (ft)
888+ let fo = if (fw)
884889 then {
885- let fB = invoke(bk, "stake", nil, [AttachedPayment(be, fA)])
886- if ((fB == fB))
890+ let fE = invoke(bl, "stake", nil, [AttachedPayment(bf, fD)])
891+ if ((fE == fE))
887892 then nil
888893 else throw("Strict value is not equal to itself.")
889894 }
890- else [ScriptTransfer(dF.caller, fA, be)]
891- let fC = if ((dT > 0))
892- then [ScriptTransfer(aM, dT, dW)]
895+ else [ScriptTransfer(dI.caller, fD, bf)]
896+ let fF = if ((dW > 0))
897+ then [ScriptTransfer(aN, dW, dZ)]
893898 else nil
894- let fD = if ((this == aM))
899+ let fG = if ((this == aN))
895900 then $Tuple2(0, 0)
896- else if (ea)
897- then $Tuple2(-(dT), 0)
898- else $Tuple2(0, -(dT))
899- let dp = fD._1
900- let dq = fD._2
901- let fE = do(dp, dq, 0)
902- let fo = fE._1
903- let df = fE._2
904- let dz = value(getString(ah))
905- let fp = ds(dn, df)
906- if ((fp == fp))
907- then $Tuple2((((db ++ fl) ++ fC) ++ fo), fA)
901+ else if (ed)
902+ then $Tuple2(-(dW), 0)
903+ else $Tuple2(0, -(dW))
904+ let ds = fG._1
905+ let dt = fG._2
906+ let fH = dr(ds, dt, 0)
907+ let fr = fH._1
908+ let di = fH._2
909+ let dC = value(getString(ai))
910+ let fs = dv(dq, di)
911+ if ((fs == fs))
912+ then $Tuple2((((dc ++ fo) ++ fF) ++ fr), fD)
908913 else throw("Strict value is not equal to itself.")
909914 }
910915 else throw("Strict value is not equal to itself.")
918923
919924
920925
921-@Callable(dF)
922-func putOneTknREADONLY (dW,dV) = {
923- let fF = dU(dV, aV(dW), unit, unit)
924- let fz = fF._1
925- let db = fF._2
926- let dT = fF._3
927- let fy = fF._4
928- let ea = fF._5
929- $Tuple2(nil, $Tuple3(fz, dT, fy))
926+@Callable(dI)
927+func putOneTknREADONLY (dZ,dY) = {
928+ let fI = dX(dY, aW(dZ), unit, unit)
929+ let fC = fI._1
930+ let dc = fI._2
931+ let dW = fI._3
932+ let fB = fI._4
933+ let ed = fI._5
934+ $Tuple2(nil, $Tuple3(fC, dW, fB))
930935 }
931936
932937
933938
934-@Callable(dF)
935-func getOneTkn (fG,fs) = {
936- let fu = {
937- let aO = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
938- if ($isInstanceOf(aO, "Boolean"))
939- then aO
940- else throw(($getType(aO) + " couldn't be cast to Boolean"))
939+@Callable(dI)
940+func getOneTkn (fJ,fv) = {
941+ let fx = {
942+ let aP = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
943+ if ($isInstanceOf(aP, "Boolean"))
944+ then aP
945+ else throw(($getType(aP) + " couldn't be cast to Boolean"))
941946 }
942- let fH = if (if (aQ())
947+ let fK = if (if (aR())
943948 then true
944- else (bd == n))
949+ else (be == n))
945950 then true
946- else fu
947- let eB = [if (if (!(fH))
951+ else fx
952+ let eE = [if (if (!(fK))
948953 then true
949- else eW(dF))
954+ else eZ(dI))
950955 then true
951- else aI("get operation is blocked by admin"), if ((size(dF.payments) == 1))
956+ else aJ("get operation is blocked by admin"), if ((size(dI.payments) == 1))
952957 then true
953- else aI("exactly 1 payment are expected")]
954- if ((eB == eB))
958+ else aJ("exactly 1 payment are expected")]
959+ if ((eE == eE))
955960 then {
956- let eA = aV(fG)
957- let fw = dF.payments[0]
958- let dW = fw.assetId
959- let ei = fw.amount
960- let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
961- if ((dn == dn))
961+ let eD = aW(fJ)
962+ let fz = dI.payments[0]
963+ let dZ = fz.assetId
964+ let el = fz.amount
965+ let dq = dj(toBigInt(0), toBigInt(0), toBigInt(0))
966+ if ((dq == dq))
962967 then {
963- let Z = dF.caller
964- let aa = dF.transactionId
965- let fI = ez(eA, ei, dW, Z, aa)
966- if ((fI == fI))
968+ let aa = dI.caller
969+ let ab = dI.transactionId
970+ let fL = eC(eD, el, dZ, aa, ab)
971+ if ((fL == fL))
967972 then {
968- let eC = fI._5
969- let fy = fI._4
970- let dT = fI._3
971- let db = fI._2
972- let fJ = fI._1
973- let dN = if (if ((fs > 0))
974- then (fs > fJ)
973+ let eF = fL._5
974+ let fB = fL._4
975+ let dW = fL._3
976+ let dc = fL._2
977+ let fM = fL._1
978+ let dQ = if (if ((fv > 0))
979+ then (fv > fM)
975980 else false)
976- then aI(makeString(["amount to receive is less than ", toString(fs)], ""))
977- else fJ
978- let fK = invoke(aL, "burn", [ei], [AttachedPayment(dW, ei)])
979- if ((fK == fK))
981+ then aJ(makeString(["amount to receive is less than ", toString(fv)], ""))
982+ else fM
983+ let fN = invoke(aM, "burn", [el], [AttachedPayment(dZ, el)])
984+ if ((fN == fN))
980985 then {
981- let fL = [ScriptTransfer(Z, dN, eA)]
982- let fC = if ((dT > 0))
983- then [ScriptTransfer(aM, dT, eA)]
986+ let fO = [ScriptTransfer(aa, dQ, eD)]
987+ let fF = if ((dW > 0))
988+ then [ScriptTransfer(aN, dW, eD)]
984989 else nil
985- let fM = {
986- let fN = if ((this == aM))
990+ let fP = {
991+ let fQ = if ((this == aN))
987992 then 0
988- else dT
989- if (eC)
990- then $Tuple2(-((dN + fN)), 0)
991- else $Tuple2(0, -((dN + fN)))
993+ else dW
994+ if (eF)
995+ then $Tuple2(-((dQ + fQ)), 0)
996+ else $Tuple2(0, -((dQ + fQ)))
992997 }
993- let dp = fM._1
994- let dq = fM._2
995- let fO = do(dp, dq, 0)
996- let fo = fO._1
997- let df = fO._2
998- let fp = ds(dn, df)
999- if ((fp == fp))
1000- then $Tuple2((((db ++ fL) ++ fC) ++ fo), dN)
998+ let ds = fP._1
999+ let dt = fP._2
1000+ let fR = dr(ds, dt, 0)
1001+ let fr = fR._1
1002+ let di = fR._2
1003+ let fs = dv(dq, di)
1004+ if ((fs == fs))
1005+ then $Tuple2((((dc ++ fO) ++ fF) ++ fr), dQ)
10011006 else throw("Strict value is not equal to itself.")
10021007 }
10031008 else throw("Strict value is not equal to itself.")
10111016
10121017
10131018
1014-@Callable(dF)
1015-func getOneTknREADONLY (eA,ei) = {
1016- let fP = ez(aV(eA), ei, be, unit, unit)
1017- let fJ = fP._1
1018- let db = fP._2
1019- let dT = fP._3
1020- let fy = fP._4
1021- let eC = fP._5
1022- $Tuple2(nil, $Tuple3(fJ, dT, fy))
1019+@Callable(dI)
1020+func getOneTknREADONLY (eD,el) = {
1021+ let fS = eC(aW(eD), el, bf, unit, unit)
1022+ let fM = fS._1
1023+ let dc = fS._2
1024+ let dW = fS._3
1025+ let fB = fS._4
1026+ let eF = fS._5
1027+ $Tuple2(nil, $Tuple3(fM, dW, fB))
10231028 }
10241029
10251030
10261031
1027-@Callable(dF)
1028-func unstakeAndGetOneTkn (fQ,fG,fs) = {
1029- let fu = {
1030- let aO = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1031- if ($isInstanceOf(aO, "Boolean"))
1032- then aO
1033- else throw(($getType(aO) + " couldn't be cast to Boolean"))
1032+@Callable(dI)
1033+func unstakeAndGetOneTkn (fT,fJ,fv) = {
1034+ let fx = {
1035+ let aP = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1036+ if ($isInstanceOf(aP, "Boolean"))
1037+ then aP
1038+ else throw(($getType(aP) + " couldn't be cast to Boolean"))
10341039 }
1035- let fH = if (if (aQ())
1040+ let fK = if (if (aR())
10361041 then true
1037- else (bd == n))
1042+ else (be == n))
10381043 then true
1039- else fu
1040- let eB = [if (if (!(fH))
1044+ else fx
1045+ let eE = [if (if (!(fK))
10411046 then true
1042- else eW(dF))
1047+ else eZ(dI))
10431048 then true
1044- else aI("get operation is blocked by admin"), if ((size(dF.payments) == 0))
1049+ else aJ("get operation is blocked by admin"), if ((size(dI.payments) == 0))
10451050 then true
1046- else aI("no payments are expected")]
1047- if ((eB == eB))
1051+ else aJ("no payments are expected")]
1052+ if ((eE == eE))
10481053 then {
1049- let eA = aV(fG)
1050- let Z = dF.caller
1051- let aa = dF.transactionId
1052- let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
1053- if ((dn == dn))
1054+ let eD = aW(fJ)
1055+ let aa = dI.caller
1056+ let ab = dI.transactionId
1057+ let dq = dj(toBigInt(0), toBigInt(0), toBigInt(0))
1058+ if ((dq == dq))
10541059 then {
1055- let fR = invoke(bk, "unstake", [toBase58String(be), fQ], nil)
1056- if ((fR == fR))
1060+ let fU = invoke(bl, "unstake", [toBase58String(bf), fT], nil)
1061+ if ((fU == fU))
10571062 then {
1058- let fS = ez(eA, fQ, be, Z, aa)
1059- if ((fS == fS))
1063+ let fV = eC(eD, fT, bf, aa, ab)
1064+ if ((fV == fV))
10601065 then {
1061- let eC = fS._5
1062- let fy = fS._4
1063- let dT = fS._3
1064- let db = fS._2
1065- let fJ = fS._1
1066- let dN = if (if ((fs > 0))
1067- then (fs > fJ)
1066+ let eF = fV._5
1067+ let fB = fV._4
1068+ let dW = fV._3
1069+ let dc = fV._2
1070+ let fM = fV._1
1071+ let dQ = if (if ((fv > 0))
1072+ then (fv > fM)
10681073 else false)
1069- then aI(makeString(["amount to receive is less than ", toString(fs)], ""))
1070- else fJ
1071- let fK = invoke(aL, "burn", [fQ], [AttachedPayment(be, fQ)])
1072- if ((fK == fK))
1074+ then aJ(makeString(["amount to receive is less than ", toString(fv)], ""))
1075+ else fM
1076+ let fN = invoke(aM, "burn", [fT], [AttachedPayment(bf, fT)])
1077+ if ((fN == fN))
10731078 then {
1074- let fL = [ScriptTransfer(dF.caller, dN, eA)]
1075- let fC = if ((dT > 0))
1076- then [ScriptTransfer(aM, dT, eA)]
1079+ let fO = [ScriptTransfer(dI.caller, dQ, eD)]
1080+ let fF = if ((dW > 0))
1081+ then [ScriptTransfer(aN, dW, eD)]
10771082 else nil
1078- let fT = {
1079- let fN = if ((this == aM))
1083+ let fW = {
1084+ let fQ = if ((this == aN))
10801085 then 0
1081- else dT
1082- if (eC)
1083- then $Tuple2(-((dN + fN)), 0)
1084- else $Tuple2(0, -((dN + fN)))
1086+ else dW
1087+ if (eF)
1088+ then $Tuple2(-((dQ + fQ)), 0)
1089+ else $Tuple2(0, -((dQ + fQ)))
10851090 }
1086- let dp = fT._1
1087- let dq = fT._2
1088- let fU = do(dp, dq, 0)
1089- let fo = fU._1
1090- let df = fU._2
1091- let fp = ds(dn, df)
1092- if ((fp == fp))
1093- then $Tuple2((((db ++ fL) ++ fC) ++ fo), dN)
1091+ let ds = fW._1
1092+ let dt = fW._2
1093+ let fX = dr(ds, dt, 0)
1094+ let fr = fX._1
1095+ let di = fX._2
1096+ let fs = dv(dq, di)
1097+ if ((fs == fs))
1098+ then $Tuple2((((dc ++ fO) ++ fF) ++ fr), dQ)
10941099 else throw("Strict value is not equal to itself.")
10951100 }
10961101 else throw("Strict value is not equal to itself.")
11061111
11071112
11081113
1109-@Callable(dF)
1114+@Callable(dI)
11101115 func get () = {
1111- let cM = dE(dF)
1112- let fV = cM._1
1113- let ct = cM._2
1114- let dH = cM._3
1115- let cb = cM._4
1116- let cu = cM._5
1117- let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
1118- if ((dn == dn))
1116+ let cN = dH(dI)
1117+ let fY = cN._1
1118+ let cu = cN._2
1119+ let dK = cN._3
1120+ let cc = cN._4
1121+ let cv = cN._5
1122+ let dq = dj(toBigInt(0), toBigInt(0), toBigInt(0))
1123+ if ((dq == dq))
11191124 then {
1120- let fW = invoke(aL, "burn", [dH], [AttachedPayment(cb, dH)])
1121- if ((fW == fW))
1125+ let fZ = invoke(aM, "burn", [dK], [AttachedPayment(cc, dK)])
1126+ if ((fZ == fZ))
11221127 then {
1123- let fX = do(-(fV), -(ct), 0)
1124- let fo = fX._1
1125- let df = fX._2
1126- let fp = ds(dn, df)
1127- if ((fp == fp))
1128- then (cu ++ fo)
1128+ let ga = dr(-(fY), -(cu), 0)
1129+ let fr = ga._1
1130+ let di = ga._2
1131+ let fs = dv(dq, di)
1132+ if ((fs == fs))
1133+ then (cv ++ fr)
11291134 else throw("Strict value is not equal to itself.")
11301135 }
11311136 else throw("Strict value is not equal to itself.")
11351140
11361141
11371142
1138-@Callable(dF)
1139-func getNoLess (fY,fZ) = {
1140- let cM = dE(dF)
1141- let cs = cM._1
1142- let ct = cM._2
1143- let dH = cM._3
1144- let cb = cM._4
1145- let cu = cM._5
1146- if ((fY > cs))
1147- then throw(((("noLessThenAmtAsset failed: " + toString(cs)) + " < ") + toString(fY)))
1148- else if ((fZ > ct))
1149- then throw(((("noLessThenPriceAsset failed: " + toString(ct)) + " < ") + toString(fZ)))
1143+@Callable(dI)
1144+func getNoLess (gb,gc) = {
1145+ let cN = dH(dI)
1146+ let ct = cN._1
1147+ let cu = cN._2
1148+ let dK = cN._3
1149+ let cc = cN._4
1150+ let cv = cN._5
1151+ if ((gb > ct))
1152+ then throw(((("noLessThenAmtAsset failed: " + toString(ct)) + " < ") + toString(gb)))
1153+ else if ((gc > cu))
1154+ then throw(((("noLessThenPriceAsset failed: " + toString(cu)) + " < ") + toString(gc)))
11501155 else {
1151- let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
1152- if ((dn == dn))
1156+ let dq = dj(toBigInt(0), toBigInt(0), toBigInt(0))
1157+ if ((dq == dq))
11531158 then {
1154- let fW = invoke(aL, "burn", [dH], [AttachedPayment(cb, dH)])
1155- if ((fW == fW))
1159+ let fZ = invoke(aM, "burn", [dK], [AttachedPayment(cc, dK)])
1160+ if ((fZ == fZ))
11561161 then {
1157- let ga = do(-(cs), -(ct), 0)
1158- let fo = ga._1
1159- let df = ga._2
1160- let fp = ds(dn, df)
1161- if ((fp == fp))
1162- then (cu ++ fo)
1162+ let gd = dr(-(ct), -(cu), 0)
1163+ let fr = gd._1
1164+ let di = gd._2
1165+ let fs = dv(dq, di)
1166+ if ((fs == fs))
1167+ then (cv ++ fr)
11631168 else throw("Strict value is not equal to itself.")
11641169 }
11651170 else throw("Strict value is not equal to itself.")
11701175
11711176
11721177
1173-@Callable(dF)
1174-func unstakeAndGet (dN) = {
1175- let gb = if ((size(dF.payments) != 0))
1178+@Callable(dI)
1179+func unstakeAndGet (dQ) = {
1180+ let ge = if ((size(dI.payments) != 0))
11761181 then throw("No payments are expected")
11771182 else true
1178- if ((gb == gb))
1183+ if ((ge == ge))
11791184 then {
1180- let bQ = aS()
1181- let cd = fromBase58String(bQ[q])
1182- let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
1183- if ((dn == dn))
1185+ let bR = aT()
1186+ let ce = fromBase58String(bR[q])
1187+ let dq = dj(toBigInt(0), toBigInt(0), toBigInt(0))
1188+ if ((dq == dq))
11841189 then {
1185- let fR = invoke(bk, "unstake", [toBase58String(cd), dN], nil)
1186- if ((fR == fR))
1190+ let fU = invoke(bl, "unstake", [toBase58String(ce), dQ], nil)
1191+ if ((fU == fU))
11871192 then {
1188- let cM = bZ(toBase58String(dF.transactionId), toBase58String(cd), dN, dF.caller)
1189- let cs = cM._1
1190- let ct = cM._2
1191- let cg = parseIntValue(cM._9)
1192- let cu = cM._10
1193- let gc = if (if (aQ())
1193+ let cN = ca(toBase58String(dI.transactionId), toBase58String(ce), dQ, dI.caller)
1194+ let ct = cN._1
1195+ let cu = cN._2
1196+ let ch = parseIntValue(cN._9)
1197+ let cv = cN._10
1198+ let gf = if (if (aR())
11941199 then true
1195- else (cg == n))
1196- then throw(("Get operation is blocked by admin. Status = " + toString(cg)))
1200+ else (ch == n))
1201+ then throw(("Get operation is blocked by admin. Status = " + toString(ch)))
11971202 else true
1198- if ((gc == gc))
1203+ if ((gf == gf))
11991204 then {
1200- let fW = invoke(aL, "burn", [dN], [AttachedPayment(cd, dN)])
1201- if ((fW == fW))
1205+ let fZ = invoke(aM, "burn", [dQ], [AttachedPayment(ce, dQ)])
1206+ if ((fZ == fZ))
12021207 then {
1203- let gd = do(-(cs), -(ct), 0)
1204- let fo = gd._1
1205- let df = gd._2
1206- let fp = ds(dn, df)
1207- if ((fp == fp))
1208- then (cu ++ fo)
1208+ let gg = dr(-(ct), -(cu), 0)
1209+ let fr = gg._1
1210+ let di = gg._2
1211+ let fs = dv(dq, di)
1212+ if ((fs == fs))
1213+ then (cv ++ fr)
12091214 else throw("Strict value is not equal to itself.")
12101215 }
12111216 else throw("Strict value is not equal to itself.")
12211226
12221227
12231228
1224-@Callable(dF)
1225-func unstakeAndGetNoLess (fQ,ge,fZ) = {
1226- let fH = if (aQ())
1229+@Callable(dI)
1230+func unstakeAndGetNoLess (fT,gh,gc) = {
1231+ let fK = if (aR())
12271232 then true
1228- else (bd == n)
1229- let eB = [if (!(fH))
1233+ else (be == n)
1234+ let eE = [if (!(fK))
12301235 then true
1231- else throw("get operation is blocked by admin"), if ((size(dF.payments) == 0))
1236+ else throw("get operation is blocked by admin"), if ((size(dI.payments) == 0))
12321237 then true
12331238 else throw("no payments are expected")]
1234- if ((eB == eB))
1239+ if ((eE == eE))
12351240 then {
1236- let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
1237- if ((dn == dn))
1241+ let dq = dj(toBigInt(0), toBigInt(0), toBigInt(0))
1242+ if ((dq == dq))
12381243 then {
1239- let fR = invoke(bk, "unstake", [toBase58String(be), fQ], nil)
1240- if ((fR == fR))
1244+ let fU = invoke(bl, "unstake", [toBase58String(bf), fT], nil)
1245+ if ((fU == fU))
12411246 then {
1242- let cM = bZ(toBase58String(dF.transactionId), toBase58String(be), fQ, dF.caller)
1243- let cs = cM._1
1244- let ct = cM._2
1245- let cu = cM._10
1246- let gf = [if ((cs >= ge))
1247+ let cN = ca(toBase58String(dI.transactionId), toBase58String(bf), fT, dI.caller)
1248+ let ct = cN._1
1249+ let cu = cN._2
1250+ let cv = cN._10
1251+ let gi = [if ((ct >= gh))
12471252 then true
1248- else throw(makeString(["amount asset amount to receive is less than ", toString(ge)], "")), if ((ct >= fZ))
1253+ else throw(makeString(["amount asset amount to receive is less than ", toString(gh)], "")), if ((cu >= gc))
12491254 then true
1250- else throw(makeString(["price asset amount to receive is less than ", toString(fZ)], ""))]
1251- if ((gf == gf))
1255+ else throw(makeString(["price asset amount to receive is less than ", toString(gc)], ""))]
1256+ if ((gi == gi))
12521257 then {
1253- let fW = invoke(aL, "burn", [fQ], [AttachedPayment(be, fQ)])
1254- if ((fW == fW))
1258+ let fZ = invoke(aM, "burn", [fT], [AttachedPayment(bf, fT)])
1259+ if ((fZ == fZ))
12551260 then {
1256- let gg = do(-(cs), -(ct), 0)
1257- let fo = gg._1
1258- let df = gg._2
1259- let fp = ds(dn, df)
1260- if ((fp == fp))
1261- then (cu ++ fo)
1261+ let gj = dr(-(ct), -(cu), 0)
1262+ let fr = gj._1
1263+ let di = gj._2
1264+ let fs = dv(dq, di)
1265+ if ((fs == fs))
1266+ then (cv ++ fr)
12621267 else throw("Strict value is not equal to itself.")
12631268 }
12641269 else throw("Strict value is not equal to itself.")
12741279
12751280
12761281
1277-@Callable(dF)
1278-func activate (gh,gi) = if ((toString(dF.caller) != toString(aL)))
1282+@Callable(dI)
1283+func activate (gk,gl) = if ((toString(dI.caller) != toString(aM)))
12791284 then throw("permissions denied")
1280- else $Tuple2([StringEntry(ac(), gh), StringEntry(ad(), gi)], "success")
1285+ else $Tuple2([StringEntry(ad(), gk), StringEntry(ae(), gl)], "success")
12811286
12821287
12831288
1284-@Callable(dF)
1289+@Callable(dI)
12851290 func refreshKLp () = {
1286- let gj = valueOrElse(getInteger(ai), 0)
1287- let gk = if (((height - gj) >= al))
1291+ let gm = valueOrElse(getInteger(aj), 0)
1292+ let gn = if (((height - gm) >= am))
12881293 then unit
1289- else aI(makeString([toString(al), " blocks have not passed since the previous call"], ""))
1290- if ((gk == gk))
1294+ else aJ(makeString([toString(am), " blocks have not passed since the previous call"], ""))
1295+ if ((gn == gn))
12911296 then {
1292- let dz = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ah), "0")), aK("invalid kLp"))
1293- let gl = do(0, 0, 0)
1294- let gm = gl._1
1295- let df = gl._2
1296- let dr = if ((dz != df))
1297- then gm
1298- else aI("nothing to refresh")
1299- $Tuple2(dr, toString(df))
1297+ let dC = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ai), "0")), aL("invalid kLp"))
1298+ let go = dr(0, 0, 0)
1299+ let gp = go._1
1300+ let di = go._2
1301+ let du = if ((dC != di))
1302+ then gp
1303+ else aJ("nothing to refresh")
1304+ $Tuple2(du, toString(di))
13001305 }
13011306 else throw("Strict value is not equal to itself.")
13021307 }
13031308
13041309
13051310
1306-@Callable(dF)
1307-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aS())
1311+@Callable(dI)
1312+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aT())
13081313
13091314
13101315
1311-@Callable(dF)
1312-func getAccBalanceWrapperREADONLY (bC) = $Tuple2(nil, bB(bC))
1316+@Callable(dI)
1317+func getAccBalanceWrapperREADONLY (bD) = $Tuple2(nil, bC(bD))
13131318
13141319
13151320
1316-@Callable(dF)
1317-func calcPricesWrapperREADONLY (bK,bL,bP) = {
1318- let bY = bO(bK, bL, bP)
1319- $Tuple2(nil, [toString(bY[0]), toString(bY[1]), toString(bY[2])])
1321+@Callable(dI)
1322+func calcPricesWrapperREADONLY (bL,bM,bQ) = {
1323+ let bZ = bP(bL, bM, bQ)
1324+ $Tuple2(nil, [toString(bZ[0]), toString(bZ[1]), toString(bZ[2])])
13201325 }
13211326
13221327
13231328
1324-@Callable(dF)
1329+@Callable(dI)
13251330 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
13261331
13271332
13281333
1329-@Callable(dF)
1330-func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
1334+@Callable(dI)
1335+func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
13311336
13321337
13331338
1334-@Callable(dF)
1335-func calcPriceBigIntWrapperREADONLY (bE,bF) = $Tuple2(nil, toString(bD(parseBigIntValue(bE), parseBigIntValue(bF))))
1339+@Callable(dI)
1340+func calcPriceBigIntWrapperREADONLY (bF,bG) = $Tuple2(nil, toString(bE(parseBigIntValue(bF), parseBigIntValue(bG))))
13361341
13371342
13381343
1339-@Callable(dF)
1340-func estimatePutOperationWrapperREADONLY (ca,cw,cx,cy,cz,cA,Z,cB,cC) = $Tuple2(nil, cv(ca, cw, cx, cy, cz, cA, Z, cB, cC))
1344+@Callable(dI)
1345+func estimatePutOperationWrapperREADONLY (cb,cx,cy,cz,cA,cB,aa,cC,cD) = $Tuple2(nil, cw(cb, cx, cy, cz, cA, cB, aa, cC, cD))
13411346
13421347
13431348
1344-@Callable(dF)
1345-func estimateGetOperationWrapperREADONLY (ca,cb,cc,Z) = {
1346- let cM = bZ(ca, cb, cc, addressFromStringValue(Z))
1347- $Tuple2(nil, $Tuple10(cM._1, cM._2, cM._3, cM._4, cM._5, cM._6, cM._7, toString(cM._8), cM._9, cM._10))
1349+@Callable(dI)
1350+func estimateGetOperationWrapperREADONLY (cb,cc,cd,aa) = {
1351+ let cN = ca(cb, cc, cd, addressFromStringValue(aa))
1352+ $Tuple2(nil, $Tuple10(cN._1, cN._2, cN._3, cN._4, cN._5, cN._6, cN._7, toString(cN._8), cN._9, cN._10))
13481353 }
13491354
13501355
13511356
1352-@Callable(dF)
1357+@Callable(dI)
13531358 func statsREADONLY () = {
1354- let bQ = aS()
1355- let cd = fromBase58String(bQ[q])
1356- let gn = bQ[r]
1357- let go = bQ[s]
1358- let cF = bQ[v]
1359- let cG = bQ[w]
1360- let bR = parseIntValue(bQ[t])
1361- let bS = parseIntValue(bQ[u])
1362- let gp = valueOrErrorMessage(assetInfo(cd), (("Asset " + toBase58String(cd)) + " doesn't exist")).quantity
1363- let gq = bB(gn)
1364- let gr = bB(go)
1365- let gs = if ((gp == 0))
1359+ let bR = aT()
1360+ let ce = fromBase58String(bR[q])
1361+ let gq = bR[r]
1362+ let gr = bR[s]
1363+ let cG = bR[v]
1364+ let cH = bR[w]
1365+ let bS = parseIntValue(bR[t])
1366+ let bT = parseIntValue(bR[u])
1367+ let gs = valueOrErrorMessage(assetInfo(ce), (("Asset " + toBase58String(ce)) + " doesn't exist")).quantity
1368+ let gt = bC(gq)
1369+ let gu = bC(gr)
1370+ let gv = if ((gs == 0))
13661371 then [e, e, e]
1367- else bO(gq, gr, gp)
1368- let cn = 0
1369- let gt = G(gs[1], b)
1370- let gu = G(gs[2], b)
1371- let gv = value(getInteger(aL, aw(toString(this))))
1372- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gq), toString(gr), toString(gp), toString(cn), toString(gt), toString(gu), toString(gv)], j))
1372+ else bP(gt, gu, gs)
1373+ let co = 0
1374+ let gw = H(gv[1], b)
1375+ let gx = H(gv[2], b)
1376+ let gy = value(getInteger(aM, ax(toString(this))))
1377+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gt), toString(gu), toString(gs), toString(co), toString(gw), toString(gx), toString(gy)], j))
13731378 }
13741379
13751380
13761381
1377-@Callable(dF)
1378-func evaluatePutByAmountAssetREADONLY (cx) = {
1379- let bQ = aS()
1380- let cd = fromBase58String(bQ[q])
1381- let cD = bQ[r]
1382- let ce = fromBase58String(cD)
1383- let cE = bQ[s]
1382+@Callable(dI)
1383+func evaluatePutByAmountAssetREADONLY (cy) = {
1384+ let bR = aT()
1385+ let ce = fromBase58String(bR[q])
1386+ let cE = bR[r]
13841387 let cf = fromBase58String(cE)
1385- let bR = parseIntValue(bQ[t])
1386- let bS = parseIntValue(bQ[u])
1387- let cg = bQ[p]
1388- let gp = valueOrErrorMessage(assetInfo(cd), (("Asset " + toBase58String(cd)) + " doesn't exist")).quantity
1389- let gq = bB(cD)
1390- let gr = bB(cE)
1391- let bM = D(gq, bR)
1392- let bN = D(gr, bS)
1393- let cm = if ((gp == 0))
1388+ let cF = bR[s]
1389+ let cg = fromBase58String(cF)
1390+ let bS = parseIntValue(bR[t])
1391+ let bT = parseIntValue(bR[u])
1392+ let ch = bR[p]
1393+ let gs = valueOrErrorMessage(assetInfo(ce), (("Asset " + toBase58String(ce)) + " doesn't exist")).quantity
1394+ let gt = bC(cE)
1395+ let gu = bC(cF)
1396+ let bN = D(gt, bS)
1397+ let bO = D(gu, bT)
1398+ let cn = if ((gs == 0))
13941399 then e
1395- else bD(bN, bM)
1396- let cJ = D(cx, bR)
1397- let cK = fraction(cJ, cm, d)
1398- let cz = G(cK, bS)
1399- let dL = cv("", 500000, cx, ce, cz, cf, "", true, false)
1400- let cU = dL._1
1401- let gw = dL._3
1402- let ci = dL._4
1403- let ck = dL._5
1404- let ch = dL._6
1405- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cU), toString(G(cm, b)), toString(ci), toString(ck), toString(ch), cg, toString(cx), toString(cz)], j))
1400+ else bE(bO, bN)
1401+ let cK = D(cy, bS)
1402+ let cL = fraction(cK, cn, d)
1403+ let cA = H(cL, bT)
1404+ let dO = cw("", 500000, cy, cf, cA, cg, "", true, false)
1405+ let cV = dO._1
1406+ let gz = dO._3
1407+ let cj = dO._4
1408+ let cl = dO._5
1409+ let ci = dO._6
1410+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cV), toString(H(cn, b)), toString(cj), toString(cl), toString(ci), ch, toString(cy), toString(cA)], j))
14061411 }
14071412
14081413
14091414
1410-@Callable(dF)
1411-func evaluatePutByPriceAssetREADONLY (cz) = {
1412- let bQ = aS()
1413- let cd = fromBase58String(bQ[q])
1414- let cD = bQ[r]
1415- let ce = fromBase58String(cD)
1416- let cE = bQ[s]
1415+@Callable(dI)
1416+func evaluatePutByPriceAssetREADONLY (cA) = {
1417+ let bR = aT()
1418+ let ce = fromBase58String(bR[q])
1419+ let cE = bR[r]
14171420 let cf = fromBase58String(cE)
1418- let bR = parseIntValue(bQ[t])
1419- let bS = parseIntValue(bQ[u])
1420- let cg = bQ[p]
1421- let gp = valueOrErrorMessage(assetInfo(cd), (("Asset " + toBase58String(cd)) + " doesn't exist")).quantity
1422- let gx = bB(cD)
1423- let gy = bB(cE)
1424- let gz = D(gx, bR)
1425- let gA = D(gy, bS)
1426- let cm = if ((gp == 0))
1421+ let cF = bR[s]
1422+ let cg = fromBase58String(cF)
1423+ let bS = parseIntValue(bR[t])
1424+ let bT = parseIntValue(bR[u])
1425+ let ch = bR[p]
1426+ let gs = valueOrErrorMessage(assetInfo(ce), (("Asset " + toBase58String(ce)) + " doesn't exist")).quantity
1427+ let gA = bC(cE)
1428+ let gB = bC(cF)
1429+ let gC = D(gA, bS)
1430+ let gD = D(gB, bT)
1431+ let cn = if ((gs == 0))
14271432 then e
1428- else bD(gA, gz)
1429- let cK = D(cz, bS)
1430- let cJ = fraction(cK, d, cm)
1431- let cx = G(cJ, bR)
1432- let dL = cv("", 500000, cx, ce, cz, cf, "", true, false)
1433- let cU = dL._1
1434- let gw = dL._3
1435- let ci = dL._4
1436- let ck = dL._5
1437- let ch = dL._6
1438- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cU), toString(G(cm, b)), toString(ci), toString(ck), toString(ch), cg, toString(cx), toString(cz)], j))
1433+ else bE(gD, gC)
1434+ let cL = D(cA, bT)
1435+ let cK = fraction(cL, d, cn)
1436+ let cy = H(cK, bS)
1437+ let dO = cw("", 500000, cy, cf, cA, cg, "", true, false)
1438+ let cV = dO._1
1439+ let gz = dO._3
1440+ let cj = dO._4
1441+ let cl = dO._5
1442+ let ci = dO._6
1443+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cV), toString(H(cn, b)), toString(cj), toString(cl), toString(ci), ch, toString(cy), toString(cA)], j))
14391444 }
14401445
14411446
14421447
1443-@Callable(dF)
1444-func evaluateGetREADONLY (gB,gC) = {
1445- let cM = bZ("", gB, gC, this)
1446- let cs = cM._1
1447- let ct = cM._2
1448- let ci = cM._5
1449- let ck = cM._6
1450- let ch = cM._7
1451- let cn = cM._8
1452- let cg = parseIntValue(cM._9)
1453- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cs), toString(ct), toString(ci), toString(ck), toString(ch), toString(cn), toString(cg)], j))
1448+@Callable(dI)
1449+func evaluateGetREADONLY (gE,gF) = {
1450+ let cN = ca("", gE, gF, this)
1451+ let ct = cN._1
1452+ let cu = cN._2
1453+ let cj = cN._5
1454+ let cl = cN._6
1455+ let ci = cN._7
1456+ let co = cN._8
1457+ let ch = parseIntValue(cN._9)
1458+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(ct), toString(cu), toString(cj), toString(cl), toString(ci), toString(co), toString(ch)], j))
14541459 }
14551460
14561461
1457-@Verifier(gD)
1458-func gE () = {
1459- let gF = {
1460- let dQ = eT()
1461- if ($isInstanceOf(dQ, "ByteVector"))
1462+@Verifier(gG)
1463+func gH () = {
1464+ let gI = {
1465+ let dT = eW()
1466+ if ($isInstanceOf(dT, "ByteVector"))
14621467 then {
1463- let eX = dQ
1464- eX
1468+ let fa = dT
1469+ fa
14651470 }
1466- else if ($isInstanceOf(dQ, "Unit"))
1467- then gD.senderPublicKey
1471+ else if ($isInstanceOf(dT, "Unit"))
1472+ then gG.senderPublicKey
14681473 else throw("Match error")
14691474 }
1470- let dQ = gD
1471- if ($isInstanceOf(dQ, "Order"))
1475+ let dT = gG
1476+ if ($isInstanceOf(dT, "Order"))
14721477 then {
1473- let dv = dQ
1474- let gG = aR()
1475- let aB = du(dv)
1476- let aC = sigVerify(dv.bodyBytes, dv.proofs[0], dv.senderPublicKey)
1477- let aD = sigVerify(dv.bodyBytes, dv.proofs[1], gG)
1478- if (if (if (aB)
1479- then aC
1480- else false)
1478+ let dy = dT
1479+ let gJ = aS()
1480+ let aC = dx(dy)
1481+ let aD = sigVerify(dy.bodyBytes, dy.proofs[0], dy.senderPublicKey)
1482+ let aE = sigVerify(dy.bodyBytes, dy.proofs[1], gJ)
1483+ if (if (if (aC)
14811484 then aD
14821485 else false)
1486+ then aE
1487+ else false)
14831488 then true
1484- else aA(aB, aC, aD)
1489+ else aB(aC, aD, aE)
14851490 }
1486- else if ($isInstanceOf(dQ, "SetScriptTransaction"))
1491+ else if ($isInstanceOf(dT, "SetScriptTransaction"))
14871492 then {
1488- let eU = dQ
1489- let gH = blake2b256(value(eU.script))
1490- let gI = fromBase64String(value(getString(aL, ay())))
1491- let gJ = scriptHash(this)
1492- if (if ((gI == gH))
1493- then (gJ != gH)
1493+ let eX = dT
1494+ let gK = blake2b256(value(eX.script))
1495+ let gL = fromBase64String(value(getString(aM, az())))
1496+ let gM = scriptHash(this)
1497+ if (if ((gL == gK))
1498+ then (gM != gK)
14941499 else false)
14951500 then true
1496- else sigVerify(gD.bodyBytes, gD.proofs[0], gF)
1501+ else sigVerify(gG.bodyBytes, gG.proofs[0], gI)
14971502 }
1498- else sigVerify(gD.bodyBytes, gD.proofs[0], gF)
1503+ else sigVerify(gG.bodyBytes, gG.proofs[0], gI)
14991504 }
15001505
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
65-func G (H,I) = toInt(fraction(H, toBigInt(I), d))
65+func G (E,F) = fraction(E, d, F)
6666
6767
68-func J (H,I,K) = toInt(fraction(H, toBigInt(I), d, K))
68+func H (I,J) = toInt(fraction(I, toBigInt(J), d))
6969
7070
71-func L (M,N,O) = fraction(M, N, O)
71+func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
7272
7373
74-func P (H) = if ((0 > H))
75- then -(H)
76- else H
74+func M (N,O,P) = fraction(N, O, P)
7775
7876
79-func Q (H) = if ((e > H))
80- then -(H)
81- else H
77+func Q (I) = if ((0 > I))
78+ then -(I)
79+ else I
8280
8381
84-func R () = "%s__factoryContract"
82+func R (I) = if ((e > I))
83+ then -(I)
84+ else I
8585
8686
87-func S () = "%s__managerPublicKey"
87+func S () = "%s__factoryContract"
8888
8989
90-func T () = "%s__pendingManagerPublicKey"
90+func T () = "%s__managerPublicKey"
9191
9292
93-func U () = "%s%s__price__last"
93+func U () = "%s__pendingManagerPublicKey"
9494
9595
96-func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], j)
96+func V () = "%s%s__price__last"
9797
9898
99-func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
99+func W (X,Y) = makeString(["%s%s%d%d__price__history", toString(X), toString(Y)], j)
100100
101101
102-func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
102+func Z (aa,ab) = ((("%s%s%s__P__" + aa) + "__") + ab)
103103
104104
105-func ac () = "%s__amountAsset"
105+func ac (aa,ab) = ((("%s%s%s__G__" + aa) + "__") + ab)
106106
107107
108-func ad () = "%s__priceAsset"
108+func ad () = "%s__amountAsset"
109109
110110
111-let ae = "%s__fee"
112-
113-let af = fraction(10, b, 10000)
114-
115-let ag = valueOrElse(getInteger(this, ae), af)
116-
117-let ah = makeString(["%s", "kLp"], j)
118-
119-let ai = makeString(["%s", "kLpRefreshedHeight"], j)
120-
121-let aj = makeString(["%s", "refreshKLpDelay"], j)
122-
123-let ak = 30
124-
125-let al = valueOrElse(getInteger(this, aj), ak)
126-
127-func am () = "%s__factoryConfig"
111+func ae () = "%s__priceAsset"
128112
129113
130-func an () = "%s%s__matcher__publicKey"
114+let af = "%s__fee"
115+
116+let ag = fraction(10, b, 10000)
117+
118+let ah = valueOrElse(getInteger(this, af), ag)
119+
120+let ai = makeString(["%s", "kLp"], j)
121+
122+let aj = makeString(["%s", "kLpRefreshedHeight"], j)
123+
124+let ak = makeString(["%s", "refreshKLpDelay"], j)
125+
126+let al = 30
127+
128+let am = valueOrElse(getInteger(this, ak), al)
129+
130+func an () = "%s__factoryConfig"
131131
132132
133-func ao (ap) = (("%s%s%s__" + ap) + "__mappings__poolContract2LpAsset")
133+func ao () = "%s%s__matcher__publicKey"
134134
135135
136-func aq (ar,as) = (((("%d%d%s__" + ar) + "__") + as) + "__config")
136+func ap (aq) = (("%s%s%s__" + aq) + "__mappings__poolContract2LpAsset")
137137
138138
139-func at (au) = ("%s%s%s__mappings__baseAsset2internalId__" + au)
139+func ar (as,at) = (((("%d%d%s__" + as) + "__") + at) + "__config")
140140
141141
142-func av () = "%s__shutdown"
142+func au (av) = ("%s%s%s__mappings__baseAsset2internalId__" + av)
143143
144144
145-func aw (ax) = ("%s%s__poolWeight__" + ax)
145+func aw () = "%s__shutdown"
146146
147147
148-func ay () = "%s__allowedLpScriptHash"
148+func ax (ay) = ("%s%s__poolWeight__" + ay)
149149
150150
151-let az = "%s__feeCollectorAddress"
152-
153-func aA (aB,aC,aD) = throw(((((("order validation failed: orderValid=" + toString(aB)) + " senderValid=") + toString(aC)) + " matcherValid=") + toString(aD)))
151+func az () = "%s__allowedLpScriptHash"
154152
155153
156-func aE (aF,aG) = valueOrErrorMessage(getString(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
154+let aA = "%s__feeCollectorAddress"
155+
156+func aB (aC,aD,aE) = throw(((((("order validation failed: orderValid=" + toString(aC)) + " senderValid=") + toString(aD)) + " matcherValid=") + toString(aE)))
157157
158158
159-func aH (aF,aG) = valueOrErrorMessage(getInteger(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
159+func aF (aG,aH) = valueOrErrorMessage(getString(aG, aH), makeString(["mandatory ", toString(aG), ".", aH, " is not defined"], ""))
160160
161161
162-func aI (aJ) = throw(makeString(["lp.ride:", aJ], " "))
162+func aI (aG,aH) = valueOrErrorMessage(getInteger(aG, aH), makeString(["mandatory ", toString(aG), ".", aH, " is not defined"], ""))
163163
164164
165-func aK (aJ) = makeString(["lp.ride:", aJ], " ")
165+func aJ (aK) = throw(makeString(["lp.ride:", aK], " "))
166166
167167
168-let aL = addressFromStringValue(aE(this, R()))
168+func aL (aK) = makeString(["lp.ride:", aK], " ")
169169
170-let aM = addressFromStringValue(aE(aL, az))
171170
172-let aN = {
173- let aO = invoke(aL, "getInFeeREADONLY", [toString(this)], nil)
174- if ($isInstanceOf(aO, "Int"))
175- then aO
176- else throw(($getType(aO) + " couldn't be cast to Int"))
171+let aM = addressFromStringValue(aF(this, S()))
172+
173+let aN = addressFromStringValue(aF(aM, aA))
174+
175+let aO = {
176+ let aP = invoke(aM, "getInFeeREADONLY", [toString(this)], nil)
177+ if ($isInstanceOf(aP, "Int"))
178+ then aP
179+ else throw(($getType(aP) + " couldn't be cast to Int"))
177180 }
178181
179-let aP = {
180- let aO = invoke(aL, "getOutFeeREADONLY", [toString(this)], nil)
181- if ($isInstanceOf(aO, "Int"))
182- then aO
183- else throw(($getType(aO) + " couldn't be cast to Int"))
182+let aQ = {
183+ let aP = invoke(aM, "getOutFeeREADONLY", [toString(this)], nil)
184+ if ($isInstanceOf(aP, "Int"))
185+ then aP
186+ else throw(($getType(aP) + " couldn't be cast to Int"))
184187 }
185188
186-func aQ () = valueOrElse(getBoolean(aL, av()), false)
189+func aR () = valueOrElse(getBoolean(aM, aw()), false)
187190
188191
189-func aR () = fromBase58String(aE(aL, an()))
192+func aS () = fromBase58String(aF(aM, ao()))
190193
191194
192-func aS () = {
193- let aT = aE(this, ac())
194- let aU = aE(this, ad())
195- let as = aH(aL, at(aU))
196- let ar = aH(aL, at(aT))
197- split(aE(aL, aq(toString(ar), toString(as))), j)
195+func aT () = {
196+ let aU = aF(this, ad())
197+ let aV = aF(this, ae())
198+ let at = aI(aM, au(aV))
199+ let as = aI(aM, au(aU))
200+ split(aF(aM, ar(toString(as), toString(at))), j)
198201 }
199202
200203
201-func aV (aW) = if ((aW == i))
204+func aW (aX) = if ((aX == i))
202205 then unit
203- else fromBase58String(aW)
206+ else fromBase58String(aX)
204207
205208
206-func aX (aW) = if ((aW == unit))
209+func aY (aX) = if ((aX == unit))
207210 then i
208- else toBase58String(value(aW))
211+ else toBase58String(value(aX))
209212
210213
211-func aY (aZ) = $Tuple7(addressFromStringValue(aZ[o]), parseIntValue(aZ[p]), fromBase58String(aZ[q]), aV(aZ[r]), aV(aZ[s]), parseIntValue(aZ[t]), parseIntValue(aZ[u]))
214+func aZ (ba) = $Tuple7(addressFromStringValue(ba[o]), parseIntValue(ba[p]), fromBase58String(ba[q]), aW(ba[r]), aW(ba[s]), parseIntValue(ba[t]), parseIntValue(ba[u]))
212215
213216
214-let ba = aY(aS())
217+let bb = aZ(aT())
215218
216-let bb = ba
219+let bc = bb
217220
218-let bc = bb._1
221+let bd = bc._1
219222
220-let bd = bb._2
223+let be = bc._2
221224
222-let be = bb._3
225+let bf = bc._3
223226
224-let bf = bb._4
227+let bg = bc._4
225228
226-let bg = bb._5
229+let bh = bc._5
227230
228-let bh = bb._6
231+let bi = bc._6
229232
230-let bi = bb._7
233+let bj = bc._7
231234
232-func bj () = split(aE(aL, am()), j)
235+func bk () = split(aF(aM, an()), j)
233236
234237
235-let bk = valueOrErrorMessage(addressFromString(bj()[B]), "incorrect staking address")
238+let bl = valueOrErrorMessage(addressFromString(bk()[B]), "incorrect staking address")
236239
237-let bl = valueOrErrorMessage(addressFromString(bj()[C]), "incorrect staking address")
240+let bm = valueOrErrorMessage(addressFromString(bk()[C]), "incorrect staking address")
238241
239-func bm (bn,bo,bp,bq,br,bs,bt,bu,bv,bw) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw)], j)
242+func bn (bo,bp,bq,br,bs,bt,bu,bv,bw,bx) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx)], j)
240243
241244
242-func bx (by,bz,bA,bq,bt,bu) = makeString(["%d%d%d%d%d%d", toString(by), toString(bz), toString(bA), toString(bq), toString(bt), toString(bu)], j)
245+func by (bz,bA,bB,br,bu,bv) = makeString(["%d%d%d%d%d%d", toString(bz), toString(bA), toString(bB), toString(br), toString(bu), toString(bv)], j)
243246
244247
245-func bB (bC) = if ((bC == "WAVES"))
248+func bC (bD) = if ((bD == "WAVES"))
246249 then wavesBalance(this).available
247- else assetBalance(this, fromBase58String(bC))
250+ else assetBalance(this, fromBase58String(bD))
248251
249252
250-func bD (bE,bF) = fraction(bE, d, bF)
253+func bE (bF,bG) = fraction(bF, d, bG)
251254
252255
253-func bG (bE,bF,K) = fraction(bE, d, bF, K)
256+func bH (bF,bG,L) = fraction(bF, d, bG, L)
254257
255258
256-func bH (bI,bJ,bK,bL) = {
257- let bM = D(bK, bI)
259+func bI (bJ,bK,bL,bM) = {
258260 let bN = D(bL, bJ)
259- bD(bN, bM)
261+ let bO = D(bM, bK)
262+ bE(bO, bN)
260263 }
261264
262265
263-func bO (bK,bL,bP) = {
264- let bQ = aS()
265- let bR = parseIntValue(bQ[t])
266- let bS = parseIntValue(bQ[u])
267- let bT = bH(bR, bS, bK, bL)
268- let bF = D(bK, bR)
269- let bE = D(bL, bS)
270- let bU = D(bP, b)
271- let bV = bD(bF, bU)
272- let bW = bD(bE, bU)
273-[bT, bV, bW]
266+func bP (bL,bM,bQ) = {
267+ let bR = aT()
268+ let bS = parseIntValue(bR[t])
269+ let bT = parseIntValue(bR[u])
270+ let bU = bI(bS, bT, bL, bM)
271+ let bG = D(bL, bS)
272+ let bF = D(bM, bT)
273+ let bV = D(bQ, b)
274+ let bW = bE(bG, bV)
275+ let bX = bE(bF, bV)
276+[bU, bW, bX]
274277 }
275278
276279
277-func bX (bK,bL,bP) = {
278- let bY = bO(bK, bL, bP)
279-[G(bY[0], b), G(bY[1], b), G(bY[2], b)]
280+func bY (bL,bM,bQ) = {
281+ let bZ = bP(bL, bM, bQ)
282+[H(bZ[0], b), H(bZ[1], b), H(bZ[2], b)]
280283 }
281284
282285
283-func bZ (ca,cb,cc,Z) = {
284- let bQ = aS()
285- let cd = bQ[q]
286- let ce = bQ[r]
287- let cf = bQ[s]
288- let bI = parseIntValue(bQ[t])
289- let bJ = parseIntValue(bQ[u])
290- let cg = bQ[p]
291- let ch = valueOrErrorMessage(assetInfo(fromBase58String(cd)), (("Asset " + cd) + " doesn't exist")).quantity
292- if ((cd != cb))
286+func ca (cb,cc,cd,aa) = {
287+ let bR = aT()
288+ let ce = bR[q]
289+ let cf = bR[r]
290+ let cg = bR[s]
291+ let bJ = parseIntValue(bR[t])
292+ let bK = parseIntValue(bR[u])
293+ let ch = bR[p]
294+ let ci = valueOrErrorMessage(assetInfo(fromBase58String(ce)), (("Asset " + ce) + " doesn't exist")).quantity
295+ if ((ce != cc))
293296 then throw("Invalid asset passed.")
294297 else {
295- let ci = bB(ce)
296- let cj = D(ci, bI)
297- let ck = bB(cf)
298- let cl = D(ck, bJ)
299- let cm = bD(cl, cj)
300- let cn = G(cm, b)
301- let co = D(cc, b)
302- let cp = D(ch, b)
303- let cq = fraction(cj, co, cp)
304- let cr = fraction(cl, co, cp)
305- let cs = J(cq, bI, FLOOR)
306- let ct = J(cr, bJ, FLOOR)
307- let cu = if ((ca == ""))
298+ let cj = bC(cf)
299+ let ck = D(cj, bJ)
300+ let cl = bC(cg)
301+ let cm = D(cl, bK)
302+ let cn = bE(cm, ck)
303+ let co = H(cn, b)
304+ let cp = D(cd, b)
305+ let cq = D(ci, b)
306+ let cr = fraction(ck, cp, cq)
307+ let cs = fraction(cm, cp, cq)
308+ let ct = K(cr, bJ, FLOOR)
309+ let cu = K(cs, bK, FLOOR)
310+ let cv = if ((cb == ""))
308311 then nil
309- else [ScriptTransfer(Z, cs, if ((ce == "WAVES"))
312+ else [ScriptTransfer(aa, ct, if ((cf == "WAVES"))
310313 then unit
311- else fromBase58String(ce)), ScriptTransfer(Z, ct, if ((cf == "WAVES"))
314+ else fromBase58String(cf)), ScriptTransfer(aa, cu, if ((cg == "WAVES"))
312315 then unit
313- else fromBase58String(cf)), StringEntry(ab(toString(Z), ca), bx(cs, ct, cc, cn, height, lastBlock.timestamp)), IntegerEntry(U(), cn), IntegerEntry(V(height, lastBlock.timestamp), cn)]
314- $Tuple10(cs, ct, ce, cf, ci, ck, ch, cm, cg, cu)
316+ else fromBase58String(cg)), StringEntry(ac(toString(aa), cb), by(ct, cu, cd, co, height, lastBlock.timestamp)), IntegerEntry(V(), co), IntegerEntry(W(height, lastBlock.timestamp), co)]
317+ $Tuple10(ct, cu, cf, cg, cj, cl, ci, cn, ch, cv)
315318 }
316319 }
317320
318321
319-func cv (ca,cw,cx,cy,cz,cA,Z,cB,cC) = {
320- let bQ = aS()
321- let cd = fromBase58String(bQ[q])
322- let cD = bQ[r]
323- let cE = bQ[s]
324- let cF = bQ[v]
325- let cG = bQ[w]
326- let bR = parseIntValue(bQ[t])
327- let bS = parseIntValue(bQ[u])
328- let cg = bQ[p]
329- let ch = valueOrErrorMessage(assetInfo(cd), (("Asset " + toBase58String(cd)) + " doesn't exist")).quantity
330- let cH = toBase58String(valueOrElse(cy, fromBase58String("WAVES")))
331- let cI = toBase58String(valueOrElse(cA, fromBase58String("WAVES")))
332- if (if ((cD != cH))
322+func cw (cb,cx,cy,cz,cA,cB,aa,cC,cD) = {
323+ let bR = aT()
324+ let ce = fromBase58String(bR[q])
325+ let cE = bR[r]
326+ let cF = bR[s]
327+ let cG = bR[v]
328+ let cH = bR[w]
329+ let bS = parseIntValue(bR[t])
330+ let bT = parseIntValue(bR[u])
331+ let ch = bR[p]
332+ let ci = valueOrErrorMessage(assetInfo(ce), (("Asset " + toBase58String(ce)) + " doesn't exist")).quantity
333+ let cI = toBase58String(valueOrElse(cz, fromBase58String("WAVES")))
334+ let cJ = toBase58String(valueOrElse(cB, fromBase58String("WAVES")))
335+ if (if ((cE != cI))
333336 then true
334- else (cE != cI))
337+ else (cF != cJ))
335338 then throw("Invalid amt or price asset passed.")
336339 else {
337- let ci = if (cB)
338- then bB(cD)
339- else (bB(cD) - cx)
340- let ck = if (cB)
341- then bB(cE)
342- else (bB(cE) - cz)
343- let cJ = D(cx, bR)
344- let cK = D(cz, bS)
345- let cL = bD(cK, cJ)
346- let cj = D(ci, bR)
347- let cl = D(ck, bS)
348- let cM = if ((ch == 0))
340+ let cj = if (cC)
341+ then bC(cE)
342+ else (bC(cE) - cy)
343+ let cl = if (cC)
344+ then bC(cF)
345+ else (bC(cF) - cA)
346+ let cK = D(cy, bS)
347+ let cL = D(cA, bT)
348+ let cM = bE(cL, cK)
349+ let ck = D(cj, bS)
350+ let cm = D(cl, bT)
351+ let cN = if ((ci == 0))
349352 then {
350- let cm = e
351- let cN = e
352- let bU = pow((cJ * cK), 0, toBigInt(5), 1, 0, DOWN)
353- $Tuple5(G(bU, b), G(cJ, bR), G(cK, bS), bD((cl + cK), (cj + cJ)), cN)
353+ let cn = e
354+ let cO = e
355+ let bV = pow((cK * cL), 0, toBigInt(5), 1, 0, DOWN)
356+ $Tuple5(H(bV, b), H(cK, bS), H(cL, bT), bE((cm + cL), (ck + cK)), cO)
354357 }
355358 else {
356- let cm = bD(cl, cj)
357- let cN = fraction(Q((cm - cL)), d, cm)
358- let cO = D(cw, b)
359- if (if ((cm != e))
360- then (cN > cO)
359+ let cn = bE(cm, ck)
360+ let cO = fraction(R((cn - cM)), d, cn)
361+ let cP = D(cx, b)
362+ if (if ((cn != e))
363+ then (cO > cP)
361364 else false)
362- then throw(((("Price slippage " + toString(cN)) + " exceeded the passed limit of ") + toString(cO)))
365+ then throw(((("Price slippage " + toString(cO)) + " exceeded the passed limit of ") + toString(cP)))
363366 else {
364- let cp = D(ch, b)
365- let cP = fraction(cJ, bG(cl, cj, CEILING), d, CEILING)
366- let cQ = fraction(cK, d, bG(cl, cj, FLOOR), CEILING)
367- let cR = if ((cP > cK))
368- then $Tuple2(cQ, cK)
369- else $Tuple2(cJ, cP)
370- let cS = cR._1
371- let cT = cR._2
372- let bU = fraction(cp, cT, cl, FLOOR)
373- $Tuple5(J(bU, b, FLOOR), J(cS, bR, CEILING), J(cT, bS, CEILING), cm, cN)
367+ let cq = D(ci, b)
368+ let cQ = fraction(cK, bH(cm, ck, CEILING), d, CEILING)
369+ let cR = fraction(cL, d, bH(cm, ck, FLOOR), CEILING)
370+ let cS = if ((cQ > cL))
371+ then $Tuple2(cR, cL)
372+ else $Tuple2(cK, cQ)
373+ let cT = cS._1
374+ let cU = cS._2
375+ let bV = fraction(cq, cU, cm, FLOOR)
376+ $Tuple5(K(bV, b, FLOOR), K(cT, bS, CEILING), K(cU, bT, CEILING), cn, cO)
374377 }
375378 }
376- let cU = cM._1
377- let cV = cM._2
378- let cW = cM._3
379- let cn = G(cM._4, b)
380- let cX = G(cM._5, b)
381- if ((0 >= cU))
379+ let cV = cN._1
380+ let cW = cN._2
381+ let cX = cN._3
382+ let co = H(cN._4, b)
383+ let cY = H(cN._5, b)
384+ if ((0 >= cV))
382385 then throw("Invalid calculations. LP calculated is less than zero.")
383386 else {
384- let cY = if (!(cC))
387+ let cZ = if (!(cD))
385388 then 0
386- else cU
387- let cZ = (cx - cV)
388- let da = (cz - cW)
389- let db = [IntegerEntry(U(), cn), IntegerEntry(V(height, lastBlock.timestamp), cn), StringEntry(Y(Z, ca), bm(cV, cW, cY, cn, cw, cX, height, lastBlock.timestamp, cZ, da))]
390- $Tuple13(cU, cY, cn, ci, ck, ch, cd, cg, db, cZ, da, cy, cA)
389+ else cV
390+ let da = (cy - cW)
391+ let db = (cA - cX)
392+ let dc = [IntegerEntry(V(), co), IntegerEntry(W(height, lastBlock.timestamp), co), StringEntry(Z(aa, cb), bn(cW, cX, cZ, co, cx, cY, height, lastBlock.timestamp, da, db))]
393+ $Tuple13(cV, cZ, co, cj, cl, ci, ce, ch, dc, da, db, cz, cB)
391394 }
392395 }
393396 }
394397
395398
396-func dc (dd,de,ch) = {
397- let df = fraction(pow((dd * de), 0, toBigInt(5), 1, 18, DOWN), g, ch)
398- if ((ch == f))
399+func dd (de,df,ci) = {
400+ let dg = G(de, toBigInt(bi))
401+ let dh = G(df, toBigInt(bj))
402+ let di = fraction(pow((dg * dh), 0, toBigInt(5), 1, 18, DOWN), g, ci)
403+ if ((ci == f))
399404 then f
400- else df
405+ else di
401406 }
402407
403408
404-func dg (dh,di,dj) = {
405- let dk = (toBigInt(bB(aX(bf))) - dh)
406- let dl = (toBigInt(bB(aX(bg))) - di)
407- let dm = (toBigInt(value(assetInfo(be)).quantity) - dj)
408- let dn = dc(dk, dl, dm)
409- dn
409+func dj (dk,dl,dm) = {
410+ let dn = (toBigInt(bC(aY(bg))) - dk)
411+ let do = (toBigInt(bC(aY(bh))) - dl)
412+ let dp = (toBigInt(value(assetInfo(bf)).quantity) - dm)
413+ let dq = dd(dn, do, dp)
414+ dq
410415 }
411416
412417
413-func do (dp,dq,dj) = {
414- let dk = (bB(aX(bf)) + dp)
415- let dl = (bB(aX(bg)) + dq)
416- let dm = (value(assetInfo(be)).quantity + dj)
417- let df = dc(toBigInt(dk), toBigInt(dl), toBigInt(dm))
418- let dr = [IntegerEntry(ai, height), StringEntry(ah, toString(df))]
419- $Tuple2(dr, df)
418+func dr (ds,dt,dm) = {
419+ let dn = (bC(aY(bg)) + ds)
420+ let do = (bC(aY(bh)) + dt)
421+ let dp = (value(assetInfo(bf)).quantity + dm)
422+ let di = dd(toBigInt(dn), toBigInt(do), toBigInt(dp))
423+ let du = [IntegerEntry(aj, height), StringEntry(ai, toString(di))]
424+ $Tuple2(du, di)
420425 }
421426
422427
423-func ds (dt,df) = if ((df >= dt))
428+func dv (dw,di) = if ((di >= dw))
424429 then true
425- else aI(makeString(["updated KLp lower than current KLp", toString(dt), toString(df)], " "))
430+ else aJ(makeString(["updated KLp lower than current KLp", toString(dw), toString(di)], " "))
426431
427432
428-func du (dv) = {
429- let dw = dv.amount
430- let dx = fraction(dv.amount, dv.price, b, FLOOR)
431- let dy = if ((dv.orderType == Buy))
432- then $Tuple2(dw, -(dx))
433- else $Tuple2(-(dw), dx)
434- let dp = dy._1
435- let dq = dy._2
436- if (if (if (aQ())
433+func dx (dy) = {
434+ let dz = dy.amount
435+ let dA = fraction(dy.amount, dy.price, b, FLOOR)
436+ let dB = if ((dy.orderType == Buy))
437+ then $Tuple2(dz, -(dA))
438+ else $Tuple2(-(dz), dA)
439+ let ds = dB._1
440+ let dt = dB._2
441+ if (if (if (aR())
437442 then true
438- else (bd == m))
443+ else (be == m))
439444 then true
440- else (bd == n))
445+ else (be == n))
441446 then throw("Exchange operations disabled")
442- else if (if ((dv.assetPair.amountAsset != bf))
447+ else if (if ((dy.assetPair.amountAsset != bg))
443448 then true
444- else (dv.assetPair.priceAsset != bg))
449+ else (dy.assetPair.priceAsset != bh))
445450 then throw("Wrong order assets.")
446451 else {
447- let dz = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ah), aK("kLp is required"))), aK("invalid kLp"))
448- let dA = do(dp, dq, 0)
449- let dB = dA._1
450- let dC = dA._2
451- let dD = (dC >= dz)
452- dD
452+ let dC = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ai), aL("kLp is required"))), aL("invalid kLp"))
453+ let dD = dr(ds, dt, 0)
454+ let dE = dD._1
455+ let dF = dD._2
456+ let dG = (dF >= dC)
457+ dG
453458 }
454459 }
455460
456461
457-func dE (dF) = if ((size(dF.payments) != 1))
462+func dH (dI) = if ((size(dI.payments) != 1))
458463 then throw("exactly 1 payment is expected")
459464 else {
460- let dG = value(dF.payments[0])
461- let cb = value(dG.assetId)
462- let dH = dG.amount
463- let cM = bZ(toBase58String(dF.transactionId), toBase58String(cb), dH, dF.caller)
464- let cs = cM._1
465- let ct = cM._2
466- let cg = parseIntValue(cM._9)
467- let cu = cM._10
468- if (if (aQ())
465+ let dJ = value(dI.payments[0])
466+ let cc = value(dJ.assetId)
467+ let dK = dJ.amount
468+ let cN = ca(toBase58String(dI.transactionId), toBase58String(cc), dK, dI.caller)
469+ let ct = cN._1
470+ let cu = cN._2
471+ let ch = parseIntValue(cN._9)
472+ let cv = cN._10
473+ if (if (aR())
469474 then true
470- else (cg == n))
471- then throw(("Get operation is blocked by admin. Status = " + toString(cg)))
472- else $Tuple5(cs, ct, dH, cb, cu)
475+ else (ch == n))
476+ then throw(("Get operation is blocked by admin. Status = " + toString(ch)))
477+ else $Tuple5(ct, cu, dK, cc, cv)
473478 }
474479
475480
476-func dI (dF,cw,cC) = if ((size(dF.payments) != 2))
481+func dL (dI,cx,cD) = if ((size(dI.payments) != 2))
477482 then throw("exactly 2 payments are expected")
478483 else {
479- let dJ = value(dF.payments[0])
480- let dK = value(dF.payments[1])
481- let dL = cv(toBase58String(dF.transactionId), cw, dJ.amount, dJ.assetId, dK.amount, dK.assetId, toString(dF.caller), false, cC)
482- let cg = parseIntValue(dL._8)
483- if (if (if (aQ())
484+ let dM = value(dI.payments[0])
485+ let dN = value(dI.payments[1])
486+ let dO = cw(toBase58String(dI.transactionId), cx, dM.amount, dM.assetId, dN.amount, dN.assetId, toString(dI.caller), false, cD)
487+ let ch = parseIntValue(dO._8)
488+ if (if (if (aR())
484489 then true
485- else (cg == l))
490+ else (ch == l))
486491 then true
487- else (cg == n))
488- then throw(("Put operation is blocked by admin. Status = " + toString(cg)))
489- else dL
492+ else (ch == n))
493+ then throw(("Put operation is blocked by admin. Status = " + toString(ch)))
494+ else dO
490495 }
491496
492497
493-func dM (dN) = {
494- let dO = invoke(aL, "emit", [dN], nil)
495- if ((dO == dO))
498+func dP (dQ) = {
499+ let dR = invoke(aM, "emit", [dQ], nil)
500+ if ((dR == dR))
496501 then {
497- let dP = {
498- let dQ = dO
499- if ($isInstanceOf(dQ, "Address"))
502+ let dS = {
503+ let dT = dR
504+ if ($isInstanceOf(dT, "Address"))
500505 then {
501- let dR = dQ
502- invoke(dR, "emit", [dN], nil)
506+ let dU = dT
507+ invoke(dU, "emit", [dQ], nil)
503508 }
504509 else unit
505510 }
506- if ((dP == dP))
507- then dN
511+ if ((dS == dS))
512+ then dQ
508513 else throw("Strict value is not equal to itself.")
509514 }
510515 else throw("Strict value is not equal to itself.")
511516 }
512517
513518
514-func dS (dN,ag) = {
515- let dT = if ((ag == 0))
519+func dV (dQ,ah) = {
520+ let dW = if ((ah == 0))
516521 then 0
517- else fraction(dN, ag, b)
518- $Tuple2((dN - dT), dT)
522+ else fraction(dQ, ah, b)
523+ $Tuple2((dQ - dW), dW)
519524 }
520525
521526
522-func dU (dV,dW,Z,aa) = {
523- let dX = (aa == unit)
524- let dY = bB(aX(bf))
525- let dZ = bB(aX(bg))
526- let ea = if ((dW == bf))
527+func dX (dY,dZ,aa,ab) = {
528+ let ea = (ab == unit)
529+ let eb = bC(aY(bg))
530+ let ec = bC(aY(bh))
531+ let ed = if ((dZ == bg))
527532 then true
528- else if ((dW == bg))
533+ else if ((dZ == bh))
529534 then false
530- else aI("invalid asset")
531- let eb = if (dX)
532- then $Tuple2(dY, dZ)
533- else if (ea)
534- then $Tuple2((dY - dV), dZ)
535- else $Tuple2(dY, (dZ - dV))
536- let ec = eb._1
537- let ed = eb._2
535+ else aJ("invalid asset")
538536 let ee = if (ea)
539- then $Tuple2(dV, 0)
540- else $Tuple2(0, dV)
537+ then $Tuple2(eb, ec)
538+ else if (ed)
539+ then $Tuple2((eb - dY), ec)
540+ else $Tuple2(eb, (ec - dY))
541541 let ef = ee._1
542542 let eg = ee._2
543- let dw = dS(ef, aN)._1
544- let dx = dS(eg, aN)._1
545- let eh = dS(dV, aN)
543+ let eh = if (ed)
544+ then $Tuple2(dY, 0)
545+ else $Tuple2(0, dY)
546546 let ei = eh._1
547- let dT = eh._2
548- let ej = (ec + dw)
549- let ek = (ed + dx)
550- let el = bD(D(ek, bi), D(ej, bh))
551- let em = G(el, b)
552- let en = if (ea)
553- then ec
554- else ed
555- let eo = toBigInt(en)
556- let ep = toBigInt(valueOrErrorMessage(assetInfo(be), (("asset " + toBase58String(be)) + " doesn't exist")).quantity)
557- let eq = if ((ep > f))
547+ let ej = eh._2
548+ let dz = dV(ei, aO)._1
549+ let dA = dV(ej, aO)._1
550+ let ek = dV(dY, aO)
551+ let el = ek._1
552+ let dW = ek._2
553+ let em = (ef + dz)
554+ let en = (eg + dA)
555+ let eo = bE(D(en, bj), D(em, bi))
556+ let ep = H(eo, b)
557+ let eq = if (ed)
558+ then ef
559+ else eg
560+ let er = toBigInt(eq)
561+ let es = toBigInt(valueOrErrorMessage(assetInfo(bf), (("asset " + toBase58String(bf)) + " doesn't exist")).quantity)
562+ let et = if ((es > f))
558563 then true
559- else aI("initial deposit requires all coins")
560- if ((eq == eq))
564+ else aJ("initial deposit requires all coins")
565+ if ((et == et))
561566 then {
562- let er = toBigInt(ei)
563- let es = max([0, toInt(((ep * (sqrtBigInt((d + ((er * d) / eo)), 18, 18, DOWN) - d)) / d))])
564- let db = if (dX)
567+ let eu = toBigInt(el)
568+ let ev = max([0, toInt(((es * (sqrtBigInt((d + ((eu * d) / er)), 18, 18, DOWN) - d)) / d))])
569+ let dc = if (ea)
565570 then nil
566- else [IntegerEntry(U(), em), IntegerEntry(V(height, lastBlock.timestamp), em), StringEntry(Y(toString(value(Z)), toBase58String(value(aa))), bm(ef, eg, es, em, 0, 0, height, lastBlock.timestamp, 0, 0))]
567- let et = bD(D(ed, bi), D(ec, bh))
568- let eu = G(et, b)
569- let ev = {
570- let ew = if (ea)
571- then $Tuple2(ef, ec)
572- else $Tuple2(eg, ed)
573- let dN = ew._1
574- let ex = ew._2
575- let ey = toInt(fraction(ep, toBigInt((dN / 2)), toBigInt(ex)))
576- fraction((es - ey), b, ey)
571+ else [IntegerEntry(V(), ep), IntegerEntry(W(height, lastBlock.timestamp), ep), StringEntry(Z(toString(value(aa)), toBase58String(value(ab))), bn(ei, ej, ev, ep, 0, 0, height, lastBlock.timestamp, 0, 0))]
572+ let ew = bE(D(eg, bj), D(ef, bi))
573+ let ex = H(ew, b)
574+ let ey = {
575+ let ez = if (ed)
576+ then $Tuple2(ei, ef)
577+ else $Tuple2(ej, eg)
578+ let dQ = ez._1
579+ let eA = ez._2
580+ let eB = toInt(fraction(es, toBigInt((dQ / 2)), toBigInt(eA)))
581+ fraction((ev - eB), b, eB)
577582 }
578- $Tuple5(es, db, dT, ev, ea)
583+ $Tuple5(ev, dc, dW, ey, ed)
579584 }
580585 else throw("Strict value is not equal to itself.")
581586 }
582587
583588
584-func ez (eA,ei,dW,Z,aa) = {
585- let dX = (aa == unit)
586- let bQ = aS()
587- let bR = parseIntValue(bQ[t])
588- let bS = parseIntValue(bQ[u])
589- let eB = [if ((dW == be))
589+func eC (eD,el,dZ,aa,ab) = {
590+ let ea = (ab == unit)
591+ let bR = aT()
592+ let bS = parseIntValue(bR[t])
593+ let bT = parseIntValue(bR[u])
594+ let eE = [if ((dZ == bf))
590595 then true
591- else aI("invalid lp asset")]
592- if ((eB == eB))
596+ else aJ("invalid lp asset")]
597+ if ((eE == eE))
593598 then {
594- let eC = if ((eA == bf))
599+ let eF = if ((eD == bg))
595600 then true
596- else if ((eA == bg))
601+ else if ((eD == bh))
597602 then false
598- else aI("invalid asset")
599- let eD = if (eC)
600- then toBigInt(bB(aX(bf)))
601- else toBigInt(bB(aX(bg)))
602- let eE = if (eC)
603- then bR
604- else bS
605- let eF = bB(aX(bf))
606- let eG = bB(aX(bg))
607- let eH = if (eC)
608- then eF
609- else eG
610- let eI = toBigInt(eH)
611- let ep = toBigInt(valueOrErrorMessage(assetInfo(be), (("asset " + toBase58String(be)) + " doesn't exist")).quantity)
612- let eJ = toBigInt(ei)
613- let eK = max([0, toInt(((eD * (d - pow((d - ((eJ * d) / ep)), 18, h, 0, 18, DOWN))) / d))])
614- let eL = dS(eK, aP)
615- let eM = eL._1
616- let dT = eL._2
617- let eN = if (eC)
618- then $Tuple4(eM, 0, (eF - eK), eG)
619- else $Tuple4(0, eM, eF, (eG - eK))
620- let eO = eN._1
621- let eP = eN._2
622- let eQ = eN._3
623- let eR = eN._4
624- let el = bD(D(eR, bi), D(eQ, bh))
625- let em = G(el, b)
626- let db = if (dX)
603+ else aJ("invalid asset")
604+ let eG = if (eF)
605+ then toBigInt(bC(aY(bg)))
606+ else toBigInt(bC(aY(bh)))
607+ let eH = if (eF)
608+ then bS
609+ else bT
610+ let eI = bC(aY(bg))
611+ let eJ = bC(aY(bh))
612+ let eK = if (eF)
613+ then eI
614+ else eJ
615+ let eL = toBigInt(eK)
616+ let es = toBigInt(valueOrErrorMessage(assetInfo(bf), (("asset " + toBase58String(bf)) + " doesn't exist")).quantity)
617+ let eM = toBigInt(el)
618+ let eN = max([0, toInt(((eG * (d - pow((d - ((eM * d) / es)), 18, h, 0, 18, DOWN))) / d))])
619+ let eO = dV(eN, aQ)
620+ let eP = eO._1
621+ let dW = eO._2
622+ let eQ = if (eF)
623+ then $Tuple4(eP, 0, (eI - eN), eJ)
624+ else $Tuple4(0, eP, eI, (eJ - eN))
625+ let eR = eQ._1
626+ let eS = eQ._2
627+ let eT = eQ._3
628+ let eU = eQ._4
629+ let eo = bE(D(eU, bj), D(eT, bi))
630+ let ep = H(eo, b)
631+ let dc = if (ea)
627632 then nil
628- else [StringEntry(ab(toString(value(Z)), toBase58String(value(aa))), bx(eO, eP, ei, em, height, lastBlock.timestamp)), IntegerEntry(U(), em), IntegerEntry(V(height, lastBlock.timestamp), em)]
629- let et = bD(D(eG, bi), D(eF, bh))
630- let eu = G(et, b)
631- let ev = {
632- let eS = (toInt(fraction(eD, eJ, ep)) * 2)
633- fraction((eM - eS), b, eS)
633+ else [StringEntry(ac(toString(value(aa)), toBase58String(value(ab))), by(eR, eS, el, ep, height, lastBlock.timestamp)), IntegerEntry(V(), ep), IntegerEntry(W(height, lastBlock.timestamp), ep)]
634+ let ew = bE(D(eJ, bj), D(eI, bi))
635+ let ex = H(ew, b)
636+ let ey = {
637+ let eV = (toInt(fraction(eG, eM, es)) * 2)
638+ fraction((eP - eV), b, eV)
634639 }
635- $Tuple5(eM, db, dT, ev, eC)
640+ $Tuple5(eP, dc, dW, ey, eF)
636641 }
637642 else throw("Strict value is not equal to itself.")
638643 }
639644
640645
641-func eT () = {
642- let dQ = getString(S())
643- if ($isInstanceOf(dQ, "String"))
646+func eW () = {
647+ let dT = getString(T())
648+ if ($isInstanceOf(dT, "String"))
644649 then {
645- let eU = dQ
646- fromBase58String(eU)
650+ let eX = dT
651+ fromBase58String(eX)
647652 }
648- else if ($isInstanceOf(dQ, "Unit"))
653+ else if ($isInstanceOf(dT, "Unit"))
649654 then unit
650655 else throw("Match error")
651656 }
652657
653658
654-func eV () = {
655- let dQ = getString(T())
656- if ($isInstanceOf(dQ, "String"))
659+func eY () = {
660+ let dT = getString(U())
661+ if ($isInstanceOf(dT, "String"))
657662 then {
658- let eU = dQ
659- fromBase58String(eU)
663+ let eX = dT
664+ fromBase58String(eX)
660665 }
661- else if ($isInstanceOf(dQ, "Unit"))
666+ else if ($isInstanceOf(dT, "Unit"))
662667 then unit
663668 else throw("Match error")
664669 }
665670
666671
667-func eW (dF) = {
668- let dQ = eT()
669- if ($isInstanceOf(dQ, "ByteVector"))
672+func eZ (dI) = {
673+ let dT = eW()
674+ if ($isInstanceOf(dT, "ByteVector"))
670675 then {
671- let eX = dQ
672- (dF.callerPublicKey == eX)
676+ let fa = dT
677+ (dI.callerPublicKey == fa)
673678 }
674- else if ($isInstanceOf(dQ, "Unit"))
675- then (dF.caller == this)
679+ else if ($isInstanceOf(dT, "Unit"))
680+ then (dI.caller == this)
676681 else throw("Match error")
677682 }
678683
679684
680-func eY (dF) = {
681- let eZ = throw("Permission denied")
682- let dQ = eT()
683- if ($isInstanceOf(dQ, "ByteVector"))
685+func fb (dI) = {
686+ let fc = throw("Permission denied")
687+ let dT = eW()
688+ if ($isInstanceOf(dT, "ByteVector"))
684689 then {
685- let eX = dQ
686- if ((dF.callerPublicKey == eX))
690+ let fa = dT
691+ if ((dI.callerPublicKey == fa))
687692 then true
688- else eZ
693+ else fc
689694 }
690- else if ($isInstanceOf(dQ, "Unit"))
691- then if ((dF.caller == this))
695+ else if ($isInstanceOf(dT, "Unit"))
696+ then if ((dI.caller == this))
692697 then true
693- else eZ
698+ else fc
694699 else throw("Match error")
695700 }
696701
697702
698-@Callable(dF)
699-func setManager (fa) = {
700- let fb = eY(dF)
701- if ((fb == fb))
703+@Callable(dI)
704+func setManager (fd) = {
705+ let fe = fb(dI)
706+ if ((fe == fe))
702707 then {
703- let fc = fromBase58String(fa)
704- if ((fc == fc))
705- then [StringEntry(T(), fa)]
708+ let ff = fromBase58String(fd)
709+ if ((ff == ff))
710+ then [StringEntry(U(), fd)]
706711 else throw("Strict value is not equal to itself.")
707712 }
708713 else throw("Strict value is not equal to itself.")
709714 }
710715
711716
712717
713-@Callable(dF)
718+@Callable(dI)
714719 func confirmManager () = {
715- let fd = eV()
716- let fe = if (isDefined(fd))
720+ let fg = eY()
721+ let fh = if (isDefined(fg))
717722 then true
718723 else throw("No pending manager")
719- if ((fe == fe))
724+ if ((fh == fh))
720725 then {
721- let ff = if ((dF.callerPublicKey == value(fd)))
726+ let fi = if ((dI.callerPublicKey == value(fg)))
722727 then true
723728 else throw("You are not pending manager")
724- if ((ff == ff))
725- then [StringEntry(S(), toBase58String(value(fd))), DeleteEntry(T())]
729+ if ((fi == fi))
730+ then [StringEntry(T(), toBase58String(value(fg))), DeleteEntry(U())]
726731 else throw("Strict value is not equal to itself.")
727732 }
728733 else throw("Strict value is not equal to itself.")
729734 }
730735
731736
732737
733-@Callable(dF)
734-func put (cw,fg) = if ((0 > cw))
738+@Callable(dI)
739+func put (cx,fj) = if ((0 > cx))
735740 then throw("Invalid slippageTolerance passed")
736741 else {
737- let dL = dI(dF, cw, true)
738- let cY = dL._2
739- let cd = dL._7
740- let cu = dL._9
741- let cZ = dL._10
742- let da = dL._11
743- let fh = dL._12
744- let fi = dL._13
745- let dJ = toBigInt(value(dF.payments[0]).amount)
746- let dK = toBigInt(value(dF.payments[1]).amount)
747- let dn = dg(dJ, dK, toBigInt(0))
748- if ((dn == dn))
742+ let dO = dL(dI, cx, true)
743+ let cZ = dO._2
744+ let ce = dO._7
745+ let cv = dO._9
746+ let da = dO._10
747+ let db = dO._11
748+ let fk = dO._12
749+ let fl = dO._13
750+ let dM = toBigInt(value(dI.payments[0]).amount)
751+ let dN = toBigInt(value(dI.payments[1]).amount)
752+ let dq = dj(dM, dN, toBigInt(0))
753+ if ((dq == dq))
749754 then {
750- let dO = invoke(aL, "emit", [cY], nil)
751- if ((dO == dO))
755+ let dR = invoke(aM, "emit", [cZ], nil)
756+ if ((dR == dR))
752757 then {
753- let dP = {
754- let dQ = dO
755- if ($isInstanceOf(dQ, "Address"))
758+ let dS = {
759+ let dT = dR
760+ if ($isInstanceOf(dT, "Address"))
756761 then {
757- let dR = dQ
758- invoke(dR, "emit", [cY], nil)
762+ let dU = dT
763+ invoke(dU, "emit", [cZ], nil)
759764 }
760765 else unit
761766 }
762- if ((dP == dP))
767+ if ((dS == dS))
763768 then {
764- let fj = if ((cZ > 0))
765- then invoke(bl, "put", nil, [AttachedPayment(fh, cZ)])
769+ let fm = if ((da > 0))
770+ then invoke(bm, "put", nil, [AttachedPayment(fk, da)])
766771 else nil
767- if ((fj == fj))
772+ if ((fm == fm))
768773 then {
769- let fk = if ((da > 0))
770- then invoke(bl, "put", nil, [AttachedPayment(fi, da)])
774+ let fn = if ((db > 0))
775+ then invoke(bm, "put", nil, [AttachedPayment(fl, db)])
771776 else nil
772- if ((fk == fk))
777+ if ((fn == fn))
773778 then {
774- let fl = if (fg)
779+ let fo = if (fj)
775780 then {
776- let fm = invoke(bk, "stake", nil, [AttachedPayment(cd, cY)])
777- if ((fm == fm))
781+ let fp = invoke(bl, "stake", nil, [AttachedPayment(ce, cZ)])
782+ if ((fp == fp))
778783 then nil
779784 else throw("Strict value is not equal to itself.")
780785 }
781- else [ScriptTransfer(dF.caller, cY, cd)]
782- let fn = do(0, 0, 0)
783- if ((fn == fn))
786+ else [ScriptTransfer(dI.caller, cZ, ce)]
787+ let fq = dr(0, 0, 0)
788+ if ((fq == fq))
784789 then {
785- let df = fn._2
786- let fo = fn._1
787- let fp = ds(dn, df)
788- if ((fp == fp))
789- then ((cu ++ fl) ++ fo)
790+ let di = fq._2
791+ let fr = fq._1
792+ let fs = dv(dq, di)
793+ if ((fs == fs))
794+ then ((cv ++ fo) ++ fr)
790795 else throw("Strict value is not equal to itself.")
791796 }
792797 else throw("Strict value is not equal to itself.")
793798 }
794799 else throw("Strict value is not equal to itself.")
795800 }
796801 else throw("Strict value is not equal to itself.")
797802 }
798803 else throw("Strict value is not equal to itself.")
799804 }
800805 else throw("Strict value is not equal to itself.")
801806 }
802807 else throw("Strict value is not equal to itself.")
803808 }
804809
805810
806811
807-@Callable(dF)
808-func putForFree (fq) = if ((0 > fq))
812+@Callable(dI)
813+func putForFree (ft) = if ((0 > ft))
809814 then throw("Invalid value passed")
810815 else {
811- let dL = dI(dF, fq, false)
812- let cu = dL._9
813- let dJ = toBigInt(value(dF.payments[0]).amount)
814- let dK = toBigInt(value(dF.payments[1]).amount)
815- let dn = dg(dJ, dK, toBigInt(0))
816- if ((dn == dn))
816+ let dO = dL(dI, ft, false)
817+ let cv = dO._9
818+ let dM = toBigInt(value(dI.payments[0]).amount)
819+ let dN = toBigInt(value(dI.payments[1]).amount)
820+ let dq = dj(dM, dN, toBigInt(0))
821+ if ((dq == dq))
817822 then {
818- let fr = do(0, 0, 0)
819- let fo = fr._1
820- let df = fr._2
821- let fp = ds(dn, df)
822- if ((fp == fp))
823- then (cu ++ fo)
823+ let fu = dr(0, 0, 0)
824+ let fr = fu._1
825+ let di = fu._2
826+ let fs = dv(dq, di)
827+ if ((fs == fs))
828+ then (cv ++ fr)
824829 else throw("Strict value is not equal to itself.")
825830 }
826831 else throw("Strict value is not equal to itself.")
827832 }
828833
829834
830835
831-@Callable(dF)
832-func putOneTkn (fs,ft) = {
833- let fu = {
834- let aO = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
835- if ($isInstanceOf(aO, "Boolean"))
836- then aO
837- else throw(($getType(aO) + " couldn't be cast to Boolean"))
836+@Callable(dI)
837+func putOneTkn (fv,fw) = {
838+ let fx = {
839+ let aP = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
840+ if ($isInstanceOf(aP, "Boolean"))
841+ then aP
842+ else throw(($getType(aP) + " couldn't be cast to Boolean"))
838843 }
839- let fv = if (if (if (aQ())
844+ let fy = if (if (if (aR())
840845 then true
841- else (bd == l))
846+ else (be == l))
842847 then true
843- else (bd == n))
848+ else (be == n))
844849 then true
845- else fu
846- let eB = [if (if (!(fv))
850+ else fx
851+ let eE = [if (if (!(fy))
847852 then true
848- else eW(dF))
853+ else eZ(dI))
849854 then true
850- else aI("put operation is blocked by admin"), if ((size(dF.payments) == 1))
855+ else aJ("put operation is blocked by admin"), if ((size(dI.payments) == 1))
851856 then true
852- else aI("exactly 1 payment are expected")]
853- if ((eB == eB))
857+ else aJ("exactly 1 payment are expected")]
858+ if ((eE == eE))
854859 then {
855- let fw = dF.payments[0]
856- let dW = fw.assetId
857- let dV = fw.amount
858- let dn = if ((dW == bf))
859- then dg(toBigInt(dV), toBigInt(0), toBigInt(0))
860- else if ((dW == bg))
861- then dg(toBigInt(0), toBigInt(dV), toBigInt(0))
862- else aI("payment asset is not supported")
863- if ((dn == dn))
860+ let fz = dI.payments[0]
861+ let dZ = fz.assetId
862+ let dY = fz.amount
863+ let dq = if ((dZ == bg))
864+ then dj(toBigInt(dY), toBigInt(0), toBigInt(0))
865+ else if ((dZ == bh))
866+ then dj(toBigInt(0), toBigInt(dY), toBigInt(0))
867+ else aJ("payment asset is not supported")
868+ if ((dq == dq))
864869 then {
865- let Z = dF.caller
866- let aa = dF.transactionId
867- let fx = dU(dV, dW, Z, aa)
868- if ((fx == fx))
870+ let aa = dI.caller
871+ let ab = dI.transactionId
872+ let fA = dX(dY, dZ, aa, ab)
873+ if ((fA == fA))
869874 then {
870- let ea = fx._5
871- let fy = fx._4
872- let dT = fx._3
873- let db = fx._2
874- let fz = fx._1
875- let fA = if (if ((fs > 0))
876- then (fs > fz)
875+ let ed = fA._5
876+ let fB = fA._4
877+ let dW = fA._3
878+ let dc = fA._2
879+ let fC = fA._1
880+ let fD = if (if ((fv > 0))
881+ then (fv > fC)
877882 else false)
878- then aI(makeString(["amount to receive is less than ", toString(fs)], ""))
879- else fz
880- let dO = dM(fA)
881- if ((dO == dO))
883+ then aJ(makeString(["amount to receive is less than ", toString(fv)], ""))
884+ else fC
885+ let dR = dP(fD)
886+ if ((dR == dR))
882887 then {
883- let fl = if (ft)
888+ let fo = if (fw)
884889 then {
885- let fB = invoke(bk, "stake", nil, [AttachedPayment(be, fA)])
886- if ((fB == fB))
890+ let fE = invoke(bl, "stake", nil, [AttachedPayment(bf, fD)])
891+ if ((fE == fE))
887892 then nil
888893 else throw("Strict value is not equal to itself.")
889894 }
890- else [ScriptTransfer(dF.caller, fA, be)]
891- let fC = if ((dT > 0))
892- then [ScriptTransfer(aM, dT, dW)]
895+ else [ScriptTransfer(dI.caller, fD, bf)]
896+ let fF = if ((dW > 0))
897+ then [ScriptTransfer(aN, dW, dZ)]
893898 else nil
894- let fD = if ((this == aM))
899+ let fG = if ((this == aN))
895900 then $Tuple2(0, 0)
896- else if (ea)
897- then $Tuple2(-(dT), 0)
898- else $Tuple2(0, -(dT))
899- let dp = fD._1
900- let dq = fD._2
901- let fE = do(dp, dq, 0)
902- let fo = fE._1
903- let df = fE._2
904- let dz = value(getString(ah))
905- let fp = ds(dn, df)
906- if ((fp == fp))
907- then $Tuple2((((db ++ fl) ++ fC) ++ fo), fA)
901+ else if (ed)
902+ then $Tuple2(-(dW), 0)
903+ else $Tuple2(0, -(dW))
904+ let ds = fG._1
905+ let dt = fG._2
906+ let fH = dr(ds, dt, 0)
907+ let fr = fH._1
908+ let di = fH._2
909+ let dC = value(getString(ai))
910+ let fs = dv(dq, di)
911+ if ((fs == fs))
912+ then $Tuple2((((dc ++ fo) ++ fF) ++ fr), fD)
908913 else throw("Strict value is not equal to itself.")
909914 }
910915 else throw("Strict value is not equal to itself.")
911916 }
912917 else throw("Strict value is not equal to itself.")
913918 }
914919 else throw("Strict value is not equal to itself.")
915920 }
916921 else throw("Strict value is not equal to itself.")
917922 }
918923
919924
920925
921-@Callable(dF)
922-func putOneTknREADONLY (dW,dV) = {
923- let fF = dU(dV, aV(dW), unit, unit)
924- let fz = fF._1
925- let db = fF._2
926- let dT = fF._3
927- let fy = fF._4
928- let ea = fF._5
929- $Tuple2(nil, $Tuple3(fz, dT, fy))
926+@Callable(dI)
927+func putOneTknREADONLY (dZ,dY) = {
928+ let fI = dX(dY, aW(dZ), unit, unit)
929+ let fC = fI._1
930+ let dc = fI._2
931+ let dW = fI._3
932+ let fB = fI._4
933+ let ed = fI._5
934+ $Tuple2(nil, $Tuple3(fC, dW, fB))
930935 }
931936
932937
933938
934-@Callable(dF)
935-func getOneTkn (fG,fs) = {
936- let fu = {
937- let aO = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
938- if ($isInstanceOf(aO, "Boolean"))
939- then aO
940- else throw(($getType(aO) + " couldn't be cast to Boolean"))
939+@Callable(dI)
940+func getOneTkn (fJ,fv) = {
941+ let fx = {
942+ let aP = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
943+ if ($isInstanceOf(aP, "Boolean"))
944+ then aP
945+ else throw(($getType(aP) + " couldn't be cast to Boolean"))
941946 }
942- let fH = if (if (aQ())
947+ let fK = if (if (aR())
943948 then true
944- else (bd == n))
949+ else (be == n))
945950 then true
946- else fu
947- let eB = [if (if (!(fH))
951+ else fx
952+ let eE = [if (if (!(fK))
948953 then true
949- else eW(dF))
954+ else eZ(dI))
950955 then true
951- else aI("get operation is blocked by admin"), if ((size(dF.payments) == 1))
956+ else aJ("get operation is blocked by admin"), if ((size(dI.payments) == 1))
952957 then true
953- else aI("exactly 1 payment are expected")]
954- if ((eB == eB))
958+ else aJ("exactly 1 payment are expected")]
959+ if ((eE == eE))
955960 then {
956- let eA = aV(fG)
957- let fw = dF.payments[0]
958- let dW = fw.assetId
959- let ei = fw.amount
960- let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
961- if ((dn == dn))
961+ let eD = aW(fJ)
962+ let fz = dI.payments[0]
963+ let dZ = fz.assetId
964+ let el = fz.amount
965+ let dq = dj(toBigInt(0), toBigInt(0), toBigInt(0))
966+ if ((dq == dq))
962967 then {
963- let Z = dF.caller
964- let aa = dF.transactionId
965- let fI = ez(eA, ei, dW, Z, aa)
966- if ((fI == fI))
968+ let aa = dI.caller
969+ let ab = dI.transactionId
970+ let fL = eC(eD, el, dZ, aa, ab)
971+ if ((fL == fL))
967972 then {
968- let eC = fI._5
969- let fy = fI._4
970- let dT = fI._3
971- let db = fI._2
972- let fJ = fI._1
973- let dN = if (if ((fs > 0))
974- then (fs > fJ)
973+ let eF = fL._5
974+ let fB = fL._4
975+ let dW = fL._3
976+ let dc = fL._2
977+ let fM = fL._1
978+ let dQ = if (if ((fv > 0))
979+ then (fv > fM)
975980 else false)
976- then aI(makeString(["amount to receive is less than ", toString(fs)], ""))
977- else fJ
978- let fK = invoke(aL, "burn", [ei], [AttachedPayment(dW, ei)])
979- if ((fK == fK))
981+ then aJ(makeString(["amount to receive is less than ", toString(fv)], ""))
982+ else fM
983+ let fN = invoke(aM, "burn", [el], [AttachedPayment(dZ, el)])
984+ if ((fN == fN))
980985 then {
981- let fL = [ScriptTransfer(Z, dN, eA)]
982- let fC = if ((dT > 0))
983- then [ScriptTransfer(aM, dT, eA)]
986+ let fO = [ScriptTransfer(aa, dQ, eD)]
987+ let fF = if ((dW > 0))
988+ then [ScriptTransfer(aN, dW, eD)]
984989 else nil
985- let fM = {
986- let fN = if ((this == aM))
990+ let fP = {
991+ let fQ = if ((this == aN))
987992 then 0
988- else dT
989- if (eC)
990- then $Tuple2(-((dN + fN)), 0)
991- else $Tuple2(0, -((dN + fN)))
993+ else dW
994+ if (eF)
995+ then $Tuple2(-((dQ + fQ)), 0)
996+ else $Tuple2(0, -((dQ + fQ)))
992997 }
993- let dp = fM._1
994- let dq = fM._2
995- let fO = do(dp, dq, 0)
996- let fo = fO._1
997- let df = fO._2
998- let fp = ds(dn, df)
999- if ((fp == fp))
1000- then $Tuple2((((db ++ fL) ++ fC) ++ fo), dN)
998+ let ds = fP._1
999+ let dt = fP._2
1000+ let fR = dr(ds, dt, 0)
1001+ let fr = fR._1
1002+ let di = fR._2
1003+ let fs = dv(dq, di)
1004+ if ((fs == fs))
1005+ then $Tuple2((((dc ++ fO) ++ fF) ++ fr), dQ)
10011006 else throw("Strict value is not equal to itself.")
10021007 }
10031008 else throw("Strict value is not equal to itself.")
10041009 }
10051010 else throw("Strict value is not equal to itself.")
10061011 }
10071012 else throw("Strict value is not equal to itself.")
10081013 }
10091014 else throw("Strict value is not equal to itself.")
10101015 }
10111016
10121017
10131018
1014-@Callable(dF)
1015-func getOneTknREADONLY (eA,ei) = {
1016- let fP = ez(aV(eA), ei, be, unit, unit)
1017- let fJ = fP._1
1018- let db = fP._2
1019- let dT = fP._3
1020- let fy = fP._4
1021- let eC = fP._5
1022- $Tuple2(nil, $Tuple3(fJ, dT, fy))
1019+@Callable(dI)
1020+func getOneTknREADONLY (eD,el) = {
1021+ let fS = eC(aW(eD), el, bf, unit, unit)
1022+ let fM = fS._1
1023+ let dc = fS._2
1024+ let dW = fS._3
1025+ let fB = fS._4
1026+ let eF = fS._5
1027+ $Tuple2(nil, $Tuple3(fM, dW, fB))
10231028 }
10241029
10251030
10261031
1027-@Callable(dF)
1028-func unstakeAndGetOneTkn (fQ,fG,fs) = {
1029- let fu = {
1030- let aO = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1031- if ($isInstanceOf(aO, "Boolean"))
1032- then aO
1033- else throw(($getType(aO) + " couldn't be cast to Boolean"))
1032+@Callable(dI)
1033+func unstakeAndGetOneTkn (fT,fJ,fv) = {
1034+ let fx = {
1035+ let aP = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1036+ if ($isInstanceOf(aP, "Boolean"))
1037+ then aP
1038+ else throw(($getType(aP) + " couldn't be cast to Boolean"))
10341039 }
1035- let fH = if (if (aQ())
1040+ let fK = if (if (aR())
10361041 then true
1037- else (bd == n))
1042+ else (be == n))
10381043 then true
1039- else fu
1040- let eB = [if (if (!(fH))
1044+ else fx
1045+ let eE = [if (if (!(fK))
10411046 then true
1042- else eW(dF))
1047+ else eZ(dI))
10431048 then true
1044- else aI("get operation is blocked by admin"), if ((size(dF.payments) == 0))
1049+ else aJ("get operation is blocked by admin"), if ((size(dI.payments) == 0))
10451050 then true
1046- else aI("no payments are expected")]
1047- if ((eB == eB))
1051+ else aJ("no payments are expected")]
1052+ if ((eE == eE))
10481053 then {
1049- let eA = aV(fG)
1050- let Z = dF.caller
1051- let aa = dF.transactionId
1052- let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
1053- if ((dn == dn))
1054+ let eD = aW(fJ)
1055+ let aa = dI.caller
1056+ let ab = dI.transactionId
1057+ let dq = dj(toBigInt(0), toBigInt(0), toBigInt(0))
1058+ if ((dq == dq))
10541059 then {
1055- let fR = invoke(bk, "unstake", [toBase58String(be), fQ], nil)
1056- if ((fR == fR))
1060+ let fU = invoke(bl, "unstake", [toBase58String(bf), fT], nil)
1061+ if ((fU == fU))
10571062 then {
1058- let fS = ez(eA, fQ, be, Z, aa)
1059- if ((fS == fS))
1063+ let fV = eC(eD, fT, bf, aa, ab)
1064+ if ((fV == fV))
10601065 then {
1061- let eC = fS._5
1062- let fy = fS._4
1063- let dT = fS._3
1064- let db = fS._2
1065- let fJ = fS._1
1066- let dN = if (if ((fs > 0))
1067- then (fs > fJ)
1066+ let eF = fV._5
1067+ let fB = fV._4
1068+ let dW = fV._3
1069+ let dc = fV._2
1070+ let fM = fV._1
1071+ let dQ = if (if ((fv > 0))
1072+ then (fv > fM)
10681073 else false)
1069- then aI(makeString(["amount to receive is less than ", toString(fs)], ""))
1070- else fJ
1071- let fK = invoke(aL, "burn", [fQ], [AttachedPayment(be, fQ)])
1072- if ((fK == fK))
1074+ then aJ(makeString(["amount to receive is less than ", toString(fv)], ""))
1075+ else fM
1076+ let fN = invoke(aM, "burn", [fT], [AttachedPayment(bf, fT)])
1077+ if ((fN == fN))
10731078 then {
1074- let fL = [ScriptTransfer(dF.caller, dN, eA)]
1075- let fC = if ((dT > 0))
1076- then [ScriptTransfer(aM, dT, eA)]
1079+ let fO = [ScriptTransfer(dI.caller, dQ, eD)]
1080+ let fF = if ((dW > 0))
1081+ then [ScriptTransfer(aN, dW, eD)]
10771082 else nil
1078- let fT = {
1079- let fN = if ((this == aM))
1083+ let fW = {
1084+ let fQ = if ((this == aN))
10801085 then 0
1081- else dT
1082- if (eC)
1083- then $Tuple2(-((dN + fN)), 0)
1084- else $Tuple2(0, -((dN + fN)))
1086+ else dW
1087+ if (eF)
1088+ then $Tuple2(-((dQ + fQ)), 0)
1089+ else $Tuple2(0, -((dQ + fQ)))
10851090 }
1086- let dp = fT._1
1087- let dq = fT._2
1088- let fU = do(dp, dq, 0)
1089- let fo = fU._1
1090- let df = fU._2
1091- let fp = ds(dn, df)
1092- if ((fp == fp))
1093- then $Tuple2((((db ++ fL) ++ fC) ++ fo), dN)
1091+ let ds = fW._1
1092+ let dt = fW._2
1093+ let fX = dr(ds, dt, 0)
1094+ let fr = fX._1
1095+ let di = fX._2
1096+ let fs = dv(dq, di)
1097+ if ((fs == fs))
1098+ then $Tuple2((((dc ++ fO) ++ fF) ++ fr), dQ)
10941099 else throw("Strict value is not equal to itself.")
10951100 }
10961101 else throw("Strict value is not equal to itself.")
10971102 }
10981103 else throw("Strict value is not equal to itself.")
10991104 }
11001105 else throw("Strict value is not equal to itself.")
11011106 }
11021107 else throw("Strict value is not equal to itself.")
11031108 }
11041109 else throw("Strict value is not equal to itself.")
11051110 }
11061111
11071112
11081113
1109-@Callable(dF)
1114+@Callable(dI)
11101115 func get () = {
1111- let cM = dE(dF)
1112- let fV = cM._1
1113- let ct = cM._2
1114- let dH = cM._3
1115- let cb = cM._4
1116- let cu = cM._5
1117- let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
1118- if ((dn == dn))
1116+ let cN = dH(dI)
1117+ let fY = cN._1
1118+ let cu = cN._2
1119+ let dK = cN._3
1120+ let cc = cN._4
1121+ let cv = cN._5
1122+ let dq = dj(toBigInt(0), toBigInt(0), toBigInt(0))
1123+ if ((dq == dq))
11191124 then {
1120- let fW = invoke(aL, "burn", [dH], [AttachedPayment(cb, dH)])
1121- if ((fW == fW))
1125+ let fZ = invoke(aM, "burn", [dK], [AttachedPayment(cc, dK)])
1126+ if ((fZ == fZ))
11221127 then {
1123- let fX = do(-(fV), -(ct), 0)
1124- let fo = fX._1
1125- let df = fX._2
1126- let fp = ds(dn, df)
1127- if ((fp == fp))
1128- then (cu ++ fo)
1128+ let ga = dr(-(fY), -(cu), 0)
1129+ let fr = ga._1
1130+ let di = ga._2
1131+ let fs = dv(dq, di)
1132+ if ((fs == fs))
1133+ then (cv ++ fr)
11291134 else throw("Strict value is not equal to itself.")
11301135 }
11311136 else throw("Strict value is not equal to itself.")
11321137 }
11331138 else throw("Strict value is not equal to itself.")
11341139 }
11351140
11361141
11371142
1138-@Callable(dF)
1139-func getNoLess (fY,fZ) = {
1140- let cM = dE(dF)
1141- let cs = cM._1
1142- let ct = cM._2
1143- let dH = cM._3
1144- let cb = cM._4
1145- let cu = cM._5
1146- if ((fY > cs))
1147- then throw(((("noLessThenAmtAsset failed: " + toString(cs)) + " < ") + toString(fY)))
1148- else if ((fZ > ct))
1149- then throw(((("noLessThenPriceAsset failed: " + toString(ct)) + " < ") + toString(fZ)))
1143+@Callable(dI)
1144+func getNoLess (gb,gc) = {
1145+ let cN = dH(dI)
1146+ let ct = cN._1
1147+ let cu = cN._2
1148+ let dK = cN._3
1149+ let cc = cN._4
1150+ let cv = cN._5
1151+ if ((gb > ct))
1152+ then throw(((("noLessThenAmtAsset failed: " + toString(ct)) + " < ") + toString(gb)))
1153+ else if ((gc > cu))
1154+ then throw(((("noLessThenPriceAsset failed: " + toString(cu)) + " < ") + toString(gc)))
11501155 else {
1151- let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
1152- if ((dn == dn))
1156+ let dq = dj(toBigInt(0), toBigInt(0), toBigInt(0))
1157+ if ((dq == dq))
11531158 then {
1154- let fW = invoke(aL, "burn", [dH], [AttachedPayment(cb, dH)])
1155- if ((fW == fW))
1159+ let fZ = invoke(aM, "burn", [dK], [AttachedPayment(cc, dK)])
1160+ if ((fZ == fZ))
11561161 then {
1157- let ga = do(-(cs), -(ct), 0)
1158- let fo = ga._1
1159- let df = ga._2
1160- let fp = ds(dn, df)
1161- if ((fp == fp))
1162- then (cu ++ fo)
1162+ let gd = dr(-(ct), -(cu), 0)
1163+ let fr = gd._1
1164+ let di = gd._2
1165+ let fs = dv(dq, di)
1166+ if ((fs == fs))
1167+ then (cv ++ fr)
11631168 else throw("Strict value is not equal to itself.")
11641169 }
11651170 else throw("Strict value is not equal to itself.")
11661171 }
11671172 else throw("Strict value is not equal to itself.")
11681173 }
11691174 }
11701175
11711176
11721177
1173-@Callable(dF)
1174-func unstakeAndGet (dN) = {
1175- let gb = if ((size(dF.payments) != 0))
1178+@Callable(dI)
1179+func unstakeAndGet (dQ) = {
1180+ let ge = if ((size(dI.payments) != 0))
11761181 then throw("No payments are expected")
11771182 else true
1178- if ((gb == gb))
1183+ if ((ge == ge))
11791184 then {
1180- let bQ = aS()
1181- let cd = fromBase58String(bQ[q])
1182- let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
1183- if ((dn == dn))
1185+ let bR = aT()
1186+ let ce = fromBase58String(bR[q])
1187+ let dq = dj(toBigInt(0), toBigInt(0), toBigInt(0))
1188+ if ((dq == dq))
11841189 then {
1185- let fR = invoke(bk, "unstake", [toBase58String(cd), dN], nil)
1186- if ((fR == fR))
1190+ let fU = invoke(bl, "unstake", [toBase58String(ce), dQ], nil)
1191+ if ((fU == fU))
11871192 then {
1188- let cM = bZ(toBase58String(dF.transactionId), toBase58String(cd), dN, dF.caller)
1189- let cs = cM._1
1190- let ct = cM._2
1191- let cg = parseIntValue(cM._9)
1192- let cu = cM._10
1193- let gc = if (if (aQ())
1193+ let cN = ca(toBase58String(dI.transactionId), toBase58String(ce), dQ, dI.caller)
1194+ let ct = cN._1
1195+ let cu = cN._2
1196+ let ch = parseIntValue(cN._9)
1197+ let cv = cN._10
1198+ let gf = if (if (aR())
11941199 then true
1195- else (cg == n))
1196- then throw(("Get operation is blocked by admin. Status = " + toString(cg)))
1200+ else (ch == n))
1201+ then throw(("Get operation is blocked by admin. Status = " + toString(ch)))
11971202 else true
1198- if ((gc == gc))
1203+ if ((gf == gf))
11991204 then {
1200- let fW = invoke(aL, "burn", [dN], [AttachedPayment(cd, dN)])
1201- if ((fW == fW))
1205+ let fZ = invoke(aM, "burn", [dQ], [AttachedPayment(ce, dQ)])
1206+ if ((fZ == fZ))
12021207 then {
1203- let gd = do(-(cs), -(ct), 0)
1204- let fo = gd._1
1205- let df = gd._2
1206- let fp = ds(dn, df)
1207- if ((fp == fp))
1208- then (cu ++ fo)
1208+ let gg = dr(-(ct), -(cu), 0)
1209+ let fr = gg._1
1210+ let di = gg._2
1211+ let fs = dv(dq, di)
1212+ if ((fs == fs))
1213+ then (cv ++ fr)
12091214 else throw("Strict value is not equal to itself.")
12101215 }
12111216 else throw("Strict value is not equal to itself.")
12121217 }
12131218 else throw("Strict value is not equal to itself.")
12141219 }
12151220 else throw("Strict value is not equal to itself.")
12161221 }
12171222 else throw("Strict value is not equal to itself.")
12181223 }
12191224 else throw("Strict value is not equal to itself.")
12201225 }
12211226
12221227
12231228
1224-@Callable(dF)
1225-func unstakeAndGetNoLess (fQ,ge,fZ) = {
1226- let fH = if (aQ())
1229+@Callable(dI)
1230+func unstakeAndGetNoLess (fT,gh,gc) = {
1231+ let fK = if (aR())
12271232 then true
1228- else (bd == n)
1229- let eB = [if (!(fH))
1233+ else (be == n)
1234+ let eE = [if (!(fK))
12301235 then true
1231- else throw("get operation is blocked by admin"), if ((size(dF.payments) == 0))
1236+ else throw("get operation is blocked by admin"), if ((size(dI.payments) == 0))
12321237 then true
12331238 else throw("no payments are expected")]
1234- if ((eB == eB))
1239+ if ((eE == eE))
12351240 then {
1236- let dn = dg(toBigInt(0), toBigInt(0), toBigInt(0))
1237- if ((dn == dn))
1241+ let dq = dj(toBigInt(0), toBigInt(0), toBigInt(0))
1242+ if ((dq == dq))
12381243 then {
1239- let fR = invoke(bk, "unstake", [toBase58String(be), fQ], nil)
1240- if ((fR == fR))
1244+ let fU = invoke(bl, "unstake", [toBase58String(bf), fT], nil)
1245+ if ((fU == fU))
12411246 then {
1242- let cM = bZ(toBase58String(dF.transactionId), toBase58String(be), fQ, dF.caller)
1243- let cs = cM._1
1244- let ct = cM._2
1245- let cu = cM._10
1246- let gf = [if ((cs >= ge))
1247+ let cN = ca(toBase58String(dI.transactionId), toBase58String(bf), fT, dI.caller)
1248+ let ct = cN._1
1249+ let cu = cN._2
1250+ let cv = cN._10
1251+ let gi = [if ((ct >= gh))
12471252 then true
1248- else throw(makeString(["amount asset amount to receive is less than ", toString(ge)], "")), if ((ct >= fZ))
1253+ else throw(makeString(["amount asset amount to receive is less than ", toString(gh)], "")), if ((cu >= gc))
12491254 then true
1250- else throw(makeString(["price asset amount to receive is less than ", toString(fZ)], ""))]
1251- if ((gf == gf))
1255+ else throw(makeString(["price asset amount to receive is less than ", toString(gc)], ""))]
1256+ if ((gi == gi))
12521257 then {
1253- let fW = invoke(aL, "burn", [fQ], [AttachedPayment(be, fQ)])
1254- if ((fW == fW))
1258+ let fZ = invoke(aM, "burn", [fT], [AttachedPayment(bf, fT)])
1259+ if ((fZ == fZ))
12551260 then {
1256- let gg = do(-(cs), -(ct), 0)
1257- let fo = gg._1
1258- let df = gg._2
1259- let fp = ds(dn, df)
1260- if ((fp == fp))
1261- then (cu ++ fo)
1261+ let gj = dr(-(ct), -(cu), 0)
1262+ let fr = gj._1
1263+ let di = gj._2
1264+ let fs = dv(dq, di)
1265+ if ((fs == fs))
1266+ then (cv ++ fr)
12621267 else throw("Strict value is not equal to itself.")
12631268 }
12641269 else throw("Strict value is not equal to itself.")
12651270 }
12661271 else throw("Strict value is not equal to itself.")
12671272 }
12681273 else throw("Strict value is not equal to itself.")
12691274 }
12701275 else throw("Strict value is not equal to itself.")
12711276 }
12721277 else throw("Strict value is not equal to itself.")
12731278 }
12741279
12751280
12761281
1277-@Callable(dF)
1278-func activate (gh,gi) = if ((toString(dF.caller) != toString(aL)))
1282+@Callable(dI)
1283+func activate (gk,gl) = if ((toString(dI.caller) != toString(aM)))
12791284 then throw("permissions denied")
1280- else $Tuple2([StringEntry(ac(), gh), StringEntry(ad(), gi)], "success")
1285+ else $Tuple2([StringEntry(ad(), gk), StringEntry(ae(), gl)], "success")
12811286
12821287
12831288
1284-@Callable(dF)
1289+@Callable(dI)
12851290 func refreshKLp () = {
1286- let gj = valueOrElse(getInteger(ai), 0)
1287- let gk = if (((height - gj) >= al))
1291+ let gm = valueOrElse(getInteger(aj), 0)
1292+ let gn = if (((height - gm) >= am))
12881293 then unit
1289- else aI(makeString([toString(al), " blocks have not passed since the previous call"], ""))
1290- if ((gk == gk))
1294+ else aJ(makeString([toString(am), " blocks have not passed since the previous call"], ""))
1295+ if ((gn == gn))
12911296 then {
1292- let dz = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ah), "0")), aK("invalid kLp"))
1293- let gl = do(0, 0, 0)
1294- let gm = gl._1
1295- let df = gl._2
1296- let dr = if ((dz != df))
1297- then gm
1298- else aI("nothing to refresh")
1299- $Tuple2(dr, toString(df))
1297+ let dC = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ai), "0")), aL("invalid kLp"))
1298+ let go = dr(0, 0, 0)
1299+ let gp = go._1
1300+ let di = go._2
1301+ let du = if ((dC != di))
1302+ then gp
1303+ else aJ("nothing to refresh")
1304+ $Tuple2(du, toString(di))
13001305 }
13011306 else throw("Strict value is not equal to itself.")
13021307 }
13031308
13041309
13051310
1306-@Callable(dF)
1307-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aS())
1311+@Callable(dI)
1312+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aT())
13081313
13091314
13101315
1311-@Callable(dF)
1312-func getAccBalanceWrapperREADONLY (bC) = $Tuple2(nil, bB(bC))
1316+@Callable(dI)
1317+func getAccBalanceWrapperREADONLY (bD) = $Tuple2(nil, bC(bD))
13131318
13141319
13151320
1316-@Callable(dF)
1317-func calcPricesWrapperREADONLY (bK,bL,bP) = {
1318- let bY = bO(bK, bL, bP)
1319- $Tuple2(nil, [toString(bY[0]), toString(bY[1]), toString(bY[2])])
1321+@Callable(dI)
1322+func calcPricesWrapperREADONLY (bL,bM,bQ) = {
1323+ let bZ = bP(bL, bM, bQ)
1324+ $Tuple2(nil, [toString(bZ[0]), toString(bZ[1]), toString(bZ[2])])
13201325 }
13211326
13221327
13231328
1324-@Callable(dF)
1329+@Callable(dI)
13251330 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
13261331
13271332
13281333
1329-@Callable(dF)
1330-func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
1334+@Callable(dI)
1335+func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
13311336
13321337
13331338
1334-@Callable(dF)
1335-func calcPriceBigIntWrapperREADONLY (bE,bF) = $Tuple2(nil, toString(bD(parseBigIntValue(bE), parseBigIntValue(bF))))
1339+@Callable(dI)
1340+func calcPriceBigIntWrapperREADONLY (bF,bG) = $Tuple2(nil, toString(bE(parseBigIntValue(bF), parseBigIntValue(bG))))
13361341
13371342
13381343
1339-@Callable(dF)
1340-func estimatePutOperationWrapperREADONLY (ca,cw,cx,cy,cz,cA,Z,cB,cC) = $Tuple2(nil, cv(ca, cw, cx, cy, cz, cA, Z, cB, cC))
1344+@Callable(dI)
1345+func estimatePutOperationWrapperREADONLY (cb,cx,cy,cz,cA,cB,aa,cC,cD) = $Tuple2(nil, cw(cb, cx, cy, cz, cA, cB, aa, cC, cD))
13411346
13421347
13431348
1344-@Callable(dF)
1345-func estimateGetOperationWrapperREADONLY (ca,cb,cc,Z) = {
1346- let cM = bZ(ca, cb, cc, addressFromStringValue(Z))
1347- $Tuple2(nil, $Tuple10(cM._1, cM._2, cM._3, cM._4, cM._5, cM._6, cM._7, toString(cM._8), cM._9, cM._10))
1349+@Callable(dI)
1350+func estimateGetOperationWrapperREADONLY (cb,cc,cd,aa) = {
1351+ let cN = ca(cb, cc, cd, addressFromStringValue(aa))
1352+ $Tuple2(nil, $Tuple10(cN._1, cN._2, cN._3, cN._4, cN._5, cN._6, cN._7, toString(cN._8), cN._9, cN._10))
13481353 }
13491354
13501355
13511356
1352-@Callable(dF)
1357+@Callable(dI)
13531358 func statsREADONLY () = {
1354- let bQ = aS()
1355- let cd = fromBase58String(bQ[q])
1356- let gn = bQ[r]
1357- let go = bQ[s]
1358- let cF = bQ[v]
1359- let cG = bQ[w]
1360- let bR = parseIntValue(bQ[t])
1361- let bS = parseIntValue(bQ[u])
1362- let gp = valueOrErrorMessage(assetInfo(cd), (("Asset " + toBase58String(cd)) + " doesn't exist")).quantity
1363- let gq = bB(gn)
1364- let gr = bB(go)
1365- let gs = if ((gp == 0))
1359+ let bR = aT()
1360+ let ce = fromBase58String(bR[q])
1361+ let gq = bR[r]
1362+ let gr = bR[s]
1363+ let cG = bR[v]
1364+ let cH = bR[w]
1365+ let bS = parseIntValue(bR[t])
1366+ let bT = parseIntValue(bR[u])
1367+ let gs = valueOrErrorMessage(assetInfo(ce), (("Asset " + toBase58String(ce)) + " doesn't exist")).quantity
1368+ let gt = bC(gq)
1369+ let gu = bC(gr)
1370+ let gv = if ((gs == 0))
13661371 then [e, e, e]
1367- else bO(gq, gr, gp)
1368- let cn = 0
1369- let gt = G(gs[1], b)
1370- let gu = G(gs[2], b)
1371- let gv = value(getInteger(aL, aw(toString(this))))
1372- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gq), toString(gr), toString(gp), toString(cn), toString(gt), toString(gu), toString(gv)], j))
1372+ else bP(gt, gu, gs)
1373+ let co = 0
1374+ let gw = H(gv[1], b)
1375+ let gx = H(gv[2], b)
1376+ let gy = value(getInteger(aM, ax(toString(this))))
1377+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gt), toString(gu), toString(gs), toString(co), toString(gw), toString(gx), toString(gy)], j))
13731378 }
13741379
13751380
13761381
1377-@Callable(dF)
1378-func evaluatePutByAmountAssetREADONLY (cx) = {
1379- let bQ = aS()
1380- let cd = fromBase58String(bQ[q])
1381- let cD = bQ[r]
1382- let ce = fromBase58String(cD)
1383- let cE = bQ[s]
1382+@Callable(dI)
1383+func evaluatePutByAmountAssetREADONLY (cy) = {
1384+ let bR = aT()
1385+ let ce = fromBase58String(bR[q])
1386+ let cE = bR[r]
13841387 let cf = fromBase58String(cE)
1385- let bR = parseIntValue(bQ[t])
1386- let bS = parseIntValue(bQ[u])
1387- let cg = bQ[p]
1388- let gp = valueOrErrorMessage(assetInfo(cd), (("Asset " + toBase58String(cd)) + " doesn't exist")).quantity
1389- let gq = bB(cD)
1390- let gr = bB(cE)
1391- let bM = D(gq, bR)
1392- let bN = D(gr, bS)
1393- let cm = if ((gp == 0))
1388+ let cF = bR[s]
1389+ let cg = fromBase58String(cF)
1390+ let bS = parseIntValue(bR[t])
1391+ let bT = parseIntValue(bR[u])
1392+ let ch = bR[p]
1393+ let gs = valueOrErrorMessage(assetInfo(ce), (("Asset " + toBase58String(ce)) + " doesn't exist")).quantity
1394+ let gt = bC(cE)
1395+ let gu = bC(cF)
1396+ let bN = D(gt, bS)
1397+ let bO = D(gu, bT)
1398+ let cn = if ((gs == 0))
13941399 then e
1395- else bD(bN, bM)
1396- let cJ = D(cx, bR)
1397- let cK = fraction(cJ, cm, d)
1398- let cz = G(cK, bS)
1399- let dL = cv("", 500000, cx, ce, cz, cf, "", true, false)
1400- let cU = dL._1
1401- let gw = dL._3
1402- let ci = dL._4
1403- let ck = dL._5
1404- let ch = dL._6
1405- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cU), toString(G(cm, b)), toString(ci), toString(ck), toString(ch), cg, toString(cx), toString(cz)], j))
1400+ else bE(bO, bN)
1401+ let cK = D(cy, bS)
1402+ let cL = fraction(cK, cn, d)
1403+ let cA = H(cL, bT)
1404+ let dO = cw("", 500000, cy, cf, cA, cg, "", true, false)
1405+ let cV = dO._1
1406+ let gz = dO._3
1407+ let cj = dO._4
1408+ let cl = dO._5
1409+ let ci = dO._6
1410+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cV), toString(H(cn, b)), toString(cj), toString(cl), toString(ci), ch, toString(cy), toString(cA)], j))
14061411 }
14071412
14081413
14091414
1410-@Callable(dF)
1411-func evaluatePutByPriceAssetREADONLY (cz) = {
1412- let bQ = aS()
1413- let cd = fromBase58String(bQ[q])
1414- let cD = bQ[r]
1415- let ce = fromBase58String(cD)
1416- let cE = bQ[s]
1415+@Callable(dI)
1416+func evaluatePutByPriceAssetREADONLY (cA) = {
1417+ let bR = aT()
1418+ let ce = fromBase58String(bR[q])
1419+ let cE = bR[r]
14171420 let cf = fromBase58String(cE)
1418- let bR = parseIntValue(bQ[t])
1419- let bS = parseIntValue(bQ[u])
1420- let cg = bQ[p]
1421- let gp = valueOrErrorMessage(assetInfo(cd), (("Asset " + toBase58String(cd)) + " doesn't exist")).quantity
1422- let gx = bB(cD)
1423- let gy = bB(cE)
1424- let gz = D(gx, bR)
1425- let gA = D(gy, bS)
1426- let cm = if ((gp == 0))
1421+ let cF = bR[s]
1422+ let cg = fromBase58String(cF)
1423+ let bS = parseIntValue(bR[t])
1424+ let bT = parseIntValue(bR[u])
1425+ let ch = bR[p]
1426+ let gs = valueOrErrorMessage(assetInfo(ce), (("Asset " + toBase58String(ce)) + " doesn't exist")).quantity
1427+ let gA = bC(cE)
1428+ let gB = bC(cF)
1429+ let gC = D(gA, bS)
1430+ let gD = D(gB, bT)
1431+ let cn = if ((gs == 0))
14271432 then e
1428- else bD(gA, gz)
1429- let cK = D(cz, bS)
1430- let cJ = fraction(cK, d, cm)
1431- let cx = G(cJ, bR)
1432- let dL = cv("", 500000, cx, ce, cz, cf, "", true, false)
1433- let cU = dL._1
1434- let gw = dL._3
1435- let ci = dL._4
1436- let ck = dL._5
1437- let ch = dL._6
1438- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cU), toString(G(cm, b)), toString(ci), toString(ck), toString(ch), cg, toString(cx), toString(cz)], j))
1433+ else bE(gD, gC)
1434+ let cL = D(cA, bT)
1435+ let cK = fraction(cL, d, cn)
1436+ let cy = H(cK, bS)
1437+ let dO = cw("", 500000, cy, cf, cA, cg, "", true, false)
1438+ let cV = dO._1
1439+ let gz = dO._3
1440+ let cj = dO._4
1441+ let cl = dO._5
1442+ let ci = dO._6
1443+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cV), toString(H(cn, b)), toString(cj), toString(cl), toString(ci), ch, toString(cy), toString(cA)], j))
14391444 }
14401445
14411446
14421447
1443-@Callable(dF)
1444-func evaluateGetREADONLY (gB,gC) = {
1445- let cM = bZ("", gB, gC, this)
1446- let cs = cM._1
1447- let ct = cM._2
1448- let ci = cM._5
1449- let ck = cM._6
1450- let ch = cM._7
1451- let cn = cM._8
1452- let cg = parseIntValue(cM._9)
1453- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cs), toString(ct), toString(ci), toString(ck), toString(ch), toString(cn), toString(cg)], j))
1448+@Callable(dI)
1449+func evaluateGetREADONLY (gE,gF) = {
1450+ let cN = ca("", gE, gF, this)
1451+ let ct = cN._1
1452+ let cu = cN._2
1453+ let cj = cN._5
1454+ let cl = cN._6
1455+ let ci = cN._7
1456+ let co = cN._8
1457+ let ch = parseIntValue(cN._9)
1458+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(ct), toString(cu), toString(cj), toString(cl), toString(ci), toString(co), toString(ch)], j))
14541459 }
14551460
14561461
1457-@Verifier(gD)
1458-func gE () = {
1459- let gF = {
1460- let dQ = eT()
1461- if ($isInstanceOf(dQ, "ByteVector"))
1462+@Verifier(gG)
1463+func gH () = {
1464+ let gI = {
1465+ let dT = eW()
1466+ if ($isInstanceOf(dT, "ByteVector"))
14621467 then {
1463- let eX = dQ
1464- eX
1468+ let fa = dT
1469+ fa
14651470 }
1466- else if ($isInstanceOf(dQ, "Unit"))
1467- then gD.senderPublicKey
1471+ else if ($isInstanceOf(dT, "Unit"))
1472+ then gG.senderPublicKey
14681473 else throw("Match error")
14691474 }
1470- let dQ = gD
1471- if ($isInstanceOf(dQ, "Order"))
1475+ let dT = gG
1476+ if ($isInstanceOf(dT, "Order"))
14721477 then {
1473- let dv = dQ
1474- let gG = aR()
1475- let aB = du(dv)
1476- let aC = sigVerify(dv.bodyBytes, dv.proofs[0], dv.senderPublicKey)
1477- let aD = sigVerify(dv.bodyBytes, dv.proofs[1], gG)
1478- if (if (if (aB)
1479- then aC
1480- else false)
1478+ let dy = dT
1479+ let gJ = aS()
1480+ let aC = dx(dy)
1481+ let aD = sigVerify(dy.bodyBytes, dy.proofs[0], dy.senderPublicKey)
1482+ let aE = sigVerify(dy.bodyBytes, dy.proofs[1], gJ)
1483+ if (if (if (aC)
14811484 then aD
14821485 else false)
1486+ then aE
1487+ else false)
14831488 then true
1484- else aA(aB, aC, aD)
1489+ else aB(aC, aD, aE)
14851490 }
1486- else if ($isInstanceOf(dQ, "SetScriptTransaction"))
1491+ else if ($isInstanceOf(dT, "SetScriptTransaction"))
14871492 then {
1488- let eU = dQ
1489- let gH = blake2b256(value(eU.script))
1490- let gI = fromBase64String(value(getString(aL, ay())))
1491- let gJ = scriptHash(this)
1492- if (if ((gI == gH))
1493- then (gJ != gH)
1493+ let eX = dT
1494+ let gK = blake2b256(value(eX.script))
1495+ let gL = fromBase64String(value(getString(aM, az())))
1496+ let gM = scriptHash(this)
1497+ if (if ((gL == gK))
1498+ then (gM != gK)
14941499 else false)
14951500 then true
1496- else sigVerify(gD.bodyBytes, gD.proofs[0], gF)
1501+ else sigVerify(gG.bodyBytes, gG.proofs[0], gI)
14971502 }
1498- else sigVerify(gD.bodyBytes, gD.proofs[0], gF)
1503+ else sigVerify(gG.bodyBytes, gG.proofs[0], gI)
14991504 }
15001505

github/deemru/w8io/873ac7e 
595.60 ms