tx · Hmjh4UhnrxPUBCgF1D96MBPZBfQ1Qo2ihWgUm5N8XAgY

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.02400000 Waves

2023.01.19 10:13 [2411493] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "Hmjh4UhnrxPUBCgF1D96MBPZBfQ1Qo2ihWgUm5N8XAgY", "fee": 2400000, "feeAssetId": null, "timestamp": 1674112419509, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "n5d9rbQt122ZiPjb6xFXUVpU5FvsRUp4Nn3jsRcgkbRFjM2rm3XtqDY3DkxSm189kpKoUWEnMDzRsXFroe5uZqd" ], "script": "base64:BgJfCAISBAoCCAgSEAoOCAgICAgICAgICAgIAQgSDwoNCAgICAgICAgICAgBCBIGCgQICAgIEgQKAggIEggKBggBAQgBCBIECgIICBIECgIICBIGCgQICAgIEgYKBAgICAhOAAdWRVJTSU9OAgUxLjEuOQEOZ2V0U3RyaW5nQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQNrZXkCAAAIdW5pdFRlc3QHAAlvcmFjbGVGZWUJAQV2YWx1ZQEJAKYIAQkBDmdldFN0cmluZ0J5S2V5AQIPY29uZl9vcmFjbGVfZmVlAAhzaWduRGFwcAkBBXZhbHVlAQkApggBCQEOZ2V0U3RyaW5nQnlLZXkBAhFjb25mX3NpZ253ZWJfZGFwcAALZmVlUmVjZWl2ZXIJAQ5nZXRTdHJpbmdCeUtleQECEWNvbmZfZmVlX3JlY2VpdmVyAAh1c2VyRGFwcAMFCHVuaXRUZXN0CQEFdmFsdWUBCQCmCAECIzNNdDRSR01FeWpTV1lBb2NUUHFkNTV3ZEhRUUIzUFUyVUNtCQEFdmFsdWUBCQCmCAEJAQ5nZXRTdHJpbmdCeUtleQECD2NvbmZfdXNlcnNfZGFwcAANd2hpdGVsaXN0RGFwcAkBBXZhbHVlAQkApggBCQEOZ2V0U3RyaW5nQnlLZXkBAhNjb25mX3doaXRlbGlzdF9kYXBwAAtzaWduQXNzZXRJZAkA2QQBCQEOZ2V0U3RyaW5nQnlLZXkBAhhjb25mX2FjY2VwdGVkX2Fzc2V0X1NJR04AC3VzZG5Bc3NldElkCQDZBAEJAQ5nZXRTdHJpbmdCeUtleQECGGNvbmZfYWNjZXB0ZWRfYXNzZXRfVVNETgALdXNkdEFzc2V0SWQJANkEAQkBDmdldFN0cmluZ0J5S2V5AQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0RUAAx3YXZlc0Fzc2V0SWQBAAAFY2hyaXMJAQ5nZXRTdHJpbmdCeUtleQECDGNvbmZfYWRtaW5fMQEZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUJb3JhY2xlRmVlBQNrZXkCH0ludGVnZXIgdW5kZWZpbmUgb3IgMCBpbiBvcmFjbGUBD2dldEludGVnZXJCeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAAQ5jaGVja1doaXRlbGlzdAEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFDXdoaXRlbGlzdERhcHAFA2tleQAAAQ9nZXRCb29sZWFuQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQNrZXkHAAdzaWduQ3V0AAcAC3VzZG5XYXZlQ3V0AAoADmRlZmF1bHRMaWNlbmNlCQEOZ2V0U3RyaW5nQnlLZXkBAhRjb25mX2RlZmF1bHRfbGljZW5jZQASZGVmYXVsdEhhc2hMaWNlbmNlCQEOZ2V0U3RyaW5nQnlLZXkBAhljb25mX2RlZmF1bHRfbGljZW5jZV9oYXNoAAtkYXBwUnVubmluZwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQh1c2VyRGFwcAIUY29uZl9kYXBwX2lzX3J1bm5pbmcGAA5tYWludGVuYW5jZU1TRwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQh1c2VyRGFwcAIUY29uZl9tYWludGVuYW5jZV9tc2cCAAANdXNlclN1c3BlbmRlZAIJU1VTUEVOREVEAAt1c2VyUmVtb3ZlZAIHUkVNT1ZFRAAQdXNlclVucmVnaXN0ZXJlZAIMVU5SRUdJU1RFUkVEAAt1c2VyQWxsb3dlZAIHQUxMT1dFRAAZY3VycmVudENlcnRpZmljYXRpb25QcmljZQkBGWdldEludGVnZXJCeUtleUZyb21PcmFjbGUBCQCsAgICEmNlcnRpZmljYXRpb25fZmVlXwkA2AQBBQtzaWduQXNzZXRJZAETZ2V0QXJ0d29ya1JveWFsdGllcwEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQDoBwEUY2hlY2tTaWduQ2VydGlmaWNhdGUDBnNpZ25JRAVPd25lcgpzaGEyNTZIYXNoBAckbWF0Y2gwCQCdCAIFCHNpZ25EYXBwCQCsAgIJAKwCAgkArAICAghkYXRhX2ZjXwUGc2lnbklEAgFfBQVPd25lcgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDADCQEIY29udGFpbnMCBQFhBQpzaGEyNTZIYXNoBgcHAQt2YWxpZGF0ZUNJRAEDY2lkAwkBCGNvbnRhaW5zAgUDY2lkAgEvAwMJAGYCAEwJALECAQUDY2lkCQAAAgkAsQIBCQCRAwIJALUJAgUDY2lkAgEvAAAAOwcJAGYCABAJALECAQkAkQMCCQC1CQIFA2NpZAIBLwABBwcBDHZhbGlkYXRlSGFzaAEEaGFzaAkAAAIJALECAQUEaGFzaABAAQ1rZXlVc2VyU3RhdHVzAQZjYWxsZXIJAKwCAgIMdXNlcl9zdGF0dXNfBQZjYWxsZXIBB2tleURhdGUCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X2RhdGVfBQVhcnRJZAIBXwUGY2FsbGVyAQdrZXlOYW1lAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF9uYW1lXwUFYXJ0SWQCAV8FBmNhbGxlcgEHa2V5RGVzYwIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfZGVzY18FBWFydElkAgFfBQZjYWxsZXIBDWtleURpc3BsYXlDaWQCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIQYXJ0X2Rpc3BsYXlfY2lkXwUFYXJ0SWQCAV8FBmNhbGxlcgENa2V5RXhwb3J0SGFzaAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAhBhcnRfZXhwb3J0X2hhc2hfBQVhcnRJZAIBXwUGY2FsbGVyAQxrZXlFeHBvcnRDaWQCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIPYXJ0X2V4cG9ydF9jaWRfBQVhcnRJZAIBXwUGY2FsbGVyAQprZXlNYXhNaW50AgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICDGFydF9tYXhtaW50XwUFYXJ0SWQCAV8FBmNhbGxlcgEJa2V5U2lnbklEAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICC2FydF9zaWduaWRfBQVhcnRJZAIBXwUGY2FsbGVyAQlrZXlJc3N1ZWQCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgILYXJ0X2lzc3VlZF8FBWFydElkAgFfBQZjYWxsZXIBCWtleU9uU2FsZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgthcnRfb25zYWxlXwUFYXJ0SWQCAV8FBmNhbGxlcgEOa2V5TGljZW5jZUhhc2gCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIRYXJ0X2xpY2VuY2VfaGFzaF8FBWFydElkAgFfBQZjYWxsZXIBDWtleUxpY2VuY2VDaWQCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIQYXJ0X2xpY2VuY2VfY2lkXwUFYXJ0SWQCAV8FBmNhbGxlcgEHa2V5VGFncwIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfdGFnc18FBWFydElkAgFfBQZjYWxsZXIBB2tleVR5cGUCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X3R5cGVfBQVhcnRJZAIBXwUGY2FsbGVyAQdrZXlOb3RlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF9ub3RlXwUFYXJ0SWQCAV8FBmNhbGxlcgEKa2V5Q3Jhd2xlcgIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAhBhcnRfY3Jhd2xlcl9jaWRfBQVhcnRJZAIBXwUGY2FsbGVyAQxrZXlSb3lhbHRpZXMCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIOYXJ0X3JveWFsdGllc18FBWFydElkAgFfBQZjYWxsZXIBCGtleVByaWNlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCmFydF9wcmljZV8FBWFydElkAgFfBQZjYWxsZXIBCmtleUVuZFNhbGUCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIMYXJ0X2VuZHNhbGVfBQVhcnRJZAIBXwUGY2FsbGVyARJrZXlBc3NldElkQWNjZXB0ZWQCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgISYXJ0X2Fzc2V0QWNjZXB0ZWRfBQVhcnRJZAIBXwUGY2FsbGVyAQdrZXlGbGFnAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF9mbGFnXwUFYXJ0SWQCAV8FBmNhbGxlcgESa2V5QXJ0aXN0QWdlbnRBZGRyAQphcnRpc3RBZGRyCQCsAgICDWFydGlzdF9hZ2VudF8FCmFydGlzdEFkZHIBD2tleVByaW1hcnlTaGFyZQEKYXJ0aXN0QWRkcgkArAICAhVhcnRpc3RfYWdlbnRfcHJpbWFyeV8FCmFydGlzdEFkZHIBEWtleUhhc2hCeVR4aWRBZGRyAgZjYWxsZXIEdHhpZAkArAICCQCsAgIJAKwCAgITZ2V0X2hhc2hieXR4aWRhZGRyXwUEdHhpZAIBXwUGY2FsbGVyAQ5rZXlPd25lckJ5SGFzaAEKc2hhMjU2SGFzaAkArAICAhJnZXRfb3duZXJfYnlfaGFzaF8FCnNoYTI1Nkhhc2gBDWtleWlkQnlTaWduaWQCBmNhbGxlcgZzaWduSWQJAKwCAgkArAICCQCsAgICEmdldF9hcnRpZGJ5c2lnbmlkXwUGc2lnbklkAgFfBQZjYWxsZXIBEmtleVR4aWRCeUhhc2hPd25lcgIKc2hhMjU2SGFzaAZjYWxsZXIJAKwCAgIXZ2V0X3R4aWRfYnlfaGFzaF9vd25lcl8JANgEAQkA1BYBCQCbAwEJAKwCAgUKc2hhMjU2SGFzaAUGY2FsbGVyAQ52YWxpZGF0ZUFsbENJRAMKY2lkRGlzcGxheQljaWRFeHBvcnQKY2lkTGljZW5jZQMJAQEhAQkBC3ZhbGlkYXRlQ0lEAQUKY2lkRGlzcGxheQkAAgECEVdyb25nIERpc3BsYXkgQ0lEAwkBASEBCQELdmFsaWRhdGVDSUQBBQljaWRFeHBvcnQJAAIBAhBXcm9uZyBFeHBvcnQgQ0lEAwMJAQIhPQIFCmNpZExpY2VuY2UCAAkBASEBCQELdmFsaWRhdGVDSUQBBQpjaWRMaWNlbmNlBwkAAgECEVdyb25nIExpY2VuY2UgQ0lEBgEPdmFsaWRhdGVBbGxIYXNoAgxzaGEyNTZFeHBvcnQNc2hhMjU2TGljZW5jZQMJAQEhAQkBDHZhbGlkYXRlSGFzaAEFDHNoYTI1NkV4cG9ydAkAAgECGEV4cG9ydCBIYXNoIDY0IGNoYXIuIG1heAMJAQEhAQkBDHZhbGlkYXRlSGFzaAEFDXNoYTI1NkxpY2VuY2UJAAIBAhlMaWNlbmNlIEhhc2ggNjQgY2hhci4gbWF4BgEOdmFsaWRhdGVTdHJpbmcCA3N0cgNtYXgDCQAAAgkAsQIBBQNzdHIAAAkAAgECGEZpZWxkIGNhbm5vdCBiZSBpcyBlbXB0eQMJAGYCCQCxAgEFA3N0cgUDbWF4CQACAQkArAICBQNzdHICDCBpcyB0b28gbG9uZwYBDHZhbGlkYXRlVXNlcgEGY2FsbGVyAwYJAAIBBQZjYWxsZXIECnVzZXJTdGF0dXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJAQ1rZXlVc2VyU3RhdHVzAQUGY2FsbGVyBRB1c2VyVW5yZWdpc3RlcmVkAwMJAAACBQp1c2VyU3RhdHVzBRB1c2VyVW5yZWdpc3RlcmVkBgkAAAIFCnVzZXJTdGF0dXMFC3VzZXJBbGxvd2VkAi5SZWdpc3RlciB0aGlzIGFjY291bnQgZmlyc3Qgd2l0aCAiQWNjb3VudCIgdGFiAwkAAAIFCnVzZXJTdGF0dXMFDXVzZXJTdXNwZW5kZWQCEUFjY291bnQgc3VzcGVuZGVkAwkAAAIFCnVzZXJTdGF0dXMFC3VzZXJSZW1vdmVkAg9BY2NvdW50IHJlbW92ZWQCAAEKc2V0TEljZW5jZQIKY2lkTGljZW5jZQ1zaGEyNTZMaWNlbmNlBANjaWQDCQAAAgkAsQIBBQpjaWRMaWNlbmNlAAAFDmRlZmF1bHRMaWNlbmNlBQpjaWRMaWNlbmNlBARoYXNoAwkAAAIJALECAQUNc2hhMjU2TGljZW5jZQAABRJkZWZhdWx0SGFzaExpY2VuY2UFDXNoYTI1NkxpY2VuY2UJAJQKAgUDY2lkBQRoYXNoARN2YWxpZGF0ZUFydHdvcmtEYXRhCgZjYWxsZXIKY2lkRGlzcGxheQljaWRFeHBvcnQKbGljZW5jZUNJRAxzaGEyNTZFeHBvcnQLbGljZW5jZUhhc2gEbmFtZQtkZXNjcmlwdGlvbgR0YWdzCXJveWFsdGllcwQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGY2FsbGVyAwkBAiE9AgUJY2hlY2tVc2VyAgAJAAIBBQljaGVja1VzZXIDCQAAAgkAsQIBBQpjaWREaXNwbGF5AAAJAAIBAhtEaXNwbGF5IENJRCBjYW5ub3QgYmUgZW1wdHkDCQEBIQEJAQ52YWxpZGF0ZUFsbENJRAMFCmNpZERpc3BsYXkFCWNpZEV4cG9ydAUKbGljZW5jZUNJRAkAAgECEFByb2JsZW0gd2l0aCBDSUQDCQEBIQEJAQ92YWxpZGF0ZUFsbEhhc2gCBQxzaGEyNTZFeHBvcnQFC2xpY2VuY2VIYXNoCQACAQITUHJvYmxlbSB3aXRoIEhhc2hlcwMJAQEhAQkBDnZhbGlkYXRlU3RyaW5nAgUEbmFtZQBkCQACAQISMTAwIENoYXIuIG1heCBuYW1lAwkBASEBCQEOdmFsaWRhdGVTdHJpbmcCBQtkZXNjcmlwdGlvbgDoBwkAAgECGjEwMDAgQ2hhci4gbWF4IGRlc2NyaXB0aW9uAwMJAGYCAAAFCXJveWFsdGllcwYJAGYCBQlyb3lhbHRpZXMA6AcJAAIBAjNSb3lhbHRpZXMgY2Fubm90IGJlIGxlc3MgdGhhbiAwJSBvciBoaWdoZXIgdGhhbiAxMCUDCQBmAgkAkAMBCQC1CQIFBHRhZ3MCASwABQkAAgECCzUgdGFncyBtYXguAgABCWlzUGF5bWVudAEBaQMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhNObyBwYXltZW50IGF0dGFjaGVkBAdwYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEBmFtb3VudAkBBXZhbHVlAQgFB3BheW1lbnQGYW1vdW50CQCUCgIFB3BheW1lbnQFBmFtb3VudAEPdmFsaWRhdGVQYXltZW50AQFpBAskdDA4OTEwODk0NgkBCWlzUGF5bWVudAEFAWkEB3BheW1lbnQIBQskdDA4OTEwODk0NgJfMQQGYW1vdW50CAULJHQwODkxMDg5NDYCXzIEB2Fzc2V0SWQDAwkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAAACCAUHcGF5bWVudAdhc3NldElkBQtzaWduQXNzZXRJZAcIBQdwYXltZW50B2Fzc2V0SWQJAAIBAitPbmx5IFNJR04gdG9rZW4gYWNjZXB0ZWQgYXMgdHJhbnNhY3Rpb24gZmVlAwkBAiE9AgUGYW1vdW50BRljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlCQACAQkArAICAhlQYXltZW50IGFtb3VudCBzaG91bGQgYmUgCQCkAwEFGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UJAJQKAgUGYW1vdW50BQdhc3NldElkAQtpc0FydE1pbnRlZAIJYWRkclRvVXNlBWFydElkBAckbWF0Y2gwCQCaCAIFBHRoaXMJAQlrZXlJc3N1ZWQCBQlhZGRyVG9Vc2UFBWFydElkAwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAMJAQIhPQIFAWIAAAYHBwEUdmFsaWRhdGVQcmljZUFzc2V0SWQDAWkMcHJpY2VBc3NldElkDGFydHdvcmtQcmljZQQLJHQwOTUzNDk1NzAJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAULJHQwOTUzNDk1NzACXzEEBmFtb3VudAgFCyR0MDk1MzQ5NTcwAl8yBAdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAUEdW5pdAMDCQBmAgkAsQIBBQxwcmljZUFzc2V0SWQAAAkAAAIJANgEAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAUMcHJpY2VBc3NldElkBwgFB3BheW1lbnQHYXNzZXRJZAkAAgECDldyb25nIGFzc2V0IGlkAwMJAAACBQdhc3NldElkBQR1bml0CQECIT0CBQxwcmljZUFzc2V0SWQCAAcJAAIBAg5Xcm9uZyBhc3NldCBpZAMJAQIhPQIFDGFydHdvcmtQcmljZQUGYW1vdW50CQACAQITUGF5bWVudCBkb24ndCBtYXRjaAkAlAoCBQZhbW91bnQFB2Fzc2V0SWQBEGFjY2VwdGVkQXNzZXRJZHMBB2Fzc2V0SWQDAwMDAwkBAiE9AgUHYXNzZXRJZAkA2AQBBQtzaWduQXNzZXRJZAkBAiE9AgUHYXNzZXRJZAkA2AQBBQx3YXZlc0Fzc2V0SWQHCQECIT0CBQdhc3NldElkAgVXQVZFUwcJAQIhPQIFB2Fzc2V0SWQJANgEAQULdXNkbkFzc2V0SWQHCQECIT0CBQdhc3NldElkCQDYBAEFC3VzZHRBc3NldElkBwkAAgECJk9ubHkgU0lHTiwgVVNETixVU0RUIG9yIFdBVkVTIGFjY2VwdGVkBgEPdmFsaWRhdGVNaW5TZWxsAgdhc3NldElkBXByaWNlBAxtaW5TZWxsV2F2ZXMDBQh1bml0VGVzdAAKCQEZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQECDndhdmVzX21pbl9zZWxsBAttaW5TZWxsVXNkbgDAhD0EC21pblNlbGxTaWduAwUIdW5pdFRlc3QAAQkAaAIFGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UAAgMDAwMDAwkAAAIFB2Fzc2V0SWQJANgEAQULdXNkbkFzc2V0SWQJAGYCBQttaW5TZWxsVXNkbgUFcHJpY2UHCQECIT0CBQVwcmljZQAABwYDAwkAAAIFB2Fzc2V0SWQJANgEAQULdXNkdEFzc2V0SWQJAGYCBQttaW5TZWxsVXNkbgUFcHJpY2UHCQECIT0CBQVwcmljZQAABwYDAwkAAAIFB2Fzc2V0SWQJANgEAQULc2lnbkFzc2V0SWQJAGYCBQttaW5TZWxsU2lnbgUFcHJpY2UHCQECIT0CBQVwcmljZQAABwYDAwMJAAACBQdhc3NldElkCQDYBAEFDHdhdmVzQXNzZXRJZAYJAAACBQdhc3NldElkAgVXQVZFUwkAZgIFDG1pblNlbGxXYXZlcwUFcHJpY2UHCQECIT0CBQVwcmljZQAABwkAAgECGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQYBDWdldEJpZEFzc2V0SWQBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUHYXNzZXRJZAEWZ2V0UHJpY2VBc3NldElkRnJvbUJpZAEKYmlkRGF0YUtleQQHYmlkRGF0YQkBDmdldFN0cmluZ0J5S2V5AQkArAICBQpiaWREYXRhS2V5AgVfT1BFTgMJAAACBQdiaWREYXRhAgAJAAIBAg1CaWQgbm90IGZvdW5kBApiaWREYXRhQXJyCQC1CQIFB2JpZERhdGECAV8ECWJpZEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmJpZERhdGFBcnIAAQQKYmlkQXNzZXRJZAkBDWdldEJpZEFzc2V0SWQBCQCRAwIFCmJpZERhdGFBcnIAAAMJAGcCAAAFCWJpZEFtb3VudAkAAgECDFdyb25nIGFtb3VudAkAlAoCBQliaWRBbW91bnQFCmJpZEFzc2V0SWQBFWlkQ2FsbGVyRGF0ZVNwb25zb3JlZAIBaQZwdWJLZXkDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cEBmNhbGxlcgMDCQAAAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQClCAEFBHRoaXMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAHCQClCAEJAKcIAQkA2QQBBQZwdWJLZXkJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQTZ2V0X3Nwb25zb3JlZF93YXZlcwMJAQIhPQIFBnB1YktleQIACQD8BwQFDXdoaXRlbGlzdERhcHACCXVzZUZyZWVUeAkAzAgCCQClCAEJAKcIAQkA2QQBBQZwdWJLZXkFA25pbAUDbmlsBQR1bml0AwkAAAIFE2dldF9zcG9uc29yZWRfd2F2ZXMFE2dldF9zcG9uc29yZWRfd2F2ZXMJAJUKAwkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBQZjYWxsZXIIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQxpZENhbGxlckRhdGUBAWkDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cJAJUKAwkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMIBQlsYXN0QmxvY2sJdGltZXN0YW1wAQdidXlNaW50BQFpBWFydElkBmlzc3VlcgViaWRJZAhiaWRPd25lcgQNJHQwMTI2OTAxMjc0OQkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMTI2OTAxMjc0OQJfMQQGY2FsbGVyCAUNJHQwMTI2OTAxMjc0OQJfMgQEZGF0ZQgFDSR0MDEyNjkwMTI3NDkCXzMEBWlzQmlkAwMDCQAAAgUGY2FsbGVyBQZpc3N1ZXIJAQIhPQIFCGJpZE93bmVyAgAHCQECIT0CBQViaWRJZAIABwYHBAhibG9ja0VuZAkBD2dldEludGVnZXJCeUtleQEJAQprZXlFbmRTYWxlAgUGY2FsbGVyBQVhcnRJZAMDAwkBAiE9AgUIYmxvY2tFbmQAAAkAZwIFBmhlaWdodAUIYmxvY2tFbmQHCQEBIQEFBWlzQmlkBwkAAgECC1NhbGUgZW5kZWQuBA5jYWxsZXJJc0lzc3VlcgkAAAIFBmNhbGxlcgUGaXNzdWVyBAh0b3RhbE5GVAkBD2dldEludGVnZXJCeUtleQECEHRvdGFsX25mdF9pc3N1ZWQEBnNpZ25JRAkBDmdldFN0cmluZ0J5S2V5AQkBCWtleVNpZ25JRAIFBmlzc3VlcgUFYXJ0SWQEC2FydHdvcmtOYW1lCQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5TmFtZQIFBmlzc3VlcgUFYXJ0SWQDCQAAAgULYXJ0d29ya05hbWUCAAkAAgECEUFydCBkb2Vzbid0IGV4aXN0BAhpc09uU2FsZQkBD2dldEJvb2xlYW5CeUtleQEJAQlrZXlPblNhbGUCBQZpc3N1ZXIFBWFydElkBAphbW91bnRTb2xkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCWtleUlzc3VlZAIFBmlzc3VlcgUFYXJ0SWQEDGFydHdvcmtQcmljZQMFDmNhbGxlcklzSXNzdWVyCQBoAgUZY3VycmVudENlcnRpZmljYXRpb25QcmljZQACCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCGtleVByaWNlAgUGaXNzdWVyBQVhcnRJZAQMcHJpY2VBc3NldElkAwUOY2FsbGVySXNJc3N1ZXIJANgEAQULc2lnbkFzc2V0SWQJAQ5nZXRTdHJpbmdCeUtleQEJARJrZXlBc3NldElkQWNjZXB0ZWQCBQZpc3N1ZXIFBWFydElkBAptYXhDYW5TZWxsCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCmtleU1heE1pbnQCBQZpc3N1ZXIFBWFydElkAwMDCQEBIQEFBWlzQmlkCQEBIQEFDmNhbGxlcklzSXNzdWVyBwMDCQBnAgAABQxhcnR3b3JrUHJpY2UGCQEBIQEFCGlzT25TYWxlBgkAZwIAAAUKbWF4Q2FuU2VsbAcJAAIBAhBBcnQgbm90IGZvciBzYWxlAwMDCQEBIQEFBWlzQmlkBQ5jYWxsZXJJc0lzc3VlcgcJAGcCAAAFCm1heENhblNlbGwHCQACAQIUTWF4IGlzc3VhYmxlIG5vdCBzZXQECWNoZWNrVXNlcgkBDHZhbGlkYXRlVXNlcgEFBmlzc3VlcgMDBQVpc0JpZAkBAiE9AgUJY2hlY2tVc2VyAgAHCQACAQUJY2hlY2tVc2VyBApiaWREYXRhS2V5CQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FBWFydElkAgFfBQZpc3N1ZXICAV8FCGJpZE93bmVyAgFfBQViaWRJZAQNJHQwMTQ0NTIxNDYxOQMFBWlzQmlkCQEWZ2V0UHJpY2VBc3NldElkRnJvbUJpZAEFCmJpZERhdGFLZXkJARR2YWxpZGF0ZVByaWNlQXNzZXRJZAMFAWkFDHByaWNlQXNzZXRJZAUMYXJ0d29ya1ByaWNlBAZhbW91bnQIBQ0kdDAxNDQ1MjE0NjE5Al8xBAdhc3NldElkCAUNJHQwMTQ0NTIxNDYxOQJfMgQFYWdlbnQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJARJrZXlBcnRpc3RBZ2VudEFkZHIBBQZpc3N1ZXIFC2ZlZVJlY2VpdmVyBAphZ2VudFNoYXJlCQELdmFsdWVPckVsc2UCCQCaCAIFCHVzZXJEYXBwCQEPa2V5UHJpbWFyeVNoYXJlAQUGaXNzdWVyAAAEDWlzV2hpdGVsaXN0ZWQJAQ5jaGVja1doaXRlbGlzdAEFBmlzc3VlcgQDY3V0AwkAZgIFDWlzV2hpdGVsaXN0ZWQFBmhlaWdodAAAAwkAAAIFB2Fzc2V0SWQFC3NpZ25Bc3NldElkBQdzaWduQ3V0BQt1c2RuV2F2ZUN1dAQNYW1vdW50Rm9yU2lnbgkAawMFBmFtb3VudAUDY3V0AGQEDmFtb3VudEZvckFnZW50AwMDCQECIT0CBQVhZ2VudAULZmVlUmVjZWl2ZXIJAGYCBQphZ2VudFNoYXJlAAAHCQBmAgUGaGVpZ2h0BQ1pc1doaXRlbGlzdGVkBwkAawMFBmFtb3VudAUKYWdlbnRTaGFyZQBkAAAEEGFtb3VudEZvckNyZWF0b3IJAGUCBQZhbW91bnQFDWFtb3VudEZvclNpZ24DCQAAAgUKYW1vdW50U29sZAUKbWF4Q2FuU2VsbAkAAgECDEFydCBzb2xkIG91dAQNbmV3QW1vdW50U29sZAkAZAIFCmFtb3VudFNvbGQAAQQJaXNzdWVNZXRhCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJQ3JlYXRvcjogBQZpc3N1ZXICCiwKIEFydElEOiAFBWFydElkAgssCiBTaWduSUQ6IAUGc2lnbklEAhEsCiBBcnR3b3JrIG5hbWU6IAULYXJ0d29ya05hbWUCCiwKIElzc3VlOiAJAKQDAQUNbmV3QW1vdW50U29sZAIBLwkApAMBBQptYXhDYW5TZWxsBAhpc3N1ZU5GVAkAwggFCQCsAgICA1NBXwkApAMBCQBkAgUIdG90YWxORlQAAQUJaXNzdWVNZXRhAAEAAAcEBWlkTkZUCQC4CAEFCGlzc3VlTkZUBApzZWxsU3RhdHVzAwMJAAACBQ1uZXdBbW91bnRTb2xkBQptYXhDYW5TZWxsBgkBASEBBQhpc09uU2FsZQcGBApyZWNlaXZlTkZUAwMDCQAAAgUGY2FsbGVyBQZpc3N1ZXIJAQIhPQIFCGJpZE93bmVyAgAHCQECIT0CBQViaWRJZAIABwkBEUBleHRyTmF0aXZlKDEwNjIpAQUIYmlkT3duZXIIBQFpBmNhbGxlcgQKYXNzZXRJZEJpZAMJAQEhAQkBCWlzRGVmaW5lZAEFB2Fzc2V0SWQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFB2Fzc2V0SWQEB2JpZERhdGEJAQ5nZXRTdHJpbmdCeUtleQEJAKwCAgUKYmlkRGF0YUtleQIFX09QRU4ECWJpZERlbE9sZAkBC0RlbGV0ZUVudHJ5AQkArAICBQpiaWREYXRhS2V5AgVfT1BFTgQJYmlkVXBkYXRlCQELU3RyaW5nRW50cnkCCQCsAgIFCmJpZERhdGFLZXkCB19DTE9TRUQJAKwCAgkArAICBQdiaWREYXRhAgFfCQCkAwEFBGRhdGUEB3NvbGRLZXkJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJYXJ0X3NvbGRfCQCkAwEFDW5ld0Ftb3VudFNvbGQCBF9vZl8JAKQDAQUKbWF4Q2FuU2VsbAIBXwUFYXJ0SWQCAV8FBmlzc3VlcgQJc29sZFZhbHVlAwkBASEBBQVpc0JpZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQZjYWxsZXICAV8JAKQDAQUEZGF0ZQIBXwUCaWQCAV8JAKQDAQUMYXJ0d29ya1ByaWNlAgFfBQxwcmljZUFzc2V0SWQCAV8JANgEAQUFaWRORlQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBBQpyZWNlaXZlTkZUAgFfCQCkAwEFBGRhdGUCAV8FAmlkAgFfCQCkAwEFBmFtb3VudAIBXwUKYXNzZXRJZEJpZAIBXwkA2AQBBQVpZE5GVAQIc29sZERhdGEJAQtTdHJpbmdFbnRyeQIFB3NvbGRLZXkFCXNvbGRWYWx1ZQQLY29tbWlzc2lvbnMDCQECIT0CBQ5hbW91bnRGb3JBZ2VudAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQtmZWVSZWNlaXZlcgkAZQIFDWFtb3VudEZvclNpZ24FDmFtb3VudEZvckFnZW50BQdhc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQVhZ2VudAUOYW1vdW50Rm9yQWdlbnQFB2Fzc2V0SWQFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULZmVlUmVjZWl2ZXIFDWFtb3VudEZvclNpZ24FB2Fzc2V0SWQFA25pbAQGYnV5UmVzCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlJc3N1ZWQCBQZpc3N1ZXIFBWFydElkBQ1uZXdBbW91bnRTb2xkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIEbmZ0XwkA2AQBBQVpZE5GVAUHc29sZEtleQkAzAgCCQEMSW50ZWdlckVudHJ5AgIQdG90YWxfbmZ0X2lzc3VlZAkAZAIFCHRvdGFsTkZUAAEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQprZXlFbmRTYWxlAgUGaXNzdWVyBQVhcnRJZAAACQDMCAIJAQxCb29sZWFuRW50cnkCCQEJa2V5T25TYWxlAgUGaXNzdWVyBQVhcnRJZAUKc2VsbFN0YXR1cwkAzAgCBQhpc3N1ZU5GVAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGaXNzdWVyBRBhbW91bnRGb3JDcmVhdG9yBQdhc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCnJlY2VpdmVORlQAAQUFaWRORlQFA25pbAULY29tbWlzc2lvbnMDBQVpc0JpZAkAzAgCBQhzb2xkRGF0YQkAzAgCBQliaWRVcGRhdGUJAMwIAgUJYmlkRGVsT2xkBQZidXlSZXMJAMwIAgUIc29sZERhdGEFBmJ1eVJlcwEIYXNTdHJpbmcBAmJ2BAckbWF0Y2gwBQJidgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEA2J2MAUHJG1hdGNoMAUDYnYwCQACAQIkU3BvbnNvcmVkIFB1YmxpYyBLZXkgU3RyaW5nIGV4cGVjdGVkCgZpbnZva2UBB3NldENvbmYCA2tleQN2YWwEBmNhbGxlcgkApQgBCAUGaW52b2tlBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIDCQEIY29udGFpbnMCBQNrZXkCBWNvbmZfCQDMCAIJAQtTdHJpbmdFbnRyeQIFA2tleQUDdmFsBQNuaWwJAAIBAiBFbnRyaWVzIHN0YXJ0aW5nIHdpdGggY29uZl8gb25seQkAAgECIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHRoaXMBaQEKYWRkQXJ0d29yaw4Kc2hhMjU2SGFzaAZzaWduSUQEbmFtZQtkZXNjcmlwdGlvbgR0YWdzBHR5cGUKY2lkRGlzcGxheQxzaGEyNTZFeHBvcnQJY2lkRXhwb3J0DXNoYTI1NkxpY2VuY2UKY2lkTGljZW5jZQdjcmF3bGVyCXJveWFsdGllcwZwdWJLZXkEDSR0MDE4NjUyMTg3MTIJARVpZENhbGxlckRhdGVTcG9uc29yZWQCBQFpBQZwdWJLZXkEBWFydElkCAUNJHQwMTg2NTIxODcxMgJfMQQGY2FsbGVyCAUNJHQwMTg2NTIxODcxMgJfMgQEZGF0ZQgFDSR0MDE4NjUyMTg3MTICXzMDBgkAAgEFBmNhbGxlcgMJAQEhAQkBDHZhbGlkYXRlSGFzaAEFCnNoYTI1Nkhhc2gJAAIBAiRIYXNoIHNob3VsZCBiZSA2NCBjaGFyYWN0ZXJzIG1heGltdW0EDSR0MDE4ODQ0MTg5MTMJAQpzZXRMSWNlbmNlAgUKY2lkTGljZW5jZQUNc2hhMjU2TGljZW5jZQQKbGljZW5jZUNJRAgFDSR0MDE4ODQ0MTg5MTMCXzEEC2xpY2VuY2VIYXNoCAUNJHQwMTg4NDQxODkxMwJfMgQPdmFsaWRhdGVBcnR3b3JrCQETdmFsaWRhdGVBcnR3b3JrRGF0YQoFBmNhbGxlcgUKY2lkRGlzcGxheQUJY2lkRXhwb3J0BQpsaWNlbmNlQ0lEBQxzaGEyNTZFeHBvcnQFC2xpY2VuY2VIYXNoBQRuYW1lBQtkZXNjcmlwdGlvbgUEdGFncwUJcm95YWx0aWVzAwkBAiE9AgUPdmFsaWRhdGVBcnR3b3JrAgAJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEEEHdoaXRlbGlzdGVkX2Ryb3AJAGYCCQEOY2hlY2tXaGl0ZWxpc3QBCQCsAgIFBmNhbGxlcgILX2ZyZWVfZHJvcHMAAAQNJHQwMTkyMTIxOTI5NgMFEHdoaXRlbGlzdGVkX2Ryb3AJAJQKAgAABQZzaWduSUQJAQ92YWxpZGF0ZVBheW1lbnQBBQFpBAZhbW91bnQIBQ0kdDAxOTIxMjE5Mjk2Al8xBAdhc3NldElkCAUNJHQwMTkyMTIxOTI5NgJfMgMJAQEhAQkBCWlzRGVmaW5lZAEFBmFtb3VudAkAAgECFFNvbWV0aGluZyB3ZW50IHdyb25nBAplbnRyeUV4aXN0CQEOZ2V0U3RyaW5nQnlLZXkBCQESa2V5VHhpZEJ5SGFzaE93bmVyAgUKc2hhMjU2SGFzaAUGY2FsbGVyAwkBAiE9AgUKZW50cnlFeGlzdAIACQACAQIUWW91IGFscmVhZHkgYWRkZWQgaXQECWhhc2hFeGlzdAkBDmdldFN0cmluZ0J5S2V5AQkBDmtleU93bmVyQnlIYXNoAQUKc2hhMjU2SGFzaAMJAQIhPQIFCWhhc2hFeGlzdAIACQACAQIXSGFzaCBhbHJlYWR5IHJlZ2lzdGVyZWQED2lzU2lnbkNlcnRpZmllZAkBFGNoZWNrU2lnbkNlcnRpZmljYXRlAwUGc2lnbklEBQZjYWxsZXIFCnNoYTI1Nkhhc2gDCQEBIQEFD2lzU2lnbkNlcnRpZmllZAkAAgECLFNpZ24gQ2VydGlmaWNhdGUgbm90IGZvdW5kIGZvciB0aGlzIGFkZHJlc3MuBBdkZWNyZWFzZV93aGl0ZWxpc3RfZHJvcAMFEHdoaXRlbGlzdGVkX2Ryb3AJAPwHBAUNd2hpdGVsaXN0RGFwcAILdXNlRnJlZURyb3AJAMwIAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBQNuaWwFA25pbAUEdW5pdAMJAAACBRdkZWNyZWFzZV93aGl0ZWxpc3RfZHJvcAUXZGVjcmVhc2Vfd2hpdGVsaXN0X2Ryb3AJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleU93bmVyQnlIYXNoAQUKc2hhMjU2SGFzaAUGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARJrZXlUeGlkQnlIYXNoT3duZXICBQpzaGEyNTZIYXNoBQZjYWxsZXIFBWFydElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEHa2V5RGF0ZQIFBmNhbGxlcgUFYXJ0SWQFBGRhdGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleU5hbWUCBQZjYWxsZXIFBWFydElkBQRuYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlEZXNjAgUGY2FsbGVyBQVhcnRJZAULZGVzY3JpcHRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleURpc3BsYXlDaWQCBQZjYWxsZXIFBWFydElkBQpjaWREaXNwbGF5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlFeHBvcnRDaWQCBQZjYWxsZXIFBWFydElkBQljaWRFeHBvcnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleUV4cG9ydEhhc2gCBQZjYWxsZXIFBWFydElkBQxzaGEyNTZFeHBvcnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDmtleUxpY2VuY2VIYXNoAgUGY2FsbGVyBQVhcnRJZAULbGljZW5jZUhhc2gJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleUxpY2VuY2VDaWQCBQZjYWxsZXIFBWFydElkBQpsaWNlbmNlQ0lECQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUeXBlAgUGY2FsbGVyBQVhcnRJZAUEdHlwZQkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5VGFncwIFBmNhbGxlcgUFYXJ0SWQFBHRhZ3MJAMwIAgkBDEludGVnZXJFbnRyeQIJAQprZXlNYXhNaW50AgUGY2FsbGVyBQVhcnRJZAAACQDMCAIJAQtTdHJpbmdFbnRyeQIJAQlrZXlTaWduSUQCBQZjYWxsZXIFBWFydElkBQZzaWduSUQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlJc3N1ZWQCBQZjYWxsZXIFBWFydElkAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQlrZXlPblNhbGUCBQZjYWxsZXIFBWFydElkBwkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5aWRCeVNpZ25pZAIFBmNhbGxlcgUGc2lnbklEBQVhcnRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5SGFzaEJ5VHhpZEFkZHICBQZjYWxsZXIFBWFydElkBQpzaGEyNTZIYXNoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQprZXlDcmF3bGVyAgUGY2FsbGVyBQVhcnRJZAUHY3Jhd2xlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleVJveWFsdGllcwIFBmNhbGxlcgUFYXJ0SWQFCXJveWFsdGllcwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULZmVlUmVjZWl2ZXIFBmFtb3VudAULc2lnbkFzc2V0SWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ11cGRhdGVBcnR3b3JrDQR0eGlkBG5hbWULZGVzY3JpcHRpb24EdGFncwR0eXBlCmNpZERpc3BsYXkMc2hhMjU2RXhwb3J0CWNpZEV4cG9ydA1zaGEyNTZMaWNlbmNlCmNpZExpY2VuY2UHY3Jhd2xlcglyb3lhbHRpZXMGcHViS2V5AwkBASEBBQtkYXBwUnVubmluZwkAAgEFDm1haW50ZW5hbmNlTVNHBA0kdDAyMjIzODIyMjk1CQEVaWRDYWxsZXJEYXRlU3BvbnNvcmVkAgUBaQUGcHViS2V5BAJpZAgFDSR0MDIyMjM4MjIyOTUCXzEEBmNhbGxlcggFDSR0MDIyMjM4MjIyOTUCXzIEBGRhdGUIBQ0kdDAyMjIzODIyMjk1Al8zBA0kdDAyMjMwNTIyMzc0CQEKc2V0TEljZW5jZQIFCmNpZExpY2VuY2UFDXNoYTI1NkxpY2VuY2UECmxpY2VuY2VDSUQIBQ0kdDAyMjMwNTIyMzc0Al8xBAtsaWNlbmNlSGFzaAgFDSR0MDIyMzA1MjIzNzQCXzIED3ZhbGlkYXRlQXJ0d29yawkBE3ZhbGlkYXRlQXJ0d29ya0RhdGEKBQZjYWxsZXIFCmNpZERpc3BsYXkFCWNpZEV4cG9ydAUKbGljZW5jZUNJRAUMc2hhMjU2RXhwb3J0BQtsaWNlbmNlSGFzaAUEbmFtZQULZGVzY3JpcHRpb24FBHRhZ3MFCXJveWFsdGllcwMJAQIhPQIFD3ZhbGlkYXRlQXJ0d29yawIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAplbnRyeUV4aXN0CQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5TmFtZQIFBmNhbGxlcgUEdHhpZAMJAAACBQplbnRyeUV4aXN0AgAJAAIBAg9FbnRyeSBub3QgZm91bmQEBGZsYWcJAQ5nZXRTdHJpbmdCeUtleQEJAQdrZXlGbGFnAgUGY2FsbGVyBQR0eGlkAwkAAAIFBGZsYWcCB0lMTEVHQUwJAAIBAh1DYW5ub3QgdXBkYXRlIElMTEVHQUwgYXJ0d29yawMJAQEhAQkBC2lzQXJ0TWludGVkAgUGY2FsbGVyBQR0eGlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlOYW1lAgUGY2FsbGVyBQR0eGlkBQRuYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlEZXNjAgUGY2FsbGVyBQR0eGlkBQtkZXNjcmlwdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5RGlzcGxheUNpZAIFBmNhbGxlcgUEdHhpZAUKY2lkRGlzcGxheQkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RXhwb3J0Q2lkAgUGY2FsbGVyBQR0eGlkBQljaWRFeHBvcnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleUV4cG9ydEhhc2gCBQZjYWxsZXIFBHR4aWQFDHNoYTI1NkV4cG9ydAkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5TGljZW5jZUNpZAIFBmNhbGxlcgUEdHhpZAUKbGljZW5jZUNJRAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5TGljZW5jZUhhc2gCBQZjYWxsZXIFBHR4aWQFC2xpY2VuY2VIYXNoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUYWdzAgUGY2FsbGVyBQR0eGlkBQR0YWdzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUeXBlAgUGY2FsbGVyBQR0eGlkBQR0eXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQprZXlDcmF3bGVyAgUGY2FsbGVyBQR0eGlkBQdjcmF3bGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5Um95YWx0aWVzAgUGY2FsbGVyBQR0eGlkBQlyb3lhbHRpZXMFA25pbAkAAgECDkFscmVhZHkgbWludGVkAWkBC2ZsYWdBcnR3b3JrBAVhcnRJZARhZGRyBGZsYWcEbm90ZQQNJHQwMjM4NzUyMzkwOQkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMjM4NzUyMzkwOQJfMQQGY2FsbGVyCAUNJHQwMjM4NzUyMzkwOQJfMgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCAgdDT05TRU5UCQDMCAICAAkAzAgCAg9DSEFOR0VfUkVRVUlSRUQJAMwIAgIHRkxBR0dFRAkAzAgCAgdJTExFR0FMBQNuaWwFBGZsYWcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleUZsYWcCBQRhZGRyBQVhcnRJZAUEZmxhZwkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5Tm90ZQIFBGFkZHIFBWFydElkBQRub3RlBQNuaWwJAAIBCQCsAgICDlVua25vdyBzdGF0dXMgBQRmbGFnCQACAQITWW91IGFyZSBub3QgYWxsb3dlZAFpAQ1kZWxldGVBcnR3b3JrAgVhcnRJZARhZGRyBA0kdDAyNDM0NTI0Mzc5CQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAyNDM0NTI0Mzc5Al8xBAZjYWxsZXIIBQ0kdDAyNDM0NTI0Mzc5Al8yBAlhZGRyVG9Vc2UDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyBQRhZGRyBQZjYWxsZXIECmVudHJ5RXhpc3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBDmdldFN0cmluZ0J5S2V5AQkBB2tleU5hbWUCBQlhZGRyVG9Vc2UFBWFydElkAiBObyBhcnQgbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwMJAAACBQplbnRyeUV4aXN0AgAJAAIBAiBObyBhcnQgbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwQKc2hhMjU2SGFzaAkBDmdldFN0cmluZ0J5S2V5AQkBEWtleUhhc2hCeVR4aWRBZGRyAgUJYWRkclRvVXNlBQVhcnRJZAMJAAACBQpzaGEyNTZIYXNoAgAJAAIBAiVObyBhcnQgaGFzaCBtYXRjaGluZyBmb3IgdGhpcyBhZGRyZXNzBAZzaWduSUQJAQ5nZXRTdHJpbmdCeUtleQEJAQlrZXlTaWduSUQCBQlhZGRyVG9Vc2UFBWFydElkAwkAAAIFBnNpZ25JRAIACQACAQITTm8gU0lHTiBJRCBtYXRjaGluZwQMZGF0YVRvRGVsZXRlCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlEYXRlAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEHa2V5TmFtZQIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleURlc2MCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ1rZXlEaXNwbGF5Q2lkAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEMa2V5RXhwb3J0Q2lkAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQENa2V5RXhwb3J0SGFzaAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDmtleUxpY2VuY2VIYXNoAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQENa2V5TGljZW5jZUNpZAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleVR5cGUCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlUYWdzAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEKa2V5TWF4TWludAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCWtleVNpZ25JRAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCWtleUlzc3VlZAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCWtleU9uU2FsZQIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleUZsYWcCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQhrZXlQcmljZQIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEmtleUFzc2V0SWRBY2NlcHRlZAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDmtleU93bmVyQnlIYXNoAQUKc2hhMjU2SGFzaAkAzAgCCQELRGVsZXRlRW50cnkBCQENa2V5aWRCeVNpZ25pZAIFCWFkZHJUb1VzZQUGc2lnbklECQDMCAIJAQtEZWxldGVFbnRyeQEJARJrZXlUeGlkQnlIYXNoT3duZXICBQpzaGEyNTZIYXNoBQlhZGRyVG9Vc2UJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCmtleUVuZFNhbGUCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlOb3RlAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEKa2V5Q3Jhd2xlcgIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDGtleVJveWFsdGllcwIFCWFkZHJUb1VzZQUFYXJ0SWQFA25pbAMJAQEhAQkBC2lzQXJ0TWludGVkAgUJYWRkclRvVXNlBQVhcnRJZAMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwUMZGF0YVRvRGVsZXRlAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgUMZGF0YVRvRGVsZXRlCQACAQIoQXJ0IGFscmVhZHkgbWludGVkLCB5b3UgY2Fubm90IGRlbGV0ZSBpdAFpAQtzZWxsQXJ0d29yawYFYXJ0SWQFcHJpY2UHbWF4TWludAdhc3NldElkCGJsb2NrRW5kBnB1YktleQQNJHQwMjcyMTUyNzI2NgkBFWlkQ2FsbGVyRGF0ZVNwb25zb3JlZAIFAWkFBnB1YktleQQCaWQIBQ0kdDAyNzIxNTI3MjY2Al8xBAZjYWxsZXIIBQ0kdDAyNzIxNTI3MjY2Al8yBAthcnR3b3JrTmFtZQkBDmdldFN0cmluZ0J5S2V5AQkBB2tleU5hbWUCBQZjYWxsZXIFBWFydElkAwkAAAIFC2FydHdvcmtOYW1lAgAJAAIBAiNUaGlzIGFydCBkb2Vzbid0IG1hdGNoIHlvdXIgYWNjb3VudAQEZmxhZwkBDmdldFN0cmluZ0J5S2V5AQkBB2tleUZsYWcCBQZjYWxsZXIFBWFydElkAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgIPQ0hBTkdFX1JFUVVJUkVECQDMCAICB0ZMQUdHRUQJAMwIAgIHSUxMRUdBTAUDbmlsBQRmbGFnCQACAQIPRmxhZ2dlZCBhcnR3b3JrBAZiaWROYnIJAQ9nZXRJbnRlZ2VyQnlLZXkBCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQDCQBmAgAABQhibG9ja0VuZAkAAgECDE5lZ2F0aXZlIGVuZAMDCQBmAgUIYmxvY2tFbmQAAAMJAQIhPQIFB21heE1pbnQAAQYJAQIhPQIFBXByaWNlAAAHCQACAQI6VGltZWQgb2ZmZXIgb25seSBhbGxvd2VkIGZvciB1bmlxdWUgZWRpdGlvbiBhbmQgb2ZmZXIgb25seQQKYmFzZUhlaWdodAMJAAACBQhibG9ja0VuZAAAAAAFBmhlaWdodAMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQdhc3NldElkCQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchAwkBASEBCQEPdmFsaWRhdGVNaW5TZWxsAgUHYXNzZXRJZAUFcHJpY2UJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEECWNoZWNrVXNlcgkBDHZhbGlkYXRlVXNlcgEFBmNhbGxlcgMJAQIhPQIFCWNoZWNrVXNlcgIACQACAQUJY2hlY2tVc2VyBAphbW91bnRTb2xkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCWtleUlzc3VlZAIFBmNhbGxlcgUFYXJ0SWQECm1heENhblNlbGwJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEKa2V5TWF4TWludAIFBmNhbGxlcgUFYXJ0SWQDCQBmAgUHbWF4TWludABkCQACAQIcMTAwIGVkaXRpb25zIG1heCBwZXIgYXJ0d29yawMDCQECIT0CBQphbW91bnRTb2xkAAAJAAACBQphbW91bnRTb2xkBQptYXhDYW5TZWxsBwkAAgECFE1heCBlZGl0aW9uIHJlYWNoZWQuAwMJAGYCBQphbW91bnRTb2xkAAAJAQIhPQIFCm1heENhblNlbGwFB21heE1pbnQHCQACAQImQ2Fubm90IGNoYW5nZSBtYXhpbXVtIGlzc3VhYmxlIGFueW1vcmUDAwkAZgIFBmJpZE5icgAACQECIT0CBQptYXhDYW5TZWxsBQdtYXhNaW50BwkAAgECMUNhbm5vdCBjaGFuZ2UgbWF4aW11bSBpc3N1YWJsZSB3aXRoIGFjdGl2ZSBvcmRlcnMECnNlbGxTdGF0dXMDAwkAZgIFBXByaWNlAAAJAGYCBQdtYXhNaW50AAAHBgcJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQlrZXlPblNhbGUCBQZjYWxsZXIFBWFydElkBQpzZWxsU3RhdHVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEIa2V5UHJpY2UCBQZjYWxsZXIFBWFydElkBQVwcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCmtleU1heE1pbnQCBQZjYWxsZXIFBWFydElkBQdtYXhNaW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJARJrZXlBc3NldElkQWNjZXB0ZWQCBQZjYWxsZXIFBWFydElkBQdhc3NldElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEKa2V5RW5kU2FsZQIFBmNhbGxlcgUFYXJ0SWQJAGQCBQpiYXNlSGVpZ2h0BQhibG9ja0VuZAUDbmlsAWkBCmJ1eUFydHdvcmsCBWFydElkBmlzc3VlcgkBB2J1eU1pbnQFBQFpBQVhcnRJZAUGaXNzdWVyAgACAAFpAQZzZXRCaWQCBWFydElkBmlzc3VlcgQNJHQwMjk1MjMyOTU2MwkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMjk1MjMyOTU2MwJfMQQGY2FsbGVyCAUNJHQwMjk1MjMyOTU2MwJfMgQEZGF0ZQgFDSR0MDI5NTIzMjk1NjMCXzMEDSR0MDI5NTY4Mjk2MDQJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAUNJHQwMjk1NjgyOTYwNAJfMQQGYW1vdW50CAUNJHQwMjk1NjgyOTYwNAJfMgQHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQECGJsb2NrRW5kCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCmtleUVuZFNhbGUCBQZpc3N1ZXIFBWFydElkAwMJAQIhPQIFCGJsb2NrRW5kAAAJAGcCBQZoZWlnaHQFCGJsb2NrRW5kBwkAAgECC1NhbGUgZW5kZWQuBAZiaWROYnIJAQ9nZXRJbnRlZ2VyQnlLZXkBCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQDCQEBIQEJARBhY2NlcHRlZEFzc2V0SWRzAQUHYXNzZXRJZAkAAgECEmFzc2V0IG5vdCBhY2NlcHRlZAMJAQEhAQkBD3ZhbGlkYXRlTWluU2VsbAIFB2Fzc2V0SWQFBmFtb3VudAkAAgECDldyb25nIG1pbiBzZWxsBAphbW91bnRTb2xkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCWtleUlzc3VlZAIFBmlzc3VlcgUFYXJ0SWQECm1heENhblNlbGwJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEKa2V5TWF4TWludAIFBmlzc3VlcgUFYXJ0SWQDCQBnAgAABQptYXhDYW5TZWxsCQACAQIjTm8gbWF4IGVkaXRpb24gc2V0IGZvciB0aGlzIGFydHdvcmsDCQBnAgUKYW1vdW50U29sZAUKbWF4Q2FuU2VsbAkAAgECGFNvbGQgb3V0LCB5b3UgY2Fubm90IGJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUFYXJ0SWQCAV8FBmlzc3VlcgIBXwUGY2FsbGVyAgFfBQJpZAIFX09QRU4JAKwCAgkArAICCQCsAgIJAKwCAgUHYXNzZXRJZAIBXwkApAMBBQZhbW91bnQCAV8JAKQDAQUEZGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FBWFydElkCQBkAgUGYmlkTmJyAAEFA25pbAFpAQlhY2NlcHRCaWQEBWFydElkBmlzc3VlcgViaWRJZAhiaWRPd25lcgQNJHQwMzA3NjIzMDgwMgkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMzA3NjIzMDgwMgJfMQQGY2FsbGVyCAUNJHQwMzA3NjIzMDgwMgJfMgQEZGF0ZQgFDSR0MDMwNzYyMzA4MDICXzMDCQECIT0CBQZjYWxsZXIFBmlzc3VlcgkAAgECGVlvdSBjYW5ub3QgZG8gdGhpcyBhY3Rpb24JAQdidXlNaW50BQUBaQUFYXJ0SWQFBmlzc3VlcgUFYmlkSWQFCGJpZE93bmVyAWkBCWNhbmNlbEJpZAQFYXJ0SWQGaXNzdWVyBWJpZElkCGJpZE93bmVyBA0kdDAzMTAyODMxMDg5CQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAzMTAyODMxMDg5Al8xBAZjYWxsZXIIBQ0kdDAzMTAyODMxMDg5Al8yBARkYXRlCAUNJHQwMzEwMjgzMTA4OQJfMwMDCQECIT0CBQZjYWxsZXIFCGJpZE93bmVyCQECIT0CBQZjYWxsZXIFBmlzc3VlcgcJAAIBAhlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uBA1yZXR1cm5Nb25leVRvAwkAAAIFBmNhbGxlcgUGaXNzdWVyBQhiaWRPd25lcgUGY2FsbGVyBAZiaWROYnIJAQ9nZXRJbnRlZ2VyQnlLZXkBCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQECmJpZERhdGFLZXkJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUFYXJ0SWQCAV8FBmlzc3VlcgIBXwUIYmlkT3duZXICAV8FBWJpZElkBAdiaWREYXRhCQEOZ2V0U3RyaW5nQnlLZXkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOAwkAAAIFB2JpZERhdGECAAkAAgECDUJpZCBub3QgZm91bmQECmJpZERhdGFBcnIJALUJAgUHYmlkRGF0YQIBXwQHYXNzZXRJZAkBDWdldEJpZEFzc2V0SWQBCQCRAwIFCmJpZERhdGFBcnIAAAQJYmlkU3RhdHVzAghDQU5DRUxFRAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQpiaWREYXRhS2V5AgFfBQliaWRTdGF0dXMJAKwCAgkArAICBQdiaWREYXRhAgFfCQCkAwEFBGRhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQVhcnRJZAkAZQIFBmJpZE5icgABCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQ1yZXR1cm5Nb25leVRvCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKYmlkRGF0YUFycgABBQdhc3NldElkBQNuaWwBAnR4AQh2ZXJpZmllcgAEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBANpbnYFByRtYXRjaDADAwkAAAIIBQNpbnYIZnVuY3Rpb24CCmFkZEFydHdvcmsJAAACCAUDaW52BGRBcHAFBHRoaXMHCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQDZBAEJAQhhc1N0cmluZwEJAJEDAggFA2ludgRhcmdzAA0DAwkAAAIIBQNpbnYIZnVuY3Rpb24CDXVwZGF0ZUFydHdvcmsJAAACCAUDaW52BGRBcHAFBHRoaXMHCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQDZBAEJAQhhc1N0cmluZwEJAJEDAggFA2ludgRhcmdzAAwDAwkAAAIIBQNpbnYIZnVuY3Rpb24CC3NlbGxBcnR3b3JrCQAAAggFA2ludgRkQXBwBQR0aGlzBwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkA2QQBCQEIYXNTdHJpbmcBCQCRAwIIBQNpbnYEYXJncwAFCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5CQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5Hww4lA==", "height": 2411493, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FEDWZ8CvQW1rjLrLEo9hdENiybMkqn9DKqTZSySELvYp Next: 3Qvtgv2zhZm1XgKLCga3564CwQZtibtMJziJZAJo1GMb Diff:
OldNewDifferences
383383
384384 func br (aR,bs) = if (!(w))
385385 then throw(x)
386- else if (!(isDefined(aR.payments)))
387- then throw("toto")
388- else {
389- let P = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
390- then !(isDefined(aR.payments))
391- else false)
392- then toString(addressFromPublicKey(fromBase58String(bs)))
393- else toBase58String(aR.caller.bytes)
394- let bt = if ((bs != ""))
395- then invoke(i, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
396- else unit
397- if ((bt == bt))
398- then $Tuple3(toBase58String(aR.transactionId), P, lastBlock.timestamp)
399- else throw("Strict value is not equal to itself.")
400- }
386+ else {
387+ let P = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
388+ then (size(aR.payments) == 0)
389+ else false)
390+ then toString(addressFromPublicKey(fromBase58String(bs)))
391+ else toBase58String(aR.caller.bytes)
392+ let bt = if ((bs != ""))
393+ then invoke(i, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
394+ else unit
395+ if ((bt == bt))
396+ then $Tuple3(toBase58String(aR.transactionId), P, lastBlock.timestamp)
397+ else throw("Strict value is not equal to itself.")
398+ }
401399
402400
403401 func bu (aR) = if (!(w))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "1.1.9"
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 = fromBase58String(b("conf_accepted_asset_SIGN"))
2424
2525 let k = fromBase58String(b("conf_accepted_asset_USDN"))
2626
2727 let l = fromBase58String(b("conf_accepted_asset_USDT"))
2828
2929 let m = base58''
3030
3131 let n = b("conf_admin_1")
3232
3333 func o (c) = valueOrErrorMessage(getInteger(e, c), "Integer undefine or 0 in oracle")
3434
3535
3636 func p (c) = valueOrElse(getInteger(this, c), 0)
3737
3838
3939 func q (c) = valueOrElse(getInteger(i, c), 0)
4040
4141
4242 func r (c) = valueOrElse(getBoolean(this, c), false)
4343
4444
4545 let s = 7
4646
4747 let t = 10
4848
4949 let u = b("conf_default_licence")
5050
5151 let v = b("conf_default_licence_hash")
5252
5353 let w = valueOrElse(getBoolean(h, "conf_dapp_is_running"), true)
5454
5555 let x = valueOrElse(getString(h, "conf_maintenance_msg"), "")
5656
5757 let y = "SUSPENDED"
5858
5959 let z = "REMOVED"
6060
6161 let A = "UNREGISTERED"
6262
6363 let B = "ALLOWED"
6464
6565 let C = o(("certification_fee_" + toBase58String(j)))
6666
6767 func D (c) = valueOrElse(getInteger(this, c), 1000)
6868
6969
7070 func E (F,G,H) = {
7171 let I = getString(f, ((("data_fc_" + F) + "_") + G))
7272 if ($isInstanceOf(I, "String"))
7373 then {
7474 let J = I
7575 if (contains(J, H))
7676 then true
7777 else false
7878 }
7979 else false
8080 }
8181
8282
8383 func K (L) = if (contains(L, "/"))
8484 then if (if ((76 > size(L)))
8585 then (size(split(L, "/")[0]) == 59)
8686 else false)
8787 then (16 > size(split(L, "/")[1]))
8888 else false
8989 else false
9090
9191
9292 func M (N) = (size(N) == 64)
9393
9494
9595 func O (P) = ("user_status_" + P)
9696
9797
9898 func Q (P,R) = ((("art_date_" + R) + "_") + P)
9999
100100
101101 func S (P,R) = ((("art_name_" + R) + "_") + P)
102102
103103
104104 func T (P,R) = ((("art_desc_" + R) + "_") + P)
105105
106106
107107 func U (P,R) = ((("art_display_cid_" + R) + "_") + P)
108108
109109
110110 func V (P,R) = ((("art_export_hash_" + R) + "_") + P)
111111
112112
113113 func W (P,R) = ((("art_export_cid_" + R) + "_") + P)
114114
115115
116116 func X (P,R) = ((("art_maxmint_" + R) + "_") + P)
117117
118118
119119 func Y (P,R) = ((("art_signid_" + R) + "_") + P)
120120
121121
122122 func Z (P,R) = ((("art_issued_" + R) + "_") + P)
123123
124124
125125 func aa (P,R) = ((("art_onsale_" + R) + "_") + P)
126126
127127
128128 func ab (P,R) = ((("art_licence_hash_" + R) + "_") + P)
129129
130130
131131 func ac (P,R) = ((("art_licence_cid_" + R) + "_") + P)
132132
133133
134134 func ad (P,R) = ((("art_tags_" + R) + "_") + P)
135135
136136
137137 func ae (P,R) = ((("art_type_" + R) + "_") + P)
138138
139139
140140 func af (P,R) = ((("art_note_" + R) + "_") + P)
141141
142142
143143 func ag (P,R) = ((("art_crawler_cid_" + R) + "_") + P)
144144
145145
146146 func ah (P,R) = ((("art_royalties_" + R) + "_") + P)
147147
148148
149149 func ai (P,R) = ((("art_price_" + R) + "_") + P)
150150
151151
152152 func aj (P,R) = ((("art_endsale_" + R) + "_") + P)
153153
154154
155155 func ak (P,R) = ((("art_assetAccepted_" + R) + "_") + P)
156156
157157
158158 func al (P,R) = ((("art_flag_" + R) + "_") + P)
159159
160160
161161 func am (an) = ("artist_agent_" + an)
162162
163163
164164 func ao (an) = ("artist_agent_primary_" + an)
165165
166166
167167 func ap (P,aq) = ((("get_hashbytxidaddr_" + aq) + "_") + P)
168168
169169
170170 func ar (H) = ("get_owner_by_hash_" + H)
171171
172172
173173 func as (P,at) = ((("get_artidbysignid_" + at) + "_") + P)
174174
175175
176176 func au (H,P) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((H + P)))))
177177
178178
179179 func av (aw,ax,ay) = if (!(K(aw)))
180180 then throw("Wrong Display CID")
181181 else if (!(K(ax)))
182182 then throw("Wrong Export CID")
183183 else if (if ((ay != ""))
184184 then !(K(ay))
185185 else false)
186186 then throw("Wrong Licence CID")
187187 else true
188188
189189
190190 func az (aA,aB) = if (!(M(aA)))
191191 then throw("Export Hash 64 char. max")
192192 else if (!(M(aB)))
193193 then throw("Licence Hash 64 char. max")
194194 else true
195195
196196
197197 func aC (aD,aE) = if ((size(aD) == 0))
198198 then throw("Field cannot be is empty")
199199 else if ((size(aD) > aE))
200200 then throw((aD + " is too long"))
201201 else true
202202
203203
204204 func aF (P) = if (true)
205205 then throw(P)
206206 else {
207207 let aG = valueOrElse(getString(h, O(P)), A)
208208 if (if ((aG == A))
209209 then true
210210 else (aG == B))
211211 then "Register this account first with \"Account\" tab"
212212 else if ((aG == y))
213213 then "Account suspended"
214214 else if ((aG == z))
215215 then "Account removed"
216216 else ""
217217 }
218218
219219
220220 func aH (ay,aB) = {
221221 let L = if ((size(ay) == 0))
222222 then u
223223 else ay
224224 let N = if ((size(aB) == 0))
225225 then v
226226 else aB
227227 $Tuple2(L, N)
228228 }
229229
230230
231231 func aI (P,aw,ax,aJ,aA,aK,aL,aM,aN,aO) = {
232232 let aP = aF(P)
233233 if ((aP != ""))
234234 then throw(aP)
235235 else if ((size(aw) == 0))
236236 then throw("Display CID cannot be empty")
237237 else if (!(av(aw, ax, aJ)))
238238 then throw("Problem with CID")
239239 else if (!(az(aA, aK)))
240240 then throw("Problem with Hashes")
241241 else if (!(aC(aL, 100)))
242242 then throw("100 Char. max name")
243243 else if (!(aC(aM, 1000)))
244244 then throw("1000 Char. max description")
245245 else if (if ((0 > aO))
246246 then true
247247 else (aO > 1000))
248248 then throw("Royalties cannot be less than 0% or higher than 10%")
249249 else if ((size(split(aN, ",")) > 5))
250250 then throw("5 tags max.")
251251 else ""
252252 }
253253
254254
255255 func aQ (aR) = if ((size(aR.payments) == 0))
256256 then throw("No payment attached")
257257 else {
258258 let aS = value(aR.payments[0])
259259 let aT = value(aS.amount)
260260 $Tuple2(aS, aT)
261261 }
262262
263263
264264 func aU (aR) = {
265265 let aV = aQ(aR)
266266 let aS = aV._1
267267 let aT = aV._2
268268 let aW = if (if (isDefined(aS.assetId))
269269 then (aS.assetId == j)
270270 else false)
271271 then aS.assetId
272272 else throw("Only SIGN token accepted as transaction fee")
273273 if ((aT != C))
274274 then throw(("Payment amount should be " + toString(C)))
275275 else $Tuple2(aT, aW)
276276 }
277277
278278
279279 func aX (aY,R) = {
280280 let I = getInteger(this, Z(aY, R))
281281 if ($isInstanceOf(I, "Int"))
282282 then {
283283 let aZ = I
284284 if ((aZ != 0))
285285 then true
286286 else false
287287 }
288288 else false
289289 }
290290
291291
292292 func ba (aR,bb,bc) = {
293293 let bd = aQ(aR)
294294 let aS = bd._1
295295 let aT = bd._2
296296 let aW = if (!(isDefined(aS.assetId)))
297297 then unit
298298 else if (if ((size(bb) > 0))
299299 then (toBase58String(value(aS.assetId)) == bb)
300300 else false)
301301 then aS.assetId
302302 else throw("Wrong asset id")
303303 if (if ((aW == unit))
304304 then (bb != "")
305305 else false)
306306 then throw("Wrong asset id")
307307 else if ((bc != aT))
308308 then throw("Payment don't match")
309309 else $Tuple2(aT, aW)
310310 }
311311
312312
313313 func be (aW) = if (if (if (if (if ((aW != toBase58String(j)))
314314 then (aW != toBase58String(m))
315315 else false)
316316 then (aW != "WAVES")
317317 else false)
318318 then (aW != toBase58String(k))
319319 else false)
320320 then (aW != toBase58String(l))
321321 else false)
322322 then throw("Only SIGN, USDN,USDT or WAVES accepted")
323323 else true
324324
325325
326326 func bf (aW,bg) = {
327327 let bh = if (d)
328328 then 10
329329 else o("waves_min_sell")
330330 let bi = 1000000
331331 let bj = if (d)
332332 then 1
333333 else (C * 2)
334334 if (if (if (if (if (if ((aW == toBase58String(k)))
335335 then (bi > bg)
336336 else false)
337337 then (bg != 0)
338338 else false)
339339 then true
340340 else if (if ((aW == toBase58String(l)))
341341 then (bi > bg)
342342 else false)
343343 then (bg != 0)
344344 else false)
345345 then true
346346 else if (if ((aW == toBase58String(j)))
347347 then (bj > bg)
348348 else false)
349349 then (bg != 0)
350350 else false)
351351 then true
352352 else if (if (if ((aW == toBase58String(m)))
353353 then true
354354 else (aW == "WAVES"))
355355 then (bh > bg)
356356 else false)
357357 then (bg != 0)
358358 else false)
359359 then throw("Wrong minimum sell price")
360360 else true
361361 }
362362
363363
364364 func bk (aW) = if ((aW == "WAVES"))
365365 then unit
366366 else fromBase58String(aW)
367367
368368
369369 func bl (bm) = {
370370 let bn = b((bm + "_OPEN"))
371371 if ((bn == ""))
372372 then throw("Bid not found")
373373 else {
374374 let bo = split(bn, "_")
375375 let bp = parseIntValue(bo[1])
376376 let bq = bk(bo[0])
377377 if ((0 >= bp))
378378 then throw("Wrong amount")
379379 else $Tuple2(bp, bq)
380380 }
381381 }
382382
383383
384384 func br (aR,bs) = if (!(w))
385385 then throw(x)
386- else if (!(isDefined(aR.payments)))
387- then throw("toto")
388- else {
389- let P = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
390- then !(isDefined(aR.payments))
391- else false)
392- then toString(addressFromPublicKey(fromBase58String(bs)))
393- else toBase58String(aR.caller.bytes)
394- let bt = if ((bs != ""))
395- then invoke(i, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
396- else unit
397- if ((bt == bt))
398- then $Tuple3(toBase58String(aR.transactionId), P, lastBlock.timestamp)
399- else throw("Strict value is not equal to itself.")
400- }
386+ else {
387+ let P = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
388+ then (size(aR.payments) == 0)
389+ else false)
390+ then toString(addressFromPublicKey(fromBase58String(bs)))
391+ else toBase58String(aR.caller.bytes)
392+ let bt = if ((bs != ""))
393+ then invoke(i, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
394+ else unit
395+ if ((bt == bt))
396+ then $Tuple3(toBase58String(aR.transactionId), P, lastBlock.timestamp)
397+ else throw("Strict value is not equal to itself.")
398+ }
401399
402400
403401 func bu (aR) = if (!(w))
404402 then throw(x)
405403 else $Tuple3(toBase58String(aR.transactionId), toBase58String(aR.caller.bytes), lastBlock.timestamp)
406404
407405
408406 func bv (aR,R,bw,bx,by) = {
409407 let bz = bu(aR)
410408 let bA = bz._1
411409 let P = bz._2
412410 let bB = bz._3
413411 let bC = if (if (if ((P == bw))
414412 then (by != "")
415413 else false)
416414 then (bx != "")
417415 else false)
418416 then true
419417 else false
420418 let bD = p(aj(P, R))
421419 if (if (if ((bD != 0))
422420 then (height >= bD)
423421 else false)
424422 then !(bC)
425423 else false)
426424 then throw("Sale ended.")
427425 else {
428426 let bE = (P == bw)
429427 let bF = p("total_nft_issued")
430428 let F = b(Y(bw, R))
431429 let bG = b(S(bw, R))
432430 if ((bG == ""))
433431 then throw("Art doesn't exist")
434432 else {
435433 let bH = r(aa(bw, R))
436434 let bI = p(Z(bw, R))
437435 let bc = if (bE)
438436 then (C * 2)
439437 else p(ai(bw, R))
440438 let bb = if (bE)
441439 then toBase58String(j)
442440 else b(ak(bw, R))
443441 let bJ = p(X(bw, R))
444442 if (if (if (!(bC))
445443 then !(bE)
446444 else false)
447445 then if (if ((0 >= bc))
448446 then true
449447 else !(bH))
450448 then true
451449 else (0 >= bJ)
452450 else false)
453451 then throw("Art not for sale")
454452 else if (if (if (!(bC))
455453 then bE
456454 else false)
457455 then (0 >= bJ)
458456 else false)
459457 then throw("Max issuable not set")
460458 else {
461459 let aP = aF(bw)
462460 if (if (bC)
463461 then (aP != "")
464462 else false)
465463 then throw(aP)
466464 else {
467465 let bm = ((((((("bid_" + R) + "_") + bw) + "_") + by) + "_") + bx)
468466 let bK = if (bC)
469467 then bl(bm)
470468 else ba(aR, bb, bc)
471469 let aT = bK._1
472470 let aW = bK._2
473471 let bL = valueOrElse(getString(h, am(bw)), g)
474472 let bM = valueOrElse(getInteger(h, ao(bw)), 0)
475473 let bN = q(bw)
476474 let bO = if ((bN > height))
477475 then 0
478476 else if ((aW == j))
479477 then s
480478 else t
481479 let bP = fraction(aT, bO, 100)
482480 let bQ = if (if (if ((bL != g))
483481 then (bM > 0)
484482 else false)
485483 then (height > bN)
486484 else false)
487485 then fraction(aT, bM, 100)
488486 else 0
489487 let bR = (aT - bP)
490488 if ((bI == bJ))
491489 then throw("Art sold out")
492490 else {
493491 let bS = (bI + 1)
494492 let bT = ((((((((((("Creator: " + bw) + ",
495493 ArtID: ") + R) + ",
496494 SignID: ") + F) + ",
497495 Artwork name: ") + bG) + ",
498496 Issue: ") + toString(bS)) + "/") + toString(bJ))
499497 let bU = Issue(("SA_" + toString((bF + 1))), bT, 1, 0, false)
500498 let bV = calculateAssetId(bU)
501499 let bW = if (if ((bS == bJ))
502500 then true
503501 else !(bH))
504502 then false
505503 else true
506504 let bX = if (if (if ((P == bw))
507505 then (by != "")
508506 else false)
509507 then (bx != "")
510508 else false)
511509 then addressFromStringValue(by)
512510 else aR.caller
513511 let bY = if (!(isDefined(aW)))
514512 then "WAVES"
515513 else toBase58String(value(aW))
516514 let bn = b((bm + "_OPEN"))
517515 let bZ = DeleteEntry((bm + "_OPEN"))
518516 let ca = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bB)))
519517 let cb = ((((((("art_sold_" + toString(bS)) + "_of_") + toString(bJ)) + "_") + R) + "_") + bw)
520518 let cc = if (!(bC))
521519 then ((((((((((P + "_") + toString(bB)) + "_") + bA) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(bV))
522520 else ((((((((((toString(bX) + "_") + toString(bB)) + "_") + bA) + "_") + toString(aT)) + "_") + bY) + "_") + toBase58String(bV))
523521 let cd = StringEntry(cb, cc)
524522 let ce = if ((bQ != 0))
525523 then [ScriptTransfer(Address(fromBase58String(g)), (bP - bQ), aW), ScriptTransfer(Address(fromBase58String(bL)), bQ, aW)]
526524 else [ScriptTransfer(Address(fromBase58String(g)), bP, aW)]
527525 let cf = ([IntegerEntry(Z(bw, R), bS), StringEntry(("nft_" + toBase58String(bV)), cb), IntegerEntry("total_nft_issued", (bF + 1)), IntegerEntry(aj(bw, R), 0), BooleanEntry(aa(bw, R), bW), bU, ScriptTransfer(Address(fromBase58String(bw)), bR, aW), ScriptTransfer(bX, 1, bV)] ++ ce)
528526 if (bC)
529527 then [cd, ca, bZ] :: cf
530528 else cd :: cf
531529 }
532530 }
533531 }
534532 }
535533 }
536534 }
537535
538536
539537 func cg (ch) = {
540538 let I = ch
541539 if ($isInstanceOf(I, "String"))
542540 then {
543541 let ci = I
544542 ci
545543 }
546544 else throw("Sponsored Public Key String expected")
547545 }
548546
549547
550548 @Callable(cj)
551549 func setConf (c,ck) = {
552550 let P = toString(cj.caller)
553551 if (containsElement([n, toString(this)], P))
554552 then if (contains(c, "conf_"))
555553 then [StringEntry(c, ck)]
556554 else throw("Entries starting with conf_ only")
557555 else throw("You are not allowed to change this")
558556 }
559557
560558
561559
562560 @Callable(aR)
563561 func addArtwork (H,F,aL,aM,aN,cl,aw,aA,ax,aB,ay,cm,aO,bs) = {
564562 let cn = br(aR, bs)
565563 let R = cn._1
566564 let P = cn._2
567565 let bB = cn._3
568566 if (true)
569567 then throw(P)
570568 else if (!(M(H)))
571569 then throw("Hash should be 64 characters maximum")
572570 else {
573571 let co = aH(ay, aB)
574572 let aJ = co._1
575573 let aK = co._2
576574 let cp = aI(P, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
577575 if ((cp != ""))
578576 then throw("Something went wrong!")
579577 else {
580578 let cq = (q((P + "_free_drops")) > 0)
581579 let cr = if (cq)
582580 then $Tuple2(0, F)
583581 else aU(aR)
584582 let aT = cr._1
585583 let aW = cr._2
586584 if (!(isDefined(aT)))
587585 then throw("Something went wrong")
588586 else {
589587 let cs = b(au(H, P))
590588 if ((cs != ""))
591589 then throw("You already added it")
592590 else {
593591 let ct = b(ar(H))
594592 if ((ct != ""))
595593 then throw("Hash already registered")
596594 else {
597595 let cu = E(F, P, H)
598596 if (!(cu))
599597 then throw("Sign Certificate not found for this address.")
600598 else {
601599 let cv = if (cq)
602600 then invoke(i, "useFreeDrop", [toBase58String(aR.caller.bytes)], nil)
603601 else unit
604602 if ((cv == cv))
605603 then [StringEntry(ar(H), P), StringEntry(au(H, P), R), IntegerEntry(Q(P, R), bB), StringEntry(S(P, R), aL), StringEntry(T(P, R), aM), StringEntry(U(P, R), aw), StringEntry(W(P, R), ax), StringEntry(V(P, R), aA), StringEntry(ab(P, R), aK), StringEntry(ac(P, R), aJ), StringEntry(ae(P, R), cl), StringEntry(ad(P, R), aN), IntegerEntry(X(P, R), 0), StringEntry(Y(P, R), F), IntegerEntry(Z(P, R), 0), BooleanEntry(aa(P, R), false), StringEntry(as(P, F), R), StringEntry(ap(P, R), H), StringEntry(ag(P, R), cm), IntegerEntry(ah(P, R), aO), ScriptTransfer(Address(fromBase58String(g)), aT, j)]
606604 else throw("Strict value is not equal to itself.")
607605 }
608606 }
609607 }
610608 }
611609 }
612610 }
613611 }
614612
615613
616614
617615 @Callable(aR)
618616 func updateArtwork (aq,aL,aM,aN,cl,aw,aA,ax,aB,ay,cm,aO,bs) = if (!(w))
619617 then throw(x)
620618 else {
621619 let cw = br(aR, bs)
622620 let bA = cw._1
623621 let P = cw._2
624622 let bB = cw._3
625623 let cx = aH(ay, aB)
626624 let aJ = cx._1
627625 let aK = cx._2
628626 let cp = aI(P, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
629627 if ((cp != ""))
630628 then throw("Something went wrong!")
631629 else {
632630 let cs = b(S(P, aq))
633631 if ((cs == ""))
634632 then throw("Entry not found")
635633 else {
636634 let cy = b(al(P, aq))
637635 if ((cy == "ILLEGAL"))
638636 then throw("Cannot update ILLEGAL artwork")
639637 else if (!(aX(P, aq)))
640638 then [StringEntry(S(P, aq), aL), StringEntry(T(P, aq), aM), StringEntry(U(P, aq), aw), StringEntry(W(P, aq), ax), StringEntry(V(P, aq), aA), StringEntry(ac(P, aq), aJ), StringEntry(ab(P, aq), aK), StringEntry(ad(P, aq), aN), StringEntry(ae(P, aq), cl), StringEntry(ag(P, aq), cm), IntegerEntry(ah(P, aq), aO)]
641639 else throw("Already minted")
642640 }
643641 }
644642 }
645643
646644
647645
648646 @Callable(aR)
649647 func flagArtwork (R,cz,cy,cA) = {
650648 let cB = bu(aR)
651649 let bA = cB._1
652650 let P = cB._2
653651 if (containsElement([n, toString(this)], P))
654652 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cy))
655653 then [StringEntry(al(cz, R), cy), StringEntry(af(cz, R), cA)]
656654 else throw(("Unknow status " + cy))
657655 else throw("You are not allowed")
658656 }
659657
660658
661659
662660 @Callable(aR)
663661 func deleteArtwork (R,cz) = {
664662 let cC = bu(aR)
665663 let bA = cC._1
666664 let P = cC._2
667665 let aY = if (containsElement([n, toString(this)], P))
668666 then cz
669667 else P
670668 let cs = valueOrErrorMessage(b(S(aY, R)), "No art matching for this address")
671669 if ((cs == ""))
672670 then throw("No art matching for this address")
673671 else {
674672 let H = b(ap(aY, R))
675673 if ((H == ""))
676674 then throw("No art hash matching for this address")
677675 else {
678676 let F = b(Y(aY, R))
679677 if ((F == ""))
680678 then throw("No SIGN ID matching")
681679 else {
682680 let cD = [DeleteEntry(Q(aY, R)), DeleteEntry(S(aY, R)), DeleteEntry(T(aY, R)), DeleteEntry(U(aY, R)), DeleteEntry(W(aY, R)), DeleteEntry(V(aY, R)), DeleteEntry(ab(aY, R)), DeleteEntry(ac(aY, R)), DeleteEntry(ae(aY, R)), DeleteEntry(ad(aY, R)), DeleteEntry(X(aY, R)), DeleteEntry(Y(aY, R)), DeleteEntry(Z(aY, R)), DeleteEntry(aa(aY, R)), DeleteEntry(al(aY, R)), DeleteEntry(ai(aY, R)), DeleteEntry(ak(aY, R)), DeleteEntry(ar(H)), DeleteEntry(as(aY, F)), DeleteEntry(au(H, aY)), DeleteEntry(aj(aY, R)), DeleteEntry(af(aY, R)), DeleteEntry(ag(aY, R)), DeleteEntry(ah(aY, R))]
683681 if (!(aX(aY, R)))
684682 then if (!(w))
685683 then throw(x)
686684 else cD
687685 else if (containsElement([n, toString(this)], P))
688686 then cD
689687 else throw("Art already minted, you cannot delete it")
690688 }
691689 }
692690 }
693691 }
694692
695693
696694
697695 @Callable(aR)
698696 func sellArtwork (R,bg,cE,aW,bD,bs) = {
699697 let cF = br(aR, bs)
700698 let bA = cF._1
701699 let P = cF._2
702700 let bG = b(S(P, R))
703701 if ((bG == ""))
704702 then throw("This art doesn't match your account")
705703 else {
706704 let cy = b(al(P, R))
707705 if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cy))
708706 then throw("Flagged artwork")
709707 else {
710708 let cG = p(("current_bidamount_" + R))
711709 if ((0 > bD))
712710 then throw("Negative end")
713711 else if (if ((bD > 0))
714712 then if ((cE != 1))
715713 then true
716714 else (bg != 0)
717715 else false)
718716 then throw("Timed offer only allowed for unique edition and offer only")
719717 else {
720718 let cH = if ((bD == 0))
721719 then 0
722720 else height
723721 if (!(be(aW)))
724722 then throw("Something went wrong!")
725723 else if (!(bf(aW, bg)))
726724 then throw("Something went wrong!")
727725 else {
728726 let aP = aF(P)
729727 if ((aP != ""))
730728 then throw(aP)
731729 else {
732730 let bI = p(Z(P, R))
733731 let bJ = p(X(P, R))
734732 if ((cE > 100))
735733 then throw("100 editions max per artwork")
736734 else if (if ((bI != 0))
737735 then (bI == bJ)
738736 else false)
739737 then throw("Max edition reached.")
740738 else if (if ((bI > 0))
741739 then (bJ != cE)
742740 else false)
743741 then throw("Cannot change maximum issuable anymore")
744742 else if (if ((cG > 0))
745743 then (bJ != cE)
746744 else false)
747745 then throw("Cannot change maximum issuable with active orders")
748746 else {
749747 let bW = if (if ((bg > 0))
750748 then (cE > 0)
751749 else false)
752750 then true
753751 else false
754752 [BooleanEntry(aa(P, R), bW), IntegerEntry(ai(P, R), bg), IntegerEntry(X(P, R), cE), StringEntry(ak(P, R), aW), IntegerEntry(aj(P, R), (cH + bD))]
755753 }
756754 }
757755 }
758756 }
759757 }
760758 }
761759 }
762760
763761
764762
765763 @Callable(aR)
766764 func buyArtwork (R,bw) = bv(aR, R, bw, "", "")
767765
768766
769767
770768 @Callable(aR)
771769 func setBid (R,bw) = {
772770 let cI = bu(aR)
773771 let bA = cI._1
774772 let P = cI._2
775773 let bB = cI._3
776774 let cJ = aQ(aR)
777775 let aS = cJ._1
778776 let aT = cJ._2
779777 let aW = if (!(isDefined(aS.assetId)))
780778 then "WAVES"
781779 else toBase58String(value(aS.assetId))
782780 let bD = p(aj(bw, R))
783781 if (if ((bD != 0))
784782 then (height >= bD)
785783 else false)
786784 then throw("Sale ended.")
787785 else {
788786 let cG = p(("current_bidamount_" + R))
789787 if (!(be(aW)))
790788 then throw("asset not accepted")
791789 else if (!(bf(aW, aT)))
792790 then throw("Wrong min sell")
793791 else {
794792 let bI = p(Z(bw, R))
795793 let bJ = p(X(bw, R))
796794 if ((0 >= bJ))
797795 then throw("No max edition set for this artwork")
798796 else if ((bI >= bJ))
799797 then throw("Sold out, you cannot bid")
800798 else [StringEntry((((((((("bid_" + R) + "_") + bw) + "_") + P) + "_") + bA) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bB))), IntegerEntry(("current_bidamount_" + R), (cG + 1))]
801799 }
802800 }
803801 }
804802
805803
806804
807805 @Callable(aR)
808806 func acceptBid (R,bw,bx,by) = {
809807 let cK = bu(aR)
810808 let bA = cK._1
811809 let P = cK._2
812810 let bB = cK._3
813811 if ((P != bw))
814812 then throw("You cannot do this action")
815813 else bv(aR, R, bw, bx, by)
816814 }
817815
818816
819817
820818 @Callable(aR)
821819 func cancelBid (R,bw,bx,by) = {
822820 let cL = bu(aR)
823821 let bA = cL._1
824822 let P = cL._2
825823 let bB = cL._3
826824 if (if ((P != by))
827825 then (P != bw)
828826 else false)
829827 then throw("You cannot do this action")
830828 else {
831829 let cM = if ((P == bw))
832830 then by
833831 else P
834832 let cG = p(("current_bidamount_" + R))
835833 let bm = ((((((("bid_" + R) + "_") + bw) + "_") + by) + "_") + bx)
836834 let bn = b((bm + "_OPEN"))
837835 if ((bn == ""))
838836 then throw("Bid not found")
839837 else {
840838 let bo = split(bn, "_")
841839 let aW = bk(bo[0])
842840 let cN = "CANCELED"
843841 [DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cN), ((bn + "_") + toString(bB))), IntegerEntry(("current_bidamount_" + R), (cG - 1)), ScriptTransfer(Address(fromBase58String(cM)), parseIntValue(bo[1]), aW)]
844842 }
845843 }
846844 }
847845
848846
849847 @Verifier(cO)
850848 func cP () = {
851849 let I = cO
852850 if ($isInstanceOf(I, "InvokeScriptTransaction"))
853851 then {
854852 let cQ = I
855853 if (if ((cQ.function == "addArtwork"))
856854 then (cQ.dApp == this)
857855 else false)
858856 then sigVerify(cO.bodyBytes, cO.proofs[0], fromBase58String(cg(cQ.args[13])))
859857 else if (if ((cQ.function == "updateArtwork"))
860858 then (cQ.dApp == this)
861859 else false)
862860 then sigVerify(cO.bodyBytes, cO.proofs[0], fromBase58String(cg(cQ.args[12])))
863861 else if (if ((cQ.function == "sellArtwork"))
864862 then (cQ.dApp == this)
865863 else false)
866864 then sigVerify(cO.bodyBytes, cO.proofs[0], fromBase58String(cg(cQ.args[5])))
867865 else sigVerify(cO.bodyBytes, cO.proofs[0], cO.senderPublicKey)
868866 }
869867 else sigVerify(cO.bodyBytes, cO.proofs[0], cO.senderPublicKey)
870868 }
871869

github/deemru/w8io/169f3d6 
84.18 ms