tx · 7B4BJQ9ihYXCgDa9mmhZUBXr85d1mxT1rRuNQyCNYk6a

3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy:  -0.02700000 Waves

2023.03.24 14:58 [2504059] smart account 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy > SELF 0.00000000 Waves

{ "type": 13, "id": "7B4BJQ9ihYXCgDa9mmhZUBXr85d1mxT1rRuNQyCNYk6a", "fee": 2700000, "feeAssetId": null, "timestamp": 1679659133757, "version": 2, "chainId": 84, "sender": "3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy", "senderPublicKey": "9W33iCCNfmFxUbiC6XZcH5x7f6xfwC7Jb3BoExT5q2PV", "proofs": [ "5w7XEtN4rkAmr2yFXMQRC4zWJi4khhemz7mPv3PHV8ihMCwTHtUpsxrTXGjTCay5hEGdN8t7oUaQzKKZdFqmtGy7" ], "script": "base64:BgLwLwgCEggKBggIAQEBCBIFCgMBCAISAwoBARIDCgEBEgQKAggIEgQKAggIEgMKAQgSAwoBCBIDCgEIEgQKAggBEgASABIFCgMICAQSAwoBCBIDCgEIEgQKAggIEgQKAggIEgMKAQgSACIDU0VQIgZTQ0FMRTgiBU1VTFQ4Ig5QT09MV0VJR0hUTVVMVCIHd3JhcEVyciIDbXNnIgh0aHJvd0VyciIEc3RyZiIHYWRkcmVzcyIDa2V5IgNpb3oiA2lvZCIKZGVmYXVsdFZhbCIDaW9mIgNhYnMiA3ZhbCIDYWFsIgckbWF0Y2gwIgp2YWxBbnlMeXN0IgJhaSIGdmFsSW50IhtrZXlSZWZlcnJhbHNDb250cmFjdEFkZHJlc3MiHnJlZmVycmFsc0NvbnRyYWN0QWRkcmVzc09yRmFpbCIWa2V5UmVmZXJyYWxQcm9ncmFtTmFtZSIacmVmZXJyYWxQcm9ncmFtTmFtZURlZmF1bHQiE3JlZmVycmFsUHJvZ3JhbU5hbWUiEWtleUZhY3RvcnlBZGRyZXNzIhhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHAiGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHAiFElkeEZhY3RvcnlDZmdJZG9EYXBwIhVJZHhGYWN0b3J5Q2ZnVGVhbURhcHAiGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHAiFUlkeEZhY3RvcnlDZmdSZXN0RGFwcCIZSWR4RmFjdG9yeUNmZ1NsaXBwYWdlRGFwcCIUSWR4RmFjdG9yeUNmZ0Rhb0RhcHAiGklkeEZhY3RvcnlDZmdNYXJrZXRpbmdEYXBwIhpJZHhGYWN0b3J5Q2ZnR3d4UmV3YXJkRGFwcCIWSWR4RmFjdG9yeUNmZ0JpcmRzRGFwcCINa2V5RmFjdG9yeUNmZyIaa2V5RmFjdG9yeUxwMkFzc2V0c01hcHBpbmciCmxwQXNzZXRTdHIiEGtleUZhY3RvcnlMcExpc3QiJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzIhRrZXlGYWN0b3J5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhtrZXlGYWN0b3J5UG9vbFdlaWdodEhpc3RvcnkiC3Bvb2xBZGRyZXNzIgNudW0iGHJlYWRGYWN0b3J5QWRkcmVzc09yRmFpbCIKcmVhZExwTGlzdCIUcmVhZEZhY3RvcnlDZmdPckZhaWwiB2ZhY3RvcnkiGGdldEJvb3N0aW5nQWRkcmVzc09yRmFpbCIKZmFjdG9yeUNmZyIYZ2V0RW1pc3Npb25BZGRyZXNzT3JGYWlsIhdnZXRTdGFraW5nQWRkcmVzc09yRmFpbCIZZ2V0R3d4UmV3YXJkQWRkcmVzc09yRmFpbCITa2V5TWFuYWdlclB1YmxpY0tleSIaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudCIha2V5RW1pc3Npb25SYXRlUGVyQmxvY2tNYXhDdXJyZW50IhVrZXlFbWlzc2lvblN0YXJ0QmxvY2siHWtleUJvb3N0aW5nVjJMYXN0VXBkYXRlSGVpZ2h0IhVrZXlCb29zdGluZ1YySW50ZWdyYWwiG2tleUVtaXNzaW9uRHVyYXRpb25JbkJsb2NrcyITa2V5RW1pc3Npb25FbmRCbG9jayINa2V5TmV4dFBlcmlvZCIfa2V5R3d4UmV3YXJkRW1pc3Npb25TdGFydEhlaWdodCINSWR4Q2ZnQXNzZXRJZCITSWR4Q2ZnTWluTG9ja0Ftb3VudCIVSWR4Q2ZnTWluTG9ja0R1cmF0aW9uIhVJZHhDZmdNYXhMb2NrRHVyYXRpb24iEklkeENmZ01hdGhDb250cmFjdCIJa2V5Q29uZmlnIhVyZWFkQ29uZmlnQXJyYXlPckZhaWwiDG1hdGhDb250cmFjdCINZm9ybWF0Q29uZmlnUyIHYXNzZXRJZCINbWluTG9ja0Ftb3VudCIPbWluTG9ja0R1cmF0aW9uIg9tYXhMb2NrRHVyYXRpb24iDGZvcm1hdENvbmZpZyIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiC211c3RNYW5hZ2VyIgFpIgJwZCICcGsiDklkeExvY2tVc2VyTnVtIg1JZHhMb2NrQW1vdW50IgxJZHhMb2NrU3RhcnQiD0lkeExvY2tEdXJhdGlvbiINSWR4TG9ja1BhcmFtSyINSWR4TG9ja1BhcmFtQiITa2V5TG9ja1BhcmFtc1JlY29yZCILdXNlckFkZHJlc3MiGnJlYWRMb2NrUGFyYW1zUmVjb3JkT3JGYWlsIhdmb3JtYXRMb2NrUGFyYW1zUmVjb3JkUyIHdXNlck51bSIGYW1vdW50IgVzdGFydCIIZHVyYXRpb24iBnBhcmFtSyIGcGFyYW1CIhBsYXN0VXBkVGltZXN0YW1wIglnd3hBbW91bnQiFmZvcm1hdExvY2tQYXJhbXNSZWNvcmQiDmtleU5leHRVc2VyTnVtIhJrZXlVc2VyMk51bU1hcHBpbmciEmtleU51bTJVc2VyTWFwcGluZyIWa2V5TG9ja1BhcmFtVXNlckFtb3VudCIWa2V5TG9ja1BhcmFtU3RhcnRCbG9jayIUa2V5TG9ja1BhcmFtRHVyYXRpb24iDWtleUxvY2tQYXJhbUsiDWtleUxvY2tQYXJhbUIiFWtleUxvY2tQYXJhbUJ5UGVyaW9kSyIGcGVyaW9kIhVrZXlMb2NrUGFyYW1CeVBlcmlvZEIiF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50IiBrZXlTdGF0c0xvY2tzRHVyYXRpb25TdW1JbkJsb2NrcyISa2V5U3RhdHNMb2Nrc0NvdW50IhJrZXlTdGF0c1VzZXJzQ291bnQiIGtleVVzZXJCb29zdEVtaXNzaW9uTGFzdElOVEVHUkFMIiJrZXlVc2VyTHBCb29zdEVtaXNzaW9uTGFzdElOVEVHUkFMIglscEFzc2V0SWQiF2tleVVzZXJNYXhCb29zdElOVEVHUkFMIhhrZXlUb3RhbE1heEJvb3N0SU5URUdSQUwiIWtleVVzZXJCb29zdEF2YWxhaWJsZVRvQ2xhaW1Ub3RhbCITa2V5VXNlckJvb3N0Q2xhaW1lZCIRa2V5VG90YWxDYWNoZWRHd3giG2tleVRvdGFsQ2FjaGVkR3d4Q29ycmVjdGl2ZSIHa2V5Vm90ZSINYW1vdW50QXNzZXRJZCIMcHJpY2VBc3NldElkIgVlcG9jaCIVa2V5U3RhcnRIZWlnaHRCeUVwb2NoIhFrZXlDdXJyZW50RXBvY2hVaSIVa2V5Vm90aW5nUmVzdWx0U3Rha2VkIgxscEFzc2V0SWRTdHIiHWtleVZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsIiVrZXlWb3RpbmdSZXN1bHRTdGFrZWRMYXN0VXBkYXRlSGVpZ2h0IiFrZXlWb3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbExhc3QiFWtleVZvdGVTdGFrZWRJbnRlZ3JhbCIda2V5Vm90ZVN0YWtlZExhc3RVcGRhdGVIZWlnaHQiGWtleVZvdGVTdGFrZWRJbnRlZ3JhbExhc3QiD2tleVN0YWtlZEJ5VXNlciIOdXNlckFkZHJlc3NTdHIiD2ZhY3RvcnlDb250cmFjdCIQZW1pc3Npb25Db250cmFjdCIPc3Rha2luZ0NvbnRyYWN0IhFnd3hSZXdhcmRDb250cmFjdCIWbHBTdGFraW5nUG9vbHNDb250cmFjdCIZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdCIWdm90aW5nRW1pc3Npb25Db250cmFjdCIKYm9vc3RDb2VmZiIBQCIRZ2V0VG90YWxDYWNoZWRHd3giB2NvcnJlY3QiDmN1cnJlbnRFcG9jaFVpIg5rZXlUYXJnZXRFcG9jaCIRdGFyZ2V0RXBvY2hPcHRpb24iEXRvdGFsQ2FjaGVkR3d4UmF3IhVpc0NvcnJlY3Rpb25BY3RpdmF0ZWQiCmNvcnJlY3RpdmUiDEhpc3RvcnlFbnRyeSIEdHlwZSIEdXNlciIJbG9ja1N0YXJ0IgFrIgFiIgpoaXN0b3J5S0VZIgtoaXN0b3J5REFUQSIKU3RhdHNFbnRyeSIOdG90YWxMb2NrZWRJbmMiC2R1cmF0aW9uSW5jIgxsb2NrQ291bnRJbmMiDXVzZXJzQ291bnRJbmMiG2xvY2tzRHVyYXRpb25TdW1JbkJsb2Nrc0tFWSINbG9ja3NDb3VudEtFWSINdXNlcnNDb3VudEtFWSIOdG90YWxBbW91bnRLRVkiGGxvY2tzRHVyYXRpb25TdW1JbkJsb2NrcyIKbG9ja3NDb3VudCIKdXNlcnNDb3VudCILdG90YWxBbW91bnQiDWNhbGNHd3hBbW91bnQiBGtSYXciBGJSYXciAWgiBVNDQUxFIg9Mb2NrUGFyYW1zRW50cnkiDXVzZXJBbW91bnRLRVkiDXN0YXJ0QmxvY2tLRVkiC2R1cmF0aW9uS0VZIgRrS0VZIgRiS0VZIgxrQnlQZXJpb2RLRVkiDGJCeVBlcmlvZEtFWSIiZXh0cmFjdE9wdGlvbmFsUGF5bWVudEFtb3VudE9yRmFpbCIPZXhwZWN0ZWRBc3NldElkIgNwbXQiGWNhbGNVc2VyR3d4QW1vdW50QXRIZWlnaHQiDHRhcmdldEhlaWdodCIFRU1QVFkiEnVzZXIyTnVtTWFwcGluZ0tFWSINZ3d4QW1vdW50Q2FsYyIUY2FsY0N1cnJlbnRHd3hBbW91bnQiGmdldFZvdGluZ0VtaXNzaW9uRXBvY2hJbmZvIg0kdDAxNzE5MDE3NDgwIhJsYXN0RmluYWxpemVkRXBvY2giF2N1cnJlbnRFcG9jaFN0YXJ0SGVpZ2h0IhhnZXRQb29sQXNzZXRzQnlMcEFzc2V0SWQiEGlkeEFtb3VudEFzc2V0SWQiD2lkeFByaWNlQXNzZXRJZCIHcG9vbENmZyIUZ2V0VXNlclZvdGVGaW5hbGl6ZWQiDSR0MDE4MTcxMTgyNTEiDSR0MDE4MjU0MTgzMjkiC3VzZXJWb3RlS2V5Igh1c2VyVm90ZSIRZ2V0VXNlclZvdGVTdGFrZWQiDHN0YWtlZEJ5VXNlciIVZ2V0Vm90aW5nUmVzdWx0U3Rha2VkIg0kdDAxODg3MzE4OTUzIhd2b3RpbmdSZXN1bHRTdGFrZWRTdGFydCISdm90aW5nUmVzdWx0U3Rha2VkIh1nZXRWb3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbCINJHQwMTkzMTUxOTM5NSIedm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWxQcmV2IiJ2b3RpbmdSZXN1bHRTdGFrZWRMYXN0VXBkYXRlSGVpZ2h0Ihx2b3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbERoIhp2b3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbCIhcmVmcmVzaFZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsIg9zdGFrZWRWb3RlRGVsdGEiDSR0MDIwMjMyMjAzMTIiFXZvdGluZ1Jlc3VsdFN0YWtlZE5ldyIZZ2V0VXNlclZvdGVTdGFrZWRJbnRlZ3JhbCINJHQwMjA5MjMyMTAwMyIOdXNlclZvdGVTdGFrZWQiGnVzZXJWb3RlU3Rha2VkSW50ZWdyYWxQcmV2Ih51c2VyVm90ZVN0YWtlZExhc3RVcGRhdGVIZWlnaHQiGHVzZXJWb3RlU3Rha2VkSW50ZWdyYWxEaCIWdXNlclZvdGVTdGFrZWRJbnRlZ3JhbCIZcmVmcmVzaFZvdGVTdGFrZWRJbnRlZ3JhbCIEZWRnZSINJHQwMjE3OTEyMTg3MSIRdXNlclZvdGVGaW5hbGl6ZWQiB2FjdGlvbnMiE3ZvdGluZ1Jlc3VsdEFjdGlvbnMiC3ZvdGVBY3Rpb25zIhtnZXRTdGFrZWRWb3Rlc0ludGVncmFsc0RpZmYiDSR0MDIyNzI1MjI4MDUiHXVzZXJWb3RlU3Rha2VkSW50ZWdyYWxMYXN0S2V5Ihp1c2VyVm90ZVN0YWtlZEludGVncmFsTGFzdCIhdm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWxMYXN0S2V5Ih52b3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbExhc3QiGnVzZXJWb3RlU3Rha2VkSW50ZWdyYWxEaWZmIh52b3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbERpZmYiHHJlZnJlc2hCb29zdEVtaXNzaW9uSW50ZWdyYWwiEnd4RW1pc3Npb25QZXJCbG9jayIgYm9vc3RpbmdWMkxhc3RVcGRhdGVIZWlnaHRPcHRpb24iGGJvb3N0aW5nVjJJbmdlcmdhbE9wdGlvbiILZW1pc3Npb25FbmQiAmRoIhBsYXN0VXBkYXRlSGVpZ2h0IhVib29zdEVtaXNzaW9uUGVyQmxvY2siGWJvb3N0RW1pc3Npb25JbnRlZ3JhbFByZXYiFWJvb3N0RW1pc3Npb25JbnRlZ3JhbCIUaW50ZXJuYWxDbGFpbVd4Qm9vc3QiCHJlYWRPbmx5IhB1c2VyUmVjb3JkT3B0aW9uIg91c2VyUmVjb3JkQXJyYXkiCnVzZXJOdW1TdHIiCEVNUFRZU1RSIgpwb29sV2VpZ2h0Ig5wb29sQWRkcmVzc1N0ciIidXNlckxwQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWSIgdXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWxLRVkiHXVzZXJCb29zdEVtaXNzaW9uTGFzdEludGVncmFsIhl1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsIg0kdDAyNjQwNjI2NTQ1IhtzdGFrZWRWb3Rlc0ludGVncmFsc0FjdGlvbnMiFHVzZXJWb3RlSW50ZWdyYWxEaWZmIhZ0b3RhbFZvdGVzSW50ZWdyYWxEaWZmIh1wb29sVXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbCIhdXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsTmV3IglkYXRhU3RhdGUiBWRlYnVnIgtsb2NrQWN0aW9ucyIIY2ZnQXJyYXkiCmFzc2V0SWRTdHIiCXBtdEFtb3VudCIObmV4dFVzZXJOdW1LRVkiDnVzZXJJc0V4aXN0aW5nIgdjb2VmZlg4Ig5nV3hBbW91bnRTdGFydCITZ1d4UGFyYW1zUmVzdWx0TGlzdCIDYXJyIhFmYWN0b3J5QWRkcmVzc1N0ciIObG9ja0Fzc2V0SWRTdHIiC21pbkR1cmF0aW9uIgttYXhEdXJhdGlvbiILY2hlY2tDYWxsZXIiD3JlZmVycmVyQWRkcmVzcyIJc2lnbmF0dXJlIg0kdDAzMTEzNTMxMjAwIhFsb2NrQWN0aW9uc1Jlc3VsdCIPcmVmZXJyYWxBZGRyZXNzIgZyZWZJbnYiEXVwZGF0ZVJlZkFjdGl2aXR5Ig0kdDAzMTY1ODMxNzIzIg1kZWx0YUR1cmF0aW9uIgp1c2VyQW1vdW50Igxsb2NrRHVyYXRpb24iB2xvY2tFbmQiEXJlbWFpbmluZ0R1cmF0aW9uIg11c2VyQW1vdW50TmV3Ig9sb2NrRHVyYXRpb25OZXciDGxvY2tTdGFydE5ldyILY3VyclVzZXJHd3giB2d3eERpZmYiF3RvdGFsQ2FjaGVkR3d4Q29ycmVjdGVkIg0kdDAzNDgxMDM0OTEyIhJ1c2VyQm9vc3RBdmFpbGFibGUiDSR0MDM1MDQ0MzUxNDUiEG1heERlbHRhRHVyYXRpb24iF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5jAEAAWECAl9fAAFiAAgAAWMAgMLXLwABZAUBYwEBZQEBZgkAuQkCCQDMCAICDmJvb3N0aW5nLnJpZGU6CQDMCAIFAWYFA25pbAIBIAEBZwEBZgkAAgEJAQFlAQUBZgEBaAIBaQFqCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUBaQUBagkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUBagIP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BQNuaWwFAWEBAmFEBQJhegJhQQJhQgJhQwJheAkBAmF5BQUCYXoJAKQDAQUCYUEJAKQDAQUCYUIJAKQDAQUCYUMFAmF4AQJhRQAEAXIJAKIIAQkBAmFmAAMJAAECBQFyAgZTdHJpbmcEAmFGBQFyCQDZBAEFAmFGAwkAAQIFAXICBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECYUcABAFyCQCiCAEJAQJhZwADCQABAgUBcgIGU3RyaW5nBAJhRgUBcgkA2QQBBQJhRgMJAAECBQFyAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmFIAQJhSQQCYUoJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQBcgkBAmFFAAMJAAECBQFyAgpCeXRlVmVjdG9yBAJhSwUBcgMJAAACCAUCYUkPY2FsbGVyUHVibGljS2V5BQJhSwYFAmFKAwkAAQIFAXICBFVuaXQDCQAAAggFAmFJBmNhbGxlcgUEdGhpcwYFAmFKCQACAQILTWF0Y2ggZXJyb3IAAmFMAAEAAmFNAAIAAmFOAAMAAmFPAAQAAmFQAAUAAmFRAAYBAmFSAQJhUwkAuQkCCQDMCAICCiVzJXNfX2xvY2sJAMwIAgUCYVMFA25pbAUBYQECYVQBAmFTCQC1CQIJAQFoAgUEdGhpcwkBAmFSAQUCYVMFAWEBAmFVCAJhVgJhVwJhWAJhWQJhWgJiYQJiYgJiYwkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgUCYVYJAMwIAgUCYVcJAMwIAgUCYVgJAMwIAgUCYVkJAMwIAgUCYVoJAMwIAgUCYmEJAMwIAgUCYmIJAMwIAgUCYmMFA25pbAUBYQECYmQHAmFWAmFXAmFYAmFZAmFaAmJhAmJjCQECYVUIBQJhVgkApAMBBQJhVwkApAMBBQJhWAkApAMBBQJhWQkApAMBBQJhWgkApAMBBQJiYQkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkApAMBBQJiYwECYmUAAg8lc19fbmV4dFVzZXJOdW0BAmJmAQJhUwkAuQkCCQDMCAICGSVzJXMlc19fbWFwcGluZ19fdXNlcjJudW0JAMwIAgUCYVMFA25pbAUBYQECYmcBAVYJALkJAgkAzAgCAhklcyVzJXNfX21hcHBpbmdfX251bTJ1c2VyCQDMCAIFAVYFA25pbAUBYQECYmgBAmFWCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQJhVgkAzAgCAgZhbW91bnQFA25pbAUBYQECYmkBAmFWCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQJhVgkAzAgCAgVzdGFydAUDbmlsBQFhAQJiagECYVYJALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFAmFWCQDMCAICCGR1cmF0aW9uBQNuaWwFAWEBAmJrAQJhVgkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUCYVYJAMwIAgIBawUDbmlsBQFhAQJibAECYVYJALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFAmFWCQDMCAICAWIFA25pbAUBYQECYm0CAmFWAmJuCQC5CQIJAMwIAgIXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAMwIAgUCYVYJAMwIAgIBawkAzAgCBQJibgUDbmlsBQFhAQJibwICYVYCYm4JALkJAgkAzAgCAhclcyVkJXMlZF9fcGFyYW1CeVBlcmlvZAkAzAgCBQJhVgkAzAgCAgFiCQDMCAIFAmJuBQNuaWwFAWEBAmJwAAIeJXMlc19fc3RhdHNfX2FjdGl2ZVRvdGFsTG9ja2VkAQJicQACJSVzJXNfX3N0YXRzX19sb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MBAmJyAAIXJXMlc19fc3RhdHNfX2xvY2tzQ291bnQBAmJzAAIdJXMlc19fc3RhdHNfX2FjdGl2ZVVzZXJzQ291bnQBAmJ0AQJhVgkAuQkCCQDMCAICICVzJWRfX3VzZXJCb29zdEVtaXNzaW9uTGFzdEludFYyCQDMCAIFAmFWBQNuaWwFAWEBAmJ1AgJhVgJidgkAuQkCCQDMCAICICVzJWRfX3VzZXJCb29zdEVtaXNzaW9uTGFzdEludFYyCQDMCAIFAmFWCQDMCAIFAmJ2BQNuaWwFAWEBAmJ3AQJhVgkAuQkCCQDMCAICESVzJWRfX21heEJvb3N0SW50CQDMCAIFAmFWBQNuaWwFAWEBAmJ4AAIYJXMl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Y2hlZEd3eENvcnJlY3Rpb25fX2FjdGl2YXRpb25FcG9jaAUDbmlsBQFhBAJjZgkAmggCBQR0aGlzBQJjZQQCY2cJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmJBAAAABAJjaAMJAQlpc0RlZmluZWQBBQJjZgkAZwIFAmNkCQEFdmFsdWUBBQJjZgcEAmNpAwMFAmNoBQJjYwcJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmJCAAAAAAAJAJYDAQkAzAgCAAAJAMwIAgkAZAIFAmNnBQJjaQUDbmlsAQJjaggCY2sCY2wCYVcCY20CYVkCY24CY28CYUkEAmNwCQC5CQIJAMwIAgIRJXMlcyVzJXNfX2hpc3RvcnkJAMwIAgUCY2sJAMwIAgUCY2wJAMwIAgkA2AQBCAUCYUkNdHJhbnNhY3Rpb25JZAUDbmlsBQFhBAJjcQkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQgFCWxhc3RCbG9jawZoZWlnaHQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFAmFXCQDMCAIJAKQDAQUCY20JAMwIAgkApAMBBQJhWQkAzAgCCQCkAwEFAmNuCQDMCAIJAKQDAQUCY28FA25pbAUBYQkBC1N0cmluZ0VudHJ5AgUCY3AFAmNxAQJjcgQCY3MCY3QCY3UCY3YEAmN3CQECYnEABAJjeAkBAmJyAAQCY3kJAQJicwAEAmN6CQECYnAABAJjQQkBAWsCBQR0aGlzBQJjdwQCY0IJAQFrAgUEdGhpcwUCY3gEAmNDCQEBawIFBHRoaXMFAmN5BAJjRAkBAWsCBQR0aGlzBQJjegkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3cJAGQCBQJjQQUCY3QJAMwIAgkBDEludGVnZXJFbnRyeQIFAmN4CQBkAgUCY0IFAmN1CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjeQkAZAIFAmNDBQJjdgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3oJAGQCBQJjRAUCY3MFA25pbAECY0UDAmNGAmNHAmNIBAJjSQDoBwkAaQIJAGQCCQBoAgUCY0YFAmNIBQJjRwUCY0kBAmNKCAJhUwJhVgJhVwJhWAJhWQJjbgJjbwJibgQCY0sJAQJiaAEFAmFWBAJjTAkBAmJpAQUCYVYEAmNNCQECYmoBBQJhVgQCY04JAQJiawEFAmFWBAJjTwkBAmJsAQUCYVYEAmNQCQECYm0CBQJhVgUCYm4EAmNRCQECYm8CBQJhVgUCYm4EAmJjCQECY0UDBQJjbgUCY28FBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY0sFAmFXCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjTAUCYVgJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNNBQJhWQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY04FAmNuCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjTwUCY28JAMwIAgkBDEludGVnZXJFbnRyeQIFAmNQBQJjbgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY1EFAmNvCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhUgEFAmFTCQECYmQHBQJhVgUCYVcFAmFYBQJhWQUCY24FAmNvBQJiYwUDbmlsAQJjUgICYUkCY1MDCQBmAgkAkAMBCAUCYUkIcGF5bWVudHMAAQkAAgECG29ubHkgb25lIHBheW1lbnQgaXMgYWxsb3dlZAMJAAACCQCQAwEIBQJhSQhwYXltZW50cwAAAAAEAmNUCQCRAwIIBQJhSQhwYXltZW50cwAAAwkBAiE9AgkBBXZhbHVlAQgFAmNUB2Fzc2V0SWQFAmNTCQACAQIbaW52YWxpZCBhc3NldCBpZCBpbiBwYXltZW50CAUCY1QGYW1vdW50AQJjVQICYVMCY1YEAmNXAgVlbXB0eQQCY1gJAQJiZgEFAmFTBAJhVgkBC3ZhbHVlT3JFbHNlAgkAoggBBQJjWAUCY1cEAmNuCQELdmFsdWVPckVsc2UCCQCfCAEJAQJiawEFAmFWAAAEAmNvCQELdmFsdWVPckVsc2UCCQCfCAEJAQJibAEFAmFWAAAEAmNZCQECY0UDBQJjbgUCY28FAmNWBAJiYwMJAGYCAAAFAmNZAAAFAmNZBQJiYwECY1oBAmFTCQECY1UCBQJhUwUGaGVpZ2h0AQJkYQAEAmRiBAJjZAkBBXZhbHVlAQkAmggCBQJiWQkBAmJIAAQCZGMJAGUCBQJjZAABAwkAZgIAAAUCZGMJAQFnAQINaW52YWxpZCBlcG9jaAkAlAoCBQJjZAUCZGMEAmNkCAUCZGICXzEEAmRjCAUCZGICXzIEAmRkCQEFdmFsdWUBCQCaCAIFAmJZCQECYkcBBQJjZAkAlAoCBQJkYwUCZGQBAmRlAQJiSgQCZGYABAQCZGcABQQCZGgKAAJjYQkA/AcEBQJiUwIgZ2V0UG9vbENvbmZpZ0J5THBBc3NldElkUkVBRE9OTFkJAMwIAgUCYkoFA25pbAUDbmlsAwkAAQIFAmNhAglMaXN0W0FueV0FAmNhCQACAQkArAICCQADAQUCY2ECHiBjb3VsZG4ndCBiZSBjYXN0IHRvIExpc3RbQW55XQQCYkQKAAJjYQkAkQMCBQJkaAUCZGYDCQABAgUCY2ECBlN0cmluZwUCY2EJAAIBCQCsAgIJAAMBBQJjYQIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBAJiRQoAAmNhCQCRAwIFAmRoBQJkZwMJAAECBQJjYQIGU3RyaW5nBQJjYQkAAgEJAKwCAgkAAwEFAmNhAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcJAJQKAgUCYkQFAmJFAQJkaQICYkoCYlIEAmFTCQERQGV4dHJOYXRpdmUoMTA2MikBBQJiUgQCZGoJAQJkYQAEAmRjCAUCZGoCXzEEAmRkCAUCZGoCXzIEAmRrCQECZGUBBQJiSgQCYkQIBQJkawJfMQQCYkUIBQJkawJfMgQCZGwJAQJiQwQFAmJEBQJiRQUCYVMFAmRjBAJkbQkBC3ZhbHVlT3JFbHNlAgkAmggCBQJiWQUCZGwAAAUCZG0BAmRuAgJiSgJiUgQCZG8JAQt2YWx1ZU9yRWxzZQIJAJoIAgUCYlUJAQJiUQIFAmJSBQJiSgAABAJkbQkBAmRpAgUCYkoFAmJSAwkAAAIFAmRvAAAAAAUCZG0BAmRwAQJiSgQCZHEJAQJkYQAEAmRjCAUCZHECXzEEAmRkCAUCZHECXzIEAmRyCQELdmFsdWVPckVsc2UCCQCaCAIFAmJZCQECYkkCBQJiSgUCZGMAAAQCZHMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmJJAgUCYkoFAmRjBQJkcgUCZHMBAmR0AQJiSgQCZHUJAQJkYQAEAmRjCAUCZHUCXzEEAmRkCAUCZHUCXzIEAmRzCQECZHABBQJiSgQCZHYJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmJLAgUCYkoFAmRjAAAEAmR3CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJiTAIFAmJKBQJkYwUCZGQEAmR4CQBlAgUGaGVpZ2h0BQJkdwQCZHkJAGQCCQBoAgUCZHgFAmRzBQJkdgUCZHkBAmR6AgJiSgJkQQQCZEIJAQJkYQAEAmRjCAUCZEICXzEEAmRkCAUCZEICXzIEAmRzCQECZHABBQJiSgQCZEMJAGQCBQJkcwUCZEEEAmR5CQECZHQBBQJiSgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJJAgUCYkoFAmRjBQJkQwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJMAgUCYkoFAmRjBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJiSwIFAmJKBQJkYwUCZHkFA25pbAECZEQCAmJKAmJSBAJkRQkBAmRhAAQCZGMIBQJkRQJfMQQCZGQIBQJkRQJfMgQCYVMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmJSBAJkRgkBAmRuAgUCYkoFAmJSBAJkRwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYk4DBQJiSgUCYVMFAmRjAAAEAmRICQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJiTwMFAmJKBQJhUwUCZGMFAmRkBAJkSQkAZQIFBmhlaWdodAUCZEgEAmRKCQBkAgkAaAIFAmRJBQJkRgUCZEcFAmRKAQJkSwMCYkoCYlICZEwEAmRNCQECZGEABAJkYwgFAmRNAl8xBAJkZAgFAmRNAl8yBAJhUwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYlIEAmROCQECZGkCBQJiSgUCYlIEAmRPAwkAAAIFAmROAAAFA25pbAQCZEEDBQJkTAUCZE4JAQEtAQUCZE4EAmRQCQECZHoCBQJiSgUCZEEEAmRKCQECZEQCBQJiSgUCYlIEAmRRCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYk8DBQJiSgUCYVMFAmRjBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJiTgMFAmJKBQJhUwUCZGMFAmRKBQNuaWwJAM4IAgUCZFAFAmRRBQJkTwECZFICAmJKAmJSBAJkUwkBAmRhAAQCZGMIBQJkUwJfMQQCZGQIBQJkUwJfMgQCYVMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmJSBAJkVAkBAmJQAwUCYkoFAmFTBQJkYwQCZFUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCZFQAAAQCZFYJAQJiTQMFAmJKBQJhUwUCZGMEAmRXCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmRWAAAEAmRKCQECZEQCBQJiSgUCYlIEAmR5CQECZHQBBQJiSgQCZFgJAGUCBQJkSgUCZFUEAmRZCQBlAgUCZHkFAmRXCQCVCgMJAMwIAgkBDEludGVnZXJFbnRyeQIFAmRUBQJkSgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZFYFAmR5BQNuaWwFAmRYBQJkWQECZFoABAJlYQkBAW4CBQJiVAkBAmFoAAQCZWIJAJoIAgUCYlQJAQJhawAEAmVjCQCaCAIFBHRoaXMJAQJhbAAEAmVkCQEBbgIFAmJUCQECYW4ABAJjSAMJAGYCBQZoZWlnaHQFAmVkBQJlZAUGaGVpZ2h0BAJlZQQBcgUCZWIDCQABAgUBcgIDSW50BAJlZgUBcgkAlgMBCQDMCAIJAGUCBQJjSAUCZWYJAMwIAgAABQNuaWwDCQABAgUBcgIEVW5pdAAACQACAQILTWF0Y2ggZXJyb3IEAmVnCQBpAgkAaAIFAmVhCQBlAgUCYloAAQUCYloEAmVoCQELdmFsdWVPckVsc2UCBQJlYwAABAJlaQkAZAIJAGgCBQJlZwUCZWUFAmVoCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhbAAFAmVpCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWsABQZoZWlnaHQFA25pbAUCZWkBAmVqAwJiSgJiUgJlawQCZWwJAJ0IAgUEdGhpcwkBAmFSAQUCYlIDCQAAAgUCZWwFBHVuaXQJAJUKAwAABQNuaWwCFXVzZXJSZWNvcmQ6OmlzOjplbXB0eQQCZW0JALUJAgkBBXZhbHVlAQUCZWwFAWEEAmVuCQCRAwIFAmVtBQJhTAQCZW8CBWVtcHR5BAJlcAMJAQIhPQIFAmJKBQJlbwQCZXEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJiUwkBAU4BBQJiSgkArAICAhV1bnN1cHBvcnRlZCBscCBhc3NldCAFAmJKCQERQGV4dHJOYXRpdmUoMTA1MCkCBQJiUwkBAVIBBQJlcQMFAmVrAAAJAAIBCQCsAgICKG5vdCByZWFkb25seSBtb2RlOiB1bnN1cHBvcnRlZCBscCBhc3NldCAFAmJKBAJlcgkBAmJ1AgUCZW4FAmJKBAJlcwkBAmJ0AQUCZW4EAmV0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmVyCQEBawIFBHRoaXMFAmVzBAJlaQgJAQJkWgACXzIEAmV1CQBlAgUCZWkFAmV0AwkAZgIAAAUCZXUJAAIBAhJ3cm9uZyBjYWxjdWxhdGlvbnMEAmV2CQECZFICBQJiSgUCYlIEAmV3CAUCZXYCXzEEAmV4CAUCZXYCXzIEAmV5CAUCZXYCXzMEAmV6CQBrAwUCZXUFAmVwBQFkBAJlQQMJAAACBQJleQAAAAAJAGsDBQJlegUCZXgFAmV5BAJlQgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJlcgUCZWkFA25pbAUCZXcEAmVDCQC5CQIJAMwIAgkApAMBBQJldAkAzAgCCQCkAwEFAmV1CQDMCAIJAKQDAQUCZXAJAMwIAgkApAMBBQJleAkAzAgCCQCkAwEFAmV5BQNuaWwCAToJAJUKAwUCZUEFAmVCBQJlQwECZUQCAmFJAmFZBAJlRQkBAmF3AAQCZUYJAJEDAgUCZUUFAmFxBAJhegkA2QQBBQJlRgQCYUEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlRQUCYXIEAmFCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZUUFAmFzBAJhQwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVFBQJhdAMJAQIhPQIJAJADAQgFAmFJCHBheW1lbnRzAAEJAAIBAjRpbnZhbGlkIHBheW1lbnQgLSBleGFjdCBvbmUgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBAJjVAkAkQMCCAUCYUkIcGF5bWVudHMAAAQCZUcIBQJjVAZhbW91bnQDCQECIT0CBQJhegkBBXZhbHVlAQgFAmNUB2Fzc2V0SWQJAAIBCQCsAgIJAKwCAgIeaW52YWxpZCBhc3NldCBpcyBpbiBwYXltZW50IC0gBQJlRgIMIGlzIGV4cGVjdGVkBAJlSAkBAmJlAAQCYlIJAKUIAQgFAmFJBmNhbGxlcgQCZUkJAQlpc0RlZmluZWQBCQCiCAEJAQJiZgEFAmJSBAJlbgMFAmVJCQEFdmFsdWUBCQCiCAEJAQJiZgEFAmJSCQCkAwEJAQFuAgUEdGhpcwUCZUgEAmFWCQENcGFyc2VJbnRWYWx1ZQEFAmVuBAJjbQUGaGVpZ2h0BAJjTAkBAmJpAQUCZW4EAmNNCQECYmoBBQJlbgQCY0sJAQJiaAEFAmVuAwMJAGYCBQJhQQUCZUcJAQIhPQIIBQJhSQZjYWxsZXIFAmJXBwkAAgEJAKwCAgIiYW1vdW50IGlzIGxlc3MgdGhlbiBtaW5Mb2NrQW1vdW50PQkApAMBBQJhQQMJAGYCBQJhQgUCYVkJAAIBCQCsAgICLXBhc3NlZCBkdXJhdGlvbiBpcyBsZXNzIHRoZW4gbWluTG9ja0R1cmF0aW9uPQkApAMBBQJhQgMJAGYCBQJhWQUCYUMJAAIBCQCsAgICMHBhc3NlZCBkdXJhdGlvbiBpcyBncmVhdGVyIHRoZW4gbWF4TG9ja0R1cmF0aW9uPQkApAMBBQJhQwMDBQJlSQkAZwIJAGQCCQEBbgIFBHRoaXMFAmNMCQEBbgIFBHRoaXMFAmNNBQJjbQcJAAIBAjZ0aGVyZSBpcyBhbiBhY3RpdmUgbG9jayAtIGNvbnNpZGVyIHRvIHVzZSBpbmNyZWFzZUxvY2sDCQBmAgkBAWsCBQR0aGlzBQJjSwAACQACAQkArAICAjR0aGVyZSBhcmUgbG9ja2VkIFdYcyAtIGNvbnNpZGVyIHRvIHVzZSBpbmNyZWFzZUxvY2sgBQJjSwQCZUoJAGsDBQJhWQUBYwUCYUMEAmVLCQBrAwUCZUcFAmVKBQFjBAJlTAkBAXEBCQD8BwQFAmF4AhVjYWxjR3d4UGFyYW1zUkVBRE9OTFkJAMwIAgUCZUsJAMwIAgUCY20JAMwIAgUCYVkFA25pbAUDbmlsBAJjbgkBAXQBCQCRAwIFAmVMAAAEAmNvCQEBdAEJAJEDAgUCZUwAAQQCYm4JAKQDAQkBAXQBCQCRAwIFAmVMAAIEAmNnCQECY2IBBwQCZXMJAQJidAEFAmVuBAJlaQgJAQJkWgACXzIEAmVNAwUCZUkFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZUgJAGQCBQJhVgABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiZgEFAmJSBQJlbgkAzAgCCQELU3RyaW5nRW50cnkCCQECYmcBBQJlbgUCYlIFA25pbAkAlAoCCQDOCAIJAM0IAgkAzggCCQDOCAIFAmVNCQECY0oIBQJiUgUCZW4FAmVHBQJjbQUCYVkFAmNuBQJjbwUCYm4JAQJjcgQFAmVHBQJhWQABAwUCZUkAAAABCQECY2oIAgRsb2NrBQJiUgUCZUcFAmNtBQJhWQUCY24FAmNvBQJhSQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZXMFAmVpCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYkEACQBkAgUCY2cFAmVLBQNuaWwFAmVLEwJhSQELY29uc3RydWN0b3IGAmVOAmVPAmFBAmVQAmVRAmF4BAJlUgkBAmFIAQUCYUkDCQAAAgUCZVIFAmVSCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJiZQAAAAkAzAgCCQELU3RyaW5nRW50cnkCCQECYXYACQECYUQFBQJlTwUCYUEFAmVQBQJlUQUCYXgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAUEABQJlTgUDbmlsCQECY3IEAAAAAAAAAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYUkBB2xvY2tSZWYDAmFZAmVTAmVUBAJlVQkBAmVEAgUCYUkFAmFZBAJlVggFAmVVAl8xBAJlSwgFAmVVAl8yBAJlVwkApQgBCAUCYUkGY2FsbGVyBAJlWAMDCQAAAgUCZVMCAAYJAAACBQJlVAEABQR1bml0CQD8BwQFAXcCCmNyZWF0ZVBhaXIJAMwIAgUBegkAzAgCBQJlUwkAzAgCBQJlVwkAzAgCBQJlVAUDbmlsBQNuaWwDCQAAAgUCZVgFAmVYBAJlWQkA/AcEBQJheAIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCCQClCAEIBQJhSQZjYWxsZXIJAMwIAgUCZUsFA25pbAUDbmlsAwkAAAIFAmVZBQJlWQkAlAoCBQJlVgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhSQEEbG9jawECYVkEAmVaCQECZUQCBQJhSQUCYVkEAmVWCAUCZVoCXzEEAmVLCAUCZVoCXzIEAmVZCQD8BwQFAmF4AhZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5CQDMCAIJAKUIAQgFAmFJBmNhbGxlcgkAzAgCBQJlSwUDbmlsBQNuaWwDCQAAAgUCZVkFAmVZCQCUCgIFAmVWBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFJAQxpbmNyZWFzZUxvY2sBAmZhBAJlRQkBAmF3AAQCZUYJAJEDAgUCZUUFAmFxBAJhegkA2QQBBQJlRgQCYUIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlRQUCYXMEAmFDCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZUUFAmF0BAJlRwkBAmNSAgUCYUkFAmF6BAJiUgkApQgBCAUCYUkGY2FsbGVyBAJlbQkBAmFUAQUCYlIEAmVuCQCRAwIFAmVtBQJhTAQCZmIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlbQUCYU0EAmNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZW0FAmFOBAJmYwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVtBQJhTwQCZmQJAGQCBQJjbQUCZmMEAmZlCQCWAwEJAMwIAgkAZQIFAmZkBQZoZWlnaHQJAMwIAgAABQNuaWwEAmZmCQBkAgUCZmIFAmVHBAJmZwkAZAIFAmZlBQJmYQMJAGYCAAAFAmZhCQACAQIaZHVyYXRpb24gaXMgbGVzcyB0aGVuIHplcm8DCQBmAgUCYUIFAmZnCQACAQkArAICAi1sb2NrRHVyYXRpb25OZXcgaXMgbGVzcyB0aGVuIG1pbkxvY2tEdXJhdGlvbj0JAKQDAQUCYUIDCQBmAgUCZmcFAmFDCQACAQkArAICAkRkZWx0YUR1cmF0aW9uICsgZXhpc3RlZExvY2tEdXJhdGlvbiBpcyBncmVhdGVyIHRoZW4gbWF4TG9ja0R1cmF0aW9uPQkApAMBBQJhQwQCZUoJAGsDBQJmZwUBYwUCYUMEAmVLCQBrAwUCZmYFAmVKBQFjBAJlWQkA/AcEBQJheAIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCCQClCAEIBQJhSQZjYWxsZXIJAMwIAgUCZUsFA25pbAUDbmlsAwkAAAIFAmVZBQJlWQQCZmgFBmhlaWdodAQCZUwJAQFxAQkA/AcEBQJheAIVY2FsY0d3eFBhcmFtc1JFQURPTkxZCQDMCAIFAmVLCQDMCAIFAmZoCQDMCAIFAmZnBQNuaWwFA25pbAQCY24JAQF0AQkAkQMCBQJlTAAABAJjbwkBAXQBCQCRAwIFAmVMAAEEAmJuCQCkAwEJAQF0AQkAkQMCBQJlTAACBAJmaQkBAmNaAQUCYlIEAmZqCQBlAgUCZUsFAmZpAwkAZgIAAAUCZmoJAAIBCQCsAgICGGd3eERpZmYgaXMgbGVzcyB0aGVuIDA6IAkApAMBBQJmagQCY2cJAQJjYgEHBAJmawkBAmNiAQYJAM4IAgkAzQgCCQDOCAIJAQJjSggFAmJSBQJlbgUCZmYFAmZoBQJmZwUCY24FAmNvBQJibgkBAmNyBAUCZUcFAmZhAAAAAAkBAmNqCAIEbG9jawUCYlIFAmVHBQJjbQUCZmcFAmNuBQJjbwUCYUkJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJiQQAJAGQCBQJjZwUCZmoFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhSQEMY2xhaW1XeEJvb3N0AgJiSgJiUgMJAQIhPQIFAmJVCAUCYUkGY2FsbGVyCQACAQIScGVybWlzc2lvbnMgZGVuaWVkBAJmbAkBAmVqAwUCYkoFAmJSBwQCZm0IBQJmbAJfMQQCZUIIBQJmbAJfMgQCZUMIBQJmbAJfMwkAlAoCBQJlQgkAzAgCBQJmbQUDbmlsAmFJARRjbGFpbVd4Qm9vc3RSRUFET05MWQICYkoCYlIEAmZuCQECZWoDBQJiSgUCYlIGBAJmbQgFAmZuAl8xBAJlQggFAmZuAl8yBAJlQwgFAmZuAl8zCQCUCgIFA25pbAkAzAgCBQJmbQkAzAgCBQJlQwUDbmlsAmFJAQZ1bmxvY2sBAmFTBAJlbQkBAmFUAQUCYVMEAmVuCQCRAwIFAmVtBQJhTAQCZmIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlbQUCYU0EAmNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZW0FAmFOBAJmYwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVtBQJhTwQCZmQJAGQCBQJjbQUCZmMEAmVFCQECYXcABAJhegkA2QQBCQCRAwIFAmVFBQJhcQMJAGcCBQJmZAUGaGVpZ2h0CQACAQkArAICCQCsAgICBXdhaXQgCQCkAwEFAmZkAgogdG8gdW5sb2NrAwkAZwIAAAUCZmIJAAIBAhFub3RoaW5nIHRvIHVubG9jawQCYm4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUCYXgJAQJhbwAAAAkAzQgCCQDNCAIJAM4IAgkBAmNKCAUCYVMFAmVuAAAFAmNtBQJmYwAAAAAJAKQDAQUCYm4JAQJjcgQJAQEtAQUCZmIAAAAAAP///////////wEJAQJjaggCBnVubG9jawUCYVMFAmZiBQJjbQUCZmMAAAAABQJhSQkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYVMFAmZiBQJhegJhSQETZ3d4VXNlckluZm9SRUFET05MWQECYVMEAmJjCQECY1oBBQJhUwkAlAoCBQNuaWwJAMwIAgUCYmMFA25pbAJhSQEXdXNlck1heER1cmF0aW9uUkVBRE9OTFkBAmJSBAJlRQkBAmF3AAQCYUMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlRQUCYXQEAmVsCQCdCAIFBHRoaXMJAQJhUgEFAmJSAwkAAAIFAmVsBQR1bml0CQCUCgIFA25pbAkAlAoCAgRsb2NrBQJhQwQCZW0JALUJAgkBBXZhbHVlAQUCZWwFAWEEAmNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZW0FAmFOBAJmYwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVtBQJhTwQCZmQJAGQCBQJjbQUCZmMEAmZlCQCWAwEJAMwIAgkAZQIFAmZkBQZoZWlnaHQJAMwIAgAABQNuaWwEAmZvCQBlAgUCYUMFAmZlCQCUCgIFA25pbAkAlAoCAgxpbmNyZWFzZUxvY2sFAmZvAmFJASBnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHRSRUFET05MWQICYVMCY1YEAmJjCQECY1UCBQJhUwUCY1YJAJQKAgUDbmlsBQJiYwJhSQEZZ2V0VG90YWxDYWNoZWRHd3hSRUFET05MWQAJAJQKAgUDbmlsCQECY2IBBgJhSQEVb25Cb29zdEVtaXNzaW9uVXBkYXRlAAQCZVIDCQAAAggFAmFJBmNhbGxlcgUCYlQGCQECYUgBBQJhSQMJAAACBQJlUgUCZVIJAQJkWgAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYUkBEm9uU3Rha2VkVm90ZVVwZGF0ZQMCYkoCYlICZEwEAmVSAwkAAAIIBQJhSQZjYWxsZXIFAmJVBgkBAmFIAQUCYUkDCQAAAgUCZVIFAmVSBAJkTwkBAmRLAwUCYkoFAmJSBQJkTAkAlAoCBQJkTwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhSQEdZ2V0Vm90aW5nUmVzdWx0U3Rha2VkUkVBRE9OTFkBAmJKCQCUCgIFA25pbAkBAmRwAQUCYkoCYUkBJWdldFZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsUkVBRE9OTFkBAmJKCQCUCgIFA25pbAkBAmR0AQUCYkoCYUkBHGdldFVzZXJWb3RlRmluYWxpemVkUkVBRE9OTFkCAmJKAmJSCQCUCgIFA25pbAkBAmRpAgUCYkoFAmJSAmFJASFnZXRVc2VyVm90ZVN0YWtlZEludGVncmFsUkVBRE9OTFkCAmJKAmJSCQCUCgIFA25pbAkBAmREAgUCYkoFAmJSAmFJAQpzZXRNYW5hZ2VyAQJmcAQCZVIJAQJhSAEFAmFJAwkAAAIFAmVSBQJlUgQCZnEJANkEAQUCZnADCQAAAgUCZnEFAmZxCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZwAFAmZwBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYUkBDmNvbmZpcm1NYW5hZ2VyAAQCZnIJAQJhRwAEAmZzAwkBCWlzRGVmaW5lZAEFAmZyBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmcwUCZnMEAmZ0AwkAAAIIBQJhSQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmZyBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmdAUCZnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAAkA2AQBCQEFdmFsdWUBBQJmcgkAzAgCCQELRGVsZXRlRW50cnkBCQECYWcABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZ1AQJmdgAEAmZ3BAFyCQECYUUAAwkAAQIFAXICCkJ5dGVWZWN0b3IEAmFLBQFyBQJhSwMJAAECBQFyAgRVbml0CAUCZnUPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAmZ1CWJvZHlCeXRlcwkAkQMCCAUCZnUGcHJvb2ZzAAAFAmZ3t3Tp4A==", "height": 2504059, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FrmrX26juBRC6YB1Q4YFgRADYaRda8jQKgHKhw9yxZS4 Next: RstxjT3A62mftuWWm7EP7AU1SbwQNdj9X6DRhbcaBkr Diff:
OldNewDifferences
144144 func aj () = "%s%s__emission__startBlock"
145145
146146
147-func ak () = "%s%s__emission__duration"
147+func ak () = "%s%s__boostingV2__startBlock"
148148
149149
150-func al () = "%s%s__emission__endBlock"
150+func al () = "%s%s__boostingV2__integral"
151151
152152
153-func am () = "%s__nextPeriod"
153+func am () = "%s%s__emission__duration"
154154
155155
156-func an () = "%s%s__gwxRewardEmissionPart__startHeight"
156+func an () = "%s%s__emission__endBlock"
157157
158158
159-let ao = 1
160-
161-let ap = 2
162-
163-let aq = 3
164-
165-let ar = 4
166-
167-let as = 5
168-
169-func at () = "%s__config"
159+func ao () = "%s__nextPeriod"
170160
171161
172-func au () = split(h(this, at()), a)
162+func ap () = "%s%s__gwxRewardEmissionPart__startHeight"
173163
174164
175-let av = addressFromStringValue(au()[as])
165+let aq = 1
176166
177-func aw (ax,ay,az,aA,av) = makeString(["%s%d%d%d", ax, ay, az, aA, av], a)
167+let ar = 2
168+
169+let as = 3
170+
171+let at = 4
172+
173+let au = 5
174+
175+func av () = "%s__config"
178176
179177
180-func aB (ax,ay,az,aA,av) = aw(ax, toString(ay), toString(az), toString(aA), av)
178+func aw () = split(h(this, av()), a)
181179
182180
183-func aC () = {
181+let ax = addressFromStringValue(aw()[au])
182+
183+func ay (az,aA,aB,aC,ax) = makeString(["%s%d%d%d", az, aA, aB, aC, ax], a)
184+
185+
186+func aD (az,aA,aB,aC,ax) = ay(az, toString(aA), toString(aB), toString(aC), ax)
187+
188+
189+func aE () = {
184190 let r = getString(af())
185191 if ($isInstanceOf(r, "String"))
186192 then {
187- let aD = r
188- fromBase58String(aD)
193+ let aF = r
194+ fromBase58String(aF)
189195 }
190196 else if ($isInstanceOf(r, "Unit"))
191197 then unit
193199 }
194200
195201
196-func aE () = {
202+func aG () = {
197203 let r = getString(ag())
198204 if ($isInstanceOf(r, "String"))
199205 then {
200- let aD = r
201- fromBase58String(aD)
206+ let aF = r
207+ fromBase58String(aF)
202208 }
203209 else if ($isInstanceOf(r, "Unit"))
204210 then unit
206212 }
207213
208214
209-func aF (aG) = {
210- let aH = throw("Permission denied")
211- let r = aC()
215+func aH (aI) = {
216+ let aJ = throw("Permission denied")
217+ let r = aE()
212218 if ($isInstanceOf(r, "ByteVector"))
213219 then {
214- let aI = r
215- if ((aG.callerPublicKey == aI))
220+ let aK = r
221+ if ((aI.callerPublicKey == aK))
216222 then true
217- else aH
223+ else aJ
218224 }
219225 else if ($isInstanceOf(r, "Unit"))
220- then if ((aG.caller == this))
226+ then if ((aI.caller == this))
221227 then true
222- else aH
228+ else aJ
223229 else throw("Match error")
224230 }
225231
226232
227-let aJ = 1
233+let aL = 1
228234
229-let aK = 2
235+let aM = 2
230236
231-let aL = 3
237+let aN = 3
232238
233-let aM = 4
239+let aO = 4
234240
235-let aN = 5
241+let aP = 5
236242
237-let aO = 6
243+let aQ = 6
238244
239-func aP (aQ) = makeString(["%s%s__lock", aQ], a)
245+func aR (aS) = makeString(["%s%s__lock", aS], a)
240246
241247
242-func aR (aQ) = split(h(this, aP(aQ)), a)
248+func aT (aS) = split(h(this, aR(aS)), a)
243249
244250
245-func aS (aT,aU,aV,aW,aX,aY,aZ,ba) = makeString(["%d%d%d%d%d%d%d%d", aT, aU, aV, aW, aX, aY, aZ, ba], a)
251+func aU (aV,aW,aX,aY,aZ,ba,bb,bc) = makeString(["%d%d%d%d%d%d%d%d", aV, aW, aX, aY, aZ, ba, bb, bc], a)
246252
247253
248-func bb (aT,aU,aV,aW,aX,aY,ba) = aS(aT, toString(aU), toString(aV), toString(aW), toString(aX), toString(aY), toString(lastBlock.timestamp), toString(ba))
254+func bd (aV,aW,aX,aY,aZ,ba,bc) = aU(aV, toString(aW), toString(aX), toString(aY), toString(aZ), toString(ba), toString(lastBlock.timestamp), toString(bc))
249255
250256
251-func bc () = "%s__nextUserNum"
257+func be () = "%s__nextUserNum"
252258
253259
254-func bd (aQ) = makeString(["%s%s%s__mapping__user2num", aQ], a)
260+func bf (aS) = makeString(["%s%s%s__mapping__user2num", aS], a)
255261
256262
257-func be (V) = makeString(["%s%s%s__mapping__num2user", V], a)
263+func bg (V) = makeString(["%s%s%s__mapping__num2user", V], a)
258264
259265
260-func bf (aT) = makeString(["%s%d%s__paramByUserNum", aT, "amount"], a)
266+func bh (aV) = makeString(["%s%d%s__paramByUserNum", aV, "amount"], a)
261267
262268
263-func bg (aT) = makeString(["%s%d%s__paramByUserNum", aT, "start"], a)
269+func bi (aV) = makeString(["%s%d%s__paramByUserNum", aV, "start"], a)
264270
265271
266-func bh (aT) = makeString(["%s%d%s__paramByUserNum", aT, "duration"], a)
272+func bj (aV) = makeString(["%s%d%s__paramByUserNum", aV, "duration"], a)
267273
268274
269-func bi (aT) = makeString(["%s%d%s__paramByUserNum", aT, "k"], a)
275+func bk (aV) = makeString(["%s%d%s__paramByUserNum", aV, "k"], a)
270276
271277
272-func bj (aT) = makeString(["%s%d%s__paramByUserNum", aT, "b"], a)
278+func bl (aV) = makeString(["%s%d%s__paramByUserNum", aV, "b"], a)
273279
274280
275-func bk (aT,bl) = makeString(["%s%d%s%d__paramByPeriod", aT, "k", bl], a)
281+func bm (aV,bn) = makeString(["%s%d%s%d__paramByPeriod", aV, "k", bn], a)
276282
277283
278-func bm (aT,bl) = makeString(["%s%d%s%d__paramByPeriod", aT, "b", bl], a)
284+func bo (aV,bn) = makeString(["%s%d%s%d__paramByPeriod", aV, "b", bn], a)
279285
280286
281-func bn () = "%s%s__stats__activeTotalLocked"
287+func bp () = "%s%s__stats__activeTotalLocked"
282288
283289
284-func bo () = "%s%s__stats__locksDurationSumInBlocks"
290+func bq () = "%s%s__stats__locksDurationSumInBlocks"
285291
286292
287-func bp () = "%s%s__stats__locksCount"
293+func br () = "%s%s__stats__locksCount"
288294
289295
290-func bq () = "%s%s__stats__activeUsersCount"
296+func bs () = "%s%s__stats__activeUsersCount"
291297
292298
293-func br (aT) = makeString(["%s%d__userBoostEmissionLastInt", aT], a)
299+func bt (aV) = makeString(["%s%d__userBoostEmissionLastIntV2", aV], a)
294300
295301
296-func bs (aT,bt) = makeString(["%s%d__userBoostEmissionLastInt", aT, bt], a)
302+func bu (aV,bv) = makeString(["%s%d__userBoostEmissionLastIntV2", aV, bv], a)
297303
298304
299-func bu (aT) = makeString(["%s%d__maxBoostInt", aT], a)
305+func bw (aV) = makeString(["%s%d__maxBoostInt", aV], a)
300306
301307
302-func bv () = "%s%s__maxBoostInt__total"
308+func bx () = "%s%s__maxBoostInt__total"
303309
304310
305-func bw (aT) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aT], a)
311+func by (aV) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aV], a)
306312
307313
308-func bx (aT) = makeString(["%s%d__userBoostClaimed", aT], a)
314+func bz (aV) = makeString(["%s%d__userBoostClaimed", aV], a)
309315
310316
311-func by () = "%s%s__gwxCached__total"
317+func bA () = "%s%s__gwxCached__total"
312318
313319
314-func bz () = "%s__gwxCachedTotalCorrective"
320+func bB () = "%s__gwxCachedTotalCorrective"
315321
316322
317-let bA = W()
323+func bC (bD,bE,i,bF) = makeString(["%s%s%s%s%d", "vote", bD, bE, toString(i), toString(bF)], a)
318324
319-let ab = Y(bA)
320325
321-let bB = ac(ab)
326+func bG (bF) = makeString(["%s%d", "startHeight", toString(bF)], a)
322327
323-let bC = ad(ab)
324328
325-let bD = ae(ab)
329+func bH () = makeString(["%s", "currentEpochUi"], a)
326330
327-let bE = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), e("lp_staking_pools contract address is undefined"))), e("invalid lp_staking_pools contract address"))
328331
329-let bF = makeString(["%s", "votingEmissionContract"], a)
332+func bI (bJ,bF) = makeString(["%s%s%d", "votingResultStaked", bJ, toString(bF)], a)
330333
331-let bG = addressFromStringValue(getStringValue(bA, bF))
332334
333-func bH (bI) = {
334- let bJ = makeString(["%s", "currentEpochUi"], a)
335- let bK = getIntegerValue(bG, bJ)
336- let bL = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
337- let bM = getInteger(this, bL)
338- let bN = valueOrElse(getInteger(this, by()), 0)
339- let bO = if (isDefined(bM))
340- then (bK >= value(bM))
335+func bK (bJ,bF) = makeString(["%s%s%d", "votingResultStakedIntegral", bJ, toString(bF)], a)
336+
337+
338+func bL (bJ,bF) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", bJ, toString(bF)], a)
339+
340+
341+func bM (bJ,i,bF) = makeString(["%s%s%s%d", "votingResultStakedIntegralLast", bJ, toString(i), toString(bF)], a)
342+
343+
344+func bN (bJ,i,bF) = makeString(["%s%s%s%d", "voteStakedIntegral", bJ, toString(i), toString(bF)], a)
345+
346+
347+func bO (bJ,i,bF) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", bJ, toString(i), toString(bF)], a)
348+
349+
350+func bP (bJ,i,bF) = makeString(["%s%s%s%d", "voteStakedIntegralLast", bJ, toString(i), toString(bF)], a)
351+
352+
353+func bQ (bR,bJ) = makeString(["%s%s%s", "staked", bR, bJ], a)
354+
355+
356+let bS = W()
357+
358+let ab = Y(bS)
359+
360+let bT = ac(ab)
361+
362+let bU = ad(ab)
363+
364+let bV = ae(ab)
365+
366+let bW = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), e("lp_staking_pools contract address is undefined"))), e("invalid lp_staking_pools contract address"))
367+
368+let bX = makeString(["%s", "votingEmissionContract"], a)
369+
370+let bY = addressFromStringValue(getStringValue(bS, bX))
371+
372+let bZ = {
373+ let ca = invoke(bT, "getBoostCoeffREADONLY", nil, nil)
374+ if ($isInstanceOf(ca, "Int"))
375+ then ca
376+ else throw(($getType(ca) + " couldn't be cast to Int"))
377+ }
378+
379+func cb (cc) = {
380+ let cd = getIntegerValue(bY, bH())
381+ let ce = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
382+ let cf = getInteger(this, ce)
383+ let cg = valueOrElse(getInteger(this, bA()), 0)
384+ let ch = if (isDefined(cf))
385+ then (cd >= value(cf))
341386 else false
342- let bP = if (if (bO)
343- then bI
387+ let ci = if (if (ch)
388+ then cc
344389 else false)
345- then valueOrElse(getInteger(this, bz()), 0)
390+ then valueOrElse(getInteger(this, bB()), 0)
346391 else 0
347- max([0, (bN + bP)])
392+ max([0, (cg + ci)])
348393 }
349394
350395
351-func bQ (bR,bS,aU,bT,aW,bU,bV,aG) = {
352- let bW = makeString(["%s%s%s%s__history", bR, bS, toBase58String(aG.transactionId)], a)
353- let bX = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aU), toString(bT), toString(aW), toString(bU), toString(bV)], a)
354- StringEntry(bW, bX)
396+func cj (ck,cl,aW,cm,aY,cn,co,aI) = {
397+ let cp = makeString(["%s%s%s%s__history", ck, cl, toBase58String(aI.transactionId)], a)
398+ let cq = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aW), toString(cm), toString(aY), toString(cn), toString(co)], a)
399+ StringEntry(cp, cq)
355400 }
356401
357402
358-func bY (bZ,ca,cb,cc) = {
359- let cd = bo()
360- let ce = bp()
361- let cf = bq()
362- let cg = bn()
363- let ch = k(this, cd)
364- let ci = k(this, ce)
365- let cj = k(this, cf)
366- let ck = k(this, cg)
367-[IntegerEntry(cd, (ch + ca)), IntegerEntry(ce, (ci + cb)), IntegerEntry(cf, (cj + cc)), IntegerEntry(cg, (ck + bZ))]
403+func cr (cs,ct,cu,cv) = {
404+ let cw = bq()
405+ let cx = br()
406+ let cy = bs()
407+ let cz = bp()
408+ let cA = k(this, cw)
409+ let cB = k(this, cx)
410+ let cC = k(this, cy)
411+ let cD = k(this, cz)
412+[IntegerEntry(cw, (cA + ct)), IntegerEntry(cx, (cB + cu)), IntegerEntry(cy, (cC + cv)), IntegerEntry(cz, (cD + cs))]
368413 }
369414
370415
371-func cl (cm,cn,co) = {
372- let cp = 1000
373- (((cm * co) + cn) / cp)
416+func cE (cF,cG,cH) = {
417+ let cI = 1000
418+ (((cF * cH) + cG) / cI)
374419 }
375420
376421
377-func cq (aQ,aT,aU,aV,aW,bU,bV,bl) = {
378- let cr = bf(aT)
379- let cs = bg(aT)
380- let ct = bh(aT)
381- let cu = bi(aT)
382- let cv = bj(aT)
383- let cw = bk(aT, bl)
384- let cx = bm(aT, bl)
385- let ba = cl(bU, bV, height)
386-[IntegerEntry(cr, aU), IntegerEntry(cs, aV), IntegerEntry(ct, aW), IntegerEntry(cu, bU), IntegerEntry(cv, bV), IntegerEntry(cw, bU), IntegerEntry(cx, bV), StringEntry(aP(aQ), bb(aT, aU, aV, aW, bU, bV, ba))]
422+func cJ (aS,aV,aW,aX,aY,cn,co,bn) = {
423+ let cK = bh(aV)
424+ let cL = bi(aV)
425+ let cM = bj(aV)
426+ let cN = bk(aV)
427+ let cO = bl(aV)
428+ let cP = bm(aV, bn)
429+ let cQ = bo(aV, bn)
430+ let bc = cE(cn, co, height)
431+[IntegerEntry(cK, aW), IntegerEntry(cL, aX), IntegerEntry(cM, aY), IntegerEntry(cN, cn), IntegerEntry(cO, co), IntegerEntry(cP, cn), IntegerEntry(cQ, co), StringEntry(aR(aS), bd(aV, aW, aX, aY, cn, co, bc))]
387432 }
388433
389434
390-func cy (aG,cz) = if ((size(aG.payments) > 1))
435+func cR (aI,cS) = if ((size(aI.payments) > 1))
391436 then throw("only one payment is allowed")
392- else if ((size(aG.payments) == 0))
437+ else if ((size(aI.payments) == 0))
393438 then 0
394439 else {
395- let cA = aG.payments[0]
396- if ((value(cA.assetId) != cz))
440+ let cT = aI.payments[0]
441+ if ((value(cT.assetId) != cS))
397442 then throw("invalid asset id in payment")
398- else cA.amount
443+ else cT.amount
399444 }
400445
401446
402-func cB (aQ,cC) = {
403- let cD = "empty"
404- let cE = bd(aQ)
405- let aT = valueOrElse(getString(cE), cD)
406- let bU = valueOrElse(getInteger(bi(aT)), 0)
407- let bV = valueOrElse(getInteger(bj(aT)), 0)
408- let cF = cl(bU, bV, cC)
409- let ba = if ((0 > cF))
447+func cU (aS,cV) = {
448+ let cW = "empty"
449+ let cX = bf(aS)
450+ let aV = valueOrElse(getString(cX), cW)
451+ let cn = valueOrElse(getInteger(bk(aV)), 0)
452+ let co = valueOrElse(getInteger(bl(aV)), 0)
453+ let cY = cE(cn, co, cV)
454+ let bc = if ((0 > cY))
410455 then 0
411- else cF
412- ba
456+ else cY
457+ bc
413458 }
414459
415460
416-func cG (aQ) = cB(aQ, height)
461+func cZ (aS) = cU(aS, height)
417462
418463
419-func cH () = {
420- let bJ = makeString(["%s", "currentEpochUi"], a)
421- let cI = {
422- let bK = value(getInteger(bG, bJ))
423- let cJ = (bK - 1)
424- if ((0 > cJ))
464+func da () = {
465+ let db = {
466+ let cd = value(getInteger(bY, bH()))
467+ let dc = (cd - 1)
468+ if ((0 > dc))
425469 then g("invalid epoch")
426- else $Tuple2(bK, cJ)
470+ else $Tuple2(cd, dc)
427471 }
428- let bK = cI._1
429- let cJ = cI._2
430- func cK (cL) = makeString(["%s%d", "startHeight", toString(cL)], a)
431-
432- let cM = value(getInteger(bG, cK(bK)))
433- $Tuple2(cJ, cM)
472+ let cd = db._1
473+ let dc = db._2
474+ let dd = value(getInteger(bY, bG(cd)))
475+ $Tuple2(dc, dd)
434476 }
435477
436478
437-func cN (cO,cP,i,cL) = makeString(["%s%s%s%s%d", "vote", cO, cP, toString(i), toString(cL)], a)
438-
439-
440-func cQ (cR,cL) = makeString(["%s%s%d", "votingResultStaked", cR, toString(cL)], a)
441-
442-
443-func cS (cR,cL) = makeString(["%s%s%d", "votingResultStakedIntegral", cR, toString(cL)], a)
444-
445-
446-func cT (cR,cL) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", cR, toString(cL)], a)
447-
448-
449-func cU (cR,i,cL) = makeString(["%s%s%s%d", "voteStakedIntegral", cR, toString(i), toString(cL)], a)
450-
451-
452-func cV (cR,i,cL) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", cR, toString(i), toString(cL)], a)
453-
454-
455-func cW (cR) = {
456- let cX = cH()
457- let cJ = cX._1
458- let cM = cX._2
459- let cY = valueOrElse(getInteger(bG, cQ(cR, cJ)), 0)
460- let cZ = valueOrElse(getInteger(this, cQ(cR, cJ)), cY)
461- cZ
479+func de (bJ) = {
480+ let df = 4
481+ let dg = 5
482+ let dh = {
483+ let ca = invoke(bS, "getPoolConfigByLpAssetIdREADONLY", [bJ], nil)
484+ if ($isInstanceOf(ca, "List[Any]"))
485+ then ca
486+ else throw(($getType(ca) + " couldn't be cast to List[Any]"))
487+ }
488+ let bD = {
489+ let ca = dh[df]
490+ if ($isInstanceOf(ca, "String"))
491+ then ca
492+ else throw(($getType(ca) + " couldn't be cast to String"))
493+ }
494+ let bE = {
495+ let ca = dh[dg]
496+ if ($isInstanceOf(ca, "String"))
497+ then ca
498+ else throw(($getType(ca) + " couldn't be cast to String"))
499+ }
500+ $Tuple2(bD, bE)
462501 }
463502
464503
465-func da (cR,db) = {
466- let dc = cH()
467- let cJ = dc._1
468- let cM = dc._2
469- let cZ = cW(cR)
470- let dd = (cZ + db)
471- let de = cS(cR, cJ)
472- let df = valueOrElse(getInteger(this, de), 0)
473- let dg = cT(cR, cJ)
474- let dh = valueOrElse(getInteger(this, dg), cM)
475- let di = (height - dh)
476- let dj = ((di * cZ) + df)
477- $Tuple2([IntegerEntry(cQ(cR, cJ), dd), IntegerEntry(dg, height), IntegerEntry(de, dj)], dj)
504+func di (bJ,bR) = {
505+ let aS = addressFromStringValue(bR)
506+ let dj = da()
507+ let dc = dj._1
508+ let dd = dj._2
509+ let dk = de(bJ)
510+ let bD = dk._1
511+ let bE = dk._2
512+ let dl = bC(bD, bE, aS, dc)
513+ let dm = valueOrElse(getInteger(bY, dl), 0)
514+ dm
478515 }
479516
480517
481-func dk (cR,dl,dm) = {
482- let dn = cH()
483- let cJ = dn._1
484- let cM = dn._2
485- let aQ = addressFromStringValue(dl)
486- let do = 4
487- let dp = 5
488- let dq = {
489- let dr = invoke(bA, "getPoolConfigByLpAssetId", [cR], nil)
490- if ($isInstanceOf(dr, "List[Any]"))
491- then dr
492- else throw(($getType(dr) + " couldn't be cast to List[Any]"))
493- }
494- let cO = {
495- let dr = dq[do]
496- if ($isInstanceOf(dr, "String"))
497- then dr
498- else throw(($getType(dr) + " couldn't be cast to String"))
499- }
500- let cP = {
501- let dr = dq[dp]
502- if ($isInstanceOf(dr, "String"))
503- then dr
504- else throw(($getType(dr) + " couldn't be cast to String"))
505- }
506- let ds = valueOrElse(getInteger(bG, cN(cO, cP, aQ, cJ)), 0)
507- let dt = if ((ds == 0))
508- then nil
509- else {
510- let db = if (dm)
511- then ds
512- else -(ds)
513- let du = da(cR, db)
514- let dv = du._1
515- let dj = du._2
516- let dw = if (dm)
517- then 0
518- else ds
519- let dx = cU(cR, aQ, cJ)
520- let dy = valueOrElse(getInteger(this, dx), 0)
521- let dz = cV(cR, aQ, cJ)
522- let dA = valueOrElse(getInteger(this, dz), cM)
523- let dB = (height - dA)
524- let dC = ((dB * dw) + dy)
525- let dD = [IntegerEntry(dz, height), IntegerEntry(dx, dC)]
526- (dv ++ dD)
527- }
528- dt
518+func dn (bJ,bR) = {
519+ let do = valueOrElse(getInteger(bU, bQ(bR, bJ)), 0)
520+ let dm = di(bJ, bR)
521+ if ((do == 0))
522+ then 0
523+ else dm
529524 }
530525
531526
532-func dE (cR,dl,dF) = {
533- let cD = "EMPTY"
534- let dG = valueOrElse(getString(this, aP(dl)), cD)
535- if ((dG == cD))
527+func dp (bJ) = {
528+ let dq = da()
529+ let dc = dq._1
530+ let dd = dq._2
531+ let dr = valueOrElse(getInteger(bY, bI(bJ, dc)), 0)
532+ let ds = valueOrElse(getInteger(this, bI(bJ, dc)), dr)
533+ ds
534+ }
535+
536+
537+func dt (bJ) = {
538+ let du = da()
539+ let dc = du._1
540+ let dd = du._2
541+ let ds = dp(bJ)
542+ let dv = valueOrElse(getInteger(this, bK(bJ, dc)), 0)
543+ let dw = valueOrElse(getInteger(this, bL(bJ, dc)), dd)
544+ let dx = (height - dw)
545+ let dy = ((dx * ds) + dv)
546+ dy
547+ }
548+
549+
550+func dz (bJ,dA) = {
551+ let dB = da()
552+ let dc = dB._1
553+ let dd = dB._2
554+ let ds = dp(bJ)
555+ let dC = (ds + dA)
556+ let dy = dt(bJ)
557+[IntegerEntry(bI(bJ, dc), dC), IntegerEntry(bL(bJ, dc), height), IntegerEntry(bK(bJ, dc), dy)]
558+ }
559+
560+
561+func dD (bJ,bR) = {
562+ let dE = da()
563+ let dc = dE._1
564+ let dd = dE._2
565+ let aS = addressFromStringValue(bR)
566+ let dF = dn(bJ, bR)
567+ let dG = valueOrElse(getInteger(this, bN(bJ, aS, dc)), 0)
568+ let dH = valueOrElse(getInteger(this, bO(bJ, aS, dc)), dd)
569+ let dI = (height - dH)
570+ let dJ = ((dI * dF) + dG)
571+ dJ
572+ }
573+
574+
575+func dK (bJ,bR,dL) = {
576+ let dM = da()
577+ let dc = dM._1
578+ let dd = dM._2
579+ let aS = addressFromStringValue(bR)
580+ let dN = di(bJ, bR)
581+ let dO = if ((dN == 0))
582+ then nil
583+ else {
584+ let dA = if (dL)
585+ then dN
586+ else -(dN)
587+ let dP = dz(bJ, dA)
588+ let dJ = dD(bJ, bR)
589+ let dQ = [IntegerEntry(bO(bJ, aS, dc), height), IntegerEntry(bN(bJ, aS, dc), dJ)]
590+ (dP ++ dQ)
591+ }
592+ dO
593+ }
594+
595+
596+func dR (bJ,bR) = {
597+ let dS = da()
598+ let dc = dS._1
599+ let dd = dS._2
600+ let aS = addressFromStringValue(bR)
601+ let dT = bP(bJ, aS, dc)
602+ let dU = valueOrElse(getInteger(this, dT), 0)
603+ let dV = bM(bJ, aS, dc)
604+ let dW = valueOrElse(getInteger(this, dV), 0)
605+ let dJ = dD(bJ, bR)
606+ let dy = dt(bJ)
607+ let dX = (dJ - dU)
608+ let dY = (dy - dW)
609+ $Tuple3([IntegerEntry(dT, dJ), IntegerEntry(dV, dy)], dX, dY)
610+ }
611+
612+
613+func dZ () = {
614+ let ea = n(bT, ah())
615+ let eb = getInteger(bT, ak())
616+ let ec = getInteger(this, al())
617+ let ed = n(bT, an())
618+ let cH = if ((height > ed))
619+ then ed
620+ else height
621+ let ee = {
622+ let r = eb
623+ if ($isInstanceOf(r, "Int"))
624+ then {
625+ let ef = r
626+ max([(cH - ef), 0])
627+ }
628+ else if ($isInstanceOf(r, "Unit"))
629+ then 0
630+ else throw("Match error")
631+ }
632+ let eg = ((ea * (bZ - 1)) / bZ)
633+ let eh = valueOrElse(ec, 0)
634+ let ei = ((eg * ee) + eh)
635+ $Tuple2([IntegerEntry(al(), ei), IntegerEntry(ak(), height)], ei)
636+ }
637+
638+
639+func ej (bJ,bR,ek) = {
640+ let el = getString(this, aR(bR))
641+ if ((el == unit))
536642 then $Tuple3(0, nil, "userRecord::is::empty")
537643 else {
538- let dH = split(dG, a)
539- let dI = dH[aJ]
540- let dJ = valueOrElse(getInteger(bD, an()), 0)
541- let dK = "empty"
542- let dL = if ((cR != dK))
644+ let em = split(value(el), a)
645+ let en = em[aL]
646+ let eo = "empty"
647+ let ep = if ((bJ != eo))
543648 then {
544- let dM = valueOrErrorMessage(getString(bA, N(cR)), ("unsupported lp asset " + cR))
545- let dN = getIntegerValue(bA, R(dM))
546- let dO = valueOrElse(getInteger(bA, T(dM, 0)), dN)
547- $Tuple2(dO, dN)
649+ let eq = valueOrErrorMessage(getString(bS, N(bJ)), ("unsupported lp asset " + bJ))
650+ getIntegerValue(bS, R(eq))
548651 }
549- else if (dF)
550- then $Tuple2(0, 0)
551- else throw(("not readonly mode: unsupported lp asset " + cR))
552- let dP = dL._1
553- let dQ = dL._2
554- let dR = n(bB, ah())
555- let dS = n(bB, aj())
556- let dT = n(bB, al())
557- let co = if ((height > dT))
558- then dT
559- else height
560- let dU = max([(co - dS), 0])
561- let dV = bs(dI, cR)
562- let dW = br(dI)
563- let dX = valueOrElse(getInteger(this, dV), k(this, dW))
564- let dY = (((dR * dU) * 2) / 3)
565- let dZ = (dY - dX)
566- let ea = fraction(dZ, 3, (2 * dR))
567- let eb = (co - ea)
568- let ec = max([(dJ - eb), 0])
569- let ed = ((co - eb) - ec)
570- if (if (if ((0 > eb))
571- then true
572- else (0 > ed))
573- then true
574- else (o(((ec + ed) - ea)) >= 1))
575- then throw(((((((((((("invalid udh calc: udh=" + toString(ea)) + " uLastH=") + toString(eb)) + " udh0=") + toString(ec)) + " udh1=") + toString(ed)) + " lpAssetId=") + cR) + " userAddress=") + dl))
576- else if ((0 > dZ))
577- then throw("wrong calculations")
578- else {
579- let ee = bu(dI)
580- let ef = bv()
581- let eg = k(this, ee)
582- let eh = k(this, ef)
583- let ei = bH(true)
584- let ej = cG(dl)
585- let ek = bw(dI)
586- let el = k(this, ek)
587- let em = if ((ea == 0))
588- then 0
589- else fraction(dZ, ec, ea)
590- let en = if ((ea == 0))
591- then 0
592- else fraction(dZ, ed, ea)
593- let eo = fraction(em, dP, d)
594- let ep = fraction(en, dQ, d)
595- let eq = if ((ei == 0))
596- then 0
597- else fraction(eo, ej, ei)
598- let er = if ((ei == 0))
599- then 0
600- else fraction(ep, ej, ei)
601- let es = (eq + er)
602- let et = bx(dI)
603- let eu = k(this, et)
604- let ev = (es - eu)
605- let ew = [IntegerEntry(dV, dY)]
606- let ex = makeString([toString(dX), toString(dZ), toString(eu), toString(ev), toString(dP), toString(dQ), toString(co), toString(ea), toString(eb), toString(ec), toString(ed), toString(ej), toString(ei)], ":")
607- $Tuple3(es, ew, ex)
608- }
652+ else if (ek)
653+ then 0
654+ else throw(("not readonly mode: unsupported lp asset " + bJ))
655+ let er = bu(en, bJ)
656+ let es = bt(en)
657+ let et = valueOrElse(getInteger(this, er), k(this, es))
658+ let ei = dZ()._2
659+ let eu = (ei - et)
660+ if ((0 > eu))
661+ then throw("wrong calculations")
662+ else {
663+ let ev = dR(bJ, bR)
664+ let ew = ev._1
665+ let ex = ev._2
666+ let ey = ev._3
667+ let ez = fraction(eu, ep, d)
668+ let eA = if ((ey == 0))
669+ then 0
670+ else fraction(ez, ex, ey)
671+ let eB = ([IntegerEntry(er, ei)] ++ ew)
672+ let eC = makeString([toString(et), toString(eu), toString(ep), toString(ex), toString(ey)], ":")
673+ $Tuple3(eA, eB, eC)
674+ }
609675 }
610676 }
611677
612678
613-func ey (aG,aW) = {
614- let ez = au()
615- let eA = ez[ao]
616- let ax = fromBase58String(eA)
617- let ay = parseIntValue(ez[ap])
618- let az = parseIntValue(ez[aq])
619- let aA = parseIntValue(ez[ar])
620- if ((size(aG.payments) != 1))
679+func eD (aI,aY) = {
680+ let eE = aw()
681+ let eF = eE[aq]
682+ let az = fromBase58String(eF)
683+ let aA = parseIntValue(eE[ar])
684+ let aB = parseIntValue(eE[as])
685+ let aC = parseIntValue(eE[at])
686+ if ((size(aI.payments) != 1))
621687 then throw("invalid payment - exact one payment must be attached")
622688 else {
623- let cA = aG.payments[0]
624- let eB = cA.amount
625- if ((ax != value(cA.assetId)))
626- then throw((("invalid asset is in payment - " + eA) + " is expected"))
689+ let cT = aI.payments[0]
690+ let eG = cT.amount
691+ if ((az != value(cT.assetId)))
692+ then throw((("invalid asset is in payment - " + eF) + " is expected"))
627693 else {
628- let eC = bc()
629- let dl = toString(aG.caller)
630- let eD = isDefined(getString(bd(dl)))
631- let dI = if (eD)
632- then value(getString(bd(dl)))
633- else toString(n(this, eC))
634- let aT = parseIntValue(dI)
635- let bT = height
636- let cs = bg(dI)
637- let ct = bh(dI)
638- let cr = bf(dI)
639- if (if ((ay > eB))
640- then (aG.caller != bE)
694+ let eH = be()
695+ let bR = toString(aI.caller)
696+ let eI = isDefined(getString(bf(bR)))
697+ let en = if (eI)
698+ then value(getString(bf(bR)))
699+ else toString(n(this, eH))
700+ let aV = parseIntValue(en)
701+ let cm = height
702+ let cL = bi(en)
703+ let cM = bj(en)
704+ let cK = bh(en)
705+ if (if ((aA > eG))
706+ then (aI.caller != bW)
641707 else false)
642- then throw(("amount is less then minLockAmount=" + toString(ay)))
643- else if ((az > aW))
644- then throw(("passed duration is less then minLockDuration=" + toString(az)))
645- else if ((aW > aA))
646- then throw(("passed duration is greater then maxLockDuration=" + toString(aA)))
647- else if (if (eD)
648- then ((n(this, cs) + n(this, ct)) >= bT)
708+ then throw(("amount is less then minLockAmount=" + toString(aA)))
709+ else if ((aB > aY))
710+ then throw(("passed duration is less then minLockDuration=" + toString(aB)))
711+ else if ((aY > aC))
712+ then throw(("passed duration is greater then maxLockDuration=" + toString(aC)))
713+ else if (if (eI)
714+ then ((n(this, cL) + n(this, cM)) >= cm)
649715 else false)
650716 then throw("there is an active lock - consider to use increaseLock")
651- else if ((k(this, cr) > 0))
652- then throw(("there are locked WXs - consider to use increaseLock " + cr))
717+ else if ((k(this, cK) > 0))
718+ then throw(("there are locked WXs - consider to use increaseLock " + cK))
653719 else {
654- let eE = fraction(aW, c, aA)
655- let eF = fraction(eB, eE, c)
656- let eG = q(invoke(av, "calcGwxParamsREADONLY", [eF, bT, aW], nil))
657- let bU = t(eG[0])
658- let bV = t(eG[1])
659- let bl = toString(t(eG[2]))
660- let dR = n(bB, ah())
661- let dS = n(bB, aj())
662- let dT = n(bB, al())
663- let co = if ((height > dT))
664- then dT
665- else height
666- let dU = max([(co - dS), 0])
667- let dW = br(dI)
668- let dY = (((dR * dU) * 2) / 3)
669- let ee = bu(dI)
670- let ef = bv()
671- let eg = ((eF * aW) / 2)
672- let eh = k(this, ef)
673- let bN = bH(false)
674- let eH = if (eD)
720+ let eJ = fraction(aY, c, aC)
721+ let eK = fraction(eG, eJ, c)
722+ let eL = q(invoke(ax, "calcGwxParamsREADONLY", [eK, cm, aY], nil))
723+ let cn = t(eL[0])
724+ let co = t(eL[1])
725+ let bn = toString(t(eL[2]))
726+ let cg = cb(false)
727+ let es = bt(en)
728+ let ei = dZ()._2
729+ let eM = if (eI)
675730 then nil
676- else [IntegerEntry(eC, (aT + 1)), StringEntry(bd(dl), dI), StringEntry(be(dI), dl)]
677- $Tuple2(((((eH ++ cq(dl, dI, eB, bT, aW, bU, bV, bl)) ++ bY(eB, aW, 1, if (eD)
731+ else [IntegerEntry(eH, (aV + 1)), StringEntry(bf(bR), en), StringEntry(bg(en), bR)]
732+ $Tuple2(((((eM ++ cJ(bR, en, eG, cm, aY, cn, co, bn)) ++ cr(eG, aY, 1, if (eI)
678733 then 0
679- else 1)) :+ bQ("lock", dl, eB, bT, aW, bU, bV, aG)) ++ [IntegerEntry(dW, dY), IntegerEntry(by(), (bN + eF))]), eF)
734+ else 1)) :+ cj("lock", bR, eG, cm, aY, cn, co, aI)) ++ [IntegerEntry(es, ei), IntegerEntry(bA(), (cg + eK))]), eK)
680735 }
681736 }
682737 }
683738 }
684739
685740
686-@Callable(aG)
687-func constructor (eI,eJ,ay,eK,eL,av) = {
688- let eM = aF(aG)
689- if ((eM == eM))
690- then ([IntegerEntry(bc(), 0), StringEntry(at(), aB(eJ, ay, eK, eL, av)), StringEntry(A(), eI)] ++ bY(0, 0, 0, 0))
741+@Callable(aI)
742+func constructor (eN,eO,aA,eP,eQ,ax) = {
743+ let eR = aH(aI)
744+ if ((eR == eR))
745+ then ([IntegerEntry(be(), 0), StringEntry(av(), aD(eO, aA, eP, eQ, ax)), StringEntry(A(), eN)] ++ cr(0, 0, 0, 0))
691746 else throw("Strict value is not equal to itself.")
692747 }
693748
694749
695750
696-@Callable(aG)
697-func lockRef (aW,eN,eO) = {
698- let eP = ey(aG, aW)
699- let eQ = eP._1
700- let eF = eP._2
701- let eR = toString(aG.caller)
702- let eS = if (if ((eN == ""))
751+@Callable(aI)
752+func lockRef (aY,eS,eT) = {
753+ let eU = eD(aI, aY)
754+ let eV = eU._1
755+ let eK = eU._2
756+ let eW = toString(aI.caller)
757+ let eX = if (if ((eS == ""))
703758 then true
704- else (eO == base58''))
759+ else (eT == base58''))
705760 then unit
706- else invoke(w, "createPair", [z, eN, eR, eO], nil)
707- if ((eS == eS))
761+ else invoke(w, "createPair", [z, eS, eW, eT], nil)
762+ if ((eX == eX))
708763 then {
709- let eT = invoke(av, "updateReferralActivity", [toString(aG.caller), eF], nil)
710- if ((eT == eT))
711- then $Tuple2(eQ, unit)
764+ let eY = invoke(ax, "updateReferralActivity", [toString(aI.caller), eK], nil)
765+ if ((eY == eY))
766+ then $Tuple2(eV, unit)
712767 else throw("Strict value is not equal to itself.")
713768 }
714769 else throw("Strict value is not equal to itself.")
716771
717772
718773
719-@Callable(aG)
720-func lock (aW) = {
721- let eU = ey(aG, aW)
722- let eQ = eU._1
723- let eF = eU._2
724- let eT = invoke(av, "updateReferralActivity", [toString(aG.caller), eF], nil)
725- if ((eT == eT))
726- then $Tuple2(eQ, unit)
774+@Callable(aI)
775+func lock (aY) = {
776+ let eZ = eD(aI, aY)
777+ let eV = eZ._1
778+ let eK = eZ._2
779+ let eY = invoke(ax, "updateReferralActivity", [toString(aI.caller), eK], nil)
780+ if ((eY == eY))
781+ then $Tuple2(eV, unit)
727782 else throw("Strict value is not equal to itself.")
728783 }
729784
730785
731786
732-@Callable(aG)
733-func increaseLock (eV) = {
734- let ez = au()
735- let eA = ez[ao]
736- let ax = fromBase58String(eA)
737- let az = parseIntValue(ez[aq])
738- let aA = parseIntValue(ez[ar])
739- let eB = cy(aG, ax)
740- let dl = toString(aG.caller)
741- let dH = aR(dl)
742- let dI = dH[aJ]
743- let eW = parseIntValue(dH[aK])
744- let bT = parseIntValue(dH[aL])
745- let eX = parseIntValue(dH[aM])
746- let eY = (bT + eX)
747- let eZ = max([(eY - height), 0])
748- let fa = (eW + eB)
749- let fb = (eZ + eV)
750- if ((0 > eV))
787+@Callable(aI)
788+func increaseLock (fa) = {
789+ let eE = aw()
790+ let eF = eE[aq]
791+ let az = fromBase58String(eF)
792+ let aB = parseIntValue(eE[as])
793+ let aC = parseIntValue(eE[at])
794+ let eG = cR(aI, az)
795+ let bR = toString(aI.caller)
796+ let em = aT(bR)
797+ let en = em[aL]
798+ let fb = parseIntValue(em[aM])
799+ let cm = parseIntValue(em[aN])
800+ let fc = parseIntValue(em[aO])
801+ let fd = (cm + fc)
802+ let fe = max([(fd - height), 0])
803+ let ff = (fb + eG)
804+ let fg = (fe + fa)
805+ if ((0 > fa))
751806 then throw("duration is less then zero")
752- else if ((az > fb))
753- then throw(("lockDurationNew is less then minLockDuration=" + toString(az)))
754- else if ((fb > aA))
755- then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aA)))
807+ else if ((aB > fg))
808+ then throw(("lockDurationNew is less then minLockDuration=" + toString(aB)))
809+ else if ((fg > aC))
810+ then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aC)))
756811 else {
757- let eE = fraction(fb, c, aA)
758- let eF = fraction(fa, eE, c)
759- let eT = invoke(av, "updateReferralActivity", [toString(aG.caller), eF], nil)
760- if ((eT == eT))
812+ let eJ = fraction(fg, c, aC)
813+ let eK = fraction(ff, eJ, c)
814+ let eY = invoke(ax, "updateReferralActivity", [toString(aI.caller), eK], nil)
815+ if ((eY == eY))
761816 then {
762- let fc = height
763- let eG = q(invoke(av, "calcGwxParamsREADONLY", [eF, fc, fb], nil))
764- let bU = t(eG[0])
765- let bV = t(eG[1])
766- let bl = toString(t(eG[2]))
767- let dR = n(bB, ah())
768- let dS = n(bB, aj())
769- let dT = n(bB, al())
770- let co = if ((height > dT))
771- then dT
772- else height
773- let dU = max([(co - dS), 0])
774- let dW = br(dI)
775- let dX = k(this, dW)
776- let dY = (((dR * dU) * 2) / 3)
777- let dZ = (dY - dX)
778- if ((0 > dZ))
779- then throw("wrong calculations")
817+ let fh = height
818+ let eL = q(invoke(ax, "calcGwxParamsREADONLY", [eK, fh, fg], nil))
819+ let cn = t(eL[0])
820+ let co = t(eL[1])
821+ let bn = toString(t(eL[2]))
822+ let fi = cZ(bR)
823+ let fj = (eK - fi)
824+ if ((0 > fj))
825+ then throw(("gwxDiff is less then 0: " + toString(fj)))
780826 else {
781- let ee = bu(dI)
782- let ef = bv()
783- let eg = k(this, ee)
784- let eh = k(this, ef)
785- let fd = cG(dl)
786- let fe = (eF - fd)
787- if ((0 > fe))
788- then throw(("gwxDiff is less then 0: " + toString(fe)))
789- else {
790- let bN = bH(false)
791- let ei = bH(true)
792- let ek = bw(dI)
793- let el = k(this, ek)
794- let es = fraction(dZ, fd, ei)
795- let ff = ((eF * fb) / 2)
796- let fg = ((fd * eZ) / 2)
797- let fh = (ff - fg)
798- (((cq(dl, dI, fa, fc, fb, bU, bV, bl) ++ bY(eB, eV, 0, 0)) :+ bQ("lock", dl, eB, bT, fb, bU, bV, aG)) ++ [IntegerEntry(by(), (bN + fe))])
799- }
827+ let cg = cb(false)
828+ let fk = cb(true)
829+ (((cJ(bR, en, ff, fh, fg, cn, co, bn) ++ cr(eG, fa, 0, 0)) :+ cj("lock", bR, eG, cm, fg, cn, co, aI)) ++ [IntegerEntry(bA(), (cg + fj))])
800830 }
801831 }
802832 else throw("Strict value is not equal to itself.")
805835
806836
807837
808-@Callable(aG)
809-func claimWxBoost (cR,dl) = if ((bC != aG.caller))
838+@Callable(aI)
839+func claimWxBoost (bJ,bR) = if ((bU != aI.caller))
810840 then throw("permissions denied")
811841 else {
812- let fi = dE(cR, dl, false)
813- let ev = fi._1
814- let ew = fi._2
815- let ex = fi._3
816- $Tuple2(ew, [ev])
842+ let fl = ej(bJ, bR, false)
843+ let fm = fl._1
844+ let eB = fl._2
845+ let eC = fl._3
846+ $Tuple2(eB, [fm])
817847 }
818848
819849
820850
821-@Callable(aG)
822-func claimWxBoostREADONLY (cR,dl) = {
823- let fj = dE(cR, dl, true)
824- let ev = fj._1
825- let ew = fj._2
826- let ex = fj._3
827- $Tuple2(nil, [ev, ex])
851+@Callable(aI)
852+func claimWxBoostREADONLY (bJ,bR) = {
853+ let fn = ej(bJ, bR, true)
854+ let fm = fn._1
855+ let eB = fn._2
856+ let eC = fn._3
857+ $Tuple2(nil, [fm, eC])
828858 }
829859
830860
831861
832-@Callable(aG)
833-func unlock (aQ) = {
834- let dH = aR(aQ)
835- let dI = dH[aJ]
836- let eW = parseIntValue(dH[aK])
837- let bT = parseIntValue(dH[aL])
838- let eX = parseIntValue(dH[aM])
839- let eY = (bT + eX)
840- let ez = au()
841- let ax = fromBase58String(ez[ao])
842- if ((eY >= height))
843- then throw((("wait " + toString(eY)) + " to unlock"))
844- else if ((0 >= eW))
862+@Callable(aI)
863+func unlock (aS) = {
864+ let em = aT(aS)
865+ let en = em[aL]
866+ let fb = parseIntValue(em[aM])
867+ let cm = parseIntValue(em[aN])
868+ let fc = parseIntValue(em[aO])
869+ let fd = (cm + fc)
870+ let eE = aw()
871+ let az = fromBase58String(eE[aq])
872+ if ((fd >= height))
873+ then throw((("wait " + toString(fd)) + " to unlock"))
874+ else if ((0 >= fb))
845875 then throw("nothing to unlock")
846876 else {
847- let bl = valueOrElse(getInteger(av, am()), 0)
848- (((cq(aQ, dI, 0, bT, eX, 0, 0, toString(bl)) ++ bY(-(eW), 0, 0, -1)) :+ bQ("unlock", aQ, eW, bT, eX, 0, 0, aG)) :+ ScriptTransfer(addressFromStringValue(aQ), eW, ax))
877+ let bn = valueOrElse(getInteger(ax, ao()), 0)
878+ (((cJ(aS, en, 0, cm, fc, 0, 0, toString(bn)) ++ cr(-(fb), 0, 0, -1)) :+ cj("unlock", aS, fb, cm, fc, 0, 0, aI)) :+ ScriptTransfer(addressFromStringValue(aS), fb, az))
849879 }
850880 }
851881
852882
853883
854-@Callable(aG)
855-func gwxUserInfoREADONLY (aQ) = {
856- let ba = cG(aQ)
857- $Tuple2(nil, [ba])
884+@Callable(aI)
885+func gwxUserInfoREADONLY (aS) = {
886+ let bc = cZ(aS)
887+ $Tuple2(nil, [bc])
858888 }
859889
860890
861891
862-@Callable(aG)
863-func userMaxDurationREADONLY (dl) = {
864- let ez = au()
865- let aA = parseIntValue(ez[ar])
866- let fk = getString(this, aP(dl))
867- if ((fk == unit))
868- then $Tuple2(nil, $Tuple2("lock", aA))
892+@Callable(aI)
893+func userMaxDurationREADONLY (bR) = {
894+ let eE = aw()
895+ let aC = parseIntValue(eE[at])
896+ let el = getString(this, aR(bR))
897+ if ((el == unit))
898+ then $Tuple2(nil, $Tuple2("lock", aC))
869899 else {
870- let dH = split(value(fk), a)
871- let bT = parseIntValue(dH[aL])
872- let eX = parseIntValue(dH[aM])
873- let eY = (bT + eX)
874- let eZ = max([(eY - height), 0])
875- let fl = (aA - eZ)
876- $Tuple2(nil, $Tuple2("increaseLock", fl))
900+ let em = split(value(el), a)
901+ let cm = parseIntValue(em[aN])
902+ let fc = parseIntValue(em[aO])
903+ let fd = (cm + fc)
904+ let fe = max([(fd - height), 0])
905+ let fo = (aC - fe)
906+ $Tuple2(nil, $Tuple2("increaseLock", fo))
877907 }
878908 }
879909
880910
881911
882-@Callable(aG)
883-func getUserGwxAmountAtHeightREADONLY (aQ,cC) = {
884- let ba = cB(aQ, cC)
885- $Tuple2(nil, ba)
912+@Callable(aI)
913+func getUserGwxAmountAtHeightREADONLY (aS,cV) = {
914+ let bc = cU(aS, cV)
915+ $Tuple2(nil, bc)
886916 }
887917
888918
889919
890-@Callable(aG)
891-func getTotalCachedGwxREADONLY () = $Tuple2(nil, bH(true))
920+@Callable(aI)
921+func getTotalCachedGwxREADONLY () = $Tuple2(nil, cb(true))
892922
893923
894924
895-@Callable(aG)
896-func onStakedVoteUpdate (cR,dl,dm) = {
897- let eM = if ((aG.caller == bC))
925+@Callable(aI)
926+func onBoostEmissionUpdate () = {
927+ let eR = if ((aI.caller == bT))
898928 then true
899- else aF(aG)
900- if ((eM == eM))
929+ else aH(aI)
930+ if ((eR == eR))
931+ then dZ()
932+ else throw("Strict value is not equal to itself.")
933+ }
934+
935+
936+
937+@Callable(aI)
938+func onStakedVoteUpdate (bJ,bR,dL) = {
939+ let eR = if ((aI.caller == bU))
940+ then true
941+ else aH(aI)
942+ if ((eR == eR))
901943 then {
902- let dt = dk(cR, dl, dm)
903- $Tuple2(dt, unit)
944+ let dO = dK(bJ, bR, dL)
945+ $Tuple2(dO, unit)
904946 }
905947 else throw("Strict value is not equal to itself.")
906948 }
907949
908950
909951
910-@Callable(aG)
911-func getVotingResultStakedREADONLY (cR) = $Tuple2(nil, cW(cR))
952+@Callable(aI)
953+func getVotingResultStakedREADONLY (bJ) = $Tuple2(nil, dp(bJ))
912954
913955
914956
915-@Callable(aG)
916-func setManager (fm) = {
917- let eM = aF(aG)
918- if ((eM == eM))
957+@Callable(aI)
958+func getVotingResultStakedIntegralREADONLY (bJ) = $Tuple2(nil, dt(bJ))
959+
960+
961+
962+@Callable(aI)
963+func getUserVoteFinalizedREADONLY (bJ,bR) = $Tuple2(nil, di(bJ, bR))
964+
965+
966+
967+@Callable(aI)
968+func getUserVoteStakedIntegralREADONLY (bJ,bR) = $Tuple2(nil, dD(bJ, bR))
969+
970+
971+
972+@Callable(aI)
973+func setManager (fp) = {
974+ let eR = aH(aI)
975+ if ((eR == eR))
919976 then {
920- let fn = fromBase58String(fm)
921- if ((fn == fn))
922- then [StringEntry(ag(), fm)]
977+ let fq = fromBase58String(fp)
978+ if ((fq == fq))
979+ then [StringEntry(ag(), fp)]
923980 else throw("Strict value is not equal to itself.")
924981 }
925982 else throw("Strict value is not equal to itself.")
927984
928985
929986
930-@Callable(aG)
987+@Callable(aI)
931988 func confirmManager () = {
932- let fo = aE()
933- let fp = if (isDefined(fo))
989+ let fr = aG()
990+ let fs = if (isDefined(fr))
934991 then true
935992 else throw("No pending manager")
936- if ((fp == fp))
993+ if ((fs == fs))
937994 then {
938- let fq = if ((aG.callerPublicKey == value(fo)))
995+ let ft = if ((aI.callerPublicKey == value(fr)))
939996 then true
940997 else throw("You are not pending manager")
941- if ((fq == fq))
942- then [StringEntry(af(), toBase58String(value(fo))), DeleteEntry(ag())]
998+ if ((ft == ft))
999+ then [StringEntry(af(), toBase58String(value(fr))), DeleteEntry(ag())]
9431000 else throw("Strict value is not equal to itself.")
9441001 }
9451002 else throw("Strict value is not equal to itself.")
9461003 }
9471004
9481005
949-@Verifier(fr)
950-func fs () = {
951- let ft = {
952- let r = aC()
1006+@Verifier(fu)
1007+func fv () = {
1008+ let fw = {
1009+ let r = aE()
9531010 if ($isInstanceOf(r, "ByteVector"))
9541011 then {
955- let aI = r
956- aI
1012+ let aK = r
1013+ aK
9571014 }
9581015 else if ($isInstanceOf(r, "Unit"))
959- then fr.senderPublicKey
1016+ then fu.senderPublicKey
9601017 else throw("Match error")
9611018 }
962- sigVerify(fr.bodyBytes, fr.proofs[0], ft)
1019+ sigVerify(fu.bodyBytes, fu.proofs[0], fw)
9631020 }
9641021
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 8
77
88 let c = 100000000
99
1010 let d = c
1111
1212 func e (f) = makeString(["boosting.ride:", f], " ")
1313
1414
1515 func g (f) = throw(e(f))
1616
1717
1818 func h (i,j) = valueOrErrorMessage(getString(i, j), (("mandatory this." + j) + " is not defined"))
1919
2020
2121 func k (i,j) = valueOrElse(getInteger(i, j), 0)
2222
2323
2424 func l (i,j,m) = valueOrElse(getInteger(i, j), m)
2525
2626
2727 func n (i,j) = valueOrErrorMessage(getInteger(i, j), (("mandatory this." + j) + " is not defined"))
2828
2929
3030 func o (p) = if ((0 > p))
3131 then -(p)
3232 else p
3333
3434
3535 func q (p) = {
3636 let r = p
3737 if ($isInstanceOf(r, "List[Any]"))
3838 then {
3939 let s = r
4040 s
4141 }
4242 else throw("fail to cast into List[Any]")
4343 }
4444
4545
4646 func t (p) = {
4747 let r = p
4848 if ($isInstanceOf(r, "Int"))
4949 then {
5050 let u = r
5151 u
5252 }
5353 else throw("fail to cast into Int")
5454 }
5555
5656
5757 func v () = makeString(["%s%s", "config", "referralsContractAddress"], a)
5858
5959
6060 let w = addressFromStringValue(h(this, v()))
6161
6262 let x = makeString(["%s%s", "referral", "programName"], a)
6363
6464 let y = "wxlock"
6565
6666 let z = valueOrElse(getString(this, x), y)
6767
6868 func A () = "%s%s__config__factoryAddress"
6969
7070
7171 let B = 1
7272
7373 let C = 2
7474
7575 let D = 3
7676
7777 let E = 4
7878
7979 let F = 5
8080
8181 let G = 6
8282
8383 let H = 7
8484
8585 let I = 8
8686
8787 let J = 9
8888
8989 let K = 10
9090
9191 let L = 11
9292
9393 func M () = "%s__factoryConfig"
9494
9595
9696 func N (O) = makeString(["%s%s%s", O, "mappings__lpAsset2PoolContract"], a)
9797
9898
9999 func P () = "%s__lpTokensList"
100100
101101
102102 func Q (O) = makeString(["%s%s%s", O, "mappings__lpAsset2PoolContract"], a)
103103
104104
105105 func R (S) = makeString(["%s%s", "poolWeight", S], a)
106106
107107
108108 func T (U,V) = ((("%s%s__poolWeight__" + U) + "__") + toString(V))
109109
110110
111111 func W () = addressFromStringValue(h(this, A()))
112112
113113
114114 func X () = split(valueOrElse(getString(W(), P()), ""), a)
115115
116116
117117 func Y (Z) = split(h(Z, M()), a)
118118
119119
120120 func aa (ab) = addressFromStringValue(ab[C])
121121
122122
123123 func ac (ab) = addressFromStringValue(ab[F])
124124
125125
126126 func ad (ab) = addressFromStringValue(ab[B])
127127
128128
129129 func ae (ab) = addressFromStringValue(ab[K])
130130
131131
132132 func af () = "%s__managerPublicKey"
133133
134134
135135 func ag () = "%s__pendingManagerPublicKey"
136136
137137
138138 func ah () = "%s%s__ratePerBlock__current"
139139
140140
141141 func ai () = "%s%s__ratePerBlockMax__current"
142142
143143
144144 func aj () = "%s%s__emission__startBlock"
145145
146146
147-func ak () = "%s%s__emission__duration"
147+func ak () = "%s%s__boostingV2__startBlock"
148148
149149
150-func al () = "%s%s__emission__endBlock"
150+func al () = "%s%s__boostingV2__integral"
151151
152152
153-func am () = "%s__nextPeriod"
153+func am () = "%s%s__emission__duration"
154154
155155
156-func an () = "%s%s__gwxRewardEmissionPart__startHeight"
156+func an () = "%s%s__emission__endBlock"
157157
158158
159-let ao = 1
160-
161-let ap = 2
162-
163-let aq = 3
164-
165-let ar = 4
166-
167-let as = 5
168-
169-func at () = "%s__config"
159+func ao () = "%s__nextPeriod"
170160
171161
172-func au () = split(h(this, at()), a)
162+func ap () = "%s%s__gwxRewardEmissionPart__startHeight"
173163
174164
175-let av = addressFromStringValue(au()[as])
165+let aq = 1
176166
177-func aw (ax,ay,az,aA,av) = makeString(["%s%d%d%d", ax, ay, az, aA, av], a)
167+let ar = 2
168+
169+let as = 3
170+
171+let at = 4
172+
173+let au = 5
174+
175+func av () = "%s__config"
178176
179177
180-func aB (ax,ay,az,aA,av) = aw(ax, toString(ay), toString(az), toString(aA), av)
178+func aw () = split(h(this, av()), a)
181179
182180
183-func aC () = {
181+let ax = addressFromStringValue(aw()[au])
182+
183+func ay (az,aA,aB,aC,ax) = makeString(["%s%d%d%d", az, aA, aB, aC, ax], a)
184+
185+
186+func aD (az,aA,aB,aC,ax) = ay(az, toString(aA), toString(aB), toString(aC), ax)
187+
188+
189+func aE () = {
184190 let r = getString(af())
185191 if ($isInstanceOf(r, "String"))
186192 then {
187- let aD = r
188- fromBase58String(aD)
193+ let aF = r
194+ fromBase58String(aF)
189195 }
190196 else if ($isInstanceOf(r, "Unit"))
191197 then unit
192198 else throw("Match error")
193199 }
194200
195201
196-func aE () = {
202+func aG () = {
197203 let r = getString(ag())
198204 if ($isInstanceOf(r, "String"))
199205 then {
200- let aD = r
201- fromBase58String(aD)
206+ let aF = r
207+ fromBase58String(aF)
202208 }
203209 else if ($isInstanceOf(r, "Unit"))
204210 then unit
205211 else throw("Match error")
206212 }
207213
208214
209-func aF (aG) = {
210- let aH = throw("Permission denied")
211- let r = aC()
215+func aH (aI) = {
216+ let aJ = throw("Permission denied")
217+ let r = aE()
212218 if ($isInstanceOf(r, "ByteVector"))
213219 then {
214- let aI = r
215- if ((aG.callerPublicKey == aI))
220+ let aK = r
221+ if ((aI.callerPublicKey == aK))
216222 then true
217- else aH
223+ else aJ
218224 }
219225 else if ($isInstanceOf(r, "Unit"))
220- then if ((aG.caller == this))
226+ then if ((aI.caller == this))
221227 then true
222- else aH
228+ else aJ
223229 else throw("Match error")
224230 }
225231
226232
227-let aJ = 1
233+let aL = 1
228234
229-let aK = 2
235+let aM = 2
230236
231-let aL = 3
237+let aN = 3
232238
233-let aM = 4
239+let aO = 4
234240
235-let aN = 5
241+let aP = 5
236242
237-let aO = 6
243+let aQ = 6
238244
239-func aP (aQ) = makeString(["%s%s__lock", aQ], a)
245+func aR (aS) = makeString(["%s%s__lock", aS], a)
240246
241247
242-func aR (aQ) = split(h(this, aP(aQ)), a)
248+func aT (aS) = split(h(this, aR(aS)), a)
243249
244250
245-func aS (aT,aU,aV,aW,aX,aY,aZ,ba) = makeString(["%d%d%d%d%d%d%d%d", aT, aU, aV, aW, aX, aY, aZ, ba], a)
251+func aU (aV,aW,aX,aY,aZ,ba,bb,bc) = makeString(["%d%d%d%d%d%d%d%d", aV, aW, aX, aY, aZ, ba, bb, bc], a)
246252
247253
248-func bb (aT,aU,aV,aW,aX,aY,ba) = aS(aT, toString(aU), toString(aV), toString(aW), toString(aX), toString(aY), toString(lastBlock.timestamp), toString(ba))
254+func bd (aV,aW,aX,aY,aZ,ba,bc) = aU(aV, toString(aW), toString(aX), toString(aY), toString(aZ), toString(ba), toString(lastBlock.timestamp), toString(bc))
249255
250256
251-func bc () = "%s__nextUserNum"
257+func be () = "%s__nextUserNum"
252258
253259
254-func bd (aQ) = makeString(["%s%s%s__mapping__user2num", aQ], a)
260+func bf (aS) = makeString(["%s%s%s__mapping__user2num", aS], a)
255261
256262
257-func be (V) = makeString(["%s%s%s__mapping__num2user", V], a)
263+func bg (V) = makeString(["%s%s%s__mapping__num2user", V], a)
258264
259265
260-func bf (aT) = makeString(["%s%d%s__paramByUserNum", aT, "amount"], a)
266+func bh (aV) = makeString(["%s%d%s__paramByUserNum", aV, "amount"], a)
261267
262268
263-func bg (aT) = makeString(["%s%d%s__paramByUserNum", aT, "start"], a)
269+func bi (aV) = makeString(["%s%d%s__paramByUserNum", aV, "start"], a)
264270
265271
266-func bh (aT) = makeString(["%s%d%s__paramByUserNum", aT, "duration"], a)
272+func bj (aV) = makeString(["%s%d%s__paramByUserNum", aV, "duration"], a)
267273
268274
269-func bi (aT) = makeString(["%s%d%s__paramByUserNum", aT, "k"], a)
275+func bk (aV) = makeString(["%s%d%s__paramByUserNum", aV, "k"], a)
270276
271277
272-func bj (aT) = makeString(["%s%d%s__paramByUserNum", aT, "b"], a)
278+func bl (aV) = makeString(["%s%d%s__paramByUserNum", aV, "b"], a)
273279
274280
275-func bk (aT,bl) = makeString(["%s%d%s%d__paramByPeriod", aT, "k", bl], a)
281+func bm (aV,bn) = makeString(["%s%d%s%d__paramByPeriod", aV, "k", bn], a)
276282
277283
278-func bm (aT,bl) = makeString(["%s%d%s%d__paramByPeriod", aT, "b", bl], a)
284+func bo (aV,bn) = makeString(["%s%d%s%d__paramByPeriod", aV, "b", bn], a)
279285
280286
281-func bn () = "%s%s__stats__activeTotalLocked"
287+func bp () = "%s%s__stats__activeTotalLocked"
282288
283289
284-func bo () = "%s%s__stats__locksDurationSumInBlocks"
290+func bq () = "%s%s__stats__locksDurationSumInBlocks"
285291
286292
287-func bp () = "%s%s__stats__locksCount"
293+func br () = "%s%s__stats__locksCount"
288294
289295
290-func bq () = "%s%s__stats__activeUsersCount"
296+func bs () = "%s%s__stats__activeUsersCount"
291297
292298
293-func br (aT) = makeString(["%s%d__userBoostEmissionLastInt", aT], a)
299+func bt (aV) = makeString(["%s%d__userBoostEmissionLastIntV2", aV], a)
294300
295301
296-func bs (aT,bt) = makeString(["%s%d__userBoostEmissionLastInt", aT, bt], a)
302+func bu (aV,bv) = makeString(["%s%d__userBoostEmissionLastIntV2", aV, bv], a)
297303
298304
299-func bu (aT) = makeString(["%s%d__maxBoostInt", aT], a)
305+func bw (aV) = makeString(["%s%d__maxBoostInt", aV], a)
300306
301307
302-func bv () = "%s%s__maxBoostInt__total"
308+func bx () = "%s%s__maxBoostInt__total"
303309
304310
305-func bw (aT) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aT], a)
311+func by (aV) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aV], a)
306312
307313
308-func bx (aT) = makeString(["%s%d__userBoostClaimed", aT], a)
314+func bz (aV) = makeString(["%s%d__userBoostClaimed", aV], a)
309315
310316
311-func by () = "%s%s__gwxCached__total"
317+func bA () = "%s%s__gwxCached__total"
312318
313319
314-func bz () = "%s__gwxCachedTotalCorrective"
320+func bB () = "%s__gwxCachedTotalCorrective"
315321
316322
317-let bA = W()
323+func bC (bD,bE,i,bF) = makeString(["%s%s%s%s%d", "vote", bD, bE, toString(i), toString(bF)], a)
318324
319-let ab = Y(bA)
320325
321-let bB = ac(ab)
326+func bG (bF) = makeString(["%s%d", "startHeight", toString(bF)], a)
322327
323-let bC = ad(ab)
324328
325-let bD = ae(ab)
329+func bH () = makeString(["%s", "currentEpochUi"], a)
326330
327-let bE = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), e("lp_staking_pools contract address is undefined"))), e("invalid lp_staking_pools contract address"))
328331
329-let bF = makeString(["%s", "votingEmissionContract"], a)
332+func bI (bJ,bF) = makeString(["%s%s%d", "votingResultStaked", bJ, toString(bF)], a)
330333
331-let bG = addressFromStringValue(getStringValue(bA, bF))
332334
333-func bH (bI) = {
334- let bJ = makeString(["%s", "currentEpochUi"], a)
335- let bK = getIntegerValue(bG, bJ)
336- let bL = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
337- let bM = getInteger(this, bL)
338- let bN = valueOrElse(getInteger(this, by()), 0)
339- let bO = if (isDefined(bM))
340- then (bK >= value(bM))
335+func bK (bJ,bF) = makeString(["%s%s%d", "votingResultStakedIntegral", bJ, toString(bF)], a)
336+
337+
338+func bL (bJ,bF) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", bJ, toString(bF)], a)
339+
340+
341+func bM (bJ,i,bF) = makeString(["%s%s%s%d", "votingResultStakedIntegralLast", bJ, toString(i), toString(bF)], a)
342+
343+
344+func bN (bJ,i,bF) = makeString(["%s%s%s%d", "voteStakedIntegral", bJ, toString(i), toString(bF)], a)
345+
346+
347+func bO (bJ,i,bF) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", bJ, toString(i), toString(bF)], a)
348+
349+
350+func bP (bJ,i,bF) = makeString(["%s%s%s%d", "voteStakedIntegralLast", bJ, toString(i), toString(bF)], a)
351+
352+
353+func bQ (bR,bJ) = makeString(["%s%s%s", "staked", bR, bJ], a)
354+
355+
356+let bS = W()
357+
358+let ab = Y(bS)
359+
360+let bT = ac(ab)
361+
362+let bU = ad(ab)
363+
364+let bV = ae(ab)
365+
366+let bW = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), e("lp_staking_pools contract address is undefined"))), e("invalid lp_staking_pools contract address"))
367+
368+let bX = makeString(["%s", "votingEmissionContract"], a)
369+
370+let bY = addressFromStringValue(getStringValue(bS, bX))
371+
372+let bZ = {
373+ let ca = invoke(bT, "getBoostCoeffREADONLY", nil, nil)
374+ if ($isInstanceOf(ca, "Int"))
375+ then ca
376+ else throw(($getType(ca) + " couldn't be cast to Int"))
377+ }
378+
379+func cb (cc) = {
380+ let cd = getIntegerValue(bY, bH())
381+ let ce = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
382+ let cf = getInteger(this, ce)
383+ let cg = valueOrElse(getInteger(this, bA()), 0)
384+ let ch = if (isDefined(cf))
385+ then (cd >= value(cf))
341386 else false
342- let bP = if (if (bO)
343- then bI
387+ let ci = if (if (ch)
388+ then cc
344389 else false)
345- then valueOrElse(getInteger(this, bz()), 0)
390+ then valueOrElse(getInteger(this, bB()), 0)
346391 else 0
347- max([0, (bN + bP)])
392+ max([0, (cg + ci)])
348393 }
349394
350395
351-func bQ (bR,bS,aU,bT,aW,bU,bV,aG) = {
352- let bW = makeString(["%s%s%s%s__history", bR, bS, toBase58String(aG.transactionId)], a)
353- let bX = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aU), toString(bT), toString(aW), toString(bU), toString(bV)], a)
354- StringEntry(bW, bX)
396+func cj (ck,cl,aW,cm,aY,cn,co,aI) = {
397+ let cp = makeString(["%s%s%s%s__history", ck, cl, toBase58String(aI.transactionId)], a)
398+ let cq = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aW), toString(cm), toString(aY), toString(cn), toString(co)], a)
399+ StringEntry(cp, cq)
355400 }
356401
357402
358-func bY (bZ,ca,cb,cc) = {
359- let cd = bo()
360- let ce = bp()
361- let cf = bq()
362- let cg = bn()
363- let ch = k(this, cd)
364- let ci = k(this, ce)
365- let cj = k(this, cf)
366- let ck = k(this, cg)
367-[IntegerEntry(cd, (ch + ca)), IntegerEntry(ce, (ci + cb)), IntegerEntry(cf, (cj + cc)), IntegerEntry(cg, (ck + bZ))]
403+func cr (cs,ct,cu,cv) = {
404+ let cw = bq()
405+ let cx = br()
406+ let cy = bs()
407+ let cz = bp()
408+ let cA = k(this, cw)
409+ let cB = k(this, cx)
410+ let cC = k(this, cy)
411+ let cD = k(this, cz)
412+[IntegerEntry(cw, (cA + ct)), IntegerEntry(cx, (cB + cu)), IntegerEntry(cy, (cC + cv)), IntegerEntry(cz, (cD + cs))]
368413 }
369414
370415
371-func cl (cm,cn,co) = {
372- let cp = 1000
373- (((cm * co) + cn) / cp)
416+func cE (cF,cG,cH) = {
417+ let cI = 1000
418+ (((cF * cH) + cG) / cI)
374419 }
375420
376421
377-func cq (aQ,aT,aU,aV,aW,bU,bV,bl) = {
378- let cr = bf(aT)
379- let cs = bg(aT)
380- let ct = bh(aT)
381- let cu = bi(aT)
382- let cv = bj(aT)
383- let cw = bk(aT, bl)
384- let cx = bm(aT, bl)
385- let ba = cl(bU, bV, height)
386-[IntegerEntry(cr, aU), IntegerEntry(cs, aV), IntegerEntry(ct, aW), IntegerEntry(cu, bU), IntegerEntry(cv, bV), IntegerEntry(cw, bU), IntegerEntry(cx, bV), StringEntry(aP(aQ), bb(aT, aU, aV, aW, bU, bV, ba))]
422+func cJ (aS,aV,aW,aX,aY,cn,co,bn) = {
423+ let cK = bh(aV)
424+ let cL = bi(aV)
425+ let cM = bj(aV)
426+ let cN = bk(aV)
427+ let cO = bl(aV)
428+ let cP = bm(aV, bn)
429+ let cQ = bo(aV, bn)
430+ let bc = cE(cn, co, height)
431+[IntegerEntry(cK, aW), IntegerEntry(cL, aX), IntegerEntry(cM, aY), IntegerEntry(cN, cn), IntegerEntry(cO, co), IntegerEntry(cP, cn), IntegerEntry(cQ, co), StringEntry(aR(aS), bd(aV, aW, aX, aY, cn, co, bc))]
387432 }
388433
389434
390-func cy (aG,cz) = if ((size(aG.payments) > 1))
435+func cR (aI,cS) = if ((size(aI.payments) > 1))
391436 then throw("only one payment is allowed")
392- else if ((size(aG.payments) == 0))
437+ else if ((size(aI.payments) == 0))
393438 then 0
394439 else {
395- let cA = aG.payments[0]
396- if ((value(cA.assetId) != cz))
440+ let cT = aI.payments[0]
441+ if ((value(cT.assetId) != cS))
397442 then throw("invalid asset id in payment")
398- else cA.amount
443+ else cT.amount
399444 }
400445
401446
402-func cB (aQ,cC) = {
403- let cD = "empty"
404- let cE = bd(aQ)
405- let aT = valueOrElse(getString(cE), cD)
406- let bU = valueOrElse(getInteger(bi(aT)), 0)
407- let bV = valueOrElse(getInteger(bj(aT)), 0)
408- let cF = cl(bU, bV, cC)
409- let ba = if ((0 > cF))
447+func cU (aS,cV) = {
448+ let cW = "empty"
449+ let cX = bf(aS)
450+ let aV = valueOrElse(getString(cX), cW)
451+ let cn = valueOrElse(getInteger(bk(aV)), 0)
452+ let co = valueOrElse(getInteger(bl(aV)), 0)
453+ let cY = cE(cn, co, cV)
454+ let bc = if ((0 > cY))
410455 then 0
411- else cF
412- ba
456+ else cY
457+ bc
413458 }
414459
415460
416-func cG (aQ) = cB(aQ, height)
461+func cZ (aS) = cU(aS, height)
417462
418463
419-func cH () = {
420- let bJ = makeString(["%s", "currentEpochUi"], a)
421- let cI = {
422- let bK = value(getInteger(bG, bJ))
423- let cJ = (bK - 1)
424- if ((0 > cJ))
464+func da () = {
465+ let db = {
466+ let cd = value(getInteger(bY, bH()))
467+ let dc = (cd - 1)
468+ if ((0 > dc))
425469 then g("invalid epoch")
426- else $Tuple2(bK, cJ)
470+ else $Tuple2(cd, dc)
427471 }
428- let bK = cI._1
429- let cJ = cI._2
430- func cK (cL) = makeString(["%s%d", "startHeight", toString(cL)], a)
431-
432- let cM = value(getInteger(bG, cK(bK)))
433- $Tuple2(cJ, cM)
472+ let cd = db._1
473+ let dc = db._2
474+ let dd = value(getInteger(bY, bG(cd)))
475+ $Tuple2(dc, dd)
434476 }
435477
436478
437-func cN (cO,cP,i,cL) = makeString(["%s%s%s%s%d", "vote", cO, cP, toString(i), toString(cL)], a)
438-
439-
440-func cQ (cR,cL) = makeString(["%s%s%d", "votingResultStaked", cR, toString(cL)], a)
441-
442-
443-func cS (cR,cL) = makeString(["%s%s%d", "votingResultStakedIntegral", cR, toString(cL)], a)
444-
445-
446-func cT (cR,cL) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", cR, toString(cL)], a)
447-
448-
449-func cU (cR,i,cL) = makeString(["%s%s%s%d", "voteStakedIntegral", cR, toString(i), toString(cL)], a)
450-
451-
452-func cV (cR,i,cL) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", cR, toString(i), toString(cL)], a)
453-
454-
455-func cW (cR) = {
456- let cX = cH()
457- let cJ = cX._1
458- let cM = cX._2
459- let cY = valueOrElse(getInteger(bG, cQ(cR, cJ)), 0)
460- let cZ = valueOrElse(getInteger(this, cQ(cR, cJ)), cY)
461- cZ
479+func de (bJ) = {
480+ let df = 4
481+ let dg = 5
482+ let dh = {
483+ let ca = invoke(bS, "getPoolConfigByLpAssetIdREADONLY", [bJ], nil)
484+ if ($isInstanceOf(ca, "List[Any]"))
485+ then ca
486+ else throw(($getType(ca) + " couldn't be cast to List[Any]"))
487+ }
488+ let bD = {
489+ let ca = dh[df]
490+ if ($isInstanceOf(ca, "String"))
491+ then ca
492+ else throw(($getType(ca) + " couldn't be cast to String"))
493+ }
494+ let bE = {
495+ let ca = dh[dg]
496+ if ($isInstanceOf(ca, "String"))
497+ then ca
498+ else throw(($getType(ca) + " couldn't be cast to String"))
499+ }
500+ $Tuple2(bD, bE)
462501 }
463502
464503
465-func da (cR,db) = {
466- let dc = cH()
467- let cJ = dc._1
468- let cM = dc._2
469- let cZ = cW(cR)
470- let dd = (cZ + db)
471- let de = cS(cR, cJ)
472- let df = valueOrElse(getInteger(this, de), 0)
473- let dg = cT(cR, cJ)
474- let dh = valueOrElse(getInteger(this, dg), cM)
475- let di = (height - dh)
476- let dj = ((di * cZ) + df)
477- $Tuple2([IntegerEntry(cQ(cR, cJ), dd), IntegerEntry(dg, height), IntegerEntry(de, dj)], dj)
504+func di (bJ,bR) = {
505+ let aS = addressFromStringValue(bR)
506+ let dj = da()
507+ let dc = dj._1
508+ let dd = dj._2
509+ let dk = de(bJ)
510+ let bD = dk._1
511+ let bE = dk._2
512+ let dl = bC(bD, bE, aS, dc)
513+ let dm = valueOrElse(getInteger(bY, dl), 0)
514+ dm
478515 }
479516
480517
481-func dk (cR,dl,dm) = {
482- let dn = cH()
483- let cJ = dn._1
484- let cM = dn._2
485- let aQ = addressFromStringValue(dl)
486- let do = 4
487- let dp = 5
488- let dq = {
489- let dr = invoke(bA, "getPoolConfigByLpAssetId", [cR], nil)
490- if ($isInstanceOf(dr, "List[Any]"))
491- then dr
492- else throw(($getType(dr) + " couldn't be cast to List[Any]"))
493- }
494- let cO = {
495- let dr = dq[do]
496- if ($isInstanceOf(dr, "String"))
497- then dr
498- else throw(($getType(dr) + " couldn't be cast to String"))
499- }
500- let cP = {
501- let dr = dq[dp]
502- if ($isInstanceOf(dr, "String"))
503- then dr
504- else throw(($getType(dr) + " couldn't be cast to String"))
505- }
506- let ds = valueOrElse(getInteger(bG, cN(cO, cP, aQ, cJ)), 0)
507- let dt = if ((ds == 0))
508- then nil
509- else {
510- let db = if (dm)
511- then ds
512- else -(ds)
513- let du = da(cR, db)
514- let dv = du._1
515- let dj = du._2
516- let dw = if (dm)
517- then 0
518- else ds
519- let dx = cU(cR, aQ, cJ)
520- let dy = valueOrElse(getInteger(this, dx), 0)
521- let dz = cV(cR, aQ, cJ)
522- let dA = valueOrElse(getInteger(this, dz), cM)
523- let dB = (height - dA)
524- let dC = ((dB * dw) + dy)
525- let dD = [IntegerEntry(dz, height), IntegerEntry(dx, dC)]
526- (dv ++ dD)
527- }
528- dt
518+func dn (bJ,bR) = {
519+ let do = valueOrElse(getInteger(bU, bQ(bR, bJ)), 0)
520+ let dm = di(bJ, bR)
521+ if ((do == 0))
522+ then 0
523+ else dm
529524 }
530525
531526
532-func dE (cR,dl,dF) = {
533- let cD = "EMPTY"
534- let dG = valueOrElse(getString(this, aP(dl)), cD)
535- if ((dG == cD))
527+func dp (bJ) = {
528+ let dq = da()
529+ let dc = dq._1
530+ let dd = dq._2
531+ let dr = valueOrElse(getInteger(bY, bI(bJ, dc)), 0)
532+ let ds = valueOrElse(getInteger(this, bI(bJ, dc)), dr)
533+ ds
534+ }
535+
536+
537+func dt (bJ) = {
538+ let du = da()
539+ let dc = du._1
540+ let dd = du._2
541+ let ds = dp(bJ)
542+ let dv = valueOrElse(getInteger(this, bK(bJ, dc)), 0)
543+ let dw = valueOrElse(getInteger(this, bL(bJ, dc)), dd)
544+ let dx = (height - dw)
545+ let dy = ((dx * ds) + dv)
546+ dy
547+ }
548+
549+
550+func dz (bJ,dA) = {
551+ let dB = da()
552+ let dc = dB._1
553+ let dd = dB._2
554+ let ds = dp(bJ)
555+ let dC = (ds + dA)
556+ let dy = dt(bJ)
557+[IntegerEntry(bI(bJ, dc), dC), IntegerEntry(bL(bJ, dc), height), IntegerEntry(bK(bJ, dc), dy)]
558+ }
559+
560+
561+func dD (bJ,bR) = {
562+ let dE = da()
563+ let dc = dE._1
564+ let dd = dE._2
565+ let aS = addressFromStringValue(bR)
566+ let dF = dn(bJ, bR)
567+ let dG = valueOrElse(getInteger(this, bN(bJ, aS, dc)), 0)
568+ let dH = valueOrElse(getInteger(this, bO(bJ, aS, dc)), dd)
569+ let dI = (height - dH)
570+ let dJ = ((dI * dF) + dG)
571+ dJ
572+ }
573+
574+
575+func dK (bJ,bR,dL) = {
576+ let dM = da()
577+ let dc = dM._1
578+ let dd = dM._2
579+ let aS = addressFromStringValue(bR)
580+ let dN = di(bJ, bR)
581+ let dO = if ((dN == 0))
582+ then nil
583+ else {
584+ let dA = if (dL)
585+ then dN
586+ else -(dN)
587+ let dP = dz(bJ, dA)
588+ let dJ = dD(bJ, bR)
589+ let dQ = [IntegerEntry(bO(bJ, aS, dc), height), IntegerEntry(bN(bJ, aS, dc), dJ)]
590+ (dP ++ dQ)
591+ }
592+ dO
593+ }
594+
595+
596+func dR (bJ,bR) = {
597+ let dS = da()
598+ let dc = dS._1
599+ let dd = dS._2
600+ let aS = addressFromStringValue(bR)
601+ let dT = bP(bJ, aS, dc)
602+ let dU = valueOrElse(getInteger(this, dT), 0)
603+ let dV = bM(bJ, aS, dc)
604+ let dW = valueOrElse(getInteger(this, dV), 0)
605+ let dJ = dD(bJ, bR)
606+ let dy = dt(bJ)
607+ let dX = (dJ - dU)
608+ let dY = (dy - dW)
609+ $Tuple3([IntegerEntry(dT, dJ), IntegerEntry(dV, dy)], dX, dY)
610+ }
611+
612+
613+func dZ () = {
614+ let ea = n(bT, ah())
615+ let eb = getInteger(bT, ak())
616+ let ec = getInteger(this, al())
617+ let ed = n(bT, an())
618+ let cH = if ((height > ed))
619+ then ed
620+ else height
621+ let ee = {
622+ let r = eb
623+ if ($isInstanceOf(r, "Int"))
624+ then {
625+ let ef = r
626+ max([(cH - ef), 0])
627+ }
628+ else if ($isInstanceOf(r, "Unit"))
629+ then 0
630+ else throw("Match error")
631+ }
632+ let eg = ((ea * (bZ - 1)) / bZ)
633+ let eh = valueOrElse(ec, 0)
634+ let ei = ((eg * ee) + eh)
635+ $Tuple2([IntegerEntry(al(), ei), IntegerEntry(ak(), height)], ei)
636+ }
637+
638+
639+func ej (bJ,bR,ek) = {
640+ let el = getString(this, aR(bR))
641+ if ((el == unit))
536642 then $Tuple3(0, nil, "userRecord::is::empty")
537643 else {
538- let dH = split(dG, a)
539- let dI = dH[aJ]
540- let dJ = valueOrElse(getInteger(bD, an()), 0)
541- let dK = "empty"
542- let dL = if ((cR != dK))
644+ let em = split(value(el), a)
645+ let en = em[aL]
646+ let eo = "empty"
647+ let ep = if ((bJ != eo))
543648 then {
544- let dM = valueOrErrorMessage(getString(bA, N(cR)), ("unsupported lp asset " + cR))
545- let dN = getIntegerValue(bA, R(dM))
546- let dO = valueOrElse(getInteger(bA, T(dM, 0)), dN)
547- $Tuple2(dO, dN)
649+ let eq = valueOrErrorMessage(getString(bS, N(bJ)), ("unsupported lp asset " + bJ))
650+ getIntegerValue(bS, R(eq))
548651 }
549- else if (dF)
550- then $Tuple2(0, 0)
551- else throw(("not readonly mode: unsupported lp asset " + cR))
552- let dP = dL._1
553- let dQ = dL._2
554- let dR = n(bB, ah())
555- let dS = n(bB, aj())
556- let dT = n(bB, al())
557- let co = if ((height > dT))
558- then dT
559- else height
560- let dU = max([(co - dS), 0])
561- let dV = bs(dI, cR)
562- let dW = br(dI)
563- let dX = valueOrElse(getInteger(this, dV), k(this, dW))
564- let dY = (((dR * dU) * 2) / 3)
565- let dZ = (dY - dX)
566- let ea = fraction(dZ, 3, (2 * dR))
567- let eb = (co - ea)
568- let ec = max([(dJ - eb), 0])
569- let ed = ((co - eb) - ec)
570- if (if (if ((0 > eb))
571- then true
572- else (0 > ed))
573- then true
574- else (o(((ec + ed) - ea)) >= 1))
575- then throw(((((((((((("invalid udh calc: udh=" + toString(ea)) + " uLastH=") + toString(eb)) + " udh0=") + toString(ec)) + " udh1=") + toString(ed)) + " lpAssetId=") + cR) + " userAddress=") + dl))
576- else if ((0 > dZ))
577- then throw("wrong calculations")
578- else {
579- let ee = bu(dI)
580- let ef = bv()
581- let eg = k(this, ee)
582- let eh = k(this, ef)
583- let ei = bH(true)
584- let ej = cG(dl)
585- let ek = bw(dI)
586- let el = k(this, ek)
587- let em = if ((ea == 0))
588- then 0
589- else fraction(dZ, ec, ea)
590- let en = if ((ea == 0))
591- then 0
592- else fraction(dZ, ed, ea)
593- let eo = fraction(em, dP, d)
594- let ep = fraction(en, dQ, d)
595- let eq = if ((ei == 0))
596- then 0
597- else fraction(eo, ej, ei)
598- let er = if ((ei == 0))
599- then 0
600- else fraction(ep, ej, ei)
601- let es = (eq + er)
602- let et = bx(dI)
603- let eu = k(this, et)
604- let ev = (es - eu)
605- let ew = [IntegerEntry(dV, dY)]
606- let ex = makeString([toString(dX), toString(dZ), toString(eu), toString(ev), toString(dP), toString(dQ), toString(co), toString(ea), toString(eb), toString(ec), toString(ed), toString(ej), toString(ei)], ":")
607- $Tuple3(es, ew, ex)
608- }
652+ else if (ek)
653+ then 0
654+ else throw(("not readonly mode: unsupported lp asset " + bJ))
655+ let er = bu(en, bJ)
656+ let es = bt(en)
657+ let et = valueOrElse(getInteger(this, er), k(this, es))
658+ let ei = dZ()._2
659+ let eu = (ei - et)
660+ if ((0 > eu))
661+ then throw("wrong calculations")
662+ else {
663+ let ev = dR(bJ, bR)
664+ let ew = ev._1
665+ let ex = ev._2
666+ let ey = ev._3
667+ let ez = fraction(eu, ep, d)
668+ let eA = if ((ey == 0))
669+ then 0
670+ else fraction(ez, ex, ey)
671+ let eB = ([IntegerEntry(er, ei)] ++ ew)
672+ let eC = makeString([toString(et), toString(eu), toString(ep), toString(ex), toString(ey)], ":")
673+ $Tuple3(eA, eB, eC)
674+ }
609675 }
610676 }
611677
612678
613-func ey (aG,aW) = {
614- let ez = au()
615- let eA = ez[ao]
616- let ax = fromBase58String(eA)
617- let ay = parseIntValue(ez[ap])
618- let az = parseIntValue(ez[aq])
619- let aA = parseIntValue(ez[ar])
620- if ((size(aG.payments) != 1))
679+func eD (aI,aY) = {
680+ let eE = aw()
681+ let eF = eE[aq]
682+ let az = fromBase58String(eF)
683+ let aA = parseIntValue(eE[ar])
684+ let aB = parseIntValue(eE[as])
685+ let aC = parseIntValue(eE[at])
686+ if ((size(aI.payments) != 1))
621687 then throw("invalid payment - exact one payment must be attached")
622688 else {
623- let cA = aG.payments[0]
624- let eB = cA.amount
625- if ((ax != value(cA.assetId)))
626- then throw((("invalid asset is in payment - " + eA) + " is expected"))
689+ let cT = aI.payments[0]
690+ let eG = cT.amount
691+ if ((az != value(cT.assetId)))
692+ then throw((("invalid asset is in payment - " + eF) + " is expected"))
627693 else {
628- let eC = bc()
629- let dl = toString(aG.caller)
630- let eD = isDefined(getString(bd(dl)))
631- let dI = if (eD)
632- then value(getString(bd(dl)))
633- else toString(n(this, eC))
634- let aT = parseIntValue(dI)
635- let bT = height
636- let cs = bg(dI)
637- let ct = bh(dI)
638- let cr = bf(dI)
639- if (if ((ay > eB))
640- then (aG.caller != bE)
694+ let eH = be()
695+ let bR = toString(aI.caller)
696+ let eI = isDefined(getString(bf(bR)))
697+ let en = if (eI)
698+ then value(getString(bf(bR)))
699+ else toString(n(this, eH))
700+ let aV = parseIntValue(en)
701+ let cm = height
702+ let cL = bi(en)
703+ let cM = bj(en)
704+ let cK = bh(en)
705+ if (if ((aA > eG))
706+ then (aI.caller != bW)
641707 else false)
642- then throw(("amount is less then minLockAmount=" + toString(ay)))
643- else if ((az > aW))
644- then throw(("passed duration is less then minLockDuration=" + toString(az)))
645- else if ((aW > aA))
646- then throw(("passed duration is greater then maxLockDuration=" + toString(aA)))
647- else if (if (eD)
648- then ((n(this, cs) + n(this, ct)) >= bT)
708+ then throw(("amount is less then minLockAmount=" + toString(aA)))
709+ else if ((aB > aY))
710+ then throw(("passed duration is less then minLockDuration=" + toString(aB)))
711+ else if ((aY > aC))
712+ then throw(("passed duration is greater then maxLockDuration=" + toString(aC)))
713+ else if (if (eI)
714+ then ((n(this, cL) + n(this, cM)) >= cm)
649715 else false)
650716 then throw("there is an active lock - consider to use increaseLock")
651- else if ((k(this, cr) > 0))
652- then throw(("there are locked WXs - consider to use increaseLock " + cr))
717+ else if ((k(this, cK) > 0))
718+ then throw(("there are locked WXs - consider to use increaseLock " + cK))
653719 else {
654- let eE = fraction(aW, c, aA)
655- let eF = fraction(eB, eE, c)
656- let eG = q(invoke(av, "calcGwxParamsREADONLY", [eF, bT, aW], nil))
657- let bU = t(eG[0])
658- let bV = t(eG[1])
659- let bl = toString(t(eG[2]))
660- let dR = n(bB, ah())
661- let dS = n(bB, aj())
662- let dT = n(bB, al())
663- let co = if ((height > dT))
664- then dT
665- else height
666- let dU = max([(co - dS), 0])
667- let dW = br(dI)
668- let dY = (((dR * dU) * 2) / 3)
669- let ee = bu(dI)
670- let ef = bv()
671- let eg = ((eF * aW) / 2)
672- let eh = k(this, ef)
673- let bN = bH(false)
674- let eH = if (eD)
720+ let eJ = fraction(aY, c, aC)
721+ let eK = fraction(eG, eJ, c)
722+ let eL = q(invoke(ax, "calcGwxParamsREADONLY", [eK, cm, aY], nil))
723+ let cn = t(eL[0])
724+ let co = t(eL[1])
725+ let bn = toString(t(eL[2]))
726+ let cg = cb(false)
727+ let es = bt(en)
728+ let ei = dZ()._2
729+ let eM = if (eI)
675730 then nil
676- else [IntegerEntry(eC, (aT + 1)), StringEntry(bd(dl), dI), StringEntry(be(dI), dl)]
677- $Tuple2(((((eH ++ cq(dl, dI, eB, bT, aW, bU, bV, bl)) ++ bY(eB, aW, 1, if (eD)
731+ else [IntegerEntry(eH, (aV + 1)), StringEntry(bf(bR), en), StringEntry(bg(en), bR)]
732+ $Tuple2(((((eM ++ cJ(bR, en, eG, cm, aY, cn, co, bn)) ++ cr(eG, aY, 1, if (eI)
678733 then 0
679- else 1)) :+ bQ("lock", dl, eB, bT, aW, bU, bV, aG)) ++ [IntegerEntry(dW, dY), IntegerEntry(by(), (bN + eF))]), eF)
734+ else 1)) :+ cj("lock", bR, eG, cm, aY, cn, co, aI)) ++ [IntegerEntry(es, ei), IntegerEntry(bA(), (cg + eK))]), eK)
680735 }
681736 }
682737 }
683738 }
684739
685740
686-@Callable(aG)
687-func constructor (eI,eJ,ay,eK,eL,av) = {
688- let eM = aF(aG)
689- if ((eM == eM))
690- then ([IntegerEntry(bc(), 0), StringEntry(at(), aB(eJ, ay, eK, eL, av)), StringEntry(A(), eI)] ++ bY(0, 0, 0, 0))
741+@Callable(aI)
742+func constructor (eN,eO,aA,eP,eQ,ax) = {
743+ let eR = aH(aI)
744+ if ((eR == eR))
745+ then ([IntegerEntry(be(), 0), StringEntry(av(), aD(eO, aA, eP, eQ, ax)), StringEntry(A(), eN)] ++ cr(0, 0, 0, 0))
691746 else throw("Strict value is not equal to itself.")
692747 }
693748
694749
695750
696-@Callable(aG)
697-func lockRef (aW,eN,eO) = {
698- let eP = ey(aG, aW)
699- let eQ = eP._1
700- let eF = eP._2
701- let eR = toString(aG.caller)
702- let eS = if (if ((eN == ""))
751+@Callable(aI)
752+func lockRef (aY,eS,eT) = {
753+ let eU = eD(aI, aY)
754+ let eV = eU._1
755+ let eK = eU._2
756+ let eW = toString(aI.caller)
757+ let eX = if (if ((eS == ""))
703758 then true
704- else (eO == base58''))
759+ else (eT == base58''))
705760 then unit
706- else invoke(w, "createPair", [z, eN, eR, eO], nil)
707- if ((eS == eS))
761+ else invoke(w, "createPair", [z, eS, eW, eT], nil)
762+ if ((eX == eX))
708763 then {
709- let eT = invoke(av, "updateReferralActivity", [toString(aG.caller), eF], nil)
710- if ((eT == eT))
711- then $Tuple2(eQ, unit)
764+ let eY = invoke(ax, "updateReferralActivity", [toString(aI.caller), eK], nil)
765+ if ((eY == eY))
766+ then $Tuple2(eV, unit)
712767 else throw("Strict value is not equal to itself.")
713768 }
714769 else throw("Strict value is not equal to itself.")
715770 }
716771
717772
718773
719-@Callable(aG)
720-func lock (aW) = {
721- let eU = ey(aG, aW)
722- let eQ = eU._1
723- let eF = eU._2
724- let eT = invoke(av, "updateReferralActivity", [toString(aG.caller), eF], nil)
725- if ((eT == eT))
726- then $Tuple2(eQ, unit)
774+@Callable(aI)
775+func lock (aY) = {
776+ let eZ = eD(aI, aY)
777+ let eV = eZ._1
778+ let eK = eZ._2
779+ let eY = invoke(ax, "updateReferralActivity", [toString(aI.caller), eK], nil)
780+ if ((eY == eY))
781+ then $Tuple2(eV, unit)
727782 else throw("Strict value is not equal to itself.")
728783 }
729784
730785
731786
732-@Callable(aG)
733-func increaseLock (eV) = {
734- let ez = au()
735- let eA = ez[ao]
736- let ax = fromBase58String(eA)
737- let az = parseIntValue(ez[aq])
738- let aA = parseIntValue(ez[ar])
739- let eB = cy(aG, ax)
740- let dl = toString(aG.caller)
741- let dH = aR(dl)
742- let dI = dH[aJ]
743- let eW = parseIntValue(dH[aK])
744- let bT = parseIntValue(dH[aL])
745- let eX = parseIntValue(dH[aM])
746- let eY = (bT + eX)
747- let eZ = max([(eY - height), 0])
748- let fa = (eW + eB)
749- let fb = (eZ + eV)
750- if ((0 > eV))
787+@Callable(aI)
788+func increaseLock (fa) = {
789+ let eE = aw()
790+ let eF = eE[aq]
791+ let az = fromBase58String(eF)
792+ let aB = parseIntValue(eE[as])
793+ let aC = parseIntValue(eE[at])
794+ let eG = cR(aI, az)
795+ let bR = toString(aI.caller)
796+ let em = aT(bR)
797+ let en = em[aL]
798+ let fb = parseIntValue(em[aM])
799+ let cm = parseIntValue(em[aN])
800+ let fc = parseIntValue(em[aO])
801+ let fd = (cm + fc)
802+ let fe = max([(fd - height), 0])
803+ let ff = (fb + eG)
804+ let fg = (fe + fa)
805+ if ((0 > fa))
751806 then throw("duration is less then zero")
752- else if ((az > fb))
753- then throw(("lockDurationNew is less then minLockDuration=" + toString(az)))
754- else if ((fb > aA))
755- then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aA)))
807+ else if ((aB > fg))
808+ then throw(("lockDurationNew is less then minLockDuration=" + toString(aB)))
809+ else if ((fg > aC))
810+ then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aC)))
756811 else {
757- let eE = fraction(fb, c, aA)
758- let eF = fraction(fa, eE, c)
759- let eT = invoke(av, "updateReferralActivity", [toString(aG.caller), eF], nil)
760- if ((eT == eT))
812+ let eJ = fraction(fg, c, aC)
813+ let eK = fraction(ff, eJ, c)
814+ let eY = invoke(ax, "updateReferralActivity", [toString(aI.caller), eK], nil)
815+ if ((eY == eY))
761816 then {
762- let fc = height
763- let eG = q(invoke(av, "calcGwxParamsREADONLY", [eF, fc, fb], nil))
764- let bU = t(eG[0])
765- let bV = t(eG[1])
766- let bl = toString(t(eG[2]))
767- let dR = n(bB, ah())
768- let dS = n(bB, aj())
769- let dT = n(bB, al())
770- let co = if ((height > dT))
771- then dT
772- else height
773- let dU = max([(co - dS), 0])
774- let dW = br(dI)
775- let dX = k(this, dW)
776- let dY = (((dR * dU) * 2) / 3)
777- let dZ = (dY - dX)
778- if ((0 > dZ))
779- then throw("wrong calculations")
817+ let fh = height
818+ let eL = q(invoke(ax, "calcGwxParamsREADONLY", [eK, fh, fg], nil))
819+ let cn = t(eL[0])
820+ let co = t(eL[1])
821+ let bn = toString(t(eL[2]))
822+ let fi = cZ(bR)
823+ let fj = (eK - fi)
824+ if ((0 > fj))
825+ then throw(("gwxDiff is less then 0: " + toString(fj)))
780826 else {
781- let ee = bu(dI)
782- let ef = bv()
783- let eg = k(this, ee)
784- let eh = k(this, ef)
785- let fd = cG(dl)
786- let fe = (eF - fd)
787- if ((0 > fe))
788- then throw(("gwxDiff is less then 0: " + toString(fe)))
789- else {
790- let bN = bH(false)
791- let ei = bH(true)
792- let ek = bw(dI)
793- let el = k(this, ek)
794- let es = fraction(dZ, fd, ei)
795- let ff = ((eF * fb) / 2)
796- let fg = ((fd * eZ) / 2)
797- let fh = (ff - fg)
798- (((cq(dl, dI, fa, fc, fb, bU, bV, bl) ++ bY(eB, eV, 0, 0)) :+ bQ("lock", dl, eB, bT, fb, bU, bV, aG)) ++ [IntegerEntry(by(), (bN + fe))])
799- }
827+ let cg = cb(false)
828+ let fk = cb(true)
829+ (((cJ(bR, en, ff, fh, fg, cn, co, bn) ++ cr(eG, fa, 0, 0)) :+ cj("lock", bR, eG, cm, fg, cn, co, aI)) ++ [IntegerEntry(bA(), (cg + fj))])
800830 }
801831 }
802832 else throw("Strict value is not equal to itself.")
803833 }
804834 }
805835
806836
807837
808-@Callable(aG)
809-func claimWxBoost (cR,dl) = if ((bC != aG.caller))
838+@Callable(aI)
839+func claimWxBoost (bJ,bR) = if ((bU != aI.caller))
810840 then throw("permissions denied")
811841 else {
812- let fi = dE(cR, dl, false)
813- let ev = fi._1
814- let ew = fi._2
815- let ex = fi._3
816- $Tuple2(ew, [ev])
842+ let fl = ej(bJ, bR, false)
843+ let fm = fl._1
844+ let eB = fl._2
845+ let eC = fl._3
846+ $Tuple2(eB, [fm])
817847 }
818848
819849
820850
821-@Callable(aG)
822-func claimWxBoostREADONLY (cR,dl) = {
823- let fj = dE(cR, dl, true)
824- let ev = fj._1
825- let ew = fj._2
826- let ex = fj._3
827- $Tuple2(nil, [ev, ex])
851+@Callable(aI)
852+func claimWxBoostREADONLY (bJ,bR) = {
853+ let fn = ej(bJ, bR, true)
854+ let fm = fn._1
855+ let eB = fn._2
856+ let eC = fn._3
857+ $Tuple2(nil, [fm, eC])
828858 }
829859
830860
831861
832-@Callable(aG)
833-func unlock (aQ) = {
834- let dH = aR(aQ)
835- let dI = dH[aJ]
836- let eW = parseIntValue(dH[aK])
837- let bT = parseIntValue(dH[aL])
838- let eX = parseIntValue(dH[aM])
839- let eY = (bT + eX)
840- let ez = au()
841- let ax = fromBase58String(ez[ao])
842- if ((eY >= height))
843- then throw((("wait " + toString(eY)) + " to unlock"))
844- else if ((0 >= eW))
862+@Callable(aI)
863+func unlock (aS) = {
864+ let em = aT(aS)
865+ let en = em[aL]
866+ let fb = parseIntValue(em[aM])
867+ let cm = parseIntValue(em[aN])
868+ let fc = parseIntValue(em[aO])
869+ let fd = (cm + fc)
870+ let eE = aw()
871+ let az = fromBase58String(eE[aq])
872+ if ((fd >= height))
873+ then throw((("wait " + toString(fd)) + " to unlock"))
874+ else if ((0 >= fb))
845875 then throw("nothing to unlock")
846876 else {
847- let bl = valueOrElse(getInteger(av, am()), 0)
848- (((cq(aQ, dI, 0, bT, eX, 0, 0, toString(bl)) ++ bY(-(eW), 0, 0, -1)) :+ bQ("unlock", aQ, eW, bT, eX, 0, 0, aG)) :+ ScriptTransfer(addressFromStringValue(aQ), eW, ax))
877+ let bn = valueOrElse(getInteger(ax, ao()), 0)
878+ (((cJ(aS, en, 0, cm, fc, 0, 0, toString(bn)) ++ cr(-(fb), 0, 0, -1)) :+ cj("unlock", aS, fb, cm, fc, 0, 0, aI)) :+ ScriptTransfer(addressFromStringValue(aS), fb, az))
849879 }
850880 }
851881
852882
853883
854-@Callable(aG)
855-func gwxUserInfoREADONLY (aQ) = {
856- let ba = cG(aQ)
857- $Tuple2(nil, [ba])
884+@Callable(aI)
885+func gwxUserInfoREADONLY (aS) = {
886+ let bc = cZ(aS)
887+ $Tuple2(nil, [bc])
858888 }
859889
860890
861891
862-@Callable(aG)
863-func userMaxDurationREADONLY (dl) = {
864- let ez = au()
865- let aA = parseIntValue(ez[ar])
866- let fk = getString(this, aP(dl))
867- if ((fk == unit))
868- then $Tuple2(nil, $Tuple2("lock", aA))
892+@Callable(aI)
893+func userMaxDurationREADONLY (bR) = {
894+ let eE = aw()
895+ let aC = parseIntValue(eE[at])
896+ let el = getString(this, aR(bR))
897+ if ((el == unit))
898+ then $Tuple2(nil, $Tuple2("lock", aC))
869899 else {
870- let dH = split(value(fk), a)
871- let bT = parseIntValue(dH[aL])
872- let eX = parseIntValue(dH[aM])
873- let eY = (bT + eX)
874- let eZ = max([(eY - height), 0])
875- let fl = (aA - eZ)
876- $Tuple2(nil, $Tuple2("increaseLock", fl))
900+ let em = split(value(el), a)
901+ let cm = parseIntValue(em[aN])
902+ let fc = parseIntValue(em[aO])
903+ let fd = (cm + fc)
904+ let fe = max([(fd - height), 0])
905+ let fo = (aC - fe)
906+ $Tuple2(nil, $Tuple2("increaseLock", fo))
877907 }
878908 }
879909
880910
881911
882-@Callable(aG)
883-func getUserGwxAmountAtHeightREADONLY (aQ,cC) = {
884- let ba = cB(aQ, cC)
885- $Tuple2(nil, ba)
912+@Callable(aI)
913+func getUserGwxAmountAtHeightREADONLY (aS,cV) = {
914+ let bc = cU(aS, cV)
915+ $Tuple2(nil, bc)
886916 }
887917
888918
889919
890-@Callable(aG)
891-func getTotalCachedGwxREADONLY () = $Tuple2(nil, bH(true))
920+@Callable(aI)
921+func getTotalCachedGwxREADONLY () = $Tuple2(nil, cb(true))
892922
893923
894924
895-@Callable(aG)
896-func onStakedVoteUpdate (cR,dl,dm) = {
897- let eM = if ((aG.caller == bC))
925+@Callable(aI)
926+func onBoostEmissionUpdate () = {
927+ let eR = if ((aI.caller == bT))
898928 then true
899- else aF(aG)
900- if ((eM == eM))
929+ else aH(aI)
930+ if ((eR == eR))
931+ then dZ()
932+ else throw("Strict value is not equal to itself.")
933+ }
934+
935+
936+
937+@Callable(aI)
938+func onStakedVoteUpdate (bJ,bR,dL) = {
939+ let eR = if ((aI.caller == bU))
940+ then true
941+ else aH(aI)
942+ if ((eR == eR))
901943 then {
902- let dt = dk(cR, dl, dm)
903- $Tuple2(dt, unit)
944+ let dO = dK(bJ, bR, dL)
945+ $Tuple2(dO, unit)
904946 }
905947 else throw("Strict value is not equal to itself.")
906948 }
907949
908950
909951
910-@Callable(aG)
911-func getVotingResultStakedREADONLY (cR) = $Tuple2(nil, cW(cR))
952+@Callable(aI)
953+func getVotingResultStakedREADONLY (bJ) = $Tuple2(nil, dp(bJ))
912954
913955
914956
915-@Callable(aG)
916-func setManager (fm) = {
917- let eM = aF(aG)
918- if ((eM == eM))
957+@Callable(aI)
958+func getVotingResultStakedIntegralREADONLY (bJ) = $Tuple2(nil, dt(bJ))
959+
960+
961+
962+@Callable(aI)
963+func getUserVoteFinalizedREADONLY (bJ,bR) = $Tuple2(nil, di(bJ, bR))
964+
965+
966+
967+@Callable(aI)
968+func getUserVoteStakedIntegralREADONLY (bJ,bR) = $Tuple2(nil, dD(bJ, bR))
969+
970+
971+
972+@Callable(aI)
973+func setManager (fp) = {
974+ let eR = aH(aI)
975+ if ((eR == eR))
919976 then {
920- let fn = fromBase58String(fm)
921- if ((fn == fn))
922- then [StringEntry(ag(), fm)]
977+ let fq = fromBase58String(fp)
978+ if ((fq == fq))
979+ then [StringEntry(ag(), fp)]
923980 else throw("Strict value is not equal to itself.")
924981 }
925982 else throw("Strict value is not equal to itself.")
926983 }
927984
928985
929986
930-@Callable(aG)
987+@Callable(aI)
931988 func confirmManager () = {
932- let fo = aE()
933- let fp = if (isDefined(fo))
989+ let fr = aG()
990+ let fs = if (isDefined(fr))
934991 then true
935992 else throw("No pending manager")
936- if ((fp == fp))
993+ if ((fs == fs))
937994 then {
938- let fq = if ((aG.callerPublicKey == value(fo)))
995+ let ft = if ((aI.callerPublicKey == value(fr)))
939996 then true
940997 else throw("You are not pending manager")
941- if ((fq == fq))
942- then [StringEntry(af(), toBase58String(value(fo))), DeleteEntry(ag())]
998+ if ((ft == ft))
999+ then [StringEntry(af(), toBase58String(value(fr))), DeleteEntry(ag())]
9431000 else throw("Strict value is not equal to itself.")
9441001 }
9451002 else throw("Strict value is not equal to itself.")
9461003 }
9471004
9481005
949-@Verifier(fr)
950-func fs () = {
951- let ft = {
952- let r = aC()
1006+@Verifier(fu)
1007+func fv () = {
1008+ let fw = {
1009+ let r = aE()
9531010 if ($isInstanceOf(r, "ByteVector"))
9541011 then {
955- let aI = r
956- aI
1012+ let aK = r
1013+ aK
9571014 }
9581015 else if ($isInstanceOf(r, "Unit"))
959- then fr.senderPublicKey
1016+ then fu.senderPublicKey
9601017 else throw("Match error")
9611018 }
962- sigVerify(fr.bodyBytes, fr.proofs[0], ft)
1019+ sigVerify(fu.bodyBytes, fu.proofs[0], fw)
9631020 }
9641021

github/deemru/w8io/026f985 
265.81 ms