tx · 838d9aNBMi4kstg36zxLE49tezzDLvMamci9kRLAU3Eb

3Mqo3c7G5qkBfvMMLhriequKQFofhJSP9ip:  -0.06200000 Waves

2024.02.21 15:36 [2986007] smart account 3Mqo3c7G5qkBfvMMLhriequKQFofhJSP9ip > SELF 0.00000000 Waves

{ "type": 13, "id": "838d9aNBMi4kstg36zxLE49tezzDLvMamci9kRLAU3Eb", "fee": 6200000, "feeAssetId": null, "timestamp": 1708518915704, "version": 2, "chainId": 84, "sender": "3Mqo3c7G5qkBfvMMLhriequKQFofhJSP9ip", "senderPublicKey": "5A4c5wG6NUWakcEewdfBkkZSvSdZRqo9onS5bqQrv3x1", "proofs": [ "4ytoRcjJhbBRsKumrTEVK3h2tgFQwxPqkntAr4YxiCMB5SFrfQv3wQHFKsSGevVyaHVpaapK2WmmD1bZqbavyuRV" ], "script": "base64:BgKhAQgCEgASBQoDAQQBEgcKBQEEAQgBEgQKAgEEEgMKAQESBAoCAQQSBAoCCAESBAoCCAESBAoCCAESBQoDAQgBEgASBAoCAQESAwoBARIFCgMBAQESBAoCCAgSABIAEgMKAQgSBQoDAQEBEgQKAgEBEgQKAggBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgASAwoBARIDCgEBEgQKAggBhAEACmxQZGVjaW1hbHMACAAGc2NhbGU4AIDC1y8ADHNjYWxlOEJpZ0ludAkAtgIBAIDC1y8AB3NjYWxlMTgJALYCAQCAgJC7utat8A0ACnplcm9CaWdJbnQJALYCAQAAAARiaWcwCQC2AgEAAAAEYmlnMQkAtgIBAAEABGJpZzIJALYCAQACAAt3YXZlc1N0cmluZwIFV0FWRVMAA1NFUAICX18AClBvb2xBY3RpdmUAAQAPUG9vbFB1dERpc2FibGVkAAIAE1Bvb2xNYXRjaGVyRGlzYWJsZWQAAwAMUG9vbFNodXRkb3duAAQADmlkeFBvb2xBZGRyZXNzAAEADWlkeFBvb2xTdGF0dXMAAgAQaWR4UG9vbExQQXNzZXRJZAADAA1pZHhBbXRBc3NldElkAAQAD2lkeFByaWNlQXNzZXRJZAAFAA5pZHhBbXRBc3NldERjbQAGABBpZHhQcmljZUFzc2V0RGNtAAcADmlkeElBbXRBc3NldElkAAgAEGlkeElQcmljZUFzc2V0SWQACQANaWR4TFBBc3NldERjbQAKABJpZHhQb29sQW10QXNzZXRBbXQAAQAUaWR4UG9vbFByaWNlQXNzZXRBbXQAAgARaWR4UG9vbExQQXNzZXRBbXQAAwAZaWR4RmFjdG9yeVN0YWtpbmdDb250cmFjdAABABppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdAAHAQV0b1gxOAIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQC8AgMJALYCAQUHb3JpZ1ZhbAUHc2NhbGUxOAkAtgIBBQ1vcmlnU2NhbGVNdWx0AQt0b1gxOEJpZ0ludAIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQC8AgMFB29yaWdWYWwFB3NjYWxlMTgFDW9yaWdTY2FsZU11bHQBB2Zyb21YMTgCA3ZhbA9yZXN1bHRTY2FsZU11bHQJAKADAQkAvAIDBQN2YWwJALYCAQUPcmVzdWx0U2NhbGVNdWx0BQdzY2FsZTE4AQxmcm9tWDE4Um91bmQDA3ZhbA9yZXN1bHRTY2FsZU11bHQFcm91bmQJAKADAQkAvQIEBQN2YWwJALYCAQUPcmVzdWx0U2NhbGVNdWx0BQdzY2FsZTE4BQVyb3VuZAEHdG9TY2FsZQMDYW10CHJlc1NjYWxlCGN1clNjYWxlCQBrAwUDYW10BQhyZXNTY2FsZQUIY3VyU2NhbGUBA2FicwEDdmFsAwkAZgIAAAUDdmFsCQEBLQEFA3ZhbAUDdmFsAQlhYnNCaWdJbnQBA3ZhbAMJAL8CAgUKemVyb0JpZ0ludAUDdmFsCQC+AgEFA3ZhbAUDdmFsAQxzd2FwQ29udHJhY3QAAhAlc19fc3dhcENvbnRyYWN0AQJmYwACEyVzX19mYWN0b3J5Q29udHJhY3QBE2tleU1hbmFnZXJQdWJsaWNLZXkAAhQlc19fbWFuYWdlclB1YmxpY0tleQEWa2V5TWFuYWdlclZhdWx0QWRkcmVzcwACFyVzX19tYW5hZ2VyVmF1bHRBZGRyZXNzAQJwbAACESVzJXNfX3ByaWNlX19sYXN0AQJwaAIBaAl0aW1lc3RhbXAJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFoCQDMCAIJAKQDAQUJdGltZXN0YW1wBQNuaWwFA1NFUAEDcGF1Agt1c2VyQWRkcmVzcwR0eElkCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwULdXNlckFkZHJlc3MCAl9fBQR0eElkAQNnYXUCC3VzZXJBZGRyZXNzBHR4SWQJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQt1c2VyQWRkcmVzcwICX18FBHR4SWQBAmFhAAIPJXNfX2Ftb3VudEFzc2V0AQJwYQACDiVzX19wcmljZUFzc2V0AAZrZXlGZWUCByVzX19mZWUACmZlZURlZmF1bHQJAGsDAAoFBnNjYWxlOACQTgADZmVlCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFBmtleUZlZQUKZmVlRGVmYXVsdAAGa2V5S0xwCQC5CQIJAMwIAgICJXMJAMwIAgIDa0xwBQNuaWwFA1NFUAAVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0CQC5CQIJAMwIAgICJXMJAMwIAgISa0xwUmVmcmVzaGVkSGVpZ2h0BQNuaWwFA1NFUAASa2V5S0xwUmVmcmVzaERlbGF5CQC5CQIJAMwIAgICJXMJAMwIAgIPcmVmcmVzaEtMcERlbGF5BQNuaWwFA1NFUAAWa0xwUmVmcmVzaERlbGF5RGVmYXVsdAAeAA9rTHBSZWZyZXNoRGVsYXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUSa2V5S0xwUmVmcmVzaERlbGF5BRZrTHBSZWZyZXNoRGVsYXlEZWZhdWx0ARRrZXlBZGRpdGlvbmFsQmFsYW5jZQEHYXNzZXRJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgINc3Rha2VkQmFsYW5jZQkAzAgCBQdhc3NldElkBQNuaWwFA1NFUAEWa2V5U3Rha2luZ0Fzc2V0QmFsYW5jZQEHYXNzZXRJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgIRc2hhcmVBc3NldEJhbGFuY2UJAMwIAgUHYXNzZXRJZAUDbmlsBQNTRVABGmdldEFkZGl0aW9uYWxCYWxhbmNlT3JaZXJvAQdhc3NldElkCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJARRrZXlBZGRpdGlvbmFsQmFsYW5jZQEFB2Fzc2V0SWQAAAEcZ2V0U3Rha2luZ0Fzc2V0QmFsYW5jZU9yWmVybwEHYXNzZXRJZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEWa2V5U3Rha2luZ0Fzc2V0QmFsYW5jZQEFB2Fzc2V0SWQAAAEQa2V5RmFjdG9yeUNvbmZpZwACESVzX19mYWN0b3J5Q29uZmlnAQ1rZXlNYXRjaGVyUHViAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5ASlrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwETcG9vbENvbnRyYWN0QWRkcmVzcwkArAICCQCsAgICCCVzJXMlc19fBRNwb29sQ29udHJhY3RBZGRyZXNzAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAENa2V5UG9vbENvbmZpZwIJaUFtdEFzc2V0C2lQcmljZUFzc2V0CQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQlpQW10QXNzZXQCAl9fBQtpUHJpY2VBc3NldAIIX19jb25maWcBH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQBDGJhc2VBc3NldFN0cgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQxiYXNlQXNzZXRTdHIBE2tleUFsbFBvb2xzU2h1dGRvd24AAgwlc19fc2h1dGRvd24BDWtleVBvb2xXZWlnaHQBD2NvbnRyYWN0QWRkcmVzcwkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FD2NvbnRyYWN0QWRkcmVzcwEWa2V5QWxsb3dlZExwU2NyaXB0SGFzaAACFyVzX19hbGxvd2VkTHBTY3JpcHRIYXNoABZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwEWa2V5U2tpcE9yZGVyVmFsaWRhdGlvbgELcG9vbEFkZHJlc3MJAKwCAgIbJXMlc19fc2tpcE9yZGVyVmFsaWRhdGlvbl9fBQtwb29sQWRkcmVzcwEPdGhyb3dPcmRlckVycm9yBApvcmRlclZhbGlkDm9yZGVyVmFsaWRJbmZvC3NlbmRlclZhbGlkDG1hdGNoZXJWYWxpZAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAKUDAQUKb3JkZXJWYWxpZAICICgFDm9yZGVyVmFsaWRJbmZvAgEpAg0gc2VuZGVyVmFsaWQ9CQClAwEFC3NlbmRlclZhbGlkAg4gbWF0Y2hlclZhbGlkPQkApQMBBQxtYXRjaGVyVmFsaWQBF2FkZHJlc3NGcm9tU3RyaW5nT3JUaGlzAQ1hZGRyZXNzU3RyaW5nBAckbWF0Y2gwCQCmCAEFDWFkZHJlc3NTdHJpbmcDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQBYQUHJG1hdGNoMAUBYQUEdGhpcwEcZ2V0TWFuYWdlclZhdWx0QWRkcmVzc09yVGhpcwAEDmZhY3RvcnlBZGRyZXNzBAckbWF0Y2gwCQCiCAEJAQJmYwADCQABAgUHJG1hdGNoMAIGU3RyaW5nBANmY2EFByRtYXRjaDAJARdhZGRyZXNzRnJvbVN0cmluZ09yVGhpcwEFA2ZjYQUEdGhpcwQHJG1hdGNoMAkAnQgCBQ5mYWN0b3J5QWRkcmVzcwkBFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkBF2FkZHJlc3NGcm9tU3RyaW5nT3JUaGlzAQUBcwUEdGhpcwEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQdhZGRyZXNzCQDMCAICAS4JAMwIAgUDa2V5CQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABDGdldEludE9yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQh0aHJvd0VycgEDbXNnCQACAQkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFA21zZwUDbmlsAgEgAQZmbXRFcnIBA21zZwkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFA21zZwUDbmlsAgEgAA9mYWN0b3J5Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzCQECZmMAABNmZWVDb2xsZWN0b3JBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQEPZ2V0U3RyaW5nT3JGYWlsAgUPZmFjdG9yeUNvbnRyYWN0BRZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzAAVpbkZlZQoAAUAJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AhBnZXRJbkZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAZvdXRGZWUKAAFACQD8BwQFD2ZhY3RvcnlDb250cmFjdAIRZ2V0T3V0RmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBFWtleUFkZHJlc3NXaGl0ZWxpc3RlZAEHYWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgILd2hpdGVsaXN0ZWQJAMwIAgkApQgBBQdhZGRyZXNzBQNuaWwFA1NFUAEUaXNBZGRyZXNzV2hpdGVsaXN0ZWQBB2FkZHJlc3MJAQt2YWx1ZU9yRWxzZQIJAJsIAgUPZmFjdG9yeUNvbnRyYWN0CQEVa2V5QWRkcmVzc1doaXRlbGlzdGVkAQUHYWRkcmVzcwcBEGlzR2xvYmFsU2h1dGRvd24ACQELdmFsdWVPckVsc2UCCQCbCAIFD2ZhY3RvcnlDb250cmFjdAkBE2tleUFsbFBvb2xzU2h1dGRvd24ABwETZ2V0TWF0Y2hlclB1Yk9yRmFpbAAJANkEAQkBD2dldFN0cmluZ09yRmFpbAIFD2ZhY3RvcnlDb250cmFjdAkBDWtleU1hdGNoZXJQdWIAAQ1nZXRQb29sQ29uZmlnAAQIYW10QXNzZXQJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzCQECYWEABApwcmljZUFzc2V0CQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBAnBhAAQLaVByaWNlQXNzZXQJAQxnZXRJbnRPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJAR9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAQUKcHJpY2VBc3NldAQJaUFtdEFzc2V0CQEMZ2V0SW50T3JGYWlsAgUPZmFjdG9yeUNvbnRyYWN0CQEfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAEFCGFtdEFzc2V0CQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJAQ1rZXlQb29sQ29uZmlnAgkApAMBBQlpQW10QXNzZXQJAKQDAQULaVByaWNlQXNzZXQFA1NFUAEMcGFyc2VBc3NldElkAQVpbnB1dAMJAAACBQVpbnB1dAULd2F2ZXNTdHJpbmcFBHVuaXQJANkEAQUFaW5wdXQBD2Fzc2V0SWRUb1N0cmluZwEFaW5wdXQDCQAAAgUFaW5wdXQFBHVuaXQFC3dhdmVzU3RyaW5nCQDYBAEJAQV2YWx1ZQEFBWlucHV0AQ9wYXJzZVBvb2xDb25maWcBCnBvb2xDb25maWcJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQpwb29sQ29uZmlnBQ5pZHhQb29sQWRkcmVzcwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFDWlkeFBvb2xTdGF0dXMJANkEAQkAkQMCBQpwb29sQ29uZmlnBRBpZHhQb29sTFBBc3NldElkCQEMcGFyc2VBc3NldElkAQkAkQMCBQpwb29sQ29uZmlnBQ1pZHhBbXRBc3NldElkCQEMcGFyc2VBc3NldElkAQkAkQMCBQpwb29sQ29uZmlnBQ9pZHhQcmljZUFzc2V0SWQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpwb29sQ29uZmlnBQ5pZHhBbXRBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCnBvb2xDb25maWcFEGlkeFByaWNlQXNzZXREY20AEHBvb2xDb25maWdQYXJzZWQJAQ9wYXJzZVBvb2xDb25maWcBCQENZ2V0UG9vbENvbmZpZwAACyR0MDk3Njk5OTM1BRBwb29sQ29uZmlnUGFyc2VkAA5jZmdQb29sQWRkcmVzcwgFCyR0MDk3Njk5OTM1Al8xAA1jZmdQb29sU3RhdHVzCAULJHQwOTc2OTk5MzUCXzIADGNmZ0xwQXNzZXRJZAgFCyR0MDk3Njk5OTM1Al8zABBjZmdBbW91bnRBc3NldElkCAULJHQwOTc2OTk5MzUCXzQAD2NmZ1ByaWNlQXNzZXRJZAgFCyR0MDk3Njk5OTM1Al81ABZjZmdBbW91bnRBc3NldERlY2ltYWxzCAULJHQwOTc2OTk5MzUCXzYAFWNmZ1ByaWNlQXNzZXREZWNpbWFscwgFCyR0MDk3Njk5OTM1Al83ARBnZXRGYWN0b3J5Q29uZmlnAAkAtQkCCQEPZ2V0U3RyaW5nT3JGYWlsAgUPZmFjdG9yeUNvbnRyYWN0CQEQa2V5RmFjdG9yeUNvbmZpZwAFA1NFUAAPc3Rha2luZ0NvbnRyYWN0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQEQZ2V0RmFjdG9yeUNvbmZpZwAFGWlkeEZhY3RvcnlTdGFraW5nQ29udHJhY3QCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MAEHNsaXBwYWdlQ29udHJhY3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJARBnZXRGYWN0b3J5Q29uZmlnAAUaaWR4RmFjdG9yeVNsaXBwYWdlQ29udHJhY3QCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBEWRhdGFQdXRBY3Rpb25JbmZvCg1pbkFtdEFzc2V0QW10D2luUHJpY2VBc3NldEFtdAhvdXRMcEFtdAVwcmljZR1zbGlwcGFnZVRvbGVyYW5jZVBhc3NlZEJ5VXNlchVzbGlwcGFnZVRvbGVyYW5jZVJlYWwIdHhIZWlnaHQLdHhUaW1lc3RhbXASc2xpcGFnZUFtdEFzc2V0QW10FHNsaXBhZ2VQcmljZUFzc2V0QW10CQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQ1pbkFtdEFzc2V0QW10CQDMCAIJAKQDAQUPaW5QcmljZUFzc2V0QW10CQDMCAIJAKQDAQUIb3V0THBBbXQJAMwIAgkApAMBBQVwcmljZQkAzAgCCQCkAwEFHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyCQDMCAIJAKQDAQUVc2xpcHBhZ2VUb2xlcmFuY2VSZWFsCQDMCAIJAKQDAQUIdHhIZWlnaHQJAMwIAgkApAMBBQt0eFRpbWVzdGFtcAkAzAgCCQCkAwEFEnNsaXBhZ2VBbXRBc3NldEFtdAkAzAgCCQCkAwEFFHNsaXBhZ2VQcmljZUFzc2V0QW10BQNuaWwFA1NFUAERZGF0YUdldEFjdGlvbkluZm8GDm91dEFtdEFzc2V0QW10EG91dFByaWNlQXNzZXRBbXQHaW5McEFtdAVwcmljZQh0eEhlaWdodAt0eFRpbWVzdGFtcAkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFDm91dEFtdEFzc2V0QW10CQDMCAIJAKQDAQUQb3V0UHJpY2VBc3NldEFtdAkAzAgCCQCkAwEFB2luTHBBbXQJAMwIAgkApAMBBQVwcmljZQkAzAgCCQCkAwEFCHR4SGVpZ2h0CQDMCAIJAKQDAQULdHhUaW1lc3RhbXAFA25pbAUDU0VQAQ1nZXRBY2NCYWxhbmNlAQdhc3NldElkBA1iYWxhbmNlT25Qb29sAwkAAAIFB2Fzc2V0SWQCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFB2Fzc2V0SWQEDHRvdGFsQmFsYW5jZQkAZQIJAGQCBQ1iYWxhbmNlT25Qb29sCQEaZ2V0QWRkaXRpb25hbEJhbGFuY2VPclplcm8BBQdhc3NldElkCQEcZ2V0U3Rha2luZ0Fzc2V0QmFsYW5jZU9yWmVybwEFB2Fzc2V0SWQJAJYDAQkAzAgCAAAJAMwIAgUMdG90YWxCYWxhbmNlBQNuaWwBD2NhbGNQcmljZUJpZ0ludAIIcHJBbXRYMTgIYW1BbXRYMTgJALwCAwUIcHJBbXRYMTgFB3NjYWxlMTgFCGFtQW10WDE4ARRjYWxjUHJpY2VCaWdJbnRSb3VuZAMIcHJBbXRYMTgIYW1BbXRYMTgFcm91bmQJAL0CBAUIcHJBbXRYMTgFB3NjYWxlMTgFCGFtQW10WDE4BQVyb3VuZAEHZ2V0UmF0ZQEFcHJveHkEA2ludgkA/AcEBQVwcm94eQIHZ2V0UmF0ZQUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYEByRtYXRjaDAFA2ludgMJAAECBQckbWF0Y2gwAgNJbnQEAXIFByRtYXRjaDAFAXIJAQh0aHJvd0VycgECIHByb3h5LmdldFJhdGUoKSB1bmV4cGVjdGVkIHZhbHVlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQdkZXBvc2l0BAdhc3NldElkBmFtb3VudA5zdGFraW5nQXNzZXRJZAVwcm94eQQYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlCQEaZ2V0QWRkaXRpb25hbEJhbGFuY2VPclplcm8BBQdhc3NldElkAwkAAAIFGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZQUYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlBBpjdXJyZW50U3Rha2luZ0Fzc2V0QmFsYW5jZQkBHGdldFN0YWtpbmdBc3NldEJhbGFuY2VPclplcm8BBQ5zdGFraW5nQXNzZXRJZAMJAAACBRpjdXJyZW50U3Rha2luZ0Fzc2V0QmFsYW5jZQUaY3VycmVudFN0YWtpbmdBc3NldEJhbGFuY2UEBWFzc2V0CQEMcGFyc2VBc3NldElkAQUHYXNzZXRJZAMJAGYCBQZhbW91bnQAAAQNZGVwb3NpdEludm9rZQkA/AcEBQVwcm94eQIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQVhc3NldAUGYW1vdW50BQNuaWwDCQAAAgUNZGVwb3NpdEludm9rZQUNZGVwb3NpdEludm9rZQQHJG1hdGNoMAUNZGVwb3NpdEludm9rZQMJAAECBQckbWF0Y2gwAgNJbnQEFHJlY2VpdmVkU3Rha2luZ0Fzc2V0BQckbWF0Y2gwBBRuZXdBZGRpdGlvbmFsQmFsYW5jZQkAZAIFGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZQUGYW1vdW50BBZuZXdTdGFraW5nQXNzZXRCYWxhbmNlCQBkAgUaY3VycmVudFN0YWtpbmdBc3NldEJhbGFuY2UFFHJlY2VpdmVkU3Rha2luZ0Fzc2V0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEUa2V5QWRkaXRpb25hbEJhbGFuY2UBBQdhc3NldElkBRRuZXdBZGRpdGlvbmFsQmFsYW5jZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVN0YWtpbmdBc3NldEJhbGFuY2UBBQ5zdGFraW5nQXNzZXRJZAUWbmV3U3Rha2luZ0Fzc2V0QmFsYW5jZQUDbmlsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEId2l0aGRyYXcGB2Fzc2V0SWQGYW1vdW50DnN0YWtpbmdBc3NldElkBXByb3h5DHByb3h5UmF0ZU11bA1wcm9maXRBZGRyZXNzBBhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UJARpnZXRBZGRpdGlvbmFsQmFsYW5jZU9yWmVybwEFB2Fzc2V0SWQDCQAAAgUYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlBRhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UEGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlCQEcZ2V0U3Rha2luZ0Fzc2V0QmFsYW5jZU9yWmVybwEFDnN0YWtpbmdBc3NldElkAwkAAAIFGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlBRpjdXJyZW50U3Rha2luZ0Fzc2V0QmFsYW5jZQQQY3VycmVudFByb3h5UmF0ZQkBB2dldFJhdGUBBQVwcm94eQMJAAACBRBjdXJyZW50UHJveHlSYXRlBRBjdXJyZW50UHJveHlSYXRlBAdvbGRSYXRlCQBrAwUMcHJveHlSYXRlTXVsBRhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UFGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlBAxzdGFraW5nQXNzZXQJAQxwYXJzZUFzc2V0SWQBBQ5zdGFraW5nQXNzZXRJZAQUb2xkU2VuZFN0YWtpbmdBbW91bnQJAGsDBQxwcm94eVJhdGVNdWwFBmFtb3VudAUHb2xkUmF0ZQQWc2VuZFN0YWtpbmdBc3NldEFtb3VudAkAawMFDHByb3h5UmF0ZU11bAUGYW1vdW50BRBjdXJyZW50UHJveHlSYXRlBAxwcm9maXRBbW91bnQJAJYDAQkAzAgCAAAJAMwIAgkAZQIFFG9sZFNlbmRTdGFraW5nQW1vdW50BRZzZW5kU3Rha2luZ0Fzc2V0QW1vdW50BQNuaWwDCQBmAgUWc2VuZFN0YWtpbmdBc3NldEFtb3VudAAABA53aXRoZHJhd0ludm9rZQkA/AcEBQVwcm94eQIId2l0aGRyYXcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUMc3Rha2luZ0Fzc2V0BRZzZW5kU3Rha2luZ0Fzc2V0QW1vdW50BQNuaWwDCQAAAgUOd2l0aGRyYXdJbnZva2UFDndpdGhkcmF3SW52b2tlBAckbWF0Y2gwBQ53aXRoZHJhd0ludm9rZQMJAAECBQckbWF0Y2gwAgNJbnQEDnJlY2VpdmVkQXNzZXRzBQckbWF0Y2gwBBRuZXdBZGRpdGlvbmFsQmFsYW5jZQkAZQIFGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZQUOcmVjZWl2ZWRBc3NldHMEFm5ld1N0YWtpbmdBc3NldEJhbGFuY2UJAGUCCQBlAgUaY3VycmVudFN0YWtpbmdBc3NldEJhbGFuY2UFFnNlbmRTdGFraW5nQXNzZXRBbW91bnQFDHByb2ZpdEFtb3VudAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFGtleUFkZGl0aW9uYWxCYWxhbmNlAQUHYXNzZXRJZAUUbmV3QWRkaXRpb25hbEJhbGFuY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlTdGFraW5nQXNzZXRCYWxhbmNlAQUOc3Rha2luZ0Fzc2V0SWQFFm5ld1N0YWtpbmdBc3NldEJhbGFuY2UJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUNcHJvZml0QWRkcmVzcwUMcHJvZml0QW1vdW50CQEMcGFyc2VBc3NldElkAQUOc3Rha2luZ0Fzc2V0SWQFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BE2dldExlYXNlUHJveHlDb25maWcBB2Fzc2V0SWQEByRtYXRjaDAJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AhpnZXRQb29sTGVhc2VDb25maWdSRUFET05MWQkAzAgCCQClCAEFBHRoaXMJAMwIAgUHYXNzZXRJZAUDbmlsBQNuaWwDCQABAgUHJG1hdGNoMAIwKEJvb2xlYW4sIEludCwgSW50LCBTdHJpbmcsIFN0cmluZywgSW50LCBTdHJpbmcpBAFhBQckbWF0Y2gwBQFhCQEIdGhyb3dFcnIBCQCsAgIJAKwCAgIBWwUHYXNzZXRJZAIdXSBnZXRMZWFzZVByb3h5Q29uZmlnKCkgZXJyb3IBEXJlYmFsYW5jZUludGVybmFsBwt0YXJnZXRSYXRpbwdhc3NldElkDnN0YWtpbmdBc3NldElkCm1pbkJhbGFuY2UFcHJveHkMcHJveHlSYXRlTXVsDXByb2ZpdEFkZHJlc3MEGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlCQEcZ2V0U3Rha2luZ0Fzc2V0QmFsYW5jZU9yWmVybwEFDnN0YWtpbmdBc3NldElkAwkAAAIFGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlBRpjdXJyZW50U3Rha2luZ0Fzc2V0QmFsYW5jZQQYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlAwkBAiE9AgUaY3VycmVudFN0YWtpbmdBc3NldEJhbGFuY2UAAAkBGmdldEFkZGl0aW9uYWxCYWxhbmNlT3JaZXJvAQUHYXNzZXRJZAAAAwkAAAIFGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZQUYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlBBRsZWFzYWJsZVRvdGFsQmFsYW5jZQkAlgMBCQDMCAIAAAkAzAgCCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdhc3NldElkBQptaW5CYWxhbmNlBQNuaWwEF3RhcmdldEFkZGl0aW9uYWxCYWxhbmNlCQBrAwULdGFyZ2V0UmF0aW8FFGxlYXNhYmxlVG90YWxCYWxhbmNlAGQEBGRpZmYJAGUCBRhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UFF3RhcmdldEFkZGl0aW9uYWxCYWxhbmNlAwkAAAIFBGRpZmYAAAUDbmlsAwkAZgIAAAUEZGlmZgQPc2VuZEFzc2V0QW1vdW50CQEBLQEFBGRpZmYJAQdkZXBvc2l0BAUHYXNzZXRJZAUPc2VuZEFzc2V0QW1vdW50BQ5zdGFraW5nQXNzZXRJZAUFcHJveHkEDmdldEFzc2V0QW1vdW50BQRkaWZmCQEId2l0aGRyYXcGBQdhc3NldElkBQ5nZXRBc3NldEFtb3VudAUOc3Rha2luZ0Fzc2V0SWQFBXByb3h5BQxwcm94eVJhdGVNdWwFDXByb2ZpdEFkZHJlc3MJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BDnJlYmFsYW5jZUFzc2V0AQdhc3NldElkBA0kdDAxNjIyMDE2MzU2CQETZ2V0TGVhc2VQcm94eUNvbmZpZwEFB2Fzc2V0SWQECmlzTGVhc2FibGUIBQ0kdDAxNjIyMDE2MzU2Al8xBAtsZWFzZWRSYXRpbwgFDSR0MDE2MjIwMTYzNTYCXzIECm1pbkJhbGFuY2UIBQ0kdDAxNjIyMDE2MzU2Al8zBAxwcm94eUFkZHJlc3MIBQ0kdDAxNjIyMDE2MzU2Al80BAxwcm94eUFzc2V0SWQIBQ0kdDAxNjIyMDE2MzU2Al81BAxwcm94eVJhdGVNdWwIBQ0kdDAxNjIyMDE2MzU2Al82BBRzdGFraW5nUHJvZml0QWRkcmVzcwgFDSR0MDE2MjIwMTYzNTYCXzcDBQppc0xlYXNhYmxlCQERcmViYWxhbmNlSW50ZXJuYWwHBQtsZWFzZWRSYXRpbwUHYXNzZXRJZAUMcHJveHlBc3NldElkBQptaW5CYWxhbmNlCQERQGV4dHJOYXRpdmUoMTA2MikBBQxwcm94eUFkZHJlc3MFDHByb3h5UmF0ZU11bAkBEUBleHRyTmF0aXZlKDEwNjIpAQUUc3Rha2luZ1Byb2ZpdEFkZHJlc3MFA25pbAEZd2l0aGRyYXdBbmRSZWJhbGFuY2VBc3NldAIHYXNzZXRJZAlnZXRBbW91bnQEDSR0MDE2NzU1MTY4OTEJARNnZXRMZWFzZVByb3h5Q29uZmlnAQUHYXNzZXRJZAQKaXNMZWFzYWJsZQgFDSR0MDE2NzU1MTY4OTECXzEEC2xlYXNlZFJhdGlvCAUNJHQwMTY3NTUxNjg5MQJfMgQKbWluQmFsYW5jZQgFDSR0MDE2NzU1MTY4OTECXzMEDHByb3h5QWRkcmVzcwgFDSR0MDE2NzU1MTY4OTECXzQEDHByb3h5QXNzZXRJZAgFDSR0MDE2NzU1MTY4OTECXzUEDHByb3h5UmF0ZU11bAgFDSR0MDE2NzU1MTY4OTECXzYEFHN0YWtpbmdQcm9maXRBZGRyZXNzCAUNJHQwMTY3NTUxNjg5MQJfNwMFCmlzTGVhc2FibGUEGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlCQEcZ2V0U3Rha2luZ0Fzc2V0QmFsYW5jZU9yWmVybwEFDHByb3h5QXNzZXRJZAMJAAACBRpjdXJyZW50U3Rha2luZ0Fzc2V0QmFsYW5jZQUaY3VycmVudFN0YWtpbmdBc3NldEJhbGFuY2UEGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZQMJAQIhPQIFGmN1cnJlbnRTdGFraW5nQXNzZXRCYWxhbmNlAAAJARpnZXRBZGRpdGlvbmFsQmFsYW5jZU9yWmVybwEFB2Fzc2V0SWQAAAMJAAACBRhjdXJyZW50QWRkaXRpb25hbEJhbGFuY2UFGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZQQXbmV3VG90YWxMZWFzYWJsZUJhbGFuY2UJAJYDAQkAzAgCAAAJAMwIAgkAZQIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFB2Fzc2V0SWQFCWdldEFtb3VudAUKbWluQmFsYW5jZQUDbmlsAwkAAAIFF25ld1RvdGFsTGVhc2FibGVCYWxhbmNlBRduZXdUb3RhbExlYXNhYmxlQmFsYW5jZQQUbmV3QWRkaXRpb25hbEJhbGFuY2UJAGsDBQtsZWFzZWRSYXRpbwUXbmV3VG90YWxMZWFzYWJsZUJhbGFuY2UAZAMJAAACBRRuZXdBZGRpdGlvbmFsQmFsYW5jZQUUbmV3QWRkaXRpb25hbEJhbGFuY2UEDndpdGhkcmF3QW1vdW50CQBlAgUYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlBRRuZXdBZGRpdGlvbmFsQmFsYW5jZQMJAAACBQ53aXRoZHJhd0Ftb3VudAUOd2l0aGRyYXdBbW91bnQDCQAAAgUOd2l0aGRyYXdBbW91bnQAAAUDbmlsAwkAZgIAAAUOd2l0aGRyYXdBbW91bnQJAQdkZXBvc2l0BAUHYXNzZXRJZAkBAS0BBQ53aXRoZHJhd0Ftb3VudAUMcHJveHlBc3NldElkCQERQGV4dHJOYXRpdmUoMTA2MikBBQxwcm94eUFkZHJlc3MJAQh3aXRoZHJhdwYFB2Fzc2V0SWQFDndpdGhkcmF3QW1vdW50BQxwcm94eUFzc2V0SWQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDHByb3h5QWRkcmVzcwUMcHJveHlSYXRlTXVsCQERQGV4dHJOYXRpdmUoMTA2MikBBRRzdGFraW5nUHJvZml0QWRkcmVzcwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsARd3aXRoZHJhd0FuZFJlYmFsYW5jZUFsbAIUYW1vdW50QXNzZXRPdXRBbW91bnQTcHJpY2VBc3NldE91dEFtb3VudAQSQW1BbXRXaXRoZHJhd1N0YXRlCQEZd2l0aGRyYXdBbmRSZWJhbGFuY2VBc3NldAIJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzCQECYWEABRRhbW91bnRBc3NldE91dEFtb3VudAQSUHJBbXRXaXRoZHJhd1N0YXRlCQEZd2l0aGRyYXdBbmRSZWJhbGFuY2VBc3NldAIJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzCQECcGEABRNwcmljZUFzc2V0T3V0QW1vdW50CQDOCAIFEkFtQW10V2l0aGRyYXdTdGF0ZQUSUHJBbXRXaXRoZHJhd1N0YXRlARBwcml2YXRlQ2FsY1ByaWNlBAphbUFzc2V0RGNtCnByQXNzZXREY20FYW1BbXQFcHJBbXQEDmFtdEFzc2V0QW10WDE4CQEFdG9YMTgCBQVhbUFtdAUKYW1Bc3NldERjbQQQcHJpY2VBc3NldEFtdFgxOAkBBXRvWDE4AgUFcHJBbXQFCnByQXNzZXREY20JAQ9jYWxjUHJpY2VCaWdJbnQCBRBwcmljZUFzc2V0QW10WDE4BQ5hbXRBc3NldEFtdFgxOAEKY2FsY1ByaWNlcwMFYW1BbXQFcHJBbXQFbHBBbXQEA2NmZwkBDWdldFBvb2xDb25maWcABAthbXRBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUOaWR4QW10QXNzZXREY20EDXByaWNlQXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFEGlkeFByaWNlQXNzZXREY20ECHByaWNlWDE4CQEQcHJpdmF0ZUNhbGNQcmljZQQFC2FtdEFzc2V0RGNtBQ1wcmljZUFzc2V0RGNtBQVhbUFtdAUFcHJBbXQECGFtQW10WDE4CQEFdG9YMTgCBQVhbUFtdAULYW10QXNzZXREY20ECHByQW10WDE4CQEFdG9YMTgCBQVwckFtdAUNcHJpY2VBc3NldERjbQQIbHBBbXRYMTgJAQV0b1gxOAIFBWxwQW10BQZzY2FsZTgEE2xwUHJpY2VJbkFtQXNzZXRYMTgJAQ9jYWxjUHJpY2VCaWdJbnQCBQhhbUFtdFgxOAUIbHBBbXRYMTgEE2xwUHJpY2VJblByQXNzZXRYMTgJAQ9jYWxjUHJpY2VCaWdJbnQCBQhwckFtdFgxOAUIbHBBbXRYMTgJAMwIAgUIcHJpY2VYMTgJAMwIAgUTbHBQcmljZUluQW1Bc3NldFgxOAkAzAgCBRNscFByaWNlSW5QckFzc2V0WDE4BQNuaWwBD2NhbGN1bGF0ZVByaWNlcwMFYW1BbXQFcHJBbXQFbHBBbXQEBnByaWNlcwkBCmNhbGNQcmljZXMDBQVhbUFtdAUFcHJBbXQFBWxwQW10CQDMCAIJAQdmcm9tWDE4AgkAkQMCBQZwcmljZXMAAAUGc2NhbGU4CQDMCAIJAQdmcm9tWDE4AgkAkQMCBQZwcmljZXMAAQUGc2NhbGU4CQDMCAIJAQdmcm9tWDE4AgkAkQMCBQZwcmljZXMAAgUGc2NhbGU4BQNuaWwBFGVzdGltYXRlR2V0T3BlcmF0aW9uBAZ0eElkNTgKcG10QXNzZXRJZAhwbXRMcEFtdAt1c2VyQWRkcmVzcwQDY2ZnCQENZ2V0UG9vbENvbmZpZwAECWxwQXNzZXRJZAkAkQMCBQNjZmcFEGlkeFBvb2xMUEFzc2V0SWQECWFtQXNzZXRJZAkAkQMCBQNjZmcFDWlkeEFtdEFzc2V0SWQECXByQXNzZXRJZAkAkQMCBQNjZmcFD2lkeFByaWNlQXNzZXRJZAQKYW1Bc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUOaWR4QW10QXNzZXREY20ECnByQXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFEGlkeFByaWNlQXNzZXREY20ECnBvb2xTdGF0dXMJAJEDAgUDY2ZnBQ1pZHhQb29sU3RhdHVzBApscEVtaXNzaW9uCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUJbHBBc3NldElkCQCsAgIJAKwCAgIGQXNzZXQgBQlscEFzc2V0SWQCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5AwkBAiE9AgUJbHBBc3NldElkBQpwbXRBc3NldElkCQACAQIVSW52YWxpZCBhc3NldCBwYXNzZWQuBAlhbUJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUJYW1Bc3NldElkBAxhbUJhbGFuY2VYMTgJAQV0b1gxOAIFCWFtQmFsYW5jZQUKYW1Bc3NldERjbQQJcHJCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFCXByQXNzZXRJZAQMcHJCYWxhbmNlWDE4CQEFdG9YMTgCBQlwckJhbGFuY2UFCnByQXNzZXREY20EC2N1clByaWNlWDE4CQEPY2FsY1ByaWNlQmlnSW50AgUMcHJCYWxhbmNlWDE4BQxhbUJhbGFuY2VYMTgECGN1clByaWNlCQEHZnJvbVgxOAIFC2N1clByaWNlWDE4BQZzY2FsZTgEC3BtdExwQW10WDE4CQEFdG9YMTgCBQhwbXRMcEFtdAUGc2NhbGU4BA1scEVtaXNzaW9uWDE4CQEFdG9YMTgCBQpscEVtaXNzaW9uBQZzY2FsZTgEC291dEFtQW10WDE4CQC8AgMFDGFtQmFsYW5jZVgxOAULcG10THBBbXRYMTgFDWxwRW1pc3Npb25YMTgEC291dFByQW10WDE4CQC8AgMFDHByQmFsYW5jZVgxOAULcG10THBBbXRYMTgFDWxwRW1pc3Npb25YMTgECG91dEFtQW10CQEMZnJvbVgxOFJvdW5kAwULb3V0QW1BbXRYMTgFCmFtQXNzZXREY20FBUZMT09SBAhvdXRQckFtdAkBDGZyb21YMThSb3VuZAMFC291dFByQW10WDE4BQpwckFzc2V0RGNtBQVGTE9PUgQFc3RhdGUDCQAAAgUGdHhJZDU4AgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQt1c2VyQWRkcmVzcwUIb3V0QW1BbXQDCQAAAgUJYW1Bc3NldElkAgVXQVZFUwUEdW5pdAkA2QQBBQlhbUFzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MFCG91dFByQW10AwkAAAIFCXByQXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUJcHJBc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNnYXUCCQClCAEFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhR2V0QWN0aW9uSW5mbwYFCG91dEFtQW10BQhvdXRQckFtdAUIcG10THBBbXQFCGN1clByaWNlBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhjdXJQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UFA25pbAkAnAoKBQhvdXRBbUFtdAUIb3V0UHJBbXQFCWFtQXNzZXRJZAUJcHJBc3NldElkBQlhbUJhbGFuY2UFCXByQmFsYW5jZQUKbHBFbWlzc2lvbgULY3VyUHJpY2VYMTgFCnBvb2xTdGF0dXMFBXN0YXRlARRlc3RpbWF0ZVB1dE9wZXJhdGlvbgkGdHhJZDU4EXNsaXBwYWdlVG9sZXJhbmNlDGluQW1Bc3NldEFtdAtpbkFtQXNzZXRJZAxpblByQXNzZXRBbXQLaW5QckFzc2V0SWQLdXNlckFkZHJlc3MKaXNFdmFsdWF0ZQZlbWl0THAEA2NmZwkBDWdldFBvb2xDb25maWcABAlscEFzc2V0SWQJANkEAQkAkQMCBQNjZmcFEGlkeFBvb2xMUEFzc2V0SWQEDGFtQXNzZXRJZFN0cgkAkQMCBQNjZmcFDWlkeEFtdEFzc2V0SWQEDHByQXNzZXRJZFN0cgkAkQMCBQNjZmcFD2lkeFByaWNlQXNzZXRJZAQLaUFtdEFzc2V0SWQJAJEDAgUDY2ZnBQ5pZHhJQW10QXNzZXRJZAQNaVByaWNlQXNzZXRJZAkAkQMCBQNjZmcFEGlkeElQcmljZUFzc2V0SWQEC2FtdEFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ5pZHhBbXRBc3NldERjbQQNcHJpY2VBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUQaWR4UHJpY2VBc3NldERjbQQKcG9vbFN0YXR1cwkAkQMCBQNjZmcFDWlkeFBvb2xTdGF0dXMECmxwRW1pc3Npb24ICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUJbHBBc3NldElkCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFCWxwQXNzZXRJZAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEDmluQW1Bc3NldElkU3RyCQDYBAEJAQt2YWx1ZU9yRWxzZQIFC2luQW1Bc3NldElkCQDZBAECBVdBVkVTBA5pblByQXNzZXRJZFN0cgkA2AQBCQELdmFsdWVPckVsc2UCBQtpblByQXNzZXRJZAkA2QQBAgVXQVZFUwMDCQECIT0CBQxhbUFzc2V0SWRTdHIFDmluQW1Bc3NldElkU3RyBgkBAiE9AgUMcHJBc3NldElkU3RyBQ5pblByQXNzZXRJZFN0cgkAAgECIkludmFsaWQgYW10IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4ECWFtQmFsYW5jZQMFCmlzRXZhbHVhdGUJAQ1nZXRBY2NCYWxhbmNlAQUMYW1Bc3NldElkU3RyCQBlAgkBDWdldEFjY0JhbGFuY2UBBQxhbUFzc2V0SWRTdHIFDGluQW1Bc3NldEFtdAQJcHJCYWxhbmNlAwUKaXNFdmFsdWF0ZQkBDWdldEFjY0JhbGFuY2UBBQxwckFzc2V0SWRTdHIJAGUCCQENZ2V0QWNjQmFsYW5jZQEFDHByQXNzZXRJZFN0cgUMaW5QckFzc2V0QW10BA9pbkFtQXNzZXRBbXRYMTgJAQV0b1gxOAIFDGluQW1Bc3NldEFtdAULYW10QXNzZXREY20ED2luUHJBc3NldEFtdFgxOAkBBXRvWDE4AgUMaW5QckFzc2V0QW10BQ1wcmljZUFzc2V0RGNtBAx1c2VyUHJpY2VYMTgJAQ9jYWxjUHJpY2VCaWdJbnQCBQ9pblByQXNzZXRBbXRYMTgFD2luQW1Bc3NldEFtdFgxOAQMYW1CYWxhbmNlWDE4CQEFdG9YMTgCBQlhbUJhbGFuY2UFC2FtdEFzc2V0RGNtBAxwckJhbGFuY2VYMTgJAQV0b1gxOAIFCXByQmFsYW5jZQUNcHJpY2VBc3NldERjbQQDcmVzAwkAAAIFCmxwRW1pc3Npb24AAAQLY3VyUHJpY2VYMTgFCnplcm9CaWdJbnQEC3NsaXBwYWdlWDE4BQp6ZXJvQmlnSW50BAhscEFtdFgxOAkAdgYJALkCAgUPaW5BbUFzc2V0QW10WDE4BQ9pblByQXNzZXRBbXRYMTgAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQdmcm9tWDE4AgUIbHBBbXRYMTgFBnNjYWxlOAkBB2Zyb21YMTgCBQ9pbkFtQXNzZXRBbXRYMTgFC2FtdEFzc2V0RGNtCQEHZnJvbVgxOAIFD2luUHJBc3NldEFtdFgxOAUNcHJpY2VBc3NldERjbQkBD2NhbGNQcmljZUJpZ0ludAIJALcCAgUMcHJCYWxhbmNlWDE4BQ9pblByQXNzZXRBbXRYMTgJALcCAgUMYW1CYWxhbmNlWDE4BQ9pbkFtQXNzZXRBbXRYMTgFC3NsaXBwYWdlWDE4BAtjdXJQcmljZVgxOAkBD2NhbGNQcmljZUJpZ0ludAIFDHByQmFsYW5jZVgxOAUMYW1CYWxhbmNlWDE4BAtzbGlwcGFnZVgxOAkAvAIDCQEJYWJzQmlnSW50AQkAuAICBQtjdXJQcmljZVgxOAUMdXNlclByaWNlWDE4BQdzY2FsZTE4BQtjdXJQcmljZVgxOAQUc2xpcHBhZ2VUb2xlcmFuY2VYMTgJAQV0b1gxOAIFEXNsaXBwYWdlVG9sZXJhbmNlBQZzY2FsZTgDAwkBAiE9AgULY3VyUHJpY2VYMTgFCnplcm9CaWdJbnQJAL8CAgULc2xpcHBhZ2VYMTgFFHNsaXBwYWdlVG9sZXJhbmNlWDE4BwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQtzbGlwcGFnZVgxOAIeIGV4Y2VlZGVkIHRoZSBwYXNzZWQgbGltaXQgb2YgCQCmAwEFFHNsaXBwYWdlVG9sZXJhbmNlWDE4BA1scEVtaXNzaW9uWDE4CQEFdG9YMTgCBQpscEVtaXNzaW9uBQZzY2FsZTgECnByVmlhQW1YMTgJAL0CBAUPaW5BbUFzc2V0QW10WDE4CQEUY2FsY1ByaWNlQmlnSW50Um91bmQDBQxwckJhbGFuY2VYMTgFDGFtQmFsYW5jZVgxOAUHQ0VJTElORwUHc2NhbGUxOAUHQ0VJTElORwQKYW1WaWFQclgxOAkAvQIEBQ9pblByQXNzZXRBbXRYMTgFB3NjYWxlMTgJARRjYWxjUHJpY2VCaWdJbnRSb3VuZAMFDHByQmFsYW5jZVgxOAUMYW1CYWxhbmNlWDE4BQVGTE9PUgUHQ0VJTElORwQMZXhwZWN0ZWRBbXRzAwkAvwICBQpwclZpYUFtWDE4BQ9pblByQXNzZXRBbXRYMTgJAJQKAgUKYW1WaWFQclgxOAUPaW5QckFzc2V0QW10WDE4CQCUCgIFD2luQW1Bc3NldEFtdFgxOAUKcHJWaWFBbVgxOAQRZXhwQW10QXNzZXRBbXRYMTgIBQxleHBlY3RlZEFtdHMCXzEEE2V4cFByaWNlQXNzZXRBbXRYMTgIBQxleHBlY3RlZEFtdHMCXzIECGxwQW10WDE4CQC9AgQFDWxwRW1pc3Npb25YMTgFE2V4cFByaWNlQXNzZXRBbXRYMTgFDHByQmFsYW5jZVgxOAUFRkxPT1IJAJcKBQkBDGZyb21YMThSb3VuZAMFCGxwQW10WDE4BQZzY2FsZTgFBUZMT09SCQEMZnJvbVgxOFJvdW5kAwURZXhwQW10QXNzZXRBbXRYMTgFC2FtdEFzc2V0RGNtBQdDRUlMSU5HCQEMZnJvbVgxOFJvdW5kAwUTZXhwUHJpY2VBc3NldEFtdFgxOAUNcHJpY2VBc3NldERjbQUHQ0VJTElORwULY3VyUHJpY2VYMTgFC3NsaXBwYWdlWDE4BAljYWxjTHBBbXQIBQNyZXMCXzEEDmNhbGNBbUFzc2V0UG10CAUDcmVzAl8yBA5jYWxjUHJBc3NldFBtdAgFA3JlcwJfMwQIY3VyUHJpY2UJAQdmcm9tWDE4AggFA3JlcwJfNAUGc2NhbGU4BAxzbGlwcGFnZUNhbGMJAQdmcm9tWDE4AggFA3JlcwJfNQUGc2NhbGU4AwkAZwIAAAUJY2FsY0xwQW10CQACAQI2SW52YWxpZCBjYWxjdWxhdGlvbnMuIExQIGNhbGN1bGF0ZWQgaXMgbGVzcyB0aGFuIHplcm8uBAllbWl0THBBbXQDCQEBIQEFBmVtaXRMcAAABQljYWxjTHBBbXQEBmFtRGlmZgkAZQIFDGluQW1Bc3NldEFtdAUOY2FsY0FtQXNzZXRQbXQEBnByRGlmZgkAZQIFDGluUHJBc3NldEFtdAUOY2FsY1ByQXNzZXRQbXQEC2NvbW1vblN0YXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhjdXJQcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIY3VyUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBA3BhdQIFC3VzZXJBZGRyZXNzBQZ0eElkNTgJARFkYXRhUHV0QWN0aW9uSW5mbwoFDmNhbGNBbUFzc2V0UG10BQ5jYWxjUHJBc3NldFBtdAUJZW1pdExwQW10BQhjdXJQcmljZQURc2xpcHBhZ2VUb2xlcmFuY2UFDHNsaXBwYWdlQ2FsYwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUGYW1EaWZmBQZwckRpZmYFA25pbAkAnwoNBQljYWxjTHBBbXQFCWVtaXRMcEFtdAUIY3VyUHJpY2UFCWFtQmFsYW5jZQUJcHJCYWxhbmNlBQpscEVtaXNzaW9uBQlscEFzc2V0SWQFCnBvb2xTdGF0dXMFC2NvbW1vblN0YXRlBQZhbURpZmYFBnByRGlmZgULaW5BbUFzc2V0SWQFC2luUHJBc3NldElkAQdjYWxjS0xwAw1hbW91bnRCYWxhbmNlDHByaWNlQmFsYW5jZQpscEVtaXNzaW9uBBBhbW91bnRCYWxhbmNlWDE4CQELdG9YMThCaWdJbnQCBQ1hbW91bnRCYWxhbmNlCQC2AgEFFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMED3ByaWNlQmFsYW5jZVgxOAkBC3RvWDE4QmlnSW50AgUMcHJpY2VCYWxhbmNlCQC2AgEFFWNmZ1ByaWNlQXNzZXREZWNpbWFscwQKdXBkYXRlZEtMcAkAvAIDCQB2BgkAuQICBRBhbW91bnRCYWxhbmNlWDE4BQ9wcmljZUJhbGFuY2VYMTgAAAkAtgIBAAUAAQASBQRET1dOBQRiaWcxBQpscEVtaXNzaW9uAwkAAAIFCmxwRW1pc3Npb24FBGJpZzAFBGJpZzAFCnVwZGF0ZWRLTHABDmNhbGNDdXJyZW50S0xwAxBhbW91bnRBc3NldERlbHRhD3ByaWNlQXNzZXREZWx0YRRscEFzc2V0RW1pc3Npb25EZWx0YQQSYW1vdW50QXNzZXRCYWxhbmNlCQC4AgIJALYCAQkBDWdldEFjY0JhbGFuY2UBCQEPYXNzZXRJZFRvU3RyaW5nAQUQY2ZnQW1vdW50QXNzZXRJZAUQYW1vdW50QXNzZXREZWx0YQQRcHJpY2VBc3NldEJhbGFuY2UJALgCAgkAtgIBCQENZ2V0QWNjQmFsYW5jZQEJAQ9hc3NldElkVG9TdHJpbmcBBQ9jZmdQcmljZUFzc2V0SWQFD3ByaWNlQXNzZXREZWx0YQQPbHBBc3NldEVtaXNzaW9uCQC4AgIJALYCAQgJAQV2YWx1ZQEJAOwHAQUMY2ZnTHBBc3NldElkCHF1YW50aXR5BRRscEFzc2V0RW1pc3Npb25EZWx0YQQKY3VycmVudEtMcAkBB2NhbGNLTHADBRJhbW91bnRBc3NldEJhbGFuY2UFEXByaWNlQXNzZXRCYWxhbmNlBQ9scEFzc2V0RW1pc3Npb24FCmN1cnJlbnRLTHABEnJlZnJlc2hLTHBJbnRlcm5hbAMXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEWcHJpY2VBc3NldEJhbGFuY2VEZWx0YRRscEFzc2V0RW1pc3Npb25EZWx0YQQSYW1vdW50QXNzZXRCYWxhbmNlCQBkAgkBDWdldEFjY0JhbGFuY2UBCQEPYXNzZXRJZFRvU3RyaW5nAQUQY2ZnQW1vdW50QXNzZXRJZAUXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEEEXByaWNlQXNzZXRCYWxhbmNlCQBkAgkBDWdldEFjY0JhbGFuY2UBCQEPYXNzZXRJZFRvU3RyaW5nAQUPY2ZnUHJpY2VBc3NldElkBRZwcmljZUFzc2V0QmFsYW5jZURlbHRhBA9scEFzc2V0RW1pc3Npb24JAGQCCAkBBXZhbHVlAQkA7AcBBQxjZmdMcEFzc2V0SWQIcXVhbnRpdHkFFGxwQXNzZXRFbWlzc2lvbkRlbHRhBAp1cGRhdGVkS0xwCQEHY2FsY0tMcAMJALYCAQUSYW1vdW50QXNzZXRCYWxhbmNlCQC2AgEFEXByaWNlQXNzZXRCYWxhbmNlCQC2AgEFD2xwQXNzZXRFbWlzc2lvbgQHYWN0aW9ucwkAzAgCCQEMSW50ZWdlckVudHJ5AgUVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0BQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgUGa2V5S0xwCQCmAwEFCnVwZGF0ZWRLTHAFA25pbAkAlAoCBQdhY3Rpb25zBQp1cGRhdGVkS0xwARNza2lwT3JkZXJWYWxpZGF0aW9uAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQ9mYWN0b3J5Q29udHJhY3QJARZrZXlTa2lwT3JkZXJWYWxpZGF0aW9uAQkApQgBBQR0aGlzBwESdmFsaWRhdGVVcGRhdGVkS0xwAgZvbGRLTHAKdXBkYXRlZEtMcAMJAMACAgUKdXBkYXRlZEtMcAUGb2xkS0xwBgkBCHRocm93RXJyAQkAuQkCCQDMCAICInVwZGF0ZWQgS0xwIGxvd2VyIHRoYW4gY3VycmVudCBLTHAJAMwIAgkApgMBBQZvbGRLTHAJAMwIAgkApgMBBQp1cGRhdGVkS0xwBQNuaWwCASABG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZAEFb3JkZXIEEmFtb3VudEFzc2V0QmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBCQEPYXNzZXRJZFRvU3RyaW5nAQUQY2ZnQW1vdW50QXNzZXRJZAQRcHJpY2VBc3NldEJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQkBD2Fzc2V0SWRUb1N0cmluZwEFD2NmZ1ByaWNlQXNzZXRJZAQRYW1vdW50QXNzZXRBbW91bnQIBQVvcmRlcgZhbW91bnQEEHByaWNlQXNzZXRBbW91bnQJAG4ECAUFb3JkZXIGYW1vdW50CAUFb3JkZXIFcHJpY2UFBnNjYWxlOAUFRkxPT1IEDSR0MDI5NTE3Mjk3MjkDCQAAAggFBW9yZGVyCW9yZGVyVHlwZQUDQnV5CQCUCgIFEWFtb3VudEFzc2V0QW1vdW50CQEBLQEFEHByaWNlQXNzZXRBbW91bnQJAJQKAgkBAS0BBRFhbW91bnRBc3NldEFtb3VudAUQcHJpY2VBc3NldEFtb3VudAQXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEIBQ0kdDAyOTUxNzI5NzI5Al8xBBZwcmljZUFzc2V0QmFsYW5jZURlbHRhCAUNJHQwMjk1MTcyOTcyOQJfMgMDAwkBEGlzR2xvYmFsU2h1dGRvd24ABgkAAAIFDWNmZ1Bvb2xTdGF0dXMFE1Bvb2xNYXRjaGVyRGlzYWJsZWQGCQAAAgUNY2ZnUG9vbFN0YXR1cwUMUG9vbFNodXRkb3duCQACAQIcRXhjaGFuZ2Ugb3BlcmF0aW9ucyBkaXNhYmxlZAMDCQECIT0CCAgFBW9yZGVyCWFzc2V0UGFpcgthbW91bnRBc3NldAUQY2ZnQW1vdW50QXNzZXRJZAYJAQIhPQIICAUFb3JkZXIJYXNzZXRQYWlyCnByaWNlQXNzZXQFD2NmZ1ByaWNlQXNzZXRJZAkAAgECE1dyb25nIG9yZGVyIGFzc2V0cy4EA2tMcAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUGa2V5S0xwAgEwCQEGZm10RXJyAQILaW52YWxpZCBrTHAEDSR0MDMwMTY5MzAyNjkJARJyZWZyZXNoS0xwSW50ZXJuYWwDBRdhbW91bnRBc3NldEJhbGFuY2VEZWx0YQUWcHJpY2VBc3NldEJhbGFuY2VEZWx0YQAABA11bnVzZWRBY3Rpb25zCAUNJHQwMzAxNjkzMDI2OQJfMQQGa0xwTmV3CAUNJHQwMzAxNjkzMDI2OQJfMgQMaXNPcmRlclZhbGlkCQDAAgIFBmtMcE5ldwUDa0xwBARpbmZvCQC5CQIJAMwIAgIEa0xwPQkAzAgCCQCmAwEFA2tMcAkAzAgCAggga0xwTmV3PQkAzAgCCQCmAwEFBmtMcE5ldwkAzAgCAhQgYW1vdW50QXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFEmFtb3VudEFzc2V0QmFsYW5jZQkAzAgCAhMgcHJpY2VBc3NldEJhbGFuY2U9CQDMCAIJAKQDAQURcHJpY2VBc3NldEJhbGFuY2UJAMwIAgIZIGFtb3VudEFzc2V0QmFsYW5jZURlbHRhPQkAzAgCCQCkAwEFF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhCQDMCAICGCBwcmljZUFzc2V0QmFsYW5jZURlbHRhPQkAzAgCCQCkAwEFFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEJAMwIAgIIIGhlaWdodD0JAMwIAgkApAMBBQZoZWlnaHQFA25pbAIACQCUCgIFDGlzT3JkZXJWYWxpZAUEaW5mbwEJY29tbW9uR2V0AQFpAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEA3BtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABApwbXRBc3NldElkCQEFdmFsdWUBCAUDcG10B2Fzc2V0SWQEBnBtdEFtdAgFA3BtdAZhbW91bnQEA3JlcwkBFGVzdGltYXRlR2V0T3BlcmF0aW9uBAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEFCnBtdEFzc2V0SWQFBnBtdEFtdAgFAWkGY2FsbGVyBAhvdXRBbUFtdAgFA3JlcwJfMQQIb3V0UHJBbXQIBQNyZXMCXzIEBXN0YXRlCAUDcmVzA18xMAQNaXNHZXREaXNhYmxlZAMJAQEhAQkBFGlzQWRkcmVzc1doaXRlbGlzdGVkAQgFAWkGY2FsbGVyAwkBEGlzR2xvYmFsU2h1dGRvd24ABgkAAAIFDWNmZ1Bvb2xTdGF0dXMFDFBvb2xTaHV0ZG93bgcDBQ1pc0dldERpc2FibGVkCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQ1jZmdQb29sU3RhdHVzCQCXCgUFCG91dEFtQW10BQhvdXRQckFtdAUGcG10QW10BQpwbXRBc3NldElkBQVzdGF0ZQEJY29tbW9uUHV0AwFpEXNsaXBwYWdlVG9sZXJhbmNlBmVtaXRMcAMJAQIhPQIJAJADAQgFAWkIcGF5bWVudHMAAgkAAgECH2V4YWN0bHkgMiBwYXltZW50cyBhcmUgZXhwZWN0ZWQECmFtQXNzZXRQbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQKcHJBc3NldFBtdAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwABBAZlc3RQdXQJARRlc3RpbWF0ZVB1dE9wZXJhdGlvbgkJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAURc2xpcHBhZ2VUb2xlcmFuY2UIBQphbUFzc2V0UG10BmFtb3VudAgFCmFtQXNzZXRQbXQHYXNzZXRJZAgFCnByQXNzZXRQbXQGYW1vdW50CAUKcHJBc3NldFBtdAdhc3NldElkCQClCAEIBQFpBmNhbGxlcgcFBmVtaXRMcAQNaXNQdXREaXNhYmxlZAMJAQEhAQkBFGlzQWRkcmVzc1doaXRlbGlzdGVkAQgFAWkGY2FsbGVyAwMJARBpc0dsb2JhbFNodXRkb3duAAYJAAACBQ1jZmdQb29sU3RhdHVzBQ9Qb29sUHV0RGlzYWJsZWQGCQAAAgUNY2ZnUG9vbFN0YXR1cwUMUG9vbFNodXRkb3duBwMFDWlzUHV0RGlzYWJsZWQJAAIBCQCsAgICLFB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFDWNmZ1Bvb2xTdGF0dXMFBmVzdFB1dAEEZW1pdAEGYW1vdW50BAdlbWl0SW52CQD8BwQFD2ZhY3RvcnlDb250cmFjdAIEZW1pdAkAzAgCBQZhbW91bnQFA25pbAUDbmlsAwkAAAIFB2VtaXRJbnYFB2VtaXRJbnYEDWVtaXRJbnZMZWdhY3kEByRtYXRjaDAFB2VtaXRJbnYDCQABAgUHJG1hdGNoMAIHQWRkcmVzcwQVbGVnYWN5RmFjdG9yeUNvbnRyYWN0BQckbWF0Y2gwCQD8BwQFFWxlZ2FjeUZhY3RvcnlDb250cmFjdAIEZW1pdAkAzAgCBQZhbW91bnQFA25pbAUDbmlsBQR1bml0AwkAAAIFDWVtaXRJbnZMZWdhY3kFDWVtaXRJbnZMZWdhY3kFBmFtb3VudAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEHdGFrZUZlZQIGYW1vdW50A2ZlZQQJZmVlQW1vdW50AwkAAAIFA2ZlZQAAAAAJAGsDBQZhbW91bnQFA2ZlZQUGc2NhbGU4CQCUCgIJAGUCBQZhbW91bnQFCWZlZUFtb3VudAUJZmVlQW1vdW50AQ9jYWxjUHV0T25lVG9rZW4EEHBheW1lbnRBbW91bnRSYXcOcGF5bWVudEFzc2V0SWQLdXNlckFkZHJlc3MEdHhJZAQGaXNFdmFsCQAAAgUEdHhJZAUEdW5pdAQQYW1vdW50QmFsYW5jZVJhdwkBDWdldEFjY0JhbGFuY2UBCQEPYXNzZXRJZFRvU3RyaW5nAQUQY2ZnQW1vdW50QXNzZXRJZAQPcHJpY2VCYWxhbmNlUmF3CQENZ2V0QWNjQmFsYW5jZQEJAQ9hc3NldElkVG9TdHJpbmcBBQ9jZmdQcmljZUFzc2V0SWQEFHBheW1lbnRJbkFtb3VudEFzc2V0AwkAAAIFDnBheW1lbnRBc3NldElkBRBjZmdBbW91bnRBc3NldElkBgMJAAACBQ5wYXltZW50QXNzZXRJZAUPY2ZnUHJpY2VBc3NldElkBwkBCHRocm93RXJyAQINaW52YWxpZCBhc3NldAQNJHQwMzM0NTUzMzc0OAMFBmlzRXZhbAkAlAoCBRBhbW91bnRCYWxhbmNlUmF3BQ9wcmljZUJhbGFuY2VSYXcDBRRwYXltZW50SW5BbW91bnRBc3NldAkAlAoCCQBlAgUQYW1vdW50QmFsYW5jZVJhdwUQcGF5bWVudEFtb3VudFJhdwUPcHJpY2VCYWxhbmNlUmF3CQCUCgIFEGFtb3VudEJhbGFuY2VSYXcJAGUCBQ9wcmljZUJhbGFuY2VSYXcFEHBheW1lbnRBbW91bnRSYXcEEGFtb3VudEJhbGFuY2VPbGQIBQ0kdDAzMzQ1NTMzNzQ4Al8xBA9wcmljZUJhbGFuY2VPbGQIBQ0kdDAzMzQ1NTMzNzQ4Al8yBA0kdDAzMzc1MjMzOTAxAwUUcGF5bWVudEluQW1vdW50QXNzZXQJAJQKAgUQcGF5bWVudEFtb3VudFJhdwAACQCUCgIAAAUQcGF5bWVudEFtb3VudFJhdwQUYW1vdW50QXNzZXRBbW91bnRSYXcIBQ0kdDAzMzc1MjMzOTAxAl8xBBNwcmljZUFzc2V0QW1vdW50UmF3CAUNJHQwMzM3NTIzMzkwMQJfMgQRYW1vdW50QXNzZXRBbW91bnQICQEHdGFrZUZlZQIFFGFtb3VudEFzc2V0QW1vdW50UmF3BQVpbkZlZQJfMQQQcHJpY2VBc3NldEFtb3VudAgJAQd0YWtlRmVlAgUTcHJpY2VBc3NldEFtb3VudFJhdwUFaW5GZWUCXzEEDSR0MDM0MDMzMzQwOTcJAQd0YWtlRmVlAgUQcGF5bWVudEFtb3VudFJhdwUFaW5GZWUEDXBheW1lbnRBbW91bnQIBQ0kdDAzNDAzMzM0MDk3Al8xBAlmZWVBbW91bnQIBQ0kdDAzNDAzMzM0MDk3Al8yBBBhbW91bnRCYWxhbmNlTmV3CQBkAgUQYW1vdW50QmFsYW5jZU9sZAURYW1vdW50QXNzZXRBbW91bnQED3ByaWNlQmFsYW5jZU5ldwkAZAIFD3ByaWNlQmFsYW5jZU9sZAUQcHJpY2VBc3NldEFtb3VudAQLcHJpY2VOZXdYMTgJAQ9jYWxjUHJpY2VCaWdJbnQCCQEFdG9YMTgCBQ9wcmljZUJhbGFuY2VOZXcFFWNmZ1ByaWNlQXNzZXREZWNpbWFscwkBBXRvWDE4AgUQYW1vdW50QmFsYW5jZU5ldwUWY2ZnQW1vdW50QXNzZXREZWNpbWFscwQIcHJpY2VOZXcJAQdmcm9tWDE4AgULcHJpY2VOZXdYMTgFBnNjYWxlOAQOcGF5bWVudEJhbGFuY2UDBRRwYXltZW50SW5BbW91bnRBc3NldAUQYW1vdW50QmFsYW5jZU9sZAUPcHJpY2VCYWxhbmNlT2xkBBRwYXltZW50QmFsYW5jZUJpZ0ludAkAtgIBBQ5wYXltZW50QmFsYW5jZQQMc3VwcGx5QmlnSW50CQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUMY2ZnTHBBc3NldElkCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFDGNmZ0xwQXNzZXRJZAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEC2NoZWNoU3VwcGx5AwkAvwICBQxzdXBwbHlCaWdJbnQFBGJpZzAGCQEIdGhyb3dFcnIBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFC2NoZWNoU3VwcGx5BQtjaGVjaFN1cHBseQQNZGVwb3NpdEJpZ0ludAkAtgIBBQ1wYXltZW50QW1vdW50BAtpc3N1ZUFtb3VudAkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQxzdXBwbHlCaWdJbnQJALgCAgkBCnNxcnRCaWdJbnQECQC3AgIFB3NjYWxlMTgJALoCAgkAuQICBQ1kZXBvc2l0QmlnSW50BQdzY2FsZTE4BRRwYXltZW50QmFsYW5jZUJpZ0ludAASABIFBERPV04FB3NjYWxlMTgFB3NjYWxlMTgFA25pbAQLY29tbW9uU3RhdGUDBQZpc0V2YWwFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBsAAUIcHJpY2VOZXcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJwaAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFCHByaWNlTmV3CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQNwYXUCCQClCAEJAQV2YWx1ZQEFC3VzZXJBZGRyZXNzCQDYBAEJAQV2YWx1ZQEFBHR4SWQJARFkYXRhUHV0QWN0aW9uSW5mbwoFFGFtb3VudEFzc2V0QW1vdW50UmF3BRNwcmljZUFzc2V0QW1vdW50UmF3BQtpc3N1ZUFtb3VudAUIcHJpY2VOZXcAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAtwcmljZU9sZFgxOAkBD2NhbGNQcmljZUJpZ0ludAIJAQV0b1gxOAIFD3ByaWNlQmFsYW5jZU9sZAUVY2ZnUHJpY2VBc3NldERlY2ltYWxzCQEFdG9YMTgCBRBhbW91bnRCYWxhbmNlT2xkBRZjZmdBbW91bnRBc3NldERlY2ltYWxzBAhwcmljZU9sZAkBB2Zyb21YMTgCBQtwcmljZU9sZFgxOAUGc2NhbGU4BARsb3NzBA0kdDAzNTc3ODM1OTQ1AwUUcGF5bWVudEluQW1vdW50QXNzZXQJAJQKAgUUYW1vdW50QXNzZXRBbW91bnRSYXcFEGFtb3VudEJhbGFuY2VPbGQJAJQKAgUTcHJpY2VBc3NldEFtb3VudFJhdwUPcHJpY2VCYWxhbmNlT2xkBAZhbW91bnQIBQ0kdDAzNTc3ODM1OTQ1Al8xBAdiYWxhbmNlCAUNJHQwMzU3NzgzNTk0NQJfMgQPaXNzdWVBbW91bnRCb3RoCQCgAwEJALwCAwUMc3VwcGx5QmlnSW50CQC2AgEJAGkCBQZhbW91bnQAAgkAtgIBBQdiYWxhbmNlCQBrAwkAZQIFC2lzc3VlQW1vdW50BQ9pc3N1ZUFtb3VudEJvdGgFBnNjYWxlOAUPaXNzdWVBbW91bnRCb3RoCQCXCgUFC2lzc3VlQW1vdW50BQtjb21tb25TdGF0ZQUJZmVlQW1vdW50BQRsb3NzBRRwYXltZW50SW5BbW91bnRBc3NldAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEPY2FsY0dldE9uZVRva2VuBQpvdXRBc3NldElkDXBheW1lbnRBbW91bnQOcGF5bWVudEFzc2V0SWQLdXNlckFkZHJlc3MEdHhJZAQGaXNFdmFsCQAAAgUEdHhJZAUEdW5pdAQDY2ZnCQENZ2V0UG9vbENvbmZpZwAEC2FtdEFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ5pZHhBbXRBc3NldERjbQQNcHJpY2VBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUQaWR4UHJpY2VBc3NldERjbQQGY2hlY2tzCQDMCAIDCQAAAgUOcGF5bWVudEFzc2V0SWQFDGNmZ0xwQXNzZXRJZAYJAQh0aHJvd0VycgECEGludmFsaWQgbHAgYXNzZXQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQQb3V0SW5BbW91bnRBc3NldAMJAAACBQpvdXRBc3NldElkBRBjZmdBbW91bnRBc3NldElkBgMJAAACBQpvdXRBc3NldElkBQ9jZmdQcmljZUFzc2V0SWQHCQEIdGhyb3dFcnIBAg1pbnZhbGlkIGFzc2V0BA1iYWxhbmNlQmlnSW50AwUQb3V0SW5BbW91bnRBc3NldAkAtgIBCQENZ2V0QWNjQmFsYW5jZQEJAQ9hc3NldElkVG9TdHJpbmcBBRBjZmdBbW91bnRBc3NldElkCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQkBD2Fzc2V0SWRUb1N0cmluZwEFD2NmZ1ByaWNlQXNzZXRJZAQYb3V0SW5BbW91bnRBc3NldERlY2ltYWxzAwUQb3V0SW5BbW91bnRBc3NldAULYW10QXNzZXREY20FDXByaWNlQXNzZXREY20EDGFtQmFsYW5jZU9sZAkBDWdldEFjY0JhbGFuY2UBCQEPYXNzZXRJZFRvU3RyaW5nAQUQY2ZnQW1vdW50QXNzZXRJZAQMcHJCYWxhbmNlT2xkCQENZ2V0QWNjQmFsYW5jZQEJAQ9hc3NldElkVG9TdHJpbmcBBQ9jZmdQcmljZUFzc2V0SWQECm91dEJhbGFuY2UDBRBvdXRJbkFtb3VudEFzc2V0BQxhbUJhbGFuY2VPbGQFDHByQmFsYW5jZU9sZAQQb3V0QmFsYW5jZUJpZ0ludAkAtgIBBQpvdXRCYWxhbmNlBAxzdXBwbHlCaWdJbnQJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQxjZmdMcEFzc2V0SWQJAKwCAgkArAICAgZhc3NldCAJANgEAQUMY2ZnTHBBc3NldElkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQOcmVkZWVtZWRCaWdJbnQJALYCAQUNcGF5bWVudEFtb3VudAQJYW1vdW50UmF3CQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFDWJhbGFuY2VCaWdJbnQJALgCAgUHc2NhbGUxOAkAdgYJALgCAgUHc2NhbGUxOAkAugICCQC5AgIFDnJlZGVlbWVkQmlnSW50BQdzY2FsZTE4BQxzdXBwbHlCaWdJbnQAEgUEYmlnMgAAABIFBERPV04FB3NjYWxlMTgFA25pbAQNJHQwMzgwMjMzODA3OQkBB3Rha2VGZWUCBQlhbW91bnRSYXcFBm91dEZlZQQLdG90YWxBbW91bnQIBQ0kdDAzODAyMzM4MDc5Al8xBAlmZWVBbW91bnQIBQ0kdDAzODAyMzM4MDc5Al8yBA0kdDAzODA4MzM4MzA5AwUQb3V0SW5BbW91bnRBc3NldAkAlgoEBQt0b3RhbEFtb3VudAAACQBlAgUMYW1CYWxhbmNlT2xkBQlhbW91bnRSYXcFDHByQmFsYW5jZU9sZAkAlgoEAAAFC3RvdGFsQW1vdW50BQxhbUJhbGFuY2VPbGQJAGUCBQxwckJhbGFuY2VPbGQFCWFtb3VudFJhdwQLb3V0QW1BbW91bnQIBQ0kdDAzODA4MzM4MzA5Al8xBAtvdXRQckFtb3VudAgFDSR0MDM4MDgzMzgzMDkCXzIEDGFtQmFsYW5jZU5ldwgFDSR0MDM4MDgzMzgzMDkCXzMEDHByQmFsYW5jZU5ldwgFDSR0MDM4MDgzMzgzMDkCXzQEC3ByaWNlTmV3WDE4CQEPY2FsY1ByaWNlQmlnSW50AgkBBXRvWDE4AgUMcHJCYWxhbmNlTmV3BRVjZmdQcmljZUFzc2V0RGVjaW1hbHMJAQV0b1gxOAIFDGFtQmFsYW5jZU5ldwUWY2ZnQW1vdW50QXNzZXREZWNpbWFscwQIcHJpY2VOZXcJAQdmcm9tWDE4AgULcHJpY2VOZXdYMTgFBnNjYWxlOAQLY29tbW9uU3RhdGUDBQZpc0V2YWwFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQEDZ2F1AgkApQgBCQEFdmFsdWUBBQt1c2VyQWRkcmVzcwkA2AQBCQEFdmFsdWUBBQR0eElkCQERZGF0YUdldEFjdGlvbkluZm8GBQtvdXRBbUFtb3VudAULb3V0UHJBbW91bnQFDXBheW1lbnRBbW91bnQFCHByaWNlTmV3BQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECcGwABQhwcmljZU5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAnBoAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUIcHJpY2VOZXcFA25pbAQLcHJpY2VPbGRYMTgJAQ9jYWxjUHJpY2VCaWdJbnQCCQEFdG9YMTgCBQxwckJhbGFuY2VPbGQFFWNmZ1ByaWNlQXNzZXREZWNpbWFscwkBBXRvWDE4AgUMYW1CYWxhbmNlT2xkBRZjZmdBbW91bnRBc3NldERlY2ltYWxzBAhwcmljZU9sZAkBB2Zyb21YMTgCBQtwcmljZU9sZFgxOAUGc2NhbGU4BARsb3NzBBhhbW91bnRCb3RoSW5QYXltZW50QXNzZXQJAGgCCQCgAwEJALwCAwUNYmFsYW5jZUJpZ0ludAUOcmVkZWVtZWRCaWdJbnQFDHN1cHBseUJpZ0ludAACCQBrAwkAZQIFC3RvdGFsQW1vdW50BRhhbW91bnRCb3RoSW5QYXltZW50QXNzZXQFBnNjYWxlOAUYYW1vdW50Qm90aEluUGF5bWVudEFzc2V0CQCXCgUFC3RvdGFsQW1vdW50BQtjb21tb25TdGF0ZQUJZmVlQW1vdW50BQRsb3NzBRBvdXRJbkFtb3VudEFzc2V0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAQTbWFuYWdlclZhdWx0QWRkcmVzcwkBHGdldE1hbmFnZXJWYXVsdEFkZHJlc3NPclRoaXMABAckbWF0Y2gwCQCdCAIFE21hbmFnZXJWYXVsdEFkZHJlc3MJARNrZXlNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBCWlzTWFuYWdlcgEBaQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawMJAAECBQckbWF0Y2gwAgRVbml0CQAAAggFAWkGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBC211c3RNYW5hZ2VyAQFpBAJwZAkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDADCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawYFAnBkAwkAAQIFByRtYXRjaDACBFVuaXQDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgUCcGQJAAIBAgtNYXRjaCBlcnJvchwBaQEJcmViYWxhbmNlAAkAzggCCQEOcmViYWxhbmNlQXNzZXQBCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBAmFhAAkBDnJlYmFsYW5jZUFzc2V0AQkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJAQJwYQABaQEhY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcFJFQURPTkxZAw1jbGVhbkFtb3VudEluCWlzUmV2ZXJzZQ1mZWVQb29sQW1vdW50BA0kdDA0MDE2NzQwNDcyAwkAAAIFCWlzUmV2ZXJzZQcECGFzc2V0T3V0CQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBAnBhAAQHYXNzZXRJbgkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJAQJhYQAJAJQKAgUIYXNzZXRPdXQFB2Fzc2V0SW4ECGFzc2V0T3V0CQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBAmFhAAQHYXNzZXRJbgkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJAQJwYQAJAJQKAgUIYXNzZXRPdXQFB2Fzc2V0SW4ECGFzc2V0T3V0CAUNJHQwNDAxNjc0MDQ3MgJfMQQHYXNzZXRJbggFDSR0MDQwMTY3NDA0NzICXzIEEnBvb2xBc3NldEluQmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQdhc3NldEluBBNwb29sQXNzZXRPdXRCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFCGFzc2V0T3V0BAlhbW91bnRPdXQJAGsDBRNwb29sQXNzZXRPdXRCYWxhbmNlBQ1jbGVhbkFtb3VudEluCQBkAgUScG9vbEFzc2V0SW5CYWxhbmNlBQ1jbGVhbkFtb3VudEluBARvbGRLCQC5AgIJALYCAQUScG9vbEFzc2V0SW5CYWxhbmNlCQC2AgEFE3Bvb2xBc3NldE91dEJhbGFuY2UEBG5ld0sJALkCAgkAtwICCQC3AgIJALYCAQkBDWdldEFjY0JhbGFuY2UBBQdhc3NldEluCQC2AgEFDWNsZWFuQW1vdW50SW4JALYCAQUNZmVlUG9vbEFtb3VudAkAuAICCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQUIYXNzZXRPdXQJALYCAQUJYW1vdW50T3V0BAZjaGVja0sDCQDAAgIFBG5ld0sFBG9sZEsGCQACAQIUbmV3IEsgaXMgZmV3ZXIgZXJyb3IDCQAAAgUGY2hlY2tLBQZjaGVja0sJAJQKAgUDbmlsBQlhbW91bnRPdXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEmY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcEFuZFNlbmRUb2tlbnMFDWNsZWFuQW1vdW50SW4JaXNSZXZlcnNlDGFtb3VudE91dE1pbglhZGRyZXNzVG8NZmVlUG9vbEFtb3VudAQLc3dhcENvbnRhY3QKAAFACQD8BwQFD2ZhY3RvcnlDb250cmFjdAIXZ2V0U3dhcENvbnRyYWN0UkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAUACBlN0cmluZwUBQAkAAgEJAKwCAgkAAwEFAUACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQSaXNQb29sU3dhcERpc2FibGVkCgABQAkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCGmlzUG9vbFN3YXBEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUBQAIHQm9vbGVhbgUBQAkAAgEJAKwCAgkAAwEFAUACHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EDmlzU3dhcERpc2FibGVkAwkBASEBCQEUaXNBZGRyZXNzV2hpdGVsaXN0ZWQBCAUBaQZjYWxsZXIDAwkBEGlzR2xvYmFsU2h1dGRvd24ABgkAAAIFDWNmZ1Bvb2xTdGF0dXMFDFBvb2xTaHV0ZG93bgYFEmlzUG9vbFN3YXBEaXNhYmxlZAcEBmNoZWNrcwkAzAgCAwMJAQEhAQUOaXNTd2FwRGlzYWJsZWQGCQEJaXNNYW5hZ2VyAQUBaQYJAQh0aHJvd0VycgECInN3YXAgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAGcCCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUNY2xlYW5BbW91bnRJbgYJAQh0aHJvd0VycgECDFdyb25nIGFtb3VudAkAzAgCAwkAAAIIBQFpBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQULc3dhcENvbnRhY3QGCQEIdGhyb3dFcnIBAhFQZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBANwbXQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQHYXNzZXRJbgkBD2Fzc2V0SWRUb1N0cmluZwEIBQNwbXQHYXNzZXRJZAQIYXNzZXRPdXQDCQAAAgUJaXNSZXZlcnNlBwkBD2dldFN0cmluZ09yRmFpbAIFBHRoaXMJAQJwYQAJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzCQECYWEABBJwb29sQXNzZXRJbkJhbGFuY2UJAGUCCQBlAgkBDWdldEFjY0JhbGFuY2UBBQdhc3NldEluCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAUNZmVlUG9vbEFtb3VudAQTcG9vbEFzc2V0T3V0QmFsYW5jZQkBDWdldEFjY0JhbGFuY2UBBQhhc3NldE91dAQJYW1vdW50T3V0CQBrAwUTcG9vbEFzc2V0T3V0QmFsYW5jZQUNY2xlYW5BbW91bnRJbgkAZAIFEnBvb2xBc3NldEluQmFsYW5jZQUNY2xlYW5BbW91bnRJbgQEb2xkSwkAuQICCQC2AgEFEnBvb2xBc3NldEluQmFsYW5jZQkAtgIBBRNwb29sQXNzZXRPdXRCYWxhbmNlBARuZXdLCQC5AgIJALcCAgkAtgIBCQENZ2V0QWNjQmFsYW5jZQEFB2Fzc2V0SW4JALYCAQUNZmVlUG9vbEFtb3VudAkAuAICCQC2AgEJAQ1nZXRBY2NCYWxhbmNlAQUIYXNzZXRPdXQJALYCAQUJYW1vdW50T3V0BAZjaGVja0sDCQDAAgIFBG5ld0sFBG9sZEsGCQACAQIUbmV3IEsgaXMgZmV3ZXIgZXJyb3IDCQAAAgUGY2hlY2tLBQZjaGVja0sECGNoZWNrTWluAwkAZwIFCWFtb3VudE91dAUMYW1vdW50T3V0TWluBgkAAgECLEV4Y2hhbmdlIHJlc3VsdCBpcyBmZXdlciBjb2lucyB0aGFuIGV4cGVjdGVkAwkAAAIFCGNoZWNrTWluBQhjaGVja01pbgQXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEDBQlpc1JldmVyc2UJAQEtAQUJYW1vdW50T3V0BQ1mZWVQb29sQW1vdW50BBZwcmljZUFzc2V0QmFsYW5jZURlbHRhAwUJaXNSZXZlcnNlBQ1mZWVQb29sQW1vdW50CQEBLQEFCWFtb3VudE91dAQRcmVmcmVzaEtMcEFjdGlvbnMICQEScmVmcmVzaEtMcEludGVybmFsAwUXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEFFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEAAAJfMQMJAAACBRFyZWZyZXNoS0xwQWN0aW9ucwURcmVmcmVzaEtMcEFjdGlvbnMEDnJlYmFsYW5jZVN0YXRlCQEOcmViYWxhbmNlQXNzZXQBBQdhc3NldEluAwkAAAIFDnJlYmFsYW5jZVN0YXRlBQ5yZWJhbGFuY2VTdGF0ZQQNd2l0aGRyYXdTdGF0ZQkBGXdpdGhkcmF3QW5kUmViYWxhbmNlQXNzZXQCBQhhc3NldE91dAUJYW1vdW50T3V0AwkAAAIFDXdpdGhkcmF3U3RhdGUFDXdpdGhkcmF3U3RhdGUJAJQKAgkAzggCCQDOCAIFDXdpdGhkcmF3U3RhdGUFDnJlYmFsYW5jZVN0YXRlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCWFkZHJlc3NUbwUJYW1vdW50T3V0CQEMcGFyc2VBc3NldElkAQUIYXNzZXRPdXQFA25pbAUJYW1vdW50T3V0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBA3B1dAIRc2xpcHBhZ2VUb2xlcmFuY2UPc2hvdWxkQXV0b1N0YWtlAwkAZgIAAAURc2xpcHBhZ2VUb2xlcmFuY2UJAAIBAiBJbnZhbGlkIHNsaXBwYWdlVG9sZXJhbmNlIHBhc3NlZAQGZXN0UHV0CQEJY29tbW9uUHV0AwUBaQURc2xpcHBhZ2VUb2xlcmFuY2UGBAllbWl0THBBbXQIBQZlc3RQdXQCXzIECWxwQXNzZXRJZAgFBmVzdFB1dAJfNwQFc3RhdGUIBQZlc3RQdXQCXzkEBmFtRGlmZggFBmVzdFB1dANfMTAEBnByRGlmZggFBmVzdFB1dANfMTEEBGFtSWQIBQZlc3RQdXQDXzEyBARwcklkCAUGZXN0UHV0A18xMwQKYW1Bc3NldFBtdAkAtgIBCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQKcHJBc3NldFBtdAkAtgIBCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwABBmFtb3VudAQKY3VycmVudEtMcAkBDmNhbGNDdXJyZW50S0xwAwUKYW1Bc3NldFBtdAUKcHJBc3NldFBtdAkAtgIBAAADCQAAAgUKY3VycmVudEtMcAUKY3VycmVudEtMcAQHZW1pdEludgkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAMJAAACBQdlbWl0SW52BQdlbWl0SW52BA1lbWl0SW52TGVnYWN5BAckbWF0Y2gwBQdlbWl0SW52AwkAAQIFByRtYXRjaDACB0FkZHJlc3MEFWxlZ2FjeUZhY3RvcnlDb250cmFjdAUHJG1hdGNoMAkA/AcEBRVsZWdhY3lGYWN0b3J5Q29udHJhY3QCBGVtaXQJAMwIAgUJZW1pdExwQW10BQNuaWwFA25pbAUEdW5pdAMJAAACBQ1lbWl0SW52TGVnYWN5BQ1lbWl0SW52TGVnYWN5BAxzbGlwcGFnZUFJbnYDCQBmAgUGYW1EaWZmAAAJAPwHBAUQc2xpcHBhZ2VDb250cmFjdAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFBGFtSWQFBmFtRGlmZgUDbmlsBQNuaWwDCQAAAgUMc2xpcHBhZ2VBSW52BQxzbGlwcGFnZUFJbnYEDHNsaXBwYWdlUEludgMJAGYCBQZwckRpZmYAAAkA/AcEBRBzbGlwcGFnZUNvbnRyYWN0AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUEcHJJZAUGcHJEaWZmBQNuaWwFA25pbAMJAAACBQxzbGlwcGFnZVBJbnYFDHNsaXBwYWdlUEludgQKbHBUcmFuc2ZlcgMFD3Nob3VsZEF1dG9TdGFrZQQLc2xwU3Rha2VJbnYJAPwHBAUPc3Rha2luZ0NvbnRyYWN0AgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQlscEFzc2V0SWQFCWVtaXRMcEFtdAUDbmlsAwkAAAIFC3NscFN0YWtlSW52BQtzbHBTdGFrZUludgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUJZW1pdExwQW10BQlscEFzc2V0SWQFA25pbAQNJHQwNDU2NDg0NjExMAkBEnJlZnJlc2hLTHBJbnRlcm5hbAMAAAAAAAADCQAAAgUNJHQwNDU2NDg0NjExMAUNJHQwNDU2NDg0NjExMAQKdXBkYXRlZEtMcAgFDSR0MDQ1NjQ4NDYxMTACXzIEEXJlZnJlc2hLTHBBY3Rpb25zCAUNJHQwNDU2NDg0NjExMAJfMQQRaXNVcGRhdGVkS0xwVmFsaWQJARJ2YWxpZGF0ZVVwZGF0ZWRLTHACBQpjdXJyZW50S0xwBQp1cGRhdGVkS0xwAwkAAAIFEWlzVXBkYXRlZEtMcFZhbGlkBRFpc1VwZGF0ZWRLTHBWYWxpZAQDcmViCQD8BwQFBHRoaXMCCXJlYmFsYW5jZQUDbmlsBQNuaWwDCQAAAgUDcmViBQNyZWIJAM4IAgkAzggCBQVzdGF0ZQUKbHBUcmFuc2ZlcgURcmVmcmVzaEtMcEFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKcHV0Rm9yRnJlZQELbWF4U2xpcHBhZ2UDCQBmAgAABQttYXhTbGlwcGFnZQkAAgECFEludmFsaWQgdmFsdWUgcGFzc2VkBAZlc3RQdXQJAQljb21tb25QdXQDBQFpBQttYXhTbGlwcGFnZQcEBXN0YXRlCAUGZXN0UHV0Al85BAphbUFzc2V0UG10CQC2AgEICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BApwckFzc2V0UG10CQC2AgEICQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAEGYW1vdW50BApjdXJyZW50S0xwCQEOY2FsY0N1cnJlbnRLTHADBQphbUFzc2V0UG10BQpwckFzc2V0UG10CQC2AgEAAAMJAAACBQpjdXJyZW50S0xwBQpjdXJyZW50S0xwBA0kdDA0NjcyMjQ2Nzg3CQEScmVmcmVzaEtMcEludGVybmFsAwAAAAAAAAQRcmVmcmVzaEtMcEFjdGlvbnMIBQ0kdDA0NjcyMjQ2Nzg3Al8xBAp1cGRhdGVkS0xwCAUNJHQwNDY3MjI0Njc4NwJfMgQRaXNVcGRhdGVkS0xwVmFsaWQJARJ2YWxpZGF0ZVVwZGF0ZWRLTHACBQpjdXJyZW50S0xwBQp1cGRhdGVkS0xwAwkAAAIFEWlzVXBkYXRlZEtMcFZhbGlkBRFpc1VwZGF0ZWRLTHBWYWxpZAkAzggCBQVzdGF0ZQURcmVmcmVzaEtMcEFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJcHV0T25lVGtuAgxtaW5PdXRBbW91bnQJYXV0b1N0YWtlBCBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAoAAUAJAPwHBAUPZmFjdG9yeUNvbnRyYWN0Aihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUBQAIHQm9vbGVhbgUBQAkAAgEJAKwCAgkAAwEFAUACHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EDWlzUHV0RGlzYWJsZWQDCQEBIQEJARRpc0FkZHJlc3NXaGl0ZWxpc3RlZAEIBQFpBmNhbGxlcgMDAwkBEGlzR2xvYmFsU2h1dGRvd24ABgkAAAIFDWNmZ1Bvb2xTdGF0dXMFD1Bvb2xQdXREaXNhYmxlZAYJAAACBQ1jZmdQb29sU3RhdHVzBQxQb29sU2h1dGRvd24GBSBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAcEBmNoZWNrcwkAzAgCAwMJAQEhAQUNaXNQdXREaXNhYmxlZAYJAQlpc01hbmFnZXIBBQFpBgkBCHRocm93RXJyAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwABBgkBCHRocm93RXJyAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEB3BheW1lbnQJAJEDAggFAWkIcGF5bWVudHMAAAQOcGF5bWVudEFzc2V0SWQIBQdwYXltZW50B2Fzc2V0SWQEEHBheW1lbnRBbW91bnRSYXcIBQdwYXltZW50BmFtb3VudAQKY3VycmVudEtMcAMJAAACBQ5wYXltZW50QXNzZXRJZAUQY2ZnQW1vdW50QXNzZXRJZAkBDmNhbGNDdXJyZW50S0xwAwkAtgIBBRBwYXltZW50QW1vdW50UmF3CQC2AgEAAAkAtgIBAAADCQAAAgUOcGF5bWVudEFzc2V0SWQFD2NmZ1ByaWNlQXNzZXRJZAkBDmNhbGNDdXJyZW50S0xwAwkAtgIBAAAJALYCAQUQcGF5bWVudEFtb3VudFJhdwkAtgIBAAAJAQh0aHJvd0VycgECHnBheW1lbnQgYXNzZXQgaXMgbm90IHN1cHBvcnRlZAMJAAACBQpjdXJyZW50S0xwBQpjdXJyZW50S0xwBAt1c2VyQWRkcmVzcwgFAWkGY2FsbGVyBAR0eElkCAUBaQ10cmFuc2FjdGlvbklkBA0kdDA0ODAxNjQ4MTY4CQEPY2FsY1B1dE9uZVRva2VuBAUQcGF5bWVudEFtb3VudFJhdwUOcGF5bWVudEFzc2V0SWQFC3VzZXJBZGRyZXNzBQR0eElkAwkAAAIFDSR0MDQ4MDE2NDgxNjgFDSR0MDQ4MDE2NDgxNjgEFHBheW1lbnRJbkFtb3VudEFzc2V0CAUNJHQwNDgwMTY0ODE2OAJfNQQFYm9udXMIBQ0kdDA0ODAxNjQ4MTY4Al80BAlmZWVBbW91bnQIBQ0kdDA0ODAxNjQ4MTY4Al8zBAtjb21tb25TdGF0ZQgFDSR0MDQ4MDE2NDgxNjgCXzIEE2VtaXRBbW91bnRFc3RpbWF0ZWQIBQ0kdDA0ODAxNjQ4MTY4Al8xBAplbWl0QW1vdW50AwMJAGYCBQxtaW5PdXRBbW91bnQAAAkAZgIFDG1pbk91dEFtb3VudAUTZW1pdEFtb3VudEVzdGltYXRlZAcJAQh0aHJvd0VycgEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUMbWluT3V0QW1vdW50BQNuaWwCAAUTZW1pdEFtb3VudEVzdGltYXRlZAQHZW1pdEludgkBBGVtaXQBBQplbWl0QW1vdW50AwkAAAIFB2VtaXRJbnYFB2VtaXRJbnYECmxwVHJhbnNmZXIDBQlhdXRvU3Rha2UECHN0YWtlSW52CQD8BwQFD3N0YWtpbmdDb250cmFjdAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUMY2ZnTHBBc3NldElkBQplbWl0QW1vdW50BQNuaWwDCQAAAgUIc3Rha2VJbnYFCHN0YWtlSW52BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQplbWl0QW1vdW50BQxjZmdMcEFzc2V0SWQFA25pbAQHc2VuZEZlZQMJAGYCBQlmZWVBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBRNmZWVDb2xsZWN0b3JBZGRyZXNzBQlmZWVBbW91bnQFDnBheW1lbnRBc3NldElkBQNuaWwFA25pbAQNJHQwNDg3NTQ0ODk1MQMJAAACBQR0aGlzBRNmZWVDb2xsZWN0b3JBZGRyZXNzCQCUCgIAAAAAAwUUcGF5bWVudEluQW1vdW50QXNzZXQJAJQKAgkBAS0BBQlmZWVBbW91bnQAAAkAlAoCAAAJAQEtAQUJZmVlQW1vdW50BBdhbW91bnRBc3NldEJhbGFuY2VEZWx0YQgFDSR0MDQ4NzU0NDg5NTECXzEEFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEIBQ0kdDA0ODc1NDQ4OTUxAl8yBA0kdDA0ODk1NDQ5MDYyCQEScmVmcmVzaEtMcEludGVybmFsAwUXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEFFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEAAAQRcmVmcmVzaEtMcEFjdGlvbnMIBQ0kdDA0ODk1NDQ5MDYyAl8xBAp1cGRhdGVkS0xwCAUNJHQwNDg5NTQ0OTA2MgJfMgQDa0xwCQEFdmFsdWUBCQCiCAEFBmtleUtMcAQRaXNVcGRhdGVkS0xwVmFsaWQJARJ2YWxpZGF0ZVVwZGF0ZWRLTHACBQpjdXJyZW50S0xwBQp1cGRhdGVkS0xwAwkAAAIFEWlzVXBkYXRlZEtMcFZhbGlkBRFpc1VwZGF0ZWRLTHBWYWxpZAQDcmViCQD8BwQFBHRoaXMCCXJlYmFsYW5jZQUDbmlsBQNuaWwDCQAAAgUDcmViBQNyZWIJAJQKAgkAzggCCQDOCAIJAM4IAgULY29tbW9uU3RhdGUFCmxwVHJhbnNmZXIFB3NlbmRGZWUFEXJlZnJlc2hLTHBBY3Rpb25zBQplbWl0QW1vdW50CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEXB1dE9uZVRrblJFQURPTkxZAg5wYXltZW50QXNzZXRJZBBwYXltZW50QW1vdW50UmF3BA0kdDA0OTQxNzQ5NTc0CQEPY2FsY1B1dE9uZVRva2VuBAUQcGF5bWVudEFtb3VudFJhdwkBDHBhcnNlQXNzZXRJZAEFDnBheW1lbnRBc3NldElkBQR1bml0BQR1bml0BBNlbWl0QW1vdW50RXN0aW1hdGVkCAUNJHQwNDk0MTc0OTU3NAJfMQQLY29tbW9uU3RhdGUIBQ0kdDA0OTQxNzQ5NTc0Al8yBAlmZWVBbW91bnQIBQ0kdDA0OTQxNzQ5NTc0Al8zBAVib251cwgFDSR0MDQ5NDE3NDk1NzQCXzQEFHBheW1lbnRJbkFtb3VudEFzc2V0CAUNJHQwNDk0MTc0OTU3NAJfNQkAlAoCBQNuaWwJAJUKAwUTZW1pdEFtb3VudEVzdGltYXRlZAUJZmVlQW1vdW50BQVib251cwFpAQlnZXRPbmVUa24CDW91dEFzc2V0SWRTdHIMbWluT3V0QW1vdW50BCBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAoAAUAJAPwHBAUPZmFjdG9yeUNvbnRyYWN0Aihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUBQAIHQm9vbGVhbgUBQAkAAgEJAKwCAgkAAwEFAUACHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EDWlzR2V0RGlzYWJsZWQDCQEBIQEJARRpc0FkZHJlc3NXaGl0ZWxpc3RlZAEIBQFpBmNhbGxlcgMDCQEQaXNHbG9iYWxTaHV0ZG93bgAGCQAAAgUNY2ZnUG9vbFN0YXR1cwUMUG9vbFNodXRkb3duBgUgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQHBAZjaGVja3MJAMwIAgMDCQEBIQEFDWlzR2V0RGlzYWJsZWQGCQEJaXNNYW5hZ2VyAQUBaQYJAQh0aHJvd0VycgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQYJAQh0aHJvd0VycgECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBApvdXRBc3NldElkCQEMcGFyc2VBc3NldElkAQUNb3V0QXNzZXRJZFN0cgQHcGF5bWVudAkAkQMCCAUBaQhwYXltZW50cwAABA5wYXltZW50QXNzZXRJZAgFB3BheW1lbnQHYXNzZXRJZAQNcGF5bWVudEFtb3VudAgFB3BheW1lbnQGYW1vdW50BApjdXJyZW50S0xwCQEOY2FsY0N1cnJlbnRLTHADCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFCmN1cnJlbnRLTHAFCmN1cnJlbnRLTHAEC3VzZXJBZGRyZXNzCAUBaQZjYWxsZXIEBHR4SWQIBQFpDXRyYW5zYWN0aW9uSWQEDSR0MDUwNDk2NTA2NDkJAQ9jYWxjR2V0T25lVG9rZW4FBQpvdXRBc3NldElkBQ1wYXltZW50QW1vdW50BQ5wYXltZW50QXNzZXRJZAULdXNlckFkZHJlc3MFBHR4SWQDCQAAAgUNJHQwNTA0OTY1MDY0OQUNJHQwNTA0OTY1MDY0OQQQb3V0SW5BbW91bnRBc3NldAgFDSR0MDUwNDk2NTA2NDkCXzUEBWJvbnVzCAUNJHQwNTA0OTY1MDY0OQJfNAQJZmVlQW1vdW50CAUNJHQwNTA0OTY1MDY0OQJfMwQLY29tbW9uU3RhdGUIBQ0kdDA1MDQ5NjUwNjQ5Al8yBA9hbW91bnRFc3RpbWF0ZWQIBQ0kdDA1MDQ5NjUwNjQ5Al8xBAZhbW91bnQDAwkAZgIFDG1pbk91dEFtb3VudAAACQBmAgUMbWluT3V0QW1vdW50BQ9hbW91bnRFc3RpbWF0ZWQHCQEIdGhyb3dFcnIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFDG1pbk91dEFtb3VudAUDbmlsAgAFD2Ftb3VudEVzdGltYXRlZAQHYnVybkludgkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCBGJ1cm4JAMwIAgUNcGF5bWVudEFtb3VudAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQ5wYXltZW50QXNzZXRJZAUNcGF5bWVudEFtb3VudAUDbmlsAwkAAAIFB2J1cm5JbnYFB2J1cm5JbnYEDXdpdGhkcmF3U3RhdGUJARl3aXRoZHJhd0FuZFJlYmFsYW5jZUFzc2V0AgUNb3V0QXNzZXRJZFN0cgkAZAIFBmFtb3VudAkAlgMBCQDMCAIAAAkAzAgCBQlmZWVBbW91bnQFA25pbAQNYXNzZXRUcmFuc2ZlcgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQt1c2VyQWRkcmVzcwUGYW1vdW50BQpvdXRBc3NldElkBQNuaWwEB3NlbmRGZWUDCQBmAgUJZmVlQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUTZmVlQ29sbGVjdG9yQWRkcmVzcwUJZmVlQW1vdW50BQpvdXRBc3NldElkBQNuaWwFA25pbAQNJHQwNTEzMTM1MTU2MAQQZmVlQW1vdW50Rm9yQ2FsYwMJAAACBQR0aGlzBRNmZWVDb2xsZWN0b3JBZGRyZXNzAAAFCWZlZUFtb3VudAMFEG91dEluQW1vdW50QXNzZXQJAJQKAgkBAS0BCQBkAgUGYW1vdW50BRBmZWVBbW91bnRGb3JDYWxjAAAJAJQKAgAACQEBLQEJAGQCBQZhbW91bnQFEGZlZUFtb3VudEZvckNhbGMEF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhCAUNJHQwNTEzMTM1MTU2MAJfMQQWcHJpY2VBc3NldEJhbGFuY2VEZWx0YQgFDSR0MDUxMzEzNTE1NjACXzIEDSR0MDUxNTYzNTE2NzEJARJyZWZyZXNoS0xwSW50ZXJuYWwDBRdhbW91bnRBc3NldEJhbGFuY2VEZWx0YQUWcHJpY2VBc3NldEJhbGFuY2VEZWx0YQAABBFyZWZyZXNoS0xwQWN0aW9ucwgFDSR0MDUxNTYzNTE2NzECXzEECnVwZGF0ZWRLTHAIBQ0kdDA1MTU2MzUxNjcxAl8yBBFpc1VwZGF0ZWRLTHBWYWxpZAkBEnZhbGlkYXRlVXBkYXRlZEtMcAIFCmN1cnJlbnRLTHAFCnVwZGF0ZWRLTHADCQAAAgURaXNVcGRhdGVkS0xwVmFsaWQFEWlzVXBkYXRlZEtMcFZhbGlkCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgULY29tbW9uU3RhdGUFDXdpdGhkcmF3U3RhdGUFDWFzc2V0VHJhbnNmZXIFB3NlbmRGZWUFEXJlZnJlc2hLTHBBY3Rpb25zBQZhbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQERZ2V0T25lVGtuUkVBRE9OTFkCCm91dEFzc2V0SWQNcGF5bWVudEFtb3VudAQNJHQwNTE5NDk1MjEwNQkBD2NhbGNHZXRPbmVUb2tlbgUJAQxwYXJzZUFzc2V0SWQBBQpvdXRBc3NldElkBQ1wYXltZW50QW1vdW50BQxjZmdMcEFzc2V0SWQFBHVuaXQFBHVuaXQED2Ftb3VudEVzdGltYXRlZAgFDSR0MDUxOTQ5NTIxMDUCXzEEC2NvbW1vblN0YXRlCAUNJHQwNTE5NDk1MjEwNQJfMgQJZmVlQW1vdW50CAUNJHQwNTE5NDk1MjEwNQJfMwQFYm9udXMIBQ0kdDA1MTk0OTUyMTA1Al80BBBvdXRJbkFtb3VudEFzc2V0CAUNJHQwNTE5NDk1MjEwNQJfNQkAlAoCBQNuaWwJAJUKAwUPYW1vdW50RXN0aW1hdGVkBQlmZWVBbW91bnQFBWJvbnVzAWkBE3Vuc3Rha2VBbmRHZXRPbmVUa24DDXVuc3Rha2VBbW91bnQNb3V0QXNzZXRJZFN0cgxtaW5PdXRBbW91bnQEIGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkCgABQAkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQUBQAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQNaXNHZXREaXNhYmxlZAMJAQEhAQkBFGlzQWRkcmVzc1doaXRlbGlzdGVkAQgFAWkGY2FsbGVyAwMJARBpc0dsb2JhbFNodXRkb3duAAYJAAACBQ1jZmdQb29sU3RhdHVzBQxQb29sU2h1dGRvd24GBSBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZAcEBmNoZWNrcwkAzAgCAwMJAQEhAQUNaXNHZXREaXNhYmxlZAYJAQlpc01hbmFnZXIBBQFpBgkBCHRocm93RXJyAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUBaQhwYXltZW50cwAABgkBCHRocm93RXJyAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MECm91dEFzc2V0SWQJAQxwYXJzZUFzc2V0SWQBBQ1vdXRBc3NldElkU3RyBAt1c2VyQWRkcmVzcwgFAWkGY2FsbGVyBAR0eElkCAUBaQ10cmFuc2FjdGlvbklkBApjdXJyZW50S0xwCQEOY2FsY0N1cnJlbnRLTHADCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFCmN1cnJlbnRLTHAFCmN1cnJlbnRLTHAECnVuc3Rha2VJbnYJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Agd1bnN0YWtlCQDMCAIJANgEAQUMY2ZnTHBBc3NldElkCQDMCAIFDXVuc3Rha2VBbW91bnQFA25pbAUDbmlsAwkAAAIFCnVuc3Rha2VJbnYFCnVuc3Rha2VJbnYEDSR0MDUzMDQ3NTMxOTgJAQ9jYWxjR2V0T25lVG9rZW4FBQpvdXRBc3NldElkBQ11bnN0YWtlQW1vdW50BQxjZmdMcEFzc2V0SWQFC3VzZXJBZGRyZXNzBQR0eElkAwkAAAIFDSR0MDUzMDQ3NTMxOTgFDSR0MDUzMDQ3NTMxOTgEEG91dEluQW1vdW50QXNzZXQIBQ0kdDA1MzA0NzUzMTk4Al81BAVib251cwgFDSR0MDUzMDQ3NTMxOTgCXzQECWZlZUFtb3VudAgFDSR0MDUzMDQ3NTMxOTgCXzMEC2NvbW1vblN0YXRlCAUNJHQwNTMwNDc1MzE5OAJfMgQPYW1vdW50RXN0aW1hdGVkCAUNJHQwNTMwNDc1MzE5OAJfMQQGYW1vdW50AwMJAGYCBQxtaW5PdXRBbW91bnQAAAkAZgIFDG1pbk91dEFtb3VudAUPYW1vdW50RXN0aW1hdGVkBwkBCHRocm93RXJyAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQxtaW5PdXRBbW91bnQFA25pbAIABQ9hbW91bnRFc3RpbWF0ZWQEB2J1cm5JbnYJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AgRidXJuCQDMCAIFDXVuc3Rha2VBbW91bnQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUMY2ZnTHBBc3NldElkBQ11bnN0YWtlQW1vdW50BQNuaWwDCQAAAgUHYnVybkludgUHYnVybkludgQNd2l0aGRyYXdTdGF0ZQkBGXdpdGhkcmF3QW5kUmViYWxhbmNlQXNzZXQCBQ1vdXRBc3NldElkU3RyCQBkAgUGYW1vdW50CQCWAwEJAMwIAgAACQDMCAIFCWZlZUFtb3VudAUDbmlsBA1hc3NldFRyYW5zZmVyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUGYW1vdW50BQpvdXRBc3NldElkBQNuaWwEB3NlbmRGZWUDCQBmAgUJZmVlQW1vdW50AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUTZmVlQ29sbGVjdG9yQWRkcmVzcwUJZmVlQW1vdW50BQpvdXRBc3NldElkBQNuaWwFA25pbAQNJHQwNTM4NTc1NDEwNAQQZmVlQW1vdW50Rm9yQ2FsYwMJAAACBQR0aGlzBRNmZWVDb2xsZWN0b3JBZGRyZXNzAAAFCWZlZUFtb3VudAMFEG91dEluQW1vdW50QXNzZXQJAJQKAgkBAS0BCQBkAgUGYW1vdW50BRBmZWVBbW91bnRGb3JDYWxjAAAJAJQKAgAACQEBLQEJAGQCBQZhbW91bnQFEGZlZUFtb3VudEZvckNhbGMEF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhCAUNJHQwNTM4NTc1NDEwNAJfMQQWcHJpY2VBc3NldEJhbGFuY2VEZWx0YQgFDSR0MDUzODU3NTQxMDQCXzIEDSR0MDU0MTA3NTQyMTUJARJyZWZyZXNoS0xwSW50ZXJuYWwDBRdhbW91bnRBc3NldEJhbGFuY2VEZWx0YQUWcHJpY2VBc3NldEJhbGFuY2VEZWx0YQAABBFyZWZyZXNoS0xwQWN0aW9ucwgFDSR0MDU0MTA3NTQyMTUCXzEECnVwZGF0ZWRLTHAIBQ0kdDA1NDEwNzU0MjE1Al8yBBFpc1VwZGF0ZWRLTHBWYWxpZAkBEnZhbGlkYXRlVXBkYXRlZEtMcAIFCmN1cnJlbnRLTHAFCnVwZGF0ZWRLTHADCQAAAgURaXNVcGRhdGVkS0xwVmFsaWQFEWlzVXBkYXRlZEtMcFZhbGlkCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgULY29tbW9uU3RhdGUFDXdpdGhkcmF3U3RhdGUFDWFzc2V0VHJhbnNmZXIFB3NlbmRGZWUFEXJlZnJlc2hLTHBBY3Rpb25zBQZhbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEDZ2V0AAQDcmVzCQEJY29tbW9uR2V0AQUBaQQIb3V0QW1BbXQIBQNyZXMCXzEECG91dFByQW10CAUDcmVzAl8yBAZwbXRBbXQIBQNyZXMCXzMECnBtdEFzc2V0SWQIBQNyZXMCXzQEBXN0YXRlCAUDcmVzAl81BA13aXRoZHJhd1N0YXRlCQEXd2l0aGRyYXdBbmRSZWJhbGFuY2VBbGwCBQhvdXRBbUFtdAUIb3V0UHJBbXQECmN1cnJlbnRLTHAJAQ5jYWxjQ3VycmVudEtMcAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUKY3VycmVudEtMcAUKY3VycmVudEtMcAQUYnVybkxQQXNzZXRPbkZhY3RvcnkJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AgRidXJuCQDMCAIFBnBtdEFtdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQpwbXRBc3NldElkBQZwbXRBbXQFA25pbAMJAAACBRRidXJuTFBBc3NldE9uRmFjdG9yeQUUYnVybkxQQXNzZXRPbkZhY3RvcnkEDSR0MDU1MzEwNTUzOTEJARJyZWZyZXNoS0xwSW50ZXJuYWwDCQEBLQEFCG91dEFtQW10CQEBLQEFCG91dFByQW10AAAEEXJlZnJlc2hLTHBBY3Rpb25zCAUNJHQwNTUzMTA1NTM5MQJfMQQKdXBkYXRlZEtMcAgFDSR0MDU1MzEwNTUzOTECXzIEEWlzVXBkYXRlZEtMcFZhbGlkCQESdmFsaWRhdGVVcGRhdGVkS0xwAgUKY3VycmVudEtMcAUKdXBkYXRlZEtMcAMJAAACBRFpc1VwZGF0ZWRLTHBWYWxpZAURaXNVcGRhdGVkS0xwVmFsaWQJAM4IAgkAzggCBQ13aXRoZHJhd1N0YXRlBQVzdGF0ZQURcmVmcmVzaEtMcEFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJZ2V0Tm9MZXNzAhJub0xlc3NUaGVuQW10QXNzZXQUbm9MZXNzVGhlblByaWNlQXNzZXQEA3JlcwkBCWNvbW1vbkdldAEFAWkECG91dEFtQW10CAUDcmVzAl8xBAhvdXRQckFtdAgFA3JlcwJfMgQGcG10QW10CAUDcmVzAl8zBApwbXRBc3NldElkCAUDcmVzAl80BAVzdGF0ZQgFA3JlcwJfNQMJAGYCBRJub0xlc3NUaGVuQW10QXNzZXQFCG91dEFtQW10CQACAQkArAICCQCsAgIJAKwCAgIcbm9MZXNzVGhlbkFtdEFzc2V0IGZhaWxlZDogIAkApAMBBQhvdXRBbUFtdAIDIDwgCQCkAwEFEm5vTGVzc1RoZW5BbXRBc3NldAMJAGYCBRRub0xlc3NUaGVuUHJpY2VBc3NldAUIb3V0UHJBbXQJAAIBCQCsAgIJAKwCAgkArAICAh1ub0xlc3NUaGVuUHJpY2VBc3NldCBmYWlsZWQ6IAkApAMBBQhvdXRQckFtdAIDIDwgCQCkAwEFFG5vTGVzc1RoZW5QcmljZUFzc2V0BA13aXRoZHJhd1N0YXRlCQEXd2l0aGRyYXdBbmRSZWJhbGFuY2VBbGwCBQhvdXRBbUFtdAUIb3V0UHJBbXQECmN1cnJlbnRLTHAJAQ5jYWxjQ3VycmVudEtMcAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUKY3VycmVudEtMcAUKY3VycmVudEtMcAQUYnVybkxQQXNzZXRPbkZhY3RvcnkJAPwHBAUPZmFjdG9yeUNvbnRyYWN0AgRidXJuCQDMCAIFBnBtdEFtdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQpwbXRBc3NldElkBQZwbXRBbXQFA25pbAMJAAACBRRidXJuTFBBc3NldE9uRmFjdG9yeQUUYnVybkxQQXNzZXRPbkZhY3RvcnkEDSR0MDU2NDg2NTY1NjcJARJyZWZyZXNoS0xwSW50ZXJuYWwDCQEBLQEFCG91dEFtQW10CQEBLQEFCG91dFByQW10AAAEEXJlZnJlc2hLTHBBY3Rpb25zCAUNJHQwNTY0ODY1NjU2NwJfMQQKdXBkYXRlZEtMcAgFDSR0MDU2NDg2NTY1NjcCXzIEEWlzVXBkYXRlZEtMcFZhbGlkCQESdmFsaWRhdGVVcGRhdGVkS0xwAgUKY3VycmVudEtMcAUKdXBkYXRlZEtMcAMJAAACBRFpc1VwZGF0ZWRLTHBWYWxpZAURaXNVcGRhdGVkS0xwVmFsaWQJAM4IAgkAzggCBQ13aXRoZHJhd1N0YXRlBQVzdGF0ZQURcmVmcmVzaEtMcEFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENdW5zdGFrZUFuZEdldAEGYW1vdW50BA1jaGVja1BheW1lbnRzAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQ1jaGVja1BheW1lbnRzBQ1jaGVja1BheW1lbnRzBANjZmcJAQ1nZXRQb29sQ29uZmlnAAQJbHBBc3NldElkCQDZBAEJAJEDAgUDY2ZnBRBpZHhQb29sTFBBc3NldElkBApjdXJyZW50S0xwCQEOY2FsY0N1cnJlbnRLTHADCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFCmN1cnJlbnRLTHAFCmN1cnJlbnRLTHAECnVuc3Rha2VJbnYJAPwHBAUPc3Rha2luZ0NvbnRyYWN0Agd1bnN0YWtlCQDMCAIJANgEAQUJbHBBc3NldElkCQDMCAIFBmFtb3VudAUDbmlsBQNuaWwDCQAAAgUKdW5zdGFrZUludgUKdW5zdGFrZUludgQDcmVzCQEUZXN0aW1hdGVHZXRPcGVyYXRpb24ECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQUJbHBBc3NldElkBQZhbW91bnQIBQFpBmNhbGxlcgQIb3V0QW1BbXQIBQNyZXMCXzEECG91dFByQW10CAUDcmVzAl8yBApwb29sU3RhdHVzCQENcGFyc2VJbnRWYWx1ZQEIBQNyZXMCXzkEBXN0YXRlCAUDcmVzA18xMAQNd2l0aGRyYXdTdGF0ZQkBF3dpdGhkcmF3QW5kUmViYWxhbmNlQWxsAgUIb3V0QW1BbXQFCG91dFByQW10BA1pc0dldERpc2FibGVkAwkBASEBCQEUaXNBZGRyZXNzV2hpdGVsaXN0ZWQBCAUBaQZjYWxsZXIDCQEQaXNHbG9iYWxTaHV0ZG93bgAGCQAAAgUNY2ZnUG9vbFN0YXR1cwUMUG9vbFNodXRkb3duBwQPY2hlY2tQb29sU3RhdHVzAwUNaXNHZXREaXNhYmxlZAkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUKcG9vbFN0YXR1cwYDCQAAAgUPY2hlY2tQb29sU3RhdHVzBQ9jaGVja1Bvb2xTdGF0dXMEFGJ1cm5MUEFzc2V0T25GYWN0b3J5CQD8BwQFD2ZhY3RvcnlDb250cmFjdAIEYnVybgkAzAgCBQZhbW91bnQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUJbHBBc3NldElkBQZhbW91bnQFA25pbAMJAAACBRRidXJuTFBBc3NldE9uRmFjdG9yeQUUYnVybkxQQXNzZXRPbkZhY3RvcnkEDSR0MDU3OTE1NTc5OTYJARJyZWZyZXNoS0xwSW50ZXJuYWwDCQEBLQEFCG91dEFtQW10CQEBLQEFCG91dFByQW10AAAEEXJlZnJlc2hLTHBBY3Rpb25zCAUNJHQwNTc5MTU1Nzk5NgJfMQQKdXBkYXRlZEtMcAgFDSR0MDU3OTE1NTc5OTYCXzIEEWlzVXBkYXRlZEtMcFZhbGlkCQESdmFsaWRhdGVVcGRhdGVkS0xwAgUKY3VycmVudEtMcAUKdXBkYXRlZEtMcAMJAAACBRFpc1VwZGF0ZWRLTHBWYWxpZAURaXNVcGRhdGVkS0xwVmFsaWQJAM4IAgkAzggCBQ13aXRoZHJhd1N0YXRlBQVzdGF0ZQURcmVmcmVzaEtMcEFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQETdW5zdGFrZUFuZEdldE5vTGVzcwMNdW5zdGFrZUFtb3VudBVub0xlc3NUaGVuQW1vdW50QXNzZXQUbm9MZXNzVGhlblByaWNlQXNzZXQEDWlzR2V0RGlzYWJsZWQDCQEBIQEJARRpc0FkZHJlc3NXaGl0ZWxpc3RlZAEIBQFpBmNhbGxlcgMJARBpc0dsb2JhbFNodXRkb3duAAYJAAACBQ1jZmdQb29sU3RhdHVzBQxQb29sU2h1dGRvd24HBAZjaGVja3MJAMwIAgMJAQEhAQUNaXNHZXREaXNhYmxlZAYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MECmN1cnJlbnRLTHAJAQ5jYWxjQ3VycmVudEtMcAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUKY3VycmVudEtMcAUKY3VycmVudEtMcAQKdW5zdGFrZUludgkA/AcEBQ9zdGFraW5nQ29udHJhY3QCB3Vuc3Rha2UJAMwIAgkA2AQBBQxjZmdMcEFzc2V0SWQJAMwIAgUNdW5zdGFrZUFtb3VudAUDbmlsBQNuaWwDCQAAAgUKdW5zdGFrZUludgUKdW5zdGFrZUludgQDcmVzCQEUZXN0aW1hdGVHZXRPcGVyYXRpb24ECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQUMY2ZnTHBBc3NldElkBQ11bnN0YWtlQW1vdW50CAUBaQZjYWxsZXIECG91dEFtQW10CAUDcmVzAl8xBAhvdXRQckFtdAgFA3JlcwJfMgQFc3RhdGUIBQNyZXMDXzEwBA13aXRoZHJhd1N0YXRlCQEXd2l0aGRyYXdBbmRSZWJhbGFuY2VBbGwCBQhvdXRBbUFtdAUIb3V0UHJBbXQEDGNoZWNrQW1vdW50cwkAzAgCAwkAZwIFCG91dEFtQW10BRVub0xlc3NUaGVuQW1vdW50QXNzZXQGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUVbm9MZXNzVGhlbkFtb3VudEFzc2V0BQNuaWwCAAkAzAgCAwkAZwIFCG91dFByQW10BRRub0xlc3NUaGVuUHJpY2VBc3NldAYJAAIBCQC5CQIJAMwIAgIrcHJpY2UgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFFG5vTGVzc1RoZW5QcmljZUFzc2V0BQNuaWwCAAUDbmlsAwkAAAIFDGNoZWNrQW1vdW50cwUMY2hlY2tBbW91bnRzBBRidXJuTFBBc3NldE9uRmFjdG9yeQkA/AcEBQ9mYWN0b3J5Q29udHJhY3QCBGJ1cm4JAMwIAgUNdW5zdGFrZUFtb3VudAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQxjZmdMcEFzc2V0SWQFDXVuc3Rha2VBbW91bnQFA25pbAMJAAACBRRidXJuTFBBc3NldE9uRmFjdG9yeQUUYnVybkxQQXNzZXRPbkZhY3RvcnkEDSR0MDU5NDc0NTk1NTUJARJyZWZyZXNoS0xwSW50ZXJuYWwDCQEBLQEFCG91dEFtQW10CQEBLQEFCG91dFByQW10AAAEEXJlZnJlc2hLTHBBY3Rpb25zCAUNJHQwNTk0NzQ1OTU1NQJfMQQKdXBkYXRlZEtMcAgFDSR0MDU5NDc0NTk1NTUCXzIEEWlzVXBkYXRlZEtMcFZhbGlkCQESdmFsaWRhdGVVcGRhdGVkS0xwAgUKY3VycmVudEtMcAUKdXBkYXRlZEtMcAMJAAACBRFpc1VwZGF0ZWRLTHBWYWxpZAURaXNVcGRhdGVkS0xwVmFsaWQJAM4IAgkAzggCBQ13aXRoZHJhd1N0YXRlBQVzdGF0ZQURcmVmcmVzaEtMcEFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIYWN0aXZhdGUCC2FtdEFzc2V0U3RyDXByaWNlQXNzZXRTdHIDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkApQgBBQ9mYWN0b3J5Q29udHJhY3QJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWEABQthbXRBc3NldFN0cgkAzAgCCQELU3RyaW5nRW50cnkCCQECcGEABQ1wcmljZUFzc2V0U3RyBQNuaWwCB3N1Y2Nlc3MBaQEKcmVmcmVzaEtMcAAEGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRVrZXlLTHBSZWZyZXNoZWRIZWlnaHQAAAQdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQDCQBnAgkAZQIFBmhlaWdodAUYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0BQ9rTHBSZWZyZXNoRGVsYXkFBHVuaXQJAQh0aHJvd0VycgEJALkJAgkAzAgCCQCkAwEFD2tMcFJlZnJlc2hEZWxheQkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQFHWNoZWNrTGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0BANrTHAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFBmtleUtMcAIBMAkBBmZtdEVycgECC2ludmFsaWQga0xwBA0kdDA2MDc1OTYwODIzCQEScmVmcmVzaEtMcEludGVybmFsAwAAAAAAAAQQa0xwVXBkYXRlQWN0aW9ucwgFDSR0MDYwNzU5NjA4MjMCXzEECnVwZGF0ZWRLTHAIBQ0kdDA2MDc1OTYwODIzAl8yBAdhY3Rpb25zAwkBAiE9AgUDa0xwBQp1cGRhdGVkS0xwBRBrTHBVcGRhdGVBY3Rpb25zCQEIdGhyb3dFcnIBAhJub3RoaW5nIHRvIHJlZnJlc2gJAJQKAgUHYWN0aW9ucwkApgMBBQp1cGRhdGVkS0xwCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBDWdldFBvb2xDb25maWcAAWkBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBB2Fzc2V0SWQJAJQKAgUDbmlsCQENZ2V0QWNjQmFsYW5jZQEFB2Fzc2V0SWQBaQEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMFYW1BbXQFcHJBbXQFbHBBbXQEBnByaWNlcwkBCmNhbGNQcmljZXMDBQVhbUFtdAUFcHJBbXQFBWxwQW10CQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUGcHJpY2VzAAAJAMwIAgkApgMBCQCRAwIFBnByaWNlcwABCQDMCAIJAKYDAQkAkQMCBQZwcmljZXMAAgUDbmlsAWkBFHRvWDE4V3JhcHBlclJFQURPTkxZAgdvcmlnVmFsDW9yaWdTY2FsZU11bHQJAJQKAgUDbmlsCQCmAwEJAQV0b1gxOAIFB29yaWdWYWwFDW9yaWdTY2FsZU11bHQBaQEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIDdmFsD3Jlc3VsdFNjYWxlTXVsdAkAlAoCBQNuaWwJAQdmcm9tWDE4AgkApwMBBQN2YWwFD3Jlc3VsdFNjYWxlTXVsdAFpAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCCHByQW10WDE4CGFtQW10WDE4CQCUCgIFA25pbAkApgMBCQEPY2FsY1ByaWNlQmlnSW50AgkApwMBBQhwckFtdFgxOAkApwMBBQhhbUFtdFgxOAFpASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkGdHhJZDU4EXNsaXBwYWdlVG9sZXJhbmNlDGluQW1Bc3NldEFtdAtpbkFtQXNzZXRJZAxpblByQXNzZXRBbXQLaW5QckFzc2V0SWQLdXNlckFkZHJlc3MKaXNFdmFsdWF0ZQZlbWl0THAJAJQKAgUDbmlsCQEUZXN0aW1hdGVQdXRPcGVyYXRpb24JBQZ0eElkNTgFEXNsaXBwYWdlVG9sZXJhbmNlBQxpbkFtQXNzZXRBbXQFC2luQW1Bc3NldElkBQxpblByQXNzZXRBbXQFC2luUHJBc3NldElkBQt1c2VyQWRkcmVzcwUKaXNFdmFsdWF0ZQUGZW1pdExwAWkBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAZ0eElkNTgKcG10QXNzZXRJZAhwbXRMcEFtdAt1c2VyQWRkcmVzcwQDcmVzCQEUZXN0aW1hdGVHZXRPcGVyYXRpb24EBQZ0eElkNTgFCnBtdEFzc2V0SWQFCHBtdExwQW10CQERQGV4dHJOYXRpdmUoMTA2MikBBQt1c2VyQWRkcmVzcwkAlAoCBQNuaWwJAJwKCggFA3JlcwJfMQgFA3JlcwJfMggFA3JlcwJfMwgFA3JlcwJfNAgFA3JlcwJfNQgFA3JlcwJfNggFA3JlcwJfNwkApgMBCAUDcmVzAl84CAUDcmVzAl85CAUDcmVzA18xMAFpAQ1zdGF0c1JFQURPTkxZAAQDY2ZnCQENZ2V0UG9vbENvbmZpZwAECWxwQXNzZXRJZAkA2QQBCQCRAwIFA2NmZwUQaWR4UG9vbExQQXNzZXRJZAQKYW10QXNzZXRJZAkAkQMCBQNjZmcFDWlkeEFtdEFzc2V0SWQEDHByaWNlQXNzZXRJZAkAkQMCBQNjZmcFD2lkeFByaWNlQXNzZXRJZAQLaUFtdEFzc2V0SWQJAJEDAgUDY2ZnBQ5pZHhJQW10QXNzZXRJZAQNaVByaWNlQXNzZXRJZAkAkQMCBQNjZmcFEGlkeElQcmljZUFzc2V0SWQEC2FtdEFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBQ5pZHhBbXRBc3NldERjbQQNcHJpY2VBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA2NmZwUQaWR4UHJpY2VBc3NldERjbQQNcG9vbExQQmFsYW5jZQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQlscEFzc2V0SWQJAKwCAgkArAICAgZBc3NldCAJANgEAQUJbHBBc3NldElkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQSYWNjQW10QXNzZXRCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFCmFtdEFzc2V0SWQEFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFDHByaWNlQXNzZXRJZAQKcHJpY2VzTGlzdAMJAAACBQ1wb29sTFBCYWxhbmNlAAAJAMwIAgUKemVyb0JpZ0ludAkAzAgCBQp6ZXJvQmlnSW50CQDMCAIFCnplcm9CaWdJbnQFA25pbAkBCmNhbGNQcmljZXMDBRJhY2NBbXRBc3NldEJhbGFuY2UFFGFjY1ByaWNlQXNzZXRCYWxhbmNlBQ1wb29sTFBCYWxhbmNlBAhjdXJQcmljZQAABA9scEFtdEFzc2V0U2hhcmUJAQdmcm9tWDE4AgkAkQMCBQpwcmljZXNMaXN0AAEFBnNjYWxlOAQRbHBQcmljZUFzc2V0U2hhcmUJAQdmcm9tWDE4AgkAkQMCBQpwcmljZXNMaXN0AAIFBnNjYWxlOAQKcG9vbFdlaWdodAkBBXZhbHVlAQkAmggCBQ9mYWN0b3J5Q29udHJhY3QJAQ1rZXlQb29sV2VpZ2h0AQkApQgBBQR0aGlzCQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUSYWNjQW10QXNzZXRCYWxhbmNlCQDMCAIJAKQDAQUUYWNjUHJpY2VBc3NldEJhbGFuY2UJAMwIAgkApAMBBQ1wb29sTFBCYWxhbmNlCQDMCAIJAKQDAQUIY3VyUHJpY2UJAMwIAgkApAMBBQ9scEFtdEFzc2V0U2hhcmUJAMwIAgkApAMBBRFscFByaWNlQXNzZXRTaGFyZQkAzAgCCQCkAwEFCnBvb2xXZWlnaHQFA25pbAUDU0VQAWkBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQxpbkFtQXNzZXRBbXQEA2NmZwkBDWdldFBvb2xDb25maWcABAlscEFzc2V0SWQJANkEAQkAkQMCBQNjZmcFEGlkeFBvb2xMUEFzc2V0SWQEDGFtQXNzZXRJZFN0cgkAkQMCBQNjZmcFDWlkeEFtdEFzc2V0SWQECWFtQXNzZXRJZAkA2QQBBQxhbUFzc2V0SWRTdHIEDHByQXNzZXRJZFN0cgkAkQMCBQNjZmcFD2lkeFByaWNlQXNzZXRJZAQJcHJBc3NldElkCQDZBAEFDHByQXNzZXRJZFN0cgQLYW10QXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDmlkeEFtdEFzc2V0RGNtBA1wcmljZUFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBRBpZHhQcmljZUFzc2V0RGNtBApwb29sU3RhdHVzCQCRAwIFA2NmZwUNaWR4UG9vbFN0YXR1cwQNcG9vbExQQmFsYW5jZQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQlscEFzc2V0SWQJAKwCAgkArAICAgZBc3NldCAJANgEAQUJbHBBc3NldElkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQSYWNjQW10QXNzZXRCYWxhbmNlCQENZ2V0QWNjQmFsYW5jZQEFDGFtQXNzZXRJZFN0cgQUYWNjUHJpY2VBc3NldEJhbGFuY2UJAQ1nZXRBY2NCYWxhbmNlAQUMcHJBc3NldElkU3RyBA5hbXRBc3NldEFtdFgxOAkBBXRvWDE4AgUSYWNjQW10QXNzZXRCYWxhbmNlBQthbXRBc3NldERjbQQQcHJpY2VBc3NldEFtdFgxOAkBBXRvWDE4AgUUYWNjUHJpY2VBc3NldEJhbGFuY2UFDXByaWNlQXNzZXREY20EC2N1clByaWNlWDE4AwkAAAIFDXBvb2xMUEJhbGFuY2UAAAUKemVyb0JpZ0ludAkBD2NhbGNQcmljZUJpZ0ludAIFEHByaWNlQXNzZXRBbXRYMTgFDmFtdEFzc2V0QW10WDE4BA9pbkFtQXNzZXRBbXRYMTgJAQV0b1gxOAIFDGluQW1Bc3NldEFtdAULYW10QXNzZXREY20ED2luUHJBc3NldEFtdFgxOAkAvAIDBQ9pbkFtQXNzZXRBbXRYMTgFC2N1clByaWNlWDE4BQdzY2FsZTE4BAxpblByQXNzZXRBbXQJAQdmcm9tWDE4AgUPaW5QckFzc2V0QW10WDE4BQ1wcmljZUFzc2V0RGNtBAZlc3RQdXQJARRlc3RpbWF0ZVB1dE9wZXJhdGlvbgkCAACgwh4FDGluQW1Bc3NldEFtdAUJYW1Bc3NldElkBQxpblByQXNzZXRBbXQFCXByQXNzZXRJZAIABgcECWNhbGNMcEFtdAgFBmVzdFB1dAJfMQQMY3VyUHJpY2VDYWxjCAUGZXN0UHV0Al8zBAlhbUJhbGFuY2UIBQZlc3RQdXQCXzQECXByQmFsYW5jZQgFBmVzdFB1dAJfNQQKbHBFbWlzc2lvbggFBmVzdFB1dAJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUJY2FsY0xwQW10CQDMCAIJAKQDAQkBB2Zyb21YMTgCBQtjdXJQcmljZVgxOAUGc2NhbGU4CQDMCAIJAKQDAQUJYW1CYWxhbmNlCQDMCAIJAKQDAQUJcHJCYWxhbmNlCQDMCAIJAKQDAQUKbHBFbWlzc2lvbgkAzAgCBQpwb29sU3RhdHVzCQDMCAIJAKQDAQUMaW5BbUFzc2V0QW10CQDMCAIJAKQDAQUMaW5QckFzc2V0QW10BQNuaWwFA1NFUAFpAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQxpblByQXNzZXRBbXQEA2NmZwkBDWdldFBvb2xDb25maWcABAlscEFzc2V0SWQJANkEAQkAkQMCBQNjZmcFEGlkeFBvb2xMUEFzc2V0SWQEDGFtQXNzZXRJZFN0cgkAkQMCBQNjZmcFDWlkeEFtdEFzc2V0SWQECWFtQXNzZXRJZAkA2QQBBQxhbUFzc2V0SWRTdHIEDHByQXNzZXRJZFN0cgkAkQMCBQNjZmcFD2lkeFByaWNlQXNzZXRJZAQJcHJBc3NldElkCQDZBAEFDHByQXNzZXRJZFN0cgQLYW10QXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNjZmcFDmlkeEFtdEFzc2V0RGNtBA1wcmljZUFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDY2ZnBRBpZHhQcmljZUFzc2V0RGNtBApwb29sU3RhdHVzCQCRAwIFA2NmZwUNaWR4UG9vbFN0YXR1cwQNcG9vbExQQmFsYW5jZQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQlscEFzc2V0SWQJAKwCAgkArAICAgZBc3NldCAJANgEAQUJbHBBc3NldElkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQMYW1CYWxhbmNlUmF3CQENZ2V0QWNjQmFsYW5jZQEFDGFtQXNzZXRJZFN0cgQMcHJCYWxhbmNlUmF3CQENZ2V0QWNjQmFsYW5jZQEFDHByQXNzZXRJZFN0cgQPYW1CYWxhbmNlUmF3WDE4CQEFdG9YMTgCBQxhbUJhbGFuY2VSYXcFC2FtdEFzc2V0RGNtBA9wckJhbGFuY2VSYXdYMTgJAQV0b1gxOAIFDHByQmFsYW5jZVJhdwUNcHJpY2VBc3NldERjbQQLY3VyUHJpY2VYMTgDCQAAAgUNcG9vbExQQmFsYW5jZQAABQp6ZXJvQmlnSW50CQEPY2FsY1ByaWNlQmlnSW50AgUPcHJCYWxhbmNlUmF3WDE4BQ9hbUJhbGFuY2VSYXdYMTgED2luUHJBc3NldEFtdFgxOAkBBXRvWDE4AgUMaW5QckFzc2V0QW10BQ1wcmljZUFzc2V0RGNtBA9pbkFtQXNzZXRBbXRYMTgJALwCAwUPaW5QckFzc2V0QW10WDE4BQdzY2FsZTE4BQtjdXJQcmljZVgxOAQMaW5BbUFzc2V0QW10CQEHZnJvbVgxOAIFD2luQW1Bc3NldEFtdFgxOAULYW10QXNzZXREY20EBmVzdFB1dAkBFGVzdGltYXRlUHV0T3BlcmF0aW9uCQIAAKDCHgUMaW5BbUFzc2V0QW10BQlhbUFzc2V0SWQFDGluUHJBc3NldEFtdAUJcHJBc3NldElkAgAGBwQJY2FsY0xwQW10CAUGZXN0UHV0Al8xBAxjdXJQcmljZUNhbGMIBQZlc3RQdXQCXzMECWFtQmFsYW5jZQgFBmVzdFB1dAJfNAQJcHJCYWxhbmNlCAUGZXN0UHV0Al81BApscEVtaXNzaW9uCAUGZXN0UHV0Al82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQljYWxjTHBBbXQJAMwIAgkApAMBCQEHZnJvbVgxOAIFC2N1clByaWNlWDE4BQZzY2FsZTgJAMwIAgkApAMBBQlhbUJhbGFuY2UJAMwIAgkApAMBBQlwckJhbGFuY2UJAMwIAgkApAMBBQpscEVtaXNzaW9uCQDMCAIFCnBvb2xTdGF0dXMJAMwIAgkApAMBBQxpbkFtQXNzZXRBbXQJAMwIAgkApAMBBQxpblByQXNzZXRBbXQFA25pbAUDU0VQAWkBE2V2YWx1YXRlR2V0UkVBRE9OTFkCEHBheW1lbnRMcEFzc2V0SWQMcGF5bWVudExwQW10BANyZXMJARRlc3RpbWF0ZUdldE9wZXJhdGlvbgQCAAUQcGF5bWVudExwQXNzZXRJZAUMcGF5bWVudExwQW10BQR0aGlzBAhvdXRBbUFtdAgFA3JlcwJfMQQIb3V0UHJBbXQIBQNyZXMCXzIECWFtQmFsYW5jZQgFA3JlcwJfNQQJcHJCYWxhbmNlCAUDcmVzAl82BApscEVtaXNzaW9uCAUDcmVzAl83BAhjdXJQcmljZQgFA3JlcwJfOAQKcG9vbFN0YXR1cwkBDXBhcnNlSW50VmFsdWUBCAUDcmVzAl85CQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUIb3V0QW1BbXQJAMwIAgkApAMBBQhvdXRQckFtdAkAzAgCCQCkAwEFCWFtQmFsYW5jZQkAzAgCCQCkAwEFCXByQmFsYW5jZQkAzAgCCQCkAwEFCmxwRW1pc3Npb24JAMwIAgkApgMBBQhjdXJQcmljZQkAzAgCCQCkAwEFCnBvb2xTdGF0dXMFA25pbAUDU0VQAQJ0eAEGdmVyaWZ5AAQPdGFyZ2V0UHVibGljS2V5BAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDAFAnBrAwkAAQIFByRtYXRjaDACBFVuaXQIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQHJG1hdGNoMAUCdHgDCQABAgUHJG1hdGNoMAIFT3JkZXIEBW9yZGVyBQckbWF0Y2gwBAptYXRjaGVyUHViCQETZ2V0TWF0Y2hlclB1Yk9yRmFpbAAEDSR0MDY5NDg1Njk2MDIDCQETc2tpcE9yZGVyVmFsaWRhdGlvbgAJAJQKAgYCAAkBG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZAEFBW9yZGVyBApvcmRlclZhbGlkCAUNJHQwNjk0ODU2OTYwMgJfMQQOb3JkZXJWYWxpZEluZm8IBQ0kdDA2OTQ4NTY5NjAyAl8yBAtzZW5kZXJWYWxpZAkA9AMDCAUFb3JkZXIJYm9keUJ5dGVzCQCRAwIIBQVvcmRlcgZwcm9vZnMAAAgFBW9yZGVyD3NlbmRlclB1YmxpY0tleQQMbWF0Y2hlclZhbGlkCQD0AwMIBQVvcmRlcglib2R5Qnl0ZXMJAJEDAggFBW9yZGVyBnByb29mcwABBQptYXRjaGVyUHViAwMDBQpvcmRlclZhbGlkBQtzZW5kZXJWYWxpZAcFDG1hdGNoZXJWYWxpZAcGCQEPdGhyb3dPcmRlckVycm9yBAUKb3JkZXJWYWxpZAUOb3JkZXJWYWxpZEluZm8FC3NlbmRlclZhbGlkBQxtYXRjaGVyVmFsaWQDCQABAgUHJG1hdGNoMAIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAXMFByRtYXRjaDADCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXkGBAduZXdIYXNoCQD2AwEJAQV2YWx1ZQEIBQFzBnNjcmlwdAQLYWxsb3dlZEhhc2gJANsEAQkBBXZhbHVlAQkAnQgCBQ9mYWN0b3J5Q29udHJhY3QJARZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoAAQLY3VycmVudEhhc2gJAPEHAQUEdGhpcwMJAAACBQthbGxvd2VkSGFzaAUHbmV3SGFzaAkBAiE9AgULY3VycmVudEhhc2gFB25ld0hhc2gHCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXkke20V", "height": 2986007, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FsiYSLSi2LwLFrvsx8cKu4b35Gx4Zz5UowqZA9H4x5xE Next: HGZ2CAgzanPgqCjsWFqeBrkAaDF3cEErpndPzLAFjDr4 Diff:
OldNewDifferences
489489 then {
490490 let cV = (cj - co)
491491 if ((cV == cV))
492- then if ((0 > cV))
493- then cg(ap, -(cV), cP, addressFromStringValue(cO))
494- else cq(ap, cV, cP, addressFromStringValue(cO), cr, addressFromStringValue(cQ))
492+ then if ((cV == 0))
493+ then nil
494+ else if ((0 > cV))
495+ then cg(ap, -(cV), cP, addressFromStringValue(cO))
496+ else cq(ap, cV, cP, addressFromStringValue(cO), cr, addressFromStringValue(cQ))
495497 else throw("Strict value is not equal to itself.")
496498 }
497499 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (E,F) = fraction(E, d, F)
6666
6767
6868 func H (I,J) = toInt(fraction(I, toBigInt(J), d))
6969
7070
7171 func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
7272
7373
7474 func M (N,O,P) = fraction(N, O, P)
7575
7676
7777 func Q (I) = if ((0 > I))
7878 then -(I)
7979 else I
8080
8181
8282 func R (I) = if ((e > I))
8383 then -(I)
8484 else I
8585
8686
8787 func S () = "%s__swapContract"
8888
8989
9090 func T () = "%s__factoryContract"
9191
9292
9393 func U () = "%s__managerPublicKey"
9494
9595
9696 func V () = "%s__managerVaultAddress"
9797
9898
9999 func W () = "%s%s__price__last"
100100
101101
102102 func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], j)
103103
104104
105105 func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
106106
107107
108108 func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
109109
110110
111111 func ae () = "%s__amountAsset"
112112
113113
114114 func af () = "%s__priceAsset"
115115
116116
117117 let ag = "%s__fee"
118118
119119 let ah = fraction(10, b, 10000)
120120
121121 let ai = valueOrElse(getInteger(this, ag), ah)
122122
123123 let aj = makeString(["%s", "kLp"], j)
124124
125125 let ak = makeString(["%s", "kLpRefreshedHeight"], j)
126126
127127 let al = makeString(["%s", "refreshKLpDelay"], j)
128128
129129 let am = 30
130130
131131 let an = valueOrElse(getInteger(this, al), am)
132132
133133 func ao (ap) = makeString(["%s%s", "stakedBalance", ap], j)
134134
135135
136136 func aq (ap) = makeString(["%s%s", "shareAssetBalance", ap], j)
137137
138138
139139 func ar (ap) = valueOrElse(getInteger(this, ao(ap)), 0)
140140
141141
142142 func as (ap) = valueOrElse(getInteger(this, aq(ap)), 0)
143143
144144
145145 func at () = "%s__factoryConfig"
146146
147147
148148 func au () = "%s%s__matcher__publicKey"
149149
150150
151151 func av (aw) = (("%s%s%s__" + aw) + "__mappings__poolContract2LpAsset")
152152
153153
154154 func ax (ay,az) = (((("%d%d%s__" + ay) + "__") + az) + "__config")
155155
156156
157157 func aA (aB) = ("%s%s%s__mappings__baseAsset2internalId__" + aB)
158158
159159
160160 func aC () = "%s__shutdown"
161161
162162
163163 func aD (aE) = ("%s%s__poolWeight__" + aE)
164164
165165
166166 func aF () = "%s__allowedLpScriptHash"
167167
168168
169169 let aG = "%s__feeCollectorAddress"
170170
171171 func aH (aI) = ("%s%s__skipOrderValidation__" + aI)
172172
173173
174174 func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
175175
176176
177177 func aO (aP) = {
178178 let aQ = addressFromString(aP)
179179 if ($isInstanceOf(aQ, "Address"))
180180 then {
181181 let aR = aQ
182182 aR
183183 }
184184 else this
185185 }
186186
187187
188188 func aS () = {
189189 let aT = {
190190 let aQ = getString(T())
191191 if ($isInstanceOf(aQ, "String"))
192192 then {
193193 let aU = aQ
194194 aO(aU)
195195 }
196196 else this
197197 }
198198 let aQ = getString(aT, V())
199199 if ($isInstanceOf(aQ, "String"))
200200 then {
201201 let aV = aQ
202202 aO(aV)
203203 }
204204 else this
205205 }
206206
207207
208208 func aW (aX,aY) = valueOrErrorMessage(getString(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " is not defined"], ""))
209209
210210
211211 func aZ (aX,aY) = valueOrErrorMessage(getInteger(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " is not defined"], ""))
212212
213213
214214 func ba (bb) = throw(makeString(["lp.ride:", bb], " "))
215215
216216
217217 func bc (bb) = makeString(["lp.ride:", bb], " ")
218218
219219
220220 let bd = addressFromStringValue(aW(this, T()))
221221
222222 let be = addressFromStringValue(aW(bd, aG))
223223
224224 let bf = {
225225 let bg = invoke(bd, "getInFeeREADONLY", [toString(this)], nil)
226226 if ($isInstanceOf(bg, "Int"))
227227 then bg
228228 else throw(($getType(bg) + " couldn't be cast to Int"))
229229 }
230230
231231 let bh = {
232232 let bg = invoke(bd, "getOutFeeREADONLY", [toString(this)], nil)
233233 if ($isInstanceOf(bg, "Int"))
234234 then bg
235235 else throw(($getType(bg) + " couldn't be cast to Int"))
236236 }
237237
238238 func bi (aX) = makeString(["%s%s", "whitelisted", toString(aX)], j)
239239
240240
241241 func bj (aX) = valueOrElse(getBoolean(bd, bi(aX)), false)
242242
243243
244244 func bk () = valueOrElse(getBoolean(bd, aC()), false)
245245
246246
247247 func bl () = fromBase58String(aW(bd, au()))
248248
249249
250250 func bm () = {
251251 let bn = aW(this, ae())
252252 let bo = aW(this, af())
253253 let az = aZ(bd, aA(bo))
254254 let ay = aZ(bd, aA(bn))
255255 split(aW(bd, ax(toString(ay), toString(az))), j)
256256 }
257257
258258
259259 func bp (bq) = if ((bq == i))
260260 then unit
261261 else fromBase58String(bq)
262262
263263
264264 func br (bq) = if ((bq == unit))
265265 then i
266266 else toBase58String(value(bq))
267267
268268
269269 func bs (bt) = $Tuple7(addressFromStringValue(bt[o]), parseIntValue(bt[p]), fromBase58String(bt[q]), bp(bt[r]), bp(bt[s]), parseIntValue(bt[t]), parseIntValue(bt[u]))
270270
271271
272272 let bu = bs(bm())
273273
274274 let bv = bu
275275
276276 let bw = bv._1
277277
278278 let bx = bv._2
279279
280280 let by = bv._3
281281
282282 let bz = bv._4
283283
284284 let bA = bv._5
285285
286286 let bB = bv._6
287287
288288 let bC = bv._7
289289
290290 func bD () = split(aW(bd, at()), j)
291291
292292
293293 let bE = valueOrErrorMessage(addressFromString(bD()[B]), "incorrect staking address")
294294
295295 let bF = valueOrErrorMessage(addressFromString(bD()[C]), "incorrect staking address")
296296
297297 func bG (bH,bI,bJ,bK,bL,bM,bN,bO,bP,bQ) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bH), toString(bI), toString(bJ), toString(bK), toString(bL), toString(bM), toString(bN), toString(bO), toString(bP), toString(bQ)], j)
298298
299299
300300 func bR (bS,bT,bU,bK,bN,bO) = makeString(["%d%d%d%d%d%d", toString(bS), toString(bT), toString(bU), toString(bK), toString(bN), toString(bO)], j)
301301
302302
303303 func bV (ap) = {
304304 let bW = if ((ap == "WAVES"))
305305 then wavesBalance(this).available
306306 else assetBalance(this, fromBase58String(ap))
307307 let bX = ((bW + ar(ap)) - as(ap))
308308 max([0, bX])
309309 }
310310
311311
312312 func bY (bZ,ca) = fraction(bZ, d, ca)
313313
314314
315315 func cb (bZ,ca,L) = fraction(bZ, d, ca, L)
316316
317317
318318 func cc (cd) = {
319319 let ce = invoke(cd, "getRate", nil, nil)
320320 if ((ce == ce))
321321 then {
322322 let aQ = ce
323323 if ($isInstanceOf(aQ, "Int"))
324324 then {
325325 let cf = aQ
326326 cf
327327 }
328328 else ba("proxy.getRate() unexpected value")
329329 }
330330 else throw("Strict value is not equal to itself.")
331331 }
332332
333333
334334 func cg (ap,ch,ci,cd) = {
335335 let cj = ar(ap)
336336 if ((cj == cj))
337337 then {
338338 let ck = as(ci)
339339 if ((ck == ck))
340340 then {
341341 let cl = bp(ap)
342342 if ((ch > 0))
343343 then {
344344 let cm = invoke(cd, "deposit", nil, [AttachedPayment(cl, ch)])
345345 if ((cm == cm))
346346 then {
347347 let aQ = cm
348348 if ($isInstanceOf(aQ, "Int"))
349349 then {
350350 let cn = aQ
351351 let co = (cj + ch)
352352 let cp = (ck + cn)
353353 [IntegerEntry(ao(ap), co), IntegerEntry(aq(ci), cp)]
354354 }
355355 else nil
356356 }
357357 else throw("Strict value is not equal to itself.")
358358 }
359359 else nil
360360 }
361361 else throw("Strict value is not equal to itself.")
362362 }
363363 else throw("Strict value is not equal to itself.")
364364 }
365365
366366
367367 func cq (ap,ch,ci,cd,cr,cs) = {
368368 let cj = ar(ap)
369369 if ((cj == cj))
370370 then {
371371 let ck = as(ci)
372372 if ((ck == ck))
373373 then {
374374 let ct = cc(cd)
375375 if ((ct == ct))
376376 then {
377377 let cu = fraction(cr, cj, ck)
378378 let cv = bp(ci)
379379 let cw = fraction(cr, ch, cu)
380380 let cx = fraction(cr, ch, ct)
381381 let cy = max([0, (cw - cx)])
382382 if ((cx > 0))
383383 then {
384384 let cz = invoke(cd, "withdraw", nil, [AttachedPayment(cv, cx)])
385385 if ((cz == cz))
386386 then {
387387 let aQ = cz
388388 if ($isInstanceOf(aQ, "Int"))
389389 then {
390390 let cA = aQ
391391 let co = (cj - cA)
392392 let cp = ((ck - cx) - cy)
393393 [IntegerEntry(ao(ap), co), IntegerEntry(aq(ci), cp), ScriptTransfer(cs, cy, bp(ci))]
394394 }
395395 else nil
396396 }
397397 else throw("Strict value is not equal to itself.")
398398 }
399399 else nil
400400 }
401401 else throw("Strict value is not equal to itself.")
402402 }
403403 else throw("Strict value is not equal to itself.")
404404 }
405405 else throw("Strict value is not equal to itself.")
406406 }
407407
408408
409409 func cB (ap) = {
410410 let aQ = invoke(bd, "getPoolLeaseConfigREADONLY", [toString(this), ap], nil)
411411 if ($isInstanceOf(aQ, "(Boolean, Int, Int, String, String, Int, String)"))
412412 then {
413413 let aR = aQ
414414 aR
415415 }
416416 else ba((("[" + ap) + "] getLeaseProxyConfig() error"))
417417 }
418418
419419
420420 func cC (cD,ap,ci,cE,cd,cr,cs) = {
421421 let ck = as(ci)
422422 if ((ck == ck))
423423 then {
424424 let cj = if ((ck != 0))
425425 then ar(ap)
426426 else 0
427427 if ((cj == cj))
428428 then {
429429 let cF = max([0, (bV(ap) - cE)])
430430 let cG = fraction(cD, cF, 100)
431431 let cH = (cj - cG)
432432 if ((cH == 0))
433433 then nil
434434 else if ((0 > cH))
435435 then {
436436 let cI = -(cH)
437437 cg(ap, cI, ci, cd)
438438 }
439439 else {
440440 let cJ = cH
441441 cq(ap, cJ, ci, cd, cr, cs)
442442 }
443443 }
444444 else throw("Strict value is not equal to itself.")
445445 }
446446 else throw("Strict value is not equal to itself.")
447447 }
448448
449449
450450 func cK (ap) = {
451451 let cL = cB(ap)
452452 let cM = cL._1
453453 let cN = cL._2
454454 let cE = cL._3
455455 let cO = cL._4
456456 let cP = cL._5
457457 let cr = cL._6
458458 let cQ = cL._7
459459 if (cM)
460460 then cC(cN, ap, cP, cE, addressFromStringValue(cO), cr, addressFromStringValue(cQ))
461461 else nil
462462 }
463463
464464
465465 func cR (ap,cS) = {
466466 let cT = cB(ap)
467467 let cM = cT._1
468468 let cN = cT._2
469469 let cE = cT._3
470470 let cO = cT._4
471471 let cP = cT._5
472472 let cr = cT._6
473473 let cQ = cT._7
474474 if (cM)
475475 then {
476476 let ck = as(cP)
477477 if ((ck == ck))
478478 then {
479479 let cj = if ((ck != 0))
480480 then ar(ap)
481481 else 0
482482 if ((cj == cj))
483483 then {
484484 let cU = max([0, ((bV(ap) - cS) - cE)])
485485 if ((cU == cU))
486486 then {
487487 let co = fraction(cN, cU, 100)
488488 if ((co == co))
489489 then {
490490 let cV = (cj - co)
491491 if ((cV == cV))
492- then if ((0 > cV))
493- then cg(ap, -(cV), cP, addressFromStringValue(cO))
494- else cq(ap, cV, cP, addressFromStringValue(cO), cr, addressFromStringValue(cQ))
492+ then if ((cV == 0))
493+ then nil
494+ else if ((0 > cV))
495+ then cg(ap, -(cV), cP, addressFromStringValue(cO))
496+ else cq(ap, cV, cP, addressFromStringValue(cO), cr, addressFromStringValue(cQ))
495497 else throw("Strict value is not equal to itself.")
496498 }
497499 else throw("Strict value is not equal to itself.")
498500 }
499501 else throw("Strict value is not equal to itself.")
500502 }
501503 else throw("Strict value is not equal to itself.")
502504 }
503505 else throw("Strict value is not equal to itself.")
504506 }
505507 else nil
506508 }
507509
508510
509511 func cW (cX,cY) = {
510512 let cZ = cR(aW(this, ae()), cX)
511513 let da = cR(aW(this, af()), cY)
512514 (cZ ++ da)
513515 }
514516
515517
516518 func db (dc,dd,de,df) = {
517519 let dg = D(de, dc)
518520 let dh = D(df, dd)
519521 bY(dh, dg)
520522 }
521523
522524
523525 func di (de,df,dj) = {
524526 let dk = bm()
525527 let dl = parseIntValue(dk[t])
526528 let dm = parseIntValue(dk[u])
527529 let dn = db(dl, dm, de, df)
528530 let ca = D(de, dl)
529531 let bZ = D(df, dm)
530532 let do = D(dj, b)
531533 let dp = bY(ca, do)
532534 let dq = bY(bZ, do)
533535 [dn, dp, dq]
534536 }
535537
536538
537539 func dr (de,df,dj) = {
538540 let ds = di(de, df, dj)
539541 [H(ds[0], b), H(ds[1], b), H(ds[2], b)]
540542 }
541543
542544
543545 func dt (du,dv,dw,ab) = {
544546 let dk = bm()
545547 let dx = dk[q]
546548 let dy = dk[r]
547549 let dz = dk[s]
548550 let dc = parseIntValue(dk[t])
549551 let dd = parseIntValue(dk[u])
550552 let dA = dk[p]
551553 let dB = valueOrErrorMessage(assetInfo(fromBase58String(dx)), (("Asset " + dx) + " doesn't exist")).quantity
552554 if ((dx != dv))
553555 then throw("Invalid asset passed.")
554556 else {
555557 let dC = bV(dy)
556558 let dD = D(dC, dc)
557559 let dE = bV(dz)
558560 let dF = D(dE, dd)
559561 let dG = bY(dF, dD)
560562 let dH = H(dG, b)
561563 let dI = D(dw, b)
562564 let dJ = D(dB, b)
563565 let dK = fraction(dD, dI, dJ)
564566 let dL = fraction(dF, dI, dJ)
565567 let dM = K(dK, dc, FLOOR)
566568 let dN = K(dL, dd, FLOOR)
567569 let dO = if ((du == ""))
568570 then nil
569571 else [ScriptTransfer(ab, dM, if ((dy == "WAVES"))
570572 then unit
571573 else fromBase58String(dy)), ScriptTransfer(ab, dN, if ((dz == "WAVES"))
572574 then unit
573575 else fromBase58String(dz)), StringEntry(ad(toString(ab), du), bR(dM, dN, dw, dH, height, lastBlock.timestamp)), IntegerEntry(W(), dH), IntegerEntry(X(height, lastBlock.timestamp), dH)]
574576 $Tuple10(dM, dN, dy, dz, dC, dE, dB, dG, dA, dO)
575577 }
576578 }
577579
578580
579581 func dP (du,dQ,dR,dS,dT,dU,ab,dV,dW) = {
580582 let dk = bm()
581583 let dx = fromBase58String(dk[q])
582584 let dX = dk[r]
583585 let dY = dk[s]
584586 let dZ = dk[v]
585587 let ea = dk[w]
586588 let dl = parseIntValue(dk[t])
587589 let dm = parseIntValue(dk[u])
588590 let dA = dk[p]
589591 let dB = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
590592 let eb = toBase58String(valueOrElse(dS, fromBase58String("WAVES")))
591593 let ec = toBase58String(valueOrElse(dU, fromBase58String("WAVES")))
592594 if (if ((dX != eb))
593595 then true
594596 else (dY != ec))
595597 then throw("Invalid amt or price asset passed.")
596598 else {
597599 let dC = if (dV)
598600 then bV(dX)
599601 else (bV(dX) - dR)
600602 let dE = if (dV)
601603 then bV(dY)
602604 else (bV(dY) - dT)
603605 let ed = D(dR, dl)
604606 let ee = D(dT, dm)
605607 let ef = bY(ee, ed)
606608 let dD = D(dC, dl)
607609 let dF = D(dE, dm)
608610 let eg = if ((dB == 0))
609611 then {
610612 let dG = e
611613 let eh = e
612614 let do = pow((ed * ee), 0, toBigInt(5), 1, 0, DOWN)
613615 $Tuple5(H(do, b), H(ed, dl), H(ee, dm), bY((dF + ee), (dD + ed)), eh)
614616 }
615617 else {
616618 let dG = bY(dF, dD)
617619 let eh = fraction(R((dG - ef)), d, dG)
618620 let ei = D(dQ, b)
619621 if (if ((dG != e))
620622 then (eh > ei)
621623 else false)
622624 then throw(((("Price slippage " + toString(eh)) + " exceeded the passed limit of ") + toString(ei)))
623625 else {
624626 let dJ = D(dB, b)
625627 let ej = fraction(ed, cb(dF, dD, CEILING), d, CEILING)
626628 let ek = fraction(ee, d, cb(dF, dD, FLOOR), CEILING)
627629 let el = if ((ej > ee))
628630 then $Tuple2(ek, ee)
629631 else $Tuple2(ed, ej)
630632 let em = el._1
631633 let en = el._2
632634 let do = fraction(dJ, en, dF, FLOOR)
633635 $Tuple5(K(do, b, FLOOR), K(em, dl, CEILING), K(en, dm, CEILING), dG, eh)
634636 }
635637 }
636638 let eo = eg._1
637639 let ep = eg._2
638640 let eq = eg._3
639641 let dH = H(eg._4, b)
640642 let er = H(eg._5, b)
641643 if ((0 >= eo))
642644 then throw("Invalid calculations. LP calculated is less than zero.")
643645 else {
644646 let es = if (!(dW))
645647 then 0
646648 else eo
647649 let et = (dR - ep)
648650 let eu = (dT - eq)
649651 let ev = [IntegerEntry(W(), dH), IntegerEntry(X(height, lastBlock.timestamp), dH), StringEntry(aa(ab, du), bG(ep, eq, es, dH, dQ, er, height, lastBlock.timestamp, et, eu))]
650652 $Tuple13(eo, es, dH, dC, dE, dB, dx, dA, ev, et, eu, dS, dU)
651653 }
652654 }
653655 }
654656
655657
656658 func ew (ex,ey,dB) = {
657659 let ez = G(ex, toBigInt(bB))
658660 let eA = G(ey, toBigInt(bC))
659661 let eB = fraction(pow((ez * eA), 0, toBigInt(5), 1, 18, DOWN), g, dB)
660662 if ((dB == f))
661663 then f
662664 else eB
663665 }
664666
665667
666668 func eC (eD,eE,eF) = {
667669 let eG = (toBigInt(bV(br(bz))) - eD)
668670 let eH = (toBigInt(bV(br(bA))) - eE)
669671 let eI = (toBigInt(value(assetInfo(by)).quantity) - eF)
670672 let eJ = ew(eG, eH, eI)
671673 eJ
672674 }
673675
674676
675677 func eK (eL,eM,eF) = {
676678 let eG = (bV(br(bz)) + eL)
677679 let eH = (bV(br(bA)) + eM)
678680 let eI = (value(assetInfo(by)).quantity + eF)
679681 let eB = ew(toBigInt(eG), toBigInt(eH), toBigInt(eI))
680682 let eN = [IntegerEntry(ak, height), StringEntry(aj, toString(eB))]
681683 $Tuple2(eN, eB)
682684 }
683685
684686
685687 func eO () = valueOrElse(getBoolean(bd, aH(toString(this))), false)
686688
687689
688690 func eP (eQ,eB) = if ((eB >= eQ))
689691 then true
690692 else ba(makeString(["updated KLp lower than current KLp", toString(eQ), toString(eB)], " "))
691693
692694
693695 func eR (eS) = {
694696 let eG = bV(br(bz))
695697 let eH = bV(br(bA))
696698 let eT = eS.amount
697699 let eU = fraction(eS.amount, eS.price, b, FLOOR)
698700 let eV = if ((eS.orderType == Buy))
699701 then $Tuple2(eT, -(eU))
700702 else $Tuple2(-(eT), eU)
701703 let eL = eV._1
702704 let eM = eV._2
703705 if (if (if (bk())
704706 then true
705707 else (bx == m))
706708 then true
707709 else (bx == n))
708710 then throw("Exchange operations disabled")
709711 else if (if ((eS.assetPair.amountAsset != bz))
710712 then true
711713 else (eS.assetPair.priceAsset != bA))
712714 then throw("Wrong order assets.")
713715 else {
714716 let eW = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
715717 let eX = eK(eL, eM, 0)
716718 let eY = eX._1
717719 let eZ = eX._2
718720 let fa = (eZ >= eW)
719721 let fb = makeString(["kLp=", toString(eW), " kLpNew=", toString(eZ), " amountAssetBalance=", toString(eG), " priceAssetBalance=", toString(eH), " amountAssetBalanceDelta=", toString(eL), " priceAssetBalanceDelta=", toString(eM), " height=", toString(height)], "")
720722 $Tuple2(fa, fb)
721723 }
722724 }
723725
724726
725727 func fc (fd) = if ((size(fd.payments) != 1))
726728 then throw("exactly 1 payment is expected")
727729 else {
728730 let fe = value(fd.payments[0])
729731 let dv = value(fe.assetId)
730732 let ff = fe.amount
731733 let eg = dt(toBase58String(fd.transactionId), toBase58String(dv), ff, fd.caller)
732734 let dM = eg._1
733735 let dN = eg._2
734736 let dO = eg._10
735737 let fg = if (!(bj(fd.caller)))
736738 then if (bk())
737739 then true
738740 else (bx == n)
739741 else false
740742 if (fg)
741743 then throw(("Get operation is blocked by admin. Status = " + toString(bx)))
742744 else $Tuple5(dM, dN, ff, dv, dO)
743745 }
744746
745747
746748 func fh (fd,dQ,dW) = if ((size(fd.payments) != 2))
747749 then throw("exactly 2 payments are expected")
748750 else {
749751 let fi = value(fd.payments[0])
750752 let fj = value(fd.payments[1])
751753 let fk = dP(toBase58String(fd.transactionId), dQ, fi.amount, fi.assetId, fj.amount, fj.assetId, toString(fd.caller), false, dW)
752754 let fl = if (!(bj(fd.caller)))
753755 then if (if (bk())
754756 then true
755757 else (bx == l))
756758 then true
757759 else (bx == n)
758760 else false
759761 if (fl)
760762 then throw(("Put operation is blocked by admin. Status = " + toString(bx)))
761763 else fk
762764 }
763765
764766
765767 func fm (ch) = {
766768 let fn = invoke(bd, "emit", [ch], nil)
767769 if ((fn == fn))
768770 then {
769771 let fo = {
770772 let aQ = fn
771773 if ($isInstanceOf(aQ, "Address"))
772774 then {
773775 let fp = aQ
774776 invoke(fp, "emit", [ch], nil)
775777 }
776778 else unit
777779 }
778780 if ((fo == fo))
779781 then ch
780782 else throw("Strict value is not equal to itself.")
781783 }
782784 else throw("Strict value is not equal to itself.")
783785 }
784786
785787
786788 func fq (ch,ai) = {
787789 let fr = if ((ai == 0))
788790 then 0
789791 else fraction(ch, ai, b)
790792 $Tuple2((ch - fr), fr)
791793 }
792794
793795
794796 func fs (ft,fu,ab,ac) = {
795797 let fv = (ac == unit)
796798 let fw = bV(br(bz))
797799 let fx = bV(br(bA))
798800 let fy = if ((fu == bz))
799801 then true
800802 else if ((fu == bA))
801803 then false
802804 else ba("invalid asset")
803805 let fz = if (fv)
804806 then $Tuple2(fw, fx)
805807 else if (fy)
806808 then $Tuple2((fw - ft), fx)
807809 else $Tuple2(fw, (fx - ft))
808810 let fA = fz._1
809811 let fB = fz._2
810812 let fC = if (fy)
811813 then $Tuple2(ft, 0)
812814 else $Tuple2(0, ft)
813815 let fD = fC._1
814816 let fE = fC._2
815817 let eT = fq(fD, bf)._1
816818 let eU = fq(fE, bf)._1
817819 let fF = fq(ft, bf)
818820 let fG = fF._1
819821 let fr = fF._2
820822 let fH = (fA + eT)
821823 let fI = (fB + eU)
822824 let fJ = bY(D(fI, bC), D(fH, bB))
823825 let fK = H(fJ, b)
824826 let fL = if (fy)
825827 then fA
826828 else fB
827829 let fM = toBigInt(fL)
828830 let fN = toBigInt(valueOrErrorMessage(assetInfo(by), (("asset " + toBase58String(by)) + " doesn't exist")).quantity)
829831 let fO = if ((fN > f))
830832 then true
831833 else ba("initial deposit requires all coins")
832834 if ((fO == fO))
833835 then {
834836 let fP = toBigInt(fG)
835837 let fQ = max([0, toInt(((fN * (sqrtBigInt((d + ((fP * d) / fM)), 18, 18, DOWN) - d)) / d))])
836838 let ev = if (fv)
837839 then nil
838840 else [IntegerEntry(W(), fK), IntegerEntry(X(height, lastBlock.timestamp), fK), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bG(fD, fE, fQ, fK, 0, 0, height, lastBlock.timestamp, 0, 0))]
839841 let fR = bY(D(fB, bC), D(fA, bB))
840842 let fS = H(fR, b)
841843 let fT = {
842844 let fU = if (fy)
843845 then $Tuple2(fD, fA)
844846 else $Tuple2(fE, fB)
845847 let ch = fU._1
846848 let fV = fU._2
847849 let fW = toInt(fraction(fN, toBigInt((ch / 2)), toBigInt(fV)))
848850 fraction((fQ - fW), b, fW)
849851 }
850852 $Tuple5(fQ, ev, fr, fT, fy)
851853 }
852854 else throw("Strict value is not equal to itself.")
853855 }
854856
855857
856858 func fX (fY,fG,fu,ab,ac) = {
857859 let fv = (ac == unit)
858860 let dk = bm()
859861 let dl = parseIntValue(dk[t])
860862 let dm = parseIntValue(dk[u])
861863 let fZ = [if ((fu == by))
862864 then true
863865 else ba("invalid lp asset")]
864866 if ((fZ == fZ))
865867 then {
866868 let ga = if ((fY == bz))
867869 then true
868870 else if ((fY == bA))
869871 then false
870872 else ba("invalid asset")
871873 let gb = if (ga)
872874 then toBigInt(bV(br(bz)))
873875 else toBigInt(bV(br(bA)))
874876 let gc = if (ga)
875877 then dl
876878 else dm
877879 let gd = bV(br(bz))
878880 let ge = bV(br(bA))
879881 let gf = if (ga)
880882 then gd
881883 else ge
882884 let gg = toBigInt(gf)
883885 let fN = toBigInt(valueOrErrorMessage(assetInfo(by), (("asset " + toBase58String(by)) + " doesn't exist")).quantity)
884886 let gh = toBigInt(fG)
885887 let gi = max([0, toInt(((gb * (d - pow((d - ((gh * d) / fN)), 18, h, 0, 18, DOWN))) / d))])
886888 let gj = fq(gi, bh)
887889 let gk = gj._1
888890 let fr = gj._2
889891 let gl = if (ga)
890892 then $Tuple4(gk, 0, (gd - gi), ge)
891893 else $Tuple4(0, gk, gd, (ge - gi))
892894 let gm = gl._1
893895 let gn = gl._2
894896 let go = gl._3
895897 let gp = gl._4
896898 let fJ = bY(D(gp, bC), D(go, bB))
897899 let fK = H(fJ, b)
898900 let ev = if (fv)
899901 then nil
900902 else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bR(gm, gn, fG, fK, height, lastBlock.timestamp)), IntegerEntry(W(), fK), IntegerEntry(X(height, lastBlock.timestamp), fK)]
901903 let fR = bY(D(ge, bC), D(gd, bB))
902904 let fS = H(fR, b)
903905 let fT = {
904906 let gq = (toInt(fraction(gb, gh, fN)) * 2)
905907 fraction((gk - gq), b, gq)
906908 }
907909 $Tuple5(gk, ev, fr, fT, ga)
908910 }
909911 else throw("Strict value is not equal to itself.")
910912 }
911913
912914
913915 func gr () = {
914916 let gs = aS()
915917 let aQ = getString(gs, U())
916918 if ($isInstanceOf(aQ, "String"))
917919 then {
918920 let aV = aQ
919921 fromBase58String(aV)
920922 }
921923 else if ($isInstanceOf(aQ, "Unit"))
922924 then unit
923925 else throw("Match error")
924926 }
925927
926928
927929 func gt (fd) = {
928930 let aQ = gr()
929931 if ($isInstanceOf(aQ, "ByteVector"))
930932 then {
931933 let gu = aQ
932934 (fd.callerPublicKey == gu)
933935 }
934936 else if ($isInstanceOf(aQ, "Unit"))
935937 then (fd.caller == this)
936938 else throw("Match error")
937939 }
938940
939941
940942 func gv (fd) = {
941943 let gw = throw("Permission denied")
942944 let aQ = gr()
943945 if ($isInstanceOf(aQ, "ByteVector"))
944946 then {
945947 let gu = aQ
946948 if ((fd.callerPublicKey == gu))
947949 then true
948950 else gw
949951 }
950952 else if ($isInstanceOf(aQ, "Unit"))
951953 then if ((fd.caller == this))
952954 then true
953955 else gw
954956 else throw("Match error")
955957 }
956958
957959
958960 @Callable(fd)
959961 func rebalance () = (cK(aW(this, ae())) ++ cK(aW(this, af())))
960962
961963
962964
963965 @Callable(fd)
964966 func calculateAmountOutForSwapREADONLY (gx,gy,gz) = {
965967 let gA = if ((gy == false))
966968 then {
967969 let gB = aW(this, af())
968970 let gC = aW(this, ae())
969971 $Tuple2(gB, gC)
970972 }
971973 else {
972974 let gB = aW(this, ae())
973975 let gC = aW(this, af())
974976 $Tuple2(gB, gC)
975977 }
976978 let gB = gA._1
977979 let gC = gA._2
978980 let gD = bV(gC)
979981 let gE = bV(gB)
980982 let gF = fraction(gE, gx, (gD + gx))
981983 let gG = (toBigInt(gD) * toBigInt(gE))
982984 let gH = (((toBigInt(bV(gC)) + toBigInt(gx)) + toBigInt(gz)) * (toBigInt(bV(gB)) - toBigInt(gF)))
983985 let gI = if ((gH >= gG))
984986 then true
985987 else throw("new K is fewer error")
986988 if ((gI == gI))
987989 then $Tuple2(nil, gF)
988990 else throw("Strict value is not equal to itself.")
989991 }
990992
991993
992994
993995 @Callable(fd)
994996 func calculateAmountOutForSwapAndSendTokens (gx,gy,gJ,gK,gz) = {
995997 let gL = {
996998 let bg = invoke(bd, "getSwapContractREADONLY", nil, nil)
997999 if ($isInstanceOf(bg, "String"))
9981000 then bg
9991001 else throw(($getType(bg) + " couldn't be cast to String"))
10001002 }
10011003 let gM = {
10021004 let bg = invoke(bd, "isPoolSwapDisabledREADONLY", [toString(this)], nil)
10031005 if ($isInstanceOf(bg, "Boolean"))
10041006 then bg
10051007 else throw(($getType(bg) + " couldn't be cast to Boolean"))
10061008 }
10071009 let gN = if (!(bj(fd.caller)))
10081010 then if (if (bk())
10091011 then true
10101012 else (bx == n))
10111013 then true
10121014 else gM
10131015 else false
10141016 let fZ = [if (if (!(gN))
10151017 then true
10161018 else gt(fd))
10171019 then true
10181020 else ba("swap operation is blocked by admin"), if ((value(fd.payments[0]).amount >= gx))
10191021 then true
10201022 else ba("Wrong amount"), if ((fd.caller == addressFromStringValue(gL)))
10211023 then true
10221024 else ba("Permission denied")]
10231025 if ((fZ == fZ))
10241026 then {
10251027 let fe = value(fd.payments[0])
10261028 let gC = br(fe.assetId)
10271029 let gB = if ((gy == false))
10281030 then aW(this, af())
10291031 else aW(this, ae())
10301032 let gD = ((bV(gC) - value(fd.payments[0]).amount) - gz)
10311033 let gE = bV(gB)
10321034 let gF = fraction(gE, gx, (gD + gx))
10331035 let gG = (toBigInt(gD) * toBigInt(gE))
10341036 let gH = ((toBigInt(bV(gC)) + toBigInt(gz)) * (toBigInt(bV(gB)) - toBigInt(gF)))
10351037 let gI = if ((gH >= gG))
10361038 then true
10371039 else throw("new K is fewer error")
10381040 if ((gI == gI))
10391041 then {
10401042 let gO = if ((gF >= gJ))
10411043 then true
10421044 else throw("Exchange result is fewer coins than expected")
10431045 if ((gO == gO))
10441046 then {
10451047 let eL = if (gy)
10461048 then -(gF)
10471049 else gz
10481050 let eM = if (gy)
10491051 then gz
10501052 else -(gF)
10511053 let gP = eK(eL, eM, 0)._1
10521054 if ((gP == gP))
10531055 then {
10541056 let gQ = cK(gC)
10551057 if ((gQ == gQ))
10561058 then {
10571059 let gR = cR(gB, gF)
10581060 if ((gR == gR))
10591061 then $Tuple2(((gR ++ gQ) ++ [ScriptTransfer(addressFromStringValue(gK), gF, bp(gB))]), gF)
10601062 else throw("Strict value is not equal to itself.")
10611063 }
10621064 else throw("Strict value is not equal to itself.")
10631065 }
10641066 else throw("Strict value is not equal to itself.")
10651067 }
10661068 else throw("Strict value is not equal to itself.")
10671069 }
10681070 else throw("Strict value is not equal to itself.")
10691071 }
10701072 else throw("Strict value is not equal to itself.")
10711073 }
10721074
10731075
10741076
10751077 @Callable(fd)
10761078 func put (dQ,gS) = if ((0 > dQ))
10771079 then throw("Invalid slippageTolerance passed")
10781080 else {
10791081 let fk = fh(fd, dQ, true)
10801082 let es = fk._2
10811083 let dx = fk._7
10821084 let dO = fk._9
10831085 let et = fk._10
10841086 let eu = fk._11
10851087 let gT = fk._12
10861088 let gU = fk._13
10871089 let fi = toBigInt(value(fd.payments[0]).amount)
10881090 let fj = toBigInt(value(fd.payments[1]).amount)
10891091 let eJ = eC(fi, fj, toBigInt(0))
10901092 if ((eJ == eJ))
10911093 then {
10921094 let fn = invoke(bd, "emit", [es], nil)
10931095 if ((fn == fn))
10941096 then {
10951097 let fo = {
10961098 let aQ = fn
10971099 if ($isInstanceOf(aQ, "Address"))
10981100 then {
10991101 let fp = aQ
11001102 invoke(fp, "emit", [es], nil)
11011103 }
11021104 else unit
11031105 }
11041106 if ((fo == fo))
11051107 then {
11061108 let gV = if ((et > 0))
11071109 then invoke(bF, "put", nil, [AttachedPayment(gT, et)])
11081110 else nil
11091111 if ((gV == gV))
11101112 then {
11111113 let gW = if ((eu > 0))
11121114 then invoke(bF, "put", nil, [AttachedPayment(gU, eu)])
11131115 else nil
11141116 if ((gW == gW))
11151117 then {
11161118 let gX = if (gS)
11171119 then {
11181120 let gY = invoke(bE, "stake", nil, [AttachedPayment(dx, es)])
11191121 if ((gY == gY))
11201122 then nil
11211123 else throw("Strict value is not equal to itself.")
11221124 }
11231125 else [ScriptTransfer(fd.caller, es, dx)]
11241126 let gZ = eK(0, 0, 0)
11251127 if ((gZ == gZ))
11261128 then {
11271129 let eB = gZ._2
11281130 let gP = gZ._1
11291131 let ha = eP(eJ, eB)
11301132 if ((ha == ha))
11311133 then {
11321134 let hb = invoke(this, "rebalance", nil, nil)
11331135 if ((hb == hb))
11341136 then ((dO ++ gX) ++ gP)
11351137 else throw("Strict value is not equal to itself.")
11361138 }
11371139 else throw("Strict value is not equal to itself.")
11381140 }
11391141 else throw("Strict value is not equal to itself.")
11401142 }
11411143 else throw("Strict value is not equal to itself.")
11421144 }
11431145 else throw("Strict value is not equal to itself.")
11441146 }
11451147 else throw("Strict value is not equal to itself.")
11461148 }
11471149 else throw("Strict value is not equal to itself.")
11481150 }
11491151 else throw("Strict value is not equal to itself.")
11501152 }
11511153
11521154
11531155
11541156 @Callable(fd)
11551157 func putForFree (hc) = if ((0 > hc))
11561158 then throw("Invalid value passed")
11571159 else {
11581160 let fk = fh(fd, hc, false)
11591161 let dO = fk._9
11601162 let fi = toBigInt(value(fd.payments[0]).amount)
11611163 let fj = toBigInt(value(fd.payments[1]).amount)
11621164 let eJ = eC(fi, fj, toBigInt(0))
11631165 if ((eJ == eJ))
11641166 then {
11651167 let hd = eK(0, 0, 0)
11661168 let gP = hd._1
11671169 let eB = hd._2
11681170 let ha = eP(eJ, eB)
11691171 if ((ha == ha))
11701172 then (dO ++ gP)
11711173 else throw("Strict value is not equal to itself.")
11721174 }
11731175 else throw("Strict value is not equal to itself.")
11741176 }
11751177
11761178
11771179
11781180 @Callable(fd)
11791181 func putOneTkn (he,hf) = {
11801182 let hg = {
11811183 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11821184 if ($isInstanceOf(bg, "Boolean"))
11831185 then bg
11841186 else throw(($getType(bg) + " couldn't be cast to Boolean"))
11851187 }
11861188 let fl = if (!(bj(fd.caller)))
11871189 then if (if (if (bk())
11881190 then true
11891191 else (bx == l))
11901192 then true
11911193 else (bx == n))
11921194 then true
11931195 else hg
11941196 else false
11951197 let fZ = [if (if (!(fl))
11961198 then true
11971199 else gt(fd))
11981200 then true
11991201 else ba("put operation is blocked by admin"), if ((size(fd.payments) == 1))
12001202 then true
12011203 else ba("exactly 1 payment are expected")]
12021204 if ((fZ == fZ))
12031205 then {
12041206 let hh = fd.payments[0]
12051207 let fu = hh.assetId
12061208 let ft = hh.amount
12071209 let eJ = if ((fu == bz))
12081210 then eC(toBigInt(ft), toBigInt(0), toBigInt(0))
12091211 else if ((fu == bA))
12101212 then eC(toBigInt(0), toBigInt(ft), toBigInt(0))
12111213 else ba("payment asset is not supported")
12121214 if ((eJ == eJ))
12131215 then {
12141216 let ab = fd.caller
12151217 let ac = fd.transactionId
12161218 let hi = fs(ft, fu, ab, ac)
12171219 if ((hi == hi))
12181220 then {
12191221 let fy = hi._5
12201222 let hj = hi._4
12211223 let fr = hi._3
12221224 let ev = hi._2
12231225 let hk = hi._1
12241226 let hl = if (if ((he > 0))
12251227 then (he > hk)
12261228 else false)
12271229 then ba(makeString(["amount to receive is less than ", toString(he)], ""))
12281230 else hk
12291231 let fn = fm(hl)
12301232 if ((fn == fn))
12311233 then {
12321234 let gX = if (hf)
12331235 then {
12341236 let hm = invoke(bE, "stake", nil, [AttachedPayment(by, hl)])
12351237 if ((hm == hm))
12361238 then nil
12371239 else throw("Strict value is not equal to itself.")
12381240 }
12391241 else [ScriptTransfer(fd.caller, hl, by)]
12401242 let hn = if ((fr > 0))
12411243 then [ScriptTransfer(be, fr, fu)]
12421244 else nil
12431245 let ho = if ((this == be))
12441246 then $Tuple2(0, 0)
12451247 else if (fy)
12461248 then $Tuple2(-(fr), 0)
12471249 else $Tuple2(0, -(fr))
12481250 let eL = ho._1
12491251 let eM = ho._2
12501252 let hp = eK(eL, eM, 0)
12511253 let gP = hp._1
12521254 let eB = hp._2
12531255 let eW = value(getString(aj))
12541256 let ha = eP(eJ, eB)
12551257 if ((ha == ha))
12561258 then {
12571259 let hb = invoke(this, "rebalance", nil, nil)
12581260 if ((hb == hb))
12591261 then $Tuple2((((ev ++ gX) ++ hn) ++ gP), hl)
12601262 else throw("Strict value is not equal to itself.")
12611263 }
12621264 else throw("Strict value is not equal to itself.")
12631265 }
12641266 else throw("Strict value is not equal to itself.")
12651267 }
12661268 else throw("Strict value is not equal to itself.")
12671269 }
12681270 else throw("Strict value is not equal to itself.")
12691271 }
12701272 else throw("Strict value is not equal to itself.")
12711273 }
12721274
12731275
12741276
12751277 @Callable(fd)
12761278 func putOneTknREADONLY (fu,ft) = {
12771279 let hq = fs(ft, bp(fu), unit, unit)
12781280 let hk = hq._1
12791281 let ev = hq._2
12801282 let fr = hq._3
12811283 let hj = hq._4
12821284 let fy = hq._5
12831285 $Tuple2(nil, $Tuple3(hk, fr, hj))
12841286 }
12851287
12861288
12871289
12881290 @Callable(fd)
12891291 func getOneTkn (hr,he) = {
12901292 let hg = {
12911293 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12921294 if ($isInstanceOf(bg, "Boolean"))
12931295 then bg
12941296 else throw(($getType(bg) + " couldn't be cast to Boolean"))
12951297 }
12961298 let fg = if (!(bj(fd.caller)))
12971299 then if (if (bk())
12981300 then true
12991301 else (bx == n))
13001302 then true
13011303 else hg
13021304 else false
13031305 let fZ = [if (if (!(fg))
13041306 then true
13051307 else gt(fd))
13061308 then true
13071309 else ba("get operation is blocked by admin"), if ((size(fd.payments) == 1))
13081310 then true
13091311 else ba("exactly 1 payment are expected")]
13101312 if ((fZ == fZ))
13111313 then {
13121314 let fY = bp(hr)
13131315 let hh = fd.payments[0]
13141316 let fu = hh.assetId
13151317 let fG = hh.amount
13161318 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
13171319 if ((eJ == eJ))
13181320 then {
13191321 let ab = fd.caller
13201322 let ac = fd.transactionId
13211323 let hs = fX(fY, fG, fu, ab, ac)
13221324 if ((hs == hs))
13231325 then {
13241326 let ga = hs._5
13251327 let hj = hs._4
13261328 let fr = hs._3
13271329 let ev = hs._2
13281330 let ht = hs._1
13291331 let ch = if (if ((he > 0))
13301332 then (he > ht)
13311333 else false)
13321334 then ba(makeString(["amount to receive is less than ", toString(he)], ""))
13331335 else ht
13341336 let hu = invoke(bd, "burn", [fG], [AttachedPayment(fu, fG)])
13351337 if ((hu == hu))
13361338 then {
13371339 let gR = cR(hr, (ch + max([0, fr])))
13381340 let hv = [ScriptTransfer(ab, ch, fY)]
13391341 let hn = if ((fr > 0))
13401342 then [ScriptTransfer(be, fr, fY)]
13411343 else nil
13421344 let hw = {
13431345 let hx = if ((this == be))
13441346 then 0
13451347 else fr
13461348 if (ga)
13471349 then $Tuple2(-((ch + hx)), 0)
13481350 else $Tuple2(0, -((ch + hx)))
13491351 }
13501352 let eL = hw._1
13511353 let eM = hw._2
13521354 let hy = eK(eL, eM, 0)
13531355 let gP = hy._1
13541356 let eB = hy._2
13551357 let ha = eP(eJ, eB)
13561358 if ((ha == ha))
13571359 then $Tuple2(((((ev ++ gR) ++ hv) ++ hn) ++ gP), ch)
13581360 else throw("Strict value is not equal to itself.")
13591361 }
13601362 else throw("Strict value is not equal to itself.")
13611363 }
13621364 else throw("Strict value is not equal to itself.")
13631365 }
13641366 else throw("Strict value is not equal to itself.")
13651367 }
13661368 else throw("Strict value is not equal to itself.")
13671369 }
13681370
13691371
13701372
13711373 @Callable(fd)
13721374 func getOneTknREADONLY (fY,fG) = {
13731375 let hz = fX(bp(fY), fG, by, unit, unit)
13741376 let ht = hz._1
13751377 let ev = hz._2
13761378 let fr = hz._3
13771379 let hj = hz._4
13781380 let ga = hz._5
13791381 $Tuple2(nil, $Tuple3(ht, fr, hj))
13801382 }
13811383
13821384
13831385
13841386 @Callable(fd)
13851387 func unstakeAndGetOneTkn (hA,hr,he) = {
13861388 let hg = {
13871389 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13881390 if ($isInstanceOf(bg, "Boolean"))
13891391 then bg
13901392 else throw(($getType(bg) + " couldn't be cast to Boolean"))
13911393 }
13921394 let fg = if (!(bj(fd.caller)))
13931395 then if (if (bk())
13941396 then true
13951397 else (bx == n))
13961398 then true
13971399 else hg
13981400 else false
13991401 let fZ = [if (if (!(fg))
14001402 then true
14011403 else gt(fd))
14021404 then true
14031405 else ba("get operation is blocked by admin"), if ((size(fd.payments) == 0))
14041406 then true
14051407 else ba("no payments are expected")]
14061408 if ((fZ == fZ))
14071409 then {
14081410 let fY = bp(hr)
14091411 let ab = fd.caller
14101412 let ac = fd.transactionId
14111413 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
14121414 if ((eJ == eJ))
14131415 then {
14141416 let hB = invoke(bE, "unstake", [toBase58String(by), hA], nil)
14151417 if ((hB == hB))
14161418 then {
14171419 let hC = fX(fY, hA, by, ab, ac)
14181420 if ((hC == hC))
14191421 then {
14201422 let ga = hC._5
14211423 let hj = hC._4
14221424 let fr = hC._3
14231425 let ev = hC._2
14241426 let ht = hC._1
14251427 let ch = if (if ((he > 0))
14261428 then (he > ht)
14271429 else false)
14281430 then ba(makeString(["amount to receive is less than ", toString(he)], ""))
14291431 else ht
14301432 let hu = invoke(bd, "burn", [hA], [AttachedPayment(by, hA)])
14311433 if ((hu == hu))
14321434 then {
14331435 let gR = cR(hr, (ch + max([0, fr])))
14341436 let hv = [ScriptTransfer(fd.caller, ch, fY)]
14351437 let hn = if ((fr > 0))
14361438 then [ScriptTransfer(be, fr, fY)]
14371439 else nil
14381440 let hD = {
14391441 let hx = if ((this == be))
14401442 then 0
14411443 else fr
14421444 if (ga)
14431445 then $Tuple2(-((ch + hx)), 0)
14441446 else $Tuple2(0, -((ch + hx)))
14451447 }
14461448 let eL = hD._1
14471449 let eM = hD._2
14481450 let hE = eK(eL, eM, 0)
14491451 let gP = hE._1
14501452 let eB = hE._2
14511453 let ha = eP(eJ, eB)
14521454 if ((ha == ha))
14531455 then $Tuple2(((((ev ++ gR) ++ hv) ++ hn) ++ gP), ch)
14541456 else throw("Strict value is not equal to itself.")
14551457 }
14561458 else throw("Strict value is not equal to itself.")
14571459 }
14581460 else throw("Strict value is not equal to itself.")
14591461 }
14601462 else throw("Strict value is not equal to itself.")
14611463 }
14621464 else throw("Strict value is not equal to itself.")
14631465 }
14641466 else throw("Strict value is not equal to itself.")
14651467 }
14661468
14671469
14681470
14691471 @Callable(fd)
14701472 func get () = {
14711473 let eg = fc(fd)
14721474 let dM = eg._1
14731475 let dN = eg._2
14741476 let ff = eg._3
14751477 let dv = eg._4
14761478 let dO = eg._5
14771479 let gR = cW(dM, dN)
14781480 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
14791481 if ((eJ == eJ))
14801482 then {
14811483 let hF = invoke(bd, "burn", [ff], [AttachedPayment(dv, ff)])
14821484 if ((hF == hF))
14831485 then {
14841486 let hG = eK(-(dM), -(dN), 0)
14851487 let gP = hG._1
14861488 let eB = hG._2
14871489 let ha = eP(eJ, eB)
14881490 if ((ha == ha))
14891491 then ((gR ++ dO) ++ gP)
14901492 else throw("Strict value is not equal to itself.")
14911493 }
14921494 else throw("Strict value is not equal to itself.")
14931495 }
14941496 else throw("Strict value is not equal to itself.")
14951497 }
14961498
14971499
14981500
14991501 @Callable(fd)
15001502 func getNoLess (hH,hI) = {
15011503 let eg = fc(fd)
15021504 let dM = eg._1
15031505 let dN = eg._2
15041506 let ff = eg._3
15051507 let dv = eg._4
15061508 let dO = eg._5
15071509 if ((hH > dM))
15081510 then throw(((("noLessThenAmtAsset failed: " + toString(dM)) + " < ") + toString(hH)))
15091511 else if ((hI > dN))
15101512 then throw(((("noLessThenPriceAsset failed: " + toString(dN)) + " < ") + toString(hI)))
15111513 else {
15121514 let gR = cW(dM, dN)
15131515 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
15141516 if ((eJ == eJ))
15151517 then {
15161518 let hF = invoke(bd, "burn", [ff], [AttachedPayment(dv, ff)])
15171519 if ((hF == hF))
15181520 then {
15191521 let hJ = eK(-(dM), -(dN), 0)
15201522 let gP = hJ._1
15211523 let eB = hJ._2
15221524 let ha = eP(eJ, eB)
15231525 if ((ha == ha))
15241526 then ((gR ++ dO) ++ gP)
15251527 else throw("Strict value is not equal to itself.")
15261528 }
15271529 else throw("Strict value is not equal to itself.")
15281530 }
15291531 else throw("Strict value is not equal to itself.")
15301532 }
15311533 }
15321534
15331535
15341536
15351537 @Callable(fd)
15361538 func unstakeAndGet (ch) = {
15371539 let hK = if ((size(fd.payments) != 0))
15381540 then throw("No payments are expected")
15391541 else true
15401542 if ((hK == hK))
15411543 then {
15421544 let dk = bm()
15431545 let dx = fromBase58String(dk[q])
15441546 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
15451547 if ((eJ == eJ))
15461548 then {
15471549 let hB = invoke(bE, "unstake", [toBase58String(dx), ch], nil)
15481550 if ((hB == hB))
15491551 then {
15501552 let eg = dt(toBase58String(fd.transactionId), toBase58String(dx), ch, fd.caller)
15511553 let dM = eg._1
15521554 let dN = eg._2
15531555 let dA = parseIntValue(eg._9)
15541556 let dO = eg._10
15551557 let gR = cW(dM, dN)
15561558 let fg = if (!(bj(fd.caller)))
15571559 then if (bk())
15581560 then true
15591561 else (bx == n)
15601562 else false
15611563 let hL = if (fg)
15621564 then throw(("Get operation is blocked by admin. Status = " + toString(dA)))
15631565 else true
15641566 if ((hL == hL))
15651567 then {
15661568 let hF = invoke(bd, "burn", [ch], [AttachedPayment(dx, ch)])
15671569 if ((hF == hF))
15681570 then {
15691571 let hM = eK(-(dM), -(dN), 0)
15701572 let gP = hM._1
15711573 let eB = hM._2
15721574 let ha = eP(eJ, eB)
15731575 if ((ha == ha))
15741576 then ((gR ++ dO) ++ gP)
15751577 else throw("Strict value is not equal to itself.")
15761578 }
15771579 else throw("Strict value is not equal to itself.")
15781580 }
15791581 else throw("Strict value is not equal to itself.")
15801582 }
15811583 else throw("Strict value is not equal to itself.")
15821584 }
15831585 else throw("Strict value is not equal to itself.")
15841586 }
15851587 else throw("Strict value is not equal to itself.")
15861588 }
15871589
15881590
15891591
15901592 @Callable(fd)
15911593 func unstakeAndGetNoLess (hA,hN,hI) = {
15921594 let fg = if (!(bj(fd.caller)))
15931595 then if (bk())
15941596 then true
15951597 else (bx == n)
15961598 else false
15971599 let fZ = [if (!(fg))
15981600 then true
15991601 else throw("get operation is blocked by admin"), if ((size(fd.payments) == 0))
16001602 then true
16011603 else throw("no payments are expected")]
16021604 if ((fZ == fZ))
16031605 then {
16041606 let eJ = eC(toBigInt(0), toBigInt(0), toBigInt(0))
16051607 if ((eJ == eJ))
16061608 then {
16071609 let hB = invoke(bE, "unstake", [toBase58String(by), hA], nil)
16081610 if ((hB == hB))
16091611 then {
16101612 let eg = dt(toBase58String(fd.transactionId), toBase58String(by), hA, fd.caller)
16111613 let dM = eg._1
16121614 let dN = eg._2
16131615 let dO = eg._10
16141616 let gR = cW(dM, dN)
16151617 let hO = [if ((dM >= hN))
16161618 then true
16171619 else throw(makeString(["amount asset amount to receive is less than ", toString(hN)], "")), if ((dN >= hI))
16181620 then true
16191621 else throw(makeString(["price asset amount to receive is less than ", toString(hI)], ""))]
16201622 if ((hO == hO))
16211623 then {
16221624 let hF = invoke(bd, "burn", [hA], [AttachedPayment(by, hA)])
16231625 if ((hF == hF))
16241626 then {
16251627 let hP = eK(-(dM), -(dN), 0)
16261628 let gP = hP._1
16271629 let eB = hP._2
16281630 let ha = eP(eJ, eB)
16291631 if ((ha == ha))
16301632 then ((gR ++ dO) ++ gP)
16311633 else throw("Strict value is not equal to itself.")
16321634 }
16331635 else throw("Strict value is not equal to itself.")
16341636 }
16351637 else throw("Strict value is not equal to itself.")
16361638 }
16371639 else throw("Strict value is not equal to itself.")
16381640 }
16391641 else throw("Strict value is not equal to itself.")
16401642 }
16411643 else throw("Strict value is not equal to itself.")
16421644 }
16431645
16441646
16451647
16461648 @Callable(fd)
16471649 func activate (hQ,hR) = if ((toString(fd.caller) != toString(bd)))
16481650 then throw("permissions denied")
16491651 else $Tuple2([StringEntry(ae(), hQ), StringEntry(af(), hR)], "success")
16501652
16511653
16521654
16531655 @Callable(fd)
16541656 func refreshKLp () = {
16551657 let hS = valueOrElse(getInteger(ak), 0)
16561658 let hT = if (((height - hS) >= an))
16571659 then unit
16581660 else ba(makeString([toString(an), " blocks have not passed since the previous call"], ""))
16591661 if ((hT == hT))
16601662 then {
16611663 let eW = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
16621664 let hU = eK(0, 0, 0)
16631665 let hV = hU._1
16641666 let eB = hU._2
16651667 let eN = if ((eW != eB))
16661668 then hV
16671669 else ba("nothing to refresh")
16681670 $Tuple2(eN, toString(eB))
16691671 }
16701672 else throw("Strict value is not equal to itself.")
16711673 }
16721674
16731675
16741676
16751677 @Callable(fd)
16761678 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bm())
16771679
16781680
16791681
16801682 @Callable(fd)
16811683 func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bV(ap))
16821684
16831685
16841686
16851687 @Callable(fd)
16861688 func calcPricesWrapperREADONLY (de,df,dj) = {
16871689 let ds = di(de, df, dj)
16881690 $Tuple2(nil, [toString(ds[0]), toString(ds[1]), toString(ds[2])])
16891691 }
16901692
16911693
16921694
16931695 @Callable(fd)
16941696 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
16951697
16961698
16971699
16981700 @Callable(fd)
16991701 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
17001702
17011703
17021704
17031705 @Callable(fd)
17041706 func calcPriceBigIntWrapperREADONLY (bZ,ca) = $Tuple2(nil, toString(bY(parseBigIntValue(bZ), parseBigIntValue(ca))))
17051707
17061708
17071709
17081710 @Callable(fd)
17091711 func estimatePutOperationWrapperREADONLY (du,dQ,dR,dS,dT,dU,ab,dV,dW) = $Tuple2(nil, dP(du, dQ, dR, dS, dT, dU, ab, dV, dW))
17101712
17111713
17121714
17131715 @Callable(fd)
17141716 func estimateGetOperationWrapperREADONLY (du,dv,dw,ab) = {
17151717 let eg = dt(du, dv, dw, addressFromStringValue(ab))
17161718 $Tuple2(nil, $Tuple10(eg._1, eg._2, eg._3, eg._4, eg._5, eg._6, eg._7, toString(eg._8), eg._9, eg._10))
17171719 }
17181720
17191721
17201722
17211723 @Callable(fd)
17221724 func statsREADONLY () = {
17231725 let dk = bm()
17241726 let dx = fromBase58String(dk[q])
17251727 let hW = dk[r]
17261728 let hX = dk[s]
17271729 let dZ = dk[v]
17281730 let ea = dk[w]
17291731 let dl = parseIntValue(dk[t])
17301732 let dm = parseIntValue(dk[u])
17311733 let hY = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
17321734 let hZ = bV(hW)
17331735 let ia = bV(hX)
17341736 let ib = if ((hY == 0))
17351737 then [e, e, e]
17361738 else di(hZ, ia, hY)
17371739 let dH = 0
17381740 let ic = H(ib[1], b)
17391741 let id = H(ib[2], b)
17401742 let ie = value(getInteger(bd, aD(toString(this))))
17411743 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hZ), toString(ia), toString(hY), toString(dH), toString(ic), toString(id), toString(ie)], j))
17421744 }
17431745
17441746
17451747
17461748 @Callable(fd)
17471749 func evaluatePutByAmountAssetREADONLY (dR) = {
17481750 let dk = bm()
17491751 let dx = fromBase58String(dk[q])
17501752 let dX = dk[r]
17511753 let dy = fromBase58String(dX)
17521754 let dY = dk[s]
17531755 let dz = fromBase58String(dY)
17541756 let dl = parseIntValue(dk[t])
17551757 let dm = parseIntValue(dk[u])
17561758 let dA = dk[p]
17571759 let hY = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
17581760 let hZ = bV(dX)
17591761 let ia = bV(dY)
17601762 let dg = D(hZ, dl)
17611763 let dh = D(ia, dm)
17621764 let dG = if ((hY == 0))
17631765 then e
17641766 else bY(dh, dg)
17651767 let ed = D(dR, dl)
17661768 let ee = fraction(ed, dG, d)
17671769 let dT = H(ee, dm)
17681770 let fk = dP("", 500000, dR, dy, dT, dz, "", true, false)
17691771 let eo = fk._1
17701772 let if = fk._3
17711773 let dC = fk._4
17721774 let dE = fk._5
17731775 let dB = fk._6
17741776 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(eo), toString(H(dG, b)), toString(dC), toString(dE), toString(dB), dA, toString(dR), toString(dT)], j))
17751777 }
17761778
17771779
17781780
17791781 @Callable(fd)
17801782 func evaluatePutByPriceAssetREADONLY (dT) = {
17811783 let dk = bm()
17821784 let dx = fromBase58String(dk[q])
17831785 let dX = dk[r]
17841786 let dy = fromBase58String(dX)
17851787 let dY = dk[s]
17861788 let dz = fromBase58String(dY)
17871789 let dl = parseIntValue(dk[t])
17881790 let dm = parseIntValue(dk[u])
17891791 let dA = dk[p]
17901792 let hY = valueOrErrorMessage(assetInfo(dx), (("Asset " + toBase58String(dx)) + " doesn't exist")).quantity
17911793 let ig = bV(dX)
17921794 let ih = bV(dY)
17931795 let ii = D(ig, dl)
17941796 let ij = D(ih, dm)
17951797 let dG = if ((hY == 0))
17961798 then e
17971799 else bY(ij, ii)
17981800 let ee = D(dT, dm)
17991801 let ed = fraction(ee, d, dG)
18001802 let dR = H(ed, dl)
18011803 let fk = dP("", 500000, dR, dy, dT, dz, "", true, false)
18021804 let eo = fk._1
18031805 let if = fk._3
18041806 let dC = fk._4
18051807 let dE = fk._5
18061808 let dB = fk._6
18071809 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(eo), toString(H(dG, b)), toString(dC), toString(dE), toString(dB), dA, toString(dR), toString(dT)], j))
18081810 }
18091811
18101812
18111813
18121814 @Callable(fd)
18131815 func evaluateGetREADONLY (ik,il) = {
18141816 let eg = dt("", ik, il, this)
18151817 let dM = eg._1
18161818 let dN = eg._2
18171819 let dC = eg._5
18181820 let dE = eg._6
18191821 let dB = eg._7
18201822 let dH = eg._8
18211823 let dA = parseIntValue(eg._9)
18221824 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dM), toString(dN), toString(dC), toString(dE), toString(dB), toString(dH), toString(dA)], j))
18231825 }
18241826
18251827
18261828 @Verifier(im)
18271829 func in () = {
18281830 let io = {
18291831 let aQ = gr()
18301832 if ($isInstanceOf(aQ, "ByteVector"))
18311833 then {
18321834 let gu = aQ
18331835 gu
18341836 }
18351837 else if ($isInstanceOf(aQ, "Unit"))
18361838 then im.senderPublicKey
18371839 else throw("Match error")
18381840 }
18391841 let aQ = im
18401842 if ($isInstanceOf(aQ, "Order"))
18411843 then {
18421844 let eS = aQ
18431845 let ip = bl()
18441846 let iq = if (eO())
18451847 then $Tuple2(true, "")
18461848 else eR(eS)
18471849 let aK = iq._1
18481850 let aL = iq._2
18491851 let aM = sigVerify(eS.bodyBytes, eS.proofs[0], eS.senderPublicKey)
18501852 let aN = sigVerify(eS.bodyBytes, eS.proofs[1], ip)
18511853 if (if (if (aK)
18521854 then aM
18531855 else false)
18541856 then aN
18551857 else false)
18561858 then true
18571859 else aJ(aK, aL, aM, aN)
18581860 }
18591861 else if ($isInstanceOf(aQ, "SetScriptTransaction"))
18601862 then {
18611863 let aV = aQ
18621864 if (sigVerify(im.bodyBytes, im.proofs[0], io))
18631865 then true
18641866 else {
18651867 let ir = blake2b256(value(aV.script))
18661868 let is = fromBase64String(value(getString(bd, aF())))
18671869 let it = scriptHash(this)
18681870 if ((is == ir))
18691871 then (it != ir)
18701872 else false
18711873 }
18721874 }
18731875 else sigVerify(im.bodyBytes, im.proofs[0], io)
18741876 }
18751877

github/deemru/w8io/3ef1775 
216.79 ms