tx · CmsnHAQ3nK9sECHusTnnVcg34oviHzneKgnVDgW2hPtz

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.02500000 Waves

2023.09.13 12:14 [2753429] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "CmsnHAQ3nK9sECHusTnnVcg34oviHzneKgnVDgW2hPtz", "fee": 2500000, "feeAssetId": null, "timestamp": 1694596465941, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "2csLVH93R2qeukFD1Q4tGggyyYFwYcAf31zBqz5kGk49P9wiQqV7E5Hr9e4uWct7mS1RasMSzndSb1qFKbJ1C5tN" ], "script": "base64:BgJeCAISBAoCCAgSDgoMCAgICAgICAgICAEIEg8KDQgICAgICAgICAgIAQgSBgoECAgICBIECgIICBIICgYIAQEIAQgSBAoCCAgSBAoCCAgSBwoFCAgICAgSBgoECAgICFkAB1ZFUlNJT04CBTIuMC4wAQ5nZXRTdHJpbmdCeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFA2tleQIAAAh1bml0VGVzdAcACW9yYWNsZUZlZQkBBXZhbHVlAQkApggBCQEOZ2V0U3RyaW5nQnlLZXkBAg9jb25mX29yYWNsZV9mZWUACHNpZ25EYXBwCQEFdmFsdWUBCQCmCAEJAQ5nZXRTdHJpbmdCeUtleQECEWNvbmZfc2lnbndlYl9kYXBwAAtmZWVSZWNlaXZlcgkBDmdldFN0cmluZ0J5S2V5AQIRY29uZl9mZWVfcmVjZWl2ZXIACHVzZXJEYXBwAwUIdW5pdFRlc3QJAQV2YWx1ZQEJAKYIAQIjM010NFJHTUV5alNXWUFvY1RQcWQ1NXdkSFFRQjNQVTJVQ20JAQV2YWx1ZQEJAKYIAQkBDmdldFN0cmluZ0J5S2V5AQIPY29uZl91c2Vyc19kYXBwAA13aGl0ZWxpc3REYXBwCQEFdmFsdWUBCQCmCAEJAQ5nZXRTdHJpbmdCeUtleQECE2NvbmZfd2hpdGVsaXN0X2RhcHAAEXVzZHRQUEFzc2V0SWRfc3RyCQEOZ2V0U3RyaW5nQnlLZXkBAhtjb25mX2FjY2VwdGVkX2Fzc2V0X1VTRFRfUFAADmFydEFzc2V0SWRfc3RyCQEOZ2V0U3RyaW5nQnlLZXkBAhdjb25mX2FjY2VwdGVkX2Fzc2V0X0FSVAARdXNkY1BQQXNzZXRJZF9zdHIJAQ5nZXRTdHJpbmdCeUtleQECG2NvbmZfYWNjZXB0ZWRfYXNzZXRfVVNEQ19QUAAPZWFzdEFzc2V0SWRfc3RyCQEOZ2V0U3RyaW5nQnlLZXkBAhhjb25mX2FjY2VwdGVkX2Fzc2V0X0VBU1QAEXB1enpsZUFzc2V0SWRfc3RyCQEOZ2V0U3RyaW5nQnlLZXkBAhpjb25mX2FjY2VwdGVkX2Fzc2V0X1BVWlpMRQAQZXRoUFBBc3NldElkX3N0cgkBDmdldFN0cmluZ0J5S2V5AQIaY29uZl9hY2NlcHRlZF9hc3NldF9FVEhfUFAAEHdhdmVzQXNzZXRJZF9zdHICBVdBVkVTAA11c2R0UFBBc3NldElkCQDZBAEFEXVzZHRQUEFzc2V0SWRfc3RyAAphcnRBc3NldElkCQDZBAEFDmFydEFzc2V0SWRfc3RyAA11c2RjUFBBc3NldElkCQDZBAEFEXVzZGNQUEFzc2V0SWRfc3RyAAtlYXN0QXNzZXRJZAkA2QQBBQ9lYXN0QXNzZXRJZF9zdHIADXB1enpsZUFzc2V0SWQJANkEAQURcHV6emxlQXNzZXRJZF9zdHIADGV0aFBQQXNzZXRJZAkA2QQBBRBldGhQUEFzc2V0SWRfc3RyAAx3YXZlc0Fzc2V0SWQBAAATYWxsX2FjY2VwdGVkX2Fzc2V0cwkAzAgCBRF1c2R0UFBBc3NldElkX3N0cgkAzAgCBQ5hcnRBc3NldElkX3N0cgkAzAgCBRF1c2RjUFBBc3NldElkX3N0cgkAzAgCBQ9lYXN0QXNzZXRJZF9zdHIJAMwIAgURcHV6emxlQXNzZXRJZF9zdHIJAMwIAgUQd2F2ZXNBc3NldElkX3N0cgkAzAgCBRBldGhQUEFzc2V0SWRfc3RyBQNuaWwABWNocmlzCQEOZ2V0U3RyaW5nQnlLZXkBAgxjb25mX2FkbWluXzEBGWdldEludGVnZXJCeUtleUZyb21PcmFjbGUBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCW9yYWNsZUZlZQUDa2V5Ah9JbnRlZ2VyIHVuZGVmaW5lIG9yIDAgaW4gb3JhY2xlAQ9nZXRJbnRlZ2VyQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAEOY2hlY2tXaGl0ZWxpc3QBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ13aGl0ZWxpc3REYXBwBQNrZXkAAAEPZ2V0Qm9vbGVhbkJ5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUDa2V5BwAOY29tbWlzc2lvbl9mZWUACAAOZGVmYXVsdExpY2VuY2UJAQ5nZXRTdHJpbmdCeUtleQECFGNvbmZfZGVmYXVsdF9saWNlbmNlABJkZWZhdWx0SGFzaExpY2VuY2UJAQ5nZXRTdHJpbmdCeUtleQECGWNvbmZfZGVmYXVsdF9saWNlbmNlX2hhc2gAC2RhcHBSdW5uaW5nCQELdmFsdWVPckVsc2UCCQCbCAIFCHVzZXJEYXBwAhRjb25mX2RhcHBfaXNfcnVubmluZwYADm1haW50ZW5hbmNlTVNHCQELdmFsdWVPckVsc2UCCQCdCAIFCHVzZXJEYXBwAhRjb25mX21haW50ZW5hbmNlX21zZwIAAA11c2VyU3VzcGVuZGVkAglTVVNQRU5ERUQAC3VzZXJSZW1vdmVkAgdSRU1PVkVEABB1c2VyVW5yZWdpc3RlcmVkAgxVTlJFR0lTVEVSRUQAC3VzZXJBbGxvd2VkAgdBTExPV0VEABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlCQEZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQEJAKwCAgISY2VydGlmaWNhdGlvbl9mZWVfCQDYBAEFCmFydEFzc2V0SWQBE2dldEFydHdvcmtSb3lhbHRpZXMBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkA6AcBC3ZhbGlkYXRlQ0lEAQNjaWQDCQEIY29udGFpbnMCBQNjaWQCAS8DAwkAZgIATAkAsQIBBQNjaWQJAAACCQCxAgEJAJEDAgkAtQkCBQNjaWQCAS8AAAA7BwkAZgIAEAkAsQIBCQCRAwIJALUJAgUDY2lkAgEvAAEHBwEMdmFsaWRhdGVIYXNoAQRoYXNoCQAAAgkAsQIBBQRoYXNoAEABDWtleVVzZXJTdGF0dXMBBmNhbGxlcgkArAICAgx1c2VyX3N0YXR1c18FBmNhbGxlcgEHa2V5RGF0ZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfZGF0ZV8FBWFydElkAgFfBQZjYWxsZXIBB2tleU5hbWUCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X25hbWVfBQVhcnRJZAIBXwUGY2FsbGVyAQdrZXlEZXNjAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF9kZXNjXwUFYXJ0SWQCAV8FBmNhbGxlcgENa2V5RGlzcGxheUNpZAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAhBhcnRfZGlzcGxheV9jaWRfBQVhcnRJZAIBXwUGY2FsbGVyAQ1rZXlFeHBvcnRIYXNoAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEGFydF9leHBvcnRfaGFzaF8FBWFydElkAgFfBQZjYWxsZXIBDGtleUV4cG9ydENpZAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAg9hcnRfZXhwb3J0X2NpZF8FBWFydElkAgFfBQZjYWxsZXIBCmtleU1heE1pbnQCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIMYXJ0X21heG1pbnRfBQVhcnRJZAIBXwUGY2FsbGVyAQlrZXlTaWduSUQCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgILYXJ0X3NpZ25pZF8FBWFydElkAgFfBQZjYWxsZXIBCWtleUlzc3VlZAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgthcnRfaXNzdWVkXwUFYXJ0SWQCAV8FBmNhbGxlcgEJa2V5T25TYWxlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICC2FydF9vbnNhbGVfBQVhcnRJZAIBXwUGY2FsbGVyAQ5rZXlMaWNlbmNlSGFzaAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAhFhcnRfbGljZW5jZV9oYXNoXwUFYXJ0SWQCAV8FBmNhbGxlcgENa2V5TGljZW5jZUNpZAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAhBhcnRfbGljZW5jZV9jaWRfBQVhcnRJZAIBXwUGY2FsbGVyAQdrZXlUYWdzAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF90YWdzXwUFYXJ0SWQCAV8FBmNhbGxlcgEHa2V5VHlwZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfdHlwZV8FBWFydElkAgFfBQZjYWxsZXIBB2tleU5vdGUCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X25vdGVfBQVhcnRJZAIBXwUGY2FsbGVyAQprZXlDcmF3bGVyAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEGFydF9jcmF3bGVyX2NpZF8FBWFydElkAgFfBQZjYWxsZXIBDGtleVJveWFsdGllcwIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAg5hcnRfcm95YWx0aWVzXwUFYXJ0SWQCAV8FBmNhbGxlcgEIa2V5UHJpY2UCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIKYXJ0X3ByaWNlXwUFYXJ0SWQCAV8FBmNhbGxlcgEKa2V5RW5kU2FsZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgxhcnRfZW5kc2FsZV8FBWFydElkAgFfBQZjYWxsZXIBEmtleUFzc2V0SWRBY2NlcHRlZAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAhJhcnRfYXNzZXRBY2NlcHRlZF8FBWFydElkAgFfBQZjYWxsZXIBB2tleUZsYWcCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X2ZsYWdfBQVhcnRJZAIBXwUGY2FsbGVyARJrZXlBcnRpc3RBZ2VudEFkZHIBCmFydGlzdEFkZHIJAKwCAgINYXJ0aXN0X2FnZW50XwUKYXJ0aXN0QWRkcgEUa2V5UHJpbWFyeVNoYXJlQWdlbnQBCmFydGlzdEFkZHIJAKwCAgIVYXJ0aXN0X2FnZW50X3ByaW1hcnlfBQphcnRpc3RBZGRyARhrZXlBcnRpc3RQdWJsaWNBZ2VudEFkZHIBCmFydGlzdEFkZHIJAKwCAgIUYXJ0aXN0X3B1YmxpY19hZ2VudF8FCmFydGlzdEFkZHIBGmtleVByaW1hcnlTaGFyZVB1YmxpY0FnZW50AQphcnRpc3RBZGRyCQCsAgICHGFydGlzdF9wdWJsaWNfYWdlbnRfcHJpbWFyeV8FCmFydGlzdEFkZHIBEWtleUhhc2hCeVR4aWRBZGRyAgZjYWxsZXIEdHhpZAkArAICCQCsAgIJAKwCAgITZ2V0X2hhc2hieXR4aWRhZGRyXwUEdHhpZAIBXwUGY2FsbGVyAQ5rZXlPd25lckJ5SGFzaAEKc2hhMjU2SGFzaAkArAICAhJnZXRfb3duZXJfYnlfaGFzaF8FCnNoYTI1Nkhhc2gBDWtleWlkQnlTaWduaWQCBmNhbGxlcgZzaWduSWQJAKwCAgkArAICCQCsAgICEmdldF9hcnRpZGJ5c2lnbmlkXwUGc2lnbklkAgFfBQZjYWxsZXIBDnZhbGlkYXRlQWxsQ0lEAwpjaWREaXNwbGF5CWNpZEV4cG9ydApjaWRMaWNlbmNlAwkBASEBCQELdmFsaWRhdGVDSUQBBQpjaWREaXNwbGF5CQACAQIRV3JvbmcgRGlzcGxheSBDSUQDCQEBIQEJAQt2YWxpZGF0ZUNJRAEFCWNpZEV4cG9ydAkAAgECEFdyb25nIEV4cG9ydCBDSUQDAwkBAiE9AgUKY2lkTGljZW5jZQIACQEBIQEJAQt2YWxpZGF0ZUNJRAEFCmNpZExpY2VuY2UHCQACAQIRV3JvbmcgTGljZW5jZSBDSUQGAQ92YWxpZGF0ZUFsbEhhc2gCDHNoYTI1NkV4cG9ydA1zaGEyNTZMaWNlbmNlAwkBASEBCQEMdmFsaWRhdGVIYXNoAQUMc2hhMjU2RXhwb3J0CQACAQIYRXhwb3J0IEhhc2ggNjQgY2hhci4gbWF4AwkBASEBCQEMdmFsaWRhdGVIYXNoAQUNc2hhMjU2TGljZW5jZQkAAgECGUxpY2VuY2UgSGFzaCA2NCBjaGFyLiBtYXgGAQ52YWxpZGF0ZVN0cmluZwIDc3RyA21heAMJAAACCQCxAgEFA3N0cgAACQACAQIYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAZgIJALECAQUDc3RyBQNtYXgJAAIBCQCsAgIFA3N0cgIMIGlzIHRvbyBsb25nBgEMdmFsaWRhdGVVc2VyAQZjYWxsZXIECnVzZXJTdGF0dXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJAQ1rZXlVc2VyU3RhdHVzAQUGY2FsbGVyBRB1c2VyVW5yZWdpc3RlcmVkAwMJAAACBQp1c2VyU3RhdHVzBRB1c2VyVW5yZWdpc3RlcmVkBgkAAAIFCnVzZXJTdGF0dXMFC3VzZXJBbGxvd2VkAi5SZWdpc3RlciB0aGlzIGFjY291bnQgZmlyc3Qgd2l0aCAiQWNjb3VudCIgdGFiAwkAAAIFCnVzZXJTdGF0dXMFDXVzZXJTdXNwZW5kZWQCEUFjY291bnQgc3VzcGVuZGVkAwkAAAIFCnVzZXJTdGF0dXMFC3VzZXJSZW1vdmVkAg9BY2NvdW50IHJlbW92ZWQCAAEKc2V0TEljZW5jZQIKY2lkTGljZW5jZQ1zaGEyNTZMaWNlbmNlBANjaWQDCQAAAgkAsQIBBQpjaWRMaWNlbmNlAAAFDmRlZmF1bHRMaWNlbmNlBQpjaWRMaWNlbmNlBARoYXNoAwkAAAIJALECAQUNc2hhMjU2TGljZW5jZQAABRJkZWZhdWx0SGFzaExpY2VuY2UFDXNoYTI1NkxpY2VuY2UJAJQKAgUDY2lkBQRoYXNoARN2YWxpZGF0ZUFydHdvcmtEYXRhCgZjYWxsZXIKY2lkRGlzcGxheQljaWRFeHBvcnQKbGljZW5jZUNJRAxzaGEyNTZFeHBvcnQLbGljZW5jZUhhc2gEbmFtZQtkZXNjcmlwdGlvbgR0YWdzCXJveWFsdGllcwQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGY2FsbGVyAwkBAiE9AgUJY2hlY2tVc2VyAgAJAAIBBQljaGVja1VzZXIDCQAAAgkAsQIBBQpjaWREaXNwbGF5AAAJAAIBAhtEaXNwbGF5IENJRCBjYW5ub3QgYmUgZW1wdHkDCQEBIQEJAQ52YWxpZGF0ZUFsbENJRAMFCmNpZERpc3BsYXkFCWNpZEV4cG9ydAUKbGljZW5jZUNJRAkAAgECEFByb2JsZW0gd2l0aCBDSUQDCQEBIQEJAQ92YWxpZGF0ZUFsbEhhc2gCBQxzaGEyNTZFeHBvcnQFC2xpY2VuY2VIYXNoCQACAQITUHJvYmxlbSB3aXRoIEhhc2hlcwMJAQEhAQkBDnZhbGlkYXRlU3RyaW5nAgUEbmFtZQBkCQACAQISMTAwIENoYXIuIG1heCBuYW1lAwkBASEBCQEOdmFsaWRhdGVTdHJpbmcCBQtkZXNjcmlwdGlvbgDoBwkAAgECGjEwMDAgQ2hhci4gbWF4IGRlc2NyaXB0aW9uAwMJAGYCAAAFCXJveWFsdGllcwYJAGYCBQlyb3lhbHRpZXMA6AcJAAIBAjNSb3lhbHRpZXMgY2Fubm90IGJlIGxlc3MgdGhhbiAwJSBvciBoaWdoZXIgdGhhbiAxMCUDCQBmAgkAkAMBCQC1CQIFBHRhZ3MCASwABQkAAgECCzUgdGFncyBtYXguAgABCWlzUGF5bWVudAEBaQMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhNObyBwYXltZW50IGF0dGFjaGVkBAdwYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEBmFtb3VudAkBBXZhbHVlAQgFB3BheW1lbnQGYW1vdW50CQCUCgIFB3BheW1lbnQFBmFtb3VudAEPdmFsaWRhdGVQYXltZW50AQFpBA0kdDAxMDAxNDEwMDUwCQEJaXNQYXltZW50AQUBaQQHcGF5bWVudAgFDSR0MDEwMDE0MTAwNTACXzEEBmFtb3VudAgFDSR0MDEwMDE0MTAwNTACXzIEB2Fzc2V0SWQDAwkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAAACCAUHcGF5bWVudAdhc3NldElkBQphcnRBc3NldElkBwgFB3BheW1lbnQHYXNzZXRJZAkAAgECK09ubHkgU0lHTiB0b2tlbiBhY2NlcHRlZCBhcyB0cmFuc2FjdGlvbiBmZWUDCQECIT0CBQZhbW91bnQFGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UJAAIBCQCsAgICGVBheW1lbnQgYW1vdW50IHNob3VsZCBiZSAJAKQDAQUZY3VycmVudENlcnRpZmljYXRpb25QcmljZQkAlAoCBQZhbW91bnQFB2Fzc2V0SWQBC2lzQXJ0TWludGVkAglhZGRyVG9Vc2UFYXJ0SWQEByRtYXRjaDAJAJoIAgUEdGhpcwkBCWtleUlzc3VlZAIFCWFkZHJUb1VzZQUFYXJ0SWQDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwAwkBAiE9AgUBYgAABgcHARR2YWxpZGF0ZVByaWNlQXNzZXRJZAMBaQxwcmljZUFzc2V0SWQMYXJ0d29ya1ByaWNlBA0kdDAxMDYzNzEwNjczCQEJaXNQYXltZW50AQUBaQQHcGF5bWVudAgFDSR0MDEwNjM3MTA2NzMCXzEEBmFtb3VudAgFDSR0MDEwNjM3MTA2NzMCXzIEB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkBQR1bml0AwMJAGYCCQCxAgEFDHByaWNlQXNzZXRJZAAACQAAAgkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkBQxwcmljZUFzc2V0SWQHCAUHcGF5bWVudAdhc3NldElkCQACAQIOV3JvbmcgYXNzZXQgaWQDAwkAAAIFB2Fzc2V0SWQFBHVuaXQJAQIhPQIFDHByaWNlQXNzZXRJZAIABwkAAgECDldyb25nIGFzc2V0IGlkAwkBAiE9AgUMYXJ0d29ya1ByaWNlBQZhbW91bnQJAAIBAhNQYXltZW50IGRvbid0IG1hdGNoCQCUCgIFBmFtb3VudAUHYXNzZXRJZAEQYWNjZXB0ZWRBc3NldElkcwEHYXNzZXRJZAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIFE2FsbF9hY2NlcHRlZF9hc3NldHMFB2Fzc2V0SWQJAAIBAkBPbmx5ICRBUlQsIFVTRFQtUFAsIFVTREMtUFAsIEVBU1QsIFBVWlpMRSwgRVRIIG9yIFdBVkVTIGFjY2VwdGVkBgEPdmFsaWRhdGVNaW5TZWxsAQVwcmljZQMJAGcCAAAFBXByaWNlCQACAQIYV3JvbmcgbWluaW11bSBzZWxsIHByaWNlBgENZ2V0QmlkQXNzZXRJZAEHYXNzZXRJZAMJAAACBQdhc3NldElkAgVXQVZFUwUEdW5pdAkA2QQBBQdhc3NldElkARZnZXRQcmljZUFzc2V0SWRGcm9tQmlkAQpiaWREYXRhS2V5BAdiaWREYXRhCQEOZ2V0U3RyaW5nQnlLZXkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOAwkAAAIFB2JpZERhdGECAAkAAgECDUJpZCBub3QgZm91bmQECmJpZERhdGFBcnIJALUJAgUHYmlkRGF0YQIBXwQJYmlkQW1vdW50CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKYmlkRGF0YUFycgABBApiaWRBc3NldElkCQENZ2V0QmlkQXNzZXRJZAEJAJEDAgUKYmlkRGF0YUFycgAAAwkAZwIAAAUJYmlkQW1vdW50CQACAQIMV3JvbmcgYW1vdW50CQCUCgIFCWJpZEFtb3VudAUKYmlkQXNzZXRJZAEVaWRDYWxsZXJEYXRlU3BvbnNvcmVkAgFpBnB1YktleQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwQLaXNTcG9uc29yZWQDCQECIT0CBQZwdWJLZXkCAAkBC3ZhbHVlT3JFbHNlAgkBDmNoZWNrV2hpdGVsaXN0AQkArAICCQClCAEJAKcIAQkA2QQBBQZwdWJLZXkCCV9mcmVlX3R4cwAAAAAEBmNhbGxlcgMDCQAAAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQClCAEFBHRoaXMJAGYCBQtpc1Nwb25zb3JlZAAABwkApQgBCQCnCAEJANkEAQUGcHViS2V5CQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEE2dldF9zcG9uc29yZWRfd2F2ZXMDAwkBAiE9AgUGcHViS2V5AgAJAGYCBQtpc1Nwb25zb3JlZAAABwkA/AcEBQ13aGl0ZWxpc3REYXBwAgl1c2VGcmVlVHgJAMwIAgkApQgBCQCnCAEJANkEAQUGcHViS2V5BQNuaWwFA25pbAUEdW5pdAMJAAACBRNnZXRfc3BvbnNvcmVkX3dhdmVzBRNnZXRfc3BvbnNvcmVkX3dhdmVzCQCWCgQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAUGY2FsbGVyCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAZgIFC2lzU3BvbnNvcmVkAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDGlkQ2FsbGVyRGF0ZQEBaQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwkAlQoDCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQgIBQFpBmNhbGxlcgVieXRlcwgFCWxhc3RCbG9jawl0aW1lc3RhbXABCmdldEJhbGFuY2UBB2Fzc2V0SWQEByRtYXRjaDAFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQBYgUHJG1hdGNoMAkA8AcCBQR0aGlzBQFiCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQEHYnV5TWludAYBaQVhcnRJZAZpc3N1ZXIFYmlkSWQIYmlkT3duZXIGcHViS2V5BA0kdDAxMzI3ODEzMzY3CQEVaWRDYWxsZXJEYXRlU3BvbnNvcmVkAgUBaQUGcHViS2V5BAJpZAgFDSR0MDEzMjc4MTMzNjcCXzEEBmNhbGxlcggFDSR0MDEzMjc4MTMzNjcCXzIEBGRhdGUIBQ0kdDAxMzI3ODEzMzY3Al8zBAtpc1Nwb25zb3JlZAgFDSR0MDEzMjc4MTMzNjcCXzQEBWlzQmlkAwMDCQAAAgUGY2FsbGVyBQZpc3N1ZXIJAQIhPQIFCGJpZE93bmVyAgAHCQECIT0CBQViaWRJZAIABwYHAwMFBWlzQmlkCQECIT0CBQZjYWxsZXIFBmlzc3VlcgcJAAIBAhlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uBAhibG9ja0VuZAkBD2dldEludGVnZXJCeUtleQEJAQprZXlFbmRTYWxlAgUGY2FsbGVyBQVhcnRJZAMDAwkBAiE9AgUIYmxvY2tFbmQAAAkAZwIFBmhlaWdodAUIYmxvY2tFbmQHCQEBIQEFBWlzQmlkBwkAAgECC1NhbGUgZW5kZWQuBA5jYWxsZXJJc0lzc3VlcgkAAAIFBmNhbGxlcgUGaXNzdWVyBAh0b3RhbE5GVAkBD2dldEludGVnZXJCeUtleQECEHRvdGFsX25mdF9pc3N1ZWQEC2FydHdvcmtOYW1lCQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5TmFtZQIFBmlzc3VlcgUFYXJ0SWQDCQAAAgULYXJ0d29ya05hbWUCAAkAAgECEUFydCBkb2Vzbid0IGV4aXN0BAhpc09uU2FsZQkBD2dldEJvb2xlYW5CeUtleQEJAQlrZXlPblNhbGUCBQZpc3N1ZXIFBWFydElkBAphbW91bnRTb2xkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCWtleUlzc3VlZAIFBmlzc3VlcgUFYXJ0SWQEDGFydHdvcmtQcmljZQMFDmNhbGxlcklzSXNzdWVyCQBoAgUZY3VycmVudENlcnRpZmljYXRpb25QcmljZQACCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCGtleVByaWNlAgUGaXNzdWVyBQVhcnRJZAQMcHJpY2VBc3NldElkAwUOY2FsbGVySXNJc3N1ZXIJANgEAQUKYXJ0QXNzZXRJZAkBDmdldFN0cmluZ0J5S2V5AQkBEmtleUFzc2V0SWRBY2NlcHRlZAIFBmlzc3VlcgUFYXJ0SWQECm1heENhblNlbGwJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEKa2V5TWF4TWludAIFBmlzc3VlcgUFYXJ0SWQDAwMJAQEhAQUFaXNCaWQJAQEhAQUOY2FsbGVySXNJc3N1ZXIHAwMJAGcCAAAFDGFydHdvcmtQcmljZQYJAQEhAQUIaXNPblNhbGUGCQBnAgAABQptYXhDYW5TZWxsBwkAAgECEEFydCBub3QgZm9yIHNhbGUDAwMJAQEhAQUFaXNCaWQFDmNhbGxlcklzSXNzdWVyBwkAZwIAAAUKbWF4Q2FuU2VsbAcJAAIBAhRNYXggaXNzdWFibGUgbm90IHNldAQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGaXNzdWVyAwMFBWlzQmlkCQECIT0CBQljaGVja1VzZXICAAcJAAIBBQljaGVja1VzZXIECmJpZERhdGFLZXkJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUFYXJ0SWQCAV8FBmlzc3VlcgIBXwUIYmlkT3duZXICAV8FBWJpZElkBA0kdDAxNDk2NTE1MTU3AwUFaXNCaWQJARZnZXRQcmljZUFzc2V0SWRGcm9tQmlkAQUKYmlkRGF0YUtleQkBFHZhbGlkYXRlUHJpY2VBc3NldElkAwUBaQUMcHJpY2VBc3NldElkBQxhcnR3b3JrUHJpY2UEBmFtb3VudAgFDSR0MDE0OTY1MTUxNTcCXzEEB2Fzc2V0SWQIBQ0kdDAxNDk2NTE1MTU3Al8yBAVhZ2VudAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQh1c2VyRGFwcAkBEmtleUFydGlzdEFnZW50QWRkcgEFBmlzc3VlcgULZmVlUmVjZWl2ZXIECmFnZW50U2hhcmUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUIdXNlckRhcHAJARRrZXlQcmltYXJ5U2hhcmVBZ2VudAEFBmlzc3VlcgAABAtwdWJsaWNBZ2VudAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQh1c2VyRGFwcAkBGGtleUFydGlzdFB1YmxpY0FnZW50QWRkcgEFBmlzc3VlcgULZmVlUmVjZWl2ZXIEEHB1YmxpY0FnZW50U2hhcmUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUIdXNlckRhcHAJARprZXlQcmltYXJ5U2hhcmVQdWJsaWNBZ2VudAEFBmlzc3VlcgAABA1pc1doaXRlbGlzdGVkCQEOY2hlY2tXaGl0ZWxpc3QBBQZpc3N1ZXIEDWFtb3VudEZvclNpZ24JAGsDBQZhbW91bnQFDmNvbW1pc3Npb25fZmVlAGQEDmFtb3VudEZvckFnZW50AwMDCQECIT0CBQVhZ2VudAULZmVlUmVjZWl2ZXIJAGYCBQphZ2VudFNoYXJlAAAHCQBmAgUGaGVpZ2h0BQ1pc1doaXRlbGlzdGVkBwkAawMFBmFtb3VudAUKYWdlbnRTaGFyZQCQTgAABBRhbW91bnRGb3JQdWJsaWNBZ2VudAMDAwkBAiE9AgULcHVibGljQWdlbnQFC2ZlZVJlY2VpdmVyCQBmAgUQcHVibGljQWdlbnRTaGFyZQAABwkAZgIFBmhlaWdodAUNaXNXaGl0ZWxpc3RlZAcJAGsDBQZhbW91bnQFEHB1YmxpY0FnZW50U2hhcmUAkE4AAAQQYW1vdW50Rm9yQ3JlYXRvcgkAZQIFBmFtb3VudAUNYW1vdW50Rm9yU2lnbgMJAAACBQphbW91bnRTb2xkBQptYXhDYW5TZWxsCQACAQIMQXJ0IHNvbGQgb3V0BA1uZXdBbW91bnRTb2xkCQBkAgUKYW1vdW50U29sZAABBAlpc3N1ZU1ldGEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCUNyZWF0b3I6IAUGaXNzdWVyAgosCiBBcnRJRDogBQVhcnRJZAIRLAogQXJ0d29yayBuYW1lOiAFC2FydHdvcmtOYW1lAgosCiBJc3N1ZTogCQCkAwEFDW5ld0Ftb3VudFNvbGQCAS8JAKQDAQUKbWF4Q2FuU2VsbAQIaXNzdWVORlQJAMIIBQkArAICAgNTQV8JAKQDAQkAZAIFCHRvdGFsTkZUAAEFCWlzc3VlTWV0YQABAAAHBAVpZE5GVAkAuAgBBQhpc3N1ZU5GVAQKc2VsbFN0YXR1cwMDCQAAAgUNbmV3QW1vdW50U29sZAUKbWF4Q2FuU2VsbAYJAQEhAQUIaXNPblNhbGUHBgQKcmVjZWl2ZU5GVAMDAwkAAAIFBmNhbGxlcgUGaXNzdWVyCQECIT0CBQhiaWRPd25lcgIABwkBAiE9AgUFYmlkSWQCAAcJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCGJpZE93bmVyCAUBaQZjYWxsZXIECmFzc2V0SWRCaWQDCQEBIQEJAQlpc0RlZmluZWQBBQdhc3NldElkAgVXQVZFUwkA2AQBCQEFdmFsdWUBBQdhc3NldElkBAdiaWREYXRhCQEOZ2V0U3RyaW5nQnlLZXkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOBAliaWREZWxPbGQJAQtEZWxldGVFbnRyeQEJAKwCAgUKYmlkRGF0YUtleQIFX09QRU4ECWJpZFVwZGF0ZQkBC1N0cmluZ0VudHJ5AgkArAICBQpiaWREYXRhS2V5AgdfQ0xPU0VECQCsAgIJAKwCAgUHYmlkRGF0YQIBXwkApAMBBQRkYXRlBAdzb2xkS2V5CQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCWFydF9zb2xkXwkApAMBBQ1uZXdBbW91bnRTb2xkAgRfb2ZfCQCkAwEFCm1heENhblNlbGwCAV8FBWFydElkAgFfBQZpc3N1ZXIECXNvbGRWYWx1ZQMJAQEhAQUFaXNCaWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUGY2FsbGVyAgFfCQCkAwEFBGRhdGUCAV8FAmlkAgFfCQCkAwEFDGFydHdvcmtQcmljZQIBXwUMcHJpY2VBc3NldElkAgFfCQDYBAEFBWlkTkZUCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQUKcmVjZWl2ZU5GVAIBXwkApAMBBQRkYXRlAgFfBQJpZAIBXwkApAMBBQZhbW91bnQCAV8FCmFzc2V0SWRCaWQCAV8JANgEAQUFaWRORlQECHNvbGREYXRhCQELU3RyaW5nRW50cnkCBQdzb2xkS2V5BQlzb2xkVmFsdWUEFGNvbW1pc3Npb25zV2l0aEFnZW50AwkBAiE9AgUOYW1vdW50Rm9yQWdlbnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULZmVlUmVjZWl2ZXIJAGUCBQ1hbW91bnRGb3JTaWduBQ5hbW91bnRGb3JBZ2VudAUHYXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUFYWdlbnQFDmFtb3VudEZvckFnZW50BQdhc3NldElkBQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFC2ZlZVJlY2VpdmVyBQ1hbW91bnRGb3JTaWduBQdhc3NldElkBQNuaWwEGmNvbW1pc3Npb25zV2l0aFB1YmxpY0FnZW50AwkBAiE9AgUUYW1vdW50Rm9yUHVibGljQWdlbnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULcHVibGljQWdlbnQFFGFtb3VudEZvclB1YmxpY0FnZW50BQdhc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZpc3N1ZXIJAGUCBRBhbW91bnRGb3JDcmVhdG9yBRRhbW91bnRGb3JQdWJsaWNBZ2VudAUHYXNzZXRJZAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZpc3N1ZXIFEGFtb3VudEZvckNyZWF0b3IFB2Fzc2V0SWQFA25pbAQKdHhUb0NhbGxlcgMFC2lzU3BvbnNvcmVkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZjYWxsZXIAAAUEdW5pdAUDbmlsBQNuaWwEBmJ1eVJlcwkAzggCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleUlzc3VlZAIFBmlzc3VlcgUFYXJ0SWQFDW5ld0Ftb3VudFNvbGQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICAgRuZnRfCQDYBAEFBWlkTkZUBQdzb2xkS2V5CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhB0b3RhbF9uZnRfaXNzdWVkCQBkAgUIdG90YWxORlQAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCmtleUVuZFNhbGUCBQZpc3N1ZXIFBWFydElkAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQlrZXlPblNhbGUCBQZpc3N1ZXIFBWFydElkBQpzZWxsU3RhdHVzCQDMCAIFCGlzc3VlTkZUCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCnJlY2VpdmVORlQAAQUFaWRORlQFA25pbAUUY29tbWlzc2lvbnNXaXRoQWdlbnQFGmNvbW1pc3Npb25zV2l0aFB1YmxpY0FnZW50BQp0eFRvQ2FsbGVyAwUFaXNCaWQJAMwIAgUIc29sZERhdGEJAMwIAgUJYmlkVXBkYXRlCQDMCAIFCWJpZERlbE9sZAUGYnV5UmVzCQDMCAIFCHNvbGREYXRhBQZidXlSZXMBCGFzU3RyaW5nAQJidgQHJG1hdGNoMAUCYnYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBANidjAFByRtYXRjaDAFA2J2MAkAAgECJFNwb25zb3JlZCBQdWJsaWMgS2V5IFN0cmluZyBleHBlY3RlZAoGaW52b2tlAQdzZXRDb25mAgNrZXkDdmFsBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyAwkBCGNvbnRhaW5zAgUDa2V5AgVjb25mXwkAzAgCCQELU3RyaW5nRW50cnkCBQNrZXkFA3ZhbAUDbmlsCQACAQIgRW50cmllcyBzdGFydGluZyB3aXRoIGNvbmZfIG9ubHkJAAIBAiJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGlzAWkBCmFkZEFydHdvcmsMBG5hbWULZGVzY3JpcHRpb24EdGFncwR0eXBlCmNpZERpc3BsYXkMc2hhMjU2RXhwb3J0CWNpZEV4cG9ydA1zaGEyNTZMaWNlbmNlCmNpZExpY2VuY2UHY3Jhd2xlcglyb3lhbHRpZXMGcHViS2V5BA0kdDAyMDc0ODIwODIxCQEVaWRDYWxsZXJEYXRlU3BvbnNvcmVkAgUBaQUGcHViS2V5BAVhcnRJZAgFDSR0MDIwNzQ4MjA4MjECXzEEBmNhbGxlcggFDSR0MDIwNzQ4MjA4MjECXzIEBGRhdGUIBQ0kdDAyMDc0ODIwODIxAl8zBAtpc1Nwb25zb3JlZAgFDSR0MDIwNzQ4MjA4MjECXzQEDSR0MDIwODMxMjA5MDAJAQpzZXRMSWNlbmNlAgUKY2lkTGljZW5jZQUNc2hhMjU2TGljZW5jZQQKbGljZW5jZUNJRAgFDSR0MDIwODMxMjA5MDACXzEEC2xpY2VuY2VIYXNoCAUNJHQwMjA4MzEyMDkwMAJfMgQPdmFsaWRhdGVBcnR3b3JrCQETdmFsaWRhdGVBcnR3b3JrRGF0YQoFBmNhbGxlcgUKY2lkRGlzcGxheQUJY2lkRXhwb3J0BQpsaWNlbmNlQ0lEBQxzaGEyNTZFeHBvcnQFC2xpY2VuY2VIYXNoBQRuYW1lBQtkZXNjcmlwdGlvbgUEdGFncwUJcm95YWx0aWVzAwkBAiE9AgUPdmFsaWRhdGVBcnR3b3JrAgAJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEEEHdoaXRlbGlzdGVkX2Ryb3AJAGYCCQEOY2hlY2tXaGl0ZWxpc3QBCQCsAgIFBmNhbGxlcgILX2ZyZWVfZHJvcHMAAAQNJHQwMjExOTkyMTI4NwMFEHdoaXRlbGlzdGVkX2Ryb3AJAJQKAgAABQphcnRBc3NldElkCQEPdmFsaWRhdGVQYXltZW50AQUBaQQGYW1vdW50CAUNJHQwMjExOTkyMTI4NwJfMQQHYXNzZXRJZAgFDSR0MDIxMTk5MjEyODcCXzIDCQEBIQEJAQlpc0RlZmluZWQBBQZhbW91bnQJAAIBAhRTb21ldGhpbmcgd2VudCB3cm9uZwQXZGVjcmVhc2Vfd2hpdGVsaXN0X2Ryb3ADBRB3aGl0ZWxpc3RlZF9kcm9wCQD8BwQFDXdoaXRlbGlzdERhcHACC3VzZUZyZWVEcm9wCQDMCAIFBmNhbGxlcgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUXZGVjcmVhc2Vfd2hpdGVsaXN0X2Ryb3AFF2RlY3JlYXNlX3doaXRlbGlzdF9kcm9wBAp0eFRvQ2FsbGVyAwULaXNTcG9uc29yZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEHa2V5RGF0ZQIFBmNhbGxlcgUFYXJ0SWQFBGRhdGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleU5hbWUCBQZjYWxsZXIFBWFydElkBQRuYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlEZXNjAgUGY2FsbGVyBQVhcnRJZAULZGVzY3JpcHRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleURpc3BsYXlDaWQCBQZjYWxsZXIFBWFydElkBQpjaWREaXNwbGF5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlFeHBvcnRDaWQCBQZjYWxsZXIFBWFydElkBQljaWRFeHBvcnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleUV4cG9ydEhhc2gCBQZjYWxsZXIFBWFydElkBQxzaGEyNTZFeHBvcnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleUxpY2VuY2VIYXNoAgUGY2FsbGVyBQVhcnRJZAULbGljZW5jZUhhc2gJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleUxpY2VuY2VDaWQCBQZjYWxsZXIFBWFydElkBQpsaWNlbmNlQ0lECQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUeXBlAgUGY2FsbGVyBQVhcnRJZAUEdHlwZQkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5VGFncwIFBmNhbGxlcgUFYXJ0SWQFBHRhZ3MJAMwIAgkBDEludGVnZXJFbnRyeQIJAQprZXlNYXhNaW50AgUGY2FsbGVyBQVhcnRJZAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5SXNzdWVkAgUGY2FsbGVyBQVhcnRJZAAACQDMCAIJAQxCb29sZWFuRW50cnkCCQEJa2V5T25TYWxlAgUGY2FsbGVyBQVhcnRJZAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBCmtleUNyYXdsZXICBQZjYWxsZXIFBWFydElkBQdjcmF3bGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5Um95YWx0aWVzAgUGY2FsbGVyBQVhcnRJZAUJcm95YWx0aWVzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQtmZWVSZWNlaXZlcgUGYW1vdW50BQphcnRBc3NldElkBQNuaWwFCnR4VG9DYWxsZXIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENdXBkYXRlQXJ0d29yaw0EdHhpZARuYW1lC2Rlc2NyaXB0aW9uBHRhZ3MEdHlwZQpjaWREaXNwbGF5DHNoYTI1NkV4cG9ydAljaWRFeHBvcnQNc2hhMjU2TGljZW5jZQpjaWRMaWNlbmNlB2NyYXdsZXIJcm95YWx0aWVzBnB1YktleQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwQNJHQwMjMyMDIyMzI3MgkBFWlkQ2FsbGVyRGF0ZVNwb25zb3JlZAIFAWkFBnB1YktleQQCaWQIBQ0kdDAyMzIwMjIzMjcyAl8xBAZjYWxsZXIIBQ0kdDAyMzIwMjIzMjcyAl8yBARkYXRlCAUNJHQwMjMyMDIyMzI3MgJfMwQLaXNTcG9uc29yZWQIBQ0kdDAyMzIwMjIzMjcyAl80BA0kdDAyMzI4MjIzMzUxCQEKc2V0TEljZW5jZQIFCmNpZExpY2VuY2UFDXNoYTI1NkxpY2VuY2UECmxpY2VuY2VDSUQIBQ0kdDAyMzI4MjIzMzUxAl8xBAtsaWNlbmNlSGFzaAgFDSR0MDIzMjgyMjMzNTECXzIED3ZhbGlkYXRlQXJ0d29yawkBE3ZhbGlkYXRlQXJ0d29ya0RhdGEKBQZjYWxsZXIFCmNpZERpc3BsYXkFCWNpZEV4cG9ydAUKbGljZW5jZUNJRAUMc2hhMjU2RXhwb3J0BQtsaWNlbmNlSGFzaAUEbmFtZQULZGVzY3JpcHRpb24FBHRhZ3MFCXJveWFsdGllcwMJAQIhPQIFD3ZhbGlkYXRlQXJ0d29yawIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAplbnRyeUV4aXN0CQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5TmFtZQIFBmNhbGxlcgUEdHhpZAMJAAACBQplbnRyeUV4aXN0AgAJAAIBAg9FbnRyeSBub3QgZm91bmQEBGZsYWcJAQ5nZXRTdHJpbmdCeUtleQEJAQdrZXlGbGFnAgUGY2FsbGVyBQR0eGlkAwkAAAIFBGZsYWcCB0lMTEVHQUwJAAIBAh1DYW5ub3QgdXBkYXRlIElMTEVHQUwgYXJ0d29yawMJAQEhAQkBC2lzQXJ0TWludGVkAgUGY2FsbGVyBQR0eGlkBAp0eFRvQ2FsbGVyAwULaXNTcG9uc29yZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlOYW1lAgUGY2FsbGVyBQR0eGlkBQRuYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlEZXNjAgUGY2FsbGVyBQR0eGlkBQtkZXNjcmlwdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5RGlzcGxheUNpZAIFBmNhbGxlcgUEdHhpZAUKY2lkRGlzcGxheQkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RXhwb3J0Q2lkAgUGY2FsbGVyBQR0eGlkBQljaWRFeHBvcnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleUV4cG9ydEhhc2gCBQZjYWxsZXIFBHR4aWQFDHNoYTI1NkV4cG9ydAkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5TGljZW5jZUNpZAIFBmNhbGxlcgUEdHhpZAUKbGljZW5jZUNJRAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5TGljZW5jZUhhc2gCBQZjYWxsZXIFBHR4aWQFC2xpY2VuY2VIYXNoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUYWdzAgUGY2FsbGVyBQR0eGlkBQR0YWdzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUeXBlAgUGY2FsbGVyBQR0eGlkBQR0eXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQprZXlDcmF3bGVyAgUGY2FsbGVyBQR0eGlkBQdjcmF3bGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5Um95YWx0aWVzAgUGY2FsbGVyBQR0eGlkBQlyb3lhbHRpZXMFA25pbAUKdHhUb0NhbGxlcgkAAgECDkFscmVhZHkgbWludGVkAWkBC2ZsYWdBcnR3b3JrBAVhcnRJZARhZGRyBGZsYWcEbm90ZQQNJHQwMjQ5NzgyNTAxMgkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMjQ5NzgyNTAxMgJfMQQGY2FsbGVyCAUNJHQwMjQ5NzgyNTAxMgJfMgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCAgdDT05TRU5UCQDMCAICAAkAzAgCAg9DSEFOR0VfUkVRVUlSRUQJAMwIAgIHRkxBR0dFRAkAzAgCAgdJTExFR0FMBQNuaWwFBGZsYWcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleUZsYWcCBQRhZGRyBQVhcnRJZAUEZmxhZwkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5Tm90ZQIFBGFkZHIFBWFydElkBQRub3RlBQNuaWwJAAIBCQCsAgICDlVua25vdyBzdGF0dXMgBQRmbGFnCQACAQITWW91IGFyZSBub3QgYWxsb3dlZAFpAQ1kZWxldGVBcnR3b3JrAgVhcnRJZARhZGRyBA0kdDAyNTQ0ODI1NDgyCQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAyNTQ0ODI1NDgyAl8xBAZjYWxsZXIIBQ0kdDAyNTQ0ODI1NDgyAl8yBAlhZGRyVG9Vc2UDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyBQRhZGRyBQZjYWxsZXIECmVudHJ5RXhpc3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBDmdldFN0cmluZ0J5S2V5AQkBB2tleU5hbWUCBQlhZGRyVG9Vc2UFBWFydElkAiBObyBhcnQgbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwMJAAACBQplbnRyeUV4aXN0AgAJAAIBAiBObyBhcnQgbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwQKc2hhMjU2SGFzaAkBDmdldFN0cmluZ0J5S2V5AQkBEWtleUhhc2hCeVR4aWRBZGRyAgUJYWRkclRvVXNlBQVhcnRJZAQGc2lnbklEAwkAAAIFCnNoYTI1Nkhhc2gCAAkBDmdldFN0cmluZ0J5S2V5AQkBCWtleVNpZ25JRAIFCWFkZHJUb1VzZQUFYXJ0SWQCAAQNc2lnbklEX2xlZ2FjeQMJAAACBQZzaWduSUQCAAUDbmlsCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ1rZXlpZEJ5U2lnbmlkAgUJYWRkclRvVXNlBQZzaWduSUQFA25pbAQMZGF0YVRvRGVsZXRlCQDOCAIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleURhdGUCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlOYW1lAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEHa2V5RGVzYwIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDWtleURpc3BsYXlDaWQCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQxrZXlFeHBvcnRDaWQCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ1rZXlFeHBvcnRIYXNoAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEOa2V5TGljZW5jZUhhc2gCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ1rZXlMaWNlbmNlQ2lkAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEHa2V5VHlwZQIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleVRhZ3MCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQprZXlNYXhNaW50AgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEJa2V5U2lnbklEAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEJa2V5SXNzdWVkAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEJa2V5T25TYWxlAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEHa2V5RmxhZwIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCGtleVByaWNlAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQESa2V5QXNzZXRJZEFjY2VwdGVkAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEOa2V5T3duZXJCeUhhc2gBBQpzaGEyNTZIYXNoCQDMCAIJAQtEZWxldGVFbnRyeQEJAQprZXlFbmRTYWxlAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEHa2V5Tm90ZQIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCmtleUNyYXdsZXICBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQxrZXlSb3lhbHRpZXMCBQlhZGRyVG9Vc2UFBWFydElkBQNuaWwFDXNpZ25JRF9sZWdhY3kDCQEBIQEJAQtpc0FydE1pbnRlZAIFCWFkZHJUb1VzZQUFYXJ0SWQDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cFDGRhdGFUb0RlbGV0ZQMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIFDGRhdGFUb0RlbGV0ZQkAAgECKEFydCBhbHJlYWR5IG1pbnRlZCwgeW91IGNhbm5vdCBkZWxldGUgaXQBaQELc2VsbEFydHdvcmsGBWFydElkBXByaWNlB21heE1pbnQHYXNzZXRJZAhibG9ja0VuZAZwdWJLZXkEDSR0MDI4MjYxMjgzMzEJARVpZENhbGxlckRhdGVTcG9uc29yZWQCBQFpBQZwdWJLZXkEAmlkCAUNJHQwMjgyNjEyODMzMQJfMQQGY2FsbGVyCAUNJHQwMjgyNjEyODMzMQJfMgQEZGF0ZQgFDSR0MDI4MjYxMjgzMzECXzMEC2lzU3BvbnNvcmVkCAUNJHQwMjgyNjEyODMzMQJfNAQLYXJ0d29ya05hbWUJAQ5nZXRTdHJpbmdCeUtleQEJAQdrZXlOYW1lAgUGY2FsbGVyBQVhcnRJZAMJAAACBQthcnR3b3JrTmFtZQIACQACAQIjVGhpcyBhcnQgZG9lc24ndCBtYXRjaCB5b3VyIGFjY291bnQEBGZsYWcJAQ5nZXRTdHJpbmdCeUtleQEJAQdrZXlGbGFnAgUGY2FsbGVyBQVhcnRJZAMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAICD0NIQU5HRV9SRVFVSVJFRAkAzAgCAgdGTEFHR0VECQDMCAICB0lMTEVHQUwFA25pbAUEZmxhZwkAAgECD0ZsYWdnZWQgYXJ0d29yawQGYmlkTmJyCQEPZ2V0SW50ZWdlckJ5S2V5AQkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FBWFydElkAwkAZgIAAAUIYmxvY2tFbmQJAAIBAgxOZWdhdGl2ZSBlbmQDAwkAZgIFCGJsb2NrRW5kAAADCQECIT0CBQdtYXhNaW50AAEGCQECIT0CBQVwcmljZQAABwkAAgECOlRpbWVkIG9mZmVyIG9ubHkgYWxsb3dlZCBmb3IgdW5pcXVlIGVkaXRpb24gYW5kIG9mZmVyIG9ubHkECmJhc2VIZWlnaHQDCQAAAgUIYmxvY2tFbmQAAAAABQZoZWlnaHQDCQEBIQEJARBhY2NlcHRlZEFzc2V0SWRzAQUHYXNzZXRJZAkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQMJAQEhAQkBD3ZhbGlkYXRlTWluU2VsbAEFBXByaWNlCQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAljaGVja1VzZXIJAQx2YWxpZGF0ZVVzZXIBBQZjYWxsZXIDCQECIT0CBQljaGVja1VzZXICAAkAAgEFCWNoZWNrVXNlcgQKYW1vdW50U29sZAkBD2dldEludGVnZXJCeUtleQEJAQlrZXlJc3N1ZWQCBQZjYWxsZXIFBWFydElkBAptYXhDYW5TZWxsCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCmtleU1heE1pbnQCBQZjYWxsZXIFBWFydElkAwkAZgIFB21heE1pbnQAZAkAAgECHDEwMCBlZGl0aW9ucyBtYXggcGVyIGFydHdvcmsDAwkBAiE9AgUKYW1vdW50U29sZAAACQAAAgUKYW1vdW50U29sZAUKbWF4Q2FuU2VsbAcJAAIBAhRNYXggZWRpdGlvbiByZWFjaGVkLgMDCQBmAgUKYW1vdW50U29sZAAACQECIT0CBQptYXhDYW5TZWxsBQdtYXhNaW50BwkAAgECJkNhbm5vdCBjaGFuZ2UgbWF4aW11bSBpc3N1YWJsZSBhbnltb3JlAwMJAGYCBQZiaWROYnIAAAkBAiE9AgUKbWF4Q2FuU2VsbAUHbWF4TWludAcJAAIBAjFDYW5ub3QgY2hhbmdlIG1heGltdW0gaXNzdWFibGUgd2l0aCBhY3RpdmUgb3JkZXJzBApzZWxsU3RhdHVzAwMJAGYCBQVwcmljZQAACQBmAgUHbWF4TWludAAABwYHBAp0eFRvQ2FsbGVyAwULaXNTcG9uc29yZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQxCb29sZWFuRW50cnkCCQEJa2V5T25TYWxlAgUGY2FsbGVyBQVhcnRJZAUKc2VsbFN0YXR1cwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCGtleVByaWNlAgUGY2FsbGVyBQVhcnRJZAUFcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQprZXlNYXhNaW50AgUGY2FsbGVyBQVhcnRJZAUHbWF4TWludAkAzAgCCQELU3RyaW5nRW50cnkCCQESa2V5QXNzZXRJZEFjY2VwdGVkAgUGY2FsbGVyBQVhcnRJZAUHYXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCmtleUVuZFNhbGUCBQZjYWxsZXIFBWFydElkCQBkAgUKYmFzZUhlaWdodAUIYmxvY2tFbmQFA25pbAUKdHhUb0NhbGxlcgFpAQpidXlBcnR3b3JrAgVhcnRJZAZpc3N1ZXIJAQdidXlNaW50BgUBaQUFYXJ0SWQFBmlzc3VlcgIAAgACAAFpAQZzZXRCaWQCBWFydElkBmlzc3VlcgQNJHQwMzA3MDQzMDc0NAkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMzA3MDQzMDc0NAJfMQQGY2FsbGVyCAUNJHQwMzA3MDQzMDc0NAJfMgQEZGF0ZQgFDSR0MDMwNzA0MzA3NDQCXzMEDSR0MDMwNzQ5MzA3ODUJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAUNJHQwMzA3NDkzMDc4NQJfMQQGYW1vdW50CAUNJHQwMzA3NDkzMDc4NQJfMgQHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQECGJsb2NrRW5kCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCmtleUVuZFNhbGUCBQZpc3N1ZXIFBWFydElkAwMJAQIhPQIFCGJsb2NrRW5kAAAJAGcCBQZoZWlnaHQFCGJsb2NrRW5kBwkAAgECC1NhbGUgZW5kZWQuBAZiaWROYnIJAQ9nZXRJbnRlZ2VyQnlLZXkBCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQDCQEBIQEJARBhY2NlcHRlZEFzc2V0SWRzAQUHYXNzZXRJZAkAAgECEmFzc2V0IG5vdCBhY2NlcHRlZAMJAQEhAQkBD3ZhbGlkYXRlTWluU2VsbAEFBmFtb3VudAkAAgECDldyb25nIG1pbiBzZWxsBAphbW91bnRTb2xkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCWtleUlzc3VlZAIFBmlzc3VlcgUFYXJ0SWQECm1heENhblNlbGwJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEKa2V5TWF4TWludAIFBmlzc3VlcgUFYXJ0SWQDCQBnAgAABQptYXhDYW5TZWxsCQACAQIjTm8gbWF4IGVkaXRpb24gc2V0IGZvciB0aGlzIGFydHdvcmsDCQBnAgUKYW1vdW50U29sZAUKbWF4Q2FuU2VsbAkAAgECGFNvbGQgb3V0LCB5b3UgY2Fubm90IGJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUFYXJ0SWQCAV8FBmlzc3VlcgIBXwUGY2FsbGVyAgFfBQJpZAIFX09QRU4JAKwCAgkArAICCQCsAgIJAKwCAgUHYXNzZXRJZAIBXwkApAMBBQZhbW91bnQCAV8JAKQDAQUEZGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FBWFydElkCQBkAgUGYmlkTmJyAAEFA25pbAFpAQlhY2NlcHRCaWQFBWFydElkBmlzc3VlcgViaWRJZAhiaWRPd25lcgZwdWJLZXkJAQdidXlNaW50BgUBaQUFYXJ0SWQFBmlzc3VlcgUFYmlkSWQFCGJpZE93bmVyBQZwdWJLZXkBaQEJY2FuY2VsQmlkBAVhcnRJZAZpc3N1ZXIFYmlkSWQIYmlkT3duZXIEDSR0MDMyMTA5MzIxNzAJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFDSR0MDMyMTA5MzIxNzACXzEEBmNhbGxlcggFDSR0MDMyMTA5MzIxNzACXzIEBGRhdGUIBQ0kdDAzMjEwOTMyMTcwAl8zAwMJAQIhPQIFBmNhbGxlcgUIYmlkT3duZXIJAQIhPQIFBmNhbGxlcgUGaXNzdWVyBwkAAgECGVlvdSBjYW5ub3QgZG8gdGhpcyBhY3Rpb24EDXJldHVybk1vbmV5VG8DCQAAAgUGY2FsbGVyBQZpc3N1ZXIFCGJpZE93bmVyBQZjYWxsZXIEBmJpZE5icgkBD2dldEludGVnZXJCeUtleQEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQVhcnRJZAQKYmlkRGF0YUtleQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgRiaWRfBQVhcnRJZAIBXwUGaXNzdWVyAgFfBQhiaWRPd25lcgIBXwUFYmlkSWQEB2JpZERhdGEJAQ5nZXRTdHJpbmdCeUtleQEJAKwCAgUKYmlkRGF0YUtleQIFX09QRU4DCQAAAgUHYmlkRGF0YQIACQACAQINQmlkIG5vdCBmb3VuZAQKYmlkRGF0YUFycgkAtQkCBQdiaWREYXRhAgFfBAdhc3NldElkCQENZ2V0QmlkQXNzZXRJZAEJAJEDAgUKYmlkRGF0YUFycgAABAliaWRTdGF0dXMCCENBTkNFTEVECQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUKYmlkRGF0YUtleQIFX09QRU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFCmJpZERhdGFLZXkCAV8FCWJpZFN0YXR1cwkArAICCQCsAgIFB2JpZERhdGECAV8JAKQDAQUEZGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FBWFydElkCQBlAgUGYmlkTmJyAAEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFDXJldHVybk1vbmV5VG8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpiaWREYXRhQXJyAAEFB2Fzc2V0SWQFA25pbAECdHgBCHZlcmlmaWVyAAQHJG1hdGNoMAUCdHgDCQABAgUHJG1hdGNoMAIXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EA2ludgUHJG1hdGNoMAMDAwMJAAACCAUDaW52CGZ1bmN0aW9uAgphZGRBcnR3b3JrCQAAAggFA2ludgRkQXBwBQR0aGlzBwkAAAIIBQNpbnYDZmVlAKDCHgcJAAACCAUDaW52CmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQDZBAEJAQhhc1N0cmluZwEJAJEDAggFA2ludgRhcmdzAAsDAwMDCQAAAggFA2ludghmdW5jdGlvbgINdXBkYXRlQXJ0d29yawkAAAIIBQNpbnYEZEFwcAUEdGhpcwcJAAACCAUDaW52A2ZlZQCgwh4HCQAAAggFA2ludgpmZWVBc3NldElkBQR1bml0BwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkA2QQBCQEIYXNTdHJpbmcBCQCRAwIIBQNpbnYEYXJncwAMAwMDAwkAAAIIBQNpbnYIZnVuY3Rpb24CC3NlbGxBcnR3b3JrCQAAAggFA2ludgRkQXBwBQR0aGlzBwkAAAIIBQNpbnYDZmVlAKDCHgcJAAACCAUDaW52CmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQDZBAEJAQhhc1N0cmluZwEJAJEDAggFA2ludgRhcmdzAAUDAwMDCQAAAggFA2ludghmdW5jdGlvbgIJYWNjZXB0QmlkCQAAAggFA2ludgRkQXBwBQR0aGlzBwkAAAIIBQNpbnYDZmVlAKDCHgcJAAACCAUDaW52CmZlZUFzc2V0SWQFBHVuaXQHCQDIEwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQDZBAEJAQhhc1N0cmluZwEJAJEDAggFA2ludgRhcmdzAAQJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXmFcW54", "height": 2753429, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CDxpDMUEM8Sha7yAfHJjRsMKNbiSv4bnjU9FpGdo4yQb Next: GsV3nboydm8e3U2tc3Vvc5pxuiWnv1PTNBkMzuwijk5r Diff:
OldNewDifferences
2020
2121 let i = value(addressFromString(b("conf_whitelist_dapp")))
2222
23-let j = fromBase58String(b("conf_accepted_asset_SIGN"))
23+let j = b("conf_accepted_asset_USDT_PP")
2424
25-let k = fromBase58String(b("conf_accepted_asset_USDN"))
25+let k = b("conf_accepted_asset_ART")
2626
27-let l = fromBase58String(b("conf_accepted_asset_USDT"))
27+let l = b("conf_accepted_asset_USDC_PP")
2828
29-let m = fromBase58String(b("conf_accepted_asset_USDT_PP"))
29+let m = b("conf_accepted_asset_EAST")
3030
31-let n = base58''
31+let n = b("conf_accepted_asset_PUZZLE")
3232
33-let o = b("conf_admin_1")
33+let o = b("conf_accepted_asset_ETH_PP")
3434
35-func p (c) = valueOrErrorMessage(getInteger(e, c), "Integer undefine or 0 in oracle")
35+let p = "WAVES"
36+
37+let q = fromBase58String(j)
38+
39+let r = fromBase58String(k)
40+
41+let s = fromBase58String(l)
42+
43+let t = fromBase58String(m)
44+
45+let u = fromBase58String(n)
46+
47+let v = fromBase58String(o)
48+
49+let w = base58''
50+
51+let x = [j, k, l, m, n, p, o]
52+
53+let y = b("conf_admin_1")
54+
55+func z (c) = valueOrErrorMessage(getInteger(e, c), "Integer undefine or 0 in oracle")
3656
3757
38-func q (c) = valueOrElse(getInteger(this, c), 0)
58+func A (c) = valueOrElse(getInteger(this, c), 0)
3959
4060
41-func r (c) = valueOrElse(getInteger(i, c), 0)
61+func B (c) = valueOrElse(getInteger(i, c), 0)
4262
4363
44-func s (c) = valueOrElse(getBoolean(this, c), false)
64+func C (c) = valueOrElse(getBoolean(this, c), false)
4565
4666
47-let t = 8
67+let D = 8
4868
49-let u = b("conf_default_licence")
69+let E = b("conf_default_licence")
5070
51-let v = b("conf_default_licence_hash")
71+let F = b("conf_default_licence_hash")
5272
53-let w = valueOrElse(getBoolean(h, "conf_dapp_is_running"), true)
73+let G = valueOrElse(getBoolean(h, "conf_dapp_is_running"), true)
5474
55-let x = valueOrElse(getString(h, "conf_maintenance_msg"), "")
75+let H = valueOrElse(getString(h, "conf_maintenance_msg"), "")
5676
57-let y = "SUSPENDED"
77+let I = "SUSPENDED"
5878
59-let z = "REMOVED"
79+let J = "REMOVED"
6080
61-let A = "UNREGISTERED"
81+let K = "UNREGISTERED"
6282
63-let B = "ALLOWED"
83+let L = "ALLOWED"
6484
65-let C = p(("certification_fee_" + toBase58String(j)))
85+let M = z(("certification_fee_" + toBase58String(r)))
6686
67-func D (c) = valueOrElse(getInteger(this, c), 1000)
87+func N (c) = valueOrElse(getInteger(this, c), 1000)
6888
6989
70-func E (F,G,H) = {
71- let I = getString(f, ((("data_fc_" + F) + "_") + G))
72- if ($isInstanceOf(I, "String"))
90+func O (P) = if (contains(P, "/"))
91+ then if (if ((76 > size(P)))
92+ then (size(split(P, "/")[0]) == 59)
93+ else false)
94+ then (16 > size(split(P, "/")[1]))
95+ else false
96+ else false
97+
98+
99+func Q (R) = (size(R) == 64)
100+
101+
102+func S (T) = ("user_status_" + T)
103+
104+
105+func U (T,V) = ((("art_date_" + V) + "_") + T)
106+
107+
108+func W (T,V) = ((("art_name_" + V) + "_") + T)
109+
110+
111+func X (T,V) = ((("art_desc_" + V) + "_") + T)
112+
113+
114+func Y (T,V) = ((("art_display_cid_" + V) + "_") + T)
115+
116+
117+func Z (T,V) = ((("art_export_hash_" + V) + "_") + T)
118+
119+
120+func aa (T,V) = ((("art_export_cid_" + V) + "_") + T)
121+
122+
123+func ab (T,V) = ((("art_maxmint_" + V) + "_") + T)
124+
125+
126+func ac (T,V) = ((("art_signid_" + V) + "_") + T)
127+
128+
129+func ad (T,V) = ((("art_issued_" + V) + "_") + T)
130+
131+
132+func ae (T,V) = ((("art_onsale_" + V) + "_") + T)
133+
134+
135+func af (T,V) = ((("art_licence_hash_" + V) + "_") + T)
136+
137+
138+func ag (T,V) = ((("art_licence_cid_" + V) + "_") + T)
139+
140+
141+func ah (T,V) = ((("art_tags_" + V) + "_") + T)
142+
143+
144+func ai (T,V) = ((("art_type_" + V) + "_") + T)
145+
146+
147+func aj (T,V) = ((("art_note_" + V) + "_") + T)
148+
149+
150+func ak (T,V) = ((("art_crawler_cid_" + V) + "_") + T)
151+
152+
153+func al (T,V) = ((("art_royalties_" + V) + "_") + T)
154+
155+
156+func am (T,V) = ((("art_price_" + V) + "_") + T)
157+
158+
159+func an (T,V) = ((("art_endsale_" + V) + "_") + T)
160+
161+
162+func ao (T,V) = ((("art_assetAccepted_" + V) + "_") + T)
163+
164+
165+func ap (T,V) = ((("art_flag_" + V) + "_") + T)
166+
167+
168+func aq (ar) = ("artist_agent_" + ar)
169+
170+
171+func as (ar) = ("artist_agent_primary_" + ar)
172+
173+
174+func at (ar) = ("artist_public_agent_" + ar)
175+
176+
177+func au (ar) = ("artist_public_agent_primary_" + ar)
178+
179+
180+func av (T,aw) = ((("get_hashbytxidaddr_" + aw) + "_") + T)
181+
182+
183+func ax (ay) = ("get_owner_by_hash_" + ay)
184+
185+
186+func az (T,aA) = ((("get_artidbysignid_" + aA) + "_") + T)
187+
188+
189+func aB (aC,aD,aE) = if (!(O(aC)))
190+ then throw("Wrong Display CID")
191+ else if (!(O(aD)))
192+ then throw("Wrong Export CID")
193+ else if (if ((aE != ""))
194+ then !(O(aE))
195+ else false)
196+ then throw("Wrong Licence CID")
197+ else true
198+
199+
200+func aF (aG,aH) = if (!(Q(aG)))
201+ then throw("Export Hash 64 char. max")
202+ else if (!(Q(aH)))
203+ then throw("Licence Hash 64 char. max")
204+ else true
205+
206+
207+func aI (aJ,aK) = if ((size(aJ) == 0))
208+ then throw("Field cannot be is empty")
209+ else if ((size(aJ) > aK))
210+ then throw((aJ + " is too long"))
211+ else true
212+
213+
214+func aL (T) = {
215+ let aM = valueOrElse(getString(h, S(T)), K)
216+ if (if ((aM == K))
217+ then true
218+ else (aM == L))
219+ then "Register this account first with \"Account\" tab"
220+ else if ((aM == I))
221+ then "Account suspended"
222+ else if ((aM == J))
223+ then "Account removed"
224+ else ""
225+ }
226+
227+
228+func aN (aE,aH) = {
229+ let P = if ((size(aE) == 0))
230+ then E
231+ else aE
232+ let R = if ((size(aH) == 0))
233+ then F
234+ else aH
235+ $Tuple2(P, R)
236+ }
237+
238+
239+func aO (T,aC,aD,aP,aG,aQ,aR,aS,aT,aU) = {
240+ let aV = aL(T)
241+ if ((aV != ""))
242+ then throw(aV)
243+ else if ((size(aC) == 0))
244+ then throw("Display CID cannot be empty")
245+ else if (!(aB(aC, aD, aP)))
246+ then throw("Problem with CID")
247+ else if (!(aF(aG, aQ)))
248+ then throw("Problem with Hashes")
249+ else if (!(aI(aR, 100)))
250+ then throw("100 Char. max name")
251+ else if (!(aI(aS, 1000)))
252+ then throw("1000 Char. max description")
253+ else if (if ((0 > aU))
254+ then true
255+ else (aU > 1000))
256+ then throw("Royalties cannot be less than 0% or higher than 10%")
257+ else if ((size(split(aT, ",")) > 5))
258+ then throw("5 tags max.")
259+ else ""
260+ }
261+
262+
263+func aW (aX) = if ((size(aX.payments) == 0))
264+ then throw("No payment attached")
265+ else {
266+ let aY = value(aX.payments[0])
267+ let aZ = value(aY.amount)
268+ $Tuple2(aY, aZ)
269+ }
270+
271+
272+func ba (aX) = {
273+ let bb = aW(aX)
274+ let aY = bb._1
275+ let aZ = bb._2
276+ let bc = if (if (isDefined(aY.assetId))
277+ then (aY.assetId == r)
278+ else false)
279+ then aY.assetId
280+ else throw("Only SIGN token accepted as transaction fee")
281+ if ((aZ != M))
282+ then throw(("Payment amount should be " + toString(M)))
283+ else $Tuple2(aZ, bc)
284+ }
285+
286+
287+func bd (be,V) = {
288+ let bf = getInteger(this, ad(be, V))
289+ if ($isInstanceOf(bf, "Int"))
73290 then {
74- let J = I
75- if (contains(J, H))
291+ let bg = bf
292+ if ((bg != 0))
76293 then true
77294 else false
78295 }
80297 }
81298
82299
83-func K (L) = if (contains(L, "/"))
84- then if (if ((76 > size(L)))
85- then (size(split(L, "/")[0]) == 59)
300+func bh (aX,bi,bj) = {
301+ let bk = aW(aX)
302+ let aY = bk._1
303+ let aZ = bk._2
304+ let bc = if (!(isDefined(aY.assetId)))
305+ then unit
306+ else if (if ((size(bi) > 0))
307+ then (toBase58String(value(aY.assetId)) == bi)
308+ else false)
309+ then aY.assetId
310+ else throw("Wrong asset id")
311+ if (if ((bc == unit))
312+ then (bi != "")
86313 else false)
87- then (16 > size(split(L, "/")[1]))
88- else false
89- else false
90-
91-
92-func M (N) = (size(N) == 64)
93-
94-
95-func O (P) = ("user_status_" + P)
96-
97-
98-func Q (P,R) = ((("art_date_" + R) + "_") + P)
99-
100-
101-func S (P,R) = ((("art_name_" + R) + "_") + P)
102-
103-
104-func T (P,R) = ((("art_desc_" + R) + "_") + P)
105-
106-
107-func U (P,R) = ((("art_display_cid_" + R) + "_") + P)
108-
109-
110-func V (P,R) = ((("art_export_hash_" + R) + "_") + P)
111-
112-
113-func W (P,R) = ((("art_export_cid_" + R) + "_") + P)
114-
115-
116-func X (P,R) = ((("art_maxmint_" + R) + "_") + P)
117-
118-
119-func Y (P,R) = ((("art_signid_" + R) + "_") + P)
120-
121-
122-func Z (P,R) = ((("art_issued_" + R) + "_") + P)
123-
124-
125-func aa (P,R) = ((("art_onsale_" + R) + "_") + P)
126-
127-
128-func ab (P,R) = ((("art_licence_hash_" + R) + "_") + P)
129-
130-
131-func ac (P,R) = ((("art_licence_cid_" + R) + "_") + P)
132-
133-
134-func ad (P,R) = ((("art_tags_" + R) + "_") + P)
135-
136-
137-func ae (P,R) = ((("art_type_" + R) + "_") + P)
138-
139-
140-func af (P,R) = ((("art_note_" + R) + "_") + P)
141-
142-
143-func ag (P,R) = ((("art_crawler_cid_" + R) + "_") + P)
144-
145-
146-func ah (P,R) = ((("art_royalties_" + R) + "_") + P)
147-
148-
149-func ai (P,R) = ((("art_price_" + R) + "_") + P)
150-
151-
152-func aj (P,R) = ((("art_endsale_" + R) + "_") + P)
153-
154-
155-func ak (P,R) = ((("art_assetAccepted_" + R) + "_") + P)
156-
157-
158-func al (P,R) = ((("art_flag_" + R) + "_") + P)
159-
160-
161-func am (an) = ("artist_agent_" + an)
162-
163-
164-func ao (an) = ("artist_agent_primary_" + an)
165-
166-
167-func ap (an) = ("artist_public_agent_" + an)
168-
169-
170-func aq (an) = ("artist_public_agent_primary_" + an)
171-
172-
173-func ar (P,as) = ((("get_hashbytxidaddr_" + as) + "_") + P)
174-
175-
176-func at (H) = ("get_owner_by_hash_" + H)
177-
178-
179-func au (P,av) = ((("get_artidbysignid_" + av) + "_") + P)
180-
181-
182-func aw (H,P) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((H + P)))))
183-
184-
185-func ax (ay,az,aA) = if (!(K(ay)))
186- then throw("Wrong Display CID")
187- else if (!(K(az)))
188- then throw("Wrong Export CID")
189- else if (if ((aA != ""))
190- then !(K(aA))
191- else false)
192- then throw("Wrong Licence CID")
193- else true
194-
195-
196-func aB (aC,aD) = if (!(M(aC)))
197- then throw("Export Hash 64 char. max")
198- else if (!(M(aD)))
199- then throw("Licence Hash 64 char. max")
200- else true
201-
202-
203-func aE (aF,aG) = if ((size(aF) == 0))
204- then throw("Field cannot be is empty")
205- else if ((size(aF) > aG))
206- then throw((aF + " is too long"))
207- else true
208-
209-
210-func aH (P) = {
211- let aI = valueOrElse(getString(h, O(P)), A)
212- if (if ((aI == A))
213- then true
214- else (aI == B))
215- then "Register this account first with \"Account\" tab"
216- else if ((aI == y))
217- then "Account suspended"
218- else if ((aI == z))
219- then "Account removed"
220- else ""
314+ then throw("Wrong asset id")
315+ else if ((bj != aZ))
316+ then throw("Payment don't match")
317+ else $Tuple2(aZ, bc)
221318 }
222319
223320
224-func aJ (aA,aD) = {
225- let L = if ((size(aA) == 0))
226- then u
227- else aA
228- let N = if ((size(aD) == 0))
229- then v
230- else aD
231- $Tuple2(L, N)
232- }
233-
234-
235-func aK (P,ay,az,aL,aC,aM,aN,aO,aP,aQ) = {
236- let aR = aH(P)
237- if ((aR != ""))
238- then throw(aR)
239- else if ((size(ay) == 0))
240- then throw("Display CID cannot be empty")
241- else if (!(ax(ay, az, aL)))
242- then throw("Problem with CID")
243- else if (!(aB(aC, aM)))
244- then throw("Problem with Hashes")
245- else if (!(aE(aN, 100)))
246- then throw("100 Char. max name")
247- else if (!(aE(aO, 1000)))
248- then throw("1000 Char. max description")
249- else if (if ((0 > aQ))
250- then true
251- else (aQ > 1000))
252- then throw("Royalties cannot be less than 0% or higher than 10%")
253- else if ((size(split(aP, ",")) > 5))
254- then throw("5 tags max.")
255- else ""
256- }
257-
258-
259-func aS (aT) = if ((size(aT.payments) == 0))
260- then throw("No payment attached")
261- else {
262- let aU = value(aT.payments[0])
263- let aV = value(aU.amount)
264- $Tuple2(aU, aV)
265- }
266-
267-
268-func aW (aT) = {
269- let aX = aS(aT)
270- let aU = aX._1
271- let aV = aX._2
272- let aY = if (if (isDefined(aU.assetId))
273- then (aU.assetId == j)
274- else false)
275- then aU.assetId
276- else throw("Only SIGN token accepted as transaction fee")
277- if ((aV != C))
278- then throw(("Payment amount should be " + toString(C)))
279- else $Tuple2(aV, aY)
280- }
281-
282-
283-func aZ (ba,R) = {
284- let I = getInteger(this, Z(ba, R))
285- if ($isInstanceOf(I, "Int"))
286- then {
287- let bb = I
288- if ((bb != 0))
289- then true
290- else false
291- }
292- else false
293- }
294-
295-
296-func bc (aT,bd,be) = {
297- let bf = aS(aT)
298- let aU = bf._1
299- let aV = bf._2
300- let aY = if (!(isDefined(aU.assetId)))
301- then unit
302- else if (if ((size(bd) > 0))
303- then (toBase58String(value(aU.assetId)) == bd)
304- else false)
305- then aU.assetId
306- else throw("Wrong asset id")
307- if (if ((aY == unit))
308- then (bd != "")
309- else false)
310- then throw("Wrong asset id")
311- else if ((be != aV))
312- then throw("Payment don't match")
313- else $Tuple2(aV, aY)
314- }
315-
316-
317-func bg (aY) = if (if (if (if (if (if ((aY != toBase58String(j)))
318- then (aY != toBase58String(n))
319- else false)
320- then (aY != "WAVES")
321- else false)
322- then (aY != toBase58String(k))
323- else false)
324- then (aY != toBase58String(l))
325- else false)
326- then (aY != toBase58String(m))
327- else false)
328- then throw("Only SIGN, USDN,USDT or WAVES accepted")
321+func bl (bc) = if (!(containsElement(x, bc)))
322+ then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
329323 else true
330324
331325
332-func bh (aY,bi) = {
333- let bj = if (d)
334- then 10
335- else p("waves_min_sell")
336- let bk = 1000000
337- let bl = if (d)
338- then 1
339- else (C * 2)
340- if (if (if (if (if (if (if ((aY == toBase58String(k)))
341- then (bk > bi)
342- else false)
343- then (bi != 0)
344- else false)
345- then true
346- else if (if ((aY == toBase58String(l)))
347- then (bk > bi)
348- else false)
349- then (bi != 0)
350- else false)
351- then true
352- else if (if ((aY == toBase58String(m)))
353- then (bk > bi)
354- else false)
355- then (bi != 0)
356- else false)
357- then true
358- else if (if ((aY == toBase58String(j)))
359- then (bl > bi)
360- else false)
361- then (bi != 0)
362- else false)
363- then true
364- else if (if (if ((aY == toBase58String(n)))
365- then true
366- else (aY == "WAVES"))
367- then (bj > bi)
368- else false)
369- then (bi != 0)
370- else false)
371- then throw("Wrong minimum sell price")
372- else true
373- }
326+func bm (bn) = if ((0 >= bn))
327+ then throw("Wrong minimum sell price")
328+ else true
374329
375330
376-func bm (aY) = if ((aY == "WAVES"))
331+func bo (bc) = if ((bc == "WAVES"))
377332 then unit
378- else fromBase58String(aY)
333+ else fromBase58String(bc)
379334
380335
381-func bn (bo) = {
382- let bp = b((bo + "_OPEN"))
383- if ((bp == ""))
336+func bp (bq) = {
337+ let br = b((bq + "_OPEN"))
338+ if ((br == ""))
384339 then throw("Bid not found")
385340 else {
386- let bq = split(bp, "_")
387- let br = parseIntValue(bq[1])
388- let bs = bm(bq[0])
389- if ((0 >= br))
341+ let bs = split(br, "_")
342+ let bt = parseIntValue(bs[1])
343+ let bu = bo(bs[0])
344+ if ((0 >= bt))
390345 then throw("Wrong amount")
391- else $Tuple2(br, bs)
346+ else $Tuple2(bt, bu)
392347 }
393348 }
394349
395350
396-func bt (aT,bu) = if (!(w))
397- then throw(x)
351+func bv (aX,bw) = if (!(G))
352+ then throw(H)
398353 else {
399- let bv = if ((bu != ""))
400- then valueOrElse(r((toString(addressFromPublicKey(fromBase58String(bu))) + "_free_txs")), 0)
354+ let bx = if ((bw != ""))
355+ then valueOrElse(B((toString(addressFromPublicKey(fromBase58String(bw))) + "_free_txs")), 0)
401356 else 0
402- let P = if (if ((toBase58String(aT.caller.bytes) == toString(this)))
403- then (bv > 0)
357+ let T = if (if ((toBase58String(aX.caller.bytes) == toString(this)))
358+ then (bx > 0)
404359 else false)
405- then toString(addressFromPublicKey(fromBase58String(bu)))
406- else toBase58String(aT.caller.bytes)
407- let bw = if (if ((bu != ""))
408- then (bv > 0)
360+ then toString(addressFromPublicKey(fromBase58String(bw)))
361+ else toBase58String(aX.caller.bytes)
362+ let by = if (if ((bw != ""))
363+ then (bx > 0)
409364 else false)
410- then invoke(i, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bu)))], nil)
365+ then invoke(i, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bw)))], nil)
411366 else unit
412- if ((bw == bw))
413- then $Tuple4(toBase58String(aT.transactionId), P, lastBlock.timestamp, (bv > 0))
367+ if ((by == by))
368+ then $Tuple4(toBase58String(aX.transactionId), T, lastBlock.timestamp, (bx > 0))
414369 else throw("Strict value is not equal to itself.")
415370 }
416371
417372
418-func bx (aT) = if (!(w))
419- then throw(x)
420- else $Tuple3(toBase58String(aT.transactionId), toBase58String(aT.caller.bytes), lastBlock.timestamp)
373+func bz (aX) = if (!(G))
374+ then throw(H)
375+ else $Tuple3(toBase58String(aX.transactionId), toBase58String(aX.caller.bytes), lastBlock.timestamp)
421376
422377
423-func by (aT,R,bz,bA,bB,bu) = {
424- let bC = bt(aT, bu)
425- let bD = bC._1
426- let P = bC._2
427- let bE = bC._3
428- let bv = bC._4
429- let bF = if (if (if ((P == bz))
430- then (bB != "")
378+func bA (bc) = {
379+ let bf = bc
380+ if ($isInstanceOf(bf, "ByteVector"))
381+ then {
382+ let bg = bf
383+ assetBalance(this, bg)
384+ }
385+ else wavesBalance(this).available
386+ }
387+
388+
389+func bB (aX,V,bC,bD,bE,bw) = {
390+ let bF = bv(aX, bw)
391+ let bG = bF._1
392+ let T = bF._2
393+ let bH = bF._3
394+ let bx = bF._4
395+ let bI = if (if (if ((T == bC))
396+ then (bE != "")
431397 else false)
432- then (bA != "")
398+ then (bD != "")
433399 else false)
434400 then true
435401 else false
436- if (if (bF)
437- then (P != bz)
402+ if (if (bI)
403+ then (T != bC)
438404 else false)
439405 then throw("You cannot do this action")
440406 else {
441- let bG = q(aj(P, R))
442- if (if (if ((bG != 0))
443- then (height >= bG)
407+ let bJ = A(an(T, V))
408+ if (if (if ((bJ != 0))
409+ then (height >= bJ)
444410 else false)
445- then !(bF)
411+ then !(bI)
446412 else false)
447413 then throw("Sale ended.")
448414 else {
449- let bH = (P == bz)
450- let bI = q("total_nft_issued")
451- let F = b(Y(bz, R))
452- let bJ = b(S(bz, R))
453- if ((bJ == ""))
415+ let bK = (T == bC)
416+ let bL = A("total_nft_issued")
417+ let bM = b(W(bC, V))
418+ if ((bM == ""))
454419 then throw("Art doesn't exist")
455420 else {
456- let bK = s(aa(bz, R))
457- let bL = q(Z(bz, R))
458- let be = if (bH)
459- then (C * 2)
460- else q(ai(bz, R))
461- let bd = if (bH)
462- then toBase58String(j)
463- else b(ak(bz, R))
464- let bM = q(X(bz, R))
465- if (if (if (!(bF))
466- then !(bH)
421+ let bN = C(ae(bC, V))
422+ let bO = A(ad(bC, V))
423+ let bj = if (bK)
424+ then (M * 2)
425+ else A(am(bC, V))
426+ let bi = if (bK)
427+ then toBase58String(r)
428+ else b(ao(bC, V))
429+ let bP = A(ab(bC, V))
430+ if (if (if (!(bI))
431+ then !(bK)
467432 else false)
468- then if (if ((0 >= be))
433+ then if (if ((0 >= bj))
469434 then true
470- else !(bK))
435+ else !(bN))
471436 then true
472- else (0 >= bM)
437+ else (0 >= bP)
473438 else false)
474439 then throw("Art not for sale")
475- else if (if (if (!(bF))
476- then bH
440+ else if (if (if (!(bI))
441+ then bK
477442 else false)
478- then (0 >= bM)
443+ then (0 >= bP)
479444 else false)
480445 then throw("Max issuable not set")
481446 else {
482- let aR = aH(bz)
483- if (if (bF)
484- then (aR != "")
447+ let aV = aL(bC)
448+ if (if (bI)
449+ then (aV != "")
485450 else false)
486- then throw(aR)
451+ then throw(aV)
487452 else {
488- let bo = ((((((("bid_" + R) + "_") + bz) + "_") + bB) + "_") + bA)
489- let bN = if (bF)
490- then bn(bo)
491- else bc(aT, bd, be)
492- let aV = bN._1
493- let aY = bN._2
494- let bO = valueOrElse(getString(h, am(bz)), g)
495- let bP = valueOrElse(getInteger(h, ao(bz)), 0)
496- let bQ = valueOrElse(getString(h, ap(bz)), g)
497- let bR = valueOrElse(getInteger(h, aq(bz)), 0)
498- let bS = r(bz)
499- let bT = fraction(aV, t, 100)
500- let bU = if (if (if ((bO != g))
501- then (bP > 0)
453+ let bq = ((((((("bid_" + V) + "_") + bC) + "_") + bE) + "_") + bD)
454+ let bQ = if (bI)
455+ then bp(bq)
456+ else bh(aX, bi, bj)
457+ let aZ = bQ._1
458+ let bc = bQ._2
459+ let bR = valueOrElse(getString(h, aq(bC)), g)
460+ let bS = valueOrElse(getInteger(h, as(bC)), 0)
461+ let bT = valueOrElse(getString(h, at(bC)), g)
462+ let bU = valueOrElse(getInteger(h, au(bC)), 0)
463+ let bV = B(bC)
464+ let bW = fraction(aZ, D, 100)
465+ let bX = if (if (if ((bR != g))
466+ then (bS > 0)
502467 else false)
503- then (height > bS)
468+ then (height > bV)
504469 else false)
505- then fraction(aV, bP, 10000)
470+ then fraction(aZ, bS, 10000)
506471 else 0
507- let bV = if (if (if ((bQ != g))
508- then (bR > 0)
472+ let bY = if (if (if ((bT != g))
473+ then (bU > 0)
509474 else false)
510- then (height > bS)
475+ then (height > bV)
511476 else false)
512- then fraction(aV, bR, 10000)
477+ then fraction(aZ, bU, 10000)
513478 else 0
514- let bW = (aV - bT)
515- if ((bL == bM))
479+ let bZ = (aZ - bW)
480+ if ((bO == bP))
516481 then throw("Art sold out")
517482 else {
518- let bX = (bL + 1)
519- let bY = ((((((((((("Creator: " + bz) + ",
520- ArtID: ") + R) + ",
521- SignID: ") + F) + ",
522- Artwork name: ") + bJ) + ",
523- Issue: ") + toString(bX)) + "/") + toString(bM))
524- let bZ = Issue(("SA_" + toString((bI + 1))), bY, 1, 0, false)
525- let ca = calculateAssetId(bZ)
526- let cb = if (if ((bX == bM))
483+ let ca = (bO + 1)
484+ let cb = ((((((((("Creator: " + bC) + ",
485+ ArtID: ") + V) + ",
486+ Artwork name: ") + bM) + ",
487+ Issue: ") + toString(ca)) + "/") + toString(bP))
488+ let cc = Issue(("SA_" + toString((bL + 1))), cb, 1, 0, false)
489+ let cd = calculateAssetId(cc)
490+ let ce = if (if ((ca == bP))
527491 then true
528- else !(bK))
492+ else !(bN))
529493 then false
530494 else true
531- let cc = if (if (if ((P == bz))
532- then (bB != "")
495+ let cf = if (if (if ((T == bC))
496+ then (bE != "")
533497 else false)
534- then (bA != "")
498+ then (bD != "")
535499 else false)
536- then addressFromStringValue(bB)
537- else aT.caller
538- let cd = if (!(isDefined(aY)))
500+ then addressFromStringValue(bE)
501+ else aX.caller
502+ let cg = if (!(isDefined(bc)))
539503 then "WAVES"
540- else toBase58String(value(aY))
541- let bp = b((bo + "_OPEN"))
542- let ce = DeleteEntry((bo + "_OPEN"))
543- let cf = StringEntry((bo + "_CLOSED"), ((bp + "_") + toString(bE)))
544- let cg = ((((((("art_sold_" + toString(bX)) + "_of_") + toString(bM)) + "_") + R) + "_") + bz)
545- let ch = if (!(bF))
546- then ((((((((((P + "_") + toString(bE)) + "_") + bD) + "_") + toString(be)) + "_") + bd) + "_") + toBase58String(ca))
547- else ((((((((((toString(cc) + "_") + toString(bE)) + "_") + bD) + "_") + toString(aV)) + "_") + cd) + "_") + toBase58String(ca))
548- let ci = StringEntry(cg, ch)
549- let cj = if ((bU != 0))
550- then [ScriptTransfer(Address(fromBase58String(g)), (bT - bU), aY), ScriptTransfer(Address(fromBase58String(bO)), bU, aY)]
551- else [ScriptTransfer(Address(fromBase58String(g)), bT, aY)]
552- let ck = if ((bV != 0))
553- then [ScriptTransfer(Address(fromBase58String(bQ)), bV, aY), ScriptTransfer(Address(fromBase58String(bz)), (bW - bV), aY)]
554- else [ScriptTransfer(Address(fromBase58String(bz)), bW, aY)]
555- let cl = if (bv)
556- then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
504+ else toBase58String(value(bc))
505+ let br = b((bq + "_OPEN"))
506+ let ch = DeleteEntry((bq + "_OPEN"))
507+ let ci = StringEntry((bq + "_CLOSED"), ((br + "_") + toString(bH)))
508+ let cj = ((((((("art_sold_" + toString(ca)) + "_of_") + toString(bP)) + "_") + V) + "_") + bC)
509+ let ck = if (!(bI))
510+ then ((((((((((T + "_") + toString(bH)) + "_") + bG) + "_") + toString(bj)) + "_") + bi) + "_") + toBase58String(cd))
511+ else ((((((((((toString(cf) + "_") + toString(bH)) + "_") + bG) + "_") + toString(aZ)) + "_") + cg) + "_") + toBase58String(cd))
512+ let cl = StringEntry(cj, ck)
513+ let cm = if ((bX != 0))
514+ then [ScriptTransfer(Address(fromBase58String(g)), (bW - bX), bc), ScriptTransfer(Address(fromBase58String(bR)), bX, bc)]
515+ else [ScriptTransfer(Address(fromBase58String(g)), bW, bc)]
516+ let cn = if ((bY != 0))
517+ then [ScriptTransfer(Address(fromBase58String(bT)), bY, bc), ScriptTransfer(Address(fromBase58String(bC)), (bZ - bY), bc)]
518+ else [ScriptTransfer(Address(fromBase58String(bC)), bZ, bc)]
519+ let co = if (bx)
520+ then [ScriptTransfer(Address(fromBase58String(T)), 0, unit)]
557521 else nil
558- let cm = ((([IntegerEntry(Z(bz, R), bX), StringEntry(("nft_" + toBase58String(ca)), cg), IntegerEntry("total_nft_issued", (bI + 1)), IntegerEntry(aj(bz, R), 0), BooleanEntry(aa(bz, R), cb), bZ, ScriptTransfer(cc, 1, ca)] ++ cj) ++ ck) ++ cl)
559- if (bF)
560- then [ci, cf, ce] :: cm
561- else ci :: cm
522+ let cp = ((([IntegerEntry(ad(bC, V), ca), StringEntry(("nft_" + toBase58String(cd)), cj), IntegerEntry("total_nft_issued", (bL + 1)), IntegerEntry(an(bC, V), 0), BooleanEntry(ae(bC, V), ce), cc, ScriptTransfer(cf, 1, cd)] ++ cm) ++ cn) ++ co)
523+ if (bI)
524+ then [cl, ci, ch] :: cp
525+ else cl :: cp
562526 }
563527 }
564528 }
568532 }
569533
570534
571-func cn (co) = {
572- let I = co
573- if ($isInstanceOf(I, "String"))
535+func cq (cr) = {
536+ let bf = cr
537+ if ($isInstanceOf(bf, "String"))
574538 then {
575- let cp = I
576- cp
539+ let cs = bf
540+ cs
577541 }
578542 else throw("Sponsored Public Key String expected")
579543 }
580544
581545
582-@Callable(cq)
583-func setConf (c,cr) = {
584- let P = toString(cq.caller)
585- if (containsElement([o, toString(this)], P))
546+@Callable(ct)
547+func setConf (c,cu) = {
548+ let T = toString(ct.caller)
549+ if (containsElement([y, toString(this)], T))
586550 then if (contains(c, "conf_"))
587- then [StringEntry(c, cr)]
551+ then [StringEntry(c, cu)]
588552 else throw("Entries starting with conf_ only")
589553 else throw("You are not allowed to change this")
590554 }
591555
592556
593557
594-@Callable(aT)
595-func addArtwork (H,F,aN,aO,aP,cs,ay,aC,az,aD,aA,ct,aQ,bu) = {
596- let cu = bt(aT, bu)
597- let R = cu._1
598- let P = cu._2
599- let bE = cu._3
600- let bv = cu._4
601- if (!(M(H)))
602- then throw("Hash should be 64 characters maximum")
558+@Callable(aX)
559+func addArtwork (aR,aS,aT,cv,aC,aG,aD,aH,aE,cw,aU,bw) = {
560+ let cx = bv(aX, bw)
561+ let V = cx._1
562+ let T = cx._2
563+ let bH = cx._3
564+ let bx = cx._4
565+ let cy = aN(aE, aH)
566+ let aP = cy._1
567+ let aQ = cy._2
568+ let cz = aO(T, aC, aD, aP, aG, aQ, aR, aS, aT, aU)
569+ if ((cz != ""))
570+ then throw("Something went wrong!")
603571 else {
604- let cv = aJ(aA, aD)
605- let aL = cv._1
606- let aM = cv._2
607- let cw = aK(P, ay, az, aL, aC, aM, aN, aO, aP, aQ)
608- if ((cw != ""))
609- then throw("Something went wrong!")
572+ let cA = (B((T + "_free_drops")) > 0)
573+ let cB = if (cA)
574+ then $Tuple2(0, r)
575+ else ba(aX)
576+ let aZ = cB._1
577+ let bc = cB._2
578+ if (!(isDefined(aZ)))
579+ then throw("Something went wrong")
610580 else {
611- let cx = (r((P + "_free_drops")) > 0)
612- let cy = if (cx)
613- then $Tuple2(0, F)
614- else aW(aT)
615- let aV = cy._1
616- let aY = cy._2
617- if (!(isDefined(aV)))
618- then throw("Something went wrong")
619- else {
620- let cz = b(aw(H, P))
621- if ((cz != ""))
622- then throw("You already added it")
623- else {
624- let cA = b(at(H))
625- if ((cA != ""))
626- then throw("Hash already registered")
627- else {
628- let cB = E(F, P, H)
629- if (!(cB))
630- then throw("Sign Certificate not found for this address.")
631- else {
632- let cC = if (cx)
633- then invoke(i, "useFreeDrop", [P], nil)
634- else unit
635- if ((cC == cC))
636- then {
637- let cl = if (bv)
638- then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
639- else nil
640- ([StringEntry(at(H), P), StringEntry(aw(H, P), R), IntegerEntry(Q(P, R), bE), StringEntry(S(P, R), aN), StringEntry(T(P, R), aO), StringEntry(U(P, R), ay), StringEntry(W(P, R), az), StringEntry(V(P, R), aC), StringEntry(ab(P, R), aM), StringEntry(ac(P, R), aL), StringEntry(ae(P, R), cs), StringEntry(ad(P, R), aP), IntegerEntry(X(P, R), 0), StringEntry(Y(P, R), F), IntegerEntry(Z(P, R), 0), BooleanEntry(aa(P, R), false), StringEntry(au(P, F), R), StringEntry(ar(P, R), H), StringEntry(ag(P, R), ct), IntegerEntry(ah(P, R), aQ), ScriptTransfer(Address(fromBase58String(g)), aV, j)] ++ cl)
641- }
642- else throw("Strict value is not equal to itself.")
643- }
644- }
645- }
581+ let cC = if (cA)
582+ then invoke(i, "useFreeDrop", [T], nil)
583+ else unit
584+ if ((cC == cC))
585+ then {
586+ let co = if (bx)
587+ then [ScriptTransfer(Address(fromBase58String(T)), 0, unit)]
588+ else nil
589+ ([IntegerEntry(U(T, V), bH), StringEntry(W(T, V), aR), StringEntry(X(T, V), aS), StringEntry(Y(T, V), aC), StringEntry(aa(T, V), aD), StringEntry(Z(T, V), aG), StringEntry(af(T, V), aQ), StringEntry(ag(T, V), aP), StringEntry(ai(T, V), cv), StringEntry(ah(T, V), aT), IntegerEntry(ab(T, V), 0), IntegerEntry(ad(T, V), 0), BooleanEntry(ae(T, V), false), StringEntry(ak(T, V), cw), IntegerEntry(al(T, V), aU), ScriptTransfer(Address(fromBase58String(g)), aZ, r)] ++ co)
646590 }
591+ else throw("Strict value is not equal to itself.")
647592 }
648593 }
649594 }
650595
651596
652597
653-@Callable(aT)
654-func updateArtwork (as,aN,aO,aP,cs,ay,aC,az,aD,aA,ct,aQ,bu) = if (!(w))
655- then throw(x)
598+@Callable(aX)
599+func updateArtwork (aw,aR,aS,aT,cv,aC,aG,aD,aH,aE,cw,aU,bw) = if (!(G))
600+ then throw(H)
656601 else {
657- let cD = bt(aT, bu)
658- let bD = cD._1
659- let P = cD._2
660- let bE = cD._3
661- let bv = cD._4
662- let cE = aJ(aA, aD)
663- let aL = cE._1
664- let aM = cE._2
665- let cw = aK(P, ay, az, aL, aC, aM, aN, aO, aP, aQ)
666- if ((cw != ""))
602+ let cD = bv(aX, bw)
603+ let bG = cD._1
604+ let T = cD._2
605+ let bH = cD._3
606+ let bx = cD._4
607+ let cE = aN(aE, aH)
608+ let aP = cE._1
609+ let aQ = cE._2
610+ let cz = aO(T, aC, aD, aP, aG, aQ, aR, aS, aT, aU)
611+ if ((cz != ""))
667612 then throw("Something went wrong!")
668613 else {
669- let cz = b(S(P, as))
670- if ((cz == ""))
614+ let cF = b(W(T, aw))
615+ if ((cF == ""))
671616 then throw("Entry not found")
672617 else {
673- let cF = b(al(P, as))
674- if ((cF == "ILLEGAL"))
618+ let cG = b(ap(T, aw))
619+ if ((cG == "ILLEGAL"))
675620 then throw("Cannot update ILLEGAL artwork")
676- else if (!(aZ(P, as)))
621+ else if (!(bd(T, aw)))
677622 then {
678- let cl = if (bv)
679- then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
623+ let co = if (bx)
624+ then [ScriptTransfer(Address(fromBase58String(T)), 0, unit)]
680625 else nil
681- ([StringEntry(S(P, as), aN), StringEntry(T(P, as), aO), StringEntry(U(P, as), ay), StringEntry(W(P, as), az), StringEntry(V(P, as), aC), StringEntry(ac(P, as), aL), StringEntry(ab(P, as), aM), StringEntry(ad(P, as), aP), StringEntry(ae(P, as), cs), StringEntry(ag(P, as), ct), IntegerEntry(ah(P, as), aQ)] ++ cl)
626+ ([StringEntry(W(T, aw), aR), StringEntry(X(T, aw), aS), StringEntry(Y(T, aw), aC), StringEntry(aa(T, aw), aD), StringEntry(Z(T, aw), aG), StringEntry(ag(T, aw), aP), StringEntry(af(T, aw), aQ), StringEntry(ah(T, aw), aT), StringEntry(ai(T, aw), cv), StringEntry(ak(T, aw), cw), IntegerEntry(al(T, aw), aU)] ++ co)
682627 }
683628 else throw("Already minted")
684629 }
687632
688633
689634
690-@Callable(aT)
691-func flagArtwork (R,cG,cF,cH) = {
692- let cI = bx(aT)
693- let bD = cI._1
694- let P = cI._2
695- if (containsElement([o, toString(this)], P))
696- then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cF))
697- then [StringEntry(al(cG, R), cF), StringEntry(af(cG, R), cH)]
698- else throw(("Unknow status " + cF))
635+@Callable(aX)
636+func flagArtwork (V,cH,cG,cI) = {
637+ let cJ = bz(aX)
638+ let bG = cJ._1
639+ let T = cJ._2
640+ if (containsElement([y, toString(this)], T))
641+ then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cG))
642+ then [StringEntry(ap(cH, V), cG), StringEntry(aj(cH, V), cI)]
643+ else throw(("Unknow status " + cG))
699644 else throw("You are not allowed")
700645 }
701646
702647
703648
704-@Callable(aT)
705-func deleteArtwork (R,cG) = {
706- let cJ = bx(aT)
707- let bD = cJ._1
708- let P = cJ._2
709- let ba = if (containsElement([o, toString(this)], P))
710- then cG
711- else P
712- let cz = valueOrErrorMessage(b(S(ba, R)), "No art matching for this address")
713- if ((cz == ""))
649+@Callable(aX)
650+func deleteArtwork (V,cH) = {
651+ let cK = bz(aX)
652+ let bG = cK._1
653+ let T = cK._2
654+ let be = if (containsElement([y, toString(this)], T))
655+ then cH
656+ else T
657+ let cF = valueOrErrorMessage(b(W(be, V)), "No art matching for this address")
658+ if ((cF == ""))
714659 then throw("No art matching for this address")
715660 else {
716- let H = b(ar(ba, R))
717- if ((H == ""))
718- then throw("No art hash matching for this address")
719- else {
720- let F = b(Y(ba, R))
721- if ((F == ""))
722- then throw("No SIGN ID matching")
723- else {
724- let cK = [DeleteEntry(Q(ba, R)), DeleteEntry(S(ba, R)), DeleteEntry(T(ba, R)), DeleteEntry(U(ba, R)), DeleteEntry(W(ba, R)), DeleteEntry(V(ba, R)), DeleteEntry(ab(ba, R)), DeleteEntry(ac(ba, R)), DeleteEntry(ae(ba, R)), DeleteEntry(ad(ba, R)), DeleteEntry(X(ba, R)), DeleteEntry(Y(ba, R)), DeleteEntry(Z(ba, R)), DeleteEntry(aa(ba, R)), DeleteEntry(al(ba, R)), DeleteEntry(ai(ba, R)), DeleteEntry(ak(ba, R)), DeleteEntry(at(H)), DeleteEntry(au(ba, F)), DeleteEntry(aw(H, ba)), DeleteEntry(aj(ba, R)), DeleteEntry(af(ba, R)), DeleteEntry(ag(ba, R)), DeleteEntry(ah(ba, R))]
725- if (!(aZ(ba, R)))
726- then if (!(w))
727- then throw(x)
728- else cK
729- else if (containsElement([o, toString(this)], P))
730- then cK
731- else throw("Art already minted, you cannot delete it")
732- }
733- }
661+ let ay = b(av(be, V))
662+ let cL = if ((ay == ""))
663+ then b(ac(be, V))
664+ else ""
665+ let cM = if ((cL == ""))
666+ then nil
667+ else [DeleteEntry(az(be, cL))]
668+ let cN = ([DeleteEntry(U(be, V)), DeleteEntry(W(be, V)), DeleteEntry(X(be, V)), DeleteEntry(Y(be, V)), DeleteEntry(aa(be, V)), DeleteEntry(Z(be, V)), DeleteEntry(af(be, V)), DeleteEntry(ag(be, V)), DeleteEntry(ai(be, V)), DeleteEntry(ah(be, V)), DeleteEntry(ab(be, V)), DeleteEntry(ac(be, V)), DeleteEntry(ad(be, V)), DeleteEntry(ae(be, V)), DeleteEntry(ap(be, V)), DeleteEntry(am(be, V)), DeleteEntry(ao(be, V)), DeleteEntry(ax(ay)), DeleteEntry(an(be, V)), DeleteEntry(aj(be, V)), DeleteEntry(ak(be, V)), DeleteEntry(al(be, V))] ++ cM)
669+ if (!(bd(be, V)))
670+ then if (!(G))
671+ then throw(H)
672+ else cN
673+ else if (containsElement([y, toString(this)], T))
674+ then cN
675+ else throw("Art already minted, you cannot delete it")
734676 }
735677 }
736678
737679
738680
739-@Callable(aT)
740-func sellArtwork (R,bi,cL,aY,bG,bu) = {
741- let cM = bt(aT, bu)
742- let bD = cM._1
743- let P = cM._2
744- let bE = cM._3
745- let bv = cM._4
746- let bJ = b(S(P, R))
747- if ((bJ == ""))
681+@Callable(aX)
682+func sellArtwork (V,bn,cO,bc,bJ,bw) = {
683+ let cP = bv(aX, bw)
684+ let bG = cP._1
685+ let T = cP._2
686+ let bH = cP._3
687+ let bx = cP._4
688+ let bM = b(W(T, V))
689+ if ((bM == ""))
748690 then throw("This art doesn't match your account")
749691 else {
750- let cF = b(al(P, R))
751- if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cF))
692+ let cG = b(ap(T, V))
693+ if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cG))
752694 then throw("Flagged artwork")
753695 else {
754- let cN = q(("current_bidamount_" + R))
755- if ((0 > bG))
696+ let cQ = A(("current_bidamount_" + V))
697+ if ((0 > bJ))
756698 then throw("Negative end")
757- else if (if ((bG > 0))
758- then if ((cL != 1))
699+ else if (if ((bJ > 0))
700+ then if ((cO != 1))
759701 then true
760- else (bi != 0)
702+ else (bn != 0)
761703 else false)
762704 then throw("Timed offer only allowed for unique edition and offer only")
763705 else {
764- let cO = if ((bG == 0))
706+ let cR = if ((bJ == 0))
765707 then 0
766708 else height
767- if (!(bg(aY)))
709+ if (!(bl(bc)))
768710 then throw("Something went wrong!")
769- else if (!(bh(aY, bi)))
711+ else if (!(bm(bn)))
770712 then throw("Something went wrong!")
771713 else {
772- let aR = aH(P)
773- if ((aR != ""))
774- then throw(aR)
714+ let aV = aL(T)
715+ if ((aV != ""))
716+ then throw(aV)
775717 else {
776- let bL = q(Z(P, R))
777- let bM = q(X(P, R))
778- if ((cL > 100))
718+ let bO = A(ad(T, V))
719+ let bP = A(ab(T, V))
720+ if ((cO > 100))
779721 then throw("100 editions max per artwork")
780- else if (if ((bL != 0))
781- then (bL == bM)
722+ else if (if ((bO != 0))
723+ then (bO == bP)
782724 else false)
783725 then throw("Max edition reached.")
784- else if (if ((bL > 0))
785- then (bM != cL)
726+ else if (if ((bO > 0))
727+ then (bP != cO)
786728 else false)
787729 then throw("Cannot change maximum issuable anymore")
788- else if (if ((cN > 0))
789- then (bM != cL)
730+ else if (if ((cQ > 0))
731+ then (bP != cO)
790732 else false)
791733 then throw("Cannot change maximum issuable with active orders")
792734 else {
793- let cb = if (if ((bi > 0))
794- then (cL > 0)
735+ let ce = if (if ((bn > 0))
736+ then (cO > 0)
795737 else false)
796738 then true
797739 else false
798- let cl = if (bv)
799- then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
740+ let co = if (bx)
741+ then [ScriptTransfer(Address(fromBase58String(T)), 0, unit)]
800742 else nil
801- ([BooleanEntry(aa(P, R), cb), IntegerEntry(ai(P, R), bi), IntegerEntry(X(P, R), cL), StringEntry(ak(P, R), aY), IntegerEntry(aj(P, R), (cO + bG))] ++ cl)
743+ ([BooleanEntry(ae(T, V), ce), IntegerEntry(am(T, V), bn), IntegerEntry(ab(T, V), cO), StringEntry(ao(T, V), bc), IntegerEntry(an(T, V), (cR + bJ))] ++ co)
802744 }
803745 }
804746 }
809751
810752
811753
812-@Callable(aT)
813-func buyArtwork (R,bz) = by(aT, R, bz, "", "", "")
754+@Callable(aX)
755+func buyArtwork (V,bC) = bB(aX, V, bC, "", "", "")
814756
815757
816758
817-@Callable(aT)
818-func setBid (R,bz) = {
819- let cP = bx(aT)
820- let bD = cP._1
821- let P = cP._2
822- let bE = cP._3
823- let cQ = aS(aT)
824- let aU = cQ._1
825- let aV = cQ._2
826- let aY = if (!(isDefined(aU.assetId)))
759+@Callable(aX)
760+func setBid (V,bC) = {
761+ let cS = bz(aX)
762+ let bG = cS._1
763+ let T = cS._2
764+ let bH = cS._3
765+ let cT = aW(aX)
766+ let aY = cT._1
767+ let aZ = cT._2
768+ let bc = if (!(isDefined(aY.assetId)))
827769 then "WAVES"
828- else toBase58String(value(aU.assetId))
829- let bG = q(aj(bz, R))
830- if (if ((bG != 0))
831- then (height >= bG)
770+ else toBase58String(value(aY.assetId))
771+ let bJ = A(an(bC, V))
772+ if (if ((bJ != 0))
773+ then (height >= bJ)
832774 else false)
833775 then throw("Sale ended.")
834776 else {
835- let cN = q(("current_bidamount_" + R))
836- if (!(bg(aY)))
777+ let cQ = A(("current_bidamount_" + V))
778+ if (!(bl(bc)))
837779 then throw("asset not accepted")
838- else if (!(bh(aY, aV)))
780+ else if (!(bm(aZ)))
839781 then throw("Wrong min sell")
840782 else {
841- let bL = q(Z(bz, R))
842- let bM = q(X(bz, R))
843- if ((0 >= bM))
783+ let bO = A(ad(bC, V))
784+ let bP = A(ab(bC, V))
785+ if ((0 >= bP))
844786 then throw("No max edition set for this artwork")
845- else if ((bL >= bM))
787+ else if ((bO >= bP))
846788 then throw("Sold out, you cannot bid")
847- else [StringEntry((((((((("bid_" + R) + "_") + bz) + "_") + P) + "_") + bD) + "_OPEN"), ((((aY + "_") + toString(aV)) + "_") + toString(bE))), IntegerEntry(("current_bidamount_" + R), (cN + 1))]
789+ else [StringEntry((((((((("bid_" + V) + "_") + bC) + "_") + T) + "_") + bG) + "_OPEN"), ((((bc + "_") + toString(aZ)) + "_") + toString(bH))), IntegerEntry(("current_bidamount_" + V), (cQ + 1))]
848790 }
849791 }
850792 }
851793
852794
853795
854-@Callable(aT)
855-func acceptBid (R,bz,bA,bB,bu) = by(aT, R, bz, bA, bB, bu)
796+@Callable(aX)
797+func acceptBid (V,bC,bD,bE,bw) = bB(aX, V, bC, bD, bE, bw)
856798
857799
858800
859-@Callable(aT)
860-func cancelBid (R,bz,bA,bB) = {
861- let cR = bx(aT)
862- let bD = cR._1
863- let P = cR._2
864- let bE = cR._3
865- if (if ((P != bB))
866- then (P != bz)
801+@Callable(aX)
802+func cancelBid (V,bC,bD,bE) = {
803+ let cU = bz(aX)
804+ let bG = cU._1
805+ let T = cU._2
806+ let bH = cU._3
807+ if (if ((T != bE))
808+ then (T != bC)
867809 else false)
868810 then throw("You cannot do this action")
869811 else {
870- let cS = if ((P == bz))
871- then bB
872- else P
873- let cN = q(("current_bidamount_" + R))
874- let bo = ((((((("bid_" + R) + "_") + bz) + "_") + bB) + "_") + bA)
875- let bp = b((bo + "_OPEN"))
876- if ((bp == ""))
812+ let cV = if ((T == bC))
813+ then bE
814+ else T
815+ let cQ = A(("current_bidamount_" + V))
816+ let bq = ((((((("bid_" + V) + "_") + bC) + "_") + bE) + "_") + bD)
817+ let br = b((bq + "_OPEN"))
818+ if ((br == ""))
877819 then throw("Bid not found")
878820 else {
879- let bq = split(bp, "_")
880- let aY = bm(bq[0])
881- let cT = "CANCELED"
882-[DeleteEntry((bo + "_OPEN")), StringEntry(((bo + "_") + cT), ((bp + "_") + toString(bE))), IntegerEntry(("current_bidamount_" + R), (cN - 1)), ScriptTransfer(Address(fromBase58String(cS)), parseIntValue(bq[1]), aY)]
821+ let bs = split(br, "_")
822+ let bc = bo(bs[0])
823+ let cW = "CANCELED"
824+[DeleteEntry((bq + "_OPEN")), StringEntry(((bq + "_") + cW), ((br + "_") + toString(bH))), IntegerEntry(("current_bidamount_" + V), (cQ - 1)), ScriptTransfer(Address(fromBase58String(cV)), parseIntValue(bs[1]), bc)]
883825 }
884826 }
885827 }
886828
887829
888-@Verifier(cU)
889-func cV () = {
890- let I = cU
891- if ($isInstanceOf(I, "InvokeScriptTransaction"))
830+@Verifier(cX)
831+func cY () = {
832+ let bf = cX
833+ if ($isInstanceOf(bf, "InvokeScriptTransaction"))
892834 then {
893- let cW = I
894- if (if (if (if ((cW.function == "addArtwork"))
895- then (cW.dApp == this)
835+ let cZ = bf
836+ if (if (if (if ((cZ.function == "addArtwork"))
837+ then (cZ.dApp == this)
896838 else false)
897- then (cW.fee == 500000)
839+ then (cZ.fee == 500000)
898840 else false)
899- then (cW.feeAssetId == unit)
841+ then (cZ.feeAssetId == unit)
900842 else false)
901- then sigVerify(cU.bodyBytes, cU.proofs[0], fromBase58String(cn(cW.args[13])))
902- else if (if (if (if ((cW.function == "updateArtwork"))
903- then (cW.dApp == this)
843+ then sigVerify(cX.bodyBytes, cX.proofs[0], fromBase58String(cq(cZ.args[11])))
844+ else if (if (if (if ((cZ.function == "updateArtwork"))
845+ then (cZ.dApp == this)
904846 else false)
905- then (cW.fee == 500000)
847+ then (cZ.fee == 500000)
906848 else false)
907- then (cW.feeAssetId == unit)
849+ then (cZ.feeAssetId == unit)
908850 else false)
909- then sigVerify(cU.bodyBytes, cU.proofs[0], fromBase58String(cn(cW.args[12])))
910- else if (if (if (if ((cW.function == "sellArtwork"))
911- then (cW.dApp == this)
851+ then sigVerify(cX.bodyBytes, cX.proofs[0], fromBase58String(cq(cZ.args[12])))
852+ else if (if (if (if ((cZ.function == "sellArtwork"))
853+ then (cZ.dApp == this)
912854 else false)
913- then (cW.fee == 500000)
855+ then (cZ.fee == 500000)
914856 else false)
915- then (cW.feeAssetId == unit)
857+ then (cZ.feeAssetId == unit)
916858 else false)
917- then sigVerify(cU.bodyBytes, cU.proofs[0], fromBase58String(cn(cW.args[5])))
918- else if (if (if (if ((cW.function == "acceptBid"))
919- then (cW.dApp == this)
859+ then sigVerify(cX.bodyBytes, cX.proofs[0], fromBase58String(cq(cZ.args[5])))
860+ else if (if (if (if ((cZ.function == "acceptBid"))
861+ then (cZ.dApp == this)
920862 else false)
921- then (cW.fee == 500000)
863+ then (cZ.fee == 500000)
922864 else false)
923- then (cW.feeAssetId == unit)
865+ then (cZ.feeAssetId == unit)
924866 else false)
925- then sigVerify_128Kb(cU.bodyBytes, cU.proofs[0], fromBase58String(cn(cW.args[4])))
926- else sigVerify(cU.bodyBytes, cU.proofs[0], cU.senderPublicKey)
867+ then sigVerify_128Kb(cX.bodyBytes, cX.proofs[0], fromBase58String(cq(cZ.args[4])))
868+ else sigVerify(cX.bodyBytes, cX.proofs[0], cX.senderPublicKey)
927869 }
928- else sigVerify(cU.bodyBytes, cU.proofs[0], cU.senderPublicKey)
870+ else sigVerify(cX.bodyBytes, cX.proofs[0], cX.senderPublicKey)
929871 }
930872
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "2.0.0"
55
66 func b (c) = valueOrElse(getString(this, c), "")
77
88
99 let d = false
1010
1111 let e = value(addressFromString(b("conf_oracle_fee")))
1212
1313 let f = value(addressFromString(b("conf_signweb_dapp")))
1414
1515 let g = b("conf_fee_receiver")
1616
1717 let h = if (d)
1818 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
1919 else value(addressFromString(b("conf_users_dapp")))
2020
2121 let i = value(addressFromString(b("conf_whitelist_dapp")))
2222
23-let j = fromBase58String(b("conf_accepted_asset_SIGN"))
23+let j = b("conf_accepted_asset_USDT_PP")
2424
25-let k = fromBase58String(b("conf_accepted_asset_USDN"))
25+let k = b("conf_accepted_asset_ART")
2626
27-let l = fromBase58String(b("conf_accepted_asset_USDT"))
27+let l = b("conf_accepted_asset_USDC_PP")
2828
29-let m = fromBase58String(b("conf_accepted_asset_USDT_PP"))
29+let m = b("conf_accepted_asset_EAST")
3030
31-let n = base58''
31+let n = b("conf_accepted_asset_PUZZLE")
3232
33-let o = b("conf_admin_1")
33+let o = b("conf_accepted_asset_ETH_PP")
3434
35-func p (c) = valueOrErrorMessage(getInteger(e, c), "Integer undefine or 0 in oracle")
35+let p = "WAVES"
36+
37+let q = fromBase58String(j)
38+
39+let r = fromBase58String(k)
40+
41+let s = fromBase58String(l)
42+
43+let t = fromBase58String(m)
44+
45+let u = fromBase58String(n)
46+
47+let v = fromBase58String(o)
48+
49+let w = base58''
50+
51+let x = [j, k, l, m, n, p, o]
52+
53+let y = b("conf_admin_1")
54+
55+func z (c) = valueOrErrorMessage(getInteger(e, c), "Integer undefine or 0 in oracle")
3656
3757
38-func q (c) = valueOrElse(getInteger(this, c), 0)
58+func A (c) = valueOrElse(getInteger(this, c), 0)
3959
4060
41-func r (c) = valueOrElse(getInteger(i, c), 0)
61+func B (c) = valueOrElse(getInteger(i, c), 0)
4262
4363
44-func s (c) = valueOrElse(getBoolean(this, c), false)
64+func C (c) = valueOrElse(getBoolean(this, c), false)
4565
4666
47-let t = 8
67+let D = 8
4868
49-let u = b("conf_default_licence")
69+let E = b("conf_default_licence")
5070
51-let v = b("conf_default_licence_hash")
71+let F = b("conf_default_licence_hash")
5272
53-let w = valueOrElse(getBoolean(h, "conf_dapp_is_running"), true)
73+let G = valueOrElse(getBoolean(h, "conf_dapp_is_running"), true)
5474
55-let x = valueOrElse(getString(h, "conf_maintenance_msg"), "")
75+let H = valueOrElse(getString(h, "conf_maintenance_msg"), "")
5676
57-let y = "SUSPENDED"
77+let I = "SUSPENDED"
5878
59-let z = "REMOVED"
79+let J = "REMOVED"
6080
61-let A = "UNREGISTERED"
81+let K = "UNREGISTERED"
6282
63-let B = "ALLOWED"
83+let L = "ALLOWED"
6484
65-let C = p(("certification_fee_" + toBase58String(j)))
85+let M = z(("certification_fee_" + toBase58String(r)))
6686
67-func D (c) = valueOrElse(getInteger(this, c), 1000)
87+func N (c) = valueOrElse(getInteger(this, c), 1000)
6888
6989
70-func E (F,G,H) = {
71- let I = getString(f, ((("data_fc_" + F) + "_") + G))
72- if ($isInstanceOf(I, "String"))
90+func O (P) = if (contains(P, "/"))
91+ then if (if ((76 > size(P)))
92+ then (size(split(P, "/")[0]) == 59)
93+ else false)
94+ then (16 > size(split(P, "/")[1]))
95+ else false
96+ else false
97+
98+
99+func Q (R) = (size(R) == 64)
100+
101+
102+func S (T) = ("user_status_" + T)
103+
104+
105+func U (T,V) = ((("art_date_" + V) + "_") + T)
106+
107+
108+func W (T,V) = ((("art_name_" + V) + "_") + T)
109+
110+
111+func X (T,V) = ((("art_desc_" + V) + "_") + T)
112+
113+
114+func Y (T,V) = ((("art_display_cid_" + V) + "_") + T)
115+
116+
117+func Z (T,V) = ((("art_export_hash_" + V) + "_") + T)
118+
119+
120+func aa (T,V) = ((("art_export_cid_" + V) + "_") + T)
121+
122+
123+func ab (T,V) = ((("art_maxmint_" + V) + "_") + T)
124+
125+
126+func ac (T,V) = ((("art_signid_" + V) + "_") + T)
127+
128+
129+func ad (T,V) = ((("art_issued_" + V) + "_") + T)
130+
131+
132+func ae (T,V) = ((("art_onsale_" + V) + "_") + T)
133+
134+
135+func af (T,V) = ((("art_licence_hash_" + V) + "_") + T)
136+
137+
138+func ag (T,V) = ((("art_licence_cid_" + V) + "_") + T)
139+
140+
141+func ah (T,V) = ((("art_tags_" + V) + "_") + T)
142+
143+
144+func ai (T,V) = ((("art_type_" + V) + "_") + T)
145+
146+
147+func aj (T,V) = ((("art_note_" + V) + "_") + T)
148+
149+
150+func ak (T,V) = ((("art_crawler_cid_" + V) + "_") + T)
151+
152+
153+func al (T,V) = ((("art_royalties_" + V) + "_") + T)
154+
155+
156+func am (T,V) = ((("art_price_" + V) + "_") + T)
157+
158+
159+func an (T,V) = ((("art_endsale_" + V) + "_") + T)
160+
161+
162+func ao (T,V) = ((("art_assetAccepted_" + V) + "_") + T)
163+
164+
165+func ap (T,V) = ((("art_flag_" + V) + "_") + T)
166+
167+
168+func aq (ar) = ("artist_agent_" + ar)
169+
170+
171+func as (ar) = ("artist_agent_primary_" + ar)
172+
173+
174+func at (ar) = ("artist_public_agent_" + ar)
175+
176+
177+func au (ar) = ("artist_public_agent_primary_" + ar)
178+
179+
180+func av (T,aw) = ((("get_hashbytxidaddr_" + aw) + "_") + T)
181+
182+
183+func ax (ay) = ("get_owner_by_hash_" + ay)
184+
185+
186+func az (T,aA) = ((("get_artidbysignid_" + aA) + "_") + T)
187+
188+
189+func aB (aC,aD,aE) = if (!(O(aC)))
190+ then throw("Wrong Display CID")
191+ else if (!(O(aD)))
192+ then throw("Wrong Export CID")
193+ else if (if ((aE != ""))
194+ then !(O(aE))
195+ else false)
196+ then throw("Wrong Licence CID")
197+ else true
198+
199+
200+func aF (aG,aH) = if (!(Q(aG)))
201+ then throw("Export Hash 64 char. max")
202+ else if (!(Q(aH)))
203+ then throw("Licence Hash 64 char. max")
204+ else true
205+
206+
207+func aI (aJ,aK) = if ((size(aJ) == 0))
208+ then throw("Field cannot be is empty")
209+ else if ((size(aJ) > aK))
210+ then throw((aJ + " is too long"))
211+ else true
212+
213+
214+func aL (T) = {
215+ let aM = valueOrElse(getString(h, S(T)), K)
216+ if (if ((aM == K))
217+ then true
218+ else (aM == L))
219+ then "Register this account first with \"Account\" tab"
220+ else if ((aM == I))
221+ then "Account suspended"
222+ else if ((aM == J))
223+ then "Account removed"
224+ else ""
225+ }
226+
227+
228+func aN (aE,aH) = {
229+ let P = if ((size(aE) == 0))
230+ then E
231+ else aE
232+ let R = if ((size(aH) == 0))
233+ then F
234+ else aH
235+ $Tuple2(P, R)
236+ }
237+
238+
239+func aO (T,aC,aD,aP,aG,aQ,aR,aS,aT,aU) = {
240+ let aV = aL(T)
241+ if ((aV != ""))
242+ then throw(aV)
243+ else if ((size(aC) == 0))
244+ then throw("Display CID cannot be empty")
245+ else if (!(aB(aC, aD, aP)))
246+ then throw("Problem with CID")
247+ else if (!(aF(aG, aQ)))
248+ then throw("Problem with Hashes")
249+ else if (!(aI(aR, 100)))
250+ then throw("100 Char. max name")
251+ else if (!(aI(aS, 1000)))
252+ then throw("1000 Char. max description")
253+ else if (if ((0 > aU))
254+ then true
255+ else (aU > 1000))
256+ then throw("Royalties cannot be less than 0% or higher than 10%")
257+ else if ((size(split(aT, ",")) > 5))
258+ then throw("5 tags max.")
259+ else ""
260+ }
261+
262+
263+func aW (aX) = if ((size(aX.payments) == 0))
264+ then throw("No payment attached")
265+ else {
266+ let aY = value(aX.payments[0])
267+ let aZ = value(aY.amount)
268+ $Tuple2(aY, aZ)
269+ }
270+
271+
272+func ba (aX) = {
273+ let bb = aW(aX)
274+ let aY = bb._1
275+ let aZ = bb._2
276+ let bc = if (if (isDefined(aY.assetId))
277+ then (aY.assetId == r)
278+ else false)
279+ then aY.assetId
280+ else throw("Only SIGN token accepted as transaction fee")
281+ if ((aZ != M))
282+ then throw(("Payment amount should be " + toString(M)))
283+ else $Tuple2(aZ, bc)
284+ }
285+
286+
287+func bd (be,V) = {
288+ let bf = getInteger(this, ad(be, V))
289+ if ($isInstanceOf(bf, "Int"))
73290 then {
74- let J = I
75- if (contains(J, H))
291+ let bg = bf
292+ if ((bg != 0))
76293 then true
77294 else false
78295 }
79296 else false
80297 }
81298
82299
83-func K (L) = if (contains(L, "/"))
84- then if (if ((76 > size(L)))
85- then (size(split(L, "/")[0]) == 59)
300+func bh (aX,bi,bj) = {
301+ let bk = aW(aX)
302+ let aY = bk._1
303+ let aZ = bk._2
304+ let bc = if (!(isDefined(aY.assetId)))
305+ then unit
306+ else if (if ((size(bi) > 0))
307+ then (toBase58String(value(aY.assetId)) == bi)
308+ else false)
309+ then aY.assetId
310+ else throw("Wrong asset id")
311+ if (if ((bc == unit))
312+ then (bi != "")
86313 else false)
87- then (16 > size(split(L, "/")[1]))
88- else false
89- else false
90-
91-
92-func M (N) = (size(N) == 64)
93-
94-
95-func O (P) = ("user_status_" + P)
96-
97-
98-func Q (P,R) = ((("art_date_" + R) + "_") + P)
99-
100-
101-func S (P,R) = ((("art_name_" + R) + "_") + P)
102-
103-
104-func T (P,R) = ((("art_desc_" + R) + "_") + P)
105-
106-
107-func U (P,R) = ((("art_display_cid_" + R) + "_") + P)
108-
109-
110-func V (P,R) = ((("art_export_hash_" + R) + "_") + P)
111-
112-
113-func W (P,R) = ((("art_export_cid_" + R) + "_") + P)
114-
115-
116-func X (P,R) = ((("art_maxmint_" + R) + "_") + P)
117-
118-
119-func Y (P,R) = ((("art_signid_" + R) + "_") + P)
120-
121-
122-func Z (P,R) = ((("art_issued_" + R) + "_") + P)
123-
124-
125-func aa (P,R) = ((("art_onsale_" + R) + "_") + P)
126-
127-
128-func ab (P,R) = ((("art_licence_hash_" + R) + "_") + P)
129-
130-
131-func ac (P,R) = ((("art_licence_cid_" + R) + "_") + P)
132-
133-
134-func ad (P,R) = ((("art_tags_" + R) + "_") + P)
135-
136-
137-func ae (P,R) = ((("art_type_" + R) + "_") + P)
138-
139-
140-func af (P,R) = ((("art_note_" + R) + "_") + P)
141-
142-
143-func ag (P,R) = ((("art_crawler_cid_" + R) + "_") + P)
144-
145-
146-func ah (P,R) = ((("art_royalties_" + R) + "_") + P)
147-
148-
149-func ai (P,R) = ((("art_price_" + R) + "_") + P)
150-
151-
152-func aj (P,R) = ((("art_endsale_" + R) + "_") + P)
153-
154-
155-func ak (P,R) = ((("art_assetAccepted_" + R) + "_") + P)
156-
157-
158-func al (P,R) = ((("art_flag_" + R) + "_") + P)
159-
160-
161-func am (an) = ("artist_agent_" + an)
162-
163-
164-func ao (an) = ("artist_agent_primary_" + an)
165-
166-
167-func ap (an) = ("artist_public_agent_" + an)
168-
169-
170-func aq (an) = ("artist_public_agent_primary_" + an)
171-
172-
173-func ar (P,as) = ((("get_hashbytxidaddr_" + as) + "_") + P)
174-
175-
176-func at (H) = ("get_owner_by_hash_" + H)
177-
178-
179-func au (P,av) = ((("get_artidbysignid_" + av) + "_") + P)
180-
181-
182-func aw (H,P) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((H + P)))))
183-
184-
185-func ax (ay,az,aA) = if (!(K(ay)))
186- then throw("Wrong Display CID")
187- else if (!(K(az)))
188- then throw("Wrong Export CID")
189- else if (if ((aA != ""))
190- then !(K(aA))
191- else false)
192- then throw("Wrong Licence CID")
193- else true
194-
195-
196-func aB (aC,aD) = if (!(M(aC)))
197- then throw("Export Hash 64 char. max")
198- else if (!(M(aD)))
199- then throw("Licence Hash 64 char. max")
200- else true
201-
202-
203-func aE (aF,aG) = if ((size(aF) == 0))
204- then throw("Field cannot be is empty")
205- else if ((size(aF) > aG))
206- then throw((aF + " is too long"))
207- else true
208-
209-
210-func aH (P) = {
211- let aI = valueOrElse(getString(h, O(P)), A)
212- if (if ((aI == A))
213- then true
214- else (aI == B))
215- then "Register this account first with \"Account\" tab"
216- else if ((aI == y))
217- then "Account suspended"
218- else if ((aI == z))
219- then "Account removed"
220- else ""
314+ then throw("Wrong asset id")
315+ else if ((bj != aZ))
316+ then throw("Payment don't match")
317+ else $Tuple2(aZ, bc)
221318 }
222319
223320
224-func aJ (aA,aD) = {
225- let L = if ((size(aA) == 0))
226- then u
227- else aA
228- let N = if ((size(aD) == 0))
229- then v
230- else aD
231- $Tuple2(L, N)
232- }
233-
234-
235-func aK (P,ay,az,aL,aC,aM,aN,aO,aP,aQ) = {
236- let aR = aH(P)
237- if ((aR != ""))
238- then throw(aR)
239- else if ((size(ay) == 0))
240- then throw("Display CID cannot be empty")
241- else if (!(ax(ay, az, aL)))
242- then throw("Problem with CID")
243- else if (!(aB(aC, aM)))
244- then throw("Problem with Hashes")
245- else if (!(aE(aN, 100)))
246- then throw("100 Char. max name")
247- else if (!(aE(aO, 1000)))
248- then throw("1000 Char. max description")
249- else if (if ((0 > aQ))
250- then true
251- else (aQ > 1000))
252- then throw("Royalties cannot be less than 0% or higher than 10%")
253- else if ((size(split(aP, ",")) > 5))
254- then throw("5 tags max.")
255- else ""
256- }
257-
258-
259-func aS (aT) = if ((size(aT.payments) == 0))
260- then throw("No payment attached")
261- else {
262- let aU = value(aT.payments[0])
263- let aV = value(aU.amount)
264- $Tuple2(aU, aV)
265- }
266-
267-
268-func aW (aT) = {
269- let aX = aS(aT)
270- let aU = aX._1
271- let aV = aX._2
272- let aY = if (if (isDefined(aU.assetId))
273- then (aU.assetId == j)
274- else false)
275- then aU.assetId
276- else throw("Only SIGN token accepted as transaction fee")
277- if ((aV != C))
278- then throw(("Payment amount should be " + toString(C)))
279- else $Tuple2(aV, aY)
280- }
281-
282-
283-func aZ (ba,R) = {
284- let I = getInteger(this, Z(ba, R))
285- if ($isInstanceOf(I, "Int"))
286- then {
287- let bb = I
288- if ((bb != 0))
289- then true
290- else false
291- }
292- else false
293- }
294-
295-
296-func bc (aT,bd,be) = {
297- let bf = aS(aT)
298- let aU = bf._1
299- let aV = bf._2
300- let aY = if (!(isDefined(aU.assetId)))
301- then unit
302- else if (if ((size(bd) > 0))
303- then (toBase58String(value(aU.assetId)) == bd)
304- else false)
305- then aU.assetId
306- else throw("Wrong asset id")
307- if (if ((aY == unit))
308- then (bd != "")
309- else false)
310- then throw("Wrong asset id")
311- else if ((be != aV))
312- then throw("Payment don't match")
313- else $Tuple2(aV, aY)
314- }
315-
316-
317-func bg (aY) = if (if (if (if (if (if ((aY != toBase58String(j)))
318- then (aY != toBase58String(n))
319- else false)
320- then (aY != "WAVES")
321- else false)
322- then (aY != toBase58String(k))
323- else false)
324- then (aY != toBase58String(l))
325- else false)
326- then (aY != toBase58String(m))
327- else false)
328- then throw("Only SIGN, USDN,USDT or WAVES accepted")
321+func bl (bc) = if (!(containsElement(x, bc)))
322+ then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
329323 else true
330324
331325
332-func bh (aY,bi) = {
333- let bj = if (d)
334- then 10
335- else p("waves_min_sell")
336- let bk = 1000000
337- let bl = if (d)
338- then 1
339- else (C * 2)
340- if (if (if (if (if (if (if ((aY == toBase58String(k)))
341- then (bk > bi)
342- else false)
343- then (bi != 0)
344- else false)
345- then true
346- else if (if ((aY == toBase58String(l)))
347- then (bk > bi)
348- else false)
349- then (bi != 0)
350- else false)
351- then true
352- else if (if ((aY == toBase58String(m)))
353- then (bk > bi)
354- else false)
355- then (bi != 0)
356- else false)
357- then true
358- else if (if ((aY == toBase58String(j)))
359- then (bl > bi)
360- else false)
361- then (bi != 0)
362- else false)
363- then true
364- else if (if (if ((aY == toBase58String(n)))
365- then true
366- else (aY == "WAVES"))
367- then (bj > bi)
368- else false)
369- then (bi != 0)
370- else false)
371- then throw("Wrong minimum sell price")
372- else true
373- }
326+func bm (bn) = if ((0 >= bn))
327+ then throw("Wrong minimum sell price")
328+ else true
374329
375330
376-func bm (aY) = if ((aY == "WAVES"))
331+func bo (bc) = if ((bc == "WAVES"))
377332 then unit
378- else fromBase58String(aY)
333+ else fromBase58String(bc)
379334
380335
381-func bn (bo) = {
382- let bp = b((bo + "_OPEN"))
383- if ((bp == ""))
336+func bp (bq) = {
337+ let br = b((bq + "_OPEN"))
338+ if ((br == ""))
384339 then throw("Bid not found")
385340 else {
386- let bq = split(bp, "_")
387- let br = parseIntValue(bq[1])
388- let bs = bm(bq[0])
389- if ((0 >= br))
341+ let bs = split(br, "_")
342+ let bt = parseIntValue(bs[1])
343+ let bu = bo(bs[0])
344+ if ((0 >= bt))
390345 then throw("Wrong amount")
391- else $Tuple2(br, bs)
346+ else $Tuple2(bt, bu)
392347 }
393348 }
394349
395350
396-func bt (aT,bu) = if (!(w))
397- then throw(x)
351+func bv (aX,bw) = if (!(G))
352+ then throw(H)
398353 else {
399- let bv = if ((bu != ""))
400- then valueOrElse(r((toString(addressFromPublicKey(fromBase58String(bu))) + "_free_txs")), 0)
354+ let bx = if ((bw != ""))
355+ then valueOrElse(B((toString(addressFromPublicKey(fromBase58String(bw))) + "_free_txs")), 0)
401356 else 0
402- let P = if (if ((toBase58String(aT.caller.bytes) == toString(this)))
403- then (bv > 0)
357+ let T = if (if ((toBase58String(aX.caller.bytes) == toString(this)))
358+ then (bx > 0)
404359 else false)
405- then toString(addressFromPublicKey(fromBase58String(bu)))
406- else toBase58String(aT.caller.bytes)
407- let bw = if (if ((bu != ""))
408- then (bv > 0)
360+ then toString(addressFromPublicKey(fromBase58String(bw)))
361+ else toBase58String(aX.caller.bytes)
362+ let by = if (if ((bw != ""))
363+ then (bx > 0)
409364 else false)
410- then invoke(i, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bu)))], nil)
365+ then invoke(i, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bw)))], nil)
411366 else unit
412- if ((bw == bw))
413- then $Tuple4(toBase58String(aT.transactionId), P, lastBlock.timestamp, (bv > 0))
367+ if ((by == by))
368+ then $Tuple4(toBase58String(aX.transactionId), T, lastBlock.timestamp, (bx > 0))
414369 else throw("Strict value is not equal to itself.")
415370 }
416371
417372
418-func bx (aT) = if (!(w))
419- then throw(x)
420- else $Tuple3(toBase58String(aT.transactionId), toBase58String(aT.caller.bytes), lastBlock.timestamp)
373+func bz (aX) = if (!(G))
374+ then throw(H)
375+ else $Tuple3(toBase58String(aX.transactionId), toBase58String(aX.caller.bytes), lastBlock.timestamp)
421376
422377
423-func by (aT,R,bz,bA,bB,bu) = {
424- let bC = bt(aT, bu)
425- let bD = bC._1
426- let P = bC._2
427- let bE = bC._3
428- let bv = bC._4
429- let bF = if (if (if ((P == bz))
430- then (bB != "")
378+func bA (bc) = {
379+ let bf = bc
380+ if ($isInstanceOf(bf, "ByteVector"))
381+ then {
382+ let bg = bf
383+ assetBalance(this, bg)
384+ }
385+ else wavesBalance(this).available
386+ }
387+
388+
389+func bB (aX,V,bC,bD,bE,bw) = {
390+ let bF = bv(aX, bw)
391+ let bG = bF._1
392+ let T = bF._2
393+ let bH = bF._3
394+ let bx = bF._4
395+ let bI = if (if (if ((T == bC))
396+ then (bE != "")
431397 else false)
432- then (bA != "")
398+ then (bD != "")
433399 else false)
434400 then true
435401 else false
436- if (if (bF)
437- then (P != bz)
402+ if (if (bI)
403+ then (T != bC)
438404 else false)
439405 then throw("You cannot do this action")
440406 else {
441- let bG = q(aj(P, R))
442- if (if (if ((bG != 0))
443- then (height >= bG)
407+ let bJ = A(an(T, V))
408+ if (if (if ((bJ != 0))
409+ then (height >= bJ)
444410 else false)
445- then !(bF)
411+ then !(bI)
446412 else false)
447413 then throw("Sale ended.")
448414 else {
449- let bH = (P == bz)
450- let bI = q("total_nft_issued")
451- let F = b(Y(bz, R))
452- let bJ = b(S(bz, R))
453- if ((bJ == ""))
415+ let bK = (T == bC)
416+ let bL = A("total_nft_issued")
417+ let bM = b(W(bC, V))
418+ if ((bM == ""))
454419 then throw("Art doesn't exist")
455420 else {
456- let bK = s(aa(bz, R))
457- let bL = q(Z(bz, R))
458- let be = if (bH)
459- then (C * 2)
460- else q(ai(bz, R))
461- let bd = if (bH)
462- then toBase58String(j)
463- else b(ak(bz, R))
464- let bM = q(X(bz, R))
465- if (if (if (!(bF))
466- then !(bH)
421+ let bN = C(ae(bC, V))
422+ let bO = A(ad(bC, V))
423+ let bj = if (bK)
424+ then (M * 2)
425+ else A(am(bC, V))
426+ let bi = if (bK)
427+ then toBase58String(r)
428+ else b(ao(bC, V))
429+ let bP = A(ab(bC, V))
430+ if (if (if (!(bI))
431+ then !(bK)
467432 else false)
468- then if (if ((0 >= be))
433+ then if (if ((0 >= bj))
469434 then true
470- else !(bK))
435+ else !(bN))
471436 then true
472- else (0 >= bM)
437+ else (0 >= bP)
473438 else false)
474439 then throw("Art not for sale")
475- else if (if (if (!(bF))
476- then bH
440+ else if (if (if (!(bI))
441+ then bK
477442 else false)
478- then (0 >= bM)
443+ then (0 >= bP)
479444 else false)
480445 then throw("Max issuable not set")
481446 else {
482- let aR = aH(bz)
483- if (if (bF)
484- then (aR != "")
447+ let aV = aL(bC)
448+ if (if (bI)
449+ then (aV != "")
485450 else false)
486- then throw(aR)
451+ then throw(aV)
487452 else {
488- let bo = ((((((("bid_" + R) + "_") + bz) + "_") + bB) + "_") + bA)
489- let bN = if (bF)
490- then bn(bo)
491- else bc(aT, bd, be)
492- let aV = bN._1
493- let aY = bN._2
494- let bO = valueOrElse(getString(h, am(bz)), g)
495- let bP = valueOrElse(getInteger(h, ao(bz)), 0)
496- let bQ = valueOrElse(getString(h, ap(bz)), g)
497- let bR = valueOrElse(getInteger(h, aq(bz)), 0)
498- let bS = r(bz)
499- let bT = fraction(aV, t, 100)
500- let bU = if (if (if ((bO != g))
501- then (bP > 0)
453+ let bq = ((((((("bid_" + V) + "_") + bC) + "_") + bE) + "_") + bD)
454+ let bQ = if (bI)
455+ then bp(bq)
456+ else bh(aX, bi, bj)
457+ let aZ = bQ._1
458+ let bc = bQ._2
459+ let bR = valueOrElse(getString(h, aq(bC)), g)
460+ let bS = valueOrElse(getInteger(h, as(bC)), 0)
461+ let bT = valueOrElse(getString(h, at(bC)), g)
462+ let bU = valueOrElse(getInteger(h, au(bC)), 0)
463+ let bV = B(bC)
464+ let bW = fraction(aZ, D, 100)
465+ let bX = if (if (if ((bR != g))
466+ then (bS > 0)
502467 else false)
503- then (height > bS)
468+ then (height > bV)
504469 else false)
505- then fraction(aV, bP, 10000)
470+ then fraction(aZ, bS, 10000)
506471 else 0
507- let bV = if (if (if ((bQ != g))
508- then (bR > 0)
472+ let bY = if (if (if ((bT != g))
473+ then (bU > 0)
509474 else false)
510- then (height > bS)
475+ then (height > bV)
511476 else false)
512- then fraction(aV, bR, 10000)
477+ then fraction(aZ, bU, 10000)
513478 else 0
514- let bW = (aV - bT)
515- if ((bL == bM))
479+ let bZ = (aZ - bW)
480+ if ((bO == bP))
516481 then throw("Art sold out")
517482 else {
518- let bX = (bL + 1)
519- let bY = ((((((((((("Creator: " + bz) + ",
520- ArtID: ") + R) + ",
521- SignID: ") + F) + ",
522- Artwork name: ") + bJ) + ",
523- Issue: ") + toString(bX)) + "/") + toString(bM))
524- let bZ = Issue(("SA_" + toString((bI + 1))), bY, 1, 0, false)
525- let ca = calculateAssetId(bZ)
526- let cb = if (if ((bX == bM))
483+ let ca = (bO + 1)
484+ let cb = ((((((((("Creator: " + bC) + ",
485+ ArtID: ") + V) + ",
486+ Artwork name: ") + bM) + ",
487+ Issue: ") + toString(ca)) + "/") + toString(bP))
488+ let cc = Issue(("SA_" + toString((bL + 1))), cb, 1, 0, false)
489+ let cd = calculateAssetId(cc)
490+ let ce = if (if ((ca == bP))
527491 then true
528- else !(bK))
492+ else !(bN))
529493 then false
530494 else true
531- let cc = if (if (if ((P == bz))
532- then (bB != "")
495+ let cf = if (if (if ((T == bC))
496+ then (bE != "")
533497 else false)
534- then (bA != "")
498+ then (bD != "")
535499 else false)
536- then addressFromStringValue(bB)
537- else aT.caller
538- let cd = if (!(isDefined(aY)))
500+ then addressFromStringValue(bE)
501+ else aX.caller
502+ let cg = if (!(isDefined(bc)))
539503 then "WAVES"
540- else toBase58String(value(aY))
541- let bp = b((bo + "_OPEN"))
542- let ce = DeleteEntry((bo + "_OPEN"))
543- let cf = StringEntry((bo + "_CLOSED"), ((bp + "_") + toString(bE)))
544- let cg = ((((((("art_sold_" + toString(bX)) + "_of_") + toString(bM)) + "_") + R) + "_") + bz)
545- let ch = if (!(bF))
546- then ((((((((((P + "_") + toString(bE)) + "_") + bD) + "_") + toString(be)) + "_") + bd) + "_") + toBase58String(ca))
547- else ((((((((((toString(cc) + "_") + toString(bE)) + "_") + bD) + "_") + toString(aV)) + "_") + cd) + "_") + toBase58String(ca))
548- let ci = StringEntry(cg, ch)
549- let cj = if ((bU != 0))
550- then [ScriptTransfer(Address(fromBase58String(g)), (bT - bU), aY), ScriptTransfer(Address(fromBase58String(bO)), bU, aY)]
551- else [ScriptTransfer(Address(fromBase58String(g)), bT, aY)]
552- let ck = if ((bV != 0))
553- then [ScriptTransfer(Address(fromBase58String(bQ)), bV, aY), ScriptTransfer(Address(fromBase58String(bz)), (bW - bV), aY)]
554- else [ScriptTransfer(Address(fromBase58String(bz)), bW, aY)]
555- let cl = if (bv)
556- then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
504+ else toBase58String(value(bc))
505+ let br = b((bq + "_OPEN"))
506+ let ch = DeleteEntry((bq + "_OPEN"))
507+ let ci = StringEntry((bq + "_CLOSED"), ((br + "_") + toString(bH)))
508+ let cj = ((((((("art_sold_" + toString(ca)) + "_of_") + toString(bP)) + "_") + V) + "_") + bC)
509+ let ck = if (!(bI))
510+ then ((((((((((T + "_") + toString(bH)) + "_") + bG) + "_") + toString(bj)) + "_") + bi) + "_") + toBase58String(cd))
511+ else ((((((((((toString(cf) + "_") + toString(bH)) + "_") + bG) + "_") + toString(aZ)) + "_") + cg) + "_") + toBase58String(cd))
512+ let cl = StringEntry(cj, ck)
513+ let cm = if ((bX != 0))
514+ then [ScriptTransfer(Address(fromBase58String(g)), (bW - bX), bc), ScriptTransfer(Address(fromBase58String(bR)), bX, bc)]
515+ else [ScriptTransfer(Address(fromBase58String(g)), bW, bc)]
516+ let cn = if ((bY != 0))
517+ then [ScriptTransfer(Address(fromBase58String(bT)), bY, bc), ScriptTransfer(Address(fromBase58String(bC)), (bZ - bY), bc)]
518+ else [ScriptTransfer(Address(fromBase58String(bC)), bZ, bc)]
519+ let co = if (bx)
520+ then [ScriptTransfer(Address(fromBase58String(T)), 0, unit)]
557521 else nil
558- let cm = ((([IntegerEntry(Z(bz, R), bX), StringEntry(("nft_" + toBase58String(ca)), cg), IntegerEntry("total_nft_issued", (bI + 1)), IntegerEntry(aj(bz, R), 0), BooleanEntry(aa(bz, R), cb), bZ, ScriptTransfer(cc, 1, ca)] ++ cj) ++ ck) ++ cl)
559- if (bF)
560- then [ci, cf, ce] :: cm
561- else ci :: cm
522+ let cp = ((([IntegerEntry(ad(bC, V), ca), StringEntry(("nft_" + toBase58String(cd)), cj), IntegerEntry("total_nft_issued", (bL + 1)), IntegerEntry(an(bC, V), 0), BooleanEntry(ae(bC, V), ce), cc, ScriptTransfer(cf, 1, cd)] ++ cm) ++ cn) ++ co)
523+ if (bI)
524+ then [cl, ci, ch] :: cp
525+ else cl :: cp
562526 }
563527 }
564528 }
565529 }
566530 }
567531 }
568532 }
569533
570534
571-func cn (co) = {
572- let I = co
573- if ($isInstanceOf(I, "String"))
535+func cq (cr) = {
536+ let bf = cr
537+ if ($isInstanceOf(bf, "String"))
574538 then {
575- let cp = I
576- cp
539+ let cs = bf
540+ cs
577541 }
578542 else throw("Sponsored Public Key String expected")
579543 }
580544
581545
582-@Callable(cq)
583-func setConf (c,cr) = {
584- let P = toString(cq.caller)
585- if (containsElement([o, toString(this)], P))
546+@Callable(ct)
547+func setConf (c,cu) = {
548+ let T = toString(ct.caller)
549+ if (containsElement([y, toString(this)], T))
586550 then if (contains(c, "conf_"))
587- then [StringEntry(c, cr)]
551+ then [StringEntry(c, cu)]
588552 else throw("Entries starting with conf_ only")
589553 else throw("You are not allowed to change this")
590554 }
591555
592556
593557
594-@Callable(aT)
595-func addArtwork (H,F,aN,aO,aP,cs,ay,aC,az,aD,aA,ct,aQ,bu) = {
596- let cu = bt(aT, bu)
597- let R = cu._1
598- let P = cu._2
599- let bE = cu._3
600- let bv = cu._4
601- if (!(M(H)))
602- then throw("Hash should be 64 characters maximum")
558+@Callable(aX)
559+func addArtwork (aR,aS,aT,cv,aC,aG,aD,aH,aE,cw,aU,bw) = {
560+ let cx = bv(aX, bw)
561+ let V = cx._1
562+ let T = cx._2
563+ let bH = cx._3
564+ let bx = cx._4
565+ let cy = aN(aE, aH)
566+ let aP = cy._1
567+ let aQ = cy._2
568+ let cz = aO(T, aC, aD, aP, aG, aQ, aR, aS, aT, aU)
569+ if ((cz != ""))
570+ then throw("Something went wrong!")
603571 else {
604- let cv = aJ(aA, aD)
605- let aL = cv._1
606- let aM = cv._2
607- let cw = aK(P, ay, az, aL, aC, aM, aN, aO, aP, aQ)
608- if ((cw != ""))
609- then throw("Something went wrong!")
572+ let cA = (B((T + "_free_drops")) > 0)
573+ let cB = if (cA)
574+ then $Tuple2(0, r)
575+ else ba(aX)
576+ let aZ = cB._1
577+ let bc = cB._2
578+ if (!(isDefined(aZ)))
579+ then throw("Something went wrong")
610580 else {
611- let cx = (r((P + "_free_drops")) > 0)
612- let cy = if (cx)
613- then $Tuple2(0, F)
614- else aW(aT)
615- let aV = cy._1
616- let aY = cy._2
617- if (!(isDefined(aV)))
618- then throw("Something went wrong")
619- else {
620- let cz = b(aw(H, P))
621- if ((cz != ""))
622- then throw("You already added it")
623- else {
624- let cA = b(at(H))
625- if ((cA != ""))
626- then throw("Hash already registered")
627- else {
628- let cB = E(F, P, H)
629- if (!(cB))
630- then throw("Sign Certificate not found for this address.")
631- else {
632- let cC = if (cx)
633- then invoke(i, "useFreeDrop", [P], nil)
634- else unit
635- if ((cC == cC))
636- then {
637- let cl = if (bv)
638- then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
639- else nil
640- ([StringEntry(at(H), P), StringEntry(aw(H, P), R), IntegerEntry(Q(P, R), bE), StringEntry(S(P, R), aN), StringEntry(T(P, R), aO), StringEntry(U(P, R), ay), StringEntry(W(P, R), az), StringEntry(V(P, R), aC), StringEntry(ab(P, R), aM), StringEntry(ac(P, R), aL), StringEntry(ae(P, R), cs), StringEntry(ad(P, R), aP), IntegerEntry(X(P, R), 0), StringEntry(Y(P, R), F), IntegerEntry(Z(P, R), 0), BooleanEntry(aa(P, R), false), StringEntry(au(P, F), R), StringEntry(ar(P, R), H), StringEntry(ag(P, R), ct), IntegerEntry(ah(P, R), aQ), ScriptTransfer(Address(fromBase58String(g)), aV, j)] ++ cl)
641- }
642- else throw("Strict value is not equal to itself.")
643- }
644- }
645- }
581+ let cC = if (cA)
582+ then invoke(i, "useFreeDrop", [T], nil)
583+ else unit
584+ if ((cC == cC))
585+ then {
586+ let co = if (bx)
587+ then [ScriptTransfer(Address(fromBase58String(T)), 0, unit)]
588+ else nil
589+ ([IntegerEntry(U(T, V), bH), StringEntry(W(T, V), aR), StringEntry(X(T, V), aS), StringEntry(Y(T, V), aC), StringEntry(aa(T, V), aD), StringEntry(Z(T, V), aG), StringEntry(af(T, V), aQ), StringEntry(ag(T, V), aP), StringEntry(ai(T, V), cv), StringEntry(ah(T, V), aT), IntegerEntry(ab(T, V), 0), IntegerEntry(ad(T, V), 0), BooleanEntry(ae(T, V), false), StringEntry(ak(T, V), cw), IntegerEntry(al(T, V), aU), ScriptTransfer(Address(fromBase58String(g)), aZ, r)] ++ co)
646590 }
591+ else throw("Strict value is not equal to itself.")
647592 }
648593 }
649594 }
650595
651596
652597
653-@Callable(aT)
654-func updateArtwork (as,aN,aO,aP,cs,ay,aC,az,aD,aA,ct,aQ,bu) = if (!(w))
655- then throw(x)
598+@Callable(aX)
599+func updateArtwork (aw,aR,aS,aT,cv,aC,aG,aD,aH,aE,cw,aU,bw) = if (!(G))
600+ then throw(H)
656601 else {
657- let cD = bt(aT, bu)
658- let bD = cD._1
659- let P = cD._2
660- let bE = cD._3
661- let bv = cD._4
662- let cE = aJ(aA, aD)
663- let aL = cE._1
664- let aM = cE._2
665- let cw = aK(P, ay, az, aL, aC, aM, aN, aO, aP, aQ)
666- if ((cw != ""))
602+ let cD = bv(aX, bw)
603+ let bG = cD._1
604+ let T = cD._2
605+ let bH = cD._3
606+ let bx = cD._4
607+ let cE = aN(aE, aH)
608+ let aP = cE._1
609+ let aQ = cE._2
610+ let cz = aO(T, aC, aD, aP, aG, aQ, aR, aS, aT, aU)
611+ if ((cz != ""))
667612 then throw("Something went wrong!")
668613 else {
669- let cz = b(S(P, as))
670- if ((cz == ""))
614+ let cF = b(W(T, aw))
615+ if ((cF == ""))
671616 then throw("Entry not found")
672617 else {
673- let cF = b(al(P, as))
674- if ((cF == "ILLEGAL"))
618+ let cG = b(ap(T, aw))
619+ if ((cG == "ILLEGAL"))
675620 then throw("Cannot update ILLEGAL artwork")
676- else if (!(aZ(P, as)))
621+ else if (!(bd(T, aw)))
677622 then {
678- let cl = if (bv)
679- then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
623+ let co = if (bx)
624+ then [ScriptTransfer(Address(fromBase58String(T)), 0, unit)]
680625 else nil
681- ([StringEntry(S(P, as), aN), StringEntry(T(P, as), aO), StringEntry(U(P, as), ay), StringEntry(W(P, as), az), StringEntry(V(P, as), aC), StringEntry(ac(P, as), aL), StringEntry(ab(P, as), aM), StringEntry(ad(P, as), aP), StringEntry(ae(P, as), cs), StringEntry(ag(P, as), ct), IntegerEntry(ah(P, as), aQ)] ++ cl)
626+ ([StringEntry(W(T, aw), aR), StringEntry(X(T, aw), aS), StringEntry(Y(T, aw), aC), StringEntry(aa(T, aw), aD), StringEntry(Z(T, aw), aG), StringEntry(ag(T, aw), aP), StringEntry(af(T, aw), aQ), StringEntry(ah(T, aw), aT), StringEntry(ai(T, aw), cv), StringEntry(ak(T, aw), cw), IntegerEntry(al(T, aw), aU)] ++ co)
682627 }
683628 else throw("Already minted")
684629 }
685630 }
686631 }
687632
688633
689634
690-@Callable(aT)
691-func flagArtwork (R,cG,cF,cH) = {
692- let cI = bx(aT)
693- let bD = cI._1
694- let P = cI._2
695- if (containsElement([o, toString(this)], P))
696- then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cF))
697- then [StringEntry(al(cG, R), cF), StringEntry(af(cG, R), cH)]
698- else throw(("Unknow status " + cF))
635+@Callable(aX)
636+func flagArtwork (V,cH,cG,cI) = {
637+ let cJ = bz(aX)
638+ let bG = cJ._1
639+ let T = cJ._2
640+ if (containsElement([y, toString(this)], T))
641+ then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cG))
642+ then [StringEntry(ap(cH, V), cG), StringEntry(aj(cH, V), cI)]
643+ else throw(("Unknow status " + cG))
699644 else throw("You are not allowed")
700645 }
701646
702647
703648
704-@Callable(aT)
705-func deleteArtwork (R,cG) = {
706- let cJ = bx(aT)
707- let bD = cJ._1
708- let P = cJ._2
709- let ba = if (containsElement([o, toString(this)], P))
710- then cG
711- else P
712- let cz = valueOrErrorMessage(b(S(ba, R)), "No art matching for this address")
713- if ((cz == ""))
649+@Callable(aX)
650+func deleteArtwork (V,cH) = {
651+ let cK = bz(aX)
652+ let bG = cK._1
653+ let T = cK._2
654+ let be = if (containsElement([y, toString(this)], T))
655+ then cH
656+ else T
657+ let cF = valueOrErrorMessage(b(W(be, V)), "No art matching for this address")
658+ if ((cF == ""))
714659 then throw("No art matching for this address")
715660 else {
716- let H = b(ar(ba, R))
717- if ((H == ""))
718- then throw("No art hash matching for this address")
719- else {
720- let F = b(Y(ba, R))
721- if ((F == ""))
722- then throw("No SIGN ID matching")
723- else {
724- let cK = [DeleteEntry(Q(ba, R)), DeleteEntry(S(ba, R)), DeleteEntry(T(ba, R)), DeleteEntry(U(ba, R)), DeleteEntry(W(ba, R)), DeleteEntry(V(ba, R)), DeleteEntry(ab(ba, R)), DeleteEntry(ac(ba, R)), DeleteEntry(ae(ba, R)), DeleteEntry(ad(ba, R)), DeleteEntry(X(ba, R)), DeleteEntry(Y(ba, R)), DeleteEntry(Z(ba, R)), DeleteEntry(aa(ba, R)), DeleteEntry(al(ba, R)), DeleteEntry(ai(ba, R)), DeleteEntry(ak(ba, R)), DeleteEntry(at(H)), DeleteEntry(au(ba, F)), DeleteEntry(aw(H, ba)), DeleteEntry(aj(ba, R)), DeleteEntry(af(ba, R)), DeleteEntry(ag(ba, R)), DeleteEntry(ah(ba, R))]
725- if (!(aZ(ba, R)))
726- then if (!(w))
727- then throw(x)
728- else cK
729- else if (containsElement([o, toString(this)], P))
730- then cK
731- else throw("Art already minted, you cannot delete it")
732- }
733- }
661+ let ay = b(av(be, V))
662+ let cL = if ((ay == ""))
663+ then b(ac(be, V))
664+ else ""
665+ let cM = if ((cL == ""))
666+ then nil
667+ else [DeleteEntry(az(be, cL))]
668+ let cN = ([DeleteEntry(U(be, V)), DeleteEntry(W(be, V)), DeleteEntry(X(be, V)), DeleteEntry(Y(be, V)), DeleteEntry(aa(be, V)), DeleteEntry(Z(be, V)), DeleteEntry(af(be, V)), DeleteEntry(ag(be, V)), DeleteEntry(ai(be, V)), DeleteEntry(ah(be, V)), DeleteEntry(ab(be, V)), DeleteEntry(ac(be, V)), DeleteEntry(ad(be, V)), DeleteEntry(ae(be, V)), DeleteEntry(ap(be, V)), DeleteEntry(am(be, V)), DeleteEntry(ao(be, V)), DeleteEntry(ax(ay)), DeleteEntry(an(be, V)), DeleteEntry(aj(be, V)), DeleteEntry(ak(be, V)), DeleteEntry(al(be, V))] ++ cM)
669+ if (!(bd(be, V)))
670+ then if (!(G))
671+ then throw(H)
672+ else cN
673+ else if (containsElement([y, toString(this)], T))
674+ then cN
675+ else throw("Art already minted, you cannot delete it")
734676 }
735677 }
736678
737679
738680
739-@Callable(aT)
740-func sellArtwork (R,bi,cL,aY,bG,bu) = {
741- let cM = bt(aT, bu)
742- let bD = cM._1
743- let P = cM._2
744- let bE = cM._3
745- let bv = cM._4
746- let bJ = b(S(P, R))
747- if ((bJ == ""))
681+@Callable(aX)
682+func sellArtwork (V,bn,cO,bc,bJ,bw) = {
683+ let cP = bv(aX, bw)
684+ let bG = cP._1
685+ let T = cP._2
686+ let bH = cP._3
687+ let bx = cP._4
688+ let bM = b(W(T, V))
689+ if ((bM == ""))
748690 then throw("This art doesn't match your account")
749691 else {
750- let cF = b(al(P, R))
751- if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cF))
692+ let cG = b(ap(T, V))
693+ if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cG))
752694 then throw("Flagged artwork")
753695 else {
754- let cN = q(("current_bidamount_" + R))
755- if ((0 > bG))
696+ let cQ = A(("current_bidamount_" + V))
697+ if ((0 > bJ))
756698 then throw("Negative end")
757- else if (if ((bG > 0))
758- then if ((cL != 1))
699+ else if (if ((bJ > 0))
700+ then if ((cO != 1))
759701 then true
760- else (bi != 0)
702+ else (bn != 0)
761703 else false)
762704 then throw("Timed offer only allowed for unique edition and offer only")
763705 else {
764- let cO = if ((bG == 0))
706+ let cR = if ((bJ == 0))
765707 then 0
766708 else height
767- if (!(bg(aY)))
709+ if (!(bl(bc)))
768710 then throw("Something went wrong!")
769- else if (!(bh(aY, bi)))
711+ else if (!(bm(bn)))
770712 then throw("Something went wrong!")
771713 else {
772- let aR = aH(P)
773- if ((aR != ""))
774- then throw(aR)
714+ let aV = aL(T)
715+ if ((aV != ""))
716+ then throw(aV)
775717 else {
776- let bL = q(Z(P, R))
777- let bM = q(X(P, R))
778- if ((cL > 100))
718+ let bO = A(ad(T, V))
719+ let bP = A(ab(T, V))
720+ if ((cO > 100))
779721 then throw("100 editions max per artwork")
780- else if (if ((bL != 0))
781- then (bL == bM)
722+ else if (if ((bO != 0))
723+ then (bO == bP)
782724 else false)
783725 then throw("Max edition reached.")
784- else if (if ((bL > 0))
785- then (bM != cL)
726+ else if (if ((bO > 0))
727+ then (bP != cO)
786728 else false)
787729 then throw("Cannot change maximum issuable anymore")
788- else if (if ((cN > 0))
789- then (bM != cL)
730+ else if (if ((cQ > 0))
731+ then (bP != cO)
790732 else false)
791733 then throw("Cannot change maximum issuable with active orders")
792734 else {
793- let cb = if (if ((bi > 0))
794- then (cL > 0)
735+ let ce = if (if ((bn > 0))
736+ then (cO > 0)
795737 else false)
796738 then true
797739 else false
798- let cl = if (bv)
799- then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
740+ let co = if (bx)
741+ then [ScriptTransfer(Address(fromBase58String(T)), 0, unit)]
800742 else nil
801- ([BooleanEntry(aa(P, R), cb), IntegerEntry(ai(P, R), bi), IntegerEntry(X(P, R), cL), StringEntry(ak(P, R), aY), IntegerEntry(aj(P, R), (cO + bG))] ++ cl)
743+ ([BooleanEntry(ae(T, V), ce), IntegerEntry(am(T, V), bn), IntegerEntry(ab(T, V), cO), StringEntry(ao(T, V), bc), IntegerEntry(an(T, V), (cR + bJ))] ++ co)
802744 }
803745 }
804746 }
805747 }
806748 }
807749 }
808750 }
809751
810752
811753
812-@Callable(aT)
813-func buyArtwork (R,bz) = by(aT, R, bz, "", "", "")
754+@Callable(aX)
755+func buyArtwork (V,bC) = bB(aX, V, bC, "", "", "")
814756
815757
816758
817-@Callable(aT)
818-func setBid (R,bz) = {
819- let cP = bx(aT)
820- let bD = cP._1
821- let P = cP._2
822- let bE = cP._3
823- let cQ = aS(aT)
824- let aU = cQ._1
825- let aV = cQ._2
826- let aY = if (!(isDefined(aU.assetId)))
759+@Callable(aX)
760+func setBid (V,bC) = {
761+ let cS = bz(aX)
762+ let bG = cS._1
763+ let T = cS._2
764+ let bH = cS._3
765+ let cT = aW(aX)
766+ let aY = cT._1
767+ let aZ = cT._2
768+ let bc = if (!(isDefined(aY.assetId)))
827769 then "WAVES"
828- else toBase58String(value(aU.assetId))
829- let bG = q(aj(bz, R))
830- if (if ((bG != 0))
831- then (height >= bG)
770+ else toBase58String(value(aY.assetId))
771+ let bJ = A(an(bC, V))
772+ if (if ((bJ != 0))
773+ then (height >= bJ)
832774 else false)
833775 then throw("Sale ended.")
834776 else {
835- let cN = q(("current_bidamount_" + R))
836- if (!(bg(aY)))
777+ let cQ = A(("current_bidamount_" + V))
778+ if (!(bl(bc)))
837779 then throw("asset not accepted")
838- else if (!(bh(aY, aV)))
780+ else if (!(bm(aZ)))
839781 then throw("Wrong min sell")
840782 else {
841- let bL = q(Z(bz, R))
842- let bM = q(X(bz, R))
843- if ((0 >= bM))
783+ let bO = A(ad(bC, V))
784+ let bP = A(ab(bC, V))
785+ if ((0 >= bP))
844786 then throw("No max edition set for this artwork")
845- else if ((bL >= bM))
787+ else if ((bO >= bP))
846788 then throw("Sold out, you cannot bid")
847- else [StringEntry((((((((("bid_" + R) + "_") + bz) + "_") + P) + "_") + bD) + "_OPEN"), ((((aY + "_") + toString(aV)) + "_") + toString(bE))), IntegerEntry(("current_bidamount_" + R), (cN + 1))]
789+ else [StringEntry((((((((("bid_" + V) + "_") + bC) + "_") + T) + "_") + bG) + "_OPEN"), ((((bc + "_") + toString(aZ)) + "_") + toString(bH))), IntegerEntry(("current_bidamount_" + V), (cQ + 1))]
848790 }
849791 }
850792 }
851793
852794
853795
854-@Callable(aT)
855-func acceptBid (R,bz,bA,bB,bu) = by(aT, R, bz, bA, bB, bu)
796+@Callable(aX)
797+func acceptBid (V,bC,bD,bE,bw) = bB(aX, V, bC, bD, bE, bw)
856798
857799
858800
859-@Callable(aT)
860-func cancelBid (R,bz,bA,bB) = {
861- let cR = bx(aT)
862- let bD = cR._1
863- let P = cR._2
864- let bE = cR._3
865- if (if ((P != bB))
866- then (P != bz)
801+@Callable(aX)
802+func cancelBid (V,bC,bD,bE) = {
803+ let cU = bz(aX)
804+ let bG = cU._1
805+ let T = cU._2
806+ let bH = cU._3
807+ if (if ((T != bE))
808+ then (T != bC)
867809 else false)
868810 then throw("You cannot do this action")
869811 else {
870- let cS = if ((P == bz))
871- then bB
872- else P
873- let cN = q(("current_bidamount_" + R))
874- let bo = ((((((("bid_" + R) + "_") + bz) + "_") + bB) + "_") + bA)
875- let bp = b((bo + "_OPEN"))
876- if ((bp == ""))
812+ let cV = if ((T == bC))
813+ then bE
814+ else T
815+ let cQ = A(("current_bidamount_" + V))
816+ let bq = ((((((("bid_" + V) + "_") + bC) + "_") + bE) + "_") + bD)
817+ let br = b((bq + "_OPEN"))
818+ if ((br == ""))
877819 then throw("Bid not found")
878820 else {
879- let bq = split(bp, "_")
880- let aY = bm(bq[0])
881- let cT = "CANCELED"
882-[DeleteEntry((bo + "_OPEN")), StringEntry(((bo + "_") + cT), ((bp + "_") + toString(bE))), IntegerEntry(("current_bidamount_" + R), (cN - 1)), ScriptTransfer(Address(fromBase58String(cS)), parseIntValue(bq[1]), aY)]
821+ let bs = split(br, "_")
822+ let bc = bo(bs[0])
823+ let cW = "CANCELED"
824+[DeleteEntry((bq + "_OPEN")), StringEntry(((bq + "_") + cW), ((br + "_") + toString(bH))), IntegerEntry(("current_bidamount_" + V), (cQ - 1)), ScriptTransfer(Address(fromBase58String(cV)), parseIntValue(bs[1]), bc)]
883825 }
884826 }
885827 }
886828
887829
888-@Verifier(cU)
889-func cV () = {
890- let I = cU
891- if ($isInstanceOf(I, "InvokeScriptTransaction"))
830+@Verifier(cX)
831+func cY () = {
832+ let bf = cX
833+ if ($isInstanceOf(bf, "InvokeScriptTransaction"))
892834 then {
893- let cW = I
894- if (if (if (if ((cW.function == "addArtwork"))
895- then (cW.dApp == this)
835+ let cZ = bf
836+ if (if (if (if ((cZ.function == "addArtwork"))
837+ then (cZ.dApp == this)
896838 else false)
897- then (cW.fee == 500000)
839+ then (cZ.fee == 500000)
898840 else false)
899- then (cW.feeAssetId == unit)
841+ then (cZ.feeAssetId == unit)
900842 else false)
901- then sigVerify(cU.bodyBytes, cU.proofs[0], fromBase58String(cn(cW.args[13])))
902- else if (if (if (if ((cW.function == "updateArtwork"))
903- then (cW.dApp == this)
843+ then sigVerify(cX.bodyBytes, cX.proofs[0], fromBase58String(cq(cZ.args[11])))
844+ else if (if (if (if ((cZ.function == "updateArtwork"))
845+ then (cZ.dApp == this)
904846 else false)
905- then (cW.fee == 500000)
847+ then (cZ.fee == 500000)
906848 else false)
907- then (cW.feeAssetId == unit)
849+ then (cZ.feeAssetId == unit)
908850 else false)
909- then sigVerify(cU.bodyBytes, cU.proofs[0], fromBase58String(cn(cW.args[12])))
910- else if (if (if (if ((cW.function == "sellArtwork"))
911- then (cW.dApp == this)
851+ then sigVerify(cX.bodyBytes, cX.proofs[0], fromBase58String(cq(cZ.args[12])))
852+ else if (if (if (if ((cZ.function == "sellArtwork"))
853+ then (cZ.dApp == this)
912854 else false)
913- then (cW.fee == 500000)
855+ then (cZ.fee == 500000)
914856 else false)
915- then (cW.feeAssetId == unit)
857+ then (cZ.feeAssetId == unit)
916858 else false)
917- then sigVerify(cU.bodyBytes, cU.proofs[0], fromBase58String(cn(cW.args[5])))
918- else if (if (if (if ((cW.function == "acceptBid"))
919- then (cW.dApp == this)
859+ then sigVerify(cX.bodyBytes, cX.proofs[0], fromBase58String(cq(cZ.args[5])))
860+ else if (if (if (if ((cZ.function == "acceptBid"))
861+ then (cZ.dApp == this)
920862 else false)
921- then (cW.fee == 500000)
863+ then (cZ.fee == 500000)
922864 else false)
923- then (cW.feeAssetId == unit)
865+ then (cZ.feeAssetId == unit)
924866 else false)
925- then sigVerify_128Kb(cU.bodyBytes, cU.proofs[0], fromBase58String(cn(cW.args[4])))
926- else sigVerify(cU.bodyBytes, cU.proofs[0], cU.senderPublicKey)
867+ then sigVerify_128Kb(cX.bodyBytes, cX.proofs[0], fromBase58String(cq(cZ.args[4])))
868+ else sigVerify(cX.bodyBytes, cX.proofs[0], cX.senderPublicKey)
927869 }
928- else sigVerify(cU.bodyBytes, cU.proofs[0], cU.senderPublicKey)
870+ else sigVerify(cX.bodyBytes, cX.proofs[0], cX.senderPublicKey)
929871 }
930872

github/deemru/w8io/169f3d6 
313.13 ms