tx · AD1yy84NgB3UNpyKryCJTDD6pqGyKCm22BovMbXr8F5j

3N1BEXuoepNEwqkbeZYKviaLQfvBQV3ibYE:  -0.02300000 Waves

2023.10.17 09:50 [2802280] smart account 3N1BEXuoepNEwqkbeZYKviaLQfvBQV3ibYE > SELF 0.00000000 Waves

{ "type": 13, "id": "AD1yy84NgB3UNpyKryCJTDD6pqGyKCm22BovMbXr8F5j", "fee": 2300000, "feeAssetId": null, "timestamp": 1697525446471, "version": 2, "chainId": 84, "sender": "3N1BEXuoepNEwqkbeZYKviaLQfvBQV3ibYE", "senderPublicKey": "6t3vrhP1jCmG7CeKBmL8hUibtdP3cMXGC2XtPYEPPC5w", "proofs": [ "5Zsw6b3GaJTvK5LWt5knqiJY97grqK4bf2RVS2aixxzKWNnpmG4mV2s5fuuMUXRHbRpp4xrqRSA9sk4FAEKTMWKW" ], "script": "base64:BgIrCAISBQoDCAEIEgMKAQgSBAoCCAQSAwoBCBIDCgEIEgUKAwgBCBIECgIIATYACXNlcGFyYXRvcgICX18ABU1VTFQ4AIDC1y8AC3dhdmVzU3RyaW5nAgVXQVZFUwAQc3RhdHVzSW5Qcm9ncmVzcwIKaW5Qcm9ncmVzcwAOc3RhdHVzQWNjZXB0ZWQCCGFjY2VwdGVkAA5zdGF0dXNSZWplY3RlZAIIcmVqZWN0ZWQBB3dyYXBFcnIBA21zZwkAuQkCCQDMCAICGHZvdGluZ192ZXJpZmllZF92Mi5yaWRlOgkAzAgCBQNtc2cFA25pbAIBIAEIdGhyb3dFcnIBA21zZwkAAgEJAQd3cmFwRXJyAQUDbXNnAQVhc0ludAEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIDSW50BAZ2YWxJbnQFByRtYXRjaDAFBnZhbEludAkAAgECG0ZhaWxlZCB0byBjYXN0IGludG8gSW50ZWdlcgEMcGFyc2VBc3NldElkAQVpbnB1dAMJAAACBQVpbnB1dAULd2F2ZXNTdHJpbmcFBHVuaXQJANkEAQUFaW5wdXQBD2Fzc2V0SWRUb1N0cmluZwEFaW5wdXQDCQAAAgUFaW5wdXQFBHVuaXQFC3dhdmVzU3RyaW5nCQDYBAEJAQV2YWx1ZQEFBWlucHV0ARBnZXRJbnRlZ2VyT3JaZXJvAgdhZGRyZXNzA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQdhZGRyZXNzBQNrZXkAAAEQZ2V0SW50ZWdlck9yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQdhZGRyZXNzBQNrZXkJAQd3cmFwRXJyAQkArAICBQNrZXkCDyBpcyBub3QgZGVmaW5lZAEQZ2V0U3RyaW5nT3JFbXB0eQIHYWRkcmVzcwNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUHYWRkcmVzcwUDa2V5AgABD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJAQd3cmFwRXJyAQkArAICBQNrZXkCDyBpcyBub3QgZGVmaW5lZAATa2V5Qm9vc3RpbmdDb250cmFjdAkAuQkCCQDMCAICAiVzCQDMCAICEGJvb3N0aW5nQ29udHJhY3QFA25pbAUJc2VwYXJhdG9yABNrZXlFbWlzc2lvbkNvbnRyYWN0CQC5CQIJAMwIAgICJXMJAMwIAgIQZW1pc3Npb25Db250cmFjdAUDbmlsBQlzZXBhcmF0b3IAFmtleUFzc2V0c1N0b3JlQ29udHJhY3QJALkJAgkAzAgCAgIlcwkAzAgCAhNhc3NldHNTdG9yZUNvbnRyYWN0BQNuaWwFCXNlcGFyYXRvcgAQYm9vc3RpbmdDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTgpAQUTa2V5Qm9vc3RpbmdDb250cmFjdAAQZW1pc3Npb25Db250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTgpAQUTa2V5RW1pc3Npb25Db250cmFjdAATYXNzZXRzU3RvcmVDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTgpAQUWa2V5QXNzZXRzU3RvcmVDb250cmFjdAARa2V5RW1pc3Npb25Db25maWcJALkJAgkAzAgCAgIlcwkAzAgCAgZjb25maWcFA25pbAUJc2VwYXJhdG9yAAx3eEFzc2V0SWRTdHIJAJEDAgkAtQkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUQZW1pc3Npb25Db250cmFjdAURa2V5RW1pc3Npb25Db25maWcFCXNlcGFyYXRvcgABAAl3eEFzc2V0SWQJANkEAQUMd3hBc3NldElkU3RyABVrZXlWb3RpbmdUaHJlc2hvbGRBZGQJALkJAgkAzAgCAgQlcyVzCQDMCAICD3ZvdGluZ1RocmVzaG9sZAkAzAgCAgNhZGQFA25pbAUJc2VwYXJhdG9yABhrZXlWb3RpbmdUaHJlc2hvbGRSZW1vdmUJALkJAgkAzAgCAgQlcyVzCQDMCAICD3ZvdGluZ1RocmVzaG9sZAkAzAgCAgZyZW1vdmUFA25pbAUJc2VwYXJhdG9yABVrZXlQZXJpb2RMZW5ndGhSZW1vdmUJALkJAgkAzAgCAgIlcwkAzAgCAhJwZXJpb2RMZW5ndGhSZW1vdmUFA25pbAUJc2VwYXJhdG9yABJrZXlNYXhQZXJpb2RMZW5ndGgJALkJAgkAzAgCAgIlcwkAzAgCAg9tYXhQZXJpb2RMZW5ndGgFA25pbAUJc2VwYXJhdG9yABJrZXlNaW5QZXJpb2RMZW5ndGgJALkJAgkAzAgCAgIlcwkAzAgCAg9taW5QZXJpb2RMZW5ndGgFA25pbAUJc2VwYXJhdG9yARZrZXlWb3RpbmdSZXdhcmRBc3NldElkAgdhc3NldElkBWluZGV4CQC5CQIJAMwIAgIGJXMlcyVkCQDMCAICE3ZvdGluZ1Jld2FyZEFzc2V0SWQJAMwIAgUHYXNzZXRJZAkAzAgCCQCkAwEFBWluZGV4BQNuaWwFCXNlcGFyYXRvcgEPa2V5Vm90aW5nUmV3YXJkAwt1c2VyQWRkcmVzcwdhc3NldElkBWluZGV4CQC5CQIJAMwIAgIIJXMlcyVzJWQJAMwIAgIMdm90aW5nUmV3YXJkCQDMCAIJAKUIAQULdXNlckFkZHJlc3MJAMwIAgUHYXNzZXRJZAkAzAgCCQCkAwEFBWluZGV4BQNuaWwFCXNlcGFyYXRvcgEUa2V5VG90YWxWb3RpbmdSZXdhcmQCB2Fzc2V0SWQFaW5kZXgJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgIRdG90YWxWb3RpbmdSZXdhcmQJAMwIAgUHYXNzZXRJZAkAzAgCCQCkAwEFBWluZGV4BQNuaWwFCXNlcGFyYXRvcgAba2V5RmluYWxpemVDYWxsUmV3YXJkQW1vdW50CQC5CQIJAMwIAgICJXMJAMwIAgIYZmluYWxpemVDYWxsUmV3YXJkQW1vdW50BQNuaWwFCXNlcGFyYXRvcgAaa2V5TWluU3VnZ2VzdFJlbW92ZUJhbGFuY2UJALkJAgkAzAgCAgIlcwkAzAgCAhdtaW5TdWdnZXN0UmVtb3ZlQmFsYW5jZQUDbmlsBQlzZXBhcmF0b3IBD2tleUN1cnJlbnRJbmRleAEHYXNzZXRJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgIMY3VycmVudEluZGV4CQDMCAIFB2Fzc2V0SWQFA25pbAUJc2VwYXJhdG9yAQdrZXlWb3RlAwdhc3NldElkBWluZGV4BmNhbGxlcgkAuQkCCQDMCAICCCVzJXMlZCVzCQDMCAICBHZvdGUJAMwIAgUHYXNzZXRJZAkAzAgCCQCkAwEFBWluZGV4CQDMCAIJAKUIAQUGY2FsbGVyBQNuaWwFCXNlcGFyYXRvcgEJdm90ZVZhbHVlAgdpbkZhdm9yCWd3eEFtb3VudAkAuQkCCQDMCAICBCVzJWQJAMwIAgkApQMBBQdpbkZhdm9yCQDMCAIJAKQDAQUJZ3d4QW1vdW50BQNuaWwFCXNlcGFyYXRvcgEQa2V5U3VnZ2VzdElzc3VlcgIHYXNzZXRJZAVpbmRleAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAg1zdWdnZXN0SXNzdWVyCQDMCAIFB2Fzc2V0SWQJAMwIAgkApAMBBQVpbmRleAUDbmlsBQlzZXBhcmF0b3IBD2tleUNsYWltSGlzdG9yeQMLdXNlckFkZHJlc3MHYXNzZXRJZAVpbmRleAkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAICB2hpc3RvcnkJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwkAzAgCBQdhc3NldElkCQDMCAIJAKQDAQUFaW5kZXgFA25pbAUJc2VwYXJhdG9yAA5rZXlGZWVQZXJCbG9jawkAuQkCCQDMCAICAiVzCQDMCAICC2ZlZVBlckJsb2NrBQNuaWwFCXNlcGFyYXRvcgALZmVlUGVyQmxvY2sJARBnZXRJbnRlZ2VyT3JGYWlsAgUEdGhpcwUOa2V5RmVlUGVyQmxvY2sAJmtleU1pbld4TWluRm9yU3VnZ2VzdEFkZEFtb3VudFJlcXVpcmVkCQC5CQIJAMwIAgICJXMJAMwIAgIgd3hNaW5Gb3JTdWdnZXN0QWRkQW1vdW50UmVxdWlyZWQFA25pbAUJc2VwYXJhdG9yACNrZXlXeEZvclN1Z2dlc3RSZW1vdmVBbW91bnRSZXF1aXJlZAkAuQkCCQDMCAICAiVzCQDMCAICIHd4Rm9yU3VnZ2VzdFJlbW92ZUFtb3VudFJlcXVpcmVkBQNuaWwFCXNlcGFyYXRvcgENa2V5Vm90aW5nSW5mbwIHYXNzZXRJZAVpbmRleAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAgp2b3RpbmdJbmZvCQDMCAIFB2Fzc2V0SWQJAMwIAgkApAMBBQVpbmRleAUDbmlsBQlzZXBhcmF0b3IBD3ZvdGluZ0luZm9WYWx1ZQoNaXNSZXdhcmRFeGlzdA1yZXdhcmRBc3NldElkDHJld2FyZEFtb3VudAp2b3RpbmdUeXBlBnN0YXR1cxF2b3RpbmdTdGFydEhlaWdodA92b3RpbmdFbmRIZWlnaHQLdm90ZXNRdW9ydW0Idm90ZXNGb3IMdm90ZXNBZ2FpbnN0CQC5CQIJAMwIAgIUJXMlcyVkJXMlcyVkJWQlZCVkJWQJAMwIAgkApQMBBQ1pc1Jld2FyZEV4aXN0CQDMCAIFDXJld2FyZEFzc2V0SWQJAMwIAgkApAMBBQxyZXdhcmRBbW91bnQJAMwIAgUKdm90aW5nVHlwZQkAzAgCBQZzdGF0dXMJAMwIAgkApAMBBRF2b3RpbmdTdGFydEhlaWdodAkAzAgCCQCkAwEFD3ZvdGluZ0VuZEhlaWdodAkAzAgCCQCkAwEFC3ZvdGVzUXVvcnVtCQDMCAIJAKQDAQUIdm90ZXNGb3IJAMwIAgkApAMBBQx2b3Rlc0FnYWluc3QFA25pbAUJc2VwYXJhdG9yAQ1rZXlBc3NldEltYWdlAQdhc3NldElkCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgphc3NldEltYWdlCQDMCAIFB2Fzc2V0SWQFA25pbAUJc2VwYXJhdG9yARhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQCC3VzZXJBZGRyZXNzDHRhcmdldEhlaWdodAQJZ3d4QW1vdW50CQD8BwQFEGJvb3N0aW5nQ29udHJhY3QCIGdldFVzZXJHd3hBbW91bnRBdEhlaWdodFJFQURPTkxZCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIFDHRhcmdldEhlaWdodAUDbmlsBQNuaWwJAQVhc0ludAEFCWd3eEFtb3VudAEWa2V5TWFuYWdlclZhdWx0QWRkcmVzcwACFyVzX19tYW5hZ2VyVmF1bHRBZGRyZXNzARNrZXlNYW5hZ2VyUHVibGljS2V5AAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBHGdldE1hbmFnZXJWYXVsdEFkZHJlc3NPclRoaXMABAckbWF0Y2gwCQCiCAEJARZrZXlNYW5hZ2VyVmF1bHRBZGRyZXNzAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAXMFBHRoaXMBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQABBNtYW5hZ2VyVmF1bHRBZGRyZXNzCQEcZ2V0TWFuYWdlclZhdWx0QWRkcmVzc09yVGhpcwAEByRtYXRjaDAJAJ0IAgUTbWFuYWdlclZhdWx0QWRkcmVzcwkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgESZ2V0Vm90aW5nSW5mb1BhcnRzAQp2b3RpbmdJbmZvBA92b3RpbmdJbmZvUGFydHMJALUJAgUKdm90aW5nSW5mbwUJc2VwYXJhdG9yBBBpc1Jld2FyZEV4aXN0U3RyCQCRAwIFD3ZvdGluZ0luZm9QYXJ0cwABBA1pc1Jld2FyZEV4aXN0AwkAAAIFEGlzUmV3YXJkRXhpc3RTdHICBHRydWUGBwQNcmV3YXJkQXNzZXRJZAkAkQMCBQ92b3RpbmdJbmZvUGFydHMAAgQMcmV3YXJkQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPdm90aW5nSW5mb1BhcnRzAAMECnZvdGluZ1R5cGUJAJEDAgUPdm90aW5nSW5mb1BhcnRzAAQEBnN0YXR1cwkAkQMCBQ92b3RpbmdJbmZvUGFydHMABQQRdm90aW5nU3RhcnRIZWlnaHQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ92b3RpbmdJbmZvUGFydHMABgQPdm90aW5nRW5kSGVpZ2h0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPdm90aW5nSW5mb1BhcnRzAAcEC3ZvdGVzUXVvcnVtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPdm90aW5nSW5mb1BhcnRzAAgECHZvdGVzRm9yCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPdm90aW5nSW5mb1BhcnRzAAkEDHZvdGVzQWdhaW5zdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFD3ZvdGluZ0luZm9QYXJ0cwAKCQCcCgoFDWlzUmV3YXJkRXhpc3QFDXJld2FyZEFzc2V0SWQFDHJld2FyZEFtb3VudAUKdm90aW5nVHlwZQUGc3RhdHVzBRF2b3RpbmdTdGFydEhlaWdodAUPdm90aW5nRW5kSGVpZ2h0BQt2b3Rlc1F1b3J1bQUIdm90ZXNGb3IFDHZvdGVzQWdhaW5zdAERdm90aW5nRXhpc3RDaGVja3MCB2Fzc2V0SWQMY3VycmVudEluZGV4BAp2b3RpbmdJbmZvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBDWtleVZvdGluZ0luZm8CBQdhc3NldElkBQxjdXJyZW50SW5kZXgJAQd3cmFwRXJyAQIVdm90aW5nIGluZm8gbm90IGZvdW5kBA92b3RpbmdJbmZvQXJyYXkJALUJAgUKdm90aW5nSW5mbwUJc2VwYXJhdG9yBAZzdGF0dXMJAJEDAgUPdm90aW5nSW5mb0FycmF5AAUED3ZvdGluZ0VuZEhlaWdodAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPdm90aW5nSW5mb0FycmF5AAcJAQd3cmFwRXJyAQIddm90aW5nIHN0YXJ0IGhlaWdodCBub3QgZm91bmQEDXN1Z2dlc3RJc3N1ZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQEQa2V5U3VnZ2VzdElzc3VlcgIFB2Fzc2V0SWQFDGN1cnJlbnRJbmRleAkBB3dyYXBFcnIBAhd2b3RpbmcgaXNzdWVyIG5vdCBmb3VuZAQGY2hlY2tzCQDMCAIDCQAAAgUGc3RhdHVzBRBzdGF0dXNJblByb2dyZXNzBgkBCHRocm93RXJyAQIVbm8gdm90aW5nIGluIHByb2dyZXNzCQDMCAIDCQBmAgUPdm90aW5nRW5kSGVpZ2h0BQZoZWlnaHQGCQEIdGhyb3dFcnIBAg52b3RpbmcgZXhwaXJlZAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzCQCVCgMFBnN0YXR1cwUPdm90aW5nRW5kSGVpZ2h0BQ1zdWdnZXN0SXNzdWVyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ9jYWxjdWxhdGVSZXdhcmQDBXZvdGVyB2Fzc2V0SWQFaW5kZXgEB3ZvdGVLZXkJAQdrZXlWb3RlAwUHYXNzZXRJZAUFaW5kZXgFBXZvdGVyBAhsYXN0Vm90ZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEFB3ZvdGVLZXkJAQd3cmFwRXJyAQISeW91IGhhdmUgbm90IHZvdGVkBA1sYXN0Vm90ZVBhcnRzCQC1CQIFCGxhc3RWb3RlBQlzZXBhcmF0b3IECWd3eEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDWxhc3RWb3RlUGFydHMAAgQNdm90aW5nSW5mb1N0cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAQ1rZXlWb3RpbmdJbmZvAgUHYXNzZXRJZAUFaW5kZXgJAQd3cmFwRXJyAQIVdm90aW5nIGluZm8gbm90IGZvdW5kBAt2b3RpbmdQYXJ0cwkBEmdldFZvdGluZ0luZm9QYXJ0cwEFDXZvdGluZ0luZm9TdHIEBnN0YXR1cwgFC3ZvdGluZ1BhcnRzAl81BAh2b3Rlc0ZvcggFC3ZvdGluZ1BhcnRzAl85BAx2b3Rlc0FnYWluc3QIBQt2b3RpbmdQYXJ0cwNfMTAEFXBhcnRPZlRoZVRvdGFsVm90ZXNYOAkAawMFCWd3eEFtb3VudAUFTVVMVDgJAGQCBQh2b3Rlc0ZvcgUMdm90ZXNBZ2FpbnN0BBF0b3RhbFZvdGluZ1Jld2FyZAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEUa2V5VG90YWxWb3RpbmdSZXdhcmQCBQdhc3NldElkBQVpbmRleAAABBF2b3RlclJld2FyZEFtb3VudAkAbgQFFXBhcnRPZlRoZVRvdGFsVm90ZXNYOAURdG90YWxWb3RpbmdSZXdhcmQFBU1VTFQ4BQVGTE9PUgQIY2FuQ2xhaW0DCQAAAgUGc3RhdHVzBQ5zdGF0dXNBY2NlcHRlZAkAZgIFEXZvdGVyUmV3YXJkQW1vdW50AAAHCQCUCgIFEXZvdGVyUmV3YXJkQW1vdW50BQhjYW5DbGFpbQcBaQEKc3VnZ2VzdEFkZAMHYXNzZXRJZAxwZXJpb2RMZW5ndGgKYXNzZXRJbWFnZQQJd3hQYXltZW50CQCRAwIIBQFpCHBheW1lbnRzAAAEEHd4UGF5bWVudEFzc2V0SWQJAQV2YWx1ZQEIBQl3eFBheW1lbnQHYXNzZXRJZAQPd3hQYXltZW50QW1vdW50CQEFdmFsdWUBCAUJd3hQYXltZW50BmFtb3VudAQPbWluUGVyaW9kTGVuZ3RoCQERQGV4dHJOYXRpdmUoMTA1NSkBBRJrZXlNaW5QZXJpb2RMZW5ndGgED21heFBlcmlvZExlbmd0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQUSa2V5TWF4UGVyaW9kTGVuZ3RoBA90b2tlbklzVmVyaWZpZWQKAAFACQD8BwQFE2Fzc2V0c1N0b3JlQ29udHJhY3QCEmlzVmVyaWZpZWRSRUFET05MWQkAzAgCBQdhc3NldElkBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQUBQAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQGY2hlY2tzCQDMCAIDAwkAZwIFDHBlcmlvZExlbmd0aAUPbWluUGVyaW9kTGVuZ3RoCQBnAgUPbWF4UGVyaW9kTGVuZ3RoBQxwZXJpb2RMZW5ndGgHBgkBCHRocm93RXJyAQIUaW52YWxpZCBwZXJpb2RMZW5ndGgJAMwIAgMJAAACBQ90b2tlbklzVmVyaWZpZWQHBgkBCHRocm93RXJyAQIWdG9rZW4gYWxyZWFkeSB2ZXJpZmllZAkAzAgCAwkAZwIFD3d4UGF5bWVudEFtb3VudAkAaAIFDHBlcmlvZExlbmd0aAULZmVlUGVyQmxvY2sGCQEIdGhyb3dFcnIBAh5ub3QgZW5vdWdoIHd4IGZvciBnaXZlbiBwZXJpb2QJAMwIAgMJAGcCBQ93eFBheW1lbnRBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDU1KQEFJmtleU1pbld4TWluRm9yU3VnZ2VzdEFkZEFtb3VudFJlcXVpcmVkBgkBCHRocm93RXJyAQIhcGF5bWVudCBsZXNzIHRoZW4gbWluIGZvciBzdWdnZXN0BQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MED2N1cnJlbnRJbmRleEtleQkBD2tleUN1cnJlbnRJbmRleAEFB2Fzc2V0SWQEDGN1cnJlbnRJbmRleAkAnwgBBQ9jdXJyZW50SW5kZXhLZXkECG5ld0luZGV4AwkBCWlzRGVmaW5lZAEFDGN1cnJlbnRJbmRleAkAZAIJAQV2YWx1ZQEFDGN1cnJlbnRJbmRleAABAAAECyR0MDkyNTk5ODk5AwkAZgIJAJADAQgFAWkIcGF5bWVudHMAAQQTdm90aW5nUmV3YXJkUGF5bWVudAkAkQMCCAUBaQhwYXltZW50cwABBBp2b3RpbmdSZXdhcmRQYXltZW50QXNzZXRJZAkA2AQBCQEFdmFsdWUBCAUTdm90aW5nUmV3YXJkUGF5bWVudAdhc3NldElkBBl2b3RpbmdSZXdhcmRQYXltZW50QW1vdW50CQEFdmFsdWUBCAUTdm90aW5nUmV3YXJkUGF5bWVudAZhbW91bnQJAJYKBAYFGnZvdGluZ1Jld2FyZFBheW1lbnRBc3NldElkBRl2b3RpbmdSZXdhcmRQYXltZW50QW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlWb3RpbmdSZXdhcmRBc3NldElkAgUHYXNzZXRJZAUIbmV3SW5kZXgFGnZvdGluZ1Jld2FyZFBheW1lbnRBc3NldElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEUa2V5VG90YWxWb3RpbmdSZXdhcmQCBQdhc3NldElkBQhuZXdJbmRleAUZdm90aW5nUmV3YXJkUGF5bWVudEFtb3VudAUDbmlsCQCWCgQHAgVFTVBUWQAABQNuaWwEDWlzUmV3YXJkRXhpc3QIBQskdDA5MjU5OTg5OQJfMQQNcmV3YXJkQXNzZXRJZAgFCyR0MDkyNTk5ODk5Al8yBAxyZXdhcmRBbW91bnQIBQskdDA5MjU5OTg5OQJfMwQTdm90aW5nUmV3YXJkQWN0aW9ucwgFCyR0MDkyNTk5ODk5Al80BAt2b3Rlc1F1b3J1bQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFFWtleVZvdGluZ1RocmVzaG9sZEFkZAkBB3dyYXBFcnIBAhp2b3RpbmdUaHJlc2hvbGRBZGQgbm90IHNldAQKdm90aW5nSW5mbwkBD3ZvdGluZ0luZm9WYWx1ZQoFDWlzUmV3YXJkRXhpc3QFDXJld2FyZEFzc2V0SWQFDHJld2FyZEFtb3VudAIMdmVyaWZpY2F0aW9uBRBzdGF0dXNJblByb2dyZXNzBQZoZWlnaHQJAGQCBQZoZWlnaHQFDHBlcmlvZExlbmd0aAULdm90ZXNRdW9ydW0AAAAABBhmaW5hbGl6ZUNhbGxSZXdhcmRBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDU1KQEFG2tleUZpbmFsaXplQ2FsbFJld2FyZEFtb3VudAQMYnVybld4QW1vdW50CQBlAgUPd3hQYXltZW50QW1vdW50BRhmaW5hbGl6ZUNhbGxSZXdhcmRBbW91bnQJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUPY3VycmVudEluZGV4S2V5BQhuZXdJbmRleAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5U3VnZ2VzdElzc3VlcgIFB2Fzc2V0SWQFCG5ld0luZGV4CQClCAEIBQFpBmNhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5Vm90aW5nSW5mbwIFB2Fzc2V0SWQFCG5ld0luZGV4BQp2b3RpbmdJbmZvCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlBc3NldEltYWdlAQUHYXNzZXRJZAUKYXNzZXRJbWFnZQkAzAgCCQEEQnVybgIFEHd4UGF5bWVudEFzc2V0SWQFDGJ1cm5XeEFtb3VudAUDbmlsBRN2b3RpbmdSZXdhcmRBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDXN1Z2dlc3RSZW1vdmUBB2Fzc2V0SWQEDmd3eEFtb3VudEF0Tm93CQEYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0AgkApQgBCAUBaQZjYWxsZXIFBmhlaWdodAQXbWluU3VnZ2VzdFJlbW92ZUJhbGFuY2UJARFAZXh0ck5hdGl2ZSgxMDU1KQEFGmtleU1pblN1Z2dlc3RSZW1vdmVCYWxhbmNlBAl3eFBheW1lbnQJAJEDAggFAWkIcGF5bWVudHMAAAQQd3hQYXltZW50QXNzZXRJZAkBBXZhbHVlAQgFCXd4UGF5bWVudAdhc3NldElkBA93eFBheW1lbnRBbW91bnQJAQV2YWx1ZQEIBQl3eFBheW1lbnQGYW1vdW50BA90b2tlbklzVmVyaWZpZWQKAAFACQD8BwQFE2Fzc2V0c1N0b3JlQ29udHJhY3QCEmlzVmVyaWZpZWRSRUFET05MWQkAzAgCBQdhc3NldElkBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQUBQAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQGY2hlY2tzCQDMCAIDBQ90b2tlbklzVmVyaWZpZWQGCQEIdGhyb3dFcnIBAhJ0b2tlbiBub3QgdmVyaWZpZWQJAMwIAgMJAGcCBQ5nd3hBbW91bnRBdE5vdwUXbWluU3VnZ2VzdFJlbW92ZUJhbGFuY2UGCQEIdGhyb3dFcnIBAhBub3QgZW5vdWdoIGdXWGVzCQDMCAIDCQBnAgUPd3hQYXltZW50QW1vdW50CQERQGV4dHJOYXRpdmUoMTA1NSkBBSNrZXlXeEZvclN1Z2dlc3RSZW1vdmVBbW91bnRSZXF1aXJlZAYJAQh0aHJvd0VycgECIXBheW1lbnQgbGVzcyB0aGVuIG1pbiBmb3Igc3VnZ2VzdAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBA9jdXJyZW50SW5kZXhLZXkJAQ9rZXlDdXJyZW50SW5kZXgBBQdhc3NldElkBAxjdXJyZW50SW5kZXgJAJ8IAQUPY3VycmVudEluZGV4S2V5BAhuZXdJbmRleAMJAQlpc0RlZmluZWQBBQxjdXJyZW50SW5kZXgJAGQCCQEFdmFsdWUBBQxjdXJyZW50SW5kZXgAAQAABAxwZXJpb2RMZW5ndGgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBRVrZXlQZXJpb2RMZW5ndGhSZW1vdmUJAQd3cmFwRXJyAQIacGVyaW9kTGVuZ3RoUmVtb3ZlIG5vdCBzZXQED3ZvdGluZ0VuZEhlaWdodAkAZAIFBmhlaWdodAUMcGVyaW9kTGVuZ3RoBAt2b3Rlc1F1b3J1bQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFGGtleVZvdGluZ1RocmVzaG9sZFJlbW92ZQkBB3dyYXBFcnIBAh12b3RpbmdUaHJlc2hvbGRSZW1vdmUgbm90IHNldAQKdm90aW5nSW5mbwkBD3ZvdGluZ0luZm9WYWx1ZQoHAgVFTVBUWQAAAg5kZXZlcmlmaWNhdGlvbgUQc3RhdHVzSW5Qcm9ncmVzcwUGaGVpZ2h0CQBkAgUGaGVpZ2h0BQxwZXJpb2RMZW5ndGgFC3ZvdGVzUXVvcnVtAAAAAAQTc2V0QXNzZXRJbWFnZUFjdGlvbgQHJG1hdGNoMAkAoggBCQENa2V5QXNzZXRJbWFnZQEFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQNuaWwDCQABAgUHJG1hdGNoMAIEVW5pdAQVYXNzZXRzU3RvcmVBc3NldEltYWdlCgABQAkA/AcEBRNhc3NldHNTdG9yZUNvbnRyYWN0AhRnZXRBc3NldExvZ29SRUFET05MWQkAzAgCBQdhc3NldElkBQNuaWwFA25pbAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleUFzc2V0SW1hZ2UBBQdhc3NldElkBRVhc3NldHNTdG9yZUFzc2V0SW1hZ2UFA25pbAkAAgECC01hdGNoIGVycm9yCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFD2N1cnJlbnRJbmRleEtleQUIbmV3SW5kZXgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleVN1Z2dlc3RJc3N1ZXICBQdhc3NldElkBQhuZXdJbmRleAkApQgBCAUBaQZjYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleVZvdGluZ0luZm8CBQdhc3NldElkBQhuZXdJbmRleAUKdm90aW5nSW5mbwUDbmlsBRNzZXRBc3NldEltYWdlQWN0aW9uCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBHZvdGUCB2Fzc2V0SWQHaW5GYXZvcgQPY3VycmVudEluZGV4S2V5CQEPa2V5Q3VycmVudEluZGV4AQUHYXNzZXRJZAQMY3VycmVudEluZGV4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUPY3VycmVudEluZGV4S2V5CQEHd3JhcEVycgECFXZvdGluZyBkb2VzIG5vdCBleGlzdAQKdm90aW5nSW5mbwkBEXZvdGluZ0V4aXN0Q2hlY2tzAgUHYXNzZXRJZAUMY3VycmVudEluZGV4AwkAAAIFCnZvdGluZ0luZm8FCnZvdGluZ0luZm8EFmN1cnJlbnRWb3RpbmdFbmRIZWlnaHQIBQp2b3RpbmdJbmZvAl8yBA5nd3hBbW91bnRBdEVuZAkBGGdldFVzZXJHd3hBbW91bnRBdEhlaWdodAIJAKUIAQgFAWkGY2FsbGVyBRZjdXJyZW50Vm90aW5nRW5kSGVpZ2h0BAd2b3RlS2V5CQEHa2V5Vm90ZQMFB2Fzc2V0SWQFDGN1cnJlbnRJbmRleAgFAWkGY2FsbGVyBAZjaGVja3MJAMwIAgMJAAACCQCiCAEFB3ZvdGVLZXkFBHVuaXQGCQEIdGhyb3dFcnIBAhZZb3UgaGF2ZSBhbHJlYWR5IHZvdGVkCQDMCAIDCQBmAgUOZ3d4QW1vdW50QXRFbmQAAAYJAAIBAihZb3UnbGwgbm90IGhhdmUgZ1dYIGF0IHRoZSBlbmQgb2Ygdm90aW5nBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEDXZvdGluZ0luZm9TdHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQENa2V5Vm90aW5nSW5mbwIFB2Fzc2V0SWQFDGN1cnJlbnRJbmRleAkBB3dyYXBFcnIBAhV2b3RpbmcgaW5mbyBub3QgZm91bmQED3ZvdGluZ0luZm9QYXJ0cwkBEmdldFZvdGluZ0luZm9QYXJ0cwEFDXZvdGluZ0luZm9TdHIECHZvdGVzRm9yCAUPdm90aW5nSW5mb1BhcnRzAl85BAx2b3Rlc0FnYWluc3QIBQ92b3RpbmdJbmZvUGFydHMDXzEwBA0kdDAxMzU2MzEzNzI0AwUHaW5GYXZvcgkAlAoCCQBkAgUIdm90ZXNGb3IFDmd3eEFtb3VudEF0RW5kBQx2b3Rlc0FnYWluc3QJAJQKAgUIdm90ZXNGb3IJAGQCBQx2b3Rlc0FnYWluc3QFDmd3eEFtb3VudEF0RW5kBAtuZXdWb3Rlc0ZvcggFDSR0MDEzNTYzMTM3MjQCXzEED25ld1ZvdGVzQWdhaW5zdAgFDSR0MDEzNTYzMTM3MjQCXzIEEm5ld1ZvdGluZ0luZm9WYWx1ZQkBD3ZvdGluZ0luZm9WYWx1ZQoIBQ92b3RpbmdJbmZvUGFydHMCXzEIBQ92b3RpbmdJbmZvUGFydHMCXzIIBQ92b3RpbmdJbmZvUGFydHMCXzMIBQ92b3RpbmdJbmZvUGFydHMCXzQIBQ92b3RpbmdJbmZvUGFydHMCXzUIBQ92b3RpbmdJbmZvUGFydHMCXzYIBQ92b3RpbmdJbmZvUGFydHMCXzcIBQ92b3RpbmdJbmZvUGFydHMCXzgFC25ld1ZvdGVzRm9yBQ9uZXdWb3Rlc0FnYWluc3QEEnZvdGluZ1Jld2FyZEFjdGlvbgQHJG1hdGNoMAkAoggBCQEWa2V5Vm90aW5nUmV3YXJkQXNzZXRJZAIFB2Fzc2V0SWQFDGN1cnJlbnRJbmRleAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAnBrBQckbWF0Y2gwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ9rZXlWb3RpbmdSZXdhcmQDCAUBaQZjYWxsZXIFB2Fzc2V0SWQFDGN1cnJlbnRJbmRleAkBCXZvdGVWYWx1ZQIFB2luRmF2b3IFDmd3eEFtb3VudEF0RW5kBQNuaWwDCQABAgUHJG1hdGNoMAIEVW5pdAUDbmlsCQACAQILTWF0Y2ggZXJyb3IJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCBQd2b3RlS2V5CQEJdm90ZVZhbHVlAgUHaW5GYXZvcgUOZ3d4QW1vdW50QXRFbmQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleVZvdGluZ0luZm8CBQdhc3NldElkBQxjdXJyZW50SW5kZXgFEm5ld1ZvdGluZ0luZm9WYWx1ZQUDbmlsBRJ2b3RpbmdSZXdhcmRBY3Rpb24JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKY2FuY2VsVm90ZQEHYXNzZXRJZAQPY3VycmVudEluZGV4S2V5CQEPa2V5Q3VycmVudEluZGV4AQUHYXNzZXRJZAQMY3VycmVudEluZGV4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUPY3VycmVudEluZGV4S2V5CQEHd3JhcEVycgECFXZvdGluZyBkb2VzIG5vdCBleGlzdAQHdm90ZUtleQkBB2tleVZvdGUDBQdhc3NldElkBQxjdXJyZW50SW5kZXgIBQFpBmNhbGxlcgQIbGFzdFZvdGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBBQd2b3RlS2V5CQEHd3JhcEVycgECEnlvdSBoYXZlIG5vdCB2b3RlZAQNbGFzdFZvdGVQYXJ0cwkAtQkCBQhsYXN0Vm90ZQUJc2VwYXJhdG9yBAdpbkZhdm9yCQCRAwIFDWxhc3RWb3RlUGFydHMAAQQJZ3d4QW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUNbGFzdFZvdGVQYXJ0cwACBAp2b3RpbmdJbmZvCQERdm90aW5nRXhpc3RDaGVja3MCBQdhc3NldElkBQxjdXJyZW50SW5kZXgDCQAAAgUKdm90aW5nSW5mbwUKdm90aW5nSW5mbwQGY2hlY2tzCQDMCAIDAwkAAAIFB2luRmF2b3ICBHRydWUGCQAAAgUHaW5GYXZvcgIFZmFsc2UGCQEIdGhyb3dFcnIBAgxpbnZhbGlkIHZvdGUFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQNdm90aW5nSW5mb1N0cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAQ1rZXlWb3RpbmdJbmZvAgUHYXNzZXRJZAUMY3VycmVudEluZGV4CQEHd3JhcEVycgECFXZvdGluZyBpbmZvIG5vdCBmb3VuZAQPdm90aW5nSW5mb1BhcnRzCQESZ2V0Vm90aW5nSW5mb1BhcnRzAQUNdm90aW5nSW5mb1N0cgQIdm90ZXNGb3IIBQ92b3RpbmdJbmZvUGFydHMCXzkEDHZvdGVzQWdhaW5zdAgFD3ZvdGluZ0luZm9QYXJ0cwNfMTAEDSR0MDE1MzQ5MTU1MTADCQAAAgUHaW5GYXZvcgIEdHJ1ZQkAlAoCCQBlAgUIdm90ZXNGb3IFCWd3eEFtb3VudAUMdm90ZXNBZ2FpbnN0CQCUCgIFCHZvdGVzRm9yCQBlAgUMdm90ZXNBZ2FpbnN0BQlnd3hBbW91bnQEC25ld1ZvdGVzRm9yCAUNJHQwMTUzNDkxNTUxMAJfMQQPbmV3Vm90ZXNBZ2FpbnN0CAUNJHQwMTUzNDkxNTUxMAJfMgQSbmV3Vm90aW5nSW5mb1ZhbHVlCQEPdm90aW5nSW5mb1ZhbHVlCggFD3ZvdGluZ0luZm9QYXJ0cwJfMQgFD3ZvdGluZ0luZm9QYXJ0cwJfMggFD3ZvdGluZ0luZm9QYXJ0cwJfMwgFD3ZvdGluZ0luZm9QYXJ0cwJfNAgFD3ZvdGluZ0luZm9QYXJ0cwJfNQgFD3ZvdGluZ0luZm9QYXJ0cwJfNggFD3ZvdGluZ0luZm9QYXJ0cwJfNwgFD3ZvdGluZ0luZm9QYXJ0cwJfOAULbmV3Vm90ZXNGb3IFD25ld1ZvdGVzQWdhaW5zdAkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5Vm90aW5nSW5mbwIFB2Fzc2V0SWQFDGN1cnJlbnRJbmRleAUSbmV3Vm90aW5nSW5mb1ZhbHVlCQDMCAIJAQtEZWxldGVFbnRyeQEFB3ZvdGVLZXkJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBD2tleVZvdGluZ1Jld2FyZAMIBQFpBmNhbGxlcgUHYXNzZXRJZAUMY3VycmVudEluZGV4BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIZmluYWxpemUBB2Fzc2V0SWQED2N1cnJlbnRJbmRleEtleQkBD2tleUN1cnJlbnRJbmRleAEFB2Fzc2V0SWQEDGN1cnJlbnRJbmRleAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ9jdXJyZW50SW5kZXhLZXkAAAQSdm90aW5nVGhyZXNob2xkQWRkCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUVa2V5Vm90aW5nVGhyZXNob2xkQWRkCQEHd3JhcEVycgECGnZvdGluZ1RocmVzaG9sZEFkZCBub3Qgc2V0BBV2b3RpbmdUaHJlc2hvbGRSZW1vdmUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBRhrZXlWb3RpbmdUaHJlc2hvbGRSZW1vdmUJAQd3cmFwRXJyAQIddm90aW5nVGhyZXNob2xkUmVtb3ZlIG5vdCBzZXQEDXZvdGluZ0luZm9TdHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQENa2V5Vm90aW5nSW5mbwIFB2Fzc2V0SWQFDGN1cnJlbnRJbmRleAkBB3dyYXBFcnIBAhV2b3RpbmcgaW5mbyBub3QgZm91bmQED3ZvdGluZ0luZm9QYXJ0cwkBEmdldFZvdGluZ0luZm9QYXJ0cwEFDXZvdGluZ0luZm9TdHIECnZvdGluZ1R5cGUIBQ92b3RpbmdJbmZvUGFydHMCXzQEBnN0YXR1cwgFD3ZvdGluZ0luZm9QYXJ0cwJfNQQPdm90aW5nRW5kSGVpZ2h0CAUPdm90aW5nSW5mb1BhcnRzAl83BAx2b3RpbmdRdW9ydW0IBQ92b3RpbmdJbmZvUGFydHMCXzgECHZvdGVzRm9yCAUPdm90aW5nSW5mb1BhcnRzAl85BAx2b3Rlc0FnYWluc3QIBQ92b3RpbmdJbmZvUGFydHMDXzEwBAZjaGVja3MJAMwIAgMJAAACBQZzdGF0dXMFEHN0YXR1c0luUHJvZ3Jlc3MGCQEIdGhyb3dFcnIBAhZ2b3Rpbmcgbm90IGluIHByb2dyZXNzCQDMCAIDCQBnAgUGaGVpZ2h0BQ92b3RpbmdFbmRIZWlnaHQGCQEIdGhyb3dFcnIBAhN2b3Rpbmcgbm90IGZpbmlzaGVkCQDMCAIDCQEJaXNEZWZpbmVkAQkAoggBCQENa2V5QXNzZXRJbWFnZQEFB2Fzc2V0SWQGCQEIdGhyb3dFcnIBAhNhc3NldCBpbWFnZSBub3Qgc2V0BQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEDnZvdGluZ0FjY2VwdGVkAwMJAGcCCQBkAgUIdm90ZXNGb3IFDHZvdGVzQWdhaW5zdAUMdm90aW5nUXVvcnVtCQBmAgUIdm90ZXNGb3IFDHZvdGVzQWdhaW5zdAcGBwQJbmV3U3RhdHVzAwUOdm90aW5nQWNjZXB0ZWQFDnN0YXR1c0FjY2VwdGVkBQ5zdGF0dXNSZWplY3RlZAQKYXNzZXRJbWFnZQkBEUBleHRyTmF0aXZlKDEwNTgpAQkBDWtleUFzc2V0SW1hZ2UBBQdhc3NldElkBBBpc1ZvdGluZ0FjY2VwdGVkAwUOdm90aW5nQWNjZXB0ZWQEFXZvdGluZ0FjY2VwdGVkSW52b2tlcwMJAAACBQp2b3RpbmdUeXBlAgx2ZXJpZmljYXRpb24JAPwHBAUTYXNzZXRzU3RvcmVDb250cmFjdAIOY3JlYXRlT3JVcGRhdGUJAMwIAgUHYXNzZXRJZAkAzAgCBQphc3NldEltYWdlCQDMCAIGBQNuaWwFA25pbAkAzAgCCQD8BwQFE2Fzc2V0c1N0b3JlQ29udHJhY3QCC3NldFZlcmlmaWVkCQDMCAIFB2Fzc2V0SWQJAMwIAgcFA25pbAUDbmlsCQDMCAIJAPwHBAUTYXNzZXRzU3RvcmVDb250cmFjdAILb25FbGltaW5hdGUJAMwIAgUHYXNzZXRJZAUDbmlsBQNuaWwFA25pbAUVdm90aW5nQWNjZXB0ZWRJbnZva2VzBQNuaWwDCQAAAgUQaXNWb3RpbmdBY2NlcHRlZAUQaXNWb3RpbmdBY2NlcHRlZAQSbmV3Vm90aW5nSW5mb1ZhbHVlCQEPdm90aW5nSW5mb1ZhbHVlCggFD3ZvdGluZ0luZm9QYXJ0cwJfMQgFD3ZvdGluZ0luZm9QYXJ0cwJfMggFD3ZvdGluZ0luZm9QYXJ0cwJfMwgFD3ZvdGluZ0luZm9QYXJ0cwJfNAUJbmV3U3RhdHVzCAUPdm90aW5nSW5mb1BhcnRzAl82CAUPdm90aW5nSW5mb1BhcnRzAl83CAUPdm90aW5nSW5mb1BhcnRzAl84CAUPdm90aW5nSW5mb1BhcnRzAl85CAUPdm90aW5nSW5mb1BhcnRzA18xMAQYZmluYWxpemVDYWxsUmV3YXJkQW1vdW50CQERQGV4dHJOYXRpdmUoMTA1NSkBBRtrZXlGaW5hbGl6ZUNhbGxSZXdhcmRBbW91bnQEFHN1Z2dlc3RJc3N1ZXJBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEQa2V5U3VnZ2VzdElzc3VlcgIFB2Fzc2V0SWQFDGN1cnJlbnRJbmRleAQZdm90aW5nUmV3YXJkQXNzZXRJZE9wdGlvbgkAoggBCQEWa2V5Vm90aW5nUmV3YXJkQXNzZXRJZAIFB2Fzc2V0SWQFDGN1cnJlbnRJbmRleAQXdG90YWxWb3RpbmdSZXdhcmRPcHRpb24JAJ8IAQkBFGtleVRvdGFsVm90aW5nUmV3YXJkAgUHYXNzZXRJZAUMY3VycmVudEluZGV4BBNyZXR1cm5SZXdhcmRBY3Rpb25zAwMDBQ52b3RpbmdBY2NlcHRlZAYJAAACBRl2b3RpbmdSZXdhcmRBc3NldElkT3B0aW9uBQR1bml0BgkAAAIFF3RvdGFsVm90aW5nUmV3YXJkT3B0aW9uBQR1bml0BQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUUc3VnZ2VzdElzc3VlckFkZHJlc3MJAQV2YWx1ZQEFF3RvdGFsVm90aW5nUmV3YXJkT3B0aW9uCQEMcGFyc2VBc3NldElkAQkBBXZhbHVlAQUZdm90aW5nUmV3YXJkQXNzZXRJZE9wdGlvbgUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleVZvdGluZ0luZm8CBQdhc3NldElkBQxjdXJyZW50SW5kZXgFEm5ld1ZvdGluZ0luZm9WYWx1ZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFGGZpbmFsaXplQ2FsbFJld2FyZEFtb3VudAUJd3hBc3NldElkBQNuaWwFE3JldHVyblJld2FyZEFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENY2xhaW1SRUFET05MWQMHYXNzZXRJZAVpbmRleA51c2VyQWRkcmVzc1N0cgQLdXNlckFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQ51c2VyQWRkcmVzc1N0cgkBB3dyYXBFcnIBAg9pbnZhbGlkIGFkZHJlc3MEFnZvdGluZ1Jld2FyZEFzc2V0SWRTdHIJAKIIAQkBFmtleVZvdGluZ1Jld2FyZEFzc2V0SWQCBQdhc3NldElkBQVpbmRleAQMcmV3YXJkQW1vdW50AwkBCWlzRGVmaW5lZAEFFnZvdGluZ1Jld2FyZEFzc2V0SWRTdHIICQEPY2FsY3VsYXRlUmV3YXJkAwULdXNlckFkZHJlc3MFB2Fzc2V0SWQFBWluZGV4Al8xAAAJAJQKAgUDbmlsBQxyZXdhcmRBbW91bnQBaQEFY2xhaW0CB2Fzc2V0SWQFaW5kZXgEDWNhbGxlckFkZHJlc3MIBQFpBmNhbGxlcgQPY2xhaW1IaXN0b3J5S2V5CQEPa2V5Q2xhaW1IaXN0b3J5AwUNY2FsbGVyQWRkcmVzcwUHYXNzZXRJZAUFaW5kZXgEDGNsYWltSGlzdG9yeQkAnwgBBQ9jbGFpbUhpc3RvcnlLZXkEBmNoZWNrcwkAzAgCAwkAAAIFDGNsYWltSGlzdG9yeQUEdW5pdAYJAQh0aHJvd0VycgECD2FscmVhZHkgY2xhaW1lZAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBA0kdDAxOTYwMDE5Njc3CQEPY2FsY3VsYXRlUmV3YXJkAwUNY2FsbGVyQWRkcmVzcwUHYXNzZXRJZAUFaW5kZXgEDHJld2FyZEFtb3VudAgFDSR0MDE5NjAwMTk2NzcCXzEECGNhbkNsYWltCAUNJHQwMTk2MDAxOTY3NwJfMgMJAQEhAQUIY2FuQ2xhaW0JAQh0aHJvd0VycgECEG5vdGhpbmcgdG8gY2xhaW0EFnZvdGluZ1Jld2FyZEFzc2V0SWRTdHIJAKIIAQkBFmtleVZvdGluZ1Jld2FyZEFzc2V0SWQCBQdhc3NldElkBQVpbmRleAQMcmV3YXJkQWN0aW9uAwkBCWlzRGVmaW5lZAEFFnZvdGluZ1Jld2FyZEFzc2V0SWRTdHIEE3ZvdGluZ1Jld2FyZEFzc2V0SWQJANkEAQkBBXZhbHVlAQUWdm90aW5nUmV3YXJkQXNzZXRJZFN0cgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ1jYWxsZXJBZGRyZXNzBQxyZXdhcmRBbW91bnQFE3ZvdGluZ1Jld2FyZEFzc2V0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIFD2NsYWltSGlzdG9yeUtleQUMcmV3YXJkQW1vdW50CQDMCAIJAQtEZWxldGVFbnRyeQEJAQ9rZXlWb3RpbmdSZXdhcmQDBQ1jYWxsZXJBZGRyZXNzBQdhc3NldElkBQVpbmRleAUDbmlsCQEIdGhyb3dFcnIBAhBub3RoaW5nIHRvIGNsYWltBQxyZXdhcmRBY3Rpb24JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXk+OaFQ", "height": 2802280, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HWRVNKksKRyErxvrkwAf8rVMTEMyGvCfkRPvFeVdmHKA Next: CN8pxEUGxWwQTBLb5JpN4huLZfzWk5tU6no8RX71duEP Diff:
OldNewDifferences
450450 then {
451451 let bF = if ((aj == "verification"))
452452 then invoke(B, "createOrUpdate", [L, aV, true], nil)
453- else invoke(B, "setVerified", [L, false], nil)
453+ else [invoke(B, "setVerified", [L, false], nil), invoke(B, "onEliminate", [L], nil)]
454454 bF
455455 }
456456 else nil
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 100000000
77
88 let c = "WAVES"
99
1010 let d = "inProgress"
1111
1212 let e = "accepted"
1313
1414 let f = "rejected"
1515
1616 func g (h) = makeString(["voting_verified_v2.ride:", h], " ")
1717
1818
1919 func i (h) = throw(g(h))
2020
2121
2222 func j (k) = {
2323 let l = k
2424 if ($isInstanceOf(l, "Int"))
2525 then {
2626 let m = l
2727 m
2828 }
2929 else throw("Failed to cast into Integer")
3030 }
3131
3232
3333 func n (o) = if ((o == c))
3434 then unit
3535 else fromBase58String(o)
3636
3737
3838 func p (o) = if ((o == unit))
3939 then c
4040 else toBase58String(value(o))
4141
4242
4343 func q (r,s) = valueOrElse(getInteger(r, s), 0)
4444
4545
4646 func t (r,s) = valueOrErrorMessage(getInteger(r, s), g((s + " is not defined")))
4747
4848
4949 func u (r,s) = valueOrElse(getString(r, s), "")
5050
5151
5252 func v (r,s) = valueOrErrorMessage(getString(r, s), g((s + " is not defined")))
5353
5454
5555 let w = makeString(["%s", "boostingContract"], a)
5656
5757 let x = makeString(["%s", "emissionContract"], a)
5858
5959 let y = makeString(["%s", "assetsStoreContract"], a)
6060
6161 let z = addressFromStringValue(getStringValue(w))
6262
6363 let A = addressFromStringValue(getStringValue(x))
6464
6565 let B = addressFromStringValue(getStringValue(y))
6666
6767 let C = makeString(["%s", "config"], a)
6868
6969 let D = split(v(A, C), a)[1]
7070
7171 let E = fromBase58String(D)
7272
7373 let F = makeString(["%s%s", "votingThreshold", "add"], a)
7474
7575 let G = makeString(["%s%s", "votingThreshold", "remove"], a)
7676
7777 let H = makeString(["%s", "periodLengthRemove"], a)
7878
7979 let I = makeString(["%s", "maxPeriodLength"], a)
8080
8181 let J = makeString(["%s", "minPeriodLength"], a)
8282
8383 func K (L,M) = makeString(["%s%s%d", "votingRewardAssetId", L, toString(M)], a)
8484
8585
8686 func N (O,L,M) = makeString(["%s%s%s%d", "votingReward", toString(O), L, toString(M)], a)
8787
8888
8989 func P (L,M) = makeString(["%s%s%d", "totalVotingReward", L, toString(M)], a)
9090
9191
9292 let Q = makeString(["%s", "finalizeCallRewardAmount"], a)
9393
9494 let R = makeString(["%s", "minSuggestRemoveBalance"], a)
9595
9696 func S (L) = makeString(["%s%s", "currentIndex", L], a)
9797
9898
9999 func T (L,M,U) = makeString(["%s%s%d%s", "vote", L, toString(M), toString(U)], a)
100100
101101
102102 func V (W,X) = makeString(["%s%d", toString(W), toString(X)], a)
103103
104104
105105 func Y (L,M) = makeString(["%s%s%d", "suggestIssuer", L, toString(M)], a)
106106
107107
108108 func Z (O,L,M) = makeString(["%s%s%s%d", "history", toString(O), L, toString(M)], a)
109109
110110
111111 let aa = makeString(["%s", "feePerBlock"], a)
112112
113113 let ab = t(this, aa)
114114
115115 let ac = makeString(["%s", "wxMinForSuggestAddAmountRequired"], a)
116116
117117 let ad = makeString(["%s", "wxForSuggestRemoveAmountRequired"], a)
118118
119119 func ae (L,M) = makeString(["%s%s%d", "votingInfo", L, toString(M)], a)
120120
121121
122122 func af (ag,ah,ai,aj,ak,al,am,an,ao,ap) = makeString(["%s%s%d%s%s%d%d%d%d%d", toString(ag), ah, toString(ai), aj, ak, toString(al), toString(am), toString(an), toString(ao), toString(ap)], a)
123123
124124
125125 func aq (L) = makeString(["%s%s", "assetImage", L], a)
126126
127127
128128 func ar (O,as) = {
129129 let X = invoke(z, "getUserGwxAmountAtHeightREADONLY", [O, as], nil)
130130 j(X)
131131 }
132132
133133
134134 func at () = "%s__managerVaultAddress"
135135
136136
137137 func au () = "%s__managerPublicKey"
138138
139139
140140 func av () = {
141141 let l = getString(at())
142142 if ($isInstanceOf(l, "String"))
143143 then {
144144 let aw = l
145145 addressFromStringValue(aw)
146146 }
147147 else this
148148 }
149149
150150
151151 func ax () = {
152152 let ay = av()
153153 let l = getString(ay, au())
154154 if ($isInstanceOf(l, "String"))
155155 then {
156156 let aw = l
157157 fromBase58String(aw)
158158 }
159159 else if ($isInstanceOf(l, "Unit"))
160160 then unit
161161 else throw("Match error")
162162 }
163163
164164
165165 func az (aA) = {
166166 let aB = split(aA, a)
167167 let aC = aB[1]
168168 let ag = if ((aC == "true"))
169169 then true
170170 else false
171171 let ah = aB[2]
172172 let ai = parseIntValue(aB[3])
173173 let aj = aB[4]
174174 let ak = aB[5]
175175 let al = parseIntValue(aB[6])
176176 let am = parseIntValue(aB[7])
177177 let an = parseIntValue(aB[8])
178178 let ao = parseIntValue(aB[9])
179179 let ap = parseIntValue(aB[10])
180180 $Tuple10(ag, ah, ai, aj, ak, al, am, an, ao, ap)
181181 }
182182
183183
184184 func aD (L,aE) = {
185185 let aA = valueOrErrorMessage(getString(ae(L, aE)), g("voting info not found"))
186186 let aF = split(aA, a)
187187 let ak = aF[5]
188188 let am = valueOrErrorMessage(parseIntValue(aF[7]), g("voting start height not found"))
189189 let aG = valueOrErrorMessage(getString(Y(L, aE)), g("voting issuer not found"))
190190 let aH = [if ((ak == d))
191191 then true
192192 else i("no voting in progress"), if ((am > height))
193193 then true
194194 else i("voting expired")]
195195 if ((aH == aH))
196196 then $Tuple3(ak, am, aG)
197197 else throw("Strict value is not equal to itself.")
198198 }
199199
200200
201201 func aI (aJ,L,M) = {
202202 let aK = T(L, M, aJ)
203203 let aL = valueOrErrorMessage(getString(aK), g("you have not voted"))
204204 let aM = split(aL, a)
205205 let X = parseIntValue(aM[2])
206206 let aN = valueOrErrorMessage(getString(ae(L, M)), g("voting info not found"))
207207 let aO = az(aN)
208208 let ak = aO._5
209209 let ao = aO._9
210210 let ap = aO._10
211211 let aP = fraction(X, b, (ao + ap))
212212 let aQ = valueOrElse(getInteger(P(L, M)), 0)
213213 let aR = fraction(aP, aQ, b, FLOOR)
214214 let aS = if ((ak == e))
215215 then (aR > 0)
216216 else false
217217 $Tuple2(aR, aS)
218218 }
219219
220220
221221 @Callable(aT)
222222 func suggestAdd (L,aU,aV) = {
223223 let aW = aT.payments[0]
224224 let aX = value(aW.assetId)
225225 let aY = value(aW.amount)
226226 let aZ = getIntegerValue(J)
227227 let ba = getIntegerValue(I)
228228 let bb = {
229229 let bc = invoke(B, "isVerifiedREADONLY", [L], nil)
230230 if ($isInstanceOf(bc, "Boolean"))
231231 then bc
232232 else throw(($getType(bc) + " couldn't be cast to Boolean"))
233233 }
234234 let aH = [if (if ((aU >= aZ))
235235 then (ba >= aU)
236236 else false)
237237 then true
238238 else i("invalid periodLength"), if ((bb == false))
239239 then true
240240 else i("token already verified"), if ((aY >= (aU * ab)))
241241 then true
242242 else i("not enough wx for given period"), if ((aY >= getIntegerValue(ac)))
243243 then true
244244 else i("payment less then min for suggest")]
245245 if ((aH == aH))
246246 then {
247247 let bd = S(L)
248248 let aE = getInteger(bd)
249249 let be = if (isDefined(aE))
250250 then (value(aE) + 1)
251251 else 0
252252 let bf = if ((size(aT.payments) > 1))
253253 then {
254254 let bg = aT.payments[1]
255255 let bh = toBase58String(value(bg.assetId))
256256 let bi = value(bg.amount)
257257 $Tuple4(true, bh, bi, [StringEntry(K(L, be), bh), IntegerEntry(P(L, be), bi)])
258258 }
259259 else $Tuple4(false, "EMPTY", 0, nil)
260260 let ag = bf._1
261261 let ah = bf._2
262262 let ai = bf._3
263263 let bj = bf._4
264264 let an = valueOrErrorMessage(getInteger(F), g("votingThresholdAdd not set"))
265265 let aA = af(ag, ah, ai, "verification", d, height, (height + aU), an, 0, 0)
266266 let bk = getIntegerValue(Q)
267267 let bl = (aY - bk)
268268 ([IntegerEntry(bd, be), StringEntry(Y(L, be), toString(aT.caller)), StringEntry(ae(L, be), aA), StringEntry(aq(L), aV), Burn(aX, bl)] ++ bj)
269269 }
270270 else throw("Strict value is not equal to itself.")
271271 }
272272
273273
274274
275275 @Callable(aT)
276276 func suggestRemove (L) = {
277277 let bm = ar(toString(aT.caller), height)
278278 let bn = getIntegerValue(R)
279279 let aW = aT.payments[0]
280280 let aX = value(aW.assetId)
281281 let aY = value(aW.amount)
282282 let bb = {
283283 let bc = invoke(B, "isVerifiedREADONLY", [L], nil)
284284 if ($isInstanceOf(bc, "Boolean"))
285285 then bc
286286 else throw(($getType(bc) + " couldn't be cast to Boolean"))
287287 }
288288 let aH = [if (bb)
289289 then true
290290 else i("token not verified"), if ((bm >= bn))
291291 then true
292292 else i("not enough gWXes"), if ((aY >= getIntegerValue(ad)))
293293 then true
294294 else i("payment less then min for suggest")]
295295 if ((aH == aH))
296296 then {
297297 let bd = S(L)
298298 let aE = getInteger(bd)
299299 let be = if (isDefined(aE))
300300 then (value(aE) + 1)
301301 else 0
302302 let aU = valueOrErrorMessage(getInteger(H), g("periodLengthRemove not set"))
303303 let am = (height + aU)
304304 let an = valueOrErrorMessage(getInteger(G), g("votingThresholdRemove not set"))
305305 let aA = af(false, "EMPTY", 0, "deverification", d, height, (height + aU), an, 0, 0)
306306 let bo = {
307307 let l = getString(aq(L))
308308 if ($isInstanceOf(l, "String"))
309309 then {
310310 let aw = l
311311 nil
312312 }
313313 else if ($isInstanceOf(l, "Unit"))
314314 then {
315315 let bp = {
316316 let bc = invoke(B, "getAssetLogoREADONLY", [L], nil)
317317 if ($isInstanceOf(bc, "String"))
318318 then bc
319319 else throw(($getType(bc) + " couldn't be cast to String"))
320320 }
321321 [StringEntry(aq(L), bp)]
322322 }
323323 else throw("Match error")
324324 }
325325 ([IntegerEntry(bd, be), StringEntry(Y(L, be), toString(aT.caller)), StringEntry(ae(L, be), aA)] ++ bo)
326326 }
327327 else throw("Strict value is not equal to itself.")
328328 }
329329
330330
331331
332332 @Callable(aT)
333333 func vote (L,W) = {
334334 let bd = S(L)
335335 let aE = valueOrErrorMessage(getInteger(bd), g("voting does not exist"))
336336 let aA = aD(L, aE)
337337 if ((aA == aA))
338338 then {
339339 let bq = aA._2
340340 let br = ar(toString(aT.caller), bq)
341341 let aK = T(L, aE, aT.caller)
342342 let aH = [if ((getString(aK) == unit))
343343 then true
344344 else i("You have already voted"), if ((br > 0))
345345 then true
346346 else throw("You'll not have gWX at the end of voting")]
347347 if ((aH == aH))
348348 then {
349349 let aN = valueOrErrorMessage(getString(ae(L, aE)), g("voting info not found"))
350350 let aB = az(aN)
351351 let ao = aB._9
352352 let ap = aB._10
353353 let bs = if (W)
354354 then $Tuple2((ao + br), ap)
355355 else $Tuple2(ao, (ap + br))
356356 let bt = bs._1
357357 let bu = bs._2
358358 let bv = af(aB._1, aB._2, aB._3, aB._4, aB._5, aB._6, aB._7, aB._8, bt, bu)
359359 let bw = {
360360 let l = getString(K(L, aE))
361361 if ($isInstanceOf(l, "String"))
362362 then {
363363 let bx = l
364364 [StringEntry(N(aT.caller, L, aE), V(W, br))]
365365 }
366366 else if ($isInstanceOf(l, "Unit"))
367367 then nil
368368 else throw("Match error")
369369 }
370370 ([StringEntry(aK, V(W, br)), StringEntry(ae(L, aE), bv)] ++ bw)
371371 }
372372 else throw("Strict value is not equal to itself.")
373373 }
374374 else throw("Strict value is not equal to itself.")
375375 }
376376
377377
378378
379379 @Callable(aT)
380380 func cancelVote (L) = {
381381 let bd = S(L)
382382 let aE = valueOrErrorMessage(getInteger(bd), g("voting does not exist"))
383383 let aK = T(L, aE, aT.caller)
384384 let aL = valueOrErrorMessage(getString(aK), g("you have not voted"))
385385 let aM = split(aL, a)
386386 let W = aM[1]
387387 let X = parseIntValue(aM[2])
388388 let aA = aD(L, aE)
389389 if ((aA == aA))
390390 then {
391391 let aH = [if (if ((W == "true"))
392392 then true
393393 else (W == "false"))
394394 then true
395395 else i("invalid vote")]
396396 if ((aH == aH))
397397 then {
398398 let aN = valueOrErrorMessage(getString(ae(L, aE)), g("voting info not found"))
399399 let aB = az(aN)
400400 let ao = aB._9
401401 let ap = aB._10
402402 let by = if ((W == "true"))
403403 then $Tuple2((ao - X), ap)
404404 else $Tuple2(ao, (ap - X))
405405 let bt = by._1
406406 let bu = by._2
407407 let bv = af(aB._1, aB._2, aB._3, aB._4, aB._5, aB._6, aB._7, aB._8, bt, bu)
408408 [StringEntry(ae(L, aE), bv), DeleteEntry(aK), DeleteEntry(N(aT.caller, L, aE))]
409409 }
410410 else throw("Strict value is not equal to itself.")
411411 }
412412 else throw("Strict value is not equal to itself.")
413413 }
414414
415415
416416
417417 @Callable(aT)
418418 func finalize (L) = {
419419 let bd = S(L)
420420 let aE = valueOrElse(getInteger(bd), 0)
421421 let bz = valueOrErrorMessage(getInteger(F), g("votingThresholdAdd not set"))
422422 let bA = valueOrErrorMessage(getInteger(G), g("votingThresholdRemove not set"))
423423 let aN = valueOrErrorMessage(getString(ae(L, aE)), g("voting info not found"))
424424 let aB = az(aN)
425425 let aj = aB._4
426426 let ak = aB._5
427427 let am = aB._7
428428 let bB = aB._8
429429 let ao = aB._9
430430 let ap = aB._10
431431 let aH = [if ((ak == d))
432432 then true
433433 else i("voting not in progress"), if ((height >= am))
434434 then true
435435 else i("voting not finished"), if (isDefined(getString(aq(L))))
436436 then true
437437 else i("asset image not set")]
438438 if ((aH == aH))
439439 then {
440440 let bC = if (if (((ao + ap) >= bB))
441441 then (ao > ap)
442442 else false)
443443 then true
444444 else false
445445 let bD = if (bC)
446446 then e
447447 else f
448448 let aV = getStringValue(aq(L))
449449 let bE = if (bC)
450450 then {
451451 let bF = if ((aj == "verification"))
452452 then invoke(B, "createOrUpdate", [L, aV, true], nil)
453- else invoke(B, "setVerified", [L, false], nil)
453+ else [invoke(B, "setVerified", [L, false], nil), invoke(B, "onEliminate", [L], nil)]
454454 bF
455455 }
456456 else nil
457457 if ((bE == bE))
458458 then {
459459 let bv = af(aB._1, aB._2, aB._3, aB._4, bD, aB._6, aB._7, aB._8, aB._9, aB._10)
460460 let bk = getIntegerValue(Q)
461461 let bG = addressFromStringValue(getStringValue(Y(L, aE)))
462462 let bH = getString(K(L, aE))
463463 let bI = getInteger(P(L, aE))
464464 let bJ = if (if (if (bC)
465465 then true
466466 else (bH == unit))
467467 then true
468468 else (bI == unit))
469469 then nil
470470 else [ScriptTransfer(bG, value(bI), n(value(bH)))]
471471 ([StringEntry(ae(L, aE), bv), ScriptTransfer(aT.caller, bk, E)] ++ bJ)
472472 }
473473 else throw("Strict value is not equal to itself.")
474474 }
475475 else throw("Strict value is not equal to itself.")
476476 }
477477
478478
479479
480480 @Callable(aT)
481481 func claimREADONLY (L,M,bK) = {
482482 let O = valueOrErrorMessage(addressFromString(bK), g("invalid address"))
483483 let bL = getString(K(L, M))
484484 let ai = if (isDefined(bL))
485485 then aI(O, L, M)._1
486486 else 0
487487 $Tuple2(nil, ai)
488488 }
489489
490490
491491
492492 @Callable(aT)
493493 func claim (L,M) = {
494494 let bM = aT.caller
495495 let bN = Z(bM, L, M)
496496 let bO = getInteger(bN)
497497 let aH = [if ((bO == unit))
498498 then true
499499 else i("already claimed")]
500500 if ((aH == aH))
501501 then {
502502 let bP = aI(bM, L, M)
503503 let ai = bP._1
504504 let aS = bP._2
505505 if (!(aS))
506506 then i("nothing to claim")
507507 else {
508508 let bL = getString(K(L, M))
509509 let bQ = if (isDefined(bL))
510510 then {
511511 let bR = fromBase58String(value(bL))
512512 [ScriptTransfer(bM, ai, bR), IntegerEntry(bN, ai), DeleteEntry(N(bM, L, M))]
513513 }
514514 else i("nothing to claim")
515515 bQ
516516 }
517517 }
518518 else throw("Strict value is not equal to itself.")
519519 }
520520
521521
522522 @Verifier(bS)
523523 func bT () = {
524524 let bU = {
525525 let l = ax()
526526 if ($isInstanceOf(l, "ByteVector"))
527527 then {
528528 let bx = l
529529 bx
530530 }
531531 else if ($isInstanceOf(l, "Unit"))
532532 then bS.senderPublicKey
533533 else throw("Match error")
534534 }
535535 sigVerify(bS.bodyBytes, bS.proofs[0], bU)
536536 }
537537

github/deemru/w8io/169f3d6 
80.39 ms