tx · 3cVi2etBmSmMFj4SvvciXXp3VRUe62MNR9VNyQFwTXiy 3MqCvcQA6Kk6P8UuyXor7pJ2avQexj3JG4c: -0.02000000 Waves 2022.11.08 12:12 [2307972] smart account 3MqCvcQA6Kk6P8UuyXor7pJ2avQexj3JG4c > SELF 0.00000000 Waves
{ "type": 13, "id": "3cVi2etBmSmMFj4SvvciXXp3VRUe62MNR9VNyQFwTXiy", "fee": 2000000, "feeAssetId": null, "timestamp": 1667898718770, "version": 2, "chainId": 84, "sender": "3MqCvcQA6Kk6P8UuyXor7pJ2avQexj3JG4c", "senderPublicKey": "CcyAUmSuwb7ek89W18yVbqPiR3n2cf2En1CKGyRWRCfP", "proofs": [ "31ByLUq9jMKsxDtXiUNHHYTemNQJdwmVh9kWJwKygiW5twN7gLxy58nfmJcRqDnSSEK9ri9FJEjfDzPMg8T4xVHr" ], "script": "base64:BgJkCAISBAoCCAgSCAoGCAgICAgIEgkKBwgICAgICAgSAwoBCBIECgIICBIGCgQICAgIEgoKCAgICAEBAQEBEgsKCQgICAgBAQEBARIFCgMICAQSBAoCCAgSBQoDCAgIEgASAwoBCDYAB1ZFUlNJT04CBTEuMC4wAQ5nZXRTdHJpbmdCeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFA2tleQIAAAh1c2VyRGFwcAkBBXZhbHVlAQkApggBCQEOZ2V0U3RyaW5nQnlLZXkBAg9jb25mX3VzZXJzX2RhcHAAC2ZlZVJlY2VpdmVyCQEOZ2V0U3RyaW5nQnlLZXkBAhFjb25mX2ZlZV9yZWNlaXZlcgALc2lnbkFzc2V0SWQJANkEAQkBDmdldFN0cmluZ0J5S2V5AQIYY29uZl9hY2NlcHRlZF9hc3NldF9TSUdOAAVjaHJpcwkBDmdldFN0cmluZ0J5S2V5AQIMY29uZl9hZG1pbl8xAQ9nZXRJbnRlZ2VyQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAEPZ2V0Qm9vbGVhbkJ5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUDa2V5BwALZGFwcFJ1bm5pbmcJAQt2YWx1ZU9yRWxzZQIJAJsIAgUIdXNlckRhcHACFGNvbmZfZGFwcF9pc19ydW5uaW5nBgAObWFpbnRlbmFuY2VNU0cJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHACFGNvbmZfbWFpbnRlbmFuY2VfbXNnAgAADXVzZXJTdXNwZW5kZWQCCVNVU1BFTkRFRAAQdXNlclVucmVnaXN0ZXJlZAIMVU5SRUdJU1RFUkVEAQt2YWxpZGF0ZUNJRAEDY2lkAwkBCGNvbnRhaW5zAgUDY2lkAgEvAwMJAGYCAEwJALECAQUDY2lkCQAAAgkAsQIBCQCRAwIJALUJAgUDY2lkAgEvAAAAOwcJAGYCABAJALECAQkAkQMCCQC1CQIFA2NpZAIBLwABBwcAB3NpZ25DdXQAAgENa2V5VXNlclN0YXR1cwEGY2FsbGVyCQCsAgICDHVzZXJfc3RhdHVzXwUGY2FsbGVyARZrZXlFdmVudE93bmVyQnlFdmVudElkAQdldmVudElkCQCsAgICEGdldF9ldmVudF9vd25lcl8FB2V2ZW50SWQBEWtleUV2ZW50QWRkZWREYXRlAgZjYWxsZXIHZXZlbnRJZAkArAICCQCsAgIJAKwCAgIQZXZlbnRfYWRkZWREYXRlXwUHZXZlbnRJZAIBXwUGY2FsbGVyAQxrZXlFdmVudERhdGUCBmNhbGxlcgdldmVudElkCQCsAgIJAKwCAgkArAICAgtldmVudF9kYXRlXwUHZXZlbnRJZAIBXwUGY2FsbGVyAQxrZXlFdmVudE5hbWUCBmNhbGxlcgdldmVudElkCQCsAgIJAKwCAgkArAICAgtldmVudF9uYW1lXwUHZXZlbnRJZAIBXwUGY2FsbGVyAQxrZXlFdmVudERlc2MCBmNhbGxlcgdldmVudElkCQCsAgIJAKwCAgkArAICAgtldmVudF9kZXNjXwUHZXZlbnRJZAIBXwUGY2FsbGVyARJrZXlFdmVudERpc3BsYXlDaWQCBmNhbGxlcgdldmVudElkCQCsAgIJAKwCAgkArAICAhFldmVudF9kaXNwbGF5Q2lkXwUHZXZlbnRJZAIBXwUGY2FsbGVyAQxrZXlFdmVudFRhZ3MCBmNhbGxlcgdldmVudElkCQCsAgIJAKwCAgkArAICAgtldmVudF90YWdzXwUHZXZlbnRJZAIBXwUGY2FsbGVyAQxrZXlFdmVudEZsYWcCBmNhbGxlcgdldmVudElkCQCsAgIJAKwCAgkArAICAgtldmVudF9mbGFnXwUHZXZlbnRJZAIBXwUGY2FsbGVyAQxrZXlFdmVudE5vdGUCBmNhbGxlcgdldmVudElkCQCsAgIJAKwCAgkArAICAgtldmVudF9ub3RlXwUHZXZlbnRJZAIBXwUGY2FsbGVyAQ9rZXlFdmVudENyYXdsZXICBmNhbGxlcgdldmVudElkCQCsAgIJAKwCAgkArAICAhFldmVudF9jcmF3bGVyQ2lkXwUHZXZlbnRJZAIBXwUGY2FsbGVyARhrZXlFdmVudFRvdGFsVGlja2V0VHlwZXMCBmNhbGxlcgdldmVudElkCQCsAgIJAKwCAgkArAICAhdldmVudF90b3RhbFRpY2tldFR5cGVzXwUHZXZlbnRJZAIBXwUGY2FsbGVyARprZXlFdmVudFRvdGFsVGlja2V0c0lzc3VlZAIGY2FsbGVyB2V2ZW50SWQJAKwCAgkArAICCQCsAgICEmV2ZW50X3RvdGFsSXNzdWVkXwUHZXZlbnRJZAIBXwUGY2FsbGVyARBrZXlFdmVudENhbmNlbGVkAgZjYWxsZXIHZXZlbnRJZAkArAICCQCsAgIJAKwCAgIPZXZlbnRfY2FuY2VsZWRfBQdldmVudElkAgFfBQZjYWxsZXIBFmtleUV2ZW50Q2FuY2VsZWRSZWFzb24CBmNhbGxlcgdldmVudElkCQCsAgIJAKwCAgkArAICAhVldmVudF9jYW5jZWxlZFJlYXNvbl8FB2V2ZW50SWQCAV8FBmNhbGxlcgEVa2V5RXZlbnRTdGFydGluZ1ByaWNlAgZjYWxsZXIHZXZlbnRJZAkArAICCQCsAgIJAKwCAgIUZXZlbnRfc3RhcnRpbmdQcmljZV8FB2V2ZW50SWQCAV8FBmNhbGxlcgENa2V5VGlja2V0TmFtZQMGY2FsbGVyB2V2ZW50SWQIdGlja2V0SWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgx0aWNrZXRfbmFtZV8FB2V2ZW50SWQCAV8FBmNhbGxlcgIBXwUIdGlja2V0SWQBDWtleVRpY2tldERlc2MDBmNhbGxlcgdldmVudElkCHRpY2tldElkCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIMdGlja2V0X2Rlc2NfBQdldmVudElkAgFfBQZjYWxsZXICAV8FCHRpY2tldElkAQ5rZXlUaWNrZXRQcmljZQMGY2FsbGVyB2V2ZW50SWQIdGlja2V0SWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg10aWNrZXRfcHJpY2VfBQdldmVudElkAgFfBQZjYWxsZXICAV8FCHRpY2tldElkAQ1rZXlUaWNrZXREYXRlAwZjYWxsZXIHZXZlbnRJZAh0aWNrZXRJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDHRpY2tldF9kYXRlXwUHZXZlbnRJZAIBXwUGY2FsbGVyAgFfBQh0aWNrZXRJZAEZa2V5VGlja2V0UmVzZWxsTGltaXRhdGlvbgMGY2FsbGVyB2V2ZW50SWQIdGlja2V0SWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhh0aWNrZXRfcmVzZWxsTGltaXRhdGlvbl8FB2V2ZW50SWQCAV8FBmNhbGxlcgIBXwUIdGlja2V0SWQBFWtleVRpY2tldE1heEF2YWlsYWJsZQMGY2FsbGVyB2V2ZW50SWQIdGlja2V0SWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhR0aWNrZXRfbWF4QXZhaWxhYmxlXwUHZXZlbnRJZAIBXwUGY2FsbGVyAgFfBQh0aWNrZXRJZAEPa2V5VGlja2V0T25TYWxlAwZjYWxsZXIHZXZlbnRJZAh0aWNrZXRJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDnRpY2tldF9vblNhbGVfBQdldmVudElkAgFfBQZjYWxsZXICAV8FCHRpY2tldElkARNrZXlUaWNrZXRBbW91bnRVc2VkBAZjYWxsZXIHZXZlbnRJZAh0aWNrZXRJZAVuZnRJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhJ0aWNrZXRfYW1vdW50VXNlZF8FB2V2ZW50SWQCAV8FBmNhbGxlcgIBXwUIdGlja2V0SWQCAV8FBW5mdElkARRrZXlUaWNrZXRIaXN0b3J5VXNlZAUGY2FsbGVyB2V2ZW50SWQIdGlja2V0SWQFbmZ0SWQKdXNhZ2VJbmRleAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgITdGlja2V0X2hpc3RvcnlVc2VkXwUHZXZlbnRJZAIBXwUGY2FsbGVyAgFfBQh0aWNrZXRJZAIBXwUFbmZ0SWQCAV8FCnVzYWdlSW5kZXgBD2tleVRpY2tldE1heFVzZQMGY2FsbGVyB2V2ZW50SWQIdGlja2V0SWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg50aWNrZXRfbWF4VXNlXwUHZXZlbnRJZAIBXwUGY2FsbGVyAgFfBQh0aWNrZXRJZAEUa2V5VGlja2V0VG90YWxJc3N1ZWQDBmNhbGxlcgdldmVudElkCHRpY2tldElkCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgITdGlja2V0X3RvdGFsSXNzdWVkXwUHZXZlbnRJZAIBXwUGY2FsbGVyAgFfBQh0aWNrZXRJZAEQa2V5VGlja2V0Um95YWx0eQMGY2FsbGVyB2V2ZW50SWQIdGlja2V0SWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhF0aWNrZXRfcm95YWx0aWVzXwUHZXZlbnRJZAIBXwUGY2FsbGVyAgFfBQh0aWNrZXRJZAEOdmFsaWRhdGVTdHJpbmcCA3N0cgNtYXgDCQAAAgkAsQIBBQNzdHIAAAkAAgECGEZpZWxkIGNhbm5vdCBiZSBpcyBlbXB0eQMJAGYCCQCxAgEFA3N0cgUDbWF4CQACAQkArAICBQNzdHICDCBpcyB0b28gbG9uZwYBC3ZhbGlkYXRlSW50AQNudW0JAGYCAAAFA251bQEWZ2V0RXZlbnRPd25lckJ5RXZlbnRJZAEHZXZlbnRJZAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEWa2V5RXZlbnRPd25lckJ5RXZlbnRJZAEFB2V2ZW50SWQCAAEMdmFsaWRhdGVVc2VyAQZjYWxsZXIECnVzZXJTdGF0dXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJAQ1rZXlVc2VyU3RhdHVzAQUGY2FsbGVyBRB1c2VyVW5yZWdpc3RlcmVkAwkAAAIFCnVzZXJTdGF0dXMFEHVzZXJVbnJlZ2lzdGVyZWQCLlJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICJBY2NvdW50IiB0YWIDCQAAAgUKdXNlclN0YXR1cwUNdXNlclN1c3BlbmRlZAIRQWNjb3VudCBzdXNwZW5kZWQCAAERdmFsaWRhdGVFdmVudERhdGEGBmNhbGxlcgpjaWREaXNwbGF5BG5hbWULZGVzY3JpcHRpb24EdGFncwRkYXRlBAljaGVja1VzZXIJAQx2YWxpZGF0ZVVzZXIBBQZjYWxsZXIDCQECIT0CBQljaGVja1VzZXICAAkAAgEFCWNoZWNrVXNlcgMJAAACCQCxAgEFCmNpZERpc3BsYXkAAAkAAgECG0Rpc3BsYXkgQ0lEIGNhbm5vdCBiZSBlbXB0eQMJAQEhAQkBC3ZhbGlkYXRlQ0lEAQUKY2lkRGlzcGxheQkAAgECEFByb2JsZW0gd2l0aCBDSUQDCQEBIQEJAQ52YWxpZGF0ZVN0cmluZwIFBG5hbWUArAIJAAIBAhIzMDAgQ2hhci4gbWF4IG5hbWUDCQEBIQEJAQ52YWxpZGF0ZVN0cmluZwIFC2Rlc2NyaXB0aW9uALgXCQACAQIaMzAwMCBDaGFyLiBtYXggZGVzY3JpcHRpb24DCQEBIQEJAQ52YWxpZGF0ZVN0cmluZwIFBGRhdGUA6AcJAAIBAhMxMDAwIENoYXIuIG1heCBkYXRlAwkAZgIJAJADAQkAtQkCBQR0YWdzAgEsAAUJAAIBAgs1IHRhZ3MgbWF4LgIAARJ2YWxpZGF0ZVRpY2tldERhdGEIB2V2ZW50SWQGY2FsbGVyBG5hbWULZGVzY3JpcHRpb24FcHJpY2UMbWF4QXZhaWxhYmxlBm1heFVzZRByZXNlbGxMaW1pdGF0aW9uBAljaGVja1VzZXIJAQx2YWxpZGF0ZVVzZXIBBQZjYWxsZXIDCQECIT0CBQljaGVja1VzZXICAAkAAgEFCWNoZWNrVXNlcgMJAQEhAQkBDnZhbGlkYXRlU3RyaW5nAgUEbmFtZQDIAQkAAgECEjEwMCBDaGFyLiBtYXggbmFtZQMJAQEhAQkBDnZhbGlkYXRlU3RyaW5nAgULZGVzY3JpcHRpb24A6AcJAAIBAhoxMDAwIENoYXIuIG1heCBkZXNjcmlwdGlvbgMDAwMJAQt2YWxpZGF0ZUludAEFBXByaWNlBgkBC3ZhbGlkYXRlSW50AQUGbWF4VXNlBgkBC3ZhbGlkYXRlSW50AQUMbWF4QXZhaWxhYmxlBgkBC3ZhbGlkYXRlSW50AQUQcmVzZWxsTGltaXRhdGlvbgkAAgECFFBvc2l0aXZlIGFtb3VudCBvbmx5AwkBASEBCQEOdmFsaWRhdGVTdHJpbmcCBQtkZXNjcmlwdGlvbgDoBwkAAgECGjEwMDAgQ2hhci4gbWF4IGRlc2NyaXB0aW9uAgABDGlkQ2FsbGVyRGF0ZQEBaQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwkAlQoDCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQgIBQFpBmNhbGxlcgVieXRlcwgFCWxhc3RCbG9jawl0aW1lc3RhbXABCWlzUGF5bWVudAEBaQMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhNObyBwYXltZW50IGF0dGFjaGVkBAdwYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEBmFtb3VudAkBBXZhbHVlAQgFB3BheW1lbnQGYW1vdW50CQCUCgIFB3BheW1lbnQFBmFtb3VudAEUdmFsaWRhdGVQcmljZUFzc2V0SWQDAWkMcHJpY2VBc3NldElkDGFydHdvcmtQcmljZQQLJHQwNzAxMzcwNDkJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAULJHQwNzAxMzcwNDkCXzEEBmFtb3VudAgFCyR0MDcwMTM3MDQ5Al8yAwkBASEBCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAkAAgECFFdyb25nIGFzc2V0IGF0dGFjaGVkBAdhc3NldElkAwMJAGYCCQCxAgEFDHByaWNlQXNzZXRJZAAACQAAAgkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkBQxwcmljZUFzc2V0SWQHCAUHcGF5bWVudAdhc3NldElkCQACAQIUV3JvbmcgYXNzZXQgYXR0YWNoZWQDCQECIT0CBQxhcnR3b3JrUHJpY2UFBmFtb3VudAkAAgECGlBheW1lbnQgYW1vdW50IGRvbid0IG1hdGNoCQCUCgIFBmFtb3VudAUHYXNzZXRJZAEMaXNFdmVudE93bmVyAgdldmVudElkBmNhbGxlcgQKZXZlbnRPd25lcgkBFmdldEV2ZW50T3duZXJCeUV2ZW50SWQBBQdldmVudElkAwkAAAIFCmV2ZW50T3duZXICAAkAAgECD0V2ZW50IG5vdCBmb3VuZAkAAAIFCmV2ZW50T3duZXIFBmNhbGxlcgELdGlja2V0RXhpc3QDBmNhbGxlcgdldmVudElkCHRpY2tldElkBAZ0aWNrZXQJAQ5nZXRTdHJpbmdCeUtleQEJAQ1rZXlUaWNrZXROYW1lAwUGY2FsbGVyBQdldmVudElkBQh0aWNrZXRJZAkBAiE9AgkAsQIBBQZ0aWNrZXQAAAEPZXZlbnRJc0NhbmNlbGVkAgZpc3N1ZXIHZXZlbnRJZAkBD2dldEJvb2xlYW5CeUtleQEJARBrZXlFdmVudENhbmNlbGVkAgUGaXNzdWVyBQdldmVudElkDQZpbnZva2UBB3NldENvbmYCA2tleQN2YWwEBmNhbGxlcgkApQgBCAUGaW52b2tlBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIDCQEIY29udGFpbnMCBQNrZXkCBWNvbmZfCQDMCAIJAQtTdHJpbmdFbnRyeQIFA2tleQUDdmFsBQNuaWwJAAIBAiBFbnRyaWVzIHN0YXJ0aW5nIHdpdGggY29uZl8gb25seQkAAgECIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHRoaXMBaQEIYWRkRXZlbnQGBG5hbWULZGVzY3JpcHRpb24EdGFncwpjaWREaXNwbGF5B2NyYXdsZXIEZGF0ZQQLJHQwODM3ODg0MjcJAQxpZENhbGxlckRhdGUBBQFpBAdldmVudElkCAULJHQwODM3ODg0MjcCXzEEBmNhbGxlcggFCyR0MDgzNzg4NDI3Al8yBAlhZGRlZERhdGUIBQskdDA4Mzc4ODQyNwJfMwQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGY2FsbGVyAwkBAiE9AgUJY2hlY2tVc2VyAgAJAAIBBQljaGVja1VzZXIEDXZhbGlkYXRlRXZlbnQJARF2YWxpZGF0ZUV2ZW50RGF0YQYFBmNhbGxlcgUKY2lkRGlzcGxheQUEbmFtZQULZGVzY3JpcHRpb24FBHRhZ3MFBGRhdGUDCQECIT0CBQ12YWxpZGF0ZUV2ZW50AgAJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEJAMwIAgkBDEludGVnZXJFbnRyeQIJARFrZXlFdmVudEFkZGVkRGF0ZQIFBmNhbGxlcgUHZXZlbnRJZAUJYWRkZWREYXRlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlFdmVudERhdGUCBQZjYWxsZXIFB2V2ZW50SWQFBGRhdGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUV2ZW50TmFtZQIFBmNhbGxlcgUHZXZlbnRJZAUEbmFtZQkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RXZlbnREZXNjAgUGY2FsbGVyBQdldmVudElkBQtkZXNjcmlwdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQESa2V5RXZlbnREaXNwbGF5Q2lkAgUGY2FsbGVyBQdldmVudElkBQpjaWREaXNwbGF5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlFdmVudFRhZ3MCBQZjYWxsZXIFB2V2ZW50SWQFBHRhZ3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUV2ZW50Q3Jhd2xlcgIFBmNhbGxlcgUHZXZlbnRJZAUHY3Jhd2xlcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGmtleUV2ZW50VG90YWxUaWNrZXRzSXNzdWVkAgUGY2FsbGVyBQdldmVudElkAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJARBrZXlFdmVudENhbmNlbGVkAgUGY2FsbGVyBQdldmVudElkBwkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5RXZlbnRPd25lckJ5RXZlbnRJZAEFB2V2ZW50SWQFBmNhbGxlcgUDbmlsAWkBCWVkaXRFdmVudAcHZXZlbnRJZARuYW1lC2Rlc2NyaXB0aW9uBHRhZ3MKY2lkRGlzcGxheQdjcmF3bGVyBGRhdGUDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cEBmNhbGxlcgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBAljaGVja1VzZXIJAQx2YWxpZGF0ZVVzZXIBBQZjYWxsZXIDCQECIT0CBQljaGVja1VzZXICAAkAAgEFCWNoZWNrVXNlcgQNdmFsaWRhdGVFdmVudAkBEXZhbGlkYXRlRXZlbnREYXRhBgUGY2FsbGVyBQpjaWREaXNwbGF5BQRuYW1lBQtkZXNjcmlwdGlvbgUEdGFncwUEZGF0ZQMJAQIhPQIFDXZhbGlkYXRlRXZlbnQCAAkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQQKZW50cnlFeGlzdAkBDmdldFN0cmluZ0J5S2V5AQkBDGtleUV2ZW50TmFtZQIFBmNhbGxlcgUHZXZlbnRJZAMJAAACBQplbnRyeUV4aXN0AgAJAAIBAg9FbnRyeSBub3QgZm91bmQEBGZsYWcJAQ5nZXRTdHJpbmdCeUtleQEJAQxrZXlFdmVudEZsYWcCBQZjYWxsZXIFB2V2ZW50SWQDCQAAAgUEZmxhZwIHSUxMRUdBTAkAAgECG0Nhbm5vdCB1cGRhdGUgSUxMRUdBTCBFdmVudAkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RXZlbnROYW1lAgUGY2FsbGVyBQdldmVudElkBQRuYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlFdmVudERhdGUCBQZjYWxsZXIFB2V2ZW50SWQFBGRhdGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUV2ZW50RGVzYwIFBmNhbGxlcgUHZXZlbnRJZAULZGVzY3JpcHRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUV2ZW50VGFncwIFBmNhbGxlcgUHZXZlbnRJZAUEdGFncwkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RXZlbnRDcmF3bGVyAgUGY2FsbGVyBQdldmVudElkBQdjcmF3bGVyBQNuaWwBaQELZGVsZXRlRXZlbnQBB2V2ZW50SWQEDSR0MDEwNjQ3MTA2OTEJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFDSR0MDEwNjQ3MTA2OTECXzEEBmNhbGxlcggFDSR0MDEwNjQ3MTA2OTECXzIECWFkZGVkRGF0ZQgFDSR0MDEwNjQ3MTA2OTECXzMECWNoZWNrVXNlcgkBDHZhbGlkYXRlVXNlcgEFBmNhbGxlcgMJAQIhPQIFCWNoZWNrVXNlcgIACQACAQUJY2hlY2tVc2VyAwkBASEBCQEMaXNFdmVudE93bmVyAgUHZXZlbnRJZAUGY2FsbGVyCQACAQIjWW91IGFyZSBub3QgdGhlIG93bmVyIG9mIHRoaXMgZXZlbnQEDWV2ZW50VG90YWxORlQJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEaa2V5RXZlbnRUb3RhbFRpY2tldHNJc3N1ZWQCBQZjYWxsZXIFB2V2ZW50SWQDCQECIT0CBQ1ldmVudFRvdGFsTkZUAAAJAAIBAi1DYW5ub3QgZGVsZXRlIGV2ZW50IHdpdGggYWxyZWFkeSBzb2xkIHRpY2tldHMEF3RvdGFsVGlja2V0VHlwZUZvckV2ZW50CQEPZ2V0SW50ZWdlckJ5S2V5AQkBGGtleUV2ZW50VG90YWxUaWNrZXRUeXBlcwIFBmNhbGxlcgUHZXZlbnRJZAMJAGYCBRd0b3RhbFRpY2tldFR5cGVGb3JFdmVudAAACQACAQIYRGVsZXRlIGFsbCB0aWNrZXRzIGZpcnN0CQDMCAIJAQtEZWxldGVFbnRyeQEJARFrZXlFdmVudEFkZGVkRGF0ZQIFBmNhbGxlcgUHZXZlbnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEMa2V5RXZlbnREYXRlAgUGY2FsbGVyBQdldmVudElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQxrZXlFdmVudE5hbWUCBQZjYWxsZXIFB2V2ZW50SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDGtleUV2ZW50RGVzYwIFBmNhbGxlcgUHZXZlbnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQESa2V5RXZlbnREaXNwbGF5Q2lkAgUGY2FsbGVyBQdldmVudElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQxrZXlFdmVudFRhZ3MCBQZjYWxsZXIFB2V2ZW50SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBD2tleUV2ZW50Q3Jhd2xlcgIFBmNhbGxlcgUHZXZlbnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5RXZlbnRUb3RhbFRpY2tldHNJc3N1ZWQCBQZjYWxsZXIFB2V2ZW50SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEGtleUV2ZW50Q2FuY2VsZWQCBQZjYWxsZXIFB2V2ZW50SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFmtleUV2ZW50T3duZXJCeUV2ZW50SWQBBQdldmVudElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARhrZXlFdmVudFRvdGFsVGlja2V0VHlwZXMCBQZjYWxsZXIFB2V2ZW50SWQFA25pbAFpAQtjYW5jZWxFdmVudAIHZXZlbnRJZAZyZWFzb24EDSR0MDEyMDMyMTIwNzYJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFDSR0MDEyMDMyMTIwNzYCXzEEBmNhbGxlcggFDSR0MDEyMDMyMTIwNzYCXzIECWFkZGVkRGF0ZQgFDSR0MDEyMDMyMTIwNzYCXzMECWNoZWNrVXNlcgkBDHZhbGlkYXRlVXNlcgEFBmNhbGxlcgMJAQIhPQIFCWNoZWNrVXNlcgIACQACAQUJY2hlY2tVc2VyAwkBASEBCQEMaXNFdmVudE93bmVyAgUHZXZlbnRJZAUGY2FsbGVyCQACAQIjWW91IGFyZSBub3QgdGhlIG93bmVyIG9mIHRoaXMgZXZlbnQJAMwIAgkBDEJvb2xlYW5FbnRyeQIJARBrZXlFdmVudENhbmNlbGVkAgUGY2FsbGVyBQdldmVudElkBgkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5RXZlbnRDYW5jZWxlZFJlYXNvbgIFBmNhbGxlcgUHZXZlbnRJZAUGcmVhc29uBQNuaWwBaQEJZmxhZ0V2ZW50BAdldmVudElkBGFkZHIEZmxhZwRub3RlBA0kdDAxMjUxMTEyNTQ0CQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAxMjUxMTEyNTQ0Al8xBAZjYWxsZXIIBQ0kdDAxMjUxMTEyNTQ0Al8yAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAICAAkAzAgCAg9DSEFOR0VfUkVRVUlSRUQJAMwIAgIHRkxBR0dFRAkAzAgCAgdJTExFR0FMBQNuaWwFBGZsYWcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUV2ZW50RmxhZwIFBGFkZHIFB2V2ZW50SWQFBGZsYWcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUV2ZW50Tm90ZQIFBGFkZHIFB2V2ZW50SWQFBG5vdGUFA25pbAkAAgEJAKwCAgIOVW5rbm93IHN0YXR1cyAFBGZsYWcJAAIBAhNZb3UgYXJlIG5vdCBhbGxvd2VkAWkBCWFkZFRpY2tldAgHZXZlbnRJZARuYW1lC2Rlc2NyaXB0aW9uBXByaWNlDG1heEF2YWlsYWJsZQZNYXhVc2UJUm95YWx0aWVzEHJlc2VsbExpbWl0YXRpb24EDSR0MDEzMDg0MTMxMjQJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFDSR0MDEzMDg0MTMxMjQCXzEEBmNhbGxlcggFDSR0MDEzMDg0MTMxMjQCXzIEBGRhdGUIBQ0kdDAxMzA4NDEzMTI0Al8zBAljaGVja1VzZXIJAQx2YWxpZGF0ZVVzZXIBBQZjYWxsZXIDCQECIT0CBQljaGVja1VzZXICAAkAAgEFCWNoZWNrVXNlcgMJAQ9ldmVudElzQ2FuY2VsZWQCBQZjYWxsZXIFB2V2ZW50SWQJAAIBAhhFdmVudCBoYXZlIGJlZW4gY2FuY2VsZWQDCQEBIQEJAQxpc0V2ZW50T3duZXICBQdldmVudElkBQZjYWxsZXIJAAIBAiNZb3UgYXJlIG5vdCB0aGUgb3duZXIgb2YgdGhpcyBldmVudAQOdmFsaWRhdGVUaWNrZXQJARJ2YWxpZGF0ZVRpY2tldERhdGEIBQdldmVudElkBQZjYWxsZXIFBG5hbWUFC2Rlc2NyaXB0aW9uBQVwcmljZQUMbWF4QXZhaWxhYmxlBQZNYXhVc2UFEHJlc2VsbExpbWl0YXRpb24DCQECIT0CBQ52YWxpZGF0ZVRpY2tldAIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBBd0b3RhbFRpY2tldFR5cGVGb3JFdmVudAkBD2dldEludGVnZXJCeUtleQEJARhrZXlFdmVudFRvdGFsVGlja2V0VHlwZXMCBQZjYWxsZXIFB2V2ZW50SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleVRpY2tldE5hbWUDBQZjYWxsZXIFB2V2ZW50SWQFAmlkBQRuYW1lCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5VGlja2V0RGF0ZQMFBmNhbGxlcgUHZXZlbnRJZAUCaWQFBGRhdGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleVRpY2tldERlc2MDBQZjYWxsZXIFB2V2ZW50SWQFAmlkBQtkZXNjcmlwdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmtleVRpY2tldFByaWNlAwUGY2FsbGVyBQdldmVudElkBQJpZAUFcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJARVrZXlUaWNrZXRNYXhBdmFpbGFibGUDBQZjYWxsZXIFB2V2ZW50SWQFAmlkBQxtYXhBdmFpbGFibGUJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQ9rZXlUaWNrZXRPblNhbGUDBQZjYWxsZXIFB2V2ZW50SWQFAmlkBgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2tleVRpY2tldE1heFVzZQMFBmNhbGxlcgUHZXZlbnRJZAUCaWQFBk1heFVzZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFGtleVRpY2tldFRvdGFsSXNzdWVkAwUGY2FsbGVyBQdldmVudElkBQJpZAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEYa2V5RXZlbnRUb3RhbFRpY2tldFR5cGVzAgUGY2FsbGVyBQdldmVudElkCQBkAgUXdG90YWxUaWNrZXRUeXBlRm9yRXZlbnQAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEGtleVRpY2tldFJveWFsdHkDBQZjYWxsZXIFB2V2ZW50SWQFAmlkBQlSb3lhbHRpZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJARlrZXlUaWNrZXRSZXNlbGxMaW1pdGF0aW9uAwUGY2FsbGVyBQdldmVudElkBQJpZAUQcmVzZWxsTGltaXRhdGlvbgUDbmlsAWkBCmVkaXRUaWNrZXQJCHRpY2tldElkB2V2ZW50SWQEbmFtZQtkZXNjcmlwdGlvbgVwcmljZQxtYXhBdmFpbGFibGUGbWF4VXNlCVJveWFsdGllcxByZXNlbGxMaW1pdGF0aW9uBA0kdDAxNDg0ODE0ODg4CQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAxNDg0ODE0ODg4Al8xBAZjYWxsZXIIBQ0kdDAxNDg0ODE0ODg4Al8yBARkYXRlCAUNJHQwMTQ4NDgxNDg4OAJfMwQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGY2FsbGVyAwkBAiE9AgUJY2hlY2tVc2VyAgAJAAIBBQljaGVja1VzZXIDCQEBIQEJAQxpc0V2ZW50T3duZXICBQdldmVudElkBQZjYWxsZXIJAAIBAiNZb3UgYXJlIG5vdCB0aGUgb3duZXIgb2YgdGhpcyBldmVudAMJAQEhAQkBC3RpY2tldEV4aXN0AwUGY2FsbGVyBQdldmVudElkBQh0aWNrZXRJZAkAAgECEFRpY2tldCBub3QgZm91bmQEDnZhbGlkYXRlVGlja2V0CQESdmFsaWRhdGVUaWNrZXREYXRhCAUHZXZlbnRJZAUGY2FsbGVyBQRuYW1lBQtkZXNjcmlwdGlvbgUFcHJpY2UFDG1heEF2YWlsYWJsZQUGbWF4VXNlBRByZXNlbGxMaW1pdGF0aW9uAwkBAiE9AgUOdmFsaWRhdGVUaWNrZXQCAAkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQQKdGlja2V0U29sZAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEUa2V5VGlja2V0VG90YWxJc3N1ZWQDBQZjYWxsZXIFB2V2ZW50SWQFCHRpY2tldElkAAADCQBmAgUKdGlja2V0U29sZAUMbWF4QXZhaWxhYmxlCQACAQI+TWF4IHRpY2tldHMgYXZhaWxhYmxlIGNhbm5vdCBiZSBsb3dlciB0aGFuIGFtb3VudCBhbHJlYWR5IHNvbGQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleVRpY2tldE5hbWUDBQZjYWxsZXIFB2V2ZW50SWQFCHRpY2tldElkBQRuYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlUaWNrZXREZXNjAwUGY2FsbGVyBQdldmVudElkBQh0aWNrZXRJZAULZGVzY3JpcHRpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5rZXlUaWNrZXRQcmljZQMFBmNhbGxlcgUHZXZlbnRJZAUIdGlja2V0SWQFBXByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEVa2V5VGlja2V0TWF4QXZhaWxhYmxlAwUGY2FsbGVyBQdldmVudElkBQh0aWNrZXRJZAUMbWF4QXZhaWxhYmxlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5VGlja2V0TWF4VXNlAwUGY2FsbGVyBQdldmVudElkBQh0aWNrZXRJZAUGbWF4VXNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEQa2V5VGlja2V0Um95YWx0eQMFBmNhbGxlcgUHZXZlbnRJZAUIdGlja2V0SWQFCVJveWFsdGllcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGWtleVRpY2tldFJlc2VsbExpbWl0YXRpb24DBQZjYWxsZXIFB2V2ZW50SWQFCHRpY2tldElkBRByZXNlbGxMaW1pdGF0aW9uBQNuaWwBaQEPcGF1c2VUaWNrZXRTYWxlAwdldmVudElkCHRpY2tldElkBnN0YXR1cwQNJHQwMTYyMTkxNjI1OQkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMTYyMTkxNjI1OQJfMQQGY2FsbGVyCAUNJHQwMTYyMTkxNjI1OQJfMgQEZGF0ZQgFDSR0MDE2MjE5MTYyNTkCXzMECWNoZWNrVXNlcgkBDHZhbGlkYXRlVXNlcgEFBmNhbGxlcgMJAQIhPQIFCWNoZWNrVXNlcgIACQACAQUJY2hlY2tVc2VyAwkBASEBCQEMaXNFdmVudE93bmVyAgUHZXZlbnRJZAUGY2FsbGVyCQACAQIjWW91IGFyZSBub3QgdGhlIG93bmVyIG9mIHRoaXMgZXZlbnQDCQEBIQEJAQt0aWNrZXRFeGlzdAMFBmNhbGxlcgUHZXZlbnRJZAUIdGlja2V0SWQJAAIBAhBUaWNrZXQgbm90IGZvdW5kCQDMCAIJAQxCb29sZWFuRW50cnkCCQEPa2V5VGlja2V0T25TYWxlAwUGY2FsbGVyBQdldmVudElkBQh0aWNrZXRJZAUGc3RhdHVzBQNuaWwBaQEMZGVsZXRlVGlja2V0Agh0aWNrZXRJZAdldmVudElkBA0kdDAxNjcyMjE2NzYyCQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAxNjcyMjE2NzYyAl8xBAZjYWxsZXIIBQ0kdDAxNjcyMjE2NzYyAl8yBARkYXRlCAUNJHQwMTY3MjIxNjc2MgJfMwQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGY2FsbGVyAwkBAiE9AgUJY2hlY2tVc2VyAgAJAAIBBQljaGVja1VzZXIDCQEBIQEJAQxpc0V2ZW50T3duZXICBQdldmVudElkBQZjYWxsZXIJAAIBAiNZb3UgYXJlIG5vdCB0aGUgb3duZXIgb2YgdGhpcyBldmVudAMJAQEhAQkBC3RpY2tldEV4aXN0AwUGY2FsbGVyBQdldmVudElkBQh0aWNrZXRJZAkAAgECEFRpY2tldCBub3QgZm91bmQECmFtb3VudFNvbGQJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEUa2V5VGlja2V0VG90YWxJc3N1ZWQDBQZjYWxsZXIFB2V2ZW50SWQFCHRpY2tldElkAwkBAiE9AgUKYW1vdW50U29sZAAACQACAQImQ2Fubm90IGRlbGV0ZSB0aWNrZXQgdGhhdCBzb2xkIGFscmVhZHkEF3RvdGFsVGlja2V0VHlwZUZvckV2ZW50CQEPZ2V0SW50ZWdlckJ5S2V5AQkBGGtleUV2ZW50VG90YWxUaWNrZXRUeXBlcwIFBmNhbGxlcgUHZXZlbnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQENa2V5VGlja2V0TmFtZQMFBmNhbGxlcgUHZXZlbnRJZAUIdGlja2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDWtleVRpY2tldERhdGUDBQZjYWxsZXIFB2V2ZW50SWQFCHRpY2tldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ1rZXlUaWNrZXREZXNjAwUGY2FsbGVyBQdldmVudElkBQh0aWNrZXRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEOa2V5VGlja2V0UHJpY2UDBQZjYWxsZXIFB2V2ZW50SWQFCHRpY2tldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARVrZXlUaWNrZXRNYXhBdmFpbGFibGUDBQZjYWxsZXIFB2V2ZW50SWQFCHRpY2tldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ9rZXlUaWNrZXRPblNhbGUDBQZjYWxsZXIFB2V2ZW50SWQFCHRpY2tldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ9rZXlUaWNrZXRNYXhVc2UDBQZjYWxsZXIFB2V2ZW50SWQFCHRpY2tldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlUaWNrZXRUb3RhbElzc3VlZAMFBmNhbGxlcgUHZXZlbnRJZAUIdGlja2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEGtleVRpY2tldFJveWFsdHkDBQZjYWxsZXIFB2V2ZW50SWQFCHRpY2tldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJARlrZXlUaWNrZXRSZXNlbGxMaW1pdGF0aW9uAwUGY2FsbGVyBQdldmVudElkBQh0aWNrZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGGtleUV2ZW50VG90YWxUaWNrZXRUeXBlcwIFBmNhbGxlcgUHZXZlbnRJZAkAZQIFF3RvdGFsVGlja2V0VHlwZUZvckV2ZW50AAEFA25pbAFpAQlidXlUaWNrZXQDCHRpY2tldElkB2V2ZW50SWQGaXNzdWVyBA0kdDAxODEzMDE4MTY4CQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAxODEzMDE4MTY4Al8xBAZjYWxsZXIIBQ0kdDAxODEzMDE4MTY4Al8yBARkYXRlCAUNJHQwMTgxMzAxODE2OAJfMwQIdG90YWxORlQJAQt2YWx1ZU9yRWxzZQIJAQ9nZXRJbnRlZ2VyQnlLZXkBAhR0b3RhbF90aWNrZXRzX2lzc3VlZAAAAwkBASEBCQEMaXNFdmVudE93bmVyAgUHZXZlbnRJZAUGaXNzdWVyCQACAQIfRXZlbnQgSUQgYW5kIElzc3VlciBkb24ndCBtYXRjaAMJAQEhAQkBC3RpY2tldEV4aXN0AwUGaXNzdWVyBQdldmVudElkBQh0aWNrZXRJZAkAAgECEFRpY2tldCBub3QgZm91bmQECWV2ZW50TmFtZQkBDmdldFN0cmluZ0J5S2V5AQkBDGtleUV2ZW50TmFtZQIFBmlzc3VlcgUHZXZlbnRJZAMJAAACBQlldmVudE5hbWUCAAkAAgECEUFydCBkb2Vzbid0IGV4aXN0AwkBD2V2ZW50SXNDYW5jZWxlZAIFBmlzc3VlcgUHZXZlbnRJZAkAAgECGEV2ZW50IGhhdmUgYmVlbiBjYW5jZWxlZAQIaXNPblNhbGUJAQ9nZXRCb29sZWFuQnlLZXkBCQEPa2V5VGlja2V0T25TYWxlAwUGaXNzdWVyBQdldmVudElkBQh0aWNrZXRJZAMJAQEhAQUIaXNPblNhbGUJAAIBAhRUaWNrZXRzIG5vdCBmb3Igc2FsZQQKYW1vdW50U29sZAkBD2dldEludGVnZXJCeUtleQEJARRrZXlUaWNrZXRUb3RhbElzc3VlZAMFBmlzc3VlcgUHZXZlbnRJZAUIdGlja2V0SWQEC3RpY2tldFByaWNlCQEPZ2V0SW50ZWdlckJ5S2V5AQkBDmtleVRpY2tldFByaWNlAwUGaXNzdWVyBQdldmVudElkBQh0aWNrZXRJZAQMcHJpY2VBc3NldElkCQDYBAEFC3NpZ25Bc3NldElkBA0kdDAxOTAyMTE5MDk1CQEUdmFsaWRhdGVQcmljZUFzc2V0SWQDBQFpBQxwcmljZUFzc2V0SWQFC3RpY2tldFByaWNlBAZhbW91bnQIBQ0kdDAxOTAyMTE5MDk1Al8xBAdhc3NldElkCAUNJHQwMTkwMjExOTA5NQJfMgQKbWF4Q2FuU2VsbAkBD2dldEludGVnZXJCeUtleQEJARVrZXlUaWNrZXRNYXhBdmFpbGFibGUDBQZpc3N1ZXIFB2V2ZW50SWQFCHRpY2tldElkBA1hbW91bnRGb3JTaWduCQBrAwUGYW1vdW50BQdzaWduQ3V0AGQEEmFtb3VudEZvck9yZ2FuaXplcgkAZQIFBmFtb3VudAUNYW1vdW50Rm9yU2lnbgMJAAACBQphbW91bnRTb2xkBQptYXhDYW5TZWxsCQACAQIMQXJ0IHNvbGQgb3V0BA1uZXdBbW91bnRTb2xkCQBkAgUKYW1vdW50U29sZAABBAlpc3N1ZU1ldGEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgtPcmdhbml6ZXI6IAUGaXNzdWVyAgwsCiBFdmVudElEOiAFB2V2ZW50SWQCDSwKIFRpY2tldElEOiAFCHRpY2tldElkAg4sCiBFdmVudE5hbWU6IAUJZXZlbnROYW1lAgosCiBJc3N1ZTogCQCkAwEFDW5ld0Ftb3VudFNvbGQCAS8JAKQDAQUKbWF4Q2FuU2VsbAQIaXNzdWVORlQJAMIIBQkArAICAgNTVF8JAKQDAQkAZAIFCHRvdGFsTkZUAAEFCWlzc3VlTWV0YQABAAAHBAVpZE5GVAkAuAgBBQhpc3N1ZU5GVAQKc2VsbFN0YXR1cwMJAAACBQ1uZXdBbW91bnRTb2xkBQptYXhDYW5TZWxsBwYECnJlY2VpdmVORlQIBQFpBmNhbGxlcgQHc29sZEtleQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDHRpY2tldF9zb2xkXwkApAMBBQ1uZXdBbW91bnRTb2xkAgRfb2ZfCQCkAwEFCm1heENhblNlbGwCAV8FCHRpY2tldElkAgFfBQdldmVudElkAgFfBQZpc3N1ZXICAV8JANgEAQUFaWRORlQECXNvbGRWYWx1ZQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQUKcmVjZWl2ZU5GVAIBXwkApAMBBQRkYXRlAgFfBQJpZAIBXwkApAMBBQZhbW91bnQCAV8JANgEAQUFaWRORlQECHNvbGREYXRhCQELU3RyaW5nRW50cnkCBQdzb2xkS2V5BQlzb2xkVmFsdWUEDWV2ZW50VG90YWxORlQJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEaa2V5RXZlbnRUb3RhbFRpY2tldHNJc3N1ZWQCBQZpc3N1ZXIFB2V2ZW50SWQEDnRpY2tldFRvdGFsTkZUCQEPZ2V0SW50ZWdlckJ5S2V5AQkBFGtleVRpY2tldFRvdGFsSXNzdWVkAwUGaXNzdWVyBQdldmVudElkBQh0aWNrZXRJZAQGYnV5UmVzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIEbmZ0XwkA2AQBBQVpZE5GVAUHc29sZEtleQkAzAgCCQEMSW50ZWdlckVudHJ5AgIUdG90YWxfdGlja2V0c19pc3N1ZWQJAGQCBQh0b3RhbE5GVAABCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEaa2V5RXZlbnRUb3RhbFRpY2tldHNJc3N1ZWQCBQZpc3N1ZXIFB2V2ZW50SWQJAGQCBQ1ldmVudFRvdGFsTkZUAAEJAMwIAgkBDEludGVnZXJFbnRyeQIJARRrZXlUaWNrZXRUb3RhbElzc3VlZAMFBmlzc3VlcgUHZXZlbnRJZAUIdGlja2V0SWQFDW5ld0Ftb3VudFNvbGQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICA1NUXwkApAMBCQBkAgUIdG90YWxORlQAAQIIX2Fzc2V0SWQJAKwCAgkArAICBQh0aWNrZXRJZAIBXwkA2AQBBQVpZE5GVAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBD2tleVRpY2tldE9uU2FsZQMFBmlzc3VlcgUHZXZlbnRJZAUIdGlja2V0SWQFCnNlbGxTdGF0dXMJAMwIAgkBDEludGVnZXJFbnRyeQIJARNrZXlUaWNrZXRBbW91bnRVc2VkBAUGaXNzdWVyBQdldmVudElkBQh0aWNrZXRJZAkA2AQBBQVpZE5GVAAACQDMCAIFCGlzc3VlTkZUCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZpc3N1ZXIFEmFtb3VudEZvck9yZ2FuaXplcgUHYXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQpyZWNlaXZlTkZUAAEFBWlkTkZUCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQtmZWVSZWNlaXZlcgUNYW1vdW50Rm9yU2lnbgUHYXNzZXRJZAUDbmlsCQDMCAIFCHNvbGREYXRhBQZidXlSZXMBaQEJdXNlVGlja2V0AAQNJHQwMjEyNTUyMTI5MwkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMjEyNTUyMTI5MwJfMQQGY2FsbGVyCAUNJHQwMjEyNTUyMTI5MwJfMgQEZGF0ZQgFDSR0MDIxMjU1MjEyOTMCXzMEDSR0MDIxMjk5MjEzMzUJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAUNJHQwMjEyOTkyMTMzNQJfMQQGYW1vdW50CAUNJHQwMjEyOTkyMTMzNQJfMgMJAQEhAQkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAAIBAhRXcm9uZyBhc3NldCBhdHRhY2hlZAQJZXZlbnREYXRhCQEOZ2V0U3RyaW5nQnlLZXkBCQCsAgICBG5mdF8JANgEAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAMJAAACCQCxAgEFCWV2ZW50RGF0YQAACQACAQIUU29tZXRoaW5nIHdlbnQgd3JvbmcEDGV2ZW50RGF0YUFycgkAtQkCBQlldmVudERhdGECAV8EBmlzc3VlcgkAkQMCBQxldmVudERhdGFBcnIABwQHZXZlbnRJZAkAkQMCBQxldmVudERhdGFBcnIABgQIdGlja2V0SWQJAJEDAgUMZXZlbnREYXRhQXJyAAUDCQEBIQEJAQt0aWNrZXRFeGlzdAMFBmlzc3VlcgUHZXZlbnRJZAUIdGlja2V0SWQJAAIBAhBUaWNrZXQgbm90IGZvdW5kBAphbW91bnRVc2VkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBE2tleVRpY2tldEFtb3VudFVzZWQEBQZpc3N1ZXIFB2V2ZW50SWQFCHRpY2tldElkCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQEDG1heFVzaW5nVGltZQkBD2dldEludGVnZXJCeUtleQEJAQ9rZXlUaWNrZXRNYXhVc2UDBQZpc3N1ZXIFB2V2ZW50SWQFCHRpY2tldElkAwkAAAIFDG1heFVzaW5nVGltZQUKYW1vdW50VXNlZAkAAgEJAKwCAgkArAICAgxUaWNrZXQgdXNlZCAJAKQDAQUKYW1vdW50VXNlZAIOIHRpbWVzIGFscmVhZHkEC2luaXRVc2VEYXRhCQEOZ2V0U3RyaW5nQnlLZXkBCQEUa2V5VGlja2V0SGlzdG9yeVVzZWQFBQZpc3N1ZXIFB2V2ZW50SWQFCHRpY2tldElkCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQCATEEDGZpcnN0VXNlQWRkcgMDAwkAZgIFDG1heFVzaW5nVGltZQABCQBnAgUKYW1vdW50VXNlZAABBwkBAiE9AgULaW5pdFVzZURhdGECAAcJAJEDAgkAtQkCBQtpbml0VXNlRGF0YQIBXwABBQZjYWxsZXIDCQECIT0CBQxmaXJzdFVzZUFkZHIFBmNhbGxlcgkAAgECLVlvdSBhcmUgbm90IHRoZSBpbml0aWFsIHVzZXIgb2YgdGhpcyB0aWNrZXQuIAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBE2tleVRpY2tldEFtb3VudFVzZWQEBQZpc3N1ZXIFB2V2ZW50SWQFCHRpY2tldElkCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQJAGQCBQphbW91bnRVc2VkAAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFGtleVRpY2tldEhpc3RvcnlVc2VkBQUGaXNzdWVyBQdldmVudElkBQh0aWNrZXRJZAkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkCQCkAwEJAGQCBQphbW91bnRVc2VkAAEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFAmlkAgFfBQZjYWxsZXICAV8JAKQDAQUEZGF0ZQIBXwkApAMBCQBkAgUKYW1vdW50VXNlZAABCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZjYWxsZXIAAQgFB3BheW1lbnQHYXNzZXRJZAUDbmlsAWkBC2RlbGV0ZUVudHJ5AQVlbnRyeQQGY2FsbGVyCQClCAEIBQFpBmNhbGxlcgMJAAACBQZjYWxsZXIFBWNocmlzCQDMCAIJAQtEZWxldGVFbnRyeQEFBWVudHJ5BQNuaWwJAAIBAgJubwAL2cvt", "height": 2307972, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 6 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let a = "1.0.0" | |
5 | + | ||
6 | + | func b (c) = valueOrElse(getString(this, c), "") | |
7 | + | ||
8 | + | ||
9 | + | let d = value(addressFromString(b("conf_users_dapp"))) | |
10 | + | ||
11 | + | let e = b("conf_fee_receiver") | |
12 | + | ||
13 | + | let f = fromBase58String(b("conf_accepted_asset_SIGN")) | |
14 | + | ||
15 | + | let g = b("conf_admin_1") | |
16 | + | ||
17 | + | func h (c) = valueOrElse(getInteger(this, c), 0) | |
18 | + | ||
19 | + | ||
20 | + | func i (c) = valueOrElse(getBoolean(this, c), false) | |
21 | + | ||
22 | + | ||
23 | + | let j = valueOrElse(getBoolean(d, "conf_dapp_is_running"), true) | |
24 | + | ||
25 | + | let k = valueOrElse(getString(d, "conf_maintenance_msg"), "") | |
26 | + | ||
27 | + | let l = "SUSPENDED" | |
28 | + | ||
29 | + | let m = "UNREGISTERED" | |
30 | + | ||
31 | + | func n (o) = if (contains(o, "/")) | |
32 | + | then if (if ((76 > size(o))) | |
33 | + | then (size(split(o, "/")[0]) == 59) | |
34 | + | else false) | |
35 | + | then (16 > size(split(o, "/")[1])) | |
36 | + | else false | |
37 | + | else false | |
38 | + | ||
39 | + | ||
40 | + | let p = 2 | |
41 | + | ||
42 | + | func q (r) = ("user_status_" + r) | |
43 | + | ||
44 | + | ||
45 | + | func s (t) = ("get_event_owner_" + t) | |
46 | + | ||
47 | + | ||
48 | + | func u (r,t) = ((("event_addedDate_" + t) + "_") + r) | |
49 | + | ||
50 | + | ||
51 | + | func v (r,t) = ((("event_date_" + t) + "_") + r) | |
52 | + | ||
53 | + | ||
54 | + | func w (r,t) = ((("event_name_" + t) + "_") + r) | |
55 | + | ||
56 | + | ||
57 | + | func x (r,t) = ((("event_desc_" + t) + "_") + r) | |
58 | + | ||
59 | + | ||
60 | + | func y (r,t) = ((("event_displayCid_" + t) + "_") + r) | |
61 | + | ||
62 | + | ||
63 | + | func z (r,t) = ((("event_tags_" + t) + "_") + r) | |
64 | + | ||
65 | + | ||
66 | + | func A (r,t) = ((("event_flag_" + t) + "_") + r) | |
67 | + | ||
68 | + | ||
69 | + | func B (r,t) = ((("event_note_" + t) + "_") + r) | |
70 | + | ||
71 | + | ||
72 | + | func C (r,t) = ((("event_crawlerCid_" + t) + "_") + r) | |
73 | + | ||
74 | + | ||
75 | + | func D (r,t) = ((("event_totalTicketTypes_" + t) + "_") + r) | |
76 | + | ||
77 | + | ||
78 | + | func E (r,t) = ((("event_totalIssued_" + t) + "_") + r) | |
79 | + | ||
80 | + | ||
81 | + | func F (r,t) = ((("event_canceled_" + t) + "_") + r) | |
82 | + | ||
83 | + | ||
84 | + | func G (r,t) = ((("event_canceledReason_" + t) + "_") + r) | |
85 | + | ||
86 | + | ||
87 | + | func H (r,t) = ((("event_startingPrice_" + t) + "_") + r) | |
88 | + | ||
89 | + | ||
90 | + | func I (r,t,J) = ((((("ticket_name_" + t) + "_") + r) + "_") + J) | |
91 | + | ||
92 | + | ||
93 | + | func K (r,t,J) = ((((("ticket_desc_" + t) + "_") + r) + "_") + J) | |
94 | + | ||
95 | + | ||
96 | + | func L (r,t,J) = ((((("ticket_price_" + t) + "_") + r) + "_") + J) | |
97 | + | ||
98 | + | ||
99 | + | func M (r,t,J) = ((((("ticket_date_" + t) + "_") + r) + "_") + J) | |
100 | + | ||
101 | + | ||
102 | + | func N (r,t,J) = ((((("ticket_resellLimitation_" + t) + "_") + r) + "_") + J) | |
103 | + | ||
104 | + | ||
105 | + | func O (r,t,J) = ((((("ticket_maxAvailable_" + t) + "_") + r) + "_") + J) | |
106 | + | ||
107 | + | ||
108 | + | func P (r,t,J) = ((((("ticket_onSale_" + t) + "_") + r) + "_") + J) | |
109 | + | ||
110 | + | ||
111 | + | func Q (r,t,J,R) = ((((((("ticket_amountUsed_" + t) + "_") + r) + "_") + J) + "_") + R) | |
112 | + | ||
113 | + | ||
114 | + | func S (r,t,J,R,T) = ((((((((("ticket_historyUsed_" + t) + "_") + r) + "_") + J) + "_") + R) + "_") + T) | |
115 | + | ||
116 | + | ||
117 | + | func U (r,t,J) = ((((("ticket_maxUse_" + t) + "_") + r) + "_") + J) | |
118 | + | ||
119 | + | ||
120 | + | func V (r,t,J) = ((((("ticket_totalIssued_" + t) + "_") + r) + "_") + J) | |
121 | + | ||
122 | + | ||
123 | + | func W (r,t,J) = ((((("ticket_royalties_" + t) + "_") + r) + "_") + J) | |
124 | + | ||
125 | + | ||
126 | + | func X (Y,Z) = if ((size(Y) == 0)) | |
127 | + | then throw("Field cannot be is empty") | |
128 | + | else if ((size(Y) > Z)) | |
129 | + | then throw((Y + " is too long")) | |
130 | + | else true | |
131 | + | ||
132 | + | ||
133 | + | func aa (ab) = (0 > ab) | |
134 | + | ||
135 | + | ||
136 | + | func ac (t) = valueOrElse(getString(this, s(t)), "") | |
137 | + | ||
138 | + | ||
139 | + | func ad (r) = { | |
140 | + | let ae = valueOrElse(getString(d, q(r)), m) | |
141 | + | if ((ae == m)) | |
142 | + | then "Register this account first with \"Account\" tab" | |
143 | + | else if ((ae == l)) | |
144 | + | then "Account suspended" | |
145 | + | else "" | |
146 | + | } | |
147 | + | ||
148 | + | ||
149 | + | func af (r,ag,ah,ai,aj,ak) = { | |
150 | + | let al = ad(r) | |
151 | + | if ((al != "")) | |
152 | + | then throw(al) | |
153 | + | else if ((size(ag) == 0)) | |
154 | + | then throw("Display CID cannot be empty") | |
155 | + | else if (!(n(ag))) | |
156 | + | then throw("Problem with CID") | |
157 | + | else if (!(X(ah, 300))) | |
158 | + | then throw("300 Char. max name") | |
159 | + | else if (!(X(ai, 3000))) | |
160 | + | then throw("3000 Char. max description") | |
161 | + | else if (!(X(ak, 1000))) | |
162 | + | then throw("1000 Char. max date") | |
163 | + | else if ((size(split(aj, ",")) > 5)) | |
164 | + | then throw("5 tags max.") | |
165 | + | else "" | |
166 | + | } | |
167 | + | ||
168 | + | ||
169 | + | func am (t,r,ah,ai,an,ao,ap,aq) = { | |
170 | + | let al = ad(r) | |
171 | + | if ((al != "")) | |
172 | + | then throw(al) | |
173 | + | else if (!(X(ah, 200))) | |
174 | + | then throw("100 Char. max name") | |
175 | + | else if (!(X(ai, 1000))) | |
176 | + | then throw("1000 Char. max description") | |
177 | + | else if (if (if (if (aa(an)) | |
178 | + | then true | |
179 | + | else aa(ap)) | |
180 | + | then true | |
181 | + | else aa(ao)) | |
182 | + | then true | |
183 | + | else aa(aq)) | |
184 | + | then throw("Positive amount only") | |
185 | + | else if (!(X(ai, 1000))) | |
186 | + | then throw("1000 Char. max description") | |
187 | + | else "" | |
188 | + | } | |
189 | + | ||
190 | + | ||
191 | + | func ar (as) = if (!(j)) | |
192 | + | then throw(k) | |
193 | + | else $Tuple3(toBase58String(as.transactionId), toBase58String(as.caller.bytes), lastBlock.timestamp) | |
194 | + | ||
195 | + | ||
196 | + | func at (as) = if ((size(as.payments) == 0)) | |
197 | + | then throw("No payment attached") | |
198 | + | else { | |
199 | + | let au = value(as.payments[0]) | |
200 | + | let av = value(au.amount) | |
201 | + | $Tuple2(au, av) | |
202 | + | } | |
203 | + | ||
204 | + | ||
205 | + | func aw (as,ax,ay) = { | |
206 | + | let az = at(as) | |
207 | + | let au = az._1 | |
208 | + | let av = az._2 | |
209 | + | if (!(isDefined(au.assetId))) | |
210 | + | then throw("Wrong asset attached") | |
211 | + | else { | |
212 | + | let aA = if (if ((size(ax) > 0)) | |
213 | + | then (toBase58String(value(au.assetId)) == ax) | |
214 | + | else false) | |
215 | + | then au.assetId | |
216 | + | else throw("Wrong asset attached") | |
217 | + | if ((ay != av)) | |
218 | + | then throw("Payment amount don't match") | |
219 | + | else $Tuple2(av, aA) | |
220 | + | } | |
221 | + | } | |
222 | + | ||
223 | + | ||
224 | + | func aB (t,r) = { | |
225 | + | let aC = ac(t) | |
226 | + | if ((aC == "")) | |
227 | + | then throw("Event not found") | |
228 | + | else (aC == r) | |
229 | + | } | |
230 | + | ||
231 | + | ||
232 | + | func aD (r,t,J) = { | |
233 | + | let aE = b(I(r, t, J)) | |
234 | + | (size(aE) != 0) | |
235 | + | } | |
236 | + | ||
237 | + | ||
238 | + | func aF (aG,t) = i(F(aG, t)) | |
239 | + | ||
240 | + | ||
241 | + | @Callable(aH) | |
242 | + | func setConf (c,aI) = { | |
243 | + | let r = toString(aH.caller) | |
244 | + | if (containsElement([g, toString(this)], r)) | |
245 | + | then if (contains(c, "conf_")) | |
246 | + | then [StringEntry(c, aI)] | |
247 | + | else throw("Entries starting with conf_ only") | |
248 | + | else throw("You are not allowed to change this") | |
249 | + | } | |
250 | + | ||
251 | + | ||
252 | + | ||
253 | + | @Callable(as) | |
254 | + | func addEvent (ah,ai,aj,ag,aJ,ak) = { | |
255 | + | let aK = ar(as) | |
256 | + | let t = aK._1 | |
257 | + | let r = aK._2 | |
258 | + | let aL = aK._3 | |
259 | + | let al = ad(r) | |
260 | + | if ((al != "")) | |
261 | + | then throw(al) | |
262 | + | else { | |
263 | + | let aM = af(r, ag, ah, ai, aj, ak) | |
264 | + | if ((aM != "")) | |
265 | + | then throw("Something went wrong!") | |
266 | + | else [IntegerEntry(u(r, t), aL), StringEntry(v(r, t), ak), StringEntry(w(r, t), ah), StringEntry(x(r, t), ai), StringEntry(y(r, t), ag), StringEntry(z(r, t), aj), StringEntry(C(r, t), aJ), IntegerEntry(E(r, t), 0), BooleanEntry(F(r, t), false), StringEntry(s(t), r)] | |
267 | + | } | |
268 | + | } | |
269 | + | ||
270 | + | ||
271 | + | ||
272 | + | @Callable(as) | |
273 | + | func editEvent (t,ah,ai,aj,ag,aJ,ak) = if (!(j)) | |
274 | + | then throw(k) | |
275 | + | else { | |
276 | + | let r = toBase58String(as.caller.bytes) | |
277 | + | let al = ad(r) | |
278 | + | if ((al != "")) | |
279 | + | then throw(al) | |
280 | + | else { | |
281 | + | let aM = af(r, ag, ah, ai, aj, ak) | |
282 | + | if ((aM != "")) | |
283 | + | then throw("Something went wrong!") | |
284 | + | else { | |
285 | + | let aN = b(w(r, t)) | |
286 | + | if ((aN == "")) | |
287 | + | then throw("Entry not found") | |
288 | + | else { | |
289 | + | let aO = b(A(r, t)) | |
290 | + | if ((aO == "ILLEGAL")) | |
291 | + | then throw("Cannot update ILLEGAL Event") | |
292 | + | else [StringEntry(w(r, t), ah), StringEntry(v(r, t), ak), StringEntry(x(r, t), ai), StringEntry(z(r, t), aj), StringEntry(C(r, t), aJ)] | |
293 | + | } | |
294 | + | } | |
295 | + | } | |
296 | + | } | |
297 | + | ||
298 | + | ||
299 | + | ||
300 | + | @Callable(as) | |
301 | + | func deleteEvent (t) = { | |
302 | + | let aP = ar(as) | |
303 | + | let aQ = aP._1 | |
304 | + | let r = aP._2 | |
305 | + | let aL = aP._3 | |
306 | + | let al = ad(r) | |
307 | + | if ((al != "")) | |
308 | + | then throw(al) | |
309 | + | else if (!(aB(t, r))) | |
310 | + | then throw("You are not the owner of this event") | |
311 | + | else { | |
312 | + | let aR = h(E(r, t)) | |
313 | + | if ((aR != 0)) | |
314 | + | then throw("Cannot delete event with already sold tickets") | |
315 | + | else { | |
316 | + | let aS = h(D(r, t)) | |
317 | + | if ((aS > 0)) | |
318 | + | then throw("Delete all tickets first") | |
319 | + | else [DeleteEntry(u(r, t)), DeleteEntry(v(r, t)), DeleteEntry(w(r, t)), DeleteEntry(x(r, t)), DeleteEntry(y(r, t)), DeleteEntry(z(r, t)), DeleteEntry(C(r, t)), DeleteEntry(E(r, t)), DeleteEntry(F(r, t)), DeleteEntry(s(t)), DeleteEntry(D(r, t))] | |
320 | + | } | |
321 | + | } | |
322 | + | } | |
323 | + | ||
324 | + | ||
325 | + | ||
326 | + | @Callable(as) | |
327 | + | func cancelEvent (t,aT) = { | |
328 | + | let aU = ar(as) | |
329 | + | let aQ = aU._1 | |
330 | + | let r = aU._2 | |
331 | + | let aL = aU._3 | |
332 | + | let al = ad(r) | |
333 | + | if ((al != "")) | |
334 | + | then throw(al) | |
335 | + | else if (!(aB(t, r))) | |
336 | + | then throw("You are not the owner of this event") | |
337 | + | else [BooleanEntry(F(r, t), true), StringEntry(G(r, t), aT)] | |
338 | + | } | |
339 | + | ||
340 | + | ||
341 | + | ||
342 | + | @Callable(as) | |
343 | + | func flagEvent (t,aV,aO,aW) = { | |
344 | + | let aX = ar(as) | |
345 | + | let aQ = aX._1 | |
346 | + | let r = aX._2 | |
347 | + | if (containsElement([g, toString(this)], r)) | |
348 | + | then if (containsElement(["", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], aO)) | |
349 | + | then [StringEntry(A(aV, t), aO), StringEntry(B(aV, t), aW)] | |
350 | + | else throw(("Unknow status " + aO)) | |
351 | + | else throw("You are not allowed") | |
352 | + | } | |
353 | + | ||
354 | + | ||
355 | + | ||
356 | + | @Callable(as) | |
357 | + | func addTicket (t,ah,ai,an,ao,aY,aZ,aq) = { | |
358 | + | let ba = ar(as) | |
359 | + | let aQ = ba._1 | |
360 | + | let r = ba._2 | |
361 | + | let ak = ba._3 | |
362 | + | let al = ad(r) | |
363 | + | if ((al != "")) | |
364 | + | then throw(al) | |
365 | + | else if (aF(r, t)) | |
366 | + | then throw("Event have been canceled") | |
367 | + | else if (!(aB(t, r))) | |
368 | + | then throw("You are not the owner of this event") | |
369 | + | else { | |
370 | + | let bb = am(t, r, ah, ai, an, ao, aY, aq) | |
371 | + | if ((bb != "")) | |
372 | + | then throw("Something went wrong!") | |
373 | + | else { | |
374 | + | let aS = h(D(r, t)) | |
375 | + | [StringEntry(I(r, t, aQ), ah), IntegerEntry(M(r, t, aQ), ak), StringEntry(K(r, t, aQ), ai), IntegerEntry(L(r, t, aQ), an), IntegerEntry(O(r, t, aQ), ao), BooleanEntry(P(r, t, aQ), true), IntegerEntry(U(r, t, aQ), aY), IntegerEntry(V(r, t, aQ), 0), IntegerEntry(D(r, t), (aS + 1)), IntegerEntry(W(r, t, aQ), aZ), IntegerEntry(N(r, t, aQ), aq)] | |
376 | + | } | |
377 | + | } | |
378 | + | } | |
379 | + | ||
380 | + | ||
381 | + | ||
382 | + | @Callable(as) | |
383 | + | func editTicket (J,t,ah,ai,an,ao,ap,aZ,aq) = { | |
384 | + | let bc = ar(as) | |
385 | + | let aQ = bc._1 | |
386 | + | let r = bc._2 | |
387 | + | let ak = bc._3 | |
388 | + | let al = ad(r) | |
389 | + | if ((al != "")) | |
390 | + | then throw(al) | |
391 | + | else if (!(aB(t, r))) | |
392 | + | then throw("You are not the owner of this event") | |
393 | + | else if (!(aD(r, t, J))) | |
394 | + | then throw("Ticket not found") | |
395 | + | else { | |
396 | + | let bb = am(t, r, ah, ai, an, ao, ap, aq) | |
397 | + | if ((bb != "")) | |
398 | + | then throw("Something went wrong!") | |
399 | + | else { | |
400 | + | let bd = valueOrElse(getInteger(V(r, t, J)), 0) | |
401 | + | if ((bd > ao)) | |
402 | + | then throw("Max tickets available cannot be lower than amount already sold") | |
403 | + | else [StringEntry(I(r, t, J), ah), StringEntry(K(r, t, J), ai), IntegerEntry(L(r, t, J), an), IntegerEntry(O(r, t, J), ao), IntegerEntry(U(r, t, J), ap), IntegerEntry(W(r, t, J), aZ), IntegerEntry(N(r, t, J), aq)] | |
404 | + | } | |
405 | + | } | |
406 | + | } | |
407 | + | ||
408 | + | ||
409 | + | ||
410 | + | @Callable(as) | |
411 | + | func pauseTicketSale (t,J,be) = { | |
412 | + | let bf = ar(as) | |
413 | + | let aQ = bf._1 | |
414 | + | let r = bf._2 | |
415 | + | let ak = bf._3 | |
416 | + | let al = ad(r) | |
417 | + | if ((al != "")) | |
418 | + | then throw(al) | |
419 | + | else if (!(aB(t, r))) | |
420 | + | then throw("You are not the owner of this event") | |
421 | + | else if (!(aD(r, t, J))) | |
422 | + | then throw("Ticket not found") | |
423 | + | else [BooleanEntry(P(r, t, J), be)] | |
424 | + | } | |
425 | + | ||
426 | + | ||
427 | + | ||
428 | + | @Callable(as) | |
429 | + | func deleteTicket (J,t) = { | |
430 | + | let bg = ar(as) | |
431 | + | let aQ = bg._1 | |
432 | + | let r = bg._2 | |
433 | + | let ak = bg._3 | |
434 | + | let al = ad(r) | |
435 | + | if ((al != "")) | |
436 | + | then throw(al) | |
437 | + | else if (!(aB(t, r))) | |
438 | + | then throw("You are not the owner of this event") | |
439 | + | else if (!(aD(r, t, J))) | |
440 | + | then throw("Ticket not found") | |
441 | + | else { | |
442 | + | let bh = h(V(r, t, J)) | |
443 | + | if ((bh != 0)) | |
444 | + | then throw("Cannot delete ticket that sold already") | |
445 | + | else { | |
446 | + | let aS = h(D(r, t)) | |
447 | + | [DeleteEntry(I(r, t, J)), DeleteEntry(M(r, t, J)), DeleteEntry(K(r, t, J)), DeleteEntry(L(r, t, J)), DeleteEntry(O(r, t, J)), DeleteEntry(P(r, t, J)), DeleteEntry(U(r, t, J)), DeleteEntry(V(r, t, J)), DeleteEntry(W(r, t, J)), DeleteEntry(N(r, t, J)), IntegerEntry(D(r, t), (aS - 1))] | |
448 | + | } | |
449 | + | } | |
450 | + | } | |
451 | + | ||
452 | + | ||
453 | + | ||
454 | + | @Callable(as) | |
455 | + | func buyTicket (J,t,aG) = { | |
456 | + | let bi = ar(as) | |
457 | + | let aQ = bi._1 | |
458 | + | let r = bi._2 | |
459 | + | let ak = bi._3 | |
460 | + | let bj = valueOrElse(h("total_tickets_issued"), 0) | |
461 | + | if (!(aB(t, aG))) | |
462 | + | then throw("Event ID and Issuer don't match") | |
463 | + | else if (!(aD(aG, t, J))) | |
464 | + | then throw("Ticket not found") | |
465 | + | else { | |
466 | + | let bk = b(w(aG, t)) | |
467 | + | if ((bk == "")) | |
468 | + | then throw("Art doesn't exist") | |
469 | + | else if (aF(aG, t)) | |
470 | + | then throw("Event have been canceled") | |
471 | + | else { | |
472 | + | let bl = i(P(aG, t, J)) | |
473 | + | if (!(bl)) | |
474 | + | then throw("Tickets not for sale") | |
475 | + | else { | |
476 | + | let bh = h(V(aG, t, J)) | |
477 | + | let bm = h(L(aG, t, J)) | |
478 | + | let ax = toBase58String(f) | |
479 | + | let bn = aw(as, ax, bm) | |
480 | + | let av = bn._1 | |
481 | + | let aA = bn._2 | |
482 | + | let bo = h(O(aG, t, J)) | |
483 | + | let bp = fraction(av, p, 100) | |
484 | + | let bq = (av - bp) | |
485 | + | if ((bh == bo)) | |
486 | + | then throw("Art sold out") | |
487 | + | else { | |
488 | + | let br = (bh + 1) | |
489 | + | let bs = ((((((((((("Organizer: " + aG) + ", | |
490 | + | EventID: ") + t) + ", | |
491 | + | TicketID: ") + J) + ", | |
492 | + | EventName: ") + bk) + ", | |
493 | + | Issue: ") + toString(br)) + "/") + toString(bo)) | |
494 | + | let bt = Issue(("ST_" + toString((bj + 1))), bs, 1, 0, false) | |
495 | + | let bu = calculateAssetId(bt) | |
496 | + | let bv = if ((br == bo)) | |
497 | + | then false | |
498 | + | else true | |
499 | + | let bw = as.caller | |
500 | + | let bx = ((((((((((("ticket_sold_" + toString(br)) + "_of_") + toString(bo)) + "_") + J) + "_") + t) + "_") + aG) + "_") + toBase58String(bu)) | |
501 | + | let by = ((((((((toString(bw) + "_") + toString(ak)) + "_") + aQ) + "_") + toString(av)) + "_") + toBase58String(bu)) | |
502 | + | let bz = StringEntry(bx, by) | |
503 | + | let aR = h(E(aG, t)) | |
504 | + | let bA = h(V(aG, t, J)) | |
505 | + | let bB = [StringEntry(("nft_" + toBase58String(bu)), bx), IntegerEntry("total_tickets_issued", (bj + 1)), IntegerEntry(E(aG, t), (aR + 1)), IntegerEntry(V(aG, t, J), br), StringEntry((("ST_" + toString((bj + 1))) + "_assetId"), ((J + "_") + toBase58String(bu))), BooleanEntry(P(aG, t, J), bv), IntegerEntry(Q(aG, t, J, toBase58String(bu)), 0), bt, ScriptTransfer(Address(fromBase58String(aG)), bq, aA), ScriptTransfer(bw, 1, bu), ScriptTransfer(Address(fromBase58String(e)), bp, aA)] | |
506 | + | bz :: bB | |
507 | + | } | |
508 | + | } | |
509 | + | } | |
510 | + | } | |
511 | + | } | |
512 | + | ||
513 | + | ||
514 | + | ||
515 | + | @Callable(as) | |
516 | + | func useTicket () = { | |
517 | + | let bC = ar(as) | |
518 | + | let aQ = bC._1 | |
519 | + | let r = bC._2 | |
520 | + | let ak = bC._3 | |
521 | + | let bD = at(as) | |
522 | + | let au = bD._1 | |
523 | + | let av = bD._2 | |
524 | + | if (!(isDefined(au.assetId))) | |
525 | + | then throw("Wrong asset attached") | |
526 | + | else { | |
527 | + | let bE = b(("nft_" + toBase58String(value(au.assetId)))) | |
528 | + | if ((size(bE) == 0)) | |
529 | + | then throw("Something went wrong") | |
530 | + | else { | |
531 | + | let bF = split(bE, "_") | |
532 | + | let aG = bF[7] | |
533 | + | let t = bF[6] | |
534 | + | let J = bF[5] | |
535 | + | if (!(aD(aG, t, J))) | |
536 | + | then throw("Ticket not found") | |
537 | + | else { | |
538 | + | let bG = h(Q(aG, t, J, toBase58String(value(au.assetId)))) | |
539 | + | let bH = h(U(aG, t, J)) | |
540 | + | if ((bH == bG)) | |
541 | + | then throw((("Ticket used " + toString(bG)) + " times already")) | |
542 | + | else { | |
543 | + | let bI = b(S(aG, t, J, toBase58String(value(au.assetId)), "1")) | |
544 | + | let bJ = if (if (if ((bH > 1)) | |
545 | + | then (bG >= 1) | |
546 | + | else false) | |
547 | + | then (bI != "") | |
548 | + | else false) | |
549 | + | then split(bI, "_")[1] | |
550 | + | else r | |
551 | + | if ((bJ != r)) | |
552 | + | then throw("You are not the initial user of this ticket. ") | |
553 | + | else [IntegerEntry(Q(aG, t, J, toBase58String(value(au.assetId))), (bG + 1)), StringEntry(S(aG, t, J, toBase58String(value(au.assetId)), toString((bG + 1))), ((((((aQ + "_") + r) + "_") + toString(ak)) + "_") + toString((bG + 1)))), ScriptTransfer(Address(fromBase58String(r)), 1, au.assetId)] | |
554 | + | } | |
555 | + | } | |
556 | + | } | |
557 | + | } | |
558 | + | } | |
559 | + | ||
560 | + | ||
561 | + | ||
562 | + | @Callable(as) | |
563 | + | func deleteEntry (bK) = { | |
564 | + | let r = toString(as.caller) | |
565 | + | if ((r == g)) | |
566 | + | then [DeleteEntry(bK)] | |
567 | + | else throw("no") | |
568 | + | } | |
569 | + | ||
570 | + |
github/deemru/w8io/873ac7e 68.33 ms ◑![]()