tx · 5n6ZqEQpyvCW2hXGULkWmzXznHexDojRkCKkMqAzLkhk

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.01900000 Waves

2023.03.24 06:54 [2503574] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "5n6ZqEQpyvCW2hXGULkWmzXznHexDojRkCKkMqAzLkhk", "fee": 1900000, "feeAssetId": null, "timestamp": 1679630066281, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "4H17cXxPGq8R5rBrbxKtnR8kYNbwoxZiKxiTv4885zPhQeAo5f8UB5gtzDwLL9LTpV3453HMEkQqTrbYBJoQ1tQz" ], "script": "base64:BgKKFQgCEgQKAggIEhAKDggICAgICAgICAgICAEIEg8KDQgICAgICAgICAgIAQgSBgoECAgICBIECgIICBIICgYIAQEIAQgSBAoCCAgSBAoCCAgSBwoFCAgICAgSBgoECAgICCIOZ2V0U3RyaW5nQnlLZXkiA2tleSIIdW5pdFRlc3QiCW9yYWNsZUZlZSIIc2lnbkRhcHAiC2ZlZVJlY2VpdmVyIgh1c2VyRGFwcCINd2hpdGVsaXN0RGFwcCILc2lnbkFzc2V0SWQiC3VzZG5Bc3NldElkIgt1c2R0QXNzZXRJZCIMd2F2ZXNBc3NldElkIgVjaHJpcyIZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZSIPZ2V0SW50ZWdlckJ5S2V5Ig5jaGVja1doaXRlbGlzdCIPZ2V0Qm9vbGVhbkJ5S2V5IgdzaWduQ3V0Igt1c2RuV2F2ZUN1dCIOZGVmYXVsdExpY2VuY2UiEmRlZmF1bHRIYXNoTGljZW5jZSILZGFwcFJ1bm5pbmciDm1haW50ZW5hbmNlTVNHIg11c2VyU3VzcGVuZGVkIgt1c2VyUmVtb3ZlZCIQdXNlclVucmVnaXN0ZXJlZCILdXNlckFsbG93ZWQiGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UiFGNoZWNrU2lnbkNlcnRpZmljYXRlIgZzaWduSUQiBU93bmVyIgpzaGEyNTZIYXNoIgckbWF0Y2gwIgFhIgt2YWxpZGF0ZUNJRCIDY2lkIgx2YWxpZGF0ZUhhc2giBGhhc2giDWtleVVzZXJTdGF0dXMiBmNhbGxlciIHa2V5RGF0ZSIFYXJ0SWQiB2tleU5hbWUiB2tleURlc2MiDWtleURpc3BsYXlDaWQiDWtleUV4cG9ydEhhc2giDGtleUV4cG9ydENpZCIKa2V5TWF4TWludCIJa2V5U2lnbklEIglrZXlJc3N1ZWQiCWtleU9uU2FsZSIOa2V5TGljZW5jZUhhc2giDWtleUxpY2VuY2VDaWQiB2tleVRhZ3MiB2tleVR5cGUiB2tleU5vdGUiCmtleUNyYXdsZXIiDGtleVJveWFsdGllcyIIa2V5UHJpY2UiCmtleUVuZFNhbGUiEmtleUFzc2V0SWRBY2NlcHRlZCIHa2V5RmxhZyISa2V5QXJ0aXN0QWdlbnRBZGRyIgphcnRpc3RBZGRyIhRrZXlQcmltYXJ5U2hhcmVBZ2VudCIYa2V5QXJ0aXN0UHVibGljQWdlbnRBZGRyIhprZXlQcmltYXJ5U2hhcmVQdWJsaWNBZ2VudCIRa2V5SGFzaEJ5VHhpZEFkZHIiBHR4aWQiDmtleU93bmVyQnlIYXNoIg1rZXlpZEJ5U2lnbmlkIgZzaWduSWQiEmtleVR4aWRCeUhhc2hPd25lciIOdmFsaWRhdGVBbGxDSUQiCmNpZERpc3BsYXkiCWNpZEV4cG9ydCIKY2lkTGljZW5jZSIPdmFsaWRhdGVBbGxIYXNoIgxzaGEyNTZFeHBvcnQiDXNoYTI1NkxpY2VuY2UiDnZhbGlkYXRlU3RyaW5nIgNzdHIiA21heCIMdmFsaWRhdGVVc2VyIgp1c2VyU3RhdHVzIgpzZXRMSWNlbmNlIhN2YWxpZGF0ZUFydHdvcmtEYXRhIgpsaWNlbmNlQ0lEIgtsaWNlbmNlSGFzaCIEbmFtZSILZGVzY3JpcHRpb24iBHRhZ3MiCXJveWFsdGllcyIJY2hlY2tVc2VyIglpc1BheW1lbnQiAWkiB3BheW1lbnQiBmFtb3VudCIPdmFsaWRhdGVQYXltZW50IgskdDA5MTgwOTIxNiIHYXNzZXRJZCILaXNBcnRNaW50ZWQiCWFkZHJUb1VzZSIBYiIUdmFsaWRhdGVQcmljZUFzc2V0SWQiDHByaWNlQXNzZXRJZCIMYXJ0d29ya1ByaWNlIgskdDA5ODA0OTg0MCIQYWNjZXB0ZWRBc3NldElkcyIPdmFsaWRhdGVNaW5TZWxsIgVwcmljZSIMbWluU2VsbFdhdmVzIgttaW5TZWxsVXNkbiILbWluU2VsbFNpZ24iDWdldEJpZEFzc2V0SWQiFmdldFByaWNlQXNzZXRJZEZyb21CaWQiCmJpZERhdGFLZXkiB2JpZERhdGEiCmJpZERhdGFBcnIiCWJpZEFtb3VudCIKYmlkQXNzZXRJZCIVaWRDYWxsZXJEYXRlU3BvbnNvcmVkIgZwdWJLZXkiC2lzU3BvbnNvcmVkIhNnZXRfc3BvbnNvcmVkX3dhdmVzIgxpZENhbGxlckRhdGUiB2J1eU1pbnQiBmlzc3VlciIFYmlkSWQiCGJpZE93bmVyIg0kdDAxMzA0NDEzMTE0IgJpZCIEZGF0ZSIKbmV3X2NhbGxlciIFaXNCaWQiCGJsb2NrRW5kIg5jYWxsZXJJc0lzc3VlciIIdG90YWxORlQiC2FydHdvcmtOYW1lIghpc09uU2FsZSIKYW1vdW50U29sZCIKbWF4Q2FuU2VsbCINJHQwMTQ5ODYxNTE3OCIFYWdlbnQiCmFnZW50U2hhcmUiC3B1YmxpY0FnZW50IhBwdWJsaWNBZ2VudFNoYXJlIg1pc1doaXRlbGlzdGVkIgNjdXQiDWFtb3VudEZvclNpZ24iDmFtb3VudEZvckFnZW50IhRhbW91bnRGb3JQdWJsaWNBZ2VudCIQYW1vdW50Rm9yQ3JlYXRvciINbmV3QW1vdW50U29sZCIJaXNzdWVNZXRhIghpc3N1ZU5GVCIFaWRORlQiCnNlbGxTdGF0dXMiCnJlY2VpdmVORlQiCmFzc2V0SWRCaWQiCWJpZERlbE9sZCIJYmlkVXBkYXRlIgdzb2xkS2V5Iglzb2xkVmFsdWUiCHNvbGREYXRhIhRjb21taXNzaW9uc1dpdGhBZ2VudCIaY29tbWlzc2lvbnNXaXRoUHVibGljQWdlbnQiCnR4VG9DYWxsZXIiBmJ1eVJlcyIIYXNTdHJpbmciAmJ2IgNidjAiBmludm9rZSIDdmFsIgR0eXBlIgdjcmF3bGVyIg0kdDAyMDM1NDIwNDI3Ig0kdDAyMDUyODIwNTk3Ig92YWxpZGF0ZUFydHdvcmsiEHdoaXRlbGlzdGVkX2Ryb3AiDSR0MDIwODk2MjA5ODAiCmVudHJ5RXhpc3QiCWhhc2hFeGlzdCIPaXNTaWduQ2VydGlmaWVkIhdkZWNyZWFzZV93aGl0ZWxpc3RfZHJvcCINJHQwMjQwMTQyNDA4NCINJHQwMjQwOTQyNDE2MyIEZmxhZyIEYWRkciIEbm90ZSINJHQwMjU3OTAyNTgyNCINJHQwMjYyNjAyNjI5NCIMZGF0YVRvRGVsZXRlIgdtYXhNaW50Ig0kdDAyOTEzMDI5MjAwIgZiaWROYnIiCmJhc2VIZWlnaHQiDSR0MDMxNTgyMzE2MjIiDSR0MDMxNjI3MzE2NjMiDSR0MDMyODgzMzI5NTQiB2NhbGxlcjEiDSR0MDMzMTg5MzMyNTAiDXJldHVybk1vbmV5VG8iCWJpZFN0YXR1cyICdHgiCHZlcmlmaWVyIgNpbnZOAQFhAQFiCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAWICAAABYwcAAWQJAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX29yYWNsZV9mZWUAAWUJAQV2YWx1ZQEJAKYIAQkBAWEBAhFjb25mX3NpZ253ZWJfZGFwcAABZgkBAWEBAhFjb25mX2ZlZV9yZWNlaXZlcgABZwMFAWMJAQV2YWx1ZQEJAKYIAQIjM010NFJHTUV5alNXWUFvY1RQcWQ1NXdkSFFRQjNQVTJVQ20JAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX3VzZXJzX2RhcHAAAWgJAQV2YWx1ZQEJAKYIAQkBAWEBAhNjb25mX3doaXRlbGlzdF9kYXBwAAFpCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9TSUdOAAFqCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0ROAAFrCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0RUAAFsAQAAAW0JAQFhAQIMY29uZl9hZG1pbl8xAQFuAQFiCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUBZAUBYgIfSW50ZWdlciB1bmRlZmluZSBvciAwIGluIG9yYWNsZQEBbwEBYgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFiAAABAXABAWIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBaAUBYgAAAQFxAQFiCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFAWIHAAFyAAcAAXMACgABdAkBAWEBAhRjb25mX2RlZmF1bHRfbGljZW5jZQABdQkBAWEBAhljb25mX2RlZmF1bHRfbGljZW5jZV9oYXNoAAF2CQELdmFsdWVPckVsc2UCCQCbCAIFAWcCFGNvbmZfZGFwcF9pc19ydW5uaW5nBgABdwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQFnAhRjb25mX21haW50ZW5hbmNlX21zZwIAAAF4AglTVVNQRU5ERUQAAXkCB1JFTU9WRUQAAXoCDFVOUkVHSVNURVJFRAABQQIHQUxMT1dFRAABQgkBAW4BCQCsAgICEmNlcnRpZmljYXRpb25fZmVlXwkA2AQBBQFpAQFDAwFEAUUBRgQBRwkAnQgCBQFlCQCsAgIJAKwCAgkArAICAghkYXRhX2ZjXwUBRAIBXwUBRQMJAAECBQFHAgZTdHJpbmcEAUgFAUcDCQEIY29udGFpbnMCBQFIBQFGBgcHAQFJAQFKAwkBCGNvbnRhaW5zAgUBSgIBLwMDCQBmAgBMCQCxAgEFAUoJAAACCQCxAgEJAJEDAgkAtQkCBQFKAgEvAAAAOwcJAGYCABAJALECAQkAkQMCCQC1CQIFAUoCAS8AAQcHAQFLAQFMCQAAAgkAsQIBBQFMAEABAU0BAU4JAKwCAgIMdXNlcl9zdGF0dXNfBQFOAQFPAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9kYXRlXwUBUAIBXwUBTgEBUQIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfbmFtZV8FAVACAV8FAU4BAVICAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X2Rlc2NfBQFQAgFfBQFOAQFTAgFOAVAJAKwCAgkArAICCQCsAgICEGFydF9kaXNwbGF5X2NpZF8FAVACAV8FAU4BAVQCAU4BUAkArAICCQCsAgIJAKwCAgIQYXJ0X2V4cG9ydF9oYXNoXwUBUAIBXwUBTgEBVQIBTgFQCQCsAgIJAKwCAgkArAICAg9hcnRfZXhwb3J0X2NpZF8FAVACAV8FAU4BAVYCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X21heG1pbnRfBQFQAgFfBQFOAQFXAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9zaWduaWRfBQFQAgFfBQFOAQFYAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9pc3N1ZWRfBQFQAgFfBQFOAQFZAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9vbnNhbGVfBQFQAgFfBQFOAQFaAgFOAVAJAKwCAgkArAICCQCsAgICEWFydF9saWNlbmNlX2hhc2hfBQFQAgFfBQFOAQJhYQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfbGljZW5jZV9jaWRfBQFQAgFfBQFOAQJhYgIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfdGFnc18FAVACAV8FAU4BAmFjAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF90eXBlXwUBUAIBXwUBTgECYWQCAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X25vdGVfBQFQAgFfBQFOAQJhZQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfY3Jhd2xlcl9jaWRfBQFQAgFfBQFOAQJhZgIBTgFQCQCsAgIJAKwCAgkArAICAg5hcnRfcm95YWx0aWVzXwUBUAIBXwUBTgECYWcCAU4BUAkArAICCQCsAgIJAKwCAgIKYXJ0X3ByaWNlXwUBUAIBXwUBTgECYWgCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X2VuZHNhbGVfBQFQAgFfBQFOAQJhaQIBTgFQCQCsAgIJAKwCAgkArAICAhJhcnRfYXNzZXRBY2NlcHRlZF8FAVACAV8FAU4BAmFqAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9mbGFnXwUBUAIBXwUBTgECYWsBAmFsCQCsAgICDWFydGlzdF9hZ2VudF8FAmFsAQJhbQECYWwJAKwCAgIVYXJ0aXN0X2FnZW50X3ByaW1hcnlfBQJhbAECYW4BAmFsCQCsAgICFGFydGlzdF9wdWJsaWNfYWdlbnRfBQJhbAECYW8BAmFsCQCsAgICHGFydGlzdF9wdWJsaWNfYWdlbnRfcHJpbWFyeV8FAmFsAQJhcAIBTgJhcQkArAICCQCsAgIJAKwCAgITZ2V0X2hhc2hieXR4aWRhZGRyXwUCYXECAV8FAU4BAmFyAQFGCQCsAgICEmdldF9vd25lcl9ieV9oYXNoXwUBRgECYXMCAU4CYXQJAKwCAgkArAICCQCsAgICEmdldF9hcnRpZGJ5c2lnbmlkXwUCYXQCAV8FAU4BAmF1AgFGAU4JAKwCAgIXZ2V0X3R4aWRfYnlfaGFzaF9vd25lcl8JANgEAQkA1BYBCQCbAwEJAKwCAgUBRgUBTgECYXYDAmF3AmF4AmF5AwkBASEBCQEBSQEFAmF3CQACAQIRV3JvbmcgRGlzcGxheSBDSUQDCQEBIQEJAQFJAQUCYXgJAAIBAhBXcm9uZyBFeHBvcnQgQ0lEAwMJAQIhPQIFAmF5AgAJAQEhAQkBAUkBBQJheQcJAAIBAhFXcm9uZyBMaWNlbmNlIENJRAYBAmF6AgJhQQJhQgMJAQEhAQkBAUsBBQJhQQkAAgECGEV4cG9ydCBIYXNoIDY0IGNoYXIuIG1heAMJAQEhAQkBAUsBBQJhQgkAAgECGUxpY2VuY2UgSGFzaCA2NCBjaGFyLiBtYXgGAQJhQwICYUQCYUUDCQAAAgkAsQIBBQJhRAAACQACAQIYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAZgIJALECAQUCYUQFAmFFCQACAQkArAICBQJhRAIMIGlzIHRvbyBsb25nBgECYUYBAU4EAmFHCQELdmFsdWVPckVsc2UCCQCdCAIFAWcJAQFNAQUBTgUBegMDCQAAAgUCYUcFAXoGCQAAAgUCYUcFAUECLlJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICJBY2NvdW50IiB0YWIDCQAAAgUCYUcFAXgCEUFjY291bnQgc3VzcGVuZGVkAwkAAAIFAmFHBQF5Ag9BY2NvdW50IHJlbW92ZWQCAAECYUgCAmF5AmFCBAFKAwkAAAIJALECAQUCYXkAAAUBdAUCYXkEAUwDCQAAAgkAsQIBBQJhQgAABQF1BQJhQgkAlAoCBQFKBQFMAQJhSQoBTgJhdwJheAJhSgJhQQJhSwJhTAJhTQJhTgJhTwQCYVAJAQJhRgEFAU4DCQECIT0CBQJhUAIACQACAQUCYVADCQAAAgkAsQIBBQJhdwAACQACAQIbRGlzcGxheSBDSUQgY2Fubm90IGJlIGVtcHR5AwkBASEBCQECYXYDBQJhdwUCYXgFAmFKCQACAQIQUHJvYmxlbSB3aXRoIENJRAMJAQEhAQkBAmF6AgUCYUEFAmFLCQACAQITUHJvYmxlbSB3aXRoIEhhc2hlcwMJAQEhAQkBAmFDAgUCYUwAZAkAAgECEjEwMCBDaGFyLiBtYXggbmFtZQMJAQEhAQkBAmFDAgUCYU0A6AcJAAIBAhoxMDAwIENoYXIuIG1heCBkZXNjcmlwdGlvbgMDCQBmAgAABQJhTwYJAGYCBQJhTwDoBwkAAgECM1JveWFsdGllcyBjYW5ub3QgYmUgbGVzcyB0aGFuIDAlIG9yIGhpZ2hlciB0aGFuIDEwJQMJAGYCCQCQAwEJALUJAgUCYU4CASwABQkAAgECCzUgdGFncyBtYXguAgABAmFRAQJhUgMJAAACCQCQAwEIBQJhUghwYXltZW50cwAACQACAQITTm8gcGF5bWVudCBhdHRhY2hlZAQCYVMJAQV2YWx1ZQEJAJEDAggFAmFSCHBheW1lbnRzAAAEAmFUCQEFdmFsdWUBCAUCYVMGYW1vdW50CQCUCgIFAmFTBQJhVAECYVUBAmFSBAJhVgkBAmFRAQUCYVIEAmFTCAUCYVYCXzEEAmFUCAUCYVYCXzIEAmFXAwMJAQlpc0RlZmluZWQBCAUCYVMHYXNzZXRJZAkAAAIIBQJhUwdhc3NldElkBQFpBwgFAmFTB2Fzc2V0SWQJAAIBAitPbmx5IFNJR04gdG9rZW4gYWNjZXB0ZWQgYXMgdHJhbnNhY3Rpb24gZmVlAwkBAiE9AgUCYVQFAUIJAAIBCQCsAgICGVBheW1lbnQgYW1vdW50IHNob3VsZCBiZSAJAKQDAQUBQgkAlAoCBQJhVAUCYVcBAmFYAgJhWQFQBAFHCQCaCAIFBHRoaXMJAQFYAgUCYVkFAVADCQABAgUBRwIDSW50BAJhWgUBRwMJAQIhPQIFAmFaAAAGBwcBAmJhAwJhUgJiYgJiYwQCYmQJAQJhUQEFAmFSBAJhUwgFAmJkAl8xBAJhVAgFAmJkAl8yBAJhVwMJAQEhAQkBCWlzRGVmaW5lZAEIBQJhUwdhc3NldElkBQR1bml0AwMJAGYCCQCxAgEFAmJiAAAJAAACCQDYBAEJAQV2YWx1ZQEIBQJhUwdhc3NldElkBQJiYgcIBQJhUwdhc3NldElkCQACAQIOV3JvbmcgYXNzZXQgaWQDAwkAAAIFAmFXBQR1bml0CQECIT0CBQJiYgIABwkAAgECDldyb25nIGFzc2V0IGlkAwkBAiE9AgUCYmMFAmFUCQACAQITUGF5bWVudCBkb24ndCBtYXRjaAkAlAoCBQJhVAUCYVcBAmJlAQJhVwMDAwMDCQECIT0CBQJhVwkA2AQBBQFpCQECIT0CBQJhVwkA2AQBBQFsBwkBAiE9AgUCYVcCBVdBVkVTBwkBAiE9AgUCYVcJANgEAQUBagcJAQIhPQIFAmFXCQDYBAEFAWsHCQACAQImT25seSBTSUdOLCBVU0ROLFVTRFQgb3IgV0FWRVMgYWNjZXB0ZWQGAQJiZgICYVcCYmcEAmJoAwUBYwAKCQEBbgECDndhdmVzX21pbl9zZWxsBAJiaQDAhD0EAmJqAwUBYwABCQBoAgUBQgACAwMDAwMDCQAAAgUCYVcJANgEAQUBagkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBawkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBaQkAZgIFAmJqBQJiZwcJAQIhPQIFAmJnAAAHBgMDAwkAAAIFAmFXCQDYBAEFAWwGCQAAAgUCYVcCBVdBVkVTCQBmAgUCYmgFAmJnBwkBAiE9AgUCYmcAAAcJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UGAQJiawECYVcDCQAAAgUCYVcCBVdBVkVTBQR1bml0CQDZBAEFAmFXAQJibAECYm0EAmJuCQEBYQEJAKwCAgUCYm0CBV9PUEVOAwkAAAIFAmJuAgAJAAIBAg1CaWQgbm90IGZvdW5kBAJibwkAtQkCBQJibgIBXwQCYnAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJibwABBAJicQkBAmJrAQkAkQMCBQJibwAAAwkAZwIAAAUCYnAJAAIBAgxXcm9uZyBhbW91bnQJAJQKAgUCYnAFAmJxAQJicgICYVICYnMDCQEBIQEFAXYJAAIBBQF3BAJidAMJAQIhPQIFAmJzAgAJAQt2YWx1ZU9yRWxzZQIJAQFwAQkArAICCQClCAEJAKcIAQkA2QQBBQJicwIJX2ZyZWVfdHhzAAAAAAMJAAACBQJidAUCYnQEAU4DAwkAAAIJANgEAQgIBQJhUgZjYWxsZXIFYnl0ZXMJAKUIAQUEdGhpcwkAZgIFAmJ0AAAHCQClCAEJAKcIAQkA2QQBBQJicwkA2AQBCAgFAmFSBmNhbGxlcgVieXRlcwQCYnUDAwkBAiE9AgUCYnMCAAkAZgIFAmJ0AAAHCQD8BwQFAWgCCXVzZUZyZWVUeAkAzAgCCQClCAEJAKcIAQkA2QQBBQJicwUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCYnUFAmJ1CQCWCgQJANgEAQgFAmFSDXRyYW5zYWN0aW9uSWQFAU4IBQlsYXN0QmxvY2sJdGltZXN0YW1wCQBmAgUCYnQAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECYnYBAmFSAwkBASEBBQF2CQACAQUBdwkAlQoDCQDYBAEIBQJhUg10cmFuc2FjdGlvbklkCQDYBAEICAUCYVIGY2FsbGVyBWJ5dGVzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAECYncGAmFSAVACYngCYnkCYnoCYnMEAmJBCQECYnICBQJhUgUCYnMEAmJCCAUCYkECXzEEAU4IBQJiQQJfMgQCYkMIBQJiQQJfMwQCYnQIBQJiQQJfNAMGCQACAQkApQMBBQJidAQCYkQDAwkAAAIJANgEAQgIBQJhUgZjYWxsZXIFYnl0ZXMJAKUIAQUEdGhpcwUCYnQHCQClCAEJAKcIAQkA2QQBBQJicwkA2AQBCAgFAmFSBmNhbGxlcgVieXRlcwMGCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUCYkQCAyAvIAUCYngCAyAvIAUCYnoCAyAvIAUCYnMEAmJFAwMDCQAAAgUBTgUCYngJAQIhPQIFAmJ6AgAHCQECIT0CBQJieQIABwYHBAJiRgkBAW8BCQECYWgCBQFOBQFQAwMDCQECIT0CBQJiRgAACQBnAgUGaGVpZ2h0BQJiRgcJAQEhAQUCYkUHCQACAQILU2FsZSBlbmRlZC4EAmJHCQAAAgUBTgUCYngEAmJICQEBbwECEHRvdGFsX25mdF9pc3N1ZWQEAUQJAQFhAQkBAVcCBQJieAUBUAQCYkkJAQFhAQkBAVECBQJieAUBUAMJAAACBQJiSQIACQACAQIRQXJ0IGRvZXNuJ3QgZXhpc3QEAmJKCQEBcQEJAQFZAgUCYngFAVAEAmJLCQEBbwEJAQFYAgUCYngFAVAEAmJjAwUCYkcJAGgCBQFCAAIJAQFvAQkBAmFnAgUCYngFAVAEAmJiAwUCYkcJANgEAQUBaQkBAWEBCQECYWkCBQJieAUBUAQCYkwJAQFvAQkBAVYCBQJieAUBUAMDAwkBASEBBQJiRQkBASEBBQJiRwcDAwkAZwIAAAUCYmMGCQEBIQEFAmJKBgkAZwIAAAUCYkwHCQACAQIQQXJ0IG5vdCBmb3Igc2FsZQMDAwkBASEBBQJiRQUCYkcHCQBnAgAABQJiTAcJAAIBAhRNYXggaXNzdWFibGUgbm90IHNldAQCYVAJAQJhRgEFAmJ4AwMFAmJFCQECIT0CBQJhUAIABwkAAgEFAmFQBAJibQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgRiaWRfBQFQAgFfBQJieAIBXwUCYnoCAV8FAmJ5BAJiTQMFAmJFCQECYmwBBQJibQkBAmJhAwUCYVIFAmJiBQJiYwQCYVQIBQJiTQJfMQQCYVcIBQJiTQJfMgQCYk4JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUBZwkBAmFrAQUCYngFAWYEAmJPCQELdmFsdWVPckVsc2UCCQCaCAIFAWcJAQJhbQEFAmJ4AAAEAmJQCQELdmFsdWVPckVsc2UCCQCdCAIFAWcJAQJhbgEFAmJ4BQFmBAJiUQkBC3ZhbHVlT3JFbHNlAgkAmggCBQFnCQECYW8BBQJieAAABAJiUgkBAXABBQJieAQCYlMDCQBmAgUCYlIFBmhlaWdodAAAAwkAAAIFAmFXBQFpBQFyBQFzBAJiVAkAawMFAmFUBQJiUwBkBAJiVQMDAwkBAiE9AgUCYk4FAWYJAGYCBQJiTwAABwkAZgIFBmhlaWdodAUCYlIHCQBrAwUCYVQFAmJPAJBOAAAEAmJWAwMDCQECIT0CBQJiUAUBZgkAZgIFAmJRAAAHCQBmAgUGaGVpZ2h0BQJiUgcJAGsDBQJhVAUCYlEAkE4AAAQCYlcJAGUCBQJhVAUCYlQDCQAAAgUCYksFAmJMCQACAQIMQXJ0IHNvbGQgb3V0BAJiWAkAZAIFAmJLAAEEAmJZCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJQ3JlYXRvcjogBQJieAIKLAogQXJ0SUQ6IAUBUAILLAogU2lnbklEOiAFAUQCESwKIEFydHdvcmsgbmFtZTogBQJiSQIKLAogSXNzdWU6IAkApAMBBQJiWAIBLwkApAMBBQJiTAQCYloJAMIIBQkArAICAgNTQV8JAKQDAQkAZAIFAmJIAAEFAmJZAAEAAAcEAmNhCQC4CAEFAmJaBAJjYgMDCQAAAgUCYlgFAmJMBgkBASEBBQJiSgcGBAJjYwMDAwkAAAIFAU4FAmJ4CQECIT0CBQJiegIABwkBAiE9AgUCYnkCAAcJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmJ6CAUCYVIGY2FsbGVyBAJjZAMJAQEhAQkBCWlzRGVmaW5lZAEFAmFXAgVXQVZFUwkA2AQBCQEFdmFsdWUBBQJhVwQCYm4JAQFhAQkArAICBQJibQIFX09QRU4EAmNlCQELRGVsZXRlRW50cnkBCQCsAgIFAmJtAgVfT1BFTgQCY2YJAQtTdHJpbmdFbnRyeQIJAKwCAgUCYm0CB19DTE9TRUQJAKwCAgkArAICBQJibgIBXwkApAMBBQJiQwQCY2cJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJYXJ0X3NvbGRfCQCkAwEFAmJYAgRfb2ZfCQCkAwEFAmJMAgFfBQFQAgFfBQJieAQCY2gDCQEBIQEFAmJFCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFAU4CAV8JAKQDAQUCYkMCAV8FAmJCAgFfCQCkAwEFAmJjAgFfBQJiYgIBXwkA2AQBBQJjYQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQClCAEFAmNjAgFfCQCkAwEFAmJDAgFfBQJiQgIBXwkApAMBBQJhVAIBXwUCY2QCAV8JANgEAQUCY2EEAmNpCQELU3RyaW5nRW50cnkCBQJjZwUCY2gEAmNqAwkBAiE9AgUCYlUAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUBZgkAZQIFAmJUBQJiVQUCYVcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAmJOBQJiVQUCYVcFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUBZgUCYlQFAmFXBQNuaWwEAmNrAwkBAiE9AgUCYlYAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUCYlAFAmJWBQJhVwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUCYngJAGUCBQJiVwUCYlYFAmFXBQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAmJ4BQJiVwUCYVcFA25pbAQCY2wDBQJidAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUBTgAABQR1bml0BQNuaWwFA25pbAQCY20JAM4IAgkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUCYngFAVAFAmJYCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIEbmZ0XwkA2AQBBQJjYQUCY2cJAMwIAgkBDEludGVnZXJFbnRyeQICEHRvdGFsX25mdF9pc3N1ZWQJAGQCBQJiSAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWgCBQJieAUBUAAACQDMCAIJAQxCb29sZWFuRW50cnkCCQEBWQIFAmJ4BQFQBQJjYgkAzAgCBQJiWgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjYwABBQJjYQUDbmlsBQJjagUCY2sFAmNsAwUCYkUJAMwIAgUCY2kJAMwIAgUCY2YJAMwIAgUCY2UFAmNtCQDMCAIFAmNpBQJjbQECY24BAmNvBAFHBQJjbwMJAAECBQFHAgZTdHJpbmcEAmNwBQFHBQJjcAkAAgECJFNwb25zb3JlZCBQdWJsaWMgS2V5IFN0cmluZyBleHBlY3RlZAoCY3EBB3NldENvbmYCAWICY3IEAU4JAKUIAQgFAmNxBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFAW0JAMwIAgkApQgBBQR0aGlzBQNuaWwFAU4DCQEIY29udGFpbnMCBQFiAgVjb25mXwkAzAgCCQELU3RyaW5nRW50cnkCBQFiBQJjcgUDbmlsCQACAQIgRW50cmllcyBzdGFydGluZyB3aXRoIGNvbmZfIG9ubHkJAAIBAiJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGlzAmFSAQphZGRBcnR3b3JrDgFGAUQCYUwCYU0CYU4CY3MCYXcCYUECYXgCYUICYXkCY3QCYU8CYnMEAmN1CQECYnICBQJhUgUCYnMEAVAIBQJjdQJfMQQBTggFAmN1Al8yBAJiQwgFAmN1Al8zBAJidAgFAmN1Al80AwkBASEBCQEBSwEFAUYJAAIBAiRIYXNoIHNob3VsZCBiZSA2NCBjaGFyYWN0ZXJzIG1heGltdW0EAmN2CQECYUgCBQJheQUCYUIEAmFKCAUCY3YCXzEEAmFLCAUCY3YCXzIEAmN3CQECYUkKBQFOBQJhdwUCYXgFAmFKBQJhQQUCYUsFAmFMBQJhTQUCYU4FAmFPAwkBAiE9AgUCY3cCAAkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQQCY3gJAGYCCQEBcAEJAKwCAgUBTgILX2ZyZWVfZHJvcHMAAAQCY3kDBQJjeAkAlAoCAAAFAUQJAQJhVQEFAmFSBAJhVAgFAmN5Al8xBAJhVwgFAmN5Al8yAwkBASEBCQEJaXNEZWZpbmVkAQUCYVQJAAIBAhRTb21ldGhpbmcgd2VudCB3cm9uZwQCY3oJAQFhAQkBAmF1AgUBRgUBTgMJAQIhPQIFAmN6AgAJAAIBAhRZb3UgYWxyZWFkeSBhZGRlZCBpdAQCY0EJAQFhAQkBAmFyAQUBRgMJAQIhPQIFAmNBAgAJAAIBAhdIYXNoIGFscmVhZHkgcmVnaXN0ZXJlZAQCY0IJAQFDAwUBRAUBTgUBRgMJAQEhAQUCY0IJAAIBAixTaWduIENlcnRpZmljYXRlIG5vdCBmb3VuZCBmb3IgdGhpcyBhZGRyZXNzLgQCY0MDBQJjeAkA/AcEBQFoAgt1c2VGcmVlRHJvcAkAzAgCBQFOBQNuaWwFA25pbAUEdW5pdAMJAAACBQJjQwUCY0MEAmNsAwUCYnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAU4AAAUEdW5pdAUDbmlsBQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYXIBBQFGBQFOCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhdQIFAUYFAU4FAVAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFPAgUBTgUBUAUCYkMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVECBQFOBQFQBQJhTAkAzAgCCQELU3RyaW5nRW50cnkCCQEBUgIFAU4FAVAFAmFNCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFTAgUBTgUBUAUCYXcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVUCBQFOBQFQBQJheAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVAIFAU4FAVAFAmFBCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgUBTgUBUAUCYUsJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgUBTgUBUAUCYUoJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFjAgUBTgUBUAUCY3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAgUBTgUBUAUCYU4JAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUBTgUBUAAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAgUBTgUBUAUBRAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQFOBQFQAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQFZAgUBTgUBUAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFzAgUBTgUBRAUBUAkAzAgCCQELU3RyaW5nRW50cnkCCQECYXACBQFOBQFQBQFGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZQIFAU4FAVAFAmN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWYCBQFOBQFQBQJhTwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUBZgUCYVQFAWkFA25pbAUCY2wJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYVIBDXVwZGF0ZUFydHdvcmsNAmFxAmFMAmFNAmFOAmNzAmF3AmFBAmF4AmFCAmF5AmN0AmFPAmJzAwkBASEBBQF2CQACAQUBdwQCY0QJAQJicgIFAmFSBQJicwQCYkIIBQJjRAJfMQQBTggFAmNEAl8yBAJiQwgFAmNEAl8zBAJidAgFAmNEAl80BAJjRQkBAmFIAgUCYXkFAmFCBAJhSggFAmNFAl8xBAJhSwgFAmNFAl8yBAJjdwkBAmFJCgUBTgUCYXcFAmF4BQJhSgUCYUEFAmFLBQJhTAUCYU0FAmFOBQJhTwMJAQIhPQIFAmN3AgAJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEEAmN6CQEBYQEJAQFRAgUBTgUCYXEDCQAAAgUCY3oCAAkAAgECD0VudHJ5IG5vdCBmb3VuZAQCY0YJAQFhAQkBAmFqAgUBTgUCYXEDCQAAAgUCY0YCB0lMTEVHQUwJAAIBAh1DYW5ub3QgdXBkYXRlIElMTEVHQUwgYXJ0d29yawMJAQEhAQkBAmFYAgUBTgUCYXEEAmNsAwUCYnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAU4AAAUEdW5pdAUDbmlsBQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCCQEBUQIFAU4FAmFxBQJhTAkAzAgCCQELU3RyaW5nRW50cnkCCQEBUgIFAU4FAmFxBQJhTQkAzAgCCQELU3RyaW5nRW50cnkCCQEBUwIFAU4FAmFxBQJhdwkAzAgCCQELU3RyaW5nRW50cnkCCQEBVQIFAU4FAmFxBQJheAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVAIFAU4FAmFxBQJhQQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECBQFOBQJhcQUCYUoJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoCBQFOBQJhcQUCYUsJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAgUBTgUCYXEFAmFOCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYwIFAU4FAmFxBQJjcwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWUCBQFOBQJhcQUCY3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhZgIFAU4FAmFxBQJhTwUDbmlsBQJjbAkAAgECDkFscmVhZHkgbWludGVkAmFSAQtmbGFnQXJ0d29yawQBUAJjRwJjRgJjSAQCY0kJAQJidgEFAmFSBAJiQggFAmNJAl8xBAFOCAUCY0kCXzIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQFtCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQFOAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgIHQ09OU0VOVAkAzAgCAgAJAMwIAgIPQ0hBTkdFX1JFUVVJUkVECQDMCAICB0ZMQUdHRUQJAMwIAgIHSUxMRUdBTAUDbmlsBQJjRgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWoCBQJjRwUBUAUCY0YJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAgUCY0cFAVAFAmNIBQNuaWwJAAIBCQCsAgICDlVua25vdyBzdGF0dXMgBQJjRgkAAgECE1lvdSBhcmUgbm90IGFsbG93ZWQCYVIBDWRlbGV0ZUFydHdvcmsCAVACY0cEAmNKCQECYnYBBQJhUgQCYkIIBQJjSgJfMQQBTggFAmNKAl8yBAJhWQMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFAW0JAMwIAgkApQgBBQR0aGlzBQNuaWwFAU4FAmNHBQFOBAJjegkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQEBYQEJAQFRAgUCYVkFAVACIE5vIGFydCBtYXRjaGluZyBmb3IgdGhpcyBhZGRyZXNzAwkAAAIFAmN6AgAJAAIBAiBObyBhcnQgbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwQBRgkBAWEBCQECYXACBQJhWQUBUAMJAAACBQFGAgAJAAIBAiVObyBhcnQgaGFzaCBtYXRjaGluZyBmb3IgdGhpcyBhZGRyZXNzBAFECQEBYQEJAQFXAgUCYVkFAVADCQAAAgUBRAIACQACAQITTm8gU0lHTiBJRCBtYXRjaGluZwQCY0sJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAU8CBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBUQIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFSAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVMCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBVQIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFUAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVoCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWECBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWMCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWICBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBVgIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFXAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVgCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBWQIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhagIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhZwIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhaQIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhcgEFAUYJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFzAgUCYVkFAUQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmF1AgUBRgUCYVkJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFoAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFkAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFlAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFmAgUCYVkFAVAFA25pbAMJAQEhAQkBAmFYAgUCYVkFAVADCQEBIQEFAXYJAAIBBQF3BQJjSwMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFAW0JAMwIAgkApQgBBQR0aGlzBQNuaWwFAU4FAmNLCQACAQIoQXJ0IGFscmVhZHkgbWludGVkLCB5b3UgY2Fubm90IGRlbGV0ZSBpdAJhUgELc2VsbEFydHdvcmsGAVACYmcCY0wCYVcCYkYCYnMEAmNNCQECYnICBQJhUgUCYnMEAmJCCAUCY00CXzEEAU4IBQJjTQJfMgQCYkMIBQJjTQJfMwQCYnQIBQJjTQJfNAQCYkkJAQFhAQkBAVECBQFOBQFQAwkAAAIFAmJJAgAJAAIBAiNUaGlzIGFydCBkb2Vzbid0IG1hdGNoIHlvdXIgYWNjb3VudAQCY0YJAQFhAQkBAmFqAgUBTgUBUAMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAICD0NIQU5HRV9SRVFVSVJFRAkAzAgCAgdGTEFHR0VECQDMCAICB0lMTEVHQUwFA25pbAUCY0YJAAIBAg9GbGFnZ2VkIGFydHdvcmsEAmNOCQEBbwEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQFQAwkAZgIAAAUCYkYJAAIBAgxOZWdhdGl2ZSBlbmQDAwkAZgIFAmJGAAADCQECIT0CBQJjTAABBgkBAiE9AgUCYmcAAAcJAAIBAjpUaW1lZCBvZmZlciBvbmx5IGFsbG93ZWQgZm9yIHVuaXF1ZSBlZGl0aW9uIGFuZCBvZmZlciBvbmx5BAJjTwMJAAACBQJiRgAAAAAFBmhlaWdodAMJAQEhAQkBAmJlAQUCYVcJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEDCQEBIQEJAQJiZgIFAmFXBQJiZwkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQQCYVAJAQJhRgEFAU4DCQECIT0CBQJhUAIACQACAQUCYVAEAmJLCQEBbwEJAQFYAgUBTgUBUAQCYkwJAQFvAQkBAVYCBQFOBQFQAwkAZgIFAmNMAGQJAAIBAhwxMDAgZWRpdGlvbnMgbWF4IHBlciBhcnR3b3JrAwMJAQIhPQIFAmJLAAAJAAACBQJiSwUCYkwHCQACAQIUTWF4IGVkaXRpb24gcmVhY2hlZC4DAwkAZgIFAmJLAAAJAQIhPQIFAmJMBQJjTAcJAAIBAiZDYW5ub3QgY2hhbmdlIG1heGltdW0gaXNzdWFibGUgYW55bW9yZQMDCQBmAgUCY04AAAkBAiE9AgUCYkwFAmNMBwkAAgECMUNhbm5vdCBjaGFuZ2UgbWF4aW11bSBpc3N1YWJsZSB3aXRoIGFjdGl2ZSBvcmRlcnMEAmNiAwMJAGYCBQJiZwAACQBmAgUCY0wAAAcGBwQCY2wDBQJidAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUBTgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQxCb29sZWFuRW50cnkCCQEBWQIFAU4FAVAFAmNiCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWcCBQFOBQFQBQJiZwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQFOBQFQBQJjTAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWkCBQFOBQFQBQJhVwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFoAgUBTgUBUAkAZAIFAmNPBQJiRgUDbmlsBQJjbAJhUgEKYnV5QXJ0d29yawIBUAJieAkBAmJ3BgUCYVIFAVAFAmJ4AgACAAIAAmFSAQZzZXRCaWQCAVACYngEAmNQCQECYnYBBQJhUgQCYkIIBQJjUAJfMQQBTggFAmNQAl8yBAJiQwgFAmNQAl8zBAJjUQkBAmFRAQUCYVIEAmFTCAUCY1ECXzEEAmFUCAUCY1ECXzIEAmFXAwkBASEBCQEJaXNEZWZpbmVkAQgFAmFTB2Fzc2V0SWQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEIBQJhUwdhc3NldElkBAJiRgkBAW8BCQECYWgCBQJieAUBUAMDCQECIT0CBQJiRgAACQBnAgUGaGVpZ2h0BQJiRgcJAAIBAgtTYWxlIGVuZGVkLgQCY04JAQFvAQkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FAVADCQEBIQEJAQJiZQEFAmFXCQACAQISYXNzZXQgbm90IGFjY2VwdGVkAwkBASEBCQECYmYCBQJhVwUCYVQJAAIBAg5Xcm9uZyBtaW4gc2VsbAQCYksJAQFvAQkBAVgCBQJieAUBUAQCYkwJAQFvAQkBAVYCBQJieAUBUAMJAGcCAAAFAmJMCQACAQIjTm8gbWF4IGVkaXRpb24gc2V0IGZvciB0aGlzIGFydHdvcmsDCQBnAgUCYksFAmJMCQACAQIYU29sZCBvdXQsIHlvdSBjYW5ub3QgYmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgRiaWRfBQFQAgFfBQJieAIBXwUBTgIBXwUCYkICBV9PUEVOCQCsAgIJAKwCAgkArAICCQCsAgIFAmFXAgFfCQCkAwEFAmFUAgFfCQCkAwEFAmJDCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUBUAkAZAIFAmNOAAEFA25pbAJhUgEJYWNjZXB0QmlkBQFQAmJ4AmJ5AmJ6AmJzBAJjUgkBAmJyAgUCYVIFAmJzBAJiQggFAmNSAl8xBAJjUwgFAmNSAl8yBAJiQwgFAmNSAl8zBAJidAgFAmNSAl80AwkBAiE9AgUCY1MFAmJ4CQACAQIZWW91IGNhbm5vdCBkbyB0aGlzIGFjdGlvbgkBAmJ3BgUCYVIFAVAFAmJ4BQJieQUCYnoFAmJzAmFSAQljYW5jZWxCaWQEAVACYngCYnkCYnoEAmNUCQECYnYBBQJhUgQCYkIIBQJjVAJfMQQBTggFAmNUAl8yBAJiQwgFAmNUAl8zAwMJAQIhPQIFAU4FAmJ6CQECIT0CBQFOBQJieAcJAAIBAhlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uBAJjVQMJAAACBQFOBQJieAUCYnoFAU4EAmNOCQEBbwEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQFQBAJibQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgRiaWRfBQFQAgFfBQJieAIBXwUCYnoCAV8FAmJ5BAJibgkBAWEBCQCsAgIFAmJtAgVfT1BFTgMJAAACBQJibgIACQACAQINQmlkIG5vdCBmb3VuZAQCYm8JALUJAgUCYm4CAV8EAmFXCQECYmsBCQCRAwIFAmJvAAAEAmNWAghDQU5DRUxFRAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFAmJtAgVfT1BFTgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgUCYm0CAV8FAmNWCQCsAgIJAKwCAgUCYm4CAV8JAKQDAQUCYkMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQFQCQBlAgUCY04AAQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUCY1UJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJibwABBQJhVwUDbmlsAQJjVwECY1gABAFHBQJjVwMJAAECBQFHAhdJbnZva2VTY3JpcHRUcmFuc2FjdGlvbgQCY1kFAUcDAwMDCQAAAggFAmNZCGZ1bmN0aW9uAgphZGRBcnR3b3JrCQAAAggFAmNZBGRBcHAFBHRoaXMHCQAAAggFAmNZA2ZlZQCgwh4HCQAAAggFAmNZCmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJjVwlib2R5Qnl0ZXMJAJEDAggFAmNXBnByb29mcwAACQDZBAEJAQJjbgEJAJEDAggFAmNZBGFyZ3MADQMDAwMJAAACCAUCY1kIZnVuY3Rpb24CDXVwZGF0ZUFydHdvcmsJAAACCAUCY1kEZEFwcAUEdGhpcwcJAAACCAUCY1kDZmVlAKDCHgcJAAACCAUCY1kKZmVlQXNzZXRJZAUEdW5pdAcJAPQDAwgFAmNXCWJvZHlCeXRlcwkAkQMCCAUCY1cGcHJvb2ZzAAAJANkEAQkBAmNuAQkAkQMCCAUCY1kEYXJncwAMAwMDAwkAAAIIBQJjWQhmdW5jdGlvbgILc2VsbEFydHdvcmsJAAACCAUCY1kEZEFwcAUEdGhpcwcJAAACCAUCY1kDZmVlAKDCHgcJAAACCAUCY1kKZmVlQXNzZXRJZAUEdW5pdAcJAPQDAwgFAmNXCWJvZHlCeXRlcwkAkQMCCAUCY1cGcHJvb2ZzAAAJANkEAQkBAmNuAQkAkQMCCAUCY1kEYXJncwAFAwMDAwkAAAIIBQJjWQhmdW5jdGlvbgIJYWNjZXB0QmlkCQAAAggFAmNZBGRBcHAFBHRoaXMHCQAAAggFAmNZA2ZlZQCgwh4HCQAAAggFAmNZCmZlZUFzc2V0SWQFBHVuaXQHCQDIEwMIBQJjVwlib2R5Qnl0ZXMJAJEDAggFAmNXBnByb29mcwAACQDZBAEJAQJjbgEJAJEDAggFAmNZBGFyZ3MABAkA9AMDCAUCY1cJYm9keUJ5dGVzCQCRAwIIBQJjVwZwcm9vZnMAAAgFAmNXD3NlbmRlclB1YmxpY0tleQkA9AMDCAUCY1cJYm9keUJ5dGVzCQCRAwIIBQJjVwZwcm9vZnMAAAgFAmNXD3NlbmRlclB1YmxpY0tlecYcb14=", "height": 2503574, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: E62xW1pw9jgsZWimhpYQf5o6ytu658QTQt6nywD19fmV Next: D5DNmHBBNvQX8fZnK9ct8VdFY218zBphrbaaVyoRPkrJ Diff:
OldNewDifferences
399399 then invoke(h, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
400400 else unit
401401 if ((bu == bu))
402- then if (true)
403- then throw(toString((bt > 0)))
404- else $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
402+ then $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
405403 else throw("Strict value is not equal to itself.")
406404 }
407405 else throw("Strict value is not equal to itself.")
420418 let bC = bA._3
421419 let bt = bA._4
422420 if (true)
423- then throw(((toString((toBase58String(aR.caller.bytes) == toString(this))) + " / ") + toString(bt)))
421+ then throw(toString(bt))
424422 else {
425423 let bD = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
426424 then bt
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = valueOrElse(getString(this, b), "")
55
66
77 let c = false
88
99 let d = value(addressFromString(a("conf_oracle_fee")))
1010
1111 let e = value(addressFromString(a("conf_signweb_dapp")))
1212
1313 let f = a("conf_fee_receiver")
1414
1515 let g = if (c)
1616 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
1717 else value(addressFromString(a("conf_users_dapp")))
1818
1919 let h = value(addressFromString(a("conf_whitelist_dapp")))
2020
2121 let i = fromBase58String(a("conf_accepted_asset_SIGN"))
2222
2323 let j = fromBase58String(a("conf_accepted_asset_USDN"))
2424
2525 let k = fromBase58String(a("conf_accepted_asset_USDT"))
2626
2727 let l = base58''
2828
2929 let m = a("conf_admin_1")
3030
3131 func n (b) = valueOrErrorMessage(getInteger(d, b), "Integer undefine or 0 in oracle")
3232
3333
3434 func o (b) = valueOrElse(getInteger(this, b), 0)
3535
3636
3737 func p (b) = valueOrElse(getInteger(h, b), 0)
3838
3939
4040 func q (b) = valueOrElse(getBoolean(this, b), false)
4141
4242
4343 let r = 7
4444
4545 let s = 10
4646
4747 let t = a("conf_default_licence")
4848
4949 let u = a("conf_default_licence_hash")
5050
5151 let v = valueOrElse(getBoolean(g, "conf_dapp_is_running"), true)
5252
5353 let w = valueOrElse(getString(g, "conf_maintenance_msg"), "")
5454
5555 let x = "SUSPENDED"
5656
5757 let y = "REMOVED"
5858
5959 let z = "UNREGISTERED"
6060
6161 let A = "ALLOWED"
6262
6363 let B = n(("certification_fee_" + toBase58String(i)))
6464
6565 func C (D,E,F) = {
6666 let G = getString(e, ((("data_fc_" + D) + "_") + E))
6767 if ($isInstanceOf(G, "String"))
6868 then {
6969 let H = G
7070 if (contains(H, F))
7171 then true
7272 else false
7373 }
7474 else false
7575 }
7676
7777
7878 func I (J) = if (contains(J, "/"))
7979 then if (if ((76 > size(J)))
8080 then (size(split(J, "/")[0]) == 59)
8181 else false)
8282 then (16 > size(split(J, "/")[1]))
8383 else false
8484 else false
8585
8686
8787 func K (L) = (size(L) == 64)
8888
8989
9090 func M (N) = ("user_status_" + N)
9191
9292
9393 func O (N,P) = ((("art_date_" + P) + "_") + N)
9494
9595
9696 func Q (N,P) = ((("art_name_" + P) + "_") + N)
9797
9898
9999 func R (N,P) = ((("art_desc_" + P) + "_") + N)
100100
101101
102102 func S (N,P) = ((("art_display_cid_" + P) + "_") + N)
103103
104104
105105 func T (N,P) = ((("art_export_hash_" + P) + "_") + N)
106106
107107
108108 func U (N,P) = ((("art_export_cid_" + P) + "_") + N)
109109
110110
111111 func V (N,P) = ((("art_maxmint_" + P) + "_") + N)
112112
113113
114114 func W (N,P) = ((("art_signid_" + P) + "_") + N)
115115
116116
117117 func X (N,P) = ((("art_issued_" + P) + "_") + N)
118118
119119
120120 func Y (N,P) = ((("art_onsale_" + P) + "_") + N)
121121
122122
123123 func Z (N,P) = ((("art_licence_hash_" + P) + "_") + N)
124124
125125
126126 func aa (N,P) = ((("art_licence_cid_" + P) + "_") + N)
127127
128128
129129 func ab (N,P) = ((("art_tags_" + P) + "_") + N)
130130
131131
132132 func ac (N,P) = ((("art_type_" + P) + "_") + N)
133133
134134
135135 func ad (N,P) = ((("art_note_" + P) + "_") + N)
136136
137137
138138 func ae (N,P) = ((("art_crawler_cid_" + P) + "_") + N)
139139
140140
141141 func af (N,P) = ((("art_royalties_" + P) + "_") + N)
142142
143143
144144 func ag (N,P) = ((("art_price_" + P) + "_") + N)
145145
146146
147147 func ah (N,P) = ((("art_endsale_" + P) + "_") + N)
148148
149149
150150 func ai (N,P) = ((("art_assetAccepted_" + P) + "_") + N)
151151
152152
153153 func aj (N,P) = ((("art_flag_" + P) + "_") + N)
154154
155155
156156 func ak (al) = ("artist_agent_" + al)
157157
158158
159159 func am (al) = ("artist_agent_primary_" + al)
160160
161161
162162 func an (al) = ("artist_public_agent_" + al)
163163
164164
165165 func ao (al) = ("artist_public_agent_primary_" + al)
166166
167167
168168 func ap (N,aq) = ((("get_hashbytxidaddr_" + aq) + "_") + N)
169169
170170
171171 func ar (F) = ("get_owner_by_hash_" + F)
172172
173173
174174 func as (N,at) = ((("get_artidbysignid_" + at) + "_") + N)
175175
176176
177177 func au (F,N) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((F + N)))))
178178
179179
180180 func av (aw,ax,ay) = if (!(I(aw)))
181181 then throw("Wrong Display CID")
182182 else if (!(I(ax)))
183183 then throw("Wrong Export CID")
184184 else if (if ((ay != ""))
185185 then !(I(ay))
186186 else false)
187187 then throw("Wrong Licence CID")
188188 else true
189189
190190
191191 func az (aA,aB) = if (!(K(aA)))
192192 then throw("Export Hash 64 char. max")
193193 else if (!(K(aB)))
194194 then throw("Licence Hash 64 char. max")
195195 else true
196196
197197
198198 func aC (aD,aE) = if ((size(aD) == 0))
199199 then throw("Field cannot be is empty")
200200 else if ((size(aD) > aE))
201201 then throw((aD + " is too long"))
202202 else true
203203
204204
205205 func aF (N) = {
206206 let aG = valueOrElse(getString(g, M(N)), z)
207207 if (if ((aG == z))
208208 then true
209209 else (aG == A))
210210 then "Register this account first with \"Account\" tab"
211211 else if ((aG == x))
212212 then "Account suspended"
213213 else if ((aG == y))
214214 then "Account removed"
215215 else ""
216216 }
217217
218218
219219 func aH (ay,aB) = {
220220 let J = if ((size(ay) == 0))
221221 then t
222222 else ay
223223 let L = if ((size(aB) == 0))
224224 then u
225225 else aB
226226 $Tuple2(J, L)
227227 }
228228
229229
230230 func aI (N,aw,ax,aJ,aA,aK,aL,aM,aN,aO) = {
231231 let aP = aF(N)
232232 if ((aP != ""))
233233 then throw(aP)
234234 else if ((size(aw) == 0))
235235 then throw("Display CID cannot be empty")
236236 else if (!(av(aw, ax, aJ)))
237237 then throw("Problem with CID")
238238 else if (!(az(aA, aK)))
239239 then throw("Problem with Hashes")
240240 else if (!(aC(aL, 100)))
241241 then throw("100 Char. max name")
242242 else if (!(aC(aM, 1000)))
243243 then throw("1000 Char. max description")
244244 else if (if ((0 > aO))
245245 then true
246246 else (aO > 1000))
247247 then throw("Royalties cannot be less than 0% or higher than 10%")
248248 else if ((size(split(aN, ",")) > 5))
249249 then throw("5 tags max.")
250250 else ""
251251 }
252252
253253
254254 func aQ (aR) = if ((size(aR.payments) == 0))
255255 then throw("No payment attached")
256256 else {
257257 let aS = value(aR.payments[0])
258258 let aT = value(aS.amount)
259259 $Tuple2(aS, aT)
260260 }
261261
262262
263263 func aU (aR) = {
264264 let aV = aQ(aR)
265265 let aS = aV._1
266266 let aT = aV._2
267267 let aW = if (if (isDefined(aS.assetId))
268268 then (aS.assetId == i)
269269 else false)
270270 then aS.assetId
271271 else throw("Only SIGN token accepted as transaction fee")
272272 if ((aT != B))
273273 then throw(("Payment amount should be " + toString(B)))
274274 else $Tuple2(aT, aW)
275275 }
276276
277277
278278 func aX (aY,P) = {
279279 let G = getInteger(this, X(aY, P))
280280 if ($isInstanceOf(G, "Int"))
281281 then {
282282 let aZ = G
283283 if ((aZ != 0))
284284 then true
285285 else false
286286 }
287287 else false
288288 }
289289
290290
291291 func ba (aR,bb,bc) = {
292292 let bd = aQ(aR)
293293 let aS = bd._1
294294 let aT = bd._2
295295 let aW = if (!(isDefined(aS.assetId)))
296296 then unit
297297 else if (if ((size(bb) > 0))
298298 then (toBase58String(value(aS.assetId)) == bb)
299299 else false)
300300 then aS.assetId
301301 else throw("Wrong asset id")
302302 if (if ((aW == unit))
303303 then (bb != "")
304304 else false)
305305 then throw("Wrong asset id")
306306 else if ((bc != aT))
307307 then throw("Payment don't match")
308308 else $Tuple2(aT, aW)
309309 }
310310
311311
312312 func be (aW) = if (if (if (if (if ((aW != toBase58String(i)))
313313 then (aW != toBase58String(l))
314314 else false)
315315 then (aW != "WAVES")
316316 else false)
317317 then (aW != toBase58String(j))
318318 else false)
319319 then (aW != toBase58String(k))
320320 else false)
321321 then throw("Only SIGN, USDN,USDT or WAVES accepted")
322322 else true
323323
324324
325325 func bf (aW,bg) = {
326326 let bh = if (c)
327327 then 10
328328 else n("waves_min_sell")
329329 let bi = 1000000
330330 let bj = if (c)
331331 then 1
332332 else (B * 2)
333333 if (if (if (if (if (if ((aW == toBase58String(j)))
334334 then (bi > bg)
335335 else false)
336336 then (bg != 0)
337337 else false)
338338 then true
339339 else if (if ((aW == toBase58String(k)))
340340 then (bi > bg)
341341 else false)
342342 then (bg != 0)
343343 else false)
344344 then true
345345 else if (if ((aW == toBase58String(i)))
346346 then (bj > bg)
347347 else false)
348348 then (bg != 0)
349349 else false)
350350 then true
351351 else if (if (if ((aW == toBase58String(l)))
352352 then true
353353 else (aW == "WAVES"))
354354 then (bh > bg)
355355 else false)
356356 then (bg != 0)
357357 else false)
358358 then throw("Wrong minimum sell price")
359359 else true
360360 }
361361
362362
363363 func bk (aW) = if ((aW == "WAVES"))
364364 then unit
365365 else fromBase58String(aW)
366366
367367
368368 func bl (bm) = {
369369 let bn = a((bm + "_OPEN"))
370370 if ((bn == ""))
371371 then throw("Bid not found")
372372 else {
373373 let bo = split(bn, "_")
374374 let bp = parseIntValue(bo[1])
375375 let bq = bk(bo[0])
376376 if ((0 >= bp))
377377 then throw("Wrong amount")
378378 else $Tuple2(bp, bq)
379379 }
380380 }
381381
382382
383383 func br (aR,bs) = if (!(v))
384384 then throw(w)
385385 else {
386386 let bt = if ((bs != ""))
387387 then valueOrElse(p((toString(addressFromPublicKey(fromBase58String(bs))) + "_free_txs")), 0)
388388 else 0
389389 if ((bt == bt))
390390 then {
391391 let N = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
392392 then (bt > 0)
393393 else false)
394394 then toString(addressFromPublicKey(fromBase58String(bs)))
395395 else toBase58String(aR.caller.bytes)
396396 let bu = if (if ((bs != ""))
397397 then (bt > 0)
398398 else false)
399399 then invoke(h, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
400400 else unit
401401 if ((bu == bu))
402- then if (true)
403- then throw(toString((bt > 0)))
404- else $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
402+ then $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
405403 else throw("Strict value is not equal to itself.")
406404 }
407405 else throw("Strict value is not equal to itself.")
408406 }
409407
410408
411409 func bv (aR) = if (!(v))
412410 then throw(w)
413411 else $Tuple3(toBase58String(aR.transactionId), toBase58String(aR.caller.bytes), lastBlock.timestamp)
414412
415413
416414 func bw (aR,P,bx,by,bz,bs) = {
417415 let bA = br(aR, bs)
418416 let bB = bA._1
419417 let N = bA._2
420418 let bC = bA._3
421419 let bt = bA._4
422420 if (true)
423- then throw(((toString((toBase58String(aR.caller.bytes) == toString(this))) + " / ") + toString(bt)))
421+ then throw(toString(bt))
424422 else {
425423 let bD = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
426424 then bt
427425 else false)
428426 then toString(addressFromPublicKey(fromBase58String(bs)))
429427 else toBase58String(aR.caller.bytes)
430428 if (true)
431429 then throw(((((((bD + " / ") + bx) + " / ") + bz) + " / ") + bs))
432430 else {
433431 let bE = if (if (if ((N == bx))
434432 then (bz != "")
435433 else false)
436434 then (by != "")
437435 else false)
438436 then true
439437 else false
440438 let bF = o(ah(N, P))
441439 if (if (if ((bF != 0))
442440 then (height >= bF)
443441 else false)
444442 then !(bE)
445443 else false)
446444 then throw("Sale ended.")
447445 else {
448446 let bG = (N == bx)
449447 let bH = o("total_nft_issued")
450448 let D = a(W(bx, P))
451449 let bI = a(Q(bx, P))
452450 if ((bI == ""))
453451 then throw("Art doesn't exist")
454452 else {
455453 let bJ = q(Y(bx, P))
456454 let bK = o(X(bx, P))
457455 let bc = if (bG)
458456 then (B * 2)
459457 else o(ag(bx, P))
460458 let bb = if (bG)
461459 then toBase58String(i)
462460 else a(ai(bx, P))
463461 let bL = o(V(bx, P))
464462 if (if (if (!(bE))
465463 then !(bG)
466464 else false)
467465 then if (if ((0 >= bc))
468466 then true
469467 else !(bJ))
470468 then true
471469 else (0 >= bL)
472470 else false)
473471 then throw("Art not for sale")
474472 else if (if (if (!(bE))
475473 then bG
476474 else false)
477475 then (0 >= bL)
478476 else false)
479477 then throw("Max issuable not set")
480478 else {
481479 let aP = aF(bx)
482480 if (if (bE)
483481 then (aP != "")
484482 else false)
485483 then throw(aP)
486484 else {
487485 let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
488486 let bM = if (bE)
489487 then bl(bm)
490488 else ba(aR, bb, bc)
491489 let aT = bM._1
492490 let aW = bM._2
493491 let bN = valueOrElse(getString(g, ak(bx)), f)
494492 let bO = valueOrElse(getInteger(g, am(bx)), 0)
495493 let bP = valueOrElse(getString(g, an(bx)), f)
496494 let bQ = valueOrElse(getInteger(g, ao(bx)), 0)
497495 let bR = p(bx)
498496 let bS = if ((bR > height))
499497 then 0
500498 else if ((aW == i))
501499 then r
502500 else s
503501 let bT = fraction(aT, bS, 100)
504502 let bU = if (if (if ((bN != f))
505503 then (bO > 0)
506504 else false)
507505 then (height > bR)
508506 else false)
509507 then fraction(aT, bO, 10000)
510508 else 0
511509 let bV = if (if (if ((bP != f))
512510 then (bQ > 0)
513511 else false)
514512 then (height > bR)
515513 else false)
516514 then fraction(aT, bQ, 10000)
517515 else 0
518516 let bW = (aT - bT)
519517 if ((bK == bL))
520518 then throw("Art sold out")
521519 else {
522520 let bX = (bK + 1)
523521 let bY = ((((((((((("Creator: " + bx) + ",
524522 ArtID: ") + P) + ",
525523 SignID: ") + D) + ",
526524 Artwork name: ") + bI) + ",
527525 Issue: ") + toString(bX)) + "/") + toString(bL))
528526 let bZ = Issue(("SA_" + toString((bH + 1))), bY, 1, 0, false)
529527 let ca = calculateAssetId(bZ)
530528 let cb = if (if ((bX == bL))
531529 then true
532530 else !(bJ))
533531 then false
534532 else true
535533 let cc = if (if (if ((N == bx))
536534 then (bz != "")
537535 else false)
538536 then (by != "")
539537 else false)
540538 then addressFromStringValue(bz)
541539 else aR.caller
542540 let cd = if (!(isDefined(aW)))
543541 then "WAVES"
544542 else toBase58String(value(aW))
545543 let bn = a((bm + "_OPEN"))
546544 let ce = DeleteEntry((bm + "_OPEN"))
547545 let cf = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
548546 let cg = ((((((("art_sold_" + toString(bX)) + "_of_") + toString(bL)) + "_") + P) + "_") + bx)
549547 let ch = if (!(bE))
550548 then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(ca))
551549 else ((((((((((toString(cc) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cd) + "_") + toBase58String(ca))
552550 let ci = StringEntry(cg, ch)
553551 let cj = if ((bU != 0))
554552 then [ScriptTransfer(Address(fromBase58String(f)), (bT - bU), aW), ScriptTransfer(Address(fromBase58String(bN)), bU, aW)]
555553 else [ScriptTransfer(Address(fromBase58String(f)), bT, aW)]
556554 let ck = if ((bV != 0))
557555 then [ScriptTransfer(Address(fromBase58String(bP)), bV, aW), ScriptTransfer(Address(fromBase58String(bx)), (bW - bV), aW)]
558556 else [ScriptTransfer(Address(fromBase58String(bx)), bW, aW)]
559557 let cl = if (bt)
560558 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
561559 else nil
562560 let cm = ((([IntegerEntry(X(bx, P), bX), StringEntry(("nft_" + toBase58String(ca)), cg), IntegerEntry("total_nft_issued", (bH + 1)), IntegerEntry(ah(bx, P), 0), BooleanEntry(Y(bx, P), cb), bZ, ScriptTransfer(cc, 1, ca)] ++ cj) ++ ck) ++ cl)
563561 if (bE)
564562 then [ci, cf, ce] :: cm
565563 else ci :: cm
566564 }
567565 }
568566 }
569567 }
570568 }
571569 }
572570 }
573571 }
574572
575573
576574 func cn (co) = {
577575 let G = co
578576 if ($isInstanceOf(G, "String"))
579577 then {
580578 let cp = G
581579 cp
582580 }
583581 else throw("Sponsored Public Key String expected")
584582 }
585583
586584
587585 @Callable(cq)
588586 func setConf (b,cr) = {
589587 let N = toString(cq.caller)
590588 if (containsElement([m, toString(this)], N))
591589 then if (contains(b, "conf_"))
592590 then [StringEntry(b, cr)]
593591 else throw("Entries starting with conf_ only")
594592 else throw("You are not allowed to change this")
595593 }
596594
597595
598596
599597 @Callable(aR)
600598 func addArtwork (F,D,aL,aM,aN,cs,aw,aA,ax,aB,ay,ct,aO,bs) = {
601599 let cu = br(aR, bs)
602600 let P = cu._1
603601 let N = cu._2
604602 let bC = cu._3
605603 let bt = cu._4
606604 if (!(K(F)))
607605 then throw("Hash should be 64 characters maximum")
608606 else {
609607 let cv = aH(ay, aB)
610608 let aJ = cv._1
611609 let aK = cv._2
612610 let cw = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
613611 if ((cw != ""))
614612 then throw("Something went wrong!")
615613 else {
616614 let cx = (p((N + "_free_drops")) > 0)
617615 let cy = if (cx)
618616 then $Tuple2(0, D)
619617 else aU(aR)
620618 let aT = cy._1
621619 let aW = cy._2
622620 if (!(isDefined(aT)))
623621 then throw("Something went wrong")
624622 else {
625623 let cz = a(au(F, N))
626624 if ((cz != ""))
627625 then throw("You already added it")
628626 else {
629627 let cA = a(ar(F))
630628 if ((cA != ""))
631629 then throw("Hash already registered")
632630 else {
633631 let cB = C(D, N, F)
634632 if (!(cB))
635633 then throw("Sign Certificate not found for this address.")
636634 else {
637635 let cC = if (cx)
638636 then invoke(h, "useFreeDrop", [N], nil)
639637 else unit
640638 if ((cC == cC))
641639 then {
642640 let cl = if (bt)
643641 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
644642 else nil
645643 ([StringEntry(ar(F), N), StringEntry(au(F, N), P), IntegerEntry(O(N, P), bC), StringEntry(Q(N, P), aL), StringEntry(R(N, P), aM), StringEntry(S(N, P), aw), StringEntry(U(N, P), ax), StringEntry(T(N, P), aA), StringEntry(Z(N, P), aK), StringEntry(aa(N, P), aJ), StringEntry(ac(N, P), cs), StringEntry(ab(N, P), aN), IntegerEntry(V(N, P), 0), StringEntry(W(N, P), D), IntegerEntry(X(N, P), 0), BooleanEntry(Y(N, P), false), StringEntry(as(N, D), P), StringEntry(ap(N, P), F), StringEntry(ae(N, P), ct), IntegerEntry(af(N, P), aO), ScriptTransfer(Address(fromBase58String(f)), aT, i)] ++ cl)
646644 }
647645 else throw("Strict value is not equal to itself.")
648646 }
649647 }
650648 }
651649 }
652650 }
653651 }
654652 }
655653
656654
657655
658656 @Callable(aR)
659657 func updateArtwork (aq,aL,aM,aN,cs,aw,aA,ax,aB,ay,ct,aO,bs) = if (!(v))
660658 then throw(w)
661659 else {
662660 let cD = br(aR, bs)
663661 let bB = cD._1
664662 let N = cD._2
665663 let bC = cD._3
666664 let bt = cD._4
667665 let cE = aH(ay, aB)
668666 let aJ = cE._1
669667 let aK = cE._2
670668 let cw = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
671669 if ((cw != ""))
672670 then throw("Something went wrong!")
673671 else {
674672 let cz = a(Q(N, aq))
675673 if ((cz == ""))
676674 then throw("Entry not found")
677675 else {
678676 let cF = a(aj(N, aq))
679677 if ((cF == "ILLEGAL"))
680678 then throw("Cannot update ILLEGAL artwork")
681679 else if (!(aX(N, aq)))
682680 then {
683681 let cl = if (bt)
684682 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
685683 else nil
686684 ([StringEntry(Q(N, aq), aL), StringEntry(R(N, aq), aM), StringEntry(S(N, aq), aw), StringEntry(U(N, aq), ax), StringEntry(T(N, aq), aA), StringEntry(aa(N, aq), aJ), StringEntry(Z(N, aq), aK), StringEntry(ab(N, aq), aN), StringEntry(ac(N, aq), cs), StringEntry(ae(N, aq), ct), IntegerEntry(af(N, aq), aO)] ++ cl)
687685 }
688686 else throw("Already minted")
689687 }
690688 }
691689 }
692690
693691
694692
695693 @Callable(aR)
696694 func flagArtwork (P,cG,cF,cH) = {
697695 let cI = bv(aR)
698696 let bB = cI._1
699697 let N = cI._2
700698 if (containsElement([m, toString(this)], N))
701699 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cF))
702700 then [StringEntry(aj(cG, P), cF), StringEntry(ad(cG, P), cH)]
703701 else throw(("Unknow status " + cF))
704702 else throw("You are not allowed")
705703 }
706704
707705
708706
709707 @Callable(aR)
710708 func deleteArtwork (P,cG) = {
711709 let cJ = bv(aR)
712710 let bB = cJ._1
713711 let N = cJ._2
714712 let aY = if (containsElement([m, toString(this)], N))
715713 then cG
716714 else N
717715 let cz = valueOrErrorMessage(a(Q(aY, P)), "No art matching for this address")
718716 if ((cz == ""))
719717 then throw("No art matching for this address")
720718 else {
721719 let F = a(ap(aY, P))
722720 if ((F == ""))
723721 then throw("No art hash matching for this address")
724722 else {
725723 let D = a(W(aY, P))
726724 if ((D == ""))
727725 then throw("No SIGN ID matching")
728726 else {
729727 let cK = [DeleteEntry(O(aY, P)), DeleteEntry(Q(aY, P)), DeleteEntry(R(aY, P)), DeleteEntry(S(aY, P)), DeleteEntry(U(aY, P)), DeleteEntry(T(aY, P)), DeleteEntry(Z(aY, P)), DeleteEntry(aa(aY, P)), DeleteEntry(ac(aY, P)), DeleteEntry(ab(aY, P)), DeleteEntry(V(aY, P)), DeleteEntry(W(aY, P)), DeleteEntry(X(aY, P)), DeleteEntry(Y(aY, P)), DeleteEntry(aj(aY, P)), DeleteEntry(ag(aY, P)), DeleteEntry(ai(aY, P)), DeleteEntry(ar(F)), DeleteEntry(as(aY, D)), DeleteEntry(au(F, aY)), DeleteEntry(ah(aY, P)), DeleteEntry(ad(aY, P)), DeleteEntry(ae(aY, P)), DeleteEntry(af(aY, P))]
730728 if (!(aX(aY, P)))
731729 then if (!(v))
732730 then throw(w)
733731 else cK
734732 else if (containsElement([m, toString(this)], N))
735733 then cK
736734 else throw("Art already minted, you cannot delete it")
737735 }
738736 }
739737 }
740738 }
741739
742740
743741
744742 @Callable(aR)
745743 func sellArtwork (P,bg,cL,aW,bF,bs) = {
746744 let cM = br(aR, bs)
747745 let bB = cM._1
748746 let N = cM._2
749747 let bC = cM._3
750748 let bt = cM._4
751749 let bI = a(Q(N, P))
752750 if ((bI == ""))
753751 then throw("This art doesn't match your account")
754752 else {
755753 let cF = a(aj(N, P))
756754 if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cF))
757755 then throw("Flagged artwork")
758756 else {
759757 let cN = o(("current_bidamount_" + P))
760758 if ((0 > bF))
761759 then throw("Negative end")
762760 else if (if ((bF > 0))
763761 then if ((cL != 1))
764762 then true
765763 else (bg != 0)
766764 else false)
767765 then throw("Timed offer only allowed for unique edition and offer only")
768766 else {
769767 let cO = if ((bF == 0))
770768 then 0
771769 else height
772770 if (!(be(aW)))
773771 then throw("Something went wrong!")
774772 else if (!(bf(aW, bg)))
775773 then throw("Something went wrong!")
776774 else {
777775 let aP = aF(N)
778776 if ((aP != ""))
779777 then throw(aP)
780778 else {
781779 let bK = o(X(N, P))
782780 let bL = o(V(N, P))
783781 if ((cL > 100))
784782 then throw("100 editions max per artwork")
785783 else if (if ((bK != 0))
786784 then (bK == bL)
787785 else false)
788786 then throw("Max edition reached.")
789787 else if (if ((bK > 0))
790788 then (bL != cL)
791789 else false)
792790 then throw("Cannot change maximum issuable anymore")
793791 else if (if ((cN > 0))
794792 then (bL != cL)
795793 else false)
796794 then throw("Cannot change maximum issuable with active orders")
797795 else {
798796 let cb = if (if ((bg > 0))
799797 then (cL > 0)
800798 else false)
801799 then true
802800 else false
803801 let cl = if (bt)
804802 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
805803 else nil
806804 ([BooleanEntry(Y(N, P), cb), IntegerEntry(ag(N, P), bg), IntegerEntry(V(N, P), cL), StringEntry(ai(N, P), aW), IntegerEntry(ah(N, P), (cO + bF))] ++ cl)
807805 }
808806 }
809807 }
810808 }
811809 }
812810 }
813811 }
814812
815813
816814
817815 @Callable(aR)
818816 func buyArtwork (P,bx) = bw(aR, P, bx, "", "", "")
819817
820818
821819
822820 @Callable(aR)
823821 func setBid (P,bx) = {
824822 let cP = bv(aR)
825823 let bB = cP._1
826824 let N = cP._2
827825 let bC = cP._3
828826 let cQ = aQ(aR)
829827 let aS = cQ._1
830828 let aT = cQ._2
831829 let aW = if (!(isDefined(aS.assetId)))
832830 then "WAVES"
833831 else toBase58String(value(aS.assetId))
834832 let bF = o(ah(bx, P))
835833 if (if ((bF != 0))
836834 then (height >= bF)
837835 else false)
838836 then throw("Sale ended.")
839837 else {
840838 let cN = o(("current_bidamount_" + P))
841839 if (!(be(aW)))
842840 then throw("asset not accepted")
843841 else if (!(bf(aW, aT)))
844842 then throw("Wrong min sell")
845843 else {
846844 let bK = o(X(bx, P))
847845 let bL = o(V(bx, P))
848846 if ((0 >= bL))
849847 then throw("No max edition set for this artwork")
850848 else if ((bK >= bL))
851849 then throw("Sold out, you cannot bid")
852850 else [StringEntry((((((((("bid_" + P) + "_") + bx) + "_") + N) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cN + 1))]
853851 }
854852 }
855853 }
856854
857855
858856
859857 @Callable(aR)
860858 func acceptBid (P,bx,by,bz,bs) = {
861859 let cR = br(aR, bs)
862860 let bB = cR._1
863861 let cS = cR._2
864862 let bC = cR._3
865863 let bt = cR._4
866864 if ((cS != bx))
867865 then throw("You cannot do this action")
868866 else bw(aR, P, bx, by, bz, bs)
869867 }
870868
871869
872870
873871 @Callable(aR)
874872 func cancelBid (P,bx,by,bz) = {
875873 let cT = bv(aR)
876874 let bB = cT._1
877875 let N = cT._2
878876 let bC = cT._3
879877 if (if ((N != bz))
880878 then (N != bx)
881879 else false)
882880 then throw("You cannot do this action")
883881 else {
884882 let cU = if ((N == bx))
885883 then bz
886884 else N
887885 let cN = o(("current_bidamount_" + P))
888886 let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
889887 let bn = a((bm + "_OPEN"))
890888 if ((bn == ""))
891889 then throw("Bid not found")
892890 else {
893891 let bo = split(bn, "_")
894892 let aW = bk(bo[0])
895893 let cV = "CANCELED"
896894 [DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cV), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cN - 1)), ScriptTransfer(Address(fromBase58String(cU)), parseIntValue(bo[1]), aW)]
897895 }
898896 }
899897 }
900898
901899
902900 @Verifier(cW)
903901 func cX () = {
904902 let G = cW
905903 if ($isInstanceOf(G, "InvokeScriptTransaction"))
906904 then {
907905 let cY = G
908906 if (if (if (if ((cY.function == "addArtwork"))
909907 then (cY.dApp == this)
910908 else false)
911909 then (cY.fee == 500000)
912910 else false)
913911 then (cY.feeAssetId == unit)
914912 else false)
915913 then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[13])))
916914 else if (if (if (if ((cY.function == "updateArtwork"))
917915 then (cY.dApp == this)
918916 else false)
919917 then (cY.fee == 500000)
920918 else false)
921919 then (cY.feeAssetId == unit)
922920 else false)
923921 then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[12])))
924922 else if (if (if (if ((cY.function == "sellArtwork"))
925923 then (cY.dApp == this)
926924 else false)
927925 then (cY.fee == 500000)
928926 else false)
929927 then (cY.feeAssetId == unit)
930928 else false)
931929 then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[5])))
932930 else if (if (if (if ((cY.function == "acceptBid"))
933931 then (cY.dApp == this)
934932 else false)
935933 then (cY.fee == 500000)
936934 else false)
937935 then (cY.feeAssetId == unit)
938936 else false)
939937 then sigVerify_128Kb(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[4])))
940938 else sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
941939 }
942940 else sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
943941 }
944942

github/deemru/w8io/169f3d6 
90.84 ms