tx · 3ugbYTTe5RSAEHKaUcink3srFrtFXse1o2mpQfX4Mp6R

3MwyBKGZcdChEK9Z55HwLn3A2EgwEJJpqC1:  -0.01300000 Waves

2024.01.12 10:37 [2928005] smart account 3MwyBKGZcdChEK9Z55HwLn3A2EgwEJJpqC1 > SELF 0.00000000 Waves

{ "type": 13, "id": "3ugbYTTe5RSAEHKaUcink3srFrtFXse1o2mpQfX4Mp6R", "fee": 1300000, "feeAssetId": null, "timestamp": 1705045112643, "version": 2, "chainId": 84, "sender": "3MwyBKGZcdChEK9Z55HwLn3A2EgwEJJpqC1", "senderPublicKey": "7c3qLtcJ7EaPS2JDjXv8MBbd4kpyc6R27wcn5GgvZhur", "proofs": [ "3sbe8cdjkU5CL2LpzSVAdedurLcGAqhswvfz9UjWduuE26muW234DWfKkR6uUEgEQy5w973FC4oAuA88rCNwq7R5" ], "script": "base64:BgIbCAISBgoECAEBARIDCgEIEgMKAQgSABIDCgEIIQAMY29udHJhY3RGaWxlAhB2ZXN0aW5nX25lby5yaWRlAANTRVACAl9fAAhJRFNfTElTVAkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgkAzAgCAA8JAMwIAgAQCQDMCAIAEQkAzAgCABIJAMwIAgATCQDMCAIAFAkAzAgCABUJAMwIAgAWCQDMCAIAFwkAzAgCABgJAMwIAgAZCQDMCAIAGgkAzAgCABsJAMwIAgAcCQDMCAIAHQUDbmlsABFNQVhfVkVTVElOR19DT1VOVAkAkAMBBQhJRFNfTElTVAEIdGhyb3dFcnIBA21zZwkAAgEJAKwCAgkArAICBQxjb250cmFjdEZpbGUCAjogBQNtc2cBE2tleU1hbmFnZXJQdWJsaWNLZXkAAhQlc19fbWFuYWdlclB1YmxpY0tleQEWa2V5TWFuYWdlclZhdWx0QWRkcmVzcwACFyVzX19tYW5hZ2VyVmF1bHRBZGRyZXNzARxnZXRNYW5hZ2VyVmF1bHRBZGRyZXNzT3JUaGlzAAQHJG1hdGNoMAkAoggBCQEWa2V5TWFuYWdlclZhdWx0QWRkcmVzcwADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFzBQR0aGlzARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAQTbWFuYWdlclZhdWx0QWRkcmVzcwkBHGdldE1hbmFnZXJWYXVsdEFkZHJlc3NPclRoaXMABAckbWF0Y2gwCQCdCAIFE21hbmFnZXJWYXVsdEFkZHJlc3MJARNrZXlNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IACmtleUFzc2V0SWQJALkJAgkAzAgCAgIlcwkAzAgCAgdhc3NldElkBQNuaWwFA1NFUAANYXNzZXRJZFN0cmluZwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQprZXlBc3NldElkAgVXQVZFUwAMYXNzZXRJZEJ5dGVzAwkAAAIFDWFzc2V0SWRTdHJpbmcCBVdBVkVTBQR1bml0CQDZBAEFDWFzc2V0SWRTdHJpbmcADGtleUFkbWluTGlzdAkAuQkCCQDMCAICAiVzCQDMCAICEGFkbWluQWRkcmVzc0xpc3QFA25pbAUDU0VQAAprZXlCYW5MaXN0CQC5CQIJAMwIAgICJXMJAMwIAgIHYmFuTGlzdAUDbmlsBQNTRVAACWFkbWluTGlzdAQHJG1hdGNoMAkAnQgCBQR0aGlzBQxrZXlBZG1pbkxpc3QDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQC1CQIFAXMFA1NFUAUDbmlsAAdiYW5MaXN0BApiYW5MaXN0UmF3CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFCmtleUJhbkxpc3QCAAMJAAACBQpiYW5MaXN0UmF3AgAFA25pbAkAvQkCBQpiYW5MaXN0UmF3BQNTRVABFGlzVmFsaWRBZGRyZXNzU3RyaW5nAQ1hZGRyZXNzU3RyaW5nBAckbWF0Y2gwCQCmCAEFDWFkZHJlc3NTdHJpbmcDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAYHAQ5rZXlVc2VyVmVzdGluZwILdXNlckFkZHJlc3MCaWQEBmNoZWNrcwkAzAgCAwkBFGlzVmFsaWRBZGRyZXNzU3RyaW5nAQULdXNlckFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIVYWRkcmVzcyBpcyBub3QgdmFsaWQ6CQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwCASAJAMwIAgMDCQBnAgUCaWQAAAkAZgIFEU1BWF9WRVNUSU5HX0NPVU5UBQJpZAcGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIWaWQgc2hvdWxkIGJlIGxlc3MgdGhhbgkAzAgCCQCkAwEFEU1BWF9WRVNUSU5HX0NPVU5UCQDMCAICBGdvdDoJAMwIAgkApAMBBQJpZAUDbmlsAgEgBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgIHdmVzdGluZwkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCCQCkAwEFAmlkBQNuaWwFA1NFUAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgESa2V5VXNlckFjY3VtdWxhdGVkAQt1c2VyQWRkcmVzcwQGY2hlY2tzCQDMCAIDCQEUaXNWYWxpZEFkZHJlc3NTdHJpbmcBBQt1c2VyQWRkcmVzcwYJAQh0aHJvd0VycgEJALkJAgkAzAgCAhVhZGRyZXNzIGlzIG5vdCB2YWxpZDoJAMwIAgULdXNlckFkZHJlc3MFA25pbAIBIAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgthY2N1bXVsYXRlZAkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BEWZvcm1hdFVzZXJWZXN0aW5nAw12ZXN0aW5nQW1vdW50CnN0YXJ0QmxvY2sKbG9ja0xlbmd0aAQGY2hlY2tzCQDMCAIDCQBnAgUNdmVzdGluZ0Ftb3VudAAABgkBCHRocm93RXJyAQIhdmVzdGluZyBhbW91bnQgY2Fubm90IGJlIG5lZ2F0aXZlCQDMCAIDCQBnAgUKc3RhcnRCbG9jawAABgkBCHRocm93RXJyAQIec3RhcnQgYmxvY2sgY2Fubm90IGJlIG5lZ2F0aXZlCQDMCAIDCQBnAgUKbG9ja0xlbmd0aAAABgkBCHRocm93RXJyAQIebG9jayBsZW5ndGggY2Fubm90IGJlIG5lZ2F0aXZlBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MJALkJAgkAzAgCAgYlZCVkJWQJAMwIAgkApAMBBQ12ZXN0aW5nQW1vdW50CQDMCAIJAKQDAQUKc3RhcnRCbG9jawkAzAgCCQCkAwEFCmxvY2tMZW5ndGgFA25pbAUDU0VQCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARBwYXJzZVVzZXJWZXN0aW5nAgt1c2VyQWRkcmVzcwJpZAQHJG1hdGNoMAkAnQgCBQR0aGlzCQEOa2V5VXNlclZlc3RpbmcCBQt1c2VyQWRkcmVzcwUCaWQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAlyYXdTdHJpbmcFByRtYXRjaDAEC3NwbGl0U3RyaW5nCQC1CQIFCXJhd1N0cmluZwUDU0VQBA12ZXN0aW5nQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgULc3BsaXRTdHJpbmcAAQQKc3RhcnRCbG9jawkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC3NwbGl0U3RyaW5nAAIECmxvY2tMZW5ndGgJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtzcGxpdFN0cmluZwADCQCVCgMFDXZlc3RpbmdBbW91bnQFCnN0YXJ0QmxvY2sFCmxvY2tMZW5ndGgJAJUKAwAAAAAAAAERa2V5VmVzdGluZ0hpc3RvcnkDBmFjdGlvbgt1c2VyQWRkcmVzcwR0eElkCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgIHaGlzdG9yeQkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCBQZhY3Rpb24JAMwIAgUEdHhJZAUDbmlsBQNTRVABEmNhbGNVbmxvY2tlZEFtb3VudAMGYW1vdW50CnN0YXJ0QmxvY2sKbG9ja0xlbmd0aAQNZWxhcHNlZEJsb2NrcwkAZQIFBmhlaWdodAUKc3RhcnRCbG9jawQOdW5sb2NrZWRBbW91bnQDAwkBAiE9AgUKbG9ja0xlbmd0aAAACQBmAgUNZWxhcHNlZEJsb2NrcwAABwkAlwMBCQDMCAIJAGsDBQZhbW91bnQFDWVsYXBzZWRCbG9ja3MFCmxvY2tMZW5ndGgJAMwIAgUGYW1vdW50BQNuaWwAAAkAlAoCBQ51bmxvY2tlZEFtb3VudAkAZQIFBmFtb3VudAUOdW5sb2NrZWRBbW91bnQBFWdldFVzZXJVbmxvY2tlZEFtb3VudAILdXNlckFkZHJlc3MCaWQECyR0MDM3NzkzODU4CQEQcGFyc2VVc2VyVmVzdGluZwIFC3VzZXJBZGRyZXNzBQJpZAQNdmVzdGluZ0Ftb3VudAgFCyR0MDM3NzkzODU4Al8xBApzdGFydEJsb2NrCAULJHQwMzc3OTM4NTgCXzIECmxvY2tMZW5ndGgIBQskdDAzNzc5Mzg1OAJfMwQLJHQwMzg2MTM5NTgJARJjYWxjVW5sb2NrZWRBbW91bnQDBQ12ZXN0aW5nQW1vdW50BQpzdGFydEJsb2NrBQpsb2NrTGVuZ3RoBA51bmxvY2tlZEFtb3VudAgFCyR0MDM4NjEzOTU4Al8xBA9yZW1haW5pbmdBbW91bnQIBQskdDAzODYxMzk1OAJfMgkAlAoCBQ51bmxvY2tlZEFtb3VudAUPcmVtYWluaW5nQW1vdW50ARdnZXRVcGRhdGVWZXN0aW5nQWN0aW9ucwILdXNlckFkZHJlc3MCaWQECyR0MDQwNjU0MTQ0CQEQcGFyc2VVc2VyVmVzdGluZwIFC3VzZXJBZGRyZXNzBQJpZAQNdmVzdGluZ0Ftb3VudAgFCyR0MDQwNjU0MTQ0Al8xBApzdGFydEJsb2NrCAULJHQwNDA2NTQxNDQCXzIECmxvY2tMZW5ndGgIBQskdDA0MDY1NDE0NAJfMwQLJHQwNDE0NzQyMjUJARVnZXRVc2VyVW5sb2NrZWRBbW91bnQCBQt1c2VyQWRkcmVzcwUCaWQEDnVubG9ja2VkQW1vdW50CAULJHQwNDE0NzQyMjUCXzEED3JlbWFpbmluZ0Ftb3VudAgFCyR0MDQxNDc0MjI1Al8yBA9yZW1haW5pbmdCbG9ja3MJAJYDAQkAzAgCCQBlAgkAZAIFCnN0YXJ0QmxvY2sFCmxvY2tMZW5ndGgFBmhlaWdodAkAzAgCAAAFA25pbAQUdXBkYXRlVmVzdGluZ0FjdGlvbnMDCQECIT0CBQ51bmxvY2tlZEFtb3VudAAAAwkBAiE9AgUPcmVtYWluaW5nQmxvY2tzAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleVVzZXJWZXN0aW5nAgULdXNlckFkZHJlc3MFAmlkCQERZm9ybWF0VXNlclZlc3RpbmcDBQ9yZW1haW5pbmdBbW91bnQFBmhlaWdodAUPcmVtYWluaW5nQmxvY2tzBQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDmtleVVzZXJWZXN0aW5nAgULdXNlckFkZHJlc3MFAmlkBQNuaWwFA25pbAkAlAoCBRR1cGRhdGVWZXN0aW5nQWN0aW9ucwUOdW5sb2NrZWRBbW91bnQBE2dldFVzZXJDbGFpbUFjdGlvbnMCC3VzZXJBZGRyZXNzAmlkBAskdDA0Njg5NDc3NAkBF2dldFVwZGF0ZVZlc3RpbmdBY3Rpb25zAgULdXNlckFkZHJlc3MFAmlkBBR1cGRhdGVWZXN0aW5nQWN0aW9ucwgFCyR0MDQ2ODk0Nzc0Al8xBA51bmxvY2tlZEFtb3VudAgFCyR0MDQ2ODk0Nzc0Al8yBA90cmFuc2ZlckFjdGlvbnMDCQECIT0CBQ51bmxvY2tlZEFtb3VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFC3VzZXJBZGRyZXNzBQ51bmxvY2tlZEFtb3VudAUMYXNzZXRJZEJ5dGVzBQNuaWwFA25pbAkAlAoCCQDOCAIFFHVwZGF0ZVZlc3RpbmdBY3Rpb25zBQ90cmFuc2ZlckFjdGlvbnMFDnVubG9ja2VkQW1vdW50ARZnZXRBbGxVc2VyQ2xhaW1BY3Rpb25zAQt1c2VyQWRkcmVzcwoBDWFjdGlvbnNIZWxwZXICA2FjYwJpZAQLJHQwNTE0ODUxODgFA2FjYwQXYWxsVmVzdGluZ3NDbGFpbUFjdGlvbnMIBQskdDA1MTQ4NTE4OAJfMQQDc3VtCAULJHQwNTE0ODUxODgCXzIECyR0MDUxOTM1MjcwCQETZ2V0VXNlckNsYWltQWN0aW9ucwIFC3VzZXJBZGRyZXNzBQJpZAQTdmVzdGluZ0NsYWltQWN0aW9ucwgFCyR0MDUxOTM1MjcwAl8xBAtjbGFpbUFtb3VudAgFCyR0MDUxOTM1MjcwAl8yCQCUCgIJAM4IAgUXYWxsVmVzdGluZ3NDbGFpbUFjdGlvbnMFE3Zlc3RpbmdDbGFpbUFjdGlvbnMJAGQCBQNzdW0FC2NsYWltQW1vdW50CgACJGwFCElEU19MSVNUCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQENYWN0aW9uc0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMzAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4BJmdldE1vdmVBbGxVbmxvY2tlZFRvQWNjdW11bGF0b3JBY3Rpb25zAQt1c2VyQWRkcmVzcwoBDWFjdGlvbnNIZWxwZXICA2FjYwJpZAQLJHQwNTU2MzU2MDQFA2FjYwQYdXBkYXRlQWxsVmVzdGluZ3NBY3Rpb25zCAULJHQwNTU2MzU2MDQCXzEEA3N1bQgFCyR0MDU1NjM1NjA0Al8yBAskdDA1NjA5NTY5NAkBF2dldFVwZGF0ZVZlc3RpbmdBY3Rpb25zAgULdXNlckFkZHJlc3MFAmlkBBR1cGRhdGVWZXN0aW5nQWN0aW9ucwgFCyR0MDU2MDk1Njk0Al8xBA51bmxvY2tlZEFtb3VudAgFCyR0MDU2MDk1Njk0Al8yCQCUCgIJAM4IAgUYdXBkYXRlQWxsVmVzdGluZ3NBY3Rpb25zBRR1cGRhdGVWZXN0aW5nQWN0aW9ucwkAZAIFA3N1bQUOdW5sb2NrZWRBbW91bnQECyR0MDU3ODA1ODY4CgACJGwFCElEU19MSVNUCgACJHMJAJADAQUCJGwKAAUkYWNjMAkAlAoCBQNuaWwAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQENYWN0aW9uc0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMzAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4EGHVwZGF0ZUFsbFZlc3RpbmdzQWN0aW9ucwgFCyR0MDU3ODA1ODY4Al8xBAt1bmxvY2tlZFN1bQgFCyR0MDU3ODA1ODY4Al8yBA5vbGRBY2N1bXVsYXRlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQESa2V5VXNlckFjY3VtdWxhdGVkAQULdXNlckFkZHJlc3MAAAQYdXBkYXRlQWNjdW11bGF0ZWRBY3Rpb25zAwkBAiE9AgULdW5sb2NrZWRTdW0AAAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleVVzZXJBY2N1bXVsYXRlZAEFC3VzZXJBZGRyZXNzCQBkAgUOb2xkQWNjdW11bGF0ZWQFC3VubG9ja2VkU3VtBQNuaWwFA25pbAkAlAoCCQDOCAIFGHVwZGF0ZUFsbFZlc3RpbmdzQWN0aW9ucwUYdXBkYXRlQWNjdW11bGF0ZWRBY3Rpb25zBQt1bmxvY2tlZFN1bQEaZ2V0Q2xhaW1BY2N1bXVsYXRlZEFjdGlvbnMBC3VzZXJBZGRyZXNzBA5vbGRBY2N1bXVsYXRlZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQESa2V5VXNlckFjY3VtdWxhdGVkAQULdXNlckFkZHJlc3MAAAMJAQIhPQIFDm9sZEFjY3VtdWxhdGVkAAAJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQt1c2VyQWRkcmVzcwUOb2xkQWNjdW11bGF0ZWQFDGFzc2V0SWRCeXRlcwkAzAgCCQELRGVsZXRlRW50cnkBCQESa2V5VXNlckFjY3VtdWxhdGVkAQULdXNlckFkZHJlc3MFA25pbAUOb2xkQWNjdW11bGF0ZWQJAJQKAgUDbmlsAAABEmdldENsYWltQWxsQWN0aW9ucwELdXNlckFkZHJlc3MECyR0MDY2MzY2NzY5AwkBASEBCQEPY29udGFpbnNFbGVtZW50AgUHYmFuTGlzdAULdXNlckFkZHJlc3MJARZnZXRBbGxVc2VyQ2xhaW1BY3Rpb25zAQULdXNlckFkZHJlc3MJAJQKAgUDbmlsAAAEDGNsYWltQWN0aW9ucwgFCyR0MDY2MzY2NzY5Al8xBA51bmxvY2tlZEFtb3VudAgFCyR0MDY2MzY2NzY5Al8yBAskdDA2NzcyNjg2MgkBGmdldENsYWltQWNjdW11bGF0ZWRBY3Rpb25zAQULdXNlckFkZHJlc3MEF2NsYWltQWNjdW11bGF0ZWRBY3Rpb25zCAULJHQwNjc3MjY4NjICXzEEEWFjY3VtdWxhdGVkQW1vdW50CAULJHQwNjc3MjY4NjICXzIEC3RvdGFsQW1vdW50CQBkAgUOdW5sb2NrZWRBbW91bnQFEWFjY3VtdWxhdGVkQW1vdW50CQCUCgIJAM4IAgUMY2xhaW1BY3Rpb25zBRdjbGFpbUFjY3VtdWxhdGVkQWN0aW9ucwULdG90YWxBbW91bnQBEmdldFZlc3RpbmdVc2VySW5mbwELdXNlckFkZHJlc3MKAQZoZWxwZXICA2FjYwJpZAQLJHQwNzA3NjcxNTUJARBwYXJzZVVzZXJWZXN0aW5nAgULdXNlckFkZHJlc3MFAmlkBA12ZXN0aW5nQW1vdW50CAULJHQwNzA3NjcxNTUCXzEECnN0YXJ0QmxvY2sIBQskdDA3MDc2NzE1NQJfMgQKbG9ja0xlbmd0aAgFCyR0MDcwNzY3MTU1Al8zBAskdDA3MTYwNzIzOAkBFWdldFVzZXJVbmxvY2tlZEFtb3VudAIFC3VzZXJBZGRyZXNzBQJpZAQOdW5sb2NrZWRBbW91bnQIBQskdDA3MTYwNzIzOAJfMQQPcmVtYWluaW5nQW1vdW50CAULJHQwNzE2MDcyMzgCXzIDAwkAAAIFDXZlc3RpbmdBbW91bnQAAAYJAQ9jb250YWluc0VsZW1lbnQCBQdiYW5MaXN0BQt1c2VyQWRkcmVzcwUDYWNjCQDNCAIF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c3MNdmVzdGluZ0Ftb3VudApzdGFydEJsb2NrCmxvY2tMZW5ndGgEBWNoZWNrCQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkBCHRocm93RXJyAQIgc2hvdWxkIGJlIHdpdGggZXhhY3RseSAxIHBheW1lbnQJAMwIAgMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFDGFzc2V0SWRCeXRlcwYJAQh0aHJvd0VycgEJALkJAgkAzAgCAhtwYXltZW50IGFzc2V0SWQgc2hvdWxkIGJlOiAJAMwIAgUNYXNzZXRJZFN0cmluZwUDbmlsAgEgCQDMCAIDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQFDXZlc3RpbmdBbW91bnQGCQEIdGhyb3dFcnIBAi9wYXltZW50IGFtb3VudCBzaG91bGQgYmUgZXF1YWwgdG8gdmVzdGluZ0Ftb3VudAkAzAgCAwMJAAACBQlhZG1pbkxpc3QFA25pbAYJAQ9jb250YWluc0VsZW1lbnQCBQlhZG1pbkxpc3QJAKUIAQgFAWkGY2FsbGVyBgkBCHRocm93RXJyAQIReW91IG11c3QgYmUgYWRtaW4FA25pbAMJAAACBQVjaGVjawUFY2hlY2sEAmlkCQEVZ2V0QXZhaWxhYmxlVmVzdGluZ0lkAQULdXNlckFkZHJlc3MEDmhpc3RvcnlBY3Rpb25zCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlWZXN0aW5nSGlzdG9yeQMCBnZlc3RlZAULdXNlckFkZHJlc3MJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkAuQkCCQDMCAIJAKQDAQUNdmVzdGluZ0Ftb3VudAkAzAgCCQCkAwEFCnN0YXJ0QmxvY2sJAMwIAgkApAMBBQpsb2NrTGVuZ3RoBQNuaWwFA1NFUAUDbmlsCQDOCAIJARRnZXROZXdWZXN0aW5nQWN0aW9ucwUFC3VzZXJBZGRyZXNzBQJpZAUNdmVzdGluZ0Ftb3VudAUKc3RhcnRCbG9jawUKbG9ja0xlbmd0aAUOaGlzdG9yeUFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEDYmFuAQt1c2VyQWRkcmVzcwQGY2hlY2tzCQDMCAIDAwkAAAIFCWFkbWluTGlzdAUDbmlsBgkBD2NvbnRhaW5zRWxlbWVudAIFCWFkbWluTGlzdAkApQgBCAUBaQZjYWxsZXIGCQEIdGhyb3dFcnIBAhF5b3UgbXVzdCBiZSBhZG1pbgkAzAgCAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgUHYmFuTGlzdAULdXNlckFkZHJlc3MGCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIbdXNlciBhbHJlYWR5IGluIGEgYmFuIGxpc3Q6CQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwCASAFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQLJHQwOTUwMzk1OTEJASZnZXRNb3ZlQWxsVW5sb2NrZWRUb0FjY3VtdWxhdG9yQWN0aW9ucwEFC3VzZXJBZGRyZXNzBBhtb3ZlVG9BY2N1bXVsYXRlZEFjdGlvbnMIBQskdDA5NTAzOTU5MQJfMQQCX2EIBQskdDA5NTAzOTU5MQJfMgQTYWRkVG9CYW5MaXN0QWN0aW9ucwkAzAgCCQELU3RyaW5nRW50cnkCBQprZXlCYW5MaXN0CQC7CQIJAM0IAgUHYmFuTGlzdAULdXNlckFkZHJlc3MCAl9fBQNuaWwJAM4IAgUYbW92ZVRvQWNjdW11bGF0ZWRBY3Rpb25zBRNhZGRUb0Jhbkxpc3RBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBXVuYmFuAQt1c2VyQWRkcmVzcwQGY2hlY2tzCQDMCAIDAwkAAAIFCWFkbWluTGlzdAUDbmlsBgkBD2NvbnRhaW5zRWxlbWVudAIFCWFkbWluTGlzdAkApQgBCAUBaQZjYWxsZXIGCQEIdGhyb3dFcnIBAhF5b3UgbXVzdCBiZSBhZG1pbgkAzAgCAwkBD2NvbnRhaW5zRWxlbWVudAIFB2Jhbkxpc3QFC3VzZXJBZGRyZXNzBgkBCHRocm93RXJyAQkAuQkCCQDMCAICF3VzZXIgbm90IGluIGEgYmFuIGxpc3Q6CQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwCASAFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQKbmV3QmFuTGlzdAQHJG1hdGNoMAkAzwgCBQdiYW5MaXN0BQt1c2VyQWRkcmVzcwMJAAECBQckbWF0Y2gwAgNJbnQEA2luZAUHJG1hdGNoMAkA0QgCBQdiYW5MaXN0BQNpbmQJAQh0aHJvd0VycgECK3VzZXIgYWRkcmVzcyBpbmRleCBpbiBiYW4gbGlzdCBpcyBub3QgZm91bmQDCQAAAgUKbmV3QmFuTGlzdAUDbmlsCQDMCAIJAQtEZWxldGVFbnRyeQEFCmtleUJhbkxpc3QFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCBQprZXlCYW5MaXN0CQC7CQIFCm5ld0Jhbkxpc3QCAl9fBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIY2xhaW1BbGwABAt1c2VyQWRkcmVzcwkApQgBCAUBaQZjYWxsZXIEDSR0MDEwNDg0MTA1NDkJARJnZXRDbGFpbUFsbEFjdGlvbnMBBQt1c2VyQWRkcmVzcwQMY2xhaW1BY3Rpb25zCAUNJHQwMTA0ODQxMDU0OQJfMQQLdG90YWxBbW91bnQIBQ0kdDAxMDQ4NDEwNTQ5Al8yBA5oaXN0b3J5QWN0aW9ucwkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5VmVzdGluZ0hpc3RvcnkDAgdjbGFpbWVkBQt1c2VyQWRkcmVzcwkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQCkAwEFC3RvdGFsQW1vdW50BQNuaWwDCQBmAgULdG90YWxBbW91bnQAAAkAzggCBQxjbGFpbUFjdGlvbnMFDmhpc3RvcnlBY3Rpb25zCQEIdGhyb3dFcnIBAhBub3RoaW5nIHRvIGNsYWltAWkBEHVzZXJJbmZvUkVBRE9OTFkBC3VzZXJBZGRyZXNzBA0kdDAxMTE1MDExMjA1CQESZ2V0Q2xhaW1BbGxBY3Rpb25zAQULdXNlckFkZHJlc3MEAl9hCAUNJHQwMTExNTAxMTIwNQJfMQQLdG90YWxBbW91bnQIBQ0kdDAxMTE1MDExMjA1Al8yBBFhY2N1bXVsYXRlZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQESa2V5VXNlckFjY3VtdWxhdGVkAQULdXNlckFkZHJlc3MAAAkAlAoCBQNuaWwJAJUKAwULdG90YWxBbW91bnQFEWFjY3VtdWxhdGVkQW1vdW50CQESZ2V0VmVzdGluZ1VzZXJJbmZvAQULdXNlckFkZHJlc3MBAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXlvdhaU", "height": 2928005, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DZzX9CgaF2xRFZ6oAHDynpCyNcv8vpCYfUj1PBHCGtQ3 Next: 6ufmP5RMMxW3rVNkZsrigp22Mnx2QtAE6Mzr6XPNJWkU Diff:
OldNewDifferences
1212 func e (f) = throw(((a + ": ") + f))
1313
1414
15-let g = makeString(["%s", "assetId"], b)
15+func g () = "%s__managerPublicKey"
1616
17-let h = valueOrElse(getString(this, g), "WAVES")
1817
19-let i = if ((h == "WAVES"))
18+func h () = "%s__managerVaultAddress"
19+
20+
21+func i () = {
22+ let j = getString(h())
23+ if ($isInstanceOf(j, "String"))
24+ then {
25+ let k = j
26+ addressFromStringValue(k)
27+ }
28+ else this
29+ }
30+
31+
32+func l () = {
33+ let m = i()
34+ let j = getString(m, g())
35+ if ($isInstanceOf(j, "String"))
36+ then {
37+ let k = j
38+ fromBase58String(k)
39+ }
40+ else if ($isInstanceOf(j, "Unit"))
41+ then unit
42+ else throw("Match error")
43+ }
44+
45+
46+let n = makeString(["%s", "assetId"], b)
47+
48+let o = valueOrElse(getString(this, n), "WAVES")
49+
50+let p = if ((o == "WAVES"))
2051 then unit
21- else fromBase58String(h)
52+ else fromBase58String(o)
2253
23-let j = makeString(["%s", "adminAddressList"], b)
54+let q = makeString(["%s", "adminAddressList"], b)
2455
25-let k = makeString(["%s", "banList"], b)
56+let r = makeString(["%s", "banList"], b)
2657
27-let l = {
28- let m = getString(this, j)
29- if ($isInstanceOf(m, "String"))
58+let s = {
59+ let j = getString(this, q)
60+ if ($isInstanceOf(j, "String"))
3061 then {
31- let n = m
32- split(n, b)
62+ let k = j
63+ split(k, b)
3364 }
3465 else nil
3566 }
3667
37-let o = {
38- let m = getString(this, k)
39- if ($isInstanceOf(m, "String"))
40- then {
41- let n = m
42- if ((n == ""))
43- then nil
44- else split_51C(n, b)
45- }
46- else nil
68+let t = {
69+ let u = valueOrElse(getString(this, r), "")
70+ if ((u == ""))
71+ then nil
72+ else split_51C(u, b)
4773 }
4874
49-func p (q) = {
50- let m = addressFromString(q)
51- if ($isInstanceOf(m, "Address"))
75+func v (w) = {
76+ let j = addressFromString(w)
77+ if ($isInstanceOf(j, "Address"))
5278 then {
53- let r = m
79+ let x = j
5480 true
5581 }
5682 else false
5783 }
5884
5985
60-func s (t,u) = {
61- let v = [if (p(t))
86+func y (z,A) = {
87+ let B = [if (v(z))
6288 then true
63- else e(makeString(["address is not valid:", t], " ")), if (if ((u >= 0))
64- then (d > u)
89+ else e(makeString(["address is not valid:", z], " ")), if (if ((A >= 0))
90+ then (d > A)
6591 else false)
6692 then true
67- else e(makeString(["id should be less than", toString(d), "got:", toString(u)], " "))]
68- if ((v == v))
69- then makeString(["%s%s%d", "vesting", t, toString(u)], b)
93+ else e(makeString(["id should be less than", toString(d), "got:", toString(A)], " "))]
94+ if ((B == B))
95+ then makeString(["%s%s%d", "vesting", z, toString(A)], b)
7096 else throw("Strict value is not equal to itself.")
7197 }
7298
7399
74-func w (t) = {
75- let v = [if (p(t))
100+func C (z) = {
101+ let B = [if (v(z))
76102 then true
77- else e(makeString(["address is not valid:", t], " "))]
78- if ((v == v))
79- then makeString(["%s%s", "accumulated", t], b)
103+ else e(makeString(["address is not valid:", z], " "))]
104+ if ((B == B))
105+ then makeString(["%s%s", "accumulated", z], b)
80106 else throw("Strict value is not equal to itself.")
81107 }
82108
83109
84-func x (y,z,A) = {
85- let v = [if ((y >= 0))
110+func D (E,F,G) = {
111+ let B = [if ((E >= 0))
86112 then true
87- else e("vesting amount cannot be negative"), if ((z >= 0))
113+ else e("vesting amount cannot be negative"), if ((F >= 0))
88114 then true
89- else e("start block cannot be negative"), if ((A >= 0))
115+ else e("start block cannot be negative"), if ((G >= 0))
90116 then true
91117 else e("lock length cannot be negative")]
92- if ((v == v))
93- then makeString(["%d%d%d", toString(y), toString(z), toString(A)], b)
118+ if ((B == B))
119+ then makeString(["%d%d%d", toString(E), toString(F), toString(G)], b)
94120 else throw("Strict value is not equal to itself.")
95121 }
96122
97123
98-func B (t,u) = {
99- let m = getString(this, s(t, u))
100- if ($isInstanceOf(m, "String"))
124+func H (z,A) = {
125+ let j = getString(this, y(z, A))
126+ if ($isInstanceOf(j, "String"))
101127 then {
102- let C = m
103- let D = split(C, b)
104- let y = parseIntValue(D[1])
105- let z = parseIntValue(D[2])
106- let A = parseIntValue(D[3])
107- $Tuple3(y, z, A)
128+ let I = j
129+ let J = split(I, b)
130+ let E = parseIntValue(J[1])
131+ let F = parseIntValue(J[2])
132+ let G = parseIntValue(J[3])
133+ $Tuple3(E, F, G)
108134 }
109135 else $Tuple3(0, 0, 0)
110136 }
111137
112138
113-func E (F,t,G) = makeString(["%s%s%s%s", "history", t, F, G], b)
139+func K (L,z,M) = makeString(["%s%s%s%s", "history", z, L, M], b)
114140
115141
116-func H (I,z,A) = {
117- let J = (height - z)
118- let K = if (if ((A != 0))
119- then (J > 0)
142+func N (O,F,G) = {
143+ let P = (height - F)
144+ let Q = if (if ((G != 0))
145+ then (P > 0)
120146 else false)
121- then min([fraction(I, J, A), I])
147+ then min([fraction(O, P, G), O])
122148 else 0
123- $Tuple2(K, (I - K))
149+ $Tuple2(Q, (O - Q))
124150 }
125151
126152
127-func L (t,u) = {
128- let M = B(t, u)
129- let y = M._1
130- let z = M._2
131- let A = M._3
132- let N = H(y, z, A)
133- let K = N._1
134- let O = N._2
135- $Tuple2(K, O)
153+func R (z,A) = {
154+ let S = H(z, A)
155+ let E = S._1
156+ let F = S._2
157+ let G = S._3
158+ let T = N(E, F, G)
159+ let Q = T._1
160+ let U = T._2
161+ $Tuple2(Q, U)
136162 }
137163
138164
139-func P (t,u) = {
140- let Q = B(t, u)
141- let y = Q._1
142- let z = Q._2
143- let A = Q._3
144- let R = L(t, u)
145- let K = R._1
146- let O = R._2
147- let S = max([((z + A) - height), 0])
148- let T = if ((K != 0))
149- then if ((S != 0))
150- then [StringEntry(s(t, u), x(O, height, S))]
151- else [DeleteEntry(s(t, u))]
165+func V (z,A) = {
166+ let W = H(z, A)
167+ let E = W._1
168+ let F = W._2
169+ let G = W._3
170+ let X = R(z, A)
171+ let Q = X._1
172+ let U = X._2
173+ let Y = max([((F + G) - height), 0])
174+ let Z = if ((Q != 0))
175+ then if ((Y != 0))
176+ then [StringEntry(y(z, A), D(U, height, Y))]
177+ else [DeleteEntry(y(z, A))]
152178 else nil
153- $Tuple2(T, K)
179+ $Tuple2(Z, Q)
154180 }
155181
156182
157-func U (t,u) = {
158- let V = P(t, u)
159- let T = V._1
160- let K = V._2
161- let W = if ((K != 0))
162- then [ScriptTransfer(addressFromStringValue(t), K, i)]
183+func aa (z,A) = {
184+ let ab = V(z, A)
185+ let Z = ab._1
186+ let Q = ab._2
187+ let ac = if ((Q != 0))
188+ then [ScriptTransfer(addressFromStringValue(z), Q, p)]
163189 else nil
164- $Tuple2((T ++ W), K)
190+ $Tuple2((Z ++ ac), Q)
165191 }
166192
167193
168-func X (t) = {
169- func Y (Z,u) = {
170- let aa = Z
171- let ab = aa._1
172- let ac = aa._2
173- let ad = U(t, u)
174- let ae = ad._1
175- let af = ad._2
176- $Tuple2((ab ++ ae), (ac + af))
194+func ad (z) = {
195+ func ae (af,A) = {
196+ let ag = af
197+ let ah = ag._1
198+ let ai = ag._2
199+ let aj = aa(z, A)
200+ let ak = aj._1
201+ let al = aj._2
202+ $Tuple2((ah ++ ak), (ai + al))
177203 }
178204
179- let ag = c
180- let ah = size(ag)
181- let ai = $Tuple2(nil, 0)
182- func aj (ak,al) = if ((al >= ah))
183- then ak
184- else Y(ak, ag[al])
205+ let am = c
206+ let an = size(am)
207+ let ao = $Tuple2(nil, 0)
208+ func ap (aq,ar) = if ((ar >= an))
209+ then aq
210+ else ae(aq, am[ar])
185211
186- func am (ak,al) = if ((al >= ah))
187- then ak
212+ func as (aq,ar) = if ((ar >= an))
213+ then aq
188214 else throw("List size exceeds 30")
189215
190- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
216+ as(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ao, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
191217 }
192218
193219
194-func an (t) = {
195- func Y (Z,u) = {
196- let ao = Z
197- let ap = ao._1
198- let ac = ao._2
199- let aq = P(t, u)
200- let T = aq._1
201- let K = aq._2
202- $Tuple2((ap ++ T), (ac + K))
220+func at (z) = {
221+ func ae (af,A) = {
222+ let au = af
223+ let av = au._1
224+ let ai = au._2
225+ let aw = V(z, A)
226+ let Z = aw._1
227+ let Q = aw._2
228+ $Tuple2((av ++ Z), (ai + Q))
203229 }
204230
205- let ar = {
206- let ag = c
207- let ah = size(ag)
208- let ai = $Tuple2(nil, 0)
209- func aj (ak,al) = if ((al >= ah))
210- then ak
211- else Y(ak, ag[al])
231+ let ax = {
232+ let am = c
233+ let an = size(am)
234+ let ao = $Tuple2(nil, 0)
235+ func ap (aq,ar) = if ((ar >= an))
236+ then aq
237+ else ae(aq, am[ar])
212238
213- func am (ak,al) = if ((al >= ah))
214- then ak
239+ func as (aq,ar) = if ((ar >= an))
240+ then aq
215241 else throw("List size exceeds 30")
216242
217- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
243+ as(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ao, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
218244 }
219- let ap = ar._1
220- let as = ar._2
221- let at = valueOrElse(getInteger(this, w(t)), 0)
222- let au = if ((as != 0))
223- then [IntegerEntry(w(t), (at + as))]
245+ let av = ax._1
246+ let ay = ax._2
247+ let az = valueOrElse(getInteger(this, C(z)), 0)
248+ let aA = if ((ay != 0))
249+ then [IntegerEntry(C(z), (az + ay))]
224250 else nil
225- $Tuple2((ap ++ au), as)
251+ $Tuple2((av ++ aA), ay)
226252 }
227253
228254
229-func av (t) = {
230- let at = valueOrElse(getInteger(this, w(t)), 0)
231- if ((at != 0))
232- then $Tuple2([ScriptTransfer(addressFromStringValue(t), at, i), DeleteEntry(w(t))], at)
255+func aB (z) = {
256+ let az = valueOrElse(getInteger(this, C(z)), 0)
257+ if ((az != 0))
258+ then $Tuple2([ScriptTransfer(addressFromStringValue(z), az, p), DeleteEntry(C(z))], az)
233259 else $Tuple2(nil, 0)
234260 }
235261
236262
237-func aw (t) = {
238- let ax = if (!(containsElement(o, t)))
239- then X(t)
263+func aC (z) = {
264+ let aD = if (!(containsElement(t, z)))
265+ then ad(z)
240266 else $Tuple2(nil, 0)
241- let ay = ax._1
242- let K = ax._2
243- let az = av(t)
244- let aA = az._1
245- let aB = az._2
246- let aC = (K + aB)
247- $Tuple2((ay ++ aA), aC)
267+ let aE = aD._1
268+ let Q = aD._2
269+ let aF = aB(z)
270+ let aG = aF._1
271+ let aH = aF._2
272+ let aI = (Q + aH)
273+ $Tuple2((aE ++ aG), aI)
248274 }
249275
250276
251-func aD (t) = {
252- func aE (Z,u) = {
253- let aF = B(t, u)
254- let y = aF._1
255- let z = aF._2
256- let A = aF._3
257- let aG = L(t, u)
258- let K = aG._1
259- let O = aG._2
260- if (if ((y == 0))
277+func aJ (z) = {
278+ func aK (af,A) = {
279+ let aL = H(z, A)
280+ let E = aL._1
281+ let F = aL._2
282+ let G = aL._3
283+ let aM = R(z, A)
284+ let Q = aM._1
285+ let U = aM._2
286+ if (if ((E == 0))
261287 then true
262- else containsElement(o, t))
263- then Z
264- else (Z :+ [y, (z + A), K, O])
288+ else containsElement(t, z))
289+ then af
290+ else (af :+ [E, (F + G), Q, U])
265291 }
266292
267- let ag = c
268- let ah = size(ag)
269- let ai = nil
270- func aj (ak,al) = if ((al >= ah))
271- then ak
272- else aE(ak, ag[al])
293+ let am = c
294+ let an = size(am)
295+ let ao = nil
296+ func ap (aq,ar) = if ((ar >= an))
297+ then aq
298+ else aK(aq, am[ar])
273299
274- func am (ak,al) = if ((al >= ah))
275- then ak
300+ func as (aq,ar) = if ((ar >= an))
301+ then aq
276302 else throw("List size exceeds 30")
277303
278- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
304+ as(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ao, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
279305 }
280306
281307
282-func aH (t) = {
283- func aE (aI,u) = {
284- let aJ = B(t, u)
285- let y = aJ._1
286- let z = aJ._2
287- let A = aJ._3
288- if ((y > 0))
289- then aI
290- else if ((aI == -1))
291- then u
292- else min([aI, u])
308+func aN (z) = {
309+ func aK (aO,A) = {
310+ let aP = H(z, A)
311+ let E = aP._1
312+ let F = aP._2
313+ let G = aP._3
314+ if ((E > 0))
315+ then aO
316+ else if ((aO == -1))
317+ then A
318+ else min([aO, A])
293319 }
294320
295- let aI = {
296- let ag = c
297- let ah = size(ag)
298- let ai = -1
299- func aj (ak,al) = if ((al >= ah))
300- then ak
301- else aE(ak, ag[al])
321+ let aO = {
322+ let am = c
323+ let an = size(am)
324+ let ao = -1
325+ func ap (aq,ar) = if ((ar >= an))
326+ then aq
327+ else aK(aq, am[ar])
302328
303- func am (ak,al) = if ((al >= ah))
304- then ak
329+ func as (aq,ar) = if ((ar >= an))
330+ then aq
305331 else throw("List size exceeds 30")
306332
307- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
333+ as(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ao, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
308334 }
309- if ((aI == -1))
310- then e(makeString(["user exceeded max active vesting count: ", t], " "))
311- else aI
335+ if ((aO == -1))
336+ then e(makeString(["user exceeded max active vesting count: ", z], " "))
337+ else aO
312338 }
313339
314340
315-func aK (t,u,y,z,A) = [StringEntry(s(t, u), x(y, z, A))]
341+func aQ (z,A,E,F,G) = [StringEntry(y(z, A), D(E, F, G))]
316342
317343
318-@Callable(aL)
319-func vestingForUser (t,y,z,A) = {
320- let aM = [if ((size(aL.payments) == 1))
344+@Callable(aR)
345+func vestingForUser (z,E,F,G) = {
346+ let aS = [if ((size(aR.payments) == 1))
321347 then true
322- else e("should be with exactly 1 payment"), if ((aL.payments[0].assetId == i))
348+ else e("should be with exactly 1 payment"), if ((aR.payments[0].assetId == p))
323349 then true
324- else e(makeString(["payment assetId should be: ", h], " ")), if ((aL.payments[0].amount == y))
350+ else e(makeString(["payment assetId should be: ", o], " ")), if ((aR.payments[0].amount == E))
325351 then true
326- else e("payment amount should be equal to vestingAmount"), if (if ((l == nil))
352+ else e("payment amount should be equal to vestingAmount"), if (if ((s == nil))
327353 then true
328- else containsElement(l, toString(aL.caller)))
354+ else containsElement(s, toString(aR.caller)))
329355 then true
330356 else e("you must be admin")]
331- if ((aM == aM))
357+ if ((aS == aS))
332358 then {
333- let u = aH(t)
334- let aN = [StringEntry(E("vested", t, toBase58String(aL.transactionId)), makeString([toString(y), toString(z), toString(A)], b))]
335- (aK(t, u, y, z, A) ++ aN)
359+ let A = aN(z)
360+ let aT = [StringEntry(K("vested", z, toBase58String(aR.transactionId)), makeString([toString(E), toString(F), toString(G)], b))]
361+ (aQ(z, A, E, F, G) ++ aT)
336362 }
337363 else throw("Strict value is not equal to itself.")
338364 }
339365
340366
341367
342-@Callable(aL)
343-func ban (t) = {
344- let v = [if (if ((l == nil))
368+@Callable(aR)
369+func ban (z) = {
370+ let B = [if (if ((s == nil))
345371 then true
346- else containsElement(l, toString(aL.caller)))
372+ else containsElement(s, toString(aR.caller)))
347373 then true
348- else e("you must be admin"), if (!(containsElement(o, t)))
374+ else e("you must be admin"), if (!(containsElement(t, z)))
349375 then true
350- else e(makeString(["user already in a ban list:", t], " "))]
351- if ((v == v))
376+ else e(makeString(["user already in a ban list:", z], " "))]
377+ if ((B == B))
352378 then {
353- let aO = an(t)
354- let aP = aO._1
355- let aQ = aO._2
356- let aR = [StringEntry(k, makeString_11C((o :+ t), "__"))]
357- (aP ++ aR)
379+ let aU = at(z)
380+ let aV = aU._1
381+ let aW = aU._2
382+ let aX = [StringEntry(r, makeString_11C((t :+ z), "__"))]
383+ (aV ++ aX)
358384 }
359385 else throw("Strict value is not equal to itself.")
360386 }
361387
362388
363389
364-@Callable(aL)
365-func unban (t) = {
366- let v = [if (if ((l == nil))
390+@Callable(aR)
391+func unban (z) = {
392+ let B = [if (if ((s == nil))
367393 then true
368- else containsElement(l, toString(aL.caller)))
394+ else containsElement(s, toString(aR.caller)))
369395 then true
370- else e("you must be admin"), if (containsElement(o, t))
396+ else e("you must be admin"), if (containsElement(t, z))
371397 then true
372- else e(makeString(["user not in a ban list:", t], " "))]
373- if ((v == v))
398+ else e(makeString(["user not in a ban list:", z], " "))]
399+ if ((B == B))
374400 then {
375- let aS = {
376- let m = indexOf(o, t)
377- if ($isInstanceOf(m, "Int"))
401+ let aY = {
402+ let j = indexOf(t, z)
403+ if ($isInstanceOf(j, "Int"))
378404 then {
379- let aT = m
380- removeByIndex(o, aT)
405+ let aZ = j
406+ removeByIndex(t, aZ)
381407 }
382408 else e("user address index in ban list is not found")
383409 }
384- if ((aS == nil))
385- then [DeleteEntry(k)]
386- else [StringEntry(k, makeString_11C(aS, "__"))]
410+ if ((aY == nil))
411+ then [DeleteEntry(r)]
412+ else [StringEntry(r, makeString_11C(aY, "__"))]
387413 }
388414 else throw("Strict value is not equal to itself.")
389415 }
390416
391417
392418
393-@Callable(aL)
419+@Callable(aR)
394420 func claimAll () = {
395- let t = toString(aL.caller)
396- let aU = aw(t)
397- let ay = aU._1
398- let aC = aU._2
399- let aN = [StringEntry(E("claimed", t, toBase58String(aL.transactionId)), toString(aC))]
400- if ((aC > 0))
401- then (ay ++ aN)
421+ let z = toString(aR.caller)
422+ let ba = aC(z)
423+ let aE = ba._1
424+ let aI = ba._2
425+ let aT = [StringEntry(K("claimed", z, toBase58String(aR.transactionId)), toString(aI))]
426+ if ((aI > 0))
427+ then (aE ++ aT)
402428 else e("nothing to claim")
403429 }
404430
405431
406432
407-@Callable(aL)
408-func userInfoREADONLY (t) = {
409- let aV = aw(t)
410- let aQ = aV._1
411- let aC = aV._2
412- let aB = valueOrElse(getInteger(this, w(t)), 0)
413- $Tuple2(nil, $Tuple3(aC, aB, aD(t)))
433+@Callable(aR)
434+func userInfoREADONLY (z) = {
435+ let bb = aC(z)
436+ let aW = bb._1
437+ let aI = bb._2
438+ let aH = valueOrElse(getInteger(this, C(z)), 0)
439+ $Tuple2(nil, $Tuple3(aI, aH, aJ(z)))
414440 }
415441
442+
443+@Verifier(bc)
444+func bd () = {
445+ let be = {
446+ let j = l()
447+ if ($isInstanceOf(j, "ByteVector"))
448+ then {
449+ let bf = j
450+ bf
451+ }
452+ else if ($isInstanceOf(j, "Unit"))
453+ then bc.senderPublicKey
454+ else throw("Match error")
455+ }
456+ sigVerify(bc.bodyBytes, bc.proofs[0], be)
457+ }
416458
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "vesting_neo.ride"
55
66 let b = "__"
77
88 let c = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
99
1010 let d = size(c)
1111
1212 func e (f) = throw(((a + ": ") + f))
1313
1414
15-let g = makeString(["%s", "assetId"], b)
15+func g () = "%s__managerPublicKey"
1616
17-let h = valueOrElse(getString(this, g), "WAVES")
1817
19-let i = if ((h == "WAVES"))
18+func h () = "%s__managerVaultAddress"
19+
20+
21+func i () = {
22+ let j = getString(h())
23+ if ($isInstanceOf(j, "String"))
24+ then {
25+ let k = j
26+ addressFromStringValue(k)
27+ }
28+ else this
29+ }
30+
31+
32+func l () = {
33+ let m = i()
34+ let j = getString(m, g())
35+ if ($isInstanceOf(j, "String"))
36+ then {
37+ let k = j
38+ fromBase58String(k)
39+ }
40+ else if ($isInstanceOf(j, "Unit"))
41+ then unit
42+ else throw("Match error")
43+ }
44+
45+
46+let n = makeString(["%s", "assetId"], b)
47+
48+let o = valueOrElse(getString(this, n), "WAVES")
49+
50+let p = if ((o == "WAVES"))
2051 then unit
21- else fromBase58String(h)
52+ else fromBase58String(o)
2253
23-let j = makeString(["%s", "adminAddressList"], b)
54+let q = makeString(["%s", "adminAddressList"], b)
2455
25-let k = makeString(["%s", "banList"], b)
56+let r = makeString(["%s", "banList"], b)
2657
27-let l = {
28- let m = getString(this, j)
29- if ($isInstanceOf(m, "String"))
58+let s = {
59+ let j = getString(this, q)
60+ if ($isInstanceOf(j, "String"))
3061 then {
31- let n = m
32- split(n, b)
62+ let k = j
63+ split(k, b)
3364 }
3465 else nil
3566 }
3667
37-let o = {
38- let m = getString(this, k)
39- if ($isInstanceOf(m, "String"))
40- then {
41- let n = m
42- if ((n == ""))
43- then nil
44- else split_51C(n, b)
45- }
46- else nil
68+let t = {
69+ let u = valueOrElse(getString(this, r), "")
70+ if ((u == ""))
71+ then nil
72+ else split_51C(u, b)
4773 }
4874
49-func p (q) = {
50- let m = addressFromString(q)
51- if ($isInstanceOf(m, "Address"))
75+func v (w) = {
76+ let j = addressFromString(w)
77+ if ($isInstanceOf(j, "Address"))
5278 then {
53- let r = m
79+ let x = j
5480 true
5581 }
5682 else false
5783 }
5884
5985
60-func s (t,u) = {
61- let v = [if (p(t))
86+func y (z,A) = {
87+ let B = [if (v(z))
6288 then true
63- else e(makeString(["address is not valid:", t], " ")), if (if ((u >= 0))
64- then (d > u)
89+ else e(makeString(["address is not valid:", z], " ")), if (if ((A >= 0))
90+ then (d > A)
6591 else false)
6692 then true
67- else e(makeString(["id should be less than", toString(d), "got:", toString(u)], " "))]
68- if ((v == v))
69- then makeString(["%s%s%d", "vesting", t, toString(u)], b)
93+ else e(makeString(["id should be less than", toString(d), "got:", toString(A)], " "))]
94+ if ((B == B))
95+ then makeString(["%s%s%d", "vesting", z, toString(A)], b)
7096 else throw("Strict value is not equal to itself.")
7197 }
7298
7399
74-func w (t) = {
75- let v = [if (p(t))
100+func C (z) = {
101+ let B = [if (v(z))
76102 then true
77- else e(makeString(["address is not valid:", t], " "))]
78- if ((v == v))
79- then makeString(["%s%s", "accumulated", t], b)
103+ else e(makeString(["address is not valid:", z], " "))]
104+ if ((B == B))
105+ then makeString(["%s%s", "accumulated", z], b)
80106 else throw("Strict value is not equal to itself.")
81107 }
82108
83109
84-func x (y,z,A) = {
85- let v = [if ((y >= 0))
110+func D (E,F,G) = {
111+ let B = [if ((E >= 0))
86112 then true
87- else e("vesting amount cannot be negative"), if ((z >= 0))
113+ else e("vesting amount cannot be negative"), if ((F >= 0))
88114 then true
89- else e("start block cannot be negative"), if ((A >= 0))
115+ else e("start block cannot be negative"), if ((G >= 0))
90116 then true
91117 else e("lock length cannot be negative")]
92- if ((v == v))
93- then makeString(["%d%d%d", toString(y), toString(z), toString(A)], b)
118+ if ((B == B))
119+ then makeString(["%d%d%d", toString(E), toString(F), toString(G)], b)
94120 else throw("Strict value is not equal to itself.")
95121 }
96122
97123
98-func B (t,u) = {
99- let m = getString(this, s(t, u))
100- if ($isInstanceOf(m, "String"))
124+func H (z,A) = {
125+ let j = getString(this, y(z, A))
126+ if ($isInstanceOf(j, "String"))
101127 then {
102- let C = m
103- let D = split(C, b)
104- let y = parseIntValue(D[1])
105- let z = parseIntValue(D[2])
106- let A = parseIntValue(D[3])
107- $Tuple3(y, z, A)
128+ let I = j
129+ let J = split(I, b)
130+ let E = parseIntValue(J[1])
131+ let F = parseIntValue(J[2])
132+ let G = parseIntValue(J[3])
133+ $Tuple3(E, F, G)
108134 }
109135 else $Tuple3(0, 0, 0)
110136 }
111137
112138
113-func E (F,t,G) = makeString(["%s%s%s%s", "history", t, F, G], b)
139+func K (L,z,M) = makeString(["%s%s%s%s", "history", z, L, M], b)
114140
115141
116-func H (I,z,A) = {
117- let J = (height - z)
118- let K = if (if ((A != 0))
119- then (J > 0)
142+func N (O,F,G) = {
143+ let P = (height - F)
144+ let Q = if (if ((G != 0))
145+ then (P > 0)
120146 else false)
121- then min([fraction(I, J, A), I])
147+ then min([fraction(O, P, G), O])
122148 else 0
123- $Tuple2(K, (I - K))
149+ $Tuple2(Q, (O - Q))
124150 }
125151
126152
127-func L (t,u) = {
128- let M = B(t, u)
129- let y = M._1
130- let z = M._2
131- let A = M._3
132- let N = H(y, z, A)
133- let K = N._1
134- let O = N._2
135- $Tuple2(K, O)
153+func R (z,A) = {
154+ let S = H(z, A)
155+ let E = S._1
156+ let F = S._2
157+ let G = S._3
158+ let T = N(E, F, G)
159+ let Q = T._1
160+ let U = T._2
161+ $Tuple2(Q, U)
136162 }
137163
138164
139-func P (t,u) = {
140- let Q = B(t, u)
141- let y = Q._1
142- let z = Q._2
143- let A = Q._3
144- let R = L(t, u)
145- let K = R._1
146- let O = R._2
147- let S = max([((z + A) - height), 0])
148- let T = if ((K != 0))
149- then if ((S != 0))
150- then [StringEntry(s(t, u), x(O, height, S))]
151- else [DeleteEntry(s(t, u))]
165+func V (z,A) = {
166+ let W = H(z, A)
167+ let E = W._1
168+ let F = W._2
169+ let G = W._3
170+ let X = R(z, A)
171+ let Q = X._1
172+ let U = X._2
173+ let Y = max([((F + G) - height), 0])
174+ let Z = if ((Q != 0))
175+ then if ((Y != 0))
176+ then [StringEntry(y(z, A), D(U, height, Y))]
177+ else [DeleteEntry(y(z, A))]
152178 else nil
153- $Tuple2(T, K)
179+ $Tuple2(Z, Q)
154180 }
155181
156182
157-func U (t,u) = {
158- let V = P(t, u)
159- let T = V._1
160- let K = V._2
161- let W = if ((K != 0))
162- then [ScriptTransfer(addressFromStringValue(t), K, i)]
183+func aa (z,A) = {
184+ let ab = V(z, A)
185+ let Z = ab._1
186+ let Q = ab._2
187+ let ac = if ((Q != 0))
188+ then [ScriptTransfer(addressFromStringValue(z), Q, p)]
163189 else nil
164- $Tuple2((T ++ W), K)
190+ $Tuple2((Z ++ ac), Q)
165191 }
166192
167193
168-func X (t) = {
169- func Y (Z,u) = {
170- let aa = Z
171- let ab = aa._1
172- let ac = aa._2
173- let ad = U(t, u)
174- let ae = ad._1
175- let af = ad._2
176- $Tuple2((ab ++ ae), (ac + af))
194+func ad (z) = {
195+ func ae (af,A) = {
196+ let ag = af
197+ let ah = ag._1
198+ let ai = ag._2
199+ let aj = aa(z, A)
200+ let ak = aj._1
201+ let al = aj._2
202+ $Tuple2((ah ++ ak), (ai + al))
177203 }
178204
179- let ag = c
180- let ah = size(ag)
181- let ai = $Tuple2(nil, 0)
182- func aj (ak,al) = if ((al >= ah))
183- then ak
184- else Y(ak, ag[al])
205+ let am = c
206+ let an = size(am)
207+ let ao = $Tuple2(nil, 0)
208+ func ap (aq,ar) = if ((ar >= an))
209+ then aq
210+ else ae(aq, am[ar])
185211
186- func am (ak,al) = if ((al >= ah))
187- then ak
212+ func as (aq,ar) = if ((ar >= an))
213+ then aq
188214 else throw("List size exceeds 30")
189215
190- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
216+ as(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ao, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
191217 }
192218
193219
194-func an (t) = {
195- func Y (Z,u) = {
196- let ao = Z
197- let ap = ao._1
198- let ac = ao._2
199- let aq = P(t, u)
200- let T = aq._1
201- let K = aq._2
202- $Tuple2((ap ++ T), (ac + K))
220+func at (z) = {
221+ func ae (af,A) = {
222+ let au = af
223+ let av = au._1
224+ let ai = au._2
225+ let aw = V(z, A)
226+ let Z = aw._1
227+ let Q = aw._2
228+ $Tuple2((av ++ Z), (ai + Q))
203229 }
204230
205- let ar = {
206- let ag = c
207- let ah = size(ag)
208- let ai = $Tuple2(nil, 0)
209- func aj (ak,al) = if ((al >= ah))
210- then ak
211- else Y(ak, ag[al])
231+ let ax = {
232+ let am = c
233+ let an = size(am)
234+ let ao = $Tuple2(nil, 0)
235+ func ap (aq,ar) = if ((ar >= an))
236+ then aq
237+ else ae(aq, am[ar])
212238
213- func am (ak,al) = if ((al >= ah))
214- then ak
239+ func as (aq,ar) = if ((ar >= an))
240+ then aq
215241 else throw("List size exceeds 30")
216242
217- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
243+ as(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ao, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
218244 }
219- let ap = ar._1
220- let as = ar._2
221- let at = valueOrElse(getInteger(this, w(t)), 0)
222- let au = if ((as != 0))
223- then [IntegerEntry(w(t), (at + as))]
245+ let av = ax._1
246+ let ay = ax._2
247+ let az = valueOrElse(getInteger(this, C(z)), 0)
248+ let aA = if ((ay != 0))
249+ then [IntegerEntry(C(z), (az + ay))]
224250 else nil
225- $Tuple2((ap ++ au), as)
251+ $Tuple2((av ++ aA), ay)
226252 }
227253
228254
229-func av (t) = {
230- let at = valueOrElse(getInteger(this, w(t)), 0)
231- if ((at != 0))
232- then $Tuple2([ScriptTransfer(addressFromStringValue(t), at, i), DeleteEntry(w(t))], at)
255+func aB (z) = {
256+ let az = valueOrElse(getInteger(this, C(z)), 0)
257+ if ((az != 0))
258+ then $Tuple2([ScriptTransfer(addressFromStringValue(z), az, p), DeleteEntry(C(z))], az)
233259 else $Tuple2(nil, 0)
234260 }
235261
236262
237-func aw (t) = {
238- let ax = if (!(containsElement(o, t)))
239- then X(t)
263+func aC (z) = {
264+ let aD = if (!(containsElement(t, z)))
265+ then ad(z)
240266 else $Tuple2(nil, 0)
241- let ay = ax._1
242- let K = ax._2
243- let az = av(t)
244- let aA = az._1
245- let aB = az._2
246- let aC = (K + aB)
247- $Tuple2((ay ++ aA), aC)
267+ let aE = aD._1
268+ let Q = aD._2
269+ let aF = aB(z)
270+ let aG = aF._1
271+ let aH = aF._2
272+ let aI = (Q + aH)
273+ $Tuple2((aE ++ aG), aI)
248274 }
249275
250276
251-func aD (t) = {
252- func aE (Z,u) = {
253- let aF = B(t, u)
254- let y = aF._1
255- let z = aF._2
256- let A = aF._3
257- let aG = L(t, u)
258- let K = aG._1
259- let O = aG._2
260- if (if ((y == 0))
277+func aJ (z) = {
278+ func aK (af,A) = {
279+ let aL = H(z, A)
280+ let E = aL._1
281+ let F = aL._2
282+ let G = aL._3
283+ let aM = R(z, A)
284+ let Q = aM._1
285+ let U = aM._2
286+ if (if ((E == 0))
261287 then true
262- else containsElement(o, t))
263- then Z
264- else (Z :+ [y, (z + A), K, O])
288+ else containsElement(t, z))
289+ then af
290+ else (af :+ [E, (F + G), Q, U])
265291 }
266292
267- let ag = c
268- let ah = size(ag)
269- let ai = nil
270- func aj (ak,al) = if ((al >= ah))
271- then ak
272- else aE(ak, ag[al])
293+ let am = c
294+ let an = size(am)
295+ let ao = nil
296+ func ap (aq,ar) = if ((ar >= an))
297+ then aq
298+ else aK(aq, am[ar])
273299
274- func am (ak,al) = if ((al >= ah))
275- then ak
300+ func as (aq,ar) = if ((ar >= an))
301+ then aq
276302 else throw("List size exceeds 30")
277303
278- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
304+ as(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ao, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
279305 }
280306
281307
282-func aH (t) = {
283- func aE (aI,u) = {
284- let aJ = B(t, u)
285- let y = aJ._1
286- let z = aJ._2
287- let A = aJ._3
288- if ((y > 0))
289- then aI
290- else if ((aI == -1))
291- then u
292- else min([aI, u])
308+func aN (z) = {
309+ func aK (aO,A) = {
310+ let aP = H(z, A)
311+ let E = aP._1
312+ let F = aP._2
313+ let G = aP._3
314+ if ((E > 0))
315+ then aO
316+ else if ((aO == -1))
317+ then A
318+ else min([aO, A])
293319 }
294320
295- let aI = {
296- let ag = c
297- let ah = size(ag)
298- let ai = -1
299- func aj (ak,al) = if ((al >= ah))
300- then ak
301- else aE(ak, ag[al])
321+ let aO = {
322+ let am = c
323+ let an = size(am)
324+ let ao = -1
325+ func ap (aq,ar) = if ((ar >= an))
326+ then aq
327+ else aK(aq, am[ar])
302328
303- func am (ak,al) = if ((al >= ah))
304- then ak
329+ func as (aq,ar) = if ((ar >= an))
330+ then aq
305331 else throw("List size exceeds 30")
306332
307- am(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(aj(ai, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
333+ as(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ap(ao, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30)
308334 }
309- if ((aI == -1))
310- then e(makeString(["user exceeded max active vesting count: ", t], " "))
311- else aI
335+ if ((aO == -1))
336+ then e(makeString(["user exceeded max active vesting count: ", z], " "))
337+ else aO
312338 }
313339
314340
315-func aK (t,u,y,z,A) = [StringEntry(s(t, u), x(y, z, A))]
341+func aQ (z,A,E,F,G) = [StringEntry(y(z, A), D(E, F, G))]
316342
317343
318-@Callable(aL)
319-func vestingForUser (t,y,z,A) = {
320- let aM = [if ((size(aL.payments) == 1))
344+@Callable(aR)
345+func vestingForUser (z,E,F,G) = {
346+ let aS = [if ((size(aR.payments) == 1))
321347 then true
322- else e("should be with exactly 1 payment"), if ((aL.payments[0].assetId == i))
348+ else e("should be with exactly 1 payment"), if ((aR.payments[0].assetId == p))
323349 then true
324- else e(makeString(["payment assetId should be: ", h], " ")), if ((aL.payments[0].amount == y))
350+ else e(makeString(["payment assetId should be: ", o], " ")), if ((aR.payments[0].amount == E))
325351 then true
326- else e("payment amount should be equal to vestingAmount"), if (if ((l == nil))
352+ else e("payment amount should be equal to vestingAmount"), if (if ((s == nil))
327353 then true
328- else containsElement(l, toString(aL.caller)))
354+ else containsElement(s, toString(aR.caller)))
329355 then true
330356 else e("you must be admin")]
331- if ((aM == aM))
357+ if ((aS == aS))
332358 then {
333- let u = aH(t)
334- let aN = [StringEntry(E("vested", t, toBase58String(aL.transactionId)), makeString([toString(y), toString(z), toString(A)], b))]
335- (aK(t, u, y, z, A) ++ aN)
359+ let A = aN(z)
360+ let aT = [StringEntry(K("vested", z, toBase58String(aR.transactionId)), makeString([toString(E), toString(F), toString(G)], b))]
361+ (aQ(z, A, E, F, G) ++ aT)
336362 }
337363 else throw("Strict value is not equal to itself.")
338364 }
339365
340366
341367
342-@Callable(aL)
343-func ban (t) = {
344- let v = [if (if ((l == nil))
368+@Callable(aR)
369+func ban (z) = {
370+ let B = [if (if ((s == nil))
345371 then true
346- else containsElement(l, toString(aL.caller)))
372+ else containsElement(s, toString(aR.caller)))
347373 then true
348- else e("you must be admin"), if (!(containsElement(o, t)))
374+ else e("you must be admin"), if (!(containsElement(t, z)))
349375 then true
350- else e(makeString(["user already in a ban list:", t], " "))]
351- if ((v == v))
376+ else e(makeString(["user already in a ban list:", z], " "))]
377+ if ((B == B))
352378 then {
353- let aO = an(t)
354- let aP = aO._1
355- let aQ = aO._2
356- let aR = [StringEntry(k, makeString_11C((o :+ t), "__"))]
357- (aP ++ aR)
379+ let aU = at(z)
380+ let aV = aU._1
381+ let aW = aU._2
382+ let aX = [StringEntry(r, makeString_11C((t :+ z), "__"))]
383+ (aV ++ aX)
358384 }
359385 else throw("Strict value is not equal to itself.")
360386 }
361387
362388
363389
364-@Callable(aL)
365-func unban (t) = {
366- let v = [if (if ((l == nil))
390+@Callable(aR)
391+func unban (z) = {
392+ let B = [if (if ((s == nil))
367393 then true
368- else containsElement(l, toString(aL.caller)))
394+ else containsElement(s, toString(aR.caller)))
369395 then true
370- else e("you must be admin"), if (containsElement(o, t))
396+ else e("you must be admin"), if (containsElement(t, z))
371397 then true
372- else e(makeString(["user not in a ban list:", t], " "))]
373- if ((v == v))
398+ else e(makeString(["user not in a ban list:", z], " "))]
399+ if ((B == B))
374400 then {
375- let aS = {
376- let m = indexOf(o, t)
377- if ($isInstanceOf(m, "Int"))
401+ let aY = {
402+ let j = indexOf(t, z)
403+ if ($isInstanceOf(j, "Int"))
378404 then {
379- let aT = m
380- removeByIndex(o, aT)
405+ let aZ = j
406+ removeByIndex(t, aZ)
381407 }
382408 else e("user address index in ban list is not found")
383409 }
384- if ((aS == nil))
385- then [DeleteEntry(k)]
386- else [StringEntry(k, makeString_11C(aS, "__"))]
410+ if ((aY == nil))
411+ then [DeleteEntry(r)]
412+ else [StringEntry(r, makeString_11C(aY, "__"))]
387413 }
388414 else throw("Strict value is not equal to itself.")
389415 }
390416
391417
392418
393-@Callable(aL)
419+@Callable(aR)
394420 func claimAll () = {
395- let t = toString(aL.caller)
396- let aU = aw(t)
397- let ay = aU._1
398- let aC = aU._2
399- let aN = [StringEntry(E("claimed", t, toBase58String(aL.transactionId)), toString(aC))]
400- if ((aC > 0))
401- then (ay ++ aN)
421+ let z = toString(aR.caller)
422+ let ba = aC(z)
423+ let aE = ba._1
424+ let aI = ba._2
425+ let aT = [StringEntry(K("claimed", z, toBase58String(aR.transactionId)), toString(aI))]
426+ if ((aI > 0))
427+ then (aE ++ aT)
402428 else e("nothing to claim")
403429 }
404430
405431
406432
407-@Callable(aL)
408-func userInfoREADONLY (t) = {
409- let aV = aw(t)
410- let aQ = aV._1
411- let aC = aV._2
412- let aB = valueOrElse(getInteger(this, w(t)), 0)
413- $Tuple2(nil, $Tuple3(aC, aB, aD(t)))
433+@Callable(aR)
434+func userInfoREADONLY (z) = {
435+ let bb = aC(z)
436+ let aW = bb._1
437+ let aI = bb._2
438+ let aH = valueOrElse(getInteger(this, C(z)), 0)
439+ $Tuple2(nil, $Tuple3(aI, aH, aJ(z)))
414440 }
415441
442+
443+@Verifier(bc)
444+func bd () = {
445+ let be = {
446+ let j = l()
447+ if ($isInstanceOf(j, "ByteVector"))
448+ then {
449+ let bf = j
450+ bf
451+ }
452+ else if ($isInstanceOf(j, "Unit"))
453+ then bc.senderPublicKey
454+ else throw("Match error")
455+ }
456+ sigVerify(bc.bodyBytes, bc.proofs[0], be)
457+ }
416458

github/deemru/w8io/c3f4982 
160.28 ms