tx · Fxy6e2QGkatqZU7QT6sx8HAKTopY12XGXkVVoVtvm2Lm

3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz:  -0.02400000 Waves

2023.04.06 18:04 [2522859] smart account 3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz > SELF 0.00000000 Waves

{ "type": 13, "id": "Fxy6e2QGkatqZU7QT6sx8HAKTopY12XGXkVVoVtvm2Lm", "fee": 2400000, "feeAssetId": null, "timestamp": 1680793474750, "version": 2, "chainId": 84, "sender": "3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz", "senderPublicKey": "D28XoueZWsMfm8Y5pa6C5ZFuYoWgre2Wm8tzJANJgMnq", "proofs": [ "3bfEeCnhtPywUCpXTg9MbBFvFzDHPvUqTBcFijTy86xDjmq7gdR8SJuF76YRuiPTZ93zr9TWbytD8EqBFCQiMJSq" ], "script": "base64:BgLDIAgCEgMKAQgSAwoBCBIDCgEIEgASABIDCgEIEgQKAggBEgYKBAIBAgISAwoBCBIDCgEIEgUKAwgIBBIGCgQBGAgYEgQKAhgIEgQKAggIEgQKAggIEgMKAQgSAwoBCBIECgIICCIGU0NBTEU4IgVNVUxUMyIFTVVMVDgiB1NDQUxFMTgiBk1VTFQxOCIDU0VQIg5QT09MV0VJR0hUTVVMVCIKemVyb0JpZ0ludCIJb25lQmlnSW50Igd3cmFwRXJyIgNtc2ciCHRocm93RXJyIglhc0FueUxpc3QiA3ZhbCIHJG1hdGNoMCIKdmFsQW55THlzdCIFYXNJbnQiBnZhbEludCIIYXNTdHJpbmciBnZhbFN0ciIMYXNCeXRlVmVjdG9yIgZ2YWxCaW4iD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IhhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwiDGdldEludE9yWmVybyIPZ2V0SW50T3JEZWZhdWx0IgpkZWZhdWx0VmFsIgxnZXRJbnRPckZhaWwiGWdldEJpZ0ludEZyb21TdHJpbmdPclplcm8iHGdldEJpZ0ludEZyb21TdHJpbmdPckRlZmF1bHQiAXMiBXRvWDE4IgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0Igdmcm9tWDE4Ig9yZXN1bHRTY2FsZU11bHQiEWtleUZhY3RvcnlBZGRyZXNzIhlrZXlWb3RpbmdFbWlzc2lvbkNvbnRyYWN0IhhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHAiGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHAiFElkeEZhY3RvcnlDZmdJZG9EYXBwIhVJZHhGYWN0b3J5Q2ZnVGVhbURhcHAiGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHAiFUlkeEZhY3RvcnlDZmdSZXN0RGFwcCIZSWR4RmFjdG9yeUNmZ1NsaXBwYWdlRGFwcCINa2V5RmFjdG9yeUNmZyITa2V5TWFuYWdlclB1YmxpY0tleSIaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiFmtleVN0YWJsZVBvb2xBZGRvbkFkZHIiDGtleUFkZG9uQWRkciIaa2V5RmFjdG9yeUxwMkFzc2V0c01hcHBpbmciCmxwQXNzZXRTdHIiEGtleUZhY3RvcnlMcExpc3QiJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzIhRrZXlGYWN0b3J5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIgpyZWFkTHBMaXN0IgdmYWN0b3J5IhRyZWFkRmFjdG9yeUNmZ09yRmFpbCIYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsIgpmYWN0b3J5Q2ZnIhhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwiF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsIh5rZXlFbWlzc2lvblJhdGVQZXJCbG9ja0N1cnJlbnQiIWtleUVtaXNzaW9uUmF0ZVBlckJsb2NrTWF4Q3VycmVudCIVa2V5RW1pc3Npb25TdGFydEJsb2NrIhtrZXlFbWlzc2lvbkR1cmF0aW9uSW5CbG9ja3MiE2tleUVtaXNzaW9uRW5kQmxvY2siD2tleVN0YWtlZEJ5VXNlciIOdXNlckFkZHJlc3NTdHIiDGxwQXNzZXRJZFN0ciIOa2V5U3Rha2VkVG90YWwiEGtleUNsYWltZWRCeVVzZXIiGWtleUNsYWltZWRCeVVzZXJNaW5SZXdhcmQiG2tleUNsYWltZWRCeVVzZXJCb29zdFJld2FyZCIPa2V5Q2xhaW1lZFRvdGFsIgpyZWFkU3Rha2VkIhVrZXlMYXN0VG90YWxMcEJhbGFuY2UiCWxwQXNzZXRJZCIUa2V5TGFzdFVzZXJMcEJhbGFuY2UiC3VzZXJBZGRyZXNzIhlrZXlUb3RhbExwQmFsYW5jZUludGVncmFsIhhrZXlVc2VyTHBCYWxhbmNlSW50ZWdyYWwiJmtleVRvdGFsTHBCYWxhbmNlSW50ZWdyYWxMYXN0VXBkSGVpZ2h0IiVrZXlVc2VyTHBCYWxhbmNlSW50ZWdyYWxMYXN0VXBkSGVpZ2h0IhJrZXlXeFBlckxwSW50ZWdyYWwiH2tleVd4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHQiEGtleVd4VG9DbGFpbVVzZXIiI2tleVd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0IgprZXlXeFBlckxwIg1rZXlXeFBlckxwWDE4IhprZXlXeFBlckxwSW50ZWdyYWxVc2VyTGFzdCIZa2V5T3BlcmF0aW9uSGlzdG9yeVJlY29yZCIEdHlwZSIGdHhJZDU4IhNmb3JtYXRIaXN0b3J5UmVjb3JkIgZhbW91bnQiFU9wZXJhdGlvbkhpc3RvcnlFbnRyeSIEdHhJZCIOZmFjdG9yeUFkZHJlc3MiD2ZhY3RvcnlDb250cmFjdCIQZW1pc3Npb25Db250cmFjdCIQYm9vc3RpbmdDb250cmFjdCIKYm9vc3RDb2VmZiIBQCIWbHBTdGFraW5nUG9vbHNDb250cmFjdCILa2V5TmV4dFVzZXIiEGdldFVzZXJzTGlzdE5hbWUiC2tleUxpc3RIZWFkIghsaXN0TmFtZSILa2V5TGlzdFNpemUiC2tleUxpc3RQcmV2IgJpZCILa2V5TGlzdE5leHQiDGNvbnRhaW5zTm9kZSIKaGVhZE9yVW5pdCIKcHJldk9yVW5pdCIKbmV4dE9yVW5pdCIRaW5zZXJ0Tm9kZUFjdGlvbnMiCGxpc3RTaXplIgljaGVja05vZGUiEWRlbGV0ZU5vZGVBY3Rpb25zIhtjYWxjV3hQZXJMcEludGVncmFsVXNlckxhc3QiDHN0YWtlZEJ5VXNlciImd3hQZXJMcEludGVncmFsVXNlckxhc3RVcGRIZWlnaHRPclplcm8iEnd4UGVyTHBJbnRlZ3JhbE5ldyIad3hQZXJMcEludGVncmFsVXNlckxhc3RLRVkiFHJlZnJlc2hQb29sSU5URUdSQUxTIg5wb29sQWRkcmVzc1N0ciINbHBEZWx0YUFtb3VudCIOc3Rha2VkVG90YWxLRVkiC3N0YWtlZFRvdGFsIhJub25aZXJvU3Rha2VkVG90YWwiCnBvb2xXZWlnaHQiEmVtaXNzaW9uU3RhcnRCbG9jayIUd3hFbWlzc2lvblBlckJsb2NrWDMiGHBvb2xXeEVtaXNzaW9uUGVyQmxvY2tYMyISd3hQZXJMcEludGVncmFsS0VZIh93eFBlckxwSW50ZWdyYWxMYXN0VXBkSGVpZ2h0S0VZIgp3eFBlckxwS0VZIhx3eFBlckxwSW50ZWdyYWxMYXN0VXBkSGVpZ2h0Ig93eFBlckxwSW50ZWdyYWwiD3d4UGVyTHBPclplcm9YMyICZGgiCXd4UGVyTHBYMyIOc3Rha2VkVG90YWxOZXciFW5vblplcm9TdGFrZWRUb3RhbE5ldyIMd3hQZXJMcFgzTmV3Ih93eFBlckxwSW50ZWdyYWxMYXN0VXBkSGVpZ2h0TmV3IgVkZWJ1ZyIQcmVmcmVzaElOVEVHUkFMUyINJHQwMTQ4MTkxNDk0MSIRcG9vbEludGVncmFsU1RBVEUiCXBvb2xERUJVRyIPc3Rha2VkQnlVc2VyS0VZIhB3eFRvQ2xhaW1Vc2VyS0VZIiN3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodEtFWSINd3hUb0NsYWltVXNlciIXd3hQZXJMcEludGVncmFsVXNlckxhc3QiBk1VTFQxMSIQd3hUb0NsYWltVXNlck5ldyIad3hQZXJMcEludGVncmFsVXNlckxhc3ROZXciI3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0TmV3IhZtYW5hZ2VyUHVibGljS2V5T3JVbml0Ih1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCIVcGVybWlzc2lvbkRlbmllZEVycm9yIghtdXN0VGhpcyIBaSILbXVzdE1hbmFnZXIiAnBrIgxzdGFrZUFjdGlvbnMiC3Bvb2xBZGRyZXNzIhFyZWZyZXNoU3Rha2VkVm90ZSINJHQwMTgxNjAxODI3NyINaW50ZWdyYWxTVEFURSILbGlzdEFjdGlvbnMiDnVuc3Rha2VBY3Rpb25zIhdscEFzc2V0UmVjaXBpZW50QWRkcmVzcyIWY2xhaW1lZEJ5VXNlck1pblJld2FyZCIQYXZhaWxhYmxlVG9DbGFpbSIVdGhyb3dJZk5vdGhpbmdUb0NsYWltIgFyIhFmYWN0b3J5QWRkcmVzc1N0ciILY2hlY2tDYWxsZXIiFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QiBWNoZWtzIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iA3BtdCIJcG9vbEFkZG9uIgljYWxsZXJTdHIiBnJlc3VsdCIQY2xhaW1lZEJ5VXNlcktFWSIPY2xhaW1lZFRvdGFsS0VZIhljbGFpbWVkQnlVc2VyTWluUmV3YXJkS0VZIhtjbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmRLRVkiDWNsYWltZWRCeVVzZXIiGGNsYWltZWRCeVVzZXJCb29zdFJld2FyZCIMY2xhaW1lZFRvdGFsIg0kdDAyNjMxNDI2NDI2IhJ3eEFtb3VudEJvb3N0VG90YWwiDW1pblJld2FyZFBhcnQiD2Jvb3N0UmV3YXJkUGFydCILdG90YWxSZXdhcmQiCXd4QXNzZXRJZCIJZW1pdEJvb3N0IhJjbGFpbWVkQnlVc2VyVmFsdWUiHmNsYWltZWRCeVVzZXJNaW5SZXdhcmRQbHVzUGFydCIrY2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkUGx1c0Jvb3N0UmV3YXJkUGFydCIgY2xhaW1lZFRvdGFsUGx1c0F2YWlsYWJsZVRvQ2xhaW0iC2N1cnJlbnRJdGVyIgpscEFzc2V0SWRzIgZyZXNBY2MiBGluZm8iCXVuY2xhaW1lZCIHY2xhaW1lZCIRdXNlclZvdGVGaW5hbGl6ZWQiA3JlcyIDaW52IhJ3eEVtaXNzaW9uUGVyQmxvY2siDHBhc3NlZEJsb2NrcyIOcG9vbFd4RW1pc3Npb24iDHVzZXJXeFJld2FyZCINJHQwMzA0NzczMDU4OSIOYm9vc3RJbnZSZXN1bHQiCmJvb3N0RGVidWciCnVzZXJPclVuaXQiByRtYXRjaDEiBGhlYWQiDm5leHRVc2VyT3JVbml0IghuZXh0VXNlciINJHQwMzMzNzkzMzQ4OSICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5ZQABYQAIAAFiAOgHAAFjAIDC1y8AAWQAEgABZQkAtgIBAICAkLu61q3wDQABZgICX18AAWcFAWMAAWgJALYCAQAAAAFpCQC2AgEAAQEBagEBawkAuQkCCQDMCAICDXN0YWtpbmcucmlkZToJAMwIAgkApQgBBQR0aGlzCQDMCAIFAWsFA25pbAIBIAEBbAEBawkAAgEJAQFqAQUBawEBbQEBbgQBbwUBbgMJAAECBQFvAglMaXN0W0FueV0EAXAFAW8FAXAJAQFsAQIbZmFpbCB0byBjYXN0IGludG8gTGlzdFtBbnldAQFxAQFuBAFvBQFuAwkAAQIFAW8CA0ludAQBcgUBbwUBcgkBAWwBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBAXMBAW4EAW8FAW4DCQABAgUBbwIGU3RyaW5nBAF0BQFvBQF0CQEBbAECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEBdQEBbgQBbwUBbgMJAAECBQFvAgpCeXRlVmVjdG9yBAF2BQFvBQF2CQEBbAECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEBdwIBeAF5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUBeAUBeQkBAWoBCQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQF5Ag8gaXMgbm90IGRlZmluZWQBAXoCAXgBeQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAXgFAXkJAQFqAQkArAICCQCsAgIJAKwCAgkArAICAgptYW5kYXRvcnkgCQClCAEFAXgCAS4FAXkCDyBpcyBub3QgZGVmaW5lZAEBQQIBeAF5CQELdmFsdWVPckVsc2UCCQCaCAIFAXgFAXkAAAEBQgMBeAF5AUMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBeAUBeQUBQwEBRAIBeAF5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUBeAUBeQkBAWoBCQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQF5Ag8gaXMgbm90IGRlZmluZWQBAUUCAXgBeQkBBXZhbHVlAQkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFAXgFAXkCATABAUYDAXgBeQFDBAFvCQCdCAIFAXgFAXkDCQABAgUBbwIGU3RyaW5nBAFHBQFvCQEFdmFsdWUBCQCoAwEFAUcDCQABAgUBbwIEVW5pdAUBQwkAAgECC01hdGNoIGVycm9yAQFIAgFJAUoJALwCAwkAtgIBBQFJBQFlCQC2AgEFAUoBAUsCAW4BTAkAoAMBCQC8AgMFAW4JALYCAQUBTAUBZQEBTQACHCVzJXNfX2NvbmZpZ19fZmFjdG9yeUFkZHJlc3MBAU4AAholc19fdm90aW5nRW1pc3Npb25Db250cmFjdAABTwABAAFQAAIAAVEAAwABUgAEAAFTAAUAAVQABgABVQAHAQFWAAIRJXNfX2ZhY3RvcnlDb25maWcBAVcAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBWAACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBWQACFyVzX19zdGFibGVQb29sQWRkb25BZGRyAQFaAAINJXNfX2FkZG9uQWRkcgECYWEBAmFiCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFiCQDMCAICHm1hcHBpbmdzX19scEFzc2V0MlBvb2xDb250cmFjdAUDbmlsBQFmAQJhYwACECVzX19scFRva2Vuc0xpc3QBAmFkAQJhYgkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJhYgkAzAgCAh5tYXBwaW5nc19fbHBBc3NldDJQb29sQ29udHJhY3QFA25pbAUBZgECYWUBAmFmCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgpwb29sV2VpZ2h0CQDMCAIFAmFmBQNuaWwFAWYBAmFnAQJhaAkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFAmFoCQECYWMAAgAFAWYBAmFpAQJhaAkAtQkCCQEBegIFAmFoCQEBVgAFAWYBAmFqAQJhawkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhawUBUAECYWwBAmFrCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFrBQFTAQJhbQECYWsJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYWsFAU8BAmFuAAIbJXMlc19fcmF0ZVBlckJsb2NrX19jdXJyZW50AQJhbwACHiVzJXNfX3JhdGVQZXJCbG9ja01heF9fY3VycmVudAECYXAAAholcyVzX19lbWlzc2lvbl9fc3RhcnRCbG9jawECYXEAAhglcyVzX19lbWlzc2lvbl9fZHVyYXRpb24BAmFyAAIYJXMlc19fZW1pc3Npb25fX2VuZEJsb2NrAQJhcwICYXQCYXUJALkJAgkAzAgCAg4lcyVzJXNfX3N0YWtlZAkAzAgCBQJhdAkAzAgCBQJhdQUDbmlsBQFmAQJhdgECYXUJAKwCAgIXJXMlcyVzX19zdGFrZWRfX3RvdGFsX18FAmF1AQJhdwICYXUCYXQJALkJAgkAzAgCAg8lcyVzJXNfX2NsYWltZWQJAMwIAgUCYXQJAMwIAgUCYXUFA25pbAUBZgECYXgCAmF1AmF0CQC5CQIJAMwIAgIYJXMlcyVzX19jbGFpbWVkTWluUmV3YXJkCQDMCAIFAmF0CQDMCAIFAmF1BQNuaWwFAWYBAmF5AgJhdQJhdAkAuQkCCQDMCAICGiVzJXMlc19fY2xhaW1lZEJvb3N0UmV3YXJkCQDMCAIFAmF0CQDMCAIFAmF1BQNuaWwFAWYBAmF6AQJhdQkAuQkCCQDMCAICFiVzJXMlc19fY2xhaW1lZF9fdG90YWwJAMwIAgUCYXUFA25pbAUBZgECYUEBAXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBeQAAAQJhQgECYUMJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYUMJAMwIAgIFdG90YWwJAMwIAgIDYmFsBQNuaWwFAWYBAmFEAgJhQwJhRQkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJhQwkAzAgCBQJhRQkAzAgCAgNiYWwFA25pbAUBZgECYUYBAmFDCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmFDCQDMCAICBXRvdGFsCQDMCAICBmJhbElOVAUDbmlsBQFmAQJhRwICYUMCYUUJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYUMJAMwIAgUCYUUJAMwIAgIGYmFsSU5UBQNuaWwFAWYBAmFIAQJhQwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJhQwkAzAgCAgV0b3RhbAkAzAgCAgdsYXN0VXBkBQNuaWwFAWYBAmFJAgJhQwJhRQkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJhQwkAzAgCBQJhRQkAzAgCAgdsYXN0VXBkBQNuaWwFAWYBAmFKAQJhQwkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAIFAmFDCQDMCAICBmNvbW1vbgkAzAgCAgVscEludAUDbmlsBQFmAQJhSwECYUMJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQJhQwkAzAgCAgZjb21tb24JAMwIAgIGbHBJbnRIBQNuaWwFAWYBAmFMAgJhQwJhRQkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAIFAmFDCQDMCAIFAmFFCQDMCAICBWxwSW50BQNuaWwFAWYBAmFNAgJhQwJhRQkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAIFAmFDCQDMCAIFAmFFCQDMCAICBmxwSW50SAUDbmlsBQFmAQJhTgECYUMJALkJAgkAzAgCAgIlcwkAzAgCBQJhQwkAzAgCAgd3eFBlckxwBQNuaWwFAWYBAmFPAQJhQwkAuQkCCQDMCAICAiVzCQDMCAIFAmFDCQDMCAICCnd4UGVyTHBYMTgFA25pbAUBZgECYVACAmFDAmFFCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYUMJAMwIAgUCYUUJAMwIAgIFdUludEwFA25pbAUBZgECYVEDAmFSAmFFAmFTCQC5CQIJAMwIAgIRJXMlcyVzJXNfX2hpc3RvcnkJAMwIAgUCYVIJAMwIAgUCYUUJAMwIAgUCYVMFA25pbAUBZgECYVQEAmFFAmFDAmFSAmFVCQC5CQIJAMwIAgIMJXMlcyVzJWQlZCVkCQDMCAIFAmFFCQDMCAIFAmFDCQDMCAIFAmFSCQDMCAIJAKQDAQUGaGVpZ2h0CQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkApAMBBQJhVQUDbmlsBQFmAQJhVgUCYVICYUUCYUMCYVUCYVcJAQtTdHJpbmdFbnRyeQIJAQJhUQMFAmFSBQJhRQkA2AQBBQJhVwkBAmFUBAUCYUUFAmFDBQJhUgUCYVUAAmFYCQEBdwIFBHRoaXMJAQFNAAACYVkJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmFYAAJhawkBAmFpAQUCYVkAAmFaCQECYWwBBQJhawACYmEJAQJhagEFAmFrAAJiYgoAAmJjCQD8BwQFAmFaAhVnZXRCb29zdENvZWZmUkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAmJjAgNJbnQFAmJjCQACAQkArAICCQADAQUCYmMCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYmQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkAuQkCCQDMCAICAiVzCQDMCAICFmxwU3Rha2luZ1Bvb2xzQ29udHJhY3QFA25pbAUBZgkBAWoBAi5scF9zdGFraW5nX3Bvb2xzIGNvbnRyYWN0IGFkZHJlc3MgaXMgdW5kZWZpbmVkCQEBagECKWludmFsaWQgbHBfc3Rha2luZ19wb29scyBjb250cmFjdCBhZGRyZXNzAQJiZQECYUMJALkJAgkAzAgCAgQlcyVzCQDMCAIFAmFDCQDMCAICCG5leHRVc2VyBQNuaWwFAWYBAmJmAQJhQwkAuQkCCQDMCAICBXVzZXJzCQDMCAIFAmFDBQNuaWwFAWYBAmJnAQJiaAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJiaAkAzAgCAgRoZWFkBQNuaWwFAWYBAmJpAQJiaAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJiaAkAzAgCAgRzaXplBQNuaWwFAWYBAmJqAgJiaAJiawkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAIFAmJoCQDMCAIFAmJrCQDMCAICBHByZXYFA25pbAUBZgECYmwCAmJoAmJrCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYmgJAMwIAgUCYmsJAMwIAgIEbmV4dAUDbmlsBQFmAQJibQICYmgCYmsEAmJuCQCdCAIFBHRoaXMJAQJiZwEFAmJoBAJibwkAnQgCBQR0aGlzCQECYmoCBQJiaAUCYmsEAmJwCQCdCAIFBHRoaXMJAQJibAIFAmJoBQJiawMDCQAAAgUCYmsJAQt2YWx1ZU9yRWxzZQIFAmJuAgAGCQECIT0CBQJibwUEdW5pdAYJAQIhPQIFAmJwBQR1bml0AQJicQICYmgCYmsEAmJuCQCdCAIFBHRoaXMJAQJiZwEFAmJoBAJicgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYmkBBQJiaAAABAJicwMJAQEhAQkBAmJtAgUCYmgFAmJrBgkBAWwBAgtOb2RlIGV4aXN0cwMJAAACBQJicwUCYnMJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYmkBBQJiaAkAZAIFAmJyAAEFA25pbAMJAQIhPQIFAmJuBQR1bml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJibAIFAmJoBQJiawkBBXZhbHVlAQUCYm4JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJqAgUCYmgJAQV2YWx1ZQEFAmJuBQJiawUDbmlsBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJnAQUCYmgFAmJrBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmJ0AgJiaAJiawQCYm4JAJ0IAgUEdGhpcwkBAmJnAQUCYmgEAmJyCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJiaQEFAmJoAAAEAmJvCQCdCAIFBHRoaXMJAQJiagIFAmJoBQJiawQCYnAJAJ0IAgUEdGhpcwkBAmJsAgUCYmgFAmJrCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJiaQEFAmJoCQBlAgUCYnIAAQUDbmlsAwMJAQIhPQIFAmJvBQR1bml0CQECIT0CBQJicAUEdW5pdAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJsAgUCYmgJAQV2YWx1ZQEFAmJvCQEFdmFsdWUBBQJicAkAzAgCCQELU3RyaW5nRW50cnkCCQECYmoCBQJiaAkBBXZhbHVlAQUCYnAJAQV2YWx1ZQEFAmJvCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJiagIFAmJoBQJiawkAzAgCCQELRGVsZXRlRW50cnkBCQECYmwCBQJiaAUCYmsFA25pbAMJAQIhPQIFAmJwBQR1bml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiZwEFAmJoCQEFdmFsdWUBBQJicAkAzAgCCQELRGVsZXRlRW50cnkBCQECYmwCBQJiaAUCYmsJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJqAgUCYmgJAQV2YWx1ZQEFAmJwBQNuaWwDCQECIT0CBQJibwUEdW5pdAkAzAgCCQELRGVsZXRlRW50cnkBCQECYmoCBQJiaAUCYmsJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJsAgUCYmgJAQV2YWx1ZQEFAmJvBQNuaWwDCQAAAgUCYmsJAQt2YWx1ZU9yRWxzZQIFAmJuAgAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJnAQUCYmgFA25pbAkBAWwBCQCsAgIJAKwCAgkArAICAg5pbnZhbGlkIG5vZGU6IAUCYmgCAS4FAmJrAQJidQQCYnYCYncCYngCYnkDAwkAAAIFAmJ3BQFoCQC/AgIFAmJ2BQFoBwUBaAMJAAACBQJidgUBaAUCYngDAwkAvwICBQJidwUBaAkAvwICBQJidgUBaAcJAQV2YWx1ZQEJAKgDAQkBAXcCBQR0aGlzBQJieQkBAWwBAi1jYWxjV3hQZXJMcEludGVncmFsVXNlckxhc3Q6IHVuZXhwZWN0ZWQgc3RhdGUBAmJ6AwJhdQJiQQJiQgQCYkMJAQJhdgEFAmF1BAJiRAkAtgIBCQECYUEBBQJiQwQCYkUDCQAAAgUCYkQFAWgFAWkFAmJEBAJiRgkBEUBleHRyTmF0aXZlKDEwNTApAgUCYVkJAQJhZQEFAmJBBAJiRwkBAUQCBQJhWgkBAmFwAAQCYkgJAGgCCQEBRAIFAmFaCQECYW4ABQFiBAJiSQkAawMFAmJIBQJiRgkAaAIFAWcFAmJiBAJiSgkBAmFKAQUCYXUEAmJLCQECYUsBBQJhdQQCYkwJAQJhTgEFAmF1BAJiTQkBAUIDBQR0aGlzBQJiSwUCYkcEAmJOCQEBRQIFBHRoaXMFAmJKBAJiTwAABAJiUAkAlgMBCQDMCAIJAGUCBQZoZWlnaHQFAmJNCQDMCAIAAAUDbmlsBAJiUQMJAQIhPQIFAmJPAAAJALYCAQUCYk8JALwCAwkAtgIBBQJiSQkAtgIBBQFjBQJiRQQCYlIJALcCAgUCYkQJALYCAQUCYkIEAmJTAwkAAAIFAmJSBQFoBQFpBQJiUgQCYngJALcCAgUCYk4JALkCAgUCYlEJALYCAQUCYlAEAmJUCQC6AgIJALYCAQUCYkkFAmJTBAJiVQUGaGVpZ2h0BAJiVgkAuQkCCQDMCAIJAKYDAQUCYngJAMwIAgkApAMBBQJiUAkAzAgCCQCmAwEFAmJRCQDMCAIJAKYDAQUCYkQJAMwIAgkApAMBBQJiSQkAzAgCCQCkAwEFAmJICQDMCAIJAKQDAQUCYkYFA25pbAICOjoJAJUKAwUCYngJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYkoJAKYDAQUCYngJAMwIAgkBDEludGVnZXJFbnRyeQIFAmJLBQJiVQkAzAgCCQELU3RyaW5nRW50cnkCBQJiTAkApgMBBQJiVAUDbmlsBQJiVgECYlcEAmF1AmF0AmJBAmJCBAJiWAkBAmJ6AwUCYXUFAmJBBQJiQgQCYngIBQJiWAJfMQQCYlkIBQJiWAJfMgQCYloIBQJiWAJfMwQCY2EJAQJhcwIFAmF0BQJhdQQCYnYJAQJhQQEFAmNhBAJjYgkBAmFMAgUCYXUFAmF0BAJjYwkBAmFNAgUCYXUFAmF0BAJieQkBAmFQAgUCYXUFAmF0BAJjZAkBAUUCBQR0aGlzBQJjYgQCYncJAQFBAgUEdGhpcwUCY2MEAmNlCQECYnUECQC2AgEFAmJ2CQC2AgEFAmJ3BQJieAUCYnkEAmNmCQBoAgUBYwUBYgQCY2cJAJgDAQkAzAgCCQC3AgIFAmNkCQC8AgMJALgCAgUCYngFAmNlCQC2AgEFAmJ2CQC2AgEFAmNmCQDMCAIFAWgFA25pbAQCY2gFAmJ4BAJjaQUGaGVpZ2h0BAJiVgkAuQkCCQDMCAIJAKYDAQUCY2QJAMwIAgkApgMBBQJjZQkAzAgCCQCkAwEFAmJ2CQDMCAIFAmJaCQDMCAIJAKQDAQUGaGVpZ2h0BQNuaWwCAjo6CQCVCgMFAmNnCQDOCAIFAmJZCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmNiCQCmAwEFAmNnCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjYwUCY2kJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYnkJAKYDAQUCY2gFA25pbAUCYlYBAmNqAAQBbwkAoggBCQEBVwADCQABAgUBbwIGU3RyaW5nBAFHBQFvCQDZBAEFAUcDCQABAgUBbwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJjawAEAW8JAKIIAQkBAVgAAwkAAQIFAW8CBlN0cmluZwQBRwUBbwkA2QQBBQFHAwkAAQIFAW8CBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACY2wJAQFsAQIRUGVybWlzc2lvbiBkZW5pZWQBAmNtAQJjbgMJAAACCAUCY24GY2FsbGVyBQR0aGlzBgUCY2wBAmNvAQJjbgQBbwkBAmNqAAMJAAECBQFvAgpCeXRlVmVjdG9yBAJjcAUBbwMJAAACCAUCY24PY2FsbGVyUHVibGljS2V5BQJjcAYFAmNsAwkAAQIFAW8CBFVuaXQDCQAAAggFAmNuBmNhbGxlcgUEdGhpcwYFAmNsCQACAQILTWF0Y2ggZXJyb3IBAmNxBQJjbgJhQwJjcgJhRQJhVQQCYXQJAKUIAQUCYUUEAmF1CQDYBAEFAmFDBAJiQQkApQgBBQJjcgQCY2EJAQJhcwIFAmF0BQJhdQQCYkMJAQJhdgEFAmF1BAJidgkBAmFBAQUCY2EEAmNzAwkAAAIFAmJ2AAAJAPwHBAUCYmECEm9uU3Rha2VkVm90ZVVwZGF0ZQkAzAgCBQJhdQkAzAgCBQJhdAkAzAgCBgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCY3MFAmNzBAJiRAkBAmFBAQUCYkMEAmN0CQECYlcEBQJhdQUCYXQFAmJBBQJhVQQCY2cIBQJjdAJfMQQCY3UIBQJjdAJfMgQCYlYIBQJjdAJfMwQCYmgJAQJiZgEFAmF1BAJjdgMJAQJibQIFAmJoBQJhdAUDbmlsCQECYnECBQJiaAUCYXQJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjYQkAZAIFAmJ2BQJhVQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYkMJAGQCBQJiRAUCYVUJAMwIAgkBAmFWBQIFc3Rha2UFAmF0BQJhdQUCYVUIBQJjbg10cmFuc2FjdGlvbklkBQNuaWwFAmN1BQJjdgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECY3cGAmNuAmFDAmNyAmFFAmN4AmFVBAJhdAkApQgBBQJhRQQCYXUJANgEAQUCYUMEAmJBCQClCAEFAmNyBAJjYQkBAmFzAgUCYXQFAmF1BAJiQwkBAmF2AQUCYXUEAmJ2CQECYUEBBQJjYQQCYkQJAQJhQQEFAmJDBAJjdQgJAQJiVwQFAmF1BQJhdAUCYkEJAQEtAQUCYVUCXzIEAmJoCQECYmYBBQJhdQQCY3YDAwkBAmJtAgUCYmgFAmF0CQAAAgUCYVUFAmJ2BwkBAmJ0AgUCYmgFAmF0BQNuaWwEAmNzAwkAAAIFAmFVBQJidgkA/AcEBQJiYQISb25TdGFrZWRWb3RlVXBkYXRlCQDMCAIFAmF1CQDMCAIFAmF0CQDMCAIHBQNuaWwFA25pbAUEdW5pdAMJAAACBQJjcwUCY3MEAmN5CQEBRQIFBHRoaXMJAQJheAIFAmF1BQJhdAQCY2cICQECYlcEBQJhdQUCYXQFAmJBAAACXzEEAmN6CQC4AgIFAmNnBQJjeQQCY0EGBAJjQgMJAL8CAgUCY3oFAWgJAPwHBAUEdGhpcwIPY2xhaW1XeElOVEVSTkFMCQDMCAIFAmF1CQDMCAIFAmF0CQDMCAIFAmNBBQNuaWwFA25pbAUEdW5pdAMJAAACBQJjQgUCY0IDCQBmAgUCYVUFAmJ2CQEBbAEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIOcGFzc2VkIGFtb3VudD0JAKQDAQUCYVUCGyBpcyBncmVhdGVyIHRoYW4gYXZhaWxhYmxlPQkApAMBBQJidgIMLiBscEFzc2V0SWQ9BQJhdQISLiBzdGFrZWRCeVVzZXJLRVk9BQJjYQkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNhCQBlAgUCYnYFAmFVCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJiQwkAZQIFAmJEBQJhVQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjeAUCYVUFAmFDCQDMCAIJAQJhVgUCB3Vuc3Rha2UFAmF0BQJhdQUCYVUIBQJjbg10cmFuc2FjdGlvbklkBQNuaWwFAmN1BQJjdgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLhICY24BC2NvbnN0cnVjdG9yAQJjQwQCY0QJAQJjbwEFAmNuAwkAAAIFAmNEBQJjRAkAzAgCCQELU3RyaW5nRW50cnkCCQEBTQAFAmNDBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY24BDWNvbnN0cnVjdG9yVjIBAmNFBAJjRgkAzAgCCQECY28BBQJjbgkAzAgCAwkBAiE9AgkApggBBQJjRQUEdW5pdAYCKGludmFsaWQgdm90aW5nIGVtaXNzaW9uIGNvbnRyYWN0IGFkZHJlc3MFA25pbAMJAAACBQJjRgUCY0YJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAU4ABQJjRQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNuAQpzZXRNYW5hZ2VyAQJjRwQCY0QJAQJjbwEFAmNuAwkAAAIFAmNEBQJjRAQCY0gJANkEAQUCY0cDCQAAAgUCY0gFAmNICQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFYAAUCY0cFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjbgEOY29uZmlybU1hbmFnZXIABAJjSQkBAmNrAAQCY0oDCQEJaXNEZWZpbmVkAQUCY0kGCQEBbAECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJjSgUCY0oEAmNLAwkAAAIIBQJjbg9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmNJBgkBAWwBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCY0sFAmNLCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAAkA2AQBCQEFdmFsdWUBBQJjSQkAzAgCCQELRGVsZXRlRW50cnkBCQEBWAAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjbgEFc3Rha2UAAwkBAiE9AgkAkAMBCAUCY24IcGF5bWVudHMAAQkBAWwBAjRpbnZhbGlkIHBheW1lbnQgLSBleGFjdCBvbmUgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBAJjTAkAkQMCCAUCY24IcGF5bWVudHMAAAQCYUMJAQV2YWx1ZQEIBQJjTAdhc3NldElkBAJhdQkA2AQBBQJhQwQCYVUIBQJjTAZhbW91bnQEAmJBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYVkJAQJhYQEFAmF1CQEBagEJAKwCAgIVdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJhdQQCY3IJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmJBBAJhRQMJAAACCAUCY24GY2FsbGVyBQJjcggFAmNuDG9yaWdpbkNhbGxlcggFAmNuBmNhbGxlcgkBAmNxBQUCY24FAmFDBQJjcgUCYUUFAmFVAmNuAQhzdGFrZUZvcgECYXQDCQECIT0CCQCQAwEIBQJjbghwYXltZW50cwABCQEBbAECNGludmFsaWQgcGF5bWVudCAtIGV4YWN0IG9uZSBwYXltZW50IG11c3QgYmUgYXR0YWNoZWQEAmNMCQCRAwIIBQJjbghwYXltZW50cwAABAJhQwkBBXZhbHVlAQgFAmNMB2Fzc2V0SWQEAmF1CQDYBAEFAmFDBAJhVQgFAmNMBmFtb3VudAQCYkEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhWQkBAmFhAQUCYXUJAQFqAQkArAICAhV1bnN1cHBvcnRlZCBscCBhc3NldCAFAmF1BAJjcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYkEEAmFFCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUCYXQJAQFqAQIUaW52YWxpZCB1c2VyIGFkZHJlc3MJAQJjcQUFAmNuBQJhQwUCY3IFAmFFBQJhVQJjbgEHdW5zdGFrZQICYXUCYVUEAmFDCQDZBAEFAmF1BAJiQQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFZCQECYWEBBQJhdQkBAWoBCQCsAgICFXVuc3VwcG9ydGVkIGxwIGFzc2V0IAUCYXUEAmNyCQERQGV4dHJOYXRpdmUoMTA2MikBBQJiQQQCY00JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUCY3IJAQFaAAUCYkEEAmNOCQClCAEIBQJjbgZjYWxsZXIEAmFFAwMJAAACBQJjTgUCYkEGCQAAAgUCY04FAmNNCAUCY24Mb3JpZ2luQ2FsbGVyCAUCY24GY2FsbGVyBAJjeAgFAmNuBmNhbGxlcgkBAmN3BgUCY24FAmFDBQJjcgUCYUUFAmN4BQJhVQJjbgEPdW5zdGFrZUlOVEVSTkFMBAJhQwJhVQJhRQJjeAQCYXUJANgEAQUCYUMEAmNyCQERQGV4dHJOYXRpdmUoMTA2MikBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYVkJAQJhYQEFAmF1CQEBagEJAKwCAgIVdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJhdQQCY0QDCQAAAggFAmNuBmNhbGxlcgUCY3IGBQJjbAMJAAACBQJjRAUCY0QJAQJjdwYFAmNuBQJhQwUCY3IJAQdBZGRyZXNzAQUCYUUJAQdBZGRyZXNzAQUCY3gFAmFVCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNuAQdjbGFpbVd4AQJhdQQCYXQJAKUIAQgFAmNuBmNhbGxlcgQCY0EGBAJjTwkA/AcEBQR0aGlzAg9jbGFpbVd4SU5URVJOQUwJAMwIAgUCYXUJAMwIAgUCYXQJAMwIAgUCY0EFA25pbAUDbmlsCQCUCgIFA25pbAUCY08CY24BEWNsYWltV3hEb05vdFRocm93AQJhdQQCYXQJAKUIAQgFAmNuBmNhbGxlcgQCY0EHBAJjTwkA/AcEBQR0aGlzAg9jbGFpbVd4SU5URVJOQUwJAMwIAgUCYXUJAMwIAgUCYXQJAMwIAgUCY0EFA25pbAUDbmlsCQCUCgIFA25pbAUCY08CY24BD2NsYWltV3hJTlRFUk5BTAMCYXUCYXQCY0EEAmNECQECY20BBQJjbgMJAAACBQJjRAUCY0QEAmFFCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUCYXQJAQFqAQIlY2xhaW1XeElOVEVSTkFMOiBpbnZhbGlkIHVzZXIgYWRkcmVzcwQCYkEJAQF6AgUCYVkJAQJhZAEFAmF1BAJjUAkBAmF3AgUCYXUFAmF0BAJjUQkBAmF6AQUCYXUEAmNSCQECYXgCBQJhdQUCYXQEAmNTCQECYXkCBQJhdQUCYXQEAmNUCQEBRQIFBHRoaXMFAmNQBAJjeQkBAUUCBQR0aGlzBQJjUgQCY1UJAQFFAgUEdGhpcwUCY1MEAmNWCQEBRQIFBHRoaXMFAmNRBAJjVwkBAmJXBAUCYXUFAmF0BQJiQQAABAJjZwgFAmNXAl8xBAJjdQgFAmNXAl8yBAJiVggFAmNXAl8zBAJjegkAmAMBCQDMCAIJALgCAgUCY2cFAmN5CQDMCAIFAWgFA25pbAMJAMACAgUBaAUCY3oDBQJjQQkBAWwBAhBub3RoaW5nIHRvIGNsYWltCQCUCgIFA25pbAAABAJjWAkAlgMBCQDMCAIJAQFxAQkAkQMCCQEBbQEJAPwHBAUCYmECDGNsYWltV3hCb29zdAkAzAgCBQJhdQkAzAgCBQJhdAUDbmlsBQNuaWwAAAkAzAgCAAAFA25pbAQCY1kFAmN6BAJjWgkAmQMBCQDMCAIJALkCAgUCY1kJALYCAQkAZQIFAmJiAAEJAMwIAgkAtgIBBQJjWAUDbmlsBAJkYQkAtwICBQJjWQUCY1oEAmRiCQEBdQEJAJEDAgkBAW0BCQD8BwQFAmFaAgRlbWl0CQDMCAIJAKADAQUCY1kFA25pbAUDbmlsAAAEAmRjCQEBbQEJAPwHBAUCYVoCBGVtaXQJAMwIAgkAoAMBBQJjWgUDbmlsBQNuaWwDCQAAAgUCZGMFAmRjBAJkZAkAtwICCQC3AgIFAmNUBQJjWQUCY1oEAmRlCQC3AgIFAmN5BQJjWQQCZGYJALcCAgUCY1UFAmNaBAJkZwkAtwICBQJjVgUCY3oJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQJjUAkApgMBBQJkZAkAzAgCCQELU3RyaW5nRW50cnkCBQJjUgkApgMBBQJkZQkAzAgCCQELU3RyaW5nRW50cnkCBQJjUwkApgMBBQJkZgkAzAgCCQELU3RyaW5nRW50cnkCBQJjUQkApgMBBQJkZwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhRQkAoAMBBQJjWQUCZGIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUUJAKADAQUCY1oFAmRiCQDMCAIJAQJhVgUCBWNsYWltBQJhdAUCYXUJAKADAQUCY3oIBQJjbg10cmFuc2FjdGlvbklkBQNuaWwJAKADAQUCZGEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY24BG2NsYWltV3hCdWxrSW50ZXJuYWxSRUFET05MWQQCZGgCZGkCYXQCZGoDCQAAAgUCZGgJAJADAQUCZGkJAJQKAgUDbmlsBQJkagQCYUMJAJEDAgUCZGkFAmRoBAJkawkAtQkCCgACYmMJAPwHBAUEdGhpcwIPY2xhaW1XeFJFQURPTkxZCQDMCAIFAmFDCQDMCAIFAmF0BQNuaWwFA25pbAMJAAECBQJiYwIGU3RyaW5nBQJiYwkAAgEJAKwCAgkAAwEFAmJjAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcFAWYEAmRsCQCRAwIFAmRrAAMEAmRtCQCRAwIFAmRrAAQEAmRuCgACYmMJAPwHBAUCYmECHGdldFVzZXJWb3RlRmluYWxpemVkUkVBRE9OTFkJAMwIAgUCYUMJAMwIAgUCYXQFA25pbAUDbmlsAwkAAQIFAmJjAgNJbnQFAmJjCQACAQkArAICCQADAQUCYmMCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQCZG8JAM0IAgUCZGoJALkJAgkAzAgCAgYlZCVkJWQJAMwIAgUCZGwJAMwIAgUCZG0JAMwIAgkApAMBBQJkbgUDbmlsBQFmBAJkcAoAAmJjCQD8BwQFBHRoaXMCG2NsYWltV3hCdWxrSW50ZXJuYWxSRUFET05MWQkAzAgCCQBkAgUCZGgAAQkAzAgCBQJkaQkAzAgCBQJhdAkAzAgCBQJkbwUDbmlsBQNuaWwDCQABAgUCYmMCCUxpc3RbQW55XQUCYmMJAAIBCQCsAgIJAAMBBQJiYwIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAwkAAAIFAmRwBQJkcAkAlAoCBQNuaWwFAmRwCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNuARNjbGFpbVd4QnVsa1JFQURPTkxZAgJkaQJhdAQCZG8JAPwHBAUEdGhpcwIbY2xhaW1XeEJ1bGtJbnRlcm5hbFJFQURPTkxZCQDMCAIAAAkAzAgCBQJkaQkAzAgCBQJhdAkAzAgCBQNuaWwFA25pbAUDbmlsCQCUCgIFA25pbAUCZG8CY24BD2NsYWltV3hSRUFET05MWQICYXUCYXQEAmNhCQECYXMCBQJhdAUCYXUEAmJDCQECYXYBBQJhdQQCY1AJAQJhdwIFAmF1BQJhdAQCY1IJAQJheAIFAmF1BQJhdAQCYnYJAQJhQQEFAmNhBAJiRAkBAmFBAQUCYkMEAmNUCQEBRQIFBHRoaXMFAmNQBAJjeQkBAUUCBQR0aGlzBQJjUgQCYkEJAQF6AgUCYVkJAQJhZAEFAmF1BAJiRgkBEUBleHRyTmF0aXZlKDEwNTApAgUCYVkJAQJhZQEFAmJBBAJkcQkBAUQCBQJhWgkBAmFuAAQCYkcJAQFEAgUCYVoJAQJhcAAEAmRyAwkAZgIFAmJHBQZoZWlnaHQAAAkAZQIFBmhlaWdodAUCYkcEAmRzCQBrAwkAaAIFAmRxBQJkcgUCYkYFAWcEAmR0CQBrAwUCZHMFAmJ2BQJiRAQCZHUJAQJiVwQFAmF1BQJhdAUCYkEAAAQCY2cIBQJkdQJfMQQCY3UIBQJkdQJfMgQCYlYIBQJkdQJfMwQCY3oJAJgDAQkAzAgCCQC4AgIFAmNnBQJjeQkAzAgCBQFoBQNuaWwEAmR2CQEBbQEJAPwHBAUCYmECFGNsYWltV3hCb29zdFJFQURPTkxZCQDMCAIFAmF1CQDMCAIFAmF0BQNuaWwFA25pbAQCY1gJAJYDAQkAzAgCCQEBcQEJAJEDAgUCZHYAAAkAzAgCAAAFA25pbAQCZHcJAQFzAQkAkQMCBQJkdgABBAJjWQUCY3oEAmNaCQCZAwEJAMwIAgkAuQICBQJjWQkAtgIBCQBlAgUCYmIAAQkAzAgCCQC2AgEFAmNYBQNuaWwEAmRhCQC3AgIFAmNZBQJjWgkAlAoCBQNuaWwJALkJAgkAzAgCAg4lcyVzJWQlZCVkJWQlcwkAzAgCBQJhdQkAzAgCBQJhdAkAzAgCCQCmAwEFAmRhCQDMCAIJAKYDAQUCY1QJAMwIAgkApgMBBQJjWQkAzAgCCQCmAwEFAmNaCQDMCAICBHNvb24FA25pbAUBZgJjbgEUc3Rha2VkQnlVc2VyUkVBRE9OTFkCAmF1AmF0BAJidgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYXMCBQJhdAUCYXUAAAkAlAoCBQNuaWwFAmJ2AmNuARNzdGFrZWRUb3RhbFJFQURPTkxZAQJhdQQCYkQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAmF2AQUCYXUAAAkAlAoCBQNuaWwFAmJEAmNuARJ1c2Vyc0xpc3RUcmF2ZXJzYWwBAmFDBAJjRAMJAAACCQDYBAEICAUCY24GY2FsbGVyBWJ5dGVzCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJAQFOAAIABgkBAmNvAQUCY24DCQAAAgUCY0QFAmNEBAJiaAkBAmJmAQUCYUMEAmR4CQCiCAEJAQJiZQEFAmFDBAJibgkAoggBCQECYmcBBQJiaAQBbwUCZHgDCQABAgUBbwIEVW5pdAQCZHkFAmJuAwkAAQIFAmR5AgRVbml0CQCUCgIFA25pbAcDCQABAgUCZHkCBlN0cmluZwQCZHoFAmR5CQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJlAQUCYUMFAmR6BQNuaWwGCQACAQILTWF0Y2ggZXJyb3IDCQABAgUBbwIGU3RyaW5nBAJhRQUBbwQCY3kJAQFFAgUEdGhpcwkBAmF4AgUCYUMFAmFFBAJjcgkBAXoCBQJhWQkBAmFkAQUCYUMEAmNnCAkBAmJXBAUCYUMFAmFFBQJjcgAAAl8xBAJjegkAuAICBQJjZwUCY3kEAmNBBgQCY0IDCQC/AgIFAmN6BQFoCQD8BwQFBHRoaXMCD2NsYWltV3hJTlRFUk5BTAkAzAgCBQJhQwkAzAgCBQJhRQkAzAgCBQJjQQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCY0IFAmNCBAJkQQkAoggBCQECYmwCBQJiaAUCYUUEAmR5BQJkQQMJAAECBQJkeQIEVW5pdAkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJiZQEFAmFDBQNuaWwHAwkAAQIFAmR5AgZTdHJpbmcEAmRCBQJkeQkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiZQEFAmFDBQJkQgUDbmlsBgkAAgECC01hdGNoIGVycm9yCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQILTWF0Y2ggZXJyb3IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY24BDm9uTW9kaWZ5V2VpZ2h0AgJhdQJiQQMJAQIhPQIIBQJjbgZjYWxsZXIFAmFZCQEBbAECEnBlcm1pc3Npb25zIGRlbmllZAQCZEMJAQJiegMFAmF1BQJiQQAABAJieAgFAmRDAl8xBAJiWQgFAmRDAl8yBAJiWggFAmRDAl8zBQJiWQECZEQBAmRFAAQCZEYEAW8JAQJjagADCQABAgUBbwIKQnl0ZVZlY3RvcgQCY3AFAW8FAmNwAwkAAQIFAW8CBFVuaXQIBQJkRA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgkA9AMDCAUCZEQJYm9keUJ5dGVzCQCRAwIIBQJkRAZwcm9vZnMAAAUCZEYbPTGm", "height": 2522859, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: EbsRBQWZa8sJRpSdEuAtvhhzAdcEMshah6YSyeDUYVwo Next: Djz7ee27LvVChWjoBCadUpWCKSCUBWaybYSjtGtfcEVH Diff:
OldNewDifferences
790790
791791
792792 @Callable(cn)
793+func stakedTotalREADONLY (au) = {
794+ let bD = valueOrElse(getInteger(av(au)), 0)
795+ $Tuple2(nil, bD)
796+ }
797+
798+
799+
800+@Callable(cn)
793801 func usersListTraversal (aC) = {
794802 let cD = if ((toBase58String(cn.caller.bytes) == valueOrElse(getString(this, N()), "")))
795803 then true
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 1000
77
88 let c = 100000000
99
1010 let d = 18
1111
1212 let e = toBigInt(1000000000000000000)
1313
1414 let f = "__"
1515
1616 let g = c
1717
1818 let h = toBigInt(0)
1919
2020 let i = toBigInt(1)
2121
2222 func j (k) = makeString(["staking.ride:", toString(this), k], " ")
2323
2424
2525 func l (k) = throw(j(k))
2626
2727
2828 func m (n) = {
2929 let o = n
3030 if ($isInstanceOf(o, "List[Any]"))
3131 then {
3232 let p = o
3333 p
3434 }
3535 else l("fail to cast into List[Any]")
3636 }
3737
3838
3939 func q (n) = {
4040 let o = n
4141 if ($isInstanceOf(o, "Int"))
4242 then {
4343 let r = o
4444 r
4545 }
4646 else l("fail to cast into Int")
4747 }
4848
4949
5050 func s (n) = {
5151 let o = n
5252 if ($isInstanceOf(o, "String"))
5353 then {
5454 let t = o
5555 t
5656 }
5757 else l("fail to cast into Int")
5858 }
5959
6060
6161 func u (n) = {
6262 let o = n
6363 if ($isInstanceOf(o, "ByteVector"))
6464 then {
6565 let v = o
6666 v
6767 }
6868 else l("fail to cast into Int")
6969 }
7070
7171
7272 func w (x,y) = valueOrErrorMessage(getString(x, y), j((("mandatory this." + y) + " is not defined")))
7373
7474
7575 func z (x,y) = valueOrErrorMessage(getString(x, y), j((((("mandatory " + toString(x)) + ".") + y) + " is not defined")))
7676
7777
7878 func A (x,y) = valueOrElse(getInteger(x, y), 0)
7979
8080
8181 func B (x,y,C) = valueOrElse(getInteger(x, y), C)
8282
8383
8484 func D (x,y) = valueOrErrorMessage(getInteger(x, y), j((("mandatory this." + y) + " is not defined")))
8585
8686
8787 func E (x,y) = value(parseBigInt(valueOrElse(getString(x, y), "0")))
8888
8989
9090 func F (x,y,C) = {
9191 let o = getString(x, y)
9292 if ($isInstanceOf(o, "String"))
9393 then {
9494 let G = o
9595 value(parseBigInt(G))
9696 }
9797 else if ($isInstanceOf(o, "Unit"))
9898 then C
9999 else throw("Match error")
100100 }
101101
102102
103103 func H (I,J) = fraction(toBigInt(I), e, toBigInt(J))
104104
105105
106106 func K (n,L) = toInt(fraction(n, toBigInt(L), e))
107107
108108
109109 func M () = "%s%s__config__factoryAddress"
110110
111111
112112 func N () = "%s__votingEmissionContract"
113113
114114
115115 let O = 1
116116
117117 let P = 2
118118
119119 let Q = 3
120120
121121 let R = 4
122122
123123 let S = 5
124124
125125 let T = 6
126126
127127 let U = 7
128128
129129 func V () = "%s__factoryConfig"
130130
131131
132132 func W () = "%s__managerPublicKey"
133133
134134
135135 func X () = "%s__pendingManagerPublicKey"
136136
137137
138138 func Y () = "%s__stablePoolAddonAddr"
139139
140140
141141 func Z () = "%s__addonAddr"
142142
143143
144144 func aa (ab) = makeString(["%s%s%s", ab, "mappings__lpAsset2PoolContract"], f)
145145
146146
147147 func ac () = "%s__lpTokensList"
148148
149149
150150 func ad (ab) = makeString(["%s%s%s", ab, "mappings__lpAsset2PoolContract"], f)
151151
152152
153153 func ae (af) = makeString(["%s%s", "poolWeight", af], f)
154154
155155
156156 func ag (ah) = split(valueOrElse(getString(ah, ac()), ""), f)
157157
158158
159159 func ai (ah) = split(z(ah, V()), f)
160160
161161
162162 func aj (ak) = addressFromStringValue(ak[P])
163163
164164
165165 func al (ak) = addressFromStringValue(ak[S])
166166
167167
168168 func am (ak) = addressFromStringValue(ak[O])
169169
170170
171171 func an () = "%s%s__ratePerBlock__current"
172172
173173
174174 func ao () = "%s%s__ratePerBlockMax__current"
175175
176176
177177 func ap () = "%s%s__emission__startBlock"
178178
179179
180180 func aq () = "%s%s__emission__duration"
181181
182182
183183 func ar () = "%s%s__emission__endBlock"
184184
185185
186186 func as (at,au) = makeString(["%s%s%s__staked", at, au], f)
187187
188188
189189 func av (au) = ("%s%s%s__staked__total__" + au)
190190
191191
192192 func aw (au,at) = makeString(["%s%s%s__claimed", at, au], f)
193193
194194
195195 func ax (au,at) = makeString(["%s%s%s__claimedMinReward", at, au], f)
196196
197197
198198 func ay (au,at) = makeString(["%s%s%s__claimedBoostReward", at, au], f)
199199
200200
201201 func az (au) = makeString(["%s%s%s__claimed__total", au], f)
202202
203203
204204 func aA (y) = valueOrElse(getInteger(this, y), 0)
205205
206206
207207 func aB (aC) = makeString(["%s%s%s", aC, "total", "bal"], f)
208208
209209
210210 func aD (aC,aE) = makeString(["%s%s%s", aC, aE, "bal"], f)
211211
212212
213213 func aF (aC) = makeString(["%s%s%s", aC, "total", "balINT"], f)
214214
215215
216216 func aG (aC,aE) = makeString(["%s%s%s", aC, aE, "balINT"], f)
217217
218218
219219 func aH (aC) = makeString(["%s%s%s", aC, "total", "lastUpd"], f)
220220
221221
222222 func aI (aC,aE) = makeString(["%s%s%s", aC, aE, "lastUpd"], f)
223223
224224
225225 func aJ (aC) = makeString(["%s%s%s%s", aC, "common", "lpInt"], f)
226226
227227
228228 func aK (aC) = makeString(["%s%s%s%s", aC, "common", "lpIntH"], f)
229229
230230
231231 func aL (aC,aE) = makeString(["%s%s%s%s", aC, aE, "lpInt"], f)
232232
233233
234234 func aM (aC,aE) = makeString(["%s%s%s%s", aC, aE, "lpIntH"], f)
235235
236236
237237 func aN (aC) = makeString(["%s", aC, "wxPerLp"], f)
238238
239239
240240 func aO (aC) = makeString(["%s", aC, "wxPerLpX18"], f)
241241
242242
243243 func aP (aC,aE) = makeString(["%s%s%s%s", aC, aE, "uIntL"], f)
244244
245245
246246 func aQ (aR,aE,aS) = makeString(["%s%s%s%s__history", aR, aE, aS], f)
247247
248248
249249 func aT (aE,aC,aR,aU) = makeString(["%s%s%s%d%d%d", aE, aC, aR, toString(height), toString(lastBlock.timestamp), toString(aU)], f)
250250
251251
252252 func aV (aR,aE,aC,aU,aW) = StringEntry(aQ(aR, aE, toBase58String(aW)), aT(aE, aC, aR, aU))
253253
254254
255255 let aX = w(this, M())
256256
257257 let aY = addressFromStringValue(aX)
258258
259259 let ak = ai(aY)
260260
261261 let aZ = al(ak)
262262
263263 let ba = aj(ak)
264264
265265 let bb = {
266266 let bc = invoke(aZ, "getBoostCoeffREADONLY", nil, nil)
267267 if ($isInstanceOf(bc, "Int"))
268268 then bc
269269 else throw(($getType(bc) + " couldn't be cast to Int"))
270270 }
271271
272272 let bd = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], f)), j("lp_staking_pools contract address is undefined"))), j("invalid lp_staking_pools contract address"))
273273
274274 func be (aC) = makeString(["%s%s", aC, "nextUser"], f)
275275
276276
277277 func bf (aC) = makeString(["users", aC], f)
278278
279279
280280 func bg (bh) = makeString(["%s%s%s", bh, "head"], f)
281281
282282
283283 func bi (bh) = makeString(["%s%s%s", bh, "size"], f)
284284
285285
286286 func bj (bh,bk) = makeString(["%s%s%s%s", bh, bk, "prev"], f)
287287
288288
289289 func bl (bh,bk) = makeString(["%s%s%s%s", bh, bk, "next"], f)
290290
291291
292292 func bm (bh,bk) = {
293293 let bn = getString(this, bg(bh))
294294 let bo = getString(this, bj(bh, bk))
295295 let bp = getString(this, bl(bh, bk))
296296 if (if ((bk == valueOrElse(bn, "")))
297297 then true
298298 else (bo != unit))
299299 then true
300300 else (bp != unit)
301301 }
302302
303303
304304 func bq (bh,bk) = {
305305 let bn = getString(this, bg(bh))
306306 let br = valueOrElse(getInteger(this, bi(bh)), 0)
307307 let bs = if (!(bm(bh, bk)))
308308 then true
309309 else l("Node exists")
310310 if ((bs == bs))
311311 then (([IntegerEntry(bi(bh), (br + 1))] ++ (if ((bn != unit))
312312 then [StringEntry(bl(bh, bk), value(bn)), StringEntry(bj(bh, value(bn)), bk)]
313313 else nil)) ++ [StringEntry(bg(bh), bk)])
314314 else throw("Strict value is not equal to itself.")
315315 }
316316
317317
318318 func bt (bh,bk) = {
319319 let bn = getString(this, bg(bh))
320320 let br = valueOrElse(getInteger(this, bi(bh)), 0)
321321 let bo = getString(this, bj(bh, bk))
322322 let bp = getString(this, bl(bh, bk))
323323 ([IntegerEntry(bi(bh), (br - 1))] ++ (if (if ((bo != unit))
324324 then (bp != unit)
325325 else false)
326326 then [StringEntry(bl(bh, value(bo)), value(bp)), StringEntry(bj(bh, value(bp)), value(bo)), DeleteEntry(bj(bh, bk)), DeleteEntry(bl(bh, bk))]
327327 else if ((bp != unit))
328328 then [StringEntry(bg(bh), value(bp)), DeleteEntry(bl(bh, bk)), DeleteEntry(bj(bh, value(bp)))]
329329 else if ((bo != unit))
330330 then [DeleteEntry(bj(bh, bk)), DeleteEntry(bl(bh, value(bo)))]
331331 else if ((bk == valueOrElse(bn, "")))
332332 then [DeleteEntry(bg(bh))]
333333 else l(((("invalid node: " + bh) + ".") + bk))))
334334 }
335335
336336
337337 func bu (bv,bw,bx,by) = if (if ((bw == h))
338338 then (bv > h)
339339 else false)
340340 then h
341341 else if ((bv == h))
342342 then bx
343343 else if (if ((bw > h))
344344 then (bv > h)
345345 else false)
346346 then value(parseBigInt(w(this, by)))
347347 else l("calcWxPerLpIntegralUserLast: unexpected state")
348348
349349
350350 func bz (au,bA,bB) = {
351351 let bC = av(au)
352352 let bD = toBigInt(aA(bC))
353353 let bE = if ((bD == h))
354354 then i
355355 else bD
356356 let bF = getIntegerValue(aY, ae(bA))
357357 let bG = D(aZ, ap())
358358 let bH = (D(aZ, an()) * b)
359359 let bI = fraction(bH, bF, (g * bb))
360360 let bJ = aJ(au)
361361 let bK = aK(au)
362362 let bL = aN(au)
363363 let bM = B(this, bK, bG)
364364 let bN = E(this, bJ)
365365 let bO = 0
366366 let bP = max([(height - bM), 0])
367367 let bQ = if ((bO != 0))
368368 then toBigInt(bO)
369369 else fraction(toBigInt(bI), toBigInt(c), bE)
370370 let bR = (bD + toBigInt(bB))
371371 let bS = if ((bR == h))
372372 then i
373373 else bR
374374 let bx = (bN + (bQ * toBigInt(bP)))
375375 let bT = (toBigInt(bI) / bS)
376376 let bU = height
377377 let bV = makeString([toString(bx), toString(bP), toString(bQ), toString(bD), toString(bI), toString(bH), toString(bF)], "::")
378378 $Tuple3(bx, [StringEntry(bJ, toString(bx)), IntegerEntry(bK, bU), StringEntry(bL, toString(bT))], bV)
379379 }
380380
381381
382382 func bW (au,at,bA,bB) = {
383383 let bX = bz(au, bA, bB)
384384 let bx = bX._1
385385 let bY = bX._2
386386 let bZ = bX._3
387387 let ca = as(at, au)
388388 let bv = aA(ca)
389389 let cb = aL(au, at)
390390 let cc = aM(au, at)
391391 let by = aP(au, at)
392392 let cd = E(this, cb)
393393 let bw = A(this, cc)
394394 let ce = bu(toBigInt(bv), toBigInt(bw), bx, by)
395395 let cf = (c * b)
396396 let cg = max([(cd + fraction((bx - ce), toBigInt(bv), toBigInt(cf))), h])
397397 let ch = bx
398398 let ci = height
399399 let bV = makeString([toString(cd), toString(ce), toString(bv), bZ, toString(height)], "::")
400400 $Tuple3(cg, (bY ++ [StringEntry(cb, toString(cg)), IntegerEntry(cc, ci), StringEntry(by, toString(ch))]), bV)
401401 }
402402
403403
404404 func cj () = {
405405 let o = getString(W())
406406 if ($isInstanceOf(o, "String"))
407407 then {
408408 let G = o
409409 fromBase58String(G)
410410 }
411411 else if ($isInstanceOf(o, "Unit"))
412412 then unit
413413 else throw("Match error")
414414 }
415415
416416
417417 func ck () = {
418418 let o = getString(X())
419419 if ($isInstanceOf(o, "String"))
420420 then {
421421 let G = o
422422 fromBase58String(G)
423423 }
424424 else if ($isInstanceOf(o, "Unit"))
425425 then unit
426426 else throw("Match error")
427427 }
428428
429429
430430 let cl = l("Permission denied")
431431
432432 func cm (cn) = if ((cn.caller == this))
433433 then true
434434 else cl
435435
436436
437437 func co (cn) = {
438438 let o = cj()
439439 if ($isInstanceOf(o, "ByteVector"))
440440 then {
441441 let cp = o
442442 if ((cn.callerPublicKey == cp))
443443 then true
444444 else cl
445445 }
446446 else if ($isInstanceOf(o, "Unit"))
447447 then if ((cn.caller == this))
448448 then true
449449 else cl
450450 else throw("Match error")
451451 }
452452
453453
454454 func cq (cn,aC,cr,aE,aU) = {
455455 let at = toString(aE)
456456 let au = toBase58String(aC)
457457 let bA = toString(cr)
458458 let ca = as(at, au)
459459 let bC = av(au)
460460 let bv = aA(ca)
461461 let cs = if ((bv == 0))
462462 then invoke(ba, "onStakedVoteUpdate", [au, at, true], nil)
463463 else unit
464464 if ((cs == cs))
465465 then {
466466 let bD = aA(bC)
467467 let ct = bW(au, at, bA, aU)
468468 let cg = ct._1
469469 let cu = ct._2
470470 let bV = ct._3
471471 let bh = bf(au)
472472 let cv = if (bm(bh, at))
473473 then nil
474474 else bq(bh, at)
475475 (([IntegerEntry(ca, (bv + aU)), IntegerEntry(bC, (bD + aU)), aV("stake", at, au, aU, cn.transactionId)] ++ cu) ++ cv)
476476 }
477477 else throw("Strict value is not equal to itself.")
478478 }
479479
480480
481481 func cw (cn,aC,cr,aE,cx,aU) = {
482482 let at = toString(aE)
483483 let au = toBase58String(aC)
484484 let bA = toString(cr)
485485 let ca = as(at, au)
486486 let bC = av(au)
487487 let bv = aA(ca)
488488 let bD = aA(bC)
489489 let cu = bW(au, at, bA, -(aU))._2
490490 let bh = bf(au)
491491 let cv = if (if (bm(bh, at))
492492 then (aU == bv)
493493 else false)
494494 then bt(bh, at)
495495 else nil
496496 let cs = if ((aU == bv))
497497 then invoke(ba, "onStakedVoteUpdate", [au, at, false], nil)
498498 else unit
499499 if ((cs == cs))
500500 then {
501501 let cy = E(this, ax(au, at))
502502 let cg = bW(au, at, bA, 0)._1
503503 let cz = (cg - cy)
504504 let cA = true
505505 let cB = if ((cz > h))
506506 then invoke(this, "claimWxINTERNAL", [au, at, cA], nil)
507507 else unit
508508 if ((cB == cB))
509509 then if ((aU > bv))
510510 then l(((((((("passed amount=" + toString(aU)) + " is greater than available=") + toString(bv)) + ". lpAssetId=") + au) + ". stakedByUserKEY=") + ca))
511511 else (([IntegerEntry(ca, (bv - aU)), IntegerEntry(bC, (bD - aU)), ScriptTransfer(cx, aU, aC), aV("unstake", at, au, aU, cn.transactionId)] ++ cu) ++ cv)
512512 else throw("Strict value is not equal to itself.")
513513 }
514514 else throw("Strict value is not equal to itself.")
515515 }
516516
517517
518518 @Callable(cn)
519519 func constructor (cC) = {
520520 let cD = co(cn)
521521 if ((cD == cD))
522522 then [StringEntry(M(), cC)]
523523 else throw("Strict value is not equal to itself.")
524524 }
525525
526526
527527
528528 @Callable(cn)
529529 func constructorV2 (cE) = {
530530 let cF = [co(cn), if ((addressFromString(cE) != unit))
531531 then true
532532 else "invalid voting emission contract address"]
533533 if ((cF == cF))
534534 then [StringEntry(N(), cE)]
535535 else throw("Strict value is not equal to itself.")
536536 }
537537
538538
539539
540540 @Callable(cn)
541541 func setManager (cG) = {
542542 let cD = co(cn)
543543 if ((cD == cD))
544544 then {
545545 let cH = fromBase58String(cG)
546546 if ((cH == cH))
547547 then [StringEntry(X(), cG)]
548548 else throw("Strict value is not equal to itself.")
549549 }
550550 else throw("Strict value is not equal to itself.")
551551 }
552552
553553
554554
555555 @Callable(cn)
556556 func confirmManager () = {
557557 let cI = ck()
558558 let cJ = if (isDefined(cI))
559559 then true
560560 else l("No pending manager")
561561 if ((cJ == cJ))
562562 then {
563563 let cK = if ((cn.callerPublicKey == value(cI)))
564564 then true
565565 else l("You are not pending manager")
566566 if ((cK == cK))
567567 then [StringEntry(W(), toBase58String(value(cI))), DeleteEntry(X())]
568568 else throw("Strict value is not equal to itself.")
569569 }
570570 else throw("Strict value is not equal to itself.")
571571 }
572572
573573
574574
575575 @Callable(cn)
576576 func stake () = if ((size(cn.payments) != 1))
577577 then l("invalid payment - exact one payment must be attached")
578578 else {
579579 let cL = cn.payments[0]
580580 let aC = value(cL.assetId)
581581 let au = toBase58String(aC)
582582 let aU = cL.amount
583583 let bA = valueOrErrorMessage(getString(aY, aa(au)), j(("unsupported lp asset " + au)))
584584 let cr = addressFromStringValue(bA)
585585 let aE = if ((cn.caller == cr))
586586 then cn.originCaller
587587 else cn.caller
588588 cq(cn, aC, cr, aE, aU)
589589 }
590590
591591
592592
593593 @Callable(cn)
594594 func stakeFor (at) = if ((size(cn.payments) != 1))
595595 then l("invalid payment - exact one payment must be attached")
596596 else {
597597 let cL = cn.payments[0]
598598 let aC = value(cL.assetId)
599599 let au = toBase58String(aC)
600600 let aU = cL.amount
601601 let bA = valueOrErrorMessage(getString(aY, aa(au)), j(("unsupported lp asset " + au)))
602602 let cr = addressFromStringValue(bA)
603603 let aE = valueOrErrorMessage(addressFromString(at), j("invalid user address"))
604604 cq(cn, aC, cr, aE, aU)
605605 }
606606
607607
608608
609609 @Callable(cn)
610610 func unstake (au,aU) = {
611611 let aC = fromBase58String(au)
612612 let bA = valueOrErrorMessage(getString(aY, aa(au)), j(("unsupported lp asset " + au)))
613613 let cr = addressFromStringValue(bA)
614614 let cM = valueOrElse(getString(cr, Z()), bA)
615615 let cN = toString(cn.caller)
616616 let aE = if (if ((cN == bA))
617617 then true
618618 else (cN == cM))
619619 then cn.originCaller
620620 else cn.caller
621621 let cx = cn.caller
622622 cw(cn, aC, cr, aE, cx, aU)
623623 }
624624
625625
626626
627627 @Callable(cn)
628628 func unstakeINTERNAL (aC,aU,aE,cx) = {
629629 let au = toBase58String(aC)
630630 let cr = addressFromStringValue(valueOrErrorMessage(getString(aY, aa(au)), j(("unsupported lp asset " + au))))
631631 let cD = if ((cn.caller == cr))
632632 then true
633633 else cl
634634 if ((cD == cD))
635635 then cw(cn, aC, cr, Address(aE), Address(cx), aU)
636636 else throw("Strict value is not equal to itself.")
637637 }
638638
639639
640640
641641 @Callable(cn)
642642 func claimWx (au) = {
643643 let at = toString(cn.caller)
644644 let cA = true
645645 let cO = invoke(this, "claimWxINTERNAL", [au, at, cA], nil)
646646 $Tuple2(nil, cO)
647647 }
648648
649649
650650
651651 @Callable(cn)
652652 func claimWxDoNotThrow (au) = {
653653 let at = toString(cn.caller)
654654 let cA = false
655655 let cO = invoke(this, "claimWxINTERNAL", [au, at, cA], nil)
656656 $Tuple2(nil, cO)
657657 }
658658
659659
660660
661661 @Callable(cn)
662662 func claimWxINTERNAL (au,at,cA) = {
663663 let cD = cm(cn)
664664 if ((cD == cD))
665665 then {
666666 let aE = valueOrErrorMessage(addressFromString(at), j("claimWxINTERNAL: invalid user address"))
667667 let bA = z(aY, ad(au))
668668 let cP = aw(au, at)
669669 let cQ = az(au)
670670 let cR = ax(au, at)
671671 let cS = ay(au, at)
672672 let cT = E(this, cP)
673673 let cy = E(this, cR)
674674 let cU = E(this, cS)
675675 let cV = E(this, cQ)
676676 let cW = bW(au, at, bA, 0)
677677 let cg = cW._1
678678 let cu = cW._2
679679 let bV = cW._3
680680 let cz = max([(cg - cy), h])
681681 if ((h >= cz))
682682 then if (cA)
683683 then l("nothing to claim")
684684 else $Tuple2(nil, 0)
685685 else {
686686 let cX = max([q(m(invoke(ba, "claimWxBoost", [au, at], nil))[0]), 0])
687687 let cY = cz
688688 let cZ = min([(cY * toBigInt((bb - 1))), toBigInt(cX)])
689689 let da = (cY + cZ)
690690 let db = u(m(invoke(aZ, "emit", [toInt(cY)], nil))[0])
691691 let dc = m(invoke(aZ, "emit", [toInt(cZ)], nil))
692692 if ((dc == dc))
693693 then {
694694 let dd = ((cT + cY) + cZ)
695695 let de = (cy + cY)
696696 let df = (cU + cZ)
697697 let dg = (cV + cz)
698698 $Tuple2([StringEntry(cP, toString(dd)), StringEntry(cR, toString(de)), StringEntry(cS, toString(df)), StringEntry(cQ, toString(dg)), ScriptTransfer(aE, toInt(cY), db), ScriptTransfer(aE, toInt(cZ), db), aV("claim", at, au, toInt(cz), cn.transactionId)], toInt(da))
699699 }
700700 else throw("Strict value is not equal to itself.")
701701 }
702702 }
703703 else throw("Strict value is not equal to itself.")
704704 }
705705
706706
707707
708708 @Callable(cn)
709709 func claimWxBulkInternalREADONLY (dh,di,at,dj) = if ((dh == size(di)))
710710 then $Tuple2(nil, dj)
711711 else {
712712 let aC = di[dh]
713713 let dk = split({
714714 let bc = invoke(this, "claimWxREADONLY", [aC, at], nil)
715715 if ($isInstanceOf(bc, "String"))
716716 then bc
717717 else throw(($getType(bc) + " couldn't be cast to String"))
718718 }, f)
719719 let dl = dk[3]
720720 let dm = dk[4]
721721 let dn = {
722722 let bc = invoke(ba, "getUserVoteFinalizedREADONLY", [aC, at], nil)
723723 if ($isInstanceOf(bc, "Int"))
724724 then bc
725725 else throw(($getType(bc) + " couldn't be cast to Int"))
726726 }
727727 let do = (dj :+ makeString(["%d%d%d", dl, dm, toString(dn)], f))
728728 let dp = {
729729 let bc = invoke(this, "claimWxBulkInternalREADONLY", [(dh + 1), di, at, do], nil)
730730 if ($isInstanceOf(bc, "List[Any]"))
731731 then bc
732732 else throw(($getType(bc) + " couldn't be cast to List[Any]"))
733733 }
734734 if ((dp == dp))
735735 then $Tuple2(nil, dp)
736736 else throw("Strict value is not equal to itself.")
737737 }
738738
739739
740740
741741 @Callable(cn)
742742 func claimWxBulkREADONLY (di,at) = {
743743 let do = invoke(this, "claimWxBulkInternalREADONLY", [0, di, at, nil], nil)
744744 $Tuple2(nil, do)
745745 }
746746
747747
748748
749749 @Callable(cn)
750750 func claimWxREADONLY (au,at) = {
751751 let ca = as(at, au)
752752 let bC = av(au)
753753 let cP = aw(au, at)
754754 let cR = ax(au, at)
755755 let bv = aA(ca)
756756 let bD = aA(bC)
757757 let cT = E(this, cP)
758758 let cy = E(this, cR)
759759 let bA = z(aY, ad(au))
760760 let bF = getIntegerValue(aY, ae(bA))
761761 let dq = D(aZ, an())
762762 let bG = D(aZ, ap())
763763 let dr = if ((bG > height))
764764 then 0
765765 else (height - bG)
766766 let ds = fraction((dq * dr), bF, g)
767767 let dt = fraction(ds, bv, bD)
768768 let du = bW(au, at, bA, 0)
769769 let cg = du._1
770770 let cu = du._2
771771 let bV = du._3
772772 let cz = max([(cg - cy), h])
773773 let dv = m(invoke(ba, "claimWxBoostREADONLY", [au, at], nil))
774774 let cX = max([q(dv[0]), 0])
775775 let dw = s(dv[1])
776776 let cY = cz
777777 let cZ = min([(cY * toBigInt((bb - 1))), toBigInt(cX)])
778778 let da = (cY + cZ)
779779 $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", au, at, toString(da), toString(cT), toString(cY), toString(cZ), "soon"], f))
780780 }
781781
782782
783783
784784 @Callable(cn)
785785 func stakedByUserREADONLY (au,at) = {
786786 let bv = valueOrElse(getInteger(as(at, au)), 0)
787787 $Tuple2(nil, bv)
788788 }
789789
790790
791791
792792 @Callable(cn)
793+func stakedTotalREADONLY (au) = {
794+ let bD = valueOrElse(getInteger(av(au)), 0)
795+ $Tuple2(nil, bD)
796+ }
797+
798+
799+
800+@Callable(cn)
793801 func usersListTraversal (aC) = {
794802 let cD = if ((toBase58String(cn.caller.bytes) == valueOrElse(getString(this, N()), "")))
795803 then true
796804 else co(cn)
797805 if ((cD == cD))
798806 then {
799807 let bh = bf(aC)
800808 let dx = getString(be(aC))
801809 let bn = getString(bg(bh))
802810 let o = dx
803811 if ($isInstanceOf(o, "Unit"))
804812 then {
805813 let dy = bn
806814 if ($isInstanceOf(dy, "Unit"))
807815 then $Tuple2(nil, false)
808816 else if ($isInstanceOf(dy, "String"))
809817 then {
810818 let dz = dy
811819 $Tuple2([StringEntry(be(aC), dz)], true)
812820 }
813821 else throw("Match error")
814822 }
815823 else if ($isInstanceOf(o, "String"))
816824 then {
817825 let aE = o
818826 let cy = E(this, ax(aC, aE))
819827 let cr = z(aY, ad(aC))
820828 let cg = bW(aC, aE, cr, 0)._1
821829 let cz = (cg - cy)
822830 let cA = true
823831 let cB = if ((cz > h))
824832 then invoke(this, "claimWxINTERNAL", [aC, aE, cA], nil)
825833 else unit
826834 if ((cB == cB))
827835 then {
828836 let dA = getString(bl(bh, aE))
829837 let dy = dA
830838 if ($isInstanceOf(dy, "Unit"))
831839 then $Tuple2([DeleteEntry(be(aC))], false)
832840 else if ($isInstanceOf(dy, "String"))
833841 then {
834842 let dB = dy
835843 $Tuple2([StringEntry(be(aC), dB)], true)
836844 }
837845 else throw("Match error")
838846 }
839847 else throw("Strict value is not equal to itself.")
840848 }
841849 else throw("Match error")
842850 }
843851 else throw("Strict value is not equal to itself.")
844852 }
845853
846854
847855
848856 @Callable(cn)
849857 func onModifyWeight (au,bA) = if ((cn.caller != aY))
850858 then l("permissions denied")
851859 else {
852860 let dC = bz(au, bA, 0)
853861 let bx = dC._1
854862 let bY = dC._2
855863 let bZ = dC._3
856864 bY
857865 }
858866
859867
860868 @Verifier(dD)
861869 func dE () = {
862870 let dF = {
863871 let o = cj()
864872 if ($isInstanceOf(o, "ByteVector"))
865873 then {
866874 let cp = o
867875 cp
868876 }
869877 else if ($isInstanceOf(o, "Unit"))
870878 then dD.senderPublicKey
871879 else throw("Match error")
872880 }
873881 sigVerify(dD.bodyBytes, dD.proofs[0], dF)
874882 }
875883

github/deemru/w8io/fabc49c 
108.89 ms