tx · ECDRefMeK9T8XVnhUrxN6ca8E8mVNrFtpbBqrBre9Er1

3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy:  -0.02300000 Waves

2023.02.27 12:40 [2467949] smart account 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy > SELF 0.00000000 Waves

{ "type": 13, "id": "ECDRefMeK9T8XVnhUrxN6ca8E8mVNrFtpbBqrBre9Er1", "fee": 2300000, "feeAssetId": null, "timestamp": 1677490951400, "version": 1, "sender": "3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy", "senderPublicKey": "9W33iCCNfmFxUbiC6XZcH5x7f6xfwC7Jb3BoExT5q2PV", "proofs": [ "WgrEVQRmK6YBsTps8S51YaMPexKdBJYxo25PR96J35dq97wnzbToR3hYpgawkp47diubcYzT3KjAfFnnDkwtkAv" ], "script": "base64:BgLAJggCEggKBggIAQEBCBIFCgMBCAISAwoBARIDCgEBEgQKAggIEgQKAggIEgMKAQgSAwoBCBIDCgEIEgQKAggBEgASAwoBCBIAIgNTRVAiBlNDQUxFOCIFTVVMVDgiDlBPT0xXRUlHSFRNVUxUIgd3cmFwRXJyIgNtc2ciCHRocm93RXJyIgRzdHJmIgdhZGRyZXNzIgNrZXkiA2lveiIDaW9kIgpkZWZhdWx0VmFsIgNpb2YiA2FicyIDdmFsIgNhYWwiByRtYXRjaDAiCnZhbEFueUx5c3QiAmFpIgZ2YWxJbnQiG2tleVJlZmVycmFsc0NvbnRyYWN0QWRkcmVzcyIecmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzT3JGYWlsIhZrZXlSZWZlcnJhbFByb2dyYW1OYW1lIhpyZWZlcnJhbFByb2dyYW1OYW1lRGVmYXVsdCITcmVmZXJyYWxQcm9ncmFtTmFtZSIRa2V5RmFjdG9yeUFkZHJlc3MiGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcCIZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcCIUSWR4RmFjdG9yeUNmZ0lkb0RhcHAiFUlkeEZhY3RvcnlDZmdUZWFtRGFwcCIZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcCIVSWR4RmFjdG9yeUNmZ1Jlc3REYXBwIhlJZHhGYWN0b3J5Q2ZnU2xpcHBhZ2VEYXBwIhRJZHhGYWN0b3J5Q2ZnRGFvRGFwcCIaSWR4RmFjdG9yeUNmZ01hcmtldGluZ0RhcHAiGklkeEZhY3RvcnlDZmdHd3hSZXdhcmREYXBwIhZJZHhGYWN0b3J5Q2ZnQmlyZHNEYXBwIg1rZXlGYWN0b3J5Q2ZnIhprZXlGYWN0b3J5THAyQXNzZXRzTWFwcGluZyIKbHBBc3NldFN0ciIQa2V5RmFjdG9yeUxwTGlzdCIma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MiFGtleUZhY3RvcnlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiG2tleUZhY3RvcnlQb29sV2VpZ2h0SGlzdG9yeSILcG9vbEFkZHJlc3MiA251bSIYcmVhZEZhY3RvcnlBZGRyZXNzT3JGYWlsIgpyZWFkTHBMaXN0IhRyZWFkRmFjdG9yeUNmZ09yRmFpbCIHZmFjdG9yeSIYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsIgpmYWN0b3J5Q2ZnIhhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwiF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsIhlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsIhNrZXlNYW5hZ2VyUHVibGljS2V5IhprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleSIea2V5RW1pc3Npb25SYXRlUGVyQmxvY2tDdXJyZW50IiFrZXlFbWlzc2lvblJhdGVQZXJCbG9ja01heEN1cnJlbnQiFWtleUVtaXNzaW9uU3RhcnRCbG9jayIba2V5RW1pc3Npb25EdXJhdGlvbkluQmxvY2tzIhNrZXlFbWlzc2lvbkVuZEJsb2NrIg1rZXlOZXh0UGVyaW9kIh9rZXlHd3hSZXdhcmRFbWlzc2lvblN0YXJ0SGVpZ2h0Ig1JZHhDZmdBc3NldElkIhNJZHhDZmdNaW5Mb2NrQW1vdW50IhVJZHhDZmdNaW5Mb2NrRHVyYXRpb24iFUlkeENmZ01heExvY2tEdXJhdGlvbiISSWR4Q2ZnTWF0aENvbnRyYWN0IglrZXlDb25maWciFXJlYWRDb25maWdBcnJheU9yRmFpbCIMbWF0aENvbnRyYWN0Ig1mb3JtYXRDb25maWdTIgdhc3NldElkIg1taW5Mb2NrQW1vdW50Ig9taW5Mb2NrRHVyYXRpb24iD21heExvY2tEdXJhdGlvbiIMZm9ybWF0Q29uZmlnIhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IgFzIh1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCILbXVzdE1hbmFnZXIiAWkiAnBkIgJwayIOSWR4TG9ja1VzZXJOdW0iDUlkeExvY2tBbW91bnQiDElkeExvY2tTdGFydCIPSWR4TG9ja0R1cmF0aW9uIg1JZHhMb2NrUGFyYW1LIg1JZHhMb2NrUGFyYW1CIhNrZXlMb2NrUGFyYW1zUmVjb3JkIgt1c2VyQWRkcmVzcyIacmVhZExvY2tQYXJhbXNSZWNvcmRPckZhaWwiF2Zvcm1hdExvY2tQYXJhbXNSZWNvcmRTIgd1c2VyTnVtIgZhbW91bnQiBXN0YXJ0IghkdXJhdGlvbiIGcGFyYW1LIgZwYXJhbUIiEGxhc3RVcGRUaW1lc3RhbXAiCWd3eEFtb3VudCIWZm9ybWF0TG9ja1BhcmFtc1JlY29yZCIOa2V5TmV4dFVzZXJOdW0iEmtleVVzZXIyTnVtTWFwcGluZyISa2V5TnVtMlVzZXJNYXBwaW5nIhZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50IhZrZXlMb2NrUGFyYW1TdGFydEJsb2NrIhRrZXlMb2NrUGFyYW1EdXJhdGlvbiINa2V5TG9ja1BhcmFtSyINa2V5TG9ja1BhcmFtQiIVa2V5TG9ja1BhcmFtQnlQZXJpb2RLIgZwZXJpb2QiFWtleUxvY2tQYXJhbUJ5UGVyaW9kQiIXa2V5TG9ja1BhcmFtVG90YWxBbW91bnQiIGtleVN0YXRzTG9ja3NEdXJhdGlvblN1bUluQmxvY2tzIhJrZXlTdGF0c0xvY2tzQ291bnQiEmtleVN0YXRzVXNlcnNDb3VudCIga2V5VXNlckJvb3N0RW1pc3Npb25MYXN0SU5URUdSQUwiImtleVVzZXJMcEJvb3N0RW1pc3Npb25MYXN0SU5URUdSQUwiCWxwQXNzZXRJZCIXa2V5VXNlck1heEJvb3N0SU5URUdSQUwiGGtleVRvdGFsTWF4Qm9vc3RJTlRFR1JBTCIha2V5VXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsIhNrZXlVc2VyQm9vc3RDbGFpbWVkIhFrZXlUb3RhbENhY2hlZEd3eCIba2V5VG90YWxDYWNoZWRHd3hDb3JyZWN0aXZlIg9mYWN0b3J5Q29udHJhY3QiEGVtaXNzaW9uQ29udHJhY3QiD3N0YWtpbmdDb250cmFjdCIRZ3d4UmV3YXJkQ29udHJhY3QiFmxwU3Rha2luZ1Bvb2xzQ29udHJhY3QiEWdldFRvdGFsQ2FjaGVkR3d4Igdjb3JyZWN0IhlrZXlWb3RpbmdFbWlzc2lvbkNvbnRyYWN0IhZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0IhFrZXlDdXJyZW50RXBvY2hVaSIOY3VycmVudEVwb2NoVWkiDmtleVRhcmdldEVwb2NoIhF0YXJnZXRFcG9jaE9wdGlvbiIRdG90YWxDYWNoZWRHd3hSYXciFWlzQ29ycmVjdGlvbkFjdGl2YXRlZCIKY29ycmVjdGl2ZSIMSGlzdG9yeUVudHJ5IgR0eXBlIgR1c2VyIglsb2NrU3RhcnQiAWsiAWIiCmhpc3RvcnlLRVkiC2hpc3RvcnlEQVRBIgpTdGF0c0VudHJ5Ig50b3RhbExvY2tlZEluYyILZHVyYXRpb25JbmMiDGxvY2tDb3VudEluYyINdXNlcnNDb3VudEluYyIbbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzS0VZIg1sb2Nrc0NvdW50S0VZIg11c2Vyc0NvdW50S0VZIg50b3RhbEFtb3VudEtFWSIYbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzIgpsb2Nrc0NvdW50Igp1c2Vyc0NvdW50Igt0b3RhbEFtb3VudCINY2FsY0d3eEFtb3VudCIEa1JhdyIEYlJhdyIBaCIFU0NBTEUiD0xvY2tQYXJhbXNFbnRyeSINdXNlckFtb3VudEtFWSINc3RhcnRCbG9ja0tFWSILZHVyYXRpb25LRVkiBGtLRVkiBGJLRVkiDGtCeVBlcmlvZEtFWSIMYkJ5UGVyaW9kS0VZIiJleHRyYWN0T3B0aW9uYWxQYXltZW50QW1vdW50T3JGYWlsIg9leHBlY3RlZEFzc2V0SWQiA3BtdCIZY2FsY1VzZXJHd3hBbW91bnRBdEhlaWdodCIMdGFyZ2V0SGVpZ2h0IgVFTVBUWSISdXNlcjJOdW1NYXBwaW5nS0VZIg1nd3hBbW91bnRDYWxjIhRjYWxjQ3VycmVudEd3eEFtb3VudCIUaW50ZXJuYWxDbGFpbVd4Qm9vc3QiDGxwQXNzZXRJZFN0ciIOdXNlckFkZHJlc3NTdHIiCHJlYWRPbmx5IhF1c2VyUmVjb3JkT3JFbXB0eSIPdXNlclJlY29yZEFycmF5Igp1c2VyTnVtU3RyIhxnd3hSZXdhcmRFbWlzc2lvblN0YXJ0SGVpZ2h0IghFTVBUWVNUUiINJHQwMTUzOTcxNTk2NSIOcG9vbEFkZHJlc3NTdHIiA3B3MSIDcHcwIgtwb29sV2VpZ2h0MCILcG9vbFdlaWdodDEiEnd4RW1pc3Npb25QZXJCbG9jayINZW1pc3Npb25TdGFydCILZW1pc3Npb25FbmQiAmRoIiJ1c2VyTHBCb29zdEVtaXNzaW9uTGFzdEludGVncmFsS0VZIiB1c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWSIddXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWwiFWJvb3N0RW1pc3Npb25JbnRlZ3JhbCIZdXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbCIDdWRoIgZ1TGFzdEgiBHVkaDAiBHVkaDEiF3VzZXJNYXhCb29zdEludGVncmFsS0VZIhh0b3RhbE1heEJvb3N0SW50ZWdyYWxLRVkiD3VzZXJNYXhCb29zdEludCIQdG90YWxNYXhCb29zdEludCIXdG90YWxDYWNoZWRHd3hDb3JyZWN0ZWQiC3VzZXJDdXJyR3d4IiF1c2VyQm9vc3RBdmFsYWlibGVUb0NsYWltVG90YWxLRVkiHnVzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbCIadXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbDAiGnVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwxIh5wb29sVXNlckJvb3N0RW1pc3Npb25JbnRlZ3JhbDAiHnBvb2xVc2VyQm9vc3RFbWlzc2lvbkludGVncmFsMSIidXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsTmV3MCIidXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsTmV3MSIhdXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsTmV3IhN1c2VyQm9vc3RDbGFpbWVkS0VZIhB1c2VyQm9vc3RDbGFpbWVkIhJ1c2VyQm9vc3RBdmFpbGFibGUiCWRhdGFTdGF0ZSIFZGVidWciC2xvY2tBY3Rpb25zIghjZmdBcnJheSIKYXNzZXRJZFN0ciIJcG10QW1vdW50Ig5uZXh0VXNlck51bUtFWSIOdXNlcklzRXhpc3RpbmciB2NvZWZmWDgiDmdXeEFtb3VudFN0YXJ0IhNnV3hQYXJhbXNSZXN1bHRMaXN0IgNhcnIiEWZhY3RvcnlBZGRyZXNzU3RyIg5sb2NrQXNzZXRJZFN0ciILbWluRHVyYXRpb24iC21heER1cmF0aW9uIgtjaGVja0NhbGxlciIPcmVmZXJyZXJBZGRyZXNzIglzaWduYXR1cmUiDSR0MDI0MzY0MjQ0MjkiEWxvY2tBY3Rpb25zUmVzdWx0Ig9yZWZlcnJhbEFkZHJlc3MiBnJlZkludiIRdXBkYXRlUmVmQWN0aXZpdHkiDSR0MDI0ODg3MjQ5NTIiDWRlbHRhRHVyYXRpb24iCnVzZXJBbW91bnQiDGxvY2tEdXJhdGlvbiIHbG9ja0VuZCIRcmVtYWluaW5nRHVyYXRpb24iDXVzZXJBbW91bnROZXciD2xvY2tEdXJhdGlvbk5ldyIMbG9ja1N0YXJ0TmV3IgtjdXJyVXNlckd3eCIHZ3d4RGlmZiISdXNlck1heEJvb3N0SW50TmV3IhhyZW1haW5pbmdVc2VyTWF4Qm9vc3RJbnQiE3VzZXJNYXhCb29zdEludERpZmYiDSR0MDI5OTMzMzAwMzUiDSR0MDMwMTY3MzAyNjgiEHVzZXJSZWNvcmRPcHRpb24iEG1heERlbHRhRHVyYXRpb24iF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5cQABYQICX18AAWIACAABYwCAwtcvAAFkBQFjAQFlAQFmCQC5CQIJAMwIAgIOYm9vc3RpbmcucmlkZToJAMwIAgUBZgUDbmlsAgEgAQFnAQFmCQACAQkBAWUBBQFmAQFoAgFpAWoJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQFpBQFqCQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQFqAg8gaXMgbm90IGRlZmluZWQBAWsCAWkBagkBC3ZhbHVlT3JFbHNlAgkAmggCBQFpBQFqAAABAWwDAWkBagFtCQELdmFsdWVPckVsc2UCCQCaCAIFAWkFAWoFAW0BAW4CAWkBagkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAWkFAWoJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FAWoCDyBpcyBub3QgZGVmaW5lZAEBbwEBcAMJAGYCAAAFAXAJAQEtAQUBcAUBcAEBcQEBcAQBcgUBcAMJAAECBQFyAglMaXN0W0FueV0EAXMFAXIFAXMJAAIBAhtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BAXQBAXAEAXIFAXADCQABAgUBcgIDSW50BAF1BQFyBQF1CQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQF2AAkAuQkCCQDMCAICBCVzJXMJAMwIAgIGY29uZmlnCQDMCAICGHJlZmVycmFsc0NvbnRyYWN0QWRkcmVzcwUDbmlsBQFhAAF3CQERQGV4dHJOYXRpdmUoMTA2MikBCQEBaAIFBHRoaXMJAQF2AAABeAkAuQkCCQDMCAICBCVzJXMJAMwIAgIIcmVmZXJyYWwJAMwIAgILcHJvZ3JhbU5hbWUFA25pbAUBYQABeQIGd3hsb2NrAAF6CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAXgFAXkBAUEAAhwlcyVzX19jb25maWdfX2ZhY3RvcnlBZGRyZXNzAAFCAAEAAUMAAgABRAADAAFFAAQAAUYABQABRwAGAAFIAAcAAUkACAABSgAJAAFLAAoAAUwACwEBTQACESVzX19mYWN0b3J5Q29uZmlnAQFOAQFPCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAU8JAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFAWEBAVAAAhAlc19fbHBUb2tlbnNMaXN0AQFRAQFPCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAU8JAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFAWEBAVIBAVMJALkJAgkAzAgCAgQlcyVzCQDMCAICCnBvb2xXZWlnaHQJAMwIAgUBUwUDbmlsBQFhAQFUAgFVAVYJAKwCAgkArAICCQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUBVQICX18JAKQDAQUBVgEBVwAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQFoAgUEdGhpcwkBAUEAAQFYAAkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIJAQFXAAkBAVAAAgAFAWEBAVkBAVoJALUJAgkBAWgCBQFaCQEBTQAFAWEBAmFhAQJhYgkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhYgUBQwECYWMBAmFiCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFiBQFGAQJhZAECYWIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYWIFAUIBAmFlAQJhYgkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhYgUBSwECYWYAAhQlc19fbWFuYWdlclB1YmxpY0tleQECYWcAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAmFoAAIbJXMlc19fcmF0ZVBlckJsb2NrX19jdXJyZW50AQJhaQACHiVzJXNfX3JhdGVQZXJCbG9ja01heF9fY3VycmVudAECYWoAAholcyVzX19lbWlzc2lvbl9fc3RhcnRCbG9jawECYWsAAhglcyVzX19lbWlzc2lvbl9fZHVyYXRpb24BAmFsAAIYJXMlc19fZW1pc3Npb25fX2VuZEJsb2NrAQJhbQACDiVzX19uZXh0UGVyaW9kAQJhbgACKCVzJXNfX2d3eFJld2FyZEVtaXNzaW9uUGFydF9fc3RhcnRIZWlnaHQAAmFvAAEAAmFwAAIAAmFxAAMAAmFyAAQAAmFzAAUBAmF0AAIKJXNfX2NvbmZpZwECYXUACQC1CQIJAQFoAgUEdGhpcwkBAmF0AAUBYQACYXYJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgkBAmF1AAUCYXMBAmF3BQJheAJheQJhegJhQQJhdgkAuQkCCQDMCAICCCVzJWQlZCVkCQDMCAIFAmF4CQDMCAIFAmF5CQDMCAIFAmF6CQDMCAIFAmFBCQDMCAIFAmF2BQNuaWwFAWEBAmFCBQJheAJheQJhegJhQQJhdgkBAmF3BQUCYXgJAKQDAQUCYXkJAKQDAQUCYXoJAKQDAQUCYUEFAmF2AQJhQwAEAXIJAKIIAQkBAmFmAAMJAAECBQFyAgZTdHJpbmcEAmFEBQFyCQDZBAEFAmFEAwkAAQIFAXICBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECYUUABAFyCQCiCAEJAQJhZwADCQABAgUBcgIGU3RyaW5nBAJhRAUBcgkA2QQBBQJhRAMJAAECBQFyAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmFGAQJhRwQCYUgJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQBcgkBAmFDAAMJAAECBQFyAgpCeXRlVmVjdG9yBAJhSQUBcgMJAAACCAUCYUcPY2FsbGVyUHVibGljS2V5BQJhSQYFAmFIAwkAAQIFAXICBFVuaXQDCQAAAggFAmFHBmNhbGxlcgUEdGhpcwYFAmFICQACAQILTWF0Y2ggZXJyb3IAAmFKAAEAAmFLAAIAAmFMAAMAAmFNAAQAAmFOAAUAAmFPAAYBAmFQAQJhUQkAuQkCCQDMCAICCiVzJXNfX2xvY2sJAMwIAgUCYVEFA25pbAUBYQECYVIBAmFRCQC1CQIJAQFoAgUEdGhpcwkBAmFQAQUCYVEFAWEBAmFTCAJhVAJhVQJhVgJhVwJhWAJhWQJhWgJiYQkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgUCYVQJAMwIAgUCYVUJAMwIAgUCYVYJAMwIAgUCYVcJAMwIAgUCYVgJAMwIAgUCYVkJAMwIAgUCYVoJAMwIAgUCYmEFA25pbAUBYQECYmIHAmFUAmFVAmFWAmFXAmFYAmFZAmJhCQECYVMIBQJhVAkApAMBBQJhVQkApAMBBQJhVgkApAMBBQJhVwkApAMBBQJhWAkApAMBBQJhWQkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkApAMBBQJiYQECYmMAAg8lc19fbmV4dFVzZXJOdW0BAmJkAQJhUQkAuQkCCQDMCAICGSVzJXMlc19fbWFwcGluZ19fdXNlcjJudW0JAMwIAgUCYVEFA25pbAUBYQECYmUBAVYJALkJAgkAzAgCAhklcyVzJXNfX21hcHBpbmdfX251bTJ1c2VyCQDMCAIFAVYFA25pbAUBYQECYmYBAmFUCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQJhVAkAzAgCAgZhbW91bnQFA25pbAUBYQECYmcBAmFUCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQJhVAkAzAgCAgVzdGFydAUDbmlsBQFhAQJiaAECYVQJALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFAmFUCQDMCAICCGR1cmF0aW9uBQNuaWwFAWEBAmJpAQJhVAkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUCYVQJAMwIAgIBawUDbmlsBQFhAQJiagECYVQJALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFAmFUCQDMCAICAWIFA25pbAUBYQECYmsCAmFUAmJsCQC5CQIJAMwIAgIXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAMwIAgUCYVQJAMwIAgIBawkAzAgCBQJibAUDbmlsBQFhAQJibQICYVQCYmwJALkJAgkAzAgCAhclcyVkJXMlZF9fcGFyYW1CeVBlcmlvZAkAzAgCBQJhVAkAzAgCAgFiCQDMCAIFAmJsBQNuaWwFAWEBAmJuAAIeJXMlc19fc3RhdHNfX2FjdGl2ZVRvdGFsTG9ja2VkAQJibwACJSVzJXNfX3N0YXRzX19sb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MBAmJwAAIXJXMlc19fc3RhdHNfX2xvY2tzQ291bnQBAmJxAAIdJXMlc19fc3RhdHNfX2FjdGl2ZVVzZXJzQ291bnQBAmJyAQJhVAkAuQkCCQDMCAICHiVzJWRfX3VzZXJCb29zdEVtaXNzaW9uTGFzdEludAkAzAgCBQJhVAUDbmlsBQFhAQJicwICYVQCYnQJALkJAgkAzAgCAh4lcyVkX191c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnQJAMwIAgUCYVQJAMwIAgUCYnQFA25pbAUBYQECYnUBAmFUCQC5CQIJAMwIAgIRJXMlZF9fbWF4Qm9vc3RJbnQJAMwIAgUCYVQFA25pbAUBYQECYnYAAhglcyVzX19tYXhCb29zdEludF9fdG90YWwBAmJ3AQJhVAkAuQkCCQDMCAICJCVzJWRfX3VzZXJCb29zdEF2YWxpYWJsZVRvQ2xhaW1Ub3RhbAkAzAgCBQJhVAUDbmlsBQFhAQJieAECYVQJALkJAgkAzAgCAhYlcyVkX191c2VyQm9vc3RDbGFpbWVkCQDMCAIFAmFUBQNuaWwFAWEBAmJ5AAIWJXMlc19fZ3d4Q2FjaGVkX190b3RhbAECYnoAAhwlc19fZ3d4Q2FjaGVkVG90YWxDb3JyZWN0aXZlAAJiQQkBAVcAAAJhYgkBAVkBBQJiQQACYkIJAQJhYwEFAmFiAAJiQwkBAmFkAQUCYWIAAmJECQECYWUBBQJhYgACYkUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkAuQkCCQDMCAICAiVzCQDMCAICFmxwU3Rha2luZ1Bvb2xzQ29udHJhY3QFA25pbAUBYQkBAWUBAi5scF9zdGFraW5nX3Bvb2xzIGNvbnRyYWN0IGFkZHJlc3MgaXMgdW5kZWZpbmVkCQEBZQECKWludmFsaWQgbHBfc3Rha2luZ19wb29scyBjb250cmFjdCBhZGRyZXNzAQJiRgECYkcEAmJICQC5CQIJAMwIAgICJXMJAMwIAgIWdm90aW5nRW1pc3Npb25Db250cmFjdAUDbmlsBQFhBAJiSQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUCYkEFAmJIBAJiSgkAuQkCCQDMCAICAiVzCQDMCAICDmN1cnJlbnRFcG9jaFVpBQNuaWwFAWEEAmJLCQERQGV4dHJOYXRpdmUoMTA1MCkCBQJiSQUCYkoEAmJMCQC5CQIJAMwIAgIEJXMlcwkAzAgCAil0b3RhbENhY2hlZEd3eENvcnJlY3Rpb25fX2FjdGl2YXRpb25FcG9jaAUDbmlsBQFhBAJiTQkAmggCBQR0aGlzBQJiTAQCYk4JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmJ5AAAABAJiTwMJAQlpc0RlZmluZWQBBQJiTQkAZwIFAmJLCQEFdmFsdWUBBQJiTQcEAmJQAwMFAmJPBQJiRwcJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmJ6AAAAAAAJAJYDAQkAzAgCAAAJAMwIAgkAZAIFAmJOBQJiUAUDbmlsAQJiUQgCYlICYlMCYVUCYlQCYVcCYlUCYlYCYUcEAmJXCQC5CQIJAMwIAgIRJXMlcyVzJXNfX2hpc3RvcnkJAMwIAgUCYlIJAMwIAgUCYlMJAMwIAgkA2AQBCAUCYUcNdHJhbnNhY3Rpb25JZAUDbmlsBQFhBAJiWAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQgFCWxhc3RCbG9jawZoZWlnaHQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFAmFVCQDMCAIJAKQDAQUCYlQJAMwIAgkApAMBBQJhVwkAzAgCCQCkAwEFAmJVCQDMCAIJAKQDAQUCYlYFA25pbAUBYQkBC1N0cmluZ0VudHJ5AgUCYlcFAmJYAQJiWQQCYloCY2ECY2ICY2MEAmNkCQECYm8ABAJjZQkBAmJwAAQCY2YJAQJicQAEAmNnCQECYm4ABAJjaAkBAWsCBQR0aGlzBQJjZAQCY2kJAQFrAgUEdGhpcwUCY2UEAmNqCQEBawIFBHRoaXMFAmNmBAJjawkBAWsCBQR0aGlzBQJjZwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY2QJAGQCBQJjaAUCY2EJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNlCQBkAgUCY2kFAmNiCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjZgkAZAIFAmNqBQJjYwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY2cJAGQCBQJjawUCYloFA25pbAECY2wDAmNtAmNuAmNvBAJjcADoBwkAaQIJAGQCCQBoAgUCY20FAmNvBQJjbgUCY3ABAmNxCAJhUQJhVAJhVQJhVgJhVwJiVQJiVgJibAQCY3IJAQJiZgEFAmFUBAJjcwkBAmJnAQUCYVQEAmN0CQECYmgBBQJhVAQCY3UJAQJiaQEFAmFUBAJjdgkBAmJqAQUCYVQEAmN3CQECYmsCBQJhVAUCYmwEAmN4CQECYm0CBQJhVAUCYmwEAmJhCQECY2wDBQJiVQUCYlYFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3IFAmFVCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjcwUCYVYJAMwIAgkBDEludGVnZXJFbnRyeQIFAmN0BQJhVwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3UFAmJVCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjdgUCYlYJAMwIAgkBDEludGVnZXJFbnRyeQIFAmN3BQJiVQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3gFAmJWCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhUAEFAmFRCQECYmIHBQJhVAUCYVUFAmFWBQJhVwUCYlUFAmJWBQJiYQUDbmlsAQJjeQICYUcCY3oDCQBmAgkAkAMBCAUCYUcIcGF5bWVudHMAAQkAAgECG29ubHkgb25lIHBheW1lbnQgaXMgYWxsb3dlZAMJAAACCQCQAwEIBQJhRwhwYXltZW50cwAAAAAEAmNBCQCRAwIIBQJhRwhwYXltZW50cwAAAwkBAiE9AgkBBXZhbHVlAQgFAmNBB2Fzc2V0SWQFAmN6CQACAQIbaW52YWxpZCBhc3NldCBpZCBpbiBwYXltZW50CAUCY0EGYW1vdW50AQJjQgICYVECY0MEAmNEAgVlbXB0eQQCY0UJAQJiZAEFAmFRBAJhVAkBC3ZhbHVlT3JFbHNlAgkAoggBBQJjRQUCY0QEAmJVCQELdmFsdWVPckVsc2UCCQCfCAEJAQJiaQEFAmFUAAAEAmJWCQELdmFsdWVPckVsc2UCCQCfCAEJAQJiagEFAmFUAAAEAmNGCQECY2wDBQJiVQUCYlYFAmNDBAJiYQMJAGYCAAAFAmNGAAAFAmNGBQJiYQECY0cBAmFRCQECY0ICBQJhUQUGaGVpZ2h0AQJjSAMCY0kCY0oCY0sEAmNEAgVFTVBUWQQCY0wJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBAmFQAQUCY0oFAmNEAwkAAAIFAmNMBQJjRAkAlQoDAAAFA25pbAIVdXNlclJlY29yZDo6aXM6OmVtcHR5BAJjTQkAtQkCBQJjTAUBYQQCY04JAJEDAgUCY00FAmFKBAJjTwkBC3ZhbHVlT3JFbHNlAgkAmggCBQJiRAkBAmFuAAAABAJjUAIFZW1wdHkEAmNRAwkBAiE9AgUCY0kFAmNQBAJjUgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmJBCQEBTgEFAmNJCQCsAgICFXVuc3VwcG9ydGVkIGxwIGFzc2V0IAUCY0kEAmNTCQERQGV4dHJOYXRpdmUoMTA1MCkCBQJiQQkBAVIBBQJjUgQCY1QJAQt2YWx1ZU9yRWxzZQIJAJoIAgUCYkEJAQFUAgUCY1IAAAUCY1MJAJQKAgUCY1QFAmNTAwUCY0sJAJQKAgAAAAAJAAIBCQCsAgICKG5vdCByZWFkb25seSBtb2RlOiB1bnN1cHBvcnRlZCBscCBhc3NldCAFAmNJBAJjVQgFAmNRAl8xBAJjVggFAmNRAl8yBAJjVwkBAW4CBQJiQgkBAmFoAAQCY1gJAQFuAgUCYkIJAQJhagAEAmNZCQEBbgIFAmJCCQECYWwABAJjbwMJAGYCBQZoZWlnaHQFAmNZBQJjWQUGaGVpZ2h0BAJjWgkAlgMBCQDMCAIJAGUCBQJjbwUCY1gJAMwIAgAABQNuaWwEAmRhCQECYnMCBQJjTgUCY0kEAmRiCQECYnIBBQJjTgQCZGMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCZGEJAQFrAgUEdGhpcwUCZGIEAmRkCQBpAgkAaAIJAGgCBQJjVwUCY1oAAgADBAJkZQkAZQIFAmRkBQJkYwQCZGYJAGsDBQJkZQADCQBoAgACBQJjVwQCZGcJAGUCBQJjbwUCZGYEAmRoCQCWAwEJAMwIAgkAZQIFAmNPBQJkZwkAzAgCAAAFA25pbAQCZGkJAGUCCQBlAgUCY28FAmRnBQJkaAMDAwkAZgIAAAUCZGcGCQBmAgAABQJkaQYJAGcCCQEBbwEJAGUCCQBkAgUCZGgFAmRpBQJkZgABCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhZpbnZhbGlkIHVkaCBjYWxjOiB1ZGg9CQCkAwEFAmRmAgggdUxhc3RIPQkApAMBBQJkZwIGIHVkaDA9CQCkAwEFAmRoAgYgdWRoMT0JAKQDAQUCZGkDCQBmAgAABQJkZQkAAgECEndyb25nIGNhbGN1bGF0aW9ucwQCZGoJAQJidQEFAmNOBAJkawkBAmJ2AAQCZGwJAQFrAgUEdGhpcwUCZGoEAmRtCQEBawIFBHRoaXMFAmRrBAJkbgkBAmJGAQYEAmRvCQECY0cBBQJjSgQCZHAJAQJidwEFAmNOBAJkcQkBAWsCBQR0aGlzBQJkcAQCZHIDCQAAAgUCZGYAAAAACQBrAwUCZGUFAmRoBQJkZgQCZHMDCQAAAgUCZGYAAAAACQBrAwUCZGUFAmRpBQJkZgQCZHQJAGsDBQJkcgUCY1UFAWQEAmR1CQBrAwUCZHMFAmNWBQFkBAJkdgMJAAACBQJkbgAAAAAJAGsDBQJkdAUCZG8FAmRuBAJkdwMJAAACBQJkbgAAAAAJAGsDBQJkdQUCZG8FAmRuBAJkeAkAZAIFAmR2BQJkdwQCZHkJAQJieAEFAmNOBAJkegkBAWsCBQR0aGlzBQJkeQQCZEEJAGUCBQJkeAUCZHoEAmRCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJkYQUCZGQFA25pbAQCZEMJALkJAgkAzAgCCQCkAwEFAmRjCQDMCAIJAKQDAQUCZGUJAMwIAgkApAMBBQJkegkAzAgCCQCkAwEFAmRBCQDMCAIJAKQDAQUCY1UJAMwIAgkApAMBBQJjVgkAzAgCCQCkAwEFAmNvCQDMCAIJAKQDAQUCZGYJAMwIAgkApAMBBQJkZwkAzAgCCQCkAwEFAmRoCQDMCAIJAKQDAQUCZGkJAMwIAgkApAMBBQJkbwkAzAgCCQCkAwEFAmRuBQNuaWwCAToJAJUKAwUCZHgFAmRCBQJkQwECZEQCAmFHAmFXBAJkRQkBAmF1AAQCZEYJAJEDAgUCZEUFAmFvBAJheAkA2QQBBQJkRgQCYXkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkRQUCYXAEAmF6CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZEUFAmFxBAJhQQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRFBQJhcgMJAQIhPQIJAJADAQgFAmFHCHBheW1lbnRzAAEJAAIBAjRpbnZhbGlkIHBheW1lbnQgLSBleGFjdCBvbmUgcGF5bWVudCBtdXN0IGJlIGF0dGFjaGVkBAJjQQkAkQMCCAUCYUcIcGF5bWVudHMAAAQCZEcIBQJjQQZhbW91bnQDCQECIT0CBQJheAkBBXZhbHVlAQgFAmNBB2Fzc2V0SWQJAAIBCQCsAgIJAKwCAgIeaW52YWxpZCBhc3NldCBpcyBpbiBwYXltZW50IC0gBQJkRgIMIGlzIGV4cGVjdGVkBAJkSAkBAmJjAAQCY0oJAKUIAQgFAmFHBmNhbGxlcgQCZEkJAQlpc0RlZmluZWQBCQCiCAEJAQJiZAEFAmNKBAJjTgMFAmRJCQEFdmFsdWUBCQCiCAEJAQJiZAEFAmNKCQCkAwEJAQFuAgUEdGhpcwUCZEgEAmFUCQENcGFyc2VJbnRWYWx1ZQEFAmNOBAJiVAUGaGVpZ2h0BAJjcwkBAmJnAQUCY04EAmN0CQECYmgBBQJjTgQCY3IJAQJiZgEFAmNOAwMJAGYCBQJheQUCZEcJAQIhPQIIBQJhRwZjYWxsZXIFAmJFBwkAAgEJAKwCAgIiYW1vdW50IGlzIGxlc3MgdGhlbiBtaW5Mb2NrQW1vdW50PQkApAMBBQJheQMJAGYCBQJhegUCYVcJAAIBCQCsAgICLXBhc3NlZCBkdXJhdGlvbiBpcyBsZXNzIHRoZW4gbWluTG9ja0R1cmF0aW9uPQkApAMBBQJhegMJAGYCBQJhVwUCYUEJAAIBCQCsAgICMHBhc3NlZCBkdXJhdGlvbiBpcyBncmVhdGVyIHRoZW4gbWF4TG9ja0R1cmF0aW9uPQkApAMBBQJhQQMDBQJkSQkAZwIJAGQCCQEBbgIFBHRoaXMFAmNzCQEBbgIFBHRoaXMFAmN0BQJiVAcJAAIBAjZ0aGVyZSBpcyBhbiBhY3RpdmUgbG9jayAtIGNvbnNpZGVyIHRvIHVzZSBpbmNyZWFzZUxvY2sDCQBmAgkBAWsCBQR0aGlzBQJjcgAACQACAQkArAICAjR0aGVyZSBhcmUgbG9ja2VkIFdYcyAtIGNvbnNpZGVyIHRvIHVzZSBpbmNyZWFzZUxvY2sgBQJjcgQCZEoJAGsDBQJhVwUBYwUCYUEEAmRLCQBrAwUCZEcFAmRKBQFjBAJkTAkBAXEBCQD8BwQFAmF2AhVjYWxjR3d4UGFyYW1zUkVBRE9OTFkJAMwIAgUCZEsJAMwIAgUCYlQJAMwIAgUCYVcFA25pbAUDbmlsBAJiVQkBAXQBCQCRAwIFAmRMAAAEAmJWCQEBdAEJAJEDAgUCZEwAAQQCYmwJAKQDAQkBAXQBCQCRAwIFAmRMAAIEAmNXCQEBbgIFAmJCCQECYWgABAJjWAkBAW4CBQJiQgkBAmFqAAQCY1kJAQFuAgUCYkIJAQJhbAAEAmNvAwkAZgIFBmhlaWdodAUCY1kFAmNZBQZoZWlnaHQEAmNaCQCWAwEJAMwIAgkAZQIFAmNvBQJjWAkAzAgCAAAFA25pbAQCZGIJAQJicgEFAmNOBAJkZAkAaQIJAGgCCQBoAgUCY1cFAmNaAAIAAwQCZGoJAQJidQEFAmNOBAJkawkBAmJ2AAQCZGwJAGkCCQBoAgUCZEsFAmFXAAIEAmRtCQEBawIFBHRoaXMFAmRrBAJiTgkBAmJGAQcEAmRNAwUCZEkFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZEgJAGQCBQJhVAABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiZAEFAmNKBQJjTgkAzAgCCQELU3RyaW5nRW50cnkCCQECYmUBBQJjTgUCY0oFA25pbAkAlAoCCQDOCAIJAM0IAgkAzggCCQDOCAIFAmRNCQECY3EIBQJjSgUCY04FAmRHBQJiVAUCYVcFAmJVBQJiVgUCYmwJAQJiWQQFAmRHBQJhVwABAwUCZEkAAAABCQECYlEIAgRsb2NrBQJjSgUCZEcFAmJUBQJhVwUCYlUFAmJWBQJhRwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZGIFAmRkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYnkACQBkAgUCYk4FAmRLBQNuaWwFAmRLDQJhRwELY29uc3RydWN0b3IGAmROAmRPAmF5AmRQAmRRAmF2BAJkUgkBAmFGAQUCYUcDCQAAAgUCZFIFAmRSCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJiYwAAAAkAzAgCCQELU3RyaW5nRW50cnkCCQECYXQACQECYUIFBQJkTwUCYXkFAmRQBQJkUQUCYXYJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAUEABQJkTgUDbmlsCQECYlkEAAAAAAAAAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYUcBB2xvY2tSZWYDAmFXAmRTAmRUBAJkVQkBAmREAgUCYUcFAmFXBAJkVggFAmRVAl8xBAJkSwgFAmRVAl8yBAJkVwkApQgBCAUCYUcGY2FsbGVyBAJkWAMDCQAAAgUCZFMCAAYJAAACBQJkVAEABQR1bml0CQD8BwQFAXcCCmNyZWF0ZVBhaXIJAMwIAgUBegkAzAgCBQJkUwkAzAgCBQJkVwkAzAgCBQJkVAUDbmlsBQNuaWwDCQAAAgUCZFgFAmRYBAJkWQkA/AcEBQJhdgIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCCQClCAEIBQJhRwZjYWxsZXIJAMwIAgUCZEsFA25pbAUDbmlsAwkAAAIFAmRZBQJkWQkAlAoCBQJkVgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhRwEEbG9jawECYVcEAmRaCQECZEQCBQJhRwUCYVcEAmRWCAUCZFoCXzEEAmRLCAUCZFoCXzIEAmRZCQD8BwQFAmF2AhZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5CQDMCAIJAKUIAQgFAmFHBmNhbGxlcgkAzAgCBQJkSwUDbmlsBQNuaWwDCQAAAgUCZFkFAmRZCQCUCgIFAmRWBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFHAQxpbmNyZWFzZUxvY2sBAmVhBAJkRQkBAmF1AAQCZEYJAJEDAgUCZEUFAmFvBAJheAkA2QQBBQJkRgQCYXoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkRQUCYXEEAmFBCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZEUFAmFyBAJkRwkBAmN5AgUCYUcFAmF4BAJjSgkApQgBCAUCYUcGY2FsbGVyBAJjTQkBAmFSAQUCY0oEAmNOCQCRAwIFAmNNBQJhSgQCZWIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjTQUCYUsEAmJUCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY00FAmFMBAJlYwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNNBQJhTQQCZWQJAGQCBQJiVAUCZWMEAmVlCQCWAwEJAMwIAgkAZQIFAmVkBQZoZWlnaHQJAMwIAgAABQNuaWwEAmVmCQBkAgUCZWIFAmRHBAJlZwkAZAIFAmVlBQJlYQMJAGYCAAAFAmVhCQACAQIaZHVyYXRpb24gaXMgbGVzcyB0aGVuIHplcm8DCQBmAgUCYXoFAmVnCQACAQkArAICAi1sb2NrRHVyYXRpb25OZXcgaXMgbGVzcyB0aGVuIG1pbkxvY2tEdXJhdGlvbj0JAKQDAQUCYXoDCQBmAgUCZWcFAmFBCQACAQkArAICAkRkZWx0YUR1cmF0aW9uICsgZXhpc3RlZExvY2tEdXJhdGlvbiBpcyBncmVhdGVyIHRoZW4gbWF4TG9ja0R1cmF0aW9uPQkApAMBBQJhQQQCZEoJAGsDBQJlZwUBYwUCYUEEAmRLCQBrAwUCZWYFAmRKBQFjBAJkWQkA/AcEBQJhdgIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCCQClCAEIBQJhRwZjYWxsZXIJAMwIAgUCZEsFA25pbAUDbmlsAwkAAAIFAmRZBQJkWQQCZWgFBmhlaWdodAQCZEwJAQFxAQkA/AcEBQJhdgIVY2FsY0d3eFBhcmFtc1JFQURPTkxZCQDMCAIFAmRLCQDMCAIFAmVoCQDMCAIFAmVnBQNuaWwFA25pbAQCYlUJAQF0AQkAkQMCBQJkTAAABAJiVgkBAXQBCQCRAwIFAmRMAAEEAmJsCQCkAwEJAQF0AQkAkQMCBQJkTAACBAJjVwkBAW4CBQJiQgkBAmFoAAQCY1gJAQFuAgUCYkIJAQJhagAEAmNZCQEBbgIFAmJCCQECYWwABAJjbwMJAGYCBQZoZWlnaHQFAmNZBQJjWQUGaGVpZ2h0BAJjWgkAlgMBCQDMCAIJAGUCBQJjbwUCY1gJAMwIAgAABQNuaWwEAmRiCQECYnIBBQJjTgQCZGMJAQFrAgUEdGhpcwUCZGIEAmRkCQBpAgkAaAIJAGgCBQJjVwUCY1oAAgADBAJkZQkAZQIFAmRkBQJkYwMJAGYCAAAFAmRlCQACAQISd3JvbmcgY2FsY3VsYXRpb25zBAJkagkBAmJ1AQUCY04EAmRrCQECYnYABAJkbAkBAWsCBQR0aGlzBQJkagQCZG0JAQFrAgUEdGhpcwUCZGsEAmVpCQECY0cBBQJjSgQCZWoJAGUCBQJkSwUCZWkDCQBmAgAABQJlagkAAgEJAKwCAgIYZ3d4RGlmZiBpcyBsZXNzIHRoZW4gMDogCQCkAwEFAmVqBAJiTgkBAmJGAQcEAmRuCQECYkYBBgQCZHAJAQJidwEFAmNOBAJkcQkBAWsCBQR0aGlzBQJkcAQCZHgJAGsDBQJkZQUCZWkFAmRuBAJlawkAaQIJAGgCBQJkSwUCZWcAAgQCZWwJAGkCCQBoAgUCZWkFAmVlAAIEAmVtCQBlAgUCZWsFAmVsCQDOCAIJAM0IAgkAzggCCQECY3EIBQJjSgUCY04FAmVmBQJlaAUCZWcFAmJVBQJiVgUCYmwJAQJiWQQFAmRHBQJlYQAAAAAJAQJiUQgCBGxvY2sFAmNKBQJkRwUCYlQFAmVnBQJiVQUCYlYFAmFHCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYnkACQBkAgUCYk4FAmVqBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYUcBDGNsYWltV3hCb29zdAICY0kCY0oDCQECIT0CBQJiQwgFAmFHBmNhbGxlcgkAAgECEnBlcm1pc3Npb25zIGRlbmllZAQCZW4JAQJjSAMFAmNJBQJjSgcEAmRBCAUCZW4CXzEEAmRCCAUCZW4CXzIEAmRDCAUCZW4CXzMJAJQKAgUCZEIJAMwIAgUCZEEFA25pbAJhRwEUY2xhaW1XeEJvb3N0UkVBRE9OTFkCAmNJAmNKBAJlbwkBAmNIAwUCY0kFAmNKBgQCZEEIBQJlbwJfMQQCZEIIBQJlbwJfMgQCZEMIBQJlbwJfMwkAlAoCBQNuaWwJAMwIAgUCZEEJAMwIAgUCZEMFA25pbAJhRwEGdW5sb2NrAQJhUQQCY00JAQJhUgEFAmFRBAJjTgkAkQMCBQJjTQUCYUoEAmViCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY00FAmFLBAJiVAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNNBQJhTAQCZWMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjTQUCYU0EAmVkCQBkAgUCYlQFAmVjBAJkRQkBAmF1AAQCYXgJANkEAQkAkQMCBQJkRQUCYW8DCQBnAgUCZWQFBmhlaWdodAkAAgEJAKwCAgkArAICAgV3YWl0IAkApAMBBQJlZAIKIHRvIHVubG9jawMJAGcCAAAFAmViCQACAQIRbm90aGluZyB0byB1bmxvY2sEAmJsCQELdmFsdWVPckVsc2UCCQCaCAIFAmF2CQECYW0AAAAJAM0IAgkAzQgCCQDOCAIJAQJjcQgFAmFRBQJjTgAABQJiVAUCZWMAAAAACQCkAwEFAmJsCQECYlkECQEBLQEFAmViAAAAAAD///////////8BCQECYlEIAgZ1bmxvY2sFAmFRBQJlYgUCYlQFAmVjAAAAAAUCYUcJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmFRBQJlYgUCYXgCYUcBE2d3eFVzZXJJbmZvUkVBRE9OTFkBAmFRBAJiYQkBAmNHAQUCYVEJAJQKAgUDbmlsCQDMCAIFAmJhBQNuaWwCYUcBF3VzZXJNYXhEdXJhdGlvblJFQURPTkxZAQJjSgQCZEUJAQJhdQAEAmFBCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZEUFAmFyBAJlcAkAnQgCBQR0aGlzCQECYVABBQJjSgMJAAACBQJlcAUEdW5pdAkAlAoCBQNuaWwJAJQKAgIEbG9jawUCYUEEAmNNCQC1CQIJAQV2YWx1ZQEFAmVwBQFhBAJiVAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNNBQJhTAQCZWMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjTQUCYU0EAmVkCQBkAgUCYlQFAmVjBAJlZQkAlgMBCQDMCAIJAGUCBQJlZAUGaGVpZ2h0CQDMCAIAAAUDbmlsBAJlcQkAZQIFAmFBBQJlZQkAlAoCBQNuaWwJAJQKAgIMaW5jcmVhc2VMb2NrBQJlcQJhRwEgZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0UkVBRE9OTFkCAmFRAmNDBAJiYQkBAmNCAgUCYVEFAmNDCQCUCgIFA25pbAUCYmECYUcBGWdldFRvdGFsQ2FjaGVkR3d4UkVBRE9OTFkACQCUCgIFA25pbAkBAmJGAQYCYUcBCnNldE1hbmFnZXIBAmVyBAJkUgkBAmFGAQUCYUcDCQAAAgUCZFIFAmRSBAJlcwkA2QQBBQJlcgMJAAACBQJlcwUCZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFnAAUCZXIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhRwEOY29uZmlybU1hbmFnZXIABAJldAkBAmFFAAQCZXUDCQEJaXNEZWZpbmVkAQUCZXQGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmV1BQJldQQCZXYDCQAAAggFAmFHD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCZXQGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmV2BQJldgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWYACQDYBAEJAQV2YWx1ZQEFAmV0CQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhZwAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZXcBAmV4AAQCZXkEAXIJAQJhQwADCQABAgUBcgIKQnl0ZVZlY3RvcgQCYUkFAXIFAmFJAwkAAQIFAXICBFVuaXQIBQJldw9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgkA9AMDCAUCZXcJYm9keUJ5dGVzCQCRAwIIBQJldwZwcm9vZnMAAAUCZXnprwNH", "chainId": 84, "height": 2467949, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5tog8x7bSLC6iuCsZ5peaA914TR6cERf2aVHu9YZoL3C Next: Zjehtyc9ofKnWrZeWx6RCzQkQg21o8FgGedRNPEPuqq Diff:
OldNewDifferences
99
1010 let d = c
1111
12-func e (f,g) = valueOrErrorMessage(getString(f, g), (("mandatory this." + g) + " is not defined"))
12+func e (f) = makeString(["boosting.ride:", f], " ")
1313
1414
15-func h (f,g) = valueOrElse(getInteger(f, g), 0)
15+func g (f) = throw(e(f))
1616
1717
18-func i (f,g,j) = valueOrElse(getInteger(f, g), j)
18+func h (i,j) = valueOrErrorMessage(getString(i, j), (("mandatory this." + j) + " is not defined"))
1919
2020
21-func k (f,g) = valueOrErrorMessage(getInteger(f, g), (("mandatory this." + g) + " is not defined"))
21+func k (i,j) = valueOrElse(getInteger(i, j), 0)
2222
2323
24-func l (m) = if ((0 > m))
25- then -(m)
26- else m
24+func l (i,j,m) = valueOrElse(getInteger(i, j), m)
2725
2826
29-func n (m) = {
30- let o = m
31- if ($isInstanceOf(o, "List[Any]"))
27+func n (i,j) = valueOrErrorMessage(getInteger(i, j), (("mandatory this." + j) + " is not defined"))
28+
29+
30+func o (p) = if ((0 > p))
31+ then -(p)
32+ else p
33+
34+
35+func q (p) = {
36+ let r = p
37+ if ($isInstanceOf(r, "List[Any]"))
3238 then {
33- let p = o
34- p
39+ let s = r
40+ s
3541 }
3642 else throw("fail to cast into List[Any]")
3743 }
3844
3945
40-func q (m) = {
41- let o = m
42- if ($isInstanceOf(o, "Int"))
46+func t (p) = {
47+ let r = p
48+ if ($isInstanceOf(r, "Int"))
4349 then {
44- let r = o
45- r
50+ let u = r
51+ u
4652 }
4753 else throw("fail to cast into Int")
4854 }
4955
5056
51-func s () = makeString(["%s%s", "config", "referralsContractAddress"], a)
57+func v () = makeString(["%s%s", "config", "referralsContractAddress"], a)
5258
5359
54-let t = addressFromStringValue(e(this, s()))
60+let w = addressFromStringValue(h(this, v()))
5561
56-let u = makeString(["%s%s", "referral", "programName"], a)
62+let x = makeString(["%s%s", "referral", "programName"], a)
5763
58-let v = "wxlock"
64+let y = "wxlock"
5965
60-let w = valueOrElse(getString(this, u), v)
66+let z = valueOrElse(getString(this, x), y)
6167
62-func x () = "%s%s__config__factoryAddress"
68+func A () = "%s%s__config__factoryAddress"
6369
6470
65-let y = 1
71+let B = 1
6672
67-let z = 2
73+let C = 2
6874
69-let A = 3
75+let D = 3
7076
71-let B = 4
77+let E = 4
7278
73-let C = 5
79+let F = 5
7480
75-let D = 6
81+let G = 6
7682
77-let E = 7
83+let H = 7
7884
79-let F = 8
85+let I = 8
8086
81-let G = 9
87+let J = 9
8288
83-let H = 10
89+let K = 10
8490
85-let I = 11
91+let L = 11
8692
87-func J () = "%s__factoryConfig"
93+func M () = "%s__factoryConfig"
8894
8995
90-func K (L) = makeString(["%s%s%s", L, "mappings__lpAsset2PoolContract"], a)
96+func N (O) = makeString(["%s%s%s", O, "mappings__lpAsset2PoolContract"], a)
9197
9298
93-func M () = "%s__lpTokensList"
99+func P () = "%s__lpTokensList"
94100
95101
96-func N (L) = makeString(["%s%s%s", L, "mappings__lpAsset2PoolContract"], a)
102+func Q (O) = makeString(["%s%s%s", O, "mappings__lpAsset2PoolContract"], a)
97103
98104
99-func O (P) = makeString(["%s%s", "poolWeight", P], a)
105+func R (S) = makeString(["%s%s", "poolWeight", S], a)
100106
101107
102-func Q (R,S) = ((("%s%s__poolWeight__" + R) + "__") + toString(S))
108+func T (U,V) = ((("%s%s__poolWeight__" + U) + "__") + toString(V))
103109
104110
105-func T () = addressFromStringValue(e(this, x()))
111+func W () = addressFromStringValue(h(this, A()))
106112
107113
108-func U () = split(valueOrElse(getString(T(), M()), ""), a)
114+func X () = split(valueOrElse(getString(W(), P()), ""), a)
109115
110116
111-func V (W) = split(e(W, J()), a)
117+func Y (Z) = split(h(Z, M()), a)
112118
113119
114-func X (Y) = addressFromStringValue(Y[z])
120+func aa (ab) = addressFromStringValue(ab[C])
115121
116122
117-func Z (Y) = addressFromStringValue(Y[C])
123+func ac (ab) = addressFromStringValue(ab[F])
118124
119125
120-func aa (Y) = addressFromStringValue(Y[y])
126+func ad (ab) = addressFromStringValue(ab[B])
121127
122128
123-func ab (Y) = addressFromStringValue(Y[H])
129+func ae (ab) = addressFromStringValue(ab[K])
124130
125131
126-func ac () = "%s__managerPublicKey"
132+func af () = "%s__managerPublicKey"
127133
128134
129-func ad () = "%s__pendingManagerPublicKey"
135+func ag () = "%s__pendingManagerPublicKey"
130136
131137
132-func ae () = "%s%s__ratePerBlock__current"
138+func ah () = "%s%s__ratePerBlock__current"
133139
134140
135-func af () = "%s%s__ratePerBlockMax__current"
141+func ai () = "%s%s__ratePerBlockMax__current"
136142
137143
138-func ag () = "%s%s__emission__startBlock"
144+func aj () = "%s%s__emission__startBlock"
139145
140146
141-func ah () = "%s%s__emission__duration"
147+func ak () = "%s%s__emission__duration"
142148
143149
144-func ai () = "%s%s__emission__endBlock"
150+func al () = "%s%s__emission__endBlock"
145151
146152
147-func aj () = "%s__nextPeriod"
153+func am () = "%s__nextPeriod"
148154
149155
150-func ak () = "%s%s__gwxRewardEmissionPart__startHeight"
156+func an () = "%s%s__gwxRewardEmissionPart__startHeight"
151157
152158
153-let al = 1
159+let ao = 1
154160
155-let am = 2
161+let ap = 2
156162
157-let an = 3
163+let aq = 3
158164
159-let ao = 4
165+let ar = 4
160166
161-let ap = 5
167+let as = 5
162168
163-func aq () = "%s__config"
169+func at () = "%s__config"
164170
165171
166-func ar () = split(e(this, aq()), a)
172+func au () = split(h(this, at()), a)
167173
168174
169-let as = addressFromStringValue(ar()[ap])
175+let av = addressFromStringValue(au()[as])
170176
171-func at (au,av,aw,ax,as) = makeString(["%s%d%d%d", au, av, aw, ax, as], a)
177+func aw (ax,ay,az,aA,av) = makeString(["%s%d%d%d", ax, ay, az, aA, av], a)
172178
173179
174-func ay (au,av,aw,ax,as) = at(au, toString(av), toString(aw), toString(ax), as)
180+func aB (ax,ay,az,aA,av) = aw(ax, toString(ay), toString(az), toString(aA), av)
175181
176182
177-func az () = {
178- let o = getString(ac())
179- if ($isInstanceOf(o, "String"))
183+func aC () = {
184+ let r = getString(af())
185+ if ($isInstanceOf(r, "String"))
180186 then {
181- let aA = o
182- fromBase58String(aA)
187+ let aD = r
188+ fromBase58String(aD)
183189 }
184- else if ($isInstanceOf(o, "Unit"))
190+ else if ($isInstanceOf(r, "Unit"))
185191 then unit
186192 else throw("Match error")
187193 }
188194
189195
190-func aB () = {
191- let o = getString(ad())
192- if ($isInstanceOf(o, "String"))
196+func aE () = {
197+ let r = getString(ag())
198+ if ($isInstanceOf(r, "String"))
193199 then {
194- let aA = o
195- fromBase58String(aA)
200+ let aD = r
201+ fromBase58String(aD)
196202 }
197- else if ($isInstanceOf(o, "Unit"))
203+ else if ($isInstanceOf(r, "Unit"))
198204 then unit
199205 else throw("Match error")
200206 }
201207
202208
203-func aC (aD) = {
204- let aE = throw("Permission denied")
205- let o = az()
206- if ($isInstanceOf(o, "ByteVector"))
209+func aF (aG) = {
210+ let aH = throw("Permission denied")
211+ let r = aC()
212+ if ($isInstanceOf(r, "ByteVector"))
207213 then {
208- let aF = o
209- if ((aD.callerPublicKey == aF))
214+ let aI = r
215+ if ((aG.callerPublicKey == aI))
210216 then true
211- else aE
217+ else aH
212218 }
213- else if ($isInstanceOf(o, "Unit"))
214- then if ((aD.caller == this))
219+ else if ($isInstanceOf(r, "Unit"))
220+ then if ((aG.caller == this))
215221 then true
216- else aE
222+ else aH
217223 else throw("Match error")
218224 }
219225
220226
221-let aG = 1
227+let aJ = 1
222228
223-let aH = 2
229+let aK = 2
224230
225-let aI = 3
231+let aL = 3
226232
227-let aJ = 4
233+let aM = 4
228234
229-let aK = 5
235+let aN = 5
230236
231-let aL = 6
237+let aO = 6
232238
233-func aM (aN) = makeString(["%s%s__lock", aN], a)
239+func aP (aQ) = makeString(["%s%s__lock", aQ], a)
234240
235241
236-func aO (aN) = split(e(this, aM(aN)), a)
242+func aR (aQ) = split(h(this, aP(aQ)), a)
237243
238244
239-func aP (aQ,aR,aS,aT,aU,aV,aW,aX) = makeString(["%d%d%d%d%d%d%d%d", aQ, aR, aS, aT, aU, aV, aW, aX], a)
245+func aS (aT,aU,aV,aW,aX,aY,aZ,ba) = makeString(["%d%d%d%d%d%d%d%d", aT, aU, aV, aW, aX, aY, aZ, ba], a)
240246
241247
242-func aY (aQ,aR,aS,aT,aU,aV,aX) = aP(aQ, toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(lastBlock.timestamp), toString(aX))
248+func bb (aT,aU,aV,aW,aX,aY,ba) = aS(aT, toString(aU), toString(aV), toString(aW), toString(aX), toString(aY), toString(lastBlock.timestamp), toString(ba))
243249
244250
245-func aZ () = "%s__nextUserNum"
251+func bc () = "%s__nextUserNum"
246252
247253
248-func ba (aN) = makeString(["%s%s%s__mapping__user2num", aN], a)
254+func bd (aQ) = makeString(["%s%s%s__mapping__user2num", aQ], a)
249255
250256
251-func bb (S) = makeString(["%s%s%s__mapping__num2user", S], a)
257+func be (V) = makeString(["%s%s%s__mapping__num2user", V], a)
252258
253259
254-func bc (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "amount"], a)
260+func bf (aT) = makeString(["%s%d%s__paramByUserNum", aT, "amount"], a)
255261
256262
257-func bd (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "start"], a)
263+func bg (aT) = makeString(["%s%d%s__paramByUserNum", aT, "start"], a)
258264
259265
260-func be (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "duration"], a)
266+func bh (aT) = makeString(["%s%d%s__paramByUserNum", aT, "duration"], a)
261267
262268
263-func bf (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "k"], a)
269+func bi (aT) = makeString(["%s%d%s__paramByUserNum", aT, "k"], a)
264270
265271
266-func bg (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "b"], a)
272+func bj (aT) = makeString(["%s%d%s__paramByUserNum", aT, "b"], a)
267273
268274
269-func bh (aQ,bi) = makeString(["%s%d%s%d__paramByPeriod", aQ, "k", bi], a)
275+func bk (aT,bl) = makeString(["%s%d%s%d__paramByPeriod", aT, "k", bl], a)
270276
271277
272-func bj (aQ,bi) = makeString(["%s%d%s%d__paramByPeriod", aQ, "b", bi], a)
278+func bm (aT,bl) = makeString(["%s%d%s%d__paramByPeriod", aT, "b", bl], a)
273279
274280
275-func bk () = "%s%s__stats__activeTotalLocked"
281+func bn () = "%s%s__stats__activeTotalLocked"
276282
277283
278-func bl () = "%s%s__stats__locksDurationSumInBlocks"
284+func bo () = "%s%s__stats__locksDurationSumInBlocks"
279285
280286
281-func bm () = "%s%s__stats__locksCount"
287+func bp () = "%s%s__stats__locksCount"
282288
283289
284-func bn () = "%s%s__stats__activeUsersCount"
290+func bq () = "%s%s__stats__activeUsersCount"
285291
286292
287-func bo (aQ) = makeString(["%s%d__userBoostEmissionLastInt", aQ], a)
293+func br (aT) = makeString(["%s%d__userBoostEmissionLastInt", aT], a)
288294
289295
290-func bp (aQ,bq) = makeString(["%s%d__userBoostEmissionLastInt", aQ, bq], a)
296+func bs (aT,bt) = makeString(["%s%d__userBoostEmissionLastInt", aT, bt], a)
291297
292298
293-func br (aQ) = makeString(["%s%d__maxBoostInt", aQ], a)
299+func bu (aT) = makeString(["%s%d__maxBoostInt", aT], a)
294300
295301
296-func bs () = "%s%s__maxBoostInt__total"
302+func bv () = "%s%s__maxBoostInt__total"
297303
298304
299-func bt (aQ) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aQ], a)
305+func bw (aT) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aT], a)
300306
301307
302-func bu (aQ) = makeString(["%s%d__userBoostClaimed", aQ], a)
308+func bx (aT) = makeString(["%s%d__userBoostClaimed", aT], a)
303309
304310
305-func bv () = "%s%s__gwxCached__total"
311+func by () = "%s%s__gwxCached__total"
306312
307313
308-func bw () = "%s__gwxCachedTotalCorrective"
314+func bz () = "%s__gwxCachedTotalCorrective"
309315
310316
311-let bx = T()
317+let bA = W()
312318
313-let Y = V(bx)
319+let ab = Y(bA)
314320
315-let by = Z(Y)
321+let bB = ac(ab)
316322
317-let bz = aa(Y)
323+let bC = ad(ab)
318324
319-let bA = ab(Y)
325+let bD = ae(ab)
320326
321-func bB (bC) = {
322- let bD = makeString(["%s", "votingEmissionContract"], a)
323- let bE = addressFromStringValue(getStringValue(bx, bD))
324- let bF = makeString(["%s", "currentEpochUi"], a)
325- let bG = getIntegerValue(bE, bF)
326- let bH = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
327- let bI = getInteger(this, bH)
328- let bJ = valueOrElse(getInteger(this, bv()), 0)
329- let bK = if (isDefined(bI))
330- then (bG >= value(bI))
327+let bE = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), e("lp_staking_pools contract address is undefined"))), e("invalid lp_staking_pools contract address"))
328+
329+func bF (bG) = {
330+ let bH = makeString(["%s", "votingEmissionContract"], a)
331+ let bI = addressFromStringValue(getStringValue(bA, bH))
332+ let bJ = makeString(["%s", "currentEpochUi"], a)
333+ let bK = getIntegerValue(bI, bJ)
334+ let bL = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
335+ let bM = getInteger(this, bL)
336+ let bN = valueOrElse(getInteger(this, by()), 0)
337+ let bO = if (isDefined(bM))
338+ then (bK >= value(bM))
331339 else false
332- let bL = if (if (bK)
333- then bC
340+ let bP = if (if (bO)
341+ then bG
334342 else false)
335- then valueOrElse(getInteger(this, bw()), 0)
343+ then valueOrElse(getInteger(this, bz()), 0)
336344 else 0
337- max([0, (bJ + bL)])
345+ max([0, (bN + bP)])
338346 }
339347
340348
341-func bM (bN,bO,aR,bP,aT,bQ,bR,aD) = {
342- let bS = makeString(["%s%s%s%s__history", bN, bO, toBase58String(aD.transactionId)], a)
343- let bT = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aR), toString(bP), toString(aT), toString(bQ), toString(bR)], a)
344- StringEntry(bS, bT)
349+func bQ (bR,bS,aU,bT,aW,bU,bV,aG) = {
350+ let bW = makeString(["%s%s%s%s__history", bR, bS, toBase58String(aG.transactionId)], a)
351+ let bX = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aU), toString(bT), toString(aW), toString(bU), toString(bV)], a)
352+ StringEntry(bW, bX)
345353 }
346354
347355
348-func bU (bV,bW,bX,bY) = {
349- let bZ = bl()
350- let ca = bm()
351- let cb = bn()
352- let cc = bk()
353- let cd = h(this, bZ)
354- let ce = h(this, ca)
355- let cf = h(this, cb)
356- let cg = h(this, cc)
357-[IntegerEntry(bZ, (cd + bW)), IntegerEntry(ca, (ce + bX)), IntegerEntry(cb, (cf + bY)), IntegerEntry(cc, (cg + bV))]
356+func bY (bZ,ca,cb,cc) = {
357+ let cd = bo()
358+ let ce = bp()
359+ let cf = bq()
360+ let cg = bn()
361+ let ch = k(this, cd)
362+ let ci = k(this, ce)
363+ let cj = k(this, cf)
364+ let ck = k(this, cg)
365+[IntegerEntry(cd, (ch + ca)), IntegerEntry(ce, (ci + cb)), IntegerEntry(cf, (cj + cc)), IntegerEntry(cg, (ck + bZ))]
358366 }
359367
360368
361-func ch (ci,cj,ck) = {
362- let cl = 1000
363- (((ci * ck) + cj) / cl)
369+func cl (cm,cn,co) = {
370+ let cp = 1000
371+ (((cm * co) + cn) / cp)
364372 }
365373
366374
367-func cm (aN,aQ,aR,aS,aT,bQ,bR,bi) = {
368- let cn = bc(aQ)
369- let co = bd(aQ)
370- let cp = be(aQ)
371- let cq = bf(aQ)
372- let cr = bg(aQ)
373- let cs = bh(aQ, bi)
374- let ct = bj(aQ, bi)
375- let aX = ch(bQ, bR, height)
376-[IntegerEntry(cn, aR), IntegerEntry(co, aS), IntegerEntry(cp, aT), IntegerEntry(cq, bQ), IntegerEntry(cr, bR), IntegerEntry(cs, bQ), IntegerEntry(ct, bR), StringEntry(aM(aN), aY(aQ, aR, aS, aT, bQ, bR, aX))]
375+func cq (aQ,aT,aU,aV,aW,bU,bV,bl) = {
376+ let cr = bf(aT)
377+ let cs = bg(aT)
378+ let ct = bh(aT)
379+ let cu = bi(aT)
380+ let cv = bj(aT)
381+ let cw = bk(aT, bl)
382+ let cx = bm(aT, bl)
383+ let ba = cl(bU, bV, height)
384+[IntegerEntry(cr, aU), IntegerEntry(cs, aV), IntegerEntry(ct, aW), IntegerEntry(cu, bU), IntegerEntry(cv, bV), IntegerEntry(cw, bU), IntegerEntry(cx, bV), StringEntry(aP(aQ), bb(aT, aU, aV, aW, bU, bV, ba))]
377385 }
378386
379387
380-func cu (aD,cv) = if ((size(aD.payments) > 1))
388+func cy (aG,cz) = if ((size(aG.payments) > 1))
381389 then throw("only one payment is allowed")
382- else if ((size(aD.payments) == 0))
390+ else if ((size(aG.payments) == 0))
383391 then 0
384392 else {
385- let cw = aD.payments[0]
386- if ((value(cw.assetId) != cv))
393+ let cA = aG.payments[0]
394+ if ((value(cA.assetId) != cz))
387395 then throw("invalid asset id in payment")
388- else cw.amount
396+ else cA.amount
389397 }
390398
391399
392-func cx (aN,cy) = {
393- let cz = "empty"
394- let cA = ba(aN)
395- let aQ = valueOrElse(getString(cA), cz)
396- let bQ = valueOrElse(getInteger(bf(aQ)), 0)
397- let bR = valueOrElse(getInteger(bg(aQ)), 0)
398- let cB = ch(bQ, bR, cy)
399- let aX = if ((0 > cB))
400+func cB (aQ,cC) = {
401+ let cD = "empty"
402+ let cE = bd(aQ)
403+ let aT = valueOrElse(getString(cE), cD)
404+ let bU = valueOrElse(getInteger(bi(aT)), 0)
405+ let bV = valueOrElse(getInteger(bj(aT)), 0)
406+ let cF = cl(bU, bV, cC)
407+ let ba = if ((0 > cF))
400408 then 0
401- else cB
402- aX
409+ else cF
410+ ba
403411 }
404412
405413
406-func cC (aN) = cx(aN, height)
414+func cG (aQ) = cB(aQ, height)
407415
408416
409-func cD (cE,cF,cG) = {
410- let cz = "EMPTY"
411- let cH = valueOrElse(getString(this, aM(cF)), cz)
412- if ((cH == cz))
417+func cH (cI,cJ,cK) = {
418+ let cD = "EMPTY"
419+ let cL = valueOrElse(getString(this, aP(cJ)), cD)
420+ if ((cL == cD))
413421 then $Tuple3(0, nil, "userRecord::is::empty")
414422 else {
415- let cI = split(cH, a)
416- let cJ = cI[aG]
417- let cK = valueOrElse(getInteger(bA, ak()), 0)
418- let cL = "empty"
419- let cM = if ((cE != cL))
423+ let cM = split(cL, a)
424+ let cN = cM[aJ]
425+ let cO = valueOrElse(getInteger(bD, an()), 0)
426+ let cP = "empty"
427+ let cQ = if ((cI != cP))
420428 then {
421- let cN = valueOrErrorMessage(getString(bx, K(cE)), ("unsupported lp asset " + cE))
422- let cO = getIntegerValue(bx, O(cN))
423- let cP = valueOrElse(getInteger(bx, Q(cN, 0)), cO)
424- $Tuple2(cP, cO)
429+ let cR = valueOrErrorMessage(getString(bA, N(cI)), ("unsupported lp asset " + cI))
430+ let cS = getIntegerValue(bA, R(cR))
431+ let cT = valueOrElse(getInteger(bA, T(cR, 0)), cS)
432+ $Tuple2(cT, cS)
425433 }
426- else if (cG)
434+ else if (cK)
427435 then $Tuple2(0, 0)
428- else throw(("not readonly mode: unsupported lp asset " + cE))
429- let cQ = cM._1
430- let cR = cM._2
431- let cS = k(by, ae())
432- let cT = k(by, ag())
433- let cU = k(by, ai())
434- let ck = if ((height > cU))
435- then cU
436+ else throw(("not readonly mode: unsupported lp asset " + cI))
437+ let cU = cQ._1
438+ let cV = cQ._2
439+ let cW = n(bB, ah())
440+ let cX = n(bB, aj())
441+ let cY = n(bB, al())
442+ let co = if ((height > cY))
443+ then cY
436444 else height
437- let cV = max([(ck - cT), 0])
438- let cW = bp(cJ, cE)
439- let cX = bo(cJ)
440- let cY = valueOrElse(getInteger(this, cW), h(this, cX))
441- let cZ = (((cS * cV) * 2) / 3)
442- let da = (cZ - cY)
443- let db = fraction(da, 3, (2 * cS))
444- let dc = (ck - db)
445- let dd = max([(cK - dc), 0])
446- let de = ((ck - dc) - dd)
447- if (if (if ((0 > dc))
445+ let cZ = max([(co - cX), 0])
446+ let da = bs(cN, cI)
447+ let db = br(cN)
448+ let dc = valueOrElse(getInteger(this, da), k(this, db))
449+ let dd = (((cW * cZ) * 2) / 3)
450+ let de = (dd - dc)
451+ let df = fraction(de, 3, (2 * cW))
452+ let dg = (co - df)
453+ let dh = max([(cO - dg), 0])
454+ let di = ((co - dg) - dh)
455+ if (if (if ((0 > dg))
448456 then true
449- else (0 > de))
457+ else (0 > di))
450458 then true
451- else (l(((dd + de) - db)) >= 1))
452- then throw(((((((("invalid udh calc: udh=" + toString(db)) + " uLastH=") + toString(dc)) + " udh0=") + toString(dd)) + " udh1=") + toString(de)))
453- else if ((0 > da))
459+ else (o(((dh + di) - df)) >= 1))
460+ then throw(((((((("invalid udh calc: udh=" + toString(df)) + " uLastH=") + toString(dg)) + " udh0=") + toString(dh)) + " udh1=") + toString(di)))
461+ else if ((0 > de))
454462 then throw("wrong calculations")
455463 else {
456- let df = br(cJ)
457- let dg = bs()
458- let dh = h(this, df)
459- let di = h(this, dg)
460- let dj = bB(true)
461- let dk = cC(cF)
462- let dl = bt(cJ)
463- let dm = h(this, dl)
464- let dn = if ((db == 0))
464+ let dj = bu(cN)
465+ let dk = bv()
466+ let dl = k(this, dj)
467+ let dm = k(this, dk)
468+ let dn = bF(true)
469+ let do = cG(cJ)
470+ let dp = bw(cN)
471+ let dq = k(this, dp)
472+ let dr = if ((df == 0))
465473 then 0
466- else fraction(da, dd, db)
467- let do = if ((db == 0))
474+ else fraction(de, dh, df)
475+ let ds = if ((df == 0))
468476 then 0
469- else fraction(da, de, db)
470- let dp = fraction(dn, cQ, d)
471- let dq = fraction(do, cR, d)
472- let dr = if ((dj == 0))
477+ else fraction(de, di, df)
478+ let dt = fraction(dr, cU, d)
479+ let du = fraction(ds, cV, d)
480+ let dv = if ((dn == 0))
473481 then 0
474- else fraction(dp, dk, dj)
475- let ds = if ((dj == 0))
482+ else fraction(dt, do, dn)
483+ let dw = if ((dn == 0))
476484 then 0
477- else fraction(dq, dk, dj)
478- let dt = (dr + ds)
479- let du = bu(cJ)
480- let dv = h(this, du)
481- let dw = (dt - dv)
482- let dx = [IntegerEntry(cW, cZ)]
483- let dy = makeString([toString(cY), toString(da), toString(dv), toString(dw), toString(cQ), toString(cR), toString(ck), toString(db), toString(dc), toString(dd), toString(de), toString(dk), toString(dj)], ":")
484- $Tuple3(dt, dx, dy)
485+ else fraction(du, do, dn)
486+ let dx = (dv + dw)
487+ let dy = bx(cN)
488+ let dz = k(this, dy)
489+ let dA = (dx - dz)
490+ let dB = [IntegerEntry(da, dd)]
491+ let dC = makeString([toString(dc), toString(de), toString(dz), toString(dA), toString(cU), toString(cV), toString(co), toString(df), toString(dg), toString(dh), toString(di), toString(do), toString(dn)], ":")
492+ $Tuple3(dx, dB, dC)
485493 }
486494 }
487495 }
488496
489497
490-func dz (aD,aT) = {
491- let dA = ar()
492- let dB = dA[al]
493- let au = fromBase58String(dB)
494- let av = parseIntValue(dA[am])
495- let aw = parseIntValue(dA[an])
496- let ax = parseIntValue(dA[ao])
497- if ((size(aD.payments) != 1))
498+func dD (aG,aW) = {
499+ let dE = au()
500+ let dF = dE[ao]
501+ let ax = fromBase58String(dF)
502+ let ay = parseIntValue(dE[ap])
503+ let az = parseIntValue(dE[aq])
504+ let aA = parseIntValue(dE[ar])
505+ if ((size(aG.payments) != 1))
498506 then throw("invalid payment - exact one payment must be attached")
499507 else {
500- let cw = aD.payments[0]
501- let dC = cw.amount
502- if ((au != value(cw.assetId)))
503- then throw((("invalid asset is in payment - " + dB) + " is expected"))
508+ let cA = aG.payments[0]
509+ let dG = cA.amount
510+ if ((ax != value(cA.assetId)))
511+ then throw((("invalid asset is in payment - " + dF) + " is expected"))
504512 else {
505- let dD = aZ()
506- let cF = toString(aD.caller)
507- let dE = isDefined(getString(ba(cF)))
508- let cJ = if (dE)
509- then value(getString(ba(cF)))
510- else toString(k(this, dD))
511- let aQ = parseIntValue(cJ)
512- let bP = height
513- let co = bd(cJ)
514- let cp = be(cJ)
515- let cn = bc(cJ)
516- if ((av > dC))
517- then throw(("amount is less then minLockAmount=" + toString(av)))
518- else if ((aw > aT))
519- then throw(("passed duration is less then minLockDuration=" + toString(aw)))
520- else if ((aT > ax))
521- then throw(("passed duration is greater then maxLockDuration=" + toString(ax)))
522- else if (if (dE)
523- then ((k(this, co) + k(this, cp)) >= bP)
513+ let dH = bc()
514+ let cJ = toString(aG.caller)
515+ let dI = isDefined(getString(bd(cJ)))
516+ let cN = if (dI)
517+ then value(getString(bd(cJ)))
518+ else toString(n(this, dH))
519+ let aT = parseIntValue(cN)
520+ let bT = height
521+ let cs = bg(cN)
522+ let ct = bh(cN)
523+ let cr = bf(cN)
524+ if (if ((ay > dG))
525+ then (aG.caller != bE)
526+ else false)
527+ then throw(("amount is less then minLockAmount=" + toString(ay)))
528+ else if ((az > aW))
529+ then throw(("passed duration is less then minLockDuration=" + toString(az)))
530+ else if ((aW > aA))
531+ then throw(("passed duration is greater then maxLockDuration=" + toString(aA)))
532+ else if (if (dI)
533+ then ((n(this, cs) + n(this, ct)) >= bT)
524534 else false)
525535 then throw("there is an active lock - consider to use increaseLock")
526- else if ((h(this, cn) > 0))
527- then throw(("there are locked WXs - consider to use increaseLock " + cn))
536+ else if ((k(this, cr) > 0))
537+ then throw(("there are locked WXs - consider to use increaseLock " + cr))
528538 else {
529- let dF = fraction(aT, c, ax)
530- let dG = fraction(dC, dF, c)
531- let dH = n(invoke(as, "calcGwxParamsREADONLY", [dG, bP, aT], nil))
532- let bQ = q(dH[0])
533- let bR = q(dH[1])
534- let bi = toString(q(dH[2]))
535- let cS = k(by, ae())
536- let cT = k(by, ag())
537- let cU = k(by, ai())
538- let ck = if ((height > cU))
539- then cU
539+ let dJ = fraction(aW, c, aA)
540+ let dK = fraction(dG, dJ, c)
541+ let dL = q(invoke(av, "calcGwxParamsREADONLY", [dK, bT, aW], nil))
542+ let bU = t(dL[0])
543+ let bV = t(dL[1])
544+ let bl = toString(t(dL[2]))
545+ let cW = n(bB, ah())
546+ let cX = n(bB, aj())
547+ let cY = n(bB, al())
548+ let co = if ((height > cY))
549+ then cY
540550 else height
541- let cV = max([(ck - cT), 0])
542- let cX = bo(cJ)
543- let cZ = (((cS * cV) * 2) / 3)
544- let df = br(cJ)
545- let dg = bs()
546- let dh = ((dG * aT) / 2)
547- let di = h(this, dg)
548- let bJ = bB(false)
549- let dI = if (dE)
551+ let cZ = max([(co - cX), 0])
552+ let db = br(cN)
553+ let dd = (((cW * cZ) * 2) / 3)
554+ let dj = bu(cN)
555+ let dk = bv()
556+ let dl = ((dK * aW) / 2)
557+ let dm = k(this, dk)
558+ let bN = bF(false)
559+ let dM = if (dI)
550560 then nil
551- else [IntegerEntry(dD, (aQ + 1)), StringEntry(ba(cF), cJ), StringEntry(bb(cJ), cF)]
552- $Tuple2(((((dI ++ cm(cF, cJ, dC, bP, aT, bQ, bR, bi)) ++ bU(dC, aT, 1, if (dE)
561+ else [IntegerEntry(dH, (aT + 1)), StringEntry(bd(cJ), cN), StringEntry(be(cN), cJ)]
562+ $Tuple2(((((dM ++ cq(cJ, cN, dG, bT, aW, bU, bV, bl)) ++ bY(dG, aW, 1, if (dI)
553563 then 0
554- else 1)) :+ bM("lock", cF, dC, bP, aT, bQ, bR, aD)) ++ [IntegerEntry(cX, cZ), IntegerEntry(bv(), (bJ + dG))]), dG)
564+ else 1)) :+ bQ("lock", cJ, dG, bT, aW, bU, bV, aG)) ++ [IntegerEntry(db, dd), IntegerEntry(by(), (bN + dK))]), dK)
555565 }
556566 }
557567 }
558568 }
559569
560570
561-@Callable(aD)
562-func constructor (dJ,dK,av,dL,dM,as) = {
563- let dN = aC(aD)
564- if ((dN == dN))
565- then ([IntegerEntry(aZ(), 0), StringEntry(aq(), ay(dK, av, dL, dM, as)), StringEntry(x(), dJ)] ++ bU(0, 0, 0, 0))
571+@Callable(aG)
572+func constructor (dN,dO,ay,dP,dQ,av) = {
573+ let dR = aF(aG)
574+ if ((dR == dR))
575+ then ([IntegerEntry(bc(), 0), StringEntry(at(), aB(dO, ay, dP, dQ, av)), StringEntry(A(), dN)] ++ bY(0, 0, 0, 0))
566576 else throw("Strict value is not equal to itself.")
567577 }
568578
569579
570580
571-@Callable(aD)
572-func lockRef (aT,dO,dP) = {
573- let dQ = dz(aD, aT)
574- let dR = dQ._1
575- let dG = dQ._2
576- let dS = toString(aD.caller)
577- let dT = if (if ((dO == ""))
581+@Callable(aG)
582+func lockRef (aW,dS,dT) = {
583+ let dU = dD(aG, aW)
584+ let dV = dU._1
585+ let dK = dU._2
586+ let dW = toString(aG.caller)
587+ let dX = if (if ((dS == ""))
578588 then true
579- else (dP == base58''))
589+ else (dT == base58''))
580590 then unit
581- else invoke(t, "createPair", [w, dO, dS, dP], nil)
582- if ((dT == dT))
591+ else invoke(w, "createPair", [z, dS, dW, dT], nil)
592+ if ((dX == dX))
583593 then {
584- let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
585- if ((dU == dU))
586- then $Tuple2(dR, unit)
594+ let dY = invoke(av, "updateReferralActivity", [toString(aG.caller), dK], nil)
595+ if ((dY == dY))
596+ then $Tuple2(dV, unit)
587597 else throw("Strict value is not equal to itself.")
588598 }
589599 else throw("Strict value is not equal to itself.")
591601
592602
593603
594-@Callable(aD)
595-func lock (aT) = {
596- let dV = dz(aD, aT)
597- let dR = dV._1
598- let dG = dV._2
599- let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
600- if ((dU == dU))
601- then $Tuple2(dR, unit)
604+@Callable(aG)
605+func lock (aW) = {
606+ let dZ = dD(aG, aW)
607+ let dV = dZ._1
608+ let dK = dZ._2
609+ let dY = invoke(av, "updateReferralActivity", [toString(aG.caller), dK], nil)
610+ if ((dY == dY))
611+ then $Tuple2(dV, unit)
602612 else throw("Strict value is not equal to itself.")
603613 }
604614
605615
606616
607-@Callable(aD)
608-func increaseLock (dW) = {
609- let dA = ar()
610- let dB = dA[al]
611- let au = fromBase58String(dB)
612- let aw = parseIntValue(dA[an])
613- let ax = parseIntValue(dA[ao])
614- let dC = cu(aD, au)
615- let cF = toString(aD.caller)
616- let cI = aO(cF)
617- let cJ = cI[aG]
618- let dX = parseIntValue(cI[aH])
619- let bP = parseIntValue(cI[aI])
620- let dY = parseIntValue(cI[aJ])
621- let dZ = (bP + dY)
622- let ea = max([(dZ - height), 0])
623- let eb = (dX + dC)
624- let ec = (ea + dW)
625- if ((0 > dW))
617+@Callable(aG)
618+func increaseLock (ea) = {
619+ let dE = au()
620+ let dF = dE[ao]
621+ let ax = fromBase58String(dF)
622+ let az = parseIntValue(dE[aq])
623+ let aA = parseIntValue(dE[ar])
624+ let dG = cy(aG, ax)
625+ let cJ = toString(aG.caller)
626+ let cM = aR(cJ)
627+ let cN = cM[aJ]
628+ let eb = parseIntValue(cM[aK])
629+ let bT = parseIntValue(cM[aL])
630+ let ec = parseIntValue(cM[aM])
631+ let ed = (bT + ec)
632+ let ee = max([(ed - height), 0])
633+ let ef = (eb + dG)
634+ let eg = (ee + ea)
635+ if ((0 > ea))
626636 then throw("duration is less then zero")
627- else if ((aw > ec))
628- then throw(("lockDurationNew is less then minLockDuration=" + toString(aw)))
629- else if ((ec > ax))
630- then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(ax)))
637+ else if ((az > eg))
638+ then throw(("lockDurationNew is less then minLockDuration=" + toString(az)))
639+ else if ((eg > aA))
640+ then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aA)))
631641 else {
632- let dF = fraction(ec, c, ax)
633- let dG = fraction(eb, dF, c)
634- let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
635- if ((dU == dU))
642+ let dJ = fraction(eg, c, aA)
643+ let dK = fraction(ef, dJ, c)
644+ let dY = invoke(av, "updateReferralActivity", [toString(aG.caller), dK], nil)
645+ if ((dY == dY))
636646 then {
637- let ed = height
638- let dH = n(invoke(as, "calcGwxParamsREADONLY", [dG, ed, ec], nil))
639- let bQ = q(dH[0])
640- let bR = q(dH[1])
641- let bi = toString(q(dH[2]))
642- let cS = k(by, ae())
643- let cT = k(by, ag())
644- let cU = k(by, ai())
645- let ck = if ((height > cU))
646- then cU
647+ let eh = height
648+ let dL = q(invoke(av, "calcGwxParamsREADONLY", [dK, eh, eg], nil))
649+ let bU = t(dL[0])
650+ let bV = t(dL[1])
651+ let bl = toString(t(dL[2]))
652+ let cW = n(bB, ah())
653+ let cX = n(bB, aj())
654+ let cY = n(bB, al())
655+ let co = if ((height > cY))
656+ then cY
647657 else height
648- let cV = max([(ck - cT), 0])
649- let cX = bo(cJ)
650- let cY = h(this, cX)
651- let cZ = (((cS * cV) * 2) / 3)
652- let da = (cZ - cY)
653- if ((0 > da))
658+ let cZ = max([(co - cX), 0])
659+ let db = br(cN)
660+ let dc = k(this, db)
661+ let dd = (((cW * cZ) * 2) / 3)
662+ let de = (dd - dc)
663+ if ((0 > de))
654664 then throw("wrong calculations")
655665 else {
656- let df = br(cJ)
657- let dg = bs()
658- let dh = h(this, df)
659- let di = h(this, dg)
660- let ee = cC(cF)
661- let ef = (dG - ee)
662- if ((0 > ef))
663- then throw(("gwxDiff is less then 0: " + toString(ef)))
666+ let dj = bu(cN)
667+ let dk = bv()
668+ let dl = k(this, dj)
669+ let dm = k(this, dk)
670+ let ei = cG(cJ)
671+ let ej = (dK - ei)
672+ if ((0 > ej))
673+ then throw(("gwxDiff is less then 0: " + toString(ej)))
664674 else {
665- let bJ = bB(false)
666- let dj = bB(true)
667- let dl = bt(cJ)
668- let dm = h(this, dl)
669- let dt = fraction(da, ee, dj)
670- let eg = ((dG * ec) / 2)
671- let eh = ((ee * ea) / 2)
672- let ei = (eg - eh)
673- (((cm(cF, cJ, eb, ed, ec, bQ, bR, bi) ++ bU(dC, dW, 0, 0)) :+ bM("lock", cF, dC, bP, ec, bQ, bR, aD)) ++ [IntegerEntry(bv(), (bJ + ef))])
675+ let bN = bF(false)
676+ let dn = bF(true)
677+ let dp = bw(cN)
678+ let dq = k(this, dp)
679+ let dx = fraction(de, ei, dn)
680+ let ek = ((dK * eg) / 2)
681+ let el = ((ei * ee) / 2)
682+ let em = (ek - el)
683+ (((cq(cJ, cN, ef, eh, eg, bU, bV, bl) ++ bY(dG, ea, 0, 0)) :+ bQ("lock", cJ, dG, bT, eg, bU, bV, aG)) ++ [IntegerEntry(by(), (bN + ej))])
674684 }
675685 }
676686 }
680690
681691
682692
683-@Callable(aD)
684-func claimWxBoost (cE,cF) = if ((bz != aD.caller))
693+@Callable(aG)
694+func claimWxBoost (cI,cJ) = if ((bC != aG.caller))
685695 then throw("permissions denied")
686696 else {
687- let ej = cD(cE, cF, false)
688- let dw = ej._1
689- let dx = ej._2
690- let dy = ej._3
691- $Tuple2(dx, [dw])
697+ let en = cH(cI, cJ, false)
698+ let dA = en._1
699+ let dB = en._2
700+ let dC = en._3
701+ $Tuple2(dB, [dA])
692702 }
693703
694704
695705
696-@Callable(aD)
697-func claimWxBoostREADONLY (cE,cF) = {
698- let ek = cD(cE, cF, true)
699- let dw = ek._1
700- let dx = ek._2
701- let dy = ek._3
702- $Tuple2(nil, [dw, dy])
706+@Callable(aG)
707+func claimWxBoostREADONLY (cI,cJ) = {
708+ let eo = cH(cI, cJ, true)
709+ let dA = eo._1
710+ let dB = eo._2
711+ let dC = eo._3
712+ $Tuple2(nil, [dA, dC])
703713 }
704714
705715
706716
707-@Callable(aD)
708-func unlock (aN) = {
709- let cI = aO(aN)
710- let cJ = cI[aG]
711- let dX = parseIntValue(cI[aH])
712- let bP = parseIntValue(cI[aI])
713- let dY = parseIntValue(cI[aJ])
714- let dZ = (bP + dY)
715- let dA = ar()
716- let au = fromBase58String(dA[al])
717- if ((dZ >= height))
718- then throw((("wait " + toString(dZ)) + " to unlock"))
719- else if ((0 >= dX))
717+@Callable(aG)
718+func unlock (aQ) = {
719+ let cM = aR(aQ)
720+ let cN = cM[aJ]
721+ let eb = parseIntValue(cM[aK])
722+ let bT = parseIntValue(cM[aL])
723+ let ec = parseIntValue(cM[aM])
724+ let ed = (bT + ec)
725+ let dE = au()
726+ let ax = fromBase58String(dE[ao])
727+ if ((ed >= height))
728+ then throw((("wait " + toString(ed)) + " to unlock"))
729+ else if ((0 >= eb))
720730 then throw("nothing to unlock")
721731 else {
722- let bi = valueOrElse(getInteger(as, aj()), 0)
723- (((cm(aN, cJ, 0, bP, dY, 0, 0, toString(bi)) ++ bU(-(dX), 0, 0, -1)) :+ bM("unlock", aN, dX, bP, dY, 0, 0, aD)) :+ ScriptTransfer(addressFromStringValue(aN), dX, au))
732+ let bl = valueOrElse(getInteger(av, am()), 0)
733+ (((cq(aQ, cN, 0, bT, ec, 0, 0, toString(bl)) ++ bY(-(eb), 0, 0, -1)) :+ bQ("unlock", aQ, eb, bT, ec, 0, 0, aG)) :+ ScriptTransfer(addressFromStringValue(aQ), eb, ax))
724734 }
725735 }
726736
727737
728738
729-@Callable(aD)
730-func gwxUserInfoREADONLY (aN) = {
731- let aX = cC(aN)
732- $Tuple2(nil, [aX])
739+@Callable(aG)
740+func gwxUserInfoREADONLY (aQ) = {
741+ let ba = cG(aQ)
742+ $Tuple2(nil, [ba])
733743 }
734744
735745
736746
737-@Callable(aD)
738-func getUserGwxAmountAtHeightREADONLY (aN,cy) = {
739- let aX = cx(aN, cy)
740- $Tuple2(nil, aX)
747+@Callable(aG)
748+func userMaxDurationREADONLY (cJ) = {
749+ let dE = au()
750+ let aA = parseIntValue(dE[ar])
751+ let ep = getString(this, aP(cJ))
752+ if ((ep == unit))
753+ then $Tuple2(nil, $Tuple2("lock", aA))
754+ else {
755+ let cM = split(value(ep), a)
756+ let bT = parseIntValue(cM[aL])
757+ let ec = parseIntValue(cM[aM])
758+ let ed = (bT + ec)
759+ let ee = max([(ed - height), 0])
760+ let eq = (aA - ee)
761+ $Tuple2(nil, $Tuple2("increaseLock", eq))
762+ }
741763 }
742764
743765
744766
745-@Callable(aD)
746-func getTotalCachedGwxREADONLY () = $Tuple2(nil, bB(true))
767+@Callable(aG)
768+func getUserGwxAmountAtHeightREADONLY (aQ,cC) = {
769+ let ba = cB(aQ, cC)
770+ $Tuple2(nil, ba)
771+ }
747772
748773
749774
750-@Callable(aD)
751-func setManager (el) = {
752- let dN = aC(aD)
753- if ((dN == dN))
775+@Callable(aG)
776+func getTotalCachedGwxREADONLY () = $Tuple2(nil, bF(true))
777+
778+
779+
780+@Callable(aG)
781+func setManager (er) = {
782+ let dR = aF(aG)
783+ if ((dR == dR))
754784 then {
755- let em = fromBase58String(el)
756- if ((em == em))
757- then [StringEntry(ad(), el)]
785+ let es = fromBase58String(er)
786+ if ((es == es))
787+ then [StringEntry(ag(), er)]
758788 else throw("Strict value is not equal to itself.")
759789 }
760790 else throw("Strict value is not equal to itself.")
762792
763793
764794
765-@Callable(aD)
795+@Callable(aG)
766796 func confirmManager () = {
767- let en = aB()
768- let eo = if (isDefined(en))
797+ let et = aE()
798+ let eu = if (isDefined(et))
769799 then true
770800 else throw("No pending manager")
771- if ((eo == eo))
801+ if ((eu == eu))
772802 then {
773- let ep = if ((aD.callerPublicKey == value(en)))
803+ let ev = if ((aG.callerPublicKey == value(et)))
774804 then true
775805 else throw("You are not pending manager")
776- if ((ep == ep))
777- then [StringEntry(ac(), toBase58String(value(en))), DeleteEntry(ad())]
806+ if ((ev == ev))
807+ then [StringEntry(af(), toBase58String(value(et))), DeleteEntry(ag())]
778808 else throw("Strict value is not equal to itself.")
779809 }
780810 else throw("Strict value is not equal to itself.")
781811 }
782812
783813
784-@Verifier(eq)
785-func er () = {
786- let es = {
787- let o = az()
788- if ($isInstanceOf(o, "ByteVector"))
814+@Verifier(ew)
815+func ex () = {
816+ let ey = {
817+ let r = aC()
818+ if ($isInstanceOf(r, "ByteVector"))
789819 then {
790- let aF = o
791- aF
820+ let aI = r
821+ aI
792822 }
793- else if ($isInstanceOf(o, "Unit"))
794- then eq.senderPublicKey
823+ else if ($isInstanceOf(r, "Unit"))
824+ then ew.senderPublicKey
795825 else throw("Match error")
796826 }
797- sigVerify(eq.bodyBytes, eq.proofs[0], es)
827+ sigVerify(ew.bodyBytes, ew.proofs[0], ey)
798828 }
799829
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 8
77
88 let c = 100000000
99
1010 let d = c
1111
12-func e (f,g) = valueOrErrorMessage(getString(f, g), (("mandatory this." + g) + " is not defined"))
12+func e (f) = makeString(["boosting.ride:", f], " ")
1313
1414
15-func h (f,g) = valueOrElse(getInteger(f, g), 0)
15+func g (f) = throw(e(f))
1616
1717
18-func i (f,g,j) = valueOrElse(getInteger(f, g), j)
18+func h (i,j) = valueOrErrorMessage(getString(i, j), (("mandatory this." + j) + " is not defined"))
1919
2020
21-func k (f,g) = valueOrErrorMessage(getInteger(f, g), (("mandatory this." + g) + " is not defined"))
21+func k (i,j) = valueOrElse(getInteger(i, j), 0)
2222
2323
24-func l (m) = if ((0 > m))
25- then -(m)
26- else m
24+func l (i,j,m) = valueOrElse(getInteger(i, j), m)
2725
2826
29-func n (m) = {
30- let o = m
31- if ($isInstanceOf(o, "List[Any]"))
27+func n (i,j) = valueOrErrorMessage(getInteger(i, j), (("mandatory this." + j) + " is not defined"))
28+
29+
30+func o (p) = if ((0 > p))
31+ then -(p)
32+ else p
33+
34+
35+func q (p) = {
36+ let r = p
37+ if ($isInstanceOf(r, "List[Any]"))
3238 then {
33- let p = o
34- p
39+ let s = r
40+ s
3541 }
3642 else throw("fail to cast into List[Any]")
3743 }
3844
3945
40-func q (m) = {
41- let o = m
42- if ($isInstanceOf(o, "Int"))
46+func t (p) = {
47+ let r = p
48+ if ($isInstanceOf(r, "Int"))
4349 then {
44- let r = o
45- r
50+ let u = r
51+ u
4652 }
4753 else throw("fail to cast into Int")
4854 }
4955
5056
51-func s () = makeString(["%s%s", "config", "referralsContractAddress"], a)
57+func v () = makeString(["%s%s", "config", "referralsContractAddress"], a)
5258
5359
54-let t = addressFromStringValue(e(this, s()))
60+let w = addressFromStringValue(h(this, v()))
5561
56-let u = makeString(["%s%s", "referral", "programName"], a)
62+let x = makeString(["%s%s", "referral", "programName"], a)
5763
58-let v = "wxlock"
64+let y = "wxlock"
5965
60-let w = valueOrElse(getString(this, u), v)
66+let z = valueOrElse(getString(this, x), y)
6167
62-func x () = "%s%s__config__factoryAddress"
68+func A () = "%s%s__config__factoryAddress"
6369
6470
65-let y = 1
71+let B = 1
6672
67-let z = 2
73+let C = 2
6874
69-let A = 3
75+let D = 3
7076
71-let B = 4
77+let E = 4
7278
73-let C = 5
79+let F = 5
7480
75-let D = 6
81+let G = 6
7682
77-let E = 7
83+let H = 7
7884
79-let F = 8
85+let I = 8
8086
81-let G = 9
87+let J = 9
8288
83-let H = 10
89+let K = 10
8490
85-let I = 11
91+let L = 11
8692
87-func J () = "%s__factoryConfig"
93+func M () = "%s__factoryConfig"
8894
8995
90-func K (L) = makeString(["%s%s%s", L, "mappings__lpAsset2PoolContract"], a)
96+func N (O) = makeString(["%s%s%s", O, "mappings__lpAsset2PoolContract"], a)
9197
9298
93-func M () = "%s__lpTokensList"
99+func P () = "%s__lpTokensList"
94100
95101
96-func N (L) = makeString(["%s%s%s", L, "mappings__lpAsset2PoolContract"], a)
102+func Q (O) = makeString(["%s%s%s", O, "mappings__lpAsset2PoolContract"], a)
97103
98104
99-func O (P) = makeString(["%s%s", "poolWeight", P], a)
105+func R (S) = makeString(["%s%s", "poolWeight", S], a)
100106
101107
102-func Q (R,S) = ((("%s%s__poolWeight__" + R) + "__") + toString(S))
108+func T (U,V) = ((("%s%s__poolWeight__" + U) + "__") + toString(V))
103109
104110
105-func T () = addressFromStringValue(e(this, x()))
111+func W () = addressFromStringValue(h(this, A()))
106112
107113
108-func U () = split(valueOrElse(getString(T(), M()), ""), a)
114+func X () = split(valueOrElse(getString(W(), P()), ""), a)
109115
110116
111-func V (W) = split(e(W, J()), a)
117+func Y (Z) = split(h(Z, M()), a)
112118
113119
114-func X (Y) = addressFromStringValue(Y[z])
120+func aa (ab) = addressFromStringValue(ab[C])
115121
116122
117-func Z (Y) = addressFromStringValue(Y[C])
123+func ac (ab) = addressFromStringValue(ab[F])
118124
119125
120-func aa (Y) = addressFromStringValue(Y[y])
126+func ad (ab) = addressFromStringValue(ab[B])
121127
122128
123-func ab (Y) = addressFromStringValue(Y[H])
129+func ae (ab) = addressFromStringValue(ab[K])
124130
125131
126-func ac () = "%s__managerPublicKey"
132+func af () = "%s__managerPublicKey"
127133
128134
129-func ad () = "%s__pendingManagerPublicKey"
135+func ag () = "%s__pendingManagerPublicKey"
130136
131137
132-func ae () = "%s%s__ratePerBlock__current"
138+func ah () = "%s%s__ratePerBlock__current"
133139
134140
135-func af () = "%s%s__ratePerBlockMax__current"
141+func ai () = "%s%s__ratePerBlockMax__current"
136142
137143
138-func ag () = "%s%s__emission__startBlock"
144+func aj () = "%s%s__emission__startBlock"
139145
140146
141-func ah () = "%s%s__emission__duration"
147+func ak () = "%s%s__emission__duration"
142148
143149
144-func ai () = "%s%s__emission__endBlock"
150+func al () = "%s%s__emission__endBlock"
145151
146152
147-func aj () = "%s__nextPeriod"
153+func am () = "%s__nextPeriod"
148154
149155
150-func ak () = "%s%s__gwxRewardEmissionPart__startHeight"
156+func an () = "%s%s__gwxRewardEmissionPart__startHeight"
151157
152158
153-let al = 1
159+let ao = 1
154160
155-let am = 2
161+let ap = 2
156162
157-let an = 3
163+let aq = 3
158164
159-let ao = 4
165+let ar = 4
160166
161-let ap = 5
167+let as = 5
162168
163-func aq () = "%s__config"
169+func at () = "%s__config"
164170
165171
166-func ar () = split(e(this, aq()), a)
172+func au () = split(h(this, at()), a)
167173
168174
169-let as = addressFromStringValue(ar()[ap])
175+let av = addressFromStringValue(au()[as])
170176
171-func at (au,av,aw,ax,as) = makeString(["%s%d%d%d", au, av, aw, ax, as], a)
177+func aw (ax,ay,az,aA,av) = makeString(["%s%d%d%d", ax, ay, az, aA, av], a)
172178
173179
174-func ay (au,av,aw,ax,as) = at(au, toString(av), toString(aw), toString(ax), as)
180+func aB (ax,ay,az,aA,av) = aw(ax, toString(ay), toString(az), toString(aA), av)
175181
176182
177-func az () = {
178- let o = getString(ac())
179- if ($isInstanceOf(o, "String"))
183+func aC () = {
184+ let r = getString(af())
185+ if ($isInstanceOf(r, "String"))
180186 then {
181- let aA = o
182- fromBase58String(aA)
187+ let aD = r
188+ fromBase58String(aD)
183189 }
184- else if ($isInstanceOf(o, "Unit"))
190+ else if ($isInstanceOf(r, "Unit"))
185191 then unit
186192 else throw("Match error")
187193 }
188194
189195
190-func aB () = {
191- let o = getString(ad())
192- if ($isInstanceOf(o, "String"))
196+func aE () = {
197+ let r = getString(ag())
198+ if ($isInstanceOf(r, "String"))
193199 then {
194- let aA = o
195- fromBase58String(aA)
200+ let aD = r
201+ fromBase58String(aD)
196202 }
197- else if ($isInstanceOf(o, "Unit"))
203+ else if ($isInstanceOf(r, "Unit"))
198204 then unit
199205 else throw("Match error")
200206 }
201207
202208
203-func aC (aD) = {
204- let aE = throw("Permission denied")
205- let o = az()
206- if ($isInstanceOf(o, "ByteVector"))
209+func aF (aG) = {
210+ let aH = throw("Permission denied")
211+ let r = aC()
212+ if ($isInstanceOf(r, "ByteVector"))
207213 then {
208- let aF = o
209- if ((aD.callerPublicKey == aF))
214+ let aI = r
215+ if ((aG.callerPublicKey == aI))
210216 then true
211- else aE
217+ else aH
212218 }
213- else if ($isInstanceOf(o, "Unit"))
214- then if ((aD.caller == this))
219+ else if ($isInstanceOf(r, "Unit"))
220+ then if ((aG.caller == this))
215221 then true
216- else aE
222+ else aH
217223 else throw("Match error")
218224 }
219225
220226
221-let aG = 1
227+let aJ = 1
222228
223-let aH = 2
229+let aK = 2
224230
225-let aI = 3
231+let aL = 3
226232
227-let aJ = 4
233+let aM = 4
228234
229-let aK = 5
235+let aN = 5
230236
231-let aL = 6
237+let aO = 6
232238
233-func aM (aN) = makeString(["%s%s__lock", aN], a)
239+func aP (aQ) = makeString(["%s%s__lock", aQ], a)
234240
235241
236-func aO (aN) = split(e(this, aM(aN)), a)
242+func aR (aQ) = split(h(this, aP(aQ)), a)
237243
238244
239-func aP (aQ,aR,aS,aT,aU,aV,aW,aX) = makeString(["%d%d%d%d%d%d%d%d", aQ, aR, aS, aT, aU, aV, aW, aX], a)
245+func aS (aT,aU,aV,aW,aX,aY,aZ,ba) = makeString(["%d%d%d%d%d%d%d%d", aT, aU, aV, aW, aX, aY, aZ, ba], a)
240246
241247
242-func aY (aQ,aR,aS,aT,aU,aV,aX) = aP(aQ, toString(aR), toString(aS), toString(aT), toString(aU), toString(aV), toString(lastBlock.timestamp), toString(aX))
248+func bb (aT,aU,aV,aW,aX,aY,ba) = aS(aT, toString(aU), toString(aV), toString(aW), toString(aX), toString(aY), toString(lastBlock.timestamp), toString(ba))
243249
244250
245-func aZ () = "%s__nextUserNum"
251+func bc () = "%s__nextUserNum"
246252
247253
248-func ba (aN) = makeString(["%s%s%s__mapping__user2num", aN], a)
254+func bd (aQ) = makeString(["%s%s%s__mapping__user2num", aQ], a)
249255
250256
251-func bb (S) = makeString(["%s%s%s__mapping__num2user", S], a)
257+func be (V) = makeString(["%s%s%s__mapping__num2user", V], a)
252258
253259
254-func bc (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "amount"], a)
260+func bf (aT) = makeString(["%s%d%s__paramByUserNum", aT, "amount"], a)
255261
256262
257-func bd (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "start"], a)
263+func bg (aT) = makeString(["%s%d%s__paramByUserNum", aT, "start"], a)
258264
259265
260-func be (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "duration"], a)
266+func bh (aT) = makeString(["%s%d%s__paramByUserNum", aT, "duration"], a)
261267
262268
263-func bf (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "k"], a)
269+func bi (aT) = makeString(["%s%d%s__paramByUserNum", aT, "k"], a)
264270
265271
266-func bg (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "b"], a)
272+func bj (aT) = makeString(["%s%d%s__paramByUserNum", aT, "b"], a)
267273
268274
269-func bh (aQ,bi) = makeString(["%s%d%s%d__paramByPeriod", aQ, "k", bi], a)
275+func bk (aT,bl) = makeString(["%s%d%s%d__paramByPeriod", aT, "k", bl], a)
270276
271277
272-func bj (aQ,bi) = makeString(["%s%d%s%d__paramByPeriod", aQ, "b", bi], a)
278+func bm (aT,bl) = makeString(["%s%d%s%d__paramByPeriod", aT, "b", bl], a)
273279
274280
275-func bk () = "%s%s__stats__activeTotalLocked"
281+func bn () = "%s%s__stats__activeTotalLocked"
276282
277283
278-func bl () = "%s%s__stats__locksDurationSumInBlocks"
284+func bo () = "%s%s__stats__locksDurationSumInBlocks"
279285
280286
281-func bm () = "%s%s__stats__locksCount"
287+func bp () = "%s%s__stats__locksCount"
282288
283289
284-func bn () = "%s%s__stats__activeUsersCount"
290+func bq () = "%s%s__stats__activeUsersCount"
285291
286292
287-func bo (aQ) = makeString(["%s%d__userBoostEmissionLastInt", aQ], a)
293+func br (aT) = makeString(["%s%d__userBoostEmissionLastInt", aT], a)
288294
289295
290-func bp (aQ,bq) = makeString(["%s%d__userBoostEmissionLastInt", aQ, bq], a)
296+func bs (aT,bt) = makeString(["%s%d__userBoostEmissionLastInt", aT, bt], a)
291297
292298
293-func br (aQ) = makeString(["%s%d__maxBoostInt", aQ], a)
299+func bu (aT) = makeString(["%s%d__maxBoostInt", aT], a)
294300
295301
296-func bs () = "%s%s__maxBoostInt__total"
302+func bv () = "%s%s__maxBoostInt__total"
297303
298304
299-func bt (aQ) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aQ], a)
305+func bw (aT) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aT], a)
300306
301307
302-func bu (aQ) = makeString(["%s%d__userBoostClaimed", aQ], a)
308+func bx (aT) = makeString(["%s%d__userBoostClaimed", aT], a)
303309
304310
305-func bv () = "%s%s__gwxCached__total"
311+func by () = "%s%s__gwxCached__total"
306312
307313
308-func bw () = "%s__gwxCachedTotalCorrective"
314+func bz () = "%s__gwxCachedTotalCorrective"
309315
310316
311-let bx = T()
317+let bA = W()
312318
313-let Y = V(bx)
319+let ab = Y(bA)
314320
315-let by = Z(Y)
321+let bB = ac(ab)
316322
317-let bz = aa(Y)
323+let bC = ad(ab)
318324
319-let bA = ab(Y)
325+let bD = ae(ab)
320326
321-func bB (bC) = {
322- let bD = makeString(["%s", "votingEmissionContract"], a)
323- let bE = addressFromStringValue(getStringValue(bx, bD))
324- let bF = makeString(["%s", "currentEpochUi"], a)
325- let bG = getIntegerValue(bE, bF)
326- let bH = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
327- let bI = getInteger(this, bH)
328- let bJ = valueOrElse(getInteger(this, bv()), 0)
329- let bK = if (isDefined(bI))
330- then (bG >= value(bI))
327+let bE = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), e("lp_staking_pools contract address is undefined"))), e("invalid lp_staking_pools contract address"))
328+
329+func bF (bG) = {
330+ let bH = makeString(["%s", "votingEmissionContract"], a)
331+ let bI = addressFromStringValue(getStringValue(bA, bH))
332+ let bJ = makeString(["%s", "currentEpochUi"], a)
333+ let bK = getIntegerValue(bI, bJ)
334+ let bL = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
335+ let bM = getInteger(this, bL)
336+ let bN = valueOrElse(getInteger(this, by()), 0)
337+ let bO = if (isDefined(bM))
338+ then (bK >= value(bM))
331339 else false
332- let bL = if (if (bK)
333- then bC
340+ let bP = if (if (bO)
341+ then bG
334342 else false)
335- then valueOrElse(getInteger(this, bw()), 0)
343+ then valueOrElse(getInteger(this, bz()), 0)
336344 else 0
337- max([0, (bJ + bL)])
345+ max([0, (bN + bP)])
338346 }
339347
340348
341-func bM (bN,bO,aR,bP,aT,bQ,bR,aD) = {
342- let bS = makeString(["%s%s%s%s__history", bN, bO, toBase58String(aD.transactionId)], a)
343- let bT = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aR), toString(bP), toString(aT), toString(bQ), toString(bR)], a)
344- StringEntry(bS, bT)
349+func bQ (bR,bS,aU,bT,aW,bU,bV,aG) = {
350+ let bW = makeString(["%s%s%s%s__history", bR, bS, toBase58String(aG.transactionId)], a)
351+ let bX = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aU), toString(bT), toString(aW), toString(bU), toString(bV)], a)
352+ StringEntry(bW, bX)
345353 }
346354
347355
348-func bU (bV,bW,bX,bY) = {
349- let bZ = bl()
350- let ca = bm()
351- let cb = bn()
352- let cc = bk()
353- let cd = h(this, bZ)
354- let ce = h(this, ca)
355- let cf = h(this, cb)
356- let cg = h(this, cc)
357-[IntegerEntry(bZ, (cd + bW)), IntegerEntry(ca, (ce + bX)), IntegerEntry(cb, (cf + bY)), IntegerEntry(cc, (cg + bV))]
356+func bY (bZ,ca,cb,cc) = {
357+ let cd = bo()
358+ let ce = bp()
359+ let cf = bq()
360+ let cg = bn()
361+ let ch = k(this, cd)
362+ let ci = k(this, ce)
363+ let cj = k(this, cf)
364+ let ck = k(this, cg)
365+[IntegerEntry(cd, (ch + ca)), IntegerEntry(ce, (ci + cb)), IntegerEntry(cf, (cj + cc)), IntegerEntry(cg, (ck + bZ))]
358366 }
359367
360368
361-func ch (ci,cj,ck) = {
362- let cl = 1000
363- (((ci * ck) + cj) / cl)
369+func cl (cm,cn,co) = {
370+ let cp = 1000
371+ (((cm * co) + cn) / cp)
364372 }
365373
366374
367-func cm (aN,aQ,aR,aS,aT,bQ,bR,bi) = {
368- let cn = bc(aQ)
369- let co = bd(aQ)
370- let cp = be(aQ)
371- let cq = bf(aQ)
372- let cr = bg(aQ)
373- let cs = bh(aQ, bi)
374- let ct = bj(aQ, bi)
375- let aX = ch(bQ, bR, height)
376-[IntegerEntry(cn, aR), IntegerEntry(co, aS), IntegerEntry(cp, aT), IntegerEntry(cq, bQ), IntegerEntry(cr, bR), IntegerEntry(cs, bQ), IntegerEntry(ct, bR), StringEntry(aM(aN), aY(aQ, aR, aS, aT, bQ, bR, aX))]
375+func cq (aQ,aT,aU,aV,aW,bU,bV,bl) = {
376+ let cr = bf(aT)
377+ let cs = bg(aT)
378+ let ct = bh(aT)
379+ let cu = bi(aT)
380+ let cv = bj(aT)
381+ let cw = bk(aT, bl)
382+ let cx = bm(aT, bl)
383+ let ba = cl(bU, bV, height)
384+[IntegerEntry(cr, aU), IntegerEntry(cs, aV), IntegerEntry(ct, aW), IntegerEntry(cu, bU), IntegerEntry(cv, bV), IntegerEntry(cw, bU), IntegerEntry(cx, bV), StringEntry(aP(aQ), bb(aT, aU, aV, aW, bU, bV, ba))]
377385 }
378386
379387
380-func cu (aD,cv) = if ((size(aD.payments) > 1))
388+func cy (aG,cz) = if ((size(aG.payments) > 1))
381389 then throw("only one payment is allowed")
382- else if ((size(aD.payments) == 0))
390+ else if ((size(aG.payments) == 0))
383391 then 0
384392 else {
385- let cw = aD.payments[0]
386- if ((value(cw.assetId) != cv))
393+ let cA = aG.payments[0]
394+ if ((value(cA.assetId) != cz))
387395 then throw("invalid asset id in payment")
388- else cw.amount
396+ else cA.amount
389397 }
390398
391399
392-func cx (aN,cy) = {
393- let cz = "empty"
394- let cA = ba(aN)
395- let aQ = valueOrElse(getString(cA), cz)
396- let bQ = valueOrElse(getInteger(bf(aQ)), 0)
397- let bR = valueOrElse(getInteger(bg(aQ)), 0)
398- let cB = ch(bQ, bR, cy)
399- let aX = if ((0 > cB))
400+func cB (aQ,cC) = {
401+ let cD = "empty"
402+ let cE = bd(aQ)
403+ let aT = valueOrElse(getString(cE), cD)
404+ let bU = valueOrElse(getInteger(bi(aT)), 0)
405+ let bV = valueOrElse(getInteger(bj(aT)), 0)
406+ let cF = cl(bU, bV, cC)
407+ let ba = if ((0 > cF))
400408 then 0
401- else cB
402- aX
409+ else cF
410+ ba
403411 }
404412
405413
406-func cC (aN) = cx(aN, height)
414+func cG (aQ) = cB(aQ, height)
407415
408416
409-func cD (cE,cF,cG) = {
410- let cz = "EMPTY"
411- let cH = valueOrElse(getString(this, aM(cF)), cz)
412- if ((cH == cz))
417+func cH (cI,cJ,cK) = {
418+ let cD = "EMPTY"
419+ let cL = valueOrElse(getString(this, aP(cJ)), cD)
420+ if ((cL == cD))
413421 then $Tuple3(0, nil, "userRecord::is::empty")
414422 else {
415- let cI = split(cH, a)
416- let cJ = cI[aG]
417- let cK = valueOrElse(getInteger(bA, ak()), 0)
418- let cL = "empty"
419- let cM = if ((cE != cL))
423+ let cM = split(cL, a)
424+ let cN = cM[aJ]
425+ let cO = valueOrElse(getInteger(bD, an()), 0)
426+ let cP = "empty"
427+ let cQ = if ((cI != cP))
420428 then {
421- let cN = valueOrErrorMessage(getString(bx, K(cE)), ("unsupported lp asset " + cE))
422- let cO = getIntegerValue(bx, O(cN))
423- let cP = valueOrElse(getInteger(bx, Q(cN, 0)), cO)
424- $Tuple2(cP, cO)
429+ let cR = valueOrErrorMessage(getString(bA, N(cI)), ("unsupported lp asset " + cI))
430+ let cS = getIntegerValue(bA, R(cR))
431+ let cT = valueOrElse(getInteger(bA, T(cR, 0)), cS)
432+ $Tuple2(cT, cS)
425433 }
426- else if (cG)
434+ else if (cK)
427435 then $Tuple2(0, 0)
428- else throw(("not readonly mode: unsupported lp asset " + cE))
429- let cQ = cM._1
430- let cR = cM._2
431- let cS = k(by, ae())
432- let cT = k(by, ag())
433- let cU = k(by, ai())
434- let ck = if ((height > cU))
435- then cU
436+ else throw(("not readonly mode: unsupported lp asset " + cI))
437+ let cU = cQ._1
438+ let cV = cQ._2
439+ let cW = n(bB, ah())
440+ let cX = n(bB, aj())
441+ let cY = n(bB, al())
442+ let co = if ((height > cY))
443+ then cY
436444 else height
437- let cV = max([(ck - cT), 0])
438- let cW = bp(cJ, cE)
439- let cX = bo(cJ)
440- let cY = valueOrElse(getInteger(this, cW), h(this, cX))
441- let cZ = (((cS * cV) * 2) / 3)
442- let da = (cZ - cY)
443- let db = fraction(da, 3, (2 * cS))
444- let dc = (ck - db)
445- let dd = max([(cK - dc), 0])
446- let de = ((ck - dc) - dd)
447- if (if (if ((0 > dc))
445+ let cZ = max([(co - cX), 0])
446+ let da = bs(cN, cI)
447+ let db = br(cN)
448+ let dc = valueOrElse(getInteger(this, da), k(this, db))
449+ let dd = (((cW * cZ) * 2) / 3)
450+ let de = (dd - dc)
451+ let df = fraction(de, 3, (2 * cW))
452+ let dg = (co - df)
453+ let dh = max([(cO - dg), 0])
454+ let di = ((co - dg) - dh)
455+ if (if (if ((0 > dg))
448456 then true
449- else (0 > de))
457+ else (0 > di))
450458 then true
451- else (l(((dd + de) - db)) >= 1))
452- then throw(((((((("invalid udh calc: udh=" + toString(db)) + " uLastH=") + toString(dc)) + " udh0=") + toString(dd)) + " udh1=") + toString(de)))
453- else if ((0 > da))
459+ else (o(((dh + di) - df)) >= 1))
460+ then throw(((((((("invalid udh calc: udh=" + toString(df)) + " uLastH=") + toString(dg)) + " udh0=") + toString(dh)) + " udh1=") + toString(di)))
461+ else if ((0 > de))
454462 then throw("wrong calculations")
455463 else {
456- let df = br(cJ)
457- let dg = bs()
458- let dh = h(this, df)
459- let di = h(this, dg)
460- let dj = bB(true)
461- let dk = cC(cF)
462- let dl = bt(cJ)
463- let dm = h(this, dl)
464- let dn = if ((db == 0))
464+ let dj = bu(cN)
465+ let dk = bv()
466+ let dl = k(this, dj)
467+ let dm = k(this, dk)
468+ let dn = bF(true)
469+ let do = cG(cJ)
470+ let dp = bw(cN)
471+ let dq = k(this, dp)
472+ let dr = if ((df == 0))
465473 then 0
466- else fraction(da, dd, db)
467- let do = if ((db == 0))
474+ else fraction(de, dh, df)
475+ let ds = if ((df == 0))
468476 then 0
469- else fraction(da, de, db)
470- let dp = fraction(dn, cQ, d)
471- let dq = fraction(do, cR, d)
472- let dr = if ((dj == 0))
477+ else fraction(de, di, df)
478+ let dt = fraction(dr, cU, d)
479+ let du = fraction(ds, cV, d)
480+ let dv = if ((dn == 0))
473481 then 0
474- else fraction(dp, dk, dj)
475- let ds = if ((dj == 0))
482+ else fraction(dt, do, dn)
483+ let dw = if ((dn == 0))
476484 then 0
477- else fraction(dq, dk, dj)
478- let dt = (dr + ds)
479- let du = bu(cJ)
480- let dv = h(this, du)
481- let dw = (dt - dv)
482- let dx = [IntegerEntry(cW, cZ)]
483- let dy = makeString([toString(cY), toString(da), toString(dv), toString(dw), toString(cQ), toString(cR), toString(ck), toString(db), toString(dc), toString(dd), toString(de), toString(dk), toString(dj)], ":")
484- $Tuple3(dt, dx, dy)
485+ else fraction(du, do, dn)
486+ let dx = (dv + dw)
487+ let dy = bx(cN)
488+ let dz = k(this, dy)
489+ let dA = (dx - dz)
490+ let dB = [IntegerEntry(da, dd)]
491+ let dC = makeString([toString(dc), toString(de), toString(dz), toString(dA), toString(cU), toString(cV), toString(co), toString(df), toString(dg), toString(dh), toString(di), toString(do), toString(dn)], ":")
492+ $Tuple3(dx, dB, dC)
485493 }
486494 }
487495 }
488496
489497
490-func dz (aD,aT) = {
491- let dA = ar()
492- let dB = dA[al]
493- let au = fromBase58String(dB)
494- let av = parseIntValue(dA[am])
495- let aw = parseIntValue(dA[an])
496- let ax = parseIntValue(dA[ao])
497- if ((size(aD.payments) != 1))
498+func dD (aG,aW) = {
499+ let dE = au()
500+ let dF = dE[ao]
501+ let ax = fromBase58String(dF)
502+ let ay = parseIntValue(dE[ap])
503+ let az = parseIntValue(dE[aq])
504+ let aA = parseIntValue(dE[ar])
505+ if ((size(aG.payments) != 1))
498506 then throw("invalid payment - exact one payment must be attached")
499507 else {
500- let cw = aD.payments[0]
501- let dC = cw.amount
502- if ((au != value(cw.assetId)))
503- then throw((("invalid asset is in payment - " + dB) + " is expected"))
508+ let cA = aG.payments[0]
509+ let dG = cA.amount
510+ if ((ax != value(cA.assetId)))
511+ then throw((("invalid asset is in payment - " + dF) + " is expected"))
504512 else {
505- let dD = aZ()
506- let cF = toString(aD.caller)
507- let dE = isDefined(getString(ba(cF)))
508- let cJ = if (dE)
509- then value(getString(ba(cF)))
510- else toString(k(this, dD))
511- let aQ = parseIntValue(cJ)
512- let bP = height
513- let co = bd(cJ)
514- let cp = be(cJ)
515- let cn = bc(cJ)
516- if ((av > dC))
517- then throw(("amount is less then minLockAmount=" + toString(av)))
518- else if ((aw > aT))
519- then throw(("passed duration is less then minLockDuration=" + toString(aw)))
520- else if ((aT > ax))
521- then throw(("passed duration is greater then maxLockDuration=" + toString(ax)))
522- else if (if (dE)
523- then ((k(this, co) + k(this, cp)) >= bP)
513+ let dH = bc()
514+ let cJ = toString(aG.caller)
515+ let dI = isDefined(getString(bd(cJ)))
516+ let cN = if (dI)
517+ then value(getString(bd(cJ)))
518+ else toString(n(this, dH))
519+ let aT = parseIntValue(cN)
520+ let bT = height
521+ let cs = bg(cN)
522+ let ct = bh(cN)
523+ let cr = bf(cN)
524+ if (if ((ay > dG))
525+ then (aG.caller != bE)
526+ else false)
527+ then throw(("amount is less then minLockAmount=" + toString(ay)))
528+ else if ((az > aW))
529+ then throw(("passed duration is less then minLockDuration=" + toString(az)))
530+ else if ((aW > aA))
531+ then throw(("passed duration is greater then maxLockDuration=" + toString(aA)))
532+ else if (if (dI)
533+ then ((n(this, cs) + n(this, ct)) >= bT)
524534 else false)
525535 then throw("there is an active lock - consider to use increaseLock")
526- else if ((h(this, cn) > 0))
527- then throw(("there are locked WXs - consider to use increaseLock " + cn))
536+ else if ((k(this, cr) > 0))
537+ then throw(("there are locked WXs - consider to use increaseLock " + cr))
528538 else {
529- let dF = fraction(aT, c, ax)
530- let dG = fraction(dC, dF, c)
531- let dH = n(invoke(as, "calcGwxParamsREADONLY", [dG, bP, aT], nil))
532- let bQ = q(dH[0])
533- let bR = q(dH[1])
534- let bi = toString(q(dH[2]))
535- let cS = k(by, ae())
536- let cT = k(by, ag())
537- let cU = k(by, ai())
538- let ck = if ((height > cU))
539- then cU
539+ let dJ = fraction(aW, c, aA)
540+ let dK = fraction(dG, dJ, c)
541+ let dL = q(invoke(av, "calcGwxParamsREADONLY", [dK, bT, aW], nil))
542+ let bU = t(dL[0])
543+ let bV = t(dL[1])
544+ let bl = toString(t(dL[2]))
545+ let cW = n(bB, ah())
546+ let cX = n(bB, aj())
547+ let cY = n(bB, al())
548+ let co = if ((height > cY))
549+ then cY
540550 else height
541- let cV = max([(ck - cT), 0])
542- let cX = bo(cJ)
543- let cZ = (((cS * cV) * 2) / 3)
544- let df = br(cJ)
545- let dg = bs()
546- let dh = ((dG * aT) / 2)
547- let di = h(this, dg)
548- let bJ = bB(false)
549- let dI = if (dE)
551+ let cZ = max([(co - cX), 0])
552+ let db = br(cN)
553+ let dd = (((cW * cZ) * 2) / 3)
554+ let dj = bu(cN)
555+ let dk = bv()
556+ let dl = ((dK * aW) / 2)
557+ let dm = k(this, dk)
558+ let bN = bF(false)
559+ let dM = if (dI)
550560 then nil
551- else [IntegerEntry(dD, (aQ + 1)), StringEntry(ba(cF), cJ), StringEntry(bb(cJ), cF)]
552- $Tuple2(((((dI ++ cm(cF, cJ, dC, bP, aT, bQ, bR, bi)) ++ bU(dC, aT, 1, if (dE)
561+ else [IntegerEntry(dH, (aT + 1)), StringEntry(bd(cJ), cN), StringEntry(be(cN), cJ)]
562+ $Tuple2(((((dM ++ cq(cJ, cN, dG, bT, aW, bU, bV, bl)) ++ bY(dG, aW, 1, if (dI)
553563 then 0
554- else 1)) :+ bM("lock", cF, dC, bP, aT, bQ, bR, aD)) ++ [IntegerEntry(cX, cZ), IntegerEntry(bv(), (bJ + dG))]), dG)
564+ else 1)) :+ bQ("lock", cJ, dG, bT, aW, bU, bV, aG)) ++ [IntegerEntry(db, dd), IntegerEntry(by(), (bN + dK))]), dK)
555565 }
556566 }
557567 }
558568 }
559569
560570
561-@Callable(aD)
562-func constructor (dJ,dK,av,dL,dM,as) = {
563- let dN = aC(aD)
564- if ((dN == dN))
565- then ([IntegerEntry(aZ(), 0), StringEntry(aq(), ay(dK, av, dL, dM, as)), StringEntry(x(), dJ)] ++ bU(0, 0, 0, 0))
571+@Callable(aG)
572+func constructor (dN,dO,ay,dP,dQ,av) = {
573+ let dR = aF(aG)
574+ if ((dR == dR))
575+ then ([IntegerEntry(bc(), 0), StringEntry(at(), aB(dO, ay, dP, dQ, av)), StringEntry(A(), dN)] ++ bY(0, 0, 0, 0))
566576 else throw("Strict value is not equal to itself.")
567577 }
568578
569579
570580
571-@Callable(aD)
572-func lockRef (aT,dO,dP) = {
573- let dQ = dz(aD, aT)
574- let dR = dQ._1
575- let dG = dQ._2
576- let dS = toString(aD.caller)
577- let dT = if (if ((dO == ""))
581+@Callable(aG)
582+func lockRef (aW,dS,dT) = {
583+ let dU = dD(aG, aW)
584+ let dV = dU._1
585+ let dK = dU._2
586+ let dW = toString(aG.caller)
587+ let dX = if (if ((dS == ""))
578588 then true
579- else (dP == base58''))
589+ else (dT == base58''))
580590 then unit
581- else invoke(t, "createPair", [w, dO, dS, dP], nil)
582- if ((dT == dT))
591+ else invoke(w, "createPair", [z, dS, dW, dT], nil)
592+ if ((dX == dX))
583593 then {
584- let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
585- if ((dU == dU))
586- then $Tuple2(dR, unit)
594+ let dY = invoke(av, "updateReferralActivity", [toString(aG.caller), dK], nil)
595+ if ((dY == dY))
596+ then $Tuple2(dV, unit)
587597 else throw("Strict value is not equal to itself.")
588598 }
589599 else throw("Strict value is not equal to itself.")
590600 }
591601
592602
593603
594-@Callable(aD)
595-func lock (aT) = {
596- let dV = dz(aD, aT)
597- let dR = dV._1
598- let dG = dV._2
599- let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
600- if ((dU == dU))
601- then $Tuple2(dR, unit)
604+@Callable(aG)
605+func lock (aW) = {
606+ let dZ = dD(aG, aW)
607+ let dV = dZ._1
608+ let dK = dZ._2
609+ let dY = invoke(av, "updateReferralActivity", [toString(aG.caller), dK], nil)
610+ if ((dY == dY))
611+ then $Tuple2(dV, unit)
602612 else throw("Strict value is not equal to itself.")
603613 }
604614
605615
606616
607-@Callable(aD)
608-func increaseLock (dW) = {
609- let dA = ar()
610- let dB = dA[al]
611- let au = fromBase58String(dB)
612- let aw = parseIntValue(dA[an])
613- let ax = parseIntValue(dA[ao])
614- let dC = cu(aD, au)
615- let cF = toString(aD.caller)
616- let cI = aO(cF)
617- let cJ = cI[aG]
618- let dX = parseIntValue(cI[aH])
619- let bP = parseIntValue(cI[aI])
620- let dY = parseIntValue(cI[aJ])
621- let dZ = (bP + dY)
622- let ea = max([(dZ - height), 0])
623- let eb = (dX + dC)
624- let ec = (ea + dW)
625- if ((0 > dW))
617+@Callable(aG)
618+func increaseLock (ea) = {
619+ let dE = au()
620+ let dF = dE[ao]
621+ let ax = fromBase58String(dF)
622+ let az = parseIntValue(dE[aq])
623+ let aA = parseIntValue(dE[ar])
624+ let dG = cy(aG, ax)
625+ let cJ = toString(aG.caller)
626+ let cM = aR(cJ)
627+ let cN = cM[aJ]
628+ let eb = parseIntValue(cM[aK])
629+ let bT = parseIntValue(cM[aL])
630+ let ec = parseIntValue(cM[aM])
631+ let ed = (bT + ec)
632+ let ee = max([(ed - height), 0])
633+ let ef = (eb + dG)
634+ let eg = (ee + ea)
635+ if ((0 > ea))
626636 then throw("duration is less then zero")
627- else if ((aw > ec))
628- then throw(("lockDurationNew is less then minLockDuration=" + toString(aw)))
629- else if ((ec > ax))
630- then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(ax)))
637+ else if ((az > eg))
638+ then throw(("lockDurationNew is less then minLockDuration=" + toString(az)))
639+ else if ((eg > aA))
640+ then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(aA)))
631641 else {
632- let dF = fraction(ec, c, ax)
633- let dG = fraction(eb, dF, c)
634- let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
635- if ((dU == dU))
642+ let dJ = fraction(eg, c, aA)
643+ let dK = fraction(ef, dJ, c)
644+ let dY = invoke(av, "updateReferralActivity", [toString(aG.caller), dK], nil)
645+ if ((dY == dY))
636646 then {
637- let ed = height
638- let dH = n(invoke(as, "calcGwxParamsREADONLY", [dG, ed, ec], nil))
639- let bQ = q(dH[0])
640- let bR = q(dH[1])
641- let bi = toString(q(dH[2]))
642- let cS = k(by, ae())
643- let cT = k(by, ag())
644- let cU = k(by, ai())
645- let ck = if ((height > cU))
646- then cU
647+ let eh = height
648+ let dL = q(invoke(av, "calcGwxParamsREADONLY", [dK, eh, eg], nil))
649+ let bU = t(dL[0])
650+ let bV = t(dL[1])
651+ let bl = toString(t(dL[2]))
652+ let cW = n(bB, ah())
653+ let cX = n(bB, aj())
654+ let cY = n(bB, al())
655+ let co = if ((height > cY))
656+ then cY
647657 else height
648- let cV = max([(ck - cT), 0])
649- let cX = bo(cJ)
650- let cY = h(this, cX)
651- let cZ = (((cS * cV) * 2) / 3)
652- let da = (cZ - cY)
653- if ((0 > da))
658+ let cZ = max([(co - cX), 0])
659+ let db = br(cN)
660+ let dc = k(this, db)
661+ let dd = (((cW * cZ) * 2) / 3)
662+ let de = (dd - dc)
663+ if ((0 > de))
654664 then throw("wrong calculations")
655665 else {
656- let df = br(cJ)
657- let dg = bs()
658- let dh = h(this, df)
659- let di = h(this, dg)
660- let ee = cC(cF)
661- let ef = (dG - ee)
662- if ((0 > ef))
663- then throw(("gwxDiff is less then 0: " + toString(ef)))
666+ let dj = bu(cN)
667+ let dk = bv()
668+ let dl = k(this, dj)
669+ let dm = k(this, dk)
670+ let ei = cG(cJ)
671+ let ej = (dK - ei)
672+ if ((0 > ej))
673+ then throw(("gwxDiff is less then 0: " + toString(ej)))
664674 else {
665- let bJ = bB(false)
666- let dj = bB(true)
667- let dl = bt(cJ)
668- let dm = h(this, dl)
669- let dt = fraction(da, ee, dj)
670- let eg = ((dG * ec) / 2)
671- let eh = ((ee * ea) / 2)
672- let ei = (eg - eh)
673- (((cm(cF, cJ, eb, ed, ec, bQ, bR, bi) ++ bU(dC, dW, 0, 0)) :+ bM("lock", cF, dC, bP, ec, bQ, bR, aD)) ++ [IntegerEntry(bv(), (bJ + ef))])
675+ let bN = bF(false)
676+ let dn = bF(true)
677+ let dp = bw(cN)
678+ let dq = k(this, dp)
679+ let dx = fraction(de, ei, dn)
680+ let ek = ((dK * eg) / 2)
681+ let el = ((ei * ee) / 2)
682+ let em = (ek - el)
683+ (((cq(cJ, cN, ef, eh, eg, bU, bV, bl) ++ bY(dG, ea, 0, 0)) :+ bQ("lock", cJ, dG, bT, eg, bU, bV, aG)) ++ [IntegerEntry(by(), (bN + ej))])
674684 }
675685 }
676686 }
677687 else throw("Strict value is not equal to itself.")
678688 }
679689 }
680690
681691
682692
683-@Callable(aD)
684-func claimWxBoost (cE,cF) = if ((bz != aD.caller))
693+@Callable(aG)
694+func claimWxBoost (cI,cJ) = if ((bC != aG.caller))
685695 then throw("permissions denied")
686696 else {
687- let ej = cD(cE, cF, false)
688- let dw = ej._1
689- let dx = ej._2
690- let dy = ej._3
691- $Tuple2(dx, [dw])
697+ let en = cH(cI, cJ, false)
698+ let dA = en._1
699+ let dB = en._2
700+ let dC = en._3
701+ $Tuple2(dB, [dA])
692702 }
693703
694704
695705
696-@Callable(aD)
697-func claimWxBoostREADONLY (cE,cF) = {
698- let ek = cD(cE, cF, true)
699- let dw = ek._1
700- let dx = ek._2
701- let dy = ek._3
702- $Tuple2(nil, [dw, dy])
706+@Callable(aG)
707+func claimWxBoostREADONLY (cI,cJ) = {
708+ let eo = cH(cI, cJ, true)
709+ let dA = eo._1
710+ let dB = eo._2
711+ let dC = eo._3
712+ $Tuple2(nil, [dA, dC])
703713 }
704714
705715
706716
707-@Callable(aD)
708-func unlock (aN) = {
709- let cI = aO(aN)
710- let cJ = cI[aG]
711- let dX = parseIntValue(cI[aH])
712- let bP = parseIntValue(cI[aI])
713- let dY = parseIntValue(cI[aJ])
714- let dZ = (bP + dY)
715- let dA = ar()
716- let au = fromBase58String(dA[al])
717- if ((dZ >= height))
718- then throw((("wait " + toString(dZ)) + " to unlock"))
719- else if ((0 >= dX))
717+@Callable(aG)
718+func unlock (aQ) = {
719+ let cM = aR(aQ)
720+ let cN = cM[aJ]
721+ let eb = parseIntValue(cM[aK])
722+ let bT = parseIntValue(cM[aL])
723+ let ec = parseIntValue(cM[aM])
724+ let ed = (bT + ec)
725+ let dE = au()
726+ let ax = fromBase58String(dE[ao])
727+ if ((ed >= height))
728+ then throw((("wait " + toString(ed)) + " to unlock"))
729+ else if ((0 >= eb))
720730 then throw("nothing to unlock")
721731 else {
722- let bi = valueOrElse(getInteger(as, aj()), 0)
723- (((cm(aN, cJ, 0, bP, dY, 0, 0, toString(bi)) ++ bU(-(dX), 0, 0, -1)) :+ bM("unlock", aN, dX, bP, dY, 0, 0, aD)) :+ ScriptTransfer(addressFromStringValue(aN), dX, au))
732+ let bl = valueOrElse(getInteger(av, am()), 0)
733+ (((cq(aQ, cN, 0, bT, ec, 0, 0, toString(bl)) ++ bY(-(eb), 0, 0, -1)) :+ bQ("unlock", aQ, eb, bT, ec, 0, 0, aG)) :+ ScriptTransfer(addressFromStringValue(aQ), eb, ax))
724734 }
725735 }
726736
727737
728738
729-@Callable(aD)
730-func gwxUserInfoREADONLY (aN) = {
731- let aX = cC(aN)
732- $Tuple2(nil, [aX])
739+@Callable(aG)
740+func gwxUserInfoREADONLY (aQ) = {
741+ let ba = cG(aQ)
742+ $Tuple2(nil, [ba])
733743 }
734744
735745
736746
737-@Callable(aD)
738-func getUserGwxAmountAtHeightREADONLY (aN,cy) = {
739- let aX = cx(aN, cy)
740- $Tuple2(nil, aX)
747+@Callable(aG)
748+func userMaxDurationREADONLY (cJ) = {
749+ let dE = au()
750+ let aA = parseIntValue(dE[ar])
751+ let ep = getString(this, aP(cJ))
752+ if ((ep == unit))
753+ then $Tuple2(nil, $Tuple2("lock", aA))
754+ else {
755+ let cM = split(value(ep), a)
756+ let bT = parseIntValue(cM[aL])
757+ let ec = parseIntValue(cM[aM])
758+ let ed = (bT + ec)
759+ let ee = max([(ed - height), 0])
760+ let eq = (aA - ee)
761+ $Tuple2(nil, $Tuple2("increaseLock", eq))
762+ }
741763 }
742764
743765
744766
745-@Callable(aD)
746-func getTotalCachedGwxREADONLY () = $Tuple2(nil, bB(true))
767+@Callable(aG)
768+func getUserGwxAmountAtHeightREADONLY (aQ,cC) = {
769+ let ba = cB(aQ, cC)
770+ $Tuple2(nil, ba)
771+ }
747772
748773
749774
750-@Callable(aD)
751-func setManager (el) = {
752- let dN = aC(aD)
753- if ((dN == dN))
775+@Callable(aG)
776+func getTotalCachedGwxREADONLY () = $Tuple2(nil, bF(true))
777+
778+
779+
780+@Callable(aG)
781+func setManager (er) = {
782+ let dR = aF(aG)
783+ if ((dR == dR))
754784 then {
755- let em = fromBase58String(el)
756- if ((em == em))
757- then [StringEntry(ad(), el)]
785+ let es = fromBase58String(er)
786+ if ((es == es))
787+ then [StringEntry(ag(), er)]
758788 else throw("Strict value is not equal to itself.")
759789 }
760790 else throw("Strict value is not equal to itself.")
761791 }
762792
763793
764794
765-@Callable(aD)
795+@Callable(aG)
766796 func confirmManager () = {
767- let en = aB()
768- let eo = if (isDefined(en))
797+ let et = aE()
798+ let eu = if (isDefined(et))
769799 then true
770800 else throw("No pending manager")
771- if ((eo == eo))
801+ if ((eu == eu))
772802 then {
773- let ep = if ((aD.callerPublicKey == value(en)))
803+ let ev = if ((aG.callerPublicKey == value(et)))
774804 then true
775805 else throw("You are not pending manager")
776- if ((ep == ep))
777- then [StringEntry(ac(), toBase58String(value(en))), DeleteEntry(ad())]
806+ if ((ev == ev))
807+ then [StringEntry(af(), toBase58String(value(et))), DeleteEntry(ag())]
778808 else throw("Strict value is not equal to itself.")
779809 }
780810 else throw("Strict value is not equal to itself.")
781811 }
782812
783813
784-@Verifier(eq)
785-func er () = {
786- let es = {
787- let o = az()
788- if ($isInstanceOf(o, "ByteVector"))
814+@Verifier(ew)
815+func ex () = {
816+ let ey = {
817+ let r = aC()
818+ if ($isInstanceOf(r, "ByteVector"))
789819 then {
790- let aF = o
791- aF
820+ let aI = r
821+ aI
792822 }
793- else if ($isInstanceOf(o, "Unit"))
794- then eq.senderPublicKey
823+ else if ($isInstanceOf(r, "Unit"))
824+ then ew.senderPublicKey
795825 else throw("Match error")
796826 }
797- sigVerify(eq.bodyBytes, eq.proofs[0], es)
827+ sigVerify(ew.bodyBytes, ew.proofs[0], ey)
798828 }
799829

github/deemru/w8io/026f985 
352.53 ms