tx · GzP3FRBH1wX2XX1TD842w1CDB7VqxWN5LWgp7d3yVv2M

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.01900000 Waves

2023.03.24 06:36 [2503555] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "GzP3FRBH1wX2XX1TD842w1CDB7VqxWN5LWgp7d3yVv2M", "fee": 1900000, "feeAssetId": null, "timestamp": 1679629029463, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "21XjzyKgEShuK5QwrXSotcxKbcy6mqgj92ykxWDngkspoBUkUVJmHJZpxE7skkcLU3mUmyAUu9S4W3tiCHavZdGY" ], "script": "base64:BgL+FAgCEgQKAggIEhAKDggICAgICAgICAgICAEIEg8KDQgICAgICAgICAgIAQgSBgoECAgICBIECgIICBIICgYIAQEIAQgSBAoCCAgSBAoCCAgSBwoFCAgICAgSBgoECAgICCIOZ2V0U3RyaW5nQnlLZXkiA2tleSIIdW5pdFRlc3QiCW9yYWNsZUZlZSIIc2lnbkRhcHAiC2ZlZVJlY2VpdmVyIgh1c2VyRGFwcCINd2hpdGVsaXN0RGFwcCILc2lnbkFzc2V0SWQiC3VzZG5Bc3NldElkIgt1c2R0QXNzZXRJZCIMd2F2ZXNBc3NldElkIgVjaHJpcyIZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZSIPZ2V0SW50ZWdlckJ5S2V5Ig5jaGVja1doaXRlbGlzdCIPZ2V0Qm9vbGVhbkJ5S2V5IgdzaWduQ3V0Igt1c2RuV2F2ZUN1dCIOZGVmYXVsdExpY2VuY2UiEmRlZmF1bHRIYXNoTGljZW5jZSILZGFwcFJ1bm5pbmciDm1haW50ZW5hbmNlTVNHIg11c2VyU3VzcGVuZGVkIgt1c2VyUmVtb3ZlZCIQdXNlclVucmVnaXN0ZXJlZCILdXNlckFsbG93ZWQiGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UiFGNoZWNrU2lnbkNlcnRpZmljYXRlIgZzaWduSUQiBU93bmVyIgpzaGEyNTZIYXNoIgckbWF0Y2gwIgFhIgt2YWxpZGF0ZUNJRCIDY2lkIgx2YWxpZGF0ZUhhc2giBGhhc2giDWtleVVzZXJTdGF0dXMiBmNhbGxlciIHa2V5RGF0ZSIFYXJ0SWQiB2tleU5hbWUiB2tleURlc2MiDWtleURpc3BsYXlDaWQiDWtleUV4cG9ydEhhc2giDGtleUV4cG9ydENpZCIKa2V5TWF4TWludCIJa2V5U2lnbklEIglrZXlJc3N1ZWQiCWtleU9uU2FsZSIOa2V5TGljZW5jZUhhc2giDWtleUxpY2VuY2VDaWQiB2tleVRhZ3MiB2tleVR5cGUiB2tleU5vdGUiCmtleUNyYXdsZXIiDGtleVJveWFsdGllcyIIa2V5UHJpY2UiCmtleUVuZFNhbGUiEmtleUFzc2V0SWRBY2NlcHRlZCIHa2V5RmxhZyISa2V5QXJ0aXN0QWdlbnRBZGRyIgphcnRpc3RBZGRyIhRrZXlQcmltYXJ5U2hhcmVBZ2VudCIYa2V5QXJ0aXN0UHVibGljQWdlbnRBZGRyIhprZXlQcmltYXJ5U2hhcmVQdWJsaWNBZ2VudCIRa2V5SGFzaEJ5VHhpZEFkZHIiBHR4aWQiDmtleU93bmVyQnlIYXNoIg1rZXlpZEJ5U2lnbmlkIgZzaWduSWQiEmtleVR4aWRCeUhhc2hPd25lciIOdmFsaWRhdGVBbGxDSUQiCmNpZERpc3BsYXkiCWNpZEV4cG9ydCIKY2lkTGljZW5jZSIPdmFsaWRhdGVBbGxIYXNoIgxzaGEyNTZFeHBvcnQiDXNoYTI1NkxpY2VuY2UiDnZhbGlkYXRlU3RyaW5nIgNzdHIiA21heCIMdmFsaWRhdGVVc2VyIgp1c2VyU3RhdHVzIgpzZXRMSWNlbmNlIhN2YWxpZGF0ZUFydHdvcmtEYXRhIgpsaWNlbmNlQ0lEIgtsaWNlbmNlSGFzaCIEbmFtZSILZGVzY3JpcHRpb24iBHRhZ3MiCXJveWFsdGllcyIJY2hlY2tVc2VyIglpc1BheW1lbnQiAWkiB3BheW1lbnQiBmFtb3VudCIPdmFsaWRhdGVQYXltZW50IgskdDA5MTgwOTIxNiIHYXNzZXRJZCILaXNBcnRNaW50ZWQiCWFkZHJUb1VzZSIBYiIUdmFsaWRhdGVQcmljZUFzc2V0SWQiDHByaWNlQXNzZXRJZCIMYXJ0d29ya1ByaWNlIgskdDA5ODA0OTg0MCIQYWNjZXB0ZWRBc3NldElkcyIPdmFsaWRhdGVNaW5TZWxsIgVwcmljZSIMbWluU2VsbFdhdmVzIgttaW5TZWxsVXNkbiILbWluU2VsbFNpZ24iDWdldEJpZEFzc2V0SWQiFmdldFByaWNlQXNzZXRJZEZyb21CaWQiCmJpZERhdGFLZXkiB2JpZERhdGEiCmJpZERhdGFBcnIiCWJpZEFtb3VudCIKYmlkQXNzZXRJZCIVaWRDYWxsZXJEYXRlU3BvbnNvcmVkIgZwdWJLZXkiC2lzU3BvbnNvcmVkIhNnZXRfc3BvbnNvcmVkX3dhdmVzIgxpZENhbGxlckRhdGUiB2J1eU1pbnQiBmlzc3VlciIFYmlkSWQiCGJpZE93bmVyIg0kdDAxMzA0NzEzMTM5IgRkYXRlIgJpZCIFaXNCaWQiCGJsb2NrRW5kIg5jYWxsZXJJc0lzc3VlciIIdG90YWxORlQiC2FydHdvcmtOYW1lIghpc09uU2FsZSIKYW1vdW50U29sZCIKbWF4Q2FuU2VsbCINJHQwMTQ3NDIxNDkzNCIFYWdlbnQiCmFnZW50U2hhcmUiC3B1YmxpY0FnZW50IhBwdWJsaWNBZ2VudFNoYXJlIg1pc1doaXRlbGlzdGVkIgNjdXQiDWFtb3VudEZvclNpZ24iDmFtb3VudEZvckFnZW50IhRhbW91bnRGb3JQdWJsaWNBZ2VudCIQYW1vdW50Rm9yQ3JlYXRvciINbmV3QW1vdW50U29sZCIJaXNzdWVNZXRhIghpc3N1ZU5GVCIFaWRORlQiCnNlbGxTdGF0dXMiCnJlY2VpdmVORlQiCmFzc2V0SWRCaWQiCWJpZERlbE9sZCIJYmlkVXBkYXRlIgdzb2xkS2V5Iglzb2xkVmFsdWUiCHNvbGREYXRhIhRjb21taXNzaW9uc1dpdGhBZ2VudCIaY29tbWlzc2lvbnNXaXRoUHVibGljQWdlbnQiCnR4VG9DYWxsZXIiBmJ1eVJlcyIIYXNTdHJpbmciAmJ2IgNidjAiBmludm9rZSIDdmFsIgR0eXBlIgdjcmF3bGVyIg0kdDAyMDExMDIwMTgzIg0kdDAyMDI4NDIwMzUzIg92YWxpZGF0ZUFydHdvcmsiEHdoaXRlbGlzdGVkX2Ryb3AiDSR0MDIwNjUyMjA3MzYiCmVudHJ5RXhpc3QiCWhhc2hFeGlzdCIPaXNTaWduQ2VydGlmaWVkIhdkZWNyZWFzZV93aGl0ZWxpc3RfZHJvcCINJHQwMjM3NzAyMzg0MCINJHQwMjM4NTAyMzkxOSIEZmxhZyIEYWRkciIEbm90ZSINJHQwMjU1NDYyNTU4MCINJHQwMjYwMTYyNjA1MCIMZGF0YVRvRGVsZXRlIgdtYXhNaW50Ig0kdDAyODg4NjI4OTU2IgZiaWROYnIiCmJhc2VIZWlnaHQiDSR0MDMxMzM4MzEzNzgiDSR0MDMxMzgzMzE0MTkiDSR0MDMyNjM5MzI3MTAiB2NhbGxlcjEiDSR0MDMyOTQ1MzMwMDYiDXJldHVybk1vbmV5VG8iCWJpZFN0YXR1cyICdHgiCHZlcmlmaWVyIgNpbnZOAQFhAQFiCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAWICAAABYwcAAWQJAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX29yYWNsZV9mZWUAAWUJAQV2YWx1ZQEJAKYIAQkBAWEBAhFjb25mX3NpZ253ZWJfZGFwcAABZgkBAWEBAhFjb25mX2ZlZV9yZWNlaXZlcgABZwMFAWMJAQV2YWx1ZQEJAKYIAQIjM010NFJHTUV5alNXWUFvY1RQcWQ1NXdkSFFRQjNQVTJVQ20JAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX3VzZXJzX2RhcHAAAWgJAQV2YWx1ZQEJAKYIAQkBAWEBAhNjb25mX3doaXRlbGlzdF9kYXBwAAFpCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9TSUdOAAFqCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0ROAAFrCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0RUAAFsAQAAAW0JAQFhAQIMY29uZl9hZG1pbl8xAQFuAQFiCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUBZAUBYgIfSW50ZWdlciB1bmRlZmluZSBvciAwIGluIG9yYWNsZQEBbwEBYgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFiAAABAXABAWIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBaAUBYgAAAQFxAQFiCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFAWIHAAFyAAcAAXMACgABdAkBAWEBAhRjb25mX2RlZmF1bHRfbGljZW5jZQABdQkBAWEBAhljb25mX2RlZmF1bHRfbGljZW5jZV9oYXNoAAF2CQELdmFsdWVPckVsc2UCCQCbCAIFAWcCFGNvbmZfZGFwcF9pc19ydW5uaW5nBgABdwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQFnAhRjb25mX21haW50ZW5hbmNlX21zZwIAAAF4AglTVVNQRU5ERUQAAXkCB1JFTU9WRUQAAXoCDFVOUkVHSVNURVJFRAABQQIHQUxMT1dFRAABQgkBAW4BCQCsAgICEmNlcnRpZmljYXRpb25fZmVlXwkA2AQBBQFpAQFDAwFEAUUBRgQBRwkAnQgCBQFlCQCsAgIJAKwCAgkArAICAghkYXRhX2ZjXwUBRAIBXwUBRQMJAAECBQFHAgZTdHJpbmcEAUgFAUcDCQEIY29udGFpbnMCBQFIBQFGBgcHAQFJAQFKAwkBCGNvbnRhaW5zAgUBSgIBLwMDCQBmAgBMCQCxAgEFAUoJAAACCQCxAgEJAJEDAgkAtQkCBQFKAgEvAAAAOwcJAGYCABAJALECAQkAkQMCCQC1CQIFAUoCAS8AAQcHAQFLAQFMCQAAAgkAsQIBBQFMAEABAU0BAU4JAKwCAgIMdXNlcl9zdGF0dXNfBQFOAQFPAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9kYXRlXwUBUAIBXwUBTgEBUQIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfbmFtZV8FAVACAV8FAU4BAVICAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X2Rlc2NfBQFQAgFfBQFOAQFTAgFOAVAJAKwCAgkArAICCQCsAgICEGFydF9kaXNwbGF5X2NpZF8FAVACAV8FAU4BAVQCAU4BUAkArAICCQCsAgIJAKwCAgIQYXJ0X2V4cG9ydF9oYXNoXwUBUAIBXwUBTgEBVQIBTgFQCQCsAgIJAKwCAgkArAICAg9hcnRfZXhwb3J0X2NpZF8FAVACAV8FAU4BAVYCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X21heG1pbnRfBQFQAgFfBQFOAQFXAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9zaWduaWRfBQFQAgFfBQFOAQFYAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9pc3N1ZWRfBQFQAgFfBQFOAQFZAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9vbnNhbGVfBQFQAgFfBQFOAQFaAgFOAVAJAKwCAgkArAICCQCsAgICEWFydF9saWNlbmNlX2hhc2hfBQFQAgFfBQFOAQJhYQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfbGljZW5jZV9jaWRfBQFQAgFfBQFOAQJhYgIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfdGFnc18FAVACAV8FAU4BAmFjAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF90eXBlXwUBUAIBXwUBTgECYWQCAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X25vdGVfBQFQAgFfBQFOAQJhZQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfY3Jhd2xlcl9jaWRfBQFQAgFfBQFOAQJhZgIBTgFQCQCsAgIJAKwCAgkArAICAg5hcnRfcm95YWx0aWVzXwUBUAIBXwUBTgECYWcCAU4BUAkArAICCQCsAgIJAKwCAgIKYXJ0X3ByaWNlXwUBUAIBXwUBTgECYWgCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X2VuZHNhbGVfBQFQAgFfBQFOAQJhaQIBTgFQCQCsAgIJAKwCAgkArAICAhJhcnRfYXNzZXRBY2NlcHRlZF8FAVACAV8FAU4BAmFqAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9mbGFnXwUBUAIBXwUBTgECYWsBAmFsCQCsAgICDWFydGlzdF9hZ2VudF8FAmFsAQJhbQECYWwJAKwCAgIVYXJ0aXN0X2FnZW50X3ByaW1hcnlfBQJhbAECYW4BAmFsCQCsAgICFGFydGlzdF9wdWJsaWNfYWdlbnRfBQJhbAECYW8BAmFsCQCsAgICHGFydGlzdF9wdWJsaWNfYWdlbnRfcHJpbWFyeV8FAmFsAQJhcAIBTgJhcQkArAICCQCsAgIJAKwCAgITZ2V0X2hhc2hieXR4aWRhZGRyXwUCYXECAV8FAU4BAmFyAQFGCQCsAgICEmdldF9vd25lcl9ieV9oYXNoXwUBRgECYXMCAU4CYXQJAKwCAgkArAICCQCsAgICEmdldF9hcnRpZGJ5c2lnbmlkXwUCYXQCAV8FAU4BAmF1AgFGAU4JAKwCAgIXZ2V0X3R4aWRfYnlfaGFzaF9vd25lcl8JANgEAQkA1BYBCQCbAwEJAKwCAgUBRgUBTgECYXYDAmF3AmF4AmF5AwkBASEBCQEBSQEFAmF3CQACAQIRV3JvbmcgRGlzcGxheSBDSUQDCQEBIQEJAQFJAQUCYXgJAAIBAhBXcm9uZyBFeHBvcnQgQ0lEAwMJAQIhPQIFAmF5AgAJAQEhAQkBAUkBBQJheQcJAAIBAhFXcm9uZyBMaWNlbmNlIENJRAYBAmF6AgJhQQJhQgMJAQEhAQkBAUsBBQJhQQkAAgECGEV4cG9ydCBIYXNoIDY0IGNoYXIuIG1heAMJAQEhAQkBAUsBBQJhQgkAAgECGUxpY2VuY2UgSGFzaCA2NCBjaGFyLiBtYXgGAQJhQwICYUQCYUUDCQAAAgkAsQIBBQJhRAAACQACAQIYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAZgIJALECAQUCYUQFAmFFCQACAQkArAICBQJhRAIMIGlzIHRvbyBsb25nBgECYUYBAU4EAmFHCQELdmFsdWVPckVsc2UCCQCdCAIFAWcJAQFNAQUBTgUBegMDCQAAAgUCYUcFAXoGCQAAAgUCYUcFAUECLlJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICJBY2NvdW50IiB0YWIDCQAAAgUCYUcFAXgCEUFjY291bnQgc3VzcGVuZGVkAwkAAAIFAmFHBQF5Ag9BY2NvdW50IHJlbW92ZWQCAAECYUgCAmF5AmFCBAFKAwkAAAIJALECAQUCYXkAAAUBdAUCYXkEAUwDCQAAAgkAsQIBBQJhQgAABQF1BQJhQgkAlAoCBQFKBQFMAQJhSQoBTgJhdwJheAJhSgJhQQJhSwJhTAJhTQJhTgJhTwQCYVAJAQJhRgEFAU4DCQECIT0CBQJhUAIACQACAQUCYVADCQAAAgkAsQIBBQJhdwAACQACAQIbRGlzcGxheSBDSUQgY2Fubm90IGJlIGVtcHR5AwkBASEBCQECYXYDBQJhdwUCYXgFAmFKCQACAQIQUHJvYmxlbSB3aXRoIENJRAMJAQEhAQkBAmF6AgUCYUEFAmFLCQACAQITUHJvYmxlbSB3aXRoIEhhc2hlcwMJAQEhAQkBAmFDAgUCYUwAZAkAAgECEjEwMCBDaGFyLiBtYXggbmFtZQMJAQEhAQkBAmFDAgUCYU0A6AcJAAIBAhoxMDAwIENoYXIuIG1heCBkZXNjcmlwdGlvbgMDCQBmAgAABQJhTwYJAGYCBQJhTwDoBwkAAgECM1JveWFsdGllcyBjYW5ub3QgYmUgbGVzcyB0aGFuIDAlIG9yIGhpZ2hlciB0aGFuIDEwJQMJAGYCCQCQAwEJALUJAgUCYU4CASwABQkAAgECCzUgdGFncyBtYXguAgABAmFRAQJhUgMJAAACCQCQAwEIBQJhUghwYXltZW50cwAACQACAQITTm8gcGF5bWVudCBhdHRhY2hlZAQCYVMJAQV2YWx1ZQEJAJEDAggFAmFSCHBheW1lbnRzAAAEAmFUCQEFdmFsdWUBCAUCYVMGYW1vdW50CQCUCgIFAmFTBQJhVAECYVUBAmFSBAJhVgkBAmFRAQUCYVIEAmFTCAUCYVYCXzEEAmFUCAUCYVYCXzIEAmFXAwMJAQlpc0RlZmluZWQBCAUCYVMHYXNzZXRJZAkAAAIIBQJhUwdhc3NldElkBQFpBwgFAmFTB2Fzc2V0SWQJAAIBAitPbmx5IFNJR04gdG9rZW4gYWNjZXB0ZWQgYXMgdHJhbnNhY3Rpb24gZmVlAwkBAiE9AgUCYVQFAUIJAAIBCQCsAgICGVBheW1lbnQgYW1vdW50IHNob3VsZCBiZSAJAKQDAQUBQgkAlAoCBQJhVAUCYVcBAmFYAgJhWQFQBAFHCQCaCAIFBHRoaXMJAQFYAgUCYVkFAVADCQABAgUBRwIDSW50BAJhWgUBRwMJAQIhPQIFAmFaAAAGBwcBAmJhAwJhUgJiYgJiYwQCYmQJAQJhUQEFAmFSBAJhUwgFAmJkAl8xBAJhVAgFAmJkAl8yBAJhVwMJAQEhAQkBCWlzRGVmaW5lZAEIBQJhUwdhc3NldElkBQR1bml0AwMJAGYCCQCxAgEFAmJiAAAJAAACCQDYBAEJAQV2YWx1ZQEIBQJhUwdhc3NldElkBQJiYgcIBQJhUwdhc3NldElkCQACAQIOV3JvbmcgYXNzZXQgaWQDAwkAAAIFAmFXBQR1bml0CQECIT0CBQJiYgIABwkAAgECDldyb25nIGFzc2V0IGlkAwkBAiE9AgUCYmMFAmFUCQACAQITUGF5bWVudCBkb24ndCBtYXRjaAkAlAoCBQJhVAUCYVcBAmJlAQJhVwMDAwMDCQECIT0CBQJhVwkA2AQBBQFpCQECIT0CBQJhVwkA2AQBBQFsBwkBAiE9AgUCYVcCBVdBVkVTBwkBAiE9AgUCYVcJANgEAQUBagcJAQIhPQIFAmFXCQDYBAEFAWsHCQACAQImT25seSBTSUdOLCBVU0ROLFVTRFQgb3IgV0FWRVMgYWNjZXB0ZWQGAQJiZgICYVcCYmcEAmJoAwUBYwAKCQEBbgECDndhdmVzX21pbl9zZWxsBAJiaQDAhD0EAmJqAwUBYwABCQBoAgUBQgACAwMDAwMDCQAAAgUCYVcJANgEAQUBagkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBawkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBaQkAZgIFAmJqBQJiZwcJAQIhPQIFAmJnAAAHBgMDAwkAAAIFAmFXCQDYBAEFAWwGCQAAAgUCYVcCBVdBVkVTCQBmAgUCYmgFAmJnBwkBAiE9AgUCYmcAAAcJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UGAQJiawECYVcDCQAAAgUCYVcCBVdBVkVTBQR1bml0CQDZBAEFAmFXAQJibAECYm0EAmJuCQEBYQEJAKwCAgUCYm0CBV9PUEVOAwkAAAIFAmJuAgAJAAIBAg1CaWQgbm90IGZvdW5kBAJibwkAtQkCBQJibgIBXwQCYnAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJibwABBAJicQkBAmJrAQkAkQMCBQJibwAAAwkAZwIAAAUCYnAJAAIBAgxXcm9uZyBhbW91bnQJAJQKAgUCYnAFAmJxAQJicgICYVICYnMDCQEBIQEFAXYJAAIBBQF3BAJidAMJAQIhPQIFAmJzAgAJAQt2YWx1ZU9yRWxzZQIJAQFwAQkArAICCQClCAEJAKcIAQkA2QQBBQJicwIJX2ZyZWVfdHhzAAAAAAQBTgMDCQAAAgkA2AQBCAgFAmFSBmNhbGxlcgVieXRlcwkApQgBBQR0aGlzCQBmAgUCYnQAAAcJAKUIAQkApwgBCQDZBAEFAmJzCQDYBAEICAUCYVIGY2FsbGVyBWJ5dGVzAwkAAAIFAU4FAU4EAmJ1AwMJAQIhPQIFAmJzAgAJAGYCBQJidAAABwkA/AcEBQFoAgl1c2VGcmVlVHgJAMwIAgkApQgBCQCnCAEJANkEAQUCYnMFA25pbAUDbmlsBQR1bml0AwkAAAIFAmJ1BQJidQkAlgoECQDYBAEIBQJhUg10cmFuc2FjdGlvbklkBQFOCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAZgIFAmJ0AAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmJ2AQJhUgMJAQEhAQUBdgkAAgEFAXcJAJUKAwkA2AQBCAUCYVINdHJhbnNhY3Rpb25JZAkA2AQBCAgFAmFSBmNhbGxlcgVieXRlcwgFCWxhc3RCbG9jawl0aW1lc3RhbXABAmJ3BgJhUgFQAmJ4AmJ5AmJ6AmJzBAJiQQkBAmJyAgUCYVIFAmJzAwkAAAIFAmJBBQJiQQQCYnQIBQJiQQJfNAQCYkIIBQJiQQJfMwQBTggFAmJBAl8yBAJiQwgFAmJBAl8xAwYJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQFOAgMgLyAFAmJ4AgMgLyAFAmJ6AgMgLyAFAmJzBAJiRAMDAwkAAAIFAU4FAmJ4CQECIT0CBQJiegIABwkBAiE9AgUCYnkCAAcGBwQCYkUJAQFvAQkBAmFoAgUBTgUBUAMDAwkBAiE9AgUCYkUAAAkAZwIFBmhlaWdodAUCYkUHCQEBIQEFAmJEBwkAAgECC1NhbGUgZW5kZWQuBAJiRgkAAAIFAU4FAmJ4BAJiRwkBAW8BAhB0b3RhbF9uZnRfaXNzdWVkBAFECQEBYQEJAQFXAgUCYngFAVAEAmJICQEBYQEJAQFRAgUCYngFAVADCQAAAgUCYkgCAAkAAgECEUFydCBkb2Vzbid0IGV4aXN0BAJiSQkBAXEBCQEBWQIFAmJ4BQFQBAJiSgkBAW8BCQEBWAIFAmJ4BQFQBAJiYwMFAmJGCQBoAgUBQgACCQEBbwEJAQJhZwIFAmJ4BQFQBAJiYgMFAmJGCQDYBAEFAWkJAQFhAQkBAmFpAgUCYngFAVAEAmJLCQEBbwEJAQFWAgUCYngFAVADAwMJAQEhAQUCYkQJAQEhAQUCYkYHAwMJAGcCAAAFAmJjBgkBASEBBQJiSQYJAGcCAAAFAmJLBwkAAgECEEFydCBub3QgZm9yIHNhbGUDAwMJAQEhAQUCYkQFAmJGBwkAZwIAAAUCYksHCQACAQIUTWF4IGlzc3VhYmxlIG5vdCBzZXQEAmFQCQECYUYBBQJieAMDBQJiRAkBAiE9AgUCYVACAAcJAAIBBQJhUAQCYm0JAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUBUAIBXwUCYngCAV8FAmJ6AgFfBQJieQQCYkwDBQJiRAkBAmJsAQUCYm0JAQJiYQMFAmFSBQJiYgUCYmMEAmFUCAUCYkwCXzEEAmFXCAUCYkwCXzIEAmJNCQELdmFsdWVPckVsc2UCCQCdCAIFAWcJAQJhawEFAmJ4BQFmBAJiTgkBC3ZhbHVlT3JFbHNlAgkAmggCBQFnCQECYW0BBQJieAAABAJiTwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQFnCQECYW4BBQJieAUBZgQCYlAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBZwkBAmFvAQUCYngAAAQCYlEJAQFwAQUCYngEAmJSAwkAZgIFAmJRBQZoZWlnaHQAAAMJAAACBQJhVwUBaQUBcgUBcwQCYlMJAGsDBQJhVAUCYlIAZAQCYlQDAwMJAQIhPQIFAmJNBQFmCQBmAgUCYk4AAAcJAGYCBQZoZWlnaHQFAmJRBwkAawMFAmFUBQJiTgCQTgAABAJiVQMDAwkBAiE9AgUCYk8FAWYJAGYCBQJiUAAABwkAZgIFBmhlaWdodAUCYlEHCQBrAwUCYVQFAmJQAJBOAAAEAmJWCQBlAgUCYVQFAmJTAwkAAAIFAmJKBQJiSwkAAgECDEFydCBzb2xkIG91dAQCYlcJAGQCBQJiSgABBAJiWAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCUNyZWF0b3I6IAUCYngCCiwKIEFydElEOiAFAVACCywKIFNpZ25JRDogBQFEAhEsCiBBcnR3b3JrIG5hbWU6IAUCYkgCCiwKIElzc3VlOiAJAKQDAQUCYlcCAS8JAKQDAQUCYksEAmJZCQDCCAUJAKwCAgIDU0FfCQCkAwEJAGQCBQJiRwABBQJiWAABAAAHBAJiWgkAuAgBBQJiWQQCY2EDAwkAAAIFAmJXBQJiSwYJAQEhAQUCYkkHBgQCY2IDAwMJAAACBQFOBQJieAkBAiE9AgUCYnoCAAcJAQIhPQIFAmJ5AgAHCQERQGV4dHJOYXRpdmUoMTA2MikBBQJieggFAmFSBmNhbGxlcgQCY2MDCQEBIQEJAQlpc0RlZmluZWQBBQJhVwIFV0FWRVMJANgEAQkBBXZhbHVlAQUCYVcEAmJuCQEBYQEJAKwCAgUCYm0CBV9PUEVOBAJjZAkBC0RlbGV0ZUVudHJ5AQkArAICBQJibQIFX09QRU4EAmNlCQELU3RyaW5nRW50cnkCCQCsAgIFAmJtAgdfQ0xPU0VECQCsAgIJAKwCAgUCYm4CAV8JAKQDAQUCYkIEAmNmCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCWFydF9zb2xkXwkApAMBBQJiVwIEX29mXwkApAMBBQJiSwIBXwUBUAIBXwUCYngEAmNnAwkBASEBBQJiRAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQFOAgFfCQCkAwEFAmJCAgFfBQJiQwIBXwkApAMBBQJiYwIBXwUCYmICAV8JANgEAQUCYloJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBBQJjYgIBXwkApAMBBQJiQgIBXwUCYkMCAV8JAKQDAQUCYVQCAV8FAmNjAgFfCQDYBAEFAmJaBAJjaAkBC1N0cmluZ0VudHJ5AgUCY2YFAmNnBAJjaQMJAQIhPQIFAmJUAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAWYJAGUCBQJiUwUCYlQFAmFXCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQJiTQUCYlQFAmFXBQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAWYFAmJTBQJhVwUDbmlsBAJjagMJAQIhPQIFAmJVAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAmJPBQJiVQUCYVcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAmJ4CQBlAgUCYlYFAmJVBQJhVwUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQJieAUCYlYFAmFXBQNuaWwEAmNrAwUCYnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAU4AAAUEdW5pdAUDbmlsBQNuaWwEAmNsCQDOCAIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFAmJ4BQFQBQJiVwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgICBG5mdF8JANgEAQUCYloFAmNmCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhB0b3RhbF9uZnRfaXNzdWVkCQBkAgUCYkcAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFoAgUCYngFAVAAAAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAVkCBQJieAUBUAUCY2EJAMwIAgUCYlkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY2IAAQUCYloFA25pbAUCY2kFAmNqBQJjawMFAmJECQDMCAIFAmNoCQDMCAIFAmNlCQDMCAIFAmNkBQJjbAkAzAgCBQJjaAUCY2wJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNtAQJjbgQBRwUCY24DCQABAgUBRwIGU3RyaW5nBAJjbwUBRwUCY28JAAIBAiRTcG9uc29yZWQgUHVibGljIEtleSBTdHJpbmcgZXhwZWN0ZWQKAmNwAQdzZXRDb25mAgFiAmNxBAFOCQClCAEIBQJjcAZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQFtCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQFOAwkBCGNvbnRhaW5zAgUBYgIFY29uZl8JAMwIAgkBC1N0cmluZ0VudHJ5AgUBYgUCY3EFA25pbAkAAgECIEVudHJpZXMgc3RhcnRpbmcgd2l0aCBjb25mXyBvbmx5CQACAQIiWW91IGFyZSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdGhpcwJhUgEKYWRkQXJ0d29yaw4BRgFEAmFMAmFNAmFOAmNyAmF3AmFBAmF4AmFCAmF5AmNzAmFPAmJzBAJjdAkBAmJyAgUCYVIFAmJzBAFQCAUCY3QCXzEEAU4IBQJjdAJfMgQCYkIIBQJjdAJfMwQCYnQIBQJjdAJfNAMJAQEhAQkBAUsBBQFGCQACAQIkSGFzaCBzaG91bGQgYmUgNjQgY2hhcmFjdGVycyBtYXhpbXVtBAJjdQkBAmFIAgUCYXkFAmFCBAJhSggFAmN1Al8xBAJhSwgFAmN1Al8yBAJjdgkBAmFJCgUBTgUCYXcFAmF4BQJhSgUCYUEFAmFLBQJhTAUCYU0FAmFOBQJhTwMJAQIhPQIFAmN2AgAJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEEAmN3CQBmAgkBAXABCQCsAgIFAU4CC19mcmVlX2Ryb3BzAAAEAmN4AwUCY3cJAJQKAgAABQFECQECYVUBBQJhUgQCYVQIBQJjeAJfMQQCYVcIBQJjeAJfMgMJAQEhAQkBCWlzRGVmaW5lZAEFAmFUCQACAQIUU29tZXRoaW5nIHdlbnQgd3JvbmcEAmN5CQEBYQEJAQJhdQIFAUYFAU4DCQECIT0CBQJjeQIACQACAQIUWW91IGFscmVhZHkgYWRkZWQgaXQEAmN6CQEBYQEJAQJhcgEFAUYDCQECIT0CBQJjegIACQACAQIXSGFzaCBhbHJlYWR5IHJlZ2lzdGVyZWQEAmNBCQEBQwMFAUQFAU4FAUYDCQEBIQEFAmNBCQACAQIsU2lnbiBDZXJ0aWZpY2F0ZSBub3QgZm91bmQgZm9yIHRoaXMgYWRkcmVzcy4EAmNCAwUCY3cJAPwHBAUBaAILdXNlRnJlZURyb3AJAMwIAgUBTgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCY0IFAmNCBAJjawMFAmJ0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFOAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFyAQUBRgUBTgkAzAgCCQELU3RyaW5nRW50cnkCCQECYXUCBQFGBQFOBQFQCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBTwIFAU4FAVAFAmJCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAgUBTgUBUAUCYUwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVICBQFOBQFQBQJhTQkAzAgCCQELU3RyaW5nRW50cnkCCQEBUwIFAU4FAVAFAmF3CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFVAgUBTgUBUAUCYXgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQCBQFOBQFQBQJhQQkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIFAU4FAVAFAmFLCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAU4FAVAFAmFKCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYwIFAU4FAVAFAmNyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIFAU4FAVAFAmFOCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFAU4FAVAAAAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIFAU4FAVAFAUQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUBTgUBUAAACQDMCAIJAQxCb29sZWFuRW50cnkCCQEBWQIFAU4FAVAHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhcwIFAU4FAUQFAVAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFwAgUBTgUBUAUBRgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWUCBQFOBQFQBQJjcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFmAgUBTgUBUAUCYU8JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAWYFAmFUBQFpBQNuaWwFAmNrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFSAQ11cGRhdGVBcnR3b3JrDQJhcQJhTAJhTQJhTgJjcgJhdwJhQQJheAJhQgJheQJjcwJhTwJicwMJAQEhAQUBdgkAAgEFAXcEAmNDCQECYnICBQJhUgUCYnMEAmJDCAUCY0MCXzEEAU4IBQJjQwJfMgQCYkIIBQJjQwJfMwQCYnQIBQJjQwJfNAQCY0QJAQJhSAIFAmF5BQJhQgQCYUoIBQJjRAJfMQQCYUsIBQJjRAJfMgQCY3YJAQJhSQoFAU4FAmF3BQJheAUCYUoFAmFBBQJhSwUCYUwFAmFNBQJhTgUCYU8DCQECIT0CBQJjdgIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAJjeQkBAWEBCQEBUQIFAU4FAmFxAwkAAAIFAmN5AgAJAAIBAg9FbnRyeSBub3QgZm91bmQEAmNFCQEBYQEJAQJhagIFAU4FAmFxAwkAAAIFAmNFAgdJTExFR0FMCQACAQIdQ2Fubm90IHVwZGF0ZSBJTExFR0FMIGFydHdvcmsDCQEBIQEJAQJhWAIFAU4FAmFxBAJjawMFAmJ0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFOAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVECBQFOBQJhcQUCYUwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVICBQFOBQJhcQUCYU0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVMCBQFOBQJhcQUCYXcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVUCBQFOBQJhcQUCYXgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQCBQFOBQJhcQUCYUEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgUBTgUCYXEFAmFKCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgUBTgUCYXEFAmFLCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIFAU4FAmFxBQJhTgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMCBQFOBQJhcQUCY3IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFlAgUBTgUCYXEFAmNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWYCBQFOBQJhcQUCYU8FA25pbAUCY2sJAAIBAg5BbHJlYWR5IG1pbnRlZAJhUgELZmxhZ0FydHdvcmsEAVACY0YCY0UCY0cEAmNICQECYnYBBQJhUgQCYkMIBQJjSAJfMQQBTggFAmNIAl8yAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUBbQkAzAgCCQClCAEFBHRoaXMFA25pbAUBTgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAICB0NPTlNFTlQJAMwIAgIACQDMCAICD0NIQU5HRV9SRVFVSVJFRAkAzAgCAgdGTEFHR0VECQDMCAICB0lMTEVHQUwFA25pbAUCY0UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFqAgUCY0YFAVAFAmNFCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIFAmNGBQFQBQJjRwUDbmlsCQACAQkArAICAg5Vbmtub3cgc3RhdHVzIAUCY0UJAAIBAhNZb3UgYXJlIG5vdCBhbGxvd2VkAmFSAQ1kZWxldGVBcnR3b3JrAgFQAmNGBAJjSQkBAmJ2AQUCYVIEAmJDCAUCY0kCXzEEAU4IBQJjSQJfMgQCYVkDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQFtCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQFOBQJjRgUBTgQCY3kJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBAWEBCQEBUQIFAmFZBQFQAiBObyBhcnQgbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwMJAAACBQJjeQIACQACAQIgTm8gYXJ0IG1hdGNoaW5nIGZvciB0aGlzIGFkZHJlc3MEAUYJAQFhAQkBAmFwAgUCYVkFAVADCQAAAgUBRgIACQACAQIlTm8gYXJ0IGhhc2ggbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwQBRAkBAWEBCQEBVwIFAmFZBQFQAwkAAAIFAUQCAAkAAgECE05vIFNJR04gSUQgbWF0Y2hpbmcEAmNKCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFPAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVECBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBUgIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFTAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVUCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBVAIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFaAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFhAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFjAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFiAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVYCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBVwIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFYAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVkCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWoCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWcCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWkCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYXIBBQFGCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhcwIFAmFZBQFECQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhdQIFAUYFAmFZCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhaAIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhZAIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhZQIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhZgIFAmFZBQFQBQNuaWwDCQEBIQEJAQJhWAIFAmFZBQFQAwkBASEBBQF2CQACAQUBdwUCY0oDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQFtCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQFOBQJjSgkAAgECKEFydCBhbHJlYWR5IG1pbnRlZCwgeW91IGNhbm5vdCBkZWxldGUgaXQCYVIBC3NlbGxBcnR3b3JrBgFQAmJnAmNLAmFXAmJFAmJzBAJjTAkBAmJyAgUCYVIFAmJzBAJiQwgFAmNMAl8xBAFOCAUCY0wCXzIEAmJCCAUCY0wCXzMEAmJ0CAUCY0wCXzQEAmJICQEBYQEJAQFRAgUBTgUBUAMJAAACBQJiSAIACQACAQIjVGhpcyBhcnQgZG9lc24ndCBtYXRjaCB5b3VyIGFjY291bnQEAmNFCQEBYQEJAQJhagIFAU4FAVADCQEPY29udGFpbnNFbGVtZW50AgkAzAgCAg9DSEFOR0VfUkVRVUlSRUQJAMwIAgIHRkxBR0dFRAkAzAgCAgdJTExFR0FMBQNuaWwFAmNFCQACAQIPRmxhZ2dlZCBhcnR3b3JrBAJjTQkBAW8BCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUBUAMJAGYCAAAFAmJFCQACAQIMTmVnYXRpdmUgZW5kAwMJAGYCBQJiRQAAAwkBAiE9AgUCY0sAAQYJAQIhPQIFAmJnAAAHCQACAQI6VGltZWQgb2ZmZXIgb25seSBhbGxvd2VkIGZvciB1bmlxdWUgZWRpdGlvbiBhbmQgb2ZmZXIgb25seQQCY04DCQAAAgUCYkUAAAAABQZoZWlnaHQDCQEBIQEJAQJiZQEFAmFXCQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchAwkBASEBCQECYmYCBQJhVwUCYmcJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEEAmFQCQECYUYBBQFOAwkBAiE9AgUCYVACAAkAAgEFAmFQBAJiSgkBAW8BCQEBWAIFAU4FAVAEAmJLCQEBbwEJAQFWAgUBTgUBUAMJAGYCBQJjSwBkCQACAQIcMTAwIGVkaXRpb25zIG1heCBwZXIgYXJ0d29yawMDCQECIT0CBQJiSgAACQAAAgUCYkoFAmJLBwkAAgECFE1heCBlZGl0aW9uIHJlYWNoZWQuAwMJAGYCBQJiSgAACQECIT0CBQJiSwUCY0sHCQACAQImQ2Fubm90IGNoYW5nZSBtYXhpbXVtIGlzc3VhYmxlIGFueW1vcmUDAwkAZgIFAmNNAAAJAQIhPQIFAmJLBQJjSwcJAAIBAjFDYW5ub3QgY2hhbmdlIG1heGltdW0gaXNzdWFibGUgd2l0aCBhY3RpdmUgb3JkZXJzBAJjYQMDCQBmAgUCYmcAAAkAZgIFAmNLAAAHBgcEAmNrAwUCYnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAU4AAAUEdW5pdAUDbmlsBQNuaWwJAM4IAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAVkCBQFOBQFQBQJjYQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFnAgUBTgUBUAUCYmcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUBTgUBUAUCY0sJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFpAgUBTgUBUAUCYVcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhaAIFAU4FAVAJAGQCBQJjTgUCYkUFA25pbAUCY2sCYVIBCmJ1eUFydHdvcmsCAVACYngJAQJidwYFAmFSBQFQBQJieAIAAgACAAJhUgEGc2V0QmlkAgFQAmJ4BAJjTwkBAmJ2AQUCYVIEAmJDCAUCY08CXzEEAU4IBQJjTwJfMgQCYkIIBQJjTwJfMwQCY1AJAQJhUQEFAmFSBAJhUwgFAmNQAl8xBAJhVAgFAmNQAl8yBAJhVwMJAQEhAQkBCWlzRGVmaW5lZAEIBQJhUwdhc3NldElkAgVXQVZFUwkA2AQBCQEFdmFsdWUBCAUCYVMHYXNzZXRJZAQCYkUJAQFvAQkBAmFoAgUCYngFAVADAwkBAiE9AgUCYkUAAAkAZwIFBmhlaWdodAUCYkUHCQACAQILU2FsZSBlbmRlZC4EAmNNCQEBbwEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQFQAwkBASEBCQECYmUBBQJhVwkAAgECEmFzc2V0IG5vdCBhY2NlcHRlZAMJAQEhAQkBAmJmAgUCYVcFAmFUCQACAQIOV3JvbmcgbWluIHNlbGwEAmJKCQEBbwEJAQFYAgUCYngFAVAEAmJLCQEBbwEJAQFWAgUCYngFAVADCQBnAgAABQJiSwkAAgECI05vIG1heCBlZGl0aW9uIHNldCBmb3IgdGhpcyBhcnR3b3JrAwkAZwIFAmJKBQJiSwkAAgECGFNvbGQgb3V0LCB5b3UgY2Fubm90IGJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUBUAIBXwUCYngCAV8FAU4CAV8FAmJDAgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICBQJhVwIBXwkApAMBBQJhVAIBXwkApAMBBQJiQgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FAVAJAGQCBQJjTQABBQNuaWwCYVIBCWFjY2VwdEJpZAUBUAJieAJieQJiegJicwQCY1EJAQJicgIFAmFSBQJicwQCYkMIBQJjUQJfMQQCY1IIBQJjUQJfMgQCYkIIBQJjUQJfMwQCYnQIBQJjUQJfNAMJAQIhPQIFAmNSBQJieAkAAgECGVlvdSBjYW5ub3QgZG8gdGhpcyBhY3Rpb24JAQJidwYFAmFSBQFQBQJieAUCYnkFAmJ6BQJicwJhUgEJY2FuY2VsQmlkBAFQAmJ4AmJ5AmJ6BAJjUwkBAmJ2AQUCYVIEAmJDCAUCY1MCXzEEAU4IBQJjUwJfMgQCYkIIBQJjUwJfMwMDCQECIT0CBQFOBQJiegkBAiE9AgUBTgUCYngHCQACAQIZWW91IGNhbm5vdCBkbyB0aGlzIGFjdGlvbgQCY1QDCQAAAgUBTgUCYngFAmJ6BQFOBAJjTQkBAW8BCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUBUAQCYm0JAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUBUAIBXwUCYngCAV8FAmJ6AgFfBQJieQQCYm4JAQFhAQkArAICBQJibQIFX09QRU4DCQAAAgUCYm4CAAkAAgECDUJpZCBub3QgZm91bmQEAmJvCQC1CQIFAmJuAgFfBAJhVwkBAmJrAQkAkQMCBQJibwAABAJjVQIIQ0FOQ0VMRUQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQJibQIFX09QRU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFAmJtAgFfBQJjVQkArAICCQCsAgIFAmJuAgFfCQCkAwEFAmJCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUBUAkAZQIFAmNNAAEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAmNUCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYm8AAQUCYVcFA25pbAECY1YBAmNXAAQBRwUCY1YDCQABAgUBRwIXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EAmNYBQFHAwMDAwkAAAIIBQJjWAhmdW5jdGlvbgIKYWRkQXJ0d29yawkAAAIIBQJjWARkQXBwBQR0aGlzBwkAAAIIBQJjWANmZWUAoMIeBwkAAAIIBQJjWApmZWVBc3NldElkBQR1bml0BwkA9AMDCAUCY1YJYm9keUJ5dGVzCQCRAwIIBQJjVgZwcm9vZnMAAAkA2QQBCQECY20BCQCRAwIIBQJjWARhcmdzAA0DAwMDCQAAAggFAmNYCGZ1bmN0aW9uAg11cGRhdGVBcnR3b3JrCQAAAggFAmNYBGRBcHAFBHRoaXMHCQAAAggFAmNYA2ZlZQCgwh4HCQAAAggFAmNYCmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJjVglib2R5Qnl0ZXMJAJEDAggFAmNWBnByb29mcwAACQDZBAEJAQJjbQEJAJEDAggFAmNYBGFyZ3MADAMDAwMJAAACCAUCY1gIZnVuY3Rpb24CC3NlbGxBcnR3b3JrCQAAAggFAmNYBGRBcHAFBHRoaXMHCQAAAggFAmNYA2ZlZQCgwh4HCQAAAggFAmNYCmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJjVglib2R5Qnl0ZXMJAJEDAggFAmNWBnByb29mcwAACQDZBAEJAQJjbQEJAJEDAggFAmNYBGFyZ3MABQMDAwMJAAACCAUCY1gIZnVuY3Rpb24CCWFjY2VwdEJpZAkAAAIIBQJjWARkQXBwBQR0aGlzBwkAAAIIBQJjWANmZWUAoMIeBwkAAAIIBQJjWApmZWVBc3NldElkBQR1bml0BwkAyBMDCAUCY1YJYm9keUJ5dGVzCQCRAwIIBQJjVgZwcm9vZnMAAAkA2QQBCQECY20BCQCRAwIIBQJjWARhcmdzAAQJAPQDAwgFAmNWCWJvZHlCeXRlcwkAkQMCCAUCY1YGcHJvb2ZzAAAIBQJjVg9zZW5kZXJQdWJsaWNLZXkJAPQDAwgFAmNWCWJvZHlCeXRlcwkAkQMCCAUCY1YGcHJvb2ZzAAAIBQJjVg9zZW5kZXJQdWJsaWNLZXkuUHD7", "height": 2503555, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: B4CodCUVKyjqr1qmM9dbnUzUVLwb8r6ZCquaCQvx3zTK Next: AZy6L8z3BeBcwc287AJVsqpC7meF9mpub17KjuGyVDut Diff:
OldNewDifferences
391391 else false)
392392 then toString(addressFromPublicKey(fromBase58String(bs)))
393393 else toBase58String(aR.caller.bytes)
394- let bu = if (if ((bs != ""))
395- then (bt > 0)
396- else false)
397- then invoke(h, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
398- else unit
399- if ((bu == bu))
400- then $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
394+ if ((N == N))
395+ then {
396+ let bu = if (if ((bs != ""))
397+ then (bt > 0)
398+ else false)
399+ then invoke(h, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
400+ else unit
401+ if ((bu == bu))
402+ then $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
403+ else throw("Strict value is not equal to itself.")
404+ }
401405 else throw("Strict value is not equal to itself.")
402406 }
403407
409413
410414 func bw (aR,P,bx,by,bz,bs) = {
411415 let bA = br(aR, bs)
412- let bB = bA._1
413- let N = bA._2
414- let bC = bA._3
415- let bt = bA._4
416- if (true)
417- then throw(((((((N + " / ") + bx) + " / ") + bz) + " / ") + bs))
418- else {
419- let bD = if (if (if ((N == bx))
420- then (bz != "")
421- else false)
422- then (by != "")
423- else false)
424- then true
425- else false
426- let bE = o(ah(N, P))
427- if (if (if ((bE != 0))
428- then (height >= bE)
429- else false)
430- then !(bD)
431- else false)
432- then throw("Sale ended.")
416+ if ((bA == bA))
417+ then {
418+ let bt = bA._4
419+ let bB = bA._3
420+ let N = bA._2
421+ let bC = bA._1
422+ if (true)
423+ then throw(((((((N + " / ") + bx) + " / ") + bz) + " / ") + bs))
433424 else {
434- let bF = (N == bx)
435- let bG = o("total_nft_issued")
436- let D = a(W(bx, P))
437- let bH = a(Q(bx, P))
438- if ((bH == ""))
439- then throw("Art doesn't exist")
425+ let bD = if (if (if ((N == bx))
426+ then (bz != "")
427+ else false)
428+ then (by != "")
429+ else false)
430+ then true
431+ else false
432+ let bE = o(ah(N, P))
433+ if (if (if ((bE != 0))
434+ then (height >= bE)
435+ else false)
436+ then !(bD)
437+ else false)
438+ then throw("Sale ended.")
440439 else {
441- let bI = q(Y(bx, P))
442- let bJ = o(X(bx, P))
443- let bc = if (bF)
444- then (B * 2)
445- else o(ag(bx, P))
446- let bb = if (bF)
447- then toBase58String(i)
448- else a(ai(bx, P))
449- let bK = o(V(bx, P))
450- if (if (if (!(bD))
451- then !(bF)
452- else false)
453- then if (if ((0 >= bc))
454- then true
455- else !(bI))
456- then true
457- else (0 >= bK)
458- else false)
459- then throw("Art not for sale")
460- else if (if (if (!(bD))
461- then bF
462- else false)
463- then (0 >= bK)
464- else false)
465- then throw("Max issuable not set")
466- else {
467- let aP = aF(bx)
468- if (if (bD)
469- then (aP != "")
440+ let bF = (N == bx)
441+ let bG = o("total_nft_issued")
442+ let D = a(W(bx, P))
443+ let bH = a(Q(bx, P))
444+ if ((bH == ""))
445+ then throw("Art doesn't exist")
446+ else {
447+ let bI = q(Y(bx, P))
448+ let bJ = o(X(bx, P))
449+ let bc = if (bF)
450+ then (B * 2)
451+ else o(ag(bx, P))
452+ let bb = if (bF)
453+ then toBase58String(i)
454+ else a(ai(bx, P))
455+ let bK = o(V(bx, P))
456+ if (if (if (!(bD))
457+ then !(bF)
458+ else false)
459+ then if (if ((0 >= bc))
460+ then true
461+ else !(bI))
462+ then true
463+ else (0 >= bK)
464+ else false)
465+ then throw("Art not for sale")
466+ else if (if (if (!(bD))
467+ then bF
470468 else false)
471- then throw(aP)
469+ then (0 >= bK)
470+ else false)
471+ then throw("Max issuable not set")
472472 else {
473- let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
474- let bL = if (bD)
475- then bl(bm)
476- else ba(aR, bb, bc)
477- let aT = bL._1
478- let aW = bL._2
479- let bM = valueOrElse(getString(g, ak(bx)), f)
480- let bN = valueOrElse(getInteger(g, am(bx)), 0)
481- let bO = valueOrElse(getString(g, an(bx)), f)
482- let bP = valueOrElse(getInteger(g, ao(bx)), 0)
483- let bQ = p(bx)
484- let bR = if ((bQ > height))
485- then 0
486- else if ((aW == i))
487- then r
488- else s
489- let bS = fraction(aT, bR, 100)
490- let bT = if (if (if ((bM != f))
491- then (bN > 0)
473+ let aP = aF(bx)
474+ if (if (bD)
475+ then (aP != "")
492476 else false)
493- then (height > bQ)
494- else false)
495- then fraction(aT, bN, 10000)
496- else 0
497- let bU = if (if (if ((bO != f))
498- then (bP > 0)
499- else false)
500- then (height > bQ)
501- else false)
502- then fraction(aT, bP, 10000)
503- else 0
504- let bV = (aT - bS)
505- if ((bJ == bK))
506- then throw("Art sold out")
477+ then throw(aP)
507478 else {
508- let bW = (bJ + 1)
509- let bX = ((((((((((("Creator: " + bx) + ",
479+ let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
480+ let bL = if (bD)
481+ then bl(bm)
482+ else ba(aR, bb, bc)
483+ let aT = bL._1
484+ let aW = bL._2
485+ let bM = valueOrElse(getString(g, ak(bx)), f)
486+ let bN = valueOrElse(getInteger(g, am(bx)), 0)
487+ let bO = valueOrElse(getString(g, an(bx)), f)
488+ let bP = valueOrElse(getInteger(g, ao(bx)), 0)
489+ let bQ = p(bx)
490+ let bR = if ((bQ > height))
491+ then 0
492+ else if ((aW == i))
493+ then r
494+ else s
495+ let bS = fraction(aT, bR, 100)
496+ let bT = if (if (if ((bM != f))
497+ then (bN > 0)
498+ else false)
499+ then (height > bQ)
500+ else false)
501+ then fraction(aT, bN, 10000)
502+ else 0
503+ let bU = if (if (if ((bO != f))
504+ then (bP > 0)
505+ else false)
506+ then (height > bQ)
507+ else false)
508+ then fraction(aT, bP, 10000)
509+ else 0
510+ let bV = (aT - bS)
511+ if ((bJ == bK))
512+ then throw("Art sold out")
513+ else {
514+ let bW = (bJ + 1)
515+ let bX = ((((((((((("Creator: " + bx) + ",
510516 ArtID: ") + P) + ",
511517 SignID: ") + D) + ",
512518 Artwork name: ") + bH) + ",
513519 Issue: ") + toString(bW)) + "/") + toString(bK))
514- let bY = Issue(("SA_" + toString((bG + 1))), bX, 1, 0, false)
515- let bZ = calculateAssetId(bY)
516- let ca = if (if ((bW == bK))
517- then true
518- else !(bI))
519- then false
520- else true
521- let cb = if (if (if ((N == bx))
522- then (bz != "")
523- else false)
524- then (by != "")
525- else false)
526- then addressFromStringValue(bz)
527- else aR.caller
528- let cc = if (!(isDefined(aW)))
529- then "WAVES"
530- else toBase58String(value(aW))
531- let bn = a((bm + "_OPEN"))
532- let cd = DeleteEntry((bm + "_OPEN"))
533- let ce = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
534- let cf = ((((((("art_sold_" + toString(bW)) + "_of_") + toString(bK)) + "_") + P) + "_") + bx)
535- let cg = if (!(bD))
536- then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(bZ))
537- else ((((((((((toString(cb) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cc) + "_") + toBase58String(bZ))
538- let ch = StringEntry(cf, cg)
539- let ci = if ((bT != 0))
540- then [ScriptTransfer(Address(fromBase58String(f)), (bS - bT), aW), ScriptTransfer(Address(fromBase58String(bM)), bT, aW)]
541- else [ScriptTransfer(Address(fromBase58String(f)), bS, aW)]
542- let cj = if ((bU != 0))
543- then [ScriptTransfer(Address(fromBase58String(bO)), bU, aW), ScriptTransfer(Address(fromBase58String(bx)), (bV - bU), aW)]
544- else [ScriptTransfer(Address(fromBase58String(bx)), bV, aW)]
545- let ck = if (bt)
546- then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
547- else nil
548- let cl = ((([IntegerEntry(X(bx, P), bW), StringEntry(("nft_" + toBase58String(bZ)), cf), IntegerEntry("total_nft_issued", (bG + 1)), IntegerEntry(ah(bx, P), 0), BooleanEntry(Y(bx, P), ca), bY, ScriptTransfer(cb, 1, bZ)] ++ ci) ++ cj) ++ ck)
549- if (bD)
550- then [ch, ce, cd] :: cl
551- else ch :: cl
520+ let bY = Issue(("SA_" + toString((bG + 1))), bX, 1, 0, false)
521+ let bZ = calculateAssetId(bY)
522+ let ca = if (if ((bW == bK))
523+ then true
524+ else !(bI))
525+ then false
526+ else true
527+ let cb = if (if (if ((N == bx))
528+ then (bz != "")
529+ else false)
530+ then (by != "")
531+ else false)
532+ then addressFromStringValue(bz)
533+ else aR.caller
534+ let cc = if (!(isDefined(aW)))
535+ then "WAVES"
536+ else toBase58String(value(aW))
537+ let bn = a((bm + "_OPEN"))
538+ let cd = DeleteEntry((bm + "_OPEN"))
539+ let ce = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bB)))
540+ let cf = ((((((("art_sold_" + toString(bW)) + "_of_") + toString(bK)) + "_") + P) + "_") + bx)
541+ let cg = if (!(bD))
542+ then ((((((((((N + "_") + toString(bB)) + "_") + bC) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(bZ))
543+ else ((((((((((toString(cb) + "_") + toString(bB)) + "_") + bC) + "_") + toString(aT)) + "_") + cc) + "_") + toBase58String(bZ))
544+ let ch = StringEntry(cf, cg)
545+ let ci = if ((bT != 0))
546+ then [ScriptTransfer(Address(fromBase58String(f)), (bS - bT), aW), ScriptTransfer(Address(fromBase58String(bM)), bT, aW)]
547+ else [ScriptTransfer(Address(fromBase58String(f)), bS, aW)]
548+ let cj = if ((bU != 0))
549+ then [ScriptTransfer(Address(fromBase58String(bO)), bU, aW), ScriptTransfer(Address(fromBase58String(bx)), (bV - bU), aW)]
550+ else [ScriptTransfer(Address(fromBase58String(bx)), bV, aW)]
551+ let ck = if (bt)
552+ then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
553+ else nil
554+ let cl = ((([IntegerEntry(X(bx, P), bW), StringEntry(("nft_" + toBase58String(bZ)), cf), IntegerEntry("total_nft_issued", (bG + 1)), IntegerEntry(ah(bx, P), 0), BooleanEntry(Y(bx, P), ca), bY, ScriptTransfer(cb, 1, bZ)] ++ ci) ++ cj) ++ ck)
555+ if (bD)
556+ then [ch, ce, cd] :: cl
557+ else ch :: cl
558+ }
552559 }
553560 }
554- }
561+ }
555562 }
556563 }
557564 }
565+ else throw("Strict value is not equal to itself.")
558566 }
559567
560568
586594 let ct = br(aR, bs)
587595 let P = ct._1
588596 let N = ct._2
589- let bC = ct._3
597+ let bB = ct._3
590598 let bt = ct._4
591599 if (!(K(F)))
592600 then throw("Hash should be 64 characters maximum")
627635 let ck = if (bt)
628636 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
629637 else nil
630- ([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), cr), 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), cs), IntegerEntry(af(N, P), aO), ScriptTransfer(Address(fromBase58String(f)), aT, i)] ++ ck)
638+ ([StringEntry(ar(F), N), StringEntry(au(F, N), P), IntegerEntry(O(N, P), bB), 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), cr), 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), cs), IntegerEntry(af(N, P), aO), ScriptTransfer(Address(fromBase58String(f)), aT, i)] ++ ck)
631639 }
632640 else throw("Strict value is not equal to itself.")
633641 }
645653 then throw(w)
646654 else {
647655 let cC = br(aR, bs)
648- let bB = cC._1
656+ let bC = cC._1
649657 let N = cC._2
650- let bC = cC._3
658+ let bB = cC._3
651659 let bt = cC._4
652660 let cD = aH(ay, aB)
653661 let aJ = cD._1
680688 @Callable(aR)
681689 func flagArtwork (P,cF,cE,cG) = {
682690 let cH = bv(aR)
683- let bB = cH._1
691+ let bC = cH._1
684692 let N = cH._2
685693 if (containsElement([m, toString(this)], N))
686694 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cE))
694702 @Callable(aR)
695703 func deleteArtwork (P,cF) = {
696704 let cI = bv(aR)
697- let bB = cI._1
705+ let bC = cI._1
698706 let N = cI._2
699707 let aY = if (containsElement([m, toString(this)], N))
700708 then cF
729737 @Callable(aR)
730738 func sellArtwork (P,bg,cK,aW,bE,bs) = {
731739 let cL = br(aR, bs)
732- let bB = cL._1
740+ let bC = cL._1
733741 let N = cL._2
734- let bC = cL._3
742+ let bB = cL._3
735743 let bt = cL._4
736744 let bH = a(Q(N, P))
737745 if ((bH == ""))
807815 @Callable(aR)
808816 func setBid (P,bx) = {
809817 let cO = bv(aR)
810- let bB = cO._1
818+ let bC = cO._1
811819 let N = cO._2
812- let bC = cO._3
820+ let bB = cO._3
813821 let cP = aQ(aR)
814822 let aS = cP._1
815823 let aT = cP._2
834842 then throw("No max edition set for this artwork")
835843 else if ((bJ >= bK))
836844 then throw("Sold out, you cannot bid")
837- else [StringEntry((((((((("bid_" + P) + "_") + bx) + "_") + N) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cM + 1))]
845+ else [StringEntry((((((((("bid_" + P) + "_") + bx) + "_") + N) + "_") + bC) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bB))), IntegerEntry(("current_bidamount_" + P), (cM + 1))]
838846 }
839847 }
840848 }
844852 @Callable(aR)
845853 func acceptBid (P,bx,by,bz,bs) = {
846854 let cQ = br(aR, bs)
847- let bB = cQ._1
855+ let bC = cQ._1
848856 let cR = cQ._2
849- let bC = cQ._3
857+ let bB = cQ._3
850858 let bt = cQ._4
851859 if ((cR != bx))
852860 then throw("You cannot do this action")
858866 @Callable(aR)
859867 func cancelBid (P,bx,by,bz) = {
860868 let cS = bv(aR)
861- let bB = cS._1
869+ let bC = cS._1
862870 let N = cS._2
863- let bC = cS._3
871+ let bB = cS._3
864872 if (if ((N != bz))
865873 then (N != bx)
866874 else false)
878886 let bo = split(bn, "_")
879887 let aW = bk(bo[0])
880888 let cU = "CANCELED"
881-[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cU), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cM - 1)), ScriptTransfer(Address(fromBase58String(cT)), parseIntValue(bo[1]), aW)]
889+[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cU), ((bn + "_") + toString(bB))), IntegerEntry(("current_bidamount_" + P), (cM - 1)), ScriptTransfer(Address(fromBase58String(cT)), parseIntValue(bo[1]), aW)]
882890 }
883891 }
884892 }
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 let N = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
390390 then (bt > 0)
391391 else false)
392392 then toString(addressFromPublicKey(fromBase58String(bs)))
393393 else toBase58String(aR.caller.bytes)
394- let bu = if (if ((bs != ""))
395- then (bt > 0)
396- else false)
397- then invoke(h, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
398- else unit
399- if ((bu == bu))
400- then $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
394+ if ((N == N))
395+ then {
396+ let bu = if (if ((bs != ""))
397+ then (bt > 0)
398+ else false)
399+ then invoke(h, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
400+ else unit
401+ if ((bu == bu))
402+ then $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
403+ else throw("Strict value is not equal to itself.")
404+ }
401405 else throw("Strict value is not equal to itself.")
402406 }
403407
404408
405409 func bv (aR) = if (!(v))
406410 then throw(w)
407411 else $Tuple3(toBase58String(aR.transactionId), toBase58String(aR.caller.bytes), lastBlock.timestamp)
408412
409413
410414 func bw (aR,P,bx,by,bz,bs) = {
411415 let bA = br(aR, bs)
412- let bB = bA._1
413- let N = bA._2
414- let bC = bA._3
415- let bt = bA._4
416- if (true)
417- then throw(((((((N + " / ") + bx) + " / ") + bz) + " / ") + bs))
418- else {
419- let bD = if (if (if ((N == bx))
420- then (bz != "")
421- else false)
422- then (by != "")
423- else false)
424- then true
425- else false
426- let bE = o(ah(N, P))
427- if (if (if ((bE != 0))
428- then (height >= bE)
429- else false)
430- then !(bD)
431- else false)
432- then throw("Sale ended.")
416+ if ((bA == bA))
417+ then {
418+ let bt = bA._4
419+ let bB = bA._3
420+ let N = bA._2
421+ let bC = bA._1
422+ if (true)
423+ then throw(((((((N + " / ") + bx) + " / ") + bz) + " / ") + bs))
433424 else {
434- let bF = (N == bx)
435- let bG = o("total_nft_issued")
436- let D = a(W(bx, P))
437- let bH = a(Q(bx, P))
438- if ((bH == ""))
439- then throw("Art doesn't exist")
425+ let bD = if (if (if ((N == bx))
426+ then (bz != "")
427+ else false)
428+ then (by != "")
429+ else false)
430+ then true
431+ else false
432+ let bE = o(ah(N, P))
433+ if (if (if ((bE != 0))
434+ then (height >= bE)
435+ else false)
436+ then !(bD)
437+ else false)
438+ then throw("Sale ended.")
440439 else {
441- let bI = q(Y(bx, P))
442- let bJ = o(X(bx, P))
443- let bc = if (bF)
444- then (B * 2)
445- else o(ag(bx, P))
446- let bb = if (bF)
447- then toBase58String(i)
448- else a(ai(bx, P))
449- let bK = o(V(bx, P))
450- if (if (if (!(bD))
451- then !(bF)
452- else false)
453- then if (if ((0 >= bc))
454- then true
455- else !(bI))
456- then true
457- else (0 >= bK)
458- else false)
459- then throw("Art not for sale")
460- else if (if (if (!(bD))
461- then bF
462- else false)
463- then (0 >= bK)
464- else false)
465- then throw("Max issuable not set")
466- else {
467- let aP = aF(bx)
468- if (if (bD)
469- then (aP != "")
440+ let bF = (N == bx)
441+ let bG = o("total_nft_issued")
442+ let D = a(W(bx, P))
443+ let bH = a(Q(bx, P))
444+ if ((bH == ""))
445+ then throw("Art doesn't exist")
446+ else {
447+ let bI = q(Y(bx, P))
448+ let bJ = o(X(bx, P))
449+ let bc = if (bF)
450+ then (B * 2)
451+ else o(ag(bx, P))
452+ let bb = if (bF)
453+ then toBase58String(i)
454+ else a(ai(bx, P))
455+ let bK = o(V(bx, P))
456+ if (if (if (!(bD))
457+ then !(bF)
458+ else false)
459+ then if (if ((0 >= bc))
460+ then true
461+ else !(bI))
462+ then true
463+ else (0 >= bK)
464+ else false)
465+ then throw("Art not for sale")
466+ else if (if (if (!(bD))
467+ then bF
470468 else false)
471- then throw(aP)
469+ then (0 >= bK)
470+ else false)
471+ then throw("Max issuable not set")
472472 else {
473- let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
474- let bL = if (bD)
475- then bl(bm)
476- else ba(aR, bb, bc)
477- let aT = bL._1
478- let aW = bL._2
479- let bM = valueOrElse(getString(g, ak(bx)), f)
480- let bN = valueOrElse(getInteger(g, am(bx)), 0)
481- let bO = valueOrElse(getString(g, an(bx)), f)
482- let bP = valueOrElse(getInteger(g, ao(bx)), 0)
483- let bQ = p(bx)
484- let bR = if ((bQ > height))
485- then 0
486- else if ((aW == i))
487- then r
488- else s
489- let bS = fraction(aT, bR, 100)
490- let bT = if (if (if ((bM != f))
491- then (bN > 0)
473+ let aP = aF(bx)
474+ if (if (bD)
475+ then (aP != "")
492476 else false)
493- then (height > bQ)
494- else false)
495- then fraction(aT, bN, 10000)
496- else 0
497- let bU = if (if (if ((bO != f))
498- then (bP > 0)
499- else false)
500- then (height > bQ)
501- else false)
502- then fraction(aT, bP, 10000)
503- else 0
504- let bV = (aT - bS)
505- if ((bJ == bK))
506- then throw("Art sold out")
477+ then throw(aP)
507478 else {
508- let bW = (bJ + 1)
509- let bX = ((((((((((("Creator: " + bx) + ",
479+ let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
480+ let bL = if (bD)
481+ then bl(bm)
482+ else ba(aR, bb, bc)
483+ let aT = bL._1
484+ let aW = bL._2
485+ let bM = valueOrElse(getString(g, ak(bx)), f)
486+ let bN = valueOrElse(getInteger(g, am(bx)), 0)
487+ let bO = valueOrElse(getString(g, an(bx)), f)
488+ let bP = valueOrElse(getInteger(g, ao(bx)), 0)
489+ let bQ = p(bx)
490+ let bR = if ((bQ > height))
491+ then 0
492+ else if ((aW == i))
493+ then r
494+ else s
495+ let bS = fraction(aT, bR, 100)
496+ let bT = if (if (if ((bM != f))
497+ then (bN > 0)
498+ else false)
499+ then (height > bQ)
500+ else false)
501+ then fraction(aT, bN, 10000)
502+ else 0
503+ let bU = if (if (if ((bO != f))
504+ then (bP > 0)
505+ else false)
506+ then (height > bQ)
507+ else false)
508+ then fraction(aT, bP, 10000)
509+ else 0
510+ let bV = (aT - bS)
511+ if ((bJ == bK))
512+ then throw("Art sold out")
513+ else {
514+ let bW = (bJ + 1)
515+ let bX = ((((((((((("Creator: " + bx) + ",
510516 ArtID: ") + P) + ",
511517 SignID: ") + D) + ",
512518 Artwork name: ") + bH) + ",
513519 Issue: ") + toString(bW)) + "/") + toString(bK))
514- let bY = Issue(("SA_" + toString((bG + 1))), bX, 1, 0, false)
515- let bZ = calculateAssetId(bY)
516- let ca = if (if ((bW == bK))
517- then true
518- else !(bI))
519- then false
520- else true
521- let cb = if (if (if ((N == bx))
522- then (bz != "")
523- else false)
524- then (by != "")
525- else false)
526- then addressFromStringValue(bz)
527- else aR.caller
528- let cc = if (!(isDefined(aW)))
529- then "WAVES"
530- else toBase58String(value(aW))
531- let bn = a((bm + "_OPEN"))
532- let cd = DeleteEntry((bm + "_OPEN"))
533- let ce = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
534- let cf = ((((((("art_sold_" + toString(bW)) + "_of_") + toString(bK)) + "_") + P) + "_") + bx)
535- let cg = if (!(bD))
536- then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(bZ))
537- else ((((((((((toString(cb) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cc) + "_") + toBase58String(bZ))
538- let ch = StringEntry(cf, cg)
539- let ci = if ((bT != 0))
540- then [ScriptTransfer(Address(fromBase58String(f)), (bS - bT), aW), ScriptTransfer(Address(fromBase58String(bM)), bT, aW)]
541- else [ScriptTransfer(Address(fromBase58String(f)), bS, aW)]
542- let cj = if ((bU != 0))
543- then [ScriptTransfer(Address(fromBase58String(bO)), bU, aW), ScriptTransfer(Address(fromBase58String(bx)), (bV - bU), aW)]
544- else [ScriptTransfer(Address(fromBase58String(bx)), bV, aW)]
545- let ck = if (bt)
546- then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
547- else nil
548- let cl = ((([IntegerEntry(X(bx, P), bW), StringEntry(("nft_" + toBase58String(bZ)), cf), IntegerEntry("total_nft_issued", (bG + 1)), IntegerEntry(ah(bx, P), 0), BooleanEntry(Y(bx, P), ca), bY, ScriptTransfer(cb, 1, bZ)] ++ ci) ++ cj) ++ ck)
549- if (bD)
550- then [ch, ce, cd] :: cl
551- else ch :: cl
520+ let bY = Issue(("SA_" + toString((bG + 1))), bX, 1, 0, false)
521+ let bZ = calculateAssetId(bY)
522+ let ca = if (if ((bW == bK))
523+ then true
524+ else !(bI))
525+ then false
526+ else true
527+ let cb = if (if (if ((N == bx))
528+ then (bz != "")
529+ else false)
530+ then (by != "")
531+ else false)
532+ then addressFromStringValue(bz)
533+ else aR.caller
534+ let cc = if (!(isDefined(aW)))
535+ then "WAVES"
536+ else toBase58String(value(aW))
537+ let bn = a((bm + "_OPEN"))
538+ let cd = DeleteEntry((bm + "_OPEN"))
539+ let ce = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bB)))
540+ let cf = ((((((("art_sold_" + toString(bW)) + "_of_") + toString(bK)) + "_") + P) + "_") + bx)
541+ let cg = if (!(bD))
542+ then ((((((((((N + "_") + toString(bB)) + "_") + bC) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(bZ))
543+ else ((((((((((toString(cb) + "_") + toString(bB)) + "_") + bC) + "_") + toString(aT)) + "_") + cc) + "_") + toBase58String(bZ))
544+ let ch = StringEntry(cf, cg)
545+ let ci = if ((bT != 0))
546+ then [ScriptTransfer(Address(fromBase58String(f)), (bS - bT), aW), ScriptTransfer(Address(fromBase58String(bM)), bT, aW)]
547+ else [ScriptTransfer(Address(fromBase58String(f)), bS, aW)]
548+ let cj = if ((bU != 0))
549+ then [ScriptTransfer(Address(fromBase58String(bO)), bU, aW), ScriptTransfer(Address(fromBase58String(bx)), (bV - bU), aW)]
550+ else [ScriptTransfer(Address(fromBase58String(bx)), bV, aW)]
551+ let ck = if (bt)
552+ then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
553+ else nil
554+ let cl = ((([IntegerEntry(X(bx, P), bW), StringEntry(("nft_" + toBase58String(bZ)), cf), IntegerEntry("total_nft_issued", (bG + 1)), IntegerEntry(ah(bx, P), 0), BooleanEntry(Y(bx, P), ca), bY, ScriptTransfer(cb, 1, bZ)] ++ ci) ++ cj) ++ ck)
555+ if (bD)
556+ then [ch, ce, cd] :: cl
557+ else ch :: cl
558+ }
552559 }
553560 }
554- }
561+ }
555562 }
556563 }
557564 }
565+ else throw("Strict value is not equal to itself.")
558566 }
559567
560568
561569 func cm (cn) = {
562570 let G = cn
563571 if ($isInstanceOf(G, "String"))
564572 then {
565573 let co = G
566574 co
567575 }
568576 else throw("Sponsored Public Key String expected")
569577 }
570578
571579
572580 @Callable(cp)
573581 func setConf (b,cq) = {
574582 let N = toString(cp.caller)
575583 if (containsElement([m, toString(this)], N))
576584 then if (contains(b, "conf_"))
577585 then [StringEntry(b, cq)]
578586 else throw("Entries starting with conf_ only")
579587 else throw("You are not allowed to change this")
580588 }
581589
582590
583591
584592 @Callable(aR)
585593 func addArtwork (F,D,aL,aM,aN,cr,aw,aA,ax,aB,ay,cs,aO,bs) = {
586594 let ct = br(aR, bs)
587595 let P = ct._1
588596 let N = ct._2
589- let bC = ct._3
597+ let bB = ct._3
590598 let bt = ct._4
591599 if (!(K(F)))
592600 then throw("Hash should be 64 characters maximum")
593601 else {
594602 let cu = aH(ay, aB)
595603 let aJ = cu._1
596604 let aK = cu._2
597605 let cv = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
598606 if ((cv != ""))
599607 then throw("Something went wrong!")
600608 else {
601609 let cw = (p((N + "_free_drops")) > 0)
602610 let cx = if (cw)
603611 then $Tuple2(0, D)
604612 else aU(aR)
605613 let aT = cx._1
606614 let aW = cx._2
607615 if (!(isDefined(aT)))
608616 then throw("Something went wrong")
609617 else {
610618 let cy = a(au(F, N))
611619 if ((cy != ""))
612620 then throw("You already added it")
613621 else {
614622 let cz = a(ar(F))
615623 if ((cz != ""))
616624 then throw("Hash already registered")
617625 else {
618626 let cA = C(D, N, F)
619627 if (!(cA))
620628 then throw("Sign Certificate not found for this address.")
621629 else {
622630 let cB = if (cw)
623631 then invoke(h, "useFreeDrop", [N], nil)
624632 else unit
625633 if ((cB == cB))
626634 then {
627635 let ck = if (bt)
628636 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
629637 else nil
630- ([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), cr), 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), cs), IntegerEntry(af(N, P), aO), ScriptTransfer(Address(fromBase58String(f)), aT, i)] ++ ck)
638+ ([StringEntry(ar(F), N), StringEntry(au(F, N), P), IntegerEntry(O(N, P), bB), 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), cr), 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), cs), IntegerEntry(af(N, P), aO), ScriptTransfer(Address(fromBase58String(f)), aT, i)] ++ ck)
631639 }
632640 else throw("Strict value is not equal to itself.")
633641 }
634642 }
635643 }
636644 }
637645 }
638646 }
639647 }
640648
641649
642650
643651 @Callable(aR)
644652 func updateArtwork (aq,aL,aM,aN,cr,aw,aA,ax,aB,ay,cs,aO,bs) = if (!(v))
645653 then throw(w)
646654 else {
647655 let cC = br(aR, bs)
648- let bB = cC._1
656+ let bC = cC._1
649657 let N = cC._2
650- let bC = cC._3
658+ let bB = cC._3
651659 let bt = cC._4
652660 let cD = aH(ay, aB)
653661 let aJ = cD._1
654662 let aK = cD._2
655663 let cv = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
656664 if ((cv != ""))
657665 then throw("Something went wrong!")
658666 else {
659667 let cy = a(Q(N, aq))
660668 if ((cy == ""))
661669 then throw("Entry not found")
662670 else {
663671 let cE = a(aj(N, aq))
664672 if ((cE == "ILLEGAL"))
665673 then throw("Cannot update ILLEGAL artwork")
666674 else if (!(aX(N, aq)))
667675 then {
668676 let ck = if (bt)
669677 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
670678 else nil
671679 ([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), cr), StringEntry(ae(N, aq), cs), IntegerEntry(af(N, aq), aO)] ++ ck)
672680 }
673681 else throw("Already minted")
674682 }
675683 }
676684 }
677685
678686
679687
680688 @Callable(aR)
681689 func flagArtwork (P,cF,cE,cG) = {
682690 let cH = bv(aR)
683- let bB = cH._1
691+ let bC = cH._1
684692 let N = cH._2
685693 if (containsElement([m, toString(this)], N))
686694 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cE))
687695 then [StringEntry(aj(cF, P), cE), StringEntry(ad(cF, P), cG)]
688696 else throw(("Unknow status " + cE))
689697 else throw("You are not allowed")
690698 }
691699
692700
693701
694702 @Callable(aR)
695703 func deleteArtwork (P,cF) = {
696704 let cI = bv(aR)
697- let bB = cI._1
705+ let bC = cI._1
698706 let N = cI._2
699707 let aY = if (containsElement([m, toString(this)], N))
700708 then cF
701709 else N
702710 let cy = valueOrErrorMessage(a(Q(aY, P)), "No art matching for this address")
703711 if ((cy == ""))
704712 then throw("No art matching for this address")
705713 else {
706714 let F = a(ap(aY, P))
707715 if ((F == ""))
708716 then throw("No art hash matching for this address")
709717 else {
710718 let D = a(W(aY, P))
711719 if ((D == ""))
712720 then throw("No SIGN ID matching")
713721 else {
714722 let cJ = [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))]
715723 if (!(aX(aY, P)))
716724 then if (!(v))
717725 then throw(w)
718726 else cJ
719727 else if (containsElement([m, toString(this)], N))
720728 then cJ
721729 else throw("Art already minted, you cannot delete it")
722730 }
723731 }
724732 }
725733 }
726734
727735
728736
729737 @Callable(aR)
730738 func sellArtwork (P,bg,cK,aW,bE,bs) = {
731739 let cL = br(aR, bs)
732- let bB = cL._1
740+ let bC = cL._1
733741 let N = cL._2
734- let bC = cL._3
742+ let bB = cL._3
735743 let bt = cL._4
736744 let bH = a(Q(N, P))
737745 if ((bH == ""))
738746 then throw("This art doesn't match your account")
739747 else {
740748 let cE = a(aj(N, P))
741749 if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cE))
742750 then throw("Flagged artwork")
743751 else {
744752 let cM = o(("current_bidamount_" + P))
745753 if ((0 > bE))
746754 then throw("Negative end")
747755 else if (if ((bE > 0))
748756 then if ((cK != 1))
749757 then true
750758 else (bg != 0)
751759 else false)
752760 then throw("Timed offer only allowed for unique edition and offer only")
753761 else {
754762 let cN = if ((bE == 0))
755763 then 0
756764 else height
757765 if (!(be(aW)))
758766 then throw("Something went wrong!")
759767 else if (!(bf(aW, bg)))
760768 then throw("Something went wrong!")
761769 else {
762770 let aP = aF(N)
763771 if ((aP != ""))
764772 then throw(aP)
765773 else {
766774 let bJ = o(X(N, P))
767775 let bK = o(V(N, P))
768776 if ((cK > 100))
769777 then throw("100 editions max per artwork")
770778 else if (if ((bJ != 0))
771779 then (bJ == bK)
772780 else false)
773781 then throw("Max edition reached.")
774782 else if (if ((bJ > 0))
775783 then (bK != cK)
776784 else false)
777785 then throw("Cannot change maximum issuable anymore")
778786 else if (if ((cM > 0))
779787 then (bK != cK)
780788 else false)
781789 then throw("Cannot change maximum issuable with active orders")
782790 else {
783791 let ca = if (if ((bg > 0))
784792 then (cK > 0)
785793 else false)
786794 then true
787795 else false
788796 let ck = if (bt)
789797 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
790798 else nil
791799 ([BooleanEntry(Y(N, P), ca), IntegerEntry(ag(N, P), bg), IntegerEntry(V(N, P), cK), StringEntry(ai(N, P), aW), IntegerEntry(ah(N, P), (cN + bE))] ++ ck)
792800 }
793801 }
794802 }
795803 }
796804 }
797805 }
798806 }
799807
800808
801809
802810 @Callable(aR)
803811 func buyArtwork (P,bx) = bw(aR, P, bx, "", "", "")
804812
805813
806814
807815 @Callable(aR)
808816 func setBid (P,bx) = {
809817 let cO = bv(aR)
810- let bB = cO._1
818+ let bC = cO._1
811819 let N = cO._2
812- let bC = cO._3
820+ let bB = cO._3
813821 let cP = aQ(aR)
814822 let aS = cP._1
815823 let aT = cP._2
816824 let aW = if (!(isDefined(aS.assetId)))
817825 then "WAVES"
818826 else toBase58String(value(aS.assetId))
819827 let bE = o(ah(bx, P))
820828 if (if ((bE != 0))
821829 then (height >= bE)
822830 else false)
823831 then throw("Sale ended.")
824832 else {
825833 let cM = o(("current_bidamount_" + P))
826834 if (!(be(aW)))
827835 then throw("asset not accepted")
828836 else if (!(bf(aW, aT)))
829837 then throw("Wrong min sell")
830838 else {
831839 let bJ = o(X(bx, P))
832840 let bK = o(V(bx, P))
833841 if ((0 >= bK))
834842 then throw("No max edition set for this artwork")
835843 else if ((bJ >= bK))
836844 then throw("Sold out, you cannot bid")
837- else [StringEntry((((((((("bid_" + P) + "_") + bx) + "_") + N) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cM + 1))]
845+ else [StringEntry((((((((("bid_" + P) + "_") + bx) + "_") + N) + "_") + bC) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bB))), IntegerEntry(("current_bidamount_" + P), (cM + 1))]
838846 }
839847 }
840848 }
841849
842850
843851
844852 @Callable(aR)
845853 func acceptBid (P,bx,by,bz,bs) = {
846854 let cQ = br(aR, bs)
847- let bB = cQ._1
855+ let bC = cQ._1
848856 let cR = cQ._2
849- let bC = cQ._3
857+ let bB = cQ._3
850858 let bt = cQ._4
851859 if ((cR != bx))
852860 then throw("You cannot do this action")
853861 else bw(aR, P, bx, by, bz, bs)
854862 }
855863
856864
857865
858866 @Callable(aR)
859867 func cancelBid (P,bx,by,bz) = {
860868 let cS = bv(aR)
861- let bB = cS._1
869+ let bC = cS._1
862870 let N = cS._2
863- let bC = cS._3
871+ let bB = cS._3
864872 if (if ((N != bz))
865873 then (N != bx)
866874 else false)
867875 then throw("You cannot do this action")
868876 else {
869877 let cT = if ((N == bx))
870878 then bz
871879 else N
872880 let cM = o(("current_bidamount_" + P))
873881 let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
874882 let bn = a((bm + "_OPEN"))
875883 if ((bn == ""))
876884 then throw("Bid not found")
877885 else {
878886 let bo = split(bn, "_")
879887 let aW = bk(bo[0])
880888 let cU = "CANCELED"
881-[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cU), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cM - 1)), ScriptTransfer(Address(fromBase58String(cT)), parseIntValue(bo[1]), aW)]
889+[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cU), ((bn + "_") + toString(bB))), IntegerEntry(("current_bidamount_" + P), (cM - 1)), ScriptTransfer(Address(fromBase58String(cT)), parseIntValue(bo[1]), aW)]
882890 }
883891 }
884892 }
885893
886894
887895 @Verifier(cV)
888896 func cW () = {
889897 let G = cV
890898 if ($isInstanceOf(G, "InvokeScriptTransaction"))
891899 then {
892900 let cX = G
893901 if (if (if (if ((cX.function == "addArtwork"))
894902 then (cX.dApp == this)
895903 else false)
896904 then (cX.fee == 500000)
897905 else false)
898906 then (cX.feeAssetId == unit)
899907 else false)
900908 then sigVerify(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[13])))
901909 else if (if (if (if ((cX.function == "updateArtwork"))
902910 then (cX.dApp == this)
903911 else false)
904912 then (cX.fee == 500000)
905913 else false)
906914 then (cX.feeAssetId == unit)
907915 else false)
908916 then sigVerify(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[12])))
909917 else if (if (if (if ((cX.function == "sellArtwork"))
910918 then (cX.dApp == this)
911919 else false)
912920 then (cX.fee == 500000)
913921 else false)
914922 then (cX.feeAssetId == unit)
915923 else false)
916924 then sigVerify(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[5])))
917925 else if (if (if (if ((cX.function == "acceptBid"))
918926 then (cX.dApp == this)
919927 else false)
920928 then (cX.fee == 500000)
921929 else false)
922930 then (cX.feeAssetId == unit)
923931 else false)
924932 then sigVerify_128Kb(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[4])))
925933 else sigVerify(cV.bodyBytes, cV.proofs[0], cV.senderPublicKey)
926934 }
927935 else sigVerify(cV.bodyBytes, cV.proofs[0], cV.senderPublicKey)
928936 }
929937

github/deemru/w8io/873ac7e 
122.07 ms