tx · EfzYkYm6CCLU4X7x256TKkBDXcJa3b18LCMDbuuEtYVu

3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz:  -0.02200000 Waves

2023.01.10 13:43 [2398741] smart account 3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz > SELF 0.00000000 Waves

{ "type": 13, "id": "EfzYkYm6CCLU4X7x256TKkBDXcJa3b18LCMDbuuEtYVu", "fee": 2200000, "feeAssetId": null, "timestamp": 1673347393163, "version": 1, "sender": "3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz", "senderPublicKey": "D28XoueZWsMfm8Y5pa6C5ZFuYoWgre2Wm8tzJANJgMnq", "proofs": [ "2JqcTcuBsMJq3F8ZwQ3UWBxPeEHPTMJ3shS4P7Fhn2kpo4DRGAja5NtK43VYhvGVsisu3rYKu4cxKpeCq5HCaYyj" ], "script": "base64:BgL7HggCEgMKAQgSAwoBCBIDCgEIEgASABIECgIIARIDCgEIEgQKAggIEgYKBAEYCBgSBAoCGAgSBAoCCAgSBAoCCAgSAwoBCBIECgIICCIGU0NBTEU4IgVNVUxUOCIHU0NBTEUxOCIGTVVMVDE4IgNTRVAiDlBPT0xXRUlHSFRNVUxUIgp6ZXJvQmlnSW50IglvbmVCaWdJbnQiCWFzQW55TGlzdCIDdmFsIgckbWF0Y2gwIgp2YWxBbnlMeXN0IgVhc0ludCIGdmFsSW50Ighhc1N0cmluZyIGdmFsU3RyIgxhc0J5dGVWZWN0b3IiBnZhbEJpbiIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbCIMZ2V0SW50T3JaZXJvIg9nZXRJbnRPckRlZmF1bHQiCmRlZmF1bHRWYWwiDGdldEludE9yRmFpbCIZZ2V0QmlnSW50RnJvbVN0cmluZ09yWmVybyIcZ2V0QmlnSW50RnJvbVN0cmluZ09yRGVmYXVsdCIBcyIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiD3Jlc3VsdFNjYWxlTXVsdCIRa2V5RmFjdG9yeUFkZHJlc3MiGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QiGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcCIZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcCIUSWR4RmFjdG9yeUNmZ0lkb0RhcHAiFUlkeEZhY3RvcnlDZmdUZWFtRGFwcCIZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcCIVSWR4RmFjdG9yeUNmZ1Jlc3REYXBwIhlJZHhGYWN0b3J5Q2ZnU2xpcHBhZ2VEYXBwIg1rZXlGYWN0b3J5Q2ZnIhNrZXlNYW5hZ2VyUHVibGljS2V5IhprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleSIWa2V5U3RhYmxlUG9vbEFkZG9uQWRkciIMa2V5QWRkb25BZGRyIhprZXlGYWN0b3J5THAyQXNzZXRzTWFwcGluZyIKbHBBc3NldFN0ciIQa2V5RmFjdG9yeUxwTGlzdCIma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MiFGtleUZhY3RvcnlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiCnJlYWRMcExpc3QiB2ZhY3RvcnkiFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsIhhnZXRCb29zdGluZ0FkZHJlc3NPckZhaWwiCmZhY3RvcnlDZmciGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbCIXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwiHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudCIha2V5RW1pc3Npb25SYXRlUGVyQmxvY2tNYXhDdXJyZW50IhVrZXlFbWlzc2lvblN0YXJ0QmxvY2siG2tleUVtaXNzaW9uRHVyYXRpb25JbkJsb2NrcyITa2V5RW1pc3Npb25FbmRCbG9jayIPa2V5U3Rha2VkQnlVc2VyIg51c2VyQWRkcmVzc1N0ciIMbHBBc3NldElkU3RyIg5rZXlTdGFrZWRUb3RhbCIQa2V5Q2xhaW1lZEJ5VXNlciIZa2V5Q2xhaW1lZEJ5VXNlck1pblJld2FyZCIba2V5Q2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkIg9rZXlDbGFpbWVkVG90YWwiCnJlYWRTdGFrZWQiFWtleUxhc3RUb3RhbExwQmFsYW5jZSIJbHBBc3NldElkIhRrZXlMYXN0VXNlckxwQmFsYW5jZSILdXNlckFkZHJlc3MiGWtleVRvdGFsTHBCYWxhbmNlSW50ZWdyYWwiGGtleVVzZXJMcEJhbGFuY2VJbnRlZ3JhbCIma2V5VG90YWxMcEJhbGFuY2VJbnRlZ3JhbExhc3RVcGRIZWlnaHQiJWtleVVzZXJMcEJhbGFuY2VJbnRlZ3JhbExhc3RVcGRIZWlnaHQiEmtleVd4UGVyTHBJbnRlZ3JhbCIfa2V5V3hQZXJMcEludGVncmFsTGFzdFVwZEhlaWdodCIQa2V5V3hUb0NsYWltVXNlciIja2V5V3hQZXJMcEludGVncmFsVXNlckxhc3RVcGRIZWlnaHQiCmtleVd4UGVyTHAiDWtleVd4UGVyTHBYMTgiGmtleVd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0IhlrZXlPcGVyYXRpb25IaXN0b3J5UmVjb3JkIgR0eXBlIgZ0eElkNTgiE2Zvcm1hdEhpc3RvcnlSZWNvcmQiBmFtb3VudCIVT3BlcmF0aW9uSGlzdG9yeUVudHJ5IgR0eElkIg5mYWN0b3J5QWRkcmVzcyIPZmFjdG9yeUNvbnRyYWN0IhBlbWlzc2lvbkNvbnRyYWN0IhBib29zdGluZ0NvbnRyYWN0IgtrZXlOZXh0VXNlciIQZ2V0VXNlcnNMaXN0TmFtZSILa2V5TGlzdEhlYWQiCGxpc3ROYW1lIgtrZXlMaXN0U2l6ZSILa2V5TGlzdFByZXYiAmlkIgtrZXlMaXN0TmV4dCIMY29udGFpbnNOb2RlIgpoZWFkT3JVbml0IgpwcmV2T3JVbml0IgpuZXh0T3JVbml0IhFpbnNlcnROb2RlQWN0aW9ucyIIbGlzdFNpemUiCWNoZWNrTm9kZSIRZGVsZXRlTm9kZUFjdGlvbnMiG2NhbGNXeFBlckxwSW50ZWdyYWxVc2VyTGFzdCIMc3Rha2VkQnlVc2VyIiZ3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodE9yWmVybyISd3hQZXJMcEludGVncmFsTmV3Ihp3eFBlckxwSW50ZWdyYWxVc2VyTGFzdEtFWSIUcmVmcmVzaFBvb2xJTlRFR1JBTFMiDnBvb2xBZGRyZXNzU3RyIg1scERlbHRhQW1vdW50Ig5zdGFrZWRUb3RhbEtFWSILc3Rha2VkVG90YWwiEm5vblplcm9TdGFrZWRUb3RhbCIKcG9vbFdlaWdodCISZW1pc3Npb25TdGFydEJsb2NrIgVNVUxUMyIUd3hFbWlzc2lvblBlckJsb2NrWDMiGHBvb2xXeEVtaXNzaW9uUGVyQmxvY2tYMyISd3hQZXJMcEludGVncmFsS0VZIh93eFBlckxwSW50ZWdyYWxMYXN0VXBkSGVpZ2h0S0VZIgp3eFBlckxwS0VZIhx3eFBlckxwSW50ZWdyYWxMYXN0VXBkSGVpZ2h0Ig93eFBlckxwSW50ZWdyYWwiD3d4UGVyTHBPclplcm9YMyICZGgiCXd4UGVyTHBYMyIOc3Rha2VkVG90YWxOZXciFW5vblplcm9TdGFrZWRUb3RhbE5ldyIMd3hQZXJMcFgzTmV3Ih93eFBlckxwSW50ZWdyYWxMYXN0VXBkSGVpZ2h0TmV3IgVkZWJ1ZyIQcmVmcmVzaElOVEVHUkFMUyINJHQwMTQyNzQxNDM5NiIRcG9vbEludGVncmFsU1RBVEUiCXBvb2xERUJVRyIPc3Rha2VkQnlVc2VyS0VZIhB3eFRvQ2xhaW1Vc2VyS0VZIiN3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodEtFWSINd3hUb0NsYWltVXNlciIXd3hQZXJMcEludGVncmFsVXNlckxhc3QiBk1VTFQxMSIQd3hUb0NsYWltVXNlck5ldyIad3hQZXJMcEludGVncmFsVXNlckxhc3ROZXciI3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0TmV3IhZtYW5hZ2VyUHVibGljS2V5T3JVbml0Ih1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCIVcGVybWlzc2lvbkRlbmllZEVycm9yIghtdXN0VGhpcyIBaSILbXVzdE1hbmFnZXIiAnBrIhFmYWN0b3J5QWRkcmVzc1N0ciILY2hlY2tDYWxsZXIiFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QiBWNoZWtzIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iA3BtdCIJY2FsbGVyU3RyIg0kdDAxODgzMjE4OTQ5Ig1pbnRlZ3JhbFNUQVRFIgtsaXN0QWN0aW9ucyIJcG9vbEFkZG9uIg1jbGFpbWVkQnlVc2VyIgtwb29sQWRkcmVzcyIQYXZhaWxhYmxlVG9DbGFpbSIBciIGcmVzdWx0IhBjbGFpbWVkQnlVc2VyS0VZIg9jbGFpbWVkVG90YWxLRVkiGWNsYWltZWRCeVVzZXJNaW5SZXdhcmRLRVkiG2NsYWltZWRCeVVzZXJCb29zdFJld2FyZEtFWSIWY2xhaW1lZEJ5VXNlck1pblJld2FyZCIYY2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkIgxjbGFpbWVkVG90YWwiDSR0MDIyNzg3MjI4OTkiEnd4QW1vdW50Qm9vc3RUb3RhbCINbWluUmV3YXJkUGFydCIPYm9vc3RSZXdhcmRQYXJ0Igt0b3RhbFJld2FyZCIJd3hBc3NldElkIgllbWl0Qm9vc3QiEmNsYWltZWRCeVVzZXJWYWx1ZSIeY2xhaW1lZEJ5VXNlck1pblJl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AXYCBQJhZAkBAVIABQFlAQJhZgECYWcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYWcFAUwBAmFoAQJhZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhZwUBTwECYWkBAmFnCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFnBQFLAQJhagACGyVzJXNfX3JhdGVQZXJCbG9ja19fY3VycmVudAECYWsAAh4lcyVzX19yYXRlUGVyQmxvY2tNYXhfX2N1cnJlbnQBAmFsAAIaJXMlc19fZW1pc3Npb25fX3N0YXJ0QmxvY2sBAmFtAAIYJXMlc19fZW1pc3Npb25fX2R1cmF0aW9uAQJhbgACGCVzJXNfX2VtaXNzaW9uX19lbmRCbG9jawECYW8CAmFwAmFxCQC5CQIJAMwIAgIOJXMlcyVzX19zdGFrZWQJAMwIAgUCYXAJAMwIAgUCYXEFA25pbAUBZQECYXIBAmFxCQCsAgICFyVzJXMlc19fc3Rha2VkX190b3RhbF9fBQJhcQECYXMCAmFxAmFwCQC5CQIJAMwIAgIPJXMlcyVzX19jbGFpbWVkCQDMCAIFAmFwCQDMCAIFAmFxBQNuaWwFAWUBAmF0AgJhcQJhcAkAuQkCCQDMCAICGCVzJXMlc19fY2xhaW1lZE1pblJld2FyZAkAzAgCBQJhcAkAzAgCBQJhcQUDbmlsBQFlAQJhdQICYXECYXAJALkJAgkAzAgCAholcyVzJXNfX2NsYWltZWRCb29zdFJld2FyZAkAzAgCBQJhcAkAzAgCBQJhcQUDbmlsBQFlAQJhdgECYXEJALkJAgkAzAgCAhYlcyVzJXNfX2NsYWltZWRfX3RvdGFsCQDMCAIFAmFxBQNuaWwFAWUBAmF3AQF1CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAXUAAAECYXgBAmF5CQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmF5CQDMCAICBXRvdGFsCQDMCAICA2JhbAUDbmlsBQFlAQJhegICYXkCYUEJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYXkJAMwIAgUCYUEJAMwIAgIDYmFsBQNuaWwFAWUBAmFCAQJheQkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQJheQkAzAgCAgV0b3RhbAkAzAgCAgZiYWxJTlQFA25pbAUBZQECYUMCAmF5AmFBCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAmF5CQDMCAIFAmFBCQDMCAICBmJhbElOVAUDbmlsBQFlAQJhRAECYXkJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYXkJAMwIAgIFdG90YWwJAMwIAgIHbGFzdFVwZAUDbmlsBQFlAQJhRQICYXkCYUEJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYXkJAMwIAgUCYUEJAMwIAgIHbGFzdFVwZAUDbmlsBQFlAQJhRgECYXkJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQJheQkAzAgCAgZjb21tb24JAMwIAgIFbHBJbnQFA25pbAUBZQECYUcBAmF5CQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUCYXkJAMwIAgIGY29tbW9uCQDMCAICBmxwSW50SAUDbmlsBQFlAQJhSAICYXkCYUEJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQJheQkAzAgCBQJhQQkAzAgCAgVscEludAUDbmlsBQFlAQJhSQICYXkCYUEJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQJheQkAzAgCBQJhQQkAzAgCAgZscEludEgFA25pbAUBZQECYUoBAmF5CQC5CQIJAMwIAgICJXMJAMwIAgUCYXkJAMwIAgIHd3hQZXJMcAUDbmlsBQFlAQJhSwECYXkJALkJAgkAzAgCAgIlcwkAzAgCBQJheQkAzAgCAgp3eFBlckxwWDE4BQNuaWwFAWUBAmFMAgJheQJhQQkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAIFAmF5CQDMCAIFAmFBCQDMCAICBXVJbnRMBQNuaWwFAWUBAmFNAwJhTgJhQQJhTwkAuQkCCQDMCAICESVzJXMlcyVzX19oaXN0b3J5CQDMCAIFAmFOCQDMCAIFAmFBCQDMCAIFAmFPBQNuaWwFAWUBAmFQBAJhQQJheQJhTgJhUQkAuQkCCQDMCAICDCVzJXMlcyVkJWQlZAkAzAgCBQJhQQkAzAgCBQJheQkAzAgCBQJhTgkAzAgCCQCkAwEFBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUCYVEFA25pbAUBZQECYVIFAmFOAmFBAmF5AmFRAmFTCQELU3RyaW5nRW50cnkCCQECYU0DBQJhTgUCYUEJANgEAQUCYVMJAQJhUAQFAmFBBQJheQUCYU4FAmFRAAJhVAkBAXMCBQR0aGlzCQEBSQAAAmFVCQERQGV4dHJOYXRpdmUoMTA2MikBBQJhVAACYWcJAQJhZQEFAmFVAAJhVgkBAmFoAQUCYWcAAmFXCQECYWYBBQJhZwECYVgBAmF5CQC5CQIJAMwIAgIEJXMlcwkAzAgCBQJheQkAzAgCAghuZXh0VXNlcgUDbmlsBQFlAQJhWQECYXkJALkJAgkAzAgCAgV1c2VycwkAzAgCBQJheQUDbmlsBQFlAQJhWgECYmEJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYmEJAMwIAgIEaGVhZAUDbmlsBQFlAQJiYgECYmEJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUCYmEJAMwIAgIEc2l6ZQUDbmlsBQFlAQJiYwICYmECYmQJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQJiYQkAzAgCBQJiZAkAzAgCAgRwcmV2BQNuaWwFAWUBAmJlAgJiYQJiZAkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAIFAmJhCQDMCAIFAmJkCQDMCAICBG5leHQFA25pbAUBZQECYmYCAmJhAmJkBAJiZwkAnQgCBQR0aGlzCQECYVoBBQJiYQQCYmgJAJ0IAgUEdGhpcwkBAmJjAgUCYmEFAmJkBAJiaQkAnQgCBQR0aGlzCQECYmUCBQJiYQUCYmQDAwkAAAIFAmJkCQELdmFsdWVPckVsc2UCBQJiZwIABgkBAiE9AgUCYmgFBHVuaXQGCQECIT0CBQJiaQUEdW5pdAECYmoCAmJhAmJkBAJiZwkAnQgCBQR0aGlzCQECYVoBBQJiYQQCYmsJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmJiAQUCYmEAAAQCYmwDCQEBIQEJAQJiZgIFAmJhBQJiZAYJAAIBAgtOb2RlIGV4aXN0cwMJAAACBQJibAUCYmwJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYmIBBQJiYQkAZAIFAmJrAAEFA25pbAMJAQIhPQIFAmJnBQR1bml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiZQIFAmJhBQJiZAkBBXZhbHVlAQUCYmcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJjAgUCYmEJAQV2YWx1ZQEFAmJnBQJiZAUDbmlsBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFaAQUCYmEFAmJkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmJtAgJiYQJiZAQCYmcJAJ0IAgUEdGhpcwkBAmFaAQUCYmEEAmJrCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJiYgEFAmJhAAAEAmJoCQCdCAIFBHRoaXMJAQJiYwIFAmJhBQJiZAQCYmkJAJ0IAgUEdGhpcwkBAmJlAgUCYmEFAmJkCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJiYgEFAmJhCQBlAgUCYmsAAQUDbmlsAwMJAQIhPQIFAmJoBQR1bml0CQECIT0CBQJiaQUEdW5pdAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJlAgUCYmEJAQV2YWx1ZQEFAmJoCQEFdmFsdWUBBQJiaQkAzAgCCQELU3RyaW5nRW50cnkCCQECYmMCBQJiYQkBBXZhbHVlAQUCYmkJAQV2YWx1ZQEFAmJoCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJiYwIFAmJhBQJiZAkAzAgCCQELRGVsZXRlRW50cnkBCQECYmUCBQJiYQUCYmQFA25pbAMJAQIhPQIFAmJpBQR1bml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhWgEFAmJhCQEFdmFsdWUBBQJiaQkAzAgCCQELRGVsZXRlRW50cnkBCQECYmUCBQJiYQUCYmQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJjAgUCYmEJAQV2YWx1ZQEFAmJpBQNuaWwDCQECIT0CBQJiaAUEdW5pdAkAzAgCCQELRGVsZXRlRW50cnkBCQECYmMCBQJiYQUCYmQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmJlAgUCYmEJAQV2YWx1ZQEFAmJoBQNuaWwDCQAAAgUCYmQJAQt2YWx1ZU9yRWxzZQIFAmJnAgAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFaAQUCYmEFA25pbAkAAgEJAKwCAgkArAICCQCsAgICDmludmFsaWQgbm9kZTogBQJiYQIBLgUCYmQBAmJuBAJibwJicAJicQJicgMDCQAAAgUCYnAFAWcJAL8CAgUCYm8FAWcHBQFnAwkAAAIFAmJvBQFnBQJicQMDCQC/AgIFAmJwBQFnCQC/AgIFAmJvBQFnBwkBBXZhbHVlAQkAqAMBCQEBcwIFBHRoaXMFAmJyCQACAQItY2FsY1d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0OiB1bmV4cGVjdGVkIHN0YXRlAQJicwMCYXECYnQCYnUEAmJ2CQECYXIBBQJhcQQCYncJALYCAQkBAmF3AQUCYnYEAmJ4AwkAAAIFAmJ3BQFnBQFoBQJidwQCYnkJARFAZXh0ck5hdGl2ZSgxMDUwKQIFAmFVCQECYWEBBQJidAQCYnoJAQF6AgUCYVYJAQJhbAAEAmJBAOgHBAJiQgkAaAIJAQF6AgUCYVYJAQJhagAFAmJBBAJiQwkAawMFAmJCBQJieQkAaAIFAWYAAwQCYkQJAQJhRgEFAmFxBAJiRQkBAmFHAQUCYXEEAmJGCQECYUoBBQJhcQQCYkcJAQF4AwUEdGhpcwUCYkUFAmJ6BAJiSAkBAUECBQR0aGlzBQJiRAQCYkkAAAQCYkoJAJYDAQkAzAgCCQBlAgUGaGVpZ2h0BQJiRwkAzAgCAAAFA25pbAQCYksDCQECIT0CBQJiSQAACQC2AgEFAmJJCQC8AgMJALYCAQUCYkMJALYCAQUBYgUCYngEAmJMCQC3AgIFAmJ3CQC2AgEFAmJ1BAJiTQMJAAACBQJiTAUBZwUBaAUCYkwEAmJxCQC3AgIFAmJICQC5AgIFAmJLCQC2AgEFAmJKBAJiTgkAugICCQC2AgEFAmJDBQJiTQQCYk8FBmhlaWdodAQCYlAJALkJAgkAzAgCCQCmAwEFAmJxCQDMCAIJAKQDAQUCYkoJAMwIAgkApgMBBQJiSwkAzAgCCQCmAwEFAmJ3CQDMCAIJAKQDAQUCYkMJAMwIAgkApAMBBQJiQgkAzAgCCQCkAwEFAmJ5BQNuaWwCAjo6CQCVCgMFAmJxCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmJECQCmAwEFAmJxCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJiRQUCYk8JAMwIAgkBC1N0cmluZ0VudHJ5AgUCYkYJAKYDAQUCYk4FA25pbAUCYlABAmJRBAJhcQJhcAJidAJidQQCYlIJAQJicwMFAmFxBQJidAUCYnUEAmJxCAUCYlICXzEEAmJTCAUCYlICXzIEAmJUCAUCYlICXzMEAmJBAOgHBAJiVQkBAmFvAgUCYXAFAmFxBAJibwkBAmF3AQUCYlUEAmJWCQECYUgCBQJhcQUCYXAEAmJXCQECYUkCBQJhcQUCYXAEAmJyCQECYUwCBQJhcQUCYXAEAmJYCQEBQQIFBHRoaXMFAmJWBAJicAkBAXcCBQR0aGlzBQJiVwQCYlkJAQJibgQJALYCAQUCYm8JALYCAQUCYnAFAmJxBQJicgQCYloJAGgCBQFiBQJiQQQCY2EJAJgDAQkAzAgCCQC3AgIFAmJYCQC8AgMJALgCAgUCYnEFAmJZCQC2AgEFAmJvCQC2AgEFAmJaCQDMCAIFAWcFA25pbAQCY2IFAmJxBAJjYwUGaGVpZ2h0BAJiUAkAuQkCCQDMCAIJAKYDAQUCYlgJAMwIAgkApgMBBQJiWQkAzAgCCQCkAwEFAmJvCQDMCAIFAmJUCQDMCAIJAKQDAQUGaGVpZ2h0BQNuaWwCAjo6CQCVCgMFAmNhCQDOCAIFAmJTCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmJWCQCmAwEFAmNhCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJiVwUCY2MJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYnIJAKYDAQUCY2IFA25pbAUCYlABAmNkAAQBawkAoggBCQEBUwADCQABAgUBawIGU3RyaW5nBAFDBQFrCQDZBAEFAUMDCQABAgUBawIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJjZQAEAWsJAKIIAQkBAVQAAwkAAQIFAWsCBlN0cmluZwQBQwUBawkA2QQBBQFDAwkAAQIFAWsCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgACY2YJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAECY2cBAmNoAwkAAAIIBQJjaAZjYWxsZXIFBHRoaXMGBQJjZgECY2kBAmNoBAFrCQECY2QAAwkAAQIFAWsCCkJ5dGVWZWN0b3IEAmNqBQFrAwkAAAIIBQJjaA9jYWxsZXJQdWJsaWNLZXkFAmNqBgUCY2YDCQABAgUBawIEVW5pdAMJAAACCAUCY2gGY2FsbGVyBQR0aGlzBgUCY2YJAAIBAgtNYXRjaCBlcnJvcg4CY2gBC2NvbnN0cnVjdG9yAQJjawQCY2wJAQJjaQEFAmNoAwkAAAIFAmNsBQJjbAkAzAgCCQELU3RyaW5nRW50cnkCCQEBSQAFAmNrBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY2gBDWNvbnN0cnVjdG9yVjIBAmNtBAJjbgkAzAgCCQECY2kBBQJjaAkAzAgCAwkBAiE9AgkApggBBQJjbQUEdW5pdAYCKGludmFsaWQgdm90aW5nIGVtaXNzaW9uIGNvbnRyYWN0IGFkZHJlc3MFA25pbAMJAAACBQJjbgUCY24JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAUoABQJjbQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNoAQpzZXRNYW5hZ2VyAQJjbwQCY2wJAQJjaQEFAmNoAwkAAAIFAmNsBQJjbAQCY3AJANkEAQUCY28DCQAAAgUCY3AFAmNwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFUAAUCY28FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjaAEOY29uZmlybU1hbmFnZXIABAJjcQkBAmNlAAQCY3IDCQEJaXNEZWZpbmVkAQUCY3EGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmNyBQJjcgQCY3MDCQAAAggFAmNoD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCY3EGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmNzBQJjcwkAzAgCCQELU3RyaW5nRW50cnkCCQEBUwAJANgEAQkBBXZhbHVlAQUCY3EJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVQABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY2gBBXN0YWtlAAMJAQIhPQIJAJADAQgFAmNoCHBheW1lbnRzAAEJAAIBAjRpbnZhbGlkIHBheW1lbnQgLSBleGFjdCBvbmUgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBAJjdAkAkQMCCAUCY2gIcGF5bWVudHMAAAQCYXkJAQV2YWx1ZQEIBQJjdAdhc3NldElkBAJhcQkA2AQBBQJheQQCYVEIBQJjdAZhbW91bnQEAmJ0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYVUJAQFXAQUCYXEJAKwCAgIVdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJhcQQCY3UJAKUIAQgFAmNoBmNhbGxlcgQCYXADCQAAAgUCY3UFAmJ0CQClCAEIBQJjaAxvcmlnaW5DYWxsZXIFAmN1BAJiVQkBAmFvAgUCYXAFAmFxBAJidgkBAmFyAQUCYXEEAmJvCQECYXcBBQJiVQQCYncJAQJhdwEFAmJ2BAJjdgkBAmJRBAUCYXEFAmFwBQJidAUCYVEEAmNhCAUCY3YCXzEEAmN3CAUCY3YCXzIEAmJQCAUCY3YCXzMEAmJhCQECYVkBBQJhcQQCY3gDCQECYmYCBQJiYQUCYXAFA25pbAkBAmJqAgUCYmEFAmFwCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYlUJAGQCBQJibwUCYVEJAMwIAgkBDEludGVnZXJFbnRyeQIFAmJ2CQBkAgUCYncFAmFRCQDMCAIJAQJhUgUCBXN0YWtlBQJhcAUCYXEFAmFRCAUCY2gNdHJhbnNhY3Rpb25JZAUDbmlsBQJjdwUCY3gCY2gBB3Vuc3Rha2UCAmFxAmFRBAJheQkA2QQBBQJhcQQCYnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhVQkBAVcBBQJhcQkArAICAhV1bnN1cHBvcnRlZCBscCBhc3NldCAFAmFxBAJjeQkBC3ZhbHVlT3JFbHNlAgkAnQgCCQERQGV4dHJOYXRpdmUoMTA2MikBBQJidAkBAVYABQJidAQCY3UJAKUIAQgFAmNoBmNhbGxlcgQCYXADAwkAAAIFAmN1BQJidAYJAAACBQJjdQUCY3kJAKUIAQgFAmNoDG9yaWdpbkNhbGxlcgUCY3UEAmJVCQECYW8CBQJhcAUCYXEEAmJ2CQECYXIBBQJhcQQCYm8JAQJhdwEFAmJVBAJidwkBAmF3AQUCYnYEAmN3CAkBAmJRBAUCYXEFAmFwBQJidAkBAS0BBQJhUQJfMgQCYmEJAQJhWQEFAmFxBAJjeAMDCQECYmYCBQJiYQUCYXAJAAACBQJhUQUCYm8HCQECYm0CBQJiYQUCYXAFA25pbAQCY3oJAQFBAgUEdGhpcwkBAmFzAgUCYXEFAmFwBAJjQQkBAXYCBQJhVQkBAVoBBQJhcQQCY2EICQECYlEEBQJhcQUCYXAFAmNBAAACXzEEAmNCCQC4AgIFAmNhBQJjegQCY0MDCQC/AgIFAmNCBQFnCQD8BwQFBHRoaXMCD2NsYWltV3hJTlRFUk5BTAkAzAgCBQJhcQkAzAgCBQJhcAUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCY0MFAmNDAwkAZgIFAmFRBQJibwkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIOcGFzc2VkIGFtb3VudD0JAKQDAQUCYVECGyBpcyBncmVhdGVyIHRoYW4gYXZhaWxhYmxlPQkApAMBBQJibwIMLiBscEFzc2V0SWQ9BQJhcQISLiBzdGFrZWRCeVVzZXJLRVk9BQJiVQkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFAmJVCQBlAgUCYm8FAmFRCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJidgkAZQIFAmJ3BQJhUQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCY2gGY2FsbGVyBQJhUQUCYXkJAMwIAgkBAmFSBQIHdW5zdGFrZQUCYXAFAmFxBQJhUQgFAmNoDXRyYW5zYWN0aW9uSWQFA25pbAUCY3cFAmN4CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNoAQdjbGFpbVd4AQJhcQQCYXAJAKUIAQgFAmNoBmNhbGxlcgQCY0QJAPwHBAUEdGhpcwIPY2xhaW1XeElOVEVSTkFMCQDMCAIFAmFxCQDMCAIFAmFwBQNuaWwFA25pbAkAlAoCBQNuaWwFAmNEAmNoAQ9jbGFpbVd4SU5URVJOQUwCAmFxAmFwBAJjbAkBAmNnAQUCY2gDCQAAAgUCY2wFAmNsBAJhQQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFAmFwAiVjbGFpbVd4SU5URVJOQUw6IGludmFsaWQgdXNlciBhZGRyZXNzBAJidAkBAXYCBQJhVQkBAVoBBQJhcQQCY0UJAQJhcwIFAmFxBQJhcAQCY0YJAQJhdgEFAmFxBAJjRwkBAmF0AgUCYXEFAmFwBAJjSAkBAmF1AgUCYXEFAmFwBAJjegkBAUECBQR0aGlzBQJjRQQCY0kJAQFBAgUEdGhpcwUCY0cEAmNKCQEBQQIFBHRoaXMFAmNIBAJjSwkBAUECBQR0aGlzBQJjRgQCY0wJAQJiUQQFAmFxBQJhcAUCYnQAAAQCY2EIBQJjTAJfMQQCY3cIBQJjTAJfMgQCYlAIBQJjTAJfMwQCY0IJAJgDAQkAzAgCCQC4AgIFAmNhBQJjegkAzAgCBQFnBQNuaWwDCQDAAgIFAWcFAmNCCQACAQIQbm90aGluZyB0byBjbGFpbQQCY00JAJYDAQkAzAgCCQEBbQEJAJEDAgkBAWkBCQD8BwQFAmFXAgxjbGFpbVd4Qm9vc3QJAMwIAgUCYXEJAMwIAgUCYXAFA25pbAUDbmlsAAAJAMwIAgAABQNuaWwEAmNOBQJjQgQCY08JAJkDAQkAzAgCCQC5AgIFAmNOCQC2AgEAAgkAzAgCCQC2AgEFAmNNBQNuaWwEAmNQCQC3AgIFAmNOBQJjTwQCY1EJAQFxAQkAkQMCCQEBaQEJAPwHBAUCYVYCBGVtaXQJAMwIAgkAoAMBBQJjTgUDbmlsBQNuaWwAAAQCY1IJAQFpAQkA/AcEBQJhVgIEZW1pdAkAzAgCCQCgAwEFAmNPBQNuaWwFA25pbAMJAAACBQJjUgUCY1IEAmNTCQC3AgIFAmN6BQJjQgQCY1QJALcCAgUCY0kFAmNOBAJjVQkAtwICBQJjSQUCY04EAmNWCQC3AgIFAmNJBQJjTgkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmNFCQCmAwEFAmNTCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmNHCQCmAwEFAmNUCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmNICQCmAwEFAmNVCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmNGCQCmAwEFAmNWCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFBCQCgAwEFAmNOBQJjUQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhQQkAoAMBBQJjTwUCY1EJAMwIAgkBAmFSBQIFY2xhaW0FAmFwBQJhcQkAoAMBBQJjQggFAmNoDXRyYW5zYWN0aW9uSWQFA25pbAUCY1AJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY2gBG2NsYWltV3hCdWxrSW50ZXJuYWxSRUFET05MWQQCY1cCY1gCYXACY1kDCQAAAgUCY1cJAJADAQUCY1gJAJQKAgUDbmlsBQJjWQQCYXkJAJEDAgUCY1gFAmNXBAJjWgkAtQkCCgACZGEJAPwHBAUEdGhpcwIPY2xhaW1XeFJFQURPTkxZCQDMCAIFAmF5CQDMCAIFAmFwBQNuaWwFA25pbAMJAAECBQJkYQIGU3RyaW5nBQJkYQkAAgEJAKwCAgkAAwEFAmRhAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcFAWUEAmRiCQCRAwIFAmNaAAMEAmRjCQCRAwIFAmNaAAQEAmRkCQDNCAIFAmNZCQC5CQIJAMwIAgIEJWQlZAkAzAgCBQJkYgkAzAgCBQJkYwUDbmlsBQFlBAJkZQoAAmRhCQD8BwQFBHRoaXMCG2NsYWltV3hCdWxrSW50ZXJuYWxSRUFET05MWQkAzAgCCQBkAgUCY1cAAQkAzAgCBQJjWAkAzAgCBQJhcAkAzAgCBQJkZAUDbmlsBQNuaWwDCQABAgUCZGECCUxpc3RbQW55XQUCZGEJAAIBCQCsAgIJAAMBBQJkYQIeIGNvdWxkbid0IGJlIGNhc3QgdG8gTGlzdFtBbnldAwkAAAIFAmRlBQJkZQkAlAoCBQNuaWwFAmRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNoARNjbGFpbVd4QnVsa1JFQURPTkxZAgJjWAJhcAQCZGQJAPwHBAUEdGhpcwIbY2xhaW1XeEJ1bGtJbnRlcm5hbFJFQURPTkxZCQDMCAIAAAkAzAgCBQJjWAkAzAgCBQJhcAkAzAgCBQNuaWwFA25pbAUDbmlsCQCUCgIFA25pbAUCZGQCY2gBD2NsYWltV3hSRUFET05MWQICYXECYXAEAmJVCQECYW8CBQJhcAUCYXEEAmJ2CQECYXIBBQJhcQQCY0UJAQJhcwIFAmFxBQJhcAQCYm8JAQJhdwEFAmJVBAJidwkBAmF3AQUCYnYEAmN6CQEBQQIFBHRoaXMFAmNFBAJidAkBAXYCBQJhVQkBAVoBBQJhcQQCYnkJARFAZXh0ck5hdGl2ZSgxMDUwKQIFAmFVCQECYWEBBQJidAQCZGYJAQF6AgUCYVYJAQJhagAEAmJ6CQEBegIFAmFWCQECYWwABAJkZwMJAGYCBQJiegUGaGVpZ2h0AAAJAGUCBQZoZWlnaHQFAmJ6BAJkaAkAawMJAGgCBQJkZgUCZGcFAmJ5BQFmBAJkaQkAawMFAmRoBQJibwUCYncEAmRqCQECYlEEBQJhcQUCYXAFAmJ0AAAEAmNhCAUCZGoCXzEEAmN3CAUCZGoCXzIEAmJQCAUCZGoCXzMEAmNCCQCYAwEJAMwIAgkAuAICBQJjYQUCY3oJAMwIAgUBZwUDbmlsBAJkawkBAWkBCQD8BwQFAmFXAhRjbGFpbVd4Qm9vc3RSRUFET05MWQkAzAgCBQJhcQkAzAgCBQJhcAUDbmlsBQNuaWwEAmNNCQCWAwEJAMwIAgkBAW0BCQCRAwIFAmRrAAAJAMwIAgAABQNuaWwEAmRsCQEBbwEJAJEDAgUCZGsAAQQCY04FAmNCBAJjTwkAmQMBCQDMCAIJALkCAgUCY04JALYCAQACCQDMCAIJALYCAQUCY00FA25pbAQCY1AJALcCAgUCY04FAmNPCQCUCgIFA25pbAkAuQkCCQDMCAICDiVzJXMlZCVkJWQlZCVzCQDMCAIFAmFxCQDMCAIFAmFwCQDMCAIJAKYDAQUCY1AJAMwIAgkApgMBBQJjegkAzAgCCQCmAwEFAmNOCQDMCAIJAKYDAQUCY08JAMwIAgIEc29vbgUDbmlsBQFlAmNoARRzdGFrZWRCeVVzZXJSRUFET05MWQICYXECYXAEAmJvCQELdmFsdWVPckVsc2UCCQCfCAEJAQJhbwIFAmFwBQJhcQAACQCUCgIFA25pbAUCYm8CY2gBEnVzZXJzTGlzdFRyYXZlcnNhbAECYXkEAmNsAwkAAAIJANgEAQgIBQJjaAZjYWxsZXIFYnl0ZXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBAUoAAgAGCQECY2kBBQJjaAMJAAACBQJjbAUCY2wEAmJhCQECYVkBBQJheQQCZG0JAKIIAQkBAmFYAQUCYXkEAmJnCQCiCAEJAQJhWgEFAmJhBAFrBQJkbQMJAAECBQFrAgRVbml0BAJkbgUCYmcDCQABAgUCZG4CBFVuaXQJAJQKAgUDbmlsBwMJAAECBQJkbgIGU3RyaW5nBAJkbwUCZG4JAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYVgBBQJheQUCZG8FA25pbAYJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQFrAgZTdHJpbmcEAmFBBQFrBAJjegkBAUECBQR0aGlzCQECYXMCBQJheQUCYUEEAmNBCQEBdgIFAmFVCQEBWgEFAmF5BAJjYQgJAQJiUQQFAmF5BQJhQQUCY0EAAAJfMQQCY0IJALgCAgUCY2EFAmN6BAJjQwMJAL8CAgUCY0IFAWcJAPwHBAUEdGhpcwIPY2xhaW1XeElOVEVSTkFMCQDMCAIFAmF5CQDMCAIFAmFBBQNuaWwFA25pbAUEdW5pdAMJAAACBQJjQwUCY0MEAmRwCQCiCAEJAQJiZQIFAmJhBQJhQQQCZG4FAmRwAwkAAQIFAmRuAgRVbml0CQCUCgIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFYAQUCYXkFA25pbAcDCQABAgUCZG4CBlN0cmluZwQCZHEFAmRuCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFYAQUCYXkFAmRxBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAgtNYXRjaCBlcnJvcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjaAEOb25Nb2RpZnlXZWlnaHQCAmFxAmJ0AwkBAiE9AggFAmNoBmNhbGxlcgUCYVUJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQEAmRyCQECYnMDBQJhcQUCYnQAAAQCYnEIBQJkcgJfMQQCYlMIBQJkcgJfMgQCYlQIBQJkcgJfMwUCYlMBAmRzAQJkdAAEAmR1BAFrCQECY2QAAwkAAQIFAWsCCkJ5dGVWZWN0b3IEAmNqBQFrBQJjagMJAAECBQFrAgRVbml0CAUCZHMPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAmRzCWJvZHlCeXRlcwkAkQMCCAUCZHMGcHJvb2ZzAAAFAmR1kZKhHQ==", "chainId": 84, "height": 2398741, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3Adz2Z3Gx2wiayttL1ZbLMg9FNLVhfsZuk637xtAiAjq Next: F1oBvTs18H2YgSScwShQXLA78svUppEnrK1umnd5MEpW Diff:
OldNewDifferences
596596 let cM = max([m(i(invoke(aW, "claimWxBoost", [aq, ap], nil))[0]), 0])
597597 let cN = cB
598598 let cO = min([(cN * toBigInt(2)), toBigInt(cM)])
599- let cP = q(i(invoke(aV, "emit", [toInt(cN)], nil))[0])
600- let cQ = i(invoke(aV, "emit", [toInt(cO)], nil))
601- if ((cQ == cQ))
599+ let cP = (cN + cO)
600+ let cQ = q(i(invoke(aV, "emit", [toInt(cN)], nil))[0])
601+ let cR = i(invoke(aV, "emit", [toInt(cO)], nil))
602+ if ((cR == cR))
602603 then {
603- let cR = (cz + cB)
604- let cS = (cI + cN)
604+ let cS = (cz + cB)
605605 let cT = (cI + cN)
606606 let cU = (cI + cN)
607-[StringEntry(cE, toString(cR)), StringEntry(cG, toString(cS)), StringEntry(cH, toString(cT)), StringEntry(cF, toString(cU)), ScriptTransfer(aA, toInt(cN), cP), ScriptTransfer(aA, toInt(cO), cP), aR("claim", ap, aq, toInt(cB), ch.transactionId)]
607+ let cV = (cI + cN)
608+ $Tuple2([StringEntry(cE, toString(cS)), StringEntry(cG, toString(cT)), StringEntry(cH, toString(cU)), StringEntry(cF, toString(cV)), ScriptTransfer(aA, toInt(cN), cQ), ScriptTransfer(aA, toInt(cO), cQ), aR("claim", ap, aq, toInt(cB), ch.transactionId)], cP)
608609 }
609610 else throw("Strict value is not equal to itself.")
610611 }
615616
616617
617618 @Callable(ch)
618-func claimWxBulkInternalREADONLY (cV,cW,ap,cX) = if ((cV == size(cW)))
619- then $Tuple2(nil, cX)
619+func claimWxBulkInternalREADONLY (cW,cX,ap,cY) = if ((cW == size(cX)))
620+ then $Tuple2(nil, cY)
620621 else {
621- let ay = cW[cV]
622- let cY = split({
623- let cZ = invoke(this, "claimWxREADONLY", [ay, ap], nil)
624- if ($isInstanceOf(cZ, "String"))
625- then cZ
626- else throw(($getType(cZ) + " couldn't be cast to String"))
622+ let ay = cX[cW]
623+ let cZ = split({
624+ let da = invoke(this, "claimWxREADONLY", [ay, ap], nil)
625+ if ($isInstanceOf(da, "String"))
626+ then da
627+ else throw(($getType(da) + " couldn't be cast to String"))
627628 }, e)
628- let da = cY[3]
629- let db = cY[4]
630- let dc = (cX :+ makeString(["%d%d", da, db], e))
631- let dd = {
632- let cZ = invoke(this, "claimWxBulkInternalREADONLY", [(cV + 1), cW, ap, dc], nil)
633- if ($isInstanceOf(cZ, "List[Any]"))
634- then cZ
635- else throw(($getType(cZ) + " couldn't be cast to List[Any]"))
629+ let db = cZ[3]
630+ let dc = cZ[4]
631+ let dd = (cY :+ makeString(["%d%d", db, dc], e))
632+ let de = {
633+ let da = invoke(this, "claimWxBulkInternalREADONLY", [(cW + 1), cX, ap, dd], nil)
634+ if ($isInstanceOf(da, "List[Any]"))
635+ then da
636+ else throw(($getType(da) + " couldn't be cast to List[Any]"))
636637 }
637- if ((dd == dd))
638- then $Tuple2(nil, dd)
638+ if ((de == de))
639+ then $Tuple2(nil, de)
639640 else throw("Strict value is not equal to itself.")
640641 }
641642
642643
643644
644645 @Callable(ch)
645-func claimWxBulkREADONLY (cW,ap) = {
646- let dc = invoke(this, "claimWxBulkInternalREADONLY", [0, cW, ap, nil], nil)
647- $Tuple2(nil, dc)
646+func claimWxBulkREADONLY (cX,ap) = {
647+ let dd = invoke(this, "claimWxBulkInternalREADONLY", [0, cX, ap, nil], nil)
648+ $Tuple2(nil, dd)
648649 }
649650
650651
659660 let cz = A(this, cE)
660661 let bt = v(aU, Z(aq))
661662 let by = getIntegerValue(aU, aa(bt))
662- let de = z(aV, aj())
663+ let df = z(aV, aj())
663664 let bz = z(aV, al())
664- let df = if ((bz > height))
665+ let dg = if ((bz > height))
665666 then 0
666667 else (height - bz)
667- let dg = fraction((de * df), by, f)
668- let dh = fraction(dg, bo, bw)
669- let di = bQ(aq, ap, bt, 0)
670- let ca = di._1
671- let cw = di._2
672- let bP = di._3
668+ let dh = fraction((df * dg), by, f)
669+ let di = fraction(dh, bo, bw)
670+ let dj = bQ(aq, ap, bt, 0)
671+ let ca = dj._1
672+ let cw = dj._2
673+ let bP = dj._3
673674 let cB = max([(ca - cz), g])
674- let dj = i(invoke(aW, "claimWxBoostREADONLY", [aq, ap], nil))
675- let cM = max([m(dj[0]), 0])
676- let dk = o(dj[1])
675+ let dk = i(invoke(aW, "claimWxBoostREADONLY", [aq, ap], nil))
676+ let cM = max([m(dk[0]), 0])
677+ let dl = o(dk[1])
677678 let cN = cB
678679 let cO = min([(cN * toBigInt(2)), toBigInt(cM)])
679- let dl = (cN + cO)
680- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", aq, ap, toString(dl), toString(cz), toString(cN), toString(cO), "soon"], e))
680+ let cP = (cN + cO)
681+ $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", aq, ap, toString(cP), toString(cz), toString(cN), toString(cO), "soon"], e))
682+ }
683+
684+
685+
686+@Callable(ch)
687+func stakedByUserREADONLY (aq,ap) = {
688+ let bo = valueOrElse(getInteger(ao(ap, aq)), 0)
689+ $Tuple2(nil, bo)
681690 }
682691
683692
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = 18
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = "__"
1313
1414 let f = b
1515
1616 let g = toBigInt(0)
1717
1818 let h = toBigInt(1)
1919
2020 func i (j) = {
2121 let k = j
2222 if ($isInstanceOf(k, "List[Any]"))
2323 then {
2424 let l = k
2525 l
2626 }
2727 else throw("fail to cast into List[Any]")
2828 }
2929
3030
3131 func m (j) = {
3232 let k = j
3333 if ($isInstanceOf(k, "Int"))
3434 then {
3535 let n = k
3636 n
3737 }
3838 else throw("fail to cast into Int")
3939 }
4040
4141
4242 func o (j) = {
4343 let k = j
4444 if ($isInstanceOf(k, "String"))
4545 then {
4646 let p = k
4747 p
4848 }
4949 else throw("fail to cast into Int")
5050 }
5151
5252
5353 func q (j) = {
5454 let k = j
5555 if ($isInstanceOf(k, "ByteVector"))
5656 then {
5757 let r = k
5858 r
5959 }
6060 else throw("fail to cast into Int")
6161 }
6262
6363
6464 func s (t,u) = valueOrErrorMessage(getString(t, u), (("mandatory this." + u) + " is not defined"))
6565
6666
6767 func v (t,u) = valueOrErrorMessage(getString(t, u), (((("mandatory " + toString(t)) + ".") + u) + " is not defined"))
6868
6969
7070 func w (t,u) = valueOrElse(getInteger(t, u), 0)
7171
7272
7373 func x (t,u,y) = valueOrElse(getInteger(t, u), y)
7474
7575
7676 func z (t,u) = valueOrErrorMessage(getInteger(t, u), (("mandatory this." + u) + " is not defined"))
7777
7878
7979 func A (t,u) = value(parseBigInt(valueOrElse(getString(t, u), "0")))
8080
8181
8282 func B (t,u,y) = {
8383 let k = getString(t, u)
8484 if ($isInstanceOf(k, "String"))
8585 then {
8686 let C = k
8787 value(parseBigInt(C))
8888 }
8989 else if ($isInstanceOf(k, "Unit"))
9090 then y
9191 else throw("Match error")
9292 }
9393
9494
9595 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
9696
9797
9898 func G (j,H) = toInt(fraction(j, toBigInt(H), d))
9999
100100
101101 func I () = "%s%s__config__factoryAddress"
102102
103103
104104 func J () = "%s__votingEmissionContract"
105105
106106
107107 let K = 1
108108
109109 let L = 2
110110
111111 let M = 3
112112
113113 let N = 4
114114
115115 let O = 5
116116
117117 let P = 6
118118
119119 let Q = 7
120120
121121 func R () = "%s__factoryConfig"
122122
123123
124124 func S () = "%s__managerPublicKey"
125125
126126
127127 func T () = "%s__pendingManagerPublicKey"
128128
129129
130130 func U () = "%s__stablePoolAddonAddr"
131131
132132
133133 func V () = "%s__addonAddr"
134134
135135
136136 func W (X) = makeString(["%s%s%s", X, "mappings__lpAsset2PoolContract"], e)
137137
138138
139139 func Y () = "%s__lpTokensList"
140140
141141
142142 func Z (X) = makeString(["%s%s%s", X, "mappings__lpAsset2PoolContract"], e)
143143
144144
145145 func aa (ab) = makeString(["%s%s", "poolWeight", ab], e)
146146
147147
148148 func ac (ad) = split(valueOrElse(getString(ad, Y()), ""), e)
149149
150150
151151 func ae (ad) = split(v(ad, R()), e)
152152
153153
154154 func af (ag) = addressFromStringValue(ag[L])
155155
156156
157157 func ah (ag) = addressFromStringValue(ag[O])
158158
159159
160160 func ai (ag) = addressFromStringValue(ag[K])
161161
162162
163163 func aj () = "%s%s__ratePerBlock__current"
164164
165165
166166 func ak () = "%s%s__ratePerBlockMax__current"
167167
168168
169169 func al () = "%s%s__emission__startBlock"
170170
171171
172172 func am () = "%s%s__emission__duration"
173173
174174
175175 func an () = "%s%s__emission__endBlock"
176176
177177
178178 func ao (ap,aq) = makeString(["%s%s%s__staked", ap, aq], e)
179179
180180
181181 func ar (aq) = ("%s%s%s__staked__total__" + aq)
182182
183183
184184 func as (aq,ap) = makeString(["%s%s%s__claimed", ap, aq], e)
185185
186186
187187 func at (aq,ap) = makeString(["%s%s%s__claimedMinReward", ap, aq], e)
188188
189189
190190 func au (aq,ap) = makeString(["%s%s%s__claimedBoostReward", ap, aq], e)
191191
192192
193193 func av (aq) = makeString(["%s%s%s__claimed__total", aq], e)
194194
195195
196196 func aw (u) = valueOrElse(getInteger(this, u), 0)
197197
198198
199199 func ax (ay) = makeString(["%s%s%s", ay, "total", "bal"], e)
200200
201201
202202 func az (ay,aA) = makeString(["%s%s%s", ay, aA, "bal"], e)
203203
204204
205205 func aB (ay) = makeString(["%s%s%s", ay, "total", "balINT"], e)
206206
207207
208208 func aC (ay,aA) = makeString(["%s%s%s", ay, aA, "balINT"], e)
209209
210210
211211 func aD (ay) = makeString(["%s%s%s", ay, "total", "lastUpd"], e)
212212
213213
214214 func aE (ay,aA) = makeString(["%s%s%s", ay, aA, "lastUpd"], e)
215215
216216
217217 func aF (ay) = makeString(["%s%s%s%s", ay, "common", "lpInt"], e)
218218
219219
220220 func aG (ay) = makeString(["%s%s%s%s", ay, "common", "lpIntH"], e)
221221
222222
223223 func aH (ay,aA) = makeString(["%s%s%s%s", ay, aA, "lpInt"], e)
224224
225225
226226 func aI (ay,aA) = makeString(["%s%s%s%s", ay, aA, "lpIntH"], e)
227227
228228
229229 func aJ (ay) = makeString(["%s", ay, "wxPerLp"], e)
230230
231231
232232 func aK (ay) = makeString(["%s", ay, "wxPerLpX18"], e)
233233
234234
235235 func aL (ay,aA) = makeString(["%s%s%s%s", ay, aA, "uIntL"], e)
236236
237237
238238 func aM (aN,aA,aO) = makeString(["%s%s%s%s__history", aN, aA, aO], e)
239239
240240
241241 func aP (aA,ay,aN,aQ) = makeString(["%s%s%s%d%d%d", aA, ay, aN, toString(height), toString(lastBlock.timestamp), toString(aQ)], e)
242242
243243
244244 func aR (aN,aA,ay,aQ,aS) = StringEntry(aM(aN, aA, toBase58String(aS)), aP(aA, ay, aN, aQ))
245245
246246
247247 let aT = s(this, I())
248248
249249 let aU = addressFromStringValue(aT)
250250
251251 let ag = ae(aU)
252252
253253 let aV = ah(ag)
254254
255255 let aW = af(ag)
256256
257257 func aX (ay) = makeString(["%s%s", ay, "nextUser"], e)
258258
259259
260260 func aY (ay) = makeString(["users", ay], e)
261261
262262
263263 func aZ (ba) = makeString(["%s%s%s", ba, "head"], e)
264264
265265
266266 func bb (ba) = makeString(["%s%s%s", ba, "size"], e)
267267
268268
269269 func bc (ba,bd) = makeString(["%s%s%s%s", ba, bd, "prev"], e)
270270
271271
272272 func be (ba,bd) = makeString(["%s%s%s%s", ba, bd, "next"], e)
273273
274274
275275 func bf (ba,bd) = {
276276 let bg = getString(this, aZ(ba))
277277 let bh = getString(this, bc(ba, bd))
278278 let bi = getString(this, be(ba, bd))
279279 if (if ((bd == valueOrElse(bg, "")))
280280 then true
281281 else (bh != unit))
282282 then true
283283 else (bi != unit)
284284 }
285285
286286
287287 func bj (ba,bd) = {
288288 let bg = getString(this, aZ(ba))
289289 let bk = valueOrElse(getInteger(this, bb(ba)), 0)
290290 let bl = if (!(bf(ba, bd)))
291291 then true
292292 else throw("Node exists")
293293 if ((bl == bl))
294294 then (([IntegerEntry(bb(ba), (bk + 1))] ++ (if ((bg != unit))
295295 then [StringEntry(be(ba, bd), value(bg)), StringEntry(bc(ba, value(bg)), bd)]
296296 else nil)) ++ [StringEntry(aZ(ba), bd)])
297297 else throw("Strict value is not equal to itself.")
298298 }
299299
300300
301301 func bm (ba,bd) = {
302302 let bg = getString(this, aZ(ba))
303303 let bk = valueOrElse(getInteger(this, bb(ba)), 0)
304304 let bh = getString(this, bc(ba, bd))
305305 let bi = getString(this, be(ba, bd))
306306 ([IntegerEntry(bb(ba), (bk - 1))] ++ (if (if ((bh != unit))
307307 then (bi != unit)
308308 else false)
309309 then [StringEntry(be(ba, value(bh)), value(bi)), StringEntry(bc(ba, value(bi)), value(bh)), DeleteEntry(bc(ba, bd)), DeleteEntry(be(ba, bd))]
310310 else if ((bi != unit))
311311 then [StringEntry(aZ(ba), value(bi)), DeleteEntry(be(ba, bd)), DeleteEntry(bc(ba, value(bi)))]
312312 else if ((bh != unit))
313313 then [DeleteEntry(bc(ba, bd)), DeleteEntry(be(ba, value(bh)))]
314314 else if ((bd == valueOrElse(bg, "")))
315315 then [DeleteEntry(aZ(ba))]
316316 else throw(((("invalid node: " + ba) + ".") + bd))))
317317 }
318318
319319
320320 func bn (bo,bp,bq,br) = if (if ((bp == g))
321321 then (bo > g)
322322 else false)
323323 then g
324324 else if ((bo == g))
325325 then bq
326326 else if (if ((bp > g))
327327 then (bo > g)
328328 else false)
329329 then value(parseBigInt(s(this, br)))
330330 else throw("calcWxPerLpIntegralUserLast: unexpected state")
331331
332332
333333 func bs (aq,bt,bu) = {
334334 let bv = ar(aq)
335335 let bw = toBigInt(aw(bv))
336336 let bx = if ((bw == g))
337337 then h
338338 else bw
339339 let by = getIntegerValue(aU, aa(bt))
340340 let bz = z(aV, al())
341341 let bA = 1000
342342 let bB = (z(aV, aj()) * bA)
343343 let bC = fraction(bB, by, (f * 3))
344344 let bD = aF(aq)
345345 let bE = aG(aq)
346346 let bF = aJ(aq)
347347 let bG = x(this, bE, bz)
348348 let bH = A(this, bD)
349349 let bI = 0
350350 let bJ = max([(height - bG), 0])
351351 let bK = if ((bI != 0))
352352 then toBigInt(bI)
353353 else fraction(toBigInt(bC), toBigInt(b), bx)
354354 let bL = (bw + toBigInt(bu))
355355 let bM = if ((bL == g))
356356 then h
357357 else bL
358358 let bq = (bH + (bK * toBigInt(bJ)))
359359 let bN = (toBigInt(bC) / bM)
360360 let bO = height
361361 let bP = makeString([toString(bq), toString(bJ), toString(bK), toString(bw), toString(bC), toString(bB), toString(by)], "::")
362362 $Tuple3(bq, [StringEntry(bD, toString(bq)), IntegerEntry(bE, bO), StringEntry(bF, toString(bN))], bP)
363363 }
364364
365365
366366 func bQ (aq,ap,bt,bu) = {
367367 let bR = bs(aq, bt, bu)
368368 let bq = bR._1
369369 let bS = bR._2
370370 let bT = bR._3
371371 let bA = 1000
372372 let bU = ao(ap, aq)
373373 let bo = aw(bU)
374374 let bV = aH(aq, ap)
375375 let bW = aI(aq, ap)
376376 let br = aL(aq, ap)
377377 let bX = A(this, bV)
378378 let bp = w(this, bW)
379379 let bY = bn(toBigInt(bo), toBigInt(bp), bq, br)
380380 let bZ = (b * bA)
381381 let ca = max([(bX + fraction((bq - bY), toBigInt(bo), toBigInt(bZ))), g])
382382 let cb = bq
383383 let cc = height
384384 let bP = makeString([toString(bX), toString(bY), toString(bo), bT, toString(height)], "::")
385385 $Tuple3(ca, (bS ++ [StringEntry(bV, toString(ca)), IntegerEntry(bW, cc), StringEntry(br, toString(cb))]), bP)
386386 }
387387
388388
389389 func cd () = {
390390 let k = getString(S())
391391 if ($isInstanceOf(k, "String"))
392392 then {
393393 let C = k
394394 fromBase58String(C)
395395 }
396396 else if ($isInstanceOf(k, "Unit"))
397397 then unit
398398 else throw("Match error")
399399 }
400400
401401
402402 func ce () = {
403403 let k = getString(T())
404404 if ($isInstanceOf(k, "String"))
405405 then {
406406 let C = k
407407 fromBase58String(C)
408408 }
409409 else if ($isInstanceOf(k, "Unit"))
410410 then unit
411411 else throw("Match error")
412412 }
413413
414414
415415 let cf = throw("Permission denied")
416416
417417 func cg (ch) = if ((ch.caller == this))
418418 then true
419419 else cf
420420
421421
422422 func ci (ch) = {
423423 let k = cd()
424424 if ($isInstanceOf(k, "ByteVector"))
425425 then {
426426 let cj = k
427427 if ((ch.callerPublicKey == cj))
428428 then true
429429 else cf
430430 }
431431 else if ($isInstanceOf(k, "Unit"))
432432 then if ((ch.caller == this))
433433 then true
434434 else cf
435435 else throw("Match error")
436436 }
437437
438438
439439 @Callable(ch)
440440 func constructor (ck) = {
441441 let cl = ci(ch)
442442 if ((cl == cl))
443443 then [StringEntry(I(), ck)]
444444 else throw("Strict value is not equal to itself.")
445445 }
446446
447447
448448
449449 @Callable(ch)
450450 func constructorV2 (cm) = {
451451 let cn = [ci(ch), if ((addressFromString(cm) != unit))
452452 then true
453453 else "invalid voting emission contract address"]
454454 if ((cn == cn))
455455 then [StringEntry(J(), cm)]
456456 else throw("Strict value is not equal to itself.")
457457 }
458458
459459
460460
461461 @Callable(ch)
462462 func setManager (co) = {
463463 let cl = ci(ch)
464464 if ((cl == cl))
465465 then {
466466 let cp = fromBase58String(co)
467467 if ((cp == cp))
468468 then [StringEntry(T(), co)]
469469 else throw("Strict value is not equal to itself.")
470470 }
471471 else throw("Strict value is not equal to itself.")
472472 }
473473
474474
475475
476476 @Callable(ch)
477477 func confirmManager () = {
478478 let cq = ce()
479479 let cr = if (isDefined(cq))
480480 then true
481481 else throw("No pending manager")
482482 if ((cr == cr))
483483 then {
484484 let cs = if ((ch.callerPublicKey == value(cq)))
485485 then true
486486 else throw("You are not pending manager")
487487 if ((cs == cs))
488488 then [StringEntry(S(), toBase58String(value(cq))), DeleteEntry(T())]
489489 else throw("Strict value is not equal to itself.")
490490 }
491491 else throw("Strict value is not equal to itself.")
492492 }
493493
494494
495495
496496 @Callable(ch)
497497 func stake () = if ((size(ch.payments) != 1))
498498 then throw("invalid payment - exact one payment must be attached")
499499 else {
500500 let ct = ch.payments[0]
501501 let ay = value(ct.assetId)
502502 let aq = toBase58String(ay)
503503 let aQ = ct.amount
504504 let bt = valueOrErrorMessage(getString(aU, W(aq)), ("unsupported lp asset " + aq))
505505 let cu = toString(ch.caller)
506506 let ap = if ((cu == bt))
507507 then toString(ch.originCaller)
508508 else cu
509509 let bU = ao(ap, aq)
510510 let bv = ar(aq)
511511 let bo = aw(bU)
512512 let bw = aw(bv)
513513 let cv = bQ(aq, ap, bt, aQ)
514514 let ca = cv._1
515515 let cw = cv._2
516516 let bP = cv._3
517517 let ba = aY(aq)
518518 let cx = if (bf(ba, ap))
519519 then nil
520520 else bj(ba, ap)
521521 (([IntegerEntry(bU, (bo + aQ)), IntegerEntry(bv, (bw + aQ)), aR("stake", ap, aq, aQ, ch.transactionId)] ++ cw) ++ cx)
522522 }
523523
524524
525525
526526 @Callable(ch)
527527 func unstake (aq,aQ) = {
528528 let ay = fromBase58String(aq)
529529 let bt = valueOrErrorMessage(getString(aU, W(aq)), ("unsupported lp asset " + aq))
530530 let cy = valueOrElse(getString(addressFromStringValue(bt), V()), bt)
531531 let cu = toString(ch.caller)
532532 let ap = if (if ((cu == bt))
533533 then true
534534 else (cu == cy))
535535 then toString(ch.originCaller)
536536 else cu
537537 let bU = ao(ap, aq)
538538 let bv = ar(aq)
539539 let bo = aw(bU)
540540 let bw = aw(bv)
541541 let cw = bQ(aq, ap, bt, -(aQ))._2
542542 let ba = aY(aq)
543543 let cx = if (if (bf(ba, ap))
544544 then (aQ == bo)
545545 else false)
546546 then bm(ba, ap)
547547 else nil
548548 let cz = A(this, as(aq, ap))
549549 let cA = v(aU, Z(aq))
550550 let ca = bQ(aq, ap, cA, 0)._1
551551 let cB = (ca - cz)
552552 let cC = if ((cB > g))
553553 then invoke(this, "claimWxINTERNAL", [aq, ap], nil)
554554 else unit
555555 if ((cC == cC))
556556 then if ((aQ > bo))
557557 then throw(((((((("passed amount=" + toString(aQ)) + " is greater than available=") + toString(bo)) + ". lpAssetId=") + aq) + ". stakedByUserKEY=") + bU))
558558 else (([IntegerEntry(bU, (bo - aQ)), IntegerEntry(bv, (bw - aQ)), ScriptTransfer(ch.caller, aQ, ay), aR("unstake", ap, aq, aQ, ch.transactionId)] ++ cw) ++ cx)
559559 else throw("Strict value is not equal to itself.")
560560 }
561561
562562
563563
564564 @Callable(ch)
565565 func claimWx (aq) = {
566566 let ap = toString(ch.caller)
567567 let cD = invoke(this, "claimWxINTERNAL", [aq, ap], nil)
568568 $Tuple2(nil, cD)
569569 }
570570
571571
572572
573573 @Callable(ch)
574574 func claimWxINTERNAL (aq,ap) = {
575575 let cl = cg(ch)
576576 if ((cl == cl))
577577 then {
578578 let aA = valueOrErrorMessage(addressFromString(ap), "claimWxINTERNAL: invalid user address")
579579 let bt = v(aU, Z(aq))
580580 let cE = as(aq, ap)
581581 let cF = av(aq)
582582 let cG = at(aq, ap)
583583 let cH = au(aq, ap)
584584 let cz = A(this, cE)
585585 let cI = A(this, cG)
586586 let cJ = A(this, cH)
587587 let cK = A(this, cF)
588588 let cL = bQ(aq, ap, bt, 0)
589589 let ca = cL._1
590590 let cw = cL._2
591591 let bP = cL._3
592592 let cB = max([(ca - cz), g])
593593 if ((g >= cB))
594594 then throw("nothing to claim")
595595 else {
596596 let cM = max([m(i(invoke(aW, "claimWxBoost", [aq, ap], nil))[0]), 0])
597597 let cN = cB
598598 let cO = min([(cN * toBigInt(2)), toBigInt(cM)])
599- let cP = q(i(invoke(aV, "emit", [toInt(cN)], nil))[0])
600- let cQ = i(invoke(aV, "emit", [toInt(cO)], nil))
601- if ((cQ == cQ))
599+ let cP = (cN + cO)
600+ let cQ = q(i(invoke(aV, "emit", [toInt(cN)], nil))[0])
601+ let cR = i(invoke(aV, "emit", [toInt(cO)], nil))
602+ if ((cR == cR))
602603 then {
603- let cR = (cz + cB)
604- let cS = (cI + cN)
604+ let cS = (cz + cB)
605605 let cT = (cI + cN)
606606 let cU = (cI + cN)
607-[StringEntry(cE, toString(cR)), StringEntry(cG, toString(cS)), StringEntry(cH, toString(cT)), StringEntry(cF, toString(cU)), ScriptTransfer(aA, toInt(cN), cP), ScriptTransfer(aA, toInt(cO), cP), aR("claim", ap, aq, toInt(cB), ch.transactionId)]
607+ let cV = (cI + cN)
608+ $Tuple2([StringEntry(cE, toString(cS)), StringEntry(cG, toString(cT)), StringEntry(cH, toString(cU)), StringEntry(cF, toString(cV)), ScriptTransfer(aA, toInt(cN), cQ), ScriptTransfer(aA, toInt(cO), cQ), aR("claim", ap, aq, toInt(cB), ch.transactionId)], cP)
608609 }
609610 else throw("Strict value is not equal to itself.")
610611 }
611612 }
612613 else throw("Strict value is not equal to itself.")
613614 }
614615
615616
616617
617618 @Callable(ch)
618-func claimWxBulkInternalREADONLY (cV,cW,ap,cX) = if ((cV == size(cW)))
619- then $Tuple2(nil, cX)
619+func claimWxBulkInternalREADONLY (cW,cX,ap,cY) = if ((cW == size(cX)))
620+ then $Tuple2(nil, cY)
620621 else {
621- let ay = cW[cV]
622- let cY = split({
623- let cZ = invoke(this, "claimWxREADONLY", [ay, ap], nil)
624- if ($isInstanceOf(cZ, "String"))
625- then cZ
626- else throw(($getType(cZ) + " couldn't be cast to String"))
622+ let ay = cX[cW]
623+ let cZ = split({
624+ let da = invoke(this, "claimWxREADONLY", [ay, ap], nil)
625+ if ($isInstanceOf(da, "String"))
626+ then da
627+ else throw(($getType(da) + " couldn't be cast to String"))
627628 }, e)
628- let da = cY[3]
629- let db = cY[4]
630- let dc = (cX :+ makeString(["%d%d", da, db], e))
631- let dd = {
632- let cZ = invoke(this, "claimWxBulkInternalREADONLY", [(cV + 1), cW, ap, dc], nil)
633- if ($isInstanceOf(cZ, "List[Any]"))
634- then cZ
635- else throw(($getType(cZ) + " couldn't be cast to List[Any]"))
629+ let db = cZ[3]
630+ let dc = cZ[4]
631+ let dd = (cY :+ makeString(["%d%d", db, dc], e))
632+ let de = {
633+ let da = invoke(this, "claimWxBulkInternalREADONLY", [(cW + 1), cX, ap, dd], nil)
634+ if ($isInstanceOf(da, "List[Any]"))
635+ then da
636+ else throw(($getType(da) + " couldn't be cast to List[Any]"))
636637 }
637- if ((dd == dd))
638- then $Tuple2(nil, dd)
638+ if ((de == de))
639+ then $Tuple2(nil, de)
639640 else throw("Strict value is not equal to itself.")
640641 }
641642
642643
643644
644645 @Callable(ch)
645-func claimWxBulkREADONLY (cW,ap) = {
646- let dc = invoke(this, "claimWxBulkInternalREADONLY", [0, cW, ap, nil], nil)
647- $Tuple2(nil, dc)
646+func claimWxBulkREADONLY (cX,ap) = {
647+ let dd = invoke(this, "claimWxBulkInternalREADONLY", [0, cX, ap, nil], nil)
648+ $Tuple2(nil, dd)
648649 }
649650
650651
651652
652653 @Callable(ch)
653654 func claimWxREADONLY (aq,ap) = {
654655 let bU = ao(ap, aq)
655656 let bv = ar(aq)
656657 let cE = as(aq, ap)
657658 let bo = aw(bU)
658659 let bw = aw(bv)
659660 let cz = A(this, cE)
660661 let bt = v(aU, Z(aq))
661662 let by = getIntegerValue(aU, aa(bt))
662- let de = z(aV, aj())
663+ let df = z(aV, aj())
663664 let bz = z(aV, al())
664- let df = if ((bz > height))
665+ let dg = if ((bz > height))
665666 then 0
666667 else (height - bz)
667- let dg = fraction((de * df), by, f)
668- let dh = fraction(dg, bo, bw)
669- let di = bQ(aq, ap, bt, 0)
670- let ca = di._1
671- let cw = di._2
672- let bP = di._3
668+ let dh = fraction((df * dg), by, f)
669+ let di = fraction(dh, bo, bw)
670+ let dj = bQ(aq, ap, bt, 0)
671+ let ca = dj._1
672+ let cw = dj._2
673+ let bP = dj._3
673674 let cB = max([(ca - cz), g])
674- let dj = i(invoke(aW, "claimWxBoostREADONLY", [aq, ap], nil))
675- let cM = max([m(dj[0]), 0])
676- let dk = o(dj[1])
675+ let dk = i(invoke(aW, "claimWxBoostREADONLY", [aq, ap], nil))
676+ let cM = max([m(dk[0]), 0])
677+ let dl = o(dk[1])
677678 let cN = cB
678679 let cO = min([(cN * toBigInt(2)), toBigInt(cM)])
679- let dl = (cN + cO)
680- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", aq, ap, toString(dl), toString(cz), toString(cN), toString(cO), "soon"], e))
680+ let cP = (cN + cO)
681+ $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", aq, ap, toString(cP), toString(cz), toString(cN), toString(cO), "soon"], e))
682+ }
683+
684+
685+
686+@Callable(ch)
687+func stakedByUserREADONLY (aq,ap) = {
688+ let bo = valueOrElse(getInteger(ao(ap, aq)), 0)
689+ $Tuple2(nil, bo)
681690 }
682691
683692
684693
685694 @Callable(ch)
686695 func usersListTraversal (ay) = {
687696 let cl = if ((toBase58String(ch.caller.bytes) == valueOrElse(getString(this, J()), "")))
688697 then true
689698 else ci(ch)
690699 if ((cl == cl))
691700 then {
692701 let ba = aY(ay)
693702 let dm = getString(aX(ay))
694703 let bg = getString(aZ(ba))
695704 let k = dm
696705 if ($isInstanceOf(k, "Unit"))
697706 then {
698707 let dn = bg
699708 if ($isInstanceOf(dn, "Unit"))
700709 then $Tuple2(nil, false)
701710 else if ($isInstanceOf(dn, "String"))
702711 then {
703712 let do = dn
704713 $Tuple2([StringEntry(aX(ay), do)], true)
705714 }
706715 else throw("Match error")
707716 }
708717 else if ($isInstanceOf(k, "String"))
709718 then {
710719 let aA = k
711720 let cz = A(this, as(ay, aA))
712721 let cA = v(aU, Z(ay))
713722 let ca = bQ(ay, aA, cA, 0)._1
714723 let cB = (ca - cz)
715724 let cC = if ((cB > g))
716725 then invoke(this, "claimWxINTERNAL", [ay, aA], nil)
717726 else unit
718727 if ((cC == cC))
719728 then {
720729 let dp = getString(be(ba, aA))
721730 let dn = dp
722731 if ($isInstanceOf(dn, "Unit"))
723732 then $Tuple2([DeleteEntry(aX(ay))], false)
724733 else if ($isInstanceOf(dn, "String"))
725734 then {
726735 let dq = dn
727736 $Tuple2([StringEntry(aX(ay), dq)], true)
728737 }
729738 else throw("Match error")
730739 }
731740 else throw("Strict value is not equal to itself.")
732741 }
733742 else throw("Match error")
734743 }
735744 else throw("Strict value is not equal to itself.")
736745 }
737746
738747
739748
740749 @Callable(ch)
741750 func onModifyWeight (aq,bt) = if ((ch.caller != aU))
742751 then throw("permissions denied")
743752 else {
744753 let dr = bs(aq, bt, 0)
745754 let bq = dr._1
746755 let bS = dr._2
747756 let bT = dr._3
748757 bS
749758 }
750759
751760
752761 @Verifier(ds)
753762 func dt () = {
754763 let du = {
755764 let k = cd()
756765 if ($isInstanceOf(k, "ByteVector"))
757766 then {
758767 let cj = k
759768 cj
760769 }
761770 else if ($isInstanceOf(k, "Unit"))
762771 then ds.senderPublicKey
763772 else throw("Match error")
764773 }
765774 sigVerify(ds.bodyBytes, ds.proofs[0], du)
766775 }
767776

github/deemru/w8io/fabc49c 
86.82 ms