tx · BXaP3CSjxv9kNYcLemCMqvCWyrWJhHfRraArKYbQtRWg

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.19000000 Waves

2023.03.24 07:30 [2503607] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "BXaP3CSjxv9kNYcLemCMqvCWyrWJhHfRraArKYbQtRWg", "fee": 19000000, "feeAssetId": null, "timestamp": 1679632277123, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "4jcm4wzpXpa3xgb5G6owm6auBirMuaZyEEFy8kz6FXBFBydGMeiwJt5X8YCKd9EcqbgxjpLFEMpq27ypuLoiGeid" ], "script": "base64:BgLmFAgCEgQKAggIEhAKDggICAgICAgICAgICAEIEg8KDQgICAgICAgICAgIAQgSBgoECAgICBIECgIICBIICgYIAQEIAQgSBAoCCAgSBAoCCAgSBwoFCAgICAgSBgoECAgICCIOZ2V0U3RyaW5nQnlLZXkiA2tleSIIdW5pdFRlc3QiCW9yYWNsZUZlZSIIc2lnbkRhcHAiC2ZlZVJlY2VpdmVyIgh1c2VyRGFwcCINd2hpdGVsaXN0RGFwcCILc2lnbkFzc2V0SWQiC3VzZG5Bc3NldElkIgt1c2R0QXNzZXRJZCIMd2F2ZXNBc3NldElkIgVjaHJpcyIZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZSIPZ2V0SW50ZWdlckJ5S2V5Ig5jaGVja1doaXRlbGlzdCIPZ2V0Qm9vbGVhbkJ5S2V5IgdzaWduQ3V0Igt1c2RuV2F2ZUN1dCIOZGVmYXVsdExpY2VuY2UiEmRlZmF1bHRIYXNoTGljZW5jZSILZGFwcFJ1bm5pbmciDm1haW50ZW5hbmNlTVNHIg11c2VyU3VzcGVuZGVkIgt1c2VyUmVtb3ZlZCIQdXNlclVucmVnaXN0ZXJlZCILdXNlckFsbG93ZWQiGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UiFGNoZWNrU2lnbkNlcnRpZmljYXRlIgZzaWduSUQiBU93bmVyIgpzaGEyNTZIYXNoIgckbWF0Y2gwIgFhIgt2YWxpZGF0ZUNJRCIDY2lkIgx2YWxpZGF0ZUhhc2giBGhhc2giDWtleVVzZXJTdGF0dXMiBmNhbGxlciIHa2V5RGF0ZSIFYXJ0SWQiB2tleU5hbWUiB2tleURlc2MiDWtleURpc3BsYXlDaWQiDWtleUV4cG9ydEhhc2giDGtleUV4cG9ydENpZCIKa2V5TWF4TWludCIJa2V5U2lnbklEIglrZXlJc3N1ZWQiCWtleU9uU2FsZSIOa2V5TGljZW5jZUhhc2giDWtleUxpY2VuY2VDaWQiB2tleVRhZ3MiB2tleVR5cGUiB2tleU5vdGUiCmtleUNyYXdsZXIiDGtleVJveWFsdGllcyIIa2V5UHJpY2UiCmtleUVuZFNhbGUiEmtleUFzc2V0SWRBY2NlcHRlZCIHa2V5RmxhZyISa2V5QXJ0aXN0QWdlbnRBZGRyIgphcnRpc3RBZGRyIhRrZXlQcmltYXJ5U2hhcmVBZ2VudCIYa2V5QXJ0aXN0UHVibGljQWdlbnRBZGRyIhprZXlQcmltYXJ5U2hhcmVQdWJsaWNBZ2VudCIRa2V5SGFzaEJ5VHhpZEFkZHIiBHR4aWQiDmtleU93bmVyQnlIYXNoIg1rZXlpZEJ5U2lnbmlkIgZzaWduSWQiEmtleVR4aWRCeUhhc2hPd25lciIOdmFsaWRhdGVBbGxDSUQiCmNpZERpc3BsYXkiCWNpZEV4cG9ydCIKY2lkTGljZW5jZSIPdmFsaWRhdGVBbGxIYXNoIgxzaGEyNTZFeHBvcnQiDXNoYTI1NkxpY2VuY2UiDnZhbGlkYXRlU3RyaW5nIgNzdHIiA21heCIMdmFsaWRhdGVVc2VyIgp1c2VyU3RhdHVzIgpzZXRMSWNlbmNlIhN2YWxpZGF0ZUFydHdvcmtEYXRhIgpsaWNlbmNlQ0lEIgtsaWNlbmNlSGFzaCIEbmFtZSILZGVzY3JpcHRpb24iBHRhZ3MiCXJveWFsdGllcyIJY2hlY2tVc2VyIglpc1BheW1lbnQiAWkiB3BheW1lbnQiBmFtb3VudCIPdmFsaWRhdGVQYXltZW50IgskdDA5MTgwOTIxNiIHYXNzZXRJZCILaXNBcnRNaW50ZWQiCWFkZHJUb1VzZSIBYiIUdmFsaWRhdGVQcmljZUFzc2V0SWQiDHByaWNlQXNzZXRJZCIMYXJ0d29ya1ByaWNlIgskdDA5ODA0OTg0MCIQYWNjZXB0ZWRBc3NldElkcyIPdmFsaWRhdGVNaW5TZWxsIgVwcmljZSIMbWluU2VsbFdhdmVzIgttaW5TZWxsVXNkbiILbWluU2VsbFNpZ24iDWdldEJpZEFzc2V0SWQiFmdldFByaWNlQXNzZXRJZEZyb21CaWQiCmJpZERhdGFLZXkiB2JpZERhdGEiCmJpZERhdGFBcnIiCWJpZEFtb3VudCIKYmlkQXNzZXRJZCIVaWRDYWxsZXJEYXRlU3BvbnNvcmVkIgZwdWJLZXkiC2lzU3BvbnNvcmVkIhNnZXRfc3BvbnNvcmVkX3dhdmVzIgxpZENhbGxlckRhdGUiB2J1eU1pbnQiBmlzc3VlciIFYmlkSWQiCGJpZE93bmVyIg0kdDAxMzA0MTEzMTMwIgJpZCIEZGF0ZSIFaXNCaWQiCGJsb2NrRW5kIg5jYWxsZXJJc0lzc3VlciIIdG90YWxORlQiC2FydHdvcmtOYW1lIghpc09uU2FsZSIKYW1vdW50U29sZCIKbWF4Q2FuU2VsbCINJHQwMTQ3MjgxNDkyMCIFYWdlbnQiCmFnZW50U2hhcmUiC3B1YmxpY0FnZW50IhBwdWJsaWNBZ2VudFNoYXJlIg1pc1doaXRlbGlzdGVkIgNjdXQiDWFtb3VudEZvclNpZ24iDmFtb3VudEZvckFnZW50IhRhbW91bnRGb3JQdWJsaWNBZ2VudCIQYW1vdW50Rm9yQ3JlYXRvciINbmV3QW1vdW50U29sZCIJaXNzdWVNZXRhIghpc3N1ZU5GVCIFaWRORlQiCnNlbGxTdGF0dXMiCnJlY2VpdmVORlQiCmFzc2V0SWRCaWQiCWJpZERlbE9sZCIJYmlkVXBkYXRlIgdzb2xkS2V5Iglzb2xkVmFsdWUiCHNvbGREYXRhIhRjb21taXNzaW9uc1dpdGhBZ2VudCIaY29tbWlzc2lvbnNXaXRoUHVibGljQWdlbnQiCnR4VG9DYWxsZXIiBmJ1eVJlcyIIYXNTdHJpbmciAmJ2IgNidjAiBmludm9rZSIDdmFsIgR0eXBlIgdjcmF3bGVyIg0kdDAyMDA5NjIwMTY5Ig0kdDAyMDI3MDIwMzM5Ig92YWxpZGF0ZUFydHdvcmsiEHdoaXRlbGlzdGVkX2Ryb3AiDSR0MDIwNjM4MjA3MjIiCmVudHJ5RXhpc3QiCWhhc2hFeGlzdCIPaXNTaWduQ2VydGlmaWVkIhdkZWNyZWFzZV93aGl0ZWxpc3RfZHJvcCINJHQwMjM3NTYyMzgyNiINJHQwMjM4MzYyMzkwNSIEZmxhZyIEYWRkciIEbm90ZSINJHQwMjU1MzIyNTU2NiINJHQwMjYwMDIyNjAzNiIMZGF0YVRvRGVsZXRlIgdtYXhNaW50Ig0kdDAyODg3MjI4OTQyIgZiaWROYnIiCmJhc2VIZWlnaHQiDSR0MDMxMzI0MzEzNjQiDSR0MDMxMzY5MzE0MDUiDSR0MDMyNzM4MzI3OTkiDXJldHVybk1vbmV5VG8iCWJpZFN0YXR1cyICdHgiCHZlcmlmaWVyIgNpbnZOAQFhAQFiCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAWICAAABYwcAAWQJAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX29yYWNsZV9mZWUAAWUJAQV2YWx1ZQEJAKYIAQkBAWEBAhFjb25mX3NpZ253ZWJfZGFwcAABZgkBAWEBAhFjb25mX2ZlZV9yZWNlaXZlcgABZwMFAWMJAQV2YWx1ZQEJAKYIAQIjM010NFJHTUV5alNXWUFvY1RQcWQ1NXdkSFFRQjNQVTJVQ20JAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX3VzZXJzX2RhcHAAAWgJAQV2YWx1ZQEJAKYIAQkBAWEBAhNjb25mX3doaXRlbGlzdF9kYXBwAAFpCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9TSUdOAAFqCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0ROAAFrCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0RUAAFsAQAAAW0JAQFhAQIMY29uZl9hZG1pbl8xAQFuAQFiCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUBZAUBYgIfSW50ZWdlciB1bmRlZmluZSBvciAwIGluIG9yYWNsZQEBbwEBYgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFiAAABAXABAWIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBaAUBYgAAAQFxAQFiCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFAWIHAAFyAAcAAXMACgABdAkBAWEBAhRjb25mX2RlZmF1bHRfbGljZW5jZQABdQkBAWEBAhljb25mX2RlZmF1bHRfbGljZW5jZV9oYXNoAAF2CQELdmFsdWVPckVsc2UCCQCbCAIFAWcCFGNvbmZfZGFwcF9pc19ydW5uaW5nBgABdwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQFnAhRjb25mX21haW50ZW5hbmNlX21zZwIAAAF4AglTVVNQRU5ERUQAAXkCB1JFTU9WRUQAAXoCDFVOUkVHSVNURVJFRAABQQIHQUxMT1dFRAABQgkBAW4BCQCsAgICEmNlcnRpZmljYXRpb25fZmVlXwkA2AQBBQFpAQFDAwFEAUUBRgQBRwkAnQgCBQFlCQCsAgIJAKwCAgkArAICAghkYXRhX2ZjXwUBRAIBXwUBRQMJAAECBQFHAgZTdHJpbmcEAUgFAUcDCQEIY29udGFpbnMCBQFIBQFGBgcHAQFJAQFKAwkBCGNvbnRhaW5zAgUBSgIBLwMDCQBmAgBMCQCxAgEFAUoJAAACCQCxAgEJAJEDAgkAtQkCBQFKAgEvAAAAOwcJAGYCABAJALECAQkAkQMCCQC1CQIFAUoCAS8AAQcHAQFLAQFMCQAAAgkAsQIBBQFMAEABAU0BAU4JAKwCAgIMdXNlcl9zdGF0dXNfBQFOAQFPAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9kYXRlXwUBUAIBXwUBTgEBUQIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfbmFtZV8FAVACAV8FAU4BAVICAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X2Rlc2NfBQFQAgFfBQFOAQFTAgFOAVAJAKwCAgkArAICCQCsAgICEGFydF9kaXNwbGF5X2NpZF8FAVACAV8FAU4BAVQCAU4BUAkArAICCQCsAgIJAKwCAgIQYXJ0X2V4cG9ydF9oYXNoXwUBUAIBXwUBTgEBVQIBTgFQCQCsAgIJAKwCAgkArAICAg9hcnRfZXhwb3J0X2NpZF8FAVACAV8FAU4BAVYCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X21heG1pbnRfBQFQAgFfBQFOAQFXAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9zaWduaWRfBQFQAgFfBQFOAQFYAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9pc3N1ZWRfBQFQAgFfBQFOAQFZAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9vbnNhbGVfBQFQAgFfBQFOAQFaAgFOAVAJAKwCAgkArAICCQCsAgICEWFydF9saWNlbmNlX2hhc2hfBQFQAgFfBQFOAQJhYQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfbGljZW5jZV9jaWRfBQFQAgFfBQFOAQJhYgIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfdGFnc18FAVACAV8FAU4BAmFjAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF90eXBlXwUBUAIBXwUBTgECYWQCAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X25vdGVfBQFQAgFfBQFOAQJhZQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfY3Jhd2xlcl9jaWRfBQFQAgFfBQFOAQJhZgIBTgFQCQCsAgIJAKwCAgkArAICAg5hcnRfcm95YWx0aWVzXwUBUAIBXwUBTgECYWcCAU4BUAkArAICCQCsAgIJAKwCAgIKYXJ0X3ByaWNlXwUBUAIBXwUBTgECYWgCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X2VuZHNhbGVfBQFQAgFfBQFOAQJhaQIBTgFQCQCsAgIJAKwCAgkArAICAhJhcnRfYXNzZXRBY2NlcHRlZF8FAVACAV8FAU4BAmFqAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9mbGFnXwUBUAIBXwUBTgECYWsBAmFsCQCsAgICDWFydGlzdF9hZ2VudF8FAmFsAQJhbQECYWwJAKwCAgIVYXJ0aXN0X2FnZW50X3ByaW1hcnlfBQJhbAECYW4BAmFsCQCsAgICFGFydGlzdF9wdWJsaWNfYWdlbnRfBQJhbAECYW8BAmFsCQCsAgICHGFydGlzdF9wdWJsaWNfYWdlbnRfcHJpbWFyeV8FAmFsAQJhcAIBTgJhcQkArAICCQCsAgIJAKwCAgITZ2V0X2hhc2hieXR4aWRhZGRyXwUCYXECAV8FAU4BAmFyAQFGCQCsAgICEmdldF9vd25lcl9ieV9oYXNoXwUBRgECYXMCAU4CYXQJAKwCAgkArAICCQCsAgICEmdldF9hcnRpZGJ5c2lnbmlkXwUCYXQCAV8FAU4BAmF1AgFGAU4JAKwCAgIXZ2V0X3R4aWRfYnlfaGFzaF9vd25lcl8JANgEAQkA1BYBCQCbAwEJAKwCAgUBRgUBTgECYXYDAmF3AmF4AmF5AwkBASEBCQEBSQEFAmF3CQACAQIRV3JvbmcgRGlzcGxheSBDSUQDCQEBIQEJAQFJAQUCYXgJAAIBAhBXcm9uZyBFeHBvcnQgQ0lEAwMJAQIhPQIFAmF5AgAJAQEhAQkBAUkBBQJheQcJAAIBAhFXcm9uZyBMaWNlbmNlIENJRAYBAmF6AgJhQQJhQgMJAQEhAQkBAUsBBQJhQQkAAgECGEV4cG9ydCBIYXNoIDY0IGNoYXIuIG1heAMJAQEhAQkBAUsBBQJhQgkAAgECGUxpY2VuY2UgSGFzaCA2NCBjaGFyLiBtYXgGAQJhQwICYUQCYUUDCQAAAgkAsQIBBQJhRAAACQACAQIYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAZgIJALECAQUCYUQFAmFFCQACAQkArAICBQJhRAIMIGlzIHRvbyBsb25nBgECYUYBAU4EAmFHCQELdmFsdWVPckVsc2UCCQCdCAIFAWcJAQFNAQUBTgUBegMDCQAAAgUCYUcFAXoGCQAAAgUCYUcFAUECLlJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICJBY2NvdW50IiB0YWIDCQAAAgUCYUcFAXgCEUFjY291bnQgc3VzcGVuZGVkAwkAAAIFAmFHBQF5Ag9BY2NvdW50IHJlbW92ZWQCAAECYUgCAmF5AmFCBAFKAwkAAAIJALECAQUCYXkAAAUBdAUCYXkEAUwDCQAAAgkAsQIBBQJhQgAABQF1BQJhQgkAlAoCBQFKBQFMAQJhSQoBTgJhdwJheAJhSgJhQQJhSwJhTAJhTQJhTgJhTwQCYVAJAQJhRgEFAU4DCQECIT0CBQJhUAIACQACAQUCYVADCQAAAgkAsQIBBQJhdwAACQACAQIbRGlzcGxheSBDSUQgY2Fubm90IGJlIGVtcHR5AwkBASEBCQECYXYDBQJhdwUCYXgFAmFKCQACAQIQUHJvYmxlbSB3aXRoIENJRAMJAQEhAQkBAmF6AgUCYUEFAmFLCQACAQITUHJvYmxlbSB3aXRoIEhhc2hlcwMJAQEhAQkBAmFDAgUCYUwAZAkAAgECEjEwMCBDaGFyLiBtYXggbmFtZQMJAQEhAQkBAmFDAgUCYU0A6AcJAAIBAhoxMDAwIENoYXIuIG1heCBkZXNjcmlwdGlvbgMDCQBmAgAABQJhTwYJAGYCBQJhTwDoBwkAAgECM1JveWFsdGllcyBjYW5ub3QgYmUgbGVzcyB0aGFuIDAlIG9yIGhpZ2hlciB0aGFuIDEwJQMJAGYCCQCQAwEJALUJAgUCYU4CASwABQkAAgECCzUgdGFncyBtYXguAgABAmFRAQJhUgMJAAACCQCQAwEIBQJhUghwYXltZW50cwAACQACAQITTm8gcGF5bWVudCBhdHRhY2hlZAQCYVMJAQV2YWx1ZQEJAJEDAggFAmFSCHBheW1lbnRzAAAEAmFUCQEFdmFsdWUBCAUCYVMGYW1vdW50CQCUCgIFAmFTBQJhVAECYVUBAmFSBAJhVgkBAmFRAQUCYVIEAmFTCAUCYVYCXzEEAmFUCAUCYVYCXzIEAmFXAwMJAQlpc0RlZmluZWQBCAUCYVMHYXNzZXRJZAkAAAIIBQJhUwdhc3NldElkBQFpBwgFAmFTB2Fzc2V0SWQJAAIBAitPbmx5IFNJR04gdG9rZW4gYWNjZXB0ZWQgYXMgdHJhbnNhY3Rpb24gZmVlAwkBAiE9AgUCYVQFAUIJAAIBCQCsAgICGVBheW1lbnQgYW1vdW50IHNob3VsZCBiZSAJAKQDAQUBQgkAlAoCBQJhVAUCYVcBAmFYAgJhWQFQBAFHCQCaCAIFBHRoaXMJAQFYAgUCYVkFAVADCQABAgUBRwIDSW50BAJhWgUBRwMJAQIhPQIFAmFaAAAGBwcBAmJhAwJhUgJiYgJiYwQCYmQJAQJhUQEFAmFSBAJhUwgFAmJkAl8xBAJhVAgFAmJkAl8yBAJhVwMJAQEhAQkBCWlzRGVmaW5lZAEIBQJhUwdhc3NldElkBQR1bml0AwMJAGYCCQCxAgEFAmJiAAAJAAACCQDYBAEJAQV2YWx1ZQEIBQJhUwdhc3NldElkBQJiYgcIBQJhUwdhc3NldElkCQACAQIOV3JvbmcgYXNzZXQgaWQDAwkAAAIFAmFXBQR1bml0CQECIT0CBQJiYgIABwkAAgECDldyb25nIGFzc2V0IGlkAwkBAiE9AgUCYmMFAmFUCQACAQITUGF5bWVudCBkb24ndCBtYXRjaAkAlAoCBQJhVAUCYVcBAmJlAQJhVwMDAwMDCQECIT0CBQJhVwkA2AQBBQFpCQECIT0CBQJhVwkA2AQBBQFsBwkBAiE9AgUCYVcCBVdBVkVTBwkBAiE9AgUCYVcJANgEAQUBagcJAQIhPQIFAmFXCQDYBAEFAWsHCQACAQImT25seSBTSUdOLCBVU0ROLFVTRFQgb3IgV0FWRVMgYWNjZXB0ZWQGAQJiZgICYVcCYmcEAmJoAwUBYwAKCQEBbgECDndhdmVzX21pbl9zZWxsBAJiaQDAhD0EAmJqAwUBYwABCQBoAgUBQgACAwMDAwMDCQAAAgUCYVcJANgEAQUBagkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBawkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBaQkAZgIFAmJqBQJiZwcJAQIhPQIFAmJnAAAHBgMDAwkAAAIFAmFXCQDYBAEFAWwGCQAAAgUCYVcCBVdBVkVTCQBmAgUCYmgFAmJnBwkBAiE9AgUCYmcAAAcJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UGAQJiawECYVcDCQAAAgUCYVcCBVdBVkVTBQR1bml0CQDZBAEFAmFXAQJibAECYm0EAmJuCQEBYQEJAKwCAgUCYm0CBV9PUEVOAwkAAAIFAmJuAgAJAAIBAg1CaWQgbm90IGZvdW5kBAJibwkAtQkCBQJibgIBXwQCYnAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJibwABBAJicQkBAmJrAQkAkQMCBQJibwAAAwkAZwIAAAUCYnAJAAIBAgxXcm9uZyBhbW91bnQJAJQKAgUCYnAFAmJxAQJicgICYVICYnMDCQEBIQEFAXYJAAIBBQF3BAJidAMJAQIhPQIFAmJzAgAJAQt2YWx1ZU9yRWxzZQIJAQFwAQkArAICCQClCAEJAKcIAQkA2QQBBQJicwIJX2ZyZWVfdHhzAAAAAAQBTgMDCQAAAgkA2AQBCAgFAmFSBmNhbGxlcgVieXRlcwkApQgBBQR0aGlzCQBmAgUCYnQAAAcJAKUIAQkApwgBCQDZBAEFAmJzCQDYBAEICAUCYVIGY2FsbGVyBWJ5dGVzBAJidQMDCQECIT0CBQJicwIACQBmAgUCYnQAAAcJAPwHBAUBaAIJdXNlRnJlZVR4CQDMCAIJAKUIAQkApwgBCQDZBAEFAmJzBQNuaWwFA25pbAUEdW5pdAMJAAACBQJidQUCYnUJAJYKBAkA2AQBCAUCYVINdHJhbnNhY3Rpb25JZAUBTggFCWxhc3RCbG9jawl0aW1lc3RhbXAJAGYCBQJidAAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJidgECYVIDCQEBIQEFAXYJAAIBBQF3CQCVCgMJANgEAQgFAmFSDXRyYW5zYWN0aW9uSWQJANgEAQgIBQJhUgZjYWxsZXIFYnl0ZXMIBQlsYXN0QmxvY2sJdGltZXN0YW1wAQJidwYCYVIBUAJieAJieQJiegJicwQCYkEJAQJicgIFAmFSBQJicwQCYkIIBQJiQQJfMQQBTggFAmJBAl8yBAJiQwgFAmJBAl8zBAJidAgFAmJBAl80BAJiRAMDAwkAAAIFAU4FAmJ4CQECIT0CBQJiegIABwkBAiE9AgUCYnkCAAcGBwMDBQJiRAkBAiE9AgUBTgUCYngHCQACAQIZWW91IGNhbm5vdCBkbyB0aGlzIGFjdGlvbgQCYkUJAQFvAQkBAmFoAgUBTgUBUAMDAwkBAiE9AgUCYkUAAAkAZwIFBmhlaWdodAUCYkUHCQEBIQEFAmJEBwkAAgECC1NhbGUgZW5kZWQuBAJiRgkAAAIFAU4FAmJ4BAJiRwkBAW8BAhB0b3RhbF9uZnRfaXNzdWVkBAFECQEBYQEJAQFXAgUCYngFAVAEAmJICQEBYQEJAQFRAgUCYngFAVADCQAAAgUCYkgCAAkAAgECEUFydCBkb2Vzbid0IGV4aXN0BAJiSQkBAXEBCQEBWQIFAmJ4BQFQBAJiSgkBAW8BCQEBWAIFAmJ4BQFQBAJiYwMFAmJGCQBoAgUBQgACCQEBbwEJAQJhZwIFAmJ4BQFQBAJiYgMFAmJGCQDYBAEFAWkJAQFhAQkBAmFpAgUCYngFAVAEAmJLCQEBbwEJAQFWAgUCYngFAVADAwMJAQEhAQUCYkQJAQEhAQUCYkYHAwMJAGcCAAAFAmJjBgkBASEBBQJiSQYJAGcCAAAFAmJLBwkAAgECEEFydCBub3QgZm9yIHNhbGUDAwMJAQEhAQUCYkQFAmJGBwkAZwIAAAUCYksHCQACAQIUTWF4IGlzc3VhYmxlIG5vdCBzZXQEAmFQCQECYUYBBQJieAMDBQJiRAkBAiE9AgUCYVACAAcJAAIBBQJhUAQCYm0JAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUBUAIBXwUCYngCAV8FAmJ6AgFfBQJieQQCYkwDBQJiRAkBAmJsAQUCYm0JAQJiYQMFAmFSBQJiYgUCYmMEAmFUCAUCYkwCXzEEAmFXCAUCYkwCXzIEAmJNCQELdmFsdWVPckVsc2UCCQCdCAIFAWcJAQJhawEFAmJ4BQFmBAJiTgkBC3ZhbHVlT3JFbHNlAgkAmggCBQFnCQECYW0BBQJieAAABAJiTwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQFnCQECYW4BBQJieAUBZgQCYlAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBZwkBAmFvAQUCYngAAAQCYlEJAQFwAQUCYngEAmJSAwkAZgIFAmJRBQZoZWlnaHQAAAMJAAACBQJhVwUBaQUBcgUBcwQCYlMJAGsDBQJhVAUCYlIAZAQCYlQDAwMJAQIhPQIFAmJNBQFmCQBmAgUCYk4AAAcJAGYCBQZoZWlnaHQFAmJRBwkAawMFAmFUBQJiTgCQTgAABAJiVQMDAwkBAiE9AgUCYk8FAWYJAGYCBQJiUAAABwkAZgIFBmhlaWdodAUCYlEHCQBrAwUCYVQFAmJQAJBOAAAEAmJWCQBlAgUCYVQFAmJTAwkAAAIFAmJKBQJiSwkAAgECDEFydCBzb2xkIG91dAQCYlcJAGQCBQJiSgABBAJiWAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCUNyZWF0b3I6IAUCYngCCiwKIEFydElEOiAFAVACCywKIFNpZ25JRDogBQFEAhEsCiBBcnR3b3JrIG5hbWU6IAUCYkgCCiwKIElzc3VlOiAJAKQDAQUCYlcCAS8JAKQDAQUCYksEAmJZCQDCCAUJAKwCAgIDU0FfCQCkAwEJAGQCBQJiRwABBQJiWAABAAAHBAJiWgkAuAgBBQJiWQQCY2EDAwkAAAIFAmJXBQJiSwYJAQEhAQUCYkkHBgQCY2IDAwMJAAACBQFOBQJieAkBAiE9AgUCYnoCAAcJAQIhPQIFAmJ5AgAHCQERQGV4dHJOYXRpdmUoMTA2MikBBQJieggFAmFSBmNhbGxlcgQCY2MDCQEBIQEJAQlpc0RlZmluZWQBBQJhVwIFV0FWRVMJANgEAQkBBXZhbHVlAQUCYVcEAmJuCQEBYQEJAKwCAgUCYm0CBV9PUEVOBAJjZAkBC0RlbGV0ZUVudHJ5AQkArAICBQJibQIFX09QRU4EAmNlCQELU3RyaW5nRW50cnkCCQCsAgIFAmJtAgdfQ0xPU0VECQCsAgIJAKwCAgUCYm4CAV8JAKQDAQUCYkMEAmNmCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCWFydF9zb2xkXwkApAMBBQJiVwIEX29mXwkApAMBBQJiSwIBXwUBUAIBXwUCYngEAmNnAwkBASEBBQJiRAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQFOAgFfCQCkAwEFAmJDAgFfBQJiQgIBXwkApAMBBQJiYwIBXwUCYmICAV8JANgEAQUCYloJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBBQJjYgIBXwkApAMBBQJiQwIBXwUCYkICAV8JAKQDAQUCYVQCAV8FAmNjAgFfCQDYBAEFAmJaBAJjaAkBC1N0cmluZ0VudHJ5AgUCY2YFAmNnBAJjaQMJAQIhPQIFAmJUAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAWYJAGUCBQJiUwUCYlQFAmFXCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQJiTQUCYlQFAmFXBQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAWYFAmJTBQJhVwUDbmlsBAJjagMJAQIhPQIFAmJVAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAmJPBQJiVQUCYVcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAmJ4CQBlAgUCYlYFAmJVBQJhVwUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQJieAUCYlYFAmFXBQNuaWwEAmNrAwUCYnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAU4AAAUEdW5pdAUDbmlsBQNuaWwEAmNsCQDOCAIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFAmJ4BQFQBQJiVwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgICBG5mdF8JANgEAQUCYloFAmNmCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhB0b3RhbF9uZnRfaXNzdWVkCQBkAgUCYkcAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFoAgUCYngFAVAAAAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAVkCBQJieAUBUAUCY2EJAMwIAgUCYlkJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY2IAAQUCYloFA25pbAUCY2kFAmNqBQJjawMFAmJECQDMCAIFAmNoCQDMCAIFAmNlCQDMCAIFAmNkBQJjbAkAzAgCBQJjaAUCY2wBAmNtAQJjbgQBRwUCY24DCQABAgUBRwIGU3RyaW5nBAJjbwUBRwUCY28JAAIBAiRTcG9uc29yZWQgUHVibGljIEtleSBTdHJpbmcgZXhwZWN0ZWQKAmNwAQdzZXRDb25mAgFiAmNxBAFOCQClCAEIBQJjcAZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQFtCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQFOAwkBCGNvbnRhaW5zAgUBYgIFY29uZl8JAMwIAgkBC1N0cmluZ0VudHJ5AgUBYgUCY3EFA25pbAkAAgECIEVudHJpZXMgc3RhcnRpbmcgd2l0aCBjb25mXyBvbmx5CQACAQIiWW91IGFyZSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdGhpcwJhUgEKYWRkQXJ0d29yaw4BRgFEAmFMAmFNAmFOAmNyAmF3AmFBAmF4AmFCAmF5AmNzAmFPAmJzBAJjdAkBAmJyAgUCYVIFAmJzBAFQCAUCY3QCXzEEAU4IBQJjdAJfMgQCYkMIBQJjdAJfMwQCYnQIBQJjdAJfNAMJAQEhAQkBAUsBBQFGCQACAQIkSGFzaCBzaG91bGQgYmUgNjQgY2hhcmFjdGVycyBtYXhpbXVtBAJjdQkBAmFIAgUCYXkFAmFCBAJhSggFAmN1Al8xBAJhSwgFAmN1Al8yBAJjdgkBAmFJCgUBTgUCYXcFAmF4BQJhSgUCYUEFAmFLBQJhTAUCYU0FAmFOBQJhTwMJAQIhPQIFAmN2AgAJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEEAmN3CQBmAgkBAXABCQCsAgIFAU4CC19mcmVlX2Ryb3BzAAAEAmN4AwUCY3cJAJQKAgAABQFECQECYVUBBQJhUgQCYVQIBQJjeAJfMQQCYVcIBQJjeAJfMgMJAQEhAQkBCWlzRGVmaW5lZAEFAmFUCQACAQIUU29tZXRoaW5nIHdlbnQgd3JvbmcEAmN5CQEBYQEJAQJhdQIFAUYFAU4DCQECIT0CBQJjeQIACQACAQIUWW91IGFscmVhZHkgYWRkZWQgaXQEAmN6CQEBYQEJAQJhcgEFAUYDCQECIT0CBQJjegIACQACAQIXSGFzaCBhbHJlYWR5IHJlZ2lzdGVyZWQEAmNBCQEBQwMFAUQFAU4FAUYDCQEBIQEFAmNBCQACAQIsU2lnbiBDZXJ0aWZpY2F0ZSBub3QgZm91bmQgZm9yIHRoaXMgYWRkcmVzcy4EAmNCAwUCY3cJAPwHBAUBaAILdXNlRnJlZURyb3AJAMwIAgUBTgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCY0IFAmNCBAJjawMFAmJ0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFOAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFyAQUBRgUBTgkAzAgCCQELU3RyaW5nRW50cnkCCQECYXUCBQFGBQFOBQFQCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBTwIFAU4FAVAFAmJDCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAgUBTgUBUAUCYUwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVICBQFOBQFQBQJhTQkAzAgCCQELU3RyaW5nRW50cnkCCQEBUwIFAU4FAVAFAmF3CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFVAgUBTgUBUAUCYXgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQCBQFOBQFQBQJhQQkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIFAU4FAVAFAmFLCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAU4FAVAFAmFKCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYwIFAU4FAVAFAmNyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIFAU4FAVAFAmFOCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFAU4FAVAAAAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIFAU4FAVAFAUQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUBTgUBUAAACQDMCAIJAQxCb29sZWFuRW50cnkCCQEBWQIFAU4FAVAHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhcwIFAU4FAUQFAVAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFwAgUBTgUBUAUBRgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWUCBQFOBQFQBQJjcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFmAgUBTgUBUAUCYU8JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAWYFAmFUBQFpBQNuaWwFAmNrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFSAQ11cGRhdGVBcnR3b3JrDQJhcQJhTAJhTQJhTgJjcgJhdwJhQQJheAJhQgJheQJjcwJhTwJicwMJAQEhAQUBdgkAAgEFAXcEAmNDCQECYnICBQJhUgUCYnMEAmJCCAUCY0MCXzEEAU4IBQJjQwJfMgQCYkMIBQJjQwJfMwQCYnQIBQJjQwJfNAQCY0QJAQJhSAIFAmF5BQJhQgQCYUoIBQJjRAJfMQQCYUsIBQJjRAJfMgQCY3YJAQJhSQoFAU4FAmF3BQJheAUCYUoFAmFBBQJhSwUCYUwFAmFNBQJhTgUCYU8DCQECIT0CBQJjdgIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAJjeQkBAWEBCQEBUQIFAU4FAmFxAwkAAAIFAmN5AgAJAAIBAg9FbnRyeSBub3QgZm91bmQEAmNFCQEBYQEJAQJhagIFAU4FAmFxAwkAAAIFAmNFAgdJTExFR0FMCQACAQIdQ2Fubm90IHVwZGF0ZSBJTExFR0FMIGFydHdvcmsDCQEBIQEJAQJhWAIFAU4FAmFxBAJjawMFAmJ0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFOAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVECBQFOBQJhcQUCYUwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVICBQFOBQJhcQUCYU0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVMCBQFOBQJhcQUCYXcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVUCBQFOBQJhcQUCYXgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQCBQFOBQJhcQUCYUEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgUBTgUCYXEFAmFKCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgUBTgUCYXEFAmFLCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIFAU4FAmFxBQJhTgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMCBQFOBQJhcQUCY3IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFlAgUBTgUCYXEFAmNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWYCBQFOBQJhcQUCYU8FA25pbAUCY2sJAAIBAg5BbHJlYWR5IG1pbnRlZAJhUgELZmxhZ0FydHdvcmsEAVACY0YCY0UCY0cEAmNICQECYnYBBQJhUgQCYkIIBQJjSAJfMQQBTggFAmNIAl8yAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUBbQkAzAgCCQClCAEFBHRoaXMFA25pbAUBTgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAICB0NPTlNFTlQJAMwIAgIACQDMCAICD0NIQU5HRV9SRVFVSVJFRAkAzAgCAgdGTEFHR0VECQDMCAICB0lMTEVHQUwFA25pbAUCY0UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFqAgUCY0YFAVAFAmNFCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIFAmNGBQFQBQJjRwUDbmlsCQACAQkArAICAg5Vbmtub3cgc3RhdHVzIAUCY0UJAAIBAhNZb3UgYXJlIG5vdCBhbGxvd2VkAmFSAQ1kZWxldGVBcnR3b3JrAgFQAmNGBAJjSQkBAmJ2AQUCYVIEAmJCCAUCY0kCXzEEAU4IBQJjSQJfMgQCYVkDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQFtCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQFOBQJjRgUBTgQCY3kJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBAWEBCQEBUQIFAmFZBQFQAiBObyBhcnQgbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwMJAAACBQJjeQIACQACAQIgTm8gYXJ0IG1hdGNoaW5nIGZvciB0aGlzIGFkZHJlc3MEAUYJAQFhAQkBAmFwAgUCYVkFAVADCQAAAgUBRgIACQACAQIlTm8gYXJ0IGhhc2ggbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwQBRAkBAWEBCQEBVwIFAmFZBQFQAwkAAAIFAUQCAAkAAgECE05vIFNJR04gSUQgbWF0Y2hpbmcEAmNKCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFPAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVECBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBUgIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFTAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVUCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBVAIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFaAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFhAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFjAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFiAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVYCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBVwIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFYAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVkCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWoCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWcCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWkCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYXIBBQFGCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhcwIFAmFZBQFECQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhdQIFAUYFAmFZCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhaAIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhZAIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhZQIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhZgIFAmFZBQFQBQNuaWwDCQEBIQEJAQJhWAIFAmFZBQFQAwkBASEBBQF2CQACAQUBdwUCY0oDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQFtCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQFOBQJjSgkAAgECKEFydCBhbHJlYWR5IG1pbnRlZCwgeW91IGNhbm5vdCBkZWxldGUgaXQCYVIBC3NlbGxBcnR3b3JrBgFQAmJnAmNLAmFXAmJFAmJzBAJjTAkBAmJyAgUCYVIFAmJzBAJiQggFAmNMAl8xBAFOCAUCY0wCXzIEAmJDCAUCY0wCXzMEAmJ0CAUCY0wCXzQEAmJICQEBYQEJAQFRAgUBTgUBUAMJAAACBQJiSAIACQACAQIjVGhpcyBhcnQgZG9lc24ndCBtYXRjaCB5b3VyIGFjY291bnQEAmNFCQEBYQEJAQJhagIFAU4FAVADCQEPY29udGFpbnNFbGVtZW50AgkAzAgCAg9DSEFOR0VfUkVRVUlSRUQJAMwIAgIHRkxBR0dFRAkAzAgCAgdJTExFR0FMBQNuaWwFAmNFCQACAQIPRmxhZ2dlZCBhcnR3b3JrBAJjTQkBAW8BCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUBUAMJAGYCAAAFAmJFCQACAQIMTmVnYXRpdmUgZW5kAwMJAGYCBQJiRQAAAwkBAiE9AgUCY0sAAQYJAQIhPQIFAmJnAAAHCQACAQI6VGltZWQgb2ZmZXIgb25seSBhbGxvd2VkIGZvciB1bmlxdWUgZWRpdGlvbiBhbmQgb2ZmZXIgb25seQQCY04DCQAAAgUCYkUAAAAABQZoZWlnaHQDCQEBIQEJAQJiZQEFAmFXCQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchAwkBASEBCQECYmYCBQJhVwUCYmcJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEEAmFQCQECYUYBBQFOAwkBAiE9AgUCYVACAAkAAgEFAmFQBAJiSgkBAW8BCQEBWAIFAU4FAVAEAmJLCQEBbwEJAQFWAgUBTgUBUAMJAGYCBQJjSwBkCQACAQIcMTAwIGVkaXRpb25zIG1heCBwZXIgYXJ0d29yawMDCQECIT0CBQJiSgAACQAAAgUCYkoFAmJLBwkAAgECFE1heCBlZGl0aW9uIHJlYWNoZWQuAwMJAGYCBQJiSgAACQECIT0CBQJiSwUCY0sHCQACAQImQ2Fubm90IGNoYW5nZSBtYXhpbXVtIGlzc3VhYmxlIGFueW1vcmUDAwkAZgIFAmNNAAAJAQIhPQIFAmJLBQJjSwcJAAIBAjFDYW5ub3QgY2hhbmdlIG1heGltdW0gaXNzdWFibGUgd2l0aCBhY3RpdmUgb3JkZXJzBAJjYQMDCQBmAgUCYmcAAAkAZgIFAmNLAAAHBgcEAmNrAwUCYnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAU4AAAUEdW5pdAUDbmlsBQNuaWwJAM4IAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAVkCBQFOBQFQBQJjYQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFnAgUBTgUBUAUCYmcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUBTgUBUAUCY0sJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFpAgUBTgUBUAUCYVcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhaAIFAU4FAVAJAGQCBQJjTgUCYkUFA25pbAUCY2sCYVIBCmJ1eUFydHdvcmsCAVACYngJAQJidwYFAmFSBQFQBQJieAIAAgACAAJhUgEGc2V0QmlkAgFQAmJ4BAJjTwkBAmJ2AQUCYVIEAmJCCAUCY08CXzEEAU4IBQJjTwJfMgQCYkMIBQJjTwJfMwQCY1AJAQJhUQEFAmFSBAJhUwgFAmNQAl8xBAJhVAgFAmNQAl8yBAJhVwMJAQEhAQkBCWlzRGVmaW5lZAEIBQJhUwdhc3NldElkAgVXQVZFUwkA2AQBCQEFdmFsdWUBCAUCYVMHYXNzZXRJZAQCYkUJAQFvAQkBAmFoAgUCYngFAVADAwkBAiE9AgUCYkUAAAkAZwIFBmhlaWdodAUCYkUHCQACAQILU2FsZSBlbmRlZC4EAmNNCQEBbwEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQFQAwkBASEBCQECYmUBBQJhVwkAAgECEmFzc2V0IG5vdCBhY2NlcHRlZAMJAQEhAQkBAmJmAgUCYVcFAmFUCQACAQIOV3JvbmcgbWluIHNlbGwEAmJKCQEBbwEJAQFYAgUCYngFAVAEAmJLCQEBbwEJAQFWAgUCYngFAVADCQBnAgAABQJiSwkAAgECI05vIG1heCBlZGl0aW9uIHNldCBmb3IgdGhpcyBhcnR3b3JrAwkAZwIFAmJKBQJiSwkAAgECGFNvbGQgb3V0LCB5b3UgY2Fubm90IGJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUBUAIBXwUCYngCAV8FAU4CAV8FAmJCAgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICBQJhVwIBXwkApAMBBQJhVAIBXwkApAMBBQJiQwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FAVAJAGQCBQJjTQABBQNuaWwCYVIBCWFjY2VwdEJpZAUBUAJieAJieQJiegJicwkBAmJ3BgUCYVIFAVAFAmJ4BQJieQUCYnoFAmJzAmFSAQljYW5jZWxCaWQEAVACYngCYnkCYnoEAmNRCQECYnYBBQJhUgQCYkIIBQJjUQJfMQQBTggFAmNRAl8yBAJiQwgFAmNRAl8zAwMJAQIhPQIFAU4FAmJ6CQECIT0CBQFOBQJieAcJAAIBAhlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uBAJjUgMJAAACBQFOBQJieAUCYnoFAU4EAmNNCQEBbwEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQFQBAJibQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgRiaWRfBQFQAgFfBQJieAIBXwUCYnoCAV8FAmJ5BAJibgkBAWEBCQCsAgIFAmJtAgVfT1BFTgMJAAACBQJibgIACQACAQINQmlkIG5vdCBmb3VuZAQCYm8JALUJAgUCYm4CAV8EAmFXCQECYmsBCQCRAwIFAmJvAAAEAmNTAghDQU5DRUxFRAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFAmJtAgVfT1BFTgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgUCYm0CAV8FAmNTCQCsAgIJAKwCAgUCYm4CAV8JAKQDAQUCYkMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQFQCQBlAgUCY00AAQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUCY1IJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJibwABBQJhVwUDbmlsAQJjVAECY1UABAFHBQJjVAMJAAECBQFHAhdJbnZva2VTY3JpcHRUcmFuc2FjdGlvbgQCY1YFAUcDAwMDCQAAAggFAmNWCGZ1bmN0aW9uAgphZGRBcnR3b3JrCQAAAggFAmNWBGRBcHAFBHRoaXMHCQAAAggFAmNWA2ZlZQCgwh4HCQAAAggFAmNWCmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJjVAlib2R5Qnl0ZXMJAJEDAggFAmNUBnByb29mcwAACQDZBAEJAQJjbQEJAJEDAggFAmNWBGFyZ3MADQMDAwMJAAACCAUCY1YIZnVuY3Rpb24CDXVwZGF0ZUFydHdvcmsJAAACCAUCY1YEZEFwcAUEdGhpcwcJAAACCAUCY1YDZmVlAKDCHgcJAAACCAUCY1YKZmVlQXNzZXRJZAUEdW5pdAcJAPQDAwgFAmNUCWJvZHlCeXRlcwkAkQMCCAUCY1QGcHJvb2ZzAAAJANkEAQkBAmNtAQkAkQMCCAUCY1YEYXJncwAMAwMDAwkAAAIIBQJjVghmdW5jdGlvbgILc2VsbEFydHdvcmsJAAACCAUCY1YEZEFwcAUEdGhpcwcJAAACCAUCY1YDZmVlAKDCHgcJAAACCAUCY1YKZmVlQXNzZXRJZAUEdW5pdAcJAPQDAwgFAmNUCWJvZHlCeXRlcwkAkQMCCAUCY1QGcHJvb2ZzAAAJANkEAQkBAmNtAQkAkQMCCAUCY1YEYXJncwAFAwMDAwkAAAIIBQJjVghmdW5jdGlvbgIJYWNjZXB0QmlkCQAAAggFAmNWBGRBcHAFBHRoaXMHCQAAAggFAmNWA2ZlZQCgwh4HCQAAAggFAmNWCmZlZUFzc2V0SWQFBHVuaXQHCQDIEwMIBQJjVAlib2R5Qnl0ZXMJAJEDAggFAmNUBnByb29mcwAACQDZBAEJAQJjbQEJAJEDAggFAmNWBGFyZ3MABAkA9AMDCAUCY1QJYm9keUJ5dGVzCQCRAwIIBQJjVAZwcm9vZnMAAAgFAmNUD3NlbmRlclB1YmxpY0tleQkA9AMDCAUCY1QJYm9keUJ5dGVzCQCRAwIIBQJjVAZwcm9vZnMAAAgFAmNUD3NlbmRlclB1YmxpY0tleTMM6pM=", "height": 2503607, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2xpEQk1RJ4poGczR3xUNLf7id2M98qs6VaXAopNjHGsc Next: CDxpDMUEM8Sha7yAfHJjRsMKNbiSv4bnjU9FpGdo4yQb Diff:
OldNewDifferences
420420 else false)
421421 then true
422422 else false
423- let bE = o(ah(N, P))
424- if (if (if ((bE != 0))
425- then (height >= bE)
423+ if (if (bD)
424+ then (N != bx)
426425 else false)
427- then !(bD)
428- else false)
429- then throw("Sale ended.")
426+ then throw("You cannot do this action")
430427 else {
431- let bF = (N == bx)
432- let bG = o("total_nft_issued")
433- let D = a(W(bx, P))
434- let bH = a(Q(bx, P))
435- if ((bH == ""))
436- then throw("Art doesn't exist")
428+ let bE = o(ah(N, P))
429+ if (if (if ((bE != 0))
430+ then (height >= bE)
431+ else false)
432+ then !(bD)
433+ else false)
434+ then throw("Sale ended.")
437435 else {
438- let bI = q(Y(bx, P))
439- let bJ = o(X(bx, P))
440- let bc = if (bF)
441- then (B * 2)
442- else o(ag(bx, P))
443- let bb = if (bF)
444- then toBase58String(i)
445- else a(ai(bx, P))
446- let bK = o(V(bx, P))
447- if (if (if (!(bD))
448- then !(bF)
449- else false)
450- then if (if ((0 >= bc))
451- then true
452- else !(bI))
453- then true
454- else (0 >= bK)
455- else false)
456- then throw("Art not for sale")
457- else if (if (if (!(bD))
458- then bF
459- else false)
460- then (0 >= bK)
461- else false)
462- then throw("Max issuable not set")
463- else {
464- let aP = aF(bx)
465- if (if (bD)
466- then (aP != "")
436+ let bF = (N == bx)
437+ let bG = o("total_nft_issued")
438+ let D = a(W(bx, P))
439+ let bH = a(Q(bx, P))
440+ if ((bH == ""))
441+ then throw("Art doesn't exist")
442+ else {
443+ let bI = q(Y(bx, P))
444+ let bJ = o(X(bx, P))
445+ let bc = if (bF)
446+ then (B * 2)
447+ else o(ag(bx, P))
448+ let bb = if (bF)
449+ then toBase58String(i)
450+ else a(ai(bx, P))
451+ let bK = o(V(bx, P))
452+ if (if (if (!(bD))
453+ then !(bF)
454+ else false)
455+ then if (if ((0 >= bc))
456+ then true
457+ else !(bI))
458+ then true
459+ else (0 >= bK)
460+ else false)
461+ then throw("Art not for sale")
462+ else if (if (if (!(bD))
463+ then bF
467464 else false)
468- then throw(aP)
465+ then (0 >= bK)
466+ else false)
467+ then throw("Max issuable not set")
469468 else {
470- let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
471- let bL = if (bD)
472- then bl(bm)
473- else ba(aR, bb, bc)
474- let aT = bL._1
475- let aW = bL._2
476- let bM = valueOrElse(getString(g, ak(bx)), f)
477- let bN = valueOrElse(getInteger(g, am(bx)), 0)
478- let bO = valueOrElse(getString(g, an(bx)), f)
479- let bP = valueOrElse(getInteger(g, ao(bx)), 0)
480- let bQ = p(bx)
481- let bR = if ((bQ > height))
482- then 0
483- else if ((aW == i))
484- then r
485- else s
486- let bS = fraction(aT, bR, 100)
487- let bT = if (if (if ((bM != f))
488- then (bN > 0)
469+ let aP = aF(bx)
470+ if (if (bD)
471+ then (aP != "")
489472 else false)
490- then (height > bQ)
491- else false)
492- then fraction(aT, bN, 10000)
493- else 0
494- let bU = if (if (if ((bO != f))
495- then (bP > 0)
496- else false)
497- then (height > bQ)
498- else false)
499- then fraction(aT, bP, 10000)
500- else 0
501- let bV = (aT - bS)
502- if ((bJ == bK))
503- then throw("Art sold out")
473+ then throw(aP)
504474 else {
505- let bW = (bJ + 1)
506- let bX = ((((((((((("Creator: " + bx) + ",
475+ let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
476+ let bL = if (bD)
477+ then bl(bm)
478+ else ba(aR, bb, bc)
479+ let aT = bL._1
480+ let aW = bL._2
481+ let bM = valueOrElse(getString(g, ak(bx)), f)
482+ let bN = valueOrElse(getInteger(g, am(bx)), 0)
483+ let bO = valueOrElse(getString(g, an(bx)), f)
484+ let bP = valueOrElse(getInteger(g, ao(bx)), 0)
485+ let bQ = p(bx)
486+ let bR = if ((bQ > height))
487+ then 0
488+ else if ((aW == i))
489+ then r
490+ else s
491+ let bS = fraction(aT, bR, 100)
492+ let bT = if (if (if ((bM != f))
493+ then (bN > 0)
494+ else false)
495+ then (height > bQ)
496+ else false)
497+ then fraction(aT, bN, 10000)
498+ else 0
499+ let bU = if (if (if ((bO != f))
500+ then (bP > 0)
501+ else false)
502+ then (height > bQ)
503+ else false)
504+ then fraction(aT, bP, 10000)
505+ else 0
506+ let bV = (aT - bS)
507+ if ((bJ == bK))
508+ then throw("Art sold out")
509+ else {
510+ let bW = (bJ + 1)
511+ let bX = ((((((((((("Creator: " + bx) + ",
507512 ArtID: ") + P) + ",
508513 SignID: ") + D) + ",
509514 Artwork name: ") + bH) + ",
510515 Issue: ") + toString(bW)) + "/") + toString(bK))
511- let bY = Issue(("SA_" + toString((bG + 1))), bX, 1, 0, false)
512- let bZ = calculateAssetId(bY)
513- let ca = if (if ((bW == bK))
514- then true
515- else !(bI))
516- then false
517- else true
518- let cb = if (if (if ((N == bx))
519- then (bz != "")
520- else false)
521- then (by != "")
522- else false)
523- then addressFromStringValue(bz)
524- else aR.caller
525- let cc = if (!(isDefined(aW)))
526- then "WAVES"
527- else toBase58String(value(aW))
528- let bn = a((bm + "_OPEN"))
529- let cd = DeleteEntry((bm + "_OPEN"))
530- let ce = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
531- let cf = ((((((("art_sold_" + toString(bW)) + "_of_") + toString(bK)) + "_") + P) + "_") + bx)
532- let cg = if (!(bD))
533- then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(bZ))
534- else ((((((((((toString(cb) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cc) + "_") + toBase58String(bZ))
535- let ch = StringEntry(cf, cg)
536- let ci = if ((bT != 0))
537- then [ScriptTransfer(Address(fromBase58String(f)), (bS - bT), aW), ScriptTransfer(Address(fromBase58String(bM)), bT, aW)]
538- else [ScriptTransfer(Address(fromBase58String(f)), bS, aW)]
539- let cj = if ((bU != 0))
540- then [ScriptTransfer(Address(fromBase58String(bO)), bU, aW), ScriptTransfer(Address(fromBase58String(bx)), (bV - bU), aW)]
541- else [ScriptTransfer(Address(fromBase58String(bx)), bV, aW)]
542- let ck = if (bt)
543- then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
544- else nil
545- 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)
546- if (bD)
547- then [ch, ce, cd] :: cl
548- else ch :: cl
516+ let bY = Issue(("SA_" + toString((bG + 1))), bX, 1, 0, false)
517+ let bZ = calculateAssetId(bY)
518+ let ca = if (if ((bW == bK))
519+ then true
520+ else !(bI))
521+ then false
522+ else true
523+ let cb = if (if (if ((N == bx))
524+ then (bz != "")
525+ else false)
526+ then (by != "")
527+ else false)
528+ then addressFromStringValue(bz)
529+ else aR.caller
530+ let cc = if (!(isDefined(aW)))
531+ then "WAVES"
532+ else toBase58String(value(aW))
533+ let bn = a((bm + "_OPEN"))
534+ let cd = DeleteEntry((bm + "_OPEN"))
535+ let ce = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
536+ let cf = ((((((("art_sold_" + toString(bW)) + "_of_") + toString(bK)) + "_") + P) + "_") + bx)
537+ let cg = if (!(bD))
538+ then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(bZ))
539+ else ((((((((((toString(cb) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cc) + "_") + toBase58String(bZ))
540+ let ch = StringEntry(cf, cg)
541+ let ci = if ((bT != 0))
542+ then [ScriptTransfer(Address(fromBase58String(f)), (bS - bT), aW), ScriptTransfer(Address(fromBase58String(bM)), bT, aW)]
543+ else [ScriptTransfer(Address(fromBase58String(f)), bS, aW)]
544+ let cj = if ((bU != 0))
545+ then [ScriptTransfer(Address(fromBase58String(bO)), bU, aW), ScriptTransfer(Address(fromBase58String(bx)), (bV - bU), aW)]
546+ else [ScriptTransfer(Address(fromBase58String(bx)), bV, aW)]
547+ let ck = if (bt)
548+ then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
549+ else nil
550+ 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)
551+ if (bD)
552+ then [ch, ce, cd] :: cl
553+ else ch :: cl
554+ }
549555 }
550556 }
551- }
557+ }
552558 }
553559 }
554560 }
838844
839845
840846 @Callable(aR)
841-func acceptBid (P,bx,by,bz,bs) = {
842- let cQ = bv(aR)
843- let bB = cQ._1
844- let N = cQ._2
845- let bC = cQ._3
846- if ((N != bx))
847- then throw("You cannot do this action")
848- else bw(aR, P, bx, by, bz, bs)
849- }
847+func acceptBid (P,bx,by,bz,bs) = bw(aR, P, bx, by, bz, bs)
850848
851849
852850
853851 @Callable(aR)
854852 func cancelBid (P,bx,by,bz) = {
855- let cR = bv(aR)
856- let bB = cR._1
857- let N = cR._2
858- let bC = cR._3
853+ let cQ = bv(aR)
854+ let bB = cQ._1
855+ let N = cQ._2
856+ let bC = cQ._3
859857 if (if ((N != bz))
860858 then (N != bx)
861859 else false)
862860 then throw("You cannot do this action")
863861 else {
864- let cS = if ((N == bx))
862+ let cR = if ((N == bx))
865863 then bz
866864 else N
867865 let cM = o(("current_bidamount_" + P))
872870 else {
873871 let bo = split(bn, "_")
874872 let aW = bk(bo[0])
875- let cT = "CANCELED"
876-[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cT), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cM - 1)), ScriptTransfer(Address(fromBase58String(cS)), parseIntValue(bo[1]), aW)]
873+ let cS = "CANCELED"
874+[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cS), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cM - 1)), ScriptTransfer(Address(fromBase58String(cR)), parseIntValue(bo[1]), aW)]
877875 }
878876 }
879877 }
880878
881879
882-@Verifier(cU)
883-func cV () = {
884- let G = cU
880+@Verifier(cT)
881+func cU () = {
882+ let G = cT
885883 if ($isInstanceOf(G, "InvokeScriptTransaction"))
886884 then {
887- let cW = G
888- if (if (if (if ((cW.function == "addArtwork"))
889- then (cW.dApp == this)
885+ let cV = G
886+ if (if (if (if ((cV.function == "addArtwork"))
887+ then (cV.dApp == this)
890888 else false)
891- then (cW.fee == 500000)
889+ then (cV.fee == 500000)
892890 else false)
893- then (cW.feeAssetId == unit)
891+ then (cV.feeAssetId == unit)
894892 else false)
895- then sigVerify(cU.bodyBytes, cU.proofs[0], fromBase58String(cm(cW.args[13])))
896- else if (if (if (if ((cW.function == "updateArtwork"))
897- then (cW.dApp == this)
893+ then sigVerify(cT.bodyBytes, cT.proofs[0], fromBase58String(cm(cV.args[13])))
894+ else if (if (if (if ((cV.function == "updateArtwork"))
895+ then (cV.dApp == this)
898896 else false)
899- then (cW.fee == 500000)
897+ then (cV.fee == 500000)
900898 else false)
901- then (cW.feeAssetId == unit)
899+ then (cV.feeAssetId == unit)
902900 else false)
903- then sigVerify(cU.bodyBytes, cU.proofs[0], fromBase58String(cm(cW.args[12])))
904- else if (if (if (if ((cW.function == "sellArtwork"))
905- then (cW.dApp == this)
901+ then sigVerify(cT.bodyBytes, cT.proofs[0], fromBase58String(cm(cV.args[12])))
902+ else if (if (if (if ((cV.function == "sellArtwork"))
903+ then (cV.dApp == this)
906904 else false)
907- then (cW.fee == 500000)
905+ then (cV.fee == 500000)
908906 else false)
909- then (cW.feeAssetId == unit)
907+ then (cV.feeAssetId == unit)
910908 else false)
911- then sigVerify(cU.bodyBytes, cU.proofs[0], fromBase58String(cm(cW.args[5])))
912- else if (if (if (if ((cW.function == "acceptBid"))
913- then (cW.dApp == this)
909+ then sigVerify(cT.bodyBytes, cT.proofs[0], fromBase58String(cm(cV.args[5])))
910+ else if (if (if (if ((cV.function == "acceptBid"))
911+ then (cV.dApp == this)
914912 else false)
915- then (cW.fee == 500000)
913+ then (cV.fee == 500000)
916914 else false)
917- then (cW.feeAssetId == unit)
915+ then (cV.feeAssetId == unit)
918916 else false)
919- then sigVerify_128Kb(cU.bodyBytes, cU.proofs[0], fromBase58String(cm(cW.args[4])))
920- else sigVerify(cU.bodyBytes, cU.proofs[0], cU.senderPublicKey)
917+ then sigVerify_128Kb(cT.bodyBytes, cT.proofs[0], fromBase58String(cm(cV.args[4])))
918+ else sigVerify(cT.bodyBytes, cT.proofs[0], cT.senderPublicKey)
921919 }
922- else sigVerify(cU.bodyBytes, cU.proofs[0], cU.senderPublicKey)
920+ else sigVerify(cT.bodyBytes, cT.proofs[0], cT.senderPublicKey)
923921 }
924922
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)
394394 let bu = if (if ((bs != ""))
395395 then (bt > 0)
396396 else false)
397397 then invoke(h, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
398398 else unit
399399 if ((bu == bu))
400400 then $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
401401 else throw("Strict value is not equal to itself.")
402402 }
403403
404404
405405 func bv (aR) = if (!(v))
406406 then throw(w)
407407 else $Tuple3(toBase58String(aR.transactionId), toBase58String(aR.caller.bytes), lastBlock.timestamp)
408408
409409
410410 func bw (aR,P,bx,by,bz,bs) = {
411411 let bA = br(aR, bs)
412412 let bB = bA._1
413413 let N = bA._2
414414 let bC = bA._3
415415 let bt = bA._4
416416 let bD = if (if (if ((N == bx))
417417 then (bz != "")
418418 else false)
419419 then (by != "")
420420 else false)
421421 then true
422422 else false
423- let bE = o(ah(N, P))
424- if (if (if ((bE != 0))
425- then (height >= bE)
423+ if (if (bD)
424+ then (N != bx)
426425 else false)
427- then !(bD)
428- else false)
429- then throw("Sale ended.")
426+ then throw("You cannot do this action")
430427 else {
431- let bF = (N == bx)
432- let bG = o("total_nft_issued")
433- let D = a(W(bx, P))
434- let bH = a(Q(bx, P))
435- if ((bH == ""))
436- then throw("Art doesn't exist")
428+ let bE = o(ah(N, P))
429+ if (if (if ((bE != 0))
430+ then (height >= bE)
431+ else false)
432+ then !(bD)
433+ else false)
434+ then throw("Sale ended.")
437435 else {
438- let bI = q(Y(bx, P))
439- let bJ = o(X(bx, P))
440- let bc = if (bF)
441- then (B * 2)
442- else o(ag(bx, P))
443- let bb = if (bF)
444- then toBase58String(i)
445- else a(ai(bx, P))
446- let bK = o(V(bx, P))
447- if (if (if (!(bD))
448- then !(bF)
449- else false)
450- then if (if ((0 >= bc))
451- then true
452- else !(bI))
453- then true
454- else (0 >= bK)
455- else false)
456- then throw("Art not for sale")
457- else if (if (if (!(bD))
458- then bF
459- else false)
460- then (0 >= bK)
461- else false)
462- then throw("Max issuable not set")
463- else {
464- let aP = aF(bx)
465- if (if (bD)
466- then (aP != "")
436+ let bF = (N == bx)
437+ let bG = o("total_nft_issued")
438+ let D = a(W(bx, P))
439+ let bH = a(Q(bx, P))
440+ if ((bH == ""))
441+ then throw("Art doesn't exist")
442+ else {
443+ let bI = q(Y(bx, P))
444+ let bJ = o(X(bx, P))
445+ let bc = if (bF)
446+ then (B * 2)
447+ else o(ag(bx, P))
448+ let bb = if (bF)
449+ then toBase58String(i)
450+ else a(ai(bx, P))
451+ let bK = o(V(bx, P))
452+ if (if (if (!(bD))
453+ then !(bF)
454+ else false)
455+ then if (if ((0 >= bc))
456+ then true
457+ else !(bI))
458+ then true
459+ else (0 >= bK)
460+ else false)
461+ then throw("Art not for sale")
462+ else if (if (if (!(bD))
463+ then bF
467464 else false)
468- then throw(aP)
465+ then (0 >= bK)
466+ else false)
467+ then throw("Max issuable not set")
469468 else {
470- let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
471- let bL = if (bD)
472- then bl(bm)
473- else ba(aR, bb, bc)
474- let aT = bL._1
475- let aW = bL._2
476- let bM = valueOrElse(getString(g, ak(bx)), f)
477- let bN = valueOrElse(getInteger(g, am(bx)), 0)
478- let bO = valueOrElse(getString(g, an(bx)), f)
479- let bP = valueOrElse(getInteger(g, ao(bx)), 0)
480- let bQ = p(bx)
481- let bR = if ((bQ > height))
482- then 0
483- else if ((aW == i))
484- then r
485- else s
486- let bS = fraction(aT, bR, 100)
487- let bT = if (if (if ((bM != f))
488- then (bN > 0)
469+ let aP = aF(bx)
470+ if (if (bD)
471+ then (aP != "")
489472 else false)
490- then (height > bQ)
491- else false)
492- then fraction(aT, bN, 10000)
493- else 0
494- let bU = if (if (if ((bO != f))
495- then (bP > 0)
496- else false)
497- then (height > bQ)
498- else false)
499- then fraction(aT, bP, 10000)
500- else 0
501- let bV = (aT - bS)
502- if ((bJ == bK))
503- then throw("Art sold out")
473+ then throw(aP)
504474 else {
505- let bW = (bJ + 1)
506- let bX = ((((((((((("Creator: " + bx) + ",
475+ let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
476+ let bL = if (bD)
477+ then bl(bm)
478+ else ba(aR, bb, bc)
479+ let aT = bL._1
480+ let aW = bL._2
481+ let bM = valueOrElse(getString(g, ak(bx)), f)
482+ let bN = valueOrElse(getInteger(g, am(bx)), 0)
483+ let bO = valueOrElse(getString(g, an(bx)), f)
484+ let bP = valueOrElse(getInteger(g, ao(bx)), 0)
485+ let bQ = p(bx)
486+ let bR = if ((bQ > height))
487+ then 0
488+ else if ((aW == i))
489+ then r
490+ else s
491+ let bS = fraction(aT, bR, 100)
492+ let bT = if (if (if ((bM != f))
493+ then (bN > 0)
494+ else false)
495+ then (height > bQ)
496+ else false)
497+ then fraction(aT, bN, 10000)
498+ else 0
499+ let bU = if (if (if ((bO != f))
500+ then (bP > 0)
501+ else false)
502+ then (height > bQ)
503+ else false)
504+ then fraction(aT, bP, 10000)
505+ else 0
506+ let bV = (aT - bS)
507+ if ((bJ == bK))
508+ then throw("Art sold out")
509+ else {
510+ let bW = (bJ + 1)
511+ let bX = ((((((((((("Creator: " + bx) + ",
507512 ArtID: ") + P) + ",
508513 SignID: ") + D) + ",
509514 Artwork name: ") + bH) + ",
510515 Issue: ") + toString(bW)) + "/") + toString(bK))
511- let bY = Issue(("SA_" + toString((bG + 1))), bX, 1, 0, false)
512- let bZ = calculateAssetId(bY)
513- let ca = if (if ((bW == bK))
514- then true
515- else !(bI))
516- then false
517- else true
518- let cb = if (if (if ((N == bx))
519- then (bz != "")
520- else false)
521- then (by != "")
522- else false)
523- then addressFromStringValue(bz)
524- else aR.caller
525- let cc = if (!(isDefined(aW)))
526- then "WAVES"
527- else toBase58String(value(aW))
528- let bn = a((bm + "_OPEN"))
529- let cd = DeleteEntry((bm + "_OPEN"))
530- let ce = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
531- let cf = ((((((("art_sold_" + toString(bW)) + "_of_") + toString(bK)) + "_") + P) + "_") + bx)
532- let cg = if (!(bD))
533- then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(bZ))
534- else ((((((((((toString(cb) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cc) + "_") + toBase58String(bZ))
535- let ch = StringEntry(cf, cg)
536- let ci = if ((bT != 0))
537- then [ScriptTransfer(Address(fromBase58String(f)), (bS - bT), aW), ScriptTransfer(Address(fromBase58String(bM)), bT, aW)]
538- else [ScriptTransfer(Address(fromBase58String(f)), bS, aW)]
539- let cj = if ((bU != 0))
540- then [ScriptTransfer(Address(fromBase58String(bO)), bU, aW), ScriptTransfer(Address(fromBase58String(bx)), (bV - bU), aW)]
541- else [ScriptTransfer(Address(fromBase58String(bx)), bV, aW)]
542- let ck = if (bt)
543- then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
544- else nil
545- 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)
546- if (bD)
547- then [ch, ce, cd] :: cl
548- else ch :: cl
516+ let bY = Issue(("SA_" + toString((bG + 1))), bX, 1, 0, false)
517+ let bZ = calculateAssetId(bY)
518+ let ca = if (if ((bW == bK))
519+ then true
520+ else !(bI))
521+ then false
522+ else true
523+ let cb = if (if (if ((N == bx))
524+ then (bz != "")
525+ else false)
526+ then (by != "")
527+ else false)
528+ then addressFromStringValue(bz)
529+ else aR.caller
530+ let cc = if (!(isDefined(aW)))
531+ then "WAVES"
532+ else toBase58String(value(aW))
533+ let bn = a((bm + "_OPEN"))
534+ let cd = DeleteEntry((bm + "_OPEN"))
535+ let ce = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
536+ let cf = ((((((("art_sold_" + toString(bW)) + "_of_") + toString(bK)) + "_") + P) + "_") + bx)
537+ let cg = if (!(bD))
538+ then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(bZ))
539+ else ((((((((((toString(cb) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cc) + "_") + toBase58String(bZ))
540+ let ch = StringEntry(cf, cg)
541+ let ci = if ((bT != 0))
542+ then [ScriptTransfer(Address(fromBase58String(f)), (bS - bT), aW), ScriptTransfer(Address(fromBase58String(bM)), bT, aW)]
543+ else [ScriptTransfer(Address(fromBase58String(f)), bS, aW)]
544+ let cj = if ((bU != 0))
545+ then [ScriptTransfer(Address(fromBase58String(bO)), bU, aW), ScriptTransfer(Address(fromBase58String(bx)), (bV - bU), aW)]
546+ else [ScriptTransfer(Address(fromBase58String(bx)), bV, aW)]
547+ let ck = if (bt)
548+ then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
549+ else nil
550+ 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)
551+ if (bD)
552+ then [ch, ce, cd] :: cl
553+ else ch :: cl
554+ }
549555 }
550556 }
551- }
557+ }
552558 }
553559 }
554560 }
555561
556562
557563 func cm (cn) = {
558564 let G = cn
559565 if ($isInstanceOf(G, "String"))
560566 then {
561567 let co = G
562568 co
563569 }
564570 else throw("Sponsored Public Key String expected")
565571 }
566572
567573
568574 @Callable(cp)
569575 func setConf (b,cq) = {
570576 let N = toString(cp.caller)
571577 if (containsElement([m, toString(this)], N))
572578 then if (contains(b, "conf_"))
573579 then [StringEntry(b, cq)]
574580 else throw("Entries starting with conf_ only")
575581 else throw("You are not allowed to change this")
576582 }
577583
578584
579585
580586 @Callable(aR)
581587 func addArtwork (F,D,aL,aM,aN,cr,aw,aA,ax,aB,ay,cs,aO,bs) = {
582588 let ct = br(aR, bs)
583589 let P = ct._1
584590 let N = ct._2
585591 let bC = ct._3
586592 let bt = ct._4
587593 if (!(K(F)))
588594 then throw("Hash should be 64 characters maximum")
589595 else {
590596 let cu = aH(ay, aB)
591597 let aJ = cu._1
592598 let aK = cu._2
593599 let cv = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
594600 if ((cv != ""))
595601 then throw("Something went wrong!")
596602 else {
597603 let cw = (p((N + "_free_drops")) > 0)
598604 let cx = if (cw)
599605 then $Tuple2(0, D)
600606 else aU(aR)
601607 let aT = cx._1
602608 let aW = cx._2
603609 if (!(isDefined(aT)))
604610 then throw("Something went wrong")
605611 else {
606612 let cy = a(au(F, N))
607613 if ((cy != ""))
608614 then throw("You already added it")
609615 else {
610616 let cz = a(ar(F))
611617 if ((cz != ""))
612618 then throw("Hash already registered")
613619 else {
614620 let cA = C(D, N, F)
615621 if (!(cA))
616622 then throw("Sign Certificate not found for this address.")
617623 else {
618624 let cB = if (cw)
619625 then invoke(h, "useFreeDrop", [N], nil)
620626 else unit
621627 if ((cB == cB))
622628 then {
623629 let ck = if (bt)
624630 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
625631 else nil
626632 ([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)
627633 }
628634 else throw("Strict value is not equal to itself.")
629635 }
630636 }
631637 }
632638 }
633639 }
634640 }
635641 }
636642
637643
638644
639645 @Callable(aR)
640646 func updateArtwork (aq,aL,aM,aN,cr,aw,aA,ax,aB,ay,cs,aO,bs) = if (!(v))
641647 then throw(w)
642648 else {
643649 let cC = br(aR, bs)
644650 let bB = cC._1
645651 let N = cC._2
646652 let bC = cC._3
647653 let bt = cC._4
648654 let cD = aH(ay, aB)
649655 let aJ = cD._1
650656 let aK = cD._2
651657 let cv = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
652658 if ((cv != ""))
653659 then throw("Something went wrong!")
654660 else {
655661 let cy = a(Q(N, aq))
656662 if ((cy == ""))
657663 then throw("Entry not found")
658664 else {
659665 let cE = a(aj(N, aq))
660666 if ((cE == "ILLEGAL"))
661667 then throw("Cannot update ILLEGAL artwork")
662668 else if (!(aX(N, aq)))
663669 then {
664670 let ck = if (bt)
665671 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
666672 else nil
667673 ([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)
668674 }
669675 else throw("Already minted")
670676 }
671677 }
672678 }
673679
674680
675681
676682 @Callable(aR)
677683 func flagArtwork (P,cF,cE,cG) = {
678684 let cH = bv(aR)
679685 let bB = cH._1
680686 let N = cH._2
681687 if (containsElement([m, toString(this)], N))
682688 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cE))
683689 then [StringEntry(aj(cF, P), cE), StringEntry(ad(cF, P), cG)]
684690 else throw(("Unknow status " + cE))
685691 else throw("You are not allowed")
686692 }
687693
688694
689695
690696 @Callable(aR)
691697 func deleteArtwork (P,cF) = {
692698 let cI = bv(aR)
693699 let bB = cI._1
694700 let N = cI._2
695701 let aY = if (containsElement([m, toString(this)], N))
696702 then cF
697703 else N
698704 let cy = valueOrErrorMessage(a(Q(aY, P)), "No art matching for this address")
699705 if ((cy == ""))
700706 then throw("No art matching for this address")
701707 else {
702708 let F = a(ap(aY, P))
703709 if ((F == ""))
704710 then throw("No art hash matching for this address")
705711 else {
706712 let D = a(W(aY, P))
707713 if ((D == ""))
708714 then throw("No SIGN ID matching")
709715 else {
710716 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))]
711717 if (!(aX(aY, P)))
712718 then if (!(v))
713719 then throw(w)
714720 else cJ
715721 else if (containsElement([m, toString(this)], N))
716722 then cJ
717723 else throw("Art already minted, you cannot delete it")
718724 }
719725 }
720726 }
721727 }
722728
723729
724730
725731 @Callable(aR)
726732 func sellArtwork (P,bg,cK,aW,bE,bs) = {
727733 let cL = br(aR, bs)
728734 let bB = cL._1
729735 let N = cL._2
730736 let bC = cL._3
731737 let bt = cL._4
732738 let bH = a(Q(N, P))
733739 if ((bH == ""))
734740 then throw("This art doesn't match your account")
735741 else {
736742 let cE = a(aj(N, P))
737743 if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cE))
738744 then throw("Flagged artwork")
739745 else {
740746 let cM = o(("current_bidamount_" + P))
741747 if ((0 > bE))
742748 then throw("Negative end")
743749 else if (if ((bE > 0))
744750 then if ((cK != 1))
745751 then true
746752 else (bg != 0)
747753 else false)
748754 then throw("Timed offer only allowed for unique edition and offer only")
749755 else {
750756 let cN = if ((bE == 0))
751757 then 0
752758 else height
753759 if (!(be(aW)))
754760 then throw("Something went wrong!")
755761 else if (!(bf(aW, bg)))
756762 then throw("Something went wrong!")
757763 else {
758764 let aP = aF(N)
759765 if ((aP != ""))
760766 then throw(aP)
761767 else {
762768 let bJ = o(X(N, P))
763769 let bK = o(V(N, P))
764770 if ((cK > 100))
765771 then throw("100 editions max per artwork")
766772 else if (if ((bJ != 0))
767773 then (bJ == bK)
768774 else false)
769775 then throw("Max edition reached.")
770776 else if (if ((bJ > 0))
771777 then (bK != cK)
772778 else false)
773779 then throw("Cannot change maximum issuable anymore")
774780 else if (if ((cM > 0))
775781 then (bK != cK)
776782 else false)
777783 then throw("Cannot change maximum issuable with active orders")
778784 else {
779785 let ca = if (if ((bg > 0))
780786 then (cK > 0)
781787 else false)
782788 then true
783789 else false
784790 let ck = if (bt)
785791 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
786792 else nil
787793 ([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)
788794 }
789795 }
790796 }
791797 }
792798 }
793799 }
794800 }
795801
796802
797803
798804 @Callable(aR)
799805 func buyArtwork (P,bx) = bw(aR, P, bx, "", "", "")
800806
801807
802808
803809 @Callable(aR)
804810 func setBid (P,bx) = {
805811 let cO = bv(aR)
806812 let bB = cO._1
807813 let N = cO._2
808814 let bC = cO._3
809815 let cP = aQ(aR)
810816 let aS = cP._1
811817 let aT = cP._2
812818 let aW = if (!(isDefined(aS.assetId)))
813819 then "WAVES"
814820 else toBase58String(value(aS.assetId))
815821 let bE = o(ah(bx, P))
816822 if (if ((bE != 0))
817823 then (height >= bE)
818824 else false)
819825 then throw("Sale ended.")
820826 else {
821827 let cM = o(("current_bidamount_" + P))
822828 if (!(be(aW)))
823829 then throw("asset not accepted")
824830 else if (!(bf(aW, aT)))
825831 then throw("Wrong min sell")
826832 else {
827833 let bJ = o(X(bx, P))
828834 let bK = o(V(bx, P))
829835 if ((0 >= bK))
830836 then throw("No max edition set for this artwork")
831837 else if ((bJ >= bK))
832838 then throw("Sold out, you cannot bid")
833839 else [StringEntry((((((((("bid_" + P) + "_") + bx) + "_") + N) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cM + 1))]
834840 }
835841 }
836842 }
837843
838844
839845
840846 @Callable(aR)
841-func acceptBid (P,bx,by,bz,bs) = {
842- let cQ = bv(aR)
843- let bB = cQ._1
844- let N = cQ._2
845- let bC = cQ._3
846- if ((N != bx))
847- then throw("You cannot do this action")
848- else bw(aR, P, bx, by, bz, bs)
849- }
847+func acceptBid (P,bx,by,bz,bs) = bw(aR, P, bx, by, bz, bs)
850848
851849
852850
853851 @Callable(aR)
854852 func cancelBid (P,bx,by,bz) = {
855- let cR = bv(aR)
856- let bB = cR._1
857- let N = cR._2
858- let bC = cR._3
853+ let cQ = bv(aR)
854+ let bB = cQ._1
855+ let N = cQ._2
856+ let bC = cQ._3
859857 if (if ((N != bz))
860858 then (N != bx)
861859 else false)
862860 then throw("You cannot do this action")
863861 else {
864- let cS = if ((N == bx))
862+ let cR = if ((N == bx))
865863 then bz
866864 else N
867865 let cM = o(("current_bidamount_" + P))
868866 let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
869867 let bn = a((bm + "_OPEN"))
870868 if ((bn == ""))
871869 then throw("Bid not found")
872870 else {
873871 let bo = split(bn, "_")
874872 let aW = bk(bo[0])
875- let cT = "CANCELED"
876-[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cT), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cM - 1)), ScriptTransfer(Address(fromBase58String(cS)), parseIntValue(bo[1]), aW)]
873+ let cS = "CANCELED"
874+[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cS), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cM - 1)), ScriptTransfer(Address(fromBase58String(cR)), parseIntValue(bo[1]), aW)]
877875 }
878876 }
879877 }
880878
881879
882-@Verifier(cU)
883-func cV () = {
884- let G = cU
880+@Verifier(cT)
881+func cU () = {
882+ let G = cT
885883 if ($isInstanceOf(G, "InvokeScriptTransaction"))
886884 then {
887- let cW = G
888- if (if (if (if ((cW.function == "addArtwork"))
889- then (cW.dApp == this)
885+ let cV = G
886+ if (if (if (if ((cV.function == "addArtwork"))
887+ then (cV.dApp == this)
890888 else false)
891- then (cW.fee == 500000)
889+ then (cV.fee == 500000)
892890 else false)
893- then (cW.feeAssetId == unit)
891+ then (cV.feeAssetId == unit)
894892 else false)
895- then sigVerify(cU.bodyBytes, cU.proofs[0], fromBase58String(cm(cW.args[13])))
896- else if (if (if (if ((cW.function == "updateArtwork"))
897- then (cW.dApp == this)
893+ then sigVerify(cT.bodyBytes, cT.proofs[0], fromBase58String(cm(cV.args[13])))
894+ else if (if (if (if ((cV.function == "updateArtwork"))
895+ then (cV.dApp == this)
898896 else false)
899- then (cW.fee == 500000)
897+ then (cV.fee == 500000)
900898 else false)
901- then (cW.feeAssetId == unit)
899+ then (cV.feeAssetId == unit)
902900 else false)
903- then sigVerify(cU.bodyBytes, cU.proofs[0], fromBase58String(cm(cW.args[12])))
904- else if (if (if (if ((cW.function == "sellArtwork"))
905- then (cW.dApp == this)
901+ then sigVerify(cT.bodyBytes, cT.proofs[0], fromBase58String(cm(cV.args[12])))
902+ else if (if (if (if ((cV.function == "sellArtwork"))
903+ then (cV.dApp == this)
906904 else false)
907- then (cW.fee == 500000)
905+ then (cV.fee == 500000)
908906 else false)
909- then (cW.feeAssetId == unit)
907+ then (cV.feeAssetId == unit)
910908 else false)
911- then sigVerify(cU.bodyBytes, cU.proofs[0], fromBase58String(cm(cW.args[5])))
912- else if (if (if (if ((cW.function == "acceptBid"))
913- then (cW.dApp == this)
909+ then sigVerify(cT.bodyBytes, cT.proofs[0], fromBase58String(cm(cV.args[5])))
910+ else if (if (if (if ((cV.function == "acceptBid"))
911+ then (cV.dApp == this)
914912 else false)
915- then (cW.fee == 500000)
913+ then (cV.fee == 500000)
916914 else false)
917- then (cW.feeAssetId == unit)
915+ then (cV.feeAssetId == unit)
918916 else false)
919- then sigVerify_128Kb(cU.bodyBytes, cU.proofs[0], fromBase58String(cm(cW.args[4])))
920- else sigVerify(cU.bodyBytes, cU.proofs[0], cU.senderPublicKey)
917+ then sigVerify_128Kb(cT.bodyBytes, cT.proofs[0], fromBase58String(cm(cV.args[4])))
918+ else sigVerify(cT.bodyBytes, cT.proofs[0], cT.senderPublicKey)
921919 }
922- else sigVerify(cU.bodyBytes, cU.proofs[0], cU.senderPublicKey)
920+ else sigVerify(cT.bodyBytes, cT.proofs[0], cT.senderPublicKey)
923921 }
924922

github/deemru/w8io/026f985 
108.51 ms