tx · 84drU6s3DSpw3Z9oXBGX5qjDy5fDurZJZ817uQ6havyo

3Mp3nG9T5fKGziHW8mcCqx3jMFx3towh3WA:  -0.02800000 Waves

2022.07.11 18:43 [2135262] smart account 3Mp3nG9T5fKGziHW8mcCqx3jMFx3towh3WA > SELF 0.00000000 Waves

{ "type": 13, "id": "84drU6s3DSpw3Z9oXBGX5qjDy5fDurZJZ817uQ6havyo", "fee": 2800000, "feeAssetId": null, "timestamp": 1657554137676, "version": 1, "sender": "3Mp3nG9T5fKGziHW8mcCqx3jMFx3towh3WA", "senderPublicKey": "D46gQxzmdzdCTYRg6dMcwFoUrc6ZmxF6GKd5ZoTkvzp1", "proofs": [ "4UEAZSjjAzkGRL9aW3wDrFt6yzt73btVzHdtFFNJmSTJoYxQJHmpckhepFRVn5mp6y3JU5b12WHrHF8Mc2ofvHH7" ], "script": "base64:BgJbCAISAwoBCBIAEgQKAggBEgcKBQgICAgBEgQKAggIEgUKAwgIARIECgIICBIDCgEBEgMKAQESBAoCCAgSAwoBCBIAEgMKAQESABIECgIICBIECgIICBIECgIICDEACXNlcGFyYXRvcgICX18ADnBvb2xXZWlnaHRNdWx0AIDC1y8AD21heERlcHRoRGVmYXVsdAAKABZmaW5hbGl6YXRpb25TdGFnZVRvdGFsAAAAF2ZpbmFsaXphdGlvblN0YWdlU2hhcmVzAAEADmtleUVwb2NoTGVuZ3RoCQC5CQIJAMwIAgICJXMJAMwIAgILZXBvY2hMZW5ndGgFA25pbAUJc2VwYXJhdG9yAA9rZXlDdXJyZW50RXBvY2gJALkJAgkAzAgCAgIlcwkAzAgCAgxjdXJyZW50RXBvY2gFA25pbAUJc2VwYXJhdG9yAAtrZXlNYXhEZXB0aAkAuQkCCQDMCAICAiVzCQDMCAICCG1heERlcHRoBQNuaWwFCXNlcGFyYXRvcgAia2V5Vm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdAkAuQkCCQDMCAICAiVzCQDMCAICH3ZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QFA25pbAUJc2VwYXJhdG9yABJrZXlGYWN0b3J5Q29udHJhY3QJALkJAgkAzAgCAgIlcwkAzAgCAg9mYWN0b3J5Q29udHJhY3QFA25pbAUJc2VwYXJhdG9yABNrZXlCb29zdGluZ0NvbnRyYWN0CQC5CQIJAMwIAgICJXMJAMwIAgIQYm9vc3RpbmdDb250cmFjdAUDbmlsBQlzZXBhcmF0b3IAEmtleVN0YWtpbmdDb250cmFjdAkAuQkCCQDMCAICAiVzCQDMCAICD3N0YWtpbmdDb250cmFjdAUDbmlsBQlzZXBhcmF0b3IAFGtleUZpbmFsaXphdGlvblN0YWdlCQC5CQIJAMwIAgICJXMJAMwIAgIRZmluYWxpemF0aW9uU3RhZ2UFA25pbAUJc2VwYXJhdG9yAAtrZXlOZXh0UG9vbAkAuQkCCQDMCAICAiVzCQDMCAICCG5leHRQb29sBQNuaWwFCXNlcGFyYXRvcgALa2V5TmV4dFVzZXIJALkJAgkAzAgCAgIlcwkAzAgCAghuZXh0VXNlcgUDbmlsBQlzZXBhcmF0b3IADmtleVN0YXJ0SGVpZ2h0CQC5CQIJAMwIAgICJXMJAMwIAgILc3RhcnRIZWlnaHQFA25pbAUJc2VwYXJhdG9yABFrZXlDdXJyZW50RXBvY2hVaQkAuQkCCQDMCAICAiVzCQDMCAICDmN1cnJlbnRFcG9jaFVpBQNuaWwFCXNlcGFyYXRvcgAQa2V5U3RhcnRIZWlnaHRVaQkAuQkCCQDMCAICAiVzCQDMCAICDXN0YXJ0SGVpZ2h0VWkFA25pbAUJc2VwYXJhdG9yARVrZXlTdGFydEhlaWdodEJ5RXBvY2gBBWVwb2NoCQC5CQIJAMwIAgIEJXMlZAkAzAgCAgtzdGFydEhlaWdodAkAzAgCCQCkAwEFBWVwb2NoBQNuaWwFCXNlcGFyYXRvcgEMa2V5RmluYWxpemVkAQVlcG9jaAkAuQkCCQDMCAICBCVzJWQJAMwIAgIJZmluYWxpemVkCQDMCAIJAKQDAQUFZXBvY2gFA25pbAUJc2VwYXJhdG9yAQlrZXlJbkxpc3QBBHBvb2wECyR0MDE0MzYxNDc2BQRwb29sBA1hbW91bnRBc3NldElkCAULJHQwMTQzNjE0NzYCXzEEDHByaWNlQXNzZXRJZAgFCyR0MDE0MzYxNDc2Al8yCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICBmluTGlzdAkAzAgCBQ1hbW91bnRBc3NldElkCQDMCAIFDHByaWNlQXNzZXRJZAUDbmlsBQlzZXBhcmF0b3IBB2tleVVzZWQCB2FkZHJlc3MFZXBvY2gJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgIEdXNlZAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgkApAMBBQVlcG9jaAUDbmlsBQlzZXBhcmF0b3IBB2tleVZvdGUDBHBvb2wHYWRkcmVzcwVlcG9jaAQLJHQwMTc1MDE3OTAFBHBvb2wEDWFtb3VudEFzc2V0SWQIBQskdDAxNzUwMTc5MAJfMQQMcHJpY2VBc3NldElkCAULJHQwMTc1MDE3OTACXzIJALkJAgkAzAgCAgolcyVzJXMlcyVkCQDMCAICBHZvdGUJAMwIAgUNYW1vdW50QXNzZXRJZAkAzAgCBQxwcmljZUFzc2V0SWQJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAIJAKQDAQUFZXBvY2gFA25pbAUJc2VwYXJhdG9yAQ9rZXlWb3RpbmdSZXN1bHQCBHBvb2wFZXBvY2gECyR0MDE5NzIyMDEyBQRwb29sBA1hbW91bnRBc3NldElkCAULJHQwMTk3MjIwMTICXzEEDHByaWNlQXNzZXRJZAgFCyR0MDE5NzIyMDEyAl8yCQC5CQIJAMwIAgIIJXMlcyVzJWQJAMwIAgIMdm90aW5nUmVzdWx0CQDMCAIFDWFtb3VudEFzc2V0SWQJAMwIAgUMcHJpY2VBc3NldElkCQDMCAIJAKQDAQUFZXBvY2gFA25pbAUJc2VwYXJhdG9yAQxrZXlQb29sU2hhcmUCBHBvb2wFZXBvY2gECyR0MDIxNzcyMjE3BQRwb29sBA1hbW91bnRBc3NldElkCAULJHQwMjE3NzIyMTcCXzEEDHByaWNlQXNzZXRJZAgFCyR0MDIxNzcyMjE3Al8yCQC5CQIJAMwIAgIIJXMlcyVzJWQJAMwIAgIJcG9vbFNoYXJlCQDMCAIFDWFtb3VudEFzc2V0SWQJAMwIAgUMcHJpY2VBc3NldElkCQDMCAIJAKQDAQUFZXBvY2gFA25pbAUJc2VwYXJhdG9yAQ1rZXlUb3RhbFZvdGVzAQVlcG9jaAkAuQkCCQDMCAICBCVzJWQJAMwIAgIKdG90YWxWb3RlcwkAzAgCCQCkAwEFBWVwb2NoBQNuaWwFCXNlcGFyYXRvcgEOZ2V0VmFsdWVPckZhaWwDB2FkZHJlc3MDa2V5BHR5cGUEBWVycm9yCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBAckbWF0Y2gwBQR0eXBlAwkAAQIFByRtYXRjaDACBlN0cmluZwQDc3RyBQckbWF0Y2gwCQCdCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgNJbnQEA2ludAUHJG1hdGNoMAkAmggCBQdhZGRyZXNzBQNrZXkJAAIBAhJpbnZhbGlkIGVudHJ5IHR5cGUFBWVycm9yAQxnZXRTdHJPckZhaWwCB2FkZHJlc3MDa2V5CgABQAkBDmdldFZhbHVlT3JGYWlsAwUHYWRkcmVzcwUDa2V5AgADCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQkBDmdldFZhbHVlT3JGYWlsAwUHYWRkcmVzcwUDa2V5AgACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwEMZ2V0SW50T3JGYWlsAgdhZGRyZXNzA2tleQoAAUAJAQ5nZXRWYWx1ZU9yRmFpbAMFB2FkZHJlc3MFA2tleQAAAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEJAQ5nZXRWYWx1ZU9yRmFpbAMFB2FkZHJlc3MFA2tleQAAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBDHBvb2xUb1N0cmluZwEEcG9vbAkArAICCQCsAgIIBQRwb29sAl8xBQlzZXBhcmF0b3IIBQRwb29sAl8yAQxzdHJpbmdUb1Bvb2wBA3N0cgQFcGFydHMJALUJAgUDc3RyBQlzZXBhcmF0b3IDCQAAAgkAkAMBBQVwYXJ0cwACCQCUCgIJAJEDAgUFcGFydHMAAAkAkQMCBQVwYXJ0cwABCQACAQITaW52YWxpZCBwb29sIHN0cmluZwEWZ2V0THBBc3NldEJ5UG9vbEFzc2V0cwINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQKAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQxiYXNlQXNzZXRTdHIJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUMYmFzZUFzc2V0U3RyCgEpa2V5TWFwcGluZ1Bvb2xBc3NldHNUb1Bvb2xDb250cmFjdEFkZHJlc3MCGGludGVybmFsQW1vdW50QXNzZXRJZFN0chdpbnRlcm5hbFByaWNlQXNzZXRJZFN0cgkArAICCQCsAgIJAKwCAgkArAICAgolZCVkJXMlc19fCQCkAwEFGGludGVybmFsQW1vdW50QXNzZXRJZFN0cgICX18JAKQDAQUXaW50ZXJuYWxQcmljZUFzc2V0SWRTdHICI19fbWFwcGluZ3NfX3Bvb2xBc3NldHMyUG9vbENvbnRyYWN0CgEfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAETcG9vbENvbnRyYWN0QWRkcmVzcwkArAICCQCsAgICCCVzJXMlc19fBRNwb29sQ29udHJhY3RBZGRyZXNzAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAQPZmFjdG9yeUNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQEMZ2V0U3RyT3JGYWlsAgUEdGhpcwUSa2V5RmFjdG9yeUNvbnRyYWN0BBVhbW91bnRBc3NldEludGVybmFsSWQJAQxnZXRJbnRPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQUNYW1vdW50QXNzZXRJZAQUcHJpY2VBc3NldEludGVybmFsSWQJAQxnZXRJbnRPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQUMcHJpY2VBc3NldElkBBNwb29sQ29udHJhY3RBZGRyZXNzCQEMZ2V0U3RyT3JGYWlsAgUPZmFjdG9yeUNvbnRyYWN0CQEpa2V5TWFwcGluZ1Bvb2xBc3NldHNUb1Bvb2xDb250cmFjdEFkZHJlc3MCBRVhbW91bnRBc3NldEludGVybmFsSWQFFHByaWNlQXNzZXRJbnRlcm5hbElkBAlscEFzc2V0SWQJAQxnZXRTdHJPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJAR9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0AQUTcG9vbENvbnRyYWN0QWRkcmVzcwUJbHBBc3NldElkARhjaGVja1d4RW1pc3Npb25Qb29sTGFiZWwBBHBvb2wECyR0MDQ0NTk0NDk5BQRwb29sBA1hbW91bnRBc3NldElkCAULJHQwNDQ1OTQ0OTkCXzEEDHByaWNlQXNzZXRJZAgFCyR0MDQ0NTk0NDk5Al8yBA9mYWN0b3J5Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQxnZXRTdHJPckZhaWwCBQR0aGlzBRJrZXlGYWN0b3J5Q29udHJhY3QKAAFACQD8BwQFD2ZhY3RvcnlDb250cmFjdAIYY2hlY2tXeEVtaXNzaW9uUG9vbExhYmVsCQDMCAIFDWFtb3VudEFzc2V0SWQJAMwIAgUMcHJpY2VBc3NldElkBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCGGNoZWNrV3hFbWlzc2lvblBvb2xMYWJlbAkAzAgCBQ1hbW91bnRBc3NldElkCQDMCAIFDHByaWNlQXNzZXRJZAUDbmlsBQNuaWwCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4ADXBvb2xzTGlzdE5hbWUCBXBvb2xzARBnZXRWb3Rlc0xpc3ROYW1lAQRwb29sBAskdDA0ODAwNDg0MAUEcG9vbAQNYW1vdW50QXNzZXRJZAgFCyR0MDQ4MDA0ODQwAl8xBAxwcmljZUFzc2V0SWQIBQskdDA0ODAwNDg0MAJfMgkAuQkCCQDMCAICBXZvdGVzCQDMCAIFDWFtb3VudEFzc2V0SWQJAMwIAgUMcHJpY2VBc3NldElkBQNuaWwFCXNlcGFyYXRvcgELa2V5TGlzdEhlYWQBCGxpc3ROYW1lBARtZXRhAwkAAAIFCGxpc3ROYW1lBQ1wb29sc0xpc3ROYW1lAgQlcyVzAgglcyVzJXMlcwkAuQkCCQDMCAIFBG1ldGEJAMwIAgUIbGlzdE5hbWUJAMwIAgIEaGVhZAUDbmlsBQlzZXBhcmF0b3IBC2tleUxpc3RTaXplAQhsaXN0TmFtZQQEbWV0YQMJAAACBQhsaXN0TmFtZQUNcG9vbHNMaXN0TmFtZQIEJXMlcwIIJXMlcyVzJXMJALkJAgkAzAgCBQRtZXRhCQDMCAIFCGxpc3ROYW1lCQDMCAICBHNpemUFA25pbAUJc2VwYXJhdG9yAQtrZXlMaXN0UHJldgIIbGlzdE5hbWUCaWQEBG1ldGEDCQAAAgUIbGlzdE5hbWUFDXBvb2xzTGlzdE5hbWUCCCVzJXMlcyVzAgolcyVzJXMlcyVzCQC5CQIJAMwIAgUEbWV0YQkAzAgCBQhsaXN0TmFtZQkAzAgCBQJpZAkAzAgCAgRwcmV2BQNuaWwFCXNlcGFyYXRvcgELa2V5TGlzdE5leHQCCGxpc3ROYW1lAmlkBARtZXRhAwkAAAIFCGxpc3ROYW1lBQ1wb29sc0xpc3ROYW1lAgglcyVzJXMlcwIKJXMlcyVzJXMlcwkAuQkCCQDMCAIFBG1ldGEJAMwIAgUIbGlzdE5hbWUJAMwIAgUCaWQJAMwIAgIEbmV4dAUDbmlsBQlzZXBhcmF0b3IBDGNvbnRhaW5zTm9kZQIIbGlzdE5hbWUCaWQECmhlYWRPclVuaXQJAJ0IAgUEdGhpcwkBC2tleUxpc3RIZWFkAQUIbGlzdE5hbWUECnByZXZPclVuaXQJAJ0IAgUEdGhpcwkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUFAmlkBApuZXh0T3JVbml0CQCdCAIFBHRoaXMJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lBQJpZAMDCQAAAgUCaWQJAQt2YWx1ZU9yRWxzZQIFCmhlYWRPclVuaXQCAAYJAQIhPQIFCnByZXZPclVuaXQFBHVuaXQGCQECIT0CBQpuZXh0T3JVbml0BQR1bml0ARFpbnNlcnROb2RlQWN0aW9ucwIIbGlzdE5hbWUCaWQECmhlYWRPclVuaXQJAJ0IAgUEdGhpcwkBC2tleUxpc3RIZWFkAQUIbGlzdE5hbWUECGxpc3RTaXplCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQtrZXlMaXN0U2l6ZQEFCGxpc3ROYW1lAAAECWNoZWNrTm9kZQMJAQEhAQkBDGNvbnRhaW5zTm9kZQIFCGxpc3ROYW1lBQJpZAYJAAIBAgtOb2RlIGV4aXN0cwMJAAACBQljaGVja05vZGUFCWNoZWNrTm9kZQkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQtrZXlMaXN0U2l6ZQEFCGxpc3ROYW1lCQBkAgUIbGlzdFNpemUAAQUDbmlsAwkBAiE9AgUKaGVhZE9yVW5pdAUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TGlzdE5leHQCBQhsaXN0TmFtZQUCaWQJAQV2YWx1ZQEFCmhlYWRPclVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUJAQV2YWx1ZQEFCmhlYWRPclVuaXQFAmlkBQNuaWwFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TGlzdEhlYWQBBQhsaXN0TmFtZQUCaWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgERZGVsZXRlTm9kZUFjdGlvbnMCCGxpc3ROYW1lAmlkBApoZWFkT3JVbml0CQCdCAIFBHRoaXMJAQtrZXlMaXN0SGVhZAEFCGxpc3ROYW1lBAhsaXN0U2l6ZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQELa2V5TGlzdFNpemUBBQhsaXN0TmFtZQAABApwcmV2T3JVbml0CQCdCAIFBHRoaXMJAQtrZXlMaXN0UHJldgIFCGxpc3ROYW1lBQJpZAQKbmV4dE9yVW5pdAkAnQgCBQR0aGlzCQELa2V5TGlzdE5leHQCBQhsaXN0TmFtZQUCaWQJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBC2tleUxpc3RTaXplAQUIbGlzdE5hbWUJAGUCBQhsaXN0U2l6ZQABBQNuaWwDAwkBAiE9AgUKcHJldk9yVW5pdAUEdW5pdAkBAiE9AgUKbmV4dE9yVW5pdAUEdW5pdAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleUxpc3ROZXh0AgUIbGlzdE5hbWUJAQV2YWx1ZQEFCnByZXZPclVuaXQJAQV2YWx1ZQEFCm5leHRPclVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUJAQV2YWx1ZQEFCm5leHRPclVuaXQJAQV2YWx1ZQEFCnByZXZPclVuaXQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUFAmlkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lBQJpZAUDbmlsAwkBAiE9AgUKbmV4dE9yVW5pdAUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TGlzdEhlYWQBBQhsaXN0TmFtZQkBBXZhbHVlAQUKbmV4dE9yVW5pdAkAzAgCCQELRGVsZXRlRW50cnkBCQELa2V5TGlzdE5leHQCBQhsaXN0TmFtZQUCaWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUJAQV2YWx1ZQEFCm5leHRPclVuaXQFA25pbAMJAQIhPQIFCnByZXZPclVuaXQFBHVuaXQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUFAmlkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lCQEFdmFsdWUBBQpwcmV2T3JVbml0BQNuaWwDCQAAAgUCaWQJAQt2YWx1ZU9yRWxzZQIFCmhlYWRPclVuaXQCAAkAzAgCCQELRGVsZXRlRW50cnkBCQELa2V5TGlzdEhlYWQBBQhsaXN0TmFtZQUDbmlsCQACAQkArAICCQCsAgIJAKwCAgIOaW52YWxpZCBub2RlOiAFCGxpc3ROYW1lAgEuBQJpZAETa2V5TWFuYWdlclB1YmxpY0tleQACFCVzX19tYW5hZ2VyUHVibGljS2V5ARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yABVwZXJtaXNzaW9uRGVuaWVkRXJyb3IJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAEIbXVzdFRoaXMBAWkDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgUVcGVybWlzc2lvbkRlbmllZEVycm9yAQttdXN0TWFuYWdlcgEBaQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQUCcGsGBRVwZXJtaXNzaW9uRGVuaWVkRXJyb3IDCQABAgUHJG1hdGNoMAIEVW5pdAkBCG11c3RUaGlzAQUBaQkAAgECC01hdGNoIGVycm9yEQFpAQpzZXRNYW5hZ2VyARdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBBVjaGVja01hbmFnZXJQdWJsaWNLZXkJANkEAQUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkDCQAAAgUVY2hlY2tNYW5hZ2VyUHVibGljS2V5BRVjaGVja01hbmFnZXJQdWJsaWNLZXkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAUXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5jb25maXJtTWFuYWdlcgAEAnBtCQEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAVoYXNQTQMJAQlpc0RlZmluZWQBBQJwbQYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUFaGFzUE0FBWhhc1BNBAdjaGVja1BNAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCcG0GCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFB2NoZWNrUE0FB2NoZWNrUE0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleU1hbmFnZXJQdWJsaWNLZXkACQDYBAEJAQV2YWx1ZQEFAnBtCQDMCAIJAQtEZWxldGVFbnRyeQEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQCC3VzZXJBZGRyZXNzDHRhcmdldEhlaWdodAQXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQEMZ2V0U3RyT3JGYWlsAgUEdGhpcwUTa2V5Qm9vc3RpbmdDb250cmFjdAIhaW52YWxpZCBib29zdGluZyBjb250cmFjdCBhZGRyZXNzCQCUCgIFA25pbAoAAUAJAPwHBAUXYm9vc3RpbmdDb250cmFjdEFkZHJlc3MCIGdldFVzZXJHd3hBbW91bnRBdEhlaWdodFJFQURPTkxZCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIFDHRhcmdldEhlaWdodAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQkA/AcEBRdib29zdGluZ0NvbnRyYWN0QWRkcmVzcwIgZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0UkVBRE9OTFkJAMwIAgULdXNlckFkZHJlc3MJAMwIAgUMdGFyZ2V0SGVpZ2h0BQNuaWwFA25pbAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AWkBC2NvbnN0cnVjdG9yBQ9mYWN0b3J5Q29udHJhY3Qfdm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdBBib29zdGluZ0NvbnRyYWN0D3N0YWtpbmdDb250cmFjdAtlcG9jaExlbmd0aAQGY2hlY2tzCQDMCAIJAQttdXN0TWFuYWdlcgEFAWkJAMwIAgMJAQIhPQIJAKYIAQUPZmFjdG9yeUNvbnRyYWN0BQR1bml0BgIgaW52YWxpZCBmYWN0b3J5IGNvbnRyYWN0IGFkZHJlc3MJAMwIAgMJAQIhPQIJAKYIAQUfdm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdAUEdW5pdAYCMmludmFsaWQgdm90aW5nIGVtaXNzaW9uIGNhbmRpZGF0ZSBjb250cmFjdCBhZGRyZXNzCQDMCAIDCQECIT0CCQCmCAEFEGJvb3N0aW5nQ29udHJhY3QFBHVuaXQGAiFpbnZhbGlkIGJvb3N0aW5nIGNvbnRyYWN0IGFkZHJlc3MJAMwIAgMJAQIhPQIJAKYIAQUPc3Rha2luZ0NvbnRyYWN0BQR1bml0BgIgaW52YWxpZCBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MJAMwIAgMJAGYCBQtlcG9jaExlbmd0aAAABgkAAgECFGludmFsaWQgZXBvY2ggbGVuZ3RoBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBRJrZXlGYWN0b3J5Q29udHJhY3QFD2ZhY3RvcnlDb250cmFjdAkAzAgCCQELU3RyaW5nRW50cnkCBSJrZXlWb3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0BR92b3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0CQDMCAIJAQtTdHJpbmdFbnRyeQIFE2tleUJvb3N0aW5nQ29udHJhY3QFEGJvb3N0aW5nQ29udHJhY3QJAMwIAgkBC1N0cmluZ0VudHJ5AgUSa2V5U3Rha2luZ0NvbnRyYWN0BQ9zdGFraW5nQ29udHJhY3QJAMwIAgkBDEludGVnZXJFbnRyeQIFDmtleUVwb2NoTGVuZ3RoBQtlcG9jaExlbmd0aAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBmNyZWF0ZQINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQEBmNoZWNrcwkAzAgCAwkAAAIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBSJrZXlWb3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0AgAGCQELbXVzdE1hbmFnZXIBBQFpBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEBHBvb2wJAJQKAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkBA1pbkxpc3RBY3Rpb25zCQDOCAIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQlrZXlJbkxpc3QBBQRwb29sBgUDbmlsCQERaW5zZXJ0Tm9kZUFjdGlvbnMCBQ1wb29sc0xpc3ROYW1lCQEMcG9vbFRvU3RyaW5nAQUEcG9vbAQYY3VycmVudEVwb2NoSXNOb3REZWZpbmVkCQAAAgkAmggCBQR0aGlzBQ9rZXlDdXJyZW50RXBvY2gFBHVuaXQEEnN0YXJ0SGVpZ2h0QWN0aW9ucwMFGGN1cnJlbnRFcG9jaElzTm90RGVmaW5lZAQFZXBvY2gAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUPa2V5Q3VycmVudEVwb2NoBQVlcG9jaAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFWtleVN0YXJ0SGVpZ2h0QnlFcG9jaAEFBWVwb2NoBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFDmtleVN0YXJ0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtleUN1cnJlbnRFcG9jaFVpBQVlcG9jaAkAzAgCCQEMSW50ZWdlckVudHJ5AgUQa2V5U3RhcnRIZWlnaHRVaQUGaGVpZ2h0BQNuaWwFA25pbAkAlAoCCQDOCAIFDWluTGlzdEFjdGlvbnMFEnN0YXJ0SGVpZ2h0QWN0aW9ucwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQR2b3RlAw1hbW91bnRBc3NldElkDHByaWNlQXNzZXRJZAZhbW91bnQEBHBvb2wJAJQKAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkBAVlcG9jaAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ9rZXlDdXJyZW50RXBvY2gAAAQLc3RhcnRIZWlnaHQJAQxnZXRJbnRPckZhaWwCBQR0aGlzCQEVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAQUFZXBvY2gEC2Vwb2NoTGVuZ3RoCQEMZ2V0SW50T3JGYWlsAgUEdGhpcwUOa2V5RXBvY2hMZW5ndGgECWVuZEhlaWdodAkAZAIFC3N0YXJ0SGVpZ2h0BQtlcG9jaExlbmd0aAQXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQJAJoIAgUEdGhpcwUUa2V5RmluYWxpemF0aW9uU3RhZ2UEBHVzZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBB2tleVVzZWQCCAUBaQZjYWxsZXIFBWVwb2NoAAAEBHZvdGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBB2tleVZvdGUDBQRwb29sCAUBaQZjYWxsZXIFBWVwb2NoAAAECnBvb2xSZXN1bHQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBD2tleVZvdGluZ1Jlc3VsdAIFBHBvb2wFBWVwb2NoAAAECnRvdGFsVm90ZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBDWtleVRvdGFsVm90ZXMBBQVlcG9jaAAABBNnd3hBbW91bnRBdEVuZFRvdGFsCgABQAkA/AcEBQR0aGlzAhhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQJAMwIAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQDMCAIFCWVuZEhlaWdodAUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQkA/AcEBQR0aGlzAhhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQJAMwIAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQDMCAIFCWVuZEhlaWdodAUDbmlsBQNuaWwCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQJYXZhaWxhYmxlCQBlAgUTZ3d4QW1vdW50QXRFbmRUb3RhbAUEdXNlZAQHbmV3Vm90ZQkAZAIFBHZvdGUFBmFtb3VudAQKd3hFbWlzc2lvbgkBGGNoZWNrV3hFbWlzc2lvblBvb2xMYWJlbAEFBHBvb2wEBmNoZWNrcwkAzAgCAwkBAiE9AgkAoAgBCQEJa2V5SW5MaXN0AQUEcG9vbAUEdW5pdAYJAAIBAg5pbnZhbGlkIGFzc2V0cwkAzAgCAwkAZgIFCWVuZEhlaWdodAUGaGVpZ2h0BgkAAgECDmludmFsaWQgaGVpZ2h0CQDMCAIDCQAAAgUXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQFBHVuaXQGCQACAQIYZmluYWxpemF0aW9uIGluIHByb2dyZXNzCQDMCAIDCQBmAgUTZ3d4QW1vdW50QXRFbmRUb3RhbAAABgkAAgECE3lvdSBkbyBub3QgaGF2ZSBnV1gJAMwIAgMDCQBmAgUGYW1vdW50AAAJAGcCBQlhdmFpbGFibGUFBmFtb3VudAcGCQACAQIOaW52YWxpZCBhbW91bnQJAMwIAgMFCnd4RW1pc3Npb24GCQACAQIdcG9vbCBoYXNuJ3QgV1hfRU1JU1NJT04gbGFiZWwFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQNdm90ZXNMaXN0TmFtZQkBEGdldFZvdGVzTGlzdE5hbWUBBQRwb29sBA51c2VyQWRkcmVzc1N0cgkApQgBCAUBaQZjYWxsZXIEEHZvdGVzTGlzdEFjdGlvbnMDCQEMY29udGFpbnNOb2RlAgUNdm90ZXNMaXN0TmFtZQUOdXNlckFkZHJlc3NTdHIFA25pbAkBEWluc2VydE5vZGVBY3Rpb25zAgUNdm90ZXNMaXN0TmFtZQUOdXNlckFkZHJlc3NTdHIJAJQKAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEHa2V5VXNlZAIIBQFpBmNhbGxlcgUFZXBvY2gJAGQCBQR1c2VkBQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQdrZXlWb3RlAwUEcG9vbAgFAWkGY2FsbGVyBQVlcG9jaAUHbmV3Vm90ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2tleVZvdGluZ1Jlc3VsdAIFBHBvb2wFBWVwb2NoCQBkAgUKcG9vbFJlc3VsdAUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5VG90YWxWb3RlcwEFBWVwb2NoCQBkAgUKdG90YWxWb3RlcwUGYW1vdW50BQNuaWwFEHZvdGVzTGlzdEFjdGlvbnMFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKY2FuY2VsVm90ZQINYW1vdW50QXNzZXRJZAxwcmljZUFzc2V0SWQEBHBvb2wJAJQKAgUNYW1vdW50QXNzZXRJZAUMcHJpY2VBc3NldElkBAVlcG9jaAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQ9rZXlDdXJyZW50RXBvY2gAAAQLc3RhcnRIZWlnaHQJAQxnZXRJbnRPckZhaWwCBQR0aGlzCQEVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAQUFZXBvY2gEC2Vwb2NoTGVuZ3RoCQEMZ2V0SW50T3JGYWlsAgUEdGhpcwUOa2V5RXBvY2hMZW5ndGgECWVuZEhlaWdodAkAZAIFC3N0YXJ0SGVpZ2h0BQtlcG9jaExlbmd0aAQXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQJAJoIAgUEdGhpcwUUa2V5RmluYWxpemF0aW9uU3RhZ2UEBHVzZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBB2tleVVzZWQCCAUBaQZjYWxsZXIFBWVwb2NoAAAEBHZvdGUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBB2tleVZvdGUDBQRwb29sCAUBaQZjYWxsZXIFBWVwb2NoAAAECnBvb2xSZXN1bHQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBD2tleVZvdGluZ1Jlc3VsdAIFBHBvb2wFBWVwb2NoAAAECnRvdGFsVm90ZXMJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBDWtleVRvdGFsVm90ZXMBBQVlcG9jaAAABAZjaGVja3MJAMwIAgMJAQIhPQIJAKAIAQkBCWtleUluTGlzdAEFBHBvb2wFBHVuaXQGCQACAQIOaW52YWxpZCBhc3NldHMJAMwIAgMJAGYCBQllbmRIZWlnaHQFBmhlaWdodAYJAAIBAg5pbnZhbGlkIGhlaWdodAkAzAgCAwkAAAIFF2ZpbmFsaXphdGlvblN0YWdlT3JVbml0BQR1bml0BgkAAgECGGZpbmFsaXphdGlvbiBpbiBwcm9ncmVzcwkAzAgCAwkAZgIFBHZvdGUAAAYJAAIBAgdubyB2b3RlBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEDXZvdGVzTGlzdE5hbWUJARBnZXRWb3Rlc0xpc3ROYW1lAQUEcG9vbAQOdXNlckFkZHJlc3NTdHIJAKUIAQgFAWkGY2FsbGVyCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBB2tleVVzZWQCCAUBaQZjYWxsZXIFBWVwb2NoCQCWAwEJAMwIAgkAZQIFBHVzZWQFBHZvdGUJAMwIAgAABQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleVZvdGUDBQRwb29sCAUBaQZjYWxsZXIFBWVwb2NoCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5Vm90aW5nUmVzdWx0AgUEcG9vbAUFZXBvY2gJAGUCBQpwb29sUmVzdWx0BQR2b3RlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQENa2V5VG90YWxWb3RlcwEFBWVwb2NoCQBlAgUKdG90YWxWb3RlcwUEdm90ZQUDbmlsCQERZGVsZXRlTm9kZUFjdGlvbnMCBQ12b3Rlc0xpc3ROYW1lBQ51c2VyQWRkcmVzc1N0cgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5zZXRFcG9jaExlbmd0aAEObmV3RXBvY2hMZW5ndGgEBmNoZWNrcwkAzAgCCQELbXVzdE1hbmFnZXIBBQFpCQDMCAIDCQBmAgUObmV3RXBvY2hMZW5ndGgAAAYJAAIBAhRpbnZhbGlkIGVwb2NoIGxlbmd0aAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFDmtleUVwb2NoTGVuZ3RoBQ5uZXdFcG9jaExlbmd0aAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBC3NldE1heERlcHRoAQtuZXdNYXhEZXB0aAQGY2hlY2tzCQDMCAIJAQttdXN0TWFuYWdlcgEFAWkJAMwIAgMJAGYCBQtuZXdNYXhEZXB0aAAABgkAAgECEWludmFsaWQgbWF4IGRlcHRoBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgULa2V5TWF4RGVwdGgFC25ld01heERlcHRoBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETcHJvY2Vzc1ZvdGVJTlRFUk5BTAIHcG9vbFN0cg51c2VyQWRkcmVzc1N0cgQLY2hlY2tDYWxsZXIJAQhtdXN0VGhpcwEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBAt1c2VyQWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFDnVzZXJBZGRyZXNzU3RyCQCsAgICKnByb2Nlc3NWb3RlSU5URVJOQUw6IGludmFsaWQgdXNlciBhZGRyZXNzIAUOdXNlckFkZHJlc3NTdHIEBWVwb2NoCQEMZ2V0SW50T3JGYWlsAgUEdGhpcwUPa2V5Q3VycmVudEVwb2NoBA1lcG9jaFByZXZpb3VzCQBlAgUFZXBvY2gAAQQLZXBvY2hMZW5ndGgJAQxnZXRJbnRPckZhaWwCBQR0aGlzBQ5rZXlFcG9jaExlbmd0aAQLc3RhcnRIZWlnaHQJAQxnZXRJbnRPckZhaWwCBQR0aGlzCQEVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAQUFZXBvY2gECWVuZEhlaWdodAkAZAIFC3N0YXJ0SGVpZ2h0BQtlcG9jaExlbmd0aAQTc3RhcnRIZWlnaHRQcmV2aW91cwkBDGdldEludE9yRmFpbAIFBHRoaXMJARVrZXlTdGFydEhlaWdodEJ5RXBvY2gBBQ1lcG9jaFByZXZpb3VzBBFlbmRIZWlnaHRQcmV2aW91cwkAZAIFE3N0YXJ0SGVpZ2h0UHJldmlvdXMFC2Vwb2NoTGVuZ3RoBBBjaGVja1RhcmdldEVwb2NoAwkAZwIFDWVwb2NoUHJldmlvdXMAAAYJAAIBAitwcm9jZXNzVm90ZUlOVEVSTkFMOiBpbnZhbGlkIHByZXZpb3VzIGVwb2NoAwkAAAIFEGNoZWNrVGFyZ2V0RXBvY2gFEGNoZWNrVGFyZ2V0RXBvY2gEBHBvb2wJAQxzdHJpbmdUb1Bvb2wBBQdwb29sU3RyBA0kdDAxNzE5NTE3MjM1BQRwb29sBA1hbW91bnRBc3NldElkCAUNJHQwMTcxOTUxNzIzNQJfMQQMcHJpY2VBc3NldElkCAUNJHQwMTcxOTUxNzIzNQJfMgQKd3hFbWlzc2lvbgkBGGNoZWNrV3hFbWlzc2lvblBvb2xMYWJlbAEFBHBvb2wEE2d3eEFtb3VudEF0RW5kVG90YWwKAAFACQD8BwQFBHRoaXMCGGdldFVzZXJHd3hBbW91bnRBdEhlaWdodAkAzAgCBQ51c2VyQWRkcmVzc1N0cgkAzAgCBQllbmRIZWlnaHQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEJAPwHBAUEdGhpcwIYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIFCWVuZEhlaWdodAUDbmlsBQNuaWwCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQbZ3d4QW1vdW50QXRFbmRUb3RhbFByZXZpb3VzCgABQAkA/AcEBQR0aGlzAhhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQJAMwIAgUOdXNlckFkZHJlc3NTdHIJAMwIAgURZW5kSGVpZ2h0UHJldmlvdXMFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEJAPwHBAUEdGhpcwIYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIFEWVuZEhlaWdodFByZXZpb3VzBQNuaWwFA25pbAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAp0b3RhbFZvdGVzCQELdmFsdWVPckVsc2UCCQCfCAEJAQ1rZXlUb3RhbFZvdGVzAQUFZXBvY2gAAAQMdm90aW5nUmVzdWx0CQELdmFsdWVPckVsc2UCCQCfCAEJAQ9rZXlWb3RpbmdSZXN1bHQCBQRwb29sBQVlcG9jaAAABAx2b3RlUHJldmlvdXMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQEHa2V5Vm90ZQMFBHBvb2wFC3VzZXJBZGRyZXNzBQ1lcG9jaFByZXZpb3VzCQCsAgIJAKwCAgkArAICCQCsAgICFHByb2Nlc3NWb3RlSU5URVJOQUwgBQdwb29sU3RyAgEgBQ51c2VyQWRkcmVzc1N0cgISOiBubyBwcmV2aW91cyB2b3RlBAR1c2VkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQdrZXlVc2VkAgULdXNlckFkZHJlc3MFBWVwb2NoAAAEB25ld1ZvdGUJAGsDBQx2b3RlUHJldmlvdXMFE2d3eEFtb3VudEF0RW5kVG90YWwFG2d3eEFtb3VudEF0RW5kVG90YWxQcmV2aW91cwQHYWN0aW9ucwMDCQBmAgUHbmV3Vm90ZQAABQp3eEVtaXNzaW9uBwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBB2tleVZvdGUDBQRwb29sBQt1c2VyQWRkcmVzcwUFZXBvY2gFB25ld1ZvdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlUb3RhbFZvdGVzAQUFZXBvY2gJAGQCBQp0b3RhbFZvdGVzBQduZXdWb3RlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5Vm90aW5nUmVzdWx0AgUEcG9vbAUFZXBvY2gJAGQCBQx2b3RpbmdSZXN1bHQFB25ld1ZvdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQdrZXlVc2VkAgULdXNlckFkZHJlc3MFBWVwb2NoCQBkAgUEdXNlZAUHbmV3Vm90ZQUDbmlsCQERZGVsZXRlTm9kZUFjdGlvbnMCCQEQZ2V0Vm90ZXNMaXN0TmFtZQEFBHBvb2wFDnVzZXJBZGRyZXNzU3RyCQCUCgIFB2FjdGlvbnMFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETcHJvY2Vzc1Bvb2xJTlRFUk5BTAEHcG9vbFN0cgQLY2hlY2tDYWxsZXIJAQhtdXN0VGhpcwEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBAt0YXJnZXRFcG9jaAkAZQIJAQxnZXRJbnRPckZhaWwCBQR0aGlzBQ9rZXlDdXJyZW50RXBvY2gAAQQQY2hlY2tUYXJnZXRFcG9jaAMJAGcCBQt0YXJnZXRFcG9jaAAABgkAAgECKXByb2Nlc3NQb29sSU5URVJOQUw6IGludmFsaWQgdGFyZ2V0IGVwb2NoAwkAAAIFEGNoZWNrVGFyZ2V0RXBvY2gFEGNoZWNrVGFyZ2V0RXBvY2gEBHBvb2wJAQxzdHJpbmdUb1Bvb2wBBQdwb29sU3RyBA0kdDAxODc1MjE4NzkyBQRwb29sBA1hbW91bnRBc3NldElkCAUNJHQwMTg3NTIxODc5MgJfMQQMcHJpY2VBc3NldElkCAUNJHQwMTg3NTIxODc5MgJfMgQPc3Rha2luZ0NvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQEMZ2V0U3RyT3JGYWlsAgUEdGhpcwUSa2V5U3Rha2luZ0NvbnRyYWN0BA9mYWN0b3J5Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQxnZXRTdHJPckZhaWwCBQR0aGlzBRJrZXlGYWN0b3J5Q29udHJhY3QECWxwQXNzZXRJZAkBFmdldExwQXNzZXRCeVBvb2xBc3NldHMCBQ1hbW91bnRBc3NldElkBQxwcmljZUFzc2V0SWQEAXIKAAFACQD8BwQFD3N0YWtpbmdDb250cmFjdAISdXNlcnNMaXN0VHJhdmVyc2FsCQDMCAIFCWxwQXNzZXRJZAUDbmlsBQNuaWwDCQABAgUBQAIHQm9vbGVhbgUBQAkAAgEJAKwCAgkAAwEJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AhJ1c2Vyc0xpc3RUcmF2ZXJzYWwJAMwIAgUJbHBBc3NldElkBQNuaWwFA25pbAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgMJAAACBQFyBQFyAwUBcgkAlAoCBQNuaWwGBAp3eEVtaXNzaW9uCQEYY2hlY2tXeEVtaXNzaW9uUG9vbExhYmVsAQUEcG9vbAQKdG90YWxWb3RlcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQENa2V5VG90YWxWb3RlcwEFC3RhcmdldEVwb2NoAAAEDHZvdGluZ1Jlc3VsdAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEPa2V5Vm90aW5nUmVzdWx0AgUEcG9vbAULdGFyZ2V0RXBvY2gAAAQFc2hhcmUDAwkAAAIFCnRvdGFsVm90ZXMAAAYJAQEhAQUKd3hFbWlzc2lvbgAACQBrAwUMdm90aW5nUmVzdWx0BQ5wb29sV2VpZ2h0TXVsdAUKdG90YWxWb3RlcwQPbW9kaWZ5V2VpZ2h0SW52CQD8BwQFD2ZhY3RvcnlDb250cmFjdAIMbW9kaWZ5V2VpZ2h0CQDMCAIFCWxwQXNzZXRJZAkAzAgCBQVzaGFyZQUDbmlsBQNuaWwDCQAAAgUPbW9kaWZ5V2VpZ2h0SW52BQ9tb2RpZnlXZWlnaHRJbnYEEHBvb2xzTGlzdEFjdGlvbnMDBQp3eEVtaXNzaW9uBQNuaWwJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQEJa2V5SW5MaXN0AQUEcG9vbAUDbmlsCQERZGVsZXRlTm9kZUFjdGlvbnMCBQ1wb29sc0xpc3ROYW1lBQdwb29sU3RyCQCUCgIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleVBvb2xTaGFyZQIFBHBvb2wFC3RhcmdldEVwb2NoBQVzaGFyZQUDbmlsBRBwb29sc0xpc3RBY3Rpb25zBwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5maW5hbGl6ZUhlbHBlcgAEBWVwb2NoCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFD2tleUN1cnJlbnRFcG9jaAAABA1wcmV2aW91c0Vwb2NoCQBlAgUFZXBvY2gAAQQLc3RhcnRIZWlnaHQJAQxnZXRJbnRPckZhaWwCBQR0aGlzCQEVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAQUFZXBvY2gEC2Vwb2NoTGVuZ3RoCQEMZ2V0SW50T3JGYWlsAgUEdGhpcwUOa2V5RXBvY2hMZW5ndGgECWVuZEhlaWdodAkAZAIFC3N0YXJ0SGVpZ2h0BQtlcG9jaExlbmd0aAQXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQJAJoIAgUEdGhpcwUUa2V5RmluYWxpemF0aW9uU3RhZ2UDAwkAZwIFBmhlaWdodAUJZW5kSGVpZ2h0CQAAAgUXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQFBHVuaXQHBAhuZXdFcG9jaAkAZAIFBWVwb2NoAAEJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFWtleVN0YXJ0SGVpZ2h0QnlFcG9jaAEFCG5ld0Vwb2NoBQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFDmtleVN0YXJ0SGVpZ2h0BQZoZWlnaHQJAMwIAgkBDEludGVnZXJFbnRyeQIFD2tleUN1cnJlbnRFcG9jaAUIbmV3RXBvY2gJAMwIAgkBDEludGVnZXJFbnRyeQIFFGtleUZpbmFsaXphdGlvblN0YWdlBRZmaW5hbGl6YXRpb25TdGFnZVRvdGFsBQNuaWwGAwkAAAIFF2ZpbmFsaXphdGlvblN0YWdlT3JVbml0BQR1bml0CQCUCgIFA25pbAcDCQAAAgUXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQFFmZpbmFsaXphdGlvblN0YWdlVG90YWwECnBvb2xPclVuaXQJAKIIAQULa2V5TmV4dFBvb2wECnVzZXJPclVuaXQJAKIIAQULa2V5TmV4dFVzZXIEByRtYXRjaDAFCnBvb2xPclVuaXQDCQABAgUHJG1hdGNoMAIEVW5pdAQHJG1hdGNoMQkAoggBCQELa2V5TGlzdEhlYWQBBQ1wb29sc0xpc3ROYW1lAwkAAQIFByRtYXRjaDECBFVuaXQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUUa2V5RmluYWxpemF0aW9uU3RhZ2UFF2ZpbmFsaXphdGlvblN0YWdlU2hhcmVzCQDMCAIJAQtEZWxldGVFbnRyeQEFC2tleU5leHRQb29sCQDMCAIJAQtEZWxldGVFbnRyeQEFC2tleU5leHRVc2VyBQNuaWwGAwkAAQIFByRtYXRjaDECBlN0cmluZwQMcG9vbHNIZWFkU3RyBQckbWF0Y2gxCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgULa2V5TmV4dFBvb2wFDHBvb2xzSGVhZFN0cgUDbmlsBgkAAgECC01hdGNoIGVycm9yAwkAAQIFByRtYXRjaDACBlN0cmluZwQHcG9vbFN0cgUHJG1hdGNoMAQEcG9vbAkBDHN0cmluZ1RvUG9vbAEFB3Bvb2xTdHIEDm5leHRVc2VyT3JVbml0BAckbWF0Y2gxBQp1c2VyT3JVbml0AwkAAQIFByRtYXRjaDECBFVuaXQJAKIIAQkBC2tleUxpc3RIZWFkAQkBEGdldFZvdGVzTGlzdE5hbWUBBQRwb29sAwkAAQIFByRtYXRjaDECBlN0cmluZwQEdXNlcgUHJG1hdGNoMQQOcHJvY2Vzc1ZvdGVJbnYJAPwHBAUEdGhpcwITcHJvY2Vzc1ZvdGVJTlRFUk5BTAkAzAgCBQdwb29sU3RyCQDMCAIFBHVzZXIFA25pbAUDbmlsAwkAAAIFDnByb2Nlc3NWb3RlSW52BQ5wcm9jZXNzVm90ZUludgkAoggBCQELa2V5TGlzdE5leHQCCQEQZ2V0Vm90ZXNMaXN0TmFtZQEFBHBvb2wFBHVzZXIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAgtNYXRjaCBlcnJvcgQHJG1hdGNoMQUObmV4dFVzZXJPclVuaXQDCQABAgUHJG1hdGNoMQIEVW5pdAQObmV4dFBvb2xPclVuaXQJAKIIAQkBC2tleUxpc3ROZXh0AgUNcG9vbHNMaXN0TmFtZQUHcG9vbFN0cgQHJG1hdGNoMgUObmV4dFBvb2xPclVuaXQDCQABAgUHJG1hdGNoMgIEVW5pdAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRRrZXlGaW5hbGl6YXRpb25TdGFnZQUXZmluYWxpemF0aW9uU3RhZ2VTaGFyZXMJAMwIAgkBC0RlbGV0ZUVudHJ5AQULa2V5TmV4dFBvb2wJAMwIAgkBC0RlbGV0ZUVudHJ5AQULa2V5TmV4dFVzZXIFA25pbAYDCQABAgUHJG1hdGNoMgIGU3RyaW5nBAFzBQckbWF0Y2gyCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgULa2V5TmV4dFBvb2wFAXMJAMwIAgkBC0RlbGV0ZUVudHJ5AQULa2V5TmV4dFVzZXIFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQckbWF0Y2gxAgZTdHJpbmcECG5leHRVc2VyBQckbWF0Y2gxCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgULa2V5TmV4dFVzZXIFCG5leHRVc2VyBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IJAAIBAgtNYXRjaCBlcnJvcgMJAAACBRdmaW5hbGl6YXRpb25TdGFnZU9yVW5pdAUXZmluYWxpemF0aW9uU3RhZ2VTaGFyZXMECnBvb2xPclVuaXQJAKIIAQULa2V5TmV4dFBvb2wEByRtYXRjaDAFCnBvb2xPclVuaXQDCQABAgUHJG1hdGNoMAIEVW5pdAQHJG1hdGNoMQkAoggBCQELa2V5TGlzdEhlYWQBBQ1wb29sc0xpc3ROYW1lAwkAAQIFByRtYXRjaDECBFVuaXQJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBBRRrZXlGaW5hbGl6YXRpb25TdGFnZQkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBDGtleUZpbmFsaXplZAEFDXByZXZpb3VzRXBvY2gGCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRFrZXlDdXJyZW50RXBvY2hVaQUFZXBvY2gJAMwIAgkBDEludGVnZXJFbnRyeQIFEGtleVN0YXJ0SGVpZ2h0VWkFC3N0YXJ0SGVpZ2h0BQNuaWwGAwkAAQIFByRtYXRjaDECBlN0cmluZwQLbmV4dFBvb2xTdHIFByRtYXRjaDEJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQtrZXlOZXh0UG9vbAULbmV4dFBvb2xTdHIFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEB3Bvb2xTdHIFByRtYXRjaDAEAXIKAAFACQD8BwQFBHRoaXMCE3Byb2Nlc3NQb29sSU5URVJOQUwJAMwIAgUHcG9vbFN0cgUDbmlsBQNuaWwDCQABAgUBQAIHQm9vbGVhbgUBQAkAAgEJAKwCAgkAAwEJAPwHBAUEdGhpcwITcHJvY2Vzc1Bvb2xJTlRFUk5BTAkAzAgCBQdwb29sU3RyBQNuaWwFA25pbAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgMJAAACBQFyBQFyAwUBcgkAlAoCBQNuaWwGBA5uZXh0UG9vbE9yVW5pdAkAoggBCQELa2V5TGlzdE5leHQCBQ1wb29sc0xpc3ROYW1lBQdwb29sU3RyBAckbWF0Y2gxBQ5uZXh0UG9vbE9yVW5pdAMJAAECBQckbWF0Y2gxAgRVbml0CQCUCgIJAMwIAgkBC0RlbGV0ZUVudHJ5AQUUa2V5RmluYWxpemF0aW9uU3RhZ2UJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQxrZXlGaW5hbGl6ZWQBBQ1wcmV2aW91c0Vwb2NoBgkAzAgCCQEMSW50ZWdlckVudHJ5AgURa2V5Q3VycmVudEVwb2NoVWkFBWVwb2NoCQDMCAIJAQxJbnRlZ2VyRW50cnkCBRBrZXlTdGFydEhlaWdodFVpBQtzdGFydEhlaWdodAkAzAgCCQELRGVsZXRlRW50cnkBBQtrZXlOZXh0UG9vbAUDbmlsBgMJAAECBQckbWF0Y2gxAgZTdHJpbmcEC25leHRQb29sU3RyBQckbWF0Y2gxCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgULa2V5TmV4dFBvb2wFC25leHRQb29sU3RyBQNuaWwGCQACAQILTWF0Y2ggZXJyb3IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAgtNYXRjaCBlcnJvcgkAAgECFmZpbmFsaXphdGlvbiBpcyBicm9rZW4BaQEPZmluYWxpemVXcmFwcGVyAQdjb3VudGVyBAZyZXN1bHQKAAFACQD8BwQFBHRoaXMCDmZpbmFsaXplSGVscGVyBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQkA/AcEBQR0aGlzAg5maW5hbGl6ZUhlbHBlcgUDbmlsBQNuaWwCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4DCQAAAgUGcmVzdWx0BQZyZXN1bHQDCQEBIQEFBnJlc3VsdAMJAAACBQdjb3VudGVyAAAJAAIBAh5DdXJyZW50IHZvdGluZyBpcyBub3Qgb3ZlciB5ZXQJAJQKAgUDbmlsBQR1bml0BAhtYXhEZXB0aAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQtrZXlNYXhEZXB0aAUPbWF4RGVwdGhEZWZhdWx0AwkAZgIFCG1heERlcHRoBQdjb3VudGVyBANpbnYJAPwHBAUEdGhpcwIPZmluYWxpemVXcmFwcGVyCQDMCAIJAGQCBQdjb3VudGVyAAEFA25pbAUDbmlsAwkAAAIFA2ludgUDaW52CQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIZmluYWxpemUABANpbnYJAPwHBAUEdGhpcwIPZmluYWxpemVXcmFwcGVyCQDMCAIAAAUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBFGNvbnRhaW5zTm9kZVJFQURPTkxZAghsaXN0TmFtZQJpZAkAlAoCBQNuaWwJAQxjb250YWluc05vZGUCBQhsaXN0TmFtZQUCaWQBaQEKaW5zZXJ0Tm9kZQIIbGlzdE5hbWUCaWQEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAlAoCCQERaW5zZXJ0Tm9kZUFjdGlvbnMCBQhsaXN0TmFtZQUCaWQFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKZGVsZXRlTm9kZQIIbGlzdE5hbWUCaWQEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAlAoCCQERZGVsZXRlTm9kZUFjdGlvbnMCBQhsaXN0TmFtZQUCaWQFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXmO7Zsl", "chainId": 84, "height": 2135262, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: DRGk3GbGQpsVoaPPAUC4V4FSpPmdxhgJfnudze1Fe5oE Next: 9iCrmEypyWq8mkwSL7qywLhYBrSdLZ6CsRQ2vMxaT6jN Diff:
OldNewDifferences
647647 else if ($isInstanceOf(bO, "String"))
648648 then {
649649 let bR = bO
650- let bS = getString(at(al(w), bR))
650+ let bS = invoke(this, "processVoteINTERNAL", [bu, bR], nil)
651651 if ((bS == bS))
652- then {
653- let bT = invoke(this, "processVoteINTERNAL", [bu, bR], nil)
654- if ((bT == bT))
655- then bS
656- else throw("Strict value is not equal to itself.")
657- }
652+ then getString(at(al(w), bR))
658653 else throw("Strict value is not equal to itself.")
659654 }
660655 else throw("Match error")
662657 let bO = bQ
663658 if ($isInstanceOf(bO, "Unit"))
664659 then {
665- let bU = getString(at(ak, bu))
666- let bV = bU
667- if ($isInstanceOf(bV, "Unit"))
660+ let bT = getString(at(ak, bu))
661+ let bU = bT
662+ if ($isInstanceOf(bU, "Unit"))
668663 then $Tuple2([IntegerEntry(m, e), DeleteEntry(n), DeleteEntry(o)], true)
669- else if ($isInstanceOf(bV, "String"))
664+ else if ($isInstanceOf(bU, "String"))
670665 then {
671- let aF = bV
666+ let aF = bU
672667 $Tuple2([StringEntry(n, aF), DeleteEntry(o)], true)
673668 }
674669 else throw("Match error")
675670 }
676671 else if ($isInstanceOf(bO, "String"))
677672 then {
678- let bW = bO
679- $Tuple2([StringEntry(o, bW)], true)
673+ let bV = bO
674+ $Tuple2([StringEntry(o, bV)], true)
680675 }
681676 else throw("Match error")
682677 }
693688 then $Tuple2([DeleteEntry(m), BooleanEntry(u(bK), true), IntegerEntry(q, t), IntegerEntry(r, be)], true)
694689 else if ($isInstanceOf(bO, "String"))
695690 then {
696- let bX = bO
697- $Tuple2([StringEntry(n, bX)], true)
691+ let bW = bO
692+ $Tuple2([StringEntry(n, bW)], true)
698693 }
699694 else throw("Match error")
700695 }
701696 else if ($isInstanceOf(N, "String"))
702697 then {
703698 let bu = N
704- let bU = getString(at(ak, bu))
705- if ((bU == bU))
706- then {
707- let bG = {
708- let R = invoke(this, "processPoolINTERNAL", [bu], nil)
709- if ($isInstanceOf(R, "Boolean"))
710- then R
711- else throw(($getType(invoke(this, "processPoolINTERNAL", [bu], nil)) + " couldn't be cast to Boolean"))
699+ let bG = {
700+ let R = invoke(this, "processPoolINTERNAL", [bu], nil)
701+ if ($isInstanceOf(R, "Boolean"))
702+ then R
703+ else throw(($getType(invoke(this, "processPoolINTERNAL", [bu], nil)) + " couldn't be cast to Boolean"))
704+ }
705+ if ((bG == bG))
706+ then if (bG)
707+ then $Tuple2(nil, true)
708+ else {
709+ let bT = getString(at(ak, bu))
710+ let bO = bT
711+ if ($isInstanceOf(bO, "Unit"))
712+ then $Tuple2([DeleteEntry(m), BooleanEntry(u(bK), true), IntegerEntry(q, t), IntegerEntry(r, be), DeleteEntry(n)], true)
713+ else if ($isInstanceOf(bO, "String"))
714+ then {
715+ let bW = bO
716+ $Tuple2([StringEntry(n, bW)], true)
717+ }
718+ else throw("Match error")
712719 }
713- if ((bG == bG))
714- then if (bG)
715- then $Tuple2(nil, true)
716- else {
717- let bO = bU
718- if ($isInstanceOf(bO, "Unit"))
719- then $Tuple2([DeleteEntry(m), BooleanEntry(u(bK), true), IntegerEntry(q, t), IntegerEntry(r, be), DeleteEntry(n)], true)
720- else if ($isInstanceOf(bO, "String"))
721- then {
722- let bX = bO
723- $Tuple2([StringEntry(n, bX)], true)
724- }
725- else throw("Match error")
726- }
727- else throw("Strict value is not equal to itself.")
728- }
729720 else throw("Strict value is not equal to itself.")
730721 }
731722 else throw("Match error")
736727
737728
738729 @Callable(aJ)
739-func finalizeWrapper (bY) = {
740- let bZ = {
730+func finalizeWrapper (bX) = {
731+ let bY = {
741732 let R = invoke(this, "finalizeHelper", nil, nil)
742733 if ($isInstanceOf(R, "Boolean"))
743734 then R
744735 else throw(($getType(invoke(this, "finalizeHelper", nil, nil)) + " couldn't be cast to Boolean"))
745736 }
746- if ((bZ == bZ))
747- then if (!(bZ))
748- then if ((bY == 0))
737+ if ((bY == bY))
738+ then if (!(bY))
739+ then if ((bX == 0))
749740 then throw("Current voting is not over yet")
750741 else $Tuple2(nil, unit)
751742 else {
752- let ca = valueOrElse(getInteger(this, h), c)
753- if ((ca > bY))
743+ let bZ = valueOrElse(getInteger(this, h), c)
744+ if ((bZ > bX))
754745 then {
755- let cb = invoke(this, "finalizeWrapper", [(bY + 1)], nil)
756- if ((cb == cb))
746+ let ca = invoke(this, "finalizeWrapper", [(bX + 1)], nil)
747+ if ((ca == ca))
757748 then $Tuple2(nil, unit)
758749 else throw("Strict value is not equal to itself.")
759750 }
766757
767758 @Callable(aJ)
768759 func finalize () = {
769- let cb = invoke(this, "finalizeWrapper", [0], nil)
770- if ((cb == cb))
760+ let ca = invoke(this, "finalizeWrapper", [0], nil)
761+ if ((ca == ca))
771762 then $Tuple2(nil, unit)
772763 else throw("Strict value is not equal to itself.")
773764 }
798789 }
799790
800791
801-@Verifier(cc)
802-func cd () = {
803- let ce = {
792+@Verifier(cb)
793+func cc () = {
794+ let cd = {
804795 let N = aE()
805796 if ($isInstanceOf(N, "ByteVector"))
806797 then {
808799 aL
809800 }
810801 else if ($isInstanceOf(N, "Unit"))
811- then cc.senderPublicKey
802+ then cb.senderPublicKey
812803 else throw("Match error")
813804 }
814- sigVerify(cc.bodyBytes, cc.proofs[0], ce)
805+ sigVerify(cb.bodyBytes, cb.proofs[0], cd)
815806 }
816807
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 100000000
77
88 let c = 10
99
1010 let d = 0
1111
1212 let e = 1
1313
1414 let f = makeString(["%s", "epochLength"], a)
1515
1616 let g = makeString(["%s", "currentEpoch"], a)
1717
1818 let h = makeString(["%s", "maxDepth"], a)
1919
2020 let i = makeString(["%s", "votingEmissionCandidateContract"], a)
2121
2222 let j = makeString(["%s", "factoryContract"], a)
2323
2424 let k = makeString(["%s", "boostingContract"], a)
2525
2626 let l = makeString(["%s", "stakingContract"], a)
2727
2828 let m = makeString(["%s", "finalizationStage"], a)
2929
3030 let n = makeString(["%s", "nextPool"], a)
3131
3232 let o = makeString(["%s", "nextUser"], a)
3333
3434 let p = makeString(["%s", "startHeight"], a)
3535
3636 let q = makeString(["%s", "currentEpochUi"], a)
3737
3838 let r = makeString(["%s", "startHeightUi"], a)
3939
4040 func s (t) = makeString(["%s%d", "startHeight", toString(t)], a)
4141
4242
4343 func u (t) = makeString(["%s%d", "finalized", toString(t)], a)
4444
4545
4646 func v (w) = {
4747 let x = w
4848 let y = x._1
4949 let z = x._2
5050 makeString(["%s%s%s", "inList", y, z], a)
5151 }
5252
5353
5454 func A (B,t) = makeString(["%s%s%d", "used", toString(B), toString(t)], a)
5555
5656
5757 func C (w,B,t) = {
5858 let D = w
5959 let y = D._1
6060 let z = D._2
6161 makeString(["%s%s%s%s%d", "vote", y, z, toString(B), toString(t)], a)
6262 }
6363
6464
6565 func E (w,t) = {
6666 let F = w
6767 let y = F._1
6868 let z = F._2
6969 makeString(["%s%s%s%d", "votingResult", y, z, toString(t)], a)
7070 }
7171
7272
7373 func G (w,t) = {
7474 let H = w
7575 let y = H._1
7676 let z = H._2
7777 makeString(["%s%s%s%d", "poolShare", y, z, toString(t)], a)
7878 }
7979
8080
8181 func I (t) = makeString(["%s%d", "totalVotes", toString(t)], a)
8282
8383
8484 func J (B,K,L) = {
8585 let M = makeString(["mandatory ", toString(B), ".", K, " is not defined"], "")
8686 valueOrErrorMessage({
8787 let N = L
8888 if ($isInstanceOf(N, "String"))
8989 then {
9090 let O = N
9191 getString(B, K)
9292 }
9393 else if ($isInstanceOf(N, "Int"))
9494 then {
9595 let P = N
9696 getInteger(B, K)
9797 }
9898 else throw("invalid entry type")
9999 }, M)
100100 }
101101
102102
103103 func Q (B,K) = {
104104 let R = J(B, K, "")
105105 if ($isInstanceOf(R, "String"))
106106 then R
107107 else throw(($getType(J(B, K, "")) + " couldn't be cast to String"))
108108 }
109109
110110
111111 func S (B,K) = {
112112 let R = J(B, K, 0)
113113 if ($isInstanceOf(R, "Int"))
114114 then R
115115 else throw(($getType(J(B, K, 0)) + " couldn't be cast to Int"))
116116 }
117117
118118
119119 func T (w) = ((w._1 + a) + w._2)
120120
121121
122122 func U (O) = {
123123 let V = split(O, a)
124124 if ((size(V) == 2))
125125 then $Tuple2(V[0], V[1])
126126 else throw("invalid pool string")
127127 }
128128
129129
130130 func W (y,z) = {
131131 func X (Y) = ("%s%s%s__mappings__baseAsset2internalId__" + Y)
132132
133133 func Z (aa,ab) = (((("%d%d%s%s__" + toString(aa)) + "__") + toString(ab)) + "__mappings__poolAssets2PoolContract")
134134
135135 func ac (ad) = (("%s%s%s__" + ad) + "__mappings__poolContract2LpAsset")
136136
137137 let ae = addressFromStringValue(Q(this, j))
138138 let af = S(ae, X(y))
139139 let ag = S(ae, X(z))
140140 let ad = Q(ae, Z(af, ag))
141141 let ah = Q(ae, ac(ad))
142142 ah
143143 }
144144
145145
146146 func ai (w) = {
147147 let aj = w
148148 let y = aj._1
149149 let z = aj._2
150150 let ae = addressFromStringValue(Q(this, j))
151151 let R = invoke(ae, "checkWxEmissionPoolLabel", [y, z], nil)
152152 if ($isInstanceOf(R, "Boolean"))
153153 then R
154154 else throw(($getType(invoke(ae, "checkWxEmissionPoolLabel", [y, z], nil)) + " couldn't be cast to Boolean"))
155155 }
156156
157157
158158 let ak = "pools"
159159
160160 func al (w) = {
161161 let am = w
162162 let y = am._1
163163 let z = am._2
164164 makeString(["votes", y, z], a)
165165 }
166166
167167
168168 func an (ao) = {
169169 let ap = if ((ao == ak))
170170 then "%s%s"
171171 else "%s%s%s%s"
172172 makeString([ap, ao, "head"], a)
173173 }
174174
175175
176176 func aq (ao) = {
177177 let ap = if ((ao == ak))
178178 then "%s%s"
179179 else "%s%s%s%s"
180180 makeString([ap, ao, "size"], a)
181181 }
182182
183183
184184 func ar (ao,as) = {
185185 let ap = if ((ao == ak))
186186 then "%s%s%s%s"
187187 else "%s%s%s%s%s"
188188 makeString([ap, ao, as, "prev"], a)
189189 }
190190
191191
192192 func at (ao,as) = {
193193 let ap = if ((ao == ak))
194194 then "%s%s%s%s"
195195 else "%s%s%s%s%s"
196196 makeString([ap, ao, as, "next"], a)
197197 }
198198
199199
200200 func au (ao,as) = {
201201 let av = getString(this, an(ao))
202202 let aw = getString(this, ar(ao, as))
203203 let ax = getString(this, at(ao, as))
204204 if (if ((as == valueOrElse(av, "")))
205205 then true
206206 else (aw != unit))
207207 then true
208208 else (ax != unit)
209209 }
210210
211211
212212 func ay (ao,as) = {
213213 let av = getString(this, an(ao))
214214 let az = valueOrElse(getInteger(this, aq(ao)), 0)
215215 let aA = if (!(au(ao, as)))
216216 then true
217217 else throw("Node exists")
218218 if ((aA == aA))
219219 then (([IntegerEntry(aq(ao), (az + 1))] ++ (if ((av != unit))
220220 then [StringEntry(at(ao, as), value(av)), StringEntry(ar(ao, value(av)), as)]
221221 else nil)) ++ [StringEntry(an(ao), as)])
222222 else throw("Strict value is not equal to itself.")
223223 }
224224
225225
226226 func aB (ao,as) = {
227227 let av = getString(this, an(ao))
228228 let az = valueOrElse(getInteger(this, aq(ao)), 0)
229229 let aw = getString(this, ar(ao, as))
230230 let ax = getString(this, at(ao, as))
231231 ([IntegerEntry(aq(ao), (az - 1))] ++ (if (if ((aw != unit))
232232 then (ax != unit)
233233 else false)
234234 then [StringEntry(at(ao, value(aw)), value(ax)), StringEntry(ar(ao, value(ax)), value(aw)), DeleteEntry(ar(ao, as)), DeleteEntry(at(ao, as))]
235235 else if ((ax != unit))
236236 then [StringEntry(an(ao), value(ax)), DeleteEntry(at(ao, as)), DeleteEntry(ar(ao, value(ax)))]
237237 else if ((aw != unit))
238238 then [DeleteEntry(ar(ao, as)), DeleteEntry(at(ao, value(aw)))]
239239 else if ((as == valueOrElse(av, "")))
240240 then [DeleteEntry(an(ao))]
241241 else throw(((("invalid node: " + ao) + ".") + as))))
242242 }
243243
244244
245245 func aC () = "%s__managerPublicKey"
246246
247247
248248 func aD () = "%s__pendingManagerPublicKey"
249249
250250
251251 func aE () = {
252252 let N = getString(aC())
253253 if ($isInstanceOf(N, "String"))
254254 then {
255255 let aF = N
256256 fromBase58String(aF)
257257 }
258258 else if ($isInstanceOf(N, "Unit"))
259259 then unit
260260 else throw("Match error")
261261 }
262262
263263
264264 func aG () = {
265265 let N = getString(aD())
266266 if ($isInstanceOf(N, "String"))
267267 then {
268268 let aF = N
269269 fromBase58String(aF)
270270 }
271271 else if ($isInstanceOf(N, "Unit"))
272272 then unit
273273 else throw("Match error")
274274 }
275275
276276
277277 let aH = throw("Permission denied")
278278
279279 func aI (aJ) = if ((aJ.caller == this))
280280 then true
281281 else aH
282282
283283
284284 func aK (aJ) = {
285285 let N = aE()
286286 if ($isInstanceOf(N, "ByteVector"))
287287 then {
288288 let aL = N
289289 if ((aJ.callerPublicKey == aL))
290290 then true
291291 else aH
292292 }
293293 else if ($isInstanceOf(N, "Unit"))
294294 then aI(aJ)
295295 else throw("Match error")
296296 }
297297
298298
299299 @Callable(aJ)
300300 func setManager (aM) = {
301301 let aN = aK(aJ)
302302 if ((aN == aN))
303303 then {
304304 let aO = fromBase58String(aM)
305305 if ((aO == aO))
306306 then [StringEntry(aD(), aM)]
307307 else throw("Strict value is not equal to itself.")
308308 }
309309 else throw("Strict value is not equal to itself.")
310310 }
311311
312312
313313
314314 @Callable(aJ)
315315 func confirmManager () = {
316316 let aP = aG()
317317 let aQ = if (isDefined(aP))
318318 then true
319319 else throw("No pending manager")
320320 if ((aQ == aQ))
321321 then {
322322 let aR = if ((aJ.callerPublicKey == value(aP)))
323323 then true
324324 else throw("You are not pending manager")
325325 if ((aR == aR))
326326 then [StringEntry(aC(), toBase58String(value(aP))), DeleteEntry(aD())]
327327 else throw("Strict value is not equal to itself.")
328328 }
329329 else throw("Strict value is not equal to itself.")
330330 }
331331
332332
333333
334334 @Callable(aJ)
335335 func getUserGwxAmountAtHeight (aS,aT) = {
336336 let aU = valueOrErrorMessage(addressFromString(Q(this, k)), "invalid boosting contract address")
337337 $Tuple2(nil, {
338338 let R = invoke(aU, "getUserGwxAmountAtHeightREADONLY", [aS, aT], nil)
339339 if ($isInstanceOf(R, "Int"))
340340 then R
341341 else throw(($getType(invoke(aU, "getUserGwxAmountAtHeightREADONLY", [aS, aT], nil)) + " couldn't be cast to Int"))
342342 })
343343 }
344344
345345
346346
347347 @Callable(aJ)
348348 func constructor (ae,aV,aW,aX,aY) = {
349349 let aZ = [aK(aJ), if ((addressFromString(ae) != unit))
350350 then true
351351 else "invalid factory contract address", if ((addressFromString(aV) != unit))
352352 then true
353353 else "invalid voting emission candidate contract address", if ((addressFromString(aW) != unit))
354354 then true
355355 else "invalid boosting contract address", if ((addressFromString(aX) != unit))
356356 then true
357357 else "invalid staking contract address", if ((aY > 0))
358358 then true
359359 else throw("invalid epoch length")]
360360 if ((aZ == aZ))
361361 then $Tuple2([StringEntry(j, ae), StringEntry(i, aV), StringEntry(k, aW), StringEntry(l, aX), IntegerEntry(f, aY)], unit)
362362 else throw("Strict value is not equal to itself.")
363363 }
364364
365365
366366
367367 @Callable(aJ)
368368 func create (y,z) = {
369369 let aZ = [if ((toBase58String(aJ.caller.bytes) == valueOrElse(getString(this, i), "")))
370370 then true
371371 else aK(aJ)]
372372 if ((aZ == aZ))
373373 then {
374374 let w = $Tuple2(y, z)
375375 let ba = ([BooleanEntry(v(w), true)] ++ ay(ak, T(w)))
376376 let bb = (getInteger(this, g) == unit)
377377 let bc = if (bb)
378378 then {
379379 let t = 0
380380 [IntegerEntry(g, t), IntegerEntry(s(t), height), IntegerEntry(p, height), IntegerEntry(q, t), IntegerEntry(r, height)]
381381 }
382382 else nil
383383 $Tuple2((ba ++ bc), unit)
384384 }
385385 else throw("Strict value is not equal to itself.")
386386 }
387387
388388
389389
390390 @Callable(aJ)
391391 func vote (y,z,bd) = {
392392 let w = $Tuple2(y, z)
393393 let t = valueOrElse(getInteger(this, g), 0)
394394 let be = S(this, s(t))
395395 let aY = S(this, f)
396396 let bf = (be + aY)
397397 let bg = getInteger(this, m)
398398 let bh = valueOrElse(getInteger(this, A(aJ.caller, t)), 0)
399399 let bi = valueOrElse(getInteger(this, C(w, aJ.caller, t)), 0)
400400 let bj = valueOrElse(getInteger(this, E(w, t)), 0)
401401 let bk = valueOrElse(getInteger(this, I(t)), 0)
402402 let bl = {
403403 let R = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aJ.caller.bytes), bf], nil)
404404 if ($isInstanceOf(R, "Int"))
405405 then R
406406 else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [toBase58String(aJ.caller.bytes), bf], nil)) + " couldn't be cast to Int"))
407407 }
408408 let bm = (bl - bh)
409409 let bn = (bi + bd)
410410 let bo = ai(w)
411411 let aZ = [if ((getBoolean(v(w)) != unit))
412412 then true
413413 else throw("invalid assets"), if ((bf > height))
414414 then true
415415 else throw("invalid height"), if ((bg == unit))
416416 then true
417417 else throw("finalization in progress"), if ((bl > 0))
418418 then true
419419 else throw("you do not have gWX"), if (if ((bd > 0))
420420 then (bm >= bd)
421421 else false)
422422 then true
423423 else throw("invalid amount"), if (bo)
424424 then true
425425 else throw("pool hasn't WX_EMISSION label")]
426426 if ((aZ == aZ))
427427 then {
428428 let bp = al(w)
429429 let bq = toString(aJ.caller)
430430 let br = if (au(bp, bq))
431431 then nil
432432 else ay(bp, bq)
433433 $Tuple2(([IntegerEntry(A(aJ.caller, t), (bh + bd)), IntegerEntry(C(w, aJ.caller, t), bn), IntegerEntry(E(w, t), (bj + bd)), IntegerEntry(I(t), (bk + bd))] ++ br), unit)
434434 }
435435 else throw("Strict value is not equal to itself.")
436436 }
437437
438438
439439
440440 @Callable(aJ)
441441 func cancelVote (y,z) = {
442442 let w = $Tuple2(y, z)
443443 let t = valueOrElse(getInteger(this, g), 0)
444444 let be = S(this, s(t))
445445 let aY = S(this, f)
446446 let bf = (be + aY)
447447 let bg = getInteger(this, m)
448448 let bh = valueOrElse(getInteger(this, A(aJ.caller, t)), 0)
449449 let bi = valueOrElse(getInteger(this, C(w, aJ.caller, t)), 0)
450450 let bj = valueOrElse(getInteger(this, E(w, t)), 0)
451451 let bk = valueOrElse(getInteger(this, I(t)), 0)
452452 let aZ = [if ((getBoolean(v(w)) != unit))
453453 then true
454454 else throw("invalid assets"), if ((bf > height))
455455 then true
456456 else throw("invalid height"), if ((bg == unit))
457457 then true
458458 else throw("finalization in progress"), if ((bi > 0))
459459 then true
460460 else throw("no vote")]
461461 if ((aZ == aZ))
462462 then {
463463 let bp = al(w)
464464 let bq = toString(aJ.caller)
465465 $Tuple2(([IntegerEntry(A(aJ.caller, t), max([(bh - bi), 0])), DeleteEntry(C(w, aJ.caller, t)), IntegerEntry(E(w, t), (bj - bi)), IntegerEntry(I(t), (bk - bi))] ++ aB(bp, bq)), unit)
466466 }
467467 else throw("Strict value is not equal to itself.")
468468 }
469469
470470
471471
472472 @Callable(aJ)
473473 func setEpochLength (bs) = {
474474 let aZ = [aK(aJ), if ((bs > 0))
475475 then true
476476 else throw("invalid epoch length")]
477477 if ((aZ == aZ))
478478 then $Tuple2([IntegerEntry(f, bs)], unit)
479479 else throw("Strict value is not equal to itself.")
480480 }
481481
482482
483483
484484 @Callable(aJ)
485485 func setMaxDepth (bt) = {
486486 let aZ = [aK(aJ), if ((bt > 0))
487487 then true
488488 else throw("invalid max depth")]
489489 if ((aZ == aZ))
490490 then $Tuple2([IntegerEntry(h, bt)], unit)
491491 else throw("Strict value is not equal to itself.")
492492 }
493493
494494
495495
496496 @Callable(aJ)
497497 func processVoteINTERNAL (bu,bq) = {
498498 let aN = aI(aJ)
499499 if ((aN == aN))
500500 then {
501501 let aS = valueOrErrorMessage(addressFromString(bq), ("processVoteINTERNAL: invalid user address " + bq))
502502 let t = S(this, g)
503503 let bv = (t - 1)
504504 let aY = S(this, f)
505505 let be = S(this, s(t))
506506 let bf = (be + aY)
507507 let bw = S(this, s(bv))
508508 let bx = (bw + aY)
509509 let by = if ((bv >= 0))
510510 then true
511511 else throw("processVoteINTERNAL: invalid previous epoch")
512512 if ((by == by))
513513 then {
514514 let w = U(bu)
515515 let bz = w
516516 let y = bz._1
517517 let z = bz._2
518518 let bo = ai(w)
519519 let bl = {
520520 let R = invoke(this, "getUserGwxAmountAtHeight", [bq, bf], nil)
521521 if ($isInstanceOf(R, "Int"))
522522 then R
523523 else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [bq, bf], nil)) + " couldn't be cast to Int"))
524524 }
525525 let bA = {
526526 let R = invoke(this, "getUserGwxAmountAtHeight", [bq, bx], nil)
527527 if ($isInstanceOf(R, "Int"))
528528 then R
529529 else throw(($getType(invoke(this, "getUserGwxAmountAtHeight", [bq, bx], nil)) + " couldn't be cast to Int"))
530530 }
531531 let bk = valueOrElse(getInteger(I(t)), 0)
532532 let bB = valueOrElse(getInteger(E(w, t)), 0)
533533 let bC = valueOrErrorMessage(getInteger(C(w, aS, bv)), (((("processVoteINTERNAL " + bu) + " ") + bq) + ": no previous vote"))
534534 let bh = valueOrElse(getInteger(this, A(aS, t)), 0)
535535 let bn = fraction(bC, bl, bA)
536536 let bD = if (if ((bn > 0))
537537 then bo
538538 else false)
539539 then [IntegerEntry(C(w, aS, t), bn), IntegerEntry(I(t), (bk + bn)), IntegerEntry(E(w, t), (bB + bn)), IntegerEntry(A(aS, t), (bh + bn))]
540540 else aB(al(w), bq)
541541 $Tuple2(bD, unit)
542542 }
543543 else throw("Strict value is not equal to itself.")
544544 }
545545 else throw("Strict value is not equal to itself.")
546546 }
547547
548548
549549
550550 @Callable(aJ)
551551 func processPoolINTERNAL (bu) = {
552552 let aN = aI(aJ)
553553 if ((aN == aN))
554554 then {
555555 let bE = (S(this, g) - 1)
556556 let by = if ((bE >= 0))
557557 then true
558558 else throw("processPoolINTERNAL: invalid target epoch")
559559 if ((by == by))
560560 then {
561561 let w = U(bu)
562562 let bF = w
563563 let y = bF._1
564564 let z = bF._2
565565 let aX = addressFromStringValue(Q(this, l))
566566 let ae = addressFromStringValue(Q(this, j))
567567 let ah = W(y, z)
568568 let bG = {
569569 let R = invoke(aX, "usersListTraversal", [ah], nil)
570570 if ($isInstanceOf(R, "Boolean"))
571571 then R
572572 else throw(($getType(invoke(aX, "usersListTraversal", [ah], nil)) + " couldn't be cast to Boolean"))
573573 }
574574 if ((bG == bG))
575575 then if (bG)
576576 then $Tuple2(nil, true)
577577 else {
578578 let bo = ai(w)
579579 let bk = valueOrElse(getInteger(this, I(bE)), 0)
580580 let bB = valueOrElse(getInteger(this, E(w, bE)), 0)
581581 let bH = if (if ((bk == 0))
582582 then true
583583 else !(bo))
584584 then 0
585585 else fraction(bB, b, bk)
586586 let bI = invoke(ae, "modifyWeight", [ah, bH], nil)
587587 if ((bI == bI))
588588 then {
589589 let bJ = if (bo)
590590 then nil
591591 else ([DeleteEntry(v(w))] ++ aB(ak, bu))
592592 $Tuple2(([IntegerEntry(G(w, bE), bH)] ++ bJ), false)
593593 }
594594 else throw("Strict value is not equal to itself.")
595595 }
596596 else throw("Strict value is not equal to itself.")
597597 }
598598 else throw("Strict value is not equal to itself.")
599599 }
600600 else throw("Strict value is not equal to itself.")
601601 }
602602
603603
604604
605605 @Callable(aJ)
606606 func finalizeHelper () = {
607607 let t = valueOrElse(getInteger(this, g), 0)
608608 let bK = (t - 1)
609609 let be = S(this, s(t))
610610 let aY = S(this, f)
611611 let bf = (be + aY)
612612 let bg = getInteger(this, m)
613613 if (if ((height >= bf))
614614 then (bg == unit)
615615 else false)
616616 then {
617617 let bL = (t + 1)
618618 $Tuple2([IntegerEntry(s(bL), height), IntegerEntry(p, height), IntegerEntry(g, bL), IntegerEntry(m, d)], true)
619619 }
620620 else if ((bg == unit))
621621 then $Tuple2(nil, false)
622622 else if ((bg == d))
623623 then {
624624 let bM = getString(n)
625625 let bN = getString(o)
626626 let N = bM
627627 if ($isInstanceOf(N, "Unit"))
628628 then {
629629 let bO = getString(an(ak))
630630 if ($isInstanceOf(bO, "Unit"))
631631 then $Tuple2([IntegerEntry(m, e), DeleteEntry(n), DeleteEntry(o)], true)
632632 else if ($isInstanceOf(bO, "String"))
633633 then {
634634 let bP = bO
635635 $Tuple2([StringEntry(n, bP)], true)
636636 }
637637 else throw("Match error")
638638 }
639639 else if ($isInstanceOf(N, "String"))
640640 then {
641641 let bu = N
642642 let w = U(bu)
643643 let bQ = {
644644 let bO = bN
645645 if ($isInstanceOf(bO, "Unit"))
646646 then getString(an(al(w)))
647647 else if ($isInstanceOf(bO, "String"))
648648 then {
649649 let bR = bO
650- let bS = getString(at(al(w), bR))
650+ let bS = invoke(this, "processVoteINTERNAL", [bu, bR], nil)
651651 if ((bS == bS))
652- then {
653- let bT = invoke(this, "processVoteINTERNAL", [bu, bR], nil)
654- if ((bT == bT))
655- then bS
656- else throw("Strict value is not equal to itself.")
657- }
652+ then getString(at(al(w), bR))
658653 else throw("Strict value is not equal to itself.")
659654 }
660655 else throw("Match error")
661656 }
662657 let bO = bQ
663658 if ($isInstanceOf(bO, "Unit"))
664659 then {
665- let bU = getString(at(ak, bu))
666- let bV = bU
667- if ($isInstanceOf(bV, "Unit"))
660+ let bT = getString(at(ak, bu))
661+ let bU = bT
662+ if ($isInstanceOf(bU, "Unit"))
668663 then $Tuple2([IntegerEntry(m, e), DeleteEntry(n), DeleteEntry(o)], true)
669- else if ($isInstanceOf(bV, "String"))
664+ else if ($isInstanceOf(bU, "String"))
670665 then {
671- let aF = bV
666+ let aF = bU
672667 $Tuple2([StringEntry(n, aF), DeleteEntry(o)], true)
673668 }
674669 else throw("Match error")
675670 }
676671 else if ($isInstanceOf(bO, "String"))
677672 then {
678- let bW = bO
679- $Tuple2([StringEntry(o, bW)], true)
673+ let bV = bO
674+ $Tuple2([StringEntry(o, bV)], true)
680675 }
681676 else throw("Match error")
682677 }
683678 else throw("Match error")
684679 }
685680 else if ((bg == e))
686681 then {
687682 let bM = getString(n)
688683 let N = bM
689684 if ($isInstanceOf(N, "Unit"))
690685 then {
691686 let bO = getString(an(ak))
692687 if ($isInstanceOf(bO, "Unit"))
693688 then $Tuple2([DeleteEntry(m), BooleanEntry(u(bK), true), IntegerEntry(q, t), IntegerEntry(r, be)], true)
694689 else if ($isInstanceOf(bO, "String"))
695690 then {
696- let bX = bO
697- $Tuple2([StringEntry(n, bX)], true)
691+ let bW = bO
692+ $Tuple2([StringEntry(n, bW)], true)
698693 }
699694 else throw("Match error")
700695 }
701696 else if ($isInstanceOf(N, "String"))
702697 then {
703698 let bu = N
704- let bU = getString(at(ak, bu))
705- if ((bU == bU))
706- then {
707- let bG = {
708- let R = invoke(this, "processPoolINTERNAL", [bu], nil)
709- if ($isInstanceOf(R, "Boolean"))
710- then R
711- else throw(($getType(invoke(this, "processPoolINTERNAL", [bu], nil)) + " couldn't be cast to Boolean"))
699+ let bG = {
700+ let R = invoke(this, "processPoolINTERNAL", [bu], nil)
701+ if ($isInstanceOf(R, "Boolean"))
702+ then R
703+ else throw(($getType(invoke(this, "processPoolINTERNAL", [bu], nil)) + " couldn't be cast to Boolean"))
704+ }
705+ if ((bG == bG))
706+ then if (bG)
707+ then $Tuple2(nil, true)
708+ else {
709+ let bT = getString(at(ak, bu))
710+ let bO = bT
711+ if ($isInstanceOf(bO, "Unit"))
712+ then $Tuple2([DeleteEntry(m), BooleanEntry(u(bK), true), IntegerEntry(q, t), IntegerEntry(r, be), DeleteEntry(n)], true)
713+ else if ($isInstanceOf(bO, "String"))
714+ then {
715+ let bW = bO
716+ $Tuple2([StringEntry(n, bW)], true)
717+ }
718+ else throw("Match error")
712719 }
713- if ((bG == bG))
714- then if (bG)
715- then $Tuple2(nil, true)
716- else {
717- let bO = bU
718- if ($isInstanceOf(bO, "Unit"))
719- then $Tuple2([DeleteEntry(m), BooleanEntry(u(bK), true), IntegerEntry(q, t), IntegerEntry(r, be), DeleteEntry(n)], true)
720- else if ($isInstanceOf(bO, "String"))
721- then {
722- let bX = bO
723- $Tuple2([StringEntry(n, bX)], true)
724- }
725- else throw("Match error")
726- }
727- else throw("Strict value is not equal to itself.")
728- }
729720 else throw("Strict value is not equal to itself.")
730721 }
731722 else throw("Match error")
732723 }
733724 else throw("finalization is broken")
734725 }
735726
736727
737728
738729 @Callable(aJ)
739-func finalizeWrapper (bY) = {
740- let bZ = {
730+func finalizeWrapper (bX) = {
731+ let bY = {
741732 let R = invoke(this, "finalizeHelper", nil, nil)
742733 if ($isInstanceOf(R, "Boolean"))
743734 then R
744735 else throw(($getType(invoke(this, "finalizeHelper", nil, nil)) + " couldn't be cast to Boolean"))
745736 }
746- if ((bZ == bZ))
747- then if (!(bZ))
748- then if ((bY == 0))
737+ if ((bY == bY))
738+ then if (!(bY))
739+ then if ((bX == 0))
749740 then throw("Current voting is not over yet")
750741 else $Tuple2(nil, unit)
751742 else {
752- let ca = valueOrElse(getInteger(this, h), c)
753- if ((ca > bY))
743+ let bZ = valueOrElse(getInteger(this, h), c)
744+ if ((bZ > bX))
754745 then {
755- let cb = invoke(this, "finalizeWrapper", [(bY + 1)], nil)
756- if ((cb == cb))
746+ let ca = invoke(this, "finalizeWrapper", [(bX + 1)], nil)
747+ if ((ca == ca))
757748 then $Tuple2(nil, unit)
758749 else throw("Strict value is not equal to itself.")
759750 }
760751 else $Tuple2(nil, unit)
761752 }
762753 else throw("Strict value is not equal to itself.")
763754 }
764755
765756
766757
767758 @Callable(aJ)
768759 func finalize () = {
769- let cb = invoke(this, "finalizeWrapper", [0], nil)
770- if ((cb == cb))
760+ let ca = invoke(this, "finalizeWrapper", [0], nil)
761+ if ((ca == ca))
771762 then $Tuple2(nil, unit)
772763 else throw("Strict value is not equal to itself.")
773764 }
774765
775766
776767
777768 @Callable(aJ)
778769 func containsNodeREADONLY (ao,as) = $Tuple2(nil, au(ao, as))
779770
780771
781772
782773 @Callable(aJ)
783774 func insertNode (ao,as) = {
784775 let aN = aK(aJ)
785776 if ((aN == aN))
786777 then $Tuple2(ay(ao, as), unit)
787778 else throw("Strict value is not equal to itself.")
788779 }
789780
790781
791782
792783 @Callable(aJ)
793784 func deleteNode (ao,as) = {
794785 let aN = aK(aJ)
795786 if ((aN == aN))
796787 then $Tuple2(aB(ao, as), unit)
797788 else throw("Strict value is not equal to itself.")
798789 }
799790
800791
801-@Verifier(cc)
802-func cd () = {
803- let ce = {
792+@Verifier(cb)
793+func cc () = {
794+ let cd = {
804795 let N = aE()
805796 if ($isInstanceOf(N, "ByteVector"))
806797 then {
807798 let aL = N
808799 aL
809800 }
810801 else if ($isInstanceOf(N, "Unit"))
811- then cc.senderPublicKey
802+ then cb.senderPublicKey
812803 else throw("Match error")
813804 }
814- sigVerify(cc.bodyBytes, cc.proofs[0], ce)
805+ sigVerify(cb.bodyBytes, cb.proofs[0], cd)
815806 }
816807

github/deemru/w8io/026f985 
85.17 ms