tx · Ew1uyDPcef26jEhYioKmUHAAMEo6kg3itiESQYXKjcFo

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.02600000 Waves

2023.10.12 08:03 [2794939] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "Ew1uyDPcef26jEhYioKmUHAAMEo6kg3itiESQYXKjcFo", "fee": 2600000, "feeAssetId": null, "timestamp": 1697087065668, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "64PQqJ3WzgVueyiJ7eM1no2SCDJwSDw6RwQVov9WTjKhaZFQVAQidqsnC9d6ZPgfXUioqe1KqP3zqE3m4Km91uMt" ], "script": "base64:BgJeCAISBAoCCAgSDgoMCAgICAgICAgICAEIEg8KDQgICAgICAgICAgIAQgSBgoECAgICBIECgIICBIICgYIAQEIAQgSBAoCCAgSBAoCCAgSBwoFCAgICAgSBgoECAgICFwAB1ZFUlNJT04CBTIuMC4wAQ5nZXRTdHJpbmdCeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFA2tleQIAAAh1bml0VGVzdAcACW9yYWNsZUZlZQkBBXZhbHVlAQkApggBCQEOZ2V0U3RyaW5nQnlLZXkBAg9jb25mX29yYWNsZV9mZWUACHNpZ25EYXBwCQEFdmFsdWUBCQCmCAEJAQ5nZXRTdHJpbmdCeUtleQECEWNvbmZfc2lnbndlYl9kYXBwAAtmZWVSZWNlaXZlcgkBDmdldFN0cmluZ0J5S2V5AQIRY29uZl9mZWVfcmVjZWl2ZXIACHVzZXJEYXBwAwUIdW5pdFRlc3QJAQV2YWx1ZQEJAKYIAQIjM010NFJHTUV5alNXWUFvY1RQcWQ1NXdkSFFRQjNQVTJVQ20JAQV2YWx1ZQEJAKYIAQkBDmdldFN0cmluZ0J5S2V5AQIPY29uZl91c2Vyc19kYXBwAA13aGl0ZWxpc3REYXBwCQEFdmFsdWUBCQCmCAEJAQ5nZXRTdHJpbmdCeUtleQECE2NvbmZfd2hpdGVsaXN0X2RhcHAAD3B1enpsZV9hcnRfcG9vbAkBDmdldFN0cmluZ0J5S2V5AQIUY29uZl9wdXp6bGVfYXJ0X3Bvb2wACnJlcG9ydERhcHAJAQV2YWx1ZQEJAKYIAQkBDmdldFN0cmluZ0J5S2V5AQIQY29uZl9yZXBvcnRfZGFwcAARdXNkdFBQQXNzZXRJZF9zdHIJAQ5nZXRTdHJpbmdCeUtleQECG2NvbmZfYWNjZXB0ZWRfYXNzZXRfVVNEVF9QUAAOYXJ0QXNzZXRJZF9zdHIJAQ5nZXRTdHJpbmdCeUtleQECF2NvbmZfYWNjZXB0ZWRfYXNzZXRfQVJUABF1c2RjUFBBc3NldElkX3N0cgkBDmdldFN0cmluZ0J5S2V5AQIbY29uZl9hY2NlcHRlZF9hc3NldF9VU0RDX1BQAA9lYXN0QXNzZXRJZF9zdHIJAQ5nZXRTdHJpbmdCeUtleQECGGNvbmZfYWNjZXB0ZWRfYXNzZXRfRUFTVAARcHV6emxlQXNzZXRJZF9zdHIJAQ5nZXRTdHJpbmdCeUtleQECGmNvbmZfYWNjZXB0ZWRfYXNzZXRfUFVaWkxFABBldGhQUEFzc2V0SWRfc3RyCQEOZ2V0U3RyaW5nQnlLZXkBAhpjb25mX2FjY2VwdGVkX2Fzc2V0X0VUSF9QUAAQd2F2ZXNBc3NldElkX3N0cgIFV0FWRVMADXVzZHRQUEFzc2V0SWQJANkEAQURdXNkdFBQQXNzZXRJZF9zdHIACmFydEFzc2V0SWQJANkEAQUOYXJ0QXNzZXRJZF9zdHIADXVzZGNQUEFzc2V0SWQJANkEAQURdXNkY1BQQXNzZXRJZF9zdHIAC2Vhc3RBc3NldElkCQDZBAEFD2Vhc3RBc3NldElkX3N0cgANcHV6emxlQXNzZXRJZAkA2QQBBRFwdXp6bGVBc3NldElkX3N0cgAMZXRoUFBBc3NldElkCQDZBAEFEGV0aFBQQXNzZXRJZF9zdHIADHdhdmVzQXNzZXRJZAEAABNhbGxfYWNjZXB0ZWRfYXNzZXRzCQDMCAIFEXVzZHRQUEFzc2V0SWRfc3RyCQDMCAIFDmFydEFzc2V0SWRfc3RyCQDMCAIFEXVzZGNQUEFzc2V0SWRfc3RyCQDMCAIFD2Vhc3RBc3NldElkX3N0cgkAzAgCBRFwdXp6bGVBc3NldElkX3N0cgkAzAgCBRB3YXZlc0Fzc2V0SWRfc3RyCQDMCAIFEGV0aFBQQXNzZXRJZF9zdHIFA25pbAAFY2hyaXMJAQ5nZXRTdHJpbmdCeUtleQECDGNvbmZfYWRtaW5fMQEZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUJb3JhY2xlRmVlBQNrZXkCH0ludGVnZXIgdW5kZWZpbmUgb3IgMCBpbiBvcmFjbGUBD2dldEludGVnZXJCeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAAQ5jaGVja1doaXRlbGlzdAEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFDXdoaXRlbGlzdERhcHAFA2tleQAAAQ9nZXRCb29sZWFuQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQNrZXkHAA5jb21taXNzaW9uX2ZlZQAIAA5kZWZhdWx0TGljZW5jZQkBDmdldFN0cmluZ0J5S2V5AQIUY29uZl9kZWZhdWx0X2xpY2VuY2UAEmRlZmF1bHRIYXNoTGljZW5jZQkBDmdldFN0cmluZ0J5S2V5AQIZY29uZl9kZWZhdWx0X2xpY2VuY2VfaGFzaAALZGFwcFJ1bm5pbmcJAQt2YWx1ZU9yRWxzZQIJAJsIAgUIdXNlckRhcHACFGNvbmZfZGFwcF9pc19ydW5uaW5nBgAObWFpbnRlbmFuY2VNU0cJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHACFGNvbmZfbWFpbnRlbmFuY2VfbXNnAgAADXVzZXJTdXNwZW5kZWQCCVNVU1BFTkRFRAALdXNlclJlbW92ZWQCB1JFTU9WRUQAEHVzZXJVbnJlZ2lzdGVyZWQCDFVOUkVHSVNURVJFRAALdXNlckFsbG93ZWQCB0FMTE9XRUQAGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UJARlnZXRJbnRlZ2VyQnlLZXlGcm9tT3JhY2xlAQkArAICAhJjZXJ0aWZpY2F0aW9uX2ZlZV8JANgEAQUKYXJ0QXNzZXRJZAAIbWludF9mZWUJARlnZXRJbnRlZ2VyQnlLZXlGcm9tT3JhY2xlAQkArAICAgltaW50X2ZlZV8JANgEAQUKYXJ0QXNzZXRJZAETZ2V0QXJ0d29ya1JveWFsdGllcwEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQDoBwELdmFsaWRhdGVDSUQBA2NpZAMJAQhjb250YWlucwIFA2NpZAIBLwMDCQBmAgBMCQCxAgEFA2NpZAkAAAIJALECAQkAkQMCCQC1CQIFA2NpZAIBLwAAADsHCQBmAgAQCQCxAgEJAJEDAgkAtQkCBQNjaWQCAS8AAQcHAQx2YWxpZGF0ZUhhc2gBBGhhc2gJAAACCQCxAgEFBGhhc2gAQAENa2V5VXNlclN0YXR1cwEGY2FsbGVyCQCsAgICDHVzZXJfc3RhdHVzXwUGY2FsbGVyAQdrZXlEYXRlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF9kYXRlXwUFYXJ0SWQCAV8FBmNhbGxlcgEHa2V5TmFtZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfbmFtZV8FBWFydElkAgFfBQZjYWxsZXIBB2tleURlc2MCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X2Rlc2NfBQVhcnRJZAIBXwUGY2FsbGVyAQ1rZXlEaXNwbGF5Q2lkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEGFydF9kaXNwbGF5X2NpZF8FBWFydElkAgFfBQZjYWxsZXIBDWtleUV4cG9ydEhhc2gCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIQYXJ0X2V4cG9ydF9oYXNoXwUFYXJ0SWQCAV8FBmNhbGxlcgEMa2V5RXhwb3J0Q2lkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICD2FydF9leHBvcnRfY2lkXwUFYXJ0SWQCAV8FBmNhbGxlcgEKa2V5TWF4TWludAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgxhcnRfbWF4bWludF8FBWFydElkAgFfBQZjYWxsZXIBCWtleVNpZ25JRAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgthcnRfc2lnbmlkXwUFYXJ0SWQCAV8FBmNhbGxlcgEJa2V5SXNzdWVkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICC2FydF9pc3N1ZWRfBQVhcnRJZAIBXwUGY2FsbGVyAQlrZXlPblNhbGUCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgILYXJ0X29uc2FsZV8FBWFydElkAgFfBQZjYWxsZXIBDmtleUxpY2VuY2VIYXNoAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEWFydF9saWNlbmNlX2hhc2hfBQVhcnRJZAIBXwUGY2FsbGVyAQ1rZXlMaWNlbmNlQ2lkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEGFydF9saWNlbmNlX2NpZF8FBWFydElkAgFfBQZjYWxsZXIBB2tleVRhZ3MCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X3RhZ3NfBQVhcnRJZAIBXwUGY2FsbGVyAQdrZXlUeXBlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF90eXBlXwUFYXJ0SWQCAV8FBmNhbGxlcgEHa2V5Tm90ZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfbm90ZV8FBWFydElkAgFfBQZjYWxsZXIBCmtleUNyYXdsZXICBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIQYXJ0X2NyYXdsZXJfY2lkXwUFYXJ0SWQCAV8FBmNhbGxlcgEMa2V5Um95YWx0aWVzAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICDmFydF9yb3lhbHRpZXNfBQVhcnRJZAIBXwUGY2FsbGVyAQhrZXlQcmljZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgphcnRfcHJpY2VfBQVhcnRJZAIBXwUGY2FsbGVyAQprZXlFbmRTYWxlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICDGFydF9lbmRzYWxlXwUFYXJ0SWQCAV8FBmNhbGxlcgESa2V5QXNzZXRJZEFjY2VwdGVkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEmFydF9hc3NldEFjY2VwdGVkXwUFYXJ0SWQCAV8FBmNhbGxlcgEHa2V5RmxhZwIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfZmxhZ18FBWFydElkAgFfBQZjYWxsZXIBEmtleUFydGlzdEFnZW50QWRkcgEKYXJ0aXN0QWRkcgkArAICAg1hcnRpc3RfYWdlbnRfBQphcnRpc3RBZGRyARRrZXlQcmltYXJ5U2hhcmVBZ2VudAEKYXJ0aXN0QWRkcgkArAICAhVhcnRpc3RfYWdlbnRfcHJpbWFyeV8FCmFydGlzdEFkZHIBGGtleUFydGlzdFB1YmxpY0FnZW50QWRkcgEKYXJ0aXN0QWRkcgkArAICAhRhcnRpc3RfcHVibGljX2FnZW50XwUKYXJ0aXN0QWRkcgEaa2V5UHJpbWFyeVNoYXJlUHVibGljQWdlbnQBCmFydGlzdEFkZHIJAKwCAgIcYXJ0aXN0X3B1YmxpY19hZ2VudF9wcmltYXJ5XwUKYXJ0aXN0QWRkcgERa2V5SGFzaEJ5VHhpZEFkZHICBmNhbGxlcgR0eGlkCQCsAgIJAKwCAgkArAICAhNnZXRfaGFzaGJ5dHhpZGFkZHJfBQR0eGlkAgFfBQZjYWxsZXIBDmtleU93bmVyQnlIYXNoAQpzaGEyNTZIYXNoCQCsAgICEmdldF9vd25lcl9ieV9oYXNoXwUKc2hhMjU2SGFzaAENa2V5aWRCeVNpZ25pZAIGY2FsbGVyBnNpZ25JZAkArAICCQCsAgIJAKwCAgISZ2V0X2FydGlkYnlzaWduaWRfBQZzaWduSWQCAV8FBmNhbGxlcgEOdmFsaWRhdGVBbGxDSUQDCmNpZERpc3BsYXkJY2lkRXhwb3J0CmNpZExpY2VuY2UDCQEBIQEJAQt2YWxpZGF0ZUNJRAEFCmNpZERpc3BsYXkJAAIBAhFXcm9uZyBEaXNwbGF5IENJRAMJAQEhAQkBC3ZhbGlkYXRlQ0lEAQUJY2lkRXhwb3J0CQACAQIQV3JvbmcgRXhwb3J0IENJRAMDCQECIT0CBQpjaWRMaWNlbmNlAgAJAQEhAQkBC3ZhbGlkYXRlQ0lEAQUKY2lkTGljZW5jZQcJAAIBAhFXcm9uZyBMaWNlbmNlIENJRAYBD3ZhbGlkYXRlQWxsSGFzaAIMc2hhMjU2RXhwb3J0DXNoYTI1NkxpY2VuY2UDCQEBIQEJAQx2YWxpZGF0ZUhhc2gBBQxzaGEyNTZFeHBvcnQJAAIBAhhFeHBvcnQgSGFzaCA2NCBjaGFyLiBtYXgDCQEBIQEJAQx2YWxpZGF0ZUhhc2gBBQ1zaGEyNTZMaWNlbmNlCQACAQIZTGljZW5jZSBIYXNoIDY0IGNoYXIuIG1heAYBDnZhbGlkYXRlU3RyaW5nAgNzdHIDbWF4AwkAAAIJALECAQUDc3RyAAAJAAIBAhhGaWVsZCBjYW5ub3QgYmUgaXMgZW1wdHkDCQBmAgkAsQIBBQNzdHIFA21heAkAAgEJAKwCAgUDc3RyAgwgaXMgdG9vIGxvbmcGAQx2YWxpZGF0ZVVzZXIBBmNhbGxlcgQKdXNlclN0YXR1cwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQh1c2VyRGFwcAkBDWtleVVzZXJTdGF0dXMBBQZjYWxsZXIFEHVzZXJVbnJlZ2lzdGVyZWQDAwkAAAIFCnVzZXJTdGF0dXMFEHVzZXJVbnJlZ2lzdGVyZWQGCQAAAgUKdXNlclN0YXR1cwULdXNlckFsbG93ZWQCLlJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICJBY2NvdW50IiB0YWIDCQAAAgUKdXNlclN0YXR1cwUNdXNlclN1c3BlbmRlZAIRQWNjb3VudCBzdXNwZW5kZWQDCQAAAgUKdXNlclN0YXR1cwULdXNlclJlbW92ZWQCD0FjY291bnQgcmVtb3ZlZAIAAQpzZXRMSWNlbmNlAgpjaWRMaWNlbmNlDXNoYTI1NkxpY2VuY2UEA2NpZAMJAAACCQCxAgEFCmNpZExpY2VuY2UAAAUOZGVmYXVsdExpY2VuY2UFCmNpZExpY2VuY2UEBGhhc2gDCQAAAgkAsQIBBQ1zaGEyNTZMaWNlbmNlAAAFEmRlZmF1bHRIYXNoTGljZW5jZQUNc2hhMjU2TGljZW5jZQkAlAoCBQNjaWQFBGhhc2gBE3ZhbGlkYXRlQXJ0d29ya0RhdGEKBmNhbGxlcgpjaWREaXNwbGF5CWNpZEV4cG9ydApsaWNlbmNlQ0lEDHNoYTI1NkV4cG9ydAtsaWNlbmNlSGFzaARuYW1lC2Rlc2NyaXB0aW9uBHRhZ3MJcm95YWx0aWVzBAljaGVja1VzZXIJAQx2YWxpZGF0ZVVzZXIBBQZjYWxsZXIDCQECIT0CBQljaGVja1VzZXICAAkAAgEFCWNoZWNrVXNlcgMJAAACCQCxAgEFCmNpZERpc3BsYXkAAAkAAgECG0Rpc3BsYXkgQ0lEIGNhbm5vdCBiZSBlbXB0eQMJAQEhAQkBDnZhbGlkYXRlQWxsQ0lEAwUKY2lkRGlzcGxheQUJY2lkRXhwb3J0BQpsaWNlbmNlQ0lECQACAQIQUHJvYmxlbSB3aXRoIENJRAMJAQEhAQkBD3ZhbGlkYXRlQWxsSGFzaAIFDHNoYTI1NkV4cG9ydAULbGljZW5jZUhhc2gJAAIBAhNQcm9ibGVtIHdpdGggSGFzaGVzAwkBASEBCQEOdmFsaWRhdGVTdHJpbmcCBQRuYW1lAGQJAAIBAhIxMDAgQ2hhci4gbWF4IG5hbWUDCQEBIQEJAQ52YWxpZGF0ZVN0cmluZwIFC2Rlc2NyaXB0aW9uAOgHCQACAQIaMTAwMCBDaGFyLiBtYXggZGVzY3JpcHRpb24DAwkAZgIAAAUJcm95YWx0aWVzBgkAZgIFCXJveWFsdGllcwDoBwkAAgECM1JveWFsdGllcyBjYW5ub3QgYmUgbGVzcyB0aGFuIDAlIG9yIGhpZ2hlciB0aGFuIDEwJQMJAGYCCQCQAwEJALUJAgUEdGFncwIBLAAFCQACAQILNSB0YWdzIG1heC4CAAEJaXNQYXltZW50AQFpAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECE05vIHBheW1lbnQgYXR0YWNoZWQEB3BheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQGYW1vdW50CQEFdmFsdWUBCAUHcGF5bWVudAZhbW91bnQJAJQKAgUHcGF5bWVudAUGYW1vdW50AQ92YWxpZGF0ZVBheW1lbnQBAWkEDSR0MDEwMjM0MTAyNzAJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAUNJHQwMTAyMzQxMDI3MAJfMQQGYW1vdW50CAUNJHQwMTAyMzQxMDI3MAJfMgQHYXNzZXRJZAMDCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAkAAAIIBQdwYXltZW50B2Fzc2V0SWQFCmFydEFzc2V0SWQHCAUHcGF5bWVudAdhc3NldElkCQACAQIrT25seSBTSUdOIHRva2VuIGFjY2VwdGVkIGFzIHRyYW5zYWN0aW9uIGZlZQMJAQIhPQIFBmFtb3VudAkAaAIFGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UAAgkAAgEJAKwCAgIZUGF5bWVudCBhbW91bnQgc2hvdWxkIGJlIAkApAMBCQBoAgUZY3VycmVudENlcnRpZmljYXRpb25QcmljZQACCQCUCgIFBmFtb3VudAUHYXNzZXRJZAELaXNBcnRNaW50ZWQCCWFkZHJUb1VzZQVhcnRJZAQHJG1hdGNoMAkAmggCBQR0aGlzCQEJa2V5SXNzdWVkAgUJYWRkclRvVXNlBQVhcnRJZAMJAAECBQckbWF0Y2gwAgNJbnQEAWIFByRtYXRjaDADCQECIT0CBQFiAAAGBwcBFHZhbGlkYXRlUHJpY2VBc3NldElkAwFpDHByaWNlQXNzZXRJZAxhcnR3b3JrUHJpY2UEDSR0MDEwODY3MTA5MDMJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAUNJHQwMTA4NjcxMDkwMwJfMQQGYW1vdW50CAUNJHQwMTA4NjcxMDkwMwJfMgQHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQFBHVuaXQDAwkAZgIJALECAQUMcHJpY2VBc3NldElkAAAJAAACCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQFDHByaWNlQXNzZXRJZAcIBQdwYXltZW50B2Fzc2V0SWQJAAIBAg5Xcm9uZyBhc3NldCBpZAMDCQAAAgUHYXNzZXRJZAUEdW5pdAkBAiE9AgUMcHJpY2VBc3NldElkAgAHCQACAQIOV3JvbmcgYXNzZXQgaWQDCQECIT0CBQxhcnR3b3JrUHJpY2UFBmFtb3VudAkAAgECE1BheW1lbnQgZG9uJ3QgbWF0Y2gJAJQKAgUGYW1vdW50BQdhc3NldElkARBhY2NlcHRlZEFzc2V0SWRzAQdhc3NldElkAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgUTYWxsX2FjY2VwdGVkX2Fzc2V0cwUHYXNzZXRJZAkAAgECQE9ubHkgJEFSVCwgVVNEVC1QUCwgVVNEQy1QUCwgRUFTVCwgUFVaWkxFLCBFVEggb3IgV0FWRVMgYWNjZXB0ZWQGAQ92YWxpZGF0ZU1pblNlbGwBBXByaWNlAwkAZwIAAAUFcHJpY2UJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UGAQ1nZXRCaWRBc3NldElkAQdhc3NldElkAwkAAAIFB2Fzc2V0SWQCBVdBVkVTBQR1bml0CQDZBAEFB2Fzc2V0SWQBFmdldFByaWNlQXNzZXRJZEZyb21CaWQBCmJpZERhdGFLZXkEB2JpZERhdGEJAQ5nZXRTdHJpbmdCeUtleQEJAKwCAgUKYmlkRGF0YUtleQIFX09QRU4DCQAAAgUHYmlkRGF0YQIACQACAQINQmlkIG5vdCBmb3VuZAQKYmlkRGF0YUFycgkAtQkCBQdiaWREYXRhAgFfBAliaWRBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpiaWREYXRhQXJyAAEECmJpZEFzc2V0SWQJAQ1nZXRCaWRBc3NldElkAQkAkQMCBQpiaWREYXRhQXJyAAADCQBnAgAABQliaWRBbW91bnQJAAIBAgxXcm9uZyBhbW91bnQJAJQKAgUJYmlkQW1vdW50BQpiaWRBc3NldElkARVpZENhbGxlckRhdGVTcG9uc29yZWQCAWkGcHViS2V5AwkBASEBBQtkYXBwUnVubmluZwkAAgEFDm1haW50ZW5hbmNlTVNHBAtpc1Nwb25zb3JlZAMJAQIhPQIFBnB1YktleQIACQELdmFsdWVPckVsc2UCCQEOY2hlY2tXaGl0ZWxpc3QBCQCsAgIJAKUIAQkApwgBCQDZBAEFBnB1YktleQIJX2ZyZWVfdHhzAAAAAAQGY2FsbGVyAwMJAAACCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAKUIAQUEdGhpcwkAZgIFC2lzU3BvbnNvcmVkAAAHCQClCAEJAKcIAQkA2QQBBQZwdWJLZXkJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQTZ2V0X3Nwb25zb3JlZF93YXZlcwMDCQECIT0CBQZwdWJLZXkCAAkAZgIFC2lzU3BvbnNvcmVkAAAHCQD8BwQFDXdoaXRlbGlzdERhcHACCXVzZUZyZWVUeAkAzAgCCQClCAEJAKcIAQkA2QQBBQZwdWJLZXkFA25pbAUDbmlsBQR1bml0AwkAAAIFE2dldF9zcG9uc29yZWRfd2F2ZXMFE2dldF9zcG9uc29yZWRfd2F2ZXMJAJYKBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBQZjYWxsZXIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQBmAgULaXNTcG9uc29yZWQAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEMaWRDYWxsZXJEYXRlAQFpAwkBASEBBQtkYXBwUnVubmluZwkAAgEFDm1haW50ZW5hbmNlTVNHCQCVCgMJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAEKZ2V0QmFsYW5jZQEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDwBwIFBHRoaXMFAWIICQDvBwEFBHRoaXMJYXZhaWxhYmxlAQdidXlNaW50BgFpBWFydElkBmlzc3VlcgViaWRJZAhiaWRPd25lcgZwdWJLZXkEDSR0MDEzNTA4MTM1OTcJARVpZENhbGxlckRhdGVTcG9uc29yZWQCBQFpBQZwdWJLZXkEAmlkCAUNJHQwMTM1MDgxMzU5NwJfMQQGY2FsbGVyCAUNJHQwMTM1MDgxMzU5NwJfMgQEZGF0ZQgFDSR0MDEzNTA4MTM1OTcCXzMEC2lzU3BvbnNvcmVkCAUNJHQwMTM1MDgxMzU5NwJfNAQFaXNCaWQDAwMJAAACBQZjYWxsZXIFBmlzc3VlcgkBAiE9AgUIYmlkT3duZXICAAcJAQIhPQIFBWJpZElkAgAHBgcDAwUFaXNCaWQJAQIhPQIFBmNhbGxlcgUGaXNzdWVyBwkAAgECGVlvdSBjYW5ub3QgZG8gdGhpcyBhY3Rpb24ECGJsb2NrRW5kCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCmtleUVuZFNhbGUCBQZjYWxsZXIFBWFydElkAwMDCQECIT0CBQhibG9ja0VuZAAACQBnAgUGaGVpZ2h0BQhibG9ja0VuZAcJAQEhAQUFaXNCaWQHCQACAQILU2FsZSBlbmRlZC4EDmNhbGxlcklzSXNzdWVyCQAAAgUGY2FsbGVyBQZpc3N1ZXIECHRvdGFsTkZUCQEPZ2V0SW50ZWdlckJ5S2V5AQIQdG90YWxfbmZ0X2lzc3VlZAQLYXJ0d29ya05hbWUJAQ5nZXRTdHJpbmdCeUtleQEJAQdrZXlOYW1lAgUGaXNzdWVyBQVhcnRJZAMJAAACBQthcnR3b3JrTmFtZQIACQACAQIRQXJ0IGRvZXNuJ3QgZXhpc3QECGlzT25TYWxlCQEPZ2V0Qm9vbGVhbkJ5S2V5AQkBCWtleU9uU2FsZQIFBmlzc3VlcgUFYXJ0SWQECmFtb3VudFNvbGQJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEJa2V5SXNzdWVkAgUGaXNzdWVyBQVhcnRJZAQMYXJ0d29ya1ByaWNlAwUOY2FsbGVySXNJc3N1ZXIFCG1pbnRfZmVlCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCGtleVByaWNlAgUGaXNzdWVyBQVhcnRJZAQMcHJpY2VBc3NldElkAwUOY2FsbGVySXNJc3N1ZXIJANgEAQUKYXJ0QXNzZXRJZAkBDmdldFN0cmluZ0J5S2V5AQkBEmtleUFzc2V0SWRBY2NlcHRlZAIFBmlzc3VlcgUFYXJ0SWQECm1heENhblNlbGwJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEKa2V5TWF4TWludAIFBmlzc3VlcgUFYXJ0SWQDAwMJAQEhAQUFaXNCaWQJAQEhAQUOY2FsbGVySXNJc3N1ZXIHAwMJAGcCAAAFDGFydHdvcmtQcmljZQYJAQEhAQUIaXNPblNhbGUGCQBnAgAABQptYXhDYW5TZWxsBwkAAgECEEFydCBub3QgZm9yIHNhbGUDAwMJAQEhAQUFaXNCaWQFDmNhbGxlcklzSXNzdWVyBwkAZwIAAAUKbWF4Q2FuU2VsbAcJAAIBAhRNYXggaXNzdWFibGUgbm90IHNldAQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGaXNzdWVyAwMFBWlzQmlkCQECIT0CBQljaGVja1VzZXICAAcJAAIBBQljaGVja1VzZXIECmJpZERhdGFLZXkJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUFYXJ0SWQCAV8FBmlzc3VlcgIBXwUIYmlkT3duZXICAV8FBWJpZElkBA0kdDAxNTE3NDE1MzY2AwUFaXNCaWQJARZnZXRQcmljZUFzc2V0SWRGcm9tQmlkAQUKYmlkRGF0YUtleQkBFHZhbGlkYXRlUHJpY2VBc3NldElkAwUBaQUMcHJpY2VBc3NldElkBQxhcnR3b3JrUHJpY2UEBmFtb3VudAgFDSR0MDE1MTc0MTUzNjYCXzEEB2Fzc2V0SWQIBQ0kdDAxNTE3NDE1MzY2Al8yBAVhZ2VudAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQh1c2VyRGFwcAkBEmtleUFydGlzdEFnZW50QWRkcgEFBmlzc3VlcgULZmVlUmVjZWl2ZXIECmFnZW50U2hhcmUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUIdXNlckRhcHAJARRrZXlQcmltYXJ5U2hhcmVBZ2VudAEFBmlzc3VlcgAABAtwdWJsaWNBZ2VudAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQh1c2VyRGFwcAkBGGtleUFydGlzdFB1YmxpY0FnZW50QWRkcgEFBmlzc3VlcgULZmVlUmVjZWl2ZXIEEHB1YmxpY0FnZW50U2hhcmUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUIdXNlckRhcHAJARprZXlQcmltYXJ5U2hhcmVQdWJsaWNBZ2VudAEFBmlzc3VlcgAABA1pc1doaXRlbGlzdGVkCQEOY2hlY2tXaGl0ZWxpc3QBBQZpc3N1ZXIEDWFtb3VudEZvclNpZ24JAGsDBQZhbW91bnQFDmNvbW1pc3Npb25fZmVlAGQEDmFtb3VudEZvckFnZW50AwMDCQECIT0CBQVhZ2VudAULZmVlUmVjZWl2ZXIJAGYCBQphZ2VudFNoYXJlAAAHCQBmAgUGaGVpZ2h0BQ1pc1doaXRlbGlzdGVkBwkAawMFBmFtb3VudAUKYWdlbnRTaGFyZQCQTgAABBRhbW91bnRGb3JQdWJsaWNBZ2VudAMDAwkBAiE9AgULcHVibGljQWdlbnQFC2ZlZVJlY2VpdmVyCQBmAgUQcHVibGljQWdlbnRTaGFyZQAABwkAZgIFBmhlaWdodAUNaXNXaGl0ZWxpc3RlZAcJAGsDBQZhbW91bnQFEHB1YmxpY0FnZW50U2hhcmUAkE4AAAQQYW1vdW50Rm9yQ3JlYXRvcgkAZQIFBmFtb3VudAUNYW1vdW50Rm9yU2lnbgMJAAACBQphbW91bnRTb2xkBQptYXhDYW5TZWxsCQACAQIMQXJ0IHNvbGQgb3V0BA1uZXdBbW91bnRTb2xkCQBkAgUKYW1vdW50U29sZAABBAlpc3N1ZU1ldGEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCUNyZWF0b3I6IAUGaXNzdWVyAgosCiBBcnRJRDogBQVhcnRJZAIRLAogQXJ0d29yayBuYW1lOiAFC2FydHdvcmtOYW1lAgosCiBJc3N1ZTogCQCkAwEFDW5ld0Ftb3VudFNvbGQCAS8JAKQDAQUKbWF4Q2FuU2VsbAQIaXNzdWVORlQJAMIIBQkArAICAgNTQV8JAKQDAQkAZAIFCHRvdGFsTkZUAAEFCWlzc3VlTWV0YQABAAAHBAVpZE5GVAkAuAgBBQhpc3N1ZU5GVAQKc2VsbFN0YXR1cwMDCQAAAgUNbmV3QW1vdW50U29sZAUKbWF4Q2FuU2VsbAYJAQEhAQUIaXNPblNhbGUHBgQKcmVjZWl2ZU5GVAMDAwkAAAIFBmNhbGxlcgUGaXNzdWVyCQECIT0CBQhiaWRPd25lcgIABwkBAiE9AgUFYmlkSWQCAAcJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCGJpZE93bmVyCAUBaQZjYWxsZXIECmFzc2V0SWRCaWQDCQEBIQEJAQlpc0RlZmluZWQBBQdhc3NldElkAgVXQVZFUwkA2AQBCQEFdmFsdWUBBQdhc3NldElkBAdiaWREYXRhCQEOZ2V0U3RyaW5nQnlLZXkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOBAliaWREZWxPbGQJAQtEZWxldGVFbnRyeQEJAKwCAgUKYmlkRGF0YUtleQIFX09QRU4ECWJpZFVwZGF0ZQkBC1N0cmluZ0VudHJ5AgkArAICBQpiaWREYXRhS2V5AgdfQ0xPU0VECQCsAgIJAKwCAgUHYmlkRGF0YQIBXwkApAMBBQRkYXRlBAdzb2xkS2V5CQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCWFydF9zb2xkXwkApAMBBQ1uZXdBbW91bnRTb2xkAgRfb2ZfCQCkAwEFCm1heENhblNlbGwCAV8FBWFydElkAgFfBQZpc3N1ZXIECXNvbGRWYWx1ZQMJAQEhAQUFaXNCaWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUGY2FsbGVyAgFfCQCkAwEFBGRhdGUCAV8FAmlkAgFfCQCkAwEFDGFydHdvcmtQcmljZQIBXwUMcHJpY2VBc3NldElkAgFfCQDYBAEFBWlkTkZUCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQUKcmVjZWl2ZU5GVAIBXwkApAMBBQRkYXRlAgFfBQJpZAIBXwkApAMBBQZhbW91bnQCAV8FCmFzc2V0SWRCaWQCAV8JANgEAQUFaWRORlQECHNvbGREYXRhCQELU3RyaW5nRW50cnkCBQdzb2xkS2V5BQlzb2xkVmFsdWUEImFtb3VudF9jb21taXNzaW9uX2Zvcl9zaWduX3RvX3N3YXADCQECIT0CBQ5hbW91bnRGb3JBZ2VudAAACQBlAgUNYW1vdW50Rm9yU2lnbgUOYW1vdW50Rm9yQWdlbnQFDWFtb3VudEZvclNpZ24EEWFtb3VudF9hcnRfYmVmb3JlCQEKZ2V0QmFsYW5jZQEFCmFydEFzc2V0SWQDCQAAAgURYW1vdW50X2FydF9iZWZvcmUFEWFtb3VudF9hcnRfYmVmb3JlBA9zd2FwX2ZlZV90b19hcnQDCQECIT0CBQdhc3NldElkBQphcnRBc3NldElkCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQ9wdXp6bGVfYXJ0X3Bvb2wCBHN3YXAJAMwIAgUOYXJ0QXNzZXRJZF9zdHIJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFB2Fzc2V0SWQFImFtb3VudF9jb21taXNzaW9uX2Zvcl9zaWduX3RvX3N3YXAFA25pbAUEdW5pdAMJAAACBQ9zd2FwX2ZlZV90b19hcnQFD3N3YXBfZmVlX3RvX2FydAQQYW1vdW50X2FydF9hZnRlcgkBCmdldEJhbGFuY2UBBQphcnRBc3NldElkAwkAAAIFEGFtb3VudF9hcnRfYWZ0ZXIFEGFtb3VudF9hcnRfYWZ0ZXIEFGNvbW1pc3Npb25zV2l0aEFnZW50AwkBAiE9AgUOYW1vdW50Rm9yQWdlbnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULZmVlUmVjZWl2ZXIDCQAAAgUHYXNzZXRJZAUKYXJ0QXNzZXRJZAkAZQIFDWFtb3VudEZvclNpZ24FDmFtb3VudEZvckFnZW50CQBlAgUQYW1vdW50X2FydF9hZnRlcgURYW1vdW50X2FydF9iZWZvcmUFCmFydEFzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBWFnZW50BQ5hbW91bnRGb3JBZ2VudAUHYXNzZXRJZAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQtmZWVSZWNlaXZlcgMJAAACBQdhc3NldElkBQphcnRBc3NldElkBQ1hbW91bnRGb3JTaWduCQBlAgUQYW1vdW50X2FydF9hZnRlcgURYW1vdW50X2FydF9iZWZvcmUFCmFydEFzc2V0SWQFA25pbAQaY29tbWlzc2lvbnNXaXRoUHVibGljQWdlbnQDCQECIT0CBRRhbW91bnRGb3JQdWJsaWNBZ2VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQtwdWJsaWNBZ2VudAUUYW1vdW50Rm9yUHVibGljQWdlbnQFB2Fzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmlzc3VlcgkAZQIFEGFtb3VudEZvckNyZWF0b3IFFGFtb3VudEZvclB1YmxpY0FnZW50BQdhc3NldElkBQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmlzc3VlcgUQYW1vdW50Rm9yQ3JlYXRvcgUHYXNzZXRJZAUDbmlsBAp0eFRvQ2FsbGVyAwULaXNTcG9uc29yZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgAABQR1bml0BQNuaWwFA25pbAQGYnV5UmVzCQDOCAIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5SXNzdWVkAgUGaXNzdWVyBQVhcnRJZAUNbmV3QW1vdW50U29sZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgICBG5mdF8JANgEAQUFaWRORlQFB3NvbGRLZXkJAMwIAgkBDEludGVnZXJFbnRyeQICEHRvdGFsX25mdF9pc3N1ZWQJAGQCBQh0b3RhbE5GVAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEKa2V5RW5kU2FsZQIFBmlzc3VlcgUFYXJ0SWQAAAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBCWtleU9uU2FsZQIFBmlzc3VlcgUFYXJ0SWQFCnNlbGxTdGF0dXMJAMwIAgUIaXNzdWVORlQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUKcmVjZWl2ZU5GVAABBQVpZE5GVAUDbmlsBRRjb21taXNzaW9uc1dpdGhBZ2VudAUaY29tbWlzc2lvbnNXaXRoUHVibGljQWdlbnQFCnR4VG9DYWxsZXIDBQVpc0JpZAkAzAgCBQhzb2xkRGF0YQkAzAgCBQliaWRVcGRhdGUJAMwIAgUJYmlkRGVsT2xkBQZidXlSZXMJAMwIAgUIc29sZERhdGEFBmJ1eVJlcwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEIYXNTdHJpbmcBAmJ2BAckbWF0Y2gwBQJidgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEA2J2MAUHJG1hdGNoMAUDYnYwCQACAQIkU3BvbnNvcmVkIFB1YmxpYyBLZXkgU3RyaW5nIGV4cGVjdGVkCgZpbnZva2UBB3NldENvbmYCA2tleQN2YWwEBmNhbGxlcgkApQgBCAUGaW52b2tlBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIDCQEIY29udGFpbnMCBQNrZXkCBWNvbmZfCQDMCAIJAQtTdHJpbmdFbnRyeQIFA2tleQUDdmFsBQNuaWwJAAIBAiBFbnRyaWVzIHN0YXJ0aW5nIHdpdGggY29uZl8gb25seQkAAgECIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHRoaXMBaQEKYWRkQXJ0d29yawwEbmFtZQtkZXNjcmlwdGlvbgR0YWdzBHR5cGUKY2lkRGlzcGxheQxzaGEyNTZFeHBvcnQJY2lkRXhwb3J0DXNoYTI1NkxpY2VuY2UKY2lkTGljZW5jZQdjcmF3bGVyCXJveWFsdGllcwZwdWJLZXkEDSR0MDIxNjMyMjE3MDUJARVpZENhbGxlckRhdGVTcG9uc29yZWQCBQFpBQZwdWJLZXkEBWFydElkCAUNJHQwMjE2MzIyMTcwNQJfMQQGY2FsbGVyCAUNJHQwMjE2MzIyMTcwNQJfMgQEZGF0ZQgFDSR0MDIxNjMyMjE3MDUCXzMEC2lzU3BvbnNvcmVkCAUNJHQwMjE2MzIyMTcwNQJfNAQNJHQwMjE3MTUyMTc4NAkBCnNldExJY2VuY2UCBQpjaWRMaWNlbmNlBQ1zaGEyNTZMaWNlbmNlBApsaWNlbmNlQ0lECAUNJHQwMjE3MTUyMTc4NAJfMQQLbGljZW5jZUhhc2gIBQ0kdDAyMTcxNTIxNzg0Al8yBA92YWxpZGF0ZUFydHdvcmsJARN2YWxpZGF0ZUFydHdvcmtEYXRhCgUGY2FsbGVyBQpjaWREaXNwbGF5BQljaWRFeHBvcnQFCmxpY2VuY2VDSUQFDHNoYTI1NkV4cG9ydAULbGljZW5jZUhhc2gFBG5hbWUFC2Rlc2NyaXB0aW9uBQR0YWdzBQlyb3lhbHRpZXMDCQECIT0CBQ92YWxpZGF0ZUFydHdvcmsCAAkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQQQd2hpdGVsaXN0ZWRfZHJvcAkAZgIJAQ5jaGVja1doaXRlbGlzdAEJAKwCAgUGY2FsbGVyAgtfZnJlZV9kcm9wcwAABA0kdDAyMjA4MzIyMTcxAwUQd2hpdGVsaXN0ZWRfZHJvcAkAlAoCAAAFCmFydEFzc2V0SWQJAQ92YWxpZGF0ZVBheW1lbnQBBQFpBAZhbW91bnQIBQ0kdDAyMjA4MzIyMTcxAl8xBAdhc3NldElkCAUNJHQwMjIwODMyMjE3MQJfMgMJAQEhAQkBCWlzRGVmaW5lZAEFBmFtb3VudAkAAgECFFNvbWV0aGluZyB3ZW50IHdyb25nBBdkZWNyZWFzZV93aGl0ZWxpc3RfZHJvcAMFEHdoaXRlbGlzdGVkX2Ryb3AJAPwHBAUNd2hpdGVsaXN0RGFwcAILdXNlRnJlZURyb3AJAMwIAgUGY2FsbGVyBQNuaWwFA25pbAUEdW5pdAMJAAACBRdkZWNyZWFzZV93aGl0ZWxpc3RfZHJvcAUXZGVjcmVhc2Vfd2hpdGVsaXN0X2Ryb3AECnR4VG9DYWxsZXIDBQtpc1Nwb25zb3JlZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQdrZXlEYXRlAgUGY2FsbGVyBQVhcnRJZAUEZGF0ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5TmFtZQIFBmNhbGxlcgUFYXJ0SWQFBG5hbWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleURlc2MCBQZjYWxsZXIFBWFydElkBQtkZXNjcmlwdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5RGlzcGxheUNpZAIFBmNhbGxlcgUFYXJ0SWQFCmNpZERpc3BsYXkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUV4cG9ydENpZAIFBmNhbGxlcgUFYXJ0SWQFCWNpZEV4cG9ydAkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5RXhwb3J0SGFzaAIFBmNhbGxlcgUFYXJ0SWQFDHNoYTI1NkV4cG9ydAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5TGljZW5jZUhhc2gCBQZjYWxsZXIFBWFydElkBQtsaWNlbmNlSGFzaAkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5TGljZW5jZUNpZAIFBmNhbGxlcgUFYXJ0SWQFCmxpY2VuY2VDSUQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleVR5cGUCBQZjYWxsZXIFBWFydElkBQR0eXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUYWdzAgUGY2FsbGVyBQVhcnRJZAUEdGFncwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCmtleU1heE1pbnQCBQZjYWxsZXIFBWFydElkAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlJc3N1ZWQCBQZjYWxsZXIFBWFydElkAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQlrZXlPblNhbGUCBQZjYWxsZXIFBWFydElkBwkAzAgCCQELU3RyaW5nRW50cnkCCQEKa2V5Q3Jhd2xlcgIFBmNhbGxlcgUFYXJ0SWQFB2NyYXdsZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQxrZXlSb3lhbHRpZXMCBQZjYWxsZXIFBWFydElkBQlyb3lhbHRpZXMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFC2ZlZVJlY2VpdmVyCQBpAgUGYW1vdW50AAIFCmFydEFzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUKcmVwb3J0RGFwcAkAaQIFBmFtb3VudAACBQphcnRBc3NldElkBQNuaWwFCnR4VG9DYWxsZXIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENdXBkYXRlQXJ0d29yaw0EdHhpZARuYW1lC2Rlc2NyaXB0aW9uBHRhZ3MEdHlwZQpjaWREaXNwbGF5DHNoYTI1NkV4cG9ydAljaWRFeHBvcnQNc2hhMjU2TGljZW5jZQpjaWRMaWNlbmNlB2NyYXdsZXIJcm95YWx0aWVzBnB1YktleQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwQNJHQwMjQxNTAyNDIyMAkBFWlkQ2FsbGVyRGF0ZVNwb25zb3JlZAIFAWkFBnB1YktleQQCaWQIBQ0kdDAyNDE1MDI0MjIwAl8xBAZjYWxsZXIIBQ0kdDAyNDE1MDI0MjIwAl8yBARkYXRlCAUNJHQwMjQxNTAyNDIyMAJfMwQLaXNTcG9uc29yZWQIBQ0kdDAyNDE1MDI0MjIwAl80BA0kdDAyNDIzMDI0Mjk5CQEKc2V0TEljZW5jZQIFCmNpZExpY2VuY2UFDXNoYTI1NkxpY2VuY2UECmxpY2VuY2VDSUQIBQ0kdDAyNDIzMDI0Mjk5Al8xBAtsaWNlbmNlSGFzaAgFDSR0MDI0MjMwMjQyOTkCXzIED3ZhbGlkYXRlQXJ0d29yawkBE3ZhbGlkYXRlQXJ0d29ya0RhdGEKBQZjYWxsZXIFCmNpZERpc3BsYXkFCWNpZEV4cG9ydAUKbGljZW5jZUNJRAUMc2hhMjU2RXhwb3J0BQtsaWNlbmNlSGFzaAUEbmFtZQULZGVzY3JpcHRpb24FBHRhZ3MFCXJveWFsdGllcwMJAQIhPQIFD3ZhbGlkYXRlQXJ0d29yawIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAplbnRyeUV4aXN0CQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5TmFtZQIFBmNhbGxlcgUEdHhpZAMJAAACBQplbnRyeUV4aXN0AgAJAAIBAg9FbnRyeSBub3QgZm91bmQEBGZsYWcJAQ5nZXRTdHJpbmdCeUtleQEJAQdrZXlGbGFnAgUGY2FsbGVyBQR0eGlkAwkAAAIFBGZsYWcCB0lMTEVHQUwJAAIBAh1DYW5ub3QgdXBkYXRlIElMTEVHQUwgYXJ0d29yawMJAQEhAQkBC2lzQXJ0TWludGVkAgUGY2FsbGVyBQR0eGlkBAp0eFRvQ2FsbGVyAwULaXNTcG9uc29yZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlOYW1lAgUGY2FsbGVyBQR0eGlkBQRuYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlEZXNjAgUGY2FsbGVyBQR0eGlkBQtkZXNjcmlwdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5RGlzcGxheUNpZAIFBmNhbGxlcgUEdHhpZAUKY2lkRGlzcGxheQkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RXhwb3J0Q2lkAgUGY2FsbGVyBQR0eGlkBQljaWRFeHBvcnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleUV4cG9ydEhhc2gCBQZjYWxsZXIFBHR4aWQFDHNoYTI1NkV4cG9ydAkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5TGljZW5jZUNpZAIFBmNhbGxlcgUEdHhpZAUKbGljZW5jZUNJRAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5TGljZW5jZUhhc2gCBQZjYWxsZXIFBHR4aWQFC2xpY2VuY2VIYXNoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUYWdzAgUGY2FsbGVyBQR0eGlkBQR0YWdzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUeXBlAgUGY2FsbGVyBQR0eGlkBQR0eXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQprZXlDcmF3bGVyAgUGY2FsbGVyBQR0eGlkBQdjcmF3bGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5Um95YWx0aWVzAgUGY2FsbGVyBQR0eGlkBQlyb3lhbHRpZXMFA25pbAUKdHhUb0NhbGxlcgkAAgECDkFscmVhZHkgbWludGVkAWkBC2ZsYWdBcnR3b3JrBAVhcnRJZARhZGRyBGZsYWcEbm90ZQQNJHQwMjU5MjYyNTk2MAkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMjU5MjYyNTk2MAJfMQQGY2FsbGVyCAUNJHQwMjU5MjYyNTk2MAJfMgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwkAzAgCCQClCAEFCnJlcG9ydERhcHAFA25pbAUGY2FsbGVyAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgIHQ09OU0VOVAkAzAgCAgAJAMwIAgIPQ0hBTkdFX1JFUVVJUkVECQDMCAICB0ZMQUdHRUQJAMwIAgIHSUxMRUdBTAUDbmlsBQRmbGFnCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlGbGFnAgUEYWRkcgUFYXJ0SWQFBGZsYWcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleU5vdGUCBQRhZGRyBQVhcnRJZAUEbm90ZQUDbmlsCQACAQkArAICAg5Vbmtub3cgc3RhdHVzIAUEZmxhZwkAAgECE1lvdSBhcmUgbm90IGFsbG93ZWQBaQENZGVsZXRlQXJ0d29yawIFYXJ0SWQEYWRkcgQNJHQwMjY0MTgyNjQ1MgkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMjY0MTgyNjQ1MgJfMQQGY2FsbGVyCAUNJHQwMjY0MTgyNjQ1MgJfMgQJYWRkclRvVXNlAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgUEYWRkcgUGY2FsbGVyBAplbnRyeUV4aXN0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAQ5nZXRTdHJpbmdCeUtleQEJAQdrZXlOYW1lAgUJYWRkclRvVXNlBQVhcnRJZAIgTm8gYXJ0IG1hdGNoaW5nIGZvciB0aGlzIGFkZHJlc3MDCQAAAgUKZW50cnlFeGlzdAIACQACAQIgTm8gYXJ0IG1hdGNoaW5nIGZvciB0aGlzIGFkZHJlc3MECnNoYTI1Nkhhc2gJAQ5nZXRTdHJpbmdCeUtleQEJARFrZXlIYXNoQnlUeGlkQWRkcgIFCWFkZHJUb1VzZQUFYXJ0SWQEBnNpZ25JRAMJAQIhPQIFCnNoYTI1Nkhhc2gCAAkBDmdldFN0cmluZ0J5S2V5AQkBCWtleVNpZ25JRAIFCWFkZHJUb1VzZQUFYXJ0SWQCAAQNc2lnbklEX2xlZ2FjeQMJAAACBQZzaWduSUQCAAUDbmlsCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ1rZXlpZEJ5U2lnbmlkAgUJYWRkclRvVXNlBQZzaWduSUQFA25pbAQMZGF0YVRvRGVsZXRlCQDOCAIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleURhdGUCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlOYW1lAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEHa2V5RGVzYwIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDWtleURpc3BsYXlDaWQCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQxrZXlFeHBvcnRDaWQCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ1rZXlFeHBvcnRIYXNoAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEOa2V5TGljZW5jZUhhc2gCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ1rZXlMaWNlbmNlQ2lkAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEHa2V5VHlwZQIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleVRhZ3MCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQprZXlNYXhNaW50AgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEJa2V5U2lnbklEAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEJa2V5SXNzdWVkAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEJa2V5T25TYWxlAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEHa2V5RmxhZwIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCGtleVByaWNlAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQESa2V5QXNzZXRJZEFjY2VwdGVkAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEOa2V5T3duZXJCeUhhc2gBBQpzaGEyNTZIYXNoCQDMCAIJAQtEZWxldGVFbnRyeQEJAQprZXlFbmRTYWxlAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEHa2V5Tm90ZQIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCmtleUNyYXdsZXICBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQxrZXlSb3lhbHRpZXMCBQlhZGRyVG9Vc2UFBWFydElkBQNuaWwFDXNpZ25JRF9sZWdhY3kDCQEBIQEJAQtpc0FydE1pbnRlZAIFCWFkZHJUb1VzZQUFYXJ0SWQDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cFDGRhdGFUb0RlbGV0ZQMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIFDGRhdGFUb0RlbGV0ZQkAAgECKEFydCBhbHJlYWR5IG1pbnRlZCwgeW91IGNhbm5vdCBkZWxldGUgaXQBaQELc2VsbEFydHdvcmsGBWFydElkBXByaWNlB21heE1pbnQHYXNzZXRJZAhibG9ja0VuZAZwdWJLZXkEDSR0MDI5MjMxMjkzMDEJARVpZENhbGxlckRhdGVTcG9uc29yZWQCBQFpBQZwdWJLZXkEAmlkCAUNJHQwMjkyMzEyOTMwMQJfMQQGY2FsbGVyCAUNJHQwMjkyMzEyOTMwMQJfMgQEZGF0ZQgFDSR0MDI5MjMxMjkzMDECXzMEC2lzU3BvbnNvcmVkCAUNJHQwMjkyMzEyOTMwMQJfNAQLYXJ0d29ya05hbWUJAQ5nZXRTdHJpbmdCeUtleQEJAQdrZXlOYW1lAgUGY2FsbGVyBQVhcnRJZAMJAAACBQthcnR3b3JrTmFtZQIACQACAQIjVGhpcyBhcnQgZG9lc24ndCBtYXRjaCB5b3VyIGFjY291bnQEBGZsYWcJAQ5nZXRTdHJpbmdCeUtleQEJAQdrZXlGbGFnAgUGY2FsbGVyBQVhcnRJZAMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAICD0NIQU5HRV9SRVFVSVJFRAkAzAgCAgdGTEFHR0VECQDMCAICB0lMTEVHQUwFA25pbAUEZmxhZwkAAgECD0ZsYWdnZWQgYXJ0d29yawQGYmlkTmJyCQEPZ2V0SW50ZWdlckJ5S2V5AQkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FBWFydElkAwkAZgIAAAUIYmxvY2tFbmQJAAIBAgxOZWdhdGl2ZSBlbmQDAwkAZgIFCGJsb2NrRW5kAAADCQECIT0CBQdtYXhNaW50AAEGCQECIT0CBQVwcmljZQAABwkAAgECOlRpbWVkIG9mZmVyIG9ubHkgYWxsb3dlZCBmb3IgdW5pcXVlIGVkaXRpb24gYW5kIG9mZmVyIG9ubHkECmJhc2VIZWlnaHQDCQAAAgUIYmxvY2tFbmQAAAAABQZoZWlnaHQDCQEBIQEJARBhY2NlcHRlZEFzc2V0SWRzAQUHYXNzZXRJZAkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQMJAQEhAQkBD3ZhbGlkYXRlTWluU2VsbAEFBXByaWNlCQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAljaGVja1VzZXIJAQx2YWxpZGF0ZVVzZXIBBQZjYWxsZXIDCQECIT0CBQljaGVja1VzZXICAAkAAgEFCWNoZWNrVXNlcgQKYW1vdW50U29sZAkBD2dldEludGVnZXJCeUtleQEJAQlrZXlJc3N1ZWQCBQZjYWxsZXIFBWFydElkBAptYXhDYW5TZWxsCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCmtleU1heE1pbnQCBQZjYWxsZXIFBWFydElkAwkAZgIFB21heE1pbnQAZAkAAgECHDEwMCBlZGl0aW9ucyBtYXggcGVyIGFydHdvcmsDAwkBAiE9AgUKYW1vdW50U29sZAAACQAAAgUKYW1vdW50U29sZAUKbWF4Q2FuU2VsbAcJAAIBAhRNYXggZWRpdGlvbiByZWFjaGVkLgMDCQBmAgUKYW1vdW50U29sZAAACQECIT0CBQptYXhDYW5TZWxsBQdtYXhNaW50BwkAAgECJkNhbm5vdCBjaGFuZ2UgbWF4aW11bSBpc3N1YWJsZSBhbnltb3JlAwMJAGYCBQZiaWROYnIAAAkBAiE9AgUKbWF4Q2FuU2VsbAUHbWF4TWludAcJAAIBAjFDYW5ub3QgY2hhbmdlIG1heGltdW0gaXNzdWFibGUgd2l0aCBhY3RpdmUgb3JkZXJzBApzZWxsU3RhdHVzAwMJAGYCBQVwcmljZQAACQBmAgUHbWF4TWludAAABwYHBAp0eFRvQ2FsbGVyAwULaXNTcG9uc29yZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQxCb29sZWFuRW50cnkCCQEJa2V5T25TYWxlAgUGY2FsbGVyBQVhcnRJZAUKc2VsbFN0YXR1cwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCGtleVByaWNlAgUGY2FsbGVyBQVhcnRJZAUFcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJAQprZXlNYXhNaW50AgUGY2FsbGVyBQVhcnRJZAUHbWF4TWludAkAzAgCCQELU3RyaW5nRW50cnkCCQESa2V5QXNzZXRJZEFjY2VwdGVkAgUGY2FsbGVyBQVhcnRJZAUHYXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCmtleUVuZFNhbGUCBQZjYWxsZXIFBWFydElkCQBkAgUKYmFzZUhlaWdodAUIYmxvY2tFbmQFA25pbAUKdHhUb0NhbGxlcgFpAQpidXlBcnR3b3JrAgVhcnRJZAZpc3N1ZXIJAQdidXlNaW50BgUBaQUFYXJ0SWQFBmlzc3VlcgIAAgACAAFpAQZzZXRCaWQCBWFydElkBmlzc3VlcgQNJHQwMzE2NzQzMTcxNAkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMzE2NzQzMTcxNAJfMQQGY2FsbGVyCAUNJHQwMzE2NzQzMTcxNAJfMgQEZGF0ZQgFDSR0MDMxNjc0MzE3MTQCXzMEDSR0MDMxNzE5MzE3NTUJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAUNJHQwMzE3MTkzMTc1NQJfMQQGYW1vdW50CAUNJHQwMzE3MTkzMTc1NQJfMgQHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQECGJsb2NrRW5kCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCmtleUVuZFNhbGUCBQZpc3N1ZXIFBWFydElkAwMJAQIhPQIFCGJsb2NrRW5kAAAJAGcCBQZoZWlnaHQFCGJsb2NrRW5kBwkAAgECC1NhbGUgZW5kZWQuBAZiaWROYnIJAQ9nZXRJbnRlZ2VyQnlLZXkBCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQDCQEBIQEJARBhY2NlcHRlZEFzc2V0SWRzAQUHYXNzZXRJZAkAAgECEmFzc2V0IG5vdCBhY2NlcHRlZAMJAQEhAQkBD3ZhbGlkYXRlTWluU2VsbAEFBmFtb3VudAkAAgECDldyb25nIG1pbiBzZWxsBAphbW91bnRTb2xkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCWtleUlzc3VlZAIFBmlzc3VlcgUFYXJ0SWQECm1heENhblNlbGwJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEKa2V5TWF4TWludAIFBmlzc3VlcgUFYXJ0SWQDCQBnAgAABQptYXhDYW5TZWxsCQACAQIjTm8gbWF4IGVkaXRpb24gc2V0IGZvciB0aGlzIGFydHdvcmsDCQBnAgUKYW1vdW50U29sZAUKbWF4Q2FuU2VsbAkAAgECGFNvbGQgb3V0LCB5b3UgY2Fubm90IGJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUFYXJ0SWQCAV8FBmlzc3VlcgIBXwUGY2FsbGVyAgFfBQJpZAIFX09QRU4JAKwCAgkArAICCQCsAgIJAKwCAgUHYXNzZXRJZAIBXwkApAMBBQZhbW91bnQCAV8JAKQDAQUEZGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FBWFydElkCQBkAgUGYmlkTmJyAAEFA25pbAFpAQlhY2NlcHRCaWQFBWFydElkBmlzc3VlcgViaWRJZAhiaWRPd25lcgZwdWJLZXkJAQdidXlNaW50BgUBaQUFYXJ0SWQFBmlzc3VlcgUFYmlkSWQFCGJpZE93bmVyBQZwdWJLZXkBaQEJY2FuY2VsQmlkBAVhcnRJZAZpc3N1ZXIFYmlkSWQIYmlkT3duZXIEDSR0MDMzMDc5MzMxNDAJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFDSR0MDMzMDc5MzMxNDACXzEEBmNhbGxlcggFDSR0MDMzMDc5MzMxNDACXzIEBGRhdGUIBQ0kdDAzMzA3OTMzMTQwAl8zAwMJAQIhPQIFBmNhbGxlcgUIYmlkT3duZXIJAQIhPQIFBmNhbGxlcgUGaXNzdWVyBwkAAgECGVlvdSBjYW5ub3QgZG8gdGhpcyBhY3Rpb24EDXJldHVybk1vbmV5VG8DCQAAAgUGY2FsbGVyBQZpc3N1ZXIFCGJpZE93bmVyBQZjYWxsZXIEBmJpZE5icgkBD2dldEludGVnZXJCeUtleQEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQVhcnRJZAQKYmlkRGF0YUtleQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgRiaWRfBQVhcnRJZAIBXwUGaXNzdWVyAgFfBQhiaWRPd25lcgIBXwUFYmlkSWQEB2JpZERhdGEJAQ5nZXRTdHJpbmdCeUtleQEJAKwCAgUKYmlkRGF0YUtleQIFX09QRU4DCQAAAgUHYmlkRGF0YQIACQACAQINQmlkIG5vdCBmb3VuZAQKYmlkRGF0YUFycgkAtQkCBQdiaWREYXRhAgFfBAdhc3NldElkCQENZ2V0QmlkQXNzZXRJZAEJAJEDAgUKYmlkRGF0YUFycgAABAliaWRTdGF0dXMCCENBTkNFTEVECQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUKYmlkRGF0YUtleQIFX09QRU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFCmJpZERhdGFLZXkCAV8FCWJpZFN0YXR1cwkArAICCQCsAgIFB2JpZERhdGECAV8JAKQDAQUEZGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FBWFydElkCQBlAgUGYmlkTmJyAAEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFDXJldHVybk1vbmV5VG8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpiaWREYXRhQXJyAAEFB2Fzc2V0SWQFA25pbAECdHgBCHZlcmlmaWVyAAQHJG1hdGNoMAUCdHgDCQABAgUHJG1hdGNoMAIXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EA2ludgUHJG1hdGNoMAMDAwMJAAACCAUDaW52CGZ1bmN0aW9uAgphZGRBcnR3b3JrCQAAAggFA2ludgRkQXBwBQR0aGlzBwkAAAIIBQNpbnYDZmVlAKDCHgcJAAACCAUDaW52CmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQDZBAEJAQhhc1N0cmluZwEJAJEDAggFA2ludgRhcmdzAAsDAwMDCQAAAggFA2ludghmdW5jdGlvbgINdXBkYXRlQXJ0d29yawkAAAIIBQNpbnYEZEFwcAUEdGhpcwcJAAACCAUDaW52A2ZlZQCgwh4HCQAAAggFA2ludgpmZWVBc3NldElkBQR1bml0BwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkA2QQBCQEIYXNTdHJpbmcBCQCRAwIIBQNpbnYEYXJncwAMAwMDAwkAAAIIBQNpbnYIZnVuY3Rpb24CC3NlbGxBcnR3b3JrCQAAAggFA2ludgRkQXBwBQR0aGlzBwkAAAIIBQNpbnYDZmVlAKDCHgcJAAACCAUDaW52CmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQDZBAEJAQhhc1N0cmluZwEJAJEDAggFA2ludgRhcmdzAAUDAwMDCQAAAggFA2ludghmdW5jdGlvbgIJYWNjZXB0QmlkCQAAAggFA2ludgRkQXBwBQR0aGlzBwkAAAIIBQNpbnYDZmVlAKDCHgcJAAACCAUDaW52CmZlZUFzc2V0SWQFBHVuaXQHCQDIEwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQDZBAEJAQhhc1N0cmluZwEJAJEDAggFA2ludgRhcmdzAAQJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXnqd3+D", "height": 2794939, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3KKVXa7rpLAwbnoresxHp46ppM2o349MtkAc4MCmgDR5 Next: DoPNT1robSaH6qcNGeeGK5KLsEj7UprszpCQPXnX5hc2 Diff:
OldNewDifferences
667667 let cQ = bC(ba)
668668 let bJ = cQ._1
669669 let W = cQ._2
670- if (containsElement([A, toString(this)], W))
670+ if (containsElement([A, toString(this), toString(k)], W))
671671 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cN))
672672 then [StringEntry(as(cO, Y), cN), StringEntry(am(cO, Y), cP)]
673673 else throw(("Unknow status " + cN))
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
2323 let j = b("conf_puzzle_art_pool")
2424
2525 let k = value(addressFromString(b("conf_report_dapp")))
2626
2727 let l = b("conf_accepted_asset_USDT_PP")
2828
2929 let m = b("conf_accepted_asset_ART")
3030
3131 let n = b("conf_accepted_asset_USDC_PP")
3232
3333 let o = b("conf_accepted_asset_EAST")
3434
3535 let p = b("conf_accepted_asset_PUZZLE")
3636
3737 let q = b("conf_accepted_asset_ETH_PP")
3838
3939 let r = "WAVES"
4040
4141 let s = fromBase58String(l)
4242
4343 let t = fromBase58String(m)
4444
4545 let u = fromBase58String(n)
4646
4747 let v = fromBase58String(o)
4848
4949 let w = fromBase58String(p)
5050
5151 let x = fromBase58String(q)
5252
5353 let y = base58''
5454
5555 let z = [l, m, n, o, p, r, q]
5656
5757 let A = b("conf_admin_1")
5858
5959 func B (c) = valueOrErrorMessage(getInteger(e, c), "Integer undefine or 0 in oracle")
6060
6161
6262 func C (c) = valueOrElse(getInteger(this, c), 0)
6363
6464
6565 func D (c) = valueOrElse(getInteger(i, c), 0)
6666
6767
6868 func E (c) = valueOrElse(getBoolean(this, c), false)
6969
7070
7171 let F = 8
7272
7373 let G = b("conf_default_licence")
7474
7575 let H = b("conf_default_licence_hash")
7676
7777 let I = valueOrElse(getBoolean(h, "conf_dapp_is_running"), true)
7878
7979 let J = valueOrElse(getString(h, "conf_maintenance_msg"), "")
8080
8181 let K = "SUSPENDED"
8282
8383 let L = "REMOVED"
8484
8585 let M = "UNREGISTERED"
8686
8787 let N = "ALLOWED"
8888
8989 let O = B(("certification_fee_" + toBase58String(t)))
9090
9191 let P = B(("mint_fee_" + toBase58String(t)))
9292
9393 func Q (c) = valueOrElse(getInteger(this, c), 1000)
9494
9595
9696 func R (S) = if (contains(S, "/"))
9797 then if (if ((76 > size(S)))
9898 then (size(split(S, "/")[0]) == 59)
9999 else false)
100100 then (16 > size(split(S, "/")[1]))
101101 else false
102102 else false
103103
104104
105105 func T (U) = (size(U) == 64)
106106
107107
108108 func V (W) = ("user_status_" + W)
109109
110110
111111 func X (W,Y) = ((("art_date_" + Y) + "_") + W)
112112
113113
114114 func Z (W,Y) = ((("art_name_" + Y) + "_") + W)
115115
116116
117117 func aa (W,Y) = ((("art_desc_" + Y) + "_") + W)
118118
119119
120120 func ab (W,Y) = ((("art_display_cid_" + Y) + "_") + W)
121121
122122
123123 func ac (W,Y) = ((("art_export_hash_" + Y) + "_") + W)
124124
125125
126126 func ad (W,Y) = ((("art_export_cid_" + Y) + "_") + W)
127127
128128
129129 func ae (W,Y) = ((("art_maxmint_" + Y) + "_") + W)
130130
131131
132132 func af (W,Y) = ((("art_signid_" + Y) + "_") + W)
133133
134134
135135 func ag (W,Y) = ((("art_issued_" + Y) + "_") + W)
136136
137137
138138 func ah (W,Y) = ((("art_onsale_" + Y) + "_") + W)
139139
140140
141141 func ai (W,Y) = ((("art_licence_hash_" + Y) + "_") + W)
142142
143143
144144 func aj (W,Y) = ((("art_licence_cid_" + Y) + "_") + W)
145145
146146
147147 func ak (W,Y) = ((("art_tags_" + Y) + "_") + W)
148148
149149
150150 func al (W,Y) = ((("art_type_" + Y) + "_") + W)
151151
152152
153153 func am (W,Y) = ((("art_note_" + Y) + "_") + W)
154154
155155
156156 func an (W,Y) = ((("art_crawler_cid_" + Y) + "_") + W)
157157
158158
159159 func ao (W,Y) = ((("art_royalties_" + Y) + "_") + W)
160160
161161
162162 func ap (W,Y) = ((("art_price_" + Y) + "_") + W)
163163
164164
165165 func aq (W,Y) = ((("art_endsale_" + Y) + "_") + W)
166166
167167
168168 func ar (W,Y) = ((("art_assetAccepted_" + Y) + "_") + W)
169169
170170
171171 func as (W,Y) = ((("art_flag_" + Y) + "_") + W)
172172
173173
174174 func at (au) = ("artist_agent_" + au)
175175
176176
177177 func av (au) = ("artist_agent_primary_" + au)
178178
179179
180180 func aw (au) = ("artist_public_agent_" + au)
181181
182182
183183 func ax (au) = ("artist_public_agent_primary_" + au)
184184
185185
186186 func ay (W,az) = ((("get_hashbytxidaddr_" + az) + "_") + W)
187187
188188
189189 func aA (aB) = ("get_owner_by_hash_" + aB)
190190
191191
192192 func aC (W,aD) = ((("get_artidbysignid_" + aD) + "_") + W)
193193
194194
195195 func aE (aF,aG,aH) = if (!(R(aF)))
196196 then throw("Wrong Display CID")
197197 else if (!(R(aG)))
198198 then throw("Wrong Export CID")
199199 else if (if ((aH != ""))
200200 then !(R(aH))
201201 else false)
202202 then throw("Wrong Licence CID")
203203 else true
204204
205205
206206 func aI (aJ,aK) = if (!(T(aJ)))
207207 then throw("Export Hash 64 char. max")
208208 else if (!(T(aK)))
209209 then throw("Licence Hash 64 char. max")
210210 else true
211211
212212
213213 func aL (aM,aN) = if ((size(aM) == 0))
214214 then throw("Field cannot be is empty")
215215 else if ((size(aM) > aN))
216216 then throw((aM + " is too long"))
217217 else true
218218
219219
220220 func aO (W) = {
221221 let aP = valueOrElse(getString(h, V(W)), M)
222222 if (if ((aP == M))
223223 then true
224224 else (aP == N))
225225 then "Register this account first with \"Account\" tab"
226226 else if ((aP == K))
227227 then "Account suspended"
228228 else if ((aP == L))
229229 then "Account removed"
230230 else ""
231231 }
232232
233233
234234 func aQ (aH,aK) = {
235235 let S = if ((size(aH) == 0))
236236 then G
237237 else aH
238238 let U = if ((size(aK) == 0))
239239 then H
240240 else aK
241241 $Tuple2(S, U)
242242 }
243243
244244
245245 func aR (W,aF,aG,aS,aJ,aT,aU,aV,aW,aX) = {
246246 let aY = aO(W)
247247 if ((aY != ""))
248248 then throw(aY)
249249 else if ((size(aF) == 0))
250250 then throw("Display CID cannot be empty")
251251 else if (!(aE(aF, aG, aS)))
252252 then throw("Problem with CID")
253253 else if (!(aI(aJ, aT)))
254254 then throw("Problem with Hashes")
255255 else if (!(aL(aU, 100)))
256256 then throw("100 Char. max name")
257257 else if (!(aL(aV, 1000)))
258258 then throw("1000 Char. max description")
259259 else if (if ((0 > aX))
260260 then true
261261 else (aX > 1000))
262262 then throw("Royalties cannot be less than 0% or higher than 10%")
263263 else if ((size(split(aW, ",")) > 5))
264264 then throw("5 tags max.")
265265 else ""
266266 }
267267
268268
269269 func aZ (ba) = if ((size(ba.payments) == 0))
270270 then throw("No payment attached")
271271 else {
272272 let bb = value(ba.payments[0])
273273 let bc = value(bb.amount)
274274 $Tuple2(bb, bc)
275275 }
276276
277277
278278 func bd (ba) = {
279279 let be = aZ(ba)
280280 let bb = be._1
281281 let bc = be._2
282282 let bf = if (if (isDefined(bb.assetId))
283283 then (bb.assetId == t)
284284 else false)
285285 then bb.assetId
286286 else throw("Only SIGN token accepted as transaction fee")
287287 if ((bc != (O * 2)))
288288 then throw(("Payment amount should be " + toString((O * 2))))
289289 else $Tuple2(bc, bf)
290290 }
291291
292292
293293 func bg (bh,Y) = {
294294 let bi = getInteger(this, ag(bh, Y))
295295 if ($isInstanceOf(bi, "Int"))
296296 then {
297297 let bj = bi
298298 if ((bj != 0))
299299 then true
300300 else false
301301 }
302302 else false
303303 }
304304
305305
306306 func bk (ba,bl,bm) = {
307307 let bn = aZ(ba)
308308 let bb = bn._1
309309 let bc = bn._2
310310 let bf = if (!(isDefined(bb.assetId)))
311311 then unit
312312 else if (if ((size(bl) > 0))
313313 then (toBase58String(value(bb.assetId)) == bl)
314314 else false)
315315 then bb.assetId
316316 else throw("Wrong asset id")
317317 if (if ((bf == unit))
318318 then (bl != "")
319319 else false)
320320 then throw("Wrong asset id")
321321 else if ((bm != bc))
322322 then throw("Payment don't match")
323323 else $Tuple2(bc, bf)
324324 }
325325
326326
327327 func bo (bf) = if (!(containsElement(z, bf)))
328328 then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
329329 else true
330330
331331
332332 func bp (bq) = if ((0 >= bq))
333333 then throw("Wrong minimum sell price")
334334 else true
335335
336336
337337 func br (bf) = if ((bf == "WAVES"))
338338 then unit
339339 else fromBase58String(bf)
340340
341341
342342 func bs (bt) = {
343343 let bu = b((bt + "_OPEN"))
344344 if ((bu == ""))
345345 then throw("Bid not found")
346346 else {
347347 let bv = split(bu, "_")
348348 let bw = parseIntValue(bv[1])
349349 let bx = br(bv[0])
350350 if ((0 >= bw))
351351 then throw("Wrong amount")
352352 else $Tuple2(bw, bx)
353353 }
354354 }
355355
356356
357357 func by (ba,bz) = if (!(I))
358358 then throw(J)
359359 else {
360360 let bA = if ((bz != ""))
361361 then valueOrElse(D((toString(addressFromPublicKey(fromBase58String(bz))) + "_free_txs")), 0)
362362 else 0
363363 let W = if (if ((toBase58String(ba.caller.bytes) == toString(this)))
364364 then (bA > 0)
365365 else false)
366366 then toString(addressFromPublicKey(fromBase58String(bz)))
367367 else toBase58String(ba.caller.bytes)
368368 let bB = if (if ((bz != ""))
369369 then (bA > 0)
370370 else false)
371371 then invoke(i, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bz)))], nil)
372372 else unit
373373 if ((bB == bB))
374374 then $Tuple4(toBase58String(ba.transactionId), W, lastBlock.timestamp, (bA > 0))
375375 else throw("Strict value is not equal to itself.")
376376 }
377377
378378
379379 func bC (ba) = if (!(I))
380380 then throw(J)
381381 else $Tuple3(toBase58String(ba.transactionId), toBase58String(ba.caller.bytes), lastBlock.timestamp)
382382
383383
384384 func bD (bf) = {
385385 let bi = bf
386386 if ($isInstanceOf(bi, "ByteVector"))
387387 then {
388388 let bj = bi
389389 assetBalance(this, bj)
390390 }
391391 else wavesBalance(this).available
392392 }
393393
394394
395395 func bE (ba,Y,bF,bG,bH,bz) = {
396396 let bI = by(ba, bz)
397397 let bJ = bI._1
398398 let W = bI._2
399399 let bK = bI._3
400400 let bA = bI._4
401401 let bL = if (if (if ((W == bF))
402402 then (bH != "")
403403 else false)
404404 then (bG != "")
405405 else false)
406406 then true
407407 else false
408408 if (if (bL)
409409 then (W != bF)
410410 else false)
411411 then throw("You cannot do this action")
412412 else {
413413 let bM = C(aq(W, Y))
414414 if (if (if ((bM != 0))
415415 then (height >= bM)
416416 else false)
417417 then !(bL)
418418 else false)
419419 then throw("Sale ended.")
420420 else {
421421 let bN = (W == bF)
422422 let bO = C("total_nft_issued")
423423 let bP = b(Z(bF, Y))
424424 if ((bP == ""))
425425 then throw("Art doesn't exist")
426426 else {
427427 let bQ = E(ah(bF, Y))
428428 let bR = C(ag(bF, Y))
429429 let bm = if (bN)
430430 then P
431431 else C(ap(bF, Y))
432432 let bl = if (bN)
433433 then toBase58String(t)
434434 else b(ar(bF, Y))
435435 let bS = C(ae(bF, Y))
436436 if (if (if (!(bL))
437437 then !(bN)
438438 else false)
439439 then if (if ((0 >= bm))
440440 then true
441441 else !(bQ))
442442 then true
443443 else (0 >= bS)
444444 else false)
445445 then throw("Art not for sale")
446446 else if (if (if (!(bL))
447447 then bN
448448 else false)
449449 then (0 >= bS)
450450 else false)
451451 then throw("Max issuable not set")
452452 else {
453453 let aY = aO(bF)
454454 if (if (bL)
455455 then (aY != "")
456456 else false)
457457 then throw(aY)
458458 else {
459459 let bt = ((((((("bid_" + Y) + "_") + bF) + "_") + bH) + "_") + bG)
460460 let bT = if (bL)
461461 then bs(bt)
462462 else bk(ba, bl, bm)
463463 let bc = bT._1
464464 let bf = bT._2
465465 let bU = valueOrElse(getString(h, at(bF)), g)
466466 let bV = valueOrElse(getInteger(h, av(bF)), 0)
467467 let bW = valueOrElse(getString(h, aw(bF)), g)
468468 let bX = valueOrElse(getInteger(h, ax(bF)), 0)
469469 let bY = D(bF)
470470 let bZ = fraction(bc, F, 100)
471471 let ca = if (if (if ((bU != g))
472472 then (bV > 0)
473473 else false)
474474 then (height > bY)
475475 else false)
476476 then fraction(bc, bV, 10000)
477477 else 0
478478 let cb = if (if (if ((bW != g))
479479 then (bX > 0)
480480 else false)
481481 then (height > bY)
482482 else false)
483483 then fraction(bc, bX, 10000)
484484 else 0
485485 let cc = (bc - bZ)
486486 if ((bR == bS))
487487 then throw("Art sold out")
488488 else {
489489 let cd = (bR + 1)
490490 let ce = ((((((((("Creator: " + bF) + ",
491491 ArtID: ") + Y) + ",
492492 Artwork name: ") + bP) + ",
493493 Issue: ") + toString(cd)) + "/") + toString(bS))
494494 let cf = Issue(("SA_" + toString((bO + 1))), ce, 1, 0, false)
495495 let cg = calculateAssetId(cf)
496496 let ch = if (if ((cd == bS))
497497 then true
498498 else !(bQ))
499499 then false
500500 else true
501501 let ci = if (if (if ((W == bF))
502502 then (bH != "")
503503 else false)
504504 then (bG != "")
505505 else false)
506506 then addressFromStringValue(bH)
507507 else ba.caller
508508 let cj = if (!(isDefined(bf)))
509509 then "WAVES"
510510 else toBase58String(value(bf))
511511 let bu = b((bt + "_OPEN"))
512512 let ck = DeleteEntry((bt + "_OPEN"))
513513 let cl = StringEntry((bt + "_CLOSED"), ((bu + "_") + toString(bK)))
514514 let cm = ((((((("art_sold_" + toString(cd)) + "_of_") + toString(bS)) + "_") + Y) + "_") + bF)
515515 let cn = if (!(bL))
516516 then ((((((((((W + "_") + toString(bK)) + "_") + bJ) + "_") + toString(bm)) + "_") + bl) + "_") + toBase58String(cg))
517517 else ((((((((((toString(ci) + "_") + toString(bK)) + "_") + bJ) + "_") + toString(bc)) + "_") + cj) + "_") + toBase58String(cg))
518518 let co = StringEntry(cm, cn)
519519 let cp = if ((ca != 0))
520520 then (bZ - ca)
521521 else bZ
522522 let cq = bD(t)
523523 if ((cq == cq))
524524 then {
525525 let cr = if ((bf != t))
526526 then invoke(Address(fromBase58String(j)), "swap", [m, 1], [AttachedPayment(bf, cp)])
527527 else unit
528528 if ((cr == cr))
529529 then {
530530 let cs = bD(t)
531531 if ((cs == cs))
532532 then {
533533 let ct = if ((ca != 0))
534534 then [ScriptTransfer(Address(fromBase58String(g)), if ((bf == t))
535535 then (bZ - ca)
536536 else (cs - cq), t), ScriptTransfer(Address(fromBase58String(bU)), ca, bf)]
537537 else [ScriptTransfer(Address(fromBase58String(g)), if ((bf == t))
538538 then bZ
539539 else (cs - cq), t)]
540540 let cu = if ((cb != 0))
541541 then [ScriptTransfer(Address(fromBase58String(bW)), cb, bf), ScriptTransfer(Address(fromBase58String(bF)), (cc - cb), bf)]
542542 else [ScriptTransfer(Address(fromBase58String(bF)), cc, bf)]
543543 let cv = if (bA)
544544 then [ScriptTransfer(Address(fromBase58String(W)), 0, unit)]
545545 else nil
546546 let cw = ((([IntegerEntry(ag(bF, Y), cd), StringEntry(("nft_" + toBase58String(cg)), cm), IntegerEntry("total_nft_issued", (bO + 1)), IntegerEntry(aq(bF, Y), 0), BooleanEntry(ah(bF, Y), ch), cf, ScriptTransfer(ci, 1, cg)] ++ ct) ++ cu) ++ cv)
547547 if (bL)
548548 then [co, cl, ck] :: cw
549549 else co :: cw
550550 }
551551 else throw("Strict value is not equal to itself.")
552552 }
553553 else throw("Strict value is not equal to itself.")
554554 }
555555 else throw("Strict value is not equal to itself.")
556556 }
557557 }
558558 }
559559 }
560560 }
561561 }
562562 }
563563
564564
565565 func cx (cy) = {
566566 let bi = cy
567567 if ($isInstanceOf(bi, "String"))
568568 then {
569569 let cz = bi
570570 cz
571571 }
572572 else throw("Sponsored Public Key String expected")
573573 }
574574
575575
576576 @Callable(cA)
577577 func setConf (c,cB) = {
578578 let W = toString(cA.caller)
579579 if (containsElement([A, toString(this)], W))
580580 then if (contains(c, "conf_"))
581581 then [StringEntry(c, cB)]
582582 else throw("Entries starting with conf_ only")
583583 else throw("You are not allowed to change this")
584584 }
585585
586586
587587
588588 @Callable(ba)
589589 func addArtwork (aU,aV,aW,cC,aF,aJ,aG,aK,aH,cD,aX,bz) = {
590590 let cE = by(ba, bz)
591591 let Y = cE._1
592592 let W = cE._2
593593 let bK = cE._3
594594 let bA = cE._4
595595 let cF = aQ(aH, aK)
596596 let aS = cF._1
597597 let aT = cF._2
598598 let cG = aR(W, aF, aG, aS, aJ, aT, aU, aV, aW, aX)
599599 if ((cG != ""))
600600 then throw("Something went wrong!")
601601 else {
602602 let cH = (D((W + "_free_drops")) > 0)
603603 let cI = if (cH)
604604 then $Tuple2(0, t)
605605 else bd(ba)
606606 let bc = cI._1
607607 let bf = cI._2
608608 if (!(isDefined(bc)))
609609 then throw("Something went wrong")
610610 else {
611611 let cJ = if (cH)
612612 then invoke(i, "useFreeDrop", [W], nil)
613613 else unit
614614 if ((cJ == cJ))
615615 then {
616616 let cv = if (bA)
617617 then [ScriptTransfer(Address(fromBase58String(W)), 0, unit)]
618618 else nil
619619 ([IntegerEntry(X(W, Y), bK), StringEntry(Z(W, Y), aU), StringEntry(aa(W, Y), aV), StringEntry(ab(W, Y), aF), StringEntry(ad(W, Y), aG), StringEntry(ac(W, Y), aJ), StringEntry(ai(W, Y), aT), StringEntry(aj(W, Y), aS), StringEntry(al(W, Y), cC), StringEntry(ak(W, Y), aW), IntegerEntry(ae(W, Y), 0), IntegerEntry(ag(W, Y), 0), BooleanEntry(ah(W, Y), false), StringEntry(an(W, Y), cD), IntegerEntry(ao(W, Y), aX), ScriptTransfer(Address(fromBase58String(g)), (bc / 2), t), ScriptTransfer(k, (bc / 2), t)] ++ cv)
620620 }
621621 else throw("Strict value is not equal to itself.")
622622 }
623623 }
624624 }
625625
626626
627627
628628 @Callable(ba)
629629 func updateArtwork (az,aU,aV,aW,cC,aF,aJ,aG,aK,aH,cD,aX,bz) = if (!(I))
630630 then throw(J)
631631 else {
632632 let cK = by(ba, bz)
633633 let bJ = cK._1
634634 let W = cK._2
635635 let bK = cK._3
636636 let bA = cK._4
637637 let cL = aQ(aH, aK)
638638 let aS = cL._1
639639 let aT = cL._2
640640 let cG = aR(W, aF, aG, aS, aJ, aT, aU, aV, aW, aX)
641641 if ((cG != ""))
642642 then throw("Something went wrong!")
643643 else {
644644 let cM = b(Z(W, az))
645645 if ((cM == ""))
646646 then throw("Entry not found")
647647 else {
648648 let cN = b(as(W, az))
649649 if ((cN == "ILLEGAL"))
650650 then throw("Cannot update ILLEGAL artwork")
651651 else if (!(bg(W, az)))
652652 then {
653653 let cv = if (bA)
654654 then [ScriptTransfer(Address(fromBase58String(W)), 0, unit)]
655655 else nil
656656 ([StringEntry(Z(W, az), aU), StringEntry(aa(W, az), aV), StringEntry(ab(W, az), aF), StringEntry(ad(W, az), aG), StringEntry(ac(W, az), aJ), StringEntry(aj(W, az), aS), StringEntry(ai(W, az), aT), StringEntry(ak(W, az), aW), StringEntry(al(W, az), cC), StringEntry(an(W, az), cD), IntegerEntry(ao(W, az), aX)] ++ cv)
657657 }
658658 else throw("Already minted")
659659 }
660660 }
661661 }
662662
663663
664664
665665 @Callable(ba)
666666 func flagArtwork (Y,cO,cN,cP) = {
667667 let cQ = bC(ba)
668668 let bJ = cQ._1
669669 let W = cQ._2
670- if (containsElement([A, toString(this)], W))
670+ if (containsElement([A, toString(this), toString(k)], W))
671671 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cN))
672672 then [StringEntry(as(cO, Y), cN), StringEntry(am(cO, Y), cP)]
673673 else throw(("Unknow status " + cN))
674674 else throw("You are not allowed")
675675 }
676676
677677
678678
679679 @Callable(ba)
680680 func deleteArtwork (Y,cO) = {
681681 let cR = bC(ba)
682682 let bJ = cR._1
683683 let W = cR._2
684684 let bh = if (containsElement([A, toString(this)], W))
685685 then cO
686686 else W
687687 let cM = valueOrErrorMessage(b(Z(bh, Y)), "No art matching for this address")
688688 if ((cM == ""))
689689 then throw("No art matching for this address")
690690 else {
691691 let aB = b(ay(bh, Y))
692692 let cS = if ((aB != ""))
693693 then b(af(bh, Y))
694694 else ""
695695 let cT = if ((cS == ""))
696696 then nil
697697 else [DeleteEntry(aC(bh, cS))]
698698 let cU = ([DeleteEntry(X(bh, Y)), DeleteEntry(Z(bh, Y)), DeleteEntry(aa(bh, Y)), DeleteEntry(ab(bh, Y)), DeleteEntry(ad(bh, Y)), DeleteEntry(ac(bh, Y)), DeleteEntry(ai(bh, Y)), DeleteEntry(aj(bh, Y)), DeleteEntry(al(bh, Y)), DeleteEntry(ak(bh, Y)), DeleteEntry(ae(bh, Y)), DeleteEntry(af(bh, Y)), DeleteEntry(ag(bh, Y)), DeleteEntry(ah(bh, Y)), DeleteEntry(as(bh, Y)), DeleteEntry(ap(bh, Y)), DeleteEntry(ar(bh, Y)), DeleteEntry(aA(aB)), DeleteEntry(aq(bh, Y)), DeleteEntry(am(bh, Y)), DeleteEntry(an(bh, Y)), DeleteEntry(ao(bh, Y))] ++ cT)
699699 if (!(bg(bh, Y)))
700700 then if (!(I))
701701 then throw(J)
702702 else cU
703703 else if (containsElement([A, toString(this)], W))
704704 then cU
705705 else throw("Art already minted, you cannot delete it")
706706 }
707707 }
708708
709709
710710
711711 @Callable(ba)
712712 func sellArtwork (Y,bq,cV,bf,bM,bz) = {
713713 let cW = by(ba, bz)
714714 let bJ = cW._1
715715 let W = cW._2
716716 let bK = cW._3
717717 let bA = cW._4
718718 let bP = b(Z(W, Y))
719719 if ((bP == ""))
720720 then throw("This art doesn't match your account")
721721 else {
722722 let cN = b(as(W, Y))
723723 if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cN))
724724 then throw("Flagged artwork")
725725 else {
726726 let cX = C(("current_bidamount_" + Y))
727727 if ((0 > bM))
728728 then throw("Negative end")
729729 else if (if ((bM > 0))
730730 then if ((cV != 1))
731731 then true
732732 else (bq != 0)
733733 else false)
734734 then throw("Timed offer only allowed for unique edition and offer only")
735735 else {
736736 let cY = if ((bM == 0))
737737 then 0
738738 else height
739739 if (!(bo(bf)))
740740 then throw("Something went wrong!")
741741 else if (!(bp(bq)))
742742 then throw("Something went wrong!")
743743 else {
744744 let aY = aO(W)
745745 if ((aY != ""))
746746 then throw(aY)
747747 else {
748748 let bR = C(ag(W, Y))
749749 let bS = C(ae(W, Y))
750750 if ((cV > 100))
751751 then throw("100 editions max per artwork")
752752 else if (if ((bR != 0))
753753 then (bR == bS)
754754 else false)
755755 then throw("Max edition reached.")
756756 else if (if ((bR > 0))
757757 then (bS != cV)
758758 else false)
759759 then throw("Cannot change maximum issuable anymore")
760760 else if (if ((cX > 0))
761761 then (bS != cV)
762762 else false)
763763 then throw("Cannot change maximum issuable with active orders")
764764 else {
765765 let ch = if (if ((bq > 0))
766766 then (cV > 0)
767767 else false)
768768 then true
769769 else false
770770 let cv = if (bA)
771771 then [ScriptTransfer(Address(fromBase58String(W)), 0, unit)]
772772 else nil
773773 ([BooleanEntry(ah(W, Y), ch), IntegerEntry(ap(W, Y), bq), IntegerEntry(ae(W, Y), cV), StringEntry(ar(W, Y), bf), IntegerEntry(aq(W, Y), (cY + bM))] ++ cv)
774774 }
775775 }
776776 }
777777 }
778778 }
779779 }
780780 }
781781
782782
783783
784784 @Callable(ba)
785785 func buyArtwork (Y,bF) = bE(ba, Y, bF, "", "", "")
786786
787787
788788
789789 @Callable(ba)
790790 func setBid (Y,bF) = {
791791 let cZ = bC(ba)
792792 let bJ = cZ._1
793793 let W = cZ._2
794794 let bK = cZ._3
795795 let da = aZ(ba)
796796 let bb = da._1
797797 let bc = da._2
798798 let bf = if (!(isDefined(bb.assetId)))
799799 then "WAVES"
800800 else toBase58String(value(bb.assetId))
801801 let bM = C(aq(bF, Y))
802802 if (if ((bM != 0))
803803 then (height >= bM)
804804 else false)
805805 then throw("Sale ended.")
806806 else {
807807 let cX = C(("current_bidamount_" + Y))
808808 if (!(bo(bf)))
809809 then throw("asset not accepted")
810810 else if (!(bp(bc)))
811811 then throw("Wrong min sell")
812812 else {
813813 let bR = C(ag(bF, Y))
814814 let bS = C(ae(bF, Y))
815815 if ((0 >= bS))
816816 then throw("No max edition set for this artwork")
817817 else if ((bR >= bS))
818818 then throw("Sold out, you cannot bid")
819819 else [StringEntry((((((((("bid_" + Y) + "_") + bF) + "_") + W) + "_") + bJ) + "_OPEN"), ((((bf + "_") + toString(bc)) + "_") + toString(bK))), IntegerEntry(("current_bidamount_" + Y), (cX + 1))]
820820 }
821821 }
822822 }
823823
824824
825825
826826 @Callable(ba)
827827 func acceptBid (Y,bF,bG,bH,bz) = bE(ba, Y, bF, bG, bH, bz)
828828
829829
830830
831831 @Callable(ba)
832832 func cancelBid (Y,bF,bG,bH) = {
833833 let db = bC(ba)
834834 let bJ = db._1
835835 let W = db._2
836836 let bK = db._3
837837 if (if ((W != bH))
838838 then (W != bF)
839839 else false)
840840 then throw("You cannot do this action")
841841 else {
842842 let dc = if ((W == bF))
843843 then bH
844844 else W
845845 let cX = C(("current_bidamount_" + Y))
846846 let bt = ((((((("bid_" + Y) + "_") + bF) + "_") + bH) + "_") + bG)
847847 let bu = b((bt + "_OPEN"))
848848 if ((bu == ""))
849849 then throw("Bid not found")
850850 else {
851851 let bv = split(bu, "_")
852852 let bf = br(bv[0])
853853 let dd = "CANCELED"
854854 [DeleteEntry((bt + "_OPEN")), StringEntry(((bt + "_") + dd), ((bu + "_") + toString(bK))), IntegerEntry(("current_bidamount_" + Y), (cX - 1)), ScriptTransfer(Address(fromBase58String(dc)), parseIntValue(bv[1]), bf)]
855855 }
856856 }
857857 }
858858
859859
860860 @Verifier(de)
861861 func df () = {
862862 let bi = de
863863 if ($isInstanceOf(bi, "InvokeScriptTransaction"))
864864 then {
865865 let dg = bi
866866 if (if (if (if ((dg.function == "addArtwork"))
867867 then (dg.dApp == this)
868868 else false)
869869 then (dg.fee == 500000)
870870 else false)
871871 then (dg.feeAssetId == unit)
872872 else false)
873873 then sigVerify(de.bodyBytes, de.proofs[0], fromBase58String(cx(dg.args[11])))
874874 else if (if (if (if ((dg.function == "updateArtwork"))
875875 then (dg.dApp == this)
876876 else false)
877877 then (dg.fee == 500000)
878878 else false)
879879 then (dg.feeAssetId == unit)
880880 else false)
881881 then sigVerify(de.bodyBytes, de.proofs[0], fromBase58String(cx(dg.args[12])))
882882 else if (if (if (if ((dg.function == "sellArtwork"))
883883 then (dg.dApp == this)
884884 else false)
885885 then (dg.fee == 500000)
886886 else false)
887887 then (dg.feeAssetId == unit)
888888 else false)
889889 then sigVerify(de.bodyBytes, de.proofs[0], fromBase58String(cx(dg.args[5])))
890890 else if (if (if (if ((dg.function == "acceptBid"))
891891 then (dg.dApp == this)
892892 else false)
893893 then (dg.fee == 500000)
894894 else false)
895895 then (dg.feeAssetId == unit)
896896 else false)
897897 then sigVerify_128Kb(de.bodyBytes, de.proofs[0], fromBase58String(cx(dg.args[4])))
898898 else sigVerify(de.bodyBytes, de.proofs[0], de.senderPublicKey)
899899 }
900900 else sigVerify(de.bodyBytes, de.proofs[0], de.senderPublicKey)
901901 }
902902

github/deemru/w8io/3ef1775 
183.65 ms