tx · H6SZ9uWouiSCzv5Z9W6tuL1NQUoYqXGifXkyqDUVcLnB

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.01900000 Waves

2023.03.24 06:51 [2503570] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "H6SZ9uWouiSCzv5Z9W6tuL1NQUoYqXGifXkyqDUVcLnB", "fee": 1900000, "feeAssetId": null, "timestamp": 1679629944401, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "2ZcUYkiFfrte5ScMxAn3uXJhTEbcvqFqHj6hp4Q1ztvnCxLBBuZ7BQU1t2umx3sMxGNJZxYcBAyANogHJVW85w4P" ], "script": "base64:BgKKFQgCEgQKAggIEhAKDggICAgICAgICAgICAEIEg8KDQgICAgICAgICAgIAQgSBgoECAgICBIECgIICBIICgYIAQEIAQgSBAoCCAgSBAoCCAgSBwoFCAgICAgSBgoECAgICCIOZ2V0U3RyaW5nQnlLZXkiA2tleSIIdW5pdFRlc3QiCW9yYWNsZUZlZSIIc2lnbkRhcHAiC2ZlZVJlY2VpdmVyIgh1c2VyRGFwcCINd2hpdGVsaXN0RGFwcCILc2lnbkFzc2V0SWQiC3VzZG5Bc3NldElkIgt1c2R0QXNzZXRJZCIMd2F2ZXNBc3NldElkIgVjaHJpcyIZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZSIPZ2V0SW50ZWdlckJ5S2V5Ig5jaGVja1doaXRlbGlzdCIPZ2V0Qm9vbGVhbkJ5S2V5IgdzaWduQ3V0Igt1c2RuV2F2ZUN1dCIOZGVmYXVsdExpY2VuY2UiEmRlZmF1bHRIYXNoTGljZW5jZSILZGFwcFJ1bm5pbmciDm1haW50ZW5hbmNlTVNHIg11c2VyU3VzcGVuZGVkIgt1c2VyUmVtb3ZlZCIQdXNlclVucmVnaXN0ZXJlZCILdXNlckFsbG93ZWQiGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UiFGNoZWNrU2lnbkNlcnRpZmljYXRlIgZzaWduSUQiBU93bmVyIgpzaGEyNTZIYXNoIgckbWF0Y2gwIgFhIgt2YWxpZGF0ZUNJRCIDY2lkIgx2YWxpZGF0ZUhhc2giBGhhc2giDWtleVVzZXJTdGF0dXMiBmNhbGxlciIHa2V5RGF0ZSIFYXJ0SWQiB2tleU5hbWUiB2tleURlc2MiDWtleURpc3BsYXlDaWQiDWtleUV4cG9ydEhhc2giDGtleUV4cG9ydENpZCIKa2V5TWF4TWludCIJa2V5U2lnbklEIglrZXlJc3N1ZWQiCWtleU9uU2FsZSIOa2V5TGljZW5jZUhhc2giDWtleUxpY2VuY2VDaWQiB2tleVRhZ3MiB2tleVR5cGUiB2tleU5vdGUiCmtleUNyYXdsZXIiDGtleVJveWFsdGllcyIIa2V5UHJpY2UiCmtleUVuZFNhbGUiEmtleUFzc2V0SWRBY2NlcHRlZCIHa2V5RmxhZyISa2V5QXJ0aXN0QWdlbnRBZGRyIgphcnRpc3RBZGRyIhRrZXlQcmltYXJ5U2hhcmVBZ2VudCIYa2V5QXJ0aXN0UHVibGljQWdlbnRBZGRyIhprZXlQcmltYXJ5U2hhcmVQdWJsaWNBZ2VudCIRa2V5SGFzaEJ5VHhpZEFkZHIiBHR4aWQiDmtleU93bmVyQnlIYXNoIg1rZXlpZEJ5U2lnbmlkIgZzaWduSWQiEmtleVR4aWRCeUhhc2hPd25lciIOdmFsaWRhdGVBbGxDSUQiCmNpZERpc3BsYXkiCWNpZEV4cG9ydCIKY2lkTGljZW5jZSIPdmFsaWRhdGVBbGxIYXNoIgxzaGEyNTZFeHBvcnQiDXNoYTI1NkxpY2VuY2UiDnZhbGlkYXRlU3RyaW5nIgNzdHIiA21heCIMdmFsaWRhdGVVc2VyIgp1c2VyU3RhdHVzIgpzZXRMSWNlbmNlIhN2YWxpZGF0ZUFydHdvcmtEYXRhIgpsaWNlbmNlQ0lEIgtsaWNlbmNlSGFzaCIEbmFtZSILZGVzY3JpcHRpb24iBHRhZ3MiCXJveWFsdGllcyIJY2hlY2tVc2VyIglpc1BheW1lbnQiAWkiB3BheW1lbnQiBmFtb3VudCIPdmFsaWRhdGVQYXltZW50IgskdDA5MTgwOTIxNiIHYXNzZXRJZCILaXNBcnRNaW50ZWQiCWFkZHJUb1VzZSIBYiIUdmFsaWRhdGVQcmljZUFzc2V0SWQiDHByaWNlQXNzZXRJZCIMYXJ0d29ya1ByaWNlIgskdDA5ODA0OTg0MCIQYWNjZXB0ZWRBc3NldElkcyIPdmFsaWRhdGVNaW5TZWxsIgVwcmljZSIMbWluU2VsbFdhdmVzIgttaW5TZWxsVXNkbiILbWluU2VsbFNpZ24iDWdldEJpZEFzc2V0SWQiFmdldFByaWNlQXNzZXRJZEZyb21CaWQiCmJpZERhdGFLZXkiB2JpZERhdGEiCmJpZERhdGFBcnIiCWJpZEFtb3VudCIKYmlkQXNzZXRJZCIVaWRDYWxsZXJEYXRlU3BvbnNvcmVkIgZwdWJLZXkiC2lzU3BvbnNvcmVkIhNnZXRfc3BvbnNvcmVkX3dhdmVzIgxpZENhbGxlckRhdGUiB2J1eU1pbnQiBmlzc3VlciIFYmlkSWQiCGJpZE93bmVyIg0kdDAxMzA5NjEzMTY2IgJpZCIEZGF0ZSIKbmV3X2NhbGxlciIFaXNCaWQiCGJsb2NrRW5kIg5jYWxsZXJJc0lzc3VlciIIdG90YWxORlQiC2FydHdvcmtOYW1lIghpc09uU2FsZSIKYW1vdW50U29sZCIKbWF4Q2FuU2VsbCINJHQwMTUxMDgxNTMwMCIFYWdlbnQiCmFnZW50U2hhcmUiC3B1YmxpY0FnZW50IhBwdWJsaWNBZ2VudFNoYXJlIg1pc1doaXRlbGlzdGVkIgNjdXQiDWFtb3VudEZvclNpZ24iDmFtb3VudEZvckFnZW50IhRhbW91bnRGb3JQdWJsaWNBZ2VudCIQYW1vdW50Rm9yQ3JlYXRvciINbmV3QW1vdW50U29sZCIJaXNzdWVNZXRhIghpc3N1ZU5GVCIFaWRORlQiCnNlbGxTdGF0dXMiCnJlY2VpdmVORlQiCmFzc2V0SWRCaWQiCWJpZERlbE9sZCIJYmlkVXBkYXRlIgdzb2xkS2V5Iglzb2xkVmFsdWUiCHNvbGREYXRhIhRjb21taXNzaW9uc1dpdGhBZ2VudCIaY29tbWlzc2lvbnNXaXRoUHVibGljQWdlbnQiCnR4VG9DYWxsZXIiBmJ1eVJlcyIIYXNTdHJpbmciAmJ2IgNidjAiBmludm9rZSIDdmFsIgR0eXBlIgdjcmF3bGVyIg0kdDAyMDQ3NjIwNTQ5Ig0kdDAyMDY1MDIwNzE5Ig92YWxpZGF0ZUFydHdvcmsiEHdoaXRlbGlzdGVkX2Ryb3AiDSR0MDIxMDE4MjExMDIiCmVudHJ5RXhpc3QiCWhhc2hFeGlzdCIPaXNTaWduQ2VydGlmaWVkIhdkZWNyZWFzZV93aGl0ZWxpc3RfZHJvcCINJHQwMjQxMzYyNDIwNiINJHQwMjQyMTYyNDI4NSIEZmxhZyIEYWRkciIEbm90ZSINJHQwMjU5MTIyNTk0NiINJHQwMjYzODIyNjQxNiIMZGF0YVRvRGVsZXRlIgdtYXhNaW50Ig0kdDAyOTI1MjI5MzIyIgZiaWROYnIiCmJhc2VIZWlnaHQiDSR0MDMxNzA0MzE3NDQiDSR0MDMxNzQ5MzE3ODUiDSR0MDMzMDA1MzMwNzYiB2NhbGxlcjEiDSR0MDMzMzExMzMzNzIiDXJldHVybk1vbmV5VG8iCWJpZFN0YXR1cyICdHgiCHZlcmlmaWVyIgNpbnZOAQFhAQFiCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAWICAAABYwcAAWQJAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX29yYWNsZV9mZWUAAWUJAQV2YWx1ZQEJAKYIAQkBAWEBAhFjb25mX3NpZ253ZWJfZGFwcAABZgkBAWEBAhFjb25mX2ZlZV9yZWNlaXZlcgABZwMFAWMJAQV2YWx1ZQEJAKYIAQIjM010NFJHTUV5alNXWUFvY1RQcWQ1NXdkSFFRQjNQVTJVQ20JAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX3VzZXJzX2RhcHAAAWgJAQV2YWx1ZQEJAKYIAQkBAWEBAhNjb25mX3doaXRlbGlzdF9kYXBwAAFpCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9TSUdOAAFqCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0ROAAFrCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0RUAAFsAQAAAW0JAQFhAQIMY29uZl9hZG1pbl8xAQFuAQFiCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUBZAUBYgIfSW50ZWdlciB1bmRlZmluZSBvciAwIGluIG9yYWNsZQEBbwEBYgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFiAAABAXABAWIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBaAUBYgAAAQFxAQFiCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFAWIHAAFyAAcAAXMACgABdAkBAWEBAhRjb25mX2RlZmF1bHRfbGljZW5jZQABdQkBAWEBAhljb25mX2RlZmF1bHRfbGljZW5jZV9oYXNoAAF2CQELdmFsdWVPckVsc2UCCQCbCAIFAWcCFGNvbmZfZGFwcF9pc19ydW5uaW5nBgABdwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQFnAhRjb25mX21haW50ZW5hbmNlX21zZwIAAAF4AglTVVNQRU5ERUQAAXkCB1JFTU9WRUQAAXoCDFVOUkVHSVNURVJFRAABQQIHQUxMT1dFRAABQgkBAW4BCQCsAgICEmNlcnRpZmljYXRpb25fZmVlXwkA2AQBBQFpAQFDAwFEAUUBRgQBRwkAnQgCBQFlCQCsAgIJAKwCAgkArAICAghkYXRhX2ZjXwUBRAIBXwUBRQMJAAECBQFHAgZTdHJpbmcEAUgFAUcDCQEIY29udGFpbnMCBQFIBQFGBgcHAQFJAQFKAwkBCGNvbnRhaW5zAgUBSgIBLwMDCQBmAgBMCQCxAgEFAUoJAAACCQCxAgEJAJEDAgkAtQkCBQFKAgEvAAAAOwcJAGYCABAJALECAQkAkQMCCQC1CQIFAUoCAS8AAQcHAQFLAQFMCQAAAgkAsQIBBQFMAEABAU0BAU4JAKwCAgIMdXNlcl9zdGF0dXNfBQFOAQFPAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9kYXRlXwUBUAIBXwUBTgEBUQIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfbmFtZV8FAVACAV8FAU4BAVICAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X2Rlc2NfBQFQAgFfBQFOAQFTAgFOAVAJAKwCAgkArAICCQCsAgICEGFydF9kaXNwbGF5X2NpZF8FAVACAV8FAU4BAVQCAU4BUAkArAICCQCsAgIJAKwCAgIQYXJ0X2V4cG9ydF9oYXNoXwUBUAIBXwUBTgEBVQIBTgFQCQCsAgIJAKwCAgkArAICAg9hcnRfZXhwb3J0X2NpZF8FAVACAV8FAU4BAVYCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X21heG1pbnRfBQFQAgFfBQFOAQFXAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9zaWduaWRfBQFQAgFfBQFOAQFYAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9pc3N1ZWRfBQFQAgFfBQFOAQFZAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9vbnNhbGVfBQFQAgFfBQFOAQFaAgFOAVAJAKwCAgkArAICCQCsAgICEWFydF9saWNlbmNlX2hhc2hfBQFQAgFfBQFOAQJhYQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfbGljZW5jZV9jaWRfBQFQAgFfBQFOAQJhYgIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfdGFnc18FAVACAV8FAU4BAmFjAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF90eXBlXwUBUAIBXwUBTgECYWQCAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X25vdGVfBQFQAgFfBQFOAQJhZQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfY3Jhd2xlcl9jaWRfBQFQAgFfBQFOAQJhZgIBTgFQCQCsAgIJAKwCAgkArAICAg5hcnRfcm95YWx0aWVzXwUBUAIBXwUBTgECYWcCAU4BUAkArAICCQCsAgIJAKwCAgIKYXJ0X3ByaWNlXwUBUAIBXwUBTgECYWgCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X2VuZHNhbGVfBQFQAgFfBQFOAQJhaQIBTgFQCQCsAgIJAKwCAgkArAICAhJhcnRfYXNzZXRBY2NlcHRlZF8FAVACAV8FAU4BAmFqAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9mbGFnXwUBUAIBXwUBTgECYWsBAmFsCQCsAgICDWFydGlzdF9hZ2VudF8FAmFsAQJhbQECYWwJAKwCAgIVYXJ0aXN0X2FnZW50X3ByaW1hcnlfBQJhbAECYW4BAmFsCQCsAgICFGFydGlzdF9wdWJsaWNfYWdlbnRfBQJhbAECYW8BAmFsCQCsAgICHGFydGlzdF9wdWJsaWNfYWdlbnRfcHJpbWFyeV8FAmFsAQJhcAIBTgJhcQkArAICCQCsAgIJAKwCAgITZ2V0X2hhc2hieXR4aWRhZGRyXwUCYXECAV8FAU4BAmFyAQFGCQCsAgICEmdldF9vd25lcl9ieV9oYXNoXwUBRgECYXMCAU4CYXQJAKwCAgkArAICCQCsAgICEmdldF9hcnRpZGJ5c2lnbmlkXwUCYXQCAV8FAU4BAmF1AgFGAU4JAKwCAgIXZ2V0X3R4aWRfYnlfaGFzaF9vd25lcl8JANgEAQkA1BYBCQCbAwEJAKwCAgUBRgUBTgECYXYDAmF3AmF4AmF5AwkBASEBCQEBSQEFAmF3CQACAQIRV3JvbmcgRGlzcGxheSBDSUQDCQEBIQEJAQFJAQUCYXgJAAIBAhBXcm9uZyBFeHBvcnQgQ0lEAwMJAQIhPQIFAmF5AgAJAQEhAQkBAUkBBQJheQcJAAIBAhFXcm9uZyBMaWNlbmNlIENJRAYBAmF6AgJhQQJhQgMJAQEhAQkBAUsBBQJhQQkAAgECGEV4cG9ydCBIYXNoIDY0IGNoYXIuIG1heAMJAQEhAQkBAUsBBQJhQgkAAgECGUxpY2VuY2UgSGFzaCA2NCBjaGFyLiBtYXgGAQJhQwICYUQCYUUDCQAAAgkAsQIBBQJhRAAACQACAQIYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAZgIJALECAQUCYUQFAmFFCQACAQkArAICBQJhRAIMIGlzIHRvbyBsb25nBgECYUYBAU4EAmFHCQELdmFsdWVPckVsc2UCCQCdCAIFAWcJAQFNAQUBTgUBegMDCQAAAgUCYUcFAXoGCQAAAgUCYUcFAUECLlJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICJBY2NvdW50IiB0YWIDCQAAAgUCYUcFAXgCEUFjY291bnQgc3VzcGVuZGVkAwkAAAIFAmFHBQF5Ag9BY2NvdW50IHJlbW92ZWQCAAECYUgCAmF5AmFCBAFKAwkAAAIJALECAQUCYXkAAAUBdAUCYXkEAUwDCQAAAgkAsQIBBQJhQgAABQF1BQJhQgkAlAoCBQFKBQFMAQJhSQoBTgJhdwJheAJhSgJhQQJhSwJhTAJhTQJhTgJhTwQCYVAJAQJhRgEFAU4DCQECIT0CBQJhUAIACQACAQUCYVADCQAAAgkAsQIBBQJhdwAACQACAQIbRGlzcGxheSBDSUQgY2Fubm90IGJlIGVtcHR5AwkBASEBCQECYXYDBQJhdwUCYXgFAmFKCQACAQIQUHJvYmxlbSB3aXRoIENJRAMJAQEhAQkBAmF6AgUCYUEFAmFLCQACAQITUHJvYmxlbSB3aXRoIEhhc2hlcwMJAQEhAQkBAmFDAgUCYUwAZAkAAgECEjEwMCBDaGFyLiBtYXggbmFtZQMJAQEhAQkBAmFDAgUCYU0A6AcJAAIBAhoxMDAwIENoYXIuIG1heCBkZXNjcmlwdGlvbgMDCQBmAgAABQJhTwYJAGYCBQJhTwDoBwkAAgECM1JveWFsdGllcyBjYW5ub3QgYmUgbGVzcyB0aGFuIDAlIG9yIGhpZ2hlciB0aGFuIDEwJQMJAGYCCQCQAwEJALUJAgUCYU4CASwABQkAAgECCzUgdGFncyBtYXguAgABAmFRAQJhUgMJAAACCQCQAwEIBQJhUghwYXltZW50cwAACQACAQITTm8gcGF5bWVudCBhdHRhY2hlZAQCYVMJAQV2YWx1ZQEJAJEDAggFAmFSCHBheW1lbnRzAAAEAmFUCQEFdmFsdWUBCAUCYVMGYW1vdW50CQCUCgIFAmFTBQJhVAECYVUBAmFSBAJhVgkBAmFRAQUCYVIEAmFTCAUCYVYCXzEEAmFUCAUCYVYCXzIEAmFXAwMJAQlpc0RlZmluZWQBCAUCYVMHYXNzZXRJZAkAAAIIBQJhUwdhc3NldElkBQFpBwgFAmFTB2Fzc2V0SWQJAAIBAitPbmx5IFNJR04gdG9rZW4gYWNjZXB0ZWQgYXMgdHJhbnNhY3Rpb24gZmVlAwkBAiE9AgUCYVQFAUIJAAIBCQCsAgICGVBheW1lbnQgYW1vdW50IHNob3VsZCBiZSAJAKQDAQUBQgkAlAoCBQJhVAUCYVcBAmFYAgJhWQFQBAFHCQCaCAIFBHRoaXMJAQFYAgUCYVkFAVADCQABAgUBRwIDSW50BAJhWgUBRwMJAQIhPQIFAmFaAAAGBwcBAmJhAwJhUgJiYgJiYwQCYmQJAQJhUQEFAmFSBAJhUwgFAmJkAl8xBAJhVAgFAmJkAl8yBAJhVwMJAQEhAQkBCWlzRGVmaW5lZAEIBQJhUwdhc3NldElkBQR1bml0AwMJAGYCCQCxAgEFAmJiAAAJAAACCQDYBAEJAQV2YWx1ZQEIBQJhUwdhc3NldElkBQJiYgcIBQJhUwdhc3NldElkCQACAQIOV3JvbmcgYXNzZXQgaWQDAwkAAAIFAmFXBQR1bml0CQECIT0CBQJiYgIABwkAAgECDldyb25nIGFzc2V0IGlkAwkBAiE9AgUCYmMFAmFUCQACAQITUGF5bWVudCBkb24ndCBtYXRjaAkAlAoCBQJhVAUCYVcBAmJlAQJhVwMDAwMDCQECIT0CBQJhVwkA2AQBBQFpCQECIT0CBQJhVwkA2AQBBQFsBwkBAiE9AgUCYVcCBVdBVkVTBwkBAiE9AgUCYVcJANgEAQUBagcJAQIhPQIFAmFXCQDYBAEFAWsHCQACAQImT25seSBTSUdOLCBVU0ROLFVTRFQgb3IgV0FWRVMgYWNjZXB0ZWQGAQJiZgICYVcCYmcEAmJoAwUBYwAKCQEBbgECDndhdmVzX21pbl9zZWxsBAJiaQDAhD0EAmJqAwUBYwABCQBoAgUBQgACAwMDAwMDCQAAAgUCYVcJANgEAQUBagkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBawkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBaQkAZgIFAmJqBQJiZwcJAQIhPQIFAmJnAAAHBgMDAwkAAAIFAmFXCQDYBAEFAWwGCQAAAgUCYVcCBVdBVkVTCQBmAgUCYmgFAmJnBwkBAiE9AgUCYmcAAAcJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UGAQJiawECYVcDCQAAAgUCYVcCBVdBVkVTBQR1bml0CQDZBAEFAmFXAQJibAECYm0EAmJuCQEBYQEJAKwCAgUCYm0CBV9PUEVOAwkAAAIFAmJuAgAJAAIBAg1CaWQgbm90IGZvdW5kBAJibwkAtQkCBQJibgIBXwQCYnAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJibwABBAJicQkBAmJrAQkAkQMCBQJibwAAAwkAZwIAAAUCYnAJAAIBAgxXcm9uZyBhbW91bnQJAJQKAgUCYnAFAmJxAQJicgICYVICYnMDCQEBIQEFAXYJAAIBBQF3BAJidAMJAQIhPQIFAmJzAgAJAQt2YWx1ZU9yRWxzZQIJAQFwAQkArAICCQClCAEJAKcIAQkA2QQBBQJicwIJX2ZyZWVfdHhzAAAAAAMJAAACBQJidAUCYnQEAU4DAwkAAAIJANgEAQgIBQJhUgZjYWxsZXIFYnl0ZXMJAKUIAQUEdGhpcwkAZgIFAmJ0AAAHCQClCAEJAKcIAQkA2QQBBQJicwkA2AQBCAgFAmFSBmNhbGxlcgVieXRlcwQCYnUDAwkBAiE9AgUCYnMCAAkAZgIFAmJ0AAAHCQD8BwQFAWgCCXVzZUZyZWVUeAkAzAgCCQClCAEJAKcIAQkA2QQBBQJicwUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCYnUFAmJ1AwYJAAIBCQCkAwEFAmJ0CQCWCgQJANgEAQgFAmFSDXRyYW5zYWN0aW9uSWQFAU4IBQlsYXN0QmxvY2sJdGltZXN0YW1wCQBmAgUCYnQAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECYnYBAmFSAwkBASEBBQF2CQACAQUBdwkAlQoDCQDY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AQUCYnoIBQJhUgZjYWxsZXIEAmNkAwkBASEBCQEJaXNEZWZpbmVkAQUCYVcCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmFXBAJibgkBAWEBCQCsAgIFAmJtAgVfT1BFTgQCY2UJAQtEZWxldGVFbnRyeQEJAKwCAgUCYm0CBV9PUEVOBAJjZgkBC1N0cmluZ0VudHJ5AgkArAICBQJibQIHX0NMT1NFRAkArAICCQCsAgIFAmJuAgFfCQCkAwEFAmJDBAJjZwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglhcnRfc29sZF8JAKQDAQUCYlgCBF9vZl8JAKQDAQUCYkwCAV8FAVACAV8FAmJ4BAJjaAMJAQEhAQUCYkUJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUBTgIBXwkApAMBBQJiQwIBXwUCYkICAV8JAKQDAQUCYmMCAV8FAmJiAgFfCQDYBAEFAmNhCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQUCY2MCAV8JAKQDAQUCYkMCAV8FAmJCAgFfCQCkAwEFAmFUAgFfBQJjZAIBXwkA2AQBBQJjYQQCY2kJAQtTdHJpbmdFbnRyeQIFAmNnBQJjaAQCY2oDCQECIT0CBQJiVQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFmCQBlAgUCYlQFAmJVBQJhVwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUCYk4FAmJVBQJhVwUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFmBQJiVAUCYVcFA25pbAQCY2sDCQECIT0CBQJiVgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQJiUAUCYlYFAmFXCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQJieAkAZQIFAmJXBQJiVgUCYVcFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUCYngFAmJXBQJhVwUDbmlsBAJjbAMFAmJ0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFOAAAFBHVuaXQFA25pbAUDbmlsBAJjbQkAzggCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQJieAUBUAUCYlgJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICAgRuZnRfCQDYBAEFAmNhBQJjZwkAzAgCCQEMSW50ZWdlckVudHJ5AgIQdG90YWxfbmZ0X2lzc3VlZAkAZAIFAmJIAAEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhaAIFAmJ4BQFQAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQFZAgUCYngFAVAFAmNiCQDMCAIFAmJaCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNjAAEFAmNhBQNuaWwFAmNqBQJjawUCY2wDBQJiRQkAzAgCBQJjaQkAzAgCBQJjZgkAzAgCBQJjZQUCY20JAMwIAgUCY2kFAmNtAQJjbgECY28EAUcFAmNvAwkAAQIFAUcCBlN0cmluZwQCY3AFAUcFAmNwCQACAQIkU3BvbnNvcmVkIFB1YmxpYyBLZXkgU3RyaW5nIGV4cGVjdGVkCgJjcQEHc2V0Q29uZgIBYgJjcgQBTgkApQgBCAUCY3EGY2FsbGVyAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUBbQkAzAgCCQClCAEFBHRoaXMFA25pbAUBTgMJAQhjb250YWlucwIFAWICBWNvbmZfCQDMCAIJAQtTdHJpbmdFbnRyeQIFAWIFAmNyBQNuaWwJAAIBAiBFbnRyaWVzIHN0YXJ0aW5nIHdpdGggY29uZl8gb25seQkAAgECIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHRoaXMCYVIBCmFkZEFydHdvcmsOAUYBRAJhTAJhTQJhTgJjcwJhdwJhQQJheAJhQgJheQJjdAJhTwJicwQCY3UJAQJicgIFAmFSBQJicwQBUAgFAmN1Al8xBAFOCAUCY3UCXzIEAmJDCAUCY3UCXzMEAmJ0CAUCY3UCXzQDCQEBIQEJAQFLAQUBRgkAAgECJEhhc2ggc2hvdWxkIGJlIDY0IGNoYXJhY3RlcnMgbWF4aW11bQQCY3YJAQJhSAIFAmF5BQJhQgQCYUoIBQJjdgJfMQQCYUsIBQJjdgJfMgQCY3cJAQJhSQoFAU4FAmF3BQJheAUCYUoFAmFBBQJhSwUCYUwFAmFNBQJhTgUCYU8DCQECIT0CBQJjdwIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAJjeAkAZgIJAQFwAQkArAICBQFOAgtfZnJlZV9kcm9wcwAABAJjeQMFAmN4CQCUCgIAAAUBRAkBAmFVAQUCYVIEAmFUCAUCY3kCXzEEAmFXCAUCY3kCXzIDCQEBIQEJAQlpc0RlZmluZWQBBQJhVAkAAgECFFNvbWV0aGluZyB3ZW50IHdyb25nBAJjegkBAWEBCQECYXUCBQFGBQFOAwkBAiE9AgUCY3oCAAkAAgECFFlvdSBhbHJlYWR5IGFkZGVkIGl0BAJjQQkBAWEBCQECYXIBBQFGAwkBAiE9AgUCY0ECAAkAAgECF0hhc2ggYWxyZWFkeSByZWdpc3RlcmVkBAJjQgkBAUMDBQFEBQFOBQFGAwkBASEBBQJjQgkAAgECLFNpZ24gQ2VydGlmaWNhdGUgbm90IGZvdW5kIGZvciB0aGlzIGFkZHJlc3MuBAJjQwMFAmN4CQD8BwQFAWgCC3VzZUZyZWVEcm9wCQDMCAIFAU4FA25pbAUDbmlsBQR1bml0AwkAAAIFAmNDBQJjQwQCY2wDBQJidAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUBTgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhcgEFAUYFAU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmF1AgUBRgUBTgUBUAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAU8CBQFOBQFQBQJiQwkAzAgCCQELU3RyaW5nRW50cnkCCQEBUQIFAU4FAVAFAmFMCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFSAgUBTgUBUAUCYU0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVMCBQFOBQFQBQJhdwkAzAgCCQELU3RyaW5nRW50cnkCCQEBVQIFAU4FAVAFAmF4CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFUAgUBTgUBUAUCYUEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoCBQFOBQFQBQJhSwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECBQFOBQFQBQJhSgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMCBQFOBQFQBQJjcwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWICBQFOBQFQBQJhTgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQFOBQFQAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcCBQFOBQFQBQFECQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFAU4FAVAAAAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAVkCBQFOBQFQBwkAzAgCCQELU3RyaW5nRW50cnkCCQECYXMCBQFOBQFEBQFQCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhcAIFAU4FAVAFAUYJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFlAgUBTgUBUAUCY3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhZgIFAU4FAVAFAmFPCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFmBQJhVAUBaQUDbmlsBQJjbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhUgENdXBkYXRlQXJ0d29yaw0CYXECYUwCYU0CYU4CY3MCYXcCYUECYXgCYUICYXkCY3QCYU8CYnMDCQEBIQEFAXYJAAIBBQF3BAJjRAkBAmJyAgUCYVIFAmJzBAJiQggFAmNEAl8xBAFOCAUCY0QCXzIEAmJDCAUCY0QCXzMEAmJ0CAUCY0QCXzQEAmNFCQECYUgCBQJheQUCYUIEAmFKCAUCY0UCXzEEAmFLCAUCY0UCXzIEAmN3CQECYUkKBQFOBQJhdwUCYXgFAmFKBQJhQQUCYUsFAmFMBQJhTQUCYU4FAmFPAwkBAiE9AgUCY3cCAAkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQQCY3oJAQFhAQkBAVECBQFOBQJhcQMJAAACBQJjegIACQACAQIPRW50cnkgbm90IGZvdW5kBAJjRgkBAWEBCQECYWoCBQFOBQJhcQMJAAACBQJjRgIHSUxMRUdBTAkAAgECHUNhbm5vdCB1cGRhdGUgSUxMRUdBTCBhcnR3b3JrAwkBASEBCQECYVgCBQFOBQJhcQQCY2wDBQJidAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUBTgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAgUBTgUCYXEFAmFMCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFSAgUBTgUCYXEFAmFNCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFTAgUBTgUCYXEFAmF3CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFVAgUBTgUCYXEFAmF4CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFUAgUBTgUCYXEFAmFBCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAU4FAmFxBQJhSgkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIFAU4FAmFxBQJhSwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWICBQFOBQJhcQUCYU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFjAgUBTgUCYXEFAmNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZQIFAU4FAmFxBQJjdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFmAgUBTgUCYXEFAmFPBQNuaWwFAmNsCQACAQIOQWxyZWFkeSBtaW50ZWQCYVIBC2ZsYWdBcnR3b3JrBAFQAmNHAmNGAmNIBAJjSQkBAmJ2AQUCYVIEAmJCCAUCY0kCXzEEAU4IBQJjSQJfMgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFAW0JAMwIAgkApQgBBQR0aGlzBQNuaWwFAU4DCQEPY29udGFpbnNFbGVtZW50AgkAzAgCAgdDT05TRU5UCQDMCAICAAkAzAgCAg9DSEFOR0VfUkVRVUlSRUQJAMwIAgIHRkxBR0dFRAkAzAgCAgdJTExFR0FMBQNuaWwFAmNGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhagIFAmNHBQFQBQJjRgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQCBQJjRwUBUAUCY0gFA25pbAkAAgEJAKwCAgIOVW5rbm93IHN0YXR1cyAFAmNGCQACAQITWW91IGFyZSBub3QgYWxsb3dlZAJhUgENZGVsZXRlQXJ0d29yawIBUAJjRwQCY0oJAQJidgEFAmFSBAJiQggFAmNKAl8xBAFOCAUCY0oCXzIEAmFZAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUBbQkAzAgCCQClCAEFBHRoaXMFA25pbAUBTgUCY0cFAU4EAmN6CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAQFhAQkBAVECBQJhWQUBUAIgTm8gYXJ0IG1hdGNoaW5nIGZvciB0aGlzIGFkZHJlc3MDCQAAAgUCY3oCAAkAAgECIE5vIGFydCBtYXRjaGluZyBmb3IgdGhpcyBhZGRyZXNzBAFGCQEBYQEJAQJhcAIFAmFZBQFQAwkAAAIFAUYCAAkAAgECJU5vIGFydCBoYXNoIG1hdGNoaW5nIGZvciB0aGlzIGFkZHJlc3MEAUQJAQFhAQkBAVcCBQJhWQUBUAMJAAACBQFEAgAJAAIBAhNObyBTSUdOIElEIG1hdGNoaW5nBAJjSwkAzAgCCQELRGVsZXRlRW50cnkBCQEBTwIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFRAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVICBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBUwIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFVAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVQCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBWgIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhYQIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhYwIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhYgIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFWAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVcCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBWAIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFZAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFqAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFnAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFpAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFyAQUBRgkAzAgCCQELRGVsZXRlRW50cnkBCQECYXMCBQJhWQUBRAkAzAgCCQELRGVsZXRlRW50cnkBCQECYXUCBQFGBQJhWQkAzAgCCQELRGVsZXRlRW50cnkBCQECYWgCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWQCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWUCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWYCBQJhWQUBUAUDbmlsAwkBASEBCQECYVgCBQJhWQUBUAMJAQEhAQUBdgkAAgEFAXcFAmNLAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUBbQkAzAgCCQClCAEFBHRoaXMFA25pbAUBTgUCY0sJAAIBAihBcnQgYWxyZWFkeSBtaW50ZWQsIHlvdSBjYW5ub3QgZGVsZXRlIGl0AmFSAQtzZWxsQXJ0d29yawYBUAJiZwJjTAJhVwJiRgJicwQCY00JAQJicgIFAmFSBQJicwQCYkIIBQJjTQJfMQQBTggFAmNNAl8yBAJiQwgFAmNNAl8zBAJidAgFAmNNAl80BAJiSQkBAWEBCQEBUQIFAU4FAVADCQAAAgUCYkkCAAkAAgECI1RoaXMgYXJ0IGRvZXNuJ3QgbWF0Y2ggeW91ciBhY2NvdW50BAJjRgkBAWEBCQECYWoCBQFOBQFQAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgIPQ0hBTkdFX1JFUVVJUkVECQDMCAICB0ZMQUdHRUQJAMwIAgIHSUxMRUdBTAUDbmlsBQJjRgkAAgECD0ZsYWdnZWQgYXJ0d29yawQCY04JAQFvAQkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FAVADCQBmAgAABQJiRgkAAgECDE5lZ2F0aXZlIGVuZAMDCQBmAgUCYkYAAAMJAQIhPQIFAmNMAAEGCQECIT0CBQJiZwAABwkAAgECOlRpbWVkIG9mZmVyIG9ubHkgYWxsb3dlZCBmb3IgdW5pcXVlIGVkaXRpb24gYW5kIG9mZmVyIG9ubHkEAmNPAwkAAAIFAmJGAAAAAAUGaGVpZ2h0AwkBASEBCQECYmUBBQJhVwkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQMJAQEhAQkBAmJmAgUCYVcFAmJnCQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAJhUAkBAmFGAQUBTgMJAQIhPQIFAmFQAgAJAAIBBQJhUAQCYksJAQFvAQkBAVgCBQFOBQFQBAJiTAkBAW8BCQEBVgIFAU4FAVADCQBmAgUCY0wAZAkAAgECHDEwMCBlZGl0aW9ucyBtYXggcGVyIGFydHdvcmsDAwkBAiE9AgUCYksAAAkAAAIFAmJLBQJiTAcJAAIBAhRNYXggZWRpdGlvbiByZWFjaGVkLgMDCQBmAgUCYksAAAkBAiE9AgUCYkwFAmNMBwkAAgECJkNhbm5vdCBjaGFuZ2UgbWF4aW11bSBpc3N1YWJsZSBhbnltb3JlAwMJAGYCBQJjTgAACQECIT0CBQJiTAUCY0wHCQACAQIxQ2Fubm90IGNoYW5nZSBtYXhpbXVtIGlzc3VhYmxlIHdpdGggYWN0aXZlIG9yZGVycwQCY2IDAwkAZgIFAmJnAAAJAGYCBQJjTAAABwYHBAJjbAMFAmJ0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFOAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQFZAgUBTgUBUAUCY2IJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhZwIFAU4FAVAFAmJnCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFAU4FAVAFAmNMCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhaQIFAU4FAVAFAmFXCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWgCBQFOBQFQCQBkAgUCY08FAmJGBQNuaWwFAmNsAmFSAQpidXlBcnR3b3JrAgFQAmJ4CQECYncGBQJhUgUBUAUCYngCAAIAAgACYVIBBnNldEJpZAIBUAJieAQCY1AJAQJidgEFAmFSBAJiQggFAmNQAl8xBAFOCAUCY1ACXzIEAmJDCAUCY1ACXzMEAmNRCQECYVEBBQJhUgQCYVMIBQJjUQJfMQQCYVQIBQJjUQJfMgQCYVcDCQEBIQEJAQlpc0RlZmluZWQBCAUCYVMHYXNzZXRJZAIFV0FWRVMJANgEAQkBBXZhbHVlAQgFAmFTB2Fzc2V0SWQEAmJGCQEBbwEJAQJhaAIFAmJ4BQFQAwMJAQIhPQIFAmJGAAAJAGcCBQZoZWlnaHQFAmJGBwkAAgECC1NhbGUgZW5kZWQuBAJjTgkBAW8BCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUBUAMJAQEhAQkBAmJlAQUCYVcJAAIBAhJhc3NldCBub3QgYWNjZXB0ZWQDCQEBIQEJAQJiZgIFAmFXBQJhVAkAAgECDldyb25nIG1pbiBzZWxsBAJiSwkBAW8BCQEBWAIFAmJ4BQFQBAJiTAkBAW8BCQEBVgIFAmJ4BQFQAwkAZwIAAAUCYkwJAAIBAiNObyBtYXggZWRpdGlvbiBzZXQgZm9yIHRoaXMgYXJ0d29yawMJAGcCBQJiSwUCYkwJAAIBAhhTb2xkIG91dCwgeW91IGNhbm5vdCBiaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FAVACAV8FAmJ4AgFfBQFOAgFfBQJiQgIFX09QRU4JAKwCAgkArAICCQCsAgIJAKwCAgUCYVcCAV8JAKQDAQUCYVQCAV8JAKQDAQUCYkMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQFQCQBkAgUCY04AAQUDbmlsAmFSAQlhY2NlcHRCaWQFAVACYngCYnkCYnoCYnMEAmNSCQECYnICBQJhUgUCYnMEAmJCCAUCY1ICXzEEAmNTCAUCY1ICXzIEAmJDCAUCY1ICXzMEAmJ0CAUCY1ICXzQDCQECIT0CBQJjUwUCYngJAAIBAhlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uCQECYncGBQJhUgUBUAUCYngFAmJ5BQJiegUCYnMCYVIBCWNhbmNlbEJpZAQBUAJieAJieQJiegQCY1QJAQJidgEFAmFSBAJiQggFAmNUAl8xBAFOCAUCY1QCXzIEAmJDCAUCY1QCXzMDAwkBAiE9AgUBTgUCYnoJAQIhPQIFAU4FAmJ4BwkAAgECGVlvdSBjYW5ub3QgZG8gdGhpcyBhY3Rpb24EAmNVAwkAAAIFAU4FAmJ4BQJiegUBTgQCY04JAQFvAQkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FAVAEAmJtCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FAVACAV8FAmJ4AgFfBQJiegIBXwUCYnkEAmJuCQEBYQEJAKwCAgUCYm0CBV9PUEVOAwkAAAIFAmJuAgAJAAIBAg1CaWQgbm90IGZvdW5kBAJibwkAtQkCBQJibgIBXwQCYVcJAQJiawEJAJEDAgUCYm8AAAQCY1YCCENBTkNFTEVECQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUCYm0CBV9PUEVOCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQJibQIBXwUCY1YJAKwCAgkArAICBQJibgIBXwkApAMBBQJiQwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FAVAJAGUCBQJjTgABCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQJjVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJvAAEFAmFXBQNuaWwBAmNXAQJjWAAEAUcFAmNXAwkAAQIFAUcCF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBAJjWQUBRwMDAwMJAAACCAUCY1kIZnVuY3Rpb24CCmFkZEFydHdvcmsJAAACCAUCY1kEZEFwcAUEdGhpcwcJAAACCAUCY1kDZmVlAKDCHgcJAAACCAUCY1kKZmVlQXNzZXRJZAUEdW5pdAcJAPQDAwgFAmNXCWJvZHlCeXRlcwkAkQMCCAUCY1cGcHJvb2ZzAAAJANkEAQkBAmNuAQkAkQMCCAUCY1kEYXJncwANAwMDAwkAAAIIBQJjWQhmdW5jdGlvbgINdXBkYXRlQXJ0d29yawkAAAIIBQJjWQRkQXBwBQR0aGlzBwkAAAIIBQJjWQNmZWUAoMIeBwkAAAIIBQJjWQpmZWVBc3NldElkBQR1bml0BwkA9AMDCAUCY1cJYm9keUJ5dGVzCQCRAwIIBQJjVwZwcm9vZnMAAAkA2QQBCQECY24BCQCRAwIIBQJjWQRhcmdzAAwDAwMDCQAAAggFAmNZCGZ1bmN0aW9uAgtzZWxsQXJ0d29yawkAAAIIBQJjWQRkQXBwBQR0aGlzBwkAAAIIBQJjWQNmZWUAoMIeBwkAAAIIBQJjWQpmZWVBc3NldElkBQR1bml0BwkA9AMDCAUCY1cJYm9keUJ5dGVzCQCRAwIIBQJjVwZwcm9vZnMAAAkA2QQBCQECY24BCQCRAwIIBQJjWQRhcmdzAAUDAwMDCQAAAggFAmNZCGZ1bmN0aW9uAglhY2NlcHRCaWQJAAACCAUCY1kEZEFwcAUEdGhpcwcJAAACCAUCY1kDZmVlAKDCHgcJAAACCAUCY1kKZmVlQXNzZXRJZAUEdW5pdAcJAMgTAwgFAmNXCWJvZHlCeXRlcwkAkQMCCAUCY1cGcHJvb2ZzAAAJANkEAQkBAmNuAQkAkQMCCAUCY1kEYXJncwAECQD0AwMIBQJjVwlib2R5Qnl0ZXMJAJEDAggFAmNXBnByb29mcwAACAUCY1cPc2VuZGVyUHVibGljS2V5CQD0AwMIBQJjVwlib2R5Qnl0ZXMJAJEDAggFAmNXBnByb29mcwAACAUCY1cPc2VuZGVyUHVibGljS2V5jFtkXA==", "height": 2503570, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BeN4gT1npeBM3i898fZg8kpWPpspepGpw6V3JvuaZJFi Next: E62xW1pw9jgsZWimhpYQf5o6ytu658QTQt6nywD19fmV Diff:
OldNewDifferences
399399 then invoke(h, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
400400 else unit
401401 if ((bu == bu))
402- then $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
402+ then if (true)
403+ then throw(toString(bt))
404+ else $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
403405 else throw("Strict value is not equal to itself.")
404406 }
405407 else throw("Strict value is not equal to itself.")
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 $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
402+ then if (true)
403+ then throw(toString(bt))
404+ else $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
403405 else throw("Strict value is not equal to itself.")
404406 }
405407 else throw("Strict value is not equal to itself.")
406408 }
407409
408410
409411 func bv (aR) = if (!(v))
410412 then throw(w)
411413 else $Tuple3(toBase58String(aR.transactionId), toBase58String(aR.caller.bytes), lastBlock.timestamp)
412414
413415
414416 func bw (aR,P,bx,by,bz,bs) = {
415417 let bA = br(aR, bs)
416418 let bB = bA._1
417419 let N = bA._2
418420 let bC = bA._3
419421 let bt = bA._4
420422 if (true)
421423 then throw(((toString((toBase58String(aR.caller.bytes) == toString(this))) + " / ") + toString(bt)))
422424 else {
423425 let bD = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
424426 then bt
425427 else false)
426428 then toString(addressFromPublicKey(fromBase58String(bs)))
427429 else toBase58String(aR.caller.bytes)
428430 if (true)
429431 then throw(((((((bD + " / ") + bx) + " / ") + bz) + " / ") + bs))
430432 else {
431433 let bE = if (if (if ((N == bx))
432434 then (bz != "")
433435 else false)
434436 then (by != "")
435437 else false)
436438 then true
437439 else false
438440 let bF = o(ah(N, P))
439441 if (if (if ((bF != 0))
440442 then (height >= bF)
441443 else false)
442444 then !(bE)
443445 else false)
444446 then throw("Sale ended.")
445447 else {
446448 let bG = (N == bx)
447449 let bH = o("total_nft_issued")
448450 let D = a(W(bx, P))
449451 let bI = a(Q(bx, P))
450452 if ((bI == ""))
451453 then throw("Art doesn't exist")
452454 else {
453455 let bJ = q(Y(bx, P))
454456 let bK = o(X(bx, P))
455457 let bc = if (bG)
456458 then (B * 2)
457459 else o(ag(bx, P))
458460 let bb = if (bG)
459461 then toBase58String(i)
460462 else a(ai(bx, P))
461463 let bL = o(V(bx, P))
462464 if (if (if (!(bE))
463465 then !(bG)
464466 else false)
465467 then if (if ((0 >= bc))
466468 then true
467469 else !(bJ))
468470 then true
469471 else (0 >= bL)
470472 else false)
471473 then throw("Art not for sale")
472474 else if (if (if (!(bE))
473475 then bG
474476 else false)
475477 then (0 >= bL)
476478 else false)
477479 then throw("Max issuable not set")
478480 else {
479481 let aP = aF(bx)
480482 if (if (bE)
481483 then (aP != "")
482484 else false)
483485 then throw(aP)
484486 else {
485487 let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
486488 let bM = if (bE)
487489 then bl(bm)
488490 else ba(aR, bb, bc)
489491 let aT = bM._1
490492 let aW = bM._2
491493 let bN = valueOrElse(getString(g, ak(bx)), f)
492494 let bO = valueOrElse(getInteger(g, am(bx)), 0)
493495 let bP = valueOrElse(getString(g, an(bx)), f)
494496 let bQ = valueOrElse(getInteger(g, ao(bx)), 0)
495497 let bR = p(bx)
496498 let bS = if ((bR > height))
497499 then 0
498500 else if ((aW == i))
499501 then r
500502 else s
501503 let bT = fraction(aT, bS, 100)
502504 let bU = if (if (if ((bN != f))
503505 then (bO > 0)
504506 else false)
505507 then (height > bR)
506508 else false)
507509 then fraction(aT, bO, 10000)
508510 else 0
509511 let bV = if (if (if ((bP != f))
510512 then (bQ > 0)
511513 else false)
512514 then (height > bR)
513515 else false)
514516 then fraction(aT, bQ, 10000)
515517 else 0
516518 let bW = (aT - bT)
517519 if ((bK == bL))
518520 then throw("Art sold out")
519521 else {
520522 let bX = (bK + 1)
521523 let bY = ((((((((((("Creator: " + bx) + ",
522524 ArtID: ") + P) + ",
523525 SignID: ") + D) + ",
524526 Artwork name: ") + bI) + ",
525527 Issue: ") + toString(bX)) + "/") + toString(bL))
526528 let bZ = Issue(("SA_" + toString((bH + 1))), bY, 1, 0, false)
527529 let ca = calculateAssetId(bZ)
528530 let cb = if (if ((bX == bL))
529531 then true
530532 else !(bJ))
531533 then false
532534 else true
533535 let cc = if (if (if ((N == bx))
534536 then (bz != "")
535537 else false)
536538 then (by != "")
537539 else false)
538540 then addressFromStringValue(bz)
539541 else aR.caller
540542 let cd = if (!(isDefined(aW)))
541543 then "WAVES"
542544 else toBase58String(value(aW))
543545 let bn = a((bm + "_OPEN"))
544546 let ce = DeleteEntry((bm + "_OPEN"))
545547 let cf = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
546548 let cg = ((((((("art_sold_" + toString(bX)) + "_of_") + toString(bL)) + "_") + P) + "_") + bx)
547549 let ch = if (!(bE))
548550 then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(ca))
549551 else ((((((((((toString(cc) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cd) + "_") + toBase58String(ca))
550552 let ci = StringEntry(cg, ch)
551553 let cj = if ((bU != 0))
552554 then [ScriptTransfer(Address(fromBase58String(f)), (bT - bU), aW), ScriptTransfer(Address(fromBase58String(bN)), bU, aW)]
553555 else [ScriptTransfer(Address(fromBase58String(f)), bT, aW)]
554556 let ck = if ((bV != 0))
555557 then [ScriptTransfer(Address(fromBase58String(bP)), bV, aW), ScriptTransfer(Address(fromBase58String(bx)), (bW - bV), aW)]
556558 else [ScriptTransfer(Address(fromBase58String(bx)), bW, aW)]
557559 let cl = if (bt)
558560 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
559561 else nil
560562 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)
561563 if (bE)
562564 then [ci, cf, ce] :: cm
563565 else ci :: cm
564566 }
565567 }
566568 }
567569 }
568570 }
569571 }
570572 }
571573 }
572574
573575
574576 func cn (co) = {
575577 let G = co
576578 if ($isInstanceOf(G, "String"))
577579 then {
578580 let cp = G
579581 cp
580582 }
581583 else throw("Sponsored Public Key String expected")
582584 }
583585
584586
585587 @Callable(cq)
586588 func setConf (b,cr) = {
587589 let N = toString(cq.caller)
588590 if (containsElement([m, toString(this)], N))
589591 then if (contains(b, "conf_"))
590592 then [StringEntry(b, cr)]
591593 else throw("Entries starting with conf_ only")
592594 else throw("You are not allowed to change this")
593595 }
594596
595597
596598
597599 @Callable(aR)
598600 func addArtwork (F,D,aL,aM,aN,cs,aw,aA,ax,aB,ay,ct,aO,bs) = {
599601 let cu = br(aR, bs)
600602 let P = cu._1
601603 let N = cu._2
602604 let bC = cu._3
603605 let bt = cu._4
604606 if (!(K(F)))
605607 then throw("Hash should be 64 characters maximum")
606608 else {
607609 let cv = aH(ay, aB)
608610 let aJ = cv._1
609611 let aK = cv._2
610612 let cw = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
611613 if ((cw != ""))
612614 then throw("Something went wrong!")
613615 else {
614616 let cx = (p((N + "_free_drops")) > 0)
615617 let cy = if (cx)
616618 then $Tuple2(0, D)
617619 else aU(aR)
618620 let aT = cy._1
619621 let aW = cy._2
620622 if (!(isDefined(aT)))
621623 then throw("Something went wrong")
622624 else {
623625 let cz = a(au(F, N))
624626 if ((cz != ""))
625627 then throw("You already added it")
626628 else {
627629 let cA = a(ar(F))
628630 if ((cA != ""))
629631 then throw("Hash already registered")
630632 else {
631633 let cB = C(D, N, F)
632634 if (!(cB))
633635 then throw("Sign Certificate not found for this address.")
634636 else {
635637 let cC = if (cx)
636638 then invoke(h, "useFreeDrop", [N], nil)
637639 else unit
638640 if ((cC == cC))
639641 then {
640642 let cl = if (bt)
641643 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
642644 else nil
643645 ([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)
644646 }
645647 else throw("Strict value is not equal to itself.")
646648 }
647649 }
648650 }
649651 }
650652 }
651653 }
652654 }
653655
654656
655657
656658 @Callable(aR)
657659 func updateArtwork (aq,aL,aM,aN,cs,aw,aA,ax,aB,ay,ct,aO,bs) = if (!(v))
658660 then throw(w)
659661 else {
660662 let cD = br(aR, bs)
661663 let bB = cD._1
662664 let N = cD._2
663665 let bC = cD._3
664666 let bt = cD._4
665667 let cE = aH(ay, aB)
666668 let aJ = cE._1
667669 let aK = cE._2
668670 let cw = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
669671 if ((cw != ""))
670672 then throw("Something went wrong!")
671673 else {
672674 let cz = a(Q(N, aq))
673675 if ((cz == ""))
674676 then throw("Entry not found")
675677 else {
676678 let cF = a(aj(N, aq))
677679 if ((cF == "ILLEGAL"))
678680 then throw("Cannot update ILLEGAL artwork")
679681 else if (!(aX(N, aq)))
680682 then {
681683 let cl = if (bt)
682684 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
683685 else nil
684686 ([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)
685687 }
686688 else throw("Already minted")
687689 }
688690 }
689691 }
690692
691693
692694
693695 @Callable(aR)
694696 func flagArtwork (P,cG,cF,cH) = {
695697 let cI = bv(aR)
696698 let bB = cI._1
697699 let N = cI._2
698700 if (containsElement([m, toString(this)], N))
699701 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cF))
700702 then [StringEntry(aj(cG, P), cF), StringEntry(ad(cG, P), cH)]
701703 else throw(("Unknow status " + cF))
702704 else throw("You are not allowed")
703705 }
704706
705707
706708
707709 @Callable(aR)
708710 func deleteArtwork (P,cG) = {
709711 let cJ = bv(aR)
710712 let bB = cJ._1
711713 let N = cJ._2
712714 let aY = if (containsElement([m, toString(this)], N))
713715 then cG
714716 else N
715717 let cz = valueOrErrorMessage(a(Q(aY, P)), "No art matching for this address")
716718 if ((cz == ""))
717719 then throw("No art matching for this address")
718720 else {
719721 let F = a(ap(aY, P))
720722 if ((F == ""))
721723 then throw("No art hash matching for this address")
722724 else {
723725 let D = a(W(aY, P))
724726 if ((D == ""))
725727 then throw("No SIGN ID matching")
726728 else {
727729 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))]
728730 if (!(aX(aY, P)))
729731 then if (!(v))
730732 then throw(w)
731733 else cK
732734 else if (containsElement([m, toString(this)], N))
733735 then cK
734736 else throw("Art already minted, you cannot delete it")
735737 }
736738 }
737739 }
738740 }
739741
740742
741743
742744 @Callable(aR)
743745 func sellArtwork (P,bg,cL,aW,bF,bs) = {
744746 let cM = br(aR, bs)
745747 let bB = cM._1
746748 let N = cM._2
747749 let bC = cM._3
748750 let bt = cM._4
749751 let bI = a(Q(N, P))
750752 if ((bI == ""))
751753 then throw("This art doesn't match your account")
752754 else {
753755 let cF = a(aj(N, P))
754756 if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cF))
755757 then throw("Flagged artwork")
756758 else {
757759 let cN = o(("current_bidamount_" + P))
758760 if ((0 > bF))
759761 then throw("Negative end")
760762 else if (if ((bF > 0))
761763 then if ((cL != 1))
762764 then true
763765 else (bg != 0)
764766 else false)
765767 then throw("Timed offer only allowed for unique edition and offer only")
766768 else {
767769 let cO = if ((bF == 0))
768770 then 0
769771 else height
770772 if (!(be(aW)))
771773 then throw("Something went wrong!")
772774 else if (!(bf(aW, bg)))
773775 then throw("Something went wrong!")
774776 else {
775777 let aP = aF(N)
776778 if ((aP != ""))
777779 then throw(aP)
778780 else {
779781 let bK = o(X(N, P))
780782 let bL = o(V(N, P))
781783 if ((cL > 100))
782784 then throw("100 editions max per artwork")
783785 else if (if ((bK != 0))
784786 then (bK == bL)
785787 else false)
786788 then throw("Max edition reached.")
787789 else if (if ((bK > 0))
788790 then (bL != cL)
789791 else false)
790792 then throw("Cannot change maximum issuable anymore")
791793 else if (if ((cN > 0))
792794 then (bL != cL)
793795 else false)
794796 then throw("Cannot change maximum issuable with active orders")
795797 else {
796798 let cb = if (if ((bg > 0))
797799 then (cL > 0)
798800 else false)
799801 then true
800802 else false
801803 let cl = if (bt)
802804 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
803805 else nil
804806 ([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)
805807 }
806808 }
807809 }
808810 }
809811 }
810812 }
811813 }
812814
813815
814816
815817 @Callable(aR)
816818 func buyArtwork (P,bx) = bw(aR, P, bx, "", "", "")
817819
818820
819821
820822 @Callable(aR)
821823 func setBid (P,bx) = {
822824 let cP = bv(aR)
823825 let bB = cP._1
824826 let N = cP._2
825827 let bC = cP._3
826828 let cQ = aQ(aR)
827829 let aS = cQ._1
828830 let aT = cQ._2
829831 let aW = if (!(isDefined(aS.assetId)))
830832 then "WAVES"
831833 else toBase58String(value(aS.assetId))
832834 let bF = o(ah(bx, P))
833835 if (if ((bF != 0))
834836 then (height >= bF)
835837 else false)
836838 then throw("Sale ended.")
837839 else {
838840 let cN = o(("current_bidamount_" + P))
839841 if (!(be(aW)))
840842 then throw("asset not accepted")
841843 else if (!(bf(aW, aT)))
842844 then throw("Wrong min sell")
843845 else {
844846 let bK = o(X(bx, P))
845847 let bL = o(V(bx, P))
846848 if ((0 >= bL))
847849 then throw("No max edition set for this artwork")
848850 else if ((bK >= bL))
849851 then throw("Sold out, you cannot bid")
850852 else [StringEntry((((((((("bid_" + P) + "_") + bx) + "_") + N) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cN + 1))]
851853 }
852854 }
853855 }
854856
855857
856858
857859 @Callable(aR)
858860 func acceptBid (P,bx,by,bz,bs) = {
859861 let cR = br(aR, bs)
860862 let bB = cR._1
861863 let cS = cR._2
862864 let bC = cR._3
863865 let bt = cR._4
864866 if ((cS != bx))
865867 then throw("You cannot do this action")
866868 else bw(aR, P, bx, by, bz, bs)
867869 }
868870
869871
870872
871873 @Callable(aR)
872874 func cancelBid (P,bx,by,bz) = {
873875 let cT = bv(aR)
874876 let bB = cT._1
875877 let N = cT._2
876878 let bC = cT._3
877879 if (if ((N != bz))
878880 then (N != bx)
879881 else false)
880882 then throw("You cannot do this action")
881883 else {
882884 let cU = if ((N == bx))
883885 then bz
884886 else N
885887 let cN = o(("current_bidamount_" + P))
886888 let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
887889 let bn = a((bm + "_OPEN"))
888890 if ((bn == ""))
889891 then throw("Bid not found")
890892 else {
891893 let bo = split(bn, "_")
892894 let aW = bk(bo[0])
893895 let cV = "CANCELED"
894896 [DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cV), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cN - 1)), ScriptTransfer(Address(fromBase58String(cU)), parseIntValue(bo[1]), aW)]
895897 }
896898 }
897899 }
898900
899901
900902 @Verifier(cW)
901903 func cX () = {
902904 let G = cW
903905 if ($isInstanceOf(G, "InvokeScriptTransaction"))
904906 then {
905907 let cY = G
906908 if (if (if (if ((cY.function == "addArtwork"))
907909 then (cY.dApp == this)
908910 else false)
909911 then (cY.fee == 500000)
910912 else false)
911913 then (cY.feeAssetId == unit)
912914 else false)
913915 then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[13])))
914916 else if (if (if (if ((cY.function == "updateArtwork"))
915917 then (cY.dApp == this)
916918 else false)
917919 then (cY.fee == 500000)
918920 else false)
919921 then (cY.feeAssetId == unit)
920922 else false)
921923 then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[12])))
922924 else if (if (if (if ((cY.function == "sellArtwork"))
923925 then (cY.dApp == this)
924926 else false)
925927 then (cY.fee == 500000)
926928 else false)
927929 then (cY.feeAssetId == unit)
928930 else false)
929931 then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[5])))
930932 else if (if (if (if ((cY.function == "acceptBid"))
931933 then (cY.dApp == this)
932934 else false)
933935 then (cY.fee == 500000)
934936 else false)
935937 then (cY.feeAssetId == unit)
936938 else false)
937939 then sigVerify_128Kb(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[4])))
938940 else sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
939941 }
940942 else sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
941943 }
942944

github/deemru/w8io/169f3d6 
100.10 ms